dsh-side-chat-plus 0.3.3 → 0.4.0-alpha.1

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.
@@ -20,12 +20,12 @@ window.__ModuleLoader__.load({
20
20
  document.head.appendChild(tag);
21
21
  }
22
22
  var AttachmentRail_module_css_default = {
23
- "arrow": "J5tleW_arrow",
24
- "rail": "J5tleW_rail",
25
- "item": "J5tleW_item",
23
+ "remove": "J5tleW_remove",
26
24
  "root": "J5tleW_root",
25
+ "rail": "J5tleW_rail",
27
26
  "thumbnail": "J5tleW_thumbnail",
28
- "remove": "J5tleW_remove",
27
+ "arrow": "J5tleW_arrow",
28
+ "item": "J5tleW_item",
29
29
  "arrowLeft": "J5tleW_arrowLeft",
30
30
  "arrowRight": "J5tleW_arrowRight"
31
31
  };
@@ -173,11 +173,11 @@ window.__ModuleLoader__.load({
173
173
  document.head.appendChild(tag);
174
174
  }
175
175
  var DropOverlay_module_css_default = {
176
+ "mask": "_9H6qrq_mask",
177
+ "illustration": "_9H6qrq_illustration",
176
178
  "desc": "_9H6qrq_desc",
177
- "title": "_9H6qrq_title",
178
179
  "wrap": "_9H6qrq_wrap",
179
- "mask": "_9H6qrq_mask",
180
- "illustration": "_9H6qrq_illustration"
180
+ "title": "_9H6qrq_title"
181
181
  };
182
182
  //#endregion
183
183
  //#region src/client/attachments/DropOverlay.tsx
@@ -320,9 +320,9 @@ window.__ModuleLoader__.load({
320
320
  document.head.appendChild(tag);
321
321
  }
322
322
  var ImageLightbox_module_css_default = {
323
- "close": "_5IyjUq_close",
324
323
  "image": "_5IyjUq_image",
325
324
  "backdrop": "_5IyjUq_backdrop",
325
+ "close": "_5IyjUq_close",
326
326
  "mask": "_5IyjUq_mask"
327
327
  };
328
328
  //#endregion
@@ -388,10 +388,10 @@ window.__ModuleLoader__.load({
388
388
  document.head.appendChild(tag);
389
389
  }
390
390
  var MessageImage_module_css_default = {
391
- "loading": "_1H6WSq_loading",
392
- "gallery": "_1H6WSq_gallery",
391
+ "frame": "_1H6WSq_frame",
393
392
  "error": "_1H6WSq_error",
394
- "frame": "_1H6WSq_frame"
393
+ "loading": "_1H6WSq_loading",
394
+ "gallery": "_1H6WSq_gallery"
395
395
  };
396
396
  //#endregion
397
397
  //#region src/client/attachments/MessageImage.tsx
@@ -595,6 +595,7 @@ window.__ModuleLoader__.load({
595
595
  "image.unsupported": "不支持的图片格式",
596
596
  "image.tooMany": "图片数量超出限制",
597
597
  "image.fileTooLarge": "图片过大",
598
+ "image.dimensionTooLarge": "图片尺寸超出限制",
598
599
  "settingsNav": "侧边聊天",
599
600
  "settings.lookupTitle": "默认勾选「需要时从工作区 / 主会话查信息」",
600
601
  "settings.lookupDesc": "新会话的侧边聊天默认打开此开关;可在每次聊天中临时更改",
@@ -609,6 +610,15 @@ window.__ModuleLoader__.load({
609
610
  "settings.bringModeDraftDesc": "内容进入主会话输入框,可直接编辑后再发送",
610
611
  "settings.bringModeContextTitle": "注入为折叠提示行",
611
612
  "settings.bringModeContextDesc": "内容作为一条折叠的上下文提示行注入主会话(带来源标记),不写输入框;下次对话时模型可见",
613
+ "settings.panelHomeTitle": "侧边聊天面板位置",
614
+ "settings.panelHomeDesc": "浮动面板固定在窗口右缘;停靠模式把侧聊放进新版右侧栏(与文档预览同一区域),两种模式都不会与内置右侧栏互相遮挡",
615
+ "settings.panelHomeFloatingTitle": "浮动面板(经典)",
616
+ "settings.panelHomeFloatingDesc": "固定在窗口右缘,可拖拽调宽、独立收起",
617
+ "settings.panelHomeDockTitle": "停靠到右侧栏",
618
+ "settings.panelHomeDockDesc": "作为「侧边聊天」标签停靠在新版右侧栏,与文档预览共用同一边栏",
619
+ "dock.title": "侧边聊天",
620
+ "dock.unavailable": "当前部署未提供新版右侧栏,已回退为浮动面板",
621
+ "dock.openFailed": "无法打开右侧栏侧边标签",
612
622
  "insert.direct": "直接带回",
613
623
  "insert.summarize": "摘要后带回",
614
624
  "insert.summarizing": "摘要中…",
@@ -681,6 +691,7 @@ window.__ModuleLoader__.load({
681
691
  "image.unsupported": "Unsupported image type",
682
692
  "image.tooMany": "Too many images",
683
693
  "image.fileTooLarge": "Image too large",
694
+ "image.dimensionTooLarge": "Image dimensions exceed the limit",
684
695
  "settingsNav": "Side chat",
685
696
  "settings.lookupTitle": "Default on: \"look up workspace / parent when needed\"",
686
697
  "settings.lookupDesc": "New conversations start with this switch on; you can still change it per chat",
@@ -695,6 +706,15 @@ window.__ModuleLoader__.load({
695
706
  "settings.bringModeDraftDesc": "Text lands in the main composer so you can edit before sending",
696
707
  "settings.bringModeContextTitle": "As a collapsed context row",
697
708
  "settings.bringModeContextDesc": "Text is injected as a collapsed, source-tagged context row — not into the composer; the model sees it next turn",
709
+ "settings.panelHomeTitle": "Side-chat panel location",
710
+ "settings.panelHomeDesc": "The classic panel floats on the window’s right edge; dock mode puts the side chat inside the new right sidebar (the same rail as document previews). Neither mode covers the built-in sidebar",
711
+ "settings.panelHomeFloatingTitle": "Floating panel (classic)",
712
+ "settings.panelHomeFloatingDesc": "Fixed to the window’s right edge; drag to resize and collapse independently",
713
+ "settings.panelHomeDockTitle": "Dock in the right sidebar",
714
+ "settings.panelHomeDockDesc": "Lives as a \"Side chat\" tab in the new right sidebar, sharing the rail with document previews",
715
+ "dock.title": "Side chat",
716
+ "dock.unavailable": "This deployment has no right sidebar; fell back to the floating panel",
717
+ "dock.openFailed": "Could not open the side-chat tab in the right sidebar",
698
718
  "insert.direct": "Insert directly",
699
719
  "insert.summarize": "Summarize & insert",
700
720
  "insert.summarizing": "Summarizing…",
@@ -725,11 +745,12 @@ window.__ModuleLoader__.load({
725
745
  lookupDefault: false,
726
746
  sendImmediately: true,
727
747
  defaultPrompt: "",
728
- bringMode: "draft"
748
+ bringMode: "draft",
749
+ panelHome: "sidebar-right"
729
750
  };
730
751
  //#endregion
731
752
  //#region \0dsh-css:/home/runner/work/dsh-side-chat/dsh-side-chat/src/client/client.module.css.mjs
732
- const css$1 = ".yw4T5a_selectionMenu{z-index:2147483000;background:var(--dsw-alias-bg-overlay);border:1px solid var(--dsw-alias-border-l3);box-shadow:0 4px 16px var(--dsw-alias-bg-mask-2);pointer-events:auto;border-radius:10px;gap:4px;padding:4px;display:flex;position:fixed;transform:translate(-50%)}.yw4T5a_selectionButton{font-family:var(--dsw-font-family);color:var(--dsw-alias-label-primary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:7px;padding:6px 10px;font-size:13px;line-height:20px}.yw4T5a_selectionButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_selectionButton:disabled{cursor:default;opacity:.55}.yw4T5a_panel{width:var(--dsh-subchat-width,360px);z-index:2147482990;background:var(--dsw-specific-sidebar-fill);border-left:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-family);pointer-events:auto;flex-direction:column;font-size:14px;display:flex;position:fixed;top:0;bottom:0;right:0}.yw4T5a_panelResize{cursor:col-resize;z-index:2;touch-action:none;width:8px;position:absolute;top:0;bottom:0;left:-4px}.yw4T5a_panelHeader{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;justify-content:space-between;align-items:center;padding:12px 14px;display:flex}.yw4T5a_panelTitle{font-weight:600}.yw4T5a_panelHeaderActions{align-items:center;gap:4px;display:flex}.yw4T5a_panelIconButton{width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:999px;place-items:center;display:grid}.yw4T5a_panelIconButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.yw4T5a_panelClose{font-family:var(--dsw-font-family);color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:13px}.yw4T5a_panelClose:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.yw4T5a_collapsedHandle{z-index:2147482990;width:32px;height:32px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-overlay);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;box-shadow:var(--dsw-shadow-lv2);border-radius:999px;place-items:center;display:grid;position:fixed;top:50%;right:8px;transform:translateY(-50%)}.yw4T5a_collapsedHandle:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_questionFab{z-index:2147482990;width:32px;height:32px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-overlay);border:1px solid var(--dsw-alias-state-business-primary);cursor:pointer;box-shadow:var(--dsw-shadow-lv2);border-radius:999px;place-items:center;display:grid;position:fixed}.yw4T5a_questionFab:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_questionFabDot{background:var(--dsw-alias-state-business-primary);border-radius:50%;width:8px;height:8px;position:absolute;top:4px;right:4px}.yw4T5a_questionBlock{border-bottom:1px solid var(--dsw-alias-border-l1);flex-direction:column;flex:none;gap:8px;max-height:40%;padding:8px;display:flex;overflow-y:auto}.yw4T5a_questionBlockActions{justify-content:space-between;align-items:center;display:flex}.yw4T5a_questionToggle{font-family:var(--dsw-font-family);color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:2px 6px;font-size:12px;line-height:18px}.yw4T5a_questionToggle:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_questionDeleteAll{font-family:var(--dsw-font-family);color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:2px 6px;font-size:12px;line-height:18px}.yw4T5a_questionDeleteAll:hover{color:var(--dsw-alias-state-error-primary);background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_questionItemCollapsed{gap:0;padding:8px 12px}.yw4T5a_questionItem{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:12px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.yw4T5a_questionHeader{justify-content:space-between;align-items:center;gap:8px;display:flex}.yw4T5a_questionHeaderText{min-width:0;color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;font-weight:600;line-height:20px;overflow:hidden}.yw4T5a_questionHeaderActions{flex:none;align-items:center;gap:4px;display:flex}.yw4T5a_questionBody{color:var(--dsw-alias-label-primary);white-space:pre-wrap;word-break:break-word;font-size:14px;line-height:22px}.yw4T5a_questionDetail{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:18px}.yw4T5a_questionOption{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:10px;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px 6px 10px;display:flex}.yw4T5a_questionOptionText{min-width:0;color:var(--dsw-alias-label-primary);word-break:break-word;flex:1;font-size:13px;line-height:20px}.yw4T5a_questionOptionLabel{font-weight:500}.yw4T5a_questionOptionDesc{color:var(--dsw-alias-label-secondary)}.yw4T5a_questionBringButton{font-family:var(--dsw-font-family);color:var(--dsw-alias-label-primary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;white-space:nowrap;background:0 0;border-radius:999px;flex:none;padding:2px 10px;font-size:12px;line-height:18px}.yw4T5a_questionBringButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_questionBringButton:disabled{cursor:default;opacity:.55}.yw4T5a_questionDelete{width:22px;height:22px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:6px;flex:none;place-items:center;font-size:14px;line-height:20px;display:grid}.yw4T5a_questionDelete:hover{color:var(--dsw-alias-state-error-primary);background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_panelList{border-bottom:1px solid var(--dsw-alias-border-l1);flex-direction:column;flex:none;gap:2px;max-height:132px;padding:8px;display:flex;overflow-y:auto}.yw4T5a_panelEmpty{color:var(--dsw-alias-label-tertiary);padding:6px 8px;font-size:12px;line-height:18px}.yw4T5a_panelListActions{justify-content:flex-end;padding:0 2px 2px;display:flex}.yw4T5a_panelListDeleteAll{font-family:var(--dsw-font-family);color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:2px 6px;font-size:12px;line-height:18px}.yw4T5a_panelListDeleteAll:hover{color:var(--dsw-alias-state-error-primary);background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_panelListItem{font-family:var(--dsw-font-family);color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:6px 8px;display:flex}.yw4T5a_panelListItem:hover{background:var(--dsw-specific-sidebar-nav-item-hover)}.yw4T5a_panelListItemActive{background:var(--dsw-specific-sidebar-nav-item-active)}.yw4T5a_panelListItemDot{background:var(--dsw-alias-label-tertiary);border-radius:50%;flex:none;width:8px;height:8px}.yw4T5a_panelListItemDot[data-running=\"1\"]{background:var(--dsw-alias-state-business-primary)}.yw4T5a_panelListItemLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;font-family:var(--ds-font-family-code);overflow:hidden}.yw4T5a_panelListItemRow{align-items:center;gap:2px;display:flex}.yw4T5a_panelListItemRow .yw4T5a_panelListItem{flex:1;min-width:0}.yw4T5a_panelListItemRemove{width:22px;height:22px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:6px;flex:none;place-items:center;font-size:14px;line-height:20px;display:grid}.yw4T5a_panelListItemRemove:hover{color:var(--dsw-alias-state-error-primary);background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_panelTranscript{flex-direction:column;flex:1;gap:10px;min-height:0;padding:14px;display:flex;overflow-y:auto}.yw4T5a_messageUser{background:var(--dsw-specific-bubble);color:var(--dsw-alias-label-primary);white-space:pre-wrap;word-break:break-word;border-radius:22px;align-self:flex-end;max-width:86%;padding:10px 16px;font-size:16px;line-height:24px}.yw4T5a_messageAssistant{min-width:0;max-width:100%;color:var(--dsw-alias-label-primary);align-self:flex-start}.yw4T5a_messageActions{gap:6px;margin-top:6px;display:flex}.yw4T5a_messageInsertButton{font-family:var(--dsw-font-family);color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l1);cursor:pointer;background:0 0;border-radius:999px;padding:2px 10px;font-size:12px;line-height:18px}.yw4T5a_messageInsertButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.yw4T5a_messageInsertButton:disabled{cursor:default;opacity:.55}.yw4T5a_reasoningSummary{min-width:0;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:14px;line-height:24px;overflow:hidden}.yw4T5a_reasoningBody{color:var(--dsw-alias-label-tertiary);white-space:pre-wrap;word-break:break-word;padding:4px 0 4px 22px;font-size:14px;line-height:24px}.yw4T5a_panelRunning{color:var(--dsw-alias-label-tertiary);align-self:flex-start;align-items:center;gap:6px;font-size:12px;line-height:18px;display:inline-flex}.yw4T5a_panelRunningDot{background:var(--dsw-alias-state-business-primary);border-radius:50%;flex:none;width:8px;height:8px;animation:1s ease-in-out infinite alternate yw4T5a_panelRunningPulse}.yw4T5a_panelRunningClock{color:var(--dsw-alias-label-caption)}@keyframes yw4T5a_panelRunningPulse{0%{opacity:1}to{opacity:.3}}@media (prefers-reduced-motion:reduce){.yw4T5a_panelRunningDot{animation:none}}.yw4T5a_panelError{color:var(--dsw-alias-state-error-primary);font-size:12px;line-height:18px}.yw4T5a_panelComposer{border:1px solid var(--dsw-alias-border-l2-darkmode-thin);background:var(--dsw-specific-input-major);box-shadow:var(--dsw-shadow-lv2);border-radius:22px;flex-direction:column;flex:none;gap:4px;margin:10px 14px 14px;padding:10px;display:flex}.yw4T5a_panelToolbar{flex:none;justify-content:flex-end;align-items:center;gap:4px;min-width:0;display:flex}.yw4T5a_panelTextarea{box-sizing:border-box;resize:none;width:100%;min-width:0;color:var(--dsw-alias-label-primary);caret-color:var(--dsw-alias-state-business-primary);font-family:var(--dsw-font-family);background:0 0;border:none;outline:none;flex:1;min-height:32px;max-height:160px;padding:4px 8px;font-size:16px;line-height:24px}.yw4T5a_panelLookup{max-width:100%;height:24px;color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;border-radius:24px;align-self:flex-start;align-items:center;gap:6px;padding:0 8px;font-size:12px;font-weight:500;line-height:18px;display:inline-flex}.yw4T5a_panelLookup span{text-overflow:ellipsis;min-width:0;overflow:hidden}.yw4T5a_panelLookup:hover{background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_panelAttachment{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-specific-tip);border-radius:10px;align-items:center;gap:8px;padding:6px 10px;display:flex}.yw4T5a_panelAttachmentText{min-width:0;color:var(--dsw-alias-label-secondary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12px;line-height:18px;overflow:hidden}.yw4T5a_panelAttachmentRemove{width:20px;height:20px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:999px;flex:none;font-size:16px;line-height:20px}.yw4T5a_panelAttachmentRemove:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.yw4T5a_panelFooter{flex:none;padding:0 14px 12px}.yw4T5a_panelDispose{font-family:var(--dsw-font-family);color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;padding:4px 0;font-size:12px;line-height:18px}.yw4T5a_panelDispose:hover{color:var(--dsw-alias-state-error-primary)}.yw4T5a_primary{background:var(--dsw-alias-button-info-fill);color:#fff;cursor:pointer;border:none;border-radius:999px;flex:none;place-items:center;width:34px;height:34px;transition:background-color .1s;display:grid}.yw4T5a_primary:hover{background:var(--dsw-alias-button-info-hover)}.yw4T5a_panelAttachmentRail{flex:none;min-width:0}.yw4T5a_messageUserText{white-space:pre-wrap;word-break:break-word}.yw4T5a_modelSelect{min-width:0;position:relative}.yw4T5a_modelSelectTrigger{min-width:0;max-width:200px;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}.yw4T5a_modelSelectTrigger:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_modelSelectLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.yw4T5a_modelSelectEffort{color:var(--dsw-alias-label-caption);flex:none}.yw4T5a_chevronOpen{transform:rotate(180deg)}.yw4T5a_modelSelectMenu{z-index:30;border:1px solid var(--dsw-alias-border-inverted);background:var(--dsw-specific-menu);width:min(260px,100vw - 32px);max-height:min(360px,100vh - 96px);box-shadow:var(--dsw-shadow-lv3);color:var(--dsw-alias-label-primary);border-radius:12px;flex-direction:column;padding:4px;display:flex;position:absolute;bottom:calc(100% + 8px);right:0;overflow:hidden}.yw4T5a_modelCell{width:100%;height:40px;color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:10px;flex:none;align-items:center;gap:8px;padding:0 10px;font-size:14px;line-height:22px;display:flex}.yw4T5a_modelCell:hover{background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_modelCellLabel{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.yw4T5a_modelCellValue{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-tertiary);flex:0 auto;overflow:hidden}.yw4T5a_modelCellChevron{color:var(--dsw-alias-label-tertiary);flex:none}.yw4T5a_modelGroups{min-height:0;overflow-y:auto}.yw4T5a_modelGroup+.yw4T5a_modelGroup{margin-top:4px}.yw4T5a_modelGroupTitle{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}.yw4T5a_modelOption{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}.yw4T5a_modelOption:hover:not(:disabled),.yw4T5a_modelOptionSelected{background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_modelOptionCopy{flex-direction:column;flex:1;min-width:0;display:flex}.yw4T5a_modelName{color:inherit;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;line-height:20px;overflow:hidden}.yw4T5a_modelDescription{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}.yw4T5a_modelCheck{color:var(--dsw-alias-label-primary);flex:0 0 18px;place-items:center;display:grid}.yw4T5a_modelEmpty{color:var(--dsw-alias-label-tertiary);padding:10px;font-size:13px;line-height:20px}.yw4T5a_settingsSection{flex-direction:column;gap:8px;display:flex}.yw4T5a_settingsRow{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);cursor:pointer;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.yw4T5a_settingsRowText{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.yw4T5a_settingsRowTitle{color:var(--dsw-alias-label-primary);font-size:14px;line-height:20px}.yw4T5a_settingsRowDesc{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.yw4T5a_settingsToggle{width:16px;height:16px;accent-color:var(--dsw-alias-state-business-primary);flex:none}.yw4T5a_settingsBringMode{flex-direction:column;gap:8px;display:flex}.yw4T5a_settingsBringOption{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);cursor:pointer;border-radius:12px;align-items:flex-start;gap:12px;padding:10px 12px;display:flex}.yw4T5a_settingsBringOptionActive{border-color:var(--dsw-alias-state-business-primary)}.yw4T5a_settingsPromptInput{box-sizing:border-box;resize:vertical;width:100%;min-height:72px;color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border:1px solid var(--dsw-alias-border-l2);font-family:var(--dsw-font-family);border-radius:10px;padding:8px 10px;font-size:13px;line-height:20px}.yw4T5a_settingsPromptInput:focus{outline:2px solid var(--dsw-alias-border-l3);outline-offset:-1px}";
753
+ const css$1 = ".yw4T5a_selectionMenu{z-index:2147483000;background:var(--dsw-alias-bg-overlay);border:1px solid var(--dsw-alias-border-l3);box-shadow:0 4px 16px var(--dsw-alias-bg-mask-2);pointer-events:auto;border-radius:10px;gap:4px;padding:4px;display:flex;position:fixed;transform:translate(-50%)}.yw4T5a_selectionButton{font-family:var(--dsw-font-family);color:var(--dsw-alias-label-primary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:7px;padding:6px 10px;font-size:13px;line-height:20px}.yw4T5a_selectionButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_selectionButton:disabled{cursor:default;opacity:.55}.yw4T5a_panel{width:var(--dsh-subchat-width,360px);z-index:2147482990;background:var(--dsw-specific-sidebar-fill);border-left:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-family);pointer-events:auto;transition:transform var(--ds-transition-duration-slow) var(--ds-ease-in-out);flex-direction:column;font-size:14px;display:flex;position:fixed;top:0;bottom:0;right:0}.yw4T5a_panelEmbedded{border-left:none;border-radius:0;width:100%;position:absolute;inset:0}.yw4T5a_panelConflictHidden{pointer-events:none;transform:translate(calc(100% + 24px))}.yw4T5a_panelResize{cursor:col-resize;z-index:2;touch-action:none;width:8px;position:absolute;top:0;bottom:0;left:-4px}.yw4T5a_panelHeader{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;justify-content:space-between;align-items:center;padding:12px 14px;display:flex}.yw4T5a_panelTitle{font-weight:600}.yw4T5a_panelHeaderActions{align-items:center;gap:4px;display:flex}.yw4T5a_panelIconButton{width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:999px;place-items:center;display:grid}.yw4T5a_panelIconButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.yw4T5a_panelClose{font-family:var(--dsw-font-family);color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:13px}.yw4T5a_panelClose:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.yw4T5a_collapsedHandle{z-index:2147482990;width:32px;height:32px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-overlay);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;box-shadow:var(--dsw-shadow-lv2);border-radius:999px;place-items:center;display:grid;position:fixed;top:50%;right:8px;transform:translateY(-50%)}.yw4T5a_collapsedHandle:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_questionFab{z-index:2147482990;width:32px;height:32px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-overlay);border:1px solid var(--dsw-alias-state-business-primary);cursor:pointer;box-shadow:var(--dsw-shadow-lv2);border-radius:999px;place-items:center;display:grid;position:fixed}.yw4T5a_questionFab:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_questionFabDot{background:var(--dsw-alias-state-business-primary);border-radius:50%;width:8px;height:8px;position:absolute;top:4px;right:4px}.yw4T5a_questionBlock{border-bottom:1px solid var(--dsw-alias-border-l1);flex-direction:column;flex:none;gap:8px;max-height:40%;padding:8px;display:flex;overflow-y:auto}.yw4T5a_questionBlockActions{justify-content:space-between;align-items:center;display:flex}.yw4T5a_questionToggle{font-family:var(--dsw-font-family);color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:2px 6px;font-size:12px;line-height:18px}.yw4T5a_questionToggle:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_questionDeleteAll{font-family:var(--dsw-font-family);color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:2px 6px;font-size:12px;line-height:18px}.yw4T5a_questionDeleteAll:hover{color:var(--dsw-alias-state-error-primary);background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_questionItemCollapsed{gap:0;padding:8px 12px}.yw4T5a_questionItem{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:12px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.yw4T5a_questionHeader{justify-content:space-between;align-items:center;gap:8px;display:flex}.yw4T5a_questionHeaderText{min-width:0;color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;font-weight:600;line-height:20px;overflow:hidden}.yw4T5a_questionHeaderActions{flex:none;align-items:center;gap:4px;display:flex}.yw4T5a_questionBody{color:var(--dsw-alias-label-primary);white-space:pre-wrap;word-break:break-word;font-size:14px;line-height:22px}.yw4T5a_questionDetail{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:18px}.yw4T5a_questionOption{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:10px;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px 6px 10px;display:flex}.yw4T5a_questionOptionText{min-width:0;color:var(--dsw-alias-label-primary);word-break:break-word;flex:1;font-size:13px;line-height:20px}.yw4T5a_questionOptionLabel{font-weight:500}.yw4T5a_questionOptionDesc{color:var(--dsw-alias-label-secondary)}.yw4T5a_questionBringButton{font-family:var(--dsw-font-family);color:var(--dsw-alias-label-primary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;white-space:nowrap;background:0 0;border-radius:999px;flex:none;padding:2px 10px;font-size:12px;line-height:18px}.yw4T5a_questionBringButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_questionBringButton:disabled{cursor:default;opacity:.55}.yw4T5a_questionDelete{width:22px;height:22px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:6px;flex:none;place-items:center;font-size:14px;line-height:20px;display:grid}.yw4T5a_questionDelete:hover{color:var(--dsw-alias-state-error-primary);background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_panelList{border-bottom:1px solid var(--dsw-alias-border-l1);flex-direction:column;flex:none;gap:2px;max-height:132px;padding:8px;display:flex;overflow-y:auto}.yw4T5a_panelEmpty{color:var(--dsw-alias-label-tertiary);padding:6px 8px;font-size:12px;line-height:18px}.yw4T5a_panelListActions{justify-content:flex-end;padding:0 2px 2px;display:flex}.yw4T5a_panelListDeleteAll{font-family:var(--dsw-font-family);color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:2px 6px;font-size:12px;line-height:18px}.yw4T5a_panelListDeleteAll:hover{color:var(--dsw-alias-state-error-primary);background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_panelListItem{font-family:var(--dsw-font-family);color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:6px 8px;display:flex}.yw4T5a_panelListItem:hover{background:var(--dsw-specific-sidebar-nav-item-hover)}.yw4T5a_panelListItemActive{background:var(--dsw-specific-sidebar-nav-item-active)}.yw4T5a_panelListItemDot{background:var(--dsw-alias-label-tertiary);border-radius:50%;flex:none;width:8px;height:8px}.yw4T5a_panelListItemDot[data-running=\"1\"]{background:var(--dsw-alias-state-business-primary)}.yw4T5a_panelListItemLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;font-family:var(--ds-font-family-code);overflow:hidden}.yw4T5a_panelListItemRow{align-items:center;gap:2px;display:flex}.yw4T5a_panelListItemRow .yw4T5a_panelListItem{flex:1;min-width:0}.yw4T5a_panelListItemRemove{width:22px;height:22px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:6px;flex:none;place-items:center;font-size:14px;line-height:20px;display:grid}.yw4T5a_panelListItemRemove:hover{color:var(--dsw-alias-state-error-primary);background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_panelTranscript{flex-direction:column;flex:1;gap:10px;min-height:0;padding:14px;display:flex;overflow-y:auto}.yw4T5a_messageUser{background:var(--dsw-specific-bubble);color:var(--dsw-alias-label-primary);white-space:pre-wrap;word-break:break-word;border-radius:22px;align-self:flex-end;max-width:86%;padding:10px 16px;font-size:16px;line-height:24px}.yw4T5a_messageAssistant{min-width:0;max-width:100%;color:var(--dsw-alias-label-primary);align-self:flex-start}.yw4T5a_messageActions{gap:6px;margin-top:6px;display:flex}.yw4T5a_messageInsertButton{font-family:var(--dsw-font-family);color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l1);cursor:pointer;background:0 0;border-radius:999px;padding:2px 10px;font-size:12px;line-height:18px}.yw4T5a_messageInsertButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.yw4T5a_messageInsertButton:disabled{cursor:default;opacity:.55}.yw4T5a_reasoningSummary{min-width:0;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:14px;line-height:24px;overflow:hidden}.yw4T5a_reasoningBody{color:var(--dsw-alias-label-tertiary);white-space:pre-wrap;word-break:break-word;padding:4px 0 4px 22px;font-size:14px;line-height:24px}.yw4T5a_panelRunning{color:var(--dsw-alias-label-tertiary);align-self:flex-start;align-items:center;gap:6px;font-size:12px;line-height:18px;display:inline-flex}.yw4T5a_panelRunningDot{background:var(--dsw-alias-state-business-primary);border-radius:50%;flex:none;width:8px;height:8px;animation:1s ease-in-out infinite alternate yw4T5a_panelRunningPulse}.yw4T5a_panelRunningClock{color:var(--dsw-alias-label-caption)}@keyframes yw4T5a_panelRunningPulse{0%{opacity:1}to{opacity:.3}}@media (prefers-reduced-motion:reduce){.yw4T5a_panelRunningDot{animation:none}}.yw4T5a_panelError{color:var(--dsw-alias-state-error-primary);font-size:12px;line-height:18px}.yw4T5a_panelComposer{border:1px solid var(--dsw-alias-border-l2-darkmode-thin);background:var(--dsw-specific-input-major);box-shadow:var(--dsw-shadow-lv2);border-radius:22px;flex-direction:column;flex:none;gap:4px;margin:10px 14px 14px;padding:10px;display:flex}.yw4T5a_panelToolbar{flex:none;justify-content:flex-end;align-items:center;gap:4px;min-width:0;display:flex}.yw4T5a_panelTextarea{box-sizing:border-box;resize:none;width:100%;min-width:0;color:var(--dsw-alias-label-primary);caret-color:var(--dsw-alias-state-business-primary);font-family:var(--dsw-font-family);background:0 0;border:none;outline:none;flex:1;min-height:32px;max-height:160px;padding:4px 8px;font-size:16px;line-height:24px}.yw4T5a_panelLookup{max-width:100%;height:24px;color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;border-radius:24px;align-self:flex-start;align-items:center;gap:6px;padding:0 8px;font-size:12px;font-weight:500;line-height:18px;display:inline-flex}.yw4T5a_panelLookup span{text-overflow:ellipsis;min-width:0;overflow:hidden}.yw4T5a_panelLookup:hover{background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_panelAttachment{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-specific-tip);border-radius:10px;align-items:center;gap:8px;padding:6px 10px;display:flex}.yw4T5a_panelAttachmentText{min-width:0;color:var(--dsw-alias-label-secondary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12px;line-height:18px;overflow:hidden}.yw4T5a_panelAttachmentRemove{width:20px;height:20px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:999px;flex:none;font-size:16px;line-height:20px}.yw4T5a_panelAttachmentRemove:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.yw4T5a_panelFooter{flex:none;padding:0 14px 12px}.yw4T5a_panelDispose{font-family:var(--dsw-font-family);color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;padding:4px 0;font-size:12px;line-height:18px}.yw4T5a_panelDispose:hover{color:var(--dsw-alias-state-error-primary)}.yw4T5a_primary{background:var(--dsw-alias-button-info-fill);color:#fff;cursor:pointer;border:none;border-radius:999px;flex:none;place-items:center;width:34px;height:34px;transition:background-color .1s;display:grid}.yw4T5a_primary:hover{background:var(--dsw-alias-button-info-hover)}.yw4T5a_panelAttachmentRail{flex:none;min-width:0}.yw4T5a_messageUserText{white-space:pre-wrap;word-break:break-word}.yw4T5a_modelSelect{min-width:0;position:relative}.yw4T5a_modelSelectTrigger{min-width:0;max-width:200px;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}.yw4T5a_modelSelectTrigger:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_modelSelectLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.yw4T5a_modelSelectEffort{color:var(--dsw-alias-label-caption);flex:none}.yw4T5a_chevronOpen{transform:rotate(180deg)}.yw4T5a_modelSelectMenu{z-index:30;border:1px solid var(--dsw-alias-border-inverted);background:var(--dsw-specific-menu);width:min(260px,100vw - 32px);max-height:min(360px,100vh - 96px);box-shadow:var(--dsw-shadow-lv3);color:var(--dsw-alias-label-primary);border-radius:12px;flex-direction:column;padding:4px;display:flex;position:absolute;bottom:calc(100% + 8px);right:0;overflow:hidden}.yw4T5a_modelCell{width:100%;height:40px;color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:10px;flex:none;align-items:center;gap:8px;padding:0 10px;font-size:14px;line-height:22px;display:flex}.yw4T5a_modelCell:hover{background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_modelCellLabel{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.yw4T5a_modelCellValue{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-tertiary);flex:0 auto;overflow:hidden}.yw4T5a_modelCellChevron{color:var(--dsw-alias-label-tertiary);flex:none}.yw4T5a_modelGroups{min-height:0;overflow-y:auto}.yw4T5a_modelGroup+.yw4T5a_modelGroup{margin-top:4px}.yw4T5a_modelGroupTitle{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}.yw4T5a_modelOption{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}.yw4T5a_modelOption:hover:not(:disabled),.yw4T5a_modelOptionSelected{background:var(--dsw-alias-interactive-bg-hover)}.yw4T5a_modelOptionCopy{flex-direction:column;flex:1;min-width:0;display:flex}.yw4T5a_modelName{color:inherit;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;line-height:20px;overflow:hidden}.yw4T5a_modelDescription{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}.yw4T5a_modelCheck{color:var(--dsw-alias-label-primary);flex:0 0 18px;place-items:center;display:grid}.yw4T5a_modelEmpty{color:var(--dsw-alias-label-tertiary);padding:10px;font-size:13px;line-height:20px}.yw4T5a_settingsSection{flex-direction:column;gap:8px;display:flex}.yw4T5a_settingsRow{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);cursor:pointer;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.yw4T5a_settingsRowText{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.yw4T5a_settingsRowTitle{color:var(--dsw-alias-label-primary);font-size:14px;line-height:20px}.yw4T5a_settingsRowDesc{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.yw4T5a_settingsToggle{width:16px;height:16px;accent-color:var(--dsw-alias-state-business-primary);flex:none}.yw4T5a_settingsBringMode{flex-direction:column;gap:8px;display:flex}.yw4T5a_settingsBringOption{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);cursor:pointer;border-radius:12px;align-items:flex-start;gap:12px;padding:10px 12px;display:flex}.yw4T5a_settingsBringOptionActive{border-color:var(--dsw-alias-state-business-primary)}.yw4T5a_settingsPromptInput{box-sizing:border-box;resize:vertical;width:100%;min-height:72px;color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border:1px solid var(--dsw-alias-border-l2);font-family:var(--dsw-font-family);border-radius:10px;padding:8px 10px;font-size:13px;line-height:20px}.yw4T5a_settingsPromptInput:focus{outline:2px solid var(--dsw-alias-border-l3);outline-offset:-1px}";
733
754
  const tagId$1 = "dsh-external/dsh-side-chat-plus/client.module.css";
734
755
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
735
756
  const tag = document.createElement("style");
@@ -739,99 +760,101 @@ window.__ModuleLoader__.load({
739
760
  document.head.appendChild(tag);
740
761
  }
741
762
  var client_module_css_default = {
742
- "questionToggle": "yw4T5a_questionToggle",
743
- "panelHeaderActions": "yw4T5a_panelHeaderActions",
744
- "modelCheck": "yw4T5a_modelCheck",
745
- "panelToolbar": "yw4T5a_panelToolbar",
746
- "panelListItem": "yw4T5a_panelListItem",
747
- "panelListItemRemove": "yw4T5a_panelListItemRemove",
748
- "selectionMenu": "yw4T5a_selectionMenu",
749
- "panelRunningClock": "yw4T5a_panelRunningClock",
750
- "panelTextarea": "yw4T5a_panelTextarea",
751
- "questionBlockActions": "yw4T5a_questionBlockActions",
752
- "modelSelect": "yw4T5a_modelSelect",
753
- "panelTitle": "yw4T5a_panelTitle",
754
- "questionFabDot": "yw4T5a_questionFabDot",
755
- "panelResize": "yw4T5a_panelResize",
756
- "panelError": "yw4T5a_panelError",
757
- "panelRunningDot": "yw4T5a_panelRunningDot",
758
- "panelListItemDot": "yw4T5a_panelListItemDot",
759
- "chevronOpen": "yw4T5a_chevronOpen",
760
- "modelGroupTitle": "yw4T5a_modelGroupTitle",
761
- "selectionButton": "yw4T5a_selectionButton",
762
- "questionHeader": "yw4T5a_questionHeader",
763
- "modelOptionSelected": "yw4T5a_modelOptionSelected",
763
+ "settingsRowDesc": "yw4T5a_settingsRowDesc",
764
764
  "settingsToggle": "yw4T5a_settingsToggle",
765
- "panelListActions": "yw4T5a_panelListActions",
766
- "panelAttachment": "yw4T5a_panelAttachment",
767
- "modelEmpty": "yw4T5a_modelEmpty",
765
+ "messageUserText": "yw4T5a_messageUserText",
768
766
  "questionDetail": "yw4T5a_questionDetail",
769
- "settingsSection": "yw4T5a_settingsSection",
770
- "questionDeleteAll": "yw4T5a_questionDeleteAll",
771
- "questionItem": "yw4T5a_questionItem",
772
767
  "questionOptionDesc": "yw4T5a_questionOptionDesc",
773
- "settingsBringMode": "yw4T5a_settingsBringMode",
774
- "messageInsertButton": "yw4T5a_messageInsertButton",
775
- "questionOptionText": "yw4T5a_questionOptionText",
776
- "modelDescription": "yw4T5a_modelDescription",
777
- "settingsRowText": "yw4T5a_settingsRowText",
778
- "modelGroup": "yw4T5a_modelGroup",
779
- "settingsRowDesc": "yw4T5a_settingsRowDesc",
780
- "reasoningSummary": "yw4T5a_reasoningSummary",
781
- "panelListItemActive": "yw4T5a_panelListItemActive",
782
- "modelName": "yw4T5a_modelName",
783
- "panelAttachmentRail": "yw4T5a_panelAttachmentRail",
784
- "questionOption": "yw4T5a_questionOption",
785
- "panelRunningPulse": "yw4T5a_panelRunningPulse",
786
- "messageAssistant": "yw4T5a_messageAssistant",
787
- "panelAttachmentText": "yw4T5a_panelAttachmentText",
768
+ "questionBody": "yw4T5a_questionBody",
788
769
  "panel": "yw4T5a_panel",
789
770
  "panelFooter": "yw4T5a_panelFooter",
790
- "modelCell": "yw4T5a_modelCell",
791
- "primary": "yw4T5a_primary",
792
- "modelCellChevron": "yw4T5a_modelCellChevron",
793
- "settingsPromptInput": "yw4T5a_settingsPromptInput",
794
- "questionBlock": "yw4T5a_questionBlock",
795
- "questionBringButton": "yw4T5a_questionBringButton",
796
- "panelListItemRow": "yw4T5a_panelListItemRow",
797
- "modelSelectLabel": "yw4T5a_modelSelectLabel",
771
+ "panelResize": "yw4T5a_panelResize",
772
+ "questionHeaderText": "yw4T5a_questionHeaderText",
773
+ "collapsedHandle": "yw4T5a_collapsedHandle",
774
+ "panelListItemDot": "yw4T5a_panelListItemDot",
775
+ "messageActions": "yw4T5a_messageActions",
776
+ "panelAttachment": "yw4T5a_panelAttachment",
777
+ "panelAttachmentText": "yw4T5a_panelAttachmentText",
778
+ "questionOptionLabel": "yw4T5a_questionOptionLabel",
779
+ "modelCellLabel": "yw4T5a_modelCellLabel",
780
+ "settingsBringOptionActive": "yw4T5a_settingsBringOptionActive",
781
+ "panelEmpty": "yw4T5a_panelEmpty",
782
+ "reasoningSummary": "yw4T5a_reasoningSummary",
798
783
  "modelCellValue": "yw4T5a_modelCellValue",
799
- "modelOptionCopy": "yw4T5a_modelOptionCopy",
784
+ "panelConflictHidden": "yw4T5a_panelConflictHidden",
785
+ "questionBlockActions": "yw4T5a_questionBlockActions",
800
786
  "questionFab": "yw4T5a_questionFab",
801
- "questionDelete": "yw4T5a_questionDelete",
802
- "panelDispose": "yw4T5a_panelDispose",
803
- "settingsBringOptionActive": "yw4T5a_settingsBringOptionActive",
804
- "questionOptionLabel": "yw4T5a_questionOptionLabel",
805
- "collapsedHandle": "yw4T5a_collapsedHandle",
787
+ "panelRunningPulse": "yw4T5a_panelRunningPulse",
788
+ "panelLookup": "yw4T5a_panelLookup",
789
+ "modelOption": "yw4T5a_modelOption",
790
+ "modelSelect": "yw4T5a_modelSelect",
791
+ "modelDescription": "yw4T5a_modelDescription",
792
+ "panelAttachmentRemove": "yw4T5a_panelAttachmentRemove",
793
+ "modelGroups": "yw4T5a_modelGroups",
794
+ "settingsRowTitle": "yw4T5a_settingsRowTitle",
795
+ "settingsPromptInput": "yw4T5a_settingsPromptInput",
796
+ "settingsRow": "yw4T5a_settingsRow",
797
+ "messageInsertButton": "yw4T5a_messageInsertButton",
798
+ "panelHeaderActions": "yw4T5a_panelHeaderActions",
806
799
  "panelComposer": "yw4T5a_panelComposer",
800
+ "panelEmbedded": "yw4T5a_panelEmbedded",
801
+ "panelListDeleteAll": "yw4T5a_panelListDeleteAll",
802
+ "modelCell": "yw4T5a_modelCell",
803
+ "modelGroup": "yw4T5a_modelGroup",
804
+ "panelRunningDot": "yw4T5a_panelRunningDot",
805
+ "panelHeader": "yw4T5a_panelHeader",
806
+ "selectionMenu": "yw4T5a_selectionMenu",
807
+ "settingsBringMode": "yw4T5a_settingsBringMode",
808
+ "questionHeaderActions": "yw4T5a_questionHeaderActions",
809
+ "messageUser": "yw4T5a_messageUser",
810
+ "modelSelectLabel": "yw4T5a_modelSelectLabel",
811
+ "modelCellChevron": "yw4T5a_modelCellChevron",
812
+ "panelError": "yw4T5a_panelError",
813
+ "selectionButton": "yw4T5a_selectionButton",
814
+ "panelAttachmentRail": "yw4T5a_panelAttachmentRail",
815
+ "panelTextarea": "yw4T5a_panelTextarea",
816
+ "panelRunning": "yw4T5a_panelRunning",
817
+ "chevronOpen": "yw4T5a_chevronOpen",
818
+ "questionDeleteAll": "yw4T5a_questionDeleteAll",
819
+ "questionOption": "yw4T5a_questionOption",
820
+ "modelName": "yw4T5a_modelName",
821
+ "modelCheck": "yw4T5a_modelCheck",
822
+ "settingsRowText": "yw4T5a_settingsRowText",
823
+ "modelGroupTitle": "yw4T5a_modelGroupTitle",
824
+ "questionOptionText": "yw4T5a_questionOptionText",
825
+ "panelToolbar": "yw4T5a_panelToolbar",
826
+ "panelListItem": "yw4T5a_panelListItem",
827
+ "questionFabDot": "yw4T5a_questionFabDot",
828
+ "settingsBringOption": "yw4T5a_settingsBringOption",
829
+ "panelTitle": "yw4T5a_panelTitle",
830
+ "panelListItemLabel": "yw4T5a_panelListItemLabel",
807
831
  "panelTranscript": "yw4T5a_panelTranscript",
832
+ "questionHeader": "yw4T5a_questionHeader",
808
833
  "modelSelectTrigger": "yw4T5a_modelSelectTrigger",
809
- "modelGroups": "yw4T5a_modelGroups",
810
- "panelLookup": "yw4T5a_panelLookup",
811
- "messageUserText": "yw4T5a_messageUserText",
812
- "panelHeader": "yw4T5a_panelHeader",
813
- "panelEmpty": "yw4T5a_panelEmpty",
834
+ "questionBringButton": "yw4T5a_questionBringButton",
835
+ "panelIconButton": "yw4T5a_panelIconButton",
836
+ "modelSelectEffort": "yw4T5a_modelSelectEffort",
837
+ "modelSelectMenu": "yw4T5a_modelSelectMenu",
838
+ "messageAssistant": "yw4T5a_messageAssistant",
839
+ "panelListActions": "yw4T5a_panelListActions",
840
+ "panelRunningClock": "yw4T5a_panelRunningClock",
841
+ "modelOptionSelected": "yw4T5a_modelOptionSelected",
842
+ "questionToggle": "yw4T5a_questionToggle",
843
+ "questionItemCollapsed": "yw4T5a_questionItemCollapsed",
814
844
  "panelClose": "yw4T5a_panelClose",
815
- "panelListItemLabel": "yw4T5a_panelListItemLabel",
845
+ "questionItem": "yw4T5a_questionItem",
846
+ "questionDelete": "yw4T5a_questionDelete",
847
+ "panelDispose": "yw4T5a_panelDispose",
848
+ "settingsSection": "yw4T5a_settingsSection",
849
+ "questionBlock": "yw4T5a_questionBlock",
850
+ "panelListItemActive": "yw4T5a_panelListItemActive",
851
+ "panelListItemRemove": "yw4T5a_panelListItemRemove",
816
852
  "reasoningBody": "yw4T5a_reasoningBody",
817
- "settingsRowTitle": "yw4T5a_settingsRowTitle",
818
- "questionItemCollapsed": "yw4T5a_questionItemCollapsed",
819
- "modelCellLabel": "yw4T5a_modelCellLabel",
820
- "settingsBringOption": "yw4T5a_settingsBringOption",
821
- "modelSelectEffort": "yw4T5a_modelSelectEffort",
822
- "messageActions": "yw4T5a_messageActions",
823
853
  "panelList": "yw4T5a_panelList",
824
- "panelRunning": "yw4T5a_panelRunning",
825
- "panelAttachmentRemove": "yw4T5a_panelAttachmentRemove",
826
- "modelSelectMenu": "yw4T5a_modelSelectMenu",
827
- "questionBody": "yw4T5a_questionBody",
828
- "questionHeaderText": "yw4T5a_questionHeaderText",
829
- "modelOption": "yw4T5a_modelOption",
830
- "settingsRow": "yw4T5a_settingsRow",
831
- "panelIconButton": "yw4T5a_panelIconButton",
832
- "panelListDeleteAll": "yw4T5a_panelListDeleteAll",
833
- "questionHeaderActions": "yw4T5a_questionHeaderActions",
834
- "messageUser": "yw4T5a_messageUser"
854
+ "panelListItemRow": "yw4T5a_panelListItemRow",
855
+ "modelOptionCopy": "yw4T5a_modelOptionCopy",
856
+ "modelEmpty": "yw4T5a_modelEmpty",
857
+ "primary": "yw4T5a_primary"
835
858
  };
836
859
  //#endregion
837
860
  //#region \0dsh-css:/home/runner/work/dsh-side-chat/dsh-side-chat/src/client/layout.css.mjs
@@ -895,6 +918,7 @@ window.__ModuleLoader__.load({
895
918
  let dismissedQuestionIds = [];
896
919
  const bySession = /* @__PURE__ */ new Map();
897
920
  const listeners = /* @__PURE__ */ new Set();
921
+ let dockLaunch = null;
898
922
  let snapshot = {
899
923
  current,
900
924
  panel,
@@ -964,6 +988,7 @@ window.__ModuleLoader__.load({
964
988
  open: true,
965
989
  parentSessionId
966
990
  };
991
+ dockLaunch?.();
967
992
  notify();
968
993
  },
969
994
  closePanel() {
@@ -973,6 +998,9 @@ window.__ModuleLoader__.load({
973
998
  };
974
999
  notify();
975
1000
  },
1001
+ setDockLaunch(fn) {
1002
+ dockLaunch = fn;
1003
+ },
976
1004
  setActive(childId) {
977
1005
  panel = {
978
1006
  ...panel,
@@ -1021,6 +1049,24 @@ window.__ModuleLoader__.load({
1021
1049
  };
1022
1050
  });
1023
1051
  }
1052
+ /**
1053
+ * Read one image file's intrinsic pixel size, releasing the decoded bitmap.
1054
+ * Returns null when the browser cannot decode it: the host's `validateImage`
1055
+ * stays the authority either way.
1056
+ */
1057
+ async function imageSize(file) {
1058
+ try {
1059
+ const bitmap = await createImageBitmap(file);
1060
+ const size = {
1061
+ width: bitmap.width,
1062
+ height: bitmap.height
1063
+ };
1064
+ bitmap.close();
1065
+ return size;
1066
+ } catch {
1067
+ return null;
1068
+ }
1069
+ }
1024
1070
  /** Revoke one draft image's preview URL. */
1025
1071
  function releaseDraftImage(attachment) {
1026
1072
  URL.revokeObjectURL(attachment.previewUrl);
@@ -1666,6 +1712,9 @@ window.__ModuleLoader__.load({
1666
1712
  const MAIN_CHAT_MIN_WIDTH = 480;
1667
1713
  /** localStorage key remembering the last panel width across reloads. */
1668
1714
  const PANEL_WIDTH_KEY = "dsh-side-chat.panelWidth";
1715
+ /** Right-sidebar dock identity (kind is the `openTab` discriminator; id keys the body seat). */
1716
+ const SIDEBAR_TAB_ID = "dsh-side-chat-plus/side-chat";
1717
+ const SIDEBAR_TAB_KIND = "side-chat";
1669
1718
  /** The viewport-aware maximum panel width for the current window. */
1670
1719
  function panelCap() {
1671
1720
  const vw = window.innerWidth;
@@ -1771,15 +1820,18 @@ window.__ModuleLoader__.load({
1771
1820
  const activeRunning = activeItem?.running ?? false;
1772
1821
  const [anchor, setAnchor] = (0, react.useState)(null);
1773
1822
  (0, react.useEffect)(() => {
1774
- const w = panel.open && !collapsed ? `${width}px` : "0px";
1823
+ if (props.embedded) return;
1824
+ const w = panel.open && !collapsed && !props.conflictHidden ? `${width}px` : "0px";
1775
1825
  document.documentElement.style.setProperty("--dsh-subchat-width", w);
1776
1826
  return () => {
1777
1827
  document.documentElement.style.setProperty("--dsh-subchat-width", "0px");
1778
1828
  };
1779
1829
  }, [
1830
+ props.embedded,
1780
1831
  panel.open,
1781
1832
  collapsed,
1782
- width
1833
+ width,
1834
+ props.conflictHidden
1783
1835
  ]);
1784
1836
  (0, react.useEffect)(() => {
1785
1837
  const onResize = () => {
@@ -1995,29 +2047,39 @@ window.__ModuleLoader__.load({
1995
2047
  props.store.patch({ error: props.t("image.unsupported") });
1996
2048
  return;
1997
2049
  }
1998
- try {
1999
- if (limits !== null) {
2000
- if (images.some((f) => !limits.mediaTypes.includes(f.type))) {
2001
- props.store.patch({ error: props.t("image.unsupported") });
2002
- return;
2003
- }
2004
- if (panel.attachments.length + images.length > limits.maxImagesPerMessage) {
2005
- props.store.patch({ error: props.t("image.tooMany") });
2006
- return;
2007
- }
2008
- if (images.some((f) => f.size > limits.maxImageBytes)) {
2009
- props.store.patch({ error: props.t("image.fileTooLarge") });
2010
- return;
2050
+ (async () => {
2051
+ try {
2052
+ if (limits !== null) {
2053
+ if (images.some((f) => !limits.mediaTypes.includes(f.type))) {
2054
+ props.store.patch({ error: props.t("image.unsupported") });
2055
+ return;
2056
+ }
2057
+ if (panel.attachments.length + images.length > limits.maxImagesPerMessage) {
2058
+ props.store.patch({ error: props.t("image.tooMany") });
2059
+ return;
2060
+ }
2061
+ if (images.some((f) => f.size > limits.maxImageBytes)) {
2062
+ props.store.patch({ error: props.t("image.fileTooLarge") });
2063
+ return;
2064
+ }
2065
+ const maxDimension = limits.maxImageDimension;
2066
+ if (typeof maxDimension === "number" && maxDimension > 0) for (const file of images) {
2067
+ const size = await imageSize(file);
2068
+ if (size !== null && (size.width > maxDimension || size.height > maxDimension)) {
2069
+ props.store.patch({ error: props.t("image.dimensionTooLarge") });
2070
+ return;
2071
+ }
2072
+ }
2011
2073
  }
2074
+ const created = createDraftImages(images);
2075
+ props.store.patch({
2076
+ attachments: [...panel.attachments, ...created],
2077
+ error: null
2078
+ });
2079
+ } catch (error) {
2080
+ props.store.patch({ error: error instanceof Error ? error.message : String(error) });
2012
2081
  }
2013
- const created = createDraftImages(images);
2014
- props.store.patch({
2015
- attachments: [...panel.attachments, ...created],
2016
- error: null
2017
- });
2018
- } catch (error) {
2019
- props.store.patch({ error: error instanceof Error ? error.message : String(error) });
2020
- }
2082
+ })();
2021
2083
  }, [
2022
2084
  limits,
2023
2085
  panel.attachments,
@@ -2095,44 +2157,41 @@ window.__ModuleLoader__.load({
2095
2157
  if (!result.ok) throw new Error(result.error.message);
2096
2158
  return base64ObjectUrl(result.value.mediaType, result.value.data);
2097
2159
  }, [panel.activeChildId]);
2098
- if (!panel.open) {
2099
- if (mainQuestion !== null) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(QuestionFab, {
2100
- store: props.store,
2101
- t: props.t,
2102
- onOpen: openQuestionPanel
2103
- });
2104
- return null;
2105
- }
2106
- if (collapsed) {
2107
- if (mainQuestion !== null) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(QuestionFab, {
2108
- store: props.store,
2109
- t: props.t,
2110
- onOpen: openQuestionPanel
2111
- });
2112
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
2113
- label: props.t("panel.expand"),
2114
- side: "bottom",
2115
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2116
- type: "button",
2117
- className: client_module_css_default.collapsedHandle,
2118
- onClick: () => {
2119
- setCollapsed(false);
2120
- },
2121
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconPanelLeftOutline16, { size: 16 })
2122
- })
2123
- });
2160
+ if (!props.embedded) {
2161
+ if (!panel.open) return null;
2162
+ if (collapsed) {
2163
+ if (mainQuestion !== null) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(QuestionFab, {
2164
+ store: props.store,
2165
+ t: props.t,
2166
+ onOpen: openQuestionPanel
2167
+ });
2168
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
2169
+ label: props.t("panel.expand"),
2170
+ side: "bottom",
2171
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2172
+ type: "button",
2173
+ className: client_module_css_default.collapsedHandle,
2174
+ onClick: () => {
2175
+ setCollapsed(false);
2176
+ },
2177
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconPanelLeftOutline16, { size: 16 })
2178
+ })
2179
+ });
2180
+ }
2124
2181
  }
2125
2182
  const elapsedMs = anchor === null ? 0 : Math.max(0, now - anchor);
2126
2183
  const showClock = elapsedMs >= 15e3;
2184
+ const panelClass = props.embedded ? `${client_module_css_default.panel} ${client_module_css_default.panelEmbedded}` : `${client_module_css_default.panel}${props.conflictHidden ? ` ${client_module_css_default.panelConflictHidden}` : ""}`;
2127
2185
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2128
- className: client_module_css_default.panel,
2129
- style: { width },
2186
+ className: panelClass,
2187
+ style: props.embedded ? void 0 : { width },
2188
+ "data-sidechat-panel": props.embedded ? "embedded" : "floating",
2130
2189
  children: [
2131
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2190
+ !props.embedded && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2132
2191
  className: client_module_css_default.panelResize,
2133
2192
  onMouseDown: startResize
2134
2193
  }),
2135
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2194
+ !props.embedded && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2136
2195
  className: client_module_css_default.panelHeader,
2137
2196
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2138
2197
  className: client_module_css_default.panelTitle,
@@ -2480,7 +2539,7 @@ window.__ModuleLoader__.load({
2480
2539
  className: client_module_css_default.primary,
2481
2540
  "aria-label": activeRunning ? props.t("panel.stop") : props.t("panel.send"),
2482
2541
  onClick: activeRunning ? stop : send,
2483
- children: activeRunning ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconStopFill16, { size: 16 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconSendOutline16, { size: 16 })
2542
+ children: activeRunning ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconStopFill16, { size: 16 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconSendOutline14, { size: 16 })
2484
2543
  })
2485
2544
  })
2486
2545
  ]
@@ -2525,6 +2584,86 @@ window.__ModuleLoader__.load({
2525
2584
  });
2526
2585
  }
2527
2586
  /** The "Side chat" settings section (two switches + a prompt textarea). */
2587
+ /** Dock-mode body: the side-chat panel embedded in the built-in right sidebar's tab pane. */
2588
+ function EmbeddedSidechatPanel(props) {
2589
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SidechatPanel, {
2590
+ embedded: true,
2591
+ store: props.store,
2592
+ t: props.t,
2593
+ formatDuration: props.formatDuration,
2594
+ bringToMain: props.bringToMain,
2595
+ summarizeBring: props.summarizeBring,
2596
+ askSidechat: props.askSidechat,
2597
+ askSidechatNew: props.askSidechatNew
2598
+ });
2599
+ }
2600
+ /** The portalled shell: floating menus + the panel, switching on prefs.panelHome. */
2601
+ function SideChatShell(props) {
2602
+ const snap = (0, react.useSyncExternalStore)(props.store.subscribe, props.store.getSnapshot);
2603
+ const [builtinOverlay, setBuiltinOverlay] = (0, react.useState)(false);
2604
+ (0, react.useEffect)(() => {
2605
+ const probe = () => {
2606
+ if (document.querySelector("[data-sidebar-right-panel][data-sidebar-right-open]") !== null) return true;
2607
+ const floatHost = document.querySelector("[data-sidebar-right-float-host]");
2608
+ if (floatHost !== null && floatHost.childElementCount > 0) return true;
2609
+ return false;
2610
+ };
2611
+ let active = probe();
2612
+ const apply = () => {
2613
+ const next = probe();
2614
+ if (next !== active) {
2615
+ active = next;
2616
+ setBuiltinOverlay(next);
2617
+ }
2618
+ };
2619
+ apply();
2620
+ const observer = new MutationObserver(apply);
2621
+ observer.observe(document.body, {
2622
+ childList: true,
2623
+ subtree: true,
2624
+ attributes: true,
2625
+ attributeFilter: [
2626
+ "data-sidebar-right-open",
2627
+ "data-sidebar-right-panel",
2628
+ "data-sidebar-right-float-host"
2629
+ ]
2630
+ });
2631
+ window.addEventListener("resize", apply);
2632
+ return () => {
2633
+ observer.disconnect();
2634
+ window.removeEventListener("resize", apply);
2635
+ };
2636
+ }, []);
2637
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
2638
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SelectionMenu, {
2639
+ store: props.store,
2640
+ t: props.t
2641
+ }),
2642
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BringBackMenu, {
2643
+ store: props.store,
2644
+ t: props.t,
2645
+ bringToMain: props.bringToMain,
2646
+ summarizeBring: props.summarizeBring
2647
+ }),
2648
+ snap.mainQuestion !== null && !snap.panel.open && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(QuestionFab, {
2649
+ store: props.store,
2650
+ t: props.t,
2651
+ onOpen: () => {
2652
+ props.store.openPanel(snap.panel.parentSessionId);
2653
+ }
2654
+ }),
2655
+ snap.prefs.panelHome === "floating" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SidechatPanel, {
2656
+ store: props.store,
2657
+ t: props.t,
2658
+ formatDuration: props.formatDuration,
2659
+ bringToMain: props.bringToMain,
2660
+ summarizeBring: props.summarizeBring,
2661
+ askSidechat: props.askSidechat,
2662
+ askSidechatNew: props.askSidechatNew,
2663
+ conflictHidden: builtinOverlay
2664
+ })
2665
+ ] });
2666
+ }
2528
2667
  function SettingsSection(props) {
2529
2668
  const { store, t } = props;
2530
2669
  const { prefs } = (0, react.useSyncExternalStore)(store.subscribe, store.getSnapshot);
@@ -2653,6 +2792,63 @@ window.__ModuleLoader__.load({
2653
2792
  })]
2654
2793
  })]
2655
2794
  }),
2795
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2796
+ className: client_module_css_default.settingsRow,
2797
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
2798
+ className: client_module_css_default.settingsRowText,
2799
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2800
+ className: client_module_css_default.settingsRowTitle,
2801
+ children: t("settings.panelHomeTitle")
2802
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2803
+ className: client_module_css_default.settingsRowDesc,
2804
+ children: t("settings.panelHomeDesc")
2805
+ })]
2806
+ })
2807
+ }),
2808
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2809
+ className: client_module_css_default.settingsBringMode,
2810
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
2811
+ className: `${client_module_css_default.settingsBringOption} ${prefs.panelHome === "floating" ? client_module_css_default.settingsBringOptionActive : ""}`,
2812
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
2813
+ type: "radio",
2814
+ name: "dsh-side-chat-panel-home",
2815
+ className: client_module_css_default.settingsToggle,
2816
+ checked: prefs.panelHome === "floating",
2817
+ onChange: () => {
2818
+ toggle({ panelHome: "floating" });
2819
+ }
2820
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
2821
+ className: client_module_css_default.settingsRowText,
2822
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2823
+ className: client_module_css_default.settingsRowTitle,
2824
+ children: t("settings.panelHomeFloatingTitle")
2825
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2826
+ className: client_module_css_default.settingsRowDesc,
2827
+ children: t("settings.panelHomeFloatingDesc")
2828
+ })]
2829
+ })]
2830
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
2831
+ className: `${client_module_css_default.settingsBringOption} ${prefs.panelHome === "sidebar-right" ? client_module_css_default.settingsBringOptionActive : ""}`,
2832
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
2833
+ type: "radio",
2834
+ name: "dsh-side-chat-panel-home",
2835
+ className: client_module_css_default.settingsToggle,
2836
+ checked: prefs.panelHome === "sidebar-right",
2837
+ onChange: () => {
2838
+ toggle({ panelHome: "sidebar-right" });
2839
+ }
2840
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
2841
+ className: client_module_css_default.settingsRowText,
2842
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2843
+ className: client_module_css_default.settingsRowTitle,
2844
+ children: t("settings.panelHomeDockTitle")
2845
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2846
+ className: client_module_css_default.settingsRowDesc,
2847
+ children: t("settings.panelHomeDockDesc")
2848
+ })]
2849
+ })]
2850
+ })]
2851
+ }),
2656
2852
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2657
2853
  className: client_module_css_default.settingsRow,
