dsh-coding-sidebar 1.0.8 → 1.0.9

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 (50) hide show
  1. package/lib/client-editor.js +223 -175
  2. package/lib/client-registry.js +763 -344
  3. package/lib/client-terminal.js +283 -179
  4. package/lib/client.js +760 -341
  5. package/lib/index.js +151 -2
  6. package/lib/types/client/DiffView.d.ts +33 -1
  7. package/lib/types/client/EditorHost.d.ts +3 -0
  8. package/lib/types/client/FileTree.d.ts +4 -0
  9. package/lib/types/client/TerminalWaitBanner.d.ts +6 -0
  10. package/lib/types/client/TreePanel.d.ts +3 -0
  11. package/lib/types/client/api.d.ts +26 -0
  12. package/lib/types/client/locales.d.ts +12 -0
  13. package/lib/types/client/state.d.ts +15 -0
  14. package/lib/types/fs-operations.d.ts +42 -0
  15. package/lib/types/git.d.ts +15 -0
  16. package/package.json +1 -1
  17. package/src/client/DiffTab.tsx +10 -1
  18. package/src/client/DiffView.tsx +174 -19
  19. package/src/client/EditorHost.tsx +8 -1
  20. package/src/client/FileTree.tsx +147 -4
  21. package/src/client/Sidebar.tsx +54 -3
  22. package/src/client/TerminalView.tsx +28 -0
  23. package/src/client/TerminalWaitBanner.tsx +32 -0
  24. package/src/client/TreePanel.tsx +6 -1
  25. package/src/client/api.ts +20 -0
  26. package/src/client/locales-ar.ts +12 -0
  27. package/src/client/locales-de.ts +12 -0
  28. package/src/client/locales-fr.ts +12 -0
  29. package/src/client/locales-hi.ts +12 -0
  30. package/src/client/locales-id.ts +12 -0
  31. package/src/client/locales-it.ts +12 -0
  32. package/src/client/locales-ja.ts +12 -0
  33. package/src/client/locales-ko.ts +12 -0
  34. package/src/client/locales-nl.ts +12 -0
  35. package/src/client/locales-pl.ts +12 -0
  36. package/src/client/locales-pt.ts +12 -0
  37. package/src/client/locales-ru.ts +12 -0
  38. package/src/client/locales-sv.ts +12 -0
  39. package/src/client/locales-th.ts +12 -0
  40. package/src/client/locales-tr.ts +12 -0
  41. package/src/client/locales-vi.ts +12 -0
  42. package/src/client/locales-zh-HK.ts +12 -0
  43. package/src/client/locales-zh-MO.ts +12 -0
  44. package/src/client/locales-zh-TW.ts +12 -0
  45. package/src/client/locales.ts +24 -0
  46. package/src/client/sidebar.module.css +68 -0
  47. package/src/client/state.ts +42 -3
  48. package/src/fs-operations.ts +126 -4
  49. package/src/git.ts +39 -2
  50. package/src/index.ts +43 -1
@@ -194,7 +194,8 @@ window.__ModuleLoader__.load({
194
194
  expanded: [],
195
195
  revealed: [],
196
196
  splits: leaf,
197
- floats: []
197
+ floats: [],
198
+ agentWaits: {}
198
199
  };
199
200
  }
200
201
  /** Whether a tree node (or any descendant) carries the given pane/split id. */
