@lemoncat7/dsh-knowledge 2.9.4 → 2.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +4 -0
  2. package/docs/architecture.md +6 -0
  3. package/docs/dsh-015-compatibility.md +21 -0
  4. package/docs/releases/2.9.5.md +11 -0
  5. package/docs/releases/2.9.6.md +12 -0
  6. package/lib/api.d.ts.map +1 -1
  7. package/lib/api.js +14 -0
  8. package/lib/api.js.map +1 -1
  9. package/lib/client.d.ts.map +1 -1
  10. package/lib/client.js +298 -100
  11. package/lib/client.js.map +4 -4
  12. package/lib/docked-panel-compat.d.ts +13 -0
  13. package/lib/docked-panel-compat.d.ts.map +1 -0
  14. package/lib/docked-panel-compat.js +116 -0
  15. package/lib/docked-panel-compat.js.map +1 -0
  16. package/lib/knowledge-activity-controller.d.ts.map +1 -1
  17. package/lib/knowledge-activity-controller.js +36 -0
  18. package/lib/knowledge-activity-controller.js.map +1 -1
  19. package/lib/knowledge-activity-state.d.ts +2 -2
  20. package/lib/knowledge-activity-state.d.ts.map +1 -1
  21. package/lib/knowledge-activity-state.js +5 -3
  22. package/lib/knowledge-activity-state.js.map +1 -1
  23. package/lib/local-provider.d.ts +3 -0
  24. package/lib/local-provider.d.ts.map +1 -1
  25. package/lib/local-provider.js +50 -0
  26. package/lib/local-provider.js.map +1 -1
  27. package/lib/main-panel-compat.d.ts +5 -0
  28. package/lib/main-panel-compat.d.ts.map +1 -0
  29. package/lib/main-panel-compat.js +38 -0
  30. package/lib/main-panel-compat.js.map +1 -0
  31. package/lib/note-excerpt.d.ts +12 -0
  32. package/lib/note-excerpt.d.ts.map +1 -0
  33. package/lib/note-excerpt.js +9 -0
  34. package/lib/note-excerpt.js.map +1 -0
  35. package/lib/web-note-editor-chrome.d.ts +1 -0
  36. package/lib/web-note-editor-chrome.d.ts.map +1 -1
  37. package/lib/web-note-editor-chrome.js +1 -0
  38. package/lib/web-note-editor-chrome.js.map +1 -1
  39. package/lib/web-note-editor-selection.d.ts +1 -0
  40. package/lib/web-note-editor-selection.d.ts.map +1 -1
  41. package/lib/web-note-editor-selection.js +21 -1
  42. package/lib/web-note-editor-selection.js.map +1 -1
  43. package/lib/web-note-editor.d.ts +2 -0
  44. package/lib/web-note-editor.d.ts.map +1 -1
  45. package/lib/web-note-editor.js +12 -0
  46. package/lib/web-note-editor.js.map +1 -1
  47. package/lib/web.d.ts.map +1 -1
  48. package/lib/web.js +1 -0
  49. package/lib/web.js.map +1 -1
  50. package/package.json +1 -1
  51. package/web/app.js +13 -0
  52. package/web/note-editor.js +57 -56
  53. package/web/note-excerpt.js +118 -0
  54. package/web/styles.css +6 -0
package/lib/client.js CHANGED
@@ -25,7 +25,7 @@ __export(client_exports, {
25
25
  inject: () => inject
26
26
  });
27
27
  module.exports = __toCommonJS(client_exports);
28
- var import_react4 = require("react");
28
+ var import_react6 = require("react");
29
29
 
30
30
  // src/writeback/status-client.ts
