llm-simple-router 1.0.2 → 1.0.3

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 (67) hide show
  1. package/dist/admin/logs.js +6 -17
  2. package/dist/db/index.d.ts +1 -1
  3. package/dist/db/index.js +1 -1
  4. package/dist/db/logs.d.ts +3 -0
  5. package/dist/db/logs.js +24 -15
  6. package/dist/db/migrations/053_add_thinking_level.sql +6 -0
  7. package/dist/proxy/orchestration/orchestrator.d.ts +1 -3
  8. package/dist/proxy/orchestration/orchestrator.js +3 -20
  9. package/dist/storage/log-file-compressor.d.ts +1 -1
  10. package/dist/storage/log-file-compressor.js +55 -13
  11. package/dist/storage/log-file-writer.d.ts +18 -8
  12. package/dist/storage/log-file-writer.js +85 -67
  13. package/frontend-dist/assets/{AuthLayout-Dkh-09Aq.js → AuthLayout-DJpHK4zg.js} +1 -1
  14. package/frontend-dist/assets/{Card-OdDwacfm.js → Card-UQRcFVIJ.js} +1 -1
  15. package/frontend-dist/assets/{CardContent-B4x52Duv.js → CardContent-BAoEyF8W.js} +1 -1
  16. package/frontend-dist/assets/{CardTitle-DtDJrCKi.js → CardTitle-C17xy1UE.js} +1 -1
  17. package/frontend-dist/assets/{CascadingModelSelect-C24zXMec.js → CascadingModelSelect-B7DWy49d.js} +1 -1
  18. package/frontend-dist/assets/{Checkbox-BVu9v787.js → Checkbox-CA9kxtM4.js} +1 -1
  19. package/frontend-dist/assets/{CollapsibleContent-C4J8A1Ja.js → CollapsibleContent-DZ_tKZag.js} +1 -1
  20. package/frontend-dist/assets/{CollapsibleTrigger-xl22mqUU.js → CollapsibleTrigger-D0vBT2Sj.js} +1 -1
  21. package/frontend-dist/assets/{ConcurrencyControl-B4mp9THM.js → ConcurrencyControl-CDE26lBY.js} +1 -1
  22. package/frontend-dist/assets/{Dashboard-CctyCSwX.js → Dashboard-C76VbHuV.js} +1 -1
  23. package/frontend-dist/assets/{Input-BpmvwfP9.js → Input-DVGxkxMa.js} +1 -1
  24. package/frontend-dist/assets/{Label-BhSGa_Tn.js → Label-DmDoAc6v.js} +1 -1
  25. package/frontend-dist/assets/{Login-BiAgsGJ2.js → Login-BVzfnnaV.js} +1 -1
  26. package/frontend-dist/assets/{Logs-B3MOY5K8.js → Logs-BgqV0EzH.js} +1 -1
  27. package/frontend-dist/assets/{ModelMappings-DaBqO3P4.js → ModelMappings-SzL2HgTF.js} +1 -1
  28. package/frontend-dist/assets/{Monitor-KfN48PKH.js → Monitor-DvbHOUCu.js} +1 -1
  29. package/frontend-dist/assets/{Providers-nfdA-OUk.js → Providers-BlRumKs2.js} +1 -1
  30. package/frontend-dist/assets/{ProxyEnhancement-BpnCqymD.js → ProxyEnhancement-CqHCE0Z9.js} +1 -1
  31. package/frontend-dist/assets/{QuickSetup-SZP_nB_J.js → QuickSetup-BRpaaWd_.js} +1 -1
  32. package/frontend-dist/assets/{RetryRules-C804Zx8z.js → RetryRules-CuaT6dGn.js} +1 -1
  33. package/frontend-dist/assets/{RouterKeys-B3j42rkK.js → RouterKeys-q-Rpw38m.js} +1 -1
  34. package/frontend-dist/assets/{RovingFocusItem-G3DvDUr1.js → RovingFocusItem-DGbuxMV2.js} +1 -1
  35. package/frontend-dist/assets/{Schedules-GZPRQV_6.js → Schedules-DZNqzhCO.js} +1 -1
  36. package/frontend-dist/assets/{Settings-DGW5M9RJ.js → Settings-kDdudQD_.js} +1 -1
  37. package/frontend-dist/assets/{Setup-Cil55gRl.js → Setup-D5q2knV8.js} +1 -1
  38. package/frontend-dist/assets/{Skeleton-DpZH_Vpn.js → Skeleton-D38oyO3p.js} +1 -1
  39. package/frontend-dist/assets/{Switch-BG35vWEq.js → Switch-DKdPLHJ3.js} +1 -1
  40. package/frontend-dist/assets/{TableHeader-_3-h6u2u.js → TableHeader-DZah46vy.js} +1 -1
  41. package/frontend-dist/assets/{TabsTrigger-yGl-ocCE.js → TabsTrigger-DuyzIvA6.js} +1 -1
  42. package/frontend-dist/assets/{TooltipTrigger-BIrArn-i.js → TooltipTrigger-CjwFSriE.js} +1 -1
  43. package/frontend-dist/assets/{UnifiedRequestDialog-CbBhHfpW.js → UnifiedRequestDialog-BHd4hC0i.js} +1 -1
  44. package/frontend-dist/assets/{VisuallyHiddenInput-CWfsI5Fo.js → VisuallyHiddenInput-eqIyaU1n.js} +1 -1
  45. package/frontend-dist/assets/arrow-down-B5aMJXij.js +1 -0
  46. package/frontend-dist/assets/{badge-DfF7rlis.js → badge-BscUNLaG.js} +1 -1
  47. package/frontend-dist/assets/{button-Csj7G8uP.js → button-DG6Kd0iG.js} +2 -2
  48. package/frontend-dist/assets/chevron-right-DoewhoT5.js +1 -0
  49. package/frontend-dist/assets/{dialog-DSOZukxC.js → dialog-CQOpjImC.js} +1 -1
  50. package/frontend-dist/assets/{image-chvQmEc7.js → image-CiUgkUyN.js} +1 -1
  51. package/frontend-dist/assets/{index-C-o8k1O4.js → index-D_n3EVk6.js} +2 -2
  52. package/frontend-dist/assets/{model-patches-BDzdCFuY.js → model-patches-DG8EiClH.js} +1 -1
  53. package/frontend-dist/assets/{pencil-C2mVN-qO.js → pencil-xKWF4Xe-.js} +1 -1
  54. package/frontend-dist/assets/plus-CtcJ9YdO.js +1 -0
  55. package/frontend-dist/assets/search-VSaI9nBp.js +1 -0
  56. package/frontend-dist/assets/{sparkles-CciAvMR8.js → sparkles-6sEkagjq.js} +1 -1
  57. package/frontend-dist/assets/{transform-domain-Dr6XoDiD.js → transform-domain-8xyILR30.js} +1 -1
  58. package/frontend-dist/assets/{trash-2-BL7xrIYJ.js → trash-2-DubWJ15J.js} +1 -1
  59. package/frontend-dist/assets/{useClipboard-DGrGSktu.js → useClipboard-oDSOvLPT.js} +1 -1
  60. package/frontend-dist/assets/{useLogRetention-CRlHMqOD.js → useLogRetention-CShJ13iZ.js} +1 -1
  61. package/frontend-dist/assets/{useProviderGroups-Cgf0xLYZ.js → useProviderGroups-HZUTsWS6.js} +1 -1
  62. package/frontend-dist/index.html +2 -2
  63. package/package.json +1 -1
  64. package/frontend-dist/assets/arrow-down-gtf48PWs.js +0 -1
  65. package/frontend-dist/assets/chevron-right-FH7bCAPL.js +0 -1
  66. package/frontend-dist/assets/plus-CtQvHS_r.js +0 -1
  67. package/frontend-dist/assets/search-BKxoG0xp.js +0 -1
