@chenpu17/cc-gw 0.8.29 → 0.8.30

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 (84) hide show
  1. package/package.json +5 -5
  2. package/src/cli/dist/index.js +15 -1
  3. package/src/web/dist/assets/About-CGQXnQXw.js +1 -0
  4. package/src/web/dist/assets/ApiKeys-Cse0CWpH.js +1 -0
  5. package/src/web/dist/assets/{ConfirmDialog-BYuZwgWC.js → ConfirmDialog-VrbumD7j.js} +1 -1
  6. package/src/web/dist/assets/Dashboard-CtOgjfmM.js +1 -0
  7. package/src/web/dist/assets/{DialogShell-C0YGDw-Y.js → DialogShell-TRFN3c58.js} +1 -1
  8. package/src/web/dist/assets/EChart-CZqGiync.js +1 -0
  9. package/src/web/dist/assets/Events-C14a-qPg.js +1 -0
  10. package/src/web/dist/assets/Help-BiuR792b.js +4 -0
  11. package/src/web/dist/assets/Login-B-xiAusP.js +1 -0
  12. package/src/web/dist/assets/Logs-oNopHEDO.js +1 -0
  13. package/src/web/dist/assets/PageSection-D1vbxAKK.js +1 -0
  14. package/src/web/dist/assets/{PageState-B8pYAtQ5.js → PageState-CPKqNFG7.js} +1 -1
  15. package/src/web/dist/assets/{PageToolbar-DATSQ0uI.js → PageToolbar-DzpjQ7SY.js} +1 -1
  16. package/src/web/dist/assets/ProvidersWorkbench-B5g4UvTf.js +1 -0
  17. package/src/web/dist/assets/Settings-CPpQt_UL.js +1 -0
  18. package/src/web/dist/assets/Setup-DNJ1W4sK.js +2 -0
  19. package/src/web/dist/assets/apiKeys-Dl_vgy_U.js +1 -0
  20. package/src/web/dist/assets/app-CeLCVbqy.js +61 -0
  21. package/src/web/dist/assets/card-DS9KKz-k.js +1 -0
  22. package/src/web/dist/assets/{charts-core-CK8TVJro.js → charts-core-CAVUzIcU.js} +1 -1
  23. package/src/web/dist/assets/{charts-engine-CWjgwbj5.js → charts-engine-BRCKiVl4.js} +1 -1
  24. package/src/web/dist/assets/{charts-react-CmmN-08P.js → charts-react-B-D6Gq0w.js} +1 -1
  25. package/src/web/dist/assets/disclosure-CqU8C-ET.js +1 -0
  26. package/src/web/dist/assets/{gateway-DhxavTUf.js → gateway-Bt6lPuXq.js} +1 -1
  27. package/src/web/dist/assets/global-B1Xg1dWA.css +1 -0
  28. package/src/web/dist/assets/{global-DA-0y145.js → global-zt8jbW7F.js} +1 -1
  29. package/src/web/dist/assets/{i18n-C8tBby0x.js → i18n-DWfLgqoF.js} +1 -1
  30. package/src/web/dist/assets/label-CWq3wWgE.js +1 -0
  31. package/src/web/dist/assets/landing-D6Ek28oa.js +17 -0
  32. package/src/web/dist/assets/metric-card-CueQ0u3Z.js +1 -0
  33. package/src/web/dist/assets/package-CdOrNWtP.js +1 -0
  34. package/src/web/dist/assets/popover-0fHMO-3Y.js +1 -0
  35. package/src/web/dist/assets/{query-QCek5MsK.js → query-CZuclkQv.js} +1 -1
  36. package/src/web/dist/assets/queryKeys-BlGm18Nk.js +1 -0
  37. package/src/web/dist/assets/radix-OaJStcH-.js +5 -0
  38. package/src/web/dist/assets/router-C1-ppOz7.js +19 -0
  39. package/src/web/dist/assets/segmented-control-do2mQidJ.js +1 -0
  40. package/src/web/dist/assets/select-CxIEo3DN.js +1 -0
  41. package/src/web/dist/assets/shared-fOyVvn5H.js +1 -0
  42. package/src/web/dist/assets/{switch-W7ZoAE3i.js → switch-B2cQk2bS.js} +1 -1
  43. package/src/web/dist/assets/table-BxCEZcKF.js +1 -0
  44. package/src/web/dist/assets/tabs-BOjStrRw.js +1 -0
  45. package/src/web/dist/assets/useAppMutation-DY1JJByx.js +1 -0
  46. package/src/web/dist/assets/useEventStream-DeEWwZq0.js +1 -0
  47. package/src/web/dist/assets/useProviderForm-DlALMLaD.js +1 -0
  48. package/src/web/dist/assets/utils-DrKJJFzS.js +3 -0
  49. package/src/web/dist/assets/vendor-m8O77Czp.js +390 -0
  50. package/src/web/dist/index.html +8 -8
  51. package/src/web/dist/landing.html +5 -5
  52. package/src/web/dist/assets/About-Cm8SdgXs.js +0 -1
  53. package/src/web/dist/assets/ApiKeys-Buc2uXF3.js +0 -1
  54. package/src/web/dist/assets/Dashboard-DShNHNh0.js +0 -1
  55. package/src/web/dist/assets/Events-TZCjFq06.js +0 -1
  56. package/src/web/dist/assets/Help-Bwzt4gRi.js +0 -4
  57. package/src/web/dist/assets/Login-DTIGK-8_.js +0 -1
  58. package/src/web/dist/assets/Logs-CTGZCZ3d.js +0 -1
  59. package/src/web/dist/assets/ModelManagement-Bu4yl0en.js +0 -1
  60. package/src/web/dist/assets/PageSection-D4eaagP4.js +0 -1
  61. package/src/web/dist/assets/Profiler-B-Lg2yQp.js +0 -1
  62. package/src/web/dist/assets/RoutingManagement-RFMTV2o6.js +0 -1
  63. package/src/web/dist/assets/Settings-iT-oQVjg.js +0 -1
  64. package/src/web/dist/assets/Skeleton-9Z0ltPLO.js +0 -1
  65. package/src/web/dist/assets/app-CUHICvDo.js +0 -61
  66. package/src/web/dist/assets/card-DPI7HeM2.js +0 -1
  67. package/src/web/dist/assets/global-DvELjyJN.css +0 -1
  68. package/src/web/dist/assets/input-CRm3Lt3O.js +0 -1
  69. package/src/web/dist/assets/label-D0KXM_V7.js +0 -1
  70. package/src/web/dist/assets/landing-aXQw-el0.js +0 -17
  71. package/src/web/dist/assets/live-en-events-DJwaP-WW.png +0 -0
  72. package/src/web/dist/assets/live-events-D_njD291.png +0 -0
  73. package/src/web/dist/assets/package-BcqrltRw.js +0 -1
  74. package/src/web/dist/assets/popover-DVsRdElU.js +0 -1
  75. package/src/web/dist/assets/queryKeys-DLyolp-A.js +0 -1
  76. package/src/web/dist/assets/radix-C0Bt6n-I.js +0 -5
  77. package/src/web/dist/assets/router-D2Fb4U0L.js +0 -19
  78. package/src/web/dist/assets/select-C4IDwhTu.js +0 -1
  79. package/src/web/dist/assets/table-BGY9lGZo.js +0 -1
  80. package/src/web/dist/assets/useApiQuery-DhdisbOK.js +0 -1
  81. package/src/web/dist/assets/useAppMutation-CJrALOdE.js +0 -1
  82. package/src/web/dist/assets/useModelManagementState-DFFjS9uq.js +0 -1
  83. package/src/web/dist/assets/utils-DNPbJsD2.js +0 -3
  84. package/src/web/dist/assets/vendor-DdPBfMMb.js +0 -437
