llm-simple-router 0.9.21 → 0.9.23

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 (41) hide show
  1. package/config/recommended-providers.json +1 -0
  2. package/dist/proxy/orchestration/orchestrator.js +10 -2
  3. package/frontend-dist/assets/{CardContent-DmBQARma.js → CardContent-Cn7OKkf4.js} +1 -1
  4. package/frontend-dist/assets/{CardTitle-DgwtSVqy.js → CardTitle-4FM9jzOA.js} +1 -1
  5. package/frontend-dist/assets/{Checkbox-DgWzyASL.js → Checkbox-peXPi_YE.js} +1 -1
  6. package/frontend-dist/assets/{CollapsibleContent-BjJrE5cf.js → CollapsibleContent-CgqAq4Jf.js} +1 -1
  7. package/frontend-dist/assets/{CollapsibleTrigger-C73cozLg.js → CollapsibleTrigger-DNaZoRW8.js} +1 -1
  8. package/frontend-dist/assets/{Dashboard-D47Lzd5i.js → Dashboard-Cm4JcnYb.js} +1 -1
  9. package/frontend-dist/assets/{Input-glS226Q6.js → Input-Br6PVSFy.js} +1 -1
  10. package/frontend-dist/assets/{Label-B2lstY9k.js → Label-GZl32pWd.js} +1 -1
  11. package/frontend-dist/assets/{Login-B5v_CIaw.js → Login-DoFRYUFk.js} +1 -1
  12. package/frontend-dist/assets/{Logs-CC6e8ty3.js → Logs-3m2BEWDo.js} +1 -1
  13. package/frontend-dist/assets/{MappingEntryEditor-auxWvl8S.js → MappingEntryEditor-Wpkde3VI.js} +1 -1
  14. package/frontend-dist/assets/ModelCard-od6KpofN.js +1 -0
  15. package/frontend-dist/assets/{ModelMappings-DtmMS2o6.js → ModelMappings-RLgKMlDj.js} +1 -1
  16. package/frontend-dist/assets/{Monitor-F6DD03LF.js → Monitor-DWQbOIYI.js} +1 -1
  17. package/frontend-dist/assets/{Providers-DZkl5ryZ.js → Providers-OKgt7MLq.js} +1 -1
  18. package/frontend-dist/assets/{ProxyEnhancement-C1uXuPZm.js → ProxyEnhancement-BG3lHGzz.js} +1 -1
  19. package/frontend-dist/assets/QuickSetup-Cy7xPzpP.js +1 -0
  20. package/frontend-dist/assets/{RetryRules-plJdXlmH.js → RetryRules-D6zhJ-YT.js} +1 -1
  21. package/frontend-dist/assets/{RouterKeys-CLh6XISQ.js → RouterKeys-V4BYi2Xr.js} +1 -1
  22. package/frontend-dist/assets/{RovingFocusItem-BnqO1JTY.js → RovingFocusItem-DcZ3wJIC.js} +1 -1
  23. package/frontend-dist/assets/{Schedules-btnuRbYc.js → Schedules-romgDz2G.js} +1 -1
  24. package/frontend-dist/assets/{Settings-CbQaUkQ5.js → Settings-C4kcd3m9.js} +1 -1
  25. package/frontend-dist/assets/{Setup-8yOUQ97d.js → Setup-Df7MMOO9.js} +1 -1
  26. package/frontend-dist/assets/{Switch-BwPbL6O4.js → Switch-CzzBLx2L.js} +1 -1
  27. package/frontend-dist/assets/{TooltipTrigger-D4gYyjGF.js → TooltipTrigger-UwQzn5Jd.js} +1 -1
  28. package/frontend-dist/assets/{TransformRulesForm-C6PBk8zI.js → TransformRulesForm-CwHjFf_8.js} +1 -1
  29. package/frontend-dist/assets/{UnifiedRequestDialog-rmWxp09D.js → UnifiedRequestDialog-BbafY6jV.js} +1 -1
  30. package/frontend-dist/assets/{VisuallyHiddenInput-BPy71v35.js → VisuallyHiddenInput-h1_JJr8A.js} +1 -1
  31. package/frontend-dist/assets/{button-DRFSckEU.js → button-BwrBFTfJ.js} +2 -2
  32. package/frontend-dist/assets/{copy-BsWNnxok.js → copy-ZvTZUKRc.js} +1 -1
  33. package/frontend-dist/assets/{dialog-DxoN_Irc.js → dialog-CVXqy9Fc.js} +1 -1
  34. package/frontend-dist/assets/{index-Dr-BkaVu.js → index-C8xJ1Vhe.js} +2 -2
  35. package/frontend-dist/assets/{trash-2-DZ6KuutY.js → trash-2-DSx-MkZy.js} +1 -1
  36. package/frontend-dist/assets/{useClipboard-B0s-K67s.js → useClipboard-CszJHvCV.js} +1 -1
  37. package/frontend-dist/assets/{useLogRetention-BS-AFvlE.js → useLogRetention-BZZYkmu1.js} +1 -1
  38. package/frontend-dist/index.html +2 -2
  39. package/package.json +1 -1
  40. package/frontend-dist/assets/ModelCard-DixuS062.js +0 -1
  41. package/frontend-dist/assets/QuickSetup-BEeZJQ3g.js +0 -1