@@ -809,6 +810,19 @@ window.__ModuleLoader__.load({
809
810
  function agentTabId(uuid) {
810
811
  return `${AGENT_TAB_PREFIX}${uuid}`;
811
812
  }
813
+ /** Shallow equality of two agent-wait maps (same keys, same needle+since). */
814
+ function sameAgentWaits(a, b) {
815
+ if (a === void 0) return Object.keys(b).length === 0;
816
+ const aKeys = Object.keys(a);
817
+ if (aKeys.length !== Object.keys(b).length) return false;
818
+ for (const key of aKeys) {
819
+ const av = a[key];
820
+ const bv = b[key];
821
+ if (av === void 0 || bv === void 0) return false;
822
+ if (av.needle !== bv.needle || av.since !== bv.since) return false;
823
+ }
824
+ return true;
825
+ }
812
826
  /**
813
827
  * Reconcile the sidebar's agent-terminal tabs with the host's live list.
814
828
  * The host pushes the current list of agent terminals (created by the model
@@ -827,7 +841,12 @@ window.__ModuleLoader__.load({
827
841
  const serverUuids = new Set(agentTerminals.map((t) => t.uuid));
828
842
  const toAdd = agentTerminals.filter((t) => !existingUuids.has(t.uuid));
829
843
  const toRemove = existingAgentTabs.filter((tab) => !serverUuids.has(agentUuidOf(tab.id)) && tab.pin === void 0);
830
- if (toAdd.length === 0 && toRemove.length === 0) return state;
844
+ const serverWaits = {};
845
+ for (const terminal of agentTerminals) if (terminal.waiting !== void 0 && terminal.waiting !== null) serverWaits[terminal.uuid] = {
846
+ needle: terminal.waiting.needle,
847
+ since: terminal.waiting.since
848
+ };
849
+ if (toAdd.length === 0 && toRemove.length === 0 && sameAgentWaits(state.agentWaits, serverWaits)) return state;
831
850
  let splits = state.splits;
832
851
  let floats = state.floats;
833
852
  for (const tab of toRemove) {
@@ -841,7 +860,8 @@ window.__ModuleLoader__.load({
841
860
  let next = {
842
861
  ...state,
843
862
  splits,
844
- floats
863
+ floats,
864
+ agentWaits: serverWaits
845
865
  };
846
866
  for (const terminal of toAdd) {
847
867
  const tab = {
@@ -993,7 +1013,8 @@ window.__ModuleLoader__.load({
993
1013
  expanded: record.expanded,
994
1014
  revealed: [],
995
1015
  splits: migratedSplits,
996
- floats
1016
+ floats,
1017
+ agentWaits: {}
997
1018
  };
998
1019
  }
999
1020
  /** Collapse persisted split panes left empty after ephemeral diff tabs are dropped. */
@@ -1468,7 +1489,7 @@ window.__ModuleLoader__.load({
1468
1489
  if (claimed) return tab;
1469
1490
  }
1470
1491
  }
1471
- const SIDEBAR_SERVICE_VERSION = "1.0.8";
1492
+ const SIDEBAR_SERVICE_VERSION = "1.0.9";
1472
1493
  /**
1473
1494
  * Monotonic capability list consumers use to gate new API usage (features
1474
1495
  * are never removed). Each string names a v0.12.0+ capability:
@@ -2084,6 +2105,18 @@ window.__ModuleLoader__.load({
2084
2105
  producedOpen: "在侧边栏中打开",
2085
2106
  showInFolder: "在文件夹中显示",
2086
2107
  disconnected: "终端连接断开,重连中…",
2108
+ terminalWaitBanner: "Agent 正在等待 {needle}",
2109
+ terminalSkipWait: "跳过等待",
2110
+ gitFoldExpand: "展开 {count} 行上下文",
2111
+ gitFoldLoading: "展开中…",
2112
+ gitFoldFailed: "展开失败",
2113
+ rename: "重命名",
2114
+ renameInvalid: "名称不能为空,且不能包含路径分隔符。",
2115
+ delete: "删除",
2116
+ deleteTitle: "删除「{name}」?",
2117
+ deleteDescFile: "将永久删除该文件,此操作不可撤销。",
2118
+ deleteDescDir: "将永久删除该目录及其全部内容,此操作不可撤销。",
2119
+ dismiss: "关闭",
2087
2120
  exited: "终端进程已退出",
2088
2121
  noSession: "选择一个会话以使用侧边栏",
2089
2122
  pluginNotLoaded: "插件未加载,标签页暂不可用:",
@@ -2420,6 +2453,18 @@ window.__ModuleLoader__.load({
2420
2453
  producedOpen: "Open in sidebar",
2421
2454
  showInFolder: "Show in folder",
2422
2455
  disconnected: "Terminal disconnected, reconnecting…",
2456
+ terminalWaitBanner: "Agent is waiting for {needle}",
2457
+ terminalSkipWait: "Skip wait",
2458
+ gitFoldExpand: "Expand {count} context lines",
2459
+ gitFoldLoading: "Expanding…",
2460
+ gitFoldFailed: "Failed to expand",
2461
+ rename: "Rename",
2462
+ renameInvalid: "The name cannot be empty or contain path separators.",
2463
+ delete: "Delete",
2464
+ deleteTitle: "Delete \"{name}\"?",
2465
+ deleteDescFile: "This permanently deletes the file. This cannot be undone.",
2466
+ deleteDescDir: "This permanently deletes the directory and everything inside it. This cannot be undone.",
2467
+ dismiss: "Dismiss",
2423
2468
  exited: "Terminal process exited",
2424
2469
  noSession: "Select a conversation to use the sidebar",
2425
2470
  pluginNotLoaded: "Plugin not loaded; tab unavailable:",
@@ -2954,7 +2999,7 @@ window.__ModuleLoader__.load({
2954
2999
  }
2955
3000
  //#endregion
2956
3001
  //#region \0dsh-css:/Users/libing/kk_Projects/dsh-coding-sidebar/src/client/sidebar.module.css.mjs
2957
- const css$4 = "[data-dsh-panel-host]{z-index:25;pointer-events:none;position:fixed;inset:0;overflow:hidden}[data-dsh-panel-host][data-dsh-panel-host-degraded]{position:absolute;top:0;left:0}.S5HVoW_toggleCluster{top:calc(3px + env(safe-area-inset-top));z-index:45;pointer-events:auto;flex-direction:row;gap:4px;display:flex;position:absolute;right:10px}.S5HVoW_panel:not(.S5HVoW_panelHidden) .S5HVoW_tabBar{padding-right:72px}.S5HVoW_toggleButton{width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;transition:background var(--ds-transition-duration-slow) var(--ds-ease-in-out), color var(--ds-transition-duration-slow) var(--ds-ease-in-out);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;display:flex}.S5HVoW_toggleButton:hover:not(:disabled):not([aria-disabled=true]){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.S5HVoW_toggleButton:disabled,.S5HVoW_toggleButton[aria-disabled=true]{opacity:.4;cursor:default}.S5HVoW_panel{box-sizing:border-box;z-index:40;pointer-events:auto;background:var(--dsw-alias-bg-layer-1);border-left:1px solid var(--dsw-alias-border-l2);padding-bottom:env(safe-area-inset-bottom);transition:transform var(--ds-transition-duration-slow) var(--ds-ease-in-out), width var(--ds-transition-duration-slow) var(--ds-ease-in-out);flex-direction:column;display:flex;position:absolute;top:0;bottom:0;right:0}.S5HVoW_panelHidden{pointer-events:none;visibility:hidden;transition:transform var(--ds-transition-duration-slow) var(--ds-ease-in-out), width var(--ds-transition-duration-slow) var(--ds-ease-in-out), visibility 0s linear var(--ds-transition-duration-slow);transform:translate(102%)}.S5HVoW_panel[data-dragging]{transition:none}.S5HVoW_panelResize{cursor:col-resize;z-index:2;touch-action:none;width:8px;position:absolute;top:0;bottom:0;left:-4px}.S5HVoW_panelResizeActive{background:var(--dsw-alias-interactive-bg-hover-accent)}.S5HVoW_panelBody{flex:1;min-width:0;min-height:0;display:flex}.S5HVoW_panel{contain:layout style}body[data-dsh-sidebar-dragging] .S5HVoW_panel{will-change:transform}.S5HVoW_floatWindow{z-index:42;pointer-events:auto;background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);box-shadow:var(--dsw-shadow-lv3);contain:layout style;border-radius:8px;flex-direction:column;display:flex;position:absolute;overflow:hidden}.S5HVoW_floatWindowDragging{will-change:left, top, width, height}.S5HVoW_floatHeader{height:34px;font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);border-bottom:1px solid var(--dsw-alias-border-l1);cursor:grab;user-select:none;flex:none;align-items:center;gap:4px;padding:0 4px 0 10px;display:flex}.S5HVoW_floatWindowDragging .S5HVoW_floatHeader{cursor:grabbing}.S5HVoW_floatTitle{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.S5HVoW_floatClose{width:18px;height:18px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.S5HVoW_floatClose:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.S5HVoW_floatContent{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.S5HVoW_floatResize{z-index:2;cursor:nwse-resize;touch-action:none;width:14px;height:14px;position:absolute;bottom:0;right:0}.S5HVoW_floatResize:hover{background:var(--dsw-alias-interactive-bg-hover-accent)}.S5HVoW_pane[data-dsh-float-dock-over]{outline:2px dashed var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-2px}.S5HVoW_floatDropHint{z-index:46;pointer-events:none;border:2px dashed var(--dsw-alias-interactive-bg-hover-accent);background:color-mix(in srgb, var(--dsw-alias-interactive-bg-hover-accent) 12%, transparent);border-radius:8px;justify-content:center;align-items:center;display:flex;position:absolute}.S5HVoW_floatDropHintLabel{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);border-radius:999px;padding:4px 12px}.S5HVoW_toggleCluster,.S5HVoW_toggleButton,.S5HVoW_tabBar,.S5HVoW_floatHeader{-webkit-app-region:no-drag}body[data-dsh-title-bar-compat] .S5HVoW_toggleCluster{top:calc(var(--dsh-title-bar-strip,40px) + 3px)}body[data-dsh-title-bar-compat] .S5HVoW_panel{padding-top:var(--dsh-title-bar-strip,40px)}.S5HVoW_iconButton{width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.S5HVoW_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.S5HVoW_iconButton:disabled{opacity:.4;cursor:default}.S5HVoW_workbench,.S5HVoW_split{flex:1;min-width:0;min-height:0;display:flex}.S5HVoW_splitRow{flex-direction:row}.S5HVoW_splitCol{flex-direction:column}.S5HVoW_splitChild{display:flex;position:relative;overflow:hidden}.S5HVoW_divider{z-index:3;touch-action:none;flex:none;position:relative}.S5HVoW_dividerRow:after,.S5HVoW_dividerCol:after{content:\"\";background:var(--dsw-alias-border-l2);transition:background var(--ds-transition-duration-slow) var(--ds-ease-in-out);position:absolute}.S5HVoW_dividerRow{cursor:col-resize;width:7px;margin:0 -2px}.S5HVoW_dividerRow:after{width:1px;top:0;bottom:0;left:50%;transform:translate(-50%)}.S5HVoW_dividerCol{cursor:row-resize;height:7px;margin:-2px 0}.S5HVoW_dividerCol:after{height:1px;top:50%;left:0;right:0;transform:translateY(-50%)}.S5HVoW_divider:hover:after,.S5HVoW_dividerActive:after{background:var(--dsw-alias-interactive-bg-hover-accent)}.S5HVoW_pane{background:var(--dsw-alias-bg-base);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative}.S5HVoW_paneDrop{outline:1px solid var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-1px}.S5HVoW_dropOverlay{z-index:6;pointer-events:none;background:var(--dsw-alias-interactive-bg-hover-accent);opacity:.5;position:absolute}.S5HVoW_dropLeft{width:25%;top:0;bottom:0;left:0}.S5HVoW_dropRight{width:25%;top:0;bottom:0;right:0}.S5HVoW_dropUp{height:25%;top:0;left:0;right:0}.S5HVoW_dropDown{height:25%;bottom:0;left:0;right:0}.S5HVoW_dropCenter{outline:2px dashed var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-2px;background:0 0;inset:25%}.S5HVoW_paneContent{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.S5HVoW_paneTab{flex-direction:column;flex:1;min-height:0;display:flex}.S5HVoW_paneTabHidden{display:none}.S5HVoW_paneEmptyCards{flex:1;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));align-content:start;gap:8px;min-height:0;padding:12px;display:grid;overflow:hidden}.S5HVoW_paneCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);min-width:0;color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-strong-12);cursor:pointer;text-align:center;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:12px 8px;display:flex}.S5HVoW_paneCard:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l2)}.S5HVoW_paneCard:disabled{opacity:.45;cursor:default}.S5HVoW_tabBar{border-bottom:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);flex:none;align-items:stretch;height:34px;display:flex}.S5HVoW_tabBarDrop{outline:1px dashed var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-1px}.S5HVoW_tabList{scrollbar-width:none;flex:1;min-width:0;display:flex;overflow-x:auto}.S5HVoW_tabList::-webkit-scrollbar{display:none}.S5HVoW_tab{min-width:64px;max-width:160px;font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-secondary);border-right:1px solid var(--dsw-alias-border-l1);cursor:pointer;user-select:none;background:0 0;flex:none;align-items:center;gap:4px;padding:0 4px 0 10px;display:flex}.S5HVoW_tab:hover{background:var(--dsw-alias-interactive-bg-hover)}.S5HVoW_tabActive{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-active)}.S5HVoW_tabTitle{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.S5HVoW_tabBadge{min-width:16px;height:15px;font:var(--dsw-font-xxxs-strong-11);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-brand-primary);border-radius:8px;flex:none;justify-content:center;align-items:center;padding:0 4px;display:inline-flex}.S5HVoW_tabClose{width:18px;height:18px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.S5HVoW_tabClose:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.S5HVoW_tabBarPlus{background:var(--dsw-alias-bg-layer-1);width:22px;height:22px;color:var(--dsw-alias-label-tertiary);cursor:pointer;border:none;border-radius:5px;flex:none;justify-content:center;align-self:center;align-items:center;margin:0 6px;padding:0;display:inline-flex;position:sticky;right:0}.S5HVoW_tabBarPlus:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.S5HVoW_pinnedTab{color:var(--dsw-alias-label-tertiary);font-style:italic}.S5HVoW_pinnedTab:hover{color:var(--dsw-alias-label-secondary)}.S5HVoW_explorer{flex-direction:column;flex:1;min-height:0;display:flex}.S5HVoW_explorerHeader{flex:none;justify-content:space-between;align-items:center;gap:8px;height:36px;padding:0 8px 0 12px;display:flex}.S5HVoW_explorerRoot{font:var(--dsw-font-s-14);color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.S5HVoW_explorerBody{flex:1;min-height:0;padding:4px 8px 8px;overflow:hidden auto}.S5HVoW_explorerRow{box-sizing:border-box;width:100%;max-width:100%;height:34px;font:var(--dsw-font-s-14);color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;white-space:nowrap;animation:S5HVoW_dsh-row-in .15s var(--ds-ease-in-out);background:0 0;border:none;border-radius:8px;align-items:center;gap:6px;padding:0 8px;display:flex}.S5HVoW_explorerRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.S5HVoW_explorerRowRevealed{background:color-mix(in srgb, var(--dsw-alias-interactive-bg-hover-accent) 18%, transparent);box-shadow:inset 2px 0 0 var(--dsw-alias-interactive-bg-hover-accent)}.S5HVoW_explorerDir{font:var(--dsw-font-s-strong-14)}.S5HVoW_explorerHidden{opacity:.45}.S5HVoW_explorerSymlink{color:var(--dsw-alias-label-tertiary);flex:none}.S5HVoW_explorerBroken .S5HVoW_explorerName{color:var(--dsw-alias-state-error-primary)}.S5HVoW_explorerName{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.S5HVoW_explorerRef{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);height:20px;color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xxxs-strong-11);cursor:pointer;border-radius:999px;flex:none;align-items:center;padding:0 8px;display:none}.S5HVoW_explorerRef:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.S5HVoW_explorerRow:hover .S5HVoW_explorerRef,.S5HVoW_explorerRow:focus-within .S5HVoW_explorerRef{display:inline-flex}.S5HVoW_explorerCopied{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-tertiary);flex:none}.S5HVoW_explorerError{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-state-error-primary);cursor:default}@keyframes S5HVoW_dsh-row-in{0%{opacity:0}}.S5HVoW_explorerEmpty{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary);text-align:center;padding:16px}.S5HVoW_explorerRowDropTarget{background:var(--dsw-alias-interactive-bg-hover);outline:1px dashed var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-1px}.S5HVoW_uploadDropZone{z-index:1001;pointer-events:none;border:2px dashed var(--dsw-alias-interactive-bg-hover-accent);box-shadow:0 0 0 200vmax var(--dsw-alias-bg-mask-drop);animation:S5HVoW_dsh-row-in .15s var(--ds-ease-in-out);border-radius:10px;justify-content:center;align-items:flex-start;padding:12px;display:flex;position:fixed}.S5HVoW_uploadDropHero{flex-direction:column;align-items:center;gap:10px;max-width:100%;padding-top:8px;display:flex}.S5HVoW_uploadDropZonePill{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);max-width:100%;box-shadow:var(--dsw-shadow-lv2);color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-strong-12);border-radius:999px;align-items:center;gap:6px;padding:6px 12px;display:flex}.S5HVoW_uploadDropZoneText{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.S5HVoW_uploadDropChatHint{z-index:1002;pointer-events:none;animation:S5HVoW_dsh-row-in .15s var(--ds-ease-in-out);justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;top:0;bottom:0;left:0}.S5HVoW_uploadDropChatCard{text-align:center;max-width:100%;color:var(--dsw-alias-label-primary);font:var(--dsw-font-s-strong-14);flex-direction:column;align-items:center;gap:12px;display:flex}.S5HVoW_uploadOverlay{z-index:30;background:var(--dsw-alias-bg-mask-1);backdrop-filter:var(--dsw-mask-blur);animation:S5HVoW_dsh-row-in .15s var(--ds-ease-in-out);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.S5HVoW_uploadOverlayCard{border:1px solid var(--dsw-alias-border-inverted);background:var(--dsw-alias-bg-layer-2);min-width:280px;max-width:min(420px,100% - 48px);box-shadow:var(--dsw-shadow-lv3);border-radius:24px;flex-direction:column;gap:12px;padding:20px 24px;display:flex}.S5HVoW_uploadOverlayTitle{font:var(--dsw-font-s-strong-14);color:var(--dsw-alias-label-primary);align-items:center;gap:8px;display:flex}.S5HVoW_uploadOverlayTitle>svg{flex:none}.S5HVoW_uploadOverlayTitle>span{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.S5HVoW_uploadOverlayProgress{background:var(--dsw-alias-border-l2);border-radius:3px;height:6px;overflow:hidden}.S5HVoW_uploadOverlayProgressFill{background:var(--dsw-alias-interactive-bg-hover-accent);height:100%;transition:width .15s var(--ds-ease-in-out);border-radius:3px}.S5HVoW_uploadOverlayStatus{min-height:1em;font:var(--dsw-font-xxs-12);font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.S5HVoW_uploadOverlayCancel{border:1px solid var(--dsw-alias-border-l2);height:28px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-strong-12);cursor:pointer;background:0 0;border-radius:8px;align-self:flex-end;padding:0 14px}.S5HVoW_uploadOverlayCancel:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);border-color:var(--dsw-alias-border-l2)}.S5HVoW_uploadOverlayCancel:disabled{opacity:.4;cursor:default}.S5HVoW_editor{flex-direction:column;flex:1;min-height:0;display:flex}.S5HVoW_editorHeader{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:6px;padding:6px 8px;display:flex}.S5HVoW_editorTitle{min-width:0;font:var(--dsw-font-xxs-strong-12);color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.S5HVoW_editorPathInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);min-width:0;height:28px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-12);border-radius:6px;flex:1;padding:0 10px}.S5HVoW_editorPathInput:focus{border-color:var(--dsw-alias-border-l2);outline:none}.S5HVoW_editorTreeToggleActive{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-active)}.S5HVoW_editorBody{flex:1;min-height:0;display:flex}.S5HVoW_editorMain{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.S5HVoW_editorTreeDock{border-left:1px solid var(--dsw-alias-border-l1);flex:none;min-height:0;display:flex;position:relative}.S5HVoW_editorTreeResize{cursor:col-resize;touch-action:none;z-index:3;width:6px;position:absolute;top:0;bottom:0;left:0}.S5HVoW_editorTreeResize:hover{background:var(--dsw-alias-border-l2)}.S5HVoW_editorTreePanel{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative}.S5HVoW_editorTreePanelFull{flex:1}.S5HVoW_editorTreeSearch{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:6px;padding:6px 8px;display:flex}.S5HVoW_editorSearchInput{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);min-width:0;height:26px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-12);border-radius:6px;flex:1;padding:0 10px}.S5HVoW_editorSearchInput:focus{border-color:var(--dsw-alias-border-l2);outline:none}.S5HVoW_editorSearchHint{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary);padding:8px 12px}.S5HVoW_editorSearchResult{width:100%;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-12);text-align:left;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;border-radius:6px;padding:4px 8px;display:block;overflow:hidden}.S5HVoW_editorSearchResult:hover{background:var(--dsw-alias-interactive-bg-hover)}.S5HVoW_editorStatus{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-tertiary)}.S5HVoW_editorStatusError{color:var(--dsw-alias-state-error-primary)}.S5HVoW_dirtyDot{background:var(--dsw-alias-state-warn-primary);border-radius:50%;flex:none;width:7px;height:7px}.S5HVoW_editorPlaceholder{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary);text-align:center;flex:1;justify-content:center;align-items:center;padding:16px;display:flex}.S5HVoW_orphanedType{opacity:.7;overflow-wrap:anywhere;margin-top:8px;font-size:12px;display:block}.S5HVoW_editorBinary{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;padding:24px 16px;display:flex}.S5HVoW_editorBinaryNotice{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary)}.S5HVoW_editorDownloadLink{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-strong-12);cursor:pointer;transition:background var(--ds-transition-duration-slow) var(--ds-ease-in-out), border-color var(--ds-transition-duration-slow) var(--ds-ease-in-out);border-radius:6px;align-items:center;gap:6px;padding:6px 14px;text-decoration:none;display:inline-flex}.S5HVoW_editorDownloadLink:hover{background:var(--dsw-alias-interactive-bg-hover);border-color:var(--dsw-alias-border-l2)}.S5HVoW_editorError{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-state-error-primary);padding:12px 16px}.S5HVoW_editorBanner{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-state-warn-label);background:var(--dsw-alias-state-warn-tertiary);flex:none;padding:4px 8px}.S5HVoW_sandboxStatus{font:var(--dsw-font-xxxs-11);flex:none;align-items:center;gap:8px;padding:4px 10px;display:flex}.S5HVoW_sandboxStatusOn{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);border-bottom:1px solid var(--dsw-alias-border-l1)}.S5HVoW_sandboxStatusOff{color:var(--dsw-alias-state-error-primary);background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 10%, transparent);border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent)}.S5HVoW_sandboxDot{background:var(--dsw-alias-state-success-primary);border-radius:50%;flex:none;width:6px;height:6px}.S5HVoW_sandboxStatusOff .S5HVoW_sandboxDot{background:var(--dsw-alias-state-error-primary)}.S5HVoW_sandboxStatusText{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.S5HVoW_sandboxAction{border:1px solid var(--dsw-alias-border-l2);font:inherit;color:inherit;cursor:pointer;background:0 0;border-radius:6px;flex:none;padding:2px 8px}.S5HVoW_sandboxAction:hover{background:var(--dsw-alias-interactive-bg-hover)}.S5HVoW_browser{flex-direction:column;flex:1;min-height:0;display:flex}.S5HVoW_browserBar{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:4px;padding:6px 8px;display:flex}.S5HVoW_browserInput{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);min-width:0;height:28px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-12);border-radius:6px;flex:1;padding:0 10px}.S5HVoW_browserInput:focus{border-color:var(--dsw-alias-border-l2);outline:none}.S5HVoW_browserMessage{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-state-warn-label);background:var(--dsw-alias-state-warn-tertiary);flex:none;padding:4px 12px}.S5HVoW_browserFrame{background:var(--dsw-alias-bg-base);border:none;flex:1;width:100%;min-height:0}.S5HVoW_browserStart{text-align:center;min-height:0;font:var(--dsw-font-xs-13);color:var(--dsw-alias-label-tertiary);flex:1;justify-content:center;align-items:center;padding:20px;display:flex}.S5HVoW_browserBlocked{text-align:center;min-height:0;color:var(--dsw-alias-state-warn-primary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:6px;padding:24px;display:flex}.S5HVoW_browserBlockedTitle{font:var(--dsw-font-xxs-strong-12);color:var(--dsw-alias-label-primary)}.S5HVoW_browserBlockedDesc{max-width:280px;font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-secondary)}.S5HVoW_browserBlockedActions{gap:8px;margin-top:6px;display:flex}.S5HVoW_browserBlockedButton{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxxs-11);cursor:pointer;border-radius:6px;padding:4px 12px}.S5HVoW_browserBlockedButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.S5HVoW_editorCm{background:0 0;flex:1;min-height:0;overflow:hidden}.S5HVoW_editorCm .cm-editor{height:100%}.S5HVoW_editorCm .cm-scroller{padding:12px 16px}.S5HVoW_editorCm .cm-editor.cm-focused{outline:none}.S5HVoW_selectionPopup{z-index:60;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);height:28px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxxs-strong-11);white-space:nowrap;cursor:pointer;border-radius:6px;align-items:center;padding:0 10px;display:inline-flex;position:fixed;transform:translate(-50%,calc(-100% - 8px))}.S5HVoW_selectionPopup:hover{background:var(--dsw-alias-interactive-bg-hover)}.S5HVoW_terminalWrap{background:var(--dsw-alias-bg-base);flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.S5HVoW_terminal{flex:1;min-height:0;padding:6px 4px 6px 8px}.S5HVoW_terminal .xterm{height:100%}.S5HVoW_terminalBanner{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-state-warn-label);background:var(--dsw-alias-state-warn-tertiary);flex-wrap:wrap;flex:none;align-items:center;gap:8px;padding:3px 10px;display:flex}.S5HVoW_terminalBannerUrl{word-break:break-all;opacity:.85;flex-basis:100%;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.S5HVoW_boundaryError{z-index:50;background:var(--dsw-alias-bg-layer-1);border-left:1px solid var(--dsw-alias-border-l2);font:var(--dsw-font-xxs-12);color:var(--dsw-alias-state-error-primary);flex-direction:column;align-items:flex-start;gap:8px;padding:16px;display:flex;position:fixed;top:0;bottom:0;right:0;overflow:auto}.S5HVoW_terminalRetry{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxxs-strong-11);cursor:pointer;border-radius:999px;flex:none;padding:1px 8px}.S5HVoW_terminalRetry:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.S5HVoW_terminalDepsBanner{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-state-warn-label);background:var(--dsw-alias-state-warn-tertiary);flex-direction:column;flex:none;gap:6px;padding:10px;display:flex}.S5HVoW_terminalDepsTitle{font:var(--dsw-font-xxs-strong-12);color:var(--dsw-alias-state-warn-primary)}.S5HVoW_terminalDepsHint{opacity:.9}.S5HVoW_terminalDepsCommandRow{align-items:flex-start;gap:8px;display:flex}.S5HVoW_terminalRepairCommand{white-space:pre-wrap;word-break:break-all;user-select:text;min-width:0;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:4px;flex:1;max-height:160px;margin:0;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;overflow:auto}.S5HVoW_terminalDepsNote{opacity:.85}.S5HVoW_terminalDepsActions{align-items:center;gap:8px;display:flex}.S5HVoW_tabBoundaryError{min-height:0;font:var(--dsw-font-xxs-12);color:var(--dsw-alias-state-error-primary);flex-direction:column;flex:1;align-items:flex-start;gap:8px;padding:12px 16px;display:flex;overflow:auto}.S5HVoW_git{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden auto}.S5HVoW_gitHeader{flex:none;align-items:center;gap:8px;height:36px;padding:0 8px 0 12px;display:flex}.S5HVoW_gitWorktreeRow{flex:none;align-items:center;gap:8px;padding:6px 8px 0 12px;display:flex}.S5HVoW_gitWorktreeLabel{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xxxs-11);flex:none}.S5HVoW_gitBranchSelect{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);min-width:0;height:26px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-12);border-radius:6px;flex:1;padding:0 6px}.S5HVoW_gitSection{border-top:1px solid var(--dsw-alias-border-l1)}.S5HVoW_gitSectionHeader{font:var(--dsw-font-xxxs-strong-11);color:var(--dsw-alias-label-tertiary);text-transform:uppercase;justify-content:space-between;align-items:center;padding:6px 12px 4px;display:flex}.S5HVoW_gitLink{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-brand-primary);cursor:pointer;background:0 0;border:none;padding:0}.S5HVoW_gitLink:hover:not(:disabled){text-decoration:underline}.S5HVoW_gitLink:disabled{opacity:.4;cursor:default}.S5HVoW_gitRow{min-height:34px;animation:S5HVoW_dsh-row-in .15s var(--ds-ease-in-out);border-radius:8px;align-items:center;gap:6px;margin:0 6px;padding:0 8px;display:flex}.S5HVoW_gitRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.S5HVoW_gitRowSelected{background:var(--dsw-alias-interactive-bg-active)}.S5HVoW_gitRowMain{cursor:pointer;text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:8px;min-width:0;padding:3px 0;display:flex}.S5HVoW_gitBadge{width:20px;height:16px;font:var(--dsw-font-xxxs-strong-11);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary);border-radius:4px;flex:none;justify-content:center;align-items:center;display:inline-flex}.S5HVoW_gitName{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--dsw-font-s-14);color:var(--dsw-alias-label-primary);flex:1;overflow:hidden}.S5HVoW_gitEmpty{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary);padding:4px 12px 8px}.S5HVoW_gitPlaceholder{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary);text-align:center;padding:16px}.S5HVoW_gitError{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-state-error-primary);white-space:pre-wrap;padding:8px 12px}.S5HVoW_gitDiff{border-top:1px solid var(--dsw-alias-border-l1);padding:8px}.S5HVoW_gitDiffTab{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden auto}.S5HVoW_gitDiffTabHeader{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:8px;height:36px;padding:0 8px 0 12px;display:flex}.S5HVoW_gitDiffTabTitle{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--dsw-font-xxs-strong-12);color:var(--dsw-alias-label-primary);flex:1;overflow:hidden}.S5HVoW_gitDiffFile{width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:baseline;gap:6px;padding:8px 2px 2px;display:flex}.S5HVoW_gitDiffFile:disabled{cursor:default}.S5HVoW_gitDiffFile:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.S5HVoW_gitDiffFileChevron{color:var(--dsw-alias-label-tertiary);flex:none;transform:rotate(0)}.S5HVoW_gitDiffFileChevronExpanded{transform:rotate(90deg)}.S5HVoW_gitDiffFilePath{font:var(--dsw-font-xxs-strong-12);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.S5HVoW_gitDiffFileOld{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;flex:none;max-width:40%;overflow:hidden}.S5HVoW_gitDiffFileTag{border:1px solid var(--dsw-alias-border-l2);font:var(--dsw-font-xxxs-strong-11);color:var(--dsw-alias-label-secondary);border-radius:999px;flex:none;padding:0 6px}.S5HVoW_gitDiffHunk{font:var(--dsw-font-markdown-code-block-small);color:var(--dsw-alias-label-tertiary);gap:8px;padding:3px 2px;display:flex}.S5HVoW_gitDiffHunkHeader{color:var(--dsw-alias-label-secondary);flex:none}.S5HVoW_gitDiffHunkSection{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.S5HVoW_gitDiffLine{font:var(--dsw-font-markdown-code-block-small);white-space:pre-wrap;overflow-wrap:anywhere;align-items:stretch;min-width:0;line-height:20px;display:flex}.S5HVoW_gitDiffNum{text-align:right;width:36px;color:var(--dsw-alias-label-tertiary);user-select:none;flex:none;padding-right:8px}.S5HVoW_gitDiffCode{flex:1;min-width:0;overflow:visible}.S5HVoW_gitDiffCtx{color:var(--dsw-alias-label-primary)}.S5HVoW_gitDiffDel{color:var(--dsw-alias-state-error-primary);background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent)}.S5HVoW_gitDiffAdd{color:var(--dsw-alias-state-success-primary);background:color-mix(in srgb, var(--dsw-alias-state-success-primary) 12%, transparent)}.S5HVoW_gitDiffMeta{padding-left:2px}.S5HVoW_gitDiffMetaText{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-tertiary);font-style:italic}.S5HVoW_gitDiffExpand{width:100%;font:var(--dsw-font-xxs-12);color:var(--dsw-alias-brand-primary);cursor:pointer;text-align:center;background:0 0;border:none;margin:4px 0;display:block}.S5HVoW_gitDiffExpand:hover{background:var(--dsw-alias-interactive-bg-hover)}.S5HVoW_gitConfirmDesc{font:var(--dsw-font-s-14);color:var(--dsw-alias-label-primary);white-space:pre-wrap;margin:0}.S5HVoW_gitCommit{border-top:1px solid var(--dsw-alias-border-l1);align-items:center;gap:6px;padding:8px 12px;display:flex}.S5HVoW_gitCommitInput{flex:1;min-width:0}.S5HVoW_gitCommitButton{background:var(--dsw-alias-button-primary-fill);height:26px;color:var(--dsw-alias-label-primary-inverted);font:var(--dsw-font-xxs-strong-12);cursor:pointer;border:none;border-radius:6px;flex:none;padding:0 12px}.S5HVoW_gitCommitButton:hover:not(:disabled){background:var(--dsw-alias-button-primary-hover)}.S5HVoW_gitCommitButton:disabled{opacity:.45;cursor:default}.S5HVoW_gitLogRow{cursor:pointer;border-radius:8px;flex-direction:column;gap:2px;padding:5px 12px;display:flex}.S5HVoW_gitLogRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.S5HVoW_gitLogLine1{align-items:baseline;gap:8px;min-width:0;display:flex}.S5HVoW_gitLogHash{font:var(--dsw-font-markdown-code-block-small);color:var(--dsw-alias-label-tertiary);flex:none}.S5HVoW_gitLogLine2{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;display:flex}.S5HVoW_gitLogRef{border:1px solid var(--dsw-alias-border-l2);font:var(--dsw-font-xxxs-strong-11);color:var(--dsw-alias-brand-primary);white-space:nowrap;border-radius:999px;flex:none;padding:0 5px}.S5HVoW_gitLogSubject{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--dsw-font-s-14);color:var(--dsw-alias-label-primary);flex:1;overflow:hidden}.S5HVoW_gitLogMeta{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-tertiary)}.S5HVoW_gitLogMore{border:1px solid var(--dsw-alias-border-l2);width:calc(100% - 24px);font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border-radius:6px;margin:4px 12px 8px;padding:6px 0;display:block}.S5HVoW_gitLogMore:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.S5HVoW_gitLogMore:disabled{opacity:.5;cursor:default}.S5HVoW_producedRow{flex-wrap:wrap;align-items:center;gap:8px;padding:4px 0;display:flex}.S5HVoW_producedLabel{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary)}.S5HVoW_producedChip{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);max-width:200px;color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-12);cursor:pointer;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;display:inline-flex;overflow:hidden}.S5HVoW_producedChip:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.S5HVoW_producedChip span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.S5HVoW_producedMore{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary)}.S5HVoW_toggleButton:focus-visible,.S5HVoW_iconButton:focus-visible,.S5HVoW_tab:focus-visible,.S5HVoW_tabClose:focus-visible,.S5HVoW_tabBarPlus:focus-visible,.S5HVoW_paneCard:focus-visible,.S5HVoW_explorerRow:focus-visible,.S5HVoW_explorerRef:focus-visible,.S5HVoW_gitRowMain:focus-visible,.S5HVoW_gitLink:focus-visible,.S5HVoW_gitCommitButton:focus-visible,.S5HVoW_gitLogRow:focus-visible,.S5HVoW_gitLogMore:focus-visible,.S5HVoW_gitDiffFile:focus-visible,.S5HVoW_gitDiffExpand:focus-visible,.S5HVoW_terminalRetry:focus-visible,.S5HVoW_editorDownloadLink:focus-visible{outline:2px solid var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-1px}@media (prefers-reduced-motion:reduce){.S5HVoW_panel,.S5HVoW_panelHidden,.S5HVoW_toggleCluster,.S5HVoW_toggleButton,.S5HVoW_tab,.S5HVoW_tabBarPlus,.S5HVoW_paneCard,.S5HVoW_explorerRow,.S5HVoW_gitRow,.S5HVoW_divider,.S5HVoW_dividerRow:after,.S5HVoW_dividerCol:after{transition:none;animation:none}}@media (width<=767px){.S5HVoW_panel:not(.S5HVoW_panelHidden) .S5HVoW_tabBar{padding-right:40px}.S5HVoW_tab{min-width:48px;max-width:128px}}.S5HVoW_openWithLabel{align-items:center;gap:8px;width:100%;min-width:0;display:flex}.S5HVoW_openWithName{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.S5HVoW_openWithChevron{color:var(--dsw-alias-label-tertiary);flex:none}.S5HVoW_openWithPin{width:20px;height:20px;color:var(--dsw-alias-label-tertiary);cursor:pointer;border-radius:6px;flex:none;justify-content:center;align-items:center;display:inline-flex}.S5HVoW_openWithPin:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.S5HVoW_openWithPinActive{color:var(--dsw-alias-state-business-primary)}@keyframes S5HVoW_dsh-toc-flash{0%,60%{background:var(--dsw-alias-interactive-bg-hover)}to{background:0 0}}.S5HVoW_browserLive{flex-direction:column;gap:6px;padding:8px 10px;display:flex;position:absolute;inset:0;overflow:hidden}.S5HVoW_browserLiveStatus{opacity:.75;align-items:center;gap:8px;font-size:12px;display:flex}.S5HVoW_browserLiveCanvas{object-fit:contain;border:1px solid var(--dsw-alias-border-l,#80808040);cursor:crosshair;background:#fff;border-radius:8px;flex:1;width:100%;min-height:0}.S5HVoW_browserLiveTarget{max-width:260px;font-size:12px}";
3002
+ const css$4 = "[data-dsh-panel-host]{z-index:25;pointer-events:none;position:fixed;inset:0;overflow:hidden}[data-dsh-panel-host][data-dsh-panel-host-degraded]{position:absolute;top:0;left:0}.S5HVoW_toggleCluster{top:calc(3px + env(safe-area-inset-top));z-index:45;pointer-events:auto;flex-direction:row;gap:4px;display:flex;position:absolute;right:10px}.S5HVoW_panel:not(.S5HVoW_panelHidden) .S5HVoW_tabBar{padding-right:72px}.S5HVoW_toggleButton{width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;transition:background var(--ds-transition-duration-slow) var(--ds-ease-in-out), color var(--ds-transition-duration-slow) var(--ds-ease-in-out);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;display:flex}.S5HVoW_toggleButton:hover:not(:disabled):not([aria-disabled=true]){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.S5HVoW_toggleButton:disabled,.S5HVoW_toggleButton[aria-disabled=true]{opacity:.4;cursor:default}.S5HVoW_panel{box-sizing:border-box;z-index:40;pointer-events:auto;background:var(--dsw-alias-bg-layer-1);border-left:1px solid var(--dsw-alias-border-l2);padding-bottom:env(safe-area-inset-bottom);transition:transform var(--ds-transition-duration-slow) var(--ds-ease-in-out), width var(--ds-transition-duration-slow) var(--ds-ease-in-out);flex-direction:column;display:flex;position:absolute;top:0;bottom:0;right:0}.S5HVoW_panelHidden{pointer-events:none;visibility:hidden;transition:transform var(--ds-transition-duration-slow) var(--ds-ease-in-out), width var(--ds-transition-duration-slow) var(--ds-ease-in-out), visibility 0s linear var(--ds-transition-duration-slow);transform:translate(102%)}.S5HVoW_panel[data-dragging]{transition:none}.S5HVoW_panelResize{cursor:col-resize;z-index:2;touch-action:none;width:8px;position:absolute;top:0;bottom:0;left:-4px}.S5HVoW_panelResizeActive{background:var(--dsw-alias-interactive-bg-hover-accent)}.S5HVoW_panelBody{flex:1;min-width:0;min-height:0;display:flex}.S5HVoW_panel{contain:layout style}body[data-dsh-sidebar-dragging] .S5HVoW_panel{will-change:transform}.S5HVoW_floatWindow{z-index:42;pointer-events:auto;background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);box-shadow:var(--dsw-shadow-lv3);contain:layout style;border-radius:8px;flex-direction:column;display:flex;position:absolute;overflow:hidden}.S5HVoW_floatWindowDragging{will-change:left, top, width, height}.S5HVoW_floatHeader{height:34px;font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);border-bottom:1px solid var(--dsw-alias-border-l1);cursor:grab;user-select:none;flex:none;align-items:center;gap:4px;padding:0 4px 0 10px;display:flex}.S5HVoW_floatWindowDragging .S5HVoW_floatHeader{cursor:grabbing}.S5HVoW_floatTitle{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.S5HVoW_floatClose{width:18px;height:18px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.S5HVoW_floatClose:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.S5HVoW_floatContent{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.S5HVoW_floatResize{z-index:2;cursor:nwse-resize;touch-action:none;width:14px;height:14px;position:absolute;bottom:0;right:0}.S5HVoW_floatResize:hover{background:var(--dsw-alias-interactive-bg-hover-accent)}.S5HVoW_pane[data-dsh-float-dock-over]{outline:2px dashed var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-2px}.S5HVoW_floatDropHint{z-index:46;pointer-events:none;border:2px dashed var(--dsw-alias-interactive-bg-hover-accent);background:color-mix(in srgb, var(--dsw-alias-interactive-bg-hover-accent) 12%, transparent);border-radius:8px;justify-content:center;align-items:center;display:flex;position:absolute}.S5HVoW_floatDropHintLabel{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);border-radius:999px;padding:4px 12px}.S5HVoW_toggleCluster,.S5HVoW_toggleButton,.S5HVoW_tabBar,.S5HVoW_floatHeader{-webkit-app-region:no-drag}body[data-dsh-title-bar-compat] .S5HVoW_toggleCluster{top:calc(var(--dsh-title-bar-strip,40px) + 3px)}body[data-dsh-title-bar-compat] .S5HVoW_panel{padding-top:var(--dsh-title-bar-strip,40px)}.S5HVoW_iconButton{width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.S5HVoW_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.S5HVoW_iconButton:disabled{opacity:.4;cursor:default}.S5HVoW_workbench,.S5HVoW_split{flex:1;min-width:0;min-height:0;display:flex}.S5HVoW_splitRow{flex-direction:row}.S5HVoW_splitCol{flex-direction:column}.S5HVoW_splitChild{display:flex;position:relative;overflow:hidden}.S5HVoW_divider{z-index:3;touch-action:none;flex:none;position:relative}.S5HVoW_dividerRow:after,.S5HVoW_dividerCol:after{content:\"\";background:var(--dsw-alias-border-l2);transition:background var(--ds-transition-duration-slow) var(--ds-ease-in-out);position:absolute}.S5HVoW_dividerRow{cursor:col-resize;width:7px;margin:0 -2px}.S5HVoW_dividerRow:after{width:1px;top:0;bottom:0;left:50%;transform:translate(-50%)}.S5HVoW_dividerCol{cursor:row-resize;height:7px;margin:-2px 0}.S5HVoW_dividerCol:after{height:1px;top:50%;left:0;right:0;transform:translateY(-50%)}.S5HVoW_divider:hover:after,.S5HVoW_dividerActive:after{background:var(--dsw-alias-interactive-bg-hover-accent)}.S5HVoW_pane{background:var(--dsw-alias-bg-base);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative}.S5HVoW_paneDrop{outline:1px solid var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-1px}.S5HVoW_dropOverlay{z-index:6;pointer-events:none;background:var(--dsw-alias-interactive-bg-hover-accent);opacity:.5;position:absolute}.S5HVoW_dropLeft{width:25%;top:0;bottom:0;left:0}.S5HVoW_dropRight{width:25%;top:0;bottom:0;right:0}.S5HVoW_dropUp{height:25%;top:0;left:0;right:0}.S5HVoW_dropDown{height:25%;bottom:0;left:0;right:0}.S5HVoW_dropCenter{outline:2px dashed var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-2px;background:0 0;inset:25%}.S5HVoW_paneContent{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.S5HVoW_paneTab{flex-direction:column;flex:1;min-height:0;display:flex}.S5HVoW_paneTabHidden{display:none}.S5HVoW_paneEmptyCards{flex:1;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));align-content:start;gap:8px;min-height:0;padding:12px;display:grid;overflow:hidden}.S5HVoW_paneCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);min-width:0;color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-strong-12);cursor:pointer;text-align:center;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:12px 8px;display:flex}.S5HVoW_paneCard:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l2)}.S5HVoW_paneCard:disabled{opacity:.45;cursor:default}.S5HVoW_tabBar{border-bottom:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);flex:none;align-items:stretch;height:34px;display:flex}.S5HVoW_tabBarDrop{outline:1px dashed var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-1px}.S5HVoW_tabList{scrollbar-width:none;flex:1;min-width:0;display:flex;overflow-x:auto}.S5HVoW_tabList::-webkit-scrollbar{display:none}.S5HVoW_tab{min-width:64px;max-width:160px;font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-secondary);border-right:1px solid var(--dsw-alias-border-l1);cursor:pointer;user-select:none;background:0 0;flex:none;align-items:center;gap:4px;padding:0 4px 0 10px;display:flex}.S5HVoW_tab:hover{background:var(--dsw-alias-interactive-bg-hover)}.S5HVoW_tabActive{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-active)}.S5HVoW_tabTitle{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.S5HVoW_tabBadge{min-width:16px;height:15px;font:var(--dsw-font-xxxs-strong-11);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-brand-primary);border-radius:8px;flex:none;justify-content:center;align-items:center;padding:0 4px;display:inline-flex}.S5HVoW_tabClose{width:18px;height:18px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.S5HVoW_tabClose:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.S5HVoW_tabBarPlus{background:var(--dsw-alias-bg-layer-1);width:22px;height:22px;color:var(--dsw-alias-label-tertiary);cursor:pointer;border:none;border-radius:5px;flex:none;justify-content:center;align-self:center;align-items:center;margin:0 6px;padding:0;display:inline-flex;position:sticky;right:0}.S5HVoW_tabBarPlus:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.S5HVoW_pinnedTab{color:var(--dsw-alias-label-tertiary);font-style:italic}.S5HVoW_pinnedTab:hover{color:var(--dsw-alias-label-secondary)}.S5HVoW_explorer{flex-direction:column;flex:1;min-height:0;display:flex}.S5HVoW_explorerHeader{flex:none;justify-content:space-between;align-items:center;gap:8px;height:36px;padding:0 8px 0 12px;display:flex}.S5HVoW_explorerRoot{font:var(--dsw-font-s-14);color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.S5HVoW_explorerBody{flex:1;min-height:0;padding:4px 8px 8px;overflow:hidden auto}.S5HVoW_explorerRow{box-sizing:border-box;width:100%;max-width:100%;height:34px;font:var(--dsw-font-s-14);color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;white-space:nowrap;animation:S5HVoW_dsh-row-in .15s var(--ds-ease-in-out);background:0 0;border:none;border-radius:8px;align-items:center;gap:6px;padding:0 8px;display:flex}.S5HVoW_explorerRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.S5HVoW_explorerRowRevealed{background:color-mix(in srgb, var(--dsw-alias-interactive-bg-hover-accent) 18%, transparent);box-shadow:inset 2px 0 0 var(--dsw-alias-interactive-bg-hover-accent)}.S5HVoW_explorerDir{font:var(--dsw-font-s-strong-14)}.S5HVoW_explorerHidden{opacity:.45}.S5HVoW_explorerSymlink{color:var(--dsw-alias-label-tertiary);flex:none}.S5HVoW_explorerBroken .S5HVoW_explorerName{color:var(--dsw-alias-state-error-primary)}.S5HVoW_explorerName{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.S5HVoW_explorerRef{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);height:20px;color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xxxs-strong-11);cursor:pointer;border-radius:999px;flex:none;align-items:center;padding:0 8px;display:none}.S5HVoW_explorerRef:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.S5HVoW_explorerRow:hover .S5HVoW_explorerRef,.S5HVoW_explorerRow:focus-within .S5HVoW_explorerRef{display:inline-flex}.S5HVoW_explorerCopied{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-tertiary);flex:none}.S5HVoW_explorerError{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-state-error-primary);cursor:default}@keyframes S5HVoW_dsh-row-in{0%{opacity:0}}.S5HVoW_explorerEmpty{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary);text-align:center;padding:16px}.S5HVoW_explorerRowDropTarget{background:var(--dsw-alias-interactive-bg-hover);outline:1px dashed var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-1px}.S5HVoW_uploadDropZone{z-index:1001;pointer-events:none;border:2px dashed var(--dsw-alias-interactive-bg-hover-accent);box-shadow:0 0 0 200vmax var(--dsw-alias-bg-mask-drop);animation:S5HVoW_dsh-row-in .15s var(--ds-ease-in-out);border-radius:10px;justify-content:center;align-items:flex-start;padding:12px;display:flex;position:fixed}.S5HVoW_uploadDropHero{flex-direction:column;align-items:center;gap:10px;max-width:100%;padding-top:8px;display:flex}.S5HVoW_uploadDropZonePill{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);max-width:100%;box-shadow:var(--dsw-shadow-lv2);color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-strong-12);border-radius:999px;align-items:center;gap:6px;padding:6px 12px;display:flex}.S5HVoW_uploadDropZoneText{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.S5HVoW_uploadDropChatHint{z-index:1002;pointer-events:none;animation:S5HVoW_dsh-row-in .15s var(--ds-ease-in-out);justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;top:0;bottom:0;left:0}.S5HVoW_uploadDropChatCard{text-align:center;max-width:100%;color:var(--dsw-alias-label-primary);font:var(--dsw-font-s-strong-14);flex-direction:column;align-items:center;gap:12px;display:flex}.S5HVoW_uploadOverlay{z-index:30;background:var(--dsw-alias-bg-mask-1);backdrop-filter:var(--dsw-mask-blur);animation:S5HVoW_dsh-row-in .15s var(--ds-ease-in-out);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.S5HVoW_uploadOverlayCard{border:1px solid var(--dsw-alias-border-inverted);background:var(--dsw-alias-bg-layer-2);min-width:280px;max-width:min(420px,100% - 48px);box-shadow:var(--dsw-shadow-lv3);border-radius:24px;flex-direction:column;gap:12px;padding:20px 24px;display:flex}.S5HVoW_uploadOverlayTitle{font:var(--dsw-font-s-strong-14);color:var(--dsw-alias-label-primary);align-items:center;gap:8px;display:flex}.S5HVoW_uploadOverlayTitle>svg{flex:none}.S5HVoW_uploadOverlayTitle>span{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.S5HVoW_uploadOverlayProgress{background:var(--dsw-alias-border-l2);border-radius:3px;height:6px;overflow:hidden}.S5HVoW_uploadOverlayProgressFill{background:var(--dsw-alias-interactive-bg-hover-accent);height:100%;transition:width .15s var(--ds-ease-in-out);border-radius:3px}.S5HVoW_uploadOverlayStatus{min-height:1em;font:var(--dsw-font-xxs-12);font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.S5HVoW_uploadOverlayCancel{border:1px solid var(--dsw-alias-border-l2);height:28px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-strong-12);cursor:pointer;background:0 0;border-radius:8px;align-self:flex-end;padding:0 14px}.S5HVoW_uploadOverlayCancel:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);border-color:var(--dsw-alias-border-l2)}.S5HVoW_uploadOverlayCancel:disabled{opacity:.4;cursor:default}.S5HVoW_editor{flex-direction:column;flex:1;min-height:0;display:flex}.S5HVoW_editorHeader{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:6px;padding:6px 8px;display:flex}.S5HVoW_editorTitle{min-width:0;font:var(--dsw-font-xxs-strong-12);color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.S5HVoW_editorPathInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);min-width:0;height:28px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-12);border-radius:6px;flex:1;padding:0 10px}.S5HVoW_editorPathInput:focus{border-color:var(--dsw-alias-border-l2);outline:none}.S5HVoW_editorTreeToggleActive{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-active)}.S5HVoW_editorBody{flex:1;min-height:0;display:flex}.S5HVoW_editorMain{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.S5HVoW_editorTreeDock{border-left:1px solid var(--dsw-alias-border-l1);flex:none;min-height:0;display:flex;position:relative}.S5HVoW_editorTreeResize{cursor:col-resize;touch-action:none;z-index:3;width:6px;position:absolute;top:0;bottom:0;left:0}.S5HVoW_editorTreeResize:hover{background:var(--dsw-alias-border-l2)}.S5HVoW_editorTreePanel{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative}.S5HVoW_editorTreePanelFull{flex:1}.S5HVoW_editorTreeSearch{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:6px;padding:6px 8px;display:flex}.S5HVoW_editorSearchInput{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);min-width:0;height:26px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-12);border-radius:6px;flex:1;padding:0 10px}.S5HVoW_editorSearchInput:focus{border-color:var(--dsw-alias-border-l2);outline:none}.S5HVoW_editorSearchHint{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary);padding:8px 12px}.S5HVoW_editorSearchResult{width:100%;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-12);text-align:left;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;border-radius:6px;padding:4px 8px;display:block;overflow:hidden}.S5HVoW_editorSearchResult:hover{background:var(--dsw-alias-interactive-bg-hover)}.S5HVoW_editorStatus{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-tertiary)}.S5HVoW_editorStatusError{color:var(--dsw-alias-state-error-primary)}.S5HVoW_dirtyDot{background:var(--dsw-alias-state-warn-primary);border-radius:50%;flex:none;width:7px;height:7px}.S5HVoW_editorPlaceholder{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary);text-align:center;flex:1;justify-content:center;align-items:center;padding:16px;display:flex}.S5HVoW_orphanedType{opacity:.7;overflow-wrap:anywhere;margin-top:8px;font-size:12px;display:block}.S5HVoW_editorBinary{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;padding:24px 16px;display:flex}.S5HVoW_editorBinaryNotice{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary)}.S5HVoW_editorDownloadLink{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-strong-12);cursor:pointer;transition:background var(--ds-transition-duration-slow) var(--ds-ease-in-out), border-color var(--ds-transition-duration-slow) var(--ds-ease-in-out);border-radius:6px;align-items:center;gap:6px;padding:6px 14px;text-decoration:none;display:inline-flex}.S5HVoW_editorDownloadLink:hover{background:var(--dsw-alias-interactive-bg-hover);border-color:var(--dsw-alias-border-l2)}.S5HVoW_editorError{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-state-error-primary);padding:12px 16px}.S5HVoW_editorBanner{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-state-warn-label);background:var(--dsw-alias-state-warn-tertiary);flex:none;padding:4px 8px}.S5HVoW_sandboxStatus{font:var(--dsw-font-xxxs-11);flex:none;align-items:center;gap:8px;padding:4px 10px;display:flex}.S5HVoW_sandboxStatusOn{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);border-bottom:1px solid var(--dsw-alias-border-l1)}.S5HVoW_sandboxStatusOff{color:var(--dsw-alias-state-error-primary);background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 10%, transparent);border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent)}.S5HVoW_sandboxDot{background:var(--dsw-alias-state-success-primary);border-radius:50%;flex:none;width:6px;height:6px}.S5HVoW_sandboxStatusOff .S5HVoW_sandboxDot{background:var(--dsw-alias-state-error-primary)}.S5HVoW_sandboxStatusText{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.S5HVoW_sandboxAction{border:1px solid var(--dsw-alias-border-l2);font:inherit;color:inherit;cursor:pointer;background:0 0;border-radius:6px;flex:none;padding:2px 8px}.S5HVoW_sandboxAction:hover{background:var(--dsw-alias-interactive-bg-hover)}.S5HVoW_browser{flex-direction:column;flex:1;min-height:0;display:flex}.S5HVoW_browserBar{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:4px;padding:6px 8px;display:flex}.S5HVoW_browserInput{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);min-width:0;height:28px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-12);border-radius:6px;flex:1;padding:0 10px}.S5HVoW_browserInput:focus{border-color:var(--dsw-alias-border-l2);outline:none}.S5HVoW_browserMessage{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-state-warn-label);background:var(--dsw-alias-state-warn-tertiary);flex:none;padding:4px 12px}.S5HVoW_browserFrame{background:var(--dsw-alias-bg-base);border:none;flex:1;width:100%;min-height:0}.S5HVoW_browserStart{text-align:center;min-height:0;font:var(--dsw-font-xs-13);color:var(--dsw-alias-label-tertiary);flex:1;justify-content:center;align-items:center;padding:20px;display:flex}.S5HVoW_browserBlocked{text-align:center;min-height:0;color:var(--dsw-alias-state-warn-primary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:6px;padding:24px;display:flex}.S5HVoW_browserBlockedTitle{font:var(--dsw-font-xxs-strong-12);color:var(--dsw-alias-label-primary)}.S5HVoW_browserBlockedDesc{max-width:280px;font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-secondary)}.S5HVoW_browserBlockedActions{gap:8px;margin-top:6px;display:flex}.S5HVoW_browserBlockedButton{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxxs-11);cursor:pointer;border-radius:6px;padding:4px 12px}.S5HVoW_browserBlockedButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.S5HVoW_editorCm{background:0 0;flex:1;min-height:0;overflow:hidden}.S5HVoW_editorCm .cm-editor{height:100%}.S5HVoW_editorCm .cm-scroller{padding:12px 16px}.S5HVoW_editorCm .cm-editor.cm-focused{outline:none}.S5HVoW_selectionPopup{z-index:60;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);height:28px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxxs-strong-11);white-space:nowrap;cursor:pointer;border-radius:6px;align-items:center;padding:0 10px;display:inline-flex;position:fixed;transform:translate(-50%,calc(-100% - 8px))}.S5HVoW_selectionPopup:hover{background:var(--dsw-alias-interactive-bg-hover)}.S5HVoW_terminalWrap{background:var(--dsw-alias-bg-base);flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.S5HVoW_terminal{flex:1;min-height:0;padding:6px 4px 6px 8px}.S5HVoW_terminal .xterm{height:100%}.S5HVoW_terminalBanner{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-state-warn-label);background:var(--dsw-alias-state-warn-tertiary);flex-wrap:wrap;flex:none;align-items:center;gap:8px;padding:3px 10px;display:flex}.S5HVoW_terminalBannerUrl{word-break:break-all;opacity:.85;flex-basis:100%;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.S5HVoW_boundaryError{z-index:50;background:var(--dsw-alias-bg-layer-1);border-left:1px solid var(--dsw-alias-border-l2);font:var(--dsw-font-xxs-12);color:var(--dsw-alias-state-error-primary);flex-direction:column;align-items:flex-start;gap:8px;padding:16px;display:flex;position:fixed;top:0;bottom:0;right:0;overflow:auto}.S5HVoW_terminalRetry{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxxs-strong-11);cursor:pointer;border-radius:999px;flex:none;padding:1px 8px}.S5HVoW_terminalRetry:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.S5HVoW_gitFoldRow{box-sizing:border-box;background:var(--dsw-alias-bg-layer-1);width:100%;color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xxxs-11);text-align:center;cursor:pointer;border:none;outline:none;padding:2px 12px;display:block}.S5HVoW_gitFoldRow:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}.S5HVoW_gitFoldRow:disabled{cursor:default}.S5HVoW_gitFoldRowFailed{color:var(--dsw-alias-state-error-primary);opacity:.7}.S5HVoW_explorerRenameInput{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);min-width:0;height:20px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-12);border-radius:4px;outline:none;flex:1;padding:0 4px}.S5HVoW_terminalWaitBanner{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-state-warn-label);background:var(--dsw-alias-state-warn-tertiary);flex:none;align-items:center;gap:8px;padding:3px 10px;display:flex}.S5HVoW_terminalWaitNeedle{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;overflow:hidden}.S5HVoW_terminalDepsBanner{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-state-warn-label);background:var(--dsw-alias-state-warn-tertiary);flex-direction:column;flex:none;gap:6px;padding:10px;display:flex}.S5HVoW_terminalDepsTitle{font:var(--dsw-font-xxs-strong-12);color:var(--dsw-alias-state-warn-primary)}.S5HVoW_terminalDepsHint{opacity:.9}.S5HVoW_terminalDepsCommandRow{align-items:flex-start;gap:8px;display:flex}.S5HVoW_terminalRepairCommand{white-space:pre-wrap;word-break:break-all;user-select:text;min-width:0;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:4px;flex:1;max-height:160px;margin:0;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;overflow:auto}.S5HVoW_terminalDepsNote{opacity:.85}.S5HVoW_terminalDepsActions{align-items:center;gap:8px;display:flex}.S5HVoW_tabBoundaryError{min-height:0;font:var(--dsw-font-xxs-12);color:var(--dsw-alias-state-error-primary);flex-direction:column;flex:1;align-items:flex-start;gap:8px;padding:12px 16px;display:flex;overflow:auto}.S5HVoW_git{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden auto}.S5HVoW_gitHeader{flex:none;align-items:center;gap:8px;height:36px;padding:0 8px 0 12px;display:flex}.S5HVoW_gitWorktreeRow{flex:none;align-items:center;gap:8px;padding:6px 8px 0 12px;display:flex}.S5HVoW_gitWorktreeLabel{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xxxs-11);flex:none}.S5HVoW_gitBranchSelect{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);min-width:0;height:26px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-12);border-radius:6px;flex:1;padding:0 6px}.S5HVoW_gitSection{border-top:1px solid var(--dsw-alias-border-l1)}.S5HVoW_gitSectionHeader{font:var(--dsw-font-xxxs-strong-11);color:var(--dsw-alias-label-tertiary);text-transform:uppercase;justify-content:space-between;align-items:center;padding:6px 12px 4px;display:flex}.S5HVoW_gitLink{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-brand-primary);cursor:pointer;background:0 0;border:none;padding:0}.S5HVoW_gitLink:hover:not(:disabled){text-decoration:underline}.S5HVoW_gitLink:disabled{opacity:.4;cursor:default}.S5HVoW_gitRow{min-height:34px;animation:S5HVoW_dsh-row-in .15s var(--ds-ease-in-out);border-radius:8px;align-items:center;gap:6px;margin:0 6px;padding:0 8px;display:flex}.S5HVoW_gitRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.S5HVoW_gitRowSelected{background:var(--dsw-alias-interactive-bg-active)}.S5HVoW_gitRowMain{cursor:pointer;text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:8px;min-width:0;padding:3px 0;display:flex}.S5HVoW_gitBadge{width:20px;height:16px;font:var(--dsw-font-xxxs-strong-11);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary);border-radius:4px;flex:none;justify-content:center;align-items:center;display:inline-flex}.S5HVoW_gitName{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--dsw-font-s-14);color:var(--dsw-alias-label-primary);flex:1;overflow:hidden}.S5HVoW_gitEmpty{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary);padding:4px 12px 8px}.S5HVoW_gitPlaceholder{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary);text-align:center;padding:16px}.S5HVoW_gitError{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-state-error-primary);white-space:pre-wrap;padding:8px 12px}.S5HVoW_gitDiff{border-top:1px solid var(--dsw-alias-border-l1);padding:8px}.S5HVoW_gitDiffTab{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden auto}.S5HVoW_gitDiffTabHeader{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:8px;height:36px;padding:0 8px 0 12px;display:flex}.S5HVoW_gitDiffTabTitle{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--dsw-font-xxs-strong-12);color:var(--dsw-alias-label-primary);flex:1;overflow:hidden}.S5HVoW_gitDiffFile{width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:baseline;gap:6px;padding:8px 2px 2px;display:flex}.S5HVoW_gitDiffFile:disabled{cursor:default}.S5HVoW_gitDiffFile:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.S5HVoW_gitDiffFileChevron{color:var(--dsw-alias-label-tertiary);flex:none;transform:rotate(0)}.S5HVoW_gitDiffFileChevronExpanded{transform:rotate(90deg)}.S5HVoW_gitDiffFilePath{font:var(--dsw-font-xxs-strong-12);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.S5HVoW_gitDiffFileOld{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;flex:none;max-width:40%;overflow:hidden}.S5HVoW_gitDiffFileTag{border:1px solid var(--dsw-alias-border-l2);font:var(--dsw-font-xxxs-strong-11);color:var(--dsw-alias-label-secondary);border-radius:999px;flex:none;padding:0 6px}.S5HVoW_gitDiffHunk{font:var(--dsw-font-markdown-code-block-small);color:var(--dsw-alias-label-tertiary);gap:8px;padding:3px 2px;display:flex}.S5HVoW_gitDiffHunkHeader{color:var(--dsw-alias-label-secondary);flex:none}.S5HVoW_gitDiffHunkSection{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.S5HVoW_gitDiffLine{font:var(--dsw-font-markdown-code-block-small);white-space:pre-wrap;overflow-wrap:anywhere;align-items:stretch;min-width:0;line-height:20px;display:flex}.S5HVoW_gitDiffNum{text-align:right;width:36px;color:var(--dsw-alias-label-tertiary);user-select:none;flex:none;padding-right:8px}.S5HVoW_gitDiffCode{flex:1;min-width:0;overflow:visible}.S5HVoW_gitDiffCtx{color:var(--dsw-alias-label-primary)}.S5HVoW_gitDiffDel{color:var(--dsw-alias-state-error-primary);background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent)}.S5HVoW_gitDiffAdd{color:var(--dsw-alias-state-success-primary);background:color-mix(in srgb, var(--dsw-alias-state-success-primary) 12%, transparent)}.S5HVoW_gitDiffMeta{padding-left:2px}.S5HVoW_gitDiffMetaText{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-tertiary);font-style:italic}.S5HVoW_gitDiffExpand{width:100%;font:var(--dsw-font-xxs-12);color:var(--dsw-alias-brand-primary);cursor:pointer;text-align:center;background:0 0;border:none;margin:4px 0;display:block}.S5HVoW_gitDiffExpand:hover{background:var(--dsw-alias-interactive-bg-hover)}.S5HVoW_gitConfirmDesc{font:var(--dsw-font-s-14);color:var(--dsw-alias-label-primary);white-space:pre-wrap;margin:0}.S5HVoW_gitCommit{border-top:1px solid var(--dsw-alias-border-l1);align-items:center;gap:6px;padding:8px 12px;display:flex}.S5HVoW_gitCommitInput{flex:1;min-width:0}.S5HVoW_gitCommitButton{background:var(--dsw-alias-button-primary-fill);height:26px;color:var(--dsw-alias-label-primary-inverted);font:var(--dsw-font-xxs-strong-12);cursor:pointer;border:none;border-radius:6px;flex:none;padding:0 12px}.S5HVoW_gitCommitButton:hover:not(:disabled){background:var(--dsw-alias-button-primary-hover)}.S5HVoW_gitCommitButton:disabled{opacity:.45;cursor:default}.S5HVoW_gitLogRow{cursor:pointer;border-radius:8px;flex-direction:column;gap:2px;padding:5px 12px;display:flex}.S5HVoW_gitLogRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.S5HVoW_gitLogLine1{align-items:baseline;gap:8px;min-width:0;display:flex}.S5HVoW_gitLogHash{font:var(--dsw-font-markdown-code-block-small);color:var(--dsw-alias-label-tertiary);flex:none}.S5HVoW_gitLogLine2{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;display:flex}.S5HVoW_gitLogRef{border:1px solid var(--dsw-alias-border-l2);font:var(--dsw-font-xxxs-strong-11);color:var(--dsw-alias-brand-primary);white-space:nowrap;border-radius:999px;flex:none;padding:0 5px}.S5HVoW_gitLogSubject{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--dsw-font-s-14);color:var(--dsw-alias-label-primary);flex:1;overflow:hidden}.S5HVoW_gitLogMeta{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-tertiary)}.S5HVoW_gitLogMore{border:1px solid var(--dsw-alias-border-l2);width:calc(100% - 24px);font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border-radius:6px;margin:4px 12px 8px;padding:6px 0;display:block}.S5HVoW_gitLogMore:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.S5HVoW_gitLogMore:disabled{opacity:.5;cursor:default}.S5HVoW_producedRow{flex-wrap:wrap;align-items:center;gap:8px;padding:4px 0;display:flex}.S5HVoW_producedLabel{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary)}.S5HVoW_producedChip{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);max-width:200px;color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-12);cursor:pointer;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;display:inline-flex;overflow:hidden}.S5HVoW_producedChip:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.S5HVoW_producedChip span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.S5HVoW_producedMore{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary)}.S5HVoW_toggleButton:focus-visible,.S5HVoW_iconButton:focus-visible,.S5HVoW_tab:focus-visible,.S5HVoW_tabClose:focus-visible,.S5HVoW_tabBarPlus:focus-visible,.S5HVoW_paneCard:focus-visible,.S5HVoW_explorerRow:focus-visible,.S5HVoW_explorerRef:focus-visible,.S5HVoW_gitRowMain:focus-visible,.S5HVoW_gitLink:focus-visible,.S5HVoW_gitCommitButton:focus-visible,.S5HVoW_gitLogRow:focus-visible,.S5HVoW_gitLogMore:focus-visible,.S5HVoW_gitDiffFile:focus-visible,.S5HVoW_gitDiffExpand:focus-visible,.S5HVoW_terminalRetry:focus-visible,.S5HVoW_editorDownloadLink:focus-visible{outline:2px solid var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-1px}@media (prefers-reduced-motion:reduce){.S5HVoW_panel,.S5HVoW_panelHidden,.S5HVoW_toggleCluster,.S5HVoW_toggleButton,.S5HVoW_tab,.S5HVoW_tabBarPlus,.S5HVoW_paneCard,.S5HVoW_explorerRow,.S5HVoW_gitRow,.S5HVoW_divider,.S5HVoW_dividerRow:after,.S5HVoW_dividerCol:after{transition:none;animation:none}}@media (width<=767px){.S5HVoW_panel:not(.S5HVoW_panelHidden) .S5HVoW_tabBar{padding-right:40px}.S5HVoW_tab{min-width:48px;max-width:128px}}.S5HVoW_openWithLabel{align-items:center;gap:8px;width:100%;min-width:0;display:flex}.S5HVoW_openWithName{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.S5HVoW_openWithChevron{color:var(--dsw-alias-label-tertiary);flex:none}.S5HVoW_openWithPin{width:20px;height:20px;color:var(--dsw-alias-label-tertiary);cursor:pointer;border-radius:6px;flex:none;justify-content:center;align-items:center;display:inline-flex}.S5HVoW_openWithPin:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.S5HVoW_openWithPinActive{color:var(--dsw-alias-state-business-primary)}@keyframes S5HVoW_dsh-toc-flash{0%,60%{background:var(--dsw-alias-interactive-bg-hover)}to{background:0 0}}.S5HVoW_browserLive{flex-direction:column;gap:6px;padding:8px 10px;display:flex;position:absolute;inset:0;overflow:hidden}.S5HVoW_browserLiveStatus{opacity:.75;align-items:center;gap:8px;font-size:12px;display:flex}.S5HVoW_browserLiveCanvas{object-fit:contain;border:1px solid var(--dsw-alias-border-l,#80808040);cursor:crosshair;background:#fff;border-radius:8px;flex:1;width:100%;min-height:0}.S5HVoW_browserLiveTarget{max-width:260px;font-size:12px}";
2958
3003
  const tagId$4 = "dsh-external/dsh-coding-sidebar/sidebar.module.css";
2959
3004
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$4) + "]") === null) {
2960
3005
  const tag = document.createElement("style");
@@ -2964,207 +3009,212 @@ window.__ModuleLoader__.load({
2964
3009
  document.head.appendChild(tag);
2965
3010
  }
2966
3011
  var sidebar_module_css_default = {
2967
- "editorTreePanel": "S5HVoW_editorTreePanel",
2968
- "editorSearchHint": "S5HVoW_editorSearchHint",
2969
- "paneContent": "S5HVoW_paneContent",
2970
- "editorTitle": "S5HVoW_editorTitle",
2971
- "selectionPopup": "S5HVoW_selectionPopup",
2972
- "browser": "S5HVoW_browser",
2973
- "toggleButton": "S5HVoW_toggleButton",
2974
- "editorHeader": "S5HVoW_editorHeader",
2975
- "editorTreeSearch": "S5HVoW_editorTreeSearch",
2976
- "dropLeft": "S5HVoW_dropLeft",
2977
- "explorerCopied": "S5HVoW_explorerCopied",
2978
- "producedRow": "S5HVoW_producedRow",
2979
- "gitRow": "S5HVoW_gitRow",
2980
- "browserLiveStatus": "S5HVoW_browserLiveStatus",
2981
- "floatWindow": "S5HVoW_floatWindow",
2982
- "splitChild": "S5HVoW_splitChild",
2983
- "editorTreePanelFull": "S5HVoW_editorTreePanelFull",
2984
- "orphanedType": "S5HVoW_orphanedType",
3012
+ "explorerSymlink": "S5HVoW_explorerSymlink",
2985
3013
  "terminalDepsActions": "S5HVoW_terminalDepsActions",
2986
- "gitSection": "S5HVoW_gitSection",
2987
- "gitDiffLine": "S5HVoW_gitDiffLine",
2988
- "tabBadge": "S5HVoW_tabBadge",
2989
- "floatClose": "S5HVoW_floatClose",
2990
- "explorerEmpty": "S5HVoW_explorerEmpty",
2991
- "panelBody": "S5HVoW_panelBody",
2992
- "uploadDropChatCard": "S5HVoW_uploadDropChatCard",
2993
- "gitDiffHunk": "S5HVoW_gitDiffHunk",
2994
- "tabBar": "S5HVoW_tabBar",
2995
- "floatContent": "S5HVoW_floatContent",
2996
- "editorDownloadLink": "S5HVoW_editorDownloadLink",
2997
- "panelHidden": "S5HVoW_panelHidden",
2998
- "explorer": "S5HVoW_explorer",
2999
- "browserInput": "S5HVoW_browserInput",
3000
- "gitDiffDel": "S5HVoW_gitDiffDel",
3001
- "editorPlaceholder": "S5HVoW_editorPlaceholder",
3002
- "editorSearchInput": "S5HVoW_editorSearchInput",
3003
- "browserFrame": "S5HVoW_browserFrame",
3004
- "browserBlockedTitle": "S5HVoW_browserBlockedTitle",
3005
- "sandboxStatusOn": "S5HVoW_sandboxStatusOn",
3006
- "terminalDepsTitle": "S5HVoW_terminalDepsTitle",
3007
- "gitHeader": "S5HVoW_gitHeader",
3008
- "gitBadge": "S5HVoW_gitBadge",
3014
+ "boundaryError": "S5HVoW_boundaryError",
3015
+ "explorerName": "S5HVoW_explorerName",
3016
+ "terminalDepsHint": "S5HVoW_terminalDepsHint",
3017
+ "splitCol": "S5HVoW_splitCol",
3018
+ "paneCard": "S5HVoW_paneCard",
3019
+ "terminalWrap": "S5HVoW_terminalWrap",
3020
+ "uploadOverlay": "S5HVoW_uploadOverlay",
3021
+ "gitDiffFileOld": "S5HVoW_gitDiffFileOld",
3009
3022
  "gitLogLine1": "S5HVoW_gitLogLine1",
3010
- "openWithChevron": "S5HVoW_openWithChevron",
3011
- "browserLiveCanvas": "S5HVoW_browserLiveCanvas",
3012
- "uploadDropHero": "S5HVoW_uploadDropHero",
3013
- "uploadDropZoneText": "S5HVoW_uploadDropZoneText",
3014
- "terminalRetry": "S5HVoW_terminalRetry",
3015
- "dropOverlay": "S5HVoW_dropOverlay",
3016
- "editorBody": "S5HVoW_editorBody",
3017
- "browserBlocked": "S5HVoW_browserBlocked",
3023
+ "explorerCopied": "S5HVoW_explorerCopied",
3024
+ "gitLogHash": "S5HVoW_gitLogHash",
3025
+ "explorerRowRevealed": "S5HVoW_explorerRowRevealed",
3018
3026
  "browserBlockedActions": "S5HVoW_browserBlockedActions",
3019
- "explorerBody": "S5HVoW_explorerBody",
3020
- "gitDiffTab": "S5HVoW_gitDiffTab",
3021
- "gitDiffTabHeader": "S5HVoW_gitDiffTabHeader",
3022
- "terminalBannerUrl": "S5HVoW_terminalBannerUrl",
3023
- "gitDiffTabTitle": "S5HVoW_gitDiffTabTitle",
3024
3027
  "tabBoundaryError": "S5HVoW_tabBoundaryError",
3025
- "gitDiffFileChevron": "S5HVoW_gitDiffFileChevron",
3026
- "gitCommitInput": "S5HVoW_gitCommitInput",
3027
- "gitCommitButton": "S5HVoW_gitCommitButton",
3028
- "gitLogLine2": "S5HVoW_gitLogLine2",
3028
+ "openWithPin": "S5HVoW_openWithPin",
3029
+ "browserLiveTarget": "S5HVoW_browserLiveTarget",
3029
3030
  "splitRow": "S5HVoW_splitRow",
3030
- "gitDiffMetaText": "S5HVoW_gitDiffMetaText",
3031
- "divider": "S5HVoW_divider",
3032
- "uploadOverlayCard": "S5HVoW_uploadOverlayCard",
3033
- "explorerDir": "S5HVoW_explorerDir",
3034
- "sandboxStatus": "S5HVoW_sandboxStatus",
3035
- "browserBlockedButton": "S5HVoW_browserBlockedButton",
3036
- "tab": "S5HVoW_tab",
3037
- "gitDiffFile": "S5HVoW_gitDiffFile",
3031
+ "panelResizeActive": "S5HVoW_panelResizeActive",
3032
+ "tabClose": "S5HVoW_tabClose",
3033
+ "dividerActive": "S5HVoW_dividerActive",
3034
+ "tabBarDrop": "S5HVoW_tabBarDrop",
3035
+ "browserInput": "S5HVoW_browserInput",
3036
+ "sandboxDot": "S5HVoW_sandboxDot",
3037
+ "dirtyDot": "S5HVoW_dirtyDot",
3038
+ "gitLogRef": "S5HVoW_gitLogRef",
3039
+ "terminalBannerUrl": "S5HVoW_terminalBannerUrl",
3040
+ "dropOverlay": "S5HVoW_dropOverlay",
3041
+ "gitFoldRow": "S5HVoW_gitFoldRow",
3038
3042
  "editorSearchResult": "S5HVoW_editorSearchResult",
3039
- "editorCm": "S5HVoW_editorCm",
3040
- "gitDiffFileOld": "S5HVoW_gitDiffFileOld",
3041
- "gitDiffNum": "S5HVoW_gitDiffNum",
3043
+ "editorPlaceholder": "S5HVoW_editorPlaceholder",
3044
+ "browserBlockedDesc": "S5HVoW_browserBlockedDesc",
3045
+ "openWithName": "S5HVoW_openWithName",
3046
+ "gitConfirmDesc": "S5HVoW_gitConfirmDesc",
3047
+ "explorerRow": "S5HVoW_explorerRow",
3048
+ "editorPathInput": "S5HVoW_editorPathInput",
3049
+ "explorerBody": "S5HVoW_explorerBody",
3042
3050
  "pinnedTab": "S5HVoW_pinnedTab",
3043
- "gitDiffCtx": "S5HVoW_gitDiffCtx",
3044
- "dividerActive": "S5HVoW_dividerActive",
3045
- "terminalDepsCommandRow": "S5HVoW_terminalDepsCommandRow",
3046
- "gitDiffAdd": "S5HVoW_gitDiffAdd",
3051
+ "gitPlaceholder": "S5HVoW_gitPlaceholder",
3052
+ "producedChip": "S5HVoW_producedChip",
3053
+ "floatContent": "S5HVoW_floatContent",
3054
+ "uploadOverlayCancel": "S5HVoW_uploadOverlayCancel",
3055
+ "terminalRepairCommand": "S5HVoW_terminalRepairCommand",
3056
+ "gitHeader": "S5HVoW_gitHeader",
3057
+ "floatTitle": "S5HVoW_floatTitle",
3058
+ "openWithChevron": "S5HVoW_openWithChevron",
3059
+ "gitWorktreeRow": "S5HVoW_gitWorktreeRow",
3060
+ "editorTreePanelFull": "S5HVoW_editorTreePanelFull",
3061
+ "sandboxStatusOn": "S5HVoW_sandboxStatusOn",
3062
+ "gitDiffFileChevron": "S5HVoW_gitDiffFileChevron",
3063
+ "tabTitle": "S5HVoW_tabTitle",
3064
+ "tabBadge": "S5HVoW_tabBadge",
3065
+ "sandboxStatus": "S5HVoW_sandboxStatus",
3066
+ "tabList": "S5HVoW_tabList",
3067
+ "uploadDropZone": "S5HVoW_uploadDropZone",
3068
+ "floatResize": "S5HVoW_floatResize",
3069
+ "editorBody": "S5HVoW_editorBody",
3070
+ "explorerDir": "S5HVoW_explorerDir",
3071
+ "editorTreeSearch": "S5HVoW_editorTreeSearch",
3047
3072
  "floatDropHintLabel": "S5HVoW_floatDropHintLabel",
3048
- "explorerName": "S5HVoW_explorerName",
3049
- "editorTreeToggleActive": "S5HVoW_editorTreeToggleActive",
3073
+ "terminalWaitBanner": "S5HVoW_terminalWaitBanner",
3074
+ "tabBar": "S5HVoW_tabBar",
3050
3075
  "gitLogRow": "S5HVoW_gitLogRow",
3051
- "gitLogRef": "S5HVoW_gitLogRef",
3052
- "uploadOverlayTitle": "S5HVoW_uploadOverlayTitle",
3076
+ "dropRight": "S5HVoW_dropRight",
3077
+ "gitDiffFileChevronExpanded": "S5HVoW_gitDiffFileChevronExpanded",
3078
+ "floatWindow": "S5HVoW_floatWindow",
3079
+ "gitError": "S5HVoW_gitError",
3080
+ "gitSectionHeader": "S5HVoW_gitSectionHeader",
3081
+ "browserLiveCanvas": "S5HVoW_browserLiveCanvas",
3082
+ "explorerRef": "S5HVoW_explorerRef",
3083
+ "uploadDropChatHint": "S5HVoW_uploadDropChatHint",
3053
3084
  "floatWindowDragging": "S5HVoW_floatWindowDragging",
3054
- "sandboxAction": "S5HVoW_sandboxAction",
3055
- "browserStart": "S5HVoW_browserStart",
3085
+ "toggleButton": "S5HVoW_toggleButton",
3086
+ "pane": "S5HVoW_pane",
3087
+ "panelHidden": "S5HVoW_panelHidden",
3088
+ "dropLeft": "S5HVoW_dropLeft",
3089
+ "uploadDropChatCard": "S5HVoW_uploadDropChatCard",
3090
+ "panelResize": "S5HVoW_panelResize",
3091
+ "uploadOverlayProgress": "S5HVoW_uploadOverlayProgress",
3092
+ "orphanedType": "S5HVoW_orphanedType",
3093
+ "editorBinaryNotice": "S5HVoW_editorBinaryNotice",
3094
+ "selectionPopup": "S5HVoW_selectionPopup",
3095
+ "terminal": "S5HVoW_terminal",
3096
+ "floatDropHint": "S5HVoW_floatDropHint",
3097
+ "uploadDropHero": "S5HVoW_uploadDropHero",
3098
+ "editorError": "S5HVoW_editorError",
3099
+ "explorerRenameInput": "S5HVoW_explorerRenameInput",
3056
3100
  "terminalDepsBanner": "S5HVoW_terminalDepsBanner",
3057
- "floatResize": "S5HVoW_floatResize",
3058
- "openWithLabel": "S5HVoW_openWithLabel",
3059
- "tabClose": "S5HVoW_tabClose",
3060
- "gitLogMore": "S5HVoW_gitLogMore",
3061
- "paneCard": "S5HVoW_paneCard",
3062
- "dsh-row-in": "S5HVoW_dsh-row-in",
3063
- "dividerRow": "S5HVoW_dividerRow",
3064
- "editorTreeDock": "S5HVoW_editorTreeDock",
3065
- "uploadDropChatHint": "S5HVoW_uploadDropChatHint",
3066
- "gitDiffExpand": "S5HVoW_gitDiffExpand",
3067
- "uploadOverlayCancel": "S5HVoW_uploadOverlayCancel",
3068
- "producedLabel": "S5HVoW_producedLabel",
3069
- "gitDiffFilePath": "S5HVoW_gitDiffFilePath",
3101
+ "terminalDepsCommandRow": "S5HVoW_terminalDepsCommandRow",
3102
+ "tabActive": "S5HVoW_tabActive",
3103
+ "terminalDepsNote": "S5HVoW_terminalDepsNote",
3104
+ "gitDiffTab": "S5HVoW_gitDiffTab",
3105
+ "gitName": "S5HVoW_gitName",
3106
+ "gitDiffHunk": "S5HVoW_gitDiffHunk",
3107
+ "gitCommit": "S5HVoW_gitCommit",
3070
3108
  "dropDown": "S5HVoW_dropDown",
3071
- "explorerRowDropTarget": "S5HVoW_explorerRowDropTarget",
3072
- "dirtyDot": "S5HVoW_dirtyDot",
3073
- "openWithPin": "S5HVoW_openWithPin",
3109
+ "gitBranchSelect": "S5HVoW_gitBranchSelect",
3110
+ "editorSearchInput": "S5HVoW_editorSearchInput",
3111
+ "gitDiffTabTitle": "S5HVoW_gitDiffTabTitle",
3074
3112
  "gitDiffMeta": "S5HVoW_gitDiffMeta",
3075
- "gitLogHash": "S5HVoW_gitLogHash",
3076
- "uploadOverlayProgressFill": "S5HVoW_uploadOverlayProgressFill",
3077
- "panelResizeActive": "S5HVoW_panelResizeActive",
3078
- "explorerRef": "S5HVoW_explorerRef",
3079
- "dividerCol": "S5HVoW_dividerCol",
3080
- "producedChip": "S5HVoW_producedChip",
3081
- "uploadDropZonePill": "S5HVoW_uploadDropZonePill",
3082
- "explorerError": "S5HVoW_explorerError",
3083
- "gitCommit": "S5HVoW_gitCommit",
3084
- "browserBlockedDesc": "S5HVoW_browserBlockedDesc",
3085
- "uploadOverlay": "S5HVoW_uploadOverlay",
3086
- "dropCenter": "S5HVoW_dropCenter",
3087
- "gitRowMain": "S5HVoW_gitRowMain",
3088
- "editorStatus": "S5HVoW_editorStatus",
3089
- "gitName": "S5HVoW_gitName",
3090
- "gitDiffHunkHeader": "S5HVoW_gitDiffHunkHeader",
3091
- "sandboxStatusOff": "S5HVoW_sandboxStatusOff",
3092
- "gitDiff": "S5HVoW_gitDiff",
3093
- "editorBanner": "S5HVoW_editorBanner",
3094
- "browserMessage": "S5HVoW_browserMessage",
3095
- "uploadDropZone": "S5HVoW_uploadDropZone",
3096
- "tabBarPlus": "S5HVoW_tabBarPlus",
3097
- "paneTab": "S5HVoW_paneTab",
3098
- "explorerRow": "S5HVoW_explorerRow",
3099
- "browserBar": "S5HVoW_browserBar",
3113
+ "dsh-toc-flash": "S5HVoW_dsh-toc-flash",
3114
+ "split": "S5HVoW_split",
3115
+ "explorer": "S5HVoW_explorer",
3116
+ "splitChild": "S5HVoW_splitChild",
3117
+ "sandboxStatusText": "S5HVoW_sandboxStatusText",
3118
+ "gitDiffFile": "S5HVoW_gitDiffFile",
3100
3119
  "floatHeader": "S5HVoW_floatHeader",
3101
- "dropUp": "S5HVoW_dropUp",
3102
- "paneEmptyCards": "S5HVoW_paneEmptyCards",
3103
- "tabList": "S5HVoW_tabList",
3104
- "explorerSymlink": "S5HVoW_explorerSymlink",
3105
- "gitDiffCode": "S5HVoW_gitDiffCode",
3120
+ "gitDiffFilePath": "S5HVoW_gitDiffFilePath",
3121
+ "gitDiffFileTag": "S5HVoW_gitDiffFileTag",
3122
+ "gitFoldRowFailed": "S5HVoW_gitFoldRowFailed",
3123
+ "editorTreeResize": "S5HVoW_editorTreeResize",
3124
+ "gitDiffExpand": "S5HVoW_gitDiffExpand",
3125
+ "gitLogSubject": "S5HVoW_gitLogSubject",
3126
+ "producedRow": "S5HVoW_producedRow",
3127
+ "browserLive": "S5HVoW_browserLive",
3128
+ "paneTab": "S5HVoW_paneTab",
3129
+ "gitDiffHunkSection": "S5HVoW_gitDiffHunkSection",
3130
+ "gitBadge": "S5HVoW_gitBadge",
3131
+ "divider": "S5HVoW_divider",
3132
+ "browserLiveStatus": "S5HVoW_browserLiveStatus",
3133
+ "workbench": "S5HVoW_workbench",
3106
3134
  "terminalBanner": "S5HVoW_terminalBanner",
3107
- "gitBranchSelect": "S5HVoW_gitBranchSelect",
3108
- "panelResize": "S5HVoW_panelResize",
3109
- "iconButton": "S5HVoW_iconButton",
3110
- "sandboxDot": "S5HVoW_sandboxDot",
3111
- "gitSectionHeader": "S5HVoW_gitSectionHeader",
3135
+ "editorTitle": "S5HVoW_editorTitle",
3136
+ "terminalRetry": "S5HVoW_terminalRetry",
3137
+ "gitLink": "S5HVoW_gitLink",
3138
+ "gitLogMeta": "S5HVoW_gitLogMeta",
3139
+ "explorerRowDropTarget": "S5HVoW_explorerRowDropTarget",
3140
+ "paneContent": "S5HVoW_paneContent",
3141
+ "paneEmptyCards": "S5HVoW_paneEmptyCards",
3142
+ "uploadDropZoneText": "S5HVoW_uploadDropZoneText",
3143
+ "gitSection": "S5HVoW_gitSection",
3144
+ "editorDownloadLink": "S5HVoW_editorDownloadLink",
3112
3145
  "gitRowSelected": "S5HVoW_gitRowSelected",
3146
+ "panel": "S5HVoW_panel",
3147
+ "gitLogMore": "S5HVoW_gitLogMore",
3148
+ "editorSearchHint": "S5HVoW_editorSearchHint",
3149
+ "tab": "S5HVoW_tab",
3150
+ "editorTreeToggleActive": "S5HVoW_editorTreeToggleActive",
3151
+ "uploadOverlayTitle": "S5HVoW_uploadOverlayTitle",
3152
+ "editor": "S5HVoW_editor",
3153
+ "editorBanner": "S5HVoW_editorBanner",
3154
+ "explorerHidden": "S5HVoW_explorerHidden",
3155
+ "editorStatus": "S5HVoW_editorStatus",
3156
+ "tabBarPlus": "S5HVoW_tabBarPlus",
3157
+ "dsh-row-in": "S5HVoW_dsh-row-in",
3158
+ "panelBody": "S5HVoW_panelBody",
3159
+ "browser": "S5HVoW_browser",
3160
+ "paneDrop": "S5HVoW_paneDrop",
3161
+ "gitDiffMetaText": "S5HVoW_gitDiffMetaText",
3162
+ "openWithPinActive": "S5HVoW_openWithPinActive",
3163
+ "iconButton": "S5HVoW_iconButton",
3113
3164
  "paneTabHidden": "S5HVoW_paneTabHidden",
3114
- "producedMore": "S5HVoW_producedMore",
3165
+ "gitEmpty": "S5HVoW_gitEmpty",
3166
+ "uploadDropZonePill": "S5HVoW_uploadDropZonePill",
3167
+ "browserBar": "S5HVoW_browserBar",
3168
+ "browserFrame": "S5HVoW_browserFrame",
3115
3169
  "git": "S5HVoW_git",
3116
- "gitWorktreeLabel": "S5HVoW_gitWorktreeLabel",
3117
- "gitError": "S5HVoW_gitError",
3118
3170
  "editorMain": "S5HVoW_editorMain",
3119
- "tabActive": "S5HVoW_tabActive",
3120
- "gitLink": "S5HVoW_gitLink",
3121
- "gitEmpty": "S5HVoW_gitEmpty",
3122
- "editorPathInput": "S5HVoW_editorPathInput",
3123
- "terminal": "S5HVoW_terminal",
3124
- "toggleCluster": "S5HVoW_toggleCluster",
3125
- "sandboxStatusText": "S5HVoW_sandboxStatusText",
3126
- "explorerRowRevealed": "S5HVoW_explorerRowRevealed",
3127
- "gitLogSubject": "S5HVoW_gitLogSubject",
3128
- "browserLive": "S5HVoW_browserLive",
3129
- "terminalRepairCommand": "S5HVoW_terminalRepairCommand",
3130
- "gitLogMeta": "S5HVoW_gitLogMeta",
3131
- "gitConfirmDesc": "S5HVoW_gitConfirmDesc",
3132
- "boundaryError": "S5HVoW_boundaryError",
3133
- "workbench": "S5HVoW_workbench",
3134
- "floatDropHint": "S5HVoW_floatDropHint",
3135
- "uploadOverlayStatus": "S5HVoW_uploadOverlayStatus",
3136
- "split": "S5HVoW_split",
3171
+ "gitLogLine2": "S5HVoW_gitLogLine2",
3172
+ "editorTreePanel": "S5HVoW_editorTreePanel",
3173
+ "gitDiffDel": "S5HVoW_gitDiffDel",
3174
+ "sandboxStatusOff": "S5HVoW_sandboxStatusOff",
3175
+ "editorHeader": "S5HVoW_editorHeader",
3176
+ "uploadOverlayCard": "S5HVoW_uploadOverlayCard",
3177
+ "gitDiffCode": "S5HVoW_gitDiffCode",
3178
+ "producedLabel": "S5HVoW_producedLabel",
3179
+ "openWithLabel": "S5HVoW_openWithLabel",
3180
+ "browserBlockedButton": "S5HVoW_browserBlockedButton",
3181
+ "terminalWaitNeedle": "S5HVoW_terminalWaitNeedle",
3137
3182
  "explorerRoot": "S5HVoW_explorerRoot",
3138
- "explorerHidden": "S5HVoW_explorerHidden",
3139
- "terminalWrap": "S5HVoW_terminalWrap",
3140
- "gitDiffFileChevronExpanded": "S5HVoW_gitDiffFileChevronExpanded",
3141
- "gitWorktreeRow": "S5HVoW_gitWorktreeRow",
3142
- "openWithName": "S5HVoW_openWithName",
3143
- "openWithPinActive": "S5HVoW_openWithPinActive",
3144
- "dsh-toc-flash": "S5HVoW_dsh-toc-flash",
3145
- "splitCol": "S5HVoW_splitCol",
3146
3183
  "editorStatusError": "S5HVoW_editorStatusError",
3147
- "gitDiffHunkSection": "S5HVoW_gitDiffHunkSection",
3148
- "editorBinaryNotice": "S5HVoW_editorBinaryNotice",
3149
- "gitDiffFileTag": "S5HVoW_gitDiffFileTag",
3150
- "editorError": "S5HVoW_editorError",
3151
- "uploadOverlayProgress": "S5HVoW_uploadOverlayProgress",
3152
- "editorTreeResize": "S5HVoW_editorTreeResize",
3153
- "editorBinary": "S5HVoW_editorBinary",
3154
- "paneDrop": "S5HVoW_paneDrop",
3155
- "dropRight": "S5HVoW_dropRight",
3156
- "tabBarDrop": "S5HVoW_tabBarDrop",
3157
- "panel": "S5HVoW_panel",
3184
+ "dropUp": "S5HVoW_dropUp",
3185
+ "floatClose": "S5HVoW_floatClose",
3186
+ "gitDiffLine": "S5HVoW_gitDiffLine",
3187
+ "sandboxAction": "S5HVoW_sandboxAction",
3188
+ "editorCm": "S5HVoW_editorCm",
3189
+ "gitCommitButton": "S5HVoW_gitCommitButton",
3190
+ "browserBlockedTitle": "S5HVoW_browserBlockedTitle",
3191
+ "explorerError": "S5HVoW_explorerError",
3192
+ "gitWorktreeLabel": "S5HVoW_gitWorktreeLabel",
3193
+ "toggleCluster": "S5HVoW_toggleCluster",
3194
+ "producedMore": "S5HVoW_producedMore",
3195
+ "gitDiffAdd": "S5HVoW_gitDiffAdd",
3196
+ "dividerCol": "S5HVoW_dividerCol",
3197
+ "browserBlocked": "S5HVoW_browserBlocked",
3198
+ "gitDiffTabHeader": "S5HVoW_gitDiffTabHeader",
3199
+ "terminalDepsTitle": "S5HVoW_terminalDepsTitle",
3200
+ "uploadOverlayProgressFill": "S5HVoW_uploadOverlayProgressFill",
3158
3201
  "explorerBroken": "S5HVoW_explorerBroken",
3202
+ "editorTreeDock": "S5HVoW_editorTreeDock",
3203
+ "browserStart": "S5HVoW_browserStart",
3204
+ "explorerEmpty": "S5HVoW_explorerEmpty",
3205
+ "gitRowMain": "S5HVoW_gitRowMain",
3206
+ "uploadOverlayStatus": "S5HVoW_uploadOverlayStatus",
3207
+ "gitDiff": "S5HVoW_gitDiff",
3208
+ "gitDiffHunkHeader": "S5HVoW_gitDiffHunkHeader",
3209
+ "gitRow": "S5HVoW_gitRow",
3159
3210
  "explorerHeader": "S5HVoW_explorerHeader",
3160
- "editor": "S5HVoW_editor",
3161
- "floatTitle": "S5HVoW_floatTitle",
3162
- "terminalDepsNote": "S5HVoW_terminalDepsNote",
3163
- "tabTitle": "S5HVoW_tabTitle",
3164
- "browserLiveTarget": "S5HVoW_browserLiveTarget",
3165
- "pane": "S5HVoW_pane",
3166
- "terminalDepsHint": "S5HVoW_terminalDepsHint",
3167
- "gitPlaceholder": "S5HVoW_gitPlaceholder"
3211
+ "editorBinary": "S5HVoW_editorBinary",
3212
+ "browserMessage": "S5HVoW_browserMessage",
3213
+ "gitDiffNum": "S5HVoW_gitDiffNum",
3214
+ "dividerRow": "S5HVoW_dividerRow",
3215
+ "gitDiffCtx": "S5HVoW_gitDiffCtx",
3216
+ "dropCenter": "S5HVoW_dropCenter",
3217
+ "gitCommitInput": "S5HVoW_gitCommitInput"
3168
3218
  };
3169
3219
  //#endregion
3170
3220
  //#region src/client/intercept.tsx
@@ -3427,6 +3477,15 @@ window.__ModuleLoader__.load({
3427
3477
  path,
3428
3478
  content
3429
3479
  })),
3480
+ /** Rename one tree row within its directory (single-segment name; a
3481
+ * destination-existence clash is a 409; symlink rows rename the link). */
3482
+ fsRename: (scope, path, name) => call("fs.rename", scopePayload(scope, {
3483
+ path,
3484
+ name
3485
+ })),
3486
+ /** Delete one tree row permanently (recursive for directories; a symlink
3487
+ * row unlinks the link only). */
3488
+ fsRemove: (scope, path) => call("fs.remove", scopePayload(scope, { path })),
3430
3489
  /** Upload one file's raw bytes into `dir` (keeps the folder tree via
3431
3490
  * `relativePath`); the host streams it under the session workspace. */
3432
3491
  uploadFile: (scope, dir, relativePath, body, signal) => fetchUpload(scope, dir, relativePath, body, signal),
@@ -3448,6 +3507,13 @@ window.__ModuleLoader__.load({
3448
3507
  }), signal),
3449
3508
  /** Full patch text of one commit (diff display for the history rows). */
3450
3509
  gitCommitDiff: (scope, hash, worktree, signal) => call("git.commit-diff", gitPayload(scope, worktree, { hash }), signal),
3510
+ /** Both sides' full file contents for a diff-fold expansion; a missing
3511
+ * side is null (untracked / deleted) and the view degrades the fold. */
3512
+ gitFoldContents: (scope, opts, worktree, signal) => call("git.fold-contents", gitPayload(scope, worktree, {
3513
+ path: opts.path,
3514
+ ...opts.staged !== void 0 ? { staged: opts.staged } : {},
3515
+ ...opts.hash !== void 0 ? { hash: opts.hash } : {}
3516
+ }), signal),
3451
3517
  /** Discard the worktree changes of one file (the index is untouched). */
3452
3518
  gitDiscard: (scope, path, worktree) => call("git.discard", gitPayload(scope, worktree, { path })),
3453
3519
  /** Revert one commit onto the current branch. */
@@ -3460,6 +3526,9 @@ window.__ModuleLoader__.load({
3460
3526
  ptyClose: (scope, tab) => call("pty.close", scopePayload(scope, { tab })),
3461
3527
  /** Release an agent terminal by uuid (tab closed while WS was down). */
3462
3528
  agentPtyClose: (uuid) => call("agent-pty.close", { uuid }),
3529
+ /** Skip every active terminal_wait_for on one agent terminal (the wait
3530
+ * banner's skip button). Idempotent: {skipped:0} when none is active. */
3531
+ agentSkipWait: (uuid) => call("agent-pty.skip-wait", { uuid }),
3463
3532
  /** Terminal dependency status (issue #140): after a WS close 1011 with
3464
3533
  * reason `pty-deps-missing` the view fetches the full repair details here
3465
3534
  * (the close reason itself is capped at 123 bytes). */
@@ -4351,13 +4420,19 @@ window.__ModuleLoader__.load({
4351
4420
  })]
4352
4421
  });