2658
2854
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
@@ -2841,7 +3037,8 @@ window.__ModuleLoader__.load({
2841
3037
  lookupDefault: typeof raw.lookupDefault === "boolean" ? raw.lookupDefault : SUBCHAT_PREFS_DEFAULTS.lookupDefault,
2842
3038
  sendImmediately: typeof raw.sendImmediately === "boolean" ? raw.sendImmediately : SUBCHAT_PREFS_DEFAULTS.sendImmediately,
2843
3039
  defaultPrompt: typeof raw.defaultPrompt === "string" ? raw.defaultPrompt : SUBCHAT_PREFS_DEFAULTS.defaultPrompt,
2844
- bringMode: raw.bringMode === "context" ? "context" : "draft"
3040
+ bringMode: raw.bringMode === "context" ? "context" : "draft",
3041
+ panelHome: raw.panelHome === "floating" ? "floating" : "sidebar-right"
2845
3042
  });
2846
3043
  });
2847
3044
  ctx.effect(() => {
@@ -2894,7 +3091,69 @@ window.__ModuleLoader__.load({
2894
3091
  window.clearInterval(timer);
2895
3092
  };
2896
3093
  }, "dsh-side-chat: clear stale question dialog");
3094
+ ctx.effect(() => {
3095
+ let cleanup;
3096
+ let phase = "idle";
3097
+ const sync = () => {
3098
+ if (store.getSnapshot().prefs.panelHome === "sidebar-right") {
3099
+ if (phase === "docked" || phase === "unavailable") return;
3100
+ const sidebarRight = ctx.get("sidebarRight");
3101
+ if (sidebarRight === void 0) {
3102
+ phase = "unavailable";
3103
+ store.patch({ error: translate(activeLocale, "dock.unavailable") });
3104
+ return;
3105
+ }
3106
+ const dockT = (key) => translate(activeLocale, key);
3107
+ const disposeType = sidebarRight.tabs.register({
3108
+ id: SIDEBAR_TAB_ID,
3109
+ kind: SIDEBAR_TAB_KIND,
3110
+ priority: "extension",
3111
+ title: () => dockT("dock.title")
3112
+ });
3113
+ const disposeBody = ctx.slots.inject("sidebar.right.pane.tab", () => ctx.slots.register({
3114
+ name: "sidebar.right.pane.tab",
3115
+ key: SIDEBAR_TAB_ID,
3116
+ inject: () => ({
3117
+ store,
3118
+ t: dockT,
3119
+ formatDuration,
3120
+ bringToMain,
3121
+ summarizeBring,
3122
+ askSidechat,
3123
+ askSidechatNew
3124
+ })
3125
+ }, EmbeddedSidechatPanel));
3126
+ const launch = () => {
3127
+ try {
3128
+ sidebarRight.openTab(SIDEBAR_TAB_KIND, { revealIfOpened: true });
3129
+ } catch (error) {
3130
+ store.patch({ error: `${translate(activeLocale, "dock.openFailed")}: ${error instanceof Error ? error.message : String(error)}` });
3131
+ }
3132
+ };
3133
+ store.setDockLaunch(launch);
3134
+ cleanup = () => {
3135
+ store.setDockLaunch(null);
3136
+ disposeBody();
3137
+ disposeType();
3138
+ };
3139
+ phase = "docked";
3140
+ return;
3141
+ }
3142
+ if (phase === "idle") return;
3143
+ phase = "idle";
3144
+ store.setDockLaunch(null);
3145
+ cleanup?.();
3146
+ cleanup = void 0;
3147
+ };
3148
+ sync();
3149
+ const off = store.subscribe(sync);
3150
+ return () => {
3151
+ off();
3152
+ cleanup?.();
3153
+ };
3154
+ }, "dsh-side-chat: right-sidebar dock");
2897
3155
  const settingsT = (key) => translate(activeLocale, key);
3156
+ const formatDuration = (ms) => formatRunDuration(ms, activeLocale);
2898
3157
  ctx.slots.inject("settings.section", () => ctx.slots.register({
2899
3158
  name: "settings.section",
2900
3159
  id: "dsh-side-chat",
@@ -2911,28 +3170,15 @@ window.__ModuleLoader__.load({
2911
3170
  document.body.appendChild(host);
2912
3171
  const root = (0, react_dom_client.createRoot)(host);
2913
3172
  const t = (key) => translate(activeLocale, key);
2914
- const formatDuration = (ms) => formatRunDuration(ms, activeLocale);
2915
- root.render(/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
2916
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SelectionMenu, {
2917
- store,
2918
- t
2919
- }),
2920
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BringBackMenu, {
2921
- store,
2922
- t,
2923
- bringToMain,
2924
- summarizeBring
2925
- }),
2926
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SidechatPanel, {
2927
- store,
2928
- t,
2929
- formatDuration,
2930
- bringToMain,
2931
- summarizeBring,
2932
- askSidechat,
2933
- askSidechatNew
2934
- })
2935
- ] }));
3173
+ root.render(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SideChatShell, {
3174
+ store,
3175
+ t,
3176
+ formatDuration,
3177
+ bringToMain,
3178
+ summarizeBring,
3179
+ askSidechat,
3180
+ askSidechatNew
3181
+ }));
2936
3182
  return () => {
2937
3183
  root.unmount();
2938
3184
  host.remove();