@@ -1 +1 @@
1
- import{N as e}from"./button-DRFSckEU.js";var t=e(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]);export{t};
1
+ import{N as e}from"./button-BwrBFTfJ.js";var t=e(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]);export{t};
@@ -1 +1 @@
1
- import{Mt as e}from"./button-DRFSckEU.js";var t=2e3;function n(){let n=e(!1);async function i(e){try{return navigator.clipboard?.writeText?await navigator.clipboard.writeText(e):r(e),n.value=!0,setTimeout(()=>{n.value=!1},t),!0}catch{try{return r(e),n.value=!0,setTimeout(()=>{n.value=!1},t),!0}catch{return!1}}}return{copied:n,copy:i}}function r(e){let t=document.createElement(`textarea`);if(t.value=e,t.style.cssText=`position:fixed;left:-9999px;opacity:0`,document.body.appendChild(t),t.select(),!document.execCommand(`copy`))throw Error(`execCommand copy failed`);document.body.removeChild(t)}export{n as t};
1
+ import{Mt as e}from"./button-BwrBFTfJ.js";var t=2e3;function n(){let n=e(!1);async function i(e){try{return navigator.clipboard?.writeText?await navigator.clipboard.writeText(e):r(e),n.value=!0,setTimeout(()=>{n.value=!1},t),!0}catch{try{return r(e),n.value=!0,setTimeout(()=>{n.value=!1},t),!0}catch{return!1}}}return{copied:n,copy:i}}function r(e){let t=document.createElement(`textarea`);if(t.value=e,t.style.cssText=`position:fixed;left:-9999px;opacity:0`,document.body.appendChild(t),t.select(),!document.execCommand(`copy`))throw Error(`execCommand copy failed`);document.body.removeChild(t)}export{n as t};
@@ -1 +1 @@
1
- import{A as e,I as t,Mt as n,k as r}from"./button-DRFSckEU.js";import{r as i}from"./index-Dr-BkaVu.js";var a=3;function o(){let{t:o}=t(),s=n(a),c=n(!1);async function l(){c.value=!0;try{s.value=(await r.setLogRetention(s.value)).days,i.success(o(`logs.retention.saved`))}catch(t){i.error(e(t,o(`logs.retention.updateFailed`)))}finally{c.value=!1}}async function u(){try{let{days:e}=await r.getLogRetention();s.value=e}catch(t){i.error(e(t,o(`logs.retention.loadFailed`)))}}return{retentionDays:s,retentionSaving:c,saveRetention:l,loadRetention:u}}export{o as t};
1
+ import{A as e,I as t,Mt as n,k as r}from"./button-BwrBFTfJ.js";import{r as i}from"./index-C8xJ1Vhe.js";var a=3;function o(){let{t:o}=t(),s=n(a),c=n(!1);async function l(){c.value=!0;try{s.value=(await r.setLogRetention(s.value)).days,i.success(o(`logs.retention.saved`))}catch(t){i.error(e(t,o(`logs.retention.updateFailed`)))}finally{c.value=!1}}async function u(){try{let{days:e}=await r.getLogRetention();s.value=e}catch(t){i.error(e(t,o(`logs.retention.loadFailed`)))}}return{retentionDays:s,retentionSaving:c,saveRetention:l,loadRetention:u}}export{o as t};
@@ -5,8 +5,8 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/admin/favicon.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>LLM Simple Router</title>
8
- <script type="module" crossorigin src="/admin/assets/index-Dr-BkaVu.js"></script>
9
- <link rel="modulepreload" crossorigin href="/admin/assets/button-DRFSckEU.js">
8
+ <script type="module" crossorigin src="/admin/assets/index-C8xJ1Vhe.js"></script>
9
+ <link rel="modulepreload" crossorigin href="/admin/assets/button-BwrBFTfJ.js">
10
10
  <link rel="stylesheet" crossorigin href="/admin/assets/index-iEMoIOdZ.css">
11
11
  </head>
12
12
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "llm-simple-router",
3
- "version": "0.9.21",
3
+ "version": "0.9.23",
4
4
  "description": "LLM API proxy router with OpenAI/Anthropic support, model mapping, retry strategies, and admin dashboard",
5
5
  "license": "MIT",
6
6
  "author": "ZZzzswszzZZ",
