@chenpu17/cc-gw 0.17.0 → 0.17.1

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 (54) hide show
  1. package/package.json +5 -5
  2. package/src/web/dist/assets/{About-D2m94wu2.js → About-DmIV-sHO.js} +1 -1
  3. package/src/web/dist/assets/{ApiKeys-Bt-otGF_.js → ApiKeys-BNr4zbD6.js} +1 -1
  4. package/src/web/dist/assets/{ConfirmDialog-CRSbmgE7.js → ConfirmDialog-_CIYYtzo.js} +1 -1
  5. package/src/web/dist/assets/{Dashboard-81qp43jm.js → Dashboard-Hg4OZNAc.js} +1 -1
  6. package/src/web/dist/assets/{DialogShell-DxWKa5oR.js → DialogShell-D1T4HXtd.js} +1 -1
  7. package/src/web/dist/assets/Events-CO2wWiEK.js +1 -0
  8. package/src/web/dist/assets/{Help-XaAZ__Kz.js → Help-CafNfXfx.js} +1 -1
  9. package/src/web/dist/assets/{Login-atwWPGzz.js → Login-C04-poiG.js} +1 -1
  10. package/src/web/dist/assets/Logs-CqaIXvR0.js +1 -0
  11. package/src/web/dist/assets/{PageSection-CC5EhfMe.js → PageSection-Dd2-9G6C.js} +1 -1
  12. package/src/web/dist/assets/{PageState-XybOeENt.js → PageState-Bbhr4fy6.js} +1 -1
  13. package/src/web/dist/assets/{PageToolbar-CnLp4aWt.js → PageToolbar-GyUQBhmq.js} +1 -1
  14. package/src/web/dist/assets/{ProvidersPage-CFCY2xSG.js → ProvidersPage-CHvyCANH.js} +1 -1
  15. package/src/web/dist/assets/{RoutingPage-35o5ZSMg.js → RoutingPage-fVr25VKF.js} +1 -1
  16. package/src/web/dist/assets/{Settings-DC1TPeS9.js → Settings-DfaIYHsa.js} +1 -1
  17. package/src/web/dist/assets/{Setup-CnQPVK9X.js → Setup-DUEpie5k.js} +1 -1
  18. package/src/web/dist/assets/{TargetCombobox-DkVdA04_.js → TargetCombobox-CSnHZqDY.js} +1 -1
  19. package/src/web/dist/assets/{apiKeys-CMk2nxB_.js → apiKeys-B5Os17Qm.js} +1 -1
  20. package/src/web/dist/assets/app-DZpd2fu9.js +61 -0
  21. package/src/web/dist/assets/{badge-eRkhnmCs.js → badge-CWbm9P64.js} +1 -1
  22. package/src/web/dist/assets/{chartTheme-Cx-0Jiew.js → chartTheme-ChTod603.js} +1 -1
  23. package/src/web/dist/assets/{charts-core-BOHudNiN.js → charts-core-BuoE1ECx.js} +1 -1
  24. package/src/web/dist/assets/{charts-engine-BhFpDbO0.js → charts-engine-DHIzBJl6.js} +1 -1
  25. package/src/web/dist/assets/{charts-react-CPWg-GRD.js → charts-react-BLOapElb.js} +1 -1
  26. package/src/web/dist/assets/{currency-Bx141-XL.js → currency-DffG4uWM.js} +2 -2
  27. package/src/web/dist/assets/{disclosure-CU-KJc8C.js → disclosure-W_XtxMJz.js} +1 -1
  28. package/src/web/dist/assets/{gateway-DyhqzHSh.js → gateway-DxaHzVOF.js} +1 -1
  29. package/src/web/dist/assets/{global-BLUcvOa8.js → global-BCYo_xAt.js} +1 -1
  30. package/src/web/dist/assets/global-CP6wBbWu.css +1 -0
  31. package/src/web/dist/assets/{i18n-v60Yn7Ls.js → i18n-ClvfZhYc.js} +1 -1
  32. package/src/web/dist/assets/{label-CdbE1ezd.js → label-09axTkPo.js} +1 -1
  33. package/src/web/dist/assets/{landing-BQdbaG8s.js → landing-BsX2AKvc.js} +3 -3
  34. package/src/web/dist/assets/{modelManagement-DwdbGu0o.js → modelManagement-Dc7L1tJw.js} +1 -1
  35. package/src/web/dist/assets/package-DgoCoO-z.js +1 -0
  36. package/src/web/dist/assets/{popover-CuM9b3U7.js → popover-CX5HRHKk.js} +1 -1
  37. package/src/web/dist/assets/{query-CvboQrUT.js → query-1Ng1fzmE.js} +1 -1
  38. package/src/web/dist/assets/{radix-d0BukFWM.js → radix-DONH6gHT.js} +1 -1
  39. package/src/web/dist/assets/{router-CqUBCAsx.js → router-Bkbjq53m.js} +1 -1
  40. package/src/web/dist/assets/{segmented-control-5mZhY1KZ.js → segmented-control-Cxe6ZLHe.js} +1 -1
  41. package/src/web/dist/assets/{shared-zfHsnBTk.js → shared-DG0AgdnU.js} +1 -1
  42. package/src/web/dist/assets/{switch-CZn1nypU.js → switch-C58zWdHT.js} +1 -1
  43. package/src/web/dist/assets/{tabs-CrNMQMmG.js → tabs-BIz291zK.js} +1 -1
  44. package/src/web/dist/assets/{useAppMutation-B29oVzxS.js → useAppMutation-CsoNTPQ7.js} +1 -1
  45. package/src/web/dist/assets/{useEventStream-DN2DYBVS.js → useEventStream-CvopQT4p.js} +1 -1
  46. package/src/web/dist/assets/{useProviderForm-DIuM3Z2u.js → useProviderForm-B_wmywxX.js} +1 -1
  47. package/src/web/dist/assets/{vendor-JUtelXU0.js → vendor-C-lQMZp3.js} +94 -84
  48. package/src/web/dist/index.html +14 -11
  49. package/src/web/dist/landing.html +5 -5
  50. package/src/web/dist/assets/Events-BQ4Dkqon.js +0 -1
  51. package/src/web/dist/assets/Logs-BYFIK_hM.js +0 -1
  52. package/src/web/dist/assets/app-CRxPj2SJ.js +0 -61
  53. package/src/web/dist/assets/global-BQq8O0Tv.css +0 -1
  54. package/src/web/dist/assets/package-Dmrvm3RO.js +0 -1