4353
4422
  function FileTree(props) {
4354
- const { sessionId, cwd, expanded, revealed, onToggle, onOpenFile, onOpenFileNewTab, onOpenFileSide, openWithTargets, openWithPinned, openWithSsh, onOpenWith, onToggleOpenWithPin, onReferenceFile, refreshTick, onUploadRequest, busy } = props;
4423
+ const { sessionId, cwd, expanded, revealed, onToggle, onOpenFile, onOpenFileNewTab, onOpenFileSide, openWithTargets, openWithPinned, openWithSsh, onOpenWith, onToggleOpenWithPin, onReferenceFile, refreshTick, onUploadRequest, busy, onPathRenamed, onPathRemoved } = props;
4355
4424
  const [data, setData] = (0, react.useState)({});
4356
4425
  const dataRef = (0, react.useRef)(data);
4357
4426
  /** The row whose path was just copied ("copied" label replaces its button). */
4358
4427
  const [copiedPath, setCopiedPath] = (0, react.useState)(null);
4359
4428
  /** Open context menu: the row path (and whether it is a directory) plus the cursor position. */
4360
4429
  const [rowMenu, setRowMenu] = (0, react.useState)(null);
4430
+ /** The row being renamed inline (pre-filled base name; Enter commits). */
4431
+ const [renaming, setRenaming] = (0, react.useState)(null);
4432
+ /** The row pending delete confirmation (the Modal owns the final call). */
4433
+ const [deleting, setDeleting] = (0, react.useState)(null);
4434
+ /** The last mutation failure (dismissable strip above the tree). */
4435
+ const [mutationError, setMutationError] = (0, react.useState)(null);
4361
4436
  /** Whether a file drag hovers the tree (drives the portaled drop zone). */
4362
4437
  const [dropOver, setDropOver] = (0, react.useState)(false);
4363
4438
  /** The directory a drag is hovering right now (null = body, drop to root). */
@@ -4512,6 +4587,89 @@ window.__ModuleLoader__.load({
4512
4587
  }, COPIED_MS);
4513
4588
  });
