llm-simple-router 0.10.13 → 0.11.0

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 (136) hide show
  1. package/config/model-directory.json +1 -0
  2. package/config/recommended-providers.json +6 -5
  3. package/dist/admin/groups.js +25 -0
  4. package/dist/admin/monitor.js +15 -6
  5. package/dist/admin/providers.js +22 -3
  6. package/dist/admin/recommended.js +13 -1
  7. package/dist/config/model-context.d.ts +12 -0
  8. package/dist/config/model-context.js +96 -2
  9. package/dist/config/model-directory.json +1 -0
  10. package/dist/config/recommended-providers.json +355 -0
  11. package/dist/config/recommended-retry-rules.json +12 -0
  12. package/dist/config/recommended.d.ts +2 -0
  13. package/dist/config/version.json +1 -0
  14. package/dist/core/monitor/request-tracker.d.ts +1 -1
  15. package/dist/core/monitor/request-tracker.js +2 -1
  16. package/dist/core/monitor/types.d.ts +1 -0
  17. package/dist/core/types.d.ts +1 -0
  18. package/dist/index.js +17 -1
  19. package/dist/metrics/metrics-extractor.js +3 -0
  20. package/dist/proxy/handler/create-proxy-handler.js +15 -0
  21. package/dist/proxy/handler/failover-loop.js +88 -63
  22. package/dist/proxy/pipeline-snapshot.d.ts +9 -1
  23. package/dist/proxy/proxy-logging.js +2 -2
  24. package/dist/proxy/routing/modality-redirect.d.ts +22 -0
  25. package/dist/proxy/routing/modality-redirect.js +252 -0
  26. package/dist/proxy/routing/overflow.d.ts +11 -0
  27. package/dist/proxy/routing/overflow.js +24 -0
  28. package/dist/proxy/transform/plugin-registry.js +1 -1
  29. package/dist/proxy/transform/stream-oa2ant.js +3 -0
  30. package/dist/proxy/transport/http.js +6 -0
  31. package/dist/proxy/transport/proxy-agent.js +20 -8
  32. package/dist/proxy/transport/stream.js +8 -1
  33. package/dist/proxy/transport/transport-fn.js +12 -0
  34. package/frontend-dist/assets/CardContent-yiYaxAko.js +1 -0
  35. package/frontend-dist/assets/CardTitle-CzqSlrtn.js +1 -0
  36. package/frontend-dist/assets/Checkbox-2voapLgE.js +1 -0
  37. package/frontend-dist/assets/CollapsibleContent-DHkVSWt2.js +1 -0
  38. package/frontend-dist/assets/CollapsibleTrigger-DbVCeTdD.js +1 -0
  39. package/frontend-dist/assets/Dashboard-xT1CEwOR.js +3 -0
  40. package/frontend-dist/assets/{Input-Ey_q_5_r.js → Input-DEfnoFS3.js} +1 -1
  41. package/frontend-dist/assets/Label-CjUuzGNQ.js +1 -0
  42. package/frontend-dist/assets/Login-CJDEk-tO.js +1 -0
  43. package/frontend-dist/assets/Logs-CzdPCIYV.js +1 -0
  44. package/frontend-dist/assets/MappingEntryEditor-GejG6FYv.js +1 -0
  45. package/frontend-dist/assets/ModelCard-DdQtySPM.js +1 -0
  46. package/frontend-dist/assets/ModelMappings-DffY7Izx.js +1 -0
  47. package/frontend-dist/assets/Monitor-y6d6LInm.js +1 -0
  48. package/frontend-dist/assets/Providers-Cb-CB1yf.js +1 -0
  49. package/frontend-dist/assets/ProxyEnhancement-CywRxDop.js +1 -0
  50. package/frontend-dist/assets/QuickSetup-Nj_ysAdc.js +1 -0
  51. package/frontend-dist/assets/RetryRules-DRdeZUPt.js +1 -0
  52. package/frontend-dist/assets/RouterKeys-BHOhDgXZ.js +1 -0
  53. package/frontend-dist/assets/RovingFocusItem-NxZWBEpr.js +1 -0
  54. package/frontend-dist/assets/Schedules-C4jRCbnI.js +1 -0
  55. package/frontend-dist/assets/Settings-Cn0qnqMY.js +6 -0
  56. package/frontend-dist/assets/Setup-BjN6KU0y.js +1 -0
  57. package/frontend-dist/assets/Switch-bk3eQSZ_.js +1 -0
  58. package/frontend-dist/assets/TooltipTrigger-DmYucHtv.js +1 -0
  59. package/frontend-dist/assets/TransformRulesForm-Bo-zFABv.js +1 -0
  60. package/frontend-dist/assets/UnifiedRequestDialog-5-vBmVMH.js +3 -0
  61. package/frontend-dist/assets/VisuallyHiddenInput-BflIWQCW.js +1 -0
  62. package/frontend-dist/assets/{button-C7HO6Dyb.js → button-DZwflOXO.js} +2 -2
  63. package/frontend-dist/assets/{copy-DxwFlq2A.js → copy-zQQvOqam.js} +1 -1
  64. package/frontend-dist/assets/dialog-C7v6Gaak.js +1 -0
  65. package/frontend-dist/assets/index-ClQS69Or.css +1 -0
  66. package/frontend-dist/assets/index-PMAQyWJb.js +3 -0
  67. package/frontend-dist/assets/mappings-BpkOqnsu.js +1 -0
  68. package/frontend-dist/assets/mappings-D7Qy46v_.js +1 -0
  69. package/frontend-dist/assets/{providers-Bcea72GK.js → providers-BI5dO-j0.js} +1 -1
  70. package/frontend-dist/assets/{providers-DNICB6Kg.js → providers-BzxbZ85B.js} +1 -1
  71. package/frontend-dist/assets/{trash-2-D2SrfECO.js → trash-2-CrcHK-G_.js} +1 -1
  72. package/frontend-dist/assets/{useClipboard-CttzUerj.js → useClipboard-B4K3eogm.js} +1 -1
  73. package/frontend-dist/assets/{useLogRetention-Dv0deAan.js → useLogRetention-BNbFXLBO.js} +1 -1
  74. package/frontend-dist/index.html +3 -3
  75. package/package.json +2 -2
  76. package/frontend-dist/assets/CardContent-DfVo-N85.js +0 -1
  77. package/frontend-dist/assets/CardTitle-npwJSAlz.js +0 -1
  78. package/frontend-dist/assets/Checkbox-Ddnzkh_i.js +0 -1
  79. package/frontend-dist/assets/CollapsibleContent-BTVazeoQ.js +0 -1
  80. package/frontend-dist/assets/CollapsibleTrigger-DCQeyHrt.js +0 -1
  81. package/frontend-dist/assets/Dashboard-DjnImtwH.js +0 -3
  82. package/frontend-dist/assets/Label-Dw5HcYsL.js +0 -1
  83. package/frontend-dist/assets/Login-CSrfhhm9.js +0 -1
  84. package/frontend-dist/assets/Logs-HR1DZs1M.js +0 -1
  85. package/frontend-dist/assets/MappingEntryEditor-C9pgNL0Q.js +0 -1
  86. package/frontend-dist/assets/ModelCard-IQMwlnCm.js +0 -1
  87. package/frontend-dist/assets/ModelMappings-kRx-GL_7.js +0 -1
  88. package/frontend-dist/assets/Monitor-y1ofDNK7.js +0 -1
  89. package/frontend-dist/assets/Providers-C1bP2PoM.js +0 -1
  90. package/frontend-dist/assets/ProxyEnhancement-DQx4coxn.js +0 -1
  91. package/frontend-dist/assets/QuickSetup-DHX9-CnO.js +0 -1
  92. package/frontend-dist/assets/RetryRules-zdJE0bFL.js +0 -1
  93. package/frontend-dist/assets/RouterKeys-CD0rI4kv.js +0 -1
  94. package/frontend-dist/assets/RovingFocusItem-CFmjbm49.js +0 -1
  95. package/frontend-dist/assets/Schedules-BUm3cC6w.js +0 -1
  96. package/frontend-dist/assets/Settings-D7z5IRkY.js +0 -6
  97. package/frontend-dist/assets/Setup-i9inmgjB.js +0 -1
  98. package/frontend-dist/assets/Switch-C9DeYAnK.js +0 -1
  99. package/frontend-dist/assets/TooltipTrigger-Dr6kqGSH.js +0 -1
  100. package/frontend-dist/assets/TransformRulesForm-CyXh4jHa.js +0 -1
  101. package/frontend-dist/assets/UnifiedRequestDialog-6ZRBfjko.js +0 -3
  102. package/frontend-dist/assets/VisuallyHiddenInput-CwE9jREu.js +0 -1
  103. package/frontend-dist/assets/constants-yM0YwP2s.js +0 -1
  104. package/frontend-dist/assets/dialog-BWB1aLcT.js +0 -1
  105. package/frontend-dist/assets/index-DeeDpH_W.css +0 -1
  106. package/frontend-dist/assets/index-itL9--Q_.js +0 -3
  107. package/frontend-dist/assets/mappings-6w7mc8YK.js +0 -1
  108. package/frontend-dist/assets/mappings-C1fK_e70.js +0 -1
  109. /package/frontend-dist/assets/{common-D96jEq-h.js → common-Bvxev9Ev.js} +0 -0
  110. /package/frontend-dist/assets/{common-BpwAv-lj.js → common-Cn0QcrnY.js} +0 -0
  111. /package/frontend-dist/assets/{dashboard-DjgmcUG5.js → dashboard-Cejt1wVQ.js} +0 -0
  112. /package/frontend-dist/assets/{dashboard-COCyp2p_.js → dashboard-DLTOR0fN.js} +0 -0
  113. /package/frontend-dist/assets/{login-BTNL5nN5.js → login-BkOvA7gg.js} +0 -0
  114. /package/frontend-dist/assets/{login-Sef1i0de.js → login-DWRFsEu3.js} +0 -0
  115. /package/frontend-dist/assets/{logs-CBRLywRw.js → logs-CA8USnXG.js} +0 -0
  116. /package/frontend-dist/assets/{logs-B-6cgV12.js → logs-QPt2Ybwy.js} +0 -0
  117. /package/frontend-dist/assets/{monitor-CaDMr_KG.js → monitor-CcPZdXUM.js} +0 -0
  118. /package/frontend-dist/assets/{monitor-C9j7ppMj.js → monitor-D-0KOVTC.js} +0 -0
  119. /package/frontend-dist/assets/{proxyEnhancement-DpIVSv-g.js → proxyEnhancement-B6vdsMeK.js} +0 -0
  120. /package/frontend-dist/assets/{proxyEnhancement-rSM6KhbN.js → proxyEnhancement-UuPFs4M3.js} +0 -0
  121. /package/frontend-dist/assets/{quickSetup-CCxaqY3U.js → quickSetup-CSpWmAy-.js} +0 -0
  122. /package/frontend-dist/assets/{quickSetup-DgDENHE4.js → quickSetup-D8ruRelW.js} +0 -0
  123. /package/frontend-dist/assets/{requestDetail-DZ55ph4h.js → requestDetail-8Sp9tWNb.js} +0 -0
  124. /package/frontend-dist/assets/{requestDetail-3KCtYe1N.js → requestDetail-CcHzzKYr.js} +0 -0
  125. /package/frontend-dist/assets/{retryRules-BXrRL52J.js → retryRules-C--dd-y8.js} +0 -0
  126. /package/frontend-dist/assets/{retryRules-CToGC6cR.js → retryRules-CzLnagW_.js} +0 -0
  127. /package/frontend-dist/assets/{routerKeys-DbTg4OP1.js → routerKeys-CB2l_V7w.js} +0 -0
  128. /package/frontend-dist/assets/{routerKeys-Be7OZCn0.js → routerKeys-p_ioAckE.js} +0 -0
  129. /package/frontend-dist/assets/{schedules-Bd66RL7P.js → schedules-Cz_-Wfa_.js} +0 -0
  130. /package/frontend-dist/assets/{schedules-HDwMuDgX.js → schedules-DTgk603B.js} +0 -0
  131. /package/frontend-dist/assets/{settings-DCS-RTKl.js → settings-B5Mq1HN8.js} +0 -0
  132. /package/frontend-dist/assets/{settings-C4zZB9GY.js → settings-j3dzVXzy.js} +0 -0
  133. /package/frontend-dist/assets/{setup-CrjgRrYP.js → setup-DaeEG9ll.js} +0 -0
  134. /package/frontend-dist/assets/{setup-DmgXvgkY.js → setup-Dryg-9wL.js} +0 -0
  135. /package/frontend-dist/assets/{sidebar-3c8D7l60.js → sidebar-BQWT-QZb.js} +0 -0
  136. /package/frontend-dist/assets/{sidebar-vj4kQ6t1.js → sidebar-DYwEKca3.js} +0 -0
