@lemoncat7/dsh-knowledge 2.1.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/client.js +13 -11
- package/lib/client.js.map +2 -2
- package/lib/theme-bridge.js +6 -6
- package/lib/theme-bridge.js.map +1 -1
- package/lib/web-workspace-effects.d.ts.map +1 -1
- package/lib/web-workspace-effects.js +19 -1
- package/lib/web-workspace-effects.js.map +1 -1
- package/package.json +1 -1
- package/web/app.js +13 -7
- package/web/styles.css +108 -47
- package/web/workspace-effects.js +2 -2
package/lib/client.js
CHANGED
|
@@ -47,7 +47,7 @@ function observePluginWorkspace(pluginId, close) {
|
|
|
47
47
|
var import_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
48
48
|
|
|
49
49
|
// src/client.css
|
|
50
|
-
var client_default = '.dsh-knowledge-trigger,\n.dsh-knowledge-workspace,\n.dsh-knowledge-settings-card,\n.dsh-knowledge-writeback-status {\n --knowledge-accent: #3a3a3c;\n --knowledge-on-accent: #fff;\n --knowledge-danger: #d70015;\n --knowledge-success: #248a3d;\n --knowledge-pane: rgb(242 243 247 / 78%);\n --knowledge-raised: #fff;\n --knowledge-control: rgb(255 255 255 / 82%);\n --knowledge-border: rgb(60 60 67 / 14%);\n --knowledge-text: #1d1d1f;\n --knowledge-text-secondary: #515154;\n --knowledge-hover: rgba(118, 118, 128, .1);\n --knowledge-glare-light: rgb(255 255 255 / 82%);\n --knowledge-glare-rim: rgb(60 60 67 / 15%);\n --knowledge-glass-filter: saturate(1.2) contrast(1.035) blur(20px);\n --knowledge-glass-shadow: inset 0 1px 0 rgb(255 255 255 / 58%), inset 0 -1px 0 rgb(60 60 67 / 12%);\n}\n\nbody[data-ds-dark-theme] :is(\n .dsh-knowledge-trigger,\n .dsh-knowledge-workspace,\n .dsh-knowledge-settings-card,\n .dsh-knowledge-writeback-status\n) {\n --knowledge-accent: #e5e5ea;\n --knowledge-on-accent: #1d1d1f;\n --knowledge-danger: #ff453a;\n --knowledge-success: #30d158;\n --knowledge-pane: rgb(44 44 46 / 78%);\n --knowledge-raised: #2c2c2e;\n --knowledge-control: rgb(58 58 60 / 88%);\n --knowledge-border: rgb(255 255 255 / 10%);\n --knowledge-text: #f5f5f7;\n --knowledge-text-secondary: #d1d1d6;\n --knowledge-hover: rgb(255 255 255 / 8%);\n --knowledge-glare-light: rgb(255 255 255 / 42%);\n --knowledge-glare-rim: rgb(0 0 0 / 24%);\n --knowledge-glass-shadow: inset 0 1px 0 rgb(255 255 255 / 18%), inset 0 -1px 0 rgb(0 0 0 / 30%);\n}\n\n.dsh-knowledge-trigger,\n.dsh-knowledge-panel-state button,\n.dsh-knowledge-settings-card button,\n.dsh-knowledge-writeback-status button {\n -webkit-appearance: none;\n appearance: none;\n margin: 0;\n}\n\n.dsh-knowledge-trigger {\n position: relative;\n flex: none;\n min-width: 0;\n max-width: 100%;\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n height: 34px;\n margin: 4px 0;\n padding: 6px 8px 6px 10px;\n box-sizing: border-box;\n border: 0;\n border-radius: 12px;\n overflow: hidden;\n background: transparent;\n color: var(--dsw-alias-label-primary);\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 > * {\n position: relative;\n z-index: 1;\n}\n\n.dsh-knowledge-trigger::before {\n position: absolute;\n z-index: 0;\n top: -55%;\n bottom: -55%;\n left: -64%;\n width: 52%;\n border-radius: 45%;\n background: linear-gradient(\n 90deg,\n transparent,\n color-mix(in srgb, var(--knowledge-glare-light) 76%, transparent) 50%,\n color-mix(in srgb, var(--knowledge-glare-rim) 18%, transparent) 63%,\n transparent\n );\n opacity: 0;\n transform: skewX(-18deg) translate3d(0, 0, 0);\n pointer-events: none;\n transition:\n opacity 150ms ease-out,\n transform 720ms cubic-bezier(.2, .72, .2, 1);\n content: "";\n}\n\n.dsh-knowledge-trigger:hover::before {\n opacity: .96;\n transform: skewX(-18deg) translate3d(320%, 0, 0);\n}\n\n.dsh-knowledge-trigger:focus-visible,\n.dsh-knowledge-writeback-status 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 4px;\n padding: 0;\n justify-content: center;\n gap: 0;\n border-radius: 50%;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dsh-knowledge-trigger,\n .dsh-knowledge-trigger::before { transition: none; }\n .dsh-knowledge-trigger::before { display: 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-pane);\n -webkit-backdrop-filter: var(--knowledge-glass-filter);\n backdrop-filter: var(--knowledge-glass-filter);\n}\n\n.dsh-knowledge-workspace-header {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n min-height: 56px;\n padding: 8px 16px 8px 20px;\n box-sizing: border-box;\n border-bottom: 1px solid var(--knowledge-border);\n background: var(--knowledge-pane);\n box-shadow: var(--knowledge-glass-shadow);\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-xiaohei-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 140ms ease, background 140ms ease, border-color 140ms ease, transform 140ms ease;\n}\n\n.dsh-knowledge-workspace-header [data-xiaohei-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-xiaohei-workspace-close]:active { transform: scale(.96); }\n.dsh-knowledge-workspace-header [data-xiaohei-workspace-close]:focus-visible {\n outline: 2px solid var(--knowledge-accent);\n outline-offset: 2px;\n}\n.dsh-knowledge-workspace-header [data-xiaohei-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 width: 100%;\n min-height: 0;\n border: 0;\n background: transparent;\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 padding: 32px;\n box-sizing: border-box;\n background: transparent;\n color: var(--dsw-alias-label-primary, #171719);\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(--dsw-alias-interactive-bg-hover, rgba(128, 128, 128, .1));\n color: var(--dsw-alias-label-secondary, #68686f);\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(--dsw-alias-label-secondary, #68686f); 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(--dsw-alias-border-l2);\n border-radius: 12px;\n background: var(--dsw-alias-bg-layer-3);\n color: var(--dsw-alias-label-primary, #171719);\n transition: border-color .16s, background .16s;\n}\n.dsh-knowledge-settings-card:hover { border-color: var(--dsw-alias-label-dimmed); }\n.dsh-knowledge-settings-card--open { border-color: var(--dsw-alias-label-dimmed); background: var(--dsw-alias-bg-layer-2); }\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(--dsw-alias-label-tertiary); font-size: 13px; line-height: 1.5; }\n.dsh-knowledge-source-picker small,\n.dsh-knowledge-remote-fields small { color: var(--dsw-alias-label-secondary, #68686f); font-size: 12px; }\n.dsh-knowledge-settings-summary { display: flex; flex: none; align-items: center; gap: 10px; color: var(--dsw-alias-label-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(--dsw-alias-border-l2);\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(--dsw-alias-divider-primary, rgba(128, 128, 128, .2));\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(--dsw-alias-divider-primary, rgba(128, 128, 128, .34));\n border-radius: 50%;\n background: var(--xiaohei-plugin-control-fill, var(--dsw-alias-bg-layer-1, #fff));\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(--dsw-alias-label-secondary, #68686f); 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(--dsw-alias-divider-primary, rgba(128, 128, 128, .25));\n border-radius: 10px;\n outline: none;\n background: var(--xiaohei-plugin-control-fill, var(--dsw-alias-bg-layer-1, #fff));\n color: var(--dsw-alias-label-primary, #171719);\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(--dsw-alias-label-primary, #171719);\n box-shadow: 0 0 0 1000px var(--xiaohei-plugin-control-fill, var(--dsw-alias-bg-layer-1, #fff)) inset;\n caret-color: var(--dsw-alias-label-primary, #171719);\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(--dsw-alias-label-secondary, #68686f); 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(--xiaohei-plugin-control-fill, var(--dsw-alias-bg-layer-2, #fff));\n color: var(--dsw-alias-label-primary, #171719);\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(--dsw-alias-interactive-bg-hover, rgba(128, 128, 128, .1));\n color: var(--dsw-alias-label-primary, #171719);\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-status {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n color: var(--dsw-alias-label-tertiary, #6b7280);\n font-size: 12px;\n line-height: 1.5;\n}\n.dsh-knowledge-writeback-status strong {\n color: var(--dsw-alias-label-secondary, #374151);\n font-weight: 600;\n}\n.dsh-knowledge-writeback-status button {\n min-height: 24px;\n padding: 0 9px;\n border: 1px solid var(--dsw-alias-separator, #d1d5db);\n border-radius: 7px;\n color: var(--dsw-alias-label-secondary, #374151);\n background: var(--dsw-alias-button-elevated-fill, #fff);\n cursor: pointer;\n font: inherit;\n}\n.dsh-knowledge-writeback-status button:disabled { cursor: default; opacity: .5; }\n';
|
|
50
|
+
var client_default = '.dsh-knowledge-trigger,\n.dsh-knowledge-workspace,\n.dsh-knowledge-settings-card,\n.dsh-knowledge-writeback-status {\n --knowledge-accent: #3a3a3c;\n --knowledge-on-accent: #fff;\n --knowledge-danger: #d70015;\n --knowledge-success: #248a3d;\n --knowledge-pane: rgb(242 243 247 / 78%);\n --knowledge-raised: #fff;\n --knowledge-control: rgb(255 255 255 / 82%);\n --knowledge-border: rgb(60 60 67 / 14%);\n --knowledge-text: #1d1d1f;\n --knowledge-text-secondary: #515154;\n --knowledge-hover: rgba(118, 118, 128, .1);\n --knowledge-glare-light: rgb(255 255 255 / 82%);\n --knowledge-glare-rim: rgb(60 60 67 / 15%);\n --knowledge-glass-filter: saturate(1.18) contrast(1.025) blur(28px);\n --knowledge-glass-shadow: inset 0 1px 0 rgb(255 255 255 / 58%), inset 0 -1px 0 rgb(60 60 67 / 12%);\n}\n\nbody[data-ds-dark-theme] :is(\n .dsh-knowledge-trigger,\n .dsh-knowledge-workspace,\n .dsh-knowledge-settings-card,\n .dsh-knowledge-writeback-status\n) {\n --knowledge-accent: #e5e5ea;\n --knowledge-on-accent: #1d1d1f;\n --knowledge-danger: #ff453a;\n --knowledge-success: #30d158;\n --knowledge-pane: rgb(8 10 12 / 19%);\n --knowledge-raised: rgb(10 12 15 / 44%);\n --knowledge-control: rgb(255 255 255 / 7%);\n --knowledge-border: rgb(255 255 255 / 10%);\n --knowledge-text: #f5f5f7;\n --knowledge-text-secondary: #d1d1d6;\n --knowledge-hover: rgb(255 255 255 / 8%);\n --knowledge-glare-light: rgb(255 255 255 / 42%);\n --knowledge-glare-rim: rgb(0 0 0 / 24%);\n --knowledge-glass-shadow: inset 0 1px 0 rgb(255 255 255 / 18%), inset 0 -1px 0 rgb(0 0 0 / 30%);\n}\n\n.dsh-knowledge-trigger,\n.dsh-knowledge-panel-state button,\n.dsh-knowledge-settings-card button,\n.dsh-knowledge-writeback-status button {\n -webkit-appearance: none;\n appearance: none;\n margin: 0;\n}\n\n.dsh-knowledge-trigger {\n position: relative;\n flex: none;\n min-width: 0;\n max-width: 100%;\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n height: 34px;\n margin: 4px 0;\n padding: 6px 8px 6px 10px;\n box-sizing: border-box;\n border: 0;\n border-radius: 12px;\n overflow: hidden;\n background: transparent;\n color: var(--dsw-alias-label-primary);\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 > * {\n position: relative;\n z-index: 1;\n}\n\n.dsh-knowledge-trigger::before {\n position: absolute;\n z-index: 0;\n top: -55%;\n bottom: -55%;\n left: -64%;\n width: 52%;\n border-radius: 45%;\n background: linear-gradient(\n 90deg,\n transparent,\n color-mix(in srgb, var(--knowledge-glare-light) 76%, transparent) 50%,\n color-mix(in srgb, var(--knowledge-glare-rim) 18%, transparent) 63%,\n transparent\n );\n opacity: 0;\n transform: skewX(-18deg) translate3d(0, 0, 0);\n pointer-events: none;\n transition:\n opacity 150ms ease-out,\n transform 720ms cubic-bezier(.2, .72, .2, 1);\n content: "";\n}\n\n.dsh-knowledge-trigger:hover::before {\n opacity: .96;\n transform: skewX(-18deg) translate3d(320%, 0, 0);\n}\n\n.dsh-knowledge-trigger:focus-visible,\n.dsh-knowledge-writeback-status 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 4px;\n padding: 0;\n justify-content: center;\n gap: 0;\n border-radius: 50%;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dsh-knowledge-trigger,\n .dsh-knowledge-trigger::before { transition: none; }\n .dsh-knowledge-trigger::before { display: 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: transparent;\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:\n linear-gradient(145deg, color-mix(in srgb, var(--knowledge-glare-light) 20%, transparent), transparent 58%),\n var(--knowledge-pane);\n box-shadow: var(--knowledge-glass-shadow);\n -webkit-backdrop-filter: var(--knowledge-glass-filter);\n backdrop-filter: var(--knowledge-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-xiaohei-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 140ms ease, background 140ms ease, border-color 140ms ease, transform 140ms ease;\n}\n\n.dsh-knowledge-workspace-header [data-xiaohei-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-xiaohei-workspace-close]:active { transform: scale(.96); }\n.dsh-knowledge-workspace-header [data-xiaohei-workspace-close]:focus-visible {\n outline: 2px solid var(--knowledge-accent);\n outline-offset: 2px;\n}\n.dsh-knowledge-workspace-header [data-xiaohei-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}\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-glass-filter);\n backdrop-filter: var(--knowledge-glass-filter);\n color: var(--dsw-alias-label-primary, #171719);\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(--dsw-alias-interactive-bg-hover, rgba(128, 128, 128, .1));\n color: var(--dsw-alias-label-secondary, #68686f);\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(--dsw-alias-label-secondary, #68686f); 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(--dsw-alias-label-primary, #171719);\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 .16s, background .16s, box-shadow .2s, transform .2s cubic-bezier(.22, 1, .36, 1);\n}\n.dsh-knowledge-settings-card:hover {\n border-color: color-mix(in srgb, var(--knowledge-border) 68%, var(--knowledge-text-secondary));\n box-shadow: var(--knowledge-glass-shadow), 0 12px 30px rgb(0 0 0 / 8%);\n transform: translateY(-1px);\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(--dsw-alias-label-tertiary); font-size: 13px; line-height: 1.5; }\n.dsh-knowledge-source-picker small,\n.dsh-knowledge-remote-fields small { color: var(--dsw-alias-label-secondary, #68686f); font-size: 12px; }\n.dsh-knowledge-settings-summary { display: flex; flex: none; align-items: center; gap: 10px; color: var(--dsw-alias-label-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(--dsw-alias-border-l2);\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(--dsw-alias-divider-primary, rgba(128, 128, 128, .2));\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(--dsw-alias-divider-primary, rgba(128, 128, 128, .34));\n border-radius: 50%;\n background: var(--xiaohei-plugin-control-fill, var(--dsw-alias-bg-layer-1, #fff));\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(--dsw-alias-label-secondary, #68686f); 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(--dsw-alias-divider-primary, rgba(128, 128, 128, .25));\n border-radius: 10px;\n outline: none;\n background: var(--xiaohei-plugin-control-fill, var(--dsw-alias-bg-layer-1, #fff));\n color: var(--dsw-alias-label-primary, #171719);\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(--dsw-alias-label-primary, #171719);\n box-shadow: 0 0 0 1000px var(--xiaohei-plugin-control-fill, var(--dsw-alias-bg-layer-1, #fff)) inset;\n caret-color: var(--dsw-alias-label-primary, #171719);\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(--dsw-alias-label-secondary, #68686f); 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(--xiaohei-plugin-control-fill, var(--dsw-alias-bg-layer-2, #fff));\n color: var(--dsw-alias-label-primary, #171719);\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(--dsw-alias-interactive-bg-hover, rgba(128, 128, 128, .1));\n color: var(--dsw-alias-label-primary, #171719);\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-status {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n color: var(--dsw-alias-label-tertiary, #6b7280);\n font-size: 12px;\n line-height: 1.5;\n}\n.dsh-knowledge-writeback-status strong {\n color: var(--dsw-alias-label-secondary, #374151);\n font-weight: 600;\n}\n.dsh-knowledge-writeback-status button {\n min-height: 24px;\n padding: 0 9px;\n border: 1px solid var(--dsw-alias-separator, #d1d5db);\n border-radius: 7px;\n color: var(--dsw-alias-label-secondary, #374151);\n background: var(--dsw-alias-button-elevated-fill, #fff);\n cursor: pointer;\n font: inherit;\n}\n.dsh-knowledge-writeback-status button:disabled { cursor: default; opacity: .5; }\n';
|
|
51
51
|
|
|
52
52
|
// src/constants.ts
|
|
53
53
|
var KNOWLEDGE_SETTINGS_NAMESPACE = "dsh-knowledge-connection";
|
|
@@ -63,6 +63,7 @@ var WORKSPACE_TOKENS = {
|
|
|
63
63
|
"--surface-raised": "#ffffff",
|
|
64
64
|
"--surface-soft": "#eceef1",
|
|
65
65
|
"--surface-hover": "#e5e5e7",
|
|
66
|
+
"--dialog-surface": "#ffffff",
|
|
66
67
|
"--text": "#1d1d1f",
|
|
67
68
|
"--text-secondary": "#515154",
|
|
68
69
|
"--text-tertiary": "#6e6e73",
|
|
@@ -81,11 +82,12 @@ var WORKSPACE_TOKENS = {
|
|
|
81
82
|
"--shadow": "0 24px 64px rgb(0 0 0 / 20%)"
|
|
82
83
|
},
|
|
83
84
|
dark: {
|
|
84
|
-
"--bg": "
|
|
85
|
-
"--surface": "
|
|
86
|
-
"--surface-raised": "
|
|
87
|
-
"--surface-soft": "
|
|
88
|
-
"--surface-hover": "
|
|
85
|
+
"--bg": "transparent",
|
|
86
|
+
"--surface": "rgb(8 10 12 / 20%)",
|
|
87
|
+
"--surface-raised": "rgb(10 12 15 / 44%)",
|
|
88
|
+
"--surface-soft": "rgb(255 255 255 / 6%)",
|
|
89
|
+
"--surface-hover": "rgb(255 255 255 / 7.5%)",
|
|
90
|
+
"--dialog-surface": "rgb(10 12 15 / 72%)",
|
|
89
91
|
"--text": "#f5f5f7",
|
|
90
92
|
"--text-secondary": "#d1d1d6",
|
|
91
93
|
"--text-tertiary": "#98989d",
|
|
@@ -93,15 +95,15 @@ var WORKSPACE_TOKENS = {
|
|
|
93
95
|
"--border-strong": "rgb(255 255 255 / 18%)",
|
|
94
96
|
"--accent": "#e5e5ea",
|
|
95
97
|
"--accent-hover": "#ffffff",
|
|
96
|
-
"--accent-soft": "
|
|
98
|
+
"--accent-soft": "rgb(255 255 255 / 9%)",
|
|
97
99
|
"--on-accent": "#1d1d1f",
|
|
98
100
|
"--success": "#30d158",
|
|
99
|
-
"--success-soft": "
|
|
101
|
+
"--success-soft": "rgb(48 209 88 / 13%)",
|
|
100
102
|
"--warning": "#ff9f0a",
|
|
101
|
-
"--warning-soft": "
|
|
103
|
+
"--warning-soft": "rgb(255 159 10 / 13%)",
|
|
102
104
|
"--danger": "#ff453a",
|
|
103
|
-
"--danger-soft": "
|
|
104
|
-
"--shadow": "0 28px 72px rgb(0 0 0 /
|
|
105
|
+
"--danger-soft": "rgb(255 69 58 / 14%)",
|
|
106
|
+
"--shadow": "0 28px 72px rgb(0 0 0 / 42%)"
|
|
105
107
|
}
|
|
106
108
|
};
|
|
107
109
|
function createKnowledgeHostTheme(_computed, snapshot) {
|
package/lib/client.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/client.tsx", "../src/workspace-ownership.ts", "../src/client.css", "../src/constants.ts", "../src/theme-bridge.ts"],
|
|
4
|
-
"sourcesContent": ["import { useCallback, useEffect, useRef, useState } from 'react'\nimport type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client'\nimport type { PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\nimport type {} from '@deepseek-ai/dsh-client-ui-layout/client'\nimport type {} from '@deepseek-ai/dsh-client-ui-sidebar/client'\nimport type {} from '@deepseek-ai/dsh-client-ui-settings-plugins/client'\nimport type {} from '@deepseek-ai/dsh-client-ui-theme/client'\nimport type {} from '@deepseek-ai/dsh-client-ui-conversation/client'\nimport { activatePluginWorkspace, observePluginWorkspace } from './workspace-ownership.js'\nimport {\n IconChevronLeftOutline14, IconDataOutline16,\n} from '@deepseek-ai/dsh-client-ui-primitives'\nimport cssText from './client.css'\nimport { KNOWLEDGE_SETTINGS_NAMESPACE } from './constants.js'\nimport {\n createKnowledgeHostTheme,\n KNOWLEDGE_THEME_PROTOCOL_VERSION,\n KNOWLEDGE_THEME_READY_MESSAGE,\n type ThemeSnapshotLike,\n} from './theme-bridge.js'\n\nconst PLUGIN_ID = '@lemoncat7/dsh-knowledge'\nconst STYLE_ID = `${PLUGIN_ID}/client`\n\ntype SidebarActionProps = PropsRuntime<'sidebar.footer.action'>\ntype ConversationSlotProps = PropsRuntime<'conversation'>\n\ninterface KnowledgeConnectionView {\n backend: 'local' | 'remote'\n remoteUrl?: string\n remoteTimeoutMs: number\n tokenConfigured: boolean\n canSwitchRemote: boolean\n writable: boolean\n managementAvailable: boolean\n managementPath?: string\n}\n\ninterface KnowledgeWorkspaceController {\n isOpen(): boolean\n toggle(): void\n close(): void\n subscribe(listener: () => void): () => void\n}\n\nconst CONNECTION_CONTROL_PATH = '/knowledge-control/v1/connection'\nlet cachedConnectionView: KnowledgeConnectionView | undefined\n\n/** Cordis services needed by the browser half. */\nexport const inject = ['slots', 'theme']\n\n/** Register the knowledge launcher in the sidebar's official extension slot. */\nexport function apply(ctx: ClientContext): void {\n ctx.effect(installStyles, 'dsh-knowledge: client styles')\n const workspace = createKnowledgeWorkspaceController(ctx)\n ctx.effect(() => observePluginWorkspace(PLUGIN_ID, workspace.close), 'dsh-knowledge: exclusive workspace')\n ctx.effect(() => () => { workspace.close() }, 'dsh-knowledge: workspace lifecycle')\n ctx.slots.inject('sidebar.footer.action', () => ctx.slots.register({\n name: 'sidebar.footer.action',\n id: 'knowledge',\n order: -10,\n }, props => <KnowledgeLauncher {...props} workspace={workspace} />))\n\n ctx.slots.inject('settings.plugin.item', () => ctx.slots.register({\n name: 'settings.plugin.item',\n key: KNOWLEDGE_SETTINGS_NAMESPACE,\n }, KnowledgeConnectionCard))\n\n ctx.slots.inject('conversation.chat.turnTail', () => ctx.slots.register({\n name: 'conversation.chat.turnTail',\n select: owner => ({ turn: owner.turn.turn }),\n }, props => <KnowledgeWritebackStatus sessionId={String(props.sessionId)} turn={props.matched.turn} />))\n}\n\nfunction KnowledgeWritebackStatus({ sessionId, turn }: { sessionId: string; turn: number }) {\n type Status = { status: 'running' | 'completed' | 'failed'; summary: string; error?: string; retryable: boolean }\n const [state, setState] = useState<Status>()\n const [retrying, setRetrying] = useState(false)\n useEffect(() => {\n const controller = new AbortController()\n void fetch(`/knowledge-control/v1/writeback-status?sessionId=${encodeURIComponent(sessionId)}&turn=${turn}`, {\n headers: { accept: 'application/json', 'x-dsh-knowledge-client': 'conversation-web' }, signal: controller.signal,\n }).then(async response => response.ok ? response.json() as Promise<Status> : undefined)\n .then(value => { if (value?.summary) setState(value) })\n .catch(() => {})\n return () => { controller.abort() }\n }, [sessionId, turn])\n if (state === undefined) return null\n const retry = async (): Promise<void> => {\n setRetrying(true)\n try {\n const response = await fetch(`/knowledge-control/v1/writeback-status?sessionId=${encodeURIComponent(sessionId)}&turn=${turn}`, {\n method: 'POST', headers: { accept: 'application/json', 'x-dsh-knowledge-client': 'conversation-web' },\n })\n if (!response.ok) throw new Error(`retry failed with HTTP ${response.status}`)\n setState(await response.json() as Status)\n } catch (error) {\n setState(previous => previous === undefined ? previous : {\n ...previous, error: error instanceof Error ? error.message : String(error), retryable: true,\n })\n } finally { setRetrying(false) }\n }\n return <div className=\"dsh-knowledge-writeback-status\">\n <span>\u4E0A\u4E0B\u6587\u6CE8\u5165</span><strong>dsh-knowledge</strong><span title={state.error}>{state.summary}</span>\n {state.status === 'failed' && state.retryable && <button type=\"button\" disabled={retrying} onClick={() => { void retry() }}>{retrying ? '\u91CD\u8BD5\u4E2D\u2026' : '\u91CD\u8BD5'}</button>}\n </div>\n}\n\nfunction createKnowledgeWorkspaceController(client: ClientContext): KnowledgeWorkspaceController {\n const listeners = new Set<() => void>()\n let disposeWorkspace: (() => void) | undefined\n const notify = (): void => { for (const listener of listeners) listener() }\n const close = (): void => {\n if (disposeWorkspace === undefined) return\n const dispose = disposeWorkspace\n disposeWorkspace = undefined\n dispose()\n notify()\n }\n const controller: KnowledgeWorkspaceController = {\n isOpen: () => disposeWorkspace !== undefined,\n toggle: () => {\n if (disposeWorkspace !== undefined) return close()\n activatePluginWorkspace(PLUGIN_ID)\n const dispose = client.slots.register({ name: 'conversation', priority: -1 }, props => (\n <KnowledgeWorkspace {...props} client={client} workspace={controller} />\n ))\n disposeWorkspace = dispose\n notify()\n },\n close,\n subscribe: listener => {\n listeners.add(listener)\n return () => { listeners.delete(listener) }\n },\n }\n return controller\n}\n\nfunction KnowledgeConnectionCard() {\n const [current, setCurrent] = useState<KnowledgeConnectionView>()\n const [loadState, setLoadState] = useState<'loading' | 'ready' | 'error'>('loading')\n const [loadError, setLoadError] = useState('')\n const [open, setOpen] = useState(false)\n const [backend, setBackend] = useState<'local' | 'remote'>('local')\n const [remoteUrl, setRemoteUrl] = useState('')\n const [remoteToken, setRemoteToken] = useState('')\n const [timeout, setTimeoutValue] = useState('10000')\n const [dirty, setDirty] = useState(false)\n const [saving, setSaving] = useState(false)\n const [message, setMessage] = useState<{ kind: 'success' | 'error'; text: string }>()\n\n const load = useCallback(async (signal?: AbortSignal): Promise<void> => {\n setLoadState('loading')\n setLoadError('')\n try {\n const value = await requestConnection('GET', undefined, signal)\n setCurrent(value)\n setLoadState('ready')\n } catch (error) {\n if (signal?.aborted) return\n setLoadError(connectionErrorMessage(error))\n setLoadState('error')\n }\n }, [])\n\n useEffect(() => {\n const controller = new AbortController()\n void load(controller.signal)\n return () => { controller.abort() }\n }, [load])\n\n useEffect(() => {\n if (dirty || current === undefined) return\n setBackend(current.backend)\n setRemoteUrl(current.remoteUrl ?? '')\n setTimeoutValue(String(current.remoteTimeoutMs ?? 10000))\n }, [current, dirty])\n\n const timeoutNumber = Number(timeout)\n const urlError = backend === 'remote' ? validateRemoteUrl(remoteUrl) : undefined\n const tokenError = backend === 'remote' && !current?.tokenConfigured && remoteToken.trim().length === 0\n ? '\u9996\u6B21\u8FDE\u63A5\u5FC5\u987B\u586B\u5199\u5BA2\u6237\u7AEF\u4EE4\u724C\u3002'\n : remoteToken.length > 0 && remoteToken.trim().length < 24 ? '\u4EE4\u724C\u81F3\u5C11\u9700\u8981 24 \u4E2A\u5B57\u7B26\u3002' : undefined\n const timeoutError = !Number.isInteger(timeoutNumber) || timeoutNumber < 100 || timeoutNumber > 120000\n ? '\u8D85\u65F6\u5FC5\u987B\u662F 100 \u5230 120000 \u6BEB\u79D2\u4E4B\u95F4\u7684\u6574\u6570\u3002'\n : undefined\n const invalid = urlError !== undefined || tokenError !== undefined || timeoutError !== undefined\n\n const edit = (action: () => void): void => {\n action()\n setDirty(true)\n setMessage(undefined)\n }\n const reset = (): void => {\n setBackend(current?.backend ?? 'local')\n setRemoteUrl(current?.remoteUrl ?? '')\n setRemoteToken('')\n setTimeoutValue(String(current?.remoteTimeoutMs ?? 10000))\n setDirty(false)\n setMessage(undefined)\n }\n const save = async (): Promise<void> => {\n if (!dirty || invalid || !current?.writable || saving) return\n setSaving(true)\n setMessage(undefined)\n try {\n const next = await requestConnection('PUT', {\n backend,\n remoteTimeoutMs: timeoutNumber,\n ...backend === 'remote' ? { remoteUrl: remoteUrl.trim() } : {},\n ...backend === 'remote' && remoteToken.trim().length > 0 ? { remoteToken: remoteToken.trim() } : {},\n })\n setCurrent(next)\n setRemoteToken('')\n setDirty(false)\n setMessage({\n kind: 'success',\n text: backend === 'remote' ? '\u5DF2\u9A8C\u8BC1\u5E76\u5207\u6362\u81F3\u8FDC\u7A0B\u77E5\u8BC6\u5E93\u3002' : '\u5DF2\u5207\u6362\u81F3\u672C\u5730\u77E5\u8BC6\u5E93\u3002',\n })\n } catch (error) {\n setMessage({ kind: 'error', text: connectionErrorMessage(error) })\n } finally {\n setSaving(false)\n }\n }\n\n return (\n <li className={`dsh-knowledge-settings-card${open ? ' dsh-knowledge-settings-card--open' : ''}`}>\n <button type=\"button\" className=\"dsh-knowledge-settings-header\" aria-expanded={open} onClick={() => { setOpen(value => !value) }}>\n <span><strong>\u77E5\u8BC6\u5E93\u8FDE\u63A5</strong><small>\u9009\u62E9\u672C\u673A\u77E5\u8BC6\u5E93\uFF0C\u6216\u8FDE\u63A5\u4E00\u53F0\u4E2D\u592E DSH \u77E5\u8BC6\u5E93</small></span>\n <span className=\"dsh-knowledge-settings-summary\">{loadState === 'loading' ? '\u8BFB\u53D6\u4E2D' : loadState === 'error' ? '\u8FDE\u63A5\u5165\u53E3' : current?.backend === 'remote' ? '\u8FDC\u7A0B' : '\u672C\u5730'}<i aria-hidden=\"true\" /></span>\n </button>\n {open && <div className=\"dsh-knowledge-settings-body\">\n {loadState === 'loading' ? <p className=\"dsh-knowledge-settings-note\" role=\"status\">\u6B63\u5728\u8BFB\u53D6\u8FDE\u63A5\u914D\u7F6E\u2026</p>\n : loadState === 'error' ? <div className=\"dsh-knowledge-settings-load-error\" role=\"alert\">\n <p>{loadError}</p>\n <button type=\"button\" onClick={() => { void load() }}>\u91CD\u65B0\u8BFB\u53D6</button>\n </div> : <>\n <fieldset className=\"dsh-knowledge-source-picker\">\n <legend>\u77E5\u8BC6\u5E93\u6765\u6E90</legend>\n <label className={backend === 'local' ? 'is-selected' : ''}>\n <input type=\"radio\" name=\"dsh-knowledge-backend\" checked={backend === 'local'} onChange={() => edit(() => { setBackend('local') })} />\n <span><strong>\u672C\u5730</strong><small>\u6570\u636E\u4FDD\u5B58\u5728\u5F53\u524D DSH \u7684 SQLite \u4E2D</small></span>\n </label>\n <label className={`${backend === 'remote' ? 'is-selected' : ''}${!current?.canSwitchRemote ? ' is-disabled' : ''}`}>\n <input type=\"radio\" name=\"dsh-knowledge-backend\" checked={backend === 'remote'} disabled={!current?.canSwitchRemote} onChange={() => edit(() => { setBackend('remote') })} />\n <span><strong>\u8FDC\u7A0B</strong><small>\u53EC\u56DE\u548C\u56DE\u5199\u7EDF\u4E00\u4F7F\u7528\u4E2D\u592E\u77E5\u8BC6\u5E93</small></span>\n </label>\n </fieldset>\n {!current?.canSwitchRemote && <p className=\"dsh-knowledge-settings-note\">\u5F53\u524D\u5B9E\u4F8B\u662F\u4E2D\u592E\u77E5\u8BC6\u5E93\u670D\u52A1\uFF0C\u4E0D\u80FD\u518D\u5207\u6362\u5230\u53E6\u4E00\u53F0\u8FDC\u7A0B\u670D\u52A1\u3002</p>}\n {backend === 'remote' && <div className=\"dsh-knowledge-remote-fields\">\n <label htmlFor=\"dsh-knowledge-remote-url\">\u670D\u52A1\u5668\u5730\u5740\n <input id=\"dsh-knowledge-remote-url\" type=\"url\" value={remoteUrl} placeholder=\"https://example.com/knowledge-api/v1\" autoComplete=\"url\" onChange={event => edit(() => { setRemoteUrl(event.target.value) })} aria-invalid={urlError !== undefined} aria-describedby={urlError ? 'dsh-knowledge-url-error' : undefined} />\n {urlError && <small id=\"dsh-knowledge-url-error\" className=\"dsh-knowledge-field-error\">{urlError}</small>}\n </label>\n <label htmlFor=\"dsh-knowledge-remote-token\">\u5BA2\u6237\u7AEF\u4EE4\u724C\n <input id=\"dsh-knowledge-remote-token\" type=\"password\" value={remoteToken} placeholder={current?.tokenConfigured ? '\u5DF2\u4FDD\u5B58\uFF1B\u7559\u7A7A\u5219\u4FDD\u6301\u4E0D\u53D8' : '\u7C98\u8D34\u5BA2\u6237\u7AEF\u4EE4\u724C'} autoComplete=\"new-password\" onChange={event => edit(() => { setRemoteToken(event.target.value) })} aria-invalid={tokenError !== undefined} aria-describedby=\"dsh-knowledge-token-help\" />\n <small id=\"dsh-knowledge-token-help\" className={tokenError ? 'dsh-knowledge-field-error' : undefined}>{tokenError ?? (current?.tokenConfigured ? '\u4EE4\u724C\u5DF2\u5B89\u5168\u4FDD\u5B58\uFF0C\u9875\u9762\u65E0\u6CD5\u8BFB\u53D6\uFF1B\u8F93\u5165\u65B0\u4EE4\u724C\u53EF\u8986\u76D6\u3002' : '\u4EE4\u724C\u4FDD\u5B58\u540E\u4E0D\u53EF\u8BFB\u53D6\uFF0C\u53EA\u80FD\u8986\u76D6\u3002')}</small>\n </label>\n </div>}\n <label className=\"dsh-knowledge-timeout-field\" htmlFor=\"dsh-knowledge-timeout\">\u8BF7\u6C42\u8D85\u65F6\uFF08\u6BEB\u79D2\uFF09\n <input id=\"dsh-knowledge-timeout\" type=\"number\" min=\"100\" max=\"120000\" step=\"100\" value={timeout} onChange={event => edit(() => { setTimeoutValue(event.target.value) })} aria-invalid={timeoutError !== undefined} />\n {timeoutError && <small className=\"dsh-knowledge-field-error\">{timeoutError}</small>}\n </label>\n {!current?.writable && <p className=\"dsh-knowledge-settings-note\">\u5F53\u524D\u63D2\u4EF6\u6CA1\u6709\u914D\u7F6E\u6301\u4E45\u5316\u8DEF\u5F84\uFF0C\u65E0\u6CD5\u4FDD\u5B58\u8FDE\u63A5\u3002</p>}\n {message && <p className={`dsh-knowledge-settings-message is-${message.kind}`} role={message.kind === 'error' ? 'alert' : 'status'} aria-live=\"polite\">{message.text}</p>}\n <div className=\"dsh-knowledge-settings-actions\">\n <button type=\"button\" onClick={reset} disabled={!dirty || saving}>\u653E\u5F03\u66F4\u6539</button>\n <button type=\"button\" className=\"is-primary\" onClick={() => { void save() }} disabled={!dirty || invalid || saving || !current?.writable}>{saving ? '\u6B63\u5728\u9A8C\u8BC1\u2026' : '\u9A8C\u8BC1\u5E76\u8FDE\u63A5'}</button>\n </div>\n </>}\n </div>}\n </li>\n )\n}\n\nfunction validateRemoteUrl(value: string): string | undefined {\n try {\n const url = new URL(value.trim())\n const loopback = url.hostname === 'localhost' || url.hostname === '127.0.0.1' || url.hostname === '::1'\n if (url.protocol !== 'https:' && !(url.protocol === 'http:' && loopback)) return '\u8FDC\u7A0B\u77E5\u8BC6\u5E93\u5FC5\u987B\u4F7F\u7528 HTTPS\u3002'\n return undefined\n } catch { return '\u8BF7\u8F93\u5165\u5B8C\u6574\u7684\u77E5\u8BC6\u5E93 API \u5730\u5740\u3002' }\n}\n\nfunction connectionErrorMessage(error: unknown): string {\n const message = error instanceof Error ? error.message : String(error)\n if (message.includes('Failed to fetch')) return '\u65E0\u6CD5\u8BBF\u95EE\u63D2\u4EF6\u8FDE\u63A5\u63A5\u53E3\uFF0C\u8BF7\u786E\u8BA4\u63D2\u4EF6\u670D\u52A1\u5DF2\u52A0\u8F7D\u3002'\n return message || '\u8FDE\u63A5\u914D\u7F6E\u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u5730\u5740\u3001\u4EE4\u724C\u548C DSH \u65E5\u5FD7\u3002'\n}\n\nasync function requestConnection(\n method: 'GET' | 'PUT',\n body?: Record<string, unknown>,\n signal?: AbortSignal,\n): Promise<KnowledgeConnectionView> {\n const response = await fetch(CONNECTION_CONTROL_PATH, {\n method,\n headers: { accept: 'application/json', ...body === undefined ? {} : { 'content-type': 'application/json' } },\n ...body === undefined ? {} : { body: JSON.stringify(body) },\n ...signal === undefined ? {} : { signal },\n })\n const payload = await response.json().catch(() => undefined) as unknown\n if (!response.ok) {\n const message = payload !== null && typeof payload === 'object' && typeof (payload as { error?: unknown }).error === 'string'\n ? (payload as { error: string }).error\n : `\u8FDE\u63A5\u63A5\u53E3\u8FD4\u56DE HTTP ${response.status}`\n throw new Error(message)\n }\n if (!isConnectionView(payload)) throw new Error('\u63D2\u4EF6\u8FDE\u63A5\u63A5\u53E3\u8FD4\u56DE\u4E86\u65E0\u6548\u6570\u636E\u3002')\n cachedConnectionView = payload\n return payload\n}\n\nfunction isConnectionView(value: unknown): value is KnowledgeConnectionView {\n if (value === null || typeof value !== 'object') return false\n const item = value as Partial<KnowledgeConnectionView>\n return (item.backend === 'local' || item.backend === 'remote')\n && Number.isInteger(item.remoteTimeoutMs)\n && typeof item.tokenConfigured === 'boolean'\n && typeof item.canSwitchRemote === 'boolean'\n && typeof item.writable === 'boolean'\n && typeof item.managementAvailable === 'boolean'\n && (!item.managementAvailable || isManagementPath(item.managementPath))\n}\n\nfunction isManagementPath(value: unknown): value is string {\n return typeof value === 'string' && value.startsWith('/') && !value.startsWith('//')\n}\n\nfunction KnowledgeLauncher({ wide, workspace }: SidebarActionProps & { workspace: KnowledgeWorkspaceController }) {\n const [open, setOpen] = useState(workspace.isOpen())\n\n useEffect(() => workspace.subscribe(() => { setOpen(workspace.isOpen()) }), [workspace])\n\n return (\n <button\n type=\"button\"\n className={`dsh-knowledge-trigger${wide ? '' : ' dsh-knowledge-trigger--rail'}${open ? ' is-active' : ''}`}\n aria-label={open ? '\u8FD4\u56DE\u5BF9\u8BDD' : '\u77E5\u8BC6\u5E93'}\n aria-pressed={open}\n title={wide ? undefined : open ? '\u8FD4\u56DE\u5BF9\u8BDD' : '\u77E5\u8BC6\u5E93'}\n onClick={() => { workspace.toggle() }}\n >\n <IconDataOutline16 size={wide ? 16 : 18} />\n {wide && <span>{open ? '\u8FD4\u56DE\u5BF9\u8BDD' : '\u77E5\u8BC6\u5E93'}</span>}\n </button>\n )\n}\n\nfunction KnowledgeWorkspace({\n sessionId,\n useSessions,\n client,\n workspace,\n}: ConversationSlotProps & { client: ClientContext; workspace: KnowledgeWorkspaceController }) {\n const cachedManagementPath = cachedConnectionView?.managementAvailable ? cachedConnectionView.managementPath : undefined\n const [panelState, setPanelState] = useState<'loading' | 'ready' | 'unavailable' | 'error'>(cachedConnectionView === undefined ? 'loading' : cachedManagementPath === undefined ? 'unavailable' : 'ready')\n const [managementPath, setManagementPath] = useState<string | undefined>(cachedManagementPath)\n const [panelError, setPanelError] = useState('')\n const projectId = useSessions(state => sessionId === undefined ? undefined : state.byId[sessionId]?.cwd)\n const knowledgeUrl = managementPath === undefined ? undefined : knowledgePanelUrl(managementPath, sessionId, projectId)\n const frame = useRef<HTMLIFrameElement | null>(null)\n const themeFrame = useRef(0)\n\n const loadManagement = useCallback(async (background = false): Promise<void> => {\n if (!background) setPanelState('loading')\n setPanelError('')\n try {\n const connection = await requestConnection('GET')\n if (!connection.managementAvailable || connection.managementPath === undefined) {\n setManagementPath(undefined)\n setPanelState('unavailable')\n return\n }\n setManagementPath(connection.managementPath)\n setPanelState('ready')\n } catch (error) {\n setManagementPath(undefined)\n setPanelError(connectionErrorMessage(error))\n setPanelState('error')\n }\n }, [])\n\n useEffect(() => {\n void loadManagement(cachedConnectionView !== undefined)\n }, [loadManagement])\n\n const sendTheme = useCallback((): void => {\n const currentFrame = frame.current\n if (currentFrame === null) return\n const target = currentFrame.contentWindow\n if (target === null) return\n const computed = getComputedStyle(document.body)\n target.postMessage(\n createKnowledgeHostTheme(computed, client.theme.getTheme()),\n frameOrigin(currentFrame) ?? '*',\n )\n }, [client])\n\n const scheduleTheme = useCallback((): void => {\n if (themeFrame.current !== 0) window.cancelAnimationFrame(themeFrame.current)\n themeFrame.current = window.requestAnimationFrame(() => {\n themeFrame.current = 0\n sendTheme()\n })\n }, [sendTheme])\n\n useEffect(() => {\n const off = client.on('theme/change', scheduleTheme)\n const onMessage = (event: MessageEvent): void => {\n const currentFrame = frame.current\n if (event.source !== currentFrame?.contentWindow) return\n const expectedOrigin = frameOrigin(currentFrame)\n if (expectedOrigin !== undefined && event.origin !== expectedOrigin) return\n const data = event.data as { type?: unknown; version?: unknown } | null\n if (data?.type === KNOWLEDGE_THEME_READY_MESSAGE && data.version === KNOWLEDGE_THEME_PROTOCOL_VERSION) sendTheme()\n }\n window.addEventListener('message', onMessage)\n scheduleTheme()\n return () => {\n off()\n window.removeEventListener('message', onMessage)\n if (themeFrame.current !== 0) window.cancelAnimationFrame(themeFrame.current)\n }\n }, [client, scheduleTheme, sendTheme])\n\n return (\n <section className=\"dsh-knowledge-workspace\" data-xiaohei-surface=\"plugin-workspace\" aria-labelledby=\"dsh-knowledge-workspace-title\">\n <header className=\"dsh-knowledge-workspace-header\">\n <div>\n <button type=\"button\" data-xiaohei-workspace-close onClick={workspace.close} aria-label=\"\u8FD4\u56DE\u4F1A\u8BDD\" title=\"\u8FD4\u56DE\u4F1A\u8BDD\"><IconChevronLeftOutline14 size={15} /></button>\n <IconDataOutline16 size={18} />\n <span><h2 id=\"dsh-knowledge-workspace-title\">\u77E5\u8BC6\u5E93</h2><p>\u6587\u6863\u3001\u5BA1\u6838\u3001\u6302\u8F7D\u4E0E\u8BBF\u95EE\u7BA1\u7406</p></span>\n </div>\n </header>\n {panelState === 'ready' && knowledgeUrl !== undefined\n ? <iframe ref={frame} className=\"dsh-knowledge-frame\" src={knowledgeUrl} title=\"\u77E5\u8BC6\u5E93\u7BA1\u7406\u53F0\" onLoad={sendTheme} />\n : <div className=\"dsh-knowledge-panel-state\" role={panelState === 'error' ? 'alert' : 'status'} aria-live=\"polite\">\n <span className=\"dsh-knowledge-panel-state-icon\" aria-hidden=\"true\">{panelState === 'loading' ? '\u00B7\u00B7\u00B7' : panelState === 'error' ? '!' : '\u2014'}</span>\n <div>\n <h3>{panelState === 'loading' ? '\u6B63\u5728\u6253\u5F00\u77E5\u8BC6\u5E93\u2026' : panelState === 'error' ? '\u6682\u65F6\u65E0\u6CD5\u6253\u5F00\u77E5\u8BC6\u5E93' : '\u8FD9\u53F0 DSH \u672A\u542F\u7528\u77E5\u8BC6\u5E93\u7BA1\u7406\u53F0'}</h3>\n <p>{panelState === 'loading'\n ? '\u6B63\u5728\u786E\u8BA4\u5F53\u524D\u5B9E\u4F8B\u662F\u5426\u63D0\u4F9B\u7BA1\u7406\u9875\u9762\u3002'\n : panelState === 'error'\n ? panelError\n : '\u672C\u5730\u53EC\u56DE\u548C\u56DE\u5199\u4ECD\u53EF\u4F7F\u7528\u3002\u5F53\u524D profile \u5DF2\u663E\u5F0F\u5173\u95ED exposeWeb\uFF1B\u91CD\u65B0\u542F\u7528\u540E\u5373\u53EF\u5728\u8FD9\u91CC\u7BA1\u7406\u3002\u4F7F\u7528\u8FDC\u7A0B\u77E5\u8BC6\u5E93\u65F6\uFF0C\u8BF7\u524D\u5F80\u4E2D\u592E DSH \u7684\u77E5\u8BC6\u5E93\u7BA1\u7406\u53F0\u3002'}</p>\n {panelState === 'error' && <button type=\"button\" onClick={() => { void loadManagement() }}>\u91CD\u8BD5</button>}\n </div>\n </div>}\n </section>\n )\n}\n\nfunction knowledgePanelUrl(managementPath: string, sessionId?: string, projectId?: string): string {\n const params = new URLSearchParams()\n if (sessionId !== undefined) params.set('sessionId', sessionId)\n if (projectId !== undefined) params.set('projectId', projectId)\n const query = params.toString()\n return query.length === 0 ? managementPath : `${managementPath}${managementPath.includes('?') ? '&' : '?'}${query}`\n}\n\nfunction frameOrigin(frame: HTMLIFrameElement): string | undefined {\n try {\n const origin = new URL(frame.src).origin\n return origin === 'null' ? undefined : origin\n } catch {\n return undefined\n }\n}\n\nfunction installStyles(): () => void {\n const previous = document.querySelector<HTMLStyleElement>(`style[data-plugin-css=\"${STYLE_ID}\"]`)\n previous?.remove()\n const style = document.createElement('style')\n style.dataset.plugin = PLUGIN_ID\n style.dataset.pluginCss = STYLE_ID\n style.textContent = cssText\n document.head.appendChild(style)\n return () => { style.remove() }\n}\n", "const WORKSPACE_ACTIVATE_EVENT = '@lemoncat7/dsh-plugin-ui/workspace-activate'\n\ninterface WorkspaceActivateDetail {\n pluginId: string\n}\n\n/** Claim the conversation workspace while remaining compatible with installed plugin versions. */\nexport function activatePluginWorkspace(pluginId: string): void {\n window.dispatchEvent(new CustomEvent<WorkspaceActivateDetail>(WORKSPACE_ACTIVATE_EVENT, {\n detail: { pluginId },\n }))\n}\n\n/** Close this workspace when another plugin claims the conversation area. */\nexport function observePluginWorkspace(pluginId: string, close: () => void): () => void {\n const onActivate = (event: Event): void => {\n const detail = (event as CustomEvent<WorkspaceActivateDetail>).detail\n if (detail?.pluginId !== pluginId) close()\n }\n window.addEventListener(WORKSPACE_ACTIVATE_EVENT, onActivate)\n return () => window.removeEventListener(WORKSPACE_ACTIVATE_EVENT, onActivate)\n}\n", ".dsh-knowledge-trigger,\n.dsh-knowledge-workspace,\n.dsh-knowledge-settings-card,\n.dsh-knowledge-writeback-status {\n --knowledge-accent: #3a3a3c;\n --knowledge-on-accent: #fff;\n --knowledge-danger: #d70015;\n --knowledge-success: #248a3d;\n --knowledge-pane: rgb(242 243 247 / 78%);\n --knowledge-raised: #fff;\n --knowledge-control: rgb(255 255 255 / 82%);\n --knowledge-border: rgb(60 60 67 / 14%);\n --knowledge-text: #1d1d1f;\n --knowledge-text-secondary: #515154;\n --knowledge-hover: rgba(118, 118, 128, .1);\n --knowledge-glare-light: rgb(255 255 255 / 82%);\n --knowledge-glare-rim: rgb(60 60 67 / 15%);\n --knowledge-glass-filter: saturate(1.2) contrast(1.035) blur(20px);\n --knowledge-glass-shadow: inset 0 1px 0 rgb(255 255 255 / 58%), inset 0 -1px 0 rgb(60 60 67 / 12%);\n}\n\nbody[data-ds-dark-theme] :is(\n .dsh-knowledge-trigger,\n .dsh-knowledge-workspace,\n .dsh-knowledge-settings-card,\n .dsh-knowledge-writeback-status\n) {\n --knowledge-accent: #e5e5ea;\n --knowledge-on-accent: #1d1d1f;\n --knowledge-danger: #ff453a;\n --knowledge-success: #30d158;\n --knowledge-pane: rgb(44 44 46 / 78%);\n --knowledge-raised: #2c2c2e;\n --knowledge-control: rgb(58 58 60 / 88%);\n --knowledge-border: rgb(255 255 255 / 10%);\n --knowledge-text: #f5f5f7;\n --knowledge-text-secondary: #d1d1d6;\n --knowledge-hover: rgb(255 255 255 / 8%);\n --knowledge-glare-light: rgb(255 255 255 / 42%);\n --knowledge-glare-rim: rgb(0 0 0 / 24%);\n --knowledge-glass-shadow: inset 0 1px 0 rgb(255 255 255 / 18%), inset 0 -1px 0 rgb(0 0 0 / 30%);\n}\n\n.dsh-knowledge-trigger,\n.dsh-knowledge-panel-state button,\n.dsh-knowledge-settings-card button,\n.dsh-knowledge-writeback-status button {\n -webkit-appearance: none;\n appearance: none;\n margin: 0;\n}\n\n.dsh-knowledge-trigger {\n position: relative;\n flex: none;\n min-width: 0;\n max-width: 100%;\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n height: 34px;\n margin: 4px 0;\n padding: 6px 8px 6px 10px;\n box-sizing: border-box;\n border: 0;\n border-radius: 12px;\n overflow: hidden;\n background: transparent;\n color: var(--dsw-alias-label-primary);\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 > * {\n position: relative;\n z-index: 1;\n}\n\n.dsh-knowledge-trigger::before {\n position: absolute;\n z-index: 0;\n top: -55%;\n bottom: -55%;\n left: -64%;\n width: 52%;\n border-radius: 45%;\n background: linear-gradient(\n 90deg,\n transparent,\n color-mix(in srgb, var(--knowledge-glare-light) 76%, transparent) 50%,\n color-mix(in srgb, var(--knowledge-glare-rim) 18%, transparent) 63%,\n transparent\n );\n opacity: 0;\n transform: skewX(-18deg) translate3d(0, 0, 0);\n pointer-events: none;\n transition:\n opacity 150ms ease-out,\n transform 720ms cubic-bezier(.2, .72, .2, 1);\n content: \"\";\n}\n\n.dsh-knowledge-trigger:hover::before {\n opacity: .96;\n transform: skewX(-18deg) translate3d(320%, 0, 0);\n}\n\n.dsh-knowledge-trigger:focus-visible,\n.dsh-knowledge-writeback-status 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 4px;\n padding: 0;\n justify-content: center;\n gap: 0;\n border-radius: 50%;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dsh-knowledge-trigger,\n .dsh-knowledge-trigger::before { transition: none; }\n .dsh-knowledge-trigger::before { display: 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-pane);\n -webkit-backdrop-filter: var(--knowledge-glass-filter);\n backdrop-filter: var(--knowledge-glass-filter);\n}\n\n.dsh-knowledge-workspace-header {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n min-height: 56px;\n padding: 8px 16px 8px 20px;\n box-sizing: border-box;\n border-bottom: 1px solid var(--knowledge-border);\n background: var(--knowledge-pane);\n box-shadow: var(--knowledge-glass-shadow);\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-xiaohei-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 140ms ease, background 140ms ease, border-color 140ms ease, transform 140ms ease;\n}\n\n.dsh-knowledge-workspace-header [data-xiaohei-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-xiaohei-workspace-close]:active { transform: scale(.96); }\n.dsh-knowledge-workspace-header [data-xiaohei-workspace-close]:focus-visible {\n outline: 2px solid var(--knowledge-accent);\n outline-offset: 2px;\n}\n.dsh-knowledge-workspace-header [data-xiaohei-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 width: 100%;\n min-height: 0;\n border: 0;\n background: transparent;\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 padding: 32px;\n box-sizing: border-box;\n background: transparent;\n color: var(--dsw-alias-label-primary, #171719);\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(--dsw-alias-interactive-bg-hover, rgba(128, 128, 128, .1));\n color: var(--dsw-alias-label-secondary, #68686f);\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(--dsw-alias-label-secondary, #68686f); 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(--dsw-alias-border-l2);\n border-radius: 12px;\n background: var(--dsw-alias-bg-layer-3);\n color: var(--dsw-alias-label-primary, #171719);\n transition: border-color .16s, background .16s;\n}\n.dsh-knowledge-settings-card:hover { border-color: var(--dsw-alias-label-dimmed); }\n.dsh-knowledge-settings-card--open { border-color: var(--dsw-alias-label-dimmed); background: var(--dsw-alias-bg-layer-2); }\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(--dsw-alias-label-tertiary); font-size: 13px; line-height: 1.5; }\n.dsh-knowledge-source-picker small,\n.dsh-knowledge-remote-fields small { color: var(--dsw-alias-label-secondary, #68686f); font-size: 12px; }\n.dsh-knowledge-settings-summary { display: flex; flex: none; align-items: center; gap: 10px; color: var(--dsw-alias-label-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(--dsw-alias-border-l2);\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(--dsw-alias-divider-primary, rgba(128, 128, 128, .2));\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(--dsw-alias-divider-primary, rgba(128, 128, 128, .34));\n border-radius: 50%;\n background: var(--xiaohei-plugin-control-fill, var(--dsw-alias-bg-layer-1, #fff));\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(--dsw-alias-label-secondary, #68686f); 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(--dsw-alias-divider-primary, rgba(128, 128, 128, .25));\n border-radius: 10px;\n outline: none;\n background: var(--xiaohei-plugin-control-fill, var(--dsw-alias-bg-layer-1, #fff));\n color: var(--dsw-alias-label-primary, #171719);\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(--dsw-alias-label-primary, #171719);\n box-shadow: 0 0 0 1000px var(--xiaohei-plugin-control-fill, var(--dsw-alias-bg-layer-1, #fff)) inset;\n caret-color: var(--dsw-alias-label-primary, #171719);\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(--dsw-alias-label-secondary, #68686f); 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(--xiaohei-plugin-control-fill, var(--dsw-alias-bg-layer-2, #fff));\n color: var(--dsw-alias-label-primary, #171719);\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(--dsw-alias-interactive-bg-hover, rgba(128, 128, 128, .1));\n color: var(--dsw-alias-label-primary, #171719);\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-status {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n color: var(--dsw-alias-label-tertiary, #6b7280);\n font-size: 12px;\n line-height: 1.5;\n}\n.dsh-knowledge-writeback-status strong {\n color: var(--dsw-alias-label-secondary, #374151);\n font-weight: 600;\n}\n.dsh-knowledge-writeback-status button {\n min-height: 24px;\n padding: 0 9px;\n border: 1px solid var(--dsw-alias-separator, #d1d5db);\n border-radius: 7px;\n color: var(--dsw-alias-label-secondary, #374151);\n background: var(--dsw-alias-button-elevated-fill, #fff);\n cursor: pointer;\n font: inherit;\n}\n.dsh-knowledge-writeback-status button:disabled { cursor: default; opacity: .5; }\n", "/** Host settings namespace that makes the knowledge connection card discoverable. */\nexport const KNOWLEDGE_SETTINGS_NAMESPACE = 'dsh-knowledge-connection'\n", "export const KNOWLEDGE_THEME_MESSAGE = '@lemoncat7/dsh-knowledge/host-theme'\nexport const KNOWLEDGE_THEME_READY_MESSAGE = '@lemoncat7/dsh-knowledge/host-theme-ready'\nexport const KNOWLEDGE_THEME_PROTOCOL_VERSION = 1\n\nexport type KnowledgeColorScheme = 'light' | 'dark'\n\nexport interface KnowledgeHostThemeMessage {\n type: typeof KNOWLEDGE_THEME_MESSAGE\n version: typeof KNOWLEDGE_THEME_PROTOCOL_VERSION\n colorScheme: KnowledgeColorScheme\n tokens: Record<string, string>\n}\n\nexport interface ThemeSnapshotLike {\n active: {\n colorScheme: KnowledgeColorScheme\n tokens: Readonly<Record<string, string>>\n }\n}\n\ninterface ComputedStyleLike {\n getPropertyValue(name: string): string\n}\n\n/**\n * The management console lives in its own iframe and therefore owns its\n * component palette. Only the host colour scheme crosses that boundary.\n * Keeping these tokens stable prevents a branded host accent from changing\n * editor selection, navigation and dialog hierarchy independently.\n */\nconst WORKSPACE_TOKENS: Record<KnowledgeColorScheme, Readonly<Record<string, string>>> = {\n light: {\n '--bg': '#e9e9ed', '--surface': '#f2f3f7', '--surface-raised': '#ffffff',\n '--surface-soft': '#eceef1', '--surface-hover': '#e5e5e7',\n '--text': '#1d1d1f', '--text-secondary': '#515154', '--text-tertiary': '#6e6e73',\n '--border': 'rgb(60 60 67 / 14%)', '--border-strong': 'rgb(60 60 67 / 24%)',\n '--accent': '#3a3a3c', '--accent-hover': '#1d1d1f', '--accent-soft': '#e2e2e5', '--on-accent': '#ffffff',\n '--success': '#248a3d', '--success-soft': '#e8f5eb', '--warning': '#c93400', '--warning-soft': '#fff1e8',\n '--danger': '#d70015', '--danger-soft': '#ffebed', '--shadow': '0 24px 64px rgb(0 0 0 / 20%)',\n },\n dark: {\n '--bg': '#1c1c1e', '--surface': '#242426', '--surface-raised': '#2c2c2e',\n '--surface-soft': '#3a3a3c', '--surface-hover': '#414145',\n '--text': '#f5f5f7', '--text-secondary': '#d1d1d6', '--text-tertiary': '#98989d',\n '--border': 'rgb(255 255 255 / 10%)', '--border-strong': 'rgb(255 255 255 / 18%)',\n '--accent': '#e5e5ea', '--accent-hover': '#ffffff', '--accent-soft': '#3a3a3c', '--on-accent': '#1d1d1f',\n '--success': '#30d158', '--success-soft': '#173a22', '--warning': '#ff9f0a', '--warning-soft': '#422f10',\n '--danger': '#ff453a', '--danger-soft': '#4a2020', '--shadow': '0 28px 72px rgb(0 0 0 / 48%)',\n },\n}\n\n/** Synchronise host light/dark mode while preserving one coherent workspace palette. */\nexport function createKnowledgeHostTheme(\n _computed: ComputedStyleLike,\n snapshot: ThemeSnapshotLike,\n): KnowledgeHostThemeMessage {\n return {\n type: KNOWLEDGE_THEME_MESSAGE,\n version: KNOWLEDGE_THEME_PROTOCOL_VERSION,\n colorScheme: snapshot.active.colorScheme,\n tokens: { ...WORKSPACE_TOKENS[snapshot.active.colorScheme] },\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { useCallback, useEffect, useRef, useState } from 'react'\nimport type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client'\nimport type { PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\nimport type {} from '@deepseek-ai/dsh-client-ui-layout/client'\nimport type {} from '@deepseek-ai/dsh-client-ui-sidebar/client'\nimport type {} from '@deepseek-ai/dsh-client-ui-settings-plugins/client'\nimport type {} from '@deepseek-ai/dsh-client-ui-theme/client'\nimport type {} from '@deepseek-ai/dsh-client-ui-conversation/client'\nimport { activatePluginWorkspace, observePluginWorkspace } from './workspace-ownership.js'\nimport {\n IconChevronLeftOutline14, IconDataOutline16,\n} from '@deepseek-ai/dsh-client-ui-primitives'\nimport cssText from './client.css'\nimport { KNOWLEDGE_SETTINGS_NAMESPACE } from './constants.js'\nimport {\n createKnowledgeHostTheme,\n KNOWLEDGE_THEME_PROTOCOL_VERSION,\n KNOWLEDGE_THEME_READY_MESSAGE,\n type ThemeSnapshotLike,\n} from './theme-bridge.js'\n\nconst PLUGIN_ID = '@lemoncat7/dsh-knowledge'\nconst STYLE_ID = `${PLUGIN_ID}/client`\n\ntype SidebarActionProps = PropsRuntime<'sidebar.footer.action'>\ntype ConversationSlotProps = PropsRuntime<'conversation'>\n\ninterface KnowledgeConnectionView {\n backend: 'local' | 'remote'\n remoteUrl?: string\n remoteTimeoutMs: number\n tokenConfigured: boolean\n canSwitchRemote: boolean\n writable: boolean\n managementAvailable: boolean\n managementPath?: string\n}\n\ninterface KnowledgeWorkspaceController {\n isOpen(): boolean\n toggle(): void\n close(): void\n subscribe(listener: () => void): () => void\n}\n\nconst CONNECTION_CONTROL_PATH = '/knowledge-control/v1/connection'\nlet cachedConnectionView: KnowledgeConnectionView | undefined\n\n/** Cordis services needed by the browser half. */\nexport const inject = ['slots', 'theme']\n\n/** Register the knowledge launcher in the sidebar's official extension slot. */\nexport function apply(ctx: ClientContext): void {\n ctx.effect(installStyles, 'dsh-knowledge: client styles')\n const workspace = createKnowledgeWorkspaceController(ctx)\n ctx.effect(() => observePluginWorkspace(PLUGIN_ID, workspace.close), 'dsh-knowledge: exclusive workspace')\n ctx.effect(() => () => { workspace.close() }, 'dsh-knowledge: workspace lifecycle')\n ctx.slots.inject('sidebar.footer.action', () => ctx.slots.register({\n name: 'sidebar.footer.action',\n id: 'knowledge',\n order: -10,\n }, props => <KnowledgeLauncher {...props} workspace={workspace} />))\n\n ctx.slots.inject('settings.plugin.item', () => ctx.slots.register({\n name: 'settings.plugin.item',\n key: KNOWLEDGE_SETTINGS_NAMESPACE,\n }, KnowledgeConnectionCard))\n\n ctx.slots.inject('conversation.chat.turnTail', () => ctx.slots.register({\n name: 'conversation.chat.turnTail',\n select: owner => ({ turn: owner.turn.turn }),\n }, props => <KnowledgeWritebackStatus sessionId={String(props.sessionId)} turn={props.matched.turn} />))\n}\n\nfunction KnowledgeWritebackStatus({ sessionId, turn }: { sessionId: string; turn: number }) {\n type Status = { status: 'running' | 'completed' | 'failed'; summary: string; error?: string; retryable: boolean }\n const [state, setState] = useState<Status>()\n const [retrying, setRetrying] = useState(false)\n useEffect(() => {\n const controller = new AbortController()\n void fetch(`/knowledge-control/v1/writeback-status?sessionId=${encodeURIComponent(sessionId)}&turn=${turn}`, {\n headers: { accept: 'application/json', 'x-dsh-knowledge-client': 'conversation-web' }, signal: controller.signal,\n }).then(async response => response.ok ? response.json() as Promise<Status> : undefined)\n .then(value => { if (value?.summary) setState(value) })\n .catch(() => {})\n return () => { controller.abort() }\n }, [sessionId, turn])\n if (state === undefined) return null\n const retry = async (): Promise<void> => {\n setRetrying(true)\n try {\n const response = await fetch(`/knowledge-control/v1/writeback-status?sessionId=${encodeURIComponent(sessionId)}&turn=${turn}`, {\n method: 'POST', headers: { accept: 'application/json', 'x-dsh-knowledge-client': 'conversation-web' },\n })\n if (!response.ok) throw new Error(`retry failed with HTTP ${response.status}`)\n setState(await response.json() as Status)\n } catch (error) {\n setState(previous => previous === undefined ? previous : {\n ...previous, error: error instanceof Error ? error.message : String(error), retryable: true,\n })\n } finally { setRetrying(false) }\n }\n return <div className=\"dsh-knowledge-writeback-status\">\n <span>\u4E0A\u4E0B\u6587\u6CE8\u5165</span><strong>dsh-knowledge</strong><span title={state.error}>{state.summary}</span>\n {state.status === 'failed' && state.retryable && <button type=\"button\" disabled={retrying} onClick={() => { void retry() }}>{retrying ? '\u91CD\u8BD5\u4E2D\u2026' : '\u91CD\u8BD5'}</button>}\n </div>\n}\n\nfunction createKnowledgeWorkspaceController(client: ClientContext): KnowledgeWorkspaceController {\n const listeners = new Set<() => void>()\n let disposeWorkspace: (() => void) | undefined\n const notify = (): void => { for (const listener of listeners) listener() }\n const close = (): void => {\n if (disposeWorkspace === undefined) return\n const dispose = disposeWorkspace\n disposeWorkspace = undefined\n dispose()\n notify()\n }\n const controller: KnowledgeWorkspaceController = {\n isOpen: () => disposeWorkspace !== undefined,\n toggle: () => {\n if (disposeWorkspace !== undefined) return close()\n activatePluginWorkspace(PLUGIN_ID)\n const dispose = client.slots.register({ name: 'conversation', priority: -1 }, props => (\n <KnowledgeWorkspace {...props} client={client} workspace={controller} />\n ))\n disposeWorkspace = dispose\n notify()\n },\n close,\n subscribe: listener => {\n listeners.add(listener)\n return () => { listeners.delete(listener) }\n },\n }\n return controller\n}\n\nfunction KnowledgeConnectionCard() {\n const [current, setCurrent] = useState<KnowledgeConnectionView>()\n const [loadState, setLoadState] = useState<'loading' | 'ready' | 'error'>('loading')\n const [loadError, setLoadError] = useState('')\n const [open, setOpen] = useState(false)\n const [backend, setBackend] = useState<'local' | 'remote'>('local')\n const [remoteUrl, setRemoteUrl] = useState('')\n const [remoteToken, setRemoteToken] = useState('')\n const [timeout, setTimeoutValue] = useState('10000')\n const [dirty, setDirty] = useState(false)\n const [saving, setSaving] = useState(false)\n const [message, setMessage] = useState<{ kind: 'success' | 'error'; text: string }>()\n\n const load = useCallback(async (signal?: AbortSignal): Promise<void> => {\n setLoadState('loading')\n setLoadError('')\n try {\n const value = await requestConnection('GET', undefined, signal)\n setCurrent(value)\n setLoadState('ready')\n } catch (error) {\n if (signal?.aborted) return\n setLoadError(connectionErrorMessage(error))\n setLoadState('error')\n }\n }, [])\n\n useEffect(() => {\n const controller = new AbortController()\n void load(controller.signal)\n return () => { controller.abort() }\n }, [load])\n\n useEffect(() => {\n if (dirty || current === undefined) return\n setBackend(current.backend)\n setRemoteUrl(current.remoteUrl ?? '')\n setTimeoutValue(String(current.remoteTimeoutMs ?? 10000))\n }, [current, dirty])\n\n const timeoutNumber = Number(timeout)\n const urlError = backend === 'remote' ? validateRemoteUrl(remoteUrl) : undefined\n const tokenError = backend === 'remote' && !current?.tokenConfigured && remoteToken.trim().length === 0\n ? '\u9996\u6B21\u8FDE\u63A5\u5FC5\u987B\u586B\u5199\u5BA2\u6237\u7AEF\u4EE4\u724C\u3002'\n : remoteToken.length > 0 && remoteToken.trim().length < 24 ? '\u4EE4\u724C\u81F3\u5C11\u9700\u8981 24 \u4E2A\u5B57\u7B26\u3002' : undefined\n const timeoutError = !Number.isInteger(timeoutNumber) || timeoutNumber < 100 || timeoutNumber > 120000\n ? '\u8D85\u65F6\u5FC5\u987B\u662F 100 \u5230 120000 \u6BEB\u79D2\u4E4B\u95F4\u7684\u6574\u6570\u3002'\n : undefined\n const invalid = urlError !== undefined || tokenError !== undefined || timeoutError !== undefined\n\n const edit = (action: () => void): void => {\n action()\n setDirty(true)\n setMessage(undefined)\n }\n const reset = (): void => {\n setBackend(current?.backend ?? 'local')\n setRemoteUrl(current?.remoteUrl ?? '')\n setRemoteToken('')\n setTimeoutValue(String(current?.remoteTimeoutMs ?? 10000))\n setDirty(false)\n setMessage(undefined)\n }\n const save = async (): Promise<void> => {\n if (!dirty || invalid || !current?.writable || saving) return\n setSaving(true)\n setMessage(undefined)\n try {\n const next = await requestConnection('PUT', {\n backend,\n remoteTimeoutMs: timeoutNumber,\n ...backend === 'remote' ? { remoteUrl: remoteUrl.trim() } : {},\n ...backend === 'remote' && remoteToken.trim().length > 0 ? { remoteToken: remoteToken.trim() } : {},\n })\n setCurrent(next)\n setRemoteToken('')\n setDirty(false)\n setMessage({\n kind: 'success',\n text: backend === 'remote' ? '\u5DF2\u9A8C\u8BC1\u5E76\u5207\u6362\u81F3\u8FDC\u7A0B\u77E5\u8BC6\u5E93\u3002' : '\u5DF2\u5207\u6362\u81F3\u672C\u5730\u77E5\u8BC6\u5E93\u3002',\n })\n } catch (error) {\n setMessage({ kind: 'error', text: connectionErrorMessage(error) })\n } finally {\n setSaving(false)\n }\n }\n\n return (\n <li className={`dsh-knowledge-settings-card${open ? ' dsh-knowledge-settings-card--open' : ''}`}>\n <button type=\"button\" className=\"dsh-knowledge-settings-header\" aria-expanded={open} onClick={() => { setOpen(value => !value) }}>\n <span><strong>\u77E5\u8BC6\u5E93\u8FDE\u63A5</strong><small>\u9009\u62E9\u672C\u673A\u77E5\u8BC6\u5E93\uFF0C\u6216\u8FDE\u63A5\u4E00\u53F0\u4E2D\u592E DSH \u77E5\u8BC6\u5E93</small></span>\n <span className=\"dsh-knowledge-settings-summary\">{loadState === 'loading' ? '\u8BFB\u53D6\u4E2D' : loadState === 'error' ? '\u8FDE\u63A5\u5165\u53E3' : current?.backend === 'remote' ? '\u8FDC\u7A0B' : '\u672C\u5730'}<i aria-hidden=\"true\" /></span>\n </button>\n {open && <div className=\"dsh-knowledge-settings-body\">\n {loadState === 'loading' ? <p className=\"dsh-knowledge-settings-note\" role=\"status\">\u6B63\u5728\u8BFB\u53D6\u8FDE\u63A5\u914D\u7F6E\u2026</p>\n : loadState === 'error' ? <div className=\"dsh-knowledge-settings-load-error\" role=\"alert\">\n <p>{loadError}</p>\n <button type=\"button\" onClick={() => { void load() }}>\u91CD\u65B0\u8BFB\u53D6</button>\n </div> : <>\n <fieldset className=\"dsh-knowledge-source-picker\">\n <legend>\u77E5\u8BC6\u5E93\u6765\u6E90</legend>\n <label className={backend === 'local' ? 'is-selected' : ''}>\n <input type=\"radio\" name=\"dsh-knowledge-backend\" checked={backend === 'local'} onChange={() => edit(() => { setBackend('local') })} />\n <span><strong>\u672C\u5730</strong><small>\u6570\u636E\u4FDD\u5B58\u5728\u5F53\u524D DSH \u7684 SQLite \u4E2D</small></span>\n </label>\n <label className={`${backend === 'remote' ? 'is-selected' : ''}${!current?.canSwitchRemote ? ' is-disabled' : ''}`}>\n <input type=\"radio\" name=\"dsh-knowledge-backend\" checked={backend === 'remote'} disabled={!current?.canSwitchRemote} onChange={() => edit(() => { setBackend('remote') })} />\n <span><strong>\u8FDC\u7A0B</strong><small>\u53EC\u56DE\u548C\u56DE\u5199\u7EDF\u4E00\u4F7F\u7528\u4E2D\u592E\u77E5\u8BC6\u5E93</small></span>\n </label>\n </fieldset>\n {!current?.canSwitchRemote && <p className=\"dsh-knowledge-settings-note\">\u5F53\u524D\u5B9E\u4F8B\u662F\u4E2D\u592E\u77E5\u8BC6\u5E93\u670D\u52A1\uFF0C\u4E0D\u80FD\u518D\u5207\u6362\u5230\u53E6\u4E00\u53F0\u8FDC\u7A0B\u670D\u52A1\u3002</p>}\n {backend === 'remote' && <div className=\"dsh-knowledge-remote-fields\">\n <label htmlFor=\"dsh-knowledge-remote-url\">\u670D\u52A1\u5668\u5730\u5740\n <input id=\"dsh-knowledge-remote-url\" type=\"url\" value={remoteUrl} placeholder=\"https://example.com/knowledge-api/v1\" autoComplete=\"url\" onChange={event => edit(() => { setRemoteUrl(event.target.value) })} aria-invalid={urlError !== undefined} aria-describedby={urlError ? 'dsh-knowledge-url-error' : undefined} />\n {urlError && <small id=\"dsh-knowledge-url-error\" className=\"dsh-knowledge-field-error\">{urlError}</small>}\n </label>\n <label htmlFor=\"dsh-knowledge-remote-token\">\u5BA2\u6237\u7AEF\u4EE4\u724C\n <input id=\"dsh-knowledge-remote-token\" type=\"password\" value={remoteToken} placeholder={current?.tokenConfigured ? '\u5DF2\u4FDD\u5B58\uFF1B\u7559\u7A7A\u5219\u4FDD\u6301\u4E0D\u53D8' : '\u7C98\u8D34\u5BA2\u6237\u7AEF\u4EE4\u724C'} autoComplete=\"new-password\" onChange={event => edit(() => { setRemoteToken(event.target.value) })} aria-invalid={tokenError !== undefined} aria-describedby=\"dsh-knowledge-token-help\" />\n <small id=\"dsh-knowledge-token-help\" className={tokenError ? 'dsh-knowledge-field-error' : undefined}>{tokenError ?? (current?.tokenConfigured ? '\u4EE4\u724C\u5DF2\u5B89\u5168\u4FDD\u5B58\uFF0C\u9875\u9762\u65E0\u6CD5\u8BFB\u53D6\uFF1B\u8F93\u5165\u65B0\u4EE4\u724C\u53EF\u8986\u76D6\u3002' : '\u4EE4\u724C\u4FDD\u5B58\u540E\u4E0D\u53EF\u8BFB\u53D6\uFF0C\u53EA\u80FD\u8986\u76D6\u3002')}</small>\n </label>\n </div>}\n <label className=\"dsh-knowledge-timeout-field\" htmlFor=\"dsh-knowledge-timeout\">\u8BF7\u6C42\u8D85\u65F6\uFF08\u6BEB\u79D2\uFF09\n <input id=\"dsh-knowledge-timeout\" type=\"number\" min=\"100\" max=\"120000\" step=\"100\" value={timeout} onChange={event => edit(() => { setTimeoutValue(event.target.value) })} aria-invalid={timeoutError !== undefined} />\n {timeoutError && <small className=\"dsh-knowledge-field-error\">{timeoutError}</small>}\n </label>\n {!current?.writable && <p className=\"dsh-knowledge-settings-note\">\u5F53\u524D\u63D2\u4EF6\u6CA1\u6709\u914D\u7F6E\u6301\u4E45\u5316\u8DEF\u5F84\uFF0C\u65E0\u6CD5\u4FDD\u5B58\u8FDE\u63A5\u3002</p>}\n {message && <p className={`dsh-knowledge-settings-message is-${message.kind}`} role={message.kind === 'error' ? 'alert' : 'status'} aria-live=\"polite\">{message.text}</p>}\n <div className=\"dsh-knowledge-settings-actions\">\n <button type=\"button\" onClick={reset} disabled={!dirty || saving}>\u653E\u5F03\u66F4\u6539</button>\n <button type=\"button\" className=\"is-primary\" onClick={() => { void save() }} disabled={!dirty || invalid || saving || !current?.writable}>{saving ? '\u6B63\u5728\u9A8C\u8BC1\u2026' : '\u9A8C\u8BC1\u5E76\u8FDE\u63A5'}</button>\n </div>\n </>}\n </div>}\n </li>\n )\n}\n\nfunction validateRemoteUrl(value: string): string | undefined {\n try {\n const url = new URL(value.trim())\n const loopback = url.hostname === 'localhost' || url.hostname === '127.0.0.1' || url.hostname === '::1'\n if (url.protocol !== 'https:' && !(url.protocol === 'http:' && loopback)) return '\u8FDC\u7A0B\u77E5\u8BC6\u5E93\u5FC5\u987B\u4F7F\u7528 HTTPS\u3002'\n return undefined\n } catch { return '\u8BF7\u8F93\u5165\u5B8C\u6574\u7684\u77E5\u8BC6\u5E93 API \u5730\u5740\u3002' }\n}\n\nfunction connectionErrorMessage(error: unknown): string {\n const message = error instanceof Error ? error.message : String(error)\n if (message.includes('Failed to fetch')) return '\u65E0\u6CD5\u8BBF\u95EE\u63D2\u4EF6\u8FDE\u63A5\u63A5\u53E3\uFF0C\u8BF7\u786E\u8BA4\u63D2\u4EF6\u670D\u52A1\u5DF2\u52A0\u8F7D\u3002'\n return message || '\u8FDE\u63A5\u914D\u7F6E\u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u5730\u5740\u3001\u4EE4\u724C\u548C DSH \u65E5\u5FD7\u3002'\n}\n\nasync function requestConnection(\n method: 'GET' | 'PUT',\n body?: Record<string, unknown>,\n signal?: AbortSignal,\n): Promise<KnowledgeConnectionView> {\n const response = await fetch(CONNECTION_CONTROL_PATH, {\n method,\n headers: { accept: 'application/json', ...body === undefined ? {} : { 'content-type': 'application/json' } },\n ...body === undefined ? {} : { body: JSON.stringify(body) },\n ...signal === undefined ? {} : { signal },\n })\n const payload = await response.json().catch(() => undefined) as unknown\n if (!response.ok) {\n const message = payload !== null && typeof payload === 'object' && typeof (payload as { error?: unknown }).error === 'string'\n ? (payload as { error: string }).error\n : `\u8FDE\u63A5\u63A5\u53E3\u8FD4\u56DE HTTP ${response.status}`\n throw new Error(message)\n }\n if (!isConnectionView(payload)) throw new Error('\u63D2\u4EF6\u8FDE\u63A5\u63A5\u53E3\u8FD4\u56DE\u4E86\u65E0\u6548\u6570\u636E\u3002')\n cachedConnectionView = payload\n return payload\n}\n\nfunction isConnectionView(value: unknown): value is KnowledgeConnectionView {\n if (value === null || typeof value !== 'object') return false\n const item = value as Partial<KnowledgeConnectionView>\n return (item.backend === 'local' || item.backend === 'remote')\n && Number.isInteger(item.remoteTimeoutMs)\n && typeof item.tokenConfigured === 'boolean'\n && typeof item.canSwitchRemote === 'boolean'\n && typeof item.writable === 'boolean'\n && typeof item.managementAvailable === 'boolean'\n && (!item.managementAvailable || isManagementPath(item.managementPath))\n}\n\nfunction isManagementPath(value: unknown): value is string {\n return typeof value === 'string' && value.startsWith('/') && !value.startsWith('//')\n}\n\nfunction KnowledgeLauncher({ wide, workspace }: SidebarActionProps & { workspace: KnowledgeWorkspaceController }) {\n const [open, setOpen] = useState(workspace.isOpen())\n\n useEffect(() => workspace.subscribe(() => { setOpen(workspace.isOpen()) }), [workspace])\n\n return (\n <button\n type=\"button\"\n className={`dsh-knowledge-trigger${wide ? '' : ' dsh-knowledge-trigger--rail'}${open ? ' is-active' : ''}`}\n aria-label={open ? '\u8FD4\u56DE\u5BF9\u8BDD' : '\u77E5\u8BC6\u5E93'}\n aria-pressed={open}\n title={wide ? undefined : open ? '\u8FD4\u56DE\u5BF9\u8BDD' : '\u77E5\u8BC6\u5E93'}\n onClick={() => { workspace.toggle() }}\n >\n <IconDataOutline16 size={wide ? 16 : 18} />\n {wide && <span>{open ? '\u8FD4\u56DE\u5BF9\u8BDD' : '\u77E5\u8BC6\u5E93'}</span>}\n </button>\n )\n}\n\nfunction KnowledgeWorkspace({\n sessionId,\n useSessions,\n client,\n workspace,\n}: ConversationSlotProps & { client: ClientContext; workspace: KnowledgeWorkspaceController }) {\n const cachedManagementPath = cachedConnectionView?.managementAvailable ? cachedConnectionView.managementPath : undefined\n const [panelState, setPanelState] = useState<'loading' | 'ready' | 'unavailable' | 'error'>(cachedConnectionView === undefined ? 'loading' : cachedManagementPath === undefined ? 'unavailable' : 'ready')\n const [managementPath, setManagementPath] = useState<string | undefined>(cachedManagementPath)\n const [panelError, setPanelError] = useState('')\n const projectId = useSessions(state => sessionId === undefined ? undefined : state.byId[sessionId]?.cwd)\n const knowledgeUrl = managementPath === undefined ? undefined : knowledgePanelUrl(managementPath, sessionId, projectId)\n const frame = useRef<HTMLIFrameElement | null>(null)\n const themeFrame = useRef(0)\n\n const loadManagement = useCallback(async (background = false): Promise<void> => {\n if (!background) setPanelState('loading')\n setPanelError('')\n try {\n const connection = await requestConnection('GET')\n if (!connection.managementAvailable || connection.managementPath === undefined) {\n setManagementPath(undefined)\n setPanelState('unavailable')\n return\n }\n setManagementPath(connection.managementPath)\n setPanelState('ready')\n } catch (error) {\n setManagementPath(undefined)\n setPanelError(connectionErrorMessage(error))\n setPanelState('error')\n }\n }, [])\n\n useEffect(() => {\n void loadManagement(cachedConnectionView !== undefined)\n }, [loadManagement])\n\n const sendTheme = useCallback((): void => {\n const currentFrame = frame.current\n if (currentFrame === null) return\n const target = currentFrame.contentWindow\n if (target === null) return\n const computed = getComputedStyle(document.body)\n target.postMessage(\n createKnowledgeHostTheme(computed, client.theme.getTheme()),\n frameOrigin(currentFrame) ?? '*',\n )\n }, [client])\n\n const scheduleTheme = useCallback((): void => {\n if (themeFrame.current !== 0) window.cancelAnimationFrame(themeFrame.current)\n themeFrame.current = window.requestAnimationFrame(() => {\n themeFrame.current = 0\n sendTheme()\n })\n }, [sendTheme])\n\n useEffect(() => {\n const off = client.on('theme/change', scheduleTheme)\n const onMessage = (event: MessageEvent): void => {\n const currentFrame = frame.current\n if (event.source !== currentFrame?.contentWindow) return\n const expectedOrigin = frameOrigin(currentFrame)\n if (expectedOrigin !== undefined && event.origin !== expectedOrigin) return\n const data = event.data as { type?: unknown; version?: unknown } | null\n if (data?.type === KNOWLEDGE_THEME_READY_MESSAGE && data.version === KNOWLEDGE_THEME_PROTOCOL_VERSION) sendTheme()\n }\n window.addEventListener('message', onMessage)\n scheduleTheme()\n return () => {\n off()\n window.removeEventListener('message', onMessage)\n if (themeFrame.current !== 0) window.cancelAnimationFrame(themeFrame.current)\n }\n }, [client, scheduleTheme, sendTheme])\n\n return (\n <section className=\"dsh-knowledge-workspace\" data-xiaohei-surface=\"plugin-workspace\" aria-labelledby=\"dsh-knowledge-workspace-title\">\n <header className=\"dsh-knowledge-workspace-header\">\n <div>\n <button type=\"button\" data-xiaohei-workspace-close onClick={workspace.close} aria-label=\"\u8FD4\u56DE\u4F1A\u8BDD\" title=\"\u8FD4\u56DE\u4F1A\u8BDD\"><IconChevronLeftOutline14 size={15} /></button>\n <IconDataOutline16 size={18} />\n <span><h2 id=\"dsh-knowledge-workspace-title\">\u77E5\u8BC6\u5E93</h2><p>\u6587\u6863\u3001\u5BA1\u6838\u3001\u6302\u8F7D\u4E0E\u8BBF\u95EE\u7BA1\u7406</p></span>\n </div>\n </header>\n {panelState === 'ready' && knowledgeUrl !== undefined\n ? <iframe ref={frame} className=\"dsh-knowledge-frame\" src={knowledgeUrl} title=\"\u77E5\u8BC6\u5E93\u7BA1\u7406\u53F0\" onLoad={sendTheme} />\n : <div className=\"dsh-knowledge-panel-state\" role={panelState === 'error' ? 'alert' : 'status'} aria-live=\"polite\">\n <span className=\"dsh-knowledge-panel-state-icon\" aria-hidden=\"true\">{panelState === 'loading' ? '\u00B7\u00B7\u00B7' : panelState === 'error' ? '!' : '\u2014'}</span>\n <div>\n <h3>{panelState === 'loading' ? '\u6B63\u5728\u6253\u5F00\u77E5\u8BC6\u5E93\u2026' : panelState === 'error' ? '\u6682\u65F6\u65E0\u6CD5\u6253\u5F00\u77E5\u8BC6\u5E93' : '\u8FD9\u53F0 DSH \u672A\u542F\u7528\u77E5\u8BC6\u5E93\u7BA1\u7406\u53F0'}</h3>\n <p>{panelState === 'loading'\n ? '\u6B63\u5728\u786E\u8BA4\u5F53\u524D\u5B9E\u4F8B\u662F\u5426\u63D0\u4F9B\u7BA1\u7406\u9875\u9762\u3002'\n : panelState === 'error'\n ? panelError\n : '\u672C\u5730\u53EC\u56DE\u548C\u56DE\u5199\u4ECD\u53EF\u4F7F\u7528\u3002\u5F53\u524D profile \u5DF2\u663E\u5F0F\u5173\u95ED exposeWeb\uFF1B\u91CD\u65B0\u542F\u7528\u540E\u5373\u53EF\u5728\u8FD9\u91CC\u7BA1\u7406\u3002\u4F7F\u7528\u8FDC\u7A0B\u77E5\u8BC6\u5E93\u65F6\uFF0C\u8BF7\u524D\u5F80\u4E2D\u592E DSH \u7684\u77E5\u8BC6\u5E93\u7BA1\u7406\u53F0\u3002'}</p>\n {panelState === 'error' && <button type=\"button\" onClick={() => { void loadManagement() }}>\u91CD\u8BD5</button>}\n </div>\n </div>}\n </section>\n )\n}\n\nfunction knowledgePanelUrl(managementPath: string, sessionId?: string, projectId?: string): string {\n const params = new URLSearchParams()\n if (sessionId !== undefined) params.set('sessionId', sessionId)\n if (projectId !== undefined) params.set('projectId', projectId)\n const query = params.toString()\n return query.length === 0 ? managementPath : `${managementPath}${managementPath.includes('?') ? '&' : '?'}${query}`\n}\n\nfunction frameOrigin(frame: HTMLIFrameElement): string | undefined {\n try {\n const origin = new URL(frame.src).origin\n return origin === 'null' ? undefined : origin\n } catch {\n return undefined\n }\n}\n\nfunction installStyles(): () => void {\n const previous = document.querySelector<HTMLStyleElement>(`style[data-plugin-css=\"${STYLE_ID}\"]`)\n previous?.remove()\n const style = document.createElement('style')\n style.dataset.plugin = PLUGIN_ID\n style.dataset.pluginCss = STYLE_ID\n style.textContent = cssText\n document.head.appendChild(style)\n return () => { style.remove() }\n}\n", "const WORKSPACE_ACTIVATE_EVENT = '@lemoncat7/dsh-plugin-ui/workspace-activate'\n\ninterface WorkspaceActivateDetail {\n pluginId: string\n}\n\n/** Claim the conversation workspace while remaining compatible with installed plugin versions. */\nexport function activatePluginWorkspace(pluginId: string): void {\n window.dispatchEvent(new CustomEvent<WorkspaceActivateDetail>(WORKSPACE_ACTIVATE_EVENT, {\n detail: { pluginId },\n }))\n}\n\n/** Close this workspace when another plugin claims the conversation area. */\nexport function observePluginWorkspace(pluginId: string, close: () => void): () => void {\n const onActivate = (event: Event): void => {\n const detail = (event as CustomEvent<WorkspaceActivateDetail>).detail\n if (detail?.pluginId !== pluginId) close()\n }\n window.addEventListener(WORKSPACE_ACTIVATE_EVENT, onActivate)\n return () => window.removeEventListener(WORKSPACE_ACTIVATE_EVENT, onActivate)\n}\n", ".dsh-knowledge-trigger,\n.dsh-knowledge-workspace,\n.dsh-knowledge-settings-card,\n.dsh-knowledge-writeback-status {\n --knowledge-accent: #3a3a3c;\n --knowledge-on-accent: #fff;\n --knowledge-danger: #d70015;\n --knowledge-success: #248a3d;\n --knowledge-pane: rgb(242 243 247 / 78%);\n --knowledge-raised: #fff;\n --knowledge-control: rgb(255 255 255 / 82%);\n --knowledge-border: rgb(60 60 67 / 14%);\n --knowledge-text: #1d1d1f;\n --knowledge-text-secondary: #515154;\n --knowledge-hover: rgba(118, 118, 128, .1);\n --knowledge-glare-light: rgb(255 255 255 / 82%);\n --knowledge-glare-rim: rgb(60 60 67 / 15%);\n --knowledge-glass-filter: saturate(1.18) contrast(1.025) blur(28px);\n --knowledge-glass-shadow: inset 0 1px 0 rgb(255 255 255 / 58%), inset 0 -1px 0 rgb(60 60 67 / 12%);\n}\n\nbody[data-ds-dark-theme] :is(\n .dsh-knowledge-trigger,\n .dsh-knowledge-workspace,\n .dsh-knowledge-settings-card,\n .dsh-knowledge-writeback-status\n) {\n --knowledge-accent: #e5e5ea;\n --knowledge-on-accent: #1d1d1f;\n --knowledge-danger: #ff453a;\n --knowledge-success: #30d158;\n --knowledge-pane: rgb(8 10 12 / 19%);\n --knowledge-raised: rgb(10 12 15 / 44%);\n --knowledge-control: rgb(255 255 255 / 7%);\n --knowledge-border: rgb(255 255 255 / 10%);\n --knowledge-text: #f5f5f7;\n --knowledge-text-secondary: #d1d1d6;\n --knowledge-hover: rgb(255 255 255 / 8%);\n --knowledge-glare-light: rgb(255 255 255 / 42%);\n --knowledge-glare-rim: rgb(0 0 0 / 24%);\n --knowledge-glass-shadow: inset 0 1px 0 rgb(255 255 255 / 18%), inset 0 -1px 0 rgb(0 0 0 / 30%);\n}\n\n.dsh-knowledge-trigger,\n.dsh-knowledge-panel-state button,\n.dsh-knowledge-settings-card button,\n.dsh-knowledge-writeback-status button {\n -webkit-appearance: none;\n appearance: none;\n margin: 0;\n}\n\n.dsh-knowledge-trigger {\n position: relative;\n flex: none;\n min-width: 0;\n max-width: 100%;\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n height: 34px;\n margin: 4px 0;\n padding: 6px 8px 6px 10px;\n box-sizing: border-box;\n border: 0;\n border-radius: 12px;\n overflow: hidden;\n background: transparent;\n color: var(--dsw-alias-label-primary);\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 > * {\n position: relative;\n z-index: 1;\n}\n\n.dsh-knowledge-trigger::before {\n position: absolute;\n z-index: 0;\n top: -55%;\n bottom: -55%;\n left: -64%;\n width: 52%;\n border-radius: 45%;\n background: linear-gradient(\n 90deg,\n transparent,\n color-mix(in srgb, var(--knowledge-glare-light) 76%, transparent) 50%,\n color-mix(in srgb, var(--knowledge-glare-rim) 18%, transparent) 63%,\n transparent\n );\n opacity: 0;\n transform: skewX(-18deg) translate3d(0, 0, 0);\n pointer-events: none;\n transition:\n opacity 150ms ease-out,\n transform 720ms cubic-bezier(.2, .72, .2, 1);\n content: \"\";\n}\n\n.dsh-knowledge-trigger:hover::before {\n opacity: .96;\n transform: skewX(-18deg) translate3d(320%, 0, 0);\n}\n\n.dsh-knowledge-trigger:focus-visible,\n.dsh-knowledge-writeback-status 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 4px;\n padding: 0;\n justify-content: center;\n gap: 0;\n border-radius: 50%;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dsh-knowledge-trigger,\n .dsh-knowledge-trigger::before { transition: none; }\n .dsh-knowledge-trigger::before { display: 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: transparent;\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:\n linear-gradient(145deg, color-mix(in srgb, var(--knowledge-glare-light) 20%, transparent), transparent 58%),\n var(--knowledge-pane);\n box-shadow: var(--knowledge-glass-shadow);\n -webkit-backdrop-filter: var(--knowledge-glass-filter);\n backdrop-filter: var(--knowledge-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-xiaohei-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 140ms ease, background 140ms ease, border-color 140ms ease, transform 140ms ease;\n}\n\n.dsh-knowledge-workspace-header [data-xiaohei-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-xiaohei-workspace-close]:active { transform: scale(.96); }\n.dsh-knowledge-workspace-header [data-xiaohei-workspace-close]:focus-visible {\n outline: 2px solid var(--knowledge-accent);\n outline-offset: 2px;\n}\n.dsh-knowledge-workspace-header [data-xiaohei-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}\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-glass-filter);\n backdrop-filter: var(--knowledge-glass-filter);\n color: var(--dsw-alias-label-primary, #171719);\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(--dsw-alias-interactive-bg-hover, rgba(128, 128, 128, .1));\n color: var(--dsw-alias-label-secondary, #68686f);\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(--dsw-alias-label-secondary, #68686f); 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(--dsw-alias-label-primary, #171719);\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 .16s, background .16s, box-shadow .2s, transform .2s cubic-bezier(.22, 1, .36, 1);\n}\n.dsh-knowledge-settings-card:hover {\n border-color: color-mix(in srgb, var(--knowledge-border) 68%, var(--knowledge-text-secondary));\n box-shadow: var(--knowledge-glass-shadow), 0 12px 30px rgb(0 0 0 / 8%);\n transform: translateY(-1px);\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(--dsw-alias-label-tertiary); font-size: 13px; line-height: 1.5; }\n.dsh-knowledge-source-picker small,\n.dsh-knowledge-remote-fields small { color: var(--dsw-alias-label-secondary, #68686f); font-size: 12px; }\n.dsh-knowledge-settings-summary { display: flex; flex: none; align-items: center; gap: 10px; color: var(--dsw-alias-label-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(--dsw-alias-border-l2);\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(--dsw-alias-divider-primary, rgba(128, 128, 128, .2));\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(--dsw-alias-divider-primary, rgba(128, 128, 128, .34));\n border-radius: 50%;\n background: var(--xiaohei-plugin-control-fill, var(--dsw-alias-bg-layer-1, #fff));\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(--dsw-alias-label-secondary, #68686f); 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(--dsw-alias-divider-primary, rgba(128, 128, 128, .25));\n border-radius: 10px;\n outline: none;\n background: var(--xiaohei-plugin-control-fill, var(--dsw-alias-bg-layer-1, #fff));\n color: var(--dsw-alias-label-primary, #171719);\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(--dsw-alias-label-primary, #171719);\n box-shadow: 0 0 0 1000px var(--xiaohei-plugin-control-fill, var(--dsw-alias-bg-layer-1, #fff)) inset;\n caret-color: var(--dsw-alias-label-primary, #171719);\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(--dsw-alias-label-secondary, #68686f); 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(--xiaohei-plugin-control-fill, var(--dsw-alias-bg-layer-2, #fff));\n color: var(--dsw-alias-label-primary, #171719);\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(--dsw-alias-interactive-bg-hover, rgba(128, 128, 128, .1));\n color: var(--dsw-alias-label-primary, #171719);\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-status {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n color: var(--dsw-alias-label-tertiary, #6b7280);\n font-size: 12px;\n line-height: 1.5;\n}\n.dsh-knowledge-writeback-status strong {\n color: var(--dsw-alias-label-secondary, #374151);\n font-weight: 600;\n}\n.dsh-knowledge-writeback-status button {\n min-height: 24px;\n padding: 0 9px;\n border: 1px solid var(--dsw-alias-separator, #d1d5db);\n border-radius: 7px;\n color: var(--dsw-alias-label-secondary, #374151);\n background: var(--dsw-alias-button-elevated-fill, #fff);\n cursor: pointer;\n font: inherit;\n}\n.dsh-knowledge-writeback-status button:disabled { cursor: default; opacity: .5; }\n", "/** Host settings namespace that makes the knowledge connection card discoverable. */\nexport const KNOWLEDGE_SETTINGS_NAMESPACE = 'dsh-knowledge-connection'\n", "export const KNOWLEDGE_THEME_MESSAGE = '@lemoncat7/dsh-knowledge/host-theme'\nexport const KNOWLEDGE_THEME_READY_MESSAGE = '@lemoncat7/dsh-knowledge/host-theme-ready'\nexport const KNOWLEDGE_THEME_PROTOCOL_VERSION = 1\n\nexport type KnowledgeColorScheme = 'light' | 'dark'\n\nexport interface KnowledgeHostThemeMessage {\n type: typeof KNOWLEDGE_THEME_MESSAGE\n version: typeof KNOWLEDGE_THEME_PROTOCOL_VERSION\n colorScheme: KnowledgeColorScheme\n tokens: Record<string, string>\n}\n\nexport interface ThemeSnapshotLike {\n active: {\n colorScheme: KnowledgeColorScheme\n tokens: Readonly<Record<string, string>>\n }\n}\n\ninterface ComputedStyleLike {\n getPropertyValue(name: string): string\n}\n\n/**\n * The management console lives in its own iframe and therefore owns its\n * component palette. Only the host colour scheme crosses that boundary.\n * Keeping these tokens stable prevents a branded host accent from changing\n * editor selection, navigation and dialog hierarchy independently.\n */\nconst WORKSPACE_TOKENS: Record<KnowledgeColorScheme, Readonly<Record<string, string>>> = {\n light: {\n '--bg': '#e9e9ed', '--surface': '#f2f3f7', '--surface-raised': '#ffffff',\n '--surface-soft': '#eceef1', '--surface-hover': '#e5e5e7', '--dialog-surface': '#ffffff',\n '--text': '#1d1d1f', '--text-secondary': '#515154', '--text-tertiary': '#6e6e73',\n '--border': 'rgb(60 60 67 / 14%)', '--border-strong': 'rgb(60 60 67 / 24%)',\n '--accent': '#3a3a3c', '--accent-hover': '#1d1d1f', '--accent-soft': '#e2e2e5', '--on-accent': '#ffffff',\n '--success': '#248a3d', '--success-soft': '#e8f5eb', '--warning': '#c93400', '--warning-soft': '#fff1e8',\n '--danger': '#d70015', '--danger-soft': '#ffebed', '--shadow': '0 24px 64px rgb(0 0 0 / 20%)',\n },\n dark: {\n '--bg': 'transparent', '--surface': 'rgb(8 10 12 / 20%)', '--surface-raised': 'rgb(10 12 15 / 44%)',\n '--surface-soft': 'rgb(255 255 255 / 6%)', '--surface-hover': 'rgb(255 255 255 / 7.5%)', '--dialog-surface': 'rgb(10 12 15 / 72%)',\n '--text': '#f5f5f7', '--text-secondary': '#d1d1d6', '--text-tertiary': '#98989d',\n '--border': 'rgb(255 255 255 / 10%)', '--border-strong': 'rgb(255 255 255 / 18%)',\n '--accent': '#e5e5ea', '--accent-hover': '#ffffff', '--accent-soft': 'rgb(255 255 255 / 9%)', '--on-accent': '#1d1d1f',\n '--success': '#30d158', '--success-soft': 'rgb(48 209 88 / 13%)', '--warning': '#ff9f0a', '--warning-soft': 'rgb(255 159 10 / 13%)',\n '--danger': '#ff453a', '--danger-soft': 'rgb(255 69 58 / 14%)', '--shadow': '0 28px 72px rgb(0 0 0 / 42%)',\n },\n}\n\n/** Synchronise host light/dark mode while preserving one coherent workspace palette. */\nexport function createKnowledgeHostTheme(\n _computed: ComputedStyleLike,\n snapshot: ThemeSnapshotLike,\n): KnowledgeHostThemeMessage {\n return {\n type: KNOWLEDGE_THEME_MESSAGE,\n version: KNOWLEDGE_THEME_PROTOCOL_VERSION,\n colorScheme: snapshot.active.colorScheme,\n tokens: { ...WORKSPACE_TOKENS[snapshot.active.colorScheme] },\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/lib/theme-bridge.js
CHANGED
|
@@ -10,7 +10,7 @@ export const KNOWLEDGE_THEME_PROTOCOL_VERSION = 1;
|
|
|
10
10
|
const WORKSPACE_TOKENS = {
|
|
11
11
|
light: {
|
|
12
12
|
'--bg': '#e9e9ed', '--surface': '#f2f3f7', '--surface-raised': '#ffffff',
|
|
13
|
-
'--surface-soft': '#eceef1', '--surface-hover': '#e5e5e7',
|
|
13
|
+
'--surface-soft': '#eceef1', '--surface-hover': '#e5e5e7', '--dialog-surface': '#ffffff',
|
|
14
14
|
'--text': '#1d1d1f', '--text-secondary': '#515154', '--text-tertiary': '#6e6e73',
|
|
15
15
|
'--border': 'rgb(60 60 67 / 14%)', '--border-strong': 'rgb(60 60 67 / 24%)',
|
|
16
16
|
'--accent': '#3a3a3c', '--accent-hover': '#1d1d1f', '--accent-soft': '#e2e2e5', '--on-accent': '#ffffff',
|
|
@@ -18,13 +18,13 @@ const WORKSPACE_TOKENS = {
|
|
|
18
18
|
'--danger': '#d70015', '--danger-soft': '#ffebed', '--shadow': '0 24px 64px rgb(0 0 0 / 20%)',
|
|
19
19
|
},
|
|
20
20
|
dark: {
|
|
21
|
-
'--bg': '
|
|
22
|
-
'--surface-soft': '
|
|
21
|
+
'--bg': 'transparent', '--surface': 'rgb(8 10 12 / 20%)', '--surface-raised': 'rgb(10 12 15 / 44%)',
|
|
22
|
+
'--surface-soft': 'rgb(255 255 255 / 6%)', '--surface-hover': 'rgb(255 255 255 / 7.5%)', '--dialog-surface': 'rgb(10 12 15 / 72%)',
|
|
23
23
|
'--text': '#f5f5f7', '--text-secondary': '#d1d1d6', '--text-tertiary': '#98989d',
|
|
24
24
|
'--border': 'rgb(255 255 255 / 10%)', '--border-strong': 'rgb(255 255 255 / 18%)',
|
|
25
|
-
'--accent': '#e5e5ea', '--accent-hover': '#ffffff', '--accent-soft': '
|
|
26
|
-
'--success': '#30d158', '--success-soft': '
|
|
27
|
-
'--danger': '#ff453a', '--danger-soft': '
|
|
25
|
+
'--accent': '#e5e5ea', '--accent-hover': '#ffffff', '--accent-soft': 'rgb(255 255 255 / 9%)', '--on-accent': '#1d1d1f',
|
|
26
|
+
'--success': '#30d158', '--success-soft': 'rgb(48 209 88 / 13%)', '--warning': '#ff9f0a', '--warning-soft': 'rgb(255 159 10 / 13%)',
|
|
27
|
+
'--danger': '#ff453a', '--danger-soft': 'rgb(255 69 58 / 14%)', '--shadow': '0 28px 72px rgb(0 0 0 / 42%)',
|
|
28
28
|
},
|
|
29
29
|
};
|
|
30
30
|
/** Synchronise host light/dark mode while preserving one coherent workspace palette. */
|
package/lib/theme-bridge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-bridge.js","sourceRoot":"","sources":["../src/theme-bridge.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,qCAAqC,CAAA;AAC5E,MAAM,CAAC,MAAM,6BAA6B,GAAG,2CAA2C,CAAA;AACxF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAA;AAsBjD;;;;;GAKG;AACH,MAAM,gBAAgB,GAAmE;IACvF,KAAK,EAAE;QACL,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS;QACxE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"theme-bridge.js","sourceRoot":"","sources":["../src/theme-bridge.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,qCAAqC,CAAA;AAC5E,MAAM,CAAC,MAAM,6BAA6B,GAAG,2CAA2C,CAAA;AACxF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAA;AAsBjD;;;;;GAKG;AACH,MAAM,gBAAgB,GAAmE;IACvF,KAAK,EAAE;QACL,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS;QACxE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS;QACxF,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS;QAChF,UAAU,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,qBAAqB;QAC3E,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS;QACxG,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS;QACxG,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,8BAA8B;KAC9F;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,qBAAqB;QACnG,gBAAgB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,qBAAqB;QAClI,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS;QAChF,UAAU,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,wBAAwB;QACjF,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,eAAe,EAAE,uBAAuB,EAAE,aAAa,EAAE,SAAS;QACtH,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,uBAAuB;QACnI,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,sBAAsB,EAAE,UAAU,EAAE,8BAA8B;KAC3G;CACF,CAAA;AAED,wFAAwF;AACxF,MAAM,UAAU,wBAAwB,CACtC,SAA4B,EAC5B,QAA2B;IAE3B,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,gCAAgC;QACzC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW;QACxC,MAAM,EAAE,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;KAC7D,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-workspace-effects.d.ts","sourceRoot":"","sources":["../src/web-workspace-effects.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"web-workspace-effects.d.ts","sourceRoot":"","sources":["../src/web-workspace-effects.ts"],"names":[],"mappings":"AAkDA,UAAU,mBAAmB;IAC3B,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IAChC,OAAO,IAAI,IAAI,CAAA;CAChB;AAQD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;KAC1C;CACF;AA8QD,iBAAS,OAAO,CAAC,IAAI,GAAE,UAAqB,GAAG,IAAI,CAOlD;AAED,iBAAS,OAAO,IAAI,IAAI,CA0BvB;AAKD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
|
@@ -9,13 +9,22 @@ const GLASS_SURFACE_SELECTOR = [
|
|
|
9
9
|
'.note-editor-toolbar',
|
|
10
10
|
'.dialog',
|
|
11
11
|
].join(',');
|
|
12
|
-
const
|
|
12
|
+
const CARD_SURFACE_SELECTOR = [
|
|
13
13
|
'.login-card',
|
|
14
|
+
'.metric',
|
|
14
15
|
'.panel',
|
|
16
|
+
'.library-detail-header',
|
|
17
|
+
'.mount-manager',
|
|
18
|
+
'.knowledge-card',
|
|
19
|
+
'.candidate',
|
|
20
|
+
'.api-access-card',
|
|
21
|
+
].join(',');
|
|
22
|
+
const BORDER_SURFACE_SELECTOR = [
|
|
15
23
|
'.mount-table',
|
|
16
24
|
'.note-workspace',
|
|
17
25
|
'.notes-workspace',
|
|
18
26
|
'.dialog',
|
|
27
|
+
CARD_SURFACE_SELECTOR,
|
|
19
28
|
].join(',');
|
|
20
29
|
const GLARE_SURFACE_SELECTOR = [
|
|
21
30
|
'.button',
|
|
@@ -157,6 +166,8 @@ function installBorderSurface(surface) {
|
|
|
157
166
|
if (borderSurfaces.has(surface))
|
|
158
167
|
return;
|
|
159
168
|
surface.classList.add('knowledge-border-surface');
|
|
169
|
+
surface.style.setProperty('--knowledge-pointer-x', '50%');
|
|
170
|
+
surface.style.setProperty('--knowledge-pointer-y', '50%');
|
|
160
171
|
let frame = 0;
|
|
161
172
|
let pointer;
|
|
162
173
|
const paint = () => {
|
|
@@ -169,6 +180,8 @@ function installBorderSurface(surface) {
|
|
|
169
180
|
const edgeDistance = Math.min(x, rect.width - x, y, rect.height - y);
|
|
170
181
|
const proximity = Math.min(1, Math.max(0, 1 - edgeDistance / EDGE_RESPONSE_RANGE));
|
|
171
182
|
const angle = Math.atan2(y - rect.height / 2, x - rect.width / 2) * (180 / Math.PI) + 90;
|
|
183
|
+
surface.style.setProperty('--knowledge-pointer-x', `${(x / Math.max(1, rect.width) * 100).toFixed(2)}%`);
|
|
184
|
+
surface.style.setProperty('--knowledge-pointer-y', `${(y / Math.max(1, rect.height) * 100).toFixed(2)}%`);
|
|
172
185
|
surface.style.setProperty('--knowledge-border-proximity', proximity.toFixed(3));
|
|
173
186
|
surface.style.setProperty('--knowledge-border-angle', `${angle.toFixed(2)}deg`);
|
|
174
187
|
};
|
|
@@ -302,6 +315,8 @@ function refresh(root = document) {
|
|
|
302
315
|
cleanupDisconnected();
|
|
303
316
|
for (const surface of queryIncludingRoot(root, GLASS_SURFACE_SELECTOR))
|
|
304
317
|
installGlassSurface(surface);
|
|
318
|
+
for (const surface of queryIncludingRoot(root, CARD_SURFACE_SELECTOR))
|
|
319
|
+
surface.classList.add('knowledge-card-surface');
|
|
305
320
|
for (const surface of queryIncludingRoot(root, BORDER_SURFACE_SELECTOR))
|
|
306
321
|
installBorderSurface(surface);
|
|
307
322
|
for (const surface of queryIncludingRoot(root, GLARE_SURFACE_SELECTOR))
|
|
@@ -322,6 +337,9 @@ function destroy() {
|
|
|
322
337
|
for (const [surface, cleanup] of borderSurfaces) {
|
|
323
338
|
cleanup();
|
|
324
339
|
surface.classList.remove('knowledge-border-surface');
|
|
340
|
+
surface.classList.remove('knowledge-card-surface');
|
|
341
|
+
surface.style.removeProperty('--knowledge-pointer-x');
|
|
342
|
+
surface.style.removeProperty('--knowledge-pointer-y');
|
|
325
343
|
}
|
|
326
344
|
for (const [list, cleanup] of animatedLists) {
|
|
327
345
|
cleanup();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-workspace-effects.js","sourceRoot":"","sources":["../src/web-workspace-effects.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web-workspace-effects.js","sourceRoot":"","sources":["../src/web-workspace-effects.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lemoncat7/dsh-knowledge",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"description": "Local and remote knowledge bases for DeepSeek Harness, with scoped recall, controlled write-back, and a Web management console",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek-harness",
|
package/web/app.js
CHANGED
|
@@ -6,7 +6,7 @@ const HOST_THEME_MESSAGE = '@lemoncat7/dsh-knowledge/host-theme'
|
|
|
6
6
|
const HOST_THEME_READY_MESSAGE = '@lemoncat7/dsh-knowledge/host-theme-ready'
|
|
7
7
|
const HOST_THEME_PROTOCOL_VERSION = 1
|
|
8
8
|
const HOST_THEME_COLOR_TOKENS = new Set([
|
|
9
|
-
'--bg', '--surface', '--surface-raised', '--surface-soft', '--surface-hover',
|
|
9
|
+
'--bg', '--surface', '--surface-raised', '--surface-soft', '--surface-hover', '--dialog-surface',
|
|
10
10
|
'--text', '--text-secondary', '--text-tertiary', '--border', '--border-strong',
|
|
11
11
|
'--accent', '--accent-hover', '--accent-soft', '--on-accent',
|
|
12
12
|
'--success', '--success-soft', '--warning', '--warning-soft', '--danger', '--danger-soft',
|
|
@@ -138,8 +138,8 @@ function installHostThemeBridge() {
|
|
|
138
138
|
else if (HOST_THEME_STYLE_TOKENS.has(name) && CSS.supports('box-shadow', value)) root.style.setProperty(name, value)
|
|
139
139
|
}
|
|
140
140
|
root.dataset.dshHostTheme = 'true'
|
|
141
|
+
root.dataset.colorScheme = message.colorScheme
|
|
141
142
|
root.style.colorScheme = message.colorScheme
|
|
142
|
-
root.style.setProperty('--dialog-surface', root.style.getPropertyValue('--surface-raised') || root.style.getPropertyValue('--surface'))
|
|
143
143
|
document.querySelector('meta[name="color-scheme"]')?.setAttribute('content', message.colorScheme)
|
|
144
144
|
const background = root.style.getPropertyValue('--bg')
|
|
145
145
|
if (background) document.querySelector('meta[name="theme-color"]')?.setAttribute('content', background)
|
|
@@ -1009,6 +1009,11 @@ function renderShell() {
|
|
|
1009
1009
|
},
|
|
1010
1010
|
renderSidebar(),
|
|
1011
1011
|
renderAppSidebarResizer(),
|
|
1012
|
+
state.menuOpen ? element('button', {
|
|
1013
|
+
type: 'button', class: 'app-sidebar-scrim',
|
|
1014
|
+
'aria-label': '关闭导航菜单',
|
|
1015
|
+
onClick: () => { state.menuOpen = false; renderShell() },
|
|
1016
|
+
}) : null,
|
|
1012
1017
|
element('main', { class: 'main' },
|
|
1013
1018
|
element('header', { class: 'topbar' },
|
|
1014
1019
|
element('div', { class: 'topbar-title' },
|
|
@@ -1036,9 +1041,6 @@ function renderShell() {
|
|
|
1036
1041
|
element('div', { class: 'page' }, element('div', { class: 'view-stage', 'data-view-stage': state.view }, renderCurrentView())),
|
|
1037
1042
|
),
|
|
1038
1043
|
)
|
|
1039
|
-
if (state.menuOpen) shell.addEventListener('click', (event) => {
|
|
1040
|
-
if (event.target === shell) { state.menuOpen = false; renderShell() }
|
|
1041
|
-
})
|
|
1042
1044
|
app.replaceChildren(shell)
|
|
1043
1045
|
applySidebarVisibility(shell, state.documentView.sidebarHidden)
|
|
1044
1046
|
refreshWorkspaceEffects(shell)
|
|
@@ -1115,11 +1117,15 @@ function applySidebarVisibility(shell, hidden) {
|
|
|
1115
1117
|
shell.dataset.sidebarHidden = String(hidden)
|
|
1116
1118
|
const sidebar = shell.querySelector(':scope > .sidebar')
|
|
1117
1119
|
const resizer = shell.querySelector(':scope > .app-sidebar-resizer')
|
|
1120
|
+
const main = shell.querySelector(':scope > .main')
|
|
1118
1121
|
const toggle = shell.querySelector('.pane-toggle-button[data-pane="main"]')
|
|
1119
|
-
|
|
1122
|
+
const compact = window.matchMedia('(max-width: 760px)').matches
|
|
1123
|
+
const sidebarUnavailable = compact ? !state.menuOpen : hidden
|
|
1124
|
+
sidebar?.toggleAttribute('inert', sidebarUnavailable)
|
|
1120
1125
|
resizer?.toggleAttribute('inert', hidden)
|
|
1126
|
+
main?.toggleAttribute('inert', compact && state.menuOpen)
|
|
1121
1127
|
if (sidebar) {
|
|
1122
|
-
if (
|
|
1128
|
+
if (sidebarUnavailable) sidebar.setAttribute('aria-hidden', 'true')
|
|
1123
1129
|
else sidebar.removeAttribute('aria-hidden')
|
|
1124
1130
|
}
|
|
1125
1131
|
if (resizer) {
|
package/web/styles.css
CHANGED
|
@@ -30,40 +30,42 @@
|
|
|
30
30
|
--radius: 14px;
|
|
31
31
|
--radius-control: 9px;
|
|
32
32
|
--radius-small: 7px;
|
|
33
|
-
--material-sidebar:
|
|
34
|
-
--material-toolbar:
|
|
35
|
-
--material-panel:
|
|
36
|
-
--material-control:
|
|
37
|
-
--material-control-hover:
|
|
33
|
+
--material-sidebar: color-mix(in srgb, var(--surface) 76%, transparent);
|
|
34
|
+
--material-toolbar: color-mix(in srgb, var(--surface) 78%, transparent);
|
|
35
|
+
--material-panel: color-mix(in srgb, var(--surface-raised) 82%, transparent);
|
|
36
|
+
--material-control: color-mix(in srgb, var(--surface-raised) 76%, transparent);
|
|
37
|
+
--material-control-hover: color-mix(in srgb, var(--surface-raised) 94%, transparent);
|
|
38
38
|
--separator: color-mix(in srgb, var(--border) 76%, transparent);
|
|
39
39
|
--panel-border: color-mix(in srgb, var(--border-strong) 58%, var(--border));
|
|
40
40
|
--surface-highlight: color-mix(in srgb, var(--surface-raised) 74%, transparent);
|
|
41
41
|
--shadow-soft: 0 1px 2px color-mix(in srgb, var(--text) 5%, transparent);
|
|
42
42
|
--shadow-panel: 0 1px 2px rgb(0 0 0 / 5%), 0 14px 36px rgb(0 0 0 / 7%);
|
|
43
43
|
--surface-canvas: var(--bg);
|
|
44
|
-
--surface-pane:
|
|
45
|
-
--surface-editor:
|
|
44
|
+
--surface-pane: color-mix(in srgb, var(--surface) 74%, transparent);
|
|
45
|
+
--surface-editor: color-mix(in srgb, var(--surface-raised) 88%, var(--bg));
|
|
46
46
|
--surface-overlay: color-mix(in srgb, var(--surface-raised) 92%, transparent);
|
|
47
47
|
--shadow-control: 0 1px 2px rgb(0 0 0 / 8%), 0 4px 12px rgb(0 0 0 / 5.5%), inset 0 1px 0 rgb(255 255 255 / 68%);
|
|
48
48
|
--shadow-floating: 0 22px 70px color-mix(in srgb, var(--text) 18%, transparent), 0 2px 8px color-mix(in srgb, var(--text) 8%, transparent);
|
|
49
|
-
--glass-clear:
|
|
50
|
-
--glass-regular:
|
|
51
|
-
--glass-thick:
|
|
52
|
-
--glass-border:
|
|
53
|
-
--glass-separator:
|
|
54
|
-
--glass-rim-light:
|
|
55
|
-
--glass-rim-shadow:
|
|
56
|
-
--glass-filter: saturate(1.
|
|
49
|
+
--glass-clear: color-mix(in srgb, var(--surface-raised) 20%, transparent);
|
|
50
|
+
--glass-regular: color-mix(in srgb, var(--surface-raised) 36%, transparent);
|
|
51
|
+
--glass-thick: color-mix(in srgb, var(--surface-raised) 62%, transparent);
|
|
52
|
+
--glass-border: color-mix(in srgb, var(--border) 58%, transparent);
|
|
53
|
+
--glass-separator: var(--border);
|
|
54
|
+
--glass-rim-light: color-mix(in srgb, var(--surface-raised) 58%, transparent);
|
|
55
|
+
--glass-rim-shadow: color-mix(in srgb, var(--text) 12%, transparent);
|
|
56
|
+
--glass-filter: saturate(1.18) contrast(1.025) blur(28px);
|
|
57
57
|
--glass-shadow: inset 0 1px 0 var(--glass-rim-light), inset 0 -1px 0 var(--glass-rim-shadow), 0 10px 28px rgb(0 0 0 / 8.5%);
|
|
58
|
-
--liquid-glass-large:
|
|
59
|
-
--liquid-glass-regular:
|
|
60
|
-
--liquid-glass-clear:
|
|
61
|
-
--liquid-glass-dialog:
|
|
58
|
+
--liquid-glass-large: color-mix(in srgb, var(--surface) 68%, transparent);
|
|
59
|
+
--liquid-glass-regular: color-mix(in srgb, var(--surface-raised) 52%, transparent);
|
|
60
|
+
--liquid-glass-clear: color-mix(in srgb, var(--surface-raised) 36%, transparent);
|
|
61
|
+
--liquid-glass-dialog: color-mix(in srgb, var(--surface-raised) 76%, transparent);
|
|
62
62
|
--interaction-glow-core: rgb(67 70 77 / 78%);
|
|
63
63
|
--interaction-glow-soft: rgb(111 115 124 / 36%);
|
|
64
64
|
--interaction-glow-haze: rgb(255 255 255 / 72%);
|
|
65
65
|
--interaction-glare-light: rgb(255 255 255 / 72%);
|
|
66
66
|
--interaction-glare-rim: rgb(45 48 54 / 12%);
|
|
67
|
+
--card-highlight: rgb(255 255 255 / 58%);
|
|
68
|
+
--card-fill: color-mix(in srgb, var(--surface-raised) 48%, transparent);
|
|
67
69
|
--radius-shell: 18px;
|
|
68
70
|
--radius-panel: 12px;
|
|
69
71
|
--motion-fast: 120ms;
|
|
@@ -79,13 +81,13 @@
|
|
|
79
81
|
}
|
|
80
82
|
|
|
81
83
|
@media (prefers-color-scheme: dark) {
|
|
82
|
-
:root {
|
|
83
|
-
--bg:
|
|
84
|
-
--surface:
|
|
85
|
-
--surface-raised:
|
|
86
|
-
--surface-soft:
|
|
87
|
-
--surface-hover:
|
|
88
|
-
--dialog-surface:
|
|
84
|
+
:root:not([data-color-scheme]) {
|
|
85
|
+
--bg: transparent;
|
|
86
|
+
--surface: rgb(8 10 12 / 20%);
|
|
87
|
+
--surface-raised: rgb(10 12 15 / 44%);
|
|
88
|
+
--surface-soft: rgb(255 255 255 / 6%);
|
|
89
|
+
--surface-hover: rgb(255 255 255 / 7.5%);
|
|
90
|
+
--dialog-surface: rgb(10 12 15 / 72%);
|
|
89
91
|
--text: #f5f5f7;
|
|
90
92
|
--text-secondary: #d1d1d6;
|
|
91
93
|
--text-tertiary: #98989d;
|
|
@@ -93,39 +95,51 @@
|
|
|
93
95
|
--border-strong: rgb(255 255 255 / 18%);
|
|
94
96
|
--accent: #e5e5ea;
|
|
95
97
|
--accent-hover: #ffffff;
|
|
96
|
-
--accent-soft:
|
|
98
|
+
--accent-soft: rgb(255 255 255 / 9%);
|
|
97
99
|
--on-accent: #1d1d1f;
|
|
98
100
|
--success: #30d158;
|
|
99
|
-
--success-soft:
|
|
101
|
+
--success-soft: rgb(48 209 88 / 13%);
|
|
100
102
|
--warning: #ff9f0a;
|
|
101
|
-
--warning-soft:
|
|
103
|
+
--warning-soft: rgb(255 159 10 / 13%);
|
|
102
104
|
--danger: #ff453a;
|
|
103
|
-
--danger-soft:
|
|
105
|
+
--danger-soft: rgb(255 69 58 / 14%);
|
|
104
106
|
--shadow: 0 28px 72px rgb(0 0 0 / 48%);
|
|
105
|
-
--
|
|
106
|
-
--
|
|
107
|
-
--
|
|
108
|
-
--
|
|
109
|
-
--
|
|
110
|
-
--surface-pane: rgb(44 44 46 / 74%);
|
|
111
|
-
--surface-editor: #1c1c1e;
|
|
112
|
-
--glass-border: rgb(255 255 255 / 10%);
|
|
113
|
-
--glass-separator: rgb(255 255 255 / 10%);
|
|
114
|
-
--glass-rim-light: rgb(255 255 255 / 18%);
|
|
115
|
-
--glass-rim-shadow: rgb(0 0 0 / 30%);
|
|
107
|
+
--surface-highlight: rgb(255 255 255 / 11%);
|
|
108
|
+
--shadow-soft: 0 1px 2px rgb(0 0 0 / 28%);
|
|
109
|
+
--shadow-panel: 0 2px 7px rgb(0 0 0 / 20%), 0 14px 36px rgb(0 0 0 / 28%);
|
|
110
|
+
--shadow-control: 0 1px 2px rgb(0 0 0 / 28%), 0 5px 16px rgb(0 0 0 / 18%), inset 0 1px 0 rgb(255 255 255 / 11%);
|
|
111
|
+
--shadow-floating: 0 24px 72px rgb(0 0 0 / 52%), 0 2px 8px rgb(0 0 0 / 28%);
|
|
116
112
|
--glass-shadow: inset 0 1px 0 var(--glass-rim-light), inset 0 -1px 0 var(--glass-rim-shadow), 0 12px 32px rgb(0 0 0 / 30%);
|
|
117
|
-
--liquid-glass-large: rgb(38 38 41 / 62%);
|
|
118
|
-
--liquid-glass-regular: rgb(43 43 46 / 58%);
|
|
119
|
-
--liquid-glass-clear: rgb(50 50 54 / 46%);
|
|
120
|
-
--liquid-glass-dialog: rgb(43 43 46 / 76%);
|
|
121
113
|
--interaction-glow-core: rgb(244 244 247 / 78%);
|
|
122
114
|
--interaction-glow-soft: rgb(197 199 205 / 34%);
|
|
123
115
|
--interaction-glow-haze: rgb(255 255 255 / 42%);
|
|
124
116
|
--interaction-glare-light: rgb(255 255 255 / 34%);
|
|
125
117
|
--interaction-glare-rim: rgb(255 255 255 / 10%);
|
|
118
|
+
--glass-rim-light: rgb(255 255 255 / 18%);
|
|
119
|
+
--glass-rim-shadow: rgb(0 0 0 / 30%);
|
|
120
|
+
--card-highlight: rgb(255 255 255 / 11%);
|
|
121
|
+
--card-fill: rgb(7 9 11 / 22%);
|
|
126
122
|
}
|
|
127
123
|
}
|
|
128
124
|
|
|
125
|
+
:root[data-color-scheme="dark"] {
|
|
126
|
+
--glass-rim-light: rgb(255 255 255 / 18%);
|
|
127
|
+
--glass-rim-shadow: rgb(0 0 0 / 30%);
|
|
128
|
+
--surface-highlight: rgb(255 255 255 / 11%);
|
|
129
|
+
--shadow-soft: 0 1px 2px rgb(0 0 0 / 28%);
|
|
130
|
+
--shadow-panel: 0 2px 7px rgb(0 0 0 / 20%), 0 14px 36px rgb(0 0 0 / 28%);
|
|
131
|
+
--shadow-control: 0 1px 2px rgb(0 0 0 / 28%), 0 5px 16px rgb(0 0 0 / 18%), inset 0 1px 0 rgb(255 255 255 / 11%);
|
|
132
|
+
--shadow-floating: 0 24px 72px rgb(0 0 0 / 52%), 0 2px 8px rgb(0 0 0 / 28%);
|
|
133
|
+
--glass-shadow: inset 0 1px 0 var(--glass-rim-light), inset 0 -1px 0 var(--glass-rim-shadow), 0 12px 32px rgb(0 0 0 / 30%);
|
|
134
|
+
--interaction-glow-core: rgb(244 244 247 / 78%);
|
|
135
|
+
--interaction-glow-soft: rgb(197 199 205 / 34%);
|
|
136
|
+
--interaction-glow-haze: rgb(255 255 255 / 42%);
|
|
137
|
+
--interaction-glare-light: rgb(255 255 255 / 34%);
|
|
138
|
+
--interaction-glare-rim: rgb(255 255 255 / 10%);
|
|
139
|
+
--card-highlight: rgb(255 255 255 / 11%);
|
|
140
|
+
--card-fill: rgb(7 9 11 / 22%);
|
|
141
|
+
}
|
|
142
|
+
|
|
129
143
|
* { box-sizing: border-box; }
|
|
130
144
|
|
|
131
145
|
html, body { min-height: 100%; }
|
|
@@ -143,6 +157,9 @@ body {
|
|
|
143
157
|
-webkit-font-smoothing: antialiased;
|
|
144
158
|
}
|
|
145
159
|
|
|
160
|
+
/* The embedded console borrows the host canvas; app-shell stays layout-only. */
|
|
161
|
+
:root[data-dsh-host-theme="true"] body { background: transparent; }
|
|
162
|
+
|
|
146
163
|
button, input, select, textarea { font: inherit; }
|
|
147
164
|
|
|
148
165
|
button {
|
|
@@ -556,7 +573,7 @@ html,
|
|
|
556
573
|
.topbar-kicker { display: block; margin-bottom: 2px; color: var(--text-tertiary); font: 8px/1.2 ui-monospace, "SFMono-Regular", Consolas, monospace; font-weight: 700; letter-spacing: .12em; }
|
|
557
574
|
.route-progress { position: absolute; right: 0; bottom: -1px; left: 0; height: 2px; overflow: hidden; background: color-mix(in srgb, var(--accent) 7%, transparent); }
|
|
558
575
|
.route-progress span { display: block; width: calc(var(--route-progress) * 100%); height: 100%; border-radius: 0 99px 99px 0; background: linear-gradient(90deg, color-mix(in srgb, var(--accent) 58%, transparent), var(--accent)); transition: width var(--motion-slow) var(--ease-out); }
|
|
559
|
-
.mobile-menu { display: none; }
|
|
576
|
+
.mobile-menu, .app-sidebar-scrim { display: none; }
|
|
560
577
|
.topbar-actions { display: flex; align-items: center; gap: 8px; }
|
|
561
578
|
.pane-toggle-group {
|
|
562
579
|
flex: none;
|
|
@@ -1551,6 +1568,45 @@ html,
|
|
|
1551
1568
|
0 28px 76px rgb(0 0 0 / 25%);
|
|
1552
1569
|
}
|
|
1553
1570
|
|
|
1571
|
+
.knowledge-card-surface {
|
|
1572
|
+
--knowledge-pointer-x: 50%;
|
|
1573
|
+
--knowledge-pointer-y: 50%;
|
|
1574
|
+
--knowledge-card-spotlight: transparent;
|
|
1575
|
+
border-color: var(--glass-border);
|
|
1576
|
+
background:
|
|
1577
|
+
radial-gradient(
|
|
1578
|
+
circle 210px at var(--knowledge-pointer-x) var(--knowledge-pointer-y),
|
|
1579
|
+
var(--knowledge-card-spotlight) 0%,
|
|
1580
|
+
transparent 72%
|
|
1581
|
+
),
|
|
1582
|
+
linear-gradient(145deg, color-mix(in srgb, var(--card-highlight) 22%, transparent), transparent 58%),
|
|
1583
|
+
var(--card-fill);
|
|
1584
|
+
-webkit-backdrop-filter: blur(18px) saturate(1.08) contrast(1.02);
|
|
1585
|
+
backdrop-filter: blur(18px) saturate(1.08) contrast(1.02);
|
|
1586
|
+
box-shadow:
|
|
1587
|
+
inset 0 1px 0 var(--card-highlight),
|
|
1588
|
+
inset 0 -1px 0 var(--glass-rim-shadow),
|
|
1589
|
+
0 2px 6px rgb(0 0 0 / 4%),
|
|
1590
|
+
0 10px 28px rgb(0 0 0 / 7%);
|
|
1591
|
+
transition:
|
|
1592
|
+
border-color var(--motion-base) ease,
|
|
1593
|
+
box-shadow 220ms var(--ease-out),
|
|
1594
|
+
transform 220ms var(--ease-out);
|
|
1595
|
+
}
|
|
1596
|
+
|
|
1597
|
+
@media (hover: hover) {
|
|
1598
|
+
.knowledge-card-surface:hover {
|
|
1599
|
+
--knowledge-card-spotlight: color-mix(in srgb, var(--card-highlight) 64%, transparent);
|
|
1600
|
+
border-color: color-mix(in srgb, var(--border) 68%, var(--text-tertiary));
|
|
1601
|
+
box-shadow:
|
|
1602
|
+
inset 0 1px 0 var(--card-highlight),
|
|
1603
|
+
inset 0 -1px 0 var(--glass-rim-shadow),
|
|
1604
|
+
0 3px 8px rgb(0 0 0 / 6%),
|
|
1605
|
+
0 14px 34px rgb(0 0 0 / 10%);
|
|
1606
|
+
transform: translateY(-1px);
|
|
1607
|
+
}
|
|
1608
|
+
}
|
|
1609
|
+
|
|
1554
1610
|
.knowledge-border-surface {
|
|
1555
1611
|
--knowledge-border-angle: 0deg;
|
|
1556
1612
|
--knowledge-border-proximity: 0;
|
|
@@ -1704,6 +1760,11 @@ html,
|
|
|
1704
1760
|
-webkit-backdrop-filter: none;
|
|
1705
1761
|
backdrop-filter: none;
|
|
1706
1762
|
}
|
|
1763
|
+
.knowledge-card-surface {
|
|
1764
|
+
background: var(--surface-raised);
|
|
1765
|
+
-webkit-backdrop-filter: none;
|
|
1766
|
+
backdrop-filter: none;
|
|
1767
|
+
}
|
|
1707
1768
|
.dialog.knowledge-glass-surface { background: var(--dialog-surface); }
|
|
1708
1769
|
.knowledge-border-surface::before,
|
|
1709
1770
|
.knowledge-border-surface::after,
|
|
@@ -1755,7 +1816,7 @@ html,
|
|
|
1755
1816
|
.pane-toggle-button[data-pane="library"] { display: inline-grid; }
|
|
1756
1817
|
.sidebar { position: fixed; top: 8px; bottom: 8px; z-index: 40; width: min(82vw, 270px); height: auto; margin-left: 8px; border-radius: 18px; transform: translateX(-110%); box-shadow: var(--shadow); transition: transform .2s ease; }
|
|
1757
1818
|
.app-shell[data-menu-open="true"] .sidebar { transform: translateX(0); }
|
|
1758
|
-
.app-
|
|
1819
|
+
.app-sidebar-scrim { position: fixed; inset: 0; z-index: 30; display: block; border: 0; padding: 0; background: rgb(0 0 0 / 35%); touch-action: manipulation; }
|
|
1759
1820
|
.mobile-menu { display: inline-grid; place-items: center; }
|
|
1760
1821
|
.topbar { min-height: 64px; padding: 10px 16px; }
|
|
1761
1822
|
.topbar-title { gap: 10px; }
|
package/web/workspace-effects.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(()=>{var M="http://www.w3.org/2000/svg",
|
|
1
|
+
"use strict";(()=>{var M="http://www.w3.org/2000/svg",x=[".sidebar",".topbar",".note-tree-panel",".notes-browser",".notes-content-header",".notes-document-toolbar",".note-editor-toolbar",".dialog"].join(","),L=[".login-card",".metric",".panel",".library-detail-header",".mount-manager",".knowledge-card",".candidate",".api-access-card"].join(","),A=[".mount-table",".note-workspace",".notes-workspace",".dialog",L].join(","),R=[".button",".nav-button",".tab",".pane-toggle-button",".note-tree-base",".note-tree-document",".note-tree-new",".notes-tree-row",".notes-search-row",".notes-file-main"].join(","),G=[".note-tree",".notes-tree",".base-grid",".mount-table"].join(","),T="[data-knowledge-motion-key]",C=700,F=38,m=new Map,v=new Map,u=new Map,g=new Map,P=0,d,$=window.matchMedia("(prefers-reduced-motion: reduce)"),O=window.matchMedia("(prefers-reduced-transparency: reduce)");function b(e,t){let n=Array.from(e.querySelectorAll(t));return e instanceof HTMLElement&&e.matches(t)&&n.unshift(e),n}function H(){return d?.isConnected||(d=document.createElementNS(M,"svg"),d.classList.add("knowledge-glass-filter-bank"),d.setAttribute("aria-hidden","true"),d.setAttribute("focusable","false"),document.body.append(d)),d}function h(e,t){let n=document.createElementNS(M,e);for(let[o,s]of Object.entries(t))n.setAttribute(o,s);return n}function _(e){let t=h("filter",{id:e,x:"0%",y:"0%",width:"100%",height:"100%","color-interpolation-filters":"sRGB"}),n=h("feImage",{x:"0",y:"0",width:"100%",height:"100%",preserveAspectRatio:"none",result:"map"});return t.append(n,h("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"6",result:"frosted"})),t.append(h("feDisplacementMap",{in:"frosted",in2:"map",scale:"-16",xChannelSelector:"R",yChannelSelector:"G",result:"refracted"}),h("feGaussianBlur",{in:"refracted",stdDeviation:".12"})),{filter:t,image:n}}function N(){if(O.matches)return!1;let e=navigator.userAgent;return/Firefox/i.test(e)||/Safari/i.test(e)&&!/(Chrome|Chromium|CriOS)/i.test(e)?!1:CSS.supports?.("backdrop-filter","url(#knowledge-glass-support)")||CSS.supports?.("-webkit-backdrop-filter","url(#knowledge-glass-support)")||!1}function I(e,t,n){let o=Number.parseFloat(getComputedStyle(e).borderTopLeftRadius);return Number.isFinite(o)?Math.max(0,Math.min(o,Math.min(t,n)/2)):Math.min(t,n)*.16}function D(e,t,n){let o=Math.min(12,Math.max(4,Math.min(e,t)*.08)),s=`<svg viewBox="0 0 ${e} ${t}" xmlns="${M}">
|
|
2
2
|
<defs>
|
|
3
3
|
<clipPath id="shape"><rect width="${e}" height="${t}" rx="${n}"/></clipPath>
|
|
4
4
|
<linearGradient id="left" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="rgb(92 128 128)"/><stop offset="100%" stop-color="rgb(128 128 128)"/></linearGradient>
|
|
@@ -13,4 +13,4 @@
|
|
|
13
13
|
<rect width="${e}" height="${o}" fill="url(#top)"/>
|
|
14
14
|
<rect y="${t-o}" width="${e}" height="${o}" fill="url(#bottom)"/>
|
|
15
15
|
</g>
|
|
16
|
-
</svg>`;return`data:image/svg+xml,${encodeURIComponent(
|
|
16
|
+
</svg>`;return`data:image/svg+xml,${encodeURIComponent(s)}`}function B(e){if(m.has(e))return;if(e.classList.add("knowledge-glass-surface"),!N()){e.dataset.knowledgeGlass="fallback",m.set(e,{filter:void 0,observer:void 0,frame:0});return}let t=`knowledge-glass-filter-${++P}`,{filter:n,image:o}=_(t);H().append(n),e.dataset.knowledgeGlass="svg",e.style.setProperty("--knowledge-glass-filter",`url(#${t})`);let s={filter:n,observer:void 0,frame:0},c=()=>{if(s.frame=0,!e.isConnected)return;let a=e.getBoundingClientRect(),l=Math.max(1,Math.round(a.width)),i=Math.max(1,Math.round(a.height));o.setAttribute("href",D(l,i,I(e,l,i)))},r=()=>{s.frame===0&&(s.frame=requestAnimationFrame(c))};s.observer=typeof ResizeObserver>"u"?void 0:new ResizeObserver(r),s.observer?.observe(e),s.frame=requestAnimationFrame(c),m.set(e,s)}function V(e){if(v.has(e))return;e.classList.add("knowledge-border-surface"),e.style.setProperty("--knowledge-pointer-x","50%"),e.style.setProperty("--knowledge-pointer-y","50%");let t=0,n,o=()=>{if(t=0,n===void 0||!e.isConnected)return;let r=e.getBoundingClientRect(),a=Math.min(r.width,Math.max(0,n.x-r.left)),l=Math.min(r.height,Math.max(0,n.y-r.top)),i=Math.min(a,r.width-a,l,r.height-l),y=Math.min(1,Math.max(0,1-i/F)),w=Math.atan2(l-r.height/2,a-r.width/2)*(180/Math.PI)+90;e.style.setProperty("--knowledge-pointer-x",`${(a/Math.max(1,r.width)*100).toFixed(2)}%`),e.style.setProperty("--knowledge-pointer-y",`${(l/Math.max(1,r.height)*100).toFixed(2)}%`),e.style.setProperty("--knowledge-border-proximity",y.toFixed(3)),e.style.setProperty("--knowledge-border-angle",`${w.toFixed(2)}deg`)},s=r=>{n={x:r.clientX,y:r.clientY},t===0&&(t=requestAnimationFrame(o))},c=()=>{n=void 0,e.style.setProperty("--knowledge-border-proximity","0")};e.addEventListener("pointermove",s,{passive:!0}),e.addEventListener("pointerleave",c,{passive:!0}),v.set(e,()=>{t!==0&&cancelAnimationFrame(t),e.removeEventListener("pointermove",s),e.removeEventListener("pointerleave",c)})}function q(e,t){let n=e.dataset.knowledgeMotionKey;if(n===void 0)return!1;let o=g.get(n);return o!==void 0&&t-o<C}function K(e,t){let n=e.dataset.knowledgeMotionKey;if(n===void 0||(g.set(n,t),g.size<=4e3))return;let o=g.keys().next().value;o!==void 0&&g.delete(o)}function k(e){let t=e.scrollHeight-e.clientHeight-e.scrollTop;e.dataset.scrollTop=String(e.scrollTop<=2),e.dataset.scrollBottom=String(t<=2)}function j(e){if(u.has(e))return;let t=e.matches(".base-grid");e.classList.add("knowledge-animated-list"),e.dataset.knowledgeListLayout=t?"grid":"scroll",k(e);let n=()=>k(e);e.addEventListener("scroll",n,{passive:!0});let o=Array.from(e.querySelectorAll(T));if($.matches||typeof IntersectionObserver>"u"){for(let i of o)i.classList.add("knowledge-list-reveal","is-visible");u.set(e,()=>e.removeEventListener("scroll",n));return}let s=e.scrollHeight-e.clientHeight>2?e:null,c=new IntersectionObserver(i=>{let y=i.filter(f=>f.isIntersecting).sort((f,p)=>f.boundingClientRect.top-p.boundingClientRect.top),w=performance.now();y.forEach((f,p)=>{let E=f.target,S=t?52:38;E.style.setProperty("--knowledge-list-delay",`${Math.min(p,7)*S}ms`),E.classList.add("is-visible"),K(E,w)});for(let f of i){if(f.isIntersecting)continue;let p=f.target;p.classList.remove("is-visible"),p.style.setProperty("--knowledge-list-delay","0ms")}},{root:s,threshold:.12,rootMargin:"-4px 0px"}),r=performance.now();for(let i of o)i.classList.add("knowledge-list-reveal"),!t&&q(i,r)&&i.classList.add("is-visible");let a=0,l=0;a=requestAnimationFrame(()=>{a=0,l=requestAnimationFrame(()=>{l=0;for(let i of o)c.observe(i)})}),u.set(e,()=>{a!==0&&cancelAnimationFrame(a),l!==0&&cancelAnimationFrame(l),c.disconnect(),e.removeEventListener("scroll",n)})}function U(){for(let[e,t]of m)e.isConnected||(t.frame!==0&&cancelAnimationFrame(t.frame),t.observer?.disconnect(),t.filter?.remove(),m.delete(e));for(let[e,t]of v)e.isConnected||(t(),v.delete(e));for(let[e,t]of u)e.isConnected||(t(),u.delete(e))}function W(e=document){U();for(let t of b(e,x))B(t);for(let t of b(e,L))t.classList.add("knowledge-card-surface");for(let t of b(e,A))V(t);for(let t of b(e,R))t.classList.add("knowledge-glare-surface");for(let t of b(e,G))j(t)}function z(){for(let[e,t]of m)t.frame!==0&&cancelAnimationFrame(t.frame),t.observer?.disconnect(),t.filter?.remove(),e.classList.remove("knowledge-glass-surface"),e.removeAttribute("data-knowledge-glass"),e.style.removeProperty("--knowledge-glass-filter");for(let[e,t]of v)t(),e.classList.remove("knowledge-border-surface"),e.classList.remove("knowledge-card-surface"),e.style.removeProperty("--knowledge-pointer-x"),e.style.removeProperty("--knowledge-pointer-y");for(let[e,t]of u)t(),e.classList.remove("knowledge-animated-list");m.clear(),v.clear(),u.clear(),g.clear(),d?.remove(),d=void 0}window.DshKnowledgeEffects?.destroy();window.DshKnowledgeEffects={refresh:W,destroy:z};})();
|