4514
4589
  }, []);
4590
+ /** Re-fetch one directory level (a mutation changed it on disk). */
4591
+ const reloadDir = (0, react.useCallback)((dir) => {
4592
+ dataRef.current = {
4593
+ ...dataRef.current,
4594
+ [dir]: {}
4595
+ };
4596
+ setData(dataRef.current);
4597
+ api.fsTree({
4598
+ sessionId,
4599
+ cwd
4600
+ }, dir).then((listing) => {
4601
+ storeLevel(dir, { entries: listing.entries });
4602
+ }).catch((error) => {
4603
+ storeLevel(dir, { error: error instanceof Error ? error.message : String(error) });
4604
+ });
4605
+ }, [
4606
+ sessionId,
4607
+ cwd,
4608
+ storeLevel
4609
+ ]);
4610
+ /** Commit the inline rename: single-segment name; the row reloads from
4611
+ * its parent and open tabs retarget through the caller. */
4612
+ const commitRename = (target) => {
4613
+ const name = target.name.trim();
4614
+ if (name === "" || name.includes("/") || name.includes("\\")) {
4615
+ setMutationError(t("renameInvalid"));
4616
+ return;
4617
+ }
4618
+ api.fsRename({
4619
+ sessionId,
4620
+ cwd
4621
+ }, target.path, name).then(({ path }) => {
4622
+ setRenaming(null);
4623
+ reloadDir(parentOf(target.path) ?? path);
4624
+ onPathRenamed?.(target.path, path);
4625
+ }).catch((error) => {
4626
+ setMutationError(error instanceof Error ? error.message : String(error));
4627
+ });
4628
+ };
4629
+ /** Commit the confirmed delete: the parent reloads and the caller closes
4630
+ * every open tab at or under the removed path. */
4631
+ const commitDelete = (target) => {
4632
+ api.fsRemove({
4633
+ sessionId,
4634
+ cwd
4635
+ }, target.path).then(() => {
4636
+ setDeleting(null);
4637
+ reloadDir(parentOf(target.path) ?? target.path);
4638
+ onPathRemoved?.(target.path);
4639
+ }).catch((error) => {
4640
+ setMutationError(error instanceof Error ? error.message : String(error));
4641
+ });
4642
+ };
4643
+ /** The inline rename input (auto-focused, pre-selected; Enter/blur commits,
4644
+ * Esc cancels, an IME composition never triggers the key handlers). */
4645
+ const renameCancelled = (0, react.useRef)(false);
4646
+ const renderRenameInput = (path) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
4647
+ autoFocus: true,
4648
+ className: sidebar_module_css_default.explorerRenameInput,
4649
+ defaultValue: renaming?.name ?? "",
4650
+ onClick: (event) => {
4651
+ event.stopPropagation();
4652
+ },
4653
+ onKeyDown: (event) => {
4654
+ event.stopPropagation();
4655
+ if (event.nativeEvent.isComposing) return;
4656
+ if (event.key === "Enter") {
4657
+ event.preventDefault();
4658
+ if (renaming !== null) commitRename(renaming);
4659
+ } else if (event.key === "Escape") {
4660
+ event.preventDefault();
4661
+ renameCancelled.current = true;
4662
+ setRenaming(null);
4663
+ }
4664
+ },
4665
+ onBlur: () => {
4666
+ if (renameCancelled.current) {
4667
+ renameCancelled.current = false;
4668
+ return;
4669
+ }
4670
+ if (renaming !== null) commitRename(renaming);
4671
+ }
4672
+ });
4515
4673
  /** The row's trailing actions: the @-reference button, or the copied label. */
