llm-simple-router 0.8.2 → 0.9.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 (120) hide show
  1. package/config/recommended-providers.json +33 -9
  2. package/config/recommended-retry-rules.json +9 -8
  3. package/dist/admin/providers.js +11 -9
  4. package/dist/admin/quick-setup.d.ts +13 -0
  5. package/dist/admin/quick-setup.js +169 -0
  6. package/dist/admin/recommended.js +5 -1
  7. package/dist/admin/routes.js +2 -0
  8. package/dist/config/model-context.d.ts +8 -2
  9. package/dist/config/model-context.js +17 -5
  10. package/dist/config/recommended.d.ts +1 -0
  11. package/dist/config/recommended.js +5 -9
  12. package/dist/proxy/handler/proxy-handler.js +8 -2
  13. package/dist/proxy/patch/index.d.ts +3 -0
  14. package/dist/proxy/patch/index.js +28 -0
  15. package/frontend-dist/assets/CardContent-F3K9pZNP.js +1 -0
  16. package/frontend-dist/assets/CardTitle-13anASyk.js +1 -0
  17. package/frontend-dist/assets/CascadingModelSelect-BmW89GUP.js +1 -0
  18. package/frontend-dist/assets/Checkbox-C2oSHNgP.js +1 -0
  19. package/frontend-dist/assets/CollapsibleContent-CdeCo0Ko.js +1 -0
  20. package/frontend-dist/assets/CollapsibleTrigger-CMd4wTNY.js +1 -0
  21. package/frontend-dist/assets/Collection-BulopTxo.js +1 -0
  22. package/frontend-dist/assets/Dashboard-BahJSTKV.js +3 -0
  23. package/frontend-dist/assets/DialogTitle-CnqbO2hx.js +1 -0
  24. package/frontend-dist/assets/{Input-CAnKUBBK.js → Input-RyuwzbNx.js} +1 -1
  25. package/frontend-dist/assets/Label-73u_Os4X.js +1 -0
  26. package/frontend-dist/assets/Login-CoQSrVLo.js +1 -0
  27. package/frontend-dist/assets/Logs-C2b6MPXL.js +1 -0
  28. package/frontend-dist/assets/MappingList-m2ebUmJ9.js +1 -0
  29. package/frontend-dist/assets/ModelCard-B0pjEq6W.js +1 -0
  30. package/frontend-dist/assets/ModelMappings-BazKS9T4.js +1 -0
  31. package/frontend-dist/assets/Monitor-8B_tm1NO.js +1 -0
  32. package/frontend-dist/assets/{PopoverTrigger-Bj65uUbv.js → PopoverTrigger-DSmA2dE4.js} +1 -1
  33. package/frontend-dist/assets/{PopperContent-gzzf1XHe.js → PopperContent-Bd_mpt_D.js} +1 -1
  34. package/frontend-dist/assets/Providers-TI83sF2T.js +1 -0
  35. package/frontend-dist/assets/ProxyEnhancement-CWLh-YlM.js +5 -0
  36. package/frontend-dist/assets/QuickSetup-DUZNdIvp.js +1 -0
  37. package/frontend-dist/assets/RetryRules-CzhCNQ0R.js +1 -0
  38. package/frontend-dist/assets/RouterKeys-B_C-Wp_I.js +1 -0
  39. package/frontend-dist/assets/RovingFocusItem-DwGTruuB.js +1 -0
  40. package/frontend-dist/assets/Schedules-BMB6RX9e.js +1 -0
  41. package/frontend-dist/assets/SelectValue-DRc1qira.js +1 -0
  42. package/frontend-dist/assets/Settings-Ck8CoUJC.js +6 -0
  43. package/frontend-dist/assets/Setup-dwKkHGrB.js +1 -0
  44. package/frontend-dist/assets/Switch-BE8DAylK.js +1 -0
  45. package/frontend-dist/assets/TableHeader-BqYT-eO-.js +1 -0
  46. package/frontend-dist/assets/Teleport-CLw1Jxrb.js +3 -0
  47. package/frontend-dist/assets/TooltipTrigger-bqCyq9MU.js +1 -0
  48. package/frontend-dist/assets/UnifiedRequestDialog-BDNR1wzi.js +3 -0
  49. package/frontend-dist/assets/UnifiedRequestDialog-DmpjVK9n.css +1 -0
  50. package/frontend-dist/assets/VisuallyHidden-BpDuyh8-.js +1 -0
  51. package/frontend-dist/assets/VisuallyHiddenInput-CCL5ykZW.js +1 -0
  52. package/frontend-dist/assets/alert-dialog-gprnWn1b.js +1 -0
  53. package/frontend-dist/assets/badge-CpT5q-jI.js +1 -0
  54. package/frontend-dist/assets/{button-Ul8WlrM5.js → button-zud8Qspb.js} +7 -7
  55. package/frontend-dist/assets/check-CRv7NpkT.js +1 -0
  56. package/frontend-dist/assets/constants-ncbNnOLM.js +1 -0
  57. package/frontend-dist/assets/copy-CIHn6HDL.js +1 -0
  58. package/frontend-dist/assets/dialog-Da8YFS7g.js +1 -0
  59. package/frontend-dist/assets/file-text-LfP0_JRK.js +1 -0
  60. package/frontend-dist/assets/index-BfXK7SYr.js +1 -0
  61. package/frontend-dist/assets/index-CDtb1WVq.css +1 -0
  62. package/frontend-dist/assets/lib-xfvPneK8.js +1 -0
  63. package/frontend-dist/assets/loader-circle-D8BaqxEc.js +1 -0
  64. package/frontend-dist/assets/sun-n4cC12ho.js +1 -0
  65. package/frontend-dist/assets/trash-2-oDWBOuqK.js +1 -0
  66. package/frontend-dist/assets/{useClipboard-BmmsNSGV.js → useClipboard-C2i7YvJ-.js} +1 -1
  67. package/frontend-dist/assets/{useFocusGuards-A-9V2Y-b.js → useFocusGuards-DORIgNd9.js} +1 -1
  68. package/frontend-dist/assets/useFormControl-OyxyVR_M.js +1 -0
  69. package/frontend-dist/assets/{useLogRetention-BfnBFZ5K.js → useLogRetention-DE7zYGFK.js} +1 -1
  70. package/frontend-dist/assets/useNonce-D_84NiFG.js +1 -0
  71. package/frontend-dist/assets/useTheme-BFhy-DAX.js +1 -0
  72. package/frontend-dist/assets/x-BN5AHIVk.js +1 -0
  73. package/frontend-dist/index.html +22 -20
  74. package/package.json +1 -1
  75. package/frontend-dist/assets/CardContent-BVMQ2_pg.js +0 -1
  76. package/frontend-dist/assets/CardTitle-GLv7QyIY.js +0 -1
  77. package/frontend-dist/assets/CascadingModelSelect-CBhqKFDX.js +0 -1
  78. package/frontend-dist/assets/Checkbox-HPVDmEdV.js +0 -1
  79. package/frontend-dist/assets/CollapsibleTrigger-DhxD9tpM.js +0 -1
  80. package/frontend-dist/assets/Collection-BRt7YxN8.js +0 -1
  81. package/frontend-dist/assets/Dashboard-D1Ys8Zog.js +0 -3
  82. package/frontend-dist/assets/DialogTitle-23q73lwF.js +0 -1
  83. package/frontend-dist/assets/Label-DWdYtVMI.js +0 -1
  84. package/frontend-dist/assets/Login-w5WFOinP.js +0 -1
  85. package/frontend-dist/assets/Logs-C1F1ZmWF.js +0 -1
  86. package/frontend-dist/assets/ModelMappings-BzmecWEH.js +0 -1
  87. package/frontend-dist/assets/Monitor-DrAZFTKR.js +0 -1
  88. package/frontend-dist/assets/Providers-DSgf4mb6.js +0 -1
  89. package/frontend-dist/assets/ProxyEnhancement-Bb1cCP6d.js +0 -5
  90. package/frontend-dist/assets/RetryRules-BwPfEZtm.js +0 -1
  91. package/frontend-dist/assets/RouterKeys-CzTSq1Mx.js +0 -1
  92. package/frontend-dist/assets/RovingFocusItem-CXM_Yfkm.js +0 -1
  93. package/frontend-dist/assets/Schedules-DVilCXrC.js +0 -1
  94. package/frontend-dist/assets/SelectValue-C0-LzGQY.js +0 -1
  95. package/frontend-dist/assets/Settings-Bpk53zVX.js +0 -6
  96. package/frontend-dist/assets/Setup-Dn7EgC49.js +0 -1
  97. package/frontend-dist/assets/Switch-BO8Ooae6.js +0 -1
  98. package/frontend-dist/assets/TableHeader-Bded9VTC.js +0 -1
  99. package/frontend-dist/assets/TabsTrigger-BzKMi9AF.js +0 -1
  100. package/frontend-dist/assets/Teleport-DizRK5O3.js +0 -3
  101. package/frontend-dist/assets/TooltipTrigger-EiIy2zn8.js +0 -1
  102. package/frontend-dist/assets/UnifiedRequestDialog-BABsTaGb.js +0 -3
  103. package/frontend-dist/assets/UnifiedRequestDialog-BjEigSaR.css +0 -1
  104. package/frontend-dist/assets/VisuallyHidden-5AozJQza.js +0 -1
  105. package/frontend-dist/assets/VisuallyHiddenInput-DdiZrV2i.js +0 -1
  106. package/frontend-dist/assets/alert-dialog-DlKUuTPe.js +0 -1
  107. package/frontend-dist/assets/arrow-down-CxWKmZ2I.js +0 -1
  108. package/frontend-dist/assets/badge-9KJEMa53.js +0 -1
  109. package/frontend-dist/assets/check-7ahK--N4.js +0 -1
  110. package/frontend-dist/assets/constants-D_0jiLjw.js +0 -1
  111. package/frontend-dist/assets/copy-DzU2pAMG.js +0 -1
  112. package/frontend-dist/assets/dialog-B9j-FMrd.js +0 -1
  113. package/frontend-dist/assets/file-text-Bj3ZIo-E.js +0 -1
  114. package/frontend-dist/assets/index-Bz_ZaXNn.css +0 -1
  115. package/frontend-dist/assets/index-MedWZMHB.js +0 -1
  116. package/frontend-dist/assets/lib-Hhs3NqfD.js +0 -1
  117. package/frontend-dist/assets/loader-circle-5TJUukEe.js +0 -1
  118. package/frontend-dist/assets/useFormControl-DEO19lRe.js +0 -1
  119. package/frontend-dist/assets/useNonce-BfwUJ1Ci.js +0 -1
  120. package/frontend-dist/assets/x-Cfopt3QL.js +0 -1
@@ -1 +0,0 @@
1
- import{Ct as e,Dt as t,G as n,H as r,It as i,J as a,K as o,Pt as s,R as c,Rt as l,U as u,V as d,W as f,at as p,ct as m,gt as h,it as g,k as _,n as v,ot as y,q as b,yt as x,z as S,zt as C}from"./button-Ul8WlrM5.js";import{n as w,t as ee}from"./UnifiedRequestDialog-BABsTaGb.js";import{t as T}from"./check-7ahK--N4.js";import{t as E}from"./copy-DzU2pAMG.js";import{i as D,n as O,r as k,t as A}from"./TooltipTrigger-EiIy2zn8.js";import{t as j}from"./badge-9KJEMa53.js";import{n as M,t as N}from"./CardContent-BVMQ2_pg.js";import{n as P,t as F}from"./CardTitle-GLv7QyIY.js";import{a as I,i as L,n as R,o as z,r as B,t as V}from"./TableHeader-Bded9VTC.js";import{t as te}from"./useClipboard-BmmsNSGV.js";var H={class:`grid grid-cols-2 lg:grid-cols-4 gap-4 mb-6`},U={class:`text-2xl font-bold text-foreground mt-1`},W={class:`text-xs text-muted-foreground mt-1`},G={class:`text-2xl font-bold text-foreground mt-1`},K={class:`text-xs text-muted-foreground mt-1`},q={class:`text-2xl font-bold text-foreground mt-1`},ne={class:`text-xs text-muted-foreground mt-1`},re={class:`text-2xl font-bold text-foreground mt-1`},ie={class:`text-xs text-muted-foreground mt-1`},ae=a({__name:`MonitorHeader`,props:{stats:{},activeCount:{},streamCount:{}},setup(e){let t=e,i=d(()=>!t.stats||t.stats.totalRequests===0?`0.0`:(t.stats.errorCount/t.stats.totalRequests*100).toFixed(1)),a=d(()=>!t.stats||t.stats.totalRequests===0?`0.0`:(t.stats.retryCount/t.stats.totalRequests*100).toFixed(1)),o=d(()=>t.stats?t.stats.p50LatencyMs.toFixed(0):`--`);return(t,c)=>(y(),n(`div`,H,[b(s(M),null,{default:x(()=>[b(s(N),{class:`p-4`},{default:x(()=>[c[0]||=r(`p`,{class:`text-sm text-muted-foreground`},`活跃请求`,-1),r(`p`,U,C(e.activeCount),1),r(`p`,W,C(e.streamCount)+` 流式 / `+C(e.activeCount-e.streamCount)+` 非流式 `,1)]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(N),{class:`p-4`},{default:x(()=>[c[1]||=r(`p`,{class:`text-sm text-muted-foreground`},`错误率`,-1),r(`p`,G,C(i.value)+`%`,1),r(`p`,K,C(e.stats?.errorCount??0)+` / `+C(e.stats?.totalRequests??0),1)]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(N),{class:`p-4`},{default:x(()=>[c[2]||=r(`p`,{class:`text-sm text-muted-foreground`},`P50 延迟`,-1),r(`p`,q,C(o.value)+`ms`,1),r(`p`,ne,` 平均 `+C(e.stats?.avgLatencyMs?.toFixed(0)??`--`)+`ms `,1)]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(N),{class:`p-4`},{default:x(()=>[c[3]||=r(`p`,{class:`text-sm text-muted-foreground`},`重试率`,-1),r(`p`,re,C(a.value)+`%`,1),r(`p`,ie,C(e.stats?.retryCount??0)+` / `+C(e.stats?.totalRequests??0),1)]),_:1})]),_:1})]))}}),J={class:`space-y-3`},Y={key:0,class:`text-sm text-muted-foreground`},X={class:`flex items-center justify-between text-sm`},Z={class:`font-medium text-foreground`},Q={class:`text-muted-foreground`},oe={key:0,class:`h-2 bg-muted rounded-full overflow-hidden`},se={key:1,class:`flex gap-3 text-xs text-muted-foreground`},ce=a({__name:`ConcurrencyPanel`,props:{providers:{}},setup(e){function t(e){return e.adaptiveLimit??e.maxConcurrency}function a(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(s,c)=>(y(),n(`div`,J,[e.providers.length===0?(y(),n(`div`,Y,` 暂无并发数据 `)):f(``,!0),(y(!0),n(S,null,m(e.providers,e=>(y(),n(`div`,{key:e.providerId,class:`space-y-1`},[r(`div`,X,[r(`span`,Z,C(e.providerName),1),r(`span`,Q,[e.adaptiveEnabled?(y(),n(S,{key:0},[o(C(e.active)+` / `+C(e.adaptiveLimit??e.maxConcurrency)+` `,1),c[0]||=r(`span`,{class:`text-xs`},`(自适应)`,-1)],64)):e.maxConcurrency===0?(y(),n(S,{key:1},[o(`未限制`)],64)):(y(),n(S,{key:2},[o(C(e.active)+` / `+C(e.maxConcurrency),1)],64))])]),e.maxConcurrency>0?(y(),n(`div`,oe,[r(`div`,{class:i([`h-full rounded-full transition-all duration-300`,a(e.active,t(e))]),style:l({width:`${Math.min(100,e.active/t(e)*100)}%`})},null,6)])):f(``,!0),e.maxConcurrency>0?(y(),n(`div`,se,[r(`span`,null,`排队: `+C(e.queued),1),r(`span`,null,`队列上限: `+C(e.adaptiveLimit??e.maxQueueSize),1)])):f(``,!0)]))),128))]))}}),le={key:0,class:`text-sm text-muted-foreground`},ue={key:1,class:`grid grid-cols-2 gap-3 text-sm`},de={class:`font-medium text-foreground`},fe={class:`font-medium text-foreground`},pe={class:`col-span-2`},me={class:`flex items-center justify-between`},he={class:`text-muted-foreground`},ge={class:`h-2 bg-muted rounded-full overflow-hidden mt-1`},_e={class:`font-medium text-foreground`},ve={class:`font-medium text-foreground`},ye={class:`col-span-2`},be={class:`font-medium text-foreground`},xe=a({__name:`RuntimePanel`,props:{runtime:{}},setup(e){let t=e,i=d(()=>!t.runtime||t.runtime.memoryUsage.heapTotal===0?0:Math.min(100,t.runtime.memoryUsage.heapUsed/t.runtime.memoryUsage.heapTotal*100));function a(e){let t=Math.floor(e/1e3);return`${Math.floor(t/3600)}h ${Math.floor(t%3600/60)}m ${t%60}s`}function o(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/(1024*1024)).toFixed(1)}MB`}return(t,s)=>e.runtime?(y(),n(`div`,ue,[r(`div`,null,[s[0]||=r(`p`,{class:`text-muted-foreground`},`运行时间`,-1),r(`p`,de,C(a(e.runtime.uptimeMs)),1)]),r(`div`,null,[s[1]||=r(`p`,{class:`text-muted-foreground`},`内存 RSS`,-1),r(`p`,fe,C(o(e.runtime.memoryUsage.rss)),1)]),r(`div`,pe,[r(`div`,me,[s[2]||=r(`p`,{class:`text-muted-foreground`},`Heap 使用`,-1),r(`p`,he,C(o(e.runtime.memoryUsage.heapUsed))+` / `+C(o(e.runtime.memoryUsage.heapTotal)),1)]),r(`div`,ge,[r(`div`,{class:`h-full bg-blue-500 rounded-full transition-all duration-300`,style:l({width:`${i.value}%`})},null,4)])]),r(`div`,null,[s[3]||=r(`p`,{class:`text-muted-foreground`},`Active Handles`,-1),r(`p`,_e,C(e.runtime.activeHandles),1)]),r(`div`,null,[s[4]||=r(`p`,{class:`text-muted-foreground`},`Active Requests`,-1),r(`p`,ve,C(e.runtime.activeRequests),1)]),r(`div`,ye,[s[5]||=r(`p`,{class:`text-muted-foreground`},`Event Loop 延迟`,-1),r(`p`,be,C(e.runtime.eventLoopDelayMs.toFixed(2))+`ms`,1)])])):(y(),n(`div`,le,`暂无运行时数据`))}}),Se={key:0,class:`text-sm text-muted-foreground`},Ce={key:1,class:`space-y-2`},we={class:`flex items-center justify-between text-sm`},Te={class:`text-muted-foreground`},Ee={class:`h-2 bg-muted rounded-full overflow-hidden`},De=a({__name:`StatusCodePanel`,props:{byStatusCode:{}},setup(e){let t=e,a=d(()=>Object.values(t.byStatusCode).reduce((e,t)=>e+t,0)),o=d(()=>{let e=t.byStatusCode,n=a.value||1,r=s(e,200,299),i=s(e,400,499)-(e[429]||0),o=e[429]||0,c=s(e,500,599);return[{label:`2xx 成功`,count:r,percent:(r/n*100).toFixed(1),textClass:`text-green-600 dark:text-green-400`,barClass:`bg-green-500`},{label:`4xx 客户端错误`,count:i,percent:(i/n*100).toFixed(1),textClass:`text-yellow-600 dark:text-yellow-400`,barClass:`bg-yellow-500`},{label:`429 限流`,count:o,percent:(o/n*100).toFixed(1),textClass:`text-orange-600 dark:text-orange-400`,barClass:`bg-orange-500`},{label:`5xx 服务端错误`,count:c,percent:(c/n*100).toFixed(1),textClass:`text-red-600 dark:text-red-400`,barClass:`bg-red-500`}].filter(e=>e.count>0)});function s(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,t)=>a.value===0?(y(),n(`div`,Se,`暂无状态码数据`)):(y(),n(`div`,Ce,[(y(!0),n(S,null,m(o.value,e=>(y(),n(`div`,{key:e.label,class:`space-y-1`},[r(`div`,we,[r(`span`,{class:i(e.textClass)},C(e.label),3),r(`span`,Te,C(e.count)+` (`+C(e.percent)+`%) `,1)]),r(`div`,Ee,[r(`div`,{class:i([`h-full rounded-full transition-all duration-300`,e.barClass]),style:l({width:`${e.percent}%`})},null,6)])]))),128))]))}}),Oe={key:0,class:`text-sm text-muted-foreground py-4 text-center`},ke={key:1,class:`text-sm text-muted-foreground py-4 text-center`},Ae={class:`flex flex-wrap gap-1`},je={key:0,class:`text-xs text-muted-foreground`},Me=a({__name:`ProviderStatsTable`,props:{stats:{}},setup(e){let t=e,a=d(()=>t.stats?Object.entries(t.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(t,c)=>e.stats?a.value.length===0?(y(),n(`div`,ke,` 暂无 Provider 统计 `)):(y(),u(s(z),{key:2},{default:x(()=>[b(s(V),null,{default:x(()=>[b(s(B),null,{default:x(()=>[b(s(R),null,{default:x(()=>[...c[0]||=[o(`Provider`,-1)]]),_:1}),b(s(R),{class:`text-right`},{default:x(()=>[...c[1]||=[o(`请求数`,-1)]]),_:1}),b(s(R),{class:`text-right`},{default:x(()=>[...c[2]||=[o(`成功率`,-1)]]),_:1}),b(s(R),{class:`text-right`},{default:x(()=>[...c[3]||=[o(`平均延迟`,-1)]]),_:1}),b(s(R),{class:`text-right`},{default:x(()=>[...c[4]||=[o(`重试率`,-1)]]),_:1}),b(s(R),null,{default:x(()=>[...c[5]||=[o(`Top Errors`,-1)]]),_:1})]),_:1})]),_:1}),b(s(I),null,{default:x(()=>[(y(!0),n(S,null,m(a.value,e=>(y(),u(s(B),{key:e.id},{default:x(()=>[b(s(L),{class:`font-medium`},{default:x(()=>[o(C(e.name),1)]),_:2},1024),b(s(L),{class:`text-right`},{default:x(()=>[o(C(e.stats.totalRequests),1)]),_:2},1024),b(s(L),{class:`text-right`},{default:x(()=>[r(`span`,{class:i(e.successRate>=95?`text-green-600`:e.successRate>=80?`text-yellow-600`:`text-red-500`)},C(e.successRate.toFixed(1))+`% `,3)]),_:2},1024),b(s(L),{class:`text-right`},{default:x(()=>[o(C(e.stats.avgLatencyMs.toFixed(0))+`ms`,1)]),_:2},1024),b(s(L),{class:`text-right`},{default:x(()=>[r(`span`,{class:i(e.retryRate>10?`text-yellow-600`:``)},C(e.retryRate.toFixed(1))+`% `,3)]),_:2},1024),b(s(L),null,{default:x(()=>[r(`div`,Ae,[(y(!0),n(S,null,m(e.stats.topErrors.slice(0,3),e=>(y(),u(s(j),{key:e.code,variant:`destructive`,class:`text-xs`},{default:x(()=>[o(C(e.code)+` (`+C(e.count)+`) `,1)]),_:2},1024))),128)),e.stats.topErrors.length===0?(y(),n(`span`,je,`--`)):f(``,!0)])]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})):(y(),n(`div`,Oe,` 暂无数据 `))}});function Ne(e,t,n){let r=null,i=null;function a(){if(!r){r=new EventSource(e),r.onopen=()=>{n?.onOpen?.()};for(let[e,n]of Object.entries(t))r.addEventListener(e,n);r.onerror=()=>{o(),n?.onClose?.(),i=setTimeout(a,3e3)}}}function o(){i&&=(clearTimeout(i),null),r&&=(r.close(),null)}return p(()=>{o(),n?.onClose?.()}),{connect:a,disconnect:o}}var Pe=200;function Fe(){let e=t([]),n=t([]),r=t(null),i=t([]),a=t(null),o=t(!1),s=d(()=>e.value.filter(e=>e.isStream).length),c=d(()=>e.value.filter(e=>!e.queued)),l=d(()=>e.value.filter(e=>e.queued===!0));function u(t){let o;try{o=JSON.parse(t.data)}catch{return}switch(t.type){case`request_start`:{let t=o;n.value.some(e=>e.id===t.id)||e.value.unshift(t);break}case`request_update`:e.value=o;break;case`request_complete`:{let t=o;e.value=e.value.filter(e=>e.id!==t.id),n.value.unshift(t),n.value.length>Pe&&(n.value.length=Pe);break}case`concurrency_update`:i.value=o;break;case`stats_update`:r.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&&(n.streamContent&&(t.streamContent=n.streamContent),n.streamMetrics&&(t.streamMetrics=n.streamMetrics))}break}case`runtime_update`:a.value=o;break}}function f(){o.value=!0}function p(){o.value=!1}async function m(){try{let[t,o,s,c,l]=await Promise.allSettled([_.getMonitorActive(),_.getMonitorRecent(),_.getMonitorStats(),_.getMonitorConcurrency(),_.getMonitorRuntime()]);t.status===`fulfilled`&&(e.value=t.value),o.status===`fulfilled`&&(n.value=o.value),s.status===`fulfilled`&&(r.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),r.value=null,i.value=[],a.value=null}}let g=t(null),v=t(!1),y=t(0);async function b(t){let r=++y.value,i=e.value.find(e=>e.id===t)??n.value.find(e=>e.id===t);if(!i){g.value=null;return}g.value=null,v.value=!0;try{if(i.status===`pending`){try{let e=await _.getMonitorRequest(t);if(r!==y.value)return;g.value={clientRequest:e.clientRequest??void 0,upstreamRequest:e.upstreamRequest??void 0}}catch(e){if(e?.response?.status!==404)throw e;if(r!==y.value)return;let n=await _.getLogDetail(t);if(r!==y.value)return;g.value=n.client_request?{clientRequest:n.client_request}:null}return}let e=await _.getLogDetail(t);if(r!==y.value)return;let n;if(!i.isStream){let t=e.upstream_response;if(t)try{let e=JSON.parse(t);n=(typeof e.body==`string`?e.body:t)??void 0}catch{n=t}}g.value={responseBody:n,clientRequest:e.client_request??void 0,upstreamRequest:e.upstream_request??void 0}}catch(e){if(r!==y.value)return;console.warn(`Failed to load log detail:`,e),g.value=null}finally{r===y.value&&(v.value=!1)}}let x=t(null),S=t(!1);function C(e){x.value=e,S.value=!0,b(e)}let w=d(()=>x.value?e.value.find(e=>e.id===x.value)??n.value.find(e=>e.id===x.value)??null:null);return h(()=>w.value?.status,(e,t)=>{t===`pending`&&(e===`completed`||e===`failed`)&&b(x.value)}),{activeRequests:e,recentCompleted:n,stats:r,concurrency:i,runtime:a,connected:o,streamCount:s,streamingRequests:c,queuedRequests:l,selectedRequestId:x,selectedRequest:w,requestDetailOpen:S,selectRequest:C,logDetailData:g,nonStreamBodyLoading:v,handleSSEMessage:u,handleSSEOpen:f,handleSSEClose:p,loadInitialData:m}}function Ie(e){switch(e){case`pending`:return`default`;case`failed`:return`destructive`;case`completed`:return`secondary`;default:return`outline`}}function Le(e){switch(e){case`pending`:return`进行中`;case`failed`:return`失败`;case`completed`:return`完成`;default:return e}}var Re={class:`p-6`},ze={class:`flex items-center justify-between mb-4`},Be={class:`flex items-center gap-2`},Ve={class:`grid grid-cols-3 gap-4 mb-6`},He={class:`flex items-center justify-between`},Ue={key:0,class:`text-sm text-muted-foreground py-2`},We=[`onClick`],Ge={class:`text-sm text-foreground truncate flex-1`},Ke={class:`text-xs text-muted-foreground shrink-0`},qe={class:`flex items-center justify-between`},Je={key:0,class:`text-sm text-muted-foreground py-2`},Ye=[`onClick`],Xe={class:`text-sm text-foreground truncate flex-1`},Ze={class:`text-xs text-muted-foreground shrink-0`},Qe={class:`flex items-center justify-between`},$e={key:0,class:`text-sm text-muted-foreground py-2`},et=[`onClick`],tt={class:`text-sm text-foreground truncate flex-1`},nt={class:`text-xs text-muted-foreground shrink-0`},rt={class:`grid grid-cols-1 lg:grid-cols-3 gap-4`},$=1e3,it=a({__name:`Monitor`,setup(a){let{activeRequests:l,recentCompleted:d,stats:h,concurrency:_,runtime:I,connected:L,streamCount:R,streamingRequests:z,queuedRequests:B,selectedRequestId:V,selectedRequest:H,requestDetailOpen:U,selectRequest:W,logDetailData:G,handleSSEMessage:K,handleSSEOpen:q,handleSSEClose:ne,loadInitialData:re}=Fe(),{connect:ie}=Ne(`/admin/api/monitor/stream`,{request_start:K,request_update:K,request_complete:K,concurrency_update:K,stats_update:K,runtime_update:K,stream_content_update:K},{onOpen:q,onClose:ne}),{copied:J,copy:Y}=te(),X=t(Date.now()),Z=null;function Q(e){return((X.value-e)/$).toFixed(1)}function oe(e){return e.completedAt?((e.completedAt-e.startTime)/$).toFixed(1)+`s`:`--`}return g(async()=>{await re(),ie(),Z=setInterval(()=>{X.value=Date.now()},$)}),p(()=>{Z&&=(clearInterval(Z),null)}),(t,a)=>(y(),n(`div`,Re,[r(`div`,ze,[a[1]||=r(`h2`,{class:`text-lg font-semibold text-foreground`},`实时监控`,-1),r(`div`,Be,[b(s(j),{variant:s(L)?`default`:`destructive`},{default:x(()=>[o(C(s(L)?`已连接`:`未连接`),1)]),_:1},8,[`variant`])])]),b(ae,{stats:s(h),"active-count":s(l).length,"stream-count":s(R)},null,8,[`stats`,`active-count`,`stream-count`]),r(`div`,Ve,[b(s(M),null,{default:x(()=>[b(s(P),{class:`pb-2`},{default:x(()=>[r(`div`,He,[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[2]||=[o(`活跃请求`,-1)]]),_:1}),b(s(j),{variant:`secondary`},{default:x(()=>[o(C(s(z).length),1)]),_:1})])]),_:1}),b(s(N),null,{default:x(()=>[b(s(w),{class:`h-64`},{default:x(()=>[s(z).length===0?(y(),n(`div`,Ue,` 暂无活跃请求 `)):f(``,!0),(y(!0),n(S,null,m(s(z),e=>(y(),n(`div`,{key:e.id,class:i([`flex items-center gap-2 py-2 px-2 rounded cursor-pointer hover:bg-muted/50 transition-colors`,{"bg-muted":s(V)===e.id}]),onClick:t=>s(W)(e.id)},[b(s(j),{variant:s(Ie)(e.status),class:`shrink-0`},{default:x(()=>[o(C(s(Le)(e.status)),1)]),_:2},1032,[`variant`]),r(`span`,Ge,C(e.model),1),b(s(j),{variant:`outline`,class:`shrink-0 text-xs`},{default:x(()=>[o(C(e.providerName),1)]),_:2},1024),r(`span`,Ke,C(Q(e.startTime))+`s`,1),e.isStream?(y(),u(s(j),{key:0,variant:`outline`,class:`shrink-0 text-xs`},{default:x(()=>[...a[3]||=[o(`SSE`,-1)]]),_:1})):f(``,!0),b(s(O),{"delay-duration":300},{default:x(()=>[b(s(D),null,{default:x(()=>[b(s(A),{"as-child":``},{default:x(()=>[b(s(v),{variant:`ghost`,size:`icon-xs`,class:`shrink-0`,onClick:c(t=>s(Y)(e.id),[`stop`])},{default:x(()=>[s(J)?(y(),u(s(T),{key:0,class:`size-3 text-green-500`})):(y(),u(s(E),{key:1,class:`size-3`}))]),_:1},8,[`onClick`])]),_:2},1024),b(s(k),null,{default:x(()=>[...a[4]||=[o(`复制 ID`,-1)]]),_:1})]),_:2},1024)]),_:2},1024)],10,We))),128))]),_:1})]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(P),{class:`pb-2`},{default:x(()=>[r(`div`,qe,[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[5]||=[o(`队列请求`,-1)]]),_:1}),b(s(j),{variant:`secondary`},{default:x(()=>[o(C(s(B).length),1)]),_:1})])]),_:1}),b(s(N),null,{default:x(()=>[b(s(w),{class:`h-64`},{default:x(()=>[s(B).length===0?(y(),n(`div`,Je,` 暂无排队请求 `)):f(``,!0),(y(!0),n(S,null,m(s(B),e=>(y(),n(`div`,{key:e.id,class:i([`flex items-center gap-2 py-2 px-2 rounded cursor-pointer hover:bg-muted/50 transition-colors`,{"bg-muted":s(V)===e.id}]),onClick:t=>s(W)(e.id)},[b(s(j),{variant:`outline`,class:`shrink-0`},{default:x(()=>[...a[6]||=[o(` 排队 `,-1)]]),_:1}),r(`span`,Xe,C(e.model),1),b(s(j),{variant:`outline`,class:`shrink-0 text-xs`},{default:x(()=>[o(C(e.providerName),1)]),_:2},1024),r(`span`,Ze,C(Q(e.startTime))+`s`,1),b(s(O),{"delay-duration":300},{default:x(()=>[b(s(D),null,{default:x(()=>[b(s(A),{"as-child":``},{default:x(()=>[b(s(v),{variant:`ghost`,size:`icon-xs`,class:`shrink-0`,onClick:c(t=>s(Y)(e.id),[`stop`])},{default:x(()=>[s(J)?(y(),u(s(T),{key:0,class:`size-3 text-green-500`})):(y(),u(s(E),{key:1,class:`size-3`}))]),_:1},8,[`onClick`])]),_:2},1024),b(s(k),null,{default:x(()=>[...a[7]||=[o(`复制 ID`,-1)]]),_:1})]),_:2},1024)]),_:2},1024)],10,Ye))),128))]),_:1})]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(P),{class:`pb-2`},{default:x(()=>[r(`div`,Qe,[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[8]||=[o(`已完成`,-1)]]),_:1}),b(s(j),{variant:`secondary`},{default:x(()=>[o(C(s(d).length),1)]),_:1})])]),_:1}),b(s(N),null,{default:x(()=>[b(s(w),{class:`h-64`},{default:x(()=>[s(d).length===0?(y(),n(`div`,$e,` 暂无已完成请求 `)):f(``,!0),(y(!0),n(S,null,m(s(d),e=>(y(),n(`div`,{key:e.id,class:i([`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":s(V)===e.id}]),onClick:t=>s(W)(e.id)},[b(s(j),{variant:s(Ie)(e.status),class:`shrink-0`},{default:x(()=>[o(C(s(Le)(e.status)),1)]),_:2},1032,[`variant`]),r(`span`,tt,C(e.model),1),b(s(j),{variant:`outline`,class:`shrink-0 text-xs`},{default:x(()=>[o(C(e.providerName),1)]),_:2},1024),e.isStream?(y(),u(s(j),{key:0,variant:`outline`,class:`shrink-0 text-xs`},{default:x(()=>[...a[9]||=[o(`SSE`,-1)]]),_:1})):f(``,!0),r(`span`,nt,C(oe(e)),1),b(s(O),{"delay-duration":300},{default:x(()=>[b(s(D),null,{default:x(()=>[b(s(A),{"as-child":``},{default:x(()=>[b(s(v),{variant:`ghost`,size:`icon-xs`,class:`shrink-0`,onClick:c(t=>s(Y)(e.id),[`stop`])},{default:x(()=>[s(J)?(y(),u(s(T),{key:0,class:`size-3 text-green-500`})):(y(),u(s(E),{key:1,class:`size-3`}))]),_:1},8,[`onClick`])]),_:2},1024),b(s(k),null,{default:x(()=>[...a[10]||=[o(`复制 ID`,-1)]]),_:1})]),_:2},1024)]),_:2},1024)],10,et))),128))]),_:1})]),_:1})]),_:1})]),b(s(M),{class:`mb-4`},{default:x(()=>[b(s(P),null,{default:x(()=>[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[11]||=[o(`Provider 统计`,-1)]]),_:1})]),_:1}),b(s(N),null,{default:x(()=>[b(Me,{stats:s(h)},null,8,[`stats`])]),_:1})]),_:1}),r(`div`,rt,[b(s(M),null,{default:x(()=>[b(s(P),null,{default:x(()=>[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[12]||=[o(`并发度`,-1)]]),_:1})]),_:1}),b(s(N),null,{default:x(()=>[b(ce,{providers:s(_)},null,8,[`providers`])]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(P),null,{default:x(()=>[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[13]||=[o(`状态码分布`,-1)]]),_:1})]),_:1}),b(s(N),null,{default:x(()=>[b(De,{"by-status-code":s(h)?.byStatusCode??{}},null,8,[`by-status-code`])]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(P),null,{default:x(()=>[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[14]||=[o(`运行时`,-1)]]),_:1})]),_:1}),b(s(N),null,{default:x(()=>[b(xe,{runtime:s(I)},null,8,[`runtime`])]),_:1})]),_:1})]),b(ee,{open:s(U),"onUpdate:open":a[0]||=t=>e(U)?U.value=t:null,source:`realtime`,request:s(H),"stream-content":s(H)?.streamContent,"log-detail-data":s(G)},null,8,[`open`,`request`,`stream-content`,`log-detail-data`])]))}});export{it as default};
@@ -1 +0,0 @@
1
- import{A as e,Dt as t,G as n,H as r,It as i,J as a,K as o,L as s,Pt as c,R as ee,U as l,V as te,W as u,ct as ne,dt as re,it as ie,k as d,n as f,ot as p,q as m,yt as h,z as g,zt as _}from"./button-Ul8WlrM5.js";import{b as ae}from"./Teleport-DizRK5O3.js";import{t as oe}from"./check-7ahK--N4.js";import{a as se}from"./PopperContent-gzzf1XHe.js";import{a as ce,i as le,n as ue,r as v,t as de}from"./SelectValue-C0-LzGQY.js";import{t as fe}from"./copy-DzU2pAMG.js";import{n as pe,r as me,t as he}from"./CollapsibleTrigger-DhxD9tpM.js";import{a as ge,n as _e,o as ve,r as ye,t as be}from"./dialog-B9j-FMrd.js";import{a as xe,c as Se,i as Ce,n as we,o as Te,r as Ee,s as De,t as Oe}from"./alert-dialog-DlKUuTPe.js";import{t as y}from"./Label-DWdYtVMI.js";import{t as ke}from"./badge-9KJEMa53.js";import{n as b}from"./lib-Hhs3NqfD.js";import{t as x}from"./Input-CAnKUBBK.js";import{a as Ae,i as S,n as C,o as je,r as Me,t as Ne}from"./TableHeader-Bded9VTC.js";import{t as Pe}from"./constants-D_0jiLjw.js";var Fe=ae(`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`}]]),w;(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})(w||={});var T;(function(e){e.mergeShapes=(e,t)=>({...e,...t})})(T||={});var E=w.arrayToEnum([`string`,`nan`,`number`,`integer`,`float`,`boolean`,`date`,`bigint`,`symbol`,`function`,`undefined`,`null`,`array`,`object`,`unknown`,`promise`,`void`,`never`,`map`,`set`]),D=e=>{switch(typeof e){case`undefined`:return E.undefined;case`string`:return E.string;case`number`:return Number.isNaN(e)?E.nan:E.number;case`boolean`:return E.boolean;case`function`:return E.function;case`bigint`:return E.bigint;case`symbol`:return E.symbol;case`object`:return Array.isArray(e)?E.array:e===null?E.null:e.then&&typeof e.then==`function`&&e.catch&&typeof e.catch==`function`?E.promise:typeof Map<`u`&&e instanceof Map?E.map:typeof Set<`u`&&e instanceof Set?E.set:typeof Date<`u`&&e instanceof Date?E.date:E.object;default:return E.unknown}},O=w.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`]),k=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,w.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()}};k.create=e=>new k(e);var A=(e,t)=>{let n;switch(e.code){case O.invalid_type:n=e.received===E.undefined?`Required`:`Expected ${e.expected}, received ${e.received}`;break;case O.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,w.jsonStringifyReplacer)}`;break;case O.unrecognized_keys:n=`Unrecognized key(s) in object: ${w.joinValues(e.keys,`, `)}`;break;case O.invalid_union:n=`Invalid input`;break;case O.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${w.joinValues(e.options)}`;break;case O.invalid_enum_value:n=`Invalid enum value. Expected ${w.joinValues(e.options)}, received '${e.received}'`;break;case O.invalid_arguments:n=`Invalid function arguments`;break;case O.invalid_return_type:n=`Invalid function return type`;break;case O.invalid_date:n=`Invalid date`;break;case O.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}"`:w.assertNever(e.validation):n=e.validation===`regex`?`Invalid`:`Invalid ${e.validation}`;break;case O.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 O.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 O.custom:n=`Invalid input`;break;case O.invalid_intersection_types:n=`Intersection results could not be merged`;break;case O.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case O.not_finite:n=`Number must be finite`;break;default:n=t.defaultError,w.assertNever(e)}return{message:n}},j=A;function M(){return j}var N=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 P(e,t){let n=M(),r=N({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===A?void 0:A].filter(e=>!!e)});e.common.issues.push(r)}var F=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 I;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 I;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}}},I=Object.freeze({status:`aborted`}),L=e=>({status:`dirty`,value:e}),R=e=>({status:`valid`,value:e}),z=e=>e.status===`aborted`,Ie=e=>e.status===`dirty`,B=e=>e.status===`valid`,Le=e=>typeof Promise<`u`&&e instanceof Promise,V;(function(e){e.errToObj=e=>typeof e==`string`?{message:e}:e||{},e.toString=e=>typeof e==`string`?e:e?.message})(V||={});var H=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}},Re=(e,t)=>{if(B(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(){return this._error||=new k(e.common.issues),this._error}}};function U(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 W=class{get description(){return this._def.description}_getType(e){return D(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:D(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new F,ctx:{common:e.parent.common,data:e.data,parsedType:D(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(Le(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:D(e)};return Re(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:D(e)};if(!this[`~standard`].async)try{let n=this._parseSync({data:e,path:[],parent:t});return B(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=>B(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:D(e)},r=this._parse({data:e,path:n.path,parent:n});return Re(n,await(Le(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:O.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 X({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 Z.create(this,this._def)}nullable(){return Q.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return yt.create(this)}promise(){return Ft.create(this,this._def)}or(e){return xt.create([this,e],this._def)}and(e){return wt.create(this,e,this._def)}transform(e){return new X({...U(this._def),schema:this,typeName:$.ZodEffects,effect:{type:`transform`,transform:e}})}default(e){let t=typeof e==`function`?e:()=>e;return new It({...U(this._def),innerType:this,defaultValue:t,typeName:$.ZodDefault})}brand(){return new zt({typeName:$.ZodBranded,type:this,...U(this._def)})}catch(e){let t=typeof e==`function`?e:()=>e;return new Lt({...U(this._def),innerType:this,catchValue:t,typeName:$.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return Bt.create(this,e)}readonly(){return Vt.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},ze=/^c[^\s-]{8,}$/i,Be=/^[0-9a-z]+$/,Ve=/^[0-9A-HJKMNP-TV-Z]{26}$/i,He=/^[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,G=/^[a-z0-9_-]{21}$/i,K=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,Ue=/^[-+]?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)?)??$/,We=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Ge=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,Ke,qe=/^(?:(?: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])$/,Je=/^(?:(?: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])$/,Ye=/^(([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]))$/,Xe=/^(([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])$/,Ze=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Qe=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,$e=`((\\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])))`,et=RegExp(`^${$e}$`);function tt(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 nt(e){return RegExp(`^${tt(e)}$`)}function rt(e){let t=`${$e}T${tt(e)}`,n=[];return n.push(e.local?`Z?`:`Z`),e.offset&&n.push(`([+-]\\d{2}:?\\d{2})`),t=`${t}(${n.join(`|`)})`,RegExp(`^${t}$`)}function it(e,t){return!!((t===`v4`||!t)&&qe.test(e)||(t===`v6`||!t)&&Ye.test(e))}function at(e,t){if(!K.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 ot(e,t){return!!((t===`v4`||!t)&&Je.test(e)||(t===`v6`||!t)&&Xe.test(e))}var st=class e extends W{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==E.string){let t=this._getOrReturnCtx(e);return P(t,{code:O.invalid_type,expected:E.string,received:t.parsedType}),I}let t=new F,n;for(let r of this._def.checks)if(r.kind===`min`)e.data.length<r.value&&(n=this._getOrReturnCtx(e,n),P(n,{code:O.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),P(n,{code:O.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?P(n,{code:O.too_big,maximum:r.value,type:`string`,inclusive:!0,exact:!0,message:r.message}):a&&P(n,{code:O.too_small,minimum:r.value,type:`string`,inclusive:!0,exact:!0,message:r.message}),t.dirty())}else if(r.kind===`email`)We.test(e.data)||(n=this._getOrReturnCtx(e,n),P(n,{validation:`email`,code:O.invalid_string,message:r.message}),t.dirty());else if(r.kind===`emoji`)Ke||=new RegExp(Ge,`u`),Ke.test(e.data)||(n=this._getOrReturnCtx(e,n),P(n,{validation:`emoji`,code:O.invalid_string,message:r.message}),t.dirty());else if(r.kind===`uuid`)He.test(e.data)||(n=this._getOrReturnCtx(e,n),P(n,{validation:`uuid`,code:O.invalid_string,message:r.message}),t.dirty());else if(r.kind===`nanoid`)G.test(e.data)||(n=this._getOrReturnCtx(e,n),P(n,{validation:`nanoid`,code:O.invalid_string,message:r.message}),t.dirty());else if(r.kind===`cuid`)ze.test(e.data)||(n=this._getOrReturnCtx(e,n),P(n,{validation:`cuid`,code:O.invalid_string,message:r.message}),t.dirty());else if(r.kind===`cuid2`)Be.test(e.data)||(n=this._getOrReturnCtx(e,n),P(n,{validation:`cuid2`,code:O.invalid_string,message:r.message}),t.dirty());else if(r.kind===`ulid`)Ve.test(e.data)||(n=this._getOrReturnCtx(e,n),P(n,{validation:`ulid`,code:O.invalid_string,message:r.message}),t.dirty());else if(r.kind===`url`)try{new URL(e.data)}catch{n=this._getOrReturnCtx(e,n),P(n,{validation:`url`,code:O.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),P(n,{validation:`regex`,code:O.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),P(n,{code:O.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),P(n,{code:O.invalid_string,validation:{startsWith:r.value},message:r.message}),t.dirty()):r.kind===`endsWith`?e.data.endsWith(r.value)||(n=this._getOrReturnCtx(e,n),P(n,{code:O.invalid_string,validation:{endsWith:r.value},message:r.message}),t.dirty()):r.kind===`datetime`?rt(r).test(e.data)||(n=this._getOrReturnCtx(e,n),P(n,{code:O.invalid_string,validation:`datetime`,message:r.message}),t.dirty()):r.kind===`date`?et.test(e.data)||(n=this._getOrReturnCtx(e,n),P(n,{code:O.invalid_string,validation:`date`,message:r.message}),t.dirty()):r.kind===`time`?nt(r).test(e.data)||(n=this._getOrReturnCtx(e,n),P(n,{code:O.invalid_string,validation:`time`,message:r.message}),t.dirty()):r.kind===`duration`?Ue.test(e.data)||(n=this._getOrReturnCtx(e,n),P(n,{validation:`duration`,code:O.invalid_string,message:r.message}),t.dirty()):r.kind===`ip`?it(e.data,r.version)||(n=this._getOrReturnCtx(e,n),P(n,{validation:`ip`,code:O.invalid_string,message:r.message}),t.dirty()):r.kind===`jwt`?at(e.data,r.alg)||(n=this._getOrReturnCtx(e,n),P(n,{validation:`jwt`,code:O.invalid_string,message:r.message}),t.dirty()):r.kind===`cidr`?ot(e.data,r.version)||(n=this._getOrReturnCtx(e,n),P(n,{validation:`cidr`,code:O.invalid_string,message:r.message}),t.dirty()):r.kind===`base64`?Ze.test(e.data)||(n=this._getOrReturnCtx(e,n),P(n,{validation:`base64`,code:O.invalid_string,message:r.message}),t.dirty()):r.kind===`base64url`?Qe.test(e.data)||(n=this._getOrReturnCtx(e,n),P(n,{validation:`base64url`,code:O.invalid_string,message:r.message}),t.dirty()):w.assertNever(r);return{status:t.value,value:e.data}}_regex(e,t,n){return this.refinement(t=>e.test(t),{validation:t,code:O.invalid_string,...V.errToObj(n)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(e){return this._addCheck({kind:`email`,...V.errToObj(e)})}url(e){return this._addCheck({kind:`url`,...V.errToObj(e)})}emoji(e){return this._addCheck({kind:`emoji`,...V.errToObj(e)})}uuid(e){return this._addCheck({kind:`uuid`,...V.errToObj(e)})}nanoid(e){return this._addCheck({kind:`nanoid`,...V.errToObj(e)})}cuid(e){return this._addCheck({kind:`cuid`,...V.errToObj(e)})}cuid2(e){return this._addCheck({kind:`cuid2`,...V.errToObj(e)})}ulid(e){return this._addCheck({kind:`ulid`,...V.errToObj(e)})}base64(e){return this._addCheck({kind:`base64`,...V.errToObj(e)})}base64url(e){return this._addCheck({kind:`base64url`,...V.errToObj(e)})}jwt(e){return this._addCheck({kind:`jwt`,...V.errToObj(e)})}ip(e){return this._addCheck({kind:`ip`,...V.errToObj(e)})}cidr(e){return this._addCheck({kind:`cidr`,...V.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,...V.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,...V.errToObj(e?.message)})}duration(e){return this._addCheck({kind:`duration`,...V.errToObj(e)})}regex(e,t){return this._addCheck({kind:`regex`,regex:e,...V.errToObj(t)})}includes(e,t){return this._addCheck({kind:`includes`,value:e,position:t?.position,...V.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:`startsWith`,value:e,...V.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:`endsWith`,value:e,...V.errToObj(t)})}min(e,t){return this._addCheck({kind:`min`,value:e,...V.errToObj(t)})}max(e,t){return this._addCheck({kind:`max`,value:e,...V.errToObj(t)})}length(e,t){return this._addCheck({kind:`length`,value:e,...V.errToObj(t)})}nonempty(e){return this.min(1,V.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}};st.create=e=>new st({checks:[],typeName:$.ZodString,coerce:e?.coerce??!1,...U(e)});function ct(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 lt=class e extends W{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)!==E.number){let t=this._getOrReturnCtx(e);return P(t,{code:O.invalid_type,expected:E.number,received:t.parsedType}),I}let t,n=new F;for(let r of this._def.checks)r.kind===`int`?w.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),P(t,{code:O.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),P(t,{code:O.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),P(t,{code:O.too_big,maximum:r.value,type:`number`,inclusive:r.inclusive,exact:!1,message:r.message}),n.dirty()):r.kind===`multipleOf`?ct(e.data,r.value)!==0&&(t=this._getOrReturnCtx(e,t),P(t,{code:O.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):r.kind===`finite`?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),P(t,{code:O.not_finite,message:r.message}),n.dirty()):w.assertNever(r);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit(`min`,e,!0,V.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,V.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,V.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,V.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:V.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(e){return this._addCheck({kind:`int`,message:V.toString(e)})}positive(e){return this._addCheck({kind:`min`,value:0,inclusive:!1,message:V.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:0,inclusive:!1,message:V.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:0,inclusive:!0,message:V.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:0,inclusive:!0,message:V.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:V.toString(t)})}finite(e){return this._addCheck({kind:`finite`,message:V.toString(e)})}safe(e){return this._addCheck({kind:`min`,inclusive:!0,value:-(2**53-1),message:V.toString(e)})._addCheck({kind:`max`,inclusive:!0,value:2**53-1,message:V.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`&&w.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)}};lt.create=e=>new lt({checks:[],typeName:$.ZodNumber,coerce:e?.coerce||!1,...U(e)});var ut=class e extends W{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)!==E.bigint)return this._getInvalidInput(e);let t,n=new F;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),P(t,{code:O.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),P(t,{code:O.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),P(t,{code:O.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):w.assertNever(r);return{status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return P(t,{code:O.invalid_type,expected:E.bigint,received:t.parsedType}),I}gte(e,t){return this.setLimit(`min`,e,!0,V.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,V.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,V.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,V.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:V.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:V.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!1,message:V.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!0,message:V.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!0,message:V.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:V.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}};ut.create=e=>new ut({checks:[],typeName:$.ZodBigInt,coerce:e?.coerce??!1,...U(e)});var dt=class extends W{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==E.boolean){let t=this._getOrReturnCtx(e);return P(t,{code:O.invalid_type,expected:E.boolean,received:t.parsedType}),I}return R(e.data)}};dt.create=e=>new dt({typeName:$.ZodBoolean,coerce:e?.coerce||!1,...U(e)});var ft=class e extends W{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==E.date){let t=this._getOrReturnCtx(e);return P(t,{code:O.invalid_type,expected:E.date,received:t.parsedType}),I}if(Number.isNaN(e.data.getTime()))return P(this._getOrReturnCtx(e),{code:O.invalid_date}),I;let t=new F,n;for(let r of this._def.checks)r.kind===`min`?e.data.getTime()<r.value&&(n=this._getOrReturnCtx(e,n),P(n,{code:O.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),P(n,{code:O.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:`date`}),t.dirty()):w.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:V.toString(t)})}max(e,t){return this._addCheck({kind:`max`,value:e.getTime(),message:V.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)}};ft.create=e=>new ft({checks:[],coerce:e?.coerce||!1,typeName:$.ZodDate,...U(e)});var pt=class extends W{_parse(e){if(this._getType(e)!==E.symbol){let t=this._getOrReturnCtx(e);return P(t,{code:O.invalid_type,expected:E.symbol,received:t.parsedType}),I}return R(e.data)}};pt.create=e=>new pt({typeName:$.ZodSymbol,...U(e)});var mt=class extends W{_parse(e){if(this._getType(e)!==E.undefined){let t=this._getOrReturnCtx(e);return P(t,{code:O.invalid_type,expected:E.undefined,received:t.parsedType}),I}return R(e.data)}};mt.create=e=>new mt({typeName:$.ZodUndefined,...U(e)});var ht=class extends W{_parse(e){if(this._getType(e)!==E.null){let t=this._getOrReturnCtx(e);return P(t,{code:O.invalid_type,expected:E.null,received:t.parsedType}),I}return R(e.data)}};ht.create=e=>new ht({typeName:$.ZodNull,...U(e)});var gt=class extends W{constructor(){super(...arguments),this._any=!0}_parse(e){return R(e.data)}};gt.create=e=>new gt({typeName:$.ZodAny,...U(e)});var _t=class extends W{constructor(){super(...arguments),this._unknown=!0}_parse(e){return R(e.data)}};_t.create=e=>new _t({typeName:$.ZodUnknown,...U(e)});var q=class extends W{_parse(e){let t=this._getOrReturnCtx(e);return P(t,{code:O.invalid_type,expected:E.never,received:t.parsedType}),I}};q.create=e=>new q({typeName:$.ZodNever,...U(e)});var vt=class extends W{_parse(e){if(this._getType(e)!==E.undefined){let t=this._getOrReturnCtx(e);return P(t,{code:O.invalid_type,expected:E.void,received:t.parsedType}),I}return R(e.data)}};vt.create=e=>new vt({typeName:$.ZodVoid,...U(e)});var yt=class e extends W{_parse(e){let{ctx:t,status:n}=this._processInputParams(e),r=this._def;if(t.parsedType!==E.array)return P(t,{code:O.invalid_type,expected:E.array,received:t.parsedType}),I;if(r.exactLength!==null){let e=t.data.length>r.exactLength.value,i=t.data.length<r.exactLength.value;(e||i)&&(P(t,{code:e?O.too_big:O.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&&(P(t,{code:O.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&&(P(t,{code:O.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 H(t,e,t.path,n)))).then(e=>F.mergeArray(n,e));let i=[...t.data].map((e,n)=>r.type._parseSync(new H(t,e,t.path,n)));return F.mergeArray(n,i)}get element(){return this._def.type}min(t,n){return new e({...this._def,minLength:{value:t,message:V.toString(n)}})}max(t,n){return new e({...this._def,maxLength:{value:t,message:V.toString(n)}})}length(t,n){return new e({...this._def,exactLength:{value:t,message:V.toString(n)}})}nonempty(e){return this.min(1,e)}};yt.create=(e,t)=>new yt({type:e,minLength:null,maxLength:null,exactLength:null,typeName:$.ZodArray,...U(t)});function bt(e){if(e instanceof J){let t={};for(let n in e.shape){let r=e.shape[n];t[n]=Z.create(bt(r))}return new J({...e._def,shape:()=>t})}else if(e instanceof yt)return new yt({...e._def,type:bt(e.element)});else if(e instanceof Z)return Z.create(bt(e.unwrap()));else if(e instanceof Q)return Q.create(bt(e.unwrap()));else if(e instanceof Tt)return Tt.create(e.items.map(e=>bt(e)));else return e}var J=class e extends W{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();return this._cached={shape:e,keys:w.objectKeys(e)},this._cached}_parse(e){if(this._getType(e)!==E.object){let t=this._getOrReturnCtx(e);return P(t,{code:O.invalid_type,expected:E.object,received:t.parsedType}),I}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 H(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&&(P(n,{code:O.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 H(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=>F.mergeObjectSync(t,e)):F.mergeObjectSync(t,o)}get shape(){return this._def.shape()}strict(t){return V.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:V.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 w.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 w.objectKeys(this.shape))t[e]||(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}deepPartial(){return bt(this)}partial(t){let n={};for(let e of w.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 w.objectKeys(this.shape))if(t&&!t[e])n[e]=this.shape[e];else{let t=this.shape[e];for(;t instanceof Z;)t=t._def.innerType;n[e]=t}return new e({...this._def,shape:()=>n})}keyof(){return Mt(w.objectKeys(this.shape))}};J.create=(e,t)=>new J({shape:()=>e,unknownKeys:`strip`,catchall:q.create(),typeName:$.ZodObject,...U(t)}),J.strictCreate=(e,t)=>new J({shape:()=>e,unknownKeys:`strict`,catchall:q.create(),typeName:$.ZodObject,...U(t)}),J.lazycreate=(e,t)=>new J({shape:e,unknownKeys:`strip`,catchall:q.create(),typeName:$.ZodObject,...U(t)});var xt=class extends W{_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 k(e.ctx.common.issues));return P(t,{code:O.invalid_union,unionErrors:n}),I}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 k(e));return P(t,{code:O.invalid_union,unionErrors:i}),I}}get options(){return this._def.options}};xt.create=(e,t)=>new xt({options:e,typeName:$.ZodUnion,...U(t)});var Y=e=>e instanceof At?Y(e.schema):e instanceof X?Y(e.innerType()):e instanceof jt?[e.value]:e instanceof Nt?e.options:e instanceof Pt?w.objectValues(e.enum):e instanceof It?Y(e._def.innerType):e instanceof mt?[void 0]:e instanceof ht?[null]:e instanceof Z?[void 0,...Y(e.unwrap())]:e instanceof Q?[null,...Y(e.unwrap())]:e instanceof zt||e instanceof Vt?Y(e.unwrap()):e instanceof Lt?Y(e._def.innerType):[],St=class e extends W{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==E.object)return P(t,{code:O.invalid_type,expected:E.object,received:t.parsedType}),I;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}):(P(t,{code:O.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),I)}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,...U(r)})}};function Ct(e,t){let n=D(e),r=D(t);if(e===t)return{valid:!0,data:e};if(n===E.object&&r===E.object){let n=w.objectKeys(t),r=w.objectKeys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=Ct(e[n],t[n]);if(!r.valid)return{valid:!1};i[n]=r.data}return{valid:!0,data:i}}else if(n===E.array&&r===E.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=Ct(i,a);if(!o.valid)return{valid:!1};n.push(o.data)}return{valid:!0,data:n}}else if(n===E.date&&r===E.date&&+e==+t)return{valid:!0,data:e};else return{valid:!1}}var wt=class extends W{_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=(e,r)=>{if(z(e)||z(r))return I;let i=Ct(e.value,r.value);return i.valid?((Ie(e)||Ie(r))&&t.dirty(),{status:t.value,value:i.data}):(P(n,{code:O.invalid_intersection_types}),I)};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}))}};wt.create=(e,t,n)=>new wt({left:e,right:t,typeName:$.ZodIntersection,...U(n)});var Tt=class e extends W{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==E.array)return P(n,{code:O.invalid_type,expected:E.array,received:n.parsedType}),I;if(n.data.length<this._def.items.length)return P(n,{code:O.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),I;!this._def.rest&&n.data.length>this._def.items.length&&(P(n,{code:O.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 H(n,e,n.path,t)):null}).filter(e=>!!e);return n.common.async?Promise.all(r).then(e=>F.mergeArray(t,e)):F.mergeArray(t,r)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};Tt.create=(e,t)=>{if(!Array.isArray(e))throw Error(`You must pass an array of schemas to z.tuple([ ... ])`);return new Tt({items:e,typeName:$.ZodTuple,rest:null,...U(t)})};var Et=class e extends W{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!==E.object)return P(n,{code:O.invalid_type,expected:E.object,received:n.parsedType}),I;let r=[],i=this._def.keyType,a=this._def.valueType;for(let e in n.data)r.push({key:i._parse(new H(n,e,n.path,e)),value:a._parse(new H(n,n.data[e],n.path,e)),alwaysSet:e in n.data});return n.common.async?F.mergeObjectAsync(t,r):F.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof W?new e({keyType:t,valueType:n,typeName:$.ZodRecord,...U(r)}):new e({keyType:st.create(),valueType:t,typeName:$.ZodRecord,...U(n)})}},Dt=class extends W{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!==E.map)return P(n,{code:O.invalid_type,expected:E.map,received:n.parsedType}),I;let r=this._def.keyType,i=this._def.valueType,a=[...n.data.entries()].map(([e,t],a)=>({key:r._parse(new H(n,e,n.path,[a,`key`])),value:i._parse(new H(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 I;(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 I;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}}}};Dt.create=(e,t,n)=>new Dt({valueType:t,keyType:e,typeName:$.ZodMap,...U(n)});var Ot=class e extends W{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==E.set)return P(n,{code:O.invalid_type,expected:E.set,received:n.parsedType}),I;let r=this._def;r.minSize!==null&&n.data.size<r.minSize.value&&(P(n,{code:O.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&&(P(n,{code:O.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 I;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 H(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:V.toString(n)}})}max(t,n){return new e({...this._def,maxSize:{value:t,message:V.toString(n)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};Ot.create=(e,t)=>new Ot({valueType:e,minSize:null,maxSize:null,typeName:$.ZodSet,...U(t)});var kt=class e extends W{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==E.function)return P(t,{code:O.invalid_type,expected:E.function,received:t.parsedType}),I;function n(e,n){return N({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,M(),A].filter(e=>!!e),issueData:{code:O.invalid_arguments,argumentsError:n}})}function r(e,n){return N({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,M(),A].filter(e=>!!e),issueData:{code:O.invalid_return_type,returnTypeError:n}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof Ft){let e=this;return R(async function(...t){let o=new k([]),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 R(function(...t){let o=e._def.args.safeParse(t,i);if(!o.success)throw new k([n(t,o.error)]);let s=Reflect.apply(a,this,o.data),c=e._def.returns.safeParse(s,i);if(!c.success)throw new k([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:Tt.create(t).rest(_t.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||Tt.create([]).rest(_t.create()),returns:n||_t.create(),typeName:$.ZodFunction,...U(r)})}},At=class extends W{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})}};At.create=(e,t)=>new At({getter:e,typeName:$.ZodLazy,...U(t)});var jt=class extends W{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return P(t,{received:t.data,code:O.invalid_literal,expected:this._def.value}),I}return{status:`valid`,value:e.data}}get value(){return this._def.value}};jt.create=(e,t)=>new jt({value:e,typeName:$.ZodLiteral,...U(t)});function Mt(e,t){return new Nt({values:e,typeName:$.ZodEnum,...U(t)})}var Nt=class e extends W{_parse(e){if(typeof e.data!=`string`){let t=this._getOrReturnCtx(e),n=this._def.values;return P(t,{expected:w.joinValues(n),received:t.parsedType,code:O.invalid_type}),I}if(this._cache||=new Set(this._def.values),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),n=this._def.values;return P(t,{received:t.data,code:O.invalid_enum_value,options:n}),I}return R(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})}};Nt.create=Mt;var Pt=class extends W{_parse(e){let t=w.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==E.string&&n.parsedType!==E.number){let e=w.objectValues(t);return P(n,{expected:w.joinValues(e),received:n.parsedType,code:O.invalid_type}),I}if(this._cache||=new Set(w.getValidEnumValues(this._def.values)),!this._cache.has(e.data)){let e=w.objectValues(t);return P(n,{received:n.data,code:O.invalid_enum_value,options:e}),I}return R(e.data)}get enum(){return this._def.values}};Pt.create=(e,t)=>new Pt({values:e,typeName:$.ZodNativeEnum,...U(t)});var Ft=class extends W{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==E.promise&&t.common.async===!1?(P(t,{code:O.invalid_type,expected:E.promise,received:t.parsedType}),I):R((t.parsedType===E.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}};Ft.create=(e,t)=>new Ft({type:e,typeName:$.ZodPromise,...U(t)});var X=class extends W{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=>{P(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 I;let r=await this._def.schema._parseAsync({data:e,path:n.path,parent:n});return r.status===`aborted`?I:r.status===`dirty`||t.value===`dirty`?L(r.value):r});{if(t.value===`aborted`)return I;let r=this._def.schema._parseSync({data:e,path:n.path,parent:n});return r.status===`aborted`?I:r.status===`dirty`||t.value===`dirty`?L(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`?I:(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`?I:(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(!B(e))return I;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=>B(e)?Promise.resolve(r.transform(e.value,i)).then(e=>({status:t.value,value:e})):I);w.assertNever(r)}};X.create=(e,t,n)=>new X({schema:e,typeName:$.ZodEffects,effect:t,...U(n)}),X.createWithPreprocess=(e,t,n)=>new X({schema:t,effect:{type:`preprocess`,transform:e},typeName:$.ZodEffects,...U(n)});var Z=class extends W{_parse(e){return this._getType(e)===E.undefined?R(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Z.create=(e,t)=>new Z({innerType:e,typeName:$.ZodOptional,...U(t)});var Q=class extends W{_parse(e){return this._getType(e)===E.null?R(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Q.create=(e,t)=>new Q({innerType:e,typeName:$.ZodNullable,...U(t)});var It=class extends W{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return t.parsedType===E.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};It.create=(e,t)=>new It({innerType:e,typeName:$.ZodDefault,defaultValue:typeof t.default==`function`?t.default:()=>t.default,...U(t)});var Lt=class extends W{_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 Le(r)?r.then(e=>({status:`valid`,value:e.status===`valid`?e.value:this._def.catchValue({get error(){return new k(n.common.issues)},input:n.data})})):{status:`valid`,value:r.status===`valid`?r.value:this._def.catchValue({get error(){return new k(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};Lt.create=(e,t)=>new Lt({innerType:e,typeName:$.ZodCatch,catchValue:typeof t.catch==`function`?t.catch:()=>t.catch,...U(t)});var Rt=class extends W{_parse(e){if(this._getType(e)!==E.nan){let t=this._getOrReturnCtx(e);return P(t,{code:O.invalid_type,expected:E.nan,received:t.parsedType}),I}return{status:`valid`,value:e.data}}};Rt.create=e=>new Rt({typeName:$.ZodNaN,...U(e)});var zt=class extends W{_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}},Bt=class e extends W{_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`?I:e.status===`dirty`?(t.dirty(),L(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`?I: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})}},Vt=class extends W{_parse(e){let t=this._def.innerType._parse(e),n=e=>(B(e)&&(e.value=Object.freeze(e.value)),e);return Le(t)?t.then(e=>n(e)):n(t)}unwrap(){return this._def.innerType}};Vt.create=(e,t)=>new Vt({innerType:e,typeName:$.ZodReadonly,...U(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 Ht=st.create;lt.create,Rt.create,ut.create,dt.create,ft.create,pt.create,mt.create,ht.create,gt.create,_t.create,q.create,vt.create,yt.create;var Ut=J.create;J.strictCreate,xt.create,St.create,wt.create,Tt.create,Et.create,Dt.create,Ot.create,kt.create,At.create,jt.create,Nt.create,Pt.create,Ft.create,X.create,Z.create,Q.create,X.createWithPreprocess,Bt.create;function Wt(){let n=t({dropFieldsInput:``,requestDefaultsInput:``,injectHeadersInput:``,exists:!1});async function r(t){try{let e=await d.getTransformRules(t);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(t){b.error(e(t,`加载转换规则失败`)),n.value.dropFieldsInput=``,n.value.requestDefaultsInput=``,n.value.injectHeadersInput=``,n.value.exists=!1}}function i(t){if(!t)return Promise.resolve();let r=n.value.dropFieldsInput?n.value.dropFieldsInput.split(`,`).map(e=>e.trim()).filter(Boolean):null,i=null;if(n.value.requestDefaultsInput.trim())try{i=JSON.parse(n.value.requestDefaultsInput)}catch{return b.error(`请求默认值 JSON 格式错误`),Promise.resolve()}let a=null;if(n.value.injectHeadersInput.trim())try{a=JSON.parse(n.value.injectHeadersInput)}catch{return b.error(`注入 Headers JSON 格式错误`),Promise.resolve()}return d.upsertTransformRules(t,{drop_fields:r,request_defaults:i,inject_headers:a,is_active:1}).then(()=>{n.value.exists=!0,b.success(`转换规则已保存`)}).catch(t=>b.error(e(t,`保存失败`)))}function a(t){return t?d.deleteTransformRules(t).then(()=>{n.value.dropFieldsInput=``,n.value.requestDefaultsInput=``,n.value.injectHeadersInput=``,n.value.exists=!1,b.success(`转换规则已删除`)}).catch(t=>b.error(e(t,`删除失败`))):Promise.resolve()}return{transformForm:n,loadTransformRules:r,saveTransformRules:i,handleDeleteTransformRules:a}}var Gt={class:`p-6`},Kt={class:`flex items-center justify-between mb-4`},qt={class:`flex items-center gap-2`},Jt={class:`bg-card rounded-lg border overflow-hidden`},Yt={class:`flex items-center gap-1`},Xt={class:`font-mono text-xs text-muted-foreground`},Zt={class:`flex flex-wrap gap-1`},Qt={key:0,class:`ml-1 text-muted-foreground`},$t={key:0,class:`text-muted-foreground text-xs`},en={key:2,class:`text-muted-foreground`},tn={class:`rounded-md border bg-muted/40 p-3 space-y-2`},nn={class:`flex gap-2`},rn={key:0,class:`text-sm text-destructive mt-1`},an={key:0,class:`text-sm text-destructive mt-1`},on={key:0,class:`text-sm text-destructive mt-1`},sn={class:`flex flex-wrap gap-1.5 mb-1.5`},cn={class:`text-muted-foreground`},ln={class:`flex gap-2`},un={class:`border-t pt-4 mt-4`},dn={class:`space-y-3`},fn={key:0,class:`space-y-2`},pn={key:0,class:`text-sm text-destructive mt-1`},mn={key:0,class:`text-sm text-destructive mt-1`},hn={key:0,class:`text-sm text-destructive mt-1`},gn={class:`flex gap-2`},_n={key:0,class:`mt-2 space-y-1`},vn=3,yn=10,bn=12e4,xn=10,Sn=100,Cn=1e3,wn=1e3,Tn=1e6,En=7,Dn=7,On=2e3,kn=a({__name:`Providers`,setup(a){let ae=[{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`}],w={name:``,api_type:`anthropic`,base_url:``,api_key:``,models:[],is_active:!0,max_concurrency:yn,queue_timeout_ms:bn,max_queue_size:xn,adaptive_enabled:!0},T=t(``),E=t(Pe),D=te({get:()=>String(E.value),set:e=>{E.value=Number(e)}}),O=t([]),k=t([]),A=t(!1),j=t(null),M=t(null),N=t(null),P=t(null),F=t(!1),I=t([]),L=t({...w}),R=t({}),z=t(`auto`),Ie=t(!1),{transformForm:B,loadTransformRules:Le,saveTransformRules:V,handleDeleteTransformRules:H}=Wt(),Re=t(null),U=t(!1),W=Ut({name:Ht().min(1,`请输入名称`).regex(/^[a-zA-Z0-9_-]+$/,`仅允许英文、数字、横线和下划线`),base_url:Ht().min(1,`请输入 Base URL`).url(`请输入合法的 URL`)});function ze(){let e={},t=W.safeParse({name:L.value.name.trim(),base_url:L.value.base_url.trim()});if(!t.success)for(let n of t.error.issues){let t=n.path[0];e[t]||(e[t]=n.message)}if(!j.value&&!L.value.api_key.trim()&&(e.api_key=`请输入 API Key`),z.value!==`none`){let t=L.value.max_concurrency;(!t||t<1||t>Sn)&&(e.max_concurrency=`范围 1-${Sn}`),L.value.queue_timeout_ms<0&&(e.queue_timeout_ms=`不能为负数`);let n=L.value.max_queue_size;(!n||n<1||n>Cn)&&(e.max_queue_size=`范围 1-${Cn}`)}return R.value=e,Object.keys(e).length===0}function Be(e){return e?e.slice(0,En)+`*`.repeat(Dn):``}function Ve(e){return e>=Tn?`${e/Tn}M`:e>=wn?`${e/wn}K`:String(e)}async function He(e,t){await navigator.clipboard.writeText(e),Re.value=t,setTimeout(()=>{Re.value=null},On)}let G=t(``),K=t(``),Ue=te(()=>G.value?k.value.find(e=>e.group===G.value)?.presets??[]:[]);function We(){let e=k.value.find(e=>e.group===G.value)?.presets;e?.length?(K.value=e[0].plan,Ge()):K.value=``}function Ge(){let e=Ue.value.find(e=>e.plan===K.value);e&&(L.value.name=e.presetName,L.value.api_type=e.apiType,L.value.base_url=e.baseUrl,L.value.models=e.models.map(e=>({name:e,context_window:Pe})))}async function Ke(){try{O.value=await d.getProviders()}catch(t){console.error(`Failed to load providers:`,t),b.error(e(t,`加载供应商失败`))}}function qe(){let e=T.value.trim();if(!e)return;let t=e.split(/[,,]/).map(e=>e.trim()).filter(Boolean);for(let e of t)L.value.models.some(t=>t.name===e)||L.value.models.push({name:e,context_window:E.value||2e5});T.value=``,E.value=Pe}function Je(e){L.value.models.splice(e,1)}function Ye(e){e===`auto`?((!L.value.max_concurrency||L.value.max_concurrency<1)&&(L.value.max_concurrency=yn),L.value.adaptive_enabled=!0):e===`manual`&&((!L.value.max_concurrency||L.value.max_concurrency<1)&&(L.value.max_concurrency=vn),L.value.adaptive_enabled=!1)}function Xe(){j.value=null,L.value={...w,models:[]},z.value=`auto`,T.value=``,E.value=Pe,G.value=``,K.value=``,R.value={},A.value=!0}function Ze(e){j.value=e.id;let t=e.max_concurrency??0;t===0?z.value=`none`:e.adaptive_enabled?z.value=`auto`:z.value=`manual`,L.value={name:e.name,api_type:e.api_type,base_url:e.base_url,api_key:``,models:(e.models||[]).map(e=>({name:e.name,context_window:e.context_window??2e5})),is_active:!!e.is_active,max_concurrency:z.value===`none`?yn:t,queue_timeout_ms:e.queue_timeout_ms??bn,max_queue_size:e.max_queue_size??xn,adaptive_enabled:z.value===`auto`},T.value=``,E.value=Pe,G.value=``,K.value=``,R.value={},A.value=!0,Le(e.id)}function Qe(){let e={name:L.value.name,api_type:L.value.api_type,base_url:L.value.base_url,models:L.value.models.map(e=>({name:e.name,context_window:e.context_window??void 0})),is_active:+!!L.value.is_active,max_concurrency:z.value===`none`?0:L.value.max_concurrency,queue_timeout_ms:z.value===`none`?0:L.value.queue_timeout_ms,max_queue_size:z.value===`none`?xn:L.value.max_queue_size,adaptive_enabled:+(z.value===`auto`)};return L.value.api_key&&(e.api_key=L.value.api_key),e}async function $e(){if(ze())try{let e=Qe();e.name=L.value.name.trim(),j.value?await d.updateProvider(j.value,e):(e.api_key=L.value.api_key,await d.createProvider(e)),A.value=!1,await Ke()}catch(t){console.error(`Failed to save provider:`,t),b.error(e(t,`保存供应商失败`))}}function et(e){M.value=e}async function tt(e){if(N.value=e,P.value=e.id,F.value=!!e.is_active,I.value=[],e.is_active)try{I.value=(await d.getProviderDependencies(e.id)).references}catch{}}async function nt(){let t=P.value;if(!t)return;let n=F.value;N.value=null,P.value=null;try{let e=await d.updateProvider(t,{is_active:+!n});if(e.cascadedGroups?.length){let t=e.cascadedGroups.filter(e=>e.disabled).length,n=e.cascadedGroups.length-t,r=[];n>0&&r.push(`清理 ${n} 个分组的引用`),t>0&&r.push(`禁用 ${t} 个分组`),b.warning(`已自动${r.join(`、`)}`)}await Ke()}catch(t){console.error(`Failed to toggle provider:`,t),b.error(e(t,`切换状态失败`))}}async function rt(){let t=M.value;if(t){M.value=null;try{await d.deleteProvider(t.id),await Ke()}catch(t){console.error(`Failed to delete provider:`,t),b.error(e(t,`删除供应商失败`))}}}async function it(){U.value=!0;try{let e=await d.reloadTransformRules();b.success(`插件重载完成:${e.loadedPlugins.length} 个插件,${e.rulesCount} 条规则`)}catch(t){b.error(e(t,`重载失败`))}finally{U.value=!1}}return ie(async()=>{let[e]=await Promise.allSettled([d.recommended.getProviders(),Ke()]);e.status===`fulfilled`?k.value=e.value:(k.value=[],console.error(`Failed to load provider presets:`,e.reason))}),(e,t)=>(p(),n(`div`,Gt,[r(`div`,Kt,[t[31]||=r(`h2`,{class:`text-lg font-semibold text-foreground`},`供应商`,-1),r(`div`,qt,[m(c(f),{variant:`outline`,size:`sm`,onClick:it,disabled:U.value},{default:h(()=>[m(c(Fe),{class:i([`w-4 h-4 mr-1`,{"animate-spin":U.value}])},null,8,[`class`]),t[29]||=o(` 重载插件 `,-1)]),_:1},8,[`disabled`]),m(c(f),{onClick:Xe,class:`flex items-center gap-1`},{default:h(()=>[...t[30]||=[r(`svg`,{class:`w-4 h-4`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[r(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M12 4v16m8-8H4`})],-1),o(` 添加供应商 `,-1)]]),_:1})])]),r(`div`,Jt,[m(c(je),null,{default:h(()=>[m(c(Ne),null,{default:h(()=>[m(c(Me),{class:`bg-muted`},{default:h(()=>[m(c(C),{class:`text-muted-foreground`},{default:h(()=>[...t[32]||=[o(`名称`,-1)]]),_:1}),m(c(C),{class:`text-muted-foreground`},{default:h(()=>[...t[33]||=[o(`类型`,-1)]]),_:1}),m(c(C),{class:`text-muted-foreground`},{default:h(()=>[...t[34]||=[o(`Base URL`,-1)]]),_:1}),m(c(C),{class:`text-muted-foreground`},{default:h(()=>[...t[35]||=[o(`API Key`,-1)]]),_:1}),m(c(C),{class:`text-muted-foreground`},{default:h(()=>[...t[36]||=[o(`模型`,-1)]]),_:1}),m(c(C),{class:`text-muted-foreground`},{default:h(()=>[...t[37]||=[o(`并发`,-1)]]),_:1}),m(c(C),{class:`text-muted-foreground`},{default:h(()=>[...t[38]||=[o(`状态`,-1)]]),_:1}),m(c(C),{class:`text-right text-muted-foreground`},{default:h(()=>[...t[39]||=[o(`操作`,-1)]]),_:1})]),_:1})]),_:1}),m(c(Ae),null,{default:h(()=>[(p(!0),n(g,null,ne(O.value,e=>(p(),l(c(Me),{key:e.id,class:i({"opacity-60":!e.is_active})},{default:h(()=>[m(c(S),{class:`font-medium`},{default:h(()=>[o(_(e.name),1)]),_:2},1024),m(c(S),null,{default:h(()=>[m(c(ke),{variant:`secondary`},{default:h(()=>[o(_(e.api_type),1)]),_:2},1024)]),_:2},1024),m(c(S),{class:`text-muted-foreground`},{default:h(()=>[o(_(e.base_url),1)]),_:2},1024),m(c(S),null,{default:h(()=>[r(`div`,Yt,[r(`span`,Xt,_(Be(e.api_key)),1),m(c(f),{variant:`ghost`,size:`sm`,class:`h-6 w-6 p-0`,onClick:t=>He(e.api_key,e.id)},{default:h(()=>[(p(),l(re(Re.value===e.id?c(oe):c(fe)),{class:i([`w-3.5 h-3.5`,{"text-green-500":Re.value===e.id}])},null,8,[`class`]))]),_:2},1032,[`onClick`])])]),_:2},1024),m(c(S),null,{default:h(()=>[r(`div`,Zt,[(p(!0),n(g,null,ne(e.models||[],e=>(p(),l(c(ke),{key:e.name,variant:`secondary`,class:`text-xs`},{default:h(()=>[o(_(e.name)+` `,1),e.context_window?(p(),n(`span`,Qt,`(`+_(Ve(e.context_window))+`)`,1)):u(``,!0)]),_:2},1024))),128)),e.models?.length?u(``,!0):(p(),n(`span`,$t,`-`))])]),_:2},1024),m(c(S),null,{default:h(()=>[e.adaptive_enabled?(p(),l(c(ke),{key:0,variant:`outline`},{default:h(()=>[...t[40]||=[o(`自适应`,-1)]]),_:1})):e.max_concurrency>0?(p(),l(c(ke),{key:1,variant:`secondary`},{default:h(()=>[o(_(e.max_concurrency),1)]),_:2},1024)):(p(),n(`span`,en,`-`))]),_:2},1024),m(c(S),null,{default:h(()=>[m(c(f),{variant:`ghost`,size:`sm`,class:`gap-1.5`,onClick:t=>tt(e)},{default:h(()=>[r(`span`,{class:i([`relative inline-flex h-4 w-7 shrink-0 items-center rounded-full transition-colors`,e.is_active?`bg-primary`:`bg-input`])},[r(`span`,{class:i([`inline-block h-3 w-3 rounded-full bg-background shadow-sm transition-transform`,e.is_active?`translate-x-3.5`:`translate-x-0.5`])},null,2)],2),m(c(ke),{variant:e.is_active?`default`:`secondary`},{default:h(()=>[o(_(e.is_active?`启用`:`禁用`),1)]),_:2},1032,[`variant`])]),_:2},1032,[`onClick`])]),_:2},1024),m(c(S),{class:`text-right`},{default:h(()=>[m(c(f),{variant:`ghost`,size:`sm`,onClick:t=>Ze(e),class:`text-muted-foreground hover:text-primary mr-2`},{default:h(()=>[...t[41]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),m(c(f),{variant:`ghost`,size:`sm`,onClick:t=>et(e),class:`text-muted-foreground hover:text-destructive`},{default:h(()=>[...t[42]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1032,[`class`]))),128)),O.value.length===0?(p(),l(c(Me),{key:0},{default:h(()=>[m(c(S),{colspan:`8`,class:`text-center text-muted-foreground py-8`},{default:h(()=>[...t[43]||=[o(`暂无供应商`,-1)]]),_:1})]),_:1})):u(``,!0)]),_:1})]),_:1})]),m(c(ve),{open:A.value,"onUpdate:open":t[26]||=e=>A.value=e},{default:h(()=>[m(c(ge),null,{default:h(()=>[m(c(_e),null,{default:h(()=>[m(c(be),null,{default:h(()=>[o(_(j.value?`编辑供应商`:`添加供应商`),1)]),_:1})]),_:1}),r(`form`,{onSubmit:ee($e,[`prevent`]),class:`space-y-3`},[r(`div`,tn,[t[44]||=r(`div`,{class:`text-xs font-medium text-muted-foreground`},`快速配置`,-1),r(`div`,nn,[m(c(ce),{modelValue:G.value,"onUpdate:modelValue":[t[0]||=e=>G.value=e,We]},{default:h(()=>[m(c(ue),{class:`flex-1`},{default:h(()=>[m(c(de),{placeholder:`选择供应商`})]),_:1}),m(c(le),null,{default:h(()=>[(p(!0),n(g,null,ne(k.value,e=>(p(),l(c(v),{key:e.group,value:e.group},{default:h(()=>[o(_(e.group),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`]),m(c(ce),{modelValue:K.value,"onUpdate:modelValue":[t[1]||=e=>K.value=e,Ge],disabled:!G.value},{default:h(()=>[m(c(ue),{class:`flex-1`},{default:h(()=>[m(c(de),{placeholder:`选择套餐`})]),_:1}),m(c(le),null,{default:h(()=>[(p(!0),n(g,null,ne(Ue.value,e=>(p(),l(c(v),{key:e.plan,value:e.plan},{default:h(()=>[o(_(e.plan),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`,`disabled`])])]),r(`div`,null,[m(c(y),{class:`block text-sm font-medium text-foreground mb-1`},{default:h(()=>[...t[45]||=[o(`名称`,-1)]]),_:1}),m(c(x),{modelValue:L.value.name,"onUpdate:modelValue":t[2]||=e=>L.value.name=e,type:`text`,required:``,onInput:t[3]||=e=>delete R.value.name},null,8,[`modelValue`]),R.value.name?(p(),n(`p`,rn,_(R.value.name),1)):u(``,!0)]),r(`div`,null,[m(c(y),{class:`block text-sm font-medium text-foreground mb-1`},{default:h(()=>[...t[46]||=[o(`API 类型`,-1)]]),_:1}),m(c(ce),{modelValue:L.value.api_type,"onUpdate:modelValue":t[4]||=e=>L.value.api_type=e},{default:h(()=>[m(c(ue),null,{default:h(()=>[m(c(de),{placeholder:`选择 API 类型`})]),_:1}),m(c(le),null,{default:h(()=>[m(c(v),{value:`openai`},{default:h(()=>[...t[47]||=[o(`OpenAI`,-1)]]),_:1}),m(c(v),{value:`anthropic`},{default:h(()=>[...t[48]||=[o(`Anthropic`,-1)]]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),r(`div`,null,[m(c(y),{class:`block text-sm font-medium text-foreground mb-1`},{default:h(()=>[...t[49]||=[o(`Base URL`,-1)]]),_:1}),m(c(x),{modelValue:L.value.base_url,"onUpdate:modelValue":t[5]||=e=>L.value.base_url=e,type:`url`,required:``,onInput:t[6]||=e=>delete R.value.base_url},null,8,[`modelValue`]),R.value.base_url?(p(),n(`p`,an,_(R.value.base_url),1)):u(``,!0)]),r(`div`,null,[m(c(y),{class:`block text-sm font-medium text-foreground mb-1`},{default:h(()=>[...t[50]||=[o(`API Key`,-1)]]),_:1}),m(c(x),{modelValue:L.value.api_key,"onUpdate:modelValue":t[7]||=e=>L.value.api_key=e,type:`text`,required:!j.value,placeholder:j.value?`留空则保持原密钥不变`:``,onInput:t[8]||=e=>delete R.value.api_key},null,8,[`modelValue`,`required`,`placeholder`]),R.value.api_key?(p(),n(`p`,on,_(R.value.api_key),1)):u(``,!0)]),r(`div`,null,[m(c(y),{class:`block text-sm font-medium text-foreground mb-1`},{default:h(()=>[...t[51]||=[o(`可用模型`,-1)]]),_:1}),r(`div`,sn,[(p(!0),n(g,null,ne(L.value.models,(e,n)=>(p(),l(c(ke),{key:n,variant:`secondary`,class:`gap-1 pr-1`},{default:h(()=>[o(_(e.name)+` `,1),r(`span`,cn,`(`+_(Ve(e.context_window??c(2e5)))+`)`,1),m(c(f),{type:`button`,variant:`ghost`,size:`icon`,class:`h-4 w-4 rounded-full hover:bg-muted p-0 text-xs leading-none`,onClick:e=>Je(n)},{default:h(()=>[...t[52]||=[o(`×`,-1)]]),_:1},8,[`onClick`])]),_:2},1024))),128))]),r(`div`,ln,[m(c(x),{modelValue:T.value,"onUpdate:modelValue":t[9]||=e=>T.value=e,placeholder:`输入模型名称,多个用逗号分隔`,onKeydown:s(ee(qe,[`prevent`]),[`enter`]),class:`flex-1`},null,8,[`modelValue`,`onKeydown`]),m(c(ce),{modelValue:D.value,"onUpdate:modelValue":t[10]||=e=>D.value=e},{default:h(()=>[m(c(ue),{class:`w-28`},{default:h(()=>[m(c(de),{placeholder:`上下文`})]),_:1}),m(c(le),null,{default:h(()=>[(p(),n(g,null,ne(ae,e=>m(c(v),{key:e.value,value:e.value},{default:h(()=>[o(_(e.label),1)]),_:2},1032,[`value`])),64))]),_:1})]),_:1},8,[`modelValue`]),m(c(f),{type:`button`,variant:`outline`,size:`sm`,onClick:qe,disabled:!T.value.trim()},{default:h(()=>[...t[53]||=[o(`添加`,-1)]]),_:1},8,[`disabled`])])]),r(`div`,un,[t[61]||=r(`div`,{class:`text-sm font-medium text-foreground mb-3`},`并发控制`,-1),r(`div`,dn,[r(`div`,null,[m(c(y),{class:`block text-sm font-medium text-foreground mb-1`},{default:h(()=>[...t[54]||=[o(`模式`,-1)]]),_:1}),m(c(ce),{modelValue:z.value,"onUpdate:modelValue":[t[11]||=e=>z.value=e,t[12]||=e=>Ye(e)]},{default:h(()=>[m(c(ue),null,{default:h(()=>[m(c(de),{placeholder:`选择模式`})]),_:1}),m(c(le),null,{default:h(()=>[m(c(v),{value:`auto`},{default:h(()=>[...t[55]||=[o(`自动(自适应)`,-1)]]),_:1}),m(c(v),{value:`manual`},{default:h(()=>[...t[56]||=[o(`手动`,-1)]]),_:1}),m(c(v),{value:`none`},{default:h(()=>[...t[57]||=[o(`无`,-1)]]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),z.value===`none`?u(``,!0):(p(),n(`div`,fn,[r(`div`,null,[m(c(y),{class:`block text-sm font-medium text-foreground mb-1`},{default:h(()=>[...t[58]||=[o(`最大并发度`,-1)]]),_:1}),m(c(x),{modelValue:L.value.max_concurrency,"onUpdate:modelValue":t[13]||=e=>L.value.max_concurrency=e,modelModifiers:{number:!0},type:`number`,min:`1`,max:Sn,placeholder:z.value===`auto`?`10`:`3`,onInput:t[14]||=e=>delete R.value.max_concurrency},null,8,[`modelValue`,`placeholder`]),R.value.max_concurrency?(p(),n(`p`,pn,_(R.value.max_concurrency),1)):u(``,!0)]),r(`div`,null,[m(c(y),{class:`block text-sm font-medium text-foreground mb-1`},{default:h(()=>[...t[59]||=[o(`队列超时 (ms)`,-1)]]),_:1}),m(c(x),{modelValue:L.value.queue_timeout_ms,"onUpdate:modelValue":t[15]||=e=>L.value.queue_timeout_ms=e,modelModifiers:{number:!0},type:`number`,min:`0`,placeholder:`0 = 无限等待`,onInput:t[16]||=e=>delete R.value.queue_timeout_ms},null,8,[`modelValue`]),R.value.queue_timeout_ms?(p(),n(`p`,mn,_(R.value.queue_timeout_ms),1)):u(``,!0)]),r(`div`,null,[m(c(y),{class:`block text-sm font-medium text-foreground mb-1`},{default:h(()=>[...t[60]||=[o(`最大队列长度`,-1)]]),_:1}),m(c(x),{modelValue:L.value.max_queue_size,"onUpdate:modelValue":t[17]||=e=>L.value.max_queue_size=e,modelModifiers:{number:!0},type:`number`,min:`1`,max:Cn,placeholder:xn,onInput:t[18]||=e=>delete R.value.max_queue_size},null,8,[`modelValue`]),R.value.max_queue_size?(p(),n(`p`,hn,_(R.value.max_queue_size),1)):u(``,!0)])]))])]),j.value?(p(),l(c(me),{key:0,open:Ie.value,"onUpdate:open":t[24]||=e=>Ie.value=e,class:`border rounded-md p-3 mt-2`},{default:h(()=>[m(c(he),{class:`flex items-center justify-between w-full text-sm font-medium text-foreground`},{default:h(()=>[t[62]||=o(` 转换规则 `,-1),m(c(se),{class:i([`w-4 h-4 transition-transform`,Ie.value?`rotate-180`:``])},null,8,[`class`])]),_:1}),m(c(pe),{class:`mt-3 space-y-3`},{default:h(()=>[r(`div`,null,[m(c(y),{class:`text-xs text-muted-foreground`},{default:h(()=>[...t[63]||=[o(`注入 Headers (JSON)`,-1)]]),_:1}),m(c(x),{modelValue:c(B).injectHeadersInput,"onUpdate:modelValue":t[19]||=e=>c(B).injectHeadersInput=e,placeholder:`{"x-custom": "value"}`,class:`mt-1`},null,8,[`modelValue`])]),r(`div`,null,[m(c(y),{class:`text-xs text-muted-foreground`},{default:h(()=>[...t[64]||=[o(`丢弃字段(逗号分隔)`,-1)]]),_:1}),m(c(x),{modelValue:c(B).dropFieldsInput,"onUpdate:modelValue":t[20]||=e=>c(B).dropFieldsInput=e,placeholder:`logprobs, frequency_penalty`,class:`mt-1`},null,8,[`modelValue`])]),r(`div`,null,[m(c(y),{class:`text-xs text-muted-foreground`},{default:h(()=>[...t[65]||=[o(`请求默认值 (JSON)`,-1)]]),_:1}),m(c(x),{modelValue:c(B).requestDefaultsInput,"onUpdate:modelValue":t[21]||=e=>c(B).requestDefaultsInput=e,placeholder:`{"max_tokens": 4096}`,class:`mt-1`},null,8,[`modelValue`])]),r(`div`,gn,[m(c(f),{type:`button`,variant:`outline`,size:`sm`,onClick:t[22]||=e=>c(V)(j.value)},{default:h(()=>[...t[66]||=[o(`保存规则`,-1)]]),_:1}),c(B).exists?(p(),l(c(f),{key:0,type:`button`,variant:`ghost`,size:`sm`,onClick:t[23]||=e=>c(H)(j.value)},{default:h(()=>[...t[67]||=[o(`删除规则`,-1)]]),_:1})):u(``,!0)])]),_:1})]),_:1},8,[`open`])):u(``,!0),m(c(ye),null,{default:h(()=>[m(c(f),{type:`button`,variant:`outline`,onClick:t[25]||=e=>A.value=!1},{default:h(()=>[...t[68]||=[o(`取消`,-1)]]),_:1}),m(c(f),{type:`submit`},{default:h(()=>[...t[69]||=[o(`保存`,-1)]]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]),m(c(Se),{open:!!M.value,"onUpdate:open":t[27]||=e=>{e||(M.value=null)}},{default:h(()=>[m(c(xe),null,{default:h(()=>[m(c(we),null,{default:h(()=>[m(c(Oe),null,{default:h(()=>[...t[70]||=[o(`确认删除`,-1)]]),_:1}),m(c(Ce),null,{default:h(()=>[o(`确定要删除供应商「`+_(M.value?.name)+`」吗?此操作不可撤销。`,1)]),_:1})]),_:1}),m(c(Ee),null,{default:h(()=>[m(c(Te),null,{default:h(()=>[...t[71]||=[o(`取消`,-1)]]),_:1}),m(c(f),{variant:`destructive`,onClick:rt},{default:h(()=>[...t[72]||=[o(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]),m(c(Se),{open:!!N.value,"onUpdate:open":t[28]||=e=>{e||(N.value=null)}},{default:h(()=>[m(c(xe),null,{default:h(()=>[m(c(we),null,{default:h(()=>[m(c(Oe),null,{default:h(()=>[o(`确认`+_(N.value?.is_active?`禁用`:`启用`),1)]),_:1}),m(c(Ce),null,{default:h(()=>[o(` 确定要`+_(N.value?.is_active?`禁用`:`启用`)+`供应商「`+_(N.value?.name)+`」吗? `,1),I.value.length?(p(),n(`div`,_n,[t[73]||=r(`div`,{class:`text-sm font-medium`},`以下映射分组正在使用此供应商:`,-1),(p(!0),n(g,null,ne(I.value,e=>(p(),n(`div`,{key:e,class:`text-destructive text-sm`},_(e),1))),128))])):u(``,!0)]),_:1})]),_:1}),m(c(Ee),null,{default:h(()=>[m(c(Te),null,{default:h(()=>[...t[74]||=[o(`取消`,-1)]]),_:1}),m(c(De),{onClick:nt},{default:h(()=>[...t[75]||=[o(`确认`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{kn as default};
@@ -1,5 +0,0 @@
1
- import{A as e,Dt as t,G as n,H as r,It as i,J as a,K as o,Pt as s,Rt as c,U as l,V as u,W as d,ct as f,i as p,it as m,k as h,lt as g,n as _,o as v,ot as y,q as b,r as x,rt as S,tt as C,x as w,yt as T,z as E,zt as D}from"./button-Ul8WlrM5.js";import{i as O,t as ee}from"./format-Dln15Luw.js";import{o as te}from"./Teleport-DizRK5O3.js";import{a as ne}from"./PopperContent-gzzf1XHe.js";import{t as k}from"./loader-circle-5TJUukEe.js";import{i as re,n as ie,r as ae,t as oe}from"./TooltipTrigger-EiIy2zn8.js";import{n as se,r as ce,t as le}from"./CollapsibleTrigger-DhxD9tpM.js";import{a as ue,c as A,i as j,n as de,o as fe,r as pe,s as me,t as he}from"./alert-dialog-DlKUuTPe.js";import{t as M}from"./Label-DWdYtVMI.js";import{t as N}from"./Switch-BO8Ooae6.js";import{a as P,i as F,n as I,o as L,r as R,t as z}from"./TabsTrigger-BzKMi9AF.js";import{t as B}from"./badge-9KJEMa53.js";import{n as V}from"./lib-Hhs3NqfD.js";import{n as H,t as U}from"./CardContent-BVMQ2_pg.js";import{n as W,t as G}from"./CardTitle-GLv7QyIY.js";import{a as ge,i as K,n as q,o as _e,r as J,t as Y}from"./TableHeader-Bded9VTC.js";var ve=a({__name:`TabsContent`,props:{value:{type:[String,Number],required:!0},forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let n=e,{forwardRef:r}=v(),i=L(),a=u(()=>P(i.baseId,n.value)),o=u(()=>F(i.baseId,n.value)),f=u(()=>n.value===i.modelValue.value),h=t(f.value);return m(()=>{i.registerContent(n.value),requestAnimationFrame(()=>{h.value=!1})}),S(()=>{i.unregisterContent(n.value)}),(e,t)=>(y(),l(s(te),{present:e.forceMount||f.value,"force-mount":``},{default:T(({present:t})=>[b(s(p),{id:o.value,ref:s(r),"as-child":e.asChild,as:e.as,role:`tabpanel`,"data-state":f.value?`active`:`inactive`,"data-orientation":s(i).orientation.value,"aria-labelledby":a.value,hidden:!t,tabindex:`0`,style:c({animationDuration:h.value?`0s`:void 0})},{default:T(()=>[!s(i).unmountOnHide.value||t?g(e.$slots,`default`,{key:0}):d(`v-if`,!0)]),_:2},1032,[`id`,`as-child`,`as`,`data-state`,`data-orientation`,`aria-labelledby`,`hidden`,`style`])]),_:3},8,[`present`]))}}),X=a({__name:`CardDescription`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,r)=>(y(),n(`div`,{"data-slot":`card-description`,class:i(s(x)(`text-muted-foreground text-sm`,t.class))},[g(e.$slots,`default`)],2))}}),Z=a({__name:`TabsContent`,props:{value:{},forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=w(t,`class`);return(e,r)=>(y(),l(s(ve),C({"data-slot":`tabs-content`,class:s(x)(`text-sm flex-1 outline-none`,t.class)},s(n)),{default:T(()=>[g(e.$slots,`default`)]),_:3},16,[`class`]))}}),ye={key:0,class:`py-8 text-center text-muted-foreground`},be={key:1,class:`py-8 text-center text-muted-foreground`},xe={class:`cursor-default font-mono text-xs`},Se={class:`font-mono text-xs`},Ce={key:0,class:`text-muted-foreground`},we={key:1,class:`text-muted-foreground`},Te={class:`flex items-center gap-2`},Ee={class:`space-y-2`},De={class:`text-muted-foreground whitespace-nowrap`},Oe={class:`text-muted-foreground`},ke={class:`font-medium`},Ae=8,je=6e4,Q=60,$=24,Me=a({__name:`SessionTable`,props:{sessions:{},loading:{type:Boolean},historyMap:{}},emits:[`clear`,`viewHistory`],setup(e,{emit:i}){let a=i,c=t(!1),u=t(null);function p(e){u.value=e,c.value=!0}function m(){u.value&&=(a(`clear`,u.value),null)}function h(e){return e.slice(0,Ae)+`...`}function g(e){let t=Date.now()-O(e).getTime(),n=Math.floor(t/je);if(n<1)return`刚刚`;if(n<Q)return`${n} 分钟前`;let r=Math.floor(n/Q);return r<$?`${r} 小时前`:`${Math.floor(r/$)} 天前`}return(t,i)=>(y(),n(E,null,[e.loading?(y(),n(`div`,ye,`加载中...`)):e.sessions.length===0?(y(),n(`div`,be,`暂无活跃 Session`)):(y(),l(s(_e),{key:2},{default:T(()=>[b(s(Y),null,{default:T(()=>[b(s(J),null,{default:T(()=>[b(s(q),null,{default:T(()=>[...i[1]||=[o(`密钥名称`,-1)]]),_:1}),b(s(q),null,{default:T(()=>[...i[2]||=[o(`Session ID`,-1)]]),_:1}),b(s(q),null,{default:T(()=>[...i[3]||=[o(`当前模型`,-1)]]),_:1}),b(s(q),null,{default:T(()=>[...i[4]||=[o(`原始模型`,-1)]]),_:1}),b(s(q),null,{default:T(()=>[...i[5]||=[o(`最后活跃`,-1)]]),_:1}),b(s(q),null,{default:T(()=>[...i[6]||=[o(`操作`,-1)]]),_:1})]),_:1})]),_:1}),b(s(ge),null,{default:T(()=>[(y(!0),n(E,null,f(e.sessions,a=>(y(),n(E,{key:a.id},[b(s(J),null,{default:T(()=>[b(s(K),{class:`font-medium`},{default:T(()=>[o(D(a.router_key_name),1)]),_:2},1024),b(s(K),null,{default:T(()=>[b(s(ie),null,{default:T(()=>[b(s(re),null,{default:T(()=>[b(s(oe),{"as-child":``},{default:T(()=>[r(`span`,xe,D(h(a.session_id)),1)]),_:2},1024),b(s(ae),null,{default:T(()=>[r(`p`,Se,D(a.session_id),1)]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:2},1024),b(s(K),null,{default:T(()=>[b(s(B),{variant:`secondary`},{default:T(()=>[o(D(a.current_model),1)]),_:2},1024)]),_:2},1024),b(s(K),null,{default:T(()=>[a.original_model?(y(),n(`span`,Ce,D(a.original_model),1)):(y(),n(`span`,we,`-`))]),_:2},1024),b(s(K),{class:`text-muted-foreground text-sm`},{default:T(()=>[o(D(g(a.last_active_at)),1)]),_:2},1024),b(s(K),null,{default:T(()=>[r(`div`,Te,[b(s(_),{variant:`ghost`,size:`sm`,onClick:e=>t.$emit(`viewHistory`,a)},{default:T(()=>[o(D(e.historyMap[a.session_id]?`收起`:`历史`),1)]),_:2},1032,[`onClick`]),b(s(_),{variant:`ghost`,size:`sm`,class:`text-destructive hover:text-destructive`,onClick:e=>p(a)},{default:T(()=>[...i[7]||=[o(` 清除 `,-1)]]),_:1},8,[`onClick`])])]),_:2},1024)]),_:2},1024),e.historyMap[a.session_id]?(y(),l(s(J),{key:0},{default:T(()=>[b(s(K),{colspan:`6`,class:`bg-muted/50 px-6 py-3`},{default:T(()=>[r(`div`,Ee,[i[9]||=r(`p`,{class:`text-sm font-medium text-foreground`},`切换历史`,-1),(y(!0),n(E,null,f(e.historyMap[a.session_id],e=>(y(),n(`div`,{key:e.id,class:`flex items-center gap-3 text-sm`},[r(`span`,De,D(s(ee)(e.created_at)),1),b(s(B),{variant:`outline`,class:`text-xs`},{default:T(()=>[o(D(e.trigger_type),1)]),_:2},1024),r(`span`,null,[r(`span`,Oe,D(e.old_model||`默认`),1),i[8]||=r(`span`,{class:`mx-1`},`→`,-1),r(`span`,ke,D(e.new_model),1)])]))),128))])]),_:2},1024)]),_:2},1024)):d(``,!0)],64))),128))]),_:1})]),_:1})),b(s(A),{open:c.value,"onUpdate:open":i[0]||=e=>c.value=e},{default:T(()=>[b(s(ue),null,{default:T(()=>[b(s(de),null,{default:T(()=>[b(s(he),null,{default:T(()=>[...i[10]||=[o(`确认清除 Session`,-1)]]),_:1}),b(s(j),null,{default:T(()=>[...i[11]||=[o(` 清除后,该 Session 将恢复使用默认模型映射。此操作不可撤销。 `,-1)]]),_:1})]),_:1}),b(s(pe),null,{default:T(()=>[b(s(fe),null,{default:T(()=>[...i[12]||=[o(`取消`,-1)]]),_:1}),b(s(me),{onClick:m},{default:T(()=>[...i[13]||=[o(`确认清除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])],64))}}),Ne={class:`p-6`},Pe={class:`flex items-center gap-3`},Fe={class:`flex justify-end mt-4`},Ie={key:0,class:`flex items-center gap-1`},Le={key:1},Re={class:`flex items-center justify-between`},ze={class:`flex items-center gap-3`},Be={class:`flex items-center gap-3`},Ve={class:`flex items-center gap-3`},He={class:`flex justify-end mt-4`},Ue={key:0,class:`flex items-center gap-1`},We={key:1},Ge=`---
2
- description: 切换代理路由模型
3
- ---
4
-
5
- [router-command: select-model $ARGUMENTS]`,Ke=a({__name:`ProxyEnhancement`,setup(a){let c=t(!1),l=t(!0),u=t(!1),d=t(!1),f=t(!1),p=t(!0),g=t([]),v=t(!1),x=t({});async function S(){try{let e=await h.getProxyEnhancement();c.value=e.claude_code_enabled,l.value=e.tool_round_limit_enabled,u.value=e.tool_call_loop_enabled,d.value=e.stream_loop_enabled}catch(t){console.error(`Failed to load proxy enhancement config:`,t),V.error(e(t,`加载配置失败`))}}async function C(){f.value=!0;try{await h.updateProxyEnhancement({claude_code_enabled:c.value,tool_call_loop_enabled:u.value,stream_loop_enabled:d.value,tool_round_limit_enabled:l.value}),V.success(`保存成功`)}catch(t){console.error(`Failed to save proxy enhancement config:`,t),V.error(e(t,`保存失败`))}finally{f.value=!1}}async function w(){v.value=!0;try{g.value=await h.getSessionStates()}catch(t){console.error(`Failed to load sessions:`,t),V.error(e(t,`加载 Session 列表失败`))}finally{v.value=!1}}async function E(t){try{await h.deleteSessionState(t.router_key_id,t.session_id),V.success(`Session 已清除`),w()}catch(t){console.error(`Failed to clear session:`,t),V.error(e(t,`清除 Session 失败`))}}async function O(t){let n=t.session_id;if(x.value[n]){delete x.value[n];return}try{let e=await h.getSessionHistory(t.router_key_id,t.session_id);x.value[n]=e}catch(t){console.error(`Failed to load history:`,t),V.error(e(t,`加载历史记录失败`))}}return m(()=>{S(),w()}),(e,t)=>(y(),n(`div`,Ne,[t[26]||=r(`h2`,{class:`text-lg font-semibold text-foreground mb-4`},`代理增强(实验性)`,-1),b(s(R),{"default-value":`dynamic-model`},{default:T(()=>[b(s(I),null,{default:T(()=>[b(s(z),{value:`dynamic-model`},{default:T(()=>[...t[5]||=[o(`动态模型切换`,-1)]]),_:1}),b(s(z),{value:`loop-detection`},{default:T(()=>[...t[6]||=[o(`循环输出检测`,-1)]]),_:1})]),_:1}),b(s(Z),{value:`dynamic-model`},{default:T(()=>[b(s(H),null,{default:T(()=>[b(s(W),null,{default:T(()=>[b(s(G),null,{default:T(()=>[...t[7]||=[o(`Claude Code 动态模型切换`,-1)]]),_:1}),b(s(X),null,{default:T(()=>[...t[8]||=[o(` 在 Claude Code 对话中通过 /select-model 命令动态切换后端模型。模型选择在当前会话内有效(24h),不影响路由配置。 `,-1)]]),_:1})]),_:1}),b(s(U),null,{default:T(()=>[r(`div`,Pe,[b(s(N),{id:`claude-code-toggle`,modelValue:c.value,"onUpdate:modelValue":t[0]||=e=>c.value=e},null,8,[`modelValue`]),b(s(M),{for:`claude-code-toggle`},{default:T(()=>[o(D(c.value?`已启用`:`已禁用`),1)]),_:1})])]),_:1})]),_:1}),r(`div`,Fe,[b(s(_),{disabled:f.value,onClick:C},{default:T(()=>[f.value?(y(),n(`span`,Ie,[b(s(k),{class:`w-4 h-4 animate-spin`}),t[9]||=o(` 保存中... `,-1)])):(y(),n(`span`,Le,`保存`))]),_:1},8,[`disabled`])]),b(s(ce),{open:p.value,"onUpdate:open":t[1]||=e=>p.value=e,class:`mt-4`},{default:T(()=>[b(s(le),{"as-child":``},{default:T(()=>[b(s(_),{variant:`ghost`,class:`w-full justify-between`},{default:T(()=>[t[10]||=r(`span`,null,`使用说明`,-1),b(s(ne),{class:i([`w-4 h-4 transition-transform`,{"rotate-180":p.value}])},null,8,[`class`])]),_:1})]),_:1}),b(s(se),{class:`mt-2`},{default:T(()=>[b(s(H),null,{default:T(()=>[b(s(U),{class:`space-y-4 text-sm`},{default:T(()=>[r(`div`,null,[t[11]||=r(`p`,{class:`font-medium text-foreground mb-1 leading-relaxed`},`配置方法`,-1),t[12]||=r(`p`,{class:`text-muted-foreground leading-relaxed`},` 在 Claude Code 项目级或全局级目录下创建 Command 文件: `,-1),t[13]||=r(`code`,{class:`block mt-1 px-3 py-2 bg-muted rounded text-xs font-mono whitespace-pre-wrap leading-relaxed`},[o(` # 项目级 .claude/commands/select-model.md`),r(`br`),o(` # 全局级 ~/.claude/commands/select-model.md `)],-1),t[14]||=r(`p`,{class:`text-muted-foreground leading-relaxed mt-2`},` 文件内容: `,-1),r(`code`,{class:`block mt-1 px-3 py-2 bg-muted rounded text-xs font-mono whitespace-pre-wrap leading-relaxed`,textContent:Ge})]),t[15]||=r(`div`,null,[r(`p`,{class:`font-medium text-foreground mb-1 leading-relaxed`},`使用方法`),r(`p`,{class:`text-muted-foreground leading-relaxed`},` 查看可用模型列表(格式为 provider_name/backend_model): `),r(`code`,{class:`block mt-1 px-3 py-2 bg-muted rounded text-xs font-mono whitespace-pre-wrap leading-relaxed`},` /select-model `),r(`p`,{class:`text-muted-foreground leading-relaxed mt-2`},` 选择模型并记住到当前会话: `),r(`code`,{class:`block mt-1 px-3 py-2 bg-muted rounded text-xs font-mono whitespace-pre-wrap leading-relaxed`},` /select-model provider_name/backend_model `),r(`p`,{class:`text-muted-foreground leading-relaxed mt-2`},` 切换后在下方活跃 Session 表中确认状态,请求日志中可验证路由是否生效。 `)],-1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]),b(s(H),{class:`mt-4`},{default:T(()=>[b(s(W),null,{default:T(()=>[r(`div`,Re,[r(`div`,null,[b(s(G),null,{default:T(()=>[...t[16]||=[o(`活跃 Session`,-1)]]),_:1}),b(s(X),null,{default:T(()=>[...t[17]||=[o(`查看和管理当前已配置模型的 session`,-1)]]),_:1})]),b(s(_),{variant:`outline`,size:`sm`,onClick:w,disabled:v.value},{default:T(()=>[...t[18]||=[o(`刷新`,-1)]]),_:1},8,[`disabled`])])]),_:1}),b(s(U),null,{default:T(()=>[b(Me,{sessions:g.value,loading:v.value,"history-map":x.value,onClear:E,onViewHistory:O},null,8,[`sessions`,`loading`,`history-map`])]),_:1})]),_:1})]),_:1}),b(s(Z),{value:`loop-detection`},{default:T(()=>[b(s(H),null,{default:T(()=>[b(s(W),null,{default:T(()=>[b(s(G),null,{default:T(()=>[...t[19]||=[o(`工具调用轮数限制`,-1)]]),_:1}),b(s(X),null,{default:T(()=>[...t[20]||=[o(` 检测 AI 连续进行工具调用的轮数(assistant → tool_use → user → tool_result 算一轮),超过 5 轮时自动注入提示词提醒 AI 不要陷入无限循环。 `,-1)]]),_:1})]),_:1}),b(s(U),null,{default:T(()=>[r(`div`,ze,[b(s(N),{id:`tool-round-limit-toggle`,modelValue:l.value,"onUpdate:modelValue":t[2]||=e=>l.value=e},null,8,[`modelValue`]),b(s(M),{for:`tool-round-limit-toggle`},{default:T(()=>[o(D(l.value?`已启用`:`已禁用`),1)]),_:1})])]),_:1})]),_:1}),b(s(H),{class:`mt-4`},{default:T(()=>[b(s(W),null,{default:T(()=>[b(s(G),null,{default:T(()=>[...t[21]||=[o(`工具调用循环检测`,-1)]]),_:1}),b(s(X),null,{default:T(()=>[...t[22]||=[o(` 检测模型重复调用同一工具的行为,超过阈值时自动中断请求或注入提示词。 `,-1)]]),_:1})]),_:1}),b(s(U),null,{default:T(()=>[r(`div`,Be,[b(s(N),{id:`tool-call-loop-toggle`,modelValue:u.value,"onUpdate:modelValue":t[3]||=e=>u.value=e},null,8,[`modelValue`]),b(s(M),{for:`tool-call-loop-toggle`},{default:T(()=>[o(D(u.value?`已启用`:`已禁用`),1)]),_:1})])]),_:1})]),_:1}),b(s(H),{class:`mt-4`},{default:T(()=>[b(s(W),null,{default:T(()=>[b(s(G),null,{default:T(()=>[...t[23]||=[o(`SSE 输出内容循环检测`,-1)]]),_:1}),b(s(X),null,{default:T(()=>[...t[24]||=[o(` 检测流式输出中内容重复循环(N-gram 模式),超过阈值时自动中断流。 `,-1)]]),_:1})]),_:1}),b(s(U),null,{default:T(()=>[r(`div`,Ve,[b(s(N),{id:`stream-loop-toggle`,modelValue:d.value,"onUpdate:modelValue":t[4]||=e=>d.value=e},null,8,[`modelValue`]),b(s(M),{for:`stream-loop-toggle`},{default:T(()=>[o(D(d.value?`已启用`:`已禁用`),1)]),_:1})])]),_:1})]),_:1}),r(`div`,He,[b(s(_),{disabled:f.value,onClick:C},{default:T(()=>[f.value?(y(),n(`span`,Ue,[b(s(k),{class:`w-4 h-4 animate-spin`}),t[25]||=o(` 保存中... `,-1)])):(y(),n(`span`,We,`保存`))]),_:1},8,[`disabled`])])]),_:1})]),_:1})]))}});export{Ke as default};
@@ -1 +0,0 @@
1
- import{A as e,Dt as t,G as n,H as r,It as ee,J as i,K as a,Pt as o,R as s,U as c,V as te,W as l,ct as u,it as ne,k as d,n as f,ot as p,q as m,yt as h,z as g,zt as _}from"./button-Ul8WlrM5.js";import{a as re}from"./PopperContent-gzzf1XHe.js";import{a as ie,i as ae,n as oe,r as v,t as se}from"./SelectValue-C0-LzGQY.js";import{t as y}from"./Checkbox-HPVDmEdV.js";import{n as ce,r as b,t as x}from"./CollapsibleTrigger-DhxD9tpM.js";import{a as S,n as le,o as ue,r as de,t as fe}from"./dialog-B9j-FMrd.js";import{a as pe,c as me,i as he,n as ge,o as _e,r as ve,t as ye}from"./alert-dialog-DlKUuTPe.js";import{t as C}from"./Label-DWdYtVMI.js";import{t as w}from"./badge-9KJEMa53.js";import{n as T}from"./lib-Hhs3NqfD.js";import{n as E,t as D}from"./CardContent-BVMQ2_pg.js";import{n as O,t as k}from"./CardTitle-GLv7QyIY.js";import{t as A}from"./Input-CAnKUBBK.js";import{a as j,i as M,n as N,o as P,r as F,t as I}from"./TableHeader-Bded9VTC.js";var be={class:`p-6`},xe={class:`flex items-center justify-between mb-4`},Se={class:`bg-card rounded-lg border overflow-hidden`},Ce={class:`flex items-center gap-2`},we={class:`text-xs text-muted-foreground`},Te={key:0,class:`text-sm text-destructive mt-1`},Ee={key:0,class:`text-sm text-destructive mt-1`},L={key:0,class:`text-sm text-destructive mt-1`},De={class:`grid grid-cols-2 gap-3`},Oe={key:0,class:`text-sm text-destructive mt-1`},ke={key:0,class:`text-sm text-destructive mt-1`},Ae={key:0},je={key:0,class:`text-sm text-destructive mt-1`},Me={class:`flex items-center gap-2`},Ne={class:`flex items-center justify-between`},Pe={class:`flex items-center justify-between mb-3`},Fe={class:`flex items-center gap-2`},R=100,z=599,B=100,V=100,H=i({__name:`RetryRules`,setup(i){let H={name:``,status_code:429,body_pattern:``,is_active:!0,retry_strategy:`exponential`,retry_delay_ms:5e3,max_retries:10,max_delay_ms:6e4},U=t([]),W=t(!1),G=t(null),K=t(null),q=t({...H}),J=t({});function Ie(){let e={};q.value.name.trim()||(e.name=`请输入名称`);let t=Number(q.value.status_code);if((!Number.isInteger(t)||t<R||t>z)&&(e.status_code=`范围 ${R}-${z}`),!q.value.body_pattern.trim())e.body_pattern=`请输入匹配规则`;else try{new RegExp(q.value.body_pattern)}catch{e.body_pattern=`不是合法的正则表达式`}let n=Number(q.value.retry_delay_ms);(!n||n<B)&&(e.retry_delay_ms=`不能小于 ${B}ms`);let r=Number(q.value.max_retries);if((!Number.isInteger(r)||r<0||r>V)&&(e.max_retries=`范围 0-${V}`),q.value.retry_strategy===`exponential`){let t=Number(q.value.max_delay_ms);(!t||t<B)&&(e.max_delay_ms=`不能小于 ${B}ms`)}return J.value=e,Object.keys(e).length===0}async function Y(){try{U.value=await d.getRetryRules()}catch(t){console.error(`Failed to load retry rules:`,t),T.error(e(t,`加载数据失败`))}}function Le(){G.value=null,q.value={...H},J.value={},W.value=!0}function Re(e){G.value=e.id,q.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},J.value={},W.value=!0}async function ze(){if(Ie())try{let e={name:q.value.name,status_code:Number(q.value.status_code),body_pattern:q.value.body_pattern,is_active:+!!q.value.is_active,retry_strategy:q.value.retry_strategy,retry_delay_ms:Number(q.value.retry_delay_ms),max_retries:Number(q.value.max_retries),max_delay_ms:Number(q.value.max_delay_ms)};G.value?await d.updateRetryRule(G.value,e):await d.createRetryRule(e),W.value=!1,await Y()}catch(t){console.error(`Failed to save retry rule:`,t),T.error(e(t,`保存规则失败`))}}function Be(e){K.value=e}async function Ve(){let t=K.value;if(t){K.value=null;try{await d.deleteRetryRule(t.id),await Y()}catch(t){console.error(`Failed to delete retry rule:`,t),T.error(e(t,`删除规则失败`))}}}let X=t(!1),Z=t([]),Q=t(new Set),He=te(()=>Z.value.length>0&&Q.value.size===Z.value.length);async function $(){try{Z.value=await d.recommended.getRetryRules()}catch{Z.value=[]}}function Ue(e){let t=new Set(Q.value);t.has(e)?t.delete(e):t.add(e),Q.value=t}function We(e){Q.value=e===!0?new Set(Z.value.map(e=>e.name)):new Set}async function Ge(){let e=Z.value.filter(e=>Q.value.has(e.name));for(let t of e)await d.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});T.success(`已添加 ${e.length} 条规则`),Q.value=new Set,await Promise.allSettled([$(),Y()])}return ne(()=>{Y(),$()}),(e,t)=>(p(),n(`div`,be,[r(`div`,xe,[t[19]||=r(`h2`,{class:`text-lg font-semibold text-foreground`},`重试规则`,-1),m(o(f),{onClick:Le,class:`flex items-center gap-1`},{default:h(()=>[...t[18]||=[r(`svg`,{class:`w-4 h-4`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[r(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M12 4v16m8-8H4`})],-1),a(` 添加规则 `,-1)]]),_:1})]),r(`div`,Se,[m(o(P),null,{default:h(()=>[m(o(I),null,{default:h(()=>[m(o(F),{class:`bg-muted`},{default:h(()=>[m(o(N),{class:`text-muted-foreground`},{default:h(()=>[...t[20]||=[a(`名称`,-1)]]),_:1}),m(o(N),{class:`text-muted-foreground`},{default:h(()=>[...t[21]||=[a(`HTTP 状态码`,-1)]]),_:1}),m(o(N),{class:`text-muted-foreground`},{default:h(()=>[...t[22]||=[a(`响应体匹配`,-1)]]),_:1}),m(o(N),{class:`text-muted-foreground`},{default:h(()=>[...t[23]||=[a(`重试策略`,-1)]]),_:1}),m(o(N),{class:`text-muted-foreground`},{default:h(()=>[...t[24]||=[a(`状态`,-1)]]),_:1}),m(o(N),{class:`text-right text-muted-foreground`},{default:h(()=>[...t[25]||=[a(`操作`,-1)]]),_:1})]),_:1})]),_:1}),m(o(j),null,{default:h(()=>[(p(!0),n(g,null,u(U.value,e=>(p(),c(o(F),{key:e.id},{default:h(()=>[m(o(M),{class:`font-mono text-sm`},{default:h(()=>[a(_(e.name),1)]),_:2},1024),m(o(M),null,{default:h(()=>[a(_(e.status_code),1)]),_:2},1024),m(o(M),{class:`font-mono text-xs text-muted-foreground`},{default:h(()=>[a(_(e.body_pattern),1)]),_:2},1024),m(o(M),null,{default:h(()=>[r(`div`,Ce,[m(o(w),{variant:`outline`},{default:h(()=>[a(_(e.retry_strategy===`fixed`?`固定间隔`:`指数退避`),1)]),_:2},1024),r(`span`,we,[a(_(e.retry_delay_ms/1e3)+`s · `+_(e.max_retries)+`次 `,1),e.retry_strategy===`exponential`?(p(),n(g,{key:0},[a(` · 上限`+_(e.max_delay_ms/1e3)+`s`,1)],64)):l(``,!0)])])]),_:2},1024),m(o(M),null,{default:h(()=>[m(o(w),{variant:e.is_active?`default`:`secondary`},{default:h(()=>[a(_(e.is_active?`启用`:`禁用`),1)]),_:2},1032,[`variant`])]),_:2},1024),m(o(M),{class:`text-right`},{default:h(()=>[m(o(f),{variant:`ghost`,size:`sm`,onClick:t=>Re(e),class:`mr-2`},{default:h(()=>[...t[26]||=[a(`编辑`,-1)]]),_:1},8,[`onClick`]),m(o(f),{variant:`ghost`,size:`sm`,class:`text-destructive hover:text-destructive`,onClick:t=>Be(e)},{default:h(()=>[...t[27]||=[a(`删除`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1024))),128)),U.value.length===0?(p(),c(o(F),{key:0},{default:h(()=>[m(o(M),{colspan:`6`,class:`text-center text-muted-foreground py-8`},{default:h(()=>[...t[28]||=[a(`暂无规则`,-1)]]),_:1})]),_:1})):l(``,!0)]),_:1})]),_:1})]),m(o(ue),{open:W.value,"onUpdate:open":t[15]||=e=>W.value=e},{default:h(()=>[m(o(S),null,{default:h(()=>[m(o(le),null,{default:h(()=>[m(o(fe),null,{default:h(()=>[a(_(G.value?`编辑规则`:`添加规则`),1)]),_:1})]),_:1}),r(`form`,{onSubmit:s(ze,[`prevent`]),class:`space-y-3`},[r(`div`,null,[m(o(C),{class:`block text-sm font-medium text-foreground mb-1`},{default:h(()=>[...t[29]||=[a(`名称`,-1)]]),_:1}),m(o(A),{modelValue:q.value.name,"onUpdate:modelValue":t[0]||=e=>q.value.name=e,type:`text`,required:``,onInput:t[1]||=e=>delete J.value.name},null,8,[`modelValue`]),J.value.name?(p(),n(`p`,Te,_(J.value.name),1)):l(``,!0)]),r(`div`,null,[m(o(C),{class:`block text-sm font-medium text-foreground mb-1`},{default:h(()=>[...t[30]||=[a(`HTTP 状态码`,-1)]]),_:1}),m(o(A),{modelValue:q.value.status_code,"onUpdate:modelValue":t[2]||=e=>q.value.status_code=e,modelModifiers:{number:!0},type:`number`,required:``,onInput:t[3]||=e=>delete J.value.status_code},null,8,[`modelValue`]),J.value.status_code?(p(),n(`p`,Ee,_(J.value.status_code),1)):l(``,!0)]),r(`div`,null,[m(o(C),{class:`block text-sm font-medium text-foreground mb-1`},{default:h(()=>[...t[31]||=[a(`响应体匹配`,-1)]]),_:1}),m(o(A),{modelValue:q.value.body_pattern,"onUpdate:modelValue":t[4]||=e=>q.value.body_pattern=e,type:`text`,placeholder:`正则表达式,例如 .*rate_limit.*`,required:``,onInput:t[5]||=e=>delete J.value.body_pattern},null,8,[`modelValue`]),J.value.body_pattern?(p(),n(`p`,L,_(J.value.body_pattern),1)):l(``,!0)]),r(`div`,null,[m(o(C),{class:`block text-sm font-medium text-foreground mb-1`},{default:h(()=>[...t[32]||=[a(`重试策略`,-1)]]),_:1}),m(o(ie),{modelValue:q.value.retry_strategy,"onUpdate:modelValue":t[6]||=e=>q.value.retry_strategy=e},{default:h(()=>[m(o(oe),{class:`w-full`},{default:h(()=>[m(o(se),{placeholder:`选择策略`})]),_:1}),m(o(ae),null,{default:h(()=>[m(o(v),{value:`exponential`},{default:h(()=>[...t[33]||=[a(`指数退避`,-1)]]),_:1}),m(o(v),{value:`fixed`},{default:h(()=>[...t[34]||=[a(`固定间隔`,-1)]]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),r(`div`,De,[r(`div`,null,[m(o(C),{class:`block text-sm font-medium text-foreground mb-1`},{default:h(()=>[a(_(q.value.retry_strategy===`fixed`?`间隔时间 (ms)`:`初始延迟 (ms)`),1)]),_:1}),m(o(A),{modelValue:q.value.retry_delay_ms,"onUpdate:modelValue":t[7]||=e=>q.value.retry_delay_ms=e,modelModifiers:{number:!0},type:`number`,min:100,required:``,onInput:t[8]||=e=>delete J.value.retry_delay_ms},null,8,[`modelValue`]),J.value.retry_delay_ms?(p(),n(`p`,Oe,_(J.value.retry_delay_ms),1)):l(``,!0)]),r(`div`,null,[m(o(C),{class:`block text-sm font-medium text-foreground mb-1`},{default:h(()=>[...t[35]||=[a(`最大重试次数`,-1)]]),_:1}),m(o(A),{modelValue:q.value.max_retries,"onUpdate:modelValue":t[9]||=e=>q.value.max_retries=e,modelModifiers:{number:!0},type:`number`,min:0,max:100,required:``,onInput:t[10]||=e=>delete J.value.max_retries},null,8,[`modelValue`]),J.value.max_retries?(p(),n(`p`,ke,_(J.value.max_retries),1)):l(``,!0)])]),q.value.retry_strategy===`exponential`?(p(),n(`div`,Ae,[m(o(C),{class:`block text-sm font-medium text-foreground mb-1`},{default:h(()=>[...t[36]||=[a(`延迟上限 (ms)`,-1)]]),_:1}),m(o(A),{modelValue:q.value.max_delay_ms,"onUpdate:modelValue":t[11]||=e=>q.value.max_delay_ms=e,modelModifiers:{number:!0},type:`number`,min:100,required:``,onInput:t[12]||=e=>delete J.value.max_delay_ms},null,8,[`modelValue`]),J.value.max_delay_ms?(p(),n(`p`,je,_(J.value.max_delay_ms),1)):l(``,!0)])):l(``,!0),r(`div`,Me,[m(o(y),{modelValue:q.value.is_active,"onUpdate:modelValue":t[13]||=e=>q.value.is_active=e,id:`rule-active`},null,8,[`modelValue`]),m(o(C),{for:`rule-active`,class:`text-sm text-foreground`},{default:h(()=>[...t[37]||=[a(`启用`,-1)]]),_:1})]),m(o(de),null,{default:h(()=>[m(o(f),{type:`button`,variant:`outline`,onClick:t[14]||=e=>W.value=!1},{default:h(()=>[...t[38]||=[a(`取消`,-1)]]),_:1}),m(o(f),{type:`submit`},{default:h(()=>[...t[39]||=[a(`保存`,-1)]]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]),m(o(me),{open:!!K.value,"onUpdate:open":t[16]||=e=>{e||(K.value=null)}},{default:h(()=>[m(o(pe),null,{default:h(()=>[m(o(ge),null,{default:h(()=>[m(o(ye),null,{default:h(()=>[...t[40]||=[a(`确认删除`,-1)]]),_:1}),m(o(he),null,{default:h(()=>[a(`确定要删除规则「`+_(K.value?.name)+`」吗?`,1)]),_:1})]),_:1}),m(o(ve),null,{default:h(()=>[m(o(_e),null,{default:h(()=>[...t[41]||=[a(`取消`,-1)]]),_:1}),m(o(f),{variant:`destructive`,onClick:Ve},{default:h(()=>[...t[42]||=[a(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]),Z.value.length>0?(p(),c(o(E),{key:0,class:`mt-6`},{default:h(()=>[m(o(b),{open:X.value,"onUpdate:open":t[17]||=e=>X.value=e},{default:h(()=>[m(o(x),{"as-child":``},{default:h(()=>[m(o(O),{class:`cursor-pointer hover:bg-muted/50 transition-colors`},{default:h(()=>[r(`div`,Ne,[m(o(k),{class:`text-sm font-medium`},{default:h(()=>[a(`推荐重试规则 (`+_(Z.value.length)+`)`,1)]),_:1}),m(o(re),{class:ee([`h-4 w-4 text-muted-foreground transition-transform`,{"rotate-180":X.value}])},null,8,[`class`])])]),_:1})]),_:1}),m(o(ce),null,{default:h(()=>[m(o(D),null,{default:h(()=>[r(`div`,Pe,[r(`div`,Fe,[m(o(y),{"model-value":He.value,"onUpdate:modelValue":We},null,8,[`model-value`]),t[43]||=r(`span`,{class:`text-sm text-muted-foreground`},`全选`,-1)]),m(o(f),{size:`sm`,disabled:Q.value.size===0,onClick:Ge},{default:h(()=>[a(` 添加选中 (`+_(Q.value.size)+`) `,1)]),_:1},8,[`disabled`])]),m(o(P),null,{default:h(()=>[m(o(I),null,{default:h(()=>[m(o(F),null,{default:h(()=>[m(o(N),{class:`w-10`}),m(o(N),null,{default:h(()=>[...t[44]||=[a(`名称`,-1)]]),_:1}),m(o(N),null,{default:h(()=>[...t[45]||=[a(`状态码`,-1)]]),_:1}),m(o(N),null,{default:h(()=>[...t[46]||=[a(`匹配模式`,-1)]]),_:1}),m(o(N),null,{default:h(()=>[...t[47]||=[a(`策略`,-1)]]),_:1})]),_:1})]),_:1}),m(o(j),null,{default:h(()=>[(p(!0),n(g,null,u(Z.value,e=>(p(),c(o(F),{key:e.name},{default:h(()=>[m(o(M),null,{default:h(()=>[m(o(y),{"model-value":Q.value.has(e.name),"onUpdate:modelValue":()=>Ue(e.name)},null,8,[`model-value`,`onUpdate:modelValue`])]),_:2},1024),m(o(M),null,{default:h(()=>[a(_(e.name),1)]),_:2},1024),m(o(M),null,{default:h(()=>[a(_(e.status_code),1)]),_:2},1024),m(o(M),{class:`font-mono text-xs max-w-[200px] truncate`},{default:h(()=>[a(_(e.body_pattern),1)]),_:2},1024),m(o(M),null,{default:h(()=>[a(_(e.retry_strategy===`fixed`?`固定间隔`:`指数退避`),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]),_:1})):l(``,!0)]))}});export{H as default};
@@ -1 +0,0 @@
1
- import{A as e,Dt as t,G as n,H as r,It as i,J as a,K as o,Pt as s,R as c,U as l,W as u,ct as d,it as f,k as p,n as m,ot as h,q as g,yt as _,z as v,zt as y}from"./button-Ul8WlrM5.js";import{t as b}from"./format-Dln15Luw.js";import{t as x}from"./Checkbox-HPVDmEdV.js";import{a as S,n as ee,o as te,r as ne,t as re}from"./dialog-B9j-FMrd.js";import{a as ie,c as ae,i as oe,n as se,o as ce,r as le,t as C}from"./alert-dialog-DlKUuTPe.js";import{t as w}from"./Label-DWdYtVMI.js";import{t as T}from"./badge-9KJEMa53.js";import{n as E}from"./lib-Hhs3NqfD.js";import{t as D}from"./Input-CAnKUBBK.js";import{a as O,i as k,n as A,o as j,r as M,t as N}from"./TableHeader-Bded9VTC.js";import{t as P}from"./useClipboard-BmmsNSGV.js";var F={class:`p-6`},I={class:`flex items-center justify-between mb-4`},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`},ue={key:0,class:`text-sm text-destructive mt-1`},U={class:`border rounded-md p-3 max-h-48 overflow-y-auto space-y-2 bg-muted`},de={class:`font-mono text-xs`},fe={key:0,class:`text-muted-foreground text-sm text-center py-2`},pe={key:0,class:`flex flex-wrap gap-1 mt-2`},me={key:0,class:`flex items-center gap-2`},W=a({__name:`RouterKeys`,setup(a){let W={name:``,allowed_models:[],is_active:!0},G=t([]),K=t([]),q=t(!1),J=t(null),Y=t(null),X=t({...W,allowed_models:[]}),Z=t({}),{copied:he,copy:ge}=P();function _e(e){return e?e.slice(0,7)+`*`.repeat(7):``}function ve(e){return b(e)}function ye(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(t){console.error(`Failed to load data:`,t),E.error(e(t,`加载数据失败`))}}function be(){J.value=null,X.value={...W,allowed_models:[]},Z.value={},q.value=!0}function $(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 xe(){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 Se(){return{name:X.value.name,allowed_models:X.value.allowed_models.length>0?X.value.allowed_models:null}}async function Ce(){let t={};if(X.value.name.trim()||(t.name=`请输入名称`),Z.value=t,!(Object.keys(t).length>0))try{J.value?await p.updateRouterKey(J.value,xe()):await p.createRouterKey(Se()),q.value=!1,await Q()}catch(t){console.error(`Failed to save router key:`,t),E.error(e(t,`保存密钥失败`))}}function we(e){Y.value=e}async function Te(){let t=Y.value;if(t){Y.value=null;try{await p.deleteRouterKey(t.id),await Q()}catch(t){console.error(`Failed to delete router key:`,t),E.error(e(t,`删除密钥失败`))}}}return f(Q),(e,t)=>(h(),n(`div`,F,[r(`div`,I,[t[7]||=r(`h2`,{class:`text-lg font-semibold text-foreground`},`API 密钥`,-1),g(s(m),{onClick:be,class:`flex items-center gap-1`},{default:_(()=>[...t[6]||=[r(`svg`,{class:`w-4 h-4`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[r(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M12 4v16m8-8H4`})],-1),o(` 创建密钥 `,-1)]]),_:1})]),r(`div`,L,[g(s(j),null,{default:_(()=>[g(s(N),null,{default:_(()=>[g(s(M),{class:`bg-muted`},{default:_(()=>[g(s(A),{class:`text-muted-foreground`},{default:_(()=>[...t[8]||=[o(`名称`,-1)]]),_:1}),g(s(A),{class:`text-muted-foreground`},{default:_(()=>[...t[9]||=[o(`密钥`,-1)]]),_:1}),g(s(A),{class:`text-muted-foreground`},{default:_(()=>[...t[10]||=[o(`白名单模型`,-1)]]),_:1}),g(s(A),{class:`text-muted-foreground`},{default:_(()=>[...t[11]||=[o(`状态`,-1)]]),_:1}),g(s(A),{class:`text-muted-foreground`},{default:_(()=>[...t[12]||=[o(`创建时间`,-1)]]),_:1}),g(s(A),{class:`text-right text-muted-foreground`},{default:_(()=>[...t[13]||=[o(`操作`,-1)]]),_:1})]),_:1})]),_:1}),g(s(O),null,{default:_(()=>[(h(!0),n(v,null,d(G.value,e=>(h(),l(s(M),{key:e.id,class:i({"opacity-60":!e.is_active})},{default:_(()=>[g(s(k),{class:`font-medium`},{default:_(()=>[o(y(e.name),1)]),_:2},1024),g(s(k),null,{default:_(()=>[r(`div`,R,[r(`span`,z,y(_e(e.key)),1),g(s(m),{variant:`ghost`,size:`sm`,class:`h-6 w-6 p-0`,onClick:t=>e.key&&s(ge)(e.key)},{default:_(()=>[s(he)?(h(),n(`svg`,V,[...t[15]||=[r(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M5 13l4 4L19 7`},null,-1)]])):(h(),n(`svg`,B,[...t[14]||=[r(`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),g(s(k),null,{default:_(()=>[e.allowed_models&&e.allowed_models.length>0?(h(),n(`div`,H,[(h(!0),n(v,null,d(e.allowed_models,e=>(h(),l(s(T),{key:e,variant:`outline`,class:`text-xs`},{default:_(()=>[o(y(e),1)]),_:2},1024))),128))])):(h(),l(s(T),{key:1,variant:`secondary`},{default:_(()=>[...t[16]||=[o(`全部模型`,-1)]]),_:1}))]),_:2},1024),g(s(k),null,{default:_(()=>[g(s(T),{variant:e.is_active?`default`:`secondary`},{default:_(()=>[o(y(e.is_active?`启用`:`禁用`),1)]),_:2},1032,[`variant`])]),_:2},1024),g(s(k),{class:`text-muted-foreground text-sm`},{default:_(()=>[o(y(ve(e.created_at)),1)]),_:2},1024),g(s(k),{class:`text-right`},{default:_(()=>[g(s(m),{variant:`ghost`,size:`sm`,onClick:t=>$(e),class:`text-muted-foreground hover:text-primary mr-2`},{default:_(()=>[...t[17]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),g(s(m),{variant:`ghost`,size:`sm`,onClick:t=>we(e),class:`text-muted-foreground hover:text-destructive`},{default:_(()=>[...t[18]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1032,[`class`]))),128)),G.value.length===0?(h(),l(s(M),{key:0},{default:_(()=>[g(s(k),{colspan:`6`,class:`text-center text-muted-foreground py-8`},{default:_(()=>[...t[19]||=[o(`暂无密钥`,-1)]]),_:1})]),_:1})):u(``,!0)]),_:1})]),_:1})]),g(s(te),{open:q.value,"onUpdate:open":t[4]||=e=>q.value=e},{default:_(()=>[g(s(S),{class:`sm:max-w-lg`},{default:_(()=>[g(s(ee),null,{default:_(()=>[g(s(re),null,{default:_(()=>[o(y(J.value?`编辑密钥`:`创建密钥`),1)]),_:1})]),_:1}),r(`form`,{onSubmit:c(Ce,[`prevent`]),class:`space-y-4`},[r(`div`,null,[g(s(w),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[...t[20]||=[o(`名称`,-1)]]),_:1}),g(s(D),{modelValue:X.value.name,"onUpdate:modelValue":t[0]||=e=>X.value.name=e,type:`text`,required:``,placeholder:`例如:生产环境`,onInput:t[1]||=e=>delete Z.value.name},null,8,[`modelValue`]),Z.value.name?(h(),n(`p`,ue,y(Z.value.name),1)):u(``,!0)]),r(`div`,null,[g(s(w),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[...t[21]||=[o(`白名单模型`,-1)]]),_:1}),t[23]||=r(`div`,{class:`text-xs text-muted-foreground mb-2`},`不选择 = 允许所有模型`,-1),r(`div`,U,[(h(!0),n(v,null,d(K.value,e=>(h(),l(s(w),{key:e,class:`flex items-center gap-2 cursor-pointer text-sm font-normal`},{default:_(()=>[g(s(x),{"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`]),r(`span`,de,y(e),1)]),_:2},1024))),128)),K.value.length===0?(h(),n(`div`,fe,` 暂无可用模型,请先配置模型映射 `)):u(``,!0)]),X.value.allowed_models.length>0?(h(),n(`div`,pe,[(h(!0),n(v,null,d(X.value.allowed_models,e=>(h(),l(s(T),{key:e,variant:`outline`,class:`text-xs`},{default:_(()=>[o(y(e)+` `,1),g(s(m),{type:`button`,variant:`ghost`,size:`sm`,class:`ml-1 h-4 w-4 p-0 text-muted-foreground hover:text-destructive`,onClick:t=>ye(e)},{default:_(()=>[...t[22]||=[o(`×`,-1)]]),_:1},8,[`onClick`])]),_:2},1024))),128))])):u(``,!0)]),J.value?(h(),n(`div`,me,[g(s(x),{modelValue:X.value.is_active,"onUpdate:modelValue":t[2]||=e=>X.value.is_active=e,id:`key-active`},null,8,[`modelValue`]),g(s(w),{for:`key-active`,class:`text-sm text-foreground`},{default:_(()=>[...t[24]||=[o(`启用`,-1)]]),_:1})])):u(``,!0),g(s(ne),null,{default:_(()=>[g(s(m),{type:`button`,variant:`outline`,onClick:t[3]||=e=>q.value=!1},{default:_(()=>[...t[25]||=[o(`取消`,-1)]]),_:1}),g(s(m),{type:`submit`},{default:_(()=>[...t[26]||=[o(`保存`,-1)]]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]),g(s(ae),{open:!!Y.value,"onUpdate:open":t[5]||=e=>{e||(Y.value=null)}},{default:_(()=>[g(s(ie),null,{default:_(()=>[g(s(se),null,{default:_(()=>[g(s(C),null,{default:_(()=>[...t[27]||=[o(`确认删除`,-1)]]),_:1}),g(s(oe),null,{default:_(()=>[o(`确定要删除密钥「`+y(Y.value?.name)+`」吗?使用此密钥的所有请求将被拒绝,此操作不可撤销。`,1)]),_:1})]),_:1}),g(s(le),null,{default:_(()=>[g(s(ce),null,{default:_(()=>[...t[28]||=[o(`取消`,-1)]]),_:1}),g(s(m),{variant:`destructive`,onClick:Te},{default:_(()=>[...t[29]||=[o(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{W as default};
@@ -1 +0,0 @@
1
- import{Dt as e,J as t,Mt as n,Pt as r,U as i,V as a,at as o,i as s,it as c,lt as l,m as u,nt as d,ot as f,q as p,yt as m}from"./button-Ul8WlrM5.js";import{c as h,v as g,y as _}from"./Teleport-DizRK5O3.js";import{r as v,t as y}from"./Collection-BRt7YxN8.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]=_(`RovingFocusGroup`),k=t({__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(t,{expose:a,emit:o}){let c=t,d=o,{loop:h,orientation:g,dir:_}=n(c),S=v(_),C=u(c,`currentTabStopId`,d,{defaultValue:c.defaultCurrentTabStopId,passive:c.currentTabStopId===void 0}),w=e(!1),E=e(!1),D=e(0),{getItems:k,CollectionSlot:A}=y({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),d(`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),c.preventScrollOnEntryFocus)}}E.value=!1}function M(){setTimeout(()=>{E.value=!1},1)}return a({getItems:k}),O({loop:h,dir:S,orientation:g,currentTabStopId:C,onItemFocus:e=>{C.value=e},onItemShiftTab:()=>{w.value=!0},onFocusableItemAdd:()=>{D.value++},onFocusableItemRemove:()=>{D.value--}}),(e,t)=>(f(),i(r(A),null,{default:m(()=>[p(r(s),{tabindex:w.value||D.value===0?-1:0,"data-orientation":r(g),as:e.as,"as-child":e.asChild,dir:r(S),style:{outline:`none`},onMousedown:t[0]||=e=>E.value=!0,onMouseup:M,onFocus:j,onBlur:t[1]||=e=>w.value=!1},{default:m(()=>[l(e.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`as`,`as-child`,`dir`])]),_:3}))}}),A=t({__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(e){let t=e,n=D(),u=h(),g=a(()=>t.tabStopId||u),_=a(()=>n.currentTabStopId.value===g.value),{getItems:v,CollectionItem:b}=y();c(()=>{t.focusable&&n.onFocusableItemAdd()}),o(()=>{t.focusable&&n.onFocusableItemRemove()});function x(e){if(e.key===`Tab`&&e.shiftKey){n.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let r=w(e,n.orientation.value,n.dir.value);if(r!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||!t.allowShiftKey&&e.shiftKey)return;e.preventDefault();let i=[...v().map(e=>e.ref).filter(e=>e.dataset.disabled!==``)];if(r===`last`)i.reverse();else if(r===`prev`||r===`next`){r===`prev`&&i.reverse();let t=i.indexOf(e.currentTarget);i=n.loop.value?E(i,t+1):i.slice(t+1)}d(()=>T(i))}}return(e,t)=>(f(),i(r(b),null,{default:m(()=>[p(r(s),{tabindex:_.value?0:-1,"data-orientation":r(n).orientation.value,"data-active":e.active?``:void 0,"data-disabled":e.focusable?void 0:``,as:e.as,"as-child":e.asChild,onMousedown:t[0]||=t=>{e.focusable?r(n).onItemFocus(g.value):t.preventDefault()},onFocus:t[1]||=e=>r(n).onItemFocus(g.value),onKeydown:x},{default:m(()=>[l(e.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`data-active`,`data-disabled`,`as`,`as-child`])]),_:3}))}});export{k as n,A as t};
@@ -1 +0,0 @@
1
- import{A as e,Dt as t,G as n,H as r,It as i,J as a,K as o,Pt as s,R as ee,U as c,V as te,W as l,ct as u,it as ne,k as d,n as f,ot as p,q as m,yt as h,z as g,zt as _}from"./button-Ul8WlrM5.js";import{b as v}from"./Teleport-DizRK5O3.js";import{a as re}from"./PopperContent-gzzf1XHe.js";import{t as y}from"./CascadingModelSelect-CBhqKFDX.js";import{a as b,i as x,n as S,r as C,t as w}from"./SelectValue-C0-LzGQY.js";import{n as T,r as E,t as ie}from"./CollapsibleTrigger-DhxD9tpM.js";import{a as ae,n as oe,o as se,r as ce,t as le}from"./dialog-B9j-FMrd.js";import{a as ue,c as de,i as fe,n as pe,o as me,r as he,t as ge}from"./alert-dialog-DlKUuTPe.js";import{t as D}from"./Label-DWdYtVMI.js";import{t as _e}from"./Switch-BO8Ooae6.js";import{t as O}from"./badge-9KJEMa53.js";import{n as k}from"./lib-Hhs3NqfD.js";import{t as A}from"./Input-CAnKUBBK.js";import{a as j,i as M,n as N,o as P,r as F,t as I}from"./TableHeader-Bded9VTC.js";import"./constants-D_0jiLjw.js";var L=v(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),ve=v(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),ye={class:`p-6`},be={key:0,class:`flex items-center justify-center py-16 text-muted-foreground text-sm`},xe={class:`mb-4`},Se={class:`flex items-center justify-between mb-3`},Ce={class:`bg-card rounded-lg border overflow-hidden`},we={class:`flex flex-wrap gap-1`},Te={class:`flex items-center justify-end gap-1`},Ee={key:1,class:`text-center text-muted-foreground py-12 bg-card rounded-xl border`},De={key:0,class:`bg-destructive/10 border border-destructive/30 rounded-md px-3 py-2 text-sm text-destructive`},Oe={key:0,class:`text-sm text-destructive mt-1`},ke={class:`flex flex-wrap gap-2`},Ae={key:0,class:`text-sm text-destructive mt-1`},je={class:`grid grid-cols-2 gap-4`},Me={key:1,class:`text-sm text-destructive`},Ne={class:`space-y-2`},Pe={class:`flex-1`},Fe={key:0,class:`text-sm text-destructive mt-1`},Ie={class:`grid grid-cols-3 gap-3`},R=a({__name:`Schedules`,setup(a){let v=[`周日`,`周一`,`周二`,`周三`,`周四`,`周五`,`周六`],R=()=>({name:``,week:[1,2,3,4,5],start_hour:0,end_hour:24,targets:[{backend_model:``,provider_id:``}],max_concurrency:void 0,queue_timeout_ms:void 0,max_queue_size:void 0}),z=t(!1),B=t([]),V=t([]),H=t([]),U=t(``),W=t(!1),G=t(null),K=t(null),q=t(R()),J=t(!1),Y=t({}),X=t(``);function Le(e){let t=[];try{t=JSON.parse(e)}catch(e){return console.warn(`Failed to parse week JSON:`,e),[]}return t.map(e=>v[e]??String(e))}function Z(e){return String(e).padStart(2,`0`)+`:00`}async function Re(){try{B.value=await d.getMappingGroups()}catch(t){k.error(e(t,`加载映射组失败`))}}async function ze(){try{V.value=await d.getProviders()}catch(t){k.error(e(t,`加载供应商失败`))}}let Be=te(()=>V.value.map(e=>({provider:{id:e.id,name:e.name},models:(e.models??[]).map(e=>({name:e.name,contextWindow:e.context_window??2e5}))})));async function Q(){if(!U.value){H.value=[];return}try{H.value=await d.getSchedulesByGroup(U.value)}catch(t){k.error(e(t,`加载调度失败`))}}function Ve(){Q()}function $(e){let t=q.value.week.indexOf(e);t>=0?q.value.week.splice(t,1):q.value.week.push(e),delete Y.value.week}function He(){q.value.targets.push({backend_model:``,provider_id:``})}function Ue(e){q.value.targets.splice(e,1)}function We(){G.value=null,q.value=R(),J.value=!1,Y.value={},X.value=``,W.value=!0}function Ge(e){G.value=e.id,Y.value={},X.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 JSON:`,e)}let n=[1,2,3,4,5];try{n=JSON.parse(e.week)}catch(e){console.warn(`Failed to parse week JSON:`,e)}let r,i,a;if(e.concurrency_rule)try{let t=JSON.parse(e.concurrency_rule);r=t.max_concurrency,i=t.queue_timeout_ms,a=t.max_queue_size}catch(e){console.warn(`Failed to parse concurrency_rule JSON:`,e)}q.value={name:e.name,week:n,start_hour:e.start_hour,end_hour:e.end_hour,targets:t,max_concurrency:r,queue_timeout_ms:i,max_queue_size:a},J.value=!!e.concurrency_rule,W.value=!0}function Ke(){let e={};q.value.name.trim()||(e.name=`请输入名称`),q.value.week.length===0&&(e.week=`至少选择一天`),q.value.start_hour>=q.value.end_hour&&(e.time=`开始时间必须小于结束时间`);let t=``;for(let e=0;e<q.value.targets.length;e++){let n=q.value.targets[e];if(!n.provider_id||!n.backend_model){t=`每个目标必须选择模型`;break}}return t&&(e.targets=t),Y.value=e,Object.keys(e).length===0}async function qe(){if(X.value=``,Ke())try{let e=JSON.stringify({targets:q.value.targets}),t=q.value.max_concurrency||q.value.queue_timeout_ms||q.value.max_queue_size?JSON.stringify({...q.value.max_concurrency?{max_concurrency:q.value.max_concurrency}:{},...q.value.queue_timeout_ms?{queue_timeout_ms:q.value.queue_timeout_ms}:{},...q.value.max_queue_size?{max_queue_size:q.value.max_queue_size}:{}}):null,n={mapping_group_id:U.value,name:q.value.name,week:JSON.stringify(q.value.week),start_hour:q.value.start_hour,end_hour:q.value.end_hour,mapping_rule:e,concurrency_rule:t};G.value?await d.updateSchedule(G.value,n):await d.createSchedule(n),W.value=!1,await Q()}catch(t){X.value=e(t,`保存调度失败`)}}async function Je(t){try{await d.toggleSchedule(t.id),await Q()}catch(t){k.error(e(t,`切换状态失败`))}}async function Ye(){let t=K.value;if(t){K.value=null;try{await d.deleteSchedule(t.id),await Q()}catch(t){k.error(e(t,`删除调度失败`))}}}return ne(async()=>{z.value=!0,await Promise.allSettled([Re(),ze()]),B.value.length>0&&(U.value=B.value[0].id,await Q()),z.value=!1}),(e,t)=>(p(),n(`div`,ye,[t[40]||=r(`div`,{class:`flex items-center justify-between mb-4`},[r(`div`,null,[r(`h2`,{class:`text-lg font-semibold text-foreground`},`调度管理`),r(`p`,{class:`text-sm text-muted-foreground mt-1`},` 为映射组配置分时段调度规则,在不同时间段使用不同的模型和并发配置 `)])],-1),z.value?(p(),n(`div`,be,` Loading... `)):l(``,!0),z.value?l(``,!0):(p(),n(g,{key:1},[r(`div`,xe,[m(s(D),{class:`block text-sm font-medium text-foreground mb-2`},{default:h(()=>[...t[14]||=[o(`选择映射组`,-1)]]),_:1}),m(s(b),{modelValue:U.value,"onUpdate:modelValue":[t[0]||=e=>U.value=e,Ve]},{default:h(()=>[m(s(S),{class:`w-80`},{default:h(()=>[m(s(w),{placeholder:`请选择映射组`})]),_:1}),m(s(x),null,{default:h(()=>[(p(!0),n(g,null,u(B.value,e=>(p(),c(s(C),{key:e.id,value:e.id},{default:h(()=>[o(_(e.client_model),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`])]),U.value?(p(),n(g,{key:0},[r(`div`,Se,[t[16]||=r(`h3`,{class:`text-sm font-medium text-foreground`},`调度规则`,-1),m(s(f),{size:`sm`,onClick:We},{default:h(()=>[m(s(L),{class:`w-4 h-4 mr-1`}),t[15]||=o(` 新建调度 `,-1)]),_:1})]),r(`div`,Ce,[m(s(P),null,{default:h(()=>[m(s(I),null,{default:h(()=>[m(s(F),{class:`bg-muted`},{default:h(()=>[m(s(N),{class:`text-muted-foreground`},{default:h(()=>[...t[17]||=[o(`名称`,-1)]]),_:1}),m(s(N),{class:`text-muted-foreground`},{default:h(()=>[...t[18]||=[o(`状态`,-1)]]),_:1}),m(s(N),{class:`text-muted-foreground`},{default:h(()=>[...t[19]||=[o(`星期`,-1)]]),_:1}),m(s(N),{class:`text-muted-foreground`},{default:h(()=>[...t[20]||=[o(`时间段`,-1)]]),_:1}),m(s(N),{class:`text-right text-muted-foreground`},{default:h(()=>[...t[21]||=[o(`操作`,-1)]]),_:1})]),_:1})]),_:1}),m(s(j),null,{default:h(()=>[(p(!0),n(g,null,u(H.value,e=>(p(),c(s(F),{key:e.id},{default:h(()=>[m(s(M),{class:`font-medium`},{default:h(()=>[o(_(e.name),1)]),_:2},1024),m(s(M),null,{default:h(()=>[m(s(O),{variant:e.enabled?`default`:`secondary`},{default:h(()=>[o(_(e.enabled?`启用`:`禁用`),1)]),_:2},1032,[`variant`])]),_:2},1024),m(s(M),null,{default:h(()=>[r(`div`,we,[(p(!0),n(g,null,u(Le(e.week),e=>(p(),c(s(O),{key:e,variant:`outline`,class:`text-xs`},{default:h(()=>[o(_(e),1)]),_:2},1024))),128))])]),_:2},1024),m(s(M),{class:`font-mono text-sm`},{default:h(()=>[o(_(Z(e.start_hour))+`-`+_(Z(e.end_hour)),1)]),_:2},1024),m(s(M),{class:`text-right`},{default:h(()=>[r(`div`,Te,[m(s(f),{variant:`ghost`,size:`sm`,onClick:t=>Je(e)},{default:h(()=>[m(s(_e),{checked:!!e.enabled,size:`sm`},null,8,[`checked`])]),_:2},1032,[`onClick`]),m(s(f),{variant:`ghost`,size:`sm`,onClick:t=>Ge(e)},{default:h(()=>[...t[22]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),m(s(f),{variant:`ghost`,size:`sm`,class:`text-destructive hover:text-destructive`,onClick:t=>K.value=e},{default:h(()=>[...t[23]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:2},1024)]),_:2},1024))),128)),H.value.length===0?(p(),c(s(F),{key:0},{default:h(()=>[m(s(M),{colspan:`5`,class:`text-center text-muted-foreground py-8`},{default:h(()=>[...t[24]||=[o(` 暂无调度规则,点击「新建调度」添加 `,-1)]]),_:1})]),_:1})):l(``,!0)]),_:1})]),_:1})])],64)):(p(),n(`div`,Ee,` 请先选择一个映射组 `)),m(s(se),{open:W.value,"onUpdate:open":t[12]||=e=>W.value=e},{default:h(()=>[m(s(ae),{class:`max-w-2xl max-h-[85vh] overflow-y-auto`},{default:h(()=>[m(s(oe),null,{default:h(()=>[m(s(le),null,{default:h(()=>[o(_(G.value?`编辑调度`:`新建调度`),1)]),_:1})]),_:1}),r(`form`,{onSubmit:ee(qe,[`prevent`]),class:`space-y-4`},[X.value?(p(),n(`div`,De,_(X.value),1)):l(``,!0),r(`div`,null,[m(s(D),{class:`block text-sm font-medium text-foreground mb-1`},{default:h(()=>[...t[25]||=[o(`名称`,-1)]]),_:1}),m(s(A),{modelValue:q.value.name,"onUpdate:modelValue":t[1]||=e=>q.value.name=e,placeholder:`例如:工作日白天`,onInput:t[2]||=e=>delete Y.value.name},null,8,[`modelValue`]),Y.value.name?(p(),n(`p`,Oe,_(Y.value.name),1)):l(``,!0)]),r(`div`,null,[m(s(D),{class:`block text-sm font-medium text-foreground mb-1`},{default:h(()=>[...t[26]||=[o(`适用星期`,-1)]]),_:1}),r(`div`,ke,[(p(),n(g,null,u(v,(e,t)=>m(s(f),{key:t,type:`button`,variant:(q.value.week??[]).includes(t)?`default`:`outline`,size:`sm`,onClick:e=>$(t)},{default:h(()=>[o(_(e),1)]),_:2},1032,[`variant`,`onClick`])),64))]),Y.value.week?(p(),n(`p`,Ae,_(Y.value.week),1)):l(``,!0)]),r(`div`,je,[r(`div`,null,[m(s(D),{class:`text-sm font-medium text-foreground mb-1 block`},{default:h(()=>[...t[27]||=[o(`开始时间`,-1)]]),_:1}),m(s(b),{modelValue:q.value.start_hour,"onUpdate:modelValue":[t[3]||=e=>q.value.start_hour=e,t[4]||=e=>{q.value.start_hour=Number(e),delete Y.value.time}]},{default:h(()=>[m(s(S),null,{default:h(()=>[m(s(w),{placeholder:`选择小时`})]),_:1}),m(s(x),null,{default:h(()=>[(p(),n(g,null,u(24,e=>m(s(C),{key:e-1,value:e-1},{default:h(()=>[o(_(String(e-1).padStart(2,`0`))+`:00 `,1)]),_:2},1032,[`value`])),64))]),_:1})]),_:1},8,[`modelValue`])]),r(`div`,null,[m(s(D),{class:`text-sm font-medium text-foreground mb-1 block`},{default:h(()=>[...t[28]||=[o(`结束时间`,-1)]]),_:1}),m(s(b),{modelValue:q.value.end_hour,"onUpdate:modelValue":[t[5]||=e=>q.value.end_hour=e,t[6]||=e=>{q.value.end_hour=Number(e),delete Y.value.time}]},{default:h(()=>[m(s(S),null,{default:h(()=>[m(s(w),{placeholder:`选择小时`})]),_:1}),m(s(x),null,{default:h(()=>[(p(),n(g,null,u(24,e=>m(s(C),{key:e,value:e},{default:h(()=>[o(_(String(e).padStart(2,`0`))+`:00 `,1)]),_:2},1032,[`value`])),64))]),_:1})]),_:1},8,[`modelValue`])])]),Y.value.time?(p(),n(`p`,Me,_(Y.value.time),1)):l(``,!0),r(`div`,null,[m(s(D),{class:`block text-sm font-medium text-foreground mb-1`},{default:h(()=>[...t[29]||=[o(`映射目标`,-1)]]),_:1}),r(`div`,Ne,[(p(!0),n(g,null,u(q.value.targets,(e,t)=>(p(),n(`div`,{key:t,class:`flex items-center gap-2`},[r(`div`,Pe,[m(y,{providers:Be.value,"model-value":e.provider_id&&e.backend_model?{provider_id:e.provider_id,model:e.backend_model}:void 0,placeholder:`选择模型...`,"onUpdate:modelValue":t=>{e.provider_id=t.provider_id,e.backend_model=t.model,delete Y.value.targets}},null,8,[`providers`,`model-value`,`onUpdate:modelValue`])]),m(s(f),{type:`button`,variant:`ghost`,size:`sm`,disabled:q.value.targets.length<=1,onClick:e=>Ue(t)},{default:h(()=>[m(s(ve),{class:`w-4 h-4`})]),_:1},8,[`disabled`,`onClick`])]))),128)),m(s(f),{type:`button`,variant:`outline`,size:`sm`,onClick:He},{default:h(()=>[m(s(L),{class:`w-3 h-3 mr-1`}),t[30]||=o(` 添加目标 `,-1)]),_:1})]),Y.value.targets?(p(),n(`p`,Fe,_(Y.value.targets),1)):l(``,!0)]),m(s(E),{open:J.value,"onUpdate:open":t[10]||=e=>J.value=e},{default:h(()=>[m(s(ie),{"as-child":``},{default:h(()=>[m(s(f),{type:`button`,variant:`ghost`,class:`w-full justify-between px-0`},{default:h(()=>[t[31]||=r(`span`,{class:`text-sm font-medium`},`并发配置(可选)`,-1),m(s(re),{class:i([`h-4 w-4 transition-transform`,{"rotate-180":J.value}])},null,8,[`class`])]),_:1})]),_:1}),m(s(T),{class:`space-y-3 pt-2`},{default:h(()=>[r(`div`,Ie,[r(`div`,null,[m(s(D),{class:`text-xs text-muted-foreground`},{default:h(()=>[...t[32]||=[o(`最大并发`,-1)]]),_:1}),m(s(A),{modelValue:q.value.max_concurrency,"onUpdate:modelValue":t[7]||=e=>q.value.max_concurrency=e,modelModifiers:{number:!0},type:`number`,min:1,placeholder:`不限`},null,8,[`modelValue`])]),r(`div`,null,[m(s(D),{class:`text-xs text-muted-foreground`},{default:h(()=>[...t[33]||=[o(`队列超时 (ms)`,-1)]]),_:1}),m(s(A),{modelValue:q.value.queue_timeout_ms,"onUpdate:modelValue":t[8]||=e=>q.value.queue_timeout_ms=e,modelModifiers:{number:!0},type:`number`,min:1e3,placeholder:`默认`},null,8,[`modelValue`])]),r(`div`,null,[m(s(D),{class:`text-xs text-muted-foreground`},{default:h(()=>[...t[34]||=[o(`最大队列`,-1)]]),_:1}),m(s(A),{modelValue:q.value.max_queue_size,"onUpdate:modelValue":t[9]||=e=>q.value.max_queue_size=e,modelModifiers:{number:!0},type:`number`,min:0,placeholder:`默认`},null,8,[`modelValue`])])])]),_:1})]),_:1},8,[`open`]),m(s(ce),null,{default:h(()=>[m(s(f),{type:`button`,variant:`outline`,onClick:t[11]||=e=>W.value=!1},{default:h(()=>[...t[35]||=[o(`取消`,-1)]]),_:1}),m(s(f),{type:`submit`},{default:h(()=>[...t[36]||=[o(`保存`,-1)]]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]),m(s(de),{open:!!K.value,"onUpdate:open":t[13]||=e=>{e||(K.value=null)}},{default:h(()=>[m(s(ue),null,{default:h(()=>[m(s(pe),null,{default:h(()=>[m(s(ge),null,{default:h(()=>[...t[37]||=[o(`确认删除`,-1)]]),_:1}),m(s(fe),null,{default:h(()=>[o(` 确定要删除调度「`+_(K.value?.name)+`」吗?此操作不可撤销。 `,1)]),_:1})]),_:1}),m(s(he),null,{default:h(()=>[m(s(me),null,{default:h(()=>[...t[38]||=[o(`取消`,-1)]]),_:1}),m(s(f),{variant:`destructive`,onClick:Ye},{default:h(()=>[...t[39]||=[o(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])],64))]))}});export{R as default};
@@ -1 +0,0 @@
1
- import{B as e,Dt as t,G as n,H as r,It as i,J as a,K as o,Lt as s,Mt as c,Pt as l,R as u,Rt as d,S as f,U as p,V as m,W as h,X as g,_t as _,at as v,ct as y,dt as b,gt as x,i as S,it as C,lt as w,m as T,nt as E,o as D,ot as O,p as k,q as A,r as j,rt as ee,tt as M,u as te,x as N,yt as P,z as F,zt as ne}from"./button-Ul8WlrM5.js";import{_ as re,a as ie,b as ae,c as I,d as L,g as R,i as oe,l as se,n as z,o as ce,p as le,t as ue,u as B,v as V,y as H}from"./Teleport-DizRK5O3.js";import{t as de}from"./check-7ahK--N4.js";import{a as U,i as fe,r as pe,t as me}from"./PopperContent-gzzf1XHe.js";import{t as he}from"./ohash.D__AXeF1-D5e5Wyzx.js";import{n as W,t as ge}from"./useNonce-BfwUJ1Ci.js";import{r as _e,t as G}from"./Collection-BRt7YxN8.js";import{t as ve}from"./useFocusGuards-A-9V2Y-b.js";import{t as ye}from"./useFormControl-DEO19lRe.js";import{t as be}from"./VisuallyHidden-5AozJQza.js";var xe=ae(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]);function K(e){let t=f(``,1e3);return{search:t,handleTypeaheadSearch:(n,r)=>{if(t.value+=n,e)e(n);else{let e=V(),n=r.map(e=>({...e,textValue:e.value?.textValue??e.ref.textContent?.trim()??``})),i=n.find(t=>t.ref===e),a=Ce(n.map(e=>e.textValue),t.value,i?.textValue),o=n.find(e=>e.textValue===a);return o&&o.ref.focus(),o?.ref}},resetTypeahead:()=>{t.value=``}}}function Se(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function Ce(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=Se(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}var we=[` `,`Enter`,`ArrowUp`,`ArrowDown`],Te=[` `,`Enter`];function q(e,t,n){return e===void 0?!1:Array.isArray(e)?e.some(e=>J(e,t,n)):J(e,t,n)}function J(e,t,n){return e===void 0||t===void 0?!1:typeof e==`string`?e===t:typeof n==`function`?n(e,t):typeof n==`string`?e?.[n]===t?.[n]:he(e,t)}function Ee(e){return e==null||e===``||Array.isArray(e)&&e.length===0}var De={key:0,value:``},[Y,X]=H(`SelectRoot`),Oe=a({inheritAttrs:!1,__name:`SelectRoot`,props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},by:{type:[String,Function],required:!1},dir:{type:String,required:!1},multiple:{type:Boolean,required:!1},autocomplete:{type:String,required:!1},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:[`update:modelValue`,`update:open`],setup(e,{emit:r}){let i=e,a=r,{required:o,disabled:s,multiple:u,dir:d}=c(i),f=T(i,`modelValue`,a,{defaultValue:i.defaultValue??(u.value?[]:void 0),passive:i.modelValue===void 0,deep:!0}),g=T(i,`open`,a,{defaultValue:i.defaultOpen,passive:i.open===void 0}),_=t(),v=t(),b=t({x:0,y:0}),x=m(()=>u.value&&Array.isArray(f.value)?f.value?.length===0:R(f.value));G({isProvider:!0});let S=_e(d),C=ye(_),E=t(new Set),D=m(()=>Array.from(E.value).map(e=>e.value).join(`;`));function k(e){if(u.value){let t=Array.isArray(f.value)?[...f.value]:[],n=t.findIndex(t=>J(t,e,i.by));n===-1?t.push(e):t.splice(n,1),f.value=[...t]}else f.value=e}function A(e){return Array.from(E.value).find(t=>q(e,t.value,i.by))}return X({triggerElement:_,onTriggerChange:e=>{_.value=e},valueElement:v,onValueElementChange:e=>{v.value=e},contentId:``,modelValue:f,onValueChange:k,by:i.by,open:g,multiple:u,required:o,onOpenChange:e=>{g.value=e},dir:S,triggerPointerDownPosRef:b,disabled:s,isEmptyModelValue:x,optionsSet:E,onOptionAdd:e=>{let t=A(e.value);t&&E.value.delete(t),E.value.add(e)},onOptionRemove:e=>{let t=A(e.value);t&&E.value.delete(t)}}),(e,t)=>(O(),p(l(fe),null,{default:P(()=>[w(e.$slots,`default`,{modelValue:l(f),open:l(g)}),l(C)&&e.name?(O(),p(ke,{key:D.value,"aria-hidden":`true`,tabindex:`-1`,multiple:l(u),required:l(o),name:e.name,autocomplete:e.autocomplete,disabled:l(s),value:l(f)},{default:P(()=>[l(R)(l(f))?(O(),n(`option`,De)):h(`v-if`,!0),(O(!0),n(F,null,y(Array.from(E.value),e=>(O(),n(`option`,M({key:e.value??``},{ref_for:!0},e),null,16))),128))]),_:1},8,[`multiple`,`required`,`name`,`autocomplete`,`disabled`,`value`])):h(`v-if`,!0)]),_:3}))}}),ke=a({__name:`BubbleSelect`,props:{autocomplete:{type:String,required:!1},autofocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},form:{type:String,required:!1},multiple:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},size:{type:Number,required:!1},value:{type:null,required:!1}},setup(e){let n=e,i=t(),a=Y();x(()=>n.value,(e,t)=>{let n=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`).set;if(e!==t&&r&&i.value){let t=new Event(`change`,{bubbles:!0});r.call(i.value,e),i.value.dispatchEvent(t)}});function o(e){a.onValueChange(e.target.value)}return(e,t)=>(O(),p(l(be),{"as-child":``},{default:P(()=>[r(`select`,M({ref_key:`selectElement`,ref:i},n,{onInput:o}),[w(e.$slots,`default`)],16)]),_:3}))}}),Ae=a({__name:`SelectPopperPosition`,props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:`start`},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1,default:10},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=L(e);return(e,n)=>(O(),p(l(me),M(l(t),{style:{boxSizing:`border-box`,"--reka-select-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-select-content-available-width":`var(--reka-popper-available-width)`,"--reka-select-content-available-height":`var(--reka-popper-available-height)`,"--reka-select-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-select-trigger-height":`var(--reka-popper-anchor-height)`}}),{default:P(()=>[w(e.$slots,`default`)]),_:3},16))}}),je={onViewportChange:()=>{},itemTextRefCallback:()=>{},itemRefCallback:()=>{}},[Z,Q]=H(`SelectContent`),Me=a({__name:`SelectContentImpl`,props:{position:{type:String,required:!1,default:`item-aligned`},bodyLock:{type:Boolean,required:!1,default:!0},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:`start`},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1,default:!0}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:n}){let r=e,i=n,a=Y();ve(),le(r.bodyLock);let{CollectionSlot:o,getItems:s}=G(),c=t();se(c);let{search:d,handleTypeaheadSearch:f}=K(),h=t(),g=t(),v=t(),y=t(!1),S=t(!1),C=t(!1);function T(){g.value&&c.value&&z([g.value,c.value])}x(y,()=>{T()});let{onOpenChange:E,triggerPointerDownPosRef:D}=a;_(e=>{if(!c.value)return;let t={x:0,y:0},n=e=>{t={x:Math.abs(Math.round(e.pageX)-(D.value?.x??0)),y:Math.abs(Math.round(e.pageY)-(D.value?.y??0))}},r=e=>{e.pointerType!==`touch`&&(t.x<=10&&t.y<=10?e.preventDefault():c.value?.contains(e.target)||E(!1),document.removeEventListener(`pointermove`,n),D.value=null)};D.value!==null&&(document.addEventListener(`pointermove`,n),document.addEventListener(`pointerup`,r,{capture:!0,once:!0})),e(()=>{document.removeEventListener(`pointermove`,n),document.removeEventListener(`pointerup`,r,{capture:!0})})});function k(e){let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&f(e.key,s()),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=[...s().map(e=>e.ref)];if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>z(t)),e.preventDefault()}}let j=L(m(()=>r.position===`popper`?r:{}).value);return Q({content:c,viewport:h,onViewportChange:e=>{h.value=e},itemRefCallback:(e,t,n)=>{let r=!S.value&&!n,i=q(a.modelValue.value,t,a.by);if(a.multiple.value){if(C.value)return;(i||r)&&(g.value=e,i&&(C.value=!0))}else (i||r)&&(g.value=e);r&&(S.value=!0)},selectedItem:g,selectedItemText:v,onItemLeave:()=>{c.value?.focus()},itemTextRefCallback:(e,t,n)=>{let r=!S.value&&!n;(q(a.modelValue.value,t,a.by)||r)&&(v.value=e)},focusSelectedItem:T,position:r.position,isPositioned:y,searchRef:d}),(e,t)=>(O(),p(l(o),null,{default:P(()=>[A(l(oe),{"as-child":``,onMountAutoFocus:t[6]||=u(()=>{},[`prevent`]),onUnmountAutoFocus:t[7]||=e=>{i(`closeAutoFocus`,e),!e.defaultPrevented&&(l(a).triggerElement.value?.focus({preventScroll:!0}),e.preventDefault())}},{default:P(()=>[A(l(ie),{"as-child":``,"disable-outside-pointer-events":e.disableOutsidePointerEvents,onFocusOutside:t[2]||=u(()=>{},[`prevent`]),onDismiss:t[3]||=e=>l(a).onOpenChange(!1),onEscapeKeyDown:t[4]||=e=>i(`escapeKeyDown`,e),onPointerDownOutside:t[5]||=e=>i(`pointerDownOutside`,e)},{default:P(()=>[(O(),p(b(e.position===`popper`?Ae:Pe),M({...e.$attrs,...l(j)},{id:l(a).contentId,ref:e=>{if(!e)return;let t=l(te)(e);t?.hasAttribute(`data-reka-popper-content-wrapper`)?c.value=t.firstElementChild:c.value=t},role:`listbox`,"data-state":l(a).open.value?`open`:`closed`,dir:l(a).dir.value,style:{display:`flex`,flexDirection:`column`,outline:`none`},onContextmenu:t[0]||=u(()=>{},[`prevent`]),onPlaced:t[1]||=e=>y.value=!0,onKeydown:k}),{default:P(()=>[w(e.$slots,`default`)]),_:3},16,[`id`,`data-state`,`dir`,`onKeydown`]))]),_:3},8,[`disable-outside-pointer-events`])]),_:3})]),_:3}))}}),[$,Ne]=H(`SelectItemAlignedPosition`),Pe=a({inheritAttrs:!1,__name:`SelectItemAlignedPosition`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`placed`],setup(e,{emit:r}){let i=e,a=r,{getItems:o}=G(),s=Y(),c=Z(),u=t(!1),f=t(!0),p=t(),{forwardRef:m,currentElement:h}=D(),{viewport:g,selectedItem:_,selectedItemText:v,focusSelectedItem:y}=c;function b(){if(s.triggerElement.value&&s.valueElement.value&&p.value&&h.value&&g?.value&&_?.value&&v?.value){let e=s.triggerElement.value.getBoundingClientRect(),t=h.value.getBoundingClientRect(),n=s.valueElement.value.getBoundingClientRect(),r=v.value.getBoundingClientRect();if(s.dir.value!==`rtl`){let i=r.left-t.left,a=n.left-i,o=e.left-a,s=e.width+o,c=Math.max(s,t.width),l=window.innerWidth-10,u=W(a,10,Math.max(10,l-c));p.value.style.minWidth=`${s}px`,p.value.style.left=`${u}px`}else{let i=t.right-r.right,a=window.innerWidth-n.right-i,o=window.innerWidth-e.right-a,s=e.width+o,c=Math.max(s,t.width),l=window.innerWidth-10,u=W(a,10,Math.max(10,l-c));p.value.style.minWidth=`${s}px`,p.value.style.right=`${u}px`}let i=o().map(e=>e.ref),c=window.innerHeight-20,l=g.value.scrollHeight,d=window.getComputedStyle(h.value),f=Number.parseInt(d.borderTopWidth,10),m=Number.parseInt(d.paddingTop,10),y=Number.parseInt(d.borderBottomWidth,10),b=Number.parseInt(d.paddingBottom,10),x=f+m+l+b+y,S=Math.min(_.value.offsetHeight*5,x),C=window.getComputedStyle(g.value),w=Number.parseInt(C.paddingTop,10),T=Number.parseInt(C.paddingBottom,10),E=e.top+e.height/2-10,D=c-E,O=_.value.offsetHeight/2,k=_.value.offsetTop+O,A=f+m+k,j=x-A;if(A<=E){let e=_.value===i.at(-1);p.value.style.bottom=`0px`;let t=h.value.clientHeight-g.value.offsetTop-g.value.offsetHeight,n=A+Math.max(D,O+(e?T:0)+t+y);p.value.style.height=`${n}px`}else{let e=_.value===i[0];p.value.style.top=`0px`;let t=Math.max(E,f+g.value.offsetTop+(e?w:0)+O)+j;p.value.style.height=`${t}px`,g.value.scrollTop=A-E+g.value.offsetTop}p.value.style.margin=`10px 0`,p.value.style.minHeight=`${S}px`,p.value.style.maxHeight=`${c}px`,a(`placed`),requestAnimationFrame(()=>u.value=!0)}}let x=t(``);C(async()=>{await E(),b(),h.value&&(x.value=window.getComputedStyle(h.value).zIndex)});function T(e){e&&f.value===!0&&(b(),y?.(),f.value=!1)}return k(s.triggerElement,()=>{b()}),Ne({contentWrapper:p,shouldExpandOnScrollRef:u,onScrollButtonChange:T}),(e,t)=>(O(),n(`div`,{ref_key:`contentWrapperElement`,ref:p,style:d({display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:x.value})},[A(l(S),M({ref:l(m),style:{boxSizing:`border-box`,maxHeight:`100%`}},{...e.$attrs,...i}),{default:P(()=>[w(e.$slots,`default`)]),_:3},16)],4))}}),Fe=a({inheritAttrs:!1,__name:`SelectProvider`,props:{context:{type:Object,required:!0}},setup(e){return X(e.context),Q(je),(e,t)=>w(e.$slots,`default`)}}),Ie={key:1},Le=a({inheritAttrs:!1,__name:`SelectContent`,props:{forceMount:{type:Boolean,required:!1},position:{type:String,required:!1},bodyLock:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(r,{emit:i}){let a=r,o=B(a,i),c=Y(),u=t();C(()=>{u.value=new DocumentFragment});let d=t(),f=m(()=>a.forceMount||c.open.value),_=t(f.value);return x(f,()=>{setTimeout(()=>_.value=f.value)}),(t,r)=>f.value||_.value||d.value?.present?(O(),p(l(ce),{key:0,ref_key:`presenceRef`,ref:d,present:f.value},{default:P(()=>[A(Me,s(g({...l(o),...t.$attrs})),{default:P(()=>[w(t.$slots,`default`)]),_:3},16)]),_:3},8,[`present`])):u.value?(O(),n(`div`,Ie,[(O(),p(e,{to:u.value},[A(Fe,{context:l(c)},{default:P(()=>[w(t.$slots,`default`)]),_:3},8,[`context`])],8,[`to`]))])):h(`v-if`,!0)}}),Re=a({__name:`SelectIcon`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){return(e,t)=>(O(),p(l(S),{"aria-hidden":`true`,as:e.as,"as-child":e.asChild},{default:P(()=>[w(e.$slots,`default`,{},()=>[t[0]||=o(`▼`)])]),_:3},8,[`as`,`as-child`]))}}),[ze,Be]=H(`SelectItem`),Ve=a({__name:`SelectItem`,props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(e,{emit:n}){let r=e,i=n,{disabled:a}=c(r),o=Y(),s=Z(),{forwardRef:d,currentElement:f}=D(),{CollectionItem:h}=G(),g=m(()=>q(o.modelValue?.value,r.value,o.by)),_=t(!1),v=t(r.textValue??``),y=I(void 0,`reka-select-item-text`);async function b(e){e.defaultPrevented||re(`select.select`,x,{originalEvent:e,value:r.value})}async function x(e){await E(),i(`select`,e),!e.defaultPrevented&&(a.value||(o.onValueChange(r.value),o.multiple.value||o.onOpenChange(!1)))}async function T(e){await E(),!e.defaultPrevented&&(a.value?s.onItemLeave?.():e.currentTarget?.focus({preventScroll:!0}))}async function k(e){await E(),!e.defaultPrevented&&e.currentTarget===V()&&s.onItemLeave?.()}async function j(e){await E(),!e.defaultPrevented&&(s.searchRef?.value!==``&&e.key===` `||(Te.includes(e.key)&&b(e),e.key===` `&&e.preventDefault()))}if(r.value===``)throw Error(`A <SelectItem /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return C(()=>{f.value&&s.itemRefCallback(f.value,r.value,r.disabled)}),Be({value:r.value,disabled:a,textId:y,isSelected:g,onItemTextChange:e=>{v.value=((v.value||e?.textContent)??``).trim()}}),(e,t)=>(O(),p(l(h),{value:{textValue:v.value}},{default:P(()=>[A(l(S),{ref:l(d),role:`option`,"aria-labelledby":l(y),"data-highlighted":_.value?``:void 0,"aria-selected":g.value,"data-state":g.value?`checked`:`unchecked`,"aria-disabled":l(a)||void 0,"data-disabled":l(a)?``:void 0,tabindex:l(a)?void 0:-1,as:e.as,"as-child":e.asChild,onFocus:t[0]||=e=>_.value=!0,onBlur:t[1]||=e=>_.value=!1,onPointerup:b,onPointerdown:t[2]||=e=>{e.currentTarget.focus({preventScroll:!0})},onTouchend:t[3]||=u(()=>{},[`prevent`,`stop`]),onPointermove:T,onPointerleave:k,onKeydown:j},{default:P(()=>[w(e.$slots,`default`)]),_:3},8,[`aria-labelledby`,`data-highlighted`,`aria-selected`,`data-state`,`aria-disabled`,`data-disabled`,`tabindex`,`as`,`as-child`])]),_:3},8,[`value`]))}}),He=a({__name:`SelectItemIndicator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,n=ze();return(e,r)=>l(n).isSelected.value?(O(),p(l(S),M({key:0,"aria-hidden":`true`},t),{default:P(()=>[w(e.$slots,`default`)]),_:3},16)):h(`v-if`,!0)}}),Ue=a({inheritAttrs:!1,__name:`SelectItemText`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,n=Y(),r=Z(),i=ze(),{forwardRef:a,currentElement:o}=D(),s=m(()=>({value:i.value,disabled:i.disabled.value,textContent:o.value?.textContent??i.value?.toString()??``}));return C(()=>{o.value&&(i.onItemTextChange(o.value),r.itemTextRefCallback(o.value,i.value,i.disabled.value),n.onOptionAdd(s.value))}),v(()=>{n.onOptionRemove(s.value)}),(e,n)=>(O(),p(l(S),M({id:l(i).textId,ref:l(a)},{...t,...e.$attrs}),{default:P(()=>[w(e.$slots,`default`)]),_:3},16,[`id`]))}}),We=a({__name:`SelectPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(O(),p(l(ue),s(g(t)),{default:P(()=>[w(e.$slots,`default`)]),_:3},16))}}),Ge=a({__name:`SelectScrollButtonImpl`,emits:[`autoScroll`],setup(e,{emit:n}){let r=n,{getItems:i}=G(),a=Z(),o=t(null);function s(){o.value!==null&&(window.clearInterval(o.value),o.value=null)}_(()=>{i().map(e=>e.ref).find(e=>e===V())?.scrollIntoView({block:`nearest`})});function c(){o.value===null&&(o.value=window.setInterval(()=>{r(`autoScroll`)},50))}function u(){a.onItemLeave?.(),o.value===null&&(o.value=window.setInterval(()=>{r(`autoScroll`)},50))}return ee(()=>s()),(e,t)=>(O(),p(l(S),M({"aria-hidden":`true`,style:{flexShrink:0}},e.$parent?.$props,{onPointerdown:c,onPointermove:u,onPointerleave:t[0]||=()=>{s()}}),{default:P(()=>[w(e.$slots,`default`)]),_:3},16))}}),Ke=a({__name:`SelectScrollDownButton`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let n=Z(),r=n.position===`item-aligned`?$():void 0,{forwardRef:i,currentElement:a}=D(),o=t(!1);return _(e=>{if(n.viewport?.value&&n.isPositioned?.value){let t=n.viewport.value;function r(){let e=t.scrollHeight-t.clientHeight;o.value=Math.ceil(t.scrollTop)<e}r(),t.addEventListener(`scroll`,r),e(()=>t.removeEventListener(`scroll`,r))}}),x(a,()=>{a.value&&r?.onScrollButtonChange(a.value)}),(e,t)=>o.value?(O(),p(Ge,{key:0,ref:l(i),onAutoScroll:t[0]||=()=>{let{viewport:e,selectedItem:t}=l(n);e?.value&&t?.value&&(e.value.scrollTop=e.value.scrollTop+t.value.offsetHeight)}},{default:P(()=>[w(e.$slots,`default`)]),_:3},512)):h(`v-if`,!0)}}),qe=a({__name:`SelectScrollUpButton`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let n=Z(),r=n.position===`item-aligned`?$():void 0,{forwardRef:i,currentElement:a}=D(),o=t(!1);return _(e=>{if(n.viewport?.value&&n.isPositioned?.value){let t=n.viewport.value;function r(){o.value=t.scrollTop>0}r(),t.addEventListener(`scroll`,r),e(()=>t.removeEventListener(`scroll`,r))}}),x(a,()=>{a.value&&r?.onScrollButtonChange(a.value)}),(e,t)=>o.value?(O(),p(Ge,{key:0,ref:l(i),onAutoScroll:t[0]||=()=>{let{viewport:e,selectedItem:t}=l(n);e?.value&&t?.value&&(e.value.scrollTop=e.value.scrollTop-t.value.offsetHeight)}},{default:P(()=>[w(e.$slots,`default`)]),_:3},512)):h(`v-if`,!0)}}),Je=a({__name:`SelectTrigger`,props:{disabled:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,n=Y(),{forwardRef:r,currentElement:i}=D(),a=m(()=>n.disabled?.value||t.disabled);n.contentId||=I(void 0,`reka-select-content`),C(()=>{n.onTriggerChange(i.value)});let{getItems:o}=G(),{search:s,handleTypeaheadSearch:c,resetTypeahead:d}=K();function f(){a.value||(n.onOpenChange(!0),d())}function h(e){f(),n.triggerPointerDownPosRef.value={x:Math.round(e.pageX),y:Math.round(e.pageY)}}return(e,t)=>(O(),p(l(pe),{"as-child":``,reference:e.reference},{default:P(()=>[A(l(S),{ref:l(r),role:`combobox`,type:e.as===`button`?`button`:void 0,"aria-controls":l(n).contentId,"aria-expanded":l(n).open.value||!1,"aria-required":l(n).required?.value,"aria-autocomplete":`none`,disabled:a.value,dir:l(n)?.dir.value,"data-state":l(n)?.open.value?`open`:`closed`,"data-disabled":a.value?``:void 0,"data-placeholder":l(Ee)(l(n).modelValue?.value)?``:void 0,"as-child":e.asChild,as:e.as,onClick:t[0]||=e=>{(e?.currentTarget)?.focus()},onPointerdown:t[1]||=e=>{if(e.pointerType===`touch`)return e.preventDefault();let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&(h(e),e.preventDefault())},onPointerup:t[2]||=u(e=>{e.pointerType===`touch`&&h(e)},[`prevent`]),onKeydown:t[3]||=e=>{let t=l(s)!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&t&&e.key===` `||(l(c)(e.key,l(o)()),l(we).includes(e.key)&&(f(),e.preventDefault()))}},{default:P(()=>[w(e.$slots,`default`)]),_:3},8,[`type`,`aria-controls`,`aria-expanded`,`aria-required`,`disabled`,`dir`,`data-state`,`data-disabled`,`data-placeholder`,`as-child`,`as`])]),_:3},8,[`reference`]))}}),Ye=a({__name:`SelectValue`,props:{placeholder:{type:String,required:!1,default:``},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,{forwardRef:n,currentElement:r}=D(),i=Y();C(()=>{i.valueElement=r});let a=m(()=>{let e=[],t=Array.from(i.optionsSet.value),n=e=>t.find(t=>q(e,t.value,i.by));return e=Array.isArray(i.modelValue.value)?i.modelValue.value.map(e=>n(e)?.textContent??``):[n(i.modelValue.value)?.textContent??``],e.filter(Boolean)}),s=m(()=>a.value.length?a.value.join(`, `):t.placeholder);return(e,r)=>(O(),p(l(S),{ref:l(n),as:e.as,"as-child":e.asChild,style:{pointerEvents:`none`},"data-placeholder":a.value.length?void 0:t.placeholder},{default:P(()=>[w(e.$slots,`default`,{selectedLabel:a.value,modelValue:l(i).modelValue.value},()=>[o(ne(s.value),1)])]),_:3},8,[`as`,`as-child`,`data-placeholder`]))}}),Xe=a({__name:`SelectViewport`,props:{nonce:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let r=e,{nonce:i}=c(r),a=ge(i),s=Z(),u=s.position===`item-aligned`?$():void 0,{forwardRef:d,currentElement:f}=D();C(()=>{s?.onViewportChange(f.value)});let p=t(0);function m(e){let t=e.currentTarget,{shouldExpandOnScrollRef:n,contentWrapper:r}=u??{};if(n?.value&&r?.value){let e=Math.abs(p.value-t.scrollTop);if(e>0){let n=window.innerHeight-20,i=Number.parseFloat(r.value.style.minHeight),a=Number.parseFloat(r.value.style.height),o=Math.max(i,a);if(o<n){let i=o+e,a=Math.min(n,i),s=i-a;r.value.style.height=`${a}px`,r.value.style.bottom===`0px`&&(t.scrollTop=s>0?s:0,r.value.style.justifyContent=`flex-end`)}}}p.value=t.scrollTop}return(e,t)=>(O(),n(F,null,[A(l(S),M({ref:l(d),"data-reka-select-viewport":``,role:`presentation`},{...e.$attrs,...r},{style:{position:`relative`,flex:1,overflow:`hidden auto`},onScroll:m}),{default:P(()=>[w(e.$slots,`default`)]),_:3},16),A(l(S),{as:`style`,nonce:l(a)},{default:P(()=>t[0]||=[o(` /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-select-viewport] { scrollbar-width:none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } [data-reka-select-viewport]::-webkit-scrollbar { display: none; } `)]),_:1,__:[0]},8,[`nonce`])],64))}}),Ze=a({__name:`Select`,props:{open:{type:Boolean},defaultOpen:{type:Boolean},defaultValue:{},modelValue:{},by:{type:[String,Function]},dir:{},multiple:{type:Boolean},autocomplete:{},disabled:{type:Boolean},name:{},required:{type:Boolean}},emits:[`update:modelValue`,`update:open`],setup(e,{emit:t}){let n=B(e,t);return(e,t)=>(O(),p(l(Oe),M({"data-slot":`select`},l(n)),{default:P(t=>[w(e.$slots,`default`,s(g(t)))]),_:3},16))}}),Qe=a({inheritAttrs:!1,__name:`SelectContent`,props:{forceMount:{type:Boolean},position:{default:`item-aligned`},bodyLock:{type:Boolean},side:{},sideOffset:{},sideFlip:{type:Boolean},align:{default:`center`},alignOffset:{},alignFlip:{type:Boolean},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},hideShiftedArrow:{type:Boolean},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},disableUpdateOnLayoutShift:{type:Boolean},prioritizePosition:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},disableOutsidePointerEvents:{type:Boolean},class:{type:[Boolean,null,String,Object,Array]}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let n=e,r=t,a=B(N(n,`class`),r);return(t,r)=>(O(),p(l(We),null,{default:P(()=>[A(l(Le),M({"data-slot":`select-content`,"data-align-trigger":e.position===`item-aligned`},{...t.$attrs,...l(a)},{class:l(j)(`bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-lg shadow-md ring-1 duration-100 data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2 cn-menu-translucent relative z-dropdown max-h-(--reka-select-content-available-height) origin-(--reka-select-content-transform-origin) overflow-x-hidden overflow-y-auto data-[align-trigger=true]:animate-none`,e.position===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,n.class)}),{default:P(()=>[A(l(nt)),A(l(Xe),{"data-position":e.position,class:i(l(j)(`data-[position=popper]:h-[var(--reka-select-trigger-height)] data-[position=popper]:w-full data-[position=popper]:min-w-[var(--reka-select-trigger-width)]`))},{default:P(()=>[w(t.$slots,`default`)]),_:3},8,[`data-position`,`class`]),A(l(tt))]),_:3},16,[`data-align-trigger`,`class`])]),_:3}))}}),$e={class:`pointer-events-none absolute right-2 flex size-4 items-center justify-center`},et=a({__name:`SelectItem`,props:{value:{},disabled:{type:Boolean},textValue:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=L(N(t,`class`));return(e,i)=>(O(),p(l(Ve),M({"data-slot":`select-item`},l(n),{class:l(j)(`focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm [&_svg:not([class*=size-])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0`,t.class)}),{default:P(()=>[r(`span`,$e,[A(l(He),null,{default:P(()=>[w(e.$slots,`indicator-icon`,{},()=>[A(l(de),{class:`pointer-events-none`})])]),_:3})]),A(l(Ue),null,{default:P(()=>[w(e.$slots,`default`)]),_:3})]),_:3},16,[`class`]))}}),tt=a({__name:`SelectScrollDownButton`,props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=L(N(t,`class`));return(e,r)=>(O(),p(l(Ke),M({"data-slot":`select-scroll-down-button`},l(n),{class:l(j)(`bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*=size-])]:size-4`,t.class)}),{default:P(()=>[w(e.$slots,`default`,{},()=>[A(l(U))])]),_:3},16,[`class`]))}}),nt=a({__name:`SelectScrollUpButton`,props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=L(N(t,`class`));return(e,r)=>(O(),p(l(qe),M({"data-slot":`select-scroll-up-button`},l(n),{class:l(j)(`bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*=size-])]:size-4`,t.class)}),{default:P(()=>[w(e.$slots,`default`,{},()=>[A(l(xe))])]),_:3},16,[`class`]))}}),rt=a({__name:`SelectTrigger`,props:{disabled:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]},size:{default:`default`}},setup(e){let t=e,n=L(N(t,`class`,`size`));return(r,i)=>(O(),p(l(Je),M({"data-slot":`select-trigger`,"data-size":e.size},l(n),{class:l(j)(`border-input data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-lg border bg-transparent py-2 pr-2 pl-2.5 text-sm transition-colors select-none focus-visible:ring-3 aria-invalid:ring-3 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-md *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*=size-])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0`,t.class)}),{default:P(()=>[w(r.$slots,`default`),A(l(Re),{"as-child":``},{default:P(()=>[A(l(U),{class:`text-muted-foreground size-4 pointer-events-none`})]),_:1})]),_:3},16,[`data-size`,`class`]))}}),it=a({__name:`SelectValue`,props:{placeholder:{},asChild:{type:Boolean},as:{}},setup(e){let t=e;return(e,n)=>(O(),p(l(Ye),M({"data-slot":`select-value`},t),{default:P(()=>[w(e.$slots,`default`)]),_:3},16))}});export{Ze as a,Qe as i,rt as n,et as r,it as t};
@@ -1,6 +0,0 @@
1
- import{A as e,Ct as t,Dt as n,G as r,H as i,J as a,K as o,Pt as s,Rt as c,U as l,V as u,W as d,ct as ee,gt as f,i as p,it as te,k as m,lt as h,m as g,n as _,nt as v,o as y,ot as b,q as x,r as S,tt as C,x as w,yt as T,z as E,zt as D}from"./button-Ul8WlrM5.js";import{b as O,g as k,y as A}from"./Teleport-DizRK5O3.js";import{a as ne,c as re,i as ie,n as j,o as ae,r as oe,s as se,t as ce}from"./alert-dialog-DlKUuTPe.js";import{t as M}from"./Label-DWdYtVMI.js";import{n as N}from"./lib-Hhs3NqfD.js";import{t as P}from"./Input-CAnKUBBK.js";import{t as F}from"./useLogRetention-BfnBFZ5K.js";var I=O(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]),L=O(`hard-drive`,[[`path`,{d:`M10 16h.01`,key:`1bzywj`}],[`path`,{d:`M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`18tbho`}],[`path`,{d:`M21.946 12.013H2.054`,key:`zqlbp7`}],[`path`,{d:`M6 16h.01`,key:`1pmjb7`}]]),le=O(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),R=100,[z,B]=A(`ProgressRoot`),V=e=>typeof e==`number`;function H(e,t){return k(e)||V(e)&&!Number.isNaN(e)&&e<=t&&e>=0?e:(console.error(`Invalid prop \`value\` of value \`${e}\` supplied to \`ProgressRoot\`. The \`value\` prop must be:
2
- - a positive number
3
- - less than the value passed to \`max\` (or ${R} if no \`max\` prop is set)
4
- - \`null\` or \`undefined\` if the progress is indeterminate.
5
-
6
- Defaulting to \`null\`.`),null)}function U(e){return V(e)&&!Number.isNaN(e)&&e>0?e:(console.error(`Invalid prop \`max\` of value \`${e}\` supplied to \`ProgressRoot\`. Only numbers greater than 0 are valid max values. Defaulting to \`${R}\`.`),R)}var W=a({__name:`ProgressRoot`,props:{modelValue:{type:[Number,null],required:!1},max:{type:Number,required:!1,default:R},getValueLabel:{type:Function,required:!1,default:(e,t)=>V(e)?`${Math.round(e/t*R)}%`:void 0},getValueText:{type:Function,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:modelValue`,`update:max`],setup(e,{emit:t}){let n=e,r=t;y();let i=g(n,`modelValue`,r,{passive:n.modelValue===void 0}),a=g(n,`max`,r,{passive:n.max===void 0});f(()=>i.value,async e=>{let t=H(e,n.max);t!==e&&(await v(),i.value=t)},{immediate:!0}),f(()=>n.max,e=>{let t=U(n.max);t!==e&&(a.value=t)},{immediate:!0});let o=u(()=>k(i.value)?`indeterminate`:i.value===a.value?`complete`:`loading`);return B({modelValue:i,max:a,progressState:o}),(e,t)=>(b(),l(s(p),{"as-child":e.asChild,as:e.as,"aria-valuemax":s(a),"aria-valuemin":0,"aria-valuenow":V(s(i))?s(i):void 0,"aria-valuetext":e.getValueText?.(s(i),s(a)),"aria-label":e.getValueLabel(s(i),s(a)),role:`progressbar`,"data-state":o.value,"data-value":s(i)??void 0,"data-max":s(a)},{default:T(()=>[h(e.$slots,`default`,{modelValue:s(i)})]),_:3},8,[`as-child`,`as`,`aria-valuemax`,`aria-valuenow`,`aria-valuetext`,`aria-label`,`data-state`,`data-value`,`data-max`]))}}),G=a({__name:`ProgressIndicator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,n=z();return y(),(e,r)=>(b(),l(s(p),C(t,{"data-state":s(n).progressState.value,"data-value":s(n).modelValue?.value??void 0,"data-max":s(n).max.value}),{default:T(()=>[h(e.$slots,`default`)]),_:3},16,[`data-state`,`data-value`,`data-max`]))}}),K=a({__name:`Progress`,props:{modelValue:{default:0},max:{},getValueLabel:{},getValueText:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=w(t,`class`);return(e,r)=>(b(),l(s(W),C({"data-slot":`progress`},s(n),{class:s(S)(`bg-muted h-1 rounded-full relative flex w-full items-center overflow-x-hidden`,t.class)}),{default:T(()=>[x(s(G),{"data-slot":`progress-indicator`,class:`bg-primary size-full flex-1 transition-all`,style:c(`transform: translateX(-${100-(t.modelValue??0)}%);`)},null,8,[`style`])]),_:1},16,[`class`]))}}),ue={class:`p-6 space-y-6`},de={class:`bg-card rounded-lg border p-4 space-y-3`},fe={class:`flex items-end gap-4`},pe={class:`space-y-1`},me={key:0,class:`text-sm text-destructive mt-1`},he={class:`bg-card rounded-lg border p-4 space-y-4`},ge={class:`font-medium text-sm text-foreground flex items-center gap-2`},_e={class:`space-y-1`},ve={class:`flex justify-between text-sm`},ye={class:`text-muted-foreground`},be={class:`space-y-1`},xe={class:`flex justify-between text-sm`},q={class:`text-muted-foreground`},Se={class:`space-y-1`},Ce={class:`flex justify-between text-sm`},we={class:`text-muted-foreground`},Te={key:0,class:`text-xs text-muted-foreground`},Ee={class:`grid grid-cols-2 gap-4 pt-3 border-t`},De={class:`space-y-1`},Oe={key:0,class:`text-sm text-destructive mt-1`},ke={class:`space-y-1`},Ae={key:0,class:`text-sm text-destructive mt-1`},je={class:`bg-card rounded-lg border p-4 space-y-3`},Me={class:`flex gap-3`},Ne={key:0,class:`text-sm space-y-1 p-3 bg-muted rounded-md`},J=1048576,Y=1024,X=100,Pe=2,Fe=10,Z=0,Q=90,$=1,Ie=1024,Le=800,Re=a({__name:`Settings`,setup(a){let{retentionDays:c,saveRetention:l}=F(),u=n(null),f=n(Ie),p=n(Le),h=n(!1),g=n(!1),v=n(null),y=n(!1),S=n(null),C=n(),w=n(``),O=n(``),k=n(``);function A(e){if(e===0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`],n=Math.min(Math.floor(Math.log(e)/Math.log(Y)),t.length-1);return`${(e/Y**+n).toFixed(1)} ${t[n]}`}async function R(){h.value=!0;try{let[e,t]=await Promise.allSettled([m.getDbSizeInfo(),m.getLogRetention()]);e.status===`fulfilled`&&(u.value=e.value,f.value=e.value.thresholds.dbMaxSizeMb,p.value=e.value.thresholds.logTableMaxSizeMb),t.status===`fulfilled`&&(c.value=t.value.days)}finally{h.value=!1}}function z(){w.value=``;let e=c.value;return Number.isInteger(e)?e<Z||e>Q?(w.value=`请输入 ${Z}-${Q} 之间的整数`,!1):!0:(w.value=`请输入整数`,!1)}async function B(){z()&&await l()}function V(){O.value=``,k.value=``;let e=!0;return(!Number.isFinite(f.value)||f.value<$)&&(O.value=`请输入不小于 ${$} 的数值`,e=!1),(!Number.isFinite(p.value)||p.value<$)&&(k.value=`请输入不小于 ${$} 的数值`,e=!1),e&&p.value>f.value&&(k.value=`日志表上限不应超过数据库上限`,e=!1),e}async function H(){if(V())try{let e=await m.setDbSizeThresholds({dbMaxSizeMb:f.value,logTableMaxSizeMb:p.value});f.value=e.dbMaxSizeMb,p.value=e.logTableMaxSizeMb,N.success(`存储阈值已更新`),await R()}catch(t){N.error(e(t,`更新失败`))}}async function U(){try{let e=await m.exportConfig(),t=new Blob([JSON.stringify(e,null,Pe)],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`router-config-${new Date().toISOString().slice(0,Fe)}.json`,r.click(),URL.revokeObjectURL(n),N.success(`配置已导出`)}catch(t){N.error(e(t,`导出失败`))}}function W(e){let t=e.target,n=t.files?.[0];if(!n)return;let r=new FileReader;r.onload=()=>{try{let e=JSON.parse(r.result);if(!e.version||e.version!==1){N.error(`不支持的配置文件版本`);return}S.value=e,y.value=!0}catch{N.error(`无效的 JSON 文件`)}},r.readAsText(n),t.value=``}async function G(){if(S.value){g.value=!0;try{v.value=await m.importConfig(S.value),y.value=!1,N.success(`配置已导入`),await R()}catch(t){N.error(e(t,`导入失败`))}finally{g.value=!1,S.value=null}}}return te(R),(e,n)=>(b(),r(`div`,ue,[n[27]||=i(`h2`,{class:`text-lg font-semibold text-foreground`},`系统设置`,-1),i(`div`,de,[n[10]||=i(`h3`,{class:`font-medium text-sm text-foreground`},`日志保留策略`,-1),n[11]||=i(`p`,{class:`text-sm text-muted-foreground`},`超过保留天数的日志将被自动清理`,-1),i(`div`,fe,[i(`div`,pe,[x(s(M),{for:`retention-days`},{default:T(()=>[...n[8]||=[o(`保留天数`,-1)]]),_:1}),x(s(P),{id:`retention-days`,modelValue:s(c),"onUpdate:modelValue":n[0]||=e=>t(c)?c.value=e:null,modelModifiers:{number:!0},type:`number`,min:Z,max:Q,class:`w-32`,onInput:n[1]||=e=>w.value=``},null,8,[`modelValue`]),w.value?(b(),r(`p`,me,D(w.value),1)):d(``,!0)]),x(s(_),{size:`sm`,disabled:h.value,onClick:B},{default:T(()=>[...n[9]||=[o(`保存`,-1)]]),_:1},8,[`disabled`])])]),i(`div`,he,[i(`h3`,ge,[x(s(L),{class:`h-4 w-4`}),n[12]||=o(` 存储管理 `,-1)]),n[18]||=i(`p`,{class:`text-sm text-muted-foreground`},`监控数据库大小并配置自动清理阈值`,-1),u.value?(b(),r(E,{key:0},[i(`div`,_e,[i(`div`,ve,[n[13]||=i(`span`,null,`数据库总大小`,-1),i(`span`,ye,D(A(u.value.totalBytes))+` / `+D(f.value)+` MB `,1)]),x(s(K),{"model-value":Math.min(X,u.value.totalBytes/(f.value*J)*X)},null,8,[`model-value`])]),i(`div`,be,[i(`div`,xe,[i(`span`,null,`请求日志大小 (`+D(u.value.logCount)+` 条)`,1),i(`span`,q,D(A(u.value.logTableBytes))+` / `+D(p.value)+` MB `,1)]),x(s(K),{"model-value":Math.min(X,u.value.logTableBytes/(p.value*J)*X)},null,8,[`model-value`])]),i(`div`,Se,[i(`div`,Ce,[n[14]||=i(`span`,null,`日志文件大小`,-1),i(`span`,we,D(A(u.value.logFileBytes??0)),1)])]),u.value.lastChecked?(b(),r(`p`,Te,` 上次检查:`+D(u.value.lastChecked),1)):d(``,!0)],64)):d(``,!0),i(`div`,Ee,[i(`div`,De,[x(s(M),{for:`db-max-size`},{default:T(()=>[...n[15]||=[o(`数据库大小上限 (MB)`,-1)]]),_:1}),x(s(P),{id:`db-max-size`,modelValue:f.value,"onUpdate:modelValue":n[2]||=e=>f.value=e,modelModifiers:{number:!0},type:`number`,min:$,onInput:n[3]||=e=>O.value=``},null,8,[`modelValue`]),O.value?(b(),r(`p`,Oe,D(O.value),1)):d(``,!0)]),i(`div`,ke,[x(s(M),{for:`log-max-size`},{default:T(()=>[...n[16]||=[o(`日志表大小上限 (MB)`,-1)]]),_:1}),x(s(P),{id:`log-max-size`,modelValue:p.value,"onUpdate:modelValue":n[4]||=e=>p.value=e,modelModifiers:{number:!0},type:`number`,min:$,onInput:n[5]||=e=>k.value=``},null,8,[`modelValue`]),k.value?(b(),r(`p`,Ae,D(k.value),1)):d(``,!0)])]),x(s(_),{size:`sm`,disabled:h.value,onClick:H},{default:T(()=>[...n[17]||=[o(`保存阈值`,-1)]]),_:1},8,[`disabled`])]),i(`div`,je,[n[22]||=i(`h3`,{class:`font-medium text-sm text-foreground`},`配置导入导出`,-1),n[23]||=i(`p`,{class:`text-sm text-muted-foreground`},`导出当前配置或从文件恢复`,-1),i(`div`,Me,[x(s(_),{variant:`outline`,size:`sm`,disabled:h.value,onClick:U},{default:T(()=>[x(s(I),{class:`mr-2 h-4 w-4`}),n[19]||=o(` 导出配置 `,-1)]),_:1},8,[`disabled`]),x(s(_),{variant:`outline`,size:`sm`,disabled:h.value,onClick:n[6]||=e=>C.value?.click()},{default:T(()=>[x(s(le),{class:`mr-2 h-4 w-4`}),n[20]||=o(` 导入配置 `,-1)]),_:1},8,[`disabled`]),i(`input`,{ref_key:`fileInput`,ref:C,type:`file`,accept:`.json`,class:`hidden`,onChange:W},null,544)]),v.value?(b(),r(`div`,Ne,[n[21]||=i(`p`,{class:`font-medium`},`导入完成:`,-1),(b(!0),r(E,null,ee(v.value,(e,t)=>(b(),r(`p`,{key:t},D(t)+`: `+D(e)+` 条 `,1))),128))])):d(``,!0)]),x(s(re),{open:y.value,"onUpdate:open":n[7]||=e=>y.value=e},{default:T(()=>[x(s(ne),null,{default:T(()=>[x(s(j),null,{default:T(()=>[x(s(ce),null,{default:T(()=>[...n[24]||=[o(`确认导入配置`,-1)]]),_:1}),x(s(ie),null,{default:T(()=>[...n[25]||=[o(` 导入将覆盖当前的供应商、映射、密钥等配置。安全设置(密码、JWT)将保留不变。 此操作不可撤销。 `,-1)]]),_:1})]),_:1}),x(s(oe),null,{default:T(()=>[x(s(ae),{disabled:g.value},{default:T(()=>[...n[26]||=[o(`取消`,-1)]]),_:1},8,[`disabled`]),x(s(se),{disabled:g.value,onClick:G},{default:T(()=>[o(D(g.value?`导入中...`:`确认导入`),1)]),_:1},8,[`disabled`])]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{Re as default};
@@ -1 +0,0 @@
1
- import{A as e,Dt as t,G as n,H as r,J as i,K as a,N as o,Pt as s,R as c,W as l,k as u,n as d,ot as f,q as p,yt as m,zt as h}from"./button-Ul8WlrM5.js";import{t as g}from"./Label-DWdYtVMI.js";import{n as _,t as v}from"./CardContent-BVMQ2_pg.js";import{t as y}from"./Input-CAnKUBBK.js";var b={class:`min-h-screen flex items-center justify-center bg-background`},x={key:0,class:`text-destructive text-sm`},S=i({__name:`Setup`,setup(i){let S=o(),C=t(``),w=t(``),T=t(``),E=t(!1);async function D(){if(!C.value||!w.value){T.value=`请输入密码`;return}if(C.value!==w.value){T.value=`两次密码不一致`;return}if(C.value.length<6){T.value=`密码至少 6 位`;return}T.value=``,E.value=!0;try{await u.initializeSetup(C.value),S.push(`/admin/dashboard`)}catch(t){T.value=e(t,`设置失败`)}finally{E.value=!1}}return(e,t)=>(f(),n(`div`,b,[p(s(_),{class:`w-full max-w-sm shadow-lg`},{default:m(()=>[p(s(v),{class:`pt-6`},{default:m(()=>[t[4]||=r(`div`,{class:`text-center mb-6`},[r(`div`,{class:`w-12 h-12 bg-primary rounded-lg mx-auto mb-3 flex items-center justify-center`},[r(`svg`,{class:`w-7 h-7 text-white`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[r(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z`})])]),r(`h1`,{class:`text-xl font-semibold text-foreground`},`LLM Simple Router`),r(`p`,{class:`text-sm text-muted-foreground mt-1`},`初始设置 — 设置管理员密码`)],-1),r(`form`,{onSubmit:c(D,[`prevent`]),class:`space-y-4`},[r(`div`,null,[p(s(g),{class:`block text-sm font-medium text-foreground mb-1`},{default:m(()=>[...t[2]||=[a(`密码`,-1)]]),_:1}),p(s(y),{modelValue:C.value,"onUpdate:modelValue":t[0]||=e=>C.value=e,type:`password`,placeholder:`至少 6 位`,disabled:E.value},null,8,[`modelValue`,`disabled`])]),r(`div`,null,[p(s(g),{class:`block text-sm font-medium text-foreground mb-1`},{default:m(()=>[...t[3]||=[a(`确认密码`,-1)]]),_:1}),p(s(y),{modelValue:w.value,"onUpdate:modelValue":t[1]||=e=>w.value=e,type:`password`,placeholder:`再次输入密码`,disabled:E.value},null,8,[`modelValue`,`disabled`])]),T.value?(f(),n(`p`,x,h(T.value),1)):l(``,!0),p(s(d),{type:`submit`,class:`w-full`,disabled:E.value},{default:m(()=>[a(h(E.value?`设置中...`:`完成设置`),1)]),_:1},8,[`disabled`])],32)]),_:1})]),_:1})]))}});export{S as default};
@@ -1 +0,0 @@
1
- import{J as e,L as t,Lt as n,Mt as r,Pt as i,R as a,U as o,V as s,W as c,X as l,i as u,lt as d,m as f,o as p,ot as m,q as h,r as g,tt as _,x as v,yt as y}from"./button-Ul8WlrM5.js";import{u as b,y as x}from"./Teleport-DizRK5O3.js";import{t as S}from"./useFormControl-DEO19lRe.js";import{t as C}from"./VisuallyHiddenInput-DdiZrV2i.js";var[w,T]=x(`SwitchRoot`),E=e({__name:`SwitchRoot`,props:{defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},disabled:{type:Boolean,required:!1},id:{type:String,required:!1},value:{type:String,required:!1,default:`on`},trueValue:{type:null,required:!1,default:()=>!0},falseValue:{type:null,required:!1,default:()=>!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:[`update:modelValue`],setup(e,{emit:n}){let l=e,h=n,{disabled:g}=r(l),v=f(l,`modelValue`,h,{defaultValue:l.defaultValue??l.falseValue,passive:l.modelValue===void 0}),b=s(()=>v.value===l.trueValue);function x(){g.value||(v.value=b.value?l.falseValue:l.trueValue)}let{forwardRef:w,currentElement:E}=p(),D=S(E),O=s(()=>l.id&&E.value?document.querySelector(`[for="${l.id}"]`)?.innerText:void 0);return T({checked:b,toggleCheck:x,disabled:g}),(e,n)=>(m(),o(i(u),_(e.$attrs,{id:e.id,ref:i(w),role:`switch`,type:e.as===`button`?`button`:void 0,value:e.value,"aria-label":e.$attrs[`aria-label`]||O.value,"aria-checked":b.value,"aria-required":e.required,"data-state":b.value?`checked`:`unchecked`,"data-disabled":i(g)?``:void 0,"as-child":e.asChild,as:e.as,disabled:i(g),onClick:x,onKeydown:t(a(x,[`prevent`]),[`enter`])}),{default:y(()=>[d(e.$slots,`default`,{modelValue:i(v),checked:b.value}),i(D)&&e.name?(m(),o(i(C),{key:0,type:`checkbox`,name:e.name,disabled:i(g),required:e.required,value:e.value,checked:b.value},null,8,[`name`,`disabled`,`required`,`value`,`checked`])):c(`v-if`,!0)]),_:3},16,[`id`,`type`,`value`,`aria-label`,`aria-checked`,`aria-required`,`data-state`,`data-disabled`,`as-child`,`as`,`disabled`,`onKeydown`]))}}),D=e({__name:`SwitchThumb`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=w();return p(),(e,n)=>(m(),o(i(u),{"data-state":i(t).checked.value?`checked`:`unchecked`,"data-disabled":i(t).disabled.value?``:void 0,"as-child":e.asChild,as:e.as},{default:y(()=>[d(e.$slots,`default`)]),_:3},8,[`data-state`,`data-disabled`,`as-child`,`as`]))}}),O=e({__name:`Switch`,props:{defaultValue:{},modelValue:{},disabled:{type:Boolean},id:{},value:{},trueValue:{},falseValue:{},asChild:{type:Boolean},as:{},name:{},required:{type:Boolean},class:{type:[Boolean,null,String,Object,Array]},size:{default:`default`}},emits:[`update:modelValue`],setup(e,{emit:t}){let r=e,a=t,s=b(v(r,`class`,`size`),a);return(t,a)=>(m(),o(i(E),_({"data-slot":`switch`,"data-size":e.size},i(s),{class:i(g)(`data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 dark:data-[state=unchecked]:bg-input/80 shrink-0 rounded-full border border-transparent focus-visible:ring-3 aria-invalid:ring-3 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] peer group/switch relative inline-flex items-center transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50`,r.class)}),{default:y(e=>[h(i(D),{"data-slot":`switch-thumb`,class:`bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground rounded-full group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-[state=checked]:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-[state=checked]:translate-x-[calc(100%-2px)] group-data-[size=default]/switch:data-[state=unchecked]:translate-x-0 group-data-[size=sm]/switch:data-[state=unchecked]:translate-x-0 pointer-events-none block ring-0 transition-transform`},{default:y(()=>[d(t.$slots,`thumb`,n(l(e)))]),_:2},1024)]),_:3},16,[`data-size`,`class`]))}});export{O as t};
@@ -1 +0,0 @@
1
- import{G as e,H as t,It as n,J as r,Pt as i,lt as a,ot as o,r as s}from"./button-Ul8WlrM5.js";var c={"data-slot":`table-container`,class:`relative w-full overflow-x-auto`},l=r({__name:`Table`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(r){let l=r;return(r,u)=>(o(),e(`div`,c,[t(`table`,{"data-slot":`table`,class:n(i(s)(`w-full caption-bottom text-sm`,l.class))},[a(r.$slots,`default`)],2)]))}}),u=r({__name:`TableBody`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(t){let r=t;return(t,c)=>(o(),e(`tbody`,{"data-slot":`table-body`,class:n(i(s)(`[&_tr:last-child]:border-0`,r.class))},[a(t.$slots,`default`)],2))}}),d=r({__name:`TableCell`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(t){let r=t;return(t,c)=>(o(),e(`td`,{"data-slot":`table-cell`,class:n(i(s)(`p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0`,r.class))},[a(t.$slots,`default`)],2))}}),f=r({__name:`TableRow`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(t){let r=t;return(t,c)=>(o(),e(`tr`,{"data-slot":`table-row`,class:n(i(s)(`hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors has-aria-expanded:bg-muted/50`,r.class))},[a(t.$slots,`default`)],2))}}),p=r({__name:`TableHead`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(t){let r=t;return(t,c)=>(o(),e(`th`,{"data-slot":`table-head`,class:n(i(s)(`text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0`,r.class))},[a(t.$slots,`default`)],2))}}),m=r({__name:`TableHeader`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(t){let r=t;return(t,c)=>(o(),e(`thead`,{"data-slot":`table-header`,class:n(i(s)(`[&_tr]:border-b`,r.class))},[a(t.$slots,`default`)],2))}});export{u as a,d as i,p as n,l as o,f as r,m as t};
@@ -1 +0,0 @@
1
- import{Dt as e,J as t,L as n,Lt as r,Mt as i,Pt as a,R as o,U as s,V as c,X as l,i as u,kt as d,lt as f,m as p,o as m,ot as h,q as g,r as _,tt as v,x as y,yt as b}from"./button-Ul8WlrM5.js";import{c as x,d as S,u as C,y as w}from"./Teleport-DizRK5O3.js";import{r as T}from"./Collection-BRt7YxN8.js";import{n as E,t as D}from"./RovingFocusItem-CXM_Yfkm.js";var[O,k]=w(`TabsRoot`),A=t({__name:`TabsRoot`,props:{defaultValue:{type:null,required:!1},orientation:{type:String,required:!1,default:`horizontal`},dir:{type:String,required:!1},activationMode:{type:String,required:!1,default:`automatic`},modelValue:{type:null,required:!1},unmountOnHide:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:modelValue`],setup(t,{emit:n}){let r=t,o=n,{orientation:c,unmountOnHide:l,dir:g}=i(r),_=T(g);m();let v=p(r,`modelValue`,o,{defaultValue:r.defaultValue,passive:r.modelValue===void 0}),y=e(),S=d(new Set);return k({modelValue:v,changeModelValue:e=>{v.value=e},orientation:c,dir:_,unmountOnHide:l,activationMode:r.activationMode,baseId:x(void 0,`reka-tabs`),tabsList:y,contentIds:S,registerContent:e=>{S.value=new Set([...S.value,e])},unregisterContent:e=>{let t=new Set(S.value);t.delete(e),S.value=t}}),(e,t)=>(h(),s(a(u),{dir:a(_),"data-orientation":a(c),"as-child":e.asChild,as:e.as},{default:b(()=>[f(e.$slots,`default`,{modelValue:a(v)})]),_:3},8,[`dir`,`data-orientation`,`as-child`,`as`]))}});function j(e,t){return`${e}-trigger-${t}`}function M(e,t){return`${e}-content-${t}`}var N=t({__name:`TabsList`,props:{loop:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let{loop:t}=i(e),{forwardRef:n,currentElement:r}=m(),o=O();return o.tabsList=r,(e,r)=>(h(),s(a(E),{"as-child":``,orientation:a(o).orientation.value,dir:a(o).dir.value,loop:a(t)},{default:b(()=>[g(a(u),{ref:a(n),role:`tablist`,"as-child":e.asChild,as:e.as,"aria-orientation":a(o).orientation.value},{default:b(()=>[f(e.$slots,`default`)]),_:3},8,[`as-child`,`as`,`aria-orientation`])]),_:3},8,[`orientation`,`dir`,`loop`]))}}),P=t({__name:`TabsTrigger`,props:{value:{type:[String,Number],required:!0},disabled:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,{forwardRef:r}=m(),i=O(),l=c(()=>j(i.baseId,t.value)),d=c(()=>i.contentIds.value.has(t.value)?M(i.baseId,t.value):void 0),p=c(()=>t.value===i.modelValue.value);return(e,t)=>(h(),s(a(D),{"as-child":``,focusable:!e.disabled,active:p.value},{default:b(()=>[g(a(u),{id:l.value,ref:a(r),role:`tab`,type:e.as===`button`?`button`:void 0,as:e.as,"as-child":e.asChild,"aria-selected":p.value?`true`:`false`,"aria-controls":d.value,"data-state":p.value?`active`:`inactive`,disabled:e.disabled,"data-disabled":e.disabled?``:void 0,"data-orientation":a(i).orientation.value,onMousedown:t[0]||=o(t=>{!e.disabled&&t.ctrlKey===!1?a(i).changeModelValue(e.value):t.preventDefault()},[`left`]),onKeydown:t[1]||=n(t=>a(i).changeModelValue(e.value),[`enter`,`space`]),onFocus:t[2]||=()=>{let t=a(i).activationMode!==`manual`;!p.value&&!e.disabled&&t&&a(i).changeModelValue(e.value)}},{default:b(()=>[f(e.$slots,`default`)]),_:3},8,[`id`,`type`,`as`,`as-child`,`aria-selected`,`aria-controls`,`data-state`,`disabled`,`data-disabled`,`data-orientation`])]),_:3},8,[`focusable`,`active`]))}}),F=t({__name:`Tabs`,props:{defaultValue:{},orientation:{},dir:{},activationMode:{},modelValue:{},unmountOnHide:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,i=t,o=C(y(n,`class`),i);return(e,t)=>(h(),s(a(A),v({"data-slot":`tabs`,"data-orientation":a(o).orientation||`horizontal`},a(o),{class:a(_)(`gap-2 group/tabs flex data-[orientation=horizontal]:flex-col`,n.class)}),{default:b(t=>[f(e.$slots,`default`,r(l(t)))]),_:3},16,[`data-orientation`,`class`]))}}),I=t({__name:`TabsList`,props:{loop:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]},variant:{default:`default`}},setup(e){let t=e,n=y(t,`class`,`variant`);return(r,i)=>(h(),s(a(N),v({"data-slot":`tabs-list`,"data-variant":e.variant},a(n),{class:a(_)(`rounded-lg p-[3px] group-data-[orientation=horizontal]/tabs:h-8 data-[variant=line]:rounded-none group/tabs-list inline-flex w-fit items-center justify-center text-muted-foreground group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col`,e.variant===`default`&&`bg-muted`,e.variant===`line`&&`gap-1 bg-transparent`,t.class)}),{default:b(()=>[f(r.$slots,`default`)]),_:3},16,[`data-variant`,`class`]))}}),L=t({__name:`TabsTrigger`,props:{value:{},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=S(y(t,`class`));return(e,r)=>(h(),s(a(P),v({"data-slot":`tabs-trigger`,class:a(_)(`gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none [&_svg:not([class*=size-])]:size-4 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap text-foreground/60 transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0`,`group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent`,`data-[state=active]:bg-background data-[state=active]:text-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:data-[state=active]:text-foreground`,`after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100`,t.class)},a(n)),{default:b(()=>[f(e.$slots,`default`)]),_:3},16,[`class`]))}});export{j as a,M as i,I as n,O as o,F as r,L as t};