dsh-watcher 0.6.0 → 0.8.0
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/README.en.md +44 -13
- package/README.md +44 -13
- package/lib/client.js +1110 -901
- package/lib/client.js.map +1 -1
- package/lib/dsh-watcher.js +53 -5
- package/lib/types/client/Insights.d.ts +18 -0
- package/lib/types/client/SidebarTab.d.ts +52 -0
- package/lib/types/client/TimingPanel.d.ts +7 -0
- package/lib/types/client/Watcher.d.ts +56 -0
- package/lib/types/client/disclosure-depth.d.ts +22 -0
- package/lib/types/client/history-loader.d.ts +23 -0
- package/lib/types/client/index.d.ts +9 -0
- package/lib/types/client/model-trace-definition.d.ts +11 -0
- package/lib/types/client/step-timeline.d.ts +15 -0
- package/lib/types/dsh-watcher.d.ts +6 -0
- package/lib/types/hub/aggregation.d.ts +40 -0
- package/lib/types/hub/follow.d.ts +29 -0
- package/lib/types/hub/history.d.ts +30 -0
- package/lib/types/hub/overview.d.ts +10 -0
- package/lib/types/hub/watcher.d.ts +4 -0
- package/lib/types/insights/projection.d.ts +283 -0
- package/lib/types/observation/fold.d.ts +207 -0
- package/lib/types/observation/model-trace.d.ts +96 -0
- package/lib/types/observation/performance.d.ts +67 -0
- package/package.json +25 -24
package/lib/client.js
CHANGED
|
@@ -55,6 +55,32 @@ window.__ModuleLoader__.load({
|
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
57
|
//#endregion
|
|
58
|
+
//#region src/client/history-loader.ts
|
|
59
|
+
/**
|
|
60
|
+
* Build the explicit whole-history loader for one Session: repeat the
|
|
61
|
+
* Session's public, read-only paging verb until the head stops moving, using
|
|
62
|
+
* the same conversation head key the header overlay reports. Nothing starts
|
|
63
|
+
* it automatically — only a user action does.
|
|
64
|
+
*/
|
|
65
|
+
function createCompleteHistoryLoader(ctx, sessionId, session) {
|
|
66
|
+
return (signal) => loadCompleteHistory({
|
|
67
|
+
signal,
|
|
68
|
+
loadOlder: () => session.loadOlder(),
|
|
69
|
+
read: () => {
|
|
70
|
+
const sessionSnapshot = session.getSnapshot();
|
|
71
|
+
const chat = ctx.uiConversation.binding(sessionId).snapshot.getSnapshot().views.get("chat");
|
|
72
|
+
if (chat === void 0) throw new Error("dsh-watcher: Chat conversation target is unavailable");
|
|
73
|
+
const firstNode = chat.legacy.nodes[0];
|
|
74
|
+
const firstTurn = chat.timeline.turnOrder[0];
|
|
75
|
+
return {
|
|
76
|
+
hasMore: sessionSnapshot.hasMore,
|
|
77
|
+
loadingOlder: sessionSnapshot.loadingOlder,
|
|
78
|
+
headKey: `${firstTurn ?? "none"}:${firstNode?.seq ?? "none"}:${chat.legacy.nodes.length}`
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
//#endregion
|
|
58
84
|
//#region src/hub/follow.ts
|
|
59
85
|
/**
|
|
60
86
|
* Follow versus pin state for the work rail.
|
|
@@ -1690,8 +1716,8 @@ window.__ModuleLoader__.load({
|
|
|
1690
1716
|
});
|
|
1691
1717
|
}
|
|
1692
1718
|
//#endregion
|
|
1693
|
-
//#region \0dshx-css-module
|
|
1694
|
-
const css$2 = ".qzKc3a_root{--watcher-panel-max-height:min(680px, calc(100vh - 112px));--watcher-motion-fast:.14s;--watcher-motion-panel:.18s;--watcher-motion-inspector:.2s;--watcher-motion-content-out:.12s;--watcher-ease-out:cubic-bezier(.2, .8, .2, 1);--watcher-ease-glide:cubic-bezier(.22, .61, .36, 1);position:relative}.qzKc3a_trigger{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);width:32px;height:32px;color:var(--dsw-alias-label-primary);cursor:pointer;transition:background-color var(--watcher-motion-fast) ease, border-color var(--watcher-motion-fast) ease, color var(--watcher-motion-fast) ease, transform .1s ease;background:0 0;border-radius:999px;justify-content:center;align-items:center;padding:0;display:inline-flex}.qzKc3a_trigger:hover:not(:disabled),.qzKc3a_trigger:focus-visible{background:var(--dsw-alias-interactive-bg-hover)}.qzKc3a_trigger:active{transform:scale(.96)}.qzKc3a_trigger:focus-visible{outline:2px solid var(--dsw-static-deepseek-450);outline-offset:2px}.qzKc3a_trigger[data-open]{border-color:var(--dsw-alias-button-ghost-active-border);background:var(--dsw-alias-button-ghost-active-fill);color:var(--dsw-static-deepseek-450)}.qzKc3a_trigger[data-live]{color:var(--dsw-static-deepseek-450)}.qzKc3a_trigger[data-alert]{color:var(--dsw-alias-state-error-primary)}.qzKc3a_eye,.qzKc3a_eyeBlink,.qzKc3a_eyePupil{transform-box:fill-box;transform-origin:50%;display:block}.qzKc3a_trigger[data-live] .qzKc3a_eyePupil{animation:qzKc3a_watcher-eye-scan 2.8s var(--watcher-ease-out) infinite}.qzKc3a_trigger[data-live] .qzKc3a_eyeBlink{animation:5.2s ease-in-out infinite qzKc3a_watcher-eye-blink}@keyframes qzKc3a_watcher-eye-scan{0%,12%,92%,to{transform:translate(0)}30%{transform:translate(1.35px)}54%{transform:translate(-1.2px)}74%{transform:translate(.8px)}}@keyframes qzKc3a_watcher-eye-blink{0%,42%,44.5%,to{transform:scaleY(1)}43.2%{transform:scaleY(.12)}}.qzKc3a_menu{z-index:1100;--watcher-panel-max-height:min(680px, calc(100vh - 24px));--watcher-motion-fast:.14s;--watcher-motion-panel:.18s;--watcher-motion-inspector:.2s;--watcher-motion-content-out:.12s;--watcher-ease-out:cubic-bezier(.2, .8, .2, 1);--watcher-ease-glide:cubic-bezier(.22, .61, .36, 1);box-sizing:border-box;max-width:calc(100vw - 24px);max-height:var(--watcher-panel-max-height);border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-specific-menu);box-shadow:var(--dsw-shadow-lv3);color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-family);transform-origin:100% 0;animation:qzKc3a_watcher-panel-enter var(--watcher-motion-panel) var(--watcher-ease-out);isolation:isolate;border-radius:12px;align-items:stretch;font-size:13px;line-height:20px;display:flex;position:fixed;top:auto;left:auto;right:auto;overflow:hidden}.qzKc3a_menu[data-sized]{max-width:none}.qzKc3a_menu[data-sized] .qzKc3a_workPicture{flex:auto;width:auto;min-height:0;max-height:none}.qzKc3a_resizeEdgeRight,.qzKc3a_resizeEdgeBottom,.qzKc3a_resizeGrip{z-index:5;touch-action:none;position:absolute}.qzKc3a_resizeEdgeRight{cursor:ew-resize;width:8px;top:0;bottom:0;right:0}.qzKc3a_resizeEdgeBottom{cursor:ns-resize;height:8px;bottom:0;left:0;right:0}.qzKc3a_resizeGrip{cursor:nwse-resize;border-right:2px solid var(--dsw-alias-border-l2);border-bottom:2px solid var(--dsw-alias-border-l2);opacity:.55;border-bottom-right-radius:4px;width:14px;height:14px;transition:opacity .12s;bottom:3px;right:3px}.qzKc3a_resizeGrip:hover{opacity:1;border-color:var(--dsw-alias-label-secondary)}@keyframes qzKc3a_watcher-panel-enter{0%{opacity:0;transform:translateY(-5px)scale(.992)}to{opacity:1;transform:translateY(0)scale(1)}}.qzKc3a_workPicture{width:min(720px,100vw - 32px);min-width:0;min-height:290px;max-height:var(--watcher-panel-max-height);background:var(--dsw-specific-menu);flex-direction:column;flex:none;display:flex}.qzKc3a_pictureHeader{border-bottom:1px solid var(--dsw-alias-border-l2);flex:none;justify-content:space-between;align-items:flex-start;gap:12px;padding:16px 14px 14px 16px;display:flex}.qzKc3a_nowBlock{min-width:0}.qzKc3a_eyebrow{color:var(--dsw-static-deepseek-450);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:5px;font-size:12px;font-weight:500;line-height:18px;display:flex;overflow:hidden}.qzKc3a_eyebrow[data-alert]{color:var(--dsw-alias-state-error-primary)}.qzKc3a_now{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:17px;font-weight:600;line-height:24px;overflow:hidden}.qzKc3a_summary{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:center;margin-top:4px;font-size:12px;line-height:18px;display:flex}.qzKc3a_summary span+span:before{content:\"·\";color:var(--dsw-alias-label-dimmed);margin:0 6px}.qzKc3a_summary [data-partial]{color:var(--dsw-alias-state-warn-primary)}.qzKc3a_loadAllInlineBtn{background:var(--dsw-specific-menu);color:var(--dsw-static-deepseek-450);cursor:pointer;border:1px solid #4d6bfe66;border-radius:4px;align-items:center;margin-left:6px;padding:1px 7px;font-size:11px;font-weight:500;line-height:16px;transition:all .12s;display:inline-flex}.qzKc3a_loadAllInlineBtn:hover{background:var(--dsw-static-deepseek-450);color:#fff}.qzKc3a_sessionTiming{border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);flex:none;grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:9px 10px;display:grid}.qzKc3a_sessionTimingMetric{min-width:0;padding:0 8px}.qzKc3a_sessionTimingMetric+.qzKc3a_sessionTimingMetric{border-left:1px solid var(--dsw-alias-border-l2)}.qzKc3a_sessionTimingMetric dt,.qzKc3a_sessionTimingMetric dd{text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.qzKc3a_sessionTimingMetric dt{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.qzKc3a_sessionTimingMetric dd{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:13px;font-weight:600;line-height:19px}.qzKc3a_viewToolbar{border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-specific-menu);flex-wrap:wrap;flex:none;justify-content:space-between;align-items:center;gap:6px 14px;min-height:42px;padding:6px 14px;display:flex}.qzKc3a_viewControl{align-items:center;gap:6px;min-width:0;display:flex}.qzKc3a_viewToolbarLabel{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:12px;line-height:18px}.qzKc3a_viewMode{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);border-radius:7px;flex:none;grid-template-columns:repeat(2,minmax(42px,1fr));padding:2px;display:inline-grid}.qzKc3a_viewMode button{min-height:26px;color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:5px;padding:2px 9px;font-size:12px;line-height:18px}.qzKc3a_viewMode button:hover{color:var(--dsw-alias-label-primary)}.qzKc3a_viewMode button[data-active]{background:var(--dsw-specific-menu);box-shadow:inset 0 0 0 1px var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary);font-weight:600}.qzKc3a_historyNotice{border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);flex:none;align-items:center;gap:10px;min-height:48px;padding:7px 14px 8px 16px;display:flex}.qzKc3a_historyNoticeCopy{flex-direction:column;flex:1;min-width:0;display:flex}.qzKc3a_historyNoticeCopy strong{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;line-height:18px;overflow:hidden}.qzKc3a_historyNoticeCopy span{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:16px;overflow:hidden}.qzKc3a_historyNotice button{border:1px solid var(--dsw-alias-button-ghost-active-border);background:var(--dsw-specific-menu);min-height:28px;color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;border-radius:7px;flex:none;padding:3px 9px;font-size:12px;line-height:18px}.qzKc3a_historyNotice button:hover:not(:disabled){background:var(--dsw-alias-button-ghost-active-hover)}.qzKc3a_historyNotice button:disabled{color:var(--dsw-alias-label-tertiary);cursor:progress}.qzKc3a_follow{white-space:nowrap;flex:none;margin-top:2px}.qzKc3a_unread{border:1px solid var(--dsw-alias-button-ghost-active-border);background:var(--dsw-alias-button-ghost-active-fill);width:calc(100% - 28px);min-height:34px;color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:6px;margin:10px 14px 0;font-size:12px;display:inline-flex}.qzKc3a_unread:hover{background:var(--dsw-alias-button-ghost-active-hover)}.qzKc3a_unread:focus-visible,.qzKc3a_turnToggle:focus-visible,.qzKc3a_phaseToggle:focus-visible,.qzKc3a_stepToggle:focus-visible,.qzKc3a_analysisClusterToggle:focus-visible,.qzKc3a_modelStageToggle:focus-visible,.qzKc3a_reasoningToggle:focus-visible,.qzKc3a_groupedModelToggle:focus-visible,.qzKc3a_viewMode button:focus-visible,.qzKc3a_historyNotice button:focus-visible,.qzKc3a_overviewOccurrence:focus-visible,.qzKc3a_inspectorBack:focus-visible,.qzKc3a_occurrence:focus-visible,.qzKc3a_tab:focus-visible,.qzKc3a_copyRaw:focus-visible{outline:2px solid var(--dsw-static-deepseek-450);outline-offset:-2px}.qzKc3a_railViewport{overscroll-behavior:contain;--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex:1;min-height:0;overflow:auto}.qzKc3a_turns{padding:8px 10px 18px}.qzKc3a_turn+.qzKc3a_turn{border-top:1px solid var(--dsw-alias-border-l2);margin-top:12px;padding-top:12px}.qzKc3a_turnHeader{padding:0 2px 2px}.qzKc3a_turnHeader h2{margin:0}.qzKc3a_turnToggle{box-sizing:border-box;width:100%;min-height:50px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;grid-template-columns:14px minmax(0,1fr) auto;align-items:center;gap:7px;padding:6px 8px;display:grid}.qzKc3a_turnToggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.qzKc3a_turnChevron{color:var(--dsw-alias-label-tertiary);transition:transform var(--watcher-motion-fast) var(--watcher-ease-out);transform:rotate(0)}.qzKc3a_turnToggle[aria-expanded=true] .qzKc3a_turnChevron{transform:rotate(90deg)}.qzKc3a_turnCopy{flex-direction:column;min-width:0;display:flex}.qzKc3a_turnTitleLine{align-items:center;gap:6px;min-width:0;display:flex}.qzKc3a_turnTitle{color:var(--dsw-alias-label-secondary);font-size:13px;font-weight:600;line-height:20px}.qzKc3a_turnSummary,.qzKc3a_turnDuration{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px;font-weight:400;line-height:18px}.qzKc3a_turnSummary{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.qzKc3a_turnPerformance{white-space:nowrap;flex-direction:column;align-items:flex-end;min-width:62px;display:flex}.qzKc3a_turnDuration{white-space:nowrap}.qzKc3a_turnSpeed{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-size:12px;font-weight:500;line-height:18px}.qzKc3a_turnBody[hidden]{display:none}.qzKc3a_groupRail{padding-left:18px;position:relative}.qzKc3a_railLine{background:var(--dsw-alias-border-l2);pointer-events:none;width:1px;position:absolute;top:18px;bottom:18px;left:23px}.qzKc3a_phase{z-index:1;box-sizing:border-box;width:100%;padding:3px 0 11px;position:relative}.qzKc3a_phase+.qzKc3a_phase{margin-top:4px}.qzKc3a_phaseHeader{position:relative}.qzKc3a_phaseToggle{box-sizing:border-box;width:100%;min-height:42px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;grid-template-columns:10px 12px minmax(0,1fr);align-items:center;gap:6px;padding:3px 8px 3px 0;display:grid;position:relative}.qzKc3a_phaseToggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.qzKc3a_phase[data-now]>.qzKc3a_phaseHeader .qzKc3a_phaseToggle{background:var(--dsw-alias-bg-layer-2);border-radius:7px}.qzKc3a_phaseChevron,.qzKc3a_stepChevron,.qzKc3a_analysisClusterChevron{color:var(--dsw-alias-label-tertiary);transition:transform var(--watcher-motion-fast) var(--watcher-ease-out);transform:rotate(0)}.qzKc3a_phaseToggle[aria-expanded=true] .qzKc3a_phaseChevron,.qzKc3a_stepToggle[aria-expanded=true] .qzKc3a_stepChevron,.qzKc3a_analysisClusterToggle[aria-expanded=true] .qzKc3a_analysisClusterChevron{transform:rotate(90deg)}.qzKc3a_phaseMarker{box-sizing:border-box;background:var(--dsw-alias-label-tertiary);width:10px;height:10px;box-shadow:0 0 0 4px var(--dsw-specific-menu);border-radius:50%;display:block;position:relative}.qzKc3a_phaseMarker[data-state=active],.qzKc3a_phaseMarker[data-state=current]{background:var(--dsw-static-deepseek-450)}.qzKc3a_phaseMarker[data-state=waiting]{background:var(--dsw-alias-state-warn-primary)}.qzKc3a_phaseMarker[data-state=failure],.qzKc3a_phaseMarker[data-state=interrupted]{background:var(--dsw-alias-state-error-primary)}.qzKc3a_phaseMarker[data-state=partial]{border:1px dashed var(--dsw-alias-label-tertiary);background:var(--dsw-specific-menu)}.qzKc3a_neutralDot{border:1px solid var(--dsw-alias-label-tertiary);background:var(--dsw-alias-label-tertiary);border-radius:50%;flex:none;width:10px;height:10px;display:inline-block;position:relative}.qzKc3a_neutralDot[data-status=unknown]{background:var(--dsw-specific-menu);border-style:dashed}.qzKc3a_phaseCopy,.qzKc3a_occurrenceCopy{flex-direction:column;min-width:0;display:flex}.qzKc3a_phaseTitleLine{align-items:center;gap:6px;min-width:0;display:flex}.qzKc3a_phaseTitle{min-width:0;color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:550;line-height:21px;overflow:hidden}.qzKc3a_phaseMeta{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;margin-top:1px;font-size:12px;line-height:18px;overflow:hidden}.qzKc3a_groupBadges{flex:none;align-items:center;gap:4px;display:inline-flex}.qzKc3a_groupBadges span,.qzKc3a_overviewTag,.qzKc3a_patternLabel,.qzKc3a_parallelLabel{border:1px solid var(--dsw-alias-border-l2);min-height:18px;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:999px;align-items:center;padding:0 5px;font-size:11px;font-weight:500;line-height:16px;display:inline-flex}.qzKc3a_groupBadges [data-kind=retry]{color:var(--dsw-alias-state-error-primary)}.qzKc3a_groupBadges [data-kind=parallel],.qzKc3a_overviewTag[data-state=active],.qzKc3a_overviewTag[data-state=current]{color:var(--dsw-static-deepseek-450)}.qzKc3a_overviewTag[data-state=waiting]{color:var(--dsw-alias-state-warn-primary)}.qzKc3a_overviewTag[data-state=failure],.qzKc3a_overviewTag[data-state=interrupted]{color:var(--dsw-alias-state-error-primary)}.qzKc3a_overviewTag[data-state=partial]{color:var(--dsw-alias-label-tertiary)}.qzKc3a_occurrenceChevron{color:var(--dsw-alias-label-dimmed);opacity:0;transition:opacity var(--watcher-motion-fast) ease, transform var(--watcher-motion-fast) ease;flex:none;transform:translate(-2px)}.qzKc3a_occurrence:hover .qzKc3a_occurrenceChevron,.qzKc3a_occurrence[data-selected] .qzKc3a_occurrenceChevron,.qzKc3a_occurrence:focus-visible .qzKc3a_occurrenceChevron{opacity:1;transform:translate(0)}.qzKc3a_stepTimeline{border-left:1px solid var(--dsw-alias-border-l2);margin:1px 8px 0 28px;padding-left:11px;position:relative}.qzKc3a_overviewStep{min-width:0;position:relative}.qzKc3a_overviewStep+.qzKc3a_overviewStep{margin-top:10px;padding-top:8px}.qzKc3a_overviewStep:before{background:var(--dsw-alias-border-l2);content:\"\";width:8px;height:1px;position:absolute;top:13px;left:-12px}.qzKc3a_overviewStepHeader{min-height:29px}.qzKc3a_stepToggle{box-sizing:border-box;width:100%;min-height:29px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;grid-template-columns:12px minmax(0,1fr) auto;align-items:center;gap:5px;padding:2px 4px 2px 0;display:grid}.qzKc3a_stepToggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.qzKc3a_overviewStepLabel,.qzKc3a_overviewStepSignals{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px;line-height:18px}.qzKc3a_overviewStepLabel{min-width:0;font-family:var(--dsw-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.qzKc3a_overviewStepSignals{white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.qzKc3a_overviewOccurrences{position:relative}.qzKc3a_overviewStep[data-parallel] .qzKc3a_overviewOccurrences{border-left:1px solid var(--dsw-static-deepseek-450);padding-left:5px}.qzKc3a_modelStage{border-left:2px solid var(--dsw-static-deepseek-450);background:var(--dsw-alias-bg-layer-2);border-radius:0 7px 7px 0;min-width:0;margin:2px 2px 7px;overflow:hidden}.qzKc3a_modelStage[data-live]{box-shadow:inset 0 0 0 1px var(--dsw-alias-button-ghost-active-border)}.qzKc3a_modelStageToggle{box-sizing:border-box;width:100%;min-height:42px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:12px 8px minmax(0,1fr);align-items:center;gap:7px;padding:5px 9px 5px 7px;display:grid}.qzKc3a_modelStageToggle:hover,.qzKc3a_reasoningToggle:hover,.qzKc3a_groupedModelToggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.qzKc3a_modelStageChevron,.qzKc3a_reasoningChevron,.qzKc3a_groupedModelChevron{color:var(--dsw-alias-label-tertiary);transition:transform var(--watcher-motion-fast) var(--watcher-ease-out)}.qzKc3a_modelStageToggle[aria-expanded=true] .qzKc3a_modelStageChevron,.qzKc3a_reasoningToggle[aria-expanded=true] .qzKc3a_reasoningChevron,.qzKc3a_groupedModelToggle[aria-expanded=true] .qzKc3a_groupedModelChevron{transform:rotate(90deg)}.qzKc3a_modelStageGlyph{background:var(--dsw-static-deepseek-450);width:7px;height:7px;box-shadow:0 0 0 3px var(--dsw-alias-button-ghost-active-fill);border-radius:999px}.qzKc3a_modelStageCopy{grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:8px;min-width:0;display:grid}.qzKc3a_modelStageTitle{color:var(--dsw-alias-label-primary);white-space:nowrap;font-size:13px;font-weight:600;line-height:20px}.qzKc3a_modelStageSummary{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}.qzKc3a_modelStageBody{padding:2px 10px 10px 20px}.qzKc3a_modelStageBar{background:var(--dsw-alias-border-l2);border-radius:999px;gap:2px;height:5px;margin:2px 0 10px;display:flex;overflow:hidden}.qzKc3a_modelStageBar>span{border-radius:inherit;min-width:3px}.qzKc3a_modelStageBar [data-segment=wait],.qzKc3a_modelStageSwatch[data-segment=wait]{background:var(--dsw-alias-label-dimmed)}.qzKc3a_modelStageBar [data-segment=reasoning],.qzKc3a_modelStageSwatch[data-segment=reasoning]{background:var(--dsw-static-deepseek-450)}.qzKc3a_modelStageBar [data-segment=output],.qzKc3a_modelStageSwatch[data-segment=output]{background:var(--dsw-alias-label-secondary)}.qzKc3a_modelStageBar [data-segment=unattributed],.qzKc3a_modelStageSwatch[data-segment=unattributed]{background:var(--dsw-alias-state-warn-primary)}.qzKc3a_modelStageLedger{grid-template-columns:minmax(0,1fr);gap:5px 12px;margin:0;display:grid}.qzKc3a_modelStageMetric{min-width:0;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;gap:8px;font-size:12px;line-height:18px;display:flex}.qzKc3a_modelStageMetric dt,.qzKc3a_modelStageMetric dd{margin:0}.qzKc3a_modelStageMetric dt{align-items:center;gap:6px;min-width:0;display:inline-flex}.qzKc3a_modelStageMetric dd{color:var(--dsw-alias-label-secondary);text-align:right;flex:none}.qzKc3a_modelStageSwatch{border-radius:999px;flex:none;width:6px;height:6px}.qzKc3a_modelStageNote{color:var(--dsw-alias-label-tertiary);margin:8px 0 0;font-size:12px;line-height:18px}.qzKc3a_reasoningAttempts{border-top:1px solid var(--dsw-alias-border-l2);margin-top:8px;padding-top:1px}.qzKc3a_reasoningDisclosure{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);border-radius:6px;min-width:0;margin-top:5px;overflow:hidden}.qzKc3a_reasoningToggle{box-sizing:border-box;width:100%;min-height:34px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:12px minmax(0,1fr);align-items:center;gap:6px;padding:5px 8px;display:grid}.qzKc3a_reasoningLabel{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:550;line-height:20px}.qzKc3a_reasoningMeta{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;text-align:left;white-space:normal;grid-column:2;font-size:12px;line-height:18px;overflow:hidden}.qzKc3a_reasoningBody{box-sizing:border-box;border-top:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block);max-height:320px;color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);margin:0;padding:10px 12px;font-size:13px;line-height:1.6;overflow:auto}.qzKc3a_reasoningBody>*{margin-top:0;margin-bottom:8px}.qzKc3a_reasoningBody>:last-child{margin-bottom:0}.qzKc3a_reasoningBody .md-code-block{max-width:100%}.qzKc3a_groupedModelStages{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);border-radius:7px;margin-bottom:9px;position:relative;overflow:hidden}.qzKc3a_groupedModelStages:before{background:var(--dsw-alias-border-l2);content:\"\";width:8px;height:1px;position:absolute;top:20px;left:-12px}.qzKc3a_groupedModelToggle{box-sizing:border-box;width:100%;min-height:44px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:12px minmax(0,1fr);align-items:center;gap:7px;padding:5px 9px;display:grid}.qzKc3a_groupedModelToggle>span{justify-content:space-between;align-items:baseline;gap:10px;min-width:0;display:flex}.qzKc3a_groupedModelToggle strong{color:var(--dsw-alias-label-primary);font-size:13px;line-height:20px}.qzKc3a_groupedModelToggle small{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}.qzKc3a_groupedModelList{border-top:1px solid var(--dsw-alias-border-l2);padding:0 7px 8px 22px}.qzKc3a_groupedModelStep{min-width:0;padding-top:8px}.qzKc3a_groupedModelStep+.qzKc3a_groupedModelStep{border-top:1px solid var(--dsw-alias-border-l2)}.qzKc3a_groupedModelStepLabel{color:var(--dsw-alias-label-tertiary);font-family:var(--dsw-font-mono);margin:0 2px 4px;font-size:12px;line-height:18px;display:block}.qzKc3a_analysisClusters{border-left:1px solid var(--dsw-alias-border-l2);margin:1px 8px 0 28px;padding-left:11px;position:relative}.qzKc3a_analysisCluster,.qzKc3a_analysisSingleton{min-width:0;position:relative}.qzKc3a_analysisCluster+.qzKc3a_analysisCluster,.qzKc3a_analysisCluster+.qzKc3a_analysisSingleton,.qzKc3a_analysisSingleton+.qzKc3a_analysisCluster,.qzKc3a_analysisSingleton+.qzKc3a_analysisSingleton{margin-top:6px}.qzKc3a_analysisCluster:before,.qzKc3a_analysisSingleton:before{background:var(--dsw-alias-border-l2);content:\"\";width:8px;height:1px;position:absolute;top:20px;left:-12px}.qzKc3a_analysisClusterToggle{box-sizing:border-box;width:100%;min-height:46px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:7px;grid-template-columns:12px 10px minmax(0,1fr) auto;align-items:center;gap:7px;padding:5px 6px 5px 4px;display:grid}.qzKc3a_analysisClusterToggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.qzKc3a_analysisCluster[data-open]>.qzKc3a_analysisClusterToggle{border-color:var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2)}.qzKc3a_analysisClusterDotSlot{width:10px;height:10px;display:block;position:relative}.qzKc3a_analysisClusterDot{inset:0;position:absolute!important}.qzKc3a_analysisClusterCopy{flex-direction:column;min-width:0;display:flex}.qzKc3a_analysisClusterTitle{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:550;line-height:20px;overflow:hidden}.qzKc3a_analysisClusterMeta{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}.qzKc3a_analysisClusterCount{min-width:28px;color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;font-size:12px;font-weight:600;line-height:18px}.qzKc3a_analysisClusterItems{border-left:1px solid var(--dsw-alias-border-l2);margin:3px 0 8px 17px;padding-left:5px}.qzKc3a_overviewOccurrence{box-sizing:border-box;width:100%;min-height:45px;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:background-color var(--watcher-motion-fast) var(--watcher-ease-out), border-color var(--watcher-motion-fast) var(--watcher-ease-out), box-shadow var(--watcher-motion-fast) var(--watcher-ease-out);animation:qzKc3a_watcher-live-append var(--watcher-motion-fast) var(--watcher-ease-out);background:0 0;border:1px solid #0000;border-radius:7px;grid-template-columns:22px 10px minmax(0,1fr) auto 12px;align-items:center;gap:7px;padding:5px 5px 5px 7px;display:grid;position:relative}.qzKc3a_overviewOccurrence+.qzKc3a_overviewOccurrence{margin-top:2px}.qzKc3a_overviewOccurrence:hover{background:var(--dsw-alias-interactive-bg-hover)}.qzKc3a_overviewOccurrence[data-current]:not([data-selected]){background:var(--dsw-alias-bg-layer-2)}.qzKc3a_overviewOccurrence[data-selected]{border-color:var(--dsw-alias-button-ghost-active-border);background:var(--dsw-alias-button-ghost-active-fill);box-shadow:inset 2px 0 0 var(--dsw-static-deepseek-450)}.qzKc3a_overviewOccurrenceIndex{color:var(--dsw-alias-label-dimmed);font-family:var(--dsw-font-mono);font-variant-numeric:tabular-nums;text-align:right;font-size:11px;line-height:18px}.qzKc3a_overviewOccurrenceDotSlot{width:10px;height:10px;display:block;position:relative}.qzKc3a_overviewOccurrenceDot{inset:0;position:absolute!important}.qzKc3a_overviewOccurrenceCopy{flex-direction:column;min-width:0;display:flex}.qzKc3a_overviewOccurrenceTitle{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:550;line-height:20px;overflow:hidden}.qzKc3a_overviewOccurrenceMeta{color:var(--dsw-alias-label-tertiary);font-family:var(--dsw-font-mono);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}.qzKc3a_overviewOccurrenceDuration{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px;line-height:18px}.qzKc3a_overviewOccurrenceChevron{color:var(--dsw-alias-label-dimmed);opacity:0;transition:opacity var(--watcher-motion-fast) ease, transform var(--watcher-motion-fast) ease;transform:translate(-2px)}.qzKc3a_overviewOccurrence:hover .qzKc3a_overviewOccurrenceChevron,.qzKc3a_overviewOccurrence[data-selected] .qzKc3a_overviewOccurrenceChevron,.qzKc3a_overviewOccurrence:focus-visible .qzKc3a_overviewOccurrenceChevron{opacity:1;transform:translate(0)}@keyframes qzKc3a_watcher-live-append{0%{opacity:.5;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}.qzKc3a_empty{min-height:250px;color:var(--dsw-alias-label-tertiary);text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;padding:28px;display:flex}.qzKc3a_emptyEye{color:var(--dsw-alias-label-secondary);margin-bottom:12px;display:inline-flex}.qzKc3a_empty strong{color:var(--dsw-alias-label-secondary);font-size:14px;font-weight:600;line-height:21px}.qzKc3a_empty>span:last-child{margin-top:4px;font-size:12px;line-height:18px}.qzKc3a_inspector{width:438px;min-width:0;max-height:var(--watcher-panel-max-height);border-right:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);flex-direction:column;flex:none;display:flex}@media (width>=861px){.qzKc3a_inspector{animation:qzKc3a_watcher-inspector-enter var(--watcher-motion-inspector) var(--watcher-ease-glide);overflow:hidden}.qzKc3a_inspector>*{box-sizing:border-box;width:438px;animation:qzKc3a_watcher-inspector-content-in var(--watcher-motion-content-out) var(--watcher-ease-glide) var(--watcher-motion-inspector) both}.qzKc3a_inspector[data-closing]{pointer-events:none;animation:qzKc3a_watcher-inspector-exit var(--watcher-motion-inspector) var(--watcher-ease-glide) var(--watcher-motion-content-out) forwards}.qzKc3a_inspector[data-closing]>*{animation:qzKc3a_watcher-inspector-content-out var(--watcher-motion-content-out) ease-in forwards}}@keyframes qzKc3a_watcher-inspector-enter{0%{width:0}}@keyframes qzKc3a_watcher-inspector-content-in{0%{opacity:0;transform:translate(16px)}}@keyframes qzKc3a_watcher-inspector-content-out{to{opacity:0;transform:translate(16px)}}@keyframes qzKc3a_watcher-inspector-exit{to{width:0}}.qzKc3a_inspectorHeader{border-bottom:1px solid var(--dsw-alias-border-l2);flex:none;padding:16px 16px 14px}.qzKc3a_inspectorBack{min-height:28px;color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:5px;margin:-4px 0 8px -6px;padding:0 7px 0 5px;font-size:12px;display:inline-flex}.qzKc3a_inspectorBack:hover{background:var(--dsw-alias-interactive-bg-hover)}.qzKc3a_statusLine,.qzKc3a_detailStatus{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;align-items:center;gap:7px;font-size:12px;line-height:18px;display:flex}.qzKc3a_statusLine[data-status=failure],.qzKc3a_statusLine[data-status=interrupted],.qzKc3a_detailStatus[data-status=failure],.qzKc3a_detailStatus[data-status=interrupted]{color:var(--dsw-alias-state-error-primary)}.qzKc3a_statusLine[data-status=running],.qzKc3a_detailStatus[data-status=running]{color:var(--dsw-static-deepseek-450)}.qzKc3a_statusLine[data-status=waiting],.qzKc3a_detailStatus[data-status=waiting]{color:var(--dsw-alias-state-warn-primary)}.qzKc3a_location{min-width:0;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;margin-left:auto}.qzKc3a_inspectorTitle{color:var(--dsw-alias-label-primary);margin:8px 0 0;font-size:18px;font-weight:600;line-height:25px}.qzKc3a_inspectorSummary{color:var(--dsw-alias-label-tertiary);margin:3px 0 0;font-size:12px;line-height:18px}.qzKc3a_groupSignals{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.qzKc3a_groupSignals span{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px}.qzKc3a_groupSignals span+span:before{content:\"·\";color:var(--dsw-alias-label-dimmed);margin-right:6px}.qzKc3a_groupSignals [data-retry]{color:var(--dsw-alias-state-warn-primary)}.qzKc3a_groupSignals [data-error]{color:var(--dsw-alias-state-error-primary)}.qzKc3a_inspectorBody{overscroll-behavior:contain;--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex:1;min-height:0;overflow:auto}.qzKc3a_executionSection{border-bottom:1px solid var(--dsw-alias-border-l2);padding:14px 16px 16px}.qzKc3a_sectionHeading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;display:flex}.qzKc3a_sectionHeading h3{color:var(--dsw-alias-label-secondary);margin:0;font-size:13px;font-weight:600;line-height:20px}.qzKc3a_sectionHeading>span{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px}.qzKc3a_executionList{max-height:188px;padding-right:2px;overflow:auto}.qzKc3a_stepBlock+.qzKc3a_stepBlock{border-top:1px solid var(--dsw-alias-border-l2);margin-top:10px;padding-top:10px}.qzKc3a_stepHeading{min-height:22px;color:var(--dsw-alias-label-tertiary);font-family:var(--dsw-font-mono);font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;gap:8px;padding:0 3px;font-size:12px;display:flex}.qzKc3a_stepSignals{align-items:center;gap:6px;min-width:0;display:inline-flex}.qzKc3a_stepDuration{color:var(--dsw-alias-label-secondary);font-family:var(--dsw-font-family);font-variant-numeric:tabular-nums;white-space:nowrap}.qzKc3a_parallelLabel{color:var(--dsw-static-deepseek-450);font-family:var(--dsw-font-family)}.qzKc3a_occurrences{margin-top:4px;position:relative}.qzKc3a_stepBlock[data-parallel] .qzKc3a_occurrences{border-left:1px solid var(--dsw-static-deepseek-450);padding-left:10px}.qzKc3a_occurrence{box-sizing:border-box;width:100%;min-height:46px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;grid-template-columns:10px minmax(0,1fr) auto 13px;align-items:center;gap:8px;padding:6px 7px;transition:background-color .14s,border-color .14s;display:grid}.qzKc3a_occurrenceDuration{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px;line-height:18px}.qzKc3a_occurrence+.qzKc3a_occurrence{margin-top:2px}.qzKc3a_occurrence:hover{background:var(--dsw-alias-interactive-bg-hover)}.qzKc3a_occurrence[data-selected]{border-color:var(--dsw-alias-button-ghost-active-border);background:var(--dsw-alias-button-ghost-active-fill)}.qzKc3a_occurrenceTitle{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:550;line-height:19px;overflow:hidden}.qzKc3a_occurrenceMeta{color:var(--dsw-alias-label-tertiary);font-family:var(--dsw-font-mono);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}.qzKc3a_detailSection{padding:16px}.qzKc3a_detailHeader{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:14px;display:grid}.qzKc3a_detailIdentity{min-width:0}.qzKc3a_detailIdentity h3{overflow-wrap:anywhere;color:var(--dsw-alias-label-primary);margin:6px 0 0;font-size:16px;font-weight:600;line-height:23px}.qzKc3a_detailIdentity p{overflow-wrap:anywhere;color:var(--dsw-alias-label-tertiary);font-family:var(--dsw-font-mono);margin:3px 0 0;font-size:12px;line-height:18px}.qzKc3a_patternLabel{color:var(--dsw-alias-state-warn-primary)}.qzKc3a_metrics{font-variant-numeric:tabular-nums;grid-template-columns:auto auto;gap:2px 8px;margin:0;font-size:12px;line-height:18px;display:grid}.qzKc3a_metrics dt{color:var(--dsw-alias-label-tertiary)}.qzKc3a_metrics dd{color:var(--dsw-alias-label-secondary);text-align:right;margin:0}.qzKc3a_metrics [data-error]{color:var(--dsw-alias-state-error-primary)}.qzKc3a_tabs{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:end;gap:4px;margin-top:16px;display:flex}.qzKc3a_tab{min-width:56px;min-height:36px;color:var(--dsw-alias-label-tertiary);font:inherit;cursor:pointer;background:0 0;border:0;padding:0 10px;font-size:13px;position:relative}.qzKc3a_tab:hover{color:var(--dsw-alias-label-primary)}.qzKc3a_tab[data-active]{color:var(--dsw-alias-label-primary);font-weight:600}.qzKc3a_tab[data-active]:after{content:\"\";background:var(--dsw-static-deepseek-450);border-radius:2px 2px 0 0;height:2px;position:absolute;bottom:-1px;left:9px;right:9px}.qzKc3a_tabPanel{--dsl-terminal-font:400 13px/22px var(--dsw-font-mono);min-height:116px;padding-top:12px}.qzKc3a_tabPanel>*{margin-top:0;margin-bottom:0}.qzKc3a_jsonSurface{font-size:13px;overflow:auto}.qzKc3a_jsonSurface [role=tree]{font-size:13px;line-height:20px}.qzKc3a_rawPanel pre{box-sizing:border-box;width:100%;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-mono);tab-size:2;margin:0;font-size:13px;line-height:20px;overflow:auto}.qzKc3a_documentResult{min-width:0;color:var(--dsw-alias-label-primary);padding:2px 2px 8px}.qzKc3a_documentResult .md-code-block{max-width:100%}.qzKc3a_documentResult blockquote{color:var(--dsw-alias-label-secondary)}.qzKc3a_documentResult table{font-variant-numeric:tabular-nums}.qzKc3a_rawPanel{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block);border-radius:8px;overflow:hidden}.qzKc3a_rawToolbar{border-bottom:1px solid var(--dsw-alias-border-l2);min-height:38px;color:var(--dsw-alias-label-tertiary);justify-content:space-between;align-items:center;gap:12px;padding:0 10px 0 12px;font-size:12px;display:flex}.qzKc3a_copyRaw{min-height:28px;color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:5px;padding:0 6px;font-size:12px;display:inline-flex}.qzKc3a_copyRaw:hover{background:var(--dsw-alias-interactive-bg-hover)}.qzKc3a_rawPanel pre{white-space:pre;max-height:320px;padding:12px}.qzKc3a_artifactResult,.qzKc3a_detailEmpty{border:1px solid var(--dsw-alias-border-l2);min-height:116px;color:var(--dsw-alias-label-tertiary);text-align:center;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;padding:18px;font-size:13px;display:flex}.qzKc3a_artifactResult strong{color:var(--dsw-alias-label-secondary);margin-top:6px;font-size:14px}.qzKc3a_artifactResult>span{margin-top:2px;font-size:12px}.qzKc3a_artifactResult .qzKc3a_jsonSurface{text-align:left;width:100%;margin-top:12px}.qzKc3a_artifactGlyph{color:var(--dsw-static-deepseek-450);font-size:24px;line-height:28px}.qzKc3a_inspectorFooter{border-top:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-tertiary);flex:none;padding:9px 16px;font-size:12px;line-height:18px}@media (prefers-reduced-motion:reduce){.qzKc3a_inspector,.qzKc3a_inspector>*{animation:none}.qzKc3a_inspector[data-closing],.qzKc3a_inspector[data-closing]>*{animation-duration:.01ms;animation-delay:0s}.qzKc3a_menu,.qzKc3a_trigger[data-live] .qzKc3a_eyePupil,.qzKc3a_trigger[data-live] .qzKc3a_eyeBlink{animation:none}.qzKc3a_trigger,.qzKc3a_overviewOccurrence,.qzKc3a_turnChevron,.qzKc3a_phaseChevron,.qzKc3a_stepChevron,.qzKc3a_analysisClusterChevron,.qzKc3a_modelStageChevron,.qzKc3a_reasoningChevron,.qzKc3a_groupedModelChevron,.qzKc3a_occurrence,.qzKc3a_overviewOccurrenceChevron,.qzKc3a_occurrenceChevron{transition-duration:.01ms}.qzKc3a_overviewOccurrence{animation:none}.qzKc3a_root [data-state=ongoing] rect,.qzKc3a_menu [data-state=ongoing] rect{opacity:.55;animation:none!important}}@media (width<=860px){.qzKc3a_menu{flex-direction:column-reverse;width:min(720px,100vw - 24px);max-height:calc(100vh - 88px)}.qzKc3a_workPicture{width:auto;min-height:250px;max-height:none}.qzKc3a_menu:not(:has(.qzKc3a_inspector)){height:min(680px,100vh - 88px)}.qzKc3a_menu:not(:has(.qzKc3a_inspector)) .qzKc3a_workPicture{flex:auto}.qzKc3a_inspector{border-right:0;width:auto;max-height:none}.qzKc3a_menu:has(.qzKc3a_inspector){height:min(680px,100vh - 88px)}.qzKc3a_menu:has(.qzKc3a_inspector) .qzKc3a_workPicture{display:none}.qzKc3a_menu:has(.qzKc3a_inspector) .qzKc3a_inspector{flex:auto;min-height:0;max-height:none}.qzKc3a_inspectorBack svg{transform:rotate(180deg)}.qzKc3a_inspectorHeader{padding-top:14px}.qzKc3a_executionList{max-height:150px}}@media (width<=520px){.qzKc3a_menu{width:calc(100vw - 24px)}.qzKc3a_pictureHeader{padding:14px 12px}.qzKc3a_now{font-size:16px}.qzKc3a_turns{padding-inline:6px}.qzKc3a_groupBadges span:nth-child(n+2){display:none}.qzKc3a_inspectorHeader,.qzKc3a_executionSection,.qzKc3a_detailSection{padding-inline:12px}.qzKc3a_detailHeader{grid-template-columns:1fr}.qzKc3a_metrics{grid-template-columns:auto 1fr}.qzKc3a_metrics dd{text-align:left}.qzKc3a_modelStageCopy{grid-template-columns:1fr;gap:0}.qzKc3a_modelStageSummary{white-space:normal}.qzKc3a_modelStageLedger{grid-template-columns:1fr}.qzKc3a_reasoningToggle{grid-template-columns:12px minmax(0,1fr)}.qzKc3a_reasoningMeta{text-align:left;white-space:normal;grid-column:2}.qzKc3a_groupedModelToggle>span{gap:0;display:grid}.qzKc3a_groupedModelToggle small{white-space:normal}.qzKc3a_groupedModelList{padding-left:12px}}";
|
|
1719
|
+
//#region \0dshx-css-module:./src/client/Watcher.module.css.mjs
|
|
1720
|
+
const css$2 = ".PXhr7W_root{--watcher-panel-max-height:min(680px, calc(100vh - 112px));--watcher-motion-fast:.14s;--watcher-motion-panel:.18s;--watcher-motion-inspector:.2s;--watcher-motion-content-out:.12s;--watcher-ease-out:cubic-bezier(.2, .8, .2, 1);--watcher-ease-glide:cubic-bezier(.22, .61, .36, 1);position:relative}.PXhr7W_trigger{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);width:32px;height:32px;color:var(--dsw-alias-label-primary);cursor:pointer;transition:background-color var(--watcher-motion-fast) ease, border-color var(--watcher-motion-fast) ease, color var(--watcher-motion-fast) ease, transform .1s ease;background:0 0;border-radius:999px;justify-content:center;align-items:center;padding:0;display:inline-flex}.PXhr7W_trigger:hover:not(:disabled),.PXhr7W_trigger:focus-visible{background:var(--dsw-alias-interactive-bg-hover)}.PXhr7W_trigger:active{transform:scale(.96)}.PXhr7W_trigger:focus-visible{outline:2px solid var(--dsw-static-deepseek-450);outline-offset:2px}.PXhr7W_trigger[data-open]{border-color:var(--dsw-alias-button-ghost-active-border);background:var(--dsw-alias-button-ghost-active-fill);color:var(--dsw-static-deepseek-450)}.PXhr7W_trigger[data-live]{color:var(--dsw-static-deepseek-450)}.PXhr7W_trigger[data-alert]{color:var(--dsw-alias-state-error-primary)}.PXhr7W_eye,.PXhr7W_eyeBlink,.PXhr7W_eyePupil{transform-box:fill-box;transform-origin:50%;display:block}.PXhr7W_trigger[data-live] .PXhr7W_eyePupil{animation:PXhr7W_watcher-eye-scan 2.8s var(--watcher-ease-out) infinite}.PXhr7W_trigger[data-live] .PXhr7W_eyeBlink{animation:5.2s ease-in-out infinite PXhr7W_watcher-eye-blink}@keyframes PXhr7W_watcher-eye-scan{0%,12%,92%,to{transform:translate(0)}30%{transform:translate(1.35px)}54%{transform:translate(-1.2px)}74%{transform:translate(.8px)}}@keyframes PXhr7W_watcher-eye-blink{0%,42%,44.5%,to{transform:scaleY(1)}43.2%{transform:scaleY(.12)}}.PXhr7W_menu{z-index:1100;--watcher-panel-max-height:min(680px, calc(100vh - 24px));--watcher-motion-fast:.14s;--watcher-motion-panel:.18s;--watcher-motion-inspector:.2s;--watcher-motion-content-out:.12s;--watcher-ease-out:cubic-bezier(.2, .8, .2, 1);--watcher-ease-glide:cubic-bezier(.22, .61, .36, 1);box-sizing:border-box;max-width:calc(100vw - 24px);max-height:var(--watcher-panel-max-height);border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-specific-menu);box-shadow:var(--dsw-shadow-lv3);color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-family);transform-origin:100% 0;animation:PXhr7W_watcher-panel-enter var(--watcher-motion-panel) var(--watcher-ease-out);isolation:isolate;border-radius:12px;align-items:stretch;font-size:13px;line-height:20px;display:flex;position:fixed;top:auto;left:auto;right:auto;overflow:hidden}.PXhr7W_menu[data-sized]{max-width:none}.PXhr7W_menu[data-sized] .PXhr7W_workPicture{flex:auto;width:auto;min-height:0;max-height:none}.PXhr7W_sidebarHost{box-sizing:border-box;--watcher-panel-max-height:min(680px, calc(100vh - 24px));--watcher-motion-fast:.14s;--watcher-motion-panel:.18s;--watcher-motion-inspector:.2s;--watcher-motion-content-out:.12s;--watcher-ease-out:cubic-bezier(.2, .8, .2, 1);--watcher-ease-glide:cubic-bezier(.22, .61, .36, 1);height:100%;min-height:0;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-family);flex-direction:column;font-size:13px;line-height:20px;display:flex;overflow:hidden}.PXhr7W_sidebarHost[data-watcher-sidebar=waiting]{color:var(--dsw-alias-label-tertiary);justify-content:center;align-items:center}.PXhr7W_sidebarHost .PXhr7W_workPicture{flex:auto;width:100%;min-width:0;min-height:0;max-height:none}.PXhr7W_sidebarHost .PXhr7W_inspector{flex:0 auto;width:100%;min-height:0;max-height:45%}.PXhr7W_sidebarHost .PXhr7W_inspector>*{width:100%;max-width:100%}.PXhr7W_resizeEdgeRight,.PXhr7W_resizeEdgeBottom,.PXhr7W_resizeGrip{z-index:5;touch-action:none;position:absolute}.PXhr7W_resizeEdgeRight{cursor:ew-resize;width:8px;top:0;bottom:0;right:0}.PXhr7W_resizeEdgeBottom{cursor:ns-resize;height:8px;bottom:0;left:0;right:0}.PXhr7W_resizeGrip{cursor:nwse-resize;border-right:2px solid var(--dsw-alias-border-l2);border-bottom:2px solid var(--dsw-alias-border-l2);opacity:.55;border-bottom-right-radius:4px;width:14px;height:14px;transition:opacity .12s;bottom:3px;right:3px}.PXhr7W_resizeGrip:hover{opacity:1;border-color:var(--dsw-alias-label-secondary)}@keyframes PXhr7W_watcher-panel-enter{0%{opacity:0;transform:translateY(-5px)scale(.992)}to{opacity:1;transform:translateY(0)scale(1)}}.PXhr7W_workPicture{width:min(720px,100vw - 32px);min-width:0;min-height:290px;max-height:var(--watcher-panel-max-height);background:var(--dsw-specific-menu);flex-direction:column;flex:none;display:flex}.PXhr7W_pictureHeader{border-bottom:1px solid var(--dsw-alias-border-l2);flex:none;justify-content:space-between;align-items:flex-start;gap:12px;padding:16px 14px 14px 16px;display:flex}.PXhr7W_nowBlock{min-width:0}.PXhr7W_eyebrow{color:var(--dsw-static-deepseek-450);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:5px;font-size:12px;font-weight:500;line-height:18px;display:flex;overflow:hidden}.PXhr7W_eyebrow[data-alert]{color:var(--dsw-alias-state-error-primary)}.PXhr7W_now{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:17px;font-weight:600;line-height:24px;overflow:hidden}.PXhr7W_summary{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:center;margin-top:4px;font-size:12px;line-height:18px;display:flex}.PXhr7W_summary span+span:before{content:\"·\";color:var(--dsw-alias-label-dimmed);margin:0 6px}.PXhr7W_summary [data-partial]{color:var(--dsw-alias-state-warn-primary)}.PXhr7W_loadAllInlineBtn{background:var(--dsw-specific-menu);color:var(--dsw-static-deepseek-450);cursor:pointer;border:1px solid #4d6bfe66;border-radius:4px;align-items:center;margin-left:6px;padding:1px 7px;font-size:11px;font-weight:500;line-height:16px;transition:all .12s;display:inline-flex}.PXhr7W_loadAllInlineBtn:hover{background:var(--dsw-static-deepseek-450);color:#fff}.PXhr7W_sessionTiming{border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);flex:none;grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:9px 10px;display:grid}.PXhr7W_sessionTimingMetric{min-width:0;padding:0 8px}.PXhr7W_sessionTimingMetric+.PXhr7W_sessionTimingMetric{border-left:1px solid var(--dsw-alias-border-l2)}.PXhr7W_sessionTimingMetric dt,.PXhr7W_sessionTimingMetric dd{text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.PXhr7W_sessionTimingMetric dt{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.PXhr7W_sessionTimingMetric dd{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:13px;font-weight:600;line-height:19px}.PXhr7W_viewToolbar{border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-specific-menu);flex-wrap:wrap;flex:none;justify-content:space-between;align-items:center;gap:6px 14px;min-height:42px;padding:6px 14px;display:flex}.PXhr7W_viewControl{align-items:center;gap:6px;min-width:0;display:flex}.PXhr7W_viewToolbarLabel{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:12px;line-height:18px}.PXhr7W_viewMode{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);border-radius:7px;flex:none;grid-template-columns:repeat(2,minmax(42px,1fr));padding:2px;display:inline-grid}.PXhr7W_viewMode button{min-height:26px;color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:5px;padding:2px 9px;font-size:12px;line-height:18px}.PXhr7W_viewMode button:hover{color:var(--dsw-alias-label-primary)}.PXhr7W_viewMode button[data-active]{background:var(--dsw-specific-menu);box-shadow:inset 0 0 0 1px var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary);font-weight:600}.PXhr7W_historyNotice{border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);flex:none;align-items:center;gap:10px;min-height:48px;padding:7px 14px 8px 16px;display:flex}.PXhr7W_historyNoticeCopy{flex-direction:column;flex:1;min-width:0;display:flex}.PXhr7W_historyNoticeCopy strong{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;line-height:18px;overflow:hidden}.PXhr7W_historyNoticeCopy span{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:16px;overflow:hidden}.PXhr7W_historyNotice button{border:1px solid var(--dsw-alias-button-ghost-active-border);background:var(--dsw-specific-menu);min-height:28px;color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;border-radius:7px;flex:none;padding:3px 9px;font-size:12px;line-height:18px}.PXhr7W_historyNotice button:hover:not(:disabled){background:var(--dsw-alias-button-ghost-active-hover)}.PXhr7W_historyNotice button:disabled{color:var(--dsw-alias-label-tertiary);cursor:progress}.PXhr7W_follow{white-space:nowrap;flex:none;margin-top:2px}.PXhr7W_unread{border:1px solid var(--dsw-alias-button-ghost-active-border);background:var(--dsw-alias-button-ghost-active-fill);width:calc(100% - 28px);min-height:34px;color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:6px;margin:10px 14px 0;font-size:12px;display:inline-flex}.PXhr7W_unread:hover{background:var(--dsw-alias-button-ghost-active-hover)}.PXhr7W_unread:focus-visible,.PXhr7W_turnToggle:focus-visible,.PXhr7W_phaseToggle:focus-visible,.PXhr7W_stepToggle:focus-visible,.PXhr7W_analysisClusterToggle:focus-visible,.PXhr7W_modelStageToggle:focus-visible,.PXhr7W_reasoningToggle:focus-visible,.PXhr7W_groupedModelToggle:focus-visible,.PXhr7W_viewMode button:focus-visible,.PXhr7W_historyNotice button:focus-visible,.PXhr7W_overviewOccurrence:focus-visible,.PXhr7W_inspectorBack:focus-visible,.PXhr7W_occurrence:focus-visible,.PXhr7W_tab:focus-visible,.PXhr7W_copyRaw:focus-visible{outline:2px solid var(--dsw-static-deepseek-450);outline-offset:-2px}.PXhr7W_railViewport{overscroll-behavior:contain;--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex:1;min-height:0;overflow:auto}.PXhr7W_turns{padding:8px 10px 18px}.PXhr7W_turn+.PXhr7W_turn{border-top:1px solid var(--dsw-alias-border-l2);margin-top:12px;padding-top:12px}.PXhr7W_turnHeader{padding:0 2px 2px}.PXhr7W_turnHeader h2{margin:0}.PXhr7W_turnToggle{box-sizing:border-box;width:100%;min-height:50px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;grid-template-columns:14px minmax(0,1fr) auto;align-items:center;gap:7px;padding:6px 8px;display:grid}.PXhr7W_turnToggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.PXhr7W_turnChevron{color:var(--dsw-alias-label-tertiary);transition:transform var(--watcher-motion-fast) var(--watcher-ease-out);transform:rotate(0)}.PXhr7W_turnToggle[aria-expanded=true] .PXhr7W_turnChevron{transform:rotate(90deg)}.PXhr7W_turnCopy{flex-direction:column;min-width:0;display:flex}.PXhr7W_turnTitleLine{align-items:center;gap:6px;min-width:0;display:flex}.PXhr7W_turnTitle{color:var(--dsw-alias-label-secondary);font-size:13px;font-weight:600;line-height:20px}.PXhr7W_turnSummary,.PXhr7W_turnDuration{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px;font-weight:400;line-height:18px}.PXhr7W_turnSummary{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.PXhr7W_turnPerformance{white-space:nowrap;flex-direction:column;align-items:flex-end;min-width:62px;display:flex}.PXhr7W_turnDuration{white-space:nowrap}.PXhr7W_turnSpeed{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-size:12px;font-weight:500;line-height:18px}.PXhr7W_turnBody[hidden]{display:none}.PXhr7W_groupRail{padding-left:18px;position:relative}.PXhr7W_railLine{background:var(--dsw-alias-border-l2);pointer-events:none;width:1px;position:absolute;top:18px;bottom:18px;left:23px}.PXhr7W_phase{z-index:1;box-sizing:border-box;width:100%;padding:3px 0 11px;position:relative}.PXhr7W_phase+.PXhr7W_phase{margin-top:4px}.PXhr7W_phaseHeader{position:relative}.PXhr7W_phaseToggle{box-sizing:border-box;width:100%;min-height:42px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;grid-template-columns:10px 12px minmax(0,1fr);align-items:center;gap:6px;padding:3px 8px 3px 0;display:grid;position:relative}.PXhr7W_phaseToggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.PXhr7W_phase[data-now]>.PXhr7W_phaseHeader .PXhr7W_phaseToggle{background:var(--dsw-alias-bg-layer-2);border-radius:7px}.PXhr7W_phaseChevron,.PXhr7W_stepChevron,.PXhr7W_analysisClusterChevron{color:var(--dsw-alias-label-tertiary);transition:transform var(--watcher-motion-fast) var(--watcher-ease-out);transform:rotate(0)}.PXhr7W_phaseToggle[aria-expanded=true] .PXhr7W_phaseChevron,.PXhr7W_stepToggle[aria-expanded=true] .PXhr7W_stepChevron,.PXhr7W_analysisClusterToggle[aria-expanded=true] .PXhr7W_analysisClusterChevron{transform:rotate(90deg)}.PXhr7W_phaseMarker{box-sizing:border-box;background:var(--dsw-alias-label-tertiary);width:10px;height:10px;box-shadow:0 0 0 4px var(--dsw-specific-menu);border-radius:50%;display:block;position:relative}.PXhr7W_phaseMarker[data-state=active],.PXhr7W_phaseMarker[data-state=current]{background:var(--dsw-static-deepseek-450)}.PXhr7W_phaseMarker[data-state=waiting]{background:var(--dsw-alias-state-warn-primary)}.PXhr7W_phaseMarker[data-state=failure],.PXhr7W_phaseMarker[data-state=interrupted]{background:var(--dsw-alias-state-error-primary)}.PXhr7W_phaseMarker[data-state=partial]{border:1px dashed var(--dsw-alias-label-tertiary);background:var(--dsw-specific-menu)}.PXhr7W_neutralDot{border:1px solid var(--dsw-alias-label-tertiary);background:var(--dsw-alias-label-tertiary);border-radius:50%;flex:none;width:10px;height:10px;display:inline-block;position:relative}.PXhr7W_neutralDot[data-status=unknown]{background:var(--dsw-specific-menu);border-style:dashed}.PXhr7W_phaseCopy,.PXhr7W_occurrenceCopy{flex-direction:column;min-width:0;display:flex}.PXhr7W_phaseTitleLine{align-items:center;gap:6px;min-width:0;display:flex}.PXhr7W_phaseTitle{min-width:0;color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:550;line-height:21px;overflow:hidden}.PXhr7W_phaseMeta{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;margin-top:1px;font-size:12px;line-height:18px;overflow:hidden}.PXhr7W_groupBadges{flex:none;align-items:center;gap:4px;display:inline-flex}.PXhr7W_groupBadges span,.PXhr7W_overviewTag,.PXhr7W_patternLabel,.PXhr7W_parallelLabel{border:1px solid var(--dsw-alias-border-l2);min-height:18px;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:999px;align-items:center;padding:0 5px;font-size:11px;font-weight:500;line-height:16px;display:inline-flex}.PXhr7W_groupBadges [data-kind=retry]{color:var(--dsw-alias-state-error-primary)}.PXhr7W_groupBadges [data-kind=parallel],.PXhr7W_overviewTag[data-state=active],.PXhr7W_overviewTag[data-state=current]{color:var(--dsw-static-deepseek-450)}.PXhr7W_overviewTag[data-state=waiting]{color:var(--dsw-alias-state-warn-primary)}.PXhr7W_overviewTag[data-state=failure],.PXhr7W_overviewTag[data-state=interrupted]{color:var(--dsw-alias-state-error-primary)}.PXhr7W_overviewTag[data-state=partial]{color:var(--dsw-alias-label-tertiary)}.PXhr7W_occurrenceChevron{color:var(--dsw-alias-label-dimmed);opacity:0;transition:opacity var(--watcher-motion-fast) ease, transform var(--watcher-motion-fast) ease;flex:none;transform:translate(-2px)}.PXhr7W_occurrence:hover .PXhr7W_occurrenceChevron,.PXhr7W_occurrence[data-selected] .PXhr7W_occurrenceChevron,.PXhr7W_occurrence:focus-visible .PXhr7W_occurrenceChevron{opacity:1;transform:translate(0)}.PXhr7W_stepTimeline{border-left:1px solid var(--dsw-alias-border-l2);margin:1px 8px 0 28px;padding-left:11px;position:relative}.PXhr7W_overviewStep{min-width:0;position:relative}.PXhr7W_overviewStep+.PXhr7W_overviewStep{margin-top:10px;padding-top:8px}.PXhr7W_overviewStep:before{background:var(--dsw-alias-border-l2);content:\"\";width:8px;height:1px;position:absolute;top:13px;left:-12px}.PXhr7W_overviewStepHeader{min-height:29px}.PXhr7W_stepToggle{box-sizing:border-box;width:100%;min-height:29px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;grid-template-columns:12px minmax(0,1fr) auto;align-items:center;gap:5px;padding:2px 4px 2px 0;display:grid}.PXhr7W_stepToggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.PXhr7W_overviewStepLabel,.PXhr7W_overviewStepSignals{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px;line-height:18px}.PXhr7W_overviewStepLabel{min-width:0;font-family:var(--dsw-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.PXhr7W_overviewStepSignals{white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.PXhr7W_overviewOccurrences{position:relative}.PXhr7W_overviewStep[data-parallel] .PXhr7W_overviewOccurrences{border-left:1px solid var(--dsw-static-deepseek-450);padding-left:5px}.PXhr7W_modelStage{border-left:2px solid var(--dsw-static-deepseek-450);background:var(--dsw-alias-bg-layer-2);border-radius:0 7px 7px 0;min-width:0;margin:2px 2px 7px;overflow:hidden}.PXhr7W_modelStage[data-live]{box-shadow:inset 0 0 0 1px var(--dsw-alias-button-ghost-active-border)}.PXhr7W_modelStageToggle{box-sizing:border-box;width:100%;min-height:42px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:12px 8px minmax(0,1fr);align-items:center;gap:7px;padding:5px 9px 5px 7px;display:grid}.PXhr7W_modelStageToggle:hover,.PXhr7W_reasoningToggle:hover,.PXhr7W_groupedModelToggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.PXhr7W_modelStageChevron,.PXhr7W_reasoningChevron,.PXhr7W_groupedModelChevron{color:var(--dsw-alias-label-tertiary);transition:transform var(--watcher-motion-fast) var(--watcher-ease-out)}.PXhr7W_modelStageToggle[aria-expanded=true] .PXhr7W_modelStageChevron,.PXhr7W_reasoningToggle[aria-expanded=true] .PXhr7W_reasoningChevron,.PXhr7W_groupedModelToggle[aria-expanded=true] .PXhr7W_groupedModelChevron{transform:rotate(90deg)}.PXhr7W_modelStageGlyph{background:var(--dsw-static-deepseek-450);width:7px;height:7px;box-shadow:0 0 0 3px var(--dsw-alias-button-ghost-active-fill);border-radius:999px}.PXhr7W_modelStageCopy{grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:8px;min-width:0;display:grid}.PXhr7W_modelStageTitle{color:var(--dsw-alias-label-primary);white-space:nowrap;font-size:13px;font-weight:600;line-height:20px}.PXhr7W_modelStageSummary{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}.PXhr7W_modelStageBody{padding:2px 10px 10px 20px}.PXhr7W_modelStageBar{background:var(--dsw-alias-border-l2);border-radius:999px;gap:2px;height:5px;margin:2px 0 10px;display:flex;overflow:hidden}.PXhr7W_modelStageBar>span{border-radius:inherit;min-width:3px}.PXhr7W_modelStageBar [data-segment=wait],.PXhr7W_modelStageSwatch[data-segment=wait]{background:var(--dsw-alias-label-dimmed)}.PXhr7W_modelStageBar [data-segment=reasoning],.PXhr7W_modelStageSwatch[data-segment=reasoning]{background:var(--dsw-static-deepseek-450)}.PXhr7W_modelStageBar [data-segment=output],.PXhr7W_modelStageSwatch[data-segment=output]{background:var(--dsw-alias-label-secondary)}.PXhr7W_modelStageBar [data-segment=unattributed],.PXhr7W_modelStageSwatch[data-segment=unattributed]{background:var(--dsw-alias-state-warn-primary)}.PXhr7W_modelStageLedger{grid-template-columns:minmax(0,1fr);gap:5px 12px;margin:0;display:grid}.PXhr7W_modelStageMetric{min-width:0;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;gap:8px;font-size:12px;line-height:18px;display:flex}.PXhr7W_modelStageMetric dt,.PXhr7W_modelStageMetric dd{margin:0}.PXhr7W_modelStageMetric dt{align-items:center;gap:6px;min-width:0;display:inline-flex}.PXhr7W_modelStageMetric dd{color:var(--dsw-alias-label-secondary);text-align:right;flex:none}.PXhr7W_modelStageSwatch{border-radius:999px;flex:none;width:6px;height:6px}.PXhr7W_modelStageNote{color:var(--dsw-alias-label-tertiary);margin:8px 0 0;font-size:12px;line-height:18px}.PXhr7W_reasoningAttempts{border-top:1px solid var(--dsw-alias-border-l2);margin-top:8px;padding-top:1px}.PXhr7W_reasoningDisclosure{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);border-radius:6px;min-width:0;margin-top:5px;overflow:hidden}.PXhr7W_reasoningToggle{box-sizing:border-box;width:100%;min-height:34px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:12px minmax(0,1fr);align-items:center;gap:6px;padding:5px 8px;display:grid}.PXhr7W_reasoningLabel{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:550;line-height:20px}.PXhr7W_reasoningMeta{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;text-align:left;white-space:normal;grid-column:2;font-size:12px;line-height:18px;overflow:hidden}.PXhr7W_reasoningBody{box-sizing:border-box;border-top:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block);max-height:320px;color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);margin:0;padding:10px 12px;font-size:13px;line-height:1.6;overflow:auto}.PXhr7W_reasoningBody>*{margin-top:0;margin-bottom:8px}.PXhr7W_reasoningBody>:last-child{margin-bottom:0}.PXhr7W_reasoningBody .md-code-block{max-width:100%}.PXhr7W_groupedModelStages{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);border-radius:7px;margin-bottom:9px;position:relative;overflow:hidden}.PXhr7W_groupedModelStages:before{background:var(--dsw-alias-border-l2);content:\"\";width:8px;height:1px;position:absolute;top:20px;left:-12px}.PXhr7W_groupedModelToggle{box-sizing:border-box;width:100%;min-height:44px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:12px minmax(0,1fr);align-items:center;gap:7px;padding:5px 9px;display:grid}.PXhr7W_groupedModelToggle>span{justify-content:space-between;align-items:baseline;gap:10px;min-width:0;display:flex}.PXhr7W_groupedModelToggle strong{color:var(--dsw-alias-label-primary);font-size:13px;line-height:20px}.PXhr7W_groupedModelToggle small{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}.PXhr7W_groupedModelList{border-top:1px solid var(--dsw-alias-border-l2);padding:0 7px 8px 22px}.PXhr7W_groupedModelStep{min-width:0;padding-top:8px}.PXhr7W_groupedModelStep+.PXhr7W_groupedModelStep{border-top:1px solid var(--dsw-alias-border-l2)}.PXhr7W_groupedModelStepLabel{color:var(--dsw-alias-label-tertiary);font-family:var(--dsw-font-mono);margin:0 2px 4px;font-size:12px;line-height:18px;display:block}.PXhr7W_analysisClusters{border-left:1px solid var(--dsw-alias-border-l2);margin:1px 8px 0 28px;padding-left:11px;position:relative}.PXhr7W_analysisCluster,.PXhr7W_analysisSingleton{min-width:0;position:relative}.PXhr7W_analysisCluster+.PXhr7W_analysisCluster,.PXhr7W_analysisCluster+.PXhr7W_analysisSingleton,.PXhr7W_analysisSingleton+.PXhr7W_analysisCluster,.PXhr7W_analysisSingleton+.PXhr7W_analysisSingleton{margin-top:6px}.PXhr7W_analysisCluster:before,.PXhr7W_analysisSingleton:before{background:var(--dsw-alias-border-l2);content:\"\";width:8px;height:1px;position:absolute;top:20px;left:-12px}.PXhr7W_analysisClusterToggle{box-sizing:border-box;width:100%;min-height:46px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:7px;grid-template-columns:12px 10px minmax(0,1fr) auto;align-items:center;gap:7px;padding:5px 6px 5px 4px;display:grid}.PXhr7W_analysisClusterToggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.PXhr7W_analysisCluster[data-open]>.PXhr7W_analysisClusterToggle{border-color:var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2)}.PXhr7W_analysisClusterDotSlot{width:10px;height:10px;display:block;position:relative}.PXhr7W_analysisClusterDot{inset:0;position:absolute!important}.PXhr7W_analysisClusterCopy{flex-direction:column;min-width:0;display:flex}.PXhr7W_analysisClusterTitle{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:550;line-height:20px;overflow:hidden}.PXhr7W_analysisClusterMeta{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}.PXhr7W_analysisClusterCount{min-width:28px;color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;font-size:12px;font-weight:600;line-height:18px}.PXhr7W_analysisClusterItems{border-left:1px solid var(--dsw-alias-border-l2);margin:3px 0 8px 17px;padding-left:5px}.PXhr7W_overviewOccurrence{box-sizing:border-box;width:100%;min-height:45px;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:background-color var(--watcher-motion-fast) var(--watcher-ease-out), border-color var(--watcher-motion-fast) var(--watcher-ease-out), box-shadow var(--watcher-motion-fast) var(--watcher-ease-out);animation:PXhr7W_watcher-live-append var(--watcher-motion-fast) var(--watcher-ease-out);background:0 0;border:1px solid #0000;border-radius:7px;grid-template-columns:22px 10px minmax(0,1fr) auto 12px;align-items:center;gap:7px;padding:5px 5px 5px 7px;display:grid;position:relative}.PXhr7W_overviewOccurrence+.PXhr7W_overviewOccurrence{margin-top:2px}.PXhr7W_overviewOccurrence:hover{background:var(--dsw-alias-interactive-bg-hover)}.PXhr7W_overviewOccurrence[data-current]:not([data-selected]){background:var(--dsw-alias-bg-layer-2)}.PXhr7W_overviewOccurrence[data-selected]{border-color:var(--dsw-alias-button-ghost-active-border);background:var(--dsw-alias-button-ghost-active-fill);box-shadow:inset 2px 0 0 var(--dsw-static-deepseek-450)}.PXhr7W_overviewOccurrenceIndex{color:var(--dsw-alias-label-dimmed);font-family:var(--dsw-font-mono);font-variant-numeric:tabular-nums;text-align:right;font-size:11px;line-height:18px}.PXhr7W_overviewOccurrenceDotSlot{width:10px;height:10px;display:block;position:relative}.PXhr7W_overviewOccurrenceDot{inset:0;position:absolute!important}.PXhr7W_overviewOccurrenceCopy{flex-direction:column;min-width:0;display:flex}.PXhr7W_overviewOccurrenceTitle{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:550;line-height:20px;overflow:hidden}.PXhr7W_overviewOccurrenceMeta{color:var(--dsw-alias-label-tertiary);font-family:var(--dsw-font-mono);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}.PXhr7W_overviewOccurrenceDuration{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px;line-height:18px}.PXhr7W_overviewOccurrenceChevron{color:var(--dsw-alias-label-dimmed);opacity:0;transition:opacity var(--watcher-motion-fast) ease, transform var(--watcher-motion-fast) ease;transform:translate(-2px)}.PXhr7W_overviewOccurrence:hover .PXhr7W_overviewOccurrenceChevron,.PXhr7W_overviewOccurrence[data-selected] .PXhr7W_overviewOccurrenceChevron,.PXhr7W_overviewOccurrence:focus-visible .PXhr7W_overviewOccurrenceChevron{opacity:1;transform:translate(0)}@keyframes PXhr7W_watcher-live-append{0%{opacity:.5;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}.PXhr7W_empty{min-height:250px;color:var(--dsw-alias-label-tertiary);text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;padding:28px;display:flex}.PXhr7W_emptyEye{color:var(--dsw-alias-label-secondary);margin-bottom:12px;display:inline-flex}.PXhr7W_empty strong{color:var(--dsw-alias-label-secondary);font-size:14px;font-weight:600;line-height:21px}.PXhr7W_empty>span:last-child{margin-top:4px;font-size:12px;line-height:18px}.PXhr7W_inspector{width:438px;min-width:0;max-height:var(--watcher-panel-max-height);border-right:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);flex-direction:column;flex:none;display:flex}@media (width>=861px){.PXhr7W_inspector{animation:PXhr7W_watcher-inspector-enter var(--watcher-motion-inspector) var(--watcher-ease-glide);overflow:hidden}.PXhr7W_inspector>*{box-sizing:border-box;width:438px;animation:PXhr7W_watcher-inspector-content-in var(--watcher-motion-content-out) var(--watcher-ease-glide) var(--watcher-motion-inspector) both}.PXhr7W_inspector[data-closing]{pointer-events:none;animation:PXhr7W_watcher-inspector-exit var(--watcher-motion-inspector) var(--watcher-ease-glide) var(--watcher-motion-content-out) forwards}.PXhr7W_inspector[data-closing]>*{animation:PXhr7W_watcher-inspector-content-out var(--watcher-motion-content-out) ease-in forwards}}@keyframes PXhr7W_watcher-inspector-enter{0%{width:0}}@keyframes PXhr7W_watcher-inspector-content-in{0%{opacity:0;transform:translate(16px)}}@keyframes PXhr7W_watcher-inspector-content-out{to{opacity:0;transform:translate(16px)}}@keyframes PXhr7W_watcher-inspector-exit{to{width:0}}.PXhr7W_inspectorHeader{border-bottom:1px solid var(--dsw-alias-border-l2);flex:none;padding:16px 16px 14px}.PXhr7W_inspectorBack{min-height:28px;color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:5px;margin:-4px 0 8px -6px;padding:0 7px 0 5px;font-size:12px;display:inline-flex}.PXhr7W_inspectorBack:hover{background:var(--dsw-alias-interactive-bg-hover)}.PXhr7W_statusLine,.PXhr7W_detailStatus{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;align-items:center;gap:7px;font-size:12px;line-height:18px;display:flex}.PXhr7W_statusLine[data-status=failure],.PXhr7W_statusLine[data-status=interrupted],.PXhr7W_detailStatus[data-status=failure],.PXhr7W_detailStatus[data-status=interrupted]{color:var(--dsw-alias-state-error-primary)}.PXhr7W_statusLine[data-status=running],.PXhr7W_detailStatus[data-status=running]{color:var(--dsw-static-deepseek-450)}.PXhr7W_statusLine[data-status=waiting],.PXhr7W_detailStatus[data-status=waiting]{color:var(--dsw-alias-state-warn-primary)}.PXhr7W_location{min-width:0;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;margin-left:auto}.PXhr7W_inspectorTitle{color:var(--dsw-alias-label-primary);margin:8px 0 0;font-size:18px;font-weight:600;line-height:25px}.PXhr7W_inspectorSummary{color:var(--dsw-alias-label-tertiary);margin:3px 0 0;font-size:12px;line-height:18px}.PXhr7W_groupSignals{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.PXhr7W_groupSignals span{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px}.PXhr7W_groupSignals span+span:before{content:\"·\";color:var(--dsw-alias-label-dimmed);margin-right:6px}.PXhr7W_groupSignals [data-retry]{color:var(--dsw-alias-state-warn-primary)}.PXhr7W_groupSignals [data-error]{color:var(--dsw-alias-state-error-primary)}.PXhr7W_inspectorBody{overscroll-behavior:contain;--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex:1;min-height:0;overflow:auto}.PXhr7W_executionSection{border-bottom:1px solid var(--dsw-alias-border-l2);padding:14px 16px 16px}.PXhr7W_sectionHeading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;display:flex}.PXhr7W_sectionHeading h3{color:var(--dsw-alias-label-secondary);margin:0;font-size:13px;font-weight:600;line-height:20px}.PXhr7W_sectionHeading>span{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px}.PXhr7W_executionList{max-height:188px;padding-right:2px;overflow:auto}.PXhr7W_stepBlock+.PXhr7W_stepBlock{border-top:1px solid var(--dsw-alias-border-l2);margin-top:10px;padding-top:10px}.PXhr7W_stepHeading{min-height:22px;color:var(--dsw-alias-label-tertiary);font-family:var(--dsw-font-mono);font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;gap:8px;padding:0 3px;font-size:12px;display:flex}.PXhr7W_stepSignals{align-items:center;gap:6px;min-width:0;display:inline-flex}.PXhr7W_stepDuration{color:var(--dsw-alias-label-secondary);font-family:var(--dsw-font-family);font-variant-numeric:tabular-nums;white-space:nowrap}.PXhr7W_parallelLabel{color:var(--dsw-static-deepseek-450);font-family:var(--dsw-font-family)}.PXhr7W_occurrences{margin-top:4px;position:relative}.PXhr7W_stepBlock[data-parallel] .PXhr7W_occurrences{border-left:1px solid var(--dsw-static-deepseek-450);padding-left:10px}.PXhr7W_occurrence{box-sizing:border-box;width:100%;min-height:46px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;grid-template-columns:10px minmax(0,1fr) auto 13px;align-items:center;gap:8px;padding:6px 7px;transition:background-color .14s,border-color .14s;display:grid}.PXhr7W_occurrenceDuration{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px;line-height:18px}.PXhr7W_occurrence+.PXhr7W_occurrence{margin-top:2px}.PXhr7W_occurrence:hover{background:var(--dsw-alias-interactive-bg-hover)}.PXhr7W_occurrence[data-selected]{border-color:var(--dsw-alias-button-ghost-active-border);background:var(--dsw-alias-button-ghost-active-fill)}.PXhr7W_occurrenceTitle{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:550;line-height:19px;overflow:hidden}.PXhr7W_occurrenceMeta{color:var(--dsw-alias-label-tertiary);font-family:var(--dsw-font-mono);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}.PXhr7W_detailSection{padding:16px}.PXhr7W_detailHeader{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:14px;display:grid}.PXhr7W_detailIdentity{min-width:0}.PXhr7W_detailIdentity h3{overflow-wrap:anywhere;color:var(--dsw-alias-label-primary);margin:6px 0 0;font-size:16px;font-weight:600;line-height:23px}.PXhr7W_detailIdentity p{overflow-wrap:anywhere;color:var(--dsw-alias-label-tertiary);font-family:var(--dsw-font-mono);margin:3px 0 0;font-size:12px;line-height:18px}.PXhr7W_patternLabel{color:var(--dsw-alias-state-warn-primary)}.PXhr7W_metrics{font-variant-numeric:tabular-nums;grid-template-columns:auto auto;gap:2px 8px;margin:0;font-size:12px;line-height:18px;display:grid}.PXhr7W_metrics dt{color:var(--dsw-alias-label-tertiary)}.PXhr7W_metrics dd{color:var(--dsw-alias-label-secondary);text-align:right;margin:0}.PXhr7W_metrics [data-error]{color:var(--dsw-alias-state-error-primary)}.PXhr7W_tabs{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:end;gap:4px;margin-top:16px;display:flex}.PXhr7W_tab{min-width:56px;min-height:36px;color:var(--dsw-alias-label-tertiary);font:inherit;cursor:pointer;background:0 0;border:0;padding:0 10px;font-size:13px;position:relative}.PXhr7W_tab:hover{color:var(--dsw-alias-label-primary)}.PXhr7W_tab[data-active]{color:var(--dsw-alias-label-primary);font-weight:600}.PXhr7W_tab[data-active]:after{content:\"\";background:var(--dsw-static-deepseek-450);border-radius:2px 2px 0 0;height:2px;position:absolute;bottom:-1px;left:9px;right:9px}.PXhr7W_tabPanel{--dsl-terminal-font:400 13px/22px var(--dsw-font-mono);min-height:116px;padding-top:12px}.PXhr7W_tabPanel>*{margin-top:0;margin-bottom:0}.PXhr7W_jsonSurface{font-size:13px;overflow:auto}.PXhr7W_jsonSurface [role=tree]{font-size:13px;line-height:20px}.PXhr7W_rawPanel pre{box-sizing:border-box;width:100%;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-mono);tab-size:2;margin:0;font-size:13px;line-height:20px;overflow:auto}.PXhr7W_documentResult{min-width:0;color:var(--dsw-alias-label-primary);padding:2px 2px 8px}.PXhr7W_documentResult .md-code-block{max-width:100%}.PXhr7W_documentResult blockquote{color:var(--dsw-alias-label-secondary)}.PXhr7W_documentResult table{font-variant-numeric:tabular-nums}.PXhr7W_rawPanel{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block);border-radius:8px;overflow:hidden}.PXhr7W_rawToolbar{border-bottom:1px solid var(--dsw-alias-border-l2);min-height:38px;color:var(--dsw-alias-label-tertiary);justify-content:space-between;align-items:center;gap:12px;padding:0 10px 0 12px;font-size:12px;display:flex}.PXhr7W_copyRaw{min-height:28px;color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:5px;padding:0 6px;font-size:12px;display:inline-flex}.PXhr7W_copyRaw:hover{background:var(--dsw-alias-interactive-bg-hover)}.PXhr7W_rawPanel pre{white-space:pre;max-height:320px;padding:12px}.PXhr7W_artifactResult,.PXhr7W_detailEmpty{border:1px solid var(--dsw-alias-border-l2);min-height:116px;color:var(--dsw-alias-label-tertiary);text-align:center;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;padding:18px;font-size:13px;display:flex}.PXhr7W_artifactResult strong{color:var(--dsw-alias-label-secondary);margin-top:6px;font-size:14px}.PXhr7W_artifactResult>span{margin-top:2px;font-size:12px}.PXhr7W_artifactResult .PXhr7W_jsonSurface{text-align:left;width:100%;margin-top:12px}.PXhr7W_artifactGlyph{color:var(--dsw-static-deepseek-450);font-size:24px;line-height:28px}.PXhr7W_inspectorFooter{border-top:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-tertiary);flex:none;padding:9px 16px;font-size:12px;line-height:18px}@media (prefers-reduced-motion:reduce){.PXhr7W_inspector,.PXhr7W_inspector>*{animation:none}.PXhr7W_inspector[data-closing],.PXhr7W_inspector[data-closing]>*{animation-duration:.01ms;animation-delay:0s}.PXhr7W_menu,.PXhr7W_trigger[data-live] .PXhr7W_eyePupil,.PXhr7W_trigger[data-live] .PXhr7W_eyeBlink{animation:none}.PXhr7W_trigger,.PXhr7W_overviewOccurrence,.PXhr7W_turnChevron,.PXhr7W_phaseChevron,.PXhr7W_stepChevron,.PXhr7W_analysisClusterChevron,.PXhr7W_modelStageChevron,.PXhr7W_reasoningChevron,.PXhr7W_groupedModelChevron,.PXhr7W_occurrence,.PXhr7W_overviewOccurrenceChevron,.PXhr7W_occurrenceChevron{transition-duration:.01ms}.PXhr7W_overviewOccurrence{animation:none}.PXhr7W_root [data-state=ongoing] rect,.PXhr7W_menu [data-state=ongoing] rect{opacity:.55;animation:none!important}}@media (width<=860px){.PXhr7W_menu{flex-direction:column-reverse;width:min(720px,100vw - 24px);max-height:calc(100vh - 88px)}.PXhr7W_workPicture{width:auto;min-height:250px;max-height:none}.PXhr7W_menu:not(:has(.PXhr7W_inspector)){height:min(680px,100vh - 88px)}.PXhr7W_menu:not(:has(.PXhr7W_inspector)) .PXhr7W_workPicture{flex:auto}.PXhr7W_inspector{border-right:0;width:auto;max-height:none}.PXhr7W_menu:has(.PXhr7W_inspector){height:min(680px,100vh - 88px)}.PXhr7W_menu:has(.PXhr7W_inspector) .PXhr7W_workPicture{display:none}.PXhr7W_menu:has(.PXhr7W_inspector) .PXhr7W_inspector{flex:auto;min-height:0;max-height:none}.PXhr7W_inspectorBack svg{transform:rotate(180deg)}.PXhr7W_inspectorHeader{padding-top:14px}.PXhr7W_executionList{max-height:150px}}@media (width<=520px){.PXhr7W_menu{width:calc(100vw - 24px)}.PXhr7W_pictureHeader{padding:14px 12px}.PXhr7W_now{font-size:16px}.PXhr7W_turns{padding-inline:6px}.PXhr7W_groupBadges span:nth-child(n+2){display:none}.PXhr7W_inspectorHeader,.PXhr7W_executionSection,.PXhr7W_detailSection{padding-inline:12px}.PXhr7W_detailHeader{grid-template-columns:1fr}.PXhr7W_metrics{grid-template-columns:auto 1fr}.PXhr7W_metrics dd{text-align:left}.PXhr7W_modelStageCopy{grid-template-columns:1fr;gap:0}.PXhr7W_modelStageSummary{white-space:normal}.PXhr7W_modelStageLedger{grid-template-columns:1fr}.PXhr7W_reasoningToggle{grid-template-columns:12px minmax(0,1fr)}.PXhr7W_reasoningMeta{text-align:left;white-space:normal;grid-column:2}.PXhr7W_groupedModelToggle>span{gap:0;display:grid}.PXhr7W_groupedModelToggle small{white-space:normal}.PXhr7W_groupedModelList{padding-left:12px}}";
|
|
1695
1721
|
const tagId$2 = "dsh-watcher/Watcher.module.css";
|
|
1696
1722
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$2) + "]") === null) {
|
|
1697
1723
|
const tag = document.createElement("style");
|
|
@@ -1701,167 +1727,168 @@ window.__ModuleLoader__.load({
|
|
|
1701
1727
|
document.head.appendChild(tag);
|
|
1702
1728
|
}
|
|
1703
1729
|
var Watcher_module_css_default = {
|
|
1704
|
-
"analysisCluster": "
|
|
1705
|
-
"analysisClusterChevron": "
|
|
1706
|
-
"analysisClusterCopy": "
|
|
1707
|
-
"analysisClusterCount": "
|
|
1708
|
-
"analysisClusterDot": "
|
|
1709
|
-
"analysisClusterDotSlot": "
|
|
1710
|
-
"analysisClusterItems": "
|
|
1711
|
-
"analysisClusterMeta": "
|
|
1712
|
-
"analysisClusters": "
|
|
1713
|
-
"analysisClusterTitle": "
|
|
1714
|
-
"analysisClusterToggle": "
|
|
1715
|
-
"analysisSingleton": "
|
|
1716
|
-
"artifactGlyph": "
|
|
1717
|
-
"artifactResult": "
|
|
1718
|
-
"copyRaw": "
|
|
1719
|
-
"detailEmpty": "
|
|
1720
|
-
"detailHeader": "
|
|
1721
|
-
"detailIdentity": "
|
|
1722
|
-
"detailSection": "
|
|
1723
|
-
"detailStatus": "
|
|
1724
|
-
"documentResult": "
|
|
1725
|
-
"empty": "
|
|
1726
|
-
"emptyEye": "
|
|
1727
|
-
"executionList": "
|
|
1728
|
-
"executionSection": "
|
|
1729
|
-
"eye": "
|
|
1730
|
-
"eyeBlink": "
|
|
1731
|
-
"eyebrow": "
|
|
1732
|
-
"eyePupil": "
|
|
1733
|
-
"follow": "
|
|
1734
|
-
"groupBadges": "
|
|
1735
|
-
"groupedModelChevron": "
|
|
1736
|
-
"groupedModelList": "
|
|
1737
|
-
"groupedModelStages": "
|
|
1738
|
-
"groupedModelStep": "
|
|
1739
|
-
"groupedModelStepLabel": "
|
|
1740
|
-
"groupedModelToggle": "
|
|
1741
|
-
"groupRail": "
|
|
1742
|
-
"groupSignals": "
|
|
1743
|
-
"historyNotice": "
|
|
1744
|
-
"historyNoticeCopy": "
|
|
1745
|
-
"inspector": "
|
|
1746
|
-
"inspectorBack": "
|
|
1747
|
-
"inspectorBody": "
|
|
1748
|
-
"inspectorFooter": "
|
|
1749
|
-
"inspectorHeader": "
|
|
1750
|
-
"inspectorSummary": "
|
|
1751
|
-
"inspectorTitle": "
|
|
1752
|
-
"jsonSurface": "
|
|
1753
|
-
"loadAllInlineBtn": "
|
|
1754
|
-
"location": "
|
|
1755
|
-
"menu": "
|
|
1756
|
-
"metrics": "
|
|
1757
|
-
"modelStage": "
|
|
1758
|
-
"modelStageBar": "
|
|
1759
|
-
"modelStageBody": "
|
|
1760
|
-
"modelStageChevron": "
|
|
1761
|
-
"modelStageCopy": "
|
|
1762
|
-
"modelStageGlyph": "
|
|
1763
|
-
"modelStageLedger": "
|
|
1764
|
-
"modelStageMetric": "
|
|
1765
|
-
"modelStageNote": "
|
|
1766
|
-
"modelStageSummary": "
|
|
1767
|
-
"modelStageSwatch": "
|
|
1768
|
-
"modelStageTitle": "
|
|
1769
|
-
"modelStageToggle": "
|
|
1770
|
-
"neutralDot": "
|
|
1771
|
-
"now": "
|
|
1772
|
-
"nowBlock": "
|
|
1773
|
-
"occurrence": "
|
|
1774
|
-
"occurrenceChevron": "
|
|
1775
|
-
"occurrenceCopy": "
|
|
1776
|
-
"occurrenceDuration": "
|
|
1777
|
-
"occurrenceMeta": "
|
|
1778
|
-
"occurrences": "
|
|
1779
|
-
"occurrenceTitle": "
|
|
1780
|
-
"overviewOccurrence": "
|
|
1781
|
-
"overviewOccurrenceChevron": "
|
|
1782
|
-
"overviewOccurrenceCopy": "
|
|
1783
|
-
"overviewOccurrenceDot": "
|
|
1784
|
-
"overviewOccurrenceDotSlot": "
|
|
1785
|
-
"overviewOccurrenceDuration": "
|
|
1786
|
-
"overviewOccurrenceIndex": "
|
|
1787
|
-
"overviewOccurrenceMeta": "
|
|
1788
|
-
"overviewOccurrences": "
|
|
1789
|
-
"overviewOccurrenceTitle": "
|
|
1790
|
-
"overviewStep": "
|
|
1791
|
-
"overviewStepHeader": "
|
|
1792
|
-
"overviewStepLabel": "
|
|
1793
|
-
"overviewStepSignals": "
|
|
1794
|
-
"overviewTag": "
|
|
1795
|
-
"parallelLabel": "
|
|
1796
|
-
"patternLabel": "
|
|
1797
|
-
"phase": "
|
|
1798
|
-
"phaseChevron": "
|
|
1799
|
-
"phaseCopy": "
|
|
1800
|
-
"phaseHeader": "
|
|
1801
|
-
"phaseMarker": "
|
|
1802
|
-
"phaseMeta": "
|
|
1803
|
-
"phaseTitle": "
|
|
1804
|
-
"phaseTitleLine": "
|
|
1805
|
-
"phaseToggle": "
|
|
1806
|
-
"pictureHeader": "
|
|
1807
|
-
"railLine": "
|
|
1808
|
-
"railViewport": "
|
|
1809
|
-
"rawPanel": "
|
|
1810
|
-
"rawToolbar": "
|
|
1811
|
-
"reasoningAttempts": "
|
|
1812
|
-
"reasoningBody": "
|
|
1813
|
-
"reasoningChevron": "
|
|
1814
|
-
"reasoningDisclosure": "
|
|
1815
|
-
"reasoningLabel": "
|
|
1816
|
-
"reasoningMeta": "
|
|
1817
|
-
"reasoningToggle": "
|
|
1818
|
-
"resizeEdgeBottom": "
|
|
1819
|
-
"resizeEdgeRight": "
|
|
1820
|
-
"resizeGrip": "
|
|
1821
|
-
"root": "
|
|
1822
|
-
"sectionHeading": "
|
|
1823
|
-
"sessionTiming": "
|
|
1824
|
-
"sessionTimingMetric": "
|
|
1825
|
-
"
|
|
1826
|
-
"
|
|
1827
|
-
"
|
|
1828
|
-
"
|
|
1829
|
-
"
|
|
1830
|
-
"
|
|
1831
|
-
"
|
|
1832
|
-
"
|
|
1833
|
-
"
|
|
1834
|
-
"
|
|
1835
|
-
"
|
|
1836
|
-
"
|
|
1837
|
-
"
|
|
1838
|
-
"
|
|
1839
|
-
"
|
|
1840
|
-
"
|
|
1841
|
-
"
|
|
1842
|
-
"
|
|
1843
|
-
"
|
|
1844
|
-
"
|
|
1845
|
-
"
|
|
1846
|
-
"
|
|
1847
|
-
"
|
|
1848
|
-
"
|
|
1849
|
-
"
|
|
1850
|
-
"
|
|
1851
|
-
"
|
|
1852
|
-
"
|
|
1853
|
-
"
|
|
1854
|
-
"
|
|
1855
|
-
"
|
|
1856
|
-
"
|
|
1857
|
-
"watcher-eye-
|
|
1858
|
-
"watcher-
|
|
1859
|
-
"watcher-inspector-content-
|
|
1860
|
-
"watcher-inspector-
|
|
1861
|
-
"watcher-inspector-
|
|
1862
|
-
"watcher-
|
|
1863
|
-
"watcher-
|
|
1864
|
-
"
|
|
1730
|
+
"analysisCluster": "PXhr7W_analysisCluster",
|
|
1731
|
+
"analysisClusterChevron": "PXhr7W_analysisClusterChevron",
|
|
1732
|
+
"analysisClusterCopy": "PXhr7W_analysisClusterCopy",
|
|
1733
|
+
"analysisClusterCount": "PXhr7W_analysisClusterCount",
|
|
1734
|
+
"analysisClusterDot": "PXhr7W_analysisClusterDot",
|
|
1735
|
+
"analysisClusterDotSlot": "PXhr7W_analysisClusterDotSlot",
|
|
1736
|
+
"analysisClusterItems": "PXhr7W_analysisClusterItems",
|
|
1737
|
+
"analysisClusterMeta": "PXhr7W_analysisClusterMeta",
|
|
1738
|
+
"analysisClusters": "PXhr7W_analysisClusters",
|
|
1739
|
+
"analysisClusterTitle": "PXhr7W_analysisClusterTitle",
|
|
1740
|
+
"analysisClusterToggle": "PXhr7W_analysisClusterToggle",
|
|
1741
|
+
"analysisSingleton": "PXhr7W_analysisSingleton",
|
|
1742
|
+
"artifactGlyph": "PXhr7W_artifactGlyph",
|
|
1743
|
+
"artifactResult": "PXhr7W_artifactResult",
|
|
1744
|
+
"copyRaw": "PXhr7W_copyRaw",
|
|
1745
|
+
"detailEmpty": "PXhr7W_detailEmpty",
|
|
1746
|
+
"detailHeader": "PXhr7W_detailHeader",
|
|
1747
|
+
"detailIdentity": "PXhr7W_detailIdentity",
|
|
1748
|
+
"detailSection": "PXhr7W_detailSection",
|
|
1749
|
+
"detailStatus": "PXhr7W_detailStatus",
|
|
1750
|
+
"documentResult": "PXhr7W_documentResult",
|
|
1751
|
+
"empty": "PXhr7W_empty",
|
|
1752
|
+
"emptyEye": "PXhr7W_emptyEye",
|
|
1753
|
+
"executionList": "PXhr7W_executionList",
|
|
1754
|
+
"executionSection": "PXhr7W_executionSection",
|
|
1755
|
+
"eye": "PXhr7W_eye",
|
|
1756
|
+
"eyeBlink": "PXhr7W_eyeBlink",
|
|
1757
|
+
"eyebrow": "PXhr7W_eyebrow",
|
|
1758
|
+
"eyePupil": "PXhr7W_eyePupil",
|
|
1759
|
+
"follow": "PXhr7W_follow",
|
|
1760
|
+
"groupBadges": "PXhr7W_groupBadges",
|
|
1761
|
+
"groupedModelChevron": "PXhr7W_groupedModelChevron",
|
|
1762
|
+
"groupedModelList": "PXhr7W_groupedModelList",
|
|
1763
|
+
"groupedModelStages": "PXhr7W_groupedModelStages",
|
|
1764
|
+
"groupedModelStep": "PXhr7W_groupedModelStep",
|
|
1765
|
+
"groupedModelStepLabel": "PXhr7W_groupedModelStepLabel",
|
|
1766
|
+
"groupedModelToggle": "PXhr7W_groupedModelToggle",
|
|
1767
|
+
"groupRail": "PXhr7W_groupRail",
|
|
1768
|
+
"groupSignals": "PXhr7W_groupSignals",
|
|
1769
|
+
"historyNotice": "PXhr7W_historyNotice",
|
|
1770
|
+
"historyNoticeCopy": "PXhr7W_historyNoticeCopy",
|
|
1771
|
+
"inspector": "PXhr7W_inspector",
|
|
1772
|
+
"inspectorBack": "PXhr7W_inspectorBack",
|
|
1773
|
+
"inspectorBody": "PXhr7W_inspectorBody",
|
|
1774
|
+
"inspectorFooter": "PXhr7W_inspectorFooter",
|
|
1775
|
+
"inspectorHeader": "PXhr7W_inspectorHeader",
|
|
1776
|
+
"inspectorSummary": "PXhr7W_inspectorSummary",
|
|
1777
|
+
"inspectorTitle": "PXhr7W_inspectorTitle",
|
|
1778
|
+
"jsonSurface": "PXhr7W_jsonSurface",
|
|
1779
|
+
"loadAllInlineBtn": "PXhr7W_loadAllInlineBtn",
|
|
1780
|
+
"location": "PXhr7W_location",
|
|
1781
|
+
"menu": "PXhr7W_menu",
|
|
1782
|
+
"metrics": "PXhr7W_metrics",
|
|
1783
|
+
"modelStage": "PXhr7W_modelStage",
|
|
1784
|
+
"modelStageBar": "PXhr7W_modelStageBar",
|
|
1785
|
+
"modelStageBody": "PXhr7W_modelStageBody",
|
|
1786
|
+
"modelStageChevron": "PXhr7W_modelStageChevron",
|
|
1787
|
+
"modelStageCopy": "PXhr7W_modelStageCopy",
|
|
1788
|
+
"modelStageGlyph": "PXhr7W_modelStageGlyph",
|
|
1789
|
+
"modelStageLedger": "PXhr7W_modelStageLedger",
|
|
1790
|
+
"modelStageMetric": "PXhr7W_modelStageMetric",
|
|
1791
|
+
"modelStageNote": "PXhr7W_modelStageNote",
|
|
1792
|
+
"modelStageSummary": "PXhr7W_modelStageSummary",
|
|
1793
|
+
"modelStageSwatch": "PXhr7W_modelStageSwatch",
|
|
1794
|
+
"modelStageTitle": "PXhr7W_modelStageTitle",
|
|
1795
|
+
"modelStageToggle": "PXhr7W_modelStageToggle",
|
|
1796
|
+
"neutralDot": "PXhr7W_neutralDot",
|
|
1797
|
+
"now": "PXhr7W_now",
|
|
1798
|
+
"nowBlock": "PXhr7W_nowBlock",
|
|
1799
|
+
"occurrence": "PXhr7W_occurrence",
|
|
1800
|
+
"occurrenceChevron": "PXhr7W_occurrenceChevron",
|
|
1801
|
+
"occurrenceCopy": "PXhr7W_occurrenceCopy",
|
|
1802
|
+
"occurrenceDuration": "PXhr7W_occurrenceDuration",
|
|
1803
|
+
"occurrenceMeta": "PXhr7W_occurrenceMeta",
|
|
1804
|
+
"occurrences": "PXhr7W_occurrences",
|
|
1805
|
+
"occurrenceTitle": "PXhr7W_occurrenceTitle",
|
|
1806
|
+
"overviewOccurrence": "PXhr7W_overviewOccurrence",
|
|
1807
|
+
"overviewOccurrenceChevron": "PXhr7W_overviewOccurrenceChevron",
|
|
1808
|
+
"overviewOccurrenceCopy": "PXhr7W_overviewOccurrenceCopy",
|
|
1809
|
+
"overviewOccurrenceDot": "PXhr7W_overviewOccurrenceDot",
|
|
1810
|
+
"overviewOccurrenceDotSlot": "PXhr7W_overviewOccurrenceDotSlot",
|
|
1811
|
+
"overviewOccurrenceDuration": "PXhr7W_overviewOccurrenceDuration",
|
|
1812
|
+
"overviewOccurrenceIndex": "PXhr7W_overviewOccurrenceIndex",
|
|
1813
|
+
"overviewOccurrenceMeta": "PXhr7W_overviewOccurrenceMeta",
|
|
1814
|
+
"overviewOccurrences": "PXhr7W_overviewOccurrences",
|
|
1815
|
+
"overviewOccurrenceTitle": "PXhr7W_overviewOccurrenceTitle",
|
|
1816
|
+
"overviewStep": "PXhr7W_overviewStep",
|
|
1817
|
+
"overviewStepHeader": "PXhr7W_overviewStepHeader",
|
|
1818
|
+
"overviewStepLabel": "PXhr7W_overviewStepLabel",
|
|
1819
|
+
"overviewStepSignals": "PXhr7W_overviewStepSignals",
|
|
1820
|
+
"overviewTag": "PXhr7W_overviewTag",
|
|
1821
|
+
"parallelLabel": "PXhr7W_parallelLabel",
|
|
1822
|
+
"patternLabel": "PXhr7W_patternLabel",
|
|
1823
|
+
"phase": "PXhr7W_phase",
|
|
1824
|
+
"phaseChevron": "PXhr7W_phaseChevron",
|
|
1825
|
+
"phaseCopy": "PXhr7W_phaseCopy",
|
|
1826
|
+
"phaseHeader": "PXhr7W_phaseHeader",
|
|
1827
|
+
"phaseMarker": "PXhr7W_phaseMarker",
|
|
1828
|
+
"phaseMeta": "PXhr7W_phaseMeta",
|
|
1829
|
+
"phaseTitle": "PXhr7W_phaseTitle",
|
|
1830
|
+
"phaseTitleLine": "PXhr7W_phaseTitleLine",
|
|
1831
|
+
"phaseToggle": "PXhr7W_phaseToggle",
|
|
1832
|
+
"pictureHeader": "PXhr7W_pictureHeader",
|
|
1833
|
+
"railLine": "PXhr7W_railLine",
|
|
1834
|
+
"railViewport": "PXhr7W_railViewport",
|
|
1835
|
+
"rawPanel": "PXhr7W_rawPanel",
|
|
1836
|
+
"rawToolbar": "PXhr7W_rawToolbar",
|
|
1837
|
+
"reasoningAttempts": "PXhr7W_reasoningAttempts",
|
|
1838
|
+
"reasoningBody": "PXhr7W_reasoningBody",
|
|
1839
|
+
"reasoningChevron": "PXhr7W_reasoningChevron",
|
|
1840
|
+
"reasoningDisclosure": "PXhr7W_reasoningDisclosure",
|
|
1841
|
+
"reasoningLabel": "PXhr7W_reasoningLabel",
|
|
1842
|
+
"reasoningMeta": "PXhr7W_reasoningMeta",
|
|
1843
|
+
"reasoningToggle": "PXhr7W_reasoningToggle",
|
|
1844
|
+
"resizeEdgeBottom": "PXhr7W_resizeEdgeBottom",
|
|
1845
|
+
"resizeEdgeRight": "PXhr7W_resizeEdgeRight",
|
|
1846
|
+
"resizeGrip": "PXhr7W_resizeGrip",
|
|
1847
|
+
"root": "PXhr7W_root",
|
|
1848
|
+
"sectionHeading": "PXhr7W_sectionHeading",
|
|
1849
|
+
"sessionTiming": "PXhr7W_sessionTiming",
|
|
1850
|
+
"sessionTimingMetric": "PXhr7W_sessionTimingMetric",
|
|
1851
|
+
"sidebarHost": "PXhr7W_sidebarHost",
|
|
1852
|
+
"statusLine": "PXhr7W_statusLine",
|
|
1853
|
+
"stepBlock": "PXhr7W_stepBlock",
|
|
1854
|
+
"stepChevron": "PXhr7W_stepChevron",
|
|
1855
|
+
"stepDuration": "PXhr7W_stepDuration",
|
|
1856
|
+
"stepHeading": "PXhr7W_stepHeading",
|
|
1857
|
+
"stepSignals": "PXhr7W_stepSignals",
|
|
1858
|
+
"stepTimeline": "PXhr7W_stepTimeline",
|
|
1859
|
+
"stepToggle": "PXhr7W_stepToggle",
|
|
1860
|
+
"summary": "PXhr7W_summary",
|
|
1861
|
+
"tab": "PXhr7W_tab",
|
|
1862
|
+
"tabPanel": "PXhr7W_tabPanel",
|
|
1863
|
+
"tabs": "PXhr7W_tabs",
|
|
1864
|
+
"trigger": "PXhr7W_trigger",
|
|
1865
|
+
"turn": "PXhr7W_turn",
|
|
1866
|
+
"turnBody": "PXhr7W_turnBody",
|
|
1867
|
+
"turnChevron": "PXhr7W_turnChevron",
|
|
1868
|
+
"turnCopy": "PXhr7W_turnCopy",
|
|
1869
|
+
"turnDuration": "PXhr7W_turnDuration",
|
|
1870
|
+
"turnHeader": "PXhr7W_turnHeader",
|
|
1871
|
+
"turnPerformance": "PXhr7W_turnPerformance",
|
|
1872
|
+
"turns": "PXhr7W_turns",
|
|
1873
|
+
"turnSpeed": "PXhr7W_turnSpeed",
|
|
1874
|
+
"turnSummary": "PXhr7W_turnSummary",
|
|
1875
|
+
"turnTitle": "PXhr7W_turnTitle",
|
|
1876
|
+
"turnTitleLine": "PXhr7W_turnTitleLine",
|
|
1877
|
+
"turnToggle": "PXhr7W_turnToggle",
|
|
1878
|
+
"unread": "PXhr7W_unread",
|
|
1879
|
+
"viewControl": "PXhr7W_viewControl",
|
|
1880
|
+
"viewMode": "PXhr7W_viewMode",
|
|
1881
|
+
"viewToolbar": "PXhr7W_viewToolbar",
|
|
1882
|
+
"viewToolbarLabel": "PXhr7W_viewToolbarLabel",
|
|
1883
|
+
"watcher-eye-blink": "PXhr7W_watcher-eye-blink",
|
|
1884
|
+
"watcher-eye-scan": "PXhr7W_watcher-eye-scan",
|
|
1885
|
+
"watcher-inspector-content-in": "PXhr7W_watcher-inspector-content-in",
|
|
1886
|
+
"watcher-inspector-content-out": "PXhr7W_watcher-inspector-content-out",
|
|
1887
|
+
"watcher-inspector-enter": "PXhr7W_watcher-inspector-enter",
|
|
1888
|
+
"watcher-inspector-exit": "PXhr7W_watcher-inspector-exit",
|
|
1889
|
+
"watcher-live-append": "PXhr7W_watcher-live-append",
|
|
1890
|
+
"watcher-panel-enter": "PXhr7W_watcher-panel-enter",
|
|
1891
|
+
"workPicture": "PXhr7W_workPicture"
|
|
1865
1892
|
};
|
|
1866
1893
|
//#endregion
|
|
1867
1894
|
//#region src/insights/presentation.mjs
|
|
@@ -1925,7 +1952,7 @@ window.__ModuleLoader__.load({
|
|
|
1925
1952
|
const candidate = rawCandidate?.val ?? rawCandidate;
|
|
1926
1953
|
let value = null, error = null;
|
|
1927
1954
|
if (row.origin === "subagent") error = "直接子代理暂未纳入;避免重复计算继承前缀";
|
|
1928
|
-
else if (candidate?.version === 1 && candidate.sessionId === row.sessionId && candidate.totals && Array.isArray(candidate.models) && Array.isArray(candidate.findings)) value = candidate;
|
|
1955
|
+
else if ((candidate?.version === 2 || candidate?.version === 1) && candidate.sessionId === row.sessionId && candidate.totals && Array.isArray(candidate.models) && Array.isArray(candidate.findings)) value = candidate;
|
|
1929
1956
|
else error = "尚无 Watcher 统计缓存;在加载插件后运行或打开此会话,再刷新统计";
|
|
1930
1957
|
return {
|
|
1931
1958
|
sessionId: row.sessionId,
|
|
@@ -3203,8 +3230,8 @@ window.__ModuleLoader__.load({
|
|
|
3203
3230
|
return serializeEffectivePricing(defaultPricing());
|
|
3204
3231
|
}
|
|
3205
3232
|
//#endregion
|
|
3206
|
-
//#region \0dshx-css-module
|
|
3207
|
-
const css$1 = "._3jWyTq_hudBox{box-sizing:border-box;border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-specific-menu);width:100%;font-family:var(--dsw-font-family);flex:none}._3jWyTq_hudTop{background:var(--dsw-alias-bg-layer-2);border-bottom:1px solid var(--dsw-alias-border-l2);flex-wrap:nowrap;justify-content:space-between;align-items:center;gap:12px;padding:8px 14px;display:flex}._3jWyTq_hudTopLeft{flex-wrap:nowrap;align-items:center;gap:8px;min-width:0;display:flex}._3jWyTq_hudHeading{color:var(--dsw-alias-label-secondary);white-space:nowrap;font-size:11px;font-weight:600}._3jWyTq_currentModelTag{background:var(--dsw-alias-interactive-bg-hover);white-space:nowrap;border-radius:4px;flex-shrink:1;align-items:center;gap:5px;min-width:0;max-width:100%;padding:1px 6px;font-size:11px;display:inline-flex}._3jWyTq_modelTagText{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}._3jWyTq_effortTag{color:var(--dsw-static-deepseek-450,#5686fe);white-space:nowrap;background:#5686fe1f;border-radius:3px;flex-shrink:0;padding:0 5px;font-size:10px;font-weight:600;line-height:14px}._3jWyTq_contextTag{color:var(--dsw-alias-label-secondary,#5f636d);background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e2e8f0);font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:4px;flex-shrink:0;padding:1px 7px;font-size:11px}._3jWyTq_hudTopRight{flex-shrink:0;align-items:center;gap:10px;display:flex}._3jWyTq_collapseBtn{width:20px;height:20px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}._3jWyTq_collapseBtn:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._3jWyTq_collapseChevron{font-size:11px;transition:transform .12s;display:inline-block}._3jWyTq_hudBox[data-collapsed] ._3jWyTq_collapseChevron{transform:rotate(-90deg)}._3jWyTq_hudBox[data-collapsed] ._3jWyTq_hudTop{border-bottom:none}._3jWyTq_tokenStat{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px}._3jWyTq_tokenStat strong{color:var(--dsw-alias-label-primary)}._3jWyTq_costStat{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px}._3jWyTq_costStat strong{color:var(--dsw-alias-label-primary)}._3jWyTq_scopeGroup{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);border-radius:5px;gap:1px;padding:1px;display:inline-flex}._3jWyTq_scopeBtn{color:var(--dsw-alias-label-tertiary);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:3px;padding:2px 7px;font-size:11px;line-height:14px;transition:all .12s}._3jWyTq_scopeBtn[data-active]{background:var(--dsw-specific-menu);color:var(--dsw-alias-label-primary);box-shadow:var(--dsw-shadow-lv1);font-weight:600}._3jWyTq_modelTabBar{background:var(--dsw-alias-bg-layer-1);border-bottom:1px solid var(--dsw-alias-border-l2);gap:4px;padding:6px 14px;display:flex;overflow-x:auto}._3jWyTq_modelTabBtn{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-specific-menu);color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;border-radius:4px;padding:2px 8px;font-size:11px;transition:all .12s}._3jWyTq_modelTabBtn[data-active]{background:var(--dsw-static-deepseek-450,#5686fe);color:#fff;border-color:var(--dsw-static-deepseek-450,#5686fe);font-weight:600}._3jWyTq_hudBody{padding:10px 14px}._3jWyTq_alertSection{flex-direction:column;gap:6px;margin-top:8px;display:flex}._3jWyTq_alertCard{border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;display:flex}._3jWyTq_alertCardDanger{background:#e5484d14;border:1px solid #e5484d40}._3jWyTq_alertCardWarn{background:#f59e0b14;border:1px solid #f59e0b40}._3jWyTq_alertLeft{align-items:center;gap:8px;min-width:0;display:flex}._3jWyTq_alertTag{color:#fff;border-radius:3px;flex:none;padding:1px 5px;font-size:10px;font-weight:600}._3jWyTq_tagDanger{background:var(--dsw-alias-state-error-primary,#e5484d)}._3jWyTq_tagWarn{background:#f59e0b}._3jWyTq_alertTexts{flex-direction:column;min-width:0;display:flex}._3jWyTq_alertMainText{color:var(--dsw-alias-label-primary);font-size:12px;font-weight:600}._3jWyTq_alertSubText{color:var(--dsw-alias-label-secondary);font-size:11px}._3jWyTq_alertActionBtn{color:var(--dsw-static-deepseek-450,#5686fe);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:2px 6px;font-size:11px;font-weight:600}._3jWyTq_settingsContainer{width:100%;min-width:0;max-width:100%;color:var(--dsw-alias-label-primary);box-sizing:border-box;flex-direction:column;gap:14px;padding:0 0 24px;display:flex;overflow-x:hidden}._3jWyTq_cockpitHeader{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:10px;display:flex}._3jWyTq_cockpitTitleArea h2{color:var(--dsw-alias-label-primary);letter-spacing:-.3px;margin:0;font-size:17px;font-weight:700}._3jWyTq_cockpitSubTitle{color:var(--dsw-alias-label-tertiary);margin:3px 0 0;font-size:12px}._3jWyTq_headerRightControls{align-items:center;gap:8px;display:flex}._3jWyTq_rangeSwitchGroup{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;padding:2px;display:flex}._3jWyTq_rangeBtn{color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:3px 10px;font-size:11px;font-weight:600;transition:all .12s}._3jWyTq_rangeBtn[data-active]{background:var(--dsw-specific-menu);color:var(--dsw-alias-label-primary);box-shadow:var(--dsw-shadow-lv1)}._3jWyTq_settingsScanBtn{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);cursor:pointer;border-radius:6px;padding:4px 10px;font-size:11px;font-weight:500;transition:all .12s}._3jWyTq_heroStatsRow{border-bottom:1px solid var(--dsw-alias-border-l2);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;padding-bottom:10px;display:flex}._3jWyTq_heroPair{flex-wrap:wrap;align-items:flex-start;gap:40px;min-width:0;display:flex}._3jWyTq_heroMetric{flex-direction:column;align-items:flex-start;gap:2px;min-width:0;display:flex}._3jWyTq_heroCaption{color:var(--dsw-alias-label-secondary);font-size:11px;font-weight:600;line-height:1.2}._3jWyTq_heroValue{letter-spacing:-.5px;color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:26px;font-weight:800;line-height:1.15}._3jWyTq_heroFootnote{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:1.3}._3jWyTq_heroMetaCol{color:var(--dsw-alias-label-secondary);white-space:nowrap;flex-wrap:nowrap;gap:14px;font-size:12px;display:flex}._3jWyTq_heroMetaCol strong{color:var(--dsw-alias-label-primary)}._3jWyTq_roastGrid{box-sizing:border-box;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:100%;display:grid}@media (width<=440px){._3jWyTq_roastGrid{grid-template-columns:1fr}}._3jWyTq_roastItem{background:var(--dsw-specific-menu);border:1px solid var(--dsw-alias-border-l2);min-height:136px;box-shadow:var(--dsw-shadow-lv1);cursor:pointer;user-select:none;box-sizing:border-box;border-radius:8px;flex-direction:column;justify-content:space-between;padding:12px 14px;transition:all .12s;display:flex}._3jWyTq_roastItem:hover{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-border-l3);transform:translateY(-1px)}._3jWyTq_roastItemActive{background:var(--dsw-alias-bg-layer-2);box-shadow:0 0 0 1px var(--dsw-static-deepseek-450,#5686fe);border-color:var(--dsw-static-deepseek-450,#5686fe)!important}._3jWyTq_roastHead{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}._3jWyTq_roastTag{letter-spacing:.3px;font-size:11px;font-weight:700}._3jWyTq_roastCategoryBadge{color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1,#0000000f);border-radius:3px;padding:1px 4px;font-size:9px;line-height:1.2}._3jWyTq_roastTitle{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:700;line-height:18px;overflow:hidden}._3jWyTq_roastDesc{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:10px;line-height:15px;overflow:hidden}._3jWyTq_roastVal{font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;margin-top:6px;font-size:12px;font-weight:700;overflow:hidden}._3jWyTq_roastFooter{border-top:1px dashed var(--dsw-alias-border-l2);color:var(--dsw-alias-label-tertiary);justify-content:space-between;align-items:center;margin-top:10px;padding-top:8px;font-size:10px;line-height:1;display:flex}._3jWyTq_roastFooterLeft{text-overflow:ellipsis;white-space:nowrap;max-width:110px;overflow:hidden}._3jWyTq_roastAction{color:var(--dsw-alias-label-secondary);flex-shrink:0;font-weight:600;transition:color .12s}._3jWyTq_roastItem:hover ._3jWyTq_roastAction,._3jWyTq_roastItemActive ._3jWyTq_roastAction{color:var(--dsw-static-deepseek-450,#5686fe)}._3jWyTq_drilldownPanel{background:var(--dsw-specific-menu);border:1px solid var(--dsw-static-deepseek-450,#5686fe);box-shadow:var(--dsw-shadow-lv2,0 4px 12px #00000014);border-radius:10px;flex-direction:column;gap:12px;min-width:0;padding:14px 16px;animation:.15s ease-out _3jWyTq_slideDown;display:flex}@keyframes _3jWyTq_slideDown{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}._3jWyTq_drilldownHead{border-bottom:1px solid var(--dsw-alias-border-l2);justify-content:space-between;align-items:center;gap:12px;min-width:0;padding-bottom:8px;display:flex}._3jWyTq_drilldownTitleGroup{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}._3jWyTq_drilldownTitle{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:700;overflow:hidden}._3jWyTq_drilldownSub{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}._3jWyTq_drilldownCloseBtn{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border-radius:4px;flex-shrink:0;padding:3px 8px;font-size:11px;transition:all .12s}._3jWyTq_drilldownCloseBtn:hover{background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l3)}._3jWyTq_drilldownEmpty{text-align:center;color:var(--dsw-alias-label-tertiary);padding:16px;font-size:12px}._3jWyTq_rankList{flex-direction:column;gap:8px;display:flex}._3jWyTq_rankItem{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1,#0000000f);border-radius:6px;flex-direction:column;gap:6px;min-width:0;padding:8px 12px;display:flex}._3jWyTq_rankItemTop{justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}._3jWyTq_rankItemLeft{flex:1;align-items:center;gap:8px;min-width:0;display:flex}._3jWyTq_rankBadge{color:var(--dsw-alias-label-secondary);background:var(--dsw-specific-menu);border:1px solid var(--dsw-alias-border-l2);font-variant-numeric:tabular-nums;border-radius:3px;flex-shrink:0;padding:1px 5px;font-size:10px;font-weight:700;line-height:1.2}._3jWyTq_rankBadgeGold{color:#d97706;background:#f59e0b1f;border-color:#f59e0b66}._3jWyTq_rankName{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;overflow:hidden}._3jWyTq_rankValMain{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0;font-size:12px;font-weight:700}._3jWyTq_rankTrack{background:var(--dsw-specific-menu);border-radius:3px;width:100%;height:6px;overflow:hidden}._3jWyTq_rankBar{border-radius:3px;height:100%;transition:width .2s}._3jWyTq_rankSubText{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;justify-content:space-between;align-items:center;gap:8px;font-size:10px;line-height:1.2;display:flex;overflow:hidden}._3jWyTq_rankSubText strong{color:var(--dsw-alias-label-primary)}._3jWyTq_toolDrillSection{flex-direction:column;gap:12px;min-width:0;display:flex}._3jWyTq_toolCompoundBox{flex-direction:column;gap:6px;display:flex}._3jWyTq_toolCompoundTrack{background:var(--dsw-alias-bg-layer-2);border-radius:4px;gap:1px;height:10px;display:flex;overflow:hidden}._3jWyTq_toolSliceBash{background:var(--dsw-static-green-500,#10b981);height:100%}._3jWyTq_toolSliceFile{background:#0ea5e9;height:100%}._3jWyTq_toolCompoundLegend{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;gap:16px;font-size:11px;display:flex}._3jWyTq_toolCompoundLegend span{align-items:center;gap:6px;display:flex}._3jWyTq_toolCompoundLegend strong{color:var(--dsw-alias-label-primary)}._3jWyTq_toolGridCards{grid-template-columns:1fr 1fr;gap:10px;display:grid}@media (width<=600px){._3jWyTq_toolGridCards{grid-template-columns:1fr}}._3jWyTq_toolMiniCard{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;flex-direction:column;gap:4px;min-width:0;padding:10px 12px;display:flex}._3jWyTq_toolMiniTitle{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:6px;font-size:11px;font-weight:600;display:flex;overflow:hidden}._3jWyTq_toolMiniNum{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;margin:2px 0;font-size:15px;font-weight:700}._3jWyTq_toolMiniDesc{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:14px}._3jWyTq_toolTopList{border-top:1px dashed var(--dsw-alias-border-l2);flex-direction:column;gap:6px;padding-top:8px;display:flex}._3jWyTq_toolTopListTitle{color:var(--dsw-alias-label-secondary);margin-bottom:2px;font-size:11px;font-weight:600}._3jWyTq_errorDrillSection{flex-direction:column;gap:8px;display:flex}._3jWyTq_errorAllGoodBox{color:var(--dsw-static-green-500,#10b981);text-align:center;background:#10b98114;border:1px solid #10b9814d;border-radius:6px;padding:16px;font-size:12px;font-weight:600}._3jWyTq_errorSessionList{flex-direction:column;gap:6px;display:flex}._3jWyTq_errorSessionRow{background:var(--dsw-alias-bg-layer-2);font-variant-numeric:tabular-nums;border-radius:4px;grid-template-columns:28px 110px 1fr 75px 75px;align-items:center;gap:8px;min-width:0;padding:6px 10px;font-size:11px;display:grid}._3jWyTq_vizSplitGrid{box-sizing:border-box;grid-template-columns:1fr;gap:12px;width:100%;display:grid}._3jWyTq_vizPanel{background:var(--dsw-specific-menu);border:1px solid var(--dsw-alias-border-l2);box-shadow:var(--dsw-shadow-lv1);box-sizing:border-box;border-radius:10px;flex-direction:column;gap:10px;width:100%;min-width:0;padding:12px 14px;display:flex;overflow:hidden}._3jWyTq_vizHead{justify-content:space-between;align-items:center;font-size:12px;display:flex}._3jWyTq_vizTitle{color:var(--dsw-alias-label-primary);font-weight:700}._3jWyTq_vizSub{color:var(--dsw-alias-label-secondary);font-size:10px}._3jWyTq_donutWrap{box-sizing:border-box;flex-direction:row;align-items:center;gap:20px;width:100%;display:flex}@media (width<=480px){._3jWyTq_donutWrap{flex-direction:column;align-items:center}}._3jWyTq_donutSvgBox{width:140px;height:140px;position:relative}._3jWyTq_donutSvg{width:100%;height:100%}._3jWyTq_donutCenterText{text-align:center;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;width:68px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}._3jWyTq_donutCenterNum{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:17px;font-weight:800;line-height:1.1}._3jWyTq_donutCenterSub{color:var(--dsw-alias-label-tertiary);white-space:nowrap;margin-top:2px;font-size:10px;font-weight:500;line-height:1}._3jWyTq_donutLegendList{flex-direction:column;flex:1;gap:3px;width:100%;min-width:0;display:flex}._3jWyTq_donutLegendRow{cursor:pointer;border-radius:4px;justify-content:space-between;align-items:center;min-width:0;padding:3px 6px;font-size:11px;transition:background .12s;display:flex}._3jWyTq_donutLegendRow:hover,._3jWyTq_donutLegendRowActive{background:var(--dsw-alias-bg-layer-2)}._3jWyTq_dlLeft{flex:1;align-items:center;gap:6px;min-width:0;margin-right:8px;display:flex}._3jWyTq_dlDot{border-radius:2px;flex-shrink:0;width:8px;height:8px}._3jWyTq_dlName{text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-primary);min-width:0;overflow:hidden}._3jWyTq_dlRight{font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-secondary);white-space:nowrap;flex-shrink:0;font-weight:600}._3jWyTq_donutInspectBar{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;align-items:center;gap:8px;min-width:0;margin-top:2px;padding:6px 10px;font-size:11px;display:flex}._3jWyTq_donutInspectName{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}._3jWyTq_donutInspectTag{color:var(--dsw-static-deepseek-450,#5686fe);background:#5686fe1f;border-radius:3px;flex-shrink:0;padding:1px 5px;font-size:9px;font-weight:600;line-height:1.2}._3jWyTq_donutInspectVal{font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-secondary);white-space:nowrap;flex-shrink:0;font-size:11px;font-weight:600}._3jWyTq_dayStack{align-items:stretch;gap:3px;min-width:0;height:160px;display:flex}._3jWyTq_dayStackWeek{justify-content:center;gap:12px}._3jWyTq_dayStackWeek ._3jWyTq_dayCol{max-width:48px}._3jWyTq_dayCol{flex-direction:column;flex:1 1 0;align-items:stretch;gap:4px;min-width:0;display:flex}._3jWyTq_dayColFill{background:var(--dsw-alias-bg-layer-2);border-radius:4px;flex-direction:column-reverse;flex:1;justify-content:flex-start;min-height:0;transition:filter .12s;display:flex;overflow:hidden}._3jWyTq_dayColFill:hover{filter:brightness(1.1)}._3jWyTq_daySeg{flex:none;width:100%;min-height:0}._3jWyTq_dayEmptyDot{background:var(--dsw-alias-border-l2);border-radius:2px;width:100%;height:3px;margin-top:auto}._3jWyTq_dayLabel{color:var(--dsw-alias-label-tertiary);text-align:center;white-space:nowrap;font-size:10px;line-height:1;overflow:hidden}._3jWyTq_chartAreaBox{width:100%;height:180px;position:relative}._3jWyTq_chartSvg{width:100%;height:100%;overflow:visible}._3jWyTq_chartAxisLabel{fill:var(--dsw-alias-label-tertiary);font-size:9px}._3jWyTq_chartGridLine{stroke:var(--dsw-alias-border-l2);stroke-dasharray:2 3}._3jWyTq_chartFoot{color:var(--dsw-alias-label-tertiary);border-top:1px solid var(--dsw-alias-border-l2);padding-top:6px;font-size:10px}._3jWyTq_tableTitleGroup{flex-direction:column;gap:2px;min-width:0;display:flex}._3jWyTq_tableSortGroup{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;flex-shrink:0;gap:2px;padding:2px;display:flex}._3jWyTq_sortBtn{color:var(--dsw-alias-label-tertiary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:4px;padding:2px 7px;font-size:10px;line-height:16px;transition:all .12s}._3jWyTq_sortBtn:hover{color:var(--dsw-alias-label-primary)}._3jWyTq_sortBtn[data-active]{background:var(--dsw-specific-menu);color:var(--dsw-alias-label-primary);box-shadow:var(--dsw-shadow-lv1);font-weight:600}._3jWyTq_sessionTableBox{box-sizing:border-box;flex-direction:column;gap:4px;width:100%;display:flex}._3jWyTq_sessionTableHeader{color:var(--dsw-alias-label-tertiary);border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);box-sizing:border-box;border-radius:6px;grid-template-columns:minmax(0,1.2fr) minmax(0,1.3fr) minmax(0,1fr) minmax(0,.7fr) minmax(0,.7fr) 14px;align-items:center;gap:6px;padding:6px 10px;font-size:10px;font-weight:600;display:grid}._3jWyTq_sessionItemRow{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);border-radius:6px;transition:border-color .12s;overflow:hidden}._3jWyTq_sessionItemRow:hover{border-color:var(--dsw-alias-border-l3)}._3jWyTq_tableRankNum{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;margin-right:4px;font-size:10px}._3jWyTq_sessionItemHead{width:100%;color:inherit;text-align:left;cursor:pointer;font-variant-numeric:tabular-nums;box-sizing:border-box;background:0 0;border:0;grid-template-columns:minmax(0,1.2fr) minmax(0,1.3fr) minmax(0,1fr) minmax(0,.7fr) minmax(0,.7fr) 14px;align-items:center;gap:6px;padding:8px 10px;font-size:11px;display:grid}._3jWyTq_sessionTokenCell{flex-direction:column;align-items:flex-end;gap:2px;min-width:0;display:flex}._3jWyTq_sessionTokenBar{background:var(--dsw-static-deepseek-450,#5686fe);border-radius:1px;max-width:100%;height:2px}._3jWyTq_sessionModelCell{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._3jWyTq_statusOk{color:var(--dsw-static-green-500,#10b981)}._3jWyTq_statusWarn{color:#b45309}._3jWyTq_statusBad{color:var(--dsw-alias-state-error-primary,#ef4444);font-weight:600}._3jWyTq_sessionIdTag{color:var(--dsw-alias-label-primary);font-family:ui-monospace,monospace;font-size:11px;font-weight:600}._3jWyTq_arrowIcon{color:var(--dsw-alias-label-tertiary);transition:transform .12s}._3jWyTq_sessionItemOpen ._3jWyTq_arrowIcon{transform:rotate(90deg)}._3jWyTq_sessionItemDrawer{background:var(--dsw-specific-menu);border-top:1px dashed var(--dsw-alias-border-l2);padding:10px 12px;font-size:11px}._3jWyTq_drawerTitle{color:var(--dsw-alias-label-primary);margin-bottom:6px;font-weight:600}._3jWyTq_drawerBarTrack{background:var(--dsw-alias-bg-layer-2);border-radius:4px;gap:1px;height:8px;margin-bottom:6px;display:flex;overflow:hidden}._3jWyTq_drawerSliceModel{background:var(--dsw-static-deepseek-450,#5686fe);height:100%}._3jWyTq_drawerSliceTool{background:var(--dsw-static-green-500,#10b981);height:100%}._3jWyTq_drawerMetaRow{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;justify-content:space-between;gap:6px;font-size:10px;display:flex}._3jWyTq_settingsDrawer{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-tertiary);background:var(--dsw-specific-menu);border-radius:8px;padding:8px 12px;font-size:11px}._3jWyTq_settingsSummary{cursor:pointer;color:var(--dsw-alias-label-secondary);font-weight:500}._3jWyTq_settingsDrawerContent{flex-wrap:wrap;align-items:center;gap:14px;padding-top:10px;display:flex}._3jWyTq_priceOverrideHelp,._3jWyTq_priceOverridePath{width:100%;color:var(--dsw-alias-label-secondary);margin:0;font-size:11px;line-height:1.45}._3jWyTq_priceOverrideInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);width:100%;min-height:120px;color:var(--dsw-alias-label-primary);resize:vertical;border-radius:6px;padding:8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}._3jWyTq_priceOverrideError{width:100%;color:var(--dsw-alias-state-error-primary,#e5484d);margin:0;font-size:11px}._3jWyTq_priceOverrideActions{align-items:center;gap:8px;display:flex}._3jWyTq_settingsResetBtn{color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;background:0 0;border-radius:4px;padding:3px 10px;font-size:11px}._3jWyTq_settingInlineItem{align-items:center;gap:6px;display:flex}._3jWyTq_settingsMiniInput{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);width:50px;color:var(--dsw-alias-label-primary);text-align:right;border-radius:4px;outline:none;padding:3px 6px;font-size:11px}._3jWyTq_settingsMiniSaveBtn{background:var(--dsw-static-deepseek-450,#5686fe);color:#fff;cursor:pointer;border:none;border-radius:4px;padding:3px 10px;font-size:11px}._3jWyTq_emptyScan{text-align:center;color:var(--dsw-alias-label-tertiary);padding:20px;font-size:12px}._3jWyTq_chartLegend{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;padding:5px 8px;display:flex}._3jWyTq_chartLegendItem{color:var(--dsw-alias-label-secondary);align-items:center;gap:5px;min-width:0;font-size:11px;display:flex}._3jWyTq_chartLegendDot{border-radius:50%;flex-shrink:0;width:7px;height:7px}._3jWyTq_chartLegendName{text-overflow:ellipsis;white-space:nowrap;max-width:130px;color:var(--dsw-alias-label-primary);font-weight:500;overflow:hidden}._3jWyTq_chartLegendVal{font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-secondary);font-size:10px;font-weight:600}._3jWyTq_chartInteractiveWrap{width:100%;position:relative}._3jWyTq_dayBarTopLabel{font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-secondary);text-align:center;white-space:nowrap;text-overflow:ellipsis;min-height:14px;font-size:9px;font-weight:600;line-height:14px;overflow:hidden}._3jWyTq_dayColFillActive{box-shadow:0 0 0 2px var(--dsw-static-deepseek-450,#5686fe);filter:brightness(1.2)!important}._3jWyTq_dayLabelToday{font-weight:700;color:var(--dsw-static-deepseek-450,#5686fe)!important}._3jWyTq_chartTooltipBox{z-index:50;pointer-events:none;background:var(--dsw-specific-menu);border:1px solid var(--dsw-alias-border-l1);backdrop-filter:blur(8px);border-radius:8px;min-width:150px;max-width:260px;padding:8px 10px;transition:opacity .12s,transform .12s;position:absolute;box-shadow:0 6px 20px #00000047}._3jWyTq_chartTooltipBox._3jWyTq_chartTooltipPortal{z-index:1200;visibility:hidden;position:fixed;top:0;left:0}._3jWyTq_chartTooltipDate{color:var(--dsw-alias-label-primary);justify-content:space-between;align-items:center;gap:6px;margin-bottom:4px;font-size:11px;font-weight:700;display:flex}._3jWyTq_chartTooltipDateBadge{color:var(--dsw-static-deepseek-450,#5686fe);background:#5686fe26;border-radius:3px;flex-shrink:0;padding:1px 5px;font-size:9px;font-weight:600}._3jWyTq_chartTooltipTotal{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;align-items:baseline;gap:5px;margin-bottom:4px;font-size:13px;font-weight:800;display:flex}._3jWyTq_chartTooltipSessions{color:var(--dsw-alias-label-tertiary);font-size:10px;font-weight:500}._3jWyTq_chartTooltipDivider{background:var(--dsw-alias-border-l2);height:1px;margin:5px 0}._3jWyTq_chartTooltipModelList{flex-direction:column;gap:3px;display:flex}._3jWyTq_chartTooltipModelRow{justify-content:space-between;align-items:center;gap:8px;font-size:10px;display:flex}._3jWyTq_chartTooltipModelLeft{flex:1;align-items:center;gap:5px;min-width:0;display:flex}._3jWyTq_chartTooltipModelDot{border-radius:50%;flex-shrink:0;width:6px;height:6px}._3jWyTq_chartTooltipModelName{text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-secondary);overflow:hidden}._3jWyTq_chartTooltipModelRight{font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-primary);white-space:nowrap;flex-shrink:0;font-weight:600}._3jWyTq_lineChartWrap{user-select:none;width:100%;min-width:0;height:170px;position:relative}._3jWyTq_lineChartSvg{width:100%;height:100%;display:block;overflow:visible}._3jWyTq_lineGrid{stroke:var(--dsw-alias-border-l2);stroke-dasharray:2 3}._3jWyTq_lineAxisText{fill:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:9px}._3jWyTq_lineCursor{stroke:var(--dsw-static-deepseek-450,#5686fe);stroke-dasharray:3 3;stroke-width:1.5px;pointer-events:none}._3jWyTq_lineActiveOuter{fill:#5686fe40;pointer-events:none;animation:1.5s ease-in-out infinite _3jWyTq_linePulse}@keyframes _3jWyTq_linePulse{0%,to{opacity:.8;transform:scale(1)}50%{opacity:.4;transform:scale(1.3)}}._3jWyTq_lineActiveInner{fill:var(--dsw-static-deepseek-450,#5686fe);stroke:#fff;stroke-width:1.5px;pointer-events:none}._3jWyTq_viewSwitchGroup{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:5px;gap:2px;padding:2px;display:flex}._3jWyTq_viewSwitchBtn{color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:3px;padding:2px 7px;font-size:10px;font-weight:600;transition:all .12s}._3jWyTq_viewSwitchBtn[data-active]{background:var(--dsw-specific-menu);color:var(--dsw-alias-label-primary);box-shadow:var(--dsw-shadow-lv1)}._3jWyTq_heatmapPanel{background:var(--dsw-specific-menu);border:1px solid var(--dsw-alias-border-l2);box-shadow:var(--dsw-shadow-lv1);box-sizing:border-box;border-radius:10px;flex-direction:column;gap:10px;width:100%;min-width:0;margin-top:12px;padding:14px 16px;display:flex}._3jWyTq_heatmapHead{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px;display:flex}._3jWyTq_heatmapTitleGroup{flex-direction:column;gap:2px;display:flex}._3jWyTq_heatmapTitle{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:700}._3jWyTq_heatmapSub{color:var(--dsw-alias-label-secondary);font-size:11px}._3jWyTq_heatmapStatsRow{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;gap:14px;font-size:11px;display:flex}._3jWyTq_heatmapStatsRow strong{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:700}._3jWyTq_heatmapScrollArea{box-sizing:border-box;width:100%;padding:8px 4px 14px;overflow:auto visible}._3jWyTq_heatmapContainer{flex-direction:column;gap:6px;width:max-content;display:flex;position:relative}._3jWyTq_heatmapMonthsRow{height:16px;margin-left:32px;display:block;position:relative}._3jWyTq_heatmapMonthLabel{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:10px;font-weight:600;position:absolute}._3jWyTq_heatmapGrid{gap:8px;display:flex}._3jWyTq_heatmapWeekdaysCol{width:24px;height:109px;color:var(--dsw-alias-label-tertiary);user-select:none;flex-direction:column;flex-shrink:0;justify-content:space-between;padding:0;font-size:9px;display:flex}._3jWyTq_heatmapWeeksRow{gap:3px;display:flex}._3jWyTq_heatmapWeekCol{flex-direction:column;gap:3px;display:flex}._3jWyTq_heatmapCell{box-sizing:border-box;cursor:pointer;border-radius:2px;width:13px;height:13px;transition:outline .1s,box-shadow .1s,filter .1s;position:relative}._3jWyTq_heatmapCellToday{outline-offset:1px;z-index:5;outline:1.5px solid var(--dsw-static-deepseek-450,#5686fe)!important}._3jWyTq_heatmapCell[data-level=\"0\"]{background:var(--dsw-alias-bg-layer-2,#ffffff09);border:1px solid var(--dsw-alias-border-l2,#ffffff14)}._3jWyTq_heatmapCell[data-level=\"1\"]{background:#5686fe38;border:1px solid #5686fe59}._3jWyTq_heatmapCell[data-level=\"2\"]{background:#5686fe73;border:1px solid #5686fe99}._3jWyTq_heatmapCell[data-level=\"3\"]{background:#5686feb8;border:1px solid #5686fee0;box-shadow:0 0 6px #5686fe40}._3jWyTq_heatmapCell[data-level=\"4\"]{background:var(--dsw-static-deepseek-450,#5686fe);border:1px solid #9bb8ff;box-shadow:0 0 10px #5686fe8c}._3jWyTq_heatmapCell[data-future=true]{opacity:.28;cursor:default;background:0 0!important;border:1px dashed #ffffff26!important}._3jWyTq_heatmapCell:hover:not([data-future=true]),._3jWyTq_heatmapCellActive{outline-offset:1px;filter:brightness(1.25);z-index:10;transform:none;outline:2px solid #fff!important;box-shadow:0 0 12px #5686fed9!important}._3jWyTq_heatmapLiveHud{color:var(--dsw-alias-label-primary);background:#5686fe1f;border:1px solid #5686fe47;border-radius:6px;align-items:center;gap:8px;padding:3px 8px;font-size:11px;display:flex}._3jWyTq_heatmapLiveDate{color:var(--dsw-static-deepseek-450,#5686fe);font-weight:700}._3jWyTq_heatmapLiveTokens{font-variant-numeric:tabular-nums;font-weight:700}._3jWyTq_heatmapLiveModel{color:var(--dsw-alias-label-secondary);font-size:10px}._3jWyTq_heatmapFoot{color:var(--dsw-alias-label-tertiary);border-top:1px solid var(--dsw-alias-border-l2);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:4px;padding-top:8px;font-size:10px;display:flex}._3jWyTq_heatmapLegend{color:var(--dsw-alias-label-tertiary);align-items:center;gap:4px;font-size:10px;display:flex}._3jWyTq_heatmapLegendCell{border-radius:2px;width:10px;height:10px}";
|
|
3233
|
+
//#region \0dshx-css-module:./src/client/Insights.module.css.mjs
|
|
3234
|
+
const css$1 = "._8ePy_W_hudBox{box-sizing:border-box;border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-specific-menu);width:100%;font-family:var(--dsw-font-family);flex:none}._8ePy_W_hudTop{background:var(--dsw-alias-bg-layer-2);border-bottom:1px solid var(--dsw-alias-border-l2);flex-wrap:nowrap;justify-content:space-between;align-items:center;gap:12px;padding:8px 14px;display:flex}._8ePy_W_hudTopLeft{flex-wrap:nowrap;align-items:center;gap:8px;min-width:0;display:flex}._8ePy_W_hudHeading{color:var(--dsw-alias-label-secondary);white-space:nowrap;font-size:11px;font-weight:600}._8ePy_W_currentModelTag{background:var(--dsw-alias-interactive-bg-hover);white-space:nowrap;border-radius:4px;flex-shrink:1;align-items:center;gap:5px;min-width:0;max-width:100%;padding:1px 6px;font-size:11px;display:inline-flex}._8ePy_W_modelTagText{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}._8ePy_W_effortTag{color:var(--dsw-static-deepseek-450,#5686fe);white-space:nowrap;background:#5686fe1f;border-radius:3px;flex-shrink:0;padding:0 5px;font-size:10px;font-weight:600;line-height:14px}._8ePy_W_contextTag{color:var(--dsw-alias-label-secondary,#5f636d);background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e2e8f0);font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:4px;flex-shrink:0;padding:1px 7px;font-size:11px}._8ePy_W_hudTopRight{flex-shrink:0;align-items:center;gap:10px;display:flex}._8ePy_W_collapseBtn{width:20px;height:20px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}._8ePy_W_collapseBtn:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._8ePy_W_collapseChevron{font-size:11px;transition:transform .12s;display:inline-block}._8ePy_W_hudBox[data-collapsed] ._8ePy_W_collapseChevron{transform:rotate(-90deg)}._8ePy_W_hudBox[data-collapsed] ._8ePy_W_hudTop{border-bottom:none}._8ePy_W_tokenStat{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px}._8ePy_W_tokenStat strong{color:var(--dsw-alias-label-primary)}._8ePy_W_costStat{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px}._8ePy_W_costStat strong{color:var(--dsw-alias-label-primary)}._8ePy_W_scopeGroup{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);border-radius:5px;gap:1px;padding:1px;display:inline-flex}._8ePy_W_scopeBtn{color:var(--dsw-alias-label-tertiary);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:3px;padding:2px 7px;font-size:11px;line-height:14px;transition:all .12s}._8ePy_W_scopeBtn[data-active]{background:var(--dsw-specific-menu);color:var(--dsw-alias-label-primary);box-shadow:var(--dsw-shadow-lv1);font-weight:600}._8ePy_W_modelTabBar{background:var(--dsw-alias-bg-layer-1);border-bottom:1px solid var(--dsw-alias-border-l2);gap:4px;padding:6px 14px;display:flex;overflow-x:auto}._8ePy_W_modelTabBtn{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-specific-menu);color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;border-radius:4px;padding:2px 8px;font-size:11px;transition:all .12s}._8ePy_W_modelTabBtn[data-active]{background:var(--dsw-static-deepseek-450,#5686fe);color:#fff;border-color:var(--dsw-static-deepseek-450,#5686fe);font-weight:600}._8ePy_W_hudBody{padding:10px 14px}._8ePy_W_alertSection{flex-direction:column;gap:6px;margin-top:8px;display:flex}._8ePy_W_alertCard{border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;display:flex}._8ePy_W_alertCardDanger{background:#e5484d14;border:1px solid #e5484d40}._8ePy_W_alertCardWarn{background:#f59e0b14;border:1px solid #f59e0b40}._8ePy_W_alertLeft{align-items:center;gap:8px;min-width:0;display:flex}._8ePy_W_alertTag{color:#fff;border-radius:3px;flex:none;padding:1px 5px;font-size:10px;font-weight:600}._8ePy_W_tagDanger{background:var(--dsw-alias-state-error-primary,#e5484d)}._8ePy_W_tagWarn{background:#f59e0b}._8ePy_W_alertTexts{flex-direction:column;min-width:0;display:flex}._8ePy_W_alertMainText{color:var(--dsw-alias-label-primary);font-size:12px;font-weight:600}._8ePy_W_alertSubText{color:var(--dsw-alias-label-secondary);font-size:11px}._8ePy_W_alertActionBtn{color:var(--dsw-static-deepseek-450,#5686fe);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:2px 6px;font-size:11px;font-weight:600}._8ePy_W_settingsContainer{width:100%;min-width:0;max-width:100%;color:var(--dsw-alias-label-primary);box-sizing:border-box;flex-direction:column;gap:14px;padding:0 0 24px;display:flex;overflow-x:hidden}._8ePy_W_cockpitHeader{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:10px;display:flex}._8ePy_W_cockpitTitleArea h2{color:var(--dsw-alias-label-primary);letter-spacing:-.3px;margin:0;font-size:17px;font-weight:700}._8ePy_W_cockpitSubTitle{color:var(--dsw-alias-label-tertiary);margin:3px 0 0;font-size:12px}._8ePy_W_headerRightControls{align-items:center;gap:8px;display:flex}._8ePy_W_rangeSwitchGroup{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;padding:2px;display:flex}._8ePy_W_rangeBtn{color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:3px 10px;font-size:11px;font-weight:600;transition:all .12s}._8ePy_W_rangeBtn[data-active]{background:var(--dsw-specific-menu);color:var(--dsw-alias-label-primary);box-shadow:var(--dsw-shadow-lv1)}._8ePy_W_settingsScanBtn{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);cursor:pointer;border-radius:6px;padding:4px 10px;font-size:11px;font-weight:500;transition:all .12s}._8ePy_W_heroStatsRow{border-bottom:1px solid var(--dsw-alias-border-l2);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;padding-bottom:10px;display:flex}._8ePy_W_heroPair{flex-wrap:wrap;align-items:flex-start;gap:40px;min-width:0;display:flex}._8ePy_W_heroMetric{flex-direction:column;align-items:flex-start;gap:2px;min-width:0;display:flex}._8ePy_W_heroCaption{color:var(--dsw-alias-label-secondary);font-size:11px;font-weight:600;line-height:1.2}._8ePy_W_heroValue{letter-spacing:-.5px;color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:26px;font-weight:800;line-height:1.15}._8ePy_W_heroFootnote{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:1.3}._8ePy_W_heroMetaCol{color:var(--dsw-alias-label-secondary);white-space:nowrap;flex-wrap:nowrap;gap:14px;font-size:12px;display:flex}._8ePy_W_heroMetaCol strong{color:var(--dsw-alias-label-primary)}._8ePy_W_roastGrid{box-sizing:border-box;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:100%;display:grid}@media (width<=440px){._8ePy_W_roastGrid{grid-template-columns:1fr}}._8ePy_W_roastItem{background:var(--dsw-specific-menu);border:1px solid var(--dsw-alias-border-l2);min-height:136px;box-shadow:var(--dsw-shadow-lv1);cursor:pointer;user-select:none;box-sizing:border-box;border-radius:8px;flex-direction:column;justify-content:space-between;padding:12px 14px;transition:all .12s;display:flex}._8ePy_W_roastItem:hover{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-border-l3);transform:translateY(-1px)}._8ePy_W_roastItemActive{background:var(--dsw-alias-bg-layer-2);box-shadow:0 0 0 1px var(--dsw-static-deepseek-450,#5686fe);border-color:var(--dsw-static-deepseek-450,#5686fe)!important}._8ePy_W_roastHead{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}._8ePy_W_roastTag{letter-spacing:.3px;font-size:11px;font-weight:700}._8ePy_W_roastCategoryBadge{color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1,#0000000f);border-radius:3px;padding:1px 4px;font-size:9px;line-height:1.2}._8ePy_W_roastTitle{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:700;line-height:18px;overflow:hidden}._8ePy_W_roastDesc{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:10px;line-height:15px;overflow:hidden}._8ePy_W_roastVal{font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;margin-top:6px;font-size:12px;font-weight:700;overflow:hidden}._8ePy_W_roastFooter{border-top:1px dashed var(--dsw-alias-border-l2);color:var(--dsw-alias-label-tertiary);justify-content:space-between;align-items:center;margin-top:10px;padding-top:8px;font-size:10px;line-height:1;display:flex}._8ePy_W_roastFooterLeft{text-overflow:ellipsis;white-space:nowrap;max-width:110px;overflow:hidden}._8ePy_W_roastAction{color:var(--dsw-alias-label-secondary);flex-shrink:0;font-weight:600;transition:color .12s}._8ePy_W_roastItem:hover ._8ePy_W_roastAction,._8ePy_W_roastItemActive ._8ePy_W_roastAction{color:var(--dsw-static-deepseek-450,#5686fe)}._8ePy_W_drilldownPanel{background:var(--dsw-specific-menu);border:1px solid var(--dsw-static-deepseek-450,#5686fe);box-shadow:var(--dsw-shadow-lv2,0 4px 12px #00000014);border-radius:10px;flex-direction:column;gap:12px;min-width:0;padding:14px 16px;animation:.15s ease-out _8ePy_W_slideDown;display:flex}@keyframes _8ePy_W_slideDown{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}._8ePy_W_drilldownHead{border-bottom:1px solid var(--dsw-alias-border-l2);justify-content:space-between;align-items:center;gap:12px;min-width:0;padding-bottom:8px;display:flex}._8ePy_W_drilldownTitleGroup{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}._8ePy_W_drilldownTitle{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:700;overflow:hidden}._8ePy_W_drilldownSub{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}._8ePy_W_drilldownCloseBtn{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border-radius:4px;flex-shrink:0;padding:3px 8px;font-size:11px;transition:all .12s}._8ePy_W_drilldownCloseBtn:hover{background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l3)}._8ePy_W_drilldownEmpty{text-align:center;color:var(--dsw-alias-label-tertiary);padding:16px;font-size:12px}._8ePy_W_rankList{flex-direction:column;gap:8px;display:flex}._8ePy_W_rankItem{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1,#0000000f);border-radius:6px;flex-direction:column;gap:6px;min-width:0;padding:8px 12px;display:flex}._8ePy_W_rankItemTop{justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}._8ePy_W_rankItemLeft{flex:1;align-items:center;gap:8px;min-width:0;display:flex}._8ePy_W_rankBadge{color:var(--dsw-alias-label-secondary);background:var(--dsw-specific-menu);border:1px solid var(--dsw-alias-border-l2);font-variant-numeric:tabular-nums;border-radius:3px;flex-shrink:0;padding:1px 5px;font-size:10px;font-weight:700;line-height:1.2}._8ePy_W_rankBadgeGold{color:#d97706;background:#f59e0b1f;border-color:#f59e0b66}._8ePy_W_rankName{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;overflow:hidden}._8ePy_W_rankValMain{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0;font-size:12px;font-weight:700}._8ePy_W_rankTrack{background:var(--dsw-specific-menu);border-radius:3px;width:100%;height:6px;overflow:hidden}._8ePy_W_rankBar{border-radius:3px;height:100%;transition:width .2s}._8ePy_W_rankSubText{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;justify-content:space-between;align-items:center;gap:8px;font-size:10px;line-height:1.2;display:flex;overflow:hidden}._8ePy_W_rankSubText strong{color:var(--dsw-alias-label-primary)}._8ePy_W_toolDrillSection{flex-direction:column;gap:12px;min-width:0;display:flex}._8ePy_W_toolCompoundBox{flex-direction:column;gap:6px;display:flex}._8ePy_W_toolCompoundTrack{background:var(--dsw-alias-bg-layer-2);border-radius:4px;gap:1px;height:10px;display:flex;overflow:hidden}._8ePy_W_toolSliceBash{background:var(--dsw-static-green-500,#10b981);height:100%}._8ePy_W_toolSliceFile{background:#0ea5e9;height:100%}._8ePy_W_toolCompoundLegend{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;gap:16px;font-size:11px;display:flex}._8ePy_W_toolCompoundLegend span{align-items:center;gap:6px;display:flex}._8ePy_W_toolCompoundLegend strong{color:var(--dsw-alias-label-primary)}._8ePy_W_toolGridCards{grid-template-columns:1fr 1fr;gap:10px;display:grid}@media (width<=600px){._8ePy_W_toolGridCards{grid-template-columns:1fr}}._8ePy_W_toolMiniCard{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;flex-direction:column;gap:4px;min-width:0;padding:10px 12px;display:flex}._8ePy_W_toolMiniTitle{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:6px;font-size:11px;font-weight:600;display:flex;overflow:hidden}._8ePy_W_toolMiniNum{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;margin:2px 0;font-size:15px;font-weight:700}._8ePy_W_toolMiniDesc{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:14px}._8ePy_W_toolTopList{border-top:1px dashed var(--dsw-alias-border-l2);flex-direction:column;gap:6px;padding-top:8px;display:flex}._8ePy_W_toolTopListTitle{color:var(--dsw-alias-label-secondary);margin-bottom:2px;font-size:11px;font-weight:600}._8ePy_W_errorDrillSection{flex-direction:column;gap:8px;display:flex}._8ePy_W_errorAllGoodBox{color:var(--dsw-static-green-500,#10b981);text-align:center;background:#10b98114;border:1px solid #10b9814d;border-radius:6px;padding:16px;font-size:12px;font-weight:600}._8ePy_W_errorSessionList{flex-direction:column;gap:6px;display:flex}._8ePy_W_errorSessionRow{background:var(--dsw-alias-bg-layer-2);font-variant-numeric:tabular-nums;border-radius:4px;grid-template-columns:28px 110px 1fr 75px 75px;align-items:center;gap:8px;min-width:0;padding:6px 10px;font-size:11px;display:grid}._8ePy_W_vizSplitGrid{box-sizing:border-box;grid-template-columns:1fr;gap:12px;width:100%;display:grid}._8ePy_W_vizPanel{background:var(--dsw-specific-menu);border:1px solid var(--dsw-alias-border-l2);box-shadow:var(--dsw-shadow-lv1);box-sizing:border-box;border-radius:10px;flex-direction:column;gap:10px;width:100%;min-width:0;padding:12px 14px;display:flex;overflow:hidden}._8ePy_W_vizHead{justify-content:space-between;align-items:center;font-size:12px;display:flex}._8ePy_W_vizTitle{color:var(--dsw-alias-label-primary);font-weight:700}._8ePy_W_vizSub{color:var(--dsw-alias-label-secondary);font-size:10px}._8ePy_W_donutWrap{box-sizing:border-box;flex-direction:row;align-items:center;gap:20px;width:100%;display:flex}@media (width<=480px){._8ePy_W_donutWrap{flex-direction:column;align-items:center}}._8ePy_W_donutSvgBox{width:140px;height:140px;position:relative}._8ePy_W_donutSvg{width:100%;height:100%}._8ePy_W_donutCenterText{text-align:center;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;width:68px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}._8ePy_W_donutCenterNum{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:17px;font-weight:800;line-height:1.1}._8ePy_W_donutCenterSub{color:var(--dsw-alias-label-tertiary);white-space:nowrap;margin-top:2px;font-size:10px;font-weight:500;line-height:1}._8ePy_W_donutLegendList{flex-direction:column;flex:1;gap:3px;width:100%;min-width:0;display:flex}._8ePy_W_donutLegendRow{cursor:pointer;border-radius:4px;justify-content:space-between;align-items:center;min-width:0;padding:3px 6px;font-size:11px;transition:background .12s;display:flex}._8ePy_W_donutLegendRow:hover,._8ePy_W_donutLegendRowActive{background:var(--dsw-alias-bg-layer-2)}._8ePy_W_dlLeft{flex:1;align-items:center;gap:6px;min-width:0;margin-right:8px;display:flex}._8ePy_W_dlDot{border-radius:2px;flex-shrink:0;width:8px;height:8px}._8ePy_W_dlName{text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-primary);min-width:0;overflow:hidden}._8ePy_W_dlRight{font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-secondary);white-space:nowrap;flex-shrink:0;font-weight:600}._8ePy_W_donutInspectBar{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;align-items:center;gap:8px;min-width:0;margin-top:2px;padding:6px 10px;font-size:11px;display:flex}._8ePy_W_donutInspectName{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}._8ePy_W_donutInspectTag{color:var(--dsw-static-deepseek-450,#5686fe);background:#5686fe1f;border-radius:3px;flex-shrink:0;padding:1px 5px;font-size:9px;font-weight:600;line-height:1.2}._8ePy_W_donutInspectVal{font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-secondary);white-space:nowrap;flex-shrink:0;font-size:11px;font-weight:600}._8ePy_W_dayStack{align-items:stretch;gap:3px;min-width:0;height:160px;display:flex}._8ePy_W_dayStackWeek{justify-content:center;gap:12px}._8ePy_W_dayStackWeek ._8ePy_W_dayCol{max-width:48px}._8ePy_W_dayCol{flex-direction:column;flex:1 1 0;align-items:stretch;gap:4px;min-width:0;display:flex}._8ePy_W_dayColFill{background:var(--dsw-alias-bg-layer-2);border-radius:4px;flex-direction:column-reverse;flex:1;justify-content:flex-start;min-height:0;transition:filter .12s;display:flex;overflow:hidden}._8ePy_W_dayColFill:hover{filter:brightness(1.1)}._8ePy_W_daySeg{flex:none;width:100%;min-height:0}._8ePy_W_dayEmptyDot{background:var(--dsw-alias-border-l2);border-radius:2px;width:100%;height:3px;margin-top:auto}._8ePy_W_dayLabel{color:var(--dsw-alias-label-tertiary);text-align:center;white-space:nowrap;font-size:10px;line-height:1;overflow:hidden}._8ePy_W_chartAreaBox{width:100%;height:180px;position:relative}._8ePy_W_chartSvg{width:100%;height:100%;overflow:visible}._8ePy_W_chartAxisLabel{fill:var(--dsw-alias-label-tertiary);font-size:9px}._8ePy_W_chartGridLine{stroke:var(--dsw-alias-border-l2);stroke-dasharray:2 3}._8ePy_W_chartFoot{color:var(--dsw-alias-label-tertiary);border-top:1px solid var(--dsw-alias-border-l2);padding-top:6px;font-size:10px}._8ePy_W_tableTitleGroup{flex-direction:column;gap:2px;min-width:0;display:flex}._8ePy_W_tableSortGroup{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;flex-shrink:0;gap:2px;padding:2px;display:flex}._8ePy_W_sortBtn{color:var(--dsw-alias-label-tertiary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:4px;padding:2px 7px;font-size:10px;line-height:16px;transition:all .12s}._8ePy_W_sortBtn:hover{color:var(--dsw-alias-label-primary)}._8ePy_W_sortBtn[data-active]{background:var(--dsw-specific-menu);color:var(--dsw-alias-label-primary);box-shadow:var(--dsw-shadow-lv1);font-weight:600}._8ePy_W_sessionTableBox{box-sizing:border-box;flex-direction:column;gap:4px;width:100%;display:flex}._8ePy_W_sessionTableHeader{color:var(--dsw-alias-label-tertiary);border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);box-sizing:border-box;border-radius:6px;grid-template-columns:minmax(0,1.2fr) minmax(0,1.3fr) minmax(0,1fr) minmax(0,.7fr) minmax(0,.7fr) 14px;align-items:center;gap:6px;padding:6px 10px;font-size:10px;font-weight:600;display:grid}._8ePy_W_sessionItemRow{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);border-radius:6px;transition:border-color .12s;overflow:hidden}._8ePy_W_sessionItemRow:hover{border-color:var(--dsw-alias-border-l3)}._8ePy_W_tableRankNum{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;margin-right:4px;font-size:10px}._8ePy_W_sessionItemHead{width:100%;color:inherit;text-align:left;cursor:pointer;font-variant-numeric:tabular-nums;box-sizing:border-box;background:0 0;border:0;grid-template-columns:minmax(0,1.2fr) minmax(0,1.3fr) minmax(0,1fr) minmax(0,.7fr) minmax(0,.7fr) 14px;align-items:center;gap:6px;padding:8px 10px;font-size:11px;display:grid}._8ePy_W_sessionTokenCell{flex-direction:column;align-items:flex-end;gap:2px;min-width:0;display:flex}._8ePy_W_sessionTokenBar{background:var(--dsw-static-deepseek-450,#5686fe);border-radius:1px;max-width:100%;height:2px}._8ePy_W_sessionModelCell{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._8ePy_W_statusOk{color:var(--dsw-static-green-500,#10b981)}._8ePy_W_statusWarn{color:#b45309}._8ePy_W_statusBad{color:var(--dsw-alias-state-error-primary,#ef4444);font-weight:600}._8ePy_W_sessionIdTag{color:var(--dsw-alias-label-primary);font-family:ui-monospace,monospace;font-size:11px;font-weight:600}._8ePy_W_arrowIcon{color:var(--dsw-alias-label-tertiary);transition:transform .12s}._8ePy_W_sessionItemOpen ._8ePy_W_arrowIcon{transform:rotate(90deg)}._8ePy_W_sessionItemDrawer{background:var(--dsw-specific-menu);border-top:1px dashed var(--dsw-alias-border-l2);padding:10px 12px;font-size:11px}._8ePy_W_drawerTitle{color:var(--dsw-alias-label-primary);margin-bottom:6px;font-weight:600}._8ePy_W_drawerBarTrack{background:var(--dsw-alias-bg-layer-2);border-radius:4px;gap:1px;height:8px;margin-bottom:6px;display:flex;overflow:hidden}._8ePy_W_drawerSliceModel{background:var(--dsw-static-deepseek-450,#5686fe);height:100%}._8ePy_W_drawerSliceTool{background:var(--dsw-static-green-500,#10b981);height:100%}._8ePy_W_drawerMetaRow{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;justify-content:space-between;gap:6px;font-size:10px;display:flex}._8ePy_W_settingsDrawer{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-tertiary);background:var(--dsw-specific-menu);border-radius:8px;padding:8px 12px;font-size:11px}._8ePy_W_settingsSummary{cursor:pointer;color:var(--dsw-alias-label-secondary);font-weight:500}._8ePy_W_settingsDrawerContent{flex-wrap:wrap;align-items:center;gap:14px;padding-top:10px;display:flex}._8ePy_W_priceOverrideHelp,._8ePy_W_priceOverridePath{width:100%;color:var(--dsw-alias-label-secondary);margin:0;font-size:11px;line-height:1.45}._8ePy_W_priceOverrideInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);width:100%;min-height:120px;color:var(--dsw-alias-label-primary);resize:vertical;border-radius:6px;padding:8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}._8ePy_W_priceOverrideError{width:100%;color:var(--dsw-alias-state-error-primary,#e5484d);margin:0;font-size:11px}._8ePy_W_priceOverrideActions{align-items:center;gap:8px;display:flex}._8ePy_W_settingsResetBtn{color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;background:0 0;border-radius:4px;padding:3px 10px;font-size:11px}._8ePy_W_settingInlineItem{align-items:center;gap:6px;display:flex}._8ePy_W_settingsMiniInput{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);width:50px;color:var(--dsw-alias-label-primary);text-align:right;border-radius:4px;outline:none;padding:3px 6px;font-size:11px}._8ePy_W_settingsMiniSaveBtn{background:var(--dsw-static-deepseek-450,#5686fe);color:#fff;cursor:pointer;border:none;border-radius:4px;padding:3px 10px;font-size:11px}._8ePy_W_emptyScan{text-align:center;color:var(--dsw-alias-label-tertiary);padding:20px;font-size:12px}._8ePy_W_chartLegend{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;padding:5px 8px;display:flex}._8ePy_W_chartLegendItem{color:var(--dsw-alias-label-secondary);align-items:center;gap:5px;min-width:0;font-size:11px;display:flex}._8ePy_W_chartLegendDot{border-radius:50%;flex-shrink:0;width:7px;height:7px}._8ePy_W_chartLegendName{text-overflow:ellipsis;white-space:nowrap;max-width:130px;color:var(--dsw-alias-label-primary);font-weight:500;overflow:hidden}._8ePy_W_chartLegendVal{font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-secondary);font-size:10px;font-weight:600}._8ePy_W_chartInteractiveWrap{width:100%;position:relative}._8ePy_W_dayBarTopLabel{font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-secondary);text-align:center;white-space:nowrap;text-overflow:ellipsis;min-height:14px;font-size:9px;font-weight:600;line-height:14px;overflow:hidden}._8ePy_W_dayColFillActive{box-shadow:0 0 0 2px var(--dsw-static-deepseek-450,#5686fe);filter:brightness(1.2)!important}._8ePy_W_dayLabelToday{font-weight:700;color:var(--dsw-static-deepseek-450,#5686fe)!important}._8ePy_W_chartTooltipBox{z-index:50;pointer-events:none;background:var(--dsw-specific-menu);border:1px solid var(--dsw-alias-border-l1);backdrop-filter:blur(8px);border-radius:8px;min-width:150px;max-width:260px;padding:8px 10px;transition:opacity .12s,transform .12s;position:absolute;box-shadow:0 6px 20px #00000047}._8ePy_W_chartTooltipBox._8ePy_W_chartTooltipPortal{z-index:1200;visibility:hidden;position:fixed;top:0;left:0}._8ePy_W_chartTooltipDate{color:var(--dsw-alias-label-primary);justify-content:space-between;align-items:center;gap:6px;margin-bottom:4px;font-size:11px;font-weight:700;display:flex}._8ePy_W_chartTooltipDateBadge{color:var(--dsw-static-deepseek-450,#5686fe);background:#5686fe26;border-radius:3px;flex-shrink:0;padding:1px 5px;font-size:9px;font-weight:600}._8ePy_W_chartTooltipTotal{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;align-items:baseline;gap:5px;margin-bottom:4px;font-size:13px;font-weight:800;display:flex}._8ePy_W_chartTooltipSessions{color:var(--dsw-alias-label-tertiary);font-size:10px;font-weight:500}._8ePy_W_chartTooltipDivider{background:var(--dsw-alias-border-l2);height:1px;margin:5px 0}._8ePy_W_chartTooltipModelList{flex-direction:column;gap:3px;display:flex}._8ePy_W_chartTooltipModelRow{justify-content:space-between;align-items:center;gap:8px;font-size:10px;display:flex}._8ePy_W_chartTooltipModelLeft{flex:1;align-items:center;gap:5px;min-width:0;display:flex}._8ePy_W_chartTooltipModelDot{border-radius:50%;flex-shrink:0;width:6px;height:6px}._8ePy_W_chartTooltipModelName{text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-secondary);overflow:hidden}._8ePy_W_chartTooltipModelRight{font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-primary);white-space:nowrap;flex-shrink:0;font-weight:600}._8ePy_W_lineChartWrap{user-select:none;width:100%;min-width:0;height:170px;position:relative}._8ePy_W_lineChartSvg{width:100%;height:100%;display:block;overflow:visible}._8ePy_W_lineGrid{stroke:var(--dsw-alias-border-l2);stroke-dasharray:2 3}._8ePy_W_lineAxisText{fill:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:9px}._8ePy_W_lineCursor{stroke:var(--dsw-static-deepseek-450,#5686fe);stroke-dasharray:3 3;stroke-width:1.5px;pointer-events:none}._8ePy_W_lineActiveOuter{fill:#5686fe40;pointer-events:none;animation:1.5s ease-in-out infinite _8ePy_W_linePulse}@keyframes _8ePy_W_linePulse{0%,to{opacity:.8;transform:scale(1)}50%{opacity:.4;transform:scale(1.3)}}._8ePy_W_lineActiveInner{fill:var(--dsw-static-deepseek-450,#5686fe);stroke:#fff;stroke-width:1.5px;pointer-events:none}._8ePy_W_viewSwitchGroup{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:5px;gap:2px;padding:2px;display:flex}._8ePy_W_viewSwitchBtn{color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:3px;padding:2px 7px;font-size:10px;font-weight:600;transition:all .12s}._8ePy_W_viewSwitchBtn[data-active]{background:var(--dsw-specific-menu);color:var(--dsw-alias-label-primary);box-shadow:var(--dsw-shadow-lv1)}._8ePy_W_heatmapPanel{background:var(--dsw-specific-menu);border:1px solid var(--dsw-alias-border-l2);box-shadow:var(--dsw-shadow-lv1);box-sizing:border-box;border-radius:10px;flex-direction:column;gap:10px;width:100%;min-width:0;margin-top:12px;padding:14px 16px;display:flex}._8ePy_W_heatmapHead{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px;display:flex}._8ePy_W_heatmapTitleGroup{flex-direction:column;gap:2px;display:flex}._8ePy_W_heatmapTitle{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:700}._8ePy_W_heatmapSub{color:var(--dsw-alias-label-secondary);font-size:11px}._8ePy_W_heatmapStatsRow{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;gap:14px;font-size:11px;display:flex}._8ePy_W_heatmapStatsRow strong{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:700}._8ePy_W_heatmapScrollArea{box-sizing:border-box;width:100%;padding:8px 4px 14px;overflow:auto visible}._8ePy_W_heatmapContainer{flex-direction:column;gap:6px;width:max-content;display:flex;position:relative}._8ePy_W_heatmapMonthsRow{height:16px;margin-left:32px;display:block;position:relative}._8ePy_W_heatmapMonthLabel{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:10px;font-weight:600;position:absolute}._8ePy_W_heatmapGrid{gap:8px;display:flex}._8ePy_W_heatmapWeekdaysCol{width:24px;height:109px;color:var(--dsw-alias-label-tertiary);user-select:none;flex-direction:column;flex-shrink:0;justify-content:space-between;padding:0;font-size:9px;display:flex}._8ePy_W_heatmapWeeksRow{gap:3px;display:flex}._8ePy_W_heatmapWeekCol{flex-direction:column;gap:3px;display:flex}._8ePy_W_heatmapCell{box-sizing:border-box;cursor:pointer;border-radius:2px;width:13px;height:13px;transition:outline .1s,box-shadow .1s,filter .1s;position:relative}._8ePy_W_heatmapCellToday{outline-offset:1px;z-index:5;outline:1.5px solid var(--dsw-static-deepseek-450,#5686fe)!important}._8ePy_W_heatmapCell[data-level=\"0\"]{background:var(--dsw-alias-bg-layer-2,#ffffff09);border:1px solid var(--dsw-alias-border-l2,#ffffff14)}._8ePy_W_heatmapCell[data-level=\"1\"]{background:#5686fe38;border:1px solid #5686fe59}._8ePy_W_heatmapCell[data-level=\"2\"]{background:#5686fe73;border:1px solid #5686fe99}._8ePy_W_heatmapCell[data-level=\"3\"]{background:#5686feb8;border:1px solid #5686fee0;box-shadow:0 0 6px #5686fe40}._8ePy_W_heatmapCell[data-level=\"4\"]{background:var(--dsw-static-deepseek-450,#5686fe);border:1px solid #9bb8ff;box-shadow:0 0 10px #5686fe8c}._8ePy_W_heatmapCell[data-future=true]{opacity:.28;cursor:default;background:0 0!important;border:1px dashed #ffffff26!important}._8ePy_W_heatmapCell:hover:not([data-future=true]),._8ePy_W_heatmapCellActive{outline-offset:1px;filter:brightness(1.25);z-index:10;transform:none;outline:2px solid #fff!important;box-shadow:0 0 12px #5686fed9!important}._8ePy_W_heatmapLiveHud{color:var(--dsw-alias-label-primary);background:#5686fe1f;border:1px solid #5686fe47;border-radius:6px;align-items:center;gap:8px;padding:3px 8px;font-size:11px;display:flex}._8ePy_W_heatmapLiveDate{color:var(--dsw-static-deepseek-450,#5686fe);font-weight:700}._8ePy_W_heatmapLiveTokens{font-variant-numeric:tabular-nums;font-weight:700}._8ePy_W_heatmapLiveModel{color:var(--dsw-alias-label-secondary);font-size:10px}._8ePy_W_heatmapFoot{color:var(--dsw-alias-label-tertiary);border-top:1px solid var(--dsw-alias-border-l2);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:4px;padding-top:8px;font-size:10px;display:flex}._8ePy_W_heatmapLegend{color:var(--dsw-alias-label-tertiary);align-items:center;gap:4px;font-size:10px;display:flex}._8ePy_W_heatmapLegendCell{border-radius:2px;width:10px;height:10px}";
|
|
3208
3235
|
const tagId$1 = "dsh-watcher/Insights.module.css";
|
|
3209
3236
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
|
|
3210
3237
|
const tag = document.createElement("style");
|
|
@@ -3214,229 +3241,229 @@ window.__ModuleLoader__.load({
|
|
|
3214
3241
|
document.head.appendChild(tag);
|
|
3215
3242
|
}
|
|
3216
3243
|
var Insights_module_css_default = {
|
|
3217
|
-
"alertActionBtn": "
|
|
3218
|
-
"alertCard": "
|
|
3219
|
-
"alertCardDanger": "
|
|
3220
|
-
"alertCardWarn": "
|
|
3221
|
-
"alertLeft": "
|
|
3222
|
-
"alertMainText": "
|
|
3223
|
-
"alertSection": "
|
|
3224
|
-
"alertSubText": "
|
|
3225
|
-
"alertTag": "
|
|
3226
|
-
"alertTexts": "
|
|
3227
|
-
"arrowIcon": "
|
|
3228
|
-
"chartAreaBox": "
|
|
3229
|
-
"chartAxisLabel": "
|
|
3230
|
-
"chartFoot": "
|
|
3231
|
-
"chartGridLine": "
|
|
3232
|
-
"chartInteractiveWrap": "
|
|
3233
|
-
"chartLegend": "
|
|
3234
|
-
"chartLegendDot": "
|
|
3235
|
-
"chartLegendItem": "
|
|
3236
|
-
"chartLegendName": "
|
|
3237
|
-
"chartLegendVal": "
|
|
3238
|
-
"chartSvg": "
|
|
3239
|
-
"chartTooltipBox": "
|
|
3240
|
-
"chartTooltipDate": "
|
|
3241
|
-
"chartTooltipDateBadge": "
|
|
3242
|
-
"chartTooltipDivider": "
|
|
3243
|
-
"chartTooltipModelDot": "
|
|
3244
|
-
"chartTooltipModelLeft": "
|
|
3245
|
-
"chartTooltipModelList": "
|
|
3246
|
-
"chartTooltipModelName": "
|
|
3247
|
-
"chartTooltipModelRight": "
|
|
3248
|
-
"chartTooltipModelRow": "
|
|
3249
|
-
"chartTooltipPortal": "
|
|
3250
|
-
"chartTooltipSessions": "
|
|
3251
|
-
"chartTooltipTotal": "
|
|
3252
|
-
"cockpitHeader": "
|
|
3253
|
-
"cockpitSubTitle": "
|
|
3254
|
-
"cockpitTitleArea": "
|
|
3255
|
-
"collapseBtn": "
|
|
3256
|
-
"collapseChevron": "
|
|
3257
|
-
"contextTag": "
|
|
3258
|
-
"costStat": "
|
|
3259
|
-
"currentModelTag": "
|
|
3260
|
-
"dayBarTopLabel": "
|
|
3261
|
-
"dayCol": "
|
|
3262
|
-
"dayColFill": "
|
|
3263
|
-
"dayColFillActive": "
|
|
3264
|
-
"dayEmptyDot": "
|
|
3265
|
-
"dayLabel": "
|
|
3266
|
-
"dayLabelToday": "
|
|
3267
|
-
"daySeg": "
|
|
3268
|
-
"dayStack": "
|
|
3269
|
-
"dayStackWeek": "
|
|
3270
|
-
"dlDot": "
|
|
3271
|
-
"dlLeft": "
|
|
3272
|
-
"dlName": "
|
|
3273
|
-
"dlRight": "
|
|
3274
|
-
"donutCenterNum": "
|
|
3275
|
-
"donutCenterSub": "
|
|
3276
|
-
"donutCenterText": "
|
|
3277
|
-
"donutInspectBar": "
|
|
3278
|
-
"donutInspectName": "
|
|
3279
|
-
"donutInspectTag": "
|
|
3280
|
-
"donutInspectVal": "
|
|
3281
|
-
"donutLegendList": "
|
|
3282
|
-
"donutLegendRow": "
|
|
3283
|
-
"donutLegendRowActive": "
|
|
3284
|
-
"donutSvg": "
|
|
3285
|
-
"donutSvgBox": "
|
|
3286
|
-
"donutWrap": "
|
|
3287
|
-
"drawerBarTrack": "
|
|
3288
|
-
"drawerMetaRow": "
|
|
3289
|
-
"drawerSliceModel": "
|
|
3290
|
-
"drawerSliceTool": "
|
|
3291
|
-
"drawerTitle": "
|
|
3292
|
-
"drilldownCloseBtn": "
|
|
3293
|
-
"drilldownEmpty": "
|
|
3294
|
-
"drilldownHead": "
|
|
3295
|
-
"drilldownPanel": "
|
|
3296
|
-
"drilldownSub": "
|
|
3297
|
-
"drilldownTitle": "
|
|
3298
|
-
"drilldownTitleGroup": "
|
|
3299
|
-
"effortTag": "
|
|
3300
|
-
"emptyScan": "
|
|
3301
|
-
"errorAllGoodBox": "
|
|
3302
|
-
"errorDrillSection": "
|
|
3303
|
-
"errorSessionList": "
|
|
3304
|
-
"errorSessionRow": "
|
|
3305
|
-
"headerRightControls": "
|
|
3306
|
-
"heatmapCell": "
|
|
3307
|
-
"heatmapCellActive": "
|
|
3308
|
-
"heatmapCellToday": "
|
|
3309
|
-
"heatmapContainer": "
|
|
3310
|
-
"heatmapFoot": "
|
|
3311
|
-
"heatmapGrid": "
|
|
3312
|
-
"heatmapHead": "
|
|
3313
|
-
"heatmapLegend": "
|
|
3314
|
-
"heatmapLegendCell": "
|
|
3315
|
-
"heatmapLiveDate": "
|
|
3316
|
-
"heatmapLiveHud": "
|
|
3317
|
-
"heatmapLiveModel": "
|
|
3318
|
-
"heatmapLiveTokens": "
|
|
3319
|
-
"heatmapMonthLabel": "
|
|
3320
|
-
"heatmapMonthsRow": "
|
|
3321
|
-
"heatmapPanel": "
|
|
3322
|
-
"heatmapScrollArea": "
|
|
3323
|
-
"heatmapStatsRow": "
|
|
3324
|
-
"heatmapSub": "
|
|
3325
|
-
"heatmapTitle": "
|
|
3326
|
-
"heatmapTitleGroup": "
|
|
3327
|
-
"heatmapWeekCol": "
|
|
3328
|
-
"heatmapWeekdaysCol": "
|
|
3329
|
-
"heatmapWeeksRow": "
|
|
3330
|
-
"heroCaption": "
|
|
3331
|
-
"heroFootnote": "
|
|
3332
|
-
"heroMetaCol": "
|
|
3333
|
-
"heroMetric": "
|
|
3334
|
-
"heroPair": "
|
|
3335
|
-
"heroStatsRow": "
|
|
3336
|
-
"heroValue": "
|
|
3337
|
-
"hudBody": "
|
|
3338
|
-
"hudBox": "
|
|
3339
|
-
"hudHeading": "
|
|
3340
|
-
"hudTop": "
|
|
3341
|
-
"hudTopLeft": "
|
|
3342
|
-
"hudTopRight": "
|
|
3343
|
-
"lineActiveInner": "
|
|
3344
|
-
"lineActiveOuter": "
|
|
3345
|
-
"lineAxisText": "
|
|
3346
|
-
"lineChartSvg": "
|
|
3347
|
-
"lineChartWrap": "
|
|
3348
|
-
"lineCursor": "
|
|
3349
|
-
"lineGrid": "
|
|
3350
|
-
"linePulse": "
|
|
3351
|
-
"modelTabBar": "
|
|
3352
|
-
"modelTabBtn": "
|
|
3353
|
-
"modelTagText": "
|
|
3354
|
-
"priceOverrideActions": "
|
|
3355
|
-
"priceOverrideError": "
|
|
3356
|
-
"priceOverrideHelp": "
|
|
3357
|
-
"priceOverrideInput": "
|
|
3358
|
-
"priceOverridePath": "
|
|
3359
|
-
"rangeBtn": "
|
|
3360
|
-
"rangeSwitchGroup": "
|
|
3361
|
-
"rankBadge": "
|
|
3362
|
-
"rankBadgeGold": "
|
|
3363
|
-
"rankBar": "
|
|
3364
|
-
"rankItem": "
|
|
3365
|
-
"rankItemLeft": "
|
|
3366
|
-
"rankItemTop": "
|
|
3367
|
-
"rankList": "
|
|
3368
|
-
"rankName": "
|
|
3369
|
-
"rankSubText": "
|
|
3370
|
-
"rankTrack": "
|
|
3371
|
-
"rankValMain": "
|
|
3372
|
-
"roastAction": "
|
|
3373
|
-
"roastCategoryBadge": "
|
|
3374
|
-
"roastDesc": "
|
|
3375
|
-
"roastFooter": "
|
|
3376
|
-
"roastFooterLeft": "
|
|
3377
|
-
"roastGrid": "
|
|
3378
|
-
"roastHead": "
|
|
3379
|
-
"roastItem": "
|
|
3380
|
-
"roastItemActive": "
|
|
3381
|
-
"roastTag": "
|
|
3382
|
-
"roastTitle": "
|
|
3383
|
-
"roastVal": "
|
|
3384
|
-
"scopeBtn": "
|
|
3385
|
-
"scopeGroup": "
|
|
3386
|
-
"sessionIdTag": "
|
|
3387
|
-
"sessionItemDrawer": "
|
|
3388
|
-
"sessionItemHead": "
|
|
3389
|
-
"sessionItemOpen": "
|
|
3390
|
-
"sessionItemRow": "
|
|
3391
|
-
"sessionModelCell": "
|
|
3392
|
-
"sessionTableBox": "
|
|
3393
|
-
"sessionTableHeader": "
|
|
3394
|
-
"sessionTokenBar": "
|
|
3395
|
-
"sessionTokenCell": "
|
|
3396
|
-
"settingInlineItem": "
|
|
3397
|
-
"settingsContainer": "
|
|
3398
|
-
"settingsDrawer": "
|
|
3399
|
-
"settingsDrawerContent": "
|
|
3400
|
-
"settingsMiniInput": "
|
|
3401
|
-
"settingsMiniSaveBtn": "
|
|
3402
|
-
"settingsResetBtn": "
|
|
3403
|
-
"settingsScanBtn": "
|
|
3404
|
-
"settingsSummary": "
|
|
3405
|
-
"slideDown": "
|
|
3406
|
-
"sortBtn": "
|
|
3407
|
-
"statusBad": "
|
|
3408
|
-
"statusOk": "
|
|
3409
|
-
"statusWarn": "
|
|
3410
|
-
"tableRankNum": "
|
|
3411
|
-
"tableSortGroup": "
|
|
3412
|
-
"tableTitleGroup": "
|
|
3413
|
-
"tagDanger": "
|
|
3414
|
-
"tagWarn": "
|
|
3415
|
-
"tokenStat": "
|
|
3416
|
-
"toolCompoundBox": "
|
|
3417
|
-
"toolCompoundLegend": "
|
|
3418
|
-
"toolCompoundTrack": "
|
|
3419
|
-
"toolDrillSection": "
|
|
3420
|
-
"toolGridCards": "
|
|
3421
|
-
"toolMiniCard": "
|
|
3422
|
-
"toolMiniDesc": "
|
|
3423
|
-
"toolMiniNum": "
|
|
3424
|
-
"toolMiniTitle": "
|
|
3425
|
-
"toolSliceBash": "
|
|
3426
|
-
"toolSliceFile": "
|
|
3427
|
-
"toolTopList": "
|
|
3428
|
-
"toolTopListTitle": "
|
|
3429
|
-
"viewSwitchBtn": "
|
|
3430
|
-
"viewSwitchGroup": "
|
|
3431
|
-
"vizHead": "
|
|
3432
|
-
"vizPanel": "
|
|
3433
|
-
"vizSplitGrid": "
|
|
3434
|
-
"vizSub": "
|
|
3435
|
-
"vizTitle": "
|
|
3244
|
+
"alertActionBtn": "_8ePy_W_alertActionBtn",
|
|
3245
|
+
"alertCard": "_8ePy_W_alertCard",
|
|
3246
|
+
"alertCardDanger": "_8ePy_W_alertCardDanger",
|
|
3247
|
+
"alertCardWarn": "_8ePy_W_alertCardWarn",
|
|
3248
|
+
"alertLeft": "_8ePy_W_alertLeft",
|
|
3249
|
+
"alertMainText": "_8ePy_W_alertMainText",
|
|
3250
|
+
"alertSection": "_8ePy_W_alertSection",
|
|
3251
|
+
"alertSubText": "_8ePy_W_alertSubText",
|
|
3252
|
+
"alertTag": "_8ePy_W_alertTag",
|
|
3253
|
+
"alertTexts": "_8ePy_W_alertTexts",
|
|
3254
|
+
"arrowIcon": "_8ePy_W_arrowIcon",
|
|
3255
|
+
"chartAreaBox": "_8ePy_W_chartAreaBox",
|
|
3256
|
+
"chartAxisLabel": "_8ePy_W_chartAxisLabel",
|
|
3257
|
+
"chartFoot": "_8ePy_W_chartFoot",
|
|
3258
|
+
"chartGridLine": "_8ePy_W_chartGridLine",
|
|
3259
|
+
"chartInteractiveWrap": "_8ePy_W_chartInteractiveWrap",
|
|
3260
|
+
"chartLegend": "_8ePy_W_chartLegend",
|
|
3261
|
+
"chartLegendDot": "_8ePy_W_chartLegendDot",
|
|
3262
|
+
"chartLegendItem": "_8ePy_W_chartLegendItem",
|
|
3263
|
+
"chartLegendName": "_8ePy_W_chartLegendName",
|
|
3264
|
+
"chartLegendVal": "_8ePy_W_chartLegendVal",
|
|
3265
|
+
"chartSvg": "_8ePy_W_chartSvg",
|
|
3266
|
+
"chartTooltipBox": "_8ePy_W_chartTooltipBox",
|
|
3267
|
+
"chartTooltipDate": "_8ePy_W_chartTooltipDate",
|
|
3268
|
+
"chartTooltipDateBadge": "_8ePy_W_chartTooltipDateBadge",
|
|
3269
|
+
"chartTooltipDivider": "_8ePy_W_chartTooltipDivider",
|
|
3270
|
+
"chartTooltipModelDot": "_8ePy_W_chartTooltipModelDot",
|
|
3271
|
+
"chartTooltipModelLeft": "_8ePy_W_chartTooltipModelLeft",
|
|
3272
|
+
"chartTooltipModelList": "_8ePy_W_chartTooltipModelList",
|
|
3273
|
+
"chartTooltipModelName": "_8ePy_W_chartTooltipModelName",
|
|
3274
|
+
"chartTooltipModelRight": "_8ePy_W_chartTooltipModelRight",
|
|
3275
|
+
"chartTooltipModelRow": "_8ePy_W_chartTooltipModelRow",
|
|
3276
|
+
"chartTooltipPortal": "_8ePy_W_chartTooltipPortal",
|
|
3277
|
+
"chartTooltipSessions": "_8ePy_W_chartTooltipSessions",
|
|
3278
|
+
"chartTooltipTotal": "_8ePy_W_chartTooltipTotal",
|
|
3279
|
+
"cockpitHeader": "_8ePy_W_cockpitHeader",
|
|
3280
|
+
"cockpitSubTitle": "_8ePy_W_cockpitSubTitle",
|
|
3281
|
+
"cockpitTitleArea": "_8ePy_W_cockpitTitleArea",
|
|
3282
|
+
"collapseBtn": "_8ePy_W_collapseBtn",
|
|
3283
|
+
"collapseChevron": "_8ePy_W_collapseChevron",
|
|
3284
|
+
"contextTag": "_8ePy_W_contextTag",
|
|
3285
|
+
"costStat": "_8ePy_W_costStat",
|
|
3286
|
+
"currentModelTag": "_8ePy_W_currentModelTag",
|
|
3287
|
+
"dayBarTopLabel": "_8ePy_W_dayBarTopLabel",
|
|
3288
|
+
"dayCol": "_8ePy_W_dayCol",
|
|
3289
|
+
"dayColFill": "_8ePy_W_dayColFill",
|
|
3290
|
+
"dayColFillActive": "_8ePy_W_dayColFillActive",
|
|
3291
|
+
"dayEmptyDot": "_8ePy_W_dayEmptyDot",
|
|
3292
|
+
"dayLabel": "_8ePy_W_dayLabel",
|
|
3293
|
+
"dayLabelToday": "_8ePy_W_dayLabelToday",
|
|
3294
|
+
"daySeg": "_8ePy_W_daySeg",
|
|
3295
|
+
"dayStack": "_8ePy_W_dayStack",
|
|
3296
|
+
"dayStackWeek": "_8ePy_W_dayStackWeek",
|
|
3297
|
+
"dlDot": "_8ePy_W_dlDot",
|
|
3298
|
+
"dlLeft": "_8ePy_W_dlLeft",
|
|
3299
|
+
"dlName": "_8ePy_W_dlName",
|
|
3300
|
+
"dlRight": "_8ePy_W_dlRight",
|
|
3301
|
+
"donutCenterNum": "_8ePy_W_donutCenterNum",
|
|
3302
|
+
"donutCenterSub": "_8ePy_W_donutCenterSub",
|
|
3303
|
+
"donutCenterText": "_8ePy_W_donutCenterText",
|
|
3304
|
+
"donutInspectBar": "_8ePy_W_donutInspectBar",
|
|
3305
|
+
"donutInspectName": "_8ePy_W_donutInspectName",
|
|
3306
|
+
"donutInspectTag": "_8ePy_W_donutInspectTag",
|
|
3307
|
+
"donutInspectVal": "_8ePy_W_donutInspectVal",
|
|
3308
|
+
"donutLegendList": "_8ePy_W_donutLegendList",
|
|
3309
|
+
"donutLegendRow": "_8ePy_W_donutLegendRow",
|
|
3310
|
+
"donutLegendRowActive": "_8ePy_W_donutLegendRowActive",
|
|
3311
|
+
"donutSvg": "_8ePy_W_donutSvg",
|
|
3312
|
+
"donutSvgBox": "_8ePy_W_donutSvgBox",
|
|
3313
|
+
"donutWrap": "_8ePy_W_donutWrap",
|
|
3314
|
+
"drawerBarTrack": "_8ePy_W_drawerBarTrack",
|
|
3315
|
+
"drawerMetaRow": "_8ePy_W_drawerMetaRow",
|
|
3316
|
+
"drawerSliceModel": "_8ePy_W_drawerSliceModel",
|
|
3317
|
+
"drawerSliceTool": "_8ePy_W_drawerSliceTool",
|
|
3318
|
+
"drawerTitle": "_8ePy_W_drawerTitle",
|
|
3319
|
+
"drilldownCloseBtn": "_8ePy_W_drilldownCloseBtn",
|
|
3320
|
+
"drilldownEmpty": "_8ePy_W_drilldownEmpty",
|
|
3321
|
+
"drilldownHead": "_8ePy_W_drilldownHead",
|
|
3322
|
+
"drilldownPanel": "_8ePy_W_drilldownPanel",
|
|
3323
|
+
"drilldownSub": "_8ePy_W_drilldownSub",
|
|
3324
|
+
"drilldownTitle": "_8ePy_W_drilldownTitle",
|
|
3325
|
+
"drilldownTitleGroup": "_8ePy_W_drilldownTitleGroup",
|
|
3326
|
+
"effortTag": "_8ePy_W_effortTag",
|
|
3327
|
+
"emptyScan": "_8ePy_W_emptyScan",
|
|
3328
|
+
"errorAllGoodBox": "_8ePy_W_errorAllGoodBox",
|
|
3329
|
+
"errorDrillSection": "_8ePy_W_errorDrillSection",
|
|
3330
|
+
"errorSessionList": "_8ePy_W_errorSessionList",
|
|
3331
|
+
"errorSessionRow": "_8ePy_W_errorSessionRow",
|
|
3332
|
+
"headerRightControls": "_8ePy_W_headerRightControls",
|
|
3333
|
+
"heatmapCell": "_8ePy_W_heatmapCell",
|
|
3334
|
+
"heatmapCellActive": "_8ePy_W_heatmapCellActive",
|
|
3335
|
+
"heatmapCellToday": "_8ePy_W_heatmapCellToday",
|
|
3336
|
+
"heatmapContainer": "_8ePy_W_heatmapContainer",
|
|
3337
|
+
"heatmapFoot": "_8ePy_W_heatmapFoot",
|
|
3338
|
+
"heatmapGrid": "_8ePy_W_heatmapGrid",
|
|
3339
|
+
"heatmapHead": "_8ePy_W_heatmapHead",
|
|
3340
|
+
"heatmapLegend": "_8ePy_W_heatmapLegend",
|
|
3341
|
+
"heatmapLegendCell": "_8ePy_W_heatmapLegendCell",
|
|
3342
|
+
"heatmapLiveDate": "_8ePy_W_heatmapLiveDate",
|
|
3343
|
+
"heatmapLiveHud": "_8ePy_W_heatmapLiveHud",
|
|
3344
|
+
"heatmapLiveModel": "_8ePy_W_heatmapLiveModel",
|
|
3345
|
+
"heatmapLiveTokens": "_8ePy_W_heatmapLiveTokens",
|
|
3346
|
+
"heatmapMonthLabel": "_8ePy_W_heatmapMonthLabel",
|
|
3347
|
+
"heatmapMonthsRow": "_8ePy_W_heatmapMonthsRow",
|
|
3348
|
+
"heatmapPanel": "_8ePy_W_heatmapPanel",
|
|
3349
|
+
"heatmapScrollArea": "_8ePy_W_heatmapScrollArea",
|
|
3350
|
+
"heatmapStatsRow": "_8ePy_W_heatmapStatsRow",
|
|
3351
|
+
"heatmapSub": "_8ePy_W_heatmapSub",
|
|
3352
|
+
"heatmapTitle": "_8ePy_W_heatmapTitle",
|
|
3353
|
+
"heatmapTitleGroup": "_8ePy_W_heatmapTitleGroup",
|
|
3354
|
+
"heatmapWeekCol": "_8ePy_W_heatmapWeekCol",
|
|
3355
|
+
"heatmapWeekdaysCol": "_8ePy_W_heatmapWeekdaysCol",
|
|
3356
|
+
"heatmapWeeksRow": "_8ePy_W_heatmapWeeksRow",
|
|
3357
|
+
"heroCaption": "_8ePy_W_heroCaption",
|
|
3358
|
+
"heroFootnote": "_8ePy_W_heroFootnote",
|
|
3359
|
+
"heroMetaCol": "_8ePy_W_heroMetaCol",
|
|
3360
|
+
"heroMetric": "_8ePy_W_heroMetric",
|
|
3361
|
+
"heroPair": "_8ePy_W_heroPair",
|
|
3362
|
+
"heroStatsRow": "_8ePy_W_heroStatsRow",
|
|
3363
|
+
"heroValue": "_8ePy_W_heroValue",
|
|
3364
|
+
"hudBody": "_8ePy_W_hudBody",
|
|
3365
|
+
"hudBox": "_8ePy_W_hudBox",
|
|
3366
|
+
"hudHeading": "_8ePy_W_hudHeading",
|
|
3367
|
+
"hudTop": "_8ePy_W_hudTop",
|
|
3368
|
+
"hudTopLeft": "_8ePy_W_hudTopLeft",
|
|
3369
|
+
"hudTopRight": "_8ePy_W_hudTopRight",
|
|
3370
|
+
"lineActiveInner": "_8ePy_W_lineActiveInner",
|
|
3371
|
+
"lineActiveOuter": "_8ePy_W_lineActiveOuter",
|
|
3372
|
+
"lineAxisText": "_8ePy_W_lineAxisText",
|
|
3373
|
+
"lineChartSvg": "_8ePy_W_lineChartSvg",
|
|
3374
|
+
"lineChartWrap": "_8ePy_W_lineChartWrap",
|
|
3375
|
+
"lineCursor": "_8ePy_W_lineCursor",
|
|
3376
|
+
"lineGrid": "_8ePy_W_lineGrid",
|
|
3377
|
+
"linePulse": "_8ePy_W_linePulse",
|
|
3378
|
+
"modelTabBar": "_8ePy_W_modelTabBar",
|
|
3379
|
+
"modelTabBtn": "_8ePy_W_modelTabBtn",
|
|
3380
|
+
"modelTagText": "_8ePy_W_modelTagText",
|
|
3381
|
+
"priceOverrideActions": "_8ePy_W_priceOverrideActions",
|
|
3382
|
+
"priceOverrideError": "_8ePy_W_priceOverrideError",
|
|
3383
|
+
"priceOverrideHelp": "_8ePy_W_priceOverrideHelp",
|
|
3384
|
+
"priceOverrideInput": "_8ePy_W_priceOverrideInput",
|
|
3385
|
+
"priceOverridePath": "_8ePy_W_priceOverridePath",
|
|
3386
|
+
"rangeBtn": "_8ePy_W_rangeBtn",
|
|
3387
|
+
"rangeSwitchGroup": "_8ePy_W_rangeSwitchGroup",
|
|
3388
|
+
"rankBadge": "_8ePy_W_rankBadge",
|
|
3389
|
+
"rankBadgeGold": "_8ePy_W_rankBadgeGold",
|
|
3390
|
+
"rankBar": "_8ePy_W_rankBar",
|
|
3391
|
+
"rankItem": "_8ePy_W_rankItem",
|
|
3392
|
+
"rankItemLeft": "_8ePy_W_rankItemLeft",
|
|
3393
|
+
"rankItemTop": "_8ePy_W_rankItemTop",
|
|
3394
|
+
"rankList": "_8ePy_W_rankList",
|
|
3395
|
+
"rankName": "_8ePy_W_rankName",
|
|
3396
|
+
"rankSubText": "_8ePy_W_rankSubText",
|
|
3397
|
+
"rankTrack": "_8ePy_W_rankTrack",
|
|
3398
|
+
"rankValMain": "_8ePy_W_rankValMain",
|
|
3399
|
+
"roastAction": "_8ePy_W_roastAction",
|
|
3400
|
+
"roastCategoryBadge": "_8ePy_W_roastCategoryBadge",
|
|
3401
|
+
"roastDesc": "_8ePy_W_roastDesc",
|
|
3402
|
+
"roastFooter": "_8ePy_W_roastFooter",
|
|
3403
|
+
"roastFooterLeft": "_8ePy_W_roastFooterLeft",
|
|
3404
|
+
"roastGrid": "_8ePy_W_roastGrid",
|
|
3405
|
+
"roastHead": "_8ePy_W_roastHead",
|
|
3406
|
+
"roastItem": "_8ePy_W_roastItem",
|
|
3407
|
+
"roastItemActive": "_8ePy_W_roastItemActive",
|
|
3408
|
+
"roastTag": "_8ePy_W_roastTag",
|
|
3409
|
+
"roastTitle": "_8ePy_W_roastTitle",
|
|
3410
|
+
"roastVal": "_8ePy_W_roastVal",
|
|
3411
|
+
"scopeBtn": "_8ePy_W_scopeBtn",
|
|
3412
|
+
"scopeGroup": "_8ePy_W_scopeGroup",
|
|
3413
|
+
"sessionIdTag": "_8ePy_W_sessionIdTag",
|
|
3414
|
+
"sessionItemDrawer": "_8ePy_W_sessionItemDrawer",
|
|
3415
|
+
"sessionItemHead": "_8ePy_W_sessionItemHead",
|
|
3416
|
+
"sessionItemOpen": "_8ePy_W_sessionItemOpen",
|
|
3417
|
+
"sessionItemRow": "_8ePy_W_sessionItemRow",
|
|
3418
|
+
"sessionModelCell": "_8ePy_W_sessionModelCell",
|
|
3419
|
+
"sessionTableBox": "_8ePy_W_sessionTableBox",
|
|
3420
|
+
"sessionTableHeader": "_8ePy_W_sessionTableHeader",
|
|
3421
|
+
"sessionTokenBar": "_8ePy_W_sessionTokenBar",
|
|
3422
|
+
"sessionTokenCell": "_8ePy_W_sessionTokenCell",
|
|
3423
|
+
"settingInlineItem": "_8ePy_W_settingInlineItem",
|
|
3424
|
+
"settingsContainer": "_8ePy_W_settingsContainer",
|
|
3425
|
+
"settingsDrawer": "_8ePy_W_settingsDrawer",
|
|
3426
|
+
"settingsDrawerContent": "_8ePy_W_settingsDrawerContent",
|
|
3427
|
+
"settingsMiniInput": "_8ePy_W_settingsMiniInput",
|
|
3428
|
+
"settingsMiniSaveBtn": "_8ePy_W_settingsMiniSaveBtn",
|
|
3429
|
+
"settingsResetBtn": "_8ePy_W_settingsResetBtn",
|
|
3430
|
+
"settingsScanBtn": "_8ePy_W_settingsScanBtn",
|
|
3431
|
+
"settingsSummary": "_8ePy_W_settingsSummary",
|
|
3432
|
+
"slideDown": "_8ePy_W_slideDown",
|
|
3433
|
+
"sortBtn": "_8ePy_W_sortBtn",
|
|
3434
|
+
"statusBad": "_8ePy_W_statusBad",
|
|
3435
|
+
"statusOk": "_8ePy_W_statusOk",
|
|
3436
|
+
"statusWarn": "_8ePy_W_statusWarn",
|
|
3437
|
+
"tableRankNum": "_8ePy_W_tableRankNum",
|
|
3438
|
+
"tableSortGroup": "_8ePy_W_tableSortGroup",
|
|
3439
|
+
"tableTitleGroup": "_8ePy_W_tableTitleGroup",
|
|
3440
|
+
"tagDanger": "_8ePy_W_tagDanger",
|
|
3441
|
+
"tagWarn": "_8ePy_W_tagWarn",
|
|
3442
|
+
"tokenStat": "_8ePy_W_tokenStat",
|
|
3443
|
+
"toolCompoundBox": "_8ePy_W_toolCompoundBox",
|
|
3444
|
+
"toolCompoundLegend": "_8ePy_W_toolCompoundLegend",
|
|
3445
|
+
"toolCompoundTrack": "_8ePy_W_toolCompoundTrack",
|
|
3446
|
+
"toolDrillSection": "_8ePy_W_toolDrillSection",
|
|
3447
|
+
"toolGridCards": "_8ePy_W_toolGridCards",
|
|
3448
|
+
"toolMiniCard": "_8ePy_W_toolMiniCard",
|
|
3449
|
+
"toolMiniDesc": "_8ePy_W_toolMiniDesc",
|
|
3450
|
+
"toolMiniNum": "_8ePy_W_toolMiniNum",
|
|
3451
|
+
"toolMiniTitle": "_8ePy_W_toolMiniTitle",
|
|
3452
|
+
"toolSliceBash": "_8ePy_W_toolSliceBash",
|
|
3453
|
+
"toolSliceFile": "_8ePy_W_toolSliceFile",
|
|
3454
|
+
"toolTopList": "_8ePy_W_toolTopList",
|
|
3455
|
+
"toolTopListTitle": "_8ePy_W_toolTopListTitle",
|
|
3456
|
+
"viewSwitchBtn": "_8ePy_W_viewSwitchBtn",
|
|
3457
|
+
"viewSwitchGroup": "_8ePy_W_viewSwitchGroup",
|
|
3458
|
+
"vizHead": "_8ePy_W_vizHead",
|
|
3459
|
+
"vizPanel": "_8ePy_W_vizPanel",
|
|
3460
|
+
"vizSplitGrid": "_8ePy_W_vizSplitGrid",
|
|
3461
|
+
"vizSub": "_8ePy_W_vizSub",
|
|
3462
|
+
"vizTitle": "_8ePy_W_vizTitle"
|
|
3436
3463
|
};
|
|
3437
3464
|
//#endregion
|
|
3438
|
-
//#region \0dshx-css-module
|
|
3439
|
-
const css = ".
|
|
3465
|
+
//#region \0dshx-css-module:./src/client/TimingPanel.module.css.mjs
|
|
3466
|
+
const css = "._5u7iNa_panelBox{--c-ttft:#94a3b8;--c-think:#3b82f6;--c-output:#38bdf8;--c-bash:#059669;--c-file:#34d399;box-sizing:border-box;background:var(--dsw-alias-bg-layer-2,#f5f6f8);border:1px solid var(--dsw-alias-border-l2,#e2e8f0);border-radius:8px;width:100%;padding:12px 14px;position:relative}body[data-ds-dark-theme] ._5u7iNa_panelBox{--c-ttft:#64748b;--c-think:#60a5fa;--c-output:#38bdf8;--c-bash:#10b981;--c-file:#6ee7b7}._5u7iNa_topRow{white-space:nowrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;font-size:11px;display:flex}._5u7iNa_titleArea{white-space:nowrap;flex-wrap:nowrap;align-items:center;gap:8px;min-width:0;display:flex}._5u7iNa_mainTitle{color:var(--dsw-alias-label-primary,#17181c);white-space:nowrap;font-size:12px;font-weight:700}._5u7iNa_liveSpeed{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e2e8f0);color:var(--dsw-alias-label-primary,#17181c);font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:4px;align-items:center;gap:4px;padding:1px 6px;font-size:10px;font-weight:600;display:inline-flex}._5u7iNa_speedDot{background:var(--c-output);border-radius:50%;width:5px;height:5px;animation:1.5s infinite _5u7iNa_pulse}._5u7iNa_totalDuration{color:var(--dsw-alias-label-secondary,#5f636d);font-variant-numeric:tabular-nums;white-space:nowrap}._5u7iNa_bottleneckText{color:var(--dsw-alias-label-primary,#17181c);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0;font-size:11px;font-weight:600}._5u7iNa_chartBox{width:100%;margin-bottom:8px;position:relative}._5u7iNa_barTrack{background:var(--dsw-alias-bg-layer-1,#e2e8f0);cursor:crosshair;border-radius:5px;gap:1px;width:100%;height:20px;display:flex;overflow:hidden;box-shadow:inset 0 1px 2px #0000000a}._5u7iNa_modelCluster,._5u7iNa_toolCluster{height:100%;transition:opacity .12s;display:flex;position:relative}._5u7iNa_slice{cursor:pointer;height:100%;transition:all .12s;position:relative}._5u7iNa_slice:hover{filter:brightness(1.15);z-index:5;box-shadow:0 0 6px #0003}._5u7iNa_slice+._5u7iNa_slice{border-left:1px solid #ffffff59}._5u7iNa_sliceTtft{background:var(--c-ttft)}._5u7iNa_sliceThink{background:var(--c-think)}._5u7iNa_sliceOutput{background:var(--c-output)}._5u7iNa_sliceBash{background:var(--c-bash)}._5u7iNa_sliceFile{background:var(--c-file)}._5u7iNa_legendRow{color:var(--dsw-alias-label-secondary,#5f636d);white-space:nowrap;flex-wrap:nowrap;justify-content:space-between;align-items:center;gap:8px;font-size:11px;display:flex}._5u7iNa_legendGroup{white-space:nowrap;flex-wrap:nowrap;align-items:center;gap:12px;display:flex}._5u7iNa_legendItem{cursor:pointer;white-space:nowrap;align-items:center;gap:4px;transition:opacity .12s;display:flex}._5u7iNa_legendItem:hover{opacity:.75}._5u7iNa_dot{border-radius:2px;flex-shrink:0;width:7px;height:7px}._5u7iNa_statusPill{white-space:nowrap;border-radius:4px;flex-shrink:0;align-items:center;gap:4px;padding:1px 7px;font-size:10px;font-weight:600;display:inline-flex}._5u7iNa_statusOk{color:var(--dsw-static-green-500,#15803d)}._5u7iNa_statusWarn{color:#b45309;background:#f59e0b1f}._5u7iNa_statusDanger{color:#b91c1c;background:#ef44441f}._5u7iNa_popover{color:#f8fafc;pointer-events:none;z-index:50;box-sizing:border-box;white-space:nowrap;background:#0f172a;border-radius:8px;width:360px;max-width:calc(100% - 16px);padding:10px 14px;font-size:11px;animation:.12s ease-out _5u7iNa_popIn;position:absolute;top:auto;bottom:calc(100% + 8px);box-shadow:0 8px 24px #00000059}._5u7iNa_popover:after{content:\"\";bottom:-5px;left:var(--arrow-left,50%);border:5px solid #0000;border-top-color:#0f172a;border-bottom-width:0;position:absolute;transform:translate(-50%)}._5u7iNa_popTitle{white-space:nowrap;border-bottom:1px solid #ffffff26;justify-content:space-between;align-items:center;gap:16px;margin-bottom:6px;padding-bottom:5px;font-weight:600;display:flex}._5u7iNa_popList{flex-direction:column;gap:3px;display:flex}._5u7iNa_popRow{white-space:nowrap;justify-content:space-between;align-items:center;gap:16px;padding:2px 0;display:flex}._5u7iNa_popLeft{color:#ffffffd9;white-space:nowrap;flex-shrink:0;align-items:center;gap:6px;display:flex}._5u7iNa_popRight{font-variant-numeric:tabular-nums;color:#fff;white-space:nowrap;text-align:right;flex-shrink:0;font-weight:600}._5u7iNa_activeVal{color:#fbbf24;font-weight:700}@keyframes _5u7iNa_pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.85)}}@keyframes _5u7iNa_popIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}";
|
|
3440
3467
|
const tagId = "dsh-watcher/TimingPanel.module.css";
|
|
3441
3468
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
3442
3469
|
const tag = document.createElement("style");
|
|
@@ -3446,41 +3473,41 @@ window.__ModuleLoader__.load({
|
|
|
3446
3473
|
document.head.appendChild(tag);
|
|
3447
3474
|
}
|
|
3448
3475
|
var TimingPanel_module_css_default = {
|
|
3449
|
-
"activeVal": "
|
|
3450
|
-
"barTrack": "
|
|
3451
|
-
"bottleneckText": "
|
|
3452
|
-
"chartBox": "
|
|
3453
|
-
"dot": "
|
|
3454
|
-
"legendGroup": "
|
|
3455
|
-
"legendItem": "
|
|
3456
|
-
"legendRow": "
|
|
3457
|
-
"liveSpeed": "
|
|
3458
|
-
"mainTitle": "
|
|
3459
|
-
"modelCluster": "
|
|
3460
|
-
"panelBox": "
|
|
3461
|
-
"popIn": "
|
|
3462
|
-
"popLeft": "
|
|
3463
|
-
"popList": "
|
|
3464
|
-
"popover": "
|
|
3465
|
-
"popRight": "
|
|
3466
|
-
"popRow": "
|
|
3467
|
-
"popTitle": "
|
|
3468
|
-
"pulse": "
|
|
3469
|
-
"slice": "
|
|
3470
|
-
"sliceBash": "
|
|
3471
|
-
"sliceFile": "
|
|
3472
|
-
"sliceOutput": "
|
|
3473
|
-
"sliceThink": "
|
|
3474
|
-
"sliceTtft": "
|
|
3475
|
-
"speedDot": "
|
|
3476
|
-
"statusDanger": "
|
|
3477
|
-
"statusOk": "
|
|
3478
|
-
"statusPill": "
|
|
3479
|
-
"statusWarn": "
|
|
3480
|
-
"titleArea": "
|
|
3481
|
-
"toolCluster": "
|
|
3482
|
-
"topRow": "
|
|
3483
|
-
"totalDuration": "
|
|
3476
|
+
"activeVal": "_5u7iNa_activeVal",
|
|
3477
|
+
"barTrack": "_5u7iNa_barTrack",
|
|
3478
|
+
"bottleneckText": "_5u7iNa_bottleneckText",
|
|
3479
|
+
"chartBox": "_5u7iNa_chartBox",
|
|
3480
|
+
"dot": "_5u7iNa_dot",
|
|
3481
|
+
"legendGroup": "_5u7iNa_legendGroup",
|
|
3482
|
+
"legendItem": "_5u7iNa_legendItem",
|
|
3483
|
+
"legendRow": "_5u7iNa_legendRow",
|
|
3484
|
+
"liveSpeed": "_5u7iNa_liveSpeed",
|
|
3485
|
+
"mainTitle": "_5u7iNa_mainTitle",
|
|
3486
|
+
"modelCluster": "_5u7iNa_modelCluster",
|
|
3487
|
+
"panelBox": "_5u7iNa_panelBox",
|
|
3488
|
+
"popIn": "_5u7iNa_popIn",
|
|
3489
|
+
"popLeft": "_5u7iNa_popLeft",
|
|
3490
|
+
"popList": "_5u7iNa_popList",
|
|
3491
|
+
"popover": "_5u7iNa_popover",
|
|
3492
|
+
"popRight": "_5u7iNa_popRight",
|
|
3493
|
+
"popRow": "_5u7iNa_popRow",
|
|
3494
|
+
"popTitle": "_5u7iNa_popTitle",
|
|
3495
|
+
"pulse": "_5u7iNa_pulse",
|
|
3496
|
+
"slice": "_5u7iNa_slice",
|
|
3497
|
+
"sliceBash": "_5u7iNa_sliceBash",
|
|
3498
|
+
"sliceFile": "_5u7iNa_sliceFile",
|
|
3499
|
+
"sliceOutput": "_5u7iNa_sliceOutput",
|
|
3500
|
+
"sliceThink": "_5u7iNa_sliceThink",
|
|
3501
|
+
"sliceTtft": "_5u7iNa_sliceTtft",
|
|
3502
|
+
"speedDot": "_5u7iNa_speedDot",
|
|
3503
|
+
"statusDanger": "_5u7iNa_statusDanger",
|
|
3504
|
+
"statusOk": "_5u7iNa_statusOk",
|
|
3505
|
+
"statusPill": "_5u7iNa_statusPill",
|
|
3506
|
+
"statusWarn": "_5u7iNa_statusWarn",
|
|
3507
|
+
"titleArea": "_5u7iNa_titleArea",
|
|
3508
|
+
"toolCluster": "_5u7iNa_toolCluster",
|
|
3509
|
+
"topRow": "_5u7iNa_topRow",
|
|
3510
|
+
"totalDuration": "_5u7iNa_totalDuration"
|
|
3484
3511
|
};
|
|
3485
3512
|
//#endregion
|
|
3486
3513
|
//#region src/client/TimingPanel.tsx
|
|
@@ -3981,6 +4008,9 @@ window.__ModuleLoader__.load({
|
|
|
3981
4008
|
//#endregion
|
|
3982
4009
|
//#region src/client/Insights.tsx
|
|
3983
4010
|
const STORAGE = "dsh-watcher:insights-display:v1";
|
|
4011
|
+
function routeLabel(route) {
|
|
4012
|
+
return `${route?.provider || "未标注提供方"}/${route?.model || "未标注模型"}`;
|
|
4013
|
+
}
|
|
3984
4014
|
function readLimits() {
|
|
3985
4015
|
try {
|
|
3986
4016
|
return limitsOf(JSON.parse(localStorage.getItem(STORAGE) ?? "{}"));
|
|
@@ -4259,14 +4289,14 @@ window.__ModuleLoader__.load({
|
|
|
4259
4289
|
children: [
|
|
4260
4290
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
4261
4291
|
className: Insights_module_css_default.hudHeading,
|
|
4262
|
-
children: scope === "turn" ? "本轮" : selectedModel ? `模型: ${selectedModel
|
|
4292
|
+
children: scope === "turn" ? "本轮" : selectedModel ? `模型: ${routeLabel(selectedModel)}` : "全会话"
|
|
4263
4293
|
}),
|
|
4264
4294
|
scope === "turn" && currentRoute?.model ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
4265
4295
|
className: Insights_module_css_default.currentModelTag,
|
|
4266
|
-
title: currentRoute
|
|
4296
|
+
title: routeLabel(currentRoute),
|
|
4267
4297
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", {
|
|
4268
4298
|
className: Insights_module_css_default.modelTagText,
|
|
4269
|
-
children: currentRoute
|
|
4299
|
+
children: routeLabel(currentRoute)
|
|
4270
4300
|
}), currentRoute.effort ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
4271
4301
|
className: Insights_module_css_default.effortTag,
|
|
4272
4302
|
children: ["思考: ", effortLabel(currentRoute.effort)]
|
|
@@ -4359,8 +4389,9 @@ window.__ModuleLoader__.load({
|
|
|
4359
4389
|
className: Insights_module_css_default.modelTabBtn,
|
|
4360
4390
|
"data-active": modelFilter === idx ? "" : void 0,
|
|
4361
4391
|
onClick: () => setModelFilter(idx),
|
|
4392
|
+
title: routeLabel(m),
|
|
4362
4393
|
children: [
|
|
4363
|
-
m
|
|
4394
|
+
routeLabel(m),
|
|
4364
4395
|
" (",
|
|
4365
4396
|
m.calls,
|
|
4366
4397
|
"次)"
|
|
@@ -4522,11 +4553,13 @@ window.__ModuleLoader__.load({
|
|
|
4522
4553
|
const cacheHitPct = totalInAll > 0 ? Math.round(totalCacheRead / totalInAll * 100) : 0;
|
|
4523
4554
|
const modelMap = /* @__PURE__ */ new Map();
|
|
4524
4555
|
for (const view of validViews) for (const m of view.models ?? []) {
|
|
4525
|
-
const name = m
|
|
4556
|
+
const name = routeLabel(m);
|
|
4526
4557
|
let row = modelMap.get(name);
|
|
4527
4558
|
if (!row) {
|
|
4528
4559
|
row = {
|
|
4529
4560
|
model: name,
|
|
4561
|
+
provider: m.provider,
|
|
4562
|
+
pricingModel: m.model,
|
|
4530
4563
|
calls: 0,
|
|
4531
4564
|
tokens: 0,
|
|
4532
4565
|
input: 0,
|
|
@@ -4630,11 +4663,22 @@ window.__ModuleLoader__.load({
|
|
|
4630
4663
|
const bucket = byDay.get(key);
|
|
4631
4664
|
if (!bucket) return;
|
|
4632
4665
|
bucket.sessions += 1;
|
|
4633
|
-
|
|
4666
|
+
const dayBooks = row.value?.days;
|
|
4667
|
+
if (Array.isArray(dayBooks) && dayBooks.length > 0) dayBooks.forEach((d) => {
|
|
4668
|
+
const dayBucket = byDay.get(d.key);
|
|
4669
|
+
if (!dayBucket) return;
|
|
4670
|
+
(Array.isArray(d.models) && d.models.length ? d.models : [{
|
|
4671
|
+
model: "未标注",
|
|
4672
|
+
tokens: d.tokens ?? 0
|
|
4673
|
+
}]).forEach((m) => {
|
|
4674
|
+
dayBucket.models.set(routeLabel(m), (dayBucket.models.get(routeLabel(m)) ?? 0) + (m.tokens ?? 0));
|
|
4675
|
+
});
|
|
4676
|
+
});
|
|
4677
|
+
else (row.value.models?.length ? row.value.models : [{
|
|
4634
4678
|
model: "未标注",
|
|
4635
4679
|
tokens: row.value.totals.tokens ?? 0
|
|
4636
4680
|
}]).forEach((m) => {
|
|
4637
|
-
bucket.models.set(m
|
|
4681
|
+
bucket.models.set(routeLabel(m), (bucket.models.get(routeLabel(m)) ?? 0) + (m.tokens ?? 0));
|
|
4638
4682
|
});
|
|
4639
4683
|
});
|
|
4640
4684
|
const todayStr = dayKey(Date.now());
|
|
@@ -4708,7 +4752,7 @@ window.__ModuleLoader__.load({
|
|
|
4708
4752
|
dEntry.tokens += r.value.totals?.tokens ?? 0;
|
|
4709
4753
|
dEntry.sessions += 1;
|
|
4710
4754
|
(r.value.models ?? []).forEach((m) => {
|
|
4711
|
-
dEntry.models.set(m
|
|
4755
|
+
dEntry.models.set(routeLabel(m), (dEntry.models.get(routeLabel(m)) ?? 0) + (m.tokens ?? 0));
|
|
4712
4756
|
});
|
|
4713
4757
|
});
|
|
4714
4758
|
const nonZeroTokenDays = [...heatmapDayMap.values()].map((d) => d.tokens).filter((t) => t > 0).sort((a, b) => a - b);
|
|
@@ -4769,7 +4813,10 @@ window.__ModuleLoader__.load({
|
|
|
4769
4813
|
}
|
|
4770
4814
|
const totalHeatmapTokens = nonZeroTokenDays.reduce((acc, v) => acc + v, 0);
|
|
4771
4815
|
const totalHeatmapSessions = allHistoricalRows.length;
|
|
4772
|
-
const estimatedCost = estimateUsageRows(uniqueModels.length > 0 ? uniqueModels
|
|
4816
|
+
const estimatedCost = estimateUsageRows(uniqueModels.length > 0 ? uniqueModels.map(({ pricingModel, ...row }) => ({
|
|
4817
|
+
...row,
|
|
4818
|
+
model: pricingModel
|
|
4819
|
+
})) : [{
|
|
4773
4820
|
model: "未标注",
|
|
4774
4821
|
tokens: totalTokens,
|
|
4775
4822
|
input: totalInput,
|
|
@@ -5598,8 +5645,8 @@ window.__ModuleLoader__.load({
|
|
|
5598
5645
|
}),
|
|
5599
5646
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
5600
5647
|
className: Insights_module_css_default.rankName,
|
|
5601
|
-
title: s.value?.models?.[0]
|
|
5602
|
-
children: s.value?.models?.[0]
|
|
5648
|
+
title: s.value?.models?.[0] ? routeLabel(s.value.models[0]) : void 0,
|
|
5649
|
+
children: s.value?.models?.[0] ? routeLabel(s.value.models[0]) : "通用会话"
|
|
5603
5650
|
})
|
|
5604
5651
|
]
|
|
5605
5652
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
@@ -5675,7 +5722,7 @@ window.__ModuleLoader__.load({
|
|
|
5675
5722
|
}),
|
|
5676
5723
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
5677
5724
|
className: Insights_module_css_default.rankName,
|
|
5678
|
-
children: s.value?.models?.[0]
|
|
5725
|
+
children: s.value?.models?.[0] ? routeLabel(s.value.models[0]) : "通用对话"
|
|
5679
5726
|
}),
|
|
5680
5727
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
5681
5728
|
className: s.value?.totals?.toolErrors > 0 ? Insights_module_css_default.statusBad : Insights_module_css_default.statusOk,
|
|
@@ -6528,8 +6575,8 @@ window.__ModuleLoader__.load({
|
|
|
6528
6575
|
}),
|
|
6529
6576
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
6530
6577
|
className: Insights_module_css_default.sessionModelCell,
|
|
6531
|
-
title: val.models?.[0]
|
|
6532
|
-
children: val.models?.[0]
|
|
6578
|
+
title: routeLabel(val.models?.[0]),
|
|
6579
|
+
children: routeLabel(val.models?.[0])
|
|
6533
6580
|
}),
|
|
6534
6581
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
6535
6582
|
className: Insights_module_css_default.sessionTokenCell,
|
|
@@ -7026,6 +7073,14 @@ window.__ModuleLoader__.load({
|
|
|
7026
7073
|
if (status === "success") return "done";
|
|
7027
7074
|
return null;
|
|
7028
7075
|
}
|
|
7076
|
+
/** True when the work picture carries an alert the header trigger must echo. */
|
|
7077
|
+
function edgeAlertOf(picture) {
|
|
7078
|
+
return picture.pendingCount > 0 || picture.now.status === "failure" || picture.now.status === "interrupted";
|
|
7079
|
+
}
|
|
7080
|
+
/** One-word health summary for the header trigger's aria state. */
|
|
7081
|
+
function summaryStateOf(picture) {
|
|
7082
|
+
return picture.pendingCount > 0 ? "等待确认" : picture.running ? "正在执行" : picture.now.status === "failure" ? "执行失败" : picture.now.status === "interrupted" ? "已中断" : picture.nodes.length > 0 ? "就绪" : "待命";
|
|
7083
|
+
}
|
|
7029
7084
|
function StatusMark({ status, className }) {
|
|
7030
7085
|
const state = dotState(status);
|
|
7031
7086
|
return state === null ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
@@ -8044,35 +8099,10 @@ window.__ModuleLoader__.load({
|
|
|
8044
8099
|
sessionSnapshot.hasMore,
|
|
8045
8100
|
sessionSnapshot.running
|
|
8046
8101
|
]);
|
|
8047
|
-
const running = snapshot.running;
|
|
8048
8102
|
const wholeSessionStats = useProjection("sessionStats");
|
|
8049
8103
|
const wholeSessionInsights = useProjection("watcherInsights");
|
|
8050
|
-
const
|
|
8051
|
-
const observedRef = (0, react.useRef)(null);
|
|
8052
|
-
const picture = (0, react.useMemo)(() => {
|
|
8053
|
-
const previous = observedRef.current?.sessionId === sessionId ? observedRef.current.picture : null;
|
|
8054
|
-
const next = previous === null ? snapshotPicture : mergeObservedPictures(previous, snapshotPicture);
|
|
8055
|
-
observedRef.current = {
|
|
8056
|
-
sessionId,
|
|
8057
|
-
picture: next
|
|
8058
|
-
};
|
|
8059
|
-
return next;
|
|
8060
|
-
}, [sessionId, snapshotPicture]);
|
|
8061
|
-
const performanceByTurn = (0, react.useMemo)(() => deriveTurnPerformance(snapshot.nodes, picture.turns), [snapshot.nodes, picture.turns]);
|
|
8062
|
-
const lastGroup = picture.nodes.at(-1);
|
|
8063
|
-
const lastGroupId = lastGroup?.id ?? null;
|
|
8064
|
-
const lastItem = lastGroup?.items.at(-1);
|
|
8065
|
-
const latestActivityKey = lastItem === void 0 ? lastGroupId : `${lastGroupId}:${lastItem.id}:${lastItem.seq}:${lastItem.status}:${lastItem.resultSeq ?? "open"}:${lastItem.resultTime ?? "open"}`;
|
|
8104
|
+
const { picture, performanceByTurn } = useObservedPicture(sessionId, snapshot);
|
|
8066
8105
|
const [open, setOpen] = (0, react.useState)(false);
|
|
8067
|
-
const [ui, setUi] = (0, react.useState)(() => ({
|
|
8068
|
-
follow: true,
|
|
8069
|
-
unread: 0,
|
|
8070
|
-
selectedId: null
|
|
8071
|
-
}));
|
|
8072
|
-
const [selectedItemId, setSelectedItemId] = (0, react.useState)(null);
|
|
8073
|
-
const [inspectorClosing, setInspectorClosing] = (0, react.useState)(false);
|
|
8074
|
-
const inspectorExitTimer = (0, react.useRef)(null);
|
|
8075
|
-
const inspectorExitToLatest = (0, react.useRef)(false);
|
|
8076
8106
|
const [panelPin, setPanelPin] = (0, react.useState)(null);
|
|
8077
8107
|
const panelPinTimer = (0, react.useRef)(null);
|
|
8078
8108
|
/** Resize anchors the panel at its current top-left; null until first resized. */
|
|
@@ -8083,17 +8113,9 @@ window.__ModuleLoader__.load({
|
|
|
8083
8113
|
const resizeStart = (0, react.useRef)(null);
|
|
8084
8114
|
/** The natural size the panel opened at — the floor; resize can only grow. */
|
|
8085
8115
|
const resizeMin = (0, react.useRef)(null);
|
|
8086
|
-
const [observationMode, setObservationMode] = (0, react.useState)("itemized");
|
|
8087
|
-
const [disclosure, setDisclosure] = (0, react.useState)(createDisclosureState);
|
|
8088
|
-
const [historyLoad, setHistoryLoad] = (0, react.useState)({ kind: "idle" });
|
|
8089
|
-
const now = useLiveClock(open && picture.running);
|
|
8090
|
-
const followRef = (0, react.useRef)(createFollow());
|
|
8091
8116
|
const rootRef = (0, react.useRef)(null);
|
|
8092
8117
|
const triggerRef = (0, react.useRef)(null);
|
|
8093
8118
|
const panelRef = (0, react.useRef)(null);
|
|
8094
|
-
const railRef = (0, react.useRef)(null);
|
|
8095
|
-
const programmaticScrollRef = (0, react.useRef)(false);
|
|
8096
|
-
const historyAbortRef = (0, react.useRef)(null);
|
|
8097
8119
|
const panelPosition = (0, _deepseek_ai_dsh_client_ui_primitives.useAnchoredPosition)({
|
|
8098
8120
|
open,
|
|
8099
8121
|
anchorRef: triggerRef,
|
|
@@ -8122,86 +8144,11 @@ window.__ModuleLoader__.load({
|
|
|
8122
8144
|
document.removeEventListener("keydown", closeOnEscape);
|
|
8123
8145
|
};
|
|
8124
8146
|
}, [open]);
|
|
8125
|
-
(0, react.useLayoutEffect)(() => {
|
|
8126
|
-
historyAbortRef.current?.abort();
|
|
8127
|
-
historyAbortRef.current = null;
|
|
8128
|
-
setHistoryLoad({ kind: "idle" });
|
|
8129
|
-
followRef.current.reset();
|
|
8130
|
-
setUi(followRef.current.snapshot());
|
|
8131
|
-
setSelectedItemId(null);
|
|
8132
|
-
setDisclosure(resetDisclosureOverrides);
|
|
8133
|
-
}, [sessionId]);
|
|
8134
8147
|
(0, react.useEffect)(() => () => {
|
|
8135
|
-
|
|
8148
|
+
if (panelPinTimer.current !== null) window.clearTimeout(panelPinTimer.current);
|
|
8136
8149
|
}, []);
|
|
8137
|
-
|
|
8138
|
-
|
|
8139
|
-
}, [latestActivityKey]);
|
|
8140
|
-
(0, react.useLayoutEffect)(() => {
|
|
8141
|
-
const rail = railRef.current;
|
|
8142
|
-
if (!rail || !open || !ui.follow) return;
|
|
8143
|
-
programmaticScrollRef.current = true;
|
|
8144
|
-
rail.scrollTop = rail.scrollHeight;
|
|
8145
|
-
const frame = requestAnimationFrame(() => {
|
|
8146
|
-
programmaticScrollRef.current = false;
|
|
8147
|
-
});
|
|
8148
|
-
return () => {
|
|
8149
|
-
cancelAnimationFrame(frame);
|
|
8150
|
-
programmaticScrollRef.current = false;
|
|
8151
|
-
};
|
|
8152
|
-
}, [
|
|
8153
|
-
ui.follow,
|
|
8154
|
-
latestActivityKey,
|
|
8155
|
-
observationMode,
|
|
8156
|
-
open
|
|
8157
|
-
]);
|
|
8158
|
-
const selected = ui.selectedId === null ? void 0 : picture.nodes.find((group) => group.id === ui.selectedId);
|
|
8159
|
-
const latestTurnNumber = picture.turns.at(-1)?.turn ?? null;
|
|
8160
|
-
const totalTurnCount = Math.max(picture.turnCount, wholeSessionStats?.turns ?? 0);
|
|
8161
|
-
const totalStepCount = Math.max(picture.stepCount, wholeSessionStats?.steps ?? 0);
|
|
8162
|
-
const historyProgress = totalStepCount > picture.stepCount ? `${picture.stepCount}/${totalStepCount} 个步骤` : totalTurnCount > picture.turnCount ? `${picture.turnCount}/${totalTurnCount} 个对话轮次` : `${picture.stepCount} 个步骤已载入`;
|
|
8163
|
-
const hasEdgeAlert = picture.pendingCount > 0 || picture.now.status === "failure" || picture.now.status === "interrupted";
|
|
8164
|
-
const summaryState = picture.pendingCount > 0 ? "等待确认" : picture.running ? "正在执行" : picture.now.status === "failure" ? "执行失败" : picture.now.status === "interrupted" ? "已中断" : picture.nodes.length > 0 ? "就绪" : "待命";
|
|
8165
|
-
const nowLabel = picture.now.label || (picture.nodes.length > 0 ? "执行路径已就绪" : "等待指令");
|
|
8166
|
-
const selectItem = (group, item) => {
|
|
8167
|
-
clearInspectorExit();
|
|
8168
|
-
pinPanelFrame();
|
|
8169
|
-
setInspectorClosing(false);
|
|
8170
|
-
setUi(followRef.current.onSelect(group.id));
|
|
8171
|
-
setSelectedItemId(item.id);
|
|
8172
|
-
};
|
|
8173
|
-
/**
|
|
8174
|
-
* "定位现场" must end at the failing work item, not just somewhere near the
|
|
8175
|
-
* turn: opening the inspector on that exact item is the whole point of the
|
|
8176
|
-
* affordance. A finding whose step can't be matched still lands on its turn.
|
|
8177
|
-
*/
|
|
8178
|
-
const locateEvidence = (e) => {
|
|
8179
|
-
pinForDisclosure();
|
|
8180
|
-
setDisclosure(chooseDisclosureDepth("detail"));
|
|
8181
|
-
const turn = picture.turns.find((t) => t.turn === e.turn);
|
|
8182
|
-
const group = turn?.groups.find((g) => g.items.some((i) => i.status === "failure" && e.steps.includes(i.step ?? -1)));
|
|
8183
|
-
const item = group?.items.find((i) => i.status === "failure" && e.steps.includes(i.step ?? -1));
|
|
8184
|
-
if (turn && group && item) {
|
|
8185
|
-
selectItem(group, item);
|
|
8186
|
-
requestAnimationFrame(() => document.getElementById(`watcher-turn-${turn.turn}`)?.scrollIntoView({ block: "nearest" }));
|
|
8187
|
-
} else requestAnimationFrame(() => document.getElementById(`watcher-turn-${e.turn}`)?.scrollIntoView({ block: "nearest" }));
|
|
8188
|
-
};
|
|
8189
|
-
const onRailScroll = () => {
|
|
8190
|
-
if (programmaticScrollRef.current) return;
|
|
8191
|
-
const rail = railRef.current;
|
|
8192
|
-
if (rail === null) return;
|
|
8193
|
-
const atBottom = rail.scrollHeight - rail.scrollTop - rail.clientHeight < 24;
|
|
8194
|
-
setUi(followRef.current.onScroll({ atBottom }));
|
|
8195
|
-
};
|
|
8196
|
-
const backToLatest = () => {
|
|
8197
|
-
programmaticScrollRef.current = true;
|
|
8198
|
-
setUi(followRef.current.backToLatest());
|
|
8199
|
-
};
|
|
8200
|
-
const clearInspectorExit = () => {
|
|
8201
|
-
if (inspectorExitTimer.current === null) return;
|
|
8202
|
-
window.clearTimeout(inspectorExitTimer.current);
|
|
8203
|
-
inspectorExitTimer.current = null;
|
|
8204
|
-
};
|
|
8150
|
+
const hasEdgeAlert = edgeAlertOf(picture);
|
|
8151
|
+
const summaryState = summaryStateOf(picture);
|
|
8205
8152
|
const clearPanelPin = () => {
|
|
8206
8153
|
if (panelPinTimer.current !== null) {
|
|
8207
8154
|
window.clearTimeout(panelPinTimer.current);
|
|
@@ -8294,74 +8241,6 @@ window.__ModuleLoader__.load({
|
|
|
8294
8241
|
window.addEventListener("pointermove", move);
|
|
8295
8242
|
window.addEventListener("pointerup", up);
|
|
8296
8243
|
};
|
|
8297
|
-
/**
|
|
8298
|
-
* Closing the inspector is one continuous motion: the column narrows while
|
|
8299
|
-
* the detail content slides right and disappears under the work-path card.
|
|
8300
|
-
* The collapse animation already ends at the closed width, so the unmount
|
|
8301
|
-
* that finishes it cannot flash or jump.
|
|
8302
|
-
* `toLatest` is for the "查看最新" affordance only; the plain back control
|
|
8303
|
-
* just closes the detail and keeps the rail pinned where the user left it.
|
|
8304
|
-
*/
|
|
8305
|
-
const finishInspectorExit = () => {
|
|
8306
|
-
clearInspectorExit();
|
|
8307
|
-
setUi(inspectorExitToLatest.current ? followRef.current.backToLatest() : followRef.current.clearSelection());
|
|
8308
|
-
setSelectedItemId(null);
|
|
8309
|
-
setInspectorClosing(false);
|
|
8310
|
-
};
|
|
8311
|
-
const closeInspector = (toLatest = false) => {
|
|
8312
|
-
if (inspectorClosing) return;
|
|
8313
|
-
inspectorExitToLatest.current = toLatest;
|
|
8314
|
-
pinPanelFrame();
|
|
8315
|
-
setInspectorClosing(true);
|
|
8316
|
-
inspectorExitTimer.current = window.setTimeout(finishInspectorExit, INSPECTOR_EXIT_FALLBACK_MS);
|
|
8317
|
-
};
|
|
8318
|
-
(0, react.useEffect)(() => () => {
|
|
8319
|
-
clearInspectorExit();
|
|
8320
|
-
if (panelPinTimer.current !== null) window.clearTimeout(panelPinTimer.current);
|
|
8321
|
-
}, []);
|
|
8322
|
-
const pinForDisclosure = () => {
|
|
8323
|
-
if (ui.follow) setUi(followRef.current.setFollow(false));
|
|
8324
|
-
};
|
|
8325
|
-
const chooseObservationMode = (mode) => {
|
|
8326
|
-
if (mode === observationMode) return;
|
|
8327
|
-
if (ui.follow) programmaticScrollRef.current = true;
|
|
8328
|
-
setObservationMode(mode);
|
|
8329
|
-
};
|
|
8330
|
-
const chooseDepth = (depth) => {
|
|
8331
|
-
if (depth === disclosure.depth) return;
|
|
8332
|
-
pinForDisclosure();
|
|
8333
|
-
setDisclosure(chooseDisclosureDepth(depth));
|
|
8334
|
-
};
|
|
8335
|
-
const startHistoryLoad = () => {
|
|
8336
|
-
if (historyLoad.kind === "loading" || historyLoad.kind === "complete") return;
|
|
8337
|
-
historyAbortRef.current?.abort();
|
|
8338
|
-
const controller = new AbortController();
|
|
8339
|
-
historyAbortRef.current = controller;
|
|
8340
|
-
setHistoryLoad({ kind: "loading" });
|
|
8341
|
-
loadAllHistory(controller.signal).then((result) => {
|
|
8342
|
-
if (historyAbortRef.current !== controller) return;
|
|
8343
|
-
if (result.kind === "blocked") {
|
|
8344
|
-
const message = result.reason === "busy" ? "主会话正在载入历史,请稍后重试" : result.reason === "page-limit" ? "历史页数超出安全上限,请分次重试" : "历史分页没有继续前进,请重试";
|
|
8345
|
-
setHistoryLoad({
|
|
8346
|
-
kind: "error",
|
|
8347
|
-
message
|
|
8348
|
-
});
|
|
8349
|
-
} else if (result.kind === "complete") setHistoryLoad({ kind: "complete" });
|
|
8350
|
-
else setHistoryLoad({ kind: "idle" });
|
|
8351
|
-
}).catch((error) => {
|
|
8352
|
-
if (historyAbortRef.current !== controller || controller.signal.aborted) return;
|
|
8353
|
-
setHistoryLoad({
|
|
8354
|
-
kind: "error",
|
|
8355
|
-
message: error instanceof Error ? error.message : String(error)
|
|
8356
|
-
});
|
|
8357
|
-
}).finally(() => {
|
|
8358
|
-
if (historyAbortRef.current === controller) historyAbortRef.current = null;
|
|
8359
|
-
});
|
|
8360
|
-
};
|
|
8361
|
-
(0, react.useEffect)(() => {
|
|
8362
|
-
if (historyLoad.kind !== "complete" || snapshot.hasMore) return;
|
|
8363
|
-
setHistoryLoad({ kind: "idle" });
|
|
8364
|
-
}, [historyLoad.kind, snapshot.hasMore]);
|
|
8365
8244
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8366
8245
|
ref: rootRef,
|
|
8367
8246
|
className: Watcher_module_css_default.root,
|
|
@@ -8402,271 +8281,16 @@ window.__ModuleLoader__.load({
|
|
|
8402
8281
|
"data-dsh-watcher-panel": "",
|
|
8403
8282
|
"data-ud-motion": "watcher-panel-enter",
|
|
8404
8283
|
children: [
|
|
8405
|
-
|
|
8406
|
-
|
|
8407
|
-
|
|
8408
|
-
|
|
8409
|
-
|
|
8410
|
-
|
|
8411
|
-
|
|
8412
|
-
|
|
8413
|
-
|
|
8414
|
-
|
|
8415
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
8416
|
-
className: Watcher_module_css_default.workPicture,
|
|
8417
|
-
"aria-label": "Agent 工作路径",
|
|
8418
|
-
"data-ud-check": "watcher-work-picture",
|
|
8419
|
-
"data-ud-role": "panel",
|
|
8420
|
-
children: [
|
|
8421
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("header", {
|
|
8422
|
-
className: Watcher_module_css_default.pictureHeader,
|
|
8423
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8424
|
-
className: Watcher_module_css_default.nowBlock,
|
|
8425
|
-
"aria-live": "polite",
|
|
8426
|
-
children: [
|
|
8427
|
-
picture.running || hasEdgeAlert || summaryState !== "就绪" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
8428
|
-
className: Watcher_module_css_default.eyebrow,
|
|
8429
|
-
"data-alert": hasEdgeAlert ? "" : void 0,
|
|
8430
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: summaryState })
|
|
8431
|
-
}) : null,
|
|
8432
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
8433
|
-
className: Watcher_module_css_default.now,
|
|
8434
|
-
title: picture.running ? nowLabel : "DSH-Watcher",
|
|
8435
|
-
children: picture.running ? nowLabel : "DSH-Watcher"
|
|
8436
|
-
}),
|
|
8437
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8438
|
-
className: Watcher_module_css_default.summary,
|
|
8439
|
-
children: [
|
|
8440
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: snapshot.hasMore && totalTurnCount > picture.turnCount ? `已载入 ${picture.turnCount}/${totalTurnCount} 轮` : `${picture.turnCount} 轮` }),
|
|
8441
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: snapshot.hasMore && totalStepCount > picture.stepCount ? `${picture.stepCount}/${totalStepCount} 步` : `${picture.stepCount} 步` }),
|
|
8442
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [picture.actionCount, " 次执行"] }),
|
|
8443
|
-
snapshot.hasMore || historyLoad.kind === "loading" || historyLoad.kind === "error" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
8444
|
-
type: "button",
|
|
8445
|
-
className: Watcher_module_css_default.loadAllInlineBtn,
|
|
8446
|
-
onClick: startHistoryLoad,
|
|
8447
|
-
disabled: historyLoad.kind === "loading",
|
|
8448
|
-
children: historyLoad.kind === "loading" ? "正在补齐历史…" : historyLoad.kind === "error" ? "重试载入" : "载入全部历史 →"
|
|
8449
|
-
}) : null,
|
|
8450
|
-
historyLoad.kind === "loading" || historyLoad.kind === "error" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8451
|
-
role: "status",
|
|
8452
|
-
children: historyLoad.kind === "error" ? historyLoad.message : `已载入 ${historyProgress}`
|
|
8453
|
-
}) : null
|
|
8454
|
-
]
|
|
8455
|
-
})
|
|
8456
|
-
]
|
|
8457
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_deepseek_ai_dsh_client_ui_primitives.Pill, {
|
|
8458
|
-
className: Watcher_module_css_default.follow,
|
|
8459
|
-
active: ui.follow,
|
|
8460
|
-
"aria-pressed": ui.follow,
|
|
8461
|
-
"aria-label": ui.follow ? "停止跟随最新工作" : "跟随最新工作",
|
|
8462
|
-
onClick: () => {
|
|
8463
|
-
if (!ui.follow) programmaticScrollRef.current = true;
|
|
8464
|
-
setUi(followRef.current.setFollow(!ui.follow));
|
|
8465
|
-
},
|
|
8466
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, { size: 12 }), ui.follow ? "自动跟随" : "浏览历史"]
|
|
8467
|
-
})]
|
|
8468
|
-
}),
|
|
8469
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SessionInsights, {
|
|
8470
|
-
value: wholeSessionInsights,
|
|
8471
|
-
now,
|
|
8472
|
-
running: picture.running,
|
|
8473
|
-
waiting: picture.pendingCount > 0,
|
|
8474
|
-
onEvidence: locateEvidence
|
|
8475
|
-
}),
|
|
8476
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8477
|
-
className: Watcher_module_css_default.viewToolbar,
|
|
8478
|
-
"aria-label": "路径视图设置",
|
|
8479
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8480
|
-
className: Watcher_module_css_default.viewControl,
|
|
8481
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8482
|
-
className: Watcher_module_css_default.viewToolbarLabel,
|
|
8483
|
-
children: "组织"
|
|
8484
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8485
|
-
className: Watcher_module_css_default.viewMode,
|
|
8486
|
-
role: "group",
|
|
8487
|
-
"aria-label": "路径组织方式",
|
|
8488
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
8489
|
-
type: "button",
|
|
8490
|
-
"data-active": observationMode === "itemized" ? "" : void 0,
|
|
8491
|
-
"aria-pressed": observationMode === "itemized",
|
|
8492
|
-
title: "按时间顺序展示每个步骤和每次执行",
|
|
8493
|
-
onClick: () => chooseObservationMode("itemized"),
|
|
8494
|
-
children: "逐项"
|
|
8495
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
8496
|
-
type: "button",
|
|
8497
|
-
"data-active": observationMode === "grouped" ? "" : void 0,
|
|
8498
|
-
"aria-pressed": observationMode === "grouped",
|
|
8499
|
-
title: "按同一目标或完全相同的指令归类,展开仍可查看原始执行",
|
|
8500
|
-
onClick: () => chooseObservationMode("grouped"),
|
|
8501
|
-
children: "归类"
|
|
8502
|
-
})]
|
|
8503
|
-
})]
|
|
8504
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8505
|
-
className: Watcher_module_css_default.viewControl,
|
|
8506
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8507
|
-
className: Watcher_module_css_default.viewToolbarLabel,
|
|
8508
|
-
children: "层级"
|
|
8509
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8510
|
-
className: Watcher_module_css_default.viewMode,
|
|
8511
|
-
role: "group",
|
|
8512
|
-
"aria-label": "路径展开深度",
|
|
8513
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
8514
|
-
type: "button",
|
|
8515
|
-
"data-active": disclosure.depth === "overview" ? "" : void 0,
|
|
8516
|
-
"aria-pressed": disclosure.depth === "overview",
|
|
8517
|
-
title: "展开当前轮次,展示阶段概览;阶段内部保持收起",
|
|
8518
|
-
onClick: () => chooseDepth("overview"),
|
|
8519
|
-
children: "概览"
|
|
8520
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
8521
|
-
type: "button",
|
|
8522
|
-
"data-active": disclosure.depth === "detail" ? "" : void 0,
|
|
8523
|
-
"aria-pressed": disclosure.depth === "detail",
|
|
8524
|
-
title: "展开所有轮次、阶段、步骤、模型与推理记录",
|
|
8525
|
-
onClick: () => chooseDepth("detail"),
|
|
8526
|
-
children: "详情"
|
|
8527
|
-
})]
|
|
8528
|
-
})]
|
|
8529
|
-
})]
|
|
8530
|
-
}),
|
|
8531
|
-
!ui.follow && ui.unread > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
8532
|
-
type: "button",
|
|
8533
|
-
className: Watcher_module_css_default.unread,
|
|
8534
|
-
onClick: selected === void 0 ? backToLatest : () => closeInspector(true),
|
|
8535
|
-
children: [
|
|
8536
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, { size: 12 }),
|
|
8537
|
-
ui.unread,
|
|
8538
|
-
" 条新进展 · 查看最新"
|
|
8539
|
-
]
|
|
8540
|
-
}) : null,
|
|
8541
|
-
picture.nodes.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8542
|
-
className: Watcher_module_css_default.empty,
|
|
8543
|
-
children: [
|
|
8544
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8545
|
-
className: Watcher_module_css_default.emptyEye,
|
|
8546
|
-
"aria-hidden": "true",
|
|
8547
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconLivingEye, { size: 22 })
|
|
8548
|
-
}),
|
|
8549
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: "还没有工作记录" }),
|
|
8550
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "第一轮对话开始后,路径会从这里生长" })
|
|
8551
|
-
]
|
|
8552
|
-
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
8553
|
-
ref: railRef,
|
|
8554
|
-
className: Watcher_module_css_default.railViewport,
|
|
8555
|
-
onScroll: onRailScroll,
|
|
8556
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
8557
|
-
className: Watcher_module_css_default.turns,
|
|
8558
|
-
children: picture.turns.map((turn) => {
|
|
8559
|
-
const isLatestTurn = turn.turn === latestTurnNumber;
|
|
8560
|
-
const turnState = overviewStateOf(turn.status, isLatestTurn);
|
|
8561
|
-
const automaticDefaultOpen = turnNeedsDefaultDisclosure(turnState, isLatestTurn);
|
|
8562
|
-
const turnOpen = turnDisclosureOpen(disclosure, turn.turn, automaticDefaultOpen);
|
|
8563
|
-
const turnTitle = turn.turn === 0 ? "会话准备" : `对话轮次 ${turn.turn}`;
|
|
8564
|
-
const turnSummary = turnOverviewSummary(turn);
|
|
8565
|
-
const performance = performanceByTurn.get(turn.turn);
|
|
8566
|
-
const duration = turnDuration(turn, isLatestTurn && picture.running, now);
|
|
8567
|
-
const tokenSpeed = performance?.throughput.kind === "measured" ? `${formatTokensPerSecond(performance.throughput.tokensPerSecond)} tok/s` : null;
|
|
8568
|
-
const durationAria = duration === null ? "" : duration.kind === "exact" ? `,总耗时 ${duration.value}` : `,已记录 ${duration.value},开头未载入`;
|
|
8569
|
-
const secondaryPerformance = [duration?.kind === "partial" ? "开头未载入" : null, tokenSpeed].filter((value) => value !== null).join(" · ");
|
|
8570
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
8571
|
-
className: Watcher_module_css_default.turn,
|
|
8572
|
-
"aria-labelledby": `watcher-turn-${turn.turn}`,
|
|
8573
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("header", {
|
|
8574
|
-
className: Watcher_module_css_default.turnHeader,
|
|
8575
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
|
|
8576
|
-
id: `watcher-turn-${turn.turn}`,
|
|
8577
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
8578
|
-
type: "button",
|
|
8579
|
-
className: Watcher_module_css_default.turnToggle,
|
|
8580
|
-
"aria-expanded": turnOpen,
|
|
8581
|
-
"aria-controls": `watcher-turn-body-${turn.turn}`,
|
|
8582
|
-
"aria-label": `${turnTitle},${OVERVIEW_STATE_LABEL[turnState]},${turnSummary}${durationAria}${tokenSpeed === null ? "" : `,生成速度 ${tokenSpeed}`},${turnOpen ? "收起轮次" : "展开轮次"}`,
|
|
8583
|
-
title: turnOpen ? "收起此轮次;新进展仍会继续更新" : "展开此轮次",
|
|
8584
|
-
onClick: () => {
|
|
8585
|
-
pinForDisclosure();
|
|
8586
|
-
setDisclosure((current) => toggleTurnDisclosure(current, turn.turn, automaticDefaultOpen));
|
|
8587
|
-
},
|
|
8588
|
-
children: [
|
|
8589
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutlineRegular, {
|
|
8590
|
-
size: 13,
|
|
8591
|
-
className: Watcher_module_css_default.turnChevron
|
|
8592
|
-
}),
|
|
8593
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
8594
|
-
className: Watcher_module_css_default.turnCopy,
|
|
8595
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
8596
|
-
className: Watcher_module_css_default.turnTitleLine,
|
|
8597
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8598
|
-
className: Watcher_module_css_default.turnTitle,
|
|
8599
|
-
children: turnTitle
|
|
8600
|
-
}), showOverviewTag(turnState) ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8601
|
-
className: Watcher_module_css_default.overviewTag,
|
|
8602
|
-
"data-state": turnState,
|
|
8603
|
-
children: OVERVIEW_STATE_LABEL[turnState]
|
|
8604
|
-
}) : null]
|
|
8605
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8606
|
-
className: Watcher_module_css_default.turnSummary,
|
|
8607
|
-
children: turnSummary
|
|
8608
|
-
})]
|
|
8609
|
-
}),
|
|
8610
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
8611
|
-
className: Watcher_module_css_default.turnPerformance,
|
|
8612
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8613
|
-
className: Watcher_module_css_default.turnDuration,
|
|
8614
|
-
children: duration === null ? OVERVIEW_STATE_LABEL[turnState] : duration.kind === "exact" ? `总 ${duration.value}` : `已记录 ${duration.value}`
|
|
8615
|
-
}), secondaryPerformance === "" ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8616
|
-
className: Watcher_module_css_default.turnSpeed,
|
|
8617
|
-
children: secondaryPerformance
|
|
8618
|
-
})]
|
|
8619
|
-
})
|
|
8620
|
-
]
|
|
8621
|
-
})
|
|
8622
|
-
})
|
|
8623
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
8624
|
-
id: `watcher-turn-body-${turn.turn}`,
|
|
8625
|
-
className: Watcher_module_css_default.turnBody,
|
|
8626
|
-
hidden: !turnOpen,
|
|
8627
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8628
|
-
className: Watcher_module_css_default.groupRail,
|
|
8629
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8630
|
-
className: Watcher_module_css_default.railLine,
|
|
8631
|
-
"aria-hidden": "true"
|
|
8632
|
-
}), turn.groups.map((group) => {
|
|
8633
|
-
const isNow = group.id === lastGroupId;
|
|
8634
|
-
const selectedGroup = ui.selectedId === group.id;
|
|
8635
|
-
const phaseOpen = layerDisclosureOpen(disclosure, "phase", group.id);
|
|
8636
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PhaseOverview, {
|
|
8637
|
-
group,
|
|
8638
|
-
isNow,
|
|
8639
|
-
running: picture.running,
|
|
8640
|
-
now,
|
|
8641
|
-
selectedGroup,
|
|
8642
|
-
selectedItemId,
|
|
8643
|
-
observationMode,
|
|
8644
|
-
open: phaseOpen,
|
|
8645
|
-
disclosure,
|
|
8646
|
-
onToggle: () => {
|
|
8647
|
-
pinForDisclosure();
|
|
8648
|
-
setDisclosure((current) => toggleLayerDisclosure(current, "phase", group.id));
|
|
8649
|
-
},
|
|
8650
|
-
onToggleLayer: (layer, key) => {
|
|
8651
|
-
pinForDisclosure();
|
|
8652
|
-
setDisclosure((current) => toggleLayerDisclosure(current, layer, key));
|
|
8653
|
-
},
|
|
8654
|
-
onToggleReasoning: (key, modelKey) => {
|
|
8655
|
-
pinForDisclosure();
|
|
8656
|
-
setDisclosure((current) => {
|
|
8657
|
-
return toggleLayerDisclosure(layerDisclosureOpen(current, "reasoning", key) ? current : setLayerDisclosure(current, "model", modelKey, true), "reasoning", key);
|
|
8658
|
-
});
|
|
8659
|
-
},
|
|
8660
|
-
onSelectItem: (item) => selectItem(group, item)
|
|
8661
|
-
}, group.id);
|
|
8662
|
-
})]
|
|
8663
|
-
})
|
|
8664
|
-
})]
|
|
8665
|
-
}, turn.turn);
|
|
8666
|
-
})
|
|
8667
|
-
})
|
|
8668
|
-
})
|
|
8669
|
-
]
|
|
8284
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(WorkPicturePanel, {
|
|
8285
|
+
sessionId,
|
|
8286
|
+
picture,
|
|
8287
|
+
performanceByTurn,
|
|
8288
|
+
hasMore: snapshot.hasMore,
|
|
8289
|
+
stats: wholeSessionStats,
|
|
8290
|
+
insights: wholeSessionInsights,
|
|
8291
|
+
loadAllHistory,
|
|
8292
|
+
live: open,
|
|
8293
|
+
onInspectorFrameChange: pinPanelFrame
|
|
8670
8294
|
}),
|
|
8671
8295
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
8672
8296
|
className: Watcher_module_css_default.resizeEdgeRight,
|
|
@@ -8688,10 +8312,475 @@ window.__ModuleLoader__.load({
|
|
|
8688
8312
|
}), document.body) : null]
|
|
8689
8313
|
});
|
|
8690
8314
|
}
|
|
8691
|
-
|
|
8692
|
-
|
|
8693
|
-
|
|
8694
|
-
|
|
8315
|
+
/**
|
|
8316
|
+
* Folds one Session snapshot into the work picture, merging observations that
|
|
8317
|
+
* outlive the loaded window. Shared by the session-header overlay and the
|
|
8318
|
+
* Better Sidebar tab so both surfaces read the same projection.
|
|
8319
|
+
*/
|
|
8320
|
+
function useObservedPicture(sessionId, snapshot) {
|
|
8321
|
+
const running = snapshot.running;
|
|
8322
|
+
const snapshotPicture = (0, react.useMemo)(() => foldSnapshot(snapshot, { running }), [snapshot, running]);
|
|
8323
|
+
const observedRef = (0, react.useRef)(null);
|
|
8324
|
+
const picture = (0, react.useMemo)(() => {
|
|
8325
|
+
const previous = observedRef.current?.sessionId === sessionId ? observedRef.current.picture : null;
|
|
8326
|
+
const next = previous === null ? snapshotPicture : mergeObservedPictures(previous, snapshotPicture);
|
|
8327
|
+
observedRef.current = {
|
|
8328
|
+
sessionId,
|
|
8329
|
+
picture: next
|
|
8330
|
+
};
|
|
8331
|
+
return next;
|
|
8332
|
+
}, [sessionId, snapshotPicture]);
|
|
8333
|
+
return {
|
|
8334
|
+
picture,
|
|
8335
|
+
performanceByTurn: (0, react.useMemo)(() => deriveTurnPerformance(snapshot.nodes, picture.turns), [snapshot.nodes, picture.turns])
|
|
8336
|
+
};
|
|
8337
|
+
}
|
|
8338
|
+
/**
|
|
8339
|
+
* The work picture itself: the docked inspector column plus the turns rail.
|
|
8340
|
+
* Extracted from the session-header overlay so the Better Sidebar tab can
|
|
8341
|
+
* render the same picture without the portal, the trigger, or the drag frame.
|
|
8342
|
+
* Owns every picture-local concern (follow, disclosure, observation mode,
|
|
8343
|
+
* history load, inspector lifecycle); positioning stays with the host.
|
|
8344
|
+
*/
|
|
8345
|
+
function WorkPicturePanel({ sessionId, picture, performanceByTurn, hasMore, stats, insights, hideInsights, loadAllHistory, live, onInspectorFrameChange, domIdPrefix }) {
|
|
8346
|
+
const [ui, setUi] = (0, react.useState)(() => ({
|
|
8347
|
+
follow: true,
|
|
8348
|
+
unread: 0,
|
|
8349
|
+
selectedId: null
|
|
8350
|
+
}));
|
|
8351
|
+
const [selectedItemId, setSelectedItemId] = (0, react.useState)(null);
|
|
8352
|
+
const [inspectorClosing, setInspectorClosing] = (0, react.useState)(false);
|
|
8353
|
+
const inspectorExitTimer = (0, react.useRef)(null);
|
|
8354
|
+
const inspectorExitToLatest = (0, react.useRef)(false);
|
|
8355
|
+
const [observationMode, setObservationMode] = (0, react.useState)("itemized");
|
|
8356
|
+
const [disclosure, setDisclosure] = (0, react.useState)(createDisclosureState);
|
|
8357
|
+
const [historyLoad, setHistoryLoad] = (0, react.useState)({ kind: "idle" });
|
|
8358
|
+
const now = useLiveClock(live && picture.running);
|
|
8359
|
+
const followRef = (0, react.useRef)(createFollow());
|
|
8360
|
+
const railRef = (0, react.useRef)(null);
|
|
8361
|
+
const programmaticScrollRef = (0, react.useRef)(false);
|
|
8362
|
+
const historyAbortRef = (0, react.useRef)(null);
|
|
8363
|
+
/** Coexisting surfaces (header overlay + sidebar tab) must not share DOM ids. */
|
|
8364
|
+
const domPrefix = domIdPrefix ?? "watcher-turn";
|
|
8365
|
+
const selected = ui.selectedId === null ? void 0 : picture.nodes.find((group) => group.id === ui.selectedId);
|
|
8366
|
+
const lastGroup = picture.nodes.at(-1);
|
|
8367
|
+
const lastGroupId = lastGroup?.id ?? null;
|
|
8368
|
+
const lastItem = lastGroup?.items.at(-1);
|
|
8369
|
+
const latestActivityKey = lastItem === void 0 ? lastGroupId : `${lastGroupId}:${lastItem.id}:${lastItem.seq}:${lastItem.status}:${lastItem.resultSeq ?? "open"}:${lastItem.resultTime ?? "open"}`;
|
|
8370
|
+
const latestTurnNumber = picture.turns.at(-1)?.turn ?? null;
|
|
8371
|
+
const totalTurnCount = Math.max(picture.turnCount, stats?.turns ?? 0);
|
|
8372
|
+
const totalStepCount = Math.max(picture.stepCount, stats?.steps ?? 0);
|
|
8373
|
+
const historyProgress = totalStepCount > picture.stepCount ? `${picture.stepCount}/${totalStepCount} 个步骤` : totalTurnCount > picture.turnCount ? `${picture.turnCount}/${totalTurnCount} 个对话轮次` : `${picture.stepCount} 个步骤已载入`;
|
|
8374
|
+
const hasEdgeAlert = edgeAlertOf(picture);
|
|
8375
|
+
const summaryState = summaryStateOf(picture);
|
|
8376
|
+
const nowLabel = picture.now.label || (picture.nodes.length > 0 ? "执行路径已就绪" : "等待指令");
|
|
8377
|
+
(0, react.useLayoutEffect)(() => {
|
|
8378
|
+
historyAbortRef.current?.abort();
|
|
8379
|
+
historyAbortRef.current = null;
|
|
8380
|
+
setHistoryLoad({ kind: "idle" });
|
|
8381
|
+
followRef.current.reset();
|
|
8382
|
+
setUi(followRef.current.snapshot());
|
|
8383
|
+
setSelectedItemId(null);
|
|
8384
|
+
setDisclosure(resetDisclosureOverrides);
|
|
8385
|
+
}, [sessionId]);
|
|
8386
|
+
(0, react.useEffect)(() => () => {
|
|
8387
|
+
historyAbortRef.current?.abort();
|
|
8388
|
+
clearInspectorExit();
|
|
8389
|
+
}, []);
|
|
8390
|
+
(0, react.useLayoutEffect)(() => {
|
|
8391
|
+
setUi(followRef.current.onPicture(picture));
|
|
8392
|
+
}, [latestActivityKey]);
|
|
8393
|
+
(0, react.useLayoutEffect)(() => {
|
|
8394
|
+
const rail = railRef.current;
|
|
8395
|
+
if (!rail || !live || !ui.follow) return;
|
|
8396
|
+
programmaticScrollRef.current = true;
|
|
8397
|
+
rail.scrollTop = rail.scrollHeight;
|
|
8398
|
+
const frame = requestAnimationFrame(() => {
|
|
8399
|
+
programmaticScrollRef.current = false;
|
|
8400
|
+
});
|
|
8401
|
+
return () => {
|
|
8402
|
+
cancelAnimationFrame(frame);
|
|
8403
|
+
programmaticScrollRef.current = false;
|
|
8404
|
+
};
|
|
8405
|
+
}, [
|
|
8406
|
+
ui.follow,
|
|
8407
|
+
latestActivityKey,
|
|
8408
|
+
observationMode,
|
|
8409
|
+
live
|
|
8410
|
+
]);
|
|
8411
|
+
const selectItem = (group, item) => {
|
|
8412
|
+
clearInspectorExit();
|
|
8413
|
+
onInspectorFrameChange?.();
|
|
8414
|
+
setInspectorClosing(false);
|
|
8415
|
+
setUi(followRef.current.onSelect(group.id));
|
|
8416
|
+
setSelectedItemId(item.id);
|
|
8417
|
+
};
|
|
8418
|
+
/**
|
|
8419
|
+
* "定位现场" must end at the failing work item, not just somewhere near the
|
|
8420
|
+
* turn: opening the inspector on that exact item is the whole point of the
|
|
8421
|
+
* affordance. A finding whose step can't be matched still lands on its turn.
|
|
8422
|
+
*/
|
|
8423
|
+
const locateEvidence = (e) => {
|
|
8424
|
+
pinForDisclosure();
|
|
8425
|
+
setDisclosure(chooseDisclosureDepth("detail"));
|
|
8426
|
+
const turn = picture.turns.find((t) => t.turn === e.turn);
|
|
8427
|
+
const group = turn?.groups.find((g) => g.items.some((i) => i.status === "failure" && e.steps.includes(i.step ?? -1)));
|
|
8428
|
+
const item = group?.items.find((i) => i.status === "failure" && e.steps.includes(i.step ?? -1));
|
|
8429
|
+
if (turn && group && item) {
|
|
8430
|
+
selectItem(group, item);
|
|
8431
|
+
requestAnimationFrame(() => document.getElementById(`${domPrefix}-${turn.turn}`)?.scrollIntoView({ block: "nearest" }));
|
|
8432
|
+
} else requestAnimationFrame(() => document.getElementById(`${domPrefix}-${e.turn}`)?.scrollIntoView({ block: "nearest" }));
|
|
8433
|
+
};
|
|
8434
|
+
const onRailScroll = () => {
|
|
8435
|
+
if (programmaticScrollRef.current) return;
|
|
8436
|
+
const rail = railRef.current;
|
|
8437
|
+
if (rail === null) return;
|
|
8438
|
+
const atBottom = rail.scrollHeight - rail.scrollTop - rail.clientHeight < 24;
|
|
8439
|
+
setUi(followRef.current.onScroll({ atBottom }));
|
|
8440
|
+
};
|
|
8441
|
+
const backToLatest = () => {
|
|
8442
|
+
programmaticScrollRef.current = true;
|
|
8443
|
+
setUi(followRef.current.backToLatest());
|
|
8444
|
+
};
|
|
8445
|
+
const clearInspectorExit = () => {
|
|
8446
|
+
if (inspectorExitTimer.current === null) return;
|
|
8447
|
+
window.clearTimeout(inspectorExitTimer.current);
|
|
8448
|
+
inspectorExitTimer.current = null;
|
|
8449
|
+
};
|
|
8450
|
+
/**
|
|
8451
|
+
* Closing the inspector is one continuous motion: the column narrows while
|
|
8452
|
+
* the detail content slides right and disappears under the work-path card.
|
|
8453
|
+
* The collapse animation already ends at the closed width, so the unmount
|
|
8454
|
+
* that finishes it cannot flash or jump.
|
|
8455
|
+
* `toLatest` is for the "查看最新" affordance only; the plain back control
|
|
8456
|
+
* just closes the detail and keeps the rail pinned where the user left it.
|
|
8457
|
+
*/
|
|
8458
|
+
const finishInspectorExit = () => {
|
|
8459
|
+
setUi(inspectorExitToLatest.current ? followRef.current.backToLatest() : followRef.current.clearSelection());
|
|
8460
|
+
setSelectedItemId(null);
|
|
8461
|
+
setInspectorClosing(false);
|
|
8462
|
+
};
|
|
8463
|
+
const closeInspector = (toLatest = false) => {
|
|
8464
|
+
if (inspectorClosing) return;
|
|
8465
|
+
inspectorExitToLatest.current = toLatest;
|
|
8466
|
+
onInspectorFrameChange?.();
|
|
8467
|
+
setInspectorClosing(true);
|
|
8468
|
+
inspectorExitTimer.current = window.setTimeout(finishInspectorExit, INSPECTOR_EXIT_FALLBACK_MS);
|
|
8469
|
+
};
|
|
8470
|
+
const pinForDisclosure = () => {
|
|
8471
|
+
if (ui.follow) setUi(followRef.current.setFollow(false));
|
|
8472
|
+
};
|
|
8473
|
+
const chooseObservationMode = (mode) => {
|
|
8474
|
+
if (mode === observationMode) return;
|
|
8475
|
+
if (ui.follow) programmaticScrollRef.current = true;
|
|
8476
|
+
setObservationMode(mode);
|
|
8477
|
+
};
|
|
8478
|
+
const chooseDepth = (depth) => {
|
|
8479
|
+
if (depth === disclosure.depth) return;
|
|
8480
|
+
pinForDisclosure();
|
|
8481
|
+
setDisclosure(chooseDisclosureDepth(depth));
|
|
8482
|
+
};
|
|
8483
|
+
const startHistoryLoad = () => {
|
|
8484
|
+
if (historyLoad.kind === "loading" || historyLoad.kind === "complete") return;
|
|
8485
|
+
if (loadAllHistory === void 0) return;
|
|
8486
|
+
historyAbortRef.current?.abort();
|
|
8487
|
+
const controller = new AbortController();
|
|
8488
|
+
historyAbortRef.current = controller;
|
|
8489
|
+
setHistoryLoad({ kind: "loading" });
|
|
8490
|
+
loadAllHistory(controller.signal).then((result) => {
|
|
8491
|
+
if (historyAbortRef.current !== controller) return;
|
|
8492
|
+
if (result.kind === "blocked") {
|
|
8493
|
+
const message = result.reason === "busy" ? "主会话正在载入历史,请稍后重试" : result.reason === "page-limit" ? "历史页数超出安全上限,请分次重试" : "历史分页没有继续前进,请重试";
|
|
8494
|
+
setHistoryLoad({
|
|
8495
|
+
kind: "error",
|
|
8496
|
+
message
|
|
8497
|
+
});
|
|
8498
|
+
} else if (result.kind === "complete") setHistoryLoad({ kind: "complete" });
|
|
8499
|
+
else setHistoryLoad({ kind: "idle" });
|
|
8500
|
+
}).catch((error) => {
|
|
8501
|
+
if (historyAbortRef.current !== controller || controller.signal.aborted) return;
|
|
8502
|
+
setHistoryLoad({
|
|
8503
|
+
kind: "error",
|
|
8504
|
+
message: error instanceof Error ? error.message : String(error)
|
|
8505
|
+
});
|
|
8506
|
+
}).finally(() => {
|
|
8507
|
+
if (historyAbortRef.current === controller) historyAbortRef.current = null;
|
|
8508
|
+
});
|
|
8509
|
+
};
|
|
8510
|
+
(0, react.useEffect)(() => {
|
|
8511
|
+
if (historyLoad.kind !== "complete" || hasMore) return;
|
|
8512
|
+
setHistoryLoad({ kind: "idle" });
|
|
8513
|
+
}, [historyLoad.kind, hasMore]);
|
|
8514
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [selected === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ExecutionInspector, {
|
|
8515
|
+
group: selected,
|
|
8516
|
+
selectedItemId,
|
|
8517
|
+
live: picture.running && selected.id === lastGroupId,
|
|
8518
|
+
now,
|
|
8519
|
+
closing: inspectorClosing,
|
|
8520
|
+
onSelectItem: setSelectedItemId,
|
|
8521
|
+
onBack: () => closeInspector(),
|
|
8522
|
+
onExited: finishInspectorExit
|
|
8523
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
8524
|
+
className: Watcher_module_css_default.workPicture,
|
|
8525
|
+
"aria-label": "Agent 工作路径",
|
|
8526
|
+
"data-ud-check": "watcher-work-picture",
|
|
8527
|
+
"data-ud-role": "panel",
|
|
8528
|
+
children: [
|
|
8529
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("header", {
|
|
8530
|
+
className: Watcher_module_css_default.pictureHeader,
|
|
8531
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8532
|
+
className: Watcher_module_css_default.nowBlock,
|
|
8533
|
+
"aria-live": "polite",
|
|
8534
|
+
children: [
|
|
8535
|
+
picture.running || hasEdgeAlert || summaryState !== "就绪" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
8536
|
+
className: Watcher_module_css_default.eyebrow,
|
|
8537
|
+
"data-alert": hasEdgeAlert ? "" : void 0,
|
|
8538
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: summaryState })
|
|
8539
|
+
}) : null,
|
|
8540
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
8541
|
+
className: Watcher_module_css_default.now,
|
|
8542
|
+
title: picture.running ? nowLabel : "DSH-Watcher",
|
|
8543
|
+
children: picture.running ? nowLabel : "DSH-Watcher"
|
|
8544
|
+
}),
|
|
8545
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8546
|
+
className: Watcher_module_css_default.summary,
|
|
8547
|
+
children: [
|
|
8548
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: hasMore && totalTurnCount > picture.turnCount ? `已载入 ${picture.turnCount}/${totalTurnCount} 轮` : `${picture.turnCount} 轮` }),
|
|
8549
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: hasMore && totalStepCount > picture.stepCount ? `${picture.stepCount}/${totalStepCount} 步` : `${picture.stepCount} 步` }),
|
|
8550
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [picture.actionCount, " 次执行"] }),
|
|
8551
|
+
hasMore || historyLoad.kind === "loading" || historyLoad.kind === "error" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
8552
|
+
type: "button",
|
|
8553
|
+
className: Watcher_module_css_default.loadAllInlineBtn,
|
|
8554
|
+
onClick: startHistoryLoad,
|
|
8555
|
+
disabled: historyLoad.kind === "loading",
|
|
8556
|
+
children: historyLoad.kind === "loading" ? "正在补齐历史…" : historyLoad.kind === "error" ? "重试载入" : "载入全部历史 →"
|
|
8557
|
+
}) : null,
|
|
8558
|
+
historyLoad.kind === "loading" || historyLoad.kind === "error" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8559
|
+
role: "status",
|
|
8560
|
+
children: historyLoad.kind === "error" ? historyLoad.message : `已载入 ${historyProgress}`
|
|
8561
|
+
}) : null
|
|
8562
|
+
]
|
|
8563
|
+
})
|
|
8564
|
+
]
|
|
8565
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_deepseek_ai_dsh_client_ui_primitives.Pill, {
|
|
8566
|
+
className: Watcher_module_css_default.follow,
|
|
8567
|
+
active: ui.follow,
|
|
8568
|
+
"aria-pressed": ui.follow,
|
|
8569
|
+
"aria-label": ui.follow ? "停止跟随最新工作" : "跟随最新工作",
|
|
8570
|
+
onClick: () => {
|
|
8571
|
+
if (!ui.follow) programmaticScrollRef.current = true;
|
|
8572
|
+
setUi(followRef.current.setFollow(!ui.follow));
|
|
8573
|
+
},
|
|
8574
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, { size: 12 }), ui.follow ? "自动跟随" : "浏览历史"]
|
|
8575
|
+
})]
|
|
8576
|
+
}),
|
|
8577
|
+
hideInsights === true ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SessionInsights, {
|
|
8578
|
+
value: insights,
|
|
8579
|
+
now,
|
|
8580
|
+
running: picture.running,
|
|
8581
|
+
waiting: picture.pendingCount > 0,
|
|
8582
|
+
onEvidence: locateEvidence
|
|
8583
|
+
}),
|
|
8584
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8585
|
+
className: Watcher_module_css_default.viewToolbar,
|
|
8586
|
+
"aria-label": "路径视图设置",
|
|
8587
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8588
|
+
className: Watcher_module_css_default.viewControl,
|
|
8589
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8590
|
+
className: Watcher_module_css_default.viewToolbarLabel,
|
|
8591
|
+
children: "组织"
|
|
8592
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8593
|
+
className: Watcher_module_css_default.viewMode,
|
|
8594
|
+
role: "group",
|
|
8595
|
+
"aria-label": "路径组织方式",
|
|
8596
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
8597
|
+
type: "button",
|
|
8598
|
+
"data-active": observationMode === "itemized" ? "" : void 0,
|
|
8599
|
+
"aria-pressed": observationMode === "itemized",
|
|
8600
|
+
title: "按时间顺序展示每个步骤和每次执行",
|
|
8601
|
+
onClick: () => chooseObservationMode("itemized"),
|
|
8602
|
+
children: "逐项"
|
|
8603
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
8604
|
+
type: "button",
|
|
8605
|
+
"data-active": observationMode === "grouped" ? "" : void 0,
|
|
8606
|
+
"aria-pressed": observationMode === "grouped",
|
|
8607
|
+
title: "按同一目标或完全相同的指令归类,展开仍可查看原始执行",
|
|
8608
|
+
onClick: () => chooseObservationMode("grouped"),
|
|
8609
|
+
children: "归类"
|
|
8610
|
+
})]
|
|
8611
|
+
})]
|
|
8612
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8613
|
+
className: Watcher_module_css_default.viewControl,
|
|
8614
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8615
|
+
className: Watcher_module_css_default.viewToolbarLabel,
|
|
8616
|
+
children: "层级"
|
|
8617
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8618
|
+
className: Watcher_module_css_default.viewMode,
|
|
8619
|
+
role: "group",
|
|
8620
|
+
"aria-label": "路径展开深度",
|
|
8621
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
8622
|
+
type: "button",
|
|
8623
|
+
"data-active": disclosure.depth === "overview" ? "" : void 0,
|
|
8624
|
+
"aria-pressed": disclosure.depth === "overview",
|
|
8625
|
+
title: "展开当前轮次,展示阶段概览;阶段内部保持收起",
|
|
8626
|
+
onClick: () => chooseDepth("overview"),
|
|
8627
|
+
children: "概览"
|
|
8628
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
8629
|
+
type: "button",
|
|
8630
|
+
"data-active": disclosure.depth === "detail" ? "" : void 0,
|
|
8631
|
+
"aria-pressed": disclosure.depth === "detail",
|
|
8632
|
+
title: "展开所有轮次、阶段、步骤、模型与推理记录",
|
|
8633
|
+
onClick: () => chooseDepth("detail"),
|
|
8634
|
+
children: "详情"
|
|
8635
|
+
})]
|
|
8636
|
+
})]
|
|
8637
|
+
})]
|
|
8638
|
+
}),
|
|
8639
|
+
!ui.follow && ui.unread > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
8640
|
+
type: "button",
|
|
8641
|
+
className: Watcher_module_css_default.unread,
|
|
8642
|
+
onClick: selected === void 0 ? backToLatest : () => closeInspector(true),
|
|
8643
|
+
children: [
|
|
8644
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, { size: 12 }),
|
|
8645
|
+
ui.unread,
|
|
8646
|
+
" 条新进展 · 查看最新"
|
|
8647
|
+
]
|
|
8648
|
+
}) : null,
|
|
8649
|
+
picture.nodes.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8650
|
+
className: Watcher_module_css_default.empty,
|
|
8651
|
+
children: [
|
|
8652
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8653
|
+
className: Watcher_module_css_default.emptyEye,
|
|
8654
|
+
"aria-hidden": "true",
|
|
8655
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconLivingEye, { size: 22 })
|
|
8656
|
+
}),
|
|
8657
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: "还没有工作记录" }),
|
|
8658
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "第一轮对话开始后,路径会从这里生长" })
|
|
8659
|
+
]
|
|
8660
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
8661
|
+
ref: railRef,
|
|
8662
|
+
className: Watcher_module_css_default.railViewport,
|
|
8663
|
+
onScroll: onRailScroll,
|
|
8664
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
8665
|
+
className: Watcher_module_css_default.turns,
|
|
8666
|
+
children: picture.turns.map((turn) => {
|
|
8667
|
+
const isLatestTurn = turn.turn === latestTurnNumber;
|
|
8668
|
+
const turnState = overviewStateOf(turn.status, isLatestTurn);
|
|
8669
|
+
const automaticDefaultOpen = turnNeedsDefaultDisclosure(turnState, isLatestTurn);
|
|
8670
|
+
const turnOpen = turnDisclosureOpen(disclosure, turn.turn, automaticDefaultOpen);
|
|
8671
|
+
const turnTitle = turn.turn === 0 ? "会话准备" : `对话轮次 ${turn.turn}`;
|
|
8672
|
+
const turnSummary = turnOverviewSummary(turn);
|
|
8673
|
+
const performance = performanceByTurn.get(turn.turn);
|
|
8674
|
+
const duration = turnDuration(turn, isLatestTurn && picture.running, now);
|
|
8675
|
+
const tokenSpeed = performance?.throughput.kind === "measured" ? `${formatTokensPerSecond(performance.throughput.tokensPerSecond)} tok/s` : null;
|
|
8676
|
+
const durationAria = duration === null ? "" : duration.kind === "exact" ? `,总耗时 ${duration.value}` : `,已记录 ${duration.value},开头未载入`;
|
|
8677
|
+
const secondaryPerformance = [duration?.kind === "partial" ? "开头未载入" : null, tokenSpeed].filter((value) => value !== null).join(" · ");
|
|
8678
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
8679
|
+
className: Watcher_module_css_default.turn,
|
|
8680
|
+
"aria-labelledby": `${domPrefix}-${turn.turn}`,
|
|
8681
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("header", {
|
|
8682
|
+
className: Watcher_module_css_default.turnHeader,
|
|
8683
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
|
|
8684
|
+
id: `${domPrefix}-${turn.turn}`,
|
|
8685
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
8686
|
+
type: "button",
|
|
8687
|
+
className: Watcher_module_css_default.turnToggle,
|
|
8688
|
+
"aria-expanded": turnOpen,
|
|
8689
|
+
"aria-controls": `${domPrefix}-body-${turn.turn}`,
|
|
8690
|
+
"aria-label": `${turnTitle},${OVERVIEW_STATE_LABEL[turnState]},${turnSummary}${durationAria}${tokenSpeed === null ? "" : `,生成速度 ${tokenSpeed}`},${turnOpen ? "收起轮次" : "展开轮次"}`,
|
|
8691
|
+
title: turnOpen ? "收起此轮次;新进展仍会继续更新" : "展开此轮次",
|
|
8692
|
+
onClick: () => {
|
|
8693
|
+
pinForDisclosure();
|
|
8694
|
+
setDisclosure((current) => toggleTurnDisclosure(current, turn.turn, automaticDefaultOpen));
|
|
8695
|
+
},
|
|
8696
|
+
children: [
|
|
8697
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutlineRegular, {
|
|
8698
|
+
size: 13,
|
|
8699
|
+
className: Watcher_module_css_default.turnChevron
|
|
8700
|
+
}),
|
|
8701
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
8702
|
+
className: Watcher_module_css_default.turnCopy,
|
|
8703
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
8704
|
+
className: Watcher_module_css_default.turnTitleLine,
|
|
8705
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8706
|
+
className: Watcher_module_css_default.turnTitle,
|
|
8707
|
+
children: turnTitle
|
|
8708
|
+
}), showOverviewTag(turnState) ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8709
|
+
className: Watcher_module_css_default.overviewTag,
|
|
8710
|
+
"data-state": turnState,
|
|
8711
|
+
children: OVERVIEW_STATE_LABEL[turnState]
|
|
8712
|
+
}) : null]
|
|
8713
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8714
|
+
className: Watcher_module_css_default.turnSummary,
|
|
8715
|
+
children: turnSummary
|
|
8716
|
+
})]
|
|
8717
|
+
}),
|
|
8718
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
8719
|
+
className: Watcher_module_css_default.turnPerformance,
|
|
8720
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8721
|
+
className: Watcher_module_css_default.turnDuration,
|
|
8722
|
+
children: duration === null ? OVERVIEW_STATE_LABEL[turnState] : duration.kind === "exact" ? `总 ${duration.value}` : `已记录 ${duration.value}`
|
|
8723
|
+
}), secondaryPerformance === "" ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8724
|
+
className: Watcher_module_css_default.turnSpeed,
|
|
8725
|
+
children: secondaryPerformance
|
|
8726
|
+
})]
|
|
8727
|
+
})
|
|
8728
|
+
]
|
|
8729
|
+
})
|
|
8730
|
+
})
|
|
8731
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
8732
|
+
id: `${domPrefix}-body-${turn.turn}`,
|
|
8733
|
+
className: Watcher_module_css_default.turnBody,
|
|
8734
|
+
hidden: !turnOpen,
|
|
8735
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8736
|
+
className: Watcher_module_css_default.groupRail,
|
|
8737
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8738
|
+
className: Watcher_module_css_default.railLine,
|
|
8739
|
+
"aria-hidden": "true"
|
|
8740
|
+
}), turn.groups.map((group) => {
|
|
8741
|
+
const isNow = group.id === lastGroupId;
|
|
8742
|
+
const selectedGroup = ui.selectedId === group.id;
|
|
8743
|
+
const phaseOpen = layerDisclosureOpen(disclosure, "phase", group.id);
|
|
8744
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PhaseOverview, {
|
|
8745
|
+
group,
|
|
8746
|
+
isNow,
|
|
8747
|
+
running: picture.running,
|
|
8748
|
+
now,
|
|
8749
|
+
selectedGroup,
|
|
8750
|
+
selectedItemId,
|
|
8751
|
+
observationMode,
|
|
8752
|
+
open: phaseOpen,
|
|
8753
|
+
disclosure,
|
|
8754
|
+
onToggle: () => {
|
|
8755
|
+
pinForDisclosure();
|
|
8756
|
+
setDisclosure((current) => toggleLayerDisclosure(current, "phase", group.id));
|
|
8757
|
+
},
|
|
8758
|
+
onToggleLayer: (layer, key) => {
|
|
8759
|
+
pinForDisclosure();
|
|
8760
|
+
setDisclosure((current) => toggleLayerDisclosure(current, layer, key));
|
|
8761
|
+
},
|
|
8762
|
+
onToggleReasoning: (key, modelKey) => {
|
|
8763
|
+
pinForDisclosure();
|
|
8764
|
+
setDisclosure((current) => {
|
|
8765
|
+
return toggleLayerDisclosure(layerDisclosureOpen(current, "reasoning", key) ? current : setLayerDisclosure(current, "model", modelKey, true), "reasoning", key);
|
|
8766
|
+
});
|
|
8767
|
+
},
|
|
8768
|
+
onSelectItem: (item) => selectItem(group, item)
|
|
8769
|
+
}, group.id);
|
|
8770
|
+
})]
|
|
8771
|
+
})
|
|
8772
|
+
})]
|
|
8773
|
+
}, turn.turn);
|
|
8774
|
+
})
|
|
8775
|
+
})
|
|
8776
|
+
})
|
|
8777
|
+
]
|
|
8778
|
+
})] });
|
|
8779
|
+
}
|
|
8780
|
+
//#endregion
|
|
8781
|
+
//#region src/client/model-trace-definition.ts
|
|
8782
|
+
const modelTraceDefinition = {
|
|
8783
|
+
kind: "dsh-watcher-model-stage",
|
|
8695
8784
|
match: (event) => {
|
|
8696
8785
|
const first = modelTraceEventsOf(event)[0];
|
|
8697
8786
|
if (first === void 0) return null;
|
|
@@ -8731,6 +8820,136 @@ window.__ModuleLoader__.load({
|
|
|
8731
8820
|
ctx.uiConversation.events.register(modelTraceDefinition);
|
|
8732
8821
|
}
|
|
8733
8822
|
//#endregion
|
|
8823
|
+
//#region src/client/SidebarTab.tsx
|
|
8824
|
+
/** Read the optional service off a context without importing the peer. */
|
|
8825
|
+
function betterSidebarServiceOf(ctx) {
|
|
8826
|
+
const service = ctx.betterSidebar;
|
|
8827
|
+
return typeof service === "object" && service !== null ? service : void 0;
|
|
8828
|
+
}
|
|
8829
|
+
/** The Watcher tab descriptor registered into dsh-better-sidebar. */
|
|
8830
|
+
function watcherSidebarDescriptor() {
|
|
8831
|
+
return {
|
|
8832
|
+
id: "dsh-watcher:picture",
|
|
8833
|
+
title: "Watcher",
|
|
8834
|
+
single: true,
|
|
8835
|
+
order: 80,
|
|
8836
|
+
component: ({ ctx, scope, visible }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(WatcherSidebarTab, {
|
|
8837
|
+
ctx,
|
|
8838
|
+
sessionId: scope.sessionId,
|
|
8839
|
+
visible
|
|
8840
|
+
})
|
|
8841
|
+
};
|
|
8842
|
+
}
|
|
8843
|
+
function subscribeNone() {
|
|
8844
|
+
return () => {};
|
|
8845
|
+
}
|
|
8846
|
+
function getSnapshotUndefined() {}
|
|
8847
|
+
/** Subscribe to one snapshot source; tolerate an absent source at rest. */
|
|
8848
|
+
function useObservableValue(source) {
|
|
8849
|
+
const subscribe = (0, react.useMemo)(() => source === void 0 ? void 0 : (listener) => source.subscribe(listener), [source]);
|
|
8850
|
+
const getSnapshot = (0, react.useMemo)(() => source === void 0 ? void 0 : () => source.getSnapshot(), [source]);
|
|
8851
|
+
return (0, react.useSyncExternalStore)(subscribe ?? subscribeNone, getSnapshot ?? getSnapshotUndefined, getSnapshotUndefined);
|
|
8852
|
+
}
|
|
8853
|
+
/**
|
|
8854
|
+
* Resolve the Watcher's data sources for one Session through the same doors the
|
|
8855
|
+
* session-header overlay uses: `sessions.binding` for the Session face and
|
|
8856
|
+
* `uiConversation.binding` for the Conversation snapshot. Returns undefined
|
|
8857
|
+
* while the Session has no retained binding (the tab shows its waiting state).
|
|
8858
|
+
*/
|
|
8859
|
+
function resolveSidebarSources(ctx, sessionId) {
|
|
8860
|
+
const face = ctx.sessions?.binding?.(sessionId)?.session;
|
|
8861
|
+
if (face === void 0) return void 0;
|
|
8862
|
+
try {
|
|
8863
|
+
return {
|
|
8864
|
+
conversation: ctx.uiConversation.binding(sessionId).snapshot,
|
|
8865
|
+
session: face,
|
|
8866
|
+
status: ctx.uiSession.sessionStatus,
|
|
8867
|
+
stats: face.projections?.faceOf?.("sessionStats"),
|
|
8868
|
+
face
|
|
8869
|
+
};
|
|
8870
|
+
} catch {
|
|
8871
|
+
return;
|
|
8872
|
+
}
|
|
8873
|
+
}
|
|
8874
|
+
function waitingRoot() {
|
|
8875
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
8876
|
+
className: Watcher_module_css_default.sidebarHost,
|
|
8877
|
+
"data-watcher-sidebar": "waiting",
|
|
8878
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8879
|
+
role: "status",
|
|
8880
|
+
children: "Watcher 正在等待会话记录…"
|
|
8881
|
+
})
|
|
8882
|
+
});
|
|
8883
|
+
}
|
|
8884
|
+
/**
|
|
8885
|
+
* The Better Sidebar tab body: the session-header overlay's work picture,
|
|
8886
|
+
* ported onto `scope.sessionId` without the portal, the trigger, or the drag
|
|
8887
|
+
* frame. Reads the same Session/Conversation stores through their binding
|
|
8888
|
+
* faces; the cost/performance HUD and whole-history paging stay explicit (and
|
|
8889
|
+
* `visible: false` never starts a load — only the button does).
|
|
8890
|
+
*/
|
|
8891
|
+
function WatcherSidebarTab({ ctx, sessionId, visible }) {
|
|
8892
|
+
const sources = (0, react.useMemo)(() => resolveSidebarSources(ctx, sessionId), [ctx, sessionId]);
|
|
8893
|
+
const conversation = useObservableValue(sources?.conversation);
|
|
8894
|
+
const sessionSnapshot = useObservableValue(sources?.session);
|
|
8895
|
+
const statusMap = useObservableValue(sources?.status);
|
|
8896
|
+
const stats = useObservableValue(sources?.stats);
|
|
8897
|
+
const pendingInteraction = statusMap?.get(sessionId)?.pendingInteraction;
|
|
8898
|
+
const chat = conversation?.views?.get("chat");
|
|
8899
|
+
const snapshot = (0, react.useMemo)(() => {
|
|
8900
|
+
if (conversation === void 0 || chat === void 0 || sessionSnapshot === void 0) return void 0;
|
|
8901
|
+
return {
|
|
8902
|
+
views: conversation.views,
|
|
8903
|
+
chat,
|
|
8904
|
+
nodes: chat.legacy.nodes,
|
|
8905
|
+
turnTimings: chat.legacy.turnTimings,
|
|
8906
|
+
runningCalls: chat.legacy.runningCalls,
|
|
8907
|
+
pending: pendingInteraction === void 0 ? [] : [pendingInteraction],
|
|
8908
|
+
blank: sessionSnapshot.blank,
|
|
8909
|
+
running: sessionSnapshot.running,
|
|
8910
|
+
hasMore: sessionSnapshot.hasMore
|
|
8911
|
+
};
|
|
8912
|
+
}, [
|
|
8913
|
+
conversation,
|
|
8914
|
+
chat,
|
|
8915
|
+
pendingInteraction,
|
|
8916
|
+
sessionSnapshot
|
|
8917
|
+
]);
|
|
8918
|
+
if (snapshot === void 0) return waitingRoot();
|
|
8919
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(WatcherSidebarReady, {
|
|
8920
|
+
ctx,
|
|
8921
|
+
sessionId,
|
|
8922
|
+
visible,
|
|
8923
|
+
snapshot,
|
|
8924
|
+
stats,
|
|
8925
|
+
face: sources?.face
|
|
8926
|
+
});
|
|
8927
|
+
}
|
|
8928
|
+
function WatcherSidebarReady({ ctx, sessionId, visible, snapshot, stats, face }) {
|
|
8929
|
+
const { picture, performanceByTurn } = useObservedPicture(sessionId, snapshot);
|
|
8930
|
+
const loadAllHistory = (0, react.useMemo)(() => face === void 0 ? void 0 : createCompleteHistoryLoader(ctx, sessionId, face), [
|
|
8931
|
+
ctx,
|
|
8932
|
+
sessionId,
|
|
8933
|
+
face
|
|
8934
|
+
]);
|
|
8935
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
8936
|
+
className: Watcher_module_css_default.sidebarHost,
|
|
8937
|
+
"data-watcher-sidebar": "picture",
|
|
8938
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(WorkPicturePanel, {
|
|
8939
|
+
sessionId,
|
|
8940
|
+
picture,
|
|
8941
|
+
performanceByTurn,
|
|
8942
|
+
hasMore: snapshot.hasMore,
|
|
8943
|
+
stats,
|
|
8944
|
+
insights: void 0,
|
|
8945
|
+
hideInsights: true,
|
|
8946
|
+
loadAllHistory,
|
|
8947
|
+
live: visible,
|
|
8948
|
+
domIdPrefix: "watcher-side-turn"
|
|
8949
|
+
})
|
|
8950
|
+
});
|
|
8951
|
+
}
|
|
8952
|
+
//#endregion
|
|
8734
8953
|
//#region src/client/index.tsx
|
|
8735
8954
|
const name = "dsh-watcher-client";
|
|
8736
8955
|
const inject = [
|
|
@@ -8761,24 +8980,14 @@ window.__ModuleLoader__.load({
|
|
|
8761
8980
|
inject: (sessionId) => {
|
|
8762
8981
|
const session = ctx.sessions.binding?.(sessionId)?.session;
|
|
8763
8982
|
if (session === void 0) throw new Error(`dsh-watcher: session "${sessionId}" is unavailable`);
|
|
8764
|
-
return { loadAllHistory: (signal) =>
|
|
8765
|
-
signal,
|
|
8766
|
-
loadOlder: () => session.loadOlder(),
|
|
8767
|
-
read: () => {
|
|
8768
|
-
const sessionSnapshot = session.getSnapshot();
|
|
8769
|
-
const chat = ctx.uiConversation.binding(sessionId).snapshot.getSnapshot().views.get("chat");
|
|
8770
|
-
if (chat === void 0) throw new Error("dsh-watcher: Chat conversation target is unavailable");
|
|
8771
|
-
const firstNode = chat.legacy.nodes[0];
|
|
8772
|
-
const firstTurn = chat.timeline.turnOrder[0];
|
|
8773
|
-
return {
|
|
8774
|
-
hasMore: sessionSnapshot.hasMore,
|
|
8775
|
-
loadingOlder: sessionSnapshot.loadingOlder,
|
|
8776
|
-
headKey: `${firstTurn ?? "none"}:${firstNode?.seq ?? "none"}:${chat.legacy.nodes.length}`
|
|
8777
|
-
};
|
|
8778
|
-
}
|
|
8779
|
-
}) };
|
|
8983
|
+
return { loadAllHistory: (signal) => createCompleteHistoryLoader(ctx, sessionId, session)(signal) };
|
|
8780
8984
|
}
|
|
8781
8985
|
}, Watcher));
|
|
8986
|
+
ctx.inject(["betterSidebar"], (c) => {
|
|
8987
|
+
const { registerTab } = betterSidebarServiceOf(c) ?? {};
|
|
8988
|
+
if (typeof registerTab !== "function") return;
|
|
8989
|
+
c.effect(() => registerTab(watcherSidebarDescriptor()));
|
|
8990
|
+
});
|
|
8782
8991
|
}
|
|
8783
8992
|
//#endregion
|
|
8784
8993
|
exports.apply = apply;
|