31
31
  var WritebackStatusClient = class {
@@ -305,9 +305,10 @@ function knowledgeDesignCss(scope = ":root", dark = ':root[data-color-scheme="da
305
305
  }
306
306
 
307
307
  // src/knowledge-activity-state.ts
308
- function availableActivitySession(state) {
308
+ function availableActivitySession(state, docked = false) {
309
309
  const current = state.current;
310
- return current !== void 0 && state.byId[current]?.blank === false ? String(current) : void 0;
310
+ if (current === void 0 || state.byId[current] === void 0) return void 0;
311
+ return docked || state.byId[current]?.blank === false ? String(current) : void 0;
311
312
  }
312
313
  function mergeActivitySelection(previous, next) {
313
314
  const merged = { ...previous, ...next };
@@ -317,14 +318,156 @@ function mergeActivitySelection(previous, next) {
317
318
  return merged;
318
319
  }
319
320
 
321
+ // src/docked-panel-compat.tsx
322
+ var import_react = require("react");
323
+ function supportsDockedPanels(ctx) {
324
+ return typeof ctx.layout.selectPanel === "function";
325
+ }
326
+ function createDockedPanel(ctx, id, title, render, notify) {
327
+ const records = /* @__PURE__ */ new Map();
328
+ let pending;
329
+ let frame;
330
+ let disposed = false;
331
+ let sidebar;
332
+ const cancel = () => {
333
+ if (frame !== void 0) window.cancelAnimationFrame(frame);
334
+ frame = void 0;
335
+ pending = void 0;
336
+ };
337
+ function Body(props) {
338
+ const { tab } = props.useTabInfo();
339
+ const sessionId = String(props.sessionId);
340
+ (0, import_react.useEffect)(() => {
341
+ let entries2 = records.get(sessionId);
342
+ if (entries2 === void 0) {
343
+ entries2 = /* @__PURE__ */ new Map();
344
+ records.set(sessionId, entries2);
345
+ }
346
+ const entry = { visible: tab.visible, close: () => tab.actions.close() };
347
+ entries2.set(tab.id, entry);
348
+ const remove = () => {
349
+ if (entries2?.get(tab.id) !== entry) return;
350
+ entries2.delete(tab.id);
351
+ if (entries2.size === 0) records.delete(sessionId);
352
+ notify();
353
+ };
354
+ tab.signal.addEventListener("abort", remove, { once: true });
355
+ notify();
356
+ return () => {
357
+ tab.signal.removeEventListener("abort", remove);
358
+ remove();
359
+ };
360
+ }, [sessionId, tab.id, tab.visible, tab.signal]);
361
+ return tab.visible ? render(props) : null;
362
+ }
363
+ const fiber = ctx.inject(["sidebarRight", "sidebarRightTabs"], (child) => {
364
+ sidebar = child.get("sidebarRight");
365
+ const registry = child.get("sidebarRightTabs");
366
+ const slots = child.slots;
367
+ child.effect(() => registry.register({ id, kind: id, title: () => title }), id + ": tab type");
368
+ child.effect(() => slots.inject("sidebar.right.pane.tab", () => slots.register({
369
+ name: "sidebar.right.pane.tab",
370
+ key: id
371
+ }, Body)), id + ": tab body");
372
+ child.effect(() => () => {
373
+ sidebar = void 0;
374
+ }, id + ": tab service");
375
+ });
376
+ return {
377
+ open(sessionId) {
378
+ cancel();
379
+ pending = sessionId;
380
+ let attempts = 0;
381
+ const reveal = () => {
382
+ frame = void 0;
383
+ if (disposed || pending !== sessionId) return;
384
+ const sessions = ctx.get("sessions");
385
+ if (String(sessions.list.getSnapshot().current) !== sessionId) {
386
+ cancel();
387
+ notify();
388
+ return;
389
+ }
390
+ try {
391
+ if (sidebar === void 0) throw new Error("Right sidebar is not ready");
392
+ sidebar.openTab(id);
393
+ pending = void 0;
394
+ notify();
395
+ } catch (error) {
396
+ if (++attempts < 30) frame = window.requestAnimationFrame(reveal);
397
+ else {
398
+ cancel();
399
+ notify();
400
+ console.error(title + ": could not open sidebar", error);
401
+ }
402
+ }
403
+ };
404
+ frame = window.requestAnimationFrame(reveal);
405
+ notify();
406
+ },
407
+ close(sessionId) {
408
+ if (pending === sessionId) cancel();
409
+ for (const entry of [...records.get(sessionId)?.values() ?? []]) entry.close();
410
+ records.delete(sessionId);
411
+ notify();
412
+ },
413
+ isOpen(sessionId) {
414
+ return pending === sessionId || [...records.get(sessionId)?.values() ?? []].some((entry) => entry.visible);
415
+ },
416
+ dispose() {
417
+ disposed = true;
418
+ cancel();
419
+ for (const entries2 of records.values()) for (const entry of [...entries2.values()]) entry.close();
420
+ records.clear();
421
+ void fiber.dispose();
422
+ }
423
+ };
424
+ }
425
+
320
426
  // src/client.css
321
- var client_default = '.dsh-knowledge-trigger,\n.dsh-knowledge-activity-panel,\n.dsh-knowledge-workspace,\n.dsh-knowledge-settings-card,\n.dsh-knowledge-writeback-notice {\n color-scheme: light;\n --knowledge-canvas: transparent;\n --knowledge-accent: var(--accent);\n --knowledge-on-accent: var(--on-accent);\n --knowledge-danger: var(--danger);\n --knowledge-success: var(--success);\n --knowledge-pane: rgba(255, 255, 255, 0.16);\n --knowledge-raised: rgba(255, 255, 255, 0.38);\n --knowledge-control: rgba(255, 255, 255, 0.27);\n --knowledge-border: var(--border);\n --knowledge-text: var(--text);\n --knowledge-text-secondary: var(--text-secondary);\n --knowledge-text-tertiary: var(--text-tertiary);\n --knowledge-hover: var(--surface-hover);\n --knowledge-glare-light: rgb(255 255 255 / 70%);\n --knowledge-glare-rim: rgb(60 60 67 / 11%);\n --knowledge-glass-filter: saturate(1.22) contrast(1.03) blur(32px);\n --knowledge-host-glass-filter: saturate(.18) contrast(1.015) blur(24px);\n --knowledge-glass-shadow: inset 0 1px 0 rgb(255 255 255 / 70%), inset 0 -1px 0 rgb(60 60 67 / 11%), 0 10px 28px rgb(31 31 35 / 8.5%);\n --knowledge-font-family: var(--font-ui);\n color: var(--knowledge-text);\n font-family: var(--knowledge-font-family);\n font-size: 13px;\n line-height: 1.5;\n}\n\nbody[data-ds-dark-theme] :is(\n .dsh-knowledge-trigger,\n .dsh-knowledge-activity-panel,\n .dsh-knowledge-workspace,\n .dsh-knowledge-settings-card,\n .dsh-knowledge-writeback-notice\n) {\n color-scheme: dark;\n --knowledge-canvas: transparent;\n --knowledge-accent: var(--accent);\n --knowledge-on-accent: var(--on-accent);\n --knowledge-danger: var(--danger);\n --knowledge-success: var(--success);\n --knowledge-pane: rgb(25 33 35 / 90%);\n --knowledge-raised: rgb(32 41 43 / 94%);\n --knowledge-control: rgb(39 50 53 / 92%);\n --knowledge-border: var(--border);\n --knowledge-text: var(--text);\n --knowledge-text-secondary: var(--text-secondary);\n --knowledge-text-tertiary: var(--text-tertiary);\n --knowledge-hover: var(--surface-hover);\n --knowledge-glare-light: rgb(255 255 255 / 16%);\n --knowledge-glare-rim: rgb(0 0 0 / 30%);\n --knowledge-host-glass-filter: saturate(.45) contrast(1.02) blur(24px);\n --knowledge-glass-shadow: inset 0 1px 0 rgb(255 255 255 / 16%), inset 0 -1px 0 rgb(0 0 0 / 30%), 0 12px 32px rgb(0 0 0 / 30%);\n}\n\n:is(\n .dsh-knowledge-trigger,\n .dsh-knowledge-activity-panel,\n .dsh-knowledge-workspace,\n .dsh-knowledge-settings-card,\n .dsh-knowledge-writeback-notice\n),\n:is(\n .dsh-knowledge-trigger,\n .dsh-knowledge-activity-panel,\n .dsh-knowledge-workspace,\n .dsh-knowledge-settings-card,\n .dsh-knowledge-writeback-notice\n) * {\n box-sizing: border-box;\n}\n\n:is(\n .dsh-knowledge-trigger,\n .dsh-knowledge-activity-panel,\n .dsh-knowledge-workspace,\n .dsh-knowledge-settings-card,\n .dsh-knowledge-writeback-notice\n) :where(button, input, textarea, select) {\n margin: 0;\n color: inherit;\n font-family: var(--knowledge-font-family);\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n letter-spacing: inherit;\n}\n\n.dsh-knowledge-trigger,\n.dsh-knowledge-activity-panel button,\n.dsh-knowledge-activity-panel input,\n.dsh-knowledge-panel-state button,\n.dsh-knowledge-settings-card button,\n.dsh-knowledge-writeback-notice button {\n -webkit-appearance: none;\n appearance: none;\n margin: 0;\n}\n\n/* The official footer slot is a horizontal list. Only opt its immediate\n container into wrapping; leave neighboring plugin controls untouched. */\n:has(> .dsh-knowledge-launcher) { flex-wrap: wrap; }\n/* In rail mode the host centers a 36px settings row. Use that same row\n geometry, rather than forcing a percentage-width footer. */\n:has(> .dsh-knowledge-launcher--rail) { flex-direction: column; align-items: center; }\n\n.dsh-knowledge-launcher {\n display: flex;\n flex: 0 0 calc(100% + 4px);\n order: -1;\n min-width: 0;\n gap: 4px;\n width: calc(100% + 4px);\n margin: 4px -2px;\n box-sizing: border-box;\n}\n\n.dsh-knowledge-launcher--rail { flex: none; width: 36px; margin: 8px 0 10px; flex-direction: column; align-items: center; }\n\n.dsh-knowledge-trigger {\n position: relative;\n flex: 1 1 auto;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n width: auto;\n height: 36px;\n margin: 0;\n padding: 0 10px 0 8px;\n box-sizing: border-box;\n border: 0;\n border-radius: 12px;\n overflow: hidden;\n background: transparent;\n color: var(--knowledge-text);\n cursor: pointer;\n font: inherit;\n font-size: 14px;\n line-height: 22px;\n white-space: nowrap;\n isolation: isolate;\n transition:\n color 120ms ease,\n background-color 120ms ease,\n box-shadow 160ms ease;\n}\n\n.dsh-knowledge-trigger:hover {\n background: var(--knowledge-hover);\n}\n\n.dsh-knowledge-trigger:focus-visible,\n.dsh-knowledge-writeback-notice button:focus-visible {\n outline: 2px solid var(--knowledge-accent);\n outline-offset: 2px;\n}\n\n.dsh-knowledge-trigger.is-active {\n background: var(--knowledge-control);\n color: var(--knowledge-text);\n box-shadow: 0 1px 2px rgb(0 0 0 / 7%), inset 0 1px 0 rgb(255 255 255 / 28%);\n}\n\n.dsh-knowledge-trigger--rail {\n width: 36px;\n height: 36px;\n margin: 8px 0 10px;\n padding: 0;\n justify-content: center;\n gap: 0;\n border-radius: 50%;\n}\n\n.dsh-knowledge-trigger--rail { margin-inline: auto; }\n\n.dsh-knowledge-launcher .dsh-knowledge-trigger--rail { flex: none; margin-block: 0; }\n.dsh-knowledge-panel-trigger { flex: 0 0 36px; width: 36px; padding: 0; justify-content: center; }\n.dsh-knowledge-panel-trigger:disabled { opacity: .4; cursor: default; background: transparent; }\n.dsh-knowledge-launcher--rail .dsh-knowledge-panel-trigger { flex: none; border-radius: 50%; }\n\n@media (prefers-reduced-motion: reduce) {\n .dsh-knowledge-trigger { transition: none; }\n}\n\n.dsh-knowledge-workspace {\n width: 100%;\n height: 100%;\n min-width: 0;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background: var(--knowledge-canvas);\n}\n\n.dsh-knowledge-workspace-header {\n position: relative;\n z-index: 2;\n flex: none;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n min-height: 52px;\n margin: 8px 10px 0;\n padding: 7px 14px;\n box-sizing: border-box;\n border: 1px solid var(--knowledge-border);\n border-radius: 14px 14px 11px 11px;\n background: transparent;\n box-shadow: var(--knowledge-glass-shadow);\n -webkit-backdrop-filter: var(--knowledge-host-glass-filter);\n backdrop-filter: var(--knowledge-host-glass-filter);\n}\n\n.dsh-knowledge-workspace-header > div {\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n}\n\n.dsh-knowledge-workspace-header [data-knowledge-workspace-close] {\n -webkit-appearance: none;\n appearance: none;\n display: grid;\n place-items: center;\n box-sizing: border-box;\n flex: none;\n width: 30px;\n height: 30px;\n margin: 0;\n padding: 0;\n border: 1px solid transparent;\n border-radius: 9px;\n color: var(--knowledge-text-secondary);\n background: transparent;\n font: inherit;\n line-height: 1;\n -webkit-tap-highlight-color: transparent;\n cursor: pointer;\n transition: color 120ms ease, background-color 120ms ease, border-color 120ms ease;\n}\n\n.dsh-knowledge-workspace-header [data-knowledge-workspace-close]:hover {\n border-color: var(--knowledge-border);\n color: var(--knowledge-text);\n background: var(--knowledge-control);\n}\n\n.dsh-knowledge-workspace-header [data-knowledge-workspace-close]:active { border-color: var(--knowledge-text-secondary); }\n.dsh-knowledge-workspace-header [data-knowledge-workspace-close]:focus-visible {\n outline: 2px solid var(--knowledge-accent);\n outline-offset: 2px;\n}\n.dsh-knowledge-workspace-header [data-knowledge-workspace-close] > svg {\n display: block;\n pointer-events: none;\n}\n\n.dsh-knowledge-workspace-header > div > span {\n display: grid;\n min-width: 0;\n gap: 2px;\n}\n\n.dsh-knowledge-workspace-header h2,\n.dsh-knowledge-workspace-header p {\n margin: 0;\n}\n\n.dsh-knowledge-workspace-header h2 {\n color: var(--knowledge-text);\n font-size: 15px;\n line-height: 22px;\n font-weight: 600;\n}\n\n.dsh-knowledge-workspace-header p {\n color: var(--knowledge-text-secondary);\n font-size: 11px;\n line-height: 16px;\n}\n\n.dsh-knowledge-frame {\n flex: 1;\n display: block;\n width: 100%;\n min-height: 0;\n margin: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n box-shadow: none;\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n}\n\n.dsh-knowledge-panel-state {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 16px;\n min-height: 0;\n margin: 8px 10px 10px;\n padding: 32px;\n box-sizing: border-box;\n border: 1px solid var(--knowledge-border);\n border-radius: 15px;\n background: var(--knowledge-pane);\n box-shadow: var(--knowledge-glass-shadow);\n -webkit-backdrop-filter: var(--knowledge-host-glass-filter);\n backdrop-filter: var(--knowledge-host-glass-filter);\n color: var(--knowledge-text);\n}\n\n.dsh-knowledge-panel-state-icon {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: 12px;\n background: var(--knowledge-hover);\n color: var(--knowledge-text-secondary);\n font-size: 18px;\n font-weight: 600;\n}\n\n.dsh-knowledge-panel-state > div { max-width: 560px; }\n.dsh-knowledge-panel-state h3 { margin: 0 0 6px; font-size: 17px; line-height: 24px; font-weight: 600; }\n.dsh-knowledge-panel-state p { margin: 0; color: var(--knowledge-text-secondary); font-size: 13px; line-height: 20px; }\n.dsh-knowledge-panel-state button {\n min-width: 72px;\n min-height: 32px;\n margin-top: 16px;\n padding: 6px 14px;\n border: 0;\n border-radius: 10px;\n background: var(--knowledge-accent);\n color: var(--knowledge-on-accent);\n cursor: pointer;\n font: inherit;\n}\n.dsh-knowledge-panel-state button:focus-visible {\n outline: 2px solid var(--knowledge-accent);\n outline-offset: 2px;\n}\n\n.dsh-knowledge-settings-card {\n list-style: none;\n overflow: hidden;\n border: 1px solid var(--knowledge-border);\n border-radius: 14px;\n background:\n linear-gradient(145deg, color-mix(in srgb, var(--knowledge-glare-light) 16%, transparent), transparent 58%),\n var(--knowledge-pane);\n color: var(--knowledge-text);\n box-shadow: var(--knowledge-glass-shadow), 0 8px 24px rgb(0 0 0 / 5%);\n -webkit-backdrop-filter: var(--knowledge-glass-filter);\n backdrop-filter: var(--knowledge-glass-filter);\n transition: border-color 120ms ease, background-color 120ms ease;\n}\n.dsh-knowledge-settings-card:hover {\n border-color: color-mix(in srgb, var(--knowledge-border) 68%, var(--knowledge-text-secondary));\n}\n.dsh-knowledge-settings-card--open {\n border-color: color-mix(in srgb, var(--knowledge-border) 68%, var(--knowledge-text-secondary));\n background: var(--knowledge-pane);\n}\n.dsh-knowledge-settings-header { display: flex; width: 100%; align-items: center; gap: 12px; padding: 14px 16px; border: 0; border-radius: 12px; background: transparent; color: inherit; text-align: left; cursor: pointer; font: inherit; }\n.dsh-knowledge-settings-header:focus-visible {\n outline: 2px solid var(--knowledge-accent);\n outline-offset: -2px;\n}\n.dsh-knowledge-settings-actions button:focus-visible,\n.dsh-knowledge-settings-load-error button:focus-visible {\n outline: 2px solid var(--knowledge-accent);\n outline-offset: 2px;\n}\n.dsh-knowledge-settings-header > span:first-child { display: flex; min-width: 0; flex: 1; flex-direction: column; gap: 4px; }\n.dsh-knowledge-settings-header strong { font-size: 15px; font-weight: 600; line-height: 1.4; }\n.dsh-knowledge-settings-header small { color: var(--knowledge-text-tertiary); font-size: 13px; line-height: 1.5; }\n.dsh-knowledge-source-picker small,\n.dsh-knowledge-remote-fields small { color: var(--knowledge-text-secondary); font-size: 12px; }\n.dsh-knowledge-settings-summary { display: flex; flex: none; align-items: center; gap: 10px; color: var(--knowledge-text-tertiary); font-size: 12px; }\n.dsh-knowledge-settings-summary i { width: 8px; height: 8px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg); transition: transform 160ms ease; }\n.dsh-knowledge-settings-card--open .dsh-knowledge-settings-summary i { transform: rotate(225deg); }\n\n.dsh-knowledge-settings-body {\n display: grid;\n gap: 18px;\n margin: 0 16px;\n padding-bottom: 8px;\n border-top: 1px solid var(--knowledge-border);\n}\n\n.dsh-knowledge-source-picker {\n min-width: 0;\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 10px;\n margin: 18px 0 0;\n padding: 0;\n border: 0;\n}\n\n.dsh-knowledge-source-picker legend { margin-bottom: 8px; padding: 0; color: inherit; font-size: 13px; font-weight: 600; }\n.dsh-knowledge-source-picker label {\n display: flex;\n gap: 10px;\n padding: 13px;\n border: 1px solid var(--knowledge-border);\n border-radius: 14px;\n cursor: pointer;\n}\n.dsh-knowledge-source-picker label.is-selected {\n border-color: var(--knowledge-accent);\n background: color-mix(in srgb, var(--knowledge-accent) 7%, transparent);\n}\n.dsh-knowledge-source-picker label.is-disabled {\n cursor: default;\n opacity: .55;\n}\n.dsh-knowledge-source-picker label:focus-within {\n outline: 2px solid var(--knowledge-accent);\n outline-offset: 2px;\n}\n.dsh-knowledge-source-picker input {\n -webkit-appearance: none;\n appearance: none;\n width: 16px;\n height: 16px;\n display: inline-grid;\n place-content: center;\n flex: none;\n margin: 2px 0 0;\n border: 1px solid var(--knowledge-border);\n border-radius: 50%;\n background: var(--knowledge-control);\n color: var(--knowledge-on-accent);\n cursor: pointer;\n transition: border-color .15s ease, background-color .15s ease;\n}\n.dsh-knowledge-source-picker input::before {\n content: "";\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: currentColor;\n opacity: 0;\n transform: scale(.55);\n transition: opacity .12s ease, transform .15s cubic-bezier(.2, .8, .2, 1);\n}\n.dsh-knowledge-source-picker input:checked { border-color: var(--knowledge-accent); background: var(--knowledge-accent); }\n.dsh-knowledge-source-picker input:checked::before { opacity: 1; transform: scale(1); }\n.dsh-knowledge-source-picker input:disabled { cursor: default; }\n.dsh-knowledge-source-picker span { display: grid; gap: 3px; }\n\n.dsh-knowledge-remote-fields { display: grid; grid-template-columns: 1.25fr 1fr; gap: 12px; }\n.dsh-knowledge-remote-fields label,\n.dsh-knowledge-timeout-field { display: grid; gap: 6px; color: var(--knowledge-text-secondary); font-size: 12px; }\n.dsh-knowledge-remote-fields input,\n.dsh-knowledge-timeout-field input {\n -webkit-appearance: none;\n appearance: none;\n min-height: 38px;\n box-sizing: border-box;\n padding: 8px 11px;\n border: 1px solid var(--knowledge-border);\n border-radius: 10px;\n outline: none;\n background: var(--knowledge-control);\n color: var(--knowledge-text);\n font: inherit;\n}\n.dsh-knowledge-remote-fields input:focus,\n.dsh-knowledge-timeout-field input:focus { border-color: var(--knowledge-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--knowledge-accent) 16%, transparent); }\n.dsh-knowledge-remote-fields input:-webkit-autofill,\n.dsh-knowledge-remote-fields input:-webkit-autofill:hover,\n.dsh-knowledge-remote-fields input:-webkit-autofill:focus {\n -webkit-text-fill-color: var(--knowledge-text);\n box-shadow: 0 0 0 1000px var(--knowledge-control) inset;\n caret-color: var(--knowledge-text);\n}\n.dsh-knowledge-timeout-field input::-webkit-inner-spin-button,\n.dsh-knowledge-timeout-field input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }\n.dsh-knowledge-timeout-field { max-width: 240px; }\n.dsh-knowledge-field-error { color: var(--knowledge-danger) !important; }\n\n.dsh-knowledge-settings-message,\n.dsh-knowledge-settings-note { margin: 0; color: var(--knowledge-text-secondary); font-size: 12px; }\n.dsh-knowledge-settings-message.is-success { color: var(--knowledge-success); }\n.dsh-knowledge-settings-message.is-error { color: var(--knowledge-danger); }\n.dsh-knowledge-settings-load-error {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n margin-top: 18px;\n padding: 12px 14px;\n border-radius: 12px;\n background: color-mix(in srgb, var(--knowledge-danger) 8%, transparent);\n color: var(--knowledge-danger);\n font-size: 13px;\n}\n.dsh-knowledge-settings-load-error p { margin: 0; }\n.dsh-knowledge-settings-load-error button {\n flex: none;\n min-height: 30px;\n padding: 5px 10px;\n border: 0;\n border-radius: 9px;\n background: var(--knowledge-control);\n color: var(--knowledge-text);\n cursor: pointer;\n font: inherit;\n}\n.dsh-knowledge-settings-actions { display: flex; justify-content: flex-end; gap: 8px; }\n.dsh-knowledge-settings-actions button {\n min-height: 34px;\n padding: 7px 13px;\n border: 0;\n border-radius: 10px;\n background: var(--knowledge-hover);\n color: var(--knowledge-text);\n cursor: pointer;\n font: inherit;\n font-size: 13px;\n}\n.dsh-knowledge-settings-actions button.is-primary { background: var(--knowledge-accent); color: var(--knowledge-on-accent); }\n.dsh-knowledge-settings-actions button:disabled { cursor: default; opacity: .45; }\n\n@media (max-width: 720px) {\n .dsh-knowledge-source-picker,\n .dsh-knowledge-remote-fields { grid-template-columns: 1fr; }\n .dsh-knowledge-settings-summary { font-size: 0; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dsh-knowledge-settings-card,\n .dsh-knowledge-settings-header,\n .dsh-knowledge-settings-summary i { transition: none; }\n}\n\n.dsh-knowledge-writeback-notice {\n display: grid;\n gap: 5px;\n min-width: 0;\n color: var(--knowledge-text-tertiary);\n font-size: 12px;\n line-height: 1.5;\n}\n.dsh-knowledge-writeback-summary {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n min-width: 0;\n}\n.dsh-knowledge-writeback-notice strong {\n color: var(--knowledge-text-secondary);\n font-weight: 600;\n}\n.dsh-knowledge-writeback-notice button {\n min-height: 24px;\n padding: 0 9px;\n border: 1px solid var(--knowledge-border);\n border-radius: 7px;\n color: var(--knowledge-text-secondary);\n background: var(--knowledge-control);\n cursor: pointer;\n font: inherit;\n}\n.dsh-knowledge-writeback-notice button:disabled { cursor: default; opacity: .5; }\n.dsh-knowledge-writeback-destinations {\n display: flex;\n flex-wrap: wrap;\n gap: 2px 12px;\n min-width: 0;\n margin: 0;\n padding: 0;\n list-style: none;\n}\n.dsh-knowledge-writeback-destinations li {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n min-width: 0;\n max-width: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n}\n.dsh-knowledge-writeback-base,\n.dsh-knowledge-writeback-separator {\n flex: none;\n}\n.dsh-knowledge-writeback-separator {\n color: var(--knowledge-text-tertiary);\n}\n.dsh-knowledge-writeback-destinations strong {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.dsh-knowledge-writeback-notice .dsh-knowledge-writeback-document {\n display: inline-flex;\n align-items: center;\n min-width: 0;\n min-height: 24px;\n padding: 0 3px;\n border: 0;\n border-radius: 4px;\n background: transparent;\n color: var(--knowledge-text-secondary);\n text-decoration: underline;\n text-decoration-color: transparent;\n text-underline-offset: 3px;\n transition: color 120ms ease, background-color 120ms ease, text-decoration-color 120ms ease;\n}\n.dsh-knowledge-writeback-notice .dsh-knowledge-writeback-document:hover {\n background: var(--knowledge-hover);\n color: var(--knowledge-text);\n text-decoration-color: currentColor;\n}\n.dsh-knowledge-writeback-document strong { color: inherit; }\n.dsh-knowledge-writeback-destinations small {\n flex: none;\n color: var(--knowledge-text-secondary);\n font: inherit;\n white-space: nowrap;\n}\n.dsh-knowledge-writeback-destinations small[data-disposition="written"] { color: var(--knowledge-success); }\n.dsh-knowledge-writeback-error {\n max-width: min(720px, 100%);\n margin: 0;\n color: var(--knowledge-danger);\n overflow-wrap: anywhere;\n}\n';
427
+ var client_default = '.dsh-knowledge-trigger,\n.dsh-knowledge-activity-panel,\n.dsh-knowledge-workspace,\n.dsh-knowledge-settings-card,\n.dsh-knowledge-writeback-notice {\n color-scheme: light;\n --knowledge-canvas: transparent;\n --knowledge-accent: var(--accent);\n --knowledge-on-accent: var(--on-accent);\n --knowledge-danger: var(--danger);\n --knowledge-success: var(--success);\n --knowledge-pane: rgba(255, 255, 255, 0.16);\n --knowledge-raised: rgba(255, 255, 255, 0.38);\n --knowledge-control: rgba(255, 255, 255, 0.27);\n --knowledge-border: var(--border);\n --knowledge-text: var(--text);\n --knowledge-text-secondary: var(--text-secondary);\n --knowledge-text-tertiary: var(--text-tertiary);\n --knowledge-hover: var(--surface-hover);\n --knowledge-glare-light: rgb(255 255 255 / 70%);\n --knowledge-glare-rim: rgb(60 60 67 / 11%);\n --knowledge-glass-filter: saturate(1.22) contrast(1.03) blur(32px);\n --knowledge-host-glass-filter: saturate(.18) contrast(1.015) blur(24px);\n --knowledge-glass-shadow: inset 0 1px 0 rgb(255 255 255 / 70%), inset 0 -1px 0 rgb(60 60 67 / 11%), 0 10px 28px rgb(31 31 35 / 8.5%);\n --knowledge-font-family: var(--font-ui);\n color: var(--knowledge-text);\n font-family: var(--knowledge-font-family);\n font-size: 13px;\n line-height: 1.5;\n}\n\nbody[data-ds-dark-theme] :is(\n .dsh-knowledge-trigger,\n .dsh-knowledge-activity-panel,\n .dsh-knowledge-workspace,\n .dsh-knowledge-settings-card,\n .dsh-knowledge-writeback-notice\n) {\n color-scheme: dark;\n --knowledge-canvas: transparent;\n --knowledge-accent: var(--accent);\n --knowledge-on-accent: var(--on-accent);\n --knowledge-danger: var(--danger);\n --knowledge-success: var(--success);\n --knowledge-pane: rgb(25 33 35 / 90%);\n --knowledge-raised: rgb(32 41 43 / 94%);\n --knowledge-control: rgb(39 50 53 / 92%);\n --knowledge-border: var(--border);\n --knowledge-text: var(--text);\n --knowledge-text-secondary: var(--text-secondary);\n --knowledge-text-tertiary: var(--text-tertiary);\n --knowledge-hover: var(--surface-hover);\n --knowledge-glare-light: rgb(255 255 255 / 16%);\n --knowledge-glare-rim: rgb(0 0 0 / 30%);\n --knowledge-host-glass-filter: saturate(.45) contrast(1.02) blur(24px);\n --knowledge-glass-shadow: inset 0 1px 0 rgb(255 255 255 / 16%), inset 0 -1px 0 rgb(0 0 0 / 30%), 0 12px 32px rgb(0 0 0 / 30%);\n}\n\n:is(\n .dsh-knowledge-trigger,\n .dsh-knowledge-activity-panel,\n .dsh-knowledge-workspace,\n .dsh-knowledge-settings-card,\n .dsh-knowledge-writeback-notice\n),\n:is(\n .dsh-knowledge-trigger,\n .dsh-knowledge-activity-panel,\n .dsh-knowledge-workspace,\n .dsh-knowledge-settings-card,\n .dsh-knowledge-writeback-notice\n) * {\n box-sizing: border-box;\n}\n\n:is(\n .dsh-knowledge-trigger,\n .dsh-knowledge-activity-panel,\n .dsh-knowledge-workspace,\n .dsh-knowledge-settings-card,\n .dsh-knowledge-writeback-notice\n) :where(button, input, textarea, select) {\n margin: 0;\n color: inherit;\n font-family: var(--knowledge-font-family);\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n letter-spacing: inherit;\n}\n\n.dsh-knowledge-trigger,\n.dsh-knowledge-activity-panel button,\n.dsh-knowledge-activity-panel input,\n.dsh-knowledge-panel-state button,\n.dsh-knowledge-settings-card button,\n.dsh-knowledge-writeback-notice button {\n -webkit-appearance: none;\n appearance: none;\n margin: 0;\n}\n\n/* The slot may add a display:contents boundary between its children and the\n actual flex row. Cover both host structures: wrapping the boundary alone\n does nothing and a full-width launcher pushes other plugins offscreen. */\n:has(> .dsh-knowledge-launcher),\n:has(> div > .dsh-knowledge-launcher) { flex-wrap: wrap; }\n/* In rail mode the host centers a 36px settings row. Use that same row\n geometry, rather than forcing a percentage-width footer. */\n:has(> .dsh-knowledge-launcher--rail),\n:has(> div > .dsh-knowledge-launcher--rail) { flex-direction: column; align-items: center; }\n\n.dsh-knowledge-launcher {\n display: flex;\n flex: 0 0 calc(100% + 4px);\n order: -1;\n min-width: 0;\n gap: 4px;\n width: calc(100% + 4px);\n margin: 4px -2px;\n box-sizing: border-box;\n}\n\n.dsh-knowledge-launcher--rail { flex: none; width: 36px; margin: 8px 0 10px; flex-direction: column; align-items: center; }\n\n.dsh-knowledge-trigger {\n position: relative;\n flex: 1 1 auto;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n width: auto;\n height: 36px;\n margin: 0;\n padding: 0 10px 0 8px;\n box-sizing: border-box;\n border: 0;\n border-radius: 12px;\n overflow: hidden;\n background: transparent;\n color: var(--knowledge-text);\n cursor: pointer;\n font: inherit;\n font-size: 14px;\n line-height: 22px;\n white-space: nowrap;\n isolation: isolate;\n transition:\n color 120ms ease,\n background-color 120ms ease,\n box-shadow 160ms ease;\n}\n\n.dsh-knowledge-trigger:hover {\n background: var(--knowledge-hover);\n}\n\n.dsh-knowledge-trigger:focus-visible,\n.dsh-knowledge-writeback-notice button:focus-visible {\n outline: 2px solid var(--knowledge-accent);\n outline-offset: 2px;\n}\n\n.dsh-knowledge-trigger.is-active {\n background: var(--knowledge-control);\n color: var(--knowledge-text);\n box-shadow: 0 1px 2px rgb(0 0 0 / 7%), inset 0 1px 0 rgb(255 255 255 / 28%);\n}\n\n.dsh-knowledge-trigger--rail {\n width: 36px;\n height: 36px;\n margin: 8px 0 10px;\n padding: 0;\n justify-content: center;\n gap: 0;\n border-radius: 50%;\n}\n\n.dsh-knowledge-trigger--rail { margin-inline: auto; }\n\n.dsh-knowledge-launcher .dsh-knowledge-trigger--rail { flex: none; margin-block: 0; }\n.dsh-knowledge-panel-trigger { flex: 0 0 36px; width: 36px; padding: 0; justify-content: center; }\n.dsh-knowledge-panel-trigger:disabled { opacity: .4; cursor: default; background: transparent; }\n.dsh-knowledge-launcher--rail .dsh-knowledge-panel-trigger { flex: none; border-radius: 50%; }\n\n@media (prefers-reduced-motion: reduce) {\n .dsh-knowledge-trigger { transition: none; }\n}\n\n.dsh-knowledge-workspace {\n width: 100%;\n height: 100%;\n min-width: 0;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background: var(--knowledge-canvas);\n}\n\n.dsh-knowledge-workspace-header {\n position: relative;\n z-index: 2;\n flex: none;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n min-height: 52px;\n margin: 8px 10px 0;\n padding: 7px 14px;\n box-sizing: border-box;\n border: 1px solid var(--knowledge-border);\n border-radius: 14px 14px 11px 11px;\n background: transparent;\n box-shadow: var(--knowledge-glass-shadow);\n -webkit-backdrop-filter: var(--knowledge-host-glass-filter);\n backdrop-filter: var(--knowledge-host-glass-filter);\n}\n\n.dsh-knowledge-workspace-header > div {\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n}\n\n.dsh-knowledge-workspace-header [data-knowledge-workspace-close] {\n -webkit-appearance: none;\n appearance: none;\n display: grid;\n place-items: center;\n box-sizing: border-box;\n flex: none;\n width: 30px;\n height: 30px;\n margin: 0;\n padding: 0;\n border: 1px solid transparent;\n border-radius: 9px;\n color: var(--knowledge-text-secondary);\n background: transparent;\n font: inherit;\n line-height: 1;\n -webkit-tap-highlight-color: transparent;\n cursor: pointer;\n transition: color 120ms ease, background-color 120ms ease, border-color 120ms ease;\n}\n\n.dsh-knowledge-workspace-header [data-knowledge-workspace-close]:hover {\n border-color: var(--knowledge-border);\n color: var(--knowledge-text);\n background: var(--knowledge-control);\n}\n\n.dsh-knowledge-workspace-header [data-knowledge-workspace-close]:active { border-color: var(--knowledge-text-secondary); }\n.dsh-knowledge-workspace-header [data-knowledge-workspace-close]:focus-visible {\n outline: 2px solid var(--knowledge-accent);\n outline-offset: 2px;\n}\n.dsh-knowledge-workspace-header [data-knowledge-workspace-close] > svg {\n display: block;\n pointer-events: none;\n}\n\n.dsh-knowledge-workspace-header > div > span {\n display: grid;\n min-width: 0;\n gap: 2px;\n}\n\n.dsh-knowledge-workspace-header h2,\n.dsh-knowledge-workspace-header p {\n margin: 0;\n}\n\n.dsh-knowledge-workspace-header h2 {\n color: var(--knowledge-text);\n font-size: 15px;\n line-height: 22px;\n font-weight: 600;\n}\n\n.dsh-knowledge-workspace-header p {\n color: var(--knowledge-text-secondary);\n font-size: 11px;\n line-height: 16px;\n}\n\n.dsh-knowledge-frame {\n flex: 1;\n display: block;\n width: 100%;\n min-height: 0;\n margin: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n box-shadow: none;\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n}\n\n.dsh-knowledge-panel-state {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 16px;\n min-height: 0;\n margin: 8px 10px 10px;\n padding: 32px;\n box-sizing: border-box;\n border: 1px solid var(--knowledge-border);\n border-radius: 15px;\n background: var(--knowledge-pane);\n box-shadow: var(--knowledge-glass-shadow);\n -webkit-backdrop-filter: var(--knowledge-host-glass-filter);\n backdrop-filter: var(--knowledge-host-glass-filter);\n color: var(--knowledge-text);\n}\n\n.dsh-knowledge-panel-state-icon {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: 12px;\n background: var(--knowledge-hover);\n color: var(--knowledge-text-secondary);\n font-size: 18px;\n font-weight: 600;\n}\n\n.dsh-knowledge-panel-state > div { max-width: 560px; }\n.dsh-knowledge-panel-state h3 { margin: 0 0 6px; font-size: 17px; line-height: 24px; font-weight: 600; }\n.dsh-knowledge-panel-state p { margin: 0; color: var(--knowledge-text-secondary); font-size: 13px; line-height: 20px; }\n.dsh-knowledge-panel-state button {\n min-width: 72px;\n min-height: 32px;\n margin-top: 16px;\n padding: 6px 14px;\n border: 0;\n border-radius: 10px;\n background: var(--knowledge-accent);\n color: var(--knowledge-on-accent);\n cursor: pointer;\n font: inherit;\n}\n.dsh-knowledge-panel-state button:focus-visible {\n outline: 2px solid var(--knowledge-accent);\n outline-offset: 2px;\n}\n\n.dsh-knowledge-settings-card {\n list-style: none;\n overflow: hidden;\n border: 1px solid var(--knowledge-border);\n border-radius: 14px;\n background:\n linear-gradient(145deg, color-mix(in srgb, var(--knowledge-glare-light) 16%, transparent), transparent 58%),\n var(--knowledge-pane);\n color: var(--knowledge-text);\n box-shadow: var(--knowledge-glass-shadow), 0 8px 24px rgb(0 0 0 / 5%);\n -webkit-backdrop-filter: var(--knowledge-glass-filter);\n backdrop-filter: var(--knowledge-glass-filter);\n transition: border-color 120ms ease, background-color 120ms ease;\n}\n.dsh-knowledge-settings-card:hover {\n border-color: color-mix(in srgb, var(--knowledge-border) 68%, var(--knowledge-text-secondary));\n}\n.dsh-knowledge-settings-card--open {\n border-color: color-mix(in srgb, var(--knowledge-border) 68%, var(--knowledge-text-secondary));\n background: var(--knowledge-pane);\n}\n.dsh-knowledge-settings-header { display: flex; width: 100%; align-items: center; gap: 12px; padding: 14px 16px; border: 0; border-radius: 12px; background: transparent; color: inherit; text-align: left; cursor: pointer; font: inherit; }\n.dsh-knowledge-settings-header:focus-visible {\n outline: 2px solid var(--knowledge-accent);\n outline-offset: -2px;\n}\n.dsh-knowledge-settings-actions button:focus-visible,\n.dsh-knowledge-settings-load-error button:focus-visible {\n outline: 2px solid var(--knowledge-accent);\n outline-offset: 2px;\n}\n.dsh-knowledge-settings-header > span:first-child { display: flex; min-width: 0; flex: 1; flex-direction: column; gap: 4px; }\n.dsh-knowledge-settings-header strong { font-size: 15px; font-weight: 600; line-height: 1.4; }\n.dsh-knowledge-settings-header small { color: var(--knowledge-text-tertiary); font-size: 13px; line-height: 1.5; }\n.dsh-knowledge-source-picker small,\n.dsh-knowledge-remote-fields small { color: var(--knowledge-text-secondary); font-size: 12px; }\n.dsh-knowledge-settings-summary { display: flex; flex: none; align-items: center; gap: 10px; color: var(--knowledge-text-tertiary); font-size: 12px; }\n.dsh-knowledge-settings-summary i { width: 8px; height: 8px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg); transition: transform 160ms ease; }\n.dsh-knowledge-settings-card--open .dsh-knowledge-settings-summary i { transform: rotate(225deg); }\n\n.dsh-knowledge-settings-body {\n display: grid;\n gap: 18px;\n margin: 0 16px;\n padding-bottom: 8px;\n border-top: 1px solid var(--knowledge-border);\n}\n\n.dsh-knowledge-source-picker {\n min-width: 0;\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 10px;\n margin: 18px 0 0;\n padding: 0;\n border: 0;\n}\n\n.dsh-knowledge-source-picker legend { margin-bottom: 8px; padding: 0; color: inherit; font-size: 13px; font-weight: 600; }\n.dsh-knowledge-source-picker label {\n display: flex;\n gap: 10px;\n padding: 13px;\n border: 1px solid var(--knowledge-border);\n border-radius: 14px;\n cursor: pointer;\n}\n.dsh-knowledge-source-picker label.is-selected {\n border-color: var(--knowledge-accent);\n background: color-mix(in srgb, var(--knowledge-accent) 7%, transparent);\n}\n.dsh-knowledge-source-picker label.is-disabled {\n cursor: default;\n opacity: .55;\n}\n.dsh-knowledge-source-picker label:focus-within {\n outline: 2px solid var(--knowledge-accent);\n outline-offset: 2px;\n}\n.dsh-knowledge-source-picker input {\n -webkit-appearance: none;\n appearance: none;\n width: 16px;\n height: 16px;\n display: inline-grid;\n place-content: center;\n flex: none;\n margin: 2px 0 0;\n border: 1px solid var(--knowledge-border);\n border-radius: 50%;\n background: var(--knowledge-control);\n color: var(--knowledge-on-accent);\n cursor: pointer;\n transition: border-color .15s ease, background-color .15s ease;\n}\n.dsh-knowledge-source-picker input::before {\n content: "";\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: currentColor;\n opacity: 0;\n transform: scale(.55);\n transition: opacity .12s ease, transform .15s cubic-bezier(.2, .8, .2, 1);\n}\n.dsh-knowledge-source-picker input:checked { border-color: var(--knowledge-accent); background: var(--knowledge-accent); }\n.dsh-knowledge-source-picker input:checked::before { opacity: 1; transform: scale(1); }\n.dsh-knowledge-source-picker input:disabled { cursor: default; }\n.dsh-knowledge-source-picker span { display: grid; gap: 3px; }\n\n.dsh-knowledge-remote-fields { display: grid; grid-template-columns: 1.25fr 1fr; gap: 12px; }\n.dsh-knowledge-remote-fields label,\n.dsh-knowledge-timeout-field { display: grid; gap: 6px; color: var(--knowledge-text-secondary); font-size: 12px; }\n.dsh-knowledge-remote-fields input,\n.dsh-knowledge-timeout-field input {\n -webkit-appearance: none;\n appearance: none;\n min-height: 38px;\n box-sizing: border-box;\n padding: 8px 11px;\n border: 1px solid var(--knowledge-border);\n border-radius: 10px;\n outline: none;\n background: var(--knowledge-control);\n color: var(--knowledge-text);\n font: inherit;\n}\n.dsh-knowledge-remote-fields input:focus,\n.dsh-knowledge-timeout-field input:focus { border-color: var(--knowledge-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--knowledge-accent) 16%, transparent); }\n.dsh-knowledge-remote-fields input:-webkit-autofill,\n.dsh-knowledge-remote-fields input:-webkit-autofill:hover,\n.dsh-knowledge-remote-fields input:-webkit-autofill:focus {\n -webkit-text-fill-color: var(--knowledge-text);\n box-shadow: 0 0 0 1000px var(--knowledge-control) inset;\n caret-color: var(--knowledge-text);\n}\n.dsh-knowledge-timeout-field input::-webkit-inner-spin-button,\n.dsh-knowledge-timeout-field input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }\n.dsh-knowledge-timeout-field { max-width: 240px; }\n.dsh-knowledge-field-error { color: var(--knowledge-danger) !important; }\n\n.dsh-knowledge-settings-message,\n.dsh-knowledge-settings-note { margin: 0; color: var(--knowledge-text-secondary); font-size: 12px; }\n.dsh-knowledge-settings-message.is-success { color: var(--knowledge-success); }\n.dsh-knowledge-settings-message.is-error { color: var(--knowledge-danger); }\n.dsh-knowledge-settings-load-error {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n margin-top: 18px;\n padding: 12px 14px;\n border-radius: 12px;\n background: color-mix(in srgb, var(--knowledge-danger) 8%, transparent);\n color: var(--knowledge-danger);\n font-size: 13px;\n}\n.dsh-knowledge-settings-load-error p { margin: 0; }\n.dsh-knowledge-settings-load-error button {\n flex: none;\n min-height: 30px;\n padding: 5px 10px;\n border: 0;\n border-radius: 9px;\n background: var(--knowledge-control);\n color: var(--knowledge-text);\n cursor: pointer;\n font: inherit;\n}\n.dsh-knowledge-settings-actions { display: flex; justify-content: flex-end; gap: 8px; }\n.dsh-knowledge-settings-actions button {\n min-height: 34px;\n padding: 7px 13px;\n border: 0;\n border-radius: 10px;\n background: var(--knowledge-hover);\n color: var(--knowledge-text);\n cursor: pointer;\n font: inherit;\n font-size: 13px;\n}\n.dsh-knowledge-settings-actions button.is-primary { background: var(--knowledge-accent); color: var(--knowledge-on-accent); }\n.dsh-knowledge-settings-actions button:disabled { cursor: default; opacity: .45; }\n\n@media (max-width: 720px) {\n .dsh-knowledge-source-picker,\n .dsh-knowledge-remote-fields { grid-template-columns: 1fr; }\n .dsh-knowledge-settings-summary { font-size: 0; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dsh-knowledge-settings-card,\n .dsh-knowledge-settings-header,\n .dsh-knowledge-settings-summary i { transition: none; }\n}\n\n.dsh-knowledge-writeback-notice {\n display: grid;\n gap: 5px;\n min-width: 0;\n color: var(--knowledge-text-tertiary);\n font-size: 12px;\n line-height: 1.5;\n}\n.dsh-knowledge-writeback-summary {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n min-width: 0;\n}\n.dsh-knowledge-writeback-notice strong {\n color: var(--knowledge-text-secondary);\n font-weight: 600;\n}\n.dsh-knowledge-writeback-notice button {\n min-height: 24px;\n padding: 0 9px;\n border: 1px solid var(--knowledge-border);\n border-radius: 7px;\n color: var(--knowledge-text-secondary);\n background: var(--knowledge-control);\n cursor: pointer;\n font: inherit;\n}\n.dsh-knowledge-writeback-notice button:disabled { cursor: default; opacity: .5; }\n.dsh-knowledge-writeback-destinations {\n display: flex;\n flex-wrap: wrap;\n gap: 2px 12px;\n min-width: 0;\n margin: 0;\n padding: 0;\n list-style: none;\n}\n.dsh-knowledge-writeback-destinations li {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n min-width: 0;\n max-width: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n}\n.dsh-knowledge-writeback-base,\n.dsh-knowledge-writeback-separator {\n flex: none;\n}\n.dsh-knowledge-writeback-separator {\n color: var(--knowledge-text-tertiary);\n}\n.dsh-knowledge-writeback-destinations strong {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.dsh-knowledge-writeback-notice .dsh-knowledge-writeback-document {\n display: inline-flex;\n align-items: center;\n min-width: 0;\n min-height: 24px;\n padding: 0 3px;\n border: 0;\n border-radius: 4px;\n background: transparent;\n color: var(--knowledge-text-secondary);\n text-decoration: underline;\n text-decoration-color: transparent;\n text-underline-offset: 3px;\n transition: color 120ms ease, background-color 120ms ease, text-decoration-color 120ms ease;\n}\n.dsh-knowledge-writeback-notice .dsh-knowledge-writeback-document:hover {\n background: var(--knowledge-hover);\n color: var(--knowledge-text);\n text-decoration-color: currentColor;\n}\n.dsh-knowledge-writeback-document strong { color: inherit; }\n.dsh-knowledge-writeback-destinations small {\n flex: none;\n color: var(--knowledge-text-secondary);\n font: inherit;\n white-space: nowrap;\n}\n.dsh-knowledge-writeback-destinations small[data-disposition="written"] { color: var(--knowledge-success); }\n.dsh-knowledge-writeback-error {\n max-width: min(720px, 100%);\n margin: 0;\n color: var(--knowledge-danger);\n overflow-wrap: anywhere;\n}\n.dsh-knowledge-panel-right-icon {\n transform: rotate(180deg);\n}\n';
428
+
429
+ // src/main-panel-compat.ts
430
+ var import_react2 = require("react");
431
+ function registerMainPanel(ctx, id, priority, render, onHidden = () => {
432
+ }) {
433
+ const layout = ctx.layout;
434
+ if (typeof layout.selectPanel !== "function") {
435
+ return ctx.slots.register({ name: "conversation", priority }, render);
436
+ }
437
+ const slots = ctx.slots;
438
+ let disposed = false;
439
+ let generation = 0;
440
+ const Body = (props) => {
441
+ (0, import_react2.useEffect)(() => {
442
+ const current = ++generation;
443
+ return () => {
444
+ queueMicrotask(() => {
445
+ if (!disposed && generation === current) onHidden();
446
+ });
447
+ };
448
+ }, []);
449
+ return render(props);
450
+ };
451
+ const remove = slots.register({ name: "main", key: id }, Body);
452
+ const dispose = () => {
453
+ if (disposed) return;
454
+ disposed = true;
455
+ remove();
456
+ };
457
+ try {
458
+ layout.selectPanel(id);
459
+ } catch (error) {
460
+ dispose();
461
+ throw error;
462
+ }
463
+ return dispose;
464
+ }
322
465
 
323
466
  // src/knowledge-activity.css
324
- var knowledge_activity_default = '.dsh-knowledge-activity-viewport {\n width: 100%;\n height: 100%;\n min-width: 0;\n overflow: hidden;\n contain: layout paint;\n}\n\n.dsh-knowledge-activity-panel {\n display: flex;\n width: 100%;\n height: 100%;\n min-width: 0;\n min-height: 0;\n flex-direction: column;\n overflow: hidden;\n color: var(--knowledge-text);\n background: var(--activity-surface);\n -webkit-backdrop-filter: var(--knowledge-embedded-filter);\n backdrop-filter: var(--knowledge-embedded-filter);\n box-shadow: inset 1px 0 0 var(--knowledge-border);\n font-family: var(--knowledge-font-family);\n font-size: 13px;\n line-height: 1.5;\n}\n\n.dsh-knowledge-activity-panel *,\n.dsh-knowledge-activity-panel *::before,\n.dsh-knowledge-activity-panel *::after { box-sizing: border-box; }\n\n.dsh-knowledge-activity-panel ::selection { background: var(--selection-background); color: var(--selection-text); }\n\n.dsh-knowledge-activity-panel :where(button, input) {\n -webkit-appearance: none;\n appearance: none;\n margin: 0;\n color: inherit;\n font: inherit;\n letter-spacing: inherit;\n}\n\n.dsh-knowledge-activity-header {\n display: flex;\n min-height: 58px;\n padding: 0 12px 0 15px;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n border-bottom: 1px solid var(--knowledge-border);\n background: transparent;\n}\n\n.dsh-knowledge-activity-tabs {\n display: grid;\n min-height: 43px;\n flex: none;\n grid-template-columns: 1fr 1fr;\n gap: 4px;\n padding: 5px 10px;\n border-bottom: 1px solid var(--knowledge-border);\n background: transparent;\n}\n.dsh-knowledge-activity-tabs button {\n display: inline-flex;\n min-width: 0;\n min-height: 32px;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 0 10px;\n border: 1px solid transparent;\n border-radius: 9px;\n color: var(--knowledge-text-tertiary);\n background: transparent;\n cursor: pointer;\n font-size: 12px;\n font-weight: 580;\n}\n.dsh-knowledge-activity-tabs button:hover { color: var(--knowledge-text); background: var(--knowledge-hover); }\n.dsh-knowledge-activity-tabs button.is-active {\n border-color: var(--knowledge-border);\n color: var(--knowledge-text);\n background: var(--knowledge-embedded-control);\n box-shadow: inset 0 1px 0 var(--knowledge-glare-light);\n}\n\n.dsh-knowledge-activity-title,\n.dsh-knowledge-activity-header-actions { display: flex; min-width: 0; align-items: center; gap: 9px; }\n.dsh-knowledge-activity-title > span:last-child { display: grid; min-width: 0; gap: 1px; }\n.dsh-knowledge-activity-title strong { overflow: hidden; font-size: 14px; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }\n.dsh-knowledge-activity-title small { overflow: hidden; color: var(--knowledge-text-tertiary); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }\n\n.dsh-knowledge-activity-mark,\n.dsh-knowledge-activity-document-icon,\n.dsh-knowledge-activity-row-icon {\n display: grid;\n flex: none;\n place-items: center;\n border: 1px solid color-mix(in srgb, var(--knowledge-accent) 18%, transparent);\n color: var(--knowledge-accent);\n background: color-mix(in srgb, var(--knowledge-accent) 6%, transparent);\n}\n\n.dsh-knowledge-activity-mark { width: 27px; height: 27px; border: 0; border-radius: 8px; background: transparent; }\n.dsh-knowledge-activity-icon-button {\n display: grid;\n width: 32px;\n height: 32px;\n flex: none;\n place-items: center;\n padding: 0;\n border: 1px solid transparent;\n border-radius: 9px;\n color: var(--knowledge-text-secondary);\n background: transparent;\n cursor: pointer;\n}\n.dsh-knowledge-activity-icon-button:hover { border-color: var(--knowledge-border); color: var(--knowledge-text); background: var(--knowledge-hover); }\n.dsh-knowledge-activity-icon-button:focus-visible,\n.dsh-knowledge-activity-panel button:focus-visible,\n.dsh-knowledge-activity-panel input:focus-visible { outline: 2px solid var(--knowledge-accent); outline-offset: 2px; }\n\n.dsh-knowledge-activity-browser,\n.dsh-knowledge-activity-reader {\n display: flex;\n min-height: 0;\n flex: 1;\n flex-direction: column;\n overflow: hidden;\n padding: 14px 14px 16px;\n}\n\n.dsh-knowledge-activity-search {\n display: flex;\n min-height: 40px;\n flex: none;\n align-items: center;\n gap: 8px;\n padding: 0 10px;\n border: 1px solid var(--knowledge-border);\n border-radius: 10px;\n color: var(--knowledge-text-tertiary);\n background: var(--knowledge-embedded-control);\n}\n.dsh-knowledge-activity-search:focus-within { border-color: color-mix(in srgb, var(--knowledge-accent) 50%, var(--knowledge-border)); box-shadow: 0 0 0 3px color-mix(in srgb, var(--knowledge-accent) 10%, transparent); }\n.dsh-knowledge-activity-search input { min-width: 0; height: 38px; flex: 1; padding: 0; border: 0; outline: 0 !important; color: var(--knowledge-text); background: transparent; box-shadow: none; }\n.dsh-knowledge-activity-search input::placeholder { color: var(--knowledge-text-tertiary); opacity: 1; }\n.dsh-knowledge-activity-search > button { display: grid; width: 28px; height: 28px; place-items: center; padding: 0; border: 0; border-radius: 8px; color: var(--knowledge-text-tertiary); background: transparent; cursor: pointer; }\n.dsh-knowledge-activity-search > button:hover { color: var(--knowledge-text); background: var(--knowledge-hover); }\n\n.dsh-knowledge-activity-scope { position: relative; z-index: 3; flex: none; margin-top: 10px; }\n.dsh-knowledge-activity-breadcrumbs {\n display: flex;\n min-height: 37px;\n flex: none;\n align-items: center;\n gap: 1px;\n overflow-x: auto;\n padding: 5px 1px 2px;\n color: var(--knowledge-text-tertiary);\n scrollbar-width: none;\n}\n.dsh-knowledge-activity-breadcrumbs::-webkit-scrollbar { display: none; }\n.dsh-knowledge-activity-breadcrumbs span { display: inline-flex; flex: none; align-items: center; gap: 1px; }\n.dsh-knowledge-activity-breadcrumbs button {\n max-width: 130px;\n min-height: 28px;\n overflow: hidden;\n padding: 0 7px;\n border: 0;\n border-radius: 7px;\n color: inherit;\n text-overflow: ellipsis;\n white-space: nowrap;\n background: transparent;\n cursor: pointer;\n font-size: 11px;\n}\n.dsh-knowledge-activity-breadcrumbs button:hover { color: var(--knowledge-text); background: var(--knowledge-hover); }\n.dsh-knowledge-activity-breadcrumbs button[aria-current="location"] { color: var(--knowledge-text-secondary); font-weight: 620; }\n.dsh-knowledge-activity-scope-trigger {\n display: grid;\n width: 100%;\n min-height: 48px;\n grid-template-columns: 30px minmax(0, 1fr) 20px;\n align-items: center;\n gap: 8px;\n padding: 5px 9px;\n border: 1px solid var(--knowledge-border);\n border-radius: 10px;\n text-align: left;\n background: color-mix(in srgb, var(--knowledge-embedded-control) 72%, transparent);\n cursor: pointer;\n}\n.dsh-knowledge-activity-scope-trigger:hover { background: var(--knowledge-embedded-control); }\n.dsh-knowledge-activity-scope-trigger > span:nth-child(2) { display: grid; min-width: 0; gap: 1px; }\n.dsh-knowledge-activity-scope-trigger small { color: var(--knowledge-text-tertiary); font-size: 10px; }\n.dsh-knowledge-activity-scope-trigger strong { overflow: hidden; font-size: 12px; font-weight: 620; text-overflow: ellipsis; white-space: nowrap; }\n.dsh-knowledge-activity-scope-trigger > svg { color: var(--knowledge-text-tertiary); transition: transform 140ms ease; }\n.dsh-knowledge-activity-scope-trigger > svg.is-open { transform: rotate(180deg); }\n.dsh-knowledge-activity-scope-icon { display: grid; width: 28px; height: 28px; place-items: center; border-radius: 8px; color: var(--knowledge-accent); background: color-mix(in srgb, var(--knowledge-accent) 8%, transparent); }\n.dsh-knowledge-activity-scope-menu {\n position: absolute;\n z-index: 6;\n top: calc(100% + 6px);\n right: 0;\n left: 0;\n max-height: min(320px, 44vh);\n overflow-y: auto;\n padding: 5px;\n border: 1px solid var(--knowledge-border);\n border-radius: 12px;\n background: var(--dialog-surface);\n box-shadow: 0 16px 38px rgb(24 30 32 / 18%), inset 0 1px 0 var(--knowledge-glare-light);\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n}\n.dsh-knowledge-activity-scope-menu button { display: flex; width: 100%; min-height: 46px; align-items: center; gap: 9px; padding: 6px 9px; border: 0; border-radius: 8px; text-align: left; background: transparent; cursor: pointer; }\n.dsh-knowledge-activity-scope-menu button:hover { background: var(--knowledge-hover); }\n.dsh-knowledge-activity-scope-menu button.is-active { background: var(--knowledge-embedded-control); }\n.dsh-knowledge-activity-scope-menu button > svg { flex: none; color: var(--knowledge-text-secondary); }\n.dsh-knowledge-activity-scope-menu button > span { display: grid; min-width: 0; gap: 1px; }\n.dsh-knowledge-activity-scope-menu button strong { overflow: hidden; font-size: 12px; font-weight: 620; text-overflow: ellipsis; white-space: nowrap; }\n.dsh-knowledge-activity-scope-menu button small { color: var(--knowledge-text-tertiary); font-size: 10px; }\n\n.dsh-knowledge-activity-list-heading {\n display: flex;\n min-height: 46px;\n flex: none;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n padding: 8px 2px 6px;\n border-bottom: 1px solid var(--knowledge-border);\n}\n.dsh-knowledge-activity-list-heading > span { display: grid; min-width: 0; }\n.dsh-knowledge-activity-list-heading strong { overflow: hidden; font-size: 13px; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }\n.dsh-knowledge-activity-list-heading small { color: var(--knowledge-text-tertiary); font-size: 11px; }\n\n.dsh-knowledge-activity-list {\n min-height: 0;\n flex: 1;\n overflow-y: auto;\n overscroll-behavior: contain;\n padding: 0 0 20px;\n scrollbar-color: color-mix(in srgb, var(--knowledge-text-tertiary) 35%, transparent) transparent;\n scrollbar-width: thin;\n}\n.dsh-knowledge-activity-row {\n display: flex;\n width: 100%;\n min-height: 61px;\n align-items: center;\n gap: 9px;\n padding: 8px 6px;\n border: 0;\n border-bottom: 1px solid color-mix(in srgb, var(--knowledge-border) 72%, transparent);\n border-radius: 0;\n text-align: left;\n background: transparent;\n cursor: pointer;\n}\n.dsh-knowledge-activity-row:hover { border-radius: 8px; background: var(--knowledge-hover); }\n.dsh-knowledge-activity-row:disabled { cursor: default; opacity: .58; }\n.dsh-knowledge-activity-row:disabled:hover { border-radius: 0; background: transparent; }\n.dsh-knowledge-activity-row-icon { width: 27px; height: 27px; border: 0; border-radius: 0; background: transparent; }\n.dsh-knowledge-activity-row-copy { display: grid; min-width: 0; flex: 1; gap: 2px; }\n.dsh-knowledge-activity-row-copy strong,\n.dsh-knowledge-activity-row-copy small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.dsh-knowledge-activity-row-copy strong { color: var(--knowledge-text); font-size: 13px; font-weight: 600; }\n.dsh-knowledge-activity-row-copy small { color: var(--knowledge-text-tertiary); font-size: 10px; }\n.dsh-knowledge-activity-row-meta { display: grid; flex: none; justify-items: end; align-items: center; gap: 3px; color: var(--knowledge-text-tertiary); font-size: 10px; }\n.dsh-knowledge-activity-row-meta em { padding: 1px 5px; border-radius: 999px; color: var(--knowledge-text-secondary); background: var(--knowledge-embedded-control); font-style: normal; }\n.dsh-knowledge-activity-load-more { display: block; min-height: 36px; margin: 8px auto 0; padding: 0 14px; border: 1px solid var(--knowledge-border); border-radius: 10px; color: var(--knowledge-text-secondary); background: var(--knowledge-embedded-control); cursor: pointer; }\n.dsh-knowledge-activity-load-more:hover:not(:disabled) { color: var(--knowledge-text); background: var(--knowledge-hover); }\n\n.dsh-knowledge-activity-reader-bar {\n display: flex;\n min-height: 38px;\n flex: none;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n border-bottom: 1px solid var(--knowledge-border);\n color: var(--knowledge-text-tertiary);\n font-size: 11px;\n}\n.dsh-knowledge-activity-back { display: inline-flex; min-height: 32px; align-items: center; gap: 4px; padding: 0 7px 0 4px; border: 0; border-radius: 8px; color: var(--knowledge-text-secondary); background: transparent; cursor: pointer; font-size: 12px !important; }\n.dsh-knowledge-activity-back:hover { color: var(--knowledge-text); background: var(--knowledge-hover); }\n.dsh-knowledge-activity-document-heading { display: flex; flex: none; align-items: center; gap: 10px; padding: 16px 4px 13px; }\n.dsh-knowledge-activity-document-icon { width: 36px; height: 36px; border-radius: 11px; }\n.dsh-knowledge-activity-document-heading > div { min-width: 0; }\n.dsh-knowledge-activity-document-heading h2 { overflow: hidden; margin: 0; font-size: 16px; line-height: 22px; font-weight: 680; text-overflow: ellipsis; white-space: nowrap; }\n.dsh-knowledge-activity-document-heading p { overflow: hidden; margin: 1px 0 0; color: var(--knowledge-text-tertiary); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }\n\n.dsh-knowledge-activity-markdown {\n min-height: 0;\n flex: 1;\n overflow-y: auto;\n padding: 0 5px 44px;\n color: var(--knowledge-text);\n font-size: 13px;\n line-height: 1.75;\n overflow-wrap: anywhere;\n scrollbar-color: color-mix(in srgb, var(--knowledge-text-tertiary) 35%, transparent) transparent;\n scrollbar-width: thin;\n}\n.dsh-knowledge-activity-markdown :where(h1, h2, h3, h4, h5, h6) { margin: 1.35em 0 .55em; color: var(--knowledge-text); line-height: 1.35; font-weight: 650; }\n.dsh-knowledge-activity-markdown h1 { font-size: 18px; }\n.dsh-knowledge-activity-markdown h2 { padding-bottom: .35em; border-bottom: 1px solid var(--knowledge-border); font-size: 16px; }\n.dsh-knowledge-activity-markdown h3 { font-size: 14px; }\n.dsh-knowledge-activity-markdown :where(h4, h5, h6) { font-size: 13px; }\n.dsh-knowledge-activity-markdown hr { height: 1px; margin: 18px 0; border: 0; background: var(--knowledge-border); }\n.dsh-knowledge-activity-markdown summary { cursor: pointer; color: var(--knowledge-text); }\n.dsh-knowledge-activity-markdown :where(p, ul, ol, blockquote, pre, table) { margin: .7em 0; }\n.dsh-knowledge-activity-markdown :where(ul, ol) { padding-left: 1.5em; }\n.dsh-knowledge-activity-markdown a { color: var(--knowledge-accent); text-decoration-thickness: 1px; text-underline-offset: 3px; }\n.dsh-knowledge-activity-markdown blockquote { margin-left: 0; padding: .15em 0 .15em 12px; border-left: 3px solid color-mix(in srgb, var(--knowledge-accent) 40%, transparent); color: var(--knowledge-text-secondary); }\n.dsh-knowledge-activity-markdown :where(code, pre) { font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace; }\n.dsh-knowledge-activity-markdown code { padding: .14em .32em; border-radius: 5px; background: var(--knowledge-embedded-control); font-size: .92em; }\n.dsh-knowledge-activity-markdown pre { overflow-x: auto; padding: 11px 12px; border: 1px solid var(--knowledge-border); border-radius: 10px; background: var(--knowledge-embedded-control); }\n.dsh-knowledge-activity-markdown pre code { padding: 0; background: transparent; }\n.dsh-knowledge-activity-markdown table { width: 100%; border-collapse: collapse; font-size: 12px; }\n.dsh-knowledge-activity-markdown :where(th, td) { padding: 6px 7px; border: 1px solid var(--knowledge-border); text-align: left; }\n.dsh-knowledge-activity-markdown img { display: block; max-width: 100%; height: auto; border-radius: 10px; }\n\n.dsh-knowledge-activity-state,\n.dsh-knowledge-activity-error,\n.dsh-knowledge-activity-empty { margin: auto; text-align: center; }\n.dsh-knowledge-activity-state { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 28px 10px; color: var(--knowledge-text-tertiary); }\n.dsh-knowledge-activity-state > span { width: 8px; height: 8px; border: 2px solid var(--knowledge-border); border-top-color: var(--knowledge-accent); border-radius: 50%; animation: dsh-knowledge-activity-spin .8s linear infinite; }\n.dsh-knowledge-activity-error,\n.dsh-knowledge-activity-empty { display: grid; max-width: 260px; justify-items: center; gap: 6px; padding: 32px 12px; }\n.dsh-knowledge-activity-error strong,\n.dsh-knowledge-activity-empty strong { font-size: 13px; font-weight: 650; }\n.dsh-knowledge-activity-error p,\n.dsh-knowledge-activity-empty p { margin: 0; color: var(--knowledge-text-tertiary); font-size: 11px; line-height: 1.65; }\n.dsh-knowledge-activity-empty > span { display: grid; width: 40px; height: 40px; margin-bottom: 3px; place-items: center; border-radius: 13px; color: var(--knowledge-text-secondary); background: var(--knowledge-embedded-control); }\n.dsh-knowledge-activity-error > button { min-height: 34px; margin-top: 6px; padding: 0 13px; border: 1px solid var(--knowledge-border); border-radius: 9px; background: var(--knowledge-embedded-control); cursor: pointer; }\n.dsh-knowledge-activity-error > button:hover { background: var(--knowledge-hover); }\n\n@keyframes dsh-knowledge-activity-spin { to { transform: rotate(360deg); } }\n\n@media (max-width: 460px) {\n .dsh-knowledge-activity-header { padding-inline: 10px; }\n .dsh-knowledge-activity-browser,\n .dsh-knowledge-activity-reader { padding: 10px 10px max(14px, env(safe-area-inset-bottom)); }\n .dsh-knowledge-activity-search input { font-size: 16px; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dsh-knowledge-activity-panel,\n .dsh-knowledge-activity-state > span,\n .dsh-knowledge-activity-scope-trigger > svg { animation: none; transition: none; }\n}\n';
467
+ var knowledge_activity_default = '.dsh-knowledge-activity-viewport {\n width: 100%;\n height: 100%;\n min-width: 0;\n overflow: hidden;\n contain: layout paint;\n}\n\n.dsh-knowledge-activity-panel {\n display: flex;\n width: 100%;\n height: 100%;\n min-width: 0;\n min-height: 0;\n flex-direction: column;\n overflow: hidden;\n color: var(--knowledge-text);\n background: var(--activity-surface);\n -webkit-backdrop-filter: var(--knowledge-embedded-filter);\n backdrop-filter: var(--knowledge-embedded-filter);\n box-shadow: inset 1px 0 0 var(--knowledge-border);\n font-family: var(--knowledge-font-family);\n font-size: 13px;\n line-height: 1.5;\n}\n\n.dsh-knowledge-activity-panel *,\n.dsh-knowledge-activity-panel *::before,\n.dsh-knowledge-activity-panel *::after { box-sizing: border-box; }\n\n.dsh-knowledge-activity-panel ::selection { background: var(--selection-background); color: var(--selection-text); }\n\n.dsh-knowledge-activity-panel :where(button, input) {\n -webkit-appearance: none;\n appearance: none;\n margin: 0;\n color: inherit;\n font: inherit;\n letter-spacing: inherit;\n}\n\n.dsh-knowledge-activity-header {\n display: flex;\n min-height: 58px;\n padding: 0 12px 0 15px;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n border-bottom: 1px solid var(--knowledge-border);\n background: transparent;\n}\n\n.dsh-knowledge-activity-tabs {\n display: grid;\n min-height: 43px;\n flex: none;\n grid-template-columns: 1fr 1fr;\n gap: 4px;\n padding: 5px 10px;\n border-bottom: 1px solid var(--knowledge-border);\n background: transparent;\n}\n.dsh-knowledge-activity-tabs button {\n display: inline-flex;\n min-width: 0;\n min-height: 32px;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 0 10px;\n border: 1px solid transparent;\n border-radius: 9px;\n color: var(--knowledge-text-tertiary);\n background: transparent;\n cursor: pointer;\n font-size: 12px;\n font-weight: 580;\n}\n.dsh-knowledge-activity-tabs button:hover { color: var(--knowledge-text); background: var(--knowledge-hover); }\n.dsh-knowledge-activity-tabs button.is-active {\n border-color: var(--knowledge-border);\n color: var(--knowledge-text);\n background: var(--knowledge-embedded-control);\n box-shadow: inset 0 1px 0 var(--knowledge-glare-light);\n}\n\n.dsh-knowledge-activity-title,\n.dsh-knowledge-activity-header-actions { display: flex; min-width: 0; align-items: center; gap: 9px; }\n.dsh-knowledge-activity-title > span:last-child { display: grid; min-width: 0; gap: 1px; }\n.dsh-knowledge-activity-title strong { overflow: hidden; font-size: 14px; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }\n.dsh-knowledge-activity-title small { overflow: hidden; color: var(--knowledge-text-tertiary); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }\n\n.dsh-knowledge-activity-mark,\n.dsh-knowledge-activity-document-icon,\n.dsh-knowledge-activity-row-icon {\n display: grid;\n flex: none;\n place-items: center;\n border: 1px solid color-mix(in srgb, var(--knowledge-accent) 18%, transparent);\n color: var(--knowledge-accent);\n background: color-mix(in srgb, var(--knowledge-accent) 6%, transparent);\n}\n\n.dsh-knowledge-activity-mark { width: 27px; height: 27px; border: 0; border-radius: 8px; background: transparent; }\n.dsh-knowledge-activity-icon-button {\n display: grid;\n width: 32px;\n height: 32px;\n flex: none;\n place-items: center;\n padding: 0;\n border: 1px solid transparent;\n border-radius: 9px;\n color: var(--knowledge-text-secondary);\n background: transparent;\n cursor: pointer;\n}\n.dsh-knowledge-activity-icon-button:hover { border-color: var(--knowledge-border); color: var(--knowledge-text); background: var(--knowledge-hover); }\n.dsh-knowledge-activity-icon-button:focus-visible,\n.dsh-knowledge-activity-panel button:focus-visible,\n.dsh-knowledge-activity-panel input:focus-visible { outline: 2px solid var(--knowledge-accent); outline-offset: 2px; }\n\n.dsh-knowledge-activity-browser,\n.dsh-knowledge-activity-reader {\n display: flex;\n min-height: 0;\n flex: 1;\n flex-direction: column;\n overflow: hidden;\n padding: 14px 14px 16px;\n}\n\n.dsh-knowledge-activity-search {\n display: flex;\n min-height: 40px;\n flex: none;\n align-items: center;\n gap: 8px;\n padding: 0 10px;\n border: 1px solid var(--knowledge-border);\n border-radius: 10px;\n color: var(--knowledge-text-tertiary);\n background: var(--knowledge-embedded-control);\n}\n.dsh-knowledge-activity-search:focus-within { border-color: var(--knowledge-border); box-shadow: none; background: color-mix(in srgb, var(--knowledge-text) 5%, var(--knowledge-embedded-control)); }\n.dsh-knowledge-activity-search input { min-width: 0; height: 38px; flex: 1; padding: 0; border: 0; outline: 0 !important; color: var(--knowledge-text); background: transparent; box-shadow: none; }\n.dsh-knowledge-activity-search input::placeholder { color: var(--knowledge-text-tertiary); opacity: 1; }\n/* Host themes can force a focus outline with #root and !important. */\n#root .dsh-knowledge-activity-search input:is(:focus, :focus-visible) {\n outline: none !important;\n outline-offset: 0 !important;\n border: 0;\n box-shadow: none !important;\n}\n.dsh-knowledge-activity-search > button { display: grid; width: 28px; height: 28px; place-items: center; padding: 0; border: 0; border-radius: 8px; color: var(--knowledge-text-tertiary); background: transparent; cursor: pointer; }\n.dsh-knowledge-activity-search > button:hover { color: var(--knowledge-text); background: var(--knowledge-hover); }\n\n.dsh-knowledge-activity-scope { position: relative; z-index: 3; flex: none; margin-top: 10px; }\n.dsh-knowledge-activity-breadcrumbs {\n display: flex;\n min-height: 37px;\n flex: none;\n align-items: center;\n gap: 1px;\n overflow-x: auto;\n padding: 5px 1px 2px;\n color: var(--knowledge-text-tertiary);\n scrollbar-width: none;\n}\n.dsh-knowledge-activity-breadcrumbs::-webkit-scrollbar { display: none; }\n.dsh-knowledge-activity-breadcrumbs span { display: inline-flex; flex: none; align-items: center; gap: 1px; }\n.dsh-knowledge-activity-breadcrumbs button {\n max-width: 130px;\n min-height: 28px;\n overflow: hidden;\n padding: 0 7px;\n border: 0;\n border-radius: 7px;\n color: inherit;\n text-overflow: ellipsis;\n white-space: nowrap;\n background: transparent;\n cursor: pointer;\n font-size: 11px;\n}\n.dsh-knowledge-activity-breadcrumbs button:hover { color: var(--knowledge-text); background: var(--knowledge-hover); }\n.dsh-knowledge-activity-breadcrumbs button[aria-current="location"] { color: var(--knowledge-text-secondary); font-weight: 620; }\n.dsh-knowledge-activity-scope-trigger {\n display: grid;\n width: 100%;\n min-height: 48px;\n grid-template-columns: 30px minmax(0, 1fr) 20px;\n align-items: center;\n gap: 8px;\n padding: 5px 9px;\n border: 1px solid var(--knowledge-border);\n border-radius: 10px;\n text-align: left;\n background: color-mix(in srgb, var(--knowledge-embedded-control) 72%, transparent);\n cursor: pointer;\n}\n.dsh-knowledge-activity-scope-trigger:hover { background: var(--knowledge-embedded-control); }\n.dsh-knowledge-activity-scope-trigger > span:nth-child(2) { display: grid; min-width: 0; gap: 1px; }\n.dsh-knowledge-activity-scope-trigger small { color: var(--knowledge-text-tertiary); font-size: 10px; }\n.dsh-knowledge-activity-scope-trigger strong { overflow: hidden; font-size: 12px; font-weight: 620; text-overflow: ellipsis; white-space: nowrap; }\n.dsh-knowledge-activity-scope-trigger > svg { color: var(--knowledge-text-tertiary); transition: transform 140ms ease; }\n.dsh-knowledge-activity-scope-trigger > svg.is-open { transform: rotate(180deg); }\n.dsh-knowledge-activity-scope-icon { display: grid; width: 28px; height: 28px; place-items: center; border-radius: 8px; color: var(--knowledge-accent); background: color-mix(in srgb, var(--knowledge-accent) 8%, transparent); }\n.dsh-knowledge-activity-scope-menu {\n position: absolute;\n z-index: 6;\n top: calc(100% + 6px);\n right: 0;\n left: 0;\n max-height: min(320px, 44vh);\n overflow-y: auto;\n padding: 5px;\n border: 1px solid var(--knowledge-border);\n border-radius: 12px;\n background: var(--dialog-surface);\n box-shadow: 0 16px 38px rgb(24 30 32 / 18%), inset 0 1px 0 var(--knowledge-glare-light);\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n}\n.dsh-knowledge-activity-scope-menu button { display: flex; width: 100%; min-height: 46px; align-items: center; gap: 9px; padding: 6px 9px; border: 0; border-radius: 8px; text-align: left; background: transparent; cursor: pointer; }\n.dsh-knowledge-activity-scope-menu button:hover { background: var(--knowledge-hover); }\n.dsh-knowledge-activity-scope-menu button.is-active { background: var(--knowledge-embedded-control); }\n.dsh-knowledge-activity-scope-menu button > svg { flex: none; color: var(--knowledge-text-secondary); }\n.dsh-knowledge-activity-scope-menu button > span { display: grid; min-width: 0; gap: 1px; }\n.dsh-knowledge-activity-scope-menu button strong { overflow: hidden; font-size: 12px; font-weight: 620; text-overflow: ellipsis; white-space: nowrap; }\n.dsh-knowledge-activity-scope-menu button small { color: var(--knowledge-text-tertiary); font-size: 10px; }\n\n.dsh-knowledge-activity-list-heading {\n display: flex;\n min-height: 46px;\n flex: none;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n padding: 8px 2px 6px;\n border-bottom: 1px solid var(--knowledge-border);\n}\n.dsh-knowledge-activity-list-heading > span { display: grid; min-width: 0; }\n.dsh-knowledge-activity-list-heading strong { overflow: hidden; font-size: 13px; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }\n.dsh-knowledge-activity-list-heading small { color: var(--knowledge-text-tertiary); font-size: 11px; }\n\n.dsh-knowledge-activity-list {\n min-height: 0;\n flex: 1;\n overflow-y: auto;\n overscroll-behavior: contain;\n padding: 0 0 20px;\n scrollbar-color: color-mix(in srgb, var(--knowledge-text-tertiary) 35%, transparent) transparent;\n scrollbar-width: thin;\n}\n.dsh-knowledge-activity-row {\n display: flex;\n width: 100%;\n min-height: 61px;\n align-items: center;\n gap: 9px;\n padding: 8px 6px;\n border: 0;\n border-bottom: 1px solid color-mix(in srgb, var(--knowledge-border) 72%, transparent);\n border-radius: 0;\n text-align: left;\n background: transparent;\n cursor: pointer;\n}\n.dsh-knowledge-activity-row:hover { border-radius: 8px; background: var(--knowledge-hover); }\n.dsh-knowledge-activity-row:disabled { cursor: default; opacity: .58; }\n.dsh-knowledge-activity-row:disabled:hover { border-radius: 0; background: transparent; }\n.dsh-knowledge-activity-row-icon { width: 27px; height: 27px; border: 0; border-radius: 0; background: transparent; }\n.dsh-knowledge-activity-row-copy { display: grid; min-width: 0; flex: 1; gap: 2px; }\n.dsh-knowledge-activity-row-copy strong,\n.dsh-knowledge-activity-row-copy small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.dsh-knowledge-activity-row-copy strong { color: var(--knowledge-text); font-size: 13px; font-weight: 600; }\n.dsh-knowledge-activity-row-copy small { color: var(--knowledge-text-tertiary); font-size: 10px; }\n.dsh-knowledge-activity-row-meta { display: grid; flex: none; justify-items: end; align-items: center; gap: 3px; color: var(--knowledge-text-tertiary); font-size: 10px; }\n.dsh-knowledge-activity-row-meta em { padding: 1px 5px; border-radius: 999px; color: var(--knowledge-text-secondary); background: var(--knowledge-embedded-control); font-style: normal; }\n.dsh-knowledge-activity-load-more { display: block; min-height: 36px; margin: 8px auto 0; padding: 0 14px; border: 1px solid var(--knowledge-border); border-radius: 10px; color: var(--knowledge-text-secondary); background: var(--knowledge-embedded-control); cursor: pointer; }\n.dsh-knowledge-activity-load-more:hover:not(:disabled) { color: var(--knowledge-text); background: var(--knowledge-hover); }\n\n.dsh-knowledge-activity-reader-bar {\n display: flex;\n min-height: 38px;\n flex: none;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n border-bottom: 1px solid var(--knowledge-border);\n color: var(--knowledge-text-tertiary);\n font-size: 11px;\n}\n.dsh-knowledge-activity-back { display: inline-flex; min-height: 32px; align-items: center; gap: 4px; padding: 0 7px 0 4px; border: 0; border-radius: 8px; color: var(--knowledge-text-secondary); background: transparent; cursor: pointer; font-size: 12px !important; }\n.dsh-knowledge-activity-back:hover { color: var(--knowledge-text); background: var(--knowledge-hover); }\n.dsh-knowledge-activity-document-heading { display: flex; flex: none; align-items: center; gap: 10px; padding: 16px 4px 13px; }\n.dsh-knowledge-activity-document-icon { width: 36px; height: 36px; border-radius: 11px; }\n.dsh-knowledge-activity-document-heading > div { min-width: 0; }\n.dsh-knowledge-activity-document-heading h2 { overflow: hidden; margin: 0; font-size: 16px; line-height: 22px; font-weight: 680; text-overflow: ellipsis; white-space: nowrap; }\n.dsh-knowledge-activity-document-heading p { overflow: hidden; margin: 1px 0 0; color: var(--knowledge-text-tertiary); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }\n\n.dsh-knowledge-activity-markdown {\n min-height: 0;\n flex: 1;\n overflow-y: auto;\n padding: 0 5px 44px;\n color: var(--knowledge-text);\n font-size: 13px;\n line-height: 1.75;\n overflow-wrap: anywhere;\n scrollbar-color: color-mix(in srgb, var(--knowledge-text-tertiary) 35%, transparent) transparent;\n scrollbar-width: thin;\n}\n.dsh-knowledge-activity-markdown :where(h1, h2, h3, h4, h5, h6) { margin: 1.35em 0 .55em; color: var(--knowledge-text); line-height: 1.35; font-weight: 650; }\n.dsh-knowledge-activity-markdown h1 { font-size: 18px; }\n.dsh-knowledge-activity-markdown h2 { padding-bottom: .35em; border-bottom: 1px solid var(--knowledge-border); font-size: 16px; }\n.dsh-knowledge-activity-markdown h3 { font-size: 14px; }\n.dsh-knowledge-activity-markdown :where(h4, h5, h6) { font-size: 13px; }\n.dsh-knowledge-activity-markdown hr { height: 1px; margin: 18px 0; border: 0; background: var(--knowledge-border); }\n.dsh-knowledge-activity-markdown summary { cursor: pointer; color: var(--knowledge-text); }\n.dsh-knowledge-activity-markdown :where(p, ul, ol, blockquote, pre, table) { margin: .7em 0; }\n.dsh-knowledge-activity-markdown :where(ul, ol) { padding-left: 1.5em; }\n.dsh-knowledge-activity-markdown a { color: var(--knowledge-accent); text-decoration-thickness: 1px; text-underline-offset: 3px; }\n.dsh-knowledge-activity-markdown blockquote { margin-left: 0; padding: .15em 0 .15em 12px; border-left: 3px solid color-mix(in srgb, var(--knowledge-accent) 40%, transparent); color: var(--knowledge-text-secondary); }\n.dsh-knowledge-activity-markdown :where(code, pre) { font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace; }\n.dsh-knowledge-activity-markdown code { padding: .14em .32em; border-radius: 5px; background: var(--knowledge-embedded-control); font-size: .92em; }\n.dsh-knowledge-activity-markdown pre { overflow-x: auto; padding: 11px 12px; border: 1px solid var(--knowledge-border); border-radius: 10px; background: var(--knowledge-embedded-control); }\n.dsh-knowledge-activity-markdown pre code { padding: 0; background: transparent; }\n.dsh-knowledge-activity-markdown table { width: 100%; border-collapse: collapse; font-size: 12px; }\n.dsh-knowledge-activity-markdown :where(th, td) { padding: 6px 7px; border: 1px solid var(--knowledge-border); text-align: left; }\n.dsh-knowledge-activity-markdown img { display: block; max-width: 100%; height: auto; border-radius: 10px; }\n\n.dsh-knowledge-activity-state,\n.dsh-knowledge-activity-error,\n.dsh-knowledge-activity-empty { margin: auto; text-align: center; }\n.dsh-knowledge-activity-state { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 28px 10px; color: var(--knowledge-text-tertiary); }\n.dsh-knowledge-activity-state > span { width: 8px; height: 8px; border: 2px solid var(--knowledge-border); border-top-color: var(--knowledge-accent); border-radius: 50%; animation: dsh-knowledge-activity-spin .8s linear infinite; }\n.dsh-knowledge-activity-error,\n.dsh-knowledge-activity-empty { display: grid; max-width: 260px; justify-items: center; gap: 6px; padding: 32px 12px; }\n.dsh-knowledge-activity-error strong,\n.dsh-knowledge-activity-empty strong { font-size: 13px; font-weight: 650; }\n.dsh-knowledge-activity-error p,\n.dsh-knowledge-activity-empty p { margin: 0; color: var(--knowledge-text-tertiary); font-size: 11px; line-height: 1.65; }\n.dsh-knowledge-activity-empty > span { display: grid; width: 40px; height: 40px; margin-bottom: 3px; place-items: center; border-radius: 13px; color: var(--knowledge-text-secondary); background: var(--knowledge-embedded-control); }\n.dsh-knowledge-activity-error > button { min-height: 34px; margin-top: 6px; padding: 0 13px; border: 1px solid var(--knowledge-border); border-radius: 9px; background: var(--knowledge-embedded-control); cursor: pointer; }\n.dsh-knowledge-activity-error > button:hover { background: var(--knowledge-hover); }\n\n@keyframes dsh-knowledge-activity-spin { to { transform: rotate(360deg); } }\n\n@media (max-width: 460px) {\n .dsh-knowledge-activity-header { padding-inline: 10px; }\n .dsh-knowledge-activity-browser,\n .dsh-knowledge-activity-reader { padding: 10px 10px max(14px, env(safe-area-inset-bottom)); }\n .dsh-knowledge-activity-search input { font-size: 16px; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dsh-knowledge-activity-panel,\n .dsh-knowledge-activity-state > span,\n .dsh-knowledge-activity-scope-trigger > svg { animation: none; transition: none; }\n}\n';
325
468
 
326
469
  // src/knowledge-activity-panel.tsx
327
- var import_react2 = require("react");
470
+ var import_react4 = require("react");
328
471
  var import_dsh_client_ui_primitives2 = require("@deepseek-ai/dsh-client-ui-primitives");
329
472
 
330
473
  // src/knowledge-activity-api.ts
@@ -404,7 +547,7 @@ function isRecord(value) {
404
547
  }
405
548
 
406
549
  // src/knowledge-activity-notes.tsx
407
- var import_react = require("react");
550
+ var import_react3 = require("react");
408
551
  var import_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
409
552
 
410
553
  // src/latest-request.ts
@@ -3292,19 +3435,19 @@ function renderMarkdown(markdown) {
3292
3435
  var import_jsx_runtime = require("react/jsx-runtime");
3293
3436
  function KnowledgeActivityNotes({ sessionId, projectId, controller }) {
3294
3437
  const initial = controller.selection(sessionId);
3295
- const [folderId, setFolderId] = (0, import_react.useState)(initial.noteFolderId ?? null);
3296
- const [crumbs, setCrumbs] = (0, import_react.useState)(initial.noteCrumbs ?? [{ id: null, name: "\u5168\u90E8\u7B14\u8BB0" }]);
3297
- const [selectedId, setSelectedId] = (0, import_react.useState)(initial.noteDocumentId);
3298
- const [nodes, setNodes] = (0, import_react.useState)([]);
3299
- const [content, setContent] = (0, import_react.useState)();
3300
- const [queryInput, setQueryInput] = (0, import_react.useState)("");
3301
- const [query, setQuery] = (0, import_react.useState)("");
3302
- const [listState, setListState] = (0, import_react.useState)("loading");
3303
- const [contentState, setContentState] = (0, import_react.useState)("idle");
3304
- const [error, setError] = (0, import_react.useState)("");
3305
- const listRequest = (0, import_react.useRef)(new LatestRequest());
3306
- const [refresh, setRefresh] = (0, import_react.useState)(0);
3307
- const loadNodes = (0, import_react.useCallback)(async () => {
3438
+ const [folderId, setFolderId] = (0, import_react3.useState)(initial.noteFolderId ?? null);
3439
+ const [crumbs, setCrumbs] = (0, import_react3.useState)(initial.noteCrumbs ?? [{ id: null, name: "\u5168\u90E8\u7B14\u8BB0" }]);
3440
+ const [selectedId, setSelectedId] = (0, import_react3.useState)(initial.noteDocumentId);
3441
+ const [nodes, setNodes] = (0, import_react3.useState)([]);
3442
+ const [content, setContent] = (0, import_react3.useState)();
3443
+ const [queryInput, setQueryInput] = (0, import_react3.useState)("");
3444
+ const [query, setQuery] = (0, import_react3.useState)("");
3445
+ const [listState, setListState] = (0, import_react3.useState)("loading");
3446
+ const [contentState, setContentState] = (0, import_react3.useState)("idle");
3447
+ const [error, setError] = (0, import_react3.useState)("");
3448
+ const listRequest = (0, import_react3.useRef)(new LatestRequest());
3449
+ const [refresh, setRefresh] = (0, import_react3.useState)(0);
3450
+ const loadNodes = (0, import_react3.useCallback)(async () => {
3308
3451
  const signal = listRequest.current.start();
3309
3452
  setListState("loading");
3310
3453
  setError("");
@@ -3325,13 +3468,13 @@ function KnowledgeActivityNotes({ sessionId, projectId, controller }) {
3325
3468
  setError(message(reason));
3326
3469
  }
3327
3470
  }, [folderId, projectId, query, sessionId]);
3328
- (0, import_react.useEffect)(() => {
3471
+ (0, import_react3.useEffect)(() => {
3329
3472
  void loadNodes();
3330
3473
  return () => {
3331
3474
  listRequest.current.cancel();
3332
3475
  };
3333
3476
  }, [loadNodes, refresh]);
3334
- (0, import_react.useEffect)(() => {
3477
+ (0, import_react3.useEffect)(() => {
3335
3478
  if (selectedId === void 0) {
3336
3479
  setContent(void 0);
3337
3480
  setContentState("idle");
@@ -3435,7 +3578,7 @@ function KnowledgeActivityNotes({ sessionId, projectId, controller }) {
3435
3578
  ] });
3436
3579
  }
3437
3580
  function NoteReader({ value, state, error, onBack, onRetry }) {
3438
- const html2 = (0, import_react.useMemo)(() => value === void 0 ? "" : renderMarkdown(value.content), [value]);
3581
+ const html2 = (0, import_react3.useMemo)(() => value === void 0 ? "" : renderMarkdown(value.content), [value]);
3439
3582
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "dsh-knowledge-activity-reader", children: [
3440
3583
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "dsh-knowledge-activity-reader-bar", children: [
3441
3584
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("button", { type: "button", className: "dsh-knowledge-activity-back", onClick: onBack, children: [
@@ -3502,25 +3645,25 @@ function KnowledgeActivityPanel(props) {
3502
3645
  const sessionId = String(props.sessionId);
3503
3646
  const projectId = props.useSessions((state) => state.byId[props.sessionId]?.cwd);
3504
3647
  const initial = props.controller.selection(sessionId);
3505
- const [mode, setMode] = (0, import_react2.useState)(initial.mode ?? "knowledge");
3506
- const [mounts, setMounts] = (0, import_react2.useState)([]);
3507
- const [selectedBaseId, setSelectedBaseId] = (0, import_react2.useState)(initial.knowledgeBaseId);
3508
- const [selectedDocumentId, setSelectedDocumentId] = (0, import_react2.useState)(initial.documentId);
3509
- const [documents, setDocuments] = (0, import_react2.useState)([]);
3510
- const [documentValue, setDocumentValue] = (0, import_react2.useState)();
3511
- const [queryInput, setQueryInput] = (0, import_react2.useState)("");
3512
- const [query, setQuery] = (0, import_react2.useState)("");
3513
- const [mountState, setMountState] = (0, import_react2.useState)("loading");
3514
- const [listState, setListState] = (0, import_react2.useState)("idle");
3515
- const [documentState, setDocumentState] = (0, import_react2.useState)("idle");
3516
- const [documentRefresh, setDocumentRefresh] = (0, import_react2.useState)(0);
3517
- const [error, setError] = (0, import_react2.useState)("");
3518
- const [nextCursor, setNextCursor] = (0, import_react2.useState)();
3519
- const [baseMenuOpen, setBaseMenuOpen] = (0, import_react2.useState)(false);
3520
- const indexRequest = (0, import_react2.useRef)(new LatestRequest());
3521
- const mountRequest = (0, import_react2.useRef)(new LatestRequest());
3522
- const scopeRef = (0, import_react2.useRef)(null);
3523
- (0, import_react2.useEffect)(() => {
3648
+ const [mode, setMode] = (0, import_react4.useState)(initial.mode ?? "knowledge");
3649
+ const [mounts, setMounts] = (0, import_react4.useState)([]);
3650
+ const [selectedBaseId, setSelectedBaseId] = (0, import_react4.useState)(initial.knowledgeBaseId);
3651
+ const [selectedDocumentId, setSelectedDocumentId] = (0, import_react4.useState)(initial.documentId);
3652
+ const [documents, setDocuments] = (0, import_react4.useState)([]);
3653
+ const [documentValue, setDocumentValue] = (0, import_react4.useState)();
3654
+ const [queryInput, setQueryInput] = (0, import_react4.useState)("");
3655
+ const [query, setQuery] = (0, import_react4.useState)("");
3656
+ const [mountState, setMountState] = (0, import_react4.useState)("loading");
3657
+ const [listState, setListState] = (0, import_react4.useState)("idle");
3658
+ const [documentState, setDocumentState] = (0, import_react4.useState)("idle");
3659
+ const [documentRefresh, setDocumentRefresh] = (0, import_react4.useState)(0);
3660
+ const [error, setError] = (0, import_react4.useState)("");
3661
+ const [nextCursor, setNextCursor] = (0, import_react4.useState)();
3662
+ const [baseMenuOpen, setBaseMenuOpen] = (0, import_react4.useState)(false);
3663
+ const indexRequest = (0, import_react4.useRef)(new LatestRequest());
3664
+ const mountRequest = (0, import_react4.useRef)(new LatestRequest());
3665
+ const scopeRef = (0, import_react4.useRef)(null);
3666
+ (0, import_react4.useEffect)(() => {
3524
3667
  if (!baseMenuOpen) return;
3525
3668
  const closeOutside = (event) => {
3526
3669
  if (!scopeRef.current?.contains(event.target)) setBaseMenuOpen(false);
@@ -3535,7 +3678,7 @@ function KnowledgeActivityPanel(props) {
3535
3678
  document.removeEventListener("keydown", closeOnEscape);
3536
3679
  };
3537
3680
  }, [baseMenuOpen]);
3538
- const refreshMounts = (0, import_react2.useCallback)(async () => {
3681
+ const refreshMounts = (0, import_react4.useCallback)(async () => {
3539
3682
  const signal = mountRequest.current.start();
3540
3683
  setMountState("loading");
3541
3684
  setError("");
@@ -3561,13 +3704,13 @@ function KnowledgeActivityPanel(props) {
3561
3704
  setError(message2(reason));
3562
3705
  }
3563
3706
  }, [projectId, props.controller, sessionId]);
3564
- (0, import_react2.useEffect)(() => {
3707
+ (0, import_react4.useEffect)(() => {
3565
3708
  void refreshMounts();
3566
3709
  return () => {
3567
3710
  mountRequest.current.cancel();
3568
3711
  };
3569
3712
  }, [refreshMounts]);
3570
- const loadIndex = (0, import_react2.useCallback)(async (cursor, append = false) => {
3713
+ const loadIndex = (0, import_react4.useCallback)(async (cursor, append = false) => {
3571
3714
  const signal = indexRequest.current.start();
3572
3715
  if (mounts.length === 0 || query.length === 0 && selectedBaseId === void 0) {
3573
3716
  setDocuments([]);
@@ -3596,13 +3739,13 @@ function KnowledgeActivityPanel(props) {
3596
3739
  setError(message2(reason));
3597
3740
  }
3598
3741
  }, [mounts, projectId, query, selectedBaseId, sessionId]);
3599
- (0, import_react2.useEffect)(() => {
3742
+ (0, import_react4.useEffect)(() => {
3600
3743
  void loadIndex();
3601
3744
  return () => {
3602
3745
  indexRequest.current.cancel();
3603
3746
  };
3604
3747
  }, [loadIndex]);
3605
- (0, import_react2.useEffect)(() => {
3748
+ (0, import_react4.useEffect)(() => {
3606
3749
  if (selectedDocumentId === void 0) {
3607
3750
  setDocumentValue(void 0);
3608
3751
  setDocumentState("idle");
@@ -3796,7 +3939,7 @@ function DocumentRow({ document: document2, baseName, onClick }) {
3796
3939
  ] });
3797
3940
  }
3798
3941
  function DocumentReader({ value, state, error, onBack, onRetry }) {
3799
- const html2 = (0, import_react2.useMemo)(() => value === void 0 ? "" : renderMarkdown(readableMarkdown(value.content)), [value]);
3942
+ const html2 = (0, import_react4.useMemo)(() => value === void 0 ? "" : renderMarkdown(readableMarkdown(value.content)), [value]);
3800
3943
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "dsh-knowledge-activity-reader", children: [
3801
3944
  /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "dsh-knowledge-activity-reader-bar", children: [
3802
3945
  /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("button", { type: "button", className: "dsh-knowledge-activity-back", onClick: onBack, children: [
@@ -3856,12 +3999,12 @@ function message2(reason) {
3856
3999
  }
3857
4000
 
3858
4001
  // src/knowledge-activity-presentation.tsx
3859
- var import_react3 = require("react");
4002
+ var import_react5 = require("react");
3860
4003
  var import_jsx_runtime3 = require("react/jsx-runtime");
3861
4004
  function KnowledgeActivityPresentation({ controller, sessionId, onClosed, children }) {
3862
- const root = (0, import_react3.useRef)(null);
3863
- const open = (0, import_react3.useSyncExternalStore)(controller.subscribe, () => controller.isOpen(sessionId));
3864
- (0, import_react3.useLayoutEffect)(() => {
4005
+ const root = (0, import_react5.useRef)(null);
4006
+ const open = (0, import_react5.useSyncExternalStore)(controller.subscribe, () => controller.isOpen(sessionId));
4007
+ (0, import_react5.useLayoutEffect)(() => {
3865
4008
  const viewport = root.current;
3866
4009
  const panel = viewport?.firstElementChild;
3867
4010
  if (!viewport || !panel) return;
@@ -3919,6 +4062,7 @@ function KnowledgeActivityPresentation({ controller, sessionId, onClosed, childr
3919
4062
  // src/knowledge-activity-controller.tsx
3920
4063
  var import_jsx_runtime4 = require("react/jsx-runtime");
3921
4064
  function createKnowledgeActivityController(ctx, options) {
4065
+ if (supportsDockedPanels(ctx)) return createDockedKnowledgeController(ctx, options);
3922
4066
  const runtime = ctx;
3923
4067
  const listeners = /* @__PURE__ */ new Set();
3924
4068
  const states = /* @__PURE__ */ new Map();
@@ -4042,6 +4186,58 @@ function createKnowledgeActivityController(ctx, options) {
4042
4186
  function normalizeSessionId(value) {
4043
4187
  return typeof value === "string" && value.length > 0 ? value : void 0;
4044
4188
  }
4189
+ function createDockedKnowledgeController(ctx, options) {
4190
+ const selections = /* @__PURE__ */ new Map();
4191
+ const listeners = /* @__PURE__ */ new Set();
4192
+ const notify = () => {
4193
+ for (const listener of listeners) listener();
4194
+ };
4195
+ const current = () => normalizeSessionId(ctx.sessions.list.getSnapshot().current);
4196
+ const panel = createDockedPanel(
4197
+ ctx,
4198
+ "@lemoncat7/dsh-knowledge/activity",
4199
+ "\u77E5\u8BC6\u5E93",
4200
+ (props) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(KnowledgeActivityPanel, { ...props, controller }),
4201
+ notify
4202
+ );
4203
+ const controller = {
4204
+ open(sessionId, selection) {
4205
+ if (selection !== void 0) controller.select(sessionId, selection);
4206
+ options.beforeOpen();
4207
+ panel.open(sessionId);
4208
+ },
4209
+ toggle(sessionId) {
4210
+ if (panel.isOpen(sessionId)) controller.close(sessionId);
4211
+ else controller.open(sessionId);
4212
+ },
4213
+ close(sessionId) {
4214
+ const target = sessionId ?? current();
4215
+ if (target !== void 0) panel.close(target);
4216
+ },
4217
+ isOpen: panel.isOpen,
4218
+ selection: (sessionId) => selections.get(sessionId) ?? {},
4219
+ select(sessionId, selection) {
4220
+ selections.set(sessionId, mergeActivitySelection(selections.get(sessionId) ?? {}, selection));
4221
+ notify();
4222
+ },
4223
+ openWorkspace(target) {
4224
+ controller.close();
4225
+ options.openWorkspace(target);
4226
+ },
4227
+ subscribe(listener) {
4228
+ listeners.add(listener);
4229
+ return () => {
4230
+ listeners.delete(listener);
4231
+ };
4232
+ },
4233
+ dispose() {
4234
+ panel.dispose();
4235
+ selections.clear();
4236
+ listeners.clear();
4237
+ }
4238
+ };
4239
+ return controller;
4240
+ }
4045
4241
 
4046
4242
  // src/constants.ts
4047
4243
  var KNOWLEDGE_SETTINGS_NAMESPACE = "dsh-knowledge-connection";
@@ -4068,12 +4264,15 @@ var cachedConnectionView;
4068
4264
  var inject = ["slots", "theme", "layout", "sessions"];
4069
4265
  function apply2(ctx) {
4070
4266
  ctx.effect(installStyles, "dsh-knowledge: client styles");
4267
+ const docked = supportsDockedPanels(ctx);
4071
4268
  let activity;
4072
- const workspace = createKnowledgeWorkspaceController(ctx, () => activity?.close(void 0, true));
4269
+ const workspace = createKnowledgeWorkspaceController(ctx, () => {
4270
+ if (!docked) activity?.close(void 0, true);
4271
+ });
4073
4272
  activity = createKnowledgeActivityController(ctx, {
4074
4273
  beforeOpen: () => {
4075
4274
  workspace.close();
4076
- activatePluginWorkspace(PLUGIN_ID);
4275
+ if (!docked) activatePluginWorkspace(PLUGIN_ID);
4077
4276
  },
4078
4277
  openWorkspace: (target) => {
4079
4278
  if (target === void 0) workspace.open();
@@ -4082,7 +4281,7 @@ function apply2(ctx) {
4082
4281
  });
4083
4282
  ctx.effect(() => observePluginWorkspace(PLUGIN_ID, () => {
4084
4283
  workspace.close();
4085
- activity?.close(void 0, true);
4284
+ if (!docked) activity?.close(void 0, true);
4086
4285
  }), "dsh-knowledge: exclusive workspace");
4087
4286
  ctx.effect(() => () => {
4088
4287
  workspace.close();
@@ -4092,7 +4291,7 @@ function apply2(ctx) {
4092
4291
  name: "sidebar.footer.action",
4093
4292
  id: "knowledge",
4094
4293
  order: -10
4095
- }, (props) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(KnowledgeLauncher, { ...props, workspace, activity })));
4294
+ }, (props) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(KnowledgeLauncher, { ...props, workspace, activity, docked: supportsDockedPanels(ctx) })));
4096
4295
  ctx.slots.inject("settings.plugin.item", () => ctx.slots.register({
4097
4296
  name: "settings.plugin.item",
4098
4297
  key: KNOWLEDGE_SETTINGS_NAMESPACE
@@ -4107,12 +4306,12 @@ function KnowledgeWritebackStatus({
4107
4306
  turn,
4108
4307
  workspace
4109
4308
  }) {
4110
- const [state, setState] = (0, import_react4.useState)();
4111
- const [retrying, setRetrying] = (0, import_react4.useState)(false);
4112
- const [readError, setReadError] = (0, import_react4.useState)();
4113
- const client = (0, import_react4.useRef)();
4114
- const container = (0, import_react4.useRef)(null);
4115
- (0, import_react4.useEffect)(() => {
4309
+ const [state, setState] = (0, import_react6.useState)();
4310
+ const [retrying, setRetrying] = (0, import_react6.useState)(false);
4311
+ const [readError, setReadError] = (0, import_react6.useState)();
4312
+ const client = (0, import_react6.useRef)();
4313
+ const container = (0, import_react6.useRef)(null);
4314
+ (0, import_react6.useEffect)(() => {
4116
4315
  setState(void 0);
4117
4316
  setRetrying(false);
4118
4317
  setReadError(void 0);
@@ -4205,7 +4404,7 @@ function createKnowledgeWorkspaceController(client, beforeOpen) {
4205
4404
  if (disposeWorkspace !== void 0) return;
4206
4405
  beforeOpen();
4207
4406
  activatePluginWorkspace(PLUGIN_ID);
4208
- disposeWorkspace = client.slots.register({ name: "conversation", priority: -1 }, (props) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(KnowledgeWorkspace, { ...props, client, workspace: controller }));
4407
+ disposeWorkspace = registerMainPanel(client, PLUGIN_ID, -1, (props) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(KnowledgeWorkspace, { ...props, client, workspace: controller }), close);
4209
4408
  };
4210
4409
  controller = {
4211
4410
  isOpen: () => disposeWorkspace !== void 0,
@@ -4237,18 +4436,18 @@ function createKnowledgeWorkspaceController(client, beforeOpen) {
4237
4436
  return controller;
4238
4437
  }
4239
4438
  function KnowledgeConnectionCard() {
4240
- const [current, setCurrent] = (0, import_react4.useState)();
4241
- const [loadState, setLoadState] = (0, import_react4.useState)("loading");
4242
- const [loadError, setLoadError] = (0, import_react4.useState)("");
4243
- const [open, setOpen] = (0, import_react4.useState)(false);
4244
- const [backend, setBackend] = (0, import_react4.useState)("local");
4245
- const [remoteUrl, setRemoteUrl] = (0, import_react4.useState)("");
4246
- const [remoteToken, setRemoteToken] = (0, import_react4.useState)("");
4247
- const [timeout, setTimeoutValue] = (0, import_react4.useState)("10000");
4248
- const [dirty, setDirty] = (0, import_react4.useState)(false);
4249
- const [saving, setSaving] = (0, import_react4.useState)(false);
4250
- const [message3, setMessage] = (0, import_react4.useState)();
4251
- const load = (0, import_react4.useCallback)(async (signal) => {
4439
+ const [current, setCurrent] = (0, import_react6.useState)();
4440
+ const [loadState, setLoadState] = (0, import_react6.useState)("loading");
4441
+ const [loadError, setLoadError] = (0, import_react6.useState)("");
4442
+ const [open, setOpen] = (0, import_react6.useState)(false);
4443
+ const [backend, setBackend] = (0, import_react6.useState)("local");
4444
+ const [remoteUrl, setRemoteUrl] = (0, import_react6.useState)("");
4445
+ const [remoteToken, setRemoteToken] = (0, import_react6.useState)("");
4446
+ const [timeout, setTimeoutValue] = (0, import_react6.useState)("10000");
4447
+ const [dirty, setDirty] = (0, import_react6.useState)(false);
4448
+ const [saving, setSaving] = (0, import_react6.useState)(false);
4449
+ const [message3, setMessage] = (0, import_react6.useState)();
4450
+ const load = (0, import_react6.useCallback)(async (signal) => {
4252
4451
  setLoadState("loading");
4253
4452
  setLoadError("");
4254
4453
  try {
@@ -4261,14 +4460,14 @@ function KnowledgeConnectionCard() {
4261
4460
  setLoadState("error");
4262
4461
  }
4263
4462
  }, []);
4264
- (0, import_react4.useEffect)(() => {
4463
+ (0, import_react6.useEffect)(() => {
4265
4464
  const controller = new AbortController();
4266
4465
  void load(controller.signal);
4267
4466
  return () => {
4268
4467
  controller.abort();
4269
4468
  };
4270
4469
  }, [load]);
4271
- (0, import_react4.useEffect)(() => {
4470
+ (0, import_react6.useEffect)(() => {
4272
4471
  if (dirty || current === void 0) return;
4273
4472
  setBackend(current.backend);
4274
4473
  setRemoteUrl(current.remoteUrl ?? "");
@@ -4430,14 +4629,14 @@ function isConnectionView(value) {
4430
4629
  function isManagementPath(value) {
4431
4630
  return typeof value === "string" && value.startsWith("/") && !value.startsWith("//");
4432
4631
  }
4433
- function KnowledgeLauncher({ wide, useSessions, workspace, activity }) {
4434
- const [open, setOpen] = (0, import_react4.useState)(workspace.isOpen());
4435
- const currentSessionId = useSessions(availableActivitySession);
4436
- const [activityOpen, setActivityOpen] = (0, import_react4.useState)(currentSessionId === void 0 ? false : activity.isOpen(currentSessionId));
4437
- (0, import_react4.useEffect)(() => workspace.subscribe(() => {
4632
+ function KnowledgeLauncher({ wide, useSessions, workspace, activity, docked }) {
4633
+ const [open, setOpen] = (0, import_react6.useState)(workspace.isOpen());
4634
+ const currentSessionId = useSessions((state) => availableActivitySession(state, docked));
4635
+ const [activityOpen, setActivityOpen] = (0, import_react6.useState)(currentSessionId === void 0 ? false : activity.isOpen(currentSessionId));
4636
+ (0, import_react6.useEffect)(() => workspace.subscribe(() => {
4438
4637
  setOpen(workspace.isOpen());
4439
4638
  }), [workspace]);
4440
- (0, import_react4.useEffect)(() => {
4639
+ (0, import_react6.useEffect)(() => {
4441
4640
  const sync = () => {
4442
4641
  setActivityOpen(currentSessionId === void 0 ? false : activity.isOpen(currentSessionId));
4443
4642
  };
@@ -4472,30 +4671,29 @@ function KnowledgeLauncher({ wide, useSessions, workspace, activity }) {
4472
4671
  onClick: () => {
4473
4672
  if (currentSessionId !== void 0) activity.toggle(currentSessionId);
4474
4673
  },
4475
- children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.7", "aria-hidden": "true", children: [
4476
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("rect", { x: "3", y: "4", width: "18", height: "16", rx: "3" }),
4477
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M14 4v16M17 9v6" })
4478
- ] })
4674
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_dsh_client_ui_primitives3.IconPanelLeftOutline16, { size: 16, className: "dsh-knowledge-panel-right-icon" })
4479
4675
  }
4480
4676
  )
4481
4677
  ] });
4482
4678
  }
4483
4679
  function KnowledgeWorkspace({
4484
- sessionId,
4680
+ sessionId: scopedSessionId,
4485
4681
  useSessions,
4486
4682
  client,
4487
4683
  workspace
4488
4684
  }) {
4489
4685
  const cachedManagementPath = cachedConnectionView?.managementAvailable ? cachedConnectionView.managementPath : void 0;
4490
- const [panelState, setPanelState] = (0, import_react4.useState)(cachedConnectionView === void 0 ? "loading" : cachedManagementPath === void 0 ? "unavailable" : "ready");
4491
- const [managementPath, setManagementPath] = (0, import_react4.useState)(cachedManagementPath);
4492
- const [panelError, setPanelError] = (0, import_react4.useState)("");
4493
- const [target, setTarget] = (0, import_react4.useState)(workspace.currentTarget());
4686
+ const [panelState, setPanelState] = (0, import_react6.useState)(cachedConnectionView === void 0 ? "loading" : cachedManagementPath === void 0 ? "unavailable" : "ready");
4687
+ const [managementPath, setManagementPath] = (0, import_react6.useState)(cachedManagementPath);
4688
+ const [panelError, setPanelError] = (0, import_react6.useState)("");
4689
+ const [target, setTarget] = (0, import_react6.useState)(workspace.currentTarget());
4690
+ const selectedSessionId = useSessions((state) => state.current);
4691
+ const sessionId = scopedSessionId ?? selectedSessionId;
4494
4692
  const projectId = useSessions((state) => sessionId === void 0 ? void 0 : state.byId[sessionId]?.cwd);
4495
4693
  const knowledgeUrl = managementPath === void 0 ? void 0 : knowledgePanelUrl(managementPath, sessionId, projectId, target);
4496
- const frame = (0, import_react4.useRef)(null);
4497
- const themeFrame = (0, import_react4.useRef)(0);
4498
- const loadManagement = (0, import_react4.useCallback)(async (background = false) => {
4694
+ const frame = (0, import_react6.useRef)(null);
4695
+ const themeFrame = (0, import_react6.useRef)(0);
4696
+ const loadManagement = (0, import_react6.useCallback)(async (background = false) => {
4499
4697
  if (!background) setPanelState("loading");
4500
4698
  setPanelError("");
4501
4699
  try {
@@ -4513,13 +4711,13 @@ function KnowledgeWorkspace({
4513
4711
  setPanelState("error");
4514
4712
  }
4515
4713
  }, []);
4516
- (0, import_react4.useEffect)(() => {
4714
+ (0, import_react6.useEffect)(() => {
4517
4715
  void loadManagement(cachedConnectionView !== void 0);
4518
4716
  }, [loadManagement]);
4519
- (0, import_react4.useEffect)(() => workspace.subscribe(() => {
4717
+ (0, import_react6.useEffect)(() => workspace.subscribe(() => {
4520
4718
  setTarget(workspace.currentTarget());
4521
4719
  }), [workspace]);
4522
- const sendTheme = (0, import_react4.useCallback)(() => {
4720
+ const sendTheme = (0, import_react6.useCallback)(() => {
4523
4721
  const currentFrame = frame.current;
4524
4722
  if (currentFrame === null) return;
4525
4723
  const target2 = currentFrame.contentWindow;
@@ -4529,14 +4727,14 @@ function KnowledgeWorkspace({
4529
4727
  frameOrigin(currentFrame) ?? "*"
4530
4728
  );
4531
4729
  }, [client]);
4532
- const scheduleTheme = (0, import_react4.useCallback)(() => {
4730
+ const scheduleTheme = (0, import_react6.useCallback)(() => {
4533
4731
  if (themeFrame.current !== 0) window.cancelAnimationFrame(themeFrame.current);
4534
4732
  themeFrame.current = window.requestAnimationFrame(() => {
4535
4733
  themeFrame.current = 0;
4536
4734
  sendTheme();
4537
4735
  });
4538
4736
  }, [sendTheme]);
4539
- (0, import_react4.useEffect)(() => {
4737
+ (0, import_react6.useEffect)(() => {
4540
4738
  const off = client.on("theme/change", scheduleTheme);
4541
4739
  const onMessage = (event) => {
4542
4740
  const currentFrame = frame.current;