@@ -1 +0,0 @@
1
- import{$ as e,I as t,J as n,K as r,Mt as i,Q as a,Vt as o,W as s,Wt as c,X as l,Y as u,Z as d,dt as f,n as p,pt as m,q as h,r as g,wt as _,zt as v}from"./button-DRFSckEU.js";import{t as y}from"./trash-2-DZ6KuutY.js";import{n as b,t as x}from"./CollapsibleContent-BjJrE5cf.js";import{f as S,g as C,h as w,m as T,p as E,tt as D}from"./index-Dr-BkaVu.js";import{t as O}from"./Input-glS226Q6.js";var k=[{id:`claude-code`,name:`Claude Code`,icon:`C`,iconClass:`cc`,format:`anthropic`,defaultProvider:`DeepSeek`,defaultPlan:`Anthropic`,descriptionKey:`quickSetup.client.claudeCodeDesc`},{id:`pi`,name:`Pi`,icon:`P`,iconClass:`pi`,format:`anthropic`,defaultProvider:`DeepSeek`,defaultPlan:`Anthropic`,descriptionKey:`quickSetup.client.piDesc`},{id:`openai-sdk`,name:`OpenAI SDK`,icon:`OA`,iconClass:`oa`,format:`openai`,defaultProvider:`DeepSeek`,defaultPlan:`OpenAI`,descriptionKey:`quickSetup.client.openaiSdkDesc`},{id:`anthropic-sdk`,name:`Anthropic SDK`,icon:`AN`,iconClass:`an`,format:`anthropic`,defaultProvider:`DeepSeek`,defaultPlan:`Anthropic`,descriptionKey:`quickSetup.client.anthropicSdkDesc`}],A=[{key:`deepseek_anthropic`,labelKey:`quickSetup.patch.deepseekAnthropic`,items:[{id:`thinking-param`,nameKey:`quickSetup.patch.thinkingParam`,descKey:`quickSetup.patch.thinkingParamDesc`},{id:`cache-control`,nameKey:`quickSetup.patch.cacheControl`,descKey:`quickSetup.patch.cacheControlDesc`},{id:`thinking-blocks`,nameKey:`quickSetup.patch.thinkingBlocks`,descKey:`quickSetup.patch.thinkingBlocksDesc`},{id:`orphan-tool-results`,nameKey:`quickSetup.patch.orphanToolResult`,descKey:`quickSetup.patch.orphanToolResultDesc`}]},{key:`deepseek_openai`,labelKey:`quickSetup.patch.deepseekOpenai`,items:[{id:`non-ds-tools`,nameKey:`quickSetup.patch.nonDsTools`,descKey:`quickSetup.patch.nonDsToolsDesc`},{id:`orphan-tool-results-oa`,nameKey:`quickSetup.patch.orphanToolResultOa`,descKey:`quickSetup.patch.orphanToolResultOaDesc`}]},{key:`general`,labelKey:`quickSetup.patch.general`,items:[{id:`developer-role`,nameKey:`quickSetup.patch.developerRole`,descKey:`quickSetup.patch.developerRoleDesc`}]}],j=[{label:`8K`,value:8e3},{label:`16K`,value:16e3},{label:`32K`,value:32e3},{label:`64K`,value:64e3},{label:`128K`,value:128e3},{label:`160K`,value:16e4},{label:`200K`,value:2e5},{label:`256K`,value:256e3},{label:`1M`,value:1e6}],M=1e6,N=128e3,P=32e3,F=8e3;function I(e){let t=e.toLowerCase();return t.includes(`v4`)||t.includes(`v3.2`)||t.includes(`r1`)||t.includes(`reasoner`)||t.includes(`qwen3.6`)?M:t.includes(`128k`)?N:t.includes(`32k`)?P:t.includes(`8k`)?F:N}var L={"claude-code":[`sonnet`,`opus`,`haiku`],"openai-sdk":[`gpt-5.1`,`gpt-4.1`,`o3`,`o4-mini`],"anthropic-sdk":[`claude-sonnet-4-20250514`,`claude-opus-4-20250116`,`claude-haiku-4-20250414`]},R={class:`space-y-3`},z={class:`mb-1.5 text-xs font-medium text-[var(--muted-foreground)]`},B={class:`flex flex-wrap gap-1.5`},V=[`title`,`onClick`],H=e({__name:`PatchChips`,props:{apiType:{},isDeepSeek:{type:Boolean},isNonOpenaiEndpoint:{type:Boolean},modelValue:{}},emits:[`update:modelValue`],setup(e,{emit:n}){let{t:i}=t(),a=e,u=n,p=r(()=>A.filter(e=>e.key===`deepseek_anthropic`?a.isDeepSeek&&a.apiType===`anthropic`:e.key===`deepseek_openai`?a.isDeepSeek&&a.apiType===`openai`:e.key===`general`?a.apiType===`openai`&&a.isNonOpenaiEndpoint:!0));function _(e){u(`update:modelValue`,a.modelValue.includes(e)?a.modelValue.filter(t=>t!==e):[...a.modelValue,e])}function y(e){return a.modelValue.includes(e)}return(e,t)=>(f(),l(`div`,R,[(f(!0),l(s,null,m(p.value,e=>(f(),l(`div`,{key:e.key},[h(`p`,z,c(v(i)(e.labelKey)),1),h(`div`,B,[(f(!0),l(s,null,m(e.items,e=>(f(),l(`button`,{key:e.id,type:`button`,title:v(i)(e.descKey),class:o(v(g)(`inline-flex items-center gap-1.5 rounded-md border px-2 py-1 text-xs font-medium transition-all cursor-pointer select-none`,y(e.id)?`border-[var(--ring)] bg-[var(--primary)]/10 text-[var(--primary)]`:`border-[var(--border)] bg-transparent text-[var(--muted-foreground)] hover:border-[var(--muted-foreground)] hover:text-[var(--foreground)]`)),onClick:t=>_(e.id)},[h(`span`,{class:o(v(g)(`size-1.5 rounded-full transition-colors`,y(e.id)?`bg-[var(--primary)]`:`bg-[var(--border)]`))},null,2),d(` `+c(v(i)(e.nameKey)),1)],10,V))),128))])]))),128))]))}}),U={class:`rounded-lg border border-border bg-card px-3 py-2.5 transition-colors`},W={class:`flex items-center gap-2`},G=[`title`],K={class:`flex items-center gap-1 shrink-0`},q=e({__name:`ModelCard`,props:{model:{},apiType:{},isDeepSeek:{type:Boolean},isNonOpenaiEndpoint:{type:Boolean}},emits:[`update:model`,`remove`],setup(e,{emit:k}){let{t:A}=t(),M=e,N=k,P=i(!1),F=r(()=>j.find(e=>e.value===M.model.contextWindow)),I=r(()=>!!F.value);function L(e){let t=e;if(t===`__custom__`)return;let n=parseInt(t,10);isNaN(n)||N(`update:model`,{...M.model,contextWindow:n})}function R(e){let t=parseInt(e,10);!isNaN(t)&&t>0&&N(`update:model`,{...M.model,contextWindow:t})}function z(e){N(`update:model`,{...M.model,patches:e})}function B(e){return e>=1e6?`${e/1e6}M`:e>=1e3?`${e/1e3}K`:String(e)}return(t,r)=>(f(),l(`div`,U,[h(`div`,W,[h(`span`,{class:`truncate text-xs font-medium text-foreground min-w-0 flex-1`,title:e.model.name},c(e.model.name),9,G),h(`div`,K,[a(v(C),{"model-value":I.value?String(e.model.contextWindow):`__custom__`,"onUpdate:modelValue":L},{default:_(()=>[a(v(E),{class:`h-7 w-[72px] text-xs`},{default:_(()=>[a(v(S),null,{default:_(()=>[d(c(I.value?F.value.label:B(e.model.contextWindow)),1)]),_:1})]),_:1}),a(v(w),null,{default:_(()=>[(f(!0),l(s,null,m(v(j),e=>(f(),n(v(T),{key:e.value,value:String(e.value)},{default:_(()=>[d(c(e.label),1)]),_:2},1032,[`value`]))),128)),a(v(T),{value:`__custom__`},{default:_(()=>[d(c(v(A)(`quickSetup.model.contextCustom`)),1)]),_:1})]),_:1})]),_:1},8,[`model-value`]),I.value?u(``,!0):(f(),n(v(O),{key:0,"model-value":String(e.model.contextWindow),type:`number`,min:`1`,class:`h-7 w-20 text-xs text-right [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none`,"onUpdate:modelValue":r[0]||=e=>R(e)},null,8,[`model-value`]))]),h(`button`,{type:`button`,class:`inline-flex items-center gap-0.5 text-[10px] text-muted-foreground hover:text-foreground transition-colors cursor-pointer select-none shrink-0`,onClick:r[1]||=e=>P.value=!P.value},[a(v(D),{class:o(v(g)(`size-3 transition-transform`,P.value?`rotate-0`:`-rotate-90`))},null,8,[`class`]),d(` `+c(e.model.patches.length>0?e.model.patches.length:``),1)]),a(v(p),{variant:`ghost`,size:`icon-xs`,class:`text-muted-foreground hover:text-destructive shrink-0`,onClick:r[2]||=e=>t.$emit(`remove`)},{default:_(()=>[a(v(y),{class:`size-3`})]),_:1})]),a(v(b),{open:P.value,"onUpdate:open":r[3]||=e=>P.value=e},{default:_(()=>[a(v(x),{class:`pt-1.5`},{default:_(()=>[a(H,{"api-type":e.apiType,"is-deep-seek":e.isDeepSeek,"is-non-openai-endpoint":e.isNonOpenaiEndpoint,"model-value":e.model.patches,"onUpdate:modelValue":z},null,8,[`api-type`,`is-deep-seek`,`is-non-openai-endpoint`,`model-value`])]),_:1})]),_:1},8,[`open`])]))}});export{I as i,k as n,L as r,q as t};
@@ -1 +0,0 @@
1
- import{$ as e,A as t,H as n,I as r,J as i,K as a,M as o,Mt as s,Ot as c,Q as l,U as u,Vt as d,W as f,Wt as p,X as m,Y as h,Z as g,dt as _,k as v,lt as y,n as b,pt as x,q as S,wt as C,xt as w,zt as T}from"./button-DRFSckEU.js";import{r as E,t as D}from"./MappingEntryEditor-auxWvl8S.js";import{t as O}from"./Checkbox-DgWzyASL.js";import{t as k}from"./Label-B2lstY9k.js";import{t as A}from"./Switch-BwPbL6O4.js";import{b as j,f as M,g as N,h as P,m as F,p as I,r as L}from"./index-Dr-BkaVu.js";import{n as R,t as z}from"./CardContent-DmBQARma.js";import{n as B,t as V}from"./CardTitle-DgwtSVqy.js";import{t as H}from"./Input-glS226Q6.js";import{i as U,n as W,r as ee,t as G}from"./ModelCard-DixuS062.js";import{n as K,t as te}from"./TransformRulesForm-C6PBk8zI.js";var q={DeepSeek:`deepseek`,百度千帆:`qianfan`,科大讯飞:`iflytek`,硅基流动:`siliconflow`,智谱:`zhipu`,月之暗面:`moonshot`,Minimax:`minimax`,火山引擎:`volcengine`,阿里云:`aliyun`,腾讯云:`tencent`,OpenCode:`opencode`,阶跃星辰:`stepfun`};function J(e){return q[e]??e.toLowerCase().replace(/[^a-z0-9]/gi,`-`).replace(/-+/g,`-`)}function ne(){let{t:e}=r(),n=s(`claude-code`),i=s([]),c=s(``),l=s(``),u=s(`anthropic`),d=s(``),f=s([]),p=s([]),m=s([]),h=s(new Set),g=s(!1),_=s(`idle`),b=s(`auto`),x=s(10),S=s(12e4),C=s(100),T=s(``),E=s(``),D=s(``),O=s([]),k=s([]),A=a(()=>c.value===`__custom__`),j=a(()=>W.find(e=>e.id===n.value)),M=a(()=>{if(!c.value||!l.value)return;let e=i.value.find(e=>e.group===c.value);if(e)return e.presets.find(e=>e.plan===l.value)}),N=s(``),P=s(``),F=a(()=>A.value?N.value:M.value?.baseUrl??``),I=a(()=>{if(A.value)return P.value;let e=M.value;if(!e)return``;let t=e.apiType===`anthropic`?`/v1/messages`:e.apiType===`openai-responses`?`/v1/responses`:`/v1/chat/completions`;return e.upstreamPath&&e.upstreamPath!==t?e.upstreamPath:``}),R=a(()=>i.value.find(e=>e.group===c.value)?.presets??[]),z=a(()=>!F.value.includes(`openai.com`)),B=a(()=>c.value?{provider:{id:A.value?`__new_custom__`:`__new_${J(c.value)}_${J(l.value)}__`,name:A.value?e(`quickSetup.provider.customProvider`):`${c.value} - ${l.value}`},models:f.value.filter(e=>e.enabled).map(e=>({name:e.name,contextWindow:e.contextWindow})),isNew:!0}:null),V=a(()=>{let e=k.value.map(e=>({provider:{id:e.id,name:e.name},models:(e.models??[]).map(e=>({name:e.name,contextWindow:e.context_window??128e3}))}));return B.value&&B.value.models.length>0?[...e,B.value]:e}),H=a(()=>{let e=c.value;return m.value.filter(t=>!t.providers||t.providers.length===0?!0:t.providers.includes(e))});function G(e,t){let n=[];return e.toLowerCase().includes(`deepseek`)&&(t===`anthropic`?n.push(`thinking-param`,`cache-control`,`thinking-blocks`,`orphan-tool-results`):n.push(`non-ds-tools`,`orphan-tool-results-oa`)),t===`openai`&&z.value&&n.push(`developer-role`),n}function K(e){f.value=e.models.map(t=>({name:t,contextWindow:U(t),enabled:!0,patches:G(t,e.apiType)}))}function te(e,t=128e3){f.value.push({name:e,contextWindow:t,enabled:!0,patches:G(e,u.value)})}function q(){let e=f.value.filter(e=>e.enabled),t;t=n.value===`pi`?e.map(e=>e.name):ee[n.value]??e.map(e=>e.name),p.value=t.map(r=>{let i=O.value.find(e=>e.client_model===r);if(i){let t={};try{t=JSON.parse(i.rule)}catch{}let n=t.targets??[];return{clientModel:r,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:e[0]?.name??``,provider_id:`__new__`}],existing:!0,existingId:i.id,tag:`existing`,active:!!i.is_active,originalActive:!!i.is_active}}return{clientModel:r,targets:[{backend_model:e[t.indexOf(r)]?.name??e[e.length-1]?.name??``,provider_id:`__new__`}],existing:!1,tag:n.value===`pi`?`auto`:`def`,active:!0}})}function ne(){h.value=new Set(H.value.filter(e=>!e.exists).map(e=>e.name))}function Y(e){n.value=e;let t=W.find(t=>t.id===e);if(t){c.value=``,l.value=``;for(let e of i.value)if(e.group===t.defaultProvider){c.value=e.group;for(let n of e.presets)if(n.plan===t.defaultPlan){l.value=n.plan,u.value=n.apiType,K(n);break}break}q(),ne()}}function X(e){if(c.value=e,l.value=``,f.value=[],e===`__custom__`)u.value=`openai`,N.value=``,P.value=``,f.value=[];else{let t=i.value.find(t=>t.group===e);if(t&&t.presets.length>0){let e=j.value,n=(e?t.presets.find(t=>t.apiType===e.format):null)??t.presets[0];l.value=n.plan,u.value=n.apiType,K(n)}}q(),ne()}function re(e){l.value=e;let t=i.value.find(e=>e.group===c.value);if(!t)return;let n=t.presets.find(t=>t.plan===e);n&&(u.value=n.apiType,K(n),q())}w(u,()=>{for(let e of f.value)e.patches=G(e.name,u.value)});function ie(e,t){let n=new Set(h.value);t?n.add(e):n.delete(e),h.value=n}function ae(e,t){let n=[...p.value];n[e]={...n[e],targets:t},p.value=n}function Z(e){let t=[...p.value];t[e]={...t[e],active:!t[e].active},p.value=t}function oe(e,t){let n=p.value.filter(t=>t.clientModel!==e);n.push({clientModel:e,targets:[{backend_model:t,provider_id:`__new__`}],existing:!1,tag:`cust`,active:!0}),p.value=n}function se(t){if(p.value.find(e=>e.clientModel===t)?.existing){L.error(e(`quickSetup.messages.existingMappingDelete`));return}p.value=p.value.filter(e=>e.clientModel!==t)}function ce(e){b.value=e,e===`auto`?x.value=10:e===`manual`&&(x.value=3)}async function le(){if(!d.value.trim()){_.value=`error`,L.error(e(`quickSetup.messages.fillApiKeyFirst`));return}_.value=`testing`,await new Promise(e=>setTimeout(e,800)),_.value=`ok`}function ue(){let t=T.value.trim(),n=E.value.trim(),r=D.value.trim();if(!t&&!n&&!r)return;let i={};if(t)try{i.inject_headers=JSON.parse(t)}catch{return L.error(e(`quickSetup.messages.injectHeadersJsonError`)),!1}if(n&&(i.drop_fields=n.split(`,`).map(e=>e.trim()).filter(Boolean)),r)try{i.request_defaults=JSON.parse(r)}catch{return L.error(e(`quickSetup.messages.requestDefaultsJsonError`)),!1}return Object.keys(i).length>0?i:void 0}async function de(){if(!M.value){L.error(e(`quickSetup.messages.selectProviderAndPlan`));return}if(!d.value.trim()){L.error(e(`quickSetup.messages.fillApiKey`));return}g.value=!0;try{let t={provider:{name:A.value?`custom-${Date.now()}`:`${J(c.value)}-${J(l.value)}`,api_type:u.value,base_url:F.value,upstream_path:I.value||void 0,api_key:d.value.trim(),models:f.value.map(e=>({name:e.name,context_window:e.contextWindow,patches:e.patches.length>0?e.patches:void 0})),concurrency_mode:b.value,max_concurrency:b.value===`none`?void 0:x.value,queue_timeout_ms:b.value===`none`?void 0:S.value,max_queue_size:b.value===`none`?void 0:C.value},mappings:p.value.filter(e=>e.targets[0]?.backend_model).map(e=>({client_model:e.clientModel,backend_model:e.targets[0]?.backend_model??``})),retry_rules:H.value.filter(e=>h.value.has(e.name)&&!e.exists).map(e=>({name:e.name,status_code:e.status_code,body_pattern:e.body_pattern,retry_strategy:e.retry_strategy,retry_delay_ms:e.retry_delay_ms,max_retries:e.max_retries,max_delay_ms:e.max_delay_ms})),transform_rules:(()=>{let e=ue();if(e===!1)throw Error(`__transform_invalid__`);return e})()};await v.quickSetup(t);let n=[];for(let e of p.value)if(e.existing&&e.existingId&&e.originalActive!==void 0&&e.active!==e.originalActive)try{await v.toggleMappingGroup(e.existingId)}catch{n.push(e.clientModel)}n.length>0?L.success(e(`quickSetup.messages.setupCompleteWithErrors`,{count:n.length})):L.success(e(`quickSetup.messages.setupComplete`)),await new Promise(e=>setTimeout(e,1500)),o.push(`/`)}catch(n){L.error(t(n,e(`quickSetup.messages.setupFailed`)))}finally{g.value=!1}}return y(async()=>{try{let[e,t,n,r]=await Promise.all([v.recommended.getProviders(),v.recommended.getRetryRules(),v.getMappingGroups().catch(()=>[]),v.getProviders().catch(()=>[])]);i.value=e,m.value=t,O.value=n,k.value=r,Y(`claude-code`)}catch(n){L.error(t(n,e(`quickSetup.messages.loadFailed`)))}}),{clientType:n,providerGroups:i,selectedGroup:c,selectedPlan:l,apiType:u,apiKey:d,modelConfigs:f,mappingEntries:p,allRecommendedRules:m,recommendedRules:H,selectedRetryRules:h,saving:g,connectionStatus:_,currentClient:j,currentPreset:M,baseUrl:F,customBaseUrl:N,upstreamPath:I,customUpstreamPath:P,isCustomProvider:A,availablePlans:R,isNonOpenaiEndpoint:z,concurrencyMode:b,maxConcurrency:x,queueTimeoutMs:S,maxQueueSize:C,transformInjectHeaders:T,transformDropFields:E,transformRequestDefaults:D,existingMappings:O,allProviders:k,allProviderGroups:V,selectClient:Y,onProviderChange:X,onPlanChange:re,initModels:K,getDefaultPatches:G,updateMappings:q,updateMappingTargets:ae,toggleMappingActive:Z,addMappingEntry:oe,removeMappingEntry:se,toggleRetryRule:ie,onConcurrencyModeChange:ce,testConnection:le,submit:de,addCustomModel:te}}var Y={class:`space-y-1.5`},X={class:`flex items-start gap-2 px-3 py-2`},re=[`onClick`],ie={class:`flex items-center gap-1.5 shrink-0 pt-0.5`},ae={key:0,class:`py-3 text-center text-xs text-muted-foreground`},Z={class:`flex items-center gap-2 pt-2 border-t mt-2`},oe=e({__name:`QuickSetupMappingList`,props:{entries:{},providerGroups:{}},emits:[`update:targets`,`toggle-active`,`add`],setup(e,{emit:t}){let{t:n}=r(),i=t,a=s(new Set);function o(e){let t=new Set(a.value);t.has(e)?t.delete(e):t.add(e),a.value=t}let c=s(``),d=s(``);function v(){return c.value.trim().length>0&&d.value.trim().length>0}function y(){let e=c.value.trim(),t=d.value.trim();e&&t&&(i(`add`,e,t),c.value=``,d.value=``)}function w(e){e.key===`Enter`&&v()&&(e.preventDefault(),y())}return(t,r)=>(_(),m(`div`,Y,[(_(!0),m(f,null,x(e.entries,(t,n)=>(_(),m(`div`,{key:t.clientModel,class:`rounded-md border border-border`},[S(`div`,X,[S(`div`,{class:`flex-1 min-w-0 cursor-pointer`,onClick:e=>o(t.clientModel)},[l(D,{entry:t,"provider-groups":e.providerGroups,expanded:a.value.has(t.clientModel),editable:!0,"onUpdate:targets":e=>i(`update:targets`,n,e)},null,8,[`entry`,`provider-groups`,`expanded`,`onUpdate:targets`])],8,re),S(`div`,ie,[l(T(A),{"model-value":t.active,"onUpdate:modelValue":e=>i(`toggle-active`,n),class:`scale-75`,onClick:r[0]||=u(()=>{},[`stop`])},null,8,[`model-value`,`onUpdate:modelValue`])])])]))),128)),e.entries.length===0?(_(),m(`p`,ae,p(T(n)(`providers.shared.noMappings`)),1)):h(``,!0),S(`div`,Z,[l(T(H),{modelValue:c.value,"onUpdate:modelValue":r[1]||=e=>c.value=e,placeholder:T(n)(`providers.shared.clientModel`),class:`h-8 flex-1 text-xs font-mono`,onKeydown:w},null,8,[`modelValue`,`placeholder`]),l(T(E),{class:`size-3 shrink-0 text-muted-foreground`}),l(T(H),{modelValue:d.value,"onUpdate:modelValue":r[2]||=e=>d.value=e,placeholder:T(n)(`providers.shared.targetModel`),class:`h-8 flex-1 text-xs font-mono`,onKeydown:w},null,8,[`modelValue`,`placeholder`]),l(T(b),{size:`sm`,variant:`outline`,class:`h-8 shrink-0`,disabled:!v(),onClick:y},{default:C(()=>[g(p(T(n)(`providers.shared.add`)),1)]),_:1},8,[`disabled`])])]))}}),se={class:`p-6 space-y-4 pb-20`},ce={class:`flex gap-2 flex-wrap`},le=[`onClick`],ue={class:`text-left`},de={class:`font-medium text-sm leading-tight`},fe={class:`text-[10px] opacity-60 leading-tight`},pe={class:`flex items-end gap-2`},me={class:`w-40 space-y-1`},he={class:`w-48 space-y-1`},ge={class:`w-80 space-y-1`},_e={class:`w-48 space-y-1`},ve={class:`w-28 space-y-1`},ye={class:`w-48 space-y-1`},be={class:`w-72 space-y-1`},xe={key:0,class:`w-48 space-y-1`},Se={class:`w-64 space-y-1`},Ce={class:`shrink-0 space-y-1`},we={class:`border-t pt-3`},Te={class:`flex items-center justify-between mb-2`},Ee={class:`text-xs font-medium text-muted-foreground`},De={key:0,class:`py-4 text-center text-xs text-muted-foreground`},Oe={key:1,class:`grid grid-cols-4 gap-2`},ke={key:2,class:`flex gap-2 mt-2`},Ae={class:`border-t pt-3`},je={class:`flex items-center justify-between mb-2`},Me={class:`text-xs font-medium text-muted-foreground`},Ne={class:`grid grid-cols-5 gap-4`},Pe={class:`flex items-center justify-between`},Fe={class:`col-span-2 space-y-4`},Ie={class:`flex items-center justify-between`},Le={key:0,class:`py-6 text-center text-xs text-muted-foreground`},Re={key:1,class:`space-y-1.5 max-h-[320px] overflow-y-auto`},ze=[`onClick`],Be={class:`flex-1 min-w-0`},Ve={class:`flex items-center gap-1.5`},He={class:`text-xs font-medium`},Ue={class:`text-[10px] text-muted-foreground mt-0.5`},We={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`},Ge={class:`text-xs text-muted-foreground flex items-center gap-1.5`},Ke={class:`flex items-center gap-2`},Q=e({__name:`QuickSetup`,setup(e){let{t}=r(),{clientType:o,providerGroups:v,selectedGroup:y,selectedPlan:w,apiType:E,apiKey:D,modelConfigs:A,mappingEntries:U,allRecommendedRules:ee,recommendedRules:q,selectedRetryRules:J,saving:Y,connectionStatus:X,baseUrl:re,availablePlans:ie,isNonOpenaiEndpoint:ae,isCustomProvider:Z,customBaseUrl:Q,upstreamPath:qe,customUpstreamPath:Je,concurrencyMode:Ye,maxConcurrency:Xe,queueTimeoutMs:Ze,maxQueueSize:Qe,allProviderGroups:$e,transformInjectHeaders:et,transformDropFields:tt,transformRequestDefaults:nt,selectClient:rt,onProviderChange:it,onPlanChange:at,updateMappingTargets:ot,toggleMappingActive:st,addMappingEntry:ct,toggleRetryRule:lt,onConcurrencyModeChange:ut,testConnection:dt,submit:ft,addCustomModel:pt}=ne(),$=s(``);function mt(){$.value.trim()&&(pt($.value.trim()),$.value=``)}let ht=a(()=>A.value.filter(e=>e.enabled).length),gt=a(()=>W.find(e=>e.id===o.value)?.name??o.value);function _t(e,t){let n=[...A.value];n[e]=t,A.value=n}function vt(e){A.value=A.value.filter((t,n)=>n!==e)}function yt(){if(!y.value){L.error(t(`quickSetup.messages.selectProvider`));return}if(!D.value.trim()){L.error(t(`quickSetup.messages.fillApiKey`));return}if(ht.value===0){L.error(t(`quickSetup.messages.enableOneModel`));return}L.success(t(`quickSetup.messages.validationPassed`))}return(e,r)=>(_(),m(f,null,[S(`div`,se,[l(T(R),null,{default:C(()=>[l(T(B),{class:`pb-3`},{default:C(()=>[l(T(V),{class:`text-sm font-medium`},{default:C(()=>[g(p(T(t)(`quickSetup.client.selectClient`)),1)]),_:1})]),_:1}),l(T(z),null,{default:C(()=>[S(`div`,ce,[(_(!0),m(f,null,x(T(W),e=>(_(),m(`button`,{key:e.id,class:d([`flex items-center gap-2.5 px-4 py-2.5 rounded-lg border text-sm transition-all cursor-pointer`,T(o)===e.id?`border-primary bg-primary/5 text-primary ring-1 ring-primary/20`:`border-border hover:border-muted-foreground/30 text-muted-foreground hover:text-foreground`]),onClick:t=>T(rt)(e.id)},[S(`span`,{class:d([`w-7 h-7 rounded-md text-xs font-bold flex items-center justify-center shrink-0`,{"bg-purple-600 text-white":e.iconClass===`cc`,"bg-emerald-600 text-white":e.iconClass===`pi`,"bg-blue-600 text-white":e.iconClass===`oa`,"bg-orange-600 text-white":e.iconClass===`an`}])},p(e.icon),3),S(`div`,ue,[S(`div`,de,p(e.name),1),S(`div`,fe,p(e.format)+` · `+p(T(t)(e.descriptionKey)),1)])],10,le))),128))])]),_:1})]),_:1}),l(T(R),null,{default:C(()=>[l(T(B),{class:`pb-3`},{default:C(()=>[l(T(V),{class:`text-sm font-medium`},{default:C(()=>[g(p(T(t)(`quickSetup.provider.config`)),1)]),_:1})]),_:1}),l(T(z),{class:`space-y-4`},{default:C(()=>[S(`div`,pe,[S(`div`,me,[l(T(k),{class:`text-xs text-muted-foreground`},{default:C(()=>[g(p(T(t)(`quickSetup.provider.label`)),1)]),_:1}),l(T(N),{"model-value":T(y),"onUpdate:modelValue":r[0]||=e=>T(it)(e)},{default:C(()=>[l(T(I),{class:`w-full text-xs data-[size=default]:h-7`},{default:C(()=>[l(T(M),{placeholder:T(t)(`quickSetup.provider.select`)},null,8,[`placeholder`])]),_:1}),l(T(P),null,{default:C(()=>[l(T(F),{value:`__custom__`},{default:C(()=>[g(p(T(t)(`quickSetup.provider.custom`)),1)]),_:1}),(_(!0),m(f,null,x(T(v),e=>(_(),i(T(F),{key:e.group,value:e.group},{default:C(()=>[g(p(e.group),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`model-value`])]),T(Z)?(_(),m(f,{key:0},[S(`div`,he,[l(T(k),{class:`text-xs text-muted-foreground`},{default:C(()=>[g(p(T(t)(`quickSetup.provider.format`)),1)]),_:1}),l(T(N),{modelValue:T(E),"onUpdate:modelValue":r[1]||=e=>c(E)?E.value=e:null},{default:C(()=>[l(T(I),{class:`w-full text-xs data-[size=default]:h-7`},{default:C(()=>[l(T(M))]),_:1}),l(T(P),null,{default:C(()=>[l(T(F),{value:`anthropic`},{default:C(()=>[...r[15]||=[g(`Anthropic Messages`,-1)]]),_:1}),l(T(F),{value:`openai`},{default:C(()=>[...r[16]||=[g(`OpenAI Chat Completions`,-1)]]),_:1}),l(T(F),{value:`openai-responses`},{default:C(()=>[...r[17]||=[g(`OpenAI Responses`,-1)]]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),S(`div`,ge,[l(T(k),{class:`text-xs text-muted-foreground`},{default:C(()=>[...r[18]||=[g(`Base URL`,-1)]]),_:1}),l(T(H),{modelValue:T(Q),"onUpdate:modelValue":r[2]||=e=>c(Q)?Q.value=e:null,placeholder:`https://api.example.com/v1`,class:`font-mono md:text-xs h-7`},null,8,[`modelValue`])]),S(`div`,_e,[l(T(k),{class:`text-xs text-muted-foreground`},{default:C(()=>[...r[19]||=[g(`Upstream Path`,-1)]]),_:1}),l(T(H),{modelValue:T(Je),"onUpdate:modelValue":r[3]||=e=>c(Je)?Je.value=e:null,placeholder:`/v1/chat/completions`,class:`font-mono md:text-xs h-7`},null,8,[`modelValue`])])],64)):(_(),m(f,{key:1},[S(`div`,ve,[l(T(k),{class:`text-xs text-muted-foreground`},{default:C(()=>[g(p(T(t)(`quickSetup.provider.plan`)),1)]),_:1}),l(T(N),{"model-value":T(w),"onUpdate:modelValue":r[4]||=e=>T(at)(e)},{default:C(()=>[l(T(I),{class:`w-full text-xs data-[size=default]:h-7`},{default:C(()=>[l(T(M),{placeholder:T(t)(`quickSetup.provider.select`)},null,8,[`placeholder`])]),_:1}),l(T(P),null,{default:C(()=>[(_(!0),m(f,null,x(T(ie),e=>(_(),i(T(F),{key:e.plan,value:e.plan},{default:C(()=>[g(p(e.plan),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`model-value`])]),S(`div`,ye,[l(T(k),{class:`text-xs text-muted-foreground`},{default:C(()=>[g(p(T(t)(`quickSetup.provider.format`)),1)]),_:1}),l(T(N),{modelValue:T(E),"onUpdate:modelValue":r[5]||=e=>c(E)?E.value=e:null},{default:C(()=>[l(T(I),{class:`w-full text-xs data-[size=default]:h-7`},{default:C(()=>[l(T(M))]),_:1}),l(T(P),null,{default:C(()=>[l(T(F),{value:`anthropic`},{default:C(()=>[...r[20]||=[g(`Anthropic Messages`,-1)]]),_:1}),l(T(F),{value:`openai`},{default:C(()=>[...r[21]||=[g(`OpenAI Chat Completions`,-1)]]),_:1}),l(T(F),{value:`openai-responses`},{default:C(()=>[...r[22]||=[g(`OpenAI Responses`,-1)]]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),S(`div`,be,[l(T(k),{class:`text-xs text-muted-foreground`},{default:C(()=>[...r[23]||=[g(`Base URL`,-1)]]),_:1}),l(T(H),{"model-value":T(re),readonly:``,class:`font-mono md:text-xs h-7`},null,8,[`model-value`])]),T(qe)?(_(),m(`div`,xe,[l(T(k),{class:`text-xs text-muted-foreground`},{default:C(()=>[...r[24]||=[g(`Upstream Path`,-1)]]),_:1}),l(T(H),{"model-value":T(qe),readonly:``,class:`font-mono md:text-xs h-7`},null,8,[`model-value`])])):h(``,!0)],64)),S(`div`,Se,[l(T(k),{class:`text-xs text-muted-foreground`},{default:C(()=>[g(p(T(t)(`quickSetup.provider.apiKey`)),1)]),_:1}),l(T(H),{modelValue:T(D),"onUpdate:modelValue":r[6]||=e=>c(D)?D.value=e:null,type:`password`,placeholder:T(t)(`quickSetup.provider.apiKeyPlaceholder`),class:`md:text-xs h-7`},null,8,[`modelValue`,`placeholder`])]),S(`div`,Ce,[l(T(k),{class:`text-xs text-muted-foreground invisible`},{default:C(()=>[g(p(T(t)(`quickSetup.provider.connect`)),1)]),_:1}),l(T(b),{variant:`outline`,size:`sm`,disabled:T(X)===`testing`,onClick:T(dt)},{default:C(()=>[T(X)===`testing`?(_(),m(f,{key:0},[r[25]||=S(`svg`,{class:`w-3.5 h-3.5 mr-1 animate-spin`,fill:`none`,viewBox:`0 0 24 24`},[S(`circle`,{class:`opacity-25`,cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,"stroke-width":`4`}),S(`path`,{class:`opacity-75`,fill:`currentColor`,d:`M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z`})],-1),g(` `+p(T(t)(`quickSetup.provider.testing`)),1)],64)):T(X)===`ok`?(_(),m(f,{key:1},[g(p(T(t)(`quickSetup.provider.connected`)),1)],64)):(_(),m(f,{key:2},[g(p(T(t)(`quickSetup.provider.test`)),1)],64))]),_:1},8,[`disabled`,`onClick`])])]),S(`div`,we,[S(`div`,Te,[S(`span`,Ee,p(T(t)(`quickSetup.model.config`)),1),l(T(j),{variant:`secondary`,class:`text-[10px]`},{default:C(()=>[g(p(ht.value)+`/`+p(T(A).length),1)]),_:1})]),T(A).length===0?(_(),m(`p`,De,p(T(t)(`quickSetup.model.selectProviderFirst`)),1)):(_(),m(`div`,Oe,[(_(!0),m(f,null,x(T(A),(e,t)=>(_(),i(G,{key:e.name,model:e,"api-type":T(E),"is-deep-seek":e.name.toLowerCase().includes(`deepseek`),"is-non-openai-endpoint":T(ae),"onUpdate:model":e=>_t(t,e),onRemove:e=>vt(t)},null,8,[`model`,`api-type`,`is-deep-seek`,`is-non-openai-endpoint`,`onUpdate:model`,`onRemove`]))),128))])),T(Z)?(_(),m(`div`,ke,[l(T(H),{modelValue:$.value,"onUpdate:modelValue":r[7]||=e=>$.value=e,placeholder:T(t)(`quickSetup.model.namePlaceholder`),onKeydown:n(u(mt,[`prevent`]),[`enter`]),class:`flex-1 md:text-xs h-7`},null,8,[`modelValue`,`placeholder`,`onKeydown`]),l(T(b),{type:`button`,variant:`outline`,size:`sm`,onClick:mt,disabled:!$.value.trim()},{default:C(()=>[g(p(T(t)(`common.add`)),1)]),_:1},8,[`disabled`])])):h(``,!0)]),S(`div`,Ae,[S(`div`,je,[S(`span`,Me,p(T(t)(`quickSetup.concurrency.control`)),1)]),l(K,{mode:T(Ye),"max-concurrency":T(Xe),"queue-timeout-ms":T(Ze),"max-queue-size":T(Qe),"onUpdate:mode":T(ut),"onUpdate:maxConcurrency":r[8]||=e=>Xe.value=e,"onUpdate:queueTimeoutMs":r[9]||=e=>Ze.value=e,"onUpdate:maxQueueSize":r[10]||=e=>Qe.value=e},null,8,[`mode`,`max-concurrency`,`queue-timeout-ms`,`max-queue-size`,`onUpdate:mode`])])]),_:1})]),_:1}),S(`div`,Ne,[l(T(R),{class:`col-span-3`},{default:C(()=>[l(T(B),{class:`pb-3`},{default:C(()=>[S(`div`,Pe,[l(T(V),{class:`text-sm font-medium`},{default:C(()=>[g(p(T(t)(`quickSetup.mapping.title`)),1)]),_:1}),l(T(j),{variant:`secondary`,class:`text-[10px]`},{default:C(()=>[g(p(T(t)(`quickSetup.mapping.count`,{count:T(U).length})),1)]),_:1})])]),_:1}),l(T(z),null,{default:C(()=>[l(oe,{entries:T(U),"provider-groups":T($e),"onUpdate:targets":T(ot),onToggleActive:T(st),onAdd:T(ct)},null,8,[`entries`,`provider-groups`,`onUpdate:targets`,`onToggleActive`,`onAdd`])]),_:1})]),_:1}),S(`div`,Fe,[l(T(R),null,{default:C(()=>[l(T(B),{class:`pb-3`},{default:C(()=>[S(`div`,Ie,[l(T(V),{class:`text-sm font-medium`},{default:C(()=>[g(p(T(t)(`quickSetup.retry.title`)),1)]),_:1}),l(T(j),{variant:`secondary`,class:`text-[10px]`},{default:C(()=>[g(p(T(t)(`quickSetup.retry.selectedCount`,{count:T(J).size})),1)]),_:1})])]),_:1}),l(T(z),null,{default:C(()=>[T(q).length===0?(_(),m(`div`,Le,[T(ee).length===0?(_(),m(f,{key:0},[g(p(T(t)(`quickSetup.retry.allCreated`)),1)],64)):(_(),m(f,{key:1},[g(p(T(t)(`quickSetup.retry.selectProviderFirst`)),1)],64))])):(_(),m(`div`,Re,[(_(!0),m(f,null,x(T(q),e=>(_(),m(`div`,{key:e.name,class:d([`flex items-start gap-2.5 rounded-md transition-colors`,e.exists?`opacity-60 cursor-default p-2`:`hover:bg-muted/50 cursor-pointer p-2`]),onClick:t=>!e.exists&&T(lt)(e.name,!T(J).has(e.name))},[l(T(O),{checked:e.exists?!0:T(J).has(e.name),disabled:e.exists,class:`mt-0.5`,"onUpdate:checked":t=>T(lt)(e.name,!!t),onClick:r[11]||=u(()=>{},[`stop`])},null,8,[`checked`,`disabled`,`onUpdate:checked`]),S(`div`,Be,[S(`div`,Ve,[S(`span`,He,p(e.name),1),e.exists?(_(),i(T(j),{key:0,variant:`secondary`,class:`text-[9px] px-1.5 py-0 leading-none bg-muted text-muted-foreground`},{default:C(()=>[g(p(T(t)(`quickSetup.retry.configured`)),1)]),_:1})):e.providers&&e.providers.length>0?(_(),i(T(j),{key:1,variant:`outline`,class:`text-[9px] px-1 py-0 leading-none`},{default:C(()=>[g(p(e.providers[0]),1)]),_:2},1024)):(_(),i(T(j),{key:2,variant:`secondary`,class:`text-[9px] px-1 py-0 leading-none`},{default:C(()=>[g(p(T(t)(`quickSetup.retry.general`)),1)]),_:1}))]),S(`div`,Ue,p(e.status_code)+` · `+p(e.retry_strategy===`fixed`?T(t)(`quickSetup.retry.fixed`):T(t)(`quickSetup.retry.exponential`))+` · `+p(e.retry_delay_ms/1e3)+`s · `+p(e.max_retries)+p(T(t)(`quickSetup.retry.times`)),1)])],10,ze))),128))]))]),_:1})]),_:1}),l(T(R),null,{default:C(()=>[l(T(B),{class:`pb-3`},{default:C(()=>[l(T(V),{class:`text-sm font-medium`},{default:C(()=>[g(p(T(t)(`quickSetup.transform.title`)),1)]),_:1})]),_:1}),l(T(z),null,{default:C(()=>[l(te,{"inject-headers":T(et),"drop-fields":T(tt),"request-defaults":T(nt),"onUpdate:injectHeaders":r[12]||=e=>et.value=e,"onUpdate:dropFields":r[13]||=e=>tt.value=e,"onUpdate:requestDefaults":r[14]||=e=>nt.value=e},null,8,[`inject-headers`,`drop-fields`,`request-defaults`])]),_:1})]),_:1})])])]),S(`div`,We,[S(`div`,Ge,[T(y)?(_(),m(f,{key:0},[l(T(j),{variant:`secondary`,class:`text-[10px]`},{default:C(()=>[g(p(gt.value),1)]),_:1}),r[26]||=S(`span`,{class:`text-muted-foreground/50`},`→`,-1),l(T(j),{variant:`secondary`,class:`text-[10px]`},{default:C(()=>[g(p(T(Z)?T(t)(`quickSetup.provider.custom`):T(y)),1)]),_:1})],64)):h(``,!0),ht.value>0?(_(),m(f,{key:1},[r[27]||=S(`span`,{class:`text-muted-foreground/50 mx-0.5`},`·`,-1),S(`span`,null,p(T(t)(`quickSetup.footer.models`,{count:ht.value})),1)],64)):h(``,!0),T(U).length>0?(_(),m(f,{key:2},[r[28]||=S(`span`,{class:`text-muted-foreground/50 mx-0.5`},`·`,-1),S(`span`,null,p(T(t)(`quickSetup.footer.mappings`,{count:T(U).length})),1)],64)):h(``,!0),T(J).size>0?(_(),m(f,{key:3},[r[29]||=S(`span`,{class:`text-muted-foreground/50 mx-0.5`},`·`,-1),S(`span`,null,p(T(t)(`quickSetup.footer.rules`,{count:T(J).size})),1)],64)):h(``,!0)]),S(`div`,Ke,[l(T(b),{size:`sm`,variant:`outline`,onClick:yt},{default:C(()=>[g(p(T(t)(`quickSetup.footer.validate`)),1)]),_:1}),l(T(b),{size:`sm`,disabled:T(Y),onClick:T(ft)},{default:C(()=>[T(Y)?(_(),m(f,{key:0},[r[30]||=S(`svg`,{class:`w-3.5 h-3.5 mr-1 animate-spin`,fill:`none`,viewBox:`0 0 24 24`},[S(`circle`,{class:`opacity-25`,cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,"stroke-width":`4`}),S(`path`,{class:`opacity-75`,fill:`currentColor`,d:`M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z`})],-1),g(` `+p(T(t)(`quickSetup.footer.saving`)),1)],64)):(_(),m(f,{key:1},[g(p(T(t)(`quickSetup.footer.saveConfig`)),1)],64))]),_:1},8,[`disabled`,`onClick`])])])],64))}});export{Q as default};