@@ -0,0 +1 @@
1
+ import{r as S,j as s,$ as le}from"./vendor-m8O77Czp.js";import{a as ne}from"./query-CZuclkQv.js";import{a as oe,d as ie,h as O,c as V,B as H}from"./app-CeLCVbqy.js";import{g as ce}from"./gateway-Bt6lPuXq.js";import{u as ue,q as G,B as me}from"./queryKeys-BlGm18Nk.js";import{u as P}from"./i18n-DWfLgqoF.js";import{c as A}from"./global-zt8jbW7F.js";import{D as X}from"./disclosure-CqU8C-ET.js";import{L as M,I as C}from"./label-CWq3wWgE.js";import{S as pe,a as he,b as xe,c as fe,d as L}from"./select-CxIEo3DN.js";import{S as Q}from"./switch-B2cQk2bS.js";function ze(e,r){return r(e==="anthropic"?"modelManagement.protocolAnthropic":e==="openai-chat"?"modelManagement.protocolOpenAIChat":e==="openai-responses"?"modelManagement.protocolOpenAIResponses":"modelManagement.protocolOpenAI")}const qe=["claude-sonnet-4-5-20250929","claude-sonnet-4-5-20250929-thinking","claude-sonnet-4-20250514","claude-opus-4-1-20250805","claude-opus-4-1-20250805-thinking","claude-haiku-4-5-20251001","claude-haiku-4-5-20251001-thinking","claude-3-5-haiku-20241022"],Ge=["gpt-4o-mini","gpt-4o","o4-mini","o4-large","gpt-5-codex"];function be(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():Math.random().toString(36).slice(2,10)}function R(e,r){var t;return(t=e==null?void 0:e.customEndpoints)!=null&&t.length?e.customEndpoints:r}function B(e){return e?Object.entries(e).map(([r,t])=>({id:be(),source:r,target:t})):[]}function Qe(e,r){var a,n,p;if(!e)return{};const t={},o=e.endpointRouting??{};t.anthropic=B(((a=o.anthropic)==null?void 0:a.modelRoutes)??e.modelRoutes??{}),t.openai=B(((n=o.openai)==null?void 0:n.modelRoutes)??{});for(const u of R(e,r))(p=u.routing)!=null&&p.modelRoutes?t[u.id]=B(u.routing.modelRoutes):t[u.id]=[];return t}function ge(e,r,t){var n,p,u;const o=R(e,r).find(v=>v.id===t);if(o)return((n=o.routing)==null?void 0:n.modelRoutes)??{};const a=e.endpointRouting??{};return t==="anthropic"?((p=a.anthropic)==null?void 0:p.modelRoutes)??e.modelRoutes??{}:t==="openai"?((u=a.openai)==null?void 0:u.modelRoutes)??{}:{}}function F(e,r,t){var a,n,p;if(t==="anthropic"||t==="openai")return((n=(a=e.endpointRouting)==null?void 0:a[t])==null?void 0:n.defaults)??e.defaults;const o=R(e,r).find(u=>u.id===t);return((p=o==null?void 0:o.routing)==null?void 0:p.defaults)??e.defaults}function Je(e,r){if(!e)return{};const t={anthropic:F(e,r,"anthropic"),openai:F(e,r,"openai")};for(const o of R(e,r))t[o.id]=F(e,r,o.id);return t}function ve(e){const r={};for(const t of e){const o=t.source.trim(),a=t.target.trim();o&&a&&(r[o]=a)}return r}function Xe(e,r){return JSON.stringify(ve(e))!==JSON.stringify(r)}function Ye(e,r,t){var a,n,p;if(!r)return;if(e==="anthropic"||e==="openai")return(n=(a=r.endpointRouting)==null?void 0:a[e])==null?void 0:n.compatibility;const o=R(r,t).find(u=>u.id===e);return(p=o==null?void 0:o.routing)==null?void 0:p.compatibility}function We(e,r){var o,a;const t={anthropic:((o=e.routingPresets)==null?void 0:o.anthropic)??[],openai:((a=e.routingPresets)==null?void 0:a.openai)??[]};for(const n of R(e,r))t[n.id]=n.routingPresets??[];return t}function ye(e,r){const t=[{key:"providers",label:e("modelManagement.tabs.providers"),description:e("modelManagement.tabs.providersDesc"),isSystem:!0,canDelete:!1},{key:"anthropic",label:e("modelManagement.tabs.anthropic"),description:e("modelManagement.tabs.anthropicDesc"),isSystem:!0,canDelete:!1,protocols:["anthropic"]},{key:"openai",label:e("modelManagement.tabs.openai"),description:e("modelManagement.tabs.openaiDesc"),isSystem:!0,canDelete:!1,protocols:["openai-auto","openai-chat","openai-responses"]}],o=r.map(a=>{let n=e("modelManagement.tabs.customEndpoint"),p=[];if(a.paths&&a.paths.length>0)n=`${e("modelManagement.tabs.customEndpoint")}: ${a.paths.map(u=>`${u.path} (${u.protocol})`).join(", ")}`,p=[...new Set(a.paths.map(u=>u.protocol))];else if(a.path){const u=a.protocol||"anthropic";n=`${e("modelManagement.tabs.customEndpoint")}: ${a.path} (${u})`,p=[u]}return{key:a.id,label:a.label||a.id,description:n,isSystem:!1,canDelete:a.deletable!==!1,protocols:p}});return[...t,...o]}function Ze(e){return e.label&&e.label.trim().length>0?`${e.label} (${e.id})`:e.id}function je(e,r){if(!e)return!1;const[t]=e.split(":");return t===r||e===r}function Ne(e,r,t){if(!e)return[];const o=["anthropic","openai",...R(e,r).map(n=>n.id)],a=[];for(const n of o){const p=ge(e,r,n);for(const[u,v]of Object.entries(p))je(v,t)&&a.push({endpoint:n,source:u,target:v})}return a}function es(e,r,t){return Ne(e,r,t).length}function ss(){var j;const{t:e}=P(),{pushToast:r}=oe(),t=ue(G.config.full(),ce.configRequest()),o=ne({queryKey:G.customEndpoints.all(),queryFn:ie.list,refetchInterval:1e4}),a=((j=o.data)==null?void 0:j.endpoints)??[],n=S.useMemo(()=>ye(e,a),[a,e]),[p,u]=S.useState(null);return S.useEffect(()=>{t.data&&u(t.data)},[t.data]),S.useEffect(()=>{!t.isError||!t.error||r({title:e("providers.toast.loadFailure",{message:t.error.message}),variant:"error"})},[t.error,t.isError,r,e]),{t:e,pushToast:r,config:p,setConfig:u,configQuery:t,customEndpoints:a,customEndpointsQuery:o,tabs:n,ensureConfig:()=>p?!0:(r({title:e("settings.toast.missingConfig"),variant:"error"}),t.refetch(),!1)}}const rs={savePreset(e,r){return O(V.post(`/api/routing-presets/${e}`,{name:r}))},applyPreset(e,r){return O(V.post(`/api/routing-presets/${e}/apply`,{name:r}))},deletePreset(e,r){return O(V.delete(`/api/routing-presets/${e}/${encodeURIComponent(r)}`))},testProvider(e,r){return O(V.post(`/api/providers/${e}/test`,r??{}))}};function we({result:e,className:r}){const{t}=P();return s.jsxs("div",{className:A("flex flex-wrap items-center gap-2 rounded-lg px-3 py-2 text-xs",e.ok?"bg-success-bg text-success":"bg-destructive/10 text-destructive",r),children:[s.jsx(me,{variant:e.ok?"success":"destructive",className:"shrink-0",children:e.ok?t("workbench.testResult.success"):t("workbench.testResult.failure")}),e.status?s.jsx("span",{className:"shrink-0",children:t("workbench.testResult.status",{status:e.status})}):null,e.durationMs?s.jsx("span",{className:"shrink-0",children:t("workbench.testResult.duration",{duration:`${e.durationMs} ms`})}):null,e.message?s.jsx("span",{className:"min-w-0 truncate",title:e.message,children:e.message}):null]})}const Me={complete:"border-primary bg-primary text-primary-foreground",current:"border-primary bg-card text-primary ring-2 ring-primary/20",error:"border-destructive bg-card text-destructive ring-2 ring-destructive/20",upcoming:"border-border bg-card text-muted-foreground"},Se={complete:"text-foreground",current:"text-foreground font-medium",error:"text-destructive font-medium",upcoming:"text-muted-foreground"};function as({steps:e,current:r,onSelect:t,className:o}){return s.jsx("nav",{"aria-label":"steps",className:A("flex items-start",o),children:e.map((a,n)=>{const p=t&&(a.status==="complete"||a.status==="current"),u=n===e.length-1,v=a.status==="complete"?"bg-primary/40":"bg-border",j=s.jsx("span",{className:A("motion-surface flex h-7 w-7 shrink-0 items-center justify-center rounded-full border text-xs font-semibold",Me[a.status]),"aria-current":a.id===r?"step":void 0,children:a.status==="complete"?s.jsx(le,{className:"h-3.5 w-3.5","aria-hidden":!0}):n+1}),N=`stepnav-${a.id}-label`;return s.jsxs("div",{className:"flex flex-1 items-start",children:[s.jsxs("div",{className:"flex min-w-0 flex-col items-center gap-1.5",children:[p?s.jsx("button",{type:"button",onClick:()=>t==null?void 0:t(a.id),"aria-labelledby":N,className:"rounded-full outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background motion-surface",children:j}):j,s.jsx("span",{id:N,className:A("text-center text-[11px] leading-tight",Se[a.status]),children:a.label})]}),u?null:s.jsx("span",{"aria-hidden":!0,className:A("mx-1.5 mt-3.5 h-px flex-1",v)})]},a.id)})})}function D(){return typeof globalThis.crypto<"u"&&typeof globalThis.crypto.randomUUID=="function"?globalThis.crypto.randomUUID():Math.random().toString(36).slice(2,10)}function ke(){return{_key:D(),id:"",label:""}}function Ce(){return{_key:D(),name:"",value:""}}const K={openai:{baseUrl:"https://api.openai.com/v1"},deepseek:{baseUrl:"https://api.deepseek.com/v1"},huawei:{baseUrl:"https://api.modelarts-maas.com/v1"},kimi:{baseUrl:"https://api.moonshot.cn/v1"},anthropic:{baseUrl:"https://api.anthropic.com/v1"},custom:{}},Ue=[{value:"openai",label:"OpenAI"},{value:"deepseek",label:"DeepSeek"},{value:"huawei",label:"Huawei Cloud"},{value:"kimi",label:"Kimi"},{value:"anthropic",label:"Anthropic"},{value:"custom",label:"Custom"}],ts=[{id:"basics",labelKey:"providers.drawer.steps.basics"},{id:"models",labelKey:"providers.drawer.steps.modelsVerify"}];function _(e){return e==="anthropic"?"authToken":"apiKey"}function Re(e,r,t){return t(r==="authToken"?"providers.drawer.fields.authModeAuthToken":r==="xAuthToken"?"providers.drawer.fields.authModeXAuthToken":e==="anthropic"?"providers.drawer.fields.authModeApiKey":"providers.drawer.fields.authModeProviderDefault")}function J(e){return e?{id:e.id,label:e.label??e.id,baseUrl:e.baseUrl,apiKey:e.apiKey??"",type:e.type??"custom",defaultModel:e.defaultModel??"",models:(e.models??[]).map(r=>({...r,_key:D()})),authMode:e.authMode??_(e.type??"custom"),nonStreamViaStream:e.nonStreamViaStream??!1,useAbsoluteUrl:e.useAbsoluteUrl??!1,extraHeaders:Object.entries(e.extraHeaders??{}).map(([r,t])=>({name:r,value:t,_key:D()}))}:{id:"",label:"",baseUrl:"",apiKey:"",type:"custom",defaultModel:"",models:[],authMode:_("custom"),nonStreamViaStream:!1,useAbsoluteUrl:!1,extraHeaders:[]}}function Ae(e){return{_key:D(),id:e.id,label:e.label,nonStreamViaStream:e.nonStreamViaStream}}function ds({form:e,errors:r,isCreate:t,advancedOpen:o,onAdvancedOpenChange:a,idInputRef:n,onProviderIdChange:p,onFieldChange:u,onTypeChange:v,onAuthModeChange:j,onNonStreamViaStreamChange:N,onUseAbsoluteUrlChange:m,onAddHeader:E,onRemoveHeader:y,onHeaderChange:w}){const{t:i}=P();return s.jsxs("div",{className:"space-y-8",children:[s.jsxs("section",{className:"space-y-5","aria-labelledby":"provider-type-fields",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx("h3",{id:"provider-type-fields",className:"text-sm font-semibold",children:i("providers.drawer.sections.type")}),s.jsx("p",{className:"text-xs text-muted-foreground",children:i("providers.drawer.hints.type")})]}),s.jsx("div",{className:"grid gap-2 md:grid-cols-3",children:Ue.map(b=>{var k;const U=b.value===e.type;return s.jsxs("button",{type:"button",onClick:()=>v(b.value),className:A("rounded-2xl border px-4 py-3 text-left transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",U?"border-primary bg-primary/10 text-primary shadow-sm":"border-border bg-card text-foreground hover:border-primary/20 hover:bg-accent/50"),children:[s.jsx("div",{className:"text-sm font-semibold",children:b.label}),s.jsx("div",{className:"mt-1 text-xs text-muted-foreground",children:((k=K[b.value??"custom"])==null?void 0:k.baseUrl)??i("providers.drawer.hints.customProvider")})]},b.value??"custom")})})]}),s.jsxs("section",{className:"space-y-4","aria-labelledby":"provider-basic-info",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx("h3",{id:"provider-basic-info",className:"text-sm font-semibold",children:i("providers.drawer.sections.basic")}),s.jsx("p",{className:"text-xs text-muted-foreground",children:i("providers.drawer.hints.basic")})]}),s.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[s.jsxs(M,{className:"flex flex-col gap-2 text-sm",children:[s.jsx("span",{className:"text-xs text-muted-foreground",children:i("providers.drawer.fields.id")}),s.jsx(C,{value:e.id,ref:n,onChange:b=>p(b.target.value),disabled:!t,placeholder:i("providers.drawer.fields.idPlaceholder"),"aria-invalid":!!r.id}),r.id?s.jsx("span",{className:"text-xs text-destructive",children:r.id}):null]}),s.jsxs(M,{className:"flex flex-col gap-2 text-sm",children:[s.jsx("span",{className:"text-xs text-muted-foreground",children:i("providers.drawer.fields.label")}),s.jsx(C,{value:e.label,onChange:b=>u("label")(b.target.value),placeholder:i("providers.drawer.fields.labelPlaceholder")})]})]}),s.jsxs(M,{className:"flex flex-col gap-2 text-sm",children:[s.jsx("span",{className:"text-xs text-muted-foreground",children:i("providers.drawer.fields.baseUrl")}),s.jsx(C,{value:e.baseUrl,onChange:b=>u("baseUrl")(b.target.value),placeholder:i("providers.drawer.fields.baseUrlPlaceholder"),"aria-invalid":!!r.baseUrl}),r.baseUrl?s.jsx("span",{className:"text-xs text-destructive",children:r.baseUrl}):null]})]}),s.jsxs("section",{className:"space-y-4","aria-labelledby":"provider-auth-fields",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx("h3",{id:"provider-auth-fields",className:"text-sm font-semibold",children:i("providers.drawer.sections.auth")}),s.jsx("p",{className:"text-xs text-muted-foreground",children:i("providers.drawer.hints.auth")})]}),s.jsxs(M,{className:"flex flex-col gap-2 text-sm",children:[s.jsx("span",{className:"text-xs text-muted-foreground",children:i("providers.drawer.fields.apiKey")}),s.jsx(C,{value:e.apiKey,onChange:b=>u("apiKey")(b.target.value),placeholder:i("providers.drawer.fields.apiKeyPlaceholder")})]}),s.jsxs("fieldset",{className:"grid gap-2 rounded-xl border border-transparent bg-card p-4 text-xs shadow-[var(--surface-shadow)]",children:[s.jsx("legend",{className:"px-1 text-muted-foreground",children:i("providers.drawer.fields.authMode")}),s.jsx("p",{className:"text-[11px] text-muted-foreground",children:i("providers.drawer.fields.authModeHint")}),s.jsxs("label",{className:"flex cursor-pointer items-start gap-3 rounded-xl border border-transparent px-3 py-2 transition hover:bg-accent focus-within:bg-accent",children:[s.jsx("input",{type:"radio",name:"provider-auth-mode",value:"apiKey",checked:e.authMode==="apiKey",onChange:()=>j("apiKey"),className:"mt-0.5 h-4 w-4 accent-[hsl(var(--primary))]"}),s.jsx("span",{children:Re(e.type,"apiKey",i)})]}),s.jsxs("label",{className:"flex cursor-pointer items-start gap-3 rounded-xl border border-transparent px-3 py-2 transition hover:bg-accent focus-within:bg-accent",children:[s.jsx("input",{type:"radio",name:"provider-auth-mode",value:"authToken",checked:e.authMode==="authToken",onChange:()=>j("authToken"),className:"mt-0.5 h-4 w-4 accent-[hsl(var(--primary))]"}),s.jsx("span",{children:i("providers.drawer.fields.authModeAuthToken")})]}),s.jsxs("label",{className:"flex cursor-pointer items-start gap-3 rounded-xl border border-transparent px-3 py-2 transition hover:bg-accent focus-within:bg-accent",children:[s.jsx("input",{type:"radio",name:"provider-auth-mode",value:"xAuthToken",checked:e.authMode==="xAuthToken",onChange:()=>j("xAuthToken"),className:"mt-0.5 h-4 w-4 accent-[hsl(var(--primary))]"}),s.jsx("span",{children:i("providers.drawer.fields.authModeXAuthToken")})]})]}),s.jsxs(X,{open:o,onOpenChange:a,summary:i("providers.drawer.fields.advancedOptions"),className:"rounded-xl border border-transparent bg-card shadow-[var(--surface-shadow)]",summaryClassName:"px-4 py-3 text-sm font-medium",contentClassName:"border-t border-border px-4 py-4",children:[s.jsxs("div",{className:"flex items-start justify-between gap-4",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx("p",{className:"text-sm font-medium",children:i("providers.drawer.fields.nonStreamViaStream")}),s.jsx("p",{className:"text-xs leading-relaxed text-muted-foreground",children:i("providers.drawer.fields.nonStreamViaStreamHint")})]}),s.jsx(Q,{checked:e.nonStreamViaStream,onCheckedChange:N,"aria-label":i("providers.drawer.fields.nonStreamViaStream")})]}),s.jsx("div",{className:"mt-4 border-t border-border pt-4",children:s.jsxs("div",{className:"flex items-start justify-between gap-4",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx("p",{className:"text-sm font-medium",children:i("providers.drawer.fields.useAbsoluteUrl")}),s.jsx("p",{className:"text-xs leading-relaxed text-muted-foreground",children:i("providers.drawer.fields.useAbsoluteUrlHint")})]}),s.jsx(Q,{checked:e.useAbsoluteUrl,onCheckedChange:m,"aria-label":i("providers.drawer.fields.useAbsoluteUrl")})]})}),s.jsxs("div",{className:"mt-4 border-t border-border pt-4",children:[s.jsxs("div",{className:"flex items-start justify-between gap-4",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx("p",{className:"text-sm font-medium",children:i("providers.drawer.fields.extraHeaders")}),s.jsx("p",{className:"text-xs leading-relaxed text-muted-foreground",children:i("providers.drawer.fields.extraHeadersHint")})]}),s.jsx(H,{type:"button",variant:"outline",size:"sm",onClick:E,className:"bg-card text-xs",children:i("providers.drawer.fields.addHeader")})]}),r.extraHeaders?s.jsx("p",{className:"mt-2 text-xs text-destructive",children:r.extraHeaders}):null,e.extraHeaders.length>0?s.jsx("div",{className:"mt-3 space-y-3",children:e.extraHeaders.map((b,U)=>s.jsxs("div",{className:"rounded-xl border border-transparent bg-secondary/40 p-3",children:[s.jsxs("div",{className:"grid gap-3 md:grid-cols-2",children:[s.jsxs(M,{className:"flex flex-col gap-1.5 text-sm",children:[s.jsx("span",{className:"text-xs text-muted-foreground",children:i("providers.drawer.fields.headerName")}),s.jsx(C,{value:b.name,onChange:k=>w(U,{name:k.target.value}),placeholder:i("providers.drawer.fields.headerNamePlaceholder")})]}),s.jsxs(M,{className:"flex flex-col gap-1.5 text-sm",children:[s.jsx("span",{className:"text-xs text-muted-foreground",children:i("providers.drawer.fields.headerValue")}),s.jsx(C,{value:b.value,onChange:k=>w(U,{value:k.target.value}),placeholder:i("providers.drawer.fields.headerValuePlaceholder")})]})]}),s.jsx("div",{className:"mt-2 flex justify-end",children:s.jsx(H,{type:"button",variant:"ghost",size:"sm",className:"h-auto px-2 text-destructive",onClick:()=>y(U),children:i("providers.drawer.fields.removeHeader")})})]},b._key))}):null]})]})]})]})}function ls({form:e,errors:r,advancedOpen:t,onAdvancedOpenChange:o,onModelIdChange:a,onModelChange:n,onAddModel:p,onRemoveModel:u,onModelNonStreamViaStreamChange:v,onSetDefaultModel:j,testVerification:N}){const{t:m}=P(),E=e.models.filter(y=>y.id.trim().length>0);return s.jsxs("div",{className:"space-y-8",children:[s.jsxs("section",{className:"space-y-4","aria-labelledby":"provider-model-fields",children:[s.jsxs("div",{className:"flex items-start justify-between gap-4",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx("h3",{id:"provider-model-fields",className:"text-sm font-semibold",children:m("providers.drawer.fields.models")}),s.jsx("p",{className:"text-xs text-muted-foreground",children:m("providers.drawer.modelsDescription")})]}),s.jsx(H,{type:"button",variant:"outline",size:"sm",onClick:p,className:"bg-card text-xs",children:m("providers.drawer.fields.addModel")})]}),r.models?s.jsx("p",{className:"text-xs text-destructive",children:r.models}):null,s.jsxs("div",{className:"space-y-4",children:[e.models.map((y,w)=>s.jsxs("div",{className:"rounded-xl border border-transparent bg-card p-4 shadow-[var(--surface-shadow)]",children:[s.jsx("div",{className:"grid gap-4 md:grid-cols-2",children:s.jsxs(M,{className:"flex flex-col gap-2 text-sm",children:[s.jsx("span",{className:"text-xs text-muted-foreground",children:m("providers.drawer.fields.modelId")}),s.jsx(C,{value:y.id,onChange:i=>a(w,i.target.value),placeholder:m("providers.drawer.fields.modelIdPlaceholder")})]})}),s.jsxs(X,{open:t,onOpenChange:o,summary:m("providers.drawer.fields.advancedOptions"),className:"mt-4 rounded-xl bg-secondary/50",summaryClassName:"px-3 py-2 text-xs font-medium",contentClassName:"space-y-4 px-3 py-3",children:[s.jsxs(M,{className:"flex flex-col gap-2 text-sm",children:[s.jsx("span",{className:"text-xs text-muted-foreground",children:m("providers.drawer.fields.modelLabel")}),s.jsx(C,{value:y.label??"",onChange:i=>n(w,{label:i.target.value}),placeholder:m("providers.drawer.fields.modelLabelPlaceholder")})]}),s.jsxs(M,{className:"flex flex-col gap-2 text-sm",children:[s.jsx("span",{className:"text-xs text-muted-foreground",children:m("providers.drawer.fields.modelNonStreamViaStream")}),s.jsxs(pe,{value:y.nonStreamViaStream===void 0?"inherit":y.nonStreamViaStream?"enabled":"disabled",onValueChange:i=>v(w,i),children:[s.jsx(he,{children:s.jsx(xe,{})}),s.jsxs(fe,{children:[s.jsx(L,{value:"inherit",children:m("providers.drawer.fields.modelNonStreamViaStreamInherit")}),s.jsx(L,{value:"enabled",children:m("providers.drawer.fields.modelNonStreamViaStreamEnabled")}),s.jsx(L,{value:"disabled",children:m("providers.drawer.fields.modelNonStreamViaStreamDisabled")})]})]})]})]}),s.jsxs("div",{className:"mt-3 flex flex-wrap items-center justify-between gap-3 text-xs",children:[s.jsxs("label",{className:"flex items-center gap-2 text-muted-foreground",children:[s.jsx("input",{type:"radio",name:"defaultModel",value:y.id,"aria-label":m("providers.drawer.fields.setDefault"),checked:e.defaultModel===y.id,onChange:()=>j(y.id),disabled:y.id.trim().length===0,className:"h-4 w-4 accent-[hsl(var(--primary))]"}),m("providers.drawer.fields.setDefault")]}),s.jsx(H,{type:"button",variant:"ghost",size:"sm",className:"h-auto px-2 text-destructive",onClick:()=>u(w),disabled:e.models.length===0,children:m("providers.drawer.fields.removeModel")})]})]},y._key)),e.models.length===0?s.jsx("div",{className:"rounded-xl border border-amber-200 bg-amber-50 p-5 dark:border-amber-800 dark:bg-amber-950/30",children:s.jsxs("div",{className:"space-y-2",children:[s.jsx("p",{className:"text-sm font-semibold text-amber-900 dark:text-amber-200",children:m("providers.drawer.noModelsTitle")}),s.jsx("p",{className:"text-xs leading-relaxed text-amber-800 dark:text-amber-300",children:m("providers.drawer.noModelsHint",{providerId:e.id||"provider-id"})}),s.jsxs("div",{className:"rounded-lg bg-secondary/50 p-2.5",children:[s.jsx("p",{className:"mb-1.5 text-xs font-medium text-foreground",children:m("providers.drawer.routeExample")}),s.jsxs("code",{className:"block rounded-lg border border-transparent bg-card px-2.5 py-1.5 font-mono text-xs text-foreground shadow-[var(--surface-shadow)]",children:['"claude-*": "',(e.id||"provider-id").trim()||"provider-id",':*"']})]})]})}):null]}),E.length>1?s.jsx("div",{className:"text-xs text-muted-foreground",children:m("providers.drawer.defaultHint",{model:e.defaultModel||m("providers.card.noDefault")})}):null]}),N?s.jsxs("section",{className:"space-y-3","aria-labelledby":"provider-verify-fields",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx("h3",{id:"provider-verify-fields",className:"text-sm font-semibold",children:m("workbench.drawer.verifyTitle")}),s.jsx("p",{className:"text-xs text-muted-foreground",children:m("workbench.drawer.verifyHint")})]}),N.available?s.jsxs("div",{className:"space-y-3 rounded-xl border border-transparent bg-card p-4 shadow-[var(--surface-shadow)]",children:[s.jsx(H,{type:"button",variant:"outline",size:"sm",onClick:N.onTest,disabled:N.testing,children:N.testing?m("common.actions.testingConnection"):m("workbench.drawer.verifyRun")}),N.result?s.jsx(we,{result:N.result}):null]}):s.jsx("p",{className:"rounded-xl bg-secondary/50 px-4 py-3 text-xs text-muted-foreground",children:m("workbench.drawer.verifySaveFirst")})]}):null]})}const Ee=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function ns({mode:e,provider:r,existingProviderIds:t}){const{t:o}=P(),[a,n]=S.useState(()=>J(r)),[p,u]=S.useState({}),[v,j]=S.useState(e==="edit"),N=S.useRef(null),m=S.useCallback(()=>{n(J(r)),u({}),j(e==="edit")},[r,e]),E=d=>l=>{n(h=>({...h,[d]:l}))},y=d=>{n(l=>{const c=!v||l.label.trim().length===0||l.label===l.id?d:l.label;return{...l,id:d,label:c}})},w=d=>{n(l=>{var q;const c=K[d??"custom"]??K.custom,x=_(l.type),f=_(d),g=Object.values(K).map(T=>T.baseUrl).filter(T=>!!T),$=!l.baseUrl||g.includes(l.baseUrl),de=e==="create"&&(l.models.length===0||l.models.every(T=>T.id.trim().length===0)),I={...l,type:d,authMode:l.authMode===x?f:l.authMode};return c!=null&&c.baseUrl&&$&&(I.baseUrl=c.baseUrl),c!=null&&c.models&&de&&(I.models=c.models.map(Ae),I.defaultModel=c.defaultModel??((q=c.models[0])==null?void 0:q.id)??""),I})},i=(d,l)=>{n(h=>{const c=[...h.models];return c[d]={...c[d],...l},{...h,models:c}})},b=(d,l)=>{n(h=>{const c=[...h.models],x=c[d];if(!x)return h;const f=!v||!x.label||x.label===x.id,g={...x,id:l,label:f?l:x.label};c[d]=g;const $=h.defaultModel===x.id?l:h.defaultModel;return{...h,models:c,defaultModel:$}})},U=d=>{n(l=>{if(d<0||d>=l.models.length)return l;const h=l.models.filter((x,f)=>f!==d);let c=l.defaultModel;return h.some(x=>x.id===c)||(c=""),{...l,models:h,defaultModel:c}})},k=()=>{n(d=>({...d,models:[...d.models,ke()]}))},Y=(d,l)=>{n(h=>{const c=[...h.extraHeaders];return c[d]={...c[d],...l},{...h,extraHeaders:c}})},W=()=>{n(d=>({...d,extraHeaders:[...d.extraHeaders,Ce()]}))},Z=d=>{n(l=>{if(d<0||d>=l.extraHeaders.length)return l;const h=l.extraHeaders.filter((c,x)=>x!==d);return{...l,extraHeaders:h}})},ee=d=>{n(l=>({...l,authMode:d}))},se=d=>{n(l=>({...l,nonStreamViaStream:d}))},re=d=>{n(l=>({...l,useAbsoluteUrl:d}))},ae=(d,l)=>{i(d,{nonStreamViaStream:l==="inherit"?void 0:l==="enabled"})},te=d=>{n(l=>({...l,defaultModel:d}))},z=()=>{const d={},l=a.id.trim(),h=a.baseUrl.trim();if(e==="create"&&(l.length===0?d.id=o("providers.drawer.errors.idRequired"):t.includes(l)&&(d.id=o("providers.drawer.errors.idDuplicate"))),e==="edit"&&l.length===0&&(d.id=o("providers.drawer.errors.idRequired")),h.length===0)d.baseUrl=o("providers.drawer.errors.baseUrlInvalid");else try{new URL(h)}catch{d.baseUrl=o("providers.drawer.errors.baseUrlInvalid")}if(a.models.length>0){const c=new Set;a.models.some(f=>{const g=f.id.trim();return g.length===0||c.has(g)?!0:(c.add(g),!1)})&&(d.models=o("providers.drawer.errors.modelInvalid"))}if(a.defaultModel&&!a.models.some(c=>c.id===a.defaultModel)&&(d.models=o("providers.drawer.errors.defaultInvalid")),a.extraHeaders.length>0){const c=new Set;for(const x of a.extraHeaders){const f=x.name.trim();if(f.length===0)continue;if(!Ee.test(f)){d.extraHeaders=o("providers.drawer.errors.headerNameInvalid");break}const g=f.toLowerCase();if(c.has(g)){d.extraHeaders=o("providers.drawer.errors.headerNameDuplicate");break}c.add(g)}}return u(d),d};return{form:a,errors:p,advancedOpen:v,setAdvancedOpen:j,providerIdRef:N,isCreate:e==="create",resetForm:m,validate:()=>Object.keys(z()).length===0,validateErrors:z,serialize:()=>{const d=a.models.map(f=>{var g;return{id:f.id.trim(),label:(g=f.label)!=null&&g.trim()?f.label.trim():void 0,nonStreamViaStream:f.nonStreamViaStream}}).filter(f=>f.id.length>0),l={};for(const f of a.extraHeaders){const g=f.name.trim();g.length>0&&(l[g]=f.value)}const h=Object.keys(l).length>0,c=a.authMode==="apiKey"&&a.type!=="anthropic"?void 0:a.authMode,x={id:a.id.trim(),label:a.label.trim()||a.id.trim(),baseUrl:a.baseUrl.trim(),apiKey:a.apiKey.trim()||void 0,type:a.type??"custom",defaultModel:a.defaultModel||void 0,models:d.length>0?d:void 0,extraHeaders:h?l:void 0,authMode:c};return a.nonStreamViaStream&&(x.nonStreamViaStream=!0),a.useAbsoluteUrl&&(x.useAbsoluteUrl=!0),x},handleFieldChange:E,handleProviderIdChange:y,handleTypeChange:w,handleModelChange:i,handleModelIdChange:b,handleRemoveModel:U,handleAddModel:k,handleHeaderChange:Y,handleAddHeader:W,handleRemoveHeader:Z,handleAuthModeChange:ee,handleProviderNonStreamViaStreamChange:se,handleUseAbsoluteUrlChange:re,handleModelNonStreamViaStreamChange:ae,handleSetDefaultModel:te}}export{ds as B,qe as C,ls as M,Ge as O,Ue as P,as as S,we as T,Xe as a,Je as b,F as c,Qe as d,We as e,be as f,ge as g,Ze as h,Ne as i,Re as j,ts as k,Ye as l,rs as m,ze as n,ss as o,es as p,je as r,ns as u};
@@ -0,0 +1,3 @@
1
+ import{j as r}from"./vendor-m8O77Czp.js";import{c}from"./global-zt8jbW7F.js";function n({className:e}){return r.jsx("div",{role:"status","aria-label":"Loading",className:c("animate-pulse rounded-xl bg-muted",e)})}function w(){return r.jsxs("div",{className:"space-y-3 rounded-xl bg-card p-6 shadow-[var(--surface-shadow)]",children:[r.jsxs("div",{className:"flex items-center justify-between",children:[r.jsx(n,{className:"h-3 w-24"}),r.jsx(n,{className:"h-10 w-10 rounded-xl"})]}),r.jsx(n,{className:"h-8 w-32"})]})}function S(){return r.jsxs("div",{className:"space-y-4 rounded-xl bg-card p-6 shadow-[var(--surface-shadow)]",children:[r.jsxs("div",{className:"space-y-2",children:[r.jsx(n,{className:"h-4 w-32"}),r.jsx(n,{className:"h-3 w-48"})]}),r.jsx(n,{className:"h-[320px] w-full rounded-xl"})]})}function x({columns:e=6}){const t=["w-24","w-16","w-20","w-28","w-14","w-12","w-20","w-16","w-14","w-12"];return r.jsx("tr",{className:"border-b",children:Array.from({length:e}).map((a,s)=>r.jsx("td",{className:"px-3 py-3",children:r.jsx(n,{className:c("h-4",t[s%t.length])})},s))})}const l=[168,184,198,208,218,228,238,248,258,268,278,292],u=2e5,o=12e4;function b(e){const t=new Date(e);return`${t.getFullYear()}-${`${t.getMonth()+1}`.padStart(2,"0")}-${`${t.getDate()}`.padStart(2,"0")} ${`${t.getHours()}`.padStart(2,"0")}:${`${t.getMinutes()}`.padStart(2,"0")}:${`${t.getSeconds()}`.padStart(2,"0")}`}function d(e){return e==null?"-":e.toLocaleString()}function N(e,t){const a=d(e);return a==="-"?"-":`${a} ${t}`}function y(e){return e?"true":"false"}function h(e,t){if(!e||e.trim().length===0)return t;if(e.length>u)return e;try{const a=JSON.parse(e);return JSON.stringify(a,null,2)}catch{return e}}function g(e){return e.length<=o?{displayedLength:e.length,isTruncated:!1,originalLength:e.length,text:e}:{displayedLength:o,isTruncated:!0,originalLength:e.length,text:`${e.slice(0,o)}
2
+
3
+ ...`}}function j(e,t){return g(h(e,t))}function _(e,t){return e.status_code===null||e.status_code===void 0?e.error?{label:t("common.status.error"),tone:"error",variant:"destructive"}:{label:t("common.status.pending"),tone:"pending",variant:"warning"}:e.error||e.status_code>=400?{label:e.status_code.toString(),tone:"error",variant:"destructive"}:{label:e.status_code.toString(),tone:"success",variant:"success"}}function $(e,t){if(!(!!e.error||(e.status_code??0)>=400))return{label:t("logs.detail.errorSource.none"),tone:"none"};switch(e.error_source){case"client":return{label:t("logs.detail.errorSource.client"),tone:"client"};case"gateway":return{label:t("logs.detail.errorSource.gateway"),tone:"gateway"};case"upstream":return{label:t("logs.detail.errorSource.upstream"),tone:"upstream"};default:return{label:t("logs.detail.errorSource.unknown"),tone:"unknown"}}}function f(e){let t=0;for(let a=0;a<e.length;a+=1)t=t*31+e.charCodeAt(a)>>>0;return t}function L(e){const t=e==null?void 0:e.trim();if(!t)return null;const a=f(t),s=l[a%l.length],i=`hsl(${s} 74% 46% / 0.55)`;return{sessionId:t,colorKey:`${s}`,accentStyle:{borderLeft:`2px solid ${i}`}}}export{S as C,w as S,x as T,$ as a,j as b,b as c,y as d,d as e,N as f,_ as g,L as h,n as i};