@@ -0,0 +1 @@
1
+ import{$ as e,Et as t,F as n,Ht as r,J as i,K as a,Pt as o,Q as s,R as c,Wt as l,X as u,Y as d,Z as f,et as p,ht as m,n as h,pt as g,qt as _,tt as v}from"./button-DZwflOXO.js";import{n as y}from"./Switch-bk3eQSZ_.js";import{t as b}from"./trash-2-CrcHK-G_.js";import{i as x,n as S,r as C,t as w}from"./TooltipTrigger-DmYucHtv.js";import{_ as T,ut as E,v as D,y as O}from"./index-PMAQyWJb.js";import{t as k}from"./Input-DEfnoFS3.js";var A=n(`arrow-right`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]),j=n(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),M=n(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),ee=n(`timer`,[[`line`,{x1:`10`,x2:`14`,y1:`2`,y2:`2`,key:`14vaq8`}],[`line`,{x1:`12`,x2:`15`,y1:`14`,y2:`11`,key:`17fdiu`}],[`circle`,{cx:`12`,cy:`14`,r:`8`,key:`1e1u0o`}]]),N=[`onMouseenter`],P={class:`truncate max-w-40`},F={key:0,class:`ml-1 text-[10px] px-1 py-px rounded bg-emerald-500/15 text-emerald-400 shrink-0`},I=[`onMouseenter`],L=[`onClick`],R={class:`truncate`},z={key:0,class:`shrink-0 text-xs text-muted-foreground`},B={key:0,class:`px-2 py-1.5 text-sm text-muted-foreground`},V=v({__name:`CascadingSelect`,props:{groups:{},modelValue:{},placeholder:{default:``},compact:{type:Boolean,default:!1}},emits:[`update:modelValue`],setup(e,{emit:n}){let{t:h}=c(),v=e,y=i(()=>v.placeholder||h(`common.selectPlaceholder`)),b=n,x=o(!1),S=o(null),C=i(()=>{if(!v.modelValue)return``;let e=v.groups.find(e=>e.key===v.modelValue.groupKey);if(!e)return``;let t=e.options.find(e=>e.value===v.modelValue.value);return t?`${e.label} / ${t.label}`:``});function w(e,t){b(`update:modelValue`,{groupKey:e,value:t}),x.value=!1}function k(e){x.value=e,e||(S.value=null)}return(n,i)=>(g(),u(r(O),{open:x.value,"onUpdate:open":k},{default:t(()=>[p(r(T),{"as-child":``},{default:t(()=>[d(`div`,{class:l([`flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background cursor-pointer hover:bg-accent hover:text-accent-foreground`,[e.compact?`h-8 text-xs px-2.5 py-1`:`h-10 text-sm px-3 py-2`,{"ring-2 ring-ring ring-offset-2":x.value}]])},[d(`span`,{class:l([`truncate`,e.modelValue?`text-foreground`:`text-muted-foreground`])},_(C.value||y.value),3),p(r(E),{class:`h-4 w-4 shrink-0 opacity-50`})],2)]),_:1}),p(r(D),{align:`start`,"side-offset":4,class:`z-[200] w-auto min-w-56 overflow-visible p-1`},{default:t(()=>[(g(!0),s(a,null,m(e.groups,t=>(g(),s(`div`,{key:t.key,class:l([`relative flex cursor-pointer items-center justify-between rounded-sm px-2 py-1.5 text-sm hover:bg-accent hover:text-accent-foreground`,{"bg-accent text-accent-foreground z-10":S.value===t.key}]),onMouseenter:e=>S.value=t.key},[d(`span`,P,_(t.label),1),t.badge?(g(),s(`span`,F,_(t.badge),1)):f(``,!0),p(r(j),{class:`ml-1 h-4 w-4 shrink-0 opacity-50`}),S.value===t.key&&t.options.length>0?(g(),s(`div`,{key:1,class:`absolute left-full top-0 ml-0.5 min-w-48 rounded-md border bg-popover p-1 text-popover-foreground shadow-md`,onMouseenter:e=>S.value=t.key},[(g(!0),s(a,null,m(t.options,n=>(g(),s(`div`,{key:n.value,class:l([`flex cursor-pointer items-center justify-between gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent hover:text-accent-foreground`,{"bg-accent text-accent-foreground":e.modelValue?.groupKey===t.key&&e.modelValue?.value===n.value}]),onClick:e=>w(t.key,n.value)},[d(`span`,R,_(n.label),1),n.tag?(g(),s(`span`,z,_(n.tag),1)):f(``,!0)],10,L))),128))],40,I)):f(``,!0)],42,N))),128)),e.groups.length===0?(g(),s(`div`,B,_(r(h)(`common.noOptions`)),1)):f(``,!0)]),_:1})]),_:1},8,[`open`]))}}),H=1e6,U=1e3,W=v({__name:`CascadingModelSelect`,props:{providers:{},modelValue:{},placeholder:{default:``},compact:{type:Boolean}},emits:[`update:modelValue`],setup(e,{emit:t}){let{t:n}=c(),r=e,a=i(()=>r.placeholder||n(`mappings.selectProviderModel`)),o=t;function s(e){return e>=H?`${e/H}M`:`${e/U}K`}let l=i(()=>r.providers.map(e=>({key:e.provider.id,label:e.provider.name,badge:e.isNew?n(`common.new`):void 0,options:e.models.map(e=>({value:e.name,label:e.name,tag:s(e.contextWindow)}))}))),d=i(()=>r.modelValue?{groupKey:r.modelValue.provider_id,value:r.modelValue.model}:void 0);function f(e){o(`update:modelValue`,{provider_id:e.groupKey,model:e.value})}return(t,n)=>(g(),u(V,{groups:l.value,"model-value":d.value,placeholder:a.value,compact:e.compact,"onUpdate:modelValue":f},null,8,[`groups`,`model-value`,`placeholder`,`compact`]))}}),G={key:0,class:`flex items-start gap-3`},K=[`title`],q={class:`flex-1 flex flex-col gap-0 min-w-0`},J={class:`font-mono truncate`},Y={class:`text-[10px] px-1 py-px rounded bg-muted/50 text-muted-foreground/50 shrink-0`},X={key:0,class:`text-[10px] px-1 py-px rounded bg-blue-500/10 text-blue-500/60 flex items-center gap-0.5 shrink-0`},Z={key:0,class:`flex items-center gap-1 pl-5 py-0.5`},te={class:`text-[9px] text-orange-400/50`},Q={key:0,class:`flex items-center gap-1.5 mt-1 pt-1.5 border-t border-dashed border-primary/10`},ne={class:`text-[10px] text-primary/30`},re={class:`font-mono text-xs text-primary/50`},ie={key:1,class:`space-y-1.5`},ae={key:0,class:`flex items-center gap-2`},oe={key:1,class:`flex items-center gap-2 px-2.5 py-1.5 rounded-md bg-muted/20 border border-border/50`},se={class:`font-mono text-sm font-medium text-foreground truncate`},ce={class:`flex items-center gap-2`},le={class:`flex-1`},$={key:0,class:`flex items-center gap-1 pl-8 py-0.5`},ue={class:`text-[9px] text-orange-400/50`},de={class:`pt-2 mt-1 border-t border-dashed border-primary/15 space-y-1.5`},fe={key:0,class:`flex items-center gap-2`},pe={class:`text-[10px] w-6 text-center px-1 py-0.5 rounded bg-primary/10 text-primary/70 shrink-0`},me={class:`flex-1`},he={key:1,class:`flex items-center gap-1.5`},ge=6,_e=v({__name:`MappingEntryEditor`,props:{entry:{},providerGroups:{},expanded:{type:Boolean},editable:{type:Boolean,default:!0},editableClientModel:{type:Boolean,default:!1}},emits:[`update:targets`,`update:clientModel`],setup(n,{emit:i}){let{t:o}=c(),v=n,T=i;function E(e){return v.providerGroups.find(t=>t.provider.id===e)?.provider.name??e.slice(0,ge)}function D(e,t){return v.providerGroups.find(t=>t.provider.id===e)?.models.find(e=>e.name===t)?.streamTimeoutMs}function O(){let e=v.providerGroups[0];T(`update:targets`,[...v.entry.targets,{backend_model:e?.models[0]?.name??``,provider_id:e?.provider.id??``}])}function j(){let e=v.providerGroups[0];T(`update:targets`,v.entry.targets.map((t,n)=>n===0?{...t,overflow_provider_id:e?.provider.id??``,overflow_model:e?.models[0]?.name??``}:t))}function N(e){v.entry.targets.length<=1||T(`update:targets`,v.entry.targets.filter((t,n)=>n!==e))}function P(e,t){let n=[...v.entry.targets];n[e]={...n[e],provider_id:t.provider_id,backend_model:t.model},T(`update:targets`,n)}function F(e){T(`update:targets`,v.entry.targets.map((t,n)=>{if(n===0){if(e)return{...t,overflow_provider_id:e.provider_id,overflow_model:e.model};{let{overflow_provider_id:e,overflow_model:n,...r}=t;return r}}return t}))}return(i,c)=>(g(),s(`div`,null,[n.expanded?(g(),s(`div`,ie,[n.editableClientModel?(g(),s(`div`,ae,[c[5]||=d(`span`,{class:`text-[10px] text-muted-foreground/60 shrink-0 w-6 text-center`},`Client`,-1),p(r(k),{"model-value":n.entry.clientModel,class:`h-7 flex-1 text-xs font-mono`,placeholder:r(o)(`providers.shared.clientModel`),"onUpdate:modelValue":c[0]||=e=>T(`update:clientModel`,String(e))},null,8,[`model-value`,`placeholder`])])):(g(),s(`div`,oe,[c[6]||=d(`span`,{class:`text-[10px] text-muted-foreground/60 shrink-0`},`Client`,-1),d(`span`,se,_(n.entry.clientModel),1)])),(g(!0),s(a,null,m(n.entry.targets,(e,i)=>(g(),s(`div`,{key:i},[d(`div`,ce,[d(`span`,{class:l([`text-xs font-medium shrink-0 w-6 text-center px-1 py-0.5 rounded`,i===0?`bg-primary/10 text-primary`:`bg-muted/30 text-muted-foreground`])},_(i===0?`①`:i===1?`②`:i===2?`③`:`${i+1}`),3),d(`div`,le,[p(W,{providers:n.providerGroups,"model-value":{provider_id:e.provider_id,model:e.backend_model},compact:``,placeholder:r(o)(`providers.shared.selectModel`),"onUpdate:modelValue":e=>P(i,e)},null,8,[`providers`,`model-value`,`placeholder`,`onUpdate:modelValue`])]),i>0&&n.entry.targets.length>1?(g(),u(r(h),{key:0,type:`button`,variant:`ghost`,size:`icon-xs`,class:`shrink-0 text-muted-foreground/40 hover:text-destructive`,onClick:e=>N(i)},{default:t(()=>[p(r(b),{class:`size-3`})]),_:1},8,[`onClick`])):f(``,!0)]),i<n.entry.targets.length-1?(g(),s(`div`,$,[c[7]||=d(`div`,{class:`w-px h-1.5 bg-orange-400/30`},null,-1),d(`span`,ue,_(r(o)(`providers.shared.switchOnFail`)),1)])):f(``,!0)]))),128)),p(r(h),{type:`button`,variant:`ghost`,size:`sm`,class:`w-full text-xs text-muted-foreground/50`,onClick:O},{default:t(()=>[p(r(y),{class:`w-3 h-3 mr-1`}),e(` `+_(n.entry.targets.length===0?r(o)(`providers.shared.addMappingModel`):r(o)(`providers.shared.addFailover`)),1)]),_:1}),d(`div`,de,[n.entry.targets[0]?.overflow_model?(g(),s(`div`,fe,[d(`span`,pe,_(r(o)(`providers.shared.overflow`)),1),d(`div`,me,[p(W,{providers:n.providerGroups,"model-value":n.entry.targets[0]?.overflow_provider_id&&n.entry.targets[0]?.overflow_model?{provider_id:n.entry.targets[0].overflow_provider_id,model:n.entry.targets[0].overflow_model}:void 0,compact:``,placeholder:r(o)(`providers.shared.overflowPlaceholder`),"onUpdate:modelValue":c[1]||=e=>F(e)},null,8,[`providers`,`model-value`,`placeholder`])]),p(r(h),{type:`button`,variant:`ghost`,size:`icon-xs`,class:`shrink-0 text-muted-foreground/40 hover:text-destructive`,onClick:c[2]||=e=>F(void 0)},{default:t(()=>[p(r(b),{class:`size-3`})]),_:1})])):(g(),s(`div`,he,[p(r(h),{type:`button`,variant:`ghost`,size:`sm`,class:`text-xs text-muted-foreground/50`,onClick:j},{default:t(()=>[p(r(y),{class:`w-3 h-3 mr-1`}),e(` `+_(r(o)(`providers.shared.addOverflow`)),1)]),_:1}),p(r(S),{"delay-duration":200},{default:t(()=>[p(r(x),null,{default:t(()=>[p(r(w),{"as-child":``},{default:t(()=>[p(r(M),{class:`size-3 text-muted-foreground/30 cursor-help`})]),_:1}),p(r(C),{side:`top`,class:`max-w-[240px] text-xs`},{default:t(()=>[e(_(r(o)(`providers.shared.overflowTooltip`)),1)]),_:1})]),_:1})]),_:1})]))])])):(g(),s(`div`,G,[d(`span`,{class:`min-w-[90px] font-mono text-sm font-semibold text-foreground shrink-0 truncate`,title:n.entry.clientModel},_(n.entry.clientModel),9,K),p(r(A),{class:`size-3.5 mt-0.5 shrink-0 text-muted-foreground/30`}),d(`div`,q,[(g(!0),s(a,null,m(n.entry.targets,(t,i)=>(g(),s(`div`,{key:i},[d(`div`,{class:l([`flex items-center gap-1.5 px-2.5 py-1 rounded-md text-sm`,i===0?`bg-primary/10 border border-primary/20 text-primary`:`bg-muted/30 border border-border text-muted-foreground`])},[d(`span`,{class:l([`text-[10px] font-semibold w-3.5 text-center`,i===0?`text-primary`:`text-muted-foreground`])},_(i===0?`①`:i===1?`②`:i===2?`③`:`${i+1}`),3),d(`span`,J,_(t.backend_model),1),d(`span`,Y,_(E(t.provider_id)),1),D(t.provider_id,t.backend_model)?(g(),s(`span`,X,[p(r(ee),{class:`size-2.5`}),e(` `+_(Math.round(D(t.provider_id,t.backend_model)/1e3))+`s `,1)])):f(``,!0)],2),i<n.entry.targets.length-1?(g(),s(`div`,Z,[c[3]||=d(`div`,{class:`w-px h-1.5 bg-orange-400/30`},null,-1),d(`span`,te,_(r(o)(`providers.shared.switchOnFail`)),1)])):f(``,!0)]))),128)),n.entry.targets[0]?.overflow_model?(g(),s(`div`,Q,[c[4]||=d(`span`,{class:`text-[10px] text-primary/40 w-3.5 text-center`},`⤵`,-1),d(`span`,ne,_(r(o)(`providers.shared.overflow`)),1),d(`span`,re,_(n.entry.targets[0].overflow_model),1)])):f(``,!0)])]))]))}});export{W as n,_e as t};
@@ -0,0 +1 @@
1
+ import{$ as e,Et as t,F as n,Ht as r,J as i,K as a,Pt as o,Q as s,R as c,Wt as l,X as u,Y as d,Z as f,et as p,ht as m,n as h,pt as g,qt as _,r as v,tt as y}from"./button-DZwflOXO.js";import{t as b}from"./trash-2-CrcHK-G_.js";import{t as x}from"./Checkbox-2voapLgE.js";import{n as S,t as C}from"./CollapsibleContent-DHkVSWt2.js";import{t as w}from"./Label-CjUuzGNQ.js";import{b as ee,f as te,g as T,h as E,lt as D,m as O,p as k,ut as A}from"./index-PMAQyWJb.js";import{t as j}from"./Input-DEfnoFS3.js";var M=n(`image`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}]]),N=n(`video`,[[`path`,{d:`m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5`,key:`ftymec`}],[`rect`,{x:`2`,y:`6`,width:`14`,height:`12`,rx:`2`,key:`158x01`}]]),ne=n(`volume-2`,[[`path`,{d:`M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z`,key:`uqj9uw`}],[`path`,{d:`M16 9a5 5 0 0 1 0 6`,key:`1q6k2b`}],[`path`,{d:`M19.364 18.364a9 9 0 0 0 0-12.728`,key:`ijwkga`}]]),P=[{id:`claude-code`,name:`Claude Code`,icon:`C`,iconClass:`cc`,format:`anthropic`,defaultProvider:`DeepSeek`,defaultPlan:`Anthropic`,descriptionKey:`quickSetup.client.claudeCodeDesc`},{id:`pi`,name:`Pi`,icon:`P`,iconClass:`pi`,format:`anthropic`,defaultProvider:`DeepSeek`,defaultPlan:`Anthropic`,descriptionKey:`quickSetup.client.piDesc`},{id:`openai-sdk`,name:`OpenAI SDK`,icon:`OA`,iconClass:`oa`,format:`openai`,defaultProvider:`DeepSeek`,defaultPlan:`OpenAI`,descriptionKey:`quickSetup.client.openaiSdkDesc`},{id:`anthropic-sdk`,name:`Anthropic SDK`,icon:`AN`,iconClass:`an`,format:`anthropic`,defaultProvider:`DeepSeek`,defaultPlan:`Anthropic`,descriptionKey:`quickSetup.client.anthropicSdkDesc`}],F=[{key:`deepseek_anthropic`,labelKey:`quickSetup.patch.deepseekAnthropic`,items:[{id:`thinking-consistency`,nameKey:`quickSetup.patch.thinkingConsistency`,descKey:`quickSetup.patch.thinkingConsistencyDesc`},{id:`orphan-tool-results`,nameKey:`quickSetup.patch.orphanToolResult`,descKey:`quickSetup.patch.orphanToolResultDesc`}]},{key:`deepseek_openai`,labelKey:`quickSetup.patch.deepseekOpenai`,items:[{id:`thinking-consistency`,nameKey:`quickSetup.patch.thinkingConsistency`,descKey:`quickSetup.patch.thinkingConsistencyDesc`},{id:`orphan-tool-results-oa`,nameKey:`quickSetup.patch.orphanToolResultOa`,descKey:`quickSetup.patch.orphanToolResultOaDesc`}]},{key:`general`,labelKey:`quickSetup.patch.general`,items:[{id:`developer-role`,nameKey:`quickSetup.patch.developerRole`,descKey:`quickSetup.patch.developerRoleDesc`}]}],I=[{label:`8K`,value:8e3},{label:`16K`,value:16e3},{label:`32K`,value:32e3},{label:`64K`,value:64e3},{label:`128K`,value:128e3},{label:`160K`,value:16e4},{label:`200K`,value:2e5},{label:`256K`,value:256e3},{label:`1M`,value:1e6}],L=1e6,R=256e3,z=2e5,B=128e3,V=32e3,H=16e3,U=8e3;function W(e){let t=e.toLowerCase();return t.includes(`v4`)||t.includes(`v3.2`)||t.includes(`r1`)||t.includes(`reasoner`)||t.includes(`qwen3.6`)?L:t.includes(`kimi`)||t.includes(`moonshotai`)||t.includes(`hunyuan-2.0`)||t.includes(`hunyuan-a13b`)||t.includes(`hunyuan-t1`)||t.includes(`step-3.5`)||t.includes(`step-3`)||t.includes(`qwen3.5-plus`)||t.includes(`qwen3-max`)||t.includes(`doubao`)||t.includes(`ark-code`)||t.includes(`tc-code`)?R:t.includes(`glm-5`)||t.includes(`glm-4.7`)||t.includes(`minimax`)?z:t.includes(`128k`)?B:t.includes(`32k`)?V:t.includes(`16k`)?H:t.includes(`8k`)?U:B}var G={"claude-code":[`sonnet`,`opus`,`haiku`],"openai-sdk":[`gpt-5.1`,`gpt-4.1`,`o3`,`o4-mini`],"anthropic-sdk":[`claude-sonnet-4-20250514`,`claude-opus-4-20250116`,`claude-haiku-4-20250414`]},K={class:`space-y-3`},q={class:`mb-1.5 text-xs font-medium text-[var(--muted-foreground)]`},J={class:`flex flex-wrap gap-1.5`},Y=[`title`,`onClick`],X=y({__name:`PatchChips`,props:{apiType:{},isDeepSeek:{type:Boolean},isNonOpenaiEndpoint:{type:Boolean},modelValue:{}},emits:[`update:modelValue`],setup(t,{emit:n}){let{t:o}=c(),u=t,f=n,p=i(()=>F.filter(e=>e.key===`deepseek_anthropic`?u.isDeepSeek&&u.apiType===`anthropic`:e.key===`deepseek_openai`?u.isDeepSeek&&u.apiType===`openai`:e.key===`general`?u.apiType===`openai`&&u.isNonOpenaiEndpoint:!0));function h(e){f(`update:modelValue`,u.modelValue.includes(e)?u.modelValue.filter(t=>t!==e):[...u.modelValue,e])}function y(e){return u.modelValue.includes(e)}return(t,n)=>(g(),s(`div`,K,[(g(!0),s(a,null,m(p.value,t=>(g(),s(`div`,{key:t.key},[d(`p`,q,_(r(o)(t.labelKey)),1),d(`div`,J,[(g(!0),s(a,null,m(t.items,t=>(g(),s(`button`,{key:t.id,type:`button`,title:r(o)(t.descKey),class:l(r(v)(`inline-flex items-center gap-1.5 rounded-md border px-2 py-1 text-xs font-medium transition-all cursor-pointer select-none`,y(t.id)?`border-[var(--ring)] bg-[var(--primary)]/10 text-[var(--primary)]`:`border-[var(--border)] bg-transparent text-[var(--muted-foreground)] hover:border-[var(--muted-foreground)] hover:text-[var(--foreground)]`)),onClick:e=>h(t.id)},[d(`span`,{class:l(r(v)(`size-1.5 rounded-full transition-colors`,y(t.id)?`bg-[var(--primary)]`:`bg-[var(--border)]`))},null,2),e(` `+_(r(o)(t.nameKey)),1)],10,Y))),128))])]))),128))]))}}),re={class:`rounded-lg border border-border bg-card px-3 py-2.5 transition-colors`},ie={class:`flex items-center gap-2`},ae=[`title`],oe={class:`flex items-center gap-1 shrink-0`},se={key:0,class:`flex items-center gap-3 pt-1.5 mt-1.5 border-t border-border/30`},ce={key:0,class:`flex items-center gap-1.5`},Z={key:1,class:`flex items-center gap-2`},le={class:`text-[10px] text-muted-foreground flex items-center gap-0.5`},ue={class:`text-[10px] text-muted-foreground flex items-center gap-0.5`},de={class:`text-[10px] text-muted-foreground flex items-center gap-0.5`},Q=1e6,$=1e3,fe=y({__name:`ModelCard`,props:{model:{},apiType:{},isDeepSeek:{type:Boolean},isNonOpenaiEndpoint:{type:Boolean},streamTimeoutMs:{},capabilities:{}},emits:[`update:model`,`remove`,`update:stream-timeout-ms`,`toggle-capability`],setup(n,{emit:y}){let{t:P}=c(),F=n,L=y,R=o(!1),z=i(()=>I.find(e=>e.value===F.model.contextWindow)),B=i(()=>!!z.value);function V(e){let t=e;if(t===`__custom__`)return;let n=parseInt(t,10);isNaN(n)||L(`update:model`,{...F.model,contextWindow:n})}function H(e){let t=parseInt(e,10);!isNaN(t)&&t>0&&L(`update:model`,{...F.model,contextWindow:t})}function U(e){L(`update:model`,{...F.model,patches:e})}function W(e){return e>=Q?`${e/Q}M`:e>=$?`${e/$}K`:`${e}`}return(i,o)=>(g(),s(`div`,re,[d(`div`,ie,[d(`span`,{class:`truncate text-xs font-medium text-foreground min-w-0 flex-1`,title:n.model.name},_(n.model.name),9,ae),d(`div`,oe,[p(r(T),{"model-value":B.value?String(n.model.contextWindow):`__custom__`,"onUpdate:modelValue":V},{default:t(()=>[p(r(k),{class:`h-7 w-[72px] text-xs`},{default:t(()=>[p(r(te),null,{default:t(()=>[e(_(B.value?z.value.label:W(n.model.contextWindow)),1)]),_:1})]),_:1}),p(r(E),null,{default:t(()=>[(g(!0),s(a,null,m(r(I),n=>(g(),u(r(O),{key:n.value,value:String(n.value)},{default:t(()=>[e(_(n.label),1)]),_:2},1032,[`value`]))),128)),p(r(O),{value:`__custom__`},{default:t(()=>[e(_(r(P)(`quickSetup.model.contextCustom`)),1)]),_:1})]),_:1})]),_:1},8,[`model-value`]),B.value?f(``,!0):(g(),u(r(j),{key:0,"model-value":String(n.model.contextWindow),type:`number`,min:`1`,class:`h-7 w-20 text-xs text-right [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none`,"onUpdate:modelValue":o[0]||=e=>H(e)},null,8,[`model-value`]))]),p(r(h),{type:`button`,variant:`ghost`,size:`sm`,class:`inline-flex items-center gap-0.5 text-[10px] text-muted-foreground hover:text-foreground transition-colors cursor-pointer select-none shrink-0 h-auto px-1 py-0`,onClick:o[1]||=e=>R.value=!R.value},{default:t(()=>[p(r(A),{class:l(r(v)(`size-3 transition-transform`,R.value?`rotate-0`:`-rotate-90`))},null,8,[`class`]),e(` `+_(n.model.patches.length>0?n.model.patches.length:``),1)]),_:1}),p(r(h),{variant:`ghost`,size:`icon-xs`,class:`text-muted-foreground hover:text-destructive shrink-0`,onClick:o[2]||=e=>i.$emit(`remove`)},{default:t(()=>[p(r(b),{class:`size-3`})]),_:1})]),p(r(S),{open:R.value,"onUpdate:open":o[3]||=e=>R.value=e},{default:t(()=>[p(r(C),{class:`pt-1.5`},{default:t(()=>[p(X,{"api-type":n.apiType,"is-deep-seek":n.isDeepSeek,"is-non-openai-endpoint":n.isNonOpenaiEndpoint,"model-value":n.model.patches,"onUpdate:modelValue":U},null,8,[`api-type`,`is-deep-seek`,`is-non-openai-endpoint`,`model-value`])]),_:1})]),_:1},8,[`open`]),n.streamTimeoutMs!==void 0||n.capabilities!==void 0?(g(),s(`div`,se,[n.streamTimeoutMs===void 0?f(``,!0):(g(),s(`div`,ce,[p(r(w),{class:`text-xs text-muted-foreground whitespace-nowrap`},{default:t(()=>[e(_(r(P)(`providers.fields.timeoutLabel`)),1)]),_:1}),p(r(j),{type:`number`,"model-value":n.streamTimeoutMs?Math.round(n.streamTimeoutMs/1e3):``,"onUpdate:modelValue":o[4]||=e=>L(`update:stream-timeout-ms`,e?Number(e)*1e3:void 0),placeholder:r(P)(`providers.fields.timeoutPlaceholder`),class:`h-7 text-xs`,min:`1`},null,8,[`model-value`,`placeholder`])])),n.capabilities?(g(),s(`div`,Z,[p(r(ee),{variant:`secondary`,class:`text-[10px] px-1.5 py-0 gap-0.5`},{default:t(()=>[p(r(D),{class:`w-2.5 h-2.5`}),e(` `+_(r(P)(`providers.capabilities.text`)),1)]),_:1}),p(r(w),{class:`flex items-center gap-1.5 cursor-pointer`},{default:t(()=>[p(r(x),{checked:n.capabilities.includes(`image`),"onUpdate:checked":o[5]||=e=>L(`toggle-capability`,`image`)},null,8,[`checked`]),d(`span`,le,[p(r(M),{class:`w-2.5 h-2.5`}),e(` `+_(r(P)(`providers.capabilities.image`)),1)])]),_:1}),p(r(w),{class:`flex items-center gap-1.5 cursor-pointer`},{default:t(()=>[p(r(x),{checked:n.capabilities.includes(`audio`),"onUpdate:checked":o[6]||=e=>L(`toggle-capability`,`audio`)},null,8,[`checked`]),d(`span`,ue,[p(r(ne),{class:`w-2.5 h-2.5`}),e(` `+_(r(P)(`providers.capabilities.audio`)),1)])]),_:1}),p(r(w),{class:`flex items-center gap-1.5 cursor-pointer`},{default:t(()=>[p(r(x),{checked:n.capabilities.includes(`video`),"onUpdate:checked":o[7]||=e=>L(`toggle-capability`,`video`)},null,8,[`checked`]),d(`span`,de,[p(r(N),{class:`w-2.5 h-2.5`}),e(` `+_(r(P)(`providers.capabilities.video`)),1)])]),_:1})])):f(``,!0)])):f(``,!0)]))}});export{M as a,W as i,P as n,G as r,fe as t};
@@ -0,0 +1 @@
1
+ import{$ as e,A as t,Ct as n,Et as r,F as i,G as a,Ht as o,J as s,K as c,Pt as l,Q as u,R as d,Wt as f,X as p,Y as m,Z as h,dt as g,et as _,ht as v,k as y,n as b,pt as x,qt as S,tt as C}from"./button-DZwflOXO.js";import{n as w,t as T}from"./MappingEntryEditor-GejG6FYv.js";import{n as E,t as D}from"./Switch-bk3eQSZ_.js";import{t as O}from"./trash-2-CrcHK-G_.js";import{a as k,at as A,b as j,c as M,d as ee,i as te,l as ne,o as re,r as N,s as ie}from"./index-PMAQyWJb.js";var P=i(`layers`,[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]]),ae={class:`flex-1 min-w-0`},oe={class:`flex flex-col items-end gap-1.5 shrink-0 pt-0.5`},se={class:`flex items-center gap-2`},ce={key:0,class:`text-[10px] px-1.5 py-0.5 rounded border border-orange-400/30 text-orange-400/60`},le={key:1,class:`text-[10px] px-1.5 py-0.5 rounded border border-primary/20 text-primary/60 flex items-center gap-0.5`},ue={key:0,class:`px-4 pt-2 pb-1 border-t border-border/30`},F={class:`flex items-center gap-2 mb-1.5`},I={class:`text-xs text-muted-foreground`},L={key:0,class:`flex items-center gap-2`},R={key:1,class:`mt-2 p-2 rounded-md border border-warning/30 bg-warning/5`},z={class:`flex gap-2`},B={class:`space-y-1`},V={class:`text-[11px] text-warning`},H={class:`text-[11px] text-warning/60`},de={class:`text-[11px] text-warning/50`},fe={key:1,class:`flex items-center justify-end gap-2 px-4 py-2 border-t border-border/50`},U=C({__name:`ModelMappingCard`,props:{entry:{},providerGroups:{},editableClientModel:{type:Boolean},defaultExpanded:{type:Boolean,default:!1}},emits:[`saved`,`deleted`,`cancel-add`],setup(i,{emit:g}){let{t:v}=d(),C=i,U=g,W=l(``);n(()=>C.entry.clientModel,e=>{W.value=e},{immediate:!0});let G=l(C.defaultExpanded),K=l([]),q=l(void 0),J=l(!1),Y=l(!1);n(G,e=>{e&&(K.value=C.entry.targets.map(e=>({...e})),q.value=C.entry.multimodalFallback?{...C.entry.multimodalFallback}:void 0)}),n(()=>C.entry.targets,e=>{G.value&&(K.value=e.map(e=>({...e})))},{deep:!0}),n(()=>C.entry.multimodalFallback,e=>{G.value&&(q.value=e?{...e}:void 0)});let X=s(()=>G.value?{...C.entry,targets:K.value,multimodalFallback:q.value}:C.entry);function Z(e){K.value=e}function Q(e){W.value=e}function pe(e){q.value=e}async function me(){J.value=!0;try{let e=C.editableClientModel?W.value.trim():C.entry.clientModel;if(!e)return;let t=JSON.stringify({targets:K.value,...q.value?.backend_model?{multimodal_fallback:q.value}:{}});C.entry.existingId?await y.updateMappingGroup(C.entry.existingId,{client_model:e,rule:t}):await y.createMappingGroup({client_model:e,rule:t}),G.value=!1,U(`saved`),N.success(v(`common.saveSuccess`))}catch(e){console.error(`mappingCard.save:`,e),N.error(t(e,v(`mappings.messages.saveFailed`)))}finally{J.value=!1}}function he(){C.editableClientModel?U(`cancel-add`):G.value=!1}async function ge(){try{C.entry.existingId&&await y.toggleMappingGroup(C.entry.existingId),U(`saved`)}catch(e){console.error(`mappingCard.toggle:`,e),N.error(t(e,v(`mappings.messages.toggleFailed`)))}}function $(){Y.value=!1,U(`deleted`,C.entry.clientModel)}let _e=s(()=>C.providerGroups);function ve(){q.value={provider_id:C.providerGroups[0]?.provider.id??``,backend_model:``}}function ye(e){q.value={provider_id:e.provider_id,backend_model:e.model}}return(t,n)=>(x(),u(c,null,[m(`div`,{class:f([`rounded-lg border transition-colors`,G.value?`border-primary/30 shadow-sm shadow-primary/5`:`border-border hover:border-border/80`])},[m(`div`,{class:f([`flex items-start gap-2 px-4 py-3`,{"cursor-pointer":!G.value}]),onClick:n[2]||=e=>!G.value&&(G.value=!0)},[m(`div`,ae,[_(T,{entry:X.value,"provider-groups":i.providerGroups,expanded:G.value,editable:!0,"editable-client-model":i.editableClientModel,"onUpdate:targets":Z,"onUpdate:clientModel":Q},null,8,[`entry`,`provider-groups`,`expanded`,`editable-client-model`])]),m(`div`,oe,[m(`div`,se,[i.entry.targets.length>1?(x(),u(`span`,ce,S(o(v)(`providers.shared.level`,{count:i.entry.targets.length})),1)):h(``,!0),i.entry.multimodalFallback?(x(),u(`span`,le,[_(o(P),{class:`w-2.5 h-2.5`})])):h(``,!0),i.editableClientModel?h(``,!0):(x(),p(o(b),{key:2,variant:`ghost`,size:`icon-xs`,class:`text-muted-foreground/40 hover:text-destructive`,onClick:n[0]||=a(e=>Y.value=!0,[`stop`])},{default:r(()=>[_(o(O),{class:`size-3`})]),_:1})),i.editableClientModel?h(``,!0):(x(),p(o(D),{key:3,"model-value":i.entry.active,"onUpdate:modelValue":ge,class:`scale-75`,onClick:n[1]||=a(()=>{},[`stop`])},null,8,[`model-value`]))])])],2),G.value?(x(),u(`div`,ue,[m(`div`,F,[_(o(P),{class:`w-3.5 h-3.5 text-muted-foreground/50`}),m(`span`,I,S(o(v)(`mappings.multimodalFallback.title`)),1),q.value?(x(),p(o(j),{key:0,variant:`outline`,class:`text-[10px] px-1.5 py-0 text-primary/60 border-primary/20`},{default:r(()=>[e(S(o(v)(`mappings.multimodalFallback.configured`)),1)]),_:1})):h(``,!0)]),q.value?(x(),u(`div`,L,[_(w,{providers:_e.value,"model-value":q.value?{provider_id:q.value.provider_id,model:q.value.backend_model}:void 0,placeholder:o(v)(`mappings.multimodalFallback.selectProviderModel`),compact:``,"onUpdate:modelValue":n[3]||=e=>ye(e)},null,8,[`providers`,`model-value`,`placeholder`]),_(o(b),{type:`button`,variant:`ghost`,size:`icon-xs`,class:`shrink-0 text-muted-foreground/40 hover:text-destructive`,onClick:n[4]||=e=>pe(void 0)},{default:r(()=>[_(o(O),{class:`size-3`})]),_:1})])):h(``,!0),q.value?(x(),u(`div`,R,[m(`div`,z,[_(o(A),{class:`w-3.5 h-3.5 shrink-0 mt-0.5 text-warning`}),m(`div`,B,[m(`p`,V,S(o(v)(`mappings.multimodalFallback.sessionLockWarning`)),1),m(`p`,H,S(o(v)(`mappings.multimodalFallback.sessionLockReason`)),1),m(`p`,de,S(o(v)(`mappings.multimodalFallback.costSuggestion`)),1)])])])):(x(),p(o(b),{key:2,type:`button`,variant:`ghost`,size:`sm`,class:`text-xs text-muted-foreground/50`,onClick:ve},{default:r(()=>[_(o(E),{class:`w-3 h-3 mr-1`}),e(` `+S(o(v)(`mappings.multimodalFallback.add`)),1)]),_:1}))])):h(``,!0),G.value?(x(),u(`div`,fe,[_(o(b),{size:`sm`,variant:`outline`,onClick:he},{default:r(()=>[e(S(o(v)(`common.cancel`)),1)]),_:1}),_(o(b),{size:`sm`,disabled:J.value,onClick:me},{default:r(()=>[e(S(J.value?o(v)(`common.saving`):o(v)(`common.save`)),1)]),_:1},8,[`disabled`])])):h(``,!0)],2),_(o(ee),{open:Y.value,"onUpdate:open":n[5]||=e=>{e||(Y.value=!1)}},{default:r(()=>[_(o(M),null,{default:r(()=>[_(o(k),null,{default:r(()=>[_(o(te),null,{default:r(()=>[e(S(o(v)(`common.confirmDelete`)),1)]),_:1}),_(o(ie),null,{default:r(()=>[e(S(o(v)(`mappings.confirmDeleteDesc`,{model:i.entry.clientModel})),1)]),_:1})]),_:1}),_(o(re),null,{default:r(()=>[_(o(ne),null,{default:r(()=>[e(S(o(v)(`common.cancel`)),1)]),_:1}),_(o(b),{variant:`destructive`,onClick:$},{default:r(()=>[e(S(o(v)(`common.delete`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])],64))}}),W={class:`p-6 space-y-3`},G={class:`flex items-center justify-between`},K={class:`text-lg font-semibold text-foreground`},q={class:`flex gap-2 mt-1`},J={class:`text-[11px] px-2 py-0.5 rounded-full bg-muted/40 text-muted-foreground`},Y={class:`text-[11px] px-2 py-0.5 rounded-full bg-muted/40 text-muted-foreground`},X={class:`grid grid-cols-3 gap-3`},Z={key:0,class:`py-8 text-center text-xs text-muted-foreground`},Q=C({__name:`ModelMappings`,setup(n){let{t:i}=d(),a=l([]),f=l([]),C=l([]),w=l(!1),T=s(()=>C.value.filter(e=>e.active).length),D=s(()=>f.value.map(e=>({provider:{id:e.id,name:e.name},models:(e.models??[]).map(e=>({name:e.name,contextWindow:e.context_window??2e5,streamTimeoutMs:e.stream_timeout_ms??null}))}))),O=s(()=>({clientModel:``,targets:[{backend_model:``,provider_id:f.value[0]?.id??``}],existing:!1,tag:`cust`,active:!0}));function k(){return a.value.map(e=>{let n={};try{let t=JSON.parse(e.rule);n=t.default&&!t.targets?{targets:[t.default]}:t}catch(e){console.warn(`Failed to parse rule:`,e),N.error(t(e,i(`mappings.messages.parseRuleFailed`)))}let r=(n.targets??[]).map(e=>({backend_model:e.backend_model||``,provider_id:e.provider_id||``,overflow_provider_id:e.overflow_provider_id,overflow_model:e.overflow_model})),a=n.multimodal_fallback?{provider_id:n.multimodal_fallback.provider_id,backend_model:n.multimodal_fallback.backend_model}:void 0;return{clientModel:e.client_model,targets:r.length>0?r:[{backend_model:``,provider_id:f.value[0]?.id??``}],existing:!0,existingId:e.id,tag:`existing`,active:!!e.is_active,originalActive:!!e.is_active,multimodalFallback:a}})}async function A(){let e=await Promise.allSettled([y.getMappingGroups(),y.getProviders()]);e[0].status===`fulfilled`&&(a.value=e[0].value),e[1].status===`fulfilled`&&(f.value=e[1].value),C.value=k()}function j(){w.value=!1,A()}async function M(e){let n=C.value.find(t=>t.clientModel===e);if(n?.existingId)try{await y.deleteMappingGroup(n.existingId),await A(),N.success(i(`common.saveSuccess`))}catch(n){console.error(`modelMappings.deleteAndSave:`,n),N.error(t(n,i(`mappings.messages.deleteFailed`,{model:e})))}}return g(A),(t,n)=>(x(),u(`div`,W,[m(`div`,G,[m(`div`,null,[m(`h2`,K,S(o(i)(`mappings.title`)),1),m(`div`,q,[m(`span`,J,S(o(i)(`mappings.totalMappings`,{count:C.value.length})),1),m(`span`,Y,S(o(i)(`mappings.enabledCount`,{count:T.value})),1)])]),w.value?h(``,!0):(x(),p(o(b),{key:0,size:`sm`,variant:`outline`,onClick:n[0]||=e=>w.value=!0},{default:r(()=>[_(o(E),{class:`w-3.5 h-3.5 mr-1`}),e(` `+S(o(i)(`providers.shared.add`)),1)]),_:1}))]),m(`div`,X,[(x(!0),u(c,null,v(C.value,e=>(x(),p(U,{key:e.clientModel,entry:e,"provider-groups":D.value,onSaved:A,onDeleted:M},null,8,[`entry`,`provider-groups`]))),128)),w.value?(x(),p(U,{key:0,entry:O.value,"provider-groups":D.value,"editable-client-model":!0,"default-expanded":!0,onSaved:j,onCancelAdd:n[1]||=e=>w.value=!1},null,8,[`entry`,`provider-groups`])):h(``,!0)]),C.value.length===0&&!w.value?(x(),u(`p`,Z,S(o(i)(`providers.shared.noMappings`)),1)):h(``,!0)]))}});export{Q as default};
@@ -0,0 +1 @@
1
+ import{$ as e,A as t,At as n,Ct as r,Et as i,G as a,Ht as o,It as s,J as c,K as l,Kt as u,Pt as d,Q as f,R as p,Vt as m,Wt as h,X as g,Y as _,Z as v,dt as y,et as b,ft as ee,ht as x,k as S,n as C,pt as w,qt as T,tt as E}from"./button-DZwflOXO.js";import{n as D,t as O}from"./UnifiedRequestDialog-5-vBmVMH.js";import{t as k}from"./copy-zQQvOqam.js";import{i as A,n as j,r as M,t as N}from"./TooltipTrigger-DmYucHtv.js";import{c as P,d as te,f as ne,l as re,s as F,u as I}from"./dialog-C7v6Gaak.js";import{_t as L,a as ie,b as R,c as ae,d as oe,dt as se,i as ce,it as le,l as ue,o as de,r as fe,s as pe,u as me}from"./index-PMAQyWJb.js";import{n as z,t as B}from"./CardContent-yiYaxAko.js";import{n as V,t as H}from"./CardTitle-CzqSlrtn.js";import{t as he}from"./useClipboard-B4K3eogm.js";var ge={class:`grid grid-cols-2 lg:grid-cols-4 gap-4 mb-6`},U={class:`text-sm text-muted-foreground`},W={class:`text-2xl font-bold text-foreground mt-1`},_e={class:`text-xs text-muted-foreground mt-1`},ve={class:`text-sm text-muted-foreground`},G={class:`text-2xl font-bold text-foreground mt-1`},ye={class:`text-xs text-muted-foreground mt-1`},be={class:`text-sm text-muted-foreground`},xe={class:`text-2xl font-bold text-foreground mt-1`},Se={class:`text-xs text-muted-foreground mt-1`},K={class:`text-sm text-muted-foreground`},q={class:`text-2xl font-bold text-foreground mt-1`},J={class:`text-xs text-muted-foreground mt-1`},Ce=E({__name:`MonitorHeader`,props:{stats:{},activeCount:{},streamCount:{}},setup(e){let{t}=p(),n=e,r=c(()=>!n.stats||n.stats.totalRequests===0?`0.0`:(n.stats.errorCount/n.stats.totalRequests*100).toFixed(1)),a=c(()=>!n.stats||n.stats.totalRequests===0?`0.0`:(n.stats.retryCount/n.stats.totalRequests*100).toFixed(1)),s=c(()=>n.stats?n.stats.p50LatencyMs.toFixed(0):`--`);return(n,c)=>(w(),f(`div`,ge,[b(o(z),null,{default:i(()=>[b(o(B),{class:`p-4`},{default:i(()=>[_(`p`,U,T(o(t)(`monitor.header.activeRequests`)),1),_(`p`,W,T(e.activeCount),1),_(`p`,_e,T(o(t)(`monitor.header.streamNonStream`,{stream:e.streamCount,nonStream:e.activeCount-e.streamCount})),1)]),_:1})]),_:1}),b(o(z),null,{default:i(()=>[b(o(B),{class:`p-4`},{default:i(()=>[_(`p`,ve,T(o(t)(`monitor.header.errorRate`)),1),_(`p`,G,T(r.value)+`%`,1),_(`p`,ye,T(e.stats?.errorCount??0)+` / `+T(e.stats?.totalRequests??0),1)]),_:1})]),_:1}),b(o(z),null,{default:i(()=>[b(o(B),{class:`p-4`},{default:i(()=>[_(`p`,be,T(o(t)(`monitor.header.p50Latency`)),1),_(`p`,xe,T(s.value)+`ms`,1),_(`p`,Se,T(o(t)(`monitor.header.avgLatency`,{value:e.stats?.avgLatencyMs?.toFixed(0)??`--`})),1)]),_:1})]),_:1}),b(o(z),null,{default:i(()=>[b(o(B),{class:`p-4`},{default:i(()=>[_(`p`,K,T(o(t)(`monitor.header.retryRate`)),1),_(`p`,q,T(a.value)+`%`,1),_(`p`,J,T(e.stats?.retryCount??0)+` / `+T(e.stats?.totalRequests??0),1)]),_:1})]),_:1})]))}}),Y={class:`space-y-3`},X={key:0,class:`text-sm text-muted-foreground`},we={class:`flex items-center justify-between text-sm`},Te={class:`font-medium text-foreground`},Z={class:`text-muted-foreground`},Q={class:`text-xs`},Ee={key:0,class:`h-2 bg-muted rounded-full overflow-hidden`},$={key:1,class:`flex gap-3 text-xs text-muted-foreground`},De=E({__name:`ConcurrencyPanel`,props:{providers:{}},setup(t){let{t:n}=p();function r(e){return e.adaptiveLimit??e.maxConcurrency}function i(e,t){let n=e/t;return n>=1?`bg-red-500`:n>=.8?`bg-orange-500`:n>=.5?`bg-yellow-500`:`bg-green-500`}return(a,s)=>(w(),f(`div`,Y,[t.providers.length===0?(w(),f(`div`,X,T(o(n)(`monitor.concurrencyPanel.noData`)),1)):v(``,!0),(w(!0),f(l,null,x(t.providers,t=>(w(),f(`div`,{key:t.providerId,class:`space-y-1`},[_(`div`,we,[_(`span`,Te,T(t.providerName),1),_(`span`,Z,[t.adaptiveEnabled?(w(),f(l,{key:0},[e(T(t.active)+` / `+T(t.adaptiveLimit??t.maxConcurrency)+` `,1),_(`span`,Q,`(`+T(o(n)(`monitor.concurrencyPanel.adaptive`))+`)`,1)],64)):t.maxConcurrency===0?(w(),f(l,{key:1},[e(T(o(n)(`monitor.concurrencyPanel.unlimited`)),1)],64)):(w(),f(l,{key:2},[e(T(t.active)+` / `+T(t.maxConcurrency),1)],64))])]),t.maxConcurrency>0?(w(),f(`div`,Ee,[_(`div`,{class:h([`h-full rounded-full transition-all duration-300`,i(t.active,r(t))]),style:u({width:`${Math.min(100,t.active/r(t)*100)}%`})},null,6)])):v(``,!0),t.maxConcurrency>0?(w(),f(`div`,$,[_(`span`,null,T(o(n)(`monitor.concurrencyPanel.queued`,{count:t.queued})),1),_(`span`,null,T(o(n)(`monitor.concurrencyPanel.queueLimit`,{limit:t.adaptiveLimit??t.maxQueueSize})),1)])):v(``,!0)]))),128))]))}}),Oe={key:0,class:`text-sm text-muted-foreground`},ke={key:1,class:`grid grid-cols-2 gap-3 text-sm`},Ae={class:`text-muted-foreground`},je={class:`font-medium text-foreground`},Me={class:`text-muted-foreground`},Ne={class:`font-medium text-foreground`},Pe={class:`col-span-2`},Fe={class:`flex items-center justify-between`},Ie={class:`text-muted-foreground`},Le={class:`text-muted-foreground`},Re={class:`h-2 bg-muted rounded-full overflow-hidden mt-1`},ze={class:`text-muted-foreground`},Be={class:`font-medium text-foreground`},Ve={class:`text-muted-foreground`},He={class:`font-medium text-foreground`},Ue={class:`col-span-2`},We={class:`text-muted-foreground`},Ge={class:`font-medium text-foreground`},Ke=E({__name:`RuntimePanel`,props:{runtime:{}},setup(e){let{t}=p(),n=e,r=c(()=>!n.runtime||n.runtime.memoryUsage.heapTotal===0?0:Math.min(100,n.runtime.memoryUsage.heapUsed/n.runtime.memoryUsage.heapTotal*100));function i(e){let t=Math.floor(e/1e3);return`${Math.floor(t/3600)}h ${Math.floor(t%3600/60)}m ${t%60}s`}function a(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/(1024*1024)).toFixed(1)}MB`}return(n,s)=>e.runtime?(w(),f(`div`,ke,[_(`div`,null,[_(`p`,Ae,T(o(t)(`monitor.runtimePanel.uptime`)),1),_(`p`,je,T(i(e.runtime.uptimeMs)),1)]),_(`div`,null,[_(`p`,Me,T(o(t)(`monitor.runtimePanel.memoryRss`)),1),_(`p`,Ne,T(a(e.runtime.memoryUsage.rss)),1)]),_(`div`,Pe,[_(`div`,Fe,[_(`p`,Ie,T(o(t)(`monitor.runtimePanel.heapUsage`)),1),_(`p`,Le,T(a(e.runtime.memoryUsage.heapUsed))+` / `+T(a(e.runtime.memoryUsage.heapTotal)),1)]),_(`div`,Re,[_(`div`,{class:`h-full bg-primary rounded-full transition-all duration-300`,style:u({width:`${r.value}%`})},null,4)])]),_(`div`,null,[_(`p`,ze,T(o(t)(`monitor.runtimePanel.activeHandles`)),1),_(`p`,Be,T(e.runtime.activeHandles),1)]),_(`div`,null,[_(`p`,Ve,T(o(t)(`monitor.runtimePanel.activeRequests`)),1),_(`p`,He,T(e.runtime.activeRequests),1)]),_(`div`,Ue,[_(`p`,We,T(o(t)(`monitor.runtimePanel.eventLoopDelay`)),1),_(`p`,Ge,T(e.runtime.eventLoopDelayMs.toFixed(2))+`ms`,1)])])):(w(),f(`div`,Oe,T(o(t)(`monitor.runtimePanel.noData`)),1))}}),qe={key:0,class:`text-sm text-muted-foreground`},Je={key:1,class:`space-y-2`},Ye={class:`flex items-center justify-between text-sm`},Xe={class:`text-muted-foreground`},Ze={class:`h-2 bg-muted rounded-full overflow-hidden`},Qe=E({__name:`StatusCodePanel`,props:{byStatusCode:{}},setup(e){let{t}=p(),n=e,r=c(()=>Object.values(n.byStatusCode).reduce((e,t)=>e+t,0)),i=c(()=>{let e=n.byStatusCode,i=r.value||1,o=a(e,200,299),s=a(e,400,499)-(e[429]||0),c=e[429]||0,l=a(e,500,599);return[{label:t(`monitor.statusCodes.success`),count:o,percent:(o/i*100).toFixed(1),textClass:`text-green-600 dark:text-green-400`,barClass:`bg-green-500`},{label:t(`monitor.statusCodes.clientError`),count:s,percent:(s/i*100).toFixed(1),textClass:`text-yellow-600 dark:text-yellow-400`,barClass:`bg-yellow-500`},{label:t(`monitor.statusCodes.rateLimited`),count:c,percent:(c/i*100).toFixed(1),textClass:`text-orange-600 dark:text-orange-400`,barClass:`bg-orange-500`},{label:t(`monitor.statusCodes.serverError`),count:l,percent:(l/i*100).toFixed(1),textClass:`text-red-600 dark:text-red-400`,barClass:`bg-red-500`}].filter(e=>e.count>0)});function a(e,t,n){let r=0;for(let[i,a]of Object.entries(e)){let e=Number(i);e>=t&&e<=n&&(r+=a)}return r}return(e,n)=>r.value===0?(w(),f(`div`,qe,T(o(t)(`monitor.statusCodes.noData`)),1)):(w(),f(`div`,Je,[(w(!0),f(l,null,x(i.value,e=>(w(),f(`div`,{key:e.label,class:`space-y-1`},[_(`div`,Ye,[_(`span`,{class:h(e.textClass)},T(e.label),3),_(`span`,Xe,T(e.count)+` (`+T(e.percent)+`%) `,1)]),_(`div`,Ze,[_(`div`,{class:h([`h-full rounded-full transition-all duration-300`,e.barClass]),style:u({width:`${e.percent}%`})},null,6)])]))),128))]))}}),$e={key:0,class:`text-sm text-muted-foreground py-4 text-center`},et={key:1,class:`text-sm text-muted-foreground py-4 text-center`},tt={class:`flex flex-wrap gap-1`},nt={key:0,class:`text-xs text-muted-foreground`},rt=E({__name:`ProviderStatsTable`,props:{stats:{}},setup(t){let{t:n}=p(),r=t,a=c(()=>r.stats?Object.entries(r.stats.byProvider).filter(([e])=>typeof e==`string`).map(([e,t])=>({id:e,name:t.providerName,stats:t,successRate:t.totalRequests>0?t.successCount/t.totalRequests*100:0,retryRate:t.totalRequests>0?t.retryCount/t.totalRequests*100:0})):[]);return(r,s)=>t.stats?a.value.length===0?(w(),f(`div`,et,T(o(n)(`monitor.providerTable.noProviders`)),1)):(w(),g(o(ne),{key:2},{default:i(()=>[b(o(F),null,{default:i(()=>[b(o(re),null,{default:i(()=>[b(o(P),null,{default:i(()=>[...s[0]||=[e(`Provider`,-1)]]),_:1}),b(o(P),{class:`text-right`},{default:i(()=>[e(T(o(n)(`monitor.providerTable.requests`)),1)]),_:1}),b(o(P),{class:`text-right`},{default:i(()=>[e(T(o(n)(`monitor.providerTable.successRate`)),1)]),_:1}),b(o(P),{class:`text-right`},{default:i(()=>[e(T(o(n)(`monitor.providerTable.avgLatency`)),1)]),_:1}),b(o(P),{class:`text-right`},{default:i(()=>[e(T(o(n)(`monitor.providerTable.retryRate`)),1)]),_:1}),b(o(P),null,{default:i(()=>[e(T(o(n)(`monitor.providerTable.topErrors`)),1)]),_:1})]),_:1})]),_:1}),b(o(te),null,{default:i(()=>[(w(!0),f(l,null,x(a.value,t=>(w(),g(o(re),{key:t.id},{default:i(()=>[b(o(I),{class:`font-medium`},{default:i(()=>[e(T(t.name),1)]),_:2},1024),b(o(I),{class:`text-right`},{default:i(()=>[e(T(t.stats.totalRequests),1)]),_:2},1024),b(o(I),{class:`text-right`},{default:i(()=>[_(`span`,{class:h(t.successRate>=95?`text-green-600 dark:text-green-400`:t.successRate>=80?`text-yellow-600 dark:text-yellow-400`:`text-red-500 dark:text-red-400`)},T(t.successRate.toFixed(1))+`% `,3)]),_:2},1024),b(o(I),{class:`text-right`},{default:i(()=>[e(T(t.stats.avgLatencyMs.toFixed(0))+`ms`,1)]),_:2},1024),b(o(I),{class:`text-right`},{default:i(()=>[_(`span`,{class:h(t.retryRate>10?`text-yellow-600 dark:text-yellow-400`:``)},T(t.retryRate.toFixed(1))+`% `,3)]),_:2},1024),b(o(I),null,{default:i(()=>[_(`div`,tt,[(w(!0),f(l,null,x(t.stats.topErrors.slice(0,3),t=>(w(),g(o(R),{key:t.code,variant:`destructive`,class:`text-xs`},{default:i(()=>[e(T(t.code)+` (`+T(t.count)+`) `,1)]),_:2},1024))),128)),t.stats.topErrors.length===0?(w(),f(`span`,nt,`--`)):v(``,!0)])]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})):(w(),f(`div`,$e,T(o(n)(`monitor.providerTable.noData`)),1))}}),it=3e4;function at(e,t,n){let r=null,i=null,a=0,o=null,s=!1;function c(){document.hidden?o=setTimeout(()=>{u(),n?.onClose?.()},it):(o&&=(clearTimeout(o),null),r||l())}function l(){if(!r){r=new EventSource(e),r.onopen=()=>{a=0,n?.onOpen?.(),!s&&typeof document<`u`&&(document.addEventListener(`visibilitychange`,c),s=!0)};for(let[e,n]of Object.entries(t))r.addEventListener(e,n);r.onerror=()=>{u(),n?.onClose?.();let e=Math.min(3e3*2**a,3e4);a++,i=setTimeout(l,e)}}}function u(){i&&=(clearTimeout(i),null),o&&=(clearTimeout(o),null),r&&=(r.close(),null)}return ee(()=>{u(),s&&typeof document<`u`&&(document.removeEventListener(`visibilitychange`,c),s=!1),n?.onClose?.()}),{connect:l,disconnect:u}}var ot=200;function st(){let e=s([]),t=d([]),n=d(null),i=d([]),a=d(null),o=d(!1),l=c(()=>e.value.filter(e=>e.isStream).length),u=c(()=>e.value.filter(e=>!e.queued)),f=c(()=>e.value.filter(e=>e.queued===!0));function p(r){let o;try{o=JSON.parse(r.data)}catch{return}switch(r.type){case`request_start`:{let n=o;t.value.some(e=>e.id===n.id)||e.value.unshift(n);break}case`request_update`:e.value=o;break;case`request_complete`:{let n=o;e.value=e.value.filter(e=>e.id!==n.id),t.value.unshift(n),t.value.length>ot&&(t.value.length=ot);break}case`concurrency_update`:i.value=o;break;case`stats_update`:n.value=o;break;case`stream_content_update`:{let t=o;for(let n of t){let t=e.value.find(e=>e.id===n.id);t&&(t.streamTotalChars=n.totalChars,n.streamMetrics&&(t.streamMetrics=n.streamMetrics))}m(e);break}case`runtime_update`:a.value=o;break}}function h(){o.value=!0}function g(){o.value=!1}async function _(){try{let[r,o,s,c,l]=await Promise.allSettled([S.getMonitorActive(),S.getMonitorRecent(),S.getMonitorStats(),S.getMonitorConcurrency(),S.getMonitorRuntime()]);r.status===`fulfilled`&&(e.value=r.value),o.status===`fulfilled`&&(t.value=o.value),s.status===`fulfilled`&&(n.value=s.value),c.status===`fulfilled`&&(i.value=c.value),l.status===`fulfilled`&&(a.value=l.value)}catch(e){console.error(`Failed to load initial monitor data:`,e),n.value=null,i.value=[],a.value=null}}let v=d(null),y=d(!1),b=d(0);async function x(n){let r=++b.value,i=e.value.find(e=>e.id===n)??t.value.find(e=>e.id===n);if(!i){v.value=null;return}v.value=null,y.value=!0;try{if(i.status===`pending`){try{let e=await S.getMonitorRequest(n);if(r!==b.value)return;v.value={clientRequest:e.clientRequest??void 0,upstreamRequest:e.upstreamRequest??void 0}}catch(e){if(e?.response?.status!==404)throw e;if(r!==b.value)return;let t=await S.getLogDetail(n);if(r!==b.value)return;v.value=t.client_request?{clientRequest:t.client_request}:null}return}let e=await S.getLogDetail(n);if(r!==b.value)return;let t;if(!i.isStream){let n=e.upstream_response;if(n)try{let e=JSON.parse(n);t=(typeof e.body==`string`?e.body:n)??void 0}catch{t=n}}v.value={responseBody:t,clientRequest:e.client_request??void 0,upstreamRequest:e.upstream_request??void 0}}catch(e){if(r!==b.value)return;console.warn(`Failed to load log detail:`,e),v.value=null}finally{r===b.value&&(y.value=!1)}}let C=d(null),w=d(!1),T=d(null),E=null;function D(t){if(O(),!t)return;let n=async()=>{let n=e.value.find(e=>e.id===t);if(!n||n.status===`completed`||n.status===`failed`){O();return}try{let e=await S.getMonitorRequest(t);if(C.value!==t)return;e.streamContent&&(T.value=e.streamContent)}catch(e){e?.response?.status===404&&O()}};n(),E=setInterval(n,500)}function O(){E&&=(clearInterval(E),null)}function k(e){C.value=e,w.value=!0,T.value=null;let n=t.value.find(t=>t.id===e);n&&(n.status===`completed`||n.status===`failed`)&&(n.streamContent?T.value=n.streamContent:A(e)),D(e),x(e)}async function A(e){try{let t=await S.getMonitorRequest(e);if(C.value!==e)return;t.streamContent&&(T.value=t.streamContent)}catch(e){console.error(`loadCompletedStreamContent:`,e)}}let j=c(()=>C.value?e.value.find(e=>e.id===C.value)??t.value.find(e=>e.id===C.value)??null:null);return r(()=>j.value?.status,(e,t)=>{t===`pending`&&(e===`completed`||e===`failed`)&&(O(),x(C.value))}),ee(()=>{O()}),{activeRequests:e,recentCompleted:t,stats:n,concurrency:i,runtime:a,connected:o,streamCount:l,streamingRequests:u,queuedRequests:f,selectedRequestId:C,selectedRequest:j,requestDetailOpen:w,selectRequest:k,selectedStreamContent:T,logDetailData:v,nonStreamBodyLoading:y,handleSSEMessage:p,handleSSEOpen:h,handleSSEClose:g,loadInitialData:_}}function ct(e){switch(e){case`pending`:return`default`;case`failed`:return`destructive`;case`completed`:return`secondary`;default:return`outline`}}function lt(e){let{t}=L.global;switch(e){case`pending`:return t(`common.statusPending`);case`failed`:return t(`common.statusFailed`);case`completed`:return t(`common.statusCompleted`);default:return e}}var ut={class:`p-6`},dt={class:`flex items-center justify-between mb-4`},ft={class:`text-lg font-semibold text-foreground`},pt={class:`flex items-center gap-2`},mt={class:`grid grid-cols-3 gap-4 mb-6`},ht={class:`flex items-center justify-between`},gt={key:0,class:`text-sm text-muted-foreground py-2`},_t=[`onClick`],vt={class:`text-sm text-foreground truncate flex-1`},yt={class:`text-xs text-muted-foreground shrink-0`},bt={key:0,class:`text-xs text-muted-foreground shrink-0`},xt={key:1,class:`text-xs text-muted-foreground shrink-0`},St={class:`flex items-center justify-between`},Ct={key:0,class:`text-sm text-muted-foreground py-2`},wt=[`onClick`],Tt={class:`text-sm text-foreground truncate flex-1`},Et={class:`text-xs text-muted-foreground shrink-0`},Dt={class:`flex items-center justify-between`},Ot={key:0,class:`text-sm text-muted-foreground py-2`},kt=[`onClick`],At={class:`text-sm text-foreground truncate flex-1`},jt={class:`text-xs text-muted-foreground shrink-0`},Mt={class:`grid grid-cols-1 lg:grid-cols-3 gap-4`},Nt=1e3,Pt=3e3,Ft=E({__name:`Monitor`,setup(r){let{t:s}=p(),{activeRequests:u,recentCompleted:m,stats:E,concurrency:P,runtime:te,connected:ne,streamCount:re,streamingRequests:F,queuedRequests:I,selectedRequestId:L,selectedRequest:ge,requestDetailOpen:U,selectRequest:W,selectedStreamContent:_e,logDetailData:ve,handleSSEMessage:G,handleSSEOpen:ye,handleSSEClose:be,loadInitialData:xe}=st(),{connect:Se}=at(`/admin/api/monitor/stream`,{request_start:G,request_update:G,request_complete:G,concurrency_update:G,stats_update:G,runtime_update:G,stream_content_update:G},{onOpen:ye,onClose:be}),{copied:K,copy:q}=he(),J=d(!1),Y=d(null),X=c(()=>Y.value?u.value.find(e=>e.id===Y.value)??null:null);function we(e){Y.value=e,J.value=!0}async function Te(){if(Y.value){try{await S.killMonitorRequest(Y.value),u.value=u.value.filter(e=>e.id!==Y.value),fe.success(s(`monitor.killSuccess`))}catch(e){console.error(`Monitor.killRequest:`,e),fe.error(t(e,s(`monitor.killFailed`)))}J.value=!1}}let Z=d(Date.now()),Q=null;function Ee(){$(),Q=setInterval(()=>{Z.value=Date.now()},Pt)}function $(){Q&&=(clearInterval(Q),null)}function Oe(){document.hidden?$():(Z.value=Date.now(),Ee())}function ke(e){return((Z.value-e)/Nt).toFixed(1)}function Ae(e){return e.completedAt?((e.completedAt-e.startTime)/Nt).toFixed(1)+`s`:`--`}return y(async()=>{await xe(),Se(),Ee(),document.addEventListener(`visibilitychange`,Oe)}),ee(()=>{$(),document.removeEventListener(`visibilitychange`,Oe)}),(t,r)=>(w(),f(`div`,ut,[_(`div`,dt,[_(`h2`,ft,T(o(s)(`monitor.title`)),1),_(`div`,pt,[b(o(R),{variant:o(ne)?`default`:`destructive`},{default:i(()=>[e(T(o(ne)?o(s)(`monitor.connected`):o(s)(`monitor.disconnected`)),1)]),_:1},8,[`variant`])])]),b(Ce,{stats:o(E),"active-count":o(u).length,"stream-count":o(re)},null,8,[`stats`,`active-count`,`stream-count`]),_(`div`,mt,[b(o(z),null,{default:i(()=>[b(o(V),{class:`pb-2`},{default:i(()=>[_(`div`,ht,[b(o(H),{class:`text-sm font-medium text-foreground`},{default:i(()=>[e(T(o(s)(`monitor.activeRequests`)),1)]),_:1}),b(o(R),{variant:`secondary`},{default:i(()=>[e(T(o(F).length),1)]),_:1})])]),_:1}),b(o(B),null,{default:i(()=>[b(o(j),{"delay-duration":300},{default:i(()=>[b(o(D),{class:`h-64`},{default:i(()=>[o(F).length===0?(w(),f(`div`,gt,T(o(s)(`monitor.noActiveRequests`)),1)):v(``,!0),(w(!0),f(l,null,x(o(F),t=>(w(),f(`div`,{key:t.id,class:h([`flex items-center gap-2 py-2 px-2 rounded cursor-pointer hover:bg-muted/50 transition-colors`,{"bg-muted":o(L)===t.id}]),onClick:e=>o(W)(t.id)},[b(o(R),{variant:o(ct)(t.status),class:`shrink-0`},{default:i(()=>[e(T(o(lt)(t.status)),1)]),_:2},1032,[`variant`]),_(`span`,vt,T(t.model),1),b(o(R),{variant:`outline`,class:`shrink-0 text-xs`},{default:i(()=>[e(T(t.providerName),1)]),_:2},1024),_(`span`,yt,T(ke(t.startTime))+`s`,1),t.streamMetrics?.tokensPerSecond?(w(),f(`span`,bt,T(t.streamMetrics.tokensPerSecond.toFixed(0))+` t/s `,1)):v(``,!0),t.streamMetrics?.outputTokens?(w(),f(`span`,xt,T(t.streamMetrics.outputTokens)+` tok `,1)):v(``,!0),t.isStream?(w(),g(o(R),{key:2,variant:`outline`,class:`shrink-0 text-xs`},{default:i(()=>[...r[2]||=[e(`SSE`,-1)]]),_:1})):v(``,!0),b(o(A),null,{default:i(()=>[b(o(N),{"as-child":``},{default:i(()=>[b(o(C),{variant:`ghost`,size:`icon-xs`,class:`shrink-0`,onClick:a(e=>o(q)(t.id),[`stop`])},{default:i(()=>[o(K)?(w(),g(o(se),{key:0,class:`size-3 text-success`})):(w(),g(o(k),{key:1,class:`size-3`}))]),_:1},8,[`onClick`])]),_:2},1024),b(o(M),null,{default:i(()=>[e(T(o(s)(`monitor.copyId`)),1)]),_:1})]),_:2},1024),b(o(A),null,{default:i(()=>[b(o(N),{"as-child":``},{default:i(()=>[b(o(C),{variant:`ghost`,size:`icon-xs`,class:`shrink-0 text-destructive hover:text-destructive`,onClick:a(e=>we(t.id),[`stop`])},{default:i(()=>[b(o(le),{class:`size-3`})]),_:1},8,[`onClick`])]),_:2},1024),b(o(M),null,{default:i(()=>[e(T(o(s)(`monitor.kill`)),1)]),_:1})]),_:2},1024)],10,_t))),128))]),_:1})]),_:1})]),_:1})]),_:1}),b(o(z),null,{default:i(()=>[b(o(V),{class:`pb-2`},{default:i(()=>[_(`div`,St,[b(o(H),{class:`text-sm font-medium text-foreground`},{default:i(()=>[e(T(o(s)(`monitor.queuedRequests`)),1)]),_:1}),b(o(R),{variant:`secondary`},{default:i(()=>[e(T(o(I).length),1)]),_:1})])]),_:1}),b(o(B),null,{default:i(()=>[b(o(j),{"delay-duration":300},{default:i(()=>[b(o(D),{class:`h-64`},{default:i(()=>[o(I).length===0?(w(),f(`div`,Ct,T(o(s)(`monitor.noQueuedRequests`)),1)):v(``,!0),(w(!0),f(l,null,x(o(I),t=>(w(),f(`div`,{key:t.id,class:h([`flex items-center gap-2 py-2 px-2 rounded cursor-pointer hover:bg-muted/50 transition-colors`,{"bg-muted":o(L)===t.id}]),onClick:e=>o(W)(t.id)},[b(o(R),{variant:`outline`,class:`shrink-0`},{default:i(()=>[e(T(o(s)(`monitor.queued`)),1)]),_:1}),_(`span`,Tt,T(t.model),1),b(o(R),{variant:`outline`,class:`shrink-0 text-xs`},{default:i(()=>[e(T(t.providerName),1)]),_:2},1024),_(`span`,Et,T(ke(t.startTime))+`s`,1),b(o(A),null,{default:i(()=>[b(o(N),{"as-child":``},{default:i(()=>[b(o(C),{variant:`ghost`,size:`icon-xs`,class:`shrink-0`,onClick:a(e=>o(q)(t.id),[`stop`])},{default:i(()=>[o(K)?(w(),g(o(se),{key:0,class:`size-3 text-success`})):(w(),g(o(k),{key:1,class:`size-3`}))]),_:1},8,[`onClick`])]),_:2},1024),b(o(M),null,{default:i(()=>[e(T(o(s)(`monitor.copyId`)),1)]),_:1})]),_:2},1024),b(o(A),null,{default:i(()=>[b(o(N),{"as-child":``},{default:i(()=>[b(o(C),{variant:`ghost`,size:`icon-xs`,class:`shrink-0 text-destructive hover:text-destructive`,onClick:a(e=>we(t.id),[`stop`])},{default:i(()=>[b(o(le),{class:`size-3`})]),_:1},8,[`onClick`])]),_:2},1024),b(o(M),null,{default:i(()=>[e(T(o(s)(`monitor.kill`)),1)]),_:1})]),_:2},1024)],10,wt))),128))]),_:1})]),_:1})]),_:1})]),_:1}),b(o(z),null,{default:i(()=>[b(o(V),{class:`pb-2`},{default:i(()=>[_(`div`,Dt,[b(o(H),{class:`text-sm font-medium text-foreground`},{default:i(()=>[e(T(o(s)(`monitor.completed`)),1)]),_:1}),b(o(R),{variant:`secondary`},{default:i(()=>[e(T(o(m).length),1)]),_:1})])]),_:1}),b(o(B),null,{default:i(()=>[b(o(j),{"delay-duration":300},{default:i(()=>[b(o(D),{class:`h-64`},{default:i(()=>[o(m).length===0?(w(),f(`div`,Ot,T(o(s)(`monitor.noCompletedRequests`)),1)):v(``,!0),(w(!0),f(l,null,x(o(m),t=>(w(),f(`div`,{key:t.id,class:h([`flex items-center gap-2 py-1.5 px-2 rounded cursor-pointer opacity-60 hover:opacity-80 hover:bg-muted/50 transition-colors`,{"bg-muted":o(L)===t.id}]),onClick:e=>o(W)(t.id)},[b(o(R),{variant:o(ct)(t.status),class:`shrink-0`},{default:i(()=>[e(T(o(lt)(t.status)),1)]),_:2},1032,[`variant`]),_(`span`,At,T(t.model),1),b(o(R),{variant:`outline`,class:`shrink-0 text-xs`},{default:i(()=>[e(T(t.providerName),1)]),_:2},1024),t.isStream?(w(),g(o(R),{key:0,variant:`outline`,class:`shrink-0 text-xs`},{default:i(()=>[...r[3]||=[e(`SSE`,-1)]]),_:1})):v(``,!0),_(`span`,jt,T(Ae(t)),1),b(o(A),null,{default:i(()=>[b(o(N),{"as-child":``},{default:i(()=>[b(o(C),{variant:`ghost`,size:`icon-xs`,class:`shrink-0`,onClick:a(e=>o(q)(t.id),[`stop`])},{default:i(()=>[o(K)?(w(),g(o(se),{key:0,class:`size-3 text-success`})):(w(),g(o(k),{key:1,class:`size-3`}))]),_:1},8,[`onClick`])]),_:2},1024),b(o(M),null,{default:i(()=>[e(T(o(s)(`monitor.copyId`)),1)]),_:1})]),_:2},1024)],10,kt))),128))]),_:1})]),_:1})]),_:1})]),_:1})]),b(o(z),{class:`mb-4`},{default:i(()=>[b(o(V),null,{default:i(()=>[b(o(H),{class:`text-sm font-medium text-foreground`},{default:i(()=>[e(T(o(s)(`monitor.providerStats`)),1)]),_:1})]),_:1}),b(o(B),null,{default:i(()=>[b(rt,{stats:o(E)},null,8,[`stats`])]),_:1})]),_:1}),_(`div`,Mt,[b(o(z),null,{default:i(()=>[b(o(V),null,{default:i(()=>[b(o(H),{class:`text-sm font-medium text-foreground`},{default:i(()=>[e(T(o(s)(`monitor.concurrency`)),1)]),_:1})]),_:1}),b(o(B),null,{default:i(()=>[b(De,{providers:o(P)},null,8,[`providers`])]),_:1})]),_:1}),b(o(z),null,{default:i(()=>[b(o(V),null,{default:i(()=>[b(o(H),{class:`text-sm font-medium text-foreground`},{default:i(()=>[e(T(o(s)(`monitor.statusCodeDistribution`)),1)]),_:1})]),_:1}),b(o(B),null,{default:i(()=>[b(Qe,{"by-status-code":o(E)?.byStatusCode??{}},null,8,[`by-status-code`])]),_:1})]),_:1}),b(o(z),null,{default:i(()=>[b(o(V),null,{default:i(()=>[b(o(H),{class:`text-sm font-medium text-foreground`},{default:i(()=>[e(T(o(s)(`monitor.runtime`)),1)]),_:1})]),_:1}),b(o(B),null,{default:i(()=>[b(Ke,{runtime:o(te)},null,8,[`runtime`])]),_:1})]),_:1})]),b(O,{open:o(U),"onUpdate:open":r[0]||=e=>n(U)?U.value=e:null,source:`realtime`,request:o(ge),"stream-content":o(_e),"log-detail-data":o(ve)},null,8,[`open`,`request`,`stream-content`,`log-detail-data`]),b(o(oe),{open:J.value,"onUpdate:open":r[1]||=e=>J.value=e},{default:i(()=>[b(o(ae),null,{default:i(()=>[b(o(ie),null,{default:i(()=>[b(o(ce),null,{default:i(()=>[e(T(o(s)(`monitor.killConfirmTitle`)),1)]),_:1}),X.value?(w(),g(o(pe),{key:0},{default:i(()=>[e(T(o(s)(`monitor.killConfirm`,{model:X.value.model,provider:X.value.providerName})),1)]),_:1})):v(``,!0)]),_:1}),b(o(de),null,{default:i(()=>[b(o(ue),null,{default:i(()=>[e(T(o(s)(`monitor.killCancel`)),1)]),_:1}),b(o(me),{class:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,onClick:Te},{default:i(()=>[e(T(o(s)(`monitor.kill`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{Ft as default};
@@ -0,0 +1 @@
1
+ import{$ as e,A as t,At as n,Et as r,F as i,G as a,Ht as o,J as s,K as c,M as l,Pt as u,Q as d,R as f,W as p,Wt as m,X as h,Y as g,Z as _,dt as ee,et as v,ht as y,k as b,n as x,pt as S,qt as C,tt as w,vt as te}from"./button-DZwflOXO.js";import{t as ne}from"./copy-zQQvOqam.js";import{a as re,i as T,t as ie}from"./ModelCard-DdQtySPM.js";import{a as ae,c as E,d as oe,f as se,l as ce,n as le,o as ue,r as de,s as fe,t as pe,u as D}from"./dialog-C7v6Gaak.js";import{t as O}from"./Label-CjUuzGNQ.js";import{a as me,b as he,c as ge,d as _e,dt as ve,f as ye,g as be,h as xe,i as Se,l as Ce,m as k,o as we,p as Te,r as A,s as Ee,u as De}from"./index-PMAQyWJb.js";import{t as j}from"./Input-DEfnoFS3.js";import{n as Oe,t as ke}from"./TransformRulesForm-Bo-zFABv.js";var Ae=i(`rotate-cw`,[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`,key:`1p45f6`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}]]),je=i(`shield`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]),Me={class:`border rounded-md p-3 space-y-3`},Ne={class:`flex items-center gap-3`},Pe={class:`text-xs font-medium text-muted-foreground whitespace-nowrap`},Fe={key:0,class:`grid grid-cols-4 gap-3`},Ie={class:`col-span-2`},Le=w({__name:`ProxyConfigForm`,props:{proxyType:{type:String,default:``},proxyUrl:{type:String,default:``},proxyUsername:{type:String,default:``},proxyPassword:{type:String,default:``}},emits:[`update:proxyType`,`update:proxyUrl`,`update:proxyUsername`,`update:proxyPassword`,`clear`],setup(t,{emit:n}){let i=n,{t:a}=f();function s(e){let t=typeof e==`string`?e:e==null?``:JSON.stringify(e),n=t===`none`?``:t;i(`update:proxyType`,n),n||i(`clear`)}return(n,c)=>(S(),d(`div`,Me,[g(`div`,Ne,[g(`span`,Pe,C(o(a)(`providers.fields.proxyTitle`)),1),v(o(be),{"model-value":t.proxyType||`none`,class:`w-32`,"onUpdate:modelValue":s},{default:r(()=>[v(o(Te),null,{default:r(()=>[v(o(ye))]),_:1}),v(o(xe),null,{default:r(()=>[v(o(k),{value:`none`},{default:r(()=>[e(C(o(a)(`providers.fields.proxyNoProxy`)),1)]),_:1}),v(o(k),{value:`http`},{default:r(()=>[e(C(o(a)(`providers.fields.proxyHttp`)),1)]),_:1}),v(o(k),{value:`socks5`},{default:r(()=>[e(C(o(a)(`providers.fields.proxySocks5`)),1)]),_:1})]),_:1})]),_:1},8,[`model-value`])]),t.proxyType?(S(),d(`div`,Fe,[g(`div`,Ie,[v(o(O),{class:`text-xs text-muted-foreground`},{default:r(()=>[e(C(o(a)(`providers.fields.proxyUrl`)),1)]),_:1}),v(o(j),{"model-value":t.proxyUrl,type:`text`,class:`mt-1 font-mono text-xs`,placeholder:t.proxyType===`socks5`?o(a)(`providers.fields.proxyUrlPlaceholderSocks5`):o(a)(`providers.fields.proxyUrlPlaceholderHttp`),"onUpdate:modelValue":c[0]||=e=>i(`update:proxyUrl`,e)},null,8,[`model-value`,`placeholder`])]),g(`div`,null,[v(o(O),{class:`text-xs text-muted-foreground`},{default:r(()=>[e(C(o(a)(`providers.fields.proxyUsername`)),1)]),_:1}),v(o(j),{"model-value":t.proxyUsername,type:`text`,class:`mt-1`,placeholder:o(a)(`providers.fields.proxyAuthOptional`),"onUpdate:modelValue":c[1]||=e=>i(`update:proxyUsername`,e)},null,8,[`model-value`,`placeholder`])]),g(`div`,null,[v(o(O),{class:`text-xs text-muted-foreground`},{default:r(()=>[e(C(o(a)(`providers.fields.proxyPassword`)),1)]),_:1}),v(o(j),{"model-value":t.proxyPassword,type:`password`,class:`mt-1`,placeholder:o(a)(`providers.fields.proxyAuthOptional`),"onUpdate:modelValue":c[2]||=e=>i(`update:proxyPassword`,e)},null,8,[`model-value`,`placeholder`])])])):_(``,!0)]))}}),M;(function(e){e.assertEqual=e=>{};function t(e){}e.assertIs=t;function n(e){throw Error()}e.assertNever=n,e.arrayToEnum=e=>{let t={};for(let n of e)t[n]=n;return t},e.getValidEnumValues=t=>{let n=e.objectKeys(t).filter(e=>typeof t[t[e]]!=`number`),r={};for(let e of n)r[e]=t[e];return e.objectValues(r)},e.objectValues=t=>e.objectKeys(t).map(function(e){return t[e]}),e.objectKeys=typeof Object.keys==`function`?e=>Object.keys(e):e=>{let t=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=(e,t)=>{for(let n of e)if(t(n))return n},e.isInteger=typeof Number.isInteger==`function`?e=>Number.isInteger(e):e=>typeof e==`number`&&Number.isFinite(e)&&Math.floor(e)===e;function r(e,t=` | `){return e.map(e=>typeof e==`string`?`'${e}'`:e).join(t)}e.joinValues=r,e.jsonStringifyReplacer=(e,t)=>typeof t==`bigint`?t.toString():t})(M||={});var Re;(function(e){e.mergeShapes=(e,t)=>({...e,...t})})(Re||={});var N=M.arrayToEnum([`string`,`nan`,`number`,`integer`,`float`,`boolean`,`date`,`bigint`,`symbol`,`function`,`undefined`,`null`,`array`,`object`,`unknown`,`promise`,`void`,`never`,`map`,`set`]),P=e=>{switch(typeof e){case`undefined`:return N.undefined;case`string`:return N.string;case`number`:return Number.isNaN(e)?N.nan:N.number;case`boolean`:return N.boolean;case`function`:return N.function;case`bigint`:return N.bigint;case`symbol`:return N.symbol;case`object`:return Array.isArray(e)?N.array:e===null?N.null:e.then&&typeof e.then==`function`&&e.catch&&typeof e.catch==`function`?N.promise:typeof Map<`u`&&e instanceof Map?N.map:typeof Set<`u`&&e instanceof Set?N.set:typeof Date<`u`&&e instanceof Date?N.date:N.object;default:return N.unknown}},F=M.arrayToEnum([`invalid_type`,`invalid_literal`,`custom`,`invalid_union`,`invalid_union_discriminator`,`invalid_enum_value`,`unrecognized_keys`,`invalid_arguments`,`invalid_return_type`,`invalid_date`,`invalid_string`,`too_small`,`too_big`,`invalid_intersection_types`,`not_multiple_of`,`not_finite`]),I=class e extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=`ZodError`,this.issues=e}format(e){let t=e||function(e){return e.message},n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`)i.unionErrors.map(r);else if(i.code===`invalid_return_type`)r(i.returnTypeError);else if(i.code===`invalid_arguments`)r(i.argumentsError);else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;r<i.path.length;){let n=i.path[r];r===i.path.length-1?(e[n]=e[n]||{_errors:[]},e[n]._errors.push(t(i))):e[n]=e[n]||{_errors:[]},e=e[n],r++}}};return r(this),n}static assert(t){if(!(t instanceof e))throw Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,M.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=e=>e.message){let t={},n=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}};I.create=e=>new I(e);var L=(e,t)=>{let n;switch(e.code){case F.invalid_type:n=e.received===N.undefined?`Required`:`Expected ${e.expected}, received ${e.received}`;break;case F.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,M.jsonStringifyReplacer)}`;break;case F.unrecognized_keys:n=`Unrecognized key(s) in object: ${M.joinValues(e.keys,`, `)}`;break;case F.invalid_union:n=`Invalid input`;break;case F.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${M.joinValues(e.options)}`;break;case F.invalid_enum_value:n=`Invalid enum value. Expected ${M.joinValues(e.options)}, received '${e.received}'`;break;case F.invalid_arguments:n=`Invalid function arguments`;break;case F.invalid_return_type:n=`Invalid function return type`;break;case F.invalid_date:n=`Invalid date`;break;case F.invalid_string:typeof e.validation==`object`?`includes`in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position==`number`&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):`startsWith`in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:`endsWith`in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:M.assertNever(e.validation):n=e.validation===`regex`?`Invalid`:`Invalid ${e.validation}`;break;case F.too_small:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at least`:`more than`} ${e.minimum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at least`:`over`} ${e.minimum} character(s)`:e.type===`number`||e.type===`bigint`?`Number must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${e.minimum}`:e.type===`date`?`Date must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${new Date(Number(e.minimum))}`:`Invalid input`;break;case F.too_big:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at most`:`less than`} ${e.maximum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at most`:`under`} ${e.maximum} character(s)`:e.type===`number`?`Number must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`bigint`?`BigInt must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`date`?`Date must be ${e.exact?`exactly`:e.inclusive?`smaller than or equal to`:`smaller than`} ${new Date(Number(e.maximum))}`:`Invalid input`;break;case F.custom:n=`Invalid input`;break;case F.invalid_intersection_types:n=`Intersection results could not be merged`;break;case F.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case F.not_finite:n=`Number must be finite`;break;default:n=t.defaultError,M.assertNever(e)}return{message:n}},ze=L;function Be(){return ze}var Ve=e=>{let{data:t,path:n,errorMaps:r,issueData:i}=e,a=[...n,...i.path||[]],o={...i,path:a};if(i.message!==void 0)return{...i,path:a,message:i.message};let s=``,c=r.filter(e=>!!e).slice().reverse();for(let e of c)s=e(o,{data:t,defaultError:s}).message;return{...i,path:a,message:s}};function R(e,t){let n=Be(),r=Ve({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===L?void 0:L].filter(e=>!!e)});e.common.issues.push(r)}var z=class e{constructor(){this.value=`valid`}dirty(){this.value===`valid`&&(this.value=`dirty`)}abort(){this.value!==`aborted`&&(this.value=`aborted`)}static mergeArray(e,t){let n=[];for(let r of t){if(r.status===`aborted`)return B;r.status===`dirty`&&e.dirty(),n.push(r.value)}return{status:e.value,value:n}}static async mergeObjectAsync(t,n){let r=[];for(let e of n){let t=await e.key,n=await e.value;r.push({key:t,value:n})}return e.mergeObjectSync(t,r)}static mergeObjectSync(e,t){let n={};for(let r of t){let{key:t,value:i}=r;if(t.status===`aborted`||i.status===`aborted`)return B;t.status===`dirty`&&e.dirty(),i.status===`dirty`&&e.dirty(),t.value!==`__proto__`&&(i.value!==void 0||r.alwaysSet)&&(n[t.value]=i.value)}return{status:e.value,value:n}}},B=Object.freeze({status:`aborted`}),He=e=>({status:`dirty`,value:e}),V=e=>({status:`valid`,value:e}),Ue=e=>e.status===`aborted`,We=e=>e.status===`dirty`,H=e=>e.status===`valid`,Ge=e=>typeof Promise<`u`&&e instanceof Promise,U;(function(e){e.errToObj=e=>typeof e==`string`?{message:e}:e||{},e.toString=e=>typeof e==`string`?e:e?.message})(U||={});var W=class{constructor(e,t,n,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=n,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},Ke=(e,t)=>{if(H(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw Error(`Validation failed but no issues detected.`);return{success:!1,get error(){if(this._error)return this._error;let t=new I(e.common.issues);return this._error=t,this._error}}};function G(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:i}:{errorMap:(t,i)=>{let{message:a}=e;return t.code===`invalid_enum_value`?{message:a??i.defaultError}:i.data===void 0?{message:a??r??i.defaultError}:t.code===`invalid_type`?{message:a??n??i.defaultError}:{message:i.defaultError}},description:i}}var K=class{get description(){return this._def.description}_getType(e){return P(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:P(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new z,ctx:{common:e.parent.common,data:e.data,parsedType:P(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(Ge(t))throw Error(`Synchronous parse encountered promise.`);return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){let n={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:P(e)};return Ke(n,this._parseSync({data:e,path:n.path,parent:n}))}"~validate"(e){let t={common:{issues:[],async:!!this[`~standard`].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:P(e)};if(!this[`~standard`].async)try{let n=this._parseSync({data:e,path:[],parent:t});return H(n)?{value:n.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes(`encountered`)&&(this[`~standard`].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>H(e)?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){let n={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:P(e)},r=this._parse({data:e,path:n.path,parent:n});return Ke(n,await(Ge(r)?r:Promise.resolve(r)))}refine(e,t){let n=e=>typeof t==`string`||t===void 0?{message:t}:typeof t==`function`?t(e):t;return this._refinement((t,r)=>{let i=e(t),a=()=>r.addIssue({code:F.custom,...n(t)});return typeof Promise<`u`&&i instanceof Promise?i.then(e=>e?!0:(a(),!1)):i?!0:(a(),!1)})}refinement(e,t){return this._refinement((n,r)=>e(n)?!0:(r.addIssue(typeof t==`function`?t(n,r):t),!1))}_refinement(e){return new Z({schema:this,typeName:$.ZodEffects,effect:{type:`refinement`,refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this[`~standard`]={version:1,vendor:`zod`,validate:e=>this[`~validate`](e)}}optional(){return Q.create(this,this._def)}nullable(){return Gt.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return kt.create(this)}promise(){return Wt.create(this,this._def)}or(e){return jt.create([this,e],this._def)}and(e){return Pt.create(this,e,this._def)}transform(e){return new Z({...G(this._def),schema:this,typeName:$.ZodEffects,effect:{type:`transform`,transform:e}})}default(e){let t=typeof e==`function`?e:()=>e;return new Kt({...G(this._def),innerType:this,defaultValue:t,typeName:$.ZodDefault})}brand(){return new Yt({typeName:$.ZodBranded,type:this,...G(this._def)})}catch(e){let t=typeof e==`function`?e:()=>e;return new qt({...G(this._def),innerType:this,catchValue:t,typeName:$.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return Xt.create(this,e)}readonly(){return Zt.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},qe=/^c[^\s-]{8,}$/i,Je=/^[0-9a-z]+$/,Ye=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Xe=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,Ze=/^[a-z0-9_-]{21}$/i,Qe=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,$e=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,et=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,tt=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,nt,rt=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,it=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,at=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,ot=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,st=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,ct=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,lt=`((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`,ut=RegExp(`^${lt}$`);function dt(e){let t=`[0-5]\\d`;e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision??(t=`${t}(\\.\\d+)?`);let n=e.precision?`+`:`?`;return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${n}`}function ft(e){return RegExp(`^${dt(e)}$`)}function pt(e){let t=`${lt}T${dt(e)}`,n=[];return n.push(e.local?`Z?`:`Z`),e.offset&&n.push(`([+-]\\d{2}:?\\d{2})`),t=`${t}(${n.join(`|`)})`,RegExp(`^${t}$`)}function mt(e,t){return!!((t===`v4`||!t)&&rt.test(e)||(t===`v6`||!t)&&at.test(e))}function ht(e,t){if(!Qe.test(e))return!1;try{let[n]=e.split(`.`);if(!n)return!1;let r=n.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(n.length+(4-n.length%4)%4,`=`),i=JSON.parse(atob(r));return!(typeof i!=`object`||!i||`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&i.alg!==t)}catch{return!1}}function gt(e,t){return!!((t===`v4`||!t)&&it.test(e)||(t===`v6`||!t)&&ot.test(e))}var _t=class e extends K{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==N.string){let t=this._getOrReturnCtx(e);return R(t,{code:F.invalid_type,expected:N.string,received:t.parsedType}),B}let t=new z,n;for(let r of this._def.checks)if(r.kind===`min`)e.data.length<r.value&&(n=this._getOrReturnCtx(e,n),R(n,{code:F.too_small,minimum:r.value,type:`string`,inclusive:!0,exact:!1,message:r.message}),t.dirty());else if(r.kind===`max`)e.data.length>r.value&&(n=this._getOrReturnCtx(e,n),R(n,{code:F.too_big,maximum:r.value,type:`string`,inclusive:!0,exact:!1,message:r.message}),t.dirty());else if(r.kind===`length`){let i=e.data.length>r.value,a=e.data.length<r.value;(i||a)&&(n=this._getOrReturnCtx(e,n),i?R(n,{code:F.too_big,maximum:r.value,type:`string`,inclusive:!0,exact:!0,message:r.message}):a&&R(n,{code:F.too_small,minimum:r.value,type:`string`,inclusive:!0,exact:!0,message:r.message}),t.dirty())}else if(r.kind===`email`)et.test(e.data)||(n=this._getOrReturnCtx(e,n),R(n,{validation:`email`,code:F.invalid_string,message:r.message}),t.dirty());else if(r.kind===`emoji`)nt||=new RegExp(tt,`u`),nt.test(e.data)||(n=this._getOrReturnCtx(e,n),R(n,{validation:`emoji`,code:F.invalid_string,message:r.message}),t.dirty());else if(r.kind===`uuid`)Xe.test(e.data)||(n=this._getOrReturnCtx(e,n),R(n,{validation:`uuid`,code:F.invalid_string,message:r.message}),t.dirty());else if(r.kind===`nanoid`)Ze.test(e.data)||(n=this._getOrReturnCtx(e,n),R(n,{validation:`nanoid`,code:F.invalid_string,message:r.message}),t.dirty());else if(r.kind===`cuid`)qe.test(e.data)||(n=this._getOrReturnCtx(e,n),R(n,{validation:`cuid`,code:F.invalid_string,message:r.message}),t.dirty());else if(r.kind===`cuid2`)Je.test(e.data)||(n=this._getOrReturnCtx(e,n),R(n,{validation:`cuid2`,code:F.invalid_string,message:r.message}),t.dirty());else if(r.kind===`ulid`)Ye.test(e.data)||(n=this._getOrReturnCtx(e,n),R(n,{validation:`ulid`,code:F.invalid_string,message:r.message}),t.dirty());else if(r.kind===`url`)try{new URL(e.data)}catch{n=this._getOrReturnCtx(e,n),R(n,{validation:`url`,code:F.invalid_string,message:r.message}),t.dirty()}else r.kind===`regex`?(r.regex.lastIndex=0,r.regex.test(e.data)||(n=this._getOrReturnCtx(e,n),R(n,{validation:`regex`,code:F.invalid_string,message:r.message}),t.dirty())):r.kind===`trim`?e.data=e.data.trim():r.kind===`includes`?e.data.includes(r.value,r.position)||(n=this._getOrReturnCtx(e,n),R(n,{code:F.invalid_string,validation:{includes:r.value,position:r.position},message:r.message}),t.dirty()):r.kind===`toLowerCase`?e.data=e.data.toLowerCase():r.kind===`toUpperCase`?e.data=e.data.toUpperCase():r.kind===`startsWith`?e.data.startsWith(r.value)||(n=this._getOrReturnCtx(e,n),R(n,{code:F.invalid_string,validation:{startsWith:r.value},message:r.message}),t.dirty()):r.kind===`endsWith`?e.data.endsWith(r.value)||(n=this._getOrReturnCtx(e,n),R(n,{code:F.invalid_string,validation:{endsWith:r.value},message:r.message}),t.dirty()):r.kind===`datetime`?pt(r).test(e.data)||(n=this._getOrReturnCtx(e,n),R(n,{code:F.invalid_string,validation:`datetime`,message:r.message}),t.dirty()):r.kind===`date`?ut.test(e.data)||(n=this._getOrReturnCtx(e,n),R(n,{code:F.invalid_string,validation:`date`,message:r.message}),t.dirty()):r.kind===`time`?ft(r).test(e.data)||(n=this._getOrReturnCtx(e,n),R(n,{code:F.invalid_string,validation:`time`,message:r.message}),t.dirty()):r.kind===`duration`?$e.test(e.data)||(n=this._getOrReturnCtx(e,n),R(n,{validation:`duration`,code:F.invalid_string,message:r.message}),t.dirty()):r.kind===`ip`?mt(e.data,r.version)||(n=this._getOrReturnCtx(e,n),R(n,{validation:`ip`,code:F.invalid_string,message:r.message}),t.dirty()):r.kind===`jwt`?ht(e.data,r.alg)||(n=this._getOrReturnCtx(e,n),R(n,{validation:`jwt`,code:F.invalid_string,message:r.message}),t.dirty()):r.kind===`cidr`?gt(e.data,r.version)||(n=this._getOrReturnCtx(e,n),R(n,{validation:`cidr`,code:F.invalid_string,message:r.message}),t.dirty()):r.kind===`base64`?st.test(e.data)||(n=this._getOrReturnCtx(e,n),R(n,{validation:`base64`,code:F.invalid_string,message:r.message}),t.dirty()):r.kind===`base64url`?ct.test(e.data)||(n=this._getOrReturnCtx(e,n),R(n,{validation:`base64url`,code:F.invalid_string,message:r.message}),t.dirty()):M.assertNever(r);return{status:t.value,value:e.data}}_regex(e,t,n){return this.refinement(t=>e.test(t),{validation:t,code:F.invalid_string,...U.errToObj(n)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(e){return this._addCheck({kind:`email`,...U.errToObj(e)})}url(e){return this._addCheck({kind:`url`,...U.errToObj(e)})}emoji(e){return this._addCheck({kind:`emoji`,...U.errToObj(e)})}uuid(e){return this._addCheck({kind:`uuid`,...U.errToObj(e)})}nanoid(e){return this._addCheck({kind:`nanoid`,...U.errToObj(e)})}cuid(e){return this._addCheck({kind:`cuid`,...U.errToObj(e)})}cuid2(e){return this._addCheck({kind:`cuid2`,...U.errToObj(e)})}ulid(e){return this._addCheck({kind:`ulid`,...U.errToObj(e)})}base64(e){return this._addCheck({kind:`base64`,...U.errToObj(e)})}base64url(e){return this._addCheck({kind:`base64url`,...U.errToObj(e)})}jwt(e){return this._addCheck({kind:`jwt`,...U.errToObj(e)})}ip(e){return this._addCheck({kind:`ip`,...U.errToObj(e)})}cidr(e){return this._addCheck({kind:`cidr`,...U.errToObj(e)})}datetime(e){return typeof e==`string`?this._addCheck({kind:`datetime`,precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:`datetime`,precision:e?.precision===void 0?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...U.errToObj(e?.message)})}date(e){return this._addCheck({kind:`date`,message:e})}time(e){return typeof e==`string`?this._addCheck({kind:`time`,precision:null,message:e}):this._addCheck({kind:`time`,precision:e?.precision===void 0?null:e?.precision,...U.errToObj(e?.message)})}duration(e){return this._addCheck({kind:`duration`,...U.errToObj(e)})}regex(e,t){return this._addCheck({kind:`regex`,regex:e,...U.errToObj(t)})}includes(e,t){return this._addCheck({kind:`includes`,value:e,position:t?.position,...U.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:`startsWith`,value:e,...U.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:`endsWith`,value:e,...U.errToObj(t)})}min(e,t){return this._addCheck({kind:`min`,value:e,...U.errToObj(t)})}max(e,t){return this._addCheck({kind:`max`,value:e,...U.errToObj(t)})}length(e,t){return this._addCheck({kind:`length`,value:e,...U.errToObj(t)})}nonempty(e){return this.min(1,U.errToObj(e))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:`trim`}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toLowerCase`}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toUpperCase`}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind===`datetime`)}get isDate(){return!!this._def.checks.find(e=>e.kind===`date`)}get isTime(){return!!this._def.checks.find(e=>e.kind===`time`)}get isDuration(){return!!this._def.checks.find(e=>e.kind===`duration`)}get isEmail(){return!!this._def.checks.find(e=>e.kind===`email`)}get isURL(){return!!this._def.checks.find(e=>e.kind===`url`)}get isEmoji(){return!!this._def.checks.find(e=>e.kind===`emoji`)}get isUUID(){return!!this._def.checks.find(e=>e.kind===`uuid`)}get isNANOID(){return!!this._def.checks.find(e=>e.kind===`nanoid`)}get isCUID(){return!!this._def.checks.find(e=>e.kind===`cuid`)}get isCUID2(){return!!this._def.checks.find(e=>e.kind===`cuid2`)}get isULID(){return!!this._def.checks.find(e=>e.kind===`ulid`)}get isIP(){return!!this._def.checks.find(e=>e.kind===`ip`)}get isCIDR(){return!!this._def.checks.find(e=>e.kind===`cidr`)}get isBase64(){return!!this._def.checks.find(e=>e.kind===`base64`)}get isBase64url(){return!!this._def.checks.find(e=>e.kind===`base64url`)}get minLength(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e}};_t.create=e=>new _t({checks:[],typeName:$.ZodString,coerce:e?.coerce??!1,...G(e)});function vt(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=(t.toString().split(`.`)[1]||``).length,i=n>r?n:r;return Number.parseInt(e.toFixed(i).replace(`.`,``))%Number.parseInt(t.toFixed(i).replace(`.`,``))/10**i}var yt=class e extends K{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==N.number){let t=this._getOrReturnCtx(e);return R(t,{code:F.invalid_type,expected:N.number,received:t.parsedType}),B}let t,n=new z;for(let r of this._def.checks)r.kind===`int`?M.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),R(t,{code:F.invalid_type,expected:`integer`,received:`float`,message:r.message}),n.dirty()):r.kind===`min`?(r.inclusive?e.data<r.value:e.data<=r.value)&&(t=this._getOrReturnCtx(e,t),R(t,{code:F.too_small,minimum:r.value,type:`number`,inclusive:r.inclusive,exact:!1,message:r.message}),n.dirty()):r.kind===`max`?(r.inclusive?e.data>r.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),R(t,{code:F.too_big,maximum:r.value,type:`number`,inclusive:r.inclusive,exact:!1,message:r.message}),n.dirty()):r.kind===`multipleOf`?vt(e.data,r.value)!==0&&(t=this._getOrReturnCtx(e,t),R(t,{code:F.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):r.kind===`finite`?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),R(t,{code:F.not_finite,message:r.message}),n.dirty()):M.assertNever(r);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit(`min`,e,!0,U.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,U.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,U.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,U.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:U.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(e){return this._addCheck({kind:`int`,message:U.toString(e)})}positive(e){return this._addCheck({kind:`min`,value:0,inclusive:!1,message:U.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:0,inclusive:!1,message:U.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:0,inclusive:!0,message:U.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:0,inclusive:!0,message:U.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:U.toString(t)})}finite(e){return this._addCheck({kind:`finite`,message:U.toString(e)})}safe(e){return this._addCheck({kind:`min`,inclusive:!0,value:-(2**53-1),message:U.toString(e)})._addCheck({kind:`max`,inclusive:!0,value:2**53-1,message:U.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind===`int`||e.kind===`multipleOf`&&M.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let n of this._def.checks)if(n.kind===`finite`||n.kind===`int`||n.kind===`multipleOf`)return!0;else n.kind===`min`?(t===null||n.value>t)&&(t=n.value):n.kind===`max`&&(e===null||n.value<e)&&(e=n.value);return Number.isFinite(t)&&Number.isFinite(e)}};yt.create=e=>new yt({checks:[],typeName:$.ZodNumber,coerce:e?.coerce||!1,...G(e)});var bt=class e extends K{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==N.bigint)return this._getInvalidInput(e);let t,n=new z;for(let r of this._def.checks)r.kind===`min`?(r.inclusive?e.data<r.value:e.data<=r.value)&&(t=this._getOrReturnCtx(e,t),R(t,{code:F.too_small,type:`bigint`,minimum:r.value,inclusive:r.inclusive,message:r.message}),n.dirty()):r.kind===`max`?(r.inclusive?e.data>r.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),R(t,{code:F.too_big,type:`bigint`,maximum:r.value,inclusive:r.inclusive,message:r.message}),n.dirty()):r.kind===`multipleOf`?e.data%r.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),R(t,{code:F.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):M.assertNever(r);return{status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return R(t,{code:F.invalid_type,expected:N.bigint,received:t.parsedType}),B}gte(e,t){return this.setLimit(`min`,e,!0,U.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,U.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,U.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,U.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:U.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!1,message:U.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!1,message:U.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!0,message:U.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!0,message:U.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:U.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e}};bt.create=e=>new bt({checks:[],typeName:$.ZodBigInt,coerce:e?.coerce??!1,...G(e)});var xt=class extends K{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==N.boolean){let t=this._getOrReturnCtx(e);return R(t,{code:F.invalid_type,expected:N.boolean,received:t.parsedType}),B}return V(e.data)}};xt.create=e=>new xt({typeName:$.ZodBoolean,coerce:e?.coerce||!1,...G(e)});var St=class e extends K{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==N.date){let t=this._getOrReturnCtx(e);return R(t,{code:F.invalid_type,expected:N.date,received:t.parsedType}),B}if(Number.isNaN(e.data.getTime()))return R(this._getOrReturnCtx(e),{code:F.invalid_date}),B;let t=new z,n;for(let r of this._def.checks)r.kind===`min`?e.data.getTime()<r.value&&(n=this._getOrReturnCtx(e,n),R(n,{code:F.too_small,message:r.message,inclusive:!0,exact:!1,minimum:r.value,type:`date`}),t.dirty()):r.kind===`max`?e.data.getTime()>r.value&&(n=this._getOrReturnCtx(e,n),R(n,{code:F.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:`date`}),t.dirty()):M.assertNever(r);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(e,t){return this._addCheck({kind:`min`,value:e.getTime(),message:U.toString(t)})}max(e,t){return this._addCheck({kind:`max`,value:e.getTime(),message:U.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e==null?null:new Date(e)}get maxDate(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e==null?null:new Date(e)}};St.create=e=>new St({checks:[],coerce:e?.coerce||!1,typeName:$.ZodDate,...G(e)});var Ct=class extends K{_parse(e){if(this._getType(e)!==N.symbol){let t=this._getOrReturnCtx(e);return R(t,{code:F.invalid_type,expected:N.symbol,received:t.parsedType}),B}return V(e.data)}};Ct.create=e=>new Ct({typeName:$.ZodSymbol,...G(e)});var wt=class extends K{_parse(e){if(this._getType(e)!==N.undefined){let t=this._getOrReturnCtx(e);return R(t,{code:F.invalid_type,expected:N.undefined,received:t.parsedType}),B}return V(e.data)}};wt.create=e=>new wt({typeName:$.ZodUndefined,...G(e)});var Tt=class extends K{_parse(e){if(this._getType(e)!==N.null){let t=this._getOrReturnCtx(e);return R(t,{code:F.invalid_type,expected:N.null,received:t.parsedType}),B}return V(e.data)}};Tt.create=e=>new Tt({typeName:$.ZodNull,...G(e)});var Et=class extends K{constructor(){super(...arguments),this._any=!0}_parse(e){return V(e.data)}};Et.create=e=>new Et({typeName:$.ZodAny,...G(e)});var Dt=class extends K{constructor(){super(...arguments),this._unknown=!0}_parse(e){return V(e.data)}};Dt.create=e=>new Dt({typeName:$.ZodUnknown,...G(e)});var q=class extends K{_parse(e){let t=this._getOrReturnCtx(e);return R(t,{code:F.invalid_type,expected:N.never,received:t.parsedType}),B}};q.create=e=>new q({typeName:$.ZodNever,...G(e)});var Ot=class extends K{_parse(e){if(this._getType(e)!==N.undefined){let t=this._getOrReturnCtx(e);return R(t,{code:F.invalid_type,expected:N.void,received:t.parsedType}),B}return V(e.data)}};Ot.create=e=>new Ot({typeName:$.ZodVoid,...G(e)});var kt=class e extends K{_parse(e){let{ctx:t,status:n}=this._processInputParams(e),r=this._def;if(t.parsedType!==N.array)return R(t,{code:F.invalid_type,expected:N.array,received:t.parsedType}),B;if(r.exactLength!==null){let e=t.data.length>r.exactLength.value,i=t.data.length<r.exactLength.value;(e||i)&&(R(t,{code:e?F.too_big:F.too_small,minimum:i?r.exactLength.value:void 0,maximum:e?r.exactLength.value:void 0,type:`array`,inclusive:!0,exact:!0,message:r.exactLength.message}),n.dirty())}if(r.minLength!==null&&t.data.length<r.minLength.value&&(R(t,{code:F.too_small,minimum:r.minLength.value,type:`array`,inclusive:!0,exact:!1,message:r.minLength.message}),n.dirty()),r.maxLength!==null&&t.data.length>r.maxLength.value&&(R(t,{code:F.too_big,maximum:r.maxLength.value,type:`array`,inclusive:!0,exact:!1,message:r.maxLength.message}),n.dirty()),t.common.async)return Promise.all([...t.data].map((e,n)=>r.type._parseAsync(new W(t,e,t.path,n)))).then(e=>z.mergeArray(n,e));let i=[...t.data].map((e,n)=>r.type._parseSync(new W(t,e,t.path,n)));return z.mergeArray(n,i)}get element(){return this._def.type}min(t,n){return new e({...this._def,minLength:{value:t,message:U.toString(n)}})}max(t,n){return new e({...this._def,maxLength:{value:t,message:U.toString(n)}})}length(t,n){return new e({...this._def,exactLength:{value:t,message:U.toString(n)}})}nonempty(e){return this.min(1,e)}};kt.create=(e,t)=>new kt({type:e,minLength:null,maxLength:null,exactLength:null,typeName:$.ZodArray,...G(t)});function At(e){if(e instanceof J){let t={};for(let n in e.shape){let r=e.shape[n];t[n]=Q.create(At(r))}return new J({...e._def,shape:()=>t})}else if(e instanceof kt)return new kt({...e._def,type:At(e.element)});else if(e instanceof Q)return Q.create(At(e.unwrap()));else if(e instanceof Gt)return Gt.create(At(e.unwrap()));else if(e instanceof X)return X.create(e.items.map(e=>At(e)));else return e}var J=class e extends K{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=M.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==N.object){let t=this._getOrReturnCtx(e);return R(t,{code:F.invalid_type,expected:N.object,received:t.parsedType}),B}let{status:t,ctx:n}=this._processInputParams(e),{shape:r,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof q&&this._def.unknownKeys===`strip`))for(let e in n.data)i.includes(e)||a.push(e);let o=[];for(let e of i){let t=r[e],i=n.data[e];o.push({key:{status:`valid`,value:e},value:t._parse(new W(n,i,n.path,e)),alwaysSet:e in n.data})}if(this._def.catchall instanceof q){let e=this._def.unknownKeys;if(e===`passthrough`)for(let e of a)o.push({key:{status:`valid`,value:e},value:{status:`valid`,value:n.data[e]}});else if(e===`strict`)a.length>0&&(R(n,{code:F.unrecognized_keys,keys:a}),t.dirty());else if(e!==`strip`)throw Error(`Internal ZodObject error: invalid unknownKeys value.`)}else{let e=this._def.catchall;for(let t of a){let r=n.data[t];o.push({key:{status:`valid`,value:t},value:e._parse(new W(n,r,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of o){let n=await t.key,r=await t.value;e.push({key:n,value:r,alwaysSet:t.alwaysSet})}return e}).then(e=>z.mergeObjectSync(t,e)):z.mergeObjectSync(t,o)}get shape(){return this._def.shape()}strict(t){return U.errToObj,new e({...this._def,unknownKeys:`strict`,...t===void 0?{}:{errorMap:(e,n)=>{let r=this._def.errorMap?.(e,n).message??n.defaultError;return e.code===`unrecognized_keys`?{message:U.errToObj(t).message??r}:{message:r}}}})}strip(){return new e({...this._def,unknownKeys:`strip`})}passthrough(){return new e({...this._def,unknownKeys:`passthrough`})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:$.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(t){return new e({...this._def,catchall:t})}pick(t){let n={};for(let e of M.objectKeys(t))t[e]&&this.shape[e]&&(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}omit(t){let n={};for(let e of M.objectKeys(this.shape))t[e]||(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}deepPartial(){return At(this)}partial(t){let n={};for(let e of M.objectKeys(this.shape)){let r=this.shape[e];t&&!t[e]?n[e]=r:n[e]=r.optional()}return new e({...this._def,shape:()=>n})}required(t){let n={};for(let e of M.objectKeys(this.shape))if(t&&!t[e])n[e]=this.shape[e];else{let t=this.shape[e];for(;t instanceof Q;)t=t._def.innerType;n[e]=t}return new e({...this._def,shape:()=>n})}keyof(){return Vt(M.objectKeys(this.shape))}};J.create=(e,t)=>new J({shape:()=>e,unknownKeys:`strip`,catchall:q.create(),typeName:$.ZodObject,...G(t)}),J.strictCreate=(e,t)=>new J({shape:()=>e,unknownKeys:`strict`,catchall:q.create(),typeName:$.ZodObject,...G(t)}),J.lazycreate=(e,t)=>new J({shape:e,unknownKeys:`strip`,catchall:q.create(),typeName:$.ZodObject,...G(t)});var jt=class extends K{_parse(e){let{ctx:t}=this._processInputParams(e),n=this._def.options;function r(e){for(let t of e)if(t.result.status===`valid`)return t.result;for(let n of e)if(n.result.status===`dirty`)return t.common.issues.push(...n.ctx.common.issues),n.result;let n=e.map(e=>new I(e.ctx.common.issues));return R(t,{code:F.invalid_union,unionErrors:n}),B}if(t.common.async)return Promise.all(n.map(async e=>{let n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}})).then(r);{let e,r=[];for(let i of n){let n={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:n});if(a.status===`valid`)return a;a.status===`dirty`&&!e&&(e={result:a,ctx:n}),n.common.issues.length&&r.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=r.map(e=>new I(e));return R(t,{code:F.invalid_union,unionErrors:i}),B}}get options(){return this._def.options}};jt.create=(e,t)=>new jt({options:e,typeName:$.ZodUnion,...G(t)});var Y=e=>e instanceof zt?Y(e.schema):e instanceof Z?Y(e.innerType()):e instanceof Bt?[e.value]:e instanceof Ht?e.options:e instanceof Ut?M.objectValues(e.enum):e instanceof Kt?Y(e._def.innerType):e instanceof wt?[void 0]:e instanceof Tt?[null]:e instanceof Q?[void 0,...Y(e.unwrap())]:e instanceof Gt?[null,...Y(e.unwrap())]:e instanceof Yt||e instanceof Zt?Y(e.unwrap()):e instanceof qt?Y(e._def.innerType):[],Mt=class e extends K{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==N.object)return R(t,{code:F.invalid_type,expected:N.object,received:t.parsedType}),B;let n=this.discriminator,r=t.data[n],i=this.optionsMap.get(r);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(R(t,{code:F.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),B)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){let i=new Map;for(let e of n){let n=Y(e.shape[t]);if(!n.length)throw Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let r of n){if(i.has(r))throw Error(`Discriminator property ${String(t)} has duplicate value ${String(r)}`);i.set(r,e)}}return new e({typeName:$.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...G(r)})}};function Nt(e,t){let n=P(e),r=P(t);if(e===t)return{valid:!0,data:e};if(n===N.object&&r===N.object){let n=M.objectKeys(t),r=M.objectKeys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=Nt(e[n],t[n]);if(!r.valid)return{valid:!1};i[n]=r.data}return{valid:!0,data:i}}else if(n===N.array&&r===N.array){if(e.length!==t.length)return{valid:!1};let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=t[r],o=Nt(i,a);if(!o.valid)return{valid:!1};n.push(o.data)}return{valid:!0,data:n}}else if(n===N.date&&r===N.date&&+e==+t)return{valid:!0,data:e};else return{valid:!1}}var Pt=class extends K{_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=(e,r)=>{if(Ue(e)||Ue(r))return B;let i=Nt(e.value,r.value);return i.valid?((We(e)||We(r))&&t.dirty(),{status:t.value,value:i.data}):(R(n,{code:F.invalid_intersection_types}),B)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([e,t])=>r(e,t)):r(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};Pt.create=(e,t,n)=>new Pt({left:e,right:t,typeName:$.ZodIntersection,...G(n)});var X=class e extends K{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==N.array)return R(n,{code:F.invalid_type,expected:N.array,received:n.parsedType}),B;if(n.data.length<this._def.items.length)return R(n,{code:F.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),B;!this._def.rest&&n.data.length>this._def.items.length&&(R(n,{code:F.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),t.dirty());let r=[...n.data].map((e,t)=>{let r=this._def.items[t]||this._def.rest;return r?r._parse(new W(n,e,n.path,t)):null}).filter(e=>!!e);return n.common.async?Promise.all(r).then(e=>z.mergeArray(t,e)):z.mergeArray(t,r)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};X.create=(e,t)=>{if(!Array.isArray(e))throw Error(`You must pass an array of schemas to z.tuple([ ... ])`);return new X({items:e,typeName:$.ZodTuple,rest:null,...G(t)})};var Ft=class e extends K{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==N.object)return R(n,{code:F.invalid_type,expected:N.object,received:n.parsedType}),B;let r=[],i=this._def.keyType,a=this._def.valueType;for(let e in n.data)r.push({key:i._parse(new W(n,e,n.path,e)),value:a._parse(new W(n,n.data[e],n.path,e)),alwaysSet:e in n.data});return n.common.async?z.mergeObjectAsync(t,r):z.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof K?new e({keyType:t,valueType:n,typeName:$.ZodRecord,...G(r)}):new e({keyType:_t.create(),valueType:t,typeName:$.ZodRecord,...G(n)})}},It=class extends K{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==N.map)return R(n,{code:F.invalid_type,expected:N.map,received:n.parsedType}),B;let r=this._def.keyType,i=this._def.valueType,a=[...n.data.entries()].map(([e,t],a)=>({key:r._parse(new W(n,e,n.path,[a,`key`])),value:i._parse(new W(n,t,n.path,[a,`value`]))}));if(n.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let n of a){let r=await n.key,i=await n.value;if(r.status===`aborted`||i.status===`aborted`)return B;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}})}else{let e=new Map;for(let n of a){let r=n.key,i=n.value;if(r.status===`aborted`||i.status===`aborted`)return B;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}}}};It.create=(e,t,n)=>new It({valueType:t,keyType:e,typeName:$.ZodMap,...G(n)});var Lt=class e extends K{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==N.set)return R(n,{code:F.invalid_type,expected:N.set,received:n.parsedType}),B;let r=this._def;r.minSize!==null&&n.data.size<r.minSize.value&&(R(n,{code:F.too_small,minimum:r.minSize.value,type:`set`,inclusive:!0,exact:!1,message:r.minSize.message}),t.dirty()),r.maxSize!==null&&n.data.size>r.maxSize.value&&(R(n,{code:F.too_big,maximum:r.maxSize.value,type:`set`,inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());let i=this._def.valueType;function a(e){let n=new Set;for(let r of e){if(r.status===`aborted`)return B;r.status===`dirty`&&t.dirty(),n.add(r.value)}return{status:t.value,value:n}}let o=[...n.data.values()].map((e,t)=>i._parse(new W(n,e,n.path,t)));return n.common.async?Promise.all(o).then(e=>a(e)):a(o)}min(t,n){return new e({...this._def,minSize:{value:t,message:U.toString(n)}})}max(t,n){return new e({...this._def,maxSize:{value:t,message:U.toString(n)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};Lt.create=(e,t)=>new Lt({valueType:e,minSize:null,maxSize:null,typeName:$.ZodSet,...G(t)});var Rt=class e extends K{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==N.function)return R(t,{code:F.invalid_type,expected:N.function,received:t.parsedType}),B;function n(e,n){return Ve({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Be(),L].filter(e=>!!e),issueData:{code:F.invalid_arguments,argumentsError:n}})}function r(e,n){return Ve({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Be(),L].filter(e=>!!e),issueData:{code:F.invalid_return_type,returnTypeError:n}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof Wt){let e=this;return V(async function(...t){let o=new I([]),s=await e._def.args.parseAsync(t,i).catch(e=>{throw o.addIssue(n(t,e)),o}),c=await Reflect.apply(a,this,s);return await e._def.returns._def.type.parseAsync(c,i).catch(e=>{throw o.addIssue(r(c,e)),o})})}else{let e=this;return V(function(...t){let o=e._def.args.safeParse(t,i);if(!o.success)throw new I([n(t,o.error)]);let s=Reflect.apply(a,this,o.data),c=e._def.returns.safeParse(s,i);if(!c.success)throw new I([r(s,c.error)]);return c.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:X.create(t).rest(Dt.create())})}returns(t){return new e({...this._def,returns:t})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(t,n,r){return new e({args:t||X.create([]).rest(Dt.create()),returns:n||Dt.create(),typeName:$.ZodFunction,...G(r)})}},zt=class extends K{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};zt.create=(e,t)=>new zt({getter:e,typeName:$.ZodLazy,...G(t)});var Bt=class extends K{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return R(t,{received:t.data,code:F.invalid_literal,expected:this._def.value}),B}return{status:`valid`,value:e.data}}get value(){return this._def.value}};Bt.create=(e,t)=>new Bt({value:e,typeName:$.ZodLiteral,...G(t)});function Vt(e,t){return new Ht({values:e,typeName:$.ZodEnum,...G(t)})}var Ht=class e extends K{_parse(e){if(typeof e.data!=`string`){let t=this._getOrReturnCtx(e),n=this._def.values;return R(t,{expected:M.joinValues(n),received:t.parsedType,code:F.invalid_type}),B}if(this._cache||=new Set(this._def.values),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),n=this._def.values;return R(t,{received:t.data,code:F.invalid_enum_value,options:n}),B}return V(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(t,n=this._def){return e.create(t,{...this._def,...n})}exclude(t,n=this._def){return e.create(this.options.filter(e=>!t.includes(e)),{...this._def,...n})}};Ht.create=Vt;var Ut=class extends K{_parse(e){let t=M.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==N.string&&n.parsedType!==N.number){let e=M.objectValues(t);return R(n,{expected:M.joinValues(e),received:n.parsedType,code:F.invalid_type}),B}if(this._cache||=new Set(M.getValidEnumValues(this._def.values)),!this._cache.has(e.data)){let e=M.objectValues(t);return R(n,{received:n.data,code:F.invalid_enum_value,options:e}),B}return V(e.data)}get enum(){return this._def.values}};Ut.create=(e,t)=>new Ut({values:e,typeName:$.ZodNativeEnum,...G(t)});var Wt=class extends K{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==N.promise&&t.common.async===!1?(R(t,{code:F.invalid_type,expected:N.promise,received:t.parsedType}),B):V((t.parsedType===N.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}};Wt.create=(e,t)=>new Wt({type:e,typeName:$.ZodPromise,...G(t)});var Z=class extends K{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===$.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=this._def.effect||null,i={addIssue:e=>{R(n,e),e.fatal?t.abort():t.dirty()},get path(){return n.path}};if(i.addIssue=i.addIssue.bind(i),r.type===`preprocess`){let e=r.transform(n.data,i);if(n.common.async)return Promise.resolve(e).then(async e=>{if(t.value===`aborted`)return B;let r=await this._def.schema._parseAsync({data:e,path:n.path,parent:n});return r.status===`aborted`?B:r.status===`dirty`||t.value===`dirty`?He(r.value):r});{if(t.value===`aborted`)return B;let r=this._def.schema._parseSync({data:e,path:n.path,parent:n});return r.status===`aborted`?B:r.status===`dirty`||t.value===`dirty`?He(r.value):r}}if(r.type===`refinement`){let e=e=>{let t=r.refinement(e,i);if(n.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error(`Async refinement encountered during synchronous parse operation. Use .parseAsync instead.`);return e};if(n.common.async===!1){let r=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return r.status===`aborted`?B:(r.status===`dirty`&&t.dirty(),e(r.value),{status:t.value,value:r.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(n=>n.status===`aborted`?B:(n.status===`dirty`&&t.dirty(),e(n.value).then(()=>({status:t.value,value:n.value}))))}if(r.type===`transform`)if(n.common.async===!1){let e=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!H(e))return B;let a=r.transform(e.value,i);if(a instanceof Promise)throw Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);return{status:t.value,value:a}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(e=>H(e)?Promise.resolve(r.transform(e.value,i)).then(e=>({status:t.value,value:e})):B);M.assertNever(r)}};Z.create=(e,t,n)=>new Z({schema:e,typeName:$.ZodEffects,effect:t,...G(n)}),Z.createWithPreprocess=(e,t,n)=>new Z({schema:t,effect:{type:`preprocess`,transform:e},typeName:$.ZodEffects,...G(n)});var Q=class extends K{_parse(e){return this._getType(e)===N.undefined?V(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Q.create=(e,t)=>new Q({innerType:e,typeName:$.ZodOptional,...G(t)});var Gt=class extends K{_parse(e){return this._getType(e)===N.null?V(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Gt.create=(e,t)=>new Gt({innerType:e,typeName:$.ZodNullable,...G(t)});var Kt=class extends K{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return t.parsedType===N.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};Kt.create=(e,t)=>new Kt({innerType:e,typeName:$.ZodDefault,defaultValue:typeof t.default==`function`?t.default:()=>t.default,...G(t)});var qt=class extends K{_parse(e){let{ctx:t}=this._processInputParams(e),n={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return Ge(r)?r.then(e=>({status:`valid`,value:e.status===`valid`?e.value:this._def.catchValue({get error(){return new I(n.common.issues)},input:n.data})})):{status:`valid`,value:r.status===`valid`?r.value:this._def.catchValue({get error(){return new I(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};qt.create=(e,t)=>new qt({innerType:e,typeName:$.ZodCatch,catchValue:typeof t.catch==`function`?t.catch:()=>t.catch,...G(t)});var Jt=class extends K{_parse(e){if(this._getType(e)!==N.nan){let t=this._getOrReturnCtx(e);return R(t,{code:F.invalid_type,expected:N.nan,received:t.parsedType}),B}return{status:`valid`,value:e.data}}};Jt.create=e=>new Jt({typeName:$.ZodNaN,...G(e)});var Yt=class extends K{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}},Xt=class e extends K{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?B:e.status===`dirty`?(t.dirty(),He(e.value)):this._def.out._parseAsync({data:e.value,path:n.path,parent:n})})();{let e=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?B:e.status===`dirty`?(t.dirty(),{status:`dirty`,value:e.value}):this._def.out._parseSync({data:e.value,path:n.path,parent:n})}}static create(t,n){return new e({in:t,out:n,typeName:$.ZodPipeline})}},Zt=class extends K{_parse(e){let t=this._def.innerType._parse(e),n=e=>(H(e)&&(e.value=Object.freeze(e.value)),e);return Ge(t)?t.then(e=>n(e)):n(t)}unwrap(){return this._def.innerType}};Zt.create=(e,t)=>new Zt({innerType:e,typeName:$.ZodReadonly,...G(t)}),J.lazycreate;var $;(function(e){e.ZodString=`ZodString`,e.ZodNumber=`ZodNumber`,e.ZodNaN=`ZodNaN`,e.ZodBigInt=`ZodBigInt`,e.ZodBoolean=`ZodBoolean`,e.ZodDate=`ZodDate`,e.ZodSymbol=`ZodSymbol`,e.ZodUndefined=`ZodUndefined`,e.ZodNull=`ZodNull`,e.ZodAny=`ZodAny`,e.ZodUnknown=`ZodUnknown`,e.ZodNever=`ZodNever`,e.ZodVoid=`ZodVoid`,e.ZodArray=`ZodArray`,e.ZodObject=`ZodObject`,e.ZodUnion=`ZodUnion`,e.ZodDiscriminatedUnion=`ZodDiscriminatedUnion`,e.ZodIntersection=`ZodIntersection`,e.ZodTuple=`ZodTuple`,e.ZodRecord=`ZodRecord`,e.ZodMap=`ZodMap`,e.ZodSet=`ZodSet`,e.ZodFunction=`ZodFunction`,e.ZodLazy=`ZodLazy`,e.ZodLiteral=`ZodLiteral`,e.ZodEnum=`ZodEnum`,e.ZodEffects=`ZodEffects`,e.ZodNativeEnum=`ZodNativeEnum`,e.ZodOptional=`ZodOptional`,e.ZodNullable=`ZodNullable`,e.ZodDefault=`ZodDefault`,e.ZodCatch=`ZodCatch`,e.ZodPromise=`ZodPromise`,e.ZodBranded=`ZodBranded`,e.ZodPipeline=`ZodPipeline`,e.ZodReadonly=`ZodReadonly`})($||={});var Qt=_t.create;yt.create,Jt.create,bt.create,xt.create,St.create,Ct.create,wt.create,Tt.create,Et.create,Dt.create,q.create,Ot.create,kt.create;var $t=J.create;J.strictCreate,jt.create,Mt.create,Pt.create,X.create,Ft.create,It.create,Lt.create,Rt.create,zt.create,Bt.create,Ht.create,Ut.create,Wt.create,Z.create,Q.create,Gt.create,Z.createWithPreprocess,Xt.create;function en(){let{t:e}=f(),n=u({dropFieldsInput:``,requestDefaultsInput:``,injectHeadersInput:``,exists:!1});async function r(r){try{let e=await b.getTransformRules(r);e?(n.value.dropFieldsInput=(e.drop_fields||[]).join(`, `),n.value.requestDefaultsInput=e.request_defaults?JSON.stringify(e.request_defaults):``,n.value.injectHeadersInput=e.inject_headers?JSON.stringify(e.inject_headers):``,n.value.exists=!0):(n.value.dropFieldsInput=``,n.value.requestDefaultsInput=``,n.value.injectHeadersInput=``,n.value.exists=!1)}catch(r){console.error(`transformRules.load:`,r),A.error(t(r,e(`providers.transform.loadFailed`))),n.value.dropFieldsInput=``,n.value.requestDefaultsInput=``,n.value.injectHeadersInput=``,n.value.exists=!1}}function i(r){if(!r)return Promise.resolve();let i=n.value.dropFieldsInput?n.value.dropFieldsInput.split(`,`).map(e=>e.trim()).filter(Boolean):null,a=null;if(n.value.requestDefaultsInput.trim())try{a=JSON.parse(n.value.requestDefaultsInput)}catch{return A.error(e(`providers.transform.requestDefaultsJsonError`)),Promise.resolve()}let o=null;if(n.value.injectHeadersInput.trim())try{o=JSON.parse(n.value.injectHeadersInput)}catch{return A.error(e(`providers.transform.injectHeadersJsonError`)),Promise.resolve()}return b.upsertTransformRules(r,{drop_fields:i,request_defaults:a,inject_headers:o,is_active:1}).then(()=>{n.value.exists=!0,A.success(e(`providers.transform.saved`))}).catch(n=>{console.error(`transformRules.save:`,n),A.error(t(n,e(`common.saveFailed`)))})}function a(r){return r?b.deleteTransformRules(r).then(()=>{n.value.dropFieldsInput=``,n.value.requestDefaultsInput=``,n.value.injectHeadersInput=``,n.value.exists=!1,A.success(e(`providers.transform.deleted`))}).catch(n=>{console.error(`transformRules.delete:`,n),A.error(t(n,e(`providers.transform.deleteFailed`)))}):Promise.resolve()}return{transformForm:n,loadTransformRules:r,saveTransformRules:i,handleDeleteTransformRules:a}}var tn=`deepseek`;function nn(e){let t=u([]),n=u(``),r=u(``),i=s(()=>n.value?t.value.find(e=>e.group===n.value)?.presets??[]:[]);function a(){if(n.value===`__custom__`){r.value=``,e.value.name=``,e.value.api_type=`openai`,e.value.base_url=``,e.value.models=[];return}let i=t.value.find(e=>e.group===n.value)?.presets;i?.length?(r.value=i[0].plan,o()):r.value=``}function o(){let t=i.value.find(e=>e.plan===r.value);t&&(e.value.name=t.presetName,e.value.api_type=t.apiType,e.value.base_url=t.baseUrl,e.value.upstream_path=t.upstreamPath??``,e.value.models=t.models.map(e=>({name:e,context_window:T(e),patches:d(e,t.apiType),capabilities:t.modelCapabilities?.[e]})))}function c(){return i.value.find(e=>e.plan===r.value)?.modelsEndpoint}function l(){return i.value.find(e=>e.plan===r.value)?.models??[]}function d(e,t){let n=[];return e.toLowerCase().includes(tn)&&(n.push(`thinking-consistency`),t===`anthropic`?n.push(`orphan-tool-results`):n.push(`orphan-tool-results-oa`)),n}async function f(){try{t.value=await b.recommended.getProviders()}catch{t.value=[]}}function p(){n.value=``,r.value=``}return{providerPresets:t,presetGroup:n,presetPlan:r,availablePlans:i,onGroupChange:a,onPresetChange:o,getCurrentModelsEndpoint:c,getCurrentPresetModels:l,loadPresets:f,resetPreset:p}}var rn=3,an=10,on=12e4,sn=10,cn=100,ln=1e3,un=1e3,dn=1e6,fn=1e3,pn={name:``,api_type:`anthropic`,base_url:``,upstream_path:``,api_key:``,models:[],is_active:!0,max_concurrency:an,queue_timeout_ms:on,max_queue_size:sn,adaptive_enabled:!0,proxy_type:``,proxy_url:``,proxy_username:``,proxy_password:``},mn=[{label:`8K`,value:`8000`},{label:`16K`,value:`16000`},{label:`32K`,value:`32000`},{label:`64K`,value:`64000`},{label:`128K`,value:`128000`},{label:`160K`,value:`160000`},{label:`200K`,value:`200000`},{label:`256K`,value:`256000`},{label:`1M`,value:`1000000`}],hn={openai:`OpenAI Chat Completions`,"openai-responses":`OpenAI Responses`,anthropic:`Anthropic Messages`};function gn(){let{t:e}=f(),{transformForm:t,loadTransformRules:n,saveTransformRules:r}=en(),i=u({...pn}),a=u({}),o=u(`auto`),c=u(!1),d=u(null),p=u(``),m=u(l),h=s({get:()=>`${m.value}`,set:e=>{m.value=Number(e)}}),g=nn(i);function _(){let t=$t({name:Qt().min(1,e(`providers.validation.nameRequired`)).regex(/^[a-zA-Z0-9_-]+$/,e(`providers.validation.namePattern`)),base_url:Qt().min(1,e(`providers.validation.baseUrlRequired`)).url(e(`providers.validation.baseUrlInvalid`))}),n={},r=t.safeParse({name:i.value.name.trim(),base_url:i.value.base_url.trim()});if(!r.success)for(let e of r.error.issues){let t=e.path[0];n[t]||(n[t]=e.message)}if(!d.value&&!i.value.api_key.trim()&&(n.api_key=e(`providers.validation.apiKeyRequired`)),o.value!==`none`){let t=i.value.max_concurrency;(!t||t<1||t>cn)&&(n.max_concurrency=e(`providers.validation.concurrencyRange`,{min:1,max:cn})),i.value.queue_timeout_ms<0&&(n.queue_timeout_ms=e(`providers.validation.negativeNotAllowed`));let r=i.value.max_queue_size;(!r||r<1||r>ln)&&(n.max_queue_size=e(`providers.validation.queueSizeRange`,{min:1,max:ln}))}return a.value=n,Object.keys(n).length===0}function ee(){let e={name:i.value.name,api_type:i.value.api_type,base_url:i.value.base_url,upstream_path:i.value.upstream_path||void 0,models:i.value.models.map(e=>({name:e.name,context_window:e.context_window??void 0,patches:e.patches??void 0,stream_timeout_ms:e.stream_timeout_ms??void 0,capabilities:e.capabilities??void 0})),is_active:+!!i.value.is_active,max_concurrency:o.value===`none`?0:i.value.max_concurrency,queue_timeout_ms:o.value===`none`?0:i.value.queue_timeout_ms,max_queue_size:o.value===`none`?sn:i.value.max_queue_size,adaptive_enabled:+(o.value===`auto`),proxy_type:i.value.proxy_type||null,proxy_url:i.value.proxy_url?.trim()||null,proxy_username:i.value.proxy_username?.trim()||null,proxy_password:i.value.proxy_password||null};return i.value.api_key&&(e.api_key=i.value.api_key),e}function v(){let e=p.value.trim();if(!e)return;let t=e.split(/[,,]/).map(e=>e.trim()).filter(Boolean);for(let e of t)i.value.models.some(t=>t.name===e)||i.value.models.push({name:e,context_window:m.value||2e5,patches:[]});p.value=``,m.value=l}function y(e){i.value.models.splice(e,1)}function b(e,t){i.value.models[e].context_window=t.contextWindow,i.value.models[e].patches=t.patches}function x(e,t){let n=i.value.models[e],r=n.capabilities??[`text`];n.capabilities=r.includes(t)?r.filter(e=>e!==t):[...r,t]}function S(e,t){let n=Number(t);i.value.models[e].stream_timeout_ms=n>0?n*fn:null}function C(e){o.value=e,e===`auto`?((!i.value.max_concurrency||i.value.max_concurrency<1)&&(i.value.max_concurrency=an),i.value.adaptive_enabled=!0):e===`manual`&&((!i.value.max_concurrency||i.value.max_concurrency<1)&&(i.value.max_concurrency=rn),i.value.adaptive_enabled=!1)}function w(e){return e.includes(`api.openai.com`)}function te(){d.value=null,i.value={...pn,models:[]},o.value=`auto`,p.value=``,m.value=l,g.presetGroup.value=``,g.presetPlan.value=``,a.value={},c.value=!0}function ne(e){d.value=e.id;let t=e.max_concurrency??0;t===0?o.value=`none`:e.adaptive_enabled?o.value=`auto`:o.value=`manual`,i.value={name:e.name,api_type:e.api_type,base_url:e.base_url,upstream_path:e.upstream_path||``,api_key:``,models:(e.models||[]).map(e=>({name:e.name,context_window:e.context_window??2e5,patches:e.patches??[],stream_timeout_ms:e.stream_timeout_ms??null,capabilities:e.capabilities??[`text`]})),is_active:!!e.is_active,max_concurrency:o.value===`none`?an:t,queue_timeout_ms:e.queue_timeout_ms??on,max_queue_size:e.max_queue_size??sn,adaptive_enabled:o.value===`auto`,proxy_type:e.proxy_type||``,proxy_url:e.proxy_url||``,proxy_username:e.proxy_username||``,proxy_password:``},g.presetGroup.value=``,g.presetPlan.value=``,p.value=``,m.value=l,a.value={},c.value=!0,n(e.id)}return{form:i,errors:a,concurrencyMode:o,dialogOpen:c,editingId:d,modelInput:p,modelContextWindow:m,contextWindowSelect:h,transformForm:t,presetHook:g,validate:_,buildPayload:ee,addModel:v,removeModel:y,updateModel:b,updateModelTimeout:S,toggleModelCapability:x,onConcurrencyModeChange:C,isOfficialOpenai:w,openCreate:te,openEdit:ne,saveTransformRules:r}}var _n={class:`grid grid-cols-2 gap-3`},vn={key:0,class:`text-xs text-destructive mt-0.5`},yn={key:0,class:`text-xs text-destructive mt-0.5`},bn={key:0,class:`text-xs text-destructive mt-0.5`},xn={class:`text-xs text-muted-foreground mt-0.5`},Sn={class:`flex items-center justify-between mb-2`},Cn={class:`grid grid-cols-3 gap-2 mb-3`},wn={class:`flex gap-2`},Tn={class:`grid grid-cols-2 gap-4`},En={class:`border rounded-md p-3 space-y-3`},Dn={class:`text-xs font-medium text-muted-foreground`},On={class:`border rounded-md p-3 space-y-3`},kn={class:`text-xs font-medium text-muted-foreground`},An=w({__name:`ModelCapabilitiesEditor`,props:{name:{},apiType:{},baseUrl:{},apiKey:{},upstreamPath:{},proxyType:{},proxyUrl:{},proxyUsername:{},proxyPassword:{},errorsName:{},errorsBaseUrl:{},errorsApiKey:{},editingId:{},models:{},fetchingModels:{type:Boolean},modelInput:{},contextWindowSelect:{},hasModelsEndpoint:{type:Boolean},presetGroup:{},hasApiKey:{type:Boolean},concurrencyMode:{},maxConcurrency:{},queueTimeoutMs:{},maxQueueSize:{},transformInjectHeaders:{},transformDropFields:{},transformRequestDefaults:{}},emits:`update:name.update:api-type.update:base-url.update:api-key.update:upstream-path.update:proxy-type.update:proxy-url.update:proxy-username.update:proxy-password.clear-errors.update:model.remove-model.update:model-timeout.toggle-model-capability.fetch-upstream-models.add-model.update:model-input.update:context-window-select.update:concurrency-mode.update:max-concurrency.update:queue-timeout-ms.update:max-queue-size.update:inject-headers.update:drop-fields.update:request-defaults.clear-proxy`.split(`.`),setup(t,{emit:n}){let{t:i}=f(),s=t,l=n;function u(e){return e.capabilities??[`text`]}function ee(e){return e.includes(`api.openai.com`)}return(t,n)=>(S(),d(c,null,[g(`div`,_n,[g(`div`,null,[v(o(O),{class:`text-xs text-muted-foreground`},{default:r(()=>[e(C(o(i)(`providers.fields.name`)),1)]),_:1}),v(o(j),{"model-value":s.name,type:`text`,required:``,class:`mt-1`,"onUpdate:modelValue":n[0]||=e=>l(`update:name`,String(e)),onInput:n[1]||=e=>l(`clear-errors`,`name`)},null,8,[`model-value`]),s.errorsName?(S(),d(`p`,vn,C(s.errorsName),1)):_(``,!0)]),g(`div`,null,[v(o(O),{class:`text-xs text-muted-foreground`},{default:r(()=>[e(C(o(i)(`providers.fields.apiType`)),1)]),_:1}),v(o(be),{"model-value":s.apiType,"onUpdate:modelValue":n[2]||=e=>l(`update:api-type`,String(e)),class:`mt-1`},{default:r(()=>[v(o(Te),null,{default:r(()=>[v(o(ye),{placeholder:o(i)(`common.pleaseSelect`)},null,8,[`placeholder`])]),_:1}),v(o(xe),null,{default:r(()=>[v(o(k),{value:`openai`},{default:r(()=>[...n[25]||=[e(`OpenAI Chat Completions`,-1)]]),_:1}),v(o(k),{value:`openai-responses`},{default:r(()=>[...n[26]||=[e(`OpenAI Responses`,-1)]]),_:1}),v(o(k),{value:`anthropic`},{default:r(()=>[...n[27]||=[e(`Anthropic Messages`,-1)]]),_:1})]),_:1})]),_:1},8,[`model-value`])]),g(`div`,null,[v(o(O),{class:`text-xs text-muted-foreground`},{default:r(()=>[e(C(o(i)(`providers.fields.baseUrl`)),1)]),_:1}),v(o(j),{"model-value":s.baseUrl,type:`url`,required:``,class:`mt-1 font-mono text-xs`,"onUpdate:modelValue":n[3]||=e=>l(`update:base-url`,String(e)),onInput:n[4]||=e=>l(`clear-errors`,`base_url`)},null,8,[`model-value`]),s.errorsBaseUrl?(S(),d(`p`,yn,C(s.errorsBaseUrl),1)):_(``,!0)]),g(`div`,null,[v(o(O),{class:`text-xs text-muted-foreground`},{default:r(()=>[e(C(o(i)(`providers.fields.apiKey`)),1)]),_:1}),v(o(j),{"model-value":s.apiKey,type:`text`,required:!s.editingId,placeholder:s.editingId?o(i)(`providers.fields.apiKeyPlaceholder`):``,class:`mt-1`,"onUpdate:modelValue":n[5]||=e=>l(`update:api-key`,String(e)),onInput:n[6]||=e=>l(`clear-errors`,`api_key`)},null,8,[`model-value`,`required`,`placeholder`]),s.errorsApiKey?(S(),d(`p`,bn,C(s.errorsApiKey),1)):_(``,!0)])]),g(`div`,null,[v(o(O),{class:`text-xs`},{default:r(()=>[e(C(o(i)(`providers.fields.upstreamPath`)),1)]),_:1}),v(o(j),{"model-value":s.upstreamPath,placeholder:o(i)(`providers.fields.upstreamPathPlaceholder`),class:`mt-1 font-mono text-xs`,"onUpdate:modelValue":n[7]||=e=>l(`update:upstream-path`,String(e))},null,8,[`model-value`,`placeholder`]),g(`p`,xn,C(o(i)(`providers.fields.upstreamPathHint`)),1)]),v(Le,{"proxy-type":s.proxyType,"proxy-url":s.proxyUrl,"proxy-username":s.proxyUsername,"proxy-password":s.proxyPassword,"onUpdate:proxyType":n[8]||=e=>l(`update:proxy-type`,e),"onUpdate:proxyUrl":n[9]||=e=>l(`update:proxy-url`,e),"onUpdate:proxyUsername":n[10]||=e=>l(`update:proxy-username`,e),"onUpdate:proxyPassword":n[11]||=e=>l(`update:proxy-password`,e),onClear:n[12]||=e=>l(`clear-proxy`)},null,8,[`proxy-type`,`proxy-url`,`proxy-username`,`proxy-password`]),g(`div`,null,[g(`div`,Sn,[v(o(O),{class:`text-xs text-muted-foreground`},{default:r(()=>[e(C(o(i)(`providers.fields.availableModels`)),1)]),_:1}),!s.editingId&&s.presetGroup&&s.presetGroup!==`__custom__`&&(s.hasApiKey||!s.hasModelsEndpoint)?(S(),h(o(x),{key:0,type:`button`,variant:`outline`,size:`sm`,class:`text-xs`,disabled:s.fetchingModels,onClick:n[13]||=e=>l(`fetch-upstream-models`)},{default:r(()=>[v(o(Ae),{class:m([`w-3 h-3 mr-1`,{"animate-spin":s.fetchingModels}])},null,8,[`class`]),e(` `+C(s.fetchingModels?o(i)(`providers.fetchModels.loading`):s.hasModelsEndpoint?o(i)(`providers.fetchModels.button`):o(i)(`providers.fetchModels.buttonPreset`)),1)]),_:1},8,[`disabled`])):_(``,!0)]),g(`div`,Cn,[(S(!0),d(c,null,y(s.models,(e,t)=>(S(),d(`div`,{key:t},[v(ie,{model:{name:e.name,contextWindow:e.context_window??2e5,enabled:!0,patches:e.patches??[]},"api-type":s.apiType,"is-deep-seek":e.name.toLowerCase().includes(`deepseek`),"is-non-openai-endpoint":!ee(s.baseUrl),"stream-timeout-ms":e.stream_timeout_ms??void 0,capabilities:u(e),"onUpdate:model":e=>l(`update:model`,t,e),onRemove:e=>l(`remove-model`,t),"onUpdate:streamTimeoutMs":e=>l(`update:model-timeout`,t,String(e?Math.round(e/1e3):``)),onToggleCapability:e=>l(`toggle-model-capability`,t,e)},null,8,[`model`,`api-type`,`is-deep-seek`,`is-non-openai-endpoint`,`stream-timeout-ms`,`capabilities`,`onUpdate:model`,`onRemove`,`onUpdate:streamTimeoutMs`,`onToggleCapability`])]))),128))]),g(`div`,wn,[v(o(j),{"model-value":s.modelInput,"onUpdate:modelValue":n[14]||=e=>l(`update:model-input`,String(e)),placeholder:o(i)(`providers.fields.modelInputPlaceholder`),onKeydown:n[15]||=p(a(e=>l(`add-model`),[`prevent`]),[`enter`]),class:`flex-1`},null,8,[`model-value`,`placeholder`]),v(o(be),{"model-value":s.contextWindowSelect,"onUpdate:modelValue":n[16]||=e=>l(`update:context-window-select`,String(e))},{default:r(()=>[v(o(Te),{class:`w-28`},{default:r(()=>[v(o(ye),{placeholder:o(i)(`providers.fields.context`)},null,8,[`placeholder`])]),_:1}),v(o(xe),null,{default:r(()=>[(S(!0),d(c,null,y(o(mn),t=>(S(),h(o(k),{key:t.value,value:t.value},{default:r(()=>[e(C(t.label),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`model-value`]),v(o(x),{type:`button`,variant:`outline`,size:`sm`,onClick:n[17]||=e=>l(`add-model`),disabled:!s.modelInput.trim()},{default:r(()=>[e(C(o(i)(`providers.fields.addModel`)),1)]),_:1},8,[`disabled`])])]),g(`div`,Tn,[g(`div`,En,[g(`div`,Dn,C(o(i)(`providers.concurrency.title`)),1),v(Oe,{mode:s.concurrencyMode,"max-concurrency":s.maxConcurrency,"queue-timeout-ms":s.queueTimeoutMs,"max-queue-size":s.maxQueueSize,compact:``,"onUpdate:mode":n[18]||=e=>l(`update:concurrency-mode`,e),"onUpdate:maxConcurrency":n[19]||=e=>l(`update:max-concurrency`,e),"onUpdate:queueTimeoutMs":n[20]||=e=>l(`update:queue-timeout-ms`,e),"onUpdate:maxQueueSize":n[21]||=e=>l(`update:max-queue-size`,e)},null,8,[`mode`,`max-concurrency`,`queue-timeout-ms`,`max-queue-size`])]),g(`div`,On,[g(`div`,kn,C(o(i)(`providers.transform.title`)),1),v(ke,{"inject-headers":s.transformInjectHeaders,"drop-fields":s.transformDropFields,"request-defaults":s.transformRequestDefaults,"onUpdate:injectHeaders":n[22]||=e=>l(`update:inject-headers`,e),"onUpdate:dropFields":n[23]||=e=>l(`update:drop-fields`,e),"onUpdate:requestDefaults":n[24]||=e=>l(`update:request-defaults`,e)},null,8,[`inject-headers`,`drop-fields`,`request-defaults`])])])],64))}}),jn=7,Mn=7,Nn=2e3;function Pn(){let{t:e}=f(),n=u([]),r=u(!1),i=u(null),a=u(null),o=u(null),s=u(null),c=u(!1),l=u([]);async function d(){try{n.value=await b.getProviders()}catch(n){console.error(`Failed to load providers:`,n),A.error(t(n,e(`providers.toast.loadFailed`)))}}function p(e){return e?e.slice(0,jn)+`*`.repeat(Mn):``}async function m(e,t){await navigator.clipboard.writeText(e),i.value=t,setTimeout(()=>{i.value=null},Nn)}function h(e){a.value=e}async function g(e){if(o.value=e,s.value=e.id,c.value=!!e.is_active,l.value=[],e.is_active)try{l.value=(await b.getProviderDependencies(e.id)).references}catch{l.value=[]}}async function _(){let n=s.value;if(!n)return;let r=c.value;o.value=null,s.value=null;try{let t=await b.updateProvider(n,{is_active:+!r});if(t.cascadedGroups?.length){let n=t.cascadedGroups.filter(e=>e.disabled).length,r=t.cascadedGroups.length-n,i=[];r>0&&i.push(e(`providers.toast.cascadeClean`,{count:r})),n>0&&i.push(e(`providers.toast.cascadeDisable`,{count:n})),A.warning(e(`providers.toast.cascadeAuto`,{actions:i.join(`, `)}))}await d()}catch(n){console.error(`Failed to toggle provider:`,n),A.error(t(n,e(`providers.toast.toggleFailed`)))}}async function ee(){let n=a.value;if(n){a.value=null;try{await b.deleteProvider(n.id),await d()}catch(n){console.error(`providerActions.delete:`,n),A.error(t(n,e(`providers.toast.deleteFailed`)))}}}async function v(){r.value=!0;try{let t=await b.reloadTransformRules();A.success(e(`providers.toast.reloadSuccess`,{pluginCount:t.loadedPlugins.length,rulesCount:t.rulesCount}))}catch(n){console.error(`providerActions.reload:`,n),A.error(t(n,e(`providers.toast.reloadFailed`)))}finally{r.value=!1}}return{providers:n,reloading:r,copiedId:i,deleteTarget:a,toggleTarget:o,pendingToggleId:s,pendingToggleActive:c,toggleDependencies:l,maskKey:p,copyKey:m,loadProviders:d,confirmDelete:h,confirmToggle:g,handleToggle:_,handleDelete:ee,handleReload:v}}var Fn=`deepseek`;function In(e,t,n){let{t:r}=f(),i=u(!1);function a(e,t){let n=[];return e.toLowerCase().includes(Fn)&&(n.push(`thinking-consistency`),t===`anthropic`?n.push(`orphan-tool-results`):n.push(`orphan-tool-results-oa`)),n}function o(t,n){if(t.length===0){A.info(r(`providers.fetchModels.empty`));return}let i=new Set(e.value.models.map(e=>e.name)),o=0;for(let n of t)i.has(n)||(e.value.models.push({name:n,context_window:T(n),patches:a(n,e.value.api_type)}),o++);o>0?A.success(r(`providers.fetchModels.success`,{source:n,total:t.length,added:o})):A.info(r(`providers.fetchModels.allExist`,{total:t.length}))}function s(){o(n(),r(`providers.fetchModels.sourcePreset`))}async function c(){let n=t();if(!n){s();return}if(!e.value.api_key?.trim()){A.error(r(`providers.fetchModels.noApiKey`));return}i.value=!0;try{let t=await b.fetchUpstreamModels({base_url:e.value.base_url,models_endpoint:n,api_key:e.value.api_key,api_type:e.value.api_type});if(t.length===0){s();return}o(t,r(`providers.fetchModels.sourceUpstream`))}catch{s()}finally{i.value=!1}}return{fetchingModels:i,fetchUpstreamModels:c}}var Ln={class:`p-6`},Rn={class:`flex items-center justify-between mb-4`},zn={class:`text-lg font-semibold text-foreground`},Bn={class:`flex items-center gap-2`},Vn={class:`bg-card rounded-lg border overflow-hidden`},Hn={class:`flex items-center gap-1`},Un={class:`text-muted-foreground`},Wn={class:`flex items-center gap-1`},Gn={class:`font-mono text-xs text-muted-foreground`},Kn={class:`flex flex-wrap gap-1`},qn={key:0,class:`ml-1 text-muted-foreground`},Jn={key:0,class:`text-muted-foreground text-xs`},Yn={key:2,class:`text-muted-foreground`},Xn={key:0,class:`rounded-md border-2 border-primary/30 bg-primary/5 p-3 space-y-2`},Zn={class:`flex items-center gap-1.5 text-xs font-semibold text-primary`},Qn={class:`flex gap-2`},$n={key:1,class:`flex flex-col items-center justify-center py-10 text-muted-foreground`},er={class:`text-sm`},tr={key:0,class:`mt-2 space-y-1`},nr={class:`text-sm font-medium`},rr=w({__name:`Providers`,setup(i){let{t:s}=f(),{form:l,errors:u,concurrencyMode:p,dialogOpen:w,editingId:T,modelInput:ie,contextWindowSelect:O,transformForm:j,presetHook:Oe,validate:ke,buildPayload:Me,addModel:Ne,removeModel:Pe,updateModel:Fe,updateModelTimeout:Ie,toggleModelCapability:Le,onConcurrencyModeChange:M,openCreate:Re,openEdit:N,saveTransformRules:P}=gn(),{providerPresets:F,presetGroup:I,presetPlan:L,availablePlans:ze,onGroupChange:Be,onPresetChange:Ve,loadPresets:R,getCurrentModelsEndpoint:z,getCurrentPresetModels:B}=Oe,{providers:He,reloading:V,copiedId:Ue,deleteTarget:We,toggleTarget:H,toggleDependencies:Ge,maskKey:U,copyKey:W,loadProviders:Ke,confirmDelete:G,confirmToggle:K,handleToggle:qe,handleDelete:Je,handleReload:Ye}=Pn(),{fetchingModels:Xe,fetchUpstreamModels:Ze}=In(l,z,B);function Qe(e){return e.capabilities??[`text`]}function $e(e){return e>=1e6?`${e/dn}M`:e>=1e3?`${e/un}K`:`${e}`}async function et(){if(ke())try{let e=Me();e.name=l.value.name.trim();let t=T.value;T.value?await b.updateProvider(T.value,e):(e.api_key=l.value.api_key,t=(await b.createProvider(e)).id),await P(t),w.value=!1,await Ke()}catch(e){console.error(`Failed to save provider:`,e),A.error(t(e,s(`providers.toast.saveFailed`)))}}return ee(async()=>{await Promise.allSettled([R(),Ke()])}),(t,i)=>(S(),d(`div`,Ln,[g(`div`,Rn,[g(`h2`,zn,C(o(s)(`providers.title`)),1),g(`div`,Bn,[v(o(x),{variant:`outline`,size:`sm`,onClick:o(Ye),disabled:o(V)},{default:r(()=>[v(o(Ae),{class:m([`w-4 h-4 mr-1`,{"animate-spin":o(V)}])},null,8,[`class`]),e(` `+C(o(s)(`providers.reloadPlugin`)),1)]),_:1},8,[`onClick`,`disabled`]),v(o(x),{onClick:o(Re),class:`flex items-center gap-1`},{default:r(()=>[i[25]||=g(`svg`,{class:`w-4 h-4`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[g(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M12 4v16m8-8H4`})],-1),e(` `+C(o(s)(`providers.addProvider`)),1)]),_:1},8,[`onClick`])])]),g(`div`,Vn,[v(o(se),null,{default:r(()=>[v(o(fe),null,{default:r(()=>[v(o(ce),{class:`bg-muted`},{default:r(()=>[v(o(E),{class:`text-muted-foreground`},{default:r(()=>[e(C(o(s)(`providers.tableHeaders.name`)),1)]),_:1}),v(o(E),{class:`text-muted-foreground`},{default:r(()=>[e(C(o(s)(`providers.tableHeaders.type`)),1)]),_:1}),v(o(E),{class:`text-muted-foreground`},{default:r(()=>[e(C(o(s)(`providers.tableHeaders.baseUrl`)),1)]),_:1}),v(o(E),{class:`text-xs`},{default:r(()=>[...i[26]||=[e(`Path`,-1)]]),_:1}),v(o(E),{class:`text-muted-foreground`},{default:r(()=>[e(C(o(s)(`providers.tableHeaders.apiKey`)),1)]),_:1}),v(o(E),{class:`text-muted-foreground`},{default:r(()=>[e(C(o(s)(`providers.tableHeaders.models`)),1)]),_:1}),v(o(E),{class:`text-muted-foreground`},{default:r(()=>[e(C(o(s)(`providers.tableHeaders.concurrency`)),1)]),_:1}),v(o(E),{class:`text-muted-foreground`},{default:r(()=>[e(C(o(s)(`providers.tableHeaders.status`)),1)]),_:1}),v(o(E),{class:`text-right text-muted-foreground`},{default:r(()=>[e(C(o(s)(`providers.tableHeaders.actions`)),1)]),_:1})]),_:1})]),_:1}),v(o(oe),null,{default:r(()=>[(S(!0),d(c,null,y(o(He),t=>(S(),h(o(ce),{key:t.id,class:m({"opacity-60":!t.is_active})},{default:r(()=>[v(o(D),{class:`font-medium`},{default:r(()=>[e(C(t.name),1)]),_:2},1024),v(o(D),null,{default:r(()=>[v(o(he),{variant:`secondary`},{default:r(()=>[e(C(o(hn)[t.api_type]??t.api_type),1)]),_:2},1024)]),_:2},1024),v(o(D),null,{default:r(()=>[g(`div`,Hn,[g(`span`,Un,C(t.base_url),1),t.proxy_type?(S(),h(o(je),{key:0,class:`w-3 h-3 text-muted-foreground`,title:`Proxy: ${t.proxy_type.toUpperCase()}`},null,8,[`title`])):_(``,!0)])]),_:2},1024),v(o(D),{class:`text-muted-foreground text-xs`},{default:r(()=>[e(C(t.upstream_path||(t.api_type===`anthropic`?`/v1/messages`:`/v1/chat/completions`)),1)]),_:2},1024),v(o(D),null,{default:r(()=>[g(`div`,Wn,[g(`span`,Gn,C(o(U)(t.api_key)),1),v(o(x),{variant:`ghost`,size:`sm`,class:`h-6 w-6 p-0`,onClick:e=>o(W)(t.api_key,t.id)},{default:r(()=>[(S(),h(te(o(Ue)===t.id?o(ve):o(ne)),{class:m([`w-3.5 h-3.5`,{"text-success":o(Ue)===t.id}])},null,8,[`class`]))]),_:2},1032,[`onClick`])])]),_:2},1024),v(o(D),null,{default:r(()=>[g(`div`,Kn,[(S(!0),d(c,null,y(t.models||[],t=>(S(),d(`div`,{key:t.name,class:`flex items-center gap-1`},[v(o(he),{variant:`secondary`,class:`text-xs`},{default:r(()=>[e(C(t.name)+` `,1),t.context_window?(S(),d(`span`,qn,`(`+C($e(t.context_window))+`)`,1)):_(``,!0)]),_:2},1024),Qe(t).includes(`image`)?(S(),h(o(he),{key:0,variant:`outline`,class:`text-[10px] px-1 py-0 gap-0.5 text-primary/70 border-primary/20`},{default:r(()=>[v(o(re),{class:`w-2.5 h-2.5`})]),_:1})):_(``,!0)]))),128)),t.models?.length?_(``,!0):(S(),d(`span`,Jn,`-`))])]),_:2},1024),v(o(D),null,{default:r(()=>[t.adaptive_enabled?(S(),h(o(he),{key:0,variant:`outline`},{default:r(()=>[e(C(o(s)(`common.adaptive`)),1)]),_:1})):t.max_concurrency>0?(S(),h(o(he),{key:1,variant:`secondary`},{default:r(()=>[e(C(t.max_concurrency),1)]),_:2},1024)):(S(),d(`span`,Yn,`-`))]),_:2},1024),v(o(D),null,{default:r(()=>[v(o(x),{variant:`ghost`,size:`sm`,class:`gap-1.5`,onClick:e=>o(K)(t)},{default:r(()=>[g(`span`,{class:m([`relative inline-flex h-4 w-7 shrink-0 items-center rounded-full transition-colors`,t.is_active?`bg-primary`:`bg-input`])},[g(`span`,{class:m([`inline-block h-3 w-3 rounded-full bg-background shadow-sm transition-transform`,t.is_active?`translate-x-3.5`:`translate-x-0.5`])},null,2)],2),v(o(he),{variant:t.is_active?`default`:`secondary`},{default:r(()=>[e(C(t.is_active?o(s)(`common.enabled`):o(s)(`common.disabled`)),1)]),_:2},1032,[`variant`])]),_:2},1032,[`onClick`])]),_:2},1024),v(o(D),{class:`text-right`},{default:r(()=>[v(o(x),{variant:`ghost`,size:`sm`,onClick:e=>o(N)(t),class:`text-muted-foreground hover:text-primary mr-2`},{default:r(()=>[e(C(o(s)(`common.edit`)),1)]),_:1},8,[`onClick`]),v(o(x),{variant:`ghost`,size:`sm`,onClick:e=>o(G)(t),class:`text-muted-foreground hover:text-destructive`},{default:r(()=>[e(C(o(s)(`common.delete`)),1)]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1032,[`class`]))),128)),o(He).length===0?(S(),h(o(ce),{key:0},{default:r(()=>[v(o(D),{colspan:`9`,class:`text-center text-muted-foreground py-8`},{default:r(()=>[e(C(o(s)(`providers.noProviders`)),1)]),_:1})]),_:1})):_(``,!0)]),_:1})]),_:1})]),v(o(ue),{open:o(w),"onUpdate:open":i[22]||=e=>n(w)?w.value=e:null},{default:r(()=>[v(o(ae),{class:`sm:max-w-4xl max-h-[85vh] overflow-y-auto`},{default:r(()=>[v(o(le),null,{default:r(()=>[v(o(pe),null,{default:r(()=>[e(C(o(T)?o(s)(`providers.editProvider`):o(s)(`providers.addProvider`)),1)]),_:1})]),_:1}),g(`form`,{onSubmit:a(et,[`prevent`]),class:`space-y-4`},[o(T)?_(``,!0):(S(),d(`div`,Xn,[g(`div`,Zn,[i[27]||=g(`svg`,{class:`w-3.5 h-3.5`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[g(`path`,{d:`M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z`})],-1),e(` `+C(o(s)(`providers.template.title`)),1)]),g(`div`,Qn,[v(o(be),{modelValue:o(I),"onUpdate:modelValue":[i[0]||=e=>n(I)?I.value=e:null,o(Be)]},{default:r(()=>[v(o(Te),{class:`flex-1 border-primary/40`},{default:r(()=>[v(o(ye),{placeholder:o(s)(`providers.template.selectProvider`)},null,8,[`placeholder`])]),_:1}),v(o(xe),null,{default:r(()=>[v(o(k),{value:`__custom__`},{default:r(()=>[e(C(o(s)(`providers.template.custom`)),1)]),_:1}),(S(!0),d(c,null,y(o(F),t=>(S(),h(o(k),{key:t.group,value:t.group},{default:r(()=>[e(C(t.group),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`,`onUpdate:modelValue`]),o(I)===`__custom__`?_(``,!0):(S(),h(o(be),{key:0,modelValue:o(L),"onUpdate:modelValue":[i[1]||=e=>n(L)?L.value=e:null,o(Ve)],disabled:!o(I)||o(I)===`__custom__`},{default:r(()=>[v(o(Te),{class:`flex-1 border-primary/40`},{default:r(()=>[v(o(ye),{placeholder:o(s)(`providers.template.selectPlan`)},null,8,[`placeholder`])]),_:1}),v(o(xe),null,{default:r(()=>[(S(!0),d(c,null,y(o(ze),t=>(S(),h(o(k),{key:t.plan,value:t.plan},{default:r(()=>[e(C(t.plan),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`,`onUpdate:modelValue`,`disabled`]))])])),!o(I)&&!o(T)?(S(),d(`div`,$n,[i[28]||=g(`svg`,{class:`w-10 h-10 mb-3 opacity-30`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[g(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`}),g(`path`,{d:`M9 12l2 2 4-4`})],-1),g(`span`,er,C(o(s)(`providers.template.selectFirst`)),1)])):_(``,!0),o(I)||o(T)?(S(),h(An,{key:2,name:o(l).name,"api-type":o(l).api_type,"base-url":o(l).base_url,"api-key":o(l).api_key,"upstream-path":o(l).upstream_path,"proxy-type":o(l).proxy_type,"proxy-url":o(l).proxy_url,"proxy-username":o(l).proxy_username,"proxy-password":o(l).proxy_password,"errors-name":o(u).name??``,"errors-base-url":o(u).base_url??``,"errors-api-key":o(u).api_key??``,"editing-id":o(T),models:o(l).models,"fetching-models":o(Xe),"model-input":o(ie),"context-window-select":o(O),"has-models-endpoint":!!o(z)(),"preset-group":o(I),"has-api-key":!!o(l).api_key,"concurrency-mode":o(p),"max-concurrency":o(l).max_concurrency,"queue-timeout-ms":o(l).queue_timeout_ms,"max-queue-size":o(l).max_queue_size,"transform-inject-headers":o(j).injectHeadersInput,"transform-drop-fields":o(j).dropFieldsInput,"transform-request-defaults":o(j).requestDefaultsInput,"onUpdate:name":i[2]||=e=>o(l).name=e,"onUpdate:apiType":i[3]||=e=>o(l).api_type=e,"onUpdate:baseUrl":i[4]||=e=>o(l).base_url=e,"onUpdate:apiKey":i[5]||=e=>o(l).api_key=e,"onUpdate:upstreamPath":i[6]||=e=>o(l).upstream_path=e,"onUpdate:proxyType":i[7]||=e=>o(l).proxy_type=e,"onUpdate:proxyUrl":i[8]||=e=>o(l).proxy_url=e,"onUpdate:proxyUsername":i[9]||=e=>o(l).proxy_username=e,"onUpdate:proxyPassword":i[10]||=e=>o(l).proxy_password=e,onClearErrors:i[11]||=e=>delete o(u)[e],onClearProxy:i[12]||=e=>{o(l).proxy_url=``,o(l).proxy_username=``,o(l).proxy_password=``},"onUpdate:model":o(Fe),onRemoveModel:o(Pe),"onUpdate:modelTimeout":o(Ie),onToggleModelCapability:o(Le),onFetchUpstreamModels:o(Ze),onAddModel:o(Ne),"onUpdate:modelInput":i[13]||=e=>ie.value=e,"onUpdate:contextWindowSelect":i[14]||=e=>O.value=e,"onUpdate:concurrencyMode":o(M),"onUpdate:maxConcurrency":i[15]||=e=>o(l).max_concurrency=e,"onUpdate:queueTimeoutMs":i[16]||=e=>o(l).queue_timeout_ms=e,"onUpdate:maxQueueSize":i[17]||=e=>o(l).max_queue_size=e,"onUpdate:injectHeaders":i[18]||=e=>o(j).injectHeadersInput=e,"onUpdate:dropFields":i[19]||=e=>o(j).dropFieldsInput=e,"onUpdate:requestDefaults":i[20]||=e=>o(j).requestDefaultsInput=e},null,8,`name.api-type.base-url.api-key.upstream-path.proxy-type.proxy-url.proxy-username.proxy-password.errors-name.errors-base-url.errors-api-key.editing-id.models.fetching-models.model-input.context-window-select.has-models-endpoint.preset-group.has-api-key.concurrency-mode.max-concurrency.queue-timeout-ms.max-queue-size.transform-inject-headers.transform-drop-fields.transform-request-defaults.onUpdate:model.onRemoveModel.onUpdate:modelTimeout.onToggleModelCapability.onFetchUpstreamModels.onAddModel.onUpdate:concurrencyMode`.split(`.`))):_(``,!0),v(o(de),null,{default:r(()=>[v(o(x),{type:`button`,variant:`outline`,onClick:i[21]||=e=>w.value=!1},{default:r(()=>[e(C(o(s)(`common.cancel`)),1)]),_:1}),v(o(x),{type:`submit`},{default:r(()=>[e(C(o(s)(`common.save`)),1)]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]),v(o(_e),{open:!!o(We),"onUpdate:open":i[23]||=e=>{e||(We.value=null)}},{default:r(()=>[v(o(ge),null,{default:r(()=>[v(o(me),null,{default:r(()=>[v(o(Se),null,{default:r(()=>[e(C(o(s)(`providers.confirmDelete.title`)),1)]),_:1}),v(o(Ee),null,{default:r(()=>[e(C(o(s)(`providers.confirmDelete.message`,{name:o(We)?.name})),1)]),_:1})]),_:1}),v(o(we),null,{default:r(()=>[v(o(Ce),null,{default:r(()=>[e(C(o(s)(`common.cancel`)),1)]),_:1}),v(o(x),{variant:`destructive`,onClick:o(Je)},{default:r(()=>[e(C(o(s)(`common.delete`)),1)]),_:1},8,[`onClick`])]),_:1})]),_:1})]),_:1},8,[`open`]),v(o(_e),{open:!!o(H),"onUpdate:open":i[24]||=e=>{e||(H.value=null)}},{default:r(()=>[v(o(ge),null,{default:r(()=>[v(o(me),null,{default:r(()=>[v(o(Se),null,{default:r(()=>[e(C(o(H)?.is_active?o(s)(`providers.confirmToggle.titleDisable`):o(s)(`providers.confirmToggle.titleEnable`)),1)]),_:1}),v(o(Ee),null,{default:r(()=>[e(C(o(H)?.is_active?o(s)(`providers.confirmToggle.messageDisable`,{name:o(H)?.name}):o(s)(`providers.confirmToggle.messageEnable`,{name:o(H)?.name}))+` `,1),o(Ge).length?(S(),d(`div`,tr,[g(`div`,nr,C(o(s)(`providers.confirmToggle.dependencyWarning`)),1),(S(!0),d(c,null,y(o(Ge),e=>(S(),d(`div`,{key:e,class:`text-destructive text-sm`},C(e),1))),128))])):_(``,!0)]),_:1})]),_:1}),v(o(we),null,{default:r(()=>[v(o(Ce),null,{default:r(()=>[e(C(o(s)(`common.cancel`)),1)]),_:1}),v(o(De),{onClick:o(qe)},{default:r(()=>[e(C(o(s)(`common.confirm`)),1)]),_:1},8,[`onClick`])]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{rr as default};
@@ -0,0 +1 @@
1
+ import{$ as e,A as t,Et as n,Ht as r,K as i,Pt as a,Q as o,R as s,Wt as c,X as l,Y as u,dt as d,et as f,gt as p,ht as ee,k as m,n as h,pt as g,qt as _,r as v,tt as y}from"./button-DZwflOXO.js";import{n as te,t as b}from"./Switch-bk3eQSZ_.js";import{t as ne}from"./trash-2-CrcHK-G_.js";import{t as x}from"./Label-CjUuzGNQ.js";import{$ as re,Z as S,b as C,ct as w,nt as ie,r as T,rt as E}from"./index-PMAQyWJb.js";import{n as D,t as O}from"./CardContent-yiYaxAko.js";import{n as k,t as A}from"./CardTitle-CzqSlrtn.js";import{t as j}from"./Input-DEfnoFS3.js";var M=y({__name:`CardDescription`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,n)=>(g(),o(`div`,{"data-slot":`card-description`,class:c(r(v)(`text-muted-foreground text-sm`,t.class))},[p(e.$slots,`default`)],2))}}),N={class:`p-6`},P={class:`text-lg font-semibold text-foreground mb-4`},F={class:`flex items-center gap-3`},I={class:`flex items-center gap-3`},L={class:`flex items-center gap-3`},R={class:`flex items-center gap-3`},z={class:`space-y-3`},B={class:`w-40 shrink-0`},V={class:`flex items-center gap-3`},H={class:`text-xs text-muted-foreground mt-2`},ae={class:`mt-3 text-xs text-muted-foreground`},U={class:`cursor-pointer hover:text-foreground transition-colors`},W={class:`mt-2 space-y-1 pl-2 border-l-2 border-muted`},G={class:`whitespace-pre-line`},K={class:`whitespace-pre-line`},q={class:`flex justify-end mt-4`},J={key:0,class:`flex items-center gap-1`},oe={key:1},Y=y({__name:`ProxyEnhancement`,setup(c){let{t:p}=s(),v=a(!0),y=a(!1),Y=a(!1),X=a(!1),Z=a(!1),Q=a(!1),$=a([]);async function se(){try{let e=await m.getProxyEnhancement();v.value=e.tool_round_limit_enabled,y.value=e.tool_call_loop_enabled,Y.value=e.stream_loop_enabled,X.value=e.tool_error_logging_enabled,Z.value=(await re()).enabled;let[t]=await Promise.allSettled([S()]);t.status===`fulfilled`&&($.value=t.value.entries.map(e=>({...e,persisted:!0})))}catch(e){console.error(`Failed to load proxy enhancement config:`,e),T.error(t(e,p(`proxyEnhancement.loadFailed`)))}}async function ce(){Q.value=!0;try{let e=$.value.filter(e=>e.client_type.trim()&&e.session_header_key.trim()).map(e=>({client_type:e.client_type.trim(),session_header_key:e.session_header_key.trim()}));await Promise.all([m.updateProxyEnhancement({tool_call_loop_enabled:y.value,stream_loop_enabled:Y.value,tool_round_limit_enabled:v.value,tool_error_logging_enabled:X.value}),E(Z.value),ie(e)]),T.success(p(`common.saveSuccess`))}catch(e){console.error(`Failed to save config:`,e),T.error(t(e,p(`proxyEnhancement.saveFailed`)))}finally{Q.value=!1}}function le(){$.value.push({client_type:``,session_header_key:``,persisted:!1})}function ue(e){$.value.splice(e,1)}return d(()=>{se()}),(t,a)=>(g(),o(`div`,N,[u(`h2`,P,_(r(p)(`proxyEnhancement.title`)),1),f(r(D),null,{default:n(()=>[f(r(k),null,{default:n(()=>[f(r(A),null,{default:n(()=>[e(_(r(p)(`proxyEnhancement.loopDetection.toolRoundLimit.title`)),1)]),_:1}),f(r(M),null,{default:n(()=>[e(_(r(p)(`proxyEnhancement.loopDetection.toolRoundLimit.description`)),1)]),_:1})]),_:1}),f(r(O),null,{default:n(()=>[u(`div`,F,[f(r(b),{id:`tool-round-limit-toggle`,modelValue:v.value,"onUpdate:modelValue":a[0]||=e=>v.value=e},null,8,[`modelValue`]),f(r(x),{for:`tool-round-limit-toggle`},{default:n(()=>[e(_(v.value?r(p)(`proxyEnhancement.status.enabled`):r(p)(`proxyEnhancement.status.disabled`)),1)]),_:1})])]),_:1})]),_:1}),f(r(D),{class:`mt-4`},{default:n(()=>[f(r(k),null,{default:n(()=>[f(r(A),null,{default:n(()=>[e(_(r(p)(`proxyEnhancement.loopDetection.toolCallLoop.title`)),1)]),_:1}),f(r(M),null,{default:n(()=>[e(_(r(p)(`proxyEnhancement.loopDetection.toolCallLoop.description`)),1)]),_:1})]),_:1}),f(r(O),null,{default:n(()=>[u(`div`,I,[f(r(b),{id:`tool-call-loop-toggle`,modelValue:y.value,"onUpdate:modelValue":a[1]||=e=>y.value=e},null,8,[`modelValue`]),f(r(x),{for:`tool-call-loop-toggle`},{default:n(()=>[e(_(y.value?r(p)(`proxyEnhancement.status.enabled`):r(p)(`proxyEnhancement.status.disabled`)),1)]),_:1})])]),_:1})]),_:1}),f(r(D),{class:`mt-4`},{default:n(()=>[f(r(k),null,{default:n(()=>[f(r(A),null,{default:n(()=>[e(_(r(p)(`proxyEnhancement.loopDetection.streamLoop.title`)),1)]),_:1}),f(r(M),null,{default:n(()=>[e(_(r(p)(`proxyEnhancement.loopDetection.streamLoop.description`)),1)]),_:1})]),_:1}),f(r(O),null,{default:n(()=>[u(`div`,L,[f(r(b),{id:`stream-loop-toggle`,modelValue:Y.value,"onUpdate:modelValue":a[2]||=e=>Y.value=e},null,8,[`modelValue`]),f(r(x),{for:`stream-loop-toggle`},{default:n(()=>[e(_(Y.value?r(p)(`proxyEnhancement.status.enabled`):r(p)(`proxyEnhancement.status.disabled`)),1)]),_:1})])]),_:1})]),_:1}),f(r(D),{class:`mt-4`},{default:n(()=>[f(r(k),null,{default:n(()=>[f(r(A),null,{default:n(()=>[e(_(r(p)(`proxyEnhancement.toolErrorLogging.title`)),1)]),_:1}),f(r(M),null,{default:n(()=>[e(_(r(p)(`proxyEnhancement.toolErrorLogging.description`)),1)]),_:1})]),_:1}),f(r(O),null,{default:n(()=>[u(`div`,R,[f(r(b),{id:`tool-error-logging-toggle`,modelValue:X.value,"onUpdate:modelValue":a[3]||=e=>X.value=e},null,8,[`modelValue`]),f(r(x),{for:`tool-error-logging-toggle`},{default:n(()=>[e(_(X.value?r(p)(`proxyEnhancement.status.enabled`):r(p)(`proxyEnhancement.status.disabled`)),1)]),_:1})])]),_:1})]),_:1}),f(r(D),{class:`mt-4`},{default:n(()=>[f(r(k),null,{default:n(()=>[f(r(A),null,{default:n(()=>[...a[5]||=[e(`客户端识别`,-1)]]),_:1}),f(r(M),null,{default:n(()=>[...a[6]||=[e(` 配置客户端 session header 映射,用于识别请求来源。携带对应 header 的请求将被识别为该客户端类型。 `,-1)]]),_:1})]),_:1}),f(r(O),null,{default:n(()=>[u(`div`,z,[(g(!0),o(i,null,ee($.value,(t,i)=>(g(),o(`div`,{key:i,class:`flex items-center gap-3`},[u(`div`,B,[t.persisted?(g(),l(r(C),{key:0,variant:`secondary`},{default:n(()=>[e(_(t.client_type),1)]),_:2},1024)):(g(),l(r(j),{key:1,modelValue:t.client_type,"onUpdate:modelValue":e=>t.client_type=e,placeholder:`client_type`,class:`h-8`},null,8,[`modelValue`,`onUpdate:modelValue`]))]),f(r(j),{modelValue:t.session_header_key,"onUpdate:modelValue":e=>t.session_header_key=e,placeholder:`session header key`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),f(r(h),{variant:`ghost`,size:`icon`,disabled:$.value.length<=1,onClick:e=>ue(i)},{default:n(()=>[f(r(ne),{class:`w-4 h-4`})]),_:1},8,[`disabled`,`onClick`])]))),128)),f(r(h),{variant:`outline`,size:`sm`,onClick:le},{default:n(()=>[f(r(te),{class:`w-4 h-4 mr-1`}),a[7]||=e(` 新增条目 `,-1)]),_:1})])]),_:1})]),_:1}),f(r(D),{class:`mt-4`},{default:n(()=>[f(r(k),null,{default:n(()=>[f(r(A),null,{default:n(()=>[...a[8]||=[e(`Token 预估`,-1)]]),_:1}),f(r(M),null,{default:n(()=>[...a[9]||=[e(` 上游 API 不返回 token 统计数据时,通过 gpt-tokenizer 估算输入 token 数和缓存命中量。仅对携带 session_id 的请求生效。 `,-1)]]),_:1})]),_:1}),f(r(O),null,{default:n(()=>[u(`div`,V,[f(r(b),{id:`token-estimation-toggle`,"model-value":Z.value,"onUpdate:modelValue":a[4]||=e=>Z.value=e},null,8,[`model-value`]),f(r(x),{for:`token-estimation-toggle`},{default:n(()=>[e(_(Z.value?r(p)(`proxyEnhancement.status.enabled`):r(p)(`proxyEnhancement.status.disabled`)),1)]),_:1})]),u(`p`,H,_(r(p)(`proxyEnhancement.tokenEstimation.desc`)),1),a[10]||=u(`p`,{class:`text-xs text-muted-foreground mt-1`},` 修改后点击「保存」按钮生效 `,-1),u(`details`,ae,[u(`summary`,U,_(r(p)(`proxyEnhancement.tokenEstimation.setupTitle`))+` ▸ `,1),u(`div`,W,[u(`p`,null,_(r(p)(`proxyEnhancement.tokenEstimation.claudeCode`)),1),u(`p`,G,_(r(p)(`proxyEnhancement.tokenEstimation.piExtension`)),1),u(`p`,K,_(r(p)(`proxyEnhancement.tokenEstimation.piModelsJson`)),1)])])]),_:1})]),_:1}),u(`div`,q,[f(r(h),{disabled:Q.value,onClick:ce},{default:n(()=>[Q.value?(g(),o(`span`,J,[f(r(w),{class:`w-4 h-4 animate-spin`}),e(` `+_(r(p)(`proxyEnhancement.dynamicModel.saving`)),1)])):(g(),o(`span`,oe,_(r(p)(`common.save`)),1))]),_:1},8,[`disabled`])])]))}});export{Y as default};
@@ -0,0 +1 @@
1
+ import{$ as e,A as t,At as n,Ct as r,Et as i,G as a,Ht as o,J as s,K as c,P as l,Pt as u,Q as d,R as ee,W as f,Wt as p,X as m,Y as h,Z as g,dt as _,et as v,ht as y,k as b,n as x,pt as S,qt as C,tt as w}from"./button-DZwflOXO.js";import{n as T,t as E}from"./MappingEntryEditor-GejG6FYv.js";import{i as D,n as te,r as O,t as k}from"./ModelCard-DdQtySPM.js";import{t as A}from"./Switch-bk3eQSZ_.js";import{t as j}from"./trash-2-CrcHK-G_.js";import{t as M}from"./Checkbox-2voapLgE.js";import{t as N}from"./Label-CjUuzGNQ.js";import{b as P,f as F,g as I,h as L,m as R,p as z,r as B}from"./index-PMAQyWJb.js";import{n as V,t as H}from"./CardContent-yiYaxAko.js";import{n as U,t as W}from"./CardTitle-CzqSlrtn.js";import{t as G}from"./Input-DEfnoFS3.js";import{n as K,t as ne}from"./TransformRulesForm-Bo-zFABv.js";var q=10,re=12e4,J=100,ie=128e3,ae=800,oe=1500,Y={DeepSeek:`deepseek`,百度千帆:`qianfan`,科大讯飞:`iflytek`,硅基流动:`siliconflow`,智谱:`zhipu`,月之暗面:`moonshot`,Minimax:`minimax`,火山引擎:`volcengine`,阿里云:`aliyun`,腾讯云:`tencent`,OpenCode:`opencode`,阶跃星辰:`stepfun`};function X(e){return Y[e]??e.toLowerCase().replace(/[^a-z0-9]/gi,`-`).replace(/-+/g,`-`)}function se(e,t,n){let r=[];return e.toLowerCase().includes(`deepseek`)&&(r.push(`thinking-consistency`),t===`anthropic`?r.push(`orphan-tool-results`):r.push(`orphan-tool-results-oa`)),t===`openai`&&n&&r.push(`developer-role`),r}function Z(e,t,n,r){if(!e&&!t&&!n)return;let i={};if(e)try{i.inject_headers=JSON.parse(e)}catch{return r(`injectHeadersJsonError`),!1}if(t&&(i.drop_fields=t.split(`,`).map(e=>e.trim()).filter(Boolean)),n)try{i.request_defaults=JSON.parse(n)}catch{return r(`requestDefaultsJsonError`),!1}return Object.keys(i).length>0?i:void 0}async function ce(e){let t=[];for(let n of e)if(n.existing&&n.existingId&&n.originalActive!==void 0&&n.active!==n.originalActive)try{await b.toggleMappingGroup(n.existingId)}catch{t.push(n.clientModel)}return t}function le(e,t){return e.filter(e=>t.has(e.name)&&!e.exists).map(e=>({name:e.name,status_code:e.status_code,body_pattern:e.body_pattern,retry_strategy:e.retry_strategy,retry_delay_ms:e.retry_delay_ms,max_retries:e.max_retries,max_delay_ms:e.max_delay_ms}))}function ue(e){return{name:e.isCustom?`custom-${Date.now()}`:`${X(e.selectedGroup)}-${X(e.selectedPlan)}`,api_type:e.apiType,base_url:e.baseUrl,upstream_path:e.upstreamPath||void 0,api_key:e.apiKey,models:e.models.map(e=>({name:e.name,context_window:e.contextWindow,patches:e.patches.length>0?e.patches:void 0,stream_timeout_ms:e.stream_timeout_ms??void 0,capabilities:e.capabilities&&e.capabilities.length>0?e.capabilities:void 0})),concurrency_mode:e.concurrencyMode,max_concurrency:e.concurrencyMode===`none`?void 0:e.maxConcurrency,queue_timeout_ms:e.concurrencyMode===`none`?void 0:e.queueTimeoutMs,max_queue_size:e.concurrencyMode===`none`?void 0:e.maxQueueSize}}function de(e,t,n){let r;return r=e===`pi`?t.map(e=>e.name):O[e]??t.map(e=>e.name),r.map(i=>{let a=n.find(e=>e.client_model===i);if(a){let e={};try{e=JSON.parse(a.rule)}catch{e={}}let n=e.targets??[];return{clientModel:i,targets:n.length>0?n.map(e=>({backend_model:e.backend_model,provider_id:e.provider_id,overflow_provider_id:e.overflow_provider_id,overflow_model:e.overflow_model})):[{backend_model:t[0]?.name??``,provider_id:`__new__`}],existing:!0,existingId:a.id,tag:`existing`,active:!!a.is_active,originalActive:!!a.is_active}}return{clientModel:i,targets:[{backend_model:t[r.indexOf(i)]?.name??t[t.length-1]?.name??``,provider_id:`__new__`}],existing:!1,tag:e===`pi`?`auto`:`def`,active:!0}})}function fe(){let{t:e}=ee(),n=u(`claude-code`),i=u([]),a=u(``),o=u(``),c=u(`anthropic`),d=u(``),f=u([]),p=u([]),m=u([]),h=u(new Set),g=u(!1),v=u(`idle`),y=u(`auto`),x=u(q),S=u(re),C=u(J),w=u(``),T=u(``),E=u(``),O=u([]),k=u([]),A=s(()=>a.value===`__custom__`),j=s(()=>te.find(e=>e.id===n.value)),M=s(()=>{if(!a.value||!o.value)return;let e=i.value.find(e=>e.group===a.value);if(e)return e.presets.find(e=>e.plan===o.value)}),N=u(``),P=u(``),F=s(()=>A.value?N.value:M.value?.baseUrl??``),I=s(()=>{if(A.value)return P.value;let e=M.value;if(!e)return``;let t=e.apiType===`anthropic`?`/v1/messages`:e.apiType===`openai-responses`?`/v1/responses`:`/v1/chat/completions`;return e.upstreamPath&&e.upstreamPath!==t?e.upstreamPath:``}),L=s(()=>i.value.find(e=>e.group===a.value)?.presets??[]),R=s(()=>!F.value.includes(`openai.com`)),z=s(()=>a.value?{provider:{id:A.value?`__new_custom__`:`__new_${X(a.value)}_${X(o.value)}__`,name:A.value?e(`quickSetup.provider.customProvider`):`${a.value} - ${o.value}`},models:f.value.filter(e=>e.enabled).map(e=>({name:e.name,contextWindow:e.contextWindow})),isNew:!0}:null),V=s(()=>{let e=k.value.map(e=>({provider:{id:e.id,name:e.name},models:(e.models??[]).map(e=>({name:e.name,contextWindow:e.context_window??ie}))}));return z.value&&z.value.models.length>0?[...e,z.value]:e}),H=s(()=>{let e=a.value;return m.value.filter(t=>!t.providers||t.providers.length===0?!0:t.providers.includes(e))});function U(e,t){return se(e,t,R.value)}function W(e){f.value=e.models.map(t=>({name:t,contextWindow:D(t),enabled:!0,patches:U(t,e.apiType),capabilities:e.modelCapabilities?.[t]}))}function G(e,t=ie){f.value.push({name:e,contextWindow:t,enabled:!0,patches:U(e,c.value),capabilities:[`text`]})}function K(){let e=f.value.filter(e=>e.enabled);p.value=de(n.value,e,O.value)}function ne(){h.value=new Set(H.value.filter(e=>!e.exists).map(e=>e.name))}function Y(e){n.value=e,K()}function fe(e){if(a.value=e,o.value=``,f.value=[],e===`__custom__`)c.value=`openai`,N.value=``,P.value=``,f.value=[];else{let t=i.value.find(t=>t.group===e);if(t&&t.presets.length>0){let e=j.value,n=(e?t.presets.find(t=>t.apiType===e.format):null)??t.presets[0];o.value=n.plan,c.value=n.apiType,W(n)}}K(),ne()}function pe(e){o.value=e;let t=i.value.find(e=>e.group===a.value);if(!t)return;let n=t.presets.find(t=>t.plan===e);n&&(c.value=n.apiType,W(n),K())}r(c,()=>{for(let e of f.value)e.patches=U(e.name,c.value)});function me(e,t){let n=new Set(h.value);t?n.add(e):n.delete(e),h.value=n}function he(e,t){let n=[...p.value];n[e]={...n[e],targets:t},p.value=n}function Q(e){let t=[...p.value];t[e]={...t[e],active:!t[e].active},p.value=t}function ge(e,t){let n=p.value.filter(t=>t.clientModel!==e);n.push({clientModel:e,targets:[{backend_model:t,provider_id:`__new__`}],existing:!1,tag:`cust`,active:!0}),p.value=n}function _e(t){if(p.value.find(e=>e.clientModel===t)?.existing){B.error(e(`quickSetup.messages.existingMappingDelete`));return}p.value=p.value.filter(e=>e.clientModel!==t)}function ve(e){y.value=e,e===`auto`?x.value=q:e===`manual`&&(x.value=3)}async function ye(){if(!d.value.trim()){v.value=`error`,B.error(e(`quickSetup.messages.fillApiKeyFirst`));return}v.value=`testing`,await new Promise(e=>setTimeout(e,ae)),v.value=`ok`}async function be(){if(!M.value){B.error(e(`quickSetup.messages.selectProviderAndPlan`));return}if(!d.value.trim()){B.error(e(`quickSetup.messages.fillApiKey`));return}g.value=!0;try{let t=Z(w.value.trim(),T.value.trim(),E.value.trim(),t=>B.error(e(`quickSetup.messages.${t}`)));if(t===!1)return;let n={provider:ue({isCustom:A.value,selectedGroup:a.value,selectedPlan:o.value,apiType:c.value,baseUrl:F.value,upstreamPath:I.value,apiKey:d.value.trim(),models:f.value,concurrencyMode:y.value,maxConcurrency:x.value,queueTimeoutMs:S.value,maxQueueSize:C.value}),mappings:p.value.filter(e=>e.targets[0]?.backend_model).map(e=>({client_model:e.clientModel,backend_model:e.targets[0]?.backend_model??``})),retry_rules:le(H.value,h.value),transform_rules:t};await b.quickSetup(n);let r=await ce(p.value);r.length>0?B.success(e(`quickSetup.messages.setupCompleteWithErrors`,{count:r.length})):B.success(e(`quickSetup.messages.setupComplete`)),await new Promise(e=>setTimeout(e,oe)),l.push(`/`)}catch(n){console.error(`quickSetup.save:`,n),B.error(t(n,e(`quickSetup.messages.setupFailed`)))}finally{g.value=!1}}return _(async()=>{try{let[e,t,n,r]=await Promise.allSettled([b.recommended.getProviders(),b.recommended.getRetryRules(),b.getMappingGroups(),b.getProviders()]);e.status===`fulfilled`&&(i.value=e.value),t.status===`fulfilled`&&(m.value=t.value),n.status===`fulfilled`&&(O.value=n.value),r.status===`fulfilled`&&(k.value=r.value),Y(`claude-code`)}catch(n){console.error(`quickSetup.load:`,n),B.error(t(n,e(`quickSetup.messages.loadFailed`)))}}),{clientType:n,providerGroups:i,selectedGroup:a,selectedPlan:o,apiType:c,apiKey:d,modelConfigs:f,mappingEntries:p,allRecommendedRules:m,recommendedRules:H,selectedRetryRules:h,saving:g,connectionStatus:v,currentClient:j,currentPreset:M,baseUrl:F,customBaseUrl:N,upstreamPath:I,customUpstreamPath:P,isCustomProvider:A,availablePlans:L,isNonOpenaiEndpoint:R,concurrencyMode:y,maxConcurrency:x,queueTimeoutMs:S,maxQueueSize:C,transformInjectHeaders:w,transformDropFields:T,transformRequestDefaults:E,existingMappings:O,allProviders:k,allProviderGroups:V,selectClient:Y,onProviderChange:fe,onPlanChange:pe,initModels:W,getDefaultPatches:U,updateMappings:K,updateMappingTargets:he,toggleMappingActive:Q,addMappingEntry:ge,removeMappingEntry:_e,toggleRetryRule:me,onConcurrencyModeChange:ve,testConnection:ye,submit:be,addCustomModel:G}}var pe={class:`space-y-1.5`},me={class:`flex items-start gap-2 px-3 py-2`},he=[`onClick`],Q={class:`flex items-center gap-1.5 shrink-0 pt-0.5`},ge={key:0,class:`py-3 text-center text-xs text-muted-foreground`},_e={class:`flex items-center gap-2 pt-2 border-t mt-2`},ve={class:`flex-1`},ye=w({__name:`QuickSetupMappingList`,props:{entries:{},providerGroups:{}},emits:[`update:targets`,`toggle-active`,`add`,`remove`],setup(t,{emit:n}){let{t:r}=ee(),s=n,l=u(new Set);function f(e){let t=new Set(l.value);t.has(e)?t.delete(e):t.add(e),l.value=t}let p=u(``),m=u();function _(){return p.value.trim().length>0&&!!m.value?.model}function b(){let e=p.value.trim(),t=m.value;e&&t&&(s(`add`,e,t.model),p.value=``,m.value=void 0)}function w(e){e.key===`Enter`&&_()&&(e.preventDefault(),b())}return(n,u)=>(S(),d(`div`,pe,[(S(!0),d(c,null,y(t.entries,(e,n)=>(S(),d(`div`,{key:e.clientModel,class:`rounded-md border border-border`},[h(`div`,me,[h(`div`,{class:`flex-1 min-w-0 cursor-pointer`,onClick:t=>f(e.clientModel)},[v(E,{entry:e,"provider-groups":t.providerGroups,expanded:l.value.has(e.clientModel),editable:!0,"onUpdate:targets":e=>s(`update:targets`,n,e)},null,8,[`entry`,`provider-groups`,`expanded`,`onUpdate:targets`])],8,he),h(`div`,Q,[v(o(x),{variant:`ghost`,size:`icon-xs`,class:`text-muted-foreground/40 hover:text-destructive`,onClick:a(t=>s(`remove`,e.clientModel),[`stop`])},{default:i(()=>[v(o(j),{class:`size-3`})]),_:1},8,[`onClick`]),v(o(A),{"model-value":e.active,"onUpdate:modelValue":e=>s(`toggle-active`,n),class:`scale-75`,onClick:u[0]||=a(()=>{},[`stop`])},null,8,[`model-value`,`onUpdate:modelValue`])])])]))),128)),t.entries.length===0?(S(),d(`p`,ge,C(o(r)(`providers.shared.noMappings`)),1)):g(``,!0),h(`div`,_e,[v(o(G),{modelValue:p.value,"onUpdate:modelValue":u[1]||=e=>p.value=e,placeholder:o(r)(`providers.shared.clientModel`),class:`h-8 flex-1 text-xs font-mono`,onKeydown:w},null,8,[`modelValue`,`placeholder`]),h(`div`,ve,[v(T,{providers:t.providerGroups,"model-value":m.value,compact:``,placeholder:o(r)(`providers.shared.selectModel`),"onUpdate:modelValue":u[2]||=e=>m.value=e},null,8,[`providers`,`model-value`,`placeholder`])]),v(o(x),{size:`sm`,variant:`outline`,class:`h-8 shrink-0`,disabled:!_(),onClick:b},{default:i(()=>[e(C(o(r)(`providers.shared.add`)),1)]),_:1},8,[`disabled`])])]))}}),be={class:`p-6 space-y-4 pb-20`},xe={class:`flex gap-2 flex-wrap`},Se={class:`text-left`},Ce={class:`font-medium text-sm leading-tight`},we={class:`text-[10px] opacity-60 leading-tight`},Te={class:`flex items-end gap-2`},Ee={class:`w-40 space-y-1`},De={class:`w-48 space-y-1`},Oe={class:`w-80 space-y-1`},ke={class:`w-48 space-y-1`},Ae={class:`w-28 space-y-1`},je={class:`w-48 space-y-1`},Me={class:`w-72 space-y-1`},Ne={key:0,class:`w-48 space-y-1`},Pe={class:`w-64 space-y-1`},Fe={class:`shrink-0 space-y-1`},Ie={class:`border-t pt-3`},Le={class:`flex items-center justify-between mb-2`},Re={class:`text-xs font-medium text-muted-foreground`},ze={key:0,class:`py-4 text-center text-xs text-muted-foreground`},Be={key:1,class:`grid grid-cols-4 gap-2`},Ve={key:2,class:`flex gap-2 mt-2`},He={class:`border-t pt-3`},Ue={class:`flex items-center justify-between mb-2`},We={class:`text-xs font-medium text-muted-foreground`},Ge={class:`grid grid-cols-5 gap-4`},Ke={class:`flex items-center justify-between`},qe={class:`col-span-2 space-y-4`},Je={class:`flex items-center justify-between`},Ye={key:0,class:`py-6 text-center text-xs text-muted-foreground`},Xe={key:1,class:`space-y-1.5 max-h-[320px] overflow-y-auto`},Ze=[`onClick`],Qe={class:`flex-1 min-w-0`},$e={class:`flex items-center gap-1.5`},et={class:`text-xs font-medium`},tt={class:`text-[10px] text-muted-foreground mt-0.5`},nt={class:`fixed bottom-0 right-0 left-56 border-t bg-card/95 backdrop-blur px-6 py-2.5 flex items-center justify-between z-10`},rt={class:`text-xs text-muted-foreground flex items-center gap-1.5`},it={class:`flex items-center gap-2`},at=w({__name:`QuickSetup`,setup(t){let{t:r}=ee(),{clientType:l,providerGroups:_,selectedGroup:b,selectedPlan:w,apiType:T,apiKey:E,modelConfigs:D,mappingEntries:O,allRecommendedRules:A,recommendedRules:j,selectedRetryRules:q,saving:re,connectionStatus:J,baseUrl:ie,availablePlans:ae,isNonOpenaiEndpoint:oe,isCustomProvider:Y,customBaseUrl:X,upstreamPath:se,customUpstreamPath:Z,concurrencyMode:ce,maxConcurrency:le,queueTimeoutMs:ue,maxQueueSize:de,allProviderGroups:pe,transformInjectHeaders:me,transformDropFields:he,transformRequestDefaults:Q,selectClient:ge,onProviderChange:_e,onPlanChange:ve,updateMappingTargets:at,toggleMappingActive:ot,addMappingEntry:st,removeMappingEntry:ct,toggleRetryRule:lt,onConcurrencyModeChange:ut,testConnection:dt,submit:ft,addCustomModel:pt}=fe(),$=u(``);function mt(){$.value.trim()&&(pt($.value.trim()),$.value=``)}let ht=s(()=>D.value.filter(e=>e.enabled).length),gt=s(()=>te.find(e=>e.id===l.value)?.name??l.value);function _t(e,t){let n=[...D.value];n[e]=t,D.value=n}function vt(e){D.value=D.value.filter((t,n)=>n!==e)}function yt(e,t){let n=[...D.value];n[e]={...n[e],stream_timeout_ms:t||void 0},D.value=n}function bt(e,t){let n=[...D.value],r={...n[e]},i=r.capabilities??[`text`];i.includes(t)?r.capabilities=i.filter(e=>e!==t):r.capabilities=[...i,t],n[e]=r,D.value=n}function xt(){if(!b.value){B.error(r(`quickSetup.messages.selectProvider`));return}if(!E.value.trim()){B.error(r(`quickSetup.messages.fillApiKey`));return}if(ht.value===0){B.error(r(`quickSetup.messages.enableOneModel`));return}B.success(r(`quickSetup.messages.validationPassed`))}return(t,s)=>(S(),d(c,null,[h(`div`,be,[v(o(V),null,{default:i(()=>[v(o(U),{class:`pb-3`},{default:i(()=>[v(o(W),{class:`text-sm font-medium`},{default:i(()=>[e(C(o(r)(`quickSetup.client.selectClient`)),1)]),_:1})]),_:1}),v(o(H),null,{default:i(()=>[h(`div`,xe,[(S(!0),d(c,null,y(o(te),e=>(S(),m(o(x),{key:e.id,variant:`outline`,class:p([`flex h-auto items-center gap-2.5 px-4 py-2.5 text-sm transition-all cursor-pointer`,o(l)===e.id?`border-primary bg-primary/5 text-primary ring-1 ring-primary/20`:`border-border hover:border-muted-foreground/30 text-muted-foreground hover:text-foreground`]),onClick:t=>o(ge)(e.id)},{default:i(()=>[h(`span`,{class:p([`w-7 h-7 rounded-md text-xs font-bold flex items-center justify-center shrink-0`,{"bg-purple-600 text-white":e.iconClass===`cc`,"bg-emerald-600 text-white":e.iconClass===`pi`,"bg-blue-600 text-white":e.iconClass===`oa`,"bg-orange-600 text-white":e.iconClass===`an`}])},C(e.icon),3),h(`div`,Se,[h(`div`,Ce,C(e.name),1),h(`div`,we,C(e.format)+` · `+C(o(r)(e.descriptionKey)),1)])]),_:2},1032,[`class`,`onClick`]))),128))])]),_:1})]),_:1}),v(o(V),null,{default:i(()=>[v(o(U),{class:`pb-3`},{default:i(()=>[v(o(W),{class:`text-sm font-medium`},{default:i(()=>[e(C(o(r)(`quickSetup.provider.config`)),1)]),_:1})]),_:1}),v(o(H),{class:`space-y-4`},{default:i(()=>[h(`div`,Te,[h(`div`,Ee,[v(o(N),{class:`text-xs text-muted-foreground`},{default:i(()=>[e(C(o(r)(`quickSetup.provider.label`)),1)]),_:1}),v(o(I),{"model-value":o(b),"onUpdate:modelValue":s[0]||=e=>o(_e)(e)},{default:i(()=>[v(o(z),{class:`w-full text-xs data-[size=default]:h-7`},{default:i(()=>[v(o(F),{placeholder:o(r)(`quickSetup.provider.select`)},null,8,[`placeholder`])]),_:1}),v(o(L),null,{default:i(()=>[v(o(R),{value:`__custom__`},{default:i(()=>[e(C(o(r)(`quickSetup.provider.custom`)),1)]),_:1}),(S(!0),d(c,null,y(o(_),t=>(S(),m(o(R),{key:t.group,value:t.group},{default:i(()=>[e(C(t.group),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`model-value`])]),o(Y)?(S(),d(c,{key:0},[h(`div`,De,[v(o(N),{class:`text-xs text-muted-foreground`},{default:i(()=>[e(C(o(r)(`quickSetup.provider.format`)),1)]),_:1}),v(o(I),{modelValue:o(T),"onUpdate:modelValue":s[1]||=e=>n(T)?T.value=e:null},{default:i(()=>[v(o(z),{class:`w-full text-xs data-[size=default]:h-7`},{default:i(()=>[v(o(F))]),_:1}),v(o(L),null,{default:i(()=>[v(o(R),{value:`anthropic`},{default:i(()=>[...s[15]||=[e(`Anthropic Messages`,-1)]]),_:1}),v(o(R),{value:`openai`},{default:i(()=>[...s[16]||=[e(`OpenAI Chat Completions`,-1)]]),_:1}),v(o(R),{value:`openai-responses`},{default:i(()=>[...s[17]||=[e(`OpenAI Responses`,-1)]]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),h(`div`,Oe,[v(o(N),{class:`text-xs text-muted-foreground`},{default:i(()=>[...s[18]||=[e(`Base URL`,-1)]]),_:1}),v(o(G),{modelValue:o(X),"onUpdate:modelValue":s[2]||=e=>n(X)?X.value=e:null,placeholder:`https://api.example.com/v1`,class:`font-mono md:text-xs h-7`},null,8,[`modelValue`])]),h(`div`,ke,[v(o(N),{class:`text-xs text-muted-foreground`},{default:i(()=>[...s[19]||=[e(`Upstream Path`,-1)]]),_:1}),v(o(G),{modelValue:o(Z),"onUpdate:modelValue":s[3]||=e=>n(Z)?Z.value=e:null,placeholder:`/v1/chat/completions`,class:`font-mono md:text-xs h-7`},null,8,[`modelValue`])])],64)):(S(),d(c,{key:1},[h(`div`,Ae,[v(o(N),{class:`text-xs text-muted-foreground`},{default:i(()=>[e(C(o(r)(`quickSetup.provider.plan`)),1)]),_:1}),v(o(I),{"model-value":o(w),"onUpdate:modelValue":s[4]||=e=>o(ve)(e)},{default:i(()=>[v(o(z),{class:`w-full text-xs data-[size=default]:h-7`},{default:i(()=>[v(o(F),{placeholder:o(r)(`quickSetup.provider.select`)},null,8,[`placeholder`])]),_:1}),v(o(L),null,{default:i(()=>[(S(!0),d(c,null,y(o(ae),t=>(S(),m(o(R),{key:t.plan,value:t.plan},{default:i(()=>[e(C(t.plan),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`model-value`])]),h(`div`,je,[v(o(N),{class:`text-xs text-muted-foreground`},{default:i(()=>[e(C(o(r)(`quickSetup.provider.format`)),1)]),_:1}),v(o(I),{modelValue:o(T),"onUpdate:modelValue":s[5]||=e=>n(T)?T.value=e:null},{default:i(()=>[v(o(z),{class:`w-full text-xs data-[size=default]:h-7`},{default:i(()=>[v(o(F))]),_:1}),v(o(L),null,{default:i(()=>[v(o(R),{value:`anthropic`},{default:i(()=>[...s[20]||=[e(`Anthropic Messages`,-1)]]),_:1}),v(o(R),{value:`openai`},{default:i(()=>[...s[21]||=[e(`OpenAI Chat Completions`,-1)]]),_:1}),v(o(R),{value:`openai-responses`},{default:i(()=>[...s[22]||=[e(`OpenAI Responses`,-1)]]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),h(`div`,Me,[v(o(N),{class:`text-xs text-muted-foreground`},{default:i(()=>[...s[23]||=[e(`Base URL`,-1)]]),_:1}),v(o(G),{"model-value":o(ie),readonly:``,class:`font-mono md:text-xs h-7`},null,8,[`model-value`])]),o(se)?(S(),d(`div`,Ne,[v(o(N),{class:`text-xs text-muted-foreground`},{default:i(()=>[...s[24]||=[e(`Upstream Path`,-1)]]),_:1}),v(o(G),{"model-value":o(se),readonly:``,class:`font-mono md:text-xs h-7`},null,8,[`model-value`])])):g(``,!0)],64)),h(`div`,Pe,[v(o(N),{class:`text-xs text-muted-foreground`},{default:i(()=>[e(C(o(r)(`quickSetup.provider.apiKey`)),1)]),_:1}),v(o(G),{modelValue:o(E),"onUpdate:modelValue":s[6]||=e=>n(E)?E.value=e:null,type:`password`,placeholder:o(r)(`quickSetup.provider.apiKeyPlaceholder`),class:`md:text-xs h-7`},null,8,[`modelValue`,`placeholder`])]),h(`div`,Fe,[v(o(N),{class:`text-xs text-muted-foreground invisible`},{default:i(()=>[e(C(o(r)(`quickSetup.provider.connect`)),1)]),_:1}),v(o(x),{variant:`outline`,size:`sm`,disabled:o(J)===`testing`,onClick:o(dt)},{default:i(()=>[o(J)===`testing`?(S(),d(c,{key:0},[s[25]||=h(`svg`,{class:`w-3.5 h-3.5 mr-1 animate-spin`,fill:`none`,viewBox:`0 0 24 24`},[h(`circle`,{class:`opacity-25`,cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,"stroke-width":`4`}),h(`path`,{class:`opacity-75`,fill:`currentColor`,d:`M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z`})],-1),e(` `+C(o(r)(`quickSetup.provider.testing`)),1)],64)):o(J)===`ok`?(S(),d(c,{key:1},[e(C(o(r)(`quickSetup.provider.connected`)),1)],64)):(S(),d(c,{key:2},[e(C(o(r)(`quickSetup.provider.test`)),1)],64))]),_:1},8,[`disabled`,`onClick`])])]),h(`div`,Ie,[h(`div`,Le,[h(`span`,Re,C(o(r)(`quickSetup.model.config`)),1),v(o(P),{variant:`secondary`,class:`text-[10px]`},{default:i(()=>[e(C(ht.value)+`/`+C(o(D).length),1)]),_:1})]),o(D).length===0?(S(),d(`p`,ze,C(o(r)(`quickSetup.model.selectProviderFirst`)),1)):(S(),d(`div`,Be,[(S(!0),d(c,null,y(o(D),(e,t)=>(S(),m(k,{key:e.name,model:e,"api-type":o(T),"is-deep-seek":e.name.toLowerCase().includes(`deepseek`),"is-non-openai-endpoint":o(oe),capabilities:e.capabilities??[`text`],"stream-timeout-ms":e.stream_timeout_ms??void 0,"onUpdate:model":e=>_t(t,e),onRemove:e=>vt(t),"onUpdate:streamTimeoutMs":e=>yt(t,e),onToggleCapability:e=>bt(t,e)},null,8,[`model`,`api-type`,`is-deep-seek`,`is-non-openai-endpoint`,`capabilities`,`stream-timeout-ms`,`onUpdate:model`,`onRemove`,`onUpdate:streamTimeoutMs`,`onToggleCapability`]))),128))])),o(Y)?(S(),d(`div`,Ve,[v(o(G),{modelValue:$.value,"onUpdate:modelValue":s[7]||=e=>$.value=e,placeholder:o(r)(`quickSetup.model.namePlaceholder`),onKeydown:f(a(mt,[`prevent`]),[`enter`]),class:`flex-1 md:text-xs h-7`},null,8,[`modelValue`,`placeholder`,`onKeydown`]),v(o(x),{type:`button`,variant:`outline`,size:`sm`,onClick:mt,disabled:!$.value.trim()},{default:i(()=>[e(C(o(r)(`common.add`)),1)]),_:1},8,[`disabled`])])):g(``,!0)]),h(`div`,He,[h(`div`,Ue,[h(`span`,We,C(o(r)(`quickSetup.concurrency.control`)),1)]),v(K,{mode:o(ce),"max-concurrency":o(le),"queue-timeout-ms":o(ue),"max-queue-size":o(de),"onUpdate:mode":o(ut),"onUpdate:maxConcurrency":s[8]||=e=>le.value=e,"onUpdate:queueTimeoutMs":s[9]||=e=>ue.value=e,"onUpdate:maxQueueSize":s[10]||=e=>de.value=e},null,8,[`mode`,`max-concurrency`,`queue-timeout-ms`,`max-queue-size`,`onUpdate:mode`])])]),_:1})]),_:1}),h(`div`,Ge,[v(o(V),{class:`col-span-3`},{default:i(()=>[v(o(U),{class:`pb-3`},{default:i(()=>[h(`div`,Ke,[v(o(W),{class:`text-sm font-medium`},{default:i(()=>[e(C(o(r)(`quickSetup.mapping.title`)),1)]),_:1}),v(o(P),{variant:`secondary`,class:`text-[10px]`},{default:i(()=>[e(C(o(r)(`quickSetup.mapping.count`,{count:o(O).length})),1)]),_:1})])]),_:1}),v(o(H),null,{default:i(()=>[v(ye,{entries:o(O),"provider-groups":o(pe),"onUpdate:targets":o(at),onToggleActive:o(ot),onAdd:o(st),onRemove:o(ct)},null,8,[`entries`,`provider-groups`,`onUpdate:targets`,`onToggleActive`,`onAdd`,`onRemove`])]),_:1})]),_:1}),h(`div`,qe,[v(o(V),null,{default:i(()=>[v(o(U),{class:`pb-3`},{default:i(()=>[h(`div`,Je,[v(o(W),{class:`text-sm font-medium`},{default:i(()=>[e(C(o(r)(`quickSetup.retry.title`)),1)]),_:1}),v(o(P),{variant:`secondary`,class:`text-[10px]`},{default:i(()=>[e(C(o(r)(`quickSetup.retry.selectedCount`,{count:o(q).size})),1)]),_:1})])]),_:1}),v(o(H),null,{default:i(()=>[o(j).length===0?(S(),d(`div`,Ye,[o(A).length===0?(S(),d(c,{key:0},[e(C(o(r)(`quickSetup.retry.allCreated`)),1)],64)):(S(),d(c,{key:1},[e(C(o(r)(`quickSetup.retry.selectProviderFirst`)),1)],64))])):(S(),d(`div`,Xe,[(S(!0),d(c,null,y(o(j),t=>(S(),d(`div`,{key:t.name,class:p([`flex items-start gap-2.5 rounded-md transition-colors`,t.exists?`opacity-60 cursor-default p-2`:`hover:bg-muted/50 cursor-pointer p-2`]),onClick:e=>!t.exists&&o(lt)(t.name,!o(q).has(t.name))},[v(o(M),{checked:t.exists?!0:o(q).has(t.name),disabled:t.exists,class:`mt-0.5`,"onUpdate:checked":e=>o(lt)(t.name,!!e),onClick:s[11]||=a(()=>{},[`stop`])},null,8,[`checked`,`disabled`,`onUpdate:checked`]),h(`div`,Qe,[h(`div`,$e,[h(`span`,et,C(t.name),1),t.exists?(S(),m(o(P),{key:0,variant:`secondary`,class:`text-[9px] px-1.5 py-0 leading-none bg-muted text-muted-foreground`},{default:i(()=>[e(C(o(r)(`quickSetup.retry.configured`)),1)]),_:1})):t.providers&&t.providers.length>0?(S(),m(o(P),{key:1,variant:`outline`,class:`text-[9px] px-1 py-0 leading-none`},{default:i(()=>[e(C(t.providers[0]),1)]),_:2},1024)):(S(),m(o(P),{key:2,variant:`secondary`,class:`text-[9px] px-1 py-0 leading-none`},{default:i(()=>[e(C(o(r)(`quickSetup.retry.general`)),1)]),_:1}))]),h(`div`,tt,C(t.status_code)+` · `+C(t.retry_strategy===`fixed`?o(r)(`quickSetup.retry.fixed`):o(r)(`quickSetup.retry.exponential`))+` · `+C(t.retry_delay_ms/1e3)+`s · `+C(t.max_retries)+C(o(r)(`quickSetup.retry.times`)),1)])],10,Ze))),128))]))]),_:1})]),_:1}),v(o(V),null,{default:i(()=>[v(o(U),{class:`pb-3`},{default:i(()=>[v(o(W),{class:`text-sm font-medium`},{default:i(()=>[e(C(o(r)(`quickSetup.transform.title`)),1)]),_:1})]),_:1}),v(o(H),null,{default:i(()=>[v(ne,{"inject-headers":o(me),"drop-fields":o(he),"request-defaults":o(Q),"onUpdate:injectHeaders":s[12]||=e=>me.value=e,"onUpdate:dropFields":s[13]||=e=>he.value=e,"onUpdate:requestDefaults":s[14]||=e=>Q.value=e},null,8,[`inject-headers`,`drop-fields`,`request-defaults`])]),_:1})]),_:1})])])]),h(`div`,nt,[h(`div`,rt,[o(b)?(S(),d(c,{key:0},[v(o(P),{variant:`secondary`,class:`text-[10px]`},{default:i(()=>[e(C(gt.value),1)]),_:1}),s[26]||=h(`span`,{class:`text-muted-foreground/50`},`→`,-1),v(o(P),{variant:`secondary`,class:`text-[10px]`},{default:i(()=>[e(C(o(Y)?o(r)(`quickSetup.provider.custom`):o(b)),1)]),_:1})],64)):g(``,!0),ht.value>0?(S(),d(c,{key:1},[s[27]||=h(`span`,{class:`text-muted-foreground/50 mx-0.5`},`·`,-1),h(`span`,null,C(o(r)(`quickSetup.footer.models`,{count:ht.value})),1)],64)):g(``,!0),o(O).length>0?(S(),d(c,{key:2},[s[28]||=h(`span`,{class:`text-muted-foreground/50 mx-0.5`},`·`,-1),h(`span`,null,C(o(r)(`quickSetup.footer.mappings`,{count:o(O).length})),1)],64)):g(``,!0),o(q).size>0?(S(),d(c,{key:3},[s[29]||=h(`span`,{class:`text-muted-foreground/50 mx-0.5`},`·`,-1),h(`span`,null,C(o(r)(`quickSetup.footer.rules`,{count:o(q).size})),1)],64)):g(``,!0)]),h(`div`,it,[v(o(x),{size:`sm`,variant:`outline`,onClick:xt},{default:i(()=>[e(C(o(r)(`quickSetup.footer.validate`)),1)]),_:1}),v(o(x),{size:`sm`,disabled:o(re),onClick:o(ft)},{default:i(()=>[o(re)?(S(),d(c,{key:0},[s[30]||=h(`svg`,{class:`w-3.5 h-3.5 mr-1 animate-spin`,fill:`none`,viewBox:`0 0 24 24`},[h(`circle`,{class:`opacity-25`,cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,"stroke-width":`4`}),h(`path`,{class:`opacity-75`,fill:`currentColor`,d:`M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z`})],-1),e(` `+C(o(r)(`quickSetup.footer.saving`)),1)],64)):(S(),d(c,{key:1},[e(C(o(r)(`quickSetup.footer.saveConfig`)),1)],64))]),_:1},8,[`disabled`,`onClick`])])])],64))}});export{at as default};
@@ -0,0 +1 @@
1
+ import{$ as e,A as t,Et as n,G as r,Ht as i,J as a,K as o,Pt as s,Q as c,R as ee,Wt as te,X as l,Y as u,Z as d,dt as f,et as p,ht as m,k as h,n as g,pt as _,qt as v,tt as ne}from"./button-DZwflOXO.js";import{t as y}from"./Checkbox-2voapLgE.js";import{n as re,t as ie}from"./CollapsibleContent-DHkVSWt2.js";import{t as ae}from"./CollapsibleTrigger-DbVCeTdD.js";import{a as oe,c as b,d as x,f as S,l as C,n as se,o as ce,r as le,s as w,t as ue,u as T}from"./dialog-C7v6Gaak.js";import{t as E}from"./Label-CjUuzGNQ.js";import{a as de,b as D,c as fe,d as pe,f as me,g as he,h as ge,i as _e,l as ve,m as O,o as ye,p as k,r as A,s as j,ut as M}from"./index-PMAQyWJb.js";import{n as N,t as P}from"./CardContent-yiYaxAko.js";import{n as be,t as xe}from"./CardTitle-CzqSlrtn.js";import{t as F}from"./Input-DEfnoFS3.js";var Se={class:`p-6`},Ce={class:`flex items-center justify-between mb-4`},we={class:`text-lg font-semibold text-foreground`},Te={class:`bg-card rounded-lg border overflow-hidden`},Ee={class:`flex items-center gap-2`},De={class:`text-xs text-muted-foreground`},Oe={key:0,class:`text-sm text-destructive mt-1`},ke={key:0,class:`text-sm text-destructive mt-1`},Ae={key:0,class:`text-sm text-destructive mt-1`},je={class:`grid grid-cols-2 gap-3`},Me={key:0,class:`text-sm text-destructive mt-1`},Ne={key:0,class:`text-sm text-destructive mt-1`},Pe={key:0},Fe={key:0,class:`text-sm text-destructive mt-1`},Ie={class:`flex items-center gap-2`},Le={class:`flex items-center justify-between`},Re={class:`flex items-center justify-between mb-3`},ze={class:`flex items-center gap-2`},Be={class:`text-sm text-muted-foreground`},I=100,L=599,R=100,z=100,B=ne({__name:`RetryRules`,setup(ne){let{t:B}=ee(),V={name:``,status_code:429,body_pattern:``,is_active:!0,retry_strategy:`exponential`,retry_delay_ms:5e3,max_retries:10,max_delay_ms:6e4},H=s([]),U=s(!1),W=s(null),G=s(null),K=s({...V}),q=s({});function Ve(){let e={};K.value.name.trim()||(e.name=B(`retryRules.validation.nameRequired`));let t=Number(K.value.status_code);if((!Number.isInteger(t)||t<I||t>L)&&(e.status_code=B(`retryRules.validation.statusCodeRange`,{min:I,max:L})),!K.value.body_pattern.trim())e.body_pattern=B(`retryRules.validation.bodyPatternRequired`);else try{new RegExp(K.value.body_pattern)}catch{e.body_pattern=B(`retryRules.validation.bodyPatternInvalid`)}let n=Number(K.value.retry_delay_ms);(!n||n<R)&&(e.retry_delay_ms=B(`retryRules.validation.delayMin`,{min:R}));let r=Number(K.value.max_retries);if((!Number.isInteger(r)||r<0||r>z)&&(e.max_retries=B(`retryRules.validation.retriesRange`,{max:z})),K.value.retry_strategy===`exponential`){let t=Number(K.value.max_delay_ms);(!t||t<R)&&(e.max_delay_ms=B(`retryRules.validation.delayMin`,{min:R}))}return q.value=e,Object.keys(e).length===0}async function J(){try{H.value=await h.getRetryRules()}catch(e){console.error(`Failed to load retry rules:`,e),A.error(t(e,B(`retryRules.messages.loadFailed`)))}}function He(){W.value=null,K.value={...V},q.value={},U.value=!0}function Ue(e){W.value=e.id,K.value={name:e.name,status_code:e.status_code,body_pattern:e.body_pattern,is_active:!!e.is_active,retry_strategy:e.retry_strategy,retry_delay_ms:e.retry_delay_ms,max_retries:e.max_retries,max_delay_ms:e.max_delay_ms},q.value={},U.value=!0}async function We(){if(Ve())try{let e={name:K.value.name,status_code:Number(K.value.status_code),body_pattern:K.value.body_pattern,is_active:+!!K.value.is_active,retry_strategy:K.value.retry_strategy,retry_delay_ms:Number(K.value.retry_delay_ms),max_retries:Number(K.value.max_retries),max_delay_ms:Number(K.value.max_delay_ms)};W.value?await h.updateRetryRule(W.value,e):await h.createRetryRule(e),U.value=!1,await J()}catch(e){console.error(`Failed to save retry rule:`,e),A.error(t(e,B(`retryRules.messages.saveFailed`)))}}function Ge(e){G.value=e}async function Y(){let e=G.value;if(e){G.value=null;try{await h.deleteRetryRule(e.id),await J()}catch(e){console.error(`Failed to delete retry rule:`,e),A.error(t(e,B(`retryRules.messages.deleteFailed`)))}}}let X=s(!1),Z=s([]),Q=s(new Set),Ke=a(()=>Z.value.length>0&&Q.value.size===Z.value.length);async function $(){try{Z.value=await h.recommended.getRetryRules()}catch{Z.value=[]}}function qe(e){let t=new Set(Q.value);t.has(e)?t.delete(e):t.add(e),Q.value=t}function Je(e){Q.value=e===!0?new Set(Z.value.map(e=>e.name)):new Set}async function Ye(){let e=Z.value.filter(e=>Q.value.has(e.name));for(let t of e)await h.createRetryRule({name:t.name,status_code:t.status_code,body_pattern:t.body_pattern,is_active:1,retry_strategy:t.retry_strategy,retry_delay_ms:t.retry_delay_ms,max_retries:t.max_retries,max_delay_ms:t.max_delay_ms});A.success(B(`retryRules.messages.addedCount`,{count:e.length})),Q.value=new Set,await Promise.allSettled([$(),J()])}return f(()=>{J(),$()}),(t,a)=>(_(),c(`div`,Se,[u(`div`,Ce,[u(`h2`,we,v(i(B)(`retryRules.title`)),1),p(i(g),{onClick:He,class:`flex items-center gap-1`},{default:n(()=>[a[18]||=u(`svg`,{class:`w-4 h-4`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[u(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M12 4v16m8-8H4`})],-1),e(` `+v(i(B)(`retryRules.addRule`)),1)]),_:1})]),u(`div`,Te,[p(i(S),null,{default:n(()=>[p(i(w),null,{default:n(()=>[p(i(C),{class:`bg-muted`},{default:n(()=>[p(i(b),{class:`text-muted-foreground`},{default:n(()=>[e(v(i(B)(`retryRules.tableHeaders.name`)),1)]),_:1}),p(i(b),{class:`text-muted-foreground`},{default:n(()=>[e(v(i(B)(`retryRules.tableHeaders.statusCode`)),1)]),_:1}),p(i(b),{class:`text-muted-foreground`},{default:n(()=>[e(v(i(B)(`retryRules.tableHeaders.bodyPattern`)),1)]),_:1}),p(i(b),{class:`text-muted-foreground`},{default:n(()=>[e(v(i(B)(`retryRules.tableHeaders.retryStrategy`)),1)]),_:1}),p(i(b),{class:`text-muted-foreground`},{default:n(()=>[e(v(i(B)(`retryRules.tableHeaders.status`)),1)]),_:1}),p(i(b),{class:`text-right text-muted-foreground`},{default:n(()=>[e(v(i(B)(`retryRules.tableHeaders.actions`)),1)]),_:1})]),_:1})]),_:1}),p(i(x),null,{default:n(()=>[(_(!0),c(o,null,m(H.value,t=>(_(),l(i(C),{key:t.id},{default:n(()=>[p(i(T),{class:`font-mono text-sm`},{default:n(()=>[e(v(t.name),1)]),_:2},1024),p(i(T),null,{default:n(()=>[e(v(t.status_code),1)]),_:2},1024),p(i(T),{class:`font-mono text-xs text-muted-foreground`},{default:n(()=>[e(v(t.body_pattern),1)]),_:2},1024),p(i(T),null,{default:n(()=>[u(`div`,Ee,[p(i(D),{variant:`outline`},{default:n(()=>[e(v(t.retry_strategy===`fixed`?i(B)(`retryRules.strategy.fixed`):i(B)(`retryRules.strategy.exponential`)),1)]),_:2},1024),u(`span`,De,[e(v(t.retry_delay_ms/1e3)+`s · `+v(i(B)(`retryRules.times`,{count:t.max_retries}))+` `,1),t.retry_strategy===`exponential`?(_(),c(o,{key:0},[e(` · `+v(i(B)(`retryRules.upperLimit`,{value:t.max_delay_ms/1e3})),1)],64)):d(``,!0)])])]),_:2},1024),p(i(T),null,{default:n(()=>[p(i(D),{variant:t.is_active?`default`:`secondary`},{default:n(()=>[e(v(t.is_active?i(B)(`common.enabled`):i(B)(`common.disabled`)),1)]),_:2},1032,[`variant`])]),_:2},1024),p(i(T),{class:`text-right`},{default:n(()=>[p(i(g),{variant:`ghost`,size:`sm`,onClick:e=>Ue(t),class:`mr-2`},{default:n(()=>[e(v(i(B)(`common.edit`)),1)]),_:1},8,[`onClick`]),p(i(g),{variant:`ghost`,size:`sm`,class:`text-destructive hover:text-destructive`,onClick:e=>Ge(t)},{default:n(()=>[e(v(i(B)(`common.delete`)),1)]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1024))),128)),H.value.length===0?(_(),l(i(C),{key:0},{default:n(()=>[p(i(T),{colspan:`6`,class:`text-center text-muted-foreground py-8`},{default:n(()=>[e(v(i(B)(`retryRules.noRules`)),1)]),_:1})]),_:1})):d(``,!0)]),_:1})]),_:1})]),p(i(ce),{open:U.value,"onUpdate:open":a[15]||=e=>U.value=e},{default:n(()=>[p(i(oe),null,{default:n(()=>[p(i(se),null,{default:n(()=>[p(i(ue),null,{default:n(()=>[e(v(W.value?i(B)(`retryRules.dialog.editRule`):i(B)(`retryRules.dialog.addRule`)),1)]),_:1})]),_:1}),u(`form`,{onSubmit:r(We,[`prevent`]),class:`space-y-3`},[u(`div`,null,[p(i(E),{class:`block text-sm font-medium text-foreground mb-1`},{default:n(()=>[e(v(i(B)(`retryRules.dialog.name`)),1)]),_:1}),p(i(F),{modelValue:K.value.name,"onUpdate:modelValue":a[0]||=e=>K.value.name=e,type:`text`,required:``,onInput:a[1]||=e=>delete q.value.name},null,8,[`modelValue`]),q.value.name?(_(),c(`p`,Oe,v(q.value.name),1)):d(``,!0)]),u(`div`,null,[p(i(E),{class:`block text-sm font-medium text-foreground mb-1`},{default:n(()=>[e(v(i(B)(`retryRules.dialog.statusCode`)),1)]),_:1}),p(i(F),{modelValue:K.value.status_code,"onUpdate:modelValue":a[2]||=e=>K.value.status_code=e,modelModifiers:{number:!0},type:`number`,required:``,onInput:a[3]||=e=>delete q.value.status_code},null,8,[`modelValue`]),q.value.status_code?(_(),c(`p`,ke,v(q.value.status_code),1)):d(``,!0)]),u(`div`,null,[p(i(E),{class:`block text-sm font-medium text-foreground mb-1`},{default:n(()=>[e(v(i(B)(`retryRules.dialog.bodyPattern`)),1)]),_:1}),p(i(F),{modelValue:K.value.body_pattern,"onUpdate:modelValue":a[4]||=e=>K.value.body_pattern=e,type:`text`,placeholder:i(B)(`retryRules.dialog.bodyPatternPlaceholder`),required:``,onInput:a[5]||=e=>delete q.value.body_pattern},null,8,[`modelValue`,`placeholder`]),q.value.body_pattern?(_(),c(`p`,Ae,v(q.value.body_pattern),1)):d(``,!0)]),u(`div`,null,[p(i(E),{class:`block text-sm font-medium text-foreground mb-1`},{default:n(()=>[e(v(i(B)(`retryRules.dialog.retryStrategy`)),1)]),_:1}),p(i(he),{modelValue:K.value.retry_strategy,"onUpdate:modelValue":a[6]||=e=>K.value.retry_strategy=e},{default:n(()=>[p(i(k),{class:`w-full`},{default:n(()=>[p(i(me),{placeholder:i(B)(`retryRules.dialog.selectStrategy`)},null,8,[`placeholder`])]),_:1}),p(i(ge),null,{default:n(()=>[p(i(O),{value:`exponential`},{default:n(()=>[e(v(i(B)(`retryRules.strategy.exponential`)),1)]),_:1}),p(i(O),{value:`fixed`},{default:n(()=>[e(v(i(B)(`retryRules.strategy.fixed`)),1)]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),u(`div`,je,[u(`div`,null,[p(i(E),{class:`block text-sm font-medium text-foreground mb-1`},{default:n(()=>[e(v(K.value.retry_strategy===`fixed`?i(B)(`retryRules.dialog.intervalMs`):i(B)(`retryRules.dialog.initialDelayMs`)),1)]),_:1}),p(i(F),{modelValue:K.value.retry_delay_ms,"onUpdate:modelValue":a[7]||=e=>K.value.retry_delay_ms=e,modelModifiers:{number:!0},type:`number`,min:100,required:``,onInput:a[8]||=e=>delete q.value.retry_delay_ms},null,8,[`modelValue`]),q.value.retry_delay_ms?(_(),c(`p`,Me,v(q.value.retry_delay_ms),1)):d(``,!0)]),u(`div`,null,[p(i(E),{class:`block text-sm font-medium text-foreground mb-1`},{default:n(()=>[e(v(i(B)(`retryRules.dialog.maxRetries`)),1)]),_:1}),p(i(F),{modelValue:K.value.max_retries,"onUpdate:modelValue":a[9]||=e=>K.value.max_retries=e,modelModifiers:{number:!0},type:`number`,min:0,max:100,required:``,onInput:a[10]||=e=>delete q.value.max_retries},null,8,[`modelValue`]),q.value.max_retries?(_(),c(`p`,Ne,v(q.value.max_retries),1)):d(``,!0)])]),K.value.retry_strategy===`exponential`?(_(),c(`div`,Pe,[p(i(E),{class:`block text-sm font-medium text-foreground mb-1`},{default:n(()=>[e(v(i(B)(`retryRules.dialog.maxDelayMs`)),1)]),_:1}),p(i(F),{modelValue:K.value.max_delay_ms,"onUpdate:modelValue":a[11]||=e=>K.value.max_delay_ms=e,modelModifiers:{number:!0},type:`number`,min:100,required:``,onInput:a[12]||=e=>delete q.value.max_delay_ms},null,8,[`modelValue`]),q.value.max_delay_ms?(_(),c(`p`,Fe,v(q.value.max_delay_ms),1)):d(``,!0)])):d(``,!0),u(`div`,Ie,[p(i(y),{modelValue:K.value.is_active,"onUpdate:modelValue":a[13]||=e=>K.value.is_active=e,id:`rule-active`},null,8,[`modelValue`]),p(i(E),{for:`rule-active`,class:`text-sm text-foreground`},{default:n(()=>[e(v(i(B)(`retryRules.dialog.enable`)),1)]),_:1})]),p(i(le),null,{default:n(()=>[p(i(g),{type:`button`,variant:`outline`,onClick:a[14]||=e=>U.value=!1},{default:n(()=>[e(v(i(B)(`common.cancel`)),1)]),_:1}),p(i(g),{type:`submit`},{default:n(()=>[e(v(i(B)(`common.save`)),1)]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]),p(i(pe),{open:!!G.value,"onUpdate:open":a[16]||=e=>{e||(G.value=null)}},{default:n(()=>[p(i(fe),null,{default:n(()=>[p(i(de),null,{default:n(()=>[p(i(_e),null,{default:n(()=>[e(v(i(B)(`retryRules.deleteConfirm.title`)),1)]),_:1}),p(i(j),null,{default:n(()=>[e(v(i(B)(`retryRules.deleteConfirm.description`,{name:G.value?.name})),1)]),_:1})]),_:1}),p(i(ye),null,{default:n(()=>[p(i(ve),null,{default:n(()=>[e(v(i(B)(`common.cancel`)),1)]),_:1}),p(i(g),{variant:`destructive`,onClick:Y},{default:n(()=>[e(v(i(B)(`common.delete`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]),Z.value.length>0?(_(),l(i(N),{key:0,class:`mt-6`},{default:n(()=>[p(i(re),{open:X.value,"onUpdate:open":a[17]||=e=>X.value=e},{default:n(()=>[p(i(ae),{"as-child":``},{default:n(()=>[p(i(be),{class:`cursor-pointer hover:bg-muted/50 transition-colors`},{default:n(()=>[u(`div`,Le,[p(i(xe),{class:`text-sm font-medium`},{default:n(()=>[e(v(i(B)(`retryRules.recommended.title`,{count:Z.value.length})),1)]),_:1}),p(i(M),{class:te([`h-4 w-4 text-muted-foreground transition-transform`,{"rotate-180":X.value}])},null,8,[`class`])])]),_:1})]),_:1}),p(i(ie),null,{default:n(()=>[p(i(P),null,{default:n(()=>[u(`div`,Re,[u(`div`,ze,[p(i(y),{"model-value":Ke.value,"onUpdate:modelValue":Je},null,8,[`model-value`]),u(`span`,Be,v(i(B)(`retryRules.recommended.selectAll`)),1)]),p(i(g),{size:`sm`,disabled:Q.value.size===0,onClick:Ye},{default:n(()=>[e(v(i(B)(`retryRules.recommended.addSelected`,{count:Q.value.size})),1)]),_:1},8,[`disabled`])]),p(i(S),null,{default:n(()=>[p(i(w),null,{default:n(()=>[p(i(C),null,{default:n(()=>[p(i(b),{class:`w-10`}),p(i(b),null,{default:n(()=>[e(v(i(B)(`retryRules.recommended.headers.name`)),1)]),_:1}),p(i(b),null,{default:n(()=>[e(v(i(B)(`retryRules.recommended.headers.statusCode`)),1)]),_:1}),p(i(b),null,{default:n(()=>[e(v(i(B)(`retryRules.recommended.headers.pattern`)),1)]),_:1}),p(i(b),null,{default:n(()=>[e(v(i(B)(`retryRules.recommended.headers.strategy`)),1)]),_:1})]),_:1})]),_:1}),p(i(x),null,{default:n(()=>[(_(!0),c(o,null,m(Z.value,t=>(_(),l(i(C),{key:t.name},{default:n(()=>[p(i(T),null,{default:n(()=>[p(i(y),{"model-value":Q.value.has(t.name),"onUpdate:modelValue":()=>qe(t.name)},null,8,[`model-value`,`onUpdate:modelValue`])]),_:2},1024),p(i(T),null,{default:n(()=>[e(v(t.name),1)]),_:2},1024),p(i(T),null,{default:n(()=>[e(v(t.status_code),1)]),_:2},1024),p(i(T),{class:`font-mono text-xs max-w-[200px] truncate`},{default:n(()=>[e(v(t.body_pattern),1)]),_:2},1024),p(i(T),null,{default:n(()=>[e(v(t.retry_strategy===`fixed`?i(B)(`retryRules.strategy.fixed`):i(B)(`retryRules.strategy.exponential`)),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]),_:1})):d(``,!0)]))}});export{B as default};
@@ -0,0 +1 @@
1
+ import{$ as e,A as t,Et as n,G as ee,Ht as r,K as i,Pt as a,Q as o,R as te,Wt as s,X as c,Y as l,Z as u,dt as ne,et as d,ht as f,k as p,n as m,pt as h,qt as g,tt as re}from"./button-DZwflOXO.js";import{t as _}from"./Checkbox-2voapLgE.js";import{a as v,c as y,d as ie,f as ae,l as b,n as oe,o as se,r as ce,s as le,t as ue,u as x}from"./dialog-C7v6Gaak.js";import{t as S}from"./Label-CjUuzGNQ.js";import{a as de,b as C,c as w,d as T,ft as E,i as D,l as O,o as k,r as A,s as j}from"./index-PMAQyWJb.js";import{t as M}from"./Input-DEfnoFS3.js";import{t as N}from"./useClipboard-B4K3eogm.js";var P={class:`p-6`},F={class:`flex items-center justify-between mb-4`},I={class:`text-lg font-semibold text-foreground`},L={class:`bg-card rounded-lg border overflow-hidden`},R={class:`flex items-center gap-1`},z={class:`font-mono text-xs text-muted-foreground`},B={key:0,class:`w-3.5 h-3.5`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},V={key:1,class:`w-3.5 h-3.5 text-success`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},H={key:0,class:`flex flex-wrap gap-1`},fe={key:0,class:`text-sm text-destructive mt-1`},pe={class:`text-xs text-muted-foreground mb-2`},me={class:`border rounded-md p-3 max-h-48 overflow-y-auto space-y-2 bg-muted`},he={class:`font-mono text-xs`},ge={key:0,class:`text-muted-foreground text-sm text-center py-2`},_e={key:0,class:`flex flex-wrap gap-1 mt-2`},ve={key:0,class:`flex items-center gap-2`},U=re({__name:`RouterKeys`,setup(re){let{t:U}=te(),W={name:``,allowed_models:[],is_active:!0},G=a([]),K=a([]),q=a(!1),J=a(null),Y=a(null),X=a({...W,allowed_models:[]}),Z=a({}),{copied:ye,copy:be}=N();function xe(e){return e?e.slice(0,7)+`*`.repeat(7):``}function Se(e){return E(e)}function Ce(e){let t=X.value.allowed_models.indexOf(e);t>=0&&X.value.allowed_models.splice(t,1)}async function Q(){try{let[e,t]=await Promise.allSettled([p.getRouterKeys(),p.getAvailableModels()]);e.status===`fulfilled`&&(G.value=e.value),t.status===`fulfilled`&&(K.value=t.value)}catch(e){console.error(`Failed to load data:`,e),A.error(t(e,U(`routerKeys.loadFailed`)))}}function $(){J.value=null,X.value={...W,allowed_models:[]},Z.value={},q.value=!0}function we(e){J.value=e.id,X.value={name:e.name,allowed_models:e.allowed_models?[...e.allowed_models]:[],is_active:!!e.is_active},Z.value={},q.value=!0}function Te(){return{name:X.value.name,allowed_models:X.value.allowed_models.length>0?X.value.allowed_models:null,is_active:+!!X.value.is_active}}function Ee(){return{name:X.value.name,allowed_models:X.value.allowed_models.length>0?X.value.allowed_models:null}}async function De(){let e={};if(X.value.name.trim()||(e.name=U(`routerKeys.nameRequired`)),Z.value=e,!(Object.keys(e).length>0))try{J.value?await p.updateRouterKey(J.value,Te()):await p.createRouterKey(Ee()),q.value=!1,await Q()}catch(e){console.error(`Failed to save router key:`,e),A.error(t(e,U(`routerKeys.saveFailed`)))}}function Oe(e){Y.value=e}async function ke(){let e=Y.value;if(e){Y.value=null;try{await p.deleteRouterKey(e.id),await Q()}catch(e){console.error(`Failed to delete router key:`,e),A.error(t(e,U(`routerKeys.deleteFailed`)))}}}return ne(Q),(t,a)=>(h(),o(`div`,P,[l(`div`,F,[l(`h2`,I,g(r(U)(`routerKeys.title`)),1),d(r(m),{onClick:$,class:`flex items-center gap-1`},{default:n(()=>[a[6]||=l(`svg`,{class:`w-4 h-4`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[l(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M12 4v16m8-8H4`})],-1),e(` `+g(r(U)(`routerKeys.createKey`)),1)]),_:1})]),l(`div`,L,[d(r(ae),null,{default:n(()=>[d(r(le),null,{default:n(()=>[d(r(b),{class:`bg-muted`},{default:n(()=>[d(r(y),{class:`text-muted-foreground`},{default:n(()=>[e(g(r(U)(`routerKeys.tableHeaders.name`)),1)]),_:1}),d(r(y),{class:`text-muted-foreground`},{default:n(()=>[e(g(r(U)(`routerKeys.tableHeaders.key`)),1)]),_:1}),d(r(y),{class:`text-muted-foreground`},{default:n(()=>[e(g(r(U)(`routerKeys.tableHeaders.whitelist`)),1)]),_:1}),d(r(y),{class:`text-muted-foreground`},{default:n(()=>[e(g(r(U)(`routerKeys.tableHeaders.status`)),1)]),_:1}),d(r(y),{class:`text-muted-foreground`},{default:n(()=>[e(g(r(U)(`routerKeys.tableHeaders.createdAt`)),1)]),_:1}),d(r(y),{class:`text-right text-muted-foreground`},{default:n(()=>[e(g(r(U)(`routerKeys.tableHeaders.actions`)),1)]),_:1})]),_:1})]),_:1}),d(r(ie),null,{default:n(()=>[(h(!0),o(i,null,f(G.value,t=>(h(),c(r(b),{key:t.id,class:s({"opacity-60":!t.is_active})},{default:n(()=>[d(r(x),{class:`font-medium`},{default:n(()=>[e(g(t.name),1)]),_:2},1024),d(r(x),null,{default:n(()=>[l(`div`,R,[l(`span`,z,g(xe(t.key)),1),d(r(m),{variant:`ghost`,size:`sm`,class:`h-6 w-6 p-0`,onClick:e=>t.key&&r(be)(t.key)},{default:n(()=>[r(ye)?(h(),o(`svg`,V,[...a[8]||=[l(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M5 13l4 4L19 7`},null,-1)]])):(h(),o(`svg`,B,[...a[7]||=[l(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z`},null,-1)]]))]),_:1},8,[`onClick`])])]),_:2},1024),d(r(x),null,{default:n(()=>[t.allowed_models&&t.allowed_models.length>0?(h(),o(`div`,H,[(h(!0),o(i,null,f(t.allowed_models,t=>(h(),c(r(C),{key:t,variant:`outline`,class:`text-xs`},{default:n(()=>[e(g(t),1)]),_:2},1024))),128))])):(h(),c(r(C),{key:1,variant:`secondary`},{default:n(()=>[e(g(r(U)(`common.allModels`)),1)]),_:1}))]),_:2},1024),d(r(x),null,{default:n(()=>[d(r(C),{variant:t.is_active?`default`:`secondary`},{default:n(()=>[e(g(t.is_active?r(U)(`common.enabled`):r(U)(`common.disabled`)),1)]),_:2},1032,[`variant`])]),_:2},1024),d(r(x),{class:`text-muted-foreground text-sm`},{default:n(()=>[e(g(Se(t.created_at)),1)]),_:2},1024),d(r(x),{class:`text-right`},{default:n(()=>[d(r(m),{variant:`ghost`,size:`sm`,onClick:e=>we(t),class:`text-muted-foreground hover:text-primary mr-2`},{default:n(()=>[e(g(r(U)(`common.edit`)),1)]),_:1},8,[`onClick`]),d(r(m),{variant:`ghost`,size:`sm`,onClick:e=>Oe(t),class:`text-muted-foreground hover:text-destructive`},{default:n(()=>[e(g(r(U)(`common.delete`)),1)]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1032,[`class`]))),128)),G.value.length===0?(h(),c(r(b),{key:0},{default:n(()=>[d(r(x),{colspan:`6`,class:`text-center text-muted-foreground py-8`},{default:n(()=>[e(g(r(U)(`routerKeys.noKeys`)),1)]),_:1})]),_:1})):u(``,!0)]),_:1})]),_:1})]),d(r(se),{open:q.value,"onUpdate:open":a[4]||=e=>q.value=e},{default:n(()=>[d(r(v),{class:`sm:max-w-lg`},{default:n(()=>[d(r(oe),null,{default:n(()=>[d(r(ue),null,{default:n(()=>[e(g(J.value?r(U)(`routerKeys.editKey`):r(U)(`routerKeys.createKey`)),1)]),_:1})]),_:1}),l(`form`,{onSubmit:ee(De,[`prevent`]),class:`space-y-4`},[l(`div`,null,[d(r(S),{class:`block text-sm font-medium text-foreground mb-1`},{default:n(()=>[e(g(r(U)(`routerKeys.tableHeaders.name`)),1)]),_:1}),d(r(M),{modelValue:X.value.name,"onUpdate:modelValue":a[0]||=e=>X.value.name=e,type:`text`,required:``,placeholder:r(U)(`routerKeys.placeholder.name`),onInput:a[1]||=e=>delete Z.value.name},null,8,[`modelValue`,`placeholder`]),Z.value.name?(h(),o(`p`,fe,g(Z.value.name),1)):u(``,!0)]),l(`div`,null,[d(r(S),{class:`block text-sm font-medium text-foreground mb-1`},{default:n(()=>[e(g(r(U)(`routerKeys.whitelistLabel`)),1)]),_:1}),l(`div`,pe,g(r(U)(`routerKeys.whitelistHint`)),1),l(`div`,me,[(h(!0),o(i,null,f(K.value,e=>(h(),c(r(S),{key:e,class:`flex items-center gap-2 cursor-pointer text-sm font-normal`},{default:n(()=>[d(r(_),{"model-value":X.value.allowed_models.includes(e),"onUpdate:modelValue":t=>{if(t&&t!==`indeterminate`&&!X.value.allowed_models.includes(e))X.value.allowed_models.push(e);else if(!t){let t=X.value.allowed_models.indexOf(e);t>=0&&X.value.allowed_models.splice(t,1)}}},null,8,[`model-value`,`onUpdate:modelValue`]),l(`span`,he,g(e),1)]),_:2},1024))),128)),K.value.length===0?(h(),o(`div`,ge,g(r(U)(`routerKeys.noModels`)),1)):u(``,!0)]),X.value.allowed_models.length>0?(h(),o(`div`,_e,[(h(!0),o(i,null,f(X.value.allowed_models,t=>(h(),c(r(C),{key:t,variant:`outline`,class:`text-xs`},{default:n(()=>[e(g(t)+` `,1),d(r(m),{type:`button`,variant:`ghost`,size:`sm`,class:`ml-1 h-4 w-4 p-0 text-muted-foreground hover:text-destructive`,onClick:e=>Ce(t)},{default:n(()=>[...a[9]||=[e(`×`,-1)]]),_:1},8,[`onClick`])]),_:2},1024))),128))])):u(``,!0)]),J.value?(h(),o(`div`,ve,[d(r(_),{modelValue:X.value.is_active,"onUpdate:modelValue":a[2]||=e=>X.value.is_active=e,id:`key-active`},null,8,[`modelValue`]),d(r(S),{for:`key-active`,class:`text-sm text-foreground`},{default:n(()=>[e(g(r(U)(`common.enable`)),1)]),_:1})])):u(``,!0),d(r(ce),null,{default:n(()=>[d(r(m),{type:`button`,variant:`outline`,onClick:a[3]||=e=>q.value=!1},{default:n(()=>[e(g(r(U)(`common.cancel`)),1)]),_:1}),d(r(m),{type:`submit`},{default:n(()=>[e(g(r(U)(`common.save`)),1)]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]),d(r(T),{open:!!Y.value,"onUpdate:open":a[5]||=e=>{e||(Y.value=null)}},{default:n(()=>[d(r(w),null,{default:n(()=>[d(r(de),null,{default:n(()=>[d(r(D),null,{default:n(()=>[e(g(r(U)(`routerKeys.confirmDeleteTitle`)),1)]),_:1}),d(r(j),null,{default:n(()=>[e(g(r(U)(`routerKeys.confirmDeleteDesc`,{name:Y.value?.name})),1)]),_:1})]),_:1}),d(r(k),null,{default:n(()=>[d(r(O),null,{default:n(()=>[e(g(r(U)(`common.cancel`)),1)]),_:1}),d(r(m),{variant:`destructive`,onClick:ke},{default:n(()=>[e(g(r(U)(`common.delete`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{U as default};
@@ -0,0 +1 @@
1
+ import{Et as e,Ht as t,J as n,Pt as r,X as i,dt as a,et as o,ft as s,gt as c,i as l,lt as u,m as d,pt as f,tt as p,zt as m}from"./button-DZwflOXO.js";import{D as h,K as g,U as _,q as v,z as y}from"./index-PMAQyWJb.js";var b=`rovingFocusGroup.onEntryFocus`,x={bubbles:!1,cancelable:!0},S={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function C(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function w(e,t,n){let r=C(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return S[r]}function T(e,t=!1){let n=g();for(let r of e)if(r===n||(r.focus({preventScroll:t}),g()!==n))return}function E(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var[D,O]=v(`RovingFocusGroup`),k=p({__name:`RovingFocusGroup`,props:{orientation:{type:String,required:!1,default:void 0},dir:{type:String,required:!1},loop:{type:Boolean,required:!1,default:!1},currentTabStopId:{type:[String,null],required:!1},defaultCurrentTabStopId:{type:String,required:!1},preventScrollOnEntryFocus:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`entryFocus`,`update:currentTabStopId`],setup(n,{expose:a,emit:s}){let u=n,p=s,{loop:g,orientation:v,dir:y}=m(u),S=_(y),C=d(u,`currentTabStopId`,p,{defaultValue:u.defaultCurrentTabStopId,passive:u.currentTabStopId===void 0}),w=r(!1),E=r(!1),D=r(0),{getItems:k,CollectionSlot:A}=h({isProvider:!0});function j(e){let t=!E.value;if(e.currentTarget&&e.target===e.currentTarget&&t&&!w.value){let t=new CustomEvent(b,x);if(e.currentTarget.dispatchEvent(t),p(`entryFocus`,t),!t.defaultPrevented){let e=k().map(e=>e.ref).filter(e=>e.dataset.disabled!==``);T([e.find(e=>e.getAttribute(`data-active`)===``),e.find(e=>e.getAttribute(`data-highlighted`)===``),e.find(e=>e.id===C.value),...e].filter(Boolean),u.preventScrollOnEntryFocus)}}E.value=!1}function M(){setTimeout(()=>{E.value=!1},1)}return a({getItems:k}),O({loop:g,dir:S,orientation:v,currentTabStopId:C,onItemFocus:e=>{C.value=e},onItemShiftTab:()=>{w.value=!0},onFocusableItemAdd:()=>{D.value++},onFocusableItemRemove:()=>{D.value--}}),(n,r)=>(f(),i(t(A),null,{default:e(()=>[o(t(l),{tabindex:w.value||D.value===0?-1:0,"data-orientation":t(v),as:n.as,"as-child":n.asChild,dir:t(S),style:{outline:`none`},onMousedown:r[0]||=e=>E.value=!0,onMouseup:M,onFocus:j,onBlur:r[1]||=e=>w.value=!1},{default:e(()=>[c(n.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`as`,`as-child`,`dir`])]),_:3}))}}),A=p({__name:`RovingFocusItem`,props:{tabStopId:{type:String,required:!1},focusable:{type:Boolean,required:!1,default:!0},active:{type:Boolean,required:!1},allowShiftKey:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(r){let d=r,p=D(),m=y(),g=n(()=>d.tabStopId||m),_=n(()=>p.currentTabStopId.value===g.value),{getItems:v,CollectionItem:b}=h();a(()=>{d.focusable&&p.onFocusableItemAdd()}),s(()=>{d.focusable&&p.onFocusableItemRemove()});function x(e){if(e.key===`Tab`&&e.shiftKey){p.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=w(e,p.orientation.value,p.dir.value);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||!d.allowShiftKey&&e.shiftKey)return;e.preventDefault();let n=[...v().map(e=>e.ref).filter(e=>e.dataset.disabled!==``)];if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let r=n.indexOf(e.currentTarget);n=p.loop.value?E(n,r+1):n.slice(r+1)}u(()=>T(n))}}return(n,r)=>(f(),i(t(b),null,{default:e(()=>[o(t(l),{tabindex:_.value?0:-1,"data-orientation":t(p).orientation.value,"data-active":n.active?``:void 0,"data-disabled":n.focusable?void 0:``,as:n.as,"as-child":n.asChild,onMousedown:r[0]||=e=>{n.focusable?t(p).onItemFocus(g.value):e.preventDefault()},onFocus:r[1]||=e=>t(p).onItemFocus(g.value),onKeydown:x},{default:e(()=>[c(n.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`data-active`,`data-disabled`,`as`,`as-child`])]),_:3}))}});export{k as n,A as t};
@@ -0,0 +1 @@
1
+ import{$ as e,A as t,Et as n,G as r,Ht as i,J as a,K as o,Pt as s,Q as c,R as l,Wt as u,X as d,Y as f,Z as p,dt as ee,et as m,ht as h,k as g,n as _,pt as v,qt as y,tt as te}from"./button-DZwflOXO.js";import{t as ne}from"./MappingEntryEditor-GejG6FYv.js";import{n as re,t as ie}from"./Switch-bk3eQSZ_.js";import{a as ae,c as b,d as oe,f as se,l as x,n as ce,o as le,r as ue,s as de,t as fe,u as S}from"./dialog-C7v6Gaak.js";import{t as C}from"./Label-CjUuzGNQ.js";import{a as pe,b as w,c as me,d as he,f as T,g as E,h as D,i as ge,l as _e,m as O,o as ve,p as k,r as A,s as ye,ut as be}from"./index-PMAQyWJb.js";import{t as xe}from"./Input-DEfnoFS3.js";import{n as Se,t as j}from"./TransformRulesForm-Bo-zFABv.js";var Ce={class:`p-6 space-y-3`},we={class:`text-lg font-semibold text-foreground`},Te={class:`text-sm text-muted-foreground mt-1`},Ee={key:0,class:`flex items-center justify-center py-16 text-muted-foreground text-sm`},De={class:`grid grid-cols-3 gap-3`},Oe=[`onClick`],ke={class:`font-mono text-sm font-semibold text-foreground shrink-0`},Ae={class:`flex-1 flex flex-wrap gap-1 min-w-0`},je={class:`ml-1 text-muted-foreground/60 font-mono`},Me={key:0,class:`text-[10px] text-muted-foreground/50 self-center`},Ne={key:0,class:`border-t`},Pe={class:`flex items-center justify-between px-4 py-2 bg-muted/30`},Fe={class:`text-xs font-medium text-muted-foreground`},Ie={class:`flex flex-wrap gap-1`},Le={class:`flex items-center justify-end gap-1`},Re={key:0,class:`py-12 text-center text-xs text-muted-foreground`},ze={key:0,class:`bg-destructive/10 border border-destructive/30 rounded-md px-3 py-2 text-sm text-destructive`},Be={class:`grid grid-cols-2 gap-3`},Ve={key:0,class:`text-xs text-destructive mt-0.5`},He={class:`flex flex-wrap gap-1.5`},Ue={key:0,class:`text-xs text-destructive mt-0.5`},We={class:`flex items-center gap-2 mb-2`},Ge={class:`flex gap-1.5`},Ke={class:`grid grid-cols-2 gap-3`},qe={key:0,class:`text-xs text-destructive mt-0.5`},Je={key:0,class:`text-xs text-destructive mt-0.5`},Ye={class:`grid grid-cols-2 gap-4`},Xe={class:`border rounded-md p-3 space-y-3`},Ze={class:`text-xs font-medium text-muted-foreground`},Qe={class:`border rounded-md p-3 space-y-3`},$e={class:`text-xs font-medium text-muted-foreground`},et=2,M=te({__name:`Schedules`,setup(te){let{t:M}=l(),N=a(()=>[M(`schedules.weekDays.sun`),M(`schedules.weekDays.mon`),M(`schedules.weekDays.tue`),M(`schedules.weekDays.wed`),M(`schedules.weekDays.thu`),M(`schedules.weekDays.fri`),M(`schedules.weekDays.sat`)]),P=[1,2,3,4,5],F=()=>({name:``,week:[...P],start_hour:0,end_hour:24,targets:[{backend_model:``,provider_id:``}],concurrency_mode:`auto`,max_concurrency:10,queue_timeout_ms:12e4,max_queue_size:100}),I=s(!1),L=s([]),R=s([]),z=s([]),B=s(null),V=s(!1),H=s(null),U=s(``),W=s(null),G=s(F()),K=s({}),q=s(``),J=s({injectHeadersInput:``,dropFieldsInput:``,requestDefaultsInput:``}),Y=a(()=>{let e={};for(let t of z.value)e[t.mapping_group_id]||(e[t.mapping_group_id]=[]),e[t.mapping_group_id].push(t);return e}),tt=a(()=>({clientModel:L.value.find(e=>e.id===U.value)?.client_model??``,targets:G.value.targets,existing:!1,tag:`cust`,active:!0}));function nt(e){G.value.targets=e}function rt(e){let t=N.value,n=[];try{n=JSON.parse(e)}catch{return[]}return n.map(e=>t[e]??`${e}`)}function X(e){return`${e}`.padStart(et,`0`)+`:00`}function Z(e,t){G.value.start_hour=e,G.value.end_hour=t,delete K.value.time}function it(e){B.value=B.value===e?null:e}async function at(){try{L.value=await g.getMappingGroups()}catch(e){console.error(`schedules.loadGroups:`,e),A.error(t(e,M(`schedules.loadGroupsFailed`)))}}async function Q(){try{R.value=await g.getProviders()}catch(e){console.error(`schedules.loadProviders:`,e),A.error(t(e,M(`schedules.loadProvidersFailed`)))}}async function $(){try{z.value=await g.getSchedules()}catch(e){console.error(`schedules.loadAll:`,e),A.error(t(e,M(`schedules.loadSchedulesFailed`)))}}let ot=a(()=>R.value.map(e=>({provider:{id:e.id,name:e.name},models:(e.models??[]).map(e=>({name:e.name,contextWindow:e.context_window??2e5}))})));function st(e){let t=G.value.week.indexOf(e);t>=0?G.value.week.splice(t,1):G.value.week.push(e),delete K.value.week}function ct(e){H.value=null,U.value=e,G.value=F(),J.value={injectHeadersInput:``,dropFieldsInput:``,requestDefaultsInput:``},K.value={},q.value=``,V.value=!0}function lt(e){H.value=e.id,U.value=e.mapping_group_id,K.value={},q.value=``;let t=[{backend_model:``,provider_id:``}];try{let n=JSON.parse(e.mapping_rule);n.targets?.length&&(t=n.targets)}catch(e){console.warn(`Failed to parse mapping_rule:`,e),A.error(M(`schedules.parseRuleFailed`))}let n=[...P];try{n=JSON.parse(e.week)}catch(e){console.warn(`Failed to parse week:`,e),A.error(M(`schedules.parseWeekFailed`))}let r=`auto`,i=10,a=12e4,o=100;if(e.concurrency_rule)try{let t=JSON.parse(e.concurrency_rule);r=t.mode||`auto`,t.max_concurrency&&(i=t.max_concurrency),t.queue_timeout_ms&&(a=t.queue_timeout_ms),t.max_queue_size&&(o=t.max_queue_size)}catch(e){console.warn(`Failed to parse concurrency_rule:`,e),A.error(M(`schedules.parseConcurrencyFailed`))}let s=``,c=``,l=``;if(e.transform_rule)try{let t=JSON.parse(e.transform_rule);c=(t.drop_fields||[]).join(`, `),l=t.request_defaults?JSON.stringify(t.request_defaults):``,s=t.inject_headers?JSON.stringify(t.inject_headers):``}catch(e){console.warn(`Failed to parse transform_rule:`,e),A.error(M(`schedules.parseTransformFailed`))}G.value={name:e.name,week:n,start_hour:e.start_hour,end_hour:e.end_hour,targets:t,concurrency_mode:r,max_concurrency:i,queue_timeout_ms:a,max_queue_size:o},J.value={injectHeadersInput:s,dropFieldsInput:c,requestDefaultsInput:l},V.value=!0}function ut(){let e={};G.value.name.trim()||(e.name=M(`schedules.form.nameRequired`)),G.value.week.length===0&&(e.week=M(`schedules.form.weekRequired`)),G.value.start_hour>=G.value.end_hour&&(e.time=M(`schedules.form.timeInvalid`));for(let t of G.value.targets)if(!t.provider_id||!t.backend_model){e.targets=M(`schedules.form.targetRequired`);break}return K.value=e,Object.keys(e).length===0}function dt(){let{injectHeadersInput:e,dropFieldsInput:t,requestDefaultsInput:n}=J.value;if(!e.trim()&&!t.trim()&&!n.trim())return{rule:null,error:!1};let r=t?t.split(`,`).map(e=>e.trim()).filter(Boolean):null,i=null;if(n.trim())try{i=JSON.parse(n)}catch{return A.error(M(`providers.transform.requestDefaultsJsonError`)),{rule:null,error:!0}}let a=null;if(e.trim())try{a=JSON.parse(e)}catch{return A.error(M(`providers.transform.injectHeadersJsonError`)),{rule:null,error:!0}}return{rule:JSON.stringify({drop_fields:r,request_defaults:i,inject_headers:a}),error:!1}}async function ft(){if(q.value=``,!ut())return;let{rule:e,error:n}=dt();if(!n)try{let t=JSON.stringify({targets:G.value.targets}),n=G.value.concurrency_mode===`none`?null:JSON.stringify({mode:G.value.concurrency_mode,max_concurrency:G.value.max_concurrency,queue_timeout_ms:G.value.queue_timeout_ms,max_queue_size:G.value.max_queue_size}),r={mapping_group_id:U.value,name:G.value.name,week:JSON.stringify(G.value.week),start_hour:G.value.start_hour,end_hour:G.value.end_hour,mapping_rule:t,concurrency_rule:n,transform_rule:e};H.value?await g.updateSchedule(H.value,r):await g.createSchedule(r),V.value=!1,await $()}catch(e){q.value=t(e,M(`schedules.saveFailed`))}}async function pt(e){try{await g.toggleSchedule(e.id),await $()}catch(e){console.error(`schedules.toggle:`,e),A.error(t(e,M(`schedules.toggleFailed`)))}}async function mt(){let e=W.value;if(e){W.value=null;try{await g.deleteSchedule(e.id),await $()}catch(e){console.error(`schedules.delete:`,e),A.error(t(e,M(`schedules.deleteFailed`)))}}}return ee(async()=>{I.value=!0,await Promise.allSettled([at(),Q(),$()]),I.value=!1}),(t,a)=>(v(),c(`div`,Ce,[f(`div`,null,[f(`h2`,we,y(i(M)(`schedules.title`)),1),f(`p`,Te,y(i(M)(`schedules.description`)),1)]),I.value?(v(),c(`div`,Ee,y(i(M)(`common.loading`)),1)):p(``,!0),I.value?p(``,!0):(v(),c(o,{key:1},[f(`div`,De,[(v(!0),c(o,null,h(L.value,t=>(v(),c(`div`,{key:t.id,class:u([`rounded-lg border transition-colors`,[B.value===t.id?`col-span-3 border-primary/30 shadow-sm shadow-primary/5`:`border-border hover:border-border/80`]])},[f(`div`,{class:`flex items-center gap-3 px-4 py-3 cursor-pointer`,onClick:e=>it(t.id)},[f(`span`,ke,y(t.client_model),1),Y.value[t.id]?.length?(v(),d(i(w),{key:0,variant:`secondary`,class:`text-[10px]`},{default:n(()=>[e(y(i(M)(`schedules.ruleCount`,{count:Y.value[t.id].length})),1)]),_:2},1024)):(v(),d(i(w),{key:1,variant:`outline`,class:`text-[10px] text-muted-foreground/50`},{default:n(()=>[e(y(i(M)(`schedules.noRules`)),1)]),_:1})),f(`div`,Ae,[(v(!0),c(o,null,h((Y.value[t.id]??[]).slice(0,3),t=>(v(),d(i(w),{key:t.id,variant:t.enabled?`default`:`secondary`,class:`text-[10px] font-normal`},{default:n(()=>[e(y(t.name)+` `,1),f(`span`,je,y(X(t.start_hour))+`-`+y(X(t.end_hour)),1)]),_:2},1032,[`variant`]))),128)),(Y.value[t.id]?.length??0)>3?(v(),c(`span`,Me,` +`+y(Y.value[t.id].length-3),1)):p(``,!0)]),m(i(be),{class:u([`size-4 text-muted-foreground/40 shrink-0 transition-transform`,{"rotate-180":B.value===t.id}])},null,8,[`class`])],8,Oe),B.value===t.id?(v(),c(`div`,Ne,[f(`div`,Pe,[f(`span`,Fe,y(i(M)(`schedules.scheduleRules`)),1),m(i(_),{size:`sm`,variant:`outline`,class:`h-7 text-xs`,onClick:e=>ct(t.id)},{default:n(()=>[m(i(re),{class:`w-3 h-3 mr-1`}),e(` `+y(i(M)(`schedules.createSchedule`)),1)]),_:1},8,[`onClick`])]),m(i(se),null,{default:n(()=>[m(i(de),null,{default:n(()=>[m(i(x),{class:`bg-muted/50`},{default:n(()=>[m(i(b),{class:`text-muted-foreground text-xs h-8`},{default:n(()=>[e(y(i(M)(`schedules.tableHeaders.name`)),1)]),_:1}),m(i(b),{class:`text-muted-foreground text-xs h-8`},{default:n(()=>[e(y(i(M)(`schedules.tableHeaders.status`)),1)]),_:1}),m(i(b),{class:`text-muted-foreground text-xs h-8`},{default:n(()=>[e(y(i(M)(`schedules.tableHeaders.week`)),1)]),_:1}),m(i(b),{class:`text-muted-foreground text-xs h-8`},{default:n(()=>[e(y(i(M)(`schedules.tableHeaders.timeRange`)),1)]),_:1}),m(i(b),{class:`text-right text-muted-foreground text-xs h-8`},{default:n(()=>[e(y(i(M)(`schedules.tableHeaders.actions`)),1)]),_:1})]),_:1})]),_:1}),m(i(oe),null,{default:n(()=>[(v(!0),c(o,null,h(Y.value[t.id]??[],t=>(v(),d(i(x),{key:t.id},{default:n(()=>[m(i(S),{class:`font-medium text-sm`},{default:n(()=>[e(y(t.name),1)]),_:2},1024),m(i(S),null,{default:n(()=>[m(i(w),{variant:t.enabled?`default`:`secondary`,class:`text-xs`},{default:n(()=>[e(y(t.enabled?i(M)(`schedules.enabled`):i(M)(`schedules.disabled`)),1)]),_:2},1032,[`variant`])]),_:2},1024),m(i(S),null,{default:n(()=>[f(`div`,Ie,[(v(!0),c(o,null,h(rt(t.week),t=>(v(),d(i(w),{key:t,variant:`outline`,class:`text-xs`},{default:n(()=>[e(y(t),1)]),_:2},1024))),128))])]),_:2},1024),m(i(S),{class:`font-mono text-sm`},{default:n(()=>[e(y(X(t.start_hour))+`-`+y(X(t.end_hour)),1)]),_:2},1024),m(i(S),{class:`text-right`},{default:n(()=>[f(`div`,Le,[m(i(ie),{"model-value":!!t.enabled,class:`scale-75`,onClick:r(e=>pt(t),[`stop`])},null,8,[`model-value`,`onClick`]),m(i(_),{variant:`ghost`,size:`sm`,onClick:e=>lt(t)},{default:n(()=>[e(y(i(M)(`common.edit`)),1)]),_:1},8,[`onClick`]),m(i(_),{variant:`ghost`,size:`sm`,class:`text-destructive hover:text-destructive`,onClick:e=>W.value=t},{default:n(()=>[e(y(i(M)(`common.delete`)),1)]),_:1},8,[`onClick`])])]),_:2},1024)]),_:2},1024))),128)),Y.value[t.id]?.length?p(``,!0):(v(),d(i(x),{key:0},{default:n(()=>[m(i(S),{colspan:`5`,class:`text-center text-muted-foreground py-6 text-xs`},{default:n(()=>[e(y(i(M)(`schedules.emptyRules`)),1)]),_:1})]),_:1}))]),_:2},1024)]),_:2},1024)])):p(``,!0)],2))),128))]),L.value.length===0?(v(),c(`p`,Re,y(i(M)(`schedules.noGroups`)),1)):p(``,!0)],64)),m(i(le),{open:V.value,"onUpdate:open":a[17]||=e=>V.value=e},{default:n(()=>[m(i(ae),{class:`sm:max-w-4xl max-h-[85vh] overflow-y-auto`},{default:n(()=>[m(i(ce),null,{default:n(()=>[m(i(fe),null,{default:n(()=>[e(y(H.value?i(M)(`schedules.editSchedule`):i(M)(`schedules.createSchedule`)),1)]),_:1})]),_:1}),f(`form`,{onSubmit:r(ft,[`prevent`]),class:`space-y-4`},[q.value?(v(),c(`div`,ze,y(q.value),1)):p(``,!0),f(`div`,Be,[f(`div`,null,[m(i(C),{class:`text-xs text-muted-foreground`},{default:n(()=>[e(y(i(M)(`schedules.form.name`)),1)]),_:1}),m(i(xe),{modelValue:G.value.name,"onUpdate:modelValue":a[0]||=e=>G.value.name=e,class:`mt-1`,placeholder:i(M)(`schedules.form.namePlaceholder`),onInput:a[1]||=e=>delete K.value.name},null,8,[`modelValue`,`placeholder`]),K.value.name?(v(),c(`p`,Ve,y(K.value.name),1)):p(``,!0)]),f(`div`,null,[m(i(C),{class:`text-xs text-muted-foreground mb-1.5 block`},{default:n(()=>[e(y(i(M)(`schedules.form.week`)),1)]),_:1}),f(`div`,He,[(v(!0),c(o,null,h(N.value,(t,r)=>(v(),d(i(_),{key:r,type:`button`,variant:(G.value.week??[]).includes(r)?`default`:`outline`,size:`sm`,class:`h-7 text-xs`,onClick:e=>st(r)},{default:n(()=>[e(y(t),1)]),_:2},1032,[`variant`,`onClick`]))),128))]),K.value.week?(v(),c(`p`,Ue,y(K.value.week),1)):p(``,!0)])]),f(`div`,null,[f(`div`,We,[m(i(C),{class:`text-xs text-muted-foreground`},{default:n(()=>[e(y(i(M)(`schedules.timePresets.label`)),1)]),_:1}),f(`div`,Ge,[m(i(_),{type:`button`,variant:`outline`,size:`sm`,class:`text-xs h-6`,onClick:a[2]||=e=>Z(9,12)},{default:n(()=>[e(y(i(M)(`schedules.timePresets.morning`)),1)]),_:1}),m(i(_),{type:`button`,variant:`outline`,size:`sm`,class:`text-xs h-6`,onClick:a[3]||=e=>Z(14,18)},{default:n(()=>[e(y(i(M)(`schedules.timePresets.afternoon`)),1)]),_:1}),m(i(_),{type:`button`,variant:`outline`,size:`sm`,class:`text-xs h-6`,onClick:a[4]||=e=>Z(19,21)},{default:n(()=>[e(y(i(M)(`schedules.timePresets.evening`)),1)]),_:1})])]),f(`div`,Ke,[f(`div`,null,[m(i(C),{class:`text-xs text-muted-foreground`},{default:n(()=>[e(y(i(M)(`schedules.form.startTime`)),1)]),_:1}),m(i(E),{modelValue:G.value.start_hour,"onUpdate:modelValue":[a[5]||=e=>G.value.start_hour=e,a[6]||=e=>{G.value.start_hour=Number(e),delete K.value.time}],class:`mt-1`},{default:n(()=>[m(i(k),null,{default:n(()=>[m(i(T),{placeholder:i(M)(`schedules.form.selectHour`)},null,8,[`placeholder`])]),_:1}),m(i(D),null,{default:n(()=>[(v(),c(o,null,h(24,t=>m(i(O),{key:t-1,value:t-1},{default:n(()=>[e(y(String(t-1).padStart(2,`0`))+`:00`,1)]),_:2},1032,[`value`])),64))]),_:1})]),_:1},8,[`modelValue`])]),f(`div`,null,[m(i(C),{class:`text-xs text-muted-foreground`},{default:n(()=>[e(y(i(M)(`schedules.form.endTime`)),1)]),_:1}),m(i(E),{modelValue:G.value.end_hour,"onUpdate:modelValue":[a[7]||=e=>G.value.end_hour=e,a[8]||=e=>{G.value.end_hour=Number(e),delete K.value.time}],class:`mt-1`},{default:n(()=>[m(i(k),null,{default:n(()=>[m(i(T),{placeholder:i(M)(`schedules.form.selectHour`)},null,8,[`placeholder`])]),_:1}),m(i(D),null,{default:n(()=>[(v(),c(o,null,h(24,t=>m(i(O),{key:t,value:t},{default:n(()=>[e(y(String(t).padStart(2,`0`))+`:00`,1)]),_:2},1032,[`value`])),64))]),_:1})]),_:1},8,[`modelValue`])])]),K.value.time?(v(),c(`p`,qe,y(K.value.time),1)):p(``,!0)]),f(`div`,null,[m(i(C),{class:`text-xs text-muted-foreground mb-1 block`},{default:n(()=>[e(y(i(M)(`schedules.form.targets`)),1)]),_:1}),m(ne,{entry:tt.value,"provider-groups":ot.value,expanded:!0,editable:!0,"onUpdate:targets":nt},null,8,[`entry`,`provider-groups`]),K.value.targets?(v(),c(`p`,Je,y(K.value.targets),1)):p(``,!0)]),f(`div`,Ye,[f(`div`,Xe,[f(`div`,Ze,y(i(M)(`schedules.form.concurrencyTitle`)),1),m(Se,{mode:G.value.concurrency_mode,"max-concurrency":G.value.max_concurrency,"queue-timeout-ms":G.value.queue_timeout_ms,"max-queue-size":G.value.max_queue_size,compact:``,"onUpdate:mode":a[9]||=e=>G.value.concurrency_mode=e,"onUpdate:maxConcurrency":a[10]||=e=>G.value.max_concurrency=e,"onUpdate:queueTimeoutMs":a[11]||=e=>G.value.queue_timeout_ms=e,"onUpdate:maxQueueSize":a[12]||=e=>G.value.max_queue_size=e},null,8,[`mode`,`max-concurrency`,`queue-timeout-ms`,`max-queue-size`])]),f(`div`,Qe,[f(`div`,$e,y(i(M)(`providers.transform.title`)),1),m(j,{"inject-headers":J.value.injectHeadersInput,"drop-fields":J.value.dropFieldsInput,"request-defaults":J.value.requestDefaultsInput,compact:``,"onUpdate:injectHeaders":a[13]||=e=>J.value.injectHeadersInput=e,"onUpdate:dropFields":a[14]||=e=>J.value.dropFieldsInput=e,"onUpdate:requestDefaults":a[15]||=e=>J.value.requestDefaultsInput=e},null,8,[`inject-headers`,`drop-fields`,`request-defaults`])])]),m(i(ue),null,{default:n(()=>[m(i(_),{type:`button`,variant:`outline`,onClick:a[16]||=e=>V.value=!1},{default:n(()=>[e(y(i(M)(`common.cancel`)),1)]),_:1}),m(i(_),{type:`submit`},{default:n(()=>[e(y(i(M)(`common.save`)),1)]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]),m(i(he),{open:!!W.value,"onUpdate:open":a[18]||=e=>{e||(W.value=null)}},{default:n(()=>[m(i(me),null,{default:n(()=>[m(i(pe),null,{default:n(()=>[m(i(ge),null,{default:n(()=>[e(y(i(M)(`schedules.confirmDeleteTitle`)),1)]),_:1}),m(i(ye),null,{default:n(()=>[e(y(i(M)(`schedules.confirmDeleteMessage`,{name:W.value?.name??``})),1)]),_:1})]),_:1}),m(i(ve),null,{default:n(()=>[m(i(_e),null,{default:n(()=>[e(y(i(M)(`common.cancel`)),1)]),_:1}),m(i(_),{variant:`destructive`,onClick:mt},{default:n(()=>[e(y(i(M)(`common.delete`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{M as default};