4516
4674
  const rowActions = (entry) => {
4517
4675
  if (copiedPath === entry.path) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
@@ -4673,7 +4831,7 @@ window.__ModuleLoader__.load({
4673
4831
  },
4674
4832
  children: [
4675
4833
  isOpen ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(VscFolderOpened, { size: 14 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(VscFolder, { size: 14 }),
4676
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4834
+ renaming?.path === entry.path ? renderRenameInput(entry.path) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4677
4835
  className: sidebar_module_css_default.explorerName,
4678
4836
  children: entry.name
4679
4837
  }),
@@ -4712,7 +4870,7 @@ window.__ModuleLoader__.load({
4712
4870
  },
4713
4871
  children: [
4714
4872
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(VscFile, { size: 14 }),
4715
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4873
+ renaming?.path === entry.path ? renderRenameInput(entry.path) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4716
4874
  className: sidebar_module_css_default.explorerName,
4717
4875
  children: entry.name
4718
4876
  }),
@@ -4808,6 +4966,27 @@ window.__ModuleLoader__.load({
4808
4966
  event.target.value = "";
4809
4967
  }
4810
4968
  }),
4969
+ mutationError !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4970
+ className: clsx(sidebar_module_css_default.explorerRow, sidebar_module_css_default.explorerError),
4971
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4972
+ style: {
4973
+ flex: 1,
4974
+ minWidth: 0,
4975
+ overflow: "hidden",
4976
+ textOverflow: "ellipsis"
4977
+ },
4978
+ children: mutationError
4979
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
4980
+ type: "button",
4981
+ className: sidebar_module_css_default.explorerRef,
4982
+ "aria-label": t("dismiss"),
4983
+ title: t("dismiss"),
4984
+ onClick: () => {
4985
+ setMutationError(null);
4986
+ },
4987
+ children: t("dismiss")
4988
+ })]
4989
+ }),
4811
4990
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Menu, {
4812
4991
  open: rowMenu !== null,
4813
4992
  onClose: () => {
@@ -4844,7 +5023,19 @@ window.__ModuleLoader__.load({
4844
5023
  id: "absolute",
4845
5024
  label: t("copyAbsolute"),
4846
5025
  icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconCopyOutline16, { size: 16 })
4847
- }
5026
+ },
5027
+ ...onPathRenamed !== void 0 && rowMenu !== null && rowMenu.path !== root || onPathRemoved !== void 0 && rowMenu !== null && rowMenu.path !== root ? [{
5028
+ id: "mutation-sep",
5029
+ type: "separator"
5030
+ }] : [],
5031
+ ...onPathRenamed !== void 0 && rowMenu !== null && rowMenu.path !== root ? [{
5032
+ id: "rename-row",
5033
+ label: t("rename")
5034
+ }] : [],
5035
+ ...onPathRemoved !== void 0 && rowMenu !== null && rowMenu.path !== root ? [{
5036
+ id: "delete-row",
5037
+ label: t("delete")
5038
+ }] : []
4848
5039
  ],
