@sparkelf/dsh-knowledge-base 0.1.20 → 0.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/client.js CHANGED
@@ -322,32 +322,32 @@ window.__ModuleLoader__.load({
322
322
  document.head.appendChild(tag);
323
323
  }
324
324
  var KnowledgeSettingsSection_module_css_default = {
325
- "body": "c269jW_body",
326
- "badgeWarn": "c269jW_badgeWarn",
327
- "pairs": "c269jW_pairs",
328
- "statusRow": "c269jW_statusRow",
329
325
  "error": "c269jW_error",
326
+ "badgeOk": "c269jW_badgeOk",
327
+ "stepLabel": "c269jW_stepLabel",
328
+ "statusLabel": "c269jW_statusLabel",
330
329
  "steps": "c269jW_steps",
331
- "detail": "c269jW_detail",
332
- "log": "c269jW_log",
333
- "select": "c269jW_select",
330
+ "pairs": "c269jW_pairs",
331
+ "logBox": "c269jW_logBox",
334
332
  "field": "c269jW_field",
335
- "groupTitle": "c269jW_groupTitle",
336
- "statusLabel": "c269jW_statusLabel",
337
333
  "wizard": "c269jW_wizard",
338
- "logBox": "c269jW_logBox",
339
- "modeRow": "c269jW_modeRow",
334
+ "section": "c269jW_section",
335
+ "statusRow": "c269jW_statusRow",
336
+ "title": "c269jW_title",
340
337
  "step": "c269jW_step",
338
+ "modeRow": "c269jW_modeRow",
341
339
  "modeOption": "c269jW_modeOption",
342
340
  "input": "c269jW_input",
341
+ "groupTitle": "c269jW_groupTitle",
342
+ "detail": "c269jW_detail",
343
+ "log": "c269jW_log",
343
344
  "saveRow": "c269jW_saveRow",
344
- "section": "c269jW_section",
345
+ "select": "c269jW_select",
346
+ "body": "c269jW_body",
345
347
  "pair": "c269jW_pair",
346
- "notice": "c269jW_notice",
347
- "badgeOk": "c269jW_badgeOk",
348
348
  "fieldLabel": "c269jW_fieldLabel",
349
- "title": "c269jW_title",
350
- "stepLabel": "c269jW_stepLabel"
349
+ "badgeWarn": "c269jW_badgeWarn",
350
+ "notice": "c269jW_notice"
351
351
  };
352
352
  //#endregion
353
353
  //#region src/client/VectorSettingsGroup.tsx
@@ -1894,46 +1894,46 @@ window.__ModuleLoader__.load({
1894
1894
  document.head.appendChild(tag);
1895
1895
  }
1896
1896
  var KnowledgePermissions_module_css_default = {
1897
- "actions": "W1jiya_actions",
1898
- "placeholder": "W1jiya_placeholder",
1899
- "principalName": "W1jiya_principalName",
1900
- "sourceHint": "W1jiya_sourceHint",
1901
- "tabs": "W1jiya_tabs",
1902
- "dialogNotice": "W1jiya_dialogNotice",
1903
- "pageTitle": "W1jiya_pageTitle",
1904
- "principalMeta": "W1jiya_principalMeta",
1905
- "statCard": "W1jiya_statCard",
1906
- "path": "W1jiya_path",
1907
- "principalId": "W1jiya_principalId",
1908
- "rowActions": "W1jiya_rowActions",
1909
- "statLabel": "W1jiya_statLabel",
1910
- "dialogSelect": "W1jiya_dialogSelect",
1897
+ "holderKind": "W1jiya_holderKind",
1898
+ "overviewEmpty": "W1jiya_overviewEmpty",
1911
1899
  "dialogField": "W1jiya_dialogField",
1900
+ "statLabel": "W1jiya_statLabel",
1912
1901
  "overview": "W1jiya_overview",
1902
+ "pageSize": "W1jiya_pageSize",
1903
+ "actionCell": "W1jiya_actionCell",
1904
+ "dialogForm": "W1jiya_dialogForm",
1905
+ "sourceHint": "W1jiya_sourceHint",
1906
+ "emptyRow": "W1jiya_emptyRow",
1913
1907
  "pageHint": "W1jiya_pageHint",
1914
- "pageHead": "W1jiya_pageHead",
1915
- "holderKind": "W1jiya_holderKind",
1908
+ "paths": "W1jiya_paths",
1909
+ "pathCell": "W1jiya_pathCell",
1910
+ "path": "W1jiya_path",
1911
+ "dialogNotice": "W1jiya_dialogNotice",
1916
1912
  "pager": "W1jiya_pager",
1913
+ "actions": "W1jiya_actions",
1917
1914
  "pagerStatus": "W1jiya_pagerStatus",
1918
- "pageSize": "W1jiya_pageSize",
1919
- "holder": "W1jiya_holder",
1915
+ "linkButton": "W1jiya_linkButton",
1916
+ "principalName": "W1jiya_principalName",
1920
1917
  "statValue": "W1jiya_statValue",
1918
+ "countCell": "W1jiya_countCell",
1919
+ "pageTitle": "W1jiya_pageTitle",
1920
+ "placeholder": "W1jiya_placeholder",
1921
+ "principalMeta": "W1jiya_principalMeta",
1922
+ "holder": "W1jiya_holder",
1923
+ "principalId": "W1jiya_principalId",
1924
+ "tabs": "W1jiya_tabs",
1925
+ "sourceCell": "W1jiya_sourceCell",
1921
1926
  "holders": "W1jiya_holders",
1922
- "partialMark": "W1jiya_partialMark",
1923
- "dialogForm": "W1jiya_dialogForm",
1924
- "pathCell": "W1jiya_pathCell",
1925
- "chips": "W1jiya_chips",
1926
- "overviewEmpty": "W1jiya_overviewEmpty",
1927
- "holderName": "W1jiya_holderName",
1928
- "emptyRow": "W1jiya_emptyRow",
1929
1927
  "emptyNote": "W1jiya_emptyNote",
1930
- "linkButton": "W1jiya_linkButton",
1931
- "sourceCell": "W1jiya_sourceCell",
1932
- "table": "W1jiya_table",
1933
- "paths": "W1jiya_paths",
1928
+ "holderName": "W1jiya_holderName",
1934
1929
  "statRow": "W1jiya_statRow",
1935
- "actionCell": "W1jiya_actionCell",
1936
- "countCell": "W1jiya_countCell"
1930
+ "rowActions": "W1jiya_rowActions",
1931
+ "pageHead": "W1jiya_pageHead",
1932
+ "table": "W1jiya_table",
1933
+ "partialMark": "W1jiya_partialMark",
1934
+ "statCard": "W1jiya_statCard",
1935
+ "dialogSelect": "W1jiya_dialogSelect",
1936
+ "chips": "W1jiya_chips"
1937
1937
  };
1938
1938
  //#endregion
1939
1939
  //#region src/client/KnowledgePermissionOverview.tsx
@@ -2466,7 +2466,7 @@ window.__ModuleLoader__.load({
2466
2466
  }
2467
2467
  //#endregion
2468
2468
  //#region \0dsh-css:/root/projects/dsh-plugins-plus/packages/knowledge-base/src/client/KnowledgePanel.module.css.mjs
2469
- const css$15 = ".uNOdFq_page{height:100%;min-height:0;font:var(--dsw-font-s-14);flex-direction:column;display:flex}.uNOdFq_body{flex:auto;grid-template-columns:280px minmax(0,1fr);min-height:0;display:grid}.uNOdFq_bodyCollapsed{grid-template-columns:56px minmax(0,1fr)}.uNOdFq_rail{border-right:.5px solid var(--dsw-alias-border-l3);flex-direction:column;min-height:0;display:flex;overflow:hidden}.uNOdFq_railTop{box-sizing:border-box;flex:none;align-items:center;gap:4px;height:36px;padding:0 6px 0 12px;display:flex}.uNOdFq_railBrand{align-items:center;gap:8px;min-width:0;display:flex}.uNOdFq_railBrandName{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--dsw-font-s-strong-14);color:var(--dsw-alias-label-primary);overflow:hidden}.uNOdFq_railTopSpacer{margin-left:auto}.uNOdFq_bodyCollapsed .uNOdFq_railTop{justify-content:center;padding:0 14px}.uNOdFq_bodyCollapsed .uNOdFq_railBrand,.uNOdFq_bodyCollapsed .uNOdFq_railTopSpacer{display:none}.uNOdFq_sectionHeader{box-sizing:border-box;height:36px;color:var(--dsw-alias-label-tertiary);flex:none;align-items:center;gap:4px;padding:0 0 0 4px;display:flex}.uNOdFq_sectionName{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--dsw-font-s-14);color:var(--dsw-alias-label-tertiary);line-height:20px;overflow:hidden}.uNOdFq_sectionActions{align-items:center;gap:4px;margin-left:auto;padding-right:8px;display:flex}.uNOdFq_iconButton{border-radius:var(--dsw-radius-sm);width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.uNOdFq_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.uNOdFq_iconButton:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}.uNOdFq_iconButton:disabled{opacity:.4;cursor:default}.uNOdFq_treeScroll{flex:auto;min-height:0;padding:0 8px 12px;overflow:auto}.uNOdFq_searchBox{flex:none;margin:0 0 8px;padding:10px 12px 0}.uNOdFq_searchBox>span{box-sizing:border-box;width:100%;margin:0 2px;display:flex}.uNOdFq_menu{flex-direction:column;flex:none;gap:4px;margin:0 0 8px;padding:0 12px;display:flex}.uNOdFq_menuFolded{flex-direction:column;flex:none;gap:4px;margin:0 0 8px;padding:0 8px;display:flex}.uNOdFq_menuFolded .uNOdFq_menuRow,.uNOdFq_menuFolded .uNOdFq_menuRowActive{justify-content:center;padding:7px 0}.uNOdFq_menuRow,.uNOdFq_menuRowActive{box-sizing:border-box;border-radius:var(--dsw-radius-md);min-height:36px;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;margin:0 2px;padding:7px 8px;line-height:22px;display:flex}.uNOdFq_menuRow:hover,.uNOdFq_menuRowActive:hover{background:var(--dsw-alias-interactive-bg-hover)}.uNOdFq_menuRowActive{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.uNOdFq_menuRow:focus-visible,.uNOdFq_menuRowActive:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}.uNOdFq_menuGlyph{flex:none;justify-content:center;align-items:center;display:inline-flex}.uNOdFq_menuLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.uNOdFq_railBody{flex-direction:column;flex:auto;min-height:0;padding:0 8px 12px;display:flex;overflow:auto}.uNOdFq_pinnedBand{flex-direction:column;flex:none;max-height:180px;display:flex;overflow-y:auto}.uNOdFq_treeBand{flex-direction:column;flex:auto;min-height:0;display:flex}.uNOdFq_treeFilter{flex:none;padding:0 0 8px}.uNOdFq_treeFilter>span{box-sizing:border-box;width:100%;display:flex}.uNOdFq_contentColumn{flex-direction:column;min-width:0;min-height:0;display:flex}.uNOdFq_content{flex:auto;min-width:0;min-height:0;padding:16px 24px 20px;overflow:auto}.uNOdFq_header{border-bottom:.5px solid var(--dsw-alias-border-l3);flex-flow:wrap;flex:none;align-items:center;gap:8px 12px;padding:16px 14px 8px 24px;display:flex}.uNOdFq_headerActions{flex:none;align-items:center;gap:8px;margin-left:auto;display:flex}.uNOdFq_headerTitle{min-width:0;min-height:28px;font:var(--dsw-font-base-strong-16);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;flex:none;align-items:flex-end;margin:0;display:flex;overflow:hidden}.uNOdFq_headerFact{min-width:0;color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-12);white-space:nowrap;align-items:center;gap:6px;margin:0;display:flex;overflow:hidden}.uNOdFq_headerPath{font:var(--dsw-font-xxs-12) var(--ds-font-family-code);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.uNOdFq_headerHint{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-12);flex-basis:100%;margin:0}.uNOdFq_surface{flex-direction:column;align-items:flex-start;gap:12px;max-width:900px;display:flex}.uNOdFq_tableSurface{align-items:stretch;width:100%;min-width:0;max-width:none}.uNOdFq_tableSurface table{width:100%}.uNOdFq_tableSurface th:last-child,.uNOdFq_tableSurface td:last-child{text-align:right;white-space:nowrap}.uNOdFq_tableSurface td[colspan]{text-align:center;white-space:normal;padding:24px 16px}.uNOdFq_title{font:var(--dsw-font-base-strong-16);margin:0}.uNOdFq_subhead{font:var(--dsw-font-s-strong-14);margin:8px 0 0}.uNOdFq_muted{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xs-13);margin:0}.uNOdFq_error{color:var(--dsw-alias-state-error-primary,#c0392b);font:var(--dsw-font-xs-13);margin:0}.uNOdFq_notice{color:var(--dsw-alias-state-success-primary,#1a7f37);font:var(--dsw-font-xs-13);margin:0}.uNOdFq_empty{text-align:center;color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-s-14);flex-direction:column;align-items:center;padding:48px 20px;display:flex}.uNOdFq_emptyGlyph{color:var(--dsw-alias-label-caption);margin-bottom:12px}.uNOdFq_emptyTitle{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-s-14);margin:0;line-height:1.6}.uNOdFq_factDot{opacity:.6}.uNOdFq_hits{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.uNOdFq_hit,.uNOdFq_hitActive{box-sizing:border-box;border-radius:var(--dsw-radius-md,8px);width:100%;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;grid-template-columns:minmax(0,auto) minmax(0,1fr);align-items:baseline;gap:2px 10px;padding:8px 10px;display:grid}.uNOdFq_hit:hover,.uNOdFq_hitActive{background:var(--dsw-alias-interactive-bg-hover)}.uNOdFq_hitName{font:var(--dsw-font-xs-strong-13);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.uNOdFq_hitPath{min-width:0;color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-12);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.uNOdFq_hitTime{color:var(--dsw-alias-label-tertiary,var(--dsw-alias-label-secondary));font:var(--dsw-font-xxs-12);grid-column:1/-1}.uNOdFq_hitLine{min-width:0;color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-12) var(--ds-font-family-code);text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;gap:8px;display:flex;overflow:hidden}.uNOdFq_hitLineNo{text-align:right;opacity:.7;flex:none;min-width:2.5em}.uNOdFq_path{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-12) var(--ds-font-family-code);overflow-wrap:anywhere;margin:0}.uNOdFq_preview{border:1px solid var(--dsw-alias-border-l1,#0000001f);border-radius:var(--dsw-radius-md,8px);background:var(--dsw-alias-bg-layer-2);font:var(--dsw-font-xs-13) var(--ds-font-family-code);white-space:pre-wrap;overflow-wrap:anywhere;max-height:calc(100vh - 160px);margin:0;padding:12px;line-height:1.55;overflow:auto}.uNOdFq_pairs{flex-direction:column;gap:6px;margin:0;display:flex}.uNOdFq_pair{font:var(--dsw-font-xs-13);gap:12px;display:flex}.uNOdFq_pair dt{min-width:6.5em;color:var(--dsw-alias-label-secondary);flex:none}.uNOdFq_pair dd{overflow-wrap:anywhere;margin:0}.uNOdFq_form{border:.5px solid var(--dsw-alias-border-l1);border-radius:var(--dsw-radius-md);flex-wrap:wrap;align-items:flex-end;gap:10px;padding:12px;display:flex}.uNOdFq_field{flex-direction:column;gap:4px;min-width:0;display:flex}.uNOdFq_field>span{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-strong-12)}.uNOdFq_input{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-layer-1);min-width:10em;height:32px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-s-14);padding:0 10px}.uNOdFq_input:focus-visible{border-color:var(--dsw-alias-state-business-primary);outline:none}.uNOdFq_retry{border-radius:var(--dsw-radius-sm);border:1px solid var(--dsw-alias-border-l2);min-height:32px;font:var(--dsw-font-xxs-12);cursor:pointer;color:var(--dsw-alias-label-primary);background:0 0;align-self:flex-start;padding:4px 14px}.uNOdFq_retry:disabled{opacity:.55;cursor:default}.uNOdFq_table{border-collapse:collapse;width:100%;font:var(--dsw-font-xxs-12)}.uNOdFq_table th,.uNOdFq_table td{text-align:left;border-bottom:.5px solid var(--dsw-alias-border-l2);padding:6px 8px}.uNOdFq_table th{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-strong-12)}.uNOdFq_previewLayout{align-items:flex-start;gap:12px;width:100%;min-width:0;display:flex}.uNOdFq_previewColumn{flex-direction:column;flex:auto;align-items:flex-start;gap:12px;min-width:0;max-width:900px;display:flex}.uNOdFq_openedElsewhere{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;width:100%;min-height:240px;display:flex}.uNOdFq_bodyDocument{grid-template-columns:280px}.uNOdFq_bodyCollapsed.uNOdFq_bodyDocument{grid-template-columns:56px}.uNOdFq_surface+.uNOdFq_surface{border-top:1px solid var(--dsw-alias-border-l1);margin-top:20px;padding-top:24px}.uNOdFq_surface+.uNOdFq_surface>.uNOdFq_subhead{margin-top:0}.uNOdFq_referenceNote{z-index:20;border:1px solid var(--dsw-alias-border-l2);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-layer-1);max-width:420px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-12);box-shadow:var(--dsw-shadow-lv2);align-items:center;gap:8px;margin:0;padding:8px 10px;display:flex;position:fixed;inset-block-end:16px;inset-inline-start:16px}.uNOdFq_referenceNoteDismiss{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xs-13);cursor:pointer;background:0 0;border:0;flex:none;padding:0 2px;line-height:1}.uNOdFq_referenceNoteDismiss:hover{color:var(--dsw-alias-label-primary)}.uNOdFq_menuGroupLabel{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xxxs-strong-11);padding:6px 10px 2px;display:block}.uNOdFq_menuSeparator{border-top:.5px solid var(--dsw-alias-border-l2);height:0;margin:4px 6px;display:block}";
2469
+ const css$15 = ".uNOdFq_page{height:100%;min-height:0;font:var(--dsw-font-s-14);flex-direction:column;display:flex}.uNOdFq_body{flex:auto;grid-template-columns:280px minmax(0,1fr);min-height:0;display:grid}.uNOdFq_bodyCollapsed{grid-template-columns:56px minmax(0,1fr)}.uNOdFq_rail{border-right:.5px solid var(--dsw-alias-border-l3);flex-direction:column;min-height:0;display:flex;overflow:hidden}.uNOdFq_railTop{box-sizing:border-box;flex:none;align-items:center;gap:4px;height:36px;padding:0 6px 0 12px;display:flex}.uNOdFq_railBrand{align-items:center;gap:8px;min-width:0;display:flex}.uNOdFq_railBrandName{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--dsw-font-s-strong-14);color:var(--dsw-alias-label-primary);overflow:hidden}.uNOdFq_railTopSpacer{margin-left:auto}.uNOdFq_bodyCollapsed .uNOdFq_railTop{justify-content:center;padding:0 14px}.uNOdFq_bodyCollapsed .uNOdFq_railBrand,.uNOdFq_bodyCollapsed .uNOdFq_railTopSpacer{display:none}.uNOdFq_sectionHeader{box-sizing:border-box;height:36px;color:var(--dsw-alias-label-tertiary);flex:none;align-items:center;gap:4px;padding:0 0 0 4px;display:flex}.uNOdFq_sectionName{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--dsw-font-s-14);color:var(--dsw-alias-label-tertiary);line-height:20px;overflow:hidden}.uNOdFq_sectionActions{align-items:center;gap:4px;margin-left:auto;padding-right:8px;display:flex}.uNOdFq_iconButton{border-radius:var(--dsw-radius-sm);width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.uNOdFq_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.uNOdFq_iconButton:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}.uNOdFq_iconButton:disabled{opacity:.4;cursor:default}.uNOdFq_treeScroll{flex:auto;min-height:0;padding:0 8px 12px;overflow:auto}.uNOdFq_searchBox{flex:none;margin:0 0 8px;padding:10px 12px 0}.uNOdFq_searchBox>span{box-sizing:border-box;width:100%;margin:0 2px;display:flex}.uNOdFq_menu{flex-direction:column;flex:none;gap:4px;margin:0 0 8px;padding:0 12px;display:flex}.uNOdFq_menuFolded{flex-direction:column;flex:none;gap:4px;margin:0 0 8px;padding:0 8px;display:flex}.uNOdFq_menuFolded .uNOdFq_menuRow,.uNOdFq_menuFolded .uNOdFq_menuRowActive{justify-content:center;padding:7px 0}.uNOdFq_menuRow,.uNOdFq_menuRowActive{box-sizing:border-box;border-radius:var(--dsw-radius-md);min-height:36px;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;margin:0 2px;padding:7px 8px;line-height:22px;display:flex}.uNOdFq_menuRow:hover,.uNOdFq_menuRowActive:hover{background:var(--dsw-alias-interactive-bg-hover)}.uNOdFq_menuRowActive{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.uNOdFq_menuRow:focus-visible,.uNOdFq_menuRowActive:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}.uNOdFq_menuGlyph{flex:none;justify-content:center;align-items:center;display:inline-flex}.uNOdFq_menuLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.uNOdFq_railBody{flex-direction:column;flex:auto;min-height:0;padding:0 8px 12px;display:flex;overflow:auto}.uNOdFq_pinnedBand{flex-direction:column;flex:none;max-height:180px;display:flex;overflow-y:auto}.uNOdFq_treeBand{flex-direction:column;flex:auto;min-height:0;display:flex}.uNOdFq_treeFilter{flex:none;padding:0 0 8px}.uNOdFq_treeFilter>span{box-sizing:border-box;width:100%;display:flex}.uNOdFq_contentColumn{flex-direction:column;min-width:0;min-height:0;display:flex}.uNOdFq_content{flex:auto;min-width:0;min-height:0;padding:16px 24px 20px;overflow:auto}.uNOdFq_header{border-bottom:.5px solid var(--dsw-alias-border-l3);flex-flow:wrap;flex:none;align-items:center;gap:8px 12px;padding:16px 14px 8px 24px;display:flex}.uNOdFq_headerActions{flex:none;align-items:center;gap:8px;margin-left:auto;display:flex}.uNOdFq_headerTitle{min-width:0;min-height:28px;font:var(--dsw-font-base-strong-16);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;flex:none;align-items:flex-end;margin:0;display:flex;overflow:hidden}.uNOdFq_headerFact{min-width:0;color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-12);white-space:nowrap;align-items:center;gap:6px;margin:0;display:flex;overflow:hidden}.uNOdFq_headerPath{font:var(--dsw-font-xxs-12) var(--ds-font-family-code);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.uNOdFq_headerHint{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-12);flex-basis:100%;margin:0}.uNOdFq_surface{flex-direction:column;align-items:flex-start;gap:12px;max-width:900px;display:flex}.uNOdFq_tableSurface{align-items:stretch;width:100%;min-width:0;max-width:none}.uNOdFq_tableSurface table{width:100%}.uNOdFq_tableSurface th:last-child,.uNOdFq_tableSurface td:last-child{text-align:right;white-space:nowrap}.uNOdFq_tableSurface td[colspan]{text-align:center;white-space:normal;padding:24px 16px}.uNOdFq_title{font:var(--dsw-font-base-strong-16);margin:0}.uNOdFq_subhead{font:var(--dsw-font-s-strong-14);margin:8px 0 0}.uNOdFq_muted{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xs-13);margin:0}.uNOdFq_error{color:var(--dsw-alias-state-error-primary,#c0392b);font:var(--dsw-font-xs-13);margin:0}.uNOdFq_notice{color:var(--dsw-alias-state-success-primary,#1a7f37);font:var(--dsw-font-xs-13);margin:0}.uNOdFq_empty{text-align:center;color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-s-14);flex-direction:column;align-items:center;padding:48px 20px;display:flex}.uNOdFq_emptyGlyph{color:var(--dsw-alias-label-caption);margin-bottom:12px}.uNOdFq_emptyTitle{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-s-14);margin:0;line-height:1.6}.uNOdFq_factDot{opacity:.6}.uNOdFq_hits{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.uNOdFq_hit,.uNOdFq_hitActive{box-sizing:border-box;border-radius:var(--dsw-radius-md,8px);width:100%;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;grid-template-columns:minmax(0,auto) minmax(0,1fr);align-items:baseline;gap:2px 10px;padding:8px 10px;display:grid}.uNOdFq_hit:hover,.uNOdFq_hitActive{background:var(--dsw-alias-interactive-bg-hover)}.uNOdFq_hitName{font:var(--dsw-font-xs-strong-13);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.uNOdFq_hitPath{min-width:0;color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-12);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.uNOdFq_hitTime{color:var(--dsw-alias-label-tertiary,var(--dsw-alias-label-secondary));font:var(--dsw-font-xxs-12);grid-column:1/-1}.uNOdFq_hitLine{min-width:0;color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-12) var(--ds-font-family-code);text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;gap:8px;display:flex;overflow:hidden}.uNOdFq_hitLineNo{text-align:right;opacity:.7;flex:none;min-width:2.5em}.uNOdFq_path{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-12) var(--ds-font-family-code);overflow-wrap:anywhere;margin:0}.uNOdFq_preview{border:1px solid var(--dsw-alias-border-l1,#0000001f);border-radius:var(--dsw-radius-md,8px);background:var(--dsw-alias-bg-layer-2);font:var(--dsw-font-xs-13) var(--ds-font-family-code);white-space:pre-wrap;overflow-wrap:anywhere;max-height:calc(100vh - 160px);margin:0;padding:12px;line-height:1.55;overflow:auto}.uNOdFq_pairs{flex-direction:column;gap:6px;margin:0;display:flex}.uNOdFq_pair{font:var(--dsw-font-xs-13);gap:12px;display:flex}.uNOdFq_pair dt{min-width:6.5em;color:var(--dsw-alias-label-secondary);flex:none}.uNOdFq_pair dd{overflow-wrap:anywhere;margin:0}.uNOdFq_form{border:.5px solid var(--dsw-alias-border-l1);border-radius:var(--dsw-radius-md);flex-wrap:wrap;align-items:flex-end;gap:10px;padding:12px;display:flex}.uNOdFq_field{flex-direction:column;gap:4px;min-width:0;display:flex}.uNOdFq_field>span{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-strong-12)}.uNOdFq_input{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-layer-1);min-width:10em;height:32px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-s-14);padding:0 10px}.uNOdFq_input:focus-visible{border-color:var(--dsw-alias-state-business-primary);outline:none}.uNOdFq_retry{border-radius:var(--dsw-radius-sm);border:1px solid var(--dsw-alias-border-l2);min-height:32px;font:var(--dsw-font-xxs-12);cursor:pointer;color:var(--dsw-alias-label-primary);background:0 0;align-self:flex-start;padding:4px 14px}.uNOdFq_retry:disabled{opacity:.55;cursor:default}.uNOdFq_table{border-collapse:collapse;width:100%;font:var(--dsw-font-xxs-12)}.uNOdFq_table th,.uNOdFq_table td{text-align:left;border-bottom:.5px solid var(--dsw-alias-border-l2);padding:6px 8px}.uNOdFq_table th{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-strong-12)}.uNOdFq_previewLayout{align-items:flex-start;gap:12px;width:100%;min-width:0;display:flex}.uNOdFq_previewColumn{flex-direction:column;flex:auto;align-items:flex-start;gap:12px;min-width:0;max-width:900px;display:flex}.uNOdFq_openedElsewhere{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;width:100%;min-height:240px;display:flex}.uNOdFq_bodyDocument{grid-template-columns:280px}.uNOdFq_bodyCollapsed.uNOdFq_bodyDocument{grid-template-columns:56px}.uNOdFq_surface+.uNOdFq_surface{border-top:1px solid var(--dsw-alias-border-l1);margin-top:20px;padding-top:24px}.uNOdFq_surface+.uNOdFq_surface>.uNOdFq_subhead{margin-top:0}.uNOdFq_referenceNote{z-index:20;border:1px solid var(--dsw-alias-border-l2);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-layer-1);max-width:420px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-12);box-shadow:var(--dsw-shadow-lv2);align-items:center;gap:8px;margin:0;padding:8px 10px;display:flex;position:fixed;inset-block-end:16px;inset-inline-start:16px}.uNOdFq_referenceNoteDismiss{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xs-13);cursor:pointer;background:0 0;border:0;flex:none;padding:0 2px;line-height:1}.uNOdFq_referenceNoteDismiss:hover{color:var(--dsw-alias-label-primary)}.uNOdFq_menuGroupLabel{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xxxs-strong-11);padding:6px 10px 2px;display:block}.uNOdFq_menuSeparator{border-top:.5px solid var(--dsw-alias-border-l2);height:0;margin:4px 6px;display:block}.uNOdFq_errorPanel{text-align:center;flex-direction:column;flex:auto;justify-content:center;align-items:center;gap:10px;min-height:0;padding:48px 24px;display:flex}.uNOdFq_errorGlyph{background:var(--dsw-alias-fill-l2,#f2f3f5);width:40px;height:40px;color:var(--dsw-alias-state-error-primary,#c0392b);border-radius:50%;place-items:center;display:grid}.uNOdFq_errorTitle{color:var(--dsw-alias-label-primary);font:var(--dsw-font-m-16,600 16px/24px);margin:0}.uNOdFq_errorDetail{max-width:420px;color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xs-13);margin:0}.uNOdFq_errorPanel .uNOdFq_retry{align-self:center;margin-top:6px}";
2470
2470
  const tagId$15 = "@sparkelf/dsh-knowledge-base/KnowledgePanel.module.css";
2471
2471
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$15) + "]") === null) {
2472
2472
  const tag = document.createElement("style");
@@ -2476,74 +2476,78 @@ window.__ModuleLoader__.load({
2476
2476
  document.head.appendChild(tag);
2477
2477
  }
2478
2478
  var KnowledgePanel_module_css_default = {
2479
- "pairs": "uNOdFq_pairs",
2480
- "rail": "uNOdFq_rail",
2481
- "menuFolded": "uNOdFq_menuFolded",
2482
- "hitName": "uNOdFq_hitName",
2483
- "form": "uNOdFq_form",
2484
- "previewLayout": "uNOdFq_previewLayout",
2485
- "treeScroll": "uNOdFq_treeScroll",
2486
- "notice": "uNOdFq_notice",
2487
- "menuRowActive": "uNOdFq_menuRowActive",
2488
- "hitPath": "uNOdFq_hitPath",
2489
- "bodyDocument": "uNOdFq_bodyDocument",
2490
- "pair": "uNOdFq_pair",
2491
- "headerFact": "uNOdFq_headerFact",
2479
+ "railBrand": "uNOdFq_railBrand",
2492
2480
  "menuLabel": "uNOdFq_menuLabel",
2493
- "preview": "uNOdFq_preview",
2481
+ "headerPath": "uNOdFq_headerPath",
2482
+ "header": "uNOdFq_header",
2494
2483
  "iconButton": "uNOdFq_iconButton",
2495
- "content": "uNOdFq_content",
2496
- "path": "uNOdFq_path",
2497
- "contentColumn": "uNOdFq_contentColumn",
2484
+ "error": "uNOdFq_error",
2485
+ "notice": "uNOdFq_notice",
2486
+ "form": "uNOdFq_form",
2498
2487
  "menuSeparator": "uNOdFq_menuSeparator",
2488
+ "retry": "uNOdFq_retry",
2489
+ "muted": "uNOdFq_muted",
2490
+ "sectionActions": "uNOdFq_sectionActions",
2491
+ "menuRowActive": "uNOdFq_menuRowActive",
2499
2492
  "pinnedBand": "uNOdFq_pinnedBand",
2500
- "error": "uNOdFq_error",
2501
- "railTopSpacer": "uNOdFq_railTopSpacer",
2502
- "openedElsewhere": "uNOdFq_openedElsewhere",
2503
2493
  "bodyCollapsed": "uNOdFq_bodyCollapsed",
2504
- "sectionName": "uNOdFq_sectionName",
2505
- "menuRow": "uNOdFq_menuRow",
2506
- "referenceNoteDismiss": "uNOdFq_referenceNoteDismiss",
2507
- "hits": "uNOdFq_hits",
2508
- "menuGroupLabel": "uNOdFq_menuGroupLabel",
2509
- "page": "uNOdFq_page",
2510
- "headerPath": "uNOdFq_headerPath",
2511
- "field": "uNOdFq_field",
2512
- "title": "uNOdFq_title",
2513
- "hitActive": "uNOdFq_hitActive",
2514
2494
  "factDot": "uNOdFq_factDot",
2515
- "treeFilter": "uNOdFq_treeFilter",
2516
- "railBody": "uNOdFq_railBody",
2495
+ "searchBox": "uNOdFq_searchBox",
2517
2496
  "emptyTitle": "uNOdFq_emptyTitle",
2518
- "retry": "uNOdFq_retry",
2519
- "menuGlyph": "uNOdFq_menuGlyph",
2520
- "treeBand": "uNOdFq_treeBand",
2521
- "subhead": "uNOdFq_subhead",
2522
- "emptyGlyph": "uNOdFq_emptyGlyph",
2523
- "empty": "uNOdFq_empty",
2524
- "hit": "uNOdFq_hit",
2525
2497
  "railBrandName": "uNOdFq_railBrandName",
2526
- "hitTime": "uNOdFq_hitTime",
2527
- "headerHint": "uNOdFq_headerHint",
2528
- "railBrand": "uNOdFq_railBrand",
2529
- "sectionActions": "uNOdFq_sectionActions",
2530
- "tableSurface": "uNOdFq_tableSurface",
2531
- "headerTitle": "uNOdFq_headerTitle",
2532
- "headerActions": "uNOdFq_headerActions",
2498
+ "referenceNote": "uNOdFq_referenceNote",
2499
+ "pairs": "uNOdFq_pairs",
2500
+ "referenceNoteDismiss": "uNOdFq_referenceNoteDismiss",
2501
+ "treeFilter": "uNOdFq_treeFilter",
2533
2502
  "hitLine": "uNOdFq_hitLine",
2534
- "sectionHeader": "uNOdFq_sectionHeader",
2535
- "railTop": "uNOdFq_railTop",
2536
- "searchBox": "uNOdFq_searchBox",
2537
- "surface": "uNOdFq_surface",
2503
+ "hitPath": "uNOdFq_hitPath",
2504
+ "errorGlyph": "uNOdFq_errorGlyph",
2538
2505
  "table": "uNOdFq_table",
2539
- "referenceNote": "uNOdFq_referenceNote",
2540
- "muted": "uNOdFq_muted",
2541
- "previewColumn": "uNOdFq_previewColumn",
2506
+ "hit": "uNOdFq_hit",
2507
+ "field": "uNOdFq_field",
2508
+ "sectionName": "uNOdFq_sectionName",
2509
+ "railBody": "uNOdFq_railBody",
2510
+ "sectionHeader": "uNOdFq_sectionHeader",
2511
+ "empty": "uNOdFq_empty",
2512
+ "hitTime": "uNOdFq_hitTime",
2542
2513
  "input": "uNOdFq_input",
2543
- "header": "uNOdFq_header",
2514
+ "hitName": "uNOdFq_hitName",
2515
+ "bodyDocument": "uNOdFq_bodyDocument",
2516
+ "page": "uNOdFq_page",
2544
2517
  "hitLineNo": "uNOdFq_hitLineNo",
2518
+ "railTop": "uNOdFq_railTop",
2519
+ "subhead": "uNOdFq_subhead",
2520
+ "menu": "uNOdFq_menu",
2521
+ "hitActive": "uNOdFq_hitActive",
2522
+ "headerTitle": "uNOdFq_headerTitle",
2523
+ "previewColumn": "uNOdFq_previewColumn",
2524
+ "hits": "uNOdFq_hits",
2525
+ "rail": "uNOdFq_rail",
2526
+ "menuGlyph": "uNOdFq_menuGlyph",
2527
+ "preview": "uNOdFq_preview",
2528
+ "contentColumn": "uNOdFq_contentColumn",
2529
+ "content": "uNOdFq_content",
2530
+ "errorTitle": "uNOdFq_errorTitle",
2531
+ "headerActions": "uNOdFq_headerActions",
2532
+ "errorDetail": "uNOdFq_errorDetail",
2533
+ "openedElsewhere": "uNOdFq_openedElsewhere",
2534
+ "menuRow": "uNOdFq_menuRow",
2535
+ "treeScroll": "uNOdFq_treeScroll",
2536
+ "headerHint": "uNOdFq_headerHint",
2537
+ "treeBand": "uNOdFq_treeBand",
2538
+ "headerFact": "uNOdFq_headerFact",
2539
+ "tableSurface": "uNOdFq_tableSurface",
2540
+ "title": "uNOdFq_title",
2541
+ "emptyGlyph": "uNOdFq_emptyGlyph",
2542
+ "path": "uNOdFq_path",
2543
+ "menuGroupLabel": "uNOdFq_menuGroupLabel",
2544
+ "pair": "uNOdFq_pair",
2545
+ "errorPanel": "uNOdFq_errorPanel",
2546
+ "railTopSpacer": "uNOdFq_railTopSpacer",
2547
+ "previewLayout": "uNOdFq_previewLayout",
2548
+ "menuFolded": "uNOdFq_menuFolded",
2545
2549
  "body": "uNOdFq_body",
2546
- "menu": "uNOdFq_menu"
2550
+ "surface": "uNOdFq_surface"
2547
2551
  };
2548
2552
  //#endregion
2549
2553
  //#region src/client/KnowledgePermissions.tsx
@@ -3058,15 +3062,15 @@ window.__ModuleLoader__.load({
3058
3062
  document.head.appendChild(tag);
3059
3063
  }
3060
3064
  var KnowledgeLoading_module_css_default = {
3061
- "book": "HyIQta_book",
3062
- "coverBack": "HyIQta_coverBack",
3065
+ "leaf": "HyIQta_leaf",
3066
+ "wrap": "HyIQta_wrap",
3063
3067
  "pagesLeft": "HyIQta_pagesLeft",
3068
+ "coverBack": "HyIQta_coverBack",
3064
3069
  "pagesRight": "HyIQta_pagesRight",
3065
- "wrap": "HyIQta_wrap",
3066
- "leaf": "HyIQta_leaf",
3070
+ "kb-page-turn": "HyIQta_kb-page-turn",
3067
3071
  "label": "HyIQta_label",
3068
3072
  "srOnly": "HyIQta_srOnly",
3069
- "kb-page-turn": "HyIQta_kb-page-turn"
3073
+ "book": "HyIQta_book"
3070
3074
  };
3071
3075
  //#endregion
3072
3076
  //#region src/client/KnowledgeLoading.tsx
@@ -3151,7 +3155,7 @@ window.__ModuleLoader__.load({
3151
3155
  });
3152
3156
  }
3153
3157
  //#endregion
3154
- //#region ../../node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/resource-address.ts
3158
+ //#region ../../../DSH-better-sidebar/src/client/resource-address.ts
3155
3159
  /**
3156
3160
  * The DSH resource-address grammar for files (`dsh-resource://file/…`).
3157
3161
  *
@@ -3658,42 +3662,42 @@ window.__ModuleLoader__.load({
3658
3662
  document.head.appendChild(tag);
3659
3663
  }
3660
3664
  var KnowledgeHome_module_css_default = {
3661
- "colLocation": "oNvFBa_colLocation",
3662
- "colOwner": "oNvFBa_colOwner",
3663
- "shareWrap": "oNvFBa_shareWrap",
3664
- "actionsCell": "oNvFBa_actionsCell",
3665
- "iconButton": "oNvFBa_iconButton",
3666
- "rowActions": "oNvFBa_rowActions",
3667
- "card": "oNvFBa_card",
3668
- "docPager": "oNvFBa_docPager",
3665
+ "shareError": "oNvFBa_shareError",
3666
+ "emptyRow": "oNvFBa_emptyRow",
3667
+ "rowLink": "oNvFBa_rowLink",
3668
+ "shareEmpty": "oNvFBa_shareEmpty",
3669
3669
  "cardPlate": "oNvFBa_cardPlate",
3670
- "sharePager": "oNvFBa_sharePager",
3670
+ "muted": "oNvFBa_muted",
3671
+ "table": "oNvFBa_table",
3672
+ "dropZoneActive": "oNvFBa_dropZoneActive",
3673
+ "colLocation": "oNvFBa_colLocation",
3674
+ "cardMenu": "oNvFBa_cardMenu",
3675
+ "cardSlot": "oNvFBa_cardSlot",
3676
+ "cards": "oNvFBa_cards",
3677
+ "hiddenInput": "oNvFBa_hiddenInput",
3671
3678
  "cardTitle": "oNvFBa_cardTitle",
3672
- "favoriteMark": "oNvFBa_favoriteMark",
3673
- "rowLink": "oNvFBa_rowLink",
3679
+ "iconButtonDanger": "oNvFBa_iconButtonDanger",
3680
+ "docPager": "oNvFBa_docPager",
3681
+ "iconButton": "oNvFBa_iconButton",
3682
+ "dropZone": "oNvFBa_dropZone",
3674
3683
  "cardBody": "oNvFBa_cardBody",
3675
- "shareError": "oNvFBa_shareError",
3676
3684
  "iconButtonOn": "oNvFBa_iconButtonOn",
3685
+ "cardChevron": "oNvFBa_cardChevron",
3677
3686
  "home": "oNvFBa_home",
3678
- "table": "oNvFBa_table",
3679
- "cardText": "oNvFBa_cardText",
3687
+ "card": "oNvFBa_card",
3688
+ "titleCell": "oNvFBa_titleCell",
3689
+ "favoriteMark": "oNvFBa_favoriteMark",
3680
3690
  "cardMenuItem": "oNvFBa_cardMenuItem",
3681
- "cardSlot": "oNvFBa_cardSlot",
3682
- "dropZone": "oNvFBa_dropZone",
3691
+ "colActions": "oNvFBa_colActions",
3692
+ "rowActions": "oNvFBa_rowActions",
3693
+ "colOwner": "oNvFBa_colOwner",
3694
+ "actionsCell": "oNvFBa_actionsCell",
3695
+ "shareWrap": "oNvFBa_shareWrap",
3696
+ "colTime": "oNvFBa_colTime",
3683
3697
  "colTitle": "oNvFBa_colTitle",
3684
- "muted": "oNvFBa_muted",
3685
- "hiddenInput": "oNvFBa_hiddenInput",
3686
- "dropZoneActive": "oNvFBa_dropZoneActive",
3687
- "iconButtonDanger": "oNvFBa_iconButtonDanger",
3688
- "shareEmpty": "oNvFBa_shareEmpty",
3698
+ "cardText": "oNvFBa_cardText",
3689
3699
  "shareBlock": "oNvFBa_shareBlock",
3690
- "cardChevron": "oNvFBa_cardChevron",
3691
- "colActions": "oNvFBa_colActions",
3692
- "emptyRow": "oNvFBa_emptyRow",
3693
- "cards": "oNvFBa_cards",
3694
- "cardMenu": "oNvFBa_cardMenu",
3695
- "titleCell": "oNvFBa_titleCell",
3696
- "colTime": "oNvFBa_colTime"
3700
+ "sharePager": "oNvFBa_sharePager"
3697
3701
  };
3698
3702
  //#endregion
3699
3703
  //#region \0dsh-css:/root/projects/dsh-plugins-plus/packages/knowledge-base/src/client/KnowledgeTemplates.module.css.mjs
@@ -3707,54 +3711,54 @@ window.__ModuleLoader__.load({
3707
3711
  document.head.appendChild(tag);
3708
3712
  }
3709
3713
  var KnowledgeTemplates_module_css_default = {
3710
- "grid": "Tg9J7q_grid",
3711
- "modal": "Tg9J7q_modal",
3712
- "notice": "Tg9J7q_notice",
3713
- "quickFilter": "Tg9J7q_quickFilter",
3714
- "cardIcon": "Tg9J7q_cardIcon",
3715
- "documentPage": "Tg9J7q_documentPage",
3716
- "cardMeta": "Tg9J7q_cardMeta",
3717
- "categoryChip": "Tg9J7q_categoryChip",
3714
+ "quickFilters": "Tg9J7q_quickFilters",
3715
+ "form": "Tg9J7q_form",
3718
3716
  "lineWide": "Tg9J7q_lineWide",
3719
- "library": "Tg9J7q_library",
3720
- "fieldLabel": "Tg9J7q_fieldLabel",
3721
- "manageName": "Tg9J7q_manageName",
3722
- "field": "Tg9J7q_field",
3723
- "coverPage": "Tg9J7q_coverPage",
3717
+ "previewModal": "Tg9J7q_previewModal",
3724
3718
  "cardTags": "Tg9J7q_cardTags",
3725
- "footer": "Tg9J7q_footer",
3726
- "muted": "Tg9J7q_muted",
3727
- "cardBody": "Tg9J7q_cardBody",
3728
- "fieldHint": "Tg9J7q_fieldHint",
3729
- "dialog": "Tg9J7q_dialog",
3719
+ "manageRow": "Tg9J7q_manageRow",
3720
+ "quickFilter": "Tg9J7q_quickFilter",
3721
+ "destination": "Tg9J7q_destination",
3722
+ "cardActions": "Tg9J7q_cardActions",
3723
+ "notice": "Tg9J7q_notice",
3724
+ "cover": "Tg9J7q_cover",
3730
3725
  "manage": "Tg9J7q_manage",
3726
+ "toolbar": "Tg9J7q_toolbar",
3731
3727
  "manageBar": "Tg9J7q_manageBar",
3732
- "cardActions": "Tg9J7q_cardActions",
3728
+ "fieldHint": "Tg9J7q_fieldHint",
3729
+ "cardBody": "Tg9J7q_cardBody",
3730
+ "fileInput": "Tg9J7q_fileInput",
3731
+ "formActions": "Tg9J7q_formActions",
3732
+ "cardMain": "Tg9J7q_cardMain",
3733
+ "cardMeta": "Tg9J7q_cardMeta",
3734
+ "muted": "Tg9J7q_muted",
3735
+ "manageName": "Tg9J7q_manageName",
3736
+ "footer": "Tg9J7q_footer",
3737
+ "library": "Tg9J7q_library",
3738
+ "previewContent": "Tg9J7q_previewContent",
3739
+ "filterRow": "Tg9J7q_filterRow",
3740
+ "manageList": "Tg9J7q_manageList",
3733
3741
  "cardHead": "Tg9J7q_cardHead",
3734
- "favorite": "Tg9J7q_favorite",
3735
- "quickFilters": "Tg9J7q_quickFilters",
3736
- "previewModal": "Tg9J7q_previewModal",
3737
3742
  "filterDivider": "Tg9J7q_filterDivider",
3743
+ "documentPage": "Tg9J7q_documentPage",
3738
3744
  "slidePage": "Tg9J7q_slidePage",
3745
+ "coverPage": "Tg9J7q_coverPage",
3746
+ "sheetGrid": "Tg9J7q_sheetGrid",
3747
+ "destinationLabel": "Tg9J7q_destinationLabel",
3739
3748
  "cardFoot": "Tg9J7q_cardFoot",
3740
- "cardTitle": "Tg9J7q_cardTitle",
3741
- "manageList": "Tg9J7q_manageList",
3749
+ "dialog": "Tg9J7q_dialog",
3750
+ "grid": "Tg9J7q_grid",
3742
3751
  "manageActions": "Tg9J7q_manageActions",
3743
- "destinationLabel": "Tg9J7q_destinationLabel",
3744
- "cover": "Tg9J7q_cover",
3745
- "form": "Tg9J7q_form",
3746
- "categoryFilters": "Tg9J7q_categoryFilters",
3747
- "destination": "Tg9J7q_destination",
3752
+ "categoryChip": "Tg9J7q_categoryChip",
3748
3753
  "lineShort": "Tg9J7q_lineShort",
3749
- "formActions": "Tg9J7q_formActions",
3750
- "cardMain": "Tg9J7q_cardMain",
3754
+ "categoryFilters": "Tg9J7q_categoryFilters",
3755
+ "field": "Tg9J7q_field",
3756
+ "cardTitle": "Tg9J7q_cardTitle",
3757
+ "cardIcon": "Tg9J7q_cardIcon",
3758
+ "favorite": "Tg9J7q_favorite",
3759
+ "fieldLabel": "Tg9J7q_fieldLabel",
3751
3760
  "card": "Tg9J7q_card",
3752
- "previewContent": "Tg9J7q_previewContent",
3753
- "sheetGrid": "Tg9J7q_sheetGrid",
3754
- "filterRow": "Tg9J7q_filterRow",
3755
- "manageRow": "Tg9J7q_manageRow",
3756
- "toolbar": "Tg9J7q_toolbar",
3757
- "fileInput": "Tg9J7q_fileInput"
3761
+ "modal": "Tg9J7q_modal"
3758
3762
  };
3759
3763
  //#endregion
3760
3764
  //#region src/client/KnowledgeTemplates.tsx
@@ -4740,14 +4744,14 @@ window.__ModuleLoader__.load({
4740
4744
  document.head.appendChild(tag);
4741
4745
  }
4742
4746
  var KnowledgeNewDocumentDialog_module_css_default = {
4743
- "cards": "hXsYha_cards",
4744
4747
  "iconPlate": "hXsYha_iconPlate",
4748
+ "card": "hXsYha_card",
4749
+ "modal": "hXsYha_modal",
4750
+ "cards": "hXsYha_cards",
4745
4751
  "cardText": "hXsYha_cardText",
4752
+ "dialog": "hXsYha_dialog",
4746
4753
  "cardTitle": "hXsYha_cardTitle",
4747
- "footer": "hXsYha_footer",
4748
- "modal": "hXsYha_modal",
4749
- "card": "hXsYha_card",
4750
- "dialog": "hXsYha_dialog"
4754
+ "footer": "hXsYha_footer"
4751
4755
  };
4752
4756
  //#endregion
4753
4757
  //#region src/client/KnowledgeNewDocumentDialog.tsx
@@ -4838,55 +4842,55 @@ window.__ModuleLoader__.load({
4838
4842
  document.head.appendChild(tag);
4839
4843
  }
4840
4844
  var KnowledgeCreateDialog_module_css_default = {
4841
- "fileList": "HX727W_fileList",
4842
- "fieldLabel": "HX727W_fieldLabel",
4843
- "stepLine": "HX727W_stepLine",
4844
- "uploadQueue": "HX727W_uploadQueue",
4845
- "treeName": "HX727W_treeName",
4846
- "uploadName": "HX727W_uploadName",
4847
- "step": "HX727W_step",
4848
- "visuallyHiddenInput": "HX727W_visuallyHiddenInput",
4849
- "crumbSep": "HX727W_crumbSep",
4850
- "fileRow": "HX727W_fileRow",
4851
- "dropzoneHint": "HX727W_dropzoneHint",
4845
+ "uploadSize": "HX727W_uploadSize",
4846
+ "uploadSummary": "HX727W_uploadSummary",
4852
4847
  "uploadRow": "HX727W_uploadRow",
4853
- "crumb": "HX727W_crumb",
4854
- "treeRow": "HX727W_treeRow",
4855
- "picker": "HX727W_picker",
4856
- "summary": "HX727W_summary",
4848
+ "pickerRow": "HX727W_pickerRow",
4849
+ "fieldLabel": "HX727W_fieldLabel",
4850
+ "pickerPathValue": "HX727W_pickerPathValue",
4851
+ "footer": "HX727W_footer",
4857
4852
  "treeNotice": "HX727W_treeNotice",
4858
- "dropzoneTitle": "HX727W_dropzoneTitle",
4859
- "uploadLayout": "HX727W_uploadLayout",
4853
+ "fileName": "HX727W_fileName",
4860
4854
  "treeChildren": "HX727W_treeChildren",
4861
- "fieldHint": "HX727W_fieldHint",
4862
- "pickerList": "HX727W_pickerList",
4863
- "modal": "HX727W_modal",
4864
- "dropzone": "HX727W_dropzone",
4865
- "treeMuted": "HX727W_treeMuted",
4855
+ "dropzoneHint": "HX727W_dropzoneHint",
4856
+ "fileList": "HX727W_fileList",
4857
+ "uploadLayout": "HX727W_uploadLayout",
4858
+ "fileRow": "HX727W_fileRow",
4859
+ "dropzoneTitle": "HX727W_dropzoneTitle",
4866
4860
  "crumbWrap": "HX727W_crumbWrap",
4867
- "pickerBar": "HX727W_pickerBar",
4868
- "fieldError": "HX727W_fieldError",
4869
4861
  "uploadList": "HX727W_uploadList",
4870
- "fileTarget": "HX727W_fileTarget",
4871
- "fileName": "HX727W_fileName",
4872
- "footer": "HX727W_footer",
4873
- "pickerPathLabel": "HX727W_pickerPathLabel",
4874
- "uploadSummary": "HX727W_uploadSummary",
4875
- "tree": "HX727W_tree",
4876
- "pickerPath": "HX727W_pickerPath",
4877
- "dialog": "HX727W_dialog",
4878
- "pickerPathValue": "HX727W_pickerPathValue",
4879
- "fileInput": "HX727W_fileInput",
4880
4862
  "treeToggle": "HX727W_treeToggle",
4863
+ "crumb": "HX727W_crumb",
4864
+ "fieldError": "HX727W_fieldError",
4865
+ "crumbSep": "HX727W_crumbSep",
4866
+ "removeFile": "HX727W_removeFile",
4881
4867
  "steps": "HX727W_steps",
4868
+ "dialog": "HX727W_dialog",
4869
+ "tree": "HX727W_tree",
4870
+ "pickerPath": "HX727W_pickerPath",
4871
+ "treeMuted": "HX727W_treeMuted",
4872
+ "pickerPathLabel": "HX727W_pickerPathLabel",
4873
+ "fieldHint": "HX727W_fieldHint",
4874
+ "treeRow": "HX727W_treeRow",
4875
+ "treeName": "HX727W_treeName",
4876
+ "modal": "HX727W_modal",
4877
+ "picker": "HX727W_picker",
4882
4878
  "pickerMuted": "HX727W_pickerMuted",
4883
- "removeFile": "HX727W_removeFile",
4884
- "uploadSize": "HX727W_uploadSize",
4879
+ "dropzone": "HX727W_dropzone",
4880
+ "uploadName": "HX727W_uploadName",
4881
+ "stepLine": "HX727W_stepLine",
4882
+ "uploadQueue": "HX727W_uploadQueue",
4883
+ "step": "HX727W_step",
4884
+ "visuallyHiddenInput": "HX727W_visuallyHiddenInput",
4885
+ "summary": "HX727W_summary",
4885
4886
  "field": "HX727W_field",
4886
- "pickerRow": "HX727W_pickerRow"
4887
+ "pickerList": "HX727W_pickerList",
4888
+ "pickerBar": "HX727W_pickerBar",
4889
+ "fileTarget": "HX727W_fileTarget",
4890
+ "fileInput": "HX727W_fileInput"
4887
4891
  };
4888
4892
  //#endregion
4889
- //#region ../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
4893
+ //#region ../../../DSH-better-sidebar/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
4890
4894
  function r(e) {
4891
4895
  var t, f, n = "";
4892
4896
  if ("string" == typeof e || "number" == typeof e) n += e;
@@ -5103,7 +5107,7 @@ window.__ModuleLoader__.load({
5103
5107
  })(props);
5104
5108
  }
5105
5109
  //#endregion
5106
- //#region ../../node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/desktop-env.ts
5110
+ //#region ../../../DSH-better-sidebar/src/client/desktop-env.ts
5107
5111
  /**
5108
5112
  * Absolute base for the plugin's own host transports — the HTTP routes
5109
5113
  * (`/sidebar/api/*`, `/sidebar/file`, `/sidebar/bundle/*`, …) and the
@@ -5160,7 +5164,7 @@ window.__ModuleLoader__.load({
5160
5164
  return hostTransportBase();
5161
5165
  }
5162
5166
  //#endregion
5163
- //#region ../../node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/host-route-url.ts
5167
+ //#region ../../../DSH-better-sidebar/src/client/host-route-url.ts
5164
5168
  /**
5165
5169
  * Prefix-safe resolution of the plugin's own host routes (HTTP and WebSocket).
5166
5170
  *
@@ -5227,7 +5231,7 @@ window.__ModuleLoader__.load({
5227
5231
  return url.href;
5228
5232
  }
5229
5233
  //#endregion
5230
- //#region ../../node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/paths.ts
5234
+ //#region ../../../DSH-better-sidebar/src/client/paths.ts
5231
5235
  /**
5232
5236
  * Path projection helpers shared by the explorer rows: workspace-relative
5233
5237
  * mentions and session-cwd-relative "copy relative path".
@@ -5314,7 +5318,7 @@ window.__ModuleLoader__.load({
5314
5318
  return `${base.replace(/[\\/]+$/, "")}${separator}${path}`;
5315
5319
  }
5316
5320
  //#endregion
5317
- //#region ../../node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/api.ts
5321
+ //#region ../../../DSH-better-sidebar/src/client/api.ts
5318
5322
  /** One wire failure. */
5319
5323
  var SidebarApiError = class extends Error {
5320
5324
  code;
@@ -5589,6 +5593,10 @@ window.__ModuleLoader__.load({
5589
5593
  gitCommitModel: (scope, signal) => call("git.commit-model", scopePayload(scope, {}), signal),
5590
5594
  gitBranch: (scope, worktree, signal) => call("git.branch", gitPayload(scope, worktree, {}), signal),
5591
5595
  gitCheckout: (scope, branch, worktree) => call("git.checkout", gitPayload(scope, worktree, { branch })),
5596
+ /** Read-only topological history; stale cursors require a fresh first page. */
5597
+ gitGraph: (scope, options = {}, worktree, signal) => call("git.graph", gitPayload(scope, worktree, { ...options }), signal),
5598
+ /** 图形界面超过分支上限时读取经状态指纹校验的分页历史。 */
5599
+ gitHistory: (scope, options = {}, worktree, signal) => call("git.history", gitPayload(scope, worktree, options), signal),
5592
5600
  /** Recent commit history, lazily pageable (skip/count; defaults 0/30). */
5593
5601
  gitLog: (scope, count, skip, worktree, signal) => call("git.log", gitPayload(scope, worktree, {
5594
5602
  ...count !== void 0 ? { count } : {},
@@ -5616,11 +5624,14 @@ window.__ModuleLoader__.load({
5616
5624
  startLine,
5617
5625
  endLine
5618
5626
  }), signal),
5619
- /** The session's file-tool events for the changes tab's session lens: the
5620
- * `tool/call` + `tool/result` rows past `afterSeq` (0 = whole window),
5621
- * capped to the recent window host-side. The client runtime exposes no
5622
- * event-log face, so the lens polls this delta route. */
5623
- changesOps: (scope, afterSeq, signal) => call("changes.ops", scopePayload(scope, { ...afterSeq !== void 0 && afterSeq > 0 ? { afterSeq } : {} }), signal),
5627
+ /** The session's file-tool events past `afterSeq` (absent = whole window,
5628
+ * floored at -1 host-side so a log opening on seq 0 is not dropped). With
5629
+ * `wait` the host parks the request until the next tool event (or 25 s)
5630
+ * instead of re-reading an unchanged window. */
5631
+ changesOps: (scope, afterSeq, signal, wait = false) => call("changes.ops", scopePayload(scope, {
5632
+ ...afterSeq !== void 0 ? { afterSeq } : {},
5633
+ ...wait ? { wait: true } : {}
5634
+ }), signal),
5624
5635
  /** Discard the worktree changes of one file (the index is untouched). */
5625
5636
  gitDiscard: (scope, path, worktree) => call("git.discard", gitPayload(scope, worktree, { path })),
5626
5637
  /** Revert one commit onto the current branch. */
@@ -5829,10 +5840,15 @@ window.__ModuleLoader__.load({
5829
5840
  return [...targets];
5830
5841
  }
5831
5842
  //#endregion
5832
- //#region ../../node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/file-tree-sort.ts
5833
- /** The default choice — byte-for-byte the order the host listing arrives in. */
5843
+ //#region ../../../DSH-better-sidebar/src/client/file-tree-sort.ts
5844
+ /**
5845
+ * The default choice: most recently modified first.
5846
+ *
5847
+ * NOT the order the host listing arrives in (that is `name`). The change is deliberate:
5848
+ * a reader opening a folder is usually looking for what they were just working on.
5849
+ */
5834
5850
  const DEFAULT_FILE_TREE_SORT = {
5835
- key: "name",
5851
+ key: "mtime",
5836
5852
  dirsFirst: true
5837
5853
  };
5838
5854
  /**
@@ -5869,7 +5885,19 @@ window.__ModuleLoader__.load({
5869
5885
  function sortEntries(entries, sort) {
5870
5886
  return [...entries].sort((a, b) => {
5871
5887
  if (sort.dirsFirst && a.isDir !== b.isDir) return a.isDir ? -1 : 1;
5872
- if (sort.key === "type") {
5888
+ if (sort.key === "mtime") {
5889
+ const ma = a.mtimeMs;
5890
+ const mb = b.mtimeMs;
5891
+ if (ma !== void 0 && mb !== void 0 && ma !== mb) return mb - ma;
5892
+ if (ma === void 0 && mb !== void 0) return 1;
5893
+ if (ma !== void 0 && mb === void 0) return -1;
5894
+ } else if (sort.key === "size") {
5895
+ const sa = a.size;
5896
+ const sb = b.size;
5897
+ if (sa !== void 0 && sb !== void 0 && sa !== sb) return sb - sa;
5898
+ if (sa === void 0 && sb !== void 0) return 1;
5899
+ if (sa !== void 0 && sb === void 0) return -1;
5900
+ } else if (sort.key === "type") {
5873
5901
  const ta = typeOf(a.name, a.isDir);
5874
5902
  const tb = typeOf(b.name, b.isDir);
5875
5903
  if (ta !== tb) return ta < tb ? -1 : 1;
@@ -5878,7 +5906,61 @@ window.__ModuleLoader__.load({
5878
5906
  });
5879
5907
  }
5880
5908
  //#endregion
5881
- //#region ../../node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/file-icons.tsx
5909
+ //#region ../../../DSH-better-sidebar/src/client/listing-filter.ts
5910
+ /**
5911
+ * Whether a name matches the reader's term.
5912
+ *
5913
+ * Substring, case-insensitive, on the NAME only: this is the tree's in-place narrowing,
5914
+ * and reading file bodies is what the cross-directory search is for.
5915
+ * @param name - the row's base name.
5916
+ * @param needle - the term, already trimmed and lower-cased by {@link normaliseNeedle}.
5917
+ * @returns Whether the row itself matches.
5918
+ */
5919
+ function nameMatches$1(name, needle) {
5920
+ if (needle === "") return true;
5921
+ return name.toLowerCase().includes(needle.toLowerCase());
5922
+ }
5923
+ /**
5924
+ * Prepare the reader's raw input for matching.
5925
+ *
5926
+ * Trimmed because a trailing space is invisible and would otherwise make every term match
5927
+ * nothing; lower-cased once here rather than once per row.
5928
+ * @param raw - what the field holds.
5929
+ * @returns The term to compare against.
5930
+ */
5931
+ function normaliseNeedle$1(raw) {
5932
+ return raw.trim().toLowerCase();
5933
+ }
5934
+ /**
5935
+ * Narrow one level, recursively, keeping every hit reachable.
5936
+ *
5937
+ * A directory is kept when it matches, when anything under it matches, or when an ANCESTOR
5938
+ * matched — the last case is what makes typing a folder name show the folder's contents
5939
+ * instead of an empty row. A deeply nested hit therefore drags its whole chain with it,
5940
+ * which is the only way a file inside a collapsed folder can be seen.
5941
+ * @param rows - this level's rows, in display order.
5942
+ * @param children - child rows by the parent's `relPath`; absent means "not loaded".
5943
+ * @param needle - the term, already normalised.
5944
+ * @param withinMatch - whether an ancestor already matched the term.
5945
+ * @returns The rows to draw at this level.
5946
+ */
5947
+ function filterLevel$1(rows, childrenOf, needle, withinMatch = false) {
5948
+ if (needle === "") return [...rows];
5949
+ const kept = [];
5950
+ for (const entry of rows) {
5951
+ const selfMatch = nameMatches$1(entry.name, needle);
5952
+ if (entry.isDir) {
5953
+ const kids = childrenOf(entry);
5954
+ const kidMatch = kids === void 0 ? false : filterLevel$1(kids, childrenOf, needle, selfMatch).length > 0;
5955
+ if (selfMatch || kidMatch || withinMatch) kept.push(entry);
5956
+ continue;
5957
+ }
5958
+ if (selfMatch || withinMatch) kept.push(entry);
5959
+ }
5960
+ return kept;
5961
+ }
5962
+ //#endregion
5963
+ //#region ../../../DSH-better-sidebar/src/client/file-icons.tsx
5882
5964
  /**
5883
5965
  * A file row: the host's own classifier and artwork for any path. Unknown
5884
5966
  * extensions land on the generic document glyph, exactly like the host's
@@ -5913,7 +5995,7 @@ window.__ModuleLoader__.load({
5913
5995
  });
5914
5996
  }
5915
5997
  //#endregion
5916
- //#region ../../node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/icons.tsx
5998
+ //#region ../../../DSH-better-sidebar/src/client/icons.tsx
5917
5999
  /**
5918
6000
  * Icons the sidebar needs beyond the primitives set: a terminal glyph (the
5919
6001
  * icon library has none), a diff glyph, and the bottom-workbench toggle.
@@ -5960,7 +6042,7 @@ window.__ModuleLoader__.load({
5960
6042
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M23.15 2.587L18.21.21a1.494 1.494 0 0 0-1.705.29l-9.46 8.63-4.12-3.128a.999.999 0 0 0-1.276.057L.327 7.261A1 1 0 0 0 .326 8.74L3.899 12 .326 15.26a1 1 0 0 0 .001 1.479L1.65 17.94a.999.999 0 0 0 1.276.057l4.12-3.128 9.46 8.63a1.492 1.492 0 0 0 1.704.29l4.942-2.377A1.5 1.5 0 0 0 24 20.06V3.939a1.5 1.5 0 0 0-.85-1.352zm-5.146 14.861L10.826 12l7.178-5.448v10.896z" })
5961
6043
  });
5962
6044
  //#endregion
5963
- //#region ../../node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/ime-guard.ts
6045
+ //#region ../../../DSH-better-sidebar/src/client/ime-guard.ts
5964
6046
  /** The CONSERVATIVE decision, for non-intercepting callers where misreading a
5965
6047
  * composition key costs more than ignoring an ordinary one: a bare 229 counts
5966
6048
  * even outside a composition window. Pure — reads no module state, so it
@@ -5969,7 +6051,7 @@ window.__ModuleLoader__.load({
5969
6051
  return event.isComposing === true || event.keyCode === 229;
5970
6052
  }
5971
6053
  //#endregion
5972
- //#region ../../node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/menu-flip.ts
6054
+ //#region ../../../DSH-better-sidebar/src/client/menu-flip.ts
5973
6055
  /**
5974
6056
  * Submenu flip geometry for the portaled context menus.
5975
6057
  *
@@ -6034,7 +6116,7 @@ window.__ModuleLoader__.load({
6034
6116
  }, [menu]);
6035
6117
  }
6036
6118
  //#endregion
6037
- //#region ../../node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/locales.ts
6119
+ //#region ../../../DSH-better-sidebar/src/client/locales.ts
6038
6120
  /**
6039
6121
  * Minimal zh/en/ja copy for the sidebar. The copy follows the DSH i18n system:
6040
6122
  * the client apply attaches the locale service (`ctx.locale`, provided by
@@ -6072,8 +6154,6 @@ window.__ModuleLoader__.load({
6072
6154
  changesMdRaw: "原文",
6073
6155
  changesHtmlRender: "渲染",
6074
6156
  changesHtmlRaw: "原文",
6075
- changesPdfRender: "渲染",
6076
- changesPdfRaw: "原文",
6077
6157
  changesWrite: "写入",
6078
6158
  changesEdit: "编辑",
6079
6159
  changesRunning: "执行中",
@@ -6140,6 +6220,7 @@ window.__ModuleLoader__.load({
6140
6220
  openInAppEmpty: "没有可用于打开它的应用",
6141
6221
  openInAppFailed: "无法打开:{path}",
6142
6222
  revealInFileManager: "在文件管理器中显示",
6223
+ openContainingFolder: "打开所在文件夹",
6143
6224
  filesSelected: "已选择 {count} 项",
6144
6225
  clearSelection: "取消选择",
6145
6226
  copyPaths: "复制路径",
@@ -6165,7 +6246,6 @@ window.__ModuleLoader__.load({
6165
6246
  gitStatusRenamed: "已重命名",
6166
6247
  gitStatusConflict: "有冲突",
6167
6248
  changesClean: "工作区没有变更",
6168
- changesNoHistory: "还没有提交历史",
6169
6249
  changesNewFile: "新文件",
6170
6250
  changesStageFailed: "暂存失败:{message}",
6171
6251
  changesOpGone: "该操作已不在会话记录中",
@@ -6246,6 +6326,7 @@ window.__ModuleLoader__.load({
6246
6326
  searchGo: "跳转",
6247
6327
  binary: "二进制文件,无法预览",
6248
6328
  loading: "加载中…",
6329
+ filterNoMatch: "没有匹配的文件",
6249
6330
  error: "加载失败",
6250
6331
  retry: "重试",
6251
6332
  notRepo: "当前目录不是 git 仓库",
@@ -6254,7 +6335,18 @@ window.__ModuleLoader__.load({
6254
6335
  unstage: "取消暂存",
6255
6336
  stageAll: "全部暂存",
6256
6337
  unstageAll: "全部取消暂存",
6257
- commitPlaceholder: "提交信息 (Ctrl+G 生成,Ctrl+Enter 提交)",
6338
+ gitChanges: "更改",
6339
+ gitGraph: "提交图",
6340
+ gitMergeChanges: "合并更改",
6341
+ gitStagedChanges: "暂存的更改",
6342
+ gitMoreActions: "更多操作",
6343
+ gitRepository: "仓库",
6344
+ gitDetached: "游离 HEAD",
6345
+ gitBranchesUnavailable: "没有可用分支",
6346
+ gitNoUpstream: "未设置上游",
6347
+ gitSyncUnavailable: "同步不可用",
6348
+ gitSync: "同步更改",
6349
+ commitPlaceholder: "Message ({shortcut} to commit on \"{branch}\")",
6258
6350
  commit: "提交",
6259
6351
  generateCommitMessage: "生成提交信息",
6260
6352
  generateCommitMessageWith: "生成提交信息(使用 {model})",
@@ -6280,12 +6372,26 @@ window.__ModuleLoader__.load({
6280
6372
  worktree: "工作树",
6281
6373
  checkoutError: "切换分支失败",
6282
6374
  history: "历史",
6283
- changes: "文件变动",
6375
+ changes: "Git",
6284
6376
  changesGitLens: "Git",
6377
+ graphAllBranches: "所有分支",
6378
+ graphBranchFilter: "分支筛选",
6379
+ graphEmpty: "暂无提交",
6380
+ graphLoadError: "加载提交历史失败",
6381
+ graphLinearFallback: "分支过多,当前显示线性历史列表(不表示分支拓扑)",
6382
+ graphStale: "提交历史已变化,请刷新",
6383
+ graphDetails: "提交详情",
6384
+ graphParents: "父提交",
6385
+ graphLoadMore: "加载更多",
6285
6386
  changesSessionLens: "本轮文件",
6286
6387
  changesFilterAll: "全部",
6287
6388
  changesFilterEmpty: "没有此类操作",
6288
6389
  changesOpenDiffTab: "在独立页签中打开",
6390
+ changesDiffTab: "差异",
6391
+ changesContentTab: "内容",
6392
+ changesNoCommit: "未选择提交",
6393
+ changesNoContent: "此视图暂无内容",
6394
+ changesReadNoDiff: "读取没有差异",
6289
6395
  changesClosePreview: "关闭预览",
6290
6396
  changesResizePreview: "调整预览高度",
6291
6397
  changesLoadError: "会话文件记录暂不可用",
@@ -6317,7 +6423,6 @@ window.__ModuleLoader__.load({
6317
6423
  timeHoursAgo: "{n} 小时前",
6318
6424
  timeYesterday: "昨天",
6319
6425
  loadMore: "加载更多",
6320
- historyLoadError: "加载更多历史失败",
6321
6426
  produced: "本次产出",
6322
6427
  showInFolder: "在文件夹中显示",
6323
6428
  disconnected: "终端连接断开,重连中…",
@@ -6369,6 +6474,14 @@ window.__ModuleLoader__.load({
6369
6474
  settingsSubagentDesc: "当前会话产生新的子代理时,在侧边栏创建任务管理页并标记未读红点;若侧边栏正展开在其他页面则不抢焦点,点红点即可前往;宽屏同时展开侧边栏,窄屏不强制展开全屏抽屉;关闭后不再自动创建",
6370
6475
  settingsJobsTitle: "有新后台任务时自动激活任务管理页",
6371
6476
  settingsJobsDesc: "当前会话出现新的后台任务时,在侧边栏创建任务管理页并标记未读红点(每个新任务都会触发);若侧边栏正展开在其他页面则不抢焦点,点红点即可前往;宽屏同时展开侧边栏,窄屏不强制展开全屏抽屉;关闭后不再自动创建",
6477
+ settingsTasksAutoFoldSettledTitle: "自动折叠已结束叶子任务",
6478
+ settingsTasksAutoFoldSettledDesc: "自动折叠已完成、失败或停止且没有子代理的叶子任务;默认开启",
6479
+ settingsTasksAutoFoldBranchesTitle: "仅自动折叠完全结束的分支",
6480
+ settingsTasksAutoFoldBranchesDesc: "仅当整条分支全部结束才自动折叠;含有运行中后代的分支绝不折叠;默认开启",
6481
+ settingsTasksAutoFoldIdleTitle: "自动折叠空闲成员",
6482
+ settingsTasksAutoFoldIdleDesc: "空闲成员达到 3 个或以上时自动折叠;默认开启",
6483
+ settingsJobsAutoCollapseTitle: "自动收起后台任务抽屉",
6484
+ settingsJobsAutoCollapseDesc: "代理总数达到 8 个或以上时自动收起后台任务抽屉;手动开关仍然可用;默认开启",
6372
6485
  settingsToolsTitle: "为模型注入终端工具",
6373
6486
  settingsToolsDesc: "开启后,模型可通过 terminal_create 等 8 个工具创建并操作侧边栏终端(默认关闭)",
6374
6487
  settingsBottomTerminalTitle: "底部面板首次展开自动开终端",
@@ -6467,6 +6580,8 @@ window.__ModuleLoader__.load({
6467
6580
  sideChatCancelTitle: "中止当前回合(保留队列)",
6468
6581
  sideChatError: "侧边对话出错:{message}",
6469
6582
  sideChatTurnUsage: "输入 {input} tok · 输出 {output} tok",
6583
+ sideChatDeliverables: "交付文件",
6584
+ sideChatDeliverableOpen: "打开 {name}",
6470
6585
  sideChatBlockCollapse: "收起",
6471
6586
  sideChatBlockCollapseAria: "收起",
6472
6587
  sideChatBlockExpand: "展开 {hidden} 行",
@@ -6478,6 +6593,7 @@ window.__ModuleLoader__.load({
6478
6593
  sideChatBlockFailed: "失败",
6479
6594
  sideChatBlockDone: "完成",
6480
6595
  sideChatBlockNoOutput: "(无输出)",
6596
+ sideChatBlockCommandLine: "命令第 {line} 行",
6481
6597
  codeBlockTitle: "代码块",
6482
6598
  codeBlockWrap: "自动换行",
6483
6599
  codeBlockUnwrap: "取消自动换行",
@@ -6592,6 +6708,14 @@ window.__ModuleLoader__.load({
6592
6708
  workflowPhaseUnnamed: "未命名阶段",
6593
6709
  workflowMembers: "{done}/{total} 成员",
6594
6710
  jobsAutoCollapsed: "代理较多,已自动折叠",
6711
+ contextDiagnostics: "上下文诊断",
6712
+ contextDiagnosticsTarget: "当前会话",
6713
+ contextDiagnosticsFailed: "无法打开「{label}」的上下文诊断",
6714
+ contextDiagnosticsUnavailable: "dsh-context 的「上下文」页面不可用(未安装或未注册)",
6715
+ contextDiagnosticsNavigation: "无法定位到该会话",
6716
+ contextDiagnosticsTimeout: "打开超时,请重试",
6717
+ contextDiagnosticsOpenFailed: "页面打开失败",
6718
+ contextDiagnosticsDismiss: "关闭提示",
6595
6719
  catalogLoadFailed: "{count} 个分支加载失败",
6596
6720
  addPluginsTabCard: "添加 Tab 插件",
6597
6721
  addPluginsTabCardDesc: "注册新的侧边栏页面",
@@ -6673,8 +6797,6 @@ window.__ModuleLoader__.load({
6673
6797
  changesMdRaw: "Raw",
6674
6798
  changesHtmlRender: "Render",
6675
6799
  changesHtmlRaw: "Raw",
6676
- changesPdfRender: "Render",
6677
- changesPdfRaw: "Raw",
6678
6800
  changesWrite: "Write",
6679
6801
  changesEdit: "Edit",
6680
6802
  changesRunning: "running",
@@ -6741,6 +6863,7 @@ window.__ModuleLoader__.load({
6741
6863
  openInAppEmpty: "No application can open it",
6742
6864
  openInAppFailed: "Could not open: {path}",
6743
6865
  revealInFileManager: "Reveal in File Manager",
6866
+ openContainingFolder: "Open Containing Folder",
6744
6867
  filesSelected: "{count} selected",
6745
6868
  clearSelection: "Clear selection",
6746
6869
  copyPaths: "Copy paths",
@@ -6766,7 +6889,6 @@ window.__ModuleLoader__.load({
6766
6889
  gitStatusRenamed: "Renamed",
6767
6890
  gitStatusConflict: "Conflicted",
6768
6891
  changesClean: "No changes in the working tree",
6769
- changesNoHistory: "No commits yet",
6770
6892
  changesNewFile: "New file",
6771
6893
  changesStageFailed: "Staging failed: {message}",
6772
6894
  changesOpGone: "This operation is no longer in the session log",
@@ -6847,6 +6969,7 @@ window.__ModuleLoader__.load({
6847
6969
  searchGo: "go",
6848
6970
  binary: "Binary file, preview unavailable",
6849
6971
  loading: "Loading…",
6972
+ filterNoMatch: "No matching files",
6850
6973
  error: "Failed to load",
6851
6974
  retry: "Retry",
6852
6975
  notRepo: "This directory is not a git repository",
@@ -6855,7 +6978,18 @@ window.__ModuleLoader__.load({
6855
6978
  unstage: "Unstage",
6856
6979
  stageAll: "Stage all",
6857
6980
  unstageAll: "Unstage all",
6858
- commitPlaceholder: "Commit message (Ctrl+G generate, Ctrl+Enter commit)",
6981
+ gitChanges: "Changes",
6982
+ gitGraph: "Graph",
6983
+ gitMergeChanges: "Merge Changes",
6984
+ gitStagedChanges: "Staged Changes",
6985
+ gitMoreActions: "More Actions",
6986
+ gitRepository: "Repository",
6987
+ gitDetached: "Detached HEAD",
6988
+ gitBranchesUnavailable: "No branches available",
6989
+ gitNoUpstream: "No upstream",
6990
+ gitSyncUnavailable: "Sync unavailable",
6991
+ gitSync: "Sync Changes",
6992
+ commitPlaceholder: "Message ({shortcut} to commit on \"{branch}\")",
6859
6993
  commit: "Commit",
6860
6994
  generateCommitMessage: "Generate commit message",
6861
6995
  generateCommitMessageWith: "Generate commit message (using {model})",
@@ -6881,12 +7015,26 @@ window.__ModuleLoader__.load({
6881
7015
  worktree: "Worktree",
6882
7016
  checkoutError: "Branch switch failed",
6883
7017
  history: "History",
6884
- changes: "Changes",
7018
+ changes: "Git",
6885
7019
  changesGitLens: "Git",
7020
+ graphAllBranches: "All branches",
7021
+ graphBranchFilter: "Branch filter",
7022
+ graphEmpty: "No commits",
7023
+ graphLoadError: "Failed to load commit history",
7024
+ graphLinearFallback: "Too many branches; showing a linear history list (not branch topology)",
7025
+ graphStale: "History has changed. Refresh to continue.",
7026
+ graphDetails: "Commit details",
7027
+ graphParents: "Parents",
7028
+ graphLoadMore: "Load more",
6886
7029
  changesSessionLens: "Session",
6887
7030
  changesFilterAll: "All",
6888
7031
  changesFilterEmpty: "No operations of this kind",
6889
7032
  changesOpenDiffTab: "Open in a diff tab",
7033
+ changesDiffTab: "Diff",
7034
+ changesContentTab: "Content",
7035
+ changesNoCommit: "No commit selected",
7036
+ changesNoContent: "Nothing to show here",
7037
+ changesReadNoDiff: "A read has no diff",
6890
7038
  changesClosePreview: "Close preview",
6891
7039
  changesResizePreview: "Resize preview",
6892
7040
  changesLoadError: "Session file records are unavailable right now",
@@ -6918,7 +7066,6 @@ window.__ModuleLoader__.load({
6918
7066
  timeHoursAgo: "{n} h ago",
6919
7067
  timeYesterday: "yesterday",
6920
7068
  loadMore: "Load more",
6921
- historyLoadError: "Failed to load more history",
6922
7069
  produced: "Produced",
6923
7070
  showInFolder: "Show in folder",
6924
7071
  disconnected: "Terminal disconnected, reconnecting…",
@@ -6970,6 +7117,14 @@ window.__ModuleLoader__.load({
6970
7117
  settingsSubagentDesc: "When the current conversation spawns a new subagent, create the Tasks page in the side card and mark it with an unread dot; a side card already expanded on another page is left alone instead of being taken over — click the dot to go there; wide viewports also expand the side card, while narrow full-screen drawers are not forced open; turn off to stop creating it automatically",
6971
7118
  settingsJobsTitle: "Auto-activate the Tasks page on a new background job",
6972
7119
  settingsJobsDesc: "Whenever a new background job appears for the current conversation, create the Tasks page in the side card and mark it with an unread dot (every new job triggers); a side card already expanded on another page is left alone instead of being taken over — click the dot to go there; wide viewports also expand the side card, while narrow full-screen drawers are not forced open; turn off to stop creating it automatically",
7120
+ settingsTasksAutoFoldSettledTitle: "Auto-fold settled leaf tasks",
7121
+ settingsTasksAutoFoldSettledDesc: "Automatically fold leaf tasks that have completed, failed, or stopped and have no child agents; on by default",
7122
+ settingsTasksAutoFoldBranchesTitle: "Auto-fold fully finished branches only",
7123
+ settingsTasksAutoFoldBranchesDesc: "Automatically fold a branch only once the whole branch has finished; a branch with any running descendant is never folded; on by default",
7124
+ settingsTasksAutoFoldIdleTitle: "Auto-fold idle teammates",
7125
+ settingsTasksAutoFoldIdleDesc: "Automatically fold idle teammates once 3 or more are waiting for new instructions; on by default",
7126
+ settingsJobsAutoCollapseTitle: "Auto-collapse the background jobs drawer",
7127
+ settingsJobsAutoCollapseDesc: "Automatically collapse the background jobs drawer when there are 8 or more agents in total; the manual toggle still works; on by default",
6973
7128
  settingsToolsTitle: "Inject terminal tools for the model",
6974
7129
  settingsToolsDesc: "When enabled, the model can create and drive sidebar terminals through the 8 terminal_* tools (off by default)",
6975
7130
  settingsBottomTerminalTitle: "Auto-open a terminal on the bottom panel's first expansion",
@@ -7068,6 +7223,8 @@ window.__ModuleLoader__.load({
7068
7223
  sideChatCancelTitle: "Abort the running turn (queued work is kept)",
7069
7224
  sideChatError: "Side Chat error: {message}",
7070
7225
  sideChatTurnUsage: "Input {input} tok · Output {output} tok",
7226
+ sideChatDeliverables: "Present files",
7227
+ sideChatDeliverableOpen: "Open {name}",
7071
7228
  sideChatBlockCollapse: "Collapse",
7072
7229
  sideChatBlockCollapseAria: "Collapse",
7073
7230
  sideChatBlockExpand: "Expand {hidden} lines",
@@ -7079,6 +7236,7 @@ window.__ModuleLoader__.load({
7079
7236
  sideChatBlockFailed: "Failed",
7080
7237
  sideChatBlockDone: "Done",
7081
7238
  sideChatBlockNoOutput: "(no output)",
7239
+ sideChatBlockCommandLine: "Command line {line}",
7082
7240
  codeBlockTitle: "Code block",
7083
7241
  codeBlockWrap: "Wrap lines",
7084
7242
  codeBlockUnwrap: "Do not wrap lines",
@@ -7193,6 +7351,14 @@ window.__ModuleLoader__.load({
7193
7351
  workflowPhaseUnnamed: "Unnamed phase",
7194
7352
  workflowMembers: "{done}/{total} members",
7195
7353
  jobsAutoCollapsed: "Auto-collapsed (many agents)",
7354
+ contextDiagnostics: "Context diagnostics",
7355
+ contextDiagnosticsTarget: "Current session",
7356
+ contextDiagnosticsFailed: "Could not open Context diagnostics for \"{label}\"",
7357
+ contextDiagnosticsUnavailable: "The dsh-context \"Context\" page is unavailable (not installed or not registered)",
7358
+ contextDiagnosticsNavigation: "Could not locate that conversation",
7359
+ contextDiagnosticsTimeout: "Opening timed out — try again",
7360
+ contextDiagnosticsOpenFailed: "The page could not be opened",
7361
+ contextDiagnosticsDismiss: "Dismiss",
7196
7362
  catalogLoadFailed: "{count} branches failed to load",
7197
7363
  addPluginsTabCard: "Add tab plugins",
7198
7364
  addPluginsTabCardDesc: "Register a new sidebar page",
@@ -7275,8 +7441,8 @@ window.__ModuleLoader__.load({
7275
7441
  return text;
7276
7442
  }
7277
7443
  //#endregion
7278
- //#region \0dsh-css:/root/projects/dsh-plugins-plus/node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/ui/kit.module.css.mjs
7279
- const css$9 = ".vrg_HW_iconButton{box-sizing:border-box;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:3px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.vrg_HW_iconButtonMd{width:28px;height:28px}.vrg_HW_iconButtonSm{border-radius:3px;width:24px;height:24px}.vrg_HW_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.vrg_HW_iconButton:focus-visible{outline:2px solid var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-1px}.vrg_HW_iconButton:disabled{opacity:.4;cursor:default}.vrg_HW_iconButtonActive{color:var(--dsw-alias-state-business-primary)}.vrg_HW_iconButtonDanger{color:var(--dsw-alias-state-error-primary)}.vrg_HW_chip{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);height:22px;color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxxs-11);white-space:nowrap;cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:4px;padding:0 8px;display:inline-flex}.vrg_HW_chip:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.vrg_HW_chip:disabled{opacity:.4;cursor:default}.vrg_HW_chipActive,.vrg_HW_chipActive:hover{background:var(--dsw-alias-interactive-bg-hover-accent);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-alias-label-primary)}.vrg_HW_chipLabel{text-overflow:ellipsis;min-width:0;overflow:hidden}.vrg_HW_chipCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums}.vrg_HW_chipActive .vrg_HW_chipCount{color:var(--dsw-alias-label-secondary)}.vrg_HW_sectionHeader{box-sizing:border-box;border-bottom:1px solid var(--dsw-alias-border-l1);width:100%;height:28px;font:var(--dsw-font-xxs-strong-12);color:var(--dsw-alias-label-secondary);align-items:center;gap:6px;padding:0 12px;display:flex}.vrg_HW_sectionLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.vrg_HW_sectionCount{font:var(--dsw-font-xxxs-11);font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-tertiary);flex:none}.vrg_HW_sectionAction{flex:none;align-items:center;margin-left:auto;display:inline-flex}.vrg_HW_notice{box-sizing:border-box;font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary);white-space:pre-wrap}.vrg_HW_noticeWell{padding:4px 12px 8px}.vrg_HW_noticePage{text-align:center;padding:16px}.vrg_HW_noticeInline{padding:0;font-size:10px;line-height:1.45}.vrg_HW_noticeError{color:var(--dsw-alias-state-error-primary)}.vrg_HW_noticeWarn{color:var(--dsw-alias-state-warn-primary)}.vrg_HW_noticeHint{color:var(--dsw-alias-label-tertiary)}.vrg_HW_confirmDesc{font:var(--dsw-font-s-14);color:var(--dsw-alias-label-primary);margin:0}.vrg_HW_confirmDesc[data-danger=true]{color:var(--dsw-alias-label-primary)}.vrg_HW_statusBadge{font:var(--dsw-font-xxxs-strong-11);font-family:var(--ds-font-family-code,monospace);color:var(--dsw-alias-label-secondary);border-radius:2px;flex:none;padding:0 4px}.vrg_HW_statusBadge[data-tone=modified]{color:var(--dsw-alias-state-warn-primary)}.vrg_HW_statusBadge[data-tone=added],.vrg_HW_statusBadge[data-tone=untracked]{color:var(--dsw-alias-state-success-primary)}.vrg_HW_statusBadge[data-tone=deleted]{color:var(--dsw-alias-state-error-primary)}.vrg_HW_statusBadge[data-tone=renamed]{color:var(--dsw-alias-state-business-primary)}.vrg_HW_statusBadge[data-tone=conflict]{color:var(--dsw-alias-state-error-primary)}.vrg_HW_statusBadge[data-tone=read]{color:var(--dsw-alias-state-success-primary)}.vrg_HW_statusBadge[data-tone=write]{color:var(--dsw-alias-state-business-primary)}.vrg_HW_statusBadge[data-tone=edit]{color:var(--dsw-alias-state-warn-primary)}.vrg_HW_statusBadge[data-tone=neutral]{color:var(--dsw-alias-label-tertiary)}";
7444
+ //#region \0dsh-css:/root/projects/DSH-better-sidebar/src/client/ui/kit.module.css.mjs
7445
+ const css$9 = ".lvzz-W_iconButton{box-sizing:border-box;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:3px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.lvzz-W_iconButtonMd{width:28px;height:28px}.lvzz-W_iconButtonSm{border-radius:3px;width:24px;height:24px}.lvzz-W_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.lvzz-W_iconButton:focus-visible{outline:2px solid var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-1px}.lvzz-W_iconButton:disabled{opacity:.4;cursor:default}.lvzz-W_iconButtonActive{color:var(--dsw-alias-state-business-primary)}.lvzz-W_iconButtonDanger{color:var(--dsw-alias-state-error-primary)}.lvzz-W_chip{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);height:22px;color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxxs-11);white-space:nowrap;cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:4px;padding:0 8px;display:inline-flex}.lvzz-W_chip:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.lvzz-W_chip:disabled{opacity:.4;cursor:default}.lvzz-W_chipActive,.lvzz-W_chipActive:hover{background:var(--dsw-alias-interactive-bg-hover-accent);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-alias-label-primary)}.lvzz-W_chipLabel{text-overflow:ellipsis;min-width:0;overflow:hidden}.lvzz-W_chipCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums}.lvzz-W_chipActive .lvzz-W_chipCount{color:var(--dsw-alias-label-secondary)}.lvzz-W_sectionHeader{box-sizing:border-box;border-bottom:1px solid var(--dsw-alias-border-l1);width:100%;height:28px;font:var(--dsw-font-xxs-strong-12);color:var(--dsw-alias-label-secondary);align-items:center;gap:6px;padding:0 12px;display:flex}.lvzz-W_sectionLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.lvzz-W_sectionCount{font:var(--dsw-font-xxxs-11);font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-tertiary);flex:none}.lvzz-W_sectionAction{flex:none;align-items:center;margin-left:auto;display:inline-flex}.lvzz-W_notice{box-sizing:border-box;font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary);white-space:pre-wrap}.lvzz-W_noticeWell{padding:4px 12px 8px}.lvzz-W_noticePage{text-align:center;padding:16px}.lvzz-W_noticeInline{padding:0;font-size:10px;line-height:1.45}.lvzz-W_noticeError{color:var(--dsw-alias-state-error-primary)}.lvzz-W_noticeWarn{color:var(--dsw-alias-state-warn-primary)}.lvzz-W_noticeHint{color:var(--dsw-alias-label-tertiary)}.lvzz-W_confirmDesc{font:var(--dsw-font-s-14);color:var(--dsw-alias-label-primary);margin:0}.lvzz-W_confirmDesc[data-danger=true]{color:var(--dsw-alias-label-primary)}.lvzz-W_statusBadge{font:var(--dsw-font-xxxs-strong-11);font-family:var(--ds-font-family-code,monospace);color:var(--dsw-alias-label-secondary);border-radius:2px;flex:none;padding:0 4px}.lvzz-W_statusBadge[data-tone=modified]{color:var(--dsw-alias-state-warn-primary)}.lvzz-W_statusBadge[data-tone=added],.lvzz-W_statusBadge[data-tone=untracked]{color:var(--dsw-alias-state-success-primary)}.lvzz-W_statusBadge[data-tone=deleted]{color:var(--dsw-alias-state-error-primary)}.lvzz-W_statusBadge[data-tone=renamed]{color:var(--dsw-alias-state-business-primary)}.lvzz-W_statusBadge[data-tone=conflict]{color:var(--dsw-alias-state-error-primary)}.lvzz-W_statusBadge[data-tone=read]{color:var(--dsw-alias-state-success-primary)}.lvzz-W_statusBadge[data-tone=write]{color:var(--dsw-alias-state-business-primary)}.lvzz-W_statusBadge[data-tone=edit]{color:var(--dsw-alias-state-warn-primary)}.lvzz-W_statusBadge[data-tone=neutral]{color:var(--dsw-alias-label-tertiary)}";
7280
7446
  const tagId$9 = "@sparkelf/dsh-knowledge-base/kit.module.css";
7281
7447
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$9) + "]") === null) {
7282
7448
  const tag = document.createElement("style");
@@ -7286,31 +7452,31 @@ window.__ModuleLoader__.load({
7286
7452
  document.head.appendChild(tag);
7287
7453
  }
7288
7454
  var kit_module_css_default = {
7289
- "notice": "vrg_HW_notice",
7290
- "noticeWarn": "vrg_HW_noticeWarn",
7291
- "iconButtonActive": "vrg_HW_iconButtonActive",
7292
- "iconButton": "vrg_HW_iconButton",
7293
- "iconButtonSm": "vrg_HW_iconButtonSm",
7294
- "sectionLabel": "vrg_HW_sectionLabel",
7295
- "chip": "vrg_HW_chip",
7296
- "chipActive": "vrg_HW_chipActive",
7297
- "noticeWell": "vrg_HW_noticeWell",
7298
- "sectionHeader": "vrg_HW_sectionHeader",
7299
- "noticeInline": "vrg_HW_noticeInline",
7300
- "iconButtonDanger": "vrg_HW_iconButtonDanger",
7301
- "chipLabel": "vrg_HW_chipLabel",
7302
- "confirmDesc": "vrg_HW_confirmDesc",
7303
- "statusBadge": "vrg_HW_statusBadge",
7304
- "iconButtonMd": "vrg_HW_iconButtonMd",
7305
- "sectionCount": "vrg_HW_sectionCount",
7306
- "chipCount": "vrg_HW_chipCount",
7307
- "noticeError": "vrg_HW_noticeError",
7308
- "noticeHint": "vrg_HW_noticeHint",
7309
- "noticePage": "vrg_HW_noticePage",
7310
- "sectionAction": "vrg_HW_sectionAction"
7455
+ "statusBadge": "lvzz-W_statusBadge",
7456
+ "iconButtonDanger": "lvzz-W_iconButtonDanger",
7457
+ "chipCount": "lvzz-W_chipCount",
7458
+ "iconButtonMd": "lvzz-W_iconButtonMd",
7459
+ "iconButtonSm": "lvzz-W_iconButtonSm",
7460
+ "notice": "lvzz-W_notice",
7461
+ "noticePage": "lvzz-W_noticePage",
7462
+ "noticeError": "lvzz-W_noticeError",
7463
+ "noticeWarn": "lvzz-W_noticeWarn",
7464
+ "confirmDesc": "lvzz-W_confirmDesc",
7465
+ "noticeWell": "lvzz-W_noticeWell",
7466
+ "iconButtonActive": "lvzz-W_iconButtonActive",
7467
+ "iconButton": "lvzz-W_iconButton",
7468
+ "sectionCount": "lvzz-W_sectionCount",
7469
+ "sectionLabel": "lvzz-W_sectionLabel",
7470
+ "chip": "lvzz-W_chip",
7471
+ "sectionAction": "lvzz-W_sectionAction",
7472
+ "noticeHint": "lvzz-W_noticeHint",
7473
+ "chipActive": "lvzz-W_chipActive",
7474
+ "chipLabel": "lvzz-W_chipLabel",
7475
+ "sectionHeader": "lvzz-W_sectionHeader",
7476
+ "noticeInline": "lvzz-W_noticeInline"
7311
7477
  };
7312
7478
  //#endregion
7313
- //#region ../../node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/ui/kit.tsx
7479
+ //#region ../../../DSH-better-sidebar/src/client/ui/kit.tsx
7314
7480
  /**
7315
7481
  * A 28px (`md`) or 24px (`sm`) square glyph button — the ONE icon button of
7316
7482
  * the plugin. Callers that need a pressed state pass `active`; the danger
@@ -7409,7 +7575,7 @@ window.__ModuleLoader__.load({
7409
7575
  });
7410
7576
  }
7411
7577
  //#endregion
7412
- //#region ../../node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/ui/git-status.ts
7578
+ //#region ../../../DSH-better-sidebar/src/client/ui/git-status.ts
7413
7579
  /**
7414
7580
  * The plugin's ONE git-status store.
7415
7581
  *
@@ -7453,6 +7619,24 @@ window.__ModuleLoader__.load({
7453
7619
  * Bumping the version on every tick re-rendered every consumer — the file
7454
7620
  * tree's rows included — once per cadence for no reason, which is what the
7455
7621
  * snapshot identity check above exists to prevent.
7622
+ *
7623
+ * Retention: remembering a key is not a lease on memory. The last consumer of
7624
+ * a slot going away (unmount, a parked tab, a scope change) DROPS the slot —
7625
+ * snapshot, index and listeners and all — so a long session that walks through
7626
+ * files, worktrees and cwds cannot grow the map for the page's lifetime. Since
7627
+ * v0.25 every visited native tab body stays mounted, so there is no host-side
7628
+ * teardown that would have bounded this for us.
7629
+ *
7630
+ * Dropping is invisible to a consumer that still carries the slot object: its
7631
+ * next render re-mints the key (`slotOf`) and `retain` re-registers that same
7632
+ * object, so the next retain performs a FRESH fetch rather than serving a
7633
+ * stale answer (and never mints a second slot for one key — two slots would
7634
+ * mean two pollers). A slot with a fetch in flight is never dropped mid-flight
7635
+ * (the answer has to land somewhere); it goes when that fetch settles. As a
7636
+ * second bound the registry is capped at {@link SLOT_CAP} keys, because a
7637
+ * consumer that mounts while invisible mints a slot it never retains and never
7638
+ * releases — eviction only ever takes a slot with no retained consumer and no
7639
+ * fetch in flight.
7456
7640
  */
7457
7641
  /** The porcelain letter → tone rule (both sides share one vocabulary). */
7458
7642
  function toneOfLetter(letter) {
@@ -7502,11 +7686,8 @@ window.__ModuleLoader__.load({
7502
7686
  return `${root.replace(/[\\/]+$/, "")}/${rel.replace(/^[\\/]+/, "")}`;
7503
7687
  }
7504
7688
  /**
7505
- * Whether two entries carry the same line counts. A numstat-only change — an
7506
- * edit that adds lines without touching either porcelain letter, e.g. more
7507
- * lines appended to an already-modified file — must still publish a NEW
7508
- * snapshot: keeping the previous identity would freeze the row's numbers at
7509
- * their first reading for as long as the porcelain codes stay put.
7689
+ * Whether two sides carry the same line counts (both absent counts as equal —
7690
+ * the entry simply has no reading on that side).
7510
7691
  */
7511
7692
  function sameCounts(left, right) {
7512
7693
  if (left === right) return true;
@@ -7518,15 +7699,21 @@ window.__ModuleLoader__.load({
7518
7699
  * Whether two status snapshots carry the same information. Compared field by
7519
7700
  * field (never by serializing the whole object): the entries are the payload
7520
7701
  * and their order is stable, so a length + pairwise compare is enough.
7702
+ *
7703
+ * Both sides' counts are compared, each on its own: a numstat-only change — an
7704
+ * edit that adds lines without touching either porcelain letter, e.g. more
7705
+ * lines appended to an already-modified file — must still publish a NEW
7706
+ * snapshot, because keeping the previous identity would freeze the row's
7707
+ * numbers at their first reading for as long as the porcelain codes stay put.
7521
7708
  */
7522
7709
  function sameStatus(a, b) {
7523
7710
  if (a === b) return true;
7524
- if (a.isRepo !== b.isRepo || a.branch !== b.branch || a.root !== b.root || a.truncated !== b.truncated || a.entries.length !== b.entries.length) return false;
7711
+ if (a.isRepo !== b.isRepo || a.branch !== b.branch || a.root !== b.root || a.upstream !== b.upstream || a.ahead !== b.ahead || a.behind !== b.behind || a.detached !== b.detached || a.operation !== b.operation || a.truncated !== b.truncated || a.entries.length !== b.entries.length) return false;
7525
7712
  if (a.repositories?.length !== b.repositories?.length) return false;
7526
7713
  if (a.repositories !== void 0 && b.repositories !== void 0 && a.repositories.some((root, index) => root !== b.repositories[index])) return false;
7527
7714
  return a.entries.every((entry, index) => {
7528
7715
  const other = b.entries[index];
7529
- return entry.path === other.path && entry.xy === other.xy && sameCounts(entry.counts, other.counts);
7716
+ return entry.path === other.path && entry.xy === other.xy && sameCounts(entry.staged, other.staged) && sameCounts(entry.unstaged, other.unstaged);
7530
7717
  });
7531
7718
  }
7532
7719
  /** Build the lookup index for one snapshot (once per snapshot, O(rows × depth)). */
@@ -7581,6 +7768,34 @@ window.__ModuleLoader__.load({
7581
7768
  null
7582
7769
  ];
7583
7770
  const slots = /* @__PURE__ */ new Map();
7771
+ /**
7772
+ * The registry's hard ceiling. The primary rule is release-driven (see
7773
+ * {@link release}); this cap is the backstop for keys nobody ever released —
7774
+ * a consumer that mounts while invisible mints its slot without retaining it,
7775
+ * and only the cap bounds that path. Eviction never touches a slot a consumer
7776
+ * holds or one with a fetch in flight, so the cap is soft while many slots are
7777
+ * genuinely live.
7778
+ */
7779
+ const SLOT_CAP = 256;
7780
+ /** Whether nothing depends on this slot: no consumer holds the answer and no
7781
+ * fetch is in flight. */
7782
+ function evictable(slot) {
7783
+ return slot.visible === 0 && !slot.running;
7784
+ }
7785
+ /** Drop one slot from the registry. Identity-checked, so a key that was
7786
+ * re-minted meanwhile keeps its live entry. */
7787
+ function forget(slot) {
7788
+ if (slots.get(slot.key) === slot) slots.delete(slot.key);
7789
+ }
7790
+ /** Make room for one key about to be minted: evict the oldest slots nobody
7791
+ * holds while the registry is at {@link SLOT_CAP}. Map order is mint order. */
7792
+ function trimSlots() {
7793
+ if (slots.size < SLOT_CAP) return;
7794
+ for (const slot of slots.values()) {
7795
+ if (slots.size < SLOT_CAP) break;
7796
+ if (evictable(slot)) forget(slot);
7797
+ }
7798
+ }
7584
7799
  /** The automatic cadence of one slot; `null` = no timer (tier 3). */
7585
7800
  function intervalOf(slot) {
7586
7801
  const factor = TIER_FACTORS[slot.tier] ?? null;
@@ -7591,6 +7806,7 @@ window.__ModuleLoader__.load({
7591
7806
  const key = `${sessionId}\u0000${cwd ?? ""}\u0000${repoRoot ?? ""}\u0000${worktree ?? ""}`;
7592
7807
  const existing = slots.get(key);
7593
7808
  if (existing !== void 0) return existing;
7809
+ trimSlots();
7594
7810
  const slot = {
7595
7811
  key,
7596
7812
  sessionId,
@@ -7679,6 +7895,7 @@ window.__ModuleLoader__.load({
7679
7895
  slot.pending = false;
7680
7896
  fetchSlot(slot);
7681
7897
  }
7898
+ if (evictable(slot)) forget(slot);
7682
7899
  });
7683
7900
  }
7684
7901
  function startTimer(slot) {
@@ -7705,6 +7922,7 @@ window.__ModuleLoader__.load({
7705
7922
  startTimer(slot);
7706
7923
  }
7707
7924
  function retain(slot, poll) {
7925
+ if (!slots.has(slot.key)) slots.set(slot.key, slot);
7708
7926
  slot.visible += 1;
7709
7927
  if (poll) slot.pollers += 1;
7710
7928
  if (slot.visible === 1 && slot.snapshot === null) fetchSlot(slot);
@@ -7723,6 +7941,7 @@ window.__ModuleLoader__.load({
7723
7941
  slot.index = null;
7724
7942
  slot.indexSource = null;
7725
7943
  notify(slot);
7944
+ if (!slot.running) forget(slot);
7726
7945
  }
7727
7946
  }
7728
7947
  /** The index for the current snapshot, rebuilt only when the snapshot changed. */
@@ -7782,7 +8001,7 @@ window.__ModuleLoader__.load({
7782
8001
  };
7783
8002
  }
7784
8003
  //#endregion
7785
- //#region ../../node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/upload.ts
8004
+ //#region ../../../DSH-better-sidebar/src/client/upload.ts
7786
8005
  /** Sanitize a relative target: absolute paths, traversal, and empty segments
7787
8006
  * are rejected (the host enforces the same rules with a 400). */
7788
8007
  function sanitizeRelativePath(rel) {
@@ -7850,7 +8069,7 @@ window.__ModuleLoader__.load({
7850
8069
  return (await Promise.all(entries.map((entry) => itemsFromEntry(entry, "").catch(() => [])))).flat();
7851
8070
  }
7852
8071
  //#endregion
7853
- //#region ../../node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/use-dir-watch.ts
8072
+ //#region ../../../DSH-better-sidebar/src/client/use-dir-watch.ts
7854
8073
  /**
7855
8074
  * Live refresh for the file tree.
7856
8075
  *
@@ -7860,21 +8079,31 @@ window.__ModuleLoader__.load({
7860
8079
  * tree per-directory watching; this plugin owns its tree (it took the `files`
7861
8080
  * kind over), so it carries its own.
7862
8081
  *
7863
- * One socket per session, open for as long as the tree is mounted. The client
7864
- * announces the folders it has expanded and the host watches exactly those;
7865
- * every notice names a directory whose listing is stale, and the tree drops
7866
- * that one cached level and re-lists it. Folders the reader collapsed are
7867
- * un-watched, so a long session does not accumulate handles.
8082
+ * One socket per session, open for as long as the tree is mounted AND visible.
8083
+ * The client announces the folders it has expanded and the host watches
8084
+ * exactly those; every notice names a directory whose listing is stale, and
8085
+ * the tree drops that one cached level and re-lists it. Folders the reader
8086
+ * collapsed are un-watched, so a long session does not accumulate handles.
8087
+ *
8088
+ * The host keeps every visited tab body mounted, so an un-gated watcher would
8089
+ * keep one socket (and its own set of up to 64 `fs.watch` handles on the host)
8090
+ * open per tree the reader ever opened, re-listing parked trees for nobody.
8091
+ * A parked tree (`visible: false`) therefore closes its socket outright — the
8092
+ * host releases that connection's handles when it goes — rather than sending
8093
+ * `unwatch` per path, and a tree with nothing to watch (no session, no root)
8094
+ * never opens one. Coming back reconnects and force-refreshes every watched
8095
+ * directory once, because whatever changed while it was parked was noticed by
8096
+ * nobody.
7868
8097
  */
7869
8098
  /** How long to wait before re-opening a dropped socket; failures back off to the cap. */
7870
8099
  const RETRY_BASE_MS = 1e3;
7871
8100
  const RETRY_MAX_MS = 15e3;
7872
8101
  /**
7873
8102
  * Keep the file tree's expanded folders watched for the component's lifetime.
7874
- * @param options - session, root, expanded directories, and the staleness callback.
8103
+ * @param options - session, root, expanded directories, visibility, and the staleness callback.
7875
8104
  */
7876
8105
  function useDirectoryWatch(options) {
7877
- const { sessionId, root, dirs, onStale } = options;
8106
+ const { sessionId, root, dirs, visible = true, onStale } = options;
7878
8107
  const dirsKey = dirs.join("\0");
7879
8108
  const wanted = (0, react.useMemo)(() => {
7880
8109
  const listed = dirsKey === "" ? [] : dirsKey.split("\0");
@@ -7887,8 +8116,14 @@ window.__ModuleLoader__.load({
7887
8116
  /** Set by the socket effect; reconciles the host's watch set with the tree's. */
7888
8117
  const reconcileRef = (0, react.useRef)(() => {});
7889
8118
  const wantedKey = (0, react.useMemo)(() => wanted.join("\0"), [wanted]);
8119
+ /**
8120
+ * Whether a socket should exist at all: a parked tree and a tree with an
8121
+ * empty watch set (no session, or no root and nothing expanded) hold none.
8122
+ */
8123
+ const armed = visible && sessionId !== void 0 && wanted.length > 0;
7890
8124
  (0, react.useEffect)(() => {
7891
- if (sessionId === void 0) return;
8125
+ if (!armed || sessionId === void 0) return;
8126
+ const session = sessionId;
7892
8127
  let socket = null;
7893
8128
  let retry;
7894
8129
  let closed = false;
@@ -7919,7 +8154,7 @@ window.__ModuleLoader__.load({
7919
8154
  const connect = () => {
7920
8155
  if (closed) return;
7921
8156
  const url = hostWebSocketUrl("sidebar/ws/fs-watch");
7922
- url.search = new URLSearchParams({ sessionId }).toString();
8157
+ url.search = new URLSearchParams({ sessionId: session }).toString();
7923
8158
  socket = new WebSocket(url.toString());
7924
8159
  socket.onopen = () => {
7925
8160
  failures = 0;
@@ -7927,6 +8162,7 @@ window.__ModuleLoader__.load({
7927
8162
  reconcile();
7928
8163
  };
7929
8164
  socket.onmessage = (event) => {
8165
+ if (closed) return;
7930
8166
  if (typeof event.data !== "string") return;
7931
8167
  let frame;
7932
8168
  try {
@@ -7939,7 +8175,7 @@ window.__ModuleLoader__.load({
7939
8175
  watching.add(frame.dir);
7940
8176
  return;
7941
8177
  }
7942
- if (frame.ok === void 0) staleRef.current(frame.dir);
8178
+ if (frame.ok === void 0) staleRef.current([frame.dir]);
7943
8179
  };
7944
8180
  socket.onclose = () => {
7945
8181
  if (closed) return;
@@ -7954,13 +8190,27 @@ window.__ModuleLoader__.load({
7954
8190
  if (retry !== void 0) window.clearTimeout(retry);
7955
8191
  socket?.close();
7956
8192
  };
7957
- }, [sessionId]);
8193
+ }, [sessionId, armed]);
7958
8194
  (0, react.useEffect)(() => {
7959
8195
  reconcileRef.current();
7960
8196
  }, [wantedKey]);
8197
+ /**
8198
+ * Re-armed after being parked: the socket is brand new (the old one's
8199
+ * notices are gone with it), so nothing the host saw while the tree was
8200
+ * hidden was delivered. Re-list every watched directory once instead of
8201
+ * showing a listing that may be minutes old — as ONE batch (the caller
8202
+ * re-lists the set in a single `fs.trees` request), not one per directory.
8203
+ */
8204
+ const wasArmedRef = (0, react.useRef)(armed);
8205
+ (0, react.useEffect)(() => {
8206
+ const previous = wasArmedRef.current;
8207
+ wasArmedRef.current = armed;
8208
+ if (!armed || previous) return;
8209
+ if (wantedRef.current.length > 0) staleRef.current(wantedRef.current);
8210
+ }, [armed]);
7961
8211
  }
7962
8212
  //#endregion
7963
- //#region ../../node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/use-polling.ts
8213
+ //#region ../../../DSH-better-sidebar/src/client/use-polling.ts
7964
8214
  /**
7965
8215
  * The sidebar's ONE polling loop: every timed client fetch — subagent live
7966
8216
  * previews, side-chat transcript deltas, git status, session ops — funnels
@@ -8025,8 +8275,8 @@ window.__ModuleLoader__.load({
8025
8275
  ]);
8026
8276
  }
8027
8277
  //#endregion
8028
- //#region \0dsh-css:/root/projects/dsh-plugins-plus/node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/sidebar.module.css.mjs
8029
- const css$8 = "[data-dsh-panel-host]{z-index:25;pointer-events:none;height:100vh;position:fixed;inset:0;overflow:clip}html[data-platform] body>[data-dsh-better-sidebar],[data-dsh-panel-host]{-webkit-app-region:initial!important}[data-dsh-panel-host]>*{-webkit-app-region:no-drag}[data-dsh-panel-host][data-dsh-panel-host-degraded]{position:absolute;top:0;left:0}.QgejbG_dockFallback{z-index:40;align-items:center;gap:2px;display:inline-flex;position:fixed}.QgejbG_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}.QgejbG_toggleButton:hover:not(:disabled):not([aria-disabled=true]){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.QgejbG_toggleButton:disabled,.QgejbG_toggleButton[aria-disabled=true]{opacity:.4;cursor:default}.QgejbG_panelBody{flex:1;min-width:0;min-height:0;display:flex}.QgejbG_bottomPanel{z-index:40;background:var(--dsw-alias-bg-layer-1);border-top:1px solid var(--dsw-alias-border-l2);pointer-events:auto;padding-bottom:env(safe-area-inset-bottom);transition:transform var(--ds-transition-duration-slow) var(--ds-ease-in-out), height var(--ds-transition-duration-slow) var(--ds-ease-in-out);flex-direction:column;display:flex;position:absolute;bottom:0}.QgejbG_bottomPanelHidden{pointer-events:none;visibility:hidden;transition:transform var(--ds-transition-duration-slow) var(--ds-ease-in-out), height var(--ds-transition-duration-slow) var(--ds-ease-in-out), visibility 0s linear var(--ds-transition-duration-slow);transform:translateY(102%)}.QgejbG_bottomPanel[data-dragging]{transition:none}.QgejbG_bottomPanel{contain:layout style}body[data-dsh-sidebar-dragging] .QgejbG_panel,body[data-dsh-sidebar-dragging] .QgejbG_bottomPanel{will-change:transform}.QgejbG_bottomResize{cursor:row-resize;z-index:2;touch-action:none;height:8px;position:absolute;top:-4px;left:0;right:0}.QgejbG_bottomResizeActive{background:var(--dsw-alias-interactive-bg-hover-accent)}.QgejbG_bottomClose{z-index:4;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;position:absolute;top:3px;right:6px}.QgejbG_bottomClose:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.QgejbG_bottomPanel .QgejbG_tabBar{padding-right:40px}.QgejbG_toggleButton,.QgejbG_tabBar{-webkit-app-region:no-drag}.QgejbG_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}.QgejbG_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.QgejbG_iconButton:disabled{opacity:.4;cursor:default}.QgejbG_workbench,.QgejbG_split{flex:1;min-width:0;min-height:0;display:flex}.QgejbG_splitRow{flex-direction:row}.QgejbG_splitCol{flex-direction:column}.QgejbG_splitChild{display:flex;position:relative;overflow:hidden}.QgejbG_divider{z-index:3;touch-action:none;flex:none;position:relative}.QgejbG_dividerRow:after,.QgejbG_dividerCol:after{content:\"\";background:var(--dsw-alias-border-l2);transition:background var(--ds-transition-duration-slow) var(--ds-ease-in-out);position:absolute}.QgejbG_dividerRow{cursor:col-resize;width:7px;margin:0 -2px}.QgejbG_dividerRow:after{width:1px;top:0;bottom:0;left:50%;transform:translate(-50%)}.QgejbG_dividerCol{cursor:row-resize;height:7px;margin:-2px 0}.QgejbG_dividerCol:after{height:1px;top:50%;left:0;right:0;transform:translateY(-50%)}.QgejbG_divider:hover:after,.QgejbG_dividerActive:after{background:var(--dsw-alias-interactive-bg-hover-accent)}.QgejbG_pane{background:var(--dsw-alias-bg-base);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative}.QgejbG_paneDrop{outline:1px solid var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-1px}.QgejbG_dropOverlay{z-index:6;pointer-events:none;background:var(--dsw-alias-interactive-bg-hover-accent);opacity:.5;position:absolute}.QgejbG_dropLeft{width:25%;top:0;bottom:0;left:0}.QgejbG_dropRight{width:25%;top:0;bottom:0;right:0}.QgejbG_dropUp{height:25%;top:0;left:0;right:0}.QgejbG_dropDown{height:25%;bottom:0;left:0;right:0}.QgejbG_dropCenter{outline:2px dashed var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-2px;background:0 0;inset:25%}.QgejbG_paneContent{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.QgejbG_chipIcon{flex:none;align-items:center;margin-right:6px;display:inline-flex}.QgejbG_chipUnread{background:var(--dsw-alias-danger);vertical-align:middle;border-radius:50%;width:6px;height:6px;margin-left:6px;display:inline-block}.QgejbG_tabUnreadDot{background:var(--dsw-alias-danger);border-radius:50%;flex:none;width:7px;height:7px}.QgejbG_paneTab{flex-direction:column;flex:1;min-height:0;display:flex}.QgejbG_paneTabHidden{display:none}.QgejbG_paneEmptyCards{flex:1;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));align-content:start;gap:12px;min-height:0;padding:12px;display:grid;overflow:hidden}.QgejbG_paneCard{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l4);background:var(--dsw-alias-bg-layer-1);min-width:0;min-height:56px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-s-strong-14);cursor:pointer;text-align:left;border-radius:24px;flex-direction:row;justify-content:flex-start;align-items:center;gap:14px;padding:14px 20px;display:flex}.QgejbG_paneCard>svg{color:var(--dsw-alias-label-secondary);flex:none}.QgejbG_paneCard:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);border-color:var(--dsw-alias-border-l4)}.QgejbG_paneCard:disabled{opacity:.45;cursor:default}.QgejbG_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}.QgejbG_tabBarDrop{outline:1px dashed var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-1px}.QgejbG_tabList{scrollbar-width:none;flex:1;min-width:0;display:flex;overflow-x:auto}.QgejbG_tabList::-webkit-scrollbar{display:none}.QgejbG_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}.QgejbG_tab:hover{background:var(--dsw-alias-interactive-bg-hover)}.QgejbG_tabActive{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-active)}.QgejbG_tabTitle{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.QgejbG_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}.QgejbG_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}.QgejbG_tabClose:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.QgejbG_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}.QgejbG_tabBarPlus:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.QgejbG_tabBarRightActions{flex:0 auto;justify-content:flex-end;align-items:center;gap:2px;min-width:0;padding-right:4px;display:flex;overflow:hidden}.QgejbG_explorer{flex-direction:column;flex:1;min-height:0;display:flex}.QgejbG_explorerHeader{flex:none;justify-content:space-between;align-items:center;gap:8px;height:36px;padding:0 8px 0 12px;display:flex}.QgejbG_explorerRoot{font:var(--dsw-font-s-14);color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.QgejbG_explorerBody{flex:1;min-height:0;padding:4px 8px 8px;overflow:hidden auto}.QgejbG_explorerRow{box-sizing:border-box;width:100%;max-width:100%;height:28px;font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;white-space:nowrap;animation:QgejbG_dsh-row-in .15s var(--ds-ease-in-out);background:0 0;border:none;border-radius:4px;align-items:center;gap:6px;padding:0 8px;display:flex;position:relative}.QgejbG_explorerRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.QgejbG_explorerRowSelected{background:var(--dsw-alias-interactive-bg-active)}.QgejbG_explorerRowSelected:before{content:\"\";background:var(--dsw-alias-state-business-primary);border-radius:1px;width:2px;position:absolute;top:4px;bottom:4px;left:0}.QgejbG_explorerGitName[data-git-tone=modified]{color:var(--dsw-alias-state-warn-primary)}.QgejbG_explorerGitName[data-git-tone=added],.QgejbG_explorerGitName[data-git-tone=untracked]{color:var(--dsw-alias-state-success-primary)}.QgejbG_explorerGitName[data-git-tone=deleted]{color:var(--dsw-alias-state-error-primary)}.QgejbG_explorerGitName[data-git-tone=renamed]{color:var(--dsw-alias-state-business-primary)}.QgejbG_explorerGitName[data-git-tone=copied]{color:var(--dsw-alias-state-success-primary)}.QgejbG_explorerGitName[data-git-tone=conflict]{color:var(--dsw-alias-state-error-primary)}.QgejbG_explorerDirChanged{color:var(--dsw-alias-state-business-primary)}.QgejbG_explorerRowRevealed{background:var(--dsw-alias-state-business-tertiary)}.QgejbG_explorerRowRevealed+.QgejbG_explorerRowRevealed{border-top-left-radius:0;border-top-right-radius:0}.QgejbG_explorerRowRevealed:has(+.QgejbG_explorerRowRevealed){border-bottom-right-radius:0;border-bottom-left-radius:0}.QgejbG_explorerDir{font:var(--dsw-font-xxs-strong-12)}.QgejbG_explorerHidden{opacity:.45}.QgejbG_explorerSymlink{color:var(--dsw-alias-label-tertiary);flex:none}.QgejbG_explorerBroken .QgejbG_explorerName{color:var(--dsw-alias-state-error-primary)}.QgejbG_explorerName{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.QgejbG_explorerRenaming{cursor:text}.QgejbG_explorerRenameInput{box-sizing:border-box;border:1px solid var(--dsw-alias-state-business-primary);background:var(--dsw-alias-bg-layer-1);min-width:0;height:22px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-12);border-radius:3px;flex:auto;padding:0 6px}.QgejbG_explorerRenameInput:focus{border-color:var(--dsw-alias-state-business-primary);outline:none}.QgejbG_explorerActionError{box-sizing:border-box;border:1px solid var(--dsw-alias-state-error-primary);background:var(--dsw-alias-bg-layer-1);border-radius:8px;align-items:flex-start;gap:6px;width:100%;margin-bottom:4px;padding:6px 8px;display:flex}.QgejbG_explorerActionErrorText{overflow-wrap:anywhere;min-width:0;font:var(--dsw-font-xxs-12);color:var(--dsw-alias-state-error-primary);flex:auto}.QgejbG_explorerSelectionBar{z-index:1;box-sizing:border-box;background:var(--dsw-alias-bg-layer-2);border-radius:4px;align-items:center;gap:6px;width:100%;min-height:28px;margin-top:4px;padding:2px 8px;display:flex;position:sticky;bottom:0}.QgejbG_explorerSelectionText{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--dsw-font-xxs-strong-12);color:var(--dsw-alias-label-secondary);flex:auto;overflow:hidden}.QgejbG_explorerSelectionActions{flex-wrap:wrap;flex:none;justify-content:flex-end;gap:4px;max-width:72%;display:flex}.QgejbG_explorerAppIcon{object-fit:contain;width:14px;height:14px;display:block}.QgejbG_explorerHiddenPane{display:none}.QgejbG_explorerTime{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xxxs-11);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;margin-left:auto;padding-left:8px}.QgejbG_explorerRow:hover .QgejbG_explorerTime,.QgejbG_explorerRow:focus-within .QgejbG_explorerTime{margin-left:0}.QgejbG_explorerRef,.QgejbG_explorerCopied{margin-left:auto}.QgejbG_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}.QgejbG_explorerRef:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.QgejbG_explorerRow:hover .QgejbG_explorerRef,.QgejbG_explorerRow:focus-within .QgejbG_explorerRef{display:inline-flex}.QgejbG_explorerCopied{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-tertiary);flex:none}.QgejbG_explorerError{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-state-error-primary);cursor:default}@keyframes QgejbG_dsh-row-in{0%{opacity:0}}.QgejbG_explorerEmpty{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary);text-align:center;padding:16px}.QgejbG_explorerRowDropTarget{background:var(--dsw-alias-interactive-bg-hover-accent);outline:1px dashed var(--dsw-alias-state-business-primary);outline-offset:-1px}.QgejbG_uploadDropMask{z-index:1001;pointer-events:none;background:color-mix(in srgb, var(--dsw-alias-bg-base) 62%, transparent);animation:QgejbG_dsh-row-in .15s var(--ds-ease-in-out);position:fixed;inset:0}.QgejbG_uploadDropZone{z-index:1002;pointer-events:none;border:2px dashed var(--dsw-alias-border-l2);background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 4%, transparent);animation:QgejbG_dsh-row-in .15s var(--ds-ease-in-out);border-radius:8px;justify-content:center;align-items:flex-start;padding:12px;display:flex;position:fixed}.QgejbG_uploadDropHero{flex-direction:column;align-items:center;gap:8px;max-width:100%;padding-top:8px;display:flex}.QgejbG_uploadDropArtPrimary{color:var(--dsw-alias-state-business-primary)}.QgejbG_uploadDropArtAccent{color:var(--dsw-alias-state-business-tertiary)}.QgejbG_uploadDropArtCut{color:var(--dsw-alias-bg-layer-1)}.QgejbG_uploadDropZonePill{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);max-width:100%;height:28px;box-shadow:var(--dsw-shadow-lv2);color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxxs-11);border-radius:999px;align-items:center;gap:6px;padding:0 12px;display:flex}.QgejbG_uploadDropZoneText{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.QgejbG_uploadDropChatHint{z-index:1003;pointer-events:none;animation:QgejbG_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}.QgejbG_uploadDropChatCard{text-align:center;max-width:100%;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-strong-12);flex-direction:column;align-items:center;gap:10px;display:flex}.QgejbG_uploadOverlay{z-index:30;background:var(--dsw-alias-bg-mask-1);backdrop-filter:var(--dsw-mask-blur);animation:QgejbG_dsh-row-in .15s var(--ds-ease-in-out);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.QgejbG_uploadOverlayCard{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);min-width:240px;max-width:min(420px,100% - 48px);box-shadow:var(--dsw-shadow-lv3);border-radius:8px;flex-direction:column;gap:10px;padding:16px;display:flex}.QgejbG_uploadOverlayTitle{font:var(--dsw-font-xxs-strong-12);color:var(--dsw-alias-label-primary);align-items:center;gap:6px;display:flex}.QgejbG_uploadOverlayTitle>svg{flex:none}.QgejbG_uploadOverlayTitle>span{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.QgejbG_uploadOverlayProgress{background:var(--dsw-alias-border-l2);border-radius:3px;height:6px;overflow:hidden}.QgejbG_uploadOverlayProgressFill{background:var(--dsw-alias-interactive-bg-hover-accent);height:100%;transition:width .15s var(--ds-ease-in-out);border-radius:3px}.QgejbG_uploadOverlayStatus{min-height:1em;font:var(--dsw-font-xxxs-11);font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.QgejbG_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:4px;align-self:flex-end;padding:0 12px}.QgejbG_uploadOverlayCancel:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);border-color:var(--dsw-alias-border-l2)}.QgejbG_uploadOverlayCancel:disabled{opacity:.4;cursor:default}.QgejbG_editor{flex-direction:column;flex:1;min-height:0;display:flex}.QgejbG_editorHeader{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:6px;padding:6px 8px;display:flex}.QgejbG_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}.QgejbG_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}.QgejbG_editorPathInput:focus{border-color:var(--dsw-alias-border-l2);outline:none}.QgejbG_editorTreeToggleActive{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-active)}.QgejbG_editorBody{flex:1;min-height:0;display:flex}.QgejbG_editorMain{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.QgejbG_editorTreeDock{border-left:1px solid var(--dsw-alias-border-l1);flex:none;min-height:0;display:flex;position:relative}.QgejbG_editorTreeResize{cursor:col-resize;touch-action:none;z-index:3;width:6px;position:absolute;top:0;bottom:0;left:0}.QgejbG_editorTreeResize:hover{background:var(--dsw-alias-border-l2)}.QgejbG_editorTreePanel{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative}.QgejbG_editorTreePanelFull{flex:1}.QgejbG_editorTreeSearch{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:6px;padding:6px 8px;display:flex}.QgejbG_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}.QgejbG_editorSearchInput:focus{border-color:var(--dsw-alias-border-l2);outline:none}.QgejbG_editorSearchHint{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary);padding:8px 12px}.QgejbG_editorSearchResult{box-sizing:border-box;width:100%;height:28px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-12);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:6px;padding:0 8px;line-height:28px;display:flex;overflow:hidden}.QgejbG_editorSearchResultDir{color:var(--dsw-alias-label-secondary)}.QgejbG_editorSearchResultLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.QgejbG_editorSearchResult:hover{background:var(--dsw-alias-interactive-bg-hover)}.QgejbG_editorStatus{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-tertiary)}.QgejbG_editorStatusError{color:var(--dsw-alias-state-error-primary)}.QgejbG_dirtyDot{background:var(--dsw-alias-state-warn-primary);border-radius:50%;flex:none;width:7px;height:7px}.QgejbG_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}.QgejbG_orphanedType{opacity:.7;overflow-wrap:anywhere;margin-top:8px;font-size:12px;display:block}.QgejbG_editorBinary{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;padding:24px 16px;display:flex}.QgejbG_editorBinaryNotice{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary)}.QgejbG_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}.QgejbG_editorDownloadLink:hover{background:var(--dsw-alias-interactive-bg-hover);border-color:var(--dsw-alias-border-l2)}.QgejbG_editorError{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-state-error-primary);padding:12px 16px}.QgejbG_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}.QgejbG_editorBannerAction{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;margin-left:8px;padding:0;text-decoration:underline}.QgejbG_editorGitAdd{color:var(--dsw-alias-state-success-primary)}.QgejbG_editorGitMod{color:var(--dsw-alias-state-warn-primary)}.QgejbG_editorGitDel{color:var(--dsw-alias-state-error-primary)}.QgejbG_editorGitBarGutter{width:2px;min-width:2px}.QgejbG_editorGitBar,.QgejbG_editorGitBarSpacer{width:2px;height:100%}.QgejbG_editorGitBarAdd{background:var(--dsw-alias-state-success-primary)}.QgejbG_editorGitBarMod{background:var(--dsw-alias-state-warn-primary)}.QgejbG_editorGitBarDel{background:var(--dsw-alias-state-error-primary)}.QgejbG_editorBlame{max-width:420px;font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-primary);padding:4px 8px}.QgejbG_editorBlameHead{color:var(--dsw-alias-label-secondary)}.QgejbG_editorBlameSummary{color:var(--dsw-alias-label-primary);white-space:pre-wrap;overflow-wrap:anywhere;margin-top:2px}.QgejbG_sandboxStatus{font:var(--dsw-font-xxxs-11);flex:none;align-items:center;gap:8px;padding:4px 10px;display:flex}.QgejbG_sandboxStatusOn{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);border-bottom:1px solid var(--dsw-alias-border-l1)}.QgejbG_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)}.QgejbG_sandboxDot{background:var(--dsw-alias-state-success-primary);border-radius:50%;flex:none;width:6px;height:6px}.QgejbG_sandboxStatusOff .QgejbG_sandboxDot{background:var(--dsw-alias-state-error-primary)}.QgejbG_sandboxStatusText{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.QgejbG_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}.QgejbG_sandboxAction:hover{background:var(--dsw-alias-interactive-bg-hover)}.QgejbG_editorHtml{background:var(--dsw-alias-bg-base);border:none;flex:1;width:100%;min-height:0}.QgejbG_browser{flex-direction:column;flex:1;min-height:0;display:flex}.QgejbG_browserBar{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:4px;padding:6px 8px;display:flex}.QgejbG_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}.QgejbG_browserInput:focus{border-color:var(--dsw-alias-border-l2);outline:none}.QgejbG_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}.QgejbG_browserFrame{background:var(--dsw-alias-bg-base);border:none;flex:1;width:100%;min-height:0}.QgejbG_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}.QgejbG_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}.QgejbG_browserBlockedTitle{font:var(--dsw-font-xxs-strong-12);color:var(--dsw-alias-label-primary)}.QgejbG_browserBlockedDesc{max-width:280px;font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-secondary)}.QgejbG_browserBlockedActions{gap:8px;margin-top:6px;display:flex}.QgejbG_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}.QgejbG_browserBlockedButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.QgejbG_editorCm{background:0 0;flex:1;min-height:0;overflow:hidden}.QgejbG_editorCmHidden{display:none}.QgejbG_editorCm .cm-editor{height:100%}.QgejbG_editorCm .cm-scroller{padding:12px 16px}.QgejbG_editorCm .cm-editor.cm-focused{outline:none}.QgejbG_editorModeToggle{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:6px;flex:none;align-items:center;gap:2px;padding:2px;display:inline-flex}.QgejbG_editorModeButton{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xxxs-11);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 8px}.QgejbG_editorModeButton:hover{color:var(--dsw-alias-label-primary)}.QgejbG_editorModeActive{background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-primary)}.QgejbG_editorMd{min-height:0;font:var(--dsw-font-xs-13);flex:1;padding:12px 16px;overflow-y:auto}.QgejbG_editorMd .md-code-block:not([data-mermaid-processed])>div:first-child{z-index:auto;position:static}.QgejbG_mermaidWrap{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:6px;margin:6px 0;overflow:hidden}.QgejbG_mermaidHeader{border-bottom:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);justify-content:space-between;align-items:center;gap:6px;padding:4px 8px;display:flex}.QgejbG_mermaidInfo{font:var(--dsw-font-xxxs-strong-11);color:var(--dsw-alias-label-tertiary)}.QgejbG_mermaidCopy{height:20px;color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxxs-11);cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:4px;padding:0 6px;display:inline-flex}.QgejbG_mermaidCopy:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.QgejbG_mermaidBody{cursor:zoom-in;justify-content:center;padding:10px;display:flex;overflow:auto}.QgejbG_mermaidBody svg{max-width:100%;height:auto}.QgejbG_mermaidError{border-bottom:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-state-error-primary);font:var(--dsw-font-xxxs-11);padding:6px 10px}.QgejbG_mermaidCode{font:var(--dsw-font-xxxs-11);margin:0;padding:8px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;overflow:auto}.QgejbG_mermaidMarkdown .md-code-block[data-mermaid-processed]{display:contents}.QgejbG_mermaidModal{z-index:1000;background:var(--dsw-alias-bg-mask-1);backdrop-filter:blur(2px);flex-direction:column;justify-content:center;align-items:center;display:flex;position:fixed;inset:0;-webkit-app-region:initial!important}.QgejbG_mermaidModalToolbar{z-index:10;gap:8px;display:flex;position:absolute;top:16px;right:16px}.QgejbG_mermaidModalButton{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);width:36px;height:36px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xs-strong-13);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.QgejbG_mermaidModalButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.QgejbG_mermaidModalStage{justify-content:center;align-items:center;width:90vw;height:80vh;display:flex;position:relative;overflow:hidden}.QgejbG_mermaidModalStage svg{cursor:grab;transform-origin:50%;user-select:none;-webkit-user-drag:none;background:var(--dsw-alias-bg-layer-1);border-radius:12px;max-width:none;max-height:none;padding:16px}.QgejbG_mermaidModalStage svg:active{cursor:grabbing}.QgejbG_mermaidModalHint{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xxxs-11);pointer-events:none;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.QgejbG_selectionPopup{z-index:60;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-specific-menu);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))}.QgejbG_selectionPopup:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.QgejbG_editorPdf{background:var(--dsw-alias-bg-base);flex-direction:column;flex:1;min-height:0;display:flex}.QgejbG_editorPdfToolbar{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;justify-content:flex-end;padding:6px 8px;display:flex}.QgejbG_editorPdfStage{flex:1;min-height:0;display:flex;position:relative}.QgejbG_editorPdfFrame{background:var(--dsw-alias-bg-base);border:none;flex:1;width:100%;min-height:0}.QgejbG_editorPdfFrameBlocked{pointer-events:none}.QgejbG_editorPdfDragShield{z-index:4;pointer-events:none;background:0 0;position:absolute;inset:0}.QgejbG_editorPdfDragShieldActive{pointer-events:auto}body[data-dsh-tab-dragging] .QgejbG_editorPdfFrame{pointer-events:none!important}body[data-dsh-tab-dragging] .QgejbG_editorPdfDragShield{pointer-events:auto!important}.QgejbG_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}.QgejbG_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}.QgejbG_terminalRetry:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.QgejbG_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}.QgejbG_nativeTabHost{flex-direction:column;height:100%;min-height:0;display:flex}.QgejbG_gitEmpty{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary);padding:4px 12px 8px}.QgejbG_gitPlaceholder{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary);text-align:center;padding:16px}.QgejbG_gitError{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-state-error-primary);white-space:pre-wrap;padding:8px 12px}.QgejbG_gitDiffTab{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden auto}.QgejbG_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}.QgejbG_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}.QgejbG_toggleButton:focus-visible,.QgejbG_bottomClose:focus-visible,.QgejbG_iconButton:focus-visible,.QgejbG_tab:focus-visible,.QgejbG_tabClose:focus-visible,.QgejbG_tabBarPlus:focus-visible,.QgejbG_paneCard:focus-visible,.QgejbG_explorerRow:focus-visible,.QgejbG_explorerRef:focus-visible,.QgejbG_terminalRetry:focus-visible,.QgejbG_editorModeButton:focus-visible,.QgejbG_editorDownloadLink:focus-visible,.QgejbG_editorPptxButton:focus-visible,.QgejbG_editorDocxZoomRange:focus-visible{outline:2px solid var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-1px}@media (prefers-reduced-motion:reduce){.QgejbG_bottomPanel,.QgejbG_bottomPanelHidden,.QgejbG_toggleButton,.QgejbG_tab,.QgejbG_tabBarPlus,.QgejbG_paneCard,.QgejbG_explorerRow,.QgejbG_divider,.QgejbG_dividerRow:after,.QgejbG_dividerCol:after{transition:none;animation:none}}@media (width<=767px){.QgejbG_tab{min-width:48px;max-width:128px}}.QgejbG_openWithLabel{align-items:center;gap:8px;width:100%;min-width:0;display:flex}.QgejbG_openWithName{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.QgejbG_openWithChevron{color:var(--dsw-alias-label-tertiary);flex:none}.QgejbG_openWithPin{width:16px;height:16px;color:var(--dsw-alias-label-tertiary);cursor:pointer;border-radius:5px;flex:none;justify-content:center;align-items:center;display:inline-flex}.QgejbG_openWithPin:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.QgejbG_openWithPinActive{color:var(--dsw-alias-state-business-primary)}.QgejbG_editorHtmlBlock{margin:8px 0}.QgejbG_editorHtmlBlock img,.QgejbG_editorHtmlBlock video{max-width:100%}.QgejbG_editorHtmlBlock details{margin:4px 0;padding:4px 0}.QgejbG_editorHtmlBlock summary,.QgejbG_editorMd details>summary{cursor:pointer}.QgejbG_tocBar{z-index:7;pointer-events:none;justify-content:flex-end;height:0;display:flex;position:sticky;top:0}.QgejbG_tocButton{pointer-events:auto;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);width:26px;height:26px;color:var(--dsw-alias-label-secondary);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;margin:4px 2px 0 0;padding:0;display:inline-flex}.QgejbG_tocButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.QgejbG_tocPanel{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);width:min(300px,82%);max-height:60vh;box-shadow:var(--dsw-shadow-lv2);pointer-events:auto;border-radius:8px;flex-direction:column;padding:4px;display:flex;position:absolute;top:32px;right:2px;overflow-y:auto}.QgejbG_tocItem{min-width:0;color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-12);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:baseline;gap:8px;padding:4px 8px;display:flex}.QgejbG_tocItem:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.QgejbG_tocItem[data-level=\"2\"]{padding-left:18px}.QgejbG_tocItem[data-level=\"3\"]{padding-left:28px}.QgejbG_tocItem[data-level=\"4\"]{padding-left:38px}.QgejbG_tocItem[data-level=\"5\"]{padding-left:48px}.QgejbG_tocItem[data-level=\"6\"]{padding-left:58px}.QgejbG_tocItemLevel{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-tertiary);flex:none}.QgejbG_tocItemText{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}@keyframes QgejbG_dsh-toc-flash{0%,60%{background:var(--dsw-alias-interactive-bg-hover)}to{background:0 0}}.QgejbG_tocFlash{border-radius:4px;animation:1.2s ease-out QgejbG_dsh-toc-flash}.QgejbG_largeFile{flex-direction:column;flex:1;min-height:0;display:flex}.QgejbG_largeFileNotice{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-state-warn-label);background:var(--dsw-alias-state-warn-tertiary);flex:none;align-items:baseline;gap:8px;padding:4px 8px;display:flex}.QgejbG_largeFileDownload{color:inherit;text-decoration:underline}.QgejbG_largeFileNoticeAction{font:inherit;color:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:4px;margin-left:auto;padding:0 6px}.QgejbG_largeFileNoticeAction:disabled{opacity:.5;cursor:default}.QgejbG_largeFileBody{flex:1;min-height:0;overflow:auto}.QgejbG_largeFileRecords{padding:4px 0}.QgejbG_largeFileList{margin:0;padding:0;list-style:none}.QgejbG_largeFileRecord{gap:8px;padding:2px 8px;display:flex}.QgejbG_largeFileRecordExpanded{background:var(--dsw-alias-bg-layer-1)}.QgejbG_largeFileRecordInvalid{color:var(--dsw-alias-state-error-primary)}.QgejbG_largeFileRecordNo{text-align:right;min-width:4ch;font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-tertiary);user-select:none;flex:none}.QgejbG_largeFileRecordBody{flex:1;min-width:0}.QgejbG_largeFileRecordSummary{text-align:left;width:100%;font:var(--ds-font-family-code);color:var(--dsw-alias-label-primary);white-space:pre;text-overflow:ellipsis;cursor:pointer;background:0 0;border:0;padding:0;font-size:12px;display:block;overflow:hidden}.QgejbG_largeFileRecordSummary:disabled{cursor:default}.QgejbG_largeFileRecordRaw{font:var(--ds-font-family-code);white-space:pre-wrap;word-break:break-all;overflow-wrap:anywhere;margin:2px 0 0;font-size:12px}.QgejbG_largeFileRecordTree{font:var(--ds-font-family-code);margin-top:2px;font-size:12px}.QgejbG_largeFileLines{font:var(--ds-font-family-code);white-space:pre;padding:4px 0;font-size:12px}.QgejbG_largeFileLine{gap:8px;padding:0 8px;display:flex}.QgejbG_largeFileLineNo{text-align:right;min-width:5ch;color:var(--dsw-alias-label-tertiary);user-select:none;flex:none}.QgejbG_largeFileLineText{color:var(--dsw-alias-label-primary);flex:none}.QgejbG_largeFilePager{border-top:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);flex:none;align-items:center;gap:4px;padding:2px 8px;display:flex}.QgejbG_largeFilePageLabel{text-align:center;min-width:0;font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-secondary);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}";
8278
+ //#region \0dsh-css:/root/projects/DSH-better-sidebar/src/client/sidebar.module.css.mjs
8279
+ const css$8 = "[data-dsh-panel-host]{z-index:25;pointer-events:none;height:100vh;position:fixed;inset:0;overflow:clip}html[data-platform] body>[data-dsh-better-sidebar],[data-dsh-panel-host]{-webkit-app-region:initial!important}[data-dsh-panel-host]>*{-webkit-app-region:no-drag}[data-dockkit-float-resize]{z-index:2}[data-dsh-panel-host][data-dsh-panel-host-degraded]{position:absolute;top:0;left:0}.s56VVa_dockFallback{z-index:40;align-items:center;gap:2px;display:inline-flex;position:fixed}.s56VVa_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}.s56VVa_toggleButton:hover:not(:disabled):not([aria-disabled=true]){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.s56VVa_toggleButton:disabled,.s56VVa_toggleButton[aria-disabled=true]{opacity:.4;cursor:default}.s56VVa_panelBody{flex:1;min-width:0;min-height:0;display:flex}.s56VVa_bottomPanel{z-index:40;background:var(--dsw-alias-bg-layer-1);border-top:1px solid var(--dsw-alias-border-l2);pointer-events:auto;padding-bottom:env(safe-area-inset-bottom);transition:transform var(--ds-transition-duration-slow) var(--ds-ease-in-out), height var(--ds-transition-duration-slow) var(--ds-ease-in-out);flex-direction:column;display:flex;position:absolute;bottom:0}.s56VVa_bottomPanelHidden{pointer-events:none;visibility:hidden;transition:transform var(--ds-transition-duration-slow) var(--ds-ease-in-out), height var(--ds-transition-duration-slow) var(--ds-ease-in-out), visibility 0s linear var(--ds-transition-duration-slow);transform:translateY(102%)}.s56VVa_bottomPanel[data-dragging]{transition:none}.s56VVa_bottomPanel{contain:layout style}body[data-dsh-sidebar-dragging] .s56VVa_panel,body[data-dsh-sidebar-dragging] .s56VVa_bottomPanel{will-change:transform}.s56VVa_bottomResize{cursor:row-resize;z-index:2;touch-action:none;height:8px;position:absolute;top:-4px;left:0;right:0}.s56VVa_bottomResizeActive{background:var(--dsw-alias-interactive-bg-hover-accent)}.s56VVa_bottomClose{z-index:4;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;position:absolute;top:3px;right:6px}.s56VVa_bottomClose:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.s56VVa_bottomPanel .s56VVa_tabBar{padding-right:40px}.s56VVa_toggleButton,.s56VVa_tabBar{-webkit-app-region:no-drag}.s56VVa_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}.s56VVa_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.s56VVa_iconButton:disabled{opacity:.4;cursor:default}.s56VVa_workbench,.s56VVa_split{flex:1;min-width:0;min-height:0;display:flex}.s56VVa_splitRow{flex-direction:row}.s56VVa_splitCol{flex-direction:column}.s56VVa_splitChild{display:flex;position:relative;overflow:hidden}.s56VVa_divider{z-index:3;touch-action:none;flex:none;position:relative}.s56VVa_dividerRow:after,.s56VVa_dividerCol:after{content:\"\";background:var(--dsw-alias-border-l2);transition:background var(--ds-transition-duration-slow) var(--ds-ease-in-out);position:absolute}.s56VVa_dividerRow{cursor:col-resize;width:7px;margin:0 -2px}.s56VVa_dividerRow:after{width:1px;top:0;bottom:0;left:50%;transform:translate(-50%)}.s56VVa_dividerCol{cursor:row-resize;height:7px;margin:-2px 0}.s56VVa_dividerCol:after{height:1px;top:50%;left:0;right:0;transform:translateY(-50%)}.s56VVa_divider:hover:after,.s56VVa_dividerActive:after{background:var(--dsw-alias-interactive-bg-hover-accent)}.s56VVa_pane{background:var(--dsw-alias-bg-base);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative}.s56VVa_paneDrop{outline:1px solid var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-1px}.s56VVa_dropOverlay{z-index:6;pointer-events:none;background:var(--dsw-alias-interactive-bg-hover-accent);opacity:.5;position:absolute}.s56VVa_dropLeft{width:25%;top:0;bottom:0;left:0}.s56VVa_dropRight{width:25%;top:0;bottom:0;right:0}.s56VVa_dropUp{height:25%;top:0;left:0;right:0}.s56VVa_dropDown{height:25%;bottom:0;left:0;right:0}.s56VVa_dropCenter{outline:2px dashed var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-2px;background:0 0;inset:25%}.s56VVa_paneContent{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.s56VVa_chipIcon{flex:none;align-items:center;margin-right:6px;display:inline-flex}.s56VVa_chipUnread{background:var(--dsw-alias-danger);vertical-align:middle;border-radius:50%;width:6px;height:6px;margin-left:6px;display:inline-block}.s56VVa_tabUnreadDot{background:var(--dsw-alias-danger);border-radius:50%;flex:none;width:7px;height:7px}.s56VVa_paneTab{flex-direction:column;flex:1;min-height:0;display:flex}.s56VVa_paneTabHidden{display:none}.s56VVa_paneEmptyCards{flex:1;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));align-content:start;gap:12px;min-height:0;padding:12px;display:grid;overflow:hidden}.s56VVa_paneCard{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l4);background:var(--dsw-alias-bg-layer-1);min-width:0;min-height:56px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-s-strong-14);cursor:pointer;text-align:left;border-radius:24px;flex-direction:row;justify-content:flex-start;align-items:center;gap:14px;padding:14px 20px;display:flex}.s56VVa_paneCard>svg{color:var(--dsw-alias-label-secondary);flex:none}.s56VVa_paneCard:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);border-color:var(--dsw-alias-border-l4)}.s56VVa_paneCard:disabled{opacity:.45;cursor:default}.s56VVa_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}.s56VVa_tabBarDrop{outline:1px dashed var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-1px}.s56VVa_tabList{scrollbar-width:none;flex:1;min-width:0;display:flex;overflow-x:auto}.s56VVa_tabList::-webkit-scrollbar{display:none}.s56VVa_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}.s56VVa_tab:hover{background:var(--dsw-alias-interactive-bg-hover)}.s56VVa_tabActive{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-active)}.s56VVa_tabTitle{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.s56VVa_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}.s56VVa_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}.s56VVa_tabClose:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.s56VVa_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}.s56VVa_tabBarPlus:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.s56VVa_tabBarRightActions{flex:0 auto;justify-content:flex-end;align-items:center;gap:2px;min-width:0;padding-right:4px;display:flex;overflow:hidden}.s56VVa_explorer{flex-direction:column;flex:1;min-height:0;display:flex}.s56VVa_explorerHeader{flex:none;justify-content:space-between;align-items:center;gap:8px;height:36px;padding:0 8px 0 12px;display:flex}.s56VVa_explorerRoot{font:var(--dsw-font-s-14);color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.s56VVa_explorerBody{flex:1;min-height:0;padding:4px 8px 8px;overflow:hidden auto}.s56VVa_explorerRow{box-sizing:border-box;width:100%;max-width:100%;height:28px;font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;white-space:nowrap;animation:s56VVa_dsh-row-in .15s var(--ds-ease-in-out);background:0 0;border:none;border-radius:4px;align-items:center;gap:6px;padding:0 8px;display:flex;position:relative}.s56VVa_explorerRow>svg{flex:none;width:14px;height:14px}.s56VVa_explorerRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.s56VVa_explorerRowSelected{background:var(--dsw-alias-interactive-bg-active)}.s56VVa_explorerRowSelected:before{content:\"\";background:var(--dsw-alias-state-business-primary);border-radius:1px;width:2px;position:absolute;top:4px;bottom:4px;left:0}.s56VVa_explorerGitName[data-git-tone=modified]{color:var(--dsw-alias-state-warn-primary)}.s56VVa_explorerGitName[data-git-tone=added],.s56VVa_explorerGitName[data-git-tone=untracked]{color:var(--dsw-alias-state-success-primary)}.s56VVa_explorerGitName[data-git-tone=deleted]{color:var(--dsw-alias-state-error-primary)}.s56VVa_explorerGitName[data-git-tone=renamed]{color:var(--dsw-alias-state-business-primary)}.s56VVa_explorerGitName[data-git-tone=copied]{color:var(--dsw-alias-state-success-primary)}.s56VVa_explorerGitName[data-git-tone=conflict]{color:var(--dsw-alias-state-error-primary)}.s56VVa_explorerDirChanged{color:var(--dsw-alias-state-business-primary)}.s56VVa_explorerRowRevealed{background:var(--dsw-alias-state-business-tertiary)}.s56VVa_explorerRowRevealed+.s56VVa_explorerRowRevealed{border-top-left-radius:0;border-top-right-radius:0}.s56VVa_explorerRowRevealed:has(+.s56VVa_explorerRowRevealed){border-bottom-right-radius:0;border-bottom-left-radius:0}.s56VVa_explorerDir{font:var(--dsw-font-xxs-strong-12)}.s56VVa_explorerHidden{opacity:.45}.s56VVa_explorerSymlink{color:var(--dsw-alias-label-tertiary);flex:none}.s56VVa_explorerBroken .s56VVa_explorerName{color:var(--dsw-alias-state-error-primary)}.s56VVa_explorerName{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.s56VVa_explorerRenaming{cursor:text}.s56VVa_explorerRenameInput{box-sizing:border-box;border:1px solid var(--dsw-alias-state-business-primary);background:var(--dsw-alias-bg-layer-1);min-width:0;height:22px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-12);border-radius:3px;flex:auto;padding:0 6px}.s56VVa_explorerRenameInput:focus{border-color:var(--dsw-alias-state-business-primary);outline:none}.s56VVa_explorerActionError{box-sizing:border-box;border:1px solid var(--dsw-alias-state-error-primary);background:var(--dsw-alias-bg-layer-1);border-radius:8px;align-items:flex-start;gap:6px;width:100%;margin-bottom:4px;padding:6px 8px;display:flex}.s56VVa_explorerActionErrorText{overflow-wrap:anywhere;min-width:0;font:var(--dsw-font-xxs-12);color:var(--dsw-alias-state-error-primary);flex:auto}.s56VVa_explorerSelectionBar{z-index:1;box-sizing:border-box;background:var(--dsw-alias-bg-layer-2);border-radius:4px;align-items:center;gap:6px;width:100%;min-height:28px;margin-top:4px;padding:2px 8px;display:flex;position:sticky;bottom:0}.s56VVa_explorerSelectionText{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--dsw-font-xxs-strong-12);color:var(--dsw-alias-label-secondary);flex:auto;overflow:hidden}.s56VVa_explorerSelectionActions{flex-wrap:wrap;flex:none;justify-content:flex-end;gap:4px;max-width:72%;display:flex}.s56VVa_explorerAppIcon{object-fit:contain;width:14px;height:14px;display:block}.s56VVa_explorerHiddenPane{display:none}.s56VVa_explorerTime{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xxxs-11);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;margin-left:auto;padding-left:8px}.s56VVa_explorerRow:hover .s56VVa_explorerTime,.s56VVa_explorerRow:focus-within .s56VVa_explorerTime{margin-left:0}.s56VVa_explorerRef,.s56VVa_explorerCopied{margin-left:auto}.s56VVa_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}.s56VVa_explorerRef:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.s56VVa_explorerRow:hover .s56VVa_explorerRef,.s56VVa_explorerRow:focus-within .s56VVa_explorerRef{display:inline-flex}.s56VVa_explorerCopied{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-tertiary);flex:none}.s56VVa_explorerError{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-state-error-primary);cursor:default}@keyframes s56VVa_dsh-row-in{0%{opacity:0}}.s56VVa_explorerEmpty{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary);text-align:center;padding:16px}.s56VVa_explorerRowDropTarget{background:var(--dsw-alias-interactive-bg-hover-accent);outline:1px dashed var(--dsw-alias-state-business-primary);outline-offset:-1px}.s56VVa_uploadDropMask{z-index:1001;pointer-events:none;background:color-mix(in srgb, var(--dsw-alias-bg-base) 62%, transparent);animation:s56VVa_dsh-row-in .15s var(--ds-ease-in-out);position:fixed;inset:0}.s56VVa_uploadDropZone{z-index:1002;pointer-events:none;border:2px dashed var(--dsw-alias-border-l2);background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 4%, transparent);animation:s56VVa_dsh-row-in .15s var(--ds-ease-in-out);border-radius:8px;justify-content:center;align-items:flex-start;padding:12px;display:flex;position:fixed}.s56VVa_uploadDropHero{flex-direction:column;align-items:center;gap:8px;max-width:100%;padding-top:8px;display:flex}.s56VVa_uploadDropArtPrimary{color:var(--dsw-alias-state-business-primary)}.s56VVa_uploadDropArtAccent{color:var(--dsw-alias-state-business-tertiary)}.s56VVa_uploadDropArtCut{color:var(--dsw-alias-bg-layer-1)}.s56VVa_uploadDropZonePill{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);max-width:100%;height:28px;box-shadow:var(--dsw-shadow-lv2);color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxxs-11);border-radius:999px;align-items:center;gap:6px;padding:0 12px;display:flex}.s56VVa_uploadDropZoneText{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.s56VVa_uploadDropChatHint{z-index:1003;pointer-events:none;animation:s56VVa_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}.s56VVa_uploadDropChatCard{text-align:center;max-width:100%;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-strong-12);flex-direction:column;align-items:center;gap:10px;display:flex}.s56VVa_uploadOverlay{z-index:30;background:var(--dsw-alias-bg-mask-1);backdrop-filter:var(--dsw-mask-blur);animation:s56VVa_dsh-row-in .15s var(--ds-ease-in-out);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.s56VVa_uploadOverlayCard{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);min-width:240px;max-width:min(420px,100% - 48px);box-shadow:var(--dsw-shadow-lv3);border-radius:8px;flex-direction:column;gap:10px;padding:16px;display:flex}.s56VVa_uploadOverlayTitle{font:var(--dsw-font-xxs-strong-12);color:var(--dsw-alias-label-primary);align-items:center;gap:6px;display:flex}.s56VVa_uploadOverlayTitle>svg{flex:none}.s56VVa_uploadOverlayTitle>span{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.s56VVa_uploadOverlayProgress{background:var(--dsw-alias-border-l2);border-radius:3px;height:6px;overflow:hidden}.s56VVa_uploadOverlayProgressFill{background:var(--dsw-alias-interactive-bg-hover-accent);height:100%;transition:width .15s var(--ds-ease-in-out);border-radius:3px}.s56VVa_uploadOverlayStatus{min-height:1em;font:var(--dsw-font-xxxs-11);font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.s56VVa_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:4px;align-self:flex-end;padding:0 12px}.s56VVa_uploadOverlayCancel:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);border-color:var(--dsw-alias-border-l2)}.s56VVa_uploadOverlayCancel:disabled{opacity:.4;cursor:default}.s56VVa_editor{flex-direction:column;flex:1;min-height:0;display:flex}.s56VVa_editorHeader{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:6px;padding:6px 8px;display:flex}.s56VVa_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}.s56VVa_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}.s56VVa_editorPathInput:focus{border-color:var(--dsw-alias-border-l2);outline:none}.s56VVa_editorTreeToggleActive{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-active)}.s56VVa_editorBody{flex:1;min-height:0;display:flex}.s56VVa_editorMain{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.s56VVa_editorTreeDock{border-left:1px solid var(--dsw-alias-border-l1);flex:none;min-height:0;display:flex;position:relative}.s56VVa_editorTreeResize{cursor:col-resize;touch-action:none;z-index:3;width:6px;position:absolute;top:0;bottom:0;left:0}.s56VVa_editorTreeResize:hover{background:var(--dsw-alias-border-l2)}.s56VVa_editorTreePanel{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative}.s56VVa_editorTreePanelFull{flex:1}.s56VVa_editorTreeSearch{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:6px;padding:6px 8px;display:flex}.s56VVa_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}.s56VVa_editorSearchInput:focus{border-color:var(--dsw-alias-border-l2);outline:none}.s56VVa_editorSearchHint{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary);padding:8px 12px}.s56VVa_editorSearchResult{box-sizing:border-box;width:100%;height:28px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xxs-12);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:6px;padding:0 8px;line-height:28px;display:flex;overflow:hidden}.s56VVa_editorSearchResultDir{color:var(--dsw-alias-label-secondary)}.s56VVa_editorSearchResultLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.s56VVa_editorSearchResult:hover{background:var(--dsw-alias-interactive-bg-hover)}.s56VVa_editorStatus{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-tertiary)}.s56VVa_editorStatusError{color:var(--dsw-alias-state-error-primary)}.s56VVa_dirtyDot{background:var(--dsw-alias-state-warn-primary);border-radius:50%;flex:none;width:7px;height:7px}.s56VVa_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}.s56VVa_orphanedType{opacity:.7;overflow-wrap:anywhere;margin-top:8px;font-size:12px;display:block}.s56VVa_editorBinary{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;padding:24px 16px;display:flex}.s56VVa_editorBinaryNotice{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary)}.s56VVa_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}.s56VVa_editorDownloadLink:hover{background:var(--dsw-alias-interactive-bg-hover);border-color:var(--dsw-alias-border-l2)}.s56VVa_editorError{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-state-error-primary);padding:12px 16px}.s56VVa_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}.s56VVa_editorBannerAction{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;margin-left:8px;padding:0;text-decoration:underline}.s56VVa_editorGitAdd{color:var(--dsw-alias-state-success-primary)}.s56VVa_editorGitMod{color:var(--dsw-alias-state-warn-primary)}.s56VVa_editorGitDel{color:var(--dsw-alias-state-error-primary)}.s56VVa_editorGitBarGutter{width:2px;min-width:2px}.s56VVa_editorGitBar,.s56VVa_editorGitBarSpacer{width:2px;height:100%}.s56VVa_editorGitBarAdd{background:var(--dsw-alias-state-success-primary)}.s56VVa_editorGitBarMod{background:var(--dsw-alias-state-warn-primary)}.s56VVa_editorGitBarDel{background:var(--dsw-alias-state-error-primary)}.s56VVa_editorBlame{max-width:420px;font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-primary);padding:4px 8px}.s56VVa_editorBlameHead{color:var(--dsw-alias-label-secondary)}.s56VVa_editorBlameSummary{color:var(--dsw-alias-label-primary);white-space:pre-wrap;overflow-wrap:anywhere;margin-top:2px}.s56VVa_sandboxStatus{font:var(--dsw-font-xxxs-11);flex:none;align-items:center;gap:8px;padding:4px 10px;display:flex}.s56VVa_sandboxStatusOn{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);border-bottom:1px solid var(--dsw-alias-border-l1)}.s56VVa_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)}.s56VVa_sandboxDot{background:var(--dsw-alias-state-success-primary);border-radius:50%;flex:none;width:6px;height:6px}.s56VVa_sandboxStatusOff .s56VVa_sandboxDot{background:var(--dsw-alias-state-error-primary)}.s56VVa_sandboxStatusText{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.s56VVa_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}.s56VVa_sandboxAction:hover{background:var(--dsw-alias-interactive-bg-hover)}.s56VVa_editorHtml{background:var(--dsw-alias-bg-base);border:none;flex:1;width:100%;min-height:0}.s56VVa_browser{flex-direction:column;flex:1;min-height:0;display:flex}.s56VVa_browserBar{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:4px;padding:6px 8px;display:flex}.s56VVa_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}.s56VVa_browserInput:focus{border-color:var(--dsw-alias-border-l2);outline:none}.s56VVa_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}.s56VVa_browserFrame{background:var(--dsw-alias-bg-base);border:none;flex:1;width:100%;min-height:0}.s56VVa_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}.s56VVa_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}.s56VVa_browserBlockedTitle{font:var(--dsw-font-xxs-strong-12);color:var(--dsw-alias-label-primary)}.s56VVa_browserBlockedDesc{max-width:280px;font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-secondary)}.s56VVa_browserBlockedActions{gap:8px;margin-top:6px;display:flex}.s56VVa_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}.s56VVa_browserBlockedButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.s56VVa_editorCm{background:0 0;flex:1;min-height:0;overflow:hidden}.s56VVa_editorCmHidden{display:none}.s56VVa_editorCm .cm-editor{height:100%}.s56VVa_editorCm .cm-scroller{padding:12px 16px}.s56VVa_editorCm .cm-editor.cm-focused{outline:none}.s56VVa_editorModeToggle{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:6px;flex:none;align-items:center;gap:2px;padding:2px;display:inline-flex}.s56VVa_editorModeButton{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xxxs-11);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 8px}.s56VVa_editorModeButton:hover{color:var(--dsw-alias-label-primary)}.s56VVa_editorModeActive{background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-primary)}.s56VVa_editorMd{min-height:0;font:var(--dsw-font-xs-13);flex:1;padding:12px 16px;overflow-y:auto}.s56VVa_editorMd .md-code-block:not([data-mermaid-processed])>div:first-child{z-index:auto;position:static}.s56VVa_mermaidWrap{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:6px;margin:6px 0;overflow:hidden}.s56VVa_mermaidHeader{border-bottom:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);justify-content:space-between;align-items:center;gap:6px;padding:4px 8px;display:flex}.s56VVa_mermaidInfo{font:var(--dsw-font-xxxs-strong-11);color:var(--dsw-alias-label-tertiary)}.s56VVa_mermaidCopy{height:20px;color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxxs-11);cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:4px;padding:0 6px;display:inline-flex}.s56VVa_mermaidCopy:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.s56VVa_mermaidBody{cursor:zoom-in;justify-content:center;padding:10px;display:flex;overflow:auto}.s56VVa_mermaidBody svg{max-width:100%;height:auto}.s56VVa_mermaidError{border-bottom:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-state-error-primary);font:var(--dsw-font-xxxs-11);padding:6px 10px}.s56VVa_mermaidCode{font:var(--dsw-font-xxxs-11);margin:0;padding:8px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;overflow:auto}.s56VVa_mermaidMarkdown .md-code-block[data-mermaid-processed]{display:contents}.s56VVa_mermaidModal{z-index:1000;background:var(--dsw-alias-bg-mask-1);backdrop-filter:blur(2px);flex-direction:column;justify-content:center;align-items:center;display:flex;position:fixed;inset:0;-webkit-app-region:initial!important}.s56VVa_mermaidModalToolbar{z-index:10;gap:8px;display:flex;position:absolute;top:16px;right:16px}.s56VVa_mermaidModalButton{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);width:36px;height:36px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-xs-strong-13);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.s56VVa_mermaidModalButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.s56VVa_mermaidModalStage{justify-content:center;align-items:center;width:90vw;height:80vh;display:flex;position:relative;overflow:hidden}.s56VVa_mermaidModalStage svg{cursor:grab;transform-origin:50%;user-select:none;-webkit-user-drag:none;background:var(--dsw-alias-bg-layer-1);border-radius:12px;max-width:none;max-height:none;padding:16px}.s56VVa_mermaidModalStage svg:active{cursor:grabbing}.s56VVa_mermaidModalHint{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xxxs-11);pointer-events:none;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.s56VVa_selectionPopup{z-index:60;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-specific-menu);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))}.s56VVa_selectionPopup:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.s56VVa_editorPdf{background:var(--dsw-alias-bg-base);flex-direction:column;flex:1;min-height:0;display:flex}.s56VVa_editorPdfToolbar{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;justify-content:flex-end;padding:6px 8px;display:flex}.s56VVa_editorPdfStage{flex:1;min-height:0;display:flex;position:relative}.s56VVa_editorPdfFrame{background:var(--dsw-alias-bg-base);border:none;flex:1;width:100%;min-height:0}.s56VVa_editorPdfFrameBlocked{pointer-events:none}.s56VVa_editorPdfDragShield{z-index:4;pointer-events:none;background:0 0;position:absolute;inset:0}.s56VVa_editorPdfDragShieldActive{pointer-events:auto}body[data-dsh-tab-dragging] .s56VVa_editorPdfFrame{pointer-events:none!important}body[data-dsh-tab-dragging] .s56VVa_editorPdfDragShield{pointer-events:auto!important}.s56VVa_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}.s56VVa_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}.s56VVa_terminalRetry:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.s56VVa_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}.s56VVa_nativeTabHost{flex-direction:column;height:100%;min-height:0;display:flex}.s56VVa_gitEmpty{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary);padding:4px 12px 8px}.s56VVa_gitPlaceholder{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-label-tertiary);text-align:center;padding:16px}.s56VVa_gitError{font:var(--dsw-font-xxs-12);color:var(--dsw-alias-state-error-primary);white-space:pre-wrap;padding:8px 12px}.s56VVa_gitDiffTab{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden auto}.s56VVa_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}.s56VVa_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}.s56VVa_toggleButton:focus-visible,.s56VVa_bottomClose:focus-visible,.s56VVa_iconButton:focus-visible,.s56VVa_tab:focus-visible,.s56VVa_tabClose:focus-visible,.s56VVa_tabBarPlus:focus-visible,.s56VVa_paneCard:focus-visible,.s56VVa_explorerRow:focus-visible,.s56VVa_explorerRef:focus-visible,.s56VVa_terminalRetry:focus-visible,.s56VVa_editorModeButton:focus-visible,.s56VVa_editorDownloadLink:focus-visible,.s56VVa_editorPptxButton:focus-visible,.s56VVa_editorDocxZoomRange:focus-visible{outline:2px solid var(--dsw-alias-interactive-bg-hover-accent);outline-offset:-1px}@media (prefers-reduced-motion:reduce){.s56VVa_bottomPanel,.s56VVa_bottomPanelHidden,.s56VVa_toggleButton,.s56VVa_tab,.s56VVa_tabBarPlus,.s56VVa_paneCard,.s56VVa_explorerRow,.s56VVa_divider,.s56VVa_dividerRow:after,.s56VVa_dividerCol:after{transition:none;animation:none}}@media (width<=767px){.s56VVa_tab{min-width:48px;max-width:128px}}.s56VVa_openWithLabel{align-items:center;gap:8px;width:100%;min-width:0;display:flex}.s56VVa_openWithName{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.s56VVa_openWithChevron{color:var(--dsw-alias-label-tertiary);flex:none}.s56VVa_openWithPin{width:16px;height:16px;color:var(--dsw-alias-label-tertiary);cursor:pointer;border-radius:5px;flex:none;justify-content:center;align-items:center;display:inline-flex}.s56VVa_openWithPin:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.s56VVa_openWithPinActive{color:var(--dsw-alias-state-business-primary)}.s56VVa_editorHtmlBlock{margin:8px 0}.s56VVa_editorHtmlBlock img,.s56VVa_editorHtmlBlock video{max-width:100%}.s56VVa_editorHtmlBlock details{margin:4px 0;padding:4px 0}.s56VVa_editorHtmlBlock summary,.s56VVa_editorMd details>summary{cursor:pointer}.s56VVa_tocBar{z-index:7;pointer-events:none;justify-content:flex-end;height:0;display:flex;position:sticky;top:0}.s56VVa_tocButton{pointer-events:auto;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);width:26px;height:26px;color:var(--dsw-alias-label-secondary);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;margin:4px 2px 0 0;padding:0;display:inline-flex}.s56VVa_tocButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.s56VVa_tocPanel{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);width:min(300px,82%);max-height:60vh;box-shadow:var(--dsw-shadow-lv2);pointer-events:auto;border-radius:8px;flex-direction:column;padding:4px;display:flex;position:absolute;top:32px;right:2px;overflow-y:auto}.s56VVa_tocItem{min-width:0;color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-12);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:baseline;gap:8px;padding:4px 8px;display:flex}.s56VVa_tocItem:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.s56VVa_tocItem[data-level=\"2\"]{padding-left:18px}.s56VVa_tocItem[data-level=\"3\"]{padding-left:28px}.s56VVa_tocItem[data-level=\"4\"]{padding-left:38px}.s56VVa_tocItem[data-level=\"5\"]{padding-left:48px}.s56VVa_tocItem[data-level=\"6\"]{padding-left:58px}.s56VVa_tocItemLevel{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-tertiary);flex:none}.s56VVa_tocItemText{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}@keyframes s56VVa_dsh-toc-flash{0%,60%{background:var(--dsw-alias-interactive-bg-hover)}to{background:0 0}}.s56VVa_tocFlash{border-radius:4px;animation:1.2s ease-out s56VVa_dsh-toc-flash}.s56VVa_largeFile{flex-direction:column;flex:1;min-height:0;display:flex}.s56VVa_largeFileNotice{font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-state-warn-label);background:var(--dsw-alias-state-warn-tertiary);flex:none;align-items:baseline;gap:8px;padding:4px 8px;display:flex}.s56VVa_largeFileDownload{color:inherit;text-decoration:underline}.s56VVa_largeFileNoticeAction{font:inherit;color:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:4px;margin-left:auto;padding:0 6px}.s56VVa_largeFileNoticeAction:disabled{opacity:.5;cursor:default}.s56VVa_largeFileBody{flex:1;min-height:0;overflow:auto}.s56VVa_largeFileRecords{padding:4px 0}.s56VVa_largeFileList{margin:0;padding:0;list-style:none}.s56VVa_largeFileRecord{gap:8px;padding:2px 8px;display:flex}.s56VVa_largeFileRecordExpanded{background:var(--dsw-alias-bg-layer-1)}.s56VVa_largeFileRecordInvalid{color:var(--dsw-alias-state-error-primary)}.s56VVa_largeFileRecordNo{text-align:right;min-width:4ch;font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-tertiary);user-select:none;flex:none}.s56VVa_largeFileRecordBody{flex:1;min-width:0}.s56VVa_largeFileRecordSummary{text-align:left;width:100%;font:var(--ds-font-family-code);color:var(--dsw-alias-label-primary);white-space:pre;text-overflow:ellipsis;cursor:pointer;background:0 0;border:0;padding:0;font-size:12px;display:block;overflow:hidden}.s56VVa_largeFileRecordSummary:disabled{cursor:default}.s56VVa_largeFileRecordRaw{font:var(--ds-font-family-code);white-space:pre-wrap;word-break:break-all;overflow-wrap:anywhere;margin:2px 0 0;font-size:12px}.s56VVa_largeFileRecordTree{font:var(--ds-font-family-code);margin-top:2px;font-size:12px}.s56VVa_largeFileLines{font:var(--ds-font-family-code);white-space:pre;padding:4px 0;font-size:12px}.s56VVa_largeFileLine{gap:8px;padding:0 8px;display:flex}.s56VVa_largeFileLineNo{text-align:right;min-width:5ch;color:var(--dsw-alias-label-tertiary);user-select:none;flex:none}.s56VVa_largeFileLineText{color:var(--dsw-alias-label-primary);flex:none}.s56VVa_largeFilePager{border-top:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);flex:none;align-items:center;gap:4px;padding:2px 8px;display:flex}.s56VVa_largeFilePageLabel{text-align:center;min-width:0;font:var(--dsw-font-xxxs-11);color:var(--dsw-alias-label-secondary);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.s56VVa_explorerMuted{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xxs-12);cursor:default}[data-sidebar-right-guide]{grid-template-columns:repeat(auto-fill,minmax(96px,120px))!important;place-content:center!important;place-items:stretch stretch!important;gap:12px!important;padding:16px!important;display:grid!important;overflow:auto!important}[data-sidebar-right-guide]>div{aspect-ratio:1!important;flex:none!important;width:100%!important;min-width:0!important;max-width:none!important;min-height:0!important;display:flex!important}[data-sidebar-right-guide]>div [data-sidebar-right-guide-entry]{box-sizing:border-box!important;text-align:center!important;flex-direction:column!important;justify-content:center!important;align-items:center!important;gap:8px!important;width:100%!important;height:100%!important;padding:12px!important}[data-sidebar-right-guide] kbd,[data-sidebar-right-guide] span:has(>kbd){display:none!important}[data-sidebar-right-guide]>div [data-sidebar-right-guide-entry]>span:last-child{flex:0 auto!important;align-items:center!important;width:100%!important;height:auto!important;min-height:0!important}[data-sidebar-right-guide] [data-sidebar-right-guide-entry=terminal]{position:relative!important}[data-sidebar-right-guide] [data-sidebar-right-guide-entry=terminal] [class*=titleRow]{flex-flow:row!important;justify-content:center!important;align-items:center!important;gap:2px!important;height:20px!important;min-height:0!important;display:flex!important;position:static!important}[data-sidebar-right-guide] [data-sidebar-right-guide-entry=terminal] [class*=menu],[data-sidebar-right-guide] [data-sidebar-right-guide-entry=terminal] [class*=trigger],[data-sidebar-right-guide] [data-sidebar-right-guide-entry=terminal] button:not([class*=main]){z-index:1!important;flex:0 0 20px!important;width:20px!important;height:20px!important;min-height:0!important;padding:0!important;position:static!important;top:auto!important;bottom:auto!important;right:auto!important;transform:none!important}[data-sidebar-right-guide] [data-sidebar-right-guide-entry=terminal] [class*=title]{white-space:nowrap!important;text-overflow:ellipsis!important;overflow:hidden!important}[data-sidebar-right-guide]>div [data-sidebar-right-guide-entry] span{white-space:normal!important;text-overflow:clip!important;min-width:0!important;max-width:100%!important;overflow:visible!important}[data-sidebar-right-guide]>span:first-child{grid-column:1/-1;justify-self:center;margin:4px 0 8px}@media (width<=640px){[data-sidebar-right-guide]{grid-template-columns:repeat(auto-fill,minmax(88px,108px))!important;padding:12px!important}}[data-sidebar-right-guide-entry=terminal]{box-sizing:border-box!important;flex-direction:row!important;justify-content:center!important;align-self:stretch!important;align-items:center!important;gap:6px!important;width:100%!important;height:100%!important;min-height:0!important;padding:8px!important;display:flex!important;overflow:hidden!important}[data-sidebar-right-guide-entry=terminal]>span{flex:0 auto!important}[data-sidebar-right-guide-entry=terminal] [class*=text]{flex-direction:column!important;justify-content:center!important;align-items:center!important;gap:1px!important;min-width:0!important;display:flex!important}[data-sidebar-right-guide-entry=terminal] [class*=titleRow]{box-sizing:border-box!important;flex-flow:row!important;justify-content:center!important;align-items:center!important;gap:0!important;width:100%!important;height:18px!important;min-height:0!important;max-height:18px!important;padding:0 20px!important;display:flex!important;position:relative!important}[data-sidebar-right-guide-entry=terminal] [class*=title]{text-overflow:clip!important;white-space:nowrap!important;flex:none!important;max-width:none!important;font-size:12px!important;line-height:1.2!important;overflow:visible!important}[data-sidebar-right-guide-entry=terminal] [class*=trigger]{z-index:1!important;flex:0 0 16px!important;width:16px!important;min-width:16px!important;height:16px!important;min-height:16px!important;padding:0!important;position:absolute!important;top:50%!important;right:0!important;transform:translateY(-50%)!important}[data-sidebar-right-guide-entry=terminal] [class*=trigger] svg{width:12px!important;height:12px!important}[data-sidebar-right-guide-entry=terminal] [class*=description]{text-overflow:ellipsis!important;white-space:nowrap!important;max-width:100%!important;overflow:hidden!important}[data-sidebar-right-guide-entry]:not([data-sidebar-right-guide-entry=terminal]){justify-content:center!important;align-items:center!important}[data-sidebar-right-guide-entry]:not([data-sidebar-right-guide-entry=terminal])>span:last-child{flex-direction:column!important;justify-content:center!important;align-self:center!important;align-items:center!important;display:flex!important}[data-sidebar-right-guide-entry]:not([data-sidebar-right-guide-entry=terminal]){box-sizing:border-box!important;flex-direction:column!important;justify-content:center!important;align-self:stretch!important;align-items:center!important;width:100%!important;height:100%!important;display:flex!important}";
8030
8280
  const tagId$8 = "@sparkelf/dsh-knowledge-base/sidebar.module.css";
8031
8281
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$8) + "]") === null) {
8032
8282
  const tag = document.createElement("style");
@@ -8036,233 +8286,234 @@ window.__ModuleLoader__.load({
8036
8286
  document.head.appendChild(tag);
8037
8287
  }
8038
8288
  var sidebar_module_css_default = {
8039
- "editorTreePanel": "QgejbG_editorTreePanel",
8040
- "bottomResize": "QgejbG_bottomResize",
8041
- "editorGitBarDel": "QgejbG_editorGitBarDel",
8042
- "editorPdfFrameBlocked": "QgejbG_editorPdfFrameBlocked",
8043
- "gitDiffTab": "QgejbG_gitDiffTab",
8044
- "gitPlaceholder": "QgejbG_gitPlaceholder",
8045
- "mermaidModalButton": "QgejbG_mermaidModalButton",
8046
- "browserStart": "QgejbG_browserStart",
8047
- "browserBar": "QgejbG_browserBar",
8048
- "uploadDropZoneText": "QgejbG_uploadDropZoneText",
8049
- "uploadOverlayProgressFill": "QgejbG_uploadOverlayProgressFill",
8050
- "editorHtmlBlock": "QgejbG_editorHtmlBlock",
8051
- "tabUnreadDot": "QgejbG_tabUnreadDot",
8052
- "explorerTime": "QgejbG_explorerTime",
8053
- "bottomPanelHidden": "QgejbG_bottomPanelHidden",
8054
- "dsh-row-in": "QgejbG_dsh-row-in",
8055
- "editorGitDel": "QgejbG_editorGitDel",
8056
- "editorHeader": "QgejbG_editorHeader",
8057
- "editorCmHidden": "QgejbG_editorCmHidden",
8058
- "tocPanel": "QgejbG_tocPanel",
8059
- "largeFileRecordBody": "QgejbG_largeFileRecordBody",
8060
- "browserMessage": "QgejbG_browserMessage",
8061
- "uploadOverlayTitle": "QgejbG_uploadOverlayTitle",
8062
- "editorTreeResize": "QgejbG_editorTreeResize",
8063
- "editorBlame": "QgejbG_editorBlame",
8064
- "editorSearchInput": "QgejbG_editorSearchInput",
8065
- "uploadDropArtCut": "QgejbG_uploadDropArtCut",
8066
- "mermaidMarkdown": "QgejbG_mermaidMarkdown",
8067
- "editorSearchHint": "QgejbG_editorSearchHint",
8068
- "tabTitle": "QgejbG_tabTitle",
8069
- "splitRow": "QgejbG_splitRow",
8070
- "editorPdf": "QgejbG_editorPdf",
8071
- "browserBlockedActions": "QgejbG_browserBlockedActions",
8072
- "gitEmpty": "QgejbG_gitEmpty",
8073
- "editorGitBarSpacer": "QgejbG_editorGitBarSpacer",
8074
- "tocItem": "QgejbG_tocItem",
8075
- "editorDocxZoomRange": "QgejbG_editorDocxZoomRange",
8076
- "iconButton": "QgejbG_iconButton",
8077
- "largeFilePager": "QgejbG_largeFilePager",
8078
- "tabClose": "QgejbG_tabClose",
8079
- "uploadDropArtAccent": "QgejbG_uploadDropArtAccent",
8080
- "explorerRenameInput": "QgejbG_explorerRenameInput",
8081
- "dropUp": "QgejbG_dropUp",
8082
- "dsh-toc-flash": "QgejbG_dsh-toc-flash",
8083
- "largeFileRecordNo": "QgejbG_largeFileRecordNo",
8084
- "mermaidHeader": "QgejbG_mermaidHeader",
8085
- "openWithChevron": "QgejbG_openWithChevron",
8086
- "uploadDropChatCard": "QgejbG_uploadDropChatCard",
8087
- "explorerRoot": "QgejbG_explorerRoot",
8088
- "largeFileLineText": "QgejbG_largeFileLineText",
8089
- "editorStatus": "QgejbG_editorStatus",
8090
- "explorerRef": "QgejbG_explorerRef",
8091
- "editorModeActive": "QgejbG_editorModeActive",
8092
- "editorPlaceholder": "QgejbG_editorPlaceholder",
8093
- "editorBannerAction": "QgejbG_editorBannerAction",
8094
- "editorPdfStage": "QgejbG_editorPdfStage",
8095
- "terminalRetry": "QgejbG_terminalRetry",
8096
- "splitChild": "QgejbG_splitChild",
8097
- "explorerHidden": "QgejbG_explorerHidden",
8098
- "paneContent": "QgejbG_paneContent",
8099
- "editorTitle": "QgejbG_editorTitle",
8100
- "sandboxStatusText": "QgejbG_sandboxStatusText",
8101
- "tabBar": "QgejbG_tabBar",
8102
- "paneCard": "QgejbG_paneCard",
8103
- "mermaidModalToolbar": "QgejbG_mermaidModalToolbar",
8104
- "gitDiffTabHeader": "QgejbG_gitDiffTabHeader",
8105
- "openWithName": "QgejbG_openWithName",
8106
- "explorerSelectionBar": "QgejbG_explorerSelectionBar",
8107
- "chipUnread": "QgejbG_chipUnread",
8108
- "tabList": "QgejbG_tabList",
8109
- "explorerHiddenPane": "QgejbG_explorerHiddenPane",
8110
- "uploadOverlayCard": "QgejbG_uploadOverlayCard",
8111
- "editorStatusError": "QgejbG_editorStatusError",
8112
- "editorBinary": "QgejbG_editorBinary",
8113
- "dropLeft": "QgejbG_dropLeft",
8114
- "paneEmptyCards": "QgejbG_paneEmptyCards",
8115
- "uploadDropHero": "QgejbG_uploadDropHero",
8116
- "sandboxStatusOn": "QgejbG_sandboxStatusOn",
8117
- "editorMd": "QgejbG_editorMd",
8118
- "uploadDropArtPrimary": "QgejbG_uploadDropArtPrimary",
8119
- "uploadOverlayStatus": "QgejbG_uploadOverlayStatus",
8120
- "orphanedType": "QgejbG_orphanedType",
8121
- "uploadDropZonePill": "QgejbG_uploadDropZonePill",
8122
- "editorCm": "QgejbG_editorCm",
8123
- "mermaidModalHint": "QgejbG_mermaidModalHint",
8124
- "selectionPopup": "QgejbG_selectionPopup",
8125
- "tabBoundaryError": "QgejbG_tabBoundaryError",
8126
- "mermaidBody": "QgejbG_mermaidBody",
8127
- "editorGitBarAdd": "QgejbG_editorGitBarAdd",
8128
- "chipIcon": "QgejbG_chipIcon",
8129
- "browserFrame": "QgejbG_browserFrame",
8130
- "tocBar": "QgejbG_tocBar",
8131
- "editorPdfFrame": "QgejbG_editorPdfFrame",
8132
- "largeFile": "QgejbG_largeFile",
8133
- "largeFileRecords": "QgejbG_largeFileRecords",
8134
- "bottomClose": "QgejbG_bottomClose",
8135
- "editorPdfDragShield": "QgejbG_editorPdfDragShield",
8136
- "openWithPin": "QgejbG_openWithPin",
8137
- "dropOverlay": "QgejbG_dropOverlay",
8138
- "bottomResizeActive": "QgejbG_bottomResizeActive",
8139
- "explorerHeader": "QgejbG_explorerHeader",
8140
- "editorError": "QgejbG_editorError",
8141
- "editorTreeSearch": "QgejbG_editorTreeSearch",
8142
- "paneTab": "QgejbG_paneTab",
8143
- "editorGitAdd": "QgejbG_editorGitAdd",
8144
- "editorGitMod": "QgejbG_editorGitMod",
8145
- "explorerName": "QgejbG_explorerName",
8146
- "openWithPinActive": "QgejbG_openWithPinActive",
8147
- "pane": "QgejbG_pane",
8148
- "tocFlash": "QgejbG_tocFlash",
8149
- "largeFileNoticeAction": "QgejbG_largeFileNoticeAction",
8150
- "browserBlockedButton": "QgejbG_browserBlockedButton",
8151
- "largeFileRecord": "QgejbG_largeFileRecord",
8152
- "editorHtml": "QgejbG_editorHtml",
8153
- "largeFileRecordSummary": "QgejbG_largeFileRecordSummary",
8154
- "largeFilePageLabel": "QgejbG_largeFilePageLabel",
8155
- "explorerDir": "QgejbG_explorerDir",
8156
- "uploadOverlayProgress": "QgejbG_uploadOverlayProgress",
8157
- "editorPathInput": "QgejbG_editorPathInput",
8158
- "largeFileDownload": "QgejbG_largeFileDownload",
8159
- "explorerBody": "QgejbG_explorerBody",
8160
- "explorerSelectionActions": "QgejbG_explorerSelectionActions",
8161
- "largeFileRecordInvalid": "QgejbG_largeFileRecordInvalid",
8162
- "explorerDirChanged": "QgejbG_explorerDirChanged",
8163
- "gitError": "QgejbG_gitError",
8164
- "mermaidCode": "QgejbG_mermaidCode",
8165
- "largeFileRecordTree": "QgejbG_largeFileRecordTree",
8166
- "largeFileRecordRaw": "QgejbG_largeFileRecordRaw",
8167
- "explorerRow": "QgejbG_explorerRow",
8168
- "panelBody": "QgejbG_panelBody",
8169
- "editorModeButton": "QgejbG_editorModeButton",
8170
- "toggleButton": "QgejbG_toggleButton",
8171
- "largeFileLineNo": "QgejbG_largeFileLineNo",
8172
- "dropDown": "QgejbG_dropDown",
8173
- "explorerRowSelected": "QgejbG_explorerRowSelected",
8174
- "dividerCol": "QgejbG_dividerCol",
8175
- "dockFallback": "QgejbG_dockFallback",
8176
- "explorerGitName": "QgejbG_explorerGitName",
8177
- "explorerEmpty": "QgejbG_explorerEmpty",
8178
- "editorTreeDock": "QgejbG_editorTreeDock",
8179
- "paneTabHidden": "QgejbG_paneTabHidden",
8180
- "editorBanner": "QgejbG_editorBanner",
8181
- "editorBlameHead": "QgejbG_editorBlameHead",
8182
- "sandboxStatus": "QgejbG_sandboxStatus",
8183
- "browserBlockedDesc": "QgejbG_browserBlockedDesc",
8184
- "editorModeToggle": "QgejbG_editorModeToggle",
8185
- "dropCenter": "QgejbG_dropCenter",
8186
- "editorSearchResultLabel": "QgejbG_editorSearchResultLabel",
8187
- "editor": "QgejbG_editor",
8188
- "editorGitBarMod": "QgejbG_editorGitBarMod",
8189
- "mermaidError": "QgejbG_mermaidError",
8190
- "explorerError": "QgejbG_explorerError",
8191
- "explorerActionErrorText": "QgejbG_explorerActionErrorText",
8192
- "uploadDropChatHint": "QgejbG_uploadDropChatHint",
8193
- "editorGitBarGutter": "QgejbG_editorGitBarGutter",
8194
- "sandboxDot": "QgejbG_sandboxDot",
8195
- "explorerCopied": "QgejbG_explorerCopied",
8196
- "editorBody": "QgejbG_editorBody",
8197
- "editorPdfToolbar": "QgejbG_editorPdfToolbar",
8198
- "tabActive": "QgejbG_tabActive",
8199
- "explorerRenaming": "QgejbG_explorerRenaming",
8200
- "editorDownloadLink": "QgejbG_editorDownloadLink",
8201
- "editorGitBar": "QgejbG_editorGitBar",
8202
- "dividerActive": "QgejbG_dividerActive",
8203
- "tabBarRightActions": "QgejbG_tabBarRightActions",
8204
- "browser": "QgejbG_browser",
8205
- "explorer": "QgejbG_explorer",
8206
- "openWithLabel": "QgejbG_openWithLabel",
8207
- "explorerRowDropTarget": "QgejbG_explorerRowDropTarget",
8208
- "browserInput": "QgejbG_browserInput",
8209
- "largeFileBody": "QgejbG_largeFileBody",
8210
- "bottomPanel": "QgejbG_bottomPanel",
8211
- "dirtyDot": "QgejbG_dirtyDot",
8212
- "uploadOverlayCancel": "QgejbG_uploadOverlayCancel",
8213
- "tab": "QgejbG_tab",
8214
- "editorTreePanelFull": "QgejbG_editorTreePanelFull",
8215
- "editorBinaryNotice": "QgejbG_editorBinaryNotice",
8216
- "boundaryError": "QgejbG_boundaryError",
8217
- "nativeTabHost": "QgejbG_nativeTabHost",
8218
- "tocItemText": "QgejbG_tocItemText",
8219
- "largeFileRecordExpanded": "QgejbG_largeFileRecordExpanded",
8220
- "largeFileLines": "QgejbG_largeFileLines",
8221
- "editorSearchResultDir": "QgejbG_editorSearchResultDir",
8222
- "panel": "QgejbG_panel",
8223
- "splitCol": "QgejbG_splitCol",
8224
- "divider": "QgejbG_divider",
8225
- "mermaidModal": "QgejbG_mermaidModal",
8226
- "largeFileLine": "QgejbG_largeFileLine",
8227
- "dropRight": "QgejbG_dropRight",
8228
- "dividerRow": "QgejbG_dividerRow",
8229
- "explorerAppIcon": "QgejbG_explorerAppIcon",
8230
- "sandboxAction": "QgejbG_sandboxAction",
8231
- "tocItemLevel": "QgejbG_tocItemLevel",
8232
- "tabBarDrop": "QgejbG_tabBarDrop",
8233
- "tabBarPlus": "QgejbG_tabBarPlus",
8234
- "editorMain": "QgejbG_editorMain",
8235
- "uploadDropMask": "QgejbG_uploadDropMask",
8236
- "workbench": "QgejbG_workbench",
8237
- "mermaidWrap": "QgejbG_mermaidWrap",
8238
- "editorPdfDragShieldActive": "QgejbG_editorPdfDragShieldActive",
8239
- "explorerSelectionText": "QgejbG_explorerSelectionText",
8240
- "sandboxStatusOff": "QgejbG_sandboxStatusOff",
8241
- "gitDiffTabTitle": "QgejbG_gitDiffTabTitle",
8242
- "editorPptxButton": "QgejbG_editorPptxButton",
8243
- "explorerSymlink": "QgejbG_explorerSymlink",
8244
- "explorerActionError": "QgejbG_explorerActionError",
8245
- "mermaidCopy": "QgejbG_mermaidCopy",
8246
- "largeFileNotice": "QgejbG_largeFileNotice",
8247
- "browserBlocked": "QgejbG_browserBlocked",
8248
- "paneDrop": "QgejbG_paneDrop",
8249
- "uploadDropZone": "QgejbG_uploadDropZone",
8250
- "browserBlockedTitle": "QgejbG_browserBlockedTitle",
8251
- "split": "QgejbG_split",
8252
- "tabBadge": "QgejbG_tabBadge",
8253
- "editorBlameSummary": "QgejbG_editorBlameSummary",
8254
- "mermaidInfo": "QgejbG_mermaidInfo",
8255
- "editorTreeToggleActive": "QgejbG_editorTreeToggleActive",
8256
- "mermaidModalStage": "QgejbG_mermaidModalStage",
8257
- "explorerBroken": "QgejbG_explorerBroken",
8258
- "editorSearchResult": "QgejbG_editorSearchResult",
8259
- "uploadOverlay": "QgejbG_uploadOverlay",
8260
- "explorerRowRevealed": "QgejbG_explorerRowRevealed",
8261
- "tocButton": "QgejbG_tocButton",
8262
- "largeFileList": "QgejbG_largeFileList"
8289
+ "uploadDropZone": "s56VVa_uploadDropZone",
8290
+ "editorTreeToggleActive": "s56VVa_editorTreeToggleActive",
8291
+ "editorSearchResultDir": "s56VVa_editorSearchResultDir",
8292
+ "dropDown": "s56VVa_dropDown",
8293
+ "panelBody": "s56VVa_panelBody",
8294
+ "chipIcon": "s56VVa_chipIcon",
8295
+ "browserBlockedTitle": "s56VVa_browserBlockedTitle",
8296
+ "uploadDropZonePill": "s56VVa_uploadDropZonePill",
8297
+ "explorerActionErrorText": "s56VVa_explorerActionErrorText",
8298
+ "uploadDropArtPrimary": "s56VVa_uploadDropArtPrimary",
8299
+ "largeFileRecordNo": "s56VVa_largeFileRecordNo",
8300
+ "dropCenter": "s56VVa_dropCenter",
8301
+ "explorerRow": "s56VVa_explorerRow",
8302
+ "pane": "s56VVa_pane",
8303
+ "uploadDropZoneText": "s56VVa_uploadDropZoneText",
8304
+ "tocButton": "s56VVa_tocButton",
8305
+ "terminalRetry": "s56VVa_terminalRetry",
8306
+ "largeFileRecordTree": "s56VVa_largeFileRecordTree",
8307
+ "boundaryError": "s56VVa_boundaryError",
8308
+ "largeFileLineNo": "s56VVa_largeFileLineNo",
8309
+ "paneCard": "s56VVa_paneCard",
8310
+ "editorHeader": "s56VVa_editorHeader",
8311
+ "editorPdfToolbar": "s56VVa_editorPdfToolbar",
8312
+ "editorBlameHead": "s56VVa_editorBlameHead",
8313
+ "paneTab": "s56VVa_paneTab",
8314
+ "tocItemText": "s56VVa_tocItemText",
8315
+ "mermaidMarkdown": "s56VVa_mermaidMarkdown",
8316
+ "editorSearchHint": "s56VVa_editorSearchHint",
8317
+ "editorHtmlBlock": "s56VVa_editorHtmlBlock",
8318
+ "tocItemLevel": "s56VVa_tocItemLevel",
8319
+ "gitDiffTabTitle": "s56VVa_gitDiffTabTitle",
8320
+ "openWithLabel": "s56VVa_openWithLabel",
8321
+ "editorBanner": "s56VVa_editorBanner",
8322
+ "paneContent": "s56VVa_paneContent",
8323
+ "explorerRowSelected": "s56VVa_explorerRowSelected",
8324
+ "split": "s56VVa_split",
8325
+ "selectionPopup": "s56VVa_selectionPopup",
8326
+ "orphanedType": "s56VVa_orphanedType",
8327
+ "tocFlash": "s56VVa_tocFlash",
8328
+ "dropUp": "s56VVa_dropUp",
8329
+ "mermaidInfo": "s56VVa_mermaidInfo",
8330
+ "sandboxDot": "s56VVa_sandboxDot",
8331
+ "editorStatus": "s56VVa_editorStatus",
8332
+ "explorerRoot": "s56VVa_explorerRoot",
8333
+ "editorPdfFrame": "s56VVa_editorPdfFrame",
8334
+ "editorTreePanelFull": "s56VVa_editorTreePanelFull",
8335
+ "editorBlame": "s56VVa_editorBlame",
8336
+ "tocItem": "s56VVa_tocItem",
8337
+ "splitRow": "s56VVa_splitRow",
8338
+ "gitDiffTabHeader": "s56VVa_gitDiffTabHeader",
8339
+ "largeFile": "s56VVa_largeFile",
8340
+ "editorSearchResult": "s56VVa_editorSearchResult",
8341
+ "editorBlameSummary": "s56VVa_editorBlameSummary",
8342
+ "editorTreeDock": "s56VVa_editorTreeDock",
8343
+ "explorerRef": "s56VVa_explorerRef",
8344
+ "explorerHidden": "s56VVa_explorerHidden",
8345
+ "editorGitBarMod": "s56VVa_editorGitBarMod",
8346
+ "gitPlaceholder": "s56VVa_gitPlaceholder",
8347
+ "sandboxAction": "s56VVa_sandboxAction",
8348
+ "paneDrop": "s56VVa_paneDrop",
8349
+ "editorGitBar": "s56VVa_editorGitBar",
8350
+ "explorerGitName": "s56VVa_explorerGitName",
8351
+ "largeFileRecordInvalid": "s56VVa_largeFileRecordInvalid",
8352
+ "dockFallback": "s56VVa_dockFallback",
8353
+ "tabClose": "s56VVa_tabClose",
8354
+ "uploadOverlayCard": "s56VVa_uploadOverlayCard",
8355
+ "browserFrame": "s56VVa_browserFrame",
8356
+ "gitEmpty": "s56VVa_gitEmpty",
8357
+ "tocPanel": "s56VVa_tocPanel",
8358
+ "largeFileLine": "s56VVa_largeFileLine",
8359
+ "editorStatusError": "s56VVa_editorStatusError",
8360
+ "explorerName": "s56VVa_explorerName",
8361
+ "tab": "s56VVa_tab",
8362
+ "editorError": "s56VVa_editorError",
8363
+ "mermaidModalHint": "s56VVa_mermaidModalHint",
8364
+ "editorPdfFrameBlocked": "s56VVa_editorPdfFrameBlocked",
8365
+ "dirtyDot": "s56VVa_dirtyDot",
8366
+ "uploadDropChatCard": "s56VVa_uploadDropChatCard",
8367
+ "paneTabHidden": "s56VVa_paneTabHidden",
8368
+ "editorCmHidden": "s56VVa_editorCmHidden",
8369
+ "explorerSelectionBar": "s56VVa_explorerSelectionBar",
8370
+ "explorerCopied": "s56VVa_explorerCopied",
8371
+ "editorTreeResize": "s56VVa_editorTreeResize",
8372
+ "sandboxStatus": "s56VVa_sandboxStatus",
8373
+ "browserMessage": "s56VVa_browserMessage",
8374
+ "openWithPin": "s56VVa_openWithPin",
8375
+ "editorGitMod": "s56VVa_editorGitMod",
8376
+ "tabList": "s56VVa_tabList",
8377
+ "explorerError": "s56VVa_explorerError",
8378
+ "uploadOverlay": "s56VVa_uploadOverlay",
8379
+ "explorerDir": "s56VVa_explorerDir",
8380
+ "iconButton": "s56VVa_iconButton",
8381
+ "editorPdfStage": "s56VVa_editorPdfStage",
8382
+ "editorMd": "s56VVa_editorMd",
8383
+ "browserBlockedActions": "s56VVa_browserBlockedActions",
8384
+ "editorGitBarGutter": "s56VVa_editorGitBarGutter",
8385
+ "editorGitBarAdd": "s56VVa_editorGitBarAdd",
8386
+ "explorerSymlink": "s56VVa_explorerSymlink",
8387
+ "editorPlaceholder": "s56VVa_editorPlaceholder",
8388
+ "explorerTime": "s56VVa_explorerTime",
8389
+ "tabBarRightActions": "s56VVa_tabBarRightActions",
8390
+ "editorGitAdd": "s56VVa_editorGitAdd",
8391
+ "mermaidCode": "s56VVa_mermaidCode",
8392
+ "mermaidModalToolbar": "s56VVa_mermaidModalToolbar",
8393
+ "tabBarPlus": "s56VVa_tabBarPlus",
8394
+ "editorMain": "s56VVa_editorMain",
8395
+ "uploadOverlayTitle": "s56VVa_uploadOverlayTitle",
8396
+ "bottomPanel": "s56VVa_bottomPanel",
8397
+ "editorModeToggle": "s56VVa_editorModeToggle",
8398
+ "editorBody": "s56VVa_editorBody",
8399
+ "browserBlockedDesc": "s56VVa_browserBlockedDesc",
8400
+ "panel": "s56VVa_panel",
8401
+ "editorPdfDragShieldActive": "s56VVa_editorPdfDragShieldActive",
8402
+ "editorGitBarDel": "s56VVa_editorGitBarDel",
8403
+ "tabUnreadDot": "s56VVa_tabUnreadDot",
8404
+ "tabBoundaryError": "s56VVa_tabBoundaryError",
8405
+ "editorBannerAction": "s56VVa_editorBannerAction",
8406
+ "splitChild": "s56VVa_splitChild",
8407
+ "largeFileNoticeAction": "s56VVa_largeFileNoticeAction",
8408
+ "dropLeft": "s56VVa_dropLeft",
8409
+ "editorPathInput": "s56VVa_editorPathInput",
8410
+ "mermaidModalButton": "s56VVa_mermaidModalButton",
8411
+ "tabBadge": "s56VVa_tabBadge",
8412
+ "toggleButton": "s56VVa_toggleButton",
8413
+ "editorBinary": "s56VVa_editorBinary",
8414
+ "explorerRowDropTarget": "s56VVa_explorerRowDropTarget",
8415
+ "uploadDropChatHint": "s56VVa_uploadDropChatHint",
8416
+ "bottomClose": "s56VVa_bottomClose",
8417
+ "uploadDropHero": "s56VVa_uploadDropHero",
8418
+ "largeFilePageLabel": "s56VVa_largeFilePageLabel",
8419
+ "largeFilePager": "s56VVa_largeFilePager",
8420
+ "tabBar": "s56VVa_tabBar",
8421
+ "tocBar": "s56VVa_tocBar",
8422
+ "editorModeActive": "s56VVa_editorModeActive",
8423
+ "explorerSelectionActions": "s56VVa_explorerSelectionActions",
8424
+ "largeFileList": "s56VVa_largeFileList",
8425
+ "uploadDropArtAccent": "s56VVa_uploadDropArtAccent",
8426
+ "explorerMuted": "s56VVa_explorerMuted",
8427
+ "largeFileRecordBody": "s56VVa_largeFileRecordBody",
8428
+ "uploadDropMask": "s56VVa_uploadDropMask",
8429
+ "browserInput": "s56VVa_browserInput",
8430
+ "bottomPanelHidden": "s56VVa_bottomPanelHidden",
8431
+ "openWithChevron": "s56VVa_openWithChevron",
8432
+ "mermaidHeader": "s56VVa_mermaidHeader",
8433
+ "largeFileBody": "s56VVa_largeFileBody",
8434
+ "editor": "s56VVa_editor",
8435
+ "explorerRenameInput": "s56VVa_explorerRenameInput",
8436
+ "largeFileLineText": "s56VVa_largeFileLineText",
8437
+ "paneEmptyCards": "s56VVa_paneEmptyCards",
8438
+ "editorSearchResultLabel": "s56VVa_editorSearchResultLabel",
8439
+ "uploadOverlayStatus": "s56VVa_uploadOverlayStatus",
8440
+ "sandboxStatusOn": "s56VVa_sandboxStatusOn",
8441
+ "explorerRowRevealed": "s56VVa_explorerRowRevealed",
8442
+ "openWithPinActive": "s56VVa_openWithPinActive",
8443
+ "mermaidError": "s56VVa_mermaidError",
8444
+ "browserBlockedButton": "s56VVa_browserBlockedButton",
8445
+ "largeFileRecordExpanded": "s56VVa_largeFileRecordExpanded",
8446
+ "editorSearchInput": "s56VVa_editorSearchInput",
8447
+ "chipUnread": "s56VVa_chipUnread",
8448
+ "gitDiffTab": "s56VVa_gitDiffTab",
8449
+ "dsh-toc-flash": "s56VVa_dsh-toc-flash",
8450
+ "explorerHiddenPane": "s56VVa_explorerHiddenPane",
8451
+ "dividerActive": "s56VVa_dividerActive",
8452
+ "browserBar": "s56VVa_browserBar",
8453
+ "mermaidModalStage": "s56VVa_mermaidModalStage",
8454
+ "explorerSelectionText": "s56VVa_explorerSelectionText",
8455
+ "explorerRenaming": "s56VVa_explorerRenaming",
8456
+ "editorDocxZoomRange": "s56VVa_editorDocxZoomRange",
8457
+ "uploadOverlayProgressFill": "s56VVa_uploadOverlayProgressFill",
8458
+ "editorPdf": "s56VVa_editorPdf",
8459
+ "tabBarDrop": "s56VVa_tabBarDrop",
8460
+ "editorGitDel": "s56VVa_editorGitDel",
8461
+ "editorGitBarSpacer": "s56VVa_editorGitBarSpacer",
8462
+ "dropOverlay": "s56VVa_dropOverlay",
8463
+ "uploadDropArtCut": "s56VVa_uploadDropArtCut",
8464
+ "explorerActionError": "s56VVa_explorerActionError",
8465
+ "browserStart": "s56VVa_browserStart",
8466
+ "editorTreePanel": "s56VVa_editorTreePanel",
8467
+ "browserBlocked": "s56VVa_browserBlocked",
8468
+ "tabTitle": "s56VVa_tabTitle",
8469
+ "explorerBody": "s56VVa_explorerBody",
8470
+ "editorCm": "s56VVa_editorCm",
8471
+ "editorPdfDragShield": "s56VVa_editorPdfDragShield",
8472
+ "bottomResizeActive": "s56VVa_bottomResizeActive",
8473
+ "divider": "s56VVa_divider",
8474
+ "explorerDirChanged": "s56VVa_explorerDirChanged",
8475
+ "uploadOverlayCancel": "s56VVa_uploadOverlayCancel",
8476
+ "sandboxStatusOff": "s56VVa_sandboxStatusOff",
8477
+ "dividerCol": "s56VVa_dividerCol",
8478
+ "tabActive": "s56VVa_tabActive",
8479
+ "sandboxStatusText": "s56VVa_sandboxStatusText",
8480
+ "editorModeButton": "s56VVa_editorModeButton",
8481
+ "mermaidCopy": "s56VVa_mermaidCopy",
8482
+ "browser": "s56VVa_browser",
8483
+ "editorDownloadLink": "s56VVa_editorDownloadLink",
8484
+ "mermaidBody": "s56VVa_mermaidBody",
8485
+ "editorTreeSearch": "s56VVa_editorTreeSearch",
8486
+ "explorerHeader": "s56VVa_explorerHeader",
8487
+ "editorHtml": "s56VVa_editorHtml",
8488
+ "dsh-row-in": "s56VVa_dsh-row-in",
8489
+ "workbench": "s56VVa_workbench",
8490
+ "explorerEmpty": "s56VVa_explorerEmpty",
8491
+ "bottomResize": "s56VVa_bottomResize",
8492
+ "splitCol": "s56VVa_splitCol",
8493
+ "explorerAppIcon": "s56VVa_explorerAppIcon",
8494
+ "nativeTabHost": "s56VVa_nativeTabHost",
8495
+ "largeFileDownload": "s56VVa_largeFileDownload",
8496
+ "largeFileRecordSummary": "s56VVa_largeFileRecordSummary",
8497
+ "uploadOverlayProgress": "s56VVa_uploadOverlayProgress",
8498
+ "editorTitle": "s56VVa_editorTitle",
8499
+ "editorPptxButton": "s56VVa_editorPptxButton",
8500
+ "largeFileNotice": "s56VVa_largeFileNotice",
8501
+ "editorBinaryNotice": "s56VVa_editorBinaryNotice",
8502
+ "mermaidWrap": "s56VVa_mermaidWrap",
8503
+ "mermaidModal": "s56VVa_mermaidModal",
8504
+ "dividerRow": "s56VVa_dividerRow",
8505
+ "gitError": "s56VVa_gitError",
8506
+ "largeFileRecord": "s56VVa_largeFileRecord",
8507
+ "dropRight": "s56VVa_dropRight",
8508
+ "largeFileRecords": "s56VVa_largeFileRecords",
8509
+ "largeFileLines": "s56VVa_largeFileLines",
8510
+ "explorerBroken": "s56VVa_explorerBroken",
8511
+ "largeFileRecordRaw": "s56VVa_largeFileRecordRaw",
8512
+ "explorer": "s56VVa_explorer",
8513
+ "openWithName": "s56VVa_openWithName"
8263
8514
  };
8264
8515
  //#endregion
8265
- //#region ../../node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/FileTree.tsx
8516
+ //#region ../../../DSH-better-sidebar/src/client/FileTree.tsx
8266
8517
  /**
8267
8518
  * The controlled file tree behind the files window's tree panel (TreePanel
8268
8519
  * wraps it with the search box): a lazy VSCode-style tree rooted at the
@@ -8343,6 +8594,13 @@ window.__ModuleLoader__.load({
8343
8594
  }
8344
8595
  /** How long the row's "copied" label stays after a successful write. */
8345
8596
  const COPIED_MS = 1200;
8597
+ /**
8598
+ * How many per-path open-with listings one tree keeps. The host answers from
8599
+ * the machine's own application registry, so a handful covers any realistic
8600
+ * menu session; the cap is what keeps the map from growing for the life of the
8601
+ * page (the host keeps every visited tab body mounted).
8602
+ */
8603
+ const APPS_CACHE_MAX = 32;
8346
8604
  /** One changed row's tooltip word (the badge's status vocabulary). */
8347
8605
  function gitToneLabel(tone) {
8348
8606
  switch (tone) {
@@ -8689,11 +8947,14 @@ window.__ModuleLoader__.load({
8689
8947
  return armed !== void 0 && live !== void 0 && armed.sessionId === live.sessionId && armed.cwd === live.cwd;
8690
8948
  }
8691
8949
  function FileTree(props) {
8692
- const { sessionId, cwd, expanded, revealed, onOpenFileNewTab, onOpenFileSide, openInApp, openWithTargets, openWithPinned, openWithSsh, onOpenWith, onToggleOpenWithPin, openWithShowPluginTargets, exclude, onPathRenamed, onPathDeleted, refreshTick, onUploadRequest, busy, hidden, visible, service } = props;
8950
+ const { sessionId, cwd, expanded, revealed, onOpenFileNewTab, onOpenFileSide, openInApp, openWithTargets, openWithPinned, openWithSsh, onOpenWith, onToggleOpenWithPin, openWithShowPluginTargets, exclude, nameFilter, onPathRenamed, onPathDeleted, refreshTick, onUploadRequest, busy, hidden, visible, service } = props;
8693
8951
  const sort = props.sort ?? DEFAULT_FILE_TREE_SORT;
8694
8952
  /** The live props for the stable callbacks below (identity churns per render). */
8695
8953
  const propsRef = (0, react.useRef)(props);
8696
8954
  propsRef.current = props;
8955
+ /** Live visibility for the load effects: a parked tree fetches nothing. */
8956
+ const visibleRef = (0, react.useRef)(visible !== false);
8957
+ visibleRef.current = visible !== false;
8697
8958
  const [data, setData] = (0, react.useState)({});
8698
8959
  /**
8699
8960
  * Registry revision for the file-icon feature: bumps on ANY registry
@@ -8711,6 +8972,27 @@ window.__ModuleLoader__.load({
8711
8972
  const dataRef = (0, react.useRef)(data);
8712
8973
  /** Bumped whenever the cache is wiped: a response from an older generation is dropped. */
8713
8974
  const generationRef = (0, react.useRef)(0);
8975
+ /**
8976
+ * The context menu's native row ids.
8977
+ *
8978
+ * A caller's appended row is matched against these before its own `onSelect`
8979
+ * runs, so an id in this set has to be refused: letting it through would make
8980
+ * a caller's row answer the native id and take a shipped action away.
8981
+ */
8982
+ const NATIVE_MENU_IDS = /* @__PURE__ */ new Set([
8983
+ "open-new-tab",
8984
+ "open-side",
8985
+ "download",
8986
+ "upload-here",
8987
+ "new-folder",
8988
+ "new-file",
8989
+ "archive-selection",
8990
+ "relative",
8991
+ "absolute",
8992
+ "rename",
8993
+ "delete",
8994
+ "reveal-in-file-manager"
8995
+ ]);
8714
8996
  /** The row whose path was just copied ("copied" label replaces its button). */
8715
8997
  const [copiedPath, setCopiedPath] = (0, react.useState)(null);
8716
8998
  /** Open context menu: the row path (and whether it is a directory) plus the cursor position. */
@@ -8916,6 +9198,7 @@ window.__ModuleLoader__.load({
8916
9198
  * path — while leaving their current rows untouched until the answer lands.
8917
9199
  */
8918
9200
  const loadLevels = (0, react.useCallback)((paths, options) => {
9201
+ if (visibleRef.current === false) return;
8919
9202
  const force = options?.force === true;
8920
9203
  const wanted = force ? [...new Set(paths)] : paths.filter((path) => {
8921
9204
  const cached = dataRef.current[path];
@@ -9002,6 +9285,10 @@ window.__ModuleLoader__.load({
9002
9285
  const retryDir = (0, react.useCallback)((dir) => {
9003
9286
  loadLevels([dir], { force: true });
9004
9287
  }, [loadLevels]);
9288
+ /** Re-list a SET of directories in ONE batch (the parked→visible re-arm). */
9289
+ const retryDirs = (0, react.useCallback)((dirs) => {
9290
+ if (dirs.length > 0) loadLevels([...dirs], { force: true });
9291
+ }, [loadLevels]);
9005
9292
  /**
9006
9293
  * Settle the tree after one rename/delete landed at `prefix`: drop every
9007
9294
  * cached level at or under the old path, collapse the now-stale expanded
@@ -9043,6 +9330,7 @@ window.__ModuleLoader__.load({
9043
9330
  (0, react.useEffect)(() => {
9044
9331
  if (lastTick.current === refreshTick) return;
9045
9332
  lastTick.current = refreshTick;
9333
+ if (visibleRef.current === false) return;
9046
9334
  generationRef.current += 1;
9047
9335
  forceNextLoad.current = true;
9048
9336
  }, [refreshTick]);
@@ -9056,7 +9344,7 @@ window.__ModuleLoader__.load({
9056
9344
  }, [excludeKey]);
9057
9345
  (0, react.useEffect)(() => {
9058
9346
  const root = cwd;
9059
- if (root === void 0) return;
9347
+ if (root === void 0 || visibleRef.current === false) return;
9060
9348
  const force = forceNextLoad.current;
9061
9349
  forceNextLoad.current = false;
9062
9350
  loadLevels([root, ...expanded], { force });
@@ -9067,7 +9355,7 @@ window.__ModuleLoader__.load({
9067
9355
  loadLevels
9068
9356
  ]);
9069
9357
  (0, react.useEffect)(() => {
9070
- if (cwd === void 0) return;
9358
+ if (cwd === void 0 || visibleRef.current === false) return;
9071
9359
  loadLevels(compactLoadTargets(dataRef.current, [cwd, ...propsRef.current.expanded]));
9072
9360
  }, [
9073
9361
  cwd,
@@ -9081,7 +9369,8 @@ window.__ModuleLoader__.load({
9081
9369
  sessionId,
9082
9370
  root: cwd,
9083
9371
  dirs: expanded,
9084
- onStale: retryDir
9372
+ visible: visible !== false,
9373
+ onStale: retryDirs
9085
9374
  });
9086
9375
  (0, react.useEffect)(() => {
9087
9376
  if (revealed.length === 0 || propsRef.current.hidden === true) return;
@@ -9456,7 +9745,9 @@ window.__ModuleLoader__.load({
9456
9745
  * the machine + the path, so reopening the same row's menu is instant: no
9457
9746
  * request, no disabled "Loading…" frame. A newly installed application shows
9458
9747
  * up on the next tree mount — the alternative (re-probing per open) is the
9459
- * churn the menu was reported for.
9748
+ * churn the menu was reported for. The cache is bounded (LRU): the host
9749
+ * keeps every visited tab body mounted, so an unbounded per-tree map of
9750
+ * paths would live for the life of the page.
9460
9751
  */
9461
9752
  const appsCacheRef = (0, react.useRef)(/* @__PURE__ */ new Map());
9462
9753
  (0, react.useEffect)(() => {
@@ -9465,6 +9756,8 @@ window.__ModuleLoader__.load({
9465
9756
  const key = `${isDir ? "d" : "f"}\u0000${path}`;
9466
9757
  const cached = appsCacheRef.current.get(key);
9467
9758
  if (cached !== void 0) {
9759
+ appsCacheRef.current.delete(key);
9760
+ appsCacheRef.current.set(key, cached);
9468
9761
  setApps({
9469
9762
  path,
9470
9763
  entries: cached
@@ -9474,7 +9767,13 @@ window.__ModuleLoader__.load({
9474
9767
  let cancelled = false;
9475
9768
  (isDir ? openInApp.directoryApps() : openInApp.fileApps(path)).then((entries) => {
9476
9769
  if (cancelled) return;
9477
- if (entries !== null) appsCacheRef.current.set(key, entries);
9770
+ if (entries !== null) {
9771
+ appsCacheRef.current.set(key, entries);
9772
+ if (appsCacheRef.current.size > APPS_CACHE_MAX) for (const oldest of appsCacheRef.current.keys()) {
9773
+ appsCacheRef.current.delete(oldest);
9774
+ break;
9775
+ }
9776
+ }
9478
9777
  setApps({
9479
9778
  path,
9480
9779
  entries
@@ -9686,6 +9985,39 @@ window.__ModuleLoader__.load({
9686
9985
  }];
9687
9986
  return [];
9688
9987
  };
9988
+ /**
9989
+ * The caller's appended rows, as menu entries.
9990
+ *
9991
+ * `relPath` is resolved here rather than in the caller: the tree is the only
9992
+ * party that knows `cwd`, and the spelling has to match the "copy relative
9993
+ * path" row the user already reads in this same menu. An entry outside the
9994
+ * tree (or a tree with no `cwd`) passes through `relativeTo` unchanged,
9995
+ * which is also what that native row does.
9996
+ *
9997
+ * The group's separator is prepended only when at least one row survives
9998
+ * `when`, so a caller whose rows do not apply to this entry leaves the menu
9999
+ * exactly as it was — no stray hairline at the bottom.
10000
+ */
10001
+ const extraRows = (() => {
10002
+ const target = rowMenu;
10003
+ const items = props.extraMenuItems;
10004
+ if (target === null || items === void 0 || items.length === 0) return [];
10005
+ if (items.some((item) => NATIVE_MENU_IDS.has(item.id))) return [];
10006
+ const hit = {
10007
+ relPath: relativeTo(cwd ?? "", target.path),
10008
+ isDir: target.isDir
10009
+ };
10010
+ const rows = items.filter((item) => item.when === void 0 || item.when(hit)).map((item) => ({
10011
+ id: item.id,
10012
+ label: item.label,
10013
+ ...item.icon === void 0 ? {} : { icon: item.icon }
10014
+ }));
10015
+ if (rows.length === 0) return [];
10016
+ return [{
10017
+ id: "extra-items-sep",
10018
+ type: "separator"
10019
+ }, ...rows];
10020
+ })();
9689
10021
  /** Download a file through the host route (raw bytes, binary-safe). */
9690
10022
  const downloadFile = (path) => {
9691
10023
  const url = downloadUrl({
@@ -9877,16 +10209,41 @@ window.__ModuleLoader__.load({
9877
10209
  * `sortEntries` copies (the level cache keeps the host's own order and is
9878
10210
  * never reordered in place).
9879
10211
  */
10212
+ /** The caller's filter, normalised once per change. */
10213
+ const needle = normaliseNeedle$1(nameFilter ?? "");
9880
10214
  const entriesFor = (0, react.useMemo)(() => {
9881
10215
  const cache = /* @__PURE__ */ new Map();
10216
+ /**
10217
+ * Every loaded level as a `children` map for the filter.
10218
+ *
10219
+ * Built from the level cache rather than from what is on screen: the filter has to see
10220
+ * the children of a COLLAPSED folder to know whether it should stay visible. Unloaded
10221
+ * levels are simply absent, which the rule set treats as "judge this row by its own
10222
+ * name" -- the same answer the reader would get after expanding it.
10223
+ */
10224
+ /** The loaded children of one directory row, for the filter's descent. */
10225
+ const childrenOf = (entry) => {
10226
+ if (!entry.isDir) return void 0;
10227
+ const level = data[entry.path];
10228
+ return level?.entries === void 0 ? void 0 : sortEntries(level.entries, sort);
10229
+ };
10230
+ const filteredFor = (dir) => {
10231
+ const rows = sortEntries(data[dir]?.entries ?? [], sort);
10232
+ if (needle === "") return rows;
10233
+ return filterLevel$1(rows, childrenOf, needle);
10234
+ };
9882
10235
  return (dir) => {
9883
10236
  const cached = cache.get(dir);
9884
10237
  if (cached !== void 0) return cached;
9885
- const sorted = sortEntries(data[dir]?.entries ?? [], sort);
9886
- cache.set(dir, sorted);
9887
- return sorted;
10238
+ const rows = filteredFor(dir);
10239
+ cache.set(dir, rows);
10240
+ return rows;
9888
10241
  };
9889
- }, [data, sort]);
10242
+ }, [
10243
+ data,
10244
+ sort,
10245
+ nameFilter
10246
+ ]);
9890
10247
  visibleRowsRef.current = (0, react.useMemo)(() => {
9891
10248
  const rows = [];
9892
10249
  const walk = (dir) => {
@@ -10052,8 +10409,14 @@ window.__ModuleLoader__.load({
10052
10409
  children: level.error
10053
10410
  })] });
10054
10411
  const entries = entriesFor(dir);
10412
+ const emptyFromFilter = needle !== "" && entries.length === 0 && level.entries !== void 0 && level.entries.length > 0;
10055
10413
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
10056
10414
  head,
10415
+ emptyFromFilter && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
10416
+ className: clsx(sidebar_module_css_default.explorerRow, sidebar_module_css_default.explorerMuted),
10417
+ style: { paddingLeft: depth * 22 + 6 },
10418
+ children: t("filterNoMatch")
10419
+ }),
10057
10420
  entries.map((entry) => {
10058
10421
  const chain = entry.isDir ? chainFor(entry) : void 0;
10059
10422
  if (renaming !== null && (renaming.path === entry.path || chain?.some((link) => link.path === renaming.path) === true)) return renderRenameRow(entry, depth);
@@ -10287,7 +10650,8 @@ window.__ModuleLoader__.load({
10287
10650
  icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconTrashOutlineRegular, { size: 14 }),
10288
10651
  danger: true
10289
10652
  }
10290
- ] : []
10653
+ ] : [],
10654
+ ...extraRows
10291
10655
  ],
10292
10656
  onSelect: (id) => {
10293
10657
  const target = rowMenu;
@@ -10361,6 +10725,14 @@ window.__ModuleLoader__.load({
10361
10725
  });
10362
10726
  return;
10363
10727
  }
10728
+ const extra = propsRef.current.extraMenuItems?.find((item) => item.id === id);
10729
+ if (extra !== void 0) {
10730
+ extra.onSelect({
10731
+ relPath: relativeTo(cwd ?? "", target.path),
10732
+ isDir: target.isDir
10733
+ });
10734
+ return;
10735
+ }
10364
10736
  copyPath(id === "relative" ? relativeTo(cwd ?? "", target.path) : target.path, target.path);
10365
10737
  },
10366
10738
  portal: true,
@@ -13464,19 +13836,19 @@ window.__ModuleLoader__.load({
13464
13836
  document.head.appendChild(tag);
13465
13837
  }
13466
13838
  var KnowledgeShareDialog_module_css_default = {
13467
- "hint": "nw--rq_hint",
13468
13839
  "list": "nw--rq_list",
13469
- "body": "nw--rq_body",
13470
- "fieldLabel": "nw--rq_fieldLabel",
13471
13840
  "notice": "nw--rq_notice",
13841
+ "hint": "nw--rq_hint",
13842
+ "intro": "nw--rq_intro",
13472
13843
  "optionLabel": "nw--rq_optionLabel",
13844
+ "state": "nw--rq_state",
13473
13845
  "chosenLabel": "nw--rq_chosenLabel",
13474
13846
  "field": "nw--rq_field",
13475
- "intro": "nw--rq_intro",
13476
- "state": "nw--rq_state",
13847
+ "optionDetail": "nw--rq_optionDetail",
13477
13848
  "chosen": "nw--rq_chosen",
13478
- "option": "nw--rq_option",
13479
- "optionDetail": "nw--rq_optionDetail"
13849
+ "body": "nw--rq_body",
13850
+ "fieldLabel": "nw--rq_fieldLabel",
13851
+ "option": "nw--rq_option"
13480
13852
  };
13481
13853
  //#endregion
13482
13854
  //#region src/client/KnowledgeShareDialog.tsx
@@ -15907,14 +16279,14 @@ window.__ModuleLoader__.load({
15907
16279
  document.head.appendChild(tag);
15908
16280
  }
15909
16281
  var KnowledgeAudit_module_css_default = {
16282
+ "audit": "_0xqcPG_audit",
15910
16283
  "pagerTotal": "_0xqcPG_pagerTotal",
16284
+ "pathCell": "_0xqcPG_pathCell",
15911
16285
  "pager": "_0xqcPG_pager",
15912
- "pagerSizeLabel": "_0xqcPG_pagerSizeLabel",
15913
- "pagerSize": "_0xqcPG_pagerSize",
15914
16286
  "pagerPosition": "_0xqcPG_pagerPosition",
15915
- "tabs": "_0xqcPG_tabs",
15916
- "pathCell": "_0xqcPG_pathCell",
15917
- "audit": "_0xqcPG_audit"
16287
+ "pagerSize": "_0xqcPG_pagerSize",
16288
+ "pagerSizeLabel": "_0xqcPG_pagerSizeLabel",
16289
+ "tabs": "_0xqcPG_tabs"
15918
16290
  };
15919
16291
  //#endregion
15920
16292
  //#region src/client/KnowledgeAudit.tsx
@@ -16665,31 +17037,31 @@ window.__ModuleLoader__.load({
16665
17037
  document.head.appendChild(tag);
16666
17038
  }
16667
17039
  var KnowledgeListing_module_css_default = {
16668
- "entryTime": "_95AMVa_entryTime",
16669
- "cardItem": "_95AMVa_cardItem",
16670
- "pinDropZone": "_95AMVa_pinDropZone",
16671
- "entryDir": "_95AMVa_entryDir",
16672
- "entries": "_95AMVa_entries",
16673
- "entryPin": "_95AMVa_entryPin",
16674
17040
  "entryRef": "_95AMVa_entryRef",
16675
- "cardGlyph": "_95AMVa_cardGlyph",
17041
+ "entries": "_95AMVa_entries",
17042
+ "cards": "_95AMVa_cards",
16676
17043
  "cardDir": "_95AMVa_cardDir",
16677
- "cardMeta": "_95AMVa_cardMeta",
16678
- "cardTime": "_95AMVa_cardTime",
17044
+ "pinDropZone": "_95AMVa_pinDropZone",
17045
+ "empty": "_95AMVa_empty",
17046
+ "entry": "_95AMVa_entry",
16679
17047
  "emptyAction": "_95AMVa_emptyAction",
16680
- "emptyGlyph": "_95AMVa_emptyGlyph",
16681
- "entryChildren": "_95AMVa_entryChildren",
17048
+ "entryDir": "_95AMVa_entryDir",
16682
17049
  "kb-row-in": "_95AMVa_kb-row-in",
16683
- "entryCheck": "_95AMVa_entryCheck",
16684
- "cardName": "_95AMVa_cardName",
16685
17050
  "entryGlyph": "_95AMVa_entryGlyph",
16686
- "entryName": "_95AMVa_entryName",
16687
- "entry": "_95AMVa_entry",
16688
- "cards": "_95AMVa_cards",
17051
+ "entryTime": "_95AMVa_entryTime",
16689
17052
  "card": "_95AMVa_card",
17053
+ "cardMeta": "_95AMVa_cardMeta",
17054
+ "entryCheck": "_95AMVa_entryCheck",
17055
+ "entryChildren": "_95AMVa_entryChildren",
16690
17056
  "entryFavorite": "_95AMVa_entryFavorite",
16691
- "emptyTitle": "_95AMVa_emptyTitle",
16692
- "empty": "_95AMVa_empty"
17057
+ "cardGlyph": "_95AMVa_cardGlyph",
17058
+ "emptyGlyph": "_95AMVa_emptyGlyph",
17059
+ "entryName": "_95AMVa_entryName",
17060
+ "entryPin": "_95AMVa_entryPin",
17061
+ "cardItem": "_95AMVa_cardItem",
17062
+ "cardName": "_95AMVa_cardName",
17063
+ "cardTime": "_95AMVa_cardTime",
17064
+ "emptyTitle": "_95AMVa_emptyTitle"
16693
17065
  };
16694
17066
  //#endregion
16695
17067
  //#region src/client/listingFilter.ts
@@ -17330,33 +17702,33 @@ window.__ModuleLoader__.load({
17330
17702
  document.head.appendChild(tag);
17331
17703
  }
17332
17704
  var KnowledgeProgressPopover_module_css_default = {
17333
- "badgeFailed": "x_PPca_badgeFailed",
17334
- "badgeBusy": "x_PPca_badgeBusy",
17335
17705
  "progressRow": "x_PPca_progressRow",
17336
- "progressTrack": "x_PPca_progressTrack",
17337
- "group": "x_PPca_group",
17338
17706
  "badge": "x_PPca_badge",
17339
- "cardPath": "x_PPca_cardPath",
17340
- "badgeDone": "x_PPca_badgeDone",
17341
- "dialogContent": "x_PPca_dialogContent",
17342
- "progressFill": "x_PPca_progressFill",
17343
- "cardRow": "x_PPca_cardRow",
17344
- "cardProgress": "x_PPca_cardProgress",
17345
- "cardActions": "x_PPca_cardActions",
17707
+ "summaryLabel": "x_PPca_summaryLabel",
17346
17708
  "summaryItem": "x_PPca_summaryItem",
17347
- "summary": "x_PPca_summary",
17348
17709
  "dialog": "x_PPca_dialog",
17710
+ "summaryValue": "x_PPca_summaryValue",
17711
+ "progressFill": "x_PPca_progressFill",
17712
+ "cardProgress": "x_PPca_cardProgress",
17349
17713
  "cardReason": "x_PPca_cardReason",
17350
17714
  "empty": "x_PPca_empty",
17351
- "summaryLabel": "x_PPca_summaryLabel",
17352
- "cardRawReason": "x_PPca_cardRawReason",
17353
- "summaryValue": "x_PPca_summaryValue",
17354
- "progressFillIndeterminate": "x_PPca_progressFillIndeterminate",
17715
+ "cardRow": "x_PPca_cardRow",
17716
+ "cardPath": "x_PPca_cardPath",
17717
+ "badgeDone": "x_PPca_badgeDone",
17718
+ "list": "x_PPca_list",
17719
+ "group": "x_PPca_group",
17720
+ "badgeBusy": "x_PPca_badgeBusy",
17721
+ "progressTrack": "x_PPca_progressTrack",
17355
17722
  "progressPercent": "x_PPca_progressPercent",
17723
+ "bell": "x_PPca_bell",
17356
17724
  "cardName": "x_PPca_cardName",
17725
+ "progressFillIndeterminate": "x_PPca_progressFillIndeterminate",
17726
+ "cardRawReason": "x_PPca_cardRawReason",
17357
17727
  "card": "x_PPca_card",
17358
- "list": "x_PPca_list",
17359
- "bell": "x_PPca_bell"
17728
+ "dialogContent": "x_PPca_dialogContent",
17729
+ "cardActions": "x_PPca_cardActions",
17730
+ "summary": "x_PPca_summary",
17731
+ "badgeFailed": "x_PPca_badgeFailed"
17360
17732
  };
17361
17733
  //#endregion
17362
17734
  //#region src/client/KnowledgeProgressPopover.tsx
@@ -18514,76 +18886,6 @@ window.__ModuleLoader__.load({
18514
18886
  };
18515
18887
  }
18516
18888
  //#endregion
18517
- //#region src/client/useViewMode.ts
18518
- /**
18519
- * The list/grid preference the rail renders.
18520
- *
18521
- * A document-level preference stored beside the pins, for the same reason they are:
18522
- * a reader who switches to the grid on one machine expects it on the next. The
18523
- * optimistic update exists because the toggle is a one-click gesture on a control
18524
- * the reader is looking at, and waiting for a round trip before the layout changes
18525
- * makes it feel broken when it is merely slow. A failed write reloads from the Host
18526
- * rather than leaving the guess on screen.
18527
- *
18528
- * @module @sparkelf/dsh-knowledge-base/client
18529
- */
18530
- /**
18531
- * Read and write the caller's layout preference.
18532
- * @param enabled - false while the mount point is unknown, which is the only state
18533
- * where there is no view directory to hold the preference.
18534
- * @returns The store.
18535
- */
18536
- function useViewMode(enabled) {
18537
- const [mode, setLocalMode] = (0, react.useState)("list");
18538
- const [error, setError] = (0, react.useState)(void 0);
18539
- const read = (0, react.useCallback)(async () => {
18540
- if (!enabled) return;
18541
- try {
18542
- const response = await fetch(kbApiPath(KB_API.viewModeGet), {
18543
- method: "POST",
18544
- headers: { "content-type": "application/json" },
18545
- body: "{}",
18546
- cache: "no-store"
18547
- });
18548
- if (!response.ok) throw new Error("HTTP " + String(response.status));
18549
- const body = await response.json();
18550
- setLocalMode(body.mode === "grid" ? "grid" : body.mode === "explorer" ? "explorer" : "list");
18551
- setError(void 0);
18552
- } catch (failure) {
18553
- setLocalMode("list");
18554
- setError(failure instanceof Error ? failure.message : void 0);
18555
- }
18556
- }, [enabled]);
18557
- (0, react.useEffect)(() => {
18558
- read();
18559
- }, [read]);
18560
- return {
18561
- mode,
18562
- setMode: (0, react.useCallback)((next) => {
18563
- setLocalMode(next);
18564
- (async () => {
18565
- try {
18566
- const response = await fetch(kbApiPath(KB_API.viewModeSet), {
18567
- method: "POST",
18568
- headers: { "content-type": "application/json" },
18569
- body: JSON.stringify({ mode: next }),
18570
- cache: "no-store"
18571
- });
18572
- if (!response.ok) {
18573
- const body = await response.json().catch(() => ({}));
18574
- throw new Error(body.error ?? "HTTP " + String(response.status));
18575
- }
18576
- setError(void 0);
18577
- } catch (failure) {
18578
- setError(failure instanceof Error ? failure.message : void 0);
18579
- await read();
18580
- }
18581
- })();
18582
- }, [read]),
18583
- error
18584
- };
18585
- }
18586
- //#endregion
18587
18889
  //#region src/client/useTreeSort.ts
18588
18890
  /**
18589
18891
  * The knowledge tree's row ordering, remembered per browser.
@@ -18675,110 +18977,156 @@ window.__ModuleLoader__.load({
18675
18977
  };
18676
18978
  }
18677
18979
  //#endregion
18678
- //#region ../../node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/conversation-draft.ts
18679
- /**
18680
- * Splice `text` into `draft` at `caret` (replacing any live selection) with
18681
- * whitespace-aware joins and report the caret position right after the
18682
- * inserted text. `caret === null` (position unknown) appends at the end,
18683
- * exactly like the original behavior.
18684
- */
18685
- function spliceInsert(draft, text, caret) {
18686
- if (caret === null || draft === "") {
18687
- const next = draft.trim() === "" ? text : `${draft}${/\s$/.test(draft) ? "" : " "}${text}`;
18688
- return {
18689
- draft: next,
18690
- caretAfter: next.length
18691
- };
18980
+ //#region ../../../DSH-better-sidebar/src/client/conversation-draft.ts
18981
+ /**
18982
+ * The separating space an append needs on its left — one space, but never
18983
+ * doubled against existing whitespace. Both the string append and the span
18984
+ * channel (which does no splice math of its own) obey this single rule. A
18985
+ * blank draft takes no separator: it is replaced outright.
18986
+ */
18987
+ function leadFor(draft) {
18988
+ if (draft.trim() === "") return "";
18989
+ return /\s$/.test(draft) ? "" : " ";
18990
+ }
18991
+ /** `draft` with `text` appended behind one separating space when needed. */
18992
+ function appendText(draft, text) {
18993
+ return `${draft}${leadFor(draft)}${text}`;
18994
+ }
18995
+ /**
18996
+ * Fold one clipboard-projection offset to its detect-projection twin.
18997
+ *
18998
+ * The host maintains two coordinate systems over the same document: the
18999
+ * clipboard projection (`InputState.draft`, `occurrences`) expands every chip
19000
+ * to its whole `clipboardText`, while the detect projection — the one every
19001
+ * insert/replace event's `span` must speak — collapses each chip to a single
19002
+ * placeholder character. Deriving a span from a draft offset without folding
19003
+ * therefore overshoots by `length - 1` per chip, and the host rejects the
19004
+ * out-of-range span (`applied = false`) — the second chip insert of a session
19005
+ * would silently fail.
19006
+ *
19007
+ * An offset inside a chip's expansion snaps to that chip's trailing edge: the
19008
+ * host only ever replaces whole chips, never splits one. An offset exactly at
19009
+ * a chip's START resolves to the position BEFORE the chip — the host's own
19010
+ * `detectOffsetOfClipboardOffset` reads that case as "inside" and returns the
19011
+ * trailing edge, which would move a caret one chip too far right.
19012
+ */
19013
+ function foldClipboardOffset(draft, occurrences, offset) {
19014
+ const target = Math.max(0, Math.min(offset, draft.length));
19015
+ let shrink = 0;
19016
+ for (const occurrence of occurrences) {
19017
+ if (target >= occurrence.offset + occurrence.length) {
19018
+ shrink += occurrence.length - 1;
19019
+ continue;
19020
+ }
19021
+ if (target > occurrence.offset) return occurrence.offset - shrink + 1;
19022
+ break;
18692
19023
  }
18693
- const prefix = draft.slice(0, caret.start);
18694
- const suffix = draft.slice(caret.end);
18695
- if (prefix === "" && suffix === "") return {
18696
- draft: text,
18697
- caretAfter: text.length
18698
- };
18699
- const left = prefix === "" || /\s$/.test(prefix) ? "" : " ";
18700
- return {
18701
- draft: `${prefix}${left}${text}${suffix === "" || /^\s/.test(suffix) || /\s$/.test(text) ? "" : " "}${suffix}`,
18702
- caretAfter: prefix.length + left.length + text.length
18703
- };
19024
+ return target - shrink;
18704
19025
  }
18705
19026
  /**
18706
- * Locate the composer `<textarea>` in the conversation column: prefer the
18707
- * `data-phase`-tagged textarea (the composer's marker), falling back to any
18708
- * textarea in the column, then to a bare data-phase textarea (older host
18709
- * layouts without the column attribute). Null in jsdom-less hosts.
18710
- */
18711
- function findComposerTextarea() {
18712
- if (typeof document === "undefined") return null;
18713
- const column = document.querySelector("#root [data-slot=\"conversation\"]");
18714
- const find = (scope) => scope.querySelector("textarea[data-phase]") ?? scope.querySelector("textarea");
18715
- return column !== null ? find(column) : document.querySelector("textarea[data-phase]");
18716
- }
18717
- /**
18718
- * Resolve the composer's live caret from its DOM `<textarea>`. The draft
18719
- * store has no caret API, so the sidebar reads the composed input's selection
18720
- * directly; the value-sync check (`el.value === draft`) discards stale or
18721
- * wrong-composer reads — a caret must never be applied against a draft it
18722
- * was not measured on.
18723
- *
18724
- * Returns null when the composer is missing, disabled/read-only, out of
18725
- * sync with the store draft, or has no measurable selection (jsdom/odd
18726
- * hosts report null selectionStart/End).
18727
- */
18728
- function probeComposerCaret(draft) {
18729
- const el = findComposerTextarea();
18730
- if (el === null || el.disabled || el.readOnly) return null;
18731
- if (el.value !== draft) return null;
18732
- let start = el.selectionStart;
18733
- let end = el.selectionEnd;
18734
- if (typeof start !== "number" || typeof end !== "number") return null;
18735
- if (!Number.isFinite(start) || !Number.isFinite(end)) return null;
18736
- start = Math.max(0, Math.min(start, draft.length));
18737
- end = Math.max(start, Math.min(end, draft.length));
18738
- return {
18739
- start,
18740
- end
18741
- };
19027
+ * The detect-projection offset that appends at the document end, or
19028
+ * `undefined` when it cannot be derived.
19029
+ *
19030
+ * `foldClipboardOffset` alone is not enough: a command chip (`/goal `, present
19031
+ * while `phase === 'claimed'`) collapses to one detect character but never
19032
+ * appears in `occurrences` — the host only collects reference chips. The chip
19033
+ * covers exactly `claim.token`, a prefix of the draft, so its own characters
19034
+ * fold away and one placeholder takes their place.
19035
+ */
19036
+ function appendOffset(snapshot) {
19037
+ const { draft, claim } = snapshot;
19038
+ const occurrences = snapshot.occurrences ?? [];
19039
+ const token = snapshot.phase === "claimed" && claim !== void 0 && draft.startsWith(claim.token) ? claim.token : "";
19040
+ if (token === "") return foldClipboardOffset(draft, occurrences, draft.length);
19041
+ const rest = draft.slice(token.length);
19042
+ return 1 + foldClipboardOffset(rest, occurrences.filter((occurrence) => occurrence.offset >= token.length).map((occurrence) => ({
19043
+ offset: occurrence.offset - token.length,
19044
+ length: occurrence.length
19045
+ })), rest.length);
18742
19046
  }
18743
19047
  /**
18744
- * Restore the composer caret to `caretIndex` after a programmatic
18745
- * `setDraft` commit. A controlled textarea update resets the caret (React
18746
- * commits the value asynchronously and the browser moves the caret to the
18747
- * start/end), so the placement is scheduled and retried across at most two
18748
- * animation frames (setTimeout fallback for jsdom), and only applied when
18749
- * the textarea still matches `expectedDraft` — a newer edit or a different
18750
- * composer wins the race untouched. The caret is clamped into the value
18751
- * bounds, mirroring how browsers clamp type-in positions.
18752
- */
18753
- function placeComposerCaretAfterInsert(expectedDraft, caretIndex) {
18754
- let remaining = 2;
18755
- let scheduled = false;
18756
- const schedule = (fn) => {
18757
- if (scheduled) return;
18758
- scheduled = true;
18759
- if (typeof requestAnimationFrame === "function") requestAnimationFrame(fn);
18760
- else setTimeout(fn, 0);
18761
- };
18762
- const place = () => {
18763
- scheduled = false;
18764
- if (remaining <= 0) return;
18765
- remaining -= 1;
18766
- const el = findComposerTextarea();
18767
- if (el === null || el.disabled || el.readOnly) return;
18768
- if (el.value !== expectedDraft) {
18769
- schedule(place);
18770
- return;
19048
+ * Mint one reference chip through the host's own `insertReference` — the
19049
+ * same facade method the native `@` picker's event listener calls, so the
19050
+ * composer shows a compact chip while the model receives `reference.text`.
19051
+ * The host runs its own admission-phase and revision guards and reports
19052
+ * whether the edit applied.
19053
+ *
19054
+ * The chip's `clipboardText` is the compact `label`, not the full payload —
19055
+ * see {@link PendingReference.clipboardText}.
19056
+ *
19057
+ * Returns false when the host refused the insert (stale revision, a frozen
19058
+ * submission phase, or no chip channel at all) so the caller can fall back.
19059
+ */
19060
+ function insertDraftReference(ctx, sessionId, reference) {
19061
+ let before;
19062
+ try {
19063
+ const actx = ctx.sessions.scope(sessionId);
19064
+ if (actx === void 0) return false;
19065
+ const conversation = ctx.get("conversation");
19066
+ if (conversation === void 0) return false;
19067
+ const input = conversation.input.for(actx);
19068
+ const snapshot = input.state.getSnapshot();
19069
+ if (input.insertReference === void 0 || snapshot.draftRev === void 0) return false;
19070
+ if (snapshot.phase === "adjudicating" || snapshot.phase === "submitting") return false;
19071
+ before = snapshot.draftRev;
19072
+ const at = appendOffset(snapshot);
19073
+ if (at === void 0) return false;
19074
+ let rev = snapshot.draftRev;
19075
+ let start = at;
19076
+ if (leadFor(snapshot.draft) !== "") {
19077
+ actx.emit("slash/input-insert-text", {
19078
+ text: " ",
19079
+ span: {
19080
+ draftRev: rev,
19081
+ start: at,
19082
+ end: at
19083
+ }
19084
+ });
19085
+ const afterSpace = input.state.getSnapshot();
19086
+ if (afterSpace.draftRev === rev) return false;
19087
+ rev = afterSpace.draftRev ?? rev;
19088
+ start = at + 1;
18771
19089
  }
18772
- const clamped = Math.max(0, Math.min(caretIndex, el.value.length));
18773
- el.setSelectionRange(clamped, clamped);
18774
- };
18775
- schedule(place);
19090
+ const chip = {
19091
+ source: "reference",
19092
+ ref: reference.text,
19093
+ label: reference.label,
19094
+ ...reference.appearance === void 0 ? {} : { appearance: reference.appearance },
19095
+ clipboardText: reference.clipboardText ?? reference.label
19096
+ };
19097
+ return input.insertReference(chip, {
19098
+ draftRev: rev,
19099
+ start,
19100
+ end: start
19101
+ });
19102
+ } catch (error) {
19103
+ console.warn("[dsh-better-sidebar] reference chip insert failed:", error);
19104
+ return revisionChanged(ctx, sessionId, before);
19105
+ }
19106
+ }
19107
+ /**
19108
+ * Whether the session's draft revision moved past `revision` — the only
19109
+ * trustworthy success signal after an exception swallowed the host's answer.
19110
+ * A missing service or snapshot counts as "no evidence of success".
19111
+ */
19112
+ function revisionChanged(ctx, sessionId, revision) {
19113
+ try {
19114
+ const actx = ctx.sessions.scope(sessionId);
19115
+ if (actx === void 0) return false;
19116
+ const now = (ctx.get("conversation")?.input.for(actx))?.state.getSnapshot().draftRev;
19117
+ if (now === void 0 || revision === void 0) return false;
19118
+ return now !== revision;
19119
+ } catch {
19120
+ return false;
19121
+ }
18776
19122
  }
18777
19123
  /**
18778
- * Insert `text` into the session's composer draft at the composer's live
18779
- * caret (see {@link probeComposerCaret}), falling back to appending at the
18780
- * end when the caret cannot be resolved. Returns false — and logs — when the
18781
- * conversation service or the session scope is unavailable.
19124
+ * Append `text` to the session's composer draft. Returns false — and logs —
19125
+ * when the conversation service or the session scope is unavailable.
19126
+ *
19127
+ * The host composer is a Lexical contenteditable with no caret API on this
19128
+ * face, so this appends at the end; a mid-draft insert would need the caret
19129
+ * the host does not publish here.
18782
19130
  */
18783
19131
  function appendToDraft(ctx, sessionId, text) {
18784
19132
  try {
@@ -18793,10 +19141,25 @@ window.__ModuleLoader__.load({
18793
19141
  return false;
18794
19142
  }
18795
19143
  const input = conversation.input.for(actx);
18796
- const draft = input.state.getSnapshot().draft;
18797
- const { draft: next, caretAfter } = spliceInsert(draft, text, probeComposerCaret(draft));
18798
- input.setDraft(next);
18799
- placeComposerCaretAfterInsert(next, caretAfter);
19144
+ const snapshot = input.state.getSnapshot();
19145
+ const draft = snapshot.draft;
19146
+ if ((snapshot.occurrences ?? []).length > 0 || snapshot.phase === "claimed") {
19147
+ const at = appendOffset(snapshot);
19148
+ if (snapshot.draftRev === void 0 || at === void 0) {
19149
+ console.warn("[dsh-better-sidebar] draft insert skipped: chip draft without a revision");
19150
+ return false;
19151
+ }
19152
+ actx.emit("slash/input-insert-text", {
19153
+ text: `${leadFor(draft)}${text}`,
19154
+ span: {
19155
+ draftRev: snapshot.draftRev,
19156
+ start: at,
19157
+ end: at
19158
+ }
19159
+ });
19160
+ return input.state.getSnapshot().draftRev !== snapshot.draftRev;
19161
+ }
19162
+ input.setDraft(appendText(draft, text));
18800
19163
  return true;
18801
19164
  } catch (error) {
18802
19165
  console.warn("[dsh-better-sidebar] draft insert failed:", error);
@@ -18804,6 +19167,15 @@ window.__ModuleLoader__.load({
18804
19167
  }
18805
19168
  }
18806
19169
  /**
19170
+ * Insert one reference as a chip, degrading to its plain-text form when the
19171
+ * host has no chip channel or refuses the insert. This is the ONE place the
19172
+ * fallback policy lives: the explorer's `@` button and the viewer selection
19173
+ * popup both come through here.
19174
+ */
19175
+ function insertReferenceOrText(ctx, sessionId, reference) {
19176
+ return insertDraftReference(ctx, sessionId, reference) || appendToDraft(ctx, sessionId, reference.text);
19177
+ }
19178
+ /**
18807
19179
  * The DSH `@` spelling for one relative path, mirroring the host grammar
18808
19180
  * (`formatFileMention` in `@deepseek-ai/dsh-file-reference`): plain when
18809
19181
  * there is no whitespace, quoted when there is, and `undefined` when the
@@ -18855,60 +19227,32 @@ window.__ModuleLoader__.load({
18855
19227
  console.warn("[dsh-better-sidebar] reference insert skipped: workspace root unavailable or path outside workspace");
18856
19228
  return false;
18857
19229
  }
18858
- const mention = isDir ? directoryMention(relative) : mentionFor(relative, "file")?.mention;
18859
- if (mention === void 0) {
19230
+ if (isDir) {
19231
+ const mention = directoryMention(relative);
19232
+ if (mention === void 0) {
19233
+ console.warn("[dsh-better-sidebar] reference insert skipped: path cannot be represented as a mention");
19234
+ return false;
19235
+ }
19236
+ return appendToDraft(ctx, sessionId, `${mention} `);
19237
+ }
19238
+ const file = mentionFor(relative, "file");
19239
+ if (file === void 0) {
18860
19240
  console.warn("[dsh-better-sidebar] reference insert skipped: path cannot be represented as a mention");
18861
19241
  return false;
18862
19242
  }
18863
- if (!isDir && insertFileReference(ctx, sessionId, relative)) return true;
18864
- return appendToDraft(ctx, sessionId, isDir ? `${mention} ` : mention);
18865
- } catch (error) {
18866
- console.warn("[dsh-better-sidebar] workspace-reference insert failed:", error);
18867
- return false;
18868
- }
18869
- }
18870
- /**
18871
- * Insert one FILE reference as a structured chip (like DSH's own `@` picker).
18872
- * The chip displays `@<basename>` but serializes to `@<relative path>` on
18873
- * send, so the reference stays a single link from trigger to basename.
18874
- *
18875
- * Directories keep the sidebar's plain-text completion behavior (`@dir/`)
18876
- * through `insertWorkspaceReference`. The rc.1 picker also supports folder
18877
- * chips on explicit selection; its drill action still inserts plain text.
18878
- */
18879
- function insertFileReference(ctx, sessionId, relativePath) {
18880
- const reference = mentionFor(relativePath, "file");
18881
- if (reference === void 0) return false;
18882
- try {
18883
- const actx = ctx.sessions.scope(sessionId);
18884
- if (actx === void 0) return false;
18885
- const conversation = ctx.get("conversation");
18886
- if (conversation === void 0) return false;
18887
- const input = conversation.input.for(actx);
18888
- const before = input.state.getSnapshot();
18889
- if (before.draftRev === void 0) return false;
18890
- actx.emit("slash/input-insert-reference", {
18891
- reference: {
18892
- source: "reference",
18893
- ref: reference.mention,
18894
- label: reference.label,
18895
- appearance: "file",
18896
- clipboardText: reference.mention
18897
- },
18898
- span: {
18899
- draftRev: before.draftRev,
18900
- start: before.draft.length,
18901
- end: before.draft.length
18902
- }
19243
+ return insertReferenceOrText(ctx, sessionId, {
19244
+ label: file.label,
19245
+ text: file.mention,
19246
+ clipboardText: file.mention,
19247
+ appearance: "file"
18903
19248
  });
18904
- return input.state.getSnapshot().draftRev !== before.draftRev;
18905
19249
  } catch (error) {
18906
- console.warn("[dsh-better-sidebar] file-reference insert failed:", error);
19250
+ console.warn("[dsh-better-sidebar] workspace-reference insert failed:", error);
18907
19251
  return false;
18908
19252
  }
18909
19253
  }
18910
19254
  //#endregion
18911
- //#region ../../node_modules/.pnpm/@sparkelf+dsh-better-sidebar@0.26.0-sparkelf.3_b1f976b00327a1c65c547984c9be7402/node_modules/@sparkelf/dsh-better-sidebar/src/client/reference-in-chat.ts
19255
+ //#region ../../../DSH-better-sidebar/src/client/reference-in-chat.ts
18912
19256
  /**
18913
19257
  * Reference one path in the session's conversation draft.
18914
19258
  * @param ctx - the client context.
@@ -18931,14 +19275,14 @@ window.__ModuleLoader__.load({
18931
19275
  document.head.appendChild(tag);
18932
19276
  }
18933
19277
  var KnowledgeReferencePicker_module_css_default = {
19278
+ "rowName": "uUHBaG_rowName",
18934
19279
  "body": "uUHBaG_body",
18935
- "content": "uUHBaG_content",
18936
- "footer": "uUHBaG_footer",
19280
+ "rowWhen": "uUHBaG_rowWhen",
19281
+ "list": "uUHBaG_list",
18937
19282
  "empty": "uUHBaG_empty",
18938
19283
  "error": "uUHBaG_error",
18939
- "rowName": "uUHBaG_rowName",
18940
- "rowWhen": "uUHBaG_rowWhen",
18941
- "list": "uUHBaG_list"
19284
+ "footer": "uUHBaG_footer",
19285
+ "content": "uUHBaG_content"
18942
19286
  };
18943
19287
  //#endregion
18944
19288
  //#region src/client/insertReadiness.ts
@@ -20159,7 +20503,7 @@ window.__ModuleLoader__.load({
20159
20503
  */
20160
20504
  const favorites = useFavorites(state.kind === "ready" && state.config.mountPoint !== "");
20161
20505
  /** The caller's list/grid preference, read from their own view directory. */
20162
- const viewMode = useViewMode(state.kind === "ready" && state.config.mountPoint !== "");
20506
+ const viewMode = { mode: "explorer" };
20163
20507
  /** The tree's row order, remembered in this browser (see `useTreeSort`). */
20164
20508
  const sort = useTreeSort(state.kind === "ready" ? state.config.mountPoint : "");
20165
20509
  /**
@@ -20451,20 +20795,53 @@ window.__ModuleLoader__.load({
20451
20795
  announce: t("loading")
20452
20796
  })
20453
20797
  });
20454
- if (state.kind === "unavailable") return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
20798
+ if (state.kind === "unavailable") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
20455
20799
  className: KnowledgePanel_module_css_default.page,
20456
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
20457
- className: KnowledgePanel_module_css_default.error,
20800
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
20801
+ className: KnowledgePanel_module_css_default.errorPanel,
20458
20802
  role: "alert",
20459
- children: "Knowledge base is unavailable."
20460
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
20461
- type: "button",
20462
- className: KnowledgePanel_module_css_default.retry,
20463
- onClick: () => {
20464
- load();
20465
- },
20466
- children: "Retry"
20467
- })]
20803
+ children: [
20804
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
20805
+ className: KnowledgePanel_module_css_default.errorGlyph,
20806
+ "aria-hidden": "true",
20807
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
20808
+ width: "20",
20809
+ height: "20",
20810
+ viewBox: "0 0 24 24",
20811
+ fill: "none",
20812
+ stroke: "currentColor",
20813
+ strokeWidth: "1.8",
20814
+ strokeLinecap: "round",
20815
+ strokeLinejoin: "round",
20816
+ children: [
20817
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
20818
+ cx: "12",
20819
+ cy: "12",
20820
+ r: "9"
20821
+ }),
20822
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M12 7.5v5.5" }),
20823
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M12 16.5h.01" })
20824
+ ]
20825
+ })
20826
+ }),
20827
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
20828
+ className: KnowledgePanel_module_css_default.errorTitle,
20829
+ children: t("unavailable")
20830
+ }),
20831
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
20832
+ className: KnowledgePanel_module_css_default.errorDetail,
20833
+ children: t("unavailableDetail")
20834
+ }),
20835
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
20836
+ type: "button",
20837
+ className: KnowledgePanel_module_css_default.retry,
20838
+ onClick: () => {
20839
+ load();
20840
+ },
20841
+ children: t("retry")
20842
+ })
20843
+ ]
20844
+ })
20468
20845
  });
20469
20846
  const { config, status } = state;
20470
20847
  /**
@@ -22020,58 +22397,58 @@ window.__ModuleLoader__.load({
22020
22397
  document.head.appendChild(tag);
22021
22398
  }
22022
22399
  var WorkflowPlaza_module_css_default = {
22400
+ "cardDesc": "lYC_0W_cardDesc",
22023
22401
  "frequencies": "lYC_0W_frequencies",
22024
- "failure": "lYC_0W_failure",
22025
- "reviewList": "lYC_0W_reviewList",
22026
- "reviewMeta": "lYC_0W_reviewMeta",
22027
- "reviewDescription": "lYC_0W_reviewDescription",
22028
- "tabs": "lYC_0W_tabs",
22029
22402
  "pageTitle": "lYC_0W_pageTitle",
22030
- "reviewActions": "lYC_0W_reviewActions",
22031
- "cardIcon": "lYC_0W_cardIcon",
22032
- "field": "lYC_0W_field",
22033
- "actions": "lYC_0W_actions",
22034
- "detailDescription": "lYC_0W_detailDescription",
22403
+ "reviewCard": "lYC_0W_reviewCard",
22404
+ "detailDialogBody": "lYC_0W_detailDialogBody",
22405
+ "mineStatus": "lYC_0W_mineStatus",
22406
+ "headerRow": "lYC_0W_headerRow",
22407
+ "dialogBody": "lYC_0W_dialogBody",
22408
+ "cronValid": "lYC_0W_cronValid",
22409
+ "tabs": "lYC_0W_tabs",
22410
+ "reviewDescription": "lYC_0W_reviewDescription",
22035
22411
  "dialogIntro": "lYC_0W_dialogIntro",
22412
+ "tabActive": "lYC_0W_tabActive",
22036
22413
  "mineScope": "lYC_0W_mineScope",
22037
- "mineTime": "lYC_0W_mineTime",
22038
- "reviewEmpty": "lYC_0W_reviewEmpty",
22039
- "cardCron": "lYC_0W_cardCron",
22040
22414
  "cardTitle": "lYC_0W_cardTitle",
22415
+ "reviewTitle": "lYC_0W_reviewTitle",
22041
22416
  "mark": "lYC_0W_mark",
22042
- "cronValid": "lYC_0W_cronValid",
22043
- "detailDialogBody": "lYC_0W_detailDialogBody",
22044
- "mineFooter": "lYC_0W_mineFooter",
22045
22417
  "failureRow": "lYC_0W_failureRow",
22418
+ "failure": "lYC_0W_failure",
22046
22419
  "reviewPrompt": "lYC_0W_reviewPrompt",
22047
- "mineTags": "lYC_0W_mineTags",
22048
- "detailFacts": "lYC_0W_detailFacts",
22049
- "fieldLabel": "lYC_0W_fieldLabel",
22050
- "cardDesc": "lYC_0W_cardDesc",
22051
- "card": "lYC_0W_card",
22052
- "dialogBody": "lYC_0W_dialogBody",
22053
- "reviewCard": "lYC_0W_reviewCard",
22054
- "detailInstruction": "lYC_0W_detailInstruction",
22420
+ "frequency": "lYC_0W_frequency",
22421
+ "tab": "lYC_0W_tab",
22422
+ "reviewActions": "lYC_0W_reviewActions",
22423
+ "mineTime": "lYC_0W_mineTime",
22424
+ "cardTop": "lYC_0W_cardTop",
22425
+ "mineFooter": "lYC_0W_mineFooter",
22426
+ "reviewMeta": "lYC_0W_reviewMeta",
22055
22427
  "frequencyOn": "lYC_0W_frequencyOn",
22428
+ "body": "lYC_0W_body",
22429
+ "field": "lYC_0W_field",
22430
+ "page": "lYC_0W_page",
22431
+ "mineTags": "lYC_0W_mineTags",
22432
+ "actions": "lYC_0W_actions",
22056
22433
  "cardFoot": "lYC_0W_cardFoot",
22057
- "reviewTitle": "lYC_0W_reviewTitle",
22434
+ "cardCron": "lYC_0W_cardCron",
22058
22435
  "review": "lYC_0W_review",
22059
- "reviewNote": "lYC_0W_reviewNote",
22060
- "reviewHead": "lYC_0W_reviewHead",
22061
- "page": "lYC_0W_page",
22062
- "cardTop": "lYC_0W_cardTop",
22063
- "state": "lYC_0W_state",
22064
- "tabCount": "lYC_0W_tabCount",
22065
22436
  "cards": "lYC_0W_cards",
22066
- "dialogFoot": "lYC_0W_dialogFoot",
22067
- "mineStatus": "lYC_0W_mineStatus",
22068
- "frequency": "lYC_0W_frequency",
22437
+ "state": "lYC_0W_state",
22438
+ "fieldLabel": "lYC_0W_fieldLabel",
22069
22439
  "cronInvalid": "lYC_0W_cronInvalid",
22070
- "body": "lYC_0W_body",
22071
- "headerRow": "lYC_0W_headerRow",
22440
+ "dialogFoot": "lYC_0W_dialogFoot",
22441
+ "reviewEmpty": "lYC_0W_reviewEmpty",
22442
+ "cardIcon": "lYC_0W_cardIcon",
22443
+ "card": "lYC_0W_card",
22444
+ "reviewList": "lYC_0W_reviewList",
22445
+ "reviewHead": "lYC_0W_reviewHead",
22446
+ "detailInstruction": "lYC_0W_detailInstruction",
22072
22447
  "cronInput": "lYC_0W_cronInput",
22073
- "tabActive": "lYC_0W_tabActive",
22074
- "tab": "lYC_0W_tab"
22448
+ "detailFacts": "lYC_0W_detailFacts",
22449
+ "detailDescription": "lYC_0W_detailDescription",
22450
+ "reviewNote": "lYC_0W_reviewNote",
22451
+ "tabCount": "lYC_0W_tabCount"
22075
22452
  };
22076
22453
  //#endregion
22077
22454
  //#region src/client/workflows/WorkflowPlaza.tsx