edgeone 1.6.21 → 1.6.22-beta.1

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.
@@ -3,7 +3,6 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import asyncio
6
- import hashlib
7
6
  import importlib
8
7
  import json
9
8
  import os
@@ -11,7 +10,6 @@ import re
11
10
  import sys
12
11
  from typing import Any, Callable
13
12
  from urllib.parse import parse_qs
14
- import httpx
15
13
 
16
14
  # --- Observability bootstrap (must run before user code imports) ---
17
15
  # Reads entry names from AGENT_OBSERVABILITY_ENTRIES env var (set by main.py
@@ -128,71 +126,6 @@ def _is_interrupt_exception(err: BaseException) -> bool:
128
126
  return True
129
127
  return False
130
128
 
131
- # --- Proxy transport for credential requests ---
132
-
133
- _PROXY_UUID = "{{PAGES_PROXY_UUID}}"
134
- _PROXY_HOST = "{{PAGES_PROXY_HOST}}"
135
-
136
-
137
- def _is_proxy_enabled() -> bool:
138
- """Check if proxy placeholders have been replaced with real values."""
139
- return (
140
- not _PROXY_UUID.startswith("{{")
141
- and not _PROXY_HOST.startswith("{{")
142
- and bool(_PROXY_UUID)
143
- and bool(_PROXY_HOST)
144
- )
145
-
146
-
147
- class _ProxyTransport(httpx.AsyncBaseTransport):
148
- """Rewrites requests to go through the EdgeOne proxy with signing headers.
149
-
150
- Signature algorithm matches Node fetch-proxy.js:
151
- sign = md5(timestamp + '-' + pathname + '-' + uuid)
152
- """
153
-
154
- def __init__(self) -> None:
155
- self._inner = httpx.AsyncHTTPTransport()
156
-
157
- async def handle_async_request(self, request: httpx.Request) -> httpx.Response:
158
- original_url = request.url
159
- pathname = original_url.raw_path.decode("ascii").split("?")[0]
160
- timestamp = str(int(__import__("time").time() * 1000))
161
- sign = hashlib.md5(
162
- f"{timestamp}-{pathname}-{_PROXY_UUID}".encode()
163
- ).hexdigest()
164
-
165
- # Rewrite URL to proxy host, preserving path and query
166
- proxy_url = original_url.copy_with(
167
- host=_PROXY_HOST.replace("https://", "").replace("http://", ""),
168
- scheme="https",
169
- )
170
-
171
- # Add signing headers
172
- request.headers["oe-host"] = str(original_url.host)
173
- request.headers["oe-timestamp"] = timestamp
174
- request.headers["oe-sign"] = sign
175
-
176
- # Build new request targeting proxy
177
- proxy_request = httpx.Request(
178
- method=request.method,
179
- url=proxy_url,
180
- headers=request.headers,
181
- content=request.content,
182
- )
183
-
184
- return await self._inner.handle_async_request(proxy_request)
185
-
186
- async def aclose(self) -> None:
187
- await self._inner.aclose()
188
-
189
-
190
- def _build_proxy_client() -> httpx.AsyncClient | None:
191
- """Build an httpx.AsyncClient with proxy transport, or None if proxy is not configured."""
192
- if not _is_proxy_enabled():
193
- return None
194
- return httpx.AsyncClient(transport=_ProxyTransport(), timeout=30.0)
195
-
196
129
  # --- Cold start ---
197
130
  try:
198
131
  _route_table_raw = json.loads(os.environ.get("AGENT_ROUTE_TABLE", "{}"))
@@ -262,13 +195,6 @@ def _create_store_resolver() -> Callable[[str], Any]:
262
195
  print(f"[agent-python] pages-blob not available: {type(_blob_import_err).__name__}: {_blob_import_err}", file=sys.stderr, flush=True)
263
196
  print("[agent-python] using InMemoryStore", file=sys.stderr, flush=True)
264
197
 
265
- # Build proxy client for credential requests (only in prod when placeholders are replaced)
266
- _proxy_client = _build_proxy_client()
267
- if _proxy_client is not None:
268
- print("[agent-python] Proxy enabled for credential requests", file=sys.stderr, flush=True)
269
- else:
270
- print("[agent-python] Proxy not configured, using direct connections", file=sys.stderr, flush=True)
271
-
272
198
  def resolver(route_path: str) -> Any:
273
199
  cache_key = str(route_path or "/")
274
200
  if cache_key in cache:
@@ -287,7 +213,7 @@ def _create_store_resolver() -> Callable[[str], Any]:
287
213
  if _get_store is not None:
288
214
  try:
289
215
  _project_id = os.environ.get("PAGES_PROJECT_ID", "") or None
290
- blob_store = _get_store(store_name, project_id=_project_id, token=_dev_credential or None, consistency="strong", http_client=_proxy_client) if (_dev_credential and _project_id) else _get_store(store_name, consistency="strong", http_client=_proxy_client)
216
+ blob_store = _get_store(store_name, project_id=_project_id, token=_dev_credential or None, consistency="strong") if (_dev_credential and _project_id) else _get_store(store_name, consistency="strong")
291
217
  store = BlobBackedStore(blob_store)
292
218
  except Exception as e:
293
219
  print(f"[agent-python] WARNING: Failed to create blob store for {cache_key}: {e}, falling back to InMemoryStore", file=sys.stderr, flush=True)
@@ -418,13 +344,12 @@ def _create_store_blob() -> Any:
418
344
 
419
345
  try:
420
346
  from pages_blob import get_store as _get_store_fn
421
- proxy_client = _build_proxy_client()
422
347
  _mem_project_id = os.environ.get("PAGES_PROJECT_ID", "") or None
423
348
  _mem_token = os.environ.get("PAGES_BLOB_DEPLOY_CREDENTIAL", "") or None
424
349
  if _mem_token and _mem_project_id:
425
- blob_store = _get_store_fn(store_name, project_id=_mem_project_id, token=_mem_token, consistency="strong", http_client=proxy_client)
350
+ blob_store = _get_store_fn(store_name, project_id=_mem_project_id, token=_mem_token, consistency="strong")
426
351
  else:
427
- blob_store = _get_store_fn(store_name, consistency="strong", http_client=proxy_client)
352
+ blob_store = _get_store_fn(store_name, consistency="strong")
428
353
  print(
429
354
  f"[agent-python] Conversation store: blob-backed → {store_name}",
430
355
  file=sys.stderr, flush=True,
@@ -657,6 +582,21 @@ async def app(scope: dict, receive, send) -> None:
657
582
 
658
583
  # 统一日志:path + scfRequestId + statusCode 合并为一条
659
584
  print(f"Makers request path: {_pages_full_path} |scfRequestId={_scf_request_id}|statusCode={result.status}|", file=sys.stderr, flush=True)
585
+ _eo_pages_host = headers.get("eo-pages-host", "")
586
+ _host_header = headers.get("host", "")
587
+ if not _eo_pages_host or _eo_pages_host in ("localhost:9000", "undefined", "null") or _host_header == "localhost:9000":
588
+ _info = {
589
+ "host": _host_header,
590
+ "user-agent": headers.get("user-agent", ""),
591
+ "eo-pages-host": _eo_pages_host,
592
+ "eo-connecting-ip": headers.get("eo-connecting-ip", ""),
593
+ "x-forwarded-for": headers.get("x-forwarded-for", ""),
594
+ "x-real-ip": headers.get("x-real-ip", ""),
595
+ "functions-request-id": headers.get("functions-request-id", ""),
596
+ "path": path,
597
+ "url": _pages_full_path,
598
+ }
599
+ print(f"Makers request info: {json.dumps(_info, ensure_ascii=False)}", file=sys.stderr, flush=True)
660
600
 
661
601
  # Send response
662
602
  response_headers = [(k.encode(), str(v).encode()) for k, v in result.headers.items()]
@@ -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-BpTIot8x.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})}));
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-DN8YhmEp.js"></script>
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-BpTIot8x.js">
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-CEOY4DZz.css">
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edgeone",
3
- "version": "1.6.21",
3
+ "version": "1.6.22-beta.1",
4
4
  "description": "Command-line interface for TencentCloud Pages Functions",
5
5
  "bin": {
6
6
  "edgeone": "./edgeone-bin/edgeone.js"
@@ -49,7 +49,7 @@
49
49
  "@edgeone/framework-detect": "^0.0.2",
50
50
  "@edgeone/is-spa": "^0.0.3",
51
51
  "@edgeone/nuxt-pages": "1.1.0",
52
- "@edgeone/opennextjs-pages": "0.2.10",
52
+ "@edgeone/opennextjs-pages": "0.2.10-beta.2",
53
53
  "@edgeone/pages-agent-toolkit": "^0.1.34",
54
54
  "@edgeone/pages-blob": "^0.0.16",
55
55
  "archiver": "^7.0.1",