@@ -1,2 +1,2 @@
1
- import{j as e,a4 as Q,av as W,r as l}from"./vendor-JUtelXU0.js";import{B as g,t as S,L as ve,C as fe,l as ye,m as je,n as be,c as Ne}from"./app-CRxPj2SJ.js";import{c as K}from"./global-BLUcvOa8.js";import{L as N,I as P}from"./label-CdbE1ezd.js";import{u as Ce,E as Se}from"./shared-zfHsnBTk.js";import{u as C}from"./i18n-v60Yn7Ls.js";import{S as ke,a as Re,b as Ke,c as Pe,d as Te}from"./disclosure-CU-KJc8C.js";import{u as we,B as Me,M as Ie,T as Ae}from"./useProviderForm-DIuM3Z2u.js";import{C as Ee,u as He,g as Oe,m as Fe}from"./modelManagement-DwdbGu0o.js";import{a as Le}from"./apiKeys-CMk2nxB_.js";import{g as G}from"./gateway-DyhqzHSh.js";import{c as Ue}from"./clipboard-DqvcglYs.js";import{a as $e}from"./router-CqUBCAsx.js";import"./query-CvboQrUT.js";import"./radix-d0BukFWM.js";import"./switch-CZn1nypU.js";import"./badge-eRkhnmCs.js";const Be={complete:"border-foreground bg-foreground text-background",current:"border-foreground bg-card text-foreground ring-2 ring-foreground/15",error:"border-destructive bg-card text-destructive ring-2 ring-destructive/20",upcoming:"border-border bg-card text-muted-foreground"},De={complete:"text-foreground",current:"text-foreground font-medium",error:"text-destructive font-medium",upcoming:"text-muted-foreground"};function _e({steps:o,current:t,onSelect:n,className:r}){return e.jsx("nav",{"aria-label":"steps",className:K("flex items-start",r),children:o.map((s,d)=>{const m=n&&(s.status==="complete"||s.status==="current"),x=d===o.length-1,h=s.status==="complete"?"bg-foreground/30":"bg-border",u=e.jsx("span",{className:K("motion-surface flex h-7 w-7 shrink-0 items-center justify-center rounded-lg border text-xs font-semibold",Be[s.status]),"aria-current":s.id===t?"step":void 0,children:s.status==="complete"?e.jsx(Q,{className:"h-3.5 w-3.5","aria-hidden":!0}):d+1}),p=`stepnav-${s.id}-label`;return e.jsxs("div",{className:"flex flex-1 items-start",children:[e.jsxs("div",{className:"flex min-w-0 flex-col items-center gap-1.5",children:[m?e.jsx("button",{type:"button",onClick:()=>n==null?void 0:n(s.id),"aria-labelledby":p,className:"rounded-lg outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background motion-surface",children:u}):u,e.jsx("span",{id:p,className:K("text-center text-[11px] leading-tight",De[s.status]),children:s.label})]}),x?null:e.jsx("span",{"aria-hidden":!0,className:K("mx-1.5 mt-3.5 h-px flex-1",h)})]},s.id)})})}function Ve({state:o}){const{t}=C(),n=Ce(),{keyName:r,setKeyName:s,keyEndpoints:d,setKeyEndpoints:m,keyMaxConcurrency:x,setKeyMaxConcurrency:h,creatingKey:u,createdKey:p,createApiKey:v,copyCreatedKey:i}=o;return p?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"flex h-10 w-10 items-center justify-center rounded-lg bg-success-bg text-success",children:e.jsx(Q,{className:"h-5 w-5","aria-hidden":"true"})}),e.jsx("p",{className:"text-sm font-semibold",children:t("apiKeys.keyCreated")})]}),e.jsx("p",{className:"text-sm font-medium text-warning",children:t("apiKeys.saveKeyWarning")}),e.jsx("div",{className:"break-all rounded-lg border border-border bg-secondary px-4 py-3 font-mono text-sm",children:p.key}),e.jsx("div",{children:e.jsxs(g,{type:"button",variant:"outline",onClick:()=>void i(p.key),children:[e.jsx(W,{className:"mr-2 h-4 w-4","aria-hidden":"true"}),t("common.actions.copy")]})})]}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(N,{htmlFor:"setupKeyName",children:[t("apiKeys.keyNamePlaceholder")," *"]}),e.jsx(P,{id:"setupKeyName",value:r,onChange:f=>s(f.target.value),placeholder:t("apiKeys.keyNamePlaceholder")})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:t("apiKeys.allowedEndpoints")}),e.jsx(Se,{available:n,selected:d,onChange:m,hint:t("apiKeys.selectEndpoints")})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"setupMaxConcurrency",children:t("apiKeys.maxConcurrency")}),e.jsx(P,{id:"setupMaxConcurrency",type:"number",min:"0",value:x,onChange:f=>h(f.target.value),placeholder:t("apiKeys.maxConcurrencyPlaceholder")}),e.jsx("p",{className:"text-xs text-muted-foreground",children:t("apiKeys.maxConcurrencyHelper")})]}),e.jsx("div",{className:"flex justify-end",children:e.jsx(g,{type:"button",onClick:()=>void v(),disabled:u||r.trim().length===0,children:t(u?"setup.steps.apiKey.creating":"setup.steps.apiKey.create")})})]})}function qe({existingProviderIds:o,saving:t,onSave:n}){const{t:r}=C(),s=we({mode:"create",existingProviderIds:o}),d={form:s.form,errors:s.errors,isCreate:!0,advancedOpen:s.advancedOpen,onAdvancedOpenChange:s.setAdvancedOpen,idInputRef:s.providerIdRef,onProviderIdChange:s.handleProviderIdChange,onFieldChange:s.handleFieldChange,onTypeChange:s.handleTypeChange,onAuthModeChange:s.handleAuthModeChange,onNonStreamViaStreamChange:s.handleProviderNonStreamViaStreamChange,onUseAbsoluteUrlChange:s.handleUseAbsoluteUrlChange,onStreamUsageChange:s.handleStreamUsageChange,onAddHeader:s.handleAddHeader,onRemoveHeader:s.handleRemoveHeader,onHeaderChange:s.handleHeaderChange,onModelIdChange:s.handleModelIdChange,onModelChange:s.handleModelChange,onAddModel:s.handleAddModel,onRemoveModel:s.handleRemoveModel,onModelNonStreamViaStreamChange:s.handleModelNonStreamViaStreamChange,onSetDefaultModel:s.handleSetDefaultModel},m=()=>{s.validate()&&n(s.serialize())};return e.jsxs("div",{className:"space-y-8",children:[e.jsx(Me,{...d}),e.jsx(Ie,{...d}),e.jsx("div",{className:"flex justify-end",children:e.jsx(g,{type:"button",onClick:m,disabled:t,children:r(t?"common.actions.saving":"setup.steps.provider.saveAndContinue")})})]})}function ze({state:o,onSaved:t}){const{t:n}=C(),{providers:r,setupProvider:s,setSetupProviderId:d,savingProvider:m,saveProvider:x}=o,[h,u]=l.useState(null),p=h??r.length===0,v=i=>{x(i).then(f=>{f&&t()})};return e.jsxs("div",{className:"space-y-6",children:[r.length>0?e.jsxs("div",{className:"space-y-3 rounded-xl bg-secondary/50 p-4",children:[e.jsx("p",{className:"text-sm font-semibold",children:n("setup.steps.provider.existingTitle",{count:r.length})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:n("setup.steps.provider.existingHint")}),e.jsxs(N,{className:"flex flex-col gap-2 text-sm",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:n("setup.steps.provider.chooseLabel")}),e.jsxs(ke,{value:(s==null?void 0:s.id)??"",onValueChange:d,children:[e.jsx(Re,{children:e.jsx(Ke,{})}),e.jsx(Pe,{children:r.map(i=>e.jsx(Te,{value:i.id,children:i.label||i.id},i.id))})]})]})]}):null,p?e.jsx(qe,{existingProviderIds:r.map(i=>i.id),saving:m,onSave:v}):e.jsx("div",{children:e.jsx(g,{type:"button",variant:"outline",onClick:()=>u(!0),children:n("setup.steps.provider.addAnother")})}),p&&r.length>0?e.jsx("div",{children:e.jsx(g,{type:"button",variant:"ghost",size:"sm",onClick:()=>u(!1),children:n("setup.steps.provider.backToList")})}):null]})}const Ge=Ee.slice(0,3);function Qe({state:o}){const{t}=C(),{setupProvider:n,anthropicRoutes:r,routeSource:s,setRouteSource:d,routeTarget:m,setRouteTarget:x,savingRoute:h,saveDefaultRoute:u}=o,p=Object.entries(r),v=!!n&&s.trim().length>0&&m.trim().length>0&&!h;return e.jsxs("div",{className:"space-y-6",children:[p.length>0?e.jsxs("section",{className:"space-y-3","aria-labelledby":"setup-existing-routes",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("h3",{id:"setup-existing-routes",className:"text-sm font-semibold",children:t("setup.steps.routing.existingTitle")}),e.jsx("p",{className:"text-xs text-muted-foreground",children:t("setup.steps.routing.existingHint")})]}),e.jsx("div",{className:"divide-y divide-border rounded-xl border border-border",children:p.map(([i,f])=>e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 px-4 py-2.5 text-xs",children:[e.jsx("code",{className:"font-mono text-foreground",children:i}),e.jsxs("code",{className:"font-mono text-muted-foreground",children:["→ ",f]})]},i))})]}):e.jsx("p",{className:"rounded-xl bg-secondary/50 px-4 py-3 text-xs text-muted-foreground",children:t("setup.steps.routing.emptyHint")}),e.jsxs("section",{className:"space-y-4","aria-labelledby":"setup-new-route",children:[e.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs(N,{className:"flex flex-col gap-2 text-sm",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:t("setup.steps.routing.sourceLabel")}),e.jsx(P,{value:s,onChange:i=>d(i.target.value)})]}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:Ge.map(i=>e.jsx(g,{type:"button",variant:"outline",size:"sm",className:"h-7 rounded-md px-2.5 text-[11px] font-normal",onClick:()=>d(i),children:i},i))}),e.jsx("p",{className:"text-xs leading-5 text-muted-foreground",children:t("setup.steps.routing.sourceHint")})]}),e.jsxs(N,{className:"flex flex-col gap-2 text-sm",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:t("setup.steps.routing.targetLabel")}),e.jsx(P,{value:m,onChange:i=>x(i.target.value)})]})]}),e.jsx("div",{className:"flex justify-end",children:e.jsx(g,{type:"button",onClick:()=>void u(),disabled:!v,children:t(h?"setup.steps.routing.saving":"setup.steps.routing.save")})})]})]})}function We({state:o}){const{t}=C(),{setupProvider:n,testingProvider:r,testResult:s,testSetupProvider:d,anthropicBaseUrl:m,createdKey:x,copyCreatedKey:h}=o;if(!n)return e.jsx("p",{className:"rounded-xl bg-secondary/50 px-4 py-3 text-xs text-muted-foreground",children:t("setup.steps.verify.noProvider")});const u=[`export ANTHROPIC_BASE_URL=${m}`,`export ANTHROPIC_API_KEY=${(x==null?void 0:x.key)??"<your-api-key>"}`].join(`
1
+ import{j as e,a4 as Q,ay as W,r as l}from"./vendor-C-lQMZp3.js";import{B as g,t as S,L as ve,C as fe,l as ye,m as je,n as be,c as Ne}from"./app-DZpd2fu9.js";import{c as K}from"./global-BCYo_xAt.js";import{L as N,I as P}from"./label-09axTkPo.js";import{u as Ce,E as Se}from"./shared-DG0AgdnU.js";import{u as C}from"./i18n-ClvfZhYc.js";import{S as ke,a as Re,b as Ke,c as Pe,d as Te}from"./disclosure-W_XtxMJz.js";import{u as we,B as Me,M as Ie,T as Ae}from"./useProviderForm-B_wmywxX.js";import{C as Ee,u as He,g as Oe,m as Fe}from"./modelManagement-Dc7L1tJw.js";import{a as Le}from"./apiKeys-B5Os17Qm.js";import{g as G}from"./gateway-DxaHzVOF.js";import{c as Ue}from"./clipboard-DqvcglYs.js";import{a as $e}from"./router-Bkbjq53m.js";import"./query-1Ng1fzmE.js";import"./radix-DONH6gHT.js";import"./switch-C58zWdHT.js";import"./badge-CWbm9P64.js";const Be={complete:"border-foreground bg-foreground text-background",current:"border-foreground bg-card text-foreground ring-2 ring-foreground/15",error:"border-destructive bg-card text-destructive ring-2 ring-destructive/20",upcoming:"border-border bg-card text-muted-foreground"},De={complete:"text-foreground",current:"text-foreground font-medium",error:"text-destructive font-medium",upcoming:"text-muted-foreground"};function _e({steps:o,current:t,onSelect:n,className:r}){return e.jsx("nav",{"aria-label":"steps",className:K("flex items-start",r),children:o.map((s,d)=>{const m=n&&(s.status==="complete"||s.status==="current"),x=d===o.length-1,h=s.status==="complete"?"bg-foreground/30":"bg-border",u=e.jsx("span",{className:K("motion-surface flex h-7 w-7 shrink-0 items-center justify-center rounded-lg border text-xs font-semibold",Be[s.status]),"aria-current":s.id===t?"step":void 0,children:s.status==="complete"?e.jsx(Q,{className:"h-3.5 w-3.5","aria-hidden":!0}):d+1}),p=`stepnav-${s.id}-label`;return e.jsxs("div",{className:"flex flex-1 items-start",children:[e.jsxs("div",{className:"flex min-w-0 flex-col items-center gap-1.5",children:[m?e.jsx("button",{type:"button",onClick:()=>n==null?void 0:n(s.id),"aria-labelledby":p,className:"rounded-lg outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background motion-surface",children:u}):u,e.jsx("span",{id:p,className:K("text-center text-[11px] leading-tight",De[s.status]),children:s.label})]}),x?null:e.jsx("span",{"aria-hidden":!0,className:K("mx-1.5 mt-3.5 h-px flex-1",h)})]},s.id)})})}function Ve({state:o}){const{t}=C(),n=Ce(),{keyName:r,setKeyName:s,keyEndpoints:d,setKeyEndpoints:m,keyMaxConcurrency:x,setKeyMaxConcurrency:h,creatingKey:u,createdKey:p,createApiKey:v,copyCreatedKey:i}=o;return p?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"flex h-10 w-10 items-center justify-center rounded-lg bg-success-bg text-success",children:e.jsx(Q,{className:"h-5 w-5","aria-hidden":"true"})}),e.jsx("p",{className:"text-sm font-semibold",children:t("apiKeys.keyCreated")})]}),e.jsx("p",{className:"text-sm font-medium text-warning",children:t("apiKeys.saveKeyWarning")}),e.jsx("div",{className:"break-all rounded-lg border border-border bg-secondary px-4 py-3 font-mono text-sm",children:p.key}),e.jsx("div",{children:e.jsxs(g,{type:"button",variant:"outline",onClick:()=>void i(p.key),children:[e.jsx(W,{className:"mr-2 h-4 w-4","aria-hidden":"true"}),t("common.actions.copy")]})})]}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(N,{htmlFor:"setupKeyName",children:[t("apiKeys.keyNamePlaceholder")," *"]}),e.jsx(P,{id:"setupKeyName",value:r,onChange:f=>s(f.target.value),placeholder:t("apiKeys.keyNamePlaceholder")})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:t("apiKeys.allowedEndpoints")}),e.jsx(Se,{available:n,selected:d,onChange:m,hint:t("apiKeys.selectEndpoints")})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"setupMaxConcurrency",children:t("apiKeys.maxConcurrency")}),e.jsx(P,{id:"setupMaxConcurrency",type:"number",min:"0",value:x,onChange:f=>h(f.target.value),placeholder:t("apiKeys.maxConcurrencyPlaceholder")}),e.jsx("p",{className:"text-xs text-muted-foreground",children:t("apiKeys.maxConcurrencyHelper")})]}),e.jsx("div",{className:"flex justify-end",children:e.jsx(g,{type:"button",onClick:()=>void v(),disabled:u||r.trim().length===0,children:t(u?"setup.steps.apiKey.creating":"setup.steps.apiKey.create")})})]})}function qe({existingProviderIds:o,saving:t,onSave:n}){const{t:r}=C(),s=we({mode:"create",existingProviderIds:o}),d={form:s.form,errors:s.errors,isCreate:!0,advancedOpen:s.advancedOpen,onAdvancedOpenChange:s.setAdvancedOpen,idInputRef:s.providerIdRef,onProviderIdChange:s.handleProviderIdChange,onFieldChange:s.handleFieldChange,onTypeChange:s.handleTypeChange,onAuthModeChange:s.handleAuthModeChange,onNonStreamViaStreamChange:s.handleProviderNonStreamViaStreamChange,onUseAbsoluteUrlChange:s.handleUseAbsoluteUrlChange,onStreamUsageChange:s.handleStreamUsageChange,onAddHeader:s.handleAddHeader,onRemoveHeader:s.handleRemoveHeader,onHeaderChange:s.handleHeaderChange,onModelIdChange:s.handleModelIdChange,onModelChange:s.handleModelChange,onAddModel:s.handleAddModel,onRemoveModel:s.handleRemoveModel,onModelNonStreamViaStreamChange:s.handleModelNonStreamViaStreamChange,onSetDefaultModel:s.handleSetDefaultModel},m=()=>{s.validate()&&n(s.serialize())};return e.jsxs("div",{className:"space-y-8",children:[e.jsx(Me,{...d}),e.jsx(Ie,{...d}),e.jsx("div",{className:"flex justify-end",children:e.jsx(g,{type:"button",onClick:m,disabled:t,children:r(t?"common.actions.saving":"setup.steps.provider.saveAndContinue")})})]})}function ze({state:o,onSaved:t}){const{t:n}=C(),{providers:r,setupProvider:s,setSetupProviderId:d,savingProvider:m,saveProvider:x}=o,[h,u]=l.useState(null),p=h??r.length===0,v=i=>{x(i).then(f=>{f&&t()})};return e.jsxs("div",{className:"space-y-6",children:[r.length>0?e.jsxs("div",{className:"space-y-3 rounded-xl bg-secondary/50 p-4",children:[e.jsx("p",{className:"text-sm font-semibold",children:n("setup.steps.provider.existingTitle",{count:r.length})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:n("setup.steps.provider.existingHint")}),e.jsxs(N,{className:"flex flex-col gap-2 text-sm",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:n("setup.steps.provider.chooseLabel")}),e.jsxs(ke,{value:(s==null?void 0:s.id)??"",onValueChange:d,children:[e.jsx(Re,{children:e.jsx(Ke,{})}),e.jsx(Pe,{children:r.map(i=>e.jsx(Te,{value:i.id,children:i.label||i.id},i.id))})]})]})]}):null,p?e.jsx(qe,{existingProviderIds:r.map(i=>i.id),saving:m,onSave:v}):e.jsx("div",{children:e.jsx(g,{type:"button",variant:"outline",onClick:()=>u(!0),children:n("setup.steps.provider.addAnother")})}),p&&r.length>0?e.jsx("div",{children:e.jsx(g,{type:"button",variant:"ghost",size:"sm",onClick:()=>u(!1),children:n("setup.steps.provider.backToList")})}):null]})}const Ge=Ee.slice(0,3);function Qe({state:o}){const{t}=C(),{setupProvider:n,anthropicRoutes:r,routeSource:s,setRouteSource:d,routeTarget:m,setRouteTarget:x,savingRoute:h,saveDefaultRoute:u}=o,p=Object.entries(r),v=!!n&&s.trim().length>0&&m.trim().length>0&&!h;return e.jsxs("div",{className:"space-y-6",children:[p.length>0?e.jsxs("section",{className:"space-y-3","aria-labelledby":"setup-existing-routes",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("h3",{id:"setup-existing-routes",className:"text-sm font-semibold",children:t("setup.steps.routing.existingTitle")}),e.jsx("p",{className:"text-xs text-muted-foreground",children:t("setup.steps.routing.existingHint")})]}),e.jsx("div",{className:"divide-y divide-border rounded-xl border border-border",children:p.map(([i,f])=>e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 px-4 py-2.5 text-xs",children:[e.jsx("code",{className:"font-mono text-foreground",children:i}),e.jsxs("code",{className:"font-mono text-muted-foreground",children:["→ ",f]})]},i))})]}):e.jsx("p",{className:"rounded-xl bg-secondary/50 px-4 py-3 text-xs text-muted-foreground",children:t("setup.steps.routing.emptyHint")}),e.jsxs("section",{className:"space-y-4","aria-labelledby":"setup-new-route",children:[e.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs(N,{className:"flex flex-col gap-2 text-sm",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:t("setup.steps.routing.sourceLabel")}),e.jsx(P,{value:s,onChange:i=>d(i.target.value)})]}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:Ge.map(i=>e.jsx(g,{type:"button",variant:"outline",size:"sm",className:"h-7 rounded-md px-2.5 text-[11px] font-normal",onClick:()=>d(i),children:i},i))}),e.jsx("p",{className:"text-xs leading-5 text-muted-foreground",children:t("setup.steps.routing.sourceHint")})]}),e.jsxs(N,{className:"flex flex-col gap-2 text-sm",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:t("setup.steps.routing.targetLabel")}),e.jsx(P,{value:m,onChange:i=>x(i.target.value)})]})]}),e.jsx("div",{className:"flex justify-end",children:e.jsx(g,{type:"button",onClick:()=>void u(),disabled:!v,children:t(h?"setup.steps.routing.saving":"setup.steps.routing.save")})})]})]})}function We({state:o}){const{t}=C(),{setupProvider:n,testingProvider:r,testResult:s,testSetupProvider:d,anthropicBaseUrl:m,createdKey:x,copyCreatedKey:h}=o;if(!n)return e.jsx("p",{className:"rounded-xl bg-secondary/50 px-4 py-3 text-xs text-muted-foreground",children:t("setup.steps.verify.noProvider")});const u=[`export ANTHROPIC_BASE_URL=${m}`,`export ANTHROPIC_API_KEY=${(x==null?void 0:x.key)??"<your-api-key>"}`].join(`
2
2
  `);return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("section",{className:"space-y-3","aria-labelledby":"setup-verify-connection",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("h3",{id:"setup-verify-connection",className:"text-sm font-semibold",children:t("workbench.drawer.verifyTitle")}),e.jsx("p",{className:"text-xs text-muted-foreground",children:t("setup.steps.verify.testingProvider",{name:n.label||n.id})})]}),e.jsxs("div",{className:"space-y-3 rounded-xl border border-transparent bg-card p-4 shadow-[var(--surface-shadow)]",children:[e.jsx(g,{type:"button",variant:"outline",size:"sm",onClick:()=>void d(),disabled:r,children:t(r?"common.actions.testingConnection":"workbench.drawer.verifyRun")}),s?e.jsx(Ae,{result:s}):null]})]}),e.jsxs("section",{className:"space-y-3","aria-labelledby":"setup-verify-first-request",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("h3",{id:"setup-verify-first-request",className:"text-sm font-semibold",children:t("setup.steps.verify.envTitle")}),e.jsx("p",{className:"text-xs text-muted-foreground",children:t("setup.steps.verify.envHint")})]}),e.jsx("pre",{className:"overflow-x-auto rounded-lg border border-border bg-secondary px-4 py-3 font-mono text-xs",children:u}),e.jsx("div",{children:e.jsxs(g,{type:"button",variant:"outline",size:"sm",onClick:()=>void h(u),children:[e.jsx(W,{className:"mr-2 h-4 w-4","aria-hidden":"true"}),t("common.actions.copy")]})})]})]})}const k=["provider","routing","apiKey","verify"];function Ye(){var D;const o=He(),{t,pushToast:n,config:r,setConfig:s,configQuery:d,customEndpoints:m,ensureConfig:x}=o,h=$e(),[u,p]=l.useState(0),[v,i]=l.useState(null),[f,A]=l.useState(!1),[E,Y]=l.useState(""),[J,X]=l.useState(null),[Z,H]=l.useState(!1),[T,ee]=l.useState(""),[w,te]=l.useState(["anthropic"]),[O,se]=l.useState(""),[re,F]=l.useState(!1),[L,ae]=l.useState(null),[ne,U]=l.useState(!1),[oe,M]=l.useState(null),b=l.useMemo(()=>(r==null?void 0:r.providers)??[],[r]),y=l.useMemo(()=>b.find(a=>a.id===v)??b[0]??null,[b,v]),I=l.useMemo(()=>r?Oe(r,m,"anthropic"):{},[r,m]),$=Object.keys(I).length,ie=l.useMemo(()=>{var c,j;if(!y)return"";const a=y.defaultModel??((j=(c=y.models)==null?void 0:c.find(R=>R.id.trim().length>0))==null?void 0:j.id);return a?`${y.id}:${a}`:`${y.id}:*`},[y]),B=J??ie,ce=async a=>{if(!r||!x())return!1;const c={...r,providers:[...b,a]};A(!0);try{return await G.saveConfig(c),s(c),d.refetch(),i(a.id),n({title:t("providers.toast.createSuccess",{name:a.label||a.id}),variant:"success"}),!0}catch(j){return n({title:t("providers.drawer.toast.saveFailure",{message:S(j).message}),variant:"error"}),!1}finally{A(!1)}},de=async()=>{var _,V,q,z;if(!r||!x())return;const a=E.trim(),c=B.trim();if(!a||!c)return;const j={...I,[a]:c},R={...r,endpointRouting:{...r.endpointRouting??{},anthropic:{defaults:((V=(_=r.endpointRouting)==null?void 0:_.anthropic)==null?void 0:V.defaults)??r.defaults,modelRoutes:j,compatibility:(z=(q=r.endpointRouting)==null?void 0:q.anthropic)==null?void 0:z.compatibility}},modelRoutes:j};H(!0);try{await G.saveConfig(R),s(R),d.refetch(),n({title:t("modelManagement.toast.routesSaved"),variant:"success"})}catch(ge){n({title:t("modelManagement.toast.routesSaveFailure",{message:S(ge).message}),variant:"error"})}finally{H(!1)}},le=async()=>{if(!T.trim()){n({title:t("apiKeys.errors.nameRequired"),variant:"error"});return}const a=O.trim();if(a&&(!Number.isInteger(Number(a))||Number(a)<0)){n({title:t("apiKeys.errors.maxConcurrencyInvalid"),variant:"error"});return}F(!0);try{const c=await Le.create({name:T.trim(),allowedEndpoints:w.length>0?w:void 0,maxConcurrency:Number(a)>0?Number(a):null});ae(c)}catch(c){const j=S(c);n({title:t("setup.steps.apiKey.createFailed",{message:j.message}),variant:"error"})}finally{F(!1)}},ue=async a=>{try{await Ue(a),n({title:t("apiKeys.toast.keyCopied"),variant:"success"})}catch(c){n({title:t("apiKeys.toast.copyFailure"),description:S(c).message,variant:"error"})}},pe=async()=>{if(y){U(!0);try{const a=await Fe.testProvider(y.id);if(a.ok){M({ok:!0,status:a.status,statusText:a.statusText,durationMs:a.durationMs,testedAt:Date.now()});return}M({ok:!1,status:a.status,statusText:a.statusText,durationMs:a.durationMs,message:`${a.status} ${a.statusText}`,testedAt:Date.now()})}catch(a){const c=S(a);M({ok:!1,status:c.status,message:c.status?`${c.status} ${c.message}`:c.message,testedAt:Date.now()})}finally{U(!1)}}},me=`http://127.0.0.1:${((D=r==null?void 0:r.http)==null?void 0:D.port)??(r==null?void 0:r.port)??4100}/anthropic`,xe=k[u],he={provider:b.length>0,routing:$>0,apiKey:L!==null,verify:!0};return{...o,stepIndex:u,activeStep:xe,canProceed:he,goNext:()=>{p(a=>Math.min(a+1,k.length-1))},goBack:()=>{p(a=>Math.max(a-1,0))},goToStep:a=>{const c=k.indexOf(a);c>=0&&c<=u&&p(c)},finish:()=>{h("/")},providers:b,setupProvider:y,setupProviderId:v,setSetupProviderId:i,savingProvider:f,saveProvider:ce,anthropicRoutes:I,anthropicRouteCount:$,routeSource:E,setRouteSource:Y,routeTarget:B,setRouteTarget:X,savingRoute:Z,saveDefaultRoute:de,keyName:T,setKeyName:ee,keyEndpoints:w,setKeyEndpoints:te,keyMaxConcurrency:O,setKeyMaxConcurrency:se,creatingKey:re,createdKey:L,createApiKey:le,copyCreatedKey:ue,testingProvider:ne,testResult:oe,testSetupProvider:pe,anthropicBaseUrl:me}}function yt(){const{t:o}=C(),t=Ye();if(t.configQuery.isPending&&!t.config)return e.jsx(ve,{});const n=k.map((s,d)=>({id:s,label:o(`setup.steps.${s}.navLabel`),status:d<t.stepIndex?"complete":d===t.stepIndex?"current":"upcoming"})),r=t.stepIndex===k.length-1;return e.jsxs("div",{className:"mx-auto flex w-full max-w-3xl flex-col gap-6",children:[e.jsxs("header",{className:"space-y-1.5",children:[e.jsx("h1",{className:"text-xl font-semibold tracking-[-0.02em]",children:o("setup.title")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:o("setup.description")})]}),e.jsx(_e,{steps:n,current:t.activeStep,onSelect:t.goToStep}),e.jsxs(fe,{children:[e.jsxs(ye,{children:[e.jsx(je,{children:o(`setup.steps.${t.activeStep}.title`)}),e.jsx(be,{children:o(`setup.steps.${t.activeStep}.description`)})]}),e.jsxs(Ne,{children:[t.activeStep==="provider"?e.jsx(ze,{state:t,onSaved:t.goNext}):null,t.activeStep==="routing"?e.jsx(Qe,{state:t}):null,t.activeStep==="apiKey"?e.jsx(Ve,{state:t}):null,t.activeStep==="verify"?e.jsx(We,{state:t}):null]})]}),e.jsxs("footer",{className:"flex items-center justify-between",children:[e.jsx(g,{type:"button",variant:"outline",onClick:t.goBack,disabled:t.stepIndex===0,children:o("common.actions.previous")}),r?e.jsx(g,{type:"button",onClick:t.finish,children:o("setup.actions.finish")}):e.jsx(g,{type:"button",onClick:t.goNext,disabled:!t.canProceed[t.activeStep],children:o("common.actions.next")})]})]})}export{yt as default};
@@ -1 +1 @@
1
- import{r as l,j as s,a3 as J}from"./vendor-JUtelXU0.js";import{P as Q,c as U,b as V}from"./popover-CuM9b3U7.js";import{I as S}from"./label-CdbE1ezd.js";import{B}from"./badge-eRkhnmCs.js";import{a as W,s as X}from"./app-CRxPj2SJ.js";import{c as h}from"./global-BLUcvOa8.js";import{u as Y}from"./i18n-v60Yn7Ls.js";const P=3;function oe({value:v,onChange:C,options:c,disabled:F,placeholder:G,ariaLabel:A}){const{t:a}=Y(),I=l.useId(),[m,d]=l.useState(!1),[p,u]=l.useState(""),[$,L]=l.useState(null),R=l.useRef(null),f=l.useRef(!1),[g,K]=W(X.modelManagement.recentRouteTargets,[]),b=l.useMemo(()=>{const e=new Map;for(const t of c)e.set(t.value,t);return e},[c]),T=(e,t)=>t?[e.label,e.value,e.providerId??"",e.providerLabel??"",e.modelId??"",e.modelLabel??""].join(" ").toLowerCase().includes(t):!0,{providerGroups:H,customOptions:k}=l.useMemo(()=>{const e=new Map,t=[];for(const r of c){if(r.kind==="custom"||!r.providerId){t.push(r);continue}const o=`provider:${r.providerId}`,i=e.get(o);i?i.options.push(r):e.set(o,{key:o,label:r.providerLabel??r.providerId,options:[r]})}return{providerGroups:[...e.values()],customOptions:t}},[c]),y=p.trim().length>0,E=l.useMemo(()=>{const e=p.trim().toLowerCase(),t=c.filter(n=>T(n,e)),r=g.map(n=>b.get(n)??(e?void 0:{value:n,label:n,kind:"custom"})).filter(n=>!!n).filter(n=>T(n,e)).slice(0,P),o=[];r.length>0&&o.push({key:"recent",label:a("modelManagement.targetPicker.recent"),options:r});const i=[],N=new Map;for(const n of t){if(n.kind==="custom"||!n.providerId){i.push(n);continue}const M=`provider:${n.providerId}`,D=N.get(M);D?D.options.push(n):N.set(M,{key:M,label:n.providerLabel??n.providerId,options:[n]})}return o.push(...N.values()),i.length>0&&o.push({key:"custom",label:a("modelManagement.targetPicker.custom"),options:i,muted:!0}),o},[b,c,g,p,a]),O=E.reduce((e,t)=>e+t.options.length,0),q=e=>{C(e),K(t=>[e,...t.filter(r=>r!==e)].slice(0,P)),u(""),f.current=!0,typeof document<"u"&&document.activeElement instanceof HTMLElement&&document.activeElement.blur(),d(!1),typeof window<"u"?window.requestAnimationFrame(()=>{f.current=!1}):f.current=!1},z=e=>e.kind==="passthrough"?a("modelManagement.targetPicker.passthrough"):e.kind==="custom"?a("modelManagement.targetPicker.customValue"):a("modelManagement.targetPicker.model"),_=e=>e.kind==="passthrough"||e.kind==="custom"?e.label:e.modelLabel??e.label,x=(e,t,r=!1)=>s.jsxs("button",{type:"button",role:"option","aria-selected":t.value===v.trim(),className:h("flex w-full min-w-0 items-center gap-2 rounded-lg px-3 py-2 text-left text-sm transition-colors hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",r&&"pl-7",t.value===v.trim()&&"bg-accent text-accent-foreground"),onMouseDown:o=>{o.preventDefault()},onClick:()=>q(t.value),children:[s.jsxs("span",{className:"min-w-0 flex-1",children:[s.jsx("span",{className:"block truncate font-medium",children:_(t)}),s.jsx("span",{className:"block truncate text-xs text-muted-foreground",children:t.value})]}),s.jsxs("span",{className:"flex shrink-0 items-center gap-1",children:[t.isDefault?s.jsx(B,{variant:"secondary",className:"text-[10px]",children:a("modelManagement.targetPicker.default")}):null,s.jsx(B,{variant:t.kind==="passthrough"?"outline":"secondary",className:"text-[10px]",children:z(t)})]})]},`${e.key}-${t.value}`),j=e=>s.jsxs("div",{className:h("sticky top-0 z-10 flex items-center justify-between bg-popover px-2 py-1 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",e.muted&&"opacity-80"),children:[s.jsx("span",{className:"truncate",children:e.label}),s.jsx("span",{children:e.options.length})]}),w=g.map(e=>b.get(e)??{value:e,label:e,kind:"custom"}).slice(0,P);return s.jsxs(Q,{open:m,onOpenChange:e=>{e&&f.current||(d(e),e&&(u(""),L(null)))},children:[s.jsx(U,{asChild:!0,children:s.jsx(S,{value:v,onChange:e=>{C(e.target.value),u(e.target.value),m||d(!0)},onFocus:()=>{u(""),d(!0)},onClick:()=>{m||d(!0)},placeholder:G,disabled:F,autoComplete:"off",role:"combobox","aria-label":A,"aria-expanded":m,"aria-controls":I,"aria-autocomplete":"list"})}),s.jsxs(V,{className:"flex max-h-[min(28rem,var(--radix-popover-content-available-height))] flex-col overflow-hidden rounded-xl border border-[color:var(--surface-border)] bg-popover p-0 shadow-[var(--surface-shadow-lg)]",style:{width:"max(var(--radix-popover-trigger-width), 360px)"},align:"start",onOpenAutoFocus:e=>{var t;e.preventDefault(),(t=R.current)==null||t.focus()},onCloseAutoFocus:e=>{e.preventDefault()},children:[s.jsxs("div",{className:"space-y-2 border-b border-border px-3 py-3",children:[s.jsx(S,{ref:R,value:p,onChange:e=>u(e.target.value),placeholder:a("modelManagement.targetPicker.searchPlaceholder"),className:"h-9",autoComplete:"off"}),s.jsx("div",{className:"text-xs text-muted-foreground",children:y?a("modelManagement.targetPicker.matchCount",{count:O}):a("modelManagement.targetPicker.helper")})]}),y&&O===0?s.jsx("div",{className:"px-3 py-4 text-center text-xs text-muted-foreground",children:a("common.noMatches")}):s.jsx("div",{id:I,role:"listbox",className:"min-h-0 flex-1 overflow-y-auto p-1.5",children:y?E.map(e=>s.jsxs("div",{className:"py-1",children:[j(e),s.jsx("div",{className:"space-y-1",children:e.options.map(t=>x(e,t))})]},e.key)):s.jsxs(s.Fragment,{children:[w.length>0?s.jsxs("div",{className:"py-1",children:[j({label:a("modelManagement.targetPicker.recent"),options:w}),s.jsx("div",{className:"space-y-1",children:w.map(e=>x({key:"recent"},e))})]}):null,s.jsx("div",{className:"py-1",children:H.map(e=>{const t=$===e.key;return s.jsxs("div",{children:[s.jsxs("button",{type:"button","aria-expanded":t,className:h("flex w-full min-w-0 items-center gap-2 rounded-lg px-3 py-2 text-left text-sm transition-colors hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",t&&"bg-accent text-accent-foreground"),onMouseDown:r=>{r.preventDefault()},onClick:()=>L(t?null:e.key),children:[s.jsx(J,{className:h("h-3.5 w-3.5 shrink-0 text-muted-foreground transition-transform",t&&"rotate-90"),"aria-hidden":!0}),s.jsx("span",{className:"min-w-0 flex-1 truncate font-medium",children:e.label}),s.jsx("span",{className:"shrink-0 text-xs tabular-nums text-muted-foreground",children:a("modelManagement.targetPicker.modelCount",{count:e.options.length})})]}),t?s.jsx("div",{className:"space-y-1 pb-1",children:e.options.map(r=>x(e,r,!0))}):null]},e.key)})}),k.length>0?s.jsxs("div",{className:"py-1",children:[j({label:a("modelManagement.targetPicker.custom"),options:k,muted:!0}),s.jsx("div",{className:"space-y-1",children:k.map(e=>x({key:"custom"},e))})]}):null]})})]})]})}export{oe as T};
1
+ import{r as l,j as s,a3 as J}from"./vendor-C-lQMZp3.js";import{P as Q,c as U,b as V}from"./popover-CX5HRHKk.js";import{I as S}from"./label-09axTkPo.js";import{B}from"./badge-CWbm9P64.js";import{a as W,s as X}from"./app-DZpd2fu9.js";import{c as h}from"./global-BCYo_xAt.js";import{u as Y}from"./i18n-ClvfZhYc.js";const P=3;function oe({value:v,onChange:C,options:c,disabled:F,placeholder:G,ariaLabel:A}){const{t:a}=Y(),I=l.useId(),[m,d]=l.useState(!1),[p,u]=l.useState(""),[$,L]=l.useState(null),R=l.useRef(null),f=l.useRef(!1),[g,K]=W(X.modelManagement.recentRouteTargets,[]),b=l.useMemo(()=>{const e=new Map;for(const t of c)e.set(t.value,t);return e},[c]),T=(e,t)=>t?[e.label,e.value,e.providerId??"",e.providerLabel??"",e.modelId??"",e.modelLabel??""].join(" ").toLowerCase().includes(t):!0,{providerGroups:H,customOptions:k}=l.useMemo(()=>{const e=new Map,t=[];for(const r of c){if(r.kind==="custom"||!r.providerId){t.push(r);continue}const o=`provider:${r.providerId}`,i=e.get(o);i?i.options.push(r):e.set(o,{key:o,label:r.providerLabel??r.providerId,options:[r]})}return{providerGroups:[...e.values()],customOptions:t}},[c]),y=p.trim().length>0,E=l.useMemo(()=>{const e=p.trim().toLowerCase(),t=c.filter(n=>T(n,e)),r=g.map(n=>b.get(n)??(e?void 0:{value:n,label:n,kind:"custom"})).filter(n=>!!n).filter(n=>T(n,e)).slice(0,P),o=[];r.length>0&&o.push({key:"recent",label:a("modelManagement.targetPicker.recent"),options:r});const i=[],N=new Map;for(const n of t){if(n.kind==="custom"||!n.providerId){i.push(n);continue}const M=`provider:${n.providerId}`,D=N.get(M);D?D.options.push(n):N.set(M,{key:M,label:n.providerLabel??n.providerId,options:[n]})}return o.push(...N.values()),i.length>0&&o.push({key:"custom",label:a("modelManagement.targetPicker.custom"),options:i,muted:!0}),o},[b,c,g,p,a]),O=E.reduce((e,t)=>e+t.options.length,0),q=e=>{C(e),K(t=>[e,...t.filter(r=>r!==e)].slice(0,P)),u(""),f.current=!0,typeof document<"u"&&document.activeElement instanceof HTMLElement&&document.activeElement.blur(),d(!1),typeof window<"u"?window.requestAnimationFrame(()=>{f.current=!1}):f.current=!1},z=e=>e.kind==="passthrough"?a("modelManagement.targetPicker.passthrough"):e.kind==="custom"?a("modelManagement.targetPicker.customValue"):a("modelManagement.targetPicker.model"),_=e=>e.kind==="passthrough"||e.kind==="custom"?e.label:e.modelLabel??e.label,x=(e,t,r=!1)=>s.jsxs("button",{type:"button",role:"option","aria-selected":t.value===v.trim(),className:h("flex w-full min-w-0 items-center gap-2 rounded-lg px-3 py-2 text-left text-sm transition-colors hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",r&&"pl-7",t.value===v.trim()&&"bg-accent text-accent-foreground"),onMouseDown:o=>{o.preventDefault()},onClick:()=>q(t.value),children:[s.jsxs("span",{className:"min-w-0 flex-1",children:[s.jsx("span",{className:"block truncate font-medium",children:_(t)}),s.jsx("span",{className:"block truncate text-xs text-muted-foreground",children:t.value})]}),s.jsxs("span",{className:"flex shrink-0 items-center gap-1",children:[t.isDefault?s.jsx(B,{variant:"secondary",className:"text-[10px]",children:a("modelManagement.targetPicker.default")}):null,s.jsx(B,{variant:t.kind==="passthrough"?"outline":"secondary",className:"text-[10px]",children:z(t)})]})]},`${e.key}-${t.value}`),j=e=>s.jsxs("div",{className:h("sticky top-0 z-10 flex items-center justify-between bg-popover px-2 py-1 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",e.muted&&"opacity-80"),children:[s.jsx("span",{className:"truncate",children:e.label}),s.jsx("span",{children:e.options.length})]}),w=g.map(e=>b.get(e)??{value:e,label:e,kind:"custom"}).slice(0,P);return s.jsxs(Q,{open:m,onOpenChange:e=>{e&&f.current||(d(e),e&&(u(""),L(null)))},children:[s.jsx(U,{asChild:!0,children:s.jsx(S,{value:v,onChange:e=>{C(e.target.value),u(e.target.value),m||d(!0)},onFocus:()=>{u(""),d(!0)},onClick:()=>{m||d(!0)},placeholder:G,disabled:F,autoComplete:"off",role:"combobox","aria-label":A,"aria-expanded":m,"aria-controls":I,"aria-autocomplete":"list"})}),s.jsxs(V,{className:"flex max-h-[min(28rem,var(--radix-popover-content-available-height))] flex-col overflow-hidden rounded-xl border border-[color:var(--surface-border)] bg-popover p-0 shadow-[var(--surface-shadow-lg)]",style:{width:"max(var(--radix-popover-trigger-width), 360px)"},align:"start",onOpenAutoFocus:e=>{var t;e.preventDefault(),(t=R.current)==null||t.focus()},onCloseAutoFocus:e=>{e.preventDefault()},children:[s.jsxs("div",{className:"space-y-2 border-b border-border px-3 py-3",children:[s.jsx(S,{ref:R,value:p,onChange:e=>u(e.target.value),placeholder:a("modelManagement.targetPicker.searchPlaceholder"),className:"h-9",autoComplete:"off"}),s.jsx("div",{className:"text-xs text-muted-foreground",children:y?a("modelManagement.targetPicker.matchCount",{count:O}):a("modelManagement.targetPicker.helper")})]}),y&&O===0?s.jsx("div",{className:"px-3 py-4 text-center text-xs text-muted-foreground",children:a("common.noMatches")}):s.jsx("div",{id:I,role:"listbox",className:"min-h-0 flex-1 overflow-y-auto p-1.5",children:y?E.map(e=>s.jsxs("div",{className:"py-1",children:[j(e),s.jsx("div",{className:"space-y-1",children:e.options.map(t=>x(e,t))})]},e.key)):s.jsxs(s.Fragment,{children:[w.length>0?s.jsxs("div",{className:"py-1",children:[j({label:a("modelManagement.targetPicker.recent"),options:w}),s.jsx("div",{className:"space-y-1",children:w.map(e=>x({key:"recent"},e))})]}):null,s.jsx("div",{className:"py-1",children:H.map(e=>{const t=$===e.key;return s.jsxs("div",{children:[s.jsxs("button",{type:"button","aria-expanded":t,className:h("flex w-full min-w-0 items-center gap-2 rounded-lg px-3 py-2 text-left text-sm transition-colors hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",t&&"bg-accent text-accent-foreground"),onMouseDown:r=>{r.preventDefault()},onClick:()=>L(t?null:e.key),children:[s.jsx(J,{className:h("h-3.5 w-3.5 shrink-0 text-muted-foreground transition-transform",t&&"rotate-90"),"aria-hidden":!0}),s.jsx("span",{className:"min-w-0 flex-1 truncate font-medium",children:e.label}),s.jsx("span",{className:"shrink-0 text-xs tabular-nums text-muted-foreground",children:a("modelManagement.targetPicker.modelCount",{count:e.options.length})})]}),t?s.jsx("div",{className:"space-y-1 pb-1",children:e.options.map(r=>x(e,r,!0))}):null]},e.key)})}),k.length>0?s.jsxs("div",{className:"py-1",children:[j({label:a("modelManagement.targetPicker.custom"),options:k,muted:!0}),s.jsx("div",{className:"space-y-1",children:k.map(e=>x({key:"custom"},e))})]}):null]})})]})]})}export{oe as T};
@@ -1 +1 @@
1
- import{r as p,e as s,d as t}from"./app-CRxPj2SJ.js";const u={listRequest(){return{url:"/api/keys",method:"GET"}},overviewRequest(e){return{url:"/api/stats/api-keys/overview",method:"GET",params:{days:e}}},usageRequest(e,a=10,r){return{url:"/api/stats/api-keys/usage",method:"GET",params:{days:e,limit:a,...r?{endpoint:r}:{}}}},customEndpointOptionsRequest(){return{url:"/api/custom-endpoints",method:"GET"}},create:async e=>s(t.post("/api/keys",e)),update:async(e,a)=>{await s(t.patch(`/api/keys/${e}`,a))},delete:async e=>{await s(t.delete(`/api/keys/${e}`))},reveal:async e=>p({url:`/api/keys/${e}/reveal`,method:"GET"})};export{u as a};
1
+ import{r as p,e as s,d as t}from"./app-DZpd2fu9.js";const u={listRequest(){return{url:"/api/keys",method:"GET"}},overviewRequest(e){return{url:"/api/stats/api-keys/overview",method:"GET",params:{days:e}}},usageRequest(e,a=10,r){return{url:"/api/stats/api-keys/usage",method:"GET",params:{days:e,limit:a,...r?{endpoint:r}:{}}}},customEndpointOptionsRequest(){return{url:"/api/custom-endpoints",method:"GET"}},create:async e=>s(t.post("/api/keys",e)),update:async(e,a)=>{await s(t.patch(`/api/keys/${e}`,a))},delete:async e=>{await s(t.delete(`/api/keys/${e}`))},reveal:async e=>p({url:`/api/keys/${e}/reveal`,method:"GET"})};export{u as a};