cc-viewer 1.7.9 → 1.7.11
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/dist/assets/{App-CYvr5YQv.js → App-o7gt7lIy.js} +2 -2
- package/dist/assets/{MdxEditorPanel-D1MOJabL.js → MdxEditorPanel-Br1zGDDJ.js} +1 -1
- package/dist/assets/{Mobile-B7GXxkfK.js → Mobile-C_HxuKWt.js} +1 -1
- package/dist/assets/ProxyStatsModal-Boxtr7ht.js +1 -0
- package/dist/assets/{index-f4nPU7KM.css → index-CGSyt5Ow.css} +1 -1
- package/dist/assets/{index-mpHzrAV9.js → index-gH_W4sVT.js} +2 -2
- package/dist/assets/{seqResourceLoaders-DMyPYdA-.js → seqResourceLoaders-ByYE7WxI.js} +2 -2
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/server/i18n.js +0 -5
- package/server/lib/ccswitch-import.js +76 -15
- package/server/lib/proxy-retry.js +100 -6
- package/server/lib/stats-worker.js +9 -4
- package/server/lib/v2/migrate-prompt.js +3 -0
- package/dist/assets/ProxyStatsModal-BqH9cIks.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as jsxRuntimeExports}from"./vendor-codemirror-tF6HNoR6.js";import{a as reactExports,I as Icon,b as _extends,R as React,q as Tag,S as Spin,E as Empty,t as Card,u as Statistic,v as Space,F as ForwardTable,n as Switch,i as Button,k as RefIcon$3,w as Segmented,l as Select,x as TypedInputNumber,T as Tooltip,s as staticMethods}from"./vendor-antd-DADYo_zg.js";import{t,a as apiUrl}from"./index-gH_W4sVT.js";import{a5 as reportSwallowed,C as ConceptHelp}from"./seqResourceLoaders-ByYE7WxI.js";import"./vendor-mdxeditor-CFAmRN3Y.js";import"./vendor-xterm-DckPrCx1.js";import"./vendor-markdown-DOJHsAxX.js";import"./vendor-highlight-IFTJ9nxW.js";import"./vendor-virtuoso-TxPxvPjL.js";var CheckCircleOutlined$1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"}},{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},name:"check-circle",theme:"outlined"},CheckCircleOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:CheckCircleOutlined$1}))},RefIcon$2=reactExports.forwardRef(CheckCircleOutlined),CloseCircleOutlined$1={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm0 76c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm128.01 198.83c.03 0 .05.01.09.06l45.02 45.01a.2.2 0 01.05.09.12.12 0 010 .07c0 .02-.01.04-.05.08L557.25 512l127.87 127.86a.27.27 0 01.05.06v.02a.12.12 0 010 .07c0 .03-.01.05-.05.09l-45.02 45.02a.2.2 0 01-.09.05.12.12 0 01-.07 0c-.02 0-.04-.01-.08-.05L512 557.25 384.14 685.12c-.04.04-.06.05-.08.05a.12.12 0 01-.07 0c-.03 0-.05-.01-.09-.05l-45.02-45.02a.2.2 0 01-.05-.09.12.12 0 010-.07c0-.02.01-.04.06-.08L466.75 512 338.88 384.14a.27.27 0 01-.05-.06l-.01-.02a.12.12 0 010-.07c0-.03.01-.05.05-.09l45.02-45.02a.2.2 0 01.09-.05.12.12 0 01.07 0c.02 0 .04.01.08.06L512 466.75l127.86-127.86c.04-.05.06-.06.08-.06a.12.12 0 01.07 0z"}}]},name:"close-circle",theme:"outlined"},CloseCircleOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:CloseCircleOutlined$1}))},RefIcon$1=reactExports.forwardRef(CloseCircleOutlined),UndoOutlined$1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M511.4 124C290.5 124.3 112 303 112 523.9c0 128 60.2 242 153.8 315.2l-37.5 48c-4.1 5.3-.3 13 6.3 12.9l167-.8c5.2 0 9-4.9 7.7-9.9L369.8 727a8 8 0 00-14.1-3L315 776.1c-10.2-8-20-16.7-29.3-26a318.64 318.64 0 01-68.6-101.7C200.4 609 192 567.1 192 523.9s8.4-85.1 25.1-124.5c16.1-38.1 39.2-72.3 68.6-101.7 29.4-29.4 63.6-52.5 101.7-68.6C426.9 212.4 468.8 204 512 204s85.1 8.4 124.5 25.1c38.1 16.1 72.3 39.2 101.7 68.6 29.4 29.4 52.5 63.6 68.6 101.7 16.7 39.4 25.1 81.3 25.1 124.5s-8.4 85.1-25.1 124.5a318.64 318.64 0 01-68.6 101.7c-7.5 7.5-15.3 14.5-23.4 21.2a7.93 7.93 0 00-1.2 11.1l39.4 50.5c2.8 3.5 7.9 4.1 11.4 1.3C854.5 760.8 912 649.1 912 523.9c0-221.1-179.4-400.2-400.6-399.9z"}}]},name:"undo",theme:"outlined"},UndoOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:UndoOutlined$1}))},RefIcon=reactExports.forwardRef(UndoOutlined);const styles$3_wrap="_wrap_1glwx_3",styles$3_svg="_svg_1glwx_7",styles$3_bar="_bar_1glwx_12",styles$3_axisLine="_axisLine_1glwx_21",styles$3_gridLine="_gridLine_1glwx_25",styles$3_vLabel="_vLabel_1glwx_30",styles$3_vValue="_vValue_1glwx_34",styles$3_legend="_legend_1glwx_38",styles$3_legendItem="_legendItem_1glwx_46",styles$3_legendSwatch="_legendSwatch_1glwx_51";function groupedBarTitle(label2,value,bi,legend2,valueFormatter){const formatted=valueFormatter(value),name=Array.isArray(legend2)?legend2[bi]:void 0;return name?`${label2} (${name}): ${formatted}`:`${label2}: ${formatted}`}function singleBarTitle(label2,value,valueFormatter){return`${label2}: ${valueFormatter(value)}`}const DEFAULT_COLORS=["var(--color-primary, #1668dc)","var(--color-chart-series-2, #cf6c48)"];const BarChart$1=React.memo(function({data:data=[],height:height=160,grouped:grouped=!1,valueFormatter:valueFormatter=n=>String(n),maxBars:maxBars,legend:legend2,ariaLabel:ariaLabel}){var _a,_b;const wrapRef=reactExports.useRef(null),[width,setWidth]=reactExports.useState(0);reactExports.useEffect(()=>{if(!wrapRef.current)return;const el=wrapRef.current,update=()=>setWidth(el.clientWidth||0);if(update(),"undefined"==typeof ResizeObserver)return;const ro=new ResizeObserver(update);return ro.observe(el),()=>{try{ro.disconnect()}catch{}}},[]);const rows=function(data,{maxBars:maxBars,grouped:grouped=!1}={}){var _a,_b;if(!maxBars||!Array.isArray(data)||data.length<=maxBars)return data;const head=data.slice(0,maxBars),tail=data.slice(maxBars);if(grouped){const seriesCount=(null==(_b=null==(_a=head[0])?void 0:_a.values)?void 0:_b.length)||1,sums=new Array(seriesCount).fill(0);for(const d of tail){const vals=d.values||[];for(let i=0;i<seriesCount;i++)sums[i]+=vals[i]||0}return[...head,{label:"…",value:sums[0],values:sums}]}const otherCount=tail.reduce((s,d)=>s+(d.value||0),0);return[...head,{label:"…",value:otherCount,values:[otherCount]}]}(Array.isArray(data)?data:[],{maxBars:maxBars,grouped:grouped});if(!rows||0===rows.length||0===width)return jsxRuntimeExports.jsx("div",{ref:wrapRef,className:styles$3_wrap,style:{height:height}});const legendEl=grouped&&Array.isArray(legend2)&&legend2.length>0?jsxRuntimeExports.jsx("div",{className:styles$3_legend,"aria-hidden":"true",children:legend2.map((label2,i)=>jsxRuntimeExports.jsxs("span",{className:styles$3_legendItem,children:[jsxRuntimeExports.jsx("span",{className:styles$3_legendSwatch,style:{background:DEFAULT_COLORS[i%DEFAULT_COLORS.length]}}),label2]},i))}):null,innerW=Math.max(0,width-28),innerH=Math.max(0,height-28-16),maxVal=rows.reduce((m,d)=>{const vals=grouped?d.values||[0]:[d.value||0];for(const v of vals)v>m&&(m=v);return m},1),groupW=innerW/rows.length,barW=grouped?Math.max(2,.6*groupW/Math.max(1,(null==(_b=null==(_a=rows[0])?void 0:_a.values)?void 0:_b.length)||1)):Math.max(2,.5*groupW),baseline=28+innerH;return jsxRuntimeExports.jsxs("div",{ref:wrapRef,className:styles$3_wrap,style:{height:height},children:[legendEl,jsxRuntimeExports.jsxs("svg",{className:styles$3_svg,height:height,width:width,role:"img","aria-label":ariaLabel,children:[[.25,.5,.75].map(f=>jsxRuntimeExports.jsx("line",{className:styles$3_gridLine,x1:28,x2:width,y1:28+innerH*(1-f),y2:28+innerH*(1-f)},f)),jsxRuntimeExports.jsx("line",{className:styles$3_axisLine,x1:28,x2:width,y1:baseline,y2:baseline}),rows.map((d,gi)=>{var _a2,_b2;const gx=28+gi*groupW+(groupW-(grouped?((null==(_b2=null==(_a2=rows[0])?void 0:_a2.values)?void 0:_b2.length)||1)*barW:barW))/2,vals=grouped?d.values||[0]:[d.value||0];return jsxRuntimeExports.jsxs("g",{children:[vals.map((v,bi)=>{const h=Math.max(0,v/maxVal*innerH),x=gx+bi*barW,y=baseline-h,color=grouped?DEFAULT_COLORS[bi%DEFAULT_COLORS.length]:DEFAULT_COLORS[0];return jsxRuntimeExports.jsxs("g",{children:[jsxRuntimeExports.jsx("rect",{className:styles$3_bar,x:x,y:y,width:Math.max(1,barW-1),height:h,fill:color,rx:1,children:jsxRuntimeExports.jsx("title",{children:grouped?groupedBarTitle(d.label,v,bi,legend2,valueFormatter):singleBarTitle(d.label,v,valueFormatter)})}),!grouped&&barW>=18&&jsxRuntimeExports.jsx("text",{className:styles$3_vValue,x:x+barW/2,y:Math.max(8,y-4),textAnchor:"middle",children:valueFormatter(v)})]},bi)}),jsxRuntimeExports.jsx("text",{className:styles$3_vLabel,x:28+gi*groupW+groupW/2,y:height-4,textAnchor:"middle",children:String(d.label).slice(0,8)})]},gi)})]})]})});function fmtMs(ms){return ms>0?ms<1e3?`${Math.round(ms)} ms`:`${(ms/1e3).toFixed(2)} s`:"-"}function statusColor(status){return 0===status?"default":status<400?"success":status<500?"warning":"error"}function availColor(pct){return pct>=95?"var(--color-success, #22c55e)":pct>=80?"var(--color-warning, #f59e0b)":"var(--color-error, #ef4444)"}function dominantFailCell(bucket){return bucket&&null!=bucket.dominantFailStatus?jsxRuntimeExports.jsxs(Tag,{color:statusColor(bucket.dominantFailStatus),children:[bucket.dominantFailStatus," × ",bucket.dominantFailCount]}):null}const styles$2_embedded="_embedded_sdeqo_7",styles$2_centerState="_centerState_sdeqo_11",styles$2_header="_header_sdeqo_20",styles$2_cardRow="_cardRow_sdeqo_23",styles$2_statCard="_statCard_sdeqo_33",styles$2_section="_section_sdeqo_70",styles$2_streakRow="_streakRow_sdeqo_83",styles$2_chartWrap="_chartWrap_sdeqo_91",styles$2_chartTitle="_chartTitle_sdeqo_96",styles$2_codeTags="_codeTags_sdeqo_105",styles$2_topRow="_topRow_sdeqo_112",styles$2_rescuedBadge="_rescuedBadge_sdeqo_115",fmtPercent=n=>`${n}%`;function ProxyStatsDashboard(){const[data,setData]=reactExports.useState(null),[loading,setLoading]=reactExports.useState(!0),[autoRefresh,setAutoRefresh]=reactExports.useState(!0),fetchData=reactExports.useCallback(()=>{setLoading(!0),fetch(apiUrl("/api/proxy-stats")).then(res=>{if(!res.ok)throw new Error(`HTTP ${res.status}`);return res.json()}).then(d=>{setData(d.proxyStats),setLoading(!1)}).catch(err=>{reportSwallowed("proxyStats.fetch",err),setLoading(!1)})},[]);reactExports.useEffect(()=>{fetchData()},[fetchData]),reactExports.useEffect(()=>{if(!autoRefresh)return;const id=setInterval(fetchData,15e3);return()=>clearInterval(id)},[autoRefresh,fetchData]);const byModelBars=reactExports.useMemo(()=>((null==data?void 0:data.byModel)||[]).map(m=>({label:m.model,values:[m.upstreamAvailabilityPct,m.availabilityPct]})),[data]),retryDistBars=reactExports.useMemo(()=>((null==data?void 0:data.retryDistribution)||[]).map(d=>({label:String(d.retries),value:d.count})),[data]),retryBurdenBars=reactExports.useMemo(()=>((null==data?void 0:data.retryBurden)||[]).map(b=>{return{label:(key=b.key,t(`ui.proxyStats.retryBurdenBuckets.${key}`)),value:b.count};var key}),[data]),recentRecords=reactExports.useMemo(()=>((null==data?void 0:data.recentRecords)||[]).filter(r=>{const status=Number(r.final_status);return 0===status||status>=400||(Number(r.retries)||0)>0}),[data]);if(loading&&!data)return jsxRuntimeExports.jsx("div",{className:`${styles$2_embedded} ${styles$2_centerState}`,children:jsxRuntimeExports.jsx(Spin,{size:"large"})});if(!data||!data.summary||0===data.summary.totalRequests)return jsxRuntimeExports.jsxs("div",{className:styles$2_embedded,children:[jsxRuntimeExports.jsx(DashboardHeader,{onRefresh:fetchData,autoRefresh:autoRefresh,setAutoRefresh:setAutoRefresh}),jsxRuntimeExports.jsx("div",{className:styles$2_centerState,children:jsxRuntimeExports.jsx(Empty,{description:t("ui.proxyStats.noData")})})]});const s=data.summary,rescued=Math.max(0,s.totalSucceeded-s.totalFirstOk);return jsxRuntimeExports.jsxs("div",{className:styles$2_embedded,children:[jsxRuntimeExports.jsx(DashboardHeader,{onRefresh:fetchData,autoRefresh:autoRefresh,setAutoRefresh:setAutoRefresh}),jsxRuntimeExports.jsxs("div",{className:styles$2_cardRow,children:[jsxRuntimeExports.jsx(Card,{className:styles$2_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.totalRequests"),value:s.totalRequests})}),jsxRuntimeExports.jsx(Card,{className:styles$2_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.totalRetries"),value:s.totalRetries,suffix:s.totalRequests?`(${(s.totalRetries/s.totalRequests).toFixed(1)}/req)`:""})}),jsxRuntimeExports.jsx(Card,{className:styles$2_statCard,style:{"--stat-accent":availColor(s.upstreamAvailabilityPct)},children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.upstreamAvailability"),value:s.upstreamAvailabilityPct,suffix:"%",valueStyle:{color:availColor(s.upstreamAvailabilityPct)}})}),jsxRuntimeExports.jsxs(Card,{className:styles$2_statCard,style:{"--stat-accent":availColor(s.downstreamAvailabilityPct)},children:[jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.downstreamAvailability"),value:s.downstreamAvailabilityPct,suffix:"%",valueStyle:{color:availColor(s.downstreamAvailabilityPct)}}),rescued>0&&jsxRuntimeExports.jsx("span",{className:styles$2_rescuedBadge,children:t("ui.proxyStats.rescuedByRetry",{count:rescued})})]}),jsxRuntimeExports.jsx(Card,{className:styles$2_statCard,style:{"--stat-accent":"var(--color-error, #ef4444)"},children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.failedRequests"),value:s.totalFailed,valueStyle:{color:"var(--color-error, #ef4444)"}})}),jsxRuntimeExports.jsx(Card,{className:styles$2_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.p95Duration"),value:fmtMs(s.p95Ms)})})]}),jsxRuntimeExports.jsxs(Card,{title:t("ui.proxyStats.availabilityAnalysis"),className:styles$2_section,children:[jsxRuntimeExports.jsxs("div",{className:styles$2_streakRow,children:[jsxRuntimeExports.jsxs(Space,{children:[jsxRuntimeExports.jsxs("span",{children:[t("ui.proxyStats.currentStreak"),":"]}),jsxRuntimeExports.jsxs(Tag,{icon:"success"===s.currentStreakType?jsxRuntimeExports.jsx(RefIcon$2,{}):jsxRuntimeExports.jsx(RefIcon$1,{}),color:"success"===s.currentStreakType?"success":"error",children:["success"===s.currentStreakType?t("ui.proxyStats.success"):t("ui.proxyStats.failure")," × ",s.currentStreakCount]})]}),jsxRuntimeExports.jsxs(Space,{children:[jsxRuntimeExports.jsxs("span",{children:[t("ui.proxyStats.worstFailureStreak"),":"]}),jsxRuntimeExports.jsx(Tag,{color:"error",children:s.worstFailureStreak})]})]}),jsxRuntimeExports.jsxs("div",{className:styles$2_chartWrap,children:[jsxRuntimeExports.jsx("div",{className:styles$2_chartTitle,children:t("ui.proxyStats.upstreamVsDownstream")}),jsxRuntimeExports.jsx(BarChart$1,{height:180,grouped:!0,legend:[t("ui.proxyStats.upstreamAvailability"),t("ui.proxyStats.downstreamAvailability")],ariaLabel:t("ui.proxyStats.upstreamVsDownstream"),data:byModelBars,valueFormatter:fmtPercent,maxBars:10})]}),jsxRuntimeExports.jsx(ForwardTable,{dataSource:data.byModel||[],rowKey:"model",size:"small",pagination:!1,className:styles$2_section,columns:[{title:t("ui.proxyStats.byModel"),dataIndex:"model",key:"model"},{title:t("ui.proxyStats.totalRequests"),dataIndex:"requests",key:"requests"},{title:t("ui.proxyStats.retries"),dataIndex:"retries",key:"retries"},{title:t("ui.proxyStats.upstreamAvailability"),dataIndex:"upstreamAvailabilityPct",key:"upAvail",render:v=>`${v}%`},{title:t("ui.proxyStats.downstreamAvailability"),dataIndex:"availabilityPct",key:"dsAvail",render:v=>`${v}%`},{title:t("ui.proxyStats.dominantFail"),key:"domFail",render:(_,r)=>dominantFailCell(r)||"-"},{title:t("ui.proxyStats.p95Duration"),dataIndex:"p95Ms",key:"p95",render:fmtMs}]})]}),jsxRuntimeExports.jsxs(Card,{title:t("ui.proxyStats.retryDistribution"),className:styles$2_section,children:[jsxRuntimeExports.jsx("div",{className:styles$2_chartWrap,children:jsxRuntimeExports.jsx(BarChart$1,{height:160,ariaLabel:t("ui.proxyStats.retryDistribution"),data:retryDistBars,maxBars:15})}),jsxRuntimeExports.jsxs("div",{className:styles$2_chartWrap,children:[jsxRuntimeExports.jsx("div",{className:styles$2_chartTitle,children:t("ui.proxyStats.retryBurden")}),jsxRuntimeExports.jsx(BarChart$1,{height:160,ariaLabel:t("ui.proxyStats.retryBurden"),data:retryBurdenBars})]}),jsxRuntimeExports.jsxs("div",{className:styles$2_codeTags,children:[jsxRuntimeExports.jsxs("span",{children:[t("ui.proxyStats.retryCodes"),":"]}),jsxRuntimeExports.jsx(Space,{wrap:!0,children:(data.retryCodes||[]).map(c=>jsxRuntimeExports.jsxs(Tag,{color:statusColor(c.code),children:[c.code," × ",c.count]},c.code))})]})]}),jsxRuntimeExports.jsxs(Card,{title:t("ui.proxyStats.durationAnalysis"),className:styles$2_section,children:[jsxRuntimeExports.jsxs("div",{className:styles$2_cardRow,children:[jsxRuntimeExports.jsx(Card,{className:styles$2_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.p50Duration"),value:fmtMs(s.p50Ms)})}),jsxRuntimeExports.jsx(Card,{className:styles$2_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.p95Duration"),value:fmtMs(s.p95Ms)})}),jsxRuntimeExports.jsx(Card,{className:styles$2_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.p99Duration"),value:fmtMs(s.p99Ms)})}),jsxRuntimeExports.jsx(Card,{className:styles$2_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.maxDuration"),value:fmtMs(s.maxMs)})}),jsxRuntimeExports.jsx(Card,{className:styles$2_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.avgDuration"),value:fmtMs(s.avgMs)})})]}),jsxRuntimeExports.jsxs("div",{className:styles$2_topRow,children:[jsxRuntimeExports.jsx(DurationRecordTable,{title:t("ui.proxyStats.slowest"),record:data.slowest}),jsxRuntimeExports.jsx(DurationRecordTable,{title:t("ui.proxyStats.fastest"),record:data.fastest})]})]}),data.byPath&&data.byPath.length>0&&jsxRuntimeExports.jsx(Card,{title:t("ui.proxyStats.byPath"),className:styles$2_section,children:jsxRuntimeExports.jsx(ForwardTable,{dataSource:data.byPath,rowKey:"path",size:"small",pagination:!1,columns:[{title:t("ui.proxyStats.colPath"),dataIndex:"path",key:"path",ellipsis:!0},{title:t("ui.proxyStats.totalRequests"),dataIndex:"requests",key:"requests"},{title:t("ui.proxyStats.retries"),dataIndex:"retries",key:"retries"},{title:t("ui.proxyStats.downstreamAvailability"),dataIndex:"availabilityPct",key:"avail",render:v=>`${v}%`},{title:t("ui.proxyStats.dominantFail"),key:"domFail",render:(_,r)=>dominantFailCell(r)||"-"}]})}),data.byProfile&&data.byProfile.length>0&&jsxRuntimeExports.jsx(Card,{title:t("ui.proxyStats.byProfile"),className:styles$2_section,children:jsxRuntimeExports.jsx(ForwardTable,{dataSource:data.byProfile,rowKey:"profile_id",size:"small",pagination:!1,columns:[{title:t("ui.proxyStats.byProfile"),dataIndex:"profile_name",key:"profile_name"},{title:t("ui.proxyStats.totalRequests"),dataIndex:"requests",key:"requests"},{title:t("ui.proxyStats.retries"),dataIndex:"retries",key:"retries"},{title:t("ui.proxyStats.upstreamAvailability"),dataIndex:"upstreamAvailabilityPct",key:"upAvail",render:v=>`${v}%`},{title:t("ui.proxyStats.downstreamAvailability"),dataIndex:"availabilityPct",key:"dsAvail",render:v=>`${v}%`},{title:t("ui.proxyStats.dominantFail"),key:"domFail",render:(_,r)=>dominantFailCell(r)||"-"},{title:t("ui.proxyStats.p95Duration"),dataIndex:"p95Ms",key:"p95",render:fmtMs}]})}),jsxRuntimeExports.jsx(Card,{title:t("ui.proxyStats.recentErrors"),className:styles$2_section,children:jsxRuntimeExports.jsx(ForwardTable,{dataSource:recentRecords,rowKey:"ts",size:"small",pagination:{pageSize:20,size:"small"},scroll:{x:"max-content"},columns:[{title:t("ui.proxyStats.colTime"),dataIndex:"ts",key:"ts",width:180,ellipsis:!0,render:v=>v?new Date(v).toLocaleString():"-"},{title:t("ui.proxyStats.colMethod"),dataIndex:"method",key:"method",width:70},{title:t("ui.proxyStats.colPath"),dataIndex:"path",key:"path",ellipsis:!0},{title:t("ui.proxyStats.colModel"),dataIndex:"model",key:"model",ellipsis:!0},{title:t("ui.proxyStats.colStatus"),dataIndex:"final_status",key:"status",width:70,render:v=>jsxRuntimeExports.jsx(Tag,{color:statusColor(v),children:v||"-"})},{title:t("ui.proxyStats.attempts"),dataIndex:"attempts",key:"attempts",width:80},{title:t("ui.proxyStats.retries"),dataIndex:"retries",key:"retries",width:80},{title:t("ui.proxyStats.colDuration"),dataIndex:"duration_ms",key:"dur",width:100,render:fmtMs},{title:t("ui.proxyStats.retryCodes"),dataIndex:"retry_codes",key:"rc",width:120,render:v=>v&&v.length?v.map(c=>jsxRuntimeExports.jsx(Tag,{color:statusColor(c),children:c},c)):"-"}]})})]})}function DurationRecordTable({title:title,record:record}){return jsxRuntimeExports.jsx(ForwardTable,{title:()=>title,dataSource:record?[record]:[],rowKey:"ts",size:"small",pagination:!1,columns:[{title:t("ui.proxyStats.colPath"),dataIndex:"path",key:"path",ellipsis:!0},{title:t("ui.proxyStats.colModel"),dataIndex:"model",key:"model",ellipsis:!0},{title:t("ui.proxyStats.attempts"),dataIndex:"attempts",key:"attempts"},{title:t("ui.proxyStats.colDuration"),dataIndex:"duration_ms",key:"dur",render:fmtMs}]})}function DashboardHeader({onRefresh:onRefresh,autoRefresh:autoRefresh,setAutoRefresh:setAutoRefresh}){return jsxRuntimeExports.jsx("div",{className:styles$2_header,children:jsxRuntimeExports.jsxs(Space,{children:[jsxRuntimeExports.jsx("span",{children:t("ui.proxyStats.autoRefresh")}),jsxRuntimeExports.jsx(Switch,{checked:autoRefresh,onChange:setAutoRefresh,size:"small","aria-label":t("ui.proxyStats.autoRefresh")}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$3,{}),onClick:onRefresh,children:t("ui.proxyStats.refresh")})]})})}const styles$1_form="_form_ntb31_3",styles$1_configGrid="_configGrid_ntb31_9",styles$1_configGroup="_configGroup_ntb31_18",styles$1_groupTitle="_groupTitle_ntb31_26",styles$1_row="_row_ntb31_41",styles$1_label="_label_ntb31_53",styles$1_inputCell="_inputCell_ntb31_68",styles$1_hint="_hint_ntb31_76",styles$1_fullWidth="_fullWidth_ntb31_83",styles$1_numField="_numField_ntb31_87",styles$1_numInput="_numInput_ntb31_96",styles$1_unit="_unit_ntb31_101",styles$1_reservedTag="_reservedTag_ntb31_106",styles$1_footer="_footer_ntb31_115",styles$1_footerRight="_footerRight_ntb31_123",styles$1_note="_note_ntb31_128",MODE_VALUES=["off","serial","race","stagger"],STATUS_CODE_OPTIONS=[429,500,502,503,504,508,529,408],NUMERIC_FIELDS=[{key:"retryIntervalMs",unit:"ms",min:0,max:6e5},{key:"retryInterval429Ms",unit:"ms",min:0,max:6e5},{key:"maxRetries",unit:"",min:0,max:1e3},{key:"maxConcurrent",unit:"",min:1,max:100},{key:"connectTimeoutMs",unit:"ms",min:0,max:6e5}];function RetryConfigForm({config:config,defaults:defaults,onSave:onSave}){const[form2,setForm]=reactExports.useState(null),[dirty,setDirty]=reactExports.useState(!1),initializedRef=reactExports.useRef(!1);reactExports.useEffect(()=>{config&&(initializedRef.current?dirty||setForm({...config}):(setForm({...config}),initializedRef.current=!0))},[config,dirty]);const def=defaults||{},patch=(key,value)=>{setDirty(!0),setForm(prev=>prev?{...prev,[key]:value}:prev)},renderResetBtn=key=>(key=>JSON.stringify(null==form2?void 0:form2[key])!==JSON.stringify(def[key]))(key)?jsxRuntimeExports.jsx(Tooltip,{title:t("ui.retryConfig.resetDefault"),children:jsxRuntimeExports.jsx(Button,{type:"text",size:"small",icon:jsxRuntimeExports.jsx(RefIcon,{}),onClick:()=>(key=>{setDirty(!0),setForm(prev=>prev?{...prev,[key]:def[key]}:prev)})(key)})}):null;return form2?jsxRuntimeExports.jsxs("div",{className:styles$1_form,children:[jsxRuntimeExports.jsxs("div",{className:styles$1_configGrid,children:[jsxRuntimeExports.jsxs("section",{className:styles$1_configGroup,children:[jsxRuntimeExports.jsx("div",{className:styles$1_groupTitle,children:t("ui.retryConfig.groupStrategy")}),jsxRuntimeExports.jsxs("div",{className:styles$1_row,children:[jsxRuntimeExports.jsxs("span",{className:styles$1_label,children:[t("ui.retryConfig.mode"),renderResetBtn("mode")]}),jsxRuntimeExports.jsxs("div",{className:styles$1_inputCell,children:[jsxRuntimeExports.jsx(Segmented,{value:form2.mode||"off",options:MODE_VALUES.map(v=>({value:v,label:t(`ui.retryConfig.modeLabel.${v}`)})),onChange:v=>patch("mode",v)}),jsxRuntimeExports.jsx("div",{className:styles$1_hint,children:t(`ui.retryConfig.modeHint.${form2.mode||"off"}`)})]})]}),jsxRuntimeExports.jsxs("div",{className:styles$1_row,children:[jsxRuntimeExports.jsxs("span",{className:styles$1_label,children:[t("ui.retryConfig.statusCodes"),renderResetBtn("retryStatusCodes")]}),jsxRuntimeExports.jsxs("div",{className:styles$1_inputCell,children:[jsxRuntimeExports.jsx(Select,{mode:"multiple",className:styles$1_fullWidth,value:form2.retryStatusCodes||[],onChange:v=>patch("retryStatusCodes",v.map(Number).filter(n=>Number.isFinite(n)&&n>0)),options:STATUS_CODE_OPTIONS.map(c=>({label:String(c),value:c}))}),jsxRuntimeExports.jsx("div",{className:styles$1_hint,children:t("ui.retryConfig.statusCodesHint")})]})]})]}),jsxRuntimeExports.jsxs("section",{className:styles$1_configGroup,children:[jsxRuntimeExports.jsx("div",{className:styles$1_groupTitle,children:t("ui.retryConfig.groupExecution")}),NUMERIC_FIELDS.map(f=>jsxRuntimeExports.jsxs("div",{className:styles$1_row,children:[jsxRuntimeExports.jsxs("span",{className:styles$1_label,children:[t(`ui.retryConfig.${f.key}`),renderResetBtn(f.key)]}),jsxRuntimeExports.jsx("div",{className:styles$1_inputCell,children:jsxRuntimeExports.jsxs("div",{className:styles$1_numField,children:[jsxRuntimeExports.jsx(TypedInputNumber,{className:styles$1_numInput,value:form2[f.key],min:f.min,max:f.max,onChange:v=>patch(f.key,v)}),f.unit&&jsxRuntimeExports.jsx("span",{className:styles$1_unit,children:f.unit})]})})]},f.key)),jsxRuntimeExports.jsxs("div",{className:styles$1_row,children:[jsxRuntimeExports.jsxs("span",{className:styles$1_label,children:[t("ui.retryConfig.streamIdleTimeoutMs"),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.retryConfig.streamIdleReserved"),children:jsxRuntimeExports.jsx("span",{className:styles$1_reservedTag,children:t("ui.retryConfig.reserved")})})]}),jsxRuntimeExports.jsx("div",{className:styles$1_inputCell,children:jsxRuntimeExports.jsxs("div",{className:styles$1_numField,children:[jsxRuntimeExports.jsx(TypedInputNumber,{className:styles$1_numInput,value:form2.streamIdleTimeoutMs,disabled:!0}),jsxRuntimeExports.jsx("span",{className:styles$1_unit,children:"ms"})]})})]})]})]}),jsxRuntimeExports.jsxs("div",{className:styles$1_footer,children:[jsxRuntimeExports.jsx(Button,{icon:jsxRuntimeExports.jsx(RefIcon,{}),onClick:()=>{setDirty(!0),setForm({...def})},children:t("ui.retryConfig.resetAll")}),jsxRuntimeExports.jsx("div",{className:styles$1_footerRight,children:jsxRuntimeExports.jsx(Button,{type:"primary",onClick:async()=>{if(form2)if(MODE_VALUES.includes(form2.mode))try{await onSave(form2),staticMethods.success(t("ui.retryConfig.saved")),setDirty(!1)}catch(err){reportSwallowed("retryConfig.save",err)}else staticMethods.warning(t("ui.retryConfig.invalidMode"))},children:t("ui.retryConfig.save")})})]}),jsxRuntimeExports.jsx("div",{className:styles$1_note,children:t("ui.retryConfig.note")})]}):jsxRuntimeExports.jsx("div",{className:styles$1_form,style:{display:"flex",justifyContent:"center",alignItems:"center",padding:"40px 0"},children:jsxRuntimeExports.jsx(Spin,{size:"small"})})}const styles_shell="_shell_1po19_3",styles_toolbar="_toolbar_1po19_5",styles_toolbarTitle="_toolbarTitle_1po19_16",styles_toolbarActions="_toolbarActions_1po19_27",styles_body="_body_1po19_39",styles_configFormWrap="_configFormWrap_1po19_43",styles_configHeader="_configHeader_1po19_44",styles_configHeaderTitle="_configHeaderTitle_1po19_45",styles_configScroll="_configScroll_1po19_35";function ProxyStatsModal({retryConfig:retryConfig,retryDefaults:retryDefaults,onRetryConfigChange:onRetryConfigChange}){const[tab,setTab]=reactExports.useState("config");return jsxRuntimeExports.jsxs("div",{className:styles_shell,children:[jsxRuntimeExports.jsxs("div",{className:styles_toolbar,children:[jsxRuntimeExports.jsx("h3",{className:styles_toolbarTitle,children:t("ui.proxyStats.title")}),jsxRuntimeExports.jsx("div",{className:styles_toolbarActions,children:jsxRuntimeExports.jsx(Segmented,{size:"small",value:tab,onChange:setTab,options:[{label:t("ui.proxyStats.tabConfig"),value:"config"},{label:t("ui.proxyStats.tabStats"),value:"stats"}]})})]}),jsxRuntimeExports.jsx("div",{className:styles_body,children:"config"===tab?jsxRuntimeExports.jsx("div",{className:styles_configScroll,children:jsxRuntimeExports.jsxs("div",{className:styles_configFormWrap,children:[jsxRuntimeExports.jsxs("div",{className:styles_configHeader,children:[jsxRuntimeExports.jsx("span",{className:styles_configHeaderTitle,children:t("ui.retryConfig.title")}),jsxRuntimeExports.jsx(ConceptHelp,{doc:"RetryConfig",zIndex:1100})]}),jsxRuntimeExports.jsx(RetryConfigForm,{config:retryConfig,defaults:retryDefaults,onSave:async formData=>{await onRetryConfigChange(formData)}})]})}):jsxRuntimeExports.jsx(ProxyStatsDashboard,{})})]})}export{ProxyStatsModal as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root,[data-theme=dark]{--font-mono: "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace;--font-ui: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--bg-base: #0a0a0a;--bg-base-pure: #000;--bg-base-alt: #0d0d0d;--bg-container: #111;--bg-elevated: #1e1e1e;--bg-surface: #2a2a2a;--bg-code: #14141F;--bg-code-dark: #0d1117;--bg-code-hover: #0e0e17;--bg-code-system: #060f2a;--border-primary: #2a2a2a;--border-secondary: #303030;--border-hover: #3a3a3a;--border-light: #444;--border-code: #2a2a3e;--border-code-system: #0b2a5c;--text-primary: #e5e5e5;--text-secondary: #ccc;--text-tertiary: #888;--text-muted: #666;--text-disabled: #555;--text-disabled-faint: rgba(255, 255, 255, .45);--text-white: #fff;--text-gray: #6b7280;--text-light: #aaa;--color-primary: #1668dc;--color-primary-light: #3b82f6;--color-primary-lighter: #60a5fa;--color-primary-pale: #4a9eff;--color-primary-dark: #165bbe;--color-primary-dark-bg: #1e3a5f;--color-primary-bg-light: rgba(22, 104, 220, .15);--color-primary-bg-lighter: rgba(22, 104, 220, .2);--color-primary-bg-medium: rgba(22, 104, 220, .35);--color-primary-bg-faint: rgba(22, 104, 220, .1);--color-primary-shadow: rgba(22, 104, 220, .6);--color-success: #22c55e;--color-success-light: #4ade80;--color-success-dark: #2ea043;--color-success-bg-light: rgba(34, 197, 94, .15);--color-success-bg-medium: rgba(34, 197, 94, .3);--color-error: #ef4444;--color-error-rgb: 239, 68, 68;--color-error-light: #f87171;--color-error-muted: #a33;--color-error-dark-bg: #220000;--color-error-bg-light: rgba(239, 68, 68, .15);--color-error-bg-faint: rgba(239, 68, 68, .1);--color-error-bg-medium: rgba(239, 68, 68, .3);--color-warning: #f59e0b;--color-warning-light: #fbbf24;--color-warning-dark-bg: #2a2000;--color-warning-dark-border: #5c4d00;--color-warning-bg-light: rgba(245, 158, 11, .15);--color-warning-bg-medium: rgba(245, 158, 11, .3);--color-selection-bg: #1a2332;--color-selection-alt: #264f78;--color-green-bg: #1a3a1a;--color-green-dark-bg: #162312;--color-diff-add: #73c991;--color-diff-delete: #ef4444;--color-diff-add-bg: rgba(115, 201, 145, .15);--color-diff-delete-bg: rgba(239, 68, 68, .11);--color-tree-selected: #532f00;--color-accent-yellow: #e2c08d;--color-info-light: #7dd3fc;--color-code-purple: #a78bfa;--color-code-orange: #d97757;--code-keyword: #f87171;--code-string: #7dd3fc;--code-comment: #888;--code-number: #7dd3fc;--code-text: #e5e5e5;--code-inline-color: #aeafff;--code-inline-bg: #14141F;--code-error: #e06c75;--color-purple-bg: rgba(139, 92, 246, .18);--color-purple-border: rgba(139, 92, 246, .3);--color-primary-outline: rgba(22, 104, 220, .75);--color-primary-bg-extra-faint: rgba(74, 159, 255, .05);--color-primary-pale-shadow: rgba(74, 159, 255, .5);--color-error-border: rgba(239, 68, 68, .25);--color-error-border-light: rgba(239, 68, 68, .2);--color-warning-bg-faint: rgba(234, 179, 8, .1);--color-warning-border-light: rgba(234, 179, 8, .2);--color-success-bg-faint: rgba(34, 197, 94, .11);--color-diff-delete-text: #fca5a5;--color-green-border: #2a5a3a;--color-green-dark-border: #274916;--color-red-dark-bg: #8b1a1a;--color-red-dark-border: #2a1a1a;--color-thinking-bg: #111108;--color-thinking-border: #2a2a1e;--color-code-orange-border: rgba(217, 119, 87, .27);--color-code-orange-bg: rgba(217, 119, 87, .07);--bg-container-alt: #161616;--bg-model-avatar: #000;--bg-sub-avatar: #3a3a3a;--avatar-bg-0: #5b6abf;--avatar-bg-1: #2a9d8f;--avatar-bg-2: #6366f1;--avatar-bg-3: #d97706;--avatar-bg-4: #3b82f6;--avatar-bg-5: #8b5cf6;--avatar-bg-6: #0e7490;--avatar-bg-7: #ea580c;--avatar-bg-8: #059669;--avatar-bg-9: #e11d48;--avatar-bg-10: #0284c7;--avatar-bg-11: #dc2626;--avatar-bg-12: #65a30d;--avatar-bg-13: #ca8a04;--avatar-bg-14: #9333ea;--avatar-bg-15: #db2777;--avatar-bg-16: #6b7280;--avatar-bg-17: #1d4ed8;--avatar-bg-18: #b45309;--avatar-bg-19: #047857;--model-logo-mono: #fff;--bg-input-bar: rgba(0, 0, 0, .5);--bg-sticky-btn: rgba(0, 0, 0, .5);--chat-boxer-gradient-dir: to top;--chat-boxer-bg-from: var(--bg-surface);--chat-boxer-bg-to: var(--border-secondary);--chat-boxer-hover-from: var(--border-secondary);--chat-boxer-hover-to: var(--border-hover);--shadow-approval-heavy: rgba(0, 0, 0, .6);--shadow-approval-glow: rgba(245, 158, 11, .15);--color-approval-border: #f59e0b;--color-approval-label: #fbbf24;--color-gray-bg-light: rgba(107, 114, 128, .15);--color-gray-bg-medium: rgba(107, 114, 128, .3);--overlay-light-faint: rgba(255, 255, 255, .04);--overlay-light-medium: rgba(255, 255, 255, .1);--overlay-light-strong: rgba(255, 255, 255, .2);--overlay-light-half: rgba(255, 255, 255, .5);--overlay-light-bright: rgba(255, 255, 255, .7);--overlay-dark: rgba(0, 0, 0, .75);--overlay-dark-medium: rgba(0, 0, 0, .6);--overlay-dark-light: rgba(0, 0, 0, .5);--overlay-dark-strong: rgba(0, 0, 0, .88)}[data-theme=light]{--bubble-user-bg-light: #222;--bubble-user-hover-border-light: #444;--bubble-user-highlight-shadow-light: 0 0 12px rgba(255, 255, 255, .5);--bubble-assistant-shadow-light: 0 3px 8px rgba(0, 0, 0, .08);--bg-base: #FAFAFA;--bg-base-pure: #FFFFFF;--bg-base-alt: #F5F5F5;--bg-container: #FFFFFF;--bg-elevated: #F9F9F9;--bg-surface: #F0F0F0;--bg-code: #F5F5F5;--bg-code-dark: #F5F5F5;--bg-code-hover: #EAEAEA;--bg-code-system: #EFF1F3;--border-primary: #E0E0E0;--border-secondary: #EBEBEB;--border-hover: #C0C0C0;--border-light: #D4D4D4;--border-code: #D4D4D4;--border-code-system: #C0D0E0;--text-primary: #1a1a1a;--text-secondary: #333;--text-tertiary: #666;--text-muted: #888;--text-disabled: #AAA;--text-disabled-faint: rgba(0, 0, 0, .35);--text-white: #1a1a1a;--text-gray: #6b7280;--text-light: #555;--color-primary: #0969DA;--color-primary-light: #0969DA;--color-primary-lighter: #0969DA;--color-primary-pale: #2A7DE1;--color-primary-dark: #0550AE;--color-primary-dark-bg: #DDF4FF;--color-primary-bg-light: rgba(9, 105, 218, .1);--color-primary-bg-lighter: rgba(9, 105, 218, .12);--color-primary-bg-medium: rgba(9, 105, 218, .2);--color-primary-bg-faint: rgba(9, 105, 218, .06);--color-primary-shadow: rgba(9, 105, 218, .3);--color-success: #1A7F37;--color-success-light: #2DA44E;--color-success-dark: #116329;--color-success-bg-light: rgba(26, 127, 55, .08);--color-success-bg-medium: rgba(26, 127, 55, .15);--color-error: #CF222E;--color-error-rgb: 207, 34, 46;--color-error-light: #DA3633;--color-error-muted: #82071E;--color-error-dark-bg: #FFEBE9;--color-error-bg-light: rgba(207, 34, 46, .08);--color-error-bg-faint: rgba(207, 34, 46, .06);--color-error-bg-medium: rgba(207, 34, 46, .15);--color-warning: #9A6700;--color-warning-light: #BF8700;--color-warning-dark-bg: #FFF8E1;--color-warning-dark-border: #D4A72C;--color-warning-bg-light: rgba(154, 103, 0, .08);--color-warning-bg-medium: rgba(154, 103, 0, .15);--color-selection-bg: #B4D7FF;--color-selection-alt: #ADD6FF;--color-green-bg: #DAFBE1;--color-green-dark-bg: #DAFBE1;--color-diff-add: #116329;--color-diff-delete: #82071E;--color-diff-add-bg: #DAFBE1;--color-diff-delete-bg: #FFEBE9;--color-tree-selected: #FFF3D5;--color-accent-yellow: #CB7C5E;--color-info-light: #0969DA;--color-code-purple: #8250DF;--color-code-orange: #953800;--code-keyword: #0000FF;--code-string: #A31515;--code-comment: #6A9955;--code-number: #098658;--code-text: #383838;--code-inline-color: #0969DA;--code-inline-bg: #EFF1F3;--code-error: #CF222E;--color-purple-bg: rgba(130, 80, 223, .1);--color-purple-border: rgba(130, 80, 223, .2);--color-primary-outline: rgba(9, 105, 218, .5);--color-primary-bg-extra-faint: rgba(9, 105, 218, .04);--color-primary-pale-shadow: rgba(9, 105, 218, .3);--color-error-border: rgba(207, 34, 46, .2);--color-error-border-light: rgba(207, 34, 46, .15);--color-warning-bg-faint: rgba(154, 103, 0, .06);--color-warning-border-light: rgba(154, 103, 0, .15);--color-success-bg-faint: rgba(26, 127, 55, .08);--color-diff-delete-text: #DA3633;--color-green-border: #2DA44E;--color-green-dark-border: #1A7F37;--color-red-dark-bg: #FFEBE9;--color-red-dark-border: #FFCECB;--color-thinking-bg: #FAFAF5;--color-thinking-border: #E8E8D0;--color-code-orange-border: rgba(149, 56, 0, .2);--color-code-orange-bg: rgba(149, 56, 0, .06);--bg-container-alt: #F5F5F5;--bg-model-avatar: transparent;--bg-sub-avatar: #E5E5E5;--avatar-bg-0: #ced0db;--avatar-bg-1: #9abcb8;--avatar-bg-2: #edeef5;--avatar-bg-3: #cfb99f;--avatar-bg-4: #d6deea;--avatar-bg-5: #efecf5;--avatar-bg-6: #78a8b5;--avatar-bg-7: #d6bcaf;--avatar-bg-8: #72b8a2;--avatar-bg-9: #d6b7be;--avatar-bg-10: #8fb5c8;--avatar-bg-11: #d6bbbb;--avatar-bg-12: #a4bc83;--avatar-bg-13: #cab893;--avatar-bg-14: #d6cae2;--avatar-bg-15: #d6bbc7;--avatar-bg-16: #bbbcbf;--avatar-bg-17: #b2bad2;--avatar-bg-18: #c2a28a;--avatar-bg-19: #5ead97;--model-logo-mono: #000;--bg-input-bar: #ffffff;--bg-sticky-btn: rgba(255, 255, 255, .85);--chat-boxer-gradient-dir: to bottom;--chat-boxer-bg-from: #F7F7F7;--chat-boxer-bg-to: #F0F0F0;--chat-boxer-hover-from: #EEEEEE;--chat-boxer-hover-to: #E8E8E8;--shadow-approval-heavy: rgba(0, 0, 0, .1);--shadow-approval-glow: rgba(245, 158, 11, .08);--color-approval-border: #1f1f1f;--color-approval-label: #1f1f1f;--color-gray-bg-light: rgba(107, 114, 128, .1);--color-gray-bg-medium: rgba(107, 114, 128, .2);--overlay-light-faint: rgba(0, 0, 0, .03);--overlay-light-medium: rgba(0, 0, 0, .06);--overlay-light-strong: rgba(0, 0, 0, .1);--overlay-light-half: rgba(0, 0, 0, .3);--overlay-light-bright: rgba(0, 0, 0, .5);--overlay-dark: rgba(0, 0, 0, .5);--overlay-dark-medium: rgba(0, 0, 0, .4);--overlay-dark-light: rgba(0, 0, 0, .3);--overlay-dark-strong: rgba(0, 0, 0, .6)}body{margin:0;background-color:var(--bg-base-alt);overflow-x:hidden;-webkit-tap-highlight-color:transparent}body.ccv-ws-popup{background-color:transparent}html,body{overscroll-behavior:none}html,body,#root{height:100%}::selection{background-color:var(--color-selection-alt);color:inherit}*{scrollbar-width:thin;scrollbar-color:var(--border-hover) var(--bg-base-alt)}@media(pointer:coarse){*{scrollbar-width:auto;scrollbar-color:auto}}@media(pointer:fine){*::-webkit-scrollbar{width:6px;height:6px}*::-webkit-scrollbar-track{background:var(--bg-base-alt)}*::-webkit-scrollbar-thumb{background:var(--border-hover);border-radius:3px}*::-webkit-scrollbar-thumb:hover{background:var(--text-disabled)}}.code-highlight{color:var(--code-text)}.hl-keyword{color:var(--code-keyword)}.hl-string{color:var(--code-string)}.hl-comment{color:var(--code-comment);font-style:italic}.hl-number{color:var(--code-number)}.hl-linenum{color:var(--text-disabled);-webkit-user-select:none;user-select:none}.chat-md pre{background:var(--bg-code-dark);border:1px solid var(--border-primary);border-radius:6px;padding:12px;overflow-x:auto;font-family:var(--font-mono);font-size:13px;line-height:1.5}.chat-md code{background:var(--code-inline-bg);padding:2px 6px;border-radius:4px;font-family:var(--font-mono);font-size:13px;color:var(--code-inline-color)}.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:var(--text-white)}.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 var(--color-primary-light);margin:8px 0;padding:4px 12px;color:var(--text-tertiary)}.chat-md table{border-collapse:collapse;margin:8px 0;font-size:13px}.chat-md th,.chat-md td{border:1px solid var(--text-gray);padding:6px 10px}.chat-md th{background:var(--bg-elevated);color:var(--text-white)}.chat-md a{color:var(--color-primary-lighter)}.chat-md img{cursor:pointer;max-width:100%;height:auto;border-radius:6px}.chat-md hr{border:none;border-top:1px solid var(--border-primary);margin:12px 0}.chat-md .chat-boxer hr,.chat-boxer .chat-md hr{border-top-color:var(--border-light);margin:8px 0}.chat-md strong,.chat-md em{color:var(--text-primary)}.mermaid-diagram{display:flex;justify-content:center;margin:12px 0;padding:16px;background:var(--bg-code-dark);border:1px solid var(--border-primary);border-radius:6px;overflow-x:auto}.mermaid-diagram svg{max-width:100%;height:auto}*:focus{outline:none!important;box-shadow:none!important}*:focus-visible{outline:none!important;box-shadow:none!important}.chat-boxer{background:linear-gradient(var(--chat-boxer-gradient-dir),var(--chat-boxer-bg-from),var(--chat-boxer-bg-to));color:var(--text-white);border-radius:6px;padding:2px 10px;margin-bottom:6px;border:1px solid var(--text-muted);box-sizing:border-box}.chat-boxer:hover{background:linear-gradient(var(--chat-boxer-gradient-dir),var(--chat-boxer-hover-from),var(--chat-boxer-hover-to))}.chat-boxer .chat-md tbody{background:var(--bg-base-pure)}.ant-dropdown .logo-dropdown-menu.logo-dropdown-menu{border:1px solid var(--border-hover);border-radius:4px;user-select:none;-webkit-user-select:none}.ant-dropdown .logo-dropdown-menu.logo-dropdown-menu .ant-dropdown-menu-item,.ant-dropdown .logo-dropdown-menu.logo-dropdown-menu .ant-dropdown-menu-submenu-title{font-size:12px;padding:8px 12px}.ant-dropdown-menu-submenu-popup .ant-dropdown-menu{border:1px solid var(--border-hover);border-radius:4px;user-select:none;-webkit-user-select:none}.ant-dropdown .logo-dropdown-menu.logo-dropdown-menu [data-pin-trigger]{opacity:0;color:var(--text-tertiary);padding:7px 8px;margin:-7px -6px -7px 0;border-radius:4px;cursor:pointer;transition:opacity .15s,color .15s,background-color .15s}.ant-dropdown .logo-dropdown-menu.logo-dropdown-menu .ant-dropdown-menu-item:hover [data-pin-trigger]{opacity:.55}.ant-dropdown .logo-dropdown-menu.logo-dropdown-menu [data-pin-trigger]:hover{opacity:.85;color:var(--text-secondary);background-color:var(--border-hover)}.ant-dropdown .logo-dropdown-menu.logo-dropdown-menu [data-pin-trigger][data-pinned=true]{opacity:1;color:var(--color-primary, var(--text-secondary))}.ant-tooltip .ant-tooltip-inner{background-color:var(--bg-base-alt);color:var(--text-primary)}.ant-tooltip .ant-tooltip-arrow:before,.ant-tooltip .ant-tooltip-arrow:after{background:var(--bg-base-alt)}.ant-popover .ant-popover-arrow:before,.ant-popover .ant-popover-arrow:after{background:var(--border-secondary)}[data-theme=light] .ant-popover .ant-popover-arrow:before,[data-theme=light] .ant-popover .ant-popover-arrow:after{background:var(--bg-base-pure)}.ant-typography{font-size:12px}.ant-modal-confirm .ant-modal-content{background-color:var(--bg-elevated);border:1px solid var(--border-primary)}.ant-modal-confirm .ant-modal-confirm-title{color:var(--text-primary)}.ant-modal-confirm .ant-modal-confirm-content{color:var(--text-light)}.ant-modal-confirm .ant-btn-default{background-color:transparent;border-color:var(--border-light);color:var(--text-secondary)}.ant-modal-confirm .ant-btn-default.ant-btn-default:hover,.ant-modal-confirm .ant-btn-default.ant-btn-default:focus{background-color:var(--bg-surface);border-color:var(--text-muted);color:var(--text-white)}.ant-modal-confirm .ant-btn-primary,.ant-modal-confirm .ant-btn-primary:hover{background-color:var(--color-primary);border-color:var(--color-primary)}.ant-tabs .ant-tabs-nav:before{border-bottom-color:var(--border-primary)}.ant-segmented .ant-segmented-item-selected,.ant-segmented .ant-segmented-thumb{background-color:var(--color-primary)}.ant-segmented .ant-segmented-item-selected,.ant-segmented .ant-segmented-item-selected:hover,.ant-segmented .ant-segmented-item-selected .ant-segmented-item-label,.ant-segmented .ant-segmented-item-selected:hover .ant-segmented-item-label,.ant-segmented .ant-segmented-item-selected .ant-segmented-item-icon{color:#fff}[data-theme=light] .hljs{background:var(--bg-code);color:#383838}[data-theme=light] .hljs-keyword{color:#00f}[data-theme=light] .hljs-string{color:#a31515}[data-theme=light] .hljs-comment{color:#6a9955}[data-theme=light] .hljs-number{color:#098658}[data-theme=light] .hljs-title{color:#795e26}[data-theme=light] .hljs-type,[data-theme=light] .hljs-built_in{color:#267f99}[data-theme=light] .hljs-literal{color:#00f}[data-theme=light] .hljs-attr{color:#e50000}[data-theme=light] .hljs-variable{color:#001080}[data-theme=light] .hljs-name,[data-theme=light] .hljs-tag{color:maroon}[data-theme=light] .hljs-attribute{color:red}[data-theme=light] .hljs-symbol{color:#098658}[data-theme=light] .hljs-meta{color:#6a9955}[data-theme=light] .hljs-selector-tag{color:maroon}[data-theme=light] .hljs-selector-class,[data-theme=light] .hljs-selector-id{color:#267f99}.ccvSideDrawer .ant-drawer-header{height:40px;min-height:40px;padding-top:0;padding-bottom:0}
|
|
1
|
+
:root,[data-theme=dark]{--font-mono: "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace;--font-ui: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--bg-base: #0a0a0a;--bg-base-pure: #000;--bg-base-alt: #0d0d0d;--bg-container: #111;--bg-elevated: #1e1e1e;--bg-surface: #2a2a2a;--bg-code: #14141F;--bg-code-dark: #0d1117;--bg-code-hover: #0e0e17;--bg-code-system: #060f2a;--border-primary: #2a2a2a;--border-secondary: #303030;--border-hover: #3a3a3a;--border-light: #444;--border-code: #2a2a3e;--border-code-system: #0b2a5c;--text-primary: #e5e5e5;--text-secondary: #ccc;--text-tertiary: #888;--text-muted: #666;--text-disabled: #555;--text-disabled-faint: rgba(255, 255, 255, .45);--text-white: #fff;--text-gray: #6b7280;--text-light: #aaa;--color-primary: #1668dc;--color-primary-light: #3b82f6;--color-primary-lighter: #60a5fa;--color-primary-pale: #4a9eff;--color-primary-dark: #165bbe;--color-primary-dark-bg: #1e3a5f;--color-primary-bg-light: rgba(22, 104, 220, .15);--color-primary-bg-lighter: rgba(22, 104, 220, .2);--color-primary-bg-medium: rgba(22, 104, 220, .35);--color-primary-bg-faint: rgba(22, 104, 220, .1);--color-primary-shadow: rgba(22, 104, 220, .6);--color-success: #22c55e;--color-success-light: #4ade80;--color-success-dark: #2ea043;--color-success-bg-light: rgba(34, 197, 94, .15);--color-success-bg-medium: rgba(34, 197, 94, .3);--color-error: #ef4444;--color-error-rgb: 239, 68, 68;--color-error-light: #f87171;--color-error-muted: #a33;--color-error-dark-bg: #220000;--color-error-bg-light: rgba(239, 68, 68, .15);--color-error-bg-faint: rgba(239, 68, 68, .1);--color-error-bg-medium: rgba(239, 68, 68, .3);--color-warning: #f59e0b;--color-warning-light: #fbbf24;--color-warning-dark-bg: #2a2000;--color-warning-dark-border: #5c4d00;--color-warning-bg-light: rgba(245, 158, 11, .15);--color-warning-bg-medium: rgba(245, 158, 11, .3);--color-selection-bg: #1a2332;--color-selection-alt: #264f78;--color-green-bg: #1a3a1a;--color-green-dark-bg: #162312;--color-diff-add: #73c991;--color-diff-delete: #ef4444;--color-diff-add-bg: rgba(115, 201, 145, .15);--color-diff-delete-bg: rgba(239, 68, 68, .11);--color-tree-selected: #532f00;--color-accent-yellow: #e2c08d;--color-info-light: #7dd3fc;--color-code-purple: #a78bfa;--color-code-orange: #d97757;--color-chart-series-2: #cf6c48;--code-keyword: #f87171;--code-string: #7dd3fc;--code-comment: #888;--code-number: #7dd3fc;--code-text: #e5e5e5;--code-inline-color: #aeafff;--code-inline-bg: #14141F;--code-error: #e06c75;--color-purple-bg: rgba(139, 92, 246, .18);--color-purple-border: rgba(139, 92, 246, .3);--color-primary-outline: rgba(22, 104, 220, .75);--color-primary-bg-extra-faint: rgba(74, 159, 255, .05);--color-primary-pale-shadow: rgba(74, 159, 255, .5);--color-error-border: rgba(239, 68, 68, .25);--color-error-border-light: rgba(239, 68, 68, .2);--color-warning-bg-faint: rgba(234, 179, 8, .1);--color-warning-border-light: rgba(234, 179, 8, .2);--color-success-bg-faint: rgba(34, 197, 94, .11);--color-diff-delete-text: #fca5a5;--color-green-border: #2a5a3a;--color-green-dark-border: #274916;--color-red-dark-bg: #8b1a1a;--color-red-dark-border: #2a1a1a;--color-thinking-bg: #111108;--color-thinking-border: #2a2a1e;--color-code-orange-border: rgba(217, 119, 87, .27);--color-code-orange-bg: rgba(217, 119, 87, .07);--bg-container-alt: #161616;--bg-model-avatar: #000;--bg-sub-avatar: #3a3a3a;--avatar-bg-0: #5b6abf;--avatar-bg-1: #2a9d8f;--avatar-bg-2: #6366f1;--avatar-bg-3: #d97706;--avatar-bg-4: #3b82f6;--avatar-bg-5: #8b5cf6;--avatar-bg-6: #0e7490;--avatar-bg-7: #ea580c;--avatar-bg-8: #059669;--avatar-bg-9: #e11d48;--avatar-bg-10: #0284c7;--avatar-bg-11: #dc2626;--avatar-bg-12: #65a30d;--avatar-bg-13: #ca8a04;--avatar-bg-14: #9333ea;--avatar-bg-15: #db2777;--avatar-bg-16: #6b7280;--avatar-bg-17: #1d4ed8;--avatar-bg-18: #b45309;--avatar-bg-19: #047857;--model-logo-mono: #fff;--bg-input-bar: rgba(0, 0, 0, .5);--bg-sticky-btn: rgba(0, 0, 0, .5);--chat-boxer-gradient-dir: to top;--chat-boxer-bg-from: var(--bg-surface);--chat-boxer-bg-to: var(--border-secondary);--chat-boxer-hover-from: var(--border-secondary);--chat-boxer-hover-to: var(--border-hover);--shadow-approval-heavy: rgba(0, 0, 0, .6);--shadow-approval-glow: rgba(245, 158, 11, .15);--color-approval-border: #f59e0b;--color-approval-label: #fbbf24;--color-gray-bg-light: rgba(107, 114, 128, .15);--color-gray-bg-medium: rgba(107, 114, 128, .3);--overlay-light-faint: rgba(255, 255, 255, .04);--overlay-light-medium: rgba(255, 255, 255, .1);--overlay-light-strong: rgba(255, 255, 255, .2);--overlay-light-half: rgba(255, 255, 255, .5);--overlay-light-bright: rgba(255, 255, 255, .7);--overlay-dark: rgba(0, 0, 0, .75);--overlay-dark-medium: rgba(0, 0, 0, .6);--overlay-dark-light: rgba(0, 0, 0, .5);--overlay-dark-strong: rgba(0, 0, 0, .88)}[data-theme=light]{--bubble-user-bg-light: #222;--bubble-user-hover-border-light: #444;--bubble-user-highlight-shadow-light: 0 0 12px rgba(255, 255, 255, .5);--bubble-assistant-shadow-light: 0 3px 8px rgba(0, 0, 0, .08);--bg-base: #FAFAFA;--bg-base-pure: #FFFFFF;--bg-base-alt: #F5F5F5;--bg-container: #FFFFFF;--bg-elevated: #F9F9F9;--bg-surface: #F0F0F0;--bg-code: #F5F5F5;--bg-code-dark: #F5F5F5;--bg-code-hover: #EAEAEA;--bg-code-system: #EFF1F3;--border-primary: #E0E0E0;--border-secondary: #EBEBEB;--border-hover: #C0C0C0;--border-light: #D4D4D4;--border-code: #D4D4D4;--border-code-system: #C0D0E0;--text-primary: #1a1a1a;--text-secondary: #333;--text-tertiary: #666;--text-muted: #888;--text-disabled: #AAA;--text-disabled-faint: rgba(0, 0, 0, .35);--text-white: #1a1a1a;--text-gray: #6b7280;--text-light: #555;--color-primary: #0969DA;--color-primary-light: #0969DA;--color-primary-lighter: #0969DA;--color-primary-pale: #2A7DE1;--color-primary-dark: #0550AE;--color-primary-dark-bg: #DDF4FF;--color-primary-bg-light: rgba(9, 105, 218, .1);--color-primary-bg-lighter: rgba(9, 105, 218, .12);--color-primary-bg-medium: rgba(9, 105, 218, .2);--color-primary-bg-faint: rgba(9, 105, 218, .06);--color-primary-shadow: rgba(9, 105, 218, .3);--color-success: #1A7F37;--color-success-light: #2DA44E;--color-success-dark: #116329;--color-success-bg-light: rgba(26, 127, 55, .08);--color-success-bg-medium: rgba(26, 127, 55, .15);--color-error: #CF222E;--color-error-rgb: 207, 34, 46;--color-error-light: #DA3633;--color-error-muted: #82071E;--color-error-dark-bg: #FFEBE9;--color-error-bg-light: rgba(207, 34, 46, .08);--color-error-bg-faint: rgba(207, 34, 46, .06);--color-error-bg-medium: rgba(207, 34, 46, .15);--color-warning: #9A6700;--color-warning-light: #BF8700;--color-warning-dark-bg: #FFF8E1;--color-warning-dark-border: #D4A72C;--color-warning-bg-light: rgba(154, 103, 0, .08);--color-warning-bg-medium: rgba(154, 103, 0, .15);--color-selection-bg: #B4D7FF;--color-selection-alt: #ADD6FF;--color-green-bg: #DAFBE1;--color-green-dark-bg: #DAFBE1;--color-diff-add: #116329;--color-diff-delete: #82071E;--color-diff-add-bg: #DAFBE1;--color-diff-delete-bg: #FFEBE9;--color-tree-selected: #FFF3D5;--color-accent-yellow: #CB7C5E;--color-info-light: #0969DA;--color-code-purple: #8250DF;--color-code-orange: #953800;--color-chart-series-2: #953800;--code-keyword: #0000FF;--code-string: #A31515;--code-comment: #6A9955;--code-number: #098658;--code-text: #383838;--code-inline-color: #0969DA;--code-inline-bg: #EFF1F3;--code-error: #CF222E;--color-purple-bg: rgba(130, 80, 223, .1);--color-purple-border: rgba(130, 80, 223, .2);--color-primary-outline: rgba(9, 105, 218, .5);--color-primary-bg-extra-faint: rgba(9, 105, 218, .04);--color-primary-pale-shadow: rgba(9, 105, 218, .3);--color-error-border: rgba(207, 34, 46, .2);--color-error-border-light: rgba(207, 34, 46, .15);--color-warning-bg-faint: rgba(154, 103, 0, .06);--color-warning-border-light: rgba(154, 103, 0, .15);--color-success-bg-faint: rgba(26, 127, 55, .08);--color-diff-delete-text: #DA3633;--color-green-border: #2DA44E;--color-green-dark-border: #1A7F37;--color-red-dark-bg: #FFEBE9;--color-red-dark-border: #FFCECB;--color-thinking-bg: #FAFAF5;--color-thinking-border: #E8E8D0;--color-code-orange-border: rgba(149, 56, 0, .2);--color-code-orange-bg: rgba(149, 56, 0, .06);--bg-container-alt: #F5F5F5;--bg-model-avatar: transparent;--bg-sub-avatar: #E5E5E5;--avatar-bg-0: #ced0db;--avatar-bg-1: #9abcb8;--avatar-bg-2: #edeef5;--avatar-bg-3: #cfb99f;--avatar-bg-4: #d6deea;--avatar-bg-5: #efecf5;--avatar-bg-6: #78a8b5;--avatar-bg-7: #d6bcaf;--avatar-bg-8: #72b8a2;--avatar-bg-9: #d6b7be;--avatar-bg-10: #8fb5c8;--avatar-bg-11: #d6bbbb;--avatar-bg-12: #a4bc83;--avatar-bg-13: #cab893;--avatar-bg-14: #d6cae2;--avatar-bg-15: #d6bbc7;--avatar-bg-16: #bbbcbf;--avatar-bg-17: #b2bad2;--avatar-bg-18: #c2a28a;--avatar-bg-19: #5ead97;--model-logo-mono: #000;--bg-input-bar: #ffffff;--bg-sticky-btn: rgba(255, 255, 255, .85);--chat-boxer-gradient-dir: to bottom;--chat-boxer-bg-from: #F7F7F7;--chat-boxer-bg-to: #F0F0F0;--chat-boxer-hover-from: #EEEEEE;--chat-boxer-hover-to: #E8E8E8;--shadow-approval-heavy: rgba(0, 0, 0, .1);--shadow-approval-glow: rgba(245, 158, 11, .08);--color-approval-border: #1f1f1f;--color-approval-label: #1f1f1f;--color-gray-bg-light: rgba(107, 114, 128, .1);--color-gray-bg-medium: rgba(107, 114, 128, .2);--overlay-light-faint: rgba(0, 0, 0, .03);--overlay-light-medium: rgba(0, 0, 0, .06);--overlay-light-strong: rgba(0, 0, 0, .1);--overlay-light-half: rgba(0, 0, 0, .3);--overlay-light-bright: rgba(0, 0, 0, .5);--overlay-dark: rgba(0, 0, 0, .5);--overlay-dark-medium: rgba(0, 0, 0, .4);--overlay-dark-light: rgba(0, 0, 0, .3);--overlay-dark-strong: rgba(0, 0, 0, .6)}body{margin:0;background-color:var(--bg-base-alt);overflow-x:hidden;-webkit-tap-highlight-color:transparent}body.ccv-ws-popup{background-color:transparent}html,body{overscroll-behavior:none}html,body,#root{height:100%}::selection{background-color:var(--color-selection-alt);color:inherit}*{scrollbar-width:thin;scrollbar-color:var(--border-hover) var(--bg-base-alt)}@media(pointer:coarse){*{scrollbar-width:auto;scrollbar-color:auto}}@media(pointer:fine){*::-webkit-scrollbar{width:6px;height:6px}*::-webkit-scrollbar-track{background:var(--bg-base-alt)}*::-webkit-scrollbar-thumb{background:var(--border-hover);border-radius:3px}*::-webkit-scrollbar-thumb:hover{background:var(--text-disabled)}}.code-highlight{color:var(--code-text)}.hl-keyword{color:var(--code-keyword)}.hl-string{color:var(--code-string)}.hl-comment{color:var(--code-comment);font-style:italic}.hl-number{color:var(--code-number)}.hl-linenum{color:var(--text-disabled);-webkit-user-select:none;user-select:none}.chat-md pre{background:var(--bg-code-dark);border:1px solid var(--border-primary);border-radius:6px;padding:12px;overflow-x:auto;font-family:var(--font-mono);font-size:13px;line-height:1.5}.chat-md code{background:var(--code-inline-bg);padding:2px 6px;border-radius:4px;font-family:var(--font-mono);font-size:13px;color:var(--code-inline-color)}.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:var(--text-white)}.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 var(--color-primary-light);margin:8px 0;padding:4px 12px;color:var(--text-tertiary)}.chat-md table{border-collapse:collapse;margin:8px 0;font-size:13px}.chat-md th,.chat-md td{border:1px solid var(--text-gray);padding:6px 10px}.chat-md th{background:var(--bg-elevated);color:var(--text-white)}.chat-md a{color:var(--color-primary-lighter)}.chat-md img{cursor:pointer;max-width:100%;height:auto;border-radius:6px}.chat-md hr{border:none;border-top:1px solid var(--border-primary);margin:12px 0}.chat-md .chat-boxer hr,.chat-boxer .chat-md hr{border-top-color:var(--border-light);margin:8px 0}.chat-md strong,.chat-md em{color:var(--text-primary)}.mermaid-diagram{display:flex;justify-content:center;margin:12px 0;padding:16px;background:var(--bg-code-dark);border:1px solid var(--border-primary);border-radius:6px;overflow-x:auto}.mermaid-diagram svg{max-width:100%;height:auto}*:focus{outline:none!important;box-shadow:none!important}*:focus-visible{outline:none!important;box-shadow:none!important}.chat-boxer{background:linear-gradient(var(--chat-boxer-gradient-dir),var(--chat-boxer-bg-from),var(--chat-boxer-bg-to));color:var(--text-white);border-radius:6px;padding:2px 10px;margin-bottom:6px;border:1px solid var(--text-muted);box-sizing:border-box}.chat-boxer:hover{background:linear-gradient(var(--chat-boxer-gradient-dir),var(--chat-boxer-hover-from),var(--chat-boxer-hover-to))}.chat-boxer .chat-md tbody{background:var(--bg-base-pure)}.ant-dropdown .logo-dropdown-menu.logo-dropdown-menu{border:1px solid var(--border-hover);border-radius:4px;user-select:none;-webkit-user-select:none}.ant-dropdown .logo-dropdown-menu.logo-dropdown-menu .ant-dropdown-menu-item,.ant-dropdown .logo-dropdown-menu.logo-dropdown-menu .ant-dropdown-menu-submenu-title{font-size:12px;padding:8px 12px}.ant-dropdown-menu-submenu-popup .ant-dropdown-menu{border:1px solid var(--border-hover);border-radius:4px;user-select:none;-webkit-user-select:none}.ant-dropdown .logo-dropdown-menu.logo-dropdown-menu [data-pin-trigger]{opacity:0;color:var(--text-tertiary);padding:7px 8px;margin:-7px -6px -7px 0;border-radius:4px;cursor:pointer;transition:opacity .15s,color .15s,background-color .15s}.ant-dropdown .logo-dropdown-menu.logo-dropdown-menu .ant-dropdown-menu-item:hover [data-pin-trigger]{opacity:.55}.ant-dropdown .logo-dropdown-menu.logo-dropdown-menu [data-pin-trigger]:hover{opacity:.85;color:var(--text-secondary);background-color:var(--border-hover)}.ant-dropdown .logo-dropdown-menu.logo-dropdown-menu [data-pin-trigger][data-pinned=true]{opacity:1;color:var(--color-primary, var(--text-secondary))}.ant-tooltip .ant-tooltip-inner{background-color:var(--bg-base-alt);color:var(--text-primary)}.ant-tooltip .ant-tooltip-arrow:before,.ant-tooltip .ant-tooltip-arrow:after{background:var(--bg-base-alt)}.ant-popover .ant-popover-arrow:before,.ant-popover .ant-popover-arrow:after{background:var(--border-secondary)}[data-theme=light] .ant-popover .ant-popover-arrow:before,[data-theme=light] .ant-popover .ant-popover-arrow:after{background:var(--bg-base-pure)}.ant-typography{font-size:12px}.ant-modal-confirm .ant-modal-content{background-color:var(--bg-elevated);border:1px solid var(--border-primary)}.ant-modal-confirm .ant-modal-confirm-title{color:var(--text-primary)}.ant-modal-confirm .ant-modal-confirm-content{color:var(--text-light)}.ant-modal-confirm .ant-btn-default{background-color:transparent;border-color:var(--border-light);color:var(--text-secondary)}.ant-modal-confirm .ant-btn-default.ant-btn-default:hover,.ant-modal-confirm .ant-btn-default.ant-btn-default:focus{background-color:var(--bg-surface);border-color:var(--text-muted);color:var(--text-white)}.ant-modal-confirm .ant-btn-primary,.ant-modal-confirm .ant-btn-primary:hover{background-color:var(--color-primary);border-color:var(--color-primary)}.ant-tabs .ant-tabs-nav:before{border-bottom-color:var(--border-primary)}.ant-segmented .ant-segmented-item-selected,.ant-segmented .ant-segmented-thumb{background-color:var(--color-primary)}.ant-segmented .ant-segmented-item-selected,.ant-segmented .ant-segmented-item-selected:hover,.ant-segmented .ant-segmented-item-selected .ant-segmented-item-label,.ant-segmented .ant-segmented-item-selected:hover .ant-segmented-item-label,.ant-segmented .ant-segmented-item-selected .ant-segmented-item-icon{color:#fff}[data-theme=light] .hljs{background:var(--bg-code);color:#383838}[data-theme=light] .hljs-keyword{color:#00f}[data-theme=light] .hljs-string{color:#a31515}[data-theme=light] .hljs-comment{color:#6a9955}[data-theme=light] .hljs-number{color:#098658}[data-theme=light] .hljs-title{color:#795e26}[data-theme=light] .hljs-type,[data-theme=light] .hljs-built_in{color:#267f99}[data-theme=light] .hljs-literal{color:#00f}[data-theme=light] .hljs-attr{color:#e50000}[data-theme=light] .hljs-variable{color:#001080}[data-theme=light] .hljs-name,[data-theme=light] .hljs-tag{color:maroon}[data-theme=light] .hljs-attribute{color:red}[data-theme=light] .hljs-symbol{color:#098658}[data-theme=light] .hljs-meta{color:#6a9955}[data-theme=light] .hljs-selector-tag{color:maroon}[data-theme=light] .hljs-selector-class,[data-theme=light] .hljs-selector-id{color:#267f99}.ccvSideDrawer .ant-drawer-header{height:40px;min-height:40px;padding-top:0;padding-bottom:0}
|