edgeone 1.6.4-beta.1 → 1.6.5
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/edgeone-dist/cli.js +1 -1
- package/edgeone-dist/pages/dev/runner-worker.js +1 -1
- package/edgeone-dist/studio/ui/assets/agent-obs-Dvi4IpEy.js +4 -0
- package/edgeone-dist/studio/ui/assets/agent-obs-qDJCE0TQ.css +1 -0
- package/edgeone-dist/studio/ui/assets/{index-DN8YhmEp.js → index-DD3d108t.js} +1 -1
- package/edgeone-dist/studio/ui/index.html +3 -3
- package/package.json +1 -1
- package/edgeone-dist/pages/templates/agent-python/__pycache__/memory.cpython-313.pyc +0 -0
- package/edgeone-dist/studio/ui/assets/agent-obs-BpTIot8x.js +0 -4
- package/edgeone-dist/studio/ui/assets/agent-obs-CEOY4DZz.css +0 -1
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{r as nt}from"./react-hnpCyKql.js";import{r as rt,a as lt,l as ut,b as st}from"./tea-Slf_ajmf.js";import{r as ot}from"./moment-BYRO94Ou.js";import{c as it,j as ct}from"./highlight-ClXAL37H.js";var f=nt,k=lt,i=rt,$e=ut,Ke=st,dt=ot,mt=it,ft=ct;function de(e){return e&&e.__esModule?e:{default:e}}var a=de(f),q=de(dt),Ve=de(mt),gt=de(ft);function G(e){return String(e).padStart(2,"0")}function Te(e){const t=new Date(e);return`${G(t.getMonth()+1)}-${G(t.getDate())} ${G(t.getHours())}:${G(t.getMinutes())}:${G(t.getSeconds())}`}function Pe(e){const t=typeof e=="number"?e:Number(String(e).trim());return Number.isFinite(t)?t>=1e12?Te(t):t>=1e9?Te(t*1e3):String(e):String(e)}function ht({dataSource:e,color:t="#5B9DFF",...n}){const r=e.map(l=>Pe(l.Name)),u=[{data:e.map(l=>l.Data)}];return a.default.createElement(Ke.CoreLine,{...n,color:[t],grid:{show:!0,left:0,right:0,top:16,bottom:0},xAxis:{data:r,axisLine:{show:!1,lineStyle:{}},axisTick:{show:!1},axisLabel:{color:"#9CA3AF",margin:10},splitLine:{show:!1}},yAxis:{axisLine:{show:!1,lineStyle:{}},axisTick:{show:!1},axisLabel:{color:"#9CA3AF",formatter:l=>`${l} `},splitLine:{show:!0}},series:u})}function pt({dataSource:e,color:t,...n}){const r=Array.from(new Set(e.map(s=>Pe(s.Name)))),l=Array.from(new Set(e.map(s=>s.Type))).map(s=>({name:s,data:e.filter(o=>o.Type===s).map(o=>o.Data)}));return a.default.createElement(Ke.CompareLine,{...n,color:t,grid:{show:!0,left:0,right:0,top:16,bottom:0},xAxis:{data:r,axisLine:{show:!1,lineStyle:{}},axisTick:{show:!1},axisLabel:{color:"#9CA3AF",margin:10},splitLine:{show:!1}},yAxis:{axisLine:{show:!1,lineStyle:{}},axisTick:{show:!1},axisLabel:{color:"#9CA3AF",formatter:s=>`${s} `},splitLine:{show:!0}},series:l})}function je({children:e,loading:t}){return a.default.createElement("div",{className:"agent-obs-loading"},a.default.createElement("div",{className:"agent-obs-loading-content"},e),a.default.createElement("div",{className:`agent-obs-loading-mask${t?"":" agent-obs-loading-mask--hidden"}`},a.default.createElement(k.Icon,{type:"loading"})))}function Et(){return a.default.createElement("svg",{width:"550",height:"181",viewBox:"0 0 550 181",fill:"none",xmlns:"http://www.w3.org/2000/svg"},a.default.createElement("line",{y1:"90.5",x2:"550",y2:"90.5",stroke:"#F0F0F0"}),a.default.createElement("line",{y1:"180.5",x2:"550",y2:"180.5",stroke:"#F0F0F0"}),a.default.createElement("line",{y1:"0.5",x2:"550",y2:"0.5",stroke:"#F0F0F0"}))}function vt(){return a.default.createElement("div",{className:"agent-obs-empty"},a.default.createElement("div",{className:"agent-obs-empty-bg"},a.default.createElement(Et,null)),a.default.createElement("div",{className:"agent-obs-empty-text"},i.t("暂无数据")))}var Fe=260;function bt({title:e,unit:t,data:n,jumpTo:r,loading:u,isMultiLine:l,openInNewTab:s}){const o=!u&&(!n||n.length===0),c=a.default.createElement("div",{className:"agent-obs-card-header"},a.default.createElement("div",{className:"agent-obs-card-titlebox"},a.default.createElement("div",{className:"agent-obs-card-title"},e),a.default.createElement("div",{className:"agent-obs-card-unit"},t??" ")),r&&a.default.createElement("div",{className:"agent-obs-card-jump"},a.default.createElement($e.ChevronRightIcon,{size:24}))),m=r?a.default.createElement("a",{className:"agent-obs-card-link",href:r,target:s?"_blank":void 0,rel:s?"noopener noreferrer":void 0},c):c,d=()=>{if(!n||n.length===0)return a.default.createElement("div",{className:"agent-obs-card-empty",style:{height:Fe}},o?a.default.createElement(vt,null):null);const g=l?pt:ht;return a.default.createElement(g,{height:Fe,smooth:!0,size:2,dataSource:n})};return a.default.createElement(k.Card,{className:"agent-obs-card",bordered:!1},a.default.createElement(k.Card.Body,{className:"agent-obs-card-body"},m,a.default.createElement("div",{className:"agent-obs-card-chart"},a.default.createElement(je,{loading:u},d()))))}var qe={agent_call:"Agent 调用",model_call:"模型调用",model_error_rate:"模型调用错误率",model_avg_latency:"模型调用平均耗时",token_total:"Token 总消耗",avg_token_per_model:"平均 Token/模型调用",agent_call_chart:"Agent 调用",model_call_chart:"模型调用",model_error_rate_chart:"模型调用错误率",model_avg_latency_chart:"模型调用平均耗时",token_total_chart:"Token 总消耗",avg_token_per_model_chart:"平均 Token/模型调用"},Ae={agent_call:"次",model_call:"次",model_error_rate:"%",model_avg_latency:"s",agent_call_chart:"次",model_call_chart:"次",model_error_rate_chart:"%",model_avg_latency_chart:"s"};function ye(e){if(e)return i.t(e)}function ze(e,t){return ye(qe[e]||t)||e}function Ce(e,t){return e in qe?ye(Ae[e]):ye(Ae[e]||t)}function kt(e,t){if(e===0)return"flat";const n=e>0;return((t??"higherIsBetter")==="higherIsBetter"?n:!n)?"up":"down"}function Q(e){const t=typeof e=="number"?e:Number(e.trim());if(!Number.isFinite(t))return String(e);const n=t.toFixed(2).replace(/\.00$/,"").replace(/(\.\d)0$/,"$1");return n==="-0"?"0":n}var _t=new Set(["token_total","avg_token_per_model"]);function yt(e){const t=typeof e.Value=="number"?e.Value:Number(e.Value.trim());return Number.isFinite(t)&&t===0?{valueText:"-"}:!_t.has(e.Key)||!Number.isFinite(t)?{valueText:Q(e.Value),unit:Ce(e.Key,e.Unit)}:t>=1e8?{valueText:Q(t/1e8),unit:i.t("亿")}:t>=1e4?{valueText:Q(t/1e4),unit:i.t("万")}:{valueText:Q(e.Value),unit:Ce(e.Key,e.Unit)}}function Ct(){return[{Key:"agent_call",Label:i.t("Agent 调用"),Value:"-"},{Key:"model_call",Label:i.t("模型调用"),Value:"-"},{Key:"model_error_rate",Label:i.t("模型调用错误率"),Value:"-",Unit:"%"},{Key:"model_avg_latency",Label:i.t("模型调用平均耗时"),Value:"-",Unit:"s"},{Key:"token_total",Label:i.t("Token 总消耗"),Value:"-"},{Key:"avg_token_per_model",Label:i.t("平均 Token/模型调用"),Value:"-"}]}var wt=new Set(["model_error_rate","model_avg_latency"]);function Nt({item:e}){const t=typeof e.Yoy=="number"&&!wt.has(e.Key),{valueText:n,unit:r}=yt(e);return a.default.createElement("div",{className:"agent-obs-overview-cell"},a.default.createElement("div",{className:"agent-obs-overview-label"},ze(e.Key,e.Label)),a.default.createElement("div",{className:"agent-obs-overview-value-row"},a.default.createElement("span",{className:"agent-obs-overview-value"},n),r&&a.default.createElement("span",{className:"agent-obs-overview-unit"},r)),t&&a.default.createElement("div",{className:"agent-obs-overview-delta"},a.default.createElement("span",{className:"agent-obs-overview-delta-label"},i.t("日同比")),a.default.createElement("span",{className:`agent-obs-overview-delta-value agent-obs-overview-delta-value--${kt(e.Yoy,e.DeltaSemantic)}`},e.Yoy>0?"+":"",Q(e.Yoy),"%")))}function xt({items:e,title:t,loading:n}){const u=!!e&&e.length>0?e:Ct();if(u.length===0)return null;const l=!!n;return a.default.createElement(k.Card,{className:"agent-obs-overview",bordered:!1},a.default.createElement(k.Card.Body,null,a.default.createElement("div",{className:"agent-obs-overview-title"},t?i.t(t):i.t("用量概览")),a.default.createElement("div",{className:l?"agent-obs-overview-grid agent-obs-overview-grid--loading":"agent-obs-overview-grid"},u.map(s=>a.default.createElement(Nt,{key:s.Key,item:s})),l&&a.default.createElement("div",{className:"agent-obs-overview-loading-mask"},a.default.createElement(k.Icon,{type:"loading"})))))}function Ue(e){const[t,n]=f.useState(!1),r=f.useCallback(()=>{t||(n(!0),e().catch(()=>{}).then(()=>n(!1)))},[t,e]);return{refreshing:t,trigger:r}}var me=7;function Tt(){return[{value:"1hour",text:i.t("近1小时")},{value:"6hour",text:i.t("近6小时")},{value:"24hour",text:i.t("近24小时")},{value:"3day",text:i.t("近3天")},{value:"7day",text:i.t("近7天")}]}function Ft(){return[{value:"30min",text:i.t("近30分钟")},{value:"1hour",text:i.t("近1小时")},{value:"6hour",text:i.t("近6小时")},{value:"24hour",text:i.t("近24小时")},{value:"3day",text:i.t("近3天")},{value:"7day",text:i.t("近7天")}]}function At(e){const t=q.default();return{"1hour":[t.clone().subtract(1,"hour"),t.clone()],"6hour":[t.clone().subtract(6,"hours"),t.clone()],"24hour":[t.clone().subtract(24,"hours"),t.clone()],"3day":[t.clone().subtract(3,"days"),t.clone()],"7day":[t.clone().subtract(me,"days"),t.clone()]}[e]||null}function Mt(e){const t=q.default();return{"30min":[t.clone().subtract(30,"minutes"),t.clone()],"1hour":[t.clone().subtract(1,"hour"),t.clone()],"6hour":[t.clone().subtract(6,"hours"),t.clone()],"24hour":[t.clone().subtract(24,"hours"),t.clone()],"3day":[t.clone().subtract(3,"days"),t.clone()],"7day":[t.clone().subtract(me,"days"),t.clone()]}[e]||null}function Ye(e){const t=q.default(),n=t.clone().subtract(me,"days").startOf("day");return!(e.isAfter(t,"day")||e.isBefore(n,"day"))}function We(e,t){const n=q.default(),r=n.clone().subtract(me,"days"),u=n.format("YYYY-MM-DD"),l=r.format("YYYY-MM-DD"),s=e==null?void 0:e[t==="start"?0:1],o=s?s.format("YYYY-MM-DD"):u;return{disabledHours:()=>{const c=[];if(o===u)for(let m=n.hour()+1;m<=23;m++)c.push(m);if(o===l)for(let m=0;m<r.hour();m++)c.push(m);return c},disabledMinutes:c=>{const m=[];if(o===u&&c===n.hour())for(let d=n.minute()+1;d<=59;d++)m.push(d);if(o===l&&c===r.hour())for(let d=0;d<r.minute();d++)m.push(d);return m},disabledSeconds:(c,m)=>{const d=[];if(o===u&&c===n.hour()&&m===n.minute())for(let g=n.second()+1;g<=59;g++)d.push(g);if(o===l&&c===r.hour()&&m===r.minute())for(let g=0;g<r.second();g++)d.push(g);return d}}}var{RangePicker:Lt}=k.DatePicker,St=()=>e=>{const t=q.default();return{"15min":[t.clone().subtract(15,"minutes"),t.clone()],"1hour":[t.clone().subtract(1,"hour"),t.clone()],"6hour":[t.clone().subtract(6,"hours"),t.clone()],"12hour":[t.clone().subtract(12,"hours"),t.clone()],"24hour":[t.clone().subtract(24,"hours"),t.clone()]}[e]||null};function Rt(){return[{value:"15min",text:i.t("近15分钟")},{value:"1hour",text:i.t("近1小时")},{value:"6hour",text:i.t("近6小时")},{value:"12hour",text:i.t("近12小时")},{value:"24hour",text:i.t("近24小时")}]}var It=({onChange:e,defaultValue:t=null,defaultSegmentValue:n="15min",quickOptions:r=Rt(),rangeGenerator:u=St(),className:l,style:s,selectStyle:o,selectClassName:c,rangePickerStyle:m,rangePickerClassName:d,disabledDate:g,disabledTime:h,showTime:v={format:"HH:mm:ss",minuteStep:1,secondStep:1},placeholder:y=[i.t("开始时间"),i.t("结束时间")],selectPlaceholder:C=i.t("请选择时间范围")})=>{const[w,x]=f.useState(n),[A,L]=f.useState(()=>!t&&n?u(n):t);function D(F){const[S,V]=F;return r.reduce((W,P)=>{const p=u(P.value);if(p){const N=V.diff(S,"minutes"),b=p[1].diff(p[0],"minutes");if(Math.abs(N-b)<=1&&V.diff(q.default(),"minutes")<=1)return P.value}return W},null)}const M=F=>{x(F);const S=u(F);S&&(L(S),e==null||e(S,F))},K=F=>{L(F);const S=D(F);x(S),e==null||e(F,S)};return a.default.createElement("div",{className:l,style:s},a.default.createElement(k.Select,{appearance:"button",options:r,value:w||void 0,onChange:M,placeholder:C,className:c,style:o,listWidth:130}),a.default.createElement(Lt,{showTime:v,value:A||void 0,onChange:K,disabledDate:g,disabledTime:h,placeholder:y,className:d,style:m}))},Ge=It;function He(){return[{value:"all",text:i.t("全部环境")},{value:"production",text:i.t("生产环境")},{value:"preview",text:i.t("预览环境")}]}function Dt({selectedEnvironment:e,selectedTimeRange:t,customRange:n,onEnvironmentChange:r,onTimeChange:u,refreshFunction:l}){const s=f.useMemo(He,[]),o=f.useMemo(Ft,[]),{refreshing:c,trigger:m}=Ue(l),d=`${t||"custom"}-${n?n[0].valueOf():"null"}`;return a.default.createElement(k.Card,{className:"agent-obs-filter"},a.default.createElement(k.Card.Body,{className:"agent-obs-filter-body"},a.default.createElement(k.Space,{wrap:!0},a.default.createElement(k.Select,{appearance:"button",options:s,value:e,onChange:g=>r(g),listWidth:130}),a.default.createElement(Ge,{key:d,defaultSegmentValue:t,defaultValue:n,quickOptions:o,rangeGenerator:Mt,disabledDate:Ye,disabledTime:We,onChange:u,className:"quick-date-picker",selectClassName:"time-range-select",selectStyle:{marginRight:"-1px"},rangePickerClassName:"time-range-picker",showTime:{format:"HH:mm:ss",minuteStep:1,secondStep:1},placeholder:[i.t("开始时间"),i.t("结束时间")],selectPlaceholder:i.t("请选择时间范围")}),a.default.createElement(k.Button,{icon:"refresh",className:`agent-obs-filter-refresh${c?" agent-obs-filter-refresh--rotating":""}`,onClick:m}),a.default.createElement(k.Bubble,{content:i.t("数据延迟 < 10min")},a.default.createElement("span",{className:"agent-obs-filter-tip"},a.default.createElement($e.ErrorCircleIcon,null))))))}function Ot(e,t){const n=f.useRef(e);f.useEffect(()=>{const r=n.current;Object.keys(e).some(l=>r[l]!==e[l])&&(n.current=e,t==null||t(e))},[e])}var Bt={environment:"all",timeRange:"24hour",customRange:null};function $t({overview:e,charts:t,loading:n,defaultFilter:r,onFilterChange:u,onRefresh:l,columns:s=2}){const[o,c]=f.useState({...Bt,...r});Ot(o,u);const m=g=>c(h=>({...h,...g})),d=async()=>{l?await l(o):u==null||u(o)};return a.default.createElement("div",{className:"agent-obs"},a.default.createElement(Dt,{selectedEnvironment:o.environment,selectedTimeRange:o.timeRange,customRange:o.customRange,onEnvironmentChange:g=>m({environment:g}),onTimeChange:(g,h)=>{m(h?{timeRange:h,customRange:null}:{customRange:g,timeRange:null})},refreshFunction:d}),a.default.createElement(xt,{items:e,loading:n}),a.default.createElement(Kt,{charts:t??[],columns:s,loading:n}))}function Kt({charts:e,columns:t,loading:n}){const r=Math.max(1,Math.floor(24/t)),u=e.length>0?e:Vt(),l=Pt(u,t);return a.default.createElement(a.default.Fragment,null,l.map((s,o)=>a.default.createElement(k.Row,{key:o},s.map((c,m)=>a.default.createElement(k.Col,{key:c.Key,span:r,style:m%2===0?{paddingLeft:0}:{paddingRight:0}},a.default.createElement(bt,{title:ze(c.Key,c.Title),unit:Ce(c.Key,c.Unit),data:c.Series,isMultiLine:c.IsMultiLine,jumpTo:c.jumpTo,openInNewTab:c.openInNewTab,loading:n}))))))}function Vt(){return[{Key:"agent_call_chart",Title:i.t("Agent 调用"),Unit:i.t("次"),Series:[]},{Key:"model_call_chart",Title:i.t("模型调用"),Unit:i.t("次"),Series:[]},{Key:"model_error_rate_chart",Title:i.t("模型调用错误率"),Unit:"%",Series:[]},{Key:"model_avg_latency_chart",Title:i.t("模型调用平均耗时"),Unit:"s",Series:[]},{Key:"token_total_chart",Title:i.t("Token 总消耗"),Series:[]},{Key:"avg_token_per_model_chart",Title:i.t("平均 Token/模型调用"),Series:[]}]}function Pt(e,t){if(t<=0)return[e];const n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function jt({environment:e,timeRange:t,customRange:n,keyword:r,onEnvironmentChange:u,onTimeChange:l,onKeywordChange:s,onSearchSubmit:o,refreshFunction:c}){const m=f.useMemo(He,[]),d=f.useMemo(Tt,[]),{refreshing:g,trigger:h}=Ue(c),v=`${t||"custom"}-${n?n[0].valueOf():"null"}`;return a.default.createElement(k.Card,{className:"filter-card agent-obs-traces-filter"},a.default.createElement(k.Card.Body,null,a.default.createElement(k.Space,{wrap:!0},a.default.createElement(k.Select,{appearance:"button",options:m,value:e,onChange:y=>u(y),className:"log-filter-select",listWidth:130}),a.default.createElement(Ge,{key:v,defaultSegmentValue:t,defaultValue:n,quickOptions:d,rangeGenerator:At,disabledDate:Ye,disabledTime:We,onChange:l,className:"quick-date-picker",selectClassName:"time-range-select",selectStyle:{marginRight:"-1px"},rangePickerClassName:"time-range-picker",showTime:{format:"HH:mm:ss",minuteStep:1,secondStep:1},placeholder:[i.t("开始时间"),i.t("结束时间")],selectPlaceholder:i.t("请选择时间范围")}),a.default.createElement(k.SearchBox,{className:"traces-filter-search",placeholder:i.t("可根据 run-id 和 conversation-id 搜索"),value:r,onChange:y=>s(y),onSearch:y=>o(y||""),onPressEnter:()=>o(r),onClear:()=>{s(""),o("")}}),a.default.createElement(k.Button,{type:"primary",onClick:h,loading:g},i.t("刷新")))))}var{filterable:qt,stylize:zt}=k.Table.addons,ie="-";function Ut(e){return{all:"",production:i.t("生产"),preview:i.t("预览"),dev:i.t("开发"),development:i.t("开发")}[e]||e}function we(e){return{success:i.t("成功"),failed:i.t("失败")}[e]}function Yt(){return[{value:"success",text:we("success")},{value:"failed",text:we("failed")}]}var Wt={environment:"all",timeRange:"1hour",customRange:null,statuses:[],keyword:"",pageIndex:1,pageSize:10};function Gt(e){return e.HasError?"failed":"success"}function Ht(e){return e??ie}function Xt(e){return e?q.default(e).format("YYYY-MM-DD HH:mm:ss.SSS"):ie}function Qt({rows:e,pagination:t,loading:n,onRowClick:r,onQueryChange:u,defaultQuery:l}){const s=f.useMemo(Yt,[]),[o,c]=f.useState({...Wt,...l}),m=(h,v=!0)=>{c(y=>{const C={...y,...h,...v?{pageIndex:1}:{}};return u==null||u(C),C})},d=f.useMemo(()=>[{key:"traceId",header:i.t("TraceId (run-id)"),width:260,render:h=>a.default.createElement("a",{className:"agent-obs-traces-trace-id",onClick:v=>{v.preventDefault(),r==null||r(h)},href:"#"},h.TraceId)},{key:"env",header:i.t("环境"),width:80,render:h=>{const v=h.Env||"all";if(v==="all")return ie;const y=String(v).replace(/[^a-zA-Z0-9_-]/g,"-");return a.default.createElement(k.Badge,{className:`agent-obs-traces-env agent-obs-traces-env--${y}`},Ut(v))}},{key:"status",header:i.t("状态"),width:100,render:h=>{const v=Gt(h);return a.default.createElement("span",{className:`agent-obs-traces-status agent-obs-traces-status--${v}`},we(v))}},{key:"totalTokens",header:i.t("Total Tokens"),width:140,render:h=>Ht(h.TotalToken)},{key:"durationMs",header:i.t("响应时间(秒)"),width:160,render:h=>h.DurationMs!=null?(Math.ceil(h.DurationMs/100)/10).toFixed(1):ie},{key:"startTime",header:i.t("开始时间"),width:200,render:h=>Xt(h.StartTimeMs)}],[r]),g=()=>{if(n&&e.length===0)return a.default.createElement(k.StatusTip,{status:"loading"});if(!n&&e.length===0)return a.default.createElement(k.StatusTip,{status:"empty"})};return a.default.createElement("div",{className:"agent-obs-traces"},a.default.createElement(k.Card,null,a.default.createElement("div",{className:"agent-obs-traces-wrapper"},a.default.createElement(je,{loading:n&&e.length>0},a.default.createElement(k.Table,{className:"agent-obs-traces-table",records:e,recordKey:h=>h.TraceId,columns:d,bordered:!1,topTip:g(),bottomTip:e.length>0?a.default.createElement(k.Pagination,{recordCount:t.total,pageSizeOptions:[10,20,30,50,100],pageSize:t.pageSize,pageIndex:t.pageIndex,stateTextVisible:!0,pageSizeVisible:!0,pageIndexVisible:!0,jumpVisible:!0,endJumpVisible:!0,disabled:n,onPagingChange:({pageIndex:h,pageSize:v})=>{m({pageIndex:h,pageSize:v},!1)}}):void 0,addons:[qt({type:"multiple",column:"status",value:o.statuses,onChange:h=>m({statuses:h}),all:{value:"__all__",text:i.t("全部")},options:s}),zt({bodyClassName:"agent-obs-traces-table-body",bodyStyle:{borderBottom:"none"}})]})))))}var Zt={environment:"all",timeRange:"24hour",customRange:null,keyword:""};function Jt({rows:e,pagination:t,loading:n,onRowClick:r,defaultFilter:u,onQueryChange:l,onRefresh:s}){const[o,c]=f.useState({...Zt,...u}),[m,d]=f.useState(o.keyword),g=f.useRef({environment:o.environment,timeRange:o.timeRange,customRange:o.customRange,statuses:[],keyword:o.keyword,pageIndex:1,pageSize:t.pageSize}),h=()=>{l==null||l({...g.current,environment:o.environment,timeRange:o.timeRange,customRange:o.customRange,keyword:o.keyword})},v=f.useRef(o);f.useEffect(()=>{const w=v.current;Object.keys(o).some(A=>w[A]!==o[A])&&(v.current=o,g.current={...g.current,pageIndex:1},h())},[o]);const y=w=>c(x=>({...x,...w})),C=async()=>{const w=(m||"").trim();w!==m&&d(w);const x={...g.current,environment:o.environment,timeRange:o.timeRange,customRange:o.customRange,keyword:w,pageIndex:w!==o.keyword?1:g.current.pageIndex};if(w!==o.keyword){const A={...o,keyword:w};v.current=A,g.current={...g.current,pageIndex:1},c(A)}s?await s(x):l==null||l(x)};return a.default.createElement("div",{className:"agent-obs"},a.default.createElement(jt,{environment:o.environment,timeRange:o.timeRange,customRange:o.customRange,keyword:m,onEnvironmentChange:w=>y({environment:w}),onTimeChange:(w,x)=>{y(x?{timeRange:x,customRange:null}:{customRange:w,timeRange:null})},onKeywordChange:d,onSearchSubmit:w=>{const x=(w||"").trim();d(x),x!==o.keyword&&y({keyword:x})},refreshFunction:C}),a.default.createElement(Qt,{rows:e,pagination:t,loading:n,onRowClick:r,defaultQuery:g.current,onQueryChange:w=>{g.current=w,h()}}))}var ea=["AGENT","CHAIN","LLM","TOOL","RETRIEVER","RERANKER","EMBEDDING","EVALUATOR","GUARDRAIL","PROMPT","MANUAL","INTERNAL"];function te(e){if(!e)return null;const t=e.trim().toUpperCase();return t==="GENERATION"?"LLM":ea.includes(t)?t:null}var Z="langfuse.";function B(e,t){var n;const r=`${Z}${t}`,u=(n=e.Tags)==null?void 0:n.find(l=>l.Key===r);return u==null?void 0:u.Value}function Y(e,t){for(const n of t){const r=B(e,n);if(r!==void 0&&r!=="")return r}}function ta(e,t){var n;const r=(n=e.Tags)==null?void 0:n.find(u=>u.Key===t);return r==null?void 0:r.Value}function se(e,t){const n=ta(e,t);return n!==void 0&&n!==""?n:B(e,t)}function aa(e,t){for(const n of t){const r=se(e,n);if(r!==void 0&&r!=="")return r}}function Xe(e){const t=te(B(e,"openinference.span.kind"));if(t)return t;const n=te(B(e,"gen_ai.span.kind"));if(n)return n;const r=B(e,"span.kind"),u=te(r);if(u)return u;for(const s of e.Tags||[]){const o=te(s.Value);if(o)return o}const l=(e.OperationName||"").toLowerCase();return l.includes("chat")||l.includes("llm")||l.includes("openai")?"LLM":l.includes("tool")||l.includes("get_")?"TOOL":l.includes("retriev")?"RETRIEVER":l.includes("embed")?"EMBEDDING":l.includes("prompt")?"PROMPT":l.includes("agent")?"AGENT":"UNKNOWN"}function na(e){const t=ge(e,"openinference.span.kind")||ge(e,"gen_ai.span.kind")||ge(e,"span.kind");return t||Xe(e)}function ge(e,t){const n=B(e,t);if(typeof n!="string")return;const r=n.trim();return r||void 0}function Qe(e){const t=se(e,"error");if(t)return t.toLowerCase()==="true";const n=se(e,"statusCode")||se(e,"otel.status_code");return n?n==="2"||n.toUpperCase()==="ERROR":!1}function ra(e){return aa(e,["exception.message","exception.type","status_message","otel.status_description","error.message"])}function Ze(e){const t=e.StartTime/1e3,n=e.Duration/1e3,r=t+n,u=m=>{if(m===void 0||m==="")return;const d=Number(m);return Number.isFinite(d)?d:void 0},l=u(Y(e,["llm.token_count.prompt","gen_ai.usage.input_tokens","gen_ai.usage.prompt_tokens"])),s=u(Y(e,["llm.token_count.completion","gen_ai.usage.completion_tokens","gen_ai.usage.output_tokens"])),o=u(Y(e,["llm.token_count.total","gen_ai.usage.total_tokens"])),c=o!==void 0?o:l!==void 0||s!==void 0?(l??0)+(s??0):void 0;return{startMs:t,endMs:r,durationMs:n,model:Y(e,["llm.model_name","gen_ai.response.model","gen_ai.request.model"]),inputTokens:l,outputTokens:s,totalTokens:c,cost:u(B(e,"llm.cost"))}}function Me(e,t){const n=e.get(t);if(n)return n;const r={toolCalls:new Map};return e.set(t,r),r}function la(e,t){const n=e.toolCalls.get(t);if(n)return n;const r={};return e.toolCalls.set(t,r),r}function ua(e){const t=e.trim();if(!t.startsWith("{")&&!t.startsWith("["))return e;try{return JSON.stringify(JSON.parse(t),null,2)}catch{return e}}function Le(e,t){const n=`${Z}${t}`,r=new Map;(e.Tags||[]).forEach(l=>{if(!l.Key.startsWith(`${n}.`)||!l.Value)return;const s=l.Key.slice(n.length+1),o=s.match(/^(\d+)\.message\.(role|content)$/);if(o){const m=Me(r,Number(o[1]));o[2]==="role"&&(m.role=l.Value),o[2]==="content"&&(m.content=l.Value);return}const c=s.match(/^(\d+)\.message\.tool_calls\.(\d+)\.tool_call\.function\.(name|arguments)$/);if(c){const m=Me(r,Number(c[1])),d=la(m,Number(c[2]));c[3]==="name"&&(d.name=l.Value),c[3]==="arguments"&&(d.arguments=l.Value)}});const u=[];return Array.from(r.entries()).sort(([l],[s])=>l-s).forEach(([,l])=>{l.content&&u.push(l.role?`${l.role}: ${l.content}`:l.content),Array.from(l.toolCalls.entries()).sort(([s],[o])=>s-o).forEach(([s,o])=>{const c=[o.name?`Tool: ${o.name}`:`Tool #${s+1}`];o.arguments&&c.push(`Arguments: ${ua(o.arguments)}`),u.push(c.join(`
|
|
2
|
+
`))})}),u.length?u.join(`
|
|
3
|
+
|
|
4
|
+
`):void 0}function sa(e){const t=Le(e,"llm.input_messages"),n=Le(e,"llm.output_messages");return{input:t||Y(e,["input.value","gen_ai.prompt"]),output:n||Y(e,["output.value","gen_ai.completion"])}}function oa(e){const t=new Set(["input.value","output.value","input.mime_type","output.mime_type","tapm.relocated","tapm.source_pipeline","topic.id","index.app.id","time_bucket","peer.service","component","status_code_xx","traceID","origin.operation","service.instance"]),n=["llm.input_messages.","llm.output_messages."],r=new Set(["error","error.message","error.type","error.stack","exception.message","exception.type","exception.stacktrace","statusCode","otel.status_code","otel.status_description","status_message"]),u=[],l=new Set;return(e.Tags||[]).forEach(s=>{if(!s.Key||!s.Key.startsWith(Z))return;const o=s.Key.slice(Z.length);!o||t.has(o)||n.some(c=>o.startsWith(c))||l.has(o)||(l.add(o),u.push({Key:o,Value:s.Value}))}),(e.Tags||[]).forEach(s=>{!s.Key||s.Key.startsWith(Z)||r.has(s.Key)&&(l.has(s.Key)||(l.add(s.Key),u.push({Key:s.Key,Value:s.Value})))}),u}function ia(e){const n=(e.References||[]).find(r=>r.RefType==="CHILD_OF"&&r.SpanId);return(n==null?void 0:n.SpanId)||null}function ca(e){const t=new Map;for(const u of e){const l=Ze(u);t.set(u.SpanId,{span:u,spanId:u.SpanId,parentId:ia(u),kind:Xe(u),children:[],startMs:l.startMs,endMs:l.endMs,durationMs:l.durationMs,hasError:Qe(u)})}const n=[];for(const u of t.values())u.parentId&&t.has(u.parentId)?t.get(u.parentId).children.push(u):n.push(u);const r=u=>{u.sort((l,s)=>l.startMs-s.startMs),u.forEach(l=>r(l.children))};return r(n),n}var O=168,ce=56,Se=56,ae=28,he=48,Re=40;function da(e){const t=[],n=[],r=new Map,u=d=>{if(r.has(d.spanId))return r.get(d.spanId);if(d.children.length===0)return r.set(d.spanId,O),O;const g=d.children.reduce((v,y,C)=>v+u(y)+(C>0?ae:0),0),h=Math.max(O,g);return r.set(d.spanId,h),h},l=(d,g,h)=>{const v=u(d),C=h+v/2-O/2,w=Re+g*(ce+Se);t.push({id:d.spanId,x:C,y:w,level:g,node:d});let x=h+(v-d.children.reduce((L,D,M)=>L+u(D)+(M>0?ae:0),0))/2,A=Number.NEGATIVE_INFINITY;d.children.forEach(L=>{const D=u(L),M=L.startMs<A?"parallel":"seq";l(L,g+1,x),n.push({from:d.spanId,to:L.spanId,label:M,dashed:M==="parallel"||L.kind==="LLM"}),A=Math.max(A,L.endMs),x+=D+ae})};let s=he;e.forEach(d=>{const g=u(d);l(d,0,s),s+=g+ae*2});const o=Math.max(...t.map(d=>d.x+O),he*2)+he,c=Math.max(...t.map(d=>d.level),0),m=Re*2+(c+1)*ce+c*Se;return{nodes:t,edges:n,width:o,height:m}}function fe(e){return!Number.isFinite(e)||e<0?"-":e<1?`${e.toFixed(2)}ms`:e<1e3?`${e.toFixed(e<10?2:1)}ms`:`${(e/1e3).toFixed(2)}s`}function pe(e){return e==null||!Number.isFinite(e)?"-":e.toLocaleString()}function ma(e){if(!e)return"-";const t=new Date(e),n=(r,u=2)=>String(r).padStart(u,"0");return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function Je(e){if(!e)return null;const t=e.trim();if(!t.startsWith("{")&&!t.startsWith("["))return null;try{return JSON.parse(t)}catch{return null}}function $({size:e=16,className:t,style:n,label:r,viewBox:u,children:l}){return a.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:e,viewBox:u,fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round","aria-label":i.t(r),className:t,style:n},l)}function fa(e){return a.default.createElement($,{...e,label:"AGENT",viewBox:"2 0.25 20 20"},a.default.createElement("rect",{x:"5",y:"7",width:"14",height:"11",rx:"2.5"}),a.default.createElement("path",{d:"M12 4v3"}),a.default.createElement("circle",{cx:"12",cy:"3.5",r:"1"}),a.default.createElement("circle",{cx:"9.5",cy:"12",r:"1.1"}),a.default.createElement("circle",{cx:"14.5",cy:"12",r:"1.1"}),a.default.createElement("path",{d:"M9.5 15.5h5"}),a.default.createElement("path",{d:"M3.5 12.5v2M20.5 12.5v2"}))}function ga(e){return a.default.createElement($,{...e,label:"CHAIN",viewBox:"2 2 20 20"},a.default.createElement("path",{d:"M9.5 14.5a3.5 3.5 0 0 1 0-4.95l2.12-2.12a3.5 3.5 0 0 1 4.95 4.95l-1.06 1.06"}),a.default.createElement("path",{d:"M14.5 9.5a3.5 3.5 0 0 1 0 4.95l-2.12 2.12a3.5 3.5 0 0 1-4.95-4.95l1.06-1.06"}))}function ha(e){return a.default.createElement($,{...e,label:"EMBEDDING",viewBox:"2.9 2.9 18.2 18.2"},a.default.createElement("circle",{cx:"6",cy:"6",r:"1.6"}),a.default.createElement("circle",{cx:"18",cy:"6",r:"1.6"}),a.default.createElement("circle",{cx:"6",cy:"18",r:"1.6"}),a.default.createElement("circle",{cx:"18",cy:"18",r:"1.6"}),a.default.createElement("circle",{cx:"12",cy:"12",r:"2.2"}),a.default.createElement("path",{d:"M7.4 7.4 10.4 10.4M16.6 7.4l-3 3M7.4 16.6l3-3M16.6 16.6l-3-3"}))}function pa(e){return a.default.createElement($,{...e,label:"EVALUATOR",viewBox:"2.5 2.5 19 19"},a.default.createElement("path",{d:"M12 4v16"}),a.default.createElement("path",{d:"M5 9h14"}),a.default.createElement("path",{d:"M8 9 5 15a3 3 0 0 0 6 0L8 9Z"}),a.default.createElement("path",{d:"M16 9l-3 6a3 3 0 0 0 6 0l-3-6Z"}),a.default.createElement("path",{d:"M8 20h8"}))}function Ea(e){return a.default.createElement($,{...e,label:"GUARDRAIL",viewBox:"1.5 1.5 21 21"},a.default.createElement("path",{d:"M12 3 4 6v6c0 4.5 3.4 8.4 8 9 4.6-.6 8-4.5 8-9V6l-8-3Z"}),a.default.createElement("path",{d:"m9 12 2 2 4-4"}))}function va({size:e=16,className:t,style:n}){return a.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:e,viewBox:"0 0 16 16",fill:"currentColor",stroke:"none","aria-label":i.t("LLM"),className:t,style:n},a.default.createElement("path",{d:"M6.75098 2.91992C6.96271 2.80436 7.21893 2.80436 7.43066 2.91992C7.6754 3.05361 7.83917 3.54583 8.16699 4.5293L8.38477 5.18262C8.56011 5.70865 8.64848 5.97198 8.79785 6.19043C8.93022 6.38394 9.09751 6.55122 9.29102 6.68359C9.50951 6.83305 9.77263 6.92128 10.2988 7.09668L10.9531 7.31445C11.936 7.64209 12.4277 7.80621 12.5615 8.05078C12.6771 8.26252 12.6771 8.51873 12.5615 8.73047C12.4279 8.9752 11.9364 9.13905 10.9531 9.4668L10.2988 9.68555C9.77276 9.8609 9.50948 9.94826 9.29102 10.0977C9.09752 10.23 8.93022 10.3973 8.79785 10.5908C8.64839 10.8093 8.56016 11.0724 8.38477 11.5986L8.16699 12.2529C7.8393 13.236 7.67528 13.7275 7.43066 13.8613C7.21893 13.9769 6.96271 13.9769 6.75098 13.8613C6.50636 13.7275 6.34234 13.236 6.01465 12.2529L5.79688 11.5986C5.62148 11.0724 5.53325 10.8093 5.38379 10.5908C5.25142 10.3973 5.08412 10.23 4.89062 10.0977C4.67216 9.94826 4.40888 9.8609 3.88281 9.68555L3.22852 9.4668C2.24527 9.13905 1.75373 8.9752 1.62012 8.73047C1.50455 8.51873 1.50455 8.26252 1.62012 8.05078C1.75398 7.80621 2.2456 7.64209 3.22852 7.31445L3.88281 7.09668C4.40901 6.92128 4.67213 6.83305 4.89062 6.68359C5.08413 6.55122 5.25142 6.38394 5.38379 6.19043C5.53316 5.97198 5.62153 5.70865 5.79688 5.18262L6.01465 4.5293C6.34247 3.54583 6.50624 3.05361 6.75098 2.91992ZM12.8184 0.693359C12.9088 0.64411 13.0179 0.64411 13.1084 0.693359C13.2132 0.750535 13.2836 0.961008 13.4238 1.38184L13.5596 1.78809C13.6346 2.01303 13.6724 2.12529 13.7363 2.21875C13.793 2.30158 13.8644 2.37303 13.9473 2.42969C14.0407 2.49361 14.153 2.53147 14.3779 2.60645L14.7842 2.74219C15.205 2.88246 15.4155 2.95286 15.4727 3.05762C15.5219 3.14809 15.5219 3.25719 15.4727 3.34766C15.4155 3.45241 15.205 3.52281 14.7842 3.66309L14.3779 3.79883C14.153 3.87381 14.0407 3.91166 13.9473 3.97559C13.8644 4.03225 13.793 4.10369 13.7363 4.18652C13.6724 4.27998 13.6346 4.39225 13.5596 4.61719L13.4238 5.02344C13.2836 5.44427 13.2132 5.65474 13.1084 5.71191C13.0179 5.76116 12.9088 5.76116 12.8184 5.71191C12.7136 5.65474 12.6432 5.44427 12.5029 5.02344L12.3672 4.61719C12.2922 4.39225 12.2544 4.27998 12.1904 4.18652C12.1338 4.10369 12.0623 4.03225 11.9795 3.97559C11.886 3.91166 11.7738 3.87381 11.5488 3.79883L11.1426 3.66309C10.7218 3.52281 10.5113 3.45241 10.4541 3.34766C10.4049 3.25719 10.4049 3.14809 10.4541 3.05762C10.5113 2.95286 10.7218 2.88246 11.1426 2.74219L11.5488 2.60645C11.7738 2.53147 11.886 2.49361 11.9795 2.42969C12.0623 2.37303 12.1338 2.30158 12.1904 2.21875C12.2544 2.12529 12.2922 2.01303 12.3672 1.78809L12.5029 1.38184C12.6432 0.961008 12.7136 0.750535 12.8184 0.693359Z"}))}function ba(e){return a.default.createElement($,{...e,label:"PROMPT",viewBox:"3.5 2.5 19 19"},a.default.createElement("path",{d:"M5 5h14v10H9l-4 4V5Z"}),a.default.createElement("path",{d:"M8.5 9.5h7M8.5 12h4.5"}),a.default.createElement("path",{d:"m17 17 1.5 1.5L21 16"}))}function ka(e){return a.default.createElement($,{...e,label:"RERANKER",viewBox:"2.5 2 20 20"},a.default.createElement("path",{d:"M4 7h10"}),a.default.createElement("path",{d:"M4 12h7"}),a.default.createElement("path",{d:"M4 17h12"}),a.default.createElement("path",{d:"M18 4v16"}),a.default.createElement("path",{d:"m15 7 3-3 3 3"}),a.default.createElement("path",{d:"m15 17 3 3 3-3"}))}function _a(e){return a.default.createElement($,{...e,label:"RETRIEVER",viewBox:"1.5 1.75 21 21"},a.default.createElement("ellipse",{cx:"9",cy:"6",rx:"6",ry:"2.5"}),a.default.createElement("path",{d:"M3 6v6c0 1.38 2.69 2.5 6 2.5s6-1.12 6-2.5V6"}),a.default.createElement("path",{d:"M3 12v4c0 1.38 2.69 2.5 6 2.5 1 0 1.96-.1 2.82-.28"}),a.default.createElement("circle",{cx:"17",cy:"17",r:"3"}),a.default.createElement("path",{d:"m21 21-1.8-1.8"}))}function ya({size:e=16,className:t,style:n}){return a.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:e,viewBox:"0 0 16 16",fill:"currentColor",stroke:"none","aria-label":i.t("TOOL"),className:t,style:n},a.default.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12.3473 7.71709C11.4282 8.63549 10.0466 8.78881 8.95807 8.20271L4.22084 12.938C3.90023 13.2583 3.38052 13.2583 3.05951 12.938C2.7393 12.6173 2.7393 12.0985 3.05951 11.7778L7.79754 7.04251C7.21188 5.95517 7.36538 4.57517 8.28405 3.65677C8.83493 3.1063 9.55371 2.84447 10.2753 2.83566C9.51933 3.63956 9.52933 4.90145 10.3157 5.68733C11.1016 6.47281 12.3641 6.48282 13.1684 5.72737C13.1596 6.44839 12.8982 7.16662 12.3473 7.71709ZM13.6565 4.14959C13.4542 4.37699 13.1184 4.66644 12.6371 5.10722C12.1274 5.61647 11.4058 5.61647 10.8961 5.10722C10.386 4.59718 10.386 3.87656 10.8961 3.36692C11.3659 2.89731 11.8708 2.34122 11.8628 2.33882C10.4976 1.70907 8.82854 1.95249 7.7036 3.07667C6.6782 4.10116 6.38598 5.57683 6.81733 6.86235L2.47945 11.1981C1.83823 11.8387 1.83823 12.8776 2.47945 13.5181C3.12068 14.1587 4.16007 14.1587 4.80129 13.5181L9.13875 9.18276C10.426 9.61473 11.9023 9.32169 12.9277 8.2972C14.0511 7.17422 14.2846 5.51278 13.6565 4.14959Z"}))}function Ca(e){return a.default.createElement($,{...e,label:"MANUAL",viewBox:"0 0 24 24"},a.default.createElement("path",{d:"M15.5 4.5 19.5 8.5 9 19l-4.5 1L5.5 15.5 15.5 4.5Z"}),a.default.createElement("path",{d:"m13.5 6.5 4 4"}),a.default.createElement("path",{d:"M5.5 15.5 9 19"}))}function Ie(e){return a.default.createElement($,{...e,label:"UNKNOWN",viewBox:"0 0 24 24"},a.default.createElement("path",{d:"M8 4 Q5 4 5 7 L5 10 Q5 12 3 12 Q5 12 5 14 L5 17 Q5 20 8 20"}),a.default.createElement("path",{d:"M16 4 Q19 4 19 7 L19 10 Q19 12 21 12 Q19 12 19 14 L19 17 Q19 20 16 20"}),a.default.createElement("circle",{cx:"12",cy:"12",r:"1.4",fill:"currentColor",stroke:"none"}))}var De={AGENT:fa,CHAIN:ga,LLM:va,TOOL:ya,RETRIEVER:_a,RERANKER:ka,EMBEDDING:ha,EVALUATOR:pa,GUARDRAIL:Ea,PROMPT:ba,MANUAL:Ca,INTERNAL:Ie,UNKNOWN:Ie};function wa({kind:e,...t}){const n=De[e]||De.UNKNOWN;return a.default.createElement(n,{...t})}var J=20,j=32,ne="#A8A29E",Ee=6,ve=16,re=e=>e*J+J/2;function Na({ancestorsIsLast:e,isLast:t,isRoot:n,hasChildren:r,isExpanded:u,onToggle:l}){const s=e.length,c=(s+1)*J,m=j/2,d=[];if(e.forEach((v,y)=>{if(v)return;const C=re(y)+.5;d.push(a.default.createElement("line",{key:`anc-${y}`,x1:C,y1:-.5,x2:C,y2:j+.5,stroke:ne,strokeWidth:1,shapeRendering:"crispEdges"}))}),!n){const v=re(s-1)+.5,y=re(s),C=t?m-Ee:j+.5;d.push(a.default.createElement("line",{key:"vline",x1:v,y1:-.5,x2:v,y2:C,stroke:ne,strokeWidth:1,shapeRendering:"crispEdges"}));const w=`M ${v} ${m-Ee} Q ${v} ${m} ${v+Ee} ${m} L ${y} ${m}`;d.push(a.default.createElement("path",{key:"arc",d:w,fill:"none",stroke:ne,strokeWidth:1}))}if(r&&u){const v=re(s)+.5;d.push(a.default.createElement("line",{key:"vdown",x1:v,y1:m+ve/2,x2:v,y2:j+.5,stroke:ne,strokeWidth:1,shapeRendering:"crispEdges"}))}const g=s*J+(J-ve)/2,h=(j-ve)/2;return a.default.createElement("span",{className:"agent-obs-td-tree-indent",style:{width:c,flex:`0 0 ${c}px`,height:j}},a.default.createElement("svg",{className:"agent-obs-td-tree-lines",width:c,height:j,viewBox:`0 0 ${c} ${j}`,"aria-hidden":"true"},d),a.default.createElement("span",{className:"agent-obs-td-tree-control",style:{left:g,top:h}},r?a.default.createElement("span",{className:`agent-obs-td-tree-expander ${u?"agent-obs-td-tree-expander--expanded":""}`,onClick:v=>{v.stopPropagation(),l()}},a.default.createElement("svg",{width:"10",height:"10",viewBox:"0 0 10 10","aria-hidden":"true"},a.default.createElement("path",{d:"M2.5 3.5 L5 6 L7.5 3.5",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}))):a.default.createElement("span",{className:"agent-obs-td-tree-leaf-dot"})))}function et(e){const{node:t,depth:n,ancestorsIsLast:r,isLast:u,expanded:l,toggle:s,activeId:o,onActiveChange:c}=e,m=t.children.length>0,d=l.has(t.spanId),g=o===t.spanId;return a.default.createElement(a.default.Fragment,null,a.default.createElement("div",{className:`agent-obs-td-tree-row ${g?"agent-obs-td-tree-row--active":""} ${t.hasError?"agent-obs-td-tree-row--error":""}`,onClick:()=>c(t.spanId)},a.default.createElement(Na,{ancestorsIsLast:r,isLast:u,isRoot:n===0,hasChildren:m,isExpanded:d,onToggle:()=>s(t.spanId)}),a.default.createElement("div",{className:"agent-obs-td-tree-row-content"},a.default.createElement("span",{className:"agent-obs-td-tree-icon"},a.default.createElement(wa,{kind:t.kind,size:t.kind==="UNKNOWN"||t.kind==="INTERNAL"?14:16})),a.default.createElement("span",{className:"agent-obs-td-tree-name",title:t.span.OperationName},t.span.OperationName),a.default.createElement("span",{className:"agent-obs-td-tree-dur"},fe(t.durationMs)))),m&&d&&t.children.map((h,v)=>a.default.createElement(et,{key:h.spanId,node:h,depth:n+1,ancestorsIsLast:[...r,v===t.children.length-1],isLast:v===t.children.length-1,expanded:l,toggle:s,activeId:o,onActiveChange:c})))}function xa(e){const t=[],n=r=>{t.push(r.spanId),r.children.forEach(n)};return e.forEach(n),t}function Ta({roots:e,activeId:t,onActiveChange:n}){const[r,u]=f.useState(()=>new Set(xa(e))),l=s=>{u(o=>{const c=new Set(o);return c.has(s)?c.delete(s):c.add(s),c})};return a.default.createElement("div",{className:"agent-obs-td-tree"},e.map((s,o)=>a.default.createElement(et,{key:s.spanId,node:s,depth:0,ancestorsIsLast:[],isLast:o===e.length-1,expanded:r,toggle:l,activeId:t,onActiveChange:n})))}function Fa(e){const t=[],n=(r,u)=>{t.push({node:r,depth:u}),r.children.forEach(l=>n(l,u+1))};return e.forEach(r=>n(r,0)),t}function Aa(e){return e>3e4?"#F36C06":e>1e4?"#EAB308":e>3e3?"#3B82F6":"#22C55E"}function be(e){if(!Number.isFinite(e)||e<=0)return"0s";const t=e/1e3,n=t<1?t.toFixed(2):t.toFixed(1);return`${parseFloat(n)}s`}var Ma=14;function La({roots:e,activeId:t,onActiveChange:n}){const r=f.useMemo(()=>Fa(e),[e]),{traceStart:u,totalMs:l}=f.useMemo(()=>{if(!r.length)return{traceStart:0,totalMs:0};const c=Math.min(...r.map(d=>d.node.startMs)),m=Math.max(...r.map(d=>d.node.startMs+d.node.durationMs));return{traceStart:c,totalMs:m-c}},[r]),s=[be(0),be(l/2),be(l)],o=["start","mid","end"];return a.default.createElement("div",{className:"agent-obs-td-timeline-wrapper"},a.default.createElement("div",{className:"agent-obs-td-timeline-axis"},a.default.createElement("div",{className:"agent-obs-td-timeline-axis-label"},i.t("Span")),a.default.createElement("div",{className:"agent-obs-td-timeline-axis-track"},s.map((c,m)=>a.default.createElement(k.Text,{key:m,className:`agent-obs-td-timeline-axis-tick agent-obs-td-timeline-axis-tick--${o[m]}`},c))),a.default.createElement("div",{className:"agent-obs-td-timeline-axis-dur"},i.t("Duration"))),a.default.createElement("div",{className:"agent-obs-td-timeline"},r.map(({node:c,depth:m})=>{const d=l>0?(c.startMs-u)/l*100:0,g=l>0?Math.max(c.durationMs/l*100,.2):0,h=t===c.spanId,v=c.hasError?"#e54545":Aa(c.durationMs);return a.default.createElement("div",{key:c.spanId,className:`agent-obs-td-timeline-row ${h?"agent-obs-td-timeline-row--active":""}`,onClick:()=>n(c.spanId)},a.default.createElement("div",{className:"agent-obs-td-timeline-label",style:{paddingLeft:m*Ma}},a.default.createElement("span",{className:"agent-obs-td-timeline-label-op",title:c.span.OperationName},c.span.OperationName)),a.default.createElement("div",{className:"agent-obs-td-timeline-track"},a.default.createElement("div",{className:"agent-obs-td-timeline-track-line"}),a.default.createElement("div",{className:"agent-obs-td-timeline-bar",style:{left:`${d}%`,width:`${g}%`,background:v}})),a.default.createElement("div",{className:"agent-obs-td-timeline-dur"},fe(c.durationMs)))})))}var tt=.25,at=2,le=.1,ue=24;function Sa(e,t=22){return e?e.length>t?`${e.slice(0,t-1)}…`:e:""}function Ra(e,t,n,r){const u=Math.max((r-t)/2,20);return`M ${e} ${t} C ${e} ${t+u}, ${n} ${r-u}, ${n} ${r}`}function ke(e){return Math.min(at,Math.max(tt,e))}function Ia(e){return e==="parallel"?i.t("Parallel"):i.t("Sequential")}function Da({roots:e,activeId:t,onActiveChange:n}){const r=f.useMemo(()=>da(e),[e]),u=f.useMemo(()=>{const p=new Map;return r.nodes.forEach(N=>p.set(N.id,{x:N.x,y:N.y})),p},[r]),l=f.useRef(null),[s,o]=f.useState({w:0,h:0}),[c,m]=f.useState(1),[d,g]=f.useState({x:0,y:0}),[h,v]=f.useState(!1),y=f.useCallback((p,N,b,E)=>{if(p<ue*2+1||N<ue*2+1||!b||!E)return{scale:1,x:0,y:0};const _=ke(Math.min((p-ue*2)/b,(N-ue*2)/E,1));return{scale:_,x:(p-b*_)/2,y:(N-E*_)/2}},[]),C=f.useCallback(()=>{const p=y(s.w,s.h,r.width,r.height);m(p.scale),g({x:p.x,y:p.y})},[y,s.w,s.h,r.width,r.height]),w=f.useRef(""),x=`${r.width}x${r.height}`;f.useLayoutEffect(()=>{const p=l.current;if(!p)return;const N=p.clientWidth,b=p.clientHeight;if(o({w:N,h:b}),N>0&&b>0&&r.width>0&&r.height>0){const T=y(N,b,r.width,r.height);m(T.scale),g({x:T.x,y:T.y}),w.current=x,v(!0)}let E=0;const _=new ResizeObserver(()=>{cancelAnimationFrame(E),E=requestAnimationFrame(()=>{const T=p.clientWidth,I=p.clientHeight;o(R=>R.w===T&&R.h===I?R:{w:T,h:I})})});return _.observe(p),()=>{cancelAnimationFrame(E),_.disconnect()}},[]),f.useEffect(()=>{if(!s.w||!s.h||!r.width||!r.height||w.current===x)return;w.current=x;const p=y(s.w,s.h,r.width,r.height);m(p.scale),g({x:p.x,y:p.y}),v(!0)},[x,s.w,s.h,r.width,r.height,y]);const A=f.useCallback((p,N,b)=>{m(E=>{const _=ke(p);return _===E?E:(g(T=>({x:N-(N-T.x)*(_/E),y:b-(b-T.y)*(_/E)})),_)})},[]),L=()=>A(c+le,s.w/2,s.h/2),D=()=>A(c-le,s.w/2,s.h/2);f.useEffect(()=>{const p=l.current;if(!p)return;const N=b=>{b.preventDefault();const E=p.getBoundingClientRect(),_=b.clientX-E.left,T=b.clientY-E.top,I=b.deltaY<0?1+le:1/(1+le);m(R=>{const z=ke(R*I);return z===R?R:(g(ee=>({x:_-(_-ee.x)*(z/R),y:T-(T-ee.y)*(z/R)})),z)})};return p.addEventListener("wheel",N,{passive:!1}),()=>p.removeEventListener("wheel",N)},[]);const M=f.useRef({active:!1,startX:0,startY:0,originX:0,originY:0}),[K,F]=f.useState(!1),S=p=>{p.button!==0||p.target.closest(".agent-obs-td-graph-node")||(M.current={active:!0,startX:p.clientX,startY:p.clientY,originX:d.x,originY:d.y},F(!0),p.preventDefault())};f.useEffect(()=>{if(!K)return;const p=b=>{if(!M.current.active)return;const E=b.clientX-M.current.startX,_=b.clientY-M.current.startY;g({x:M.current.originX+E,y:M.current.originY+_})},N=()=>{M.current.active=!1,F(!1)};return window.addEventListener("mousemove",p),window.addEventListener("mouseup",N),()=>{window.removeEventListener("mousemove",p),window.removeEventListener("mouseup",N)}},[K]);const V=Math.round(c*100),W=c<at-1e-6,P=c>tt+1e-6;return a.default.createElement("div",{ref:l,className:`agent-obs-td-graph${K?" agent-obs-td-graph--panning":""}`,onMouseDown:S},a.default.createElement("svg",{className:"agent-obs-td-graph-svg",width:s.w||r.width,height:s.h||r.height},h&&a.default.createElement("g",{transform:`translate(${d.x}, ${d.y}) scale(${c})`},a.default.createElement("g",null,r.edges.map((p,N)=>{const b=u.get(p.from),E=u.get(p.to);if(!b||!E)return null;const _=b.x+O/2,T=b.y+ce,I=E.x+O/2,R=E.y,z=(_+I)/2,ee=(T+R)/2;return a.default.createElement("g",{key:`edge-${N}`},a.default.createElement("path",{className:`agent-obs-td-graph-edge ${p.dashed?"agent-obs-td-graph-edge--dashed":""}`,d:Ra(_,T,I,R)}),a.default.createElement("text",{className:"agent-obs-td-graph-edge-label",x:z,y:ee,textAnchor:"middle",dy:"-2"},Ia(p.label)))})),a.default.createElement("g",null,r.nodes.map(p=>{const{x:N,y:b,node:E}=p,_=t===E.spanId;return a.default.createElement("g",{key:E.spanId,className:`agent-obs-td-graph-node agent-obs-td-graph-node--${E.kind}${E.hasError?" agent-obs-td-graph-node--error":""}${_?" agent-obs-td-graph-node--active":""}`,transform:`translate(${N}, ${b})`,onClick:()=>n(E.spanId)},a.default.createElement("rect",{className:"agent-obs-td-graph-node-box",width:O,height:ce,rx:8,ry:8}),a.default.createElement("text",{className:"agent-obs-td-graph-node-op",x:O/2,y:22,textAnchor:"middle"},a.default.createElement("title",null,E.span.OperationName),Sa(E.span.OperationName,22)),a.default.createElement("text",{className:"agent-obs-td-graph-node-dur",x:O/2,y:40,textAnchor:"middle"},fe(E.durationMs)))})))),a.default.createElement("div",{className:"agent-obs-td-graph-toolbar",onMouseDown:p=>p.stopPropagation(),onWheel:p=>p.stopPropagation()},a.default.createElement("button",{type:"button",className:"agent-obs-td-graph-toolbar-btn",onClick:L,disabled:!W,"aria-label":i.t("zoom in")},"+"),a.default.createElement("span",{className:"agent-obs-td-graph-toolbar-percent"},V,"%"),a.default.createElement("button",{type:"button",className:"agent-obs-td-graph-toolbar-btn",onClick:D,disabled:!P,"aria-label":i.t("zoom out")},"−"),a.default.createElement("span",{className:"agent-obs-td-graph-toolbar-divider"}),a.default.createElement("button",{type:"button",className:"agent-obs-td-graph-toolbar-btn agent-obs-td-graph-toolbar-fit",onClick:C,"aria-label":i.t("fit to view")},a.default.createElement("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none"},a.default.createElement("path",{d:"M2 5V2h3M14 5V2h-3M2 11v3h3M14 11v3h-3",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})))))}var Oe=!1;function Oa(){Oe||(Ve.default.registerLanguage("json",gt.default),Oe=!0)}function Ba(e,t=2){const n=JSON.stringify(e,null,t);return Oa(),Ve.default.highlight(n,{language:"json"}).value}function $a({span:e,closeBtn:t,attrsLoading:n,attrsError:r}){if(!e)return a.default.createElement("div",{className:"agent-obs-td-detail"},a.default.createElement("div",{className:"agent-obs-td-detail-header"},a.default.createElement("span",{className:"agent-obs-td-detail-header-title"}),t),a.default.createElement("div",{className:"agent-obs-td-detail-empty"},i.t("请选择左侧节点查看详情")));const u=na(e),l=Ze(e),s=sa(e),o=oa(e),c=Qe(e),m=c?ra(e):void 0,d=B(e,"agent.conversation_id")||B(e,"session.id");return a.default.createElement("div",{className:"agent-obs-td-detail"},a.default.createElement("div",{className:"agent-obs-td-detail-header"},a.default.createElement("span",{className:"agent-obs-td-detail-header-title",title:e.OperationName},e.OperationName),a.default.createElement("span",{className:`agent-obs-td-detail-badge ${c?"agent-obs-td-detail-badge--error":"agent-obs-td-detail-badge--ok"}`},c?i.t("ERROR"):i.t("OK")),t),a.default.createElement("div",{className:"agent-obs-td-detail-metrics"},a.default.createElement(H,{label:i.t("Total Tokens"),value:pe(l.totalTokens)}),a.default.createElement(H,{label:i.t("Tokens in"),value:pe(l.inputTokens)}),a.default.createElement(H,{label:i.t("Tokens out"),value:pe(l.outputTokens)}),a.default.createElement(H,{label:i.t("Duration"),value:fe(l.durationMs)}),a.default.createElement(H,{label:i.t("Model"),value:l.model||"-"})),a.default.createElement("div",{className:"agent-obs-td-detail-info"},a.default.createElement("div",{className:"agent-obs-td-detail-pills"},a.default.createElement(X,{label:i.t("Timestamp"),value:ma(l.startMs)}),a.default.createElement(X,{label:i.t("SpanId"),value:e.SpanId}),a.default.createElement(X,{label:i.t("TraceId"),value:B(e,"traceID")||e.TraceId}),a.default.createElement(X,{label:i.t("SpanKind"),value:u}),a.default.createElement(X,{label:i.t("ConversionID"),value:d??"-"})),s.input&&s.output&&a.default.createElement(a.default.Fragment,null,a.default.createElement(_e,{title:i.t("Input"),value:s.input}),a.default.createElement(_e,{title:i.t("Output"),value:s.output})),m&&a.default.createElement(_e,{title:i.t("Error"),value:m,titleClassName:"agent-obs-td-detail-io-title--error"})),a.default.createElement("div",{className:"agent-obs-td-detail-attrs-wrap"},n?a.default.createElement("div",{className:"agent-obs-td-detail-attrs-loading"},a.default.createElement(k.LoadingTip,null)):r?a.default.createElement(k.Alert,{type:"error"},r):a.default.createElement(qa,{attrs:o,io:s})))}function H({label:e,value:t}){return a.default.createElement("div",{className:"agent-obs-td-detail-metric"},a.default.createElement("div",{className:"agent-obs-td-detail-metric-label"},e),a.default.createElement("div",{className:"agent-obs-td-detail-metric-value",title:typeof t=="string"?t:void 0},t))}function X({label:e,value:t}){return a.default.createElement("div",{className:"agent-obs-td-detail-pill",title:`${e}: ${t}`},a.default.createElement("span",{className:"agent-obs-td-detail-pill-label"},e),a.default.createElement("span",{className:"agent-obs-td-detail-pill-value"},t))}function oe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function U(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function Ne(e,t=0){if(t>6||e===null||e===void 0)return null;if(Array.isArray(e)){for(const n of e){const r=Ne(n,t+1);if(r)return r}return null}if(!oe(e))return null;if(Array.isArray(e.messages)&&e.messages.length)return e.messages;for(const n of Object.keys(e)){const r=Ne(e[n],t+1);if(r)return r}return null}function Ka(e){if(typeof e=="string")return e.trim()||void 0;if(!oe(e))return;const t=U(e.content)||U(e.text);if(t)return t;const n=oe(e.data)?e.data:null;if(n){const u=U(n.content)||U(n.text);if(u)return u}const r=oe(e.kwargs)?e.kwargs:null;if(r){const u=U(r.content)||U(r.text);if(u)return u}}function Va(e){const t=Je(e);if(t===null)return e;const n=Ne(t);if(n&&n.length)for(let r=n.length-1;r>=0;r-=1){const u=Ka(n[r]);if(u)return u}return e}function _e({title:e,value:t,titleClassName:n}){const r=Va(t);return a.default.createElement("div",{className:"agent-obs-td-detail-io"},a.default.createElement("div",{className:`agent-obs-td-detail-io-title ${n||""}`},e),a.default.createElement("pre",{className:"agent-obs-td-detail-io-content"},r))}var Pa=["llm","gen_ai","openai"];function ja(e,t){return t.some(n=>e===n||e.startsWith(`${n}.`))}function Be(e){return ja(e,Pa)}function qa({attrs:e,io:t}){const n=f.useMemo(()=>{const o=[];return t.input&&o.push({Key:"input.value",Value:t.input}),t.output&&o.push({Key:"output.value",Value:t.output}),o},[t.input,t.output]),r=f.useMemo(()=>e.filter(o=>Be(o.Key)),[e]),u=f.useMemo(()=>e.filter(o=>!Be(o.Key)),[e]),l=r.length>0,s=f.useMemo(()=>[...n,...u],[n,u]);return l?a.default.createElement(za,{llmAttrs:r,otherAttrs:s}):a.default.createElement(k.Tabs,{tabs:[{id:"span",label:i.t("Span Attributes")}],activeId:"span"},a.default.createElement(k.TabPanel,{id:"span"},a.default.createElement(xe,{attrs:s})))}function za({llmAttrs:e,otherAttrs:t}){const[n,r]=f.useState("llm"),u=[{id:"llm",label:i.t("LLM Attributes")},{id:"other",label:i.t("Other Attributes")}];return a.default.createElement(k.Tabs,{tabs:u,activeId:n,onActive:l=>r(l.id)},a.default.createElement(k.TabPanel,{id:"llm"},a.default.createElement(xe,{attrs:e})),a.default.createElement(k.TabPanel,{id:"other"},a.default.createElement(xe,{attrs:t})))}function xe({attrs:e}){return e.length?a.default.createElement("div",{className:"agent-obs-td-detail-attrs"},e.map((t,n)=>a.default.createElement(Ua,{key:`${t.Key}-${n}`,attr:t}))):a.default.createElement("div",{className:"agent-obs-td-detail-attrs-empty"},i.t("无属性"))}function Ua({attr:e}){const[t,n]=f.useState(!1),[r,u]=f.useState(!1),l=f.useRef(null),s=f.useMemo(()=>Je(e.Value),[e.Value]),o=e.Value||"-",c=s!==null;f.useLayoutEffect(()=>{if(t&&!c)return;const h=l.current;if(!h)return;const v=()=>{u(h.scrollWidth>h.clientWidth+1)};if(v(),typeof ResizeObserver>"u")return;const y=new ResizeObserver(v);return y.observe(h),()=>y.disconnect()},[o,t,c]);const m=c||r,d=t&&!c?"agent-obs-td-detail-attr-value--expanded":"",g=!t||c?o:void 0;return a.default.createElement("div",{className:"agent-obs-td-detail-attr"},a.default.createElement("div",{className:"agent-obs-td-detail-attr-main"},m?a.default.createElement("span",{className:`agent-obs-td-detail-attr-caret ${t?"agent-obs-td-detail-attr-caret--expanded":""}`,onClick:()=>n(h=>!h)},"▶"):a.default.createElement("span",{className:"agent-obs-td-detail-attr-caret agent-obs-td-detail-attr-caret--placeholder"}),a.default.createElement("span",{className:"agent-obs-td-detail-attr-key",title:e.Key},e.Key),a.default.createElement("span",{ref:l,className:`agent-obs-td-detail-attr-value ${d}`,title:g},o)),m&&t&&s!==null&&a.default.createElement("pre",{className:"agent-obs-td-detail-attr-json hljs",dangerouslySetInnerHTML:{__html:Ba(s)}}))}function Ya(){return[{id:"tree",label:i.t("Tree")},{id:"timeline",label:i.t("Timeline")},{id:"graph",label:i.t("Graph")}]}function Wa({visible:e,onClose:t,traceId:n,fetchDetail:r,fetchSpanDetail:u,defaultTab:l="tree",width:s="80vw"}){const[o,c]=f.useState(l),[m,d]=f.useState(null),[g,h]=f.useState(!1),[v,y]=f.useState(null),[C,w]=f.useState(null),[x,A]=f.useState(()=>new Map),[L,D]=f.useState(!1),[M,K]=f.useState(null),F=f.useRef(null);f.useEffect(()=>{if(!e||!n)return;let b=!1;return h(!0),y(null),d(null),w(null),A(new Map),D(!1),K(null),F.current=null,r(n).then(E=>{var _;if(!b&&(d(E),(_=E==null?void 0:E.Spans)!=null&&_.length)){const T=E.Spans.reduce((I,R)=>I.StartTime<R.StartTime?I:R);w(T.SpanId)}}).catch(E=>{b||y((E==null?void 0:E.message)||i.t("加载失败"))}).finally(()=>{b||h(!1)}),()=>{b=!0}},[e,n,r]),f.useEffect(()=>{e||c(l)},[e,l]);const{roots:S,spanMap:V}=f.useMemo(()=>{var b;if(!((b=m==null?void 0:m.Spans)!=null&&b.length))return{roots:[],spanMap:new Map};const E=new Map;return m.Spans.forEach(_=>E.set(_.SpanId,_)),{roots:ca(m.Spans),spanMap:E}},[m]),W=f.useMemo(()=>{if(!C)return null;const b=V.get(C)||null;if(!b)return null;const E=x.get(C);return E?{...b,Tags:E.Tags&&E.Tags.length?E.Tags:b.Tags,Logs:E.Logs&&E.Logs.length?E.Logs:b.Logs}:b},[C,V,x]);f.useEffect(()=>{if(!e||!n||!C||!u)return;const b=V.get(C);if(!b||x.has(C)||b.Tags&&b.Tags.length>0)return;F.current=C;let E=!1;return D(!0),K(null),u(n,C).then(_=>{E||F.current!==C||A(T=>{const I=new Map(T);return I.set(C,{Tags:Array.isArray(_==null?void 0:_.Tags)?_.Tags:[],Logs:Array.isArray(_==null?void 0:_.Logs)?_.Logs:[]}),I})}).catch(_=>{E||F.current!==C||K((_==null?void 0:_.message)||i.t("加载失败"))}).finally(()=>{E||F.current!==C||D(!1)}),()=>{E=!0}},[e,n,C,u,V,x]);const P=f.useCallback(b=>{w(b)},[]),p=f.useMemo(Ya,[]),N=()=>g?a.default.createElement("div",{className:"agent-obs-td-drawer-loading"},a.default.createElement(k.LoadingTip,null)):v?a.default.createElement("div",{className:"agent-obs-td-drawer-error"},a.default.createElement(k.Alert,{type:"error"},v)):!m||!S.length?a.default.createElement("div",{className:"agent-obs-td-drawer-empty"},i.t("暂无数据")):o==="tree"?a.default.createElement(Ta,{roots:S,activeId:C,onActiveChange:P}):o==="timeline"?a.default.createElement(La,{roots:S,activeId:C,onActiveChange:P}):a.default.createElement(Da,{roots:S,activeId:C,onActiveChange:P});return a.default.createElement(k.Drawer,{className:"agent-obs-td-drawer",style:{width:s,height:"calc(100vh - 50px)",boxSizing:"border-box"},visible:e,placement:"right",size:"xl",title:null,disableCloseIcon:!0,onClose:t,outerClickClosable:!0,showMask:!0},a.default.createElement("div",{className:"agent-obs-td-drawer-body"},a.default.createElement("div",{className:"agent-obs-td-drawer-left"},a.default.createElement(k.Tabs,{className:"agent-obs-td-drawer-tabs",style:{height:40},variant:"card-outline",tabs:p,animated:!1,defaultActiveId:o,onActive:b=>c(b.id)}),a.default.createElement("div",{style:{paddingLeft:10},className:`agent-obs-td-drawer-view${o==="graph"?" agent-obs-td-drawer-view--graph":""}`},N())),a.default.createElement("div",{className:"agent-obs-td-drawer-right"},g||v?null:a.default.createElement($a,{span:W,attrsLoading:L,attrsError:M,closeBtn:a.default.createElement("button",{type:"button",className:"agent-obs-td-drawer-close",onClick:t,"aria-label":i.t("关闭")},a.default.createElement(k.Icon,{type:"close",size:20}))}))))}var Ga={zh:{k_1vdb2c7:"Agent 调用",k_00hhj74:"ConversionID",k_1opac2j:"Duration",k_03sgcnx:"ERROR",k_037uk0t:"Error",k_030ock3:"Input",k_1l3vgxz:"LLM Attributes",k_1tv2hle:"LLM 调用次数",k_02vcuqy:"Model",k_003hnfl:"OK",k_130omsu:"Other Attributes",k_0sl6zfe:"Output",k_151iedo:"Sequential",k_0yhbajy:"Parallel",k_11rfpuu:"Span Attributes",k_0yisj0j:"Tree",k_01oqkxq:"Timeline",k_02yf5ih:"Graph",k_1len88c:"TraceId (RunId)",k_0yj2fzd:"Span",k_0rakmad:"zoom in",k_0jw4x30:"zoom out",k_04p9rpk:"fit to view",k_03r8nh8:"AGENT",k_03jowco:"CHAIN",k_038v7ai:"EMBEDDING",k_0e3gmau:"EVALUATOR",k_0uolhdi:"GUARDRAIL",k_037699k:"LLM",k_1ga8ach:"PROMPT",k_1sjjr8z:"RERANKER",k_1babzmh:"RETRIEVER",k_0yjq7ul:"TOOL",k_1bemrrz:"MANUAL",k_1a804jx:"UNKNOWN",k_0j7hjgk:"SpanId",k_1dcdm1t:"SpanKind",k_1tkqbyj:"Timestamp",k_16wdblm:"Token 总消耗",k_1087kga:"Tokens in",k_0csyyqr:"Tokens out",k_1pugrjj:"Total Tokens",k_1tn04w9:"TraceId",k_00046ua:"万",k_00046tr:"个",k_00046qi:"亿",k_002r79h:"全部",k_17cbs21:"全部环境",k_002qzi3:"关闭",k_003lxmq:"刷新",k_0f8b3ws:"加载失败",k_003m8qf:"参数",k_0pa2i2z:"可根据 run-id 和 conversation-id 搜索",k_14tn4z1:"响应时间(秒)",k_002umy9:"失败",k_003pmuv:"工具",k_02p3axw:"平均 Token/模型调用",k_003qqk4:"开发",k_0by9bfw:"开始时间",k_003qe0a:"成功",k_1f3mps5:"数据延迟 < 10min",k_03cutj0:"无属性",k_0zn4ylg:"模型调用",k_01fa579:"模型调用错误率",k_07hvn81:"模型调用平均耗时",k_03e5hqz:"日同比",k_13qhqgp:"暂无数据",k_0004138:"次",k_003nzwy:"状态",k_003s37t:"环境",k_003twt9:"生产",k_17bw8lt:"生产环境",k_0fwgfbc:"用量概览",k_0bycnor:"结束时间",k_0mvqrk5:"请选择左侧节点查看详情",k_0ld10w7:"请选择时间范围",k_1gd9xqm:"近12小时",k_0vd4sg9:"近15分钟",k_126g2v0:"近1小时",k_1gd9wh7:"近24小时",k_0vd6ff2:"近30分钟",k_126g2vv:"近6小时",k_03g9k26:"近3天",k_03g9k5m:"近7天",k_002uzrd:"预览",k_17c63b9:"预览环境"},en:{k_1vdb2c7:"Agent Calls",k_00hhj74:"Conversation ID",k_1opac2j:"Duration",k_03sgcnx:"ERROR",k_037uk0t:"Error",k_030ock3:"Input",k_1l3vgxz:"LLM Attributes",k_1tv2hle:"LLM Calls",k_02vcuqy:"Model",k_003hnfl:"OK",k_130omsu:"Other Attributes",k_0sl6zfe:"Output",k_151iedo:"Sequential",k_0yhbajy:"Parallel",k_11rfpuu:"Span Attributes",k_0yisj0j:"Tree",k_01oqkxq:"Timeline",k_02yf5ih:"Graph",k_1len88c:"Trace ID (Run ID)",k_0yj2fzd:"Span",k_0rakmad:"Zoom in",k_0jw4x30:"Zoom out",k_04p9rpk:"Fit to view",k_03r8nh8:"AGENT",k_03jowco:"CHAIN",k_038v7ai:"EMBEDDING",k_0e3gmau:"EVALUATOR",k_0uolhdi:"GUARDRAIL",k_037699k:"LLM",k_1ga8ach:"PROMPT",k_1sjjr8z:"RERANKER",k_1babzmh:"RETRIEVER",k_0yjq7ul:"TOOL",k_1bemrrz:"MANUAL",k_1a804jx:"UNKNOWN",k_0j7hjgk:"Span ID",k_1dcdm1t:"Span Kind",k_1tkqbyj:"Timestamp",k_16wdblm:"Total Token Usage",k_1087kga:"Tokens In",k_0csyyqr:"Tokens Out",k_1pugrjj:"Total Tokens",k_1tn04w9:"Trace ID",k_00046ua:"Ten Thousand",k_00046tr:"items",k_00046qi:"Billion",k_002r79h:"All",k_17cbs21:"All Environments",k_002qzi3:"Close",k_003lxmq:"Refresh",k_0f8b3ws:"Load Failed",k_003m8qf:"Parameters",k_0pa2i2z:"Search by run-id or conversation-id",k_14tn4z1:"Response Time (s)",k_002umy9:"Failed",k_003pmuv:"Tool",k_02p3axw:"Average Tokens per Model Call",k_003qqk4:"Development",k_0by9bfw:"Start Time",k_003qe0a:"Success",k_1f3mps5:"Data latency < 10 min",k_03cutj0:"No attributes",k_0zn4ylg:"Model Calls",k_01fa579:"Model Error Rate",k_07hvn81:"Average Model Latency",k_03e5hqz:"Day-over-day",k_13qhqgp:"No Data",k_0004138:"times",k_003nzwy:"Status",k_003s37t:"Environment",k_003twt9:"Production",k_17bw8lt:"Production Environment",k_0fwgfbc:"Usage Overview",k_0bycnor:"End Time",k_0mvqrk5:"Select a node on the left to view details",k_0ld10w7:"Select a time range",k_1gd9xqm:"Last 12 Hours",k_0vd4sg9:"Last 15 Minutes",k_126g2v0:"Last 1 Hour",k_1gd9wh7:"Last 24 Hours",k_0vd6ff2:"Last 30 Minutes",k_126g2vv:"Last 6 Hours",k_03g9k26:"Last 3 Days",k_03g9k5m:"Last 7 Days",k_002uzrd:"Preview",k_17c63b9:"Preview Environment"}},Ja=$t,en=Jt,tn=Wa,an=Ga;export{Ja as A,tn as T,an as a,en as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.agent-obs-loading{position:relative;width:100%}.agent-obs-loading-content{width:100%}.agent-obs-loading-mask{position:absolute;top:0;left:0;right:0;bottom:0;background-color:#fff9;transition:opacity .3s ease-in;z-index:10;display:flex;justify-content:center;align-items:center}.agent-obs-loading-mask--hidden{opacity:0;pointer-events:none}.agent-obs-empty{width:100%;height:100%;position:relative}.agent-obs-empty-bg{height:100%;padding-top:3px;display:flex;justify-content:center;align-items:center}.agent-obs-empty-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#fff;padding:4px;font-size:12px;color:#888;line-height:1.4}.agent-obs-filter{margin-bottom:10px}.agent-obs-filter-body{position:relative}.agent-obs-filter-tip{position:absolute;right:20px;top:30px;transform:translateY(-50%)}@keyframes agent-obs-filter-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.agent-obs-filter-refresh:hover{background-color:#fff!important}.agent-obs-filter-refresh--rotating{animation:agent-obs-filter-rotate 1s linear infinite}.agent-obs-traces-filter{margin-bottom:20px}.agent-obs-traces-filter .filter-actions{display:inline-flex;align-items:center;gap:8px;flex-wrap:nowrap}.agent-obs-traces-filter .traces-filter-search{width:280px!important}.agent-obs-traces-filter .quick-date-picker{display:inline-flex;align-items:center}.agent-obs-traces-filter .quick-date-picker .time-range-picker [class*=-datetimepicker__input][class*=-datepicker__input--range]{width:315px}.agent-obs-overview{margin-bottom:10px;min-height:160px}.agent-obs-overview-title{font-size:14px;font-weight:600;color:#000;margin-bottom:16px}.agent-obs-overview-grid{position:relative;display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px 0}.agent-obs-overview-grid--loading .agent-obs-overview-cell{visibility:hidden}.agent-obs-overview-loading-mask{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.agent-obs-overview-cell{position:relative;display:flex;flex-direction:column;gap:8px;padding:0 24px}.agent-obs-overview-cell:after{content:"";position:absolute;right:0;top:8px;bottom:8px;width:1px;background-color:#e5e5e5}.agent-obs-overview-cell:last-child:after{display:none}.agent-obs-overview-cell:first-child{padding-left:0}.agent-obs-overview-label{font-size:14px;color:#000;line-height:1.4}.agent-obs-overview-value-row{display:flex;align-items:baseline}.agent-obs-overview-value{font-size:24px;font-weight:500;color:#000;line-height:1.2}.agent-obs-overview-unit{font-size:14px;color:#888;margin-left:2px}.agent-obs-overview-delta{font-size:12px;line-height:1.4}.agent-obs-overview-delta-label{color:#888;margin-right:6px}.agent-obs-overview-delta-value--up{color:#16a34a}.agent-obs-overview-delta-value--down{color:#e54545}.agent-obs-overview-delta-value--flat{color:#888}.agent-obs-card-body{padding:24px}.agent-obs-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px}.agent-obs-card-titlebox{display:flex;flex-direction:column;gap:6px}.agent-obs-card-title{font-size:14px;font-weight:600;color:#000;line-height:1.4}.agent-obs-card-unit{font-size:12px;color:#888;line-height:1.4}.agent-obs-card-jump{cursor:pointer;display:flex;align-items:center;color:#000}.agent-obs-card-link{text-decoration:none;color:inherit;display:block}.agent-obs-card-chart{margin-top:8px}.agent-obs-card-empty{width:100%;display:flex;justify-content:center;align-items:center}.agent-obs-traces-wrapper{background-color:#fff;padding:16px 20px}.agent-obs-traces-table [class*=-table__header] [class*=-dropdown-filter]{display:flex;align-items:center;padding:0}.agent-obs-traces-table [class*=-table__header] [class*=-dropdown-filter] .ruyi-icon.ruyi-icon-filter{position:static;margin-left:4px;flex:0 0 auto}.agent-obs-traces-trace-id{color:var(--tea-color-text-brand-default, #006eff);cursor:pointer;text-decoration:none}.agent-obs-traces-trace-id:hover{color:var(--tea-color-text-brand-hover, #006eff);text-decoration:none}.agent-obs-traces-trace-id:visited{color:var(--tea-color-text-brand-default, #006eff)}.agent-obs-traces-env--production{background-color:#e8f5ec;color:#16a34a}.agent-obs-traces-env--preview{background-color:#e8f1ff;color:#006eff}.agent-obs-traces-status--success{color:var(--tea-color-text-success-default, #16a34a)}.agent-obs-traces-status--failed,.agent-obs-traces-status--timeout{color:var(--tea-color-text-error-default, #e54545)}.agent-obs-traces-status--running{color:var(--tea-color-text-weak, #888)}.agent-obs-td-drawer [class$=-drawer__body-inner],.agent-obs-td-drawer [class*="-drawer__body-inner "]{height:100%!important}.agent-obs-td-drawer>[class$=-drawer__body],.agent-obs-td-drawer>[class*="-drawer__body "]{padding-top:0!important;padding-left:0!important;padding-right:0!important}.agent-obs-td-drawer [class$=-tabs__tabitem],.agent-obs-td-drawer [class*="-tabs__tabitem "]{margin-right:0!important;line-height:30px!important}.agent-obs-td-drawer-tabs{margin-bottom:12px}.agent-obs-td-drawer-close{flex:0 0 auto;border:none;background:transparent;cursor:pointer;color:#888;padding:8px;display:inline-flex;align-items:center;justify-content:center;border-radius:4px;transition:background .15s}.agent-obs-td-drawer-close:hover{background:#f0f2f5;color:#000}.agent-obs-td-drawer-body{display:flex;height:100%;min-height:0}.agent-obs-td-drawer-left{width:480px;border-right:1px solid #e5e5e5;display:flex;flex-direction:column;min-height:0;overflow:hidden;height:100%}.agent-obs-td-drawer-view{flex:1 1 auto;min-height:0;overflow:auto}.agent-obs-td-drawer-view--graph{overflow:hidden}.agent-obs-td-drawer-right{flex:1;height:100%;overflow:auto;padding:20px 24px;background:#fff;position:relative}.agent-obs-td-drawer-loading,.agent-obs-td-drawer-error,.agent-obs-td-drawer-empty{padding:60px 16px;display:flex;justify-content:center;align-items:center;color:#888;font-size:13px;width:100%}.agent-obs-td-tree{display:flex;flex-direction:column;font-size:13px;color:#000}.agent-obs-td-tree-row{display:flex;align-items:center;height:32px;box-sizing:border-box;padding:0 8px 0 0;cursor:pointer;border-radius:4px;position:relative}.agent-obs-td-tree-row:hover .agent-obs-td-tree-row-content{background:#f0f2f5}.agent-obs-td-tree-row--active .agent-obs-td-tree-row-content{background:#eef3ff}.agent-obs-td-tree-row--active .agent-obs-td-tree-icon{color:#1c66e5}.agent-obs-td-tree-row--active .agent-obs-td-tree-name,.agent-obs-td-tree-row--active .agent-obs-td-tree-dur{color:#006eff}.agent-obs-td-tree-row--error .agent-obs-td-tree-name{color:#e54545}.agent-obs-td-tree-row-content{flex:1 1 auto;min-width:0;display:flex;align-items:center;height:100%;border-radius:4px}.agent-obs-td-tree-indent{position:relative;align-self:stretch;display:block}.agent-obs-td-tree-lines{display:block}.agent-obs-td-tree-control{position:absolute;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center}.agent-obs-td-tree-expander{width:16px;height:16px;border-radius:50%;background:#eceae7;color:#666;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .15s}.agent-obs-td-tree-expander:hover{background:#e0ddda}.agent-obs-td-tree-expander:not(.agent-obs-td-tree-expander--expanded){transform:rotate(-90deg)}.agent-obs-td-tree-leaf-dot{width:6px;height:6px;border-radius:50%;background:#a8a29e;display:inline-block}.agent-obs-td-tree-icon{flex:0 0 auto;display:inline-flex;color:#333;margin-left:6px;margin-right:8px}.agent-obs-td-tree-name{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.agent-obs-td-tree-dur{flex:0 0 auto;font-size:12px;color:#a8a29e;margin-left:auto;padding-left:12px;padding-right:8px;font-variant-numeric:tabular-nums}.agent-obs-td-timeline-wrapper{display:flex;flex-direction:column;font-size:13px}.agent-obs-td-timeline-axis{position:sticky;top:0;z-index:2;background:#fff;display:flex;align-items:center;gap:8px;border-bottom:1px solid #e5e5e5;padding:6px 8px;font-size:12px;color:#a8a29e}.agent-obs-td-timeline-axis-label{flex:0 0 200px}.agent-obs-td-timeline-axis-track{flex:1 1 auto;position:relative;display:flex;font-size:11px}.agent-obs-td-timeline-axis-dur{flex:0 0 70px;text-align:right}.agent-obs-td-timeline-axis-tick{flex:1 1 0}.agent-obs-td-timeline-axis-tick--start{text-align:left}.agent-obs-td-timeline-axis-tick--mid{text-align:center}.agent-obs-td-timeline-axis-tick--end{text-align:right}.agent-obs-td-timeline-row{display:flex;align-items:center;gap:8px;padding:6px 8px;cursor:pointer;border-radius:4px}.agent-obs-td-timeline-row:hover{background:#f0f2f5}.agent-obs-td-timeline-row--active{background:#eef3ff}.agent-obs-td-timeline-label{flex:0 0 200px;display:flex;align-items:center;gap:6px;overflow:hidden}.agent-obs-td-timeline-label-icon{flex:0 0 auto;display:inline-flex;color:#333}.agent-obs-td-timeline-label-op{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agent-obs-td-timeline-track{flex:1 1 auto;position:relative;height:16px}.agent-obs-td-timeline-track-line{position:absolute;left:0;right:0;top:50%;height:1px;background:#e9ecf1;transform:translateY(-50%)}.agent-obs-td-timeline-bar{position:absolute;top:50%;height:10px;transform:translateY(-50%);border-radius:2px;min-width:2px}.agent-obs-td-timeline-dur{flex:0 0 70px;font-size:12px;color:#a8a29e;text-align:right;font-variant-numeric:tabular-nums}.agent-obs-td-graph{position:relative;width:100%;height:100%;overflow:hidden;background:#fff;cursor:grab;-webkit-user-select:none;user-select:none}.agent-obs-td-graph--panning{cursor:grabbing}.agent-obs-td-graph-svg{display:block;width:100%;height:100%}.agent-obs-td-graph-toolbar{position:absolute;top:12px;right:16px;display:inline-flex;align-items:center;height:36px;padding:0 6px;background:#fff;border:1px solid #e5e5e5;border-radius:8px;box-shadow:0 2px 8px #0000000f;cursor:default;-webkit-user-select:none;user-select:none;z-index:2}.agent-obs-td-graph-toolbar-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:transparent;border:none;border-radius:4px;color:#000;font-size:18px;line-height:1;cursor:pointer;transition:background-color .15s}.agent-obs-td-graph-toolbar-btn:hover:not(:disabled){background:#f3f4f6}.agent-obs-td-graph-toolbar-btn:disabled{color:#cbd5e1;cursor:not-allowed}.agent-obs-td-graph-toolbar-percent{min-width:44px;padding:0 4px;color:#000;font-size:13px;font-variant-numeric:tabular-nums;text-align:center}.agent-obs-td-graph-toolbar-divider{width:1px;height:18px;margin:0 4px;background:#e5e5e5}.agent-obs-td-graph-toolbar-fit{color:#006eff}.agent-obs-td-graph-node{cursor:pointer}.agent-obs-td-graph-node-box{fill:#fff;stroke-width:2}.agent-obs-td-graph-node--AGENT .agent-obs-td-graph-node-box{stroke:#4e5ff2;fill:#eef0ff}.agent-obs-td-graph-node--CHAIN .agent-obs-td-graph-node-box,.agent-obs-td-graph-node--TOOL .agent-obs-td-graph-node-box{stroke:#16a34a;fill:#e9f6ef}.agent-obs-td-graph-node--LLM .agent-obs-td-graph-node-box{stroke:#7b61ff;fill:#f1edff}.agent-obs-td-graph-node--RETRIEVER .agent-obs-td-graph-node-box,.agent-obs-td-graph-node--RERANKER .agent-obs-td-graph-node-box{stroke:#0ea5e9;fill:#e6f4fb}.agent-obs-td-graph-node--EMBEDDING .agent-obs-td-graph-node-box{stroke:#f59e0b;fill:#fdf3e1}.agent-obs-td-graph-node--EVALUATOR .agent-obs-td-graph-node-box,.agent-obs-td-graph-node--GUARDRAIL .agent-obs-td-graph-node-box{stroke:#e54545;fill:#fde8e8}.agent-obs-td-graph-node--PROMPT .agent-obs-td-graph-node-box{stroke:#8b5cf6;fill:#f1edff}.agent-obs-td-graph-node--UNKNOWN .agent-obs-td-graph-node-box{stroke:#a8a29e;fill:#f6f7f9}.agent-obs-td-graph-node--error .agent-obs-td-graph-node-box{stroke:#e54545!important}.agent-obs-td-graph-node--active .agent-obs-td-graph-node-box{stroke-width:3}.agent-obs-td-graph-node-op{font-size:13px;font-weight:500;fill:#000}.agent-obs-td-graph-node-dur{font-size:12px;fill:#a8a29e}.agent-obs-td-graph-node--LLM .agent-obs-td-graph-node-op{fill:#7b61ff}.agent-obs-td-graph-edge{stroke:#a8a29e;stroke-width:1.5;fill:none}.agent-obs-td-graph-edge--dashed{stroke-dasharray:4 4;stroke:#7b61ff;opacity:.7}.agent-obs-td-graph-edge-label{font-size:11px;fill:#a8a29e}.agent-obs-td-detail{font-size:13px;color:#000}.agent-obs-td-detail-empty{padding:40px 16px;color:#888;font-size:13px;text-align:center}.agent-obs-td-detail-header{display:flex;align-items:center;gap:8px;margin-bottom:14px}.agent-obs-td-detail-header-icon{flex:0 0 auto;display:inline-flex;color:#7b61ff}.agent-obs-td-detail-header-title{flex:1 1 auto;font-size:16px;font-weight:600;color:#000;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agent-obs-td-detail-badge{flex:0 0 auto;padding:2px 10px;border-radius:10px;font-size:12px;font-weight:500}.agent-obs-td-detail-badge--ok{background:#d7f7e3;color:#16a34a}.agent-obs-td-detail-badge--error{background:#fdd7d7;color:#e54545}.agent-obs-td-detail-metrics{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:14px}.agent-obs-td-detail-metric{background:#f5f6f8;border-radius:4px;padding:10px 12px;min-width:0}.agent-obs-td-detail-metric-label{font-size:12px;color:#888;line-height:1.4;margin-bottom:2px}.agent-obs-td-detail-metric-value{font-size:14px;font-weight:500;color:#000;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agent-obs-td-detail-info{background-color:#f3f4f7;padding:15px 30px;display:flex;gap:20px;flex-direction:column;margin:0 -24px}.agent-obs-td-detail-pills{display:flex;flex-wrap:wrap;gap:16px}.agent-obs-td-detail-pill{display:inline-flex;align-items:center;gap:8px;background:#d6d3d1;border-radius:4px;padding:4px 10px;font-size:12px;max-width:100%;overflow:hidden}.agent-obs-td-detail-pill-label{color:#888;flex:0 0 auto}.agent-obs-td-detail-pill-value{color:#000;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}.agent-obs-td-detail-io{padding:12px 14px;background-color:#fff}.agent-obs-td-detail-io-title{font-size:12px;color:#888;margin-bottom:8px}.agent-obs-td-detail-io-title--error{color:#e54545}.agent-obs-td-detail-io-content{font-size:13px;color:#000;white-space:pre-wrap;word-break:break-word;max-height:180px;overflow:auto;font-family:Menlo,Consolas,Courier New,monospace;line-height:1.5;margin:0}.agent-obs-td-detail-io-empty{color:#888;font-family:inherit}.agent-obs-td-detail-attrs-wrap{margin-top:16px;padding-top:8px}.agent-obs-td-detail-attrs{display:flex;flex-direction:column}.agent-obs-td-detail-attrs-empty{padding:16px;font-size:12px;color:#888}.agent-obs-td-detail-attrs-loading{padding:24px 16px;display:flex;align-items:center;justify-content:center}.agent-obs-td-detail-attr{border-bottom:1px solid #e5e5e5;padding:8px 0}.agent-obs-td-detail-attr:last-child{border-bottom:none}.agent-obs-td-detail-attr-main{display:flex;align-items:flex-start;gap:8px;font-size:12px;font-family:Menlo,Consolas,Courier New,monospace}.agent-obs-td-detail-attr-caret{flex:0 0 14px;width:14px;height:14px;display:inline-flex;align-items:center;justify-content:center;color:#a8a29e;font-size:8px;cursor:pointer;transition:transform .15s;margin-top:2px}.agent-obs-td-detail-attr-caret--placeholder{cursor:default;visibility:hidden}.agent-obs-td-detail-attr-caret--expanded{transform:rotate(90deg)}.agent-obs-td-detail-attr-key{flex:0 0 280px;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#000}.agent-obs-td-detail-attr-value{flex:1 1 auto;min-width:0;color:#000;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agent-obs-td-detail-attr-value--expanded{white-space:pre-wrap;word-break:break-word;overflow:visible}.agent-obs-td-detail-attr-json{margin:8px 0 0 22px;padding:10px 12px;background:#f5f6f8;border-radius:4px;font-size:12px;color:#000;font-family:Menlo,Consolas,Courier New,monospace;white-space:pre;overflow:auto;max-height:300px}.hljs{background:transparent}.hljs .hljs-attr{color:#0550ae}.hljs .hljs-string{color:#0a7b30}.hljs .hljs-number,.hljs .hljs-literal{color:#cf222e}.hljs .hljs-punctuation{color:#57606a}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as c,j as n,R as y}from"./react-hnpCyKql.js";import{i as I,g as E,L as f,N as m,M as h}from"./tea-Slf_ajmf.js";import{a as w,T as b,A as O,b as M}from"./agent-obs-
|
|
1
|
+
import{r as c,j as n,R as y}from"./react-hnpCyKql.js";import{i as I,g as E,L as f,N as m,M as h}from"./tea-Slf_ajmf.js";import{a as w,T as b,A as O,b as M}from"./agent-obs-Dvi4IpEy.js";import{c as F}from"./react-dom-ZzBHVjtL.js";import"./moment-BYRO94Ou.js";import"./highlight-ClXAL37H.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const l of i.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&r(l)}).observe(document,{childList:!0,subtree:!0});function s(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(o){if(o.ep)return;o.ep=!0;const i=s(o);fetch(o.href,i)}})();const x="edgeone_studio_lang",T=["zh","en"];function P(){try{const t=window.localStorage.getItem(x);if(t&&T.includes(t))return t}catch{}return(navigator.language||"").toLowerCase().startsWith("zh")?"zh":"en"}const p=P();window.VERSION=p;const _=w[p]||w.zh||{};I.init({translation:_});const C=new Set;function A(e){return C.add(e),()=>C.delete(e)}function k(e){if(!T.includes(e)||e===S)return;const t=E();if(!t){try{window.localStorage.setItem(x,e)}catch{}window.location.reload();return}const s=w[e]||{};t.addResourceBundle(e,"translation",s,!0,!0),t.changeLanguage(e);try{window.localStorage.setItem(x,e)}catch{}S=e,C.forEach(r=>r(e))}let S=p;window.__EDGEONE_STUDIO_SWITCH_LANG__=k;const N=["/agent-metrics","/agent-traces","/agent-studio"],B="/agent-metrics";function v(){try{const e=window.location.pathname;for(const t of N)if(e===t||e.startsWith(`${t}/`))return t}catch{}return B}function j(){return`${v()}/v1`}async function z(e){const t=new URLSearchParams;t.set("limit",String(e.pageSize??10)),t.set("offset",String(((e.pageIndex??1)-1)*(e.pageSize??10))),e.keyword&&t.set("keyword",e.keyword),e.statuses&&e.statuses.length===1&&t.set("statusGroup",e.statuses[0]),e.timeRange&&t.set("timeRange",e.timeRange),e.customRange&&(t.set("startedAtMin",String(e.customRange[0].valueOf())),t.set("startedAtMax",String(e.customRange[1].valueOf())));const s=await fetch(`${j()}/traces.list?${t.toString()}`);if(!s.ok)throw new Error(`fetch traces failed: ${s.status}`);const r=await s.json();return{rows:r.Traces||[],pagination:{pageIndex:e.pageIndex??1,pageSize:e.pageSize??10,total:r.Total??0}}}const L="agent.request:";function U(e){var t;return(t=e==null?void 0:e.Spans)!=null&&t.length?{...e,Spans:e.Spans.map(s=>({...s,...typeof s.OperationName=="string"&&s.OperationName.startsWith(L)?{OperationName:s.OperationName.slice(L.length)}:{}}))}:e}async function D(e){const t=await fetch(`${j()}/traces/${encodeURIComponent(e)}.detail`);if(!t.ok)throw new Error(`fetch trace detail failed: ${t.status}`);const s=await t.json();return U(s)}async function W(e={}){const t=new URLSearchParams;e.timeRange&&t.set("timeRange",e.timeRange),e.startTimeMs&&t.set("startedAtMin",String(e.startTimeMs)),e.endTimeMs&&t.set("startedAtMax",String(e.endTimeMs));const s=await fetch(`${j()}/metrics?${t.toString()}`);if(!s.ok)throw new Error(`fetch metrics failed: ${s.status}`);return s.json()}const $={overview:"/agent-metrics",traces:"/agent-traces"},H={"/agent-metrics":"overview","/agent-traces":"traces","/agent-studio":"overview"},G={environment:"all",timeRange:"24hour",customRange:null,statuses:[],keyword:"",pageIndex:1,pageSize:10};function R(){try{return H[v()]??"overview"}catch{return"overview"}}function V(e){try{const t=$[e];if(v()===t)return;const r=new URL(window.location.href);r.pathname=t,window.history.pushState({tab:e},"",r.toString())}catch{}}function X({initialLang:e}){const[t,s]=c.useState(()=>R()),[r,o]=c.useState(e);c.useEffect(()=>A(o),[]);const[i,l]=c.useState(!1),[a,d]=c.useState(null),g=c.useCallback(u=>{s(u),V(u)},[]);return c.useEffect(()=>{const u=()=>s(R());return window.addEventListener("popstate",u),()=>window.removeEventListener("popstate",u)},[]),n.jsxs(f,{className:"agent-studio-app",children:[n.jsx(m,{left:n.jsx(m.Item,{type:"logo",children:n.jsx(K,{})}),right:n.jsx(m.Item,{type:"default",children:n.jsx(Z,{current:r})})}),n.jsxs(f.Body,{children:[n.jsx(f.Sider,{children:n.jsx(h,{theme:"dark",children:n.jsxs(h.Group,{title:"Observability",children:[n.jsx(h.Item,{title:"Agent Metrics",icon:n.jsx(Q,{}),selected:t==="overview",onClick:()=>g("overview")}),n.jsx(h.Item,{title:"Agent Traces",icon:n.jsx(Y,{}),selected:t==="traces",onClick:()=>g("traces")})]})})}),n.jsxs(f.Content,{children:[t==="overview"&&n.jsx(J,{}),t==="traces"&&n.jsx(q,{onRowClick:u=>{d(u.TraceId),l(!0)}})]},r)]}),n.jsx(b,{visible:i,traceId:a,fetchDetail:u=>D(u),onClose:()=>l(!1)})]})}function K(){return n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[n.jsxs("svg",{width:"28",height:"28",viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":!0,children:[n.jsx("path",{d:"M27.7784 16.4944C27.924 15.6849 28 14.8513 28 14C28 13.2803 27.9457 12.5734 27.841 11.8829C27.8005 11.6162 27.5679 11.424 27.2981 11.424H18.2935C17.999 11.424 17.7846 11.1446 17.8608 10.86L18.9267 6.88207C19.0054 6.58829 19.2716 6.384 19.5758 6.384H24.9239C25.2793 6.384 25.4903 5.99169 25.2795 5.70554C22.7306 2.24513 18.6275 0 14 0C6.26801 0 0 6.26801 0 14C0 17.5202 1.29921 20.7369 3.44429 23.1969C3.67271 23.4588 4.0922 23.3504 4.18175 23.0146L7.27934 11.3986C7.33622 11.1853 7.17545 10.976 6.95468 10.976H4.26421C3.96986 10.976 3.75549 10.697 3.83134 10.4126L4.70485 7.13693C4.77038 6.89118 4.99334 6.72137 5.24762 6.7161C8.17874 6.65542 11.0752 5.88815 13.647 4.4841C13.9129 4.33898 14.2342 4.58196 14.1561 4.87457L8.45823 26.2418C8.37314 26.5608 8.53186 26.8961 8.83881 27.0179C10.4359 27.6517 12.1773 28 14 28C18.4191 28 22.3599 25.9526 24.9257 22.7546C25.153 22.4713 24.9444 22.064 24.5811 22.064H15.4425C15.148 22.064 14.9336 21.7846 15.0098 21.5L16.0757 17.5221C16.1544 17.2283 16.4207 17.024 16.7248 17.024H27.1324C27.4479 17.024 27.7226 16.8049 27.7784 16.4944Z",fill:"url(#edgeone-logo-grad)"}),n.jsx("defs",{children:n.jsxs("linearGradient",{id:"edgeone-logo-grad",x1:"4.816",y1:"2.352",x2:"22.288",y2:"23.184",gradientUnits:"userSpaceOnUse",children:[n.jsx("stop",{stopColor:"#00DDFF"}),n.jsx("stop",{offset:"1",stopColor:"#0C60F2"})]})})]}),n.jsx("span",{style:{fontFamily:"Oxygen, system-ui, -apple-system, sans-serif",fontSize:18,fontWeight:700,color:"#FFFFFF",letterSpacing:"-0.18px",lineHeight:1.33},children:"EdgeOne Makers"})]})}function Q(){return n.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:[n.jsx("path",{d:"M2.5 2.5V15.8333C2.5 16.2754 2.67559 16.6993 2.98816 17.0118C3.30072 17.3244 3.72464 17.5 4.16667 17.5H17.5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),n.jsx("path",{d:"M15 14.1667V7.5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),n.jsx("path",{d:"M10.8335 14.1667V4.16675",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),n.jsx("path",{d:"M6.6665 14.1667V11.6667",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]})}function Y(){return n.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",children:[n.jsx("path",{d:"M2.06202 12.3481C1.97868 12.1236 1.97868 11.8766 2.06202 11.6521C2.87372 9.68397 4.25153 8.00116 6.02079 6.81701C7.79004 5.63287 9.87106 5.00073 12 5.00073C14.129 5.00073 16.21 5.63287 17.9792 6.81701C19.7485 8.00116 21.1263 9.68397 21.938 11.6521C22.0214 11.8766 22.0214 12.1236 21.938 12.3481C21.1263 14.3163 19.7485 15.9991 17.9792 17.1832C16.21 18.3674 14.129 18.9995 12 18.9995C9.87106 18.9995 7.79004 18.3674 6.02079 17.1832C4.25153 15.9991 2.87372 14.3163 2.06202 12.3481Z",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),n.jsx("circle",{cx:"12",cy:"12",r:"3",stroke:"currentColor",strokeWidth:"2"})]})}function Z(e){const t=s=>{s!==e.current&&k(s)};return n.jsx("div",{style:{display:"inline-flex",gap:2,padding:2,background:"rgba(255, 255, 255, 0.08)",borderRadius:6,fontSize:12},children:["zh","en"].map(s=>{const r=s===e.current;return n.jsx("button",{onClick:()=>t(s),style:{border:"none",padding:"3px 12px",borderRadius:4,cursor:r?"default":"pointer",background:r?"#FFFFFF":"transparent",color:r?"#000000":"rgba(255, 255, 255, 0.55)",fontWeight:r?600:400,transition:"background-color 0.15s ease, color 0.15s ease"},children:s==="zh"?"中":"EN"},s)})})}function J(){const[e,t]=c.useState([]),[s,r]=c.useState([]),[o,i]=c.useState(!0),l=c.useCallback(a=>{i(!0);const d=a==null?void 0:a.customRange;return W({environment:a==null?void 0:a.environment,timeRange:d?null:a==null?void 0:a.timeRange,startTimeMs:d?d[0].valueOf():null,endTimeMs:d?d[1].valueOf():null}).then(g=>{t(g.overview),r(g.charts)}).finally(()=>i(!1))},[]);return c.useEffect(()=>{l()},[l]),n.jsxs(n.Fragment,{children:[n.jsx(f.Content.Header,{showBackButton:!1,title:"Metrics"}),n.jsx(f.Content.Body,{full:!0,children:n.jsx("div",{style:{padding:16},children:n.jsx(O,{overview:e,charts:s,loading:o,onFilterChange:a=>{l(a)},onRefresh:l})})})]})}function q(e){const[t,s]=c.useState([]),[r,o]=c.useState({pageIndex:1,pageSize:10,total:0}),[i,l]=c.useState(!0),a=c.useCallback(d=>(l(!0),z(d).then(g=>{s(g.rows),o(g.pagination)}).finally(()=>l(!1))),[]);return c.useEffect(()=>{a(G)},[a]),n.jsxs(n.Fragment,{children:[n.jsx(f.Content.Header,{showBackButton:!1,title:"Traces"}),n.jsx(f.Content.Body,{full:!0,children:n.jsx("div",{style:{padding:16},children:n.jsx(M,{rows:t,pagination:r,loading:i,onQueryChange:d=>{a(d)},onRefresh:a,onRowClick:e.onRowClick})})})]})}F.createRoot(document.getElementById("root")).render(n.jsx(y.StrictMode,{children:n.jsx(X,{initialLang:p})}));
|
|
@@ -14,15 +14,15 @@
|
|
|
14
14
|
background: #f7f8fa;
|
|
15
15
|
}
|
|
16
16
|
</style>
|
|
17
|
-
<script type="module" crossorigin src="./assets/index-
|
|
17
|
+
<script type="module" crossorigin src="./assets/index-DD3d108t.js"></script>
|
|
18
18
|
<link rel="modulepreload" crossorigin href="./assets/react-hnpCyKql.js">
|
|
19
19
|
<link rel="modulepreload" crossorigin href="./assets/react-dom-ZzBHVjtL.js">
|
|
20
20
|
<link rel="modulepreload" crossorigin href="./assets/moment-BYRO94Ou.js">
|
|
21
21
|
<link rel="modulepreload" crossorigin href="./assets/tea-Slf_ajmf.js">
|
|
22
22
|
<link rel="modulepreload" crossorigin href="./assets/highlight-ClXAL37H.js">
|
|
23
|
-
<link rel="modulepreload" crossorigin href="./assets/agent-obs-
|
|
23
|
+
<link rel="modulepreload" crossorigin href="./assets/agent-obs-Dvi4IpEy.js">
|
|
24
24
|
<link rel="stylesheet" crossorigin href="./assets/tea-CADagUwM.css">
|
|
25
|
-
<link rel="stylesheet" crossorigin href="./assets/agent-obs-
|
|
25
|
+
<link rel="stylesheet" crossorigin href="./assets/agent-obs-qDJCE0TQ.css">
|
|
26
26
|
<link rel="stylesheet" crossorigin href="./assets/index-Cz5oQnXW.css">
|
|
27
27
|
</head>
|
|
28
28
|
<body>
|
package/package.json
CHANGED
|
Binary file
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{r as at}from"./react-hnpCyKql.js";import{r as nt,a as rt,l as lt,b as ut}from"./tea-Slf_ajmf.js";import{r as st}from"./moment-BYRO94Ou.js";import{c as ot,j as it}from"./highlight-ClXAL37H.js";var h=at,v=rt,i=nt,$e=lt,Be=ut,ct=st,dt=ot,mt=it;function ce(e){return e&&e.__esModule?e:{default:e}}var a=ce(h),q=ce(ct),Ke=ce(dt),ft=ce(mt);function G(e){return String(e).padStart(2,"0")}function xe(e){const t=new Date(e);return`${G(t.getMonth()+1)}-${G(t.getDate())} ${G(t.getHours())}:${G(t.getMinutes())}:${G(t.getSeconds())}`}function Ve(e){const t=typeof e=="number"?e:Number(String(e).trim());return Number.isFinite(t)?t>=1e12?xe(t):t>=1e9?xe(t*1e3):String(e):String(e)}function gt({dataSource:e,color:t="#5B9DFF",...n}){const r=e.map(u=>Ve(u.Name)),l=[{data:e.map(u=>u.Data)}];return a.default.createElement(Be.CoreLine,{...n,color:[t],grid:{show:!0,left:0,right:0,top:16,bottom:0},xAxis:{data:r,axisLine:{show:!1,lineStyle:{}},axisTick:{show:!1},axisLabel:{color:"#9CA3AF",margin:10},splitLine:{show:!1}},yAxis:{axisLine:{show:!1,lineStyle:{}},axisTick:{show:!1},axisLabel:{color:"#9CA3AF",formatter:u=>`${u} `},splitLine:{show:!0}},series:l})}function ht({dataSource:e,color:t,...n}){const r=Array.from(new Set(e.map(o=>Ve(o.Name)))),u=Array.from(new Set(e.map(o=>o.Type))).map(o=>({name:o,data:e.filter(s=>s.Type===o).map(s=>s.Data)}));return a.default.createElement(Be.CompareLine,{...n,color:t,grid:{show:!0,left:0,right:0,top:16,bottom:0},xAxis:{data:r,axisLine:{show:!1,lineStyle:{}},axisTick:{show:!1},axisLabel:{color:"#9CA3AF",margin:10},splitLine:{show:!1}},yAxis:{axisLine:{show:!1,lineStyle:{}},axisTick:{show:!1},axisLabel:{color:"#9CA3AF",formatter:o=>`${o} `},splitLine:{show:!0}},series:u})}function Pe({children:e,loading:t}){return a.default.createElement("div",{className:"agent-obs-loading"},a.default.createElement("div",{className:"agent-obs-loading-content"},e),a.default.createElement("div",{className:`agent-obs-loading-mask${t?"":" agent-obs-loading-mask--hidden"}`},a.default.createElement(v.Icon,{type:"loading"})))}function pt(){return a.default.createElement("svg",{width:"550",height:"181",viewBox:"0 0 550 181",fill:"none",xmlns:"http://www.w3.org/2000/svg"},a.default.createElement("line",{y1:"90.5",x2:"550",y2:"90.5",stroke:"#F0F0F0"}),a.default.createElement("line",{y1:"180.5",x2:"550",y2:"180.5",stroke:"#F0F0F0"}),a.default.createElement("line",{y1:"0.5",x2:"550",y2:"0.5",stroke:"#F0F0F0"}))}function Et(){return a.default.createElement("div",{className:"agent-obs-empty"},a.default.createElement("div",{className:"agent-obs-empty-bg"},a.default.createElement(pt,null)),a.default.createElement("div",{className:"agent-obs-empty-text"},i.t("暂无数据")))}var Le=260;function vt({title:e,unit:t,data:n,jumpTo:r,loading:l,isMultiLine:u,openInNewTab:o}){const s=!l&&(!n||n.length===0),c=a.default.createElement("div",{className:"agent-obs-card-header"},a.default.createElement("div",{className:"agent-obs-card-titlebox"},a.default.createElement("div",{className:"agent-obs-card-title"},e),t&&a.default.createElement("div",{className:"agent-obs-card-unit"},t)),r&&a.default.createElement("div",{className:"agent-obs-card-jump"},a.default.createElement($e.ChevronRightIcon,{size:24}))),m=r?a.default.createElement("a",{className:"agent-obs-card-link",href:r,target:o?"_blank":void 0,rel:o?"noopener noreferrer":void 0},c):c,d=()=>{if(!n||n.length===0)return a.default.createElement("div",{className:"agent-obs-card-empty",style:{height:Le}},s?a.default.createElement(Et,null):null);const f=u?ht:gt;return a.default.createElement(f,{height:Le,smooth:!0,size:2,dataSource:n})};return a.default.createElement(v.Card,{className:"agent-obs-card",bordered:!1},a.default.createElement(v.Card.Body,{className:"agent-obs-card-body"},m,a.default.createElement("div",{className:"agent-obs-card-chart"},a.default.createElement(Pe,{loading:l},d()))))}var je={agent_call:"Agent 调用",agent_call_chart:"Agent 调用",agent_success_rate:"Agent 成功率",agent_success_rate_chart:"Agent 成功率",llm_call:"LLM 调用",llm_call_chart:"LLM 调用",llm_avg_latency:"LLM 调用平均耗时",llm_avg_latency_chart:"LLM 调用平均耗时",token_total:"Token 总消耗",token_total_chart:"Token 总消耗",avg_token_per_llm:"平均 Token/LLM 调用",avg_token_per_llm_chart:"平均 Token/LLM 调用"},Fe={agent_call:"次",agent_call_chart:"次",agent_success_rate:"%",agent_success_rate_chart:"%",llm_call:"次",llm_call_chart:"次",llm_avg_latency:"s",llm_avg_latency_chart:"s"};function _e(e){if(e)return i.t(e)}function qe(e,t){return _e(je[e]||t)||e}function ye(e,t){return e in je?_e(Fe[e]):_e(Fe[e]||t)}function bt(e,t){if(e===0)return"flat";const n=e>0;return((t??"higherIsBetter")==="higherIsBetter"?n:!n)?"up":"down"}function X(e){const t=typeof e=="number"?e:Number(e.trim());if(!Number.isFinite(t))return String(e);const n=t.toFixed(2).replace(/\.00$/,"").replace(/(\.\d)0$/,"$1");return n==="-0"?"0":n}var kt=new Set(["token_total","avg_token_per_llm"]);function _t(e){const t=typeof e.Value=="number"?e.Value:Number(e.Value.trim());return Number.isFinite(t)&&t===0?{valueText:"-"}:!kt.has(e.Key)||!Number.isFinite(t)?{valueText:X(e.Value),unit:ye(e.Key,e.Unit)}:t>=1e8?{valueText:X(t/1e8),unit:i.t("亿")}:t>=1e4?{valueText:X(t/1e4),unit:i.t("万")}:{valueText:X(e.Value),unit:ye(e.Key,e.Unit)}}function yt(){return[{Key:"agent_call",Label:i.t("Agent 调用"),Value:"-"},{Key:"agent_success_rate",Label:i.t("Agent 成功率"),Value:"-",Unit:"%"},{Key:"llm_call",Label:i.t("LLM 调用"),Value:"-"},{Key:"llm_avg_latency",Label:i.t("LLM 调用平均耗时"),Value:"-",Unit:"s"},{Key:"token_total",Label:i.t("Token 总消耗"),Value:"-"},{Key:"avg_token_per_llm",Label:i.t("平均 Token/LLM 调用"),Value:"-"}]}var Ct=new Set(["agent_success_rate","llm_avg_latency"]);function Nt({item:e}){const t=typeof e.Yoy=="number"&&!Ct.has(e.Key),{valueText:n,unit:r}=_t(e);return a.default.createElement("div",{className:"agent-obs-overview-cell"},a.default.createElement("div",{className:"agent-obs-overview-label"},qe(e.Key,e.Label)),a.default.createElement("div",{className:"agent-obs-overview-value-row"},a.default.createElement("span",{className:"agent-obs-overview-value"},n),r&&a.default.createElement("span",{className:"agent-obs-overview-unit"},r)),t&&a.default.createElement("div",{className:"agent-obs-overview-delta"},a.default.createElement("span",{className:"agent-obs-overview-delta-label"},i.t("日同比")),a.default.createElement("span",{className:`agent-obs-overview-delta-value agent-obs-overview-delta-value--${bt(e.Yoy,e.DeltaSemantic)}`},e.Yoy>0?"+":"",X(e.Yoy),"%")))}function wt({items:e,title:t,loading:n}){const l=!!e&&e.length>0?e:n?yt():[];if(l.length===0)return null;const u=!!n;return a.default.createElement(v.Card,{className:"agent-obs-overview",bordered:!1},a.default.createElement(v.Card.Body,null,a.default.createElement("div",{className:"agent-obs-overview-title"},t?i.t(t):i.t("用量概览")),a.default.createElement("div",{className:u?"agent-obs-overview-grid agent-obs-overview-grid--loading":"agent-obs-overview-grid"},l.map(o=>a.default.createElement(Nt,{key:o.Key,item:o})),u&&a.default.createElement("div",{className:"agent-obs-overview-loading-mask"},a.default.createElement(v.Icon,{type:"loading"})))))}function ze(e){const[t,n]=h.useState(!1),r=h.useCallback(()=>{t||(n(!0),e().catch(()=>{}).then(()=>n(!1)))},[t,e]);return{refreshing:t,trigger:r}}var de=7;function xt(){return[{value:"1hour",text:i.t("近1小时")},{value:"6hour",text:i.t("近6小时")},{value:"24hour",text:i.t("近24小时")},{value:"3day",text:i.t("近3天")},{value:"7day",text:i.t("近7天")}]}function Lt(){return[{value:"30min",text:i.t("近30分钟")},{value:"1hour",text:i.t("近1小时")},{value:"6hour",text:i.t("近6小时")},{value:"24hour",text:i.t("近24小时")},{value:"3day",text:i.t("近3天")},{value:"7day",text:i.t("近7天")}]}function Ft(e){const t=q.default();return{"1hour":[t.clone().subtract(1,"hour"),t.clone()],"6hour":[t.clone().subtract(6,"hours"),t.clone()],"24hour":[t.clone().subtract(24,"hours"),t.clone()],"3day":[t.clone().subtract(3,"days"),t.clone()],"7day":[t.clone().subtract(de,"days"),t.clone()]}[e]||null}function Mt(e){const t=q.default();return{"30min":[t.clone().subtract(30,"minutes"),t.clone()],"1hour":[t.clone().subtract(1,"hour"),t.clone()],"6hour":[t.clone().subtract(6,"hours"),t.clone()],"24hour":[t.clone().subtract(24,"hours"),t.clone()],"3day":[t.clone().subtract(3,"days"),t.clone()],"7day":[t.clone().subtract(de,"days"),t.clone()]}[e]||null}function Ue(e){const t=q.default(),n=t.clone().subtract(de,"days").startOf("day");return!(e.isAfter(t,"day")||e.isBefore(n,"day"))}function Ye(e,t){const n=q.default(),r=n.clone().subtract(de,"days"),l=n.format("YYYY-MM-DD"),u=r.format("YYYY-MM-DD"),o=e==null?void 0:e[t==="start"?0:1],s=o?o.format("YYYY-MM-DD"):l;return{disabledHours:()=>{const c=[];if(s===l)for(let m=n.hour()+1;m<=23;m++)c.push(m);if(s===u)for(let m=0;m<r.hour();m++)c.push(m);return c},disabledMinutes:c=>{const m=[];if(s===l&&c===n.hour())for(let d=n.minute()+1;d<=59;d++)m.push(d);if(s===u&&c===r.hour())for(let d=0;d<r.minute();d++)m.push(d);return m},disabledSeconds:(c,m)=>{const d=[];if(s===l&&c===n.hour()&&m===n.minute())for(let f=n.second()+1;f<=59;f++)d.push(f);if(s===u&&c===r.hour()&&m===r.minute())for(let f=0;f<r.second();f++)d.push(f);return d}}}var{RangePicker:Tt}=v.DatePicker,At=()=>e=>{const t=q.default();return{"15min":[t.clone().subtract(15,"minutes"),t.clone()],"1hour":[t.clone().subtract(1,"hour"),t.clone()],"6hour":[t.clone().subtract(6,"hours"),t.clone()],"12hour":[t.clone().subtract(12,"hours"),t.clone()],"24hour":[t.clone().subtract(24,"hours"),t.clone()]}[e]||null};function It(){return[{value:"15min",text:i.t("近15分钟")},{value:"1hour",text:i.t("近1小时")},{value:"6hour",text:i.t("近6小时")},{value:"12hour",text:i.t("近12小时")},{value:"24hour",text:i.t("近24小时")}]}var St=({onChange:e,defaultValue:t=null,defaultSegmentValue:n="15min",quickOptions:r=It(),rangeGenerator:l=At(),className:u,style:o,selectStyle:s,selectClassName:c,rangePickerStyle:m,rangePickerClassName:d,disabledDate:f,disabledTime:g,showTime:p={format:"HH:mm:ss",minuteStep:1,secondStep:1},placeholder:b=[i.t("开始时间"),i.t("结束时间")],selectPlaceholder:x=i.t("请选择时间范围")})=>{const[k,N]=h.useState(n),[M,A]=h.useState(()=>!t&&n?l(n):t);function B(F){const[S,V]=F;return r.reduce((z,Z)=>{const E=l(Z.value);if(E){const y=V.diff(S,"minutes"),C=E[1].diff(E[0],"minutes");if(Math.abs(y-C)<=1&&V.diff(q.default(),"minutes")<=1)return Z.value}return z},null)}const w=F=>{N(F);const S=l(F);S&&(A(S),e==null||e(S,F))},T=F=>{A(F);const S=B(F);N(S),e==null||e(F,S)};return a.default.createElement("div",{className:u,style:o},a.default.createElement(v.Select,{appearance:"button",options:r,value:k||void 0,onChange:w,placeholder:x,className:c,style:s,listWidth:130}),a.default.createElement(Tt,{showTime:p,value:M||void 0,onChange:T,disabledDate:f,disabledTime:g,placeholder:b,className:d,style:m}))},Ge=St;function We(){return[{value:"all",text:i.t("全部环境")},{value:"production",text:i.t("生产环境")},{value:"preview",text:i.t("预览环境")}]}function Rt({selectedEnvironment:e,selectedTimeRange:t,customRange:n,onEnvironmentChange:r,onTimeChange:l,refreshFunction:u}){const o=h.useMemo(We,[]),s=h.useMemo(Lt,[]),{refreshing:c,trigger:m}=ze(u),d=`${t||"custom"}-${n?n[0].valueOf():"null"}`;return a.default.createElement(v.Card,{className:"agent-obs-filter"},a.default.createElement(v.Card.Body,{className:"agent-obs-filter-body"},a.default.createElement(v.Space,{wrap:!0},a.default.createElement(v.Select,{appearance:"button",options:o,value:e,onChange:f=>r(f),listWidth:130}),a.default.createElement(Ge,{key:d,defaultSegmentValue:t,defaultValue:n,quickOptions:s,rangeGenerator:Mt,disabledDate:Ue,disabledTime:Ye,onChange:l,className:"quick-date-picker",selectClassName:"time-range-select",selectStyle:{marginRight:"-1px"},rangePickerClassName:"time-range-picker",showTime:{format:"HH:mm:ss",minuteStep:1,secondStep:1},placeholder:[i.t("开始时间"),i.t("结束时间")],selectPlaceholder:i.t("请选择时间范围")}),a.default.createElement(v.Button,{icon:"refresh",className:`agent-obs-filter-refresh${c?" agent-obs-filter-refresh--rotating":""}`,onClick:m}),a.default.createElement(v.Bubble,{content:i.t("数据延迟 < 10min")},a.default.createElement("span",{className:"agent-obs-filter-tip"},a.default.createElement($e.ErrorCircleIcon,null))))))}function Dt(e,t){const n=h.useRef(e);h.useEffect(()=>{const r=n.current;Object.keys(e).some(u=>r[u]!==e[u])&&(n.current=e,t==null||t(e))},[e])}var Ot={environment:"all",timeRange:"24hour",customRange:null};function $t({overview:e,charts:t,loading:n,defaultFilter:r,onFilterChange:l,onRefresh:u,columns:o=2}){const[s,c]=h.useState({...Ot,...r});Dt(s,l);const m=f=>c(g=>({...g,...f})),d=async()=>{u?await u(s):l==null||l(s)};return a.default.createElement("div",{className:"agent-obs"},a.default.createElement(Rt,{selectedEnvironment:s.environment,selectedTimeRange:s.timeRange,customRange:s.customRange,onEnvironmentChange:f=>m({environment:f}),onTimeChange:(f,g)=>{m(g?{timeRange:g,customRange:null}:{customRange:f,timeRange:null})},refreshFunction:d}),(n||e&&e.length>0)&&a.default.createElement(wt,{items:e,loading:n}),a.default.createElement(Bt,{charts:t??[],columns:o,loading:n}))}function Bt({charts:e,columns:t,loading:n}){const r=Math.max(1,Math.floor(24/t)),l=e.length>0?e:n?Kt():[],u=Vt(l,t);return a.default.createElement(a.default.Fragment,null,u.map((o,s)=>a.default.createElement(v.Row,{key:s},o.map((c,m)=>a.default.createElement(v.Col,{key:c.Key,span:r,style:m%2===0?{paddingLeft:0}:{paddingRight:0}},a.default.createElement(vt,{title:qe(c.Key,c.Title),unit:ye(c.Key,c.Unit),data:c.Series,isMultiLine:c.IsMultiLine,jumpTo:c.jumpTo,openInNewTab:c.openInNewTab,loading:n}))))))}function Kt(){return[{Key:"agent_call_chart",Title:i.t("Agent 调用"),Unit:i.t("次"),Series:[]},{Key:"agent_success_rate_chart",Title:i.t("Agent 成功率"),Unit:"%",Series:[]},{Key:"llm_call_chart",Title:i.t("LLM 调用"),Unit:i.t("次"),Series:[]},{Key:"llm_avg_latency_chart",Title:i.t("LLM 调用平均耗时"),Unit:"s",Series:[]},{Key:"token_total_chart",Title:i.t("Token 总消耗"),Series:[]},{Key:"avg_token_per_llm_chart",Title:i.t("平均 Token/LLM 调用"),Series:[]}]}function Vt(e,t){if(t<=0)return[e];const n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function Pt({environment:e,timeRange:t,customRange:n,keyword:r,onEnvironmentChange:l,onTimeChange:u,onKeywordChange:o,onSearchSubmit:s,refreshFunction:c}){const m=h.useMemo(We,[]),d=h.useMemo(xt,[]),{refreshing:f,trigger:g}=ze(c),p=`${t||"custom"}-${n?n[0].valueOf():"null"}`;return a.default.createElement(v.Card,{className:"filter-card agent-obs-traces-filter"},a.default.createElement(v.Card.Body,null,a.default.createElement(v.Justify,{className:"justify--grow-left",left:a.default.createElement(v.Space,{wrap:!0},a.default.createElement(v.Select,{appearance:"button",options:m,value:e,onChange:b=>l(b),className:"log-filter-select",listWidth:130}),a.default.createElement(Ge,{key:p,defaultSegmentValue:t,defaultValue:n,quickOptions:d,rangeGenerator:Ft,disabledDate:Ue,disabledTime:Ye,onChange:u,className:"quick-date-picker",selectClassName:"time-range-select",selectStyle:{marginRight:"-1px"},rangePickerClassName:"time-range-picker",showTime:{format:"HH:mm:ss",minuteStep:1,secondStep:1},placeholder:[i.t("开始时间"),i.t("结束时间")],selectPlaceholder:i.t("请选择时间范围")}),a.default.createElement(v.SearchBox,{style:{margin:"0px 10px"},className:"log-filter-search",placeholder:i.t("可根据 run-id 和 conversation-id 搜索"),value:r,onChange:b=>o(b),onSearch:b=>s(b||""),onPressEnter:()=>s(r),onClear:()=>{o(""),s("")}}),a.default.createElement(v.Button,{type:"primary",onClick:g,loading:f},i.t("刷新")))})))}var{filterable:jt,stylize:qt}=v.Table.addons,se="-";function zt(e){return{all:"",production:i.t("生产"),preview:i.t("预览"),dev:i.t("开发"),development:i.t("开发")}[e]||e}function Ce(e){return{success:i.t("成功"),failed:i.t("失败")}[e]}function Ut(){return[{value:"success",text:Ce("success")},{value:"failed",text:Ce("failed")}]}var Yt={environment:"all",timeRange:"1hour",customRange:null,statuses:[],keyword:"",pageIndex:1,pageSize:10};function Gt(e){return e.HasError?"failed":"success"}function Wt(e){return e??se}function Ht(e){return e?q.default(e).format("YYYY-MM-DD HH:mm:ss.SSS"):se}function Xt({rows:e,pagination:t,loading:n,onRowClick:r,onQueryChange:l,defaultQuery:u}){const o=h.useMemo(Ut,[]),[s,c]=h.useState({...Yt,...u}),m=(g,p=!0)=>{c(b=>{const x={...b,...g,...p?{pageIndex:1}:{}};return l==null||l(x),x})},d=h.useMemo(()=>[{key:"traceId",header:i.t("TraceId (run-id)"),width:260,render:g=>a.default.createElement("a",{className:"agent-obs-traces-trace-id",onClick:p=>{p.preventDefault(),r==null||r(g)},href:"#"},g.TraceId)},{key:"env",header:i.t("环境"),width:80,render:g=>{const p=g.Env||"all";if(p==="all")return se;const b=String(p).replace(/[^a-zA-Z0-9_-]/g,"-");return a.default.createElement(v.Badge,{className:`agent-obs-traces-env agent-obs-traces-env--${b}`},zt(p))}},{key:"status",header:i.t("状态"),width:100,render:g=>{const p=Gt(g);return a.default.createElement("span",{className:`agent-obs-traces-status agent-obs-traces-status--${p}`},Ce(p))}},{key:"totalTokens",header:i.t("Total Tokens"),width:140,render:g=>Wt(g.TotalToken)},{key:"durationMs",header:i.t("响应时间(秒)"),width:160,render:g=>g.DurationMs!=null?(Math.ceil(g.DurationMs/100)/10).toFixed(1):se},{key:"startTime",header:i.t("开始时间"),width:200,render:g=>Ht(g.StartTimeMs)}],[r]),f=()=>{if(n&&e.length===0)return a.default.createElement(v.StatusTip,{status:"loading"});if(!n&&e.length===0)return a.default.createElement(v.StatusTip,{status:"empty"})};return a.default.createElement("div",{className:"agent-obs-traces"},a.default.createElement(v.Card,null,a.default.createElement("div",{className:"agent-obs-traces-wrapper"},a.default.createElement(Pe,{loading:n&&e.length>0},a.default.createElement(v.Table,{className:"agent-obs-traces-table",records:e,recordKey:g=>g.TraceId,columns:d,bordered:!1,topTip:f(),bottomTip:e.length>0?a.default.createElement(v.Pagination,{recordCount:t.total,pageSizeOptions:[10,20,30,50,100],pageSize:t.pageSize,pageIndex:t.pageIndex,stateTextVisible:!0,pageSizeVisible:!0,pageIndexVisible:!0,jumpVisible:!0,endJumpVisible:!0,disabled:n,onPagingChange:({pageIndex:g,pageSize:p})=>{m({pageIndex:g,pageSize:p},!1)}}):void 0,addons:[jt({type:"multiple",column:"status",value:s.statuses,onChange:g=>m({statuses:g}),all:{value:"__all__",text:i.t("全部")},options:o}),qt({bodyClassName:"agent-obs-traces-table-body",bodyStyle:{borderBottom:"none"}})]})))))}var Qt={environment:"all",timeRange:"24hour",customRange:null,keyword:""};function Zt({rows:e,pagination:t,loading:n,onRowClick:r,defaultFilter:l,onQueryChange:u,onRefresh:o}){const[s,c]=h.useState({...Qt,...l}),[m,d]=h.useState(s.keyword),f=h.useRef({environment:s.environment,timeRange:s.timeRange,customRange:s.customRange,statuses:[],keyword:s.keyword,pageIndex:1,pageSize:t.pageSize}),g=()=>{u==null||u({...f.current,environment:s.environment,timeRange:s.timeRange,customRange:s.customRange,keyword:s.keyword})},p=h.useRef(s);h.useEffect(()=>{const k=p.current;Object.keys(s).some(M=>k[M]!==s[M])&&(p.current=s,f.current={...f.current,pageIndex:1},g())},[s]);const b=k=>c(N=>({...N,...k})),x=async()=>{const k=(m||"").trim();k!==m&&d(k);const N={...f.current,environment:s.environment,timeRange:s.timeRange,customRange:s.customRange,keyword:k,pageIndex:k!==s.keyword?1:f.current.pageIndex};if(k!==s.keyword){const M={...s,keyword:k};p.current=M,f.current={...f.current,pageIndex:1},c(M)}o?await o(N):u==null||u(N)};return a.default.createElement("div",{className:"agent-obs"},a.default.createElement(Pt,{environment:s.environment,timeRange:s.timeRange,customRange:s.customRange,keyword:m,onEnvironmentChange:k=>b({environment:k}),onTimeChange:(k,N)=>{b(N?{timeRange:N,customRange:null}:{customRange:k,timeRange:null})},onKeywordChange:d,onSearchSubmit:k=>{const N=(k||"").trim();d(N),N!==s.keyword&&b({keyword:N})},refreshFunction:x}),a.default.createElement(Xt,{rows:e,pagination:t,loading:n,onRowClick:r,defaultQuery:f.current,onQueryChange:k=>{f.current=k,g()}}))}var Jt=["AGENT","CHAIN","LLM","TOOL","RETRIEVER","RERANKER","EMBEDDING","EVALUATOR","GUARDRAIL","PROMPT","MANUAL","INTERNAL"];function ee(e){if(!e)return null;const t=e.trim().toUpperCase();return t==="GENERATION"?"LLM":Jt.includes(t)?t:null}var oe="langfuse.";function D(e,t){var n;const r=`${oe}${t}`,l=(n=e.Tags)==null?void 0:n.find(u=>u.Key===r);return l==null?void 0:l.Value}function j(e,t){for(const n of t){const r=D(e,n);if(r!==void 0&&r!=="")return r}}function He(e){const t=ee(D(e,"openinference.span.kind"));if(t)return t;const n=ee(D(e,"gen_ai.span.kind"));if(n)return n;const r=D(e,"span.kind"),l=ee(r);if(l)return l;for(const o of e.Tags||[]){const s=ee(o.Value);if(s)return s}const u=(e.OperationName||"").toLowerCase();return u.includes("chat")||u.includes("llm")||u.includes("openai")?"LLM":u.includes("tool")||u.includes("get_")?"TOOL":u.includes("retriev")?"RETRIEVER":u.includes("embed")?"EMBEDDING":u.includes("prompt")?"PROMPT":u.includes("agent")?"AGENT":"UNKNOWN"}function ea(e){const t=fe(e,"openinference.span.kind")||fe(e,"gen_ai.span.kind")||fe(e,"span.kind");return t||He(e)}function fe(e,t){const n=D(e,t);if(typeof n!="string")return;const r=n.trim();return r||void 0}function Xe(e){const t=D(e,"error");if(t)return t.toLowerCase()==="true";const n=D(e,"statusCode")||D(e,"otel.status_code");return n?n==="2"||n.toUpperCase()==="ERROR":!1}function ta(e){return j(e,["exception.message","exception.type","status_message","otel.status_description","error.message"])}function Qe(e){const t=e.StartTime/1e3,n=e.Duration/1e3,r=t+n,l=u=>{if(u===void 0||u==="")return;const o=Number(u);return Number.isFinite(o)?o:void 0};return{startMs:t,endMs:r,durationMs:n,model:j(e,["llm.model_name","gen_ai.response.model","gen_ai.request.model"]),inputTokens:l(j(e,["llm.token_count.prompt","gen_ai.usage.input_tokens","gen_ai.usage.prompt_tokens"])),outputTokens:l(j(e,["llm.token_count.completion","gen_ai.usage.completion_tokens","gen_ai.usage.output_tokens"])),totalTokens:l(j(e,["llm.token_count.total","gen_ai.usage.total_tokens"])),cost:l(D(e,"llm.cost"))}}function Me(e,t){const n=e.get(t);if(n)return n;const r={toolCalls:new Map};return e.set(t,r),r}function aa(e,t){const n=e.toolCalls.get(t);if(n)return n;const r={};return e.toolCalls.set(t,r),r}function na(e){const t=e.trim();if(!t.startsWith("{")&&!t.startsWith("["))return e;try{return JSON.stringify(JSON.parse(t),null,2)}catch{return e}}function Te(e,t){const n=`${oe}${t}`,r=new Map;(e.Tags||[]).forEach(u=>{if(!u.Key.startsWith(`${n}.`)||!u.Value)return;const o=u.Key.slice(n.length+1),s=o.match(/^(\d+)\.message\.(role|content)$/);if(s){const m=Me(r,Number(s[1]));s[2]==="role"&&(m.role=u.Value),s[2]==="content"&&(m.content=u.Value);return}const c=o.match(/^(\d+)\.message\.tool_calls\.(\d+)\.tool_call\.function\.(name|arguments)$/);if(c){const m=Me(r,Number(c[1])),d=aa(m,Number(c[2]));c[3]==="name"&&(d.name=u.Value),c[3]==="arguments"&&(d.arguments=u.Value)}});const l=[];return Array.from(r.entries()).sort(([u],[o])=>u-o).forEach(([,u])=>{u.content&&l.push(u.role?`${u.role}: ${u.content}`:u.content),Array.from(u.toolCalls.entries()).sort(([o],[s])=>o-s).forEach(([o,s])=>{const c=[s.name?`Tool: ${s.name}`:`Tool #${o+1}`];s.arguments&&c.push(`Arguments: ${na(s.arguments)}`),l.push(c.join(`
|
|
2
|
-
`))})}),l.length?l.join(`
|
|
3
|
-
|
|
4
|
-
`):void 0}function ra(e){const t=Te(e,"llm.input_messages"),n=Te(e,"llm.output_messages");return{input:t||j(e,["input.value","gen_ai.prompt"]),output:n||j(e,["output.value","gen_ai.completion"])}}function la(e){const t=new Set(["input.value","output.value","input.mime_type","output.mime_type","tapm.relocated","tapm.source_pipeline","topic.id","index.app.id","time_bucket","peer.service","component","status_code_xx","traceID","origin.operation","service.instance"]),n=["llm.input_messages.","llm.output_messages."];return(e.Tags||[]).filter(r=>r.Key&&r.Key.startsWith(oe)).map(r=>({Key:r.Key.slice(oe.length),Value:r.Value})).filter(r=>r.Key&&!t.has(r.Key)&&!n.some(l=>r.Key.startsWith(l)))}function ua(e){const n=(e.References||[]).find(r=>r.RefType==="CHILD_OF"&&r.SpanId);return(n==null?void 0:n.SpanId)||null}function sa(e){const t=new Map;for(const l of e){const u=Qe(l);t.set(l.SpanId,{span:l,spanId:l.SpanId,parentId:ua(l),kind:He(l),children:[],startMs:u.startMs,endMs:u.endMs,durationMs:u.durationMs,hasError:Xe(l)})}const n=[];for(const l of t.values())l.parentId&&t.has(l.parentId)?t.get(l.parentId).children.push(l):n.push(l);const r=l=>{l.sort((u,o)=>u.startMs-o.startMs),l.forEach(u=>r(u.children))};return r(n),n}var O=168,ie=56,Ae=56,te=28,ge=48,Ie=40;function oa(e){const t=[],n=[],r=new Map,l=d=>{if(r.has(d.spanId))return r.get(d.spanId);if(d.children.length===0)return r.set(d.spanId,O),O;const f=d.children.reduce((p,b,x)=>p+l(b)+(x>0?te:0),0),g=Math.max(O,f);return r.set(d.spanId,g),g},u=(d,f,g)=>{const p=l(d),x=g+p/2-O/2,k=Ie+f*(ie+Ae);t.push({id:d.spanId,x,y:k,level:f,node:d});let N=g+(p-d.children.reduce((A,B,w)=>A+l(B)+(w>0?te:0),0))/2,M=Number.NEGATIVE_INFINITY;d.children.forEach(A=>{const B=l(A),w=A.startMs<M?"parallel":"seq";u(A,f+1,N),n.push({from:d.spanId,to:A.spanId,label:w,dashed:w==="parallel"||A.kind==="LLM"}),M=Math.max(M,A.endMs),N+=B+te})};let o=ge;e.forEach(d=>{const f=l(d);u(d,0,o),o+=f+te*2});const s=Math.max(...t.map(d=>d.x+O),ge*2)+ge,c=Math.max(...t.map(d=>d.level),0),m=Ie*2+(c+1)*ie+c*Ae;return{nodes:t,edges:n,width:s,height:m}}function me(e){return!Number.isFinite(e)||e<0?"-":e<1?`${e.toFixed(2)}ms`:e<1e3?`${e.toFixed(e<10?2:1)}ms`:`${(e/1e3).toFixed(2)}s`}function he(e){return e==null||!Number.isFinite(e)?"-":e.toLocaleString()}function ia(e){if(!e)return"-";const t=new Date(e),n=(r,l=2)=>String(r).padStart(l,"0");return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function Ze(e){if(!e)return null;const t=e.trim();if(!t.startsWith("{")&&!t.startsWith("["))return null;try{return JSON.parse(t)}catch{return null}}function $({size:e=16,className:t,style:n,label:r,viewBox:l,children:u}){return a.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:e,viewBox:l,fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round","aria-label":i.t(r),className:t,style:n},u)}function ca(e){return a.default.createElement($,{...e,label:"AGENT",viewBox:"2 0.25 20 20"},a.default.createElement("rect",{x:"5",y:"7",width:"14",height:"11",rx:"2.5"}),a.default.createElement("path",{d:"M12 4v3"}),a.default.createElement("circle",{cx:"12",cy:"3.5",r:"1"}),a.default.createElement("circle",{cx:"9.5",cy:"12",r:"1.1"}),a.default.createElement("circle",{cx:"14.5",cy:"12",r:"1.1"}),a.default.createElement("path",{d:"M9.5 15.5h5"}),a.default.createElement("path",{d:"M3.5 12.5v2M20.5 12.5v2"}))}function da(e){return a.default.createElement($,{...e,label:"CHAIN",viewBox:"2 2 20 20"},a.default.createElement("path",{d:"M9.5 14.5a3.5 3.5 0 0 1 0-4.95l2.12-2.12a3.5 3.5 0 0 1 4.95 4.95l-1.06 1.06"}),a.default.createElement("path",{d:"M14.5 9.5a3.5 3.5 0 0 1 0 4.95l-2.12 2.12a3.5 3.5 0 0 1-4.95-4.95l1.06-1.06"}))}function ma(e){return a.default.createElement($,{...e,label:"EMBEDDING",viewBox:"2.9 2.9 18.2 18.2"},a.default.createElement("circle",{cx:"6",cy:"6",r:"1.6"}),a.default.createElement("circle",{cx:"18",cy:"6",r:"1.6"}),a.default.createElement("circle",{cx:"6",cy:"18",r:"1.6"}),a.default.createElement("circle",{cx:"18",cy:"18",r:"1.6"}),a.default.createElement("circle",{cx:"12",cy:"12",r:"2.2"}),a.default.createElement("path",{d:"M7.4 7.4 10.4 10.4M16.6 7.4l-3 3M7.4 16.6l3-3M16.6 16.6l-3-3"}))}function fa(e){return a.default.createElement($,{...e,label:"EVALUATOR",viewBox:"2.5 2.5 19 19"},a.default.createElement("path",{d:"M12 4v16"}),a.default.createElement("path",{d:"M5 9h14"}),a.default.createElement("path",{d:"M8 9 5 15a3 3 0 0 0 6 0L8 9Z"}),a.default.createElement("path",{d:"M16 9l-3 6a3 3 0 0 0 6 0l-3-6Z"}),a.default.createElement("path",{d:"M8 20h8"}))}function ga(e){return a.default.createElement($,{...e,label:"GUARDRAIL",viewBox:"1.5 1.5 21 21"},a.default.createElement("path",{d:"M12 3 4 6v6c0 4.5 3.4 8.4 8 9 4.6-.6 8-4.5 8-9V6l-8-3Z"}),a.default.createElement("path",{d:"m9 12 2 2 4-4"}))}function ha({size:e=16,className:t,style:n}){return a.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:e,viewBox:"0 0 16 16",fill:"currentColor",stroke:"none","aria-label":i.t("LLM"),className:t,style:n},a.default.createElement("path",{d:"M6.75098 2.91992C6.96271 2.80436 7.21893 2.80436 7.43066 2.91992C7.6754 3.05361 7.83917 3.54583 8.16699 4.5293L8.38477 5.18262C8.56011 5.70865 8.64848 5.97198 8.79785 6.19043C8.93022 6.38394 9.09751 6.55122 9.29102 6.68359C9.50951 6.83305 9.77263 6.92128 10.2988 7.09668L10.9531 7.31445C11.936 7.64209 12.4277 7.80621 12.5615 8.05078C12.6771 8.26252 12.6771 8.51873 12.5615 8.73047C12.4279 8.9752 11.9364 9.13905 10.9531 9.4668L10.2988 9.68555C9.77276 9.8609 9.50948 9.94826 9.29102 10.0977C9.09752 10.23 8.93022 10.3973 8.79785 10.5908C8.64839 10.8093 8.56016 11.0724 8.38477 11.5986L8.16699 12.2529C7.8393 13.236 7.67528 13.7275 7.43066 13.8613C7.21893 13.9769 6.96271 13.9769 6.75098 13.8613C6.50636 13.7275 6.34234 13.236 6.01465 12.2529L5.79688 11.5986C5.62148 11.0724 5.53325 10.8093 5.38379 10.5908C5.25142 10.3973 5.08412 10.23 4.89062 10.0977C4.67216 9.94826 4.40888 9.8609 3.88281 9.68555L3.22852 9.4668C2.24527 9.13905 1.75373 8.9752 1.62012 8.73047C1.50455 8.51873 1.50455 8.26252 1.62012 8.05078C1.75398 7.80621 2.2456 7.64209 3.22852 7.31445L3.88281 7.09668C4.40901 6.92128 4.67213 6.83305 4.89062 6.68359C5.08413 6.55122 5.25142 6.38394 5.38379 6.19043C5.53316 5.97198 5.62153 5.70865 5.79688 5.18262L6.01465 4.5293C6.34247 3.54583 6.50624 3.05361 6.75098 2.91992ZM12.8184 0.693359C12.9088 0.64411 13.0179 0.64411 13.1084 0.693359C13.2132 0.750535 13.2836 0.961008 13.4238 1.38184L13.5596 1.78809C13.6346 2.01303 13.6724 2.12529 13.7363 2.21875C13.793 2.30158 13.8644 2.37303 13.9473 2.42969C14.0407 2.49361 14.153 2.53147 14.3779 2.60645L14.7842 2.74219C15.205 2.88246 15.4155 2.95286 15.4727 3.05762C15.5219 3.14809 15.5219 3.25719 15.4727 3.34766C15.4155 3.45241 15.205 3.52281 14.7842 3.66309L14.3779 3.79883C14.153 3.87381 14.0407 3.91166 13.9473 3.97559C13.8644 4.03225 13.793 4.10369 13.7363 4.18652C13.6724 4.27998 13.6346 4.39225 13.5596 4.61719L13.4238 5.02344C13.2836 5.44427 13.2132 5.65474 13.1084 5.71191C13.0179 5.76116 12.9088 5.76116 12.8184 5.71191C12.7136 5.65474 12.6432 5.44427 12.5029 5.02344L12.3672 4.61719C12.2922 4.39225 12.2544 4.27998 12.1904 4.18652C12.1338 4.10369 12.0623 4.03225 11.9795 3.97559C11.886 3.91166 11.7738 3.87381 11.5488 3.79883L11.1426 3.66309C10.7218 3.52281 10.5113 3.45241 10.4541 3.34766C10.4049 3.25719 10.4049 3.14809 10.4541 3.05762C10.5113 2.95286 10.7218 2.88246 11.1426 2.74219L11.5488 2.60645C11.7738 2.53147 11.886 2.49361 11.9795 2.42969C12.0623 2.37303 12.1338 2.30158 12.1904 2.21875C12.2544 2.12529 12.2922 2.01303 12.3672 1.78809L12.5029 1.38184C12.6432 0.961008 12.7136 0.750535 12.8184 0.693359Z"}))}function pa(e){return a.default.createElement($,{...e,label:"PROMPT",viewBox:"3.5 2.5 19 19"},a.default.createElement("path",{d:"M5 5h14v10H9l-4 4V5Z"}),a.default.createElement("path",{d:"M8.5 9.5h7M8.5 12h4.5"}),a.default.createElement("path",{d:"m17 17 1.5 1.5L21 16"}))}function Ea(e){return a.default.createElement($,{...e,label:"RERANKER",viewBox:"2.5 2 20 20"},a.default.createElement("path",{d:"M4 7h10"}),a.default.createElement("path",{d:"M4 12h7"}),a.default.createElement("path",{d:"M4 17h12"}),a.default.createElement("path",{d:"M18 4v16"}),a.default.createElement("path",{d:"m15 7 3-3 3 3"}),a.default.createElement("path",{d:"m15 17 3 3 3-3"}))}function va(e){return a.default.createElement($,{...e,label:"RETRIEVER",viewBox:"1.5 1.75 21 21"},a.default.createElement("ellipse",{cx:"9",cy:"6",rx:"6",ry:"2.5"}),a.default.createElement("path",{d:"M3 6v6c0 1.38 2.69 2.5 6 2.5s6-1.12 6-2.5V6"}),a.default.createElement("path",{d:"M3 12v4c0 1.38 2.69 2.5 6 2.5 1 0 1.96-.1 2.82-.28"}),a.default.createElement("circle",{cx:"17",cy:"17",r:"3"}),a.default.createElement("path",{d:"m21 21-1.8-1.8"}))}function ba({size:e=16,className:t,style:n}){return a.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:e,viewBox:"0 0 16 16",fill:"currentColor",stroke:"none","aria-label":i.t("TOOL"),className:t,style:n},a.default.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12.3473 7.71709C11.4282 8.63549 10.0466 8.78881 8.95807 8.20271L4.22084 12.938C3.90023 13.2583 3.38052 13.2583 3.05951 12.938C2.7393 12.6173 2.7393 12.0985 3.05951 11.7778L7.79754 7.04251C7.21188 5.95517 7.36538 4.57517 8.28405 3.65677C8.83493 3.1063 9.55371 2.84447 10.2753 2.83566C9.51933 3.63956 9.52933 4.90145 10.3157 5.68733C11.1016 6.47281 12.3641 6.48282 13.1684 5.72737C13.1596 6.44839 12.8982 7.16662 12.3473 7.71709ZM13.6565 4.14959C13.4542 4.37699 13.1184 4.66644 12.6371 5.10722C12.1274 5.61647 11.4058 5.61647 10.8961 5.10722C10.386 4.59718 10.386 3.87656 10.8961 3.36692C11.3659 2.89731 11.8708 2.34122 11.8628 2.33882C10.4976 1.70907 8.82854 1.95249 7.7036 3.07667C6.6782 4.10116 6.38598 5.57683 6.81733 6.86235L2.47945 11.1981C1.83823 11.8387 1.83823 12.8776 2.47945 13.5181C3.12068 14.1587 4.16007 14.1587 4.80129 13.5181L9.13875 9.18276C10.426 9.61473 11.9023 9.32169 12.9277 8.2972C14.0511 7.17422 14.2846 5.51278 13.6565 4.14959Z"}))}function ka(e){return a.default.createElement($,{...e,label:"MANUAL",viewBox:"0 0 24 24"},a.default.createElement("path",{d:"M15.5 4.5 19.5 8.5 9 19l-4.5 1L5.5 15.5 15.5 4.5Z"}),a.default.createElement("path",{d:"m13.5 6.5 4 4"}),a.default.createElement("path",{d:"M5.5 15.5 9 19"}))}function Se(e){return a.default.createElement($,{...e,label:"UNKNOWN",viewBox:"0 0 24 24"},a.default.createElement("path",{d:"M8 4 Q5 4 5 7 L5 10 Q5 12 3 12 Q5 12 5 14 L5 17 Q5 20 8 20"}),a.default.createElement("path",{d:"M16 4 Q19 4 19 7 L19 10 Q19 12 21 12 Q19 12 19 14 L19 17 Q19 20 16 20"}),a.default.createElement("circle",{cx:"12",cy:"12",r:"1.4",fill:"currentColor",stroke:"none"}))}var Re={AGENT:ca,CHAIN:da,LLM:ha,TOOL:ba,RETRIEVER:va,RERANKER:Ea,EMBEDDING:ma,EVALUATOR:fa,GUARDRAIL:ga,PROMPT:pa,MANUAL:ka,INTERNAL:Se,UNKNOWN:Se};function _a({kind:e,...t}){const n=Re[e]||Re.UNKNOWN;return a.default.createElement(n,{...t})}var Q=20,K=32,ae="#A8A29E",pe=6,Ee=16,ne=e=>e*Q+Q/2;function ya({ancestorsIsLast:e,isLast:t,isRoot:n,hasChildren:r,isExpanded:l,onToggle:u}){const o=e.length,c=(o+1)*Q,m=K/2,d=[];if(e.forEach((p,b)=>{if(p)return;const x=ne(b)+.5;d.push(a.default.createElement("line",{key:`anc-${b}`,x1:x,y1:-.5,x2:x,y2:K+.5,stroke:ae,strokeWidth:1,shapeRendering:"crispEdges"}))}),!n){const p=ne(o-1)+.5,b=ne(o),x=t?m-pe:K+.5;d.push(a.default.createElement("line",{key:"vline",x1:p,y1:-.5,x2:p,y2:x,stroke:ae,strokeWidth:1,shapeRendering:"crispEdges"}));const k=`M ${p} ${m-pe} Q ${p} ${m} ${p+pe} ${m} L ${b} ${m}`;d.push(a.default.createElement("path",{key:"arc",d:k,fill:"none",stroke:ae,strokeWidth:1}))}if(r&&l){const p=ne(o)+.5;d.push(a.default.createElement("line",{key:"vdown",x1:p,y1:m+Ee/2,x2:p,y2:K+.5,stroke:ae,strokeWidth:1,shapeRendering:"crispEdges"}))}const f=o*Q+(Q-Ee)/2,g=(K-Ee)/2;return a.default.createElement("span",{className:"agent-obs-td-tree-indent",style:{width:c,flex:`0 0 ${c}px`,height:K}},a.default.createElement("svg",{className:"agent-obs-td-tree-lines",width:c,height:K,viewBox:`0 0 ${c} ${K}`,"aria-hidden":"true"},d),a.default.createElement("span",{className:"agent-obs-td-tree-control",style:{left:f,top:g}},r?a.default.createElement("span",{className:`agent-obs-td-tree-expander ${l?"agent-obs-td-tree-expander--expanded":""}`,onClick:p=>{p.stopPropagation(),u()}},a.default.createElement("svg",{width:"10",height:"10",viewBox:"0 0 10 10","aria-hidden":"true"},a.default.createElement("path",{d:"M2.5 3.5 L5 6 L7.5 3.5",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}))):a.default.createElement("span",{className:"agent-obs-td-tree-leaf-dot"})))}function Je(e){const{node:t,depth:n,ancestorsIsLast:r,isLast:l,expanded:u,toggle:o,activeId:s,onActiveChange:c}=e,m=t.children.length>0,d=u.has(t.spanId),f=s===t.spanId;return a.default.createElement(a.default.Fragment,null,a.default.createElement("div",{className:`agent-obs-td-tree-row ${f?"agent-obs-td-tree-row--active":""} ${t.hasError?"agent-obs-td-tree-row--error":""}`,onClick:()=>c(t.spanId)},a.default.createElement(ya,{ancestorsIsLast:r,isLast:l,isRoot:n===0,hasChildren:m,isExpanded:d,onToggle:()=>o(t.spanId)}),a.default.createElement("div",{className:"agent-obs-td-tree-row-content"},a.default.createElement("span",{className:"agent-obs-td-tree-icon"},a.default.createElement(_a,{kind:t.kind,size:t.kind==="UNKNOWN"||t.kind==="INTERNAL"?14:16})),a.default.createElement("span",{className:"agent-obs-td-tree-name",title:t.span.OperationName},t.span.OperationName),a.default.createElement("span",{className:"agent-obs-td-tree-dur"},me(t.durationMs)))),m&&d&&t.children.map((g,p)=>a.default.createElement(Je,{key:g.spanId,node:g,depth:n+1,ancestorsIsLast:[...r,p===t.children.length-1],isLast:p===t.children.length-1,expanded:u,toggle:o,activeId:s,onActiveChange:c})))}function Ca(e){const t=[],n=r=>{t.push(r.spanId),r.children.forEach(n)};return e.forEach(n),t}function Na({roots:e,activeId:t,onActiveChange:n}){const[r,l]=h.useState(()=>new Set(Ca(e))),u=o=>{l(s=>{const c=new Set(s);return c.has(o)?c.delete(o):c.add(o),c})};return a.default.createElement("div",{className:"agent-obs-td-tree"},e.map((o,s)=>a.default.createElement(Je,{key:o.spanId,node:o,depth:0,ancestorsIsLast:[],isLast:s===e.length-1,expanded:r,toggle:u,activeId:t,onActiveChange:n})))}function wa(e){const t=[],n=(r,l)=>{t.push({node:r,depth:l}),r.children.forEach(u=>n(u,l+1))};return e.forEach(r=>n(r,0)),t}function xa(e){return e>3e4?"#F36C06":e>1e4?"#EAB308":e>3e3?"#3B82F6":"#22C55E"}function ve(e){if(!Number.isFinite(e)||e<=0)return"0s";const t=e/1e3,n=t<1?t.toFixed(2):t.toFixed(1);return`${parseFloat(n)}s`}var La=14;function Fa({roots:e,activeId:t,onActiveChange:n}){const r=h.useMemo(()=>wa(e),[e]),{traceStart:l,totalMs:u}=h.useMemo(()=>{if(!r.length)return{traceStart:0,totalMs:0};const c=Math.min(...r.map(d=>d.node.startMs)),m=Math.max(...r.map(d=>d.node.startMs+d.node.durationMs));return{traceStart:c,totalMs:m-c}},[r]),o=[ve(0),ve(u/2),ve(u)],s=["start","mid","end"];return a.default.createElement("div",{className:"agent-obs-td-timeline-wrapper"},a.default.createElement("div",{className:"agent-obs-td-timeline-axis"},a.default.createElement("div",{className:"agent-obs-td-timeline-axis-label"},i.t("Span")),a.default.createElement("div",{className:"agent-obs-td-timeline-axis-track"},o.map((c,m)=>a.default.createElement(v.Text,{key:m,className:`agent-obs-td-timeline-axis-tick agent-obs-td-timeline-axis-tick--${s[m]}`},c))),a.default.createElement("div",{className:"agent-obs-td-timeline-axis-dur"},i.t("Duration"))),a.default.createElement("div",{className:"agent-obs-td-timeline"},r.map(({node:c,depth:m})=>{const d=u>0?(c.startMs-l)/u*100:0,f=u>0?Math.max(c.durationMs/u*100,.2):0,g=t===c.spanId,p=c.hasError?"#e54545":xa(c.durationMs);return a.default.createElement("div",{key:c.spanId,className:`agent-obs-td-timeline-row ${g?"agent-obs-td-timeline-row--active":""}`,onClick:()=>n(c.spanId)},a.default.createElement("div",{className:"agent-obs-td-timeline-label",style:{paddingLeft:m*La}},a.default.createElement("span",{className:"agent-obs-td-timeline-label-op",title:c.span.OperationName},c.span.OperationName)),a.default.createElement("div",{className:"agent-obs-td-timeline-track"},a.default.createElement("div",{className:"agent-obs-td-timeline-track-line"}),a.default.createElement("div",{className:"agent-obs-td-timeline-bar",style:{left:`${d}%`,width:`${f}%`,background:p}})),a.default.createElement("div",{className:"agent-obs-td-timeline-dur"},me(c.durationMs)))})))}var et=.25,tt=2,re=.1,le=24;function Ma(e,t=22){return e?e.length>t?`${e.slice(0,t-1)}…`:e:""}function Ta(e,t,n,r){const l=Math.max((r-t)/2,20);return`M ${e} ${t} C ${e} ${t+l}, ${n} ${r-l}, ${n} ${r}`}function be(e){return Math.min(tt,Math.max(et,e))}function Aa(e){return e==="parallel"?i.t("Parallel"):i.t("Sequential")}function Ia({roots:e,activeId:t,onActiveChange:n}){const r=h.useMemo(()=>oa(e),[e]),l=h.useMemo(()=>{const E=new Map;return r.nodes.forEach(y=>E.set(y.id,{x:y.x,y:y.y})),E},[r]),u=h.useRef(null),[o,s]=h.useState({w:0,h:0}),[c,m]=h.useState(1),[d,f]=h.useState({x:0,y:0}),[g,p]=h.useState(!1),b=h.useCallback((E,y,C,_)=>{if(E<le*2+1||y<le*2+1||!C||!_)return{scale:1,x:0,y:0};const L=be(Math.min((E-le*2)/C,(y-le*2)/_,1));return{scale:L,x:(E-C*L)/2,y:(y-_*L)/2}},[]),x=h.useCallback(()=>{const E=b(o.w,o.h,r.width,r.height);m(E.scale),f({x:E.x,y:E.y})},[b,o.w,o.h,r.width,r.height]),k=h.useRef(""),N=`${r.width}x${r.height}`;h.useLayoutEffect(()=>{const E=u.current;if(!E)return;const y=E.clientWidth,C=E.clientHeight;if(s({w:y,h:C}),y>0&&C>0&&r.width>0&&r.height>0){const I=b(y,C,r.width,r.height);m(I.scale),f({x:I.x,y:I.y}),k.current=N,p(!0)}let _=0;const L=new ResizeObserver(()=>{cancelAnimationFrame(_),_=requestAnimationFrame(()=>{const I=E.clientWidth,P=E.clientHeight;s(R=>R.w===I&&R.h===P?R:{w:I,h:P})})});return L.observe(E),()=>{cancelAnimationFrame(_),L.disconnect()}},[]),h.useEffect(()=>{if(!o.w||!o.h||!r.width||!r.height||k.current===N)return;k.current=N;const E=b(o.w,o.h,r.width,r.height);m(E.scale),f({x:E.x,y:E.y}),p(!0)},[N,o.w,o.h,r.width,r.height,b]);const M=h.useCallback((E,y,C)=>{m(_=>{const L=be(E);return L===_?_:(f(I=>({x:y-(y-I.x)*(L/_),y:C-(C-I.y)*(L/_)})),L)})},[]),A=()=>M(c+re,o.w/2,o.h/2),B=()=>M(c-re,o.w/2,o.h/2);h.useEffect(()=>{const E=u.current;if(!E)return;const y=C=>{C.preventDefault();const _=E.getBoundingClientRect(),L=C.clientX-_.left,I=C.clientY-_.top,P=C.deltaY<0?1+re:1/(1+re);m(R=>{const U=be(R*P);return U===R?R:(f(J=>({x:L-(L-J.x)*(U/R),y:I-(I-J.y)*(U/R)})),U)})};return E.addEventListener("wheel",y,{passive:!1}),()=>E.removeEventListener("wheel",y)},[]);const w=h.useRef({active:!1,startX:0,startY:0,originX:0,originY:0}),[T,F]=h.useState(!1),S=E=>{E.button!==0||E.target.closest(".agent-obs-td-graph-node")||(w.current={active:!0,startX:E.clientX,startY:E.clientY,originX:d.x,originY:d.y},F(!0),E.preventDefault())};h.useEffect(()=>{if(!T)return;const E=C=>{if(!w.current.active)return;const _=C.clientX-w.current.startX,L=C.clientY-w.current.startY;f({x:w.current.originX+_,y:w.current.originY+L})},y=()=>{w.current.active=!1,F(!1)};return window.addEventListener("mousemove",E),window.addEventListener("mouseup",y),()=>{window.removeEventListener("mousemove",E),window.removeEventListener("mouseup",y)}},[T]);const V=Math.round(c*100),z=c<tt-1e-6,Z=c>et+1e-6;return a.default.createElement("div",{ref:u,className:`agent-obs-td-graph${T?" agent-obs-td-graph--panning":""}`,onMouseDown:S},a.default.createElement("svg",{className:"agent-obs-td-graph-svg",width:o.w||r.width,height:o.h||r.height},g&&a.default.createElement("g",{transform:`translate(${d.x}, ${d.y}) scale(${c})`},a.default.createElement("g",null,r.edges.map((E,y)=>{const C=l.get(E.from),_=l.get(E.to);if(!C||!_)return null;const L=C.x+O/2,I=C.y+ie,P=_.x+O/2,R=_.y,U=(L+P)/2,J=(I+R)/2;return a.default.createElement("g",{key:`edge-${y}`},a.default.createElement("path",{className:`agent-obs-td-graph-edge ${E.dashed?"agent-obs-td-graph-edge--dashed":""}`,d:Ta(L,I,P,R)}),a.default.createElement("text",{className:"agent-obs-td-graph-edge-label",x:U,y:J,textAnchor:"middle",dy:"-2"},Aa(E.label)))})),a.default.createElement("g",null,r.nodes.map(E=>{const{x:y,y:C,node:_}=E,L=t===_.spanId;return a.default.createElement("g",{key:_.spanId,className:`agent-obs-td-graph-node agent-obs-td-graph-node--${_.kind}${_.hasError?" agent-obs-td-graph-node--error":""}${L?" agent-obs-td-graph-node--active":""}`,transform:`translate(${y}, ${C})`,onClick:()=>n(_.spanId)},a.default.createElement("rect",{className:"agent-obs-td-graph-node-box",width:O,height:ie,rx:8,ry:8}),a.default.createElement("text",{className:"agent-obs-td-graph-node-op",x:O/2,y:22,textAnchor:"middle"},a.default.createElement("title",null,_.span.OperationName),Ma(_.span.OperationName,22)),a.default.createElement("text",{className:"agent-obs-td-graph-node-dur",x:O/2,y:40,textAnchor:"middle"},me(_.durationMs)))})))),a.default.createElement("div",{className:"agent-obs-td-graph-toolbar",onMouseDown:E=>E.stopPropagation(),onWheel:E=>E.stopPropagation()},a.default.createElement("button",{type:"button",className:"agent-obs-td-graph-toolbar-btn",onClick:A,disabled:!z,"aria-label":i.t("zoom in")},"+"),a.default.createElement("span",{className:"agent-obs-td-graph-toolbar-percent"},V,"%"),a.default.createElement("button",{type:"button",className:"agent-obs-td-graph-toolbar-btn",onClick:B,disabled:!Z,"aria-label":i.t("zoom out")},"−"),a.default.createElement("span",{className:"agent-obs-td-graph-toolbar-divider"}),a.default.createElement("button",{type:"button",className:"agent-obs-td-graph-toolbar-btn agent-obs-td-graph-toolbar-fit",onClick:x,"aria-label":i.t("fit to view")},a.default.createElement("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none"},a.default.createElement("path",{d:"M2 5V2h3M14 5V2h-3M2 11v3h3M14 11v3h-3",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})))))}var De=!1;function Sa(){De||(Ke.default.registerLanguage("json",ft.default),De=!0)}function Ra(e,t=2){const n=JSON.stringify(e,null,t);return Sa(),Ke.default.highlight(n,{language:"json"}).value}function Da({span:e,closeBtn:t}){if(!e)return a.default.createElement("div",{className:"agent-obs-td-detail"},a.default.createElement("div",{className:"agent-obs-td-detail-header"},a.default.createElement("span",{className:"agent-obs-td-detail-header-title"}),t),a.default.createElement("div",{className:"agent-obs-td-detail-empty"},i.t("请选择左侧节点查看详情")));const n=ea(e),r=Qe(e),l=ra(e),u=la(e),o=Xe(e),s=o?ta(e):void 0,c=D(e,"agent.conversation_id")||D(e,"session.id");return a.default.createElement("div",{className:"agent-obs-td-detail"},a.default.createElement("div",{className:"agent-obs-td-detail-header"},a.default.createElement("span",{className:"agent-obs-td-detail-header-title",title:e.OperationName},e.OperationName),a.default.createElement("span",{className:`agent-obs-td-detail-badge ${o?"agent-obs-td-detail-badge--error":"agent-obs-td-detail-badge--ok"}`},o?i.t("ERROR"):i.t("OK")),t),a.default.createElement("div",{className:"agent-obs-td-detail-metrics"},a.default.createElement(W,{label:i.t("Total Tokens"),value:he(r.totalTokens)}),a.default.createElement(W,{label:i.t("Tokens in"),value:he(r.inputTokens)}),a.default.createElement(W,{label:i.t("Tokens out"),value:he(r.outputTokens)}),a.default.createElement(W,{label:i.t("Duration"),value:me(r.durationMs)}),a.default.createElement(W,{label:i.t("Model"),value:r.model||"-"})),a.default.createElement("div",{className:"agent-obs-td-detail-info"},a.default.createElement("div",{className:"agent-obs-td-detail-pills"},a.default.createElement(H,{label:i.t("Timestamp"),value:ia(r.startMs)}),a.default.createElement(H,{label:i.t("SpanId"),value:e.SpanId}),a.default.createElement(H,{label:i.t("TraceId"),value:D(e,"traceID")||e.TraceId}),a.default.createElement(H,{label:i.t("SpanKind"),value:n}),a.default.createElement(H,{label:i.t("ConversionID"),value:c??"-"})),l.input&&l.output&&a.default.createElement(a.default.Fragment,null,a.default.createElement(ke,{title:i.t("Input"),value:l.input}),a.default.createElement(ke,{title:i.t("Output"),value:l.output})),s&&a.default.createElement(ke,{title:i.t("Error"),value:s,titleClassName:"agent-obs-td-detail-io-title--error"})),a.default.createElement("div",{className:"agent-obs-td-detail-attrs-wrap"},a.default.createElement(Va,{attrs:u,io:l})))}function W({label:e,value:t}){return a.default.createElement("div",{className:"agent-obs-td-detail-metric"},a.default.createElement("div",{className:"agent-obs-td-detail-metric-label"},e),a.default.createElement("div",{className:"agent-obs-td-detail-metric-value",title:typeof t=="string"?t:void 0},t))}function H({label:e,value:t}){return a.default.createElement("div",{className:"agent-obs-td-detail-pill",title:`${e}: ${t}`},a.default.createElement("span",{className:"agent-obs-td-detail-pill-label"},e),a.default.createElement("span",{className:"agent-obs-td-detail-pill-value"},t))}function ue(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Y(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function Ne(e,t=0){if(t>6||e===null||e===void 0)return null;if(Array.isArray(e)){for(const n of e){const r=Ne(n,t+1);if(r)return r}return null}if(!ue(e))return null;if(Array.isArray(e.messages)&&e.messages.length)return e.messages;for(const n of Object.keys(e)){const r=Ne(e[n],t+1);if(r)return r}return null}function Oa(e){if(typeof e=="string")return e.trim()||void 0;if(!ue(e))return;const t=Y(e.content)||Y(e.text);if(t)return t;const n=ue(e.data)?e.data:null;if(n){const l=Y(n.content)||Y(n.text);if(l)return l}const r=ue(e.kwargs)?e.kwargs:null;if(r){const l=Y(r.content)||Y(r.text);if(l)return l}}function $a(e){const t=Ze(e);if(t===null)return e;const n=Ne(t);if(n&&n.length)for(let r=n.length-1;r>=0;r-=1){const l=Oa(n[r]);if(l)return l}return e}function ke({title:e,value:t,titleClassName:n}){const r=$a(t);return a.default.createElement("div",{className:"agent-obs-td-detail-io"},a.default.createElement("div",{className:`agent-obs-td-detail-io-title ${n||""}`},e),a.default.createElement("pre",{className:"agent-obs-td-detail-io-content"},r))}var Ba=["llm","gen_ai","openai"];function Ka(e,t){return t.some(n=>e===n||e.startsWith(`${n}.`))}function Oe(e){return Ka(e,Ba)}function Va({attrs:e,io:t}){const n=h.useMemo(()=>{const s=[];return t.input&&s.push({Key:"input.value",Value:t.input}),t.output&&s.push({Key:"output.value",Value:t.output}),s},[t.input,t.output]),r=h.useMemo(()=>e.filter(s=>Oe(s.Key)),[e]),l=h.useMemo(()=>e.filter(s=>!Oe(s.Key)),[e]),u=r.length>0,o=h.useMemo(()=>[...n,...l],[n,l]);return u?a.default.createElement(Pa,{llmAttrs:r,otherAttrs:o}):a.default.createElement(v.Tabs,{tabs:[{id:"span",label:i.t("Span Attributes")}],activeId:"span"},a.default.createElement(v.TabPanel,{id:"span"},a.default.createElement(we,{attrs:o})))}function Pa({llmAttrs:e,otherAttrs:t}){const[n,r]=h.useState("llm"),l=[{id:"llm",label:i.t("LLM Attributes")},{id:"other",label:i.t("Other Attributes")}];return a.default.createElement(v.Tabs,{tabs:l,activeId:n,onActive:u=>r(u.id)},a.default.createElement(v.TabPanel,{id:"llm"},a.default.createElement(we,{attrs:e})),a.default.createElement(v.TabPanel,{id:"other"},a.default.createElement(we,{attrs:t})))}function we({attrs:e}){return e.length?a.default.createElement("div",{className:"agent-obs-td-detail-attrs"},e.map((t,n)=>a.default.createElement(ja,{key:`${t.Key}-${n}`,attr:t}))):a.default.createElement("div",{className:"agent-obs-td-detail-attrs-empty"},i.t("无属性"))}function ja({attr:e}){const[t,n]=h.useState(!1),[r,l]=h.useState(!1),u=h.useRef(null),o=h.useMemo(()=>Ze(e.Value),[e.Value]),s=e.Value||"-",c=o!==null;h.useLayoutEffect(()=>{if(t&&!c)return;const g=u.current;if(!g)return;const p=()=>{l(g.scrollWidth>g.clientWidth+1)};if(p(),typeof ResizeObserver>"u")return;const b=new ResizeObserver(p);return b.observe(g),()=>b.disconnect()},[s,t,c]);const m=c||r,d=t&&!c?"agent-obs-td-detail-attr-value--expanded":"",f=!t||c?s:void 0;return a.default.createElement("div",{className:"agent-obs-td-detail-attr"},a.default.createElement("div",{className:"agent-obs-td-detail-attr-main"},m?a.default.createElement("span",{className:`agent-obs-td-detail-attr-caret ${t?"agent-obs-td-detail-attr-caret--expanded":""}`,onClick:()=>n(g=>!g)},"▶"):a.default.createElement("span",{className:"agent-obs-td-detail-attr-caret agent-obs-td-detail-attr-caret--placeholder"}),a.default.createElement("span",{className:"agent-obs-td-detail-attr-key",title:e.Key},e.Key),a.default.createElement("span",{ref:u,className:`agent-obs-td-detail-attr-value ${d}`,title:f},s)),m&&t&&o!==null&&a.default.createElement("pre",{className:"agent-obs-td-detail-attr-json hljs",dangerouslySetInnerHTML:{__html:Ra(o)}}))}function qa(){return[{id:"tree",label:i.t("Tree")},{id:"timeline",label:i.t("Timeline")},{id:"graph",label:i.t("Graph")}]}function za({visible:e,onClose:t,traceId:n,fetchDetail:r,defaultTab:l="tree",width:u="80vw"}){const[o,s]=h.useState(l),[c,m]=h.useState(null),[d,f]=h.useState(!1),[g,p]=h.useState(null),[b,x]=h.useState(null);h.useEffect(()=>{if(!e||!n)return;let w=!1;return f(!0),p(null),m(null),x(null),r(n).then(T=>{var F;if(!w&&(m(T),(F=T==null?void 0:T.Spans)!=null&&F.length)){const S=T.Spans.reduce((V,z)=>V.StartTime<z.StartTime?V:z);x(S.SpanId)}}).catch(T=>{w||p((T==null?void 0:T.message)||i.t("加载失败"))}).finally(()=>{w||f(!1)}),()=>{w=!0}},[e,n,r]),h.useEffect(()=>{e||s(l)},[e,l]);const{roots:k,spanMap:N}=h.useMemo(()=>{var w;if(!((w=c==null?void 0:c.Spans)!=null&&w.length))return{roots:[],spanMap:new Map};const T=new Map;return c.Spans.forEach(F=>T.set(F.SpanId,F)),{roots:sa(c.Spans),spanMap:T}},[c]),M=b&&N.get(b)||null,A=h.useMemo(qa,[]),B=()=>d?a.default.createElement("div",{className:"agent-obs-td-drawer-loading"},a.default.createElement(v.LoadingTip,null)):g?a.default.createElement("div",{className:"agent-obs-td-drawer-error"},a.default.createElement(v.Alert,{type:"error"},g)):!c||!k.length?a.default.createElement("div",{className:"agent-obs-td-drawer-empty"},i.t("暂无数据")):o==="tree"?a.default.createElement(Na,{roots:k,activeId:b,onActiveChange:x}):o==="timeline"?a.default.createElement(Fa,{roots:k,activeId:b,onActiveChange:x}):a.default.createElement(Ia,{roots:k,activeId:b,onActiveChange:x});return a.default.createElement(v.Drawer,{className:"agent-obs-td-drawer",style:{width:u,height:"calc(100vh - 50px)",boxSizing:"border-box"},visible:e,placement:"right",size:"xl",title:null,disableCloseIcon:!0,onClose:t,outerClickClosable:!0,showMask:!0},a.default.createElement("div",{className:"agent-obs-td-drawer-body"},a.default.createElement("div",{className:"agent-obs-td-drawer-left"},a.default.createElement(v.Tabs,{className:"agent-obs-td-drawer-tabs",style:{height:40},variant:"card-outline",tabs:A,animated:!1,defaultActiveId:o,onActive:w=>s(w.id)}),a.default.createElement("div",{style:{paddingLeft:10},className:`agent-obs-td-drawer-view${o==="graph"?" agent-obs-td-drawer-view--graph":""}`},B())),a.default.createElement("div",{className:"agent-obs-td-drawer-right"},d||g?null:a.default.createElement(Da,{span:M,closeBtn:a.default.createElement("button",{type:"button",className:"agent-obs-td-drawer-close",onClick:t,"aria-label":i.t("关闭")},a.default.createElement(v.Icon,{type:"close",size:20}))}))))}var Ua={zh:{k_0st2kno:"Agent 成功率",k_1vdb2c7:"Agent 调用",k_00hhj74:"ConversionID",k_1opac2j:"Duration",k_03sgcnx:"ERROR",k_037uk0t:"Error",k_030ock3:"Input",k_1l3vgxz:"LLM Attributes",k_13bt4df:"LLM 调用",k_0xyt54m:"LLM 调用平均耗时",k_1tv2hle:"LLM 调用次数",k_02vcuqy:"Model",k_003hnfl:"OK",k_130omsu:"Other Attributes",k_0sl6zfe:"Output",k_151iedo:"Sequential",k_0yhbajy:"Parallel",k_11rfpuu:"Span Attributes",k_0yisj0j:"Tree",k_01oqkxq:"Timeline",k_02yf5ih:"Graph",k_1len88c:"TraceId (RunId)",k_0yj2fzd:"Span",k_0rakmad:"zoom in",k_0jw4x30:"zoom out",k_04p9rpk:"fit to view",k_03r8nh8:"AGENT",k_03jowco:"CHAIN",k_038v7ai:"EMBEDDING",k_0e3gmau:"EVALUATOR",k_0uolhdi:"GUARDRAIL",k_037699k:"LLM",k_1ga8ach:"PROMPT",k_1sjjr8z:"RERANKER",k_1babzmh:"RETRIEVER",k_0yjq7ul:"TOOL",k_1bemrrz:"MANUAL",k_1a804jx:"UNKNOWN",k_0j7hjgk:"SpanId",k_1dcdm1t:"SpanKind",k_1tkqbyj:"Timestamp",k_16wdblm:"Token 总消耗",k_1087kga:"Tokens in",k_0csyyqr:"Tokens out",k_1pugrjj:"Total Tokens",k_1tn04w9:"TraceId",k_00046ua:"万",k_00046tr:"个",k_00046qi:"亿",k_002r79h:"全部",k_17cbs21:"全部环境",k_002qzi3:"关闭",k_003lxmq:"刷新",k_0f8b3ws:"加载失败",k_003m8qf:"参数",k_0pa2i2z:"可根据 run-id 和 conversation-id 搜索",k_14tn4z1:"响应时间(秒)",k_002umy9:"失败",k_003pmuv:"工具",k_10z70rn:"平均 Token/LLM 调用",k_003qqk4:"开发",k_0by9bfw:"开始时间",k_003qe0a:"成功",k_1f3mps5:"数据延迟 < 10min",k_03cutj0:"无属性",k_03e5hqz:"日同比",k_13qhqgp:"暂无数据",k_0004138:"次",k_003nzwy:"状态",k_003s37t:"环境",k_003twt9:"生产",k_17bw8lt:"生产环境",k_0fwgfbc:"用量概览",k_0bycnor:"结束时间",k_0mvqrk5:"请选择左侧节点查看详情",k_0ld10w7:"请选择时间范围",k_1gd9xqm:"近12小时",k_0vd4sg9:"近15分钟",k_126g2v0:"近1小时",k_1gd9wh7:"近24小时",k_0vd6ff2:"近30分钟",k_126g2vv:"近6小时",k_03g9k26:"近3天",k_03g9k5m:"近7天",k_002uzrd:"预览",k_17c63b9:"预览环境"},en:{k_0st2kno:"Agent Success Rate",k_1vdb2c7:"Agent Calls",k_00hhj74:"Conversation ID",k_1opac2j:"Duration",k_03sgcnx:"ERROR",k_037uk0t:"Error",k_030ock3:"Input",k_1l3vgxz:"LLM Attributes",k_13bt4df:"LLM Calls",k_0xyt54m:"Average LLM Latency",k_1tv2hle:"LLM Calls",k_02vcuqy:"Model",k_003hnfl:"OK",k_130omsu:"Other Attributes",k_0sl6zfe:"Output",k_151iedo:"Sequential",k_0yhbajy:"Parallel",k_11rfpuu:"Span Attributes",k_0yisj0j:"Tree",k_01oqkxq:"Timeline",k_02yf5ih:"Graph",k_1len88c:"Trace ID (Run ID)",k_0yj2fzd:"Span",k_0rakmad:"Zoom in",k_0jw4x30:"Zoom out",k_04p9rpk:"Fit to view",k_03r8nh8:"AGENT",k_03jowco:"CHAIN",k_038v7ai:"EMBEDDING",k_0e3gmau:"EVALUATOR",k_0uolhdi:"GUARDRAIL",k_037699k:"LLM",k_1ga8ach:"PROMPT",k_1sjjr8z:"RERANKER",k_1babzmh:"RETRIEVER",k_0yjq7ul:"TOOL",k_1bemrrz:"MANUAL",k_1a804jx:"UNKNOWN",k_0j7hjgk:"Span ID",k_1dcdm1t:"Span Kind",k_1tkqbyj:"Timestamp",k_16wdblm:"Total Token Usage",k_1087kga:"Tokens In",k_0csyyqr:"Tokens Out",k_1pugrjj:"Total Tokens",k_1tn04w9:"Trace ID",k_00046ua:"Ten Thousand",k_00046tr:"items",k_00046qi:"Billion",k_002r79h:"All",k_17cbs21:"All Environments",k_002qzi3:"Close",k_003lxmq:"Refresh",k_0f8b3ws:"Load Failed",k_003m8qf:"Parameters",k_0pa2i2z:"Search by run-id or conversation-id",k_14tn4z1:"Response Time (s)",k_002umy9:"Failed",k_003pmuv:"Tool",k_10z70rn:"Average Tokens per LLM Call",k_003qqk4:"Development",k_0by9bfw:"Start Time",k_003qe0a:"Success",k_1f3mps5:"Data latency < 10 min",k_03cutj0:"No attributes",k_03e5hqz:"Day-over-day",k_13qhqgp:"No Data",k_0004138:"times",k_003nzwy:"Status",k_003s37t:"Environment",k_003twt9:"Production",k_17bw8lt:"Production Environment",k_0fwgfbc:"Usage Overview",k_0bycnor:"End Time",k_0mvqrk5:"Select a node on the left to view details",k_0ld10w7:"Select a time range",k_1gd9xqm:"Last 12 Hours",k_0vd4sg9:"Last 15 Minutes",k_126g2v0:"Last 1 Hour",k_1gd9wh7:"Last 24 Hours",k_0vd6ff2:"Last 30 Minutes",k_126g2vv:"Last 6 Hours",k_03g9k26:"Last 3 Days",k_03g9k5m:"Last 7 Days",k_002uzrd:"Preview",k_17c63b9:"Preview Environment"}},Xa=$t,Qa=Zt,Za=za,Ja=Ua;export{Xa as A,Za as T,Ja as a,Qa as b};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.agent-obs-loading{position:relative;width:100%}.agent-obs-loading-content{width:100%}.agent-obs-loading-mask{position:absolute;top:0;left:0;right:0;bottom:0;background-color:#fff9;transition:opacity .3s ease-in;z-index:10;display:flex;justify-content:center;align-items:center}.agent-obs-loading-mask--hidden{opacity:0;pointer-events:none}.agent-obs-empty{width:100%;height:100%;position:relative}.agent-obs-empty-bg{height:100%;padding-top:3px;display:flex;justify-content:center;align-items:center}.agent-obs-empty-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#fff;padding:4px;font-size:12px;color:#888;line-height:1.4}.agent-obs-filter{margin-bottom:10px}.agent-obs-filter-body{position:relative}.agent-obs-filter-tip{position:absolute;right:20px;top:30px;transform:translateY(-50%)}@keyframes agent-obs-filter-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.agent-obs-filter-refresh:hover{background-color:#fff!important}.agent-obs-filter-refresh--rotating{animation:agent-obs-filter-rotate 1s linear infinite}.agent-obs-traces-filter{margin-bottom:20px}.agent-obs-traces-filter .filter-actions{display:inline-flex;align-items:center;gap:8px;flex-wrap:nowrap}.agent-obs-traces-filter .log-filter-search{width:280px!important}.agent-obs-traces-filter .quick-date-picker{display:inline-flex;align-items:center}.agent-obs-traces-filter .quick-date-picker .time-range-picker [class*=-datetimepicker__input][class*=-datepicker__input--range]{width:315px}.agent-obs-overview{margin-bottom:10px;min-height:160px}.agent-obs-overview-title{font-size:14px;font-weight:600;color:#000;margin-bottom:16px}.agent-obs-overview-grid{position:relative;display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px 0}.agent-obs-overview-grid--loading .agent-obs-overview-cell{visibility:hidden}.agent-obs-overview-loading-mask{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.agent-obs-overview-cell{position:relative;display:flex;flex-direction:column;gap:8px;padding:0 24px}.agent-obs-overview-cell:after{content:"";position:absolute;right:0;top:8px;bottom:8px;width:1px;background-color:#e5e5e5}.agent-obs-overview-cell:last-child:after{display:none}.agent-obs-overview-cell:first-child{padding-left:0}.agent-obs-overview-label{font-size:14px;color:#000;line-height:1.4}.agent-obs-overview-value-row{display:flex;align-items:baseline}.agent-obs-overview-value{font-size:24px;font-weight:500;color:#000;line-height:1.2}.agent-obs-overview-unit{font-size:14px;color:#888;margin-left:2px}.agent-obs-overview-delta{font-size:12px;line-height:1.4}.agent-obs-overview-delta-label{color:#888;margin-right:6px}.agent-obs-overview-delta-value--up{color:#16a34a}.agent-obs-overview-delta-value--down{color:#e54545}.agent-obs-overview-delta-value--flat{color:#888}.agent-obs-card-body{padding:24px}.agent-obs-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px}.agent-obs-card-titlebox{display:flex;flex-direction:column;gap:6px}.agent-obs-card-title{font-size:14px;font-weight:600;color:#000;line-height:1.4}.agent-obs-card-unit{font-size:12px;color:#888;line-height:1.4}.agent-obs-card-jump{cursor:pointer;display:flex;align-items:center;color:#000}.agent-obs-card-link{text-decoration:none;color:inherit;display:block}.agent-obs-card-chart{margin-top:8px}.agent-obs-card-empty{width:100%;display:flex;justify-content:center;align-items:center}.agent-obs-traces-wrapper{background-color:#fff;padding:16px 20px}.agent-obs-traces-table [class*=-table__header] [class*=-dropdown-filter]{display:flex;align-items:center;padding:0}.agent-obs-traces-table [class*=-table__header] [class*=-dropdown-filter] .ruyi-icon.ruyi-icon-filter{position:static;margin-left:4px;flex:0 0 auto}.agent-obs-traces-trace-id{color:var(--tea-color-text-brand-default, #006eff);cursor:pointer;text-decoration:none}.agent-obs-traces-trace-id:hover{color:var(--tea-color-text-brand-hover, #006eff);text-decoration:none}.agent-obs-traces-trace-id:visited{color:var(--tea-color-text-brand-default, #006eff)}.agent-obs-traces-env--production{background-color:#e8f5ec;color:#16a34a}.agent-obs-traces-env--preview{background-color:#e8f1ff;color:#006eff}.agent-obs-traces-status--success{color:var(--tea-color-text-success-default, #16a34a)}.agent-obs-traces-status--failed,.agent-obs-traces-status--timeout{color:var(--tea-color-text-error-default, #e54545)}.agent-obs-traces-status--running{color:var(--tea-color-text-weak, #888)}.agent-obs-td-drawer [class$=-drawer__body-inner],.agent-obs-td-drawer [class*="-drawer__body-inner "]{height:100%!important}.agent-obs-td-drawer>[class$=-drawer__body],.agent-obs-td-drawer>[class*="-drawer__body "]{padding-top:0!important;padding-left:0!important;padding-right:0!important}.agent-obs-td-drawer [class$=-tabs__tabitem],.agent-obs-td-drawer [class*="-tabs__tabitem "]{margin-right:0!important;line-height:30px!important}.agent-obs-td-drawer-tabs{margin-bottom:12px}.agent-obs-td-drawer-close{flex:0 0 auto;border:none;background:transparent;cursor:pointer;color:#888;padding:8px;display:inline-flex;align-items:center;justify-content:center;border-radius:4px;transition:background .15s}.agent-obs-td-drawer-close:hover{background:#f0f2f5;color:#000}.agent-obs-td-drawer-body{display:flex;height:100%;min-height:0}.agent-obs-td-drawer-left{width:480px;border-right:1px solid #e5e5e5;display:flex;flex-direction:column;min-height:0;overflow:hidden;height:100%}.agent-obs-td-drawer-view{flex:1 1 auto;min-height:0;overflow:auto}.agent-obs-td-drawer-view--graph{overflow:hidden}.agent-obs-td-drawer-right{flex:1;height:100%;overflow:auto;padding:20px 24px;background:#fff;position:relative}.agent-obs-td-drawer-loading,.agent-obs-td-drawer-error,.agent-obs-td-drawer-empty{padding:60px 16px;display:flex;justify-content:center;align-items:center;color:#888;font-size:13px;width:100%}.agent-obs-td-tree{display:flex;flex-direction:column;font-size:13px;color:#000}.agent-obs-td-tree-row{display:flex;align-items:center;height:32px;box-sizing:border-box;padding:0 8px 0 0;cursor:pointer;border-radius:4px;position:relative}.agent-obs-td-tree-row:hover .agent-obs-td-tree-row-content{background:#f0f2f5}.agent-obs-td-tree-row--active .agent-obs-td-tree-row-content{background:#eef3ff}.agent-obs-td-tree-row--active .agent-obs-td-tree-icon{color:#1c66e5}.agent-obs-td-tree-row--active .agent-obs-td-tree-name,.agent-obs-td-tree-row--active .agent-obs-td-tree-dur{color:#006eff}.agent-obs-td-tree-row--error .agent-obs-td-tree-name{color:#e54545}.agent-obs-td-tree-row-content{flex:1 1 auto;min-width:0;display:flex;align-items:center;height:100%;border-radius:4px}.agent-obs-td-tree-indent{position:relative;align-self:stretch;display:block}.agent-obs-td-tree-lines{display:block}.agent-obs-td-tree-control{position:absolute;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center}.agent-obs-td-tree-expander{width:16px;height:16px;border-radius:50%;background:#eceae7;color:#666;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .15s}.agent-obs-td-tree-expander:hover{background:#e0ddda}.agent-obs-td-tree-expander:not(.agent-obs-td-tree-expander--expanded){transform:rotate(-90deg)}.agent-obs-td-tree-leaf-dot{width:6px;height:6px;border-radius:50%;background:#a8a29e;display:inline-block}.agent-obs-td-tree-icon{flex:0 0 auto;display:inline-flex;color:#333;margin-left:6px;margin-right:8px}.agent-obs-td-tree-name{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.agent-obs-td-tree-dur{flex:0 0 auto;font-size:12px;color:#a8a29e;margin-left:auto;padding-left:12px;padding-right:8px;font-variant-numeric:tabular-nums}.agent-obs-td-timeline-wrapper{display:flex;flex-direction:column;font-size:13px}.agent-obs-td-timeline-axis{position:sticky;top:0;z-index:2;background:#fff;display:flex;align-items:center;gap:8px;border-bottom:1px solid #e5e5e5;padding:6px 8px;font-size:12px;color:#a8a29e}.agent-obs-td-timeline-axis-label{flex:0 0 200px}.agent-obs-td-timeline-axis-track{flex:1 1 auto;position:relative;display:flex;font-size:11px}.agent-obs-td-timeline-axis-dur{flex:0 0 70px;text-align:right}.agent-obs-td-timeline-axis-tick{flex:1 1 0}.agent-obs-td-timeline-axis-tick--start{text-align:left}.agent-obs-td-timeline-axis-tick--mid{text-align:center}.agent-obs-td-timeline-axis-tick--end{text-align:right}.agent-obs-td-timeline-row{display:flex;align-items:center;gap:8px;padding:6px 8px;cursor:pointer;border-radius:4px}.agent-obs-td-timeline-row:hover{background:#f0f2f5}.agent-obs-td-timeline-row--active{background:#eef3ff}.agent-obs-td-timeline-label{flex:0 0 200px;display:flex;align-items:center;gap:6px;overflow:hidden}.agent-obs-td-timeline-label-icon{flex:0 0 auto;display:inline-flex;color:#333}.agent-obs-td-timeline-label-op{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agent-obs-td-timeline-track{flex:1 1 auto;position:relative;height:16px}.agent-obs-td-timeline-track-line{position:absolute;left:0;right:0;top:50%;height:1px;background:#e9ecf1;transform:translateY(-50%)}.agent-obs-td-timeline-bar{position:absolute;top:50%;height:10px;transform:translateY(-50%);border-radius:2px;min-width:2px}.agent-obs-td-timeline-dur{flex:0 0 70px;font-size:12px;color:#a8a29e;text-align:right;font-variant-numeric:tabular-nums}.agent-obs-td-graph{position:relative;width:100%;height:100%;overflow:hidden;background:#fff;cursor:grab;-webkit-user-select:none;user-select:none}.agent-obs-td-graph--panning{cursor:grabbing}.agent-obs-td-graph-svg{display:block;width:100%;height:100%}.agent-obs-td-graph-toolbar{position:absolute;top:12px;right:16px;display:inline-flex;align-items:center;height:36px;padding:0 6px;background:#fff;border:1px solid #e5e5e5;border-radius:8px;box-shadow:0 2px 8px #0000000f;cursor:default;-webkit-user-select:none;user-select:none;z-index:2}.agent-obs-td-graph-toolbar-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:transparent;border:none;border-radius:4px;color:#000;font-size:18px;line-height:1;cursor:pointer;transition:background-color .15s}.agent-obs-td-graph-toolbar-btn:hover:not(:disabled){background:#f3f4f6}.agent-obs-td-graph-toolbar-btn:disabled{color:#cbd5e1;cursor:not-allowed}.agent-obs-td-graph-toolbar-percent{min-width:44px;padding:0 4px;color:#000;font-size:13px;font-variant-numeric:tabular-nums;text-align:center}.agent-obs-td-graph-toolbar-divider{width:1px;height:18px;margin:0 4px;background:#e5e5e5}.agent-obs-td-graph-toolbar-fit{color:#006eff}.agent-obs-td-graph-node{cursor:pointer}.agent-obs-td-graph-node-box{fill:#fff;stroke-width:2}.agent-obs-td-graph-node--AGENT .agent-obs-td-graph-node-box{stroke:#4e5ff2;fill:#eef0ff}.agent-obs-td-graph-node--CHAIN .agent-obs-td-graph-node-box,.agent-obs-td-graph-node--TOOL .agent-obs-td-graph-node-box{stroke:#16a34a;fill:#e9f6ef}.agent-obs-td-graph-node--LLM .agent-obs-td-graph-node-box{stroke:#7b61ff;fill:#f1edff}.agent-obs-td-graph-node--RETRIEVER .agent-obs-td-graph-node-box,.agent-obs-td-graph-node--RERANKER .agent-obs-td-graph-node-box{stroke:#0ea5e9;fill:#e6f4fb}.agent-obs-td-graph-node--EMBEDDING .agent-obs-td-graph-node-box{stroke:#f59e0b;fill:#fdf3e1}.agent-obs-td-graph-node--EVALUATOR .agent-obs-td-graph-node-box,.agent-obs-td-graph-node--GUARDRAIL .agent-obs-td-graph-node-box{stroke:#e54545;fill:#fde8e8}.agent-obs-td-graph-node--PROMPT .agent-obs-td-graph-node-box{stroke:#8b5cf6;fill:#f1edff}.agent-obs-td-graph-node--UNKNOWN .agent-obs-td-graph-node-box{stroke:#a8a29e;fill:#f6f7f9}.agent-obs-td-graph-node--error .agent-obs-td-graph-node-box{stroke:#e54545!important}.agent-obs-td-graph-node--active .agent-obs-td-graph-node-box{stroke-width:3}.agent-obs-td-graph-node-op{font-size:13px;font-weight:500;fill:#000}.agent-obs-td-graph-node-dur{font-size:12px;fill:#a8a29e}.agent-obs-td-graph-node--LLM .agent-obs-td-graph-node-op{fill:#7b61ff}.agent-obs-td-graph-edge{stroke:#a8a29e;stroke-width:1.5;fill:none}.agent-obs-td-graph-edge--dashed{stroke-dasharray:4 4;stroke:#7b61ff;opacity:.7}.agent-obs-td-graph-edge-label{font-size:11px;fill:#a8a29e}.agent-obs-td-detail{font-size:13px;color:#000}.agent-obs-td-detail-empty{padding:40px 16px;color:#888;font-size:13px;text-align:center}.agent-obs-td-detail-header{display:flex;align-items:center;gap:8px;margin-bottom:14px}.agent-obs-td-detail-header-icon{flex:0 0 auto;display:inline-flex;color:#7b61ff}.agent-obs-td-detail-header-title{flex:1 1 auto;font-size:16px;font-weight:600;color:#000;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agent-obs-td-detail-badge{flex:0 0 auto;padding:2px 10px;border-radius:10px;font-size:12px;font-weight:500}.agent-obs-td-detail-badge--ok{background:#d7f7e3;color:#16a34a}.agent-obs-td-detail-badge--error{background:#fdd7d7;color:#e54545}.agent-obs-td-detail-metrics{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:14px}.agent-obs-td-detail-metric{background:#f5f6f8;border-radius:4px;padding:10px 12px;min-width:0}.agent-obs-td-detail-metric-label{font-size:12px;color:#888;line-height:1.4;margin-bottom:2px}.agent-obs-td-detail-metric-value{font-size:14px;font-weight:500;color:#000;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agent-obs-td-detail-info{background-color:#f3f4f7;padding:15px 30px;display:flex;gap:20px;flex-direction:column;margin:0 -24px}.agent-obs-td-detail-pills{display:flex;flex-wrap:wrap;gap:16px}.agent-obs-td-detail-pill{display:inline-flex;align-items:center;gap:8px;background:#d6d3d1;border-radius:4px;padding:4px 10px;font-size:12px;max-width:100%;overflow:hidden}.agent-obs-td-detail-pill-label{color:#888;flex:0 0 auto}.agent-obs-td-detail-pill-value{color:#000;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}.agent-obs-td-detail-io{padding:12px 14px;background-color:#fff}.agent-obs-td-detail-io-title{font-size:12px;color:#888;margin-bottom:8px}.agent-obs-td-detail-io-title--error{color:#e54545}.agent-obs-td-detail-io-content{font-size:13px;color:#000;white-space:pre-wrap;word-break:break-word;max-height:180px;overflow:auto;font-family:Menlo,Consolas,Courier New,monospace;line-height:1.5;margin:0}.agent-obs-td-detail-io-empty{color:#888;font-family:inherit}.agent-obs-td-detail-attrs-wrap{margin-top:16px;padding-top:8px}.agent-obs-td-detail-attrs{display:flex;flex-direction:column}.agent-obs-td-detail-attrs-empty{padding:16px;font-size:12px;color:#888}.agent-obs-td-detail-attr{border-bottom:1px solid #e5e5e5;padding:8px 0}.agent-obs-td-detail-attr:last-child{border-bottom:none}.agent-obs-td-detail-attr-main{display:flex;align-items:flex-start;gap:8px;font-size:12px;font-family:Menlo,Consolas,Courier New,monospace}.agent-obs-td-detail-attr-caret{flex:0 0 14px;width:14px;height:14px;display:inline-flex;align-items:center;justify-content:center;color:#a8a29e;font-size:8px;cursor:pointer;transition:transform .15s;margin-top:2px}.agent-obs-td-detail-attr-caret--placeholder{cursor:default;visibility:hidden}.agent-obs-td-detail-attr-caret--expanded{transform:rotate(90deg)}.agent-obs-td-detail-attr-key{flex:0 0 280px;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#000}.agent-obs-td-detail-attr-value{flex:1 1 auto;min-width:0;color:#000;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agent-obs-td-detail-attr-value--expanded{white-space:pre-wrap;word-break:break-word;overflow:visible}.agent-obs-td-detail-attr-json{margin:8px 0 0 22px;padding:10px 12px;background:#f5f6f8;border-radius:4px;font-size:12px;color:#000;font-family:Menlo,Consolas,Courier New,monospace;white-space:pre;overflow:auto;max-height:300px}.hljs{background:transparent}.hljs .hljs-attr{color:#0550ae}.hljs .hljs-string{color:#0a7b30}.hljs .hljs-number,.hljs .hljs-literal{color:#cf222e}.hljs .hljs-punctuation{color:#57606a}
|