cc-viewer 1.5.11 → 1.5.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -8
- package/cli.js +13 -0
- package/dist/assets/{index-BHg-RdY_.js → index-Db56U3Ow.js} +223 -223
- package/dist/assets/{index-CVapOkt0.css → index-DuRhaLLC.css} +2 -2
- package/dist/index.html +2 -2
- package/interceptor.js +7 -2
- package/lib/plugin-loader.js +1 -0
- package/package.json +1 -1
- package/pty-manager.js +5 -1
- package/server.js +110 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
body{margin:0;background-color:#0d0d0d}*{scrollbar-width:thin;scrollbar-color:#3a3a3a #0d0d0d}@media(pointer:coarse){*{scrollbar-width:auto;scrollbar-color:auto}}@media(pointer:fine){*::-webkit-scrollbar{width:6px;height:6px}*::-webkit-scrollbar-track{background:#0d0d0d}*::-webkit-scrollbar-thumb{background:#3a3a3a;border-radius:3px}*::-webkit-scrollbar-thumb:hover{background:#555}}.code-highlight{color:#e6edf3}.hl-keyword{color:#ff7b72}.hl-string{color:#a5d6ff}.hl-comment{color:#8b949e;font-style:italic}.hl-number{color:#79c0ff}.hl-linenum{color:#484f58;-webkit-user-select:none;user-select:none}.chat-md pre{background:#0d1117;border:1px solid #2a2a2a;border-radius:6px;padding:12px;overflow-x:auto;font-size:13px;line-height:1.5}.chat-md code{background:#1a1a2e;padding:2px 6px;border-radius:4px;font-size:13px;color:#e5e7eb}.chat-md pre code{background:none;padding:0}.chat-md p{margin:6px 0}.chat-md ul,.chat-md ol{padding-left:20px;margin:6px 0}.chat-md li{margin:2px 0}.chat-md h1,.chat-md h2,.chat-md h3{margin:12px 0 6px;color:#fff}.chat-md h1{font-size:1.3em}.chat-md h2{font-size:1.15em}.chat-md h3{font-size:1.05em}.chat-md blockquote{border-left:3px solid #3b82f6;margin:8px 0;padding:4px 12px;color:#9ca3af}.chat-md table{border-collapse:collapse;margin:8px 0;font-size:13px}.chat-md th,.chat-md td{border:1px solid #2a2a2a;padding:6px 10px}.chat-md th{background:#1a1a1a;color:#fff}.chat-md a{color:#60a5fa}.chat-md hr{border:none;border-top:1px solid #2a2a2a;margin:12px 0}.chat-md strong{color:#f1f5f9}.chat-md em{color:#cbd5e1}.ant-tooltip .ant-tooltip-inner{background-color:#090909}.ant-tooltip .ant-tooltip-arrow:before,.ant-tooltip .ant-tooltip-arrow:after{background:#090909}._helpBtn_ovmho_1{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:#1a1a1a;border:1px solid #444;color:#aaa;font-size:11px;line-height:1;cursor:pointer;margin-left:4px;vertical-align:middle;transition:background .2s;-webkit-user-select:none;user-select:none}._helpBtn_ovmho_1:hover{background:#333}._modalBody_ovmho_24{max-height:60vh;overflow-y:auto;overflow-x:hidden;line-height:1.7;color:#d9d9d9;word-break:break-word}._modalBody_ovmho_24 h1,._modalBody_ovmho_24 h2,._modalBody_ovmho_24 h3{margin-top:.8em;color:#f0f0f0}._modalBody_ovmho_24 p{margin:.5em 0}._modalBody_ovmho_24 code{background:#2a2a2a;padding:1px 4px;border-radius:3px;font-size:.9em;color:#e8ab6a}._modalBody_ovmho_24 pre{background:#1a1a1a;padding:12px;border-radius:6px;overflow-x:auto;color:#d9d9d9;max-width:100%;box-sizing:border-box}._modalBody_ovmho_24 a{color:#5b9bd5}._modalBody_ovmho_24 strong{color:#f0f0f0}._spinWrap_ovmho_70{display:flex;justify-content:center;padding:40px 0}._modalBody_ovmho_24 textarea{width:100%;min-height:200px;background:#1a1a1a;color:#d9d9d9;font-family:monospace;font-size:13px;line-height:1.6;border:1px solid #333;border-radius:6px;padding:10px 14px;resize:vertical;outline:none;box-sizing:border-box}@media(max-width:768px){._modalBody_ovmho_24{font-size:13px;line-height:1.6;max-height:75vh}._modalBody_ovmho_24 h1{font-size:18px}._modalBody_ovmho_24 h2{font-size:16px}._modalBody_ovmho_24 h3{font-size:14px}._modalBody_ovmho_24 pre{font-size:12px;padding:8px}._modalBody_ovmho_24 code,._modalBody_ovmho_24 textarea{font-size:12px}}._headerBar_1oh31_2{display:flex;align-items:center;justify-content:space-between;width:100%;height:100%}._titleText_1oh31_11{color:#fff;font-size:18px;cursor:pointer}._logoImage_1oh31_17{height:24px;width:24px;margin-right:6px;border-radius:3px;vertical-align:text-bottom}._titleArrow_1oh31_25{font-size:12px;margin-left:4px}._tokenStatsTag_1oh31_31{border-radius:12px;cursor:pointer;background:#2a2a2a;border:1px solid #3a3a3a;color:#ccc}._tokenStatsIcon_1oh31_39{margin-right:4px}._liveTag_1oh31_44{border-radius:12px}._liveDotWrap_1oh31_48{display:inline-flex;align-items:center;justify-content:center;width:10px;height:10px;vertical-align:middle;margin-right:2px;position:relative;top:-1px}._liveTag_1oh31_44 .ant-badge-status-processing{animation:_breathe_1oh31_1 2.5s ease-in-out infinite}@keyframes _breathe_1oh31_1{0%,to{opacity:.4;transform:scale(.85)}50%{opacity:1;transform:scale(1.15)}}._liveSpinner_1oh31_70{display:block;animation:_spinPlusStar_1oh31_1 2s linear infinite}._liveSpinnerDiag_1oh31_75{animation:_diagFade_1oh31_1 2s ease-in-out infinite}@keyframes _spinPlusStar_1oh31_1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes _diagFade_1oh31_1{0%,to{opacity:1}50%{opacity:0}}._inflightList_1oh31_90{min-width:180px}._inflightItem_1oh31_94{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:12px}._inflightItem_1oh31_94+._inflightItem_1oh31_94{border-top:1px solid #333}._inflightTag_1oh31_106{color:#52c41a;font-weight:500;white-space:nowrap}._inflightModel_1oh31_112{color:#999;white-space:nowrap}._inflightTime_1oh31_117{color:#666;margin-left:auto;white-space:nowrap}._liveTagHistory_1oh31_123{background:#2a2a2a;border-color:#424242;color:#d1d5db}._liveTagText_1oh31_129{margin-left:4px}._countdownStrong_1oh31_134{font-variant-numeric:tabular-nums}._qrcodePopover_1oh31_139{display:flex;flex-direction:column;align-items:center;padding:8px}._qrcodeSection_1oh31_146{display:flex;flex-direction:column;align-items:center;padding:16px;margin-bottom:12px;border:1px solid #333;border-radius:8px;background:#111}._qrcodeTitle_1oh31_157{font-size:14px;font-weight:600;color:#e5e5e5;margin-bottom:12px}._qrcodeUrlInput_1oh31_164{margin-top:12px;font-size:12px;font-family:Menlo,Monaco,monospace}._qrcodeUrlCopy_1oh31_170{cursor:pointer;color:#888;transition:color .2s}._qrcodeUrlCopy_1oh31_170:hover{color:#3b82f6}._settingsGroupBox_1oh31_181{border:1px solid #333;border-radius:8px;background:#111;padding:4px 16px;margin-bottom:12px}._settingsGroupTitle_1oh31_189{font-size:14px;font-weight:600;color:#e5e5e5;padding:12px 0 4px;border-bottom:1px solid #333}._settingsItem_1oh31_198{display:flex;justify-content:space-between;align-items:center;padding:12px 0}._settingsLabel_1oh31_205{font-size:14px}._tokenStatsEmpty_1oh31_210{padding:8px 4px;color:#999;font-size:13px}._tokenStatsContainer_1oh31_217{display:flex;gap:12px;align-items:flex-start}._tokenStatsColumn_1oh31_223{min-width:240px}._toolStatsColumn_1oh31_227{min-width:180px}._modelCard_1oh31_232{border:1px solid #333;border-radius:6px;padding:8px 10px;background:#111}._modelCardSpaced_1oh31_239{margin-bottom:10px}._modelName_1oh31_245{font-size:13px;font-weight:600;color:#e5e5e5;margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid #333}._statsTable_1oh31_255{width:100%;border-collapse:collapse}._th_1oh31_260{padding:2px 12px;font-size:12px;font-family:monospace;white-space:nowrap;color:#888;font-weight:400;text-align:right}._td_1oh31_270{padding:2px 12px;font-size:12px;font-family:monospace;white-space:nowrap;color:#e5e5e5;text-align:right}._label_1oh31_279{padding:2px 12px;font-size:12px;font-family:monospace;white-space:nowrap;color:#aaa;font-weight:400;text-align:left}._rowBorder_1oh31_289{border-bottom:1px solid #2a2a2a}._rebuildCard_1oh31_293{border:1px solid #333;border-radius:6px;padding:8px 10px;margin-top:10px;background:#111}._rebuildTotalRow_1oh31_301{border-top:1px solid #444}._rebuildTotalRow_1oh31_301 td{font-weight:600}._promptExportBar_1oh31_310{margin-bottom:12px}._promptScrollArea_1oh31_314{max-height:500px;overflow:auto}._promptEmpty_1oh31_319{color:#999;padding:12px}._promptTimestamp_1oh31_325{color:#666;font-size:12px;margin:12px 0 4px;padding-bottom:6px}._textPromptCard_1oh31_333{margin:4px 0;background:#141414;border-radius:6px;border:1px solid #303030;padding:10px 14px}._preText_1oh31_342{white-space:pre-wrap;word-break:break-word;font-size:13px;line-height:1.6;color:#d9d9d9;margin:4px 0}._systemCollapse_1oh31_352{margin:4px 0;background:#1a1a1a;border:1px solid #303030;border-radius:6px}._systemLabel_1oh31_359{color:#888;font-size:12px}._preSys_1oh31_364{white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.5;color:#999;margin:0}._promptTextarea_1oh31_374{box-sizing:border-box;background:#000;width:100%;min-height:400px;color:#d9d9d9;font-family:monospace;font-size:13px;line-height:1.6;border:none;resize:vertical;padding:10px 14px;outline:none}._projectStatsCenter_1oh31_390{display:flex;justify-content:center;padding:40px 0}._projectStatsEmpty_1oh31_396{color:#999;padding:40px 0;text-align:center;font-size:13px}._projectStatsContent_1oh31_403{display:flex;flex-direction:column;gap:16px}._projectStatsUpdated_1oh31_409{color:#666;font-size:12px;text-align:right}._projectStatsSummary_1oh31_415{display:grid;grid-template-columns:1fr 1fr;gap:10px}._projectStatCard_1oh31_421{background:#111;border:1px solid #333;border-radius:8px;padding:14px 12px;text-align:center}._projectStatValue_1oh31_429{font-size:22px;font-weight:700;color:#e5e5e5;font-family:monospace;font-variant-numeric:tabular-nums}._projectStatLabel_1oh31_437{font-size:12px;color:#888;margin-top:4px}._projectStatsSection_1oh31_443{display:flex;flex-direction:column;gap:10px}._projectStatsSectionTitle_1oh31_449{font-size:14px;font-weight:600;color:#ccc;padding-bottom:4px;border-bottom:1px solid #333}._projectStatsModelCard_1oh31_457{background:#111;border:1px solid #333;border-radius:6px;padding:10px 12px}._projectStatsModelHeader_1oh31_464{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid #333}._projectStatsModelName_1oh31_473{font-size:13px;font-weight:600;color:#e5e5e5}._projectStatsModelCount_1oh31_479{font-size:12px;color:#888;font-family:monospace}._pluginDirHint_1oh31_486{margin-bottom:12px;font-size:12px;color:#888}._pluginDirPath_1oh31_492{font-family:Menlo,Monaco,monospace;color:#aaa;cursor:pointer;padding:1px 4px;border-radius:3px;background:#1a1a1a}._pluginDirPath_1oh31_492:hover{color:#3b82f6}._pluginList_1oh31_505{display:flex;flex-direction:column;gap:8px}._pluginItem_1oh31_511{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border:1px solid #303030;border-radius:6px;background:#141414}._pluginInfo_1oh31_521{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}._pluginName_1oh31_529{font-size:14px;color:#e5e5e5;font-weight:500}._pluginFile_1oh31_535{font-size:12px;color:#666;font-family:Menlo,Monaco,monospace}._pluginHooks_1oh31_541{display:flex;gap:4px;flex-wrap:wrap;margin-top:2px}._pluginHookTag_1oh31_548{font-size:11px;padding:0 5px;border-radius:3px;background:#1e3a5f;color:#6cb6ff;line-height:18px}._pluginActions_1oh31_557{display:flex;align-items:center;gap:8px;flex-shrink:0;margin-left:12px}._pluginEmpty_1oh31_565{text-align:center;padding:32px 0;color:#999}._centerEmpty_oxhcp_1{display:flex;align-items:center;justify-content:center;height:100%}._scrollContainer_oxhcp_8{overflow:auto;height:100%;-webkit-overflow-scrolling:touch;will-change:scroll-position}._listItem_oxhcp_15{cursor:pointer;padding:8px 12px;border-left:3px solid transparent;border-bottom:1px solid #1f1f1f;transition:background .15s}._listItem_oxhcp_15:hover{background:#151515}._listItemActive_oxhcp_27{background:#1a2332;border-left-color:#3b82f6}._listItemActive_oxhcp_27:hover{background:#1a2332}._itemContent_oxhcp_36{width:100%;min-width:0}._itemHeader_oxhcp_41{display:flex;align-items:center;gap:6px;margin-bottom:4px;font-size:12px}._tagNoMargin_oxhcp_49{margin:0;font-size:12px}._modelName_oxhcp_54{font-size:12px}._time_oxhcp_58{font-size:12px;color:#6b7280;margin-left:auto}._detailRow_oxhcp_64{display:flex;gap:8px;font-size:12px;align-items:center}._urlText_oxhcp_71{color:#555;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}._duration_oxhcp_80{color:#6b7280;flex-shrink:0}._statusOk_oxhcp_85{color:#52c41a;opacity:.5;flex-shrink:0}._statusErr_oxhcp_91{color:#ef4444;flex-shrink:0}._statusDefault_oxhcp_96{color:#9ca3af;flex-shrink:0}._usageBox_oxhcp_101{background:#111;border-radius:4px;padding:3px 6px;margin-top:4px;font-size:12px;color:#6b7280;line-height:1.6}._cacheDot_oxhcp_111{display:inline-block;width:6px;height:6px;border-radius:50%;margin:0 3px;vertical-align:middle}._cacheDotLoss_oxhcp_120{background-color:#8b1a1a;cursor:help}._cacheDotNormal_oxhcp_125{background-color:#3a3a3a}._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_1h2lr_1{background:#0d1117;border-radius:6px;border:1px solid #2a2a2a;padding:12px;font-size:13px;font-family:monospace;overflow:auto}._tag_17wfp_1{display:inline-block;font-size:10px;color:#6b7280;background:#ffffff0f;border:1px solid rgba(255,255,255,.1);border-radius:3px;padding:0 4px;margin-left:6px;cursor:pointer;line-height:18px;vertical-align:middle;transition:color .2s,border-color .2s;-webkit-user-select:none;user-select:none}._tag_17wfp_1:hover{color:#93c5fd;border-color:#93c5fd4d}._tagActive_17wfp_22{color:#93c5fd;border-color:#93c5fd40}._tagLoading_17wfp_27{cursor:wait;opacity:.7}._spinner_17wfp_32{display:inline-block;width:10px;height:10px;border:1.5px solid rgba(147,197,253,.3);border-top-color:#93c5fd;border-radius:50%;animation:_spin_17wfp_32 .6s linear infinite;margin-right:3px;vertical-align:middle}@keyframes _spin_17wfp_32{to{transform:rotate(360deg)}}._root_1bepf_1{display:flex;height:100%;min-height:0;gap:0}._sidebar_1bepf_9{width:220px;flex-shrink:0;border-right:1px solid #2a2a2a;overflow-y:auto;padding:4px 0;-webkit-overflow-scrolling:touch}._section_1bepf_18{-webkit-user-select:none;user-select:none}._sectionHeader_1bepf_22{display:flex;align-items:center;gap:6px;padding:6px 10px;cursor:pointer;color:#d1d5db;font-size:12px;font-weight:600;transition:background .15s}._sectionHeader_1bepf_22:hover{background:#ffffff0d}._arrow_1bepf_38{font-size:10px;color:#888;flex-shrink:0}._sectionTitle_1bepf_44{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._sectionCount_1bepf_52{font-size:11px;color:#666;background:#1f1f1f;border-radius:10px;padding:0 6px;line-height:18px}._sectionBody_1bepf_61{padding:2px 0}._historyToggle_1bepf_66{display:flex;align-items:center;gap:6px;padding:4px 10px 4px 14px;cursor:pointer;color:#666;font-size:11px;transition:color .15s,background .15s}._historyToggle_1bepf_66:hover{color:#888;background:#ffffff08}._historyToggleLabel_1bepf_82{flex:1}._item_1bepf_87{display:flex;align-items:center;justify-content:space-between;padding:5px 10px 5px 24px;font-size:12px;color:#888;cursor:pointer;transition:background .15s,color .15s}._item_1bepf_87:hover{background:#ffffff0a;color:#d1d5db}._itemActive_1bepf_103{background:#63b3ed1f;color:#63b3ed}._itemActive_1bepf_103:hover{background:#63b3ed29;color:#63b3ed}._itemContent_1bepf_113{flex:1;min-width:0;overflow:hidden}._itemLabel_1bepf_119{font-family:monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}._itemSublabel_1bepf_127{font-size:10px;color:#555;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}._itemTime_1bepf_136{font-size:9px;color:#555;flex-shrink:0;margin-left:4px;font-family:monospace}._content_1bepf_145{flex:1;min-width:0;overflow:auto;padding:12px 16px;-webkit-overflow-scrolling:touch}._contentEmpty_1bepf_153{height:100%;display:flex;align-items:center;justify-content:center}._contentInner_1bepf_160{padding-bottom:20px}._emptyWrap_1bepf_164{display:flex;align-items:center;justify-content:center;height:200px}._roleHeader_1bepf_172{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:nowrap}._roleBadge_1bepf_180{font-size:10px;font-weight:600;letter-spacing:.04em;padding:2px 7px;border-radius:4px;flex-shrink:0}._role_user_1bepf_189{background:#3b82f62e;color:#60a5fa;border:1px solid rgba(59,130,246,.3)}._role_assistant_1bepf_195{background:#8b5cf62e;color:#a78bfa;border:1px solid rgba(139,92,246,.3)}._roleLabel_1bepf_201{font-size:11px;color:#666;flex:1;min-width:0}._contentTime_1bepf_208{margin-left:auto;font-size:10px;color:#555;font-family:monospace;flex-shrink:0}._turnDivider_1bepf_216{border:none;border-top:1px solid #1e1e1e;margin:14px 0}._textBlock_1bepf_223{margin-bottom:8px;border:1px solid #222;border-radius:6px;overflow:hidden}._textBlockBar_1bepf_230{display:flex;align-items:center;gap:6px;padding:4px 10px;background:#141414;border-bottom:1px solid #222}._textBlockBody_1bepf_239{padding:10px 12px;font-size:13px;line-height:1.7;color:#d1d5db;word-break:break-word}._textBlockCompact_1bepf_247{position:relative;padding:8px 10px;font-size:12px;color:#aaa}._textBlockCompactFloat_1bepf_254{float:right;margin-left:6px;margin-bottom:2px}._thinkingBlock_1bepf_261{margin-bottom:8px;border:1px solid #2a2a1e;border-radius:6px;overflow:hidden;background:#111108}._thinkingHeader_1bepf_269{display:flex;align-items:center;gap:6px;padding:5px 10px;cursor:pointer;font-size:12px;color:#888;transition:background .15s}._thinkingHeader_1bepf_269:hover{background:#ffffc808}._thinkingPreview_1bepf_284{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#666;font-size:11px}._thinkingBody_1bepf_294{padding:8px 12px;border-top:1px solid #2a2a1e}._toolBlock_1bepf_300{margin-bottom:8px;border:1px solid #222;border-radius:6px;overflow:hidden}._toolBlockResult_1bepf_307{border-color:#1a2a1a}._toolBlockError_1bepf_311{border-color:#2a1a1a}._toolBlockHeader_1bepf_315{display:flex;align-items:center;gap:8px;padding:5px 10px;background:#141414;border-bottom:1px solid #222;font-size:12px;flex-wrap:wrap}._toolBlockBody_1bepf_326{padding:8px 10px;font-size:12px}._toolName_1bepf_331{color:#d1d5db;font-weight:500;font-family:monospace}._toolId_1bepf_337{color:#555;font-size:10px;font-family:monospace;margin-left:auto}._errorLabel_1bepf_344{font-size:10px;color:#f87171;background:#ef44441f;border:1px solid rgba(239,68,68,.25);border-radius:3px;padding:1px 5px}._blockTag_1bepf_354{font-size:9px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:1px 5px;border-radius:3px;background:#1a1a1a;color:#666;border:1px solid #2a2a2a;flex-shrink:0}._blockTagText_1bepf_367{background:#3b82f61a;color:#60a5fa;border-color:#3b82f633}._blockTagThinking_1bepf_373{background:#eab3081a;color:#ca8a04;border-color:#eab30833}._blockTagResult_1bepf_379{background:#22c55e1a;color:#4ade80;border-color:#22c55e33}._blockTagError_1bepf_385{background:#ef44441a;color:#f87171;border-color:#ef444433}._jsonBlock_1bepf_392{margin-bottom:8px;border:1px solid #222;border-radius:6px;overflow:hidden}._jsonBlockLabel_1bepf_399{font-size:10px;color:#666;padding:3px 10px;background:#141414;border-bottom:1px solid #222;font-family:monospace}._blockSeparator_1bepf_409{border:none;border-top:1px solid #2a2a2a;margin:16px 0}._markdownBody_1bepf_416{font-size:13px;line-height:1.7;color:#d1d5db;word-break:break-word}._container_i6t4e_1{height:100%;overflow:auto;padding:0 16px;-webkit-overflow-scrolling:touch;will-change:scroll-position}._emptyState_i6t4e_9{display:flex;align-items:center;justify-content:center;height:100%}._urlSection_i6t4e_16{padding:12px 0;border-bottom:1px solid #1f1f1f;display:flex;align-items:flex-start}._urlLeft_i6t4e_23{flex:1;min-width:0}._tokenStatsBox_i6t4e_28{flex-shrink:0;padding-left:12px;display:flex;align-items:center}._tokenGrid_i6t4e_35{display:flex;border:1px solid #303030;border-radius:6px;overflow:hidden;min-width:360px;font-size:11px;line-height:1.6}._tokenRows_i6t4e_45{flex:1}._tokenRow_i6t4e_45{display:flex}._tokenRowBorder_i6t4e_53{border-top:1px solid #303030}._tokenLabel_i6t4e_57{color:#888;padding:4px 8px;white-space:nowrap;font-weight:600}._tokenTd_i6t4e_64{flex:1;color:#d1d5db;text-align:right;padding:4px 8px;font-family:monospace;white-space:nowrap}._tokenHitRate_i6t4e_73{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#d1d5db;padding:4px 8px;font-family:monospace;white-space:nowrap;border-left:1px solid #303030;min-width:100px}._tokenHitRateLabel_i6t4e_86{color:#888;font-size:10px;font-family:sans-serif}._tokenRowBorder_i6t4e_53 td{border-top:1px solid #303030}._urlText_i6t4e_96{color:#d1d5db;font-size:13px;margin-bottom:8px;word-break:break-all}._metaText_i6t4e_103,._headersContainer_i6t4e_107{font-size:12px}._headerRow_i6t4e_111{display:flex;padding:4px 0;border-bottom:1px solid #1f1f1f}._headerKey_i6t4e_117{min-width:200px;flex-shrink:0}._headerValue_i6t4e_122{word-break:break-all;margin-left:8px}._streamingBox_i6t4e_127{padding:20px;background:#1a1a1a;border-radius:6px;border:1px solid #2a2a2a}._bodyToolbar_i6t4e_134{display:flex;gap:8px;margin-bottom:8px}._rawTextPre_i6t4e_140{background:#0d1117;border:1px solid #2a2a2a;border-radius:6px;padding:12px;font-size:12px;color:#e5e7eb;overflow:auto;max-height:600px;white-space:pre-wrap;word-break:break-all}._tabContent_i6t4e_153{padding:12px 0}._collapseSpacing_i6t4e_157{margin-bottom:16px}._bodyLabel_i6t4e_161{margin:0}._bodyHeader_i6t4e_165{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}._diffSection_i6t4e_172{margin-bottom:16px}._diffToggle_i6t4e_176{display:inline-block;margin-bottom:8px;cursor:pointer}._diffIcon_i6t4e_182{font-size:12px;margin-left:4px}._viewInChatBtn_i6t4e_187{display:inline-flex;align-items:center;height:26px;border-radius:13px;border:1px solid #424242;background:transparent;color:#888;cursor:pointer;font-size:12px;transition:all .2s;padding:0 10px;white-space:nowrap}._viewInChatBtn_i6t4e_187:hover{border-color:#666;color:#d1d5db;background:#ffffff0f}._reminderSelect_i6t4e_208{min-width:140px;font-size:12px}._reminderSelect_i6t4e_208 .ant-select-selector{border-radius:2px!important;border-color:#424242!important;background:transparent!important;min-height:26px!important;height:auto!important;padding:0 8px!important;font-family:monospace}._reminderSelect_i6t4e_208 .ant-select-selection-placeholder{font-size:11px}._wrapper_1rnhz_1{margin:6px 0;background:#1a1a2e;border:1px solid #2a2a3e;border-radius:8px;padding:8px 12px}._header_1rnhz_9{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}._headerRight_1rnhz_16{display:flex;align-items:center;gap:12px;flex-shrink:0;white-space:nowrap}._filePath_1rnhz_24{color:#a78bfa;font-size:12px;font-weight:600}._toggle_1rnhz_30{color:#6b7280;font-size:11px;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;flex-shrink:0}._diffSummary_1rnhz_39{font-size:11px;color:#6b7280}._diffBody_1rnhz_46{display:flex;font-family:SF Mono,Cascadia Code,Fira Code,Menlo,Consolas,monospace;font-size:12px;line-height:1.5}._gutter_1rnhz_54{flex-shrink:0;-webkit-user-select:none;user-select:none}._gutterRow_1rnhz_59{display:flex;height:18px}._lineNumOld_1rnhz_64,._lineNumNew_1rnhz_65{text-align:right;color:#484f58;padding:0 6px 0 2px;box-sizing:border-box}._prefix_1rnhz_72{width:16px;min-width:16px;text-align:center;font-weight:600}._codeWrap_1rnhz_80{flex:1;min-width:0;overflow-x:auto}._codeInner_1rnhz_87{display:inline-block;min-width:100%}._codeLine_1rnhz_92{white-space:pre;padding:0 4px;height:18px}._rowContext_1rnhz_100{background:#1a1a2e;color:#8b949e}._rowDel_1rnhz_105{background:#ef44441f;color:#fca5a5}._rowDel_1rnhz_105._gutterRow_1rnhz_59{background:#341f31}._rowDel_1rnhz_105._gutterRow_1rnhz_59 ._prefix_1rnhz_72{color:#ef4444}._rowAdd_1rnhz_116{background:#22c55e1f;color:#86efac}._rowAdd_1rnhz_116._gutterRow_1rnhz_59{background:#1b2f34}._rowAdd_1rnhz_116._gutterRow_1rnhz_59 ._prefix_1rnhz_72{color:#22c55e}._rowContext_1rnhz_100._gutterRow_1rnhz_59{background:#1a1a2e}._plainResult_1uh60_1{background:#111;border-radius:6px;font-size:12px}._plainTitle_1uh60_7{font-size:11px}._plainPre_1uh60_11{color:#d1d5db;margin:0;white-space:pre-wrap;word-break:break-all;font-size:12px;padding:8px 12px}._codeResult_1uh60_20{background:#0d1117;border-radius:6px;border:1px solid #1e2a3a;overflow:hidden}._codeHeader_1uh60_27{display:flex;justify-content:space-between;align-items:center;padding:4px 10px;background:#161b22;border-bottom:1px solid #1e2a3a}._codeTitle_1uh60_36{font-size:11px;color:#8b949e}._codeToggle_1uh60_41{font-size:11px;color:#484f58;cursor:pointer;-webkit-user-select:none;user-select:none}._codePre_1uh60_48{margin:0;padding:8px 12px;font-size:12px;line-height:1.5;overflow:auto;max-height:500px}._markdownBody_1uh60_57{padding:8px 12px;font-size:13px;line-height:1.6;overflow:auto;max-height:500px}._avatar_10ipe_3{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}._avatarImg_10ipe_13{width:32px;height:32px;border-radius:50%;flex-shrink:0;object-fit:cover}._bubble_10ipe_21{border-radius:8px;padding:10px 14px;max-width:100%;font-size:14px;line-height:1.6;word-break:break-word}._messageRow_10ipe_32{display:flex;gap:10px;padding:8px 0}._messageRowEnd_10ipe_38{display:flex;gap:10px;padding:8px 0;justify-content:flex-end}._contentCol_10ipe_47{min-width:0;flex:1}._contentColLimited_10ipe_52{min-width:0;max-width:80%;width:fit-content}._labelRow_10ipe_60{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px}._labelRowEnd_10ipe_67{display:flex;justify-content:flex-end;align-items:center;margin-bottom:2px}._labelRight_10ipe_74{display:flex;align-items:center;gap:4px;flex-shrink:0;margin-left:auto}._labelText_10ipe_82{font-size:11px}._timeText_10ipe_86,._timeTextNoMargin_10ipe_92{font-size:10px;color:#6b7280;flex-shrink:0}._labelTextRight_10ipe_98{font-size:11px;margin-left:auto}._bubbleUser_10ipe_105{background:#1668dc;color:#e5e7eb}._bubbleAssistant_10ipe_111{background:#141414;color:#e5e7eb;transition:box-shadow 0s;position:relative}._bubbleHighlight_10ipe_119{box-shadow:0 0 10px #1668dc99}._bubbleHighlightFading_10ipe_123{box-shadow:0 0 10px #1668dc00;transition:box-shadow 5s ease-out}._borderSvg_10ipe_128{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible}._borderSvgFading_10ipe_137{opacity:0;transition:opacity 5s ease-out}._borderRect_10ipe_142{animation:_dashRotate_10ipe_1 4s linear infinite}@keyframes _dashRotate_10ipe_1{0%{stroke-dashoffset:0}to{stroke-dashoffset:-100}}._bubblePlan_10ipe_151{background:#141428;border:5px solid #1668dc;font-size:12px;color:#e5e7eb}._bubbleSubAgent_10ipe_159{background:#1a1a2e;color:#e5e7eb}._bubbleSelection_10ipe_165{background:#1a3a1a;color:#e5e7eb}._systemTagLabel_10ipe_173{font-size:12px}._skillLabel_10ipe_177{font-size:12px;color:#a78bfa}._systemTagPre_10ipe_182{font-size:12px;color:#9ca3af;white-space:pre-wrap;word-break:break-all;margin:0}._collapseMargin_10ipe_190{margin:4px 0}._collapseNoMargin_10ipe_194{margin:0}._thinkingLabel_10ipe_200{font-size:12px}._bashCollapseLabel_10ipe_204{font-size:12px;color:#9ca3af}._toolBox_10ipe_211{background:#1a1a2e;border:1px solid #2a2a3e;border-radius:8px;padding:8px 12px;margin:6px 0;font-size:12px}._toolLabel_10ipe_220{color:#a78bfa}._codePre_10ipe_226{font-size:12px;margin:4px 0 0;white-space:pre-wrap;word-break:break-all;background:#0d1117;border-radius:4px;padding:6px 8px}._pathTag_10ipe_238{color:#7dd3fc;font-size:11px}._descSpan_10ipe_245{color:#6b7280;font-weight:400}._secondarySpan_10ipe_250{color:#6b7280}._patternSpan_10ipe_254{color:#fbbf24}._kvContainer_10ipe_260{margin-top:4px;font-size:11px}._kvItem_10ipe_265{margin:2px 0}._kvKey_10ipe_269{color:#7dd3fc}._kvValue_10ipe_273{color:#9ca3af}._toolResult_10ipe_279{background:#111827;border:1px solid #1e293b;border-radius:6px;padding:6px 10px;margin:2px 0 6px;font-size:11px}._toolResultLabel_10ipe_288{font-size:11px}._compactLabel_10ipe_294{font-size:12px;color:#93c5fd}._compactPre_10ipe_299{font-size:12px;color:#d1d5db;white-space:pre-wrap;word-break:break-all;margin:0}._viewRequestBtn_10ipe_309{font-size:10px;color:#555;cursor:pointer;margin-left:6px;flex-shrink:0}._viewRequestBtn_10ipe_309:hover{color:#93c5fd}._optionList_10ipe_323{padding-left:8px}._optionDesc_10ipe_327{color:#555;margin-left:6px;font-weight:400}._questionText_10ipe_335{font-size:13px;color:#ccc;margin-bottom:4px}._questionSpacing_10ipe_341{margin-bottom:10px}._option_10ipe_323{font-size:12px;padding:1px 0}._askQuestionBox_10ipe_354{background:#0d1f0d;border:1px solid #2ea043;border-radius:8px;padding:8px 12px;margin:6px 0;font-size:12px}._askQuestionHeader_10ipe_363{display:inline-block;background:#1a3a1a;color:#7ee787;font-size:10px;padding:1px 6px;border-radius:4px;margin-bottom:4px;font-weight:600}._askQuestionText_10ipe_374{color:#e5e7eb;font-size:13px;margin-bottom:4px}._askOptionItem_10ipe_380{font-size:12px;color:#9ca3af;padding:1px 0}._planModeBox_10ipe_388{background:#0d1528;border:1px solid #1668dc;border-radius:8px;padding:8px 12px;margin:6px 0;font-size:12px}._planModeLabel_10ipe_397{color:#93c5fd;font-weight:600}._planModePermissions_10ipe_402{margin-top:6px;padding-top:6px;border-top:1px solid #1e3a5f}._planModePermLabel_10ipe_408{color:#6b7280;font-size:11px;margin-bottom:2px}/**
|
|
1
|
+
body{margin:0;background-color:#0d0d0d}*{scrollbar-width:thin;scrollbar-color:#3a3a3a #0d0d0d}@media(pointer:coarse){*{scrollbar-width:auto;scrollbar-color:auto}}@media(pointer:fine){*::-webkit-scrollbar{width:6px;height:6px}*::-webkit-scrollbar-track{background:#0d0d0d}*::-webkit-scrollbar-thumb{background:#3a3a3a;border-radius:3px}*::-webkit-scrollbar-thumb:hover{background:#555}}.code-highlight{color:#e6edf3}.hl-keyword{color:#ff7b72}.hl-string{color:#a5d6ff}.hl-comment{color:#8b949e;font-style:italic}.hl-number{color:#79c0ff}.hl-linenum{color:#484f58;-webkit-user-select:none;user-select:none}.chat-md pre{background:#0d1117;border:1px solid #2a2a2a;border-radius:6px;padding:12px;overflow-x:auto;font-size:13px;line-height:1.5}.chat-md code{background:#1a1a2e;padding:2px 6px;border-radius:4px;font-size:13px;color:#e5e7eb}.chat-md pre code{background:none;padding:0}.chat-md p{margin:6px 0}.chat-md ul,.chat-md ol{padding-left:20px;margin:6px 0}.chat-md li{margin:2px 0}.chat-md h1,.chat-md h2,.chat-md h3{margin:12px 0 6px;color:#fff}.chat-md h1{font-size:1.3em}.chat-md h2{font-size:1.15em}.chat-md h3{font-size:1.05em}.chat-md blockquote{border-left:3px solid #3b82f6;margin:8px 0;padding:4px 12px;color:#9ca3af}.chat-md table{border-collapse:collapse;margin:8px 0;font-size:13px}.chat-md th,.chat-md td{border:1px solid #2a2a2a;padding:6px 10px}.chat-md th{background:#1a1a1a;color:#fff}.chat-md a{color:#60a5fa}.chat-md hr{border:none;border-top:1px solid #2a2a2a;margin:12px 0}.chat-md strong{color:#f1f5f9}.chat-md em{color:#cbd5e1}.ant-tooltip .ant-tooltip-inner{background-color:#090909}.ant-tooltip .ant-tooltip-arrow:before,.ant-tooltip .ant-tooltip-arrow:after{background:#090909}.ant-modal-confirm .ant-modal-content{background-color:#1a1a1a;border:1px solid #2a2a2a}.ant-modal-confirm .ant-modal-confirm-title{color:#e6e6e6}.ant-modal-confirm .ant-modal-confirm-content{color:#aaa}.ant-modal-confirm .ant-btn-default{background-color:transparent;border-color:#444;color:#ccc}.ant-modal-confirm .ant-btn-default.ant-btn-default:hover,.ant-modal-confirm .ant-btn-default.ant-btn-default:focus{background-color:#2a2a2a;border-color:#666;color:#fff}.ant-modal-confirm .ant-btn-primary{background-color:#1668dc;border-color:#1668dc}.ant-modal-confirm .ant-btn-primary:hover{background-color:#1554ad;border-color:#1554ad}._helpBtn_ovmho_1{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:#1a1a1a;border:1px solid #444;color:#aaa;font-size:11px;line-height:1;cursor:pointer;margin-left:4px;vertical-align:middle;transition:background .2s;-webkit-user-select:none;user-select:none}._helpBtn_ovmho_1:hover{background:#333}._modalBody_ovmho_24{max-height:60vh;overflow-y:auto;overflow-x:hidden;line-height:1.7;color:#d9d9d9;word-break:break-word}._modalBody_ovmho_24 h1,._modalBody_ovmho_24 h2,._modalBody_ovmho_24 h3{margin-top:.8em;color:#f0f0f0}._modalBody_ovmho_24 p{margin:.5em 0}._modalBody_ovmho_24 code{background:#2a2a2a;padding:1px 4px;border-radius:3px;font-size:.9em;color:#e8ab6a}._modalBody_ovmho_24 pre{background:#1a1a1a;padding:12px;border-radius:6px;overflow-x:auto;color:#d9d9d9;max-width:100%;box-sizing:border-box}._modalBody_ovmho_24 a{color:#5b9bd5}._modalBody_ovmho_24 strong{color:#f0f0f0}._spinWrap_ovmho_70{display:flex;justify-content:center;padding:40px 0}._modalBody_ovmho_24 textarea{width:100%;min-height:200px;background:#1a1a1a;color:#d9d9d9;font-family:monospace;font-size:13px;line-height:1.6;border:1px solid #333;border-radius:6px;padding:10px 14px;resize:vertical;outline:none;box-sizing:border-box}@media(max-width:768px){._modalBody_ovmho_24{font-size:13px;line-height:1.6;max-height:75vh}._modalBody_ovmho_24 h1{font-size:18px}._modalBody_ovmho_24 h2{font-size:16px}._modalBody_ovmho_24 h3{font-size:14px}._modalBody_ovmho_24 pre{font-size:12px;padding:8px}._modalBody_ovmho_24 code,._modalBody_ovmho_24 textarea{font-size:12px}}._headerBar_1oh31_2{display:flex;align-items:center;justify-content:space-between;width:100%;height:100%}._titleText_1oh31_11{color:#fff;font-size:18px;cursor:pointer}._logoImage_1oh31_17{height:24px;width:24px;margin-right:6px;border-radius:3px;vertical-align:text-bottom}._titleArrow_1oh31_25{font-size:12px;margin-left:4px}._tokenStatsTag_1oh31_31{border-radius:12px;cursor:pointer;background:#2a2a2a;border:1px solid #3a3a3a;color:#ccc}._tokenStatsIcon_1oh31_39{margin-right:4px}._liveTag_1oh31_44{border-radius:12px}._liveDotWrap_1oh31_48{display:inline-flex;align-items:center;justify-content:center;width:10px;height:10px;vertical-align:middle;margin-right:2px;position:relative;top:-1px}._liveTag_1oh31_44 .ant-badge-status-processing{animation:_breathe_1oh31_1 2.5s ease-in-out infinite}@keyframes _breathe_1oh31_1{0%,to{opacity:.4;transform:scale(.85)}50%{opacity:1;transform:scale(1.15)}}._liveSpinner_1oh31_70{display:block;animation:_spinPlusStar_1oh31_1 2s linear infinite}._liveSpinnerDiag_1oh31_75{animation:_diagFade_1oh31_1 2s ease-in-out infinite}@keyframes _spinPlusStar_1oh31_1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes _diagFade_1oh31_1{0%,to{opacity:1}50%{opacity:0}}._inflightList_1oh31_90{min-width:180px}._inflightItem_1oh31_94{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:12px}._inflightItem_1oh31_94+._inflightItem_1oh31_94{border-top:1px solid #333}._inflightTag_1oh31_106{color:#52c41a;font-weight:500;white-space:nowrap}._inflightModel_1oh31_112{color:#999;white-space:nowrap}._inflightTime_1oh31_117{color:#666;margin-left:auto;white-space:nowrap}._liveTagHistory_1oh31_123{background:#2a2a2a;border-color:#424242;color:#d1d5db}._liveTagText_1oh31_129{margin-left:4px}._countdownStrong_1oh31_134{font-variant-numeric:tabular-nums}._qrcodePopover_1oh31_139{display:flex;flex-direction:column;align-items:center;padding:8px}._qrcodeSection_1oh31_146{display:flex;flex-direction:column;align-items:center;padding:16px;margin-bottom:12px;border:1px solid #333;border-radius:8px;background:#111}._qrcodeTitle_1oh31_157{font-size:14px;font-weight:600;color:#e5e5e5;margin-bottom:12px}._qrcodeUrlInput_1oh31_164{margin-top:12px;font-size:12px;font-family:Menlo,Monaco,monospace}._qrcodeUrlCopy_1oh31_170{cursor:pointer;color:#888;transition:color .2s}._qrcodeUrlCopy_1oh31_170:hover{color:#3b82f6}._settingsGroupBox_1oh31_181{border:1px solid #333;border-radius:8px;background:#111;padding:4px 16px;margin-bottom:12px}._settingsGroupTitle_1oh31_189{font-size:14px;font-weight:600;color:#e5e5e5;padding:12px 0 4px;border-bottom:1px solid #333}._settingsItem_1oh31_198{display:flex;justify-content:space-between;align-items:center;padding:12px 0}._settingsLabel_1oh31_205{font-size:14px}._tokenStatsEmpty_1oh31_210{padding:8px 4px;color:#999;font-size:13px}._tokenStatsContainer_1oh31_217{display:flex;gap:12px;align-items:flex-start}._tokenStatsColumn_1oh31_223{min-width:240px}._toolStatsColumn_1oh31_227{min-width:180px}._modelCard_1oh31_232{border:1px solid #333;border-radius:6px;padding:8px 10px;background:#111}._modelCardSpaced_1oh31_239{margin-bottom:10px}._modelName_1oh31_245{font-size:13px;font-weight:600;color:#e5e5e5;margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid #333}._statsTable_1oh31_255{width:100%;border-collapse:collapse}._th_1oh31_260{padding:2px 12px;font-size:12px;font-family:monospace;white-space:nowrap;color:#888;font-weight:400;text-align:right}._td_1oh31_270{padding:2px 12px;font-size:12px;font-family:monospace;white-space:nowrap;color:#e5e5e5;text-align:right}._label_1oh31_279{padding:2px 12px;font-size:12px;font-family:monospace;white-space:nowrap;color:#aaa;font-weight:400;text-align:left}._rowBorder_1oh31_289{border-bottom:1px solid #2a2a2a}._rebuildCard_1oh31_293{border:1px solid #333;border-radius:6px;padding:8px 10px;margin-top:10px;background:#111}._rebuildTotalRow_1oh31_301{border-top:1px solid #444}._rebuildTotalRow_1oh31_301 td{font-weight:600}._promptExportBar_1oh31_310{margin-bottom:12px}._promptScrollArea_1oh31_314{max-height:500px;overflow:auto}._promptEmpty_1oh31_319{color:#999;padding:12px}._promptTimestamp_1oh31_325{color:#666;font-size:12px;margin:12px 0 4px;padding-bottom:6px}._textPromptCard_1oh31_333{margin:4px 0;background:#141414;border-radius:6px;border:1px solid #303030;padding:10px 14px}._preText_1oh31_342{white-space:pre-wrap;word-break:break-word;font-size:13px;line-height:1.6;color:#d9d9d9;margin:4px 0}._systemCollapse_1oh31_352{margin:4px 0;background:#1a1a1a;border:1px solid #303030;border-radius:6px}._systemLabel_1oh31_359{color:#888;font-size:12px}._preSys_1oh31_364{white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.5;color:#999;margin:0}._promptTextarea_1oh31_374{box-sizing:border-box;background:#000;width:100%;min-height:400px;color:#d9d9d9;font-family:monospace;font-size:13px;line-height:1.6;border:none;resize:vertical;padding:10px 14px;outline:none}._projectStatsCenter_1oh31_390{display:flex;justify-content:center;padding:40px 0}._projectStatsEmpty_1oh31_396{color:#999;padding:40px 0;text-align:center;font-size:13px}._projectStatsContent_1oh31_403{display:flex;flex-direction:column;gap:16px}._projectStatsUpdated_1oh31_409{color:#666;font-size:12px;text-align:right}._projectStatsSummary_1oh31_415{display:grid;grid-template-columns:1fr 1fr;gap:10px}._projectStatCard_1oh31_421{background:#111;border:1px solid #333;border-radius:8px;padding:14px 12px;text-align:center}._projectStatValue_1oh31_429{font-size:22px;font-weight:700;color:#e5e5e5;font-family:monospace;font-variant-numeric:tabular-nums}._projectStatLabel_1oh31_437{font-size:12px;color:#888;margin-top:4px}._projectStatsSection_1oh31_443{display:flex;flex-direction:column;gap:10px}._projectStatsSectionTitle_1oh31_449{font-size:14px;font-weight:600;color:#ccc;padding-bottom:4px;border-bottom:1px solid #333}._projectStatsModelCard_1oh31_457{background:#111;border:1px solid #333;border-radius:6px;padding:10px 12px}._projectStatsModelHeader_1oh31_464{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid #333}._projectStatsModelName_1oh31_473{font-size:13px;font-weight:600;color:#e5e5e5}._projectStatsModelCount_1oh31_479{font-size:12px;color:#888;font-family:monospace}._pluginDirHint_1oh31_486{margin-bottom:12px;font-size:12px;color:#888}._pluginDirPath_1oh31_492{font-family:Menlo,Monaco,monospace;color:#aaa;cursor:pointer;padding:1px 4px;border-radius:3px;background:#1a1a1a}._pluginDirPath_1oh31_492:hover{color:#3b82f6}._pluginList_1oh31_505{display:flex;flex-direction:column;gap:8px}._pluginItem_1oh31_511{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border:1px solid #303030;border-radius:6px;background:#141414}._pluginInfo_1oh31_521{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}._pluginName_1oh31_529{font-size:14px;color:#e5e5e5;font-weight:500}._pluginFile_1oh31_535{font-size:12px;color:#666;font-family:Menlo,Monaco,monospace}._pluginHooks_1oh31_541{display:flex;gap:4px;flex-wrap:wrap;margin-top:2px}._pluginHookTag_1oh31_548{font-size:11px;padding:0 5px;border-radius:3px;background:#1e3a5f;color:#6cb6ff;line-height:18px}._pluginActions_1oh31_557{display:flex;align-items:center;gap:8px;flex-shrink:0;margin-left:12px}._pluginEmpty_1oh31_565{text-align:center;padding:32px 0;color:#999}._centerEmpty_oxhcp_1{display:flex;align-items:center;justify-content:center;height:100%}._scrollContainer_oxhcp_8{overflow:auto;height:100%;-webkit-overflow-scrolling:touch;will-change:scroll-position}._listItem_oxhcp_15{cursor:pointer;padding:8px 12px;border-left:3px solid transparent;border-bottom:1px solid #1f1f1f;transition:background .15s}._listItem_oxhcp_15:hover{background:#151515}._listItemActive_oxhcp_27{background:#1a2332;border-left-color:#3b82f6}._listItemActive_oxhcp_27:hover{background:#1a2332}._itemContent_oxhcp_36{width:100%;min-width:0}._itemHeader_oxhcp_41{display:flex;align-items:center;gap:6px;margin-bottom:4px;font-size:12px}._tagNoMargin_oxhcp_49{margin:0;font-size:12px}._modelName_oxhcp_54{font-size:12px}._time_oxhcp_58{font-size:12px;color:#6b7280;margin-left:auto}._detailRow_oxhcp_64{display:flex;gap:8px;font-size:12px;align-items:center}._urlText_oxhcp_71{color:#555;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}._duration_oxhcp_80{color:#6b7280;flex-shrink:0}._statusOk_oxhcp_85{color:#52c41a;opacity:.5;flex-shrink:0}._statusErr_oxhcp_91{color:#ef4444;flex-shrink:0}._statusDefault_oxhcp_96{color:#9ca3af;flex-shrink:0}._usageBox_oxhcp_101{background:#111;border-radius:4px;padding:3px 6px;margin-top:4px;font-size:12px;color:#6b7280;line-height:1.6}._cacheDot_oxhcp_111{display:inline-block;width:6px;height:6px;border-radius:50%;margin:0 3px;vertical-align:middle}._cacheDotLoss_oxhcp_120{background-color:#8b1a1a;cursor:help}._cacheDotNormal_oxhcp_125{background-color:#3a3a3a}._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_1h2lr_1{background:#0d1117;border-radius:6px;border:1px solid #2a2a2a;padding:12px;font-size:13px;font-family:monospace;overflow:auto}._tag_17wfp_1{display:inline-block;font-size:10px;color:#6b7280;background:#ffffff0f;border:1px solid rgba(255,255,255,.1);border-radius:3px;padding:0 4px;margin-left:6px;cursor:pointer;line-height:18px;vertical-align:middle;transition:color .2s,border-color .2s;-webkit-user-select:none;user-select:none}._tag_17wfp_1:hover{color:#93c5fd;border-color:#93c5fd4d}._tagActive_17wfp_22{color:#93c5fd;border-color:#93c5fd40}._tagLoading_17wfp_27{cursor:wait;opacity:.7}._spinner_17wfp_32{display:inline-block;width:10px;height:10px;border:1.5px solid rgba(147,197,253,.3);border-top-color:#93c5fd;border-radius:50%;animation:_spin_17wfp_32 .6s linear infinite;margin-right:3px;vertical-align:middle}@keyframes _spin_17wfp_32{to{transform:rotate(360deg)}}._root_1bepf_1{display:flex;height:100%;min-height:0;gap:0}._sidebar_1bepf_9{width:220px;flex-shrink:0;border-right:1px solid #2a2a2a;overflow-y:auto;padding:4px 0;-webkit-overflow-scrolling:touch}._section_1bepf_18{-webkit-user-select:none;user-select:none}._sectionHeader_1bepf_22{display:flex;align-items:center;gap:6px;padding:6px 10px;cursor:pointer;color:#d1d5db;font-size:12px;font-weight:600;transition:background .15s}._sectionHeader_1bepf_22:hover{background:#ffffff0d}._arrow_1bepf_38{font-size:10px;color:#888;flex-shrink:0}._sectionTitle_1bepf_44{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._sectionCount_1bepf_52{font-size:11px;color:#666;background:#1f1f1f;border-radius:10px;padding:0 6px;line-height:18px}._sectionBody_1bepf_61{padding:2px 0}._historyToggle_1bepf_66{display:flex;align-items:center;gap:6px;padding:4px 10px 4px 14px;cursor:pointer;color:#666;font-size:11px;transition:color .15s,background .15s}._historyToggle_1bepf_66:hover{color:#888;background:#ffffff08}._historyToggleLabel_1bepf_82{flex:1}._item_1bepf_87{display:flex;align-items:center;justify-content:space-between;padding:5px 10px 5px 24px;font-size:12px;color:#888;cursor:pointer;transition:background .15s,color .15s}._item_1bepf_87:hover{background:#ffffff0a;color:#d1d5db}._itemActive_1bepf_103{background:#63b3ed1f;color:#63b3ed}._itemActive_1bepf_103:hover{background:#63b3ed29;color:#63b3ed}._itemContent_1bepf_113{flex:1;min-width:0;overflow:hidden}._itemLabel_1bepf_119{font-family:monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}._itemSublabel_1bepf_127{font-size:10px;color:#555;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}._itemTime_1bepf_136{font-size:9px;color:#555;flex-shrink:0;margin-left:4px;font-family:monospace}._content_1bepf_145{flex:1;min-width:0;overflow:auto;padding:12px 16px;-webkit-overflow-scrolling:touch}._contentEmpty_1bepf_153{height:100%;display:flex;align-items:center;justify-content:center}._contentInner_1bepf_160{padding-bottom:20px}._emptyWrap_1bepf_164{display:flex;align-items:center;justify-content:center;height:200px}._roleHeader_1bepf_172{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:nowrap}._roleBadge_1bepf_180{font-size:10px;font-weight:600;letter-spacing:.04em;padding:2px 7px;border-radius:4px;flex-shrink:0}._role_user_1bepf_189{background:#3b82f62e;color:#60a5fa;border:1px solid rgba(59,130,246,.3)}._role_assistant_1bepf_195{background:#8b5cf62e;color:#a78bfa;border:1px solid rgba(139,92,246,.3)}._roleLabel_1bepf_201{font-size:11px;color:#666;flex:1;min-width:0}._contentTime_1bepf_208{margin-left:auto;font-size:10px;color:#555;font-family:monospace;flex-shrink:0}._turnDivider_1bepf_216{border:none;border-top:1px solid #1e1e1e;margin:14px 0}._textBlock_1bepf_223{margin-bottom:8px;border:1px solid #222;border-radius:6px;overflow:hidden}._textBlockBar_1bepf_230{display:flex;align-items:center;gap:6px;padding:4px 10px;background:#141414;border-bottom:1px solid #222}._textBlockBody_1bepf_239{padding:10px 12px;font-size:13px;line-height:1.7;color:#d1d5db;word-break:break-word}._textBlockCompact_1bepf_247{position:relative;padding:8px 10px;font-size:12px;color:#aaa}._textBlockCompactFloat_1bepf_254{float:right;margin-left:6px;margin-bottom:2px}._thinkingBlock_1bepf_261{margin-bottom:8px;border:1px solid #2a2a1e;border-radius:6px;overflow:hidden;background:#111108}._thinkingHeader_1bepf_269{display:flex;align-items:center;gap:6px;padding:5px 10px;cursor:pointer;font-size:12px;color:#888;transition:background .15s}._thinkingHeader_1bepf_269:hover{background:#ffffc808}._thinkingPreview_1bepf_284{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#666;font-size:11px}._thinkingBody_1bepf_294{padding:8px 12px;border-top:1px solid #2a2a1e}._toolBlock_1bepf_300{margin-bottom:8px;border:1px solid #222;border-radius:6px;overflow:hidden}._toolBlockResult_1bepf_307{border-color:#1a2a1a}._toolBlockError_1bepf_311{border-color:#2a1a1a}._toolBlockHeader_1bepf_315{display:flex;align-items:center;gap:8px;padding:5px 10px;background:#141414;border-bottom:1px solid #222;font-size:12px;flex-wrap:wrap}._toolBlockBody_1bepf_326{padding:8px 10px;font-size:12px}._toolName_1bepf_331{color:#d1d5db;font-weight:500;font-family:monospace}._toolId_1bepf_337{color:#555;font-size:10px;font-family:monospace;margin-left:auto}._errorLabel_1bepf_344{font-size:10px;color:#f87171;background:#ef44441f;border:1px solid rgba(239,68,68,.25);border-radius:3px;padding:1px 5px}._blockTag_1bepf_354{font-size:9px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:1px 5px;border-radius:3px;background:#1a1a1a;color:#666;border:1px solid #2a2a2a;flex-shrink:0}._blockTagText_1bepf_367{background:#3b82f61a;color:#60a5fa;border-color:#3b82f633}._blockTagThinking_1bepf_373{background:#eab3081a;color:#ca8a04;border-color:#eab30833}._blockTagResult_1bepf_379{background:#22c55e1a;color:#4ade80;border-color:#22c55e33}._blockTagError_1bepf_385{background:#ef44441a;color:#f87171;border-color:#ef444433}._jsonBlock_1bepf_392{margin-bottom:8px;border:1px solid #222;border-radius:6px;overflow:hidden}._jsonBlockLabel_1bepf_399{font-size:10px;color:#666;padding:3px 10px;background:#141414;border-bottom:1px solid #222;font-family:monospace}._blockSeparator_1bepf_409{border:none;border-top:1px solid #2a2a2a;margin:16px 0}._markdownBody_1bepf_416{font-size:13px;line-height:1.7;color:#d1d5db;word-break:break-word}._container_ty3f8_1{height:100%;overflow:auto;padding:0 16px;-webkit-overflow-scrolling:touch;will-change:scroll-position}._emptyState_ty3f8_9{display:flex;align-items:center;justify-content:center;height:100%}._urlSection_ty3f8_16{padding:12px 0;border-bottom:1px solid #1f1f1f;display:flex;align-items:flex-start}._urlLeft_ty3f8_23{flex:1;min-width:0}._tokenStatsBox_ty3f8_28{flex-shrink:0;padding-left:12px;display:flex;align-items:center}._tokenGrid_ty3f8_35{display:flex;border:1px solid #303030;border-radius:6px;overflow:hidden;min-width:360px;font-size:11px;line-height:1.6}._tokenRows_ty3f8_45{flex:1}._tokenRow_ty3f8_45{display:flex}._tokenRowBorder_ty3f8_53{border-top:1px solid #303030}._tokenLabel_ty3f8_57{color:#888;padding:4px 8px;white-space:nowrap;font-weight:600}._tokenTd_ty3f8_64{flex:1;color:#d1d5db;text-align:right;padding:4px 8px;font-family:monospace;white-space:nowrap}._tokenHitRate_ty3f8_73{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#d1d5db;padding:4px 8px;font-family:monospace;white-space:nowrap;border-left:1px solid #303030;min-width:100px}._tokenHitRateLabel_ty3f8_86{color:#888;font-size:10px;font-family:sans-serif}._tokenRowBorder_ty3f8_53 td{border-top:1px solid #303030}._urlText_ty3f8_96{color:#d1d5db;font-size:13px;margin-bottom:8px;word-break:break-all}._metaText_ty3f8_103,._headersContainer_ty3f8_107{font-size:12px}._headerRow_ty3f8_111{display:flex;padding:4px 0;border-bottom:1px solid #1f1f1f}._headerKey_ty3f8_117{min-width:200px;flex-shrink:0}._headerValue_ty3f8_122{word-break:break-all;margin-left:8px}._streamingBox_ty3f8_127{padding:20px;background:#1a1a1a;border-radius:6px;border:1px solid #2a2a2a}._bodyToolbar_ty3f8_134{display:flex;gap:8px;margin-bottom:8px}._rawTextPre_ty3f8_140{background:#0d1117;border:1px solid #2a2a2a;border-radius:6px;padding:12px;font-size:12px;color:#e5e7eb;overflow:auto;max-height:600px;white-space:pre-wrap;word-break:break-all}._tabContent_ty3f8_153{padding:12px 0}._collapseSpacing_ty3f8_157{margin-bottom:16px}._bodyLabel_ty3f8_161{margin:0}._bodyHeader_ty3f8_165{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}._diffSection_ty3f8_172{margin-bottom:16px}._diffToggle_ty3f8_176{display:inline-block;margin-bottom:8px;cursor:pointer}._diffIcon_ty3f8_182{font-size:12px;margin-left:4px}._viewInChatBtn_ty3f8_187{display:inline-flex;align-items:center;height:26px;border-radius:13px;border:1px solid #424242;background:transparent;color:#888;cursor:pointer;font-size:12px;transition:all .2s;padding:0 10px;white-space:nowrap}._viewInChatBtn_ty3f8_187:hover{border-color:#666;color:#d1d5db;background:#ffffff0f}._reminderSelect_ty3f8_208{min-width:140px;font-size:12px}._reminderSelect_ty3f8_208 .ant-select-selector.ant-select-selector{border-radius:2px;border-color:#424242;background:transparent;min-height:26px;height:auto;padding:0 8px;font-family:monospace}._reminderSelect_ty3f8_208 .ant-select-selection-placeholder{font-size:11px}._wrapper_1rnhz_1{margin:6px 0;background:#1a1a2e;border:1px solid #2a2a3e;border-radius:8px;padding:8px 12px}._header_1rnhz_9{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}._headerRight_1rnhz_16{display:flex;align-items:center;gap:12px;flex-shrink:0;white-space:nowrap}._filePath_1rnhz_24{color:#a78bfa;font-size:12px;font-weight:600}._toggle_1rnhz_30{color:#6b7280;font-size:11px;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;flex-shrink:0}._diffSummary_1rnhz_39{font-size:11px;color:#6b7280}._diffBody_1rnhz_46{display:flex;font-family:SF Mono,Cascadia Code,Fira Code,Menlo,Consolas,monospace;font-size:12px;line-height:1.5}._gutter_1rnhz_54{flex-shrink:0;-webkit-user-select:none;user-select:none}._gutterRow_1rnhz_59{display:flex;height:18px}._lineNumOld_1rnhz_64,._lineNumNew_1rnhz_65{text-align:right;color:#484f58;padding:0 6px 0 2px;box-sizing:border-box}._prefix_1rnhz_72{width:16px;min-width:16px;text-align:center;font-weight:600}._codeWrap_1rnhz_80{flex:1;min-width:0;overflow-x:auto}._codeInner_1rnhz_87{display:inline-block;min-width:100%}._codeLine_1rnhz_92{white-space:pre;padding:0 4px;height:18px}._rowContext_1rnhz_100{background:#1a1a2e;color:#8b949e}._rowDel_1rnhz_105{background:#ef44441f;color:#fca5a5}._rowDel_1rnhz_105._gutterRow_1rnhz_59{background:#341f31}._rowDel_1rnhz_105._gutterRow_1rnhz_59 ._prefix_1rnhz_72{color:#ef4444}._rowAdd_1rnhz_116{background:#22c55e1f;color:#86efac}._rowAdd_1rnhz_116._gutterRow_1rnhz_59{background:#1b2f34}._rowAdd_1rnhz_116._gutterRow_1rnhz_59 ._prefix_1rnhz_72{color:#22c55e}._rowContext_1rnhz_100._gutterRow_1rnhz_59{background:#1a1a2e}._plainResult_1uh60_1{background:#111;border-radius:6px;font-size:12px}._plainTitle_1uh60_7{font-size:11px}._plainPre_1uh60_11{color:#d1d5db;margin:0;white-space:pre-wrap;word-break:break-all;font-size:12px;padding:8px 12px}._codeResult_1uh60_20{background:#0d1117;border-radius:6px;border:1px solid #1e2a3a;overflow:hidden}._codeHeader_1uh60_27{display:flex;justify-content:space-between;align-items:center;padding:4px 10px;background:#161b22;border-bottom:1px solid #1e2a3a}._codeTitle_1uh60_36{font-size:11px;color:#8b949e}._codeToggle_1uh60_41{font-size:11px;color:#484f58;cursor:pointer;-webkit-user-select:none;user-select:none}._codePre_1uh60_48{margin:0;padding:8px 12px;font-size:12px;line-height:1.5;overflow:auto;max-height:500px}._markdownBody_1uh60_57{padding:8px 12px;font-size:13px;line-height:1.6;overflow:auto;max-height:500px}._avatar_10ipe_3{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}._avatarImg_10ipe_13{width:32px;height:32px;border-radius:50%;flex-shrink:0;object-fit:cover}._bubble_10ipe_21{border-radius:8px;padding:10px 14px;max-width:100%;font-size:14px;line-height:1.6;word-break:break-word}._messageRow_10ipe_32{display:flex;gap:10px;padding:8px 0}._messageRowEnd_10ipe_38{display:flex;gap:10px;padding:8px 0;justify-content:flex-end}._contentCol_10ipe_47{min-width:0;flex:1}._contentColLimited_10ipe_52{min-width:0;max-width:80%;width:fit-content}._labelRow_10ipe_60{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px}._labelRowEnd_10ipe_67{display:flex;justify-content:flex-end;align-items:center;margin-bottom:2px}._labelRight_10ipe_74{display:flex;align-items:center;gap:4px;flex-shrink:0;margin-left:auto}._labelText_10ipe_82{font-size:11px}._timeText_10ipe_86,._timeTextNoMargin_10ipe_92{font-size:10px;color:#6b7280;flex-shrink:0}._labelTextRight_10ipe_98{font-size:11px;margin-left:auto}._bubbleUser_10ipe_105{background:#1668dc;color:#e5e7eb}._bubbleAssistant_10ipe_111{background:#141414;color:#e5e7eb;transition:box-shadow 0s;position:relative}._bubbleHighlight_10ipe_119{box-shadow:0 0 10px #1668dc99}._bubbleHighlightFading_10ipe_123{box-shadow:0 0 10px #1668dc00;transition:box-shadow 5s ease-out}._borderSvg_10ipe_128{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible}._borderSvgFading_10ipe_137{opacity:0;transition:opacity 5s ease-out}._borderRect_10ipe_142{animation:_dashRotate_10ipe_1 4s linear infinite}@keyframes _dashRotate_10ipe_1{0%{stroke-dashoffset:0}to{stroke-dashoffset:-100}}._bubblePlan_10ipe_151{background:#141428;border:5px solid #1668dc;font-size:12px;color:#e5e7eb}._bubbleSubAgent_10ipe_159{background:#1a1a2e;color:#e5e7eb}._bubbleSelection_10ipe_165{background:#1a3a1a;color:#e5e7eb}._systemTagLabel_10ipe_173{font-size:12px}._skillLabel_10ipe_177{font-size:12px;color:#a78bfa}._systemTagPre_10ipe_182{font-size:12px;color:#9ca3af;white-space:pre-wrap;word-break:break-all;margin:0}._collapseMargin_10ipe_190{margin:4px 0}._collapseNoMargin_10ipe_194{margin:0}._thinkingLabel_10ipe_200{font-size:12px}._bashCollapseLabel_10ipe_204{font-size:12px;color:#9ca3af}._toolBox_10ipe_211{background:#1a1a2e;border:1px solid #2a2a3e;border-radius:8px;padding:8px 12px;margin:6px 0;font-size:12px}._toolLabel_10ipe_220{color:#a78bfa}._codePre_10ipe_226{font-size:12px;margin:4px 0 0;white-space:pre-wrap;word-break:break-all;background:#0d1117;border-radius:4px;padding:6px 8px}._pathTag_10ipe_238{color:#7dd3fc;font-size:11px}._descSpan_10ipe_245{color:#6b7280;font-weight:400}._secondarySpan_10ipe_250{color:#6b7280}._patternSpan_10ipe_254{color:#fbbf24}._kvContainer_10ipe_260{margin-top:4px;font-size:11px}._kvItem_10ipe_265{margin:2px 0}._kvKey_10ipe_269{color:#7dd3fc}._kvValue_10ipe_273{color:#9ca3af}._toolResult_10ipe_279{background:#111827;border:1px solid #1e293b;border-radius:6px;padding:6px 10px;margin:2px 0 6px;font-size:11px}._toolResultLabel_10ipe_288{font-size:11px}._compactLabel_10ipe_294{font-size:12px;color:#93c5fd}._compactPre_10ipe_299{font-size:12px;color:#d1d5db;white-space:pre-wrap;word-break:break-all;margin:0}._viewRequestBtn_10ipe_309{font-size:10px;color:#555;cursor:pointer;margin-left:6px;flex-shrink:0}._viewRequestBtn_10ipe_309:hover{color:#93c5fd}._optionList_10ipe_323{padding-left:8px}._optionDesc_10ipe_327{color:#555;margin-left:6px;font-weight:400}._questionText_10ipe_335{font-size:13px;color:#ccc;margin-bottom:4px}._questionSpacing_10ipe_341{margin-bottom:10px}._option_10ipe_323{font-size:12px;padding:1px 0}._askQuestionBox_10ipe_354{background:#0d1f0d;border:1px solid #2ea043;border-radius:8px;padding:8px 12px;margin:6px 0;font-size:12px}._askQuestionHeader_10ipe_363{display:inline-block;background:#1a3a1a;color:#7ee787;font-size:10px;padding:1px 6px;border-radius:4px;margin-bottom:4px;font-weight:600}._askQuestionText_10ipe_374{color:#e5e7eb;font-size:13px;margin-bottom:4px}._askOptionItem_10ipe_380{font-size:12px;color:#9ca3af;padding:1px 0}._planModeBox_10ipe_388{background:#0d1528;border:1px solid #1668dc;border-radius:8px;padding:8px 12px;margin:6px 0;font-size:12px}._planModeLabel_10ipe_397{color:#93c5fd;font-weight:600}._planModePermissions_10ipe_402{margin-top:6px;padding-top:6px;border-top:1px solid #1e3a5f}._planModePermLabel_10ipe_408{color:#6b7280;font-size:11px;margin-bottom:2px}/**
|
|
2
2
|
* Copyright (c) 2014 The xterm.js authors. All rights reserved.
|
|
3
3
|
* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
|
|
4
4
|
* https://github.com/chjj/term.js
|
|
@@ -29,7 +29,7 @@ body{margin:0;background-color:#0d0d0d}*{scrollbar-width:thin;scrollbar-color:#3
|
|
|
29
29
|
* The original design remains. The terminal itself
|
|
30
30
|
* has been extended to include xterm CSI codes, among
|
|
31
31
|
* other features.
|
|
32
|
-
*/.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}._terminalPanel_jipsg_1{height:100%;display:flex;flex-direction:column;background:#0a0a0a}._terminalContainer_jipsg_8{flex:1;overflow:hidden;padding:4px 8px;touch-action:none;overscroll-behavior:contain}._virtualKeybar_jipsg_16{display:flex;gap:6px;padding:8px 10px;background:#111;border-top:1px solid #222;overflow-x:auto;flex-shrink:0;-webkit-overflow-scrolling:touch}._virtualKey_jipsg_16{flex-shrink:0;padding:12px 20px;border:1px solid #333;border-radius:8px;background:#1a1a1a;color:#ccc;font-size:15px;font-family:Menlo,Monaco,monospace;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:pan-x;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}._virtualKeyPressed_jipsg_47{background:#333;border-color:#555;color:#fff}._fileExplorer_dbq1c_1{width:240px;flex-shrink:0;background:#111;border-right:1px solid #2a2a2a;display:flex;flex-direction:column;overflow:hidden;-webkit-user-select:none;user-select:none}._header_dbq1c_12{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #2a2a2a;flex-shrink:0}._headerTitle_dbq1c_21{font-size:11px;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.5px}._collapseBtn_dbq1c_29{width:20px;height:20px;border:none;background:none;color:#666;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:0}._collapseBtn_dbq1c_29:hover{color:#ccc;background:#2a2a2a}._treeContainer_dbq1c_48{flex:1;overflow:auto;padding:4px 0}._treeItem_dbq1c_54{display:flex;align-items:center;height:26px;padding:0 8px;cursor:pointer;color:#ccc;font-size:13px;white-space:nowrap;transition:background .1s}._treeItem_dbq1c_54:hover,._treeItemSelected_dbq1c_70{background:#1a1a1a}._arrow_dbq1c_74{width:16px;flex-shrink:0;color:#666;display:flex;align-items:center;justify-content:center}._icon_dbq1c_83{width:16px;height:16px;flex-shrink:0;margin-right:6px;display:flex;align-items:center;justify-content:center}._fileName_dbq1c_93{overflow:hidden;text-overflow:ellipsis}._loading_dbq1c_98{color:#555;font-size:12px;padding:4px 8px}._error_dbq1c_104{color:#ff6b6b;font-size:12px;padding:4px 8px}._treeItemGitIgnored_dbq1c_110{opacity:.4}._fileContentView_1oerd_1{display:flex;flex-direction:column;height:100%;background:#0d0d0d}._header_1oerd_8{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid #2a2a2a;background:#111;flex-shrink:0}._headerLeft_1oerd_18{display:flex;align-items:center;gap:8px;flex:1;min-width:0}._headerRight_1oerd_26{display:flex;align-items:center;gap:10px;flex-shrink:0}._backBtn_1oerd_33{width:28px;height:28px;border:none;background:none;color:#666;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:6px;padding:0;flex-shrink:0;transition:background .15s,color .15s}._backBtn_1oerd_33:hover{color:#ccc;background:#1a1a1a}._filePath_1oerd_54{font-size:13px;color:#ccc;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._fileSize_1oerd_62{font-size:11px;color:#666;flex-shrink:0}._saveBtn_1oerd_68{display:flex;align-items:center;gap:5px;padding:4px 12px;border:1px solid #3a3a3a;background:#1a1a1a;color:#ccc;font-size:12px;border-radius:6px;cursor:pointer;transition:background .15s,color .15s,border-color .15s;white-space:nowrap}._saveBtn_1oerd_68:hover:not(:disabled){background:#2a2a2a;color:#fff;border-color:#4a4a4a}._saveBtn_1oerd_68:disabled{opacity:.4;cursor:not-allowed}._saveStatus_1oerd_94{font-size:11px;color:#888;white-space:nowrap}._saveStatusSaved_1oerd_100{color:#4caf50}._saveStatusFailed_1oerd_104{color:#ff6b6b}._contentContainer_1oerd_108{flex:1;overflow:hidden;background:#0d0d0d;display:flex;min-height:0;min-width:0}._editorWrapper_1oerd_117{flex:1;display:flex;min-height:0;min-width:0;overflow:hidden}._lineNumCol_1oerd_125{flex-shrink:0;width:56px;overflow:hidden;background:#0d0d0d;border-right:1px solid #2a2a2a;-webkit-user-select:none;user-select:none}._lineNumRow_1oerd_134{padding:0 16px;text-align:right;color:#555;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;font-size:13px;line-height:1.5;white-space:nowrap}._editorCol_1oerd_144{flex:1;min-width:0;min-height:0;display:flex}._editorCol_1oerd_144 .cm-theme{flex:1;display:flex;min-height:0;min-width:0}._editorCol_1oerd_144 .cm-editor{flex:1;min-width:0;min-height:0}._loading_1oerd_164{display:flex;align-items:center;justify-content:center;height:100%;width:100%;color:#666;font-size:14px}._error_1oerd_174{display:flex;align-items:center;justify-content:center;height:100%;width:100%;color:#ff6b6b;font-size:14px}._gitChanges_1in24_1{width:240px;flex-shrink:0;background:#111;border-right:1px solid #2a2a2a;display:flex;flex-direction:column;overflow:hidden;-webkit-user-select:none;user-select:none}._header_1in24_12{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #2a2a2a;flex-shrink:0}._headerTitle_1in24_21{font-size:11px;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.5px}._collapseBtn_1in24_29{width:20px;height:20px;border:none;background:none;color:#666;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:0}._collapseBtn_1in24_29:hover{color:#ccc;background:#2a2a2a}._changesContainer_1in24_48{flex:1;overflow:auto;padding:4px 0}._changeItem_1in24_54{display:flex;align-items:center;height:26px;padding:0 8px;cursor:pointer;color:#ccc;font-size:13px;white-space:nowrap;transition:background .1s;gap:6px}._changeItem_1in24_54:hover,._changeItemSelected_1in24_71{background:#1a1a1a}._dirItem_1in24_75{display:flex;align-items:center;height:26px;padding:0 8px;color:#999;font-size:13px;white-space:nowrap;gap:6px}._dirArrow_1in24_86{width:16px;flex-shrink:0;color:#666;display:flex;align-items:center;justify-content:center}._dirName_1in24_95{overflow:hidden;text-overflow:ellipsis}._status_1in24_100{width:16px;flex-shrink:0;font-size:11px;font-weight:600;text-align:center;margin-left:auto}._icon_1in24_109{width:16px;height:16px;flex-shrink:0;display:flex;align-items:center;justify-content:center}._fileName_1in24_118{overflow:hidden;text-overflow:ellipsis;flex:1}._loading_1in24_124{color:#555;font-size:12px;padding:8px 12px}._error_1in24_130{color:#ff6b6b;font-size:12px;padding:8px 12px}._empty_1in24_136{color:#666;font-size:12px;padding:8px 12px;text-align:center}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
|
|
32
|
+
*/.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}._terminalPanel_jipsg_1{height:100%;display:flex;flex-direction:column;background:#0a0a0a}._terminalContainer_jipsg_8{flex:1;overflow:hidden;padding:4px 8px;touch-action:none;overscroll-behavior:contain}._virtualKeybar_jipsg_16{display:flex;gap:6px;padding:8px 10px;background:#111;border-top:1px solid #222;overflow-x:auto;flex-shrink:0;-webkit-overflow-scrolling:touch}._virtualKey_jipsg_16{flex-shrink:0;padding:12px 20px;border:1px solid #333;border-radius:8px;background:#1a1a1a;color:#ccc;font-size:15px;font-family:Menlo,Monaco,monospace;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:pan-x;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}._virtualKeyPressed_jipsg_47{background:#333;border-color:#555;color:#fff}._fileExplorer_dbq1c_1{width:240px;flex-shrink:0;background:#111;border-right:1px solid #2a2a2a;display:flex;flex-direction:column;overflow:hidden;-webkit-user-select:none;user-select:none}._header_dbq1c_12{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #2a2a2a;flex-shrink:0}._headerTitle_dbq1c_21{font-size:11px;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.5px}._collapseBtn_dbq1c_29{width:20px;height:20px;border:none;background:none;color:#666;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:0}._collapseBtn_dbq1c_29:hover{color:#ccc;background:#2a2a2a}._treeContainer_dbq1c_48{flex:1;overflow:auto;padding:4px 0}._treeItem_dbq1c_54{display:flex;align-items:center;height:26px;padding:0 8px;cursor:pointer;color:#ccc;font-size:13px;white-space:nowrap;transition:background .1s}._treeItem_dbq1c_54:hover,._treeItemSelected_dbq1c_70{background:#1a1a1a}._arrow_dbq1c_74{width:16px;flex-shrink:0;color:#666;display:flex;align-items:center;justify-content:center}._icon_dbq1c_83{width:16px;height:16px;flex-shrink:0;margin-right:6px;display:flex;align-items:center;justify-content:center}._fileName_dbq1c_93{overflow:hidden;text-overflow:ellipsis}._loading_dbq1c_98{color:#555;font-size:12px;padding:4px 8px}._error_dbq1c_104{color:#ff6b6b;font-size:12px;padding:4px 8px}._treeItemGitIgnored_dbq1c_110{opacity:.4}._fileContentView_bdchz_1{display:flex;flex-direction:column;height:100%;background:#0d0d0d}._header_bdchz_8{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid #2a2a2a;background:#111;flex-shrink:0}._headerLeft_bdchz_18{display:flex;align-items:center;gap:8px;flex:1;min-width:0}._headerRight_bdchz_26{display:flex;align-items:center;gap:10px;flex-shrink:0}._backBtn_bdchz_33{width:28px;height:28px;border:none;background:none;color:#666;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:6px;padding:0;flex-shrink:0;transition:background .15s,color .15s}._backBtn_bdchz_33:hover{color:#ccc;background:#1a1a1a}._filePath_bdchz_54{font-size:13px;color:#ccc;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._fileSize_bdchz_62{font-size:11px;color:#666;flex-shrink:0}._saveBtn_bdchz_68{display:flex;align-items:center;gap:5px;padding:4px 12px;border:1px solid #3a3a3a;background:#1a1a1a;color:#ccc;font-size:12px;border-radius:6px;cursor:pointer;transition:background .15s,color .15s,border-color .15s;white-space:nowrap}._saveBtn_bdchz_68:hover:not(:disabled){background:#2a2a2a;color:#fff;border-color:#4a4a4a}._saveBtn_bdchz_68:disabled{opacity:.4;cursor:not-allowed}._saveStatus_bdchz_94{font-size:11px;color:#888;white-space:nowrap}._saveStatusSaved_bdchz_100{color:#4caf50}._saveStatusFailed_bdchz_104{color:#ff6b6b}._contentContainer_bdchz_108{flex:1;overflow:hidden;background:#0d0d0d;display:flex;min-height:0;min-width:0}._editorWrapper_bdchz_117{flex:1;display:flex;min-height:0;min-width:0;overflow:hidden}._lineNumCol_bdchz_125{flex-shrink:0;width:56px;overflow:hidden;background:#0d0d0d;border-right:1px solid #2a2a2a;-webkit-user-select:none;user-select:none;padding-top:4px}._lineNumRow_bdchz_135{padding:0 16px;text-align:right;color:#555;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;font-size:13px;line-height:1.5;white-space:nowrap}._editorCol_bdchz_145{flex:1;min-width:0;min-height:0;display:flex}._editorCol_bdchz_145 .cm-theme{flex:1;display:flex;min-height:0;min-width:0}._editorCol_bdchz_145 .cm-editor{flex:1;min-width:0;min-height:0}._loading_bdchz_165{display:flex;align-items:center;justify-content:center;height:100%;width:100%;color:#666;font-size:14px}._error_bdchz_175{display:flex;align-items:center;justify-content:center;height:100%;width:100%;color:#ff6b6b;font-size:14px}._gitChanges_1in24_1{width:240px;flex-shrink:0;background:#111;border-right:1px solid #2a2a2a;display:flex;flex-direction:column;overflow:hidden;-webkit-user-select:none;user-select:none}._header_1in24_12{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #2a2a2a;flex-shrink:0}._headerTitle_1in24_21{font-size:11px;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.5px}._collapseBtn_1in24_29{width:20px;height:20px;border:none;background:none;color:#666;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:0}._collapseBtn_1in24_29:hover{color:#ccc;background:#2a2a2a}._changesContainer_1in24_48{flex:1;overflow:auto;padding:4px 0}._changeItem_1in24_54{display:flex;align-items:center;height:26px;padding:0 8px;cursor:pointer;color:#ccc;font-size:13px;white-space:nowrap;transition:background .1s;gap:6px}._changeItem_1in24_54:hover,._changeItemSelected_1in24_71{background:#1a1a1a}._dirItem_1in24_75{display:flex;align-items:center;height:26px;padding:0 8px;color:#999;font-size:13px;white-space:nowrap;gap:6px}._dirArrow_1in24_86{width:16px;flex-shrink:0;color:#666;display:flex;align-items:center;justify-content:center}._dirName_1in24_95{overflow:hidden;text-overflow:ellipsis}._status_1in24_100{width:16px;flex-shrink:0;font-size:11px;font-weight:600;text-align:center;margin-left:auto}._icon_1in24_109{width:16px;height:16px;flex-shrink:0;display:flex;align-items:center;justify-content:center}._fileName_1in24_118{overflow:hidden;text-overflow:ellipsis;flex:1}._loading_1in24_124{color:#555;font-size:12px;padding:8px 12px}._error_1in24_130{color:#ff6b6b;font-size:12px;padding:8px 12px}._empty_1in24_136{color:#666;font-size:12px;padding:8px 12px;text-align:center}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
|
|
33
33
|
Theme: GitHub Dark
|
|
34
34
|
Description: Dark theme as seen on github.com
|
|
35
35
|
Author: github.com
|
package/dist/index.html
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
<title>Claude Code Viewer</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico?v=1">
|
|
8
8
|
<link rel="shortcut icon" href="/favicon.ico?v=1">
|
|
9
|
-
<script type="module" crossorigin src="/assets/index-
|
|
10
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
9
|
+
<script type="module" crossorigin src="/assets/index-Db56U3Ow.js"></script>
|
|
10
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DuRhaLLC.css">
|
|
11
11
|
</head>
|
|
12
12
|
<body>
|
|
13
13
|
<div id="root"></div>
|
package/interceptor.js
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
// LLM Request Interceptor
|
|
2
2
|
// 拦截并记录所有Claude API请求
|
|
3
|
+
|
|
4
|
+
// 非交互命令(如 claude -v, claude --help)不需要启动 ccv
|
|
5
|
+
const _ccvSkipArgs = ['--version', '-v', '--v', '--help', '-h', 'doctor', 'install', 'update', 'upgrade', 'auth', 'setup-token', 'agents', 'plugin', 'plugins', 'mcp'];
|
|
6
|
+
const _ccvSkip = _ccvSkipArgs.includes(process.argv[2]);
|
|
7
|
+
|
|
3
8
|
import './proxy-env.js';
|
|
4
9
|
import { appendFileSync, mkdirSync, readdirSync, readFileSync, writeFileSync, statSync, renameSync, unlinkSync, existsSync } from 'node:fs';
|
|
5
10
|
import { homedir } from 'node:os';
|
|
@@ -750,11 +755,11 @@ export function setupInterceptor() {
|
|
|
750
755
|
}
|
|
751
756
|
|
|
752
757
|
// 自动执行拦截器设置
|
|
753
|
-
setupInterceptor();
|
|
758
|
+
if (!_ccvSkip) setupInterceptor();
|
|
754
759
|
|
|
755
760
|
// 等待日志文件初始化完成后启动 Web Viewer 服务
|
|
756
761
|
// 如果是 ccv --c 通过 proxy 模式启动的,外层已有 server,跳过
|
|
757
|
-
if (!process.env.CCV_PROXY_MODE) {
|
|
762
|
+
if (!_ccvSkip && !process.env.CCV_PROXY_MODE) {
|
|
758
763
|
_initPromise.then(() => import('./server.js')).catch((err) => {
|
|
759
764
|
console.error('[CC-Viewer] Failed to start viewer server:', err);
|
|
760
765
|
});
|
package/lib/plugin-loader.js
CHANGED
package/package.json
CHANGED
package/pty-manager.js
CHANGED
|
@@ -98,8 +98,12 @@ export async function spawnClaude(proxyPort, cwd, extraArgs = [], claudePath = n
|
|
|
98
98
|
env.ANTHROPIC_BASE_URL = `http://127.0.0.1:${proxyPort}`;
|
|
99
99
|
env.CCV_PROXY_MODE = '1'; // 告诉 interceptor.js 不要再启动 server
|
|
100
100
|
|
|
101
|
+
// 通过 --settings 注入 ANTHROPIC_BASE_URL,确保覆盖 settings.json 中的配置。
|
|
102
|
+
// 仅覆盖 env.ANTHROPIC_BASE_URL,不影响其他 settings 字段。
|
|
101
103
|
const settingsJson = JSON.stringify({
|
|
102
|
-
env: {
|
|
104
|
+
env: {
|
|
105
|
+
ANTHROPIC_BASE_URL: env.ANTHROPIC_BASE_URL
|
|
106
|
+
}
|
|
103
107
|
});
|
|
104
108
|
|
|
105
109
|
let command = claudePath;
|
package/server.js
CHANGED
|
@@ -208,6 +208,7 @@ function watchLogFile(logFile) {
|
|
|
208
208
|
try {
|
|
209
209
|
const parsed = JSON.parse(entry);
|
|
210
210
|
sendToClients(parsed);
|
|
211
|
+
runParallelHook('onNewEntry', parsed).catch(() => {});
|
|
211
212
|
} catch (err) {
|
|
212
213
|
// Skip invalid entries
|
|
213
214
|
}
|
|
@@ -1393,6 +1394,115 @@ async function handleRequest(req, res) {
|
|
|
1393
1394
|
return;
|
|
1394
1395
|
}
|
|
1395
1396
|
|
|
1397
|
+
// CCV 进程列表
|
|
1398
|
+
if (url === '/api/ccv-processes' && method === 'GET') {
|
|
1399
|
+
if (platform() === 'win32') {
|
|
1400
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
1401
|
+
res.end(JSON.stringify({ processes: [] }));
|
|
1402
|
+
return;
|
|
1403
|
+
}
|
|
1404
|
+
try {
|
|
1405
|
+
const { stdout } = await execAsync('lsof -iTCP:7008-7099 -sTCP:LISTEN -P -n', { timeout: 5000 }).catch(() => ({ stdout: '' }));
|
|
1406
|
+
const lines = stdout.trim().split('\n').filter(Boolean);
|
|
1407
|
+
// Parse lsof output: skip header, filter node processes, dedupe by PID:port
|
|
1408
|
+
const seen = new Map(); // pid -> port
|
|
1409
|
+
for (const line of lines.slice(1)) {
|
|
1410
|
+
const parts = line.trim().split(/\s+/);
|
|
1411
|
+
const cmd = parts[0];
|
|
1412
|
+
if (cmd !== 'node') continue;
|
|
1413
|
+
const pid = parseInt(parts[1], 10);
|
|
1414
|
+
if (!pid) continue;
|
|
1415
|
+
// lsof 输出: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME (STATE)
|
|
1416
|
+
// 端口在 NAME 列(倒数第二列),如 *:7008,最后一列是 (LISTEN)
|
|
1417
|
+
const nameField = parts[parts.length - 2] || '';
|
|
1418
|
+
const portMatch = nameField.match(/:(\d+)$/);
|
|
1419
|
+
if (!portMatch) continue;
|
|
1420
|
+
const port = portMatch[1];
|
|
1421
|
+
if (!seen.has(pid)) seen.set(pid, port);
|
|
1422
|
+
}
|
|
1423
|
+
// 获取所有候选进程的 PPID,过滤掉 PPID 也在 CCV 进程集合中的子进程(即 ccv -c/-d 启动的 claude 子进程)
|
|
1424
|
+
const ccvPids = new Set(seen.keys());
|
|
1425
|
+
const filteredPids = [];
|
|
1426
|
+
for (const [pid] of seen) {
|
|
1427
|
+
try {
|
|
1428
|
+
const { stdout: ppidOut } = await execAsync(`ps -o ppid= -p ${pid}`, { timeout: 2000 }).catch(() => ({ stdout: '' }));
|
|
1429
|
+
const ppid = parseInt(ppidOut.trim(), 10);
|
|
1430
|
+
if (ppid && ccvPids.has(ppid)) continue; // 是某个 CCV 进程的子进程,跳过
|
|
1431
|
+
} catch {}
|
|
1432
|
+
filteredPids.push(pid);
|
|
1433
|
+
}
|
|
1434
|
+
const processes = [];
|
|
1435
|
+
for (const pid of filteredPids) {
|
|
1436
|
+
const port = seen.get(pid);
|
|
1437
|
+
let startTime = '';
|
|
1438
|
+
let command = '';
|
|
1439
|
+
try {
|
|
1440
|
+
const { stdout: psOut } = await execAsync(`ps -p ${pid} -o lstart=,command=`, { timeout: 3000 }).catch(() => ({ stdout: '' }));
|
|
1441
|
+
const psLine = psOut.trim();
|
|
1442
|
+
// lstart format: "Day Mon DD HH:MM:SS YYYY rest..."
|
|
1443
|
+
const lsMatch = psLine.match(/^\w+\s+(\w+)\s+(\d+)\s+([\d:]+)\s+(\d{4})\s+(.*)/);
|
|
1444
|
+
if (lsMatch) {
|
|
1445
|
+
const months = { Jan:1,Feb:2,Mar:3,Apr:4,May:5,Jun:6,Jul:7,Aug:8,Sep:9,Oct:10,Nov:11,Dec:12 };
|
|
1446
|
+
const mon = String(months[lsMatch[1]] || 1).padStart(2, '0');
|
|
1447
|
+
const day = String(lsMatch[2]).padStart(2, '0');
|
|
1448
|
+
const time = lsMatch[3];
|
|
1449
|
+
const year = lsMatch[4];
|
|
1450
|
+
startTime = `${year}年${mon}月${day}日 ${time}`;
|
|
1451
|
+
const rawCmd = lsMatch[5];
|
|
1452
|
+
// Extract path after lib/ (e.g. node_modules/cc-viewer/cli.js -d → cc-viewer/cli.js -d)
|
|
1453
|
+
const libMatch = rawCmd.match(/lib\/(.+)/);
|
|
1454
|
+
command = libMatch ? libMatch[1] : rawCmd;
|
|
1455
|
+
}
|
|
1456
|
+
} catch {}
|
|
1457
|
+
const isCurrent = pid === process.pid;
|
|
1458
|
+
processes.push({ port, pid, command, startTime, isCurrent });
|
|
1459
|
+
}
|
|
1460
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
1461
|
+
res.end(JSON.stringify({ processes }));
|
|
1462
|
+
} catch (err) {
|
|
1463
|
+
res.writeHead(500, { 'Content-Type': 'application/json' });
|
|
1464
|
+
res.end(JSON.stringify({ error: err.message }));
|
|
1465
|
+
}
|
|
1466
|
+
return;
|
|
1467
|
+
}
|
|
1468
|
+
|
|
1469
|
+
// CCV 进程关闭
|
|
1470
|
+
if (url === '/api/ccv-processes/kill' && method === 'POST') {
|
|
1471
|
+
let body = '';
|
|
1472
|
+
req.on('data', chunk => { body += chunk; });
|
|
1473
|
+
req.on('end', async () => {
|
|
1474
|
+
try {
|
|
1475
|
+
const { pid } = JSON.parse(body);
|
|
1476
|
+
if (!Number.isInteger(pid) || pid <= 0) {
|
|
1477
|
+
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
1478
|
+
res.end(JSON.stringify({ error: 'Invalid PID' }));
|
|
1479
|
+
return;
|
|
1480
|
+
}
|
|
1481
|
+
if (pid === process.pid) {
|
|
1482
|
+
res.writeHead(403, { 'Content-Type': 'application/json' });
|
|
1483
|
+
res.end(JSON.stringify({ error: 'Cannot kill current process' }));
|
|
1484
|
+
return;
|
|
1485
|
+
}
|
|
1486
|
+
// 安全检查:确认是监听 CCV 端口范围 (7008-7099) 的 node 进程
|
|
1487
|
+
const { stdout: lsofOut } = await execAsync(`lsof -iTCP:7008-7099 -sTCP:LISTEN -P -n -p ${pid}`, { timeout: 5000 }).catch(() => ({ stdout: '' }));
|
|
1488
|
+
const lsofLines = lsofOut.trim().split('\n').filter(Boolean).slice(1);
|
|
1489
|
+
const isNodeOnCcvPort = lsofLines.some(line => line.trim().split(/\s+/)[0] === 'node');
|
|
1490
|
+
if (!isNodeOnCcvPort) {
|
|
1491
|
+
res.writeHead(403, { 'Content-Type': 'application/json' });
|
|
1492
|
+
res.end(JSON.stringify({ error: 'Not a CCV process' }));
|
|
1493
|
+
return;
|
|
1494
|
+
}
|
|
1495
|
+
process.kill(pid, 'SIGTERM');
|
|
1496
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
1497
|
+
res.end(JSON.stringify({ ok: true }));
|
|
1498
|
+
} catch (err) {
|
|
1499
|
+
res.writeHead(500, { 'Content-Type': 'application/json' });
|
|
1500
|
+
res.end(JSON.stringify({ error: err.message }));
|
|
1501
|
+
}
|
|
1502
|
+
});
|
|
1503
|
+
return;
|
|
1504
|
+
}
|
|
1505
|
+
|
|
1396
1506
|
// 静态文件服务
|
|
1397
1507
|
if (method === 'GET') {
|
|
1398
1508
|
let filePath = url === '/' ? '/index.html' : url;
|