4849
5040
  onSelect: (id) => {
4850
5041
  const target = rowMenu;
@@ -4871,12 +5062,54 @@ window.__ModuleLoader__.load({
4871
5062
  fileInputRef.current?.click();
4872
5063
  return;
4873
5064
  }
5065
+ if (id === "rename-row") {
5066
+ setMutationError(null);
5067
+ setRenaming({
5068
+ path: target.path,
5069
+ name: baseName$1(target.path)
5070
+ });
5071
+ return;
5072
+ }
5073
+ if (id === "delete-row") {
5074
+ setDeleting({
5075
+ path: target.path,
5076
+ isDir: target.isDir
5077
+ });
5078
+ return;
5079
+ }
4874
5080
  copyPath(id === "relative" ? relativeTo(cwd ?? "", target.path) : target.path, target.path);
4875
5081
  },
4876
5082
  portal: true,
4877
5083
  align: "start",
4878
5084
  getAnchorRect: () => rowMenu === null ? null : new DOMRect(rowMenu.x, rowMenu.y, 0, 0),
4879
5085
  anchor: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {})
5086
+ }),
5087
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
5088
+ open: deleting !== null,
5089
+ onClose: () => {
5090
+ setDeleting(null);
5091
+ },
5092
+ title: deleting === null ? "" : t("deleteTitle", { name: baseName$1(deleting.path) }),
5093
+ closeLabel: t("cancel"),
5094
+ footer: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
5095
+ variant: "outline",
5096
+ onClick: () => {
5097
+ setDeleting(null);
5098
+ },
5099
+ children: t("cancel")
5100
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
5101
+ variant: "primary",
5102
+ onClick: () => {
5103
+ const target = deleting;
5104
+ if (target === null) return;
5105
+ commitDelete(target);
5106
+ },
5107
+ children: t("delete")
5108
+ })] }),
5109
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
5110
+ className: sidebar_module_css_default.explorerError,
5111
+ children: deleting?.isDir === true ? t("deleteDescDir") : t("deleteDescFile")
5112
+ })
4880
5113
  })
4881
5114
  ]
4882
5115
  });
@@ -5275,7 +5508,7 @@ window.__ModuleLoader__.load({
5275
5508
  * intake.
5276
5509
  */
5277
5510
  function TreePanel(props) {
5278
- const { sessionId, cwd, expanded, revealed, onToggle, onOpenFile, onOpenFileNewTab, onOpenFileSide, openWithTargets, openWithPinned, openWithSsh, onOpenWith, onToggleOpenWithPin, onReferenceFile, full } = props;
5511
+ const { sessionId, cwd, expanded, revealed, onToggle, onOpenFile, onOpenFileNewTab, onOpenFileSide, openWithTargets, openWithPinned, openWithSsh, onOpenWith, onToggleOpenWithPin, onReferenceFile, onPathRenamed, onPathRemoved, full } = props;
5279
5512
  const [query, setQuery] = (0, react.useState)("");
5280
5513
  const [results, setResults] = (0, react.useState)(null);
5281
5514
  const [error, setError] = (0, react.useState)(null);
@@ -5475,6 +5708,8 @@ window.__ModuleLoader__.load({
5475
5708
  onOpenWith,
5476
5709
  onToggleOpenWithPin,
5477
5710
  onReferenceFile,
5711
+ onPathRenamed,
5712
+ onPathRemoved,
5478
5713
  refreshTick,
5479
5714
  onUploadRequest: startUpload,
5480
5715
  busy
@@ -5669,7 +5904,7 @@ window.__ModuleLoader__.load({
5669
5904
  return Math.min(TREE_WIDTH_MAX, Math.max(TREE_WIDTH_MIN, Math.round(value)));
5670
5905
  }
5671
5906
  function EditorHost(props) {
5672
- const { ctx, store, scope, tab, expanded, revealed, onToggleDir, onReferenceFile } = props;
5907
+ const { ctx, store, scope, tab, expanded, revealed, onToggleDir, onReferenceFile, onPathRenamed, onPathRemoved } = props;
5673
5908
  const path = tab.path ?? "";
5674
5909
  const isDir = metaOf(tab).dir === true;
5675
5910
  const [load, setLoad] = (0, react.useState)({ status: "loading" });
@@ -5862,7 +6097,9 @@ window.__ModuleLoader__.load({
5862
6097
  openWithSsh: openWithSshActive(openWithConfig),
5863
6098
  onOpenWith: openWith,
5864
6099
  onToggleOpenWithPin: toggleOpenWithPin,
5865
- onReferenceFile
6100
+ onReferenceFile,
6101
+ onPathRenamed,
6102
+ onPathRemoved
5866
6103
  })
5867
6104
  });
5868
6105
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
@@ -5970,7 +6207,9 @@ window.__ModuleLoader__.load({
5970
6207
  openWithSsh: openWithSshActive(openWithConfig),
5971
6208
  onOpenWith: openWith,
5972
6209
  onToggleOpenWithPin: toggleOpenWithPin,
5973
- onReferenceFile
6210
+ onReferenceFile,
6211
+ onPathRenamed,
6212
+ onPathRemoved
5974
6213
  })]
5975
6214
  })]
5976
6215
  })]
