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.
@@ -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' && _broadcastWs
752
- && Array.isArray(msg.slash_commands) && msg.slash_commands.length > 0
753
- && msg.session_id !== _initAnnouncedSid) {
754
- _initAnnouncedSid = msg.session_id;
755
- _lastInitSnapshot = {
756
- type: 'sdk-init',
757
- sessionId: msg.session_id,
758
- model: msg.model,
759
- slashCommands: msg.slash_commands,
760
- tools: msg.tools,
761
- cwd: _cwd,
762
- instanceKey,
763
- };
764
- _broadcastWs(_lastInitSnapshot);
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
- const fproj = (typeof frame.cwd === 'string' && frame.cwd) ? _base(frame.cwd) : null;
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) return;
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)}