cc-viewer 1.9.8 → 1.9.9
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/cli.js +1 -0
- package/dist/assets/{App-D2zrtS4P.js → App-CLteNB83.js} +2 -2
- package/dist/assets/App-D06hBGII.css +1 -0
- package/dist/assets/{MdxEditorPanel-BnbZpgDp.js → MdxEditorPanel-BJVD_bcU.js} +1 -1
- package/dist/assets/{Mobile-CU-g7cTn.js → Mobile-CJCQf3MQ.js} +1 -1
- package/dist/assets/{ProxyStatsModal-CavWQfBA.js → ProxyStatsModal-B5ccoOPy.js} +1 -1
- package/dist/assets/index-CqX5TkEL.js +2 -0
- package/dist/assets/seqResourceLoaders-7lsgbvGa.js +2 -0
- package/dist/assets/seqResourceLoaders-C0cU2e1o.css +41 -0
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/server/lib/sdk-manager.js +101 -14
- package/server/server.js +43 -3
- package/dist/assets/App-DuDeDOuX.css +0 -1
- package/dist/assets/index-D2maXxkC.js +0 -2
- package/dist/assets/seqResourceLoaders-DZF6ofB7.css +0 -41
- package/dist/assets/seqResourceLoaders-jOSz1x7F.js +0 -2
|
@@ -327,6 +327,13 @@ function _createSession(key, cwd) {
|
|
|
327
327
|
let _sessionId = null;
|
|
328
328
|
let _initAnnouncedSid = ''; // sessionId whose slash-command surface was already announced (reset on full reset)
|
|
329
329
|
let _lastInitSnapshot = null; // last sdk-init payload for WS reconnect replay
|
|
330
|
+
// Last sdk-skills frame (supportedCommands() result) for WS reconnect replay, and the
|
|
331
|
+
// resident query it was loaded from (dedupes the once-per-query-generation fetch).
|
|
332
|
+
let _lastSkillsSnapshot = null;
|
|
333
|
+
let _skillsLoadedQuery = null;
|
|
334
|
+
// init 帧的 skills 白名单(name / plugin:skill / :suffix 形式),用于把 supportedCommands()
|
|
335
|
+
// 的全量命令面收敛为纯 skill 面;null = 该 init 帧未提供(不做过滤,保守放行)。
|
|
336
|
+
let _initSkills = null;
|
|
330
337
|
// Last announced session state ('idle' | 'running' | 'requires_action' | null) — the
|
|
331
338
|
// turn-level busy truth for the conversation spinner. Sources, most authoritative
|
|
332
339
|
// first: CLI-emitted session_state_changed (gated behind CLAUDE_CODE_EMIT_SESSION_STATE_EVENTS,
|
|
@@ -690,6 +697,8 @@ function _createSession(key, cwd) {
|
|
|
690
697
|
const inputQueue = _inputQueue;
|
|
691
698
|
_activeQuery = null;
|
|
692
699
|
_inputQueue = null;
|
|
700
|
+
_skillsLoadedQuery = null; // next resident query re-pulls supportedCommands() on init
|
|
701
|
+
_initSkills = null; // re-captured from the next init frame
|
|
693
702
|
_clearGraceTimer();
|
|
694
703
|
_clearTurnWatchdog();
|
|
695
704
|
_lateResultTombstones = 0;
|
|
@@ -748,20 +757,33 @@ function _createSession(key, cwd) {
|
|
|
748
757
|
// push/result fallbacks keep the spinner correct at result granularity.
|
|
749
758
|
if (msg.subtype === 'session_state_changed') {
|
|
750
759
|
_announceSessionState(msg.state);
|
|
751
|
-
} else if (msg.subtype === 'init'
|
|
752
|
-
&& Array.isArray(msg.slash_commands) && msg.slash_commands.length > 0
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
760
|
+
} else if (msg.subtype === 'init') {
|
|
761
|
+
if (_broadcastWs && Array.isArray(msg.slash_commands) && msg.slash_commands.length > 0
|
|
762
|
+
&& msg.session_id !== _initAnnouncedSid) {
|
|
763
|
+
_initAnnouncedSid = msg.session_id;
|
|
764
|
+
_lastInitSnapshot = {
|
|
765
|
+
type: 'sdk-init',
|
|
766
|
+
sessionId: msg.session_id,
|
|
767
|
+
model: msg.model,
|
|
768
|
+
slashCommands: msg.slash_commands,
|
|
769
|
+
tools: msg.tools,
|
|
770
|
+
cwd: _cwd,
|
|
771
|
+
instanceKey,
|
|
772
|
+
};
|
|
773
|
+
_broadcastWs(_lastInitSnapshot);
|
|
774
|
+
}
|
|
775
|
+
// Skill menu surface: pull the full supportedCommands() (name + description +
|
|
776
|
+
// argumentHint) once per resident-query generation. Done even when slash_commands
|
|
777
|
+
// is empty/absent — a session with no TUI commands can still expose skills.
|
|
778
|
+
// supportedCommands() returns the whole command surface (incl. /clear, /compact,
|
|
779
|
+
// /model, /usage), so keep ONLY real skills: intersect with the init frame's
|
|
780
|
+
// `skills` allowlist (name / plugin:skill / :suffix forms) to honour the
|
|
781
|
+
// "slash menu indexes skills only" decision.
|
|
782
|
+
if (_broadcastWs && _activeQuery && _skillsLoadedQuery !== _activeQuery) {
|
|
783
|
+
_skillsLoadedQuery = _activeQuery;
|
|
784
|
+
_initSkills = Array.isArray(msg.skills) ? msg.skills : null;
|
|
785
|
+
_loadSupportedCommands();
|
|
786
|
+
}
|
|
765
787
|
} else if (msg.subtype === 'compact_boundary' && _broadcastWs) {
|
|
766
788
|
const meta = msg.compact_metadata;
|
|
767
789
|
_broadcastWs({
|
|
@@ -953,6 +975,58 @@ function _createSession(key, cwd) {
|
|
|
953
975
|
}
|
|
954
976
|
}
|
|
955
977
|
|
|
978
|
+
/**
|
|
979
|
+
* Pull the SDK's supportedCommands() (skill surface: name + description + argumentHint)
|
|
980
|
+
* once per resident-query generation and broadcast it as an `sdk-skills` frame, retained
|
|
981
|
+
* for WS reconnect replay. Fire-and-forget from the init branch — never awaited. Bounded
|
|
982
|
+
* by CTX_USAGE_TIMEOUT_MS; on timeout/rejection/stale generation it reports and broadcasts
|
|
983
|
+
* nothing (clients fall back to /api/skills). Raw commands are passed through; the web
|
|
984
|
+
* client's normalizeSdkCommands does the safe-name filtering.
|
|
985
|
+
*/
|
|
986
|
+
function _loadSupportedCommands() {
|
|
987
|
+
const q = _activeQuery;
|
|
988
|
+
if (!q || typeof q.supportedCommands !== 'function') return;
|
|
989
|
+
let timeoutId;
|
|
990
|
+
const timeout = new Promise((_, reject) => {
|
|
991
|
+
timeoutId = setTimeout(() => reject(new Error('supportedCommands timeout')), CTX_USAGE_TIMEOUT_MS);
|
|
992
|
+
if (timeoutId.unref) timeoutId.unref();
|
|
993
|
+
});
|
|
994
|
+
Promise.race([Promise.resolve().then(() => q.supportedCommands()), timeout]).then((commands) => {
|
|
995
|
+
if (_activeQuery !== q) return; // stale generation (session switch/death) — drop
|
|
996
|
+
// Keep only real skills: supportedCommands() also returns TUI built-ins (/clear,
|
|
997
|
+
// /compact, /model, /usage). When the init frame supplied a skills allowlist, filter
|
|
998
|
+
// by it (name, plugin:skill, or :suffix). No allowlist → pass through (conservative).
|
|
999
|
+
let filtered = Array.isArray(commands) ? commands : [];
|
|
1000
|
+
if (Array.isArray(_initSkills) && _initSkills.length > 0) {
|
|
1001
|
+
const allow = new Set();
|
|
1002
|
+
for (const s of _initSkills) {
|
|
1003
|
+
if (typeof s !== 'string' || !s) continue;
|
|
1004
|
+
allow.add(s); // exact (name or plugin:skill)
|
|
1005
|
+
const idx = s.lastIndexOf(':');
|
|
1006
|
+
if (idx >= 0) allow.add(s.slice(idx + 1)); // :suffix form → bare name
|
|
1007
|
+
}
|
|
1008
|
+
filtered = filtered.filter(c => c && (allow.has(c.name)
|
|
1009
|
+
|| (typeof c.name === 'string' && allow.has(c.name.replace(/^plugin.*:/, '')))));
|
|
1010
|
+
}
|
|
1011
|
+
_lastSkillsSnapshot = {
|
|
1012
|
+
type: 'sdk-skills',
|
|
1013
|
+
sessionId: _sessionId || null,
|
|
1014
|
+
ts: Date.now(),
|
|
1015
|
+
cwd: _cwd,
|
|
1016
|
+
instanceKey,
|
|
1017
|
+
commands: filtered,
|
|
1018
|
+
};
|
|
1019
|
+
if (_broadcastWs) {
|
|
1020
|
+
try { _broadcastWs(_lastSkillsSnapshot); }
|
|
1021
|
+
catch (err) { reportSwallowed('sdk-manager.skills-broadcast', err); }
|
|
1022
|
+
}
|
|
1023
|
+
}).catch((err) => {
|
|
1024
|
+
reportSwallowed('sdk-manager.supported-commands', err);
|
|
1025
|
+
}).finally(() => {
|
|
1026
|
+
if (timeoutId) clearTimeout(timeoutId);
|
|
1027
|
+
});
|
|
1028
|
+
}
|
|
1029
|
+
|
|
956
1030
|
/**
|
|
957
1031
|
* Collect an MCP-server-status snapshot via the Query control surface (`mcp_status`).
|
|
958
1032
|
* Returns { ok:true, snapshot } | { ok:false, reason:'session-inactive'|'control-failed' }.
|
|
@@ -1464,6 +1538,7 @@ function _createSession(key, cwd) {
|
|
|
1464
1538
|
_launchResume = null;
|
|
1465
1539
|
_initAnnouncedSid = '';
|
|
1466
1540
|
_lastInitSnapshot = null; // don't replay the OLD session's sdk-init to the new one
|
|
1541
|
+
_lastSkillsSnapshot = null; // same for the skill surface
|
|
1467
1542
|
_lastSessionState = null; // same for the session-state snapshot — new session starts idle
|
|
1468
1543
|
_clearContextUsage('session-switched');
|
|
1469
1544
|
_clearMcpStatus('session-switched');
|
|
@@ -1485,6 +1560,7 @@ function _createSession(key, cwd) {
|
|
|
1485
1560
|
_turnInFlight = false;
|
|
1486
1561
|
_initAnnouncedSid = '';
|
|
1487
1562
|
_lastInitSnapshot = null;
|
|
1563
|
+
_lastSkillsSnapshot = null;
|
|
1488
1564
|
// Tell clients BEFORE nulling the snapshot: a re-init/launch mid-turn would
|
|
1489
1565
|
// otherwise leave the spinner lit with no frame ever clearing it (the new
|
|
1490
1566
|
// session starts idle and the state-change guard would swallow the first
|
|
@@ -1546,6 +1622,7 @@ function _createSession(key, cwd) {
|
|
|
1546
1622
|
},
|
|
1547
1623
|
getContextUsageSnapshot: () => _lastContextUsage,
|
|
1548
1624
|
getMcpStatusSnapshot: () => _lastMcpStatus,
|
|
1625
|
+
getSkillsSnapshot: () => _lastSkillsSnapshot,
|
|
1549
1626
|
fetchContextUsage: async () => {
|
|
1550
1627
|
// On-demand fetch for the HTTP route: refresh the snapshot, broadcast to all clients,
|
|
1551
1628
|
// then reply. Unlike _refreshContextUsage this bypasses the in-flight gate (an explicit
|
|
@@ -1900,6 +1977,16 @@ export function getSdkInitSnapshot(anchor) {
|
|
|
1900
1977
|
return sess ? sess.getSdkInitSnapshot() : null;
|
|
1901
1978
|
}
|
|
1902
1979
|
|
|
1980
|
+
/**
|
|
1981
|
+
* Last sdk-skills frame (supportedCommands() result) for WS reconnect replay. Null until
|
|
1982
|
+
* the first init-driven pull resolves; an absent frame leaves the client on its /api/skills
|
|
1983
|
+
* fallback. No anchor → active session.
|
|
1984
|
+
*/
|
|
1985
|
+
export function getSkillsSnapshot(anchor) {
|
|
1986
|
+
const sess = anchor ? _sessionForAnchor(anchor) : _active();
|
|
1987
|
+
return sess ? sess.getSkillsSnapshot() : null;
|
|
1988
|
+
}
|
|
1989
|
+
|
|
1903
1990
|
/**
|
|
1904
1991
|
* Last announced session-state frame for WS reconnect replay (sdk-init snapshot
|
|
1905
1992
|
* parity). Null until the first state transition — a fresh session is idle, and an
|
package/server/server.js
CHANGED
|
@@ -1554,6 +1554,7 @@ async function setupTerminalWebSocket(httpServer) {
|
|
|
1554
1554
|
// unstamped (receiving all workspaces' frames).
|
|
1555
1555
|
wss.handleUpgrade(req, socket, head, (ws) => {
|
|
1556
1556
|
try { ws._ccvViewProject = viewProject || null; } catch {}
|
|
1557
|
+
try { ws._ccvViewInstance = viewInstance || null; } catch {}
|
|
1557
1558
|
wss.emit('connection', ws, req);
|
|
1558
1559
|
});
|
|
1559
1560
|
} else if (pathname === '/ws/terminal-scratch') {
|
|
@@ -1859,11 +1860,13 @@ async function setupTerminalWebSocket(httpServer) {
|
|
|
1859
1860
|
// workspace's approval/spinner/queue would pop into the foreground. Filter each
|
|
1860
1861
|
// snapshot by this connection's `_ccvViewProject` (bound view / no ?project= → all).
|
|
1861
1862
|
const _viewProj = ws._ccvViewProject || null;
|
|
1862
|
-
const _base = (c) => (typeof c === 'string' && c) ? c.replace(/\\/g, '/').split('/').filter(Boolean).pop() : null;
|
|
1863
1863
|
const _sdkFrameForView = (frame) => {
|
|
1864
1864
|
if (!frame || typeof frame !== 'object') return true; // no cwd → view-agnostic, replay
|
|
1865
1865
|
if (!_viewProj) return true; // bound view → all workspaces
|
|
1866
|
-
|
|
1866
|
+
// The view stamp is a SANITIZED project key (projectKeyForCwd), so compare against the
|
|
1867
|
+
// frame's cwd sanitized the same way — a raw basename would silently drop legit frames
|
|
1868
|
+
// for space/CJK workspace names.
|
|
1869
|
+
const fproj = (typeof frame.cwd === 'string' && frame.cwd) ? (projectKeyForCwd(frame.cwd) || null) : null;
|
|
1867
1870
|
return !fproj || fproj === _viewProj; // no-cwd frame → replay; else must match
|
|
1868
1871
|
};
|
|
1869
1872
|
|
|
@@ -1892,6 +1895,20 @@ async function setupTerminalWebSocket(httpServer) {
|
|
|
1892
1895
|
}
|
|
1893
1896
|
}
|
|
1894
1897
|
|
|
1898
|
+
// Replay the sdk-skills surface (supportedCommands) so a refreshed page repopulates
|
|
1899
|
+
// the `/` skill menu without a fresh init. Anchor by view instance (exact) when stamped,
|
|
1900
|
+
// else by view project; an ambiguous same-name project resolves to null → no frame, and
|
|
1901
|
+
// the client stays on its /api/skills fallback.
|
|
1902
|
+
if (isSdkMode && _sdkGetSkillsSnapshot) {
|
|
1903
|
+
const anchor = ws._ccvViewInstance
|
|
1904
|
+
? { instanceKey: ws._ccvViewInstance }
|
|
1905
|
+
: (_viewProj ? { project: _viewProj } : null);
|
|
1906
|
+
const skillsSnap = anchor ? _sdkGetSkillsSnapshot(anchor) : _sdkGetSkillsSnapshot();
|
|
1907
|
+
if (skillsSnap && _sdkFrameForView(skillsSnap)) {
|
|
1908
|
+
try { ws.send(JSON.stringify(skillsSnap)); } catch {}
|
|
1909
|
+
}
|
|
1910
|
+
}
|
|
1911
|
+
|
|
1895
1912
|
// Replay the last sdk-session-state frame so a page refreshed mid-turn restores
|
|
1896
1913
|
// the spinner immediately (sdk-init snapshot parity; null → no frame, client
|
|
1897
1914
|
// stays at its idle default).
|
|
@@ -2064,7 +2081,28 @@ async function setupTerminalWebSocket(httpServer) {
|
|
|
2064
2081
|
if (msg.type === 'attach') {
|
|
2065
2082
|
try { ws._ccvViewProject = (typeof msg.project === 'string' && msg.project) || null; } catch {}
|
|
2066
2083
|
try { ws._ccvViewInstance = (typeof msg.instanceKey === 'string' && msg.instanceKey) || null; } catch {}
|
|
2067
|
-
if (isSdkMode)
|
|
2084
|
+
if (isSdkMode) {
|
|
2085
|
+
// Re-attach switched the viewed workspace — re-send that view's sdk-skills
|
|
2086
|
+
// surface so the `/` menu isn't stuck on the /api/skills fallback until the next
|
|
2087
|
+
// session init. Anchor by the JUST-stamped view instance (exact) else project;
|
|
2088
|
+
// ambiguous same-name project yields no frame and the client keeps its fallback.
|
|
2089
|
+
// (Must live here, before the return: the PTY attach branch below is unreachable
|
|
2090
|
+
// in SDK mode, and _sdkGetSkillsSnapshot is only registered under runSdkMode.)
|
|
2091
|
+
if (_sdkGetSkillsSnapshot) {
|
|
2092
|
+
const anchor = ws._ccvViewInstance
|
|
2093
|
+
? { instanceKey: ws._ccvViewInstance }
|
|
2094
|
+
: (ws._ccvViewProject ? { project: ws._ccvViewProject } : null);
|
|
2095
|
+
const skillsSnap = anchor ? _sdkGetSkillsSnapshot(anchor) : _sdkGetSkillsSnapshot();
|
|
2096
|
+
if (skillsSnap) {
|
|
2097
|
+
// Filter against the freshly-stamped view (NOT the connection-time _viewProj).
|
|
2098
|
+
const fp = (typeof skillsSnap.cwd === 'string' && skillsSnap.cwd) ? (projectKeyForCwd(skillsSnap.cwd) || null) : null;
|
|
2099
|
+
if (!fp || !ws._ccvViewProject || fp === ws._ccvViewProject) {
|
|
2100
|
+
try { ws.send(JSON.stringify(skillsSnap)); } catch { }
|
|
2101
|
+
}
|
|
2102
|
+
}
|
|
2103
|
+
}
|
|
2104
|
+
return;
|
|
2105
|
+
}
|
|
2068
2106
|
} else if (isSdkMode && (msg.type === 'input' || msg.type === 'input-sequential'
|
|
2069
2107
|
|| msg.type === 'resync-request' || msg.type === 'resize')) {
|
|
2070
2108
|
return;
|
|
@@ -3307,6 +3345,8 @@ export function setSdkGetPendingApprovals(fn) { _sdkGetPendingApprovals = fn; }
|
|
|
3307
3345
|
/** Reference to sdk-manager's getSdkInitSnapshot (set by cli.js after import). */
|
|
3308
3346
|
let _sdkGetInitSnapshot = null;
|
|
3309
3347
|
export function setSdkGetInitSnapshot(fn) { _sdkGetInitSnapshot = fn; }
|
|
3348
|
+
let _sdkGetSkillsSnapshot = null;
|
|
3349
|
+
export function setSdkGetSkillsSnapshot(fn) { _sdkGetSkillsSnapshot = fn; }
|
|
3310
3350
|
|
|
3311
3351
|
/** Reference to sdk-manager's getContextUsageSnapshot (set by cli.js after import). */
|
|
3312
3352
|
let _sdkGetContextUsageSnapshot = null;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
._liveTag_8g4c3_3{position:relative;display:inline-flex;align-items:center;justify-content:flex-start;border-radius:999px;border:1px solid;border-color:var(--ctx-color);color:var(--ctx-color);padding:0 10px;height:100%;font-size:12px;line-height:1;overflow:hidden;transition:border-color .3s,color .3s;white-space:nowrap;background:var(--bg-base-pure)}._liveTagFill_8g4c3_23{position:absolute;left:0;top:0;bottom:0;width:var(--ctx-percent, 0);background-color:var(--ctx-color);background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.25) 0,rgba(255,255,255,.25) 2px,transparent 2px,transparent 7px);opacity:.35;transition:width .5s ease,background-color .3s;pointer-events:none}._liveTagContent_8g4c3_44{position:relative;z-index:1;display:inline-flex;align-items:center}._liveTagHistory_8g4c3_52{background:var(--bg-surface);border-color:var(--border-light);color:var(--text-primary)}._liveTagText_8g4c3_59{margin-left:4px;font-variant-numeric:tabular-nums}._cachePopoverPlaceholder_8g4c3_65{min-width:300px}._modeRow_fpcoi_1{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px}._modeLeft_fpcoi_9{display:flex;align-items:center;gap:10px}._modeRight_fpcoi_15{display:flex;align-items:center;gap:8px}._overrideWarn_fpcoi_22{font-size:12px;color:var(--color-warning, #d4810a)}._previewLabel_fpcoi_27{font-size:13px;color:var(--text-secondary, #888)}._previewBox_fpcoi_36{border:1px solid var(--border-primary);border-radius:8px;background:transparent;padding:12px 14px;min-height:320px;max-height:60vh;overflow:auto}._previewEmpty_fpcoi_46{font-size:13px;color:var(--text-secondary, #888)}._hint_fpcoi_51{margin-top:10px;font-size:12px;color:var(--text-secondary, #888);line-height:1.6}._dirLine_fpcoi_58{word-break:break-all}._warn_fpcoi_62{margin-top:10px;font-size:12px;color:var(--color-warning, #d4810a)}._tabRow_fpcoi_71{display:flex;align-items:flex-end;gap:8px;padding:0 4px;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none}._tabRow_fpcoi_71::-webkit-scrollbar{display:none}._tabBtn_fpcoi_90{display:inline-flex;align-items:center;gap:5px;padding:9px 14px;font-size:12px;line-height:1.6;border:1px solid transparent;border-radius:14px;background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s;-webkit-user-select:none;user-select:none;white-space:nowrap;flex-shrink:0}._tabBtn_fpcoi_90:hover{color:var(--color-primary)}._tabBtn_fpcoi_90:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}._tabBtn_fpcoi_90._tabActive_fpcoi_118{background:var(--bg-container);color:var(--color-primary);border-color:var(--border-primary);border-bottom-color:var(--bg-container);border-radius:10px 10px 0 0;font-weight:500;margin-bottom:-1px;position:relative;z-index:1}._tabRow_fpcoi_71>._tabBtn_fpcoi_90._tabActive_fpcoi_118,._tabWrap_fpcoi_132:has(>._tabBtn_fpcoi_90._tabActive_fpcoi_118){position:sticky;left:0;right:0;z-index:2}[data-theme=light] ._tabBtn_fpcoi_90._tabActive_fpcoi_118{box-shadow:0 -3px 8px #0000000f}._editorBox_fpcoi_33{background:var(--bg-container);border-radius:8px;overflow:hidden;padding:4px;position:relative}[data-theme=light] ._editorBox_fpcoi_33{box-shadow:0 3px 8px #00000014}._editorBox_fpcoi_33 .ant-input{background:transparent;border:1px solid var(--border-primary);border-radius:8px;box-shadow:none;padding:12px 14px;font-size:12px;line-height:1.5;color:var(--text-primary)}._editorBox_fpcoi_33 .ant-input:hover{border-color:var(--border-primary);background:transparent}._editorBox_fpcoi_33 .ant-input:focus{border-color:var(--color-primary-pale);box-shadow:none}._editorBox_fpcoi_33 .ant-input[disabled]{color:var(--text-muted);background:transparent}._tabWrap_fpcoi_132{position:relative;display:inline-flex;align-items:center;flex-shrink:0}._tabTitle_fpcoi_199{white-space:nowrap}._tabDelete_fpcoi_204{position:absolute;top:2px;inset-inline-end:4px;width:14px;height:14px;border-radius:50%;background:var(--bg-elevated);border:1px solid var(--border-primary);color:var(--text-secondary);font-size:10px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity .15s;z-index:2}._tabWrap_fpcoi_132:hover ._tabDelete_fpcoi_204{opacity:1}._tabDelete_fpcoi_204:hover{color:var(--color-error, #d4380d);border-color:var(--color-error, #d4380d)}@media(max-width:768px){._tabDelete_fpcoi_204{opacity:1}}._addBtn_fpcoi_237{display:inline-flex;align-items:center;align-self:center;gap:5px;padding:6px 14px;font-size:12px;line-height:1.6;margin-left:4px;margin-bottom:2px;border:none;border-radius:14px;background:transparent;color:var(--text-muted);cursor:pointer;transition:background .15s,color .15s;-webkit-user-select:none;user-select:none;white-space:nowrap;flex-shrink:0}._addBtn_fpcoi_237:hover{color:var(--color-primary);background:var(--bg-surface)}._addBtn_fpcoi_237:disabled{cursor:not-allowed;opacity:.5}[data-theme=light] ._addBtn_fpcoi_237{color:var(--text-secondary)}._scopeBadge_fpcoi_270{font-size:10px;line-height:1.4;padding:0 4px;border-radius:6px;background:var(--bg-surface);color:var(--text-muted)}._scopeBadgeDisabled_fpcoi_280{color:var(--color-warning, #d48806)}._tabBtn_fpcoi_90._tabDisabled_fpcoi_285{opacity:.55}._builtinScopeRow_fpcoi_290{display:inline-flex;align-items:center;gap:6px;margin-left:12px}._dirtyDot_fpcoi_298{width:6px;height:6px;border-radius:50%;background:var(--color-primary);flex-shrink:0}._titleRow_fpcoi_307{display:inline-flex;align-items:center;gap:8px}._helpBtn_fpcoi_315{align-self:center;width:16px;height:16px;border-radius:50%;border:1px solid var(--border-primary);background:var(--bg-elevated);color:var(--text-secondary);font-size:11px;line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:help;flex-shrink:0;-webkit-user-select:none;user-select:none}._helpBtn_fpcoi_315:hover{color:var(--color-primary);border-color:var(--color-primary)}._paramDocBtn_fpcoi_338{align-self:center;height:18px;padding:0 8px;border-radius:999px;border:1px solid var(--border-primary);background:var(--bg-elevated);color:var(--text-secondary);font-size:11px;font-weight:400;line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;-webkit-user-select:none;user-select:none;white-space:nowrap;max-width:40vw;overflow:hidden;text-overflow:ellipsis}._paramDocBtn_fpcoi_338:hover{color:var(--color-primary);border-color:var(--color-primary)}._paramDocBtn_fpcoi_338:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}._docBox_fpcoi_370{max-height:65vh;overflow:auto;font-size:13px;line-height:1.6}._docIntro_fpcoi_379{color:var(--text-secondary);font-size:12px;line-height:1.6;margin:0 0 12px;padding-bottom:10px;border-bottom:1px solid var(--border-primary)}._addModalBody_fpcoi_389{display:flex;flex-direction:column;gap:14px;margin-top:4px}._addModalField_fpcoi_395{display:flex;flex-direction:column;gap:6px}._fieldLabelRow_fpcoi_400{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text-secondary, #888)}._addError_fpcoi_408{font-size:12px;color:var(--color-error, #d4380d)}._presetSelect_fpcoi_412,._addNameAutoComplete_fpcoi_416{width:100%}._presetMatched_fpcoi_419{font-size:11px;color:var(--color-text-secondary, #888)}._panel_1nxl3_1{display:flex;flex-direction:column;gap:14px}._required_1nxl3_7{margin-left:2px;color:var(--color-error-light, #ff7b7b)}._optional_1nxl3_12{margin-left:6px;font-size:12px;font-weight:400;color:var(--text-secondary)}._row_1nxl3_19{display:flex;align-items:center;justify-content:space-between;gap:12px}._label_1nxl3_26{font-size:14px;font-weight:500}._control_1nxl3_31{display:inline-flex;align-items:center;gap:10px}._field_1nxl3_37{display:flex;flex-direction:column;gap:6px}._fieldLabel_1nxl3_43{font-size:13px;color:var(--text-secondary)}._help_1nxl3_48{font-size:12px;color:var(--text-secondary);line-height:1.4}._warn_1nxl3_54{font-size:12px;line-height:1.5;color:var(--color-error-light, #ff7b7b)}._hint_1nxl3_60{font-size:12px;line-height:1.5;color:var(--text-secondary)}._helpIcon_1nxl3_67{margin-left:6px;color:var(--text-tertiary, #999);cursor:help;font-size:13px}._detailsToggle_1nxl3_74{display:inline-flex;align-items:center;gap:5px;align-self:flex-start;padding:0;border:none;background:none;cursor:pointer;font-size:12px;color:var(--text-secondary)}._detailsToggle_1nxl3_74:hover{color:var(--text-primary, var(--text-secondary))}._details_1nxl3_74{display:flex;flex-direction:column;gap:10px}._actions_1nxl3_98{display:flex;justify-content:flex-end;gap:10px;margin-top:16px;padding-top:16px;border-top:1px solid var(--border-secondary)}._testBtn_1nxl3_108{margin-right:auto}._tabRow_1q32a_4{display:flex;align-items:flex-end;gap:6px;padding:0 8px;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none}._tabRow_1q32a_4::-webkit-scrollbar{display:none}._tabBtn_1q32a_24{display:inline-flex;align-items:center;gap:7px;padding:8px 16px;font-size:14px;line-height:1.5;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--text-secondary);cursor:pointer;transition:color .18s,border-color .18s,background .18s;white-space:nowrap;flex-shrink:0;-webkit-user-select:none;user-select:none}._tabBtn_1q32a_24:hover{color:var(--color-primary)}._tabBtn_1q32a_24._tabBtnActive_1q32a_52,._tabBtn_1q32a_24._tabBtnActive_1q32a_52:hover{background:var(--bg-container);color:var(--color-primary);border-color:var(--border-primary);border-bottom:2px solid var(--bg-container);border-radius:10px 10px 0 0;font-weight:500;margin-bottom:-1px;position:relative;z-index:2}._toolBody_1q32a_8{border:1px solid var(--border-primary);border-top:none;border-radius:8px;background:var(--bg-container);padding:18px 20px;min-width:0}[data-theme=light] ._toolBody_1q32a_8{box-shadow:0 3px 8px #00000014}[data-theme=light] ._tabBtnActive_1q32a_52{box-shadow:0 -3px 8px #0000000f}[data-theme=dark] ._toolBody_1q32a_8 .ant-input,[data-theme=dark] ._toolBody_1q32a_8 .ant-input-affix-wrapper,[data-theme=dark] ._toolBody_1q32a_8 .ant-select-selector{background-color:var(--bg-elevated)}._scrollBody_mzpnt_1{height:100%;box-sizing:border-box;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable;padding:4px 2px;background:var(--bg-container)}._headerBar_mzpnt_15{display:flex;align-items:center;gap:8px}._refreshBtn_mzpnt_21{flex:0 0 auto}._statusTag_mzpnt_27{display:inline-flex;align-items:center;gap:8px;margin-left:auto}._statusTag_mzpnt_27 .ant-tag{margin-inline-end:0}._center_mzpnt_38{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:40px 0;color:var(--text-secondary)}._hint_mzpnt_48{color:var(--text-secondary);font-size:13px}._chip_dnl8s_4{position:relative;line-height:0;cursor:pointer;-webkit-user-select:none;user-select:none;transition:opacity .15s}._chip_dnl8s_4:hover{opacity:.75}._logo_dnl8s_16{display:block;transition:color .15s}._connecting_dnl8s_22{opacity:.5}._dotError_dnl8s_27{position:absolute;right:-2px;top:-2px;width:6px;height:6px;border-radius:50%;background:var(--color-error, #ff4d4f);pointer-events:none}._dotReconnecting_dnl8s_39{position:absolute;right:-2px;top:-2px;width:6px;height:6px;border-radius:50%;background:var(--color-warning, #f59e0b);pointer-events:none;animation:_imDotPulse_dnl8s_1 1.2s ease-in-out infinite}@keyframes _imDotPulse_dnl8s_1{0%,to{opacity:1}50%{opacity:.3}}@media(prefers-reduced-motion:reduce){._dotReconnecting_dnl8s_39{animation:none}}._helpIcon_bz60b_6{margin-left:6px;font-size:13px;color:var(--text-tertiary, var(--text-muted, #999));cursor:help;vertical-align:middle}._helpIconBtn_bz60b_14{background:none;border:none;padding:0;margin:0 0 0 6px;cursor:pointer;color:var(--text-tertiary, var(--text-muted, #999));font-size:13px;vertical-align:middle;display:inline-flex;align-items:center}._helpIconBtn_bz60b_14:hover{color:var(--color-primary)}._modelCard_bz60b_30{border:1px solid var(--border-secondary);border-radius:6px;padding:8px 10px;background:var(--bg-container)}._modelName_bz60b_36{font-size:13px;font-weight:600;color:var(--text-primary);margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid var(--border-secondary)}._statsTable_bz60b_44{width:100%;border-collapse:collapse}._th_bz60b_48{padding:2px 12px;font-size:12px;font-family:var(--font-mono);white-space:nowrap;color:var(--text-tertiary);font-weight:400;text-align:right}._td_bz60b_57{padding:2px 12px;font-size:12px;font-family:var(--font-mono);white-space:nowrap;color:var(--text-primary);text-align:right}._label_bz60b_65{padding:2px 12px;font-size:12px;font-family:var(--font-mono);white-space:nowrap;color:var(--text-light);font-weight:400;text-align:left}._rowBorder_bz60b_74{border-bottom:1px solid var(--border-primary)}._rebuildTotalRow_bz60b_77{border-top:1px solid var(--border-light)}._rebuildTotalRow_bz60b_77 td{font-weight:600}._cachePopoverEmpty_bz60b_83{padding:8px 4px;color:var(--text-tertiary);font-size:13px}._toolChipGrid_bz60b_88{display:flex;flex-wrap:wrap;gap:4px;padding:2px 0 6px 2px}._cacheToolChip_bz60b_94{font-size:11px;padding:0 6px;border-radius:3px;background:var(--bg-surface);color:var(--text-secondary);line-height:18px;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--border-primary);cursor:help}._titleIcon_bz60b_108{margin-right:8px}._detailMarkdownCard_bz60b_113{border:1px solid var(--border-secondary);border-radius:6px;padding:8px 10px;background:var(--bg-container)}._memoryMarkdown_bz60b_120{font-size:12.5px;line-height:1.55;color:var(--text-primary);word-break:break-word}._memoryMarkdown_bz60b_120 p{margin:0 0 6px}._memoryMarkdown_bz60b_120 ul,._memoryMarkdown_bz60b_120 ol{margin:4px 0 6px;padding-left:20px}._memoryMarkdown_bz60b_120 li{margin:2px 0}._memoryMarkdown_bz60b_120 h1,._memoryMarkdown_bz60b_120 h2,._memoryMarkdown_bz60b_120 h3,._memoryMarkdown_bz60b_120 h4{font-size:13px;font-weight:600;margin:8px 0 4px;color:var(--text-primary)}._memoryMarkdown_bz60b_120 h1{font-size:14px}._memoryMarkdown_bz60b_120 a{color:var(--primary-color, #1677ff);text-decoration:none;cursor:pointer}._memoryMarkdown_bz60b_120 a:hover{text-decoration:underline}._memoryMarkdown_bz60b_120 code{font-family:var(--font-mono);font-size:12px;padding:1px 4px;border-radius:3px;background:var(--bg-surface);color:var(--text-primary)}._memoryMarkdown_bz60b_120 pre{margin:6px 0;padding:8px 10px;border-radius:4px;background:var(--bg-surface);overflow-x:auto}._memoryMarkdown_bz60b_120 pre code{padding:0;background:transparent;font-size:12px}._memoryMarkdown_bz60b_120 blockquote{margin:4px 0;padding:2px 8px;border-left:3px solid var(--border-hover);color:var(--text-secondary)}._memoryMarkdown_bz60b_120 hr{margin:8px 0;border:none;border-top:1px solid var(--border-secondary)}._quickMenuGroup_bz60b_191{position:relative}._quickMenuRow_bz60b_195{display:flex;align-items:center;gap:6px;width:100%;background:none;border:none;color:var(--text-primary);font-size:13px;padding:6px 12px;text-align:left;cursor:pointer;border-radius:4px;white-space:nowrap}._quickMenuGroup_bz60b_191:hover ._quickMenuRow_bz60b_195,._quickMenuGroupOpen_bz60b_212 ._quickMenuRow_bz60b_195{background:var(--border-secondary)}._quickMenuRowIcon_bz60b_216{display:flex;align-items:center;color:var(--text-tertiary)}._quickMenuRowIcon_bz60b_216 svg{width:14px;height:14px}._quickMenuLabel_bz60b_227{flex:1}._quickMenuValue_bz60b_232{color:var(--text-tertiary);font-size:12px}._quickMenuCaret_bz60b_237{color:var(--text-tertiary);font-size:10px}._quickMenuSubWrap_bz60b_245{display:none;position:absolute;left:100%;bottom:-5px;padding-left:6px;z-index:1}._quickMenuGroupOpen_bz60b_212 ._quickMenuSubWrap_bz60b_245{display:block}._quickMenuSub_bz60b_245{display:flex;flex-direction:column;background:var(--bg-elevated);border:1px solid var(--border-hover);border-radius:8px;padding:4px;min-width:76px;max-height:60vh;overflow-y:auto;box-shadow:0 6px 16px #0000002e}._quickMenuOption_bz60b_275{background:none;border:none;color:var(--text-primary);font-size:13px;padding:5px 12px;text-align:left;cursor:pointer;border-radius:4px;white-space:nowrap}._quickMenuOption_bz60b_275:hover{background:var(--border-secondary)}._quickMenuOption_bz60b_275._quickMenuOptionActive_bz60b_291{color:var(--color-primary);font-weight:500}._headerBar_nsj4l_2{display:flex;align-items:center;justify-content:space-between;width:100%;height:100%}._logoWrap_nsj4l_10{display:inline-flex;align-items:center;position:relative;margin-top:14px}._logoWrapActive_nsj4l_17:after{content:"";position:absolute;top:-10px;bottom:-10px;left:0;right:-200px}._logoImage_nsj4l_26{height:24px;width:24px;border-radius:3px;vertical-align:middle;opacity:.75;transition:opacity .2s;cursor:pointer}._logoImageActive_nsj4l_36{opacity:1}._compactBtn_nsj4l_43{font-size:12px;height:30px;display:inline-flex;align-items:center;justify-content:center}._compactBtnNoBorder_nsj4l_52{width:30px;height:30px;min-width:30px;padding:0;border:none;font-size:18px;line-height:1;display:inline-flex;align-items:center;justify-content:center}._compactBtnNoBorder_nsj4l_52 .anticon{display:inline-flex;align-items:center;justify-content:center;line-height:0}._headerProjectName_nsj4l_79{font-size:12px;color:inherit;white-space:nowrap}._newProjectPlusBtn_nsj4l_88{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-inline-start:4px;padding:0;background:transparent;border:1px dashed var(--text-muted);border-radius:4px;color:var(--text-muted);font-size:10px;line-height:1;cursor:pointer;transition:color .2s,border-color .2s}._newProjectPlusBtn_nsj4l_88:hover{color:var(--text-primary);border-color:var(--text-primary)}._newProjectPlusBtn_nsj4l_88:focus,._newProjectPlusBtn_nsj4l_88:focus-visible{outline:none}._countdownStrong_nsj4l_117{font-variant-numeric:tabular-nums}._qrcodePopover_nsj4l_122{display:flex;flex-direction:column;align-items:center;padding:8px}._qrcodeSection_nsj4l_129{display:flex;flex-direction:column;align-items:center;padding:16px;margin-bottom:12px;border:1px solid var(--border-secondary);border-radius:8px;background:var(--bg-container)}._qrcodeTitle_nsj4l_140{font-size:14px;font-weight:600;color:var(--text-primary);margin-bottom:12px}._qrcodeUrlInput_nsj4l_147{margin-top:12px;font-size:12px;font-family:var(--font-mono)}._qrcodeUrlCopy_nsj4l_153{cursor:pointer;color:var(--text-tertiary);transition:color .2s}._qrcodeUrlCopy_nsj4l_153:hover{color:var(--color-primary-light)}._authSection_nsj4l_164{display:flex;flex-direction:column;align-items:stretch;box-sizing:border-box;width:100%;margin-top:12px;padding:12px;border:1px solid var(--border-secondary);border-radius:8px;background:var(--bg-container);gap:8px}._authHeaderRow_nsj4l_178{display:flex;align-items:center;justify-content:space-between}._authTitle_nsj4l_184{font-size:13px;font-weight:600;color:var(--text-primary)}._authPasswordLabel_nsj4l_190{font-size:12px;color:var(--text-secondary)}._authPasswordInput_nsj4l_195{font-size:12px;font-family:var(--font-mono)}._authSaveBtn_nsj4l_200{align-self:flex-end}._authEmptyWarn_nsj4l_204{font-size:12px;color:var(--color-error-light);line-height:1.4}._settingsGroupBox_nsj4l_212{border:1px solid var(--border-secondary);border-radius:8px;background:var(--bg-container);padding:4px 16px;margin-bottom:12px}._settingsGroupTitle_nsj4l_220{font-size:14px;font-weight:600;color:var(--text-primary);padding:12px 0 4px;border-bottom:1px solid var(--border-secondary)}._settingsItem_nsj4l_229{display:flex;justify-content:space-between;align-items:center;padding:12px 0}._settingsLabel_nsj4l_236{font-size:14px}._settingsHelpIcon_nsj4l_241{font-size:16px;color:var(--text-disabled);cursor:help;margin-left:4px}._settingsDivider_nsj4l_248{border-top:1px solid var(--border-primary);margin:12px 0}._logDirInput_nsj4l_253{margin-top:8px;background:var(--bg-base-alt);border-color:var(--border-light);color:var(--text-primary);font-family:var(--font-mono);font-size:13px}._claudeExecutableInput_nsj4l_262{width:100%;margin-top:8px;font-family:var(--font-mono);font-size:12px}._claudeExecutableHint_nsj4l_269{margin-top:6px;color:var(--text-tertiary);font-size:12px;line-height:1.5;overflow-wrap:anywhere}._tokenStatsEmpty_nsj4l_278{padding:8px 4px;color:var(--text-tertiary);font-size:13px}._tokenStatsContainer_nsj4l_285{display:flex;gap:12px;align-items:flex-start}._tokenStatsColumn_nsj4l_291{min-width:240px}._toolStatsColumn_nsj4l_295{min-width:180px}._modelCardSpaced_nsj4l_301{margin-bottom:10px}._rebuildCard_nsj4l_310{border:1px solid var(--border-secondary);border-radius:6px;padding:8px 10px;margin-top:10px;background:var(--bg-container)}._promptExportBar_nsj4l_319{margin-bottom:12px}._promptScrollArea_nsj4l_323{max-height:500px;overflow:auto}._promptEmpty_nsj4l_328{color:var(--text-tertiary);padding:12px}._promptTimestamp_nsj4l_334{color:var(--text-muted);font-size:12px;margin:12px 0 4px;padding-bottom:6px}._textPromptCard_nsj4l_342{margin:4px 0;background:var(--bg-container);border-radius:6px;border:1px solid var(--border-secondary);padding:10px 14px}._preText_nsj4l_351{white-space:pre-wrap;word-break:break-word;font-size:13px;line-height:1.6;color:var(--text-primary);margin:4px 0}._systemCollapse_nsj4l_361{margin:4px 0;background:var(--bg-elevated);border:1px solid var(--border-secondary);border-radius:6px}._systemLabel_nsj4l_368{color:var(--text-tertiary);font-size:12px}._preSys_nsj4l_373{white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.5;color:var(--text-tertiary);margin:0}._promptTextarea_nsj4l_383{box-sizing:border-box;background:var(--bg-base-pure);width:100%;min-height:400px;color:var(--text-primary);font-family:var(--font-mono);font-size:13px;line-height:1.6;border:none;resize:vertical;padding:10px 14px;outline:none}._projectStatsCenter_nsj4l_399{display:flex;justify-content:center;padding:40px 0}._projectStatsEmpty_nsj4l_405{color:var(--text-tertiary);padding:40px 0;text-align:center;font-size:13px}._projectStatsContent_nsj4l_412{display:flex;flex-direction:column;gap:16px}._projectStatsUpdated_nsj4l_418{color:var(--text-muted);font-size:12px;text-align:right}._projectStatsSummary_nsj4l_424{display:grid;grid-template-columns:1fr 1fr;gap:10px}._projectStatCard_nsj4l_430{background:var(--bg-container);border:1px solid var(--border-secondary);border-radius:8px;padding:14px 12px;text-align:center}._projectStatValue_nsj4l_438{font-size:22px;font-weight:700;color:var(--text-primary);font-family:var(--font-mono);font-variant-numeric:tabular-nums}._projectStatLabel_nsj4l_446{font-size:12px;color:var(--text-tertiary);margin-top:4px}._projectStatsSection_nsj4l_452{display:flex;flex-direction:column;gap:10px}._projectStatsSectionTitle_nsj4l_458{font-size:14px;font-weight:600;color:var(--text-secondary);padding-bottom:4px;border-bottom:1px solid var(--border-secondary)}._projectStatsModelCard_nsj4l_466{background:var(--bg-container);border:1px solid var(--border-secondary);border-radius:6px;padding:10px 12px}._projectStatsModelHeader_nsj4l_473{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid var(--border-secondary)}._projectStatsModelName_nsj4l_482{font-size:13px;font-weight:600;color:var(--text-primary)}._projectStatsModelCount_nsj4l_488{font-size:12px;color:var(--text-tertiary);font-family:var(--font-mono)}._cacheCopyBtn_nsj4l_496{font-size:14px;color:var(--text-tertiary);cursor:pointer;transition:color .2s;margin-left:8px}._cacheCopyBtn_nsj4l_496:hover{color:var(--text-primary)}._cacheTokenInfo_nsj4l_508{display:flex;align-items:center;font-size:12px;font-family:var(--font-mono);color:var(--text-light);margin-bottom:8px}._cacheCodeBlock_nsj4l_521{white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.5;color:var(--text-secondary);background:var(--bg-container);border:1px solid var(--border-primary);border-radius:4px;padding:8px;margin:4px 0;font-family:var(--font-mono)}._cacheCodeBlockSystem_nsj4l_535{white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.5;color:var(--text-secondary);background:var(--bg-code-system);border:1px solid var(--border-code-system);border-radius:4px;padding:8px;margin:4px 0;font-family:var(--font-mono)}._cacheNavBtn_nsj4l_549{margin-left:auto;font-size:11px;color:var(--color-primary);cursor:pointer;border:1px solid var(--color-primary);border-radius:3px;padding:1px 6px;white-space:nowrap}._cacheNavBtn_nsj4l_549:hover{background:var(--color-primary-bg-light)}._cacheNavList_nsj4l_564{width:600px;max-height:300px;overflow-y:auto}._cacheNavItem_nsj4l_570{padding:4px 8px;font-size:12px;color:var(--text-secondary);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:3px}._cacheNavItem_nsj4l_570:hover{background:var(--color-primary-bg-lighter);color:var(--text-white)}._cacheBlockHighlight_nsj4l_586{box-shadow:0 0 10px var(--color-primary-shadow);transition:box-shadow .2s ease-in}._cacheBlockHighlightFading_nsj4l_591{box-shadow:0 0 10px transparent;transition:box-shadow 3s ease-out}._cacheBorderSvg_nsj4l_596{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible}._cacheBorderSvgFading_nsj4l_605{opacity:0;transition:opacity 3s ease-out}._cacheBorderRect_nsj4l_610{animation:_cacheDashRotate_nsj4l_1 4s linear infinite}@keyframes _cacheDashRotate_nsj4l_1{0%{stroke-dashoffset:0}to{stroke-dashoffset:-100}}._thLeft_nsj4l_620{text-align:left}._cacheWriteToken_nsj4l_635{color:var(--color-code-orange)}._cacheReadToken_nsj4l_639{color:var(--color-success)}._cacheCtxPercent_nsj4l_643{color:var(--text-tertiary);margin-left:6px}._qrcodeIcon_nsj4l_663{width:30px;height:30px;padding:6px;box-sizing:border-box;color:var(--text-secondary);cursor:pointer;border-radius:6px;transition:color .15s ease,background-color .15s ease;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;background:none;border:none}._qrcodeIcon_nsj4l_663:hover{color:var(--text-primary);background:var(--bg-hover, rgba(0, 0, 0, .04))}._qrcodeIcon_nsj4l_663:focus-visible{outline:2px solid var(--primary-color, #1677ff);outline-offset:1px}._approvalBell_nsj4l_689{position:relative;width:30px;height:30px;padding:6px;box-sizing:border-box;color:var(--color-warning, #faad14);cursor:pointer;border-radius:6px;transition:color .15s ease,background-color .15s ease;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;background:none;border:none}._approvalBell_nsj4l_689:hover{color:var(--text-primary);background:var(--bg-hover, rgba(0, 0, 0, .04))}._approvalBell_nsj4l_689:focus-visible{outline:2px solid var(--primary-color, #1677ff);outline-offset:1px}._approvalBellBadge_nsj4l_714{position:absolute;top:0;right:0;min-width:14px;height:14px;padding:0 3px;box-sizing:border-box;background:var(--color-error, #ff4d4f);color:#fff;font-size:9px;line-height:14px;border-radius:7px;text-align:center;font-weight:600}._proxySwapIcon_nsj4l_731{margin-right:4px;font-size:11px}._proxyProfileTag_nsj4l_737{border-radius:12px;background:var(--border-secondary);border:1px solid var(--border-light);color:var(--text-tertiary);font-size:12px;cursor:pointer;transition:color .2s,border-color .2s}._proxyProfileTag_nsj4l_737:hover{color:var(--text-secondary);border-color:var(--text-disabled)}._sdkModelTag_nsj4l_753{border-radius:12px;background:var(--border-secondary);border:1px solid var(--border-light);color:var(--text-tertiary);font-size:12px;cursor:default}._activeProcessChip_nsj4l_765{margin-inline-start:4px}._projectTabsStrip_nsj4l_773{display:inline-flex;align-items:center;gap:4px;min-width:0;max-width:44vw;overflow-x:auto;scrollbar-width:none}._projectTabsStrip_nsj4l_773::-webkit-scrollbar{display:none}._projectTab_nsj4l_773{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;min-width:60px;max-width:180px;border-radius:12px;background:var(--border-secondary);border:1px solid var(--border-light);color:var(--text-tertiary);font-size:12px;line-height:1;white-space:nowrap;cursor:pointer;user-select:none;-webkit-user-select:none;transition:color .2s,border-color .2s,box-shadow .2s;flex-shrink:0;box-sizing:border-box}._projectTab_nsj4l_773:hover{color:var(--text-secondary);border-color:var(--text-disabled)}._projectTabActive_nsj4l_814,._projectTabActive_nsj4l_814:hover{color:var(--color-primary);font-weight:600;background:var(--color-primary-bg-light);border-color:var(--color-primary);box-shadow:inset 0 0 0 1px var(--color-primary)}._projectTabDot_nsj4l_823{width:8px;height:8px;border-radius:50%;background:var(--color-primary);flex-shrink:0}._projectTabRing_nsj4l_833,._projectTabRingActive_nsj4l_834{width:8px;height:8px;border-radius:50%;border:1.6px solid var(--text-muted);border-top-color:transparent;flex-shrink:0;box-sizing:border-box}._projectTabRingActive_nsj4l_834{border-color:var(--color-primary);border-top-color:transparent}._projectTabRingSpin_nsj4l_847{animation:_ccvProjectTabRingSpin_nsj4l_1 .7s linear infinite}._projectTabsStripSpinner_nsj4l_851{align-self:center;margin-right:2px}@keyframes _ccvProjectTabRingSpin_nsj4l_1{to{transform:rotate(360deg)}}._projectTabName_nsj4l_858{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}._projectTabIdx_nsj4l_867{flex-shrink:0;white-space:nowrap}._projectTabClose_nsj4l_871{width:16px;height:16px;padding:0;border:none;border-radius:3px;background:none;color:inherit;font-size:12px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s,background .15s,color .15s;flex-shrink:0}._projectTabActive_nsj4l_814 ._projectTabClose_nsj4l_871,._projectTab_nsj4l_773:hover ._projectTabClose_nsj4l_871,._projectTab_nsj4l_773:focus-within ._projectTabClose_nsj4l_871{opacity:1}._projectTabClose_nsj4l_871:hover{background:var(--border-light);color:var(--text-primary)}._pinnedShortcut_nsj4l_903{height:24px;margin-top:11px;display:inline-flex;align-items:center;justify-content:center;font-size:16px;line-height:1;color:var(--text-tertiary);opacity:.75;cursor:pointer;transition:opacity .2s,color .2s}._pinnedShortcut_nsj4l_903:hover{opacity:1;color:var(--text-secondary)}._pinnedShortcut_nsj4l_903 .anticon{display:inline-flex;align-items:center;justify-content:center;line-height:0}._themeToggle_nsj4l_932{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;width:30px;height:30px;padding:0;border:none;border-radius:6px;background:transparent;color:var(--text-secondary);cursor:pointer;transition:background-color .2s ease,color .2s ease;flex-shrink:0;outline:none}._themeToggle_nsj4l_932:hover{background:var(--color-bg-hover, rgba(127, 127, 127, .12));color:var(--text-primary)}._themeToggle_nsj4l_932:focus-visible{box-shadow:0 0 0 2px var(--primary-color, #1677ff)}._themeToggleIcon_nsj4l_958{display:block}._headerRightRow_nsj4l_963 .ant-space-item{display:inline-flex;align-items:center}._headerCountdownTag_nsj4l_969{height:30px;margin:0;padding:0 10px;display:inline-flex;align-items:center;background:var(--bg-surface);border:1px solid var(--border-hover);border-radius:6px;line-height:1}._centerEmpty_1ivpu_1{display:flex;align-items:center;justify-content:center;height:100%}._scrollContainer_1ivpu_8{overflow:auto;height:100%;-webkit-overflow-scrolling:touch;will-change:scroll-position}._listItem_1ivpu_15{cursor:pointer;padding:8px 12px;border-left:6px solid transparent;border-right:1px solid var(--border-primary);border-top:1px solid transparent;border-bottom:1px solid var(--border-primary);transition:background .15s}._listItem_1ivpu_15:hover{border-left-color:var(--border-hover)}._listItemActive_1ivpu_29{background:var(--color-primary-bg-faint);border-left-color:var(--color-primary-light);border-right:1px solid var(--color-primary-light);border-top:1px solid var(--color-primary-light);border-bottom:1px solid var(--color-primary-light)}._listItemActive_1ivpu_29,._listItemActive_1ivpu_29:hover{background:var(--color-primary-bg-faint);border-left-color:var(--color-primary-light);border-right-color:var(--color-primary-light);border-top-color:var(--color-primary-light);border-bottom-color:var(--color-primary-light)}._itemContent_1ivpu_46{width:100%;min-width:0}._itemHeader_1ivpu_51{display:flex;align-items:center;gap:6px;margin-bottom:4px;font-size:12px}._tagNoMargin_1ivpu_59{margin:0;font-size:12px}._modelName_1ivpu_64{font-size:12px;color:var(--text-tertiary)}._modelNameMain_1ivpu_69{color:var(--color-code-orange)}._time_1ivpu_73{font-size:12px;color:var(--text-gray);margin-left:auto}._detailRow_1ivpu_79{display:flex;gap:8px;font-size:12px;align-items:center}._urlText_1ivpu_86{color:var(--text-disabled);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}._duration_1ivpu_95{color:var(--text-gray);flex-shrink:0}._statusOk_1ivpu_100{color:var(--color-success);opacity:.5;flex-shrink:0}._statusErr_1ivpu_106{color:var(--color-error);flex-shrink:0}._statusDefault_1ivpu_111{color:var(--text-tertiary);flex-shrink:0}._usageBox_1ivpu_116{background:var(--bg-container);border-radius:4px;padding:3px 6px;margin-top:4px;font-size:12px;color:var(--text-gray);line-height:1.6}._cacheDot_1ivpu_126{display:inline-block;width:6px;height:6px;border-radius:50%;margin:0 3px;vertical-align:middle}._cacheDotLoss_1ivpu_135{background-color:var(--color-red-dark-bg);cursor:help}._cacheDotNormal_1ivpu_140{background-color:var(--border-hover)}._cacheDotTools_1ivpu_145{background-color:var(--color-code-purple);box-shadow:0 0 0 1.5px var(--color-purple-border)}._tagMainAgent_1ivpu_150{color:var(--color-code-orange);border-color:var(--color-code-orange-border);background:var(--color-code-orange-bg)}._tagPlan_1ivpu_156{color:var(--color-error-muted);border-color:var(--color-error-muted);background-color:var(--bg-base-pure)}._tagMuted_1ivpu_162{color:var(--text-muted);border-color:var(--border-light);background-color:var(--bg-base-pure)}._tooltipPreLine_1ivpu_168{white-space:pre-line}._GzYRV{line-height:1.2;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}._3eOF8{margin-right:5px;font-weight:700}._3eOF8+._3eOF8{margin-left:-5px}._1MFti{cursor:pointer}._f10Tu{font-size:1.2em;margin-right:5px;-webkit-user-select:none;-moz-user-select:none;user-select:none}._1UmXx:after{content:"▸"}._1LId0:after{content:"▾"}._1pNG9{margin-right:5px}._1pNG9:after{content:"...";font-size:.8em}._2IvMF{background:#eee}._2bkNM{margin:0;padding:0 10px}._1BXBN{margin:0;padding:0}._1MGIk{font-weight:600;margin-right:5px;color:#000}._3uHL6{color:#000}._2T6PJ,._1Gho6{color:#df113a}._vGjyY{color:#2a3f3c}._1bQdo{color:#0b75f5}._3zQKs{color:#469038}._1xvuR{color:#43413d}._oLqym,._2AXVT,._2KJWg{color:#000}._11RoI{background:#002b36}._17H2C,._3QHg2,._3fDAz{color:#fdf6e3}._2bSDX{font-weight:bolder;margin-right:5px;color:#fdf6e3}._gsbQL{color:#fdf6e3}._LaAZe,._GTKgm{color:#81b5ac}._Chy1W{color:#cb4b16}._2bveF{color:#d33682}._2vRm-{color:#ae81ff}._1prJR{color:#268bd2}._container_b5r6a_1{background:var(--bg-container);border-radius:6px;border:1px solid var(--border-primary);padding:12px;font-size:13px;font-family:var(--font-mono);overflow:auto}._root_5oh1m_1{display:flex;height:100%;min-height:0;gap:0}._sidebar_5oh1m_9{width:220px;flex-shrink:0;border-right:1px solid var(--border-primary);overflow-y:auto;padding:4px 0;-webkit-overflow-scrolling:touch}._section_5oh1m_18{-webkit-user-select:none;user-select:none}._sectionHeader_5oh1m_22{display:flex;align-items:center;gap:6px;width:100%;padding:6px 10px;cursor:pointer;color:var(--text-primary);font-size:12px;font-weight:600;transition:background .15s;background:none;border:0;text-align:left;font:inherit}._sectionHeader_5oh1m_22:hover{background:var(--overlay-light-faint)}._sectionHeader_5oh1m_22:focus-visible{outline:1px solid var(--color-primary-outline);outline-offset:-1px}._arrow_5oh1m_48{font-size:10px;color:var(--text-tertiary);flex-shrink:0}._sectionTitle_5oh1m_54{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._sectionCount_5oh1m_62{font-size:11px;color:var(--text-muted);background:var(--bg-elevated);border-radius:10px;padding:0 6px;line-height:18px}._sectionBody_5oh1m_71{padding:2px 0}._historyToggle_5oh1m_76{display:flex;align-items:center;gap:6px;width:100%;padding:4px 10px 4px 14px;cursor:pointer;color:var(--text-muted);font-size:11px;transition:color .15s,background .15s;background:none;border:0;text-align:left;font:inherit}._historyToggle_5oh1m_76:hover{color:var(--text-tertiary);background:var(--overlay-light-faint)}._historyToggle_5oh1m_76:focus-visible{outline:1px solid var(--color-primary-outline);outline-offset:-1px}._historyToggleLabel_5oh1m_102{flex:1}._item_5oh1m_107{display:flex;align-items:center;justify-content:space-between;width:100%;padding:4px 9px 4px 23px;font-size:12px;color:var(--text-tertiary);cursor:pointer;transition:background .15s,color .15s;background:none;border:1px solid transparent;border-radius:4px;box-sizing:border-box;text-align:left;font:inherit}._item_5oh1m_107:hover{background:var(--overlay-light-faint);color:var(--text-primary)}._item_5oh1m_107:focus-visible{outline:1px solid var(--color-primary-outline);outline-offset:-1px}._itemActive_5oh1m_135,._itemActive_5oh1m_135:hover{background:var(--color-primary-bg-faint);color:var(--color-primary);border-color:var(--color-primary-light)}._itemContent_5oh1m_142{flex:1;min-width:0;overflow:hidden}._itemLabel_5oh1m_148{font-family:var(--font-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}._itemSublabel_5oh1m_156{font-size:10px;color:var(--text-disabled);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}._itemTime_5oh1m_165{font-size:9px;color:var(--text-disabled);flex-shrink:0;margin-left:4px;font-family:var(--font-mono)}._contentWrap_5oh1m_176{flex:1;min-width:0;display:flex;flex-direction:column}._content_5oh1m_174{flex:1;min-width:0;min-height:0;overflow:auto;padding:12px 16px;-webkit-overflow-scrolling:touch}._contentEmpty_5oh1m_192{height:100%;display:flex;align-items:center;justify-content:center}._contentInner_5oh1m_199{padding-bottom:20px}._emptyWrap_5oh1m_203{display:flex;align-items:center;justify-content:center;height:200px}._roleHeader_5oh1m_211{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:nowrap}._roleBadge_5oh1m_219{font-size:10px;font-weight:600;letter-spacing:.04em;padding:2px 7px;border-radius:4px;flex-shrink:0}._role_user_5oh1m_228{background:var(--color-primary-bg-lighter);color:var(--color-primary-lighter);border:1px solid var(--color-primary-bg-medium)}._role_assistant_5oh1m_234{background:var(--color-purple-bg);color:var(--color-code-purple);border:1px solid var(--color-purple-border)}._role_system_5oh1m_240{background:var(--color-warning-bg-faint);color:var(--color-warning);border:1px solid var(--color-warning-border-light)}._roleLabel_5oh1m_246{font-size:11px;color:var(--text-muted);flex:1;min-width:0}._contentTime_5oh1m_253{margin-left:auto;font-size:10px;color:var(--text-disabled);font-family:var(--font-mono);flex-shrink:0}._stepDivider_5oh1m_261{border:none;border-top:1px solid var(--border-primary);margin:14px 0}._textBlock_5oh1m_268{margin-bottom:8px;border:1px solid var(--border-primary);border-radius:6px;overflow:hidden}._textBlockBar_5oh1m_275{display:flex;align-items:center;gap:6px;padding:4px 10px;background:var(--bg-container);border-bottom:1px solid var(--border-primary)}._textBlockBody_5oh1m_284{padding:10px 12px;font-size:13px;line-height:1.7;color:var(--text-primary);word-break:break-word}._textBlockCompact_5oh1m_292{position:relative;padding:8px 10px;font-size:12px;color:var(--text-light)}._textBlockCompactFloat_5oh1m_299{float:right;margin-left:6px;margin-bottom:2px}._thinkingBlock_5oh1m_306{margin-bottom:8px;border:1px solid var(--color-thinking-border);border-radius:6px;overflow:hidden;background:var(--color-thinking-bg)}._thinkingHeader_5oh1m_314{display:flex;align-items:center;gap:6px;padding:5px 10px;cursor:pointer;font-size:12px;color:var(--text-tertiary);transition:background .15s}._thinkingHeader_5oh1m_314:hover{background:var(--overlay-light-faint)}._thinkingPreview_5oh1m_329{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-muted);font-size:11px}._thinkingBody_5oh1m_339{padding:8px 12px;border-top:1px solid var(--color-thinking-border)}._toolBlock_5oh1m_345{margin-bottom:8px;border:1px solid var(--border-primary);border-radius:6px;overflow:hidden}._toolBlockResult_5oh1m_352{border-color:var(--color-green-border)}._toolBlockError_5oh1m_356{border-color:var(--color-red-dark-border)}._toolBlockHeader_5oh1m_360{display:flex;align-items:center;gap:8px;padding:5px 10px;background:var(--bg-container);border-bottom:1px solid var(--border-primary);font-size:12px;flex-wrap:wrap}._toolBlockBody_5oh1m_371{padding:8px 10px;font-size:12px}._toolName_5oh1m_376{color:var(--text-primary);font-weight:500;font-family:var(--font-mono)}._toolId_5oh1m_382{color:var(--text-disabled);font-size:10px;font-family:var(--font-mono);margin-left:auto}._errorLabel_5oh1m_389{font-size:10px;color:var(--color-error-light);background:var(--color-error-bg-light);border:1px solid var(--color-error-border);border-radius:3px;padding:1px 5px}._blockTag_5oh1m_399{font-size:9px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:1px 5px;border-radius:3px;background:var(--bg-elevated);color:var(--text-muted);border:1px solid var(--border-primary);flex-shrink:0}._blockTagText_5oh1m_412{background:var(--color-primary-bg-faint);color:var(--color-primary-lighter);border-color:var(--color-primary-bg-lighter)}._blockTagThinking_5oh1m_418{background:var(--color-warning-bg-faint);color:var(--color-warning);border-color:var(--color-warning-border-light)}._blockTagResult_5oh1m_424{background:var(--color-green-dark-bg);color:var(--color-success);border-color:var(--color-green-dark-border)}._blockTagError_5oh1m_430{background:var(--color-error-bg-faint);color:var(--color-error-light);border-color:var(--color-error-border-light)}._jsonBlock_5oh1m_437{margin-bottom:8px;border:1px solid var(--border-primary);border-radius:6px;overflow:hidden}._jsonBlockLabel_5oh1m_444{font-size:10px;color:var(--text-muted);padding:3px 10px;background:var(--bg-container);border-bottom:1px solid var(--border-primary);font-family:var(--font-mono)}._blockSeparator_5oh1m_454{border:none;border-top:1px solid var(--border-primary);margin:16px 0}._markdownBody_5oh1m_461{font-size:13px;line-height:1.7;color:var(--text-primary);word-break:break-word}._contentToolbar_5oh1m_469{display:flex;justify-content:flex-end;align-items:center;gap:8px;padding:8px 16px 0;flex-shrink:0}._contentToolbarLabel_5oh1m_478{font-size:11px;color:var(--text-muted)}._rawPre_5oh1m_484{background:var(--bg-code-dark);border:1px solid var(--border-primary);border-radius:6px;padding:12px;font-size:12px;color:var(--text-primary);white-space:pre-wrap;word-break:break-all;margin:0}._toolAdded_5oh1m_497{color:var(--color-success)}._toolRemoved_5oh1m_501{color:var(--color-error);text-decoration:line-through}._toolDiffTag_5oh1m_506{margin-left:6px;font-size:9px;font-family:var(--font-ui);text-decoration:none;opacity:.85}._toolDiffSummary_5oh1m_514{margin-left:6px;font-size:11px;font-family:var(--font-mono);display:inline-flex;gap:4px;flex-shrink:0}._toolDiffSummaryAdd_5oh1m_523{color:var(--color-success)}._toolDiffSummaryRemove_5oh1m_527{color:var(--color-error)}._root_9rzwn_3{display:flex;flex-direction:column;gap:12px;padding:4px 0}._center_9rzwn_10{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:32px 0}._headerRow_9rzwn_19{display:flex;align-items:center;gap:8px}._modelTag_9rzwn_25{margin-inline-start:0}._headerSpacer_9rzwn_29{flex:1}._updatedAt_9rzwn_33{font-size:12px}._barSection_9rzwn_37{display:flex;flex-direction:column;gap:6px}._barMeta_9rzwn_43{display:flex;justify-content:space-between;align-items:baseline;font-variant-numeric:tabular-nums}._barTrack_9rzwn_50{position:relative;display:flex;height:10px;width:100%;border-radius:5px;overflow:hidden;background:var(--border-secondary, rgba(0, 0, 0, .08))}._barSeg_9rzwn_60{height:100%}._thresholdMark_9rzwn_64{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--color-warning, #faad14)}._autoCompactOff_9rzwn_72{font-size:12px}._legend_9rzwn_76{display:flex;flex-wrap:wrap;gap:10px;font-size:12px}._legendItem_9rzwn_83{display:inline-flex;align-items:center;gap:4px}._legendDot_9rzwn_89{width:8px;height:8px;border-radius:2px;display:inline-block}._deferredTag_9rzwn_96{margin-inline-start:4px;font-size:11px;line-height:1.4}._gridSection_9rzwn_102{display:flex;flex-direction:column;gap:4px}._gridLabel_9rzwn_108{font-size:12px}._grid_9rzwn_102{display:flex;flex-direction:column;gap:2px}._gridRow_9rzwn_118{display:flex;gap:2px}._gridCell_9rzwn_123{width:10px;height:10px;border-radius:2px;border:1px solid transparent;display:inline-block}._truncatedNote_9rzwn_131{font-size:12px}._sections_9rzwn_135{border-top:1px solid var(--border-secondary, rgba(0, 0, 0, .06))}._sectionBody_9rzwn_139{display:flex;flex-direction:column;gap:4px}._sectionSummary_9rzwn_145{display:flex;flex-wrap:wrap;gap:10px;font-size:12px;color:var(--text-secondary)}._sectionRow_9rzwn_153{display:flex;justify-content:space-between;font-size:12px;font-variant-numeric:tabular-nums}._sectionRowName_9rzwn_160{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:12px}._sectionRowTokens_9rzwn_167{flex-shrink:0;color:var(--text-secondary)}._footer_9rzwn_172{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px;font-size:12px;border-top:1px solid var(--border-secondary, rgba(0, 0, 0, .06));padding-top:8px}._apiUsageLabel_9rzwn_182{margin-right:4px}._summaryItem_9rzwn_186{font-variant-numeric:tabular-nums}._root_3h69u_3{display:flex;flex-direction:column;gap:12px;padding:4px 0}._center_3h69u_10{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:32px 0}._headerRow_3h69u_19{display:flex;align-items:center;gap:8px}._headerSpacer_3h69u_25{flex:1}._updatedAt_3h69u_29{font-size:12px}._list_3h69u_33{display:flex;flex-direction:column;gap:2px}._listRow_3h69u_39{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--border-secondary, rgba(0, 0, 0, .06))}._serverName_3h69u_47{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}._version_3h69u_54{font-size:12px;flex-shrink:0}._toolCount_3h69u_59{font-size:12px;flex-shrink:0;font-variant-numeric:tabular-nums}._statusTag_3h69u_65{margin-inline-end:0;flex-shrink:0}._errorBlock_3h69u_70{display:flex;flex-direction:column;gap:4px;margin-top:8px;padding-top:8px;border-top:1px solid var(--border-secondary, rgba(0, 0, 0, .06))}._errorRow_3h69u_79{display:flex;align-items:baseline;gap:6px;font-size:12px}._errorLabel_3h69u_86{flex-shrink:0}._errorText_3h69u_90{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._container_1958y_1{height:100%;overflow:hidden;padding:0 16px;display:flex;flex-direction:column;background:var(--bg-base)}._emptyState_1958y_10{display:flex;align-items:center;justify-content:center;height:100%}._urlSection_1958y_17{padding:12px 0;border-bottom:1px solid var(--border-primary);display:flex;align-items:flex-start;flex-shrink:0}._urlLeft_1958y_25{flex:1;min-width:0}._tokenStatsBox_1958y_30{flex-shrink:0;padding-left:12px;display:flex;align-items:center}._tokenGrid_1958y_37{display:flex;border:1px solid var(--border-secondary);border-radius:6px;overflow:hidden;min-width:360px;font-size:11px;line-height:1.6}._tokenRows_1958y_47{flex:1}._tokenRow_1958y_47{display:flex}._tokenRowBorder_1958y_55{border-top:1px solid var(--border-secondary)}._tokenLabel_1958y_59{color:var(--text-tertiary);padding:4px 8px;white-space:nowrap;font-weight:600}._tokenTd_1958y_66{flex:1;color:var(--text-primary);text-align:right;padding:4px 8px;font-family:var(--font-mono);white-space:nowrap}._tokenHitRate_1958y_75{display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-primary);padding:4px 8px;font-family:var(--font-mono);white-space:nowrap;border-left:1px solid var(--border-secondary);min-width:100px}._tokenHitRateLabel_1958y_88{color:var(--text-tertiary);font-size:10px;font-family:var(--font-ui)}._tokenRowBorder_1958y_55 td{border-top:1px solid var(--border-secondary)}._urlText_1958y_98{color:var(--text-primary);font-size:13px;margin-bottom:8px;word-break:break-all}._metaText_1958y_105,._headersContainer_1958y_109{font-size:12px}._headerRow_1958y_113{display:flex;padding:4px 0;border-bottom:1px solid var(--border-primary)}._headerKey_1958y_119{min-width:200px;flex-shrink:0}._headerValue_1958y_124{word-break:break-all;margin-left:8px}._streamingBox_1958y_129{padding:20px;background:var(--bg-elevated);border-radius:6px;border:1px solid var(--border-primary)}._bodyToolbar_1958y_136{display:flex;gap:8px;margin-bottom:8px}._rawTextPre_1958y_142{background:var(--bg-code-dark);border:1px solid var(--border-primary);border-radius:6px;padding:12px;font-size:12px;color:var(--text-primary);overflow:auto;max-height:600px;white-space:pre-wrap;word-break:break-all}._tabContent_1958y_155{padding:16px 0 0;height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}._collapseSpacing_1958y_163{margin-bottom:16px}._bodyLabel_1958y_167{margin:0}._bodyHeader_1958y_171{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}._diffSection_1958y_178{margin-bottom:16px}._diffToggle_1958y_182{display:inline-block;margin-bottom:8px;cursor:pointer}._diffIcon_1958y_188{font-size:12px;margin-left:4px}._viewInChatBtn_1958y_193{display:inline-flex;align-items:center;height:26px;border-radius:13px;border:1px solid var(--border-light);background:#0000;color:var(--text-tertiary);cursor:pointer;font-size:12px;transition:all .2s;padding:0 10px;white-space:nowrap}._viewInChatBtn_1958y_193:hover{border-color:var(--text-muted);color:var(--text-primary);background:var(--overlay-light-faint)}._reminderSelect_1958y_214{min-width:140px;font-size:12px}._reminderSelect_1958y_214 .ant-select-selector.ant-select-selector{border-radius:2px;border-color:var(--border-light);background:#0000;min-height:26px;height:auto;padding:0 8px;font-family:var(--font-mono)}._reminderSelect_1958y_214 .ant-select-selection-placeholder{font-size:11px}._diffHeaderRow_1958y_233{display:flex;align-items:center;gap:8px}._diffSpaceRight_1958y_239{margin-left:auto}._reminderFilterWrapper_1958y_243{display:inline-flex;align-items:center;gap:4px}._reminderLabel_1958y_249{color:var(--text-tertiary);font-size:12px;font-family:var(--font-mono)}._cacheTabContent_1958y_255{padding-top:0;overflow:hidden}._userPromptList_1958y_260{width:600px;max-height:300px;overflow-y:auto}._userPromptItem_1958y_266{padding:4px 8px;font-size:12px;color:var(--text-secondary);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:3px}._userPromptNavBtn_1958y_277{margin-left:auto;font-size:11px;color:var(--color-primary);cursor:pointer;border:1px solid var(--color-primary);border-radius:3px;padding:1px 6px;white-space:nowrap}._cacheContent_1958y_288{padding:8px 0;height:100%;display:flex;flex-direction:column}._cacheTokenBar_1958y_295{display:flex;align-items:center;font-size:12px;font-family:var(--font-mono);color:var(--text-light);margin-bottom:12px;flex-shrink:0}._cacheTokenWrite_1958y_305{color:var(--color-code-orange)}._cacheTokenRead_1958y_309{color:var(--color-success)}._cacheCopyIcon_1958y_313{margin-left:8px;cursor:pointer;color:var(--text-tertiary);transition:color .2s}._cacheScrollArea_1958y_320{flex:1;overflow-y:auto;min-height:0}._cacheSectionBlock_1958y_326{margin-bottom:12px}._cacheSectionHeader_1958y_330{font-size:13px;font-weight:600;color:var(--text-primary);margin-bottom:6px;cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:4px}._cacheCollapseArrow_1958y_342{display:inline-block;transition:transform .2s;font-size:10px}._cachePre_1958y_348{white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.5;color:var(--text-secondary);background:var(--bg-container);border:1px solid var(--border-primary);border-radius:4px;padding:8px;margin:4px 0;font-family:var(--font-mono)}._cacheHighlightSvg_1958y_362{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible}._cachePreSystem_1958y_371{white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.5;color:var(--text-secondary);background:var(--bg-code-system);border:1px solid var(--border-code-system);border-radius:4px;padding:8px;margin:4px 0;font-family:var(--font-mono)}._container_1958y_1 .ant-tabs>.ant-tabs-nav{margin-bottom:0}._container_1958y_1 .ant-tabs{flex:1;min-height:0;display:flex;flex-direction:column}._container_1958y_1 .ant-tabs>.ant-tabs-content-holder{flex:1;min-height:0}._container_1958y_1 .ant-tabs-content,._container_1958y_1 .ant-tabs-tabpane-active{height:100%}._resizer_pzn4b_1{width:6px;cursor:col-resize;background:var(--bg-elevated);flex-shrink:0;transition:background .2s}._resizer_pzn4b_1:hover{background:var(--color-primary-light)}._flag_1q4ri_3{display:inline-flex;align-items:center;justify-content:center;font-size:13px;line-height:1;cursor:help;-webkit-user-select:none;user-select:none;height:14px;background:none;border:none;padding:0;color:inherit;font-family:inherit}._flag_1q4ri_3:focus-visible{outline:2px solid var(--primary-color, #1677ff);outline-offset:2px;border-radius:2px}._popover_1q4ri_27{color:var(--text-secondary);font-size:13px;line-height:22px}._meta_1q4ri_33{color:var(--text-tertiary);font-size:12px}._usagePill_4carx_4{position:relative;display:inline-flex;align-items:center;justify-content:flex-start;border-radius:999px;border:1px solid;border-color:var(--text-disabled);color:var(--text-disabled);padding:0 7px;height:15px;font-size:11px;line-height:1;overflow:hidden;white-space:nowrap;cursor:default;background:var(--bg-base-pure)}._usageFill_4carx_12{position:absolute;left:0;top:0;bottom:0;width:var(--usage-percent, 0);background-color:#999;opacity:.2;transition:width .5s ease;pointer-events:none}._usageContent_4carx_38{position:relative;z-index:1;display:inline-flex;align-items:center}._usageText_4carx_45{font-variant-numeric:tabular-nums}._pop_4carx_50{min-width:220px;font-size:12px;color:var(--text-primary)}._popTitle_4carx_56{font-weight:600;margin-bottom:6px}._popTable_4carx_62{border-collapse:collapse}._popTable_4carx_62 td{padding-top:3px;padding-bottom:3px;vertical-align:middle}._tdName_4carx_67{color:var(--text-secondary);padding-right:5px;white-space:nowrap}._tdBar_4carx_67{padding-right:5px;white-space:nowrap}._tdReset_4carx_85{color:var(--text-secondary);font-variant-numeric:tabular-nums;white-space:nowrap}._bar_4carx_94{position:relative;display:inline-flex;align-items:center;justify-content:center;width:100px;height:14px;border-radius:999px;border:1px solid var(--text-disabled);overflow:hidden;background:var(--bg-base-pure);vertical-align:middle}._barFill_4carx_108{position:absolute;left:0;top:0;bottom:0;background-color:var(--text-secondary);opacity:.15;pointer-events:none}._barText_4carx_118{position:relative;z-index:1;font-size:11px;line-height:1;font-variant-numeric:tabular-nums;color:var(--text-primary)}
|