@@ -6029,75 +6268,75 @@ window.__ModuleLoader__.load({
6029
6268
  document.head.appendChild(tag);
6030
6269
  }
6031
6270
  var SideCardSection_module_css_default = {
6032
- "cardIconChip": "AC9POW_cardIconChip",
6033
- "rowText": "AC9POW_rowText",
6271
+ "pluginGroup": "AC9POW_pluginGroup",
6272
+ "typedInputNumber": "AC9POW_typedInputNumber",
6273
+ "card": "AC9POW_card",
6274
+ "rowGear": "AC9POW_rowGear",
6275
+ "cardTop": "AC9POW_cardTop",
6276
+ "popupDialog": "AC9POW_popupDialog",
6277
+ "pluginGroupHeading": "AC9POW_pluginGroupHeading",
6034
6278
  "pluginEntry": "AC9POW_pluginEntry",
6279
+ "selectAnchorText": "AC9POW_selectAnchorText",
6280
+ "pluginName": "AC9POW_pluginName",
6281
+ "pluginCopyBtn": "AC9POW_pluginCopyBtn",
6282
+ "intro": "AC9POW_intro",
6283
+ "selectAnchorIcon": "AC9POW_selectAnchorIcon",
6284
+ "pluginEmpty": "AC9POW_pluginEmpty",
6285
+ "pluginEntryActions": "AC9POW_pluginEntryActions",
6286
+ "cardSwitchTrack": "AC9POW_cardSwitchTrack",
6287
+ "openWithHint": "AC9POW_openWithHint",
6288
+ "groupHeading": "AC9POW_groupHeading",
6289
+ "addCard": "AC9POW_addCard",
6290
+ "openWithFamily": "AC9POW_openWithFamily",
6291
+ "openWithEditorTemplate": "AC9POW_openWithEditorTemplate",
6292
+ "suffix": "AC9POW_suffix",
6293
+ "done": "AC9POW_done",
6294
+ "cardSwitch": "AC9POW_cardSwitch",
6295
+ "pluginEntries": "AC9POW_pluginEntries",
6296
+ "cssTextArea": "AC9POW_cssTextArea",
6297
+ "cardIconChip": "AC9POW_cardIconChip",
6298
+ "error": "AC9POW_error",
6299
+ "pluginTopicBtn": "AC9POW_pluginTopicBtn",
6035
6300
  "count": "AC9POW_count",
6036
- "selectOptionIcon": "AC9POW_selectOptionIcon",
6037
- "row": "AC9POW_row",
6301
+ "typedInput": "AC9POW_typedInput",
6038
6302
  "cardOn": "AC9POW_cardOn",
6039
- "pluginJumpBtn": "AC9POW_pluginJumpBtn",
6040
- "switch": "AC9POW_switch",
6041
- "rowGear": "AC9POW_rowGear",
6042
- "groupHeading": "AC9POW_groupHeading",
6303
+ "openWithRemove": "AC9POW_openWithRemove",
6304
+ "rowText": "AC9POW_rowText",
6305
+ "switchTrack": "AC9POW_switchTrack",
6306
+ "cardSwitchThumb": "AC9POW_cardSwitchThumb",
6307
+ "selectOptionText": "AC9POW_selectOptionText",
6308
+ "cardTitle": "AC9POW_cardTitle",
6309
+ "openWithEditorInput": "AC9POW_openWithEditorInput",
6310
+ "popupRow": "AC9POW_popupRow",
6043
6311
  "selectOption": "AC9POW_selectOption",
6044
- "pluginList": "AC9POW_pluginList",
6045
- "pluginEntryHead": "AC9POW_pluginEntryHead",
6046
- "pluginGroup": "AC9POW_pluginGroup",
6312
+ "pluginJumpBtn": "AC9POW_pluginJumpBtn",
6313
+ "title": "AC9POW_title",
6314
+ "versionBadgeTag": "AC9POW_versionBadgeTag",
6315
+ "row": "AC9POW_row",
6047
6316
  "pluginDesc": "AC9POW_pluginDesc",
6317
+ "cardDesc": "AC9POW_cardDesc",
6318
+ "pluginEntryHead": "AC9POW_pluginEntryHead",
6319
+ "group": "AC9POW_group",
6320
+ "selectOptionIcon": "AC9POW_selectOptionIcon",
6048
6321
  "pluginSearch": "AC9POW_pluginSearch",
6049
- "openWithRemove": "AC9POW_openWithRemove",
6050
- "pluginTopicBtn": "AC9POW_pluginTopicBtn",
6322
+ "section": "AC9POW_section",
6323
+ "switchThumb": "AC9POW_switchThumb",
6324
+ "switchInput": "AC9POW_switchInput",
6325
+ "grid": "AC9POW_grid",
6326
+ "cardMain": "AC9POW_cardMain",
6051
6327
  "pluginModal": "AC9POW_pluginModal",
6052
- "cardTop": "AC9POW_cardTop",
6053
- "intro": "AC9POW_intro",
6054
- "cardTitle": "AC9POW_cardTitle",
6055
- "selectAnchorText": "AC9POW_selectAnchorText",
6056
- "cssTextArea": "AC9POW_cssTextArea",
6057
- "versionBadgeName": "AC9POW_versionBadgeName",
6058
- "cardSwitchThumb": "AC9POW_cardSwitchThumb",
6059
- "desc": "AC9POW_desc",
6060
- "pluginGroupHeading": "AC9POW_pluginGroupHeading",
6061
6328
  "cardSettings": "AC9POW_cardSettings",
6062
- "cardDesc": "AC9POW_cardDesc",
6063
- "title": "AC9POW_title",
6064
- "grid": "AC9POW_grid",
6065
- "switchTrack": "AC9POW_switchTrack",
6329
+ "pluginInstall": "AC9POW_pluginInstall",
6330
+ "versionBadgeName": "AC9POW_versionBadgeName",
6066
6331
  "openWithEditorRow": "AC9POW_openWithEditorRow",
6067
- "group": "AC9POW_group",
6068
- "pluginName": "AC9POW_pluginName",
6069
- "versionBadgeTag": "AC9POW_versionBadgeTag",
6070
- "openWithEditorInput": "AC9POW_openWithEditorInput",
6071
- "section": "AC9POW_section",
6332
+ "popupRows": "AC9POW_popupRows",
6072
6333
  "control": "AC9POW_control",
6334
+ "pluginList": "AC9POW_pluginList",
6335
+ "desc": "AC9POW_desc",
6336
+ "switch": "AC9POW_switch",
6073
6337
  "percentInput": "AC9POW_percentInput",
6074
- "selectAnchorIcon": "AC9POW_selectAnchorIcon",
6075
- "popupDialog": "AC9POW_popupDialog",
6076
- "pluginEntries": "AC9POW_pluginEntries",
6077
- "cardMain": "AC9POW_cardMain",
6078
6338
  "selectAnchor": "AC9POW_selectAnchor",
6079
- "typedInput": "AC9POW_typedInput",
6080
- "card": "AC9POW_card",
6081
- "done": "AC9POW_done",
6082
- "suffix": "AC9POW_suffix",
6083
- "openWithHint": "AC9POW_openWithHint",
6084
- "openWithEditorTemplate": "AC9POW_openWithEditorTemplate",
6085
- "cardSwitch": "AC9POW_cardSwitch",
6086
- "versionBadge": "AC9POW_versionBadge",
6087
- "pluginEntryActions": "AC9POW_pluginEntryActions",
6088
- "pluginCopyBtn": "AC9POW_pluginCopyBtn",
6089
- "typedInputNumber": "AC9POW_typedInputNumber",
6090
- "popupRows": "AC9POW_popupRows",
6091
- "switchThumb": "AC9POW_switchThumb",
6092
- "error": "AC9POW_error",
6093
- "cardSwitchTrack": "AC9POW_cardSwitchTrack",
6094
- "addCard": "AC9POW_addCard",
6095
- "pluginEmpty": "AC9POW_pluginEmpty",
6096
- "openWithFamily": "AC9POW_openWithFamily",
6097
- "selectOptionText": "AC9POW_selectOptionText",
6098
- "pluginInstall": "AC9POW_pluginInstall",
6099
- "switchInput": "AC9POW_switchInput",
6100
- "popupRow": "AC9POW_popupRow"
6339
+ "versionBadge": "AC9POW_versionBadge"
6101
6340
  };
6102
6341
  //#endregion
6103
6342
  //#region src/client/open-with-settings.tsx
@@ -7216,6 +7455,56 @@ window.__ModuleLoader__.load({
7216
7455
  if (path.startsWith("a/") || path.startsWith("b/")) return path.slice(2);
7217
7456
  return path;
7218
7457
  }
7458
+ /** How many old-side rows a hunk carries (rows without an old number are
7459
+ * pure additions and do not advance the old side). */
7460
+ function hunkOldEnd(hunk) {
7461
+ return hunk.oldStart + hunk.lines.filter((line) => line.oldNum !== null).length - 1;
7462
+ }
7463
+ /** How many new-side rows a hunk carries. */
7464
+ function hunkNewEnd(hunk) {
7465
+ return hunk.newStart + hunk.lines.filter((line) => line.newNum !== null).length - 1;
7466
+ }
7467
+ /**
7468
+ * Materialize a git gap fold's hidden rows from the two sides' full file
7469
+ * contents, by the fold's known line ranges: the old side drives context
7470
+ * rows (each mapped onto the new side through the fold's offset — a gap is
7471
+ * an unchanged run, so the sides align), and new-side lines the old range
7472
+ * never reaches become pure additions. Line numbers clip to the actual
7473
+ * content (a no-newline file's ranges can overrun by one); `\r` endings
7474
+ * survive verbatim, like git's own context lines.
7475
+ */
7476
+ function foldRowsFromContents(fold, oldContent, newContent) {
7477
+ const oldLines = oldContent.length === 0 ? [] : oldContent.split("\n");
7478
+ const newLines = newContent.length === 0 ? [] : newContent.split("\n");
7479
+ const offset = fold.newStart - fold.oldStart;
7480
+ const rows = [];
7481
+ const oldFrom = Math.max(fold.oldStart, 1);
7482
+ const oldTo = Math.min(fold.oldEnd, oldLines.length);
7483
+ for (let oldLine = oldFrom; oldLine <= oldTo; oldLine += 1) {
7484
+ const text = oldLines[oldLine - 1] ?? "";
7485
+ const newLine = oldLine + offset;
7486
+ rows.push(newLine >= fold.newStart && newLine <= fold.newEnd && newLine <= newLines.length ? {
7487
+ kind: "ctx",
7488
+ text,
7489
+ oldNum: oldLine,
7490
+ newNum: newLine
7491
+ } : {
7492
+ kind: "ctx",
7493
+ text,
7494
+ oldNum: oldLine,
7495
+ newNum: null
7496
+ });
7497
+ }
7498
+ const newFrom = Math.max(Math.max(fold.newStart, 1), oldTo + offset + 1);
7499
+ const newTo = Math.min(fold.newEnd, newLines.length);
7500
+ for (let newLine = newFrom; newLine <= newTo; newLine += 1) rows.push({
7501
+ kind: "add",
7502
+ text: newLines[newLine - 1] ?? "",
7503
+ oldNum: null,
7504
+ newNum: newLine
7505
+ });
7506
+ return rows;
7507
+ }
7219
7508
  /** The file header badge: added / deleted / renamed / binary ('' for a plain edit). */
7220
7509
  function fileTag(file) {
7221
7510
  if (file.binary) return t("diffBinary");
@@ -7239,7 +7528,7 @@ window.__ModuleLoader__.load({
7239
7528
  });
7240
7529
  return expanded;
7241
7530
  }
7242
- function DiffView({ diff, untrackedPath, untrackedContent }) {
7531
+ function DiffView({ diff, untrackedPath, untrackedContent, foldSource }) {
7243
7532
  const parsed = (0, react.useMemo)(() => {
7244
7533
  if (untrackedPath !== void 0) return { files: [untrackedFile(untrackedPath, untrackedContent ?? "")] };
7245
7534
  return parseUnifiedDiff(diff);
@@ -7250,9 +7539,43 @@ window.__ModuleLoader__.load({
7250
7539
  ]);
7251
7540
  const [expanded, setExpanded] = (0, react.useState)(false);
7252
7541
  const [expandedFiles, setExpandedFiles] = (0, react.useState)(() => defaultExpandedFiles(parsed.files));
7542
+ const [foldRows, setFoldRows] = (0, react.useState)(/* @__PURE__ */ new Map());
7543
+ const foldInflight = (0, react.useRef)(/* @__PURE__ */ new Map());
7253
7544
  (0, react.useEffect)(() => {
7254
7545
  setExpandedFiles(defaultExpandedFiles(parsed.files));
7255
7546
  }, [parsed]);
7547
+ (0, react.useEffect)(() => {
7548
+ setFoldRows(/* @__PURE__ */ new Map());
7549
+ foldInflight.current.clear();
7550
+ }, [parsed]);
7551
+ /** Fetch both sides' contents and materialize one fold's hidden rows. */
7552
+ const resolveFold = (key, file, fold) => {
7553
+ if (foldSource === void 0 || foldInflight.current.has(key)) return;
7554
+ setFoldRows((current) => new Map(current).set(key, { status: "loading" }));
7555
+ const task = (async () => {
7556
+ try {
7557
+ const path = displayPath(file.newPath === "/dev/null" ? file.oldPath : file.newPath);
7558
+ const contents = await api.gitFoldContents(foldSource.scope, {
7559
+ path,
7560
+ ...foldSource.ref.kind === "commit" ? { hash: foldSource.ref.hashFull } : { staged: foldSource.ref.staged === true }
7561
+ }, foldSource.ref.kind === "worktree" ? foldSource.ref.worktree : void 0);
7562
+ if (contents.old === null || contents.new === null) {
7563
+ setFoldRows((current) => new Map(current).set(key, { status: "failed" }));
7564
+ return;
7565
+ }
7566
+ const rows = foldRowsFromContents(fold, contents.old, contents.new);
7567
+ setFoldRows((current) => new Map(current).set(key, {
7568
+ status: "ready",
7569
+ rows
7570
+ }));
7571
+ } catch {
7572
+ setFoldRows((current) => new Map(current).set(key, { status: "failed" }));
7573
+ } finally {
7574
+ foldInflight.current.delete(key);
7575
+ }
7576
+ })();
7577
+ foldInflight.current.set(key, task);
7578
+ };
7256
7579
  const rows = (0, react.useMemo)(() => {
7257
7580
  const out = [];
7258
7581
  parsed.files.forEach((file, fileIndex) => {
@@ -7263,7 +7586,30 @@ window.__ModuleLoader__.load({
7263
7586
  type: "path"
7264
7587
  });
7265
7588
  if (file.binary || !expandedFiles.has(fileIndex)) return;
7589
+ let prevOldEnd = 0;
7590
+ let prevNewEnd = 0;
7266
7591
  file.hunks.forEach((hunk, hunkIndex) => {
7592
+ const oldGap = hunk.oldStart - prevOldEnd - 1;
7593
+ const newGap = hunk.newStart - prevNewEnd - 1;
7594
+ if (foldSource !== void 0 && (oldGap > 0 || newGap > 0)) {
7595
+ const key = `f${fileIndex}fold${hunkIndex}`;
7596
+ out.push({
7597
+ key,
7598
+ file,
7599
+ fileIndex,
7600
+ type: "fold",
7601
+ fold: {
7602
+ oldStart: prevOldEnd + 1,
7603
+ oldEnd: Math.max(hunk.oldStart - 1, prevOldEnd),
7604
+ newStart: prevNewEnd + 1,
7605
+ newEnd: Math.max(hunk.newStart - 1, prevNewEnd)
7606
+ },
7607
+ count: Math.max(oldGap, newGap, 0),
7608
+ state: foldRows.get(key)
7609
+ });
7610
+ }
7611
+ prevOldEnd = hunkOldEnd(hunk);
7612
+ prevNewEnd = hunkNewEnd(hunk);
7267
7613
  out.push({
7268
7614
  key: `f${fileIndex}h${hunkIndex}`,
7269
7615
  file,
@@ -7284,7 +7630,12 @@ window.__ModuleLoader__.load({
7284
7630
  });
7285
7631
  });
7286
7632
  return out;
7287
- }, [parsed, expandedFiles]);
7633
+ }, [
7634
+ parsed,
7635
+ expandedFiles,
7636
+ foldRows,
7637
+ foldSource
7638
+ ]);
7288
7639
  const hidden = rows.length - MAX_DIFF_ROWS;
7289
7640
  const capped = hidden > 0 && !expanded;
7290
7641
  const headLines = Math.ceil(MAX_DIFF_ROWS / 2);
@@ -7292,6 +7643,29 @@ window.__ModuleLoader__.load({
7292
7643
  const head = capped ? rows.slice(0, headLines) : rows;
7293
7644
  const tail = capped ? rows.slice(rows.length - tailLines) : [];
7294
7645
  if (rows.length === 0) return null;
7646
+ const renderLine = (line, key) => {
7647
+ const lineClass = line.kind === "del" ? sidebar_module_css_default.gitDiffDel : line.kind === "add" ? sidebar_module_css_default.gitDiffAdd : line.kind === "meta" ? sidebar_module_css_default.gitDiffMeta : sidebar_module_css_default.gitDiffCtx;
7648
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
7649
+ className: clsx(sidebar_module_css_default.gitDiffLine, lineClass),
7650
+ children: line.kind === "meta" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7651
+ className: sidebar_module_css_default.gitDiffMetaText,
7652
+ children: line.text
7653
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
7654
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7655
+ className: sidebar_module_css_default.gitDiffNum,
7656
+ children: line.oldNum ?? ""
7657
+ }),
7658
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7659
+ className: sidebar_module_css_default.gitDiffNum,
7660
+ children: line.newNum ?? ""
7661
+ }),
7662
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7663
+ className: sidebar_module_css_default.gitDiffCode,
7664
+ children: line.text
7665
+ })
7666
+ ] })
7667
+ }, key);
7668
+ };
7295
7669
  const renderRow = (row) => {
7296
7670
  if (row.type === "path") {
7297
7671
  const tag = fileTag(row.file);
@@ -7356,28 +7730,21 @@ window.__ModuleLoader__.load({
7356
7730
  })]
7357
7731
  }, row.key);
7358
7732
  }
