@dsh-workbench/core 1.1.4 → 1.1.5

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.
Files changed (32) hide show
  1. package/client.js +945 -341
  2. package/dist/client/client.body.js +945 -341
  3. package/dist/client/index.js +807 -203
  4. package/dist/host/index.js +540 -108
  5. package/dist/types/app/layouts/approval-detail.d.ts +6 -3
  6. package/dist/types/app/layouts/market/add-module-registry-prefs.d.ts +11 -0
  7. package/dist/types/app/layouts/market/market-check.d.ts +3 -1
  8. package/dist/types/app/layouts/rightbar/AskAgentButton.d.ts +6 -0
  9. package/dist/types/app/layouts/rightbar/FailureCard.d.ts +8 -0
  10. package/dist/types/app/layouts/rightbar/MarketView.d.ts +2 -1
  11. package/dist/types/app/layouts/rightbar/SharedSection.d.ts +5 -2
  12. package/dist/types/app/layouts/rightbar/failure-card-text.d.ts +14 -0
  13. package/dist/types/app/layouts/rightbar/market-act.d.ts +2 -5
  14. package/dist/types/app/layouts/rightbar/market-change.d.ts +1 -0
  15. package/dist/types/app/layouts/rightbar/market-hint.d.ts +2 -0
  16. package/dist/types/app/layouts/rightbar/market-install.d.ts +11 -0
  17. package/dist/types/app/layouts/rightbar/market-row-types.d.ts +7 -1
  18. package/dist/types/app/layouts/rightbar/market-rows.d.ts +12 -1
  19. package/dist/types/app/layouts/rightbar/market-section.d.ts +5 -3
  20. package/dist/types/app/layouts/rightbar/market-transient-state.d.ts +3 -8
  21. package/dist/types/app/layouts/rightbar/market-view-text.d.ts +2 -0
  22. package/dist/types/kernel/client/registry.d.ts +1 -0
  23. package/dist/types/kernel/contract/bundle-install.d.ts +1 -1
  24. package/dist/types/modules/panels/model/market-install-error.d.ts +3 -0
  25. package/dist/types/modules/panels/model/market-install-error.test.d.ts +1 -0
  26. package/dist/types/modules/panels/model/market-registry.d.ts +2 -1
  27. package/dist/types/modules/panels/model/market-remove.d.ts +13 -0
  28. package/dist/types/modules/panels/model/market-remove.test.d.ts +1 -0
  29. package/dist/types/modules/panels/model/market-route.d.ts +1 -1
  30. package/dist/types/modules/panels/model/market.d.ts +1 -0
  31. package/package.json +3 -3
  32. package/skills/workbench-module-diy/TOOLS.md +11 -2
@@ -723,6 +723,10 @@ var STORAGE_KEY_RIGHTBAR = "dsh-workbench.rightbar.expanded";
723
723
  var STORAGE_KEY_RIGHTBAR_COLUMN = "dsh-workbench.rightbar.column";
724
724
  /** 记住右栏宽度(像素数字的字符串)的 localStorage 键。 */
725
725
  var STORAGE_KEY_RIGHTBAR_WIDTH = "dsh-workbench.rightbar.width";
726
+ /** 记住「添加模块」浮层选过的安装源的 localStorage 键。 */
727
+ var STORAGE_KEY_MARKET_REGISTRY = "dsh-workbench.market.registry";
728
+ /** 记住「添加模块」浮层上次填过的自定义源地址的 localStorage 键。 */
729
+ var STORAGE_KEY_MARKET_REGISTRY_CUSTOM = "dsh-workbench.market.registry.custom";
726
730
  /** dsh i18n 的命名空间:词表都注册在它下面,`ctx.locale.register` / `bind` 按它取。 */
727
731
  var LOCALE_NS = "workbench";
728
732
  //#endregion
@@ -781,13 +785,13 @@ async function apiPost(route, body) {
781
785
  //#endregion
782
786
  //#region ../shared/dist/lib/react.js
783
787
  var react$1 = require("react");
784
- var h$67 = react$1.createElement;
785
- var Fragment$23 = react$1.Fragment;
788
+ var h$69 = react$1.createElement;
789
+ var Fragment$22 = react$1.Fragment;
786
790
  var Component = react$1.Component;
787
791
  react$1.createContext;
788
792
  react$1.useContext;
789
- var useState$40 = react$1.useState;
790
- var useEffect$30 = react$1.useEffect;
793
+ var useState$42 = react$1.useState;
794
+ var useEffect$31 = react$1.useEffect;
791
795
  react$1.useLayoutEffect;
792
796
  var useMemo$10 = react$1.useMemo;
793
797
  react$1.useCallback;
@@ -802,7 +806,7 @@ react$1.useSyncExternalStore;
802
806
  * @returns 一个 div。
803
807
  */
804
808
  function ActivityBlock({ head, children }) {
805
- return h$67("div", { className: "wb-activityBlock" }, head === void 0 ? null : h$67("div", { className: "wb-activityBlockHead" }, head), children);
809
+ return h$69("div", { className: "wb-activityBlock" }, head === void 0 ? null : h$69("div", { className: "wb-activityBlockHead" }, head), children);
806
810
  }
807
811
  /**
808
812
  * 一条活动:状态点 + 正文 + 时间,行尾可挂动作;时间一律用它,别自己拼。
@@ -813,7 +817,7 @@ function ActivityBlock({ head, children }) {
813
817
  * @returns 一行。
814
818
  */
815
819
  function ActivityLine({ dot, text, at, actions }) {
816
- return h$67("div", { className: "wb-activityLine" }, dot, h$67("span", { className: "wb-activityLineText" }, text), at === void 0 ? null : h$67("span", { className: "wb-activityLineAt" }, at), actions === void 0 ? null : h$67("span", { className: "wb-activityLineActions" }, actions));
820
+ return h$69("div", { className: "wb-activityLine" }, dot, h$69("span", { className: "wb-activityLineText" }, text), at === void 0 ? null : h$69("span", { className: "wb-activityLineAt" }, at), actions === void 0 ? null : h$69("span", { className: "wb-activityLineActions" }, actions));
817
821
  }
818
822
  /**
819
823
  * 活动行尾那颗动作:给 `href` 就是外链,否则是图标钮并带上 tooltip。
@@ -827,7 +831,7 @@ function ActivityLine({ dot, text, at, actions }) {
827
831
  */
828
832
  function ActivityAction({ label, hint, icon, href, onClick, failed }) {
829
833
  const tip = hint ?? label;
830
- if (href !== void 0) return h$67("a", {
834
+ if (href !== void 0) return h$69("a", {
831
835
  className: "wb-iconButton",
832
836
  href,
833
837
  target: "_blank",
@@ -835,13 +839,13 @@ function ActivityAction({ label, hint, icon, href, onClick, failed }) {
835
839
  title: tip,
836
840
  "aria-label": label
837
841
  }, icon);
838
- return h$67(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
842
+ return h$69(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
839
843
  side: "bottom",
840
844
  align: "end",
841
845
  gap: 6,
842
846
  portal: true,
843
847
  label: tip
844
- }, h$67(_deepseek_ai_dsh_client_ui_primitives.Button, {
848
+ }, h$69(_deepseek_ai_dsh_client_ui_primitives.Button, {
845
849
  type: "button",
846
850
  variant: "ghost",
847
851
  size: "sm",
@@ -863,10 +867,10 @@ function ActivityAction({ label, hint, icon, href, onClick, failed }) {
863
867
  */
864
868
  function Note({ tone = "muted", as, role, children }) {
865
869
  const className = tone === "problem" ? "wb-problem" : "wb-note";
866
- return as === "span" ? h$67("span", {
870
+ return as === "span" ? h$69("span", {
867
871
  className,
868
872
  role
869
- }, children) : h$67("p", {
873
+ }, children) : h$69("p", {
870
874
  className,
871
875
  role
872
876
  }, children);
@@ -910,10 +914,10 @@ var CardBoundary = class extends Component {
910
914
  render() {
911
915
  const { reason } = this.state;
912
916
  if (reason === null) return this.props.children;
913
- return h$67(Note, { tone: "problem" }, h$67("span", null, this.props.t("panels.cardBroken", {
917
+ return h$69(Note, { tone: "problem" }, h$69("span", null, this.props.t("panels.cardBroken", {
914
918
  unit: this.props.unit,
915
919
  reason
916
- })), " ", h$67(_deepseek_ai_dsh_client_ui_primitives.Button, {
920
+ })), " ", h$69(_deepseek_ai_dsh_client_ui_primitives.Button, {
917
921
  type: "button",
918
922
  variant: "outline",
919
923
  size: "sm",
@@ -963,19 +967,19 @@ function ApprovalDetail(props) {
963
967
  const owner = (props.units ?? []).find((face) => face.approval?.tools.includes(input.tool) === true);
964
968
  if (owner?.approval !== void 0) {
965
969
  const Render = owner.approval.render;
966
- return h$67(CardBoundary, {
970
+ return h$69(CardBoundary, {
967
971
  unit: owner.unit,
968
972
  resetKey: props.callId ?? "",
969
973
  t
970
- }, h$67(Render, {
974
+ }, h$69(Render, {
971
975
  input,
972
976
  t
973
977
  }));
974
978
  }
975
979
  const shell = props.renderShell?.(input, t);
976
- if (shell !== void 0 && shell !== null) return h$67(Fragment$23, null, shell);
980
+ if (shell !== void 0 && shell !== null) return h$69(Fragment$22, null, shell);
977
981
  if (command === "") return null;
978
- return h$67(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
982
+ return h$69(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
979
983
  code: command,
980
984
  className: "wb-approvalCommand",
981
985
  copyLabel: t("blocker.copy"),
@@ -993,10 +997,10 @@ function ApprovalDetail(props) {
993
997
  * @returns 一个 div。
994
998
  */
995
999
  function ApprovalPlan({ rows, hint, warn, children }) {
996
- return h$67("div", { className: "wb-approvalPlan" }, hint === void 0 ? null : h$67("p", { className: "wb-approvalHint" }, hint), h$67("dl", { className: "wb-approvalRows" }, rows.map((row, index) => h$67("div", {
1000
+ return h$69("div", { className: "wb-approvalPlan" }, hint === void 0 ? null : h$69("p", { className: "wb-approvalHint" }, hint), h$69("dl", { className: "wb-approvalRows" }, rows.map((row, index) => h$69("div", {
997
1001
  className: "wb-approvalRow",
998
1002
  key: String(index)
999
- }, h$67("dt", { className: "wb-approvalLabel" }, row.label), h$67("dd", { className: "wb-approvalValue" }, row.value)))), children, warn === void 0 ? null : h$67("p", { className: "wb-approvalWarn" }, warn));
1003
+ }, h$69("dt", { className: "wb-approvalLabel" }, row.label), h$69("dd", { className: "wb-approvalValue" }, row.value)))), children, warn === void 0 ? null : h$69("p", { className: "wb-approvalWarn" }, warn));
1000
1004
  }
1001
1005
  //#endregion
1002
1006
  //#region ../shared/dist/components/CardHead.js
@@ -1013,47 +1017,47 @@ function ApprovalPlan({ rows, hint, warn, children }) {
1013
1017
  function CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onToggleGear, platformHref, platform, platformTitle }) {
1014
1018
  const refreshLabel = refreshing ? t("rightbar.refreshing") : t("rightbar.refresh");
1015
1019
  const platformLabel = platformTitle ?? platform ?? t("rightbar.openPlatform");
1016
- return h$67("header", { className: "wb-cardHead" }, h$67("h2", { className: "wb-cardTitle" }, title), meta === void 0 ? null : h$67("span", { className: "wb-cardMeta" }, meta), platformHref === void 0 ? null : h$67(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1020
+ return h$69("header", { className: "wb-cardHead" }, h$69("h2", { className: "wb-cardTitle" }, title), meta === void 0 ? null : h$69("span", { className: "wb-cardMeta" }, meta), platformHref === void 0 ? null : h$69(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1017
1021
  side: "bottom",
1018
1022
  align: "end",
1019
1023
  gap: 6,
1020
1024
  portal: true,
1021
1025
  label: platformLabel
1022
- }, h$67("a", {
1026
+ }, h$69("a", {
1023
1027
  className: "wb-iconButton wb-cardOpen",
1024
1028
  href: platformHref,
1025
1029
  target: "_blank",
1026
1030
  rel: "noreferrer noopener",
1027
1031
  "aria-label": platform ?? platformLabel
1028
- }, h$67(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, { size: 14 }))), h$67(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1032
+ }, h$69(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, { size: 14 }))), h$69(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1029
1033
  side: "bottom",
1030
1034
  align: "end",
1031
1035
  gap: 6,
1032
1036
  portal: true,
1033
1037
  label: refreshLabel
1034
- }, h$67(_deepseek_ai_dsh_client_ui_primitives.Button, {
1038
+ }, h$69(_deepseek_ai_dsh_client_ui_primitives.Button, {
1035
1039
  type: "button",
1036
1040
  size: "sm",
1037
1041
  variant: "ghost",
1038
1042
  className: `wb-cardRefresh${refreshing ? " wb-spinning" : ""}`,
1039
1043
  "aria-label": refreshLabel,
1040
1044
  disabled: refreshing,
1041
- icon: h$67(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, { size: 14 }),
1045
+ icon: h$69(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, { size: 14 }),
1042
1046
  onClick: onRefresh
1043
- })), gear === void 0 || onToggleGear === void 0 ? null : h$67(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1047
+ })), gear === void 0 || onToggleGear === void 0 ? null : h$69(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1044
1048
  side: "bottom",
1045
1049
  align: "end",
1046
1050
  gap: 6,
1047
1051
  portal: true,
1048
1052
  label: gear
1049
- }, h$67(_deepseek_ai_dsh_client_ui_primitives.Button, {
1053
+ }, h$69(_deepseek_ai_dsh_client_ui_primitives.Button, {
1050
1054
  type: "button",
1051
1055
  size: "sm",
1052
1056
  variant: "ghost",
1053
1057
  className: `wb-cardGear${gearOpen === true ? " wb-iconButtonActive" : ""}`,
1054
1058
  "aria-label": gear,
1055
1059
  "aria-expanded": gearOpen === true,
1056
- icon: h$67(_deepseek_ai_dsh_client_ui_primitives.IconSettingsOutlineRegular, { size: 15 }),
1060
+ icon: h$69(_deepseek_ai_dsh_client_ui_primitives.IconSettingsOutlineRegular, { size: 15 }),
1057
1061
  onClick: onToggleGear
1058
1062
  })));
1059
1063
  }
@@ -1070,13 +1074,13 @@ function CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onTog
1070
1074
  * @returns 一个 `<section>`。
1071
1075
  */
1072
1076
  function Card({ t, title, refreshing, onRefresh, meta, head, children }) {
1073
- return h$67("section", { className: "wb-card" }, head === void 0 ? h$67(CardHead, {
1077
+ return h$69("section", { className: "wb-card" }, head === void 0 ? h$69(CardHead, {
1074
1078
  t,
1075
1079
  title,
1076
1080
  refreshing,
1077
1081
  onRefresh,
1078
1082
  meta
1079
- }) : head, h$67("div", { className: "wb-cardBody" }, children));
1083
+ }) : head, h$69("div", { className: "wb-cardBody" }, children));
1080
1084
  }
1081
1085
  var CardAnchor_module_default = { anchor: "_anchor_yq4s2_1" };
1082
1086
  //#endregion
@@ -1096,7 +1100,7 @@ function cardIdOf(unit) {
1096
1100
  * @returns 带 id 的占位 div。
1097
1101
  */
1098
1102
  function CardAnchor({ unit, children }) {
1099
- return h$67("div", {
1103
+ return h$69("div", {
1100
1104
  id: cardIdOf(unit),
1101
1105
  className: CardAnchor_module_default.anchor
1102
1106
  }, children);
@@ -1110,13 +1114,13 @@ function CardAnchor({ unit, children }) {
1110
1114
  * @returns 一枚 `StateDot state="ongoing"`,自身不带文字。
1111
1115
  */
1112
1116
  function Spinner({ size = 14, label }) {
1113
- return h$67("span", {
1117
+ return h$69("span", {
1114
1118
  className: "wb-spinner",
1115
1119
  ...label === void 0 ? { "aria-hidden": true } : {
1116
1120
  role: "status",
1117
1121
  "aria-label": label
1118
1122
  }
1119
- }, h$67(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
1123
+ }, h$69(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
1120
1124
  state: "ongoing",
1121
1125
  size
1122
1126
  }));
@@ -1124,24 +1128,24 @@ function Spinner({ size = 14, label }) {
1124
1128
  //#endregion
1125
1129
  //#region ../shared/dist/components/ChoiceGroup.js
1126
1130
  function ChoiceMenu(input) {
1127
- const body = input.loading ? h$67("span", {
1131
+ const body = input.loading ? h$69("span", {
1128
1132
  className: "wb-choiceLoading",
1129
1133
  role: "status"
1130
- }, h$67(Spinner, { size: 14 }), h$67("span", { className: "wb-choiceLoadingText" }, input.loadingText ?? "…")) : input.options.length === 0 ? input.emptyText === void 0 ? null : h$67("span", { className: "wb-choiceEmpty" }, input.emptyText) : input.options.map((option) => {
1134
+ }, h$69(Spinner, { size: 14 }), h$69("span", { className: "wb-choiceLoadingText" }, input.loadingText ?? "…")) : input.options.length === 0 ? input.emptyText === void 0 ? null : h$69("span", { className: "wb-choiceEmpty" }, input.emptyText) : input.options.map((option) => {
1131
1135
  const row = input.rowOf(option.value);
1132
- return h$67(Fragment$23, { key: option.value }, h$67("label", { className: `wb-choiceOption${row.checked ? " wb-choiceOptionOn" : ""}` }, h$67("input", {
1136
+ return h$69(Fragment$22, { key: option.value }, h$69("label", { className: `wb-choiceOption${row.checked ? " wb-choiceOptionOn" : ""}` }, h$69("input", {
1133
1137
  className: input.multi ? "wb-checkbox" : "wb-radio",
1134
1138
  type: input.multi ? "checkbox" : "radio",
1135
1139
  name: input.name,
1136
1140
  checked: row.checked,
1137
1141
  disabled: input.disabled,
1138
1142
  onChange: row.onSelect
1139
- }), input.multi ? h$67("span", {
1143
+ }), input.multi ? h$69("span", {
1140
1144
  className: "wb-checkboxBox",
1141
1145
  "aria-hidden": "true"
1142
- }, row.checked ? h$67(_deepseek_ai_dsh_client_ui_primitives.IconCheckOutlineRegular, { size: 12 }) : null) : null, h$67("span", { className: "wb-choiceLabel" }, h$67("span", { className: "wb-choiceLabelText" }, option.label), option.description === void 0 ? null : h$67("span", { className: "wb-choiceDescription" }, option.description))));
1146
+ }, row.checked ? h$69(_deepseek_ai_dsh_client_ui_primitives.IconCheckOutlineRegular, { size: 12 }) : null) : null, h$69("span", { className: "wb-choiceLabel" }, h$69("span", { className: "wb-choiceLabelText" }, option.label), option.description === void 0 ? null : h$69("span", { className: "wb-choiceDescription" }, option.description))));
1143
1147
  });
1144
- return h$67("div", {
1148
+ return h$69("div", {
1145
1149
  className: "wb-choiceMenu",
1146
1150
  "data-variant": input.variant,
1147
1151
  role: input.multi ? "group" : "radiogroup",
@@ -1175,7 +1179,7 @@ function ChoiceGroup(props) {
1175
1179
  if (props.multi === true) {
1176
1180
  const values = props.values;
1177
1181
  const onChange = props.onChange;
1178
- return h$67(ChoiceMenu, {
1182
+ return h$69(ChoiceMenu, {
1179
1183
  label: common.label,
1180
1184
  name: common.name,
1181
1185
  options: common.options,
@@ -1195,7 +1199,7 @@ function ChoiceGroup(props) {
1195
1199
  }
1196
1200
  const value = props.value;
1197
1201
  const onChange = props.onChange;
1198
- return h$67(ChoiceMenu, {
1202
+ return h$69(ChoiceMenu, {
1199
1203
  label: common.label,
1200
1204
  name: common.name,
1201
1205
  options: common.options,
@@ -1248,17 +1252,17 @@ function variantOf(kind) {
1248
1252
  function FormActions({ actions }) {
1249
1253
  if (actions.length === 0) return null;
1250
1254
  reportExtraPrimaries(actions);
1251
- return h$67("div", { className: "wb-formActions" }, ordered(actions).map((action) => {
1255
+ return h$69("div", { className: "wb-formActions" }, ordered(actions).map((action) => {
1252
1256
  const kind = kindOf(action);
1253
1257
  const busy = action.busy === true;
1254
- return h$67(_deepseek_ai_dsh_client_ui_primitives.Button, {
1258
+ return h$69(_deepseek_ai_dsh_client_ui_primitives.Button, {
1255
1259
  key: action.key,
1256
1260
  type: "button",
1257
1261
  size: "sm",
1258
1262
  variant: variantOf(kind),
1259
1263
  className: kind === "danger" ? "wb-formActionDanger" : void 0,
1260
1264
  disabled: busy || action.disabled === true,
1261
- icon: busy ? h$67(Spinner, { size: 12 }) : void 0,
1265
+ icon: busy ? h$69(Spinner, { size: 12 }) : void 0,
1262
1266
  onClick: action.onClick
1263
1267
  }, action.label);
1264
1268
  }));
@@ -1271,7 +1275,7 @@ function FormActions({ actions }) {
1271
1275
  * @returns 竖排的 div。
1272
1276
  */
1273
1277
  function Rows({ children }) {
1274
- return h$67("div", { className: "wb-rows" }, children);
1278
+ return h$69("div", { className: "wb-rows" }, children);
1275
1279
  }
1276
1280
  /**
1277
1281
  * 一行键值:左边名字、右边值;要成对说明一项数据就用它,别自己写两栏。
@@ -1280,7 +1284,7 @@ function Rows({ children }) {
1280
1284
  * @returns 一行两格。
1281
1285
  */
1282
1286
  function Row({ label, value }) {
1283
- return h$67("div", { className: "wb-row" }, h$67("span", { className: "wb-rowKey" }, label), h$67("span", { className: "wb-rowValue" }, value));
1287
+ return h$69("div", { className: "wb-row" }, h$69("span", { className: "wb-rowKey" }, label), h$69("span", { className: "wb-rowValue" }, value));
1284
1288
  }
1285
1289
  //#endregion
1286
1290
  //#region ../shared/dist/components/ConfirmBar.js
@@ -1297,19 +1301,19 @@ function Row({ label, value }) {
1297
1301
  * @returns 一个 `role="group"` 的条;`actions` 空数组时最后那一块不渲染。
1298
1302
  */
1299
1303
  function ConfirmBar({ title, hint, rows, actions, problem, busy, label }) {
1300
- return h$67("div", {
1304
+ return h$69("div", {
1301
1305
  className: "wb-confirmBar",
1302
1306
  role: "group",
1303
1307
  "aria-label": label ?? (typeof title === "string" ? title : void 0),
1304
1308
  "aria-busy": busy
1305
- }, h$67("p", { className: "wb-confirmBarTitle" }, title), hint === void 0 ? null : h$67("p", { className: "wb-confirmBarHint" }, hint), rows === void 0 || rows.length === 0 ? null : h$67(Rows, null, rows.map((row) => h$67(Row, {
1309
+ }, h$69("p", { className: "wb-confirmBarTitle" }, title), hint === void 0 ? null : h$69("p", { className: "wb-confirmBarHint" }, hint), rows === void 0 || rows.length === 0 ? null : h$69(Rows, null, rows.map((row) => h$69(Row, {
1306
1310
  key: row.key,
1307
1311
  label: row.label,
1308
1312
  value: row.value
1309
- }))), problem === void 0 ? null : h$67(Note, {
1313
+ }))), problem === void 0 ? null : h$69(Note, {
1310
1314
  tone: "problem",
1311
1315
  role: "alert"
1312
- }, problem), h$67(FormActions, { actions }));
1316
+ }, problem), h$69(FormActions, { actions }));
1313
1317
  }
1314
1318
  //#endregion
1315
1319
  //#region ../shared/dist/components/Field.js
@@ -1321,7 +1325,7 @@ function ConfirmBar({ title, hint, rows, actions, problem, busy, label }) {
1321
1325
  * @returns 一个 `<label>`,点标签会聚焦里面的控件。
1322
1326
  */
1323
1327
  function Field({ label, hint, children }) {
1324
- return h$67("label", { className: "wb-field" }, h$67("span", { className: "wb-fieldLabel" }, label), children, hint === void 0 ? null : h$67("span", { className: "wb-fieldHint" }, hint));
1328
+ return h$69("label", { className: "wb-field" }, h$69("span", { className: "wb-fieldLabel" }, label), children, hint === void 0 ? null : h$69("span", { className: "wb-fieldHint" }, hint));
1325
1329
  }
1326
1330
  //#endregion
1327
1331
  //#region ../shared/dist/components/FormRows.js
@@ -1331,7 +1335,7 @@ function Field({ label, hint, children }) {
1331
1335
  * @returns 竖排的 div。
1332
1336
  */
1333
1337
  function FormRows({ children }) {
1334
- return h$67("div", { className: "wb-formRows" }, children);
1338
+ return h$69("div", { className: "wb-formRows" }, children);
1335
1339
  }
1336
1340
  /**
1337
1341
  * 表单一行:左边标签、右边控件,提示与错误占控件下面那一格。
@@ -1344,14 +1348,14 @@ function FormRows({ children }) {
1344
1348
  * @returns 一个 `<div>`:里面的 `<label>` 只包标签文字,不包控件、提示与整行的空白。
1345
1349
  */
1346
1350
  function FormRow({ label, htmlFor, hint, problem, layout = "inline", children }) {
1347
- return h$67("div", {
1351
+ return h$69("div", {
1348
1352
  className: "wb-formRow",
1349
1353
  "data-layout": layout,
1350
1354
  "data-wb-problem": problem === void 0 ? void 0 : ""
1351
- }, h$67("label", {
1355
+ }, h$69("label", {
1352
1356
  className: "wb-formLabel",
1353
1357
  htmlFor
1354
- }, label), h$67("span", { className: "wb-formControl" }, children), problem === void 0 ? hint === void 0 ? null : h$67("span", { className: "wb-formHint" }, hint) : h$67("span", { className: "wb-formProblem" }, problem));
1358
+ }, label), h$69("span", { className: "wb-formControl" }, children), problem === void 0 ? hint === void 0 ? null : h$69("span", { className: "wb-formHint" }, hint) : h$69("span", { className: "wb-formProblem" }, problem));
1355
1359
  }
1356
1360
  //#endregion
1357
1361
  //#region ../shared/dist/components/FormNodes.js
@@ -1498,7 +1502,7 @@ function formActionsOf(args) {
1498
1502
  * @returns `FormRow` 组成的数组;没有可画的格子时给空数组。
1499
1503
  */
1500
1504
  function formRowsOf(args) {
1501
- return args.fields.map((field) => h$67(FormRow, {
1505
+ return args.fields.map((field) => h$69(FormRow, {
1502
1506
  key: field.key,
1503
1507
  label: field.label,
1504
1508
  htmlFor: controlIdOf(field.key),
@@ -1574,13 +1578,13 @@ function revealFirstProblem(root) {
1574
1578
  */
1575
1579
  function Form(props) {
1576
1580
  const { fields, onSubmit, submit, cancel, extra, busy = false, disabled = false, problem } = props;
1577
- const [done, setDone] = useState$40(false);
1578
- const [reveal, setReveal] = useState$40(0);
1581
+ const [done, setDone] = useState$42(false);
1582
+ const [reveal, setReveal] = useState$42(0);
1579
1583
  const rootRef = useRef$24(null);
1580
1584
  const shown = visibleFieldsOf(fields);
1581
1585
  const problems = formProblemsOf(shown, done);
1582
1586
  reportDuplicateKeys(shown);
1583
- useEffect$30(() => {
1587
+ useEffect$31(() => {
1584
1588
  if (reveal === 0) return;
1585
1589
  const root = rootRef.current;
1586
1590
  if (root !== null) revealFirstProblem(root);
@@ -1595,7 +1599,7 @@ function Form(props) {
1595
1599
  }
1596
1600
  onSubmit(outcome.values);
1597
1601
  };
1598
- return h$67("form", {
1602
+ return h$69("form", {
1599
1603
  className: "wb-form",
1600
1604
  ref: rootRef,
1601
1605
  noValidate: true,
@@ -1603,15 +1607,15 @@ function Form(props) {
1603
1607
  event.preventDefault();
1604
1608
  submitForm();
1605
1609
  }
1606
- }, h$67(FormRows, null, formRowsOf({
1610
+ }, h$69(FormRows, null, formRowsOf({
1607
1611
  fields: shown,
1608
1612
  problems,
1609
1613
  showProblem: done,
1610
1614
  busy
1611
- })), problem === void 0 ? null : h$67(Note, {
1615
+ })), problem === void 0 ? null : h$69(Note, {
1612
1616
  tone: "problem",
1613
1617
  role: "alert"
1614
- }, problem), h$67(FormActions, { actions: formActionsOf({
1618
+ }, problem), h$69(FormActions, { actions: formActionsOf({
1615
1619
  extra,
1616
1620
  cancel,
1617
1621
  submit,
@@ -1632,7 +1636,7 @@ function Form(props) {
1632
1636
  * @returns 一个 `<a>`。
1633
1637
  */
1634
1638
  function Link({ href, children, title, external = true, className }) {
1635
- return h$67("a", {
1639
+ return h$69("a", {
1636
1640
  className: className === void 0 ? "wb-link" : `wb-link ${className}`,
1637
1641
  href,
1638
1642
  ...title === void 0 ? {} : { title },
@@ -1640,7 +1644,7 @@ function Link({ href, children, title, external = true, className }) {
1640
1644
  target: "_blank",
1641
1645
  rel: "noopener noreferrer"
1642
1646
  } : {}
1643
- }, children, external ? h$67(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, { size: 12 }) : null);
1647
+ }, children, external ? h$69(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, { size: 12 }) : null);
1644
1648
  }
1645
1649
  //#endregion
1646
1650
  //#region ../shared/dist/contract/long-task.js
@@ -1732,7 +1736,7 @@ var LONG_TASK_STOP_ARM_MS = 3e3;
1732
1736
  //#endregion
1733
1737
  //#region ../shared/dist/components/LongTaskRow.js
1734
1738
  function RowLink({ href, text }) {
1735
- return h$67(Link, {
1739
+ return h$69(Link, {
1736
1740
  href,
1737
1741
  className: "wb-longTaskLink"
1738
1742
  }, text);
@@ -1752,9 +1756,9 @@ function RowLink({ href, text }) {
1752
1756
  * @returns 一行长任务。
1753
1757
  */
1754
1758
  function LongTaskRow(props) {
1755
- const [stepsOpen, setStepsOpen] = useState$40(false);
1756
- const [rawOpen, setRawOpen] = useState$40(false);
1757
- const [armed, setArmed] = useState$40(false);
1759
+ const [stepsOpen, setStepsOpen] = useState$42(false);
1760
+ const [rawOpen, setRawOpen] = useState$42(false);
1761
+ const [armed, setArmed] = useState$42(false);
1758
1762
  const failed = props.status === "failed";
1759
1763
  const problem = props.problem ?? "";
1760
1764
  const raw = (props.raw ?? "").trim();
@@ -1762,7 +1766,7 @@ function LongTaskRow(props) {
1762
1766
  const stop = props.stop;
1763
1767
  const busy = stop?.busy === true;
1764
1768
  const stopWhy = stop?.failed ?? "";
1765
- useEffect$30(() => {
1769
+ useEffect$31(() => {
1766
1770
  if (!armed) return void 0;
1767
1771
  const timer = setTimeout(() => setArmed(false), LONG_TASK_STOP_ARM_MS);
1768
1772
  return () => clearTimeout(timer);
@@ -1781,14 +1785,14 @@ function LongTaskRow(props) {
1781
1785
  setArmed(false);
1782
1786
  stop.onStop();
1783
1787
  };
1784
- return h$67("div", { className: "wb-longTask" }, h$67("p", { className: "wb-longTaskHead" }, h$67(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
1788
+ return h$69("div", { className: "wb-longTask" }, h$69("p", { className: "wb-longTaskHead" }, h$69(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
1785
1789
  state: longTaskDot(props.status),
1786
1790
  size: 10
1787
- }), h$67("span", { className: "wb-longTaskHeadline" }, props.headline), (props.links ?? []).map((link) => h$67(RowLink, {
1791
+ }), h$69("span", { className: "wb-longTaskHeadline" }, props.headline), (props.links ?? []).map((link) => h$69(RowLink, {
1788
1792
  href: link.href,
1789
1793
  key: `${link.text}@${link.href}`,
1790
1794
  text: link.text
1791
- })), stop === void 0 ? null : h$67("button", {
1795
+ })), stop === void 0 ? null : h$69("button", {
1792
1796
  type: "button",
1793
1797
  className: `wb-longTaskStop${armed ? " wb-longTaskStopArmed" : ""}`,
1794
1798
  "data-stop-state": longTaskStopStage({
@@ -1799,31 +1803,31 @@ function LongTaskRow(props) {
1799
1803
  disabled: busy,
1800
1804
  onClick: onStopPress,
1801
1805
  onBlur: () => setArmed(false)
1802
- }, h$67(_deepseek_ai_dsh_client_ui_primitives.IconStopFillRegular, { size: 12 }), armed ? h$67("span", { className: "wb-longTaskStopLabel" }, stop.askLabel) : null)), problem === "" ? null : h$67("p", { className: "wb-longTaskProblem" }, problem), stopWhy === "" ? null : h$67("p", { className: "wb-longTaskStopWhy" }, stopWhy), !failed ? null : h$67(Fragment$23, null, steps.length === 0 || props.stepsTitle === void 0 ? null : h$67(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
1806
+ }, h$69(_deepseek_ai_dsh_client_ui_primitives.IconStopFillRegular, { size: 12 }), armed ? h$69("span", { className: "wb-longTaskStopLabel" }, stop.askLabel) : null)), problem === "" ? null : h$69("p", { className: "wb-longTaskProblem" }, problem), stopWhy === "" ? null : h$69("p", { className: "wb-longTaskStopWhy" }, stopWhy), !failed ? null : h$69(Fragment$22, null, steps.length === 0 || props.stepsTitle === void 0 ? null : h$69(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
1803
1807
  className: "wb-longTaskDump",
1804
- icon: h$67(_deepseek_ai_dsh_client_ui_primitives.IconFlatListOutlineRegular, { size: 14 }),
1808
+ icon: h$69(_deepseek_ai_dsh_client_ui_primitives.IconFlatListOutlineRegular, { size: 14 }),
1805
1809
  title: props.stepsTitle,
1806
1810
  open: stepsOpen,
1807
1811
  expandable: true,
1808
1812
  expandOnRowClick: true,
1809
1813
  previewChevron: true,
1810
1814
  onToggle: () => setStepsOpen(!stepsOpen)
1811
- }, h$67(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
1815
+ }, h$69(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
1812
1816
  code: steps.join("\n"),
1813
1817
  className: "wb-longTaskDump",
1814
1818
  showHeader: props.copyLabel !== void 0,
1815
1819
  copyLabel: props.copyLabel ?? "",
1816
1820
  copiedLabel: props.copiedLabel ?? ""
1817
- })), raw === "" || props.rawTitle === void 0 ? null : h$67(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
1821
+ })), raw === "" || props.rawTitle === void 0 ? null : h$69(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
1818
1822
  className: "wb-longTaskDump",
1819
- icon: h$67(_deepseek_ai_dsh_client_ui_primitives.IconCodeOutlineRegular, { size: 14 }),
1823
+ icon: h$69(_deepseek_ai_dsh_client_ui_primitives.IconCodeOutlineRegular, { size: 14 }),
1820
1824
  title: props.rawTitle,
1821
1825
  open: rawOpen,
1822
1826
  expandable: true,
1823
1827
  expandOnRowClick: true,
1824
1828
  previewChevron: true,
1825
1829
  onToggle: () => setRawOpen(!rawOpen)
1826
- }, h$67(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
1830
+ }, h$69(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
1827
1831
  code: raw,
1828
1832
  className: "wb-longTaskDump",
1829
1833
  showHeader: props.copyLabel !== void 0,
@@ -1839,13 +1843,13 @@ function LongTaskRow(props) {
1839
1843
  * @returns 一叠占位条。
1840
1844
  */
1841
1845
  function SkeletonRows({ rows = 4 }) {
1842
- return h$67("div", {
1846
+ return h$69("div", {
1843
1847
  className: "wb-skeleton",
1844
1848
  "aria-hidden": "true"
1845
- }, Array.from({ length: rows }, (_, index) => h$67("span", {
1849
+ }, Array.from({ length: rows }, (_, index) => h$69("span", {
1846
1850
  key: index,
1847
1851
  className: "wb-skeletonRow"
1848
- }, h$67("span", { className: "wb-skeletonBar wb-skeletonBarTitle" }), h$67("span", { className: "wb-skeletonBar wb-skeletonBarMeta" }))));
1852
+ }, h$69("span", { className: "wb-skeletonBar wb-skeletonBarTitle" }), h$69("span", { className: "wb-skeletonBar wb-skeletonBarMeta" }))));
1849
1853
  }
1850
1854
  /**
1851
1855
  * 居中一屏:要他先选一个 / 正在读 / 读不到时用它占住卡片版面。
@@ -1858,13 +1862,13 @@ function SkeletonRows({ rows = 4 }) {
1858
1862
  * @returns 一个 `role="status"` 的居中块。
1859
1863
  */
1860
1864
  function CenteredState({ icon, title, hint, detail, action, compact = false }) {
1861
- return h$67("div", {
1865
+ return h$69("div", {
1862
1866
  className: compact ? "wb-centered wb-centeredCompact" : "wb-centered",
1863
1867
  role: "status"
1864
- }, icon === null ? null : h$67("span", {
1868
+ }, icon === null ? null : h$69("span", {
1865
1869
  className: "wb-centeredHero",
1866
1870
  "aria-hidden": "true"
1867
- }, icon), h$67("div", { className: "wb-centeredTitle" }, title), hint === void 0 ? null : h$67("div", { className: "wb-centeredHint" }, hint), detail === void 0 ? null : h$67("div", { className: "wb-centeredDetail" }, detail), action === void 0 ? null : h$67("div", { className: "wb-centeredAction" }, action));
1871
+ }, icon), h$69("div", { className: "wb-centeredTitle" }, title), hint === void 0 ? null : h$69("div", { className: "wb-centeredHint" }, hint), detail === void 0 ? null : h$69("div", { className: "wb-centeredDetail" }, detail), action === void 0 ? null : h$69("div", { className: "wb-centeredAction" }, action));
1868
1872
  }
1869
1873
  /**
1870
1874
  * 就绪但空:它只是 `CenteredState` 的简写,标题就是那句空态文案。
@@ -1874,7 +1878,7 @@ function CenteredState({ icon, title, hint, detail, action, compact = false }) {
1874
1878
  * @returns 一个居中块。
1875
1879
  */
1876
1880
  function EmptyState({ text, icon = null, compact = false }) {
1877
- return h$67(CenteredState, {
1881
+ return h$69(CenteredState, {
1878
1882
  icon,
1879
1883
  title: text,
1880
1884
  compact
@@ -1892,7 +1896,7 @@ function EmptyState({ text, icon = null, compact = false }) {
1892
1896
  * @returns 一组按钮。
1893
1897
  */
1894
1898
  function SaveBar({ busy, disabled, labels, onCancel, onSave }) {
1895
- return h$67(FormActions, { actions: [{
1899
+ return h$69(FormActions, { actions: [{
1896
1900
  key: "cancel",
1897
1901
  label: labels.cancel,
1898
1902
  kind: "default",
@@ -1925,7 +1929,7 @@ function SaveBar({ busy, disabled, labels, onCancel, onSave }) {
1925
1929
  * @returns 一颗 `<button>`。
1926
1930
  */
1927
1931
  function selectTriggerNode(args) {
1928
- return h$67("button", {
1932
+ return h$69("button", {
1929
1933
  type: "button",
1930
1934
  id: args.id,
1931
1935
  className: args.className,
@@ -1936,7 +1940,7 @@ function selectTriggerNode(args) {
1936
1940
  "aria-label": args.ariaLabel,
1937
1941
  title: args.title,
1938
1942
  onClick: args.onOpen
1939
- }, args.iconOnly ? h$67("span", { className: "wb-selectIcon" }, args.icon) : h$67(Fragment$23, null, args.icon === void 0 ? null : h$67("span", { className: "wb-selectIcon" }, args.icon), h$67("span", { className: "wb-selectValue" }, args.value), h$67("span", { className: "wb-selectChevron" }, h$67(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, { size: 14 }))));
1943
+ }, args.iconOnly ? h$69("span", { className: "wb-selectIcon" }, args.icon) : h$69(Fragment$22, null, args.icon === void 0 ? null : h$69("span", { className: "wb-selectIcon" }, args.icon), h$69("span", { className: "wb-selectValue" }, args.value), h$69("span", { className: "wb-selectChevron" }, h$69(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, { size: 14 }))));
1940
1944
  }
1941
1945
  /**
1942
1946
  * 名单还没读到时的触发器:禁用 + `aria-busy` 的按钮,`SelectField` 在 `loading` 那档画它。
@@ -1948,7 +1952,7 @@ function selectTriggerNode(args) {
1948
1952
  * @returns 一颗禁用且 `aria-busy` 的按钮。
1949
1953
  */
1950
1954
  function selectLoadingNode(args) {
1951
- return h$67("button", {
1955
+ return h$69("button", {
1952
1956
  type: "button",
1953
1957
  id: args.id,
1954
1958
  className: `${args.className} wb-selectLoading`,
@@ -1957,7 +1961,7 @@ function selectLoadingNode(args) {
1957
1961
  "aria-invalid": args.invalid || void 0,
1958
1962
  "aria-label": args.ariaLabel,
1959
1963
  title: args.loadingText
1960
- }, h$67("span", { className: "wb-selectValue" }, h$67(_deepseek_ai_dsh_client_ui_primitives.TextShimmer, { active: true }, args.loadingText ?? "…")), h$67("span", { className: "wb-selectChevron" }, h$67(Spinner, { size: 14 })));
1964
+ }, h$69("span", { className: "wb-selectValue" }, h$69(_deepseek_ai_dsh_client_ui_primitives.TextShimmer, { active: true }, args.loadingText ?? "…")), h$69("span", { className: "wb-selectChevron" }, h$69(Spinner, { size: 14 })));
1961
1965
  }
1962
1966
  //#endregion
1963
1967
  //#region ../shared/dist/components/TextField.js
@@ -1967,7 +1971,7 @@ function selectLoadingNode(args) {
1967
1971
  * @returns 输入框元素;`className` 是追加在基础类名之后,而不是替换它。
1968
1972
  */
1969
1973
  function TextField({ invalid = false, className, ...rest }) {
1970
- return h$67("input", {
1974
+ return h$69("input", {
1971
1975
  ...rest,
1972
1976
  className: className === void 0 ? "wb-textField" : `wb-textField ${className}`,
1973
1977
  "aria-invalid": invalid || void 0
@@ -1990,7 +1994,7 @@ function itemOf(option, revealId) {
1990
1994
  ...option.icon === void 0 ? {} : { icon: option.icon },
1991
1995
  ...option.disabled === true ? { disabled: true } : {}
1992
1996
  };
1993
- const revealed = (node) => h$67("span", {
1997
+ const revealed = (node) => h$69("span", {
1994
1998
  className: "wb-selectReveal",
1995
1999
  "data-wb-select-reveal": ""
1996
2000
  }, node);
@@ -2006,20 +2010,20 @@ function revealNode() {
2006
2010
  return found instanceof HTMLElement ? found : null;
2007
2011
  }
2008
2012
  function useRevealOnOpen(open, revealId) {
2009
- useEffect$30(() => {
2013
+ useEffect$31(() => {
2010
2014
  if (!open || revealId === void 0) return;
2011
2015
  revealNode()?.scrollIntoView({ block: "nearest" });
2012
2016
  }, [open, revealId]);
2013
2017
  }
2014
2018
  function selectValueNode(current, renderValue, placeholder) {
2015
- if (current === void 0) return h$67("span", { className: "wb-selectPlaceholder" }, placeholder ?? "—");
2019
+ if (current === void 0) return h$69("span", { className: "wb-selectPlaceholder" }, placeholder ?? "—");
2016
2020
  return renderValue === void 0 ? current.label : renderValue(current);
2017
2021
  }
2018
2022
  function searchNode(args) {
2019
- return h$67("span", {
2023
+ return h$69("span", {
2020
2024
  ref: args.boxRef,
2021
2025
  className: args.className
2022
- }, h$67("span", { className: "wb-selectSearchIcon" }, h$67(_deepseek_ai_dsh_client_ui_primitives.IconSearchOutlineRegular, { size: 14 })), h$67(TextField, {
2026
+ }, h$69("span", { className: "wb-selectSearchIcon" }, h$69(_deepseek_ai_dsh_client_ui_primitives.IconSearchOutlineRegular, { size: 14 })), h$69(TextField, {
2023
2027
  id: args.id,
2024
2028
  name: args.name,
2025
2029
  className: "wb-selectSearchInput",
@@ -2034,7 +2038,7 @@ function searchNode(args) {
2034
2038
  }));
2035
2039
  }
2036
2040
  function menuNode(args) {
2037
- return h$67(_deepseek_ai_dsh_client_ui_primitives.Menu, {
2041
+ return h$69(_deepseek_ai_dsh_client_ui_primitives.Menu, {
2038
2042
  open: args.open,
2039
2043
  portal: true,
2040
2044
  className: "wb-selectAnchor",
@@ -2051,11 +2055,11 @@ function menuNode(args) {
2051
2055
  });
2052
2056
  }
2053
2057
  function framed(label, hint, className, control) {
2054
- const inner = label === void 0 ? hint === void 0 ? control : h$67("span", { className: "wb-select" }, control, h$67("span", { className: "wb-selectHint" }, hint)) : h$67(Field, {
2058
+ const inner = label === void 0 ? hint === void 0 ? control : h$69("span", { className: "wb-select" }, control, h$69("span", { className: "wb-selectHint" }, hint)) : h$69(Field, {
2055
2059
  label,
2056
2060
  hint
2057
2061
  }, control);
2058
- return className === void 0 ? inner : h$67("div", { className }, inner);
2062
+ return className === void 0 ? inner : h$69("div", { className }, inner);
2059
2063
  }
2060
2064
  /** 算候选项用来匹配搜索的文本:有 `searchText` 就用它,否则取字符串标签;标签不是字符串又没给它是空串(这项搜不到)。 */
2061
2065
  function searchTextOf(option) {
@@ -2107,9 +2111,9 @@ function selectEntries(shown, emptyText, revealId) {
2107
2111
  }
2108
2112
  function useSelectState(props) {
2109
2113
  const { options, filter = defaultSelectFilter, emptyText, open: openProp, onOpenChange } = props;
2110
- const [openState, setOpenState] = useState$40(false);
2111
- const [query, setQuery] = useState$40("");
2112
- const [cursor, setCursor] = useState$40(null);
2114
+ const [openState, setOpenState] = useState$42(false);
2115
+ const [query, setQuery] = useState$42("");
2116
+ const [cursor, setCursor] = useState$42(null);
2113
2117
  const boxRef = useRef$24(null);
2114
2118
  const triggerRef = useRef$24(null);
2115
2119
  const wasOpenRef = useRef$24(false);
@@ -2120,11 +2124,11 @@ function useSelectState(props) {
2120
2124
  if (openProp === void 0) setOpenState(next);
2121
2125
  onOpenChange?.(next);
2122
2126
  };
2123
- useEffect$30(() => {
2127
+ useEffect$31(() => {
2124
2128
  if (!open || props.search === false) return;
2125
2129
  boxRef.current?.querySelector("input")?.focus();
2126
2130
  }, [open, props.search]);
2127
- useEffect$30(() => {
2131
+ useEffect$31(() => {
2128
2132
  if (open) {
2129
2133
  wasOpenRef.current = true;
2130
2134
  return;
@@ -2194,7 +2198,7 @@ function SelectField(props) {
2194
2198
  ariaLabel,
2195
2199
  loadingText
2196
2200
  }));
2197
- if (fallback !== void 0 && options.length === 0) return framed(label, hint, className, h$67(TextField, {
2201
+ if (fallback !== void 0 && options.length === 0) return framed(label, hint, className, h$69(TextField, {
2198
2202
  id,
2199
2203
  name,
2200
2204
  className: "wb-selectFallback",
@@ -2277,11 +2281,11 @@ function SelectField(props) {
2277
2281
  * @returns 一个 `role="group"` 的 section。
2278
2282
  */
2279
2283
  function SettingsSection({ label, title, action, children }) {
2280
- return h$67("section", {
2284
+ return h$69("section", {
2281
2285
  className: "wb-settings",
2282
2286
  role: "group",
2283
2287
  "aria-label": label
2284
- }, h$67("header", { className: "wb-settingsHead" }, h$67("span", { className: "wb-settingsTitle" }, title), action), children);
2288
+ }, h$69("header", { className: "wb-settingsHead" }, h$69("span", { className: "wb-settingsTitle" }, title), action), children);
2285
2289
  }
2286
2290
  //#endregion
2287
2291
  //#region ../shared/dist/components/Stack.js
@@ -2291,7 +2295,7 @@ function SettingsSection({ label, title, action, children }) {
2291
2295
  * @returns 竖排的 div。
2292
2296
  */
2293
2297
  function Stack({ children }) {
2294
- return h$67("div", { className: "wb-stack" }, children);
2298
+ return h$69("div", { className: "wb-stack" }, children);
2295
2299
  }
2296
2300
  //#endregion
2297
2301
  //#region ../shared/dist/components/StateBlock.js
@@ -2306,12 +2310,12 @@ function Stack({ children }) {
2306
2310
  * @returns 一个 div。
2307
2311
  */
2308
2312
  function StateBlock({ title, dot, hint, actions, resolving, children }) {
2309
- return h$67("div", { className: "wb-stateBlock" }, title === void 0 && dot === void 0 ? null : h$67("p", { className: "wb-stateBlockTitle" }, dot, title), resolving === void 0 ? null : h$67("p", { className: "wb-stateBlockResolving" }, resolving), hint === void 0 ? null : h$67("p", { className: "wb-stateBlockHint" }, hint), children, actions === void 0 ? null : h$67("div", { className: "wb-stateBlockActions" }, actions));
2313
+ return h$69("div", { className: "wb-stateBlock" }, title === void 0 && dot === void 0 ? null : h$69("p", { className: "wb-stateBlockTitle" }, dot, title), resolving === void 0 ? null : h$69("p", { className: "wb-stateBlockResolving" }, resolving), hint === void 0 ? null : h$69("p", { className: "wb-stateBlockHint" }, hint), children, actions === void 0 ? null : h$69("div", { className: "wb-stateBlockActions" }, actions));
2310
2314
  }
2311
2315
  //#endregion
2312
2316
  //#region ../shared/dist/components/icons.js
2313
2317
  function Shell({ size, strokeWidth = 1, viewBox = "0 0 16 16", children }) {
2314
- return h$67("svg", {
2318
+ return h$69("svg", {
2315
2319
  width: size,
2316
2320
  height: size,
2317
2321
  viewBox,
@@ -2328,10 +2332,10 @@ function Shell({ size, strokeWidth = 1, viewBox = "0 0 16 16", children }) {
2328
2332
  * @returns 一枚 `aria-hidden` 的 svg。
2329
2333
  */
2330
2334
  function IconConversation({ size = 16 }) {
2331
- return h$67(Shell, {
2335
+ return h$69(Shell, {
2332
2336
  size,
2333
2337
  strokeWidth: 1.3
2334
- }, h$67("path", {
2338
+ }, h$69("path", {
2335
2339
  d: "M2.5 7.2c0-2.3 2.1-4.2 4.8-4.2h1.4c2.7 0 4.8 1.9 4.8 4.2s-2.1 4.2-4.8 4.2H7.5l-3.2 2v-2.3c-1.1-.8-1.8-2-1.8-3.9Z",
2336
2340
  stroke: "currentColor",
2337
2341
  strokeLinejoin: "round"
@@ -2346,30 +2350,30 @@ var BRAND_TAIL_TRANSFORM = "translate(14.6263 10.5853) scale(1.95)";
2346
2350
  * @returns 一枚 `aria-hidden` 的 svg。
2347
2351
  */
2348
2352
  function IconBrandMark({ size = 24 }) {
2349
- return h$67(Shell, {
2353
+ return h$69(Shell, {
2350
2354
  size,
2351
2355
  viewBox: "0 0 64 64"
2352
- }, h$67("path", {
2356
+ }, h$69("path", {
2353
2357
  d: BRAND_FRAME,
2354
2358
  fill: "currentColor",
2355
2359
  fillRule: "evenodd"
2356
- }), h$67("rect", {
2360
+ }), h$69("rect", {
2357
2361
  x: 27.5,
2358
2362
  y: 48,
2359
2363
  width: 9,
2360
2364
  height: 4.75,
2361
2365
  fill: "currentColor"
2362
- }), h$67("rect", {
2366
+ }), h$69("rect", {
2363
2367
  x: 19,
2364
2368
  y: 52.75,
2365
2369
  width: 26,
2366
2370
  height: 4.75,
2367
2371
  rx: 2.375,
2368
2372
  fill: "currentColor"
2369
- }), h$67("g", { transform: BRAND_TAIL_TRANSFORM }, h$67("path", {
2373
+ }), h$69("g", { transform: BRAND_TAIL_TRANSFORM }, h$69("path", {
2370
2374
  d: BRAND_TAIL,
2371
2375
  fill: "currentColor"
2372
- }), h$67("circle", {
2376
+ }), h$69("circle", {
2373
2377
  cx: 6.885,
2374
2378
  cy: 13.742,
2375
2379
  r: 1.95,
@@ -2382,30 +2386,30 @@ function IconBrandMark({ size = 24 }) {
2382
2386
  * @returns 一枚 `aria-hidden` 的 svg。
2383
2387
  */
2384
2388
  function IconOpencli({ size = 16 }) {
2385
- return h$67(Shell, {
2389
+ return h$69(Shell, {
2386
2390
  size,
2387
2391
  viewBox: "0 0 64 64"
2388
- }, h$67("defs", null, h$67("linearGradient", {
2392
+ }, h$69("defs", null, h$69("linearGradient", {
2389
2393
  id: "opencli-mark",
2390
2394
  x1: "0%",
2391
2395
  y1: "0%",
2392
2396
  x2: "100%",
2393
2397
  y2: "100%"
2394
- }, h$67("stop", {
2398
+ }, h$69("stop", {
2395
2399
  offset: "0%",
2396
2400
  stopColor: "#00e5a0"
2397
- }), h$67("stop", {
2401
+ }), h$69("stop", {
2398
2402
  offset: "50%",
2399
2403
  stopColor: "#00b4d8"
2400
- }), h$67("stop", {
2404
+ }), h$69("stop", {
2401
2405
  offset: "100%",
2402
2406
  stopColor: "#7b61ff"
2403
- }))), h$67("rect", {
2407
+ }))), h$69("rect", {
2404
2408
  width: 64,
2405
2409
  height: 64,
2406
2410
  rx: 14,
2407
2411
  fill: "#0a0a0f"
2408
- }), h$67("text", {
2412
+ }), h$69("text", {
2409
2413
  x: "50%",
2410
2414
  y: "54%",
2411
2415
  dominantBaseline: "middle",
@@ -2422,10 +2426,10 @@ function IconOpencli({ size = 16 }) {
2422
2426
  * @returns 一枚 `aria-hidden` 的 svg。
2423
2427
  */
2424
2428
  function IconNpm({ size = 16 }) {
2425
- return h$67(Shell, {
2429
+ return h$69(Shell, {
2426
2430
  size,
2427
2431
  viewBox: "0 0 1024 1024"
2428
- }, h$67("path", {
2432
+ }, h$69("path", {
2429
2433
  d: "M64 337.76h896v298.72H512v49.792H312.896v-49.824H64z m49.792 248.928h99.552v-149.376h49.76v149.344h49.792v-199.104H113.792z m248.896-199.136v248.928h99.552v-49.792h99.552v-199.136z m99.552 49.792H512v99.584h-49.792z m149.344-49.792v199.136h99.552v-149.376h49.792v149.344h49.792v-149.344h49.792v149.344h49.792v-199.104z",
2430
2434
  fill: "#CB3837"
2431
2435
  }));
@@ -2436,37 +2440,37 @@ function IconNpm({ size = 16 }) {
2436
2440
  * @returns 一枚 `aria-hidden` 的 svg。
2437
2441
  */
2438
2442
  function IconModuleMark({ size = 16 }) {
2439
- return h$67(Shell, {
2443
+ return h$69(Shell, {
2440
2444
  size,
2441
2445
  viewBox: "0 0 24 24"
2442
- }, h$67("defs", null, h$67("linearGradient", {
2446
+ }, h$69("defs", null, h$69("linearGradient", {
2443
2447
  id: "workbench-module-mark",
2444
2448
  x1: "0%",
2445
2449
  y1: "0%",
2446
2450
  x2: "100%",
2447
2451
  y2: "100%"
2448
- }, h$67("stop", {
2452
+ }, h$69("stop", {
2449
2453
  offset: "0%",
2450
2454
  stopColor: "#3b82f6"
2451
- }), h$67("stop", {
2455
+ }), h$69("stop", {
2452
2456
  offset: "55%",
2453
2457
  stopColor: "#8b5cf6"
2454
- }), h$67("stop", {
2458
+ }), h$69("stop", {
2455
2459
  offset: "100%",
2456
2460
  stopColor: "#14b8a6"
2457
- }))), h$67("rect", {
2461
+ }))), h$69("rect", {
2458
2462
  width: 24,
2459
2463
  height: 24,
2460
2464
  rx: 7,
2461
2465
  fill: "url(#workbench-module-mark)"
2462
- }), h$67("rect", {
2466
+ }), h$69("rect", {
2463
2467
  x: "4.6",
2464
2468
  y: "4.6",
2465
2469
  width: "6.2",
2466
2470
  height: "6.2",
2467
2471
  rx: "1.9",
2468
2472
  fill: "#ffffff"
2469
- }), h$67("rect", {
2473
+ }), h$69("rect", {
2470
2474
  x: "13.2",
2471
2475
  y: "4.6",
2472
2476
  width: "6.2",
@@ -2474,7 +2478,7 @@ function IconModuleMark({ size = 16 }) {
2474
2478
  rx: "1.9",
2475
2479
  fill: "#ffffff",
2476
2480
  fillOpacity: .78
2477
- }), h$67("rect", {
2481
+ }), h$69("rect", {
2478
2482
  x: "4.6",
2479
2483
  y: "13.2",
2480
2484
  width: "6.2",
@@ -2482,7 +2486,7 @@ function IconModuleMark({ size = 16 }) {
2482
2486
  rx: "1.9",
2483
2487
  fill: "#ffffff",
2484
2488
  fillOpacity: .78
2485
- }), h$67("rect", {
2489
+ }), h$69("rect", {
2486
2490
  x: "13.2",
2487
2491
  y: "13.2",
2488
2492
  width: "6.2",
@@ -2497,7 +2501,7 @@ function IconModuleMark({ size = 16 }) {
2497
2501
  * @returns 一枚 `aria-hidden` 的 svg。
2498
2502
  */
2499
2503
  function IconPanelScreen({ size = 16 }) {
2500
- return h$67("svg", {
2504
+ return h$69("svg", {
2501
2505
  width: size,
2502
2506
  height: size,
2503
2507
  viewBox: "0 0 1024 1024",
@@ -2508,7 +2512,7 @@ function IconPanelScreen({ size = 16 }) {
2508
2512
  display: "block",
2509
2513
  overflow: "hidden"
2510
2514
  }
2511
- }, h$67("path", { d: "M939 112c17.673 0 32 14.327 32 32v554.667c0 17.673-14.327 32-32 32l-394.5-0.001v96c0 3.74-0.642 7.331-1.82 10.668H768.4c17.673 0 32 14.326 32 32 0 17.496-14.042 31.712-31.47 31.995l-0.53 0.004H256.6c-17.673 0-32-14.327-32-32 0-17.496 14.042-31.713 31.47-31.995l0.53-0.005h225.721a31.923 31.923 0 0 1-1.817-10.137l-0.004-0.53v-96H86c-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V144c0-17.673 14.327-32 32-32z m-32 64H118v490.666h789V176zM341.9 432c17.496 0 31.713 14.042 31.996 31.47l0.004 0.53v85.333c0 17.673-14.327 32-32 32-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V464c0-17.673 14.327-32 32-32z m170.6-85.333c17.496 0 31.713 14.041 31.996 31.47l0.004 0.53v170.666c0 17.673-14.327 32-32 32-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V378.667c0-17.673 14.327-32 32-32z m170.6-85.334c17.496 0 31.713 14.042 31.996 31.471l0.004 0.53v256c0 17.672-14.327 32-32 32-17.496 0-31.713-14.042-31.996-31.471l-0.004-0.53v-256c0-17.673 14.327-32 32-32z" }));
2515
+ }, h$69("path", { d: "M939 112c17.673 0 32 14.327 32 32v554.667c0 17.673-14.327 32-32 32l-394.5-0.001v96c0 3.74-0.642 7.331-1.82 10.668H768.4c17.673 0 32 14.326 32 32 0 17.496-14.042 31.712-31.47 31.995l-0.53 0.004H256.6c-17.673 0-32-14.327-32-32 0-17.496 14.042-31.713 31.47-31.995l0.53-0.005h225.721a31.923 31.923 0 0 1-1.817-10.137l-0.004-0.53v-96H86c-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V144c0-17.673 14.327-32 32-32z m-32 64H118v490.666h789V176zM341.9 432c17.496 0 31.713 14.042 31.996 31.47l0.004 0.53v85.333c0 17.673-14.327 32-32 32-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V464c0-17.673 14.327-32 32-32z m170.6-85.333c17.496 0 31.713 14.041 31.996 31.47l0.004 0.53v170.666c0 17.673-14.327 32-32 32-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V378.667c0-17.673 14.327-32 32-32z m170.6-85.334c17.496 0 31.713 14.042 31.996 31.471l0.004 0.53v256c0 17.672-14.327 32-32 32-17.496 0-31.713-14.042-31.996-31.471l-0.004-0.53v-256c0-17.673 14.327-32 32-32z" }));
2512
2516
  }
2513
2517
  //#endregion
2514
2518
  //#region ../shared/dist/config/storage.js
@@ -2527,6 +2531,12 @@ function writeText(key, value) {
2527
2531
  else window.localStorage.setItem(key, value);
2528
2532
  } catch {}
2529
2533
  }
2534
+ //#endregion
2535
+ //#region ../shared/dist/contract/approval.js
2536
+ /**
2537
+ * agent 自己那句"这次想干什么"的参数名:插件命令族必填,审批屏把它画在详情座里,不进标题。
2538
+ */
2539
+ var APPROVAL_NOTE_ARG = "approval_note";
2530
2540
  /**
2531
2541
  * 判一个名字是不是范围查法,不是问这条事实存不存在。
2532
2542
  * @param name 事实名或范围名。
@@ -2750,9 +2760,13 @@ function supplyNeedsOf(manifest) {
2750
2760
  }
2751
2761
  //#endregion
2752
2762
  //#region ../shared/dist/contract/needs.js
2763
+ var REGISTRY_PATTERN = /^(?:https?|file):\/\//;
2753
2764
  function text(value) {
2754
2765
  return typeof value === "string" ? value.trim() : "";
2755
2766
  }
2767
+ function isRecord(value) {
2768
+ return typeof value === "object" && value !== null && !Array.isArray(value);
2769
+ }
2756
2770
  /**
2757
2771
  * 一条 need 的稳定标识:作者写 `id` 就用它,否则 `kind:name`。
2758
2772
  * @param need 一条 need。
@@ -2761,11 +2775,40 @@ function text(value) {
2761
2775
  function needIdOf(need) {
2762
2776
  return need.id === void 0 || need.id.trim() === "" ? `${need.kind}:${need.name}` : need.id;
2763
2777
  }
2778
+ function binInstallProblemsOf(raw, at) {
2779
+ if (raw === void 0) return [];
2780
+ if (!isRecord(raw)) return [`${at}.install 要是对象`];
2781
+ const errors = [];
2782
+ for (const key of Object.keys(raw)) if (![
2783
+ "kind",
2784
+ "line",
2785
+ "platforms",
2786
+ "package",
2787
+ "registryEnv",
2788
+ "registryDefault"
2789
+ ].includes(key)) errors.push(`${at}.install 有不认识的字段 ${key}`);
2790
+ const kind = text(raw["kind"]);
2791
+ if (kind !== "command" && kind !== "npm") errors.push(`${at}.install.kind 只认 command(一条命令)或 npm(一个包,装进隔离运行时)`);
2792
+ if (kind === "command" && text(raw["line"]) === "") errors.push(`${at}.install.line 没写 —— 要一条能直接粘进终端的命令`);
2793
+ if (kind === "npm" && text(raw["package"]) === "") errors.push(`${at}.install.package 没写 —— 这个命令由哪个 npm 包提供`);
2794
+ if (raw["registryDefault"] !== void 0 && !REGISTRY_PATTERN.test(text(raw["registryDefault"]))) errors.push(`${at}.install.registryDefault 要是 http(s):// 或 file:// 的源地址`);
2795
+ if (raw["platforms"] !== void 0) {
2796
+ if (!Array.isArray(raw["platforms"]) || raw["platforms"].length === 0) errors.push(`${at}.install.platforms 要是非空数组`);
2797
+ else if (raw["platforms"].some((one) => ![
2798
+ "darwin",
2799
+ "linux",
2800
+ "win32"
2801
+ ].includes(text(one)))) errors.push(`${at}.install.platforms 只认 darwin / linux / win32`);
2802
+ }
2803
+ return errors;
2804
+ }
2764
2805
  function perKindProblemsOf(kind, raw, at) {
2765
2806
  const errors = [];
2766
2807
  if (kind === "bin" || kind === "lib" || kind === "env") {
2767
2808
  if (text(raw["name"]) === "") errors.push(`${at}.name 没写`);
2768
2809
  }
2810
+ if (kind === "bin") errors.push(...binInstallProblemsOf(raw["install"], at));
2811
+ if (raw["docs"] !== void 0 && text(raw["docs"]) === "") errors.push(`${at}.docs 是空串`);
2769
2812
  if (kind === "extension") {
2770
2813
  if (text(raw["runtime"]) === "") errors.push(`${at}.runtime 没写 —— 扩展属于哪个运行时(如 opencli)`);
2771
2814
  if (text(raw["name"]) === "") errors.push(`${at}.name 没写`);
@@ -3099,6 +3142,40 @@ var en = {
3099
3142
  "panels.market.confirmNo": "Cancel",
3100
3143
  "panels.market.noMarketSource": "The index has no newer version of this module (refresh the index and retry)",
3101
3144
  "panels.market.failed": "Failed: {reason}",
3145
+ "panels.market.askAgent": "Ask the agent",
3146
+ "panels.market.askAgentCopied": "Copied",
3147
+ "panels.market.askAgentText": "This workbench module cannot be used: \"{name}\" (unit {unit}) — {reason}. Work out what is missing and how to add it, then confirm it works.",
3148
+ "panels.market.failure.permission": "Didn't install: no write access",
3149
+ "panels.market.failure.diskFull": "Didn't install: the disk is full",
3150
+ "panels.market.failure.sandbox": "Didn't install: the system blocked it",
3151
+ "panels.market.failure.unknown": "Didn't install: cause not recognised",
3152
+ "panels.market.failure.factOwner": "{path} belongs to {owner}, and this account ({me}) cannot write to it. Hand it back to yourself (asks for your login password).",
3153
+ "panels.market.failure.factMode": "{path} is mode {mode}, so this account cannot write to it.",
3154
+ "panels.market.failure.factSpace": "The disk holding {path} is full.",
3155
+ "panels.market.failure.factStuck": "This command ran in a restricted environment and cannot write to {path}.",
3156
+ "panels.market.failure.nowhere": "(the directory was not identified)",
3157
+ "panels.market.failure.copyFix": "Copy the fix command",
3158
+ "panels.market.failure.copied": "Copied",
3159
+ "panels.market.failure.copiedHint": "Paste it in a terminal, run it, then click Check again.",
3160
+ "panels.market.failure.askAgent": "Copy for the agent",
3161
+ "panels.market.failure.askAgentText": "Installing this module could not write: `{command}` exited {code} at {path}. Work out whether the sandbox or file permissions blocked it, then install again somewhere writable.",
3162
+ "panels.market.failure.askAgentHint": "Paste it into the chat and let the agent carry on.",
3163
+ "panels.market.failure.recheck": "Check again",
3164
+ "panels.market.failure.showOutput": "Show install output",
3165
+ "panels.market.failure.hideOutput": "Hide install output",
3166
+ "panels.market.failure.term.commandLine": "command on line {line}",
3167
+ "panels.market.failure.term.signal": "killed by {signal}",
3168
+ "panels.market.failure.term.exitCode": "exit code {exitCode}",
3169
+ "panels.market.failure.term.noExitCode": "no exit code",
3170
+ "panels.market.failure.term.running": "running",
3171
+ "panels.market.failure.term.failed": "failed",
3172
+ "panels.market.failure.term.done": "done",
3173
+ "panels.market.failure.term.copy": "Copy",
3174
+ "panels.market.failure.term.copied": "Copied",
3175
+ "panels.market.failure.term.noOutput": "No output",
3176
+ "panels.market.failure.term.collapse": "Collapse",
3177
+ "panels.market.failure.term.expandAria": "Show the remaining {hidden} lines",
3178
+ "panels.market.failure.term.expand": "Show {hidden} lines",
3102
3179
  "panels.market.needEnv": "Set {env} in the terminal that started the workbench first",
3103
3180
  "panels.market.needCommands": "Missing commands: {commands}",
3104
3181
  "panels.market.needBinary": "Install the {command} command first",
@@ -3138,6 +3215,9 @@ var en = {
3138
3215
  "panels.market.checkingNow": "Checking…",
3139
3216
  "panels.market.checkFailed": "The last check failed. Check your connection and retry.",
3140
3217
  "panels.market.checkedAt": "Last checked: {time}",
3218
+ "panels.market.latestPartial": "Could not check {n} modules",
3219
+ "panels.market.latestNoRegistry": "No source configured — the latest version was not checked",
3220
+ "panels.market.latestProbeFailed": "Could not reach the source — try again later",
3141
3221
  "panels.market.justNow": "just now",
3142
3222
  "panels.market.minutesAgo": "{n} min ago",
3143
3223
  "panels.market.hoursAgo": "{n} h ago",
@@ -3602,6 +3682,9 @@ var en = {
3602
3682
  "approval.record.noSwitch": "it will not switch you back (the leftbar footer shows the state)",
3603
3683
  "approval.longTask.what": "Task to stop",
3604
3684
  "approval.longTask.signal": "stopping only sends an interrupt signal — wrapping up the run is up to the module",
3685
+ "approval.plugin.name": "Plugin",
3686
+ "approval.plugin.command": "Command",
3687
+ "approval.plugin.note": "Agent says",
3605
3688
  "approval.publish.module": "Module",
3606
3689
  "approval.publish.target": "Target",
3607
3690
  "approval.publish.version": "Version",
@@ -3799,6 +3882,40 @@ var dictionaries = {
3799
3882
  "panels.market.confirmNo": "取消",
3800
3883
  "panels.market.noMarketSource": "索引里没有这个模块的新版本(刷新一次索引再试)",
3801
3884
  "panels.market.failed": "没成功:{reason}",
3885
+ "panels.market.askAgent": "问 agent",
3886
+ "panels.market.askAgentCopied": "已复制",
3887
+ "panels.market.askAgentText": "工作台里「{name}」(单元 {unit})用不了:{reason}。帮我查清缺什么、怎么补,补完确认真能用。",
3888
+ "panels.market.failure.permission": "没装上:没有写入权限",
3889
+ "panels.market.failure.diskFull": "没装上:磁盘满了",
3890
+ "panels.market.failure.sandbox": "没装上:被系统拦住了",
3891
+ "panels.market.failure.unknown": "没装上:原因没认出来",
3892
+ "panels.market.failure.factOwner": "{path} 属于 {owner},当前账号({me})写不进去。把它还给自己就行(会要开机密码)。",
3893
+ "panels.market.failure.factMode": "{path} 的权限是 {mode},当前账号没有写权限。",
3894
+ "panels.market.failure.factSpace": "{path} 所在的磁盘满了。",
3895
+ "panels.market.failure.factStuck": "这条命令跑在受限环境里,写不进 {path}。",
3896
+ "panels.market.failure.nowhere": "(没认出是哪个目录)",
3897
+ "panels.market.failure.copyFix": "复制修复命令",
3898
+ "panels.market.failure.copied": "已复制",
3899
+ "panels.market.failure.copiedHint": "粘到终端跑一次,回来点「再检测」。",
3900
+ "panels.market.failure.askAgent": "复制给 agent",
3901
+ "panels.market.failure.askAgentText": "装这个模块时写不进去:`{command}` 退出码 {code},卡在 {path}。帮我看看是被沙箱拦的还是权限问题,换一条能写进去的路再装。",
3902
+ "panels.market.failure.askAgentHint": "粘到对话里,让 agent 接着弄。",
3903
+ "panels.market.failure.recheck": "再检测",
3904
+ "panels.market.failure.showOutput": "查看安装输出",
3905
+ "panels.market.failure.hideOutput": "收起安装输出",
3906
+ "panels.market.failure.term.commandLine": "第 {line} 行的命令",
3907
+ "panels.market.failure.term.signal": "被 {signal} 终止",
3908
+ "panels.market.failure.term.exitCode": "退出码 {exitCode}",
3909
+ "panels.market.failure.term.noExitCode": "没有退出码",
3910
+ "panels.market.failure.term.running": "在跑",
3911
+ "panels.market.failure.term.failed": "没跑通",
3912
+ "panels.market.failure.term.done": "跑完了",
3913
+ "panels.market.failure.term.copy": "复制",
3914
+ "panels.market.failure.term.copied": "已复制",
3915
+ "panels.market.failure.term.noOutput": "没有输出",
3916
+ "panels.market.failure.term.collapse": "收起",
3917
+ "panels.market.failure.term.expandAria": "展开剩下的 {hidden} 行",
3918
+ "panels.market.failure.term.expand": "展开 {hidden} 行",
3802
3919
  "panels.market.needEnv": "先在启动工作台的终端里设 {env}",
3803
3920
  "panels.market.needCommands": "缺这几条命令:{commands}",
3804
3921
  "panels.market.needBinary": "先装 {command} 命令",
@@ -3838,6 +3955,9 @@ var dictionaries = {
3838
3955
  "panels.market.checkingNow": "正在检查…",
3839
3956
  "panels.market.checkFailed": "最近一次没查到,检查网络后重试",
3840
3957
  "panels.market.checkedAt": "最近检查:{time}",
3958
+ "panels.market.latestPartial": "{n} 个模块没查成",
3959
+ "panels.market.latestNoRegistry": "没配来源,未检查新版",
3960
+ "panels.market.latestProbeFailed": "问不到源,稍后重试",
3841
3961
  "panels.market.justNow": "刚刚",
3842
3962
  "panels.market.minutesAgo": "{n} 分钟前",
3843
3963
  "panels.market.hoursAgo": "{n} 小时前",
@@ -4302,6 +4422,9 @@ var dictionaries = {
4302
4422
  "approval.record.noSwitch": "录完不会替你切回来(左栏底部会亮一条状态)",
4303
4423
  "approval.longTask.what": "要停的那次任务",
4304
4424
  "approval.longTask.signal": "停了只是让工作台发出中断信号 —— 这次任务怎么收尾由模块自己负责",
4425
+ "approval.plugin.name": "插件",
4426
+ "approval.plugin.command": "命令",
4427
+ "approval.plugin.note": "agent 说",
4305
4428
  "approval.publish.module": "模块",
4306
4429
  "approval.publish.target": "目标",
4307
4430
  "approval.publish.version": "版本",
@@ -4825,14 +4948,14 @@ function bumpCapabilityEpoch() {
4825
4948
  epoch$1 += 1;
4826
4949
  }
4827
4950
  var current$1 = null;
4828
- var listeners$7 = /* @__PURE__ */ new Set();
4951
+ var listeners$8 = /* @__PURE__ */ new Set();
4829
4952
  function capabilityValue() {
4830
4953
  return current$1;
4831
4954
  }
4832
4955
  function subscribeCapabilities(listener) {
4833
- listeners$7.add(listener);
4956
+ listeners$8.add(listener);
4834
4957
  return () => {
4835
- listeners$7.delete(listener);
4958
+ listeners$8.delete(listener);
4836
4959
  };
4837
4960
  }
4838
4961
  function setCapabilities(next, rechecked = false) {
@@ -4845,7 +4968,7 @@ function setCapabilities(next, rechecked = false) {
4845
4968
  });
4846
4969
  if (next === current$1) return;
4847
4970
  current$1 = next;
4848
- for (const listener of [...listeners$7]) listener();
4971
+ for (const listener of [...listeners$8]) listener();
4849
4972
  }
4850
4973
  function beginProbe() {
4851
4974
  probing += 1;
@@ -5000,7 +5123,7 @@ function useCapabilityMap(refreshToken) {
5000
5123
  //#endregion
5001
5124
  //#region src/app/layouts/panel-hint.ts
5002
5125
  var hints = /* @__PURE__ */ new Map();
5003
- var listeners$6 = /* @__PURE__ */ new Set();
5126
+ var listeners$7 = /* @__PURE__ */ new Set();
5004
5127
  function sameHint(left, right) {
5005
5128
  if (left === null || right === null) return left === right;
5006
5129
  if (left.labelKey !== right.labelKey || left.tone !== right.tone) return false;
@@ -5012,15 +5135,15 @@ function publishPanelHint(id, hint) {
5012
5135
  if (sameHint(hints.get(id) ?? null, hint)) return;
5013
5136
  if (hint === null) hints.delete(id);
5014
5137
  else hints.set(id, hint);
5015
- for (const listener of [...listeners$6]) listener();
5138
+ for (const listener of [...listeners$7]) listener();
5016
5139
  }
5017
5140
  function panelHintOf(id) {
5018
5141
  return id === null ? null : hints.get(id) ?? null;
5019
5142
  }
5020
5143
  function subscribePanelHints(listener) {
5021
- listeners$6.add(listener);
5144
+ listeners$7.add(listener);
5022
5145
  return () => {
5023
- listeners$6.delete(listener);
5146
+ listeners$7.delete(listener);
5024
5147
  };
5025
5148
  }
5026
5149
  function usePanelHint(id) {
@@ -5188,6 +5311,26 @@ function installedIdSet(installed) {
5188
5311
  if (installed === void 0) return null;
5189
5312
  return new Set(installed.map((item) => item.unit));
5190
5313
  }
5314
+ function latestUnavailableNote(unavailable) {
5315
+ if (unavailable === "no-registry") return {
5316
+ key: "panels.market.latestNoRegistry",
5317
+ params: {}
5318
+ };
5319
+ if (unavailable === "probe-failed") return {
5320
+ key: "panels.market.latestProbeFailed",
5321
+ params: {}
5322
+ };
5323
+ }
5324
+ function latestCheckSummary(modules) {
5325
+ let checked = 0;
5326
+ let unknown = 0;
5327
+ for (const module of modules ?? []) if (module.latest !== void 0) checked += 1;
5328
+ else if (module.latestUnavailable === "no-registry" || module.latestUnavailable === "probe-failed") unknown += 1;
5329
+ return {
5330
+ checked,
5331
+ unknown
5332
+ };
5333
+ }
5191
5334
  function installedRows(modules, manifests, listed, names, defaults = /* @__PURE__ */ new Set(), changed = {}) {
5192
5335
  const titles = new Map(manifests.map((manifest) => [manifest.id, manifest.titleKey]));
5193
5336
  const rows = [];
@@ -5201,16 +5344,17 @@ function installedRows(modules, manifests, listed, names, defaults = /* @__PURE_
5201
5344
  const pending = !loaded && refused.length === 0;
5202
5345
  const titleKey = titles.get(module.unit);
5203
5346
  const remembered = titleKey === void 0 ? names?.get(module.unit) : void 0;
5347
+ const note = refused.length > 0 ? {
5348
+ key: "panels.market.moduleRefused",
5349
+ params: {}
5350
+ } : latestUnavailableNote(module.latestUnavailable);
5204
5351
  rows.push({
5205
5352
  id: module.unit,
5206
5353
  titleKey: titleKey ?? module.unit,
5207
5354
  ...remembered === void 0 ? {} : { label: remembered },
5208
5355
  state: outdated ? "outdated" : refused.length > 0 ? "unusable" : pending ? "inactive" : "installed",
5209
5356
  ...pending ? { hint: "panels.market.moduleRestartHint" } : blocked === void 0 ? {} : { hint: updateBlockHintOf(blocked) },
5210
- ...refused.length === 0 ? {} : { note: {
5211
- key: "panels.market.moduleRefused",
5212
- params: {}
5213
- } },
5357
+ ...note === void 0 ? {} : { note },
5214
5358
  ...module.local === true ? { local: true } : {},
5215
5359
  pkg: module.pkg,
5216
5360
  canInstall: false,
@@ -5237,6 +5381,13 @@ var SWITCH_LOCKED = /* @__PURE__ */ new Set(["unusable", "broken"]);
5237
5381
  function marketSwitchLocked(row) {
5238
5382
  return SWITCH_LOCKED.has(row.state);
5239
5383
  }
5384
+ function marketAsksAgent(row) {
5385
+ if (row.workbench === true || row.plugin === true) return false;
5386
+ if (row.state === "installed" || row.state === "inactive" || row.state === "outdated") return false;
5387
+ if (row.state === "checking" || row.state === "pending-restart") return false;
5388
+ if (row.state === "pending-followup") return false;
5389
+ return !marketActions$1(row).includes("install");
5390
+ }
5240
5391
  function marketActions$1(row) {
5241
5392
  if (row.workbench === true) {
5242
5393
  if (row.followUp !== void 0 && row.state === "pending-followup") return row.followUp.hard ? ["migrate-workbench"] : ["migrate-workbench", "dismiss-followup"];
@@ -5359,6 +5510,18 @@ function marketSections(rows) {
5359
5510
  rows: rest
5360
5511
  }]];
5361
5512
  }
5513
+ function checkingRows(rows, scope) {
5514
+ return rows.map((row) => {
5515
+ if (row.state !== "unknown" && row.state !== "unchecked") return row;
5516
+ if (!scope.all && !scope.units.has(row.id)) return row;
5517
+ return {
5518
+ ...row,
5519
+ state: "checking",
5520
+ hint: void 0,
5521
+ note: void 0
5522
+ };
5523
+ });
5524
+ }
5362
5525
  function marketRows(manifests, capabilities, updates = {}, defaults = /* @__PURE__ */ new Set(), changed = {}) {
5363
5526
  const rows = [];
5364
5527
  for (const manifest of manifests) {
@@ -5487,8 +5650,9 @@ var UPDATES_KEY = "panels.market.hasNew";
5487
5650
  function isProblem(row) {
5488
5651
  return row.broken === true || row.state === "broken" || row.state === "unusable" || row.note?.key === "panels.market.moduleRefused";
5489
5652
  }
5490
- function isRestart(row) {
5491
- return row.state === "inactive" || row.state === "pending-restart";
5653
+ function isRestart(row, installing) {
5654
+ if (row.state === "pending-restart") return true;
5655
+ return !installing && row.state === "inactive";
5492
5656
  }
5493
5657
  function isUnknown(row, rosterRead) {
5494
5658
  return row.state === "unchecked" || rosterRead && row.state === "unknown";
@@ -5498,9 +5662,10 @@ function awaitsRestart(manifests, installed) {
5498
5662
  return installed.some((module) => !loaded.has(module.unit) && refusalReasons(module.refused, module.clientRefused).length === 0);
5499
5663
  }
5500
5664
  function marketHintOf(input) {
5501
- const busy = input.busy ?? /* @__PURE__ */ new Set();
5502
- const marketable = marketCatalog(input.manifests, input.installable).filter((manifest) => !busy.has(manifest.id));
5503
- const installed = (input.installed ?? []).filter((module) => !busy.has(module.unit));
5665
+ const installing = input.installing === true;
5666
+ const held = /* @__PURE__ */ new Set([...input.busy ?? [], ...input.applied ?? []]);
5667
+ const marketable = marketCatalog(input.manifests, input.installable).filter((manifest) => !held.has(manifest.id));
5668
+ const installed = (input.installed ?? []).filter((module) => !held.has(module.unit));
5504
5669
  const catalog = marketRows(marketable, input.capabilities, marketUpdatesOf(input.modules));
5505
5670
  const listed = new Set(catalog.map((row) => row.id));
5506
5671
  const self = workbenchRow(input.workbench);
@@ -5511,10 +5676,10 @@ function marketHintOf(input) {
5511
5676
  ...self === void 0 ? [] : [self]
5512
5677
  ];
5513
5678
  const problem = rows.some(isProblem);
5514
- const restart = rows.some(isRestart) || awaitsRestart(input.manifests, installed);
5679
+ const restart = rows.some((row) => isRestart(row, installing)) || !installing && awaitsRestart(input.manifests, installed);
5515
5680
  const followUp = rows.some((row) => row.state === "pending-followup");
5516
5681
  const rosterRead = input.modules !== null;
5517
- const unknown = rows.some((row) => isUnknown(row, rosterRead));
5682
+ const unknown = !installing && rows.some((row) => isUnknown(row, rosterRead));
5518
5683
  const updates = marketHasUpdates(rows, sharedRows(marketable, input.capabilities));
5519
5684
  const more = [];
5520
5685
  if (problem) {
@@ -5643,10 +5808,10 @@ function holdWindowMs(until) {
5643
5808
  }
5644
5809
  //#endregion
5645
5810
  //#region src/app/layouts/rightbar/market-busy.ts
5646
- var listeners$5 = /* @__PURE__ */ new Set();
5811
+ var listeners$6 = /* @__PURE__ */ new Set();
5647
5812
  var published = /* @__PURE__ */ new Map();
5648
5813
  var live$2 = /* @__PURE__ */ new Set();
5649
- var timer$2;
5814
+ var timer$3;
5650
5815
  var MARKET_BUSY_MS = WORKBENCH_SWAP_MS;
5651
5816
  function marketBusyIds() {
5652
5817
  return live$2;
@@ -5656,12 +5821,12 @@ function publishMarketBusy(ids) {
5656
5821
  const next = /* @__PURE__ */ new Map();
5657
5822
  for (const id of new Set(ids)) next.set(id, published.get(id) ?? now);
5658
5823
  published = next;
5659
- refresh(now);
5824
+ refresh$1(now);
5660
5825
  }
5661
5826
  function subscribeMarketBusy(listener) {
5662
- listeners$5.add(listener);
5827
+ listeners$6.add(listener);
5663
5828
  return () => {
5664
- listeners$5.delete(listener);
5829
+ listeners$6.delete(listener);
5665
5830
  };
5666
5831
  }
5667
5832
  function useMarketBusy() {
@@ -5677,29 +5842,100 @@ function sameSet(left, right) {
5677
5842
  for (const id of left) if (!right.has(id)) return false;
5678
5843
  return true;
5679
5844
  }
5680
- function schedule$1(now) {
5681
- if (timer$2 !== void 0) clearTimeout(timer$2);
5682
- timer$2 = void 0;
5845
+ function schedule$2(now) {
5846
+ if (timer$3 !== void 0) clearTimeout(timer$3);
5847
+ timer$3 = void 0;
5683
5848
  let soonest = Number.POSITIVE_INFINITY;
5684
5849
  for (const at of published.values()) soonest = Math.min(soonest, at);
5685
5850
  if (soonest === Number.POSITIVE_INFINITY) return;
5686
- timer$2 = setTimeout(() => refresh(Date.now()), Math.max(0, soonest + MARKET_BUSY_MS - now) + 1);
5851
+ timer$3 = setTimeout(() => refresh$1(Date.now()), Math.max(0, soonest + MARKET_BUSY_MS - now) + 1);
5687
5852
  }
5688
- function refresh(now) {
5853
+ function refresh$1(now) {
5689
5854
  for (const [id, at] of published) if (now - at >= MARKET_BUSY_MS) published.delete(id);
5690
5855
  const next = new Set(published.keys());
5691
5856
  if (!sameSet(live$2, next)) {
5692
5857
  live$2 = next;
5858
+ for (const listener of [...listeners$6]) listener();
5859
+ }
5860
+ schedule$2(now);
5861
+ }
5862
+ //#endregion
5863
+ //#region src/app/layouts/rightbar/market-install.ts
5864
+ var NO_UNITS$2 = /* @__PURE__ */ new Set();
5865
+ var IDLE$1 = {
5866
+ installing: false,
5867
+ applied: NO_UNITS$2
5868
+ };
5869
+ var tokens = /* @__PURE__ */ new Set();
5870
+ var applied = /* @__PURE__ */ new Map();
5871
+ var listeners$5 = /* @__PURE__ */ new Set();
5872
+ var snapshot$1 = IDLE$1;
5873
+ var timer$2;
5874
+ function sameUnits(left, right) {
5875
+ if (left.size !== right.size) return false;
5876
+ for (const unit of left) if (!right.has(unit)) return false;
5877
+ return true;
5878
+ }
5879
+ function schedule$1(now) {
5880
+ if (timer$2 !== void 0) clearTimeout(timer$2);
5881
+ timer$2 = void 0;
5882
+ if (applied.size === 0) return;
5883
+ let soonest = Number.POSITIVE_INFINITY;
5884
+ for (const at of applied.values()) soonest = Math.min(soonest, at);
5885
+ timer$2 = setTimeout(() => refresh(Date.now()), Math.max(0, soonest + MODULE_SETTLE_MS - now) + 1);
5886
+ }
5887
+ function refresh(now) {
5888
+ for (const [unit, at] of applied) if (now - at >= 15e3) applied.delete(unit);
5889
+ const next = tokens.size === 0 && applied.size === 0 ? IDLE$1 : {
5890
+ installing: tokens.size > 0,
5891
+ applied: applied.size === 0 ? NO_UNITS$2 : new Set(applied.keys())
5892
+ };
5893
+ if (next.installing !== snapshot$1.installing || !sameUnits(next.applied, snapshot$1.applied)) {
5894
+ snapshot$1 = next;
5693
5895
  for (const listener of [...listeners$5]) listener();
5694
5896
  }
5695
5897
  schedule$1(now);
5696
5898
  }
5899
+ function marketInstallState() {
5900
+ return snapshot$1;
5901
+ }
5902
+ function subscribeMarketInstall(listener) {
5903
+ listeners$5.add(listener);
5904
+ return () => {
5905
+ listeners$5.delete(listener);
5906
+ };
5907
+ }
5908
+ function publishMarketInstalling(token, active) {
5909
+ if (active) tokens.add(token);
5910
+ else tokens.delete(token);
5911
+ refresh(Date.now());
5912
+ }
5913
+ function publishMarketApplied(units) {
5914
+ const now = Date.now();
5915
+ for (const unit of new Set(units)) if (unit !== "" && !applied.has(unit)) applied.set(unit, now);
5916
+ refresh(now);
5917
+ }
5918
+ function useMarketInstallState() {
5919
+ return (0, react.useSyncExternalStore)(subscribeMarketInstall, marketInstallState);
5920
+ }
5921
+ function usePublishMarketInstalling(token, active) {
5922
+ (0, react.useEffect)(() => {
5923
+ publishMarketInstalling(token, active);
5924
+ return () => publishMarketInstalling(token, false);
5925
+ }, [token, active]);
5926
+ }
5697
5927
  //#endregion
5698
5928
  //#region src/shared/api/write-outcome.ts
5699
5929
  function writeRoute(channel, resource) {
5700
5930
  if (channel === "provision") return "provision";
5701
5931
  return `${channel}/${resource}`;
5702
5932
  }
5933
+ function installFailureOf(value) {
5934
+ if (typeof value !== "object" || value === null) return void 0;
5935
+ const record = value;
5936
+ if (typeof record.kind !== "string" || typeof record.command !== "string") return void 0;
5937
+ return value;
5938
+ }
5703
5939
  function writeOutcomeOf(response, networkText) {
5704
5940
  if (response === null) return {
5705
5941
  ok: false,
@@ -5711,11 +5947,13 @@ function writeOutcomeOf(response, networkText) {
5711
5947
  const fallback = typeof box.text === "string" && box.text !== "" ? box.text : networkText;
5712
5948
  const detail = typeof box.error?.detail === "string" ? box.error.detail : void 0;
5713
5949
  const helpUrl = typeof box.error?.helpUrl === "string" && box.error.helpUrl !== "" ? box.error.helpUrl : void 0;
5950
+ const failure = installFailureOf(box.error?.failure);
5714
5951
  return {
5715
5952
  ok: false,
5716
5953
  message: own ?? fallback,
5717
5954
  ...detail === void 0 ? {} : { detail },
5718
- ...helpUrl === void 0 ? {} : { helpUrl }
5955
+ ...helpUrl === void 0 ? {} : { helpUrl },
5956
+ ...failure === void 0 ? {} : { failure }
5719
5957
  };
5720
5958
  }
5721
5959
  return {
@@ -5922,137 +6160,138 @@ function useMarketTransient(input) {
5922
6160
  };
5923
6161
  }
5924
6162
  var MarketPage_module_default = {
5925
- marketList: "_marketList_yups9_1",
5926
- marketRow: "_marketRow_yups9_10",
5927
- marketIcon: "_marketIcon_yups9_20",
5928
- marketMain: "_marketMain_yups9_32",
5929
- marketName: "_marketName_yups9_39",
5930
- marketStatus: "_marketStatus_yups9_48",
5931
- marketStateText: "_marketStateText_yups9_58",
5932
- marketSep: "_marketSep_yups9_62",
5933
- marketReason: "_marketReason_yups9_66",
5934
- marketVersion: "_marketVersion_yups9_72",
5935
- marketLocalTag: "_marketLocalTag_yups9_94",
5936
- marketEnd: "_marketEnd_yups9_105",
5937
- marketSwitchSeat: "_marketSwitchSeat_yups9_112",
5938
- marketActions: "_marketActions_yups9_125",
5939
- marketUpdateAction: "_marketUpdateAction_yups9_131",
5940
- marketSelfDivider: "_marketSelfDivider_yups9_137",
5941
- marketSection: "_marketSection_yups9_143",
5942
- marketSectionHead: "_marketSectionHead_yups9_150",
5943
- marketSectionIcon: "_marketSectionIcon_yups9_156",
5944
- marketSectionTitle: "_marketSectionTitle_yups9_163",
5945
- marketSectionCount: "_marketSectionCount_yups9_169",
5946
- marketSectionAction: "_marketSectionAction_yups9_175",
5947
- marketSectionQuiet: "_marketSectionQuiet_yups9_183",
5948
- marketProgress: "_marketProgress_yups9_196",
5949
- marketNote: "_marketNote_yups9_206",
5950
- marketFailure: "_marketFailure_yups9_213",
5951
- marketEmpty: "_marketEmpty_yups9_220",
5952
- marketPage: "_marketPage_yups9_225",
5953
- marketPageHead: "_marketPageHead_yups9_243",
5954
- marketPageTitle: "_marketPageTitle_yups9_251",
5955
- marketPageIntro: "_marketPageIntro_yups9_256",
5956
- marketPageTools: "_marketPageTools_yups9_262",
5957
- marketPanel: "_marketPanel_yups9_271",
5958
- marketTabs: "_marketTabs_yups9_281",
5959
- marketTabList: "_marketTabList_yups9_286",
5960
- marketAddButton: "_marketAddButton_yups9_291",
5961
- marketEmptyTitle: "_marketEmptyTitle_yups9_308",
5962
- discoverPage: "_discoverPage_yups9_313",
5963
- discoverBar: "_discoverBar_yups9_320",
5964
- discoverTools: "_discoverTools_yups9_327",
5965
- discoverMarket: "_discoverMarket_yups9_333",
5966
- discoverMarketButton: "_discoverMarketButton_yups9_338",
5967
- discoverMarketName: "_discoverMarketName_yups9_345",
5968
- discoverLabels: "_discoverLabels_yups9_351",
5969
- discoverSort: "_discoverSort_yups9_356",
5970
- discoverRefresh: "_discoverRefresh_yups9_361",
5971
- discoverSearch: "_discoverSearch_yups9_365",
5972
- discoverSearchField: "_discoverSearchField_yups9_373",
5973
- discoverSearchFieldFilled: "_discoverSearchFieldFilled_yups9_378",
5974
- discoverSearchClear: "_discoverSearchClear_yups9_387",
5975
- discoverChips: "_discoverChips_yups9_438",
5976
- discoverList: "_discoverList_yups9_445",
5977
- discoverCard: "_discoverCard_yups9_454",
5978
- discoverArtwork: "_discoverArtwork_yups9_468",
5979
- discoverArtworkImage: "_discoverArtworkImage_yups9_480",
5980
- discoverMain: "_discoverMain_yups9_484",
5981
- discoverTitleRow: "_discoverTitleRow_yups9_492",
5982
- discoverCardOpen: "_discoverCardOpen_yups9_500",
5983
- discoverStrong: "_discoverStrong_yups9_531",
5984
- discoverDesc: "_discoverDesc_yups9_537",
5985
- discoverMeta: "_discoverMeta_yups9_546",
5986
- discoverMuted: "_discoverMuted_yups9_553",
5987
- discoverEnd: "_discoverEnd_yups9_559",
5988
- discoverUpdateAction: "_discoverUpdateAction_yups9_568",
5989
- discoverBlocked: "_discoverBlocked_yups9_573",
5990
- discoverEmpty: "_discoverEmpty_yups9_578",
5991
- discoverEmptyTitle: "_discoverEmptyTitle_yups9_587",
5992
- discoverDetail: "_discoverDetail_yups9_597",
5993
- discoverCrumb: "_discoverCrumb_yups9_603",
5994
- discoverCrumbIcon: "_discoverCrumbIcon_yups9_626",
5995
- discoverDetailHead: "_discoverDetailHead_yups9_630",
5996
- discoverDetailTitle: "_discoverDetailTitle_yups9_636",
5997
- discoverDetailText: "_discoverDetailText_yups9_642",
5998
- discoverDetailPanel: "_discoverDetailPanel_yups9_649",
5999
- discoverDetailTabs: "_discoverDetailTabs_yups9_656",
6000
- discoverDetailTabList: "_discoverDetailTabList_yups9_661",
6001
- discoverDocBody: "_discoverDocBody_yups9_666",
6002
- discoverDocNotice: "_discoverDocNotice_yups9_671",
6003
- discoverSection: "_discoverSection_yups9_677",
6004
- discoverSectionTitle: "_discoverSectionTitle_yups9_684",
6005
- discoverFacts: "_discoverFacts_yups9_690",
6006
- discoverFactRow: "_discoverFactRow_yups9_695",
6007
- discoverFactKind: "_discoverFactKind_yups9_705",
6008
- discoverFactValue: "_discoverFactValue_yups9_711",
6009
- discoverCode: "_discoverCode_yups9_719",
6010
- discoverTags: "_discoverTags_yups9_728",
6011
- discoverLink: "_discoverLink_yups9_735",
6012
- discoverVersions: "_discoverVersions_yups9_745",
6013
- discoverVersionRow: "_discoverVersionRow_yups9_753",
6014
- discoverVersionName: "_discoverVersionName_yups9_761",
6015
- discoverError: "_discoverError_yups9_766",
6016
- discoverFailure: "_discoverFailure_yups9_775",
6017
- discoverLoading: "_discoverLoading_yups9_781",
6018
- discoverNotice: "_discoverNotice_yups9_790",
6019
- discoverMore: "_discoverMore_yups9_808",
6020
- discoverTransport: "_discoverTransport_yups9_812",
6021
- discoverTransportHead: "_discoverTransportHead_yups9_818",
6022
- discoverTransportTitle: "_discoverTransportTitle_yups9_825",
6023
- discoverTransportKind: "_discoverTransportKind_yups9_830",
6024
- discoverTransportState: "_discoverTransportState_yups9_835",
6025
- discoverTransportRows: "_discoverTransportRows_yups9_843",
6026
- discoverTransportRow: "_discoverTransportRow_yups9_843",
6027
- discoverTransportRadio: "_discoverTransportRadio_yups9_864",
6028
- discoverTransportCustom: "_discoverTransportCustom_yups9_904",
6029
- discoverTransportInput: "_discoverTransportInput_yups9_910",
6030
- discoverInstallBar: "_discoverInstallBar_yups9_915",
6031
- discoverInstallText: "_discoverInstallText_yups9_926",
6032
- discoverDialog: "_discoverDialog_yups9_932",
6033
- discoverDialogBody: "_discoverDialogBody_yups9_936",
6034
- discoverSourceList: "_discoverSourceList_yups9_942",
6035
- discoverSourceRow: "_discoverSourceRow_yups9_950",
6036
- discoverSourceConfirm: "_discoverSourceConfirm_yups9_959",
6037
- discoverSourcePick: "_discoverSourcePick_yups9_965",
6038
- discoverSourceRadio: "_discoverSourceRadio_yups9_974",
6039
- discoverSourceMain: "_discoverSourceMain_yups9_982",
6040
- discoverSourceHead: "_discoverSourceHead_yups9_990",
6041
- discoverSourceUrl: "_discoverSourceUrl_yups9_998",
6042
- discoverSourceMore: "_discoverSourceMore_yups9_1008",
6043
- discoverSourceLoading: "_discoverSourceLoading_yups9_1012",
6044
- discoverSourceHint: "_discoverSourceHint_yups9_1022",
6045
- discoverSourceError: "_discoverSourceError_yups9_1036",
6046
- discoverSourceForm: "_discoverSourceForm_yups9_1042",
6047
- discoverGrow: "_discoverGrow_yups9_1048",
6048
- discoverField: "_discoverField_yups9_1053",
6049
- discoverFieldLabel: "_discoverFieldLabel_yups9_1059",
6050
- discoverConfirmHead: "_discoverConfirmHead_yups9_1064",
6051
- discoverSkeletonFill: "_discoverSkeletonFill_yups9_1070",
6052
- "wb-skeleton": "_wb-skeleton_yups9_1",
6053
- discoverSkeletonBar: "_discoverSkeletonBar_yups9_1079",
6054
- discoverSkeletonTitle: "_discoverSkeletonTitle_yups9_1086",
6055
- discoverSkeletonDesc: "_discoverSkeletonDesc_yups9_1090"
6163
+ marketList: "_marketList_485ym_1",
6164
+ marketRow: "_marketRow_485ym_10",
6165
+ marketIcon: "_marketIcon_485ym_20",
6166
+ marketMain: "_marketMain_485ym_32",
6167
+ marketName: "_marketName_485ym_39",
6168
+ marketStatus: "_marketStatus_485ym_48",
6169
+ marketStateText: "_marketStateText_485ym_58",
6170
+ marketSep: "_marketSep_485ym_62",
6171
+ marketReason: "_marketReason_485ym_66",
6172
+ marketVersion: "_marketVersion_485ym_72",
6173
+ marketLocalTag: "_marketLocalTag_485ym_94",
6174
+ marketEnd: "_marketEnd_485ym_105",
6175
+ marketSwitchSeat: "_marketSwitchSeat_485ym_112",
6176
+ marketActions: "_marketActions_485ym_125",
6177
+ marketUpdateAction: "_marketUpdateAction_485ym_131",
6178
+ marketSelfDivider: "_marketSelfDivider_485ym_137",
6179
+ marketSection: "_marketSection_485ym_143",
6180
+ marketSectionHead: "_marketSectionHead_485ym_150",
6181
+ marketSectionIcon: "_marketSectionIcon_485ym_156",
6182
+ marketSectionTitle: "_marketSectionTitle_485ym_163",
6183
+ marketSectionCount: "_marketSectionCount_485ym_169",
6184
+ marketSectionAction: "_marketSectionAction_485ym_175",
6185
+ marketSectionQuiet: "_marketSectionQuiet_485ym_183",
6186
+ marketProgress: "_marketProgress_485ym_196",
6187
+ marketNote: "_marketNote_485ym_206",
6188
+ marketFailure: "_marketFailure_485ym_213",
6189
+ marketFailureSeat: "_marketFailureSeat_485ym_220",
6190
+ marketEmpty: "_marketEmpty_485ym_225",
6191
+ marketPage: "_marketPage_485ym_230",
6192
+ marketPageHead: "_marketPageHead_485ym_248",
6193
+ marketPageTitle: "_marketPageTitle_485ym_256",
6194
+ marketPageIntro: "_marketPageIntro_485ym_261",
6195
+ marketPageTools: "_marketPageTools_485ym_267",
6196
+ marketPanel: "_marketPanel_485ym_276",
6197
+ marketTabs: "_marketTabs_485ym_286",
6198
+ marketTabList: "_marketTabList_485ym_291",
6199
+ marketAddButton: "_marketAddButton_485ym_296",
6200
+ marketEmptyTitle: "_marketEmptyTitle_485ym_313",
6201
+ discoverPage: "_discoverPage_485ym_318",
6202
+ discoverBar: "_discoverBar_485ym_325",
6203
+ discoverTools: "_discoverTools_485ym_332",
6204
+ discoverMarket: "_discoverMarket_485ym_338",
6205
+ discoverMarketButton: "_discoverMarketButton_485ym_343",
6206
+ discoverMarketName: "_discoverMarketName_485ym_350",
6207
+ discoverLabels: "_discoverLabels_485ym_356",
6208
+ discoverSort: "_discoverSort_485ym_361",
6209
+ discoverRefresh: "_discoverRefresh_485ym_366",
6210
+ discoverSearch: "_discoverSearch_485ym_370",
6211
+ discoverSearchField: "_discoverSearchField_485ym_378",
6212
+ discoverSearchFieldFilled: "_discoverSearchFieldFilled_485ym_383",
6213
+ discoverSearchClear: "_discoverSearchClear_485ym_392",
6214
+ discoverChips: "_discoverChips_485ym_443",
6215
+ discoverList: "_discoverList_485ym_450",
6216
+ discoverCard: "_discoverCard_485ym_459",
6217
+ discoverArtwork: "_discoverArtwork_485ym_473",
6218
+ discoverArtworkImage: "_discoverArtworkImage_485ym_485",
6219
+ discoverMain: "_discoverMain_485ym_489",
6220
+ discoverTitleRow: "_discoverTitleRow_485ym_497",
6221
+ discoverCardOpen: "_discoverCardOpen_485ym_505",
6222
+ discoverStrong: "_discoverStrong_485ym_536",
6223
+ discoverDesc: "_discoverDesc_485ym_542",
6224
+ discoverMeta: "_discoverMeta_485ym_551",
6225
+ discoverMuted: "_discoverMuted_485ym_558",
6226
+ discoverEnd: "_discoverEnd_485ym_564",
6227
+ discoverUpdateAction: "_discoverUpdateAction_485ym_573",
6228
+ discoverBlocked: "_discoverBlocked_485ym_578",
6229
+ discoverEmpty: "_discoverEmpty_485ym_583",
6230
+ discoverEmptyTitle: "_discoverEmptyTitle_485ym_592",
6231
+ discoverDetail: "_discoverDetail_485ym_602",
6232
+ discoverCrumb: "_discoverCrumb_485ym_608",
6233
+ discoverCrumbIcon: "_discoverCrumbIcon_485ym_631",
6234
+ discoverDetailHead: "_discoverDetailHead_485ym_635",
6235
+ discoverDetailTitle: "_discoverDetailTitle_485ym_641",
6236
+ discoverDetailText: "_discoverDetailText_485ym_647",
6237
+ discoverDetailPanel: "_discoverDetailPanel_485ym_654",
6238
+ discoverDetailTabs: "_discoverDetailTabs_485ym_661",
6239
+ discoverDetailTabList: "_discoverDetailTabList_485ym_666",
6240
+ discoverDocBody: "_discoverDocBody_485ym_671",
6241
+ discoverDocNotice: "_discoverDocNotice_485ym_676",
6242
+ discoverSection: "_discoverSection_485ym_682",
6243
+ discoverSectionTitle: "_discoverSectionTitle_485ym_689",
6244
+ discoverFacts: "_discoverFacts_485ym_695",
6245
+ discoverFactRow: "_discoverFactRow_485ym_700",
6246
+ discoverFactKind: "_discoverFactKind_485ym_710",
6247
+ discoverFactValue: "_discoverFactValue_485ym_716",
6248
+ discoverCode: "_discoverCode_485ym_724",
6249
+ discoverTags: "_discoverTags_485ym_733",
6250
+ discoverLink: "_discoverLink_485ym_740",
6251
+ discoverVersions: "_discoverVersions_485ym_750",
6252
+ discoverVersionRow: "_discoverVersionRow_485ym_758",
6253
+ discoverVersionName: "_discoverVersionName_485ym_766",
6254
+ discoverError: "_discoverError_485ym_771",
6255
+ discoverFailure: "_discoverFailure_485ym_780",
6256
+ discoverLoading: "_discoverLoading_485ym_786",
6257
+ discoverNotice: "_discoverNotice_485ym_795",
6258
+ discoverMore: "_discoverMore_485ym_813",
6259
+ discoverTransport: "_discoverTransport_485ym_817",
6260
+ discoverTransportHead: "_discoverTransportHead_485ym_823",
6261
+ discoverTransportTitle: "_discoverTransportTitle_485ym_830",
6262
+ discoverTransportKind: "_discoverTransportKind_485ym_835",
6263
+ discoverTransportState: "_discoverTransportState_485ym_840",
6264
+ discoverTransportRows: "_discoverTransportRows_485ym_848",
6265
+ discoverTransportRow: "_discoverTransportRow_485ym_848",
6266
+ discoverTransportRadio: "_discoverTransportRadio_485ym_869",
6267
+ discoverTransportCustom: "_discoverTransportCustom_485ym_909",
6268
+ discoverTransportInput: "_discoverTransportInput_485ym_915",
6269
+ discoverInstallBar: "_discoverInstallBar_485ym_920",
6270
+ discoverInstallText: "_discoverInstallText_485ym_931",
6271
+ discoverDialog: "_discoverDialog_485ym_937",
6272
+ discoverDialogBody: "_discoverDialogBody_485ym_941",
6273
+ discoverSourceList: "_discoverSourceList_485ym_947",
6274
+ discoverSourceRow: "_discoverSourceRow_485ym_955",
6275
+ discoverSourceConfirm: "_discoverSourceConfirm_485ym_964",
6276
+ discoverSourcePick: "_discoverSourcePick_485ym_970",
6277
+ discoverSourceRadio: "_discoverSourceRadio_485ym_979",
6278
+ discoverSourceMain: "_discoverSourceMain_485ym_987",
6279
+ discoverSourceHead: "_discoverSourceHead_485ym_995",
6280
+ discoverSourceUrl: "_discoverSourceUrl_485ym_1003",
6281
+ discoverSourceMore: "_discoverSourceMore_485ym_1013",
6282
+ discoverSourceLoading: "_discoverSourceLoading_485ym_1017",
6283
+ discoverSourceHint: "_discoverSourceHint_485ym_1027",
6284
+ discoverSourceError: "_discoverSourceError_485ym_1041",
6285
+ discoverSourceForm: "_discoverSourceForm_485ym_1047",
6286
+ discoverGrow: "_discoverGrow_485ym_1053",
6287
+ discoverField: "_discoverField_485ym_1058",
6288
+ discoverFieldLabel: "_discoverFieldLabel_485ym_1064",
6289
+ discoverConfirmHead: "_discoverConfirmHead_485ym_1069",
6290
+ discoverSkeletonFill: "_discoverSkeletonFill_485ym_1075",
6291
+ "wb-skeleton": "_wb-skeleton_485ym_1",
6292
+ discoverSkeletonBar: "_discoverSkeletonBar_485ym_1084",
6293
+ discoverSkeletonTitle: "_discoverSkeletonTitle_485ym_1091",
6294
+ discoverSkeletonDesc: "_discoverSkeletonDesc_485ym_1095"
6056
6295
  };
6057
6296
  //#endregion
6058
6297
  //#region src/app/layouts/market/discover-states.tsx
@@ -6133,6 +6372,151 @@ function MarketEmpty({ t }) {
6133
6372
  return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketEmpty }, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketEmptyTitle }, t("panels.market.empty")));
6134
6373
  }
6135
6374
  //#endregion
6375
+ //#region src/app/layouts/rightbar/failure-card-text.ts
6376
+ var TITLE_KEY = {
6377
+ permission: "panels.market.failure.permission",
6378
+ "disk-full": "panels.market.failure.diskFull",
6379
+ sandbox: "panels.market.failure.sandbox",
6380
+ unknown: "panels.market.failure.unknown"
6381
+ };
6382
+ var ASK_AGENT_KEY = "panels.market.failure.askAgent";
6383
+ function shellPath(path) {
6384
+ return /^[\w./@%+-]+$/.test(path) ? path : `'${path.replaceAll("'", "'\\''")}'`;
6385
+ }
6386
+ function ownerLabel(uid) {
6387
+ return uid === 0 ? "root" : `uid ${uid}`;
6388
+ }
6389
+ function failureCardOf(failure, t) {
6390
+ const path = failure.path ?? "";
6391
+ const fix = failure.fix;
6392
+ if (fix.kind === "chown") {
6393
+ const ownerUid = failure.owner?.uid;
6394
+ return {
6395
+ title: t(TITLE_KEY[failure.kind]),
6396
+ fact: ownerUid === void 0 ? t("panels.market.failure.factMode", {
6397
+ path,
6398
+ mode: failure.mode ?? "?"
6399
+ }) : t("panels.market.failure.factOwner", {
6400
+ path,
6401
+ owner: ownerLabel(ownerUid),
6402
+ me: ownerLabel(failure.current.uid)
6403
+ }),
6404
+ fixLabel: t("panels.market.failure.copyFix"),
6405
+ fix: `sudo chown -R ${fix.uid}:${fix.gid} ${shellPath(fix.path)}`,
6406
+ copiedHint: t("panels.market.failure.copiedHint"),
6407
+ command: failure.command,
6408
+ output: failure.output,
6409
+ exitCode: failure.exitCode
6410
+ };
6411
+ }
6412
+ if (fix.kind === "chmod") return {
6413
+ title: t(TITLE_KEY[failure.kind]),
6414
+ fact: t("panels.market.failure.factMode", {
6415
+ path,
6416
+ mode: failure.mode ?? "?"
6417
+ }),
6418
+ fixLabel: t("panels.market.failure.copyFix"),
6419
+ fix: `chmod -R u+w ${shellPath(fix.path)}`,
6420
+ copiedHint: t("panels.market.failure.copiedHint"),
6421
+ command: failure.command,
6422
+ output: failure.output,
6423
+ exitCode: failure.exitCode
6424
+ };
6425
+ if (fix.kind === "space") return {
6426
+ title: t(TITLE_KEY[failure.kind]),
6427
+ fact: t("panels.market.failure.factSpace", { path }),
6428
+ fixLabel: t("panels.market.failure.copyFix"),
6429
+ fix: `du -sh ${shellPath(fix.path)}`,
6430
+ copiedHint: t("panels.market.failure.copiedHint"),
6431
+ command: failure.command,
6432
+ output: failure.output,
6433
+ exitCode: failure.exitCode
6434
+ };
6435
+ return {
6436
+ title: t(TITLE_KEY[failure.kind]),
6437
+ fact: t("panels.market.failure.factStuck", { path: path === "" ? t("panels.market.failure.nowhere") : path }),
6438
+ fixLabel: t(ASK_AGENT_KEY),
6439
+ fix: t("panels.market.failure.askAgentText", {
6440
+ command: failure.command,
6441
+ path: path === "" ? t("panels.market.failure.nowhere") : path,
6442
+ code: failure.exitCode === null ? "?" : String(failure.exitCode)
6443
+ }),
6444
+ copiedHint: t("panels.market.failure.askAgentHint"),
6445
+ command: failure.command,
6446
+ output: failure.output,
6447
+ exitCode: failure.exitCode
6448
+ };
6449
+ }
6450
+ var FailureCard_module_default = {
6451
+ block: "_block_mxnbc_1",
6452
+ head: "_head_mxnbc_9",
6453
+ title: "_title_mxnbc_16",
6454
+ fact: "_fact_mxnbc_22",
6455
+ actions: "_actions_mxnbc_30",
6456
+ hint: "_hint_mxnbc_38",
6457
+ output: "_output_mxnbc_44"
6458
+ };
6459
+ //#endregion
6460
+ //#region src/app/layouts/rightbar/FailureCard.tsx
6461
+ var COPIED_MS$1 = 1200;
6462
+ function terminalLabels(t) {
6463
+ return {
6464
+ commandLine: (line) => t("panels.market.failure.term.commandLine", { line }),
6465
+ signal: (signal) => t("panels.market.failure.term.signal", { signal }),
6466
+ exitCode: (exitCode) => t("panels.market.failure.term.exitCode", { exitCode }),
6467
+ noExitCode: t("panels.market.failure.term.noExitCode"),
6468
+ running: t("panels.market.failure.term.running"),
6469
+ failed: t("panels.market.failure.term.failed"),
6470
+ done: t("panels.market.failure.term.done"),
6471
+ copy: t("panels.market.failure.term.copy"),
6472
+ copied: t("panels.market.failure.term.copied"),
6473
+ noOutput: t("panels.market.failure.term.noOutput"),
6474
+ collapseAria: t("panels.market.failure.term.collapse"),
6475
+ collapse: t("panels.market.failure.term.collapse"),
6476
+ expandAria: (hidden) => t("panels.market.failure.term.expandAria", { hidden }),
6477
+ expand: (hidden) => t("panels.market.failure.term.expand", { hidden })
6478
+ };
6479
+ }
6480
+ function FailureCard({ t, failure, onRecheck, rechecking }) {
6481
+ const model = failureCardOf(failure, t);
6482
+ const [copied, setCopied] = (0, react.useState)(false);
6483
+ const [open, setOpen] = (0, react.useState)(false);
6484
+ const onCopy = (0, react.useCallback)(() => {
6485
+ (0, _deepseek_ai_dsh_client_ui_primitives.writeClipboard)(model.fix).then((ok) => {
6486
+ if (!ok) return;
6487
+ setCopied(true);
6488
+ setTimeout(() => setCopied(false), COPIED_MS$1);
6489
+ });
6490
+ }, [model.fix]);
6491
+ return /* @__PURE__ */ (0, react.createElement)("div", { className: FailureCard_module_default.block }, /* @__PURE__ */ (0, react.createElement)("div", { className: FailureCard_module_default.head }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
6492
+ state: "error",
6493
+ size: 8
6494
+ }), /* @__PURE__ */ (0, react.createElement)("span", { className: FailureCard_module_default.title }, model.title)), /* @__PURE__ */ (0, react.createElement)("p", { className: FailureCard_module_default.fact }, model.fact), /* @__PURE__ */ (0, react.createElement)("div", { className: FailureCard_module_default.actions }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
6495
+ type: "button",
6496
+ size: "sm",
6497
+ variant: "ghost",
6498
+ onClick: onCopy
6499
+ }, copied ? t("panels.market.failure.copied") : model.fixLabel), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
6500
+ type: "button",
6501
+ size: "sm",
6502
+ variant: "ghost",
6503
+ disabled: rechecking,
6504
+ onClick: onRecheck
6505
+ }, t("panels.market.failure.recheck")), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
6506
+ type: "button",
6507
+ size: "sm",
6508
+ variant: "ghost",
6509
+ onClick: () => setOpen(!open)
6510
+ }, open ? t("panels.market.failure.hideOutput") : t("panels.market.failure.showOutput"))), copied ? /* @__PURE__ */ (0, react.createElement)("p", { className: FailureCard_module_default.hint }, model.copiedHint) : null, open ? /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.TerminalBlock, {
6511
+ command: model.command,
6512
+ output: model.output,
6513
+ exitCode: model.exitCode,
6514
+ maxLines: 8,
6515
+ labels: terminalLabels(t),
6516
+ className: FailureCard_module_default.output
6517
+ }) : null);
6518
+ }
6519
+ //#endregion
6136
6520
  //#region src/app/layouts/rightbar/market-section-icon.ts
6137
6521
  var SIZE$1 = 14;
6138
6522
  function marketSectionIcon(kind) {
@@ -6302,9 +6686,21 @@ function pendingRowOf(input) {
6302
6686
  ...pending.version === void 0 ? {} : { version: { installed: pending.version } }
6303
6687
  };
6304
6688
  }
6689
+ function askAgentReason(row, t) {
6690
+ if (row.hint !== void 0) return t(row.hint);
6691
+ if (row.note !== void 0) return t(row.note.key, row.note.params);
6692
+ return t(MARKET_STATE_KEY[row.state]);
6693
+ }
6694
+ function askAgentText(row, t) {
6695
+ return t("panels.market.askAgentText", {
6696
+ name: marketRowTitle(row, t),
6697
+ unit: row.id,
6698
+ reason: askAgentReason(row, t)
6699
+ });
6700
+ }
6305
6701
  //#endregion
6306
6702
  //#region src/app/layouts/rightbar/SharedSection.tsx
6307
- function SharedLine({ t, row, pending, failure, onAct }) {
6703
+ function SharedLine({ t, row, pending, failure, onAct, onRecheck, rechecking }) {
6308
6704
  const running = pending !== null && pending.id === row.id ? pending : null;
6309
6705
  const locked = pending !== null;
6310
6706
  const actions = sharedActions(row);
@@ -6327,9 +6723,14 @@ function SharedLine({ t, row, pending, failure, onAct }) {
6327
6723
  variant: "outline",
6328
6724
  disabled: locked,
6329
6725
  onClick: () => onAct(action)
6330
- }, t(ACTION_LABEL_KEY[action]))))), failure === null ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailure }, failure));
6726
+ }, t(ACTION_LABEL_KEY[action]))))), failure === null ? null : failure.failure === void 0 ? /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailure }, failure.message) : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailureSeat }, /* @__PURE__ */ (0, react.createElement)(FailureCard, {
6727
+ t,
6728
+ failure: failure.failure,
6729
+ onRecheck,
6730
+ rechecking
6731
+ })));
6331
6732
  }
6332
- function SharedSection({ t, rows, pending, failureOf, act }) {
6733
+ function SharedSection({ t, rows, pending, failureOf, act, onRecheck, rechecking }) {
6333
6734
  if (rows.length === 0) return null;
6334
6735
  return /* @__PURE__ */ (0, react.createElement)("section", { className: `${MarketPage_module_default.marketSection} ${MarketPage_module_default.marketSectionQuiet}` }, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketSectionHead }, /* @__PURE__ */ (0, react.createElement)("span", {
6335
6736
  className: MarketPage_module_default.marketSectionIcon,
@@ -6340,7 +6741,9 @@ function SharedSection({ t, rows, pending, failureOf, act }) {
6340
6741
  row,
6341
6742
  pending,
6342
6743
  failure: failureOf(row.id),
6343
- onAct: (action) => void act(row.id, action)
6744
+ onAct: (action) => void act(row.id, action),
6745
+ onRecheck,
6746
+ rechecking
6344
6747
  }))));
6345
6748
  }
6346
6749
  //#endregion
@@ -6363,6 +6766,25 @@ function Tip({ side = "bottom", align = "end", gap = 6, portal = true, ...rest }
6363
6766
  });
6364
6767
  }
6365
6768
  //#endregion
6769
+ //#region src/app/layouts/rightbar/AskAgentButton.tsx
6770
+ var COPIED_MS = 1200;
6771
+ function AskAgentButton({ t, text, label }) {
6772
+ const [copied, setCopied] = (0, react.useState)(false);
6773
+ const onCopy = (0, react.useCallback)(() => {
6774
+ (0, _deepseek_ai_dsh_client_ui_primitives.writeClipboard)(text).then((ok) => {
6775
+ if (!ok) return;
6776
+ setCopied(true);
6777
+ setTimeout(() => setCopied(false), COPIED_MS);
6778
+ });
6779
+ }, [text]);
6780
+ return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
6781
+ type: "button",
6782
+ size: "sm",
6783
+ variant: "ghost",
6784
+ onClick: onCopy
6785
+ }, copied ? t("panels.market.askAgentCopied") : label);
6786
+ }
6787
+ //#endregion
6366
6788
  //#region src/app/layouts/rightbar/market-section.tsx
6367
6789
  var dangerActions = [
6368
6790
  "uninstall",
@@ -6433,13 +6855,14 @@ function MarketLineStatus({ t, row, quiet }) {
6433
6855
  "aria-hidden": "true"
6434
6856
  }, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, noteText)));
6435
6857
  }
6436
- function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy }) {
6858
+ function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy, onRecheck, rechecking }) {
6437
6859
  const running = pending !== null && pending.id === row.id ? pending : null;
6438
6860
  const locked = pending !== null;
6439
6861
  const [migrationOpen, setMigrationOpen] = (0, react.useState)(false);
6440
6862
  const [dismissOpen, setDismissOpen] = (0, react.useState)(false);
6441
6863
  const quiet = row.workbench === true && row.state === "installed" && row.hint === void 0;
6442
6864
  const actions = marketActions$1(row);
6865
+ const asksAgent = marketAsksAgent(row);
6443
6866
  const switchLocked = marketSwitchLocked(row);
6444
6867
  return /* @__PURE__ */ (0, react.createElement)("li", { className: MarketPage_module_default.marketRow }, /* @__PURE__ */ (0, react.createElement)("span", {
6445
6868
  className: MarketPage_module_default.marketIcon,
@@ -6451,7 +6874,11 @@ function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy }) {
6451
6874
  t,
6452
6875
  row,
6453
6876
  quiet
6454
- })), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => {
6877
+ })), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }), t(PROGRESS_KEY[running.action])) : actions.length === 0 && !asksAgent ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketActions }, asksAgent ? /* @__PURE__ */ (0, react.createElement)(AskAgentButton, {
6878
+ t,
6879
+ text: askAgentText(row, t),
6880
+ label: t("panels.market.askAgent")
6881
+ }) : null, actions.map((action) => {
6455
6882
  const danger = dangerActions.includes(action);
6456
6883
  const update = updateActions.includes(action);
6457
6884
  return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
@@ -6474,7 +6901,12 @@ function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy }) {
6474
6901
  disabled: boardBusy === true || locked || switchLocked,
6475
6902
  label: `${marketRowTitle(row, t)} · ${t("panels.market.defaultLabel")}`,
6476
6903
  onChange: (next) => onDefault?.(next)
6477
- })))), failure === null ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailure }, failure), /* @__PURE__ */ (0, react.createElement)(MarketLineDialogs, {
6904
+ })))), failure === null ? null : failure.failure === void 0 ? /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailure }, failure.message) : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailureSeat }, /* @__PURE__ */ (0, react.createElement)(FailureCard, {
6905
+ t,
6906
+ failure: failure.failure,
6907
+ onRecheck,
6908
+ rechecking
6909
+ })), /* @__PURE__ */ (0, react.createElement)(MarketLineDialogs, {
6478
6910
  t,
6479
6911
  migrationOpen,
6480
6912
  dismissOpen,
@@ -6490,7 +6922,7 @@ function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy }) {
6490
6922
  }
6491
6923
  }));
6492
6924
  }
6493
- function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confirmActions, onConfirming, onDefault, boardBusy, headAction, keepHead }) {
6925
+ function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confirmActions, onConfirming, onDefault, boardBusy, headAction, keepHead, onRecheck, rechecking }) {
6494
6926
  if (rows.length === 0 && keepHead !== true) return null;
6495
6927
  return /* @__PURE__ */ (0, react.createElement)("section", { className: MarketPage_module_default.marketSection }, titleKey === void 0 ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketSectionHead }, /* @__PURE__ */ (0, react.createElement)("span", {
6496
6928
  className: MarketPage_module_default.marketSectionIcon,
@@ -6503,7 +6935,9 @@ function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confi
6503
6935
  failure: failureOf(row.id),
6504
6936
  onAct: (action) => confirmActions.includes(action) ? onConfirming(row.id) : void act(row.id, action),
6505
6937
  onDefault: (next) => onDefault?.(row.id, next),
6506
- boardBusy
6938
+ boardBusy,
6939
+ onRecheck,
6940
+ rechecking
6507
6941
  }))));
6508
6942
  }
6509
6943
  //#endregion
@@ -6736,6 +7170,14 @@ function changeFailure(change, t) {
6736
7170
  if (change === void 0 || SHIPPED$1.includes(change.application)) return void 0;
6737
7171
  return failureReason(failureCode(change), change.application, t);
6738
7172
  }
7173
+ function appliedUnitsOf(value) {
7174
+ if (changeOf(value)?.application !== "applied") return [];
7175
+ const module = value?.module;
7176
+ if (typeof module !== "object" || module === null) return [];
7177
+ const record = module;
7178
+ if (record.kind !== "module") return [];
7179
+ return typeof record.unit === "string" && record.unit !== "" ? [record.unit] : [];
7180
+ }
6739
7181
  //#endregion
6740
7182
  //#region src/app/layouts/rightbar/market-update-verdict.ts
6741
7183
  function updateVerdictOf(input) {
@@ -6850,7 +7292,8 @@ function marketActOf(options) {
6850
7292
  seats.setHeld(void 0);
6851
7293
  seats.setFailed({
6852
7294
  id,
6853
- message: t("panels.market.failed", { reason: outcome.message })
7295
+ message: t("panels.market.failed", { reason: outcome.message }),
7296
+ ...outcome.failure === void 0 ? {} : { failure: outcome.failure }
6854
7297
  });
6855
7298
  return;
6856
7299
  }
@@ -6981,8 +7424,18 @@ var market_check_module_default = {
6981
7424
  };
6982
7425
  //#endregion
6983
7426
  //#region src/app/layouts/market/market-check.tsx
6984
- function MarketCheck({ t, checkedAt, checking, failed, disabled, onCheck }) {
6985
- const status = checking ? t("panels.market.checkingNow") : failed ? t("panels.market.checkFailed") : checkedAt === null ? null : t("panels.market.checkedAt", { time: checkedAgo(checkedAt, t) });
7427
+ function MarketCheck({ t, checkedAt, latestCheck = {
7428
+ checked: 0,
7429
+ unknown: 0
7430
+ }, checking, failed, disabled, onCheck }) {
7431
+ const parts = [];
7432
+ if (checking) parts.push(t("panels.market.checkingNow"));
7433
+ else {
7434
+ if (latestCheck.checked > 0 && checkedAt !== null) parts.push(t("panels.market.checkedAt", { time: checkedAgo(checkedAt, t) }));
7435
+ if (failed) parts.push(t("panels.market.checkFailed"));
7436
+ else if (latestCheck.unknown > 0) parts.push(t("panels.market.latestPartial", { n: String(latestCheck.unknown) }));
7437
+ }
7438
+ const status = parts.length === 0 ? null : parts.join(" · ");
6986
7439
  return /* @__PURE__ */ (0, react.createElement)("span", { className: market_check_module_default.check }, status === null ? null : /* @__PURE__ */ (0, react.createElement)("span", {
6987
7440
  className: market_check_module_default.status,
6988
7441
  "aria-live": "polite"
@@ -7018,6 +7471,7 @@ var CONFIRM_UNINSTALL = [
7018
7471
  "uninstall-plugin"
7019
7472
  ];
7020
7473
  var NO_ROWS = [];
7474
+ var NO_UNITS$1 = /* @__PURE__ */ new Set();
7021
7475
  function ConfirmUninstall({ t, name, onConfirm, onCancel }) {
7022
7476
  const [acknowledged, setAcknowledged] = (0, react.useState)(false);
7023
7477
  return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
@@ -7034,8 +7488,8 @@ function ConfirmUninstall({ t, name, onConfirm, onCancel }) {
7034
7488
  onConfirm
7035
7489
  });
7036
7490
  }
7037
- function MarketBody({ t, self, shown, pluginList, installedList, shared, pending, failed, notice, act, onConfirming, setDefault, boardBusy, check }) {
7038
- const failureOf = (id) => failed?.id === id ? failed.message : null;
7491
+ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending, failed, notice, act, onConfirming, setDefault, boardBusy, check, onRecheck, rechecking }) {
7492
+ const failureOf = (id) => failed?.id === id ? failed : null;
7039
7493
  const foot = marketFootVisible(shown, installedList);
7040
7494
  const sections = marketSections(marketOrder([...shown, ...installedList], (row) => marketRowTitle(row, t)));
7041
7495
  const installed = sections.find((section) => section.id === "installed");
@@ -7049,7 +7503,9 @@ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending
7049
7503
  failureOf,
7050
7504
  act,
7051
7505
  confirmActions: CONFIRM_UNINSTALL,
7052
- onConfirming
7506
+ onConfirming,
7507
+ onRecheck,
7508
+ rechecking
7053
7509
  }), self === void 0 ? null : /* @__PURE__ */ (0, react.createElement)("div", {
7054
7510
  className: MarketPage_module_default.marketSelfDivider,
7055
7511
  "aria-hidden": "true"
@@ -7066,7 +7522,9 @@ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending
7066
7522
  failureOf,
7067
7523
  act,
7068
7524
  confirmActions: CONFIRM_UNINSTALL,
7069
- onConfirming
7525
+ onConfirming,
7526
+ onRecheck,
7527
+ rechecking
7070
7528
  }), pendingSection === void 0 ? null : /* @__PURE__ */ (0, react.createElement)(MarketSection, {
7071
7529
  t,
7072
7530
  titleKey: pendingSection.titleKey,
@@ -7078,7 +7536,9 @@ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending
7078
7536
  failureOf,
7079
7537
  act,
7080
7538
  confirmActions: CONFIRM_UNINSTALL,
7081
- onConfirming
7539
+ onConfirming,
7540
+ onRecheck,
7541
+ rechecking
7082
7542
  }), /* @__PURE__ */ (0, react.createElement)(MarketSection, {
7083
7543
  t,
7084
7544
  titleKey: "panels.market.sectionPlugins",
@@ -7091,7 +7551,9 @@ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending
7091
7551
  failureOf,
7092
7552
  act,
7093
7553
  confirmActions: CONFIRM_UNINSTALL,
7094
- onConfirming
7554
+ onConfirming,
7555
+ onRecheck,
7556
+ rechecking
7095
7557
  }), foot ? /* @__PURE__ */ (0, react.createElement)(PanelFoot, {
7096
7558
  size: "md",
7097
7559
  text: t("panels.market.foot")
@@ -7100,11 +7562,13 @@ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending
7100
7562
  rows: shared,
7101
7563
  pending,
7102
7564
  failureOf,
7103
- act
7565
+ act,
7566
+ onRecheck,
7567
+ rechecking
7104
7568
  }));
7105
7569
  }
7106
7570
  function useMarketScene(input) {
7107
- const { t, titleOf, manifests, installable, capabilities, updates, installed, settling, mock, defaults, changed, pending, failed } = input;
7571
+ const { t, titleOf, manifests, installable, capabilities, updates, installed, settling, installing, mock, defaults, changed, pending, failed } = input;
7108
7572
  const names = marketNamesOf(t, installed ?? [], titleOf, mock !== void 0);
7109
7573
  const catalog = mock?.manifests ?? manifests;
7110
7574
  const marketable = mock === void 0 ? marketCatalog(manifests, installable) : catalog;
@@ -7112,7 +7576,10 @@ function useMarketScene(input) {
7112
7576
  const source = liveManifests(marketable, effective, installedIdSet(mock === void 0 ? installed : void 0));
7113
7577
  const byDefault = new Set(defaults);
7114
7578
  const updateMap = mock?.updates ?? updates ?? {};
7115
- const rows = marketRows(source, effective, updateMap, byDefault, changed);
7579
+ const rows = checkingRows(marketRows(source, effective, updateMap, byDefault, changed), {
7580
+ all: installing,
7581
+ units: settling ?? NO_UNITS$1
7582
+ });
7116
7583
  const shared = sharedRows(source, effective);
7117
7584
  const removing = removingIdOf(pending, failed);
7118
7585
  const steady = useHeldRow(pending, (id) => catalog.some((manifest) => manifest.id === id));
@@ -7133,7 +7600,7 @@ function useMarketScene(input) {
7133
7600
  busyId
7134
7601
  };
7135
7602
  }
7136
- function MarketView({ t, titleOf, manifests, installable, capabilities, freshness, onChanged, onPending, updates, updatesCheckedAt = null, updatesFailed = false, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
7603
+ function MarketView({ t, titleOf, manifests, installable, capabilities, freshness, onChanged, onPending, updates, updatesCheckedAt = null, updatesFailed = false, installed, installedRead, workbench, selfUpdate, plugins, settling, installing = false, mock, defaults = [], changed = {} }) {
7137
7604
  const { pending, setPending, confirming, setConfirming, failed, setFailed, notice, setNotice } = useMarketTransient({
7138
7605
  mock,
7139
7606
  onPending
@@ -7147,6 +7614,7 @@ function MarketView({ t, titleOf, manifests, installable, capabilities, freshnes
7147
7614
  updates,
7148
7615
  installed,
7149
7616
  settling,
7617
+ installing,
7150
7618
  mock,
7151
7619
  defaults,
7152
7620
  changed,
@@ -7213,9 +7681,15 @@ function MarketView({ t, titleOf, manifests, installable, capabilities, freshnes
7213
7681
  const settled = marketSettled(freshness, installedRead);
7214
7682
  const nothing = shown.length === 0 && self === void 0 && installedList.length === 0 && pluginList.length === 0;
7215
7683
  const { busy: checkingShown } = useVisibleBusy(freshness.checking, 500);
7684
+ const recheck = () => {
7685
+ setFailed(null);
7686
+ if (mock === void 0) onChanged({ force: true });
7687
+ };
7688
+ const latestCheck = latestCheckSummary(mock?.installed ?? installed);
7216
7689
  const check = /* @__PURE__ */ (0, react.createElement)(MarketCheck, {
7217
7690
  t,
7218
7691
  checkedAt: updatesCheckedAt,
7692
+ latestCheck,
7219
7693
  checking: checkingShown,
7220
7694
  failed: updatesFailed,
7221
7695
  disabled: pending !== null,
@@ -7237,7 +7711,9 @@ function MarketView({ t, titleOf, manifests, installable, capabilities, freshnes
7237
7711
  onConfirming: setConfirming,
7238
7712
  setDefault,
7239
7713
  boardBusy,
7240
- check
7714
+ check,
7715
+ onRecheck: recheck,
7716
+ rechecking: checkingShown
7241
7717
  }), /* @__PURE__ */ (0, react.createElement)(UninstallConfirm, {
7242
7718
  t,
7243
7719
  confirming,
@@ -8570,6 +9046,8 @@ function useDiscover(t, active, onInstalled) {
8570
9046
  const [addingSource, setAddingSource] = (0, react.useState)(false);
8571
9047
  const [pendingSourceId, setPendingSourceId] = (0, react.useState)(null);
8572
9048
  const [knownSources, setKnownSources] = (0, react.useState)(null);
9049
+ const [installToken] = (0, react.useState)(() => `market-install:${globalThis.crypto.randomUUID()}`);
9050
+ usePublishMarketInstalling(installToken, installing !== null);
8573
9051
  const loaded = (0, react.useRef)(false);
8574
9052
  const loadTicket = (0, react.useRef)(0);
8575
9053
  const sourceTicket = (0, react.useRef)(0);
@@ -8822,6 +9300,7 @@ function useDiscover(t, active, onInstalled) {
8822
9300
  ...target.registry === void 0 ? {} : { registry: target.registry }
8823
9301
  }).then((outcome) => {
8824
9302
  if (!outcome.ok) return;
9303
+ publishMarketApplied(appliedUnitsOf(outcome.value));
8825
9304
  const verdict = installVerdictOf(outcome.value, t);
8826
9305
  if (verdict.kind === "failed") {
8827
9306
  provision.fail(verdict.text);
@@ -9832,18 +10311,79 @@ function AddModuleResult({ t, state }) {
9832
10311
  }, t("panels.market.add.failed", { reason })) : kind === "restart" ? /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("p", { className: AddModule_module_default.resultWarn }, t("panels.market.add.doneRestart")), why === void 0 ? null : /* @__PURE__ */ (0, react.createElement)("p", { className: AddModule_module_default.resultMeta }, why)) : kind === "quiet" ? null : /* @__PURE__ */ (0, react.createElement)("p", { className: AddModule_module_default.result }, t("panels.market.add.tookEffect")), builds.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: AddModule_module_default.approval }, /* @__PURE__ */ (0, react.createElement)("p", { className: AddModule_module_default.approvalTitle }, t("panels.market.add.approveTitle")), /* @__PURE__ */ (0, react.createElement)("p", { className: AddModule_module_default.approvalText }, t("panels.market.add.approveHint", { packages: builds.join("、") })), /* @__PURE__ */ (0, react.createElement)("p", { className: AddModule_module_default.approvalCaution }, t("panels.market.add.approveCaution"))), supply === void 0 || outcome.supply.state !== "failed" && (kind === "failed" || kind === "cancelled") ? null : /* @__PURE__ */ (0, react.createElement)("p", { className: supplyTone(outcome.supply.state) }, t(supply, { reason: outcome.supply.reason ?? "" })), state.failure === null ? null : /* @__PURE__ */ (0, react.createElement)("p", { className: AddModule_module_default.problem }, state.failure), outcome.change.errorDetail === void 0 ? null : /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("p", { className: AddModule_module_default.detailLabel }, t("panels.market.add.details")), /* @__PURE__ */ (0, react.createElement)("p", { className: AddModule_module_default.detail }, outcome.change.errorDetail)));
9833
10312
  }
9834
10313
  //#endregion
10314
+ //#region src/app/layouts/market/add-module-registry-prefs.ts
10315
+ var DEFAULT_REGISTRY_CHOICE = {
10316
+ kind: "default",
10317
+ value: ""
10318
+ };
10319
+ function isRegistryKind(value) {
10320
+ return value === "default" || value === "url" || value === "custom";
10321
+ }
10322
+ function parseRegistryChoice(raw) {
10323
+ if (raw === null) return DEFAULT_REGISTRY_CHOICE;
10324
+ let value;
10325
+ try {
10326
+ value = JSON.parse(raw);
10327
+ } catch {
10328
+ return DEFAULT_REGISTRY_CHOICE;
10329
+ }
10330
+ if (typeof value !== "object" || value === null) return DEFAULT_REGISTRY_CHOICE;
10331
+ const record = value;
10332
+ if (!isRegistryKind(record.kind)) return DEFAULT_REGISTRY_CHOICE;
10333
+ if (record.kind === "default") return DEFAULT_REGISTRY_CHOICE;
10334
+ if (record.kind === "custom") return {
10335
+ kind: "custom",
10336
+ value: ""
10337
+ };
10338
+ if (typeof record.value !== "string" || !customRegistryAllowed(record.value)) return DEFAULT_REGISTRY_CHOICE;
10339
+ return {
10340
+ kind: "url",
10341
+ value: record.value.trim()
10342
+ };
10343
+ }
10344
+ function readRegistryPrefs() {
10345
+ const custom = readText(STORAGE_KEY_MARKET_REGISTRY_CUSTOM);
10346
+ return {
10347
+ choice: parseRegistryChoice(readText(STORAGE_KEY_MARKET_REGISTRY)),
10348
+ custom: custom === null ? "" : custom.trim()
10349
+ };
10350
+ }
10351
+ function writeRegistryChoice(choice) {
10352
+ if (choice.kind === "custom") {
10353
+ writeText(STORAGE_KEY_MARKET_REGISTRY, JSON.stringify({
10354
+ kind: "custom",
10355
+ value: ""
10356
+ }));
10357
+ return;
10358
+ }
10359
+ if (choice.kind === "url" && customRegistryAllowed(choice.value)) {
10360
+ writeText(STORAGE_KEY_MARKET_REGISTRY, JSON.stringify({
10361
+ kind: "url",
10362
+ value: choice.value.trim()
10363
+ }));
10364
+ return;
10365
+ }
10366
+ writeText(STORAGE_KEY_MARKET_REGISTRY, JSON.stringify(DEFAULT_REGISTRY_CHOICE));
10367
+ }
10368
+ function writeRegistryCustom(value) {
10369
+ const text = value.trim();
10370
+ writeText(STORAGE_KEY_MARKET_REGISTRY_CUSTOM, text === "" ? null : text);
10371
+ }
10372
+ function reconcileRegistryChoice(choice, choices) {
10373
+ if (choice.kind !== "url") return choice;
10374
+ return choices.some((option) => option.choice.kind === "url" && option.choice.value === choice.value) ? choice : DEFAULT_REGISTRY_CHOICE;
10375
+ }
10376
+ //#endregion
9835
10377
  //#region src/app/layouts/market/use-add-module.ts
9836
10378
  function newRequestId() {
9837
10379
  return crypto.randomUUID();
9838
10380
  }
9839
10381
  function useAddModule(options) {
9840
10382
  const { onInstalled, failedText } = options;
10383
+ const [prefs] = (0, react.useState)(readRegistryPrefs);
9841
10384
  const [spec, setSpec] = (0, react.useState)("");
9842
- const [choice, setChoice] = (0, react.useState)({
9843
- kind: "default",
9844
- value: ""
9845
- });
9846
- const [custom, setCustom] = (0, react.useState)("");
10385
+ const [choice, setChoice] = (0, react.useState)(prefs.choice);
10386
+ const [custom, setCustom] = (0, react.useState)(prefs.custom);
9847
10387
  const [registryOpen, setRegistryOpen] = (0, react.useState)(false);
9848
10388
  const [guideOpen, setGuideOpen] = (0, react.useState)(false);
9849
10389
  const [phase, setPhase] = (0, react.useState)("idle");
@@ -9855,6 +10395,8 @@ function useAddModule(options) {
9855
10395
  const generationRef = (0, react.useRef)(0);
9856
10396
  const requestIdRef = (0, react.useRef)("");
9857
10397
  const { busy: classifying } = useVisibleBusy(phase === "inspecting", 500);
10398
+ const [installToken] = (0, react.useState)(() => `market-install:${newRequestId()}`);
10399
+ usePublishMarketInstalling(installToken, phase === "installing");
9858
10400
  const write = useHostWrite({
9859
10401
  channel: "provision",
9860
10402
  networkText: failedText
@@ -9871,7 +10413,9 @@ function useAddModule(options) {
9871
10413
  let alive = true;
9872
10414
  readBundleRegistries().then((response) => {
9873
10415
  if (!alive) return;
9874
- setChoices(registryOptions(response.ok ? response.registries : null));
10416
+ const options = registryOptions(response.ok ? response.registries : null);
10417
+ setChoices(options);
10418
+ setChoice((previous) => reconcileRegistryChoice(previous, options));
9875
10419
  });
9876
10420
  return () => {
9877
10421
  alive = false;
@@ -9938,6 +10482,7 @@ function useAddModule(options) {
9938
10482
  supply: value.supply,
9939
10483
  ...value.plugin === void 0 ? {} : { plugin: value.plugin }
9940
10484
  });
10485
+ publishMarketApplied(appliedUnitsOf(value));
9941
10486
  setPhase("result");
9942
10487
  if (value.change.application === "applied" || value.change.application === "restart-required") onInstalled();
9943
10488
  });
@@ -9982,6 +10527,14 @@ function useAddModule(options) {
9982
10527
  setPreview(null);
9983
10528
  setPhase("idle");
9984
10529
  }, []);
10530
+ const choose = (0, react.useCallback)((next) => {
10531
+ setChoice(next);
10532
+ writeRegistryChoice(next);
10533
+ }, []);
10534
+ const chooseCustom = (0, react.useCallback)((value) => {
10535
+ setCustom(value);
10536
+ writeRegistryCustom(value);
10537
+ }, []);
9985
10538
  return {
9986
10539
  spec,
9987
10540
  choice,
@@ -9997,10 +10550,8 @@ function useAddModule(options) {
9997
10550
  removing,
9998
10551
  builds: outcome?.change.pendingBuilds ?? [],
9999
10552
  setSpec,
10000
- setChoice: (0, react.useCallback)((next) => {
10001
- setChoice(next);
10002
- }, []),
10003
- setCustom,
10553
+ setChoice: choose,
10554
+ setCustom: chooseCustom,
10004
10555
  toggleRegistry: (0, react.useCallback)(() => setRegistryOpen((value) => !value), []),
10005
10556
  closeRegistry: (0, react.useCallback)(() => setRegistryOpen(false), []),
10006
10557
  toggleGuide: (0, react.useCallback)(() => setGuideOpen((value) => !value), []),
@@ -10149,7 +10700,8 @@ function makeMarketEntryIcon(units) {
10149
10700
  installed: modules === null ? void 0 : withClientRefusals(modules, units.refusals()),
10150
10701
  plugins,
10151
10702
  workbench,
10152
- busy: useMarketBusy()
10703
+ busy: useMarketBusy(),
10704
+ ...useMarketInstallState()
10153
10705
  });
10154
10706
  (0, react.useEffect)(() => {
10155
10707
  publishPanelHint(MARKET_PANEL_ID, hint);
@@ -10166,6 +10718,7 @@ function MarketPanel({ t, units, titleOf }) {
10166
10718
  const { capabilities, checkedAt, checking, forceProbe, reload: reloadCapability } = useCapabilityMap(0);
10167
10719
  const { modules, plugins, workbench, selfUpdate, checking: versionsChecking, failed: versionsFailed, checkedAt: versionsCheckedAt, read: installedRead, reload: reloadVersions } = useModuleVersions();
10168
10720
  const machineBoard = useEnabledUnits(0, null);
10721
+ const install = useMarketInstallState();
10169
10722
  const [adding, setAdding] = (0, react.useState)(false);
10170
10723
  const [acting, setActing] = (0, react.useState)(false);
10171
10724
  const [tab, setTab] = (0, react.useState)("installed");
@@ -10208,6 +10761,7 @@ function MarketPanel({ t, units, titleOf }) {
10208
10761
  reloadVersions
10209
10762
  ]);
10210
10763
  const settling = useSettlingModules((installed ?? []).map((module) => module.unit).join("|"), manifests.map((manifest) => manifest.id).join("|"), Object.keys(capabilities ?? {}).join("|"));
10764
+ const held = install.applied.size === 0 ? settling : /* @__PURE__ */ new Set([...settling, ...install.applied]);
10211
10765
  const freshness = {
10212
10766
  loaded: capabilities !== null,
10213
10767
  checking: checking || versionsChecking,
@@ -10254,7 +10808,8 @@ function MarketPanel({ t, units, titleOf }) {
10254
10808
  workbench,
10255
10809
  selfUpdate,
10256
10810
  plugins,
10257
- settling: mock === void 0 ? settling : void 0,
10811
+ settling: mock === void 0 ? held : void 0,
10812
+ installing: mock === void 0 ? install.installing : false,
10258
10813
  mock,
10259
10814
  defaults: machineBoard?.defaults ?? [],
10260
10815
  changed: machineBoard?.changed ?? {}
@@ -11741,6 +12296,7 @@ function createClientUnitRegistry(options = {}) {
11741
12296
  return manifestsCache;
11742
12297
  },
11743
12298
  refusals: () => refusals,
12299
+ declared: () => [...known.values()],
11744
12300
  installable: () => installableIds,
11745
12301
  setManifests(manifests, installable) {
11746
12302
  known = new Map(manifests.map((manifest) => [manifest.id, manifest]));
@@ -12685,6 +13241,45 @@ function MarketSourceApprovalSeat({ tool, args, t }) {
12685
13241
  }, []);
12686
13242
  return (0, react.createElement)(ApprovalPlan, { rows: marketSourceRows(tool, args, payload, t) });
12687
13243
  }
13244
+ function pluginToolIndexOf(manifests) {
13245
+ const index = /* @__PURE__ */ new Map();
13246
+ for (const manifest of manifests) for (const tool of manifest.tools) {
13247
+ if (tool.opencli === void 0) continue;
13248
+ index.set(tool.name, tool.opencli);
13249
+ }
13250
+ return index;
13251
+ }
13252
+ function argText(value) {
13253
+ if (typeof value === "string") return value;
13254
+ if (typeof value === "number" || typeof value === "boolean") return String(value);
13255
+ const text = JSON.stringify(value);
13256
+ return text === void 0 ? String(value) : text;
13257
+ }
13258
+ function pluginApprovalRows(origin, args, t) {
13259
+ const rows = [{
13260
+ label: t("approval.plugin.name"),
13261
+ value: origin.plugin
13262
+ }, {
13263
+ label: t("approval.plugin.command"),
13264
+ value: origin.command
13265
+ }];
13266
+ const note = args[APPROVAL_NOTE_ARG];
13267
+ if (typeof note === "string" && note.trim() !== "") rows.push({
13268
+ label: t("approval.plugin.note"),
13269
+ value: note.replace(/\s+/g, " ").trim()
13270
+ });
13271
+ for (const name of origin.args) {
13272
+ if (!(name in args)) continue;
13273
+ rows.push({
13274
+ label: name,
13275
+ value: argText(args[name])
13276
+ });
13277
+ }
13278
+ return rows;
13279
+ }
13280
+ function shellApprovalRenderer(manifests) {
13281
+ return (input, t) => shellApprovalDetail(input, t, pluginToolIndexOf(manifests()));
13282
+ }
12688
13283
  function shellClaimsApprovalDetail(tool) {
12689
13284
  return ALL_TOOLS.includes(tool);
12690
13285
  }
@@ -12696,7 +13291,9 @@ function stopApprovalRows(args, t) {
12696
13291
  value: `${unit === "" ? "<unit>" : unit} · ${id === "" ? "<id>" : id}`
12697
13292
  }];
12698
13293
  }
12699
- function shellApprovalPlan(input, t) {
13294
+ function shellApprovalPlan(input, t, pluginTools) {
13295
+ const origin = pluginTools?.get(input.tool);
13296
+ if (origin !== void 0) return { rows: pluginApprovalRows(origin, input.args, t) };
12700
13297
  if (input.tool === "workbench_diy_record_prepare") return {
12701
13298
  rows: recordApprovalRows(input.args, t),
12702
13299
  warn: t("approval.record.noSwitch")
@@ -12707,7 +13304,7 @@ function shellApprovalPlan(input, t) {
12707
13304
  };
12708
13305
  return shellClaimsApprovalDetail(input.tool) ? { rows: [] } : void 0;
12709
13306
  }
12710
- function shellApprovalDetail(input, t) {
13307
+ function shellApprovalDetail(input, t, pluginTools) {
12711
13308
  if (input.tool === "workbench_diy_publish") return (0, react.createElement)(PublishApprovalSeat, {
12712
13309
  args: input.args,
12713
13310
  t
@@ -12717,7 +13314,7 @@ function shellApprovalDetail(input, t) {
12717
13314
  args: input.args,
12718
13315
  t
12719
13316
  });
12720
- const plan = shellApprovalPlan(input, t);
13317
+ const plan = shellApprovalPlan(input, t, pluginTools);
12721
13318
  if (plan === void 0) return void 0;
12722
13319
  if (plan.rows.length === 0) return (0, react.createElement)(react.Fragment, null);
12723
13320
  return /* @__PURE__ */ (0, react.createElement)(ApprovalPlan, {
@@ -13067,6 +13664,10 @@ function Breadcrumbs({ trail, onGoTo, titleKeyOf, t }) {
13067
13664
  }, /* @__PURE__ */ (0, react.createElement)("span", { className: Breadcrumbs_module_default.tabTitle }, stepLabel(step, titleKeyOf, t))));
13068
13665
  }));
13069
13666
  }
13667
+ var BoardEmpty_module_default = {
13668
+ actions: "_actions_smeq7_1",
13669
+ action: "_action_smeq7_1"
13670
+ };
13070
13671
  //#endregion
13071
13672
  //#region src/app/layouts/rightbar/BoardEmpty.tsx
13072
13673
  function BoardEmpty({ t, onBuildModule, onOpenModules, onOpenMarket }) {
@@ -13074,20 +13675,23 @@ function BoardEmpty({ t, onBuildModule, onOpenModules, onOpenMarket }) {
13074
13675
  icon: /* @__PURE__ */ (0, react.createElement)(IconBrandMark, { size: 32 }),
13075
13676
  title: t("panels.empty"),
13076
13677
  hint: t("panels.emptyHint"),
13077
- action: /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
13678
+ action: /* @__PURE__ */ (0, react.createElement)("div", { className: BoardEmpty_module_default.actions }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
13078
13679
  type: "button",
13079
13680
  size: "sm",
13080
13681
  variant: "primary",
13682
+ className: BoardEmpty_module_default.action,
13081
13683
  onClick: onBuildModule
13082
13684
  }, t("panels.buildModule")), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
13083
13685
  type: "button",
13084
13686
  size: "sm",
13085
13687
  variant: "toolbar",
13688
+ className: BoardEmpty_module_default.action,
13086
13689
  onClick: onOpenModules
13087
13690
  }, t("panels.choose")), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
13088
13691
  type: "button",
13089
13692
  size: "sm",
13090
13693
  variant: "toolbar",
13694
+ className: BoardEmpty_module_default.action,
13091
13695
  onClick: onOpenMarket
13092
13696
  }, t("panels.browseMarket")))
13093
13697
  });
@@ -15630,7 +16234,7 @@ function messagesOf(units) {
15630
16234
  ...face.messages === void 0 ? {} : { messages: face.messages }
15631
16235
  }));
15632
16236
  }
15633
- var COMPONENT_CSS_MARKER = ".wb-activityBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding-top: var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n.wb-activityBlock:first-child {\n padding-top: 0;\n border-top: none;\n}\n\n.wb-activityBlockHead {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8);\n}\n\n.wb-activityLine {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-activityLineText {\n flex: none;\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n max-height: var(--wb-len-72);\n overflow-y: auto;\n}\n\n.wb-activityLineAt {\n flex: none;\n margin-left: auto;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-16);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-activityLine > .wb-activityLineAt,\n.wb-activityLine > .wb-activityLineActions {\n margin-left: auto;\n}\n\n.wb-activityLine > .wb-activityLineAt + .wb-activityLineActions {\n margin-left: 0;\n}\n\n.wb-activityLineActions {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n.wb-activityActionFailed {\n color: var(--dsw-alias-state-error-primary);\n}\n.wb-note {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-problem {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalCommand {\n max-width: 100%;\n}\n.wb-approvalPlan {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-approvalHint {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n.wb-approvalRows {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n}\n.wb-approvalRow {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n.wb-approvalLabel {\n flex: none;\n width: var(--wb-len-56);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-approvalValue {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalWarn {\n color: var(--dsw-alias-label-secondary);\n}\n.wb-cardHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-8) var(--wb-card-gutter);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-cardTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-cardMeta {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-cardMeta::before {\n content: '\\00b7';\n margin-right: var(--wb-len-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen ~ .wb-cardRefresh {\n margin-left: 0;\n}\n\n.wb-cardOpen:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh {\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardRefresh:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-cardGear {\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-3);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardGear:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n.wb-card {\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-bg-layer-1);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n flex: none;\n}\n.wb-cardBody {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-card-gutter);\n font-size: var(--dsw-font-xxs-12-font-size);\n}\n.wb-cardBleed {\n margin-inline: calc(-1 * var(--wb-card-gutter));\n}\n._anchor_yq4s2_1 {\n display: contents;\n}\n.wb-spinner {\n display: inline-flex;\n align-items: center;\n flex: none;\n}\n.wb-choiceMenu {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n background: transparent;\n}\n\n.wb-choiceMenu[data-variant='boxed'] {\n padding: var(--wb-len-4);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-choiceOption {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: pointer;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-choiceOptionOn {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-checkbox {\n position: absolute;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n.wb-checkboxBox {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xs);\n corner-shape: round;\n color: var(--dsw-alias-label-primary-foreground);\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-choiceOption:hover .wb-checkboxBox {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-checkbox:checked + .wb-checkboxBox {\n border-color: var(--dsw-alias-brand-primary);\n background: var(--dsw-alias-brand-primary);\n}\n\n.wb-checkbox:disabled + .wb-checkboxBox {\n cursor: default;\n}\n\n.wb-checkbox:focus-visible + .wb-checkboxBox {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n.wb-choiceOption:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-choiceOption:has(:disabled) {\n cursor: default;\n opacity: 0.5;\n}\n\n.wb-choiceOption:has(:disabled),\n.wb-choiceOption:has(:disabled):hover {\n background: transparent;\n}\n\n.wb-choiceLabel {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.wb-choiceLabelText {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceLabel:has(.wb-choiceDescription) .wb-choiceLabelText {\n overflow: visible;\n white-space: normal;\n overflow-wrap: anywhere;\n}\n\n.wb-choiceDescription {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n.wb-choiceLoading {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-choiceLoadingText {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceEmpty {\n display: flex;\n align-items: center;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio {\n appearance: none;\n -webkit-appearance: none;\n flex: none;\n box-sizing: border-box;\n width: var(--wb-len-12);\n height: var(--wb-len-12);\n margin: 0;\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: 50%;\n corner-shape: round;\n background-color: transparent;\n cursor: pointer;\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-radio:not(:checked):hover {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio:checked {\n border-color: var(--dsw-alias-brand-primary);\n background-image: radial-gradient(\n circle at center,\n var(--dsw-alias-brand-primary) 0 3px,\n transparent 3px\n );\n}\n\n.wb-radio:disabled {\n cursor: default;\n}\n\n.wb-radio:focus-visible {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n.wb-formActions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n}\n\n.wb-formActionDanger {\n color: var(--dsw-alias-state-error-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent);\n}\n.wb-rows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n}\n.wb-rows > :not(.wb-row) {\n grid-column: 1 / -1;\n}\n.wb-row {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: baseline;\n gap: var(--wb-len-8);\n padding: var(--wb-len-4) 0;\n}\n.wb-row + .wb-row {\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n.wb-rowKey {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-rowValue {\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-rows > .wb-row {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-rows > .wb-row {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-confirmBar {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n width: 100%;\n box-sizing: border-box;\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n}\n.wb-confirmBarTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 600;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-confirmBarHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n.wb-field {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n.wb-fieldLabel {\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-fieldHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-field:has(:disabled) .wb-fieldLabel {\n opacity: 0.4;\n}\n.wb-formRows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-12);\n}\n\n.wb-formRows > :not(.wb-formRow) {\n grid-column: 1 / -1;\n}\n\n.wb-formRow {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: center;\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-8);\n}\n\n.wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n align-items: stretch;\n gap: var(--wb-len-6);\n}\n\n.wb-formRows > .wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n}\n\n.wb-formLabel {\n justify-self: start;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: nowrap;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formLabel {\n white-space: normal;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formHint,\n.wb-formRow[data-layout='stacked'] .wb-formProblem {\n grid-column: 1 / -1;\n}\n\n.wb-formControl {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n.wb-formControl\n > :where(\n .wb-selectAnchor,\n .wb-choiceMenu,\n input:not(\n [type='checkbox'],\n [type='radio'],\n [type='button'],\n [type='submit'],\n [type='reset'],\n [type='image'],\n [type='color'],\n [type='range']\n ),\n select,\n textarea\n ) {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n}\n\n.wb-formHint {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-formProblem {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(.wb-formProblem) .wb-formLabel {\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(:disabled) .wb-formLabel {\n opacity: 0.4;\n}\n\n.wb-formRows > .wb-formRow {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-formRows > .wb-formRow {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-form {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n width: 100%;\n}\n:where(.wb-link) {\n margin-left: var(--wb-len-2);\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n white-space: nowrap;\n vertical-align: baseline;\n}\n\n:where(.wb-link:hover) {\n text-decoration: underline;\n}\n\n:where(.wb-link:focus-visible) {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n.wb-longTask {\n padding-top: var(--wb-len-12);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n.wb-longTaskHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n}\n\n.wb-longTaskLink {\n flex: none;\n}\n\n.wb-longTaskHeadline {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-longTaskProblem {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-longTaskDump {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-longTaskDump pre {\n margin: var(--wb-len-4) 0 0;\n max-height: var(--wb-len-220);\n overflow: auto;\n}\n\n.wb-longTaskStop {\n display: inline-flex;\n flex: none;\n align-items: center;\n align-self: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n padding: 0;\n margin-left: auto;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-specific-menu);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n.wb-longTaskStop:hover:not(:disabled),\n.wb-longTaskStop:focus-visible {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStop:disabled {\n cursor: default;\n}\n\n.wb-longTaskStopArmed,\n.wb-longTaskStopArmed:hover:not(:disabled),\n.wb-longTaskStopArmed:focus-visible {\n gap: var(--wb-len-4);\n width: auto;\n padding: 0 var(--wb-len-7);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStopLabel {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n.wb-longTaskStopWhy {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-centered.wb-centeredCompact {\n flex: none;\n min-height: 0;\n gap: var(--wb-len-8);\n padding: var(--wb-len-20) var(--wb-len-16);\n}\n\n.wb-centered.wb-centeredCompact .wb-centeredHero {\n margin-bottom: var(--wb-len-4);\n}\n\n.wb-skeleton {\n display: flex;\n flex-direction: column;\n}\n\n.wb-skeletonRow {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-skeletonRow + .wb-skeletonRow::before {\n content: '';\n align-self: stretch;\n height: var(--wb-len-0-5);\n margin: 0 var(--wb-len-8) var(--wb-len-neg-0-5);\n background: var(--dsw-alias-border-l2);\n}\n\n.wb-skeletonBar {\n display: block;\n height: var(--wb-len-13);\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-bg-skeleton);\n animation: wb-skeleton-pulse var(--wb-dur-1-4) var(--ds-ease-in-out) infinite;\n}\n\n.wb-skeletonBarTitle {\n width: 62%;\n}\n\n.wb-skeletonBarMeta {\n width: 32%;\n height: var(--wb-len-10);\n}\n\n.wb-skeletonRow:nth-child(2n) .wb-skeletonBarTitle {\n width: 74%;\n}\n\n.wb-skeletonRow:nth-child(3n) .wb-skeletonBarTitle {\n width: 52%;\n}\n\n@keyframes wb-skeleton-pulse {\n 50% {\n opacity: 0.45;\n }\n}\n\n.wb-centered {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: var(--wb-len-14);\n flex: 1;\n min-height: var(--wb-len-240);\n padding: 0 var(--wb-len-24) var(--wb-len-24);\n text-align: center;\n}\n\n.wb-centeredHero {\n display: flex;\n margin-bottom: var(--wb-len-16);\n color: var(--dsw-alias-label-dimmed);\n}\n\n.wb-centeredTitle {\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-centeredHint {\n max-width: var(--wb-len-300);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-centeredDetail {\n max-width: var(--wb-len-320);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-dimmed);\n word-break: break-all;\n}\n\n.wb-centeredAction {\n display: flex;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n@media (prefers-reduced-motion: reduce) {\n .wb-skeletonBar {\n animation: none;\n }}\n.wb-textField {\n box-sizing: border-box;\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n outline: none;\n}\n\n.wb-textField:focus {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-textField:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-textField[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-textField[aria-invalid='true']:focus {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n:where(.wb-textField) {\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n}\n:where(.wb-selectTrigger) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n text-align: left;\n cursor: pointer;\n}\n\n.wb-selectTrigger:focus-visible {\n outline: none;\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true']:focus-visible {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-selectLoading:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: none;\n background: transparent;\n font-size: var(--wb-font-row);\n}\n\n.wb-selectGhost:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-selectGhost:focus-visible {\n outline: var(--dsw-focus-ring-width) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n border-color: transparent;\n box-shadow: none;\n}\n\n.wb-selectIconOnly {\n width: var(--wb-len-36);\n height: var(--wb-len-36);\n min-height: 0;\n gap: 0;\n padding: 0;\n justify-content: center;\n}\n\n.wb-selectReveal {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.wb-selectIconOnly .wb-selectIcon {\n width: 100%;\n height: 100%;\n}\n\n.wb-selectAnchor {\n display: block;\n width: 100%;\n}\n\n.wb-selectIcon {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectValue {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n.wb-selectPlaceholder {\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectChevron {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-caption);\n}\n\n.wb-selectMenu {\n min-width: var(--wb-len-240);\n max-width: var(--wb-len-360);\n max-height: min(var(--wb-len-320), calc(100vh - var(--wb-len-24)));\n}\n\n:where(.wb-selectSearch) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n.wb-selectSearch:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectSearch.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: 0.5px solid var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-selectSearch.wb-selectGhost:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: none;\n}\n\n.wb-selectSearchIcon {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-textField.wb-selectSearchInput {\n flex: 1;\n min-width: 0;\n min-height: 0;\n padding: 0;\n border: none;\n background: transparent;\n}\n\n.wb-textField.wb-selectSearchInput:focus {\n box-shadow: none;\n}\n\n.wb-selectFallback {\n width: 100%;\n}\n\n.wb-selectHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\nsection.wb-settings {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-len-16);\n border: 0;\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-settings-card-fill);\n}\n.wb-settingsHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n.wb-settings .wb-settingsTitle {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-strong-14-font-size);\n line-height: var(--wb-line-24);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n.wb-stack {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n min-height: 0;\n}\n.wb-stateBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-stateBlockTitle {\n margin: 0;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n.wb-stateBlockHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-stateBlockActions {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n.wb-stateBlockResolving {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._marketList_yups9_1 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._marketRow_yups9_10 {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n column-gap: var(--wb-len-14);\n row-gap: var(--wb-len-4);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-lg);\n}\n\n._marketIcon_yups9_20 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketMain_yups9_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_yups9_39 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketStatus_yups9_48 {\n display: inline-flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketStateText_yups9_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_yups9_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_yups9_66 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._marketName_yups9_39 ._marketVersion_yups9_72 {\n margin-left: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n}\n\n._marketVersion_yups9_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_yups9_72::before {\n content: '';\n display: inline-block;\n width: var(--wb-len-1);\n height: var(--wb-len-10);\n margin: 0 var(--wb-len-8) 0 var(--wb-len-2);\n vertical-align: -1px;\n background: var(--dsw-alias-border-l2);\n}\n\n._marketLocalTag_yups9_94 {\n margin-left: var(--wb-len-8);\n padding: 0 var(--wb-len-6);\n border: var(--wb-len-1) solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-caption);\n}\n\n._marketEnd_yups9_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_yups9_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_yups9_112::before {\n content: '';\n width: 0;\n height: var(--wb-len-14);\n border-left: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketActions_yups9_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_yups9_131 {\n color: var(--dsw-alias-state-warn-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._marketSelfDivider_yups9_137 {\n height: 0;\n margin-top: calc(0px - var(--wb-len-16));\n border-top: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketSection_yups9_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_yups9_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_yups9_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_yups9_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_yups9_169 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionAction_yups9_175 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n margin-left: auto;\n min-width: 0;\n}\n\n._marketSectionQuiet_yups9_183 ._marketSectionTitle_yups9_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_yups9_183 ._marketName_yups9_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_yups9_183 ._marketIcon_yups9_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._marketProgress_yups9_196 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-height: var(--wb-len-32);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketNote_yups9_206 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-warn-primary);\n overflow-wrap: anywhere;\n}\n\n._marketFailure_yups9_213 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._marketEmpty_yups9_220 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_yups9_225 {\n box-sizing: border-box;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-32);\n padding: 0 clamp(var(--wb-len-24), 4vw, var(--wb-len-48)) var(--wb-len-48);\n overflow-x: hidden;\n overflow-y: auto;\n color: var(--dsw-alias-label-primary);\n}\n\n._marketPage_yups9_225 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_yups9_243 {\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-16);\n padding-top: var(--wb-len-28);\n}\n\n._marketPageTitle_yups9_251 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_yups9_256 {\n margin: var(--wb-len-4) 0 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketPageTools_yups9_262 {\n flex: none;\n align-self: center;\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: var(--wb-len-16);\n}\n\n._marketPanel_yups9_271 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_yups9_271[hidden] {\n display: none;\n}\n\n._marketTabs_yups9_281 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_yups9_286 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketAddButton_yups9_291 {\n height: var(--wb-len-32);\n padding: 0 var(--wb-len-12);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n border-radius: var(--dsw-radius-md);\n}\n\n._marketEmpty_yups9_220 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) var(--wb-len-16);\n text-align: center;\n}\n\n._marketEmptyTitle_yups9_308 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverPage_yups9_313 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_yups9_320 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_yups9_327 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_yups9_333 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_yups9_338 {\n min-width: 0;\n max-width: var(--wb-len-240);\n margin-left: calc(0px - var(--wb-len-8));\n font-weight: 500;\n}\n\n._discoverMarketName_yups9_345 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_yups9_351 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_yups9_356 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_yups9_361 {\n flex: none;\n}\n\n._discoverSearch_yups9_365 {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex: 1 1 var(--wb-len-120);\n min-width: var(--wb-len-120);\n}\n\n._discoverSearchField_yups9_373 {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._discoverSearchFieldFilled_yups9_378 input {\n padding-inline-end: var(--wb-len-20);\n}\n\n._discoverSearchField_yups9_373 input::-webkit-search-cancel-button {\n appearance: none;\n -webkit-appearance: none;\n}\n\n._discoverSearch_yups9_365 ._discoverSearchClear_yups9_387 {\n position: absolute;\n top: 50%;\n inset-inline-end: var(--wb-len-4);\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-tertiary);\n transform: translateY(-50%);\n}\n\n._discoverSearchClear_yups9_387:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_yups9_327 {\n display: grid;\n grid-template-columns: minmax(0, auto) minmax(var(--wb-len-120), 1fr) auto;\n grid-template-areas:\n 'market search refresh'\n 'labels sort sort';\n }\n\n ._discoverMarket_yups9_333 {\n grid-area: market;\n }\n\n ._discoverMarketButton_yups9_338 {\n margin-left: 0;\n }\n\n ._discoverLabels_yups9_351 {\n grid-area: labels;\n }\n\n ._discoverSearch_yups9_365 {\n grid-area: search;\n }\n\n ._discoverSort_yups9_356 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_yups9_361 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_yups9_438 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_yups9_445 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._discoverCard_yups9_454 {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n margin: 0 calc(0px - var(--wb-len-8));\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCard_yups9_454:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_yups9_468 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverArtworkImage_yups9_480 {\n object-fit: contain;\n}\n\n._discoverMain_yups9_484 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-2);\n min-width: 0;\n}\n\n._discoverTitleRow_yups9_492 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._discoverCardOpen_yups9_500 {\n max-width: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n cursor: pointer;\n}\n\n._discoverCardOpen_yups9_500::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_yups9_500:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_yups9_500:focus-visible::after {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverStrong_yups9_531 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_yups9_537 {\n display: -webkit-box;\n overflow: hidden;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverMeta_yups9_546 {\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._discoverMuted_yups9_553 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_yups9_559 {\n position: relative;\n z-index: var(--wb-z-10);\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverUpdateAction_yups9_568 {\n color: var(--dsw-alias-state-warn-primary);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._discoverBlocked_yups9_573 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_yups9_578 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) 0;\n text-align: center;\n}\n\n._discoverEmptyTitle_yups9_587 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_yups9_578 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_yups9_597 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_yups9_603 {\n align-self: flex-start;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n padding: 0;\n border: 0;\n background: 0 0;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n font-size: var(--wb-font-12-5);\n cursor: pointer;\n}\n\n._discoverCrumb_yups9_603:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_yups9_603:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverCrumbIcon_yups9_626 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_yups9_630 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_yups9_636 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_yups9_642 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._discoverDetailPanel_yups9_649 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_yups9_656 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_yups9_661 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_yups9_666 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_yups9_671 {\n margin: var(--wb-len-16) 0 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverSection_yups9_677 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n margin-top: var(--wb-len-16);\n}\n\n._discoverSectionTitle_yups9_684 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_yups9_690 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_yups9_695 {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--wb-len-16);\n min-height: var(--wb-len-44);\n padding: var(--wb-len-8) var(--wb-len-2);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverFactKind_yups9_705 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_yups9_711 {\n min-width: 0;\n margin: 0;\n text-align: end;\n overflow-wrap: anywhere;\n font: var(--dsw-font-xs-13);\n}\n\n._discoverCode_yups9_719 {\n padding: var(--wb-len-2) var(--wb-len-6);\n border-radius: var(--wb-radius-6);\n background: var(--dsw-alias-bg-module-platform);\n font-family: var(--ds-font-family-code);\n font-size: var(--dsw-font-xxs-12-font-size);\n box-decoration-break: clone;\n}\n\n._discoverTags_yups9_728 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_yups9_735 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_yups9_735:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_yups9_745 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_yups9_753 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverVersionName_yups9_761 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_yups9_766 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverFailure_yups9_775 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverLoading_yups9_781 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xs-13);\n}\n\n._discoverNotice_yups9_790 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverNotice_yups9_790 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_yups9_808 {\n align-self: center;\n}\n\n._discoverTransport_yups9_812 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportHead_yups9_818 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportTitle_yups9_825 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverTransportHead_yups9_818 ._discoverTransportKind_yups9_830 {\n font: var(--dsw-font-xs-13);\n font-weight: 500;\n}\n\n._discoverTransportHead_yups9_818 ._discoverTransportState_yups9_835 {\n margin-left: 0;\n}\n\n._discoverTransportHead_yups9_818 > :last-child {\n margin-left: auto;\n}\n\n._discoverTransportRows_yups9_843 {\n display: flex;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportRow_yups9_843 {\n display: flex;\n flex: 1;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n cursor: pointer;\n}\n\n._discoverTransportRow_yups9_843:hover {\n border-color: var(--dsw-alias-border-l3);\n}\n\n._discoverTransportRow_yups9_843:has(._discoverTransportRadio_yups9_864:checked) {\n border-color: var(--dsw-alias-label-primary);\n}\n\n._discoverTransportRow_yups9_843:has(._discoverTransportRadio_yups9_864:focus-visible) {\n outline: 2px solid var(--dsw-alias-label-primary);\n outline-offset: 1px;\n}\n\n._discoverTransportRadio_yups9_864 {\n flex: none;\n margin: 0;\n}\n\n._discoverTransportKind_yups9_830 {\n flex: none;\n font: var(--dsw-font-xs-13);\n font-weight: 500;\n}\n\n._discoverTransportState_yups9_835 {\n flex: none;\n margin-left: auto;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverTransportRow_yups9_843[data-state='ok'] ._discoverTransportState_yups9_835 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._discoverTransportRow_yups9_843[data-state='auth'] ._discoverTransportState_yups9_835 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverTransportRow_yups9_843[data-state='unreachable'] ._discoverTransportState_yups9_835,\n._discoverTransportRow_yups9_843[data-state='unknown'] ._discoverTransportState_yups9_835 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverTransportCustom_yups9_904 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportInput_yups9_910 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverInstallBar_yups9_915 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-module-platform);\n font: var(--dsw-font-xs-13);\n}\n\n._discoverInstallText_yups9_926 {\n flex: 1;\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDialog_yups9_932 {\n width: min(var(--wb-len-560), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_yups9_936 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_yups9_942 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_yups9_950 {\n display: flex;\n flex-wrap: wrap;\n align-items: flex-start;\n gap: var(--wb-len-12);\n padding: var(--wb-len-10) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverSourceConfirm_yups9_959 {\n margin: 0;\n padding: var(--wb-len-2) 0 var(--wb-len-10);\n list-style: none;\n}\n\n._discoverSourcePick_yups9_965 {\n display: flex;\n flex: 1;\n align-items: flex-start;\n gap: var(--wb-len-10);\n min-width: 0;\n cursor: pointer;\n}\n\n._discoverSourceRadio_yups9_974 {\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: var(--wb-len-2) 0 0;\n accent-color: var(--dsw-alias-brand-primary);\n}\n\n._discoverSourceMain_yups9_982 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._discoverSourceHead_yups9_990 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._discoverSourceUrl_yups9_998 {\n display: block;\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverSourceMore_yups9_1008 {\n flex: none;\n}\n\n._discoverSourceLoading_yups9_1012 {\n display: flex;\n flex: none;\n align-items: center;\n gap: var(--wb-len-6);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n white-space: nowrap;\n}\n\n._discoverSourceHint_yups9_1022 {\n display: flex;\n flex-basis: 100%;\n align-items: center;\n gap: var(--wb-len-6);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverSourceHint_yups9_1022 svg {\n flex: none;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverSourceError_yups9_1036 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_yups9_1042 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_yups9_1048 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_yups9_1053 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_yups9_1059 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_yups9_1064 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_yups9_1070 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_yups9_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_yups9_468._discoverSkeletonFill_yups9_1070 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_yups9_1079 {\n display: block;\n height: var(--wb-len-12);\n margin: var(--wb-len-4) 0;\n border-radius: var(--dsw-radius-xs);\n}\n\n._discoverSkeletonTitle_yups9_1086 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_yups9_1090 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_yups9_1 {\n 0% {\n opacity: 1;\n }\n 40% {\n opacity: 0.6;\n }\n 80%,\n to {\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._discoverSkeletonFill_yups9_1070 {\n animation: none;\n }\n}\n\n._check_1g6tv_1 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n min-width: 0;\n}\n\n._status_1g6tv_8 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-caption);\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n}\n\n._button_1g6tv_15 {\n flex: none;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n}\n\n._icon_1g6tv_22 {\n display: inline-flex;\n}\n\n@media (max-width: 720px) {\n ._status_1g6tv_8 {\n display: none;\n }\n}\n._foot_1ud1j_1 {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._footText_1ud1j_13 {\n flex: 1;\n min-width: 0;\n}\n\n._footTextMd_1ud1j_18 {\n flex: 1;\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n._wide_1lv8f_1 {\n justify-content: center;\n width: 100%;\n height: var(--wb-len-40);\n border-radius: var(--dsw-radius-md);\n}\n\n._dialog_1lv8f_8 {\n width: min(var(--wb-len-560), 100%);\n max-height: min(var(--wb-len-800), 100%);\n}\n\n._content_1lv8f_13 {\n min-height: 0;\n overflow: auto;\n}\n\n._stack_1lv8f_18 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._body_1lv8f_25 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._field_1lv8f_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._input_1lv8f_39 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-14);\n}\n\n._registryField_1lv8f_45 {\n height: var(--wb-len-32);\n margin-left: var(--wb-len-26);\n padding: 0 var(--wb-len-10);\n}\n\n._options_1lv8f_51 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8) var(--wb-len-12);\n}\n\n._guideToggle_1lv8f_59 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-4);\n align-self: flex-start;\n margin-top: var(--wb-len-4);\n padding: 0;\n border: 0;\n background: transparent;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._guideToggle_1lv8f_59:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._guideToggle_1lv8f_59 svg,\n._registryToggle_1lv8f_78 svg {\n transition: transform var(--wb-dur-0-12) ease;\n}\n\n._guideToggle_1lv8f_59[aria-expanded='true'] svg,\n._registryToggle_1lv8f_78[aria-expanded='true'] svg {\n transform: rotate(180deg);\n}\n\n._registryWrap_1lv8f_87 {\n position: relative;\n flex: none;\n}\n\n._registryToggle_1lv8f_78 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n height: var(--wb-len-26);\n padding: 0 var(--wb-len-8) 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n font: inherit;\n font-size: var(--wb-font-12-5);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._registryToggle_1lv8f_78:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._registryToggle_1lv8f_78:disabled {\n cursor: default;\n opacity: 0.6;\n}\n\n._registryToggle_1lv8f_78[aria-expanded='true'] {\n border-color: var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n._registryChosen_1lv8f_121 {\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n\n._registry_1lv8f_45 {\n position: fixed;\n z-index: var(--wb-z-1100);\n box-sizing: border-box;\n width: min(var(--wb-len-440), 100vw - var(--wb-len-24));\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-12);\n border: 0;\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-2);\n --dsw-elevation-stroke-color: var(--dsw-alias-border-l3);\n box-shadow: var(--dsw-elevation-prominent);\n}\n\n._registryOption_1lv8f_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid transparent;\n border-radius: var(--dsw-radius-lg);\n cursor: pointer;\n}\n\nlabel._registryOption_1lv8f_143 {\n flex-direction: row;\n align-items: flex-start;\n gap: var(--wb-len-10);\n}\n\n._registryPick_1lv8f_159 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n cursor: pointer;\n}\n\n._registryOption_1lv8f_143[data-checked='true'] {\n border-color: color-mix(in srgb, var(--dsw-alias-brand-primary) 40%, transparent);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._registryOption_1lv8f_143 input[type='radio'] {\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: var(--wb-len-2) 0 0;\n accent-color: var(--dsw-alias-brand-primary);\n}\n\n._registryTitle_1lv8f_179 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n font: var(--dsw-font-xs-13);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n._registryHint_1lv8f_189 {\n margin-left: var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._inputError_1lv8f_197 {\n margin: var(--wb-len-neg-4) 0 0 var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._guide_1lv8f_59 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._guideList_1lv8f_214 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._guideItem_1lv8f_223 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0;\n}\n\n._guideIndex_1lv8f_230 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n border-radius: var(--wb-radius-pill);\n corner-shape: round;\n background: var(--dsw-alias-bg-module-platform);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._guideMain_1lv8f_244 {\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: 0;\n min-width: 0;\n}\n\n._guideTitle_1lv8f_252 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n._guideHint_1lv8f_258 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._guideExample_1lv8f_264 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._guideExample_1lv8f_264 code {\n font-family: var(--dsw-font-mono, monospace);\n}\n\n._guideExampleLabel_1lv8f_274 {\n color: var(--dsw-alias-label-caption);\n}\n\n._footer_1lv8f_278 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-20);\n width: 100%;\n}\n\n._hero_1lv8f_285 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0 var(--wb-len-4);\n text-align: center;\n}\n\n._heroIcon_1lv8f_294 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-44);\n height: var(--wb-len-44);\n color: var(--dsw-alias-label-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='done'] {\n color: var(--dsw-alias-state-success-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='error'] {\n color: var(--dsw-alias-state-warn-label);\n}\n\n._pendingTitle_1lv8f_311 {\n margin: 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 500;\n color: var(--dsw-alias-label-secondary);\n}\n\n._wizardTitle_1lv8f_319 {\n margin: 0;\n font-size: var(--wb-font-18);\n line-height: var(--wb-len-26);\n font-weight: 600;\n}\n\n._subject_1lv8f_326 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n text-align: center;\n}\n\n._subjectName_1lv8f_337 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n overflow-wrap: anywhere;\n}\n\n._subjectMeta_1lv8f_343,\n._subjectDesc_1lv8f_344 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._result_1lv8f_351,\n._resultWarn_1lv8f_352 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._resultWarn_1lv8f_352 {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);\n}\n\n._resultMeta_1lv8f_365 {\n margin: 0;\n padding: 0 var(--wb-len-12);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._approval_1lv8f_373 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-state-warn-primary);\n border-radius: var(--dsw-radius-lg);\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._approvalTitle_1lv8f_383 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._approvalText_1lv8f_390 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._approvalCaution_1lv8f_396 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n font-weight: 600;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._note_1lv8f_403 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._noteWarn_1lv8f_410 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._noteError_1lv8f_414 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._problem_1lv8f_418 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._detailLabel_1lv8f_425 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._detail_1lv8f_425 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-3);\n font-family: var(--dsw-font-mono, monospace);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n}\n._note_1enlz_1 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._note_1enlz_1 > svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n._slot_1t7dx_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1t7dx_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1t7dx_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1t7dx_31 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._paused_1t7dx_35 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._trouble_1t7dx_39 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._pulse_1t7dx_43 {\n animation: _wb-debug-breathe_1t7dx_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-debug-breathe_1t7dx_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1t7dx_43 {\n animation: none;\n }\n}\n\n._entry_1t7dx_64 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1t7dx_71 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1t7dx_78 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1t7dx_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: 0;\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n}\n\n._act_1t7dx_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1t7dx_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._actStop_1t7dx_110:hover,\n._actStop_1t7dx_110:focus-visible {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._actArmed_1t7dx_115,\n._actArmed_1t7dx_115:hover,\n._actArmed_1t7dx_115:focus-visible {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n width: auto;\n color: var(--dsw-alias-state-error-primary);\n gap: var(--wb-len-4);\n padding: 0 var(--wb-len-7);\n}\n\n._actLabel_1t7dx_125 {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._entryLine_1t7dx_131 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1t7dx_138 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1t7dx_150 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1t7dx_156 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1t7dx_162 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._slot_1gkj9_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1gkj9_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1gkj9_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1gkj9_31 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._done_1gkj9_35 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._pulse_1gkj9_39 {\n animation: _wb-record-breathe_1gkj9_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-record-breathe_1gkj9_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1gkj9_39 {\n animation: none;\n }\n}\n\n._entry_1gkj9_60 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1gkj9_67 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1gkj9_74 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1gkj9_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-22);\n padding: 0 var(--wb-len-7);\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._act_1gkj9_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1gkj9_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._entryLine_1gkj9_108 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1gkj9_115 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1gkj9_127 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1gkj9_133 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1gkj9_139 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._item_lyox9_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n}\n\n._item_lyox9_1 + ._item_lyox9_1 {\n padding-top: var(--wb-len-14);\n border-top: var(--wb-len-0-5) solid var(--dsw-alias-settings-card-stroke);\n}\n\n._head_lyox9_12 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._title_lyox9_19 {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._description_lyox9_31 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._rows_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._row_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-settings-card-stroke);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-settings-card-fill);\n}\n\n._head_85r3w_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._pick_85r3w_27 {\n flex: 0 1 auto;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._pick_85r3w_27 > span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._code_85r3w_39 {\n --dsl-code-block-background: var(--dsw-alias-bg-layer-1);\n margin: 0;\n}\n\n._missing_85r3w_44,\n._conflict_85r3w_45 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-warn-primary);\n}\n._body_11oac_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._sources_11oac_7 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._sourcesLabel_11oac_14 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\nbutton._sourceOn_11oac_19 {\n border-color: var(--dsw-alias-brand-primary);\n}\n._sourceCount_11oac_22 {\n margin-left: var(--wb-len-4);\n font-variant-numeric: tabular-nums;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._reading_11oac_29 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._status_11oac_35 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failure_11oac_45 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n column-gap: var(--wb-len-10);\n row-gap: var(--wb-len-2);\n color: var(--dsw-alias-state-error-primary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n\n._failureTitle_11oac_55 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._failureHint_11oac_62 {\n grid-column: 1;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failureAction_11oac_67 {\n grid-column: 2;\n grid-row: 1;\n justify-self: end;\n}\n\n._foot_11oac_73 {\n display: flex;\n justify-content: flex-end;\n}\n._body_lox98_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._field_lox98_7 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._input_lox98_13 {\n width: 100%;\n}\n\n._label_lox98_17 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\n._hint_lox98_22 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._copy_lox98_28 {\n display: flex;\n flex-wrap: wrap;\n gap: var(--wb-len-8) var(--wb-len-16);\n margin: 0;\n padding: 0;\n border: 0;\n}\n\n._copy_lox98_28 legend {\n padding: 0;\n margin-bottom: var(--wb-len-6);\n}\n\n._actions_lox98_42 {\n display: flex;\n justify-content: flex-end;\n}\n\n._commandLabel_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n}\n\n._command_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-6) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow-wrap: anywhere;\n}\n._body_zi2j5_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._lead_zi2j5_7 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._title_zi2j5_14 {\n font-size: var(--wb-font-18);\n line-height: var(--wb-line-24);\n}\n._hint_zyzt3_1[hidden],\n._actions_zyzt3_2[hidden],\n._progress_zyzt3_3[hidden],\n._commandRow_zyzt3_4[hidden],\n._bridge_zyzt3_5[hidden],\n._raw_zyzt3_6[hidden] {\n display: none;\n}\n\n._gate_zyzt3_10 {\n position: fixed;\n inset: 0;\n z-index: var(--wb-z-top);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--wb-len-24);\n background: var(--dsw-alias-bg-base);\n}\n\n._card_zyzt3_21 {\n width: 100%;\n max-width: var(--wb-len-420);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-16);\n text-align: center;\n}\n\n._card_zyzt3_21:has(._actions_zyzt3_2:not([hidden])),\n._card_zyzt3_21:has(._bridge_zyzt3_5:not([hidden])) {\n max-width: var(--wb-len-520);\n}\n\n._title_zyzt3_36 {\n margin: 0;\n font-size: var(--dsw-font-base-16-font-size);\n line-height: var(--wb-line-24);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._steps_zyzt3_51 {\n list-style: none;\n margin: var(--wb-len-6) 0 0;\n padding: 0;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n text-align: left;\n}\n\n._step_zyzt3_51 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-6) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._step_zyzt3_51[data-status='running'] {\n color: var(--dsw-alias-label-primary);\n}\n\n._mark_zyzt3_78 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-14);\n height: var(--wb-len-14);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._step_zyzt3_51[data-status='ok'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._step_zyzt3_51[data-status='warn'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._step_zyzt3_51[data-status='failed'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._label_zyzt3_103 {\n flex: none;\n}\n\n._detail_zyzt3_107 {\n margin-left: auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._progress_zyzt3_3 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._elapsed_zyzt3_125 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._error_zyzt3_133 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n max-height: var(--wb-len-120);\n overflow: auto;\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n white-space: pre-wrap;\n word-break: break-all;\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._commandRow_zyzt3_4 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n margin: 0 0 var(--wb-len-8);\n padding-right: var(--wb-len-4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._copy_zyzt3_159 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._copy_zyzt3_159:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._command_zyzt3_4 {\n flex: 1;\n min-width: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-primary);\n}\n\n._buttons_zyzt3_192 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-12);\n}\n\n._mockSlot_zyzt3_199 {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n justify-content: center;\n background: var(--dsw-alias-bg-base);\n}\n\n._button_zyzt3_192 {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n}\n\n._button_zyzt3_192:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._button_zyzt3_192:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n._actions_zyzt3_2,\n._bridge_zyzt3_5 {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-14) var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-1);\n text-align: left;\n}\n\n._fixTitle_zyzt3_250 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._actions_zyzt3_2 ._hint_zyzt3_1,\n._bridge_zyzt3_5 ._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._actions_zyzt3_2 ._commandRow_zyzt3_4,\n._bridge_zyzt3_5 ._commandRow_zyzt3_4 {\n margin: 0;\n}\n\n._actions_zyzt3_2 ._buttons_zyzt3_192,\n._bridge_zyzt3_5 ._buttons_zyzt3_192 {\n justify-content: flex-start;\n}\n\n._raw_zyzt3_6 {\n box-sizing: border-box;\n width: 100%;\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._rawSummary_zyzt3_286 {\n cursor: pointer;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._actions_zyzt3_2 ._error_zyzt3_133,\n._bridge_zyzt3_5 ._error_zyzt3_133 {\n margin-top: var(--wb-len-6);\n}\n\n._bridgeLines_zyzt3_296 {\n margin: 0;\n padding-left: var(--wb-len-18);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._bridgeLine_zyzt3_296 a {\n display: block;\n margin-top: var(--wb-len-4);\n width: fit-content;\n}\n\n._link_zyzt3_313 {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n\n._link_zyzt3_313::after {\n content: '↗';\n margin-left: var(--wb-len-2);\n}\n\n._link_zyzt3_313:hover {\n text-decoration: underline;\n}\n\n._loading_zyzt3_327 {\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._loading_zyzt3_327[hidden] {\n display: none;\n}\n\n._loadingMotion_zyzt3_336 {\n transform-origin: center;\n animation: _wb-spin_zyzt3_1 var(--wb-dur-1-5) linear infinite;\n}\n\n._loadingTrack_zyzt3_341,\n._loadingArc_zyzt3_342 {\n fill: none;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n}\n\n._loadingTrack_zyzt3_341 {\n opacity: 0.25;\n}\n\n._loadingArc_zyzt3_342 {\n stroke-dasharray: 12 150;\n animation: _wb-dash_zyzt3_1 var(--wb-dur-1-5) ease-in-out infinite;\n}\n\n@keyframes _wb-spin_zyzt3_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes _wb-dash_zyzt3_1 {\n 0% {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 24 150;\n stroke-dashoffset: -6;\n }\n to {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._loadingMotion_zyzt3_336,\n ._loadingArc_zyzt3_342 {\n animation: none;\n }\n}\n._changelog_1q6pj_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-10);\n min-width: 0;\n}\n\n._changelogTitle_1q6pj_9 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._changelogMissing_1q6pj_15 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._changelogBody_1q6pj_21 {\n max-height: var(--wb-len-320);\n overflow: auto;\n padding: var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n}\n._group_1hxis_1 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n}\n\n._button_1hxis_7 {\n flex: none;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n color: var(--dsw-alias-label-secondary);\n}\n\n._button_1hxis_7:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._active_1hxis_19 {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._icon_1hxis_23 {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n._icon_1hxis_23 svg {\n display: block;\n width: var(--wb-len-15);\n height: var(--wb-len-15);\n}\n\n._mirror_1hxis_35 {\n transform: scaleX(-1);\n}\n._stripTabs_1dqp4_1 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n min-width: 0;\n overflow: hidden;\n}\n\n._tab_1dqp4_9 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: none;\n font: inherit;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-16);\n max-width: 100%;\n}\n\n._tabActive_1dqp4_25 {\n color: var(--dsw-alias-label-primary);\n}\n\n._tabQuiet_1dqp4_29 {\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._tabQuiet_1dqp4_29:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._tabTitle_1dqp4_39 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._sep_1dqp4_49 {\n flex: none;\n color: var(--dsw-alias-label-dimmed);\n}\n._trigger_15ptp_1 {\n display: flex;\n align-items: center;\n}\n\n._pop_15ptp_6 {\n position: absolute;\n top: calc(var(--wb-len-38) + var(--wb-len-8));\n right: var(--wb-len-6);\n z-index: var(--wb-z-30);\n width: min(var(--wb-len-360), calc(100% - var(--wb-len-12)));\n max-width: calc(100vw - var(--wb-len-48));\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-2);\n box-shadow: var(--dsw-shadow-lv3);\n overflow: hidden;\n}\n\n._head_15ptp_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-10) var(--wb-len-12) var(--wb-len-9) var(--wb-len-14);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._title_15ptp_28 {\n flex: 1;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._rowControls_15ptp_36 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._reset_15ptp_43 {\n flex: none;\n padding: var(--wb-len-3) var(--wb-len-8);\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._reset_15ptp_43:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._reset_15ptp_43:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._list_15ptp_65 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._row_15ptp_36 {\n position: relative;\n display: grid;\n grid-template-columns: 12px minmax(0, 1fr) auto;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-sm);\n cursor: default;\n}\n\n._rowDragging_15ptp_85 {\n cursor: grabbing;\n}\n\n._rowBlocked_15ptp_89 {\n cursor: not-allowed;\n}\n\n._listDragging_15ptp_93 ._rowControls_15ptp_36 {\n pointer-events: none;\n}\n\n._row_15ptp_36:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._rowOff_15ptp_101 {\n opacity: 0.55;\n}\n\n._rowOff_15ptp_101:hover {\n opacity: 1;\n}\n\n._rowOver_15ptp_109::before {\n content: '';\n position: absolute;\n top: var(--wb-len-neg-3);\n left: var(--wb-len-8);\n right: var(--wb-len-8);\n height: var(--wb-len-2);\n background: var(--dsw-alias-brand-primary);\n}\n\n._ghost_15ptp_119 {\n position: fixed;\n z-index: var(--wb-z-40);\n pointer-events: none;\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n box-shadow: var(--wb-static-shadow-ghost);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n white-space: nowrap;\n}\n\n._grip_15ptp_134 {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: center;\n color: var(--dsw-alias-label-tertiary);\n user-select: none;\n cursor: grab;\n touch-action: none;\n}\n\n._gripDragging_15ptp_144 {\n cursor: grabbing;\n}\n\n._gripBlocked_15ptp_148 {\n cursor: not-allowed;\n}\n\n._label_15ptp_152 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._name_15ptp_159 {\n min-width: 0;\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n\n._error_15ptp_170 {\n margin: 0;\n padding: 0 var(--wb-len-14) var(--wb-len-10);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._dep_15ptp_178 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n}\n\n._group_15ptp_186 {\n padding-top: var(--wb-len-6);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._groupTitle_15ptp_191 {\n margin: 0;\n padding: var(--wb-len-2) var(--wb-len-8) 0 var(--wb-len-14);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n font-weight: 400;\n color: var(--dsw-alias-label-tertiary);\n}\n._panel_1whum_1 {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: var(--wb-z-10);\n visibility: hidden;\n}\n\n._panel_1whum_1[data-fullscreen] {\n z-index: var(--wb-z-40);\n}\n\n._panel_1whum_1[data-open] {\n visibility: visible;\n}\n\n._columns_1whum_18 {\n display: block;\n column-gap: var(--wb-len-12);\n}\n\n._cell_1whum_23 {\n display: flow-root;\n min-width: 0;\n break-inside: avoid;\n margin-bottom: var(--wb-len-12);\n}\n._root_1cmz0_1 {\n position: relative;\n flex: none;\n margin: 0 var(--wb-len-2) var(--wb-len-4);\n}\n\n._rail_1cmz0_7 {\n margin: 0 0 var(--wb-len-4);\n}\n\n._glyphBox_1cmz0_11 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n\n._glyph_1cmz0_11 {\n position: relative;\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._glyphActive_1cmz0_30 {\n color: var(--dsw-alias-state-business-primary);\n}\n\n._triggerName_1cmz0_34 {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n font-size: var(--wb-font-row);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n._dir_1cmz0_45 {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._name_1cmz0_53 {\n flex: 0 1 auto;\n max-width: 50%;\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._triggerName_1cmz0_34 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._row_1cmz0_66 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n width: 100%;\n min-width: 0;\n}\n\n._trailing_1cmz0_74 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n margin-inline-start: auto;\n}\n\n._trailing_1cmz0_74 ._rowAction_1cmz0_84 {\n width: var(--wb-len-20);\n min-width: var(--wb-len-20);\n height: var(--wb-len-20);\n min-height: var(--wb-len-20);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n}\n\n._row_1cmz0_66 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._current_1cmz0_97 {\n flex: none;\n display: inline-flex;\n align-items: center;\n color: var(--dsw-alias-label-primary);\n}\n._dot_sosf1_1 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n._overlay_sosf1_8 {\n position: absolute;\n inset-block-start: var(--wb-len-neg-3);\n inset-inline-end: var(--wb-len-neg-3);\n}\n._tag_g9dg8_1 {\n flex: none;\n margin-inline-start: auto;\n}\n._dialog_1vye5_1 {\n width: min(var(--wb-len-420), 100%);\n}\n\n._stack_1vye5_5 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._input_1vye5_12 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-12);\n}\n\n._meta_1vye5_18 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n._dot_14w1n_1 {\n display: inline-flex;\n align-items: center;\n}\n\n._hover_14w1n_6 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._blocker_1oaj0_1 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-20) var(--wb-len-16);\n text-align: center;\n}\n\n._icon_1oaj0_10 {\n display: flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._title_1oaj0_15 {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_1oaj0_23 {\n margin: 0;\n max-width: var(--wb-len-42em);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n text-wrap: pretty;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 {\n align-items: flex-start;\n gap: var(--wb-len-6);\n padding: var(--wb-len-4) 0 var(--wb-len-2);\n text-align: left;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._title_1oaj0_15 {\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._hint_1oaj0_23 {\n max-width: 100%;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._actions_1oaj0_48 {\n margin-top: var(--wb-len-8);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._raw_1oaj0_52 {\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._actions_1oaj0_48 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-6);\n}\n\n._raw_1oaj0_52 {\n margin-top: var(--wb-len-10);\n width: 100%;\n max-width: var(--wb-len-360);\n text-align: left;\n}\n\n._notice_1oaj0_71 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: start;\n column-gap: var(--wb-len-10);\n margin: 0 0 var(--wb-len-10);\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-left: 2px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._notice_1oaj0_71._noticeFlat_1oaj0_84 {\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n}\n\n._noticeText_1oaj0_91 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-3);\n min-width: 0;\n}\n\n._noticeTitle_1oaj0_98 {\n font-size: var(--wb-font-12-5);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._noticeHint_1oaj0_105 {\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._noticeActions_1oaj0_112 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-neg-2);\n}\n\n._failure_1oaj0_119 {\n margin: var(--wb-len-8) 0 0;\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._failureDetail_1oaj0_127 {\n display: block;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-label-tertiary);\n white-space: pre-wrap;\n}\n\n._inlineAction_1oaj0_134 {\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n}\n\n._inlineAction_1oaj0_134:disabled {\n opacity: 0.6;\n cursor: default;\n}\n\n._rawText_1oaj0_146 {\n margin: var(--wb-len-6) 0 0;\n max-width: 100%;\n}\n/*$vite$:1*/";
16237
+ var COMPONENT_CSS_MARKER = ".wb-activityBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding-top: var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n.wb-activityBlock:first-child {\n padding-top: 0;\n border-top: none;\n}\n\n.wb-activityBlockHead {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8);\n}\n\n.wb-activityLine {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-activityLineText {\n flex: none;\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n max-height: var(--wb-len-72);\n overflow-y: auto;\n}\n\n.wb-activityLineAt {\n flex: none;\n margin-left: auto;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-16);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-activityLine > .wb-activityLineAt,\n.wb-activityLine > .wb-activityLineActions {\n margin-left: auto;\n}\n\n.wb-activityLine > .wb-activityLineAt + .wb-activityLineActions {\n margin-left: 0;\n}\n\n.wb-activityLineActions {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n.wb-activityActionFailed {\n color: var(--dsw-alias-state-error-primary);\n}\n.wb-note {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-problem {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalCommand {\n max-width: 100%;\n}\n.wb-approvalPlan {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-approvalHint {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n.wb-approvalRows {\n display: grid;\n grid-template-columns: minmax(var(--wb-len-56), auto) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-2);\n align-items: baseline;\n margin: 0;\n}\n.wb-approvalRow {\n display: contents;\n}\n.wb-approvalLabel {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n.wb-approvalValue {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalWarn {\n color: var(--dsw-alias-label-secondary);\n}\n.wb-cardHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-8) var(--wb-card-gutter);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-cardTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-cardMeta {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-cardMeta::before {\n content: '\\00b7';\n margin-right: var(--wb-len-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen ~ .wb-cardRefresh {\n margin-left: 0;\n}\n\n.wb-cardOpen:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh {\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardRefresh:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-cardGear {\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-3);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardGear:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n.wb-card {\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-bg-layer-1);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n flex: none;\n}\n.wb-cardBody {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-card-gutter);\n font-size: var(--dsw-font-xxs-12-font-size);\n}\n.wb-cardBleed {\n margin-inline: calc(-1 * var(--wb-card-gutter));\n}\n._anchor_yq4s2_1 {\n display: contents;\n}\n.wb-spinner {\n display: inline-flex;\n align-items: center;\n flex: none;\n}\n.wb-choiceMenu {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n background: transparent;\n}\n\n.wb-choiceMenu[data-variant='boxed'] {\n padding: var(--wb-len-4);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-choiceOption {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: pointer;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-choiceOptionOn {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-checkbox {\n position: absolute;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n.wb-checkboxBox {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xs);\n corner-shape: round;\n color: var(--dsw-alias-label-primary-foreground);\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-choiceOption:hover .wb-checkboxBox {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-checkbox:checked + .wb-checkboxBox {\n border-color: var(--dsw-alias-brand-primary);\n background: var(--dsw-alias-brand-primary);\n}\n\n.wb-checkbox:disabled + .wb-checkboxBox {\n cursor: default;\n}\n\n.wb-checkbox:focus-visible + .wb-checkboxBox {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n.wb-choiceOption:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-choiceOption:has(:disabled) {\n cursor: default;\n opacity: 0.5;\n}\n\n.wb-choiceOption:has(:disabled),\n.wb-choiceOption:has(:disabled):hover {\n background: transparent;\n}\n\n.wb-choiceLabel {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.wb-choiceLabelText {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceLabel:has(.wb-choiceDescription) .wb-choiceLabelText {\n overflow: visible;\n white-space: normal;\n overflow-wrap: anywhere;\n}\n\n.wb-choiceDescription {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n.wb-choiceLoading {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-choiceLoadingText {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceEmpty {\n display: flex;\n align-items: center;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio {\n appearance: none;\n -webkit-appearance: none;\n flex: none;\n box-sizing: border-box;\n width: var(--wb-len-12);\n height: var(--wb-len-12);\n margin: 0;\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: 50%;\n corner-shape: round;\n background-color: transparent;\n cursor: pointer;\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-radio:not(:checked):hover {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio:checked {\n border-color: var(--dsw-alias-brand-primary);\n background-image: radial-gradient(\n circle at center,\n var(--dsw-alias-brand-primary) 0 3px,\n transparent 3px\n );\n}\n\n.wb-radio:disabled {\n cursor: default;\n}\n\n.wb-radio:focus-visible {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n.wb-formActions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n}\n\n.wb-formActionDanger {\n color: var(--dsw-alias-state-error-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent);\n}\n.wb-rows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n}\n.wb-rows > :not(.wb-row) {\n grid-column: 1 / -1;\n}\n.wb-row {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: baseline;\n gap: var(--wb-len-8);\n padding: var(--wb-len-4) 0;\n}\n.wb-row + .wb-row {\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n.wb-rowKey {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-rowValue {\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-rows > .wb-row {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-rows > .wb-row {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-confirmBar {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n width: 100%;\n box-sizing: border-box;\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n}\n.wb-confirmBarTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 600;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-confirmBarHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n.wb-field {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n.wb-fieldLabel {\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-fieldHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-field:has(:disabled) .wb-fieldLabel {\n opacity: 0.4;\n}\n.wb-formRows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-12);\n}\n\n.wb-formRows > :not(.wb-formRow) {\n grid-column: 1 / -1;\n}\n\n.wb-formRow {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: center;\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-8);\n}\n\n.wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n align-items: stretch;\n gap: var(--wb-len-6);\n}\n\n.wb-formRows > .wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n}\n\n.wb-formLabel {\n justify-self: start;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: nowrap;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formLabel {\n white-space: normal;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formHint,\n.wb-formRow[data-layout='stacked'] .wb-formProblem {\n grid-column: 1 / -1;\n}\n\n.wb-formControl {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n.wb-formControl\n > :where(\n .wb-selectAnchor,\n .wb-choiceMenu,\n input:not(\n [type='checkbox'],\n [type='radio'],\n [type='button'],\n [type='submit'],\n [type='reset'],\n [type='image'],\n [type='color'],\n [type='range']\n ),\n select,\n textarea\n ) {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n}\n\n.wb-formHint {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-formProblem {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(.wb-formProblem) .wb-formLabel {\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(:disabled) .wb-formLabel {\n opacity: 0.4;\n}\n\n.wb-formRows > .wb-formRow {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-formRows > .wb-formRow {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-form {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n width: 100%;\n}\n:where(.wb-link) {\n margin-left: var(--wb-len-2);\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n white-space: nowrap;\n vertical-align: baseline;\n}\n\n:where(.wb-link:hover) {\n text-decoration: underline;\n}\n\n:where(.wb-link:focus-visible) {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n.wb-longTask {\n padding-top: var(--wb-len-12);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n.wb-longTaskHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n}\n\n.wb-longTaskLink {\n flex: none;\n}\n\n.wb-longTaskHeadline {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-longTaskProblem {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-longTaskDump {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-longTaskDump pre {\n margin: var(--wb-len-4) 0 0;\n max-height: var(--wb-len-220);\n overflow: auto;\n}\n\n.wb-longTaskStop {\n display: inline-flex;\n flex: none;\n align-items: center;\n align-self: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n padding: 0;\n margin-left: auto;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-specific-menu);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n.wb-longTaskStop:hover:not(:disabled),\n.wb-longTaskStop:focus-visible {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStop:disabled {\n cursor: default;\n}\n\n.wb-longTaskStopArmed,\n.wb-longTaskStopArmed:hover:not(:disabled),\n.wb-longTaskStopArmed:focus-visible {\n gap: var(--wb-len-4);\n width: auto;\n padding: 0 var(--wb-len-7);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStopLabel {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n.wb-longTaskStopWhy {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-centered.wb-centeredCompact {\n flex: none;\n min-height: 0;\n gap: var(--wb-len-8);\n padding: var(--wb-len-20) var(--wb-len-16);\n}\n\n.wb-centered.wb-centeredCompact .wb-centeredHero {\n margin-bottom: var(--wb-len-4);\n}\n\n.wb-skeleton {\n display: flex;\n flex-direction: column;\n}\n\n.wb-skeletonRow {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-skeletonRow + .wb-skeletonRow::before {\n content: '';\n align-self: stretch;\n height: var(--wb-len-0-5);\n margin: 0 var(--wb-len-8) var(--wb-len-neg-0-5);\n background: var(--dsw-alias-border-l2);\n}\n\n.wb-skeletonBar {\n display: block;\n height: var(--wb-len-13);\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-bg-skeleton);\n animation: wb-skeleton-pulse var(--wb-dur-1-4) var(--ds-ease-in-out) infinite;\n}\n\n.wb-skeletonBarTitle {\n width: 62%;\n}\n\n.wb-skeletonBarMeta {\n width: 32%;\n height: var(--wb-len-10);\n}\n\n.wb-skeletonRow:nth-child(2n) .wb-skeletonBarTitle {\n width: 74%;\n}\n\n.wb-skeletonRow:nth-child(3n) .wb-skeletonBarTitle {\n width: 52%;\n}\n\n@keyframes wb-skeleton-pulse {\n 50% {\n opacity: 0.45;\n }\n}\n\n.wb-centered {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: var(--wb-len-14);\n flex: 1;\n min-height: var(--wb-len-240);\n padding: 0 var(--wb-len-24) var(--wb-len-24);\n text-align: center;\n}\n\n.wb-centeredHero {\n display: flex;\n margin-bottom: var(--wb-len-16);\n color: var(--dsw-alias-label-dimmed);\n}\n\n.wb-centeredTitle {\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-centeredHint {\n max-width: var(--wb-len-300);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-centeredDetail {\n max-width: var(--wb-len-320);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-dimmed);\n word-break: break-all;\n}\n\n.wb-centeredAction {\n display: flex;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n@media (prefers-reduced-motion: reduce) {\n .wb-skeletonBar {\n animation: none;\n }}\n.wb-textField {\n box-sizing: border-box;\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n outline: none;\n}\n\n.wb-textField:focus {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-textField:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-textField[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-textField[aria-invalid='true']:focus {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n:where(.wb-textField) {\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n}\n:where(.wb-selectTrigger) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n text-align: left;\n cursor: pointer;\n}\n\n.wb-selectTrigger:focus-visible {\n outline: none;\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true']:focus-visible {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-selectLoading:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: none;\n background: transparent;\n font-size: var(--wb-font-row);\n}\n\n.wb-selectGhost:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-selectGhost:focus-visible {\n outline: var(--dsw-focus-ring-width) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n border-color: transparent;\n box-shadow: none;\n}\n\n.wb-selectIconOnly {\n width: var(--wb-len-36);\n height: var(--wb-len-36);\n min-height: 0;\n gap: 0;\n padding: 0;\n justify-content: center;\n}\n\n.wb-selectReveal {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.wb-selectIconOnly .wb-selectIcon {\n width: 100%;\n height: 100%;\n}\n\n.wb-selectAnchor {\n display: block;\n width: 100%;\n}\n\n.wb-selectIcon {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectValue {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n.wb-selectPlaceholder {\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectChevron {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-caption);\n}\n\n.wb-selectMenu {\n min-width: var(--wb-len-240);\n max-width: var(--wb-len-360);\n max-height: min(var(--wb-len-320), calc(100vh - var(--wb-len-24)));\n}\n\n:where(.wb-selectSearch) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n.wb-selectSearch:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectSearch.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: 0.5px solid var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-selectSearch.wb-selectGhost:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: none;\n}\n\n.wb-selectSearchIcon {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-textField.wb-selectSearchInput {\n flex: 1;\n min-width: 0;\n min-height: 0;\n padding: 0;\n border: none;\n background: transparent;\n}\n\n.wb-textField.wb-selectSearchInput:focus {\n box-shadow: none;\n}\n\n.wb-selectFallback {\n width: 100%;\n}\n\n.wb-selectHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\nsection.wb-settings {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-len-16);\n border: 0;\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-settings-card-fill);\n}\n.wb-settingsHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n.wb-settings .wb-settingsTitle {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-strong-14-font-size);\n line-height: var(--wb-line-24);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n.wb-stack {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n min-height: 0;\n}\n.wb-stateBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-stateBlockTitle {\n margin: 0;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n.wb-stateBlockHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-stateBlockActions {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n.wb-stateBlockResolving {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._marketList_485ym_1 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._marketRow_485ym_10 {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n column-gap: var(--wb-len-14);\n row-gap: var(--wb-len-4);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-lg);\n}\n\n._marketIcon_485ym_20 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketMain_485ym_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_485ym_39 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketStatus_485ym_48 {\n display: inline-flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketStateText_485ym_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_485ym_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_485ym_66 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._marketName_485ym_39 ._marketVersion_485ym_72 {\n margin-left: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n}\n\n._marketVersion_485ym_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_485ym_72::before {\n content: '';\n display: inline-block;\n width: var(--wb-len-1);\n height: var(--wb-len-10);\n margin: 0 var(--wb-len-8) 0 var(--wb-len-2);\n vertical-align: -1px;\n background: var(--dsw-alias-border-l2);\n}\n\n._marketLocalTag_485ym_94 {\n margin-left: var(--wb-len-8);\n padding: 0 var(--wb-len-6);\n border: var(--wb-len-1) solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-caption);\n}\n\n._marketEnd_485ym_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_485ym_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_485ym_112::before {\n content: '';\n width: 0;\n height: var(--wb-len-14);\n border-left: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketActions_485ym_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_485ym_131 {\n color: var(--dsw-alias-state-warn-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._marketSelfDivider_485ym_137 {\n height: 0;\n margin-top: calc(0px - var(--wb-len-16));\n border-top: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketSection_485ym_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_485ym_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_485ym_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_485ym_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_485ym_169 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionAction_485ym_175 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n margin-left: auto;\n min-width: 0;\n}\n\n._marketSectionQuiet_485ym_183 ._marketSectionTitle_485ym_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_485ym_183 ._marketName_485ym_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_485ym_183 ._marketIcon_485ym_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._marketProgress_485ym_196 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-height: var(--wb-len-32);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketNote_485ym_206 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-warn-primary);\n overflow-wrap: anywhere;\n}\n\n._marketFailure_485ym_213 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._marketFailureSeat_485ym_220 {\n grid-column: 2 / -1;\n min-width: 0;\n}\n\n._marketEmpty_485ym_225 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_485ym_230 {\n box-sizing: border-box;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-32);\n padding: 0 clamp(var(--wb-len-24), 4vw, var(--wb-len-48)) var(--wb-len-48);\n overflow-x: hidden;\n overflow-y: auto;\n color: var(--dsw-alias-label-primary);\n}\n\n._marketPage_485ym_230 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_485ym_248 {\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-16);\n padding-top: var(--wb-len-28);\n}\n\n._marketPageTitle_485ym_256 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_485ym_261 {\n margin: var(--wb-len-4) 0 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketPageTools_485ym_267 {\n flex: none;\n align-self: center;\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: var(--wb-len-16);\n}\n\n._marketPanel_485ym_276 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_485ym_276[hidden] {\n display: none;\n}\n\n._marketTabs_485ym_286 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_485ym_291 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketAddButton_485ym_296 {\n height: var(--wb-len-32);\n padding: 0 var(--wb-len-12);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n border-radius: var(--dsw-radius-md);\n}\n\n._marketEmpty_485ym_225 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) var(--wb-len-16);\n text-align: center;\n}\n\n._marketEmptyTitle_485ym_313 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverPage_485ym_318 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_485ym_325 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_485ym_332 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_485ym_338 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_485ym_343 {\n min-width: 0;\n max-width: var(--wb-len-240);\n margin-left: calc(0px - var(--wb-len-8));\n font-weight: 500;\n}\n\n._discoverMarketName_485ym_350 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_485ym_356 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_485ym_361 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_485ym_366 {\n flex: none;\n}\n\n._discoverSearch_485ym_370 {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex: 1 1 var(--wb-len-120);\n min-width: var(--wb-len-120);\n}\n\n._discoverSearchField_485ym_378 {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._discoverSearchFieldFilled_485ym_383 input {\n padding-inline-end: var(--wb-len-20);\n}\n\n._discoverSearchField_485ym_378 input::-webkit-search-cancel-button {\n appearance: none;\n -webkit-appearance: none;\n}\n\n._discoverSearch_485ym_370 ._discoverSearchClear_485ym_392 {\n position: absolute;\n top: 50%;\n inset-inline-end: var(--wb-len-4);\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-tertiary);\n transform: translateY(-50%);\n}\n\n._discoverSearchClear_485ym_392:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_485ym_332 {\n display: grid;\n grid-template-columns: minmax(0, auto) minmax(var(--wb-len-120), 1fr) auto;\n grid-template-areas:\n 'market search refresh'\n 'labels sort sort';\n }\n\n ._discoverMarket_485ym_338 {\n grid-area: market;\n }\n\n ._discoverMarketButton_485ym_343 {\n margin-left: 0;\n }\n\n ._discoverLabels_485ym_356 {\n grid-area: labels;\n }\n\n ._discoverSearch_485ym_370 {\n grid-area: search;\n }\n\n ._discoverSort_485ym_361 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_485ym_366 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_485ym_443 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_485ym_450 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._discoverCard_485ym_459 {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n margin: 0 calc(0px - var(--wb-len-8));\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCard_485ym_459:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_485ym_473 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverArtworkImage_485ym_485 {\n object-fit: contain;\n}\n\n._discoverMain_485ym_489 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-2);\n min-width: 0;\n}\n\n._discoverTitleRow_485ym_497 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._discoverCardOpen_485ym_505 {\n max-width: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n cursor: pointer;\n}\n\n._discoverCardOpen_485ym_505::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_485ym_505:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_485ym_505:focus-visible::after {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverStrong_485ym_536 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_485ym_542 {\n display: -webkit-box;\n overflow: hidden;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverMeta_485ym_551 {\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._discoverMuted_485ym_558 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_485ym_564 {\n position: relative;\n z-index: var(--wb-z-10);\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverUpdateAction_485ym_573 {\n color: var(--dsw-alias-state-warn-primary);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._discoverBlocked_485ym_578 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_485ym_583 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) 0;\n text-align: center;\n}\n\n._discoverEmptyTitle_485ym_592 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_485ym_583 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_485ym_602 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_485ym_608 {\n align-self: flex-start;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n padding: 0;\n border: 0;\n background: 0 0;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n font-size: var(--wb-font-12-5);\n cursor: pointer;\n}\n\n._discoverCrumb_485ym_608:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_485ym_608:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverCrumbIcon_485ym_631 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_485ym_635 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_485ym_641 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_485ym_647 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._discoverDetailPanel_485ym_654 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_485ym_661 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_485ym_666 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_485ym_671 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_485ym_676 {\n margin: var(--wb-len-16) 0 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverSection_485ym_682 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n margin-top: var(--wb-len-16);\n}\n\n._discoverSectionTitle_485ym_689 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_485ym_695 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_485ym_700 {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--wb-len-16);\n min-height: var(--wb-len-44);\n padding: var(--wb-len-8) var(--wb-len-2);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverFactKind_485ym_710 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_485ym_716 {\n min-width: 0;\n margin: 0;\n text-align: end;\n overflow-wrap: anywhere;\n font: var(--dsw-font-xs-13);\n}\n\n._discoverCode_485ym_724 {\n padding: var(--wb-len-2) var(--wb-len-6);\n border-radius: var(--wb-radius-6);\n background: var(--dsw-alias-bg-module-platform);\n font-family: var(--ds-font-family-code);\n font-size: var(--dsw-font-xxs-12-font-size);\n box-decoration-break: clone;\n}\n\n._discoverTags_485ym_733 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_485ym_740 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_485ym_740:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_485ym_750 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_485ym_758 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverVersionName_485ym_766 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_485ym_771 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverFailure_485ym_780 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverLoading_485ym_786 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xs-13);\n}\n\n._discoverNotice_485ym_795 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverNotice_485ym_795 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_485ym_813 {\n align-self: center;\n}\n\n._discoverTransport_485ym_817 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportHead_485ym_823 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportTitle_485ym_830 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverTransportHead_485ym_823 ._discoverTransportKind_485ym_835 {\n font: var(--dsw-font-xs-13);\n font-weight: 500;\n}\n\n._discoverTransportHead_485ym_823 ._discoverTransportState_485ym_840 {\n margin-left: 0;\n}\n\n._discoverTransportHead_485ym_823 > :last-child {\n margin-left: auto;\n}\n\n._discoverTransportRows_485ym_848 {\n display: flex;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportRow_485ym_848 {\n display: flex;\n flex: 1;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n cursor: pointer;\n}\n\n._discoverTransportRow_485ym_848:hover {\n border-color: var(--dsw-alias-border-l3);\n}\n\n._discoverTransportRow_485ym_848:has(._discoverTransportRadio_485ym_869:checked) {\n border-color: var(--dsw-alias-label-primary);\n}\n\n._discoverTransportRow_485ym_848:has(._discoverTransportRadio_485ym_869:focus-visible) {\n outline: 2px solid var(--dsw-alias-label-primary);\n outline-offset: 1px;\n}\n\n._discoverTransportRadio_485ym_869 {\n flex: none;\n margin: 0;\n}\n\n._discoverTransportKind_485ym_835 {\n flex: none;\n font: var(--dsw-font-xs-13);\n font-weight: 500;\n}\n\n._discoverTransportState_485ym_840 {\n flex: none;\n margin-left: auto;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverTransportRow_485ym_848[data-state='ok'] ._discoverTransportState_485ym_840 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._discoverTransportRow_485ym_848[data-state='auth'] ._discoverTransportState_485ym_840 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverTransportRow_485ym_848[data-state='unreachable'] ._discoverTransportState_485ym_840,\n._discoverTransportRow_485ym_848[data-state='unknown'] ._discoverTransportState_485ym_840 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverTransportCustom_485ym_909 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportInput_485ym_915 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverInstallBar_485ym_920 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-module-platform);\n font: var(--dsw-font-xs-13);\n}\n\n._discoverInstallText_485ym_931 {\n flex: 1;\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDialog_485ym_937 {\n width: min(var(--wb-len-560), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_485ym_941 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_485ym_947 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_485ym_955 {\n display: flex;\n flex-wrap: wrap;\n align-items: flex-start;\n gap: var(--wb-len-12);\n padding: var(--wb-len-10) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverSourceConfirm_485ym_964 {\n margin: 0;\n padding: var(--wb-len-2) 0 var(--wb-len-10);\n list-style: none;\n}\n\n._discoverSourcePick_485ym_970 {\n display: flex;\n flex: 1;\n align-items: flex-start;\n gap: var(--wb-len-10);\n min-width: 0;\n cursor: pointer;\n}\n\n._discoverSourceRadio_485ym_979 {\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: var(--wb-len-2) 0 0;\n accent-color: var(--dsw-alias-brand-primary);\n}\n\n._discoverSourceMain_485ym_987 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._discoverSourceHead_485ym_995 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._discoverSourceUrl_485ym_1003 {\n display: block;\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverSourceMore_485ym_1013 {\n flex: none;\n}\n\n._discoverSourceLoading_485ym_1017 {\n display: flex;\n flex: none;\n align-items: center;\n gap: var(--wb-len-6);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n white-space: nowrap;\n}\n\n._discoverSourceHint_485ym_1027 {\n display: flex;\n flex-basis: 100%;\n align-items: center;\n gap: var(--wb-len-6);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverSourceHint_485ym_1027 svg {\n flex: none;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverSourceError_485ym_1041 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_485ym_1047 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_485ym_1053 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_485ym_1058 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_485ym_1064 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_485ym_1069 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_485ym_1075 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_485ym_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_485ym_473._discoverSkeletonFill_485ym_1075 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_485ym_1084 {\n display: block;\n height: var(--wb-len-12);\n margin: var(--wb-len-4) 0;\n border-radius: var(--dsw-radius-xs);\n}\n\n._discoverSkeletonTitle_485ym_1091 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_485ym_1095 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_485ym_1 {\n 0% {\n opacity: 1;\n }\n 40% {\n opacity: 0.6;\n }\n 80%,\n to {\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._discoverSkeletonFill_485ym_1075 {\n animation: none;\n }\n}\n\n._block_mxnbc_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n padding: var(--wb-len-2) 0 var(--wb-len-8);\n min-width: 0;\n}\n\n._head_mxnbc_9 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._title_mxnbc_16 {\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._fact_mxnbc_22 {\n margin: 0;\n font: var(--dsw-font-xxs-12);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._actions_mxnbc_30 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-2);\n margin-left: calc(-1 * var(--wb-len-8));\n}\n\n._hint_mxnbc_38 {\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._output_mxnbc_44 {\n margin-top: var(--wb-len-2);\n min-width: 0;\n}\n._check_1g6tv_1 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n min-width: 0;\n}\n\n._status_1g6tv_8 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-caption);\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n}\n\n._button_1g6tv_15 {\n flex: none;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n}\n\n._icon_1g6tv_22 {\n display: inline-flex;\n}\n\n@media (max-width: 720px) {\n ._status_1g6tv_8 {\n display: none;\n }\n}\n._foot_1ud1j_1 {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._footText_1ud1j_13 {\n flex: 1;\n min-width: 0;\n}\n\n._footTextMd_1ud1j_18 {\n flex: 1;\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n._wide_1lv8f_1 {\n justify-content: center;\n width: 100%;\n height: var(--wb-len-40);\n border-radius: var(--dsw-radius-md);\n}\n\n._dialog_1lv8f_8 {\n width: min(var(--wb-len-560), 100%);\n max-height: min(var(--wb-len-800), 100%);\n}\n\n._content_1lv8f_13 {\n min-height: 0;\n overflow: auto;\n}\n\n._stack_1lv8f_18 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._body_1lv8f_25 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._field_1lv8f_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._input_1lv8f_39 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-14);\n}\n\n._registryField_1lv8f_45 {\n height: var(--wb-len-32);\n margin-left: var(--wb-len-26);\n padding: 0 var(--wb-len-10);\n}\n\n._options_1lv8f_51 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8) var(--wb-len-12);\n}\n\n._guideToggle_1lv8f_59 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-4);\n align-self: flex-start;\n margin-top: var(--wb-len-4);\n padding: 0;\n border: 0;\n background: transparent;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._guideToggle_1lv8f_59:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._guideToggle_1lv8f_59 svg,\n._registryToggle_1lv8f_78 svg {\n transition: transform var(--wb-dur-0-12) ease;\n}\n\n._guideToggle_1lv8f_59[aria-expanded='true'] svg,\n._registryToggle_1lv8f_78[aria-expanded='true'] svg {\n transform: rotate(180deg);\n}\n\n._registryWrap_1lv8f_87 {\n position: relative;\n flex: none;\n}\n\n._registryToggle_1lv8f_78 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n height: var(--wb-len-26);\n padding: 0 var(--wb-len-8) 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n font: inherit;\n font-size: var(--wb-font-12-5);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._registryToggle_1lv8f_78:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._registryToggle_1lv8f_78:disabled {\n cursor: default;\n opacity: 0.6;\n}\n\n._registryToggle_1lv8f_78[aria-expanded='true'] {\n border-color: var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n._registryChosen_1lv8f_121 {\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n\n._registry_1lv8f_45 {\n position: fixed;\n z-index: var(--wb-z-1100);\n box-sizing: border-box;\n width: min(var(--wb-len-440), 100vw - var(--wb-len-24));\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-12);\n border: 0;\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-2);\n --dsw-elevation-stroke-color: var(--dsw-alias-border-l3);\n box-shadow: var(--dsw-elevation-prominent);\n}\n\n._registryOption_1lv8f_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid transparent;\n border-radius: var(--dsw-radius-lg);\n cursor: pointer;\n}\n\nlabel._registryOption_1lv8f_143 {\n flex-direction: row;\n align-items: flex-start;\n gap: var(--wb-len-10);\n}\n\n._registryPick_1lv8f_159 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n cursor: pointer;\n}\n\n._registryOption_1lv8f_143[data-checked='true'] {\n border-color: color-mix(in srgb, var(--dsw-alias-brand-primary) 40%, transparent);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._registryOption_1lv8f_143 input[type='radio'] {\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: var(--wb-len-2) 0 0;\n accent-color: var(--dsw-alias-brand-primary);\n}\n\n._registryTitle_1lv8f_179 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n font: var(--dsw-font-xs-13);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n._registryHint_1lv8f_189 {\n margin-left: var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._inputError_1lv8f_197 {\n margin: var(--wb-len-neg-4) 0 0 var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._guide_1lv8f_59 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._guideList_1lv8f_214 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._guideItem_1lv8f_223 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0;\n}\n\n._guideIndex_1lv8f_230 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n border-radius: var(--wb-radius-pill);\n corner-shape: round;\n background: var(--dsw-alias-bg-module-platform);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._guideMain_1lv8f_244 {\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: 0;\n min-width: 0;\n}\n\n._guideTitle_1lv8f_252 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n._guideHint_1lv8f_258 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._guideExample_1lv8f_264 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._guideExample_1lv8f_264 code {\n font-family: var(--dsw-font-mono, monospace);\n}\n\n._guideExampleLabel_1lv8f_274 {\n color: var(--dsw-alias-label-caption);\n}\n\n._footer_1lv8f_278 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-20);\n width: 100%;\n}\n\n._hero_1lv8f_285 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0 var(--wb-len-4);\n text-align: center;\n}\n\n._heroIcon_1lv8f_294 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-44);\n height: var(--wb-len-44);\n color: var(--dsw-alias-label-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='done'] {\n color: var(--dsw-alias-state-success-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='error'] {\n color: var(--dsw-alias-state-warn-label);\n}\n\n._pendingTitle_1lv8f_311 {\n margin: 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 500;\n color: var(--dsw-alias-label-secondary);\n}\n\n._wizardTitle_1lv8f_319 {\n margin: 0;\n font-size: var(--wb-font-18);\n line-height: var(--wb-len-26);\n font-weight: 600;\n}\n\n._subject_1lv8f_326 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n text-align: center;\n}\n\n._subjectName_1lv8f_337 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n overflow-wrap: anywhere;\n}\n\n._subjectMeta_1lv8f_343,\n._subjectDesc_1lv8f_344 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._result_1lv8f_351,\n._resultWarn_1lv8f_352 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._resultWarn_1lv8f_352 {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);\n}\n\n._resultMeta_1lv8f_365 {\n margin: 0;\n padding: 0 var(--wb-len-12);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._approval_1lv8f_373 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-state-warn-primary);\n border-radius: var(--dsw-radius-lg);\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._approvalTitle_1lv8f_383 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._approvalText_1lv8f_390 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._approvalCaution_1lv8f_396 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n font-weight: 600;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._note_1lv8f_403 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._noteWarn_1lv8f_410 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._noteError_1lv8f_414 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._problem_1lv8f_418 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._detailLabel_1lv8f_425 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._detail_1lv8f_425 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-3);\n font-family: var(--dsw-font-mono, monospace);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n}\n._note_1enlz_1 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._note_1enlz_1 > svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n._slot_1t7dx_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1t7dx_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1t7dx_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1t7dx_31 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._paused_1t7dx_35 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._trouble_1t7dx_39 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._pulse_1t7dx_43 {\n animation: _wb-debug-breathe_1t7dx_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-debug-breathe_1t7dx_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1t7dx_43 {\n animation: none;\n }\n}\n\n._entry_1t7dx_64 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1t7dx_71 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1t7dx_78 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1t7dx_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: 0;\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n}\n\n._act_1t7dx_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1t7dx_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._actStop_1t7dx_110:hover,\n._actStop_1t7dx_110:focus-visible {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._actArmed_1t7dx_115,\n._actArmed_1t7dx_115:hover,\n._actArmed_1t7dx_115:focus-visible {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n width: auto;\n color: var(--dsw-alias-state-error-primary);\n gap: var(--wb-len-4);\n padding: 0 var(--wb-len-7);\n}\n\n._actLabel_1t7dx_125 {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._entryLine_1t7dx_131 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1t7dx_138 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1t7dx_150 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1t7dx_156 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1t7dx_162 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._slot_1gkj9_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1gkj9_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1gkj9_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1gkj9_31 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._done_1gkj9_35 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._pulse_1gkj9_39 {\n animation: _wb-record-breathe_1gkj9_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-record-breathe_1gkj9_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1gkj9_39 {\n animation: none;\n }\n}\n\n._entry_1gkj9_60 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1gkj9_67 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1gkj9_74 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1gkj9_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-22);\n padding: 0 var(--wb-len-7);\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._act_1gkj9_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1gkj9_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._entryLine_1gkj9_108 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1gkj9_115 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1gkj9_127 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1gkj9_133 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1gkj9_139 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._item_lyox9_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n}\n\n._item_lyox9_1 + ._item_lyox9_1 {\n padding-top: var(--wb-len-14);\n border-top: var(--wb-len-0-5) solid var(--dsw-alias-settings-card-stroke);\n}\n\n._head_lyox9_12 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._title_lyox9_19 {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._description_lyox9_31 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._rows_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._row_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-settings-card-stroke);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-settings-card-fill);\n}\n\n._head_85r3w_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._pick_85r3w_27 {\n flex: 0 1 auto;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._pick_85r3w_27 > span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._code_85r3w_39 {\n --dsl-code-block-background: var(--dsw-alias-bg-layer-1);\n margin: 0;\n}\n\n._missing_85r3w_44,\n._conflict_85r3w_45 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-warn-primary);\n}\n._body_11oac_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._sources_11oac_7 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._sourcesLabel_11oac_14 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\nbutton._sourceOn_11oac_19 {\n border-color: var(--dsw-alias-brand-primary);\n}\n._sourceCount_11oac_22 {\n margin-left: var(--wb-len-4);\n font-variant-numeric: tabular-nums;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._reading_11oac_29 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._status_11oac_35 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failure_11oac_45 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n column-gap: var(--wb-len-10);\n row-gap: var(--wb-len-2);\n color: var(--dsw-alias-state-error-primary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n\n._failureTitle_11oac_55 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._failureHint_11oac_62 {\n grid-column: 1;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failureAction_11oac_67 {\n grid-column: 2;\n grid-row: 1;\n justify-self: end;\n}\n\n._foot_11oac_73 {\n display: flex;\n justify-content: flex-end;\n}\n._body_lox98_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._field_lox98_7 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._input_lox98_13 {\n width: 100%;\n}\n\n._label_lox98_17 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\n._hint_lox98_22 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._copy_lox98_28 {\n display: flex;\n flex-wrap: wrap;\n gap: var(--wb-len-8) var(--wb-len-16);\n margin: 0;\n padding: 0;\n border: 0;\n}\n\n._copy_lox98_28 legend {\n padding: 0;\n margin-bottom: var(--wb-len-6);\n}\n\n._actions_lox98_42 {\n display: flex;\n justify-content: flex-end;\n}\n\n._commandLabel_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n}\n\n._command_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-6) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow-wrap: anywhere;\n}\n._body_zi2j5_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._lead_zi2j5_7 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._title_zi2j5_14 {\n font-size: var(--wb-font-18);\n line-height: var(--wb-line-24);\n}\n._hint_zyzt3_1[hidden],\n._actions_zyzt3_2[hidden],\n._progress_zyzt3_3[hidden],\n._commandRow_zyzt3_4[hidden],\n._bridge_zyzt3_5[hidden],\n._raw_zyzt3_6[hidden] {\n display: none;\n}\n\n._gate_zyzt3_10 {\n position: fixed;\n inset: 0;\n z-index: var(--wb-z-top);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--wb-len-24);\n background: var(--dsw-alias-bg-base);\n}\n\n._card_zyzt3_21 {\n width: 100%;\n max-width: var(--wb-len-420);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-16);\n text-align: center;\n}\n\n._card_zyzt3_21:has(._actions_zyzt3_2:not([hidden])),\n._card_zyzt3_21:has(._bridge_zyzt3_5:not([hidden])) {\n max-width: var(--wb-len-520);\n}\n\n._title_zyzt3_36 {\n margin: 0;\n font-size: var(--dsw-font-base-16-font-size);\n line-height: var(--wb-line-24);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._steps_zyzt3_51 {\n list-style: none;\n margin: var(--wb-len-6) 0 0;\n padding: 0;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n text-align: left;\n}\n\n._step_zyzt3_51 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-6) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._step_zyzt3_51[data-status='running'] {\n color: var(--dsw-alias-label-primary);\n}\n\n._mark_zyzt3_78 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-14);\n height: var(--wb-len-14);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._step_zyzt3_51[data-status='ok'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._step_zyzt3_51[data-status='warn'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._step_zyzt3_51[data-status='failed'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._label_zyzt3_103 {\n flex: none;\n}\n\n._detail_zyzt3_107 {\n margin-left: auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._progress_zyzt3_3 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._elapsed_zyzt3_125 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._error_zyzt3_133 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n max-height: var(--wb-len-120);\n overflow: auto;\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n white-space: pre-wrap;\n word-break: break-all;\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._commandRow_zyzt3_4 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n margin: 0 0 var(--wb-len-8);\n padding-right: var(--wb-len-4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._copy_zyzt3_159 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._copy_zyzt3_159:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._command_zyzt3_4 {\n flex: 1;\n min-width: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-primary);\n}\n\n._buttons_zyzt3_192 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-12);\n}\n\n._mockSlot_zyzt3_199 {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n justify-content: center;\n background: var(--dsw-alias-bg-base);\n}\n\n._button_zyzt3_192 {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n}\n\n._button_zyzt3_192:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._button_zyzt3_192:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n._actions_zyzt3_2,\n._bridge_zyzt3_5 {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-14) var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-1);\n text-align: left;\n}\n\n._fixTitle_zyzt3_250 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._actions_zyzt3_2 ._hint_zyzt3_1,\n._bridge_zyzt3_5 ._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._actions_zyzt3_2 ._commandRow_zyzt3_4,\n._bridge_zyzt3_5 ._commandRow_zyzt3_4 {\n margin: 0;\n}\n\n._actions_zyzt3_2 ._buttons_zyzt3_192,\n._bridge_zyzt3_5 ._buttons_zyzt3_192 {\n justify-content: flex-start;\n}\n\n._raw_zyzt3_6 {\n box-sizing: border-box;\n width: 100%;\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._rawSummary_zyzt3_286 {\n cursor: pointer;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._actions_zyzt3_2 ._error_zyzt3_133,\n._bridge_zyzt3_5 ._error_zyzt3_133 {\n margin-top: var(--wb-len-6);\n}\n\n._bridgeLines_zyzt3_296 {\n margin: 0;\n padding-left: var(--wb-len-18);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._bridgeLine_zyzt3_296 a {\n display: block;\n margin-top: var(--wb-len-4);\n width: fit-content;\n}\n\n._link_zyzt3_313 {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n\n._link_zyzt3_313::after {\n content: '↗';\n margin-left: var(--wb-len-2);\n}\n\n._link_zyzt3_313:hover {\n text-decoration: underline;\n}\n\n._loading_zyzt3_327 {\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._loading_zyzt3_327[hidden] {\n display: none;\n}\n\n._loadingMotion_zyzt3_336 {\n transform-origin: center;\n animation: _wb-spin_zyzt3_1 var(--wb-dur-1-5) linear infinite;\n}\n\n._loadingTrack_zyzt3_341,\n._loadingArc_zyzt3_342 {\n fill: none;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n}\n\n._loadingTrack_zyzt3_341 {\n opacity: 0.25;\n}\n\n._loadingArc_zyzt3_342 {\n stroke-dasharray: 12 150;\n animation: _wb-dash_zyzt3_1 var(--wb-dur-1-5) ease-in-out infinite;\n}\n\n@keyframes _wb-spin_zyzt3_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes _wb-dash_zyzt3_1 {\n 0% {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 24 150;\n stroke-dashoffset: -6;\n }\n to {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._loadingMotion_zyzt3_336,\n ._loadingArc_zyzt3_342 {\n animation: none;\n }\n}\n._changelog_1q6pj_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-10);\n min-width: 0;\n}\n\n._changelogTitle_1q6pj_9 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._changelogMissing_1q6pj_15 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._changelogBody_1q6pj_21 {\n max-height: var(--wb-len-320);\n overflow: auto;\n padding: var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n}\n._group_1hxis_1 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n}\n\n._button_1hxis_7 {\n flex: none;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n color: var(--dsw-alias-label-secondary);\n}\n\n._button_1hxis_7:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._active_1hxis_19 {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._icon_1hxis_23 {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n._icon_1hxis_23 svg {\n display: block;\n width: var(--wb-len-15);\n height: var(--wb-len-15);\n}\n\n._mirror_1hxis_35 {\n transform: scaleX(-1);\n}\n._stripTabs_1dqp4_1 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n min-width: 0;\n overflow: hidden;\n}\n\n._tab_1dqp4_9 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: none;\n font: inherit;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-16);\n max-width: 100%;\n}\n\n._tabActive_1dqp4_25 {\n color: var(--dsw-alias-label-primary);\n}\n\n._tabQuiet_1dqp4_29 {\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._tabQuiet_1dqp4_29:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._tabTitle_1dqp4_39 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._sep_1dqp4_49 {\n flex: none;\n color: var(--dsw-alias-label-dimmed);\n}\n._actions_smeq7_1 {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: var(--wb-len-8);\n max-width: 100%;\n}\n\n._action_smeq7_1 {\n flex: none;\n white-space: nowrap;\n}\n\n@container (max-width: 340px) {\n ._actions_smeq7_1 {\n flex-direction: column;\n width: var(--wb-len-220);\n max-width: 100%;\n }\n\n ._action_smeq7_1 {\n width: 100%;\n }\n}\n._trigger_15ptp_1 {\n display: flex;\n align-items: center;\n}\n\n._pop_15ptp_6 {\n position: absolute;\n top: calc(var(--wb-len-38) + var(--wb-len-8));\n right: var(--wb-len-6);\n z-index: var(--wb-z-30);\n width: min(var(--wb-len-360), calc(100% - var(--wb-len-12)));\n max-width: calc(100vw - var(--wb-len-48));\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-2);\n box-shadow: var(--dsw-shadow-lv3);\n overflow: hidden;\n}\n\n._head_15ptp_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-10) var(--wb-len-12) var(--wb-len-9) var(--wb-len-14);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._title_15ptp_28 {\n flex: 1;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._rowControls_15ptp_36 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._reset_15ptp_43 {\n flex: none;\n padding: var(--wb-len-3) var(--wb-len-8);\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._reset_15ptp_43:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._reset_15ptp_43:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._list_15ptp_65 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._row_15ptp_36 {\n position: relative;\n display: grid;\n grid-template-columns: 12px minmax(0, 1fr) auto;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-sm);\n cursor: default;\n}\n\n._rowDragging_15ptp_85 {\n cursor: grabbing;\n}\n\n._rowBlocked_15ptp_89 {\n cursor: not-allowed;\n}\n\n._listDragging_15ptp_93 ._rowControls_15ptp_36 {\n pointer-events: none;\n}\n\n._row_15ptp_36:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._rowOff_15ptp_101 {\n opacity: 0.55;\n}\n\n._rowOff_15ptp_101:hover {\n opacity: 1;\n}\n\n._rowOver_15ptp_109::before {\n content: '';\n position: absolute;\n top: var(--wb-len-neg-3);\n left: var(--wb-len-8);\n right: var(--wb-len-8);\n height: var(--wb-len-2);\n background: var(--dsw-alias-brand-primary);\n}\n\n._ghost_15ptp_119 {\n position: fixed;\n z-index: var(--wb-z-40);\n pointer-events: none;\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n box-shadow: var(--wb-static-shadow-ghost);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n white-space: nowrap;\n}\n\n._grip_15ptp_134 {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: center;\n color: var(--dsw-alias-label-tertiary);\n user-select: none;\n cursor: grab;\n touch-action: none;\n}\n\n._gripDragging_15ptp_144 {\n cursor: grabbing;\n}\n\n._gripBlocked_15ptp_148 {\n cursor: not-allowed;\n}\n\n._label_15ptp_152 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._name_15ptp_159 {\n min-width: 0;\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n\n._error_15ptp_170 {\n margin: 0;\n padding: 0 var(--wb-len-14) var(--wb-len-10);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._dep_15ptp_178 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n}\n\n._group_15ptp_186 {\n padding-top: var(--wb-len-6);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._groupTitle_15ptp_191 {\n margin: 0;\n padding: var(--wb-len-2) var(--wb-len-8) 0 var(--wb-len-14);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n font-weight: 400;\n color: var(--dsw-alias-label-tertiary);\n}\n._panel_1whum_1 {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: var(--wb-z-10);\n visibility: hidden;\n}\n\n._panel_1whum_1[data-fullscreen] {\n z-index: var(--wb-z-40);\n}\n\n._panel_1whum_1[data-open] {\n visibility: visible;\n}\n\n._columns_1whum_18 {\n display: block;\n column-gap: var(--wb-len-12);\n}\n\n._cell_1whum_23 {\n display: flow-root;\n min-width: 0;\n break-inside: avoid;\n margin-bottom: var(--wb-len-12);\n}\n._root_1cmz0_1 {\n position: relative;\n flex: none;\n margin: 0 var(--wb-len-2) var(--wb-len-4);\n}\n\n._rail_1cmz0_7 {\n margin: 0 0 var(--wb-len-4);\n}\n\n._glyphBox_1cmz0_11 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n\n._glyph_1cmz0_11 {\n position: relative;\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._glyphActive_1cmz0_30 {\n color: var(--dsw-alias-state-business-primary);\n}\n\n._triggerName_1cmz0_34 {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n font-size: var(--wb-font-row);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n._dir_1cmz0_45 {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._name_1cmz0_53 {\n flex: 0 1 auto;\n max-width: 50%;\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._triggerName_1cmz0_34 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._row_1cmz0_66 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n width: 100%;\n min-width: 0;\n}\n\n._trailing_1cmz0_74 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n margin-inline-start: auto;\n}\n\n._trailing_1cmz0_74 ._rowAction_1cmz0_84 {\n width: var(--wb-len-20);\n min-width: var(--wb-len-20);\n height: var(--wb-len-20);\n min-height: var(--wb-len-20);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n}\n\n._row_1cmz0_66 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._current_1cmz0_97 {\n flex: none;\n display: inline-flex;\n align-items: center;\n color: var(--dsw-alias-label-primary);\n}\n._dot_sosf1_1 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n._overlay_sosf1_8 {\n position: absolute;\n inset-block-start: var(--wb-len-neg-3);\n inset-inline-end: var(--wb-len-neg-3);\n}\n._tag_g9dg8_1 {\n flex: none;\n margin-inline-start: auto;\n}\n._dialog_1vye5_1 {\n width: min(var(--wb-len-420), 100%);\n}\n\n._stack_1vye5_5 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._input_1vye5_12 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-12);\n}\n\n._meta_1vye5_18 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n._dot_14w1n_1 {\n display: inline-flex;\n align-items: center;\n}\n\n._hover_14w1n_6 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._blocker_1oaj0_1 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-20) var(--wb-len-16);\n text-align: center;\n}\n\n._icon_1oaj0_10 {\n display: flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._title_1oaj0_15 {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_1oaj0_23 {\n margin: 0;\n max-width: var(--wb-len-42em);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n text-wrap: pretty;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 {\n align-items: flex-start;\n gap: var(--wb-len-6);\n padding: var(--wb-len-4) 0 var(--wb-len-2);\n text-align: left;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._title_1oaj0_15 {\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._hint_1oaj0_23 {\n max-width: 100%;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._actions_1oaj0_48 {\n margin-top: var(--wb-len-8);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._raw_1oaj0_52 {\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._actions_1oaj0_48 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-6);\n}\n\n._raw_1oaj0_52 {\n margin-top: var(--wb-len-10);\n width: 100%;\n max-width: var(--wb-len-360);\n text-align: left;\n}\n\n._notice_1oaj0_71 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: start;\n column-gap: var(--wb-len-10);\n margin: 0 0 var(--wb-len-10);\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-left: 2px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._notice_1oaj0_71._noticeFlat_1oaj0_84 {\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n}\n\n._noticeText_1oaj0_91 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-3);\n min-width: 0;\n}\n\n._noticeTitle_1oaj0_98 {\n font-size: var(--wb-font-12-5);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._noticeHint_1oaj0_105 {\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._noticeActions_1oaj0_112 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-neg-2);\n}\n\n._failure_1oaj0_119 {\n margin: var(--wb-len-8) 0 0;\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._failureDetail_1oaj0_127 {\n display: block;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-label-tertiary);\n white-space: pre-wrap;\n}\n\n._inlineAction_1oaj0_134 {\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n}\n\n._inlineAction_1oaj0_134:disabled {\n opacity: 0.6;\n cursor: default;\n}\n\n._rawText_1oaj0_146 {\n margin: var(--wb-len-6) 0 0;\n max-width: 100%;\n}\n/*$vite$:1*/";
15634
16238
  function workbenchCss() {
15635
16239
  return `${tokens_default}\n${palette_default}\n${scale_default}\n${sidebar_default}\n${sidebar_app_default}\n${rightbar_default}\n${chrome_default}\n${board_default}\n${motion_default}\n${COMPONENT_CSS_MARKER}`;
15636
16240
  }
@@ -15879,7 +16483,7 @@ function mount(ctx) {
15879
16483
  inject: () => ({
15880
16484
  t: ctx.locale.bind(LOCALE_NS),
15881
16485
  units: units.all(),
15882
- renderShell: shellApprovalDetail
16486
+ renderShell: shellApprovalRenderer(units.declared)
15883
16487
  })
15884
16488
  }, ApprovalDetail));
15885
16489
  ctx.slots.inject("conversation.session.header.corner", () => ctx.slots.register({