dsh-edge 0.2.0-alpha.2 → 0.2.0

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 (43) hide show
  1. package/README.i18n.yaml +2 -2
  2. package/README.md +6 -6
  3. package/README.zh.md +6 -6
  4. package/THIRD_PARTY_NOTICES.md +387 -1131
  5. package/dist/assets/index-BNMwCG9c.css +1 -0
  6. package/dist/assets/index-CA9Bpko5.js +96 -0
  7. package/dist/assets/langs/{php-D-uCvoST.js → php-DDkx9sim.js} +2 -2
  8. package/dist/assets/langs/{ruby-DEItuUFs.js → ruby-DCxyoPen.js} +2 -2
  9. package/dist/assets/{vendor-Cjbwl5VI.js → vendor-D22_Mp1f.js} +2 -2
  10. package/dist/index.html +26 -5
  11. package/dist/plugins/@deepseek-ai/dsh-api-remotes/client.js +166 -27
  12. package/dist/plugins/@deepseek-ai/dsh-client-connection/client.js +136 -19
  13. package/dist/plugins/@deepseek-ai/dsh-client-locale/client.js +51 -12
  14. package/dist/plugins/@deepseek-ai/dsh-client-modules/client.js +188 -123
  15. package/dist/plugins/@deepseek-ai/dsh-client-runtime/client.js +43 -8
  16. package/dist/plugins/@deepseek-ai/dsh-client-ui-agent-preset/client.js +54 -54
  17. package/dist/plugins/@deepseek-ai/dsh-client-ui-brand-official/client.js +50 -0
  18. package/dist/plugins/@deepseek-ai/dsh-client-ui-commands/client.js +46 -17
  19. package/dist/plugins/@deepseek-ai/dsh-client-ui-conversation/client.js +805 -486
  20. package/dist/plugins/@deepseek-ai/dsh-client-ui-deliverables/client.js +5 -5
  21. package/dist/plugins/@deepseek-ai/dsh-client-ui-input-trigger/client.js +82 -26
  22. package/dist/plugins/@deepseek-ai/dsh-client-ui-jobs/client.js +7 -7
  23. package/dist/plugins/@deepseek-ai/dsh-client-ui-layout/client.js +2 -2
  24. package/dist/plugins/@deepseek-ai/dsh-client-ui-model-selection/client.js +18 -18
  25. package/dist/plugins/@deepseek-ai/dsh-client-ui-permission-presets/client.js +96 -82
  26. package/dist/plugins/@deepseek-ai/dsh-client-ui-renderer/client.js +989 -0
  27. package/dist/plugins/@deepseek-ai/dsh-client-ui-settings/client.js +1177 -67
  28. package/dist/plugins/@deepseek-ai/dsh-client-ui-settings-general/client.js +61 -65
  29. package/dist/plugins/@deepseek-ai/dsh-client-ui-sidebar/client.js +51 -21
  30. package/dist/plugins/@deepseek-ai/dsh-client-ui-skill/client.js +12 -12
  31. package/dist/plugins/@deepseek-ai/dsh-client-ui-subagent/client.js +18 -45
  32. package/dist/plugins/@deepseek-ai/dsh-client-ui-theme/client.js +46 -3
  33. package/dist/plugins/@deepseek-ai/dsh-client-ui-tool/client.js +102 -62
  34. package/dist/plugins/@deepseek-ai/dsh-client-ui-trajectory/client.js +143 -142
  35. package/dist/plugins/@deepseek-ai/dsh-client-ui-user-questions/client.js +25 -25
  36. package/dist/plugins/@deepseek-ai/dsh-client-ui-workflow-run/client.js +261 -86
  37. package/dist/plugins/@deepseek-ai/dsh-client-ui-workspace/client.js +72 -62
  38. package/package.json +22 -22
  39. package/scripts/legal-files.mjs +2 -1
  40. package/worker/direct/index.js +692 -688
  41. package/worker/isolated/index.js +469 -465
  42. package/dist/assets/index-C-1AiF3k.js +0 -112
  43. package/dist/assets/index-CSGf6Qzd.css +0 -1
