llm-simple-router 1.0.11 → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/dist/admin/dashboard.d.ts +2 -0
  2. package/dist/admin/dashboard.js +112 -70
  3. package/dist/admin/groups.js +10 -1
  4. package/dist/admin/logs.js +30 -1
  5. package/dist/admin/monitor.js +16 -0
  6. package/dist/admin/providers.d.ts +35 -0
  7. package/dist/admin/providers.js +53 -32
  8. package/dist/admin/proxy-enhancement.js +37 -0
  9. package/dist/admin/quick-setup.js +33 -0
  10. package/dist/admin/retry-rules.js +13 -1
  11. package/dist/admin/router-keys.js +6 -0
  12. package/dist/admin/routes.js +1 -1
  13. package/dist/admin/schedules.js +11 -1
  14. package/dist/admin/settings.js +33 -0
  15. package/dist/db/index.d.ts +1 -1
  16. package/dist/db/index.js +1 -1
  17. package/dist/db/stats.d.ts +6 -0
  18. package/dist/db/stats.js +1 -1
  19. package/frontend-dist/assets/{AuthLayout-BNvGjJv3.js → AuthLayout-C7E43a6p.js} +1 -1
  20. package/frontend-dist/assets/{Card-BNz2IkLE.js → Card-L1MI4nan.js} +1 -1
  21. package/frontend-dist/assets/{CardContent-DszVPJgx.js → CardContent-DUzyQmbU.js} +1 -1
  22. package/frontend-dist/assets/{CardTitle-BeBkx0ns.js → CardTitle-oL3GJ7xA.js} +1 -1
  23. package/frontend-dist/assets/{CascadingModelSelect-Z7-ur9_p.js → CascadingModelSelect-C_Ydm0fg.js} +1 -1
  24. package/frontend-dist/assets/{Checkbox-CAQnc0qV.js → Checkbox-OkYUPlFe.js} +1 -1
  25. package/frontend-dist/assets/{CollapsibleContent-CHlSINCS.js → CollapsibleContent-4ZwwyZPz.js} +1 -1
  26. package/frontend-dist/assets/{CollapsibleTrigger-CJMUoPRa.js → CollapsibleTrigger-Cg651F6-.js} +1 -1
  27. package/frontend-dist/assets/{ConcurrencyControl-BcUA816m.js → ConcurrencyControl-LFw4H_oP.js} +1 -1
  28. package/frontend-dist/assets/{Dashboard-DXvcAfAx.js → Dashboard-Bqups5aa.js} +2 -2
  29. package/frontend-dist/assets/{Input-Dr2XqfSh.js → Input-CLu4bS6g.js} +1 -1
  30. package/frontend-dist/assets/{Label-Ct_DR7Ui.js → Label-DVu1uVI7.js} +1 -1
  31. package/frontend-dist/assets/{Login-C8_p8684.js → Login--CFSqs7j.js} +1 -1
  32. package/frontend-dist/assets/Logs-CJPid8DO.js +1 -0
  33. package/frontend-dist/assets/ModelMappings-BTM9yiL6.js +1 -0
  34. package/frontend-dist/assets/Monitor-CBLKclHj.js +1 -0
  35. package/frontend-dist/assets/Providers-5RjiOHfn.js +1 -0
  36. package/frontend-dist/assets/ProxyEnhancement-XKgw6IoB.js +1 -0
  37. package/frontend-dist/assets/QuickSetup-CISVMd51.js +1 -0
  38. package/frontend-dist/assets/RetryRules-DVSEfmo2.js +1 -0
  39. package/frontend-dist/assets/RouterKeys-Cx2n1D0b.js +1 -0
  40. package/frontend-dist/assets/{RouterKeys-B0enpkQK.css → RouterKeys-D8tI3eHr.css} +1 -1
  41. package/frontend-dist/assets/{RovingFocusItem-DlOsi-lb.js → RovingFocusItem-CB_XB24W.js} +1 -1
  42. package/frontend-dist/assets/Schedules-BMD8vrVd.js +1 -0
  43. package/frontend-dist/assets/{Separator-BO94Jk9p.js → Separator-DHTeoMaB.js} +1 -1
  44. package/frontend-dist/assets/Settings-C3yzrB1_.js +6 -0
  45. package/frontend-dist/assets/{Setup-mAyd7FhD.js → Setup-Cgf37mQl.js} +1 -1
  46. package/frontend-dist/assets/{Skeleton-Di0WMQf-.js → Skeleton-DcA4Afm_.js} +1 -1
  47. package/frontend-dist/assets/{Switch-BS1G55M2.js → Switch-BDu-VJJd.js} +1 -1
  48. package/frontend-dist/assets/{TableHeader-jCTjghgy.js → TableHeader-ncK52pod.js} +1 -1
  49. package/frontend-dist/assets/{TabsTrigger-B5HyH2xO.js → TabsTrigger-DeTfRTma.js} +1 -1
  50. package/frontend-dist/assets/{UnifiedRequestDialog-CQ5Rzs11.js → UnifiedRequestDialog-CLHb7t0f.js} +3 -3
  51. package/frontend-dist/assets/{VisuallyHiddenInput-DiW4Si0N.js → VisuallyHiddenInput-DcH9Mxb9.js} +1 -1
  52. package/frontend-dist/assets/arrow-down-CuC5m7VK.js +1 -0
  53. package/frontend-dist/assets/{badge-FksLt30f.js → badge-DhXKxnV5.js} +1 -1
  54. package/frontend-dist/assets/{button-BCxYWEaM.js → button-BuzJlj9X.js} +2 -2
  55. package/frontend-dist/assets/chevron-right-LdKvgE7W.js +1 -0
  56. package/frontend-dist/assets/{dialog-B0wgNzud.js → dialog-CtPySx34.js} +1 -1
  57. package/frontend-dist/assets/{image-DlPnda0z.js → image-BkW18kNK.js} +1 -1
  58. package/frontend-dist/assets/{index-CwjudU09.js → index-BjnFvPid.js} +2 -2
  59. package/frontend-dist/assets/{model-patches-Dv2jfKSp.js → model-patches-DQFF0Cuh.js} +1 -1
  60. package/frontend-dist/assets/{pencil-Y6MJERvc.js → pencil-i0P0IRz5.js} +1 -1
  61. package/frontend-dist/assets/plus-fHe1ysx9.js +1 -0
  62. package/frontend-dist/assets/search-Dast7lfE.js +1 -0
  63. package/frontend-dist/assets/{sparkles-C44_iMrx.js → sparkles-BGb3coPL.js} +1 -1
  64. package/frontend-dist/assets/{transform-domain-FnCfUKrh.js → transform-domain-pYyIPtkg.js} +1 -1
  65. package/frontend-dist/assets/{trash-2-BEOdZk69.js → trash-2-DhD7GboJ.js} +1 -1
  66. package/frontend-dist/assets/{useClipboard-Bw6GLR6I.js → useClipboard-tJg52v7m.js} +1 -1
  67. package/frontend-dist/assets/{useLogRetention-CQHD99Fy.js → useLogRetention-D7ZaYfCW.js} +1 -1
  68. package/frontend-dist/assets/{useProviderGroups-Bz7Yz1b7.js → useProviderGroups-DMuF_-28.js} +1 -1
  69. package/frontend-dist/index.html +2 -2
  70. package/package.json +1 -1
  71. package/frontend-dist/assets/Logs-BDrXnYb1.js +0 -1
  72. package/frontend-dist/assets/ModelMappings-CeLps4LM.js +0 -1
  73. package/frontend-dist/assets/Monitor-By1ywNWD.js +0 -1
  74. package/frontend-dist/assets/Providers-Cp-gomQY.js +0 -1
  75. package/frontend-dist/assets/ProxyEnhancement-D5jsMnL3.js +0 -1
  76. package/frontend-dist/assets/QuickSetup-1ADLBexY.js +0 -1
  77. package/frontend-dist/assets/RetryRules-Dk0OxVLs.js +0 -1
  78. package/frontend-dist/assets/RouterKeys-BvD4POUA.js +0 -1
  79. package/frontend-dist/assets/Schedules-CVJcpHlE.js +0 -1
  80. package/frontend-dist/assets/Settings-MYcQoEZw.js +0 -6
  81. package/frontend-dist/assets/arrow-down-BsHwq97B.js +0 -1
  82. package/frontend-dist/assets/chevron-right-C3U2yjrf.js +0 -1
  83. package/frontend-dist/assets/plus-FNO9X5JG.js +0 -1
  84. package/frontend-dist/assets/search-DpWQ2wvO.js +0 -1