7359
- const line = row.line;
7360
- const lineClass = line.kind === "del" ? sidebar_module_css_default.gitDiffDel : line.kind === "add" ? sidebar_module_css_default.gitDiffAdd : line.kind === "meta" ? sidebar_module_css_default.gitDiffMeta : sidebar_module_css_default.gitDiffCtx;
7361
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
7362
- className: clsx(sidebar_module_css_default.gitDiffLine, lineClass),
7363
- children: line.kind === "meta" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7364
- className: sidebar_module_css_default.gitDiffMetaText,
7365
- children: line.text
7366
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
7367
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7368
- className: sidebar_module_css_default.gitDiffNum,
7369
- children: line.oldNum ?? ""
7370
- }),
7371
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7372
- className: sidebar_module_css_default.gitDiffNum,
7373
- children: line.newNum ?? ""
7374
- }),
7375
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7376
- className: sidebar_module_css_default.gitDiffCode,
7377
- children: line.text
7378
- })
7379
- ] })
7380
- }, row.key);
7733
+ if (row.type === "fold") {
7734
+ if (row.state?.status === "ready") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react.Fragment, { children: row.state.rows.map((line, index) => renderLine(line, `${row.key}r${index}`)) }, row.key);
7735
+ const loading = row.state?.status === "loading";
7736
+ const failed = row.state?.status === "failed";
7737
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
7738
+ type: "button",
7739
+ className: clsx(sidebar_module_css_default.gitFoldRow, failed && sidebar_module_css_default.gitFoldRowFailed),
7740
+ disabled: loading || failed,
7741
+ onClick: () => {
7742
+ resolveFold(row.key, row.file, row.fold);
7743
+ },
7744
+ children: failed ? t("gitFoldFailed") : loading ? t("gitFoldLoading") : t("gitFoldExpand", { count: row.count })
7745
+ }, row.key);
7746
+ }
7747
+ return renderLine(row.line, row.key);
7381
7748
  };
7382
7749
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
7383
7750
  className: sidebar_module_css_default.gitDiff,
@@ -7501,7 +7868,18 @@ window.__ModuleLoader__.load({
7501
7868
  diff: "",
7502
7869
  untrackedPath: diff.kind === "worktree" ? diff.path : "",
7503
7870
  untrackedContent: data.untracked
7504
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DiffView, { diff: data.diff }), data.diff === "" && data.untracked === void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
7871
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DiffView, {
7872
+ diff: data.diff,
7873
+ foldSource: {
7874
+ scope: {
7875
+ sessionId,
7876
+ cwd,
7877
+ ...diff.repoRoot !== void 0 ? { repoRoot: diff.repoRoot } : {}
7878
+ },
7879
+ ref: diff,
7880
+ cwd
7881
+ }
7882
+ }), data.diff === "" && data.untracked === void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
7505
7883
  className: sidebar_module_css_default.gitEmpty,
7506
7884
  children: t("diffEmpty")
7507
7885
  })] })
@@ -7815,58 +8193,58 @@ Mode: this is a continuable side conversation. Your answers stay in this side th
7815
8193
  document.head.appendChild(tag);
7816
8194
  }
7817
8195
  var SubagentView_module_css_default = {
7818
- "jobsPaneStatus": "F2T6aa_jobsPaneStatus",
7819
- "subagentContent": "F2T6aa_subagentContent",
7820
- "subagentRowActive": "F2T6aa_subagentRowActive",
7821
- "jobsRowSettled": "F2T6aa_jobsRowSettled",
7822
- "jobsPanePre": "F2T6aa_jobsPanePre",
7823
- "jobsCount": "F2T6aa_jobsCount",
8196
+ "jobsTitle": "F2T6aa_jobsTitle",
8197
+ "subagentSecondary": "F2T6aa_subagentSecondary",
8198
+ "subagentLiveText": "F2T6aa_subagentLiveText",
8199
+ "subagentNode": "F2T6aa_subagentNode",
8200
+ "jobsRowSelected": "F2T6aa_jobsRowSelected",
7824
8201
  "jobsDot": "F2T6aa_jobsDot",
7825
- "jobsPaneDot": "F2T6aa_jobsPaneDot",
8202
+ "subagentCount": "F2T6aa_subagentCount",
7826
8203
  "subagentRefresh": "F2T6aa_subagentRefresh",
8204
+ "subagentError": "F2T6aa_subagentError",
8205
+ "jobsKind": "F2T6aa_jobsKind",
7827
8206
  "subagentTitle": "F2T6aa_subagentTitle",
8207
+ "jobsRowMain": "F2T6aa_jobsRowMain",
8208
+ "subagentChildren": "F2T6aa_subagentChildren",
8209
+ "jobsKillError": "F2T6aa_jobsKillError",
7828
8210
  "historyToggle": "F2T6aa_historyToggle",
7829
- "subagentDot": "F2T6aa_subagentDot",
7830
- "subagentBody": "F2T6aa_subagentBody",
7831
- "subagentRowDisabled": "F2T6aa_subagentRowDisabled",
7832
- "subagentRowLoading": "F2T6aa_subagentRowLoading",
7833
- "subagentLiveTool": "F2T6aa_subagentLiveTool",
7834
- "jobsRow": "F2T6aa_jobsRow",
8211
+ "jobsPane": "F2T6aa_jobsPane",
8212
+ "jobsPaneLabel": "F2T6aa_jobsPaneLabel",
8213
+ "jobsList": "F2T6aa_jobsList",
8214
+ "jobsPaneHint": "F2T6aa_jobsPaneHint",
8215
+ "subagentRowActive": "F2T6aa_subagentRowActive",
8216
+ "subagentHeader": "F2T6aa_subagentHeader",
8217
+ "subagentEmptyHint": "F2T6aa_subagentEmptyHint",
8218
+ "jobsLabel": "F2T6aa_jobsLabel",
7835
8219
  "jobsKill": "F2T6aa_jobsKill",
7836
- "jobsKillArmed": "F2T6aa_jobsKillArmed",
8220
+ "subagent": "F2T6aa_subagent",
8221
+ "jobsRow": "F2T6aa_jobsRow",
8222
+ "subagentDot": "F2T6aa_subagentDot",
8223
+ "jobsPanePre": "F2T6aa_jobsPanePre",
7837
8224
  "jobsPaneClose": "F2T6aa_jobsPaneClose",
7838
- "jobsKillError": "F2T6aa_jobsKillError",
7839
- "jobs": "F2T6aa_jobs",
7840
- "jobsRowSelected": "F2T6aa_jobsRowSelected",
7841
- "subagentEmptyHint": "F2T6aa_subagentEmptyHint",
7842
- "subagentError": "F2T6aa_subagentError",
7843
- "jobsContent": "F2T6aa_jobsContent",
8225
+ "jobsRowSettled": "F2T6aa_jobsRowSettled",
7844
8226
  "subagentLabel": "F2T6aa_subagentLabel",
7845
- "subagentEmpty": "F2T6aa_subagentEmpty",
7846
- "jobsKind": "F2T6aa_jobsKind",
7847
- "jobsPaneHint": "F2T6aa_jobsPaneHint",
7848
- "subagentChildren": "F2T6aa_subagentChildren",
7849
- "jobsPane": "F2T6aa_jobsPane",
8227
+ "jobsHeader": "F2T6aa_jobsHeader",
8228
+ "jobsCount": "F2T6aa_jobsCount",
8229
+ "jobsKillArmed": "F2T6aa_jobsKillArmed",
7850
8230
  "jobsPaneError": "F2T6aa_jobsPaneError",
7851
- "subagentLive": "F2T6aa_subagentLive",
7852
- "jobsTitle": "F2T6aa_jobsTitle",
7853
- "jobsLabel": "F2T6aa_jobsLabel",
7854
- "jobsRowMain": "F2T6aa_jobsRowMain",
7855
- "subagentLiveText": "F2T6aa_subagentLiveText",
7856
- "subagentNode": "F2T6aa_subagentNode",
7857
- "jobsPaneLabel": "F2T6aa_jobsPaneLabel",
7858
- "subagentCount": "F2T6aa_subagentCount",
8231
+ "subagentBody": "F2T6aa_subagentBody",
8232
+ "jobsLabelLine": "F2T6aa_jobsLabelLine",
8233
+ "jobsPaneDot": "F2T6aa_jobsPaneDot",
8234
+ "subagentRowLoading": "F2T6aa_subagentRowLoading",
7859
8235
  "subagentLiveArgs": "F2T6aa_subagentLiveArgs",
7860
- "jobsSecondary": "F2T6aa_jobsSecondary",
7861
- "jobsHeader": "F2T6aa_jobsHeader",
7862
- "subagentHeader": "F2T6aa_subagentHeader",
7863
- "subagentSecondary": "F2T6aa_subagentSecondary",
8236
+ "subagentLive": "F2T6aa_subagentLive",
7864
8237
  "subagentErrorRetry": "F2T6aa_subagentErrorRetry",
7865
- "subagent": "F2T6aa_subagent",
7866
8238
  "subagentRow": "F2T6aa_subagentRow",
7867
- "jobsList": "F2T6aa_jobsList",
7868
- "jobsLabelLine": "F2T6aa_jobsLabelLine",
7869
- "jobsPaneHeader": "F2T6aa_jobsPaneHeader"
8239
+ "jobs": "F2T6aa_jobs",
8240
+ "jobsPaneHeader": "F2T6aa_jobsPaneHeader",
8241
+ "subagentLiveTool": "F2T6aa_subagentLiveTool",
8242
+ "subagentRowDisabled": "F2T6aa_subagentRowDisabled",
8243
+ "jobsPaneStatus": "F2T6aa_jobsPaneStatus",
8244
+ "jobsSecondary": "F2T6aa_jobsSecondary",
8245
+ "subagentContent": "F2T6aa_subagentContent",
8246
+ "jobsContent": "F2T6aa_jobsContent",
8247
+ "subagentEmpty": "F2T6aa_subagentEmpty"
7870
8248
  };
7871
8249
  //#endregion
7872
8250
  //#region src/client/SubagentView.tsx
@@ -8973,44 +9351,44 @@ Mode: this is a continuable side conversation. Your answers stay in this side th
8973
9351
  document.head.appendChild(tag);
8974
9352
  }
8975
9353
  var SideChatView_module_css_default = {
8976
- "sidechatHeroTitle": "_64UoUa_sidechatHeroTitle",
8977
- "sidechatComposerInput": "_64UoUa_sidechatComposerInput",
8978
- "sidechatScroll": "_64UoUa_sidechatScroll",
8979
- "sidechatFadeIn": "_64UoUa_sidechatFadeIn",
8980
- "sidechatRowBody": "_64UoUa_sidechatRowBody",
8981
- "sidechatDetailHeader": "_64UoUa_sidechatDetailHeader",
8982
- "sidechatIconBtn": "_64UoUa_sidechatIconBtn",
8983
- "sidechatHero": "_64UoUa_sidechatHero",
8984
- "sidechatRowProse": "_64UoUa_sidechatRowProse",
8985
9354
  "sidechatPrimaryBtn": "_64UoUa_sidechatPrimaryBtn",
8986
- "sidechatAssistant": "_64UoUa_sidechatAssistant",
8987
- "sidechatRowLine": "_64UoUa_sidechatRowLine",
8988
- "sidechatStatusText": "_64UoUa_sidechatStatusText",
9355
+ "sidechatHint": "_64UoUa_sidechatHint",
9356
+ "sidechatComposerBar": "_64UoUa_sidechatComposerBar",
9357
+ "sidechatHeaderSpacer": "_64UoUa_sidechatHeaderSpacer",
8989
9358
  "sidechatBtnIn": "_64UoUa_sidechatBtnIn",
8990
- "sidechatRowStatic": "_64UoUa_sidechatRowStatic",
9359
+ "sidechatIconBtn": "_64UoUa_sidechatIconBtn",
9360
+ "sidechatScroll": "_64UoUa_sidechatScroll",
8991
9361
  "sidechatRowSummary": "_64UoUa_sidechatRowSummary",
9362
+ "sidechatError": "_64UoUa_sidechatError",
9363
+ "sidechatFadeIn": "_64UoUa_sidechatFadeIn",
9364
+ "sidechatAssistant": "_64UoUa_sidechatAssistant",
8992
9365
  "sidechatRowCode": "_64UoUa_sidechatRowCode",
8993
- "sidechatStatus": "_64UoUa_sidechatStatus",
8994
- "sidechatRow": "_64UoUa_sidechatRow",
8995
- "sidechatComposerBar": "_64UoUa_sidechatComposerBar",
8996
- "sidechatHeaderSpacer": "_64UoUa_sidechatHeaderSpacer",
8997
9366
  "sidechatSendBtn": "_64UoUa_sidechatSendBtn",
8998
- "sidechatError": "_64UoUa_sidechatError",
8999
- "sidechatRowMeta": "_64UoUa_sidechatRowMeta",
9000
- "sidechatRowFailed": "_64UoUa_sidechatRowFailed",
9001
- "sidechatAgentBadge": "_64UoUa_sidechatAgentBadge",
9002
- "sidechatHeroDesc": "_64UoUa_sidechatHeroDesc",
9367
+ "sidechatHeroTitle": "_64UoUa_sidechatHeroTitle",
9003
9368
  "sidechatUser": "_64UoUa_sidechatUser",
9004
- "sidechatRowChevron": "_64UoUa_sidechatRowChevron",
9005
- "sidechatSweep": "_64UoUa_sidechatSweep",
9369
+ "sidechatRowProse": "_64UoUa_sidechatRowProse",
9370
+ "sidechatRowStatic": "_64UoUa_sidechatRowStatic",
9371
+ "sidechatStatus": "_64UoUa_sidechatStatus",
9372
+ "sidechatRowMeta": "_64UoUa_sidechatRowMeta",
9006
9373
  "sidechat": "_64UoUa_sidechat",
9374
+ "sidechatRowChevron": "_64UoUa_sidechatRowChevron",
9007
9375
  "sidechatRowLabel": "_64UoUa_sidechatRowLabel",
9008
- "sidechatRowMono": "_64UoUa_sidechatRowMono",
9009
- "sidechatRowIn": "_64UoUa_sidechatRowIn",
9010
9376
  "sidechatComposerMeta": "_64UoUa_sidechatComposerMeta",
9011
- "sidechatShimmerText": "_64UoUa_sidechatShimmerText",
9377
+ "sidechatSweep": "_64UoUa_sidechatSweep",
9378
+ "sidechatRowIn": "_64UoUa_sidechatRowIn",
9379
+ "sidechatRowFailed": "_64UoUa_sidechatRowFailed",
9380
+ "sidechatComposerInput": "_64UoUa_sidechatComposerInput",
9381
+ "sidechatRowMono": "_64UoUa_sidechatRowMono",
9382
+ "sidechatHeroDesc": "_64UoUa_sidechatHeroDesc",
9383
+ "sidechatStatusText": "_64UoUa_sidechatStatusText",
9384
+ "sidechatAgentBadge": "_64UoUa_sidechatAgentBadge",
9385
+ "sidechatDetailHeader": "_64UoUa_sidechatDetailHeader",
9386
+ "sidechatRow": "_64UoUa_sidechatRow",
9387
+ "sidechatRowLine": "_64UoUa_sidechatRowLine",
9388
+ "sidechatRowBody": "_64UoUa_sidechatRowBody",
9012
9389
  "sidechatHeaderDot": "_64UoUa_sidechatHeaderDot",
9013
- "sidechatHint": "_64UoUa_sidechatHint",
9390
+ "sidechatShimmerText": "_64UoUa_sidechatShimmerText",
9391
+ "sidechatHero": "_64UoUa_sidechatHero",
9014
9392
  "sidechatComposer": "_64UoUa_sidechatComposer"
9015
9393
  };
9016
9394
  //#endregion
@@ -12062,7 +12440,7 @@ Mode: this is a continuable side conversation. Your answers stay in this side th
12062
12440
  }
12063
12441
  /** Render the content of one tab (dispatched by type). */
12064
12442
  const TabContent = (0, react.memo)(function TabContent(props) {
12065
- const { tab, effectiveTabId, sessionId, cwd, expanded, revealed, onToggleDir, onReferenceFile, ctx, store, visible, onSubagentJump, onOpenDiff } = props;
12443
+ const { tab, effectiveTabId, sessionId, cwd, expanded, revealed, onToggleDir, onReferenceFile, ctx, store, visible, onSubagentJump, onOpenDiff, onPathRenamed, onPathRemoved } = props;
12066
12444
  const scope = {
12067
12445
  sessionId,
12068
12446
  cwd
@@ -12935,6 +13313,39 @@ Mode: this is a continuable side conversation. Your answers stay in this side th
12935
13313
  sessionId,
12936
13314
  cwd
12937
13315
  ]);
13316
+ /** Tree-row rename reconciliation: retarget every open tab whose path was
13317
+ * the renamed file (the editor content survives and later saves land on
13318
+ * the new path; the title follows the new base name). */
13319
+ const onPathRenamed = (0, react.useCallback)((oldPath, newPath) => {
13320
+ const service = ctx.get("betterSidebar");
13321
+ if (service === void 0) return;
13322
+ const snapshot = store.getSnapshot().state;
13323
+ if (snapshot === void 0) return;
13324
+ for (const leaf of allLeaves(snapshot.splits)) for (const tab of leaf.tabs) if (tab.path === oldPath) service.updateTab(tab.id, {
13325
+ path: newPath,
13326
+ title: baseName$1(newPath)
13327
+ });
13328
+ for (const float of snapshot.floats) if (float.tab.path === oldPath) service.updateTab(float.tab.id, {
13329
+ path: newPath,
13330
+ title: baseName$1(newPath)
13331
+ });
13332
+ }, [ctx, store]);
13333
+ /** Tree-row delete reconciliation: close every open tab at or under the
13334
+ * removed path (a stale tab's next save would fail against a missing
13335
+ * path). Floating tabs are as open as docked ones. */
13336
+ const onPathRemoved = (0, react.useCallback)((target) => {
13337
+ const service = ctx.get("betterSidebar");
13338
+ if (service === void 0) return;
13339
+ const snapshot = store.getSnapshot().state;
13340
+ if (snapshot === void 0) return;
13341
+ const tabs = [];
13342
+ for (const leaf of allLeaves(snapshot.splits)) tabs.push(...leaf.tabs);
13343
+ for (const float of snapshot.floats) tabs.push(float.tab);
13344
+ for (const tab of tabs) {
13345
+ const path = tab.path;
13346
+ if (path !== void 0 && (path === target || isWithinWorkspace(target, path))) service.closeTab(tab.id);
13347
+ }
13348
+ }, [ctx, store]);
12938
13349
  if (state === void 0 || sessionId === void 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
12939
13350
  "data-dsh-panel-host": true,
12940
13351
  ...osFileDragShield,
@@ -12986,6 +13397,12 @@ Mode: this is a continuable side conversation. Your answers stay in this side th
12986
13397
  * strip must never break because a plugin's badge computation failed.
12987
13398
  */
12988
13399
  const tabBadgeOf = (tab) => {
13400
+ if (isAgentTabId(tab.id)) {
13401
+ if (state.agentWaits?.[agentUuidOf(tab.id)] !== void 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
13402
+ className: sidebar_module_css_default.tabBadge,
13403
+ children: "⏳"
13404
+ });
13405
+ }
12989
13406
  const descriptor = ctx.get("betterSidebar")?.getTab(tab.type);
12990
13407
  if (descriptor?.badge === void 0) return null;
12991
13408
  let value;
@@ -13026,6 +13443,8 @@ Mode: this is a continuable side conversation. Your answers stay in this side th
13026
13443
  store.reduce((s) => toggleExpanded(s, path));
13027
13444
  },
13028
13445
  onReferenceFile: referenceInChat,
13446
+ onPathRenamed,
13447
+ onPathRemoved,
13029
13448
  ctx,
13030
13449
  store,
13031
13450
  visible: placement === "float" ? true : state.panelOpen && active,