@@ -167,14 +167,14 @@ window.__ModuleLoader__.load({
167
167
  document.head.appendChild(tag);
168
168
  }
169
169
  var ProducedFiles_module_css_default = {
170
- "more": "P4kPIW_more",
171
- "measure": "P4kPIW_measure",
172
170
  "file": "P4kPIW_file",
171
+ "label": "P4kPIW_label",
172
+ "measure": "P4kPIW_measure",
173
+ "more": "P4kPIW_more",
174
+ "probe": "P4kPIW_probe",
173
175
  "root": "P4kPIW_root",
174
176
  "row": "P4kPIW_row",
175
- "label": "P4kPIW_label",
176
- "showFolder": "P4kPIW_showFolder",
177
- "probe": "P4kPIW_probe"
177
+ "showFolder": "P4kPIW_showFolder"
178
178
  };
179
179
  //#endregion
180
180
  //#region lib/types/client/ProducedFiles.js
@@ -9,7 +9,37 @@ window.__ModuleLoader__.load({
9
9
  let react_jsx_runtime = require("react/jsx-runtime");
10
10
  let react = require("react");
11
11
  let _deepseek_ai_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
12
+ //#region ../../context/file-reference/src/grammar.ts
13
+ /**
14
+ * Extract an `@path` or `@"path with spaces` token at the cursor. An `@`
15
+ * inside another token, such as an email address, is not a completion trigger.
16
+ * @param line - current editor line.
17
+ * @param cursorCol - cursor column within that line.
18
+ * @returns the active token, or `undefined` outside an `@` token.
19
+ */
20
+ function activeAtToken(line, cursorCol) {
21
+ const beforeCursor = line.slice(0, cursorCol);
22
+ const quoted = /(?:^|\s)(@"([^"]*))$/u.exec(beforeCursor);
23
+ if (quoted?.[1] !== void 0 && quoted[2] !== void 0) return {
24
+ prefix: quoted[1],
25
+ query: quoted[2],
26
+ quoted: true
27
+ };
28
+ const plain = /(?:^|\s)(@([^\s]*))$/u.exec(beforeCursor);
29
+ if (plain?.[1] === void 0 || plain[2] === void 0) return void 0;
30
+ return {
31
+ prefix: plain[1],
32
+ query: plain[2],
33
+ quoted: false
34
+ };
35
+ }
36
+ //#endregion
12
37
  //#region lib/types/core/detect.js
38
+ /**
39
+ * Trigger detection pure core. Scans backward from
40
+ * the caret for a live trigger char under the guard tier and applies the
41
+ * word-boundary rules. Zero React / DOM / cordis.
42
+ */
13
43
  const WORD_CHAR = /[\p{L}\p{N}_]/u;
14
44
  const WHITESPACE = /\s/u;
15
45
  /**
@@ -31,10 +61,10 @@ window.__ModuleLoader__.load({
31
61
  return true;
32
62
  }
33
63
  /**
34
- * Detect a trigger token at the caret. Scans left from the caret and stops
35
- * at the first whitespace (the token under edit never spans whitespace);
36
- * trigger chars failing the guard tier or the word boundary are treated as
37
- * ordinary token chars and the scan continues (`user@host`, URL slashes).
64
+ * Detect a trigger token at the caret. `@` first uses the shared grammar,
65
+ * including an open quoted token that may span whitespace. Slash detection
66
+ * scans left to the first whitespace; slashes failing the word boundary are
67
+ * treated as ordinary token chars and the scan continues (URL slashes).
38
68
  * Guard tiers: plain = both chars live; claimed = '/' fully suppressed,
39
69
  * '@' live; frozen = none.
40
70
  *
@@ -48,15 +78,31 @@ window.__ModuleLoader__.load({
48
78
  */
49
79
  const detectTrigger = (draft, caret, guard) => {
50
80
  if (guard.tier === "frozen") return null;
81
+ const at = activeAtToken(draft, caret);
82
+ if (at !== void 0) {
83
+ const start = caret - at.prefix.length;
84
+ return {
85
+ trigger: "@",
86
+ query: at.query,
87
+ quoted: at.quoted,
88
+ position: draft.search(/\S/) === start ? "leading" : "inline",
89
+ span: {
90
+ start,
91
+ end: caret,
92
+ draftRev: 0
93
+ }
94
+ };
95
+ }
51
96
  for (let i = caret - 1; i >= 0; i--) {
52
97
  const ch = draft.charAt(i);
53
98
  if (WHITESPACE.test(ch)) return null;
54
- if (ch !== "/" && ch !== "@") continue;
55
- if (guard.tier === "claimed" && ch === "/") continue;
99
+ if (ch !== "/") continue;
100
+ if (guard.tier === "claimed") continue;
56
101
  if (!boundaryOk(draft, i, ch)) continue;
57
102
  return {
58
103
  trigger: ch,
59
104
  query: draft.slice(i + 1, caret),
105
+ quoted: false,
60
106
  position: draft.search(/\S/) === i ? "leading" : "inline",
61
107
  span: {
62
108
  start: i,
@@ -82,14 +128,15 @@ window.__ModuleLoader__.load({
82
128
  * Shell-side step before dispatching `hit` on a fresh menu open.
83
129
  *
84
130
  * @param state - Current menu state.
85
- * @param sources - Source names registered for the hit trigger, menu order.
131
+ * @param sources - Sources registered for the hit trigger, in menu order.
86
132
  * @returns State carrying the new pending roster; highlight cleared.
87
133
  */
88
134
  function seedGroups(state, sources) {
89
135
  return {
90
136
  ...state,
91
137
  groups: sources.map((source) => ({
92
- source,
138
+ source: source.name,
139
+ ...source.showGroupTitle === false ? { showGroupTitle: false } : {},
93
140
  status: "pending",
94
141
  items: []
95
142
  })),
@@ -153,7 +200,7 @@ window.__ModuleLoader__.load({
153
200
  hit: ev.hit,
154
201
  generation: state.generation + 1,
155
202
  groups: state.groups.map((g) => ({
156
- source: g.source,
203
+ ...g,
157
204
  status: "pending",
158
205
  items: []
159
206
  })),
@@ -165,7 +212,7 @@ window.__ModuleLoader__.load({
165
212
  if (idx < 0) return state;
166
213
  const items = ev.items ?? [];
167
214
  const groups = state.groups.map((g, i) => i === idx ? {
168
- source: g.source,
215
+ ...g,
169
216
  status: "ready",
170
217
  items
171
218
  } : g);
@@ -276,7 +323,7 @@ window.__ModuleLoader__.load({
276
323
  }
277
324
  };
278
325
  const prev = this.menu.getSnapshot();
279
- const same = !launched && prev.open && prev.hit !== null && prev.hit.trigger === hit.trigger && prev.hit.query === hit.query && prev.hit.span.start === hit.span.start && prev.hit.span.end === hit.span.end;
326
+ const same = !launched && prev.open && prev.hit !== null && prev.hit.trigger === hit.trigger && prev.hit.query === hit.query && prev.hit.quoted === hit.quoted && prev.hit.span.start === hit.span.start && prev.hit.span.end === hit.span.end;
280
327
  this.hit = hit;
281
328
  if (same) return;
282
329
  const roster = this.deps.roster.sources(hit.trigger);
@@ -285,7 +332,7 @@ window.__ModuleLoader__.load({
285
332
  this.reduce({ type: "close" });
286
333
  return;
287
334
  }
288
- if (launched || !prev.open || prev.hit === null || prev.hit.trigger !== hit.trigger) this.menu.set(seedGroups(this.menu.getSnapshot(), roster.map((s) => s.name)));
335
+ if (launched || !prev.open || prev.hit === null || prev.hit.trigger !== hit.trigger) this.menu.set(seedGroups(this.menu.getSnapshot(), roster));
289
336
  this.reduce({
290
337
  type: "hit",
291
338
  hit
@@ -314,7 +361,7 @@ window.__ModuleLoader__.load({
314
361
  this.stopFetch();
315
362
  this.hit = hit;
316
363
  this.launcher.set(source);
317
- this.menu.set(seedGroups(this.menu.getSnapshot(), [source]));
364
+ this.menu.set(seedGroups(this.menu.getSnapshot(), [match]));
318
365
  this.reduce({
319
366
  type: "hit",
320
367
  hit
@@ -421,15 +468,17 @@ window.__ModuleLoader__.load({
421
468
  * input machine applies it inside the same submit attempt — no event).
422
469
  * @param line - trimmed draft; the leading char selects the trigger roster.
423
470
  * @param signal - attempt-scoped abort from the input machine.
471
+ * @param envelope - non-text submission state accompanying the draft.
424
472
  * @returns the winning outcome or undefined (default sink). Rejects when a
425
- * polled source's warmup fails — the caller must not silently downgrade.
473
+ * polled source's warmup fails or the winning source refuses the envelope —
474
+ * the caller must not silently downgrade.
426
475
  */
427
- async adjudicate(line, signal) {
476
+ async adjudicate(line, signal, envelope) {
428
477
  const projection = this.project();
429
478
  for (const src of this.deps.roster.all()) {
430
479
  if (signal.aborted) throw signal.reason instanceof Error ? signal.reason : /* @__PURE__ */ new Error("slash adjudication aborted");
431
480
  if (src.matchEnter === void 0 || !line.startsWith(src.trigger)) continue;
432
- const outcome = await src.matchEnter(projection, line, signal);
481
+ const outcome = await src.matchEnter(projection, line, signal, envelope);
433
482
  if (outcome !== void 0) return outcome;
434
483
  }
435
484
  }
@@ -490,7 +539,8 @@ window.__ModuleLoader__.load({
490
539
  }) === true;
491
540
  if ("text" in outcome) return actx.bail(actx, "slash/input-insert-text", {
492
541
  text: outcome.text,
493
- span
542
+ span,
543
+ ...outcome.continue === true ? { continue: true } : {}
494
544
  }) === true;
495
545
  return actx.bail(actx, "slash/input-insert-reference", {
496
546
  reference: outcome.insert,
@@ -532,6 +582,7 @@ window.__ModuleLoader__.load({
532
582
  const projection = this.project();
533
583
  for (const source of roster) source.candidates(projection, {
534
584
  query: hit.query,
585
+ quoted: hit.quoted,
535
586
  position: hit.position,
536
587
  signal: controller.signal
537
588
  }).then((items) => {
@@ -663,7 +714,7 @@ window.__ModuleLoader__.load({
663
714
  }
664
715
  //#endregion
665
716
  //#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-input-trigger/src/client/MenuView.module.css.mjs
666
- const css = "._3e4SsG_menu{z-index:100;--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border:1px solid var(--dsw-alias-border-inverted);background:var(--dsw-specific-menu);min-width:min(260px,100%);max-width:min(537px,100%);max-height:320px;box-shadow:var(--dsw-shadow-lv3);border-radius:12px;flex-direction:column;padding:4px;display:flex;position:absolute;bottom:calc(100% + 4px);left:0;overflow:hidden}._3e4SsG_viewport{flex-direction:column;min-height:0;display:flex;overflow-y:auto}._3e4SsG_item{cursor:pointer;width:100%;min-height:40px;color:var(--dsw-alias-label-primary);text-align:left;background:0 0;border:none;border-radius:10px;align-items:center;gap:8px;padding:8px 10px;font-size:14px;line-height:22px;display:flex}._3e4SsG_item:hover,._3e4SsG_item._3e4SsG_active{background:var(--dsw-alias-interactive-bg-hover)}._3e4SsG_itemIcon{width:16px;height:16px;color:var(--dsw-alias-label-tertiary);flex:none;justify-content:center;align-items:center;display:inline-flex}._3e4SsG_itemName{text-overflow:ellipsis;white-space:nowrap;flex:none;max-width:40%;overflow:hidden}._3e4SsG_itemDescription{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-tertiary);flex:1;overflow:hidden}._3e4SsG_groupTitle{color:var(--dsw-alias-label-tertiary);padding:8px 10px;font-size:12px;line-height:16px}._3e4SsG_loading{min-height:40px;color:var(--dsw-alias-label-dimmed);align-items:center;padding:8px 10px;font-size:14px;line-height:22px;display:flex}";
717
+ const css = "._3e4SsG_menu{z-index:100;--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border:1px solid var(--dsw-alias-border-inverted);background:var(--dsw-specific-menu);min-width:min(260px,100%);max-width:min(537px,100%);max-height:320px;box-shadow:var(--dsw-shadow-lv3);border-radius:12px;flex-direction:column;padding:4px;display:flex;position:absolute;bottom:calc(100% + 4px);left:0;overflow:hidden}._3e4SsG_viewport{flex-direction:column;min-height:0;display:flex;overflow-y:auto}._3e4SsG_item{cursor:pointer;width:100%;min-height:40px;color:var(--dsw-alias-label-primary);text-align:left;background:0 0;border:none;border-radius:10px;align-items:center;gap:8px;padding:8px 10px;font-size:14px;line-height:22px;display:flex}._3e4SsG_item:hover,._3e4SsG_item._3e4SsG_active{background:var(--dsw-alias-interactive-bg-hover)}._3e4SsG_sectionTitle{min-height:26px;color:var(--dsw-alias-label-tertiary);flex:none;padding:6px 10px 2px;font-size:12px;font-weight:500;line-height:18px}._3e4SsG_sectionTitle:not(:first-child){margin-top:4px}._3e4SsG_itemIcon{width:16px;height:16px;color:var(--dsw-alias-label-tertiary);flex:none;justify-content:center;align-items:center;display:inline-flex}._3e4SsG_itemName{text-overflow:ellipsis;white-space:nowrap;flex:none;max-width:40%;overflow:hidden}._3e4SsG_itemDescription{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-tertiary);flex:1;overflow:hidden}._3e4SsG_groupTitle{color:var(--dsw-alias-label-tertiary);padding:8px 10px;font-size:12px;line-height:16px}._3e4SsG_loading{min-height:40px;color:var(--dsw-alias-label-dimmed);align-items:center;padding:8px 10px;font-size:14px;line-height:22px;display:flex}";
667
718
  const tagId = "@deepseek-ai/dsh-client-ui-input-trigger/MenuView.module.css";
668
719
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
669
720
  const tag = document.createElement("style");
@@ -673,15 +724,16 @@ window.__ModuleLoader__.load({
673
724
  document.head.appendChild(tag);
674
725
  }
675
726
  var MenuView_module_css_default = {
676
- "viewport": "_3e4SsG_viewport",
677
- "itemIcon": "_3e4SsG_itemIcon",
678
- "itemName": "_3e4SsG_itemName",
679
- "item": "_3e4SsG_item",
680
727
  "active": "_3e4SsG_active",
681
728
  "groupTitle": "_3e4SsG_groupTitle",
729
+ "item": "_3e4SsG_item",
730
+ "itemDescription": "_3e4SsG_itemDescription",
731
+ "itemIcon": "_3e4SsG_itemIcon",
732
+ "itemName": "_3e4SsG_itemName",
682
733
  "loading": "_3e4SsG_loading",
683
734
  "menu": "_3e4SsG_menu",
684
- "itemDescription": "_3e4SsG_itemDescription"
735
+ "sectionTitle": "_3e4SsG_sectionTitle",
736
+ "viewport": "_3e4SsG_viewport"
685
737
  };
686
738
  //#endregion
687
739
  //#region lib/types/client/MenuView.js
@@ -737,7 +789,7 @@ window.__ModuleLoader__.load({
737
789
  "aria-activedescendant": highlight !== null ? optionId(highlight.source, highlight.index) : void 0,
738
790
  children: (0, react_jsx_runtime.jsx)("div", {
739
791
  className: MenuView_module_css_default.viewport,
740
- children: state.groups.map((group) => group.status === "ready" && group.items.length === 0 ? null : (0, react_jsx_runtime.jsxs)(react.Fragment, { children: [(0, react_jsx_runtime.jsx)("div", {
792
+ children: state.groups.map((group) => group.status === "ready" && group.items.length === 0 ? null : (0, react_jsx_runtime.jsxs)(react.Fragment, { children: [group.showGroupTitle === false || group.items.some((item) => item.section !== void 0) ? null : (0, react_jsx_runtime.jsx)("div", {
741
793
  className: MenuView_module_css_default.groupTitle,
742
794
  role: "presentation",
743
795
  "data-source": group.source,
@@ -748,7 +800,11 @@ window.__ModuleLoader__.load({
748
800
  children: t("loading")
749
801
  }) : group.items.map((item, index) => {
750
802
  const active = highlight !== null && highlight.source === group.source && highlight.index === index;
751
- return (0, react_jsx_runtime.jsxs)("button", {
803
+ return (0, react_jsx_runtime.jsxs)(react.Fragment, { children: [item.section !== void 0 && item.section !== group.items[index - 1]?.section ? (0, react_jsx_runtime.jsx)("div", {
804
+ className: MenuView_module_css_default.sectionTitle,
805
+ role: "presentation",
806
+ children: item.section
807
+ }) : null, (0, react_jsx_runtime.jsxs)("button", {
752
808
  id: optionId(group.source, index),
753
809
  type: "button",
754
810
  role: "option",
@@ -773,7 +829,7 @@ window.__ModuleLoader__.load({
773
829
  children: item.description
774
830
  })
775
831
  ]
776
- }, `${group.source}:${item.name}`);
832
+ })] }, optionId(group.source, index));
777
833
  })] }, group.source))
778
834
  })
779
835
  });
@@ -18,19 +18,19 @@ window.__ModuleLoader__.load({
18
18
  document.head.appendChild(tag);
19
19
  }
20
20
  var JobListAction_module_css_default = {
21
+ "count": "QsffPG_count",
21
22
  "duration": "QsffPG_duration",
22
23
  "kind": "QsffPG_kind",
23
- "rowDot": "QsffPG_rowDot",
24
- "trigger": "QsffPG_trigger",
25
- "triggerOpen": "QsffPG_triggerOpen",
24
+ "label": "QsffPG_label",
25
+ "menu": "QsffPG_menu",
26
26
  "root": "QsffPG_root",
27
+ "row": "QsffPG_row",
28
+ "rowDot": "QsffPG_rowDot",
27
29
  "rowSettled": "QsffPG_rowSettled",
28
30
  "status": "QsffPG_status",
29
- "menu": "QsffPG_menu",
30
- "row": "QsffPG_row",
31
+ "trigger": "QsffPG_trigger",
31
32
  "triggerDot": "QsffPG_triggerDot",
32
- "count": "QsffPG_count",
33
- "label": "QsffPG_label"
33
+ "triggerOpen": "QsffPG_triggerOpen"
34
34
  };
35
35
  //#endregion
36
36
  //#region lib/types/client/JobListAction.js
@@ -63,11 +63,11 @@ window.__ModuleLoader__.load({
63
63
  document.head.appendChild(tag);
64
64
  }
65
65
  var AppFrame_module_css_default = {
66
- "overlayLayer": "pI_x6G_overlayLayer",
67
66
  "centerCol": "pI_x6G_centerCol",
68
- "frame": "pI_x6G_frame",
69
67
  "detailsCol": "pI_x6G_detailsCol",
68
+ "frame": "pI_x6G_frame",
70
69
  "handle": "pI_x6G_handle",
70
+ "overlayLayer": "pI_x6G_overlayLayer",
71
71
  "sidebarCol": "pI_x6G_sidebarCol"
72
72
  };
73
73
  //#endregion
@@ -231,7 +231,7 @@ window.__ModuleLoader__.load({
231
231
  }
232
232
  //#endregion
233
233
  //#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-model-selection/src/client/ModelSelect.module.css.mjs
234
- const css = "._7KE1Ra_root{min-width:0;position:relative}._7KE1Ra_trigger{min-width:0;max-width:220px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:24px;outline:none;align-items:center;gap:4px;padding:0 4px 0 8px;font-size:13px;font-weight:500;line-height:20px;display:flex}._7KE1Ra_trigger:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}._7KE1Ra_trigger:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-border-l3)}._7KE1Ra_trigger:disabled{color:var(--dsw-alias-label-dimmed);cursor:default}._7KE1Ra_triggerLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}._7KE1Ra_triggerEffort{color:var(--dsw-alias-label-caption);flex:none}._7KE1Ra_chevron{color:var(--dsw-alias-label-caption);flex:none;transition:transform .12s}._7KE1Ra_chevronOpen{transform:rotate(180deg)}._7KE1Ra_menu{z-index:20;border:1px solid var(--dsw-alias-border-inverted);background:var(--dsw-specific-menu);width:min(240px,100vw - 32px);max-height:min(360px,100vh - 96px);box-shadow:var(--dsw-shadow-lv3);color:var(--dsw-alias-label-primary);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border-radius:12px;flex-direction:column;padding:4px;display:flex;position:absolute;bottom:calc(100% + 8px);right:0;overflow:hidden}._7KE1Ra_status,._7KE1Ra_empty{color:var(--dsw-alias-label-tertiary);padding:10px;font-size:13px;line-height:20px}._7KE1Ra_error,._7KE1Ra_warning{background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary);border-radius:8px;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:4px;padding:7px 8px;font-size:12px;line-height:18px;display:flex}._7KE1Ra_warning{background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-state-warn-label)}._7KE1Ra_retry{color:inherit;font:inherit;cursor:pointer;background:0 0;border:none;flex:none;padding:0;font-weight:600}._7KE1Ra_groups{min-height:0;overflow-y:auto}._7KE1Ra_group+._7KE1Ra_group{margin-top:4px}._7KE1Ra_groupTitle{z-index:1;background:var(--dsw-specific-menu);color:var(--dsw-alias-label-tertiary);padding:5px 8px 3px;font-size:12px;font-weight:500;line-height:18px;position:sticky;top:0}._7KE1Ra_option{width:100%;min-height:38px;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:10px;outline:none;align-items:center;gap:8px;padding:6px 8px;display:flex}._7KE1Ra_option:hover:not(:disabled),._7KE1Ra_option:focus-visible{background:var(--dsw-alias-interactive-bg-hover)}._7KE1Ra_selected{background:0 0}._7KE1Ra_option:disabled{color:var(--dsw-alias-label-dimmed);cursor:default}._7KE1Ra_optionCopy{flex-direction:column;flex:1;min-width:0;display:flex}._7KE1Ra_modelName{color:inherit;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;line-height:20px;overflow:hidden}._7KE1Ra_description{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}._7KE1Ra_check{color:var(--dsw-alias-label-primary);flex:0 0 18px;place-items:center;display:grid}._7KE1Ra_cell{width:100%;height:40px;color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:10px;align-items:center;gap:8px;padding:0 10px;font-size:14px;line-height:22px;display:flex}._7KE1Ra_cell:hover{background:var(--dsw-alias-interactive-bg-hover)}._7KE1Ra_cellLabel{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}._7KE1Ra_cellValue{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-tertiary);flex:0 auto;overflow:hidden}._7KE1Ra_cellChevron{color:var(--dsw-alias-label-tertiary);flex:none}";
234
+ const css = "._7KE1Ra_root{min-width:0;position:relative}._7KE1Ra_trigger{min-width:0;max-width:min(360px,45cqw);height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:24px;outline:none;align-items:center;gap:4px;padding:0 4px 0 8px;font-size:13px;font-weight:500;line-height:20px;display:flex}._7KE1Ra_trigger:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}._7KE1Ra_trigger:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-border-l3)}._7KE1Ra_trigger:disabled{color:var(--dsw-alias-label-dimmed);cursor:default}._7KE1Ra_triggerLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}._7KE1Ra_triggerEffort{color:var(--dsw-alias-label-caption);flex:none}._7KE1Ra_chevron{color:var(--dsw-alias-label-caption);flex:none;transition:transform .12s}._7KE1Ra_chevronOpen{transform:rotate(180deg)}._7KE1Ra_menu{z-index:20;border:1px solid var(--dsw-alias-border-inverted);background:var(--dsw-specific-menu);width:max-content;min-width:min(240px,100vw - 32px);max-width:min(420px,100vw - 32px);max-height:min(360px,100vh - 96px);box-shadow:var(--dsw-shadow-lv3);color:var(--dsw-alias-label-primary);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border-radius:12px;flex-direction:column;padding:4px;display:flex;position:absolute;bottom:calc(100% + 8px);right:0;overflow:hidden}._7KE1Ra_status,._7KE1Ra_empty{color:var(--dsw-alias-label-tertiary);padding:10px;font-size:13px;line-height:20px}._7KE1Ra_error,._7KE1Ra_warning{background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary);border-radius:8px;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:4px;padding:7px 8px;font-size:12px;line-height:18px;display:flex}._7KE1Ra_warning{background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-state-warn-label)}._7KE1Ra_retry{color:inherit;font:inherit;cursor:pointer;background:0 0;border:none;flex:none;padding:0;font-weight:600}._7KE1Ra_groups{min-height:0;overflow-y:auto}._7KE1Ra_group+._7KE1Ra_group{margin-top:4px}._7KE1Ra_groupTitle{z-index:1;background:var(--dsw-specific-menu);color:var(--dsw-alias-label-tertiary);padding:5px 8px 3px;font-size:12px;font-weight:500;line-height:18px;position:sticky;top:0}._7KE1Ra_option{box-sizing:border-box;width:auto;min-width:100%;min-height:38px;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:10px;outline:none;align-items:center;gap:8px;padding:6px 8px;display:flex}._7KE1Ra_option:hover:not(:disabled),._7KE1Ra_option:focus-visible{background:var(--dsw-alias-interactive-bg-hover)}._7KE1Ra_selected{background:0 0}._7KE1Ra_option:disabled{color:var(--dsw-alias-label-dimmed);cursor:default}._7KE1Ra_optionCopy{flex-direction:column;flex:1;min-width:0;display:flex}._7KE1Ra_modelName{color:inherit;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;line-height:20px;overflow:hidden}._7KE1Ra_description{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}._7KE1Ra_check{color:var(--dsw-alias-label-primary);flex:0 0 18px;place-items:center;display:grid}._7KE1Ra_cell{box-sizing:border-box;width:auto;min-width:100%;height:40px;color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:10px;align-items:center;gap:8px;padding:0 10px;font-size:14px;line-height:22px;display:flex}._7KE1Ra_cell:hover{background:var(--dsw-alias-interactive-bg-hover)}._7KE1Ra_cellLabel{white-space:nowrap;flex:none}._7KE1Ra_cellValue{text-overflow:ellipsis;white-space:nowrap;text-align:right;min-width:0;color:var(--dsw-alias-label-tertiary);flex:auto;overflow:hidden}._7KE1Ra_cellChevron{color:var(--dsw-alias-label-tertiary);flex:none}";
235
235
  const tagId = "@deepseek-ai/dsh-client-ui-model-selection/ModelSelect.module.css";
236
236
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
237
237
  const tag = document.createElement("style");
@@ -241,31 +241,31 @@ window.__ModuleLoader__.load({
241
241
  document.head.appendChild(tag);
242
242
  }
243
243
  var ModelSelect_module_css_default = {
244
- "description": "_7KE1Ra_description",
245
- "modelName": "_7KE1Ra_modelName",
246
- "trigger": "_7KE1Ra_trigger",
247
- "selected": "_7KE1Ra_selected",
248
- "check": "_7KE1Ra_check",
244
+ "cell": "_7KE1Ra_cell",
249
245
  "cellChevron": "_7KE1Ra_cellChevron",
250
- "warning": "_7KE1Ra_warning",
251
- "retry": "_7KE1Ra_retry",
252
- "status": "_7KE1Ra_status",
253
- "empty": "_7KE1Ra_empty",
246
+ "cellLabel": "_7KE1Ra_cellLabel",
247
+ "cellValue": "_7KE1Ra_cellValue",
248
+ "check": "_7KE1Ra_check",
254
249
  "chevron": "_7KE1Ra_chevron",
250
+ "chevronOpen": "_7KE1Ra_chevronOpen",
251
+ "description": "_7KE1Ra_description",
252
+ "empty": "_7KE1Ra_empty",
255
253
  "error": "_7KE1Ra_error",
256
254
  "group": "_7KE1Ra_group",
257
- "menu": "_7KE1Ra_menu",
258
- "chevronOpen": "_7KE1Ra_chevronOpen",
259
- "triggerLabel": "_7KE1Ra_triggerLabel",
260
- "triggerEffort": "_7KE1Ra_triggerEffort",
261
- "groups": "_7KE1Ra_groups",
262
255
  "groupTitle": "_7KE1Ra_groupTitle",
256
+ "groups": "_7KE1Ra_groups",
257
+ "menu": "_7KE1Ra_menu",
258
+ "modelName": "_7KE1Ra_modelName",
263
259
  "option": "_7KE1Ra_option",
264
260
  "optionCopy": "_7KE1Ra_optionCopy",
265
- "cell": "_7KE1Ra_cell",
266
- "cellLabel": "_7KE1Ra_cellLabel",
261
+ "retry": "_7KE1Ra_retry",
267
262
  "root": "_7KE1Ra_root",
268
- "cellValue": "_7KE1Ra_cellValue"
263
+ "selected": "_7KE1Ra_selected",
264
+ "status": "_7KE1Ra_status",
265
+ "trigger": "_7KE1Ra_trigger",
266
+ "triggerEffort": "_7KE1Ra_triggerEffort",
267
+ "triggerLabel": "_7KE1Ra_triggerLabel",
268
+ "warning": "_7KE1Ra_warning"
269
269
  };
270
270
  //#endregion
271
271
  //#region lib/types/client/ModelSelect.js