@@ -1 +1 @@
1
- import{$ as e,A as t,Gt as n,H as r,J as ee,L as te,Lt as i,Q as a,X as ne,Xt as o,Z as s,et as c,gt as l,it as u,k as d,kt as f,mt as re,n as p,nt as m,qt as ie,rt as h,vt as ae}from"./button-Csj7G8uP.js";import{t as oe}from"./chevron-right-FH7bCAPL.js";import{t as g}from"./plus-CtQvHS_r.js";import{t as _}from"./trash-2-BL7xrIYJ.js";import{n as v,t as y}from"./CollapsibleContent-C4J8A1Ja.js";import{t as b}from"./CollapsibleTrigger-xl22mqUU.js";import{t as x}from"./Switch-BG35vWEq.js";import{$ as se,a as S,at as ce,dt as le,it as ue,tt as de}from"./index-C-o8k1O4.js";import{t as C}from"./Skeleton-DpZH_Vpn.js";import{t as w}from"./badge-DfF7rlis.js";import{t as T}from"./Card-OdDwacfm.js";import{t as E}from"./CardContent-B4x52Duv.js";import{t as D}from"./Input-BpmvwfP9.js";import{t as fe}from"./CascadingModelSelect-C24zXMec.js";import{t as O}from"./useProviderGroups-Cgf0xLYZ.js";var k=te(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),A={class:`flex items-center justify-between py-4 first:pt-0 last:pb-0`},j={class:`flex-1 mr-4`},M={class:`text-sm font-medium`},N={class:`text-xs text-muted-foreground mt-0.5`},P=u({__name:`ToggleRow`,props:{title:{},description:{},modelValue:{type:Boolean}},emits:[`update:modelValue`],setup(e){return(t,r)=>(l(),c(`div`,A,[s(`div`,j,[s(`div`,M,o(e.title),1),s(`div`,N,o(e.description),1)]),h(n(x),{"model-value":e.modelValue,"onUpdate:modelValue":r[0]||=e=>t.$emit(`update:modelValue`,e)},null,8,[`model-value`])]))}}),F={class:`page pb-16 max-w-[1000px]`},I={class:`mb-6`},L={class:`text-base font-semibold text-foreground`},R={class:`text-sm text-muted-foreground mt-1`},z={key:0,class:`space-y-4`},B={class:`space-y-2`},V={class:`space-y-2`},pe={class:`space-y-2`},me={key:2,class:`space-y-6`},he={class:`text-sm font-medium text-muted-foreground mb-3`},ge={class:`text-sm font-medium text-muted-foreground mb-3`},_e={class:`text-sm font-medium text-muted-foreground mb-3`},ve={class:`w-40 shrink-0`},ye={class:`pt-3`},be={class:`text-sm font-medium text-muted-foreground mb-3`},xe={class:`space-y-4`},Se={class:`flex items-center justify-between py-1`},Ce={class:`flex-1 mr-4`},we={class:`text-sm font-medium`},Te={class:`text-xs text-muted-foreground mt-0.5`},Ee={class:`mt-2`},De={class:`mt-2 space-y-1 text-xs text-muted-foreground pl-4`},Oe={class:`whitespace-pre-line`},ke={class:`whitespace-pre-line`},Ae={class:`text-sm font-medium`},je={class:`text-xs text-muted-foreground mt-0.5`},Me={class:`text-sm font-medium text-muted-foreground mb-3`},Ne={class:`space-y-4`},Pe={class:`flex items-start gap-3 mb-3`},Fe={class:`text-sm font-medium`},Ie={class:`text-xs text-muted-foreground mt-0.5`},Le={class:`text-sm font-medium`},Re={class:`text-xs text-muted-foreground mt-0.5`},ze={key:3,class:`fixed bottom-0 right-0 left-56 border-t bg-card/95 backdrop-blur px-6 py-2.5 flex items-center justify-between z-10`},Be={key:0,class:`text-sm text-warning`},Ve={key:1},He={class:`flex gap-3`},H=u({__name:`ProxyEnhancement`,setup(te){let{t:u}=r(),A=i(!0),j=i(``),M=i(!1),N=i(!1),H=i(!1),U=i(!1),W=i(!1),G=i(!1),K=i(!1),q=i([]),J=i(void 0),Y=i([]),X=null;function Z(){return{toolRoundLimit:N.value,toolCallLoop:H.value,streamLoop:U.value,toolErrorLogging:W.value,tokenEstimation:G.value,aiRetryConfig:J.value?{...J.value}:void 0,headers:q.value.map(e=>({client_type:e.client_type,session_header_key:e.session_header_key,persisted:e.persisted}))}}function Ue(e,t){return e.toolRoundLimit!==t.toolRoundLimit||e.toolCallLoop!==t.toolCallLoop||e.streamLoop!==t.streamLoop||e.toolErrorLogging!==t.toolErrorLogging||e.tokenEstimation!==t.tokenEstimation||(e.aiRetryConfig||t.aiRetryConfig)&&(!e.aiRetryConfig||!t.aiRetryConfig||e.aiRetryConfig.provider_id!==t.aiRetryConfig.provider_id||e.aiRetryConfig.model!==t.aiRetryConfig.model)||e.headers.length!==t.headers.length?!1:e.headers.every((e,n)=>e.client_type===t.headers[n].client_type&&e.session_header_key===t.headers[n].session_header_key)}let Q=ne(()=>X?!Ue(X,Z()):!1);async function We(){try{Y.value=O(await d.getProviders(),{activeOnly:!0,defaultContextWindow:128e3})}catch(e){console.error(`proxyEnhancement.loadProviders:`,e),S.error(u(`proxyEnhancement.loadProvidersFailed`))}}async function $(){try{let e=await d.getProxyEnhancement();N.value=e.tool_round_limit_enabled,H.value=e.tool_call_loop_enabled,U.value=e.stream_loop_enabled,W.value=e.tool_error_logging_enabled,J.value=e.ai_retry_config??void 0;let[t,n]=await Promise.allSettled([de(),se()]);t.status===`fulfilled`&&(G.value=t.value.enabled),n.status===`fulfilled`&&(q.value=n.value.entries.map(e=>({...e,persisted:!0}))),X=Z()}catch(e){console.error(`proxyEnhancement.loadConfig:`,e),j.value=t(e,u(`proxyEnhancement.loadFailed`))}finally{A.value=!1}}function Ge(e){J.value=e}function Ke(){q.value.push({client_type:``,session_header_key:``,persisted:!1})}function qe(e){q.value.splice(e,1)}function Je(){X&&(N.value=X.toolRoundLimit,H.value=X.toolCallLoop,U.value=X.streamLoop,W.value=X.toolErrorLogging,G.value=X.tokenEstimation,J.value=X.aiRetryConfig?{...X.aiRetryConfig}:void 0,q.value=X.headers.map(e=>({...e})))}async function Ye(){M.value=!0;try{let e=q.value.filter(e=>e.client_type.trim()&&e.session_header_key.trim()).map(e=>({client_type:e.client_type.trim(),session_header_key:e.session_header_key.trim()})),t=(await Promise.allSettled([d.updateProxyEnhancement({tool_call_loop_enabled:H.value,stream_loop_enabled:U.value,tool_round_limit_enabled:N.value,tool_error_logging_enabled:W.value,ai_retry_config:J.value??null}),ce(G.value),ue(e)])).filter(e=>e.status===`rejected`);if(t.length>0){let e=t.map(e=>e.status===`rejected`?e.reason instanceof Error?e.reason.message:typeof e.reason==`string`?e.reason:JSON.stringify(e.reason):``).filter(Boolean).join(`; `);S.error(u(`proxyEnhancement.saveFailed`)+`: `+e);return}for(let e of q.value)e.client_type.trim()&&e.session_header_key.trim()&&(e.persisted=!0);S.success(u(`common.saveSuccess`)),X=Z()}catch(e){console.error(`proxyEnhancement.handleSave:`,e),S.error(t(e,u(`proxyEnhancement.saveFailed`)))}finally{M.value=!1}}return re(()=>{$(),We()}),(t,r)=>(l(),c(`div`,F,[s(`div`,I,[s(`h2`,L,o(n(u)(`proxyEnhancement.title`)),1),s(`p`,R,o(n(u)(`proxyEnhancement.subtitle`)),1)]),A.value?(l(),c(`div`,z,[s(`div`,B,[h(n(C),{class:`h-4 w-24`}),h(n(C),{class:`h-28 w-full rounded-lg`})]),h(n(C),{class:`h-20 w-full rounded-lg`}),s(`div`,V,[h(n(C),{class:`h-4 w-20`}),h(n(C),{class:`h-28 w-full rounded-lg`})]),s(`div`,pe,[h(n(C),{class:`h-4 w-20`}),h(n(C),{class:`h-36 w-full rounded-lg`})])])):j.value?(l(),a(n(T),{key:1},{default:f(()=>[h(n(E),{class:`py-8 text-center text-sm text-muted-foreground`},{default:f(()=>[m(o(j.value),1)]),_:1})]),_:1})):(l(),c(`div`,me,[s(`section`,null,[s(`h3`,he,o(n(u)(`proxyEnhancement.sections.loopDetection`)),1),h(n(T),null,{default:f(()=>[h(n(E),{class:`divide-y divide-border`},{default:f(()=>[h(P,{title:n(u)(`proxyEnhancement.loopDetection.toolRoundLimit.title`),description:n(u)(`proxyEnhancement.loopDetection.toolRoundLimit.description`),modelValue:N.value,"onUpdate:modelValue":r[0]||=e=>N.value=e},null,8,[`title`,`description`,`modelValue`]),h(P,{title:n(u)(`proxyEnhancement.loopDetection.toolCallLoop.title`),description:n(u)(`proxyEnhancement.loopDetection.toolCallLoop.description`),modelValue:H.value,"onUpdate:modelValue":r[1]||=e=>H.value=e},null,8,[`title`,`description`,`modelValue`]),h(P,{title:n(u)(`proxyEnhancement.loopDetection.streamLoop.title`),description:n(u)(`proxyEnhancement.loopDetection.streamLoop.description`),modelValue:U.value,"onUpdate:modelValue":r[2]||=e=>U.value=e},null,8,[`title`,`description`,`modelValue`])]),_:1})]),_:1})]),s(`section`,null,[s(`h3`,ge,o(n(u)(`proxyEnhancement.sections.errorHandling`)),1),h(n(T),null,{default:f(()=>[h(n(E),null,{default:f(()=>[h(P,{title:n(u)(`proxyEnhancement.toolErrorLogging.title`),description:n(u)(`proxyEnhancement.toolErrorLogging.description`),modelValue:W.value,"onUpdate:modelValue":r[3]||=e=>W.value=e},null,8,[`title`,`description`,`modelValue`])]),_:1})]),_:1})]),s(`section`,null,[s(`h3`,_e,o(n(u)(`proxyEnhancement.sections.clientIdentification`)),1),h(n(T),null,{default:f(()=>[h(n(E),{class:`divide-y divide-border`},{default:f(()=>[(l(!0),c(ee,null,ae(q.value,(e,t)=>(l(),c(`div`,{key:t,class:`flex items-center gap-3 py-3 first:pt-0 last:pb-0`},[s(`div`,ve,[e.persisted?(l(),a(n(D),{key:0,"model-value":e.client_type,disabled:``,class:`h-8 text-xs font-mono`},null,8,[`model-value`])):(l(),a(n(D),{key:1,modelValue:e.client_type,"onUpdate:modelValue":t=>e.client_type=t,placeholder:n(u)(`proxyEnhancement.clientIdentification.placeholder.type`),class:`h-8 text-xs`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]))]),h(n(D),{modelValue:e.session_header_key,"onUpdate:modelValue":t=>e.session_header_key=t,placeholder:n(u)(`proxyEnhancement.clientIdentification.placeholder.header`),class:`h-8 text-xs flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),h(n(p),{variant:`ghost`,size:`icon`,class:`h-8 w-8 shrink-0`,disabled:q.value.length<=1,onClick:e=>qe(t)},{default:f(()=>[h(n(_),{class:`w-4 h-4`})]),_:1},8,[`disabled`,`onClick`])]))),128)),s(`div`,ye,[h(n(p),{variant:`outline`,class:`w-full h-8 border-dashed border-muted-foreground/30 hover:border-primary/50 hover:bg-primary/5 text-xs`,onClick:Ke},{default:f(()=>[h(n(g),{class:`w-3.5 h-3.5 mr-1.5`}),m(` `+o(n(u)(`proxyEnhancement.clientIdentification.addEntry`)),1)]),_:1})])]),_:1})]),_:1})]),s(`section`,null,[s(`h3`,be,o(n(u)(`proxyEnhancement.sections.tokenManagement`)),1),s(`div`,xe,[h(n(T),null,{default:f(()=>[h(n(E),null,{default:f(()=>[s(`div`,Se,[s(`div`,Ce,[s(`div`,we,o(n(u)(`proxyEnhancement.tokenEstimation.title`)),1),s(`div`,Te,o(n(u)(`proxyEnhancement.tokenEstimation.shortDescription`)),1)]),h(n(x),{modelValue:G.value,"onUpdate:modelValue":r[4]||=e=>G.value=e},null,8,[`modelValue`])]),s(`div`,Ee,[h(n(v),{open:K.value,"onUpdate:open":r[5]||=e=>K.value=e},{default:f(()=>[h(n(b),{class:`flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors`},{default:f(()=>[h(n(oe),{class:ie([`w-3 h-3 transition-transform`,K.value?`rotate-90`:``])},null,8,[`class`]),m(` `+o(n(u)(`proxyEnhancement.tokenEstimation.setupTitle`)),1)]),_:1}),h(n(y),null,{default:f(()=>[s(`div`,De,[s(`p`,null,o(n(u)(`proxyEnhancement.tokenEstimation.claudeCode`)),1),s(`p`,Oe,o(n(u)(`proxyEnhancement.tokenEstimation.piExtension`)),1),s(`p`,ke,o(n(u)(`proxyEnhancement.tokenEstimation.piModelsJson`)),1)])]),_:1})]),_:1},8,[`open`])])]),_:1})]),_:1}),h(n(T),null,{default:f(()=>[h(n(E),{class:`flex items-start gap-3 py-4`},{default:f(()=>[h(n(w),{variant:`secondary`,class:`shrink-0 mt-0.5`},{default:f(()=>[m(o(n(u)(`proxyEnhancement.alwaysOn`)),1)]),_:1}),s(`div`,null,[s(`div`,Ae,o(n(u)(`proxyEnhancement.contextOverflow.title`)),1),s(`div`,je,o(n(u)(`proxyEnhancement.contextOverflow.description`)),1)])]),_:1})]),_:1})])]),s(`section`,null,[s(`h3`,Me,o(n(u)(`proxyEnhancement.sections.aiFeatures`)),1),s(`div`,Ne,[h(n(T),null,{default:f(()=>[h(n(E),{class:`py-4`},{default:f(()=>[s(`div`,Pe,[h(n(k),{class:`w-4 h-4 mt-0.5 shrink-0 text-muted-foreground`}),s(`div`,null,[s(`div`,Fe,o(n(u)(`proxyEnhancement.aiRetryRuleGen`)),1),s(`div`,Ie,o(n(u)(`proxyEnhancement.aiRetryRuleGenDesc`)),1)])]),h(fe,{providers:Y.value,"model-value":J.value,"onUpdate:modelValue":Ge},null,8,[`providers`,`model-value`])]),_:1})]),_:1}),h(n(T),null,{default:f(()=>[h(n(E),{class:`flex items-start gap-3 py-4`},{default:f(()=>[h(n(w),{variant:`secondary`,class:`shrink-0 mt-0.5`},{default:f(()=>[m(o(n(u)(`proxyEnhancement.alwaysOn`)),1)]),_:1}),s(`div`,null,[s(`div`,Le,o(n(u)(`proxyEnhancement.sessionState.title`)),1),s(`div`,Re,o(n(u)(`proxyEnhancement.sessionState.description`)),1)])]),_:1})]),_:1})])])])),!A.value&&!j.value?(l(),c(`div`,ze,[Q.value?(l(),c(`span`,Be,o(n(u)(`proxyEnhancement.unsavedChanges`)),1)):(l(),c(`span`,Ve)),s(`div`,He,[Q.value?(l(),a(n(p),{key:0,variant:`outline`,onClick:Je},{default:f(()=>[m(o(n(u)(`common.cancel`)),1)]),_:1})):e(``,!0),h(n(p),{disabled:M.value||!Q.value,onClick:Ye},{default:f(()=>[M.value?(l(),a(n(le),{key:0,class:`w-4 h-4 animate-spin mr-1`})):e(``,!0),m(` `+o(M.value?n(u)(`common.saving`):n(u)(`common.save`)),1)]),_:1},8,[`disabled`])])])):e(``,!0)]))}});export{H as default};
1
+ import{$ as e,A as t,Gt as n,H as r,J as ee,L as te,Lt as i,Q as a,X as ne,Xt as o,Z as s,et as c,gt as l,it as u,k as d,kt as f,mt as re,n as p,nt as m,qt as ie,rt as h,vt as ae}from"./button-DG6Kd0iG.js";import{t as oe}from"./chevron-right-DoewhoT5.js";import{t as g}from"./plus-CtcJ9YdO.js";import{t as _}from"./trash-2-DubWJ15J.js";import{n as v,t as y}from"./CollapsibleContent-DZ_tKZag.js";import{t as b}from"./CollapsibleTrigger-D0vBT2Sj.js";import{t as x}from"./Switch-DKdPLHJ3.js";import{$ as se,a as S,at as ce,dt as le,it as ue,tt as de}from"./index-D_n3EVk6.js";import{t as C}from"./Skeleton-D38oyO3p.js";import{t as w}from"./badge-BscUNLaG.js";import{t as T}from"./Card-UQRcFVIJ.js";import{t as E}from"./CardContent-BAoEyF8W.js";import{t as D}from"./Input-DVGxkxMa.js";import{t as fe}from"./CascadingModelSelect-B7DWy49d.js";import{t as O}from"./useProviderGroups-HZUTsWS6.js";var k=te(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),A={class:`flex items-center justify-between py-4 first:pt-0 last:pb-0`},j={class:`flex-1 mr-4`},M={class:`text-sm font-medium`},N={class:`text-xs text-muted-foreground mt-0.5`},P=u({__name:`ToggleRow`,props:{title:{},description:{},modelValue:{type:Boolean}},emits:[`update:modelValue`],setup(e){return(t,r)=>(l(),c(`div`,A,[s(`div`,j,[s(`div`,M,o(e.title),1),s(`div`,N,o(e.description),1)]),h(n(x),{"model-value":e.modelValue,"onUpdate:modelValue":r[0]||=e=>t.$emit(`update:modelValue`,e)},null,8,[`model-value`])]))}}),F={class:`page pb-16 max-w-[1000px]`},I={class:`mb-6`},L={class:`text-base font-semibold text-foreground`},R={class:`text-sm text-muted-foreground mt-1`},z={key:0,class:`space-y-4`},B={class:`space-y-2`},V={class:`space-y-2`},pe={class:`space-y-2`},me={key:2,class:`space-y-6`},he={class:`text-sm font-medium text-muted-foreground mb-3`},ge={class:`text-sm font-medium text-muted-foreground mb-3`},_e={class:`text-sm font-medium text-muted-foreground mb-3`},ve={class:`w-40 shrink-0`},ye={class:`pt-3`},be={class:`text-sm font-medium text-muted-foreground mb-3`},xe={class:`space-y-4`},Se={class:`flex items-center justify-between py-1`},Ce={class:`flex-1 mr-4`},we={class:`text-sm font-medium`},Te={class:`text-xs text-muted-foreground mt-0.5`},Ee={class:`mt-2`},De={class:`mt-2 space-y-1 text-xs text-muted-foreground pl-4`},Oe={class:`whitespace-pre-line`},ke={class:`whitespace-pre-line`},Ae={class:`text-sm font-medium`},je={class:`text-xs text-muted-foreground mt-0.5`},Me={class:`text-sm font-medium text-muted-foreground mb-3`},Ne={class:`space-y-4`},Pe={class:`flex items-start gap-3 mb-3`},Fe={class:`text-sm font-medium`},Ie={class:`text-xs text-muted-foreground mt-0.5`},Le={class:`text-sm font-medium`},Re={class:`text-xs text-muted-foreground mt-0.5`},ze={key:3,class:`fixed bottom-0 right-0 left-56 border-t bg-card/95 backdrop-blur px-6 py-2.5 flex items-center justify-between z-10`},Be={key:0,class:`text-sm text-warning`},Ve={key:1},He={class:`flex gap-3`},H=u({__name:`ProxyEnhancement`,setup(te){let{t:u}=r(),A=i(!0),j=i(``),M=i(!1),N=i(!1),H=i(!1),U=i(!1),W=i(!1),G=i(!1),K=i(!1),q=i([]),J=i(void 0),Y=i([]),X=null;function Z(){return{toolRoundLimit:N.value,toolCallLoop:H.value,streamLoop:U.value,toolErrorLogging:W.value,tokenEstimation:G.value,aiRetryConfig:J.value?{...J.value}:void 0,headers:q.value.map(e=>({client_type:e.client_type,session_header_key:e.session_header_key,persisted:e.persisted}))}}function Ue(e,t){return e.toolRoundLimit!==t.toolRoundLimit||e.toolCallLoop!==t.toolCallLoop||e.streamLoop!==t.streamLoop||e.toolErrorLogging!==t.toolErrorLogging||e.tokenEstimation!==t.tokenEstimation||(e.aiRetryConfig||t.aiRetryConfig)&&(!e.aiRetryConfig||!t.aiRetryConfig||e.aiRetryConfig.provider_id!==t.aiRetryConfig.provider_id||e.aiRetryConfig.model!==t.aiRetryConfig.model)||e.headers.length!==t.headers.length?!1:e.headers.every((e,n)=>e.client_type===t.headers[n].client_type&&e.session_header_key===t.headers[n].session_header_key)}let Q=ne(()=>X?!Ue(X,Z()):!1);async function We(){try{Y.value=O(await d.getProviders(),{activeOnly:!0,defaultContextWindow:128e3})}catch(e){console.error(`proxyEnhancement.loadProviders:`,e),S.error(u(`proxyEnhancement.loadProvidersFailed`))}}async function $(){try{let e=await d.getProxyEnhancement();N.value=e.tool_round_limit_enabled,H.value=e.tool_call_loop_enabled,U.value=e.stream_loop_enabled,W.value=e.tool_error_logging_enabled,J.value=e.ai_retry_config??void 0;let[t,n]=await Promise.allSettled([de(),se()]);t.status===`fulfilled`&&(G.value=t.value.enabled),n.status===`fulfilled`&&(q.value=n.value.entries.map(e=>({...e,persisted:!0}))),X=Z()}catch(e){console.error(`proxyEnhancement.loadConfig:`,e),j.value=t(e,u(`proxyEnhancement.loadFailed`))}finally{A.value=!1}}function Ge(e){J.value=e}function Ke(){q.value.push({client_type:``,session_header_key:``,persisted:!1})}function qe(e){q.value.splice(e,1)}function Je(){X&&(N.value=X.toolRoundLimit,H.value=X.toolCallLoop,U.value=X.streamLoop,W.value=X.toolErrorLogging,G.value=X.tokenEstimation,J.value=X.aiRetryConfig?{...X.aiRetryConfig}:void 0,q.value=X.headers.map(e=>({...e})))}async function Ye(){M.value=!0;try{let e=q.value.filter(e=>e.client_type.trim()&&e.session_header_key.trim()).map(e=>({client_type:e.client_type.trim(),session_header_key:e.session_header_key.trim()})),t=(await Promise.allSettled([d.updateProxyEnhancement({tool_call_loop_enabled:H.value,stream_loop_enabled:U.value,tool_round_limit_enabled:N.value,tool_error_logging_enabled:W.value,ai_retry_config:J.value??null}),ce(G.value),ue(e)])).filter(e=>e.status===`rejected`);if(t.length>0){let e=t.map(e=>e.status===`rejected`?e.reason instanceof Error?e.reason.message:typeof e.reason==`string`?e.reason:JSON.stringify(e.reason):``).filter(Boolean).join(`; `);S.error(u(`proxyEnhancement.saveFailed`)+`: `+e);return}for(let e of q.value)e.client_type.trim()&&e.session_header_key.trim()&&(e.persisted=!0);S.success(u(`common.saveSuccess`)),X=Z()}catch(e){console.error(`proxyEnhancement.handleSave:`,e),S.error(t(e,u(`proxyEnhancement.saveFailed`)))}finally{M.value=!1}}return re(()=>{$(),We()}),(t,r)=>(l(),c(`div`,F,[s(`div`,I,[s(`h2`,L,o(n(u)(`proxyEnhancement.title`)),1),s(`p`,R,o(n(u)(`proxyEnhancement.subtitle`)),1)]),A.value?(l(),c(`div`,z,[s(`div`,B,[h(n(C),{class:`h-4 w-24`}),h(n(C),{class:`h-28 w-full rounded-lg`})]),h(n(C),{class:`h-20 w-full rounded-lg`}),s(`div`,V,[h(n(C),{class:`h-4 w-20`}),h(n(C),{class:`h-28 w-full rounded-lg`})]),s(`div`,pe,[h(n(C),{class:`h-4 w-20`}),h(n(C),{class:`h-36 w-full rounded-lg`})])])):j.value?(l(),a(n(T),{key:1},{default:f(()=>[h(n(E),{class:`py-8 text-center text-sm text-muted-foreground`},{default:f(()=>[m(o(j.value),1)]),_:1})]),_:1})):(l(),c(`div`,me,[s(`section`,null,[s(`h3`,he,o(n(u)(`proxyEnhancement.sections.loopDetection`)),1),h(n(T),null,{default:f(()=>[h(n(E),{class:`divide-y divide-border`},{default:f(()=>[h(P,{title:n(u)(`proxyEnhancement.loopDetection.toolRoundLimit.title`),description:n(u)(`proxyEnhancement.loopDetection.toolRoundLimit.description`),modelValue:N.value,"onUpdate:modelValue":r[0]||=e=>N.value=e},null,8,[`title`,`description`,`modelValue`]),h(P,{title:n(u)(`proxyEnhancement.loopDetection.toolCallLoop.title`),description:n(u)(`proxyEnhancement.loopDetection.toolCallLoop.description`),modelValue:H.value,"onUpdate:modelValue":r[1]||=e=>H.value=e},null,8,[`title`,`description`,`modelValue`]),h(P,{title:n(u)(`proxyEnhancement.loopDetection.streamLoop.title`),description:n(u)(`proxyEnhancement.loopDetection.streamLoop.description`),modelValue:U.value,"onUpdate:modelValue":r[2]||=e=>U.value=e},null,8,[`title`,`description`,`modelValue`])]),_:1})]),_:1})]),s(`section`,null,[s(`h3`,ge,o(n(u)(`proxyEnhancement.sections.errorHandling`)),1),h(n(T),null,{default:f(()=>[h(n(E),null,{default:f(()=>[h(P,{title:n(u)(`proxyEnhancement.toolErrorLogging.title`),description:n(u)(`proxyEnhancement.toolErrorLogging.description`),modelValue:W.value,"onUpdate:modelValue":r[3]||=e=>W.value=e},null,8,[`title`,`description`,`modelValue`])]),_:1})]),_:1})]),s(`section`,null,[s(`h3`,_e,o(n(u)(`proxyEnhancement.sections.clientIdentification`)),1),h(n(T),null,{default:f(()=>[h(n(E),{class:`divide-y divide-border`},{default:f(()=>[(l(!0),c(ee,null,ae(q.value,(e,t)=>(l(),c(`div`,{key:t,class:`flex items-center gap-3 py-3 first:pt-0 last:pb-0`},[s(`div`,ve,[e.persisted?(l(),a(n(D),{key:0,"model-value":e.client_type,disabled:``,class:`h-8 text-xs font-mono`},null,8,[`model-value`])):(l(),a(n(D),{key:1,modelValue:e.client_type,"onUpdate:modelValue":t=>e.client_type=t,placeholder:n(u)(`proxyEnhancement.clientIdentification.placeholder.type`),class:`h-8 text-xs`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]))]),h(n(D),{modelValue:e.session_header_key,"onUpdate:modelValue":t=>e.session_header_key=t,placeholder:n(u)(`proxyEnhancement.clientIdentification.placeholder.header`),class:`h-8 text-xs flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),h(n(p),{variant:`ghost`,size:`icon`,class:`h-8 w-8 shrink-0`,disabled:q.value.length<=1,onClick:e=>qe(t)},{default:f(()=>[h(n(_),{class:`w-4 h-4`})]),_:1},8,[`disabled`,`onClick`])]))),128)),s(`div`,ye,[h(n(p),{variant:`outline`,class:`w-full h-8 border-dashed border-muted-foreground/30 hover:border-primary/50 hover:bg-primary/5 text-xs`,onClick:Ke},{default:f(()=>[h(n(g),{class:`w-3.5 h-3.5 mr-1.5`}),m(` `+o(n(u)(`proxyEnhancement.clientIdentification.addEntry`)),1)]),_:1})])]),_:1})]),_:1})]),s(`section`,null,[s(`h3`,be,o(n(u)(`proxyEnhancement.sections.tokenManagement`)),1),s(`div`,xe,[h(n(T),null,{default:f(()=>[h(n(E),null,{default:f(()=>[s(`div`,Se,[s(`div`,Ce,[s(`div`,we,o(n(u)(`proxyEnhancement.tokenEstimation.title`)),1),s(`div`,Te,o(n(u)(`proxyEnhancement.tokenEstimation.shortDescription`)),1)]),h(n(x),{modelValue:G.value,"onUpdate:modelValue":r[4]||=e=>G.value=e},null,8,[`modelValue`])]),s(`div`,Ee,[h(n(v),{open:K.value,"onUpdate:open":r[5]||=e=>K.value=e},{default:f(()=>[h(n(b),{class:`flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors`},{default:f(()=>[h(n(oe),{class:ie([`w-3 h-3 transition-transform`,K.value?`rotate-90`:``])},null,8,[`class`]),m(` `+o(n(u)(`proxyEnhancement.tokenEstimation.setupTitle`)),1)]),_:1}),h(n(y),null,{default:f(()=>[s(`div`,De,[s(`p`,null,o(n(u)(`proxyEnhancement.tokenEstimation.claudeCode`)),1),s(`p`,Oe,o(n(u)(`proxyEnhancement.tokenEstimation.piExtension`)),1),s(`p`,ke,o(n(u)(`proxyEnhancement.tokenEstimation.piModelsJson`)),1)])]),_:1})]),_:1},8,[`open`])])]),_:1})]),_:1}),h(n(T),null,{default:f(()=>[h(n(E),{class:`flex items-start gap-3 py-4`},{default:f(()=>[h(n(w),{variant:`secondary`,class:`shrink-0 mt-0.5`},{default:f(()=>[m(o(n(u)(`proxyEnhancement.alwaysOn`)),1)]),_:1}),s(`div`,null,[s(`div`,Ae,o(n(u)(`proxyEnhancement.contextOverflow.title`)),1),s(`div`,je,o(n(u)(`proxyEnhancement.contextOverflow.description`)),1)])]),_:1})]),_:1})])]),s(`section`,null,[s(`h3`,Me,o(n(u)(`proxyEnhancement.sections.aiFeatures`)),1),s(`div`,Ne,[h(n(T),null,{default:f(()=>[h(n(E),{class:`py-4`},{default:f(()=>[s(`div`,Pe,[h(n(k),{class:`w-4 h-4 mt-0.5 shrink-0 text-muted-foreground`}),s(`div`,null,[s(`div`,Fe,o(n(u)(`proxyEnhancement.aiRetryRuleGen`)),1),s(`div`,Ie,o(n(u)(`proxyEnhancement.aiRetryRuleGenDesc`)),1)])]),h(fe,{providers:Y.value,"model-value":J.value,"onUpdate:modelValue":Ge},null,8,[`providers`,`model-value`])]),_:1})]),_:1}),h(n(T),null,{default:f(()=>[h(n(E),{class:`flex items-start gap-3 py-4`},{default:f(()=>[h(n(w),{variant:`secondary`,class:`shrink-0 mt-0.5`},{default:f(()=>[m(o(n(u)(`proxyEnhancement.alwaysOn`)),1)]),_:1}),s(`div`,null,[s(`div`,Le,o(n(u)(`proxyEnhancement.sessionState.title`)),1),s(`div`,Re,o(n(u)(`proxyEnhancement.sessionState.description`)),1)])]),_:1})]),_:1})])])])),!A.value&&!j.value?(l(),c(`div`,ze,[Q.value?(l(),c(`span`,Be,o(n(u)(`proxyEnhancement.unsavedChanges`)),1)):(l(),c(`span`,Ve)),s(`div`,He,[Q.value?(l(),a(n(p),{key:0,variant:`outline`,onClick:Je},{default:f(()=>[m(o(n(u)(`common.cancel`)),1)]),_:1})):e(``,!0),h(n(p),{disabled:M.value||!Q.value,onClick:Ye},{default:f(()=>[M.value?(l(),a(n(le),{key:0,class:`w-4 h-4 animate-spin mr-1`})):e(``,!0),m(` `+o(M.value?n(u)(`common.saving`):n(u)(`common.save`)),1)]),_:1},8,[`disabled`])])])):e(``,!0)]))}});export{H as default};
@@ -1 +1 @@
1
- import{$ as e,A as t,Et as n,Gt as r,H as i,I as a,J as o,K as s,L as c,Lt as l,M as u,N as d,Nt as f,Q as p,X as m,Xt as h,Z as g,et as _,gt as v,it as y,k as b,kt as x,mt as ee,n as S,nt as C,q as w,qt as T,rt as E,vt as D}from"./button-Csj7G8uP.js";import{n as O,r as k,t as A}from"./ConcurrencyControl-B4mp9THM.js";import{t as j}from"./chevron-right-FH7bCAPL.js";import{t as M}from"./plus-CtQvHS_r.js";import{t as N}from"./sparkles-CciAvMR8.js";import{a as P,i as te,n as ne,o as F,r as re,t as I}from"./model-patches-BDzdCFuY.js";import{t as ie}from"./Checkbox-BVu9v787.js";import{t as L}from"./Label-BhSGa_Tn.js";import{_ as ae,a as R,ft as oe,g as z,gt as se,h as ce,m as le,mt as ue,v as de}from"./index-C-o8k1O4.js";import{t as B}from"./badge-DfF7rlis.js";import{t as V}from"./Card-OdDwacfm.js";import{t as H}from"./CardContent-B4x52Duv.js";import{n as U,t as W}from"./CardTitle-DtDJrCKi.js";import{t as fe}from"./Input-BpmvwfP9.js";import{t as G}from"./CascadingModelSelect-C24zXMec.js";import{i as K,n as pe,o as me,r as q,t as J}from"./transform-domain-Dr6XoDiD.js";var he=c(`circle-alert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),ge={DeepSeek:`deepseek`,百度千帆:`qianfan`,科大讯飞:`iflytek`,硅基流动:`siliconflow`,智谱:`zhipu`,月之暗面:`moonshot`,Minimax:`minimax`,火山引擎:`volcengine`,阿里云:`aliyun`,腾讯云:`tencent`,OpenCode:`opencode`,阶跃星辰:`stepfun`};function Y(e){return ge[e]??e.toLowerCase().replace(/[^a-z0-9]/gi,`-`).replace(/-+/g,`-`)}function X(e,t){let{injectHeaders:n,dropFields:r,requestDefaults:i}=e;if(!n.trim()&&!r.trim()&&!i.trim())return;let{rule:a,errorKey:o}=J({injectHeaders:n,dropFields:r,requestDefaults:i});if(o)return t(o),!1;if(a)return JSON.parse(a)}async function Z(e,t){let n=[];for(let r of t)if(r.existing&&r.existingId&&r.originalActive!==void 0&&r.active!==r.originalActive)try{await e.toggleMappingGroup(r.existingId)}catch(e){console.error(`quick-setup-helpers.toggleChangedMappings:`,e),n.push(r.clientModel)}return n}function _e(e,t,n){return e.filter(e=>t.has(e.name)&&!e.exists).map(e=>{let t=n.get(e.name)??`general`;return{name:e.name,status_code:e.status_code,body_pattern:e.body_pattern,retry_strategy:e.retry_strategy,retry_delay_ms:e.retry_delay_ms,max_retries:e.max_retries,max_delay_ms:e.max_delay_ms,provider_shortname:t===`general`?null:t}})}function ve(e){return{name:e.isCustom?`custom-${Date.now()}`:`${Y(e.selectedGroup)}-${Y(e.selectedPlan)}`,api_type:e.apiType,base_url:e.baseUrl,upstream_path:e.upstreamPath||void 0,api_key:e.apiKey,models:e.models.map(e=>({name:e.name,context_window:e.contextWindow,patches:e.patches.length>0?e.patches:void 0,stream_timeout_ms:e.stream_timeout_ms??void 0,capabilities:e.capabilities&&e.capabilities.length>0?e.capabilities:void 0})),concurrency_mode:e.concurrency.mode,max_concurrency:e.concurrency.mode===`none`?void 0:e.concurrency.max_concurrency,queue_timeout_ms:e.concurrency.mode===`none`?void 0:e.concurrency.queue_timeout_ms,max_queue_size:e.concurrency.mode===`none`?void 0:e.concurrency.max_queue_size,...e.endpoints&&e.endpoints.length>0?{endpoints:e.endpoints}:{}}}function ye(e,t,n){let r;return r=e===`pi`?t.map(e=>e.name):P[e]??t.map(e=>e.name),r.map(i=>{let a=n.find(e=>e.client_model===i);if(a){let e={};try{e=JSON.parse(a.rule)}catch{e={}}let n=e.targets??[];return{clientModel:i,targets:n.length>0?n.map(e=>({backend_model:e.backend_model,provider_id:e.provider_id,overflow_provider_id:e.overflow_provider_id,overflow_model:e.overflow_model})):[{backend_model:t[0]?.name??``,provider_id:`__new__`}],existing:!0,existingId:a.id,tag:`existing`,active:!!a.is_active,originalActive:!!a.is_active}}return{clientModel:i,targets:[{backend_model:t[r.indexOf(i)]?.name??t[t.length-1]?.name??``,provider_id:`__new__`}],existing:!1,tag:e===`pi`?`auto`:`def`,active:!0}})}function be(e,t){return e===`openai-responses`&&(t===`openai`||t===`openai-responses`)?`openai-responses`:t}function xe(e){return{provider:ve({isCustom:e.isCustomProvider,selectedGroup:e.selectedGroup,selectedPlan:e.selectedPlan,apiType:e.apiType,baseUrl:e.baseUrl,upstreamPath:e.upstreamPath,apiKey:e.apiKey,models:e.models,concurrency:e.concurrency,endpoints:e.endpoints}),mappings:e.mappingEntries.filter(e=>e.targets[0]?.backend_model).map(e=>{if(e.targets.length>1||e.targets[0]?.overflow_model||e.multimodalFallback?.backend_model){let t={targets:e.targets.map(e=>{let t={backend_model:e.backend_model,provider_id:e.provider_id};return e.overflow_provider_id&&(t.overflow_provider_id=e.overflow_provider_id),e.overflow_model&&(t.overflow_model=e.overflow_model),t})};return e.multimodalFallback?.backend_model&&(t.multimodal_fallback={provider_id:e.multimodalFallback.provider_id,backend_model:e.multimodalFallback.backend_model}),{client_model:e.clientModel,backend_model:e.targets[0]?.backend_model??``,rule:JSON.stringify(t)}}return{client_model:e.clientModel,backend_model:e.targets[0]?.backend_model??``}}),retry_rules:_e(e.recommendedRules,e.selectedRetryRules,e.retryProviderMap),transform_rules:e.transformRules}}function Se(e,t){let n=new Map;for(let r of e){if(r.exists)continue;let e=r.providers??[];e.length>0&&t&&e.includes(t)?n.set(r.name,t):n.set(r.name,`general`)}return n}function Ce(e,t,n){t.value=e.models.map(t=>({name:t,contextWindow:F(t),enabled:!0,patches:I(t,e.apiType,n.value),stream_timeout_ms:d,capabilities:e.modelCapabilities?.[t]}))}function we(e,t){let n=t.find(t=>t.group===e.defaultProvider);if(!n||n.presets.length===0)return null;let r=e.format===`openai-responses`?[`openai-responses`,`openai`]:[e.format],i=n.presets.find(t=>r.includes(t.apiType)&&t.plan===e.defaultPlan)??n.presets.find(e=>r.includes(e.apiType))??n.presets[0];return{group:n.group,plan:i.plan,apiType:be(e.format,i.apiType),preset:i}}function Te(e,t){if(t.selectedGroup.value=e,t.selectedPlan.value=``,t.modelConfigs.value=[],t.endpoints.value=[],e===`__custom__`)t.apiType.value=`openai`,t.customBaseUrl.value=``,t.customUpstreamPath.value=``,t.endpoints.value=[{api_type:`openai`,base_url:``,upstream_path:null,api_key:null}];else{let n=t.providerGroups.value.find(t=>t.group===e);if(n&&n.presets.length>0){let e=t.currentClient.value,r=e?.format===`openai-responses`?[`openai-responses`,`openai`]:e?[e.format]:[],i=(e?n.presets.find(e=>r.includes(e.apiType)):null)??n.presets[0];t.selectedPlan.value=i.plan,t.apiType.value=be(e?.format,i.apiType),Ce(i,t.modelConfigs,t.isNonOpenaiEndpoint),De(t.endpoints,n.presets)}}t.updateMappings(),t.syncRetryRules()}function Ee(e,t,n,r,i,a,o,s,c){let l=o.value.find(e=>e.group===t.value);if(!l)return;let u=l.presets.find(t=>t.plan===e);u&&(n.value=be(r.value?.format,u.apiType),Ce(u,i,a),De(s,l.presets),c())}function De(e,t){let n=new Set,r=[];for(let e of t)n.has(e.apiType)||(n.add(e.apiType),r.push({api_type:e.apiType,base_url:e.baseUrl,upstream_path:e.upstreamPath||null,api_key:null}));e.value=r}var Oe=800,ke=1500;function Ae(e){let n=()=>{e.data.mappingEntries.value=ye(e.selection.clientType.value,e.data.modelConfigs.value.filter(e=>e.enabled),e.data.existingMappings.value)},r=t=>{let{selection:r,data:i}=e;r.clientType.value=t;let a=r.currentClient.value;if(a){let e=we({defaultProvider:a.defaultProvider,defaultPlan:a.defaultPlan,format:a.format},r.providerGroups.value);if(e){r.selectedGroup.value=e.group,r.selectedPlan.value=e.plan,r.apiType.value=e.apiType,Ce(e.preset,i.modelConfigs,i.isNonOpenaiEndpoint);let t=r.providerGroups.value.find(t=>t.group===e.group);t&&De(i.endpoints,t.presets)}}n(),je(e)},i={selectedGroup:e.selection.selectedGroup,selectedPlan:e.selection.selectedPlan,apiType:e.selection.apiType,modelConfigs:e.data.modelConfigs,customBaseUrl:e.selection.customBaseUrl,customUpstreamPath:e.selection.customUpstreamPath,providerGroups:e.selection.providerGroups,currentClient:e.selection.currentClient,isNonOpenaiEndpoint:e.data.isNonOpenaiEndpoint,endpoints:e.data.endpoints,updateMappings:n,syncRetryRules:()=>je(e)};return{updateMappings:n,selectClient:r,onProviderChange:e=>Te(e,i),onPlanChange:t=>{let{selection:r,data:i}=e;r.selectedPlan.value=t,Ee(t,r.selectedGroup,r.apiType,r.currentClient,i.modelConfigs,i.isNonOpenaiEndpoint,r.providerGroups,i.endpoints,n)},toggleRetryRule:(t,n)=>{let r=new Set(e.data.selectedRetryRules.value);n?r.add(t):r.delete(t),e.data.selectedRetryRules.value=r},setAllRetryRules:(t,n)=>{let r=new Set(e.data.selectedRetryRules.value);for(let e of t)n?r.add(e):r.delete(e);e.data.selectedRetryRules.value=r},updateMappingTargets:(t,n)=>{e.data.mappingEntries.value=e.data.mappingEntries.value.map((e,r)=>r===t?{...e,targets:n}:e)},updateMappingClientModel:(t,n)=>{e.data.mappingEntries.value=e.data.mappingEntries.value.map((e,r)=>r===t?{...e,clientModel:n}:e)},updateMappingMultimodalFallback:(t,n)=>{e.data.mappingEntries.value=e.data.mappingEntries.value.map((e,r)=>r===t?{...e,multimodalFallback:n}:e)},toggleMappingActive:t=>{e.data.mappingEntries.value=e.data.mappingEntries.value.map((e,n)=>n===t?{...e,active:!e.active}:e)},addMappingEntry:(t,n)=>{e.data.mappingEntries.value=[...e.data.mappingEntries.value.filter(e=>e.clientModel!==t),{clientModel:t,targets:[{backend_model:n,provider_id:`__new__`}],existing:!1,tag:`cust`,active:!0}]},removeMappingEntry:t=>{if(e.data.mappingEntries.value.find(e=>e.clientModel===t)?.existing){R.error(e.t(`quickSetup.messages.existingMappingDelete`));return}e.data.mappingEntries.value=e.data.mappingEntries.value.filter(e=>e.clientModel!==t)},onConcurrencyModeChange:t=>{e.submit.concurrencyConfig.value={...e.submit.concurrencyConfig.value,mode:t},t===`auto`?e.submit.concurrencyConfig.value.max_concurrency=q.max_concurrency:t===`manual`&&(e.submit.concurrencyConfig.value.max_concurrency=K.max_concurrency)},testConnection:()=>e.data.apiKey.value.trim()?(e.submit.connectionStatus.value=`testing`,new Promise(e=>setTimeout(e,Oe)).then(()=>{e.submit.connectionStatus.value=`ok`})):(e.submit.connectionStatus.value=`error`,R.error(e.t(`quickSetup.messages.fillApiKeyFirst`)),Promise.resolve()),addCustomModel:(t,n=u)=>{e.data.modelConfigs.value.push({name:t,contextWindow:n,enabled:!0,patches:I(t,e.selection.apiType.value,e.data.isNonOpenaiEndpoint.value),stream_timeout_ms:d,capabilities:[`text`]})},updateModel:(t,n)=>{let r=[...e.data.modelConfigs.value];r[t]=n,e.data.modelConfigs.value=r},removeModel:t=>{e.data.modelConfigs.value=e.data.modelConfigs.value.filter((e,n)=>n!==t)},updateModelTimeout:(t,n)=>{let r=[...e.data.modelConfigs.value];r[t]={...r[t],stream_timeout_ms:n||void 0},e.data.modelConfigs.value=r},toggleModelCapability:(t,n)=>{let r=[...e.data.modelConfigs.value],i={...r[t]},a=i.capabilities??[`text`];a.includes(n)?i.capabilities=a.filter(e=>e!==n):i.capabilities=[...a,n],r[t]=i,e.data.modelConfigs.value=r},submit:async()=>{let{selection:n,data:r,submit:i}=e;if(!n.currentPreset.value){R.error(e.t(`quickSetup.messages.selectProviderAndPlan`));return}if(!r.apiKey.value.trim()){R.error(e.t(`quickSetup.messages.fillApiKey`));return}i.saving.value=!0;try{let t=X(i.transformConfig.value,t=>R.error(e.t(`quickSetup.messages.${t}`)));if(t===!1)return;await b.quickSetup(xe({isCustomProvider:n.isCustomProvider.value,selectedGroup:n.selectedGroup.value,retryProviderMap:r.retryProviderMap.value,selectedPlan:n.selectedPlan.value,apiType:n.apiType.value,baseUrl:r.baseUrl.value,upstreamPath:r.upstreamPath.value,apiKey:r.apiKey.value.trim(),models:r.modelConfigs.value.filter(e=>e.enabled),concurrency:i.concurrencyConfig.value,mappingEntries:r.mappingEntries.value,recommendedRules:r.recommendedRules.value,selectedRetryRules:r.selectedRetryRules.value,transformRules:t,endpoints:r.endpoints.value.length>0?r.endpoints.value.map(e=>({...e,api_key:e.api_key||r.apiKey.value.trim()||null})):void 0}));let o=await Z(b,r.mappingEntries.value);R.success(o.length>0?e.t(`quickSetup.messages.setupCompleteWithErrors`,{count:o.length}):e.t(`quickSetup.messages.setupComplete`)),await new Promise(e=>setTimeout(e,ke)),a.push(`/`)}catch(n){console.error(`quickSetup.save:`,n),R.error(t(n,e.t(`quickSetup.messages.setupFailed`)))}finally{i.saving.value=!1}}}}function je(e){let{selection:t,data:n}=e;n.selectedRetryRules.value=new Set(n.recommendedRules.value.filter(e=>!e.exists).map(e=>e.name));let r=t.providerGroups.value.find(e=>e.group===t.selectedGroup.value)?.shortname;n.retryProviderMap.value=Se(n.recommendedRules.value,r)}function Me(e,t,n,r,i,a){let o=m(()=>t.value?{provider:{id:e.value?`__new_custom__`:`__new_${Y(t.value)}_${Y(n.value)}__`,name:e.value?a(`quickSetup.provider.customProvider`):`${t.value} - ${n.value}`},models:r.value.filter(e=>e.enabled).map(e=>({name:e.name,contextWindow:e.contextWindow})),isNew:!0}:null);return{allProviderGroups:m(()=>{let e=i.value.map(e=>({provider:{id:e.id,name:e.name},models:(e.models??[]).map(e=>({name:e.name,contextWindow:e.context_window??2e5}))}));return o.value&&o.value.models.length>0?[...e,o.value]:e})}}function Ne(){let{t:e}=i(),r=l(`claude-code`),a=l([]),o=l(``),s=l(``),c=l(`anthropic`),u=l(``),d=l(``),f=l([]),p=l([]),h=l([]),g=l([]),_=l(new Set),v=l(new Map),y=l(!1),x=l(`idle`),S=l({...q}),C=l({...me}),w=l([]),T=l([]),E=m(()=>o.value===`__custom__`),D=m(()=>te.find(e=>e.id===r.value)),O=m(()=>{if(!(!o.value||!s.value))return a.value.find(e=>e.group===o.value)?.presets.find(e=>e.plan===s.value)}),k=l(``),A=l(``),j=l(``),M=l(``);n(O,e=>{if(e&&!E.value){j.value=e.baseUrl;let t=e.apiType===`anthropic`?`/v1/messages`:e.apiType===`openai-responses`?`/v1/responses`:`/v1/chat/completions`;M.value=e.upstreamPath&&e.upstreamPath!==t?e.upstreamPath:``}});let N=m(()=>E.value?k.value:j.value),P=m(()=>E.value?A.value:M.value),ne=m(()=>a.value.find(e=>e.group===o.value)?.presets??[]),F=m(()=>!N.value.includes(`openai.com`)),re=m(()=>{let e=a.value.find(e=>e.group===o.value)?.shortname??o.value;return g.value.filter(t=>!t.providers||t.providers.length===0||t.providers.includes(e))}),ie=Me(E,o,s,p,T,e).allProviderGroups,L=Ae({t:e,selection:{clientType:r,selectedGroup:o,selectedPlan:s,apiType:c,providerGroups:a,currentClient:D,currentPreset:O,isCustomProvider:E,customBaseUrl:k,customUpstreamPath:A},data:{modelConfigs:p,mappingEntries:h,apiKey:u,baseUrl:N,upstreamPath:P,existingMappings:w,allProviders:T,allRecommendedRules:g,recommendedRules:re,selectedRetryRules:_,retryProviderMap:v,isNonOpenaiEndpoint:F,endpoints:f},submit:{saving:y,connectionStatus:x,concurrencyConfig:S,transformConfig:C}});return n(c,()=>{for(let e of p.value)e.patches=I(e.name,c.value,F.value)}),ee(async()=>{try{let[e,t,n,r]=await Promise.allSettled([b.recommended.getProviders(),b.recommended.getRetryRules(),b.getMappingGroups(),b.getProviders()]);e.status===`fulfilled`&&(a.value=e.value),t.status===`fulfilled`&&(g.value=t.value),n.status===`fulfilled`&&(w.value=n.value),r.status===`fulfilled`&&(T.value=r.value),L.selectClient(`claude-code`)}catch(e){console.error(`quickSetup.load:`,e),R.error(t(e,``))}}),{clientType:r,providerGroups:a,selectedGroup:o,selectedPlan:s,apiType:c,apiKey:u,sharedKey:d,endpoints:f,modelConfigs:p,mappingEntries:h,allRecommendedRules:g,recommendedRules:re,selectedRetryRules:_,retryProviderMap:v,saving:y,connectionStatus:x,currentClient:D,currentPreset:O,baseUrl:N,customBaseUrl:k,presetBaseUrl:j,upstreamPath:P,customUpstreamPath:A,presetUpstreamPath:M,isCustomProvider:E,availablePlans:ne,isNonOpenaiEndpoint:F,concurrencyConfig:S,transformConfig:C,existingMappings:w,allProviders:T,allProviderGroups:ie,...L,setRetryProvider:(e,t)=>void v.value.set(e,t)}}var Pe={class:`space-y-1.5`},Fe={class:`px-3 py-1.5`},Ie={key:0,class:`py-3 text-center text-xs text-muted-foreground`},Le={class:`flex items-center gap-3 rounded-md border border-dashed border-border px-3 py-2`},Re={class:`flex-1 min-w-0`},ze=y({__name:`QuickSetupMappingList`,props:{entries:{},providerGroups:{}},emits:[`update:targets`,`update:multimodal-fallback`,`update:client-model`,`toggle-active`,`add`,`remove`],setup(t,{emit:n}){let{t:a}=i(),s=n,c=l(null);function u(e){c.value=c.value===e?null:e}let d=l(``),f=l();function p(){return d.value.trim().length>0&&!!f.value?.model}function m(){let e=d.value.trim(),t=f.value;e&&t&&(s(`add`,e,t.model),d.value=``,f.value=void 0)}function y(e){e.key===`Enter`&&p()&&(e.preventDefault(),m())}return(n,i)=>(v(),_(`div`,Pe,[(v(!0),_(o,null,D(t.entries,(e,n)=>(v(),_(`div`,{key:n,class:`rounded-md border border-border overflow-hidden`},[g(`div`,Fe,[E(O,{entry:e,"provider-groups":t.providerGroups,expanded:c.value===e.clientModel,"editable-client-model":c.value===e.clientModel,onExpand:t=>u(e.clientModel),"onUpdate:targets":e=>s(`update:targets`,n,e),"onUpdate:clientModel":e=>s(`update:client-model`,n,e),"onUpdate:multimodalFallback":e=>s(`update:multimodal-fallback`,n,e),onToggleActive:e=>s(`toggle-active`,n),onRemove:t=>s(`remove`,e.clientModel)},null,8,[`entry`,`provider-groups`,`expanded`,`editable-client-model`,`onExpand`,`onUpdate:targets`,`onUpdate:clientModel`,`onUpdate:multimodalFallback`,`onToggleActive`,`onRemove`])])]))),128)),t.entries.length===0?(v(),_(`p`,Ie,h(r(a)(`providers.shared.noMappings`)),1)):e(``,!0),g(`div`,Le,[E(r(fe),{modelValue:d.value,"onUpdate:modelValue":i[0]||=e=>d.value=e,placeholder:r(a)(`providers.shared.clientModel`),class:`h-7 min-w-[140px] text-xs font-mono border-border`,onKeydown:y},null,8,[`modelValue`,`placeholder`]),E(r(k),{class:`size-3.5 shrink-0 text-muted-foreground/30`}),g(`div`,Re,[E(G,{providers:t.providerGroups,"model-value":f.value,compact:``,placeholder:r(a)(`providers.shared.selectModel`),"onUpdate:modelValue":i[1]||=e=>f.value=e},null,8,[`providers`,`model-value`,`placeholder`])]),E(r(B),{variant:`outline`,class:`text-[10px] shrink-0 text-muted-foreground/50`},{default:x(()=>[C(h(r(a)(`providers.shared.tagCustom`)),1)]),_:1}),E(r(S),{variant:`outline`,size:`icon-xs`,class:`shrink-0`,disabled:!p(),onClick:m},{default:x(()=>[E(r(M),{class:`size-3`})]),_:1},8,[`disabled`])])]))}}),Be={class:`page space-y-4 pb-20`},Ve={class:`flex items-center justify-between`},He={class:`flex gap-2 flex-wrap`},Ue={class:`text-left`},We={class:`font-medium text-sm leading-tight flex items-center gap-1.5`},Ge={class:`text-[10px] opacity-60 leading-tight`},Ke={key:0,class:`mt-2.5 px-3 py-2 rounded-r-md bg-primary/8 border-l-[3px] border-l-primary text-[11px] text-muted-foreground flex items-start gap-1.5`},qe={class:`flex items-center justify-between`},Je={key:0,class:`text-[10px] text-muted-foreground/50 flex items-center gap-1`},Ye={class:`text-[10px] font-medium uppercase tracking-wider text-muted-foreground/60 mb-1.5`},Xe={class:`flex items-end gap-2`},Ze={class:`w-40 space-y-1`},Qe={key:0,class:`w-28 space-y-1`},$e={class:`w-64 space-y-1`},et={class:`shrink-0 space-y-1`},tt={key:0,class:`border-t border-border pt-3`},nt={class:`border-t border-border pt-3`},rt={class:`flex items-center justify-between mb-2`},it={class:`text-xs font-medium text-muted-foreground`},at={class:`flex items-center justify-between`},ot={key:0,class:`py-4 text-center text-xs text-muted-foreground`},st={key:1,class:`flex flex-col gap-px bg-border rounded-lg overflow-hidden`},ct={key:2,class:`flex gap-2 mt-2`},lt={class:`border-t border-border pt-3 mt-3`},ut={key:0,class:`mt-2`},dt={class:`grid grid-cols-5 gap-4`},ft={class:`flex items-center justify-between`},pt={class:`col-span-2 space-y-4`},mt={class:`flex items-center justify-between`},ht={key:0,class:`py-6 text-center text-xs text-muted-foreground`},gt={key:1,class:`space-y-1.5 max-h-[320px] overflow-y-auto`},_t={class:`flex items-center gap-2.5 pb-2 border-b border-border`},vt=[`onClick`],yt={class:`flex-1 min-w-0`},bt={class:`flex items-center gap-1.5`},xt={class:`text-xs font-medium`},St={class:`text-[10px] text-muted-foreground mt-0.5`},Ct={class:`fixed bottom-0 right-0 left-56 border-t bg-card/95 backdrop-blur px-6 py-2.5 flex items-center justify-between z-10`},wt={class:`text-xs text-muted-foreground flex items-center gap-1.5 font-mono`},Tt={key:0,class:`text-foreground/80`},Et={class:`text-[11px] px-2 py-0.5 rounded bg-primary/8 text-primary font-medium`},Dt={class:`text-foreground/80`},Ot={class:`flex items-center gap-2`},kt={key:0,class:`flex items-center gap-1 text-[11px] text-primary`},At={class:`font-medium`},jt={key:1,class:`flex items-center gap-1 text-[11px] text-destructive/70`},Q=y({__name:`QuickSetup`,setup(t){let{t:n}=i(),{clientType:a,currentClient:c,providerGroups:u,selectedGroup:d,selectedPlan:y,apiType:b,apiKey:ee,sharedKey:O,endpoints:k,modelConfigs:M,mappingEntries:F,allRecommendedRules:I,recommendedRules:G,selectedRetryRules:K,retryProviderMap:me,saving:q,connectionStatus:J,availablePlans:ge,isNonOpenaiEndpoint:Y,isCustomProvider:X,concurrencyConfig:Z,transformConfig:_e,allProviderGroups:ve,selectClient:ye,onProviderChange:be,onPlanChange:xe,updateMappingTargets:Se,updateMappingMultimodalFallback:Ce,updateMappingClientModel:we,toggleMappingActive:Te,addMappingEntry:Ee,removeMappingEntry:De,toggleRetryRule:Oe,setAllRetryRules:ke,setRetryProvider:Ae,testConnection:je,submit:Me,addCustomModel:Pe,updateModel:Fe,removeModel:Ie,updateModelTimeout:Le,toggleModelCapability:Re}=Ne(),Q=l(``),Mt=l(!1),$=l(`idle`);function Nt(){Q.value.trim()&&(Pe(Q.value.trim()),Q.value=``)}let Pt=m(()=>M.value.filter(e=>e.enabled).length),Ft=m(()=>te.find(e=>e.id===a.value)?.name??a.value),It=m(()=>{let e=a.value?P[a.value]:void 0;return e?e.join(`, `):``});function Lt(){if(!d.value){$.value=`invalid`,R.error(n(`quickSetup.messages.selectProvider`));return}if(!O.value.trim()&&!ee.value.trim()){$.value=`invalid`,R.error(n(`quickSetup.messages.fillApiKey`));return}if(Pt.value===0){$.value=`invalid`,R.error(n(`quickSetup.messages.enableOneModel`));return}$.value=`valid`,R.success(n(`quickSetup.messages.validationPassed`))}return(t,i)=>(v(),_(o,null,[g(`div`,Be,[E(r(V),{class:`ring-0`},{default:x(()=>[E(r(U),{class:`pb-3`},{default:x(()=>[g(`div`,Ve,[E(r(W),{class:`text-sm font-medium`},{default:x(()=>[C(h(r(n)(`quickSetup.client.selectClient`)),1)]),_:1}),r(a)?(v(),p(r(B),{key:0,variant:`outline`,class:`text-[10px] px-1.5 py-0 leading-none border-green-500/30 bg-green-500/10 text-green-500`},{default:x(()=>[E(r(se),{class:`size-2.5 mr-0.5 stroke-[3]`}),C(` `+h(r(n)(`common.selected`)),1)]),_:1})):e(``,!0)])]),_:1}),E(r(H),null,{default:x(()=>[g(`div`,He,[(v(!0),_(o,null,D(r(te),t=>(v(),p(r(S),{key:t.id,variant:`outline`,class:T([`flex h-auto items-center gap-2.5 px-4 py-2.5 text-sm transition-all cursor-pointer`,r(a)===t.id?`border-primary bg-primary/12 text-primary ring-1 ring-primary/30`:`border-border hover:border-muted-foreground/30 text-muted-foreground hover:text-foreground`]),onClick:e=>r(ye)(t.id)},{default:x(()=>[g(`div`,{class:T([`shrink-0 w-6 h-6 rounded-md flex items-center justify-center text-[11px] font-bold text-white`,t.brandBg])},h(t.icon),3),g(`div`,Ue,[g(`div`,We,[C(h(t.name)+` `,1),t.popular?(v(),p(r(B),{key:0,class:`text-[9px] px-1 py-0 leading-none bg-primary/15 text-primary font-medium`},{default:x(()=>[C(h(r(n)(`quickSetup.client.popular`)),1)]),_:1})):e(``,!0)]),g(`div`,Ge,h(t.format)+` · `+h(r(n)(t.descriptionKey)),1)])]),_:2},1032,[`class`,`onClick`]))),128))]),r(a)?(v(),_(`div`,Ke,[E(r(oe),{class:`size-3.5 shrink-0 text-primary mt-px`}),g(`span`,null,h(r(n)(`quickSetup.client.infoBar`,{client:r(c)?.name??r(a),format:r(c)?.format===`anthropic`?`Anthropic Messages API`:r(c)?.format===`openai-responses`?`OpenAI Responses API`:`OpenAI Chat API`,models:It.value})),1)])):e(``,!0)]),_:1})]),_:1}),E(r(V),{class:`ring-0`},{default:x(()=>[E(r(U),{class:`pb-3`},{default:x(()=>[g(`div`,qe,[E(r(W),{class:`text-sm font-medium`},{default:x(()=>[C(h(r(n)(`quickSetup.provider.connection`)),1)]),_:1}),r(d)?(v(),_(`span`,Je,[E(r(N),{class:`size-3 text-muted-foreground/50`}),C(` `+h(r(n)(`quickSetup.provider.autoConfigured`)),1)])):e(``,!0)])]),_:1}),E(r(H),{class:`space-y-3`},{default:x(()=>[g(`div`,Ye,h(r(n)(`quickSetup.provider.groupLabel`)),1),g(`div`,Xe,[g(`div`,Ze,[E(r(L),{class:`text-xs text-muted-foreground`},{default:x(()=>[C(h(r(n)(`quickSetup.provider.label`)),1)]),_:1}),E(r(de),{"model-value":r(d),"onUpdate:modelValue":i[0]||=e=>r(be)(e)},{default:x(()=>[E(r(ce),{class:`w-full text-xs data-[size=default]:h-7`},{default:x(()=>[E(r(le),{placeholder:r(n)(`quickSetup.provider.select`)},null,8,[`placeholder`])]),_:1}),E(r(ae),null,{default:x(()=>[E(r(z),{value:`__custom__`},{default:x(()=>[C(h(r(n)(`quickSetup.provider.custom`)),1)]),_:1}),(v(!0),_(o,null,D(r(u),e=>(v(),p(r(z),{key:e.group,value:e.group},{default:x(()=>[C(h(e.group),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`model-value`])]),r(X)?e(``,!0):(v(),_(`div`,Qe,[E(r(L),{class:`text-xs text-muted-foreground`},{default:x(()=>[C(h(r(n)(`quickSetup.provider.plan`)),1)]),_:1}),E(r(de),{"model-value":r(y),"onUpdate:modelValue":i[1]||=e=>r(xe)(e)},{default:x(()=>[E(r(ce),{class:`w-full text-xs data-[size=default]:h-7`},{default:x(()=>[E(r(le),{placeholder:r(n)(`quickSetup.provider.select`)},null,8,[`placeholder`])]),_:1}),E(r(ae),null,{default:x(()=>[(v(!0),_(o,null,D(r(ge),e=>(v(),p(r(z),{key:e.plan,value:e.plan},{default:x(()=>[C(h(e.plan),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`model-value`])])),g(`div`,$e,[E(r(L),{class:`text-xs text-muted-foreground`},{default:x(()=>[C(h(r(n)(`quickSetup.provider.apiKey`)),1)]),_:1}),E(r(fe),{modelValue:r(O),"onUpdate:modelValue":i[2]||=e=>f(O)?O.value=e:null,type:`password`,autocomplete:`new-password`,placeholder:r(n)(`quickSetup.provider.apiKeyPlaceholder`),class:`md:text-xs h-7`},null,8,[`modelValue`,`placeholder`])]),g(`div`,et,[E(r(L),{class:`text-xs text-muted-foreground invisible`},{default:x(()=>[C(h(r(n)(`quickSetup.provider.connect`)),1)]),_:1}),E(r(S),{variant:`outline`,size:`sm`,disabled:r(J)===`testing`,class:T(r(J)===`ok`?`border-green-500/50 text-green-500`:``),onClick:r(je)},{default:x(()=>[r(J)===`testing`?(v(),_(o,{key:0},[i[11]||=g(`svg`,{class:`w-3.5 h-3.5 mr-1 animate-spin`,fill:`none`,viewBox:`0 0 24 24`},[g(`circle`,{class:`opacity-25`,cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,"stroke-width":`4`}),g(`path`,{class:`opacity-75`,fill:`currentColor`,d:`M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z`})],-1),C(` `+h(r(n)(`quickSetup.provider.testing`)),1)],64)):r(J)===`ok`?(v(),_(o,{key:1},[E(r(ue),{class:`size-3.5 mr-1`}),C(` `+h(r(n)(`quickSetup.provider.connected`)),1)],64)):(v(),_(o,{key:2},[C(h(r(n)(`quickSetup.provider.test`)),1)],64))]),_:1},8,[`disabled`,`class`,`onClick`])])]),r(k).length>0?(v(),_(`div`,tt,[E(ne,{"model-value":r(k),"shared-key":r(O),readonly:!1,"onUpdate:modelValue":i[3]||=e=>k.value=e},null,8,[`model-value`,`shared-key`])])):e(``,!0),g(`div`,nt,[g(`div`,rt,[g(`span`,it,h(r(n)(`quickSetup.concurrency.control`)),1),E(r(B),{variant:`outline`,class:`text-[9px] px-1 py-0 leading-none text-muted-foreground/50`},{default:x(()=>[C(h(r(n)(`quickSetup.concurrency.optional`)),1)]),_:1})]),E(A,{modelValue:r(Z),"onUpdate:modelValue":i[4]||=e=>f(Z)?Z.value=e:null},null,8,[`modelValue`])])]),_:1})]),_:1}),E(r(V),{class:`ring-0`},{default:x(()=>[E(r(U),{class:`pb-3`},{default:x(()=>[g(`div`,at,[E(r(W),{class:`text-sm font-medium`},{default:x(()=>[C(h(r(n)(`quickSetup.model.config`)),1)]),_:1}),E(r(B),{variant:`secondary`,class:`text-[10px]`},{default:x(()=>[C(h(Pt.value)+`/`+h(r(M).length),1)]),_:1})])]),_:1}),E(r(H),null,{default:x(()=>[r(M).length===0?(v(),_(`p`,ot,h(r(n)(`quickSetup.model.selectProviderFirst`)),1)):(v(),_(`div`,st,[(v(!0),_(o,null,D(r(M),(e,t)=>(v(),p(re,{key:e.name,model:e,"api-type":r(b),"is-deep-seek":e.name.toLowerCase().includes(`deepseek`),"is-non-openai-endpoint":r(Y),capabilities:e.capabilities??[`text`],"stream-timeout-ms":e.stream_timeout_ms??void 0,"onUpdate:model":e=>r(Fe)(t,e),onRemove:e=>r(Ie)(t),"onUpdate:streamTimeoutMs":e=>r(Le)(t,e),onToggleCapability:e=>r(Re)(t,e)},null,8,[`model`,`api-type`,`is-deep-seek`,`is-non-openai-endpoint`,`capabilities`,`stream-timeout-ms`,`onUpdate:model`,`onRemove`,`onUpdate:streamTimeoutMs`,`onToggleCapability`]))),128))])),r(X)?(v(),_(`div`,ct,[E(r(fe),{modelValue:Q.value,"onUpdate:modelValue":i[5]||=e=>Q.value=e,placeholder:r(n)(`quickSetup.model.namePlaceholder`),onKeydown:s(w(Nt,[`prevent`]),[`enter`]),class:`flex-1 md:text-xs h-7`},null,8,[`modelValue`,`placeholder`,`onKeydown`]),E(r(S),{type:`button`,variant:`outline`,size:`sm`,onClick:Nt,disabled:!Q.value.trim()},{default:x(()=>[C(h(r(n)(`common.add`)),1)]),_:1},8,[`disabled`])])):e(``,!0),g(`div`,lt,[E(r(S),{variant:`ghost`,class:`flex items-center gap-1.5 text-xs font-medium text-muted-foreground w-full justify-start h-auto px-0`,onClick:i[6]||=e=>Mt.value=!Mt.value},{default:x(()=>[E(r(j),{class:T([`size-3 transition-transform`,Mt.value?`rotate-90`:``])},null,8,[`class`]),C(` `+h(r(n)(`quickSetup.transform.title`))+` `,1),E(r(B),{variant:`outline`,class:`text-[9px] px-1 py-0 leading-none text-muted-foreground/50`},{default:x(()=>[C(h(r(n)(`quickSetup.transform.optional`)),1)]),_:1})]),_:1}),Mt.value?(v(),_(`div`,ut,[E(pe,{modelValue:r(_e),"onUpdate:modelValue":i[7]||=e=>f(_e)?_e.value=e:null},null,8,[`modelValue`])])):e(``,!0)])]),_:1})]),_:1}),g(`div`,dt,[E(r(V),{class:`col-span-3 ring-0`},{default:x(()=>[E(r(U),{class:`pb-3`},{default:x(()=>[g(`div`,ft,[E(r(W),{class:`text-sm font-medium`},{default:x(()=>[C(h(r(n)(`quickSetup.mapping.title`)),1)]),_:1}),E(r(B),{variant:`secondary`,class:`text-[10px]`},{default:x(()=>[C(h(r(n)(`quickSetup.mapping.count`,{count:r(F).length})),1)]),_:1})])]),_:1}),E(r(H),null,{default:x(()=>[E(ze,{entries:r(F),"provider-groups":r(ve),"onUpdate:targets":r(Se),"onUpdate:multimodalFallback":r(Ce),"onUpdate:clientModel":r(we),onToggleActive:r(Te),onAdd:r(Ee),onRemove:r(De)},null,8,[`entries`,`provider-groups`,`onUpdate:targets`,`onUpdate:multimodalFallback`,`onUpdate:clientModel`,`onToggleActive`,`onAdd`,`onRemove`])]),_:1})]),_:1}),g(`div`,pt,[E(r(V),{class:`ring-0`},{default:x(()=>[E(r(U),{class:`pb-3`},{default:x(()=>[g(`div`,mt,[E(r(W),{class:`text-sm font-medium`},{default:x(()=>[C(h(r(n)(`quickSetup.retry.title`)),1)]),_:1}),E(r(B),{variant:`secondary`,class:`text-[10px]`},{default:x(()=>[C(h(r(n)(`quickSetup.retry.selectedCount`,{count:r(G).filter(e=>e.exists).length+r(K).size})),1)]),_:1})])]),_:1}),E(r(H),null,{default:x(()=>[r(G).length===0?(v(),_(`div`,ht,[r(I).length===0?(v(),_(o,{key:0},[C(h(r(n)(`quickSetup.retry.allCreated`)),1)],64)):(v(),_(o,{key:1},[C(h(r(n)(`quickSetup.retry.selectProviderFirst`)),1)],64))])):(v(),_(`div`,gt,[g(`div`,_t,[E(r(ie),{disabled:r(G).every(e=>e.exists),"model-value":r(G).filter(e=>!e.exists).every(e=>r(K).has(e.name))?!0:r(G).some(e=>!e.exists&&r(K).has(e.name))?`indeterminate`:!1,class:`mt-0.5`,"onUpdate:modelValue":i[8]||=e=>{let t=e===!0;r(ke)(r(G).filter(e=>!e.exists).map(e=>e.name),t)}},null,8,[`disabled`,`model-value`]),g(`span`,{class:T([`text-xs font-medium`,r(G).every(e=>e.exists)?`text-muted-foreground/40`:`text-muted-foreground`])},h(r(n)(`common.selectAll`)),3)]),(v(!0),_(o,null,D(r(G),t=>(v(),_(`div`,{key:t.name,class:T([`flex items-start gap-2.5 rounded-md transition-colors`,t.exists?`opacity-60 cursor-default p-2`:`hover:bg-muted/50 cursor-pointer p-2`]),onClick:e=>!t.exists&&r(Oe)(t.name,!r(K).has(t.name))},[E(r(ie),{"model-value":t.exists?!0:r(K).has(t.name),disabled:t.exists,class:`mt-0.5`,"onUpdate:modelValue":e=>r(Oe)(t.name,e===!0),onClick:i[9]||=w(()=>{},[`stop`])},null,8,[`model-value`,`disabled`,`onUpdate:modelValue`]),g(`div`,yt,[g(`div`,bt,[g(`span`,xt,h(t.name),1),t.exists?(v(),p(r(B),{key:0,variant:`secondary`,class:`text-[9px] px-1.5 py-0 leading-none bg-muted text-muted-foreground`},{default:x(()=>[C(h(r(n)(`quickSetup.retry.configured`)),1)]),_:1})):e(``,!0)]),g(`div`,St,h(t.status_code)+` · `+h(t.retry_strategy===`fixed`?r(n)(`quickSetup.retry.fixed`):r(n)(`quickSetup.retry.exponential`))+` · `+h(t.retry_delay_ms/1e3)+`s · `+h(t.max_retries)+h(r(n)(`quickSetup.retry.times`)),1)]),!t.exists&&t.providers&&t.providers.length>0?(v(),_(`div`,{key:0,class:`shrink-0`,onClick:i[10]||=w(()=>{},[`stop`])},[E(r(de),{"model-value":r(me).get(t.name)??`general`,"onUpdate:modelValue":e=>r(Ae)(t.name,e)},{default:x(()=>[E(r(ce),{class:`h-6 text-[10px] px-2 py-0 gap-1`},{default:x(()=>[E(r(le))]),_:1}),E(r(ae),null,{default:x(()=>[E(r(z),{value:`general`},{default:x(()=>[C(h(r(n)(`quickSetup.retry.general`)),1)]),_:1}),(v(!0),_(o,null,D(t.providers,e=>(v(),p(r(z),{key:e,value:e},{default:x(()=>[C(h(e),1)]),_:2},1032,[`value`]))),128))]),_:2},1024)]),_:2},1032,[`model-value`,`onUpdate:modelValue`])])):t.exists?e(``,!0):(v(),p(r(B),{key:1,variant:`secondary`,class:`text-[9px] px-1 py-0 leading-none shrink-0 mt-0.5`},{default:x(()=>[C(h(r(n)(`quickSetup.retry.general`)),1)]),_:1}))],10,vt))),128))]))]),_:1})]),_:1})])])]),g(`div`,Ct,[g(`div`,wt,[r(a)?(v(),_(`span`,Tt,h(Ft.value),1)):e(``,!0),r(d)?(v(),_(o,{key:1},[i[13]||=g(`span`,{class:`text-muted-foreground/40`},`→`,-1),g(`span`,Et,h(r(X)?r(n)(`quickSetup.provider.custom`):r(d)),1),r(y)?(v(),_(o,{key:0},[i[12]||=g(`span`,{class:`text-muted-foreground/40`},`/`,-1),g(`span`,Dt,h(r(y)),1)],64)):e(``,!0)],64)):e(``,!0),i[14]||=g(`span`,{class:`text-muted-foreground/40`},`·`,-1),g(`span`,null,h(r(n)(`quickSetup.footer.models`,{count:Pt.value})),1),i[15]||=g(`span`,{class:`text-muted-foreground/40`},`·`,-1),g(`span`,null,h(r(n)(`quickSetup.footer.mappings`,{count:r(F).length})),1),i[16]||=g(`span`,{class:`text-muted-foreground/40`},`·`,-1),g(`span`,null,h(r(n)(`quickSetup.footer.rules`,{count:r(K).size+r(G).filter(e=>e.exists).length})),1)]),g(`div`,Ot,[$.value===`valid`?(v(),_(`div`,kt,[E(r(ue),{class:`size-3.5`}),g(`span`,At,h(r(n)(`quickSetup.footer.validated`)),1)])):$.value===`invalid`?(v(),_(`div`,jt,[E(r(he),{class:`size-3.5`}),g(`span`,null,h(r(n)(`quickSetup.footer.invalid`)),1)])):e(``,!0),E(r(S),{size:`sm`,variant:`outline`,onClick:Lt},{default:x(()=>[C(h(r(n)(`quickSetup.footer.validate`)),1)]),_:1}),E(r(S),{size:`sm`,disabled:r(q),onClick:r(Me)},{default:x(()=>[r(q)?(v(),_(o,{key:0},[i[17]||=g(`svg`,{class:`w-3.5 h-3.5 mr-1 animate-spin`,fill:`none`,viewBox:`0 0 24 24`},[g(`circle`,{class:`opacity-25`,cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,"stroke-width":`4`}),g(`path`,{class:`opacity-75`,fill:`currentColor`,d:`M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z`})],-1),C(` `+h(r(n)(`quickSetup.footer.saving`)),1)],64)):(v(),_(o,{key:1},[C(h(r(n)(`quickSetup.footer.saveConfig`)),1)],64))]),_:1},8,[`disabled`,`onClick`])])])],64))}});export{Q as default};
1
+ import{$ as e,A as t,Et as n,Gt as r,H as i,I as a,J as o,K as s,L as c,Lt as l,M as u,N as d,Nt as f,Q as p,X as m,Xt as h,Z as g,et as _,gt as v,it as y,k as b,kt as x,mt as ee,n as S,nt as C,q as w,qt as T,rt as E,vt as D}from"./button-DG6Kd0iG.js";import{n as O,r as k,t as A}from"./ConcurrencyControl-CDE26lBY.js";import{t as j}from"./chevron-right-DoewhoT5.js";import{t as M}from"./plus-CtcJ9YdO.js";import{t as N}from"./sparkles-6sEkagjq.js";import{a as P,i as te,n as ne,o as F,r as re,t as I}from"./model-patches-DG8EiClH.js";import{t as ie}from"./Checkbox-CA9kxtM4.js";import{t as L}from"./Label-DmDoAc6v.js";import{_ as ae,a as R,ft as oe,g as z,gt as se,h as ce,m as le,mt as ue,v as de}from"./index-D_n3EVk6.js";import{t as B}from"./badge-BscUNLaG.js";import{t as V}from"./Card-UQRcFVIJ.js";import{t as H}from"./CardContent-BAoEyF8W.js";import{n as U,t as W}from"./CardTitle-C17xy1UE.js";import{t as fe}from"./Input-DVGxkxMa.js";import{t as G}from"./CascadingModelSelect-B7DWy49d.js";import{i as K,n as pe,o as me,r as q,t as J}from"./transform-domain-8xyILR30.js";var he=c(`circle-alert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),ge={DeepSeek:`deepseek`,百度千帆:`qianfan`,科大讯飞:`iflytek`,硅基流动:`siliconflow`,智谱:`zhipu`,月之暗面:`moonshot`,Minimax:`minimax`,火山引擎:`volcengine`,阿里云:`aliyun`,腾讯云:`tencent`,OpenCode:`opencode`,阶跃星辰:`stepfun`};function Y(e){return ge[e]??e.toLowerCase().replace(/[^a-z0-9]/gi,`-`).replace(/-+/g,`-`)}function X(e,t){let{injectHeaders:n,dropFields:r,requestDefaults:i}=e;if(!n.trim()&&!r.trim()&&!i.trim())return;let{rule:a,errorKey:o}=J({injectHeaders:n,dropFields:r,requestDefaults:i});if(o)return t(o),!1;if(a)return JSON.parse(a)}async function Z(e,t){let n=[];for(let r of t)if(r.existing&&r.existingId&&r.originalActive!==void 0&&r.active!==r.originalActive)try{await e.toggleMappingGroup(r.existingId)}catch(e){console.error(`quick-setup-helpers.toggleChangedMappings:`,e),n.push(r.clientModel)}return n}function _e(e,t,n){return e.filter(e=>t.has(e.name)&&!e.exists).map(e=>{let t=n.get(e.name)??`general`;return{name:e.name,status_code:e.status_code,body_pattern:e.body_pattern,retry_strategy:e.retry_strategy,retry_delay_ms:e.retry_delay_ms,max_retries:e.max_retries,max_delay_ms:e.max_delay_ms,provider_shortname:t===`general`?null:t}})}function ve(e){return{name:e.isCustom?`custom-${Date.now()}`:`${Y(e.selectedGroup)}-${Y(e.selectedPlan)}`,api_type:e.apiType,base_url:e.baseUrl,upstream_path:e.upstreamPath||void 0,api_key:e.apiKey,models:e.models.map(e=>({name:e.name,context_window:e.contextWindow,patches:e.patches.length>0?e.patches:void 0,stream_timeout_ms:e.stream_timeout_ms??void 0,capabilities:e.capabilities&&e.capabilities.length>0?e.capabilities:void 0})),concurrency_mode:e.concurrency.mode,max_concurrency:e.concurrency.mode===`none`?void 0:e.concurrency.max_concurrency,queue_timeout_ms:e.concurrency.mode===`none`?void 0:e.concurrency.queue_timeout_ms,max_queue_size:e.concurrency.mode===`none`?void 0:e.concurrency.max_queue_size,...e.endpoints&&e.endpoints.length>0?{endpoints:e.endpoints}:{}}}function ye(e,t,n){let r;return r=e===`pi`?t.map(e=>e.name):P[e]??t.map(e=>e.name),r.map(i=>{let a=n.find(e=>e.client_model===i);if(a){let e={};try{e=JSON.parse(a.rule)}catch{e={}}let n=e.targets??[];return{clientModel:i,targets:n.length>0?n.map(e=>({backend_model:e.backend_model,provider_id:e.provider_id,overflow_provider_id:e.overflow_provider_id,overflow_model:e.overflow_model})):[{backend_model:t[0]?.name??``,provider_id:`__new__`}],existing:!0,existingId:a.id,tag:`existing`,active:!!a.is_active,originalActive:!!a.is_active}}return{clientModel:i,targets:[{backend_model:t[r.indexOf(i)]?.name??t[t.length-1]?.name??``,provider_id:`__new__`}],existing:!1,tag:e===`pi`?`auto`:`def`,active:!0}})}function be(e,t){return e===`openai-responses`&&(t===`openai`||t===`openai-responses`)?`openai-responses`:t}function xe(e){return{provider:ve({isCustom:e.isCustomProvider,selectedGroup:e.selectedGroup,selectedPlan:e.selectedPlan,apiType:e.apiType,baseUrl:e.baseUrl,upstreamPath:e.upstreamPath,apiKey:e.apiKey,models:e.models,concurrency:e.concurrency,endpoints:e.endpoints}),mappings:e.mappingEntries.filter(e=>e.targets[0]?.backend_model).map(e=>{if(e.targets.length>1||e.targets[0]?.overflow_model||e.multimodalFallback?.backend_model){let t={targets:e.targets.map(e=>{let t={backend_model:e.backend_model,provider_id:e.provider_id};return e.overflow_provider_id&&(t.overflow_provider_id=e.overflow_provider_id),e.overflow_model&&(t.overflow_model=e.overflow_model),t})};return e.multimodalFallback?.backend_model&&(t.multimodal_fallback={provider_id:e.multimodalFallback.provider_id,backend_model:e.multimodalFallback.backend_model}),{client_model:e.clientModel,backend_model:e.targets[0]?.backend_model??``,rule:JSON.stringify(t)}}return{client_model:e.clientModel,backend_model:e.targets[0]?.backend_model??``}}),retry_rules:_e(e.recommendedRules,e.selectedRetryRules,e.retryProviderMap),transform_rules:e.transformRules}}function Se(e,t){let n=new Map;for(let r of e){if(r.exists)continue;let e=r.providers??[];e.length>0&&t&&e.includes(t)?n.set(r.name,t):n.set(r.name,`general`)}return n}function Ce(e,t,n){t.value=e.models.map(t=>({name:t,contextWindow:F(t),enabled:!0,patches:I(t,e.apiType,n.value),stream_timeout_ms:d,capabilities:e.modelCapabilities?.[t]}))}function we(e,t){let n=t.find(t=>t.group===e.defaultProvider);if(!n||n.presets.length===0)return null;let r=e.format===`openai-responses`?[`openai-responses`,`openai`]:[e.format],i=n.presets.find(t=>r.includes(t.apiType)&&t.plan===e.defaultPlan)??n.presets.find(e=>r.includes(e.apiType))??n.presets[0];return{group:n.group,plan:i.plan,apiType:be(e.format,i.apiType),preset:i}}function Te(e,t){if(t.selectedGroup.value=e,t.selectedPlan.value=``,t.modelConfigs.value=[],t.endpoints.value=[],e===`__custom__`)t.apiType.value=`openai`,t.customBaseUrl.value=``,t.customUpstreamPath.value=``,t.endpoints.value=[{api_type:`openai`,base_url:``,upstream_path:null,api_key:null}];else{let n=t.providerGroups.value.find(t=>t.group===e);if(n&&n.presets.length>0){let e=t.currentClient.value,r=e?.format===`openai-responses`?[`openai-responses`,`openai`]:e?[e.format]:[],i=(e?n.presets.find(e=>r.includes(e.apiType)):null)??n.presets[0];t.selectedPlan.value=i.plan,t.apiType.value=be(e?.format,i.apiType),Ce(i,t.modelConfigs,t.isNonOpenaiEndpoint),De(t.endpoints,n.presets)}}t.updateMappings(),t.syncRetryRules()}function Ee(e,t,n,r,i,a,o,s,c){let l=o.value.find(e=>e.group===t.value);if(!l)return;let u=l.presets.find(t=>t.plan===e);u&&(n.value=be(r.value?.format,u.apiType),Ce(u,i,a),De(s,l.presets),c())}function De(e,t){let n=new Set,r=[];for(let e of t)n.has(e.apiType)||(n.add(e.apiType),r.push({api_type:e.apiType,base_url:e.baseUrl,upstream_path:e.upstreamPath||null,api_key:null}));e.value=r}var Oe=800,ke=1500;function Ae(e){let n=()=>{e.data.mappingEntries.value=ye(e.selection.clientType.value,e.data.modelConfigs.value.filter(e=>e.enabled),e.data.existingMappings.value)},r=t=>{let{selection:r,data:i}=e;r.clientType.value=t;let a=r.currentClient.value;if(a){let e=we({defaultProvider:a.defaultProvider,defaultPlan:a.defaultPlan,format:a.format},r.providerGroups.value);if(e){r.selectedGroup.value=e.group,r.selectedPlan.value=e.plan,r.apiType.value=e.apiType,Ce(e.preset,i.modelConfigs,i.isNonOpenaiEndpoint);let t=r.providerGroups.value.find(t=>t.group===e.group);t&&De(i.endpoints,t.presets)}}n(),je(e)},i={selectedGroup:e.selection.selectedGroup,selectedPlan:e.selection.selectedPlan,apiType:e.selection.apiType,modelConfigs:e.data.modelConfigs,customBaseUrl:e.selection.customBaseUrl,customUpstreamPath:e.selection.customUpstreamPath,providerGroups:e.selection.providerGroups,currentClient:e.selection.currentClient,isNonOpenaiEndpoint:e.data.isNonOpenaiEndpoint,endpoints:e.data.endpoints,updateMappings:n,syncRetryRules:()=>je(e)};return{updateMappings:n,selectClient:r,onProviderChange:e=>Te(e,i),onPlanChange:t=>{let{selection:r,data:i}=e;r.selectedPlan.value=t,Ee(t,r.selectedGroup,r.apiType,r.currentClient,i.modelConfigs,i.isNonOpenaiEndpoint,r.providerGroups,i.endpoints,n)},toggleRetryRule:(t,n)=>{let r=new Set(e.data.selectedRetryRules.value);n?r.add(t):r.delete(t),e.data.selectedRetryRules.value=r},setAllRetryRules:(t,n)=>{let r=new Set(e.data.selectedRetryRules.value);for(let e of t)n?r.add(e):r.delete(e);e.data.selectedRetryRules.value=r},updateMappingTargets:(t,n)=>{e.data.mappingEntries.value=e.data.mappingEntries.value.map((e,r)=>r===t?{...e,targets:n}:e)},updateMappingClientModel:(t,n)=>{e.data.mappingEntries.value=e.data.mappingEntries.value.map((e,r)=>r===t?{...e,clientModel:n}:e)},updateMappingMultimodalFallback:(t,n)=>{e.data.mappingEntries.value=e.data.mappingEntries.value.map((e,r)=>r===t?{...e,multimodalFallback:n}:e)},toggleMappingActive:t=>{e.data.mappingEntries.value=e.data.mappingEntries.value.map((e,n)=>n===t?{...e,active:!e.active}:e)},addMappingEntry:(t,n)=>{e.data.mappingEntries.value=[...e.data.mappingEntries.value.filter(e=>e.clientModel!==t),{clientModel:t,targets:[{backend_model:n,provider_id:`__new__`}],existing:!1,tag:`cust`,active:!0}]},removeMappingEntry:t=>{if(e.data.mappingEntries.value.find(e=>e.clientModel===t)?.existing){R.error(e.t(`quickSetup.messages.existingMappingDelete`));return}e.data.mappingEntries.value=e.data.mappingEntries.value.filter(e=>e.clientModel!==t)},onConcurrencyModeChange:t=>{e.submit.concurrencyConfig.value={...e.submit.concurrencyConfig.value,mode:t},t===`auto`?e.submit.concurrencyConfig.value.max_concurrency=q.max_concurrency:t===`manual`&&(e.submit.concurrencyConfig.value.max_concurrency=K.max_concurrency)},testConnection:()=>e.data.apiKey.value.trim()?(e.submit.connectionStatus.value=`testing`,new Promise(e=>setTimeout(e,Oe)).then(()=>{e.submit.connectionStatus.value=`ok`})):(e.submit.connectionStatus.value=`error`,R.error(e.t(`quickSetup.messages.fillApiKeyFirst`)),Promise.resolve()),addCustomModel:(t,n=u)=>{e.data.modelConfigs.value.push({name:t,contextWindow:n,enabled:!0,patches:I(t,e.selection.apiType.value,e.data.isNonOpenaiEndpoint.value),stream_timeout_ms:d,capabilities:[`text`]})},updateModel:(t,n)=>{let r=[...e.data.modelConfigs.value];r[t]=n,e.data.modelConfigs.value=r},removeModel:t=>{e.data.modelConfigs.value=e.data.modelConfigs.value.filter((e,n)=>n!==t)},updateModelTimeout:(t,n)=>{let r=[...e.data.modelConfigs.value];r[t]={...r[t],stream_timeout_ms:n||void 0},e.data.modelConfigs.value=r},toggleModelCapability:(t,n)=>{let r=[...e.data.modelConfigs.value],i={...r[t]},a=i.capabilities??[`text`];a.includes(n)?i.capabilities=a.filter(e=>e!==n):i.capabilities=[...a,n],r[t]=i,e.data.modelConfigs.value=r},submit:async()=>{let{selection:n,data:r,submit:i}=e;if(!n.currentPreset.value){R.error(e.t(`quickSetup.messages.selectProviderAndPlan`));return}if(!r.apiKey.value.trim()){R.error(e.t(`quickSetup.messages.fillApiKey`));return}i.saving.value=!0;try{let t=X(i.transformConfig.value,t=>R.error(e.t(`quickSetup.messages.${t}`)));if(t===!1)return;await b.quickSetup(xe({isCustomProvider:n.isCustomProvider.value,selectedGroup:n.selectedGroup.value,retryProviderMap:r.retryProviderMap.value,selectedPlan:n.selectedPlan.value,apiType:n.apiType.value,baseUrl:r.baseUrl.value,upstreamPath:r.upstreamPath.value,apiKey:r.apiKey.value.trim(),models:r.modelConfigs.value.filter(e=>e.enabled),concurrency:i.concurrencyConfig.value,mappingEntries:r.mappingEntries.value,recommendedRules:r.recommendedRules.value,selectedRetryRules:r.selectedRetryRules.value,transformRules:t,endpoints:r.endpoints.value.length>0?r.endpoints.value.map(e=>({...e,api_key:e.api_key||r.apiKey.value.trim()||null})):void 0}));let o=await Z(b,r.mappingEntries.value);R.success(o.length>0?e.t(`quickSetup.messages.setupCompleteWithErrors`,{count:o.length}):e.t(`quickSetup.messages.setupComplete`)),await new Promise(e=>setTimeout(e,ke)),a.push(`/`)}catch(n){console.error(`quickSetup.save:`,n),R.error(t(n,e.t(`quickSetup.messages.setupFailed`)))}finally{i.saving.value=!1}}}}function je(e){let{selection:t,data:n}=e;n.selectedRetryRules.value=new Set(n.recommendedRules.value.filter(e=>!e.exists).map(e=>e.name));let r=t.providerGroups.value.find(e=>e.group===t.selectedGroup.value)?.shortname;n.retryProviderMap.value=Se(n.recommendedRules.value,r)}function Me(e,t,n,r,i,a){let o=m(()=>t.value?{provider:{id:e.value?`__new_custom__`:`__new_${Y(t.value)}_${Y(n.value)}__`,name:e.value?a(`quickSetup.provider.customProvider`):`${t.value} - ${n.value}`},models:r.value.filter(e=>e.enabled).map(e=>({name:e.name,contextWindow:e.contextWindow})),isNew:!0}:null);return{allProviderGroups:m(()=>{let e=i.value.map(e=>({provider:{id:e.id,name:e.name},models:(e.models??[]).map(e=>({name:e.name,contextWindow:e.context_window??2e5}))}));return o.value&&o.value.models.length>0?[...e,o.value]:e})}}function Ne(){let{t:e}=i(),r=l(`claude-code`),a=l([]),o=l(``),s=l(``),c=l(`anthropic`),u=l(``),d=l(``),f=l([]),p=l([]),h=l([]),g=l([]),_=l(new Set),v=l(new Map),y=l(!1),x=l(`idle`),S=l({...q}),C=l({...me}),w=l([]),T=l([]),E=m(()=>o.value===`__custom__`),D=m(()=>te.find(e=>e.id===r.value)),O=m(()=>{if(!(!o.value||!s.value))return a.value.find(e=>e.group===o.value)?.presets.find(e=>e.plan===s.value)}),k=l(``),A=l(``),j=l(``),M=l(``);n(O,e=>{if(e&&!E.value){j.value=e.baseUrl;let t=e.apiType===`anthropic`?`/v1/messages`:e.apiType===`openai-responses`?`/v1/responses`:`/v1/chat/completions`;M.value=e.upstreamPath&&e.upstreamPath!==t?e.upstreamPath:``}});let N=m(()=>E.value?k.value:j.value),P=m(()=>E.value?A.value:M.value),ne=m(()=>a.value.find(e=>e.group===o.value)?.presets??[]),F=m(()=>!N.value.includes(`openai.com`)),re=m(()=>{let e=a.value.find(e=>e.group===o.value)?.shortname??o.value;return g.value.filter(t=>!t.providers||t.providers.length===0||t.providers.includes(e))}),ie=Me(E,o,s,p,T,e).allProviderGroups,L=Ae({t:e,selection:{clientType:r,selectedGroup:o,selectedPlan:s,apiType:c,providerGroups:a,currentClient:D,currentPreset:O,isCustomProvider:E,customBaseUrl:k,customUpstreamPath:A},data:{modelConfigs:p,mappingEntries:h,apiKey:u,baseUrl:N,upstreamPath:P,existingMappings:w,allProviders:T,allRecommendedRules:g,recommendedRules:re,selectedRetryRules:_,retryProviderMap:v,isNonOpenaiEndpoint:F,endpoints:f},submit:{saving:y,connectionStatus:x,concurrencyConfig:S,transformConfig:C}});return n(c,()=>{for(let e of p.value)e.patches=I(e.name,c.value,F.value)}),ee(async()=>{try{let[e,t,n,r]=await Promise.allSettled([b.recommended.getProviders(),b.recommended.getRetryRules(),b.getMappingGroups(),b.getProviders()]);e.status===`fulfilled`&&(a.value=e.value),t.status===`fulfilled`&&(g.value=t.value),n.status===`fulfilled`&&(w.value=n.value),r.status===`fulfilled`&&(T.value=r.value),L.selectClient(`claude-code`)}catch(e){console.error(`quickSetup.load:`,e),R.error(t(e,``))}}),{clientType:r,providerGroups:a,selectedGroup:o,selectedPlan:s,apiType:c,apiKey:u,sharedKey:d,endpoints:f,modelConfigs:p,mappingEntries:h,allRecommendedRules:g,recommendedRules:re,selectedRetryRules:_,retryProviderMap:v,saving:y,connectionStatus:x,currentClient:D,currentPreset:O,baseUrl:N,customBaseUrl:k,presetBaseUrl:j,upstreamPath:P,customUpstreamPath:A,presetUpstreamPath:M,isCustomProvider:E,availablePlans:ne,isNonOpenaiEndpoint:F,concurrencyConfig:S,transformConfig:C,existingMappings:w,allProviders:T,allProviderGroups:ie,...L,setRetryProvider:(e,t)=>void v.value.set(e,t)}}var Pe={class:`space-y-1.5`},Fe={class:`px-3 py-1.5`},Ie={key:0,class:`py-3 text-center text-xs text-muted-foreground`},Le={class:`flex items-center gap-3 rounded-md border border-dashed border-border px-3 py-2`},Re={class:`flex-1 min-w-0`},ze=y({__name:`QuickSetupMappingList`,props:{entries:{},providerGroups:{}},emits:[`update:targets`,`update:multimodal-fallback`,`update:client-model`,`toggle-active`,`add`,`remove`],setup(t,{emit:n}){let{t:a}=i(),s=n,c=l(null);function u(e){c.value=c.value===e?null:e}let d=l(``),f=l();function p(){return d.value.trim().length>0&&!!f.value?.model}function m(){let e=d.value.trim(),t=f.value;e&&t&&(s(`add`,e,t.model),d.value=``,f.value=void 0)}function y(e){e.key===`Enter`&&p()&&(e.preventDefault(),m())}return(n,i)=>(v(),_(`div`,Pe,[(v(!0),_(o,null,D(t.entries,(e,n)=>(v(),_(`div`,{key:n,class:`rounded-md border border-border overflow-hidden`},[g(`div`,Fe,[E(O,{entry:e,"provider-groups":t.providerGroups,expanded:c.value===e.clientModel,"editable-client-model":c.value===e.clientModel,onExpand:t=>u(e.clientModel),"onUpdate:targets":e=>s(`update:targets`,n,e),"onUpdate:clientModel":e=>s(`update:client-model`,n,e),"onUpdate:multimodalFallback":e=>s(`update:multimodal-fallback`,n,e),onToggleActive:e=>s(`toggle-active`,n),onRemove:t=>s(`remove`,e.clientModel)},null,8,[`entry`,`provider-groups`,`expanded`,`editable-client-model`,`onExpand`,`onUpdate:targets`,`onUpdate:clientModel`,`onUpdate:multimodalFallback`,`onToggleActive`,`onRemove`])])]))),128)),t.entries.length===0?(v(),_(`p`,Ie,h(r(a)(`providers.shared.noMappings`)),1)):e(``,!0),g(`div`,Le,[E(r(fe),{modelValue:d.value,"onUpdate:modelValue":i[0]||=e=>d.value=e,placeholder:r(a)(`providers.shared.clientModel`),class:`h-7 min-w-[140px] text-xs font-mono border-border`,onKeydown:y},null,8,[`modelValue`,`placeholder`]),E(r(k),{class:`size-3.5 shrink-0 text-muted-foreground/30`}),g(`div`,Re,[E(G,{providers:t.providerGroups,"model-value":f.value,compact:``,placeholder:r(a)(`providers.shared.selectModel`),"onUpdate:modelValue":i[1]||=e=>f.value=e},null,8,[`providers`,`model-value`,`placeholder`])]),E(r(B),{variant:`outline`,class:`text-[10px] shrink-0 text-muted-foreground/50`},{default:x(()=>[C(h(r(a)(`providers.shared.tagCustom`)),1)]),_:1}),E(r(S),{variant:`outline`,size:`icon-xs`,class:`shrink-0`,disabled:!p(),onClick:m},{default:x(()=>[E(r(M),{class:`size-3`})]),_:1},8,[`disabled`])])]))}}),Be={class:`page space-y-4 pb-20`},Ve={class:`flex items-center justify-between`},He={class:`flex gap-2 flex-wrap`},Ue={class:`text-left`},We={class:`font-medium text-sm leading-tight flex items-center gap-1.5`},Ge={class:`text-[10px] opacity-60 leading-tight`},Ke={key:0,class:`mt-2.5 px-3 py-2 rounded-r-md bg-primary/8 border-l-[3px] border-l-primary text-[11px] text-muted-foreground flex items-start gap-1.5`},qe={class:`flex items-center justify-between`},Je={key:0,class:`text-[10px] text-muted-foreground/50 flex items-center gap-1`},Ye={class:`text-[10px] font-medium uppercase tracking-wider text-muted-foreground/60 mb-1.5`},Xe={class:`flex items-end gap-2`},Ze={class:`w-40 space-y-1`},Qe={key:0,class:`w-28 space-y-1`},$e={class:`w-64 space-y-1`},et={class:`shrink-0 space-y-1`},tt={key:0,class:`border-t border-border pt-3`},nt={class:`border-t border-border pt-3`},rt={class:`flex items-center justify-between mb-2`},it={class:`text-xs font-medium text-muted-foreground`},at={class:`flex items-center justify-between`},ot={key:0,class:`py-4 text-center text-xs text-muted-foreground`},st={key:1,class:`flex flex-col gap-px bg-border rounded-lg overflow-hidden`},ct={key:2,class:`flex gap-2 mt-2`},lt={class:`border-t border-border pt-3 mt-3`},ut={key:0,class:`mt-2`},dt={class:`grid grid-cols-5 gap-4`},ft={class:`flex items-center justify-between`},pt={class:`col-span-2 space-y-4`},mt={class:`flex items-center justify-between`},ht={key:0,class:`py-6 text-center text-xs text-muted-foreground`},gt={key:1,class:`space-y-1.5 max-h-[320px] overflow-y-auto`},_t={class:`flex items-center gap-2.5 pb-2 border-b border-border`},vt=[`onClick`],yt={class:`flex-1 min-w-0`},bt={class:`flex items-center gap-1.5`},xt={class:`text-xs font-medium`},St={class:`text-[10px] text-muted-foreground mt-0.5`},Ct={class:`fixed bottom-0 right-0 left-56 border-t bg-card/95 backdrop-blur px-6 py-2.5 flex items-center justify-between z-10`},wt={class:`text-xs text-muted-foreground flex items-center gap-1.5 font-mono`},Tt={key:0,class:`text-foreground/80`},Et={class:`text-[11px] px-2 py-0.5 rounded bg-primary/8 text-primary font-medium`},Dt={class:`text-foreground/80`},Ot={class:`flex items-center gap-2`},kt={key:0,class:`flex items-center gap-1 text-[11px] text-primary`},At={class:`font-medium`},jt={key:1,class:`flex items-center gap-1 text-[11px] text-destructive/70`},Q=y({__name:`QuickSetup`,setup(t){let{t:n}=i(),{clientType:a,currentClient:c,providerGroups:u,selectedGroup:d,selectedPlan:y,apiType:b,apiKey:ee,sharedKey:O,endpoints:k,modelConfigs:M,mappingEntries:F,allRecommendedRules:I,recommendedRules:G,selectedRetryRules:K,retryProviderMap:me,saving:q,connectionStatus:J,availablePlans:ge,isNonOpenaiEndpoint:Y,isCustomProvider:X,concurrencyConfig:Z,transformConfig:_e,allProviderGroups:ve,selectClient:ye,onProviderChange:be,onPlanChange:xe,updateMappingTargets:Se,updateMappingMultimodalFallback:Ce,updateMappingClientModel:we,toggleMappingActive:Te,addMappingEntry:Ee,removeMappingEntry:De,toggleRetryRule:Oe,setAllRetryRules:ke,setRetryProvider:Ae,testConnection:je,submit:Me,addCustomModel:Pe,updateModel:Fe,removeModel:Ie,updateModelTimeout:Le,toggleModelCapability:Re}=Ne(),Q=l(``),Mt=l(!1),$=l(`idle`);function Nt(){Q.value.trim()&&(Pe(Q.value.trim()),Q.value=``)}let Pt=m(()=>M.value.filter(e=>e.enabled).length),Ft=m(()=>te.find(e=>e.id===a.value)?.name??a.value),It=m(()=>{let e=a.value?P[a.value]:void 0;return e?e.join(`, `):``});function Lt(){if(!d.value){$.value=`invalid`,R.error(n(`quickSetup.messages.selectProvider`));return}if(!O.value.trim()&&!ee.value.trim()){$.value=`invalid`,R.error(n(`quickSetup.messages.fillApiKey`));return}if(Pt.value===0){$.value=`invalid`,R.error(n(`quickSetup.messages.enableOneModel`));return}$.value=`valid`,R.success(n(`quickSetup.messages.validationPassed`))}return(t,i)=>(v(),_(o,null,[g(`div`,Be,[E(r(V),{class:`ring-0`},{default:x(()=>[E(r(U),{class:`pb-3`},{default:x(()=>[g(`div`,Ve,[E(r(W),{class:`text-sm font-medium`},{default:x(()=>[C(h(r(n)(`quickSetup.client.selectClient`)),1)]),_:1}),r(a)?(v(),p(r(B),{key:0,variant:`outline`,class:`text-[10px] px-1.5 py-0 leading-none border-green-500/30 bg-green-500/10 text-green-500`},{default:x(()=>[E(r(se),{class:`size-2.5 mr-0.5 stroke-[3]`}),C(` `+h(r(n)(`common.selected`)),1)]),_:1})):e(``,!0)])]),_:1}),E(r(H),null,{default:x(()=>[g(`div`,He,[(v(!0),_(o,null,D(r(te),t=>(v(),p(r(S),{key:t.id,variant:`outline`,class:T([`flex h-auto items-center gap-2.5 px-4 py-2.5 text-sm transition-all cursor-pointer`,r(a)===t.id?`border-primary bg-primary/12 text-primary ring-1 ring-primary/30`:`border-border hover:border-muted-foreground/30 text-muted-foreground hover:text-foreground`]),onClick:e=>r(ye)(t.id)},{default:x(()=>[g(`div`,{class:T([`shrink-0 w-6 h-6 rounded-md flex items-center justify-center text-[11px] font-bold text-white`,t.brandBg])},h(t.icon),3),g(`div`,Ue,[g(`div`,We,[C(h(t.name)+` `,1),t.popular?(v(),p(r(B),{key:0,class:`text-[9px] px-1 py-0 leading-none bg-primary/15 text-primary font-medium`},{default:x(()=>[C(h(r(n)(`quickSetup.client.popular`)),1)]),_:1})):e(``,!0)]),g(`div`,Ge,h(t.format)+` · `+h(r(n)(t.descriptionKey)),1)])]),_:2},1032,[`class`,`onClick`]))),128))]),r(a)?(v(),_(`div`,Ke,[E(r(oe),{class:`size-3.5 shrink-0 text-primary mt-px`}),g(`span`,null,h(r(n)(`quickSetup.client.infoBar`,{client:r(c)?.name??r(a),format:r(c)?.format===`anthropic`?`Anthropic Messages API`:r(c)?.format===`openai-responses`?`OpenAI Responses API`:`OpenAI Chat API`,models:It.value})),1)])):e(``,!0)]),_:1})]),_:1}),E(r(V),{class:`ring-0`},{default:x(()=>[E(r(U),{class:`pb-3`},{default:x(()=>[g(`div`,qe,[E(r(W),{class:`text-sm font-medium`},{default:x(()=>[C(h(r(n)(`quickSetup.provider.connection`)),1)]),_:1}),r(d)?(v(),_(`span`,Je,[E(r(N),{class:`size-3 text-muted-foreground/50`}),C(` `+h(r(n)(`quickSetup.provider.autoConfigured`)),1)])):e(``,!0)])]),_:1}),E(r(H),{class:`space-y-3`},{default:x(()=>[g(`div`,Ye,h(r(n)(`quickSetup.provider.groupLabel`)),1),g(`div`,Xe,[g(`div`,Ze,[E(r(L),{class:`text-xs text-muted-foreground`},{default:x(()=>[C(h(r(n)(`quickSetup.provider.label`)),1)]),_:1}),E(r(de),{"model-value":r(d),"onUpdate:modelValue":i[0]||=e=>r(be)(e)},{default:x(()=>[E(r(ce),{class:`w-full text-xs data-[size=default]:h-7`},{default:x(()=>[E(r(le),{placeholder:r(n)(`quickSetup.provider.select`)},null,8,[`placeholder`])]),_:1}),E(r(ae),null,{default:x(()=>[E(r(z),{value:`__custom__`},{default:x(()=>[C(h(r(n)(`quickSetup.provider.custom`)),1)]),_:1}),(v(!0),_(o,null,D(r(u),e=>(v(),p(r(z),{key:e.group,value:e.group},{default:x(()=>[C(h(e.group),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`model-value`])]),r(X)?e(``,!0):(v(),_(`div`,Qe,[E(r(L),{class:`text-xs text-muted-foreground`},{default:x(()=>[C(h(r(n)(`quickSetup.provider.plan`)),1)]),_:1}),E(r(de),{"model-value":r(y),"onUpdate:modelValue":i[1]||=e=>r(xe)(e)},{default:x(()=>[E(r(ce),{class:`w-full text-xs data-[size=default]:h-7`},{default:x(()=>[E(r(le),{placeholder:r(n)(`quickSetup.provider.select`)},null,8,[`placeholder`])]),_:1}),E(r(ae),null,{default:x(()=>[(v(!0),_(o,null,D(r(ge),e=>(v(),p(r(z),{key:e.plan,value:e.plan},{default:x(()=>[C(h(e.plan),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`model-value`])])),g(`div`,$e,[E(r(L),{class:`text-xs text-muted-foreground`},{default:x(()=>[C(h(r(n)(`quickSetup.provider.apiKey`)),1)]),_:1}),E(r(fe),{modelValue:r(O),"onUpdate:modelValue":i[2]||=e=>f(O)?O.value=e:null,type:`password`,autocomplete:`new-password`,placeholder:r(n)(`quickSetup.provider.apiKeyPlaceholder`),class:`md:text-xs h-7`},null,8,[`modelValue`,`placeholder`])]),g(`div`,et,[E(r(L),{class:`text-xs text-muted-foreground invisible`},{default:x(()=>[C(h(r(n)(`quickSetup.provider.connect`)),1)]),_:1}),E(r(S),{variant:`outline`,size:`sm`,disabled:r(J)===`testing`,class:T(r(J)===`ok`?`border-green-500/50 text-green-500`:``),onClick:r(je)},{default:x(()=>[r(J)===`testing`?(v(),_(o,{key:0},[i[11]||=g(`svg`,{class:`w-3.5 h-3.5 mr-1 animate-spin`,fill:`none`,viewBox:`0 0 24 24`},[g(`circle`,{class:`opacity-25`,cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,"stroke-width":`4`}),g(`path`,{class:`opacity-75`,fill:`currentColor`,d:`M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z`})],-1),C(` `+h(r(n)(`quickSetup.provider.testing`)),1)],64)):r(J)===`ok`?(v(),_(o,{key:1},[E(r(ue),{class:`size-3.5 mr-1`}),C(` `+h(r(n)(`quickSetup.provider.connected`)),1)],64)):(v(),_(o,{key:2},[C(h(r(n)(`quickSetup.provider.test`)),1)],64))]),_:1},8,[`disabled`,`class`,`onClick`])])]),r(k).length>0?(v(),_(`div`,tt,[E(ne,{"model-value":r(k),"shared-key":r(O),readonly:!1,"onUpdate:modelValue":i[3]||=e=>k.value=e},null,8,[`model-value`,`shared-key`])])):e(``,!0),g(`div`,nt,[g(`div`,rt,[g(`span`,it,h(r(n)(`quickSetup.concurrency.control`)),1),E(r(B),{variant:`outline`,class:`text-[9px] px-1 py-0 leading-none text-muted-foreground/50`},{default:x(()=>[C(h(r(n)(`quickSetup.concurrency.optional`)),1)]),_:1})]),E(A,{modelValue:r(Z),"onUpdate:modelValue":i[4]||=e=>f(Z)?Z.value=e:null},null,8,[`modelValue`])])]),_:1})]),_:1}),E(r(V),{class:`ring-0`},{default:x(()=>[E(r(U),{class:`pb-3`},{default:x(()=>[g(`div`,at,[E(r(W),{class:`text-sm font-medium`},{default:x(()=>[C(h(r(n)(`quickSetup.model.config`)),1)]),_:1}),E(r(B),{variant:`secondary`,class:`text-[10px]`},{default:x(()=>[C(h(Pt.value)+`/`+h(r(M).length),1)]),_:1})])]),_:1}),E(r(H),null,{default:x(()=>[r(M).length===0?(v(),_(`p`,ot,h(r(n)(`quickSetup.model.selectProviderFirst`)),1)):(v(),_(`div`,st,[(v(!0),_(o,null,D(r(M),(e,t)=>(v(),p(re,{key:e.name,model:e,"api-type":r(b),"is-deep-seek":e.name.toLowerCase().includes(`deepseek`),"is-non-openai-endpoint":r(Y),capabilities:e.capabilities??[`text`],"stream-timeout-ms":e.stream_timeout_ms??void 0,"onUpdate:model":e=>r(Fe)(t,e),onRemove:e=>r(Ie)(t),"onUpdate:streamTimeoutMs":e=>r(Le)(t,e),onToggleCapability:e=>r(Re)(t,e)},null,8,[`model`,`api-type`,`is-deep-seek`,`is-non-openai-endpoint`,`capabilities`,`stream-timeout-ms`,`onUpdate:model`,`onRemove`,`onUpdate:streamTimeoutMs`,`onToggleCapability`]))),128))])),r(X)?(v(),_(`div`,ct,[E(r(fe),{modelValue:Q.value,"onUpdate:modelValue":i[5]||=e=>Q.value=e,placeholder:r(n)(`quickSetup.model.namePlaceholder`),onKeydown:s(w(Nt,[`prevent`]),[`enter`]),class:`flex-1 md:text-xs h-7`},null,8,[`modelValue`,`placeholder`,`onKeydown`]),E(r(S),{type:`button`,variant:`outline`,size:`sm`,onClick:Nt,disabled:!Q.value.trim()},{default:x(()=>[C(h(r(n)(`common.add`)),1)]),_:1},8,[`disabled`])])):e(``,!0),g(`div`,lt,[E(r(S),{variant:`ghost`,class:`flex items-center gap-1.5 text-xs font-medium text-muted-foreground w-full justify-start h-auto px-0`,onClick:i[6]||=e=>Mt.value=!Mt.value},{default:x(()=>[E(r(j),{class:T([`size-3 transition-transform`,Mt.value?`rotate-90`:``])},null,8,[`class`]),C(` `+h(r(n)(`quickSetup.transform.title`))+` `,1),E(r(B),{variant:`outline`,class:`text-[9px] px-1 py-0 leading-none text-muted-foreground/50`},{default:x(()=>[C(h(r(n)(`quickSetup.transform.optional`)),1)]),_:1})]),_:1}),Mt.value?(v(),_(`div`,ut,[E(pe,{modelValue:r(_e),"onUpdate:modelValue":i[7]||=e=>f(_e)?_e.value=e:null},null,8,[`modelValue`])])):e(``,!0)])]),_:1})]),_:1}),g(`div`,dt,[E(r(V),{class:`col-span-3 ring-0`},{default:x(()=>[E(r(U),{class:`pb-3`},{default:x(()=>[g(`div`,ft,[E(r(W),{class:`text-sm font-medium`},{default:x(()=>[C(h(r(n)(`quickSetup.mapping.title`)),1)]),_:1}),E(r(B),{variant:`secondary`,class:`text-[10px]`},{default:x(()=>[C(h(r(n)(`quickSetup.mapping.count`,{count:r(F).length})),1)]),_:1})])]),_:1}),E(r(H),null,{default:x(()=>[E(ze,{entries:r(F),"provider-groups":r(ve),"onUpdate:targets":r(Se),"onUpdate:multimodalFallback":r(Ce),"onUpdate:clientModel":r(we),onToggleActive:r(Te),onAdd:r(Ee),onRemove:r(De)},null,8,[`entries`,`provider-groups`,`onUpdate:targets`,`onUpdate:multimodalFallback`,`onUpdate:clientModel`,`onToggleActive`,`onAdd`,`onRemove`])]),_:1})]),_:1}),g(`div`,pt,[E(r(V),{class:`ring-0`},{default:x(()=>[E(r(U),{class:`pb-3`},{default:x(()=>[g(`div`,mt,[E(r(W),{class:`text-sm font-medium`},{default:x(()=>[C(h(r(n)(`quickSetup.retry.title`)),1)]),_:1}),E(r(B),{variant:`secondary`,class:`text-[10px]`},{default:x(()=>[C(h(r(n)(`quickSetup.retry.selectedCount`,{count:r(G).filter(e=>e.exists).length+r(K).size})),1)]),_:1})])]),_:1}),E(r(H),null,{default:x(()=>[r(G).length===0?(v(),_(`div`,ht,[r(I).length===0?(v(),_(o,{key:0},[C(h(r(n)(`quickSetup.retry.allCreated`)),1)],64)):(v(),_(o,{key:1},[C(h(r(n)(`quickSetup.retry.selectProviderFirst`)),1)],64))])):(v(),_(`div`,gt,[g(`div`,_t,[E(r(ie),{disabled:r(G).every(e=>e.exists),"model-value":r(G).filter(e=>!e.exists).every(e=>r(K).has(e.name))?!0:r(G).some(e=>!e.exists&&r(K).has(e.name))?`indeterminate`:!1,class:`mt-0.5`,"onUpdate:modelValue":i[8]||=e=>{let t=e===!0;r(ke)(r(G).filter(e=>!e.exists).map(e=>e.name),t)}},null,8,[`disabled`,`model-value`]),g(`span`,{class:T([`text-xs font-medium`,r(G).every(e=>e.exists)?`text-muted-foreground/40`:`text-muted-foreground`])},h(r(n)(`common.selectAll`)),3)]),(v(!0),_(o,null,D(r(G),t=>(v(),_(`div`,{key:t.name,class:T([`flex items-start gap-2.5 rounded-md transition-colors`,t.exists?`opacity-60 cursor-default p-2`:`hover:bg-muted/50 cursor-pointer p-2`]),onClick:e=>!t.exists&&r(Oe)(t.name,!r(K).has(t.name))},[E(r(ie),{"model-value":t.exists?!0:r(K).has(t.name),disabled:t.exists,class:`mt-0.5`,"onUpdate:modelValue":e=>r(Oe)(t.name,e===!0),onClick:i[9]||=w(()=>{},[`stop`])},null,8,[`model-value`,`disabled`,`onUpdate:modelValue`]),g(`div`,yt,[g(`div`,bt,[g(`span`,xt,h(t.name),1),t.exists?(v(),p(r(B),{key:0,variant:`secondary`,class:`text-[9px] px-1.5 py-0 leading-none bg-muted text-muted-foreground`},{default:x(()=>[C(h(r(n)(`quickSetup.retry.configured`)),1)]),_:1})):e(``,!0)]),g(`div`,St,h(t.status_code)+` · `+h(t.retry_strategy===`fixed`?r(n)(`quickSetup.retry.fixed`):r(n)(`quickSetup.retry.exponential`))+` · `+h(t.retry_delay_ms/1e3)+`s · `+h(t.max_retries)+h(r(n)(`quickSetup.retry.times`)),1)]),!t.exists&&t.providers&&t.providers.length>0?(v(),_(`div`,{key:0,class:`shrink-0`,onClick:i[10]||=w(()=>{},[`stop`])},[E(r(de),{"model-value":r(me).get(t.name)??`general`,"onUpdate:modelValue":e=>r(Ae)(t.name,e)},{default:x(()=>[E(r(ce),{class:`h-6 text-[10px] px-2 py-0 gap-1`},{default:x(()=>[E(r(le))]),_:1}),E(r(ae),null,{default:x(()=>[E(r(z),{value:`general`},{default:x(()=>[C(h(r(n)(`quickSetup.retry.general`)),1)]),_:1}),(v(!0),_(o,null,D(t.providers,e=>(v(),p(r(z),{key:e,value:e},{default:x(()=>[C(h(e),1)]),_:2},1032,[`value`]))),128))]),_:2},1024)]),_:2},1032,[`model-value`,`onUpdate:modelValue`])])):t.exists?e(``,!0):(v(),p(r(B),{key:1,variant:`secondary`,class:`text-[9px] px-1 py-0 leading-none shrink-0 mt-0.5`},{default:x(()=>[C(h(r(n)(`quickSetup.retry.general`)),1)]),_:1}))],10,vt))),128))]))]),_:1})]),_:1})])])]),g(`div`,Ct,[g(`div`,wt,[r(a)?(v(),_(`span`,Tt,h(Ft.value),1)):e(``,!0),r(d)?(v(),_(o,{key:1},[i[13]||=g(`span`,{class:`text-muted-foreground/40`},`→`,-1),g(`span`,Et,h(r(X)?r(n)(`quickSetup.provider.custom`):r(d)),1),r(y)?(v(),_(o,{key:0},[i[12]||=g(`span`,{class:`text-muted-foreground/40`},`/`,-1),g(`span`,Dt,h(r(y)),1)],64)):e(``,!0)],64)):e(``,!0),i[14]||=g(`span`,{class:`text-muted-foreground/40`},`·`,-1),g(`span`,null,h(r(n)(`quickSetup.footer.models`,{count:Pt.value})),1),i[15]||=g(`span`,{class:`text-muted-foreground/40`},`·`,-1),g(`span`,null,h(r(n)(`quickSetup.footer.mappings`,{count:r(F).length})),1),i[16]||=g(`span`,{class:`text-muted-foreground/40`},`·`,-1),g(`span`,null,h(r(n)(`quickSetup.footer.rules`,{count:r(K).size+r(G).filter(e=>e.exists).length})),1)]),g(`div`,Ot,[$.value===`valid`?(v(),_(`div`,kt,[E(r(ue),{class:`size-3.5`}),g(`span`,At,h(r(n)(`quickSetup.footer.validated`)),1)])):$.value===`invalid`?(v(),_(`div`,jt,[E(r(he),{class:`size-3.5`}),g(`span`,null,h(r(n)(`quickSetup.footer.invalid`)),1)])):e(``,!0),E(r(S),{size:`sm`,variant:`outline`,onClick:Lt},{default:x(()=>[C(h(r(n)(`quickSetup.footer.validate`)),1)]),_:1}),E(r(S),{size:`sm`,disabled:r(q),onClick:r(Me)},{default:x(()=>[r(q)?(v(),_(o,{key:0},[i[17]||=g(`svg`,{class:`w-3.5 h-3.5 mr-1 animate-spin`,fill:`none`,viewBox:`0 0 24 24`},[g(`circle`,{class:`opacity-25`,cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,"stroke-width":`4`}),g(`path`,{class:`opacity-75`,fill:`currentColor`,d:`M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z`})],-1),C(` `+h(r(n)(`quickSetup.footer.saving`)),1)],64)):(v(),_(o,{key:1},[C(h(r(n)(`quickSetup.footer.saveConfig`)),1)],64))]),_:1},8,[`disabled`,`onClick`])])])],64))}});export{Q as default};
@@ -1 +1 @@
1
- import{$ as e,A as t,Gt as n,H as r,J as i,Lt as a,Q as o,X as s,Xt as c,Yt as l,Z as u,dt as d,et as f,gt as p,i as m,it as h,k as g,kt as _,mt as v,n as y,nt as b,o as x,pt as S,q as C,qt as w,r as T,rt as E,vt as D,x as O,yt as k}from"./button-Csj7G8uP.js";import{t as ee}from"./plus-CtQvHS_r.js";import{t as A}from"./Checkbox-BVu9v787.js";import{n as te,r as ne,t as re}from"./TooltipTrigger-BIrArn-i.js";import{n as ie,t as ae}from"./CollapsibleContent-C4J8A1Ja.js";import{t as oe}from"./CollapsibleTrigger-xl22mqUU.js";import{a as se,n as ce,o as le,r as ue,t as de}from"./dialog-DSOZukxC.js";import{t as j}from"./Label-BhSGa_Tn.js";import{a as fe,i as M,n as pe,o as N,r as me,t as P}from"./TabsTrigger-yGl-ocCE.js";import{_ as F,a as I,c as he,d as ge,dt as _e,g as L,h as R,ht as z,l as ve,m as B,o as ye,p as be,s as xe,st as Se,t as Ce,u as we,v as V,z as H}from"./index-C-o8k1O4.js";import{t as U}from"./badge-DfF7rlis.js";import{t as W}from"./Card-OdDwacfm.js";import{t as G}from"./CardContent-B4x52Duv.js";import{n as K,t as q}from"./CardTitle-DtDJrCKi.js";import{t as J}from"./Input-BpmvwfP9.js";import{a as Y,i as X,n as Z,o as Te,r as Q,t as Ee}from"./TableHeader-_3-h6u2u.js";var De=h({__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(t){let r=t,{forwardRef:i}=x(),c=N(),u=s(()=>fe(c.baseId,r.value)),d=s(()=>M(c.baseId,r.value)),f=s(()=>r.value===c.modelValue.value),h=a(f.value);return v(()=>{c.registerContent(r.value),requestAnimationFrame(()=>{h.value=!1})}),S(()=>{c.unregisterContent(r.value)}),(t,r)=>(p(),o(n(H),{present:t.forceMount||f.value,"force-mount":``},{default:_(({present:r})=>[E(n(m),{id:d.value,ref:n(i),"as-child":t.asChild,as:t.as,role:`tabpanel`,"data-state":f.value?`active`:`inactive`,"data-orientation":n(c).orientation.value,"aria-labelledby":u.value,hidden:!r,tabindex:`0`,style:l({animationDuration:h.value?`0s`:void 0})},{default:_(()=>[!n(c).unmountOnHide.value||r?k(t.$slots,`default`,{key:0}):e(`v-if`,!0)]),_:2},1032,[`id`,`as-child`,`as`,`data-state`,`data-orientation`,`aria-labelledby`,`hidden`,`style`])]),_:3},8,[`present`]))}}),$=h({__name:`TabsContent`,props:{value:{},forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,r=O(t,`class`);return(e,i)=>(p(),o(n(De),d({"data-slot":`tabs-content`,class:n(T)(`text-sm flex-1 outline-none`,t.class)},n(r)),{default:_(()=>[k(e.$slots,`default`)]),_:3},16,[`class`]))}}),Oe={name:``,status_code:429,body_pattern:``,provider_id:`__all__`,is_active:!0,retry_strategy:`exponential`,retry_delay_ms:5e3,max_retries:10,max_delay_ms:6e4,matchMode:`regex`,bodyMatchers:[]};function ke(e){if(!e)return[];try{return JSON.parse(e)}catch{return[]}}function Ae(e){let t=e.filter(e=>e.path.trim()&&(e.operator===`exists`||e.value.trim()));return t.length>0?JSON.stringify(t):null}function je(e){return e?`json`:`regex`}function Me(e,t){let n={};e.name.trim()||(n.name=t(`retryRules.validation.nameRequired`));let r=Number(e.status_code);if((!Number.isInteger(r)||r<100||r>599)&&(n.status_code=t(`retryRules.validation.statusCodeRange`,{min:100,max:599})),e.matchMode===`regex`)if(!e.body_pattern.trim())n.body_pattern=t(`retryRules.validation.bodyPatternRequired`);else try{new RegExp(e.body_pattern)}catch{n.body_pattern=t(`retryRules.validation.bodyPatternInvalid`)}else e.bodyMatchers.some(e=>e.path.trim()&&(e.operator===`exists`||e.value.trim()))||(n.body_matchers=t(`retryRules.validation.bodyPatternRequired`));let i=Number(e.retry_delay_ms);(!i||i<100)&&(n.retry_delay_ms=t(`retryRules.validation.delayMin`,{min:100}));let a=Number(e.max_retries);if((!Number.isInteger(a)||a<0||a>100)&&(n.max_retries=t(`retryRules.validation.retriesRange`,{max:100})),e.retry_strategy===`exponential`){let r=Number(e.max_delay_ms);(!r||r<100)&&(n.max_delay_ms=t(`retryRules.validation.delayMin`,{min:100}))}return n}function Ne(){return{...Oe,bodyMatchers:[]}}function Pe(e,t,n){if(e){let t=ke(e);return t.length>0?t.map(e=>{let t=n[e.operator]??e.operator;return e.operator===`exists`?`${e.path} ${t}`:`${e.path} ${t} "${e.value}"`}).join(`, `):e}return t??``}var Fe={class:`flex items-center justify-between`},Ie={class:`flex items-center justify-between mb-3`},Le={class:`flex items-center gap-2`},Re={class:`text-sm text-muted-foreground`},ze=h({__name:`RecommendedRules`,props:{rules:{}},emits:[`added`],setup(t,{emit:l}){let{t:d}=r(),m=t,h=l,v=a(!1),x=a(new Set),S=s(()=>m.rules.length>0&&x.value.size===m.rules.length);function C(e){let t=new Set(x.value);t.has(e)?t.delete(e):t.add(e),x.value=t}function T(e){x.value=e===!0?new Set(m.rules.map(e=>e.name)):new Set}async function O(){let e=m.rules.filter(e=>x.value.has(e.name));for(let t of e)await g.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});I.success(d(`retryRules.messages.addedCount`,{count:e.length})),x.value=new Set,h(`added`)}return(r,a)=>t.rules.length>0?(p(),o(n(W),{key:0,class:`mt-6`},{default:_(()=>[E(n(ie),{open:v.value,"onUpdate:open":a[0]||=e=>v.value=e},{default:_(()=>[E(n(oe),{"as-child":``},{default:_(()=>[E(n(K),{class:`cursor-pointer hover:bg-muted/50 transition-colors`},{default:_(()=>[u(`div`,Fe,[E(n(q),{class:`text-sm font-medium`},{default:_(()=>[b(c(n(d)(`retryRules.recommended.title`,{count:t.rules.length})),1)]),_:1}),E(n(z),{class:w([`h-4 w-4 text-muted-foreground transition-transform`,{"rotate-180":v.value}])},null,8,[`class`])])]),_:1})]),_:1}),E(n(ae),null,{default:_(()=>[E(n(G),null,{default:_(()=>[u(`div`,Ie,[u(`div`,Le,[E(n(A),{"model-value":S.value,"onUpdate:modelValue":T},null,8,[`model-value`]),u(`span`,Re,c(n(d)(`retryRules.recommended.selectAll`)),1)]),E(n(y),{size:`sm`,disabled:x.value.size===0,onClick:O},{default:_(()=>[b(c(n(d)(`retryRules.recommended.addSelected`,{count:x.value.size})),1)]),_:1},8,[`disabled`])]),E(n(Te),null,{default:_(()=>[E(n(Ee),null,{default:_(()=>[E(n(Q),null,{default:_(()=>[E(n(Z),{class:`w-10`}),E(n(Z),null,{default:_(()=>[b(c(n(d)(`retryRules.recommended.headers.name`)),1)]),_:1}),E(n(Z),null,{default:_(()=>[b(c(n(d)(`retryRules.recommended.headers.statusCode`)),1)]),_:1}),E(n(Z),null,{default:_(()=>[b(c(n(d)(`retryRules.recommended.headers.pattern`)),1)]),_:1}),E(n(Z),null,{default:_(()=>[b(c(n(d)(`retryRules.recommended.headers.strategy`)),1)]),_:1})]),_:1})]),_:1}),E(n(Y),null,{default:_(()=>[(p(!0),f(i,null,D(t.rules,e=>(p(),o(n(Q),{key:e.name},{default:_(()=>[E(n(X),null,{default:_(()=>[E(n(A),{"model-value":x.value.has(e.name),"onUpdate:modelValue":()=>C(e.name)},null,8,[`model-value`,`onUpdate:modelValue`])]),_:2},1024),E(n(X),null,{default:_(()=>[b(c(e.name),1)]),_:2},1024),E(n(X),null,{default:_(()=>[b(c(e.status_code),1)]),_:2},1024),E(n(X),{class:`font-mono text-xs max-w-[200px] truncate`},{default:_(()=>[b(c(e.body_pattern),1)]),_:2},1024),E(n(X),null,{default:_(()=>[b(c(e.retry_strategy===`fixed`?n(d)(`retryRules.strategy.fixed`):n(d)(`retryRules.strategy.exponential`)),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]),_:1})):e(``,!0)}}),Be={class:`page`},Ve={key:0,class:`flex items-center justify-center py-12 text-muted-foreground`},He={class:`flex items-center justify-between mb-4`},Ue={class:`text-lg font-semibold text-foreground`},We={class:`truncate block`},Ge={key:1},Ke={class:`flex items-center gap-2`},qe={class:`text-xs text-muted-foreground`},Je={key:0,class:`text-sm text-destructive mt-1`},Ye={key:0,class:`text-sm text-destructive mt-1`},Xe={class:`font-medium mb-1`},Ze={key:0,class:`text-sm text-destructive mt-1`},Qe={class:`space-y-2`},$e={key:0,class:`text-sm text-destructive mt-1`},et={class:`grid grid-cols-2 gap-3`},tt={key:0,class:`text-sm text-destructive mt-1`},nt={key:0,class:`text-sm text-destructive mt-1`},rt={key:0},it={key:0,class:`text-sm text-destructive mt-1`},at={class:`flex items-center gap-2`},ot=h({__name:`RetryRules`,setup(s){let{t:l}=r(),d=a(!1),m=a([]),h=a([]),x=a(!1),S=a(null),w=a(null),T=a(Ne()),O=a({}),k=a([]),ie={equals:l(`retryRules.operatorEquals`),contains:l(`retryRules.operatorContains`),exists:l(`retryRules.operatorExists`)};function ae(e){let t=h.value.find(t=>t.id===e);return t?t.name:e}function oe(e){return Pe(e.body_matchers,e.body_pattern,ie)}function fe(){T.value.bodyMatchers.push({path:``,operator:`contains`,value:``})}function M(e){T.value.bodyMatchers.splice(e,1)}function N(){let e=Me(T.value,l);return O.value=e,Object.keys(e).length===0}async function z(){try{m.value=await g.getRetryRules()}catch(e){console.error(`RetryRules.loadData:`,e),I.error(t(e,l(`retryRules.messages.loadFailed`)))}}async function H(){try{h.value=await g.getProviders()}catch(e){console.error(`RetryRules.loadProviders:`,e),I.error(t(e,l(`retryRules.messages.loadFailed`)))}}async function G(){try{k.value=await g.recommended.getRetryRules()}catch(e){console.error(`RetryRules.loadRecommended:`,e),k.value=[]}}function K(){S.value=null,T.value=Ne(),O.value={},x.value=!0}function q(e){S.value=e.id,T.value={name:e.name,status_code:e.status_code,body_pattern:e.body_pattern,provider_id:e.provider_id??`__all__`,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,matchMode:je(e.body_matchers),bodyMatchers:ke(e.body_matchers)},O.value={},x.value=!0}async function De(){if(N())try{let e=T.value.matchMode===`json`?Ae(T.value.bodyMatchers):null,t={name:T.value.name,status_code:Number(T.value.status_code),body_pattern:T.value.body_pattern,provider_id:T.value.provider_id===`__all__`?null:T.value.provider_id,body_matchers:e,is_active:+!!T.value.is_active,retry_strategy:T.value.retry_strategy,retry_delay_ms:Number(T.value.retry_delay_ms),max_retries:Number(T.value.max_retries),max_delay_ms:Number(T.value.max_delay_ms)};S.value?await g.updateRetryRule(S.value,t):await g.createRetryRule(t),x.value=!1,await z()}catch(e){console.error(`RetryRules.handleSave:`,e),I.error(t(e,l(`retryRules.messages.saveFailed`)))}}function Oe(e){w.value=e}async function Fe(){let e=w.value;if(e){w.value=null;try{await g.deleteRetryRule(e.id),await z()}catch(e){console.error(`RetryRules.handleDelete:`,e),I.error(t(e,l(`retryRules.messages.deleteFailed`)))}}}async function Ie(){await Promise.allSettled([G(),z()])}return v(async()=>{d.value=!0,await Promise.allSettled([z(),G(),H()]),d.value=!1}),(t,r)=>(p(),f(`div`,Be,[d.value?(p(),f(`div`,Ve,[E(n(_e),{class:`w-5 h-5 animate-spin mr-2`}),b(` `+c(n(l)(`common.loading`)),1)])):e(``,!0),d.value?e(``,!0):(p(),f(i,{key:1},[u(`div`,He,[u(`h2`,Ue,c(n(l)(`retryRules.title`)),1),E(n(y),{onClick:K,class:`flex items-center gap-1`},{default:_(()=>[E(n(ee),{class:`w-4 h-4`}),b(` `+c(n(l)(`retryRules.addRule`)),1)]),_:1})]),E(n(W),{flush:``},{default:_(()=>[E(n(Te),{class:`[&_td]:px-4 [&_th]:px-4`},{default:_(()=>[E(n(Ee),null,{default:_(()=>[E(n(Q),{class:`bg-muted`},{default:_(()=>[E(n(Z),{class:`text-muted-foreground`},{default:_(()=>[b(c(n(l)(`retryRules.tableHeaders.name`)),1)]),_:1}),E(n(Z),{class:`text-muted-foreground`},{default:_(()=>[b(c(n(l)(`retryRules.tableHeaders.statusCode`)),1)]),_:1}),E(n(Z),{class:`text-muted-foreground`},{default:_(()=>[b(c(n(l)(`retryRules.tableHeaders.bodyPattern`)),1)]),_:1}),E(n(Z),{class:`text-muted-foreground`},{default:_(()=>[b(c(n(l)(`retryRules.tableHeaders.provider`)),1)]),_:1}),E(n(Z),{class:`text-muted-foreground`},{default:_(()=>[b(c(n(l)(`retryRules.tableHeaders.retryStrategy`)),1)]),_:1}),E(n(Z),{class:`text-muted-foreground`},{default:_(()=>[b(c(n(l)(`retryRules.tableHeaders.status`)),1)]),_:1}),E(n(Z),{class:`text-right text-muted-foreground`},{default:_(()=>[b(c(n(l)(`retryRules.tableHeaders.actions`)),1)]),_:1})]),_:1})]),_:1}),E(n(Y),null,{default:_(()=>[(p(!0),f(i,null,D(m.value,t=>(p(),o(n(Q),{key:t.id},{default:_(()=>[E(n(X),{class:`font-mono text-sm`},{default:_(()=>[b(c(t.name),1)]),_:2},1024),E(n(X),null,{default:_(()=>[b(c(t.status_code),1)]),_:2},1024),E(n(X),{class:`font-mono text-xs text-muted-foreground max-w-[200px]`},{default:_(()=>[u(`span`,We,c(oe(t)),1)]),_:2},1024),E(n(X),null,{default:_(()=>[t.provider_id?(p(),f(`span`,Ge,c(ae(t.provider_id)),1)):(p(),o(n(U),{key:0,variant:`secondary`},{default:_(()=>[b(c(n(l)(`retryRules.globalBadge`)),1)]),_:1}))]),_:2},1024),E(n(X),null,{default:_(()=>[u(`div`,Ke,[E(n(U),{variant:`outline`},{default:_(()=>[b(c(t.retry_strategy===`fixed`?n(l)(`retryRules.strategy.fixed`):n(l)(`retryRules.strategy.exponential`)),1)]),_:2},1024),u(`span`,qe,[b(c(t.retry_delay_ms/1e3)+`s · `+c(n(l)(`retryRules.times`,{count:t.max_retries}))+` `,1),t.retry_strategy===`exponential`?(p(),f(i,{key:0},[b(` · `+c(n(l)(`retryRules.upperLimit`,{value:t.max_delay_ms/1e3})),1)],64)):e(``,!0)])])]),_:2},1024),E(n(X),null,{default:_(()=>[E(n(U),{variant:t.is_active?`default`:`secondary`},{default:_(()=>[b(c(t.is_active?n(l)(`common.enabled`):n(l)(`common.disabled`)),1)]),_:2},1032,[`variant`])]),_:2},1024),E(n(X),{class:`text-right`},{default:_(()=>[E(n(y),{variant:`ghost`,size:`sm`,onClick:e=>q(t),class:`mr-2`},{default:_(()=>[b(c(n(l)(`common.edit`)),1)]),_:1},8,[`onClick`]),E(n(y),{variant:`ghost`,size:`sm`,class:`text-destructive hover:text-destructive`,onClick:e=>Oe(t)},{default:_(()=>[b(c(n(l)(`common.delete`)),1)]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1024))),128)),m.value.length===0?(p(),o(n(Q),{key:0},{default:_(()=>[E(n(X),{colspan:`7`,class:`text-center text-muted-foreground py-8`},{default:_(()=>[b(c(n(l)(`retryRules.noRules`)),1)]),_:1})]),_:1})):e(``,!0)]),_:1})]),_:1})]),_:1}),E(n(le),{open:x.value,"onUpdate:open":r[17]||=e=>x.value=e},{default:_(()=>[E(n(se),{class:`max-w-lg`},{default:_(()=>[E(n(ce),null,{default:_(()=>[E(n(de),null,{default:_(()=>[b(c(S.value?n(l)(`retryRules.dialog.editRule`):n(l)(`retryRules.dialog.addRule`)),1)]),_:1})]),_:1}),u(`form`,{onSubmit:C(De,[`prevent`]),class:`space-y-3`},[u(`div`,null,[E(n(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[b(c(n(l)(`retryRules.dialog.name`)),1)]),_:1}),E(n(J),{modelValue:T.value.name,"onUpdate:modelValue":r[0]||=e=>T.value.name=e,type:`text`,required:``,onInput:r[1]||=e=>delete O.value.name},null,8,[`modelValue`]),O.value.name?(p(),f(`p`,Je,c(O.value.name),1)):e(``,!0)]),u(`div`,null,[E(n(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[b(c(n(l)(`retryRules.provider`)),1)]),_:1}),E(n(V),{modelValue:T.value.provider_id,"onUpdate:modelValue":r[2]||=e=>T.value.provider_id=e},{default:_(()=>[E(n(R),{class:`w-full`},{default:_(()=>[E(n(B),{placeholder:n(l)(`retryRules.providerPlaceholder`)},null,8,[`placeholder`])]),_:1}),E(n(F),null,{default:_(()=>[E(n(L),{value:`__all__`},{default:_(()=>[b(c(n(l)(`retryRules.providerAll`)),1)]),_:1}),(p(!0),f(i,null,D(h.value,e=>(p(),o(n(L),{key:e.id,value:e.id},{default:_(()=>[b(c(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`])]),u(`div`,null,[E(n(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[b(c(n(l)(`retryRules.dialog.statusCode`)),1)]),_:1}),E(n(J),{modelValue:T.value.status_code,"onUpdate:modelValue":r[3]||=e=>T.value.status_code=e,modelModifiers:{number:!0},type:`number`,required:``,onInput:r[4]||=e=>delete O.value.status_code},null,8,[`modelValue`]),O.value.status_code?(p(),f(`p`,Ye,c(O.value.status_code),1)):e(``,!0)]),u(`div`,null,[E(n(j),{class:`block text-sm font-medium text-foreground mb-1 flex items-center gap-1`},{default:_(()=>[b(c(n(l)(`retryRules.dialog.bodyPattern`))+` `,1),E(n(Ce),null,{default:_(()=>[E(n(ne),null,{default:_(()=>[E(n(re),{"as-child":``},{default:_(()=>[...r[19]||=[u(`span`,{class:`inline-flex items-center justify-center w-3.5 h-3.5 rounded-full bg-muted text-muted-foreground text-[10px] font-bold cursor-help`},`?`,-1)]]),_:1}),E(n(te),{side:`right`,class:`max-w-xs text-xs leading-relaxed`},{default:_(()=>[u(`p`,Xe,c(n(l)(`retryRules.dialog.bodyPattern`)),1),u(`p`,null,c(n(l)(`retryRules.dialog.bodyPatternTooltip`)),1)]),_:1})]),_:1})]),_:1})]),_:1}),E(n(me),{modelValue:T.value.matchMode,"onUpdate:modelValue":r[7]||=e=>T.value.matchMode=e},{default:_(()=>[E(n(pe),{class:`mb-2`},{default:_(()=>[E(n(P),{value:`regex`},{default:_(()=>[b(c(n(l)(`retryRules.regexMatch`)),1)]),_:1}),E(n(P),{value:`json`},{default:_(()=>[b(c(n(l)(`retryRules.jsonMatch`)),1)]),_:1})]),_:1}),E(n($),{value:`regex`},{default:_(()=>[E(n(J),{modelValue:T.value.body_pattern,"onUpdate:modelValue":r[5]||=e=>T.value.body_pattern=e,type:`text`,placeholder:n(l)(`retryRules.dialog.bodyPatternPlaceholder`),onInput:r[6]||=e=>delete O.value.body_pattern},null,8,[`modelValue`,`placeholder`]),O.value.body_pattern?(p(),f(`p`,Ze,c(O.value.body_pattern),1)):e(``,!0)]),_:1}),E(n($),{value:`json`},{default:_(()=>[u(`div`,Qe,[(p(!0),f(i,null,D(T.value.bodyMatchers,(t,r)=>(p(),f(`div`,{key:r,class:`flex items-start gap-2`},[E(n(J),{modelValue:t.path,"onUpdate:modelValue":e=>t.path=e,placeholder:n(l)(`retryRules.fieldPath`),class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),E(n(V),{modelValue:t.operator,"onUpdate:modelValue":e=>t.operator=e},{default:_(()=>[E(n(R),{class:`w-28 shrink-0`},{default:_(()=>[E(n(B))]),_:1}),E(n(F),null,{default:_(()=>[E(n(L),{value:`equals`},{default:_(()=>[b(c(n(l)(`retryRules.operatorEquals`)),1)]),_:1}),E(n(L),{value:`contains`},{default:_(()=>[b(c(n(l)(`retryRules.operatorContains`)),1)]),_:1}),E(n(L),{value:`exists`},{default:_(()=>[b(c(n(l)(`retryRules.operatorExists`)),1)]),_:1})]),_:1})]),_:1},8,[`modelValue`,`onUpdate:modelValue`]),t.operator===`exists`?e(``,!0):(p(),o(n(J),{key:0,modelValue:t.value,"onUpdate:modelValue":e=>t.value=e,placeholder:n(l)(`retryRules.matchValue`),class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`])),E(n(y),{type:`button`,variant:`ghost`,size:`icon`,class:`shrink-0 text-muted-foreground`,onClick:e=>M(r)},{default:_(()=>[E(n(Se),{class:`w-4 h-4`})]),_:1},8,[`onClick`])]))),128)),E(n(y),{type:`button`,variant:`outline`,size:`sm`,onClick:fe},{default:_(()=>[E(n(ee),{class:`w-3 h-3 mr-1`}),b(` `+c(n(l)(`retryRules.addCondition`)),1)]),_:1}),O.value.body_matchers?(p(),f(`p`,$e,c(O.value.body_matchers),1)):e(``,!0)])]),_:1})]),_:1},8,[`modelValue`])]),u(`div`,null,[E(n(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[b(c(n(l)(`retryRules.dialog.retryStrategy`)),1)]),_:1}),E(n(V),{modelValue:T.value.retry_strategy,"onUpdate:modelValue":r[8]||=e=>T.value.retry_strategy=e},{default:_(()=>[E(n(R),{class:`w-full`},{default:_(()=>[E(n(B),{placeholder:n(l)(`retryRules.dialog.selectStrategy`)},null,8,[`placeholder`])]),_:1}),E(n(F),null,{default:_(()=>[E(n(L),{value:`exponential`},{default:_(()=>[b(c(n(l)(`retryRules.strategy.exponential`)),1)]),_:1}),E(n(L),{value:`fixed`},{default:_(()=>[b(c(n(l)(`retryRules.strategy.fixed`)),1)]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),u(`div`,et,[u(`div`,null,[E(n(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[b(c(T.value.retry_strategy===`fixed`?n(l)(`retryRules.dialog.intervalMs`):n(l)(`retryRules.dialog.initialDelayMs`)),1)]),_:1}),E(n(J),{modelValue:T.value.retry_delay_ms,"onUpdate:modelValue":r[9]||=e=>T.value.retry_delay_ms=e,modelModifiers:{number:!0},type:`number`,min:100,required:``,onInput:r[10]||=e=>delete O.value.retry_delay_ms},null,8,[`modelValue`]),O.value.retry_delay_ms?(p(),f(`p`,tt,c(O.value.retry_delay_ms),1)):e(``,!0)]),u(`div`,null,[E(n(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[b(c(n(l)(`retryRules.dialog.maxRetries`)),1)]),_:1}),E(n(J),{modelValue:T.value.max_retries,"onUpdate:modelValue":r[11]||=e=>T.value.max_retries=e,modelModifiers:{number:!0},type:`number`,min:0,max:100,required:``,onInput:r[12]||=e=>delete O.value.max_retries},null,8,[`modelValue`]),O.value.max_retries?(p(),f(`p`,nt,c(O.value.max_retries),1)):e(``,!0)])]),T.value.retry_strategy===`exponential`?(p(),f(`div`,rt,[E(n(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[b(c(n(l)(`retryRules.dialog.maxDelayMs`)),1)]),_:1}),E(n(J),{modelValue:T.value.max_delay_ms,"onUpdate:modelValue":r[13]||=e=>T.value.max_delay_ms=e,modelModifiers:{number:!0},type:`number`,min:100,required:``,onInput:r[14]||=e=>delete O.value.max_delay_ms},null,8,[`modelValue`]),O.value.max_delay_ms?(p(),f(`p`,it,c(O.value.max_delay_ms),1)):e(``,!0)])):e(``,!0),u(`div`,at,[E(n(A),{modelValue:T.value.is_active,"onUpdate:modelValue":r[15]||=e=>T.value.is_active=e,id:`rule-active`},null,8,[`modelValue`]),E(n(j),{for:`rule-active`,class:`text-sm text-foreground`},{default:_(()=>[b(c(n(l)(`retryRules.dialog.enable`)),1)]),_:1})]),E(n(ue),null,{default:_(()=>[E(n(y),{type:`button`,variant:`outline`,onClick:r[16]||=e=>x.value=!1},{default:_(()=>[b(c(n(l)(`common.cancel`)),1)]),_:1}),E(n(y),{type:`submit`},{default:_(()=>[b(c(n(l)(`common.save`)),1)]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]),E(n(be),{open:!!w.value,"onUpdate:open":r[18]||=e=>{e||(w.value=null)}},{default:_(()=>[E(n(we),null,{default:_(()=>[E(n(xe),null,{default:_(()=>[E(n(ye),null,{default:_(()=>[b(c(n(l)(`retryRules.deleteConfirm.title`)),1)]),_:1}),E(n(ve),null,{default:_(()=>[b(c(n(l)(`retryRules.deleteConfirm.description`,{name:w.value?.name})),1)]),_:1})]),_:1}),E(n(he),null,{default:_(()=>[E(n(ge),null,{default:_(()=>[b(c(n(l)(`common.cancel`)),1)]),_:1}),E(n(y),{variant:`destructive`,onClick:Fe},{default:_(()=>[b(c(n(l)(`common.delete`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]),E(ze,{rules:k.value,onAdded:Ie},null,8,[`rules`])],64))]))}});export{ot as default};
1
+ import{$ as e,A as t,Gt as n,H as r,J as i,Lt as a,Q as o,X as s,Xt as c,Yt as l,Z as u,dt as d,et as f,gt as p,i as m,it as h,k as g,kt as _,mt as v,n as y,nt as b,o as x,pt as S,q as C,qt as w,r as T,rt as E,vt as D,x as O,yt as k}from"./button-DG6Kd0iG.js";import{t as ee}from"./plus-CtcJ9YdO.js";import{t as A}from"./Checkbox-CA9kxtM4.js";import{n as te,r as ne,t as re}from"./TooltipTrigger-CjwFSriE.js";import{n as ie,t as ae}from"./CollapsibleContent-DZ_tKZag.js";import{t as oe}from"./CollapsibleTrigger-D0vBT2Sj.js";import{a as se,n as ce,o as le,r as ue,t as de}from"./dialog-CQOpjImC.js";import{t as j}from"./Label-DmDoAc6v.js";import{a as fe,i as M,n as pe,o as N,r as me,t as P}from"./TabsTrigger-DuyzIvA6.js";import{_ as F,a as I,c as he,d as ge,dt as _e,g as L,h as R,ht as z,l as ve,m as B,o as ye,p as be,s as xe,st as Se,t as Ce,u as we,v as V,z as H}from"./index-D_n3EVk6.js";import{t as U}from"./badge-BscUNLaG.js";import{t as W}from"./Card-UQRcFVIJ.js";import{t as G}from"./CardContent-BAoEyF8W.js";import{n as K,t as q}from"./CardTitle-C17xy1UE.js";import{t as J}from"./Input-DVGxkxMa.js";import{a as Y,i as X,n as Z,o as Te,r as Q,t as Ee}from"./TableHeader-DZah46vy.js";var De=h({__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(t){let r=t,{forwardRef:i}=x(),c=N(),u=s(()=>fe(c.baseId,r.value)),d=s(()=>M(c.baseId,r.value)),f=s(()=>r.value===c.modelValue.value),h=a(f.value);return v(()=>{c.registerContent(r.value),requestAnimationFrame(()=>{h.value=!1})}),S(()=>{c.unregisterContent(r.value)}),(t,r)=>(p(),o(n(H),{present:t.forceMount||f.value,"force-mount":``},{default:_(({present:r})=>[E(n(m),{id:d.value,ref:n(i),"as-child":t.asChild,as:t.as,role:`tabpanel`,"data-state":f.value?`active`:`inactive`,"data-orientation":n(c).orientation.value,"aria-labelledby":u.value,hidden:!r,tabindex:`0`,style:l({animationDuration:h.value?`0s`:void 0})},{default:_(()=>[!n(c).unmountOnHide.value||r?k(t.$slots,`default`,{key:0}):e(`v-if`,!0)]),_:2},1032,[`id`,`as-child`,`as`,`data-state`,`data-orientation`,`aria-labelledby`,`hidden`,`style`])]),_:3},8,[`present`]))}}),$=h({__name:`TabsContent`,props:{value:{},forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,r=O(t,`class`);return(e,i)=>(p(),o(n(De),d({"data-slot":`tabs-content`,class:n(T)(`text-sm flex-1 outline-none`,t.class)},n(r)),{default:_(()=>[k(e.$slots,`default`)]),_:3},16,[`class`]))}}),Oe={name:``,status_code:429,body_pattern:``,provider_id:`__all__`,is_active:!0,retry_strategy:`exponential`,retry_delay_ms:5e3,max_retries:10,max_delay_ms:6e4,matchMode:`regex`,bodyMatchers:[]};function ke(e){if(!e)return[];try{return JSON.parse(e)}catch{return[]}}function Ae(e){let t=e.filter(e=>e.path.trim()&&(e.operator===`exists`||e.value.trim()));return t.length>0?JSON.stringify(t):null}function je(e){return e?`json`:`regex`}function Me(e,t){let n={};e.name.trim()||(n.name=t(`retryRules.validation.nameRequired`));let r=Number(e.status_code);if((!Number.isInteger(r)||r<100||r>599)&&(n.status_code=t(`retryRules.validation.statusCodeRange`,{min:100,max:599})),e.matchMode===`regex`)if(!e.body_pattern.trim())n.body_pattern=t(`retryRules.validation.bodyPatternRequired`);else try{new RegExp(e.body_pattern)}catch{n.body_pattern=t(`retryRules.validation.bodyPatternInvalid`)}else e.bodyMatchers.some(e=>e.path.trim()&&(e.operator===`exists`||e.value.trim()))||(n.body_matchers=t(`retryRules.validation.bodyPatternRequired`));let i=Number(e.retry_delay_ms);(!i||i<100)&&(n.retry_delay_ms=t(`retryRules.validation.delayMin`,{min:100}));let a=Number(e.max_retries);if((!Number.isInteger(a)||a<0||a>100)&&(n.max_retries=t(`retryRules.validation.retriesRange`,{max:100})),e.retry_strategy===`exponential`){let r=Number(e.max_delay_ms);(!r||r<100)&&(n.max_delay_ms=t(`retryRules.validation.delayMin`,{min:100}))}return n}function Ne(){return{...Oe,bodyMatchers:[]}}function Pe(e,t,n){if(e){let t=ke(e);return t.length>0?t.map(e=>{let t=n[e.operator]??e.operator;return e.operator===`exists`?`${e.path} ${t}`:`${e.path} ${t} "${e.value}"`}).join(`, `):e}return t??``}var Fe={class:`flex items-center justify-between`},Ie={class:`flex items-center justify-between mb-3`},Le={class:`flex items-center gap-2`},Re={class:`text-sm text-muted-foreground`},ze=h({__name:`RecommendedRules`,props:{rules:{}},emits:[`added`],setup(t,{emit:l}){let{t:d}=r(),m=t,h=l,v=a(!1),x=a(new Set),S=s(()=>m.rules.length>0&&x.value.size===m.rules.length);function C(e){let t=new Set(x.value);t.has(e)?t.delete(e):t.add(e),x.value=t}function T(e){x.value=e===!0?new Set(m.rules.map(e=>e.name)):new Set}async function O(){let e=m.rules.filter(e=>x.value.has(e.name));for(let t of e)await g.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});I.success(d(`retryRules.messages.addedCount`,{count:e.length})),x.value=new Set,h(`added`)}return(r,a)=>t.rules.length>0?(p(),o(n(W),{key:0,class:`mt-6`},{default:_(()=>[E(n(ie),{open:v.value,"onUpdate:open":a[0]||=e=>v.value=e},{default:_(()=>[E(n(oe),{"as-child":``},{default:_(()=>[E(n(K),{class:`cursor-pointer hover:bg-muted/50 transition-colors`},{default:_(()=>[u(`div`,Fe,[E(n(q),{class:`text-sm font-medium`},{default:_(()=>[b(c(n(d)(`retryRules.recommended.title`,{count:t.rules.length})),1)]),_:1}),E(n(z),{class:w([`h-4 w-4 text-muted-foreground transition-transform`,{"rotate-180":v.value}])},null,8,[`class`])])]),_:1})]),_:1}),E(n(ae),null,{default:_(()=>[E(n(G),null,{default:_(()=>[u(`div`,Ie,[u(`div`,Le,[E(n(A),{"model-value":S.value,"onUpdate:modelValue":T},null,8,[`model-value`]),u(`span`,Re,c(n(d)(`retryRules.recommended.selectAll`)),1)]),E(n(y),{size:`sm`,disabled:x.value.size===0,onClick:O},{default:_(()=>[b(c(n(d)(`retryRules.recommended.addSelected`,{count:x.value.size})),1)]),_:1},8,[`disabled`])]),E(n(Te),null,{default:_(()=>[E(n(Ee),null,{default:_(()=>[E(n(Q),null,{default:_(()=>[E(n(Z),{class:`w-10`}),E(n(Z),null,{default:_(()=>[b(c(n(d)(`retryRules.recommended.headers.name`)),1)]),_:1}),E(n(Z),null,{default:_(()=>[b(c(n(d)(`retryRules.recommended.headers.statusCode`)),1)]),_:1}),E(n(Z),null,{default:_(()=>[b(c(n(d)(`retryRules.recommended.headers.pattern`)),1)]),_:1}),E(n(Z),null,{default:_(()=>[b(c(n(d)(`retryRules.recommended.headers.strategy`)),1)]),_:1})]),_:1})]),_:1}),E(n(Y),null,{default:_(()=>[(p(!0),f(i,null,D(t.rules,e=>(p(),o(n(Q),{key:e.name},{default:_(()=>[E(n(X),null,{default:_(()=>[E(n(A),{"model-value":x.value.has(e.name),"onUpdate:modelValue":()=>C(e.name)},null,8,[`model-value`,`onUpdate:modelValue`])]),_:2},1024),E(n(X),null,{default:_(()=>[b(c(e.name),1)]),_:2},1024),E(n(X),null,{default:_(()=>[b(c(e.status_code),1)]),_:2},1024),E(n(X),{class:`font-mono text-xs max-w-[200px] truncate`},{default:_(()=>[b(c(e.body_pattern),1)]),_:2},1024),E(n(X),null,{default:_(()=>[b(c(e.retry_strategy===`fixed`?n(d)(`retryRules.strategy.fixed`):n(d)(`retryRules.strategy.exponential`)),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]),_:1})):e(``,!0)}}),Be={class:`page`},Ve={key:0,class:`flex items-center justify-center py-12 text-muted-foreground`},He={class:`flex items-center justify-between mb-4`},Ue={class:`text-lg font-semibold text-foreground`},We={class:`truncate block`},Ge={key:1},Ke={class:`flex items-center gap-2`},qe={class:`text-xs text-muted-foreground`},Je={key:0,class:`text-sm text-destructive mt-1`},Ye={key:0,class:`text-sm text-destructive mt-1`},Xe={class:`font-medium mb-1`},Ze={key:0,class:`text-sm text-destructive mt-1`},Qe={class:`space-y-2`},$e={key:0,class:`text-sm text-destructive mt-1`},et={class:`grid grid-cols-2 gap-3`},tt={key:0,class:`text-sm text-destructive mt-1`},nt={key:0,class:`text-sm text-destructive mt-1`},rt={key:0},it={key:0,class:`text-sm text-destructive mt-1`},at={class:`flex items-center gap-2`},ot=h({__name:`RetryRules`,setup(s){let{t:l}=r(),d=a(!1),m=a([]),h=a([]),x=a(!1),S=a(null),w=a(null),T=a(Ne()),O=a({}),k=a([]),ie={equals:l(`retryRules.operatorEquals`),contains:l(`retryRules.operatorContains`),exists:l(`retryRules.operatorExists`)};function ae(e){let t=h.value.find(t=>t.id===e);return t?t.name:e}function oe(e){return Pe(e.body_matchers,e.body_pattern,ie)}function fe(){T.value.bodyMatchers.push({path:``,operator:`contains`,value:``})}function M(e){T.value.bodyMatchers.splice(e,1)}function N(){let e=Me(T.value,l);return O.value=e,Object.keys(e).length===0}async function z(){try{m.value=await g.getRetryRules()}catch(e){console.error(`RetryRules.loadData:`,e),I.error(t(e,l(`retryRules.messages.loadFailed`)))}}async function H(){try{h.value=await g.getProviders()}catch(e){console.error(`RetryRules.loadProviders:`,e),I.error(t(e,l(`retryRules.messages.loadFailed`)))}}async function G(){try{k.value=await g.recommended.getRetryRules()}catch(e){console.error(`RetryRules.loadRecommended:`,e),k.value=[]}}function K(){S.value=null,T.value=Ne(),O.value={},x.value=!0}function q(e){S.value=e.id,T.value={name:e.name,status_code:e.status_code,body_pattern:e.body_pattern,provider_id:e.provider_id??`__all__`,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,matchMode:je(e.body_matchers),bodyMatchers:ke(e.body_matchers)},O.value={},x.value=!0}async function De(){if(N())try{let e=T.value.matchMode===`json`?Ae(T.value.bodyMatchers):null,t={name:T.value.name,status_code:Number(T.value.status_code),body_pattern:T.value.body_pattern,provider_id:T.value.provider_id===`__all__`?null:T.value.provider_id,body_matchers:e,is_active:+!!T.value.is_active,retry_strategy:T.value.retry_strategy,retry_delay_ms:Number(T.value.retry_delay_ms),max_retries:Number(T.value.max_retries),max_delay_ms:Number(T.value.max_delay_ms)};S.value?await g.updateRetryRule(S.value,t):await g.createRetryRule(t),x.value=!1,await z()}catch(e){console.error(`RetryRules.handleSave:`,e),I.error(t(e,l(`retryRules.messages.saveFailed`)))}}function Oe(e){w.value=e}async function Fe(){let e=w.value;if(e){w.value=null;try{await g.deleteRetryRule(e.id),await z()}catch(e){console.error(`RetryRules.handleDelete:`,e),I.error(t(e,l(`retryRules.messages.deleteFailed`)))}}}async function Ie(){await Promise.allSettled([G(),z()])}return v(async()=>{d.value=!0,await Promise.allSettled([z(),G(),H()]),d.value=!1}),(t,r)=>(p(),f(`div`,Be,[d.value?(p(),f(`div`,Ve,[E(n(_e),{class:`w-5 h-5 animate-spin mr-2`}),b(` `+c(n(l)(`common.loading`)),1)])):e(``,!0),d.value?e(``,!0):(p(),f(i,{key:1},[u(`div`,He,[u(`h2`,Ue,c(n(l)(`retryRules.title`)),1),E(n(y),{onClick:K,class:`flex items-center gap-1`},{default:_(()=>[E(n(ee),{class:`w-4 h-4`}),b(` `+c(n(l)(`retryRules.addRule`)),1)]),_:1})]),E(n(W),{flush:``},{default:_(()=>[E(n(Te),{class:`[&_td]:px-4 [&_th]:px-4`},{default:_(()=>[E(n(Ee),null,{default:_(()=>[E(n(Q),{class:`bg-muted`},{default:_(()=>[E(n(Z),{class:`text-muted-foreground`},{default:_(()=>[b(c(n(l)(`retryRules.tableHeaders.name`)),1)]),_:1}),E(n(Z),{class:`text-muted-foreground`},{default:_(()=>[b(c(n(l)(`retryRules.tableHeaders.statusCode`)),1)]),_:1}),E(n(Z),{class:`text-muted-foreground`},{default:_(()=>[b(c(n(l)(`retryRules.tableHeaders.bodyPattern`)),1)]),_:1}),E(n(Z),{class:`text-muted-foreground`},{default:_(()=>[b(c(n(l)(`retryRules.tableHeaders.provider`)),1)]),_:1}),E(n(Z),{class:`text-muted-foreground`},{default:_(()=>[b(c(n(l)(`retryRules.tableHeaders.retryStrategy`)),1)]),_:1}),E(n(Z),{class:`text-muted-foreground`},{default:_(()=>[b(c(n(l)(`retryRules.tableHeaders.status`)),1)]),_:1}),E(n(Z),{class:`text-right text-muted-foreground`},{default:_(()=>[b(c(n(l)(`retryRules.tableHeaders.actions`)),1)]),_:1})]),_:1})]),_:1}),E(n(Y),null,{default:_(()=>[(p(!0),f(i,null,D(m.value,t=>(p(),o(n(Q),{key:t.id},{default:_(()=>[E(n(X),{class:`font-mono text-sm`},{default:_(()=>[b(c(t.name),1)]),_:2},1024),E(n(X),null,{default:_(()=>[b(c(t.status_code),1)]),_:2},1024),E(n(X),{class:`font-mono text-xs text-muted-foreground max-w-[200px]`},{default:_(()=>[u(`span`,We,c(oe(t)),1)]),_:2},1024),E(n(X),null,{default:_(()=>[t.provider_id?(p(),f(`span`,Ge,c(ae(t.provider_id)),1)):(p(),o(n(U),{key:0,variant:`secondary`},{default:_(()=>[b(c(n(l)(`retryRules.globalBadge`)),1)]),_:1}))]),_:2},1024),E(n(X),null,{default:_(()=>[u(`div`,Ke,[E(n(U),{variant:`outline`},{default:_(()=>[b(c(t.retry_strategy===`fixed`?n(l)(`retryRules.strategy.fixed`):n(l)(`retryRules.strategy.exponential`)),1)]),_:2},1024),u(`span`,qe,[b(c(t.retry_delay_ms/1e3)+`s · `+c(n(l)(`retryRules.times`,{count:t.max_retries}))+` `,1),t.retry_strategy===`exponential`?(p(),f(i,{key:0},[b(` · `+c(n(l)(`retryRules.upperLimit`,{value:t.max_delay_ms/1e3})),1)],64)):e(``,!0)])])]),_:2},1024),E(n(X),null,{default:_(()=>[E(n(U),{variant:t.is_active?`default`:`secondary`},{default:_(()=>[b(c(t.is_active?n(l)(`common.enabled`):n(l)(`common.disabled`)),1)]),_:2},1032,[`variant`])]),_:2},1024),E(n(X),{class:`text-right`},{default:_(()=>[E(n(y),{variant:`ghost`,size:`sm`,onClick:e=>q(t),class:`mr-2`},{default:_(()=>[b(c(n(l)(`common.edit`)),1)]),_:1},8,[`onClick`]),E(n(y),{variant:`ghost`,size:`sm`,class:`text-destructive hover:text-destructive`,onClick:e=>Oe(t)},{default:_(()=>[b(c(n(l)(`common.delete`)),1)]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1024))),128)),m.value.length===0?(p(),o(n(Q),{key:0},{default:_(()=>[E(n(X),{colspan:`7`,class:`text-center text-muted-foreground py-8`},{default:_(()=>[b(c(n(l)(`retryRules.noRules`)),1)]),_:1})]),_:1})):e(``,!0)]),_:1})]),_:1})]),_:1}),E(n(le),{open:x.value,"onUpdate:open":r[17]||=e=>x.value=e},{default:_(()=>[E(n(se),{class:`max-w-lg`},{default:_(()=>[E(n(ce),null,{default:_(()=>[E(n(de),null,{default:_(()=>[b(c(S.value?n(l)(`retryRules.dialog.editRule`):n(l)(`retryRules.dialog.addRule`)),1)]),_:1})]),_:1}),u(`form`,{onSubmit:C(De,[`prevent`]),class:`space-y-3`},[u(`div`,null,[E(n(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[b(c(n(l)(`retryRules.dialog.name`)),1)]),_:1}),E(n(J),{modelValue:T.value.name,"onUpdate:modelValue":r[0]||=e=>T.value.name=e,type:`text`,required:``,onInput:r[1]||=e=>delete O.value.name},null,8,[`modelValue`]),O.value.name?(p(),f(`p`,Je,c(O.value.name),1)):e(``,!0)]),u(`div`,null,[E(n(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[b(c(n(l)(`retryRules.provider`)),1)]),_:1}),E(n(V),{modelValue:T.value.provider_id,"onUpdate:modelValue":r[2]||=e=>T.value.provider_id=e},{default:_(()=>[E(n(R),{class:`w-full`},{default:_(()=>[E(n(B),{placeholder:n(l)(`retryRules.providerPlaceholder`)},null,8,[`placeholder`])]),_:1}),E(n(F),null,{default:_(()=>[E(n(L),{value:`__all__`},{default:_(()=>[b(c(n(l)(`retryRules.providerAll`)),1)]),_:1}),(p(!0),f(i,null,D(h.value,e=>(p(),o(n(L),{key:e.id,value:e.id},{default:_(()=>[b(c(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`])]),u(`div`,null,[E(n(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[b(c(n(l)(`retryRules.dialog.statusCode`)),1)]),_:1}),E(n(J),{modelValue:T.value.status_code,"onUpdate:modelValue":r[3]||=e=>T.value.status_code=e,modelModifiers:{number:!0},type:`number`,required:``,onInput:r[4]||=e=>delete O.value.status_code},null,8,[`modelValue`]),O.value.status_code?(p(),f(`p`,Ye,c(O.value.status_code),1)):e(``,!0)]),u(`div`,null,[E(n(j),{class:`block text-sm font-medium text-foreground mb-1 flex items-center gap-1`},{default:_(()=>[b(c(n(l)(`retryRules.dialog.bodyPattern`))+` `,1),E(n(Ce),null,{default:_(()=>[E(n(ne),null,{default:_(()=>[E(n(re),{"as-child":``},{default:_(()=>[...r[19]||=[u(`span`,{class:`inline-flex items-center justify-center w-3.5 h-3.5 rounded-full bg-muted text-muted-foreground text-[10px] font-bold cursor-help`},`?`,-1)]]),_:1}),E(n(te),{side:`right`,class:`max-w-xs text-xs leading-relaxed`},{default:_(()=>[u(`p`,Xe,c(n(l)(`retryRules.dialog.bodyPattern`)),1),u(`p`,null,c(n(l)(`retryRules.dialog.bodyPatternTooltip`)),1)]),_:1})]),_:1})]),_:1})]),_:1}),E(n(me),{modelValue:T.value.matchMode,"onUpdate:modelValue":r[7]||=e=>T.value.matchMode=e},{default:_(()=>[E(n(pe),{class:`mb-2`},{default:_(()=>[E(n(P),{value:`regex`},{default:_(()=>[b(c(n(l)(`retryRules.regexMatch`)),1)]),_:1}),E(n(P),{value:`json`},{default:_(()=>[b(c(n(l)(`retryRules.jsonMatch`)),1)]),_:1})]),_:1}),E(n($),{value:`regex`},{default:_(()=>[E(n(J),{modelValue:T.value.body_pattern,"onUpdate:modelValue":r[5]||=e=>T.value.body_pattern=e,type:`text`,placeholder:n(l)(`retryRules.dialog.bodyPatternPlaceholder`),onInput:r[6]||=e=>delete O.value.body_pattern},null,8,[`modelValue`,`placeholder`]),O.value.body_pattern?(p(),f(`p`,Ze,c(O.value.body_pattern),1)):e(``,!0)]),_:1}),E(n($),{value:`json`},{default:_(()=>[u(`div`,Qe,[(p(!0),f(i,null,D(T.value.bodyMatchers,(t,r)=>(p(),f(`div`,{key:r,class:`flex items-start gap-2`},[E(n(J),{modelValue:t.path,"onUpdate:modelValue":e=>t.path=e,placeholder:n(l)(`retryRules.fieldPath`),class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),E(n(V),{modelValue:t.operator,"onUpdate:modelValue":e=>t.operator=e},{default:_(()=>[E(n(R),{class:`w-28 shrink-0`},{default:_(()=>[E(n(B))]),_:1}),E(n(F),null,{default:_(()=>[E(n(L),{value:`equals`},{default:_(()=>[b(c(n(l)(`retryRules.operatorEquals`)),1)]),_:1}),E(n(L),{value:`contains`},{default:_(()=>[b(c(n(l)(`retryRules.operatorContains`)),1)]),_:1}),E(n(L),{value:`exists`},{default:_(()=>[b(c(n(l)(`retryRules.operatorExists`)),1)]),_:1})]),_:1})]),_:1},8,[`modelValue`,`onUpdate:modelValue`]),t.operator===`exists`?e(``,!0):(p(),o(n(J),{key:0,modelValue:t.value,"onUpdate:modelValue":e=>t.value=e,placeholder:n(l)(`retryRules.matchValue`),class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`])),E(n(y),{type:`button`,variant:`ghost`,size:`icon`,class:`shrink-0 text-muted-foreground`,onClick:e=>M(r)},{default:_(()=>[E(n(Se),{class:`w-4 h-4`})]),_:1},8,[`onClick`])]))),128)),E(n(y),{type:`button`,variant:`outline`,size:`sm`,onClick:fe},{default:_(()=>[E(n(ee),{class:`w-3 h-3 mr-1`}),b(` `+c(n(l)(`retryRules.addCondition`)),1)]),_:1}),O.value.body_matchers?(p(),f(`p`,$e,c(O.value.body_matchers),1)):e(``,!0)])]),_:1})]),_:1},8,[`modelValue`])]),u(`div`,null,[E(n(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[b(c(n(l)(`retryRules.dialog.retryStrategy`)),1)]),_:1}),E(n(V),{modelValue:T.value.retry_strategy,"onUpdate:modelValue":r[8]||=e=>T.value.retry_strategy=e},{default:_(()=>[E(n(R),{class:`w-full`},{default:_(()=>[E(n(B),{placeholder:n(l)(`retryRules.dialog.selectStrategy`)},null,8,[`placeholder`])]),_:1}),E(n(F),null,{default:_(()=>[E(n(L),{value:`exponential`},{default:_(()=>[b(c(n(l)(`retryRules.strategy.exponential`)),1)]),_:1}),E(n(L),{value:`fixed`},{default:_(()=>[b(c(n(l)(`retryRules.strategy.fixed`)),1)]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),u(`div`,et,[u(`div`,null,[E(n(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[b(c(T.value.retry_strategy===`fixed`?n(l)(`retryRules.dialog.intervalMs`):n(l)(`retryRules.dialog.initialDelayMs`)),1)]),_:1}),E(n(J),{modelValue:T.value.retry_delay_ms,"onUpdate:modelValue":r[9]||=e=>T.value.retry_delay_ms=e,modelModifiers:{number:!0},type:`number`,min:100,required:``,onInput:r[10]||=e=>delete O.value.retry_delay_ms},null,8,[`modelValue`]),O.value.retry_delay_ms?(p(),f(`p`,tt,c(O.value.retry_delay_ms),1)):e(``,!0)]),u(`div`,null,[E(n(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[b(c(n(l)(`retryRules.dialog.maxRetries`)),1)]),_:1}),E(n(J),{modelValue:T.value.max_retries,"onUpdate:modelValue":r[11]||=e=>T.value.max_retries=e,modelModifiers:{number:!0},type:`number`,min:0,max:100,required:``,onInput:r[12]||=e=>delete O.value.max_retries},null,8,[`modelValue`]),O.value.max_retries?(p(),f(`p`,nt,c(O.value.max_retries),1)):e(``,!0)])]),T.value.retry_strategy===`exponential`?(p(),f(`div`,rt,[E(n(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[b(c(n(l)(`retryRules.dialog.maxDelayMs`)),1)]),_:1}),E(n(J),{modelValue:T.value.max_delay_ms,"onUpdate:modelValue":r[13]||=e=>T.value.max_delay_ms=e,modelModifiers:{number:!0},type:`number`,min:100,required:``,onInput:r[14]||=e=>delete O.value.max_delay_ms},null,8,[`modelValue`]),O.value.max_delay_ms?(p(),f(`p`,it,c(O.value.max_delay_ms),1)):e(``,!0)])):e(``,!0),u(`div`,at,[E(n(A),{modelValue:T.value.is_active,"onUpdate:modelValue":r[15]||=e=>T.value.is_active=e,id:`rule-active`},null,8,[`modelValue`]),E(n(j),{for:`rule-active`,class:`text-sm text-foreground`},{default:_(()=>[b(c(n(l)(`retryRules.dialog.enable`)),1)]),_:1})]),E(n(ue),null,{default:_(()=>[E(n(y),{type:`button`,variant:`outline`,onClick:r[16]||=e=>x.value=!1},{default:_(()=>[b(c(n(l)(`common.cancel`)),1)]),_:1}),E(n(y),{type:`submit`},{default:_(()=>[b(c(n(l)(`common.save`)),1)]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]),E(n(be),{open:!!w.value,"onUpdate:open":r[18]||=e=>{e||(w.value=null)}},{default:_(()=>[E(n(we),null,{default:_(()=>[E(n(xe),null,{default:_(()=>[E(n(ye),null,{default:_(()=>[b(c(n(l)(`retryRules.deleteConfirm.title`)),1)]),_:1}),E(n(ve),null,{default:_(()=>[b(c(n(l)(`retryRules.deleteConfirm.description`,{name:w.value?.name})),1)]),_:1})]),_:1}),E(n(he),null,{default:_(()=>[E(n(ge),null,{default:_(()=>[b(c(n(l)(`common.cancel`)),1)]),_:1}),E(n(y),{variant:`destructive`,onClick:Fe},{default:_(()=>[b(c(n(l)(`common.delete`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]),E(ze,{rules:k.value,onAdded:Ie},null,8,[`rules`])],64))]))}});export{ot as default};
@@ -1 +1 @@
1
- import{$ as e,A as t,Gt as n,H as r,J as i,L as a,Lt as o,Q as s,X as c,Xt as l,Z as u,et as d,gt as f,it as p,k as m,kt as h,mt as ee,n as g,nt as _,q as te,qt as v,rt as y,vt as b}from"./button-Csj7G8uP.js";import{n as x,t as ne}from"./useClipboard-DGrGSktu.js";import{t as re}from"./pencil-C2mVN-qO.js";import{t as ie}from"./plus-CtQvHS_r.js";import{t as ae}from"./search-BKxoG0xp.js";import{t as oe}from"./trash-2-BL7xrIYJ.js";import{t as se}from"./Checkbox-BVu9v787.js";import{a as S,n as C,o as w,r as T,t as ce}from"./dialog-DSOZukxC.js";import{t as E}from"./Label-BhSGa_Tn.js";import{t as le}from"./Switch-BG35vWEq.js";import{a as D,bt as ue,c as de,ct as fe,d as pe,gt as O,l as me,o as he,p as ge,s as _e,st as ve,u as ye}from"./index-C-o8k1O4.js";import{t as k}from"./badge-DfF7rlis.js";import{t as be}from"./Card-OdDwacfm.js";import{t as A}from"./Input-BpmvwfP9.js";import{a as xe,i as j,n as M,o as Se,r as N,t as Ce}from"./TableHeader-_3-h6u2u.js";import{t as P}from"./_plugin-vue_export-helper-BH2M0_bF.js";var we=a(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),Te=a(`shield-x`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m14.5 9.5-5 5`,key:`17q4r4`}],[`path`,{d:`m9.5 9.5 5 5`,key:`18nt4w`}]]),Ee={class:`page`},De={class:`flex items-center justify-between mb-4`},Oe={class:`text-base font-semibold text-foreground`},ke={class:`flex gap-6 px-4 py-3 mb-3 rounded-lg bg-card border border-input`},Ae={class:`flex flex-col gap-0.5`},je={class:`text-[11px] font-medium uppercase tracking-wider text-muted-foreground`},Me={class:`text-xl font-semibold leading-none font-mono`},Ne={class:`flex flex-col gap-0.5`},Pe={class:`text-[11px] font-medium uppercase tracking-wider text-muted-foreground`},Fe={class:`text-xl font-semibold leading-none font-mono text-primary`},Ie={class:`flex flex-col gap-0.5`},Le={class:`text-[11px] font-medium uppercase tracking-wider text-muted-foreground`},Re={class:`text-xl font-semibold leading-none font-mono`},ze={class:`mb-3`},Be={class:`relative max-w-[280px]`},Ve={class:`font-medium text-sm max-w-[200px] truncate block`},He={class:`flex items-center gap-1.5`},Ue={key:0,class:`font-mono text-xs font-medium break-all`},We={class:`font-mono text-xs font-medium`},Ge={class:`font-mono text-xs text-muted-foreground/40 tracking-wider`},Ke={class:`flex items-center gap-1 flex-wrap`},qe={class:`flex items-center gap-1.5`},Je={class:`text-xs text-muted-foreground`},Ye={class:`font-mono text-[11px] text-muted-foreground/50`},Xe={class:`flex items-center justify-end gap-0.5`},Ze={class:`text-muted-foreground text-sm`},Qe={key:0,class:`text-muted-foreground/50 text-xs mt-1`},$e={key:0,class:`text-xs text-destructive mt-1`},et={class:`text-[11px] text-muted-foreground/50 mb-2`},tt={class:`border rounded-md bg-muted/30 p-2`},nt={key:0,class:`flex flex-wrap gap-1 mb-2`},rt={class:`max-h-[200px] overflow-y-auto space-y-0.5`},it={class:`font-mono text-[11px]`},at={key:0,class:`text-muted-foreground text-xs text-center py-3`},ot={key:0,class:`flex items-center gap-2.5`},st={class:`space-y-3`},ct={class:`rounded-md border border-primary/25 bg-primary/10 p-3`},lt={class:`flex items-center gap-2`},ut={class:`font-mono text-xs font-medium break-all flex-1`},dt={class:`flex items-center gap-1.5 mt-2 text-warning text-[11px]`},F=2,ft=14,I=2e3,L=P(p({__name:`RouterKeys`,setup(a){let{t:p}=r(),P=`•`.repeat(ft),L=o([]),R=o([]),z=o(``),B=o(new Set),V=o(null),H=o(!1),U=o(!1),W=o(null),G=o(null),K=o(``),q=o(!1),J=o(``),Y=o({name:``,allowed_models:[],is_active:!0}),X=o({}),pt=c(()=>L.value.filter(e=>e.is_active).length),mt=c(()=>L.value.filter(e=>e.allowed_models&&e.allowed_models.length>0).length),Z=c(()=>{let e=z.value.toLowerCase();return e?L.value.filter(t=>t.name.toLowerCase().includes(e)||t.key&&t.key.toLowerCase().includes(e)):L.value}),ht=c(()=>{let e=J.value.toLowerCase();return e?R.value.filter(t=>t.toLowerCase().includes(e)):R.value});function gt(e){let t=`w-1.5 h-1.5 rounded-full shrink-0`;return e?`${t} bg-success shadow-[0_0_6px_var(--color-success)/0.4]`:`${t} bg-muted-foreground/30`}async function _t(e){let t=e.key;t&&await Q(t)&&(V.value=e.id,setTimeout(()=>{V.value===e.id&&(V.value=null)},I))}async function vt(){await Q(K.value)&&(q.value=!0,setTimeout(()=>{q.value=!1},I))}let{copy:Q}=ne();function yt(e){let t=B.value;t.has(e)?t.delete(e):t.add(e),B.value=new Set(t)}function bt(e,t){let n=Y.value.allowed_models;if(t===!0&&!n.includes(e))n.push(e);else if(!t){let t=n.indexOf(e);t>=0&&n.splice(t,1)}}function xt(e){let t=Y.value.allowed_models,n=t.indexOf(e);n>=0&&t.splice(n,1)}function St(){G.value=null,Y.value={name:``,allowed_models:[],is_active:!0},J.value=``,X.value={},H.value=!0}function Ct(e){G.value=e,Y.value={name:e.name,allowed_models:e.allowed_models?[...e.allowed_models]:[],is_active:!!e.is_active},J.value=``,X.value={},H.value=!0}function wt(e){W.value=e}async function Tt(){let e={};if(Y.value.name.trim()||(e.name=p(`routerKeys.nameRequired`)),X.value=e,!(Object.keys(e).length>0))try{if(G.value)await m.updateRouterKey(G.value.id,{name:Y.value.name,allowed_models:Y.value.allowed_models.length>0?Y.value.allowed_models:null,is_active:+!!Y.value.is_active}),H.value=!1,await $();else{let e=await m.createRouterKey({name:Y.value.name,allowed_models:Y.value.allowed_models.length>0?Y.value.allowed_models:null});H.value=!1,K.value=e.key,q.value=!1,U.value=!0,await $()}}catch(e){console.error(`routerKeys.save:`,e),D.error(t(e,p(`routerKeys.saveFailed`)))}}async function Et(e){try{await m.updateRouterKey(e.id,{is_active:+!e.is_active}),await $()}catch(e){console.error(`routerKeys.toggleActive:`,e),D.error(t(e,p(`routerKeys.toggleActiveFailed`)))}}async function Dt(){let e=W.value;if(e){W.value=null;try{await m.deleteRouterKey(e.id),await $()}catch(e){console.error(`routerKeys.delete:`,e),D.error(t(e,p(`routerKeys.deleteFailed`)))}}}async function $(){try{let[e,t]=await Promise.allSettled([m.getRouterKeys(),m.getAvailableModels()]);e.status===`fulfilled`&&(L.value=e.value),t.status===`fulfilled`&&(R.value=t.value)}catch(e){console.error(`routerKeys.load:`,e),D.error(t(e,p(`routerKeys.loadFailed`)))}}return ee($),(t,r)=>(f(),d(`div`,Ee,[u(`div`,De,[u(`h2`,Oe,l(n(p)(`routerKeys.title`)),1),y(n(g),{size:`sm`,onClick:St,class:`flex items-center gap-1.5`},{default:h(()=>[y(n(ie),{class:`w-3.5 h-3.5`}),_(` `+l(n(p)(`routerKeys.createKey`)),1)]),_:1})]),u(`div`,ke,[u(`div`,Ae,[u(`span`,je,l(n(p)(`routerKeys.statTotal`)),1),u(`span`,Me,l(L.value.length),1)]),r[10]||=u(`div`,{class:`w-px self-stretch bg-border`},null,-1),u(`div`,Ne,[u(`span`,Pe,l(n(p)(`routerKeys.statActive`)),1),u(`span`,Fe,l(pt.value),1)]),r[11]||=u(`div`,{class:`w-px self-stretch bg-border`},null,-1),u(`div`,Ie,[u(`span`,Le,l(n(p)(`routerKeys.statWhitelist`)),1),u(`span`,Re,l(mt.value),1)])]),u(`div`,ze,[u(`div`,Be,[y(n(ae),{class:`absolute left-2.5 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-muted-foreground/50 pointer-events-none`}),y(n(A),{modelValue:z.value,"onUpdate:modelValue":r[0]||=e=>z.value=e,placeholder:n(p)(`routerKeys.searchPlaceholder`),class:`h-[30px] pl-[30px] text-[13px]`},null,8,[`modelValue`,`placeholder`])])]),y(n(be),{flush:``},{default:h(()=>[y(n(Se),null,{default:h(()=>[y(n(Ce),null,{default:h(()=>[y(n(N),null,{default:h(()=>[y(n(M),{class:`text-[11px] font-semibold uppercase tracking-wider text-muted-foreground/60`},{default:h(()=>[_(l(n(p)(`routerKeys.tableHeaders.name`)),1)]),_:1}),y(n(M),{class:`text-[11px] font-semibold uppercase tracking-wider text-muted-foreground/60`},{default:h(()=>[_(l(n(p)(`routerKeys.tableHeaders.key`)),1)]),_:1}),y(n(M),{class:`text-[11px] font-semibold uppercase tracking-wider text-muted-foreground/60`},{default:h(()=>[_(l(n(p)(`routerKeys.tableHeaders.whitelist`)),1)]),_:1}),y(n(M),{class:`text-[11px] font-semibold uppercase tracking-wider text-muted-foreground/60`},{default:h(()=>[_(l(n(p)(`routerKeys.tableHeaders.status`)),1)]),_:1}),y(n(M),{class:`text-[11px] font-semibold uppercase tracking-wider text-muted-foreground/60`},{default:h(()=>[_(l(n(p)(`routerKeys.tableHeaders.createdAt`)),1)]),_:1}),y(n(M),{class:`text-[11px] font-semibold uppercase tracking-wider text-muted-foreground/60 text-right`},{default:h(()=>[_(l(n(p)(`routerKeys.tableHeaders.actions`)),1)]),_:1})]),_:1})]),_:1}),y(n(xe),null,{default:h(()=>[(f(!0),d(i,null,b(Z.value,t=>(f(),s(n(N),{key:t.id,class:v({"opacity-40":!t.is_active})},{default:h(()=>[y(n(j),null,{default:h(()=>[u(`span`,Ve,l(t.name),1)]),_:2},1024),y(n(j),null,{default:h(()=>[u(`div`,He,[B.value.has(t.id)?(f(),d(`span`,Ue,l(t.key),1)):(f(),d(i,{key:1},[u(`span`,We,l(t.key_prefix),1),u(`span`,Ge,l(n(P)),1)],64)),y(n(g),{variant:`ghost`,size:`icon`,class:`h-6 w-6 shrink-0`,onClick:e=>_t(t)},{default:h(()=>[V.value===t.id?(f(),s(n(O),{key:0,class:`w-3.5 h-3.5 text-success`})):(f(),s(n(x),{key:1,class:`w-3.5 h-3.5`}))]),_:2},1032,[`onClick`]),y(n(g),{variant:`ghost`,size:`sm`,class:`h-6 px-1.5 text-[11px] text-muted-foreground shrink-0`,onClick:e=>yt(t.id)},{default:h(()=>[_(l(B.value.has(t.id)?n(p)(`routerKeys.hideKey`):n(p)(`routerKeys.showKey`)),1)]),_:2},1032,[`onClick`])])]),_:2},1024),y(n(j),null,{default:h(()=>[u(`div`,Ke,[t.allowed_models&&t.allowed_models.length>0?(f(),d(i,{key:0},[(f(!0),d(i,null,b(t.allowed_models.slice(0,F),e=>(f(),s(n(k),{key:e,variant:`outline`,class:`font-mono text-[10px] font-medium px-1.5 py-0 h-5`},{default:h(()=>[_(l(e),1)]),_:2},1024))),128)),t.allowed_models.length>F?(f(),s(n(k),{key:0,class:`text-[10px] font-medium px-1.5 py-0 h-5`},{default:h(()=>[_(l(n(p)(`routerKeys.moreModels`,{count:t.allowed_models.length-F})),1)]),_:2},1024)):e(``,!0)],64)):(f(),s(n(k),{key:1,variant:`secondary`,class:`text-[10px] font-semibold px-1.5 py-0 h-5`},{default:h(()=>[_(l(n(p)(`common.allModels`)),1)]),_:1}))])]),_:2},1024),y(n(j),null,{default:h(()=>[u(`div`,qe,[u(`span`,{class:v(gt(t.is_active))},null,2),u(`span`,Je,l(t.is_active?n(p)(`common.active`):n(p)(`common.inactive`)),1)])]),_:2},1024),y(n(j),null,{default:h(()=>[u(`span`,Ye,l(n(ue)(t.created_at)),1)]),_:2},1024),y(n(j),{class:`text-right`},{default:h(()=>[u(`div`,Xe,[y(n(g),{variant:`ghost`,size:`icon`,class:`h-7 w-7`,onClick:e=>Ct(t)},{default:h(()=>[y(n(re),{class:`w-3.5 h-3.5`})]),_:1},8,[`onClick`]),y(n(g),{variant:`ghost`,size:`icon`,class:`h-7 w-7`,onClick:e=>Et(t)},{default:h(()=>[t.is_active?(f(),s(n(we),{key:0,class:`w-3.5 h-3.5 text-success`})):(f(),s(n(Te),{key:1,class:`w-3.5 h-3.5 text-muted-foreground`}))]),_:2},1032,[`onClick`]),y(n(g),{variant:`ghost`,size:`icon`,class:`h-7 w-7 text-muted-foreground hover:text-destructive`,onClick:e=>wt(t)},{default:h(()=>[y(n(oe),{class:`w-3.5 h-3.5`})]),_:1},8,[`onClick`])])]),_:2},1024)]),_:2},1032,[`class`]))),128)),Z.value.length===0?(f(),s(n(N),{key:0},{default:h(()=>[y(n(j),{colspan:`6`,class:`text-center py-12`},{default:h(()=>[u(`p`,Ze,l(L.value.length===0?n(p)(`routerKeys.noKeys`):n(p)(`routerKeys.noMatch`)),1),L.value.length===0?(f(),d(`p`,Qe,l(n(p)(`routerKeys.noKeysHint`)),1)):e(``,!0)]),_:1})]),_:1})):e(``,!0)]),_:1})]),_:1})]),_:1}),y(n(w),{open:H.value,"onUpdate:open":r[6]||=e=>H.value=e},{default:h(()=>[y(n(S),{class:`sm:max-w-lg`},{default:h(()=>[y(n(C),null,{default:h(()=>[y(n(ce),null,{default:h(()=>[_(l(G.value?n(p)(`routerKeys.editKey`):n(p)(`routerKeys.createKey`)),1)]),_:1})]),_:1}),u(`form`,{onSubmit:te(Tt,[`prevent`]),class:`space-y-4`},[u(`div`,null,[y(n(E),{class:`text-xs font-medium text-muted-foreground mb-1 block`},{default:h(()=>[_(l(n(p)(`routerKeys.tableHeaders.name`)),1)]),_:1}),y(n(A),{modelValue:Y.value.name,"onUpdate:modelValue":r[1]||=e=>Y.value.name=e,placeholder:n(p)(`routerKeys.placeholder.name`),onInput:r[2]||=e=>delete X.value.name},null,8,[`modelValue`,`placeholder`]),X.value.name?(f(),d(`p`,$e,l(X.value.name),1)):e(``,!0)]),u(`div`,null,[y(n(E),{class:`text-xs font-medium text-muted-foreground mb-1 block`},{default:h(()=>[_(l(n(p)(`routerKeys.whitelistLabel`)),1)]),_:1}),u(`p`,et,l(n(p)(`routerKeys.whitelistHint`)),1),u(`div`,tt,[y(n(A),{modelValue:J.value,"onUpdate:modelValue":r[3]||=e=>J.value=e,placeholder:n(p)(`routerKeys.modelFilterPlaceholder`),class:`h-7 text-xs border-0 border-b rounded-none mb-2 bg-transparent focus-visible:ring-0`},null,8,[`modelValue`,`placeholder`]),Y.value.allowed_models.length>0?(f(),d(`div`,nt,[(f(!0),d(i,null,b(Y.value.allowed_models,e=>(f(),s(n(k),{key:e,variant:`secondary`,class:`font-mono text-[10px] font-medium px-1.5 py-0 h-5 gap-1`},{default:h(()=>[_(l(e)+` `,1),y(n(ve),{class:`w-3 h-3 cursor-pointer hover:text-destructive shrink-0`,onClick:t=>xt(e)},null,8,[`onClick`])]),_:2},1024))),128))])):e(``,!0),u(`div`,rt,[(f(!0),d(i,null,b(ht.value,e=>(f(),s(n(E),{key:e,class:`flex items-center gap-2 cursor-pointer px-1.5 py-1 rounded hover:bg-muted text-xs font-normal`},{default:h(()=>[y(n(se),{"model-value":Y.value.allowed_models.includes(e),"onUpdate:modelValue":t=>bt(e,t)},null,8,[`model-value`,`onUpdate:modelValue`]),u(`span`,it,l(e),1)]),_:2},1024))),128)),R.value.length===0?(f(),d(`p`,at,l(n(p)(`routerKeys.noModels`)),1)):e(``,!0)])])]),G.value?(f(),d(`div`,ot,[y(n(le),{"model-value":Y.value.is_active,"onUpdate:modelValue":r[4]||=e=>Y.value.is_active=e},null,8,[`model-value`]),y(n(E),{class:`text-sm`},{default:h(()=>[_(l(Y.value.is_active?n(p)(`common.active`):n(p)(`common.inactive`)),1)]),_:1})])):e(``,!0),y(n(T),null,{default:h(()=>[y(n(g),{type:`button`,variant:`outline`,onClick:r[5]||=e=>H.value=!1},{default:h(()=>[_(l(n(p)(`common.cancel`)),1)]),_:1}),y(n(g),{type:`submit`},{default:h(()=>[_(l(n(p)(`common.save`)),1)]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]),y(n(w),{open:U.value,"onUpdate:open":r[8]||=e=>U.value=e},{default:h(()=>[y(n(S),{class:`sm:max-w-lg`},{default:h(()=>[y(n(C),null,{default:h(()=>[y(n(ce),null,{default:h(()=>[_(l(n(p)(`routerKeys.keyCreated`)),1)]),_:1})]),_:1}),u(`div`,st,[u(`div`,ct,[u(`div`,lt,[u(`span`,ut,l(K.value),1),y(n(g),{variant:`ghost`,size:`icon`,class:`h-7 w-7 shrink-0`,onClick:vt},{default:h(()=>[q.value?(f(),s(n(O),{key:0,class:`w-3.5 h-3.5 text-success`})):(f(),s(n(x),{key:1,class:`w-3.5 h-3.5`}))]),_:1})]),u(`div`,dt,[y(n(fe),{class:`w-3 h-3 shrink-0`}),_(` `+l(n(p)(`routerKeys.keyShownOnce`)),1)])])]),y(n(T),null,{default:h(()=>[y(n(g),{onClick:r[7]||=e=>U.value=!1},{default:h(()=>[_(l(n(p)(`common.close`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]),y(n(ge),{open:!!W.value,"onUpdate:open":r[9]||=e=>{e||(W.value=null)}},{default:h(()=>[y(n(ye),null,{default:h(()=>[y(n(_e),null,{default:h(()=>[y(n(he),null,{default:h(()=>[_(l(n(p)(`routerKeys.confirmDeleteTitle`)),1)]),_:1}),y(n(me),null,{default:h(()=>[_(l(n(p)(`routerKeys.confirmDeleteDesc`,{name:W.value?.name})),1)]),_:1})]),_:1}),y(n(de),null,{default:h(()=>[y(n(pe),null,{default:h(()=>[_(l(n(p)(`common.cancel`)),1)]),_:1}),y(n(g),{variant:`destructive`,onClick:Dt},{default:h(()=>[_(l(n(p)(`common.delete`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}}),[[`__scopeId`,`data-v-b4ea54d4`]]);export{L as default};
1
+ import{$ as e,A as t,Gt as n,H as r,J as i,L as a,Lt as o,Q as s,X as c,Xt as l,Z as u,et as d,gt as f,it as p,k as m,kt as h,mt as ee,n as g,nt as _,q as te,qt as v,rt as y,vt as b}from"./button-DG6Kd0iG.js";import{n as x,t as ne}from"./useClipboard-oDSOvLPT.js";import{t as re}from"./pencil-xKWF4Xe-.js";import{t as ie}from"./plus-CtcJ9YdO.js";import{t as ae}from"./search-VSaI9nBp.js";import{t as oe}from"./trash-2-DubWJ15J.js";import{t as se}from"./Checkbox-CA9kxtM4.js";import{a as S,n as C,o as w,r as T,t as ce}from"./dialog-CQOpjImC.js";import{t as E}from"./Label-DmDoAc6v.js";import{t as le}from"./Switch-DKdPLHJ3.js";import{a as D,bt as ue,c as de,ct as fe,d as pe,gt as O,l as me,o as he,p as ge,s as _e,st as ve,u as ye}from"./index-D_n3EVk6.js";import{t as k}from"./badge-BscUNLaG.js";import{t as be}from"./Card-UQRcFVIJ.js";import{t as A}from"./Input-DVGxkxMa.js";import{a as xe,i as j,n as M,o as Se,r as N,t as Ce}from"./TableHeader-DZah46vy.js";import{t as P}from"./_plugin-vue_export-helper-BH2M0_bF.js";var we=a(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),Te=a(`shield-x`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m14.5 9.5-5 5`,key:`17q4r4`}],[`path`,{d:`m9.5 9.5 5 5`,key:`18nt4w`}]]),Ee={class:`page`},De={class:`flex items-center justify-between mb-4`},Oe={class:`text-base font-semibold text-foreground`},ke={class:`flex gap-6 px-4 py-3 mb-3 rounded-lg bg-card border border-input`},Ae={class:`flex flex-col gap-0.5`},je={class:`text-[11px] font-medium uppercase tracking-wider text-muted-foreground`},Me={class:`text-xl font-semibold leading-none font-mono`},Ne={class:`flex flex-col gap-0.5`},Pe={class:`text-[11px] font-medium uppercase tracking-wider text-muted-foreground`},Fe={class:`text-xl font-semibold leading-none font-mono text-primary`},Ie={class:`flex flex-col gap-0.5`},Le={class:`text-[11px] font-medium uppercase tracking-wider text-muted-foreground`},Re={class:`text-xl font-semibold leading-none font-mono`},ze={class:`mb-3`},Be={class:`relative max-w-[280px]`},Ve={class:`font-medium text-sm max-w-[200px] truncate block`},He={class:`flex items-center gap-1.5`},Ue={key:0,class:`font-mono text-xs font-medium break-all`},We={class:`font-mono text-xs font-medium`},Ge={class:`font-mono text-xs text-muted-foreground/40 tracking-wider`},Ke={class:`flex items-center gap-1 flex-wrap`},qe={class:`flex items-center gap-1.5`},Je={class:`text-xs text-muted-foreground`},Ye={class:`font-mono text-[11px] text-muted-foreground/50`},Xe={class:`flex items-center justify-end gap-0.5`},Ze={class:`text-muted-foreground text-sm`},Qe={key:0,class:`text-muted-foreground/50 text-xs mt-1`},$e={key:0,class:`text-xs text-destructive mt-1`},et={class:`text-[11px] text-muted-foreground/50 mb-2`},tt={class:`border rounded-md bg-muted/30 p-2`},nt={key:0,class:`flex flex-wrap gap-1 mb-2`},rt={class:`max-h-[200px] overflow-y-auto space-y-0.5`},it={class:`font-mono text-[11px]`},at={key:0,class:`text-muted-foreground text-xs text-center py-3`},ot={key:0,class:`flex items-center gap-2.5`},st={class:`space-y-3`},ct={class:`rounded-md border border-primary/25 bg-primary/10 p-3`},lt={class:`flex items-center gap-2`},ut={class:`font-mono text-xs font-medium break-all flex-1`},dt={class:`flex items-center gap-1.5 mt-2 text-warning text-[11px]`},F=2,ft=14,I=2e3,L=P(p({__name:`RouterKeys`,setup(a){let{t:p}=r(),P=`•`.repeat(ft),L=o([]),R=o([]),z=o(``),B=o(new Set),V=o(null),H=o(!1),U=o(!1),W=o(null),G=o(null),K=o(``),q=o(!1),J=o(``),Y=o({name:``,allowed_models:[],is_active:!0}),X=o({}),pt=c(()=>L.value.filter(e=>e.is_active).length),mt=c(()=>L.value.filter(e=>e.allowed_models&&e.allowed_models.length>0).length),Z=c(()=>{let e=z.value.toLowerCase();return e?L.value.filter(t=>t.name.toLowerCase().includes(e)||t.key&&t.key.toLowerCase().includes(e)):L.value}),ht=c(()=>{let e=J.value.toLowerCase();return e?R.value.filter(t=>t.toLowerCase().includes(e)):R.value});function gt(e){let t=`w-1.5 h-1.5 rounded-full shrink-0`;return e?`${t} bg-success shadow-[0_0_6px_var(--color-success)/0.4]`:`${t} bg-muted-foreground/30`}async function _t(e){let t=e.key;t&&await Q(t)&&(V.value=e.id,setTimeout(()=>{V.value===e.id&&(V.value=null)},I))}async function vt(){await Q(K.value)&&(q.value=!0,setTimeout(()=>{q.value=!1},I))}let{copy:Q}=ne();function yt(e){let t=B.value;t.has(e)?t.delete(e):t.add(e),B.value=new Set(t)}function bt(e,t){let n=Y.value.allowed_models;if(t===!0&&!n.includes(e))n.push(e);else if(!t){let t=n.indexOf(e);t>=0&&n.splice(t,1)}}function xt(e){let t=Y.value.allowed_models,n=t.indexOf(e);n>=0&&t.splice(n,1)}function St(){G.value=null,Y.value={name:``,allowed_models:[],is_active:!0},J.value=``,X.value={},H.value=!0}function Ct(e){G.value=e,Y.value={name:e.name,allowed_models:e.allowed_models?[...e.allowed_models]:[],is_active:!!e.is_active},J.value=``,X.value={},H.value=!0}function wt(e){W.value=e}async function Tt(){let e={};if(Y.value.name.trim()||(e.name=p(`routerKeys.nameRequired`)),X.value=e,!(Object.keys(e).length>0))try{if(G.value)await m.updateRouterKey(G.value.id,{name:Y.value.name,allowed_models:Y.value.allowed_models.length>0?Y.value.allowed_models:null,is_active:+!!Y.value.is_active}),H.value=!1,await $();else{let e=await m.createRouterKey({name:Y.value.name,allowed_models:Y.value.allowed_models.length>0?Y.value.allowed_models:null});H.value=!1,K.value=e.key,q.value=!1,U.value=!0,await $()}}catch(e){console.error(`routerKeys.save:`,e),D.error(t(e,p(`routerKeys.saveFailed`)))}}async function Et(e){try{await m.updateRouterKey(e.id,{is_active:+!e.is_active}),await $()}catch(e){console.error(`routerKeys.toggleActive:`,e),D.error(t(e,p(`routerKeys.toggleActiveFailed`)))}}async function Dt(){let e=W.value;if(e){W.value=null;try{await m.deleteRouterKey(e.id),await $()}catch(e){console.error(`routerKeys.delete:`,e),D.error(t(e,p(`routerKeys.deleteFailed`)))}}}async function $(){try{let[e,t]=await Promise.allSettled([m.getRouterKeys(),m.getAvailableModels()]);e.status===`fulfilled`&&(L.value=e.value),t.status===`fulfilled`&&(R.value=t.value)}catch(e){console.error(`routerKeys.load:`,e),D.error(t(e,p(`routerKeys.loadFailed`)))}}return ee($),(t,r)=>(f(),d(`div`,Ee,[u(`div`,De,[u(`h2`,Oe,l(n(p)(`routerKeys.title`)),1),y(n(g),{size:`sm`,onClick:St,class:`flex items-center gap-1.5`},{default:h(()=>[y(n(ie),{class:`w-3.5 h-3.5`}),_(` `+l(n(p)(`routerKeys.createKey`)),1)]),_:1})]),u(`div`,ke,[u(`div`,Ae,[u(`span`,je,l(n(p)(`routerKeys.statTotal`)),1),u(`span`,Me,l(L.value.length),1)]),r[10]||=u(`div`,{class:`w-px self-stretch bg-border`},null,-1),u(`div`,Ne,[u(`span`,Pe,l(n(p)(`routerKeys.statActive`)),1),u(`span`,Fe,l(pt.value),1)]),r[11]||=u(`div`,{class:`w-px self-stretch bg-border`},null,-1),u(`div`,Ie,[u(`span`,Le,l(n(p)(`routerKeys.statWhitelist`)),1),u(`span`,Re,l(mt.value),1)])]),u(`div`,ze,[u(`div`,Be,[y(n(ae),{class:`absolute left-2.5 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-muted-foreground/50 pointer-events-none`}),y(n(A),{modelValue:z.value,"onUpdate:modelValue":r[0]||=e=>z.value=e,placeholder:n(p)(`routerKeys.searchPlaceholder`),class:`h-[30px] pl-[30px] text-[13px]`},null,8,[`modelValue`,`placeholder`])])]),y(n(be),{flush:``},{default:h(()=>[y(n(Se),null,{default:h(()=>[y(n(Ce),null,{default:h(()=>[y(n(N),null,{default:h(()=>[y(n(M),{class:`text-[11px] font-semibold uppercase tracking-wider text-muted-foreground/60`},{default:h(()=>[_(l(n(p)(`routerKeys.tableHeaders.name`)),1)]),_:1}),y(n(M),{class:`text-[11px] font-semibold uppercase tracking-wider text-muted-foreground/60`},{default:h(()=>[_(l(n(p)(`routerKeys.tableHeaders.key`)),1)]),_:1}),y(n(M),{class:`text-[11px] font-semibold uppercase tracking-wider text-muted-foreground/60`},{default:h(()=>[_(l(n(p)(`routerKeys.tableHeaders.whitelist`)),1)]),_:1}),y(n(M),{class:`text-[11px] font-semibold uppercase tracking-wider text-muted-foreground/60`},{default:h(()=>[_(l(n(p)(`routerKeys.tableHeaders.status`)),1)]),_:1}),y(n(M),{class:`text-[11px] font-semibold uppercase tracking-wider text-muted-foreground/60`},{default:h(()=>[_(l(n(p)(`routerKeys.tableHeaders.createdAt`)),1)]),_:1}),y(n(M),{class:`text-[11px] font-semibold uppercase tracking-wider text-muted-foreground/60 text-right`},{default:h(()=>[_(l(n(p)(`routerKeys.tableHeaders.actions`)),1)]),_:1})]),_:1})]),_:1}),y(n(xe),null,{default:h(()=>[(f(!0),d(i,null,b(Z.value,t=>(f(),s(n(N),{key:t.id,class:v({"opacity-40":!t.is_active})},{default:h(()=>[y(n(j),null,{default:h(()=>[u(`span`,Ve,l(t.name),1)]),_:2},1024),y(n(j),null,{default:h(()=>[u(`div`,He,[B.value.has(t.id)?(f(),d(`span`,Ue,l(t.key),1)):(f(),d(i,{key:1},[u(`span`,We,l(t.key_prefix),1),u(`span`,Ge,l(n(P)),1)],64)),y(n(g),{variant:`ghost`,size:`icon`,class:`h-6 w-6 shrink-0`,onClick:e=>_t(t)},{default:h(()=>[V.value===t.id?(f(),s(n(O),{key:0,class:`w-3.5 h-3.5 text-success`})):(f(),s(n(x),{key:1,class:`w-3.5 h-3.5`}))]),_:2},1032,[`onClick`]),y(n(g),{variant:`ghost`,size:`sm`,class:`h-6 px-1.5 text-[11px] text-muted-foreground shrink-0`,onClick:e=>yt(t.id)},{default:h(()=>[_(l(B.value.has(t.id)?n(p)(`routerKeys.hideKey`):n(p)(`routerKeys.showKey`)),1)]),_:2},1032,[`onClick`])])]),_:2},1024),y(n(j),null,{default:h(()=>[u(`div`,Ke,[t.allowed_models&&t.allowed_models.length>0?(f(),d(i,{key:0},[(f(!0),d(i,null,b(t.allowed_models.slice(0,F),e=>(f(),s(n(k),{key:e,variant:`outline`,class:`font-mono text-[10px] font-medium px-1.5 py-0 h-5`},{default:h(()=>[_(l(e),1)]),_:2},1024))),128)),t.allowed_models.length>F?(f(),s(n(k),{key:0,class:`text-[10px] font-medium px-1.5 py-0 h-5`},{default:h(()=>[_(l(n(p)(`routerKeys.moreModels`,{count:t.allowed_models.length-F})),1)]),_:2},1024)):e(``,!0)],64)):(f(),s(n(k),{key:1,variant:`secondary`,class:`text-[10px] font-semibold px-1.5 py-0 h-5`},{default:h(()=>[_(l(n(p)(`common.allModels`)),1)]),_:1}))])]),_:2},1024),y(n(j),null,{default:h(()=>[u(`div`,qe,[u(`span`,{class:v(gt(t.is_active))},null,2),u(`span`,Je,l(t.is_active?n(p)(`common.active`):n(p)(`common.inactive`)),1)])]),_:2},1024),y(n(j),null,{default:h(()=>[u(`span`,Ye,l(n(ue)(t.created_at)),1)]),_:2},1024),y(n(j),{class:`text-right`},{default:h(()=>[u(`div`,Xe,[y(n(g),{variant:`ghost`,size:`icon`,class:`h-7 w-7`,onClick:e=>Ct(t)},{default:h(()=>[y(n(re),{class:`w-3.5 h-3.5`})]),_:1},8,[`onClick`]),y(n(g),{variant:`ghost`,size:`icon`,class:`h-7 w-7`,onClick:e=>Et(t)},{default:h(()=>[t.is_active?(f(),s(n(we),{key:0,class:`w-3.5 h-3.5 text-success`})):(f(),s(n(Te),{key:1,class:`w-3.5 h-3.5 text-muted-foreground`}))]),_:2},1032,[`onClick`]),y(n(g),{variant:`ghost`,size:`icon`,class:`h-7 w-7 text-muted-foreground hover:text-destructive`,onClick:e=>wt(t)},{default:h(()=>[y(n(oe),{class:`w-3.5 h-3.5`})]),_:1},8,[`onClick`])])]),_:2},1024)]),_:2},1032,[`class`]))),128)),Z.value.length===0?(f(),s(n(N),{key:0},{default:h(()=>[y(n(j),{colspan:`6`,class:`text-center py-12`},{default:h(()=>[u(`p`,Ze,l(L.value.length===0?n(p)(`routerKeys.noKeys`):n(p)(`routerKeys.noMatch`)),1),L.value.length===0?(f(),d(`p`,Qe,l(n(p)(`routerKeys.noKeysHint`)),1)):e(``,!0)]),_:1})]),_:1})):e(``,!0)]),_:1})]),_:1})]),_:1}),y(n(w),{open:H.value,"onUpdate:open":r[6]||=e=>H.value=e},{default:h(()=>[y(n(S),{class:`sm:max-w-lg`},{default:h(()=>[y(n(C),null,{default:h(()=>[y(n(ce),null,{default:h(()=>[_(l(G.value?n(p)(`routerKeys.editKey`):n(p)(`routerKeys.createKey`)),1)]),_:1})]),_:1}),u(`form`,{onSubmit:te(Tt,[`prevent`]),class:`space-y-4`},[u(`div`,null,[y(n(E),{class:`text-xs font-medium text-muted-foreground mb-1 block`},{default:h(()=>[_(l(n(p)(`routerKeys.tableHeaders.name`)),1)]),_:1}),y(n(A),{modelValue:Y.value.name,"onUpdate:modelValue":r[1]||=e=>Y.value.name=e,placeholder:n(p)(`routerKeys.placeholder.name`),onInput:r[2]||=e=>delete X.value.name},null,8,[`modelValue`,`placeholder`]),X.value.name?(f(),d(`p`,$e,l(X.value.name),1)):e(``,!0)]),u(`div`,null,[y(n(E),{class:`text-xs font-medium text-muted-foreground mb-1 block`},{default:h(()=>[_(l(n(p)(`routerKeys.whitelistLabel`)),1)]),_:1}),u(`p`,et,l(n(p)(`routerKeys.whitelistHint`)),1),u(`div`,tt,[y(n(A),{modelValue:J.value,"onUpdate:modelValue":r[3]||=e=>J.value=e,placeholder:n(p)(`routerKeys.modelFilterPlaceholder`),class:`h-7 text-xs border-0 border-b rounded-none mb-2 bg-transparent focus-visible:ring-0`},null,8,[`modelValue`,`placeholder`]),Y.value.allowed_models.length>0?(f(),d(`div`,nt,[(f(!0),d(i,null,b(Y.value.allowed_models,e=>(f(),s(n(k),{key:e,variant:`secondary`,class:`font-mono text-[10px] font-medium px-1.5 py-0 h-5 gap-1`},{default:h(()=>[_(l(e)+` `,1),y(n(ve),{class:`w-3 h-3 cursor-pointer hover:text-destructive shrink-0`,onClick:t=>xt(e)},null,8,[`onClick`])]),_:2},1024))),128))])):e(``,!0),u(`div`,rt,[(f(!0),d(i,null,b(ht.value,e=>(f(),s(n(E),{key:e,class:`flex items-center gap-2 cursor-pointer px-1.5 py-1 rounded hover:bg-muted text-xs font-normal`},{default:h(()=>[y(n(se),{"model-value":Y.value.allowed_models.includes(e),"onUpdate:modelValue":t=>bt(e,t)},null,8,[`model-value`,`onUpdate:modelValue`]),u(`span`,it,l(e),1)]),_:2},1024))),128)),R.value.length===0?(f(),d(`p`,at,l(n(p)(`routerKeys.noModels`)),1)):e(``,!0)])])]),G.value?(f(),d(`div`,ot,[y(n(le),{"model-value":Y.value.is_active,"onUpdate:modelValue":r[4]||=e=>Y.value.is_active=e},null,8,[`model-value`]),y(n(E),{class:`text-sm`},{default:h(()=>[_(l(Y.value.is_active?n(p)(`common.active`):n(p)(`common.inactive`)),1)]),_:1})])):e(``,!0),y(n(T),null,{default:h(()=>[y(n(g),{type:`button`,variant:`outline`,onClick:r[5]||=e=>H.value=!1},{default:h(()=>[_(l(n(p)(`common.cancel`)),1)]),_:1}),y(n(g),{type:`submit`},{default:h(()=>[_(l(n(p)(`common.save`)),1)]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]),y(n(w),{open:U.value,"onUpdate:open":r[8]||=e=>U.value=e},{default:h(()=>[y(n(S),{class:`sm:max-w-lg`},{default:h(()=>[y(n(C),null,{default:h(()=>[y(n(ce),null,{default:h(()=>[_(l(n(p)(`routerKeys.keyCreated`)),1)]),_:1})]),_:1}),u(`div`,st,[u(`div`,ct,[u(`div`,lt,[u(`span`,ut,l(K.value),1),y(n(g),{variant:`ghost`,size:`icon`,class:`h-7 w-7 shrink-0`,onClick:vt},{default:h(()=>[q.value?(f(),s(n(O),{key:0,class:`w-3.5 h-3.5 text-success`})):(f(),s(n(x),{key:1,class:`w-3.5 h-3.5`}))]),_:1})]),u(`div`,dt,[y(n(fe),{class:`w-3 h-3 shrink-0`}),_(` `+l(n(p)(`routerKeys.keyShownOnce`)),1)])])]),y(n(T),null,{default:h(()=>[y(n(g),{onClick:r[7]||=e=>U.value=!1},{default:h(()=>[_(l(n(p)(`common.close`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]),y(n(ge),{open:!!W.value,"onUpdate:open":r[9]||=e=>{e||(W.value=null)}},{default:h(()=>[y(n(ye),null,{default:h(()=>[y(n(_e),null,{default:h(()=>[y(n(he),null,{default:h(()=>[_(l(n(p)(`routerKeys.confirmDeleteTitle`)),1)]),_:1}),y(n(me),null,{default:h(()=>[_(l(n(p)(`routerKeys.confirmDeleteDesc`,{name:W.value?.name})),1)]),_:1})]),_:1}),y(n(de),null,{default:h(()=>[y(n(pe),null,{default:h(()=>[_(l(n(p)(`common.cancel`)),1)]),_:1}),y(n(g),{variant:`destructive`,onClick:Dt},{default:h(()=>[_(l(n(p)(`common.delete`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}}),[[`__scopeId`,`data-v-b4ea54d4`]]);export{L as default};
@@ -1 +1 @@
1
- import{Gt as e,Ht as t,Lt as n,Q as r,X as i,ft as a,gt as o,ht as s,i as c,it as l,kt as u,m as d,mt as f,rt as p,yt as m}from"./button-Csj7G8uP.js";import{G as h,J as g,V as _,Y as v,k as y}from"./index-C-o8k1O4.js";var b=`rovingFocusGroup.onEntryFocus`,x={bubbles:!1,cancelable:!0},S={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function C(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function w(e,t,n){let r=C(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return S[r]}function T(e,t=!1){let n=g();for(let r of e)if(r===n||(r.focus({preventScroll:t}),g()!==n))return}function E(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var[D,O]=v(`RovingFocusGroup`),k=l({__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(i,{expose:a,emit:s}){let l=i,f=s,{loop:g,orientation:_,dir:v}=t(l),S=h(v),C=d(l,`currentTabStopId`,f,{defaultValue:l.defaultCurrentTabStopId,passive:l.currentTabStopId===void 0}),w=n(!1),E=n(!1),D=n(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),f(`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),l.preventScrollOnEntryFocus)}}E.value=!1}function M(){setTimeout(()=>{E.value=!1},1)}return a({getItems:k}),O({loop:g,dir:S,orientation:_,currentTabStopId:C,onItemFocus:e=>{C.value=e},onItemShiftTab:()=>{w.value=!0},onFocusableItemAdd:()=>{D.value++},onFocusableItemRemove:()=>{D.value--}}),(t,n)=>(o(),r(e(A),null,{default:u(()=>[p(e(c),{tabindex:w.value||D.value===0?-1:0,"data-orientation":e(_),as:t.as,"as-child":t.asChild,dir:e(S),style:{outline:`none`},onMousedown:n[0]||=e=>E.value=!0,onMouseup:M,onFocus:j,onBlur:n[1]||=e=>w.value=!1},{default:u(()=>[m(t.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`as`,`as-child`,`dir`])]),_:3}))}}),A=l({__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(t){let n=t,l=D(),d=_(),h=i(()=>n.tabStopId||d),g=i(()=>l.currentTabStopId.value===h.value),{getItems:v,CollectionItem:b}=y();f(()=>{n.focusable&&l.onFocusableItemAdd()}),s(()=>{n.focusable&&l.onFocusableItemRemove()});function x(e){if(e.key===`Tab`&&e.shiftKey){l.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=w(e,l.orientation.value,l.dir.value);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||!n.allowShiftKey&&e.shiftKey)return;e.preventDefault();let r=[...v().map(e=>e.ref).filter(e=>e.dataset.disabled!==``)];if(t===`last`)r.reverse();else if(t===`prev`||t===`next`){t===`prev`&&r.reverse();let n=r.indexOf(e.currentTarget);r=l.loop.value?E(r,n+1):r.slice(n+1)}a(()=>T(r))}}return(t,n)=>(o(),r(e(b),null,{default:u(()=>[p(e(c),{tabindex:g.value?0:-1,"data-orientation":e(l).orientation.value,"data-active":t.active?``:void 0,"data-disabled":t.focusable?void 0:``,as:t.as,"as-child":t.asChild,onMousedown:n[0]||=n=>{t.focusable?e(l).onItemFocus(h.value):n.preventDefault()},onFocus:n[1]||=t=>e(l).onItemFocus(h.value),onKeydown:x},{default:u(()=>[m(t.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`data-active`,`data-disabled`,`as`,`as-child`])]),_:3}))}});export{k as n,A as t};
1
+ import{Gt as e,Ht as t,Lt as n,Q as r,X as i,ft as a,gt as o,ht as s,i as c,it as l,kt as u,m as d,mt as f,rt as p,yt as m}from"./button-DG6Kd0iG.js";import{G as h,J as g,V as _,Y as v,k as y}from"./index-D_n3EVk6.js";var b=`rovingFocusGroup.onEntryFocus`,x={bubbles:!1,cancelable:!0},S={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function C(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function w(e,t,n){let r=C(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return S[r]}function T(e,t=!1){let n=g();for(let r of e)if(r===n||(r.focus({preventScroll:t}),g()!==n))return}function E(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var[D,O]=v(`RovingFocusGroup`),k=l({__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(i,{expose:a,emit:s}){let l=i,f=s,{loop:g,orientation:_,dir:v}=t(l),S=h(v),C=d(l,`currentTabStopId`,f,{defaultValue:l.defaultCurrentTabStopId,passive:l.currentTabStopId===void 0}),w=n(!1),E=n(!1),D=n(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),f(`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),l.preventScrollOnEntryFocus)}}E.value=!1}function M(){setTimeout(()=>{E.value=!1},1)}return a({getItems:k}),O({loop:g,dir:S,orientation:_,currentTabStopId:C,onItemFocus:e=>{C.value=e},onItemShiftTab:()=>{w.value=!0},onFocusableItemAdd:()=>{D.value++},onFocusableItemRemove:()=>{D.value--}}),(t,n)=>(o(),r(e(A),null,{default:u(()=>[p(e(c),{tabindex:w.value||D.value===0?-1:0,"data-orientation":e(_),as:t.as,"as-child":t.asChild,dir:e(S),style:{outline:`none`},onMousedown:n[0]||=e=>E.value=!0,onMouseup:M,onFocus:j,onBlur:n[1]||=e=>w.value=!1},{default:u(()=>[m(t.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`as`,`as-child`,`dir`])]),_:3}))}}),A=l({__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(t){let n=t,l=D(),d=_(),h=i(()=>n.tabStopId||d),g=i(()=>l.currentTabStopId.value===h.value),{getItems:v,CollectionItem:b}=y();f(()=>{n.focusable&&l.onFocusableItemAdd()}),s(()=>{n.focusable&&l.onFocusableItemRemove()});function x(e){if(e.key===`Tab`&&e.shiftKey){l.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=w(e,l.orientation.value,l.dir.value);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||!n.allowShiftKey&&e.shiftKey)return;e.preventDefault();let r=[...v().map(e=>e.ref).filter(e=>e.dataset.disabled!==``)];if(t===`last`)r.reverse();else if(t===`prev`||t===`next`){t===`prev`&&r.reverse();let n=r.indexOf(e.currentTarget);r=l.loop.value?E(r,n+1):r.slice(n+1)}a(()=>T(r))}}return(t,n)=>(o(),r(e(b),null,{default:u(()=>[p(e(c),{tabindex:g.value?0:-1,"data-orientation":e(l).orientation.value,"data-active":t.active?``:void 0,"data-disabled":t.focusable?void 0:``,as:t.as,"as-child":t.asChild,onMousedown:n[0]||=n=>{t.focusable?e(l).onItemFocus(h.value):n.preventDefault()},onFocus:n[1]||=t=>e(l).onItemFocus(h.value),onKeydown:x},{default:u(()=>[m(t.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`data-active`,`data-disabled`,`as`,`as-child`])]),_:3}))}});export{k as n,A as t};
@@ -1 +1 @@
1
- import{$ as e,A as t,Gt as n,H as r,J as i,Lt as a,Q as o,X as s,Xt as c,Yt as l,Z as u,et as d,gt as f,it as p,k as m,kt as h,mt as ee,n as g,nt as _,q as v,qt as y,rt as b,vt as x}from"./button-Csj7G8uP.js";import{n as S,t as te}from"./ConcurrencyControl-B4mp9THM.js";import{t as C}from"./chevron-right-FH7bCAPL.js";import{t as ne}from"./pencil-C2mVN-qO.js";import{t as re}from"./plus-CtQvHS_r.js";import{t as w}from"./trash-2-BL7xrIYJ.js";import{a as T,n as ie,o as ae,r as oe,t as se}from"./dialog-DSOZukxC.js";import{t as E}from"./Label-BhSGa_Tn.js";import{t as ce}from"./Switch-BG35vWEq.js";import{_ as le,a as D,c as ue,d as de,g as O,h as fe,l as pe,m as me,o as he,p as ge,s as _e,u as ve,v as ye}from"./index-C-o8k1O4.js";import{t as be}from"./Input-BpmvwfP9.js";import{a as xe,i as k,n as A,o as Se,r as j,t as Ce}from"./TableHeader-_3-h6u2u.js";import{t as we}from"./useProviderGroups-Cgf0xLYZ.js";import{n as Te,r as M,t as N}from"./transform-domain-Dr6XoDiD.js";var P=Array.from({length:5},(e,t)=>t+1);function Ee(){return{name:``,week:[...P],start_hour:0,end_hour:24,targets:[{backend_model:``,provider_id:``}],concurrency_mode:`auto`,max_concurrency:M.max_concurrency,queue_timeout_ms:M.queue_timeout_ms,max_queue_size:M.max_queue_size}}function De(){return{injectHeaders:``,dropFields:``,requestDefaults:``}}function F(e){try{return JSON.parse(e)}catch{return[]}}function Oe(e,t){let n=F(e).sort((e,t)=>e-t);return n.length===7?t(`schedules.everyDay`):n.length===5&&n[0]===1&&n[4]===5?t(`schedules.weekdays`):n.length===2&&n[0]===0&&n[1]===6?t(`schedules.weekend`):null}function ke(e,t){try{return(JSON.parse(e).targets??[]).map(e=>({provider:t.find(t=>t.id===e.provider_id)?.name??e.provider_id,model:e.backend_model??``}))}catch{return[]}}function Ae(e){return`${e}`.padStart(2,`0`)+`:00`}function je(e,t){let n=[],r=[{backend_model:``,provider_id:``}];try{let t=JSON.parse(e.mapping_rule);t.targets?.length&&(r=t.targets)}catch{n.push(t(`schedules.parseRuleFailed`))}let i=[...P];try{i=JSON.parse(e.week)}catch{n.push(t(`schedules.parseWeekFailed`))}let a=`auto`,o=M.max_concurrency,s=M.queue_timeout_ms,c=M.max_queue_size;if(e.concurrency_rule)try{let t=JSON.parse(e.concurrency_rule);a=t.mode||`auto`,t.max_concurrency&&(o=t.max_concurrency),t.queue_timeout_ms&&(s=t.queue_timeout_ms),t.max_queue_size&&(c=t.max_queue_size)}catch{n.push(t(`schedules.parseConcurrencyFailed`))}let l=``,u=``,d=``;if(e.transform_rule)try{let t=JSON.parse(e.transform_rule);u=(t.drop_fields||[]).join(`, `),d=t.request_defaults?JSON.stringify(t.request_defaults):``,l=t.inject_headers?JSON.stringify(t.inject_headers):``}catch{n.push(t(`schedules.parseTransformFailed`))}return{data:{form:{name:e.name,week:i,start_hour:e.start_hour,end_hour:e.end_hour,targets:r,concurrency_mode:a,max_concurrency:o,queue_timeout_ms:s,max_queue_size:c},transform:{injectHeaders:l,dropFields:u,requestDefaults:d}},warnings:n}}function Me(e,t,n){let{form:r}=e,i=JSON.stringify({targets:r.targets}),a=r.concurrency_mode===`none`?null:JSON.stringify({mode:r.concurrency_mode,max_concurrency:r.max_concurrency,queue_timeout_ms:r.queue_timeout_ms,max_queue_size:r.max_queue_size});return{mapping_group_id:t,name:r.name,week:JSON.stringify(r.week),start_hour:r.start_hour,end_hour:r.end_hour,mapping_rule:i,concurrency_rule:a,transform_rule:n}}function Ne(e,t){let n={};e.name.trim()||(n.name=t(`schedules.form.nameRequired`)),e.week.length===0&&(n.week=t(`schedules.form.weekRequired`)),e.start_hour>=e.end_hour&&(n.time=t(`schedules.form.timeInvalid`));for(let r of e.targets)if(!r.provider_id||!r.backend_model){n.targets=t(`schedules.form.targetRequired`);break}return n}var I={injectHeadersJsonError:`providers.transform.injectHeadersJsonError`,requestDefaultsJsonError:`providers.transform.requestDefaultsJsonError`};function Pe(e){let{rule:t,errorKey:n}=N({injectHeaders:e.injectHeaders,dropFields:e.dropFields,requestDefaults:e.requestDefaults});return{rule:t,errorKey:n?I[n]??n:null}}var L={class:`flex flex-col`},R={class:`w-7 shrink-0 text-[11px] font-medium text-muted-foreground text-right select-none`},z={class:`absolute inset-0 grid`,style:{gridTemplateColumns:`repeat(24, 1fr)`}},B={key:0,class:`truncate`},V={key:1,class:`hidden group-hover:block absolute bottom-full left-1/2 -translate-x-1/2 mb-1.5 bg-popover text-popover-foreground border rounded-md shadow-lg px-2.5 py-1.5 z-30 whitespace-nowrap text-[11px]`},H={class:`font-semibold whitespace-nowrap`},U={class:`font-mono text-[11px] text-muted-foreground whitespace-nowrap`},W={class:`flex items-center gap-2 mt-0.5`},G={class:`flex-1 grid`,style:{gridTemplateColumns:`repeat(24, 1fr)`}},K=24,q=5,J=3,Y=100,X=7,Fe=10,Ie=p({__name:`WeekTimeline`,props:{rules:{}},setup(t){let a=t,{t:o,te:p}=r(),m=X-1,h=[`mon`,`tue`,`wed`,`thu`,`fri`,`sat`,`sun`],ee=[...P,6,0],g=[`oklch(0.68 0.13 175 / 70%)`,`oklch(0.68 0.13 175 / 50%)`,`oklch(0.68 0.13 175 / 35%)`,`oklch(0.68 0.13 175 / 25%)`],_=Array.from({length:X},(e,t)=>t),v=Array.from({length:Math.ceil(K/J)},(e,t)=>t*J),b=Array.from({length:K},(e,t)=>t),S=s(()=>{let e=[[],[],[],[],[],[],[]];for(let t of a.rules)for(let n of t.days)n>=0&&n<=m&&e[ee.indexOf(n)].push(t);return e});function te(e){let t=`schedules.weekDays.${h[e]}`;return p(t)?o(t):{mon:`周一`,tue:`周二`,wed:`周三`,thu:`周四`,fri:`周五`,sat:`周六`,sun:`周日`}[h[e]]??``}function C(e){return S.value[e].length>0}function ne(e){let t=e.startHour/K*Y,n=(e.endHour-e.startHour)/K*Y;return{left:`${t}%`,width:`${n}%`}}function re(e){return g[a.rules.indexOf(e)%g.length]}function w(e){return e.endHour-e.startHour<q}function T(e){return e<Fe?`0${e}:00`:`${e}:00`}return(t,r)=>(f(),d(`div`,L,[(f(!0),d(i,null,x(n(_),t=>(f(),d(`div`,{key:t,class:y([`flex items-center gap-2 h-6`,{"opacity-35":!C(t)}])},[u(`div`,R,c(te(t)),1),u(`div`,{class:y([`flex-1 relative h-full rounded-sm overflow-visible`,C(t)?`bg-black/[0.06] dark:bg-white/[0.07]`:`bg-black/[0.03] dark:bg-white/[0.03]`])},[u(`div`,z,[(f(!0),d(i,null,x(n(b),e=>(f(),d(`div`,{key:e,class:`border-r border-border/30 dark:border-white/10 last:border-r-0`}))),128))]),(f(!0),d(i,null,x(S.value[t],n=>(f(),d(`div`,{key:n.name+t,class:y([`absolute top-0.5 bottom-0.5 rounded-sm flex items-center px-1 text-[10px] font-semibold overflow-hidden whitespace-nowrap cursor-default z-10 transition-[filter] duration-100 hover:z-20 hover:brightness-[1.15] group`,[n.enabled?``:`bg-transparent !border-dashed border-[1.5px] border-muted-foreground/50 text-muted-foreground/60`]]),style:l({...ne(n),...n.enabled?{background:re(n),color:`oklch(0.145 0 0)`}:{}})},[w(n)?e(``,!0):(f(),d(`span`,B,c(n.name),1)),w(n)?(f(),d(`div`,V,[u(`div`,H,c(n.name),1),u(`div`,U,c(T(n.startHour))+` - `+c(T(n.endHour)),1)])):e(``,!0)],6))),128))],2)],2))),128)),u(`div`,W,[r[0]||=u(`div`,{class:`w-7 shrink-0`},null,-1),u(`div`,G,[(f(!0),d(i,null,x(n(v),e=>(f(),d(`div`,{key:e,class:`font-mono text-[10px] text-muted-foreground text-left pl-0.5 leading-4`,style:l({gridColumn:`${e+1} / span 3`})},c(T(e)),5))),128))])])]))}}),Le={class:`page space-y-3`},Re={class:`flex items-center justify-between`},ze={class:`flex flex-col gap-0.5`},Be={class:`text-base font-semibold text-foreground`},Ve={class:`text-[11px] font-medium text-muted-foreground/60`},He={key:0,class:`flex items-center justify-center py-16 text-muted-foreground text-sm`},Ue={class:`flex bg-card border border-border rounded-lg overflow-hidden`},We={class:`flex-1 px-3.5 py-2 border-r border-border`},Ge={class:`text-[10px] font-semibold text-muted-foreground/70 uppercase tracking-wider`},Ke={class:`text-[13px] font-mono font-semibold text-foreground`},qe={class:`flex-1 px-3.5 py-2 border-r border-border`},Je={class:`text-[10px] font-semibold text-muted-foreground/70 uppercase tracking-wider`},Ye={class:`text-[13px] font-mono font-semibold text-success`},Xe={class:`flex-1 px-3.5 py-2 border-r border-border`},Ze={class:`text-[10px] font-semibold text-muted-foreground/70 uppercase tracking-wider`},Qe={class:`text-[13px] font-mono font-semibold text-warning`},$e={class:`flex-1 px-3.5 py-2`},et={class:`text-[10px] font-semibold text-muted-foreground/70 uppercase tracking-wider`},tt={class:`text-[13px] font-mono font-semibold text-foreground`},nt={class:`bg-card border border-border rounded-lg overflow-hidden`},rt=[`onClick`],it={class:`font-mono text-[13px] font-semibold text-foreground shrink-0`},at={key:0,class:`font-mono text-[10px] px-[7px] py-px rounded-full bg-primary/15 text-primary`},ot={key:1,class:`font-mono text-[10px] px-[7px] py-px rounded-full bg-foreground/5 text-muted-foreground`},st={class:`flex-1 flex flex-wrap gap-1 min-w-0`},ct={key:0,class:`text-[10px] text-muted-foreground/50 self-center`},lt={class:`px-4 py-3 border-t border-border`},ut={class:`text-[11px] font-semibold text-muted-foreground mb-2`},dt={class:`pl-11`},ft={key:0,class:`text-[11px] font-medium text-muted-foreground`},pt={key:1,class:`flex flex-wrap gap-1`},mt={class:`flex flex-wrap gap-1`},ht={class:`text-muted-foreground/60 font-mono text-[10px]`},gt={class:`text-muted-foreground`},_t={class:`flex items-center justify-end gap-1`},vt={key:0,class:`py-12 text-center text-xs text-muted-foreground`},yt={key:0,class:`bg-destructive/10 border border-destructive/30 rounded-md px-3 py-2 text-sm text-destructive`},bt={class:`grid grid-cols-2 gap-3`},xt={key:0,class:`text-xs text-destructive mt-0.5`},St={class:`flex flex-wrap gap-1.5`},Ct={key:0,class:`text-xs text-destructive mt-0.5`},wt={class:`flex items-center gap-2 mb-2`},Tt={class:`flex gap-1.5`},Et={class:`grid grid-cols-2 gap-3`},Dt={key:0,class:`text-xs text-destructive mt-0.5`},Ot={key:0,class:`text-xs text-destructive mt-0.5`},kt={class:`grid grid-cols-2 gap-4`},At={class:`border rounded-md p-3 space-y-3`},jt={class:`text-xs font-medium text-muted-foreground`},Mt={class:`border rounded-md p-3 space-y-3`},Nt={class:`text-xs font-medium text-muted-foreground`},Z=p({__name:`Schedules`,setup(l){let{t:p}=r(),M=s(()=>[p(`schedules.weekDays.sun`),p(`schedules.weekDays.mon`),p(`schedules.weekDays.tue`),p(`schedules.weekDays.wed`),p(`schedules.weekDays.thu`),p(`schedules.weekDays.fri`),p(`schedules.weekDays.sat`)]),N=a(!1),P=a([]),I=a([]),L=a([]),R=a(null),z=a(!1),B=a(null),V=a(``),H=a(null),U=a(Ee()),W=a({}),G=a(``),K=a(De()),q=s({get:()=>({mode:U.value.concurrency_mode,max_concurrency:U.value.max_concurrency,queue_timeout_ms:U.value.queue_timeout_ms,max_queue_size:U.value.max_queue_size}),set:e=>{U.value.concurrency_mode=e.mode,U.value.max_concurrency=e.max_concurrency,U.value.queue_timeout_ms=e.queue_timeout_ms,U.value.max_queue_size=e.max_queue_size}}),J=s(()=>{let e={};for(let t of L.value)e[t.mapping_group_id]||(e[t.mapping_group_id]=[]),e[t.mapping_group_id].push(t);return e}),Y=s(()=>L.value.filter(e=>e.enabled).length),X=s(()=>L.value.filter(e=>!e.enabled).length),Fe=s(()=>{let e=new Set;for(let t of L.value)t.enabled&&F(t.week).forEach(t=>e.add(t));return e.size}),Z=s(()=>({clientModel:P.value.find(e=>e.id===V.value)?.client_model??``,targets:U.value.targets,existing:!1,tag:`cust`,active:!0})),Pt=s(()=>we(I.value,{includeStreamTimeout:!1}));function Ft(e){return Oe(e,p)}function It(e){return ke(e,I.value)}function Lt(e){return Ae(e)}function Rt(e){let t=M.value;return F(e).map(e=>t[e]??`${e}`)}function zt(e){return(J.value[e]??[]).map(e=>({name:e.name,days:F(e.week),startHour:e.start_hour,endHour:e.end_hour,enabled:!!e.enabled}))}function Bt(e){let t=J.value[e]??[];return t.length>0&&t.every(e=>e.enabled)}function Vt(e){return(J.value[e]?.length??0)>0}function Ht(e){U.value.targets=e}function Q(e,t){U.value.start_hour=e,U.value.end_hour=t,delete W.value.time}function Ut(e){R.value=R.value===e?null:e}function Wt(e){let t=U.value.week.indexOf(e);t>=0?U.value.week.splice(t,1):U.value.week.push(e),delete W.value.week}async function Gt(){try{P.value=await m.getMappingGroups()}catch(e){console.error(`schedules.loadGroups:`,e),D.error(t(e,p(`schedules.loadGroupsFailed`)))}}async function Kt(){try{I.value=await m.getProviders()}catch(e){console.error(`schedules.loadProviders:`,e),D.error(t(e,p(`schedules.loadProvidersFailed`)))}}async function $(){try{L.value=await m.getSchedules()}catch(e){console.error(`schedules.loadAll:`,e),D.error(t(e,p(`schedules.loadSchedulesFailed`)))}}function qt(e){B.value=null,V.value=e,U.value=Ee(),K.value=De(),W.value={},G.value=``,z.value=!0}function Jt(e){B.value=e.id,V.value=e.mapping_group_id,W.value={},G.value=``;let{data:t,warnings:n}=je(e,p);for(let e of n)D.error(e);U.value=t.form,K.value=t.transform,z.value=!0}async function Yt(){G.value=``;let e=Ne(U.value,p);if(W.value=e,Object.keys(e).length>0)return;let{rule:n,errorKey:r}=Pe(K.value);if(r){D.error(p(r));return}try{let e=Me({form:U.value,transform:K.value},V.value,n);B.value?await m.updateSchedule(B.value,e):await m.createSchedule(e),z.value=!1,await $()}catch(e){G.value=t(e,p(`schedules.saveFailed`))}}async function Xt(e){try{await m.toggleSchedule(e.id),await $()}catch(e){console.error(`schedules.toggle:`,e),D.error(t(e,p(`schedules.toggleFailed`)))}}async function Zt(){let e=H.value;if(e){H.value=null;try{await m.deleteSchedule(e.id),await $()}catch(e){console.error(`schedules.delete:`,e),D.error(t(e,p(`schedules.deleteFailed`)))}}}return ee(async()=>{N.value=!0,await Promise.allSettled([Gt(),Kt(),$()]),N.value=!1}),(t,r)=>(f(),d(`div`,Le,[u(`div`,Re,[u(`div`,ze,[u(`h2`,Be,c(n(p)(`schedules.title`)),1),u(`p`,Ve,c(n(p)(`schedules.description`)),1)])]),N.value?(f(),d(`div`,He,c(n(p)(`common.loading`)),1)):e(``,!0),N.value?e(``,!0):(f(),d(i,{key:1},[u(`div`,Ue,[u(`div`,We,[u(`div`,Ge,c(n(p)(`schedules.stats.groupCount`)),1),u(`div`,Ke,c(P.value.length),1)]),u(`div`,qe,[u(`div`,Je,c(n(p)(`schedules.stats.activeRules`)),1),u(`div`,Ye,c(Y.value),1)]),u(`div`,Xe,[u(`div`,Ze,c(n(p)(`schedules.stats.disabledRules`)),1),u(`div`,Qe,c(X.value),1)]),u(`div`,$e,[u(`div`,et,c(n(p)(`schedules.stats.coveredDays`)),1),u(`div`,tt,c(Fe.value)+`/7 `,1)])]),u(`div`,nt,[(f(!0),d(i,null,x(P.value,(t,r)=>(f(),d(`div`,{key:t.id,class:y({"border-t border-border":r>0})},[u(`div`,{class:y([`flex items-center gap-2.5 h-10 px-4 cursor-pointer transition-colors hover:bg-muted/40`,{"bg-muted/40":R.value===t.id}]),onClick:e=>Ut(t.id)},[b(n(C),{class:y([`size-3.5 text-muted-foreground/40 shrink-0 transition-transform`,{"rotate-90":R.value===t.id}])},null,8,[`class`]),u(`span`,it,c(t.client_model),1),J.value[t.id]?.length?(f(),d(`span`,at,c(n(p)(`schedules.ruleCount`,{count:J.value[t.id].length})),1)):(f(),d(`span`,ot,c(n(p)(`schedules.noRules`)),1)),u(`div`,st,[(f(!0),d(i,null,x((J.value[t.id]??[]).slice(0,3),e=>(f(),d(`span`,{key:e.id,class:`text-[11px] font-medium px-1.5 py-px rounded bg-foreground/5 text-muted-foreground`},c(e.name),1))),128)),(J.value[t.id]?.length??0)>3?(f(),d(`span`,ct,`+`+c(J.value[t.id].length-3),1)):e(``,!0)]),u(`span`,{class:y([`size-1.5 rounded-full shrink-0`,Bt(t.id)?`bg-success`:Vt(t.id)?`bg-warning`:``])},null,2)],10,rt),R.value===t.id?(f(),d(i,{key:0},[u(`div`,lt,[u(`div`,ut,c(n(p)(`schedules.timeline.weekView`)),1),b(Ie,{rules:zt(t.id)},null,8,[`rules`])]),u(`div`,dt,[b(n(Se),null,{default:h(()=>[b(n(Ce),null,{default:h(()=>[b(n(j),{class:`bg-muted/30 dark:bg-muted/50`},{default:h(()=>[b(n(A),{class:`text-muted-foreground/70 text-[11px] h-8 uppercase tracking-wider font-semibold`,style:{width:`16%`}},{default:h(()=>[_(c(n(p)(`schedules.tableHeaders.name`)),1)]),_:1}),b(n(A),{class:`text-muted-foreground/70 text-[11px] h-8 uppercase tracking-wider font-semibold`,style:{width:`14%`}},{default:h(()=>[_(c(n(p)(`schedules.tableHeaders.week`)),1)]),_:1}),b(n(A),{class:`text-muted-foreground/70 text-[11px] h-8 uppercase tracking-wider font-semibold`,style:{width:`14%`}},{default:h(()=>[_(c(n(p)(`schedules.tableHeaders.timeRange`)),1)]),_:1}),b(n(A),{class:`text-muted-foreground/70 text-[11px] h-8 uppercase tracking-wider font-semibold`,style:{width:`10%`}},{default:h(()=>[_(c(n(p)(`schedules.tableHeaders.status`)),1)]),_:1}),b(n(A),{class:`text-muted-foreground/70 text-[11px] h-8 uppercase tracking-wider font-semibold`,style:{width:`30%`}},{default:h(()=>[_(c(n(p)(`schedules.tableHeaders.targets`)),1)]),_:1}),b(n(A),{class:`text-right text-muted-foreground/70 text-[11px] h-8 uppercase tracking-wider font-semibold`,style:{width:`16%`}},{default:h(()=>[b(n(g),{size:`xs`,variant:`ghost`,class:`h-5 text-[11px]`,onClick:e=>qt(t.id)},{default:h(()=>[b(n(re),{class:`w-3 h-3 mr-1`}),_(c(n(p)(`schedules.createSchedule`)),1)]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1024)]),_:2},1024),b(n(xe),null,{default:h(()=>[(f(!0),d(i,null,x(J.value[t.id]??[],e=>(f(),o(n(j),{key:e.id,class:`hover:bg-muted/40`},{default:h(()=>[b(n(k),{class:`font-medium text-[13px] h-9`},{default:h(()=>[_(c(e.name),1)]),_:2},1024),b(n(k),{class:`h-9`},{default:h(()=>[Ft(e.week)?(f(),d(`span`,ft,c(Ft(e.week)),1)):(f(),d(`div`,pt,[(f(!0),d(i,null,x(Rt(e.week),e=>(f(),d(`span`,{key:e,class:`text-[11px] font-medium px-1.5 py-px rounded bg-foreground/5 text-muted-foreground`},c(e),1))),128))]))]),_:2},1024),b(n(k),{class:`font-mono text-[12px] font-medium h-9`},{default:h(()=>[_(c(Lt(e.start_hour))+`-`+c(Lt(e.end_hour)),1)]),_:2},1024),b(n(k),{class:`h-9`},{default:h(()=>[u(`span`,{class:y([`inline-flex items-center gap-1.5 text-[11px] font-semibold`,e.enabled?`text-success`:`text-muted-foreground/60`])},[u(`span`,{class:y([`size-1.5 rounded-full`,e.enabled?`bg-success`:`bg-muted-foreground/50`])},null,2),_(` `+c(e.enabled?n(p)(`schedules.enabled`):n(p)(`schedules.disabled`)),1)],2)]),_:2},1024),b(n(k),{class:`h-9`},{default:h(()=>[u(`div`,mt,[(f(!0),d(i,null,x(It(e.mapping_rule),(e,t)=>(f(),d(`span`,{key:t,class:`inline-flex items-center gap-0.5 px-1.5 py-px rounded text-[11px] font-medium bg-foreground/5`},[u(`span`,ht,c(e.provider)+`/`,1),u(`span`,gt,c(e.model),1)]))),128))])]),_:2},1024),b(n(k),{class:`h-9 text-right`},{default:h(()=>[u(`div`,_t,[b(n(ce),{"model-value":!!e.enabled,class:`scale-75`,onClick:v(t=>Xt(e),[`stop`])},null,8,[`model-value`,`onClick`]),b(n(g),{variant:`ghost`,size:`icon`,class:`size-6`,onClick:t=>Jt(e)},{default:h(()=>[b(n(ne),{class:`size-3.5`})]),_:1},8,[`onClick`]),b(n(g),{variant:`ghost`,size:`icon`,class:`size-6 hover:bg-destructive/10 text-destructive`,onClick:t=>H.value=e},{default:h(()=>[b(n(w),{class:`size-3.5`})]),_:1},8,[`onClick`])])]),_:2},1024)]),_:2},1024))),128)),J.value[t.id]?.length?e(``,!0):(f(),o(n(j),{key:0},{default:h(()=>[b(n(k),{colspan:`6`,class:`text-center text-muted-foreground py-6 text-xs`},{default:h(()=>[_(c(n(p)(`schedules.emptyRules`)),1)]),_:1})]),_:1}))]),_:2},1024)]),_:2},1024)])],64)):e(``,!0)],2))),128)),P.value.length===0?(f(),d(`p`,vt,c(n(p)(`schedules.noGroups`)),1)):e(``,!0)])],64)),b(n(ae),{open:z.value,"onUpdate:open":r[12]||=e=>z.value=e},{default:h(()=>[b(n(T),{class:`sm:max-w-4xl max-h-[85vh] overflow-y-auto`},{default:h(()=>[b(n(ie),null,{default:h(()=>[b(n(se),null,{default:h(()=>[_(c(B.value?n(p)(`schedules.editSchedule`):n(p)(`schedules.createSchedule`)),1)]),_:1})]),_:1}),u(`form`,{onSubmit:v(Yt,[`prevent`]),class:`space-y-4`},[G.value?(f(),d(`div`,yt,c(G.value),1)):e(``,!0),u(`div`,bt,[u(`div`,null,[b(n(E),{class:`text-xs text-muted-foreground`},{default:h(()=>[_(c(n(p)(`schedules.form.name`)),1)]),_:1}),b(n(be),{modelValue:U.value.name,"onUpdate:modelValue":r[0]||=e=>U.value.name=e,class:`mt-1`,placeholder:n(p)(`schedules.form.namePlaceholder`),onInput:r[1]||=e=>delete W.value.name},null,8,[`modelValue`,`placeholder`]),W.value.name?(f(),d(`p`,xt,c(W.value.name),1)):e(``,!0)]),u(`div`,null,[b(n(E),{class:`text-xs text-muted-foreground mb-1.5 block`},{default:h(()=>[_(c(n(p)(`schedules.form.week`)),1)]),_:1}),u(`div`,St,[(f(!0),d(i,null,x(M.value,(e,t)=>(f(),o(n(g),{key:t,type:`button`,variant:(U.value.week??[]).includes(t)?`default`:`outline`,size:`sm`,class:`h-7 text-xs`,onClick:e=>Wt(t)},{default:h(()=>[_(c(e),1)]),_:2},1032,[`variant`,`onClick`]))),128))]),W.value.week?(f(),d(`p`,Ct,c(W.value.week),1)):e(``,!0)])]),u(`div`,null,[u(`div`,wt,[b(n(E),{class:`text-xs text-muted-foreground`},{default:h(()=>[_(c(n(p)(`schedules.timePresets.label`)),1)]),_:1}),u(`div`,Tt,[b(n(g),{type:`button`,variant:`outline`,size:`sm`,class:`text-xs h-6`,onClick:r[2]||=e=>Q(9,12)},{default:h(()=>[_(c(n(p)(`schedules.timePresets.morning`)),1)]),_:1}),b(n(g),{type:`button`,variant:`outline`,size:`sm`,class:`text-xs h-6`,onClick:r[3]||=e=>Q(14,18)},{default:h(()=>[_(c(n(p)(`schedules.timePresets.afternoon`)),1)]),_:1}),b(n(g),{type:`button`,variant:`outline`,size:`sm`,class:`text-xs h-6`,onClick:r[4]||=e=>Q(19,21)},{default:h(()=>[_(c(n(p)(`schedules.timePresets.evening`)),1)]),_:1})])]),u(`div`,Et,[u(`div`,null,[b(n(E),{class:`text-xs text-muted-foreground`},{default:h(()=>[_(c(n(p)(`schedules.form.startTime`)),1)]),_:1}),b(n(ye),{modelValue:U.value.start_hour,"onUpdate:modelValue":[r[5]||=e=>U.value.start_hour=e,r[6]||=e=>{U.value.start_hour=Number(e),delete W.value.time}],class:`mt-1`},{default:h(()=>[b(n(fe),null,{default:h(()=>[b(n(me),{placeholder:n(p)(`schedules.form.selectHour`)},null,8,[`placeholder`])]),_:1}),b(n(le),null,{default:h(()=>[(f(),d(i,null,x(24,e=>b(n(O),{key:e-1,value:e-1},{default:h(()=>[_(c(String(e-1).padStart(2,`0`))+`:00`,1)]),_:2},1032,[`value`])),64))]),_:1})]),_:1},8,[`modelValue`])]),u(`div`,null,[b(n(E),{class:`text-xs text-muted-foreground`},{default:h(()=>[_(c(n(p)(`schedules.form.endTime`)),1)]),_:1}),b(n(ye),{modelValue:U.value.end_hour,"onUpdate:modelValue":[r[7]||=e=>U.value.end_hour=e,r[8]||=e=>{U.value.end_hour=Number(e),delete W.value.time}],class:`mt-1`},{default:h(()=>[b(n(fe),null,{default:h(()=>[b(n(me),{placeholder:n(p)(`schedules.form.selectHour`)},null,8,[`placeholder`])]),_:1}),b(n(le),null,{default:h(()=>[(f(),d(i,null,x(24,e=>b(n(O),{key:e,value:e},{default:h(()=>[_(c(String(e).padStart(2,`0`))+`:00`,1)]),_:2},1032,[`value`])),64))]),_:1})]),_:1},8,[`modelValue`])])]),W.value.time?(f(),d(`p`,Dt,c(W.value.time),1)):e(``,!0)]),u(`div`,null,[b(n(E),{class:`text-xs text-muted-foreground mb-1 block`},{default:h(()=>[_(c(n(p)(`schedules.form.targets`)),1)]),_:1}),b(S,{entry:Z.value,"provider-groups":Pt.value,expanded:!0,editable:!0,"onUpdate:targets":Ht},null,8,[`entry`,`provider-groups`]),W.value.targets?(f(),d(`p`,Ot,c(W.value.targets),1)):e(``,!0)]),u(`div`,kt,[u(`div`,At,[u(`div`,jt,c(n(p)(`schedules.form.concurrencyTitle`)),1),b(te,{modelValue:q.value,"onUpdate:modelValue":r[9]||=e=>q.value=e,compact:``},null,8,[`modelValue`])]),u(`div`,Mt,[u(`div`,Nt,c(n(p)(`providers.transform.title`)),1),b(Te,{modelValue:K.value,"onUpdate:modelValue":r[10]||=e=>K.value=e,compact:``},null,8,[`modelValue`])])]),b(n(oe),null,{default:h(()=>[b(n(g),{type:`button`,variant:`outline`,onClick:r[11]||=e=>z.value=!1},{default:h(()=>[_(c(n(p)(`common.cancel`)),1)]),_:1}),b(n(g),{type:`submit`},{default:h(()=>[_(c(n(p)(`common.save`)),1)]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]),b(n(ge),{open:!!H.value,"onUpdate:open":r[13]||=e=>{e||(H.value=null)}},{default:h(()=>[b(n(ve),null,{default:h(()=>[b(n(_e),null,{default:h(()=>[b(n(he),null,{default:h(()=>[_(c(n(p)(`schedules.confirmDeleteTitle`)),1)]),_:1}),b(n(pe),null,{default:h(()=>[_(c(n(p)(`schedules.confirmDeleteMessage`,{name:H.value?.name??``})),1)]),_:1})]),_:1}),b(n(ue),null,{default:h(()=>[b(n(de),null,{default:h(()=>[_(c(n(p)(`common.cancel`)),1)]),_:1}),b(n(g),{variant:`destructive`,onClick:Zt},{default:h(()=>[_(c(n(p)(`common.delete`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{Z as default};
1
+ import{$ as e,A as t,Gt as n,H as r,J as i,Lt as a,Q as o,X as s,Xt as c,Yt as l,Z as u,et as d,gt as f,it as p,k as m,kt as h,mt as ee,n as g,nt as _,q as v,qt as y,rt as b,vt as x}from"./button-DG6Kd0iG.js";import{n as S,t as te}from"./ConcurrencyControl-CDE26lBY.js";import{t as C}from"./chevron-right-DoewhoT5.js";import{t as ne}from"./pencil-xKWF4Xe-.js";import{t as re}from"./plus-CtcJ9YdO.js";import{t as w}from"./trash-2-DubWJ15J.js";import{a as T,n as ie,o as ae,r as oe,t as se}from"./dialog-CQOpjImC.js";import{t as E}from"./Label-DmDoAc6v.js";import{t as ce}from"./Switch-DKdPLHJ3.js";import{_ as le,a as D,c as ue,d as de,g as O,h as fe,l as pe,m as me,o as he,p as ge,s as _e,u as ve,v as ye}from"./index-D_n3EVk6.js";import{t as be}from"./Input-DVGxkxMa.js";import{a as xe,i as k,n as A,o as Se,r as j,t as Ce}from"./TableHeader-DZah46vy.js";import{t as we}from"./useProviderGroups-HZUTsWS6.js";import{n as Te,r as M,t as N}from"./transform-domain-8xyILR30.js";var P=Array.from({length:5},(e,t)=>t+1);function Ee(){return{name:``,week:[...P],start_hour:0,end_hour:24,targets:[{backend_model:``,provider_id:``}],concurrency_mode:`auto`,max_concurrency:M.max_concurrency,queue_timeout_ms:M.queue_timeout_ms,max_queue_size:M.max_queue_size}}function De(){return{injectHeaders:``,dropFields:``,requestDefaults:``}}function F(e){try{return JSON.parse(e)}catch{return[]}}function Oe(e,t){let n=F(e).sort((e,t)=>e-t);return n.length===7?t(`schedules.everyDay`):n.length===5&&n[0]===1&&n[4]===5?t(`schedules.weekdays`):n.length===2&&n[0]===0&&n[1]===6?t(`schedules.weekend`):null}function ke(e,t){try{return(JSON.parse(e).targets??[]).map(e=>({provider:t.find(t=>t.id===e.provider_id)?.name??e.provider_id,model:e.backend_model??``}))}catch{return[]}}function Ae(e){return`${e}`.padStart(2,`0`)+`:00`}function je(e,t){let n=[],r=[{backend_model:``,provider_id:``}];try{let t=JSON.parse(e.mapping_rule);t.targets?.length&&(r=t.targets)}catch{n.push(t(`schedules.parseRuleFailed`))}let i=[...P];try{i=JSON.parse(e.week)}catch{n.push(t(`schedules.parseWeekFailed`))}let a=`auto`,o=M.max_concurrency,s=M.queue_timeout_ms,c=M.max_queue_size;if(e.concurrency_rule)try{let t=JSON.parse(e.concurrency_rule);a=t.mode||`auto`,t.max_concurrency&&(o=t.max_concurrency),t.queue_timeout_ms&&(s=t.queue_timeout_ms),t.max_queue_size&&(c=t.max_queue_size)}catch{n.push(t(`schedules.parseConcurrencyFailed`))}let l=``,u=``,d=``;if(e.transform_rule)try{let t=JSON.parse(e.transform_rule);u=(t.drop_fields||[]).join(`, `),d=t.request_defaults?JSON.stringify(t.request_defaults):``,l=t.inject_headers?JSON.stringify(t.inject_headers):``}catch{n.push(t(`schedules.parseTransformFailed`))}return{data:{form:{name:e.name,week:i,start_hour:e.start_hour,end_hour:e.end_hour,targets:r,concurrency_mode:a,max_concurrency:o,queue_timeout_ms:s,max_queue_size:c},transform:{injectHeaders:l,dropFields:u,requestDefaults:d}},warnings:n}}function Me(e,t,n){let{form:r}=e,i=JSON.stringify({targets:r.targets}),a=r.concurrency_mode===`none`?null:JSON.stringify({mode:r.concurrency_mode,max_concurrency:r.max_concurrency,queue_timeout_ms:r.queue_timeout_ms,max_queue_size:r.max_queue_size});return{mapping_group_id:t,name:r.name,week:JSON.stringify(r.week),start_hour:r.start_hour,end_hour:r.end_hour,mapping_rule:i,concurrency_rule:a,transform_rule:n}}function Ne(e,t){let n={};e.name.trim()||(n.name=t(`schedules.form.nameRequired`)),e.week.length===0&&(n.week=t(`schedules.form.weekRequired`)),e.start_hour>=e.end_hour&&(n.time=t(`schedules.form.timeInvalid`));for(let r of e.targets)if(!r.provider_id||!r.backend_model){n.targets=t(`schedules.form.targetRequired`);break}return n}var I={injectHeadersJsonError:`providers.transform.injectHeadersJsonError`,requestDefaultsJsonError:`providers.transform.requestDefaultsJsonError`};function Pe(e){let{rule:t,errorKey:n}=N({injectHeaders:e.injectHeaders,dropFields:e.dropFields,requestDefaults:e.requestDefaults});return{rule:t,errorKey:n?I[n]??n:null}}var L={class:`flex flex-col`},R={class:`w-7 shrink-0 text-[11px] font-medium text-muted-foreground text-right select-none`},z={class:`absolute inset-0 grid`,style:{gridTemplateColumns:`repeat(24, 1fr)`}},B={key:0,class:`truncate`},V={key:1,class:`hidden group-hover:block absolute bottom-full left-1/2 -translate-x-1/2 mb-1.5 bg-popover text-popover-foreground border rounded-md shadow-lg px-2.5 py-1.5 z-30 whitespace-nowrap text-[11px]`},H={class:`font-semibold whitespace-nowrap`},U={class:`font-mono text-[11px] text-muted-foreground whitespace-nowrap`},W={class:`flex items-center gap-2 mt-0.5`},G={class:`flex-1 grid`,style:{gridTemplateColumns:`repeat(24, 1fr)`}},K=24,q=5,J=3,Y=100,X=7,Fe=10,Ie=p({__name:`WeekTimeline`,props:{rules:{}},setup(t){let a=t,{t:o,te:p}=r(),m=X-1,h=[`mon`,`tue`,`wed`,`thu`,`fri`,`sat`,`sun`],ee=[...P,6,0],g=[`oklch(0.68 0.13 175 / 70%)`,`oklch(0.68 0.13 175 / 50%)`,`oklch(0.68 0.13 175 / 35%)`,`oklch(0.68 0.13 175 / 25%)`],_=Array.from({length:X},(e,t)=>t),v=Array.from({length:Math.ceil(K/J)},(e,t)=>t*J),b=Array.from({length:K},(e,t)=>t),S=s(()=>{let e=[[],[],[],[],[],[],[]];for(let t of a.rules)for(let n of t.days)n>=0&&n<=m&&e[ee.indexOf(n)].push(t);return e});function te(e){let t=`schedules.weekDays.${h[e]}`;return p(t)?o(t):{mon:`周一`,tue:`周二`,wed:`周三`,thu:`周四`,fri:`周五`,sat:`周六`,sun:`周日`}[h[e]]??``}function C(e){return S.value[e].length>0}function ne(e){let t=e.startHour/K*Y,n=(e.endHour-e.startHour)/K*Y;return{left:`${t}%`,width:`${n}%`}}function re(e){return g[a.rules.indexOf(e)%g.length]}function w(e){return e.endHour-e.startHour<q}function T(e){return e<Fe?`0${e}:00`:`${e}:00`}return(t,r)=>(f(),d(`div`,L,[(f(!0),d(i,null,x(n(_),t=>(f(),d(`div`,{key:t,class:y([`flex items-center gap-2 h-6`,{"opacity-35":!C(t)}])},[u(`div`,R,c(te(t)),1),u(`div`,{class:y([`flex-1 relative h-full rounded-sm overflow-visible`,C(t)?`bg-black/[0.06] dark:bg-white/[0.07]`:`bg-black/[0.03] dark:bg-white/[0.03]`])},[u(`div`,z,[(f(!0),d(i,null,x(n(b),e=>(f(),d(`div`,{key:e,class:`border-r border-border/30 dark:border-white/10 last:border-r-0`}))),128))]),(f(!0),d(i,null,x(S.value[t],n=>(f(),d(`div`,{key:n.name+t,class:y([`absolute top-0.5 bottom-0.5 rounded-sm flex items-center px-1 text-[10px] font-semibold overflow-hidden whitespace-nowrap cursor-default z-10 transition-[filter] duration-100 hover:z-20 hover:brightness-[1.15] group`,[n.enabled?``:`bg-transparent !border-dashed border-[1.5px] border-muted-foreground/50 text-muted-foreground/60`]]),style:l({...ne(n),...n.enabled?{background:re(n),color:`oklch(0.145 0 0)`}:{}})},[w(n)?e(``,!0):(f(),d(`span`,B,c(n.name),1)),w(n)?(f(),d(`div`,V,[u(`div`,H,c(n.name),1),u(`div`,U,c(T(n.startHour))+` - `+c(T(n.endHour)),1)])):e(``,!0)],6))),128))],2)],2))),128)),u(`div`,W,[r[0]||=u(`div`,{class:`w-7 shrink-0`},null,-1),u(`div`,G,[(f(!0),d(i,null,x(n(v),e=>(f(),d(`div`,{key:e,class:`font-mono text-[10px] text-muted-foreground text-left pl-0.5 leading-4`,style:l({gridColumn:`${e+1} / span 3`})},c(T(e)),5))),128))])])]))}}),Le={class:`page space-y-3`},Re={class:`flex items-center justify-between`},ze={class:`flex flex-col gap-0.5`},Be={class:`text-base font-semibold text-foreground`},Ve={class:`text-[11px] font-medium text-muted-foreground/60`},He={key:0,class:`flex items-center justify-center py-16 text-muted-foreground text-sm`},Ue={class:`flex bg-card border border-border rounded-lg overflow-hidden`},We={class:`flex-1 px-3.5 py-2 border-r border-border`},Ge={class:`text-[10px] font-semibold text-muted-foreground/70 uppercase tracking-wider`},Ke={class:`text-[13px] font-mono font-semibold text-foreground`},qe={class:`flex-1 px-3.5 py-2 border-r border-border`},Je={class:`text-[10px] font-semibold text-muted-foreground/70 uppercase tracking-wider`},Ye={class:`text-[13px] font-mono font-semibold text-success`},Xe={class:`flex-1 px-3.5 py-2 border-r border-border`},Ze={class:`text-[10px] font-semibold text-muted-foreground/70 uppercase tracking-wider`},Qe={class:`text-[13px] font-mono font-semibold text-warning`},$e={class:`flex-1 px-3.5 py-2`},et={class:`text-[10px] font-semibold text-muted-foreground/70 uppercase tracking-wider`},tt={class:`text-[13px] font-mono font-semibold text-foreground`},nt={class:`bg-card border border-border rounded-lg overflow-hidden`},rt=[`onClick`],it={class:`font-mono text-[13px] font-semibold text-foreground shrink-0`},at={key:0,class:`font-mono text-[10px] px-[7px] py-px rounded-full bg-primary/15 text-primary`},ot={key:1,class:`font-mono text-[10px] px-[7px] py-px rounded-full bg-foreground/5 text-muted-foreground`},st={class:`flex-1 flex flex-wrap gap-1 min-w-0`},ct={key:0,class:`text-[10px] text-muted-foreground/50 self-center`},lt={class:`px-4 py-3 border-t border-border`},ut={class:`text-[11px] font-semibold text-muted-foreground mb-2`},dt={class:`pl-11`},ft={key:0,class:`text-[11px] font-medium text-muted-foreground`},pt={key:1,class:`flex flex-wrap gap-1`},mt={class:`flex flex-wrap gap-1`},ht={class:`text-muted-foreground/60 font-mono text-[10px]`},gt={class:`text-muted-foreground`},_t={class:`flex items-center justify-end gap-1`},vt={key:0,class:`py-12 text-center text-xs text-muted-foreground`},yt={key:0,class:`bg-destructive/10 border border-destructive/30 rounded-md px-3 py-2 text-sm text-destructive`},bt={class:`grid grid-cols-2 gap-3`},xt={key:0,class:`text-xs text-destructive mt-0.5`},St={class:`flex flex-wrap gap-1.5`},Ct={key:0,class:`text-xs text-destructive mt-0.5`},wt={class:`flex items-center gap-2 mb-2`},Tt={class:`flex gap-1.5`},Et={class:`grid grid-cols-2 gap-3`},Dt={key:0,class:`text-xs text-destructive mt-0.5`},Ot={key:0,class:`text-xs text-destructive mt-0.5`},kt={class:`grid grid-cols-2 gap-4`},At={class:`border rounded-md p-3 space-y-3`},jt={class:`text-xs font-medium text-muted-foreground`},Mt={class:`border rounded-md p-3 space-y-3`},Nt={class:`text-xs font-medium text-muted-foreground`},Z=p({__name:`Schedules`,setup(l){let{t:p}=r(),M=s(()=>[p(`schedules.weekDays.sun`),p(`schedules.weekDays.mon`),p(`schedules.weekDays.tue`),p(`schedules.weekDays.wed`),p(`schedules.weekDays.thu`),p(`schedules.weekDays.fri`),p(`schedules.weekDays.sat`)]),N=a(!1),P=a([]),I=a([]),L=a([]),R=a(null),z=a(!1),B=a(null),V=a(``),H=a(null),U=a(Ee()),W=a({}),G=a(``),K=a(De()),q=s({get:()=>({mode:U.value.concurrency_mode,max_concurrency:U.value.max_concurrency,queue_timeout_ms:U.value.queue_timeout_ms,max_queue_size:U.value.max_queue_size}),set:e=>{U.value.concurrency_mode=e.mode,U.value.max_concurrency=e.max_concurrency,U.value.queue_timeout_ms=e.queue_timeout_ms,U.value.max_queue_size=e.max_queue_size}}),J=s(()=>{let e={};for(let t of L.value)e[t.mapping_group_id]||(e[t.mapping_group_id]=[]),e[t.mapping_group_id].push(t);return e}),Y=s(()=>L.value.filter(e=>e.enabled).length),X=s(()=>L.value.filter(e=>!e.enabled).length),Fe=s(()=>{let e=new Set;for(let t of L.value)t.enabled&&F(t.week).forEach(t=>e.add(t));return e.size}),Z=s(()=>({clientModel:P.value.find(e=>e.id===V.value)?.client_model??``,targets:U.value.targets,existing:!1,tag:`cust`,active:!0})),Pt=s(()=>we(I.value,{includeStreamTimeout:!1}));function Ft(e){return Oe(e,p)}function It(e){return ke(e,I.value)}function Lt(e){return Ae(e)}function Rt(e){let t=M.value;return F(e).map(e=>t[e]??`${e}`)}function zt(e){return(J.value[e]??[]).map(e=>({name:e.name,days:F(e.week),startHour:e.start_hour,endHour:e.end_hour,enabled:!!e.enabled}))}function Bt(e){let t=J.value[e]??[];return t.length>0&&t.every(e=>e.enabled)}function Vt(e){return(J.value[e]?.length??0)>0}function Ht(e){U.value.targets=e}function Q(e,t){U.value.start_hour=e,U.value.end_hour=t,delete W.value.time}function Ut(e){R.value=R.value===e?null:e}function Wt(e){let t=U.value.week.indexOf(e);t>=0?U.value.week.splice(t,1):U.value.week.push(e),delete W.value.week}async function Gt(){try{P.value=await m.getMappingGroups()}catch(e){console.error(`schedules.loadGroups:`,e),D.error(t(e,p(`schedules.loadGroupsFailed`)))}}async function Kt(){try{I.value=await m.getProviders()}catch(e){console.error(`schedules.loadProviders:`,e),D.error(t(e,p(`schedules.loadProvidersFailed`)))}}async function $(){try{L.value=await m.getSchedules()}catch(e){console.error(`schedules.loadAll:`,e),D.error(t(e,p(`schedules.loadSchedulesFailed`)))}}function qt(e){B.value=null,V.value=e,U.value=Ee(),K.value=De(),W.value={},G.value=``,z.value=!0}function Jt(e){B.value=e.id,V.value=e.mapping_group_id,W.value={},G.value=``;let{data:t,warnings:n}=je(e,p);for(let e of n)D.error(e);U.value=t.form,K.value=t.transform,z.value=!0}async function Yt(){G.value=``;let e=Ne(U.value,p);if(W.value=e,Object.keys(e).length>0)return;let{rule:n,errorKey:r}=Pe(K.value);if(r){D.error(p(r));return}try{let e=Me({form:U.value,transform:K.value},V.value,n);B.value?await m.updateSchedule(B.value,e):await m.createSchedule(e),z.value=!1,await $()}catch(e){G.value=t(e,p(`schedules.saveFailed`))}}async function Xt(e){try{await m.toggleSchedule(e.id),await $()}catch(e){console.error(`schedules.toggle:`,e),D.error(t(e,p(`schedules.toggleFailed`)))}}async function Zt(){let e=H.value;if(e){H.value=null;try{await m.deleteSchedule(e.id),await $()}catch(e){console.error(`schedules.delete:`,e),D.error(t(e,p(`schedules.deleteFailed`)))}}}return ee(async()=>{N.value=!0,await Promise.allSettled([Gt(),Kt(),$()]),N.value=!1}),(t,r)=>(f(),d(`div`,Le,[u(`div`,Re,[u(`div`,ze,[u(`h2`,Be,c(n(p)(`schedules.title`)),1),u(`p`,Ve,c(n(p)(`schedules.description`)),1)])]),N.value?(f(),d(`div`,He,c(n(p)(`common.loading`)),1)):e(``,!0),N.value?e(``,!0):(f(),d(i,{key:1},[u(`div`,Ue,[u(`div`,We,[u(`div`,Ge,c(n(p)(`schedules.stats.groupCount`)),1),u(`div`,Ke,c(P.value.length),1)]),u(`div`,qe,[u(`div`,Je,c(n(p)(`schedules.stats.activeRules`)),1),u(`div`,Ye,c(Y.value),1)]),u(`div`,Xe,[u(`div`,Ze,c(n(p)(`schedules.stats.disabledRules`)),1),u(`div`,Qe,c(X.value),1)]),u(`div`,$e,[u(`div`,et,c(n(p)(`schedules.stats.coveredDays`)),1),u(`div`,tt,c(Fe.value)+`/7 `,1)])]),u(`div`,nt,[(f(!0),d(i,null,x(P.value,(t,r)=>(f(),d(`div`,{key:t.id,class:y({"border-t border-border":r>0})},[u(`div`,{class:y([`flex items-center gap-2.5 h-10 px-4 cursor-pointer transition-colors hover:bg-muted/40`,{"bg-muted/40":R.value===t.id}]),onClick:e=>Ut(t.id)},[b(n(C),{class:y([`size-3.5 text-muted-foreground/40 shrink-0 transition-transform`,{"rotate-90":R.value===t.id}])},null,8,[`class`]),u(`span`,it,c(t.client_model),1),J.value[t.id]?.length?(f(),d(`span`,at,c(n(p)(`schedules.ruleCount`,{count:J.value[t.id].length})),1)):(f(),d(`span`,ot,c(n(p)(`schedules.noRules`)),1)),u(`div`,st,[(f(!0),d(i,null,x((J.value[t.id]??[]).slice(0,3),e=>(f(),d(`span`,{key:e.id,class:`text-[11px] font-medium px-1.5 py-px rounded bg-foreground/5 text-muted-foreground`},c(e.name),1))),128)),(J.value[t.id]?.length??0)>3?(f(),d(`span`,ct,`+`+c(J.value[t.id].length-3),1)):e(``,!0)]),u(`span`,{class:y([`size-1.5 rounded-full shrink-0`,Bt(t.id)?`bg-success`:Vt(t.id)?`bg-warning`:``])},null,2)],10,rt),R.value===t.id?(f(),d(i,{key:0},[u(`div`,lt,[u(`div`,ut,c(n(p)(`schedules.timeline.weekView`)),1),b(Ie,{rules:zt(t.id)},null,8,[`rules`])]),u(`div`,dt,[b(n(Se),null,{default:h(()=>[b(n(Ce),null,{default:h(()=>[b(n(j),{class:`bg-muted/30 dark:bg-muted/50`},{default:h(()=>[b(n(A),{class:`text-muted-foreground/70 text-[11px] h-8 uppercase tracking-wider font-semibold`,style:{width:`16%`}},{default:h(()=>[_(c(n(p)(`schedules.tableHeaders.name`)),1)]),_:1}),b(n(A),{class:`text-muted-foreground/70 text-[11px] h-8 uppercase tracking-wider font-semibold`,style:{width:`14%`}},{default:h(()=>[_(c(n(p)(`schedules.tableHeaders.week`)),1)]),_:1}),b(n(A),{class:`text-muted-foreground/70 text-[11px] h-8 uppercase tracking-wider font-semibold`,style:{width:`14%`}},{default:h(()=>[_(c(n(p)(`schedules.tableHeaders.timeRange`)),1)]),_:1}),b(n(A),{class:`text-muted-foreground/70 text-[11px] h-8 uppercase tracking-wider font-semibold`,style:{width:`10%`}},{default:h(()=>[_(c(n(p)(`schedules.tableHeaders.status`)),1)]),_:1}),b(n(A),{class:`text-muted-foreground/70 text-[11px] h-8 uppercase tracking-wider font-semibold`,style:{width:`30%`}},{default:h(()=>[_(c(n(p)(`schedules.tableHeaders.targets`)),1)]),_:1}),b(n(A),{class:`text-right text-muted-foreground/70 text-[11px] h-8 uppercase tracking-wider font-semibold`,style:{width:`16%`}},{default:h(()=>[b(n(g),{size:`xs`,variant:`ghost`,class:`h-5 text-[11px]`,onClick:e=>qt(t.id)},{default:h(()=>[b(n(re),{class:`w-3 h-3 mr-1`}),_(c(n(p)(`schedules.createSchedule`)),1)]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1024)]),_:2},1024),b(n(xe),null,{default:h(()=>[(f(!0),d(i,null,x(J.value[t.id]??[],e=>(f(),o(n(j),{key:e.id,class:`hover:bg-muted/40`},{default:h(()=>[b(n(k),{class:`font-medium text-[13px] h-9`},{default:h(()=>[_(c(e.name),1)]),_:2},1024),b(n(k),{class:`h-9`},{default:h(()=>[Ft(e.week)?(f(),d(`span`,ft,c(Ft(e.week)),1)):(f(),d(`div`,pt,[(f(!0),d(i,null,x(Rt(e.week),e=>(f(),d(`span`,{key:e,class:`text-[11px] font-medium px-1.5 py-px rounded bg-foreground/5 text-muted-foreground`},c(e),1))),128))]))]),_:2},1024),b(n(k),{class:`font-mono text-[12px] font-medium h-9`},{default:h(()=>[_(c(Lt(e.start_hour))+`-`+c(Lt(e.end_hour)),1)]),_:2},1024),b(n(k),{class:`h-9`},{default:h(()=>[u(`span`,{class:y([`inline-flex items-center gap-1.5 text-[11px] font-semibold`,e.enabled?`text-success`:`text-muted-foreground/60`])},[u(`span`,{class:y([`size-1.5 rounded-full`,e.enabled?`bg-success`:`bg-muted-foreground/50`])},null,2),_(` `+c(e.enabled?n(p)(`schedules.enabled`):n(p)(`schedules.disabled`)),1)],2)]),_:2},1024),b(n(k),{class:`h-9`},{default:h(()=>[u(`div`,mt,[(f(!0),d(i,null,x(It(e.mapping_rule),(e,t)=>(f(),d(`span`,{key:t,class:`inline-flex items-center gap-0.5 px-1.5 py-px rounded text-[11px] font-medium bg-foreground/5`},[u(`span`,ht,c(e.provider)+`/`,1),u(`span`,gt,c(e.model),1)]))),128))])]),_:2},1024),b(n(k),{class:`h-9 text-right`},{default:h(()=>[u(`div`,_t,[b(n(ce),{"model-value":!!e.enabled,class:`scale-75`,onClick:v(t=>Xt(e),[`stop`])},null,8,[`model-value`,`onClick`]),b(n(g),{variant:`ghost`,size:`icon`,class:`size-6`,onClick:t=>Jt(e)},{default:h(()=>[b(n(ne),{class:`size-3.5`})]),_:1},8,[`onClick`]),b(n(g),{variant:`ghost`,size:`icon`,class:`size-6 hover:bg-destructive/10 text-destructive`,onClick:t=>H.value=e},{default:h(()=>[b(n(w),{class:`size-3.5`})]),_:1},8,[`onClick`])])]),_:2},1024)]),_:2},1024))),128)),J.value[t.id]?.length?e(``,!0):(f(),o(n(j),{key:0},{default:h(()=>[b(n(k),{colspan:`6`,class:`text-center text-muted-foreground py-6 text-xs`},{default:h(()=>[_(c(n(p)(`schedules.emptyRules`)),1)]),_:1})]),_:1}))]),_:2},1024)]),_:2},1024)])],64)):e(``,!0)],2))),128)),P.value.length===0?(f(),d(`p`,vt,c(n(p)(`schedules.noGroups`)),1)):e(``,!0)])],64)),b(n(ae),{open:z.value,"onUpdate:open":r[12]||=e=>z.value=e},{default:h(()=>[b(n(T),{class:`sm:max-w-4xl max-h-[85vh] overflow-y-auto`},{default:h(()=>[b(n(ie),null,{default:h(()=>[b(n(se),null,{default:h(()=>[_(c(B.value?n(p)(`schedules.editSchedule`):n(p)(`schedules.createSchedule`)),1)]),_:1})]),_:1}),u(`form`,{onSubmit:v(Yt,[`prevent`]),class:`space-y-4`},[G.value?(f(),d(`div`,yt,c(G.value),1)):e(``,!0),u(`div`,bt,[u(`div`,null,[b(n(E),{class:`text-xs text-muted-foreground`},{default:h(()=>[_(c(n(p)(`schedules.form.name`)),1)]),_:1}),b(n(be),{modelValue:U.value.name,"onUpdate:modelValue":r[0]||=e=>U.value.name=e,class:`mt-1`,placeholder:n(p)(`schedules.form.namePlaceholder`),onInput:r[1]||=e=>delete W.value.name},null,8,[`modelValue`,`placeholder`]),W.value.name?(f(),d(`p`,xt,c(W.value.name),1)):e(``,!0)]),u(`div`,null,[b(n(E),{class:`text-xs text-muted-foreground mb-1.5 block`},{default:h(()=>[_(c(n(p)(`schedules.form.week`)),1)]),_:1}),u(`div`,St,[(f(!0),d(i,null,x(M.value,(e,t)=>(f(),o(n(g),{key:t,type:`button`,variant:(U.value.week??[]).includes(t)?`default`:`outline`,size:`sm`,class:`h-7 text-xs`,onClick:e=>Wt(t)},{default:h(()=>[_(c(e),1)]),_:2},1032,[`variant`,`onClick`]))),128))]),W.value.week?(f(),d(`p`,Ct,c(W.value.week),1)):e(``,!0)])]),u(`div`,null,[u(`div`,wt,[b(n(E),{class:`text-xs text-muted-foreground`},{default:h(()=>[_(c(n(p)(`schedules.timePresets.label`)),1)]),_:1}),u(`div`,Tt,[b(n(g),{type:`button`,variant:`outline`,size:`sm`,class:`text-xs h-6`,onClick:r[2]||=e=>Q(9,12)},{default:h(()=>[_(c(n(p)(`schedules.timePresets.morning`)),1)]),_:1}),b(n(g),{type:`button`,variant:`outline`,size:`sm`,class:`text-xs h-6`,onClick:r[3]||=e=>Q(14,18)},{default:h(()=>[_(c(n(p)(`schedules.timePresets.afternoon`)),1)]),_:1}),b(n(g),{type:`button`,variant:`outline`,size:`sm`,class:`text-xs h-6`,onClick:r[4]||=e=>Q(19,21)},{default:h(()=>[_(c(n(p)(`schedules.timePresets.evening`)),1)]),_:1})])]),u(`div`,Et,[u(`div`,null,[b(n(E),{class:`text-xs text-muted-foreground`},{default:h(()=>[_(c(n(p)(`schedules.form.startTime`)),1)]),_:1}),b(n(ye),{modelValue:U.value.start_hour,"onUpdate:modelValue":[r[5]||=e=>U.value.start_hour=e,r[6]||=e=>{U.value.start_hour=Number(e),delete W.value.time}],class:`mt-1`},{default:h(()=>[b(n(fe),null,{default:h(()=>[b(n(me),{placeholder:n(p)(`schedules.form.selectHour`)},null,8,[`placeholder`])]),_:1}),b(n(le),null,{default:h(()=>[(f(),d(i,null,x(24,e=>b(n(O),{key:e-1,value:e-1},{default:h(()=>[_(c(String(e-1).padStart(2,`0`))+`:00`,1)]),_:2},1032,[`value`])),64))]),_:1})]),_:1},8,[`modelValue`])]),u(`div`,null,[b(n(E),{class:`text-xs text-muted-foreground`},{default:h(()=>[_(c(n(p)(`schedules.form.endTime`)),1)]),_:1}),b(n(ye),{modelValue:U.value.end_hour,"onUpdate:modelValue":[r[7]||=e=>U.value.end_hour=e,r[8]||=e=>{U.value.end_hour=Number(e),delete W.value.time}],class:`mt-1`},{default:h(()=>[b(n(fe),null,{default:h(()=>[b(n(me),{placeholder:n(p)(`schedules.form.selectHour`)},null,8,[`placeholder`])]),_:1}),b(n(le),null,{default:h(()=>[(f(),d(i,null,x(24,e=>b(n(O),{key:e,value:e},{default:h(()=>[_(c(String(e).padStart(2,`0`))+`:00`,1)]),_:2},1032,[`value`])),64))]),_:1})]),_:1},8,[`modelValue`])])]),W.value.time?(f(),d(`p`,Dt,c(W.value.time),1)):e(``,!0)]),u(`div`,null,[b(n(E),{class:`text-xs text-muted-foreground mb-1 block`},{default:h(()=>[_(c(n(p)(`schedules.form.targets`)),1)]),_:1}),b(S,{entry:Z.value,"provider-groups":Pt.value,expanded:!0,editable:!0,"onUpdate:targets":Ht},null,8,[`entry`,`provider-groups`]),W.value.targets?(f(),d(`p`,Ot,c(W.value.targets),1)):e(``,!0)]),u(`div`,kt,[u(`div`,At,[u(`div`,jt,c(n(p)(`schedules.form.concurrencyTitle`)),1),b(te,{modelValue:q.value,"onUpdate:modelValue":r[9]||=e=>q.value=e,compact:``},null,8,[`modelValue`])]),u(`div`,Mt,[u(`div`,Nt,c(n(p)(`providers.transform.title`)),1),b(Te,{modelValue:K.value,"onUpdate:modelValue":r[10]||=e=>K.value=e,compact:``},null,8,[`modelValue`])])]),b(n(oe),null,{default:h(()=>[b(n(g),{type:`button`,variant:`outline`,onClick:r[11]||=e=>z.value=!1},{default:h(()=>[_(c(n(p)(`common.cancel`)),1)]),_:1}),b(n(g),{type:`submit`},{default:h(()=>[_(c(n(p)(`common.save`)),1)]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]),b(n(ge),{open:!!H.value,"onUpdate:open":r[13]||=e=>{e||(H.value=null)}},{default:h(()=>[b(n(ve),null,{default:h(()=>[b(n(_e),null,{default:h(()=>[b(n(he),null,{default:h(()=>[_(c(n(p)(`schedules.confirmDeleteTitle`)),1)]),_:1}),b(n(pe),null,{default:h(()=>[_(c(n(p)(`schedules.confirmDeleteMessage`,{name:H.value?.name??``})),1)]),_:1})]),_:1}),b(n(ue),null,{default:h(()=>[b(n(de),null,{default:h(()=>[_(c(n(p)(`common.cancel`)),1)]),_:1}),b(n(g),{variant:`destructive`,onClick:Zt},{default:h(()=>[_(c(n(p)(`common.delete`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{Z as default};
@@ -1,4 +1,4 @@
1
- import{$ as e,A as t,Et as n,Gt as r,H as i,J as a,L as o,Lt as s,Nt as c,Q as l,X as u,Xt as d,Yt as f,Z as p,dt as m,et as h,ft as g,gt as _,i as v,it as y,k as ee,kt as b,m as x,mt as te,n as S,nt as C,o as w,qt as T,r as E,rt as D,vt as ne,x as O,yt as k}from"./button-Csj7G8uP.js";import{t as A}from"./Label-BhSGa_Tn.js";import{Q as re,Y as j,a as M,c as ie,d as ae,et as oe,f as se,l as ce,nt as le,o as ue,p as de,q as N,rt as fe,s as pe,u as me}from"./index-C-o8k1O4.js";import{t as P}from"./Card-OdDwacfm.js";import{t as F}from"./CardContent-B4x52Duv.js";import{n as I,t as L}from"./CardTitle-DtDJrCKi.js";import{t as R}from"./Input-BpmvwfP9.js";import{t as he}from"./useLogRetention-CRlHMqOD.js";var ge=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`}]]),_e=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`}]]),ve=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`}]]),z=100,[B,V]=j(`ProgressRoot`),H=e=>typeof e==`number`;function U(e,t){return N(e)||H(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:
1
+ import{$ as e,A as t,Et as n,Gt as r,H as i,J as a,L as o,Lt as s,Nt as c,Q as l,X as u,Xt as d,Yt as f,Z as p,dt as m,et as h,ft as g,gt as _,i as v,it as y,k as ee,kt as b,m as x,mt as te,n as S,nt as C,o as w,qt as T,r as E,rt as D,vt as ne,x as O,yt as k}from"./button-DG6Kd0iG.js";import{t as A}from"./Label-DmDoAc6v.js";import{Q as re,Y as j,a as M,c as ie,d as ae,et as oe,f as se,l as ce,nt as le,o as ue,p as de,q as N,rt as fe,s as pe,u as me}from"./index-D_n3EVk6.js";import{t as P}from"./Card-UQRcFVIJ.js";import{t as F}from"./CardContent-BAoEyF8W.js";import{n as I,t as L}from"./CardTitle-C17xy1UE.js";import{t as R}from"./Input-DVGxkxMa.js";import{t as he}from"./useLogRetention-CShJ13iZ.js";var ge=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`}]]),_e=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`}]]),ve=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`}]]),z=100,[B,V]=j(`ProgressRoot`),H=e=>typeof e==`number`;function U(e,t){return N(e)||H(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
2
  - a positive number
3
3
  - less than the value passed to \`max\` (or ${z} if no \`max\` prop is set)
4
4
  - \`null\` or \`undefined\` if the progress is indeterminate.
@@ -1 +1 @@
1
- import{$ as e,A as t,F as n,Gt as r,H as i,Lt as a,Q as o,Xt as s,Z as c,et as l,gt as u,it as d,k as f,kt as p,n as m,nt as h,q as g,rt as _,z as v}from"./button-Csj7G8uP.js";import{t as y}from"./Label-BhSGa_Tn.js";import{t as b}from"./AuthLayout-Dkh-09Aq.js";import{t as x}from"./Input-BpmvwfP9.js";var S={key:0,class:`text-destructive text-sm`},C=d({__name:`Setup`,setup(d){let{t:C}=i(),w=v(),T=a(``),E=a(``),D=a(``),O=a(!1);async function k(){if(!T.value||!E.value){D.value=C(`setup.pleaseInputPassword`);return}if(T.value!==E.value){D.value=C(`setup.passwordMismatch`);return}if(T.value.length<6){D.value=C(`setup.passwordTooShort`);return}D.value=``,O.value=!0;try{await f.initializeSetup(T.value),n(),w.push({name:`dashboard`})}catch(e){D.value=t(e,C(`setup.setupFailed`))}finally{O.value=!1}}return(t,n)=>(u(),o(b,{subtitle:r(C)(`setup.subtitle`)},{default:p(()=>[c(`form`,{onSubmit:g(k,[`prevent`]),class:`space-y-4`},[c(`div`,null,[_(r(y),{class:`block text-sm font-medium text-foreground mb-1`},{default:p(()=>[h(s(r(C)(`setup.password`)),1)]),_:1}),_(r(x),{modelValue:T.value,"onUpdate:modelValue":n[0]||=e=>T.value=e,type:`password`,placeholder:r(C)(`setup.passwordPlaceholder`),disabled:O.value},null,8,[`modelValue`,`placeholder`,`disabled`])]),c(`div`,null,[_(r(y),{class:`block text-sm font-medium text-foreground mb-1`},{default:p(()=>[h(s(r(C)(`setup.confirmPassword`)),1)]),_:1}),_(r(x),{modelValue:E.value,"onUpdate:modelValue":n[1]||=e=>E.value=e,type:`password`,placeholder:r(C)(`setup.confirmPasswordPlaceholder`),disabled:O.value},null,8,[`modelValue`,`placeholder`,`disabled`])]),D.value?(u(),l(`p`,S,s(D.value),1)):e(``,!0),_(r(m),{type:`submit`,class:`w-full`,disabled:O.value},{default:p(()=>[h(s(O.value?r(C)(`setup.settingUp`):r(C)(`setup.setupButton`)),1)]),_:1},8,[`disabled`])],32)]),_:1},8,[`subtitle`]))}});export{C as default};
1
+ import{$ as e,A as t,F as n,Gt as r,H as i,Lt as a,Q as o,Xt as s,Z as c,et as l,gt as u,it as d,k as f,kt as p,n as m,nt as h,q as g,rt as _,z as v}from"./button-DG6Kd0iG.js";import{t as y}from"./Label-DmDoAc6v.js";import{t as b}from"./AuthLayout-DJpHK4zg.js";import{t as x}from"./Input-DVGxkxMa.js";var S={key:0,class:`text-destructive text-sm`},C=d({__name:`Setup`,setup(d){let{t:C}=i(),w=v(),T=a(``),E=a(``),D=a(``),O=a(!1);async function k(){if(!T.value||!E.value){D.value=C(`setup.pleaseInputPassword`);return}if(T.value!==E.value){D.value=C(`setup.passwordMismatch`);return}if(T.value.length<6){D.value=C(`setup.passwordTooShort`);return}D.value=``,O.value=!0;try{await f.initializeSetup(T.value),n(),w.push({name:`dashboard`})}catch(e){D.value=t(e,C(`setup.setupFailed`))}finally{O.value=!1}}return(t,n)=>(u(),o(b,{subtitle:r(C)(`setup.subtitle`)},{default:p(()=>[c(`form`,{onSubmit:g(k,[`prevent`]),class:`space-y-4`},[c(`div`,null,[_(r(y),{class:`block text-sm font-medium text-foreground mb-1`},{default:p(()=>[h(s(r(C)(`setup.password`)),1)]),_:1}),_(r(x),{modelValue:T.value,"onUpdate:modelValue":n[0]||=e=>T.value=e,type:`password`,placeholder:r(C)(`setup.passwordPlaceholder`),disabled:O.value},null,8,[`modelValue`,`placeholder`,`disabled`])]),c(`div`,null,[_(r(y),{class:`block text-sm font-medium text-foreground mb-1`},{default:p(()=>[h(s(r(C)(`setup.confirmPassword`)),1)]),_:1}),_(r(x),{modelValue:E.value,"onUpdate:modelValue":n[1]||=e=>E.value=e,type:`password`,placeholder:r(C)(`setup.confirmPasswordPlaceholder`),disabled:O.value},null,8,[`modelValue`,`placeholder`,`disabled`])]),D.value?(u(),l(`p`,S,s(D.value),1)):e(``,!0),_(r(m),{type:`submit`,class:`w-full`,disabled:O.value},{default:p(()=>[h(s(O.value?r(C)(`setup.settingUp`):r(C)(`setup.setupButton`)),1)]),_:1},8,[`disabled`])],32)]),_:1},8,[`subtitle`]))}});export{C as default};
@@ -1 +1 @@
1
- import{Gt as e,et as t,gt as n,it as r,qt as i,r as a}from"./button-Csj7G8uP.js";var o=r({__name:`Skeleton`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(r){let o=r;return(r,s)=>(n(),t(`div`,{"data-slot":`skeleton`,class:i(e(a)(`bg-muted rounded-md animate-pulse`,o.class))},null,2))}});export{o as t};
1
+ import{Gt as e,et as t,gt as n,it as r,qt as i,r as a}from"./button-DG6Kd0iG.js";var o=r({__name:`Skeleton`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(r){let o=r;return(r,s)=>(n(),t(`div`,{"data-slot":`skeleton`,class:i(e(a)(`bg-muted rounded-md animate-pulse`,o.class))},null,2))}});export{o as t};