@@ -1,3 +1,3 @@
1
- import{$ as e,A as t,B as n,Ct as r,E as i,Ft as a,Mt as o,O as s,Ot as c,Q as l,Qt as u,R as d,S as f,St as p,U as m,Wt as h,X as g,Yt as _,Zt as v,_t as y,at as b,bt as x,et as S,gt as C,h as w,i as T,it as E,j as D,jt as O,kt as k,m as A,mt as j,n as M,nt as N,o as P,ot as F,pt as I,q as ee,qt as L,r as te,tt as R,vt as z,xt as B,zt as V}from"./button-BCxYWEaM.js";import{t as ne}from"./arrow-down-BsHwq97B.js";import{n as re,t as ie}from"./useClipboard-Bw6GLR6I.js";import{t as ae}from"./sparkles-C44_iMrx.js";import{n as oe,r as se,t as ce}from"./TabsTrigger-B5HyH2xO.js";import{n as le,t as ue}from"./CollapsibleContent-CHlSINCS.js";import{t as de}from"./CollapsibleTrigger-CJMUoPRa.js";import{a as fe,i as pe,n as me,o as he,r as ge,t as _e}from"./dialog-B0wgNzud.js";import{t as H}from"./Label-Ct_DR7Ui.js";import{t as ve}from"./Separator-BO94Jk9p.js";import{t as ye}from"./Switch-BS1G55M2.js";import{B as be,C as xe,G as Se,X as Ce,Z as we,_ as Te,_t as Ee,a as U,g as W,gt as De,h as Oe,m as ke,v as Ae,vt as je,yt as Me,z as G}from"./index-CwjudU09.js";import{t as K}from"./badge-FksLt30f.js";import{t as q}from"./Input-Dr2XqfSh.js";import{t as Ne}from"./_plugin-vue_export-helper-BH2M0_bF.js";var Pe=d(`brain`,[[`path`,{d:`M12 18V5`,key:`adv99a`}],[`path`,{d:`M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4`,key:`1e3is1`}],[`path`,{d:`M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5`,key:`1gqd8o`}],[`path`,{d:`M17.997 5.125a4 4 0 0 1 2.526 5.77`,key:`iwvgf7`}],[`path`,{d:`M18 18a4 4 0 0 0 2-7.464`,key:`efp6ie`}],[`path`,{d:`M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517`,key:`1gq6am`}],[`path`,{d:`M6 18a4 4 0 0 1-2-7.464`,key:`k1g0md`}],[`path`,{d:`M6.003 5.125a4 4 0 0 0-2.526 5.77`,key:`q97ue3`}]]),Fe=d(`circle-check-big`,[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]]),Ie=d(`file-braces`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1`,key:`1oajmo`}],[`path`,{d:`M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1`,key:`mpwhp6`}]]),Le=d(`message-square`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}]]),Re=d(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),[J,ze]=Ce(`ScrollAreaRoot`),Be=F({__name:`ScrollAreaRoot`,props:{type:{type:String,required:!1,default:`hover`},dir:{type:String,required:!1},scrollHideDelay:{type:Number,required:!1,default:600},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e,{expose:t}){let n=e,r=V(0),i=V(0),a=V(),o=V(),s=V(),c=V(),l=V(!1),u=V(!1),{type:d,dir:f,scrollHideDelay:p}=h(n),m=Se(f);function g(){a.value?.scrollTo({top:0})}function _(){a.value?.scrollTo({top:0,left:0})}t({viewport:a,scrollTop:g,scrollTopLeft:_});let{forwardRef:y,currentElement:b}=P();return ze({type:d,dir:m,scrollHideDelay:p,scrollArea:b,viewport:a,onViewportChange:e=>{a.value=e||void 0},content:o,onContentChange:e=>{o.value=e},scrollbarX:s,scrollbarXEnabled:l,scrollbarY:c,scrollbarYEnabled:u,onScrollbarXChange:e=>{s.value=e||void 0},onScrollbarYChange:e=>{c.value=e||void 0},onScrollbarXEnabledChange:e=>{l.value=e},onScrollbarYEnabledChange:e=>{u.value=e},onCornerWidthChange:e=>{r.value=e},onCornerHeightChange:e=>{i.value=e}}),(e,t)=>(z(),S(L(T),{ref:L(y),"as-child":n.asChild,as:e.as,dir:L(m),style:v({position:`relative`,"--reka-scroll-area-corner-width":`${r.value}px`,"--reka-scroll-area-corner-height":`${i.value}px`})},{default:O(()=>[B(e.$slots,`default`)]),_:3},8,[`as-child`,`as`,`dir`,`style`]))}}),Ve=F({__name:`ScrollAreaCornerImpl`,setup(e){let t=J(),n=V(0),r=V(0),i=l(()=>!!n.value&&!!r.value);function a(){let e=t.scrollbarX.value?.offsetHeight||0;t.onCornerHeightChange(e),r.value=e}function o(){let e=t.scrollbarY.value?.offsetWidth||0;t.onCornerWidthChange(e),n.value=e}return A(t.scrollbarX.value,a),A(t.scrollbarY.value,o),c(()=>t.scrollbarX.value,a),c(()=>t.scrollbarY.value,o),(e,a)=>i.value?(z(),S(L(T),I({key:0,style:{width:`${n.value}px`,height:`${r.value}px`,position:`absolute`,right:L(t).dir.value===`ltr`?0:void 0,left:L(t).dir.value===`rtl`?0:void 0,bottom:0}},e.$parent?.$props),{default:O(()=>[B(e.$slots,`default`)]),_:3},16,[`style`])):R(`v-if`,!0)}}),He=F({__name:`ScrollAreaCorner`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,{forwardRef:n}=P(),r=J(),i=l(()=>!!r.scrollbarX.value&&!!r.scrollbarY.value),a=l(()=>r.type.value!==`scroll`&&i.value);return(e,r)=>a.value?(z(),S(Ve,I({key:0},t,{ref:L(n)}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16)):R(`v-if`,!0)}});function Ue(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function Y(e){let t=We(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function We(e,t){let n=e/t;return Number.isNaN(n)?0:n}function Ge(e,t=()=>{}){let n={left:e.scrollLeft,top:e.scrollTop},r=0;return(function i(){let a={left:e.scrollLeft,top:e.scrollTop},o=n.left!==a.left,s=n.top!==a.top;(o||s)&&t(),n=a,r=window.requestAnimationFrame(i)})(),()=>window.cancelAnimationFrame(r)}function Ke(e,t,n=`ltr`){let r=Y(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,o=t.content-t.viewport,s=a-r,c=n===`ltr`?[0,o]:[o*-1,0],l=we(e,c[0],c[1]);return Ue([0,o],[0,s])(l)}function qe(e){return e?Number.parseInt(e,10):0}function Je(e,t,n,r=`ltr`){let i=Y(n),a=i/2,o=t||a,s=i-o,c=n.scrollbar.paddingStart+o,l=n.scrollbar.size-n.scrollbar.paddingEnd-s,u=n.content-n.viewport,d=r===`ltr`?[0,u]:[u*-1,0];return Ue([c,l],d)(e)}function Ye(e,t){return e>0&&e<t}var Xe=F({__name:`ScrollAreaScrollbarX`,setup(e){let t=J(),n=it(),{forwardRef:r,currentElement:i}=P();C(()=>{i.value&&t.onScrollbarXChange(i.value)}),y(()=>{t.onScrollbarXChange(null)});let a=l(()=>n.sizes.value);return(e,i)=>(z(),S(st,{ref:L(r),"is-horizontal":!0,"data-orientation":`horizontal`,style:v({bottom:0,left:L(t).dir.value===`rtl`?`var(--reka-scroll-area-corner-width)`:0,right:L(t).dir.value===`ltr`?`var(--reka-scroll-area-corner-width)`:0,"--reka-scroll-area-thumb-width":a.value?`${L(Y)(a.value)}px`:void 0}),onOnDragScroll:i[0]||=e=>L(n).onDragScroll(e.x)},{default:O(()=>[B(e.$slots,`default`)]),_:3},8,[`style`]))}}),Ze=F({__name:`ScrollAreaScrollbarY`,setup(e){let t=J(),n=it(),{forwardRef:r,currentElement:i}=P();C(()=>{i.value&&t.onScrollbarYChange(i.value)}),y(()=>{t.onScrollbarYChange(null)});let a=l(()=>n.sizes.value);return(e,i)=>(z(),S(st,{ref:L(r),"is-horizontal":!1,"data-orientation":`vertical`,style:v({top:0,right:L(t).dir.value===`ltr`?0:void 0,left:L(t).dir.value===`rtl`?0:void 0,bottom:`var(--reka-scroll-area-corner-height)`,"--reka-scroll-area-thumb-height":a.value?`${L(Y)(a.value)}px`:void 0}),onOnDragScroll:i[0]||=e=>L(n).onDragScroll(e.y)},{default:O(()=>[B(e.$slots,`default`)]),_:3},8,[`style`]))}}),Qe=F({__name:`ScrollAreaScrollbarAuto`,props:{forceMount:{type:Boolean,required:!1}},setup(e){let t=J(),n=X(),{forwardRef:r}=P(),a=V(!1),o=i(()=>{if(t.viewport.value){let e=t.viewport.value.offsetWidth<t.viewport.value.scrollWidth,r=t.viewport.value.offsetHeight<t.viewport.value.scrollHeight;a.value=n.isHorizontal.value?e:r}},10);return C(()=>o()),A(t.viewport,o),A(t.content,o),(e,t)=>(z(),S(L(G),{present:e.forceMount||a.value},{default:O(()=>[b(ot,I(e.$attrs,{ref:L(r),"data-state":a.value?`visible`:`hidden`}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16,[`data-state`])]),_:3},8,[`present`]))}}),$e=F({inheritAttrs:!1,__name:`ScrollAreaScrollbarGlimpse`,props:{forceMount:{type:Boolean,required:!1}},setup(e){let t=J(),n=X(),{forwardRef:r}=P(),{state:a,dispatch:o}=be(`hidden`,{hidden:{POINTER_ENTER:`glimpse`,SCROLL:`scrolling`},glimpse:{HIDE:`hidden`,POINTER_LEAVE:`hidden`,SCROLL:`scrolling`,POINTER_ENTER:`glimpse`},scrolling:{SCROLL_END:`idle`,POINTER_ENTER:`interacting`},interacting:{SCROLL:`interacting`,POINTER_LEAVE:`idle`},idle:{HIDE:`hidden`,SCROLL:`scrolling`,POINTER_ENTER:`interacting`}}),s=l(()=>a.value!==`hidden`);function c(){o(`POINTER_ENTER`)}function u(){o(`POINTER_LEAVE`)}let d=i(()=>o(`SCROLL_END`),100);return k(e=>{if(a.value===`glimpse`){let n=window.setTimeout(o,t.scrollHideDelay.value,`HIDE`);e(()=>{window.clearTimeout(n)})}}),k(e=>{if(a.value===`idle`){let n=window.setTimeout(o,t.scrollHideDelay.value,`HIDE`);e(()=>{window.clearTimeout(n)})}}),k(e=>{let r=t.viewport.value,i=n.isHorizontal.value?`scrollLeft`:`scrollTop`;if(r){let t=r[i],n=()=>{let e=r[i];t!==e&&(o(`SCROLL`),d()),t=e};r.addEventListener(`scroll`,n),e(()=>{r.removeEventListener(`scroll`,n)})}}),C(()=>{let e=t.scrollArea.value;e&&(e.addEventListener(`pointerenter`,c),e.addEventListener(`pointerleave`,u))}),y(()=>{let e=t.scrollArea.value;e&&(e.removeEventListener(`pointerenter`,c),e.removeEventListener(`pointerleave`,u))}),(e,t)=>(z(),S(L(G),{present:e.forceMount||s.value},{default:O(()=>[b(Qe,I(e.$attrs,{ref:L(r),"data-state":s.value?`visible`:`hidden`}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16,[`data-state`])]),_:3},8,[`present`]))}}),et=F({inheritAttrs:!1,__name:`ScrollAreaScrollbarHover`,props:{forceMount:{type:Boolean,required:!1}},setup(e){let t=J(),{forwardRef:n}=P(),r,i=V(!1);function a(){window.clearTimeout(r),i.value=!0}function o(){r=window.setTimeout(()=>{i.value=!1},t.scrollHideDelay.value)}return C(()=>{let e=t.scrollArea.value;e&&(e.addEventListener(`pointerenter`,a),e.addEventListener(`pointerleave`,o))}),y(()=>{let e=t.scrollArea.value;e&&(window.clearTimeout(r),e.removeEventListener(`pointerenter`,a),e.removeEventListener(`pointerleave`,o))}),(e,t)=>(z(),S(L(G),{present:e.forceMount||i.value},{default:O(()=>[b(Qe,I(e.$attrs,{ref:L(n),"data-state":i.value?`visible`:`hidden`}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16,[`data-state`])]),_:3},8,[`present`]))}}),tt=F({__name:`ScrollAreaScrollbarScroll`,props:{forceMount:{type:Boolean,required:!1}},setup(e){let t=J(),n=X(),{forwardRef:r}=P(),{state:a,dispatch:o}=be(`hidden`,{hidden:{SCROLL:`scrolling`},scrolling:{SCROLL_END:`idle`,POINTER_ENTER:`interacting`},interacting:{SCROLL:`interacting`,POINTER_LEAVE:`idle`},idle:{HIDE:`hidden`,SCROLL:`scrolling`,POINTER_ENTER:`interacting`}}),s=l(()=>a.value!==`hidden`);k(e=>{if(a.value===`idle`){let n=window.setTimeout(o,t.scrollHideDelay.value,`HIDE`);e(()=>{window.clearTimeout(n)})}});let c=i(()=>o(`SCROLL_END`),100);return k(e=>{let r=t.viewport.value,i=n.isHorizontal.value?`scrollLeft`:`scrollTop`;if(r){let t=r[i],n=()=>{let e=r[i];t!==e&&(o(`SCROLL`),c()),t=e};r.addEventListener(`scroll`,n),e(()=>{r.removeEventListener(`scroll`,n)})}}),(e,t)=>(z(),S(L(G),{present:e.forceMount||s.value},{default:O(()=>[b(ot,I(e.$attrs,{ref:L(r),"data-state":s.value?`visible`:`hidden`}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16,[`data-state`])]),_:3},8,[`present`]))}}),[X,nt]=Ce(`ScrollAreaScrollbar`),rt=F({inheritAttrs:!1,__name:`ScrollAreaScrollbar`,props:{orientation:{type:String,required:!1,default:`vertical`},forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`div`}},setup(e){let t=e,{forwardRef:n}=P(),r=J(),i=l(()=>t.orientation===`horizontal`);c(i,()=>{i.value?r.onScrollbarXEnabledChange(!0):r.onScrollbarYEnabledChange(!0)},{immediate:!0}),y(()=>{r.onScrollbarXEnabledChange(!1),r.onScrollbarYEnabledChange(!1)});let{orientation:a,forceMount:o,asChild:s,as:u}=h(t);return nt({orientation:a,forceMount:o,isHorizontal:i,as:u,asChild:s}),(e,t)=>L(r).type.value===`hover`?(z(),S(et,I({key:0},e.$attrs,{ref:L(n),"force-mount":L(o)}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16,[`force-mount`])):L(r).type.value===`scroll`?(z(),S(tt,I({key:1},e.$attrs,{ref:L(n),"force-mount":L(o)}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16,[`force-mount`])):L(r).type.value===`glimpse`?(z(),S($e,I({key:2},e.$attrs,{ref:L(n),"force-mount":L(o)}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16,[`force-mount`])):L(r).type.value===`auto`?(z(),S(Qe,I({key:3},e.$attrs,{ref:L(n),"force-mount":L(o)}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16,[`force-mount`])):L(r).type.value===`always`?(z(),S(ot,I({key:4},e.$attrs,{ref:L(n),"data-state":`visible`}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16)):R(`v-if`,!0)}}),[it,at]=Ce(`ScrollAreaScrollbarVisible`),ot=F({__name:`ScrollAreaScrollbarVisible`,setup(e){let t=J(),n=X(),{forwardRef:r}=P(),i=V({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),a=l(()=>{let e=We(i.value.viewport,i.value.content);return e>0&&e<1}),o=V(),s=V(0);function c(e,n){if(m.value){let r=t.viewport.value.scrollLeft+e.deltaY;t.viewport.value.scrollLeft=r,Ye(r,n)&&e.preventDefault()}else{let r=t.viewport.value.scrollTop+e.deltaY;t.viewport.value.scrollTop=r,Ye(r,n)&&e.preventDefault()}}function u(e,t){m.value?s.value=t.x:s.value=t.y}function d(e){s.value=0}function f(e){i.value=e}function p(e,t){return Je(e,s.value,i.value,t)}let m=l(()=>n.isHorizontal.value);function h(e){m.value?t.viewport.value.scrollLeft=p(e,t.dir.value):t.viewport.value.scrollTop=p(e)}function g(){if(m.value){if(t.viewport.value&&o.value){let e=t.viewport.value.scrollLeft,n=Ke(e,i.value,t.dir.value);o.value.style.transform=`translate3d(${n}px, 0, 0)`}}else if(t.viewport.value&&o.value){let e=t.viewport.value.scrollTop,n=Ke(e,i.value);o.value.style.transform=`translate3d(0, ${n}px, 0)`}}function _(e){o.value=e}return at({sizes:i,hasThumb:a,handleWheelScroll:c,handleThumbDown:u,handleThumbUp:d,handleSizeChange:f,onThumbPositionChange:g,onThumbChange:_,onDragScroll:h}),(e,t)=>m.value?(z(),S(Xe,I({key:0},e.$attrs,{ref:L(r)}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16)):(z(),S(Ze,I({key:1},e.$attrs,{ref:L(r)}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16))}}),st=F({__name:`ScrollAreaScrollbarImpl`,props:{isHorizontal:{type:Boolean,required:!0}},emits:[`onDragScroll`,`onWheelScroll`,`onThumbPointerDown`],setup(e,{emit:t}){let n=e,r=t,i=J(),a=it(),o=X(),{forwardRef:s,currentElement:c}=P(),l=V(``),u=V();function d(e){u.value&&r(`onDragScroll`,{x:e.clientX-u.value?.left,y:e.clientY-u.value?.top})}function f(e){e.button===0&&(e.target.setPointerCapture(e.pointerId),u.value=c.value.getBoundingClientRect(),l.value=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,i.viewport&&(i.viewport.value.style.scrollBehavior=`auto`),d(e))}function p(e){d(e)}function m(e){let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=l.value,i.viewport&&(i.viewport.value.style.scrollBehavior=``),u.value=void 0}function h(e){let t=e.target,n=c.value?.contains(t),r=a.sizes.value.content-a.sizes.value.viewport;n&&a.handleWheelScroll(e,r)}C(()=>{document.addEventListener(`wheel`,h,{passive:!1})}),y(()=>{document.removeEventListener(`wheel`,h)});function g(){c.value&&(n.isHorizontal?a.handleSizeChange({content:i.viewport.value?.scrollWidth??0,viewport:i.viewport.value?.offsetWidth??0,scrollbar:{size:c.value.clientWidth??0,paddingStart:qe(getComputedStyle(c.value).paddingLeft),paddingEnd:qe(getComputedStyle(c.value).paddingRight)}}):a.handleSizeChange({content:i.viewport.value?.scrollHeight??0,viewport:i.viewport.value?.offsetHeight??0,scrollbar:{size:c.value?.clientHeight??0,paddingStart:qe(getComputedStyle(c.value).paddingTop),paddingEnd:qe(getComputedStyle(c.value).paddingBottom)}}),a.onThumbPositionChange())}return A(c,g),A(i.content,g),(e,t)=>(z(),S(L(T),{ref:L(s),style:{position:`absolute`},"data-scrollbarimpl":``,as:L(o).as.value,"as-child":L(o).asChild.value,onPointerdown:f,onPointermove:p,onPointerup:m},{default:O(()=>[B(e.$slots,`default`)]),_:3},8,[`as`,`as-child`]))}}),ct=F({__name:`ScrollAreaThumb`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,n=J(),r=it();function i(e){let t=e.target.getBoundingClientRect(),n=e.clientX-t.left,i=e.clientY-t.top;r.handleThumbDown(e,{x:n,y:i})}function a(e){r.handleThumbUp(e)}let{forwardRef:o,currentElement:c}=P(),u=V(),d=l(()=>n.viewport.value);function f(){u.value||(u.value=Ge(d.value,r.onThumbPositionChange),r.onThumbPositionChange())}return s(l(()=>r.sizes.value),()=>{r.onThumbChange(c.value),d.value&&(r.onThumbPositionChange(),d.value.addEventListener(`scroll`,f))}),y(()=>{d.value.removeEventListener(`scroll`,f),n.viewport.value?.removeEventListener(`scroll`,f)}),(e,n)=>(z(),S(L(T),{ref:L(o),"data-state":L(r).hasThumb?`visible`:`hidden`,style:{width:`var(--reka-scroll-area-thumb-width)`,height:`var(--reka-scroll-area-thumb-height)`},"as-child":t.asChild,as:e.as,onPointerdown:i,onPointerup:a},{default:O(()=>[B(e.$slots,`default`)]),_:3},8,[`data-state`,`as-child`,`as`]))}}),lt=F({inheritAttrs:!1,__name:`ScrollAreaViewport`,props:{nonce:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t,{expose:n}){let r=t,{nonce:i}=h(r),a=xe(i),o=J(),s=V();C(()=>{o.onViewportChange(s.value),o.onContentChange(l.value)}),n({viewportElement:s});let{forwardRef:c,currentElement:l}=P();return(t,n)=>(z(),N(g,null,[e(`div`,I({ref_key:`viewportElement`,ref:s,"data-reka-scroll-area-viewport":``,style:{overflowX:L(o).scrollbarXEnabled.value?`scroll`:`hidden`,overflowY:L(o).scrollbarYEnabled.value?`scroll`:`hidden`}},t.$attrs,{tabindex:0}),[b(L(T),{ref:L(c),style:v({minWidth:L(o).scrollbarXEnabled.value?`fit-content`:void 0}),"as-child":r.asChild,as:t.as},{default:O(()=>[B(t.$slots,`default`)]),_:3},8,[`style`,`as-child`,`as`])],16),b(L(T),{as:`style`,nonce:L(a)},{default:O(()=>n[0]||=[E(` /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-scroll-area-viewport] { scrollbar-width:none; -ms-overflow-style:none; -webkit-overflow-scrolling:touch; } [data-reka-scroll-area-viewport]::-webkit-scrollbar { display:none; } `)]),_:1,__:[0]},8,[`nonce`])],64))}}),ut=F({__name:`Textarea`,props:{class:{type:[Boolean,null,String,Object,Array]},defaultValue:{},modelValue:{}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,r=w(n,`modelValue`,t,{passive:!0,defaultValue:n.defaultValue});return(e,t)=>o((z(),N(`textarea`,{"onUpdate:modelValue":t[0]||=e=>a(r)?r.value=e:null,"data-slot":`textarea`,class:_(L(te)(`border-input dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 rounded-lg border bg-transparent px-2.5 py-2 text-base transition-colors focus-visible:ring-3 aria-invalid:ring-3 md:text-sm flex field-sizing-content min-h-16 w-full outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50`,n.class))},null,2)),[[ee,L(r)]])}}),dt={class:`flex items-center gap-2`},ft={key:0,class:`rounded-lg border border-success/20 bg-success/5 px-3 py-2.5 flex items-start gap-2.5`},pt={class:`flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-success/10 mt-0.5`},mt={class:`text-sm text-success-foreground leading-relaxed`},ht={class:`space-y-4`},gt={class:`space-y-3`},_t={class:`rounded-lg border bg-muted/30 p-3 space-y-3`},vt={class:`text-xs font-medium text-muted-foreground uppercase tracking-wide`},yt={class:`grid grid-cols-2 gap-3`},bt={class:`rounded-lg border bg-muted/30 p-3 space-y-3`},xt={class:`text-xs font-medium text-muted-foreground uppercase tracking-wide`},St={class:`grid grid-cols-2 gap-3`},Ct={key:0},wt={class:`flex items-center gap-2.5 pt-1`},Tt=100,Et=599,Dt=100,Ot=100,kt=F({__name:`AiRulePreviewDialog`,props:{open:{type:Boolean},rule:{},summary:{}},emits:[`update:open`,`saved`],setup(n,{emit:r}){let{t:i}=m(),a=n,o=r;function s(){return{name:``,status_code:429,body_pattern:``,retry_strategy:`exponential`,retry_delay_ms:5e3,max_retries:10,max_delay_ms:6e4,is_active:!0,provider_id:`__all__`}}let l=V(s());c([()=>a.open,()=>a.rule],([e,t])=>{e&&t&&(l.value={...t,is_active:!0,provider_id:`__all__`},p.value=!1,f())},{immediate:!0});let d=V([]);async function f(){try{d.value=await t.getProviders()}catch(e){console.error(`AiRulePreviewDialog.loadProviders:`,e),U.error(D(e,i(`logs.messages.loadProvidersFailed`)))}}let p=V(!1);async function h(){if(p.value)return;let e=[];l.value.name.trim()||e.push(i(`retryRules.messages.nameRequired`));let n=l.value.status_code;(typeof n!=`number`||isNaN(n)||n<Tt||n>Et)&&e.push(i(`retryRules.messages.statusCodeRange`));try{new RegExp(l.value.body_pattern)}catch(t){console.error(`AiRulePreviewDialog.validateRule:`,t),e.push(i(`retryRules.messages.bodyPatternInvalid`))}l.value.body_pattern.trim()||e.push(i(`retryRules.messages.bodyPatternInvalid`));let r=l.value.retry_delay_ms;(typeof r!=`number`||isNaN(r)||r<Dt)&&e.push(i(`retryRules.messages.delayMin`));let a=l.value.max_retries;(typeof a!=`number`||isNaN(a)||a<0||a>Ot)&&e.push(i(`retryRules.messages.retriesRange`));let s=l.value.max_delay_ms;if(l.value.retry_strategy===`exponential`&&(typeof s!=`number`||isNaN(s)||s<Dt)&&e.push(i(`retryRules.messages.delayMin`)),e.length>0){U.error(e.join(`; `));return}p.value=!0;try{await t.createRetryRule({name:l.value.name,status_code:Number(l.value.status_code),body_pattern:l.value.body_pattern,is_active:+!!l.value.is_active,retry_strategy:l.value.retry_strategy,retry_delay_ms:Number(l.value.retry_delay_ms),max_retries:Number(l.value.max_retries),max_delay_ms:l.value.retry_strategy===`exponential`?Number(l.value.max_delay_ms):void 0,provider_id:l.value.provider_id===`__all__`?null:l.value.provider_id||null}),U.success(i(`retryRules.messages.saveCompleted`)),o(`saved`),o(`update:open`,!1)}catch(e){console.error(`AiRulePreviewDialog.handleSave:`,e),U.error(D(e,i(`retryRules.messages.saveFailed`)))}finally{p.value=!1}}return(t,r)=>(z(),S(L(he),{open:n.open,"onUpdate:open":r[10]||=e=>o(`update:open`,e)},{default:O(()=>[b(L(fe),{class:`sm:max-w-xl`},{default:O(()=>[b(L(me),{class:`gap-1.5`},{default:O(()=>[e(`div`,dt,[b(L(ae),{class:`h-4 w-4 text-primary shrink-0`}),b(L(_e),null,{default:O(()=>[E(u(L(i)(`logs.aiGeneratedRule`)),1)]),_:1})]),b(L(K),{variant:`secondary`,class:`w-fit text-[10px]`},{default:O(()=>[E(u(L(i)(`logs.aiGenerated`)),1)]),_:1})]),_:1}),n.summary?(z(),N(`div`,ft,[e(`div`,pt,[b(L(Ee),{class:`h-3 w-3 text-success`})]),e(`p`,mt,u(n.summary),1)])):R(``,!0),e(`div`,ht,[e(`div`,gt,[e(`div`,null,[b(L(H),{class:`text-xs text-muted-foreground font-medium`},{default:O(()=>[E(u(L(i)(`retryRules.dialog.name`)),1)]),_:1}),b(L(q),{modelValue:l.value.name,"onUpdate:modelValue":r[0]||=e=>l.value.name=e,type:`text`,class:`mt-1`},null,8,[`modelValue`])]),e(`div`,null,[b(L(H),{class:`text-xs text-muted-foreground font-medium`},{default:O(()=>[E(u(L(i)(`retryRules.provider`)),1)]),_:1}),b(L(Ae),{modelValue:l.value.provider_id,"onUpdate:modelValue":r[1]||=e=>l.value.provider_id=e},{default:O(()=>[b(L(Oe),{class:`mt-1`},{default:O(()=>[b(L(ke),{placeholder:L(i)(`retryRules.providerPlaceholder`)},null,8,[`placeholder`])]),_:1}),b(L(Te),null,{default:O(()=>[b(L(W),{value:`__all__`},{default:O(()=>[E(u(L(i)(`retryRules.providerAll`)),1)]),_:1}),(z(!0),N(g,null,x(d.value,e=>(z(),S(L(W),{key:e.id,value:e.id},{default:O(()=>[E(u(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`])])]),e(`div`,_t,[e(`p`,vt,u(L(i)(`logs.matchConditions`)),1),e(`div`,yt,[e(`div`,null,[b(L(H),{class:`text-xs text-muted-foreground font-medium`},{default:O(()=>[E(u(L(i)(`retryRules.dialog.statusCode`)),1)]),_:1}),b(L(q),{modelValue:l.value.status_code,"onUpdate:modelValue":r[2]||=e=>l.value.status_code=e,modelModifiers:{number:!0},type:`number`,class:`mt-1`},null,8,[`modelValue`])]),e(`div`,null,[b(L(H),{class:`text-xs text-muted-foreground font-medium`},{default:O(()=>[E(u(L(i)(`retryRules.dialog.retryStrategy`)),1)]),_:1}),b(L(Ae),{modelValue:l.value.retry_strategy,"onUpdate:modelValue":r[3]||=e=>l.value.retry_strategy=e},{default:O(()=>[b(L(Oe),{class:`mt-1`},{default:O(()=>[b(L(ke))]),_:1}),b(L(Te),null,{default:O(()=>[b(L(W),{value:`exponential`},{default:O(()=>[E(u(L(i)(`retryRules.strategy.exponential`)),1)]),_:1}),b(L(W),{value:`fixed`},{default:O(()=>[E(u(L(i)(`retryRules.strategy.fixed`)),1)]),_:1})]),_:1})]),_:1},8,[`modelValue`])])]),e(`div`,null,[b(L(H),{class:`text-xs text-muted-foreground font-medium`},{default:O(()=>[E(u(L(i)(`retryRules.dialog.bodyPattern`)),1)]),_:1}),b(L(ut),{modelValue:l.value.body_pattern,"onUpdate:modelValue":r[4]||=e=>l.value.body_pattern=e,class:`font-mono mt-1`,rows:2},null,8,[`modelValue`])])]),e(`div`,bt,[e(`p`,xt,u(L(i)(`logs.retryParams`)),1),e(`div`,St,[e(`div`,null,[b(L(H),{class:`text-xs text-muted-foreground font-medium`},{default:O(()=>[E(u(l.value.retry_strategy===`fixed`?L(i)(`retryRules.dialog.intervalMs`):L(i)(`retryRules.dialog.initialDelayMs`)),1)]),_:1}),b(L(q),{modelValue:l.value.retry_delay_ms,"onUpdate:modelValue":r[5]||=e=>l.value.retry_delay_ms=e,modelModifiers:{number:!0},type:`number`,class:`mt-1`},null,8,[`modelValue`])]),e(`div`,null,[b(L(H),{class:`text-xs text-muted-foreground font-medium`},{default:O(()=>[E(u(L(i)(`retryRules.dialog.maxRetries`)),1)]),_:1}),b(L(q),{modelValue:l.value.max_retries,"onUpdate:modelValue":r[6]||=e=>l.value.max_retries=e,modelModifiers:{number:!0},type:`number`,class:`mt-1`},null,8,[`modelValue`])])]),l.value.retry_strategy===`exponential`?(z(),N(`div`,Ct,[b(L(H),{class:`text-xs text-muted-foreground font-medium`},{default:O(()=>[E(u(L(i)(`retryRules.dialog.maxDelayMs`)),1)]),_:1}),b(L(q),{modelValue:l.value.max_delay_ms,"onUpdate:modelValue":r[7]||=e=>l.value.max_delay_ms=e,modelModifiers:{number:!0},type:`number`,class:`mt-1`},null,8,[`modelValue`])])):R(``,!0)]),e(`div`,wt,[b(L(ye),{checked:l.value.is_active,"onUpdate:checked":r[8]||=e=>l.value.is_active=e,id:`rule-active`},null,8,[`checked`]),b(L(H),{for:`rule-active`,class:`text-sm text-foreground cursor-pointer`},{default:O(()=>[E(u(L(i)(`retryRules.dialog.enable`)),1)]),_:1})])]),b(L(ge),{class:`border-t pt-4 mt-2`},{default:O(()=>[b(L(M),{variant:`outline`,onClick:r[9]||=e=>o(`update:open`,!1)},{default:O(()=>[E(u(L(i)(`common.cancel`)),1)]),_:1}),b(L(M),{disabled:p.value,onClick:h},{default:O(()=>[E(u(L(i)(`logs.saveRule`)),1)]),_:1},8,[`disabled`])]),_:1})]),_:1})]),_:1},8,[`open`]))}});function At(e,t){if(!e)return`off`;try{let n=JSON.parse(e)?.body;return n?t===`anthropic`?n.thinking?.type??`off`:n.reasoning?.effort??n.reasoning_effort??`off`:`off`}catch{return`off`}}var Z=1e3;function jt(e,t){let n=e.attempts.length>0?e.attempts[e.attempts.length-1]:void 0,r=e.streamMetrics,i=r?.tokensPerSecond??null;if(!i&&r&&r.outputTokens&&r.ttftMs&&e.completedAt){let t=(e.completedAt-e.startTime-r.ttftMs)/Z;t>0&&(i=r.outputTokens/t)}return{id:e.id,model:e.model,backendModel:null,originalModel:null,statusCode:e.status===`completed`?n?.statusCode??null:null,isStream:e.isStream,apiType:e.apiType,providerName:e.providerName,clientIp:e.clientIp,sessionId:e.sessionId??null,latencyMs:e.completedAt?e.completedAt-e.startTime:null,ttftMs:r?.ttftMs??null,inputTokens:r?.inputTokens??null,outputTokens:r?.outputTokens??null,tokensPerSecond:i,cacheReadTokens:r?.cacheReadTokens??null,cacheWriteTokens:null,stopReason:r?.stopReason??null,isComplete:r?.isComplete??!1,attempts:e.attempts.map(e=>({statusCode:e.statusCode,error:e.error,latencyMs:e.latencyMs,providerId:e.providerId,model:e.model,apiType:e.apiType})),status:e.status,clientRequest:e.clientRequest??null,upstreamRequest:e.upstreamRequest??null,responseBody:t??null,upstreamResponse:null,errorMessage:null,createdAt:null,inputTokensEstimated:!1,clientType:null,cacheReadTokensEstimated:r?.cacheReadTokensEstimated??null,mappingReason:e.mappingReason,thinkingLevel:e.thinkingLevel??`off`,upstreamApiType:null,upstreamBaseUrl:null}}function Mt(e){if(!e)return null;try{let t=JSON.parse(e);return typeof t.statusCode==`number`&&t.headers&&!t.content&&!t.choices?typeof t.body==`string`?t.body:null:e}catch{return e}}var Nt=[`stream_error: upstream returned 200 but body contains error`],Pt=new Set([`direct_format`,`group_base_rule`,`group_schedule`,`fallback_provider`,`overflow_redirect`,`failover_retry`]);function Ft(e){if(e)try{let t=JSON.parse(e),n=Array.isArray(t)?t:[];if(n.length===0)return;for(let e of n)if(e.stage===`overflow`&&e.triggered===!0)return`overflow_redirect`;for(let e of n)if(e.stage===`routing`&&typeof e.mapping_reason==`string`)return Pt.has(e.mapping_reason)?e.mapping_reason:void 0;return}catch{return}}function It(e){return e?Nt.some(t=>e.startsWith(t)):!1}function Lt(e,t){let n=e.input_tokens??null,r=e.output_tokens??null,i=e.ttft_ms??null,a=e.tokens_per_second??null;if(!a&&r&&i&&e.latency_ms){let t=(e.latency_ms-i)/Z;t>0&&(a=r/t)}let o=Mt(e.upstream_response)??e.stream_text_content??null;return{id:e.id,model:e.original_model??e.model??`unknown`,backendModel:e.backend_model,originalModel:e.original_model,statusCode:e.status_code,isStream:!!e.is_stream,apiType:e.api_type===`openai`||e.api_type===`openai-responses`||e.api_type===`anthropic`?e.api_type:`openai`,providerName:e.provider_name,clientIp:void 0,sessionId:e.session_id??null,latencyMs:e.latency_ms,ttftMs:i,inputTokens:n,outputTokens:r,tokensPerSecond:a,cacheReadTokens:e.cache_read_tokens??null,cacheWriteTokens:null,stopReason:e.stop_reason??null,isComplete:!!e.metrics_complete,attempts:[...(t??[]).map(e=>({statusCode:e.status_code,error:e.error_message,latencyMs:e.latency_ms??0,providerId:e.provider_id??``,model:e.backend_model??e.model??void 0,apiType:e.api_type})),{statusCode:e.status_code,error:e.error_message,latencyMs:e.latency_ms??0,providerId:e.provider_id??``,model:e.backend_model??e.model??void 0,apiType:e.api_type}],status:(e.status_code??0)>=400?`failed`:`completed`,clientRequest:e.client_request,upstreamRequest:e.upstream_request,responseBody:o,upstreamResponse:e.upstream_response,errorMessage:It(e.error_message)?null:e.error_message,createdAt:e.created_at,inputTokensEstimated:e.input_tokens_estimated===1,clientType:e.client_type??null,cacheReadTokensEstimated:e.cache_read_tokens_estimated??null,mappingReason:Ft(e.pipeline_snapshot),thinkingLevel:e.thinking_level??At(e.client_request,e.api_type),upstreamApiType:e.upstream_api_type??null,upstreamBaseUrl:e.upstream_base_url??null}}var Rt=F({__name:`ScrollBar`,props:{orientation:{default:`vertical`},forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=f(t,`class`);return(r,i)=>(z(),S(L(rt),I({"data-slot":`scroll-area-scrollbar`,"data-orientation":e.orientation},L(n),{class:L(te)(`data-[orientation=horizontal]:h-2.5 data-[orientation=horizontal]:flex-col data-[orientation=horizontal]:border-t data-[orientation=horizontal]:border-t-transparent data-[orientation=vertical]:h-full data-[orientation=vertical]:w-2.5 data-[orientation=vertical]:border-l data-[orientation=vertical]:border-l-transparent flex touch-none p-px transition-colors select-none`,t.class)}),{default:O(()=>[b(L(ct),{"data-slot":`scroll-area-thumb`,class:`rounded-full relative flex-1 bg-border`})]),_:1},16,[`data-orientation`,`class`]))}}),Q=F({__name:`ScrollArea`,props:{type:{},dir:{},scrollHideDelay:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=f(t,`class`);return(e,r)=>(z(),S(L(Be),I({"data-slot":`scroll-area`},L(n),{class:L(te)(`relative`,t.class)}),{default:O(()=>[b(L(lt),{"data-slot":`scroll-area-viewport`,class:`size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1`},{default:O(()=>[B(e.$slots,`default`)]),_:3}),b(Rt),b(L(He))]),_:3},16,[`class`]))}});function zt(e,t){if(!e)return t||``;try{let n=JSON.parse(e);return typeof n.statusCode==`number`&&(n.headers||n.body!==void 0)?n.body===null&&t?JSON.stringify({...n,body:t},null,Bt):JSON.stringify(n,null,Bt):e}catch{return e}}var Bt=2,Vt=new Set([`choices`,`content`]);function Ht(e,t){if(!e&&!t)return``;let n=Ut(e),r=n?.headers,i=n?.body??t;if(r){let e={headers:r};return i&&(e.body=Wt(i)),JSON.stringify(e,null,Bt)}if(i){let e=Wt(i);return JSON.stringify(e,null,Bt)}return``}function Ut(e){if(!e)return null;try{let t=JSON.parse(e);return typeof t.statusCode==`number`&&(t.headers||t.body!==void 0)?{headers:t.headers??{},body:typeof t.body==`string`?t.body:t.body==null?null:JSON.stringify(t.body)}:null}catch{return null}}function Wt(e){try{let t=JSON.parse(e);if(typeof t==`object`&&t){let e={};for(let[n,r]of Object.entries(t))Vt.has(n)||(e[n]=r);return e}return e}catch{return e}}var Gt={class:`flex flex-col h-full`},Kt={key:0,class:`flex-1 overflow-y-auto`},qt={class:`rounded-md border overflow-hidden mb-3`},Jt={class:`flex items-center gap-2 px-2.5 py-2 border-b bg-muted/20`},Yt={class:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium`},Xt={class:`text-[13px] font-medium`},Zt={class:`px-2.5 py-1`},Qt={class:`flex items-center gap-0 text-[11px]`},$t={class:`text-muted-foreground/60 font-mono text-[10px] w-5 shrink-0`},en={class:`flex-1 min-w-0 overflow-x-auto whitespace-nowrap scrollbar-none`},tn={class:`font-mono`},nn={class:`text-muted-foreground`},rn={class:`flex items-center gap-1.5 pl-5 mt-0.5 flex-wrap`},an={class:`text-muted-foreground/60 font-mono text-[11px]`},on={class:`flex items-center gap-1.5 mb-3`},sn={key:1,class:`font-mono text-[10px] text-muted-foreground ml-1`},cn={key:0,class:`rounded-md border px-3 py-2 mb-3`,style:{background:`oklch(0.3 0.08 25 / 15%)`,"border-color":`oklch(0.58 0.22 25 / 30%)`}},ln={class:`font-mono text-xs font-semibold text-destructive break-all`},un={class:`text-[10px] text-muted-foreground mt-0.5`},dn={class:`grid grid-cols-2 gap-0 p-0 border rounded-md overflow-hidden mb-3`},fn={class:`px-2.5 py-1.5 min-w-0 border-b border-r`},pn={class:`text-[9px] uppercase tracking-wider text-muted-foreground`},mn={class:`text-sm font-semibold truncate`},hn={class:`px-2.5 py-1.5 min-w-0 border-b`},gn={class:`text-[9px] uppercase tracking-wider text-muted-foreground`},_n={class:`text-sm font-semibold truncate`},vn={class:`px-2.5 py-1.5 min-w-0 border-b border-r`},yn={class:`text-[9px] uppercase tracking-wider text-muted-foreground`},bn={class:`text-sm font-semibold truncate`},xn={class:`px-2.5 py-1.5 min-w-0 border-b`},Sn={class:`text-[9px] uppercase tracking-wider text-muted-foreground`},Cn={class:`px-2.5 py-1.5 min-w-0 border-r`},wn={class:`text-[9px] uppercase tracking-wider text-muted-foreground`},Tn={class:`text-sm font-semibold truncate`},En={class:`px-2.5 py-1.5 min-w-0`},Dn={class:`text-[9px] uppercase tracking-wider text-muted-foreground`},On={class:`text-sm font-semibold truncate`},kn={key:1,class:`rounded-md px-2 py-1.5 bg-muted/30 mb-3`},An={class:`text-[10px] text-muted-foreground`},jn={key:0,class:`text-[11px] font-semibold text-success-dark`},Mn={key:1,class:`text-[11px] font-semibold text-warning-dark`},Nn={class:`space-y-0.5 text-[11px] mb-3`},Pn={key:0,class:`flex justify-between`},Fn={class:`text-muted-foreground`},In={class:`font-mono`},Ln={key:1,class:`flex justify-between`},Rn={class:`text-muted-foreground`},zn={class:`font-mono`},Bn={key:2,class:`flex justify-between`},Vn={class:`text-muted-foreground`},Hn={class:`font-mono truncate max-w-[160px]`},Un={key:3,class:`flex items-center justify-between text-[11px]`},Wn={class:`text-muted-foreground`},Gn={class:`font-mono text-warning-dark`},Kn={key:4,class:`flex items-center justify-between text-[11px]`},qn={class:`text-muted-foreground`},Jn={class:`font-mono truncate max-w-[160px]`},Yn={class:`p-3 text-[11px] whitespace-pre-wrap break-words`},Xn=2,Zn=F({__name:`RequestOverviewPanel`,props:{overview:{},showRaw:{type:Boolean}},setup(t){let{t:n}=m(),r={direct_format:`直连`,group_base_rule:`基础规则`,group_schedule:`定时调度`,fallback_provider:`回退`,overflow_redirect:`溢出重定向`,failover_retry:`故障转移`},i=t,a=l(()=>{let e=i.overview.clientType;return e===`claude-code`?`Claude Code`:e===`codex`?`Codex CLI`:e===`pi`?`Pi`:e===`openai-sdk`?`OpenAI SDK`:e===`anthropic-sdk`?`Anthropic SDK`:e??`Unknown`}),o=l(()=>Ht(i.overview.upstreamResponse,i.overview.responseBody)||JSON.stringify({latencyMs:i.overview.latencyMs,ttftMs:i.overview.ttftMs,inputTokens:i.overview.inputTokens,outputTokens:i.overview.outputTokens,tokensPerSecond:i.overview.tokensPerSecond,cacheReadTokens:i.overview.cacheReadTokens,cacheWriteTokens:i.overview.cacheWriteTokens,stopReason:i.overview.stopReason,statusCode:i.overview.statusCode},null,Xn)),s=l(()=>i.overview.status===`pending`&&i.overview.outputTokens!=null),c=l(()=>{let e=i.overview.outputTokens;return e==null?`--`:s.value?`+${e}`:`${e}`}),d=l(()=>i.overview.status===`pending`&&i.overview.latencyMs==null?`...`:i.overview.latencyMs==null?`--`:`${(i.overview.latencyMs/Z).toFixed(1)}s`),f=l(()=>{if(i.overview.tokensPerSecond!=null)return`${i.overview.tokensPerSecond.toFixed(1)}`;let{outputTokens:e,latencyMs:t}=i.overview;return e&&t?`${(e/t*Z).toFixed(1)}`:`--`});function p(e){let t=i.overview.attempts[i.overview.attempts.length-1];return t&&e===t.providerId&&i.overview.providerName||e}function h(e){return e<=0?`-`:(e/Z).toFixed(1)+`s`}return(i,l)=>(z(),N(`div`,Gt,[t.showRaw?(z(),S(L(Q),{key:1,class:`flex-1 rounded-md border`},{default:O(()=>[e(`pre`,Yn,u(o.value),1)]),_:1})):(z(),N(`div`,Kt,[e(`div`,qt,[e(`div`,Jt,[e(`span`,Yt,u(L(n)(`requestDetail.executionChain`)),1),l[0]||=e(`span`,{class:`flex-1`},null,-1),e(`span`,Xt,u(t.overview.model),1),b(L(K),{variant:`secondary`,class:`text-[10px] px-1 py-0`},{default:O(()=>[E(u(t.overview.apiType),1)]),_:1}),t.overview.mappingReason?(z(),S(L(K),{key:0,class:`text-[10px] px-2 py-0 rounded-full bg-primary/20 text-primary border-0`},{default:O(()=>[E(u(r[t.overview.mappingReason]||t.overview.mappingReason),1)]),_:1})):R(``,!0)]),e(`div`,Zt,[(z(!0),N(g,null,x(t.overview.attempts,(r,i)=>(z(),N(`div`,{key:i,class:_([`py-1.5`,{"border-t border-border/50":i>0}])},[e(`div`,Qt,[e(`span`,$t,`#`+u(i+1),1),e(`span`,en,[e(`span`,tn,u(r.model||t.overview.backendModel||`-`),1),e(`span`,nn,` @ `+u(p(r.providerId)),1)])]),e(`div`,rn,[b(L(K),{variant:(r.statusCode??0)<L(400)?`default`:`destructive`,class:`text-[9px] px-1 py-0`},{default:O(()=>[E(u(r.statusCode||`-`),1)]),_:2},1032,[`variant`]),e(`span`,an,u(h(r.latencyMs)),1),b(L(K),{variant:`secondary`,class:`text-[9px] px-1 py-0`},{default:O(()=>[E(u(r.apiType||t.overview.apiType),1)]),_:2},1024),i===0&&t.overview.attempts.length>1?(z(),S(L(K),{key:0,class:`text-[9px] px-1 py-0 rounded bg-warning/15 text-warning border-0`},{default:O(()=>[E(u(L(n)(`requestDetail.executionRetry`)),1)]),_:1})):R(``,!0),i===t.overview.attempts.length-1&&t.overview.attempts.length>1?(z(),S(L(K),{key:1,class:`text-[9px] px-1 py-0 rounded bg-success/15 text-success border-0`},{default:O(()=>[E(u(L(n)(`requestDetail.executionFinal`)),1)]),_:1})):R(``,!0)])],2))),128))])]),e(`div`,on,[b(L(K),{variant:t.overview.status===`completed`?`default`:`destructive`,class:`text-[10px] px-1.5 py-0`},{default:O(()=>[e(`span`,{class:_([`inline-block w-1.5 h-1.5 rounded-full mr-1`,t.overview.status===`completed`?`bg-success`:`bg-destructive`])},null,2),E(` `+u(t.overview.status===`completed`?L(n)(`requestDetail.completed`):L(n)(`requestDetail.failed`)),1)]),_:1},8,[`variant`]),t.overview.isStream?(z(),S(L(K),{key:0,variant:`outline`,class:`text-[10px] px-1.5 py-0`},{default:O(()=>[...l[1]||=[E(`SSE`,-1)]]),_:1})):R(``,!0),b(L(K),{variant:`secondary`,class:`text-[10px] px-1.5 py-0`},{default:O(()=>[E(u(t.overview.apiType),1)]),_:1}),t.overview.sessionId?(z(),N(`span`,sn,u(t.overview.sessionId.slice(0,8)),1)):R(``,!0),t.overview.thinkingLevel?(z(),S(L(K),{key:2,variant:`outline`,class:`text-[10px]`},{default:O(()=>[E(u(t.overview.thinkingLevel),1)]),_:1})):R(``,!0)]),t.overview.errorMessage?(z(),N(`div`,cn,[e(`p`,ln,u(t.overview.errorMessage),1),e(`p`,un,u(t.overview.statusCode)+` · upstream_error `,1)])):R(``,!0),e(`div`,dn,[e(`div`,fn,[e(`div`,pn,u(L(n)(`requestDetail.latency`)),1),e(`div`,mn,u(d.value),1)]),e(`div`,hn,[e(`div`,gn,u(L(n)(`requestDetail.ttft`)),1),e(`div`,_n,u(t.overview.ttftMs==null?`--`:`${t.overview.ttftMs}ms`),1)]),e(`div`,vn,[e(`div`,yn,u(t.overview.inputTokensEstimated?L(n)(`requestDetail.estInputTokens`):L(n)(`requestDetail.inputTokens`)),1),e(`div`,bn,u(t.overview.inputTokens==null?`--`:t.overview.inputTokens),1)]),e(`div`,xn,[e(`div`,Sn,u(L(n)(`requestDetail.outputTokens`)),1),e(`div`,{class:_([`text-sm font-semibold truncate`,s.value?`diff-added`:``])},u(c.value),3)]),e(`div`,Cn,[e(`div`,wn,u(L(n)(`requestDetail.speed`)),1),e(`div`,Tn,u(f.value),1)]),e(`div`,En,[e(`div`,Dn,u(L(n)(`requestDetail.cacheRead`)),1),e(`div`,On,u(t.overview.cacheReadTokens==null?`--`:t.overview.cacheReadTokens),1)])]),t.overview.cacheReadTokens!=null&&t.overview.cacheReadTokens>0?(z(),N(`div`,kn,[e(`div`,An,u(L(n)(`requestDetail.cacheSource`)),1),t.overview.cacheReadTokensEstimated===0?(z(),N(`div`,jn,u(L(n)(`requestDetail.cacheSourceApi`)),1)):(z(),N(`div`,Mn,u(L(n)(`requestDetail.cacheSourceEstimated`)),1))])):R(``,!0),e(`div`,Nn,[t.overview.clientType==null?R(``,!0):(z(),N(`div`,Pn,[e(`span`,Fn,u(L(n)(`requestDetail.clientType`)),1),e(`span`,In,u(a.value),1)])),t.overview.statusCode==null?R(``,!0):(z(),N(`div`,Ln,[e(`span`,Rn,u(L(n)(`requestDetail.statusCodeLabel`)),1),e(`span`,zn,u(t.overview.statusCode),1)])),t.overview.clientIp?(z(),N(`div`,Bn,[e(`span`,Vn,u(L(n)(`requestDetail.clientIp`)),1),e(`span`,Hn,u(t.overview.clientIp),1)])):R(``,!0),t.overview.upstreamApiType&&t.overview.upstreamApiType!==t.overview.apiType?(z(),N(`div`,Un,[e(`span`,Wn,u(L(n)(`requestDetail.upstreamApiType`)),1),e(`span`,Gn,u(t.overview.apiType)+` → `+u(t.overview.upstreamApiType),1)])):R(``,!0),t.overview.upstreamBaseUrl?(z(),N(`div`,Kn,[e(`span`,qn,u(L(n)(`requestDetail.upstreamBaseUrl`)),1),e(`span`,Jn,u(t.overview.upstreamBaseUrl),1)])):R(``,!0)])]))]))}}),Qn={key:0,class:`rounded-md border bg-card`},$n={class:`flex items-center gap-1.5 px-2.5 py-1.5 border-b`},er={class:`text-xs font-medium`},tr={class:`px-2.5 py-2`},nr={key:0,class:`inline-block w-1.5 h-3.5 dot-success animate-pulse ml-0.5 align-text-bottom`},rr={class:`flex items-center gap-1.5 px-2.5 py-1.5 cursor-pointer hover:brightness-95 rounded-t-md`},ir={class:`text-xs font-medium`},ar={key:0,class:`text-xs text-muted-foreground`},or={class:`px-2.5 pb-2`},sr=F({__name:`ContentBlockRenderer`,props:{type:{},content:{},name:{default:void 0},defaultOpen:{type:Boolean,default:!0},showCursor:{type:Boolean,default:!1},autoScroll:{type:Boolean,default:!1}},setup(t){let{t:n}=m(),i=t,a=V(i.type===`text`?!0:i.defaultOpen),o=V(null),s=l(()=>{switch(i.type){case`thinking`:return`block-thinking`;case`tool_use`:return`block-tool-use`;case`tool_result`:return`block-tool-result`;default:return`bg-card`}}),d=l(()=>{switch(i.type){case`thinking`:return`block-thinking-content italic`;case`tool_use`:return`block-tool-use-content`;case`tool_result`:return`block-tool-result-content`;default:return`bg-muted/50`}}),f=l(()=>{switch(i.type){case`thinking`:return Pe;case`tool_use`:return Re;case`tool_result`:return Fe;default:return Le}}),p=l(()=>{switch(i.type){case`thinking`:return`text-[var(--color-role-thinking)]`;case`tool_use`:return`text-[var(--color-role-tool)]`;case`tool_result`:return`text-[var(--color-role-user)]`;default:return`text-muted-foreground`}}),h=l(()=>{switch(i.type){case`thinking`:return n(`requestDetail.thinking`);case`tool_use`:return n(`requestDetail.toolUse`);case`tool_result`:return n(`requestDetail.toolResultLabel`);default:return``}}),g=l(()=>i.type===`tool_use`?n(`requestDetail.waitingData`):i.type===`tool_result`?n(`requestDetail.noReturnData`):``);return c(()=>i.content,()=>{i.autoScroll&&j(()=>{let e=o.value;e&&(e.scrollTop=e.scrollHeight)})}),(i,c)=>t.type===`text`?(z(),N(`div`,Qn,[e(`div`,$n,[b(L(Le),{class:`h-3.5 w-3.5 diff-added`}),e(`span`,er,u(L(n)(`requestDetail.reply`)),1)]),e(`div`,tr,[e(`pre`,{ref_key:`contentRef`,ref:o,class:`text-xs overflow-y-auto whitespace-pre-wrap break-words`,style:{"max-height":`300px`}},[e(`code`,null,[E(u(t.content),1),t.showCursor?(z(),N(`span`,nr)):R(``,!0)])],512)])])):(z(),S(L(le),{key:1,open:a.value,"onUpdate:open":c[0]||=e=>a.value=e,class:_([`rounded-md border`,s.value])},{default:O(()=>[b(L(de),{"as-child":``},{default:O(()=>[e(`div`,rr,[b(L(je),{class:_([`h-3 w-3 transition-transform duration-200`,{"rotate-180":!a.value}])},null,8,[`class`]),(z(),S(r(f.value),{class:_([`h-3.5 w-3.5`,p.value])},null,8,[`class`])),e(`span`,ir,u(h.value),1),t.type===`thinking`?(z(),N(`span`,ar,`(`+u(L(n)(`requestDetail.charCount`,{count:t.content.length}))+`)`,1)):R(``,!0),t.type===`tool_use`&&t.name?(z(),S(L(K),{key:1,variant:`secondary`,class:`text-xs`},{default:O(()=>[E(u(t.name),1)]),_:1})):R(``,!0)])]),_:1}),b(L(ue),null,{default:O(()=>[e(`div`,or,[e(`pre`,{ref_key:`contentRef`,ref:o,class:_([`text-xs rounded p-2 overflow-y-auto whitespace-pre-wrap break-words`,d.value]),style:{"max-height":`300px`}},[e(`code`,null,u(t.content||g.value),1)],2)])]),_:1})]),_:1},8,[`open`,`class`]))}}),$=2;function cr(e){return e.map(e=>{let t=e;return t.type===`thinking`?{type:`thinking`,content:typeof t.thinking==`string`?t.thinking:``}:t.type===`text`?{type:`text`,content:typeof t.text==`string`?t.text:``}:t.type===`tool_use`?{type:`tool_use`,content:JSON.stringify(t.input??{},null,$),name:typeof t.name==`string`?t.name:``}:t.type===`tool_result`?{type:`tool_result`,content:typeof t.content==`string`?t.content:JSON.stringify(t.content)}:{type:`text`,content:JSON.stringify(t)}})}function lr(e){let t=[];for(let n of e){let e=n.message;if(!e)continue;let r=e.reasoning_content;typeof r==`string`&&r&&t.push({type:`thinking`,content:r});let i=e.tool_calls;if(Array.isArray(i))for(let e of i){let n=e,r=n.function,i=``;if(r&&typeof r.arguments==`string`)try{i=JSON.stringify(JSON.parse(r.arguments),null,$)}catch{i=r.arguments}t.push({type:`tool_use`,content:i,name:typeof r?.name==`string`?r.name:typeof n.name==`string`?n.name:``})}let a=e.refusal;typeof a==`string`&&a&&t.push({type:`text`,content:a});let o=e.content;if(typeof o==`string`&&o)t.push({type:`text`,content:o});else if(Array.isArray(o))for(let e of o){let n=e;if(n.type===`text`||n.type===`output_text`)t.push({type:`text`,content:typeof n.text==`string`?n.text:``});else if(n.type===`tool_use`||n.type===`function`){let e=n.function??n.input??{};t.push({type:`tool_use`,content:JSON.stringify(e,null,$),name:typeof n.name==`string`?n.name:typeof e.name==`string`?e.name:``})}}}return t}function ur(e){let t=[];for(let n of e){let e=n;if(e.type===`reasoning`){let n=e.summary,r=n?n.map(e=>e.text??``).join(``):``,i=typeof e.encrypted_content==`string`?e.encrypted_content:``,a=r||(i?`[Encrypted reasoning]`:``);a&&t.push({type:`thinking`,content:a})}else if(e.type===`function_call`)t.push({type:`tool_use`,content:typeof e.arguments==`string`?e.arguments:JSON.stringify(e.arguments??{},null,$),name:typeof e.name==`string`?e.name:``});else if(e.type===`function_call_output`){let n=typeof e.output==`string`?e.output:JSON.stringify(e.output??``,null,$);t.push({type:`tool_result`,content:n})}else if(e.type===`message`){let n=e.content;if(Array.isArray(n))for(let e of n)e.type===`output_text`&&typeof e.text==`string`&&e.text?t.push({type:`text`,content:e.text}):e.type===`refusal`&&typeof e.refusal==`string`&&e.refusal&&t.push({type:`text`,content:e.refusal})}}return t}function dr(e,t,n){let r=fr(t,n);return r.length>0?r:fr(e,n)}function fr(e,t){if(!e)return[];let n;try{n=JSON.parse(e)}catch{return[]}let r=n;if(typeof r.body==`string`)try{n=JSON.parse(r.body)}catch{n=n}let i=n;return t===`anthropic`&&Array.isArray(i.content)?cr(i.content):t===`openai`&&Array.isArray(i.choices)?lr(i.choices):t===`openai-responses`&&Array.isArray(i.output)?ur(i.output):Array.isArray(i.content)?cr(i.content):Array.isArray(i.choices)?lr(i.choices):Array.isArray(i.output)?ur(i.output):[]}var pr=5,mr=2,hr=3;function gr(e){let t=[],n=null;for(let r of e){if(r.type!==`data`)continue;let e=r.data;if(e.type===`content_block_start`){let t=e.content_block;if(n={type:typeof t?.type==`string`?t.type:``,content:``,eventCount:0,toolName:typeof t?.name==`string`?t.name:void 0},n.type===`tool_use`&&t?.input){let e=t.input;Object.keys(e).length>0&&(n.content=JSON.stringify(e,null,mr))}continue}if(e.type===`content_block_delta`&&n){let t=e.delta;n.content+=t.thinking||t.text||t.partial_json||``,n.eventCount++;continue}e.type===`content_block_stop`&&n&&(t.push(n),n=null)}return n&&t.push(n),t}function _r(e){let t={type:`thinking`,content:``,eventCount:0},n={type:`text`,content:``,eventCount:0},r=new Map;for(let i of e){if(i.type!==`data`)continue;let e=(i.data.choices??[])[0]?.delta;if(!e)continue;for(let n of[`reasoning_content`,`reasoning`,`reasoning_text`]){let r=e[n];if(typeof r==`string`&&r){t.content+=r,t.eventCount++;break}}typeof e.content==`string`&&e.content&&(n.content+=e.content,n.eventCount++);let a=e.tool_calls;if(Array.isArray(a))for(let e of a){let t=typeof e.index==`number`?e.index:0,n=e.function;r.has(t)||r.set(t,{type:`tool_use`,content:``,eventCount:0,toolName:typeof n?.name==`string`?n.name:``});let i=r.get(t);typeof n?.arguments==`string`&&(i.content+=n.arguments),i.eventCount++}typeof e.refusal==`string`&&e.refusal&&(n.content+=e.refusal,n.eventCount++)}let i=[];t.content&&i.push(t);for(let e of r.values())(e.content||e.toolName)&&i.push(e);return n.content&&i.push(n),i}function vr(e,t,n){let r=l(()=>{if(!t||!e.value)return[];let n=e.value.split(`
2
- `),r=[];for(let e of n){let t=e.trim();if(!t.startsWith(`data:`))continue;let n=t.slice(pr).trim();if(n===`[DONE]`){r.push({type:`done`,data:n});continue}try{let e=JSON.parse(n);r.push({type:`data`,data:e})}catch{r.push({type:`raw`,data:n})}}return r});return{sseEvents:r,assembledBlocks:l(()=>!t||!e.value?[]:n===`anthropic`?gr(r.value):_r(r.value)),sseMeta:l(()=>{let e=``,t=``,n=0,i=0,a=``;for(let o of r.value){if(o.type!==`data`)continue;let r=o.data;if(r.type===`message_start`){let i=r.message;e=typeof i?.id==`string`?i.id:``,t=typeof i?.model==`string`?i.model:``,n=Number(i?.usage?.input_tokens??0)}if(r.type===`message_delta`){let e=r.delta,t=r.usage;a=typeof e?.stop_reason==`string`?e.stop_reason:``,i=Number(t?.output_tokens??0)}}return{id:e,model:t,inputTokens:n,outputTokens:i,stopReason:a}}),openaiAssembled:l(()=>{if(n!==`openai`||!t)return null;let e=``,i=``,a=``,o=null,s=0;for(let t of r.value){if(t.type!==`data`)continue;let n=t.data,r=n.choices||[],c=r[0]?.delta;c?.role&&(e=c.role);let l=typeof c?.reasoning_content==`string`?c.reasoning_content:``;l&&(i+=l,s++),c?.content&&(i+=c.content,s++);let u=typeof c?.refusal==`string`?c.refusal:``;u&&(i+=u,s++),r[0]?.finish_reason&&(a=r[0].finish_reason),n.usage&&(o=n.usage)}return{role:e,content:i,contentEventCount:s,finishReason:a,usage:o}}),anthropicMessageStart:l(()=>{if(!t)return null;for(let e of r.value){if(e.type!==`data`)continue;let t=e.data;if(t.type===`message_start`){let e=t.message;return{id:typeof e?.id==`string`?e.id:``,model:typeof e?.model==`string`?e.model:``,input_tokens:Number(e?.usage?.input_tokens??0)}}}return null}),anthropicContentBlockStarts:l(()=>{if(!t)return[];let e=[];for(let t of r.value){if(t.type!==`data`)continue;let n=t.data;if(n.type===`content_block_start`){let t=n.content_block;e.push({index:Number(n.index??0),type:typeof t?.type==`string`?t.type:``})}}return e}),anthropicDeltaGroups:l(()=>{if(!t)return[];let e={};for(let t of r.value){if(t.type!==`data`)continue;let n=t.data;if(n.type!==`content_block_delta`)continue;let r=n.delta,i=typeof r?.type==`string`?r.type:`unknown`;e[i]||(e[i]={deltaType:i,kept:0,folded:0,foldedChars:0});let a=e[i];if(a.kept<hr)a.kept++;else{a.folded++;let e=r,t=e.thinking||e.text||e.partial_json||``;a.foldedChars+=t.length}}return Object.values(e).filter(e=>e.kept>0||e.folded>0)}),anthropicMessageDelta:l(()=>{if(!t)return null;for(let e of r.value){if(e.type!==`data`)continue;let t=e.data;if(t.type===`message_delta`){let e=t.delta,n=t.usage;return{output_tokens:Number(n?.output_tokens??0),stop_reason:typeof e?.stop_reason==`string`?e.stop_reason:``}}}return null}),anthropicMessageStop:l(()=>t?r.value.some(e=>e.type===`data`&&e.data.type===`message_stop`):!1),openaiSseRole:l(()=>{if(!t)return null;for(let e of r.value){if(e.type!==`data`)continue;let t=(e.data.choices||[])[0]?.delta;if(t?.role)return t.role}return null}),openaiSseFirstContent:l(()=>{if(!t)return null;for(let e of r.value){if(e.type!==`data`)continue;let t=(e.data.choices||[])[0]?.delta;if(t?.content)return t.content}return null}),openaiSseFinishReason:l(()=>{if(!t)return null;for(let e of r.value){if(e.type!==`data`)continue;let t=(e.data.choices||[])[0]?.finish_reason;if(t)return t}return null}),openaiSseCollapsedCount:l(()=>{if(!t)return 0;let e=0,n=!1;for(let t of r.value){if(t.type!==`data`)continue;let r=(t.data.choices||[])[0]?.delta;if(!n){r?.content&&(n=!0);continue}(r?.content||r?.role)&&e++}return e}),openaiSseUsage:l(()=>{if(!t)return null;for(let e=r.value.length-1;e>=0;e--){let t=r.value[e];if(t.type!==`data`)continue;let n=t.data.usage;if(n)return{prompt_tokens:n.prompt_tokens,completion_tokens:n.completion_tokens,total_tokens:n.total_tokens,cached_tokens:n.cached_tokens??n.prompt_tokens_details?.cached_tokens}}return null})}}var yr={class:`flex flex-col gap-2 min-h-0 flex-1`},br={class:`flex items-center justify-between flex-shrink-0`},xr={class:`text-xs font-medium text-muted-foreground`},Sr={key:0,class:`relative flex-1 min-h-0`},Cr={key:0,class:`flex flex-col gap-2`},wr={key:0,class:`rounded-md border mt-2`},Tr={class:`grid grid-cols-2 gap-0`},Er={key:0,class:`px-2.5 py-1.5 text-xs`},Dr={class:`text-muted-foreground`},Or={class:`font-mono font-semibold block`},kr={key:1,class:`flex items-center gap-1.5 mt-2 text-xs`},Ar={key:0,class:`text-xs text-muted-foreground`},jr={key:1,class:`text-xs text-muted-foreground`},Mr={key:2,class:`text-xs text-muted-foreground`},Nr={class:`p-3 text-[11px] whitespace-pre-wrap break-words`},Pr=50,Fr=F({__name:`ResponseViewer`,props:{source:{},apiType:{},isStream:{type:Boolean},streamContent:{default:null},nonStreamBody:{default:null},responseBody:{default:null},upstreamResponse:{default:null},status:{}},setup(t){let{t:n}=m(),i=V(null),a=t,o=V(!1),s=l(()=>!!(a.responseBody||a.upstreamResponse)),{assembledBlocks:d}=vr(l(()=>{if(a.source!==`history`)return``;let e=a.responseBody||a.upstreamResponse||``;try{return JSON.parse(e).body||e}catch{return e}}),a.isStream,a.apiType),f=l(()=>{if(a.source===`realtime`){let e=a.streamContent?.blocks;if(e&&e.length>0)return e;if(a.responseBody){let e=dr(a.responseBody,null,a.apiType);if(e.length>0)return e}let t=a.streamContent?.rawChunks;return t&&t.trim().length>0?[{type:`text`,content:t}]:[]}let e=dr(a.responseBody??null,a.upstreamResponse??null,a.apiType);if(e.length>0)return e;if(a.responseBody&&a.responseBody.trim().length>0)return[{type:`text`,content:a.responseBody}];let t=[`thinking`,`text`,`tool_use`,`tool_result`];return d.value.map(e=>({type:t.includes(e.type)?e.type:`text`,content:e.content,...e.toolName?{name:e.toolName}:{}}))}),h=l(()=>{let e=a.responseBody||a.upstreamResponse||``;if(!e)return null;try{let t=JSON.parse(e),n=t.body?JSON.parse(t.body):t;return{usage:n.usage,stopReason:n.choices?.[0]?.finish_reason||n.stop_reason,model:n.model}}catch{return null}}),_=l(()=>a.source===`realtime`?a.streamContent?.rawChunks||a.responseBody||``:zt(a.upstreamResponse??null,a.responseBody??null)),v=V(!1);function y(){let e=i.value;e&&(v.value=e.scrollHeight-e.scrollTop-e.clientHeight>Pr)}function C(){let e=i.value;e&&(e.scrollTop=e.scrollHeight)}return c(f,()=>{v.value||j(()=>C())},{deep:!0}),(t,c)=>{let l=p(`Badge`);return z(),N(`div`,yr,[e(`div`,br,[e(`span`,xr,u(L(n)(`requestDetail.responseTitle`)),1),b(L(M),{size:`sm`,variant:`outline`,class:`h-6 gap-1 text-xs`,onClick:c[0]||=e=>o.value=!o.value},{default:O(()=>[(z(),S(r(o.value?L(De):L(Ie)),{class:`h-3 w-3`})),E(` `+u(o.value?L(n)(`requestDetail.structured`):a.isStream?L(n)(`requestDetail.rawSse`):L(n)(`requestDetail.rawJson`)),1)]),_:1})]),o.value?(z(),S(L(Q),{key:1,class:`flex-1 min-h-0 rounded-md border`},{default:O(()=>[e(`pre`,Nr,u(_.value),1)]),_:1})):(z(),N(`div`,Sr,[e(`div`,{ref_key:`structuredRef`,ref:i,class:`flex-1 min-h-0 overflow-y-auto`,onScroll:y},[f.value.length>0?(z(),N(`div`,Cr,[(z(!0),N(g,null,x(f.value,(e,t)=>(z(),S(sr,{key:t,type:e.type,content:e.content,name:e.name,"show-cursor":a.status===`pending`&&t===f.value.length-1,"auto-scroll":a.status===`pending`&&t===f.value.length-1},null,8,[`type`,`content`,`name`,`show-cursor`,`auto-scroll`]))),128)),h.value?.usage?(z(),N(`div`,wr,[c[1]||=e(`div`,{class:`flex items-center gap-1.5 px-2.5 py-1.5 border-b bg-muted/20`},[e(`span`,{class:`text-xs font-medium`},`Usage`)],-1),e(`div`,Tr,[(z(),N(g,null,x([`prompt_tokens`,`completion_tokens`,`total_tokens`,`input_tokens`,`output_tokens`],t=>(z(),N(g,{key:t},[h.value.usage[t]==null?R(``,!0):(z(),N(`div`,Er,[e(`span`,Dr,u(t),1),e(`span`,Or,u(Number(h.value.usage[t]).toLocaleString()),1)]))],64))),64))])])):R(``,!0),h.value?.stopReason?(z(),N(`div`,kr,[c[2]||=e(`span`,{class:`text-muted-foreground`},`Stop reason`,-1),b(l,{variant:`default`,class:`text-[10px] px-1.5 py-0`},{default:O(()=>[E(u(h.value.stopReason),1)]),_:1})])):R(``,!0)])):R(``,!0),f.value.length===0?(z(),N(g,{key:1},[a.status===`pending`&&!a.streamContent?.rawChunks?(z(),N(`p`,Ar,u(L(n)(`requestDetail.waitingResponse`)),1)):a.source===`history`&&a.isStream&&!s.value?(z(),N(`p`,jr,u(L(n)(`requestDetail.streamNotPersisted`)),1)):(z(),N(`p`,Mr,u(L(n)(`requestDetail.noResponseContent`)),1))],64)):R(``,!0)],544),v.value?(z(),S(L(M),{key:0,variant:`outline`,size:`icon`,class:`absolute bottom-2 right-2 h-7 w-7 rounded-full shadow-md opacity-80 hover:opacity-100`,onClick:C},{default:O(()=>[b(L(ne),{class:`h-3.5 w-3.5`})]),_:1})):R(``,!0)]))])}}}),Ir={class:`relative`},Lr={class:`bg-background text-foreground rounded-md p-3 text-xs overflow-auto max-h-[40vh] whitespace-pre-wrap break-all border`},Rr=F({__name:`JsonCopyBlock`,props:{content:{},hideCopyButton:{type:Boolean}},setup(t){let{t:n}=m(),r=t,{copied:i,copy:a}=ie();async function o(){await a(r.content)}return(r,a)=>(z(),N(`div`,Ir,[t.hideCopyButton?R(``,!0):(z(),S(L(M),{key:0,variant:`outline`,size:`sm`,class:`absolute top-2 right-2 h-7 text-xs`,onClick:o},{default:O(()=>[E(u(L(i)?L(n)(`logs.viewer.copied`):L(n)(`logs.viewer.copy`)),1)]),_:1})),e(`pre`,Lr,u(t.content),1)]))}}),zr={class:`flex flex-col min-h-0 h-full`},Br={class:`flex justify-end mb-1 flex-shrink-0`},Vr={key:0,class:`space-y-3`},Hr={class:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-1`},Ur={class:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-1`},Wr={key:0,class:`text-[11px] text-muted-foreground py-4 text-center`},Gr={key:1,class:`text-[11px] text-muted-foreground py-2 text-center`},Kr={key:2,class:`space-y-4`},qr={key:0},Jr={class:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-1`},Yr={class:`flex items-center gap-2 text-[11px]`},Xr={class:`font-mono text-muted-foreground`},Zr={class:`font-mono text-primary font-semibold`},Qr={key:1},$r={class:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-1`},ei={class:`text-[11px] bg-muted/50 rounded-md border px-2.5 py-2 overflow-y-auto whitespace-pre-wrap break-words max-h-40`},ti={key:2},ni={class:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-1`},ri={class:`space-y-1.5`},ii={class:`flex items-center gap-1.5 mb-1`},ai={key:1,class:`text-[9px] text-muted-foreground`},oi={key:0,class:`diff-removed line-through mb-0.5`},si={key:1,class:`text-foreground overflow-y-auto max-h-40`},ci={key:2,class:`text-muted-foreground text-[10px]`},li={key:3},ui={class:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-1`},di={class:`space-y-1`},fi={class:`grid grid-cols-5 gap-1`},pi=[`title`,`onClick`],mi={key:0,class:`rounded-md border bg-background p-2.5`},hi={class:`flex items-center gap-2 mb-1`},gi={class:`text-[11px] font-semibold font-mono`},_i={key:0,class:`text-[11px] text-muted-foreground`},vi={key:1,class:`mt-1 flex flex-wrap gap-1`},yi={key:4},bi={class:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-1`},xi={class:`flex items-center gap-2 text-[11px]`},Si={key:5},Ci={class:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-1`},wi={class:`flex items-center gap-2 text-[11px]`},Ti={class:`font-mono diff-removed line-through`},Ei={class:`font-mono diff-added font-medium`},Di=4,Oi=5,ki=F({__name:`RequestDiffViewer`,props:{overview:{}},setup(t){let{t:n}=m(),r=t,i=V(!1);function a(e){if(!e)return null;try{let t=JSON.parse(e);if(typeof t!=`object`||!t)return null;let n=typeof t.headers==`object`&&t.headers!==null?t.headers:{},r=t.body;if(typeof r==`string`)try{r=JSON.parse(r)}catch{}return{headers:n,body:r??{}}}catch{return null}}function o(e){let t=e.content;return typeof t==`string`?t:Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&`text`in e).map(e=>typeof e.text==`string`?e.text:``).join(``):typeof t==`string`?t:t==null?``:JSON.stringify(t)}function s(e){if(!e)return``;let t=e.replace(/^Bearer\s+/i,``);return t.length<=Di?`***`:`${t.slice(0,Di)}***`}function c(e,t){let n=t.toLowerCase();for(let[t,r]of Object.entries(e))if(t.toLowerCase()===n)return r}let d=l(()=>a(r.overview.clientRequest)),f=l(()=>a(r.overview.upstreamRequest)),p=l(()=>{let e=d.value?.body?.model,t=f.value?.body?.model;return{hasDiff:!!e&&!!t&&e!==t,from:e??``,to:t??``}}),h=l(()=>{let e=f.value?.body;if(!e)return null;let t=e.system;if(typeof t==`string`)return t;if(Array.isArray(t))return t.filter(e=>typeof e==`object`&&!!e&&`text`in e).map(e=>e.text).join(`
3
- `);let n=e.messages;if(Array.isArray(n)){let e=n.find(e=>e.role===`system`);if(e)return o(e)}return null}),v=l(()=>{let e=f.value?.body?.messages??[],t=d.value?.body?.messages??[];if(e.length===0)return[];let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=typeof i.role==`string`?i.role:`unknown`;if(a===`system`)continue;let s=o(i),c=t[r],l=c?o(c):null,u=l!==null&&s!==l,d=i.content,f=Array.isArray(d)?d:[],p=f.filter(e=>typeof e==`object`&&!!e&&e.type===`tool_use`).map(e=>e.name).filter(Boolean),m=f.filter(e=>typeof e==`object`&&!!e&&e.type===`tool_result`).length;n.push({role:a,text:s,removedText:u?l:null,modified:u,toolCalls:p,toolResultCount:m})}return n}),y=V(-1),C=l(()=>{let e=[];for(let t=0;t<w.value.length;t+=Oi)e.push({tools:w.value.slice(t,t+Oi),startIdx:t});return e}),w=l(()=>{let e=f.value?.body;if(!e)return[];let t=e.tools;return Array.isArray(t)?t.filter(e=>typeof e?.name==`string`).map(e=>{let t=typeof e.description==`string`?e.description:``,n=e.input_schema?.properties,r=n?Object.keys(n):[];return{name:e.name,description:t,params:r}}):[]}),T=l(()=>{let e=d.value?.body?.stream_options!=null,t=f.value?.body?.stream_options!=null;return!e&&t}),D=l(()=>{if(!d.value?.headers||!f.value?.headers)return{hasDiff:!1,old:``,new:``};let e=c(d.value.headers,`authorization`),t=c(f.value.headers,`authorization`);return{hasDiff:!!e&&!!t&&e!==t,old:s(e),new:s(t)}});return(r,a)=>(z(),N(`div`,zr,[e(`div`,Br,[b(L(M),{variant:`outline`,size:`xs`,class:`gap-1`,onClick:a[0]||=e=>i.value=!i.value},{default:O(()=>[i.value?(z(),S(L(Ie),{key:0,class:`size-3`})):(z(),S(L(De),{key:1,class:`size-3`})),E(` `+u(i.value?L(n)(`requestDetail.structured`):L(n)(`requestDetail.rawJson`)),1)]),_:1})]),b(L(Q),{class:`flex-1 min-h-0`},{default:O(()=>[i.value?(z(),N(`div`,Vr,[e(`div`,null,[e(`div`,Hr,u(L(n)(`requestDetail.clientRequest`)),1),b(Rr,{content:t.overview.clientRequest??`{}`},null,8,[`content`])]),e(`div`,null,[e(`div`,Ur,u(L(n)(`requestDetail.upstreamRequest`)),1),b(Rr,{content:t.overview.upstreamRequest??`{}`},null,8,[`content`])])])):(z(),N(g,{key:1},[!f.value&&!d.value?(z(),N(`div`,Wr,u(L(n)(`requestDetail.noRequestData`)),1)):!f.value&&d.value?(z(),N(`div`,Gr,u(L(n)(`requestDetail.requestInProgress`)),1)):(z(),N(`div`,Kr,[p.value.hasDiff?(z(),N(`div`,qr,[e(`div`,Jr,u(L(n)(`requestDetail.modelMapping`)),1),e(`div`,Yr,[e(`span`,Xr,u(p.value.from),1),a[1]||=e(`span`,{class:`text-muted-foreground`},`→`,-1),e(`span`,Zr,u(p.value.to),1)])])):R(``,!0),h.value?(z(),N(`div`,Qr,[e(`div`,$r,u(L(n)(`requestDetail.system`)),1),e(`pre`,ei,u(h.value),1)])):R(``,!0),v.value.length>0?(z(),N(`div`,ti,[e(`div`,ni,u(L(n)(`requestDetail.messagesCount`,{count:v.value.length})),1),e(`div`,ri,[(z(!0),N(g,null,x(v.value,(t,r)=>(z(),N(`div`,{key:r,class:_([`rounded-md border px-2.5 py-1.5 text-[11px]`,t.modified?`diff-modified`:`bg-background`])},[e(`div`,ii,[b(L(K),{variant:`outline`,class:_([`text-[9px] px-1.5 py-0 border-transparent`,t.role===`user`?`bg-role-user-bg text-role-user`:t.role===`assistant`?`bg-role-assistant-bg text-role-assistant`:`bg-role-thinking-bg text-role-thinking`])},{default:O(()=>[E(u(t.role),1)]),_:2},1032,[`class`]),t.modified?(z(),S(L(K),{key:0,variant:`outline`,class:`bg-role-thinking-bg text-role-thinking text-[9px] px-1.5 py-0 border-transparent`},{default:O(()=>[E(u(L(n)(`requestDetail.modified`)),1)]),_:1})):R(``,!0),t.toolCalls.length>0?(z(),N(`span`,ai,` → `+u(t.toolCalls.join(`, `)),1)):R(``,!0)]),t.modified&&t.removedText?(z(),N(`div`,oi,u(t.removedText),1)):R(``,!0),t.text?(z(),N(`div`,si,u(t.text),1)):t.toolResultCount>0?(z(),N(`div`,ci,u(L(n)(`requestDetail.toolResultCount`,{count:t.toolResultCount})),1)):R(``,!0)],2))),128))])])):R(``,!0),w.value.length>0?(z(),N(`div`,li,[e(`div`,ui,u(L(n)(`requestDetail.toolsCount`,{count:w.value.length})),1),e(`div`,di,[(z(!0),N(g,null,x(C.value,(t,n)=>(z(),N(g,{key:n},[e(`div`,fi,[(z(!0),N(g,null,x(t.tools,(e,n)=>(z(),N(`div`,{key:n,class:_([`cursor-pointer rounded-md border px-1.5 py-1 text-[10px] truncate text-center transition-colors`,y.value===t.startIdx+n?`bg-role-tool-bg text-role-tool border-role-tool`:`bg-background hover:bg-muted`]),title:e.name,onClick:e=>y.value=y.value===t.startIdx+n?-1:t.startIdx+n},u(e.name),11,pi))),128))]),y.value>=t.startIdx&&y.value<t.startIdx+t.tools.length?(z(),N(`div`,mi,[e(`div`,hi,[e(`span`,gi,u(w.value[y.value].name),1)]),w.value[y.value].description?(z(),N(`p`,_i,u(w.value[y.value].description),1)):R(``,!0),w.value[y.value].params.length>0?(z(),N(`div`,vi,[(z(!0),N(g,null,x(w.value[y.value].params,e=>(z(),S(L(K),{key:e,variant:`outline`,class:`text-[9px] px-1 py-0`},{default:O(()=>[E(u(e),1)]),_:2},1024))),128))])):R(``,!0)])):R(``,!0)],64))),128))])])):R(``,!0),T.value?(z(),N(`div`,yi,[e(`div`,bi,u(L(n)(`requestDetail.streamOptions`)),1),e(`div`,xi,[b(L(K),{variant:`outline`,class:`bg-success-light text-success-dark text-[9px] px-1.5 py-0 border-transparent`},{default:O(()=>[E(u(L(n)(`requestDetail.injected`)),1)]),_:1}),a[2]||=e(`code`,{class:`font-mono diff-added`},`{ "include_usage": true }`,-1)])])):R(``,!0),D.value.hasDiff?(z(),N(`div`,Si,[e(`div`,Ci,u(L(n)(`requestDetail.authReplacement`)),1),e(`div`,wi,[e(`span`,Ti,u(D.value.old),1),b(L(ve),{orientation:`vertical`,class:`h-3`}),e(`span`,Ei,u(D.value.new),1)])])):R(``,!0)]))],64))]),_:1})]))}}),Ai={class:`h-1 w-full overflow-hidden`},ji={key:0,class:`h-full w-[40%] progress-active`,style:{animation:`shimmer 1.5s infinite`}},Mi={key:1,class:`h-full w-full progress-failed`},Ni={key:2,class:`h-full w-full progress-active`},Pi={class:`flex items-center gap-2 px-4 py-2 border-b shrink-0`},Fi={class:`text-sm font-semibold`},Ii={key:0,class:`font-mono text-[11px] text-muted-foreground`},Li={class:`ml-auto flex items-center gap-1`},Ri={key:0,class:`flex gap-0 px-4 pb-4 min-h-0 h-[calc(85vh-100px)]`},zi={class:`w-[280px] border-r pr-3 flex-shrink-0 min-h-0 flex flex-col`},Bi={class:`flex-1 overflow-y-auto min-h-0`},Vi={class:`border-t pt-3 space-y-2 shrink-0`},Hi={class:`flex-1 flex flex-col min-w-0 min-h-0 pl-3`},Ui={key:0,class:`rounded-md bg-destructive/10 px-3 py-1.5 text-xs text-destructive mb-2 flex-shrink-0`},Wi={key:0,class:`flex-1 min-h-0 overflow-y-auto mt-2`},Gi={key:1,class:`flex-1 min-h-0 mt-2`},Ki={key:1,class:`flex items-center justify-center h-[calc(85vh-100px)]`},qi={class:`text-sm text-muted-foreground`},Ji={class:`rounded-md bg-muted px-3 py-2 text-sm text-muted-foreground`},Yi=429,Xi=5e3,Zi=10,Qi=6e4,$i=Ne(F({__name:`UnifiedRequestDialog`,props:{open:{type:Boolean},source:{},request:{},streamContent:{},logDetailData:{},logEntry:{}},emits:[`update:open`],setup(i,{emit:a}){let{t:o}=m(),s=n(),{copied:d,copy:f}=ie();function p(){return{name:``,status_code:Yi,body_pattern:``,retry_strategy:`exponential`,retry_delay_ms:Xi,max_retries:Zi,max_delay_ms:Qi,provider_id:null}}let h=V(!1),g=V(!1),_=V(!1),v=V(!1),y=V(null),x=V(``);function C(){I.value&&f(I.value.id)}async function w(){if(I.value?.id){h.value=!0;try{let e=await t.aiRetryGenerate(I.value.id);if(e.success&&e.rule){let t=e.rule,n=p();y.value={name:t.name??n.name,status_code:t.status_code??n.status_code,body_pattern:t.body_pattern??n.body_pattern,retry_strategy:t.retry_strategy??n.retry_strategy,retry_delay_ms:t.retry_delay_ms??n.retry_delay_ms,max_retries:t.max_retries??n.max_retries,max_delay_ms:t.max_delay_ms??n.max_delay_ms,provider_id:t.provider_id??null},x.value=e.summary??``,v.value=!0}else{let t=e.error??``;/config/i.test(t)||/未配置/.test(t)||/ai_retry_config/i.test(t)?_.value=!0:U.error(t||o(`logs.generateFailed`))}}catch(e){console.error(`UnifiedRequestDialog.handleGenerateRule:`,e);let t=D(e,o(`logs.generateFailed`));/config/i.test(t)||/未配置/.test(t)?_.value=!0:U.error(t)}finally{h.value=!1}}}function T(){}function k(){_.value=!1,j(`update:open`,!1),s.push(`/proxy-enhancement`)}let A=i,j=a,P=V(`response`),F=V(null),I=l(()=>{if(A.source===`realtime`){if(!A.request)return null;let e=jt(A.request,A.logDetailData?.responseBody);return A.logDetailData&&(A.logDetailData.clientRequest&&(e.clientRequest=A.logDetailData.clientRequest),A.logDetailData.upstreamRequest&&(e.upstreamRequest=A.logDetailData.upstreamRequest)),e}return F.value}),ee=l(()=>I.value?I.value.status:`pending`);return c([()=>A.open,()=>A.logEntry],([e,t])=>{if(!e){h.value=!1,v.value=!1,y.value=null,x.value=``,_.value=!1;return}P.value=`response`,A.source===`history`&&t&&(F.value=`id`in t&&`status`in t&&`attempts`in t&&`clientRequest`in t?t:Lt(t,[]))}),(t,n)=>(z(),S(L(he),{open:A.open,"onUpdate:open":n[5]||=e=>j(`update:open`,e)},{default:O(()=>[b(L(fe),{class:`sm:max-w-6xl max-h-[85vh] p-0 overflow-hidden flex flex-col`},{default:O(()=>[b(L(_e),{class:`sr-only`},{default:O(()=>[E(u(L(o)(`requestDetail.dialogTitle`)),1)]),_:1}),e(`div`,Ai,[ee.value===`pending`?(z(),N(`div`,ji)):ee.value===`failed`?(z(),N(`div`,Mi)):(z(),N(`div`,Ni))]),e(`div`,Pi,[e(`span`,Fi,u(L(o)(`requestDetail.dialogTitle`)),1),I.value?(z(),N(`span`,Ii,u(I.value.id),1)):R(``,!0),e(`div`,Li,[I.value?(z(),S(L(M),{key:0,variant:`ghost`,size:`icon-xs`,class:`shrink-0`,onClick:C},{default:O(()=>[L(d)?(z(),S(L(Me),{key:0,class:`size-3 text-success`})):(z(),S(L(re),{key:1,class:`size-3`}))]),_:1})):R(``,!0)])]),I.value?(z(),N(`div`,Ri,[e(`div`,zi,[e(`div`,Bi,[b(Zn,{overview:I.value,"show-raw":g.value},null,8,[`overview`,`show-raw`])]),e(`div`,Vi,[b(L(M),{variant:`outline`,size:`sm`,class:`h-6 gap-1 text-xs w-full justify-center`,onClick:n[0]||=e=>g.value=!g.value},{default:O(()=>[(z(),S(r(g.value?L(De):L(Ie)),{class:`h-3 w-3`})),E(` `+u(g.value?L(o)(`requestDetail.structured`):L(o)(`requestDetail.rawData`)),1)]),_:1}),b(L(M),{variant:`default`,size:`sm`,class:`w-full gap-1.5`,disabled:h.value,onClick:w},{default:O(()=>[b(L(ae),{class:`h-3.5 w-3.5`}),E(` `+u(h.value?L(o)(`logs.analyzing`):L(o)(`logs.generateRetryRule`)),1)]),_:1},8,[`disabled`])])]),e(`div`,Hi,[I.value.errorMessage?(z(),N(`div`,Ui,u(I.value.errorMessage),1)):R(``,!0),b(L(se),{modelValue:P.value,"onUpdate:modelValue":n[1]||=e=>P.value=e,class:`flex-1 flex flex-col min-h-0`},{default:O(()=>[b(L(oe),{class:`flex-shrink-0`},{default:O(()=>[b(L(ce),{value:`response`},{default:O(()=>[E(u(L(o)(`requestDetail.responseTab`)),1)]),_:1}),b(L(ce),{value:`request`},{default:O(()=>[E(u(L(o)(`requestDetail.requestTab`)),1)]),_:1})]),_:1}),P.value===`response`?(z(),N(`div`,Wi,[b(Fr,{source:A.source,"api-type":I.value.apiType,"is-stream":I.value.isStream,"stream-content":A.streamContent,"non-stream-body":i.logDetailData?.responseBody,"response-body":I.value.responseBody,"upstream-response":I.value.upstreamResponse,status:I.value.status},null,8,[`source`,`api-type`,`is-stream`,`stream-content`,`non-stream-body`,`response-body`,`upstream-response`,`status`])])):R(``,!0),P.value===`request`?(z(),N(`div`,Gi,[b(ki,{overview:I.value},null,8,[`overview`])])):R(``,!0)]),_:1},8,[`modelValue`])])])):(z(),N(`div`,Ki,[e(`p`,qi,u(A.source===`realtime`?L(o)(`requestDetail.loading`):L(o)(`requestDetail.noSelectedRequest`)),1)])),b(kt,{open:v.value,rule:y.value,summary:x.value,"onUpdate:open":n[2]||=e=>v.value=e,onSaved:T},null,8,[`open`,`rule`,`summary`]),b(L(he),{open:_.value,"onUpdate:open":n[4]||=e=>_.value=e},{default:O(()=>[b(L(fe),{class:`max-w-md`},{default:O(()=>[b(L(me),null,{default:O(()=>[b(L(_e),{class:`flex items-center gap-2`},{default:O(()=>[b(L(ae),{class:`h-4 w-4 text-primary`}),E(` `+u(L(o)(`logs.needAiConfig`)),1)]),_:1}),b(L(pe),null,{default:O(()=>[E(u(L(o)(`logs.needAiConfigDesc`)),1)]),_:1})]),_:1}),e(`div`,Ji,u(L(o)(`logs.configPath`)),1),b(L(ge),null,{default:O(()=>[b(L(M),{variant:`outline`,onClick:n[3]||=e=>_.value=!1},{default:O(()=>[E(u(L(o)(`common.cancel`)),1)]),_:1}),b(L(M),{onClick:k},{default:O(()=>[E(u(L(o)(`logs.goToConfig`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]),_:1})]),_:1},8,[`open`]))}}),[[`__scopeId`,`data-v-7ef1f045`]]);export{Q as n,Lt as r,$i as t};
1
+ import{$ as e,A as t,B as n,Ct as r,E as i,Ft as a,Mt as o,O as s,Ot as c,Q as l,Qt as u,R as d,S as f,St as p,U as m,Wt as h,X as g,Yt as _,Zt as v,_t as y,at as b,bt as x,et as S,gt as C,h as w,i as T,it as E,j as D,jt as O,kt as k,m as A,mt as j,n as M,nt as N,o as P,ot as F,pt as I,q as ee,qt as L,r as te,tt as R,vt as z,xt as B,zt as V}from"./button-BuzJlj9X.js";import{t as ne}from"./arrow-down-CuC5m7VK.js";import{n as re,t as ie}from"./useClipboard-tJg52v7m.js";import{t as ae}from"./sparkles-BGb3coPL.js";import{n as oe,r as se,t as ce}from"./TabsTrigger-DeTfRTma.js";import{n as le,t as ue}from"./CollapsibleContent-4ZwwyZPz.js";import{t as de}from"./CollapsibleTrigger-Cg651F6-.js";import{a as fe,i as pe,n as me,o as he,r as ge,t as _e}from"./dialog-CtPySx34.js";import{t as H}from"./Label-DVu1uVI7.js";import{t as ve}from"./Separator-DHTeoMaB.js";import{t as ye}from"./Switch-BDu-VJJd.js";import{B as be,C as xe,G as Se,X as Ce,Z as we,_ as Te,_t as Ee,a as U,g as W,gt as De,h as Oe,ht as ke,m as Ae,v as je,vt as Me,z as G}from"./index-BjnFvPid.js";import{t as K}from"./badge-DhXKxnV5.js";import{t as q}from"./Input-CLu4bS6g.js";import{t as Ne}from"./_plugin-vue_export-helper-BH2M0_bF.js";var Pe=d(`brain`,[[`path`,{d:`M12 18V5`,key:`adv99a`}],[`path`,{d:`M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4`,key:`1e3is1`}],[`path`,{d:`M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5`,key:`1gqd8o`}],[`path`,{d:`M17.997 5.125a4 4 0 0 1 2.526 5.77`,key:`iwvgf7`}],[`path`,{d:`M18 18a4 4 0 0 0 2-7.464`,key:`efp6ie`}],[`path`,{d:`M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517`,key:`1gq6am`}],[`path`,{d:`M6 18a4 4 0 0 1-2-7.464`,key:`k1g0md`}],[`path`,{d:`M6.003 5.125a4 4 0 0 0-2.526 5.77`,key:`q97ue3`}]]),Fe=d(`circle-check-big`,[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]]),Ie=d(`file-braces`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1`,key:`1oajmo`}],[`path`,{d:`M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1`,key:`mpwhp6`}]]),Le=d(`message-square`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}]]),Re=d(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),[J,ze]=Ce(`ScrollAreaRoot`),Be=F({__name:`ScrollAreaRoot`,props:{type:{type:String,required:!1,default:`hover`},dir:{type:String,required:!1},scrollHideDelay:{type:Number,required:!1,default:600},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e,{expose:t}){let n=e,r=V(0),i=V(0),a=V(),o=V(),s=V(),c=V(),l=V(!1),u=V(!1),{type:d,dir:f,scrollHideDelay:p}=h(n),m=Se(f);function g(){a.value?.scrollTo({top:0})}function _(){a.value?.scrollTo({top:0,left:0})}t({viewport:a,scrollTop:g,scrollTopLeft:_});let{forwardRef:y,currentElement:b}=P();return ze({type:d,dir:m,scrollHideDelay:p,scrollArea:b,viewport:a,onViewportChange:e=>{a.value=e||void 0},content:o,onContentChange:e=>{o.value=e},scrollbarX:s,scrollbarXEnabled:l,scrollbarY:c,scrollbarYEnabled:u,onScrollbarXChange:e=>{s.value=e||void 0},onScrollbarYChange:e=>{c.value=e||void 0},onScrollbarXEnabledChange:e=>{l.value=e},onScrollbarYEnabledChange:e=>{u.value=e},onCornerWidthChange:e=>{r.value=e},onCornerHeightChange:e=>{i.value=e}}),(e,t)=>(z(),S(L(T),{ref:L(y),"as-child":n.asChild,as:e.as,dir:L(m),style:v({position:`relative`,"--reka-scroll-area-corner-width":`${r.value}px`,"--reka-scroll-area-corner-height":`${i.value}px`})},{default:O(()=>[B(e.$slots,`default`)]),_:3},8,[`as-child`,`as`,`dir`,`style`]))}}),Ve=F({__name:`ScrollAreaCornerImpl`,setup(e){let t=J(),n=V(0),r=V(0),i=l(()=>!!n.value&&!!r.value);function a(){let e=t.scrollbarX.value?.offsetHeight||0;t.onCornerHeightChange(e),r.value=e}function o(){let e=t.scrollbarY.value?.offsetWidth||0;t.onCornerWidthChange(e),n.value=e}return A(t.scrollbarX.value,a),A(t.scrollbarY.value,o),c(()=>t.scrollbarX.value,a),c(()=>t.scrollbarY.value,o),(e,a)=>i.value?(z(),S(L(T),I({key:0,style:{width:`${n.value}px`,height:`${r.value}px`,position:`absolute`,right:L(t).dir.value===`ltr`?0:void 0,left:L(t).dir.value===`rtl`?0:void 0,bottom:0}},e.$parent?.$props),{default:O(()=>[B(e.$slots,`default`)]),_:3},16,[`style`])):R(`v-if`,!0)}}),He=F({__name:`ScrollAreaCorner`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,{forwardRef:n}=P(),r=J(),i=l(()=>!!r.scrollbarX.value&&!!r.scrollbarY.value),a=l(()=>r.type.value!==`scroll`&&i.value);return(e,r)=>a.value?(z(),S(Ve,I({key:0},t,{ref:L(n)}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16)):R(`v-if`,!0)}});function Ue(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function Y(e){let t=We(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function We(e,t){let n=e/t;return Number.isNaN(n)?0:n}function Ge(e,t=()=>{}){let n={left:e.scrollLeft,top:e.scrollTop},r=0;return(function i(){let a={left:e.scrollLeft,top:e.scrollTop},o=n.left!==a.left,s=n.top!==a.top;(o||s)&&t(),n=a,r=window.requestAnimationFrame(i)})(),()=>window.cancelAnimationFrame(r)}function Ke(e,t,n=`ltr`){let r=Y(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,o=t.content-t.viewport,s=a-r,c=n===`ltr`?[0,o]:[o*-1,0],l=we(e,c[0],c[1]);return Ue([0,o],[0,s])(l)}function qe(e){return e?Number.parseInt(e,10):0}function Je(e,t,n,r=`ltr`){let i=Y(n),a=i/2,o=t||a,s=i-o,c=n.scrollbar.paddingStart+o,l=n.scrollbar.size-n.scrollbar.paddingEnd-s,u=n.content-n.viewport,d=r===`ltr`?[0,u]:[u*-1,0];return Ue([c,l],d)(e)}function Ye(e,t){return e>0&&e<t}var Xe=F({__name:`ScrollAreaScrollbarX`,setup(e){let t=J(),n=it(),{forwardRef:r,currentElement:i}=P();C(()=>{i.value&&t.onScrollbarXChange(i.value)}),y(()=>{t.onScrollbarXChange(null)});let a=l(()=>n.sizes.value);return(e,i)=>(z(),S(st,{ref:L(r),"is-horizontal":!0,"data-orientation":`horizontal`,style:v({bottom:0,left:L(t).dir.value===`rtl`?`var(--reka-scroll-area-corner-width)`:0,right:L(t).dir.value===`ltr`?`var(--reka-scroll-area-corner-width)`:0,"--reka-scroll-area-thumb-width":a.value?`${L(Y)(a.value)}px`:void 0}),onOnDragScroll:i[0]||=e=>L(n).onDragScroll(e.x)},{default:O(()=>[B(e.$slots,`default`)]),_:3},8,[`style`]))}}),Ze=F({__name:`ScrollAreaScrollbarY`,setup(e){let t=J(),n=it(),{forwardRef:r,currentElement:i}=P();C(()=>{i.value&&t.onScrollbarYChange(i.value)}),y(()=>{t.onScrollbarYChange(null)});let a=l(()=>n.sizes.value);return(e,i)=>(z(),S(st,{ref:L(r),"is-horizontal":!1,"data-orientation":`vertical`,style:v({top:0,right:L(t).dir.value===`ltr`?0:void 0,left:L(t).dir.value===`rtl`?0:void 0,bottom:`var(--reka-scroll-area-corner-height)`,"--reka-scroll-area-thumb-height":a.value?`${L(Y)(a.value)}px`:void 0}),onOnDragScroll:i[0]||=e=>L(n).onDragScroll(e.y)},{default:O(()=>[B(e.$slots,`default`)]),_:3},8,[`style`]))}}),Qe=F({__name:`ScrollAreaScrollbarAuto`,props:{forceMount:{type:Boolean,required:!1}},setup(e){let t=J(),n=X(),{forwardRef:r}=P(),a=V(!1),o=i(()=>{if(t.viewport.value){let e=t.viewport.value.offsetWidth<t.viewport.value.scrollWidth,r=t.viewport.value.offsetHeight<t.viewport.value.scrollHeight;a.value=n.isHorizontal.value?e:r}},10);return C(()=>o()),A(t.viewport,o),A(t.content,o),(e,t)=>(z(),S(L(G),{present:e.forceMount||a.value},{default:O(()=>[b(ot,I(e.$attrs,{ref:L(r),"data-state":a.value?`visible`:`hidden`}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16,[`data-state`])]),_:3},8,[`present`]))}}),$e=F({inheritAttrs:!1,__name:`ScrollAreaScrollbarGlimpse`,props:{forceMount:{type:Boolean,required:!1}},setup(e){let t=J(),n=X(),{forwardRef:r}=P(),{state:a,dispatch:o}=be(`hidden`,{hidden:{POINTER_ENTER:`glimpse`,SCROLL:`scrolling`},glimpse:{HIDE:`hidden`,POINTER_LEAVE:`hidden`,SCROLL:`scrolling`,POINTER_ENTER:`glimpse`},scrolling:{SCROLL_END:`idle`,POINTER_ENTER:`interacting`},interacting:{SCROLL:`interacting`,POINTER_LEAVE:`idle`},idle:{HIDE:`hidden`,SCROLL:`scrolling`,POINTER_ENTER:`interacting`}}),s=l(()=>a.value!==`hidden`);function c(){o(`POINTER_ENTER`)}function u(){o(`POINTER_LEAVE`)}let d=i(()=>o(`SCROLL_END`),100);return k(e=>{if(a.value===`glimpse`){let n=window.setTimeout(o,t.scrollHideDelay.value,`HIDE`);e(()=>{window.clearTimeout(n)})}}),k(e=>{if(a.value===`idle`){let n=window.setTimeout(o,t.scrollHideDelay.value,`HIDE`);e(()=>{window.clearTimeout(n)})}}),k(e=>{let r=t.viewport.value,i=n.isHorizontal.value?`scrollLeft`:`scrollTop`;if(r){let t=r[i],n=()=>{let e=r[i];t!==e&&(o(`SCROLL`),d()),t=e};r.addEventListener(`scroll`,n),e(()=>{r.removeEventListener(`scroll`,n)})}}),C(()=>{let e=t.scrollArea.value;e&&(e.addEventListener(`pointerenter`,c),e.addEventListener(`pointerleave`,u))}),y(()=>{let e=t.scrollArea.value;e&&(e.removeEventListener(`pointerenter`,c),e.removeEventListener(`pointerleave`,u))}),(e,t)=>(z(),S(L(G),{present:e.forceMount||s.value},{default:O(()=>[b(Qe,I(e.$attrs,{ref:L(r),"data-state":s.value?`visible`:`hidden`}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16,[`data-state`])]),_:3},8,[`present`]))}}),et=F({inheritAttrs:!1,__name:`ScrollAreaScrollbarHover`,props:{forceMount:{type:Boolean,required:!1}},setup(e){let t=J(),{forwardRef:n}=P(),r,i=V(!1);function a(){window.clearTimeout(r),i.value=!0}function o(){r=window.setTimeout(()=>{i.value=!1},t.scrollHideDelay.value)}return C(()=>{let e=t.scrollArea.value;e&&(e.addEventListener(`pointerenter`,a),e.addEventListener(`pointerleave`,o))}),y(()=>{let e=t.scrollArea.value;e&&(window.clearTimeout(r),e.removeEventListener(`pointerenter`,a),e.removeEventListener(`pointerleave`,o))}),(e,t)=>(z(),S(L(G),{present:e.forceMount||i.value},{default:O(()=>[b(Qe,I(e.$attrs,{ref:L(n),"data-state":i.value?`visible`:`hidden`}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16,[`data-state`])]),_:3},8,[`present`]))}}),tt=F({__name:`ScrollAreaScrollbarScroll`,props:{forceMount:{type:Boolean,required:!1}},setup(e){let t=J(),n=X(),{forwardRef:r}=P(),{state:a,dispatch:o}=be(`hidden`,{hidden:{SCROLL:`scrolling`},scrolling:{SCROLL_END:`idle`,POINTER_ENTER:`interacting`},interacting:{SCROLL:`interacting`,POINTER_LEAVE:`idle`},idle:{HIDE:`hidden`,SCROLL:`scrolling`,POINTER_ENTER:`interacting`}}),s=l(()=>a.value!==`hidden`);k(e=>{if(a.value===`idle`){let n=window.setTimeout(o,t.scrollHideDelay.value,`HIDE`);e(()=>{window.clearTimeout(n)})}});let c=i(()=>o(`SCROLL_END`),100);return k(e=>{let r=t.viewport.value,i=n.isHorizontal.value?`scrollLeft`:`scrollTop`;if(r){let t=r[i],n=()=>{let e=r[i];t!==e&&(o(`SCROLL`),c()),t=e};r.addEventListener(`scroll`,n),e(()=>{r.removeEventListener(`scroll`,n)})}}),(e,t)=>(z(),S(L(G),{present:e.forceMount||s.value},{default:O(()=>[b(ot,I(e.$attrs,{ref:L(r),"data-state":s.value?`visible`:`hidden`}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16,[`data-state`])]),_:3},8,[`present`]))}}),[X,nt]=Ce(`ScrollAreaScrollbar`),rt=F({inheritAttrs:!1,__name:`ScrollAreaScrollbar`,props:{orientation:{type:String,required:!1,default:`vertical`},forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`div`}},setup(e){let t=e,{forwardRef:n}=P(),r=J(),i=l(()=>t.orientation===`horizontal`);c(i,()=>{i.value?r.onScrollbarXEnabledChange(!0):r.onScrollbarYEnabledChange(!0)},{immediate:!0}),y(()=>{r.onScrollbarXEnabledChange(!1),r.onScrollbarYEnabledChange(!1)});let{orientation:a,forceMount:o,asChild:s,as:u}=h(t);return nt({orientation:a,forceMount:o,isHorizontal:i,as:u,asChild:s}),(e,t)=>L(r).type.value===`hover`?(z(),S(et,I({key:0},e.$attrs,{ref:L(n),"force-mount":L(o)}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16,[`force-mount`])):L(r).type.value===`scroll`?(z(),S(tt,I({key:1},e.$attrs,{ref:L(n),"force-mount":L(o)}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16,[`force-mount`])):L(r).type.value===`glimpse`?(z(),S($e,I({key:2},e.$attrs,{ref:L(n),"force-mount":L(o)}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16,[`force-mount`])):L(r).type.value===`auto`?(z(),S(Qe,I({key:3},e.$attrs,{ref:L(n),"force-mount":L(o)}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16,[`force-mount`])):L(r).type.value===`always`?(z(),S(ot,I({key:4},e.$attrs,{ref:L(n),"data-state":`visible`}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16)):R(`v-if`,!0)}}),[it,at]=Ce(`ScrollAreaScrollbarVisible`),ot=F({__name:`ScrollAreaScrollbarVisible`,setup(e){let t=J(),n=X(),{forwardRef:r}=P(),i=V({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),a=l(()=>{let e=We(i.value.viewport,i.value.content);return e>0&&e<1}),o=V(),s=V(0);function c(e,n){if(m.value){let r=t.viewport.value.scrollLeft+e.deltaY;t.viewport.value.scrollLeft=r,Ye(r,n)&&e.preventDefault()}else{let r=t.viewport.value.scrollTop+e.deltaY;t.viewport.value.scrollTop=r,Ye(r,n)&&e.preventDefault()}}function u(e,t){m.value?s.value=t.x:s.value=t.y}function d(e){s.value=0}function f(e){i.value=e}function p(e,t){return Je(e,s.value,i.value,t)}let m=l(()=>n.isHorizontal.value);function h(e){m.value?t.viewport.value.scrollLeft=p(e,t.dir.value):t.viewport.value.scrollTop=p(e)}function g(){if(m.value){if(t.viewport.value&&o.value){let e=t.viewport.value.scrollLeft,n=Ke(e,i.value,t.dir.value);o.value.style.transform=`translate3d(${n}px, 0, 0)`}}else if(t.viewport.value&&o.value){let e=t.viewport.value.scrollTop,n=Ke(e,i.value);o.value.style.transform=`translate3d(0, ${n}px, 0)`}}function _(e){o.value=e}return at({sizes:i,hasThumb:a,handleWheelScroll:c,handleThumbDown:u,handleThumbUp:d,handleSizeChange:f,onThumbPositionChange:g,onThumbChange:_,onDragScroll:h}),(e,t)=>m.value?(z(),S(Xe,I({key:0},e.$attrs,{ref:L(r)}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16)):(z(),S(Ze,I({key:1},e.$attrs,{ref:L(r)}),{default:O(()=>[B(e.$slots,`default`)]),_:3},16))}}),st=F({__name:`ScrollAreaScrollbarImpl`,props:{isHorizontal:{type:Boolean,required:!0}},emits:[`onDragScroll`,`onWheelScroll`,`onThumbPointerDown`],setup(e,{emit:t}){let n=e,r=t,i=J(),a=it(),o=X(),{forwardRef:s,currentElement:c}=P(),l=V(``),u=V();function d(e){u.value&&r(`onDragScroll`,{x:e.clientX-u.value?.left,y:e.clientY-u.value?.top})}function f(e){e.button===0&&(e.target.setPointerCapture(e.pointerId),u.value=c.value.getBoundingClientRect(),l.value=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,i.viewport&&(i.viewport.value.style.scrollBehavior=`auto`),d(e))}function p(e){d(e)}function m(e){let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=l.value,i.viewport&&(i.viewport.value.style.scrollBehavior=``),u.value=void 0}function h(e){let t=e.target,n=c.value?.contains(t),r=a.sizes.value.content-a.sizes.value.viewport;n&&a.handleWheelScroll(e,r)}C(()=>{document.addEventListener(`wheel`,h,{passive:!1})}),y(()=>{document.removeEventListener(`wheel`,h)});function g(){c.value&&(n.isHorizontal?a.handleSizeChange({content:i.viewport.value?.scrollWidth??0,viewport:i.viewport.value?.offsetWidth??0,scrollbar:{size:c.value.clientWidth??0,paddingStart:qe(getComputedStyle(c.value).paddingLeft),paddingEnd:qe(getComputedStyle(c.value).paddingRight)}}):a.handleSizeChange({content:i.viewport.value?.scrollHeight??0,viewport:i.viewport.value?.offsetHeight??0,scrollbar:{size:c.value?.clientHeight??0,paddingStart:qe(getComputedStyle(c.value).paddingTop),paddingEnd:qe(getComputedStyle(c.value).paddingBottom)}}),a.onThumbPositionChange())}return A(c,g),A(i.content,g),(e,t)=>(z(),S(L(T),{ref:L(s),style:{position:`absolute`},"data-scrollbarimpl":``,as:L(o).as.value,"as-child":L(o).asChild.value,onPointerdown:f,onPointermove:p,onPointerup:m},{default:O(()=>[B(e.$slots,`default`)]),_:3},8,[`as`,`as-child`]))}}),ct=F({__name:`ScrollAreaThumb`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,n=J(),r=it();function i(e){let t=e.target.getBoundingClientRect(),n=e.clientX-t.left,i=e.clientY-t.top;r.handleThumbDown(e,{x:n,y:i})}function a(e){r.handleThumbUp(e)}let{forwardRef:o,currentElement:c}=P(),u=V(),d=l(()=>n.viewport.value);function f(){u.value||(u.value=Ge(d.value,r.onThumbPositionChange),r.onThumbPositionChange())}return s(l(()=>r.sizes.value),()=>{r.onThumbChange(c.value),d.value&&(r.onThumbPositionChange(),d.value.addEventListener(`scroll`,f))}),y(()=>{d.value.removeEventListener(`scroll`,f),n.viewport.value?.removeEventListener(`scroll`,f)}),(e,n)=>(z(),S(L(T),{ref:L(o),"data-state":L(r).hasThumb?`visible`:`hidden`,style:{width:`var(--reka-scroll-area-thumb-width)`,height:`var(--reka-scroll-area-thumb-height)`},"as-child":t.asChild,as:e.as,onPointerdown:i,onPointerup:a},{default:O(()=>[B(e.$slots,`default`)]),_:3},8,[`data-state`,`as-child`,`as`]))}}),lt=F({inheritAttrs:!1,__name:`ScrollAreaViewport`,props:{nonce:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t,{expose:n}){let r=t,{nonce:i}=h(r),a=xe(i),o=J(),s=V();C(()=>{o.onViewportChange(s.value),o.onContentChange(l.value)}),n({viewportElement:s});let{forwardRef:c,currentElement:l}=P();return(t,n)=>(z(),N(g,null,[e(`div`,I({ref_key:`viewportElement`,ref:s,"data-reka-scroll-area-viewport":``,style:{overflowX:L(o).scrollbarXEnabled.value?`scroll`:`hidden`,overflowY:L(o).scrollbarYEnabled.value?`scroll`:`hidden`}},t.$attrs,{tabindex:0}),[b(L(T),{ref:L(c),style:v({minWidth:L(o).scrollbarXEnabled.value?`fit-content`:void 0}),"as-child":r.asChild,as:t.as},{default:O(()=>[B(t.$slots,`default`)]),_:3},8,[`style`,`as-child`,`as`])],16),b(L(T),{as:`style`,nonce:L(a)},{default:O(()=>n[0]||=[E(` /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-scroll-area-viewport] { scrollbar-width:none; -ms-overflow-style:none; -webkit-overflow-scrolling:touch; } [data-reka-scroll-area-viewport]::-webkit-scrollbar { display:none; } `)]),_:1,__:[0]},8,[`nonce`])],64))}}),ut=F({__name:`Textarea`,props:{class:{type:[Boolean,null,String,Object,Array]},defaultValue:{},modelValue:{}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,r=w(n,`modelValue`,t,{passive:!0,defaultValue:n.defaultValue});return(e,t)=>o((z(),N(`textarea`,{"onUpdate:modelValue":t[0]||=e=>a(r)?r.value=e:null,"data-slot":`textarea`,class:_(L(te)(`border-input dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 rounded-lg border bg-transparent px-2.5 py-2 text-base transition-colors focus-visible:ring-3 aria-invalid:ring-3 md:text-sm flex field-sizing-content min-h-16 w-full outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50`,n.class))},null,2)),[[ee,L(r)]])}}),dt={class:`flex items-center gap-2`},ft={key:0,class:`rounded-lg border border-success/20 bg-success/5 px-3 py-2.5 flex items-start gap-2.5`},pt={class:`flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-success/10 mt-0.5`},mt={class:`text-sm text-success-foreground leading-relaxed`},ht={class:`space-y-4`},gt={class:`space-y-3`},_t={class:`rounded-lg border bg-muted/30 p-3 space-y-3`},vt={class:`text-xs font-medium text-muted-foreground uppercase tracking-wide`},yt={class:`grid grid-cols-2 gap-3`},bt={class:`rounded-lg border bg-muted/30 p-3 space-y-3`},xt={class:`text-xs font-medium text-muted-foreground uppercase tracking-wide`},St={class:`grid grid-cols-2 gap-3`},Ct={key:0},wt={class:`flex items-center gap-2.5 pt-1`},Tt=100,Et=599,Dt=100,Ot=100,kt=F({__name:`AiRulePreviewDialog`,props:{open:{type:Boolean},rule:{},summary:{}},emits:[`update:open`,`saved`],setup(n,{emit:r}){let{t:i}=m(),a=n,o=r;function s(){return{name:``,status_code:429,body_pattern:``,retry_strategy:`exponential`,retry_delay_ms:5e3,max_retries:10,max_delay_ms:6e4,is_active:!0,provider_id:`__all__`}}let l=V(s());c([()=>a.open,()=>a.rule],([e,t])=>{e&&t&&(l.value={...t,is_active:!0,provider_id:`__all__`},p.value=!1,f())},{immediate:!0});let d=V([]);async function f(){try{d.value=await t.getProviders()}catch(e){console.error(`AiRulePreviewDialog.loadProviders:`,e),U.error(D(e,i(`logs.messages.loadProvidersFailed`)))}}let p=V(!1);async function h(){if(p.value)return;let e=[];l.value.name.trim()||e.push(i(`retryRules.messages.nameRequired`));let n=l.value.status_code;(typeof n!=`number`||isNaN(n)||n<Tt||n>Et)&&e.push(i(`retryRules.messages.statusCodeRange`));try{new RegExp(l.value.body_pattern)}catch(t){console.error(`AiRulePreviewDialog.validateRule:`,t),e.push(i(`retryRules.messages.bodyPatternInvalid`))}l.value.body_pattern.trim()||e.push(i(`retryRules.messages.bodyPatternInvalid`));let r=l.value.retry_delay_ms;(typeof r!=`number`||isNaN(r)||r<Dt)&&e.push(i(`retryRules.messages.delayMin`));let a=l.value.max_retries;(typeof a!=`number`||isNaN(a)||a<0||a>Ot)&&e.push(i(`retryRules.messages.retriesRange`));let s=l.value.max_delay_ms;if(l.value.retry_strategy===`exponential`&&(typeof s!=`number`||isNaN(s)||s<Dt)&&e.push(i(`retryRules.messages.delayMin`)),e.length>0){U.error(e.join(`; `));return}p.value=!0;try{await t.createRetryRule({name:l.value.name,status_code:Number(l.value.status_code),body_pattern:l.value.body_pattern,is_active:+!!l.value.is_active,retry_strategy:l.value.retry_strategy,retry_delay_ms:Number(l.value.retry_delay_ms),max_retries:Number(l.value.max_retries),max_delay_ms:l.value.retry_strategy===`exponential`?Number(l.value.max_delay_ms):void 0,provider_id:l.value.provider_id===`__all__`?null:l.value.provider_id||null}),U.success(i(`retryRules.messages.saveCompleted`)),o(`saved`),o(`update:open`,!1)}catch(e){console.error(`AiRulePreviewDialog.handleSave:`,e),U.error(D(e,i(`retryRules.messages.saveFailed`)))}finally{p.value=!1}}return(t,r)=>(z(),S(L(he),{open:n.open,"onUpdate:open":r[10]||=e=>o(`update:open`,e)},{default:O(()=>[b(L(fe),{class:`sm:max-w-xl`},{default:O(()=>[b(L(me),{class:`gap-1.5`},{default:O(()=>[e(`div`,dt,[b(L(ae),{class:`h-4 w-4 text-primary shrink-0`}),b(L(_e),null,{default:O(()=>[E(u(L(i)(`logs.aiGeneratedRule`)),1)]),_:1})]),b(L(K),{variant:`secondary`,class:`w-fit text-[10px]`},{default:O(()=>[E(u(L(i)(`logs.aiGenerated`)),1)]),_:1})]),_:1}),n.summary?(z(),N(`div`,ft,[e(`div`,pt,[b(L(De),{class:`h-3 w-3 text-success`})]),e(`p`,mt,u(n.summary),1)])):R(``,!0),e(`div`,ht,[e(`div`,gt,[e(`div`,null,[b(L(H),{class:`text-xs text-muted-foreground font-medium`},{default:O(()=>[E(u(L(i)(`retryRules.dialog.name`)),1)]),_:1}),b(L(q),{modelValue:l.value.name,"onUpdate:modelValue":r[0]||=e=>l.value.name=e,type:`text`,class:`mt-1`},null,8,[`modelValue`])]),e(`div`,null,[b(L(H),{class:`text-xs text-muted-foreground font-medium`},{default:O(()=>[E(u(L(i)(`retryRules.provider`)),1)]),_:1}),b(L(je),{modelValue:l.value.provider_id,"onUpdate:modelValue":r[1]||=e=>l.value.provider_id=e},{default:O(()=>[b(L(Oe),{class:`mt-1`},{default:O(()=>[b(L(Ae),{placeholder:L(i)(`retryRules.providerPlaceholder`)},null,8,[`placeholder`])]),_:1}),b(L(Te),null,{default:O(()=>[b(L(W),{value:`__all__`},{default:O(()=>[E(u(L(i)(`retryRules.providerAll`)),1)]),_:1}),(z(!0),N(g,null,x(d.value,e=>(z(),S(L(W),{key:e.id,value:e.id},{default:O(()=>[E(u(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`])])]),e(`div`,_t,[e(`p`,vt,u(L(i)(`logs.matchConditions`)),1),e(`div`,yt,[e(`div`,null,[b(L(H),{class:`text-xs text-muted-foreground font-medium`},{default:O(()=>[E(u(L(i)(`retryRules.dialog.statusCode`)),1)]),_:1}),b(L(q),{modelValue:l.value.status_code,"onUpdate:modelValue":r[2]||=e=>l.value.status_code=e,modelModifiers:{number:!0},type:`number`,class:`mt-1`},null,8,[`modelValue`])]),e(`div`,null,[b(L(H),{class:`text-xs text-muted-foreground font-medium`},{default:O(()=>[E(u(L(i)(`retryRules.dialog.retryStrategy`)),1)]),_:1}),b(L(je),{modelValue:l.value.retry_strategy,"onUpdate:modelValue":r[3]||=e=>l.value.retry_strategy=e},{default:O(()=>[b(L(Oe),{class:`mt-1`},{default:O(()=>[b(L(Ae))]),_:1}),b(L(Te),null,{default:O(()=>[b(L(W),{value:`exponential`},{default:O(()=>[E(u(L(i)(`retryRules.strategy.exponential`)),1)]),_:1}),b(L(W),{value:`fixed`},{default:O(()=>[E(u(L(i)(`retryRules.strategy.fixed`)),1)]),_:1})]),_:1})]),_:1},8,[`modelValue`])])]),e(`div`,null,[b(L(H),{class:`text-xs text-muted-foreground font-medium`},{default:O(()=>[E(u(L(i)(`retryRules.dialog.bodyPattern`)),1)]),_:1}),b(L(ut),{modelValue:l.value.body_pattern,"onUpdate:modelValue":r[4]||=e=>l.value.body_pattern=e,class:`font-mono mt-1`,rows:2},null,8,[`modelValue`])])]),e(`div`,bt,[e(`p`,xt,u(L(i)(`logs.retryParams`)),1),e(`div`,St,[e(`div`,null,[b(L(H),{class:`text-xs text-muted-foreground font-medium`},{default:O(()=>[E(u(l.value.retry_strategy===`fixed`?L(i)(`retryRules.dialog.intervalMs`):L(i)(`retryRules.dialog.initialDelayMs`)),1)]),_:1}),b(L(q),{modelValue:l.value.retry_delay_ms,"onUpdate:modelValue":r[5]||=e=>l.value.retry_delay_ms=e,modelModifiers:{number:!0},type:`number`,class:`mt-1`},null,8,[`modelValue`])]),e(`div`,null,[b(L(H),{class:`text-xs text-muted-foreground font-medium`},{default:O(()=>[E(u(L(i)(`retryRules.dialog.maxRetries`)),1)]),_:1}),b(L(q),{modelValue:l.value.max_retries,"onUpdate:modelValue":r[6]||=e=>l.value.max_retries=e,modelModifiers:{number:!0},type:`number`,class:`mt-1`},null,8,[`modelValue`])])]),l.value.retry_strategy===`exponential`?(z(),N(`div`,Ct,[b(L(H),{class:`text-xs text-muted-foreground font-medium`},{default:O(()=>[E(u(L(i)(`retryRules.dialog.maxDelayMs`)),1)]),_:1}),b(L(q),{modelValue:l.value.max_delay_ms,"onUpdate:modelValue":r[7]||=e=>l.value.max_delay_ms=e,modelModifiers:{number:!0},type:`number`,class:`mt-1`},null,8,[`modelValue`])])):R(``,!0)]),e(`div`,wt,[b(L(ye),{checked:l.value.is_active,"onUpdate:checked":r[8]||=e=>l.value.is_active=e,id:`rule-active`},null,8,[`checked`]),b(L(H),{for:`rule-active`,class:`text-sm text-foreground cursor-pointer`},{default:O(()=>[E(u(L(i)(`retryRules.dialog.enable`)),1)]),_:1})])]),b(L(ge),{class:`border-t pt-4 mt-2`},{default:O(()=>[b(L(M),{variant:`outline`,onClick:r[9]||=e=>o(`update:open`,!1)},{default:O(()=>[E(u(L(i)(`common.cancel`)),1)]),_:1}),b(L(M),{disabled:p.value,onClick:h},{default:O(()=>[E(u(L(i)(`logs.saveRule`)),1)]),_:1},8,[`disabled`])]),_:1})]),_:1})]),_:1},8,[`open`]))}});function At(e,t){if(!e)return`off`;try{let n=JSON.parse(e)?.body;return n?t===`anthropic`?n.thinking?.type??`off`:n.reasoning?.effort??n.reasoning_effort??`off`:`off`}catch{return`off`}}var Z=1e3;function jt(e,t){let n=e.attempts.length>0?e.attempts[e.attempts.length-1]:void 0,r=e.streamMetrics,i=r?.tokensPerSecond??null;if(!i&&r&&r.outputTokens&&r.ttftMs&&e.completedAt){let t=(e.completedAt-e.startTime-r.ttftMs)/Z;t>0&&(i=r.outputTokens/t)}return{id:e.id,model:e.model,backendModel:null,originalModel:null,statusCode:e.status===`completed`?n?.statusCode??null:null,isStream:e.isStream,apiType:e.apiType,providerName:e.providerName,clientIp:e.clientIp,sessionId:e.sessionId??null,latencyMs:e.completedAt?e.completedAt-e.startTime:null,ttftMs:r?.ttftMs??null,inputTokens:r?.inputTokens??null,outputTokens:r?.outputTokens??null,tokensPerSecond:i,cacheReadTokens:r?.cacheReadTokens??null,cacheWriteTokens:null,stopReason:r?.stopReason??null,isComplete:r?.isComplete??!1,attempts:e.attempts.map(e=>({statusCode:e.statusCode,error:e.error,latencyMs:e.latencyMs,providerId:e.providerId,model:e.model,apiType:e.apiType})),status:e.status,clientRequest:e.clientRequest??null,upstreamRequest:e.upstreamRequest??null,responseBody:t??null,upstreamResponse:null,errorMessage:null,createdAt:null,inputTokensEstimated:!1,clientType:null,cacheReadTokensEstimated:r?.cacheReadTokensEstimated??null,mappingReason:e.mappingReason,thinkingLevel:e.thinkingLevel??`off`,upstreamApiType:null,upstreamBaseUrl:null}}function Mt(e){if(!e)return null;try{let t=JSON.parse(e);return typeof t.statusCode==`number`&&t.headers&&!t.content&&!t.choices?typeof t.body==`string`?t.body:null:e}catch{return e}}var Nt=[`stream_error: upstream returned 200 but body contains error`],Pt=new Set([`direct_format`,`group_base_rule`,`group_schedule`,`fallback_provider`,`overflow_redirect`,`failover_retry`]);function Ft(e){if(e)try{let t=JSON.parse(e),n=Array.isArray(t)?t:[];if(n.length===0)return;for(let e of n)if(e.stage===`overflow`&&e.triggered===!0)return`overflow_redirect`;for(let e of n)if(e.stage===`routing`&&typeof e.mapping_reason==`string`)return Pt.has(e.mapping_reason)?e.mapping_reason:void 0;return}catch{return}}function It(e){return e?Nt.some(t=>e.startsWith(t)):!1}function Lt(e,t){let n=e.input_tokens??null,r=e.output_tokens??null,i=e.ttft_ms??null,a=e.tokens_per_second??null;if(!a&&r&&i&&e.latency_ms){let t=(e.latency_ms-i)/Z;t>0&&(a=r/t)}let o=Mt(e.upstream_response)??e.stream_text_content??null;return{id:e.id,model:e.original_model??e.model??`unknown`,backendModel:e.backend_model,originalModel:e.original_model,statusCode:e.status_code,isStream:!!e.is_stream,apiType:e.api_type===`openai`||e.api_type===`openai-responses`||e.api_type===`anthropic`?e.api_type:`openai`,providerName:e.provider_name,clientIp:void 0,sessionId:e.session_id??null,latencyMs:e.latency_ms,ttftMs:i,inputTokens:n,outputTokens:r,tokensPerSecond:a,cacheReadTokens:e.cache_read_tokens??null,cacheWriteTokens:null,stopReason:e.stop_reason??null,isComplete:!!e.metrics_complete,attempts:[...(t??[]).map(e=>({statusCode:e.status_code,error:e.error_message,latencyMs:e.latency_ms??0,providerId:e.provider_id??``,model:e.backend_model??e.model??void 0,apiType:e.api_type})),{statusCode:e.status_code,error:e.error_message,latencyMs:e.latency_ms??0,providerId:e.provider_id??``,model:e.backend_model??e.model??void 0,apiType:e.api_type}],status:(e.status_code??0)>=400?`failed`:`completed`,clientRequest:e.client_request,upstreamRequest:e.upstream_request,responseBody:o,upstreamResponse:e.upstream_response,errorMessage:It(e.error_message)?null:e.error_message,createdAt:e.created_at,inputTokensEstimated:e.input_tokens_estimated===1,clientType:e.client_type??null,cacheReadTokensEstimated:e.cache_read_tokens_estimated??null,mappingReason:Ft(e.pipeline_snapshot),thinkingLevel:e.thinking_level??At(e.client_request,e.api_type),upstreamApiType:e.upstream_api_type??null,upstreamBaseUrl:e.upstream_base_url??null}}var Rt=F({__name:`ScrollBar`,props:{orientation:{default:`vertical`},forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=f(t,`class`);return(r,i)=>(z(),S(L(rt),I({"data-slot":`scroll-area-scrollbar`,"data-orientation":e.orientation},L(n),{class:L(te)(`data-[orientation=horizontal]:h-2.5 data-[orientation=horizontal]:flex-col data-[orientation=horizontal]:border-t data-[orientation=horizontal]:border-t-transparent data-[orientation=vertical]:h-full data-[orientation=vertical]:w-2.5 data-[orientation=vertical]:border-l data-[orientation=vertical]:border-l-transparent flex touch-none p-px transition-colors select-none`,t.class)}),{default:O(()=>[b(L(ct),{"data-slot":`scroll-area-thumb`,class:`rounded-full relative flex-1 bg-border`})]),_:1},16,[`data-orientation`,`class`]))}}),Q=F({__name:`ScrollArea`,props:{type:{},dir:{},scrollHideDelay:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=f(t,`class`);return(e,r)=>(z(),S(L(Be),I({"data-slot":`scroll-area`},L(n),{class:L(te)(`relative`,t.class)}),{default:O(()=>[b(L(lt),{"data-slot":`scroll-area-viewport`,class:`size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1`},{default:O(()=>[B(e.$slots,`default`)]),_:3}),b(Rt),b(L(He))]),_:3},16,[`class`]))}});function zt(e,t){if(!e)return t||``;try{let n=JSON.parse(e);return typeof n.statusCode==`number`&&(n.headers||n.body!==void 0)?n.body===null&&t?JSON.stringify({...n,body:t},null,Bt):JSON.stringify(n,null,Bt):e}catch{return e}}var Bt=2,Vt=new Set([`choices`,`content`]);function Ht(e,t){if(!e&&!t)return``;let n=Ut(e),r=n?.headers,i=n?.body??t;if(r){let e={headers:r};return i&&(e.body=Wt(i)),JSON.stringify(e,null,Bt)}if(i){let e=Wt(i);return JSON.stringify(e,null,Bt)}return``}function Ut(e){if(!e)return null;try{let t=JSON.parse(e);return typeof t.statusCode==`number`&&(t.headers||t.body!==void 0)?{headers:t.headers??{},body:typeof t.body==`string`?t.body:t.body==null?null:JSON.stringify(t.body)}:null}catch{return null}}function Wt(e){try{let t=JSON.parse(e);if(typeof t==`object`&&t){let e={};for(let[n,r]of Object.entries(t))Vt.has(n)||(e[n]=r);return e}return e}catch{return e}}var Gt={class:`flex flex-col h-full`},Kt={key:0,class:`flex-1 overflow-y-auto`},qt={class:`rounded-md border overflow-hidden mb-3`},Jt={class:`flex items-center gap-2 px-2.5 py-2 border-b bg-muted/20`},Yt={class:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium`},Xt={class:`text-[13px] font-medium`},Zt={class:`px-2.5 py-1`},Qt={class:`flex items-center gap-0 text-[11px]`},$t={class:`text-muted-foreground/60 font-mono text-[10px] w-5 shrink-0`},en={class:`flex-1 min-w-0 overflow-x-auto whitespace-nowrap scrollbar-none`},tn={class:`font-mono`},nn={class:`text-muted-foreground`},rn={class:`flex items-center gap-1.5 pl-5 mt-0.5 flex-wrap`},an={class:`text-muted-foreground/60 font-mono text-[11px]`},on={class:`flex items-center gap-1.5 mb-3`},sn={key:1,class:`font-mono text-[10px] text-muted-foreground ml-1`},cn={key:0,class:`rounded-md border px-3 py-2 mb-3`,style:{background:`oklch(0.3 0.08 25 / 15%)`,"border-color":`oklch(0.58 0.22 25 / 30%)`}},ln={class:`font-mono text-xs font-semibold text-destructive break-all`},un={class:`text-[10px] text-muted-foreground mt-0.5`},dn={class:`grid grid-cols-2 gap-0 p-0 border rounded-md overflow-hidden mb-3`},fn={class:`px-2.5 py-1.5 min-w-0 border-b border-r`},pn={class:`text-[9px] uppercase tracking-wider text-muted-foreground`},mn={class:`text-sm font-semibold truncate`},hn={class:`px-2.5 py-1.5 min-w-0 border-b`},gn={class:`text-[9px] uppercase tracking-wider text-muted-foreground`},_n={class:`text-sm font-semibold truncate`},vn={class:`px-2.5 py-1.5 min-w-0 border-b border-r`},yn={class:`text-[9px] uppercase tracking-wider text-muted-foreground`},bn={class:`text-sm font-semibold truncate`},xn={class:`px-2.5 py-1.5 min-w-0 border-b`},Sn={class:`text-[9px] uppercase tracking-wider text-muted-foreground`},Cn={class:`px-2.5 py-1.5 min-w-0 border-r`},wn={class:`text-[9px] uppercase tracking-wider text-muted-foreground`},Tn={class:`text-sm font-semibold truncate`},En={class:`px-2.5 py-1.5 min-w-0`},Dn={class:`text-[9px] uppercase tracking-wider text-muted-foreground`},On={class:`text-sm font-semibold truncate`},kn={key:1,class:`rounded-md px-2 py-1.5 bg-muted/30 mb-3`},An={class:`text-[10px] text-muted-foreground`},jn={key:0,class:`text-[11px] font-semibold text-success-dark`},Mn={key:1,class:`text-[11px] font-semibold text-warning-dark`},Nn={class:`space-y-0.5 text-[11px] mb-3`},Pn={key:0,class:`flex justify-between`},Fn={class:`text-muted-foreground`},In={class:`font-mono`},Ln={key:1,class:`flex justify-between`},Rn={class:`text-muted-foreground`},zn={class:`font-mono`},Bn={key:2,class:`flex justify-between`},Vn={class:`text-muted-foreground`},Hn={class:`font-mono truncate max-w-[160px]`},Un={key:3,class:`flex items-center justify-between text-[11px]`},Wn={class:`text-muted-foreground`},Gn={class:`font-mono text-warning-dark`},Kn={key:4,class:`flex items-center justify-between text-[11px]`},qn={class:`text-muted-foreground`},Jn={class:`font-mono truncate max-w-[160px]`},Yn={class:`p-3 text-[11px] whitespace-pre-wrap break-words`},Xn=2,Zn=F({__name:`RequestOverviewPanel`,props:{overview:{},showRaw:{type:Boolean}},setup(t){let{t:n}=m(),r={direct_format:`直连`,group_base_rule:`基础规则`,group_schedule:`定时调度`,fallback_provider:`回退`,overflow_redirect:`溢出重定向`,failover_retry:`故障转移`},i=t,a=l(()=>{let e=i.overview.clientType;return e===`claude-code`?`Claude Code`:e===`codex`?`Codex CLI`:e===`pi`?`Pi`:e===`openai-sdk`?`OpenAI SDK`:e===`anthropic-sdk`?`Anthropic SDK`:e??`Unknown`}),o=l(()=>Ht(i.overview.upstreamResponse,i.overview.responseBody)||JSON.stringify({latencyMs:i.overview.latencyMs,ttftMs:i.overview.ttftMs,inputTokens:i.overview.inputTokens,outputTokens:i.overview.outputTokens,tokensPerSecond:i.overview.tokensPerSecond,cacheReadTokens:i.overview.cacheReadTokens,cacheWriteTokens:i.overview.cacheWriteTokens,stopReason:i.overview.stopReason,statusCode:i.overview.statusCode},null,Xn)),s=l(()=>i.overview.status===`pending`&&i.overview.outputTokens!=null),c=l(()=>{let e=i.overview.outputTokens;return e==null?`--`:s.value?`+${e}`:`${e}`}),d=l(()=>i.overview.status===`pending`&&i.overview.latencyMs==null?`...`:i.overview.latencyMs==null?`--`:`${(i.overview.latencyMs/Z).toFixed(1)}s`),f=l(()=>{if(i.overview.tokensPerSecond!=null)return`${i.overview.tokensPerSecond.toFixed(1)}`;let{outputTokens:e,latencyMs:t}=i.overview;return e&&t?`${(e/t*Z).toFixed(1)}`:`--`});function p(e){let t=i.overview.attempts[i.overview.attempts.length-1];return t&&e===t.providerId&&i.overview.providerName||e}function h(e){return e<=0?`-`:(e/Z).toFixed(1)+`s`}return(i,l)=>(z(),N(`div`,Gt,[t.showRaw?(z(),S(L(Q),{key:1,class:`flex-1 rounded-md border`},{default:O(()=>[e(`pre`,Yn,u(o.value),1)]),_:1})):(z(),N(`div`,Kt,[e(`div`,qt,[e(`div`,Jt,[e(`span`,Yt,u(L(n)(`requestDetail.executionChain`)),1),l[0]||=e(`span`,{class:`flex-1`},null,-1),e(`span`,Xt,u(t.overview.model),1),b(L(K),{variant:`secondary`,class:`text-[10px] px-1 py-0`},{default:O(()=>[E(u(t.overview.apiType),1)]),_:1}),t.overview.mappingReason?(z(),S(L(K),{key:0,class:`text-[10px] px-2 py-0 rounded-full bg-primary/20 text-primary border-0`},{default:O(()=>[E(u(r[t.overview.mappingReason]||t.overview.mappingReason),1)]),_:1})):R(``,!0)]),e(`div`,Zt,[(z(!0),N(g,null,x(t.overview.attempts,(r,i)=>(z(),N(`div`,{key:i,class:_([`py-1.5`,{"border-t border-border/50":i>0}])},[e(`div`,Qt,[e(`span`,$t,`#`+u(i+1),1),e(`span`,en,[e(`span`,tn,u(r.model||t.overview.backendModel||`-`),1),e(`span`,nn,` @ `+u(p(r.providerId)),1)])]),e(`div`,rn,[b(L(K),{variant:(r.statusCode??0)<L(400)?`default`:`destructive`,class:`text-[9px] px-1 py-0`},{default:O(()=>[E(u(r.statusCode||`-`),1)]),_:2},1032,[`variant`]),e(`span`,an,u(h(r.latencyMs)),1),b(L(K),{variant:`secondary`,class:`text-[9px] px-1 py-0`},{default:O(()=>[E(u(r.apiType||t.overview.apiType),1)]),_:2},1024),i===0&&t.overview.attempts.length>1?(z(),S(L(K),{key:0,class:`text-[9px] px-1 py-0 rounded bg-warning/15 text-warning border-0`},{default:O(()=>[E(u(L(n)(`requestDetail.executionRetry`)),1)]),_:1})):R(``,!0),i===t.overview.attempts.length-1&&t.overview.attempts.length>1?(z(),S(L(K),{key:1,class:`text-[9px] px-1 py-0 rounded bg-success/15 text-success border-0`},{default:O(()=>[E(u(L(n)(`requestDetail.executionFinal`)),1)]),_:1})):R(``,!0)])],2))),128))])]),e(`div`,on,[b(L(K),{variant:t.overview.status===`completed`?`default`:`destructive`,class:`text-[10px] px-1.5 py-0`},{default:O(()=>[e(`span`,{class:_([`inline-block w-1.5 h-1.5 rounded-full mr-1`,t.overview.status===`completed`?`bg-success`:`bg-destructive`])},null,2),E(` `+u(t.overview.status===`completed`?L(n)(`requestDetail.completed`):L(n)(`requestDetail.failed`)),1)]),_:1},8,[`variant`]),t.overview.isStream?(z(),S(L(K),{key:0,variant:`outline`,class:`text-[10px] px-1.5 py-0`},{default:O(()=>[...l[1]||=[E(`SSE`,-1)]]),_:1})):R(``,!0),b(L(K),{variant:`secondary`,class:`text-[10px] px-1.5 py-0`},{default:O(()=>[E(u(t.overview.apiType),1)]),_:1}),t.overview.sessionId?(z(),N(`span`,sn,u(t.overview.sessionId.slice(0,8)),1)):R(``,!0),t.overview.thinkingLevel?(z(),S(L(K),{key:2,variant:`outline`,class:`text-[10px]`},{default:O(()=>[E(u(t.overview.thinkingLevel),1)]),_:1})):R(``,!0)]),t.overview.errorMessage?(z(),N(`div`,cn,[e(`p`,ln,u(t.overview.errorMessage),1),e(`p`,un,u(t.overview.statusCode)+` · upstream_error `,1)])):R(``,!0),e(`div`,dn,[e(`div`,fn,[e(`div`,pn,u(L(n)(`requestDetail.latency`)),1),e(`div`,mn,u(d.value),1)]),e(`div`,hn,[e(`div`,gn,u(L(n)(`requestDetail.ttft`)),1),e(`div`,_n,u(t.overview.ttftMs==null?`--`:`${t.overview.ttftMs}ms`),1)]),e(`div`,vn,[e(`div`,yn,u(t.overview.inputTokensEstimated?L(n)(`requestDetail.estInputTokens`):L(n)(`requestDetail.inputTokens`)),1),e(`div`,bn,u(t.overview.inputTokens==null?`--`:t.overview.inputTokens),1)]),e(`div`,xn,[e(`div`,Sn,u(L(n)(`requestDetail.outputTokens`)),1),e(`div`,{class:_([`text-sm font-semibold truncate`,s.value?`diff-added`:``])},u(c.value),3)]),e(`div`,Cn,[e(`div`,wn,u(L(n)(`requestDetail.speed`)),1),e(`div`,Tn,u(f.value),1)]),e(`div`,En,[e(`div`,Dn,u(L(n)(`requestDetail.cacheRead`)),1),e(`div`,On,u(t.overview.cacheReadTokens==null?`--`:t.overview.cacheReadTokens),1)])]),t.overview.cacheReadTokens!=null&&t.overview.cacheReadTokens>0?(z(),N(`div`,kn,[e(`div`,An,u(L(n)(`requestDetail.cacheSource`)),1),t.overview.cacheReadTokensEstimated===0?(z(),N(`div`,jn,u(L(n)(`requestDetail.cacheSourceApi`)),1)):(z(),N(`div`,Mn,u(L(n)(`requestDetail.cacheSourceEstimated`)),1))])):R(``,!0),e(`div`,Nn,[t.overview.clientType==null?R(``,!0):(z(),N(`div`,Pn,[e(`span`,Fn,u(L(n)(`requestDetail.clientType`)),1),e(`span`,In,u(a.value),1)])),t.overview.statusCode==null?R(``,!0):(z(),N(`div`,Ln,[e(`span`,Rn,u(L(n)(`requestDetail.statusCodeLabel`)),1),e(`span`,zn,u(t.overview.statusCode),1)])),t.overview.clientIp?(z(),N(`div`,Bn,[e(`span`,Vn,u(L(n)(`requestDetail.clientIp`)),1),e(`span`,Hn,u(t.overview.clientIp),1)])):R(``,!0),t.overview.upstreamApiType&&t.overview.upstreamApiType!==t.overview.apiType?(z(),N(`div`,Un,[e(`span`,Wn,u(L(n)(`requestDetail.upstreamApiType`)),1),e(`span`,Gn,u(t.overview.apiType)+` → `+u(t.overview.upstreamApiType),1)])):R(``,!0),t.overview.upstreamBaseUrl?(z(),N(`div`,Kn,[e(`span`,qn,u(L(n)(`requestDetail.upstreamBaseUrl`)),1),e(`span`,Jn,u(t.overview.upstreamBaseUrl),1)])):R(``,!0)])]))]))}}),Qn={key:0,class:`rounded-md border bg-card`},$n={class:`flex items-center gap-1.5 px-2.5 py-1.5 border-b`},er={class:`text-xs font-medium`},tr={class:`px-2.5 py-2`},nr={key:0,class:`inline-block w-1.5 h-3.5 dot-success animate-pulse ml-0.5 align-text-bottom`},rr={class:`flex items-center gap-1.5 px-2.5 py-1.5 cursor-pointer hover:brightness-95 rounded-t-md`},ir={class:`text-xs font-medium`},ar={key:0,class:`text-xs text-muted-foreground`},or={class:`px-2.5 pb-2`},sr=F({__name:`ContentBlockRenderer`,props:{type:{},content:{},name:{default:void 0},defaultOpen:{type:Boolean,default:!0},showCursor:{type:Boolean,default:!1},autoScroll:{type:Boolean,default:!1}},setup(t){let{t:n}=m(),i=t,a=V(i.type===`text`?!0:i.defaultOpen),o=V(null),s=l(()=>{switch(i.type){case`thinking`:return`block-thinking`;case`tool_use`:return`block-tool-use`;case`tool_result`:return`block-tool-result`;default:return`bg-card`}}),d=l(()=>{switch(i.type){case`thinking`:return`block-thinking-content italic`;case`tool_use`:return`block-tool-use-content`;case`tool_result`:return`block-tool-result-content`;default:return`bg-muted/50`}}),f=l(()=>{switch(i.type){case`thinking`:return Pe;case`tool_use`:return Re;case`tool_result`:return Fe;default:return Le}}),p=l(()=>{switch(i.type){case`thinking`:return`text-[var(--color-role-thinking)]`;case`tool_use`:return`text-[var(--color-role-tool)]`;case`tool_result`:return`text-[var(--color-role-user)]`;default:return`text-muted-foreground`}}),h=l(()=>{switch(i.type){case`thinking`:return n(`requestDetail.thinking`);case`tool_use`:return n(`requestDetail.toolUse`);case`tool_result`:return n(`requestDetail.toolResultLabel`);default:return``}}),g=l(()=>i.type===`tool_use`?n(`requestDetail.waitingData`):i.type===`tool_result`?n(`requestDetail.noReturnData`):``);return c(()=>i.content,()=>{i.autoScroll&&j(()=>{let e=o.value;e&&(e.scrollTop=e.scrollHeight)})}),(i,c)=>t.type===`text`?(z(),N(`div`,Qn,[e(`div`,$n,[b(L(Le),{class:`h-3.5 w-3.5 diff-added`}),e(`span`,er,u(L(n)(`requestDetail.reply`)),1)]),e(`div`,tr,[e(`pre`,{ref_key:`contentRef`,ref:o,class:`text-xs overflow-y-auto whitespace-pre-wrap break-words`,style:{"max-height":`300px`}},[e(`code`,null,[E(u(t.content),1),t.showCursor?(z(),N(`span`,nr)):R(``,!0)])],512)])])):(z(),S(L(le),{key:1,open:a.value,"onUpdate:open":c[0]||=e=>a.value=e,class:_([`rounded-md border`,s.value])},{default:O(()=>[b(L(de),{"as-child":``},{default:O(()=>[e(`div`,rr,[b(L(Ee),{class:_([`h-3 w-3 transition-transform duration-200`,{"rotate-180":!a.value}])},null,8,[`class`]),(z(),S(r(f.value),{class:_([`h-3.5 w-3.5`,p.value])},null,8,[`class`])),e(`span`,ir,u(h.value),1),t.type===`thinking`?(z(),N(`span`,ar,`(`+u(L(n)(`requestDetail.charCount`,{count:t.content.length}))+`)`,1)):R(``,!0),t.type===`tool_use`&&t.name?(z(),S(L(K),{key:1,variant:`secondary`,class:`text-xs`},{default:O(()=>[E(u(t.name),1)]),_:1})):R(``,!0)])]),_:1}),b(L(ue),null,{default:O(()=>[e(`div`,or,[e(`pre`,{ref_key:`contentRef`,ref:o,class:_([`text-xs rounded p-2 overflow-y-auto whitespace-pre-wrap break-words`,d.value]),style:{"max-height":`300px`}},[e(`code`,null,u(t.content||g.value),1)],2)])]),_:1})]),_:1},8,[`open`,`class`]))}}),$=2;function cr(e){return e.map(e=>{let t=e;return t.type===`thinking`?{type:`thinking`,content:typeof t.thinking==`string`?t.thinking:``}:t.type===`text`?{type:`text`,content:typeof t.text==`string`?t.text:``}:t.type===`tool_use`?{type:`tool_use`,content:JSON.stringify(t.input??{},null,$),name:typeof t.name==`string`?t.name:``}:t.type===`tool_result`?{type:`tool_result`,content:typeof t.content==`string`?t.content:JSON.stringify(t.content)}:{type:`text`,content:JSON.stringify(t)}})}function lr(e){let t=[];for(let n of e){let e=n.message;if(!e)continue;let r=e.reasoning_content;typeof r==`string`&&r&&t.push({type:`thinking`,content:r});let i=e.tool_calls;if(Array.isArray(i))for(let e of i){let n=e,r=n.function,i=``;if(r&&typeof r.arguments==`string`)try{i=JSON.stringify(JSON.parse(r.arguments),null,$)}catch{i=r.arguments}t.push({type:`tool_use`,content:i,name:typeof r?.name==`string`?r.name:typeof n.name==`string`?n.name:``})}let a=e.refusal;typeof a==`string`&&a&&t.push({type:`text`,content:a});let o=e.content;if(typeof o==`string`&&o)t.push({type:`text`,content:o});else if(Array.isArray(o))for(let e of o){let n=e;if(n.type===`text`||n.type===`output_text`)t.push({type:`text`,content:typeof n.text==`string`?n.text:``});else if(n.type===`tool_use`||n.type===`function`){let e=n.function??n.input??{};t.push({type:`tool_use`,content:JSON.stringify(e,null,$),name:typeof n.name==`string`?n.name:typeof e.name==`string`?e.name:``})}}}return t}function ur(e){let t=[];for(let n of e){let e=n;if(e.type===`reasoning`){let n=e.summary,r=n?n.map(e=>e.text??``).join(``):``,i=typeof e.encrypted_content==`string`?e.encrypted_content:``,a=r||(i?`[Encrypted reasoning]`:``);a&&t.push({type:`thinking`,content:a})}else if(e.type===`function_call`)t.push({type:`tool_use`,content:typeof e.arguments==`string`?e.arguments:JSON.stringify(e.arguments??{},null,$),name:typeof e.name==`string`?e.name:``});else if(e.type===`function_call_output`){let n=typeof e.output==`string`?e.output:JSON.stringify(e.output??``,null,$);t.push({type:`tool_result`,content:n})}else if(e.type===`message`){let n=e.content;if(Array.isArray(n))for(let e of n)e.type===`output_text`&&typeof e.text==`string`&&e.text?t.push({type:`text`,content:e.text}):e.type===`refusal`&&typeof e.refusal==`string`&&e.refusal&&t.push({type:`text`,content:e.refusal})}}return t}function dr(e,t,n){let r=fr(t,n);return r.length>0?r:fr(e,n)}function fr(e,t){if(!e)return[];let n;try{n=JSON.parse(e)}catch{return[]}let r=n;if(typeof r.body==`string`)try{n=JSON.parse(r.body)}catch{n=n}let i=n;return t===`anthropic`&&Array.isArray(i.content)?cr(i.content):t===`openai`&&Array.isArray(i.choices)?lr(i.choices):t===`openai-responses`&&Array.isArray(i.output)?ur(i.output):Array.isArray(i.content)?cr(i.content):Array.isArray(i.choices)?lr(i.choices):Array.isArray(i.output)?ur(i.output):[]}var pr=5,mr=2,hr=3;function gr(e){let t=[],n=null;for(let r of e){if(r.type!==`data`)continue;let e=r.data;if(e.type===`content_block_start`){let t=e.content_block;if(n={type:typeof t?.type==`string`?t.type:``,content:``,eventCount:0,toolName:typeof t?.name==`string`?t.name:void 0},n.type===`tool_use`&&t?.input){let e=t.input;Object.keys(e).length>0&&(n.content=JSON.stringify(e,null,mr))}continue}if(e.type===`content_block_delta`&&n){let t=e.delta;n.content+=t.thinking||t.text||t.partial_json||``,n.eventCount++;continue}e.type===`content_block_stop`&&n&&(t.push(n),n=null)}return n&&t.push(n),t}function _r(e){let t={type:`thinking`,content:``,eventCount:0},n={type:`text`,content:``,eventCount:0},r=new Map;for(let i of e){if(i.type!==`data`)continue;let e=(i.data.choices??[])[0]?.delta;if(!e)continue;for(let n of[`reasoning_content`,`reasoning`,`reasoning_text`]){let r=e[n];if(typeof r==`string`&&r){t.content+=r,t.eventCount++;break}}typeof e.content==`string`&&e.content&&(n.content+=e.content,n.eventCount++);let a=e.tool_calls;if(Array.isArray(a))for(let e of a){let t=typeof e.index==`number`?e.index:0,n=e.function;r.has(t)||r.set(t,{type:`tool_use`,content:``,eventCount:0,toolName:typeof n?.name==`string`?n.name:``});let i=r.get(t);typeof n?.arguments==`string`&&(i.content+=n.arguments),i.eventCount++}typeof e.refusal==`string`&&e.refusal&&(n.content+=e.refusal,n.eventCount++)}let i=[];t.content&&i.push(t);for(let e of r.values())(e.content||e.toolName)&&i.push(e);return n.content&&i.push(n),i}function vr(e,t,n){let r=l(()=>{if(!t||!e.value)return[];let n=e.value.split(`
2
+ `),r=[];for(let e of n){let t=e.trim();if(!t.startsWith(`data:`))continue;let n=t.slice(pr).trim();if(n===`[DONE]`){r.push({type:`done`,data:n});continue}try{let e=JSON.parse(n);r.push({type:`data`,data:e})}catch{r.push({type:`raw`,data:n})}}return r});return{sseEvents:r,assembledBlocks:l(()=>!t||!e.value?[]:n===`anthropic`?gr(r.value):_r(r.value)),sseMeta:l(()=>{let e=``,t=``,n=0,i=0,a=``;for(let o of r.value){if(o.type!==`data`)continue;let r=o.data;if(r.type===`message_start`){let i=r.message;e=typeof i?.id==`string`?i.id:``,t=typeof i?.model==`string`?i.model:``,n=Number(i?.usage?.input_tokens??0)}if(r.type===`message_delta`){let e=r.delta,t=r.usage;a=typeof e?.stop_reason==`string`?e.stop_reason:``,i=Number(t?.output_tokens??0)}}return{id:e,model:t,inputTokens:n,outputTokens:i,stopReason:a}}),openaiAssembled:l(()=>{if(n!==`openai`||!t)return null;let e=``,i=``,a=``,o=null,s=0;for(let t of r.value){if(t.type!==`data`)continue;let n=t.data,r=n.choices||[],c=r[0]?.delta;c?.role&&(e=c.role);let l=typeof c?.reasoning_content==`string`?c.reasoning_content:``;l&&(i+=l,s++),c?.content&&(i+=c.content,s++);let u=typeof c?.refusal==`string`?c.refusal:``;u&&(i+=u,s++),r[0]?.finish_reason&&(a=r[0].finish_reason),n.usage&&(o=n.usage)}return{role:e,content:i,contentEventCount:s,finishReason:a,usage:o}}),anthropicMessageStart:l(()=>{if(!t)return null;for(let e of r.value){if(e.type!==`data`)continue;let t=e.data;if(t.type===`message_start`){let e=t.message;return{id:typeof e?.id==`string`?e.id:``,model:typeof e?.model==`string`?e.model:``,input_tokens:Number(e?.usage?.input_tokens??0)}}}return null}),anthropicContentBlockStarts:l(()=>{if(!t)return[];let e=[];for(let t of r.value){if(t.type!==`data`)continue;let n=t.data;if(n.type===`content_block_start`){let t=n.content_block;e.push({index:Number(n.index??0),type:typeof t?.type==`string`?t.type:``})}}return e}),anthropicDeltaGroups:l(()=>{if(!t)return[];let e={};for(let t of r.value){if(t.type!==`data`)continue;let n=t.data;if(n.type!==`content_block_delta`)continue;let r=n.delta,i=typeof r?.type==`string`?r.type:`unknown`;e[i]||(e[i]={deltaType:i,kept:0,folded:0,foldedChars:0});let a=e[i];if(a.kept<hr)a.kept++;else{a.folded++;let e=r,t=e.thinking||e.text||e.partial_json||``;a.foldedChars+=t.length}}return Object.values(e).filter(e=>e.kept>0||e.folded>0)}),anthropicMessageDelta:l(()=>{if(!t)return null;for(let e of r.value){if(e.type!==`data`)continue;let t=e.data;if(t.type===`message_delta`){let e=t.delta,n=t.usage;return{output_tokens:Number(n?.output_tokens??0),stop_reason:typeof e?.stop_reason==`string`?e.stop_reason:``}}}return null}),anthropicMessageStop:l(()=>t?r.value.some(e=>e.type===`data`&&e.data.type===`message_stop`):!1),openaiSseRole:l(()=>{if(!t)return null;for(let e of r.value){if(e.type!==`data`)continue;let t=(e.data.choices||[])[0]?.delta;if(t?.role)return t.role}return null}),openaiSseFirstContent:l(()=>{if(!t)return null;for(let e of r.value){if(e.type!==`data`)continue;let t=(e.data.choices||[])[0]?.delta;if(t?.content)return t.content}return null}),openaiSseFinishReason:l(()=>{if(!t)return null;for(let e of r.value){if(e.type!==`data`)continue;let t=(e.data.choices||[])[0]?.finish_reason;if(t)return t}return null}),openaiSseCollapsedCount:l(()=>{if(!t)return 0;let e=0,n=!1;for(let t of r.value){if(t.type!==`data`)continue;let r=(t.data.choices||[])[0]?.delta;if(!n){r?.content&&(n=!0);continue}(r?.content||r?.role)&&e++}return e}),openaiSseUsage:l(()=>{if(!t)return null;for(let e=r.value.length-1;e>=0;e--){let t=r.value[e];if(t.type!==`data`)continue;let n=t.data.usage;if(n)return{prompt_tokens:n.prompt_tokens,completion_tokens:n.completion_tokens,total_tokens:n.total_tokens,cached_tokens:n.cached_tokens??n.prompt_tokens_details?.cached_tokens}}return null})}}var yr={class:`flex flex-col gap-2 min-h-0 flex-1`},br={class:`flex items-center justify-between flex-shrink-0`},xr={class:`text-xs font-medium text-muted-foreground`},Sr={key:0,class:`relative flex-1 min-h-0`},Cr={key:0,class:`flex flex-col gap-2`},wr={key:0,class:`rounded-md border mt-2`},Tr={class:`grid grid-cols-2 gap-0`},Er={key:0,class:`px-2.5 py-1.5 text-xs`},Dr={class:`text-muted-foreground`},Or={class:`font-mono font-semibold block`},kr={key:1,class:`flex items-center gap-1.5 mt-2 text-xs`},Ar={key:0,class:`text-xs text-muted-foreground`},jr={key:1,class:`text-xs text-muted-foreground`},Mr={key:2,class:`text-xs text-muted-foreground`},Nr={class:`p-3 text-[11px] whitespace-pre-wrap break-words`},Pr=50,Fr=F({__name:`ResponseViewer`,props:{source:{},apiType:{},isStream:{type:Boolean},streamContent:{default:null},nonStreamBody:{default:null},responseBody:{default:null},upstreamResponse:{default:null},status:{}},setup(t){let{t:n}=m(),i=V(null),a=t,o=V(!1),s=l(()=>!!(a.responseBody||a.upstreamResponse)),{assembledBlocks:d}=vr(l(()=>{if(a.source!==`history`)return``;let e=a.responseBody||a.upstreamResponse||``;try{return JSON.parse(e).body||e}catch{return e}}),a.isStream,a.apiType),f=l(()=>{if(a.source===`realtime`){let e=a.streamContent?.blocks;if(e&&e.length>0)return e;if(a.responseBody){let e=dr(a.responseBody,null,a.apiType);if(e.length>0)return e}let t=a.streamContent?.rawChunks;return t&&t.trim().length>0?[{type:`text`,content:t}]:[]}let e=dr(a.responseBody??null,a.upstreamResponse??null,a.apiType);if(e.length>0)return e;if(a.responseBody&&a.responseBody.trim().length>0)return[{type:`text`,content:a.responseBody}];let t=[`thinking`,`text`,`tool_use`,`tool_result`];return d.value.map(e=>({type:t.includes(e.type)?e.type:`text`,content:e.content,...e.toolName?{name:e.toolName}:{}}))}),h=l(()=>{let e=a.responseBody||a.upstreamResponse||``;if(!e)return null;try{let t=JSON.parse(e),n=t.body?JSON.parse(t.body):t;return{usage:n.usage,stopReason:n.choices?.[0]?.finish_reason||n.stop_reason,model:n.model}}catch{return null}}),_=l(()=>a.source===`realtime`?a.streamContent?.rawChunks||a.responseBody||``:zt(a.upstreamResponse??null,a.responseBody??null)),v=V(!1);function y(){let e=i.value;e&&(v.value=e.scrollHeight-e.scrollTop-e.clientHeight>Pr)}function C(){let e=i.value;e&&(e.scrollTop=e.scrollHeight)}return c(f,()=>{v.value||j(()=>C())},{deep:!0}),(t,c)=>{let l=p(`Badge`);return z(),N(`div`,yr,[e(`div`,br,[e(`span`,xr,u(L(n)(`requestDetail.responseTitle`)),1),b(L(M),{size:`sm`,variant:`outline`,class:`h-6 gap-1 text-xs`,onClick:c[0]||=e=>o.value=!o.value},{default:O(()=>[(z(),S(r(o.value?L(ke):L(Ie)),{class:`h-3 w-3`})),E(` `+u(o.value?L(n)(`requestDetail.structured`):a.isStream?L(n)(`requestDetail.rawSse`):L(n)(`requestDetail.rawJson`)),1)]),_:1})]),o.value?(z(),S(L(Q),{key:1,class:`flex-1 min-h-0 rounded-md border`},{default:O(()=>[e(`pre`,Nr,u(_.value),1)]),_:1})):(z(),N(`div`,Sr,[e(`div`,{ref_key:`structuredRef`,ref:i,class:`flex-1 min-h-0 overflow-y-auto`,onScroll:y},[f.value.length>0?(z(),N(`div`,Cr,[(z(!0),N(g,null,x(f.value,(e,t)=>(z(),S(sr,{key:t,type:e.type,content:e.content,name:e.name,"show-cursor":a.status===`pending`&&t===f.value.length-1,"auto-scroll":a.status===`pending`&&t===f.value.length-1},null,8,[`type`,`content`,`name`,`show-cursor`,`auto-scroll`]))),128)),h.value?.usage?(z(),N(`div`,wr,[c[1]||=e(`div`,{class:`flex items-center gap-1.5 px-2.5 py-1.5 border-b bg-muted/20`},[e(`span`,{class:`text-xs font-medium`},`Usage`)],-1),e(`div`,Tr,[(z(),N(g,null,x([`prompt_tokens`,`completion_tokens`,`total_tokens`,`input_tokens`,`output_tokens`],t=>(z(),N(g,{key:t},[h.value.usage[t]==null?R(``,!0):(z(),N(`div`,Er,[e(`span`,Dr,u(t),1),e(`span`,Or,u(Number(h.value.usage[t]).toLocaleString()),1)]))],64))),64))])])):R(``,!0),h.value?.stopReason?(z(),N(`div`,kr,[c[2]||=e(`span`,{class:`text-muted-foreground`},`Stop reason`,-1),b(l,{variant:`default`,class:`text-[10px] px-1.5 py-0`},{default:O(()=>[E(u(h.value.stopReason),1)]),_:1})])):R(``,!0)])):R(``,!0),f.value.length===0?(z(),N(g,{key:1},[a.status===`pending`&&!a.streamContent?.rawChunks?(z(),N(`p`,Ar,u(L(n)(`requestDetail.waitingResponse`)),1)):a.source===`history`&&a.isStream&&!s.value?(z(),N(`p`,jr,u(L(n)(`requestDetail.streamNotPersisted`)),1)):(z(),N(`p`,Mr,u(L(n)(`requestDetail.noResponseContent`)),1))],64)):R(``,!0)],544),v.value?(z(),S(L(M),{key:0,variant:`outline`,size:`icon`,class:`absolute bottom-2 right-2 h-7 w-7 rounded-full shadow-md opacity-80 hover:opacity-100`,onClick:C},{default:O(()=>[b(L(ne),{class:`h-3.5 w-3.5`})]),_:1})):R(``,!0)]))])}}}),Ir={class:`relative`},Lr={class:`bg-background text-foreground rounded-md p-3 text-xs overflow-auto max-h-[40vh] whitespace-pre-wrap break-all border`},Rr=F({__name:`JsonCopyBlock`,props:{content:{},hideCopyButton:{type:Boolean}},setup(t){let{t:n}=m(),r=t,{copied:i,copy:a}=ie();async function o(){await a(r.content)}return(r,a)=>(z(),N(`div`,Ir,[t.hideCopyButton?R(``,!0):(z(),S(L(M),{key:0,variant:`outline`,size:`sm`,class:`absolute top-2 right-2 h-7 text-xs`,onClick:o},{default:O(()=>[E(u(L(i)?L(n)(`logs.viewer.copied`):L(n)(`logs.viewer.copy`)),1)]),_:1})),e(`pre`,Lr,u(t.content),1)]))}}),zr={class:`flex flex-col min-h-0 h-full`},Br={class:`flex justify-end mb-1 flex-shrink-0`},Vr={key:0,class:`space-y-3`},Hr={class:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-1`},Ur={class:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-1`},Wr={key:0,class:`text-[11px] text-muted-foreground py-4 text-center`},Gr={key:1,class:`text-[11px] text-muted-foreground py-2 text-center`},Kr={key:2,class:`space-y-4`},qr={key:0},Jr={class:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-1`},Yr={class:`flex items-center gap-2 text-[11px]`},Xr={class:`font-mono text-muted-foreground`},Zr={class:`font-mono text-primary font-semibold`},Qr={key:1},$r={class:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-1`},ei={class:`text-[11px] bg-muted/50 rounded-md border px-2.5 py-2 overflow-y-auto whitespace-pre-wrap break-words max-h-40`},ti={key:2},ni={class:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-1`},ri={class:`space-y-1.5`},ii={class:`flex items-center gap-1.5 mb-1`},ai={key:1,class:`text-[9px] text-muted-foreground`},oi={key:0,class:`diff-removed line-through mb-0.5`},si={key:1,class:`text-foreground overflow-y-auto max-h-40`},ci={key:2,class:`text-muted-foreground text-[10px]`},li={key:3},ui={class:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-1`},di={class:`space-y-1`},fi={class:`grid grid-cols-5 gap-1`},pi=[`title`,`onClick`],mi={key:0,class:`rounded-md border bg-background p-2.5`},hi={class:`flex items-center gap-2 mb-1`},gi={class:`text-[11px] font-semibold font-mono`},_i={key:0,class:`text-[11px] text-muted-foreground`},vi={key:1,class:`mt-1 flex flex-wrap gap-1`},yi={key:4},bi={class:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-1`},xi={class:`flex items-center gap-2 text-[11px]`},Si={key:5},Ci={class:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-1`},wi={class:`flex items-center gap-2 text-[11px]`},Ti={class:`font-mono diff-removed line-through`},Ei={class:`font-mono diff-added font-medium`},Di=4,Oi=5,ki=F({__name:`RequestDiffViewer`,props:{overview:{}},setup(t){let{t:n}=m(),r=t,i=V(!1);function a(e){if(!e)return null;try{let t=JSON.parse(e);if(typeof t!=`object`||!t)return null;let n=typeof t.headers==`object`&&t.headers!==null?t.headers:{},r=t.body;if(typeof r==`string`)try{r=JSON.parse(r)}catch{}return{headers:n,body:r??{}}}catch{return null}}function o(e){let t=e.content;return typeof t==`string`?t:Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&`text`in e).map(e=>typeof e.text==`string`?e.text:``).join(``):typeof t==`string`?t:t==null?``:JSON.stringify(t)}function s(e){if(!e)return``;let t=e.replace(/^Bearer\s+/i,``);return t.length<=Di?`***`:`${t.slice(0,Di)}***`}function c(e,t){let n=t.toLowerCase();for(let[t,r]of Object.entries(e))if(t.toLowerCase()===n)return r}let d=l(()=>a(r.overview.clientRequest)),f=l(()=>a(r.overview.upstreamRequest)),p=l(()=>{let e=d.value?.body?.model,t=f.value?.body?.model;return{hasDiff:!!e&&!!t&&e!==t,from:e??``,to:t??``}}),h=l(()=>{let e=f.value?.body;if(!e)return null;let t=e.system;if(typeof t==`string`)return t;if(Array.isArray(t))return t.filter(e=>typeof e==`object`&&!!e&&`text`in e).map(e=>e.text).join(`
3
+ `);let n=e.messages;if(Array.isArray(n)){let e=n.find(e=>e.role===`system`);if(e)return o(e)}return null}),v=l(()=>{let e=f.value?.body?.messages??[],t=d.value?.body?.messages??[];if(e.length===0)return[];let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=typeof i.role==`string`?i.role:`unknown`;if(a===`system`)continue;let s=o(i),c=t[r],l=c?o(c):null,u=l!==null&&s!==l,d=i.content,f=Array.isArray(d)?d:[],p=f.filter(e=>typeof e==`object`&&!!e&&e.type===`tool_use`).map(e=>e.name).filter(Boolean),m=f.filter(e=>typeof e==`object`&&!!e&&e.type===`tool_result`).length;n.push({role:a,text:s,removedText:u?l:null,modified:u,toolCalls:p,toolResultCount:m})}return n}),y=V(-1),C=l(()=>{let e=[];for(let t=0;t<w.value.length;t+=Oi)e.push({tools:w.value.slice(t,t+Oi),startIdx:t});return e}),w=l(()=>{let e=f.value?.body;if(!e)return[];let t=e.tools;return Array.isArray(t)?t.filter(e=>typeof e?.name==`string`).map(e=>{let t=typeof e.description==`string`?e.description:``,n=e.input_schema?.properties,r=n?Object.keys(n):[];return{name:e.name,description:t,params:r}}):[]}),T=l(()=>{let e=d.value?.body?.stream_options!=null,t=f.value?.body?.stream_options!=null;return!e&&t}),D=l(()=>{if(!d.value?.headers||!f.value?.headers)return{hasDiff:!1,old:``,new:``};let e=c(d.value.headers,`authorization`),t=c(f.value.headers,`authorization`);return{hasDiff:!!e&&!!t&&e!==t,old:s(e),new:s(t)}});return(r,a)=>(z(),N(`div`,zr,[e(`div`,Br,[b(L(M),{variant:`outline`,size:`xs`,class:`gap-1`,onClick:a[0]||=e=>i.value=!i.value},{default:O(()=>[i.value?(z(),S(L(Ie),{key:0,class:`size-3`})):(z(),S(L(ke),{key:1,class:`size-3`})),E(` `+u(i.value?L(n)(`requestDetail.structured`):L(n)(`requestDetail.rawJson`)),1)]),_:1})]),b(L(Q),{class:`flex-1 min-h-0`},{default:O(()=>[i.value?(z(),N(`div`,Vr,[e(`div`,null,[e(`div`,Hr,u(L(n)(`requestDetail.clientRequest`)),1),b(Rr,{content:t.overview.clientRequest??`{}`},null,8,[`content`])]),e(`div`,null,[e(`div`,Ur,u(L(n)(`requestDetail.upstreamRequest`)),1),b(Rr,{content:t.overview.upstreamRequest??`{}`},null,8,[`content`])])])):(z(),N(g,{key:1},[!f.value&&!d.value?(z(),N(`div`,Wr,u(L(n)(`requestDetail.noRequestData`)),1)):!f.value&&d.value?(z(),N(`div`,Gr,u(L(n)(`requestDetail.requestInProgress`)),1)):(z(),N(`div`,Kr,[p.value.hasDiff?(z(),N(`div`,qr,[e(`div`,Jr,u(L(n)(`requestDetail.modelMapping`)),1),e(`div`,Yr,[e(`span`,Xr,u(p.value.from),1),a[1]||=e(`span`,{class:`text-muted-foreground`},`→`,-1),e(`span`,Zr,u(p.value.to),1)])])):R(``,!0),h.value?(z(),N(`div`,Qr,[e(`div`,$r,u(L(n)(`requestDetail.system`)),1),e(`pre`,ei,u(h.value),1)])):R(``,!0),v.value.length>0?(z(),N(`div`,ti,[e(`div`,ni,u(L(n)(`requestDetail.messagesCount`,{count:v.value.length})),1),e(`div`,ri,[(z(!0),N(g,null,x(v.value,(t,r)=>(z(),N(`div`,{key:r,class:_([`rounded-md border px-2.5 py-1.5 text-[11px]`,t.modified?`diff-modified`:`bg-background`])},[e(`div`,ii,[b(L(K),{variant:`outline`,class:_([`text-[9px] px-1.5 py-0 border-transparent`,t.role===`user`?`bg-role-user-bg text-role-user`:t.role===`assistant`?`bg-role-assistant-bg text-role-assistant`:`bg-role-thinking-bg text-role-thinking`])},{default:O(()=>[E(u(t.role),1)]),_:2},1032,[`class`]),t.modified?(z(),S(L(K),{key:0,variant:`outline`,class:`bg-role-thinking-bg text-role-thinking text-[9px] px-1.5 py-0 border-transparent`},{default:O(()=>[E(u(L(n)(`requestDetail.modified`)),1)]),_:1})):R(``,!0),t.toolCalls.length>0?(z(),N(`span`,ai,` → `+u(t.toolCalls.join(`, `)),1)):R(``,!0)]),t.modified&&t.removedText?(z(),N(`div`,oi,u(t.removedText),1)):R(``,!0),t.text?(z(),N(`div`,si,u(t.text),1)):t.toolResultCount>0?(z(),N(`div`,ci,u(L(n)(`requestDetail.toolResultCount`,{count:t.toolResultCount})),1)):R(``,!0)],2))),128))])])):R(``,!0),w.value.length>0?(z(),N(`div`,li,[e(`div`,ui,u(L(n)(`requestDetail.toolsCount`,{count:w.value.length})),1),e(`div`,di,[(z(!0),N(g,null,x(C.value,(t,n)=>(z(),N(g,{key:n},[e(`div`,fi,[(z(!0),N(g,null,x(t.tools,(e,n)=>(z(),N(`div`,{key:n,class:_([`cursor-pointer rounded-md border px-1.5 py-1 text-[10px] truncate text-center transition-colors`,y.value===t.startIdx+n?`bg-role-tool-bg text-role-tool border-role-tool`:`bg-background hover:bg-muted`]),title:e.name,onClick:e=>y.value=y.value===t.startIdx+n?-1:t.startIdx+n},u(e.name),11,pi))),128))]),y.value>=t.startIdx&&y.value<t.startIdx+t.tools.length?(z(),N(`div`,mi,[e(`div`,hi,[e(`span`,gi,u(w.value[y.value].name),1)]),w.value[y.value].description?(z(),N(`p`,_i,u(w.value[y.value].description),1)):R(``,!0),w.value[y.value].params.length>0?(z(),N(`div`,vi,[(z(!0),N(g,null,x(w.value[y.value].params,e=>(z(),S(L(K),{key:e,variant:`outline`,class:`text-[9px] px-1 py-0`},{default:O(()=>[E(u(e),1)]),_:2},1024))),128))])):R(``,!0)])):R(``,!0)],64))),128))])])):R(``,!0),T.value?(z(),N(`div`,yi,[e(`div`,bi,u(L(n)(`requestDetail.streamOptions`)),1),e(`div`,xi,[b(L(K),{variant:`outline`,class:`bg-success-light text-success-dark text-[9px] px-1.5 py-0 border-transparent`},{default:O(()=>[E(u(L(n)(`requestDetail.injected`)),1)]),_:1}),a[2]||=e(`code`,{class:`font-mono diff-added`},`{ "include_usage": true }`,-1)])])):R(``,!0),D.value.hasDiff?(z(),N(`div`,Si,[e(`div`,Ci,u(L(n)(`requestDetail.authReplacement`)),1),e(`div`,wi,[e(`span`,Ti,u(D.value.old),1),b(L(ve),{orientation:`vertical`,class:`h-3`}),e(`span`,Ei,u(D.value.new),1)])])):R(``,!0)]))],64))]),_:1})]))}}),Ai={class:`h-1 w-full overflow-hidden`},ji={key:0,class:`h-full w-[40%] progress-active`,style:{animation:`shimmer 1.5s infinite`}},Mi={key:1,class:`h-full w-full progress-failed`},Ni={key:2,class:`h-full w-full progress-active`},Pi={class:`flex items-center gap-2 px-4 py-2 border-b shrink-0`},Fi={class:`text-sm font-semibold`},Ii={key:0,class:`font-mono text-[11px] text-muted-foreground`},Li={class:`ml-auto flex items-center gap-1`},Ri={key:0,class:`flex gap-0 px-4 pb-4 min-h-0 h-[calc(85vh-100px)]`},zi={class:`w-[280px] border-r pr-3 flex-shrink-0 min-h-0 flex flex-col`},Bi={class:`flex-1 overflow-y-auto min-h-0`},Vi={class:`border-t pt-3 space-y-2 shrink-0`},Hi={class:`flex-1 flex flex-col min-w-0 min-h-0 pl-3`},Ui={key:0,class:`rounded-md bg-destructive/10 px-3 py-1.5 text-xs text-destructive mb-2 flex-shrink-0`},Wi={key:0,class:`flex-1 min-h-0 overflow-y-auto mt-2`},Gi={key:1,class:`flex-1 min-h-0 mt-2`},Ki={key:1,class:`flex items-center justify-center h-[calc(85vh-100px)]`},qi={class:`text-sm text-muted-foreground`},Ji={class:`rounded-md bg-muted px-3 py-2 text-sm text-muted-foreground`},Yi=429,Xi=5e3,Zi=10,Qi=6e4,$i=Ne(F({__name:`UnifiedRequestDialog`,props:{open:{type:Boolean},source:{},request:{},streamContent:{},logDetailData:{},logEntry:{}},emits:[`update:open`],setup(i,{emit:a}){let{t:o}=m(),s=n(),{copied:d,copy:f}=ie();function p(){return{name:``,status_code:Yi,body_pattern:``,retry_strategy:`exponential`,retry_delay_ms:Xi,max_retries:Zi,max_delay_ms:Qi,provider_id:null}}let h=V(!1),g=V(!1),_=V(!1),v=V(!1),y=V(null),x=V(``);function C(){I.value&&f(I.value.id)}async function w(){if(I.value?.id){h.value=!0;try{let e=await t.aiRetryGenerate(I.value.id);if(e.success&&e.rule){let t=e.rule,n=p();y.value={name:t.name??n.name,status_code:t.status_code??n.status_code,body_pattern:t.body_pattern??n.body_pattern,retry_strategy:t.retry_strategy??n.retry_strategy,retry_delay_ms:t.retry_delay_ms??n.retry_delay_ms,max_retries:t.max_retries??n.max_retries,max_delay_ms:t.max_delay_ms??n.max_delay_ms,provider_id:t.provider_id??null},x.value=e.summary??``,v.value=!0}else{let t=e.error??``;/config/i.test(t)||/未配置/.test(t)||/ai_retry_config/i.test(t)?_.value=!0:U.error(t||o(`logs.generateFailed`))}}catch(e){console.error(`UnifiedRequestDialog.handleGenerateRule:`,e);let t=D(e,o(`logs.generateFailed`));/config/i.test(t)||/未配置/.test(t)?_.value=!0:U.error(t)}finally{h.value=!1}}}function T(){}function k(){_.value=!1,j(`update:open`,!1),s.push(`/proxy-enhancement`)}let A=i,j=a,P=V(`response`),F=V(null),I=l(()=>{if(A.source===`realtime`){if(!A.request)return null;let e=jt(A.request,A.logDetailData?.responseBody);return A.logDetailData&&(A.logDetailData.clientRequest&&(e.clientRequest=A.logDetailData.clientRequest),A.logDetailData.upstreamRequest&&(e.upstreamRequest=A.logDetailData.upstreamRequest)),e}return F.value}),ee=l(()=>I.value?I.value.status:`pending`);return c([()=>A.open,()=>A.logEntry],([e,t])=>{if(!e){h.value=!1,v.value=!1,y.value=null,x.value=``,_.value=!1;return}P.value=`response`,A.source===`history`&&t&&(F.value=`id`in t&&`status`in t&&`attempts`in t&&`clientRequest`in t?t:Lt(t,[]))}),(t,n)=>(z(),S(L(he),{open:A.open,"onUpdate:open":n[5]||=e=>j(`update:open`,e)},{default:O(()=>[b(L(fe),{class:`sm:max-w-6xl max-h-[85vh] p-0 overflow-hidden flex flex-col`},{default:O(()=>[b(L(_e),{class:`sr-only`},{default:O(()=>[E(u(L(o)(`requestDetail.dialogTitle`)),1)]),_:1}),e(`div`,Ai,[ee.value===`pending`?(z(),N(`div`,ji)):ee.value===`failed`?(z(),N(`div`,Mi)):(z(),N(`div`,Ni))]),e(`div`,Pi,[e(`span`,Fi,u(L(o)(`requestDetail.dialogTitle`)),1),I.value?(z(),N(`span`,Ii,u(I.value.id),1)):R(``,!0),e(`div`,Li,[I.value?(z(),S(L(M),{key:0,variant:`ghost`,size:`icon-xs`,class:`shrink-0`,onClick:C},{default:O(()=>[L(d)?(z(),S(L(Me),{key:0,class:`size-3 text-success`})):(z(),S(L(re),{key:1,class:`size-3`}))]),_:1})):R(``,!0)])]),I.value?(z(),N(`div`,Ri,[e(`div`,zi,[e(`div`,Bi,[b(Zn,{overview:I.value,"show-raw":g.value},null,8,[`overview`,`show-raw`])]),e(`div`,Vi,[b(L(M),{variant:`outline`,size:`sm`,class:`h-6 gap-1 text-xs w-full justify-center`,onClick:n[0]||=e=>g.value=!g.value},{default:O(()=>[(z(),S(r(g.value?L(ke):L(Ie)),{class:`h-3 w-3`})),E(` `+u(g.value?L(o)(`requestDetail.structured`):L(o)(`requestDetail.rawData`)),1)]),_:1}),b(L(M),{variant:`default`,size:`sm`,class:`w-full gap-1.5`,disabled:h.value,onClick:w},{default:O(()=>[b(L(ae),{class:`h-3.5 w-3.5`}),E(` `+u(h.value?L(o)(`logs.analyzing`):L(o)(`logs.generateRetryRule`)),1)]),_:1},8,[`disabled`])])]),e(`div`,Hi,[I.value.errorMessage?(z(),N(`div`,Ui,u(I.value.errorMessage),1)):R(``,!0),b(L(se),{modelValue:P.value,"onUpdate:modelValue":n[1]||=e=>P.value=e,class:`flex-1 flex flex-col min-h-0`},{default:O(()=>[b(L(oe),{class:`flex-shrink-0`},{default:O(()=>[b(L(ce),{value:`response`},{default:O(()=>[E(u(L(o)(`requestDetail.responseTab`)),1)]),_:1}),b(L(ce),{value:`request`},{default:O(()=>[E(u(L(o)(`requestDetail.requestTab`)),1)]),_:1})]),_:1}),P.value===`response`?(z(),N(`div`,Wi,[b(Fr,{source:A.source,"api-type":I.value.apiType,"is-stream":I.value.isStream,"stream-content":A.streamContent,"non-stream-body":i.logDetailData?.responseBody,"response-body":I.value.responseBody,"upstream-response":I.value.upstreamResponse,status:I.value.status},null,8,[`source`,`api-type`,`is-stream`,`stream-content`,`non-stream-body`,`response-body`,`upstream-response`,`status`])])):R(``,!0),P.value===`request`?(z(),N(`div`,Gi,[b(ki,{overview:I.value},null,8,[`overview`])])):R(``,!0)]),_:1},8,[`modelValue`])])])):(z(),N(`div`,Ki,[e(`p`,qi,u(A.source===`realtime`?L(o)(`requestDetail.loading`):L(o)(`requestDetail.noSelectedRequest`)),1)])),b(kt,{open:v.value,rule:y.value,summary:x.value,"onUpdate:open":n[2]||=e=>v.value=e,onSaved:T},null,8,[`open`,`rule`,`summary`]),b(L(he),{open:_.value,"onUpdate:open":n[4]||=e=>_.value=e},{default:O(()=>[b(L(fe),{class:`max-w-md`},{default:O(()=>[b(L(me),null,{default:O(()=>[b(L(_e),{class:`flex items-center gap-2`},{default:O(()=>[b(L(ae),{class:`h-4 w-4 text-primary`}),E(` `+u(L(o)(`logs.needAiConfig`)),1)]),_:1}),b(L(pe),null,{default:O(()=>[E(u(L(o)(`logs.needAiConfigDesc`)),1)]),_:1})]),_:1}),e(`div`,Ji,u(L(o)(`logs.configPath`)),1),b(L(ge),null,{default:O(()=>[b(L(M),{variant:`outline`,onClick:n[3]||=e=>_.value=!1},{default:O(()=>[E(u(L(o)(`common.cancel`)),1)]),_:1}),b(L(M),{onClick:k},{default:O(()=>[E(u(L(o)(`logs.goToConfig`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]),_:1})]),_:1},8,[`open`]))}}),[[`__scopeId`,`data-v-7ef1f045`]]);export{Q as n,Lt as r,$i as t};
@@ -1 +1 @@
1
- import{Ot as e,Q as t,X as n,bt as r,et as i,nt as a,ot as o,pt as s,tt as c,vt as l}from"./button-BCxYWEaM.js";import{O as u,R as d}from"./index-CwjudU09.js";var f=o({inheritAttrs:!1,__name:`VisuallyHiddenInputBubble`,props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:`fully-hidden`}},setup(n){let r=n,{primitiveElement:a,currentElement:o}=d();return e(t(()=>r.checked??r.value),(e,t)=>{if(!o.value)return;let n=o.value,r=window.HTMLInputElement.prototype,i=Object.getOwnPropertyDescriptor(r,`value`).set;if(i&&e!==t){let t=new Event(`input`,{bubbles:!0}),r=new Event(`change`,{bubbles:!0});i.call(n,e),n.dispatchEvent(t),n.dispatchEvent(r)}}),(e,t)=>(l(),i(u,s({ref_key:`primitiveElement`,ref:a},{...r,...e.$attrs},{as:`input`}),null,16))}}),p=o({inheritAttrs:!1,__name:`VisuallyHiddenInput`,props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:`fully-hidden`}},setup(e){let o=e,u=t(()=>typeof o.value==`object`&&Array.isArray(o.value)&&o.value.length===0&&o.required),d=t(()=>typeof o.value==`string`||typeof o.value==`number`||typeof o.value==`boolean`||o.value===null||o.value===void 0?[{name:o.name,value:o.value}]:typeof o.value==`object`&&Array.isArray(o.value)?o.value.flatMap((e,t)=>typeof e==`object`?Object.entries(e).map(([e,n])=>({name:`${o.name}[${t}][${e}]`,value:n})):{name:`${o.name}[${t}]`,value:e}):o.value!==null&&typeof o.value==`object`&&!Array.isArray(o.value)?Object.entries(o.value).map(([e,t])=>({name:`${o.name}[${e}]`,value:t})):[]);return(e,t)=>(l(),a(n,null,[c(` We render single input if it's required `),u.value?(l(),i(f,s({key:e.name},{...o,...e.$attrs},{name:e.name,value:e.value}),null,16,[`name`,`value`])):(l(!0),a(n,{key:1},r(d.value,t=>(l(),i(f,s({key:t.name},{ref_for:!0},{...o,...e.$attrs},{name:t.name,value:t.value}),null,16,[`name`,`value`]))),128))],2112))}});export{p as t};
1
+ import{Ot as e,Q as t,X as n,bt as r,et as i,nt as a,ot as o,pt as s,tt as c,vt as l}from"./button-BuzJlj9X.js";import{O as u,R as d}from"./index-BjnFvPid.js";var f=o({inheritAttrs:!1,__name:`VisuallyHiddenInputBubble`,props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:`fully-hidden`}},setup(n){let r=n,{primitiveElement:a,currentElement:o}=d();return e(t(()=>r.checked??r.value),(e,t)=>{if(!o.value)return;let n=o.value,r=window.HTMLInputElement.prototype,i=Object.getOwnPropertyDescriptor(r,`value`).set;if(i&&e!==t){let t=new Event(`input`,{bubbles:!0}),r=new Event(`change`,{bubbles:!0});i.call(n,e),n.dispatchEvent(t),n.dispatchEvent(r)}}),(e,t)=>(l(),i(u,s({ref_key:`primitiveElement`,ref:a},{...r,...e.$attrs},{as:`input`}),null,16))}}),p=o({inheritAttrs:!1,__name:`VisuallyHiddenInput`,props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:`fully-hidden`}},setup(e){let o=e,u=t(()=>typeof o.value==`object`&&Array.isArray(o.value)&&o.value.length===0&&o.required),d=t(()=>typeof o.value==`string`||typeof o.value==`number`||typeof o.value==`boolean`||o.value===null||o.value===void 0?[{name:o.name,value:o.value}]:typeof o.value==`object`&&Array.isArray(o.value)?o.value.flatMap((e,t)=>typeof e==`object`?Object.entries(e).map(([e,n])=>({name:`${o.name}[${t}][${e}]`,value:n})):{name:`${o.name}[${t}]`,value:e}):o.value!==null&&typeof o.value==`object`&&!Array.isArray(o.value)?Object.entries(o.value).map(([e,t])=>({name:`${o.name}[${e}]`,value:t})):[]);return(e,t)=>(l(),a(n,null,[c(` We render single input if it's required `),u.value?(l(),i(f,s({key:e.name},{...o,...e.$attrs},{name:e.name,value:e.value}),null,16,[`name`,`value`])):(l(!0),a(n,{key:1},r(d.value,t=>(l(),i(f,s({key:t.name},{ref_for:!0},{...o,...e.$attrs},{name:t.name,value:t.value}),null,16,[`name`,`value`]))),128))],2112))}});export{p as t};
@@ -0,0 +1 @@
1
+ import{R as e}from"./button-BuzJlj9X.js";var t=e(`arrow-down`,[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]);export{t};
@@ -1 +1 @@
1
- import{S as e,et as t,i as n,jt as r,k as i,ot as a,pt as o,qt as s,r as c,vt as l,xt as u}from"./button-BCxYWEaM.js";var d=a({__name:`Badge`,props:{asChild:{type:Boolean},as:{},variant:{},class:{type:[Boolean,null,String,Object,Array]}},setup(i){let a=i,d=e(a,`class`);return(e,p)=>(l(),t(s(n),o({"data-slot":`badge`,"data-variant":i.variant,class:s(c)(s(f)({variant:i.variant}),a.class)},s(d)),{default:r(()=>[u(e.$slots,`default`)]),_:3},16,[`data-variant`,`class`]))}}),f=i(`h-5 gap-1 rounded-4xl px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! group/badge inline-flex w-fit shrink-0 items-center justify-center overflow-hidden whitespace-nowrap focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none`,{variants:{variant:{default:`bg-primary text-primary-foreground [a]:hover:bg-primary/80`,secondary:`bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80`,destructive:`bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20`,outline:`text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground`,ghost:`hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50`,link:`text-primary underline-offset-4 hover:underline`}},defaultVariants:{variant:`default`}});export{d as t};
1
+ import{S as e,et as t,i as n,jt as r,k as i,ot as a,pt as o,qt as s,r as c,vt as l,xt as u}from"./button-BuzJlj9X.js";var d=a({__name:`Badge`,props:{asChild:{type:Boolean},as:{},variant:{},class:{type:[Boolean,null,String,Object,Array]}},setup(i){let a=i,d=e(a,`class`);return(e,p)=>(l(),t(s(n),o({"data-slot":`badge`,"data-variant":i.variant,class:s(c)(s(f)({variant:i.variant}),a.class)},s(d)),{default:r(()=>[u(e.$slots,`default`)]),_:3},16,[`data-variant`,`class`]))}}),f=i(`h-5 gap-1 rounded-4xl px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! group/badge inline-flex w-fit shrink-0 items-center justify-center overflow-hidden whitespace-nowrap focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none`,{variants:{variant:{default:`bg-primary text-primary-foreground [a]:hover:bg-primary/80`,secondary:`bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80`,destructive:`bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20`,outline:`text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground`,ghost:`hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50`,link:`text-primary underline-offset-4 hover:underline`}},defaultVariants:{variant:`default`}});export{d as t};