@drscrewdriver/dsh-better-display 0.3.3-fork.2 → 0.3.3-fork.4
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/CHANGELOG.md +2 -0
- package/lib/client.js +25 -25
- package/lib/dsh-better-display.js +160 -7
- package/lib/types/dsh-better-display.d.ts +16 -16
- package/lib/types/dsh-better-display.js +92 -92
- package/package.json +1 -1
- package/tsdown.config.ts +4 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
- Client bundle id alignment (fork.4): the client bundle registered under the hardcoded `dsh-better-display` module id while the plugin's profile entry id is the scoped package name; the bundle now registers under `@drscrewdriver/dsh-better-display` so the host can mount it.
|
|
6
|
+
- Windows build fix (fork.3): the vendored `tools/client-build.js` server bundling predicate accepted only POSIX-style paths, so on Windows the server entry shipped with dangling `./skill-roots.ts` / `./skill-status.ts` imports and never activated. Relative modules are now inlined on every platform.
|
|
5
7
|
- Message bubbles: each final answer renders in a rounded bubble separating it from the page background, so text no longer sits directly on skinned hosts' wallpapers. Glass mode mixes the same tokens translucently, mirroring the user bubble's frosted treatment. A new 消息气泡 / Message bubbles switch in settings restores the flat layout when off (persisted as `bubbles` on `dsh.reader.v1`, default on).
|
|
6
8
|
|
|
7
9
|
## 0.3.3 — 2026-09-24
|
package/lib/client.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
window.__ModuleLoader__.load({
|
|
2
|
-
id: "dsh-better-display",
|
|
2
|
+
id: "@drscrewdriver/dsh-better-display",
|
|
3
3
|
factory: (require) => {
|
|
4
4
|
var module = { exports: {} };
|
|
5
5
|
var exports = module.exports;
|
|
@@ -726,12 +726,12 @@ ${trimmed}
|
|
|
726
726
|
return false;
|
|
727
727
|
}
|
|
728
728
|
//#endregion
|
|
729
|
-
//#region \0dshx-css-module:McpAppFrame.module.css.mjs
|
|
729
|
+
//#region \0dshx-css-module:E:\test\rewrite-agently\reffer-dsh-plugins\refer-dsh-better-display\src\client\McpAppFrame.module.css.mjs
|
|
730
730
|
const css$7 = "._6_z4Gq_card{border:1px solid var(--dsw-alias-border-l2,#00000014);background:var(--dsw-alias-bg-module-platform,transparent);border-radius:14px;margin:16px 0;transition:border-color .2s cubic-bezier(.22,1,.36,1),box-shadow .2s cubic-bezier(.22,1,.36,1);position:relative;overflow:hidden}._6_z4Gq_card:hover{border-color:var(--dsw-alias-border-l1,#00000029);box-shadow:0 2px 10px -2px #0000000a}._6_z4Gq_header{border-bottom:1px solid var(--dsw-alias-border-l2,#0000000f);background:var(--dsw-alias-interactive-bg-hover,#00000004);user-select:none;justify-content:space-between;align-items:center;height:36px;padding:0 14px;display:flex}._6_z4Gq_titleArea{align-items:center;gap:7px;min-width:0;display:flex}._6_z4Gq_icon{color:var(--dsw-alias-label-tertiary,#94a3b8);flex-shrink:0;justify-content:center;align-items:center;display:flex}._6_z4Gq_title{color:var(--dsw-alias-label-secondary,#64748b);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:500;overflow:hidden}._6_z4Gq_actions{align-items:center;gap:4px;display:flex}._6_z4Gq_iconBtn{width:24px;height:24px;color:var(--dsw-alias-label-tertiary,#94a3b8);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:0;transition:all .15s;display:inline-flex}._6_z4Gq_iconBtn:hover{background:var(--dsw-alias-interactive-bg-hover,#0000000f);color:var(--dsw-alias-label-primary,#0f172a)}._6_z4Gq_iconBtn:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary,#2563eb);outline-offset:1px}._6_z4Gq_iframeWrapper{background:0 0;width:100%;transition:height .25s cubic-bezier(.22,1,.36,1);position:relative}._6_z4Gq_iframe{background:0 0;border:none;width:100%;height:100%;display:block}._6_z4Gq_receipt{background:var(--dsw-alias-interactive-bg-hover,#22c55e0d);border-top:1px solid var(--dsw-alias-border-l2,#0000000f);color:var(--dsw-alias-label-primary,#0f172a);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 12px;padding:8px 14px;font-size:12px;line-height:18px;animation:.2s cubic-bezier(.22,1,.36,1) _6_z4Gq_slideUp;display:flex}._6_z4Gq_receiptPrompt{color:var(--dsw-alias-label-secondary,#64748b);background:var(--dsw-alias-bg-base,#00000008);border:1px solid var(--dsw-alias-border-l2,#0000000f);user-select:text;cursor:text;overflow-wrap:anywhere;border-radius:6px;flex:100%;padding:6px 10px;font-size:12px;line-height:18px}@keyframes _6_z4Gq_slideUp{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}._6_z4Gq_receiptSummary{color:var(--dsw-alias-state-business-primary,#16a34a);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:6px;font-weight:500;display:flex;overflow:hidden}._6_z4Gq_receiptHint{align-items:center;gap:6px;display:flex}._6_z4Gq_sendKbd{color:var(--dsw-alias-label-tertiary,#94a3b8);background:var(--dsw-alias-bg-base,#0000000a);border:1px solid var(--dsw-alias-border-l2,#00000014);cursor:pointer;border-radius:5px;align-items:center;gap:4px;padding:2px 8px;font-family:inherit;font-size:11px;transition:all .15s;display:inline-flex}._6_z4Gq_sendKbd:hover{background:var(--dsw-alias-interactive-bg-hover,#00000014);color:var(--dsw-alias-label-primary,#0f172a)}._6_z4Gq_sendKbd:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary,#2563eb);outline-offset:1px}._6_z4Gq_streamingPlaceholder{border:1px dashed var(--dsw-alias-border-l2,#0000001f);background:var(--dsw-alias-interactive-bg-hover,#00000004);color:var(--dsw-alias-label-secondary,#64748b);border-radius:14px;align-items:center;gap:10px;margin:16px 0;padding:16px 18px;font-size:13px;display:flex}._6_z4Gq_pulseDot{background:var(--dsw-alias-state-business-primary,#2563eb);border-radius:50%;width:7px;height:7px;animation:1.5s ease-in-out infinite _6_z4Gq_pulse}@keyframes _6_z4Gq_pulse{0%,to{opacity:.35;transform:scale(.9)}50%{opacity:1;transform:scale(1.15)}}";
|
|
731
|
-
const tagId$7 = "dsh-better-display/McpAppFrame.module.css";
|
|
731
|
+
const tagId$7 = "@drscrewdriver/dsh-better-display/McpAppFrame.module.css";
|
|
732
732
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$7) + "]") === null) {
|
|
733
733
|
const tag = document.createElement("style");
|
|
734
|
-
tag.dataset.plugin = "dsh-better-display";
|
|
734
|
+
tag.dataset.plugin = "@drscrewdriver/dsh-better-display";
|
|
735
735
|
tag.dataset.pluginCss = tagId$7;
|
|
736
736
|
tag.textContent = css$7;
|
|
737
737
|
document.head.appendChild(tag);
|
|
@@ -41656,12 +41656,12 @@ ${trimmed}
|
|
|
41656
41656
|
return [...new DOMParser().parseFromString(html, "text/html").body.childNodes].map(domToReact);
|
|
41657
41657
|
}
|
|
41658
41658
|
//#endregion
|
|
41659
|
-
//#region \0dshx-css-module:MarkdownText.module.css.mjs
|
|
41659
|
+
//#region \0dshx-css-module:E:\test\rewrite-agently\reffer-dsh-plugins\refer-dsh-better-display\src\client\markdown\MarkdownText.module.css.mjs
|
|
41660
41660
|
const css$6 = ".DWrY9q_markdown{overflow-wrap:anywhere;min-width:0;font:var(--dsw-font-markdown-base);color:var(--dsw-alias-label-primary)}.DWrY9q_markdown strong{font-weight:600}.DWrY9q_markdown h1{font:var(--dsw-font-markdown-h1);margin:32px 0 16px}.DWrY9q_markdown h2{font:var(--dsw-font-markdown-h2);margin:32px 0 16px}.DWrY9q_markdown h3{font:var(--dsw-font-markdown-h3);margin:32px 0 16px}.DWrY9q_markdown h4{font:var(--dsw-font-markdown-h4);margin:16px 0}.DWrY9q_markdown :where(h5,h6){font:var(--dsw-font-markdown-base-strong);margin:16px 0}.DWrY9q_markdown :where(h1,h2,h3,h4,h5,h6) strong{font-weight:inherit}.DWrY9q_markdown p{margin:16px 0}.DWrY9q_markdown :where(h4,h5,h6)+:where(ul,ol){margin-top:8px}.DWrY9q_markdown :where(h4,h5,h6):has(+:where(ul,ol)){margin-bottom:8px}.DWrY9q_markdown a{color:var(--dsw-alias-state-business-primary);transition:box-shadow var(--ds-transition-duration) var(--ds-ease-in-out);border:2px solid #fff0;border-width:2px 3px;margin-left:-3px;margin-right:-3px;text-decoration:none;position:relative}.DWrY9q_markdown a:hover,.DWrY9q_markdown a:focus{text-decoration:underline var(--dsw-alias-state-business-primary);outline:none}.DWrY9q_markdown a:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-state-business-primary)}.DWrY9q_markdown :where(ul,ol){margin:16px 0;padding-left:18px}.DWrY9q_markdown li:not(:first-child){margin-top:6px}.DWrY9q_markdown li>:where(ul,ol){margin-top:4px}.DWrY9q_markdown li::marker{color:var(--dsw-alias-label-secondary);line-height:28px}.DWrY9q_markdown :where(ul,ol) ol{padding-left:0;list-style-position:inside}.DWrY9q_markdown :where(ul,ol) ol li p{display:inline}.DWrY9q_markdown li>p{margin:8px 0}.DWrY9q_markdown li>:first-child{margin-top:0}.DWrY9q_markdown li>:last-child:not(.md-code-block){margin-bottom:0}.DWrY9q_markdown hr{background:var(--dsw-alias-border-l2);border:none;height:1px;margin:32px 0;display:block}.DWrY9q_markdown blockquote{border-left:2px solid var(--dsw-alias-label-caption);margin:16px 0 0;padding-left:14px}.DWrY9q_markdown pre{font-family:var(--ds-font-family-code);margin:16px 0;overflow:auto}.DWrY9q_markdown :not(pre)>code{box-sizing:border-box;font:var(--dsw-font-markdown-code);font-family:var(--ds-font-family-code);background-color:var(--dsw-alias-markdown-inline-code);border-radius:6px;align-items:center;padding:0 5px;display:inline-flex;font-size:.875em!important}.DWrY9q_markdown :where(h1,h2,h3,h4,h5,h6) code{font:inherit;font-family:var(--ds-font-family-code)}.DWrY9q_markdown .katex-display{max-width:100%;overflow:auto hidden}.DWrY9q_markdown input[type=checkbox]{accent-color:var(--dsw-alias-label-secondary);margin:0 8px 0 0}.DWrY9q_tableScroll{overscroll-behavior-x:contain;max-width:100%;overflow-x:auto}.DWrY9q_tableScroll.md-table-wide{padding-bottom:var(--dsh-scrollbar-width,8px);overflow-x:hidden}.DWrY9q_tableScroll.md-table-wide:hover,.DWrY9q_tableScroll.md-table-wide:focus-visible{padding-bottom:0;overflow-x:auto}.DWrY9q_tableScroll:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-state-business-primary);outline:none}.DWrY9q_tableScroll table{border-collapse:collapse;width:max-content;max-width:max-content}.DWrY9q_tableFill table{width:100%;max-width:none}.DWrY9q_tableScroll th{text-align:start;border-bottom:1px solid var(--dsw-alias-border-l3);font:var(--dsw-font-markdown-table-head);border-top:none;min-width:100px;max-width:min(30vw,320px);padding:10px 16px}.DWrY9q_tableScroll td{border-bottom:1px solid var(--dsw-alias-border-l2);font:var(--dsw-font-markdown-table);min-width:100px;max-width:min(30vw,320px);padding:10px 16px}.DWrY9q_tableScroll th:first-child,.DWrY9q_tableScroll td:first-child{padding-left:0}.DWrY9q_tableScroll td:last-child{padding-right:0}.DWrY9q_tableScroll table code{font-size:13px}.DWrY9q_markdown>:first-child,.DWrY9q_markdown p:first-child{margin-top:0!important}.DWrY9q_markdown>:last-child,.DWrY9q_markdown p:last-child{margin-bottom:0!important}.DWrY9q_imageAlt{color:var(--dsw-alias-label-tertiary);font-style:italic}.DWrY9q_image{background:var(--dsw-alias-bg-base);object-fit:contain;border-radius:8px;width:auto;max-width:100%;height:auto;margin:0;display:block}.DWrY9q_fileMention{font:inherit;color:var(--dsw-alias-state-business-primary);cursor:pointer;background:0 0;border:none;margin:0;padding:0;text-decoration:none}.DWrY9q_fileMention:hover,.DWrY9q_fileMention:focus{text-decoration:underline var(--dsw-alias-state-business-primary);text-underline-offset:3px;outline:none}";
|
|
41661
|
-
const tagId$6 = "dsh-better-display/MarkdownText.module.css";
|
|
41661
|
+
const tagId$6 = "@drscrewdriver/dsh-better-display/MarkdownText.module.css";
|
|
41662
41662
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$6) + "]") === null) {
|
|
41663
41663
|
const tag = document.createElement("style");
|
|
41664
|
-
tag.dataset.plugin = "dsh-better-display";
|
|
41664
|
+
tag.dataset.plugin = "@drscrewdriver/dsh-better-display";
|
|
41665
41665
|
tag.dataset.pluginCss = tagId$6;
|
|
41666
41666
|
tag.textContent = css$6;
|
|
41667
41667
|
document.head.appendChild(tag);
|
|
@@ -42264,12 +42264,12 @@ ${trimmed}
|
|
|
42264
42264
|
}
|
|
42265
42265
|
const readerPathImages = { resolve: (value) => typeof window === "undefined" ? void 0 : localPathMediaUrl(window.location.protocol, window.location.origin, value) };
|
|
42266
42266
|
//#endregion
|
|
42267
|
-
//#region \0dshx-css-module:Reader.module.css.mjs
|
|
42267
|
+
//#region \0dshx-css-module:E:\test\rewrite-agently\reffer-dsh-plugins\refer-dsh-better-display\src\client\Reader.module.css.mjs
|
|
42268
42268
|
const css$5 = ".WM86Cq_root{color:var(--dsw-alias-label-primary);padding:16px calc(var(--dsh-composer-side-clearance,16px) + 16px) 24px;overflow-anchor:auto;flex:none;min-width:0;font-family:inherit;font-size:16px;line-height:28px;container-type:inline-size}.WM86Cq_column{max-width:var(--dsh-chat-content-width,748px);flex-direction:column;gap:22px;width:100%;min-width:0;margin:0 auto;display:flex}.WM86Cq_toolbar{min-height:32px;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-base);-webkit-backdrop-filter:blur(12px);justify-content:flex-end;align-items:center;gap:6px;padding:0;font-size:12px;display:flex;position:sticky;top:0}.WM86Cq_turnProcessSticky{background:var(--dsw-alias-bg-base);-webkit-backdrop-filter:blur(12px);align-items:center;min-height:32px;display:flex;position:sticky}.WM86Cq_turnProcessSticky .WM86Cq_disclosureButton{min-height:32px}.WM86Cq_textButton,.WM86Cq_historyButton,.WM86Cq_iconButton,.WM86Cq_jump,.WM86Cq_disclosureButton,.WM86Cq_imageOpen,.WM86Cq_dialogClose{font:inherit;cursor:pointer}.WM86Cq_textButton{color:var(--dsw-alias-label-secondary);white-space:nowrap;background:0 0;border:0;border-radius:6px;padding:2px 6px}.WM86Cq_textButton:hover,.WM86Cq_iconButton:hover,.WM86Cq_disclosureButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.WM86Cq_root button:focus-visible,.WM86Cq_root summary:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:3px}.WM86Cq_turn{flex-direction:column;gap:14px;min-width:0;display:flex}.WM86Cq_turn+.WM86Cq_turn{margin-top:12px}.WM86Cq_userCluster{flex-direction:column;align-self:flex-end;align-items:flex-end;gap:8px;min-width:0;max-width:min(525px,82%);margin-bottom:4px;display:flex}.WM86Cq_userImages{flex-direction:column;align-items:flex-end;min-width:0;max-width:100%;display:flex}.WM86Cq_userImages .WM86Cq_imageFigure{align-self:flex-end}.WM86Cq_user{background:var(--dsw-specific-bubble);max-width:100%;color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;box-sizing:border-box;border-radius:22px;align-self:flex-end;padding:10px 16px;line-height:24px}.WM86Cq_user .WM86Cq_blocks{gap:10px}.WM86Cq_answer{overflow-wrap:anywhere;flex-direction:column;min-width:0;display:flex}.WM86Cq_readingText{min-width:0}.WM86Cq_reasonPlain{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;color:inherit}.WM86Cq_readingText button{min-width:24px;min-height:24px}.WM86Cq_streamWord{display:inline-block}.WM86Cq_streamInlineWord{display:inline}.WM86Cq_streamWord,.WM86Cq_streamInlineWord,.WM86Cq_streamAtom{opacity:1;filter:none}.WM86Cq_streamAtom{min-width:0}@media (prefers-reduced-motion:reduce){.WM86Cq_streamWord,.WM86Cq_streamInlineWord,.WM86Cq_streamAtom{opacity:1!important;filter:none!important}}.WM86Cq_retiringContent{min-width:0}.WM86Cq_retiringContent[data-reader-retiring=retiring]{overflow:hidden}.WM86Cq_mainFlow,.WM86Cq_blocks{flex-direction:column;gap:16px;min-width:0;display:flex}.WM86Cq_mainFlow:empty,.WM86Cq_blocks:empty{display:none}.WM86Cq_blocks>:first-child{margin-top:0}.WM86Cq_blocks>:last-child{margin-bottom:0}.WM86Cq_blocks .md-table-wide{max-width:100%}.WM86Cq_disclosure{min-width:0}.WM86Cq_disclosureButton{max-width:100%;min-height:32px;color:var(--dsw-alias-label-tertiary);text-align:left;background:0 0;border:0;border-radius:7px;align-items:center;gap:6px;margin-left:-6px;padding:4px 6px;font-size:14px;font-weight:400;line-height:24px;display:inline-flex}.WM86Cq_disclosure[data-reader-status-only]{align-items:center;min-height:32px;display:flex}.WM86Cq_statusText{min-width:0;max-width:100%;color:var(--dsw-alias-label-secondary);font-size:14px;font-weight:400;line-height:24px;display:inline-flex}.WM86Cq_srOnly{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.WM86Cq_think{--think-swap:.15s;--think-gap:50ms;--think-distance:8px;--think-blur:2px;--think-shimmer:2s;--think-base:var(--dsw-alias-label-secondary);--think-highlight:var(--dsw-alias-label-primary);--think-ease:ease-in-out;text-align:left;max-width:100%;display:inline-block;position:relative}.WM86Cq_thinkSizer{visibility:hidden;white-space:nowrap;display:block}.WM86Cq_thinkText{color:var(--think-base);white-space:nowrap;text-overflow:ellipsis;filter:blur();opacity:1;transition:transform var(--think-swap) var(--think-ease), filter var(--think-swap) var(--think-ease), opacity var(--think-swap) var(--think-ease);display:block;position:absolute;top:0;left:0;right:0;overflow:hidden;transform:translateY(0)}.WM86Cq_think[data-reader-status-phase=running] .WM86Cq_thinkText[data-reader-status-copy=current]{transition-delay:var(--think-gap)}.WM86Cq_think:not([data-reader-status-phase=idle]) .WM86Cq_thinkText{will-change:transform, filter, opacity}@supports (background-clip:text){.WM86Cq_think[data-active=true] .WM86Cq_thinkText:before{content:attr(data-text);pointer-events:none;background-image:linear-gradient(90deg, transparent 0%, transparent 40%, var(--think-highlight) 50%, transparent 60%, transparent 100%);color:#0000;-webkit-text-fill-color:transparent;animation:WM86Cq_thinkShimmer var(--think-shimmer) linear infinite;background-repeat:no-repeat;background-size:400% 100%;-webkit-background-clip:text;background-clip:text;position:absolute;inset:0}}@keyframes WM86Cq_thinkShimmer{0%{background-position:100% 0}to{background-position:0 0}}.WM86Cq_thinkText.WM86Cq_isExit{transform:translateY(calc(var(--think-distance) * -1));filter:blur(var(--think-blur));opacity:0}.WM86Cq_thinkText.WM86Cq_isEnterStart{transform:translateY(var(--think-distance));filter:blur(var(--think-blur));opacity:0;transition:none}[data-motion=off] .WM86Cq_thinkText{filter:none!important;opacity:1!important;transition:none!important;transform:none!important}[data-motion=off] .WM86Cq_thinkText[data-reader-status-copy=outgoing],[data-motion=off] .WM86Cq_thinkText:before{display:none!important}@media (prefers-reduced-motion:reduce),(forced-colors:active){.WM86Cq_thinkText{filter:none!important;opacity:1!important;transition:none!important;transform:none!important}.WM86Cq_thinkText[data-reader-status-copy=outgoing],.WM86Cq_thinkText:before{display:none!important}}.WM86Cq_processMeta{opacity:0;grid-template-rows:0fr;transition:grid-template-rows .26s cubic-bezier(.22,1,.36,1),opacity .16s ease-out;display:grid}.WM86Cq_processMeta[data-open=true]{opacity:1;grid-template-rows:1fr}.WM86Cq_processMetaInner{min-height:0;overflow:hidden}.WM86Cq_processMetaLine{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:baseline;gap:8px;padding:8px 0 0 16px;font-size:12px;line-height:20px;display:flex}.WM86Cq_processMetaLine .WM86Cq_meta{color:inherit}.WM86Cq_chevron{stroke:currentColor;fill:none;stroke-width:1.4px;stroke-linecap:round;stroke-linejoin:round;flex:none;transition:transform .26s cubic-bezier(.22,1,.36,1)}.WM86Cq_chevron[data-open=true]{transform:rotate(90deg)}.WM86Cq_disclosureBody{transform-origin:top;will-change:height, opacity, transform;height:0;overflow:hidden}.WM86Cq_processContents{border-left:1px solid var(--dsw-alias-border-l2);padding:3px 0 2px var(--reader-gutter,16px);margin:0 0 0 var(--reader-rail,6px);color:var(--dsw-alias-label-secondary);font-size:14px;line-height:24px;display:flow-root}.WM86Cq_processContents>:last-child{margin-bottom:0}.WM86Cq_processCommentary{color:var(--dsw-alias-label-secondary);margin:4px 0 8px var(--reader-rail,6px);padding-left:var(--reader-gutter,16px);border-left:1px solid var(--dsw-alias-border-l2);font-size:14px;line-height:24px}.WM86Cq_processFrame{min-width:0}.WM86Cq_toolActivity{min-width:0;color:var(--dsw-alias-label-secondary)}.WM86Cq_nativeToolRow{min-width:0}.WM86Cq_rowSeparator{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}.WM86Cq_nativeToolSummary{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-tertiary);flex:1;font-size:14px;line-height:24px;overflow:hidden}.WM86Cq_nativeToolRow:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:3px;border-radius:4px}.WM86Cq_toolHeading{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:11px;grid-template-columns:20px minmax(0,1fr) auto;align-items:start;gap:10px;padding:10px 14px 4px;display:grid}.WM86Cq_toolHeading:hover{background:var(--dsw-alias-interactive-bg-hover)}.WM86Cq_toolHeading:focus-visible{outline-offset:-3px!important}.WM86Cq_toolGlyph{height:22px;color:var(--dsw-alias-label-secondary);justify-content:center;align-items:center;display:flex}.WM86Cq_toolHeadingCopy{flex-direction:column;gap:3px;min-width:0;display:flex}.WM86Cq_toolTitle{overflow-wrap:anywhere;font-size:13px;font-weight:500;line-height:22px}.WM86Cq_toolTarget{-webkit-line-clamp:2;overflow-wrap:anywhere;color:var(--dsw-alias-label-secondary);-webkit-box-orient:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:19px;display:-webkit-box;overflow:hidden}.WM86Cq_toolHeadingState{min-height:22px;color:var(--dsw-alias-label-secondary);align-items:center;gap:7px;display:flex}.WM86Cq_diffStat{font-variant-numeric:tabular-nums;font-feature-settings:\"tnum\";white-space:nowrap;flex:none;gap:6px;margin-left:8px;font-size:11px;line-height:18px;display:inline-flex}.WM86Cq_diffAdded{color:var(--dsw-alias-state-success-primary,#2f9e63)}.WM86Cq_diffRemoved{color:var(--dsw-alias-state-error-primary,#d1483c)}.WM86Cq_summaryRow{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;max-width:100%;display:flex}.WM86Cq_summaryRow>.WM86Cq_diffStatRoot{flex:none;margin-left:auto}.WM86Cq_summaryRow>:first-child{min-width:0}.WM86Cq_diffStatRoot{flex:none;position:relative}.WM86Cq_diffStatButton{cursor:pointer;font:inherit;font-variant-numeric:tabular-nums;font-feature-settings:\"tnum\";color:var(--dsw-alias-label-secondary);background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:6px;padding:2px 8px;font-size:11px;line-height:16px;transition:background .12s,border-color .12s;display:inline-flex}.WM86Cq_diffStatButton:hover,.WM86Cq_diffStatButton:focus-visible,.WM86Cq_diffStatButton[aria-expanded=true]{background:var(--dsw-alias-bg-module-platform,#7f7f7f1a);border-color:var(--dsw-alias-border-l2,#7f7f7f47)}.WM86Cq_diffStatButton:focus-visible{outline:none}.WM86Cq_diffStatButton[aria-expanded=true] .WM86Cq_diffCaret{opacity:1}.WM86Cq_diffOverlayRow{box-sizing:border-box;flex:100%;width:100%;min-width:0;max-width:100%;margin-top:6px}.WM86Cq_diffOverlay{box-sizing:border-box;background:var(--dsw-alias-bg-module-platform,#7f7f7f14);border:1px solid var(--dsw-alias-border-l2,#80808038);border-radius:10px;flex-direction:column;width:100%;min-width:0;max-width:100%;padding:8px;display:flex;overflow:hidden}.WM86Cq_diffTabs{scrollbar-width:thin;flex-wrap:nowrap;gap:6px;max-width:100%;margin-bottom:4px;padding-bottom:6px;display:flex;overflow-x:auto}.WM86Cq_diffTab{text-overflow:ellipsis;white-space:nowrap;cursor:pointer;max-width:220px;font:inherit;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-base,#fffc);border:1px solid var(--dsw-alias-border-l2,#80808033);border-radius:6px;flex:none;padding:3px 10px;font-size:11px;line-height:16px;transition:all .12s;overflow:hidden}.WM86Cq_diffTab:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.WM86Cq_diffTab[data-active]{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-state-business-primary,#1e90ff);background:var(--dsw-alias-bg-base);font-weight:500}.WM86Cq_diffScrollArea{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;border:1px solid var(--dsw-alias-border-l2,#80808026);background:var(--dsw-alias-markdown-code-block,#0000000a);border-radius:8px;max-height:420px;overflow:auto}.WM86Cq_diffScrollArea [data-diff]{background:0 0!important;border-radius:0!important;margin:0!important}.WM86Cq_diffCaret{opacity:.6;flex:none;width:10px;font-size:10px}.WM86Cq_diffPath{text-overflow:ellipsis;white-space:nowrap;text-align:left;direction:rtl;flex:auto;min-width:0;overflow:hidden}.WM86Cq_diffStat{font-variant-numeric:tabular-nums;flex:none;gap:6px;font-size:11px;display:inline-flex}.WM86Cq_diffHunkBody{flex-direction:column;gap:4px;padding:2px 7px 7px 25px;display:flex}.WM86Cq_diffLines{font-size:11px;line-height:1.55;font-family:var(--dsw-font-mono,ui-monospace, SFMono-Regular, Menlo, monospace);white-space:pre;border-radius:6px;margin:0;padding:6px 8px;overflow-x:auto}.WM86Cq_diffLines[data-side=removed]{background:#d1483c1f}.WM86Cq_diffLines[data-side=added]{background:#2f9e631f}.WM86Cq_diffLineRemoved,.WM86Cq_diffLineAdded{display:block}.WM86Cq_diffLineRemoved{color:var(--dsw-alias-state-error-primary,#d1483c)}.WM86Cq_diffLineAdded{color:var(--dsw-alias-state-success-primary,#2f9e63)}.WM86Cq_diffEmpty{color:var(--dsw-alias-label-secondary);margin:0;padding:2px 0;font-size:11px}.WM86Cq_nativeToolSummary[data-running]{background-image:linear-gradient(90deg, currentColor 0%, currentColor 35%, color-mix(in srgb, currentColor 35%, transparent) 50%, currentColor 65%, currentColor 100%);-webkit-text-fill-color:transparent;background-position:100% 0;background-repeat:no-repeat;background-size:300% 100%;-webkit-background-clip:text;background-clip:text;animation:1.6s linear infinite WM86Cq_readerStepShimmer}@keyframes WM86Cq_readerStepShimmer{to{background-position:0 0}}.WM86Cq_toolElapsed[data-slow]{opacity:1;color:var(--dsw-alias-state-warning-primary,#d8862c);font-weight:500}.WM86Cq_toolElapsed{opacity:.72;font-variant-numeric:tabular-nums;font-feature-settings:\"tnum\";white-space:nowrap;flex:none;margin-left:8px;font-size:11px;line-height:18px}[data-motion=off] .WM86Cq_nativeToolSummary[data-running]{-webkit-text-fill-color:currentColor;background-image:none;animation:none!important}@media (prefers-reduced-motion:reduce){.WM86Cq_nativeToolSummary[data-running]{-webkit-text-fill-color:currentColor;background-image:none;animation:none!important}}.WM86Cq_toolState{white-space:nowrap;flex:none;margin-left:8px;font-size:11px;line-height:18px}.WM86Cq_toolState[data-phase=preparing],.WM86Cq_toolState[data-phase=running]{color:var(--dsw-alias-state-business-primary)}.WM86Cq_toolState[data-phase=preparing]:before,.WM86Cq_toolState[data-phase=running]:before{content:\"\";vertical-align:middle;background:currentColor;border-radius:50%;width:6px;height:6px;margin-right:6px;animation:1.4s ease-in-out infinite WM86Cq_readerRunningGlow;display:inline-block}@keyframes WM86Cq_readerRunningGlow{0%{box-shadow:0 0 0 0 color-mix(in srgb, currentColor 60%, transparent);opacity:1}70%{opacity:.7;box-shadow:0 0 0 7px #0000}to{opacity:1;box-shadow:0 0 #0000}}[data-motion=off] .WM86Cq_toolState[data-phase=preparing]:before,[data-motion=off] .WM86Cq_toolState[data-phase=running]:before{animation:none!important}@media (prefers-reduced-motion:reduce){.WM86Cq_toolState[data-phase=preparing]:before,.WM86Cq_toolState[data-phase=running]:before{animation:none!important}}.WM86Cq_toolState[data-phase=failed]{color:var(--dsw-alias-state-error-primary)}.WM86Cq_toolState[data-phase=interrupted]{color:inherit;opacity:.7}.WM86Cq_toolLedger{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:baseline;gap:4px 12px;padding:10px 14px 0;font-size:11px;line-height:18px;display:flex}.WM86Cq_toolEngine{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.WM86Cq_toolDetails{border:1px solid var(--dsw-alias-border-l2);border-radius:8px;min-width:0;margin:6px 0 0 22px;overflow:hidden}.WM86Cq_toolTabs{align-items:center;gap:15px;padding:0 14px;display:flex}.WM86Cq_toolTabs>button{font:inherit;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:10px 1px 8px;font-size:12px;line-height:20px}.WM86Cq_toolTabs>button[aria-selected=true]{color:var(--dsw-alias-label-primary);border-bottom-color:var(--dsw-alias-state-business-primary)}.WM86Cq_toolPanel{flex-direction:column;gap:12px;min-width:0;padding:12px 14px 14px;font-size:13px;line-height:22px;display:flex}.WM86Cq_toolPanel:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-3px}.WM86Cq_toolDetailNote{color:var(--dsw-alias-label-secondary);margin:0 0 9px;font-size:12px;line-height:20px}.WM86Cq_toolRawLabel{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px;font-weight:500}.WM86Cq_toolRaw{background:var(--dsw-alias-bg-module-platform);max-height:400px;color:var(--dsw-alias-label-primary);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:8px;margin:0;padding:12px;font:12px/20px ui-monospace,SFMono-Regular,Menlo,monospace;overflow:auto}.WM86Cq_systemPrompt{background:var(--dsw-alias-bg-module-platform);max-height:320px;color:var(--dsw-alias-label-primary);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:8px;margin:0;padding:12px;font:12px/20px ui-monospace,SFMono-Regular,Menlo,monospace;overflow:auto}.WM86Cq_commandInput{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.WM86Cq_toolReceipt .WM86Cq_blocks,.WM86Cq_toolDocument .WM86Cq_blocks{font-size:13px;line-height:22px}.WM86Cq_toolChildren{margin:0 14px 12px var(--reader-rail,6px);padding-left:var(--reader-gutter,16px);border-left:1px solid var(--dsw-alias-border-l2);flex-direction:column;gap:9px;display:flex}@container (width<=420px){.WM86Cq_toolHeading{grid-template-columns:16px minmax(0,1fr) auto;gap:7px;padding:11px 10px 6px}.WM86Cq_toolHeadingState{gap:4px}.WM86Cq_toolLedger{padding-left:33px;padding-right:10px}.WM86Cq_toolPanel{padding:10px}}@media (pointer:coarse){.WM86Cq_toolTabs>button{min-height:44px}}.WM86Cq_reasonCard{--reason-preview-height:224px;--reason-hold:.84s;--reason-step:.5s;--reason-lines:2;--reason-fade:28px;--reason-ease:cubic-bezier(.22, 1, .36, 1);border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-module-platform);min-width:0;scroll-margin-block:16px calc(var(--dsh-composer-height,152px) + 16px);border-radius:12px;position:relative;overflow:hidden}.WM86Cq_reasonHeading{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;justify-content:space-between;align-items:baseline;gap:12px;padding:10px 16px 0;font-size:12px;line-height:20px;display:flex}.WM86Cq_reasonCard[data-overflow=false][data-expanded=false]{background:0 0;border-color:#0000;border-radius:0}.WM86Cq_reasonCard[data-overflow=false][data-expanded=false] .WM86Cq_reasonHeading{padding:0}.WM86Cq_reasonCard[data-overflow=false][data-expanded=false] .WM86Cq_reasonText{padding:4px 0 0 22px}.WM86Cq_reasonLabel{font-weight:500}.WM86Cq_reasonViewport{max-height:var(--reason-preview-height);scroll-behavior:auto;overflow-anchor:none;overscroll-behavior-y:contain;scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l1) transparent;position:relative;overflow:auto}.WM86Cq_reasonCard[data-expanded=true] .WM86Cq_reasonViewport{max-height:min(60vh, 560px, var(--reason-reading-height,560px))}.WM86Cq_reasonViewport[data-edges=both],.WM86Cq_reasonCard[data-following=true][data-overflow=true] .WM86Cq_reasonViewport{-webkit-mask-image:linear-gradient(transparent 0, black var(--reason-fade), black calc(100% - var(--reason-fade)), transparent 100%);mask-image:linear-gradient(transparent 0, black var(--reason-fade), black calc(100% - var(--reason-fade)), transparent 100%)}.WM86Cq_reasonViewport[data-edges=top]{-webkit-mask-image:linear-gradient(transparent 0, black var(--reason-fade), black 100%);mask-image:linear-gradient(transparent 0, black var(--reason-fade), black 100%)}.WM86Cq_reasonViewport[data-edges=bottom]{-webkit-mask-image:linear-gradient(black 0, black calc(100% - var(--reason-fade)), transparent 100%);mask-image:linear-gradient(black 0, black calc(100% - var(--reason-fade)), transparent 100%)}.WM86Cq_reasonCard[data-expanded=true] .WM86Cq_reasonViewport{-webkit-mask-image:none;mask-image:none}.WM86Cq_reasonViewport:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-3px}.WM86Cq_reasonTrack{position:relative;transform:translateY(0)}.WM86Cq_reasonCard[data-following=true] .WM86Cq_reasonTrack{will-change:transform}.WM86Cq_reasonText{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;padding:8px 16px 16px;font-size:14px;line-height:24px}.WM86Cq_reasonText .WM86Cq_readingText>div{font-size:inherit;line-height:inherit;color:inherit}.WM86Cq_reasonFooter{color:var(--dsw-alias-label-secondary);justify-content:space-between;align-items:center;gap:8px;padding:2px 10px 8px;font-size:12px;line-height:20px;display:flex}.WM86Cq_reasonAction{min-height:28px;color:inherit;font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;gap:5px;padding:4px 6px;display:inline-flex}.WM86Cq_reasonAction:hover{background:var(--dsw-alias-interactive-bg-hover)}.WM86Cq_reasonAction:disabled{cursor:default;opacity:.65}.WM86Cq_reasonAction svg{fill:none;stroke:currentColor;stroke-width:1.3px;stroke-linecap:round;stroke-linejoin:round;flex:none}.WM86Cq_reasonCaption{padding-left:6px}@container (width<=480px){.WM86Cq_reasonCard{--reason-preview-height:192px}}@media (pointer:coarse){.WM86Cq_reasonAction{min-height:44px}}@media (prefers-reduced-motion:reduce){.WM86Cq_reasonTrack{will-change:auto!important;transition:none!important;transform:none!important}}@media (forced-colors:active){.WM86Cq_reasonViewport{-webkit-mask-image:none!important;mask-image:none!important}}.WM86Cq_processItem,.WM86Cq_tool{min-width:0;margin:0 0 18px}.WM86Cq_processLabel{color:var(--dsw-alias-label-tertiary);align-items:baseline;gap:12px;margin:0 0 6px;font-size:12px;line-height:20px;display:flex}.WM86Cq_processFootnote{color:var(--dsw-alias-label-tertiary);margin:14px 0 0;font-size:12px;line-height:20px}.WM86Cq_detail{color:var(--dsw-alias-label-secondary);font-size:13px;line-height:22px}.WM86Cq_detail>summary{cursor:pointer;padding:3px 0}.WM86Cq_detail[open]>summary{margin-bottom:8px}.WM86Cq_tool>.WM86Cq_tool{margin:10px 0 0 12px}.WM86Cq_meta{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:20px}.WM86Cq_stopped{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-tertiary);border-radius:6px;align-self:flex-start;margin-top:12px;padding:0 6px;font-size:11px;line-height:18px}.WM86Cq_compactionRow{box-sizing:border-box;flex-direction:column;align-items:center;width:100%;margin:16px 0;display:flex}.WM86Cq_compactionLine{width:100%;color:var(--dsw-alias-label-tertiary);user-select:none;justify-content:center;align-items:center;gap:12px;font-size:11px;line-height:18px;display:flex}.WM86Cq_compactionLine:before,.WM86Cq_compactionLine:after{content:\"\";background:var(--dsw-alias-border-l1);opacity:.7;flex:1;height:1px}.WM86Cq_compactionRow>.WM86Cq_compactionLine{animation:.52s cubic-bezier(.4,0,.2,1) both WM86Cq_compactionLineIn}.WM86Cq_compactionRow>.WM86Cq_compactionLine>.WM86Cq_compactionPill{animation:.42s cubic-bezier(.34,1.4,.64,1) .12s both WM86Cq_compactionPillIn}.WM86Cq_compactionRow>.WM86Cq_compactionLine .WM86Cq_compactionIcon{animation:.9s cubic-bezier(.4,0,.2,1) .2s both WM86Cq_compactionDial}@keyframes WM86Cq_compactionLineIn{0%{opacity:0;transform:scaleX(.6)}to{opacity:1;transform:scaleX(1)}}@keyframes WM86Cq_compactionPillIn{0%{opacity:0;transform:translateY(-6px)scale(.94)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes WM86Cq_compactionDial{0%{opacity:0;transform:rotate(-140deg)}to{opacity:.7;transform:rotate(0)}}[data-motion=off] .WM86Cq_compactionRow>.WM86Cq_compactionLine,[data-motion=off] .WM86Cq_compactionRow>.WM86Cq_compactionLine>.WM86Cq_compactionPill,[data-motion=off] .WM86Cq_compactionRow>.WM86Cq_compactionLine .WM86Cq_compactionIcon{animation:none!important}@media (prefers-reduced-motion:reduce){.WM86Cq_compactionRow>.WM86Cq_compactionLine,.WM86Cq_compactionRow>.WM86Cq_compactionLine>.WM86Cq_compactionPill,.WM86Cq_compactionRow>.WM86Cq_compactionLine .WM86Cq_compactionIcon{animation:none!important}}.WM86Cq_compactionPill{background:var(--dsw-alias-bg-module-platform);border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-tertiary);border-radius:12px;align-items:center;gap:6px;padding:2px 10px;font-family:inherit;font-size:11px;line-height:18px;display:inline-flex}.WM86Cq_compactionButton{cursor:pointer;transition:color .14s,border-color .14s,background-color .14s}.WM86Cq_compactionButton:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l2);background:var(--dsw-alias-interactive-bg-hover)}.WM86Cq_compactionIcon{opacity:.7;flex:none;width:12px;height:12px}.WM86Cq_compactionToggle{opacity:.8;margin-left:2px;font-size:10px}.WM86Cq_compactionSummaryBox{background:var(--dsw-alias-bg-module-platform);border:1px solid var(--dsw-alias-border-l2);width:100%;max-width:680px;color:var(--dsw-alias-label-secondary);box-sizing:border-box;border-radius:8px;margin-top:10px;padding:12px 16px;font-size:12px;line-height:20px}.WM86Cq_compactionSummaryHeader{color:var(--dsw-alias-label-tertiary);border-bottom:1px dashed var(--dsw-alias-border-l1);margin-bottom:8px;padding-bottom:4px;font-size:11px;font-weight:500}.WM86Cq_notice,.WM86Cq_error,.WM86Cq_attention{overflow-wrap:anywhere;border-radius:10px;padding:12px 14px;font-size:13px;line-height:20px}.WM86Cq_notice{background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2)}.WM86Cq_error{color:var(--dsw-alias-label-primary);background:#ef44440f;border:1px solid #ef444438;align-items:flex-start;gap:10px;display:flex}.WM86Cq_errorIcon{color:#ef4444;flex:none;width:16px;height:16px;margin-top:2px}.WM86Cq_errorCopy{flex:1;min-width:0}.WM86Cq_errorTitle{color:#dc2626;align-items:center;gap:8px;margin-bottom:2px;font-weight:500;display:flex}.WM86Cq_errorMessage{color:var(--dsw-alias-label-secondary);word-break:break-word;margin:0;font-size:12px;line-height:18px}.WM86Cq_errorCode{color:#dc2626;background:#ef44441f;border-radius:4px;padding:1px 5px;font-family:inherit;font-size:11px}.WM86Cq_attention{border:1px solid var(--dsw-alias-state-business-primary);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-base);flex-direction:column;gap:3px;display:flex}.WM86Cq_attention span{color:var(--dsw-alias-label-secondary)}.WM86Cq_unknown{background:var(--dsw-alias-bg-module-platform);border:1px solid var(--dsw-alias-border-l2);border-radius:10px;padding:12px 14px;font-size:13px;line-height:22px}.WM86Cq_unknown p{margin:0 0 6px}.WM86Cq_historyButton{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);background:0 0;border-radius:8px;align-self:center;padding:4px 12px;font-size:12px}.WM86Cq_historyButton:disabled{opacity:.55;cursor:default}.WM86Cq_empty{color:var(--dsw-alias-label-tertiary);text-align:center;padding:40px 0}.WM86Cq_answerActions{align-items:center;gap:8px;min-height:28px;margin:13px 0 0 -6px;display:flex}.WM86Cq_userActions{align-items:center;gap:8px;min-height:28px;display:flex}.WM86Cq_messageClock{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:13px;line-height:24px}.WM86Cq_iconButton{color:var(--dsw-alias-label-tertiary);background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;padding:6px;display:inline-flex}.WM86Cq_iconButton svg{fill:none;stroke:currentColor;stroke-width:1.2px;stroke-linecap:round;stroke-linejoin:round}.WM86Cq_imageFigure{box-sizing:border-box;align-self:flex-start;width:min(100%,360px);max-width:100%;margin:0}.WM86Cq_imageFrame{background:var(--dsw-alias-bg-module-platform);border:1px solid var(--dsw-alias-border-l2);box-sizing:border-box;border-radius:12px;max-width:100%;min-height:96px;max-height:440px;position:relative;overflow:hidden}.WM86Cq_imageOpen{background:0 0;border:0;width:100%;height:100%;padding:0;display:flex;position:absolute;inset:0}.WM86Cq_imageOpen img{object-fit:contain;opacity:0;width:100%;height:100%;transition:opacity .2s cubic-bezier(.4,0,.2,1);display:block}.WM86Cq_imageOpen img[data-ready=true]{opacity:1}.WM86Cq_pendingImage{object-fit:contain;width:100%;max-width:100%;height:100%;display:block}.WM86Cq_imagePlaceholder{color:var(--dsw-alias-label-tertiary);pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:13px;display:flex;position:absolute;inset:0}.WM86Cq_imagePlaceholder button{pointer-events:auto}.WM86Cq_imageFigure figcaption{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;margin-top:6px;font-size:12px;line-height:20px}.WM86Cq_imageDialog{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-primary);border-radius:16px;max-width:90vw;max-height:90vh;padding:38px 20px 20px}.WM86Cq_imageDialog::backdrop{background:var(--dsw-alias-bg-mask-photo)}.WM86Cq_imageDialog img{object-fit:contain;max-width:82vw;max-height:75vh;display:block}.WM86Cq_dialogClose{color:inherit;background:0 0;border:0;border-radius:8px;width:32px;height:32px;font-size:24px;position:absolute;top:4px;right:8px}.WM86Cq_jumpDock{bottom:calc(var(--dsh-composer-height,152px) + 16px);z-index:8;pointer-events:none;justify-content:flex-end;height:0;display:flex;position:sticky}.WM86Cq_deliverablesRoot{grid-template-columns:max-content minmax(0,1fr);align-items:start;column-gap:10px;margin-top:14px;font-size:13px;line-height:22px;display:grid}.WM86Cq_deliverablesLabel{color:var(--dsw-alias-label-tertiary);grid-area:1/1;padding-top:2px;font-size:12px;font-weight:500}.WM86Cq_deliverablesLane{grid-area:1/2;min-width:0}.WM86Cq_deliverablesRow{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.WM86Cq_deliverableChip{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary);border-radius:6px;align-items:center;font-size:12px;line-height:20px;transition:border-color .16s,background-color .16s,color .16s;display:inline-flex;overflow:hidden}.WM86Cq_deliverableChip:hover{border-color:var(--dsw-alias-border-l3);background:var(--dsw-alias-bg-module-platform);box-shadow:0 1px 4px var(--dsw-alias-border-l1)}.WM86Cq_deliverableChip[data-status=opened]{color:#059669;background:#10b9811f;border-color:#10b981}.WM86Cq_chipMain{max-width:220px;color:inherit;font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:5px;padding:3px 6px 3px 8px;display:inline-flex}.WM86Cq_chipMain:hover{color:var(--dsw-alias-label-primary)}.WM86Cq_deliverableIcon,.WM86Cq_statusIcon{opacity:.8;flex:none;width:13px;height:13px}.WM86Cq_statusIcon{color:#10b981}.WM86Cq_deliverableName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.WM86Cq_chipActions{opacity:.65;border-left:1px solid #0000;align-items:center;gap:2px;padding-right:4px;transition:opacity .15s,border-left-color .15s;display:inline-flex}.WM86Cq_deliverableChip:hover .WM86Cq_chipActions{opacity:1;border-left-color:var(--dsw-alias-border-l2)}.WM86Cq_chipActionBtn{width:20px;height:20px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:0;transition:color .12s,background-color .12s;display:inline-flex}.WM86Cq_chipActionBtn:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.WM86Cq_actionIcon{width:12px;height:12px}.WM86Cq_deliverablesMore{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:12px}.WM86Cq_deliverablesShowFolder{color:var(--dsw-alias-label-tertiary);font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:5px;align-items:center;gap:4px;padding:2px 7px;font-size:12px;transition:all .15s;display:inline-flex}.WM86Cq_deliverablesShowFolder:hover{color:var(--dsw-alias-state-business-primary);background:var(--dsw-alias-interactive-bg-hover);border-color:var(--dsw-alias-border-l2)}.WM86Cq_deliverablesShowFolder[data-status=opened]{color:#10b981;background:#10b98114;border-color:#10b9814d}.WM86Cq_morphCluster{flex-direction:column;width:100%;min-width:0;display:flex}.WM86Cq_morphDrawer{transform-origin:top;will-change:height, opacity, transform;height:0;overflow:hidden}.WM86Cq_liveFoldImpact{animation:.18s cubic-bezier(.2,0,0,1) both WM86Cq_liveFoldElastic}@keyframes WM86Cq_liveFoldElastic{0%{transform:scale(1)}50%{transform:scale(1.015)}to{transform:scale(1)}}.WM86Cq_liveFoldContainer{top:calc(max(var(--reader-toolbar-height,40px), var(--reader-status-height,40px)) + var(--reader-sticky-lane,40px) * 2);z-index:4;background:var(--dsw-alias-bg-base);-webkit-backdrop-filter:blur(12px);transform-origin:0;will-change:transform, opacity;margin-bottom:6px;padding:4px 0;animation:.32s cubic-bezier(.16,1,.3,1) both WM86Cq_liveFoldPulse;position:sticky}@keyframes WM86Cq_liveFoldPulse{0%{opacity:.8;transform:translateY(-4px)scale(.98)}50%{opacity:1;transform:translateY(0)scale(1.02)}to{opacity:1;transform:translateY(0)scale(1)}}[data-motion=off] .WM86Cq_liveFoldContainer{animation:none!important}@media (prefers-reduced-motion:reduce){.WM86Cq_liveFoldContainer{animation:none!important}}.WM86Cq_priorFoldDrawer{flex-direction:column;gap:14px;width:100%;min-width:0;display:flex}.WM86Cq_jump{width:34px;height:34px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-button-floating-fill,var(--dsw-alias-bg-base));box-shadow:var(--dsw-elevation-panel,0 2px 8px var(--dsw-alias-border-l1));pointer-events:auto;border:0;border-radius:100px;flex:none;justify-content:center;align-items:center;margin-top:-34px;padding:0;display:flex}.WM86Cq_jump:hover{background:var(--dsw-alias-button-floating-hover,var(--dsw-alias-interactive-bg-hover))}.WM86Cq_foldSummary{text-overflow:ellipsis;align-items:baseline;max-width:100%;display:inline-flex;overflow:hidden;white-space:nowrap!important}.WM86Cq_foldSummaryPart{flex:none;align-items:baseline;display:inline-flex;white-space:nowrap!important}.WM86Cq_numberRollRoot{vertical-align:baseline;line-height:inherit;font-variant-numeric:tabular-nums;font-feature-settings:\"tnum\";text-align:center;flex-shrink:0;justify-content:center;min-width:1.45em;display:inline-flex;position:relative;overflow:hidden;white-space:nowrap!important}.WM86Cq_numberRollSizer{visibility:hidden;user-select:none;pointer-events:none;line-height:inherit;white-space:nowrap}.WM86Cq_numberRollDigit{line-height:inherit;white-space:nowrap;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.WM86Cq_numberRollExit{animation:.24s cubic-bezier(.16,1,.3,1) forwards WM86Cq_numberRollOut}.WM86Cq_numberRollEnter{animation:.24s cubic-bezier(.16,1,.3,1) forwards WM86Cq_numberRollIn}@keyframes WM86Cq_numberRollOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-100%)}}@keyframes WM86Cq_numberRollIn{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}[data-motion=off] .WM86Cq_chevron,[data-motion=off] .WM86Cq_imageOpen img,[data-motion=off] .WM86Cq_processMeta,[data-motion=off] .WM86Cq_numberRollDigit{transition:none!important;animation:none!important}@media (prefers-reduced-motion:reduce){.WM86Cq_chevron,.WM86Cq_imageOpen img,.WM86Cq_processMeta,.WM86Cq_numberRollDigit{transition:none!important;animation:none!important}}.WM86Cq_turnStatus{white-space:nowrap;flex:none;align-self:flex-start;align-items:center;height:26px;margin:4px 0 12px;padding:0 4px;font-size:14px;line-height:22px;display:inline-flex}.WM86Cq_turnStatusLabel{background:linear-gradient(90deg, var(--dsw-static-deepseek-500,#4d6bfe) 0%, var(--dsw-static-deepseek-500,#4d6bfe) 40%, var(--dsw-static-deepseek-200,#a8c7fa) 50%, var(--dsw-static-deepseek-500,#4d6bfe) 60%, var(--dsw-static-deepseek-500,#4d6bfe) 100%);color:#0000;-webkit-text-fill-color:transparent;background-position:100% 0;background-size:250% 100%;-webkit-background-clip:text;background-clip:text;font-weight:500;animation:1.8s linear infinite WM86Cq_dsh-turn-status-shimmer}.WM86Cq_waitClock{flex:none;align-items:center;margin-left:8px;display:inline-flex}.WM86Cq_waitSeconds{font-variant-numeric:tabular-nums;font-feature-settings:\"tnum\";color:var(--dsw-alias-label-caption,#86909c);font-size:13px;font-weight:400}.WM86Cq_waitOvertime{color:var(--dsw-alias-state-warning-primary,#d8862c);background:color-mix(in srgb, var(--dsw-alias-state-warning-primary,#d8862c) 16%, transparent);border-radius:5px;margin-left:8px;padding:0 6px;font-size:11px;line-height:16px}.WM86Cq_turnStatusClock{font-variant-numeric:tabular-nums;font-feature-settings:\"tnum\";color:var(--dsw-alias-label-caption,#86868b);-webkit-text-fill-color:var(--dsw-alias-label-caption,#86868b);margin-left:8px;font-size:13px;font-weight:400}@keyframes WM86Cq_dsh-turn-status-shimmer{to{background-position:0 0}}[data-motion=off] .WM86Cq_turnStatusLabel{color:var(--dsw-static-deepseek-500,#4d6bfe)!important;-webkit-text-fill-color:var(--dsw-static-deepseek-500,#4d6bfe)!important;animation:none!important}@media (prefers-reduced-motion:reduce){.WM86Cq_turnStatusLabel{color:var(--dsw-static-deepseek-500,#4d6bfe)!important;-webkit-text-fill-color:var(--dsw-static-deepseek-500,#4d6bfe)!important;animation:none!important}}@media (pointer:coarse){.WM86Cq_disclosureButton{min-height:44px}}@media (width<=600px){.WM86Cq_root{padding-inline:20px}.WM86Cq_column{gap:18px}.WM86Cq_toolbar{font-size:11px}.WM86Cq_user{max-width:90%}.WM86Cq_root[data-reader-bubbles=on] .WM86Cq_answer{border-radius:14px;padding:10px 14px}}.WM86Cq_choreographedFlow{overflow-anchor:none;flex-direction:column;min-width:0;display:flex}.WM86Cq_flowCell{min-width:0;display:flow-root;overflow:clip}.WM86Cq_flowCell[hidden]{display:none}.WM86Cq_flowCellInner{flex-direction:column;min-width:0;padding-bottom:16px;display:flex}.WM86Cq_flowCellInner:empty{padding-bottom:0}.WM86Cq_choreographedFlow[data-reader-transition=collapse] .WM86Cq_flowCell *{animation-play-state:paused!important}.WM86Cq_numberRollExit,.WM86Cq_numberRollEnter{animation-duration:.16s}.WM86Cq_foldSummary{align-items:baseline;display:inline-flex;white-space:nowrap!important;flex-wrap:nowrap!important}.WM86Cq_toolbar{box-sizing:border-box;z-index:7;-webkit-backdrop-filter:none;border-bottom:0;align-self:stretch;width:100%;max-width:100%;min-height:40px}.WM86Cq_turnProcessSticky{box-sizing:border-box;width:calc(100% - var(--reader-control-width,148px));top:max(var(--reader-toolbar-height,40px), var(--reader-status-height,40px));z-index:6;-webkit-backdrop-filter:none;min-height:40px;box-shadow:0 -14px 0 var(--dsw-alias-bg-base), var(--reader-control-width,148px) 0 0 var(--dsw-alias-bg-base);background-clip:padding-box;border-bottom:1px solid #0000;padding-right:0}.WM86Cq_flowCell[data-flow-summary],.WM86Cq_closedProcessSummary{top:calc(max(var(--reader-toolbar-height,40px), var(--reader-status-height,40px)) + var(--reader-sticky-lane,40px));z-index:5;box-sizing:border-box;background:var(--dsw-alias-bg-base);border-bottom:0;min-height:40px;padding-block:4px;position:sticky;overflow:visible}.WM86Cq_flowCell[data-flow-summary]{box-shadow:0 -16px 0 var(--dsw-alias-bg-base)}.WM86Cq_closedProcessSummary{box-shadow:0 -14px 0 var(--dsw-alias-bg-base)}.WM86Cq_foldControl{background:var(--dsw-alias-bg-module-platform);border-radius:8px;align-items:center;gap:0;padding:2px;display:inline-flex}.WM86Cq_foldStop{color:var(--dsw-alias-label-secondary);white-space:nowrap;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:2px 8px;font-size:12px;line-height:18px}.WM86Cq_foldStop[data-on]{background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-primary)}.WM86Cq_flowCell[data-flow-summary]>.WM86Cq_flowCellInner{padding-bottom:0}.WM86Cq_flowCell[data-flow-summary] .WM86Cq_disclosureButton,.WM86Cq_closedProcessSummary .WM86Cq_disclosureButton{width:auto;max-width:100%}.WM86Cq_flowCell[data-flow-summary] .WM86Cq_foldSummary,.WM86Cq_closedProcessSummary .WM86Cq_foldSummary{min-width:0}.WM86Cq_turnProcessSticky>.WM86Cq_disclosure{flex:auto;min-width:0}.WM86Cq_disclosureButton{width:max-content;max-width:calc(100% + 6px)}.WM86Cq_statusText{flex:0 auto}.WM86Cq_think{width:max-content;min-width:0}.WM86Cq_thinkSizer{white-space:normal;overflow-wrap:anywhere}.WM86Cq_thinkText{white-space:normal;overflow-wrap:anywhere;text-overflow:clip;overflow:visible}.WM86Cq_root[data-reader-glass] .WM86Cq_toolbar,.WM86Cq_root[data-reader-glass] .WM86Cq_turnProcessSticky,.WM86Cq_root[data-reader-glass] .WM86Cq_liveFoldContainer{-webkit-backdrop-filter:blur(16px);box-shadow:none;background:0 0;border:0;border-radius:0}.WM86Cq_root[data-reader-glass] .WM86Cq_flowCell[data-flow-summary],.WM86Cq_root[data-reader-glass] .WM86Cq_closedProcessSummary{box-shadow:none;z-index:auto;border-left:2px solid color-mix(in srgb, var(--dsw-alias-border-l2,#80808059) 80%, transparent);padding-block:2px;background:0 0;border-radius:0;min-height:32px;padding-left:10px;position:static}.WM86Cq_root[data-reader-glass] .WM86Cq_user{background:color-mix(in srgb, var(--dsw-specific-bubble,#00000014) 25%, transparent);-webkit-backdrop-filter:blur(12px);border:1px solid color-mix(in srgb, var(--dsw-alias-border-l1,#8080804d) 30%, transparent)}.WM86Cq_root[data-reader-glass] .WM86Cq_reasonCard{border-color:color-mix(in srgb, var(--dsw-alias-border-l1,#80808059) 65%, transparent);background:0 0}.WM86Cq_root[data-reader-glass] .WM86Cq_toolDetails,.WM86Cq_root[data-reader-glass] .WM86Cq_notice,.WM86Cq_root[data-reader-glass] .WM86Cq_unknown,.WM86Cq_root[data-reader-glass] .WM86Cq_toolRaw,.WM86Cq_root[data-reader-glass] .WM86Cq_systemPrompt,.WM86Cq_root[data-reader-glass] .WM86Cq_compactionSummaryBox,.WM86Cq_root[data-reader-glass] .WM86Cq_attention,.WM86Cq_root[data-reader-glass] .WM86Cq_imageFrame,.WM86Cq_root[data-reader-glass] .WM86Cq_imageDialog{background:0 0}.WM86Cq_root[data-reader-glass] .WM86Cq_diffOverlay{background:color-mix(in srgb, var(--dsw-alias-bg-module-platform,#7f7f7f1a) 20%, transparent);-webkit-backdrop-filter:blur(16px)}.WM86Cq_root[data-reader-glass] .WM86Cq_diffScrollArea{background:0 0}.WM86Cq_root[data-reader-glass] .WM86Cq_diffTab{background:color-mix(in srgb, var(--dsw-alias-bg-base,#fffc) 25%, transparent)}.WM86Cq_root[data-reader-glass] .WM86Cq_diffTab[data-active]{background:color-mix(in srgb, var(--dsw-alias-bg-base,#fff) 45%, transparent)}.WM86Cq_root[data-reader-glass] .md-code-block,.WM86Cq_root[data-reader-glass] [data-diff]{border:1px solid color-mix(in srgb, var(--dsw-alias-border-l1,#80808033) 30%, transparent);-webkit-backdrop-filter:blur(12px);background:color-mix(in srgb, var(--dsw-alias-markdown-code-block,#0000000f) 25%, transparent)!important}.WM86Cq_root[data-reader-glass] .WM86Cq_foldControl{background:color-mix(in srgb, var(--dsw-alias-bg-module-platform,#7f7f7f1a) 25%, transparent);border:1px solid color-mix(in srgb, var(--dsw-alias-border-l2,#80808033) 30%, transparent)}.WM86Cq_root[data-reader-glass] .WM86Cq_foldStop[data-on]{background:color-mix(in srgb, var(--dsw-alias-bg-base,#fff) 35%, transparent)}.WM86Cq_root[data-reader-glass] .WM86Cq_compactionPill,.WM86Cq_root[data-reader-glass] .WM86Cq_deliverableChip,.WM86Cq_root[data-reader-glass] .WM86Cq_toolState,.WM86Cq_root[data-reader-glass] .WM86Cq_diffStatButton{background:0 0;border-color:#0000}.WM86Cq_root[data-reader-glass] .WM86Cq_compactionPill:hover,.WM86Cq_root[data-reader-glass] .WM86Cq_compactionPill:focus-visible,.WM86Cq_root[data-reader-glass] .WM86Cq_deliverableChip:hover,.WM86Cq_root[data-reader-glass] .WM86Cq_deliverableChip:focus-within,.WM86Cq_root[data-reader-glass] .WM86Cq_toolState:hover,.WM86Cq_root[data-reader-glass] .WM86Cq_diffStatButton:hover,.WM86Cq_root[data-reader-glass] .WM86Cq_diffStatButton:focus-visible,.WM86Cq_root[data-reader-glass] .WM86Cq_diffStatButton[aria-expanded=true]{background:var(--dsw-alias-bg-module-platform,#7f7f7f1a);border-color:var(--dsw-alias-border-l2,#7f7f7f47)}.WM86Cq_root[data-reader-bubbles=on] .WM86Cq_answer{box-sizing:border-box;background:var(--dsw-alias-bg-module-platform,#7f7f7f14);border:1px solid var(--dsw-alias-border-l2,#80808038);border-radius:16px;padding:12px 16px}.WM86Cq_root[data-reader-bubbles=on][data-reader-glass] .WM86Cq_answer{background:color-mix(in srgb, var(--dsw-alias-bg-module-platform,#7f7f7f1f) 35%, transparent);border-color:color-mix(in srgb, var(--dsw-alias-border-l1,#8080804d) 35%, transparent);-webkit-backdrop-filter:blur(12px)}";
|
|
42269
|
-
const tagId$5 = "dsh-better-display/Reader.module.css";
|
|
42269
|
+
const tagId$5 = "@drscrewdriver/dsh-better-display/Reader.module.css";
|
|
42270
42270
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$5) + "]") === null) {
|
|
42271
42271
|
const tag = document.createElement("style");
|
|
42272
|
-
tag.dataset.plugin = "dsh-better-display";
|
|
42272
|
+
tag.dataset.plugin = "@drscrewdriver/dsh-better-display";
|
|
42273
42273
|
tag.dataset.pluginCss = tagId$5;
|
|
42274
42274
|
tag.textContent = css$5;
|
|
42275
42275
|
document.head.appendChild(tag);
|
|
@@ -42607,12 +42607,12 @@ ${trimmed}
|
|
|
42607
42607
|
});
|
|
42608
42608
|
}
|
|
42609
42609
|
//#endregion
|
|
42610
|
-
//#region \0dshx-css-module:TurnMetrics.module.css.mjs
|
|
42610
|
+
//#region \0dshx-css-module:E:\test\rewrite-agently\reffer-dsh-plugins\refer-dsh-better-display\src\client\TurnMetrics.module.css.mjs
|
|
42611
42611
|
const css$4 = "._91M1mG_container{color:var(--dsw-alias-label-tertiary);align-items:center;gap:2px;font-size:13px;line-height:24px;display:inline-flex;position:relative}._91M1mG_pillButton{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-label-tertiary);cursor:pointer;border-radius:12px;outline:none;align-items:center;gap:5px;padding:2px 8px;font-family:inherit;font-size:11px;transition:all .14s;display:inline-flex}._91M1mG_pillButton:hover,._91M1mG_pillButton[data-active=true]{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l2);background:var(--dsw-alias-interactive-bg-hover)}._91M1mG_timeButton{height:28px;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:28px;align-items:center;gap:4px;padding:6px 8px;font-family:inherit;font-size:13px;line-height:24px;display:inline-flex}._91M1mG_timeButton:hover,._91M1mG_timeButton[data-active=true]{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}._91M1mG_pillIcon{opacity:.8;flex:none;width:12px;height:12px}._91M1mG_metricsPop{background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);backdrop-filter:blur(10px);z-index:50;text-align:left;border-radius:10px;flex-direction:column;gap:8px;width:260px;padding:12px 14px;animation:.14s ease-out _91M1mG_popIn;display:flex;position:absolute;bottom:calc(100% + 8px);left:0;box-shadow:0 6px 20px #00000024}@keyframes _91M1mG_popIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}._91M1mG_popHeader{color:var(--dsw-alias-label-primary);border-bottom:1px solid var(--dsw-alias-border-l1);justify-content:space-between;align-items:center;padding-bottom:6px;font-size:12px;font-weight:600;display:flex}._91M1mG_popSection{flex-direction:column;gap:4px;display:flex}._91M1mG_popSectionTitle{text-transform:uppercase;letter-spacing:.5px;color:var(--dsw-alias-label-tertiary);margin-top:2px;font-size:10px;font-weight:600}._91M1mG_popGrid{grid-template-columns:1fr auto;gap:3px 12px;font-size:11px;line-height:18px;display:grid}._91M1mG_popLabel{color:var(--dsw-alias-label-secondary)}._91M1mG_popValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;text-align:right;font-weight:500}._91M1mG_popBadge{background:var(--dsw-alias-border-l1);color:var(--dsw-alias-label-secondary);border-radius:3px;margin-left:4px;padding:0 4px;font-size:10px}";
|
|
42612
|
-
const tagId$4 = "dsh-better-display/TurnMetrics.module.css";
|
|
42612
|
+
const tagId$4 = "@drscrewdriver/dsh-better-display/TurnMetrics.module.css";
|
|
42613
42613
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$4) + "]") === null) {
|
|
42614
42614
|
const tag = document.createElement("style");
|
|
42615
|
-
tag.dataset.plugin = "dsh-better-display";
|
|
42615
|
+
tag.dataset.plugin = "@drscrewdriver/dsh-better-display";
|
|
42616
42616
|
tag.dataset.pluginCss = tagId$4;
|
|
42617
42617
|
tag.textContent = css$4;
|
|
42618
42618
|
document.head.appendChild(tag);
|
|
@@ -45546,12 +45546,12 @@ ${trimmed}
|
|
|
45546
45546
|
}
|
|
45547
45547
|
}
|
|
45548
45548
|
//#endregion
|
|
45549
|
-
//#region \0dshx-css-module:ContextBody.module.css.mjs
|
|
45549
|
+
//#region \0dshx-css-module:E:\test\rewrite-agently\reffer-dsh-plugins\refer-dsh-better-display\src\client\native\ContextBody.module.css.mjs
|
|
45550
45550
|
const css$3 = ".asaYDa_text{color:var(--dsw-alias-label-secondary);font:inherit;white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.asaYDa_fields{border-top:1px solid var(--dsw-alias-line-secondary);flex-direction:column;gap:2px;margin:8px 0 0;padding-top:8px;display:flex}.asaYDa_field{gap:8px;min-width:0;display:flex}.asaYDa_fieldKey{min-width:96px;color:var(--dsw-alias-label-caption);flex:none}.asaYDa_fieldValue{min-width:0;color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;flex:auto;margin:0}.asaYDa_files{flex-wrap:wrap;gap:4px 12px;margin:0 0 8px;padding:0;list-style:none;display:flex}.asaYDa_file{align-items:baseline;gap:6px;min-width:0;display:flex}.asaYDa_filePath{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere}.asaYDa_fileAction{color:var(--dsw-alias-label-caption)}.asaYDa_catalogNotice{color:var(--dsw-alias-label-caption);margin:0 0 6px}.asaYDa_entries{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.asaYDa_entry{gap:8px;min-width:0;display:flex}.asaYDa_entryName{color:var(--dsw-alias-label-secondary);flex:none}.asaYDa_entryDescription{min-width:0;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.asaYDa_sections{flex-direction:column;gap:8px;margin:0;display:flex}.asaYDa_section{flex-direction:column;gap:2px;min-width:0;display:flex}.asaYDa_sectionName{color:var(--dsw-alias-label-caption)}.asaYDa_sectionText{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.asaYDa_relaySender{color:var(--dsw-alias-label-caption);overflow-wrap:anywhere;margin:0 0 6px}.asaYDa_recalls{flex-direction:column;gap:2px;margin:0 0 8px;padding:0;list-style:none;display:flex}.asaYDa_recall{gap:8px;min-width:0;display:flex}.asaYDa_recallLabel{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere}.asaYDa_recallCounts{color:var(--dsw-alias-label-caption);flex:none}";
|
|
45551
|
-
const tagId$3 = "dsh-better-display/ContextBody.module.css";
|
|
45551
|
+
const tagId$3 = "@drscrewdriver/dsh-better-display/ContextBody.module.css";
|
|
45552
45552
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]") === null) {
|
|
45553
45553
|
const tag = document.createElement("style");
|
|
45554
|
-
tag.dataset.plugin = "dsh-better-display";
|
|
45554
|
+
tag.dataset.plugin = "@drscrewdriver/dsh-better-display";
|
|
45555
45555
|
tag.dataset.pluginCss = tagId$3;
|
|
45556
45556
|
tag.textContent = css$3;
|
|
45557
45557
|
document.head.appendChild(tag);
|
|
@@ -46128,12 +46128,12 @@ ${trimmed}
|
|
|
46128
46128
|
};
|
|
46129
46129
|
}
|
|
46130
46130
|
//#endregion
|
|
46131
|
-
//#region \0dshx-css-module:ContextInjectionRow.module.css.mjs
|
|
46131
|
+
//#region \0dshx-css-module:E:\test\rewrite-agently\reffer-dsh-plugins\refer-dsh-better-display\src\client\native\ContextInjectionRow.module.css.mjs
|
|
46132
46132
|
const css$2 = "._36UtMa_root{min-width:0}._36UtMa_root[data-open]{padding-bottom:4px}._36UtMa_chevron{color:var(--dsw-alias-label-secondary)}._36UtMa_sep{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}._36UtMa_source{min-width:0;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;flex:none;font-size:14px;line-height:24px;overflow:hidden}._36UtMa_summary{min-width:0;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:14px;line-height:24px;overflow:hidden}._36UtMa_body{box-sizing:border-box;background:var(--dsw-alias-markdown-code-block);width:calc(100% - 22px);max-height:141px;color:var(--dsw-alias-label-tertiary);font:400 11px/16px var(--ds-font-family-code);border:none;border-radius:8px;margin:4px 0 0 22px;padding:10px 16px 12px 12px;overflow:auto}._36UtMa_toolChanges{white-space:nowrap}";
|
|
46133
|
-
const tagId$2 = "dsh-better-display/ContextInjectionRow.module.css";
|
|
46133
|
+
const tagId$2 = "@drscrewdriver/dsh-better-display/ContextInjectionRow.module.css";
|
|
46134
46134
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$2) + "]") === null) {
|
|
46135
46135
|
const tag = document.createElement("style");
|
|
46136
|
-
tag.dataset.plugin = "dsh-better-display";
|
|
46136
|
+
tag.dataset.plugin = "@drscrewdriver/dsh-better-display";
|
|
46137
46137
|
tag.dataset.pluginCss = tagId$2;
|
|
46138
46138
|
tag.textContent = css$2;
|
|
46139
46139
|
document.head.appendChild(tag);
|
|
@@ -46228,12 +46228,12 @@ ${trimmed}
|
|
|
46228
46228
|
});
|
|
46229
46229
|
}
|
|
46230
46230
|
//#endregion
|
|
46231
|
-
//#region \0dshx-css-module:TimelineRail.module.css.mjs
|
|
46231
|
+
//#region \0dshx-css-module:E:\test\rewrite-agently\reffer-dsh-plugins\refer-dsh-better-display\src\client\TimelineRail.module.css.mjs
|
|
46232
46232
|
const css$1 = ".EUhm2a_slot{z-index:10;pointer-events:none;height:0;position:sticky;top:0}.EUhm2a_frame{--turn-rail-band:calc(var(--dsh-conversation-viewport-height,100dvh) - var(--dsh-composer-height,152px));--turn-preview-height:100px;top:calc(var(--turn-rail-band) / 2);width:26px;height:min(var(--turn-natural-height), max(0px, calc(var(--turn-rail-band) - 64px)), 420px);cursor:pointer;pointer-events:auto;transition:height .22s cubic-bezier(.2,.8,.2,1);position:absolute;right:6px;transform:translateY(-50%)}.EUhm2a_scroller{overscroll-behavior:contain;scrollbar-width:none;position:absolute;inset:0;overflow-y:auto}.EUhm2a_scroller::-webkit-scrollbar{display:none}.EUhm2a_fadeTop{-webkit-mask-image:linear-gradient(#0000 0,#000 24px 100%);mask-image:linear-gradient(#0000 0,#000 24px 100%)}.EUhm2a_fadeBottom{-webkit-mask-image:linear-gradient(#000 0 calc(100% - 24px),#0000 100%);mask-image:linear-gradient(#000 0 calc(100% - 24px),#0000 100%)}.EUhm2a_fadeTop.EUhm2a_fadeBottom{-webkit-mask-image:linear-gradient(#0000 0,#000 24px calc(100% - 24px),#0000 100%);mask-image:linear-gradient(#0000 0,#000 24px calc(100% - 24px),#0000 100%)}.EUhm2a_marks{height:var(--turn-natural-height);position:relative}.EUhm2a_markPosition{top:calc(var(--turn-natural-position) + var(--turn-rail-inset));height:12px;transition:top .22s cubic-bezier(.2,.8,.2,1);position:absolute;left:0;right:0;transform:translateY(-50%)}.EUhm2a_mark{cursor:pointer;pointer-events:none;background:0 0;border:0;justify-content:flex-end;align-items:center;width:24px;padding:0;display:flex;position:absolute;inset:0 0 0 auto}.EUhm2a_tick{border-radius:2px;flex:none;transition:width .1s cubic-bezier(.16,1,.3,1),height .1s cubic-bezier(.16,1,.3,1),opacity .1s,background-color .14s}.EUhm2a_markBusy .EUhm2a_tick{animation:1s ease-in-out infinite alternate EUhm2a_markBusyPulse}@keyframes EUhm2a_markBusyPulse{0%{opacity:.4;width:8px}to{opacity:1;width:18px}}.EUhm2a_preview{top:clamp(0px, calc(var(--turn-natural-position) + var(--turn-rail-inset) - var(--turn-scroll-top,0px) - var(--turn-preview-height) / 2), calc(100% - var(--turn-preview-height)));box-sizing:border-box;width:min(280px,100cqw - 120px);max-height:var(--turn-preview-height);border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-base);backdrop-filter:blur(12px);pointer-events:none;z-index:40;border-radius:10px;padding:10px 12px;transition:top .14s cubic-bezier(.2,.8,.2,1);animation:.12s ease-out EUhm2a_previewFadeIn;position:absolute;right:calc(100% + 10px);overflow:hidden;box-shadow:0 4px 18px #0000001f}@keyframes EUhm2a_previewFadeIn{0%{opacity:0;transform:translate(4px)}to{opacity:1;transform:translate(0)}}.EUhm2a_previewPrompt{-webkit-line-clamp:2;text-overflow:ellipsis;word-break:break-word;-webkit-box-orient:vertical;font-size:12px;font-weight:500;line-height:18px;display:-webkit-box;overflow:hidden}.EUhm2a_previewResponse{color:var(--dsw-alias-label-tertiary);-webkit-line-clamp:2;text-overflow:ellipsis;word-break:break-word;-webkit-box-orient:vertical;margin-top:4px;font-size:11px;line-height:16px;display:-webkit-box;overflow:hidden}@media (width<=960px){.EUhm2a_slot{display:none!important}}";
|
|
46233
|
-
const tagId$1 = "dsh-better-display/TimelineRail.module.css";
|
|
46233
|
+
const tagId$1 = "@drscrewdriver/dsh-better-display/TimelineRail.module.css";
|
|
46234
46234
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
|
|
46235
46235
|
const tag = document.createElement("style");
|
|
46236
|
-
tag.dataset.plugin = "dsh-better-display";
|
|
46236
|
+
tag.dataset.plugin = "@drscrewdriver/dsh-better-display";
|
|
46237
46237
|
tag.dataset.pluginCss = tagId$1;
|
|
46238
46238
|
tag.textContent = css$1;
|
|
46239
46239
|
document.head.appendChild(tag);
|
|
@@ -48845,12 +48845,12 @@ ${trimmed}
|
|
|
48845
48845
|
return (list?.byId ? Object.keys(list.byId) : [])[0];
|
|
48846
48846
|
}
|
|
48847
48847
|
//#endregion
|
|
48848
|
-
//#region \0dshx-css-module:SettingsSection.module.css.mjs
|
|
48848
|
+
//#region \0dshx-css-module:E:\test\rewrite-agently\reffer-dsh-plugins\refer-dsh-better-display\src\client\SettingsSection.module.css.mjs
|
|
48849
48849
|
const css = ".TavcUG_section{flex-direction:column;gap:28px;width:100%;max-width:720px;display:flex}.TavcUG_row{border-bottom:.5px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:16px 0;display:flex}.TavcUG_rowText{flex-direction:column;flex:1;gap:4px;min-width:0;padding-right:24px;display:flex}.TavcUG_title{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:400;line-height:22px}.TavcUG_desc{color:var(--dsw-alias-label-tertiary);font-size:12px;font-weight:400;line-height:18px}.TavcUG_switch{background:var(--dsw-alias-bg-module-platform);cursor:pointer;border:none;border-radius:12px;flex:none;width:40px;height:24px;padding:0;position:relative}.TavcUG_switch:after{content:\"\";background:var(--dsw-alias-label-primary);border-radius:50%;width:18px;height:18px;transition:transform .16s;position:absolute;top:3px;left:3px}.TavcUG_switch[data-on]:after{transform:translate(16px)}.TavcUG_switch[data-on]{background:var(--dsw-alias-state-business-primary)}.TavcUG_block{flex-direction:column;gap:10px;display:flex}.TavcUG_status{color:var(--dsw-alias-label-secondary);align-items:center;gap:8px;font-size:13px;line-height:20px;display:inline-flex}.TavcUG_badge{background:var(--dsw-alias-bg-module-platform);height:22px;color:var(--dsw-alias-label-secondary);border-radius:11px;align-items:center;padding:0 8px;font-size:12px;display:inline-flex}.TavcUG_badge[data-ok]{color:#059669;background:#10b98124}.TavcUG_pre{background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;white-space:pre-wrap;border-radius:8px;margin:0;padding:10px 12px;font-size:12px;line-height:18px}.TavcUG_roots{color:var(--dsw-alias-label-tertiary);margin:0;padding-left:18px;font-size:12px;line-height:18px}.TavcUG_actions{gap:8px;display:flex}.TavcUG_button{border:.5px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-module-platform);height:32px;color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;border-radius:8px;padding:0 12px;font-size:13px}.TavcUG_button:hover{background:var(--dsw-alias-interactive-bg-hover)}.TavcUG_button:disabled{opacity:.6;cursor:default}.TavcUG_segment{background:var(--dsw-alias-bg-module-platform);border-radius:10px;gap:2px;width:100%;margin-top:8px;padding:2px;display:flex}.TavcUG_segmentStop{min-width:0;height:32px;color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:8px;flex:1 1 0;padding:0 8px;font-size:12px;line-height:18px}.TavcUG_segmentStop[data-on]{background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-primary);box-shadow:0 0 0 .5px var(--dsw-alias-border-l2)}.TavcUG_slider{width:100%;accent-color:var(--dsw-alias-state-business-primary);margin:10px 0 0}";
|
|
48850
|
-
const tagId = "dsh-better-display/SettingsSection.module.css";
|
|
48850
|
+
const tagId = "@drscrewdriver/dsh-better-display/SettingsSection.module.css";
|
|
48851
48851
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
48852
48852
|
const tag = document.createElement("style");
|
|
48853
|
-
tag.dataset.plugin = "dsh-better-display";
|
|
48853
|
+
tag.dataset.plugin = "@drscrewdriver/dsh-better-display";
|
|
48854
48854
|
tag.dataset.pluginCss = tagId;
|
|
48855
48855
|
tag.textContent = css;
|
|
48856
48856
|
document.head.appendChild(tag);
|
|
@@ -1,6 +1,161 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { access, readdir } from "node:fs/promises";
|
|
3
|
+
import { existsSync } from "node:fs";
|
|
4
|
+
import { homedir } from "node:os";
|
|
5
|
+
import { dirname, isAbsolute, join, resolve } from "node:path";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
//#region src/skill-status.ts
|
|
8
|
+
/** Shared generative-mcpapps identity. Plugin-tree presence is not installation. */
|
|
9
|
+
const GENERATIVE_MCPAPPS_SKILL = "generative-mcpapps";
|
|
10
|
+
/** Conventional relative roots only. Never expand $HOME or dump host `root.path`. */
|
|
11
|
+
const CONVENTIONAL_SKILL_ROOTS = [".dsh/skills", ".agents/skills"];
|
|
12
|
+
function skillNameMatches(name) {
|
|
13
|
+
return typeof name === "string" && name === "generative-mcpapps";
|
|
14
|
+
}
|
|
15
|
+
function skillListIncludes(entries) {
|
|
16
|
+
return Array.isArray(entries) && entries.some((entry) => skillNameMatches(entry?.name));
|
|
17
|
+
}
|
|
18
|
+
/** Directory bundle `name/SKILL.md` or flat `name.md` at a scanned root. */
|
|
19
|
+
function skillRootEntryMatches(entryName) {
|
|
20
|
+
return entryName === "generative-mcpapps" || entryName === `generative-mcpapps.md`;
|
|
21
|
+
}
|
|
22
|
+
function skillsFromListResult(result) {
|
|
23
|
+
if (Array.isArray(result)) return result;
|
|
24
|
+
if (result === null || typeof result !== "object") return [];
|
|
25
|
+
const record = result;
|
|
26
|
+
if (record.ok === false) return [];
|
|
27
|
+
if (Array.isArray(record.skills)) return record.skills;
|
|
28
|
+
if (record.value && typeof record.value === "object") {
|
|
29
|
+
const value = record.value;
|
|
30
|
+
if (Array.isArray(value.skills)) return value.skills;
|
|
31
|
+
if (Array.isArray(record.value)) return record.value;
|
|
32
|
+
}
|
|
33
|
+
return [];
|
|
34
|
+
}
|
|
35
|
+
function publicSkillRoots() {
|
|
36
|
+
return CONVENTIONAL_SKILL_ROOTS.map((path) => ({
|
|
37
|
+
source: "conventional",
|
|
38
|
+
path
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Strip host home / pack absolutes before anything user-facing (HTTP or Settings).
|
|
43
|
+
* Detection still uses the raw scan; this is the public face.
|
|
44
|
+
*/
|
|
45
|
+
function toPublicSkillStatus(status) {
|
|
46
|
+
return {
|
|
47
|
+
name: status.name,
|
|
48
|
+
installed: status.installed,
|
|
49
|
+
via: status.via,
|
|
50
|
+
roots: publicSkillRoots()
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//#endregion
|
|
54
|
+
//#region src/skill-roots.ts
|
|
55
|
+
function expandHomePath(path, home = homedir()) {
|
|
56
|
+
if (path === "~") return home;
|
|
57
|
+
if (path.startsWith("~/") || path.startsWith("~\\")) return join(home, path.slice(2));
|
|
58
|
+
return path;
|
|
59
|
+
}
|
|
60
|
+
/** `$DSH_HOME` or `~/.dsh`, matching official `resolveDshHome`. */
|
|
61
|
+
function resolveDshHome(env = process.env, home = homedir()) {
|
|
62
|
+
const fromEnv = env.DSH_HOME;
|
|
63
|
+
const selected = fromEnv !== void 0 && fromEnv.trim().length > 0 ? fromEnv : join(home, ".dsh");
|
|
64
|
+
return resolve(expandHomePath(selected, home));
|
|
65
|
+
}
|
|
66
|
+
/** `$DSH_AGENTS_HOME` or `~/.agents`. */
|
|
67
|
+
function resolveAgentsHome(env = process.env, home = homedir()) {
|
|
68
|
+
const fromEnv = env.DSH_AGENTS_HOME;
|
|
69
|
+
const selected = fromEnv !== void 0 && fromEnv.trim().length > 0 ? fromEnv : join(home, ".agents");
|
|
70
|
+
return resolve(expandHomePath(selected, home));
|
|
71
|
+
}
|
|
72
|
+
function userSkillRoots(env = process.env, home = homedir()) {
|
|
73
|
+
return [{
|
|
74
|
+
source: "user-dsh",
|
|
75
|
+
path: join(resolveDshHome(env, home), "skills")
|
|
76
|
+
}, {
|
|
77
|
+
source: "user-agents",
|
|
78
|
+
path: join(resolveAgentsHome(env, home), "skills")
|
|
79
|
+
}];
|
|
80
|
+
}
|
|
81
|
+
function projectSkillRoots(projectRoot) {
|
|
82
|
+
return [{
|
|
83
|
+
source: "project-dsh",
|
|
84
|
+
path: join(projectRoot, ".dsh", "skills")
|
|
85
|
+
}, {
|
|
86
|
+
source: "project-agents",
|
|
87
|
+
path: join(projectRoot, ".agents", "skills")
|
|
88
|
+
}];
|
|
89
|
+
}
|
|
90
|
+
async function findProjectRoot(cwd) {
|
|
91
|
+
let current = resolve(cwd);
|
|
92
|
+
while (true) {
|
|
93
|
+
if (existsSync(join(current, ".git"))) return current;
|
|
94
|
+
const parent = dirname(current);
|
|
95
|
+
if (parent === current) return resolve(cwd);
|
|
96
|
+
current = parent;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
async function rootHasGenerativeMcpapps(rootPath) {
|
|
100
|
+
let entries;
|
|
101
|
+
try {
|
|
102
|
+
entries = await readdir(rootPath, { withFileTypes: true });
|
|
103
|
+
} catch {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
for (const entry of entries) {
|
|
107
|
+
if (entry.name === ".system") continue;
|
|
108
|
+
if (!skillRootEntryMatches(entry.name)) continue;
|
|
109
|
+
if (entry.isDirectory()) try {
|
|
110
|
+
await access(join(rootPath, entry.name, "SKILL.md"));
|
|
111
|
+
return true;
|
|
112
|
+
} catch {
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (entry.isFile()) return true;
|
|
116
|
+
}
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
/** Resolve the plugin-shipped pack. This path is never treated as a skill root. */
|
|
120
|
+
function pluginSkillPackPath(moduleUrl = import.meta.url) {
|
|
121
|
+
const here = dirname(fileURLToPath(moduleUrl));
|
|
122
|
+
return [
|
|
123
|
+
join(here, "../skills", GENERATIVE_MCPAPPS_SKILL),
|
|
124
|
+
join(here, "../../skills", GENERATIVE_MCPAPPS_SKILL),
|
|
125
|
+
join(here, "skills", GENERATIVE_MCPAPPS_SKILL)
|
|
126
|
+
].find((path) => existsSync(join(path, "SKILL.md")));
|
|
127
|
+
}
|
|
128
|
+
async function scanGenerativeMcpappsStatus(options = {}) {
|
|
129
|
+
const roots = [...userSkillRoots(options.env ?? process.env, options.home ?? homedir())];
|
|
130
|
+
const cwd = typeof options.cwd === "string" && options.cwd.trim().length > 0 ? isAbsolute(options.cwd) ? options.cwd : resolve(options.cwd) : void 0;
|
|
131
|
+
if (cwd !== void 0) roots.unshift(...projectSkillRoots(await findProjectRoot(cwd)));
|
|
132
|
+
const inspected = [];
|
|
133
|
+
let rootHit = false;
|
|
134
|
+
for (const root of roots) {
|
|
135
|
+
const present = await rootHasGenerativeMcpapps(root.path);
|
|
136
|
+
inspected.push({
|
|
137
|
+
...root,
|
|
138
|
+
present
|
|
139
|
+
});
|
|
140
|
+
if (present) rootHit = true;
|
|
141
|
+
}
|
|
142
|
+
let via = null;
|
|
143
|
+
let listHit = false;
|
|
144
|
+
if (options.listSkills) try {
|
|
145
|
+
listHit = skillListIncludes(await options.listSkills());
|
|
146
|
+
if (listHit) via = "skills.list";
|
|
147
|
+
} catch {}
|
|
148
|
+
if (!listHit && rootHit) via = "skill-root";
|
|
149
|
+
const packPath = options.packPath ?? pluginSkillPackPath();
|
|
150
|
+
return {
|
|
151
|
+
name: GENERATIVE_MCPAPPS_SKILL,
|
|
152
|
+
installed: listHit || rootHit,
|
|
153
|
+
via,
|
|
154
|
+
roots: inspected,
|
|
155
|
+
...packPath !== void 0 ? { packPath } : {}
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
//#endregion
|
|
4
159
|
//#region src/dsh-better-display.ts
|
|
5
160
|
const name = "@drscrewdriver/dsh-better-display";
|
|
6
161
|
const inject = ["webServer"];
|
|
@@ -77,12 +232,10 @@ function apply(ctx) {
|
|
|
77
232
|
return;
|
|
78
233
|
}
|
|
79
234
|
try {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
cwd,
|
|
235
|
+
writeJson(res, 200, toPublicSkillStatus(await scanGenerativeMcpappsStatus({
|
|
236
|
+
cwd: new URL(req.url ?? "", "http://127.0.0.1").searchParams.get("cwd") ?? void 0,
|
|
83
237
|
listSkills: skillLister(ctx)
|
|
84
|
-
});
|
|
85
|
-
writeJson(res, 200, toPublicSkillStatus(status));
|
|
238
|
+
})));
|
|
86
239
|
} catch (err) {
|
|
87
240
|
writeJson(res, 500, {
|
|
88
241
|
ok: false,
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
-
import type { Context } from '@deepseek-ai/cordis';
|
|
3
|
-
declare module '@deepseek-ai/cordis' {
|
|
4
|
-
interface Context {
|
|
5
|
-
webServer?: {
|
|
6
|
-
register: (route: {
|
|
7
|
-
kind: 'exact' | 'prefix';
|
|
8
|
-
path: string;
|
|
9
|
-
handler: (req: IncomingMessage, res: ServerResponse) => void | Promise<void>;
|
|
10
|
-
}) => () => void;
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
export declare const name = "@drscrewdriver/dsh-better-display";
|
|
15
|
-
export declare const inject: string[];
|
|
16
|
-
export declare function apply(ctx: Context): void;
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
3
|
+
declare module '@deepseek-ai/cordis' {
|
|
4
|
+
interface Context {
|
|
5
|
+
webServer?: {
|
|
6
|
+
register: (route: {
|
|
7
|
+
kind: 'exact' | 'prefix';
|
|
8
|
+
path: string;
|
|
9
|
+
handler: (req: IncomingMessage, res: ServerResponse) => void | Promise<void>;
|
|
10
|
+
}) => () => void;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export declare const name = "@drscrewdriver/dsh-better-display";
|
|
15
|
+
export declare const inject: string[];
|
|
16
|
+
export declare function apply(ctx: Context): void;
|
|
17
17
|
//# sourceMappingURL=dsh-better-display.d.ts.map
|
|
@@ -1,93 +1,93 @@
|
|
|
1
|
-
import { spawn } from 'node:child_process';
|
|
2
|
-
import { scanGenerativeMcpappsStatus } from './skill-roots.js';
|
|
3
|
-
import { skillsFromListResult, toPublicSkillStatus } from './skill-status.js';
|
|
4
|
-
export const name = '@drscrewdriver/dsh-better-display';
|
|
5
|
-
export const inject = ['webServer'];
|
|
6
|
-
function writeJson(res, status, body) {
|
|
7
|
-
res.setHeader('Content-Type', 'application/json');
|
|
8
|
-
res.statusCode = status;
|
|
9
|
-
res.end(JSON.stringify(body));
|
|
10
|
-
}
|
|
11
|
-
function skillLister(ctx) {
|
|
12
|
-
const skills = ctx.get?.('skills');
|
|
13
|
-
if (typeof skills?.list !== 'function')
|
|
14
|
-
return undefined;
|
|
15
|
-
return async () => skillsFromListResult(await skills.list({}));
|
|
16
|
-
}
|
|
17
|
-
export function apply(ctx) {
|
|
18
|
-
console.log('[my-plugins/dsh-better-display] loaded');
|
|
19
|
-
if (ctx.webServer) {
|
|
20
|
-
ctx.effect(() => {
|
|
21
|
-
const disposeReveal = ctx.webServer.register({
|
|
22
|
-
kind: 'exact',
|
|
23
|
-
path: '/better-display/reveal',
|
|
24
|
-
handler: async (req, res) => {
|
|
25
|
-
if (req.method !== 'POST') {
|
|
26
|
-
res.statusCode = 405;
|
|
27
|
-
res.end();
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
let body = '';
|
|
31
|
-
req.on('data', chunk => { body += chunk; });
|
|
32
|
-
req.on('end', () => {
|
|
33
|
-
try {
|
|
34
|
-
const data = JSON.parse(body);
|
|
35
|
-
const targetPath = typeof data.path === 'string' ? data.path.trim() : '';
|
|
36
|
-
if (!targetPath) {
|
|
37
|
-
res.statusCode = 400;
|
|
38
|
-
res.end(JSON.stringify({ ok: false, error: 'Empty path' }));
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
if (process.platform === 'darwin') {
|
|
42
|
-
// Exact file reveal in macOS Finder with selection highlight
|
|
43
|
-
spawn('open', ['-R', targetPath], { detached: true, stdio: 'ignore' });
|
|
44
|
-
}
|
|
45
|
-
else if (process.platform === 'win32') {
|
|
46
|
-
// Exact file selection in Windows Explorer
|
|
47
|
-
spawn('explorer.exe', [`/select,${targetPath}`], { detached: true, stdio: 'ignore' });
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
spawn('xdg-open', [targetPath], { detached: true, stdio: 'ignore' });
|
|
51
|
-
}
|
|
52
|
-
res.setHeader('Content-Type', 'application/json');
|
|
53
|
-
res.statusCode = 200;
|
|
54
|
-
res.end(JSON.stringify({ ok: true }));
|
|
55
|
-
}
|
|
56
|
-
catch (err) {
|
|
57
|
-
res.statusCode = 400;
|
|
58
|
-
res.end(JSON.stringify({ ok: false, error: String(err) }));
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
},
|
|
62
|
-
});
|
|
63
|
-
const disposeSkill = ctx.webServer.register({
|
|
64
|
-
kind: 'exact',
|
|
65
|
-
path: '/better-display/skill-status',
|
|
66
|
-
handler: async (req, res) => {
|
|
67
|
-
if (req.method !== 'GET') {
|
|
68
|
-
res.statusCode = 405;
|
|
69
|
-
res.end();
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
try {
|
|
73
|
-
const url = new URL(req.url ?? '', 'http://127.0.0.1');
|
|
74
|
-
const cwd = url.searchParams.get('cwd') ?? undefined;
|
|
75
|
-
const status = await scanGenerativeMcpappsStatus({
|
|
76
|
-
cwd,
|
|
77
|
-
listSkills: skillLister(ctx),
|
|
78
|
-
});
|
|
79
|
-
writeJson(res, 200, toPublicSkillStatus(status));
|
|
80
|
-
}
|
|
81
|
-
catch (err) {
|
|
82
|
-
writeJson(res, 500, { ok: false, error: String(err) });
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
});
|
|
86
|
-
return () => {
|
|
87
|
-
disposeReveal();
|
|
88
|
-
disposeSkill();
|
|
89
|
-
};
|
|
90
|
-
}, 'dsh-better-display: reveal and skill-status routes');
|
|
91
|
-
}
|
|
92
|
-
}
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { scanGenerativeMcpappsStatus } from './skill-roots.js';
|
|
3
|
+
import { skillsFromListResult, toPublicSkillStatus } from './skill-status.js';
|
|
4
|
+
export const name = '@drscrewdriver/dsh-better-display';
|
|
5
|
+
export const inject = ['webServer'];
|
|
6
|
+
function writeJson(res, status, body) {
|
|
7
|
+
res.setHeader('Content-Type', 'application/json');
|
|
8
|
+
res.statusCode = status;
|
|
9
|
+
res.end(JSON.stringify(body));
|
|
10
|
+
}
|
|
11
|
+
function skillLister(ctx) {
|
|
12
|
+
const skills = ctx.get?.('skills');
|
|
13
|
+
if (typeof skills?.list !== 'function')
|
|
14
|
+
return undefined;
|
|
15
|
+
return async () => skillsFromListResult(await skills.list({}));
|
|
16
|
+
}
|
|
17
|
+
export function apply(ctx) {
|
|
18
|
+
console.log('[my-plugins/dsh-better-display] loaded');
|
|
19
|
+
if (ctx.webServer) {
|
|
20
|
+
ctx.effect(() => {
|
|
21
|
+
const disposeReveal = ctx.webServer.register({
|
|
22
|
+
kind: 'exact',
|
|
23
|
+
path: '/better-display/reveal',
|
|
24
|
+
handler: async (req, res) => {
|
|
25
|
+
if (req.method !== 'POST') {
|
|
26
|
+
res.statusCode = 405;
|
|
27
|
+
res.end();
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
let body = '';
|
|
31
|
+
req.on('data', chunk => { body += chunk; });
|
|
32
|
+
req.on('end', () => {
|
|
33
|
+
try {
|
|
34
|
+
const data = JSON.parse(body);
|
|
35
|
+
const targetPath = typeof data.path === 'string' ? data.path.trim() : '';
|
|
36
|
+
if (!targetPath) {
|
|
37
|
+
res.statusCode = 400;
|
|
38
|
+
res.end(JSON.stringify({ ok: false, error: 'Empty path' }));
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (process.platform === 'darwin') {
|
|
42
|
+
// Exact file reveal in macOS Finder with selection highlight
|
|
43
|
+
spawn('open', ['-R', targetPath], { detached: true, stdio: 'ignore' });
|
|
44
|
+
}
|
|
45
|
+
else if (process.platform === 'win32') {
|
|
46
|
+
// Exact file selection in Windows Explorer
|
|
47
|
+
spawn('explorer.exe', [`/select,${targetPath}`], { detached: true, stdio: 'ignore' });
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
spawn('xdg-open', [targetPath], { detached: true, stdio: 'ignore' });
|
|
51
|
+
}
|
|
52
|
+
res.setHeader('Content-Type', 'application/json');
|
|
53
|
+
res.statusCode = 200;
|
|
54
|
+
res.end(JSON.stringify({ ok: true }));
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
res.statusCode = 400;
|
|
58
|
+
res.end(JSON.stringify({ ok: false, error: String(err) }));
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
const disposeSkill = ctx.webServer.register({
|
|
64
|
+
kind: 'exact',
|
|
65
|
+
path: '/better-display/skill-status',
|
|
66
|
+
handler: async (req, res) => {
|
|
67
|
+
if (req.method !== 'GET') {
|
|
68
|
+
res.statusCode = 405;
|
|
69
|
+
res.end();
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
const url = new URL(req.url ?? '', 'http://127.0.0.1');
|
|
74
|
+
const cwd = url.searchParams.get('cwd') ?? undefined;
|
|
75
|
+
const status = await scanGenerativeMcpappsStatus({
|
|
76
|
+
cwd,
|
|
77
|
+
listSkills: skillLister(ctx),
|
|
78
|
+
});
|
|
79
|
+
writeJson(res, 200, toPublicSkillStatus(status));
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
writeJson(res, 500, { ok: false, error: String(err) });
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
return () => {
|
|
87
|
+
disposeReveal();
|
|
88
|
+
disposeSkill();
|
|
89
|
+
};
|
|
90
|
+
}, 'dsh-better-display: reveal and skill-status routes');
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
93
|
//# sourceMappingURL=dsh-better-display.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@drscrewdriver/dsh-better-display",
|
|
3
|
-
"version": "0.3.3-fork.
|
|
3
|
+
"version": "0.3.3-fork.4",
|
|
4
4
|
"description": "A calmer reading view for DeepSeek Harness: native process details, live reasoning, and clean final answers. Fork adds answer message bubbles with a settings switch.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
package/tsdown.config.ts
CHANGED
|
@@ -21,7 +21,10 @@ const adapter = existsSync(vendored) ? vendored : resolveHarnessAdapter();
|
|
|
21
21
|
if (!existsSync(adapter)) throw new Error('externalClientBundle adapter is missing.');
|
|
22
22
|
const { externalClientBundle } = await import(pathToFileURL(adapter).href);
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
// The client bundle registers under this id via window.__ModuleLoader__; it
|
|
25
|
+
// must equal the plugin's profile entry id (the scoped package name) so the
|
|
26
|
+
// host can mount it.
|
|
27
|
+
const bundle = externalClientBundle('@drscrewdriver/dsh-better-display', ['src/dsh-better-display.ts'], {
|
|
25
28
|
clientEntry: 'src/client/index.tsx',
|
|
26
29
|
}) as UserConfig[];
|
|
27
30
|
|