cc-viewer 1.4.4 → 1.4.6

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.
@@ -0,0 +1,32 @@
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}}.diff-view{background:#1a1a2e;border:1px solid #2a2a3e;border-radius:8px;padding:8px 12px}.diff-line-del{background:#ef444426;color:#fca5a5;padding:0 4px}.diff-line-add{background:#22c55e26;color:#86efac;padding:0 4px}.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_cvsqb_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_cvsqb_1:hover{background:#333}._modalBody_cvsqb_24{max-height:60vh;overflow-y:auto;line-height:1.7}._modalBody_cvsqb_24 h1,._modalBody_cvsqb_24 h2,._modalBody_cvsqb_24 h3{margin-top:.8em}._modalBody_cvsqb_24 p{margin:.5em 0}._modalBody_cvsqb_24 code{background:#2a2a2a;padding:1px 4px;border-radius:3px;font-size:.9em}._modalBody_cvsqb_24 pre{background:#1a1a1a;padding:12px;border-radius:6px;overflow-x:auto}._spinWrap_cvsqb_54{display:flex;justify-content:center;padding:40px 0}._modalBody_cvsqb_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}._headerBar_17fk3_2{display:flex;align-items:center;justify-content:space-between;width:100%;height:100%}._titleText_17fk3_11{color:#fff;font-size:18px;cursor:pointer}._logoImage_17fk3_17{height:24px;width:24px;margin-right:6px;border-radius:3px;vertical-align:text-bottom}._titleArrow_17fk3_25{font-size:12px;margin-left:4px}._tokenStatsTag_17fk3_31{border-radius:12px;cursor:pointer;background:#2a2a2a;border:1px solid #3a3a3a;color:#ccc}._tokenStatsIcon_17fk3_39{margin-right:4px}._liveTag_17fk3_44{border-radius:12px}._liveDotWrap_17fk3_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_17fk3_44 .ant-badge-status-processing{animation:_breathe_17fk3_1 2.5s ease-in-out infinite}@keyframes _breathe_17fk3_1{0%,to{opacity:.4;transform:scale(.85)}50%{opacity:1;transform:scale(1.15)}}._liveSpinner_17fk3_70{display:block;animation:_spinPlusStar_17fk3_1 2s linear infinite}._liveSpinnerDiag_17fk3_75{animation:_diagFade_17fk3_1 2s ease-in-out infinite}@keyframes _spinPlusStar_17fk3_1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes _diagFade_17fk3_1{0%,to{opacity:1}50%{opacity:0}}._inflightList_17fk3_90{min-width:180px}._inflightItem_17fk3_94{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:12px}._inflightItem_17fk3_94+._inflightItem_17fk3_94{border-top:1px solid #333}._inflightTag_17fk3_106{color:#52c41a;font-weight:500;white-space:nowrap}._inflightModel_17fk3_112{color:#999;white-space:nowrap}._inflightTime_17fk3_117{color:#666;margin-left:auto;white-space:nowrap}._liveTagHistory_17fk3_123{background:#2a2a2a;border-color:#424242;color:#d1d5db}._liveTagText_17fk3_129{margin-left:4px}._countdownStrong_17fk3_134{font-variant-numeric:tabular-nums}._langSelector_17fk3_139,._settingsBtn_17fk3_150{color:#888;font-size:12px;cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid #555;border-radius:4px;padding:2px 8px}._settingsBtn_17fk3_150:hover{color:#bbb;border-color:#777}._qrcodeSection_17fk3_166{display:flex;flex-direction:column;align-items:center;padding:12px 0 20px;margin-bottom:12px;border-bottom:1px solid #222}._qrcodeUrl_17fk3_175{margin-top:10px;font-size:12px;color:#888;font-family:Menlo,Monaco,monospace;-webkit-user-select:all;user-select:all}._settingsItem_17fk3_184{display:flex;justify-content:space-between;align-items:center;padding:12px 0}._settingsLabel_17fk3_191{font-size:14px}._tokenStatsEmpty_17fk3_196{padding:8px 4px;color:#999;font-size:13px}._tokenStatsContainer_17fk3_203{display:flex;gap:12px;align-items:flex-start}._tokenStatsColumn_17fk3_209{min-width:240px}._toolStatsColumn_17fk3_213{min-width:180px}._modelCard_17fk3_218{border:1px solid #333;border-radius:6px;padding:8px 10px;background:#111}._modelCardSpaced_17fk3_225{margin-bottom:10px}._modelName_17fk3_231{font-size:13px;font-weight:600;color:#e5e5e5;margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid #333}._statsTable_17fk3_241{width:100%;border-collapse:collapse}._th_17fk3_246{padding:2px 12px;font-size:12px;font-family:monospace;white-space:nowrap;color:#888;font-weight:400;text-align:right}._td_17fk3_256{padding:2px 12px;font-size:12px;font-family:monospace;white-space:nowrap;color:#e5e5e5;text-align:right}._label_17fk3_265{padding:2px 12px;font-size:12px;font-family:monospace;white-space:nowrap;color:#aaa;font-weight:400;text-align:left}._rowBorder_17fk3_275{border-bottom:1px solid #2a2a2a}._rebuildCard_17fk3_279{border:1px solid #333;border-radius:6px;padding:8px 10px;margin-top:10px;background:#111}._rebuildTotalRow_17fk3_287{border-top:1px solid #444}._rebuildTotalRow_17fk3_287 td{font-weight:600}._promptExportBar_17fk3_296{margin-bottom:12px}._promptScrollArea_17fk3_300{max-height:500px;overflow:auto}._promptEmpty_17fk3_305{color:#999;padding:12px}._promptTimestamp_17fk3_311{color:#666;font-size:12px;margin:12px 0 4px;padding-bottom:6px}._textPromptCard_17fk3_319{margin:4px 0;background:#141414;border-radius:6px;border:1px solid #303030;padding:10px 14px}._preText_17fk3_328{white-space:pre-wrap;word-break:break-word;font-size:13px;line-height:1.6;color:#d9d9d9;margin:4px 0}._systemCollapse_17fk3_338{margin:4px 0;background:#1a1a1a;border:1px solid #303030;border-radius:6px}._systemLabel_17fk3_345{color:#888;font-size:12px}._preSys_17fk3_350{white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.5;color:#999;margin:0}._promptTextarea_17fk3_360{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_17fk3_376{display:flex;justify-content:center;padding:40px 0}._projectStatsEmpty_17fk3_382{color:#999;padding:40px 0;text-align:center;font-size:13px}._projectStatsContent_17fk3_389{display:flex;flex-direction:column;gap:16px}._projectStatsUpdated_17fk3_395{color:#666;font-size:12px;text-align:right}._projectStatsSummary_17fk3_401{display:grid;grid-template-columns:1fr 1fr;gap:10px}._projectStatCard_17fk3_407{background:#111;border:1px solid #333;border-radius:8px;padding:14px 12px;text-align:center}._projectStatValue_17fk3_415{font-size:22px;font-weight:700;color:#e5e5e5;font-family:monospace;font-variant-numeric:tabular-nums}._projectStatLabel_17fk3_423{font-size:12px;color:#888;margin-top:4px}._projectStatsSection_17fk3_429{display:flex;flex-direction:column;gap:10px}._projectStatsSectionTitle_17fk3_435{font-size:14px;font-weight:600;color:#ccc;padding-bottom:4px;border-bottom:1px solid #333}._projectStatsModelCard_17fk3_443{background:#111;border:1px solid #333;border-radius:6px;padding:10px 12px}._projectStatsModelHeader_17fk3_450{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid #333}._projectStatsModelName_17fk3_459{font-size:13px;font-weight:600;color:#e5e5e5}._projectStatsModelCount_17fk3_465{font-size:12px;color:#888;font-family:monospace}._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_1o255_1{margin:6px 0}._header_1o255_5{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}._filePath_1o255_12{color:#a78bfa;font-size:12px;font-weight:600}._toggle_1o255_18{color:#6b7280;font-size:11px;cursor:pointer;-webkit-user-select:none;user-select:none}._code_1o255_25{margin:0;font-size:12px;line-height:1.5;overflow:auto}._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_w9l4s_3{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}._avatarImg_w9l4s_13{width:32px;height:32px;border-radius:50%;flex-shrink:0;object-fit:cover}._bubble_w9l4s_21{border-radius:8px;padding:10px 14px;max-width:100%;font-size:14px;line-height:1.6;word-break:break-word}._messageRow_w9l4s_32{display:flex;gap:10px;padding:8px 0}._messageRowEnd_w9l4s_38{display:flex;gap:10px;padding:8px 0;justify-content:flex-end}._contentCol_w9l4s_47{min-width:0;flex:1}._contentColLimited_w9l4s_52{min-width:0;max-width:80%;width:fit-content}._labelRow_w9l4s_60{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px}._labelRowEnd_w9l4s_67{display:flex;justify-content:flex-end;align-items:center;margin-bottom:2px}._labelRight_w9l4s_74{display:flex;align-items:center;gap:4px;flex-shrink:0;margin-left:auto}._labelText_w9l4s_82{font-size:11px}._timeText_w9l4s_86,._timeTextNoMargin_w9l4s_92{font-size:10px;color:#6b7280;flex-shrink:0}._labelTextRight_w9l4s_98{font-size:11px;margin-left:auto}._bubbleUser_w9l4s_105{background:#1668dc;color:#e5e7eb}._bubbleAssistant_w9l4s_111{background:#141414;color:#e5e7eb;transition:box-shadow 0s;position:relative}._bubbleHighlight_w9l4s_119{box-shadow:0 0 10px #1668dc99}._bubbleHighlightFading_w9l4s_123{box-shadow:0 0 10px #1668dc00;transition:box-shadow 5s ease-out}._borderSvg_w9l4s_128{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible}._borderSvgFading_w9l4s_137{opacity:0;transition:opacity 5s ease-out}._borderRect_w9l4s_142{animation:_dashRotate_w9l4s_1 4s linear infinite}@keyframes _dashRotate_w9l4s_1{0%{stroke-dashoffset:0}to{stroke-dashoffset:-100}}._bubblePlan_w9l4s_151{background:#141428;border:5px solid #1668dc;font-size:12px;color:#e5e7eb}._bubbleSubAgent_w9l4s_159{background:#1a1a2e;color:#e5e7eb}._bubbleSelection_w9l4s_165{background:#1a3a1a;color:#e5e7eb}._systemTagLabel_w9l4s_173{font-size:12px}._skillLabel_w9l4s_177{font-size:12px;color:#a78bfa}._systemTagPre_w9l4s_182{font-size:12px;color:#9ca3af;white-space:pre-wrap;word-break:break-all;margin:0}._collapseMargin_w9l4s_190{margin:4px 0}._collapseNoMargin_w9l4s_194{margin:0}._thinkingLabel_w9l4s_200{font-size:12px}._toolBox_w9l4s_206{background:#1a1a2e;border:1px solid #2a2a3e;border-radius:8px;padding:8px 12px;margin:6px 0;font-size:12px}._toolLabel_w9l4s_215{color:#a78bfa}._codePre_w9l4s_221{font-size:12px;margin:4px 0 0;white-space:pre-wrap;word-break:break-all;background:#0d1117;border-radius:4px;padding:6px 8px}._pathTag_w9l4s_233{color:#7dd3fc;font-size:11px}._descSpan_w9l4s_240{color:#6b7280;font-weight:400}._secondarySpan_w9l4s_245{color:#6b7280}._patternSpan_w9l4s_249{color:#fbbf24}._kvContainer_w9l4s_255{margin-top:4px;font-size:11px}._kvItem_w9l4s_260{margin:2px 0}._kvKey_w9l4s_264{color:#7dd3fc}._kvValue_w9l4s_268{color:#9ca3af}._toolResult_w9l4s_274{background:#111827;border:1px solid #1e293b;border-radius:6px;padding:6px 10px;margin:2px 0 6px;font-size:11px}._toolResultLabel_w9l4s_283{font-size:11px}._compactLabel_w9l4s_289{font-size:12px;color:#93c5fd}._compactPre_w9l4s_294{font-size:12px;color:#d1d5db;white-space:pre-wrap;word-break:break-all;margin:0}._viewRequestBtn_w9l4s_304{font-size:10px;color:#555;cursor:pointer;margin-left:6px;flex-shrink:0}._viewRequestBtn_w9l4s_304:hover{color:#93c5fd}._optionList_w9l4s_318{padding-left:8px}._optionDesc_w9l4s_322{color:#555;margin-left:6px;font-weight:400}._questionText_w9l4s_330{font-size:13px;color:#ccc;margin-bottom:4px}._questionSpacing_w9l4s_336{margin-bottom:10px}._option_w9l4s_318{font-size:12px;padding:1px 0}._askQuestionBox_w9l4s_349{background:#0d1f0d;border:1px solid #2ea043;border-radius:8px;padding:8px 12px;margin:6px 0;font-size:12px}._askQuestionHeader_w9l4s_358{display:inline-block;background:#1a3a1a;color:#7ee787;font-size:10px;padding:1px 6px;border-radius:4px;margin-bottom:4px;font-weight:600}._askQuestionText_w9l4s_369{color:#e5e7eb;font-size:13px;margin-bottom:4px}._askOptionItem_w9l4s_375{font-size:12px;color:#9ca3af;padding:1px 0}._planModeBox_w9l4s_383{background:#0d1528;border:1px solid #1668dc;border-radius:8px;padding:8px 12px;margin:6px 0;font-size:12px}._planModeLabel_w9l4s_392{color:#93c5fd;font-weight:600}._planModePermissions_w9l4s_397{margin-top:6px;padding-top:6px;border-top:1px solid #1e3a5f}._planModePermLabel_w9l4s_403{color:#6b7280;font-size:11px;margin-bottom:2px}/**
2
+ * Copyright (c) 2014 The xterm.js authors. All rights reserved.
3
+ * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
4
+ * https://github.com/chjj/term.js
5
+ * @license MIT
6
+ *
7
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ * of this software and associated documentation files (the "Software"), to deal
9
+ * in the Software without restriction, including without limitation the rights
10
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ * copies of the Software, and to permit persons to whom the Software is
12
+ * furnished to do so, subject to the following conditions:
13
+ *
14
+ * The above copyright notice and this permission notice shall be included in
15
+ * all copies or substantial portions of the Software.
16
+ *
17
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
+ * THE SOFTWARE.
24
+ *
25
+ * Originally forked from (with the author's permission):
26
+ * Fabrice Bellard's javascript vt100 for jslinux:
27
+ * http://bellard.org/jslinux/
28
+ * Copyright (c) 2011 Fabrice Bellard
29
+ * The original design remains. The terminal itself
30
+ * has been extended to include xterm CSI codes, among
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_1slw1_1{height:100%;display:flex;flex-direction:column;background:#0a0a0a}._terminalContainer_1slw1_8{flex:1;overflow:hidden;padding:4px 8px;touch-action:none;overscroll-behavior:contain}._virtualKeybar_1slw1_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_1slw1_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:manipulation;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}._virtualKey_1slw1_16:active{background:#333;border-color:#555;color:#fff}._centerEmpty_dyk24_1{display:flex;align-items:center;justify-content:center;height:100%}._container_dyk24_8{flex:1;overflow:auto;padding:16px 24px;display:flex;flex-direction:column;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}._sessionDividerText_dyk24_18{font-size:11px;color:#555}._lastResponseLabel_dyk24_23{font-size:11px}._splitContainer_dyk24_27{display:flex;flex-direction:row;height:100%;overflow:hidden}._chatSection_dyk24_34{display:flex;flex-direction:column;min-width:0;overflow:hidden}._vResizer_dyk24_41{width:5px;background:#1a1a1a;cursor:col-resize;flex-shrink:0;border-left:1px solid #2a2a2a;border-right:1px solid #2a2a2a;transition:background .15s}._vResizer_dyk24_41:hover{background:#333}._chatInputBar_dyk24_55{display:flex;align-items:flex-end;gap:8px;padding:10px 16px;background:#111;border-top:1px solid #2a2a2a;flex-shrink:0}._chatInputWrapper_dyk24_65{flex:1;display:flex;flex-direction:column;background:#1a1a1a;border:1px solid #333;border-radius:12px;transition:border-color .2s;overflow:hidden}._chatInputWrapper_dyk24_65:focus-within{border-color:#555}._chatTextareaWrap_dyk24_80{position:relative;flex:1}._chatTextarea_dyk24_80{width:100%;min-height:22px;max-height:120px;padding:10px 14px;background:transparent;color:#e0e0e0;border:none;outline:none;resize:none;font-size:14px;line-height:1.5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}._chatTextarea_dyk24_80::placeholder{color:#555}._chatInputHint_dyk24_104{font-size:11px;color:#444;padding:0 14px 6px;-webkit-user-select:none;user-select:none}._chatSendBtn_dyk24_111{width:36px;height:36px;border-radius:10px;border:none;background:#4a9eff;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s,opacity .15s}._chatSendBtn_dyk24_111:hover{background:#3a8eef}._chatSendBtn_dyk24_111:disabled{opacity:.35;cursor:default}._chatSendBtn_dyk24_111 svg{width:18px;height:18px}._messageListWrap_dyk24_140{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}._stickyBottomBtn_dyk24_148{position:absolute;left:16px;bottom:12px;display:flex;align-items:center;gap:5px;padding:6px 14px;border-radius:18px;border:1px solid #3a3a3a;background:#1a1a1af2;color:#bbb;font-size:12px;cursor:pointer;transition:background .15s,color .15s,border-color .15s;z-index:10;box-shadow:0 2px 8px #0006}._stickyBottomBtn_dyk24_148:hover{background:#282828f2;color:#eee;border-color:#555}._ptyPromptBubble_dyk24_173{margin:8px 0;padding:12px 16px;border-radius:12px;border:1px solid #3a3a3a;background:#161616;animation:_ptyPromptFadeIn_dyk24_1 .25s ease-out}._ptyPromptResolved_dyk24_182{opacity:.55}@keyframes _ptyPromptFadeIn_dyk24_1{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}._ptyPromptQuestion_dyk24_191{font-size:13px;color:#ccc;margin-bottom:10px;line-height:1.4}._ptyPromptOptions_dyk24_198{display:flex;flex-wrap:wrap;gap:8px}._ptyPromptOption_dyk24_198{padding:6px 14px;border-radius:18px;border:1px solid #3a3a3a;background:#1a1a1a;color:#bbb;font-size:12px;cursor:pointer;transition:background .15s,color .15s,border-color .15s;white-space:nowrap}._ptyPromptOption_dyk24_198:hover{background:#2a2a2a;color:#eee;border-color:#555}._ptyPromptOptionPrimary_dyk24_222{padding:6px 14px;border-radius:18px;border:1px solid #4a9eff;background:#4a9eff26;color:#4a9eff;font-size:12px;cursor:pointer;transition:background .15s,color .15s,border-color .15s;white-space:nowrap}._ptyPromptOptionPrimary_dyk24_222:hover{background:#4a9eff40;color:#6ab4ff;border-color:#6ab4ff}._ptyPromptOptionChosen_dyk24_240{padding:6px 14px;border-radius:18px;border:1px solid #4a9eff;background:#4a9eff33;color:#4a9eff;font-size:12px;cursor:default;white-space:nowrap}._ptyPromptOptionDimmed_dyk24_251{padding:6px 14px;border-radius:18px;border:1px solid #2a2a2a;background:transparent;color:#444;font-size:12px;cursor:default;white-space:nowrap}._ghostText_dyk24_262{position:absolute;top:0;left:0;right:0;padding:10px 14px;color:#444;font-size:14px;line-height:1.5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;pointer-events:none;white-space:pre-wrap;overflow:hidden;max-height:120px}._suggestionChip_dyk24_278{display:flex;align-items:center;gap:8px;padding:8px 14px;background:#1a1a1a;border-top:1px solid #2a2a2a;cursor:pointer;flex-shrink:0;transition:background .15s}._suggestionChip_dyk24_278:hover{background:#222}._suggestionChipText_dyk24_294{flex:1;color:#555;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._suggestionChipAction_dyk24_303{color:#4a9eff;font-size:14px;flex-shrink:0}._resizer_yamj2_1{width:6px;cursor:col-resize;background:#1f1f1f;flex-shrink:0;transition:background .2s}._resizer_yamj2_1:hover{background:#3b82f6}._layout_5lki3_1{height:100vh;overflow:hidden}._header_5lki3_6{background:#111;border-bottom:1px solid #1f1f1f;padding:0 24px;height:60px;line-height:60px}._content_5lki3_14{flex:1;overflow:hidden}._mainContainer_5lki3_19{display:flex;height:100%}._leftPanel_5lki3_24{flex-shrink:0;border-right:1px solid #1f1f1f;display:flex;flex-direction:column;background:#0a0a0a}._leftPanelHeader_5lki3_32{padding:10px 16px;border-bottom:1px solid #1f1f1f;font-size:13px;color:#9ca3af;font-weight:500;display:flex;justify-content:space-between;align-items:center}._leftPanelCount_5lki3_43{font-size:12px;color:#555;font-weight:400}._leftPanelBody_5lki3_49{flex:1;overflow:hidden}._rightPanel_5lki3_54{flex:1;overflow:hidden;background:#0d0d0d}._modalActions_5lki3_60{margin-bottom:12px}._spinCenter_5lki3_64{text-align:center;padding:40px}._emptyCenter_5lki3_69{text-align:center;color:#999;padding:40px}._logCheckbox_5lki3_75{margin-right:8px}._logListContainer_5lki3_79{background:#0d0d0d;border-radius:8px;overflow:hidden}._logListItem_5lki3_85{cursor:pointer;padding:8px 12px;border-bottom:1px solid #222}._logItemRow_5lki3_91{display:flex;align-items:center;width:100%;justify-content:space-between;flex-wrap:nowrap;gap:12px}._logItemRow_5lki3_91>span:first-child{display:flex;align-items:center;flex:1;min-width:0;overflow:hidden}._logFileName_5lki3_108{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._logItemRow_5lki3_91>span:last-child{display:flex;align-items:center;flex-shrink:0;gap:8px}._logFileIcon_5lki3_121{margin-right:8px;color:#3b82f6;flex-shrink:0}._loadingOverlay_5lki3_127{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:9999}._loadingText_5lki3_140{color:#fff;font-size:16px;font-weight:700}._footer_5lki3_146{height:18px;background:#000;display:flex;align-items:center;justify-content:flex-end;padding:0 12px;flex-shrink:0}._footerRight_5lki3_156{display:flex;align-items:center;gap:6px;font-size:11px;color:#555}._footerText_5lki3_164{color:#444;margin-right:2px}._footerLink_5lki3_169{display:inline-flex;align-items:center;gap:3px;color:#555;text-decoration:none}._footerLink_5lki3_169:hover{color:#888}._footerIcon_5lki3_181{width:12px;height:12px}._footerDivider_5lki3_186{color:#333}._footerText_5lki3_164{color:#555}._guideContainer_5lki3_194{display:flex;align-items:center;justify-content:center;height:100%;background:#0a0a0a}._guideContent_5lki3_202{max-width:560px;padding:40px}._guideTitle_5lki3_207{font-size:20px;font-weight:600;color:#e0e0e0;margin:0 0 28px}._guideStep_5lki3_214{display:flex;gap:14px;margin-bottom:22px}._guideStepNum_5lki3_220{flex-shrink:0;width:24px;height:24px;border-radius:50%;background:#1a1a2e;color:#7c8aff;font-size:13px;font-weight:600;display:flex;align-items:center;justify-content:center;margin-top:1px}._guideStepBody_5lki3_235{flex:1;min-width:0}._guideText_5lki3_240{color:#aaa;font-size:14px;line-height:1.6;margin:0 0 8px}._guideCode_5lki3_247{display:block;background:#141414;border:1px solid #252525;border-radius:6px;padding:10px 14px;color:#8b9cf7;font-size:13px;line-height:1.5;word-break:break-all;white-space:pre-wrap}._mobileChatOverlay_5lki3_260{position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(100%);transition:transform .3s ease;z-index:100;background:#0a0a0a;display:flex;flex-direction:column;overflow:hidden}._mobileChatOverlayVisible_5lki3_272{transform:translate(0)}._mobileChatInner_5lki3_276{flex:1;min-height:0;display:flex;flex-direction:column;zoom:.7}
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-BoytfJh1.js"></script>
10
- <link rel="stylesheet" crossorigin href="/assets/index-BDl542y5.css">
9
+ <script type="module" crossorigin src="/assets/index-BBYFFVRD.js"></script>
10
+ <link rel="stylesheet" crossorigin href="/assets/index-BmzbjHDz.css">
11
11
  </head>
12
12
  <body>
13
13
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cc-viewer",
3
- "version": "1.4.4",
3
+ "version": "1.4.6",
4
4
  "description": "Claude Code Logger visualization management tool",
5
5
  "license": "MIT",
6
6
  "main": "server.js",
package/proxy.js CHANGED
@@ -8,10 +8,8 @@ import { setupInterceptor } from './interceptor.js';
8
8
  // Setup interceptor to patch fetch
9
9
  setupInterceptor();
10
10
 
11
- function getOriginalBaseUrl() {
12
- // 1. Check settings.json (Priority 1)
11
+ function getBaseUrlFromSettings(settingsPath) {
13
12
  try {
14
- const settingsPath = join(homedir(), '.claude', 'settings.json');
15
13
  if (existsSync(settingsPath)) {
16
14
  const settings = JSON.parse(readFileSync(settingsPath, 'utf-8'));
17
15
  if (settings.env && settings.env.ANTHROPIC_BASE_URL) {
@@ -21,13 +19,32 @@ function getOriginalBaseUrl() {
21
19
  } catch (e) {
22
20
  // ignore
23
21
  }
22
+ return null;
23
+ }
24
+
25
+ function getOriginalBaseUrl() {
26
+ let cwd;
27
+ try { cwd = process.cwd(); } catch { cwd = null; }
28
+
29
+ // Check config files in priority order (highest first)
30
+ const configPaths = [];
31
+ if (cwd) {
32
+ configPaths.push(join(cwd, '.claude', 'settings.local.json'));
33
+ configPaths.push(join(cwd, '.claude', 'settings.json'));
34
+ }
35
+ configPaths.push(join(homedir(), '.claude', 'settings.json'));
36
+
37
+ for (const configPath of configPaths) {
38
+ const url = getBaseUrlFromSettings(configPath);
39
+ if (url) return url;
40
+ }
24
41
 
25
- // 2. Check env var (Priority 2)
42
+ // Check env var
26
43
  if (process.env.ANTHROPIC_BASE_URL) {
27
44
  return process.env.ANTHROPIC_BASE_URL;
28
45
  }
29
46
 
30
- // 3. Default
47
+ // Default
31
48
  return 'https://api.anthropic.com';
32
49
  }
33
50
 
package/server.js CHANGED
@@ -1,4 +1,6 @@
1
1
  import { createServer } from 'node:http';
2
+ import { createConnection } from 'node:net';
3
+ import { randomBytes } from 'node:crypto';
2
4
  import { readFileSync, writeFileSync, existsSync, watchFile, unwatchFile, statSync, readdirSync, renameSync, unlinkSync, openSync, readSync, closeSync } from 'node:fs';
3
5
  import { fileURLToPath } from 'node:url';
4
6
  import { dirname, join, extname } from 'node:path';
@@ -46,7 +48,10 @@ const __filename = fileURLToPath(import.meta.url);
46
48
  const __dirname = dirname(__filename);
47
49
  const START_PORT = 7008;
48
50
  const MAX_PORT = 7099;
49
- const HOST = '127.0.0.1';
51
+ const HOST = '0.0.0.0';
52
+
53
+ // 局域网访问 token(本地 127.0.0.1 免验证)
54
+ const ACCESS_TOKEN = randomBytes(16).toString('hex');
50
55
 
51
56
  let clients = [];
52
57
  let server;
@@ -180,7 +185,14 @@ function startWatching() {
180
185
  }
181
186
 
182
187
  function handleRequest(req, res) {
183
- const { url, method } = req;
188
+ const parsedUrl = new URL(req.url, `http://${req.headers.host}`);
189
+ const url = parsedUrl.pathname;
190
+ const method = req.method;
191
+
192
+ // WebSocket 路径不处理,交给 upgrade 事件
193
+ if (url === '/ws/terminal') {
194
+ return;
195
+ }
184
196
 
185
197
  // CORS headers
186
198
  res.setHeader('Access-Control-Allow-Origin', '*');
@@ -193,6 +205,19 @@ function handleRequest(req, res) {
193
205
  return;
194
206
  }
195
207
 
208
+ // 局域网访问 token 验证(本地 127.0.0.1 / ::1 免验证,静态资源免验证)
209
+ const remoteIp = req.socket.remoteAddress;
210
+ const isLocal = remoteIp === '127.0.0.1' || remoteIp === '::1' || remoteIp === '::ffff:127.0.0.1';
211
+ const isStaticAsset = url.startsWith('/assets/') || url === '/favicon.ico';
212
+ if (!isLocal && !isStaticAsset) {
213
+ const urlToken = parsedUrl.searchParams.get('token');
214
+ if (urlToken !== ACCESS_TOKEN) {
215
+ res.writeHead(403, { 'Content-Type': 'application/json' });
216
+ res.end(JSON.stringify({ error: 'Forbidden: invalid token' }));
217
+ return;
218
+ }
219
+ }
220
+
196
221
  // User preferences API
197
222
  if (url === '/api/preferences' && method === 'GET') {
198
223
  let prefs = {};
@@ -519,7 +544,7 @@ function handleRequest(req, res) {
519
544
  if (localIp !== '127.0.0.1') break;
520
545
  }
521
546
  res.writeHead(200, { 'Content-Type': 'application/json' });
522
- res.end(JSON.stringify({ url: `http://${localIp}:${actualPort}` }));
547
+ res.end(JSON.stringify({ url: `http://${localIp}:${actualPort}?token=${ACCESS_TOKEN}` }));
523
548
  return;
524
549
  }
525
550
 
@@ -719,38 +744,48 @@ export async function startViewer() {
719
744
  return;
720
745
  }
721
746
 
722
- const currentServer = createServer(handleRequest);
723
-
724
- currentServer.listen(port, HOST, () => {
725
- server = currentServer;
726
- actualPort = port;
727
- const url = `http://${HOST}:${port}`;
728
- console.error(t('server.started', { host: HOST, port }));
729
- // v2.0.69 之前的版本会清空控制台,自动打开浏览器确保用户能看到界面
730
- try {
731
- const ccPkgPath = join(__dirname, '..', '@anthropic-ai', 'claude-code', 'package.json');
732
- const ccVer = JSON.parse(readFileSync(ccPkgPath, 'utf-8')).version;
733
- const [maj, min, pat] = ccVer.split('.').map(Number);
734
- if (maj < 2 || (maj === 2 && min === 0 && pat < 69)) {
735
- const cmd = platform() === 'darwin' ? 'open' : platform() === 'win32' ? 'start' : 'xdg-open';
736
- execSync(`${cmd} ${url}`, { stdio: 'ignore', timeout: 5000 });
737
- }
738
- } catch { }
739
- startWatching();
740
- startStatsWorker();
741
- // CLI 模式下启动 WebSocket 服务
742
- if (isCliMode) {
743
- setupTerminalWebSocket(currentServer);
744
- }
745
- resolve(server);
747
+ // 先检测 127.0.0.1:port 是否已被占用(避免 0.0.0.0 和 127.0.0.1 绑定不冲突的问题)
748
+ const probe = createConnection({ host: '127.0.0.1', port });
749
+ probe.on('connect', () => {
750
+ probe.destroy();
751
+ tryListen(port + 1); // 端口已被占用,尝试下一个
746
752
  });
753
+ probe.on('error', () => {
754
+ probe.destroy();
755
+ // 端口空闲,绑定 0.0.0.0
756
+ const currentServer = createServer(handleRequest);
757
+
758
+ currentServer.listen(port, HOST, () => {
759
+ server = currentServer;
760
+ actualPort = port;
761
+ const url = `http://${HOST}:${port}`;
762
+ console.error(t('server.started', { host: HOST, port }));
763
+ // v2.0.69 之前的版本会清空控制台,自动打开浏览器确保用户能看到界面
764
+ try {
765
+ const ccPkgPath = join(__dirname, '..', '@anthropic-ai', 'claude-code', 'package.json');
766
+ const ccVer = JSON.parse(readFileSync(ccPkgPath, 'utf-8')).version;
767
+ const [maj, min, pat] = ccVer.split('.').map(Number);
768
+ if (maj < 2 || (maj === 2 && min === 0 && pat < 69)) {
769
+ const cmd = platform() === 'darwin' ? 'open' : platform() === 'win32' ? 'start' : 'xdg-open';
770
+ execSync(`${cmd} ${url}`, { stdio: 'ignore', timeout: 5000 });
771
+ }
772
+ } catch { }
773
+ startWatching();
774
+ startStatsWorker();
775
+ // CLI 模式下启动 WebSocket 服务
776
+ if (isCliMode) {
777
+ setupTerminalWebSocket(currentServer);
778
+ }
779
+ resolve(server);
780
+ });
747
781
 
748
- currentServer.on('error', (err) => {
749
- if (err.code === 'EADDRINUSE') {
750
- tryListen(port + 1);
751
- } else {
752
- reject(err);
753
- }
782
+ currentServer.on('error', (err) => {
783
+ if (err.code === 'EADDRINUSE') {
784
+ tryListen(port + 1);
785
+ } else {
786
+ reject(err);
787
+ }
788
+ });
754
789
  });
755
790
  }
756
791
 
@@ -763,7 +798,18 @@ async function setupTerminalWebSocket(httpServer) {
763
798
  const { WebSocketServer } = await import('ws');
764
799
  const { writeToPty, resizePty, onPtyData, onPtyExit, getPtyState, getOutputBuffer } = await import('./pty-manager.js');
765
800
 
766
- const wss = new WebSocketServer({ server: httpServer, path: '/ws/terminal' });
801
+ const wss = new WebSocketServer({ noServer: true });
802
+
803
+ httpServer.on('upgrade', (req, socket, head) => {
804
+ const pathname = new URL(req.url, `http://${req.headers.host}`).pathname;
805
+ if (pathname === '/ws/terminal') {
806
+ wss.handleUpgrade(req, socket, head, (ws) => {
807
+ wss.emit('connection', ws, req);
808
+ });
809
+ } else {
810
+ socket.destroy();
811
+ }
812
+ });
767
813
 
768
814
  wss.on('connection', (ws) => {
769
815
  // 发送当前 PTY 状态
@@ -1,32 +0,0 @@
1
- body{margin:0;background-color:#0d0d0d}*{scrollbar-width:thin;scrollbar-color:#3a3a3a #0d0d0d}*::-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}.diff-view{background:#1a1a2e;border:1px solid #2a2a3e;border-radius:8px;padding:8px 12px}.diff-line-del{background:#ef444426;color:#fca5a5;padding:0 4px}.diff-line-add{background:#22c55e26;color:#86efac;padding:0 4px}.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_cvsqb_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_cvsqb_1:hover{background:#333}._modalBody_cvsqb_24{max-height:60vh;overflow-y:auto;line-height:1.7}._modalBody_cvsqb_24 h1,._modalBody_cvsqb_24 h2,._modalBody_cvsqb_24 h3{margin-top:.8em}._modalBody_cvsqb_24 p{margin:.5em 0}._modalBody_cvsqb_24 code{background:#2a2a2a;padding:1px 4px;border-radius:3px;font-size:.9em}._modalBody_cvsqb_24 pre{background:#1a1a1a;padding:12px;border-radius:6px;overflow-x:auto}._spinWrap_cvsqb_54{display:flex;justify-content:center;padding:40px 0}._modalBody_cvsqb_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}._headerBar_17fk3_2{display:flex;align-items:center;justify-content:space-between;width:100%;height:100%}._titleText_17fk3_11{color:#fff;font-size:18px;cursor:pointer}._logoImage_17fk3_17{height:24px;width:24px;margin-right:6px;border-radius:3px;vertical-align:text-bottom}._titleArrow_17fk3_25{font-size:12px;margin-left:4px}._tokenStatsTag_17fk3_31{border-radius:12px;cursor:pointer;background:#2a2a2a;border:1px solid #3a3a3a;color:#ccc}._tokenStatsIcon_17fk3_39{margin-right:4px}._liveTag_17fk3_44{border-radius:12px}._liveDotWrap_17fk3_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_17fk3_44 .ant-badge-status-processing{animation:_breathe_17fk3_1 2.5s ease-in-out infinite}@keyframes _breathe_17fk3_1{0%,to{opacity:.4;transform:scale(.85)}50%{opacity:1;transform:scale(1.15)}}._liveSpinner_17fk3_70{display:block;animation:_spinPlusStar_17fk3_1 2s linear infinite}._liveSpinnerDiag_17fk3_75{animation:_diagFade_17fk3_1 2s ease-in-out infinite}@keyframes _spinPlusStar_17fk3_1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes _diagFade_17fk3_1{0%,to{opacity:1}50%{opacity:0}}._inflightList_17fk3_90{min-width:180px}._inflightItem_17fk3_94{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:12px}._inflightItem_17fk3_94+._inflightItem_17fk3_94{border-top:1px solid #333}._inflightTag_17fk3_106{color:#52c41a;font-weight:500;white-space:nowrap}._inflightModel_17fk3_112{color:#999;white-space:nowrap}._inflightTime_17fk3_117{color:#666;margin-left:auto;white-space:nowrap}._liveTagHistory_17fk3_123{background:#2a2a2a;border-color:#424242;color:#d1d5db}._liveTagText_17fk3_129{margin-left:4px}._countdownStrong_17fk3_134{font-variant-numeric:tabular-nums}._langSelector_17fk3_139,._settingsBtn_17fk3_150{color:#888;font-size:12px;cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid #555;border-radius:4px;padding:2px 8px}._settingsBtn_17fk3_150:hover{color:#bbb;border-color:#777}._qrcodeSection_17fk3_166{display:flex;flex-direction:column;align-items:center;padding:12px 0 20px;margin-bottom:12px;border-bottom:1px solid #222}._qrcodeUrl_17fk3_175{margin-top:10px;font-size:12px;color:#888;font-family:Menlo,Monaco,monospace;-webkit-user-select:all;user-select:all}._settingsItem_17fk3_184{display:flex;justify-content:space-between;align-items:center;padding:12px 0}._settingsLabel_17fk3_191{font-size:14px}._tokenStatsEmpty_17fk3_196{padding:8px 4px;color:#999;font-size:13px}._tokenStatsContainer_17fk3_203{display:flex;gap:12px;align-items:flex-start}._tokenStatsColumn_17fk3_209{min-width:240px}._toolStatsColumn_17fk3_213{min-width:180px}._modelCard_17fk3_218{border:1px solid #333;border-radius:6px;padding:8px 10px;background:#111}._modelCardSpaced_17fk3_225{margin-bottom:10px}._modelName_17fk3_231{font-size:13px;font-weight:600;color:#e5e5e5;margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid #333}._statsTable_17fk3_241{width:100%;border-collapse:collapse}._th_17fk3_246{padding:2px 12px;font-size:12px;font-family:monospace;white-space:nowrap;color:#888;font-weight:400;text-align:right}._td_17fk3_256{padding:2px 12px;font-size:12px;font-family:monospace;white-space:nowrap;color:#e5e5e5;text-align:right}._label_17fk3_265{padding:2px 12px;font-size:12px;font-family:monospace;white-space:nowrap;color:#aaa;font-weight:400;text-align:left}._rowBorder_17fk3_275{border-bottom:1px solid #2a2a2a}._rebuildCard_17fk3_279{border:1px solid #333;border-radius:6px;padding:8px 10px;margin-top:10px;background:#111}._rebuildTotalRow_17fk3_287{border-top:1px solid #444}._rebuildTotalRow_17fk3_287 td{font-weight:600}._promptExportBar_17fk3_296{margin-bottom:12px}._promptScrollArea_17fk3_300{max-height:500px;overflow:auto}._promptEmpty_17fk3_305{color:#999;padding:12px}._promptTimestamp_17fk3_311{color:#666;font-size:12px;margin:12px 0 4px;padding-bottom:6px}._textPromptCard_17fk3_319{margin:4px 0;background:#141414;border-radius:6px;border:1px solid #303030;padding:10px 14px}._preText_17fk3_328{white-space:pre-wrap;word-break:break-word;font-size:13px;line-height:1.6;color:#d9d9d9;margin:4px 0}._systemCollapse_17fk3_338{margin:4px 0;background:#1a1a1a;border:1px solid #303030;border-radius:6px}._systemLabel_17fk3_345{color:#888;font-size:12px}._preSys_17fk3_350{white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.5;color:#999;margin:0}._promptTextarea_17fk3_360{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_17fk3_376{display:flex;justify-content:center;padding:40px 0}._projectStatsEmpty_17fk3_382{color:#999;padding:40px 0;text-align:center;font-size:13px}._projectStatsContent_17fk3_389{display:flex;flex-direction:column;gap:16px}._projectStatsUpdated_17fk3_395{color:#666;font-size:12px;text-align:right}._projectStatsSummary_17fk3_401{display:grid;grid-template-columns:1fr 1fr;gap:10px}._projectStatCard_17fk3_407{background:#111;border:1px solid #333;border-radius:8px;padding:14px 12px;text-align:center}._projectStatValue_17fk3_415{font-size:22px;font-weight:700;color:#e5e5e5;font-family:monospace;font-variant-numeric:tabular-nums}._projectStatLabel_17fk3_423{font-size:12px;color:#888;margin-top:4px}._projectStatsSection_17fk3_429{display:flex;flex-direction:column;gap:10px}._projectStatsSectionTitle_17fk3_435{font-size:14px;font-weight:600;color:#ccc;padding-bottom:4px;border-bottom:1px solid #333}._projectStatsModelCard_17fk3_443{background:#111;border:1px solid #333;border-radius:6px;padding:10px 12px}._projectStatsModelHeader_17fk3_450{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid #333}._projectStatsModelName_17fk3_459{font-size:13px;font-weight:600;color:#e5e5e5}._projectStatsModelCount_17fk3_465{font-size:12px;color:#888;font-family:monospace}._centerEmpty_ckz8l_1{display:flex;align-items:center;justify-content:center;height:100%}._scrollContainer_ckz8l_8{overflow:auto;height:100%}._listItem_ckz8l_13{cursor:pointer;padding:8px 12px;border-left:3px solid transparent;border-bottom:1px solid #1f1f1f;transition:background .15s}._listItem_ckz8l_13:hover{background:#151515}._listItemActive_ckz8l_25{background:#1a2332;border-left-color:#3b82f6}._listItemActive_ckz8l_25:hover{background:#1a2332}._itemContent_ckz8l_34{width:100%;min-width:0}._itemHeader_ckz8l_39{display:flex;align-items:center;gap:6px;margin-bottom:4px;font-size:12px}._tagNoMargin_ckz8l_47{margin:0;font-size:12px}._modelName_ckz8l_52{font-size:12px}._time_ckz8l_56{font-size:12px;color:#6b7280;margin-left:auto}._detailRow_ckz8l_62{display:flex;gap:8px;font-size:12px;align-items:center}._urlText_ckz8l_69{color:#555;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}._duration_ckz8l_78{color:#6b7280;flex-shrink:0}._statusOk_ckz8l_83{color:#52c41a;opacity:.5;flex-shrink:0}._statusErr_ckz8l_89{color:#ef4444;flex-shrink:0}._statusDefault_ckz8l_94{color:#9ca3af;flex-shrink:0}._usageBox_ckz8l_99{background:#111;border-radius:4px;padding:3px 6px;margin-top:4px;font-size:12px;color:#6b7280;line-height:1.6}._cacheDot_ckz8l_109{display:inline-block;width:6px;height:6px;border-radius:50%;margin:0 3px;vertical-align:middle}._cacheDotLoss_ckz8l_118{background-color:#8b1a1a;cursor:help}._cacheDotNormal_ckz8l_123{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_13xe8_1{display:flex;height:100%;min-height:0;gap:0}._sidebar_13xe8_9{width:220px;flex-shrink:0;border-right:1px solid #2a2a2a;overflow-y:auto;padding:4px 0}._section_13xe8_17{-webkit-user-select:none;user-select:none}._sectionHeader_13xe8_21{display:flex;align-items:center;gap:6px;padding:6px 10px;cursor:pointer;color:#d1d5db;font-size:12px;font-weight:600;transition:background .15s}._sectionHeader_13xe8_21:hover{background:#ffffff0d}._arrow_13xe8_37{font-size:10px;color:#888;flex-shrink:0}._sectionTitle_13xe8_43{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._sectionCount_13xe8_51{font-size:11px;color:#666;background:#1f1f1f;border-radius:10px;padding:0 6px;line-height:18px}._sectionBody_13xe8_60{padding:2px 0}._historyToggle_13xe8_65{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_13xe8_65:hover{color:#888;background:#ffffff08}._historyToggleLabel_13xe8_81{flex:1}._item_13xe8_86{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_13xe8_86:hover{background:#ffffff0a;color:#d1d5db}._itemActive_13xe8_102{background:#63b3ed1f;color:#63b3ed}._itemActive_13xe8_102:hover{background:#63b3ed29;color:#63b3ed}._itemContent_13xe8_112{flex:1;min-width:0;overflow:hidden}._itemLabel_13xe8_118{font-family:monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}._itemSublabel_13xe8_126{font-size:10px;color:#555;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}._itemTime_13xe8_135{font-size:9px;color:#555;flex-shrink:0;margin-left:4px;font-family:monospace}._content_13xe8_144{flex:1;min-width:0;overflow:auto;padding:12px 16px}._contentEmpty_13xe8_151{height:100%;display:flex;align-items:center;justify-content:center}._contentInner_13xe8_158{padding-bottom:20px}._emptyWrap_13xe8_162{display:flex;align-items:center;justify-content:center;height:200px}._roleHeader_13xe8_170{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:nowrap}._roleBadge_13xe8_178{font-size:10px;font-weight:600;letter-spacing:.04em;padding:2px 7px;border-radius:4px;flex-shrink:0}._role_user_13xe8_187{background:#3b82f62e;color:#60a5fa;border:1px solid rgba(59,130,246,.3)}._role_assistant_13xe8_193{background:#8b5cf62e;color:#a78bfa;border:1px solid rgba(139,92,246,.3)}._roleLabel_13xe8_199{font-size:11px;color:#666;flex:1;min-width:0}._contentTime_13xe8_206{margin-left:auto;font-size:10px;color:#555;font-family:monospace;flex-shrink:0}._turnDivider_13xe8_214{border:none;border-top:1px solid #1e1e1e;margin:14px 0}._textBlock_13xe8_221{margin-bottom:8px;border:1px solid #222;border-radius:6px;overflow:hidden}._textBlockBar_13xe8_228{display:flex;align-items:center;gap:6px;padding:4px 10px;background:#141414;border-bottom:1px solid #222}._textBlockBody_13xe8_237{padding:10px 12px;font-size:13px;line-height:1.7;color:#d1d5db;word-break:break-word}._textBlockCompact_13xe8_245{position:relative;padding:8px 10px;font-size:12px;color:#aaa}._textBlockCompactFloat_13xe8_252{float:right;margin-left:6px;margin-bottom:2px}._thinkingBlock_13xe8_259{margin-bottom:8px;border:1px solid #2a2a1e;border-radius:6px;overflow:hidden;background:#111108}._thinkingHeader_13xe8_267{display:flex;align-items:center;gap:6px;padding:5px 10px;cursor:pointer;font-size:12px;color:#888;transition:background .15s}._thinkingHeader_13xe8_267:hover{background:#ffffc808}._thinkingPreview_13xe8_282{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#666;font-size:11px}._thinkingBody_13xe8_292{padding:8px 12px;border-top:1px solid #2a2a1e}._toolBlock_13xe8_298{margin-bottom:8px;border:1px solid #222;border-radius:6px;overflow:hidden}._toolBlockResult_13xe8_305{border-color:#1a2a1a}._toolBlockError_13xe8_309{border-color:#2a1a1a}._toolBlockHeader_13xe8_313{display:flex;align-items:center;gap:8px;padding:5px 10px;background:#141414;border-bottom:1px solid #222;font-size:12px;flex-wrap:wrap}._toolBlockBody_13xe8_324{padding:8px 10px;font-size:12px}._toolName_13xe8_329{color:#d1d5db;font-weight:500;font-family:monospace}._toolId_13xe8_335{color:#555;font-size:10px;font-family:monospace;margin-left:auto}._errorLabel_13xe8_342{font-size:10px;color:#f87171;background:#ef44441f;border:1px solid rgba(239,68,68,.25);border-radius:3px;padding:1px 5px}._blockTag_13xe8_352{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_13xe8_365{background:#3b82f61a;color:#60a5fa;border-color:#3b82f633}._blockTagThinking_13xe8_371{background:#eab3081a;color:#ca8a04;border-color:#eab30833}._blockTagResult_13xe8_377{background:#22c55e1a;color:#4ade80;border-color:#22c55e33}._blockTagError_13xe8_383{background:#ef44441a;color:#f87171;border-color:#ef444433}._jsonBlock_13xe8_390{margin-bottom:8px;border:1px solid #222;border-radius:6px;overflow:hidden}._jsonBlockLabel_13xe8_397{font-size:10px;color:#666;padding:3px 10px;background:#141414;border-bottom:1px solid #222;font-family:monospace}._blockSeparator_13xe8_407{border:none;border-top:1px solid #2a2a2a;margin:16px 0}._markdownBody_13xe8_414{font-size:13px;line-height:1.7;color:#d1d5db;word-break:break-word}._container_y3z3z_1{height:100%;overflow:auto;padding:0 16px}._emptyState_y3z3z_7{display:flex;align-items:center;justify-content:center;height:100%}._urlSection_y3z3z_14{padding:12px 0;border-bottom:1px solid #1f1f1f;display:flex;align-items:flex-start}._urlLeft_y3z3z_21{flex:1;min-width:0}._tokenStatsBox_y3z3z_26{flex-shrink:0;padding-left:12px;display:flex;align-items:center}._tokenGrid_y3z3z_33{display:flex;border:1px solid #303030;border-radius:6px;overflow:hidden;min-width:360px;font-size:11px;line-height:1.6}._tokenRows_y3z3z_43{flex:1}._tokenRow_y3z3z_43{display:flex}._tokenRowBorder_y3z3z_51{border-top:1px solid #303030}._tokenLabel_y3z3z_55{color:#888;padding:4px 8px;white-space:nowrap;font-weight:600}._tokenTd_y3z3z_62{flex:1;color:#d1d5db;text-align:right;padding:4px 8px;font-family:monospace;white-space:nowrap}._tokenHitRate_y3z3z_71{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_y3z3z_84{color:#888;font-size:10px;font-family:sans-serif}._tokenRowBorder_y3z3z_51 td{border-top:1px solid #303030}._urlText_y3z3z_94{color:#d1d5db;font-size:13px;margin-bottom:8px;word-break:break-all}._metaText_y3z3z_101,._headersContainer_y3z3z_105{font-size:12px}._headerRow_y3z3z_109{display:flex;padding:4px 0;border-bottom:1px solid #1f1f1f}._headerKey_y3z3z_115{min-width:200px;flex-shrink:0}._headerValue_y3z3z_120{word-break:break-all;margin-left:8px}._streamingBox_y3z3z_125{padding:20px;background:#1a1a1a;border-radius:6px;border:1px solid #2a2a2a}._bodyToolbar_y3z3z_132{display:flex;gap:8px;margin-bottom:8px}._rawTextPre_y3z3z_138{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_y3z3z_151{padding:12px 0}._collapseSpacing_y3z3z_155{margin-bottom:16px}._bodyLabel_y3z3z_159{margin:0}._bodyHeader_y3z3z_163{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}._diffSection_y3z3z_170{margin-bottom:16px}._diffToggle_y3z3z_174{display:inline-block;margin-bottom:8px;cursor:pointer}._diffIcon_y3z3z_180{font-size:12px;margin-left:4px}._viewInChatBtn_y3z3z_185{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_y3z3z_185:hover{border-color:#666;color:#d1d5db;background:#ffffff0f}._reminderSelect_y3z3z_206{min-width:140px;font-size:12px}._reminderSelect_y3z3z_206 .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_y3z3z_206 .ant-select-selection-placeholder{font-size:11px}._wrapper_1o255_1{margin:6px 0}._header_1o255_5{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}._filePath_1o255_12{color:#a78bfa;font-size:12px;font-weight:600}._toggle_1o255_18{color:#6b7280;font-size:11px;cursor:pointer;-webkit-user-select:none;user-select:none}._code_1o255_25{margin:0;font-size:12px;line-height:1.5;overflow:auto}._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_w9l4s_3{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}._avatarImg_w9l4s_13{width:32px;height:32px;border-radius:50%;flex-shrink:0;object-fit:cover}._bubble_w9l4s_21{border-radius:8px;padding:10px 14px;max-width:100%;font-size:14px;line-height:1.6;word-break:break-word}._messageRow_w9l4s_32{display:flex;gap:10px;padding:8px 0}._messageRowEnd_w9l4s_38{display:flex;gap:10px;padding:8px 0;justify-content:flex-end}._contentCol_w9l4s_47{min-width:0;flex:1}._contentColLimited_w9l4s_52{min-width:0;max-width:80%;width:fit-content}._labelRow_w9l4s_60{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px}._labelRowEnd_w9l4s_67{display:flex;justify-content:flex-end;align-items:center;margin-bottom:2px}._labelRight_w9l4s_74{display:flex;align-items:center;gap:4px;flex-shrink:0;margin-left:auto}._labelText_w9l4s_82{font-size:11px}._timeText_w9l4s_86,._timeTextNoMargin_w9l4s_92{font-size:10px;color:#6b7280;flex-shrink:0}._labelTextRight_w9l4s_98{font-size:11px;margin-left:auto}._bubbleUser_w9l4s_105{background:#1668dc;color:#e5e7eb}._bubbleAssistant_w9l4s_111{background:#141414;color:#e5e7eb;transition:box-shadow 0s;position:relative}._bubbleHighlight_w9l4s_119{box-shadow:0 0 10px #1668dc99}._bubbleHighlightFading_w9l4s_123{box-shadow:0 0 10px #1668dc00;transition:box-shadow 5s ease-out}._borderSvg_w9l4s_128{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible}._borderSvgFading_w9l4s_137{opacity:0;transition:opacity 5s ease-out}._borderRect_w9l4s_142{animation:_dashRotate_w9l4s_1 4s linear infinite}@keyframes _dashRotate_w9l4s_1{0%{stroke-dashoffset:0}to{stroke-dashoffset:-100}}._bubblePlan_w9l4s_151{background:#141428;border:5px solid #1668dc;font-size:12px;color:#e5e7eb}._bubbleSubAgent_w9l4s_159{background:#1a1a2e;color:#e5e7eb}._bubbleSelection_w9l4s_165{background:#1a3a1a;color:#e5e7eb}._systemTagLabel_w9l4s_173{font-size:12px}._skillLabel_w9l4s_177{font-size:12px;color:#a78bfa}._systemTagPre_w9l4s_182{font-size:12px;color:#9ca3af;white-space:pre-wrap;word-break:break-all;margin:0}._collapseMargin_w9l4s_190{margin:4px 0}._collapseNoMargin_w9l4s_194{margin:0}._thinkingLabel_w9l4s_200{font-size:12px}._toolBox_w9l4s_206{background:#1a1a2e;border:1px solid #2a2a3e;border-radius:8px;padding:8px 12px;margin:6px 0;font-size:12px}._toolLabel_w9l4s_215{color:#a78bfa}._codePre_w9l4s_221{font-size:12px;margin:4px 0 0;white-space:pre-wrap;word-break:break-all;background:#0d1117;border-radius:4px;padding:6px 8px}._pathTag_w9l4s_233{color:#7dd3fc;font-size:11px}._descSpan_w9l4s_240{color:#6b7280;font-weight:400}._secondarySpan_w9l4s_245{color:#6b7280}._patternSpan_w9l4s_249{color:#fbbf24}._kvContainer_w9l4s_255{margin-top:4px;font-size:11px}._kvItem_w9l4s_260{margin:2px 0}._kvKey_w9l4s_264{color:#7dd3fc}._kvValue_w9l4s_268{color:#9ca3af}._toolResult_w9l4s_274{background:#111827;border:1px solid #1e293b;border-radius:6px;padding:6px 10px;margin:2px 0 6px;font-size:11px}._toolResultLabel_w9l4s_283{font-size:11px}._compactLabel_w9l4s_289{font-size:12px;color:#93c5fd}._compactPre_w9l4s_294{font-size:12px;color:#d1d5db;white-space:pre-wrap;word-break:break-all;margin:0}._viewRequestBtn_w9l4s_304{font-size:10px;color:#555;cursor:pointer;margin-left:6px;flex-shrink:0}._viewRequestBtn_w9l4s_304:hover{color:#93c5fd}._optionList_w9l4s_318{padding-left:8px}._optionDesc_w9l4s_322{color:#555;margin-left:6px;font-weight:400}._questionText_w9l4s_330{font-size:13px;color:#ccc;margin-bottom:4px}._questionSpacing_w9l4s_336{margin-bottom:10px}._option_w9l4s_318{font-size:12px;padding:1px 0}._askQuestionBox_w9l4s_349{background:#0d1f0d;border:1px solid #2ea043;border-radius:8px;padding:8px 12px;margin:6px 0;font-size:12px}._askQuestionHeader_w9l4s_358{display:inline-block;background:#1a3a1a;color:#7ee787;font-size:10px;padding:1px 6px;border-radius:4px;margin-bottom:4px;font-weight:600}._askQuestionText_w9l4s_369{color:#e5e7eb;font-size:13px;margin-bottom:4px}._askOptionItem_w9l4s_375{font-size:12px;color:#9ca3af;padding:1px 0}._planModeBox_w9l4s_383{background:#0d1528;border:1px solid #1668dc;border-radius:8px;padding:8px 12px;margin:6px 0;font-size:12px}._planModeLabel_w9l4s_392{color:#93c5fd;font-weight:600}._planModePermissions_w9l4s_397{margin-top:6px;padding-top:6px;border-top:1px solid #1e3a5f}._planModePermLabel_w9l4s_403{color:#6b7280;font-size:11px;margin-bottom:2px}/**
2
- * Copyright (c) 2014 The xterm.js authors. All rights reserved.
3
- * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
4
- * https://github.com/chjj/term.js
5
- * @license MIT
6
- *
7
- * Permission is hereby granted, free of charge, to any person obtaining a copy
8
- * of this software and associated documentation files (the "Software"), to deal
9
- * in the Software without restriction, including without limitation the rights
10
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
- * copies of the Software, and to permit persons to whom the Software is
12
- * furnished to do so, subject to the following conditions:
13
- *
14
- * The above copyright notice and this permission notice shall be included in
15
- * all copies or substantial portions of the Software.
16
- *
17
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
- * THE SOFTWARE.
24
- *
25
- * Originally forked from (with the author's permission):
26
- * Fabrice Bellard's javascript vt100 for jslinux:
27
- * http://bellard.org/jslinux/
28
- * Copyright (c) 2011 Fabrice Bellard
29
- * The original design remains. The terminal itself
30
- * has been extended to include xterm CSI codes, among
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_821xm_1{height:100%;display:flex;flex-direction:column;background:#0a0a0a}._terminalContainer_821xm_8{flex:1;overflow:hidden;padding:4px 8px}._virtualKeybar_821xm_14{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_821xm_14{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:manipulation;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}._virtualKey_821xm_14:active{background:#333;border-color:#555;color:#fff}._centerEmpty_s1mzc_1{display:flex;align-items:center;justify-content:center;height:100%}._container_s1mzc_8{flex:1;overflow:auto;padding:16px 24px;display:flex;flex-direction:column}._sessionDividerText_s1mzc_16{font-size:11px;color:#555}._lastResponseLabel_s1mzc_21{font-size:11px}._splitContainer_s1mzc_25{display:flex;flex-direction:row;height:100%;overflow:hidden}._chatSection_s1mzc_32{display:flex;flex-direction:column;min-width:0;overflow:hidden}._vResizer_s1mzc_39{width:5px;background:#1a1a1a;cursor:col-resize;flex-shrink:0;border-left:1px solid #2a2a2a;border-right:1px solid #2a2a2a;transition:background .15s}._vResizer_s1mzc_39:hover{background:#333}._chatInputBar_s1mzc_53{display:flex;align-items:flex-end;gap:8px;padding:10px 16px;background:#111;border-top:1px solid #2a2a2a;flex-shrink:0}._chatInputWrapper_s1mzc_63{flex:1;display:flex;flex-direction:column;background:#1a1a1a;border:1px solid #333;border-radius:12px;transition:border-color .2s;overflow:hidden}._chatInputWrapper_s1mzc_63:focus-within{border-color:#555}._chatTextareaWrap_s1mzc_78{position:relative;flex:1}._chatTextarea_s1mzc_78{width:100%;min-height:22px;max-height:120px;padding:10px 14px;background:transparent;color:#e0e0e0;border:none;outline:none;resize:none;font-size:14px;line-height:1.5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}._chatTextarea_s1mzc_78::placeholder{color:#555}._chatInputHint_s1mzc_102{font-size:11px;color:#444;padding:0 14px 6px;-webkit-user-select:none;user-select:none}._chatSendBtn_s1mzc_109{width:36px;height:36px;border-radius:10px;border:none;background:#4a9eff;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s,opacity .15s}._chatSendBtn_s1mzc_109:hover{background:#3a8eef}._chatSendBtn_s1mzc_109:disabled{opacity:.35;cursor:default}._chatSendBtn_s1mzc_109 svg{width:18px;height:18px}._messageListWrap_s1mzc_138{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}._stickyBottomBtn_s1mzc_146{position:absolute;left:16px;bottom:12px;display:flex;align-items:center;gap:5px;padding:6px 14px;border-radius:18px;border:1px solid #3a3a3a;background:#1a1a1ae6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#bbb;font-size:12px;cursor:pointer;transition:background .15s,color .15s,border-color .15s;z-index:10;box-shadow:0 2px 8px #0006}._stickyBottomBtn_s1mzc_146:hover{background:#282828f2;color:#eee;border-color:#555}._ptyPromptBubble_s1mzc_172{margin:8px 0;padding:12px 16px;border-radius:12px;border:1px solid #3a3a3a;background:#161616;animation:_ptyPromptFadeIn_s1mzc_1 .25s ease-out}._ptyPromptResolved_s1mzc_181{opacity:.55}@keyframes _ptyPromptFadeIn_s1mzc_1{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}._ptyPromptQuestion_s1mzc_190{font-size:13px;color:#ccc;margin-bottom:10px;line-height:1.4}._ptyPromptOptions_s1mzc_197{display:flex;flex-wrap:wrap;gap:8px}._ptyPromptOption_s1mzc_197{padding:6px 14px;border-radius:18px;border:1px solid #3a3a3a;background:#1a1a1a;color:#bbb;font-size:12px;cursor:pointer;transition:background .15s,color .15s,border-color .15s;white-space:nowrap}._ptyPromptOption_s1mzc_197:hover{background:#2a2a2a;color:#eee;border-color:#555}._ptyPromptOptionPrimary_s1mzc_221{padding:6px 14px;border-radius:18px;border:1px solid #4a9eff;background:#4a9eff26;color:#4a9eff;font-size:12px;cursor:pointer;transition:background .15s,color .15s,border-color .15s;white-space:nowrap}._ptyPromptOptionPrimary_s1mzc_221:hover{background:#4a9eff40;color:#6ab4ff;border-color:#6ab4ff}._ptyPromptOptionChosen_s1mzc_239{padding:6px 14px;border-radius:18px;border:1px solid #4a9eff;background:#4a9eff33;color:#4a9eff;font-size:12px;cursor:default;white-space:nowrap}._ptyPromptOptionDimmed_s1mzc_250{padding:6px 14px;border-radius:18px;border:1px solid #2a2a2a;background:transparent;color:#444;font-size:12px;cursor:default;white-space:nowrap}._ghostText_s1mzc_261{position:absolute;top:0;left:0;right:0;padding:10px 14px;color:#444;font-size:14px;line-height:1.5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;pointer-events:none;white-space:pre-wrap;overflow:hidden;max-height:120px}._suggestionChip_s1mzc_277{display:flex;align-items:center;gap:8px;padding:8px 14px;background:#1a1a1a;border-top:1px solid #2a2a2a;cursor:pointer;flex-shrink:0;transition:background .15s}._suggestionChip_s1mzc_277:hover{background:#222}._suggestionChipText_s1mzc_293{flex:1;color:#555;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._suggestionChipAction_s1mzc_302{color:#4a9eff;font-size:14px;flex-shrink:0}._resizer_yamj2_1{width:6px;cursor:col-resize;background:#1f1f1f;flex-shrink:0;transition:background .2s}._resizer_yamj2_1:hover{background:#3b82f6}._layout_1hck6_1{height:100vh;overflow:hidden}._header_1hck6_6{background:#111;border-bottom:1px solid #1f1f1f;padding:0 24px;height:60px;line-height:60px}._content_1hck6_14{flex:1;overflow:hidden}._mainContainer_1hck6_19{display:flex;height:100%}._leftPanel_1hck6_24{flex-shrink:0;border-right:1px solid #1f1f1f;display:flex;flex-direction:column;background:#0a0a0a}._leftPanelHeader_1hck6_32{padding:10px 16px;border-bottom:1px solid #1f1f1f;font-size:13px;color:#9ca3af;font-weight:500;display:flex;justify-content:space-between;align-items:center}._leftPanelCount_1hck6_43{font-size:12px;color:#555;font-weight:400}._leftPanelBody_1hck6_49{flex:1;overflow:hidden}._rightPanel_1hck6_54{flex:1;overflow:hidden;background:#0d0d0d}._modalActions_1hck6_60{margin-bottom:12px}._spinCenter_1hck6_64{text-align:center;padding:40px}._emptyCenter_1hck6_69{text-align:center;color:#999;padding:40px}._logCheckbox_1hck6_75{margin-right:8px}._logListContainer_1hck6_79{background:#0d0d0d;border-radius:8px;overflow:hidden}._logListItem_1hck6_85{cursor:pointer;padding:8px 12px;border-bottom:1px solid #222}._logItemRow_1hck6_91{display:flex;align-items:center;width:100%;justify-content:space-between;flex-wrap:nowrap;gap:12px}._logItemRow_1hck6_91>span:first-child{display:flex;align-items:center;flex:1;min-width:0;overflow:hidden}._logFileName_1hck6_108{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._logItemRow_1hck6_91>span:last-child{display:flex;align-items:center;flex-shrink:0;gap:8px}._logFileIcon_1hck6_121{margin-right:8px;color:#3b82f6;flex-shrink:0}._loadingOverlay_1hck6_127{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:9999}._loadingText_1hck6_140{color:#fff;font-size:16px;font-weight:700}._footer_1hck6_146{height:18px;background:#000;display:flex;align-items:center;justify-content:flex-end;padding:0 12px;flex-shrink:0}._footerRight_1hck6_156{display:flex;align-items:center;gap:6px;font-size:11px;color:#555}._footerText_1hck6_164{color:#444;margin-right:2px}._footerLink_1hck6_169{display:inline-flex;align-items:center;gap:3px;color:#555;text-decoration:none}._footerLink_1hck6_169:hover{color:#888}._footerIcon_1hck6_181{width:12px;height:12px}._footerDivider_1hck6_186{color:#333}._footerText_1hck6_164{color:#555}._guideContainer_1hck6_194{display:flex;align-items:center;justify-content:center;height:100%;background:#0a0a0a}._guideContent_1hck6_202{max-width:560px;padding:40px}._guideTitle_1hck6_207{font-size:20px;font-weight:600;color:#e0e0e0;margin:0 0 28px}._guideStep_1hck6_214{display:flex;gap:14px;margin-bottom:22px}._guideStepNum_1hck6_220{flex-shrink:0;width:24px;height:24px;border-radius:50%;background:#1a1a2e;color:#7c8aff;font-size:13px;font-weight:600;display:flex;align-items:center;justify-content:center;margin-top:1px}._guideStepBody_1hck6_235{flex:1;min-width:0}._guideText_1hck6_240{color:#aaa;font-size:14px;line-height:1.6;margin:0 0 8px}._guideCode_1hck6_247{display:block;background:#141414;border:1px solid #252525;border-radius:6px;padding:10px 14px;color:#8b9cf7;font-size:13px;line-height:1.5;word-break:break-all;white-space:pre-wrap}