@yansigit/opencodex 2.36.1 → 2.36.2-dev.20260829.53

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 (83) hide show
  1. package/README.md +9 -4
  2. package/gui/dist/assets/{ApiKeys-CsmNyf4I.js → ApiKeys-BhwqQvO8.js} +1 -1
  3. package/gui/dist/assets/{Claude-B4sHsGTD.js → Claude-DYNY8SHC.js} +1 -1
  4. package/gui/dist/assets/{CodexSet-BuAQ4YQn.js → CodexSet-tSN1aWmM.js} +1 -1
  5. package/gui/dist/assets/{FileIntegrationPage-BC65sEaS.js → FileIntegrationPage-B68tn2JT.js} +1 -1
  6. package/gui/dist/assets/{Grok-DNJWlISf.js → Grok-Dr6FN8SD.js} +1 -1
  7. package/gui/dist/assets/{Integrations-vGJshFZK.js → Integrations-jvqYofMm.js} +2 -2
  8. package/gui/dist/assets/{IntegrationsOverview-DYMkDFHE.js → IntegrationsOverview-Bjc7JSgw.js} +1 -1
  9. package/gui/dist/assets/{Logs-Coc7_RPP.js → Logs-C23CdgmP.js} +1 -1
  10. package/gui/dist/assets/{Models-CKVT8Meb.js → Models-Ci4wK3HO.js} +1 -1
  11. package/gui/dist/assets/{NumberStepper-Dug4wR8n.js → NumberStepper-nggECFok.js} +1 -1
  12. package/gui/dist/assets/Providers-DasIL4ng.js +1 -0
  13. package/gui/dist/assets/{RestoreDialog-BpuvVU2w.js → RestoreDialog-CW7LbS-w.js} +1 -1
  14. package/gui/dist/assets/{Startup-DAUQqNEN.js → Startup-Cx3dZre0.js} +1 -1
  15. package/gui/dist/assets/{Storage-DfP95SlJ.js → Storage-D0iUYQED.js} +1 -1
  16. package/gui/dist/assets/{Subagents-CMNsZLfk.js → Subagents-phLFffyl.js} +1 -1
  17. package/gui/dist/assets/{Usage-ESFRfBMO.js → Usage-NvYxG04o.js} +1 -1
  18. package/gui/dist/assets/{codex-stale-banner-W4FhikN7.js → codex-stale-banner-B5VQPO3t.js} +1 -1
  19. package/gui/dist/assets/{data-surface-B8PX8rjm.js → data-surface-B0APtUxm.js} +1 -1
  20. package/gui/dist/assets/{data-surface-CETFXqiA.js → data-surface-OiQUZok8.js} +1 -1
  21. package/gui/dist/assets/index-C8flH881.css +1 -0
  22. package/gui/dist/assets/{index-DHQHBRhb.js → index-CZ1jyQCF.js} +3 -3
  23. package/gui/dist/assets/{model-display-OBTJhQwT.js → model-display-Dlrzica2.js} +1 -1
  24. package/gui/dist/assets/{provider-payload-CJRJUn7w.js → provider-payload-Ca3Ff8oP.js} +1 -1
  25. package/gui/dist/assets/{section-tabs-B8sLMiz6.js → section-tabs-Bpm5lFcZ.js} +1 -1
  26. package/gui/dist/assets/shared-BHpPx-nZ.js +69 -0
  27. package/gui/dist/index.html +3 -3
  28. package/package.json +2 -1
  29. package/src/adapters/base.ts +2 -0
  30. package/src/adapters/command-code.ts +2 -1
  31. package/src/adapters/google-http.ts +34 -14
  32. package/src/adapters/google.ts +4 -1
  33. package/src/cli/dispatch.ts +2 -2
  34. package/src/cli/help.ts +2 -2
  35. package/src/cli/index.ts +9 -1
  36. package/src/cli/init.ts +52 -3
  37. package/src/cli/registry.ts +2 -2
  38. package/src/codex/account-lifecycle.ts +4 -8
  39. package/src/codex/inject.ts +14 -9
  40. package/src/config/process-state.ts +15 -0
  41. package/src/config.ts +17 -0
  42. package/src/generated/compatibility-version.json +67 -47
  43. package/src/lib/bun-stream-caps.ts +2 -1
  44. package/src/lib/pinned-http.ts +7 -1
  45. package/src/lib/process-control.ts +3 -2
  46. package/src/lib/provider-outbound.ts +77 -27
  47. package/src/lib/provider-runtime-fetch.ts +23 -0
  48. package/src/lib/provider-tls-profile.ts +97 -11
  49. package/src/lib/server-tls.ts +47 -0
  50. package/src/lib/test-provider-fetch.ts +6 -0
  51. package/src/lib/test-server-start.ts +5 -0
  52. package/src/lib/upstream-retry.ts +39 -25
  53. package/src/oauth/anthropic.ts +4 -3
  54. package/src/oauth/chatgpt.ts +7 -3
  55. package/src/oauth/command-code.ts +3 -2
  56. package/src/oauth/cursor.ts +3 -2
  57. package/src/oauth/github-copilot.ts +7 -5
  58. package/src/oauth/google-antigravity.ts +5 -4
  59. package/src/oauth/key-providers.ts +11 -13
  60. package/src/oauth/kimi.ts +7 -6
  61. package/src/oauth/kiro.ts +3 -2
  62. package/src/oauth/nous.ts +5 -5
  63. package/src/oauth/transport.ts +77 -0
  64. package/src/oauth/xai.ts +5 -4
  65. package/src/providers/replit/probe.ts +8 -3
  66. package/src/providers/xai-transport.ts +16 -2
  67. package/src/server/auth-cors.ts +15 -1
  68. package/src/server/chat-native.ts +9 -3
  69. package/src/server/index.ts +63 -23
  70. package/src/server/management/config-routes.ts +117 -15
  71. package/src/server/management/context.ts +4 -0
  72. package/src/server/management/provider-routes.ts +1 -0
  73. package/src/server/responses/compact.ts +5 -2
  74. package/src/server/responses/core.ts +16 -19
  75. package/src/server/responses/fetch-helpers.ts +15 -7
  76. package/src/server/ws-bridge.ts +33 -4
  77. package/src/service.ts +10 -1
  78. package/src/types/config.ts +9 -0
  79. package/src/types/provider.ts +2 -0
  80. package/src/types.ts +1 -0
  81. package/gui/dist/assets/Providers-DyaCHRWL.js +0 -1
  82. package/gui/dist/assets/index-pLho_LBF.css +0 -1
  83. package/gui/dist/assets/shared-DI18-uF7.js +0 -69
@@ -1 +1 @@
1
- import{_ as e,c as t,f as n,h as r,m as i,s as a}from"./shared-DI18-uF7.js";import{$ as o,A as s,B as c,C as l,D as u,F as d,G as f,I as p,J as m,L as h,M as g,N as _,O as v,P as y,S as b,T as x,U as S,W as C,Y as w,_ as T,a as E,bt as D,c as O,dt as ee,ft as k,g as A,h as te,i as j,j as M,l as ne,lt as N,m as re,n as ie,o as ae,p as oe,pt as se,q as ce,r as le,s as ue,st as de,tt as fe,v as pe,vt as me,yt as he,z as ge}from"./index-DHQHBRhb.js";import{t as _e}from"./data-surface-CETFXqiA.js";import{n as ve,t as ye}from"./data-surface-B8PX8rjm.js";import{t as be}from"./model-display-OBTJhQwT.js";import{t as xe}from"./codex-stale-banner-W4FhikN7.js";import{a as Se}from"./catalog-CerhMn14.js";var Ce={state:null,runningCount:0};async function we(e,t={}){let n=t.fetchFn??fetch;try{let r=await n(`${e}/api/system/codex-app-server`,{signal:t.signal});if(!r.ok)return Ce;let i=await r.json().catch(()=>null);return le(i)?{state:i.state,runningCount:i.runningCount}:Ce}catch{return Ce}}var P=e(r(),1),Te=`gpt-daybreak-blue-latest`,F=Object.freeze({[Te]:`gpt-5.6-sol`});Object.freeze(Object.keys(F));var Ee=new Set([`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.3-codex-spark`,`gpt-5.6-sol`,`gpt-5.6-terra`,`gpt-5.6-luna`,Te]),I=[`low`,`medium`,`high`,`xhigh`,`max`,`ultra`];function L(e,t){let n=e.filter(e=>e.provider.trim()&&e.model.trim());if(n.length===0)return[...I];let r=new Set(I),i=null;for(let e of n){let n=`${e.provider.trim()}/${e.model.trim()}`,a=t.get(n);if(a===void 0)continue;let o=a.filter(e=>r.has(e));if(i===null)i=o;else{let e=new Set(o);i=i.filter(t=>e.has(t))}}if(i===null)return[...I];let a=new Set(i);return I.filter(e=>a.has(e))}var De=0;function Oe(e={}){return{provider:e.provider??``,model:e.model??``,...e.weight===void 0?{}:{weight:e.weight},clientKey:e.clientKey??`ct-${++De}`}}function ke(e){return e===`disabled`?`disabled`:`auto`}var Ae=/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}$/,je=/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}(\/[a-zA-Z0-9][a-zA-Z0-9._-]{0,63})?$/,Me=/^(?:gpt-|o1-|o3-|o4-|codex-)/;function Ne(e){return Ae.test(e.trim())}function Pe(e){return`combo/${e.trim()}`}function Fe(e,t){return(typeof t==`string`?t.trim():``)||Pe(e)}function Ie(e,t){let n=t.trim(),r=e.nativeAlias&&(!n||n.includes(`/`)||!Me.test(n));return{...e,alias:n?t:null,model:Fe(e.id,t),...r?{nativeAlias:!1,displayName:null}:{}}}function Le(e){return typeof e==`string`&&e.trim()?e.trim():null}function Re(e){return e===`round-robin`?`round-robin`:`failover`}function ze(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=100?e:1}function R(e){return typeof e==`string`&&I.includes(e)?e:null}function Be(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=1e4?e:void 0}function Ve(e){if(!e||typeof e!=`object`)return[];let t=e.combos;if(!Array.isArray(t))return[];let n=[];for(let e of t){if(!e||typeof e!=`object`)continue;let t=e,r=typeof t.id==`string`?t.id.trim():``;if(!r)continue;let i=Array.isArray(t.targets)?t.targets:[],a=[];for(let e of i){if(!e||typeof e!=`object`)continue;let t=e,n=typeof t.provider==`string`?t.provider.trim():``,r=typeof t.model==`string`?t.model.trim():``;if(!n||!r)continue;let i=Be(t.weight);a.push(Oe(i===void 0?{provider:n,model:r}:{provider:n,model:r,weight:i}))}n.push({id:r,model:typeof t.model==`string`&&t.model.trim()?t.model.trim():Fe(r,Le(t.alias)),alias:Le(t.alias),nativeAlias:t.nativeAlias===!0,displayName:Le(t.displayName),strategy:Re(t.strategy),stickyLimit:ze(t.stickyLimit),defaultEffort:R(t.defaultEffort),imageInput:ke(t.imageInput),targets:a})}return n.sort((e,t)=>e.id.localeCompare(t.id,void 0,{sensitivity:`base`}))}function He(e){let t=[],n=[];for(let r of e)r.strategy===`round-robin`?n.push(r):t.push(r);return{failover:t,roundRobin:n}}function Ue(e,t){let n=t.trim().toLowerCase();return n?e.filter(e=>e.id.toLowerCase().includes(n)||e.model.toLowerCase().includes(n)?!0:e.targets.some(e=>e.provider.toLowerCase().includes(n)||e.model.toLowerCase().includes(n))):e}function We(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:null}function z(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function Ge(e,t){let n=z(e);return n!==null&&t-n<18e5}function Ke(e){let t=z(e);return t!==null&&Number.isInteger(t)&&t>=0?t:null}function qe(e,t){let n=We(e),r=z(n?.usedPercent);return!!n&&r!==null&&r>=0&&Ke(n.includedAccounts)!==null&&(Ke(n.includedAccounts)??0)>0&&Ke(n.excludedAccounts)===0&&n.incomplete===!1&&Ge(n.updatedAt,t)}function Je(e,t){let n=We(e);if(!n||n.kind!==`capacity-weighted-v1`||n.scope!==`routable-known`||n.presentation!==`aggregate`||n.incomplete!==!1)return!1;for(let e of[`includedAccounts`,`excludedAccounts`,`unknownPlanAccounts`,`missingQuotaAccounts`,`pausedAccounts`,`reauthAccounts`,`staleQuotaAccounts`,`partialWindowAccounts`])if(Ke(n[e])===null)return!1;if((Ke(n.includedAccounts)??0)===0)return!1;for(let e of[`excludedAccounts`,`unknownPlanAccounts`,`missingQuotaAccounts`,`pausedAccounts`,`reauthAccounts`,`staleQuotaAccounts`,`partialWindowAccounts`])if(n[e]!==0)return!1;let r=!1;for(let e of[`fiveHour`,`weekly`,`monthly`])if(Object.hasOwn(n,e)){if(!qe(n[e],t))return!1;r=!0}if(Object.hasOwn(n,`customWindows`)){if(!Array.isArray(n.customWindows))return!1;for(let e of n.customWindows){let n=We(e);if(!n||typeof n.label!=`string`||!n.label.trim()||!qe(n,t))return!1;r=!0}}return r}function Ye(e,t){if(!Ge(e.updatedAt,t))return`unknown`;let n=We(e.quota);if(!n||!Ge(n.updatedAt,t)||e.aggregation!==void 0&&!Je(e.aggregation,t))return`unknown`;let r=!1,i=!1;for(let e of[`fiveHourPercent`,`weeklyPercent`,`monthlyPercent`]){if(!Object.hasOwn(n,e))continue;let t=z(n[e]);if(t===null||t<0)return`unknown`;r=!0,t>=100&&(i=!0)}for(let e of[`fiveHourResetAt`,`weeklyResetAt`,`monthlyResetAt`])if(Object.hasOwn(n,e)&&z(n[e])===null)return`unknown`;if(Object.hasOwn(n,`customWindows`)){if(!Array.isArray(n.customWindows))return`unknown`;for(let e of n.customWindows){let t=We(e),n=z(t?.percent);if(!t||typeof t.label!=`string`||!t.label.trim()||n===null||n<0||Object.hasOwn(t,`resetAt`)&&z(t.resetAt)===null)return`unknown`;r=!0,n>=100&&(i=!0)}}if(Object.hasOwn(n,`creditsUsd`)){let e=We(n.creditsUsd);if(!e)return`unknown`;let t=z(e.used),a=z(e.limit),o=z(e.remaining),s=z(e.percent);if(t===null||t<0||a===null||a<0||o===null||s===null||s<0||e.unlimited!==void 0&&typeof e.unlimited!=`boolean`||Object.hasOwn(e,`expiresAt`)&&z(e.expiresAt)===null)return`unknown`;r=!0,e.unlimited!==!0&&o<=0&&(i=!0)}return r?i?`exhausted`:`available`:`unknown`}function Xe(e,t=Date.now()){if(!Array.isArray(e))return{};let n={};for(let r of e){let e=We(r),i=typeof e?.provider==`string`?e.provider.trim():``;if(!e||!i)continue;let a=Ye(e,t);n[i]=Object.hasOwn(n,i)&&n[i]!==a?`unknown`:a}return n}function Ze(e,t,n){let r=e.flatMap(e=>{let t=e.provider.trim();return!t||!e.model.trim()||!Object.hasOwn(n,t)||n[t]?.disabled===!0?[]:[t]});if(r.length===0)return`unknown`;let i=!1;for(let e of r){let n=t[e]??`unknown`;if(n===`available`)return`available`;n===`unknown`&&(i=!0)}return i?`unknown`:`exhausted`}function Qe(e,t={}){let n=[],r=t.cataloguedComboIds;for(let i of e)i.targets.length===0?n.push({id:i.id,model:i.model,reason:`empty-targets`}):i.targets.length<2&&n.push({id:i.id,model:i.model,reason:`few-targets`}),r&&i.targets.length>0&&!r.has(i.id)&&n.push({id:i.id,model:i.model,reason:`catalog-omitted`}),t.providerQuotaStates&&t.providers&&Ze(i.targets,t.providerQuotaStates,t.providers)===`exhausted`&&n.push({id:i.id,model:i.model,reason:`all-targets-exhausted`});return n}function B(e,t){return e.id!==t.id||e.alias!==t.alias||e.nativeAlias!==t.nativeAlias||e.displayName!==t.displayName||e.strategy!==t.strategy||e.stickyLimit!==t.stickyLimit||e.defaultEffort!==t.defaultEffort||(e.imageInput??`auto`)!==(t.imageInput??`auto`)||e.targets.length!==t.targets.length?!1:e.targets.every((e,n)=>{let r=t.targets[n];return e.provider===r.provider&&e.model===r.model&&(e.weight??1)===(r.weight??1)})}function $e(e,t={}){return{id:e.id.trim(),...t.renameFrom?{renameFrom:t.renameFrom}:{},combo:{targets:e.targets.map(t=>e.strategy===`round-robin`?{provider:t.provider.trim(),model:t.model.trim(),weight:t.weight??1}:{provider:t.provider.trim(),model:t.model.trim()}),strategy:e.strategy,defaultEffort:e.defaultEffort,...e.imageInput===`disabled`?{imageInput:`disabled`}:{},...e.strategy===`round-robin`?{stickyLimit:e.stickyLimit}:{},...e.alias&&e.alias.trim()?{alias:e.alias.trim()}:{},...e.nativeAlias?{nativeAlias:!0}:{},...e.displayName&&e.displayName.trim()?{displayName:e.displayName.trim()}:{}}}}function V(e,t){let n=e.id.trim();if(!n)return`missingId`;if(!Ne(n))return`invalidId`;if(t.existingIds.includes(n))return`duplicateId`;if(Object.hasOwn(t.providers,`combo`))return`reservedNamespace`;if(Object.hasOwn(t.providers,n))return`providerCollision`;let r=e.alias?.trim()??``,i=e.displayName?.trim()??``;if(r){if(!je.test(r))return`invalidAlias`;if(r===`combo`||r.startsWith(`combo/`))return`aliasReservedNamespace`;if(!r.includes(`/`)&&Me.test(r)&&!e.nativeAlias)return`aliasNativeFamily`;if((t.existingAliases??[]).includes(r))return`duplicateAlias`}let a=[...e.displayName??``].some(e=>{let t=e.codePointAt(0)??0;return t<=31||t===127});if(e.displayName!==null&&(i.length>128||a))return`invalidDisplayName`;if(e.nativeAlias&&!Ee.has(r))return`unsupportedNativeAlias`;if(e.nativeAlias&&!i)return`missingNativeAliasDisplayName`;if(e.targets.length<1)return`noTargets`;for(let n of e.targets){if(!n.provider.trim()||!n.model.trim())return`incompleteTarget`;if(!Object.hasOwn(t.providers,n.provider.trim()))return`unknownProvider`}let o=new Set;for(let t of e.targets){let e=`${t.provider.trim()}/${t.model.trim()}`;if(o.has(e))return`duplicateTarget`;o.add(e)}if(e.strategy===`round-robin`){if(!Number.isInteger(e.stickyLimit)||e.stickyLimit<1||e.stickyLimit>100)return`invalidStickyLimit`;for(let t of e.targets){let e=t.weight??1;if(!Number.isInteger(e)||e<1||e>1e4)return`invalidWeight`}}return e.targets.some(e=>t.providers[e.provider.trim()]?.disabled!==!0)?null:`noEnabledTarget`}function et(e=``){return{id:e,model:e?Pe(e):`combo/`,alias:null,nativeAlias:!1,displayName:null,strategy:`failover`,stickyLimit:1,defaultEffort:null,imageInput:`auto`,targets:[Oe()]}}function tt(e,t){if(e.length===0)return!1;let n=new Set(t.filter(e=>e.inputModalities?.includes(`image`)).map(e=>`${e.provider}\0${e.id}`));return e.every(e=>{let t=e.provider.trim(),r=e.model.trim();return!t||!r?!1:n.has(`${t}\0${r}`)})}function H(e){return e.filter(e=>!e.disabled&&!e.hiddenFromPicker).sort((e,t)=>e.name.localeCompare(t.name))}function U(e,t,n){if(e===``)return;let r=Number(e);if(Number.isFinite(r))return Math.min(n,Math.max(t,r))}function nt(e){if(!e)return!1;let t=e.name.toLowerCase();if(t!==`openai`&&t!==`chatgpt`||(e.authMode??``).toLowerCase()!==`forward`||(e.adapter??``).toLowerCase()!==`openai-responses`)return!1;let n=(e.baseUrl??``).replace(/\/+$/,``);return!n||n.includes(`chatgpt.com/backend-api/codex`)}function rt(e,t,n){let r=new Set([t]),i=n.find(e=>e.name===t);(t.toLowerCase()===`chatgpt`||nt(i))&&r.add(`openai`);let a=[],o=new Set;for(let t of e)!r.has(t.provider)||!t.id||o.has(t.id)||(o.add(t.id),a.push(t.id));return a.toSorted((e,t)=>e.localeCompare(t))}var W=i();function it({value:e,onChange:n,disabled:r}){let i=t();return(0,W.jsx)(`div`,{className:`cwi-strategy-seg`,role:`radiogroup`,"aria-label":i(`cws.strategy`),children:[[`failover`,`cws.strategy.failover`],[`round-robin`,`cws.strategy.roundRobin`]].map(([t,a])=>(0,W.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":e===t,className:`btn btn-sm${e===t?` btn-primary`:` btn-ghost`}`,disabled:r,onClick:()=>n(t),children:i(a)},t))})}function at({id:e,value:n,onChange:r,disabled:i,allowedEfforts:a}){let o=t(),s=a??I,c=n!==null&&!s.includes(n);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`select`,{id:e,className:`input`,value:n??``,disabled:i,"aria-label":o(`cws.field.defaultEffort`),onChange:e=>r(e.target.value===``?null:e.target.value),children:[(0,W.jsx)(`option`,{value:``,children:o(`cws.field.defaultEffortNone`)}),c&&n?(0,W.jsxs)(`option`,{value:n,children:[n,` (`,o(`cws.field.defaultEffortUnsupportedOption`),`)`]}):null,s.map(e=>(0,W.jsx)(`option`,{value:e,children:e},e))]}),c?(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`4px 0 0`,color:`var(--danger, #b42318)`},children:o(`cws.field.defaultEffortUnsupported`)}):null]})}function G({targets:e,models:n,imageInput:r,disabled:i,onChange:a}){let o=t(),s=tt(e,n),c=s&&r!==`disabled`;return(0,W.jsxs)(`section`,{className:`cwi-capabilities`,"aria-label":o(`cws.capabilities`),children:[(0,W.jsx)(`span`,{className:`field-label`,children:o(`cws.capabilities`)}),(0,W.jsxs)(`div`,{className:`cwi-capability-row`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`cwi-capability-label`,children:o(`cws.capability.imageInput`)}),(0,W.jsx)(`p`,{className:`muted cwi-capability-hint`,children:o(s?`cws.capability.imageInputHint`:`cws.capability.imageInputUnavailable`)})]}),(0,W.jsx)(h,{on:c,onClick:()=>{s&&a({imageInput:r===`auto`?`disabled`:`auto`})},disabled:i||!s,label:o(`cws.capability.imageInput`)})]})]})}function ot({targets:e,strategy:n,providers:r,models:i,providerQuotaStates:a,onChange:s}){let c=t(),u=H(r),[d,p]=(0,P.useState)(null),[m,h]=(0,P.useState)(null),g=(t,n)=>{s(e.map((e,r)=>r===t?{...e,...n}:e))},_=(t,n)=>{if(t===n||t<0||n<0||t>=e.length||n>=e.length)return;let r=[...e],[i]=r.splice(t,1);r.splice(n,0,i),s(r)};return(0,W.jsxs)(`div`,{className:`cwi-target-list`,children:[e.map((t,v)=>{let y=r.find(e=>e.name===t.provider),b=y&&!u.some(e=>e.name===t.provider)?[...u,y]:u,x=rt(i,t.provider,r),S=t.model&&!x.includes(t.model)?[t.model,...x]:x,w=!t.provider,T=d===v,E=m===v&&d!==null&&d!==v,D=a[t.provider.trim()]??`unknown`;return(0,W.jsxs)(`div`,{className:[`cwi-target-row`,n===`failover`?`cwi-target-row--failover`:``,T?`cwi-target-row--dragging`:``,E?`cwi-target-row--drop`:``].filter(Boolean).join(` `),onDragOver:e=>{d!==null&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,m!==v&&h(v))},onDrop:e=>{e.preventDefault(),d!==null&&_(d,v),p(null),h(null)},onDragEnd:()=>{p(null),h(null)},children:[(0,W.jsx)(`button`,{type:`button`,className:`cwi-target-grip`,draggable:!0,"aria-label":c(`cws.target.drag`),title:c(`cws.target.drag`),onDragStart:e=>{p(v),e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,String(v))},children:(0,W.jsx)(o,{width:14,height:14,"aria-hidden":`true`})}),(0,W.jsxs)(`div`,{className:`cwi-target-reorder`,children:[(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:v===0,"aria-label":c(`cws.target.moveUp`),onClick:()=>_(v,v-1),children:(0,W.jsx)(f,{width:14,height:14,"aria-hidden":`true`})}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:v===e.length-1,"aria-label":c(`cws.target.moveDown`),onClick:()=>_(v,v+1),children:(0,W.jsx)(C,{width:14,height:14,"aria-hidden":`true`})})]}),(0,W.jsxs)(`select`,{className:`input`,value:t.provider,"aria-label":c(`cws.target.provider`),onChange:e=>{let t=e.target.value,n=rt(i,t,r)[0]??``;g(v,{provider:t,model:n})},children:[(0,W.jsx)(`option`,{value:``,children:c(`cws.target.pickProvider`)}),b.map(e=>(0,W.jsx)(`option`,{value:e.name,children:e.disabled?c(`cws.target.disabled`,{name:l(e.name,c)}):l(e.name,c)},e.name))]}),(0,W.jsxs)(`select`,{className:`input`,value:t.model,disabled:w,"aria-label":c(`cws.target.model`),onChange:e=>g(v,{model:e.target.value}),children:[(0,W.jsx)(`option`,{value:``,children:w?c(`cws.target.pickProviderFirst`):S.length===0?c(`cws.target.noModels`):c(`cws.target.pickModel`)}),S.map(e=>(0,W.jsx)(`option`,{value:e,children:e},e))]}),n===`round-robin`&&(0,W.jsx)(`input`,{className:`input mono`,type:`number`,min:1,max:1e4,value:t.weight??1,"aria-label":c(`cws.target.weight`),onChange:e=>{let t=U(e.target.value,1,1e4);t!==void 0&&g(v,{weight:t})}}),(0,W.jsx)(`span`,{className:`cwi-quota-badge cwi-quota-badge--${D}`,"aria-label":c(`cws.quota.${D}`),children:c(`cws.quota.${D}`)}),(0,W.jsx)(`div`,{className:`cwi-target-actions`,children:(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:e.length<=1,onClick:()=>s(e.filter((e,t)=>t!==v)),"aria-label":c(`common.remove`),children:(0,W.jsx)(me,{width:14,height:14})})})]},t.clientKey??`${t.provider}:${t.model}`)}),(0,W.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,style:{alignSelf:`flex-start`},onClick:()=>s([...e,Oe()]),children:[(0,W.jsx)(N,{width:14,height:14}),` `,c(`cws.target.add`)]})]})}function st({existingIds:e,existingAliases:n,providerMap:r,providerQuotaStates:i,providers:a,models:o,onClose:s,onSubmit:c}){let l=t(),u=(0,P.useRef)(null),[f,p]=(0,P.useState)(()=>et()),[m,h]=(0,P.useState)(!1),[g,_]=(0,P.useState)(``),v=(0,P.useMemo)(()=>{let e=new Map;for(let t of o)e.set(`${t.provider}/${t.id}`,t.reasoningEfforts);return e},[o]),y=(0,P.useMemo)(()=>L(f.targets,v),[f.targets,v]),b=Ze(f.targets,i,r)===`exhausted`;(0,P.useEffect)(()=>{let e=u.current;e&&!e.open&&e.showModal()},[]);let x=(0,P.useCallback)(()=>{m||s()},[m,s]),S=(0,P.useCallback)(e=>{e.preventDefault(),x()},[x]),C=async()=>{let t=V(f,{existingIds:e,existingAliases:n,isCreate:!0,providers:r});if(t){_(l(`cws.err.${t}`));return}h(!0),_(``);let i=f.id.trim(),a=f.alias?.trim()||null;try{let e=await c({...f,id:i,alias:a,model:Fe(i,a)});if(!e.ok){_(e.error||l(`cws.saveFailed`));return}}finally{h(!1)}};return(0,W.jsxs)(`dialog`,{ref:u,className:`modal-overlay`,"aria-labelledby":`cwi-add-title`,onCancel:S,children:[(0,W.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":l(`common.close`),tabIndex:-1,onClick:x}),(0,W.jsxs)(`div`,{className:`modal-card`,style:{width:`min(560px, 94vw)`},onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`div`,{className:`row`,style:{justifyContent:`space-between`,marginBottom:8},children:[(0,W.jsx)(`h3`,{id:`cwi-add-title`,style:{margin:0},children:l(`cws.addTitle`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:x,disabled:m,"aria-label":l(`common.close`),children:(0,W.jsx)(he,{width:16,height:16})})]}),(0,W.jsx)(`p`,{className:`muted`,style:{marginTop:0,maxWidth:`62ch`,overflowWrap:`anywhere`},children:l(`cws.addSubtitle`)}),g&&(0,W.jsx)(d,{tone:`err`,children:g}),b&&(0,W.jsx)(`div`,{className:`cwi-quota-banner`,role:`status`,"aria-live":`polite`,children:l(`cws.quota.allExhausted`)}),(0,W.jsxs)(`div`,{className:`cwi-modal-form`,children:[(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`label`,{htmlFor:`cwi-new-id`,children:l(`cws.field.id`)}),(0,W.jsx)(`input`,{id:`cwi-new-id`,className:`input mono`,value:f.id,disabled:m,onChange:e=>p(t=>({...t,id:e.target.value,model:Fe(e.target.value,t.alias)}))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:l(`cws.field.idInternalHint`)})]}),(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`label`,{htmlFor:`cwi-new-alias`,children:l(`cws.field.alias`)}),(0,W.jsx)(`input`,{id:`cwi-new-alias`,className:`input mono`,value:f.alias??``,placeholder:l(`cws.field.aliasPlaceholder`),disabled:m,onChange:e=>p(t=>({...t,alias:e.target.value.trim()?e.target.value:null,model:Fe(t.id,e.target.value)}))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:l(`cws.field.aliasHint`)}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:l(`cws.field.idHint`,{model:f.id.trim()?Fe(f.id,f.alias):`…`})})]}),(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`span`,{className:`field-label`,children:l(`cws.strategy`)}),(0,W.jsx)(it,{value:f.strategy,disabled:m,onChange:e=>p(t=>({...t,strategy:e}))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:f.strategy===`failover`?l(`cws.strategy.failoverHint`):l(`cws.strategy.roundRobinHint`)})]}),(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`label`,{htmlFor:`cwi-new-effort`,children:l(`cws.field.defaultEffort`)}),(0,W.jsx)(at,{id:`cwi-new-effort`,value:f.defaultEffort,disabled:m,allowedEfforts:y,onChange:e=>p(t=>({...t,defaultEffort:e}))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:l(`cws.field.defaultEffortHint`)})]}),f.strategy===`round-robin`&&(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`label`,{htmlFor:`cwi-new-sticky`,children:l(`cws.field.stickyLimit`)}),(0,W.jsx)(`input`,{id:`cwi-new-sticky`,className:`input mono`,type:`number`,min:1,max:100,value:f.stickyLimit,disabled:m,onChange:e=>{let t=U(e.target.value,1,100);t!==void 0&&p(e=>({...e,stickyLimit:t}))}}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:l(`cws.field.stickyLimitHint`)})]}),(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`span`,{className:`field-label`,children:l(`cws.targets`)}),(0,W.jsx)(ot,{targets:f.targets,strategy:f.strategy,providers:a,models:o,providerQuotaStates:i,onChange:e=>p(t=>({...t,targets:e}))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:f.strategy===`failover`?l(`cws.targets.failoverHint`):l(`cws.targets.roundRobinHint`)})]}),(0,W.jsx)(G,{targets:f.targets,models:o,imageInput:f.imageInput??`auto`,disabled:m,onChange:e=>p(t=>({...t,...e}))})]}),(0,W.jsxs)(`div`,{className:`cwi-modal-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:x,disabled:m,children:l(`common.cancel`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>{C()},disabled:m||b,children:l(m?`common.saving`:`cws.create`)})]})]})]})}var ct=[`config`,`about`],lt=e=>`cws-detail-tab-${e}`,ut=e=>`cws-detail-panel-${e}`;function K({baseline:e,isCreate:n=!1,otherIds:r,otherAliases:i,providerMap:a,providerQuotaStates:o,providers:s,models:c,onBack:l,onSaved:u,onRequestRemove:f,onSave:p,onDirtyChange:m}){let h=t(),[g,_]=(0,P.useState)(`config`),v=(0,P.useCallback)((e,t)=>{let n;if(e.key===`ArrowRight`)n=(t+1)%ct.length;else if(e.key===`ArrowLeft`)n=(t-1+ct.length)%ct.length;else if(e.key===`Home`)n=0;else if(e.key===`End`)n=ct.length-1;else return;e.preventDefault(),_(ct[n]),e.currentTarget.parentElement?.querySelectorAll(`[role="tab"]`)[n]?.focus()},[]),[y,b]=(0,P.useState)(e),[x,S]=(0,P.useState)(!1),[C,T]=(0,P.useState)(null),[E,D]=(0,P.useState)(!1),O=!B(y,e),ee=Ze(y.targets,o,a)===`exhausted`,k=`${e.id}:${e.alias??``}:${e.nativeAlias}:${e.displayName??``}:${e.strategy}:${e.stickyLimit}:${e.defaultEffort}:${e.imageInput??`auto`}:${e.targets.map(e=>`${e.provider}/${e.model}:${e.weight??1}`).join(`,`)}`,A=(0,P.useMemo)(()=>{let e=new Map;for(let t of c)e.set(`${t.provider}/${t.id}`,t.reasoningEfforts);return e},[c]),te=(0,P.useMemo)(()=>L(y.targets,A),[y.targets,A]),j=(0,P.useCallback)(t=>{let n=t(y);b(n),m(!B(n,e))},[y,e,m]);(0,P.useEffect)(()=>{let t=window.setTimeout(()=>{b(e),T(null),_(`config`),m(!1)},0);return()=>window.clearTimeout(t)},[k]);let M=async()=>{try{await navigator.clipboard.writeText(e.model),D(!0),window.setTimeout(()=>D(!1),1200)}catch{}},ne=async()=>{let t=V(y,{existingIds:r,existingAliases:i,isCreate:n,providers:a});if(t){T({ok:!1,text:h(`cws.err.${t}`)});return}S(!0);let o=y.id.trim(),s=y.alias?.trim()||null,c=y.displayName?.trim()||null,l={...y,id:o,alias:s,displayName:c,model:Fe(o,s)},d=!n&&o!==e.id?e.id:void 0;try{let e=await p(l,n,d);if(!e.ok){T({ok:!1,text:e.error||h(`cws.saveFailed`)});return}T({ok:!0,text:n?h(`cws.created`,{model:l.model}):h(`cws.saved`)}),u(l)}finally{S(!1)}},N=n?y.id.trim()?Fe(y.id,y.alias):h(`cws.addTitle`):e.model;return(0,W.jsxs)(`div`,{className:`combos-workspace-detail`,children:[(0,W.jsxs)(`div`,{className:`combos-workspace-detail-head`,children:[l&&(0,W.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm pwi-back-overview`,onClick:l,"aria-label":h(`cws.backToAll`),children:[(0,W.jsx)(w,{style:{width:14,height:14,transform:`rotate(180deg)`},"aria-hidden":`true`}),h(`cws.allCombos`)]}),(0,W.jsx)(`h2`,{className:`combos-workspace-detail-title`,children:N}),!n&&(0,W.jsx)(`button`,{type:`button`,className:`chip cwi-copy-chip`,onClick:()=>{M()},title:h(`cws.copyModel`),children:h(E?`cws.copied`:`cws.copyModel`)}),(0,W.jsxs)(`div`,{className:`combos-workspace-detail-actions`,children:[!n&&f&&(0,W.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:f,children:[(0,W.jsx)(me,{width:14,height:14}),` `,h(`common.remove`)]}),(0,W.jsx)(`button`,{id:n?`cwi-edit-create`:`cwi-edit-save`,type:`button`,className:`btn btn-primary btn-sm`,disabled:!n&&!O||x||ee,onClick:()=>{ne()},children:h(x?`common.saving`:n?`cws.create`:`common.save`)})]})]}),C&&(0,W.jsx)(d,{tone:C.ok?`ok`:`err`,children:C.text}),ee&&(0,W.jsx)(`div`,{className:`cwi-quota-banner`,role:`status`,"aria-live":`polite`,children:h(`cws.quota.allExhausted`)}),(0,W.jsx)(`div`,{className:`segmented combos-workspace-segmented`,role:`tablist`,"aria-label":h(`cws.tabsLabel`),children:ct.map((e,t)=>(0,W.jsx)(`button`,{type:`button`,role:`tab`,id:lt(e),"aria-selected":g===e,"aria-controls":ut(e),tabIndex:g===e?0:-1,className:`btn btn-sm ${g===e?`btn-primary`:`btn-ghost`}`,onClick:()=>_(e),onKeyDown:e=>v(e,t),children:h(e===`config`?`cws.tab.config`:`cws.tab.about`)},e))}),(0,W.jsx)(`div`,{className:`combos-workspace-tab-content`,role:`tabpanel`,id:ut(`config`),"aria-labelledby":lt(`config`),hidden:g!==`config`,children:(0,W.jsxs)(`div`,{className:`cwi-form-grid`,children:[(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`label`,{htmlFor:`cwi-edit-id`,children:h(`cws.field.id`)}),(0,W.jsx)(`input`,{id:`cwi-edit-id`,className:`input mono`,value:y.id,disabled:x,onChange:e=>j(t=>({...t,id:e.target.value,model:Fe(e.target.value,t.alias)}))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:n?h(`cws.field.idInternalHint`):h(`cws.field.idHintEdit`,{model:Fe(y.id,y.alias)})})]}),(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`label`,{htmlFor:`cwi-edit-alias`,children:h(`cws.field.alias`)}),(0,W.jsx)(`input`,{id:`cwi-edit-alias`,className:`input mono`,value:y.alias??``,placeholder:Pe(y.id.trim()||`…`),disabled:x,onChange:e=>j(t=>Ie(t,e.target.value))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:h(`cws.field.aliasHint`)})]}),(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsxs)(`label`,{htmlFor:`cwi-edit-native-alias`,children:[(0,W.jsx)(`input`,{id:`cwi-edit-native-alias`,type:`checkbox`,checked:y.nativeAlias,disabled:x,onChange:e=>j(t=>({...t,nativeAlias:e.target.checked}))}),` `,h(`cws.field.nativeAlias`)]}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:h(`cws.field.nativeAliasHint`)})]}),(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`label`,{htmlFor:`cwi-edit-display-name`,children:h(`cws.field.displayName`)}),(0,W.jsx)(`input`,{id:`cwi-edit-display-name`,className:`input`,value:y.displayName??``,maxLength:128,disabled:x,onChange:e=>j(t=>({...t,displayName:e.target.value||null}))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:h(`cws.field.displayNameHint`)})]}),(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`span`,{className:`field-label`,children:h(`cws.strategy`)}),(0,W.jsx)(it,{value:y.strategy,disabled:x,onChange:e=>j(t=>({...t,strategy:e}))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:y.strategy===`failover`?h(`cws.strategy.failoverHint`):h(`cws.strategy.roundRobinHint`)})]}),(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`label`,{htmlFor:`cwi-effort`,children:h(`cws.field.defaultEffort`)}),(0,W.jsx)(at,{id:`cwi-effort`,value:y.defaultEffort,disabled:x,allowedEfforts:te,onChange:e=>j(t=>({...t,defaultEffort:e}))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:h(`cws.field.defaultEffortHint`)})]}),y.strategy===`round-robin`&&(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`label`,{htmlFor:`cwi-sticky`,children:h(`cws.field.stickyLimit`)}),(0,W.jsx)(`input`,{id:`cwi-sticky`,className:`input mono`,type:`number`,min:1,max:100,value:y.stickyLimit,disabled:x,onChange:e=>{let t=U(e.target.value,1,100);t!==void 0&&j(e=>({...e,stickyLimit:t}))}})]}),(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`span`,{className:`field-label`,children:h(`cws.targets`)}),(0,W.jsx)(ot,{targets:y.targets,strategy:y.strategy,providers:s,models:c,providerQuotaStates:o,onChange:e=>j(t=>({...t,targets:e}))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:y.strategy===`failover`?h(`cws.targets.failoverHint`):h(`cws.targets.roundRobinHint`)})]}),(0,W.jsx)(G,{targets:y.targets,models:c,imageInput:y.imageInput??`auto`,disabled:x,onChange:e=>j(t=>({...t,...e}))})]})}),(0,W.jsx)(`div`,{className:`combos-workspace-tab-content`,role:`tabpanel`,id:ut(`about`),"aria-labelledby":lt(`about`),hidden:g!==`about`,tabIndex:0,children:(0,W.jsxs)(`section`,{className:`pwi-section`,children:[(0,W.jsx)(`h3`,{className:`pwi-section-title`,children:h(`cws.aboutTitle`)}),(0,W.jsx)(`p`,{className:`muted`,style:{margin:0,maxWidth:`70ch`,overflowWrap:`anywhere`},children:h(`cws.aboutBody`)})]})})]})}function dt({model:e,onCancel:n,onConfirm:r}){let i=t(),a=(0,P.useRef)(null);(0,P.useEffect)(()=>{let e=a.current;e&&!e.open&&e.showModal()},[]);let o=(0,P.useCallback)(e=>{e.preventDefault(),n()},[n]);return(0,W.jsxs)(`dialog`,{ref:a,className:`modal-overlay`,"aria-labelledby":`cwi-remove-title`,onCancel:o,children:[(0,W.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":i(`common.close`),tabIndex:-1,onClick:n}),(0,W.jsxs)(`div`,{className:`modal-card pwi-remove-confirm-card`,onClick:e=>e.stopPropagation(),children:[(0,W.jsx)(`h3`,{id:`cwi-remove-title`,className:`pwi-remove-confirm-title`,children:i(`cws.removeConfirmTitle`,{model:e})}),(0,W.jsx)(`p`,{className:`muted pwi-remove-confirm-desc`,children:i(`cws.removeConfirmDesc`)}),(0,W.jsxs)(`div`,{className:`pwi-remove-confirm-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:n,children:i(`common.cancel`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn pwi-remove-confirm-danger`,onClick:r,children:i(`common.remove`)})]})]})]})}function ft({onKeep:e,onDiscard:n}){let r=t(),i=(0,P.useRef)(null);(0,P.useEffect)(()=>{let e=i.current;e&&!e.open&&e.showModal()},[]);let a=(0,P.useCallback)(t=>{t.preventDefault(),e()},[e]);return(0,W.jsxs)(`dialog`,{ref:i,className:`modal-overlay`,"aria-labelledby":`cwi-unsaved-title`,onCancel:a,children:[(0,W.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":r(`common.close`),tabIndex:-1,onClick:e}),(0,W.jsxs)(`div`,{className:`modal-card pwi-json-unsaved-card`,onClick:e=>e.stopPropagation(),children:[(0,W.jsx)(`h3`,{id:`cwi-unsaved-title`,className:`pwi-json-unsaved-title`,children:r(`cws.unsavedTitle`)}),(0,W.jsx)(`p`,{className:`muted pwi-json-unsaved-desc`,children:r(`cws.unsavedDesc`)}),(0,W.jsxs)(`div`,{className:`pwi-json-unsaved-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,"data-testid":`cwi-unsaved-keep`,onClick:e,children:r(`cws.keepEditing`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-danger`,"data-testid":`cwi-unsaved-discard`,onClick:n,children:r(`common.discard`)})]})]})]})}function pt(e,t){return t(e===`empty-targets`?`cws.attention.empty`:e===`catalog-omitted`?`cws.attention.catalogOmitted`:e===`all-targets-exhausted`?`cws.attention.allTargetsExhausted`:`cws.attention.few`)}function mt({combos:e,cataloguedComboIds:n,providerMap:r,providerQuotaStates:i,onSelect:a,onAdd:o}){let s=t(),c=He(e),l=Qe(e,{cataloguedComboIds:n,providers:r,providerQuotaStates:i});return(0,W.jsxs)(`div`,{className:`combos-workspace-overview`,children:[(0,W.jsxs)(`div`,{className:`combos-workspace-overview-head`,children:[(0,W.jsx)(`h2`,{className:`combos-workspace-overview-title`,children:s(`cws.overviewTitle`)}),(0,W.jsxs)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:o,children:[(0,W.jsx)(N,{width:14,height:14}),` `,s(`cws.add`)]})]}),(0,W.jsx)(`p`,{className:`muted`,style:{marginTop:0,maxWidth:`62ch`},children:s(`cws.overviewBlurb`)}),(0,W.jsxs)(`div`,{className:`cwi-count-strip`,children:[(0,W.jsxs)(`div`,{className:`cwi-count-pill`,children:[(0,W.jsx)(`strong`,{children:e.length}),(0,W.jsx)(`span`,{children:s(`cws.count.total`)})]}),(0,W.jsxs)(`div`,{className:`cwi-count-pill`,children:[(0,W.jsx)(`strong`,{children:c.failover.length}),(0,W.jsx)(`span`,{children:s(`cws.count.failover`)})]}),(0,W.jsxs)(`div`,{className:`cwi-count-pill`,children:[(0,W.jsx)(`strong`,{children:c.roundRobin.length}),(0,W.jsx)(`span`,{children:s(`cws.count.roundRobin`)})]})]}),(0,W.jsxs)(`section`,{className:`pwi-section`,"aria-label":s(`cws.howTitle`),children:[(0,W.jsx)(`h3`,{className:`pwi-section-title`,children:s(`cws.howTitle`)}),(0,W.jsx)(`p`,{className:`muted`,style:{margin:0},children:s(`cws.howBody`)})]}),l.length>0&&(0,W.jsxs)(`section`,{className:`pwi-section`,"aria-label":s(`cws.attentionTitle`),children:[(0,W.jsx)(`h3`,{className:`pwi-section-title`,children:s(`cws.attentionTitle`)}),(0,W.jsx)(`div`,{className:`cwi-attention-list`,children:l.map(e=>(0,W.jsxs)(`button`,{type:`button`,className:`cwi-attention-row`,onClick:()=>a(e.id),children:[(0,W.jsx)(S,{width:14,height:14,"aria-hidden":`true`}),(0,W.jsx)(`code`,{className:`chip`,children:e.model}),(0,W.jsx)(`span`,{className:`muted`,children:pt(e.reason,s)}),(0,W.jsx)(w,{width:14,height:14,style:{marginLeft:`auto`},"aria-hidden":`true`})]},`${e.id}:${e.reason}`))})]})]})}function ht({combos:e,providerQuotaStates:n,providers:r,models:i,cataloguedComboIds:a,loading:o,onRefresh:s,onSave:c,onRemove:l,onAdd:u,adding:d,onCloseAdd:f,onCreated:p}){let m=t(),h=(0,P.useMemo)(()=>Object.fromEntries(r.map(e=>[e.name,{disabled:e.disabled}])),[r]),[g,_]=(0,P.useState)(``),[v,y]=(0,P.useState)(null),[b,x]=(0,P.useState)(void 0),[S,C]=(0,P.useState)(null),[T,E]=(0,P.useState)(null),D=(0,P.useMemo)(()=>et(),[]),O=(0,P.useMemo)(()=>Ue(e,g),[e,g]),ee=(0,P.useMemo)(()=>He(O),[O]),A=(0,P.useMemo)(()=>e.flatMap(e=>e.alias?[e.alias]:[]),[e]),te=v&&e.some(e=>e.id===v)?v:null,j=e.find(e=>e.id===te)??null,M=j&&T?.id===j.id?T:j,[ne,re]=(0,P.useState)(!1),ie=[],ae=[];if(M)for(let t of e)t.id!==M.id&&(ie.push(t.id),t.alias&&ae.push(t.alias));let oe=(0,P.useCallback)(e=>{if(e!==te){if(!ne){y(e),E(null);return}x(e)}},[te,ne]),ce=()=>{b!==void 0&&(y(b),E(null),re(!1),x(void 0))},le=()=>x(void 0),ue=b!==void 0&&ne,de=!o&&e.length===0;return(0,W.jsxs)(`div`,{className:`combos-workspace-root`,children:[(0,W.jsxs)(`aside`,{className:`combos-workspace-rail`,"aria-label":m(`cws.railAria`),children:[(0,W.jsxs)(`div`,{className:`combos-workspace-rail-header`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`combos-workspace-rail-title`,children:m(`nav.combos`)}),(0,W.jsx)(`div`,{className:`combos-workspace-rail-count`,children:e.length})]}),(0,W.jsxs)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:()=>{if(de){document.getElementById(`cwi-edit-id`)?.focus();return}u()},"aria-label":m(`cws.add`),children:[(0,W.jsx)(N,{width:14,height:14}),` `,m(`cws.add`)]})]}),(0,W.jsx)(`div`,{className:`cwi-search-row`,children:(0,W.jsxs)(`div`,{className:`cwi-search-wrap`,children:[(0,W.jsx)(k,{className:`cwi-search-icon`,"aria-hidden":`true`}),(0,W.jsx)(`input`,{className:`input cwi-search-input`,value:g,onChange:e=>_(e.target.value),placeholder:m(`cws.searchPlaceholder`),"aria-label":m(`cws.searchPlaceholder`)})]})}),(0,W.jsx)(`div`,{className:`combos-workspace-rail-list`,children:O.length===0&&e.length>0?(0,W.jsx)(`p`,{className:`muted`,style:{padding:`16px`},children:m(`cws.noSearchResults`)}):(0,W.jsx)(W.Fragment,{children:[[`failover`,ee.failover,`cws.group.failover`],[`round-robin`,ee.roundRobin,`cws.group.roundRobin`]].map(([e,t,n])=>t.length>0?(0,W.jsxs)(`div`,{className:`combos-workspace-rail-group`,children:[(0,W.jsxs)(`div`,{className:`combos-workspace-rail-group-head`,children:[(0,W.jsx)(`span`,{className:`pwi-dot`,"aria-hidden":`true`}),m(n),(0,W.jsx)(`span`,{className:`combos-workspace-rail-count`,children:t.length})]}),t.map(e=>(0,W.jsxs)(`button`,{type:`button`,className:`combos-workspace-rail-row${te===e.id?` combos-workspace-rail-row--selected`:``}`,onClick:()=>oe(e.id),"aria-current":te===e.id?`true`:void 0,children:[(0,W.jsx)(`span`,{className:`combos-workspace-rail-icon`,"aria-hidden":`true`,children:(0,W.jsx)(se,{width:16,height:16})}),(0,W.jsx)(`span`,{className:`combos-workspace-rail-name`,children:e.model}),(0,W.jsx)(`span`,{className:`combos-workspace-rail-meta`,children:e.targets.length===1?m(`cws.targetCountOne`):m(`cws.targetCount`,{count:e.targets.length})}),(0,W.jsx)(w,{className:`combos-workspace-rail-chevron`,"aria-hidden":`true`})]},e.id))]},e):null)})})]}),(0,W.jsx)(`div`,{className:`combos-workspace-main`,children:M?(0,W.jsx)(K,{baseline:M,otherIds:ie,otherAliases:ae,providerMap:h,providerQuotaStates:n,providers:r,models:i,onBack:()=>oe(null),onSaved:e=>{re(!1),e.id===M.id?E(e):(y(e.id),E(null)),s()},onRequestRemove:()=>C(M.id),onSave:c,onDirtyChange:re},M.id):de?(0,W.jsx)(K,{baseline:D,isCreate:!0,otherIds:[],otherAliases:[],providerMap:h,providerQuotaStates:n,providers:r,models:i,onSaved:e=>{re(!1),y(e.id),E(e),p(e.id)},onSave:c,onDirtyChange:re},`first-combo`):(0,W.jsx)(mt,{combos:e,cataloguedComboIds:a,providerMap:h,providerQuotaStates:n,onSelect:e=>oe(e),onAdd:u})}),d&&!de&&(0,W.jsx)(st,{existingIds:e.map(e=>e.id),existingAliases:A,providerMap:h,providerQuotaStates:n,providers:r,models:i,onClose:f,onSubmit:async e=>{let t=await c(e,!0);return t.ok&&(f(),p(e.id),y(e.id),E(null)),t}}),S&&(0,W.jsx)(dt,{model:e.find(e=>e.id===S)?.model??Pe(S),onCancel:()=>C(null),onConfirm:()=>{(async()=>{let e=await l(S);C(null),e.ok&&(te===S&&(y(null),E(null)),s())})()}}),ue&&(0,W.jsx)(ft,{onKeep:le,onDiscard:ce})]})}function gt(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e.error;return typeof t==`string`&&t.trim()?t:void 0}function _t(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&e.success===!0}function vt(e){return re(e)?.data??null}function yt(e){return re(e)?.cachedAt??null}function bt({apiBase:e,active:n=!0,onCountChange:r}){let i=t(),a=`ocx.combos.workspace.v1:${e}`,o=(0,P.useMemo)(()=>vt(a),[a]),[s,c]=(0,P.useState)(o??null),[l,u]=(0,P.useState)(``),[f,p]=(0,P.useState)(!1),[m,h]=(0,P.useState)(!1),g=(e,t)=>{u(e),p(t)};(0,P.useEffect)(()=>{if(!l||!f)return;let e=window.setTimeout(()=>{u(``),p(!1)},5e3);return()=>window.clearTimeout(e)},[l,f]);let _=(0,P.useCallback)(async t=>{let[n,r,i]=await Promise.all([fetch(`${e}/api/combos`,{signal:t}),fetch(`${e}/api/config`,{signal:t}),fetch(`${e}/api/models`,{signal:t})]);if(!n.ok||!r.ok||!i.ok)throw Error(`combo workspace load failed`);let o=await n.json(),s=await r.json(),l=await i.json(),u=Array.isArray(l)?l:Array.isArray(l?.models)?l.models:[],d=Ve(o),f=s.providers??{},p=Se(f),m=Object.entries(f).map(([e,t])=>({name:e,disabled:!!t.disabled,hiddenFromPicker:!Object.hasOwn(p,e),authMode:t.authMode,adapter:t.adapter,baseUrl:t.baseUrl})),h=[],g=new Set;for(let e of u){if(!e||typeof e!=`object`)continue;let t=e;if(typeof t.provider!=`string`||typeof t.id!=`string`)continue;let n=t.provider.trim(),r=t.id.trim();if(!n||!r)continue;if(n===`combo`){g.add(r);continue}if(t.disabled===!0)continue;let i=Array.isArray(t.reasoningEfforts)?t.reasoningEfforts.filter(e=>typeof e==`string`):void 0,a=Array.isArray(t.inputModalities)?t.inputModalities.flatMap(e=>{if(typeof e!=`string`)return[];let t=e.trim();return t?[t]:[]}):void 0;h.push({provider:n,id:r,namespaced:typeof t.namespaced==`string`?t.namespaced:void 0,...i?{reasoningEfforts:i}:{},...a&&a.length>0?{inputModalities:a}:{}})}for(let[e,t]of Object.entries(f)){let n=typeof t.defaultModel==`string`?t.defaultModel.trim():``;!n||t.disabled||h.some(t=>t.provider===e&&t.id===n)||h.push({provider:e,id:n,namespaced:`${e}/${n}`})}let _={combos:d,providers:m,models:h,cataloguedComboIds:[...g]};return A(a,_),c(_),_},[e,a]),v=_e(a,[e],_,{isEmpty:()=>!1,initialData:o??void 0,initialDataCachedAt:yt(a),staleAfterMs:6e4,enabled:n}),{state:y}=v,b=(0,P.useCallback)(async t=>{let n=await fetch(`${e}/api/provider-quotas`,{signal:t});if(!n.ok)throw Error(`combo quota load failed`);let r=await n.json();return r&&typeof r==`object`&&!Array.isArray(r)?r:{}},[e]),x=_e(`ocx.combos.provider-quotas.v1:${e}`,[e],b,{isEmpty:()=>!1,pollMs:6e4,pauseWhenHidden:!0,enabled:n}),S=(0,P.useMemo)(()=>x.lastAttemptOk?Xe(x.data?.reports):{},[x.data,x.lastAttemptOk]),C=y.data??s??void 0,w=C?.combos??[];(0,P.useEffect)(()=>{C&&r?.(w.length)},[w.length,C,r]);let T=C?.providers??[],E=C?.models??[],D=new Set(C?.cataloguedComboIds??[]),O=async(t,n,r)=>{try{let a=await fetch(`${e}/api/combos`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify($e(t,r?{renameFrom:r}:{}))}),o=a.ok?await a.json():await a.json().catch(()=>null),s=gt(o);if(!a.ok||s||!_t(o)){let e=s||i(`cws.saveFailed`);return g(e,!1),{ok:!1,error:e}}return v.refresh(),g(r?i(`cws.renamed`,{from:Pe(r),to:t.model}):n?i(`cws.created`,{model:t.model}):i(`cws.saved`),!0),{ok:!0}}catch{let e=i(`cws.saveFailed`);return g(e,!1),{ok:!1,error:e}}},ee=async t=>{try{let n=await fetch(`${e}/api/combos?id=${encodeURIComponent(t)}`,{method:`DELETE`}),r=n.ok?await n.json():await n.json().catch(()=>null),a=gt(r);if(!n.ok||a||!_t(r)){let e=a||i(`cws.removeFailed`);return g(e,!1),{ok:!1,error:e}}return v.refresh(),g(i(`cws.removed`,{id:t}),!0),{ok:!0}}catch{let e=i(`cws.removeFailed`);return g(e,!1),{ok:!1,error:e}}};if(y.showSkeleton&&!C)return(0,W.jsx)(ye,{label:i(`cws.loading`),rows:5});if(y.kind===`failed-cold`&&!C){let e=y.error instanceof Error?y.error.message:i(`cws.loadFailed`);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(d,{tone:`err`,children:e}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>v.refresh(),children:i(`common.retry`)})]})}return(0,W.jsxs)(`div`,{className:`combos-workspace-shell`,children:[l&&(0,W.jsx)(`div`,{className:`combos-workspace-shell-banner`,children:(0,W.jsx)(d,{tone:f?`ok`:`err`,children:l})}),y.showError&&(0,W.jsx)(`div`,{className:`combos-workspace-shell-banner`,children:(0,W.jsx)(d,{tone:`err`,children:i(`cws.loadFailed`)})}),(0,W.jsxs)(`div`,{className:`combos-workspace-shell-body`,"aria-busy":y.refreshing,children:[(0,W.jsx)(`span`,{className:`sr-only`,role:`status`,"aria-live":`polite`,"aria-atomic":`true`,children:y.refreshing?i(`common.loading`):``}),(0,W.jsx)(ht,{combos:w,providerQuotaStates:S,providers:T,models:E,cataloguedComboIds:D,loading:!1,onRefresh:()=>v.refresh(),onSave:O,onRemove:ee,onAdd:()=>h(!0),adding:m,onCloseAdd:()=>h(!1),onCreated:()=>v.refresh()})]})]})}var xt=0;function St(){return xt+=1,`candidate-${xt}`}function Ct(e,t){return{provider:e,model:t,key:St()}}function wt(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(!n||typeof n!=`object`||Array.isArray(n))continue;let e=typeof n.suiteId==`string`?n.suiteId.trim():``,r=n.evidenceLayer;!e||r!==`protocol_conformance`&&r!==`live_route_compatibility`||t.push({suiteId:e,evidenceLayer:r})}return t}function Tt(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e,n={requiredSuites:wt(t.requiredSuites)};return(t.minStatus===`PROBED`||t.minStatus===`VERIFIED`)&&(n.minStatus=t.minStatus),typeof t.maxEvidenceAgeMs==`number`&&Number.isFinite(t.maxEvidenceAgeMs)&&t.maxEvidenceAgeMs>=0&&(n.maxEvidenceAgeMs=t.maxEvidenceAgeMs),(t.unknownEvidence===`allow`||t.unknownEvidence===`penalize`||t.unknownEvidence===`exclude`)&&(n.unknownEvidence=t.unknownEvidence),(t.degradedEvidence===`allow`||t.degradedEvidence===`penalize`||t.degradedEvidence===`exclude`)&&(n.degradedEvidence=t.degradedEvidence),n}var Et={latency:`0.55`,health:`0.25`,cost:`0.1`,quota:`0.1`},Dt={capability:`exclude`,health:`penalize`,quota:`penalize`,cost:`penalize`};function Ot(e){return e===!0?`true`:e===!1?`false`:``}function kt(e){return e===void 0?``:String(e)}function At(e=``,t=``){return{id:``,alias:``,candidates:[Ct(e,t)],require:{minContextWindow:``,minQuotaHeadroom:``,tools:``,imageInput:``,structuredOutput:``,reasoningEffort:``,serviceTier:``,localOnly:``,remoteAllowed:``,encryptedCodexTasks:``},optimize:{...Et},limits:{maxEstimatedCostUsd:``,onUnknownCost:`allow`},unknownEvidence:{...Dt},compatibility:{enabled:!1,requiredSuites:[],minStatus:``,maxEvidenceAgeMs:``,unknownEvidence:`exclude`,degradedEvidence:`penalize`}}}function jt(e){let t=Tt(e.compatibility);return{id:e.id,alias:e.alias??``,candidates:e.candidates.map(e=>({...e,key:St()})),require:{minContextWindow:kt(e.require.minContextWindow),minQuotaHeadroom:kt(e.require.minQuotaHeadroom),tools:Ot(e.require.tools),imageInput:Ot(e.require.imageInput),structuredOutput:Ot(e.require.structuredOutput),reasoningEffort:e.require.reasoningEffort??``,serviceTier:e.require.serviceTier??``,localOnly:Ot(e.require.localOnly),remoteAllowed:Ot(e.require.remoteAllowed),encryptedCodexTasks:Ot(e.require.encryptedCodexTasks)},optimize:{latency:String(e.optimize.latency),health:String(e.optimize.health),cost:String(e.optimize.cost),quota:String(e.optimize.quota)},limits:{maxEstimatedCostUsd:kt(e.limits.maxEstimatedCostUsd),onUnknownCost:e.limits.onUnknownCost===`exclude`?`exclude`:`allow`},unknownEvidence:{...e.unknownEvidence},compatibility:{enabled:!!t,requiredSuites:t?.requiredSuites??[],minStatus:t?.minStatus??``,maxEvidenceAgeMs:kt(t?.maxEvidenceAgeMs),unknownEvidence:t?.unknownEvidence??`exclude`,degradedEvidence:t?.degradedEvidence??`penalize`}}}function Mt(e){let t=e.trim();return t?Number(t):void 0}function q(e){if(e===`true`)return!0;if(e===`false`)return!1}function Nt(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}function Pt(e,t,n){let r=Nt({minContextWindow:Mt(e.require.minContextWindow),minQuotaHeadroom:Mt(e.require.minQuotaHeadroom),tools:q(e.require.tools),imageInput:q(e.require.imageInput),structuredOutput:q(e.require.structuredOutput),reasoningEffort:e.require.reasoningEffort.trim()||void 0,serviceTier:e.require.serviceTier.trim()||void 0,localOnly:q(e.require.localOnly),remoteAllowed:q(e.require.remoteAllowed),encryptedCodexTasks:q(e.require.encryptedCodexTasks)}),i=Mt(e.limits.maxEstimatedCostUsd),a=e.compatibility.enabled?Nt({requiredSuites:e.compatibility.requiredSuites,minStatus:e.compatibility.minStatus||void 0,maxEvidenceAgeMs:Mt(e.compatibility.maxEvidenceAgeMs),unknownEvidence:e.compatibility.unknownEvidence,degradedEvidence:e.compatibility.degradedEvidence}):void 0,o=Nt({maxEstimatedCostUsd:i,onUnknownCost:e.limits.onUnknownCost===`exclude`?`exclude`:void 0});return{mode:t,id:e.id.trim(),...t===`update`&&n?{expectedRevision:n}:{},profile:{...e.alias.trim()?{alias:e.alias.trim()}:{},candidates:e.candidates.map(e=>({provider:e.provider.trim(),model:e.model.trim()})),...Object.keys(r).length>0?{require:r}:{},optimize:{latency:Number(e.optimize.latency),health:Number(e.optimize.health),cost:Number(e.optimize.cost),quota:Number(e.optimize.quota)},...Object.keys(o).length>0?{limits:o}:{},unknownEvidence:{...e.unknownEvidence},...a&&Object.keys(a).length>0?{compatibility:a}:{}}}}function Ft(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e.error;if(typeof t==`string`&&t.trim())return t;if(t&&typeof t==`object`&&!Array.isArray(t)){let e=t.message;if(typeof e==`string`&&e.trim())return e}}function It(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&e.success===!0}function Lt(e,t){return e.filter(e=>e.provider===t)}var Rt={en:{maxEvidenceAgeMs:`Maximum evidence age (ms)`,unknownEvidence:`Unknown evidence`,degradedEvidence:`Degraded evidence`},de:{maxEvidenceAgeMs:`Maximales Evidenzalter (ms)`,unknownEvidence:`Unbekannte Evidenz`,degradedEvidence:`Eingeschränkte Evidenz`},fr:{maxEvidenceAgeMs:`Âge maximal des preuves (ms)`,unknownEvidence:`Preuves inconnues`,degradedEvidence:`Preuves dégradées`},ko:{maxEvidenceAgeMs:`최대 증거 유효 기간 (ms)`,unknownEvidence:`알 수 없는 증거`,degradedEvidence:`저하된 증거`},zh:{maxEvidenceAgeMs:`证据最大有效期(毫秒)`,unknownEvidence:`未知证据`,degradedEvidence:`降级证据`},"zh-TW":{maxEvidenceAgeMs:`證據最大有效期限(毫秒)`,unknownEvidence:`未知證據`,degradedEvidence:`降級證據`},ru:{maxEvidenceAgeMs:`Максимальный возраст доказательств (мс)`,unknownEvidence:`Неизвестные доказательства`,degradedEvidence:`Ухудшенные доказательства`},ja:{maxEvidenceAgeMs:`エビデンスの最大有効期間 (ms)`,unknownEvidence:`不明なエビデンス`,degradedEvidence:`低下したエビデンス`},tr:{maxEvidenceAgeMs:`Maksimum kanıt yaşı (ms)`,unknownEvidence:`Bilinmeyen kanıt`,degradedEvidence:`Bozulmuş kanıt`}},zt=[`tools`,`imageInput`,`structuredOutput`,`localOnly`,`remoteAllowed`,`encryptedCodexTasks`],Bt=[`reasoningEffort`,`serviceTier`],Vt={minContextWindow:{min:1,max:void 0,step:1},minQuotaHeadroom:{min:0,max:1,step:`any`}},Ht=Object.keys(Vt),Ut=[`latency`,`health`,`cost`,`quota`],Wt=[`capability`,`health`,`quota`,`cost`],Gt=[`allow`,`penalize`,`exclude`],Kt=[`allow`,`exclude`];function qt(e){return`${e.evidenceLayer}:${e.suiteId}`}function Jt(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Yt(e){let t=new Set,n=[];for(let r of e){if(!Jt(r))continue;let e=typeof r.suiteId==`string`?r.suiteId.trim():``,i=r.evidenceLayer;if(!e||i!==`protocol_conformance`&&i!==`live_route_compatibility`)continue;let a={suiteId:e,evidenceLayer:i},o=qt(a);t.has(o)||(t.add(o),n.push({...a,key:o}))}return n.sort((e,t)=>{let n=e.evidenceLayer.localeCompare(t.evidenceLayer);return n===0?e.suiteId.localeCompare(t.suiteId):n})}function Xt(e,t){return e.some(e=>e.suiteId===t.suiteId&&e.evidenceLayer===t.evidenceLayer)}function Zt(e,t){return e===void 0?t:`${Math.round(e)}ms`}function Qt(e,t){return e==null?t:`${Math.round(e*100)}%`}function $t(e,t,n){switch(e){case`satisfied`:return t(`routing.capOutcome.satisfied`);case`exceeded`:return t(`routing.capOutcome.exceeded`);case`unknown-allowed`:return t(`routing.capOutcome.unknown-allowed`);case`unknown-excluded`:return t(`routing.capOutcome.unknown-excluded`);default:return n}}function en(e,t){switch(e){case`capability-unsatisfied`:return t(`routing.exclusion.capability-unsatisfied`);case`unknown-capability`:return t(`routing.exclusion.unknown-capability`);case`cost-limit`:return t(`routing.exclusion.cost-limit`);case`cost-limit-unknown`:return t(`routing.exclusion.cost-limit-unknown`);case`cooldown`:return t(`routing.exclusion.cooldown`);case`unknown-health`:return t(`routing.exclusion.unknown-health`);case`unknown-quota`:return t(`routing.exclusion.unknown-quota`);case`unknown-price`:return t(`routing.exclusion.unknown-price`);default:return t(`routing.exclusion.other`,{code:e})}}function tn(e){if(!e||typeof e!=`object`||Array.isArray(e))return[];let t=e.profiles;return Array.isArray(t)?t.filter(e=>Jt(e)?typeof e.id==`string`&&typeof e.model==`string`&&typeof e.revision==`string`&&Array.isArray(e.candidates)&&Jt(e.require)&&Jt(e.optimize)&&Jt(e.limits)&&Jt(e.unknownEvidence):!1).map(e=>{let t=Tt(`compatibility`in e?e.compatibility:void 0),n={...e};return delete n.compatibility,{...n,alias:e.alias??null,...t?{compatibility:t}:{}}}):[]}function nn(e){let t=Array.isArray(e)?e:e&&typeof e==`object`&&Array.isArray(e.models)?e.models:[],n=new Set,r=[];for(let e of t){if(!e||typeof e!=`object`||Array.isArray(e))continue;let t=typeof e.provider==`string`?e.provider.trim():``,i=typeof e.id==`string`?e.id.trim():``;if(!t||!i||t===`combo`||t===`policy`||e.disabled===!0)continue;let a=JSON.stringify([t,i]);n.has(a)||(n.add(a),r.push({provider:t,id:i}))}return r}function rn(e,t,n){let r=n??t;if(r){let t=e.find(e=>e.id===r);if(t)return t}return e[0]??null}function an({apiBase:e,active:t=!0,onCountChange:n}){let{locale:r,t:i}=a(),o=Rt[r],s=i(`routing.unavailable`),[c,l]=(0,P.useState)([]),[u,f]=(0,P.useState)(null),[p,m]=(0,P.useState)([]),[h,_]=(0,P.useState)({}),[v,y]=(0,P.useState)([]),[b,x]=(0,P.useState)(``),[S,C]=(0,P.useState)(null),[w,T]=(0,P.useState)(null),[E,D]=(0,P.useState)(null),[O,ee]=(0,P.useState)(!1),[k,A]=(0,P.useState)(``),[te,j]=(0,P.useState)(!1),[M,ne]=(0,P.useState)(!1),[N,re]=(0,P.useState)(!1),[ie,ae]=(0,P.useState)(null),[oe,se]=(0,P.useState)(``),[ce,le]=(0,P.useState)(!1),[ue,de]=(0,P.useState)([]),[fe,pe]=(0,P.useState)(!1),me=(0,P.useRef)(null),he=(0,P.useRef)(0),ge=(0,P.useRef)(null),_e=(0,P.useRef)(!0),ve=(0,P.useCallback)(()=>{_e.current=!1,ge.current?.abort(),he.current++},[]),ye=(0,P.useRef)(0),be=(0,P.useCallback)((e,t)=>{D({message:e,ok:t})},[]);(0,P.useEffect)(()=>{if(!E?.ok)return;let e=window.setTimeout(()=>D(null),5e3);return()=>window.clearTimeout(e)},[E]);let xe=(0,P.useCallback)(()=>{ye.current+=1,ae(null),se(``),le(!1)},[]),Se=(0,P.useCallback)(e=>{me.current=e,C(e),T(e?jt(e):null),D(null),xe()},[xe]),Ce=(0,P.useCallback)(async t=>{if(!_e.current)return;ge.current?.abort();let n=new AbortController;ge.current=n;let{signal:r}=n,i=++he.current;x(``);try{let[n,a,o,s,c]=await Promise.all([fetch(`${e}/api/routing-profiles`,{signal:r}),fetch(`${e}/api/routing-analytics`,{signal:r}),fetch(`${e}/api/config`,{signal:r}),fetch(`${e}/api/models`,{signal:r}),fetch(`${e}/api/lab/catalog`,{signal:r})]);if(!n.ok)throw Error(`load-${n.status}`);let[u,d,p,h,g]=await Promise.all([n.json(),a.ok?a.json():Promise.resolve(null),o.ok?o.json():Promise.resolve({}),s.ok?s.json():Promise.resolve([]),c.ok?c.json().catch(()=>null):Promise.resolve(null)]);if(i!==he.current)return;let v=tn(u),b=me.current,x=rn(v,b?.id??null,t),S=p.providers??{},w=Object.entries(S).filter(([,e])=>e.disabled!==!0).map(([e])=>e).sort((e,t)=>e<t?-1:+(e>t)),E=Object.fromEntries(Object.entries(S).filter(([,e])=>e.disabled!==!0&&typeof e.defaultModel==`string`).map(([e,t])=>[e,t.defaultModel.trim()]));me.current=x,l(v),C(x),T(x?jt(x):null),f(d),m(w),_(E),y(nn(h)),g&&Array.isArray(g.scenarios)?(de(Yt(g.scenarios)),pe(!1)):(de([]),pe(!0)),(!b||!x||b.id!==x.id||b.revision!==x.revision)&&xe()}catch(e){if(i!==he.current||r.aborted)return;x(e instanceof Error?e.message:String(e))}finally{ge.current===n&&(ge.current=null)}},[e,xe]);(0,P.useEffect)(()=>{if(!t){ve();return}_e.current=!0;let e=window.setTimeout(()=>void Ce(),0);return()=>{window.clearTimeout(e),ve()}},[t,ve,Ce]),(0,P.useEffect)(()=>{n?.(c.length)},[n,c.length]);let we=p[0]??``,Te=h[we]??Lt(v,we)[0]?.id??``,F=()=>{me.current=null,C(null),T(At(we,Te)),D(null),xe()},Ee=()=>{if(S){T(jt(S)),D(null);return}Se(c[0]??null)},I=async()=>{if(!(!w||O)){ee(!0),D(null);try{let t=Pt(w,S?`update`:`create`,S?.revision),n=await fetch(`${e}/api/routing-profiles`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(t)}),r=await g(n);if(!n.ok){let e=await n.json().catch(()=>null);be(Ft(e)??i(`routing.loadFailed`),!1);return}if(!It(r)){be(Ft(r)??i(`routing.loadFailed`),!1);return}await Ce(t.id),be(i(`common.ok`),!0)}catch(e){be(e instanceof Error?e.message:i(`routing.loadFailed`),!1)}finally{ee(!1)}}},L=async()=>{if(!(!S||O)&&window.confirm(i(`routing.removeConfirm`,{id:S.id}))){ee(!0),D(null);try{let t=await fetch(`${e}/api/routing-profiles?id=${encodeURIComponent(S.id)}`,{method:`DELETE`}),n=await g(t);if(!t.ok){let e=await t.json().catch(()=>null);be(Ft(e)??i(`routing.loadFailed`),!1);return}if(!It(n)){be(Ft(n)??i(`routing.loadFailed`),!1);return}me.current=null,await Ce(),be(i(`common.ok`),!0)}catch(e){be(e instanceof Error?e.message:i(`routing.loadFailed`),!1)}finally{ee(!1)}}},De=(e,t,n)=>{T(r=>{if(!r)return r;let i=r.candidates.map((r,i)=>i===e?t===`provider`?{...r,provider:n,model:h[n]??Lt(v,n)[0]?.id??``}:{...r,model:n}:r);return{...r,candidates:i}})},Oe=()=>{T(e=>e&&{...e,candidates:[...e.candidates,Ct(we,Te)]})},ke=e=>{T(t=>t&&{...t,candidates:t.candidates.filter((t,n)=>n!==e)})},Ae=async()=>{if(!S)return;let t=++ye.current;le(!0),ae(null),se(``);try{let n={},r=k.trim()?Number(k.trim()):NaN;Number.isFinite(r)&&r>0&&(n.contextWindow=r),te&&(n.toolsRequired=!0),M&&(n.imageInputRequired=!0),N&&(n.structuredOutputRequired=!0);let a=await fetch(`${e}/api/routing-profiles/dry-run`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({profile:S.id,evidence:n})});if(t!==ye.current)return;if(!a.ok){let e=await a.json().catch(()=>null);if(t!==ye.current)return;se(Ft(e)??i(`routing.dryRunError`,{status:a.status}));return}let o=await a.json();if(t!==ye.current)return;ae(o)}catch(e){if(t!==ye.current)return;se(e instanceof Error?e.message:String(e))}finally{t===ye.current&&le(!1)}},je=w?.candidates.map(e=>Lt(v,e.provider))??[];return(0,W.jsxs)(`div`,{className:`page`,"data-page":`routing`,children:[(0,W.jsxs)(`div`,{className:`row`,style:{display:`flex`,gap:8,justifyContent:`flex-end`,marginBottom:12},children:[(0,W.jsxs)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:F,children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,children:`+`}),` `,i(`routing.createProfile`)]}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void Ce(),children:i(`common.retry`)})]}),b?(0,W.jsxs)(d,{tone:`err`,children:[i(`routing.loadFailed`),`: `,b]}):null,E?(0,W.jsx)(d,{tone:E.ok?`ok`:`err`,children:E.message}):null,c.length>0?(0,W.jsx)(`div`,{className:`panel`,style:{display:`flex`,flexDirection:`column`,gap:12},children:c.map(e=>(0,W.jsx)(`button`,{type:`button`,className:`model-card`,style:{textAlign:`left`,cursor:`pointer`},onClick:()=>Se(e),"aria-pressed":S?.id===e.id,children:(0,W.jsxs)(`div`,{className:`card-badges`,children:[(0,W.jsx)(`strong`,{children:e.id}),(0,W.jsx)(`span`,{className:`badge badge-muted`,children:e.model}),(0,W.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.revision`),`: `,e.revision]})]})},e.id))}):null,w?(0,W.jsxs)(`form`,{className:`panel`,style:{marginTop:14,display:`flex`,flexDirection:`column`,gap:16},onSubmit:e=>{e.preventDefault(),I()},children:[(0,W.jsxs)(`div`,{className:`page-head`,children:[(0,W.jsxs)(`h3`,{children:[i(`routing.detail`),`: `,S?.model??(0,W.jsx)(`code`,{children:`policy/…`})]}),S?(0,W.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.revision`),`: `,S.revision]}):null]}),(0,W.jsxs)(`div`,{className:`model-grid`,children:[(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:`id`}),(0,W.jsx)(`input`,{className:`input`,required:!0,disabled:S!==null,value:w.id,onChange:e=>T(t=>t&&{...t,id:e.target.value})})]}),(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:`alias`}),(0,W.jsx)(`input`,{className:`input`,value:w.alias,onChange:e=>T(t=>t&&{...t,alias:e.target.value})})]})]}),(0,W.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,W.jsx)(`legend`,{className:`field-label`,children:i(`routing.candidates`)}),(0,W.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:10},children:[w.candidates.map((e,t)=>{let n=[...new Set([e.provider,...p])].filter(Boolean),r=`routing-model-options-${t}`;return(0,W.jsxs)(`div`,{className:`model-card`,children:[(0,W.jsxs)(`div`,{className:`model-grid`,children:[(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:`provider`}),(0,W.jsxs)(`select`,{className:`input`,required:!0,value:e.provider,onChange:e=>De(t,`provider`,e.target.value),children:[(0,W.jsx)(`option`,{value:``,disabled:!0,children:i(`routing.none`)}),n.map(e=>(0,W.jsx)(`option`,{value:e,children:e},e))]})]}),(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:`model`}),(0,W.jsx)(`input`,{className:`input`,required:!0,list:r,value:e.model,onChange:e=>De(t,`model`,e.target.value)}),(0,W.jsx)(`datalist`,{id:r,children:je[t]?.map(e=>(0,W.jsx)(`option`,{value:e.id},e.id))})]})]}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:w.candidates.length===1,onClick:()=>ke(t),"aria-label":i(`routing.removeCandidate`,{provider:e.provider,model:e.model}),children:i(`common.remove`)})]},e.key)}),(0,W.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:Oe,children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,children:`+`}),` `,i(`routing.candidate`)]})]})]}),(0,W.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,W.jsx)(`legend`,{className:`field-label`,children:i(`routing.require`)}),(0,W.jsxs)(`div`,{className:`model-grid`,children:[Ht.map(e=>(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:e}),(0,W.jsx)(`input`,{className:`input`,type:`number`,min:Vt[e].min,max:Vt[e].max,step:Vt[e].step,value:w.require[e],onChange:t=>T(n=>n&&{...n,require:{...n.require,[e]:t.target.value}})})]},e)),Bt.map(e=>(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:e}),(0,W.jsx)(`input`,{className:`input`,value:w.require[e],onChange:t=>T(n=>n&&{...n,require:{...n.require,[e]:t.target.value}})})]},e)),zt.map(e=>(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:e}),(0,W.jsxs)(`select`,{className:`input`,value:w.require[e],onChange:t=>T(n=>n&&{...n,require:{...n.require,[e]:t.target.value}}),children:[(0,W.jsx)(`option`,{value:``,children:i(`routing.none`)}),(0,W.jsx)(`option`,{value:`true`,children:i(`routing.yes`)}),(0,W.jsx)(`option`,{value:`false`,children:i(`routing.no`)})]})]},e))]})]}),(0,W.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,W.jsx)(`legend`,{className:`field-label`,children:i(`routing.optimize`)}),(0,W.jsx)(`div`,{className:`model-grid`,children:Ut.map(e=>(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:e}),(0,W.jsx)(`input`,{className:`input`,type:`number`,min:0,step:`any`,required:!0,value:w.optimize[e],onChange:t=>T(n=>n&&{...n,optimize:{...n.optimize,[e]:t.target.value}})})]},e))})]}),(0,W.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,W.jsx)(`legend`,{className:`field-label`,children:i(`routing.limits`)}),(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:`maxEstimatedCostUsd`}),(0,W.jsx)(`input`,{className:`input`,type:`number`,min:0,step:`any`,value:w.limits.maxEstimatedCostUsd,onChange:e=>T(t=>t&&{...t,limits:{...t.limits,maxEstimatedCostUsd:e.target.value}})})]}),(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:`onUnknownCost`}),(0,W.jsx)(`select`,{className:`input`,value:w.limits.onUnknownCost,onChange:e=>T(t=>t&&{...t,limits:{...t.limits,onUnknownCost:e.target.value}}),children:Kt.map(e=>(0,W.jsx)(`option`,{value:e,children:i(`routing.unknownEvidence.${e}`)},e))})]})]}),(0,W.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,W.jsx)(`legend`,{className:`field-label`,children:i(`routing.unknownEvidence`)}),(0,W.jsx)(`div`,{className:`model-grid`,children:Wt.map(e=>(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:e}),(0,W.jsx)(`select`,{className:`input`,value:w.unknownEvidence[e],onChange:t=>T(n=>n&&{...n,unknownEvidence:{...n.unknownEvidence,[e]:t.target.value}}),children:Gt.map(e=>(0,W.jsx)(`option`,{value:e,children:i(`routing.unknownEvidence.${e}`)},e))})]},e))})]}),(0,W.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,W.jsx)(`legend`,{className:`field-label`,children:i(`routing.compatibility.title`)}),(0,W.jsxs)(`label`,{className:`checkbox`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:w.compatibility.enabled,onChange:e=>T(t=>t&&{...t,compatibility:{...t.compatibility,enabled:e.target.checked}})}),i(`routing.compatibility.enabled`)]}),w.compatibility.enabled?(0,W.jsxs)(`div`,{className:`model-grid`,style:{marginTop:10},children:[(0,W.jsxs)(`div`,{className:`field-label`,style:{gridColumn:`1 / -1`},children:[i(`routing.compatibility.requiredSuites`),fe?(0,W.jsx)(`div`,{style:{marginTop:6},children:(0,W.jsx)(d,{tone:`warn`,children:i(`routing.compatibility.catalogUnavailable`)})}):null,ue.length>0?(0,W.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:4,marginTop:6},children:ue.map(e=>(0,W.jsxs)(`label`,{className:`checkbox`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:Xt(w.compatibility.requiredSuites,e),onChange:t=>T(n=>{if(!n)return n;let r=t.target.checked?[...n.compatibility.requiredSuites,{suiteId:e.suiteId,evidenceLayer:e.evidenceLayer}]:n.compatibility.requiredSuites.filter(t=>t.suiteId!==e.suiteId||t.evidenceLayer!==e.evidenceLayer);return{...n,compatibility:{...n.compatibility,requiredSuites:r}}})}),(0,W.jsxs)(`span`,{children:[e.suiteId,` `,(0,W.jsxs)(`span`,{className:`muted`,children:[`(`,i(`routing.compatibility.layer.${e.evidenceLayer}`),`)`]})]})]},e.key))}):null]}),(0,W.jsxs)(`label`,{className:`field-label`,children:[i(`routing.compatibility.minStatus`),(0,W.jsxs)(`select`,{className:`input`,value:w.compatibility.minStatus,onChange:e=>T(t=>t&&{...t,compatibility:{...t.compatibility,minStatus:e.target.value}}),children:[(0,W.jsx)(`option`,{value:``,children:i(`routing.none`)}),(0,W.jsx)(`option`,{value:`PROBED`,children:i(`lab.verdict.PROBED`)}),(0,W.jsx)(`option`,{value:`VERIFIED`,children:i(`lab.verdict.VERIFIED`)})]})]}),(0,W.jsxs)(`label`,{className:`field-label`,children:[o.maxEvidenceAgeMs,(0,W.jsx)(`input`,{className:`input`,type:`number`,min:0,value:w.compatibility.maxEvidenceAgeMs,onChange:e=>T(t=>t&&{...t,compatibility:{...t.compatibility,maxEvidenceAgeMs:e.target.value}})})]}),(0,W.jsxs)(`label`,{className:`field-label`,children:[o.unknownEvidence,(0,W.jsx)(`select`,{className:`input`,value:w.compatibility.unknownEvidence,onChange:e=>T(t=>t&&{...t,compatibility:{...t.compatibility,unknownEvidence:e.target.value}}),children:Gt.map(e=>(0,W.jsx)(`option`,{value:e,children:i(`routing.unknownEvidence.${e}`)},e))})]}),(0,W.jsxs)(`label`,{className:`field-label`,children:[o.degradedEvidence,(0,W.jsx)(`select`,{className:`input`,value:w.compatibility.degradedEvidence,onChange:e=>T(t=>t&&{...t,compatibility:{...t.compatibility,degradedEvidence:e.target.value}}),children:Gt.map(e=>(0,W.jsx)(`option`,{value:e,children:i(`routing.unknownEvidence.${e}`)},e))})]})]}):null]}),(0,W.jsxs)(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[(0,W.jsx)(`button`,{type:`submit`,className:`btn btn-primary`,disabled:O,children:i(O?`common.saving`:`common.save`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:O,onClick:Ee,children:i(`common.cancel`)}),S?(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:O,onClick:()=>void L(),children:i(`common.remove`)}):null]})]}):null,(0,W.jsxs)(`div`,{className:`panel`,style:{marginTop:14,display:`flex`,flexDirection:`column`,gap:10},children:[(0,W.jsx)(`h3`,{children:i(`routing.dryRun`)}),(0,W.jsxs)(`label`,{className:`field-label`,htmlFor:`routing-context`,children:[i(`routing.dryRunContext`),(0,W.jsx)(`input`,{id:`routing-context`,className:`input`,type:`number`,min:1,value:k,onChange:e=>{A(e.target.value),xe()}})]}),(0,W.jsxs)(`label`,{className:`checkbox`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:te,onChange:e=>{j(e.target.checked),xe()}}),i(`routing.dryRunTools`)]}),(0,W.jsxs)(`label`,{className:`checkbox`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:M,onChange:e=>{ne(e.target.checked),xe()}}),i(`routing.dryRunImage`)]}),(0,W.jsxs)(`label`,{className:`checkbox`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:N,onChange:e=>{re(e.target.checked),xe()}}),i(`routing.dryRunStructured`)]}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:!S||ce,onClick:()=>void Ae(),children:i(`routing.dryRunRun`)}),oe?(0,W.jsx)(d,{tone:`err`,children:oe}):null,ie?(0,W.jsxs)(`table`,{className:`tbl`,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{children:i(`routing.candidate`)}),(0,W.jsx)(`th`,{children:i(`routing.eligible`)}),(0,W.jsx)(`th`,{children:i(`routing.exclusions`)}),(0,W.jsx)(`th`,{children:i(`routing.costCap`)}),(0,W.jsx)(`th`,{children:i(`routing.score`)})]})}),(0,W.jsx)(`tbody`,{children:ie.candidates.map((e,t)=>(0,W.jsxs)(`tr`,{children:[(0,W.jsxs)(`td`,{children:[e.provider,`/`,e.model,t===ie.selectedIndex?` ✓ (${i(`routing.selected`)})`:``]}),(0,W.jsx)(`td`,{children:e.eligible?i(`routing.yes`):i(`routing.no`)}),(0,W.jsx)(`td`,{children:e.exclusions.map(e=>en(e.code,i)).join(`, `)||i(`routing.none`)}),(0,W.jsx)(`td`,{children:$t(e.cost?.capOutcome,i,s)}),(0,W.jsx)(`td`,{children:e.score?e.score.total.toFixed(3):s})]},`${e.provider}/${e.model}`))})]}):null]}),(0,W.jsxs)(`div`,{className:`panel`,style:{marginTop:14,display:`flex`,flexDirection:`column`,gap:10},children:[(0,W.jsx)(`h3`,{children:i(`routing.analytics`)}),u?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`card-badges`,children:[(0,W.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsTotal`),`: `,u.totalRequests]}),(0,W.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsSuccessRate`),`: `,Qt(u.successRate,s)]}),(0,W.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsFallbackRate`),`: `,Qt(u.fallbackRate,s)]}),(0,W.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsP50`),`: `,Zt(u.durationMs.p50,s)]}),(0,W.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsP95`),`: `,Zt(u.durationMs.p95,s)]}),(0,W.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsP99`),`: `,Zt(u.durationMs.p99,s)]}),(0,W.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsCooldown`),`: `,u.cooldownTriggeringFailures]}),(0,W.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsConfidence`),`: `,u.confidence??s]}),u.historyTruncated?(0,W.jsx)(`span`,{className:`badge badge-muted`,children:i(`routing.analyticsTruncated`)}):null]}),(0,W.jsxs)(`table`,{className:`tbl`,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{children:i(`routing.candidate`)}),(0,W.jsx)(`th`,{children:i(`routing.analyticsRequests`)}),(0,W.jsx)(`th`,{children:i(`routing.analyticsSuccessRate`)}),(0,W.jsx)(`th`,{children:i(`routing.analyticsP50`)})]})}),(0,W.jsx)(`tbody`,{children:u.breakdown.map(e=>(0,W.jsxs)(`tr`,{children:[(0,W.jsxs)(`td`,{children:[e.provider,`/`,e.model]}),(0,W.jsx)(`td`,{children:e.requests}),(0,W.jsx)(`td`,{children:Qt(e.successRate,s)}),(0,W.jsx)(`td`,{children:Zt(e.p50DurationMs,s)})]},`${e.provider}/${e.model}`))})]})]}):(0,W.jsx)(`p`,{className:`muted`,children:i(`routing.analyticsEmpty`)})]})]})}var on=[`protocol_conformance`,`live_route_compatibility`,`task_effectiveness`],sn=[`UNKNOWN`,`CLAIMED`,`PROBED`,`VERIFIED`,`DEGRADED`,`BLOCKED`,`UNSUPPORTED`],J=[`present`,`corrupt`,`purged_unavailable`],cn=50;function Y(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function ln(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}function un(e){return e===null||typeof e==`string`}function dn(e){return e===void 0||typeof e==`number`&&Number.isFinite(e)}function fn(e){if(!Y(e)||typeof e.projectionAvailable!=`boolean`||e.projectionIncompatible!==void 0&&typeof e.projectionIncompatible!=`boolean`)return null;for(let t of[`sqliteSchemaVersion`,`builtAtMs`,`eventCount`,`subjectCount`,`observationCount`,`claimCount`,`verdictCount`,`artifactCount`,`corruptionCount`])if(!dn(e[t]))return null;return e.projectionSpecVersion!==void 0&&typeof e.projectionSpecVersion!=`string`?null:e}function pn(e){return!Y(e)||typeof e.projectionKey!=`string`||e.projectionKey.length===0||typeof e.subjectId!=`string`||e.subjectId.length===0||typeof e.evidenceLayer!=`string`||!on.includes(e.evidenceLayer)||typeof e.suiteId!=`string`||e.suiteId.length===0||typeof e.suiteVersion!=`string`||typeof e.suiteManifestDigest!=`string`||typeof e.projectionSpecVersion!=`string`||typeof e.verdict!=`string`||!sn.includes(e.verdict)||typeof e.asOf!=`number`||!Number.isFinite(e.asOf)||!ln(e.scenarioManifestDigests)||!un(e.claimSourceDigest)||!ln(e.contributingEventIds)||!ln(e.contradictingEventIds)||!ln(e.notes)?null:e}function mn(e){return!Y(e)||!Array.isArray(e.verdicts)?{verdicts:[],hasMore:!1}:{verdicts:e.verdicts.map(pn).filter(e=>e!==null),hasMore:e.hasMore===!0,nextCursor:typeof e.nextCursor==`string`?e.nextCursor:void 0}}function hn(e){return!Y(e)||!Array.isArray(e.subjects)?{subjects:[],hasMore:!1}:{subjects:e.subjects.filter(e=>Y(e)&&typeof e.subjectId==`string`&&typeof e.subjectKind==`string`),hasMore:e.hasMore===!0,nextCursor:typeof e.nextCursor==`string`?e.nextCursor:void 0}}function gn(e){return!Y(e)||!Y(e.subject)||typeof e.subject.subjectKind!=`string`?null:e.subject}function _n(e){return!Y(e)||typeof e.eventId!=`string`||typeof e.subjectId!=`string`||typeof e.evidenceLayer!=`string`||!on.includes(e.evidenceLayer)||typeof e.suiteId!=`string`||typeof e.suiteVersion!=`string`||typeof e.suiteManifestDigest!=`string`||typeof e.scenarioId!=`string`||typeof e.scenarioVersion!=`string`||typeof e.scenarioManifestDigest!=`string`||typeof e.outcome!=`string`||typeof e.completedAt!=`number`||!Number.isFinite(e.completedAt)||typeof e.executionMode!=`string`||typeof e.excluded!=`boolean`||!un(e.exclusionReason)?null:e}function vn(e){return!Y(e)||!Array.isArray(e.observations)?{observations:[],hasMore:!1}:{observations:e.observations.map(_n).filter(e=>e!==null),hasMore:e.hasMore===!0,nextCursor:typeof e.nextCursor==`string`?e.nextCursor:void 0}}function yn(e){if(!Y(e)||!Y(e.event))return null;let t={...e.event};return delete t.payload_json,typeof t.eventKind!=`string`||typeof t.eventId!=`string`||typeof t.recordedAt!=`number`||!Number.isFinite(t.recordedAt)||typeof t.producer!=`string`||typeof t.producerVersion!=`string`||typeof t.excluded!=`boolean`||!un(t.exclusionReason)?null:t}function bn(e){if(!Y(e)||!Y(e.artifact))return null;let t=e.artifact;return typeof t.digest!=`string`||typeof t.status!=`string`||!J.includes(t.status)||!un(t.artifactClass)||!un(t.mediaType)||t.byteCount!==null&&(typeof t.byteCount!=`number`||!Number.isFinite(t.byteCount))||!un(t.lastError)?null:t}function xn(e){let t={},n=e.subjectQuery.trim();return e.layer&&(t.layer=e.layer),e.verdict&&(t.verdict=e.verdict),n&&(t.subjectId=n),e.suiteId.trim()&&(t.suiteId=e.suiteId.trim()),t}function Sn(){return{protocol_conformance:[],live_route_compatibility:[],task_effectiveness:[]}}function Cn(e,t){let n=new Map(t.map(e=>[e.subjectId,e.subjectKind])),r=new Map;for(let t of e){let e=r.get(t.subjectId);e||(e={subjectId:t.subjectId,subjectKind:n.get(t.subjectId)??``,byLayer:Sn()},r.set(t.subjectId,e)),e.byLayer[t.evidenceLayer].push(t)}return[...r.values()].sort((e,t)=>e.subjectId.localeCompare(t.subjectId))}function wn(e,t){let n=new Map(e.map(e=>[e.subjectId,e])),r=new Map;for(let e of t){if(r.size>=cn)break;r.has(e.subjectId)||r.set(e.subjectId,n.get(e.subjectId)??{subjectId:e.subjectId,subjectKind:``})}for(let t of e){if(r.size>=cn)break;r.has(t.subjectId)||r.set(t.subjectId,t)}return[...r.values()].slice(0,cn)}function Tn(e){return e.length<=16?e:`${e.slice(0,8)}.${e.slice(-6)}`}function X(e,t){return!Number.isFinite(e)||e<=0?`-`:new Date(e).toLocaleString(t)}function En(e){let t=new Set;e.suiteManifestDigest&&t.add(e.suiteManifestDigest);for(let n of e.scenarioManifestDigests)n&&t.add(n);return e.claimSourceDigest&&t.add(e.claimSourceDigest),[...t]}var Dn=50,On=200,kn=6,An=200;async function jn(e,t,n){let r=await fetch(`${e}${t}`,{signal:n});return _(r)}function Mn(e,t){let n=new URLSearchParams({limit:String(Dn)});for(let[t,r]of Object.entries(e))r&&n.set(t,r);return t&&n.set(`cursor`,t),n.toString()}var Nn=class extends Error{};function Z(){return new Nn}function Pn(e,t,n){if(e.hasMore!==void 0&&typeof e.hasMore!=`boolean`||e.nextCursor!==void 0&&typeof e.nextCursor!=`string`||t&&!n)throw Z()}function Fn(e){if(!Y(e)||!Array.isArray(e.verdicts))throw Z();let t=mn(e);if(t.verdicts.length!==e.verdicts.length)throw Z();return Pn(e,t.hasMore,t.nextCursor),t}function In(e){if(!Y(e)||!Array.isArray(e.subjects))throw Z();let t=hn(e);if(t.subjects.length!==e.subjects.length)throw Z();return Pn(e,t.hasMore,t.nextCursor),t}function Ln(e){if(!Y(e)||!Array.isArray(e.observations))throw Z();let t=vn(e);if(t.observations.length!==e.observations.length)throw Z();return Pn(e,t.hasMore,t.nextCursor),t}async function Rn(e,t){let n=fn(await jn(e,`/api/lab/status`,t));if(!n)throw Z();return n}async function zn(e,t,n,r){return Fn(await jn(e,`/api/lab/verdicts?${Mn({layer:t.layer,verdict:t.verdict,subjectId:t.subjectId,suiteId:t.suiteId},n)}`,r))}async function Bn(e,t,n){return In(await jn(e,`/api/lab/subjects?${Mn({},t)}`,n))}async function Vn(e){let t=[],n=new Set,r;for(let i=0;i<On;i++){let i=await e(r);if(t.push(...i.rows),!i.hasMore)return{rows:t,truncated:!1};let a=i.nextCursor;if(!a||n.has(a)||a===r)throw new Nn;n.add(a),r=a}return{rows:t,truncated:!0}}async function Hn(e,t,n){let r=gn(await jn(e,`/api/lab/subjects/${encodeURIComponent(t)}`,n));if(!r)throw Z();return r}async function Un(e,t,n,r){return Ln(await jn(e,`/api/lab/observations?${Mn({subjectId:t.subjectId,layer:t.layer,suiteId:t.suiteId},n)}`,r))}async function Wn(e,t,n){return Vn(async r=>{let i=await Un(e,t,r,n);return{rows:i.observations,hasMore:i.hasMore,nextCursor:i.nextCursor}})}async function Gn(e,t,n){let r=yn(await jn(e,`/api/lab/events/${encodeURIComponent(t)}`,n));if(!r)throw Z();return r}async function Kn(e,t,n){let r=bn(await jn(e,`/api/lab/artifacts/${encodeURIComponent(t)}`,n));if(!r)throw Z();return r}function qn(e){if(!Y(e)||e.verificationStatus!==`not_verification`||!Y(e.summary))throw Z();let t=e.summary;if(t.verificationStatus!==`not_verification`||typeof t.subjectId!=`string`||typeof t.recentProductionAttempts!=`number`||typeof t.recentSuccessfulAttempts!=`number`||typeof t.recentRouteErrorSignals!=`number`||t.lastObservedProductionAttempt!==void 0&&typeof t.lastObservedProductionAttempt!=`number`)throw Z();return{verificationStatus:`not_verification`,summary:t}}async function Jn(e,t,n){return qn(await jn(e,`/api/lab/production-signals?${Mn({subjectId:t})}`,n))}function Yn(e,t){let n=new Set(t);return Object.keys(e).every(e=>n.has(e))}function Q(e){return typeof e==`string`&&/^[0-9a-f]{64}$/.test(e)}function Xn(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function Zn(e){if(!Y(e)||!Yn(e,[`evidence`,`trustClass`,`locallyVerified`])||e.trustClass!==`community_untrusted_v1`||e.locallyVerified!==!1||!Array.isArray(e.evidence)||e.evidence.length>4096)return null;let t=[];for(let n of e.evidence){if(!Y(n)||!Yn(n,[`trustClass`,`status`,`bundleId`,`publisherKeyId`,`activeRecordCount`,`revokedRecordCount`])||n.trustClass!==`community_untrusted_v1`||n.status!==`cryptographically_valid`||!Q(n.bundleId)||!Q(n.publisherKeyId)||!Xn(n.activeRecordCount)||!Xn(n.revokedRecordCount))return null;t.push({trustClass:`community_untrusted_v1`,status:`cryptographically_valid`,bundleId:n.bundleId,publisherKeyId:n.publisherKeyId,activeRecordCount:n.activeRecordCount,revokedRecordCount:n.revokedRecordCount})}return{evidence:t,trustClass:`community_untrusted_v1`,locallyVerified:!1}}async function Qn(e,t){let n=Zn(await jn(e,`/api/lab/public/community`,t));if(!n)throw Z();return n}async function $n(e,t,n){let[r,i]=await Promise.all([Rn(e,n),Qn(e,n).catch(e=>{if(n.aborted)throw e;return null})]);if(!r.projectionAvailable)return{status:r,verdicts:[],subjects:[],subjectsTruncated:!1,hasMore:!1,community:i};let[a,o]=await Promise.all([zn(e,t,void 0,n),Bn(e,void 0,n)]);return{status:r,verdicts:a.verdicts,subjects:o.subjects,subjectsTruncated:o.hasMore,hasMore:a.hasMore,nextCursor:a.nextCursor,community:i}}async function er(e,t,n,r){return zn(e,t,n,r)}async function tr(e,t,n,r){let i=e.slice(0,An),a=[],o=0,s=async()=>{for(;;){if(n.aborted)throw new DOMException(`Aborted`,`AbortError`);let e=o++;if(e>=i.length)return;try{a.push(await r(i[e]))}catch(e){if(n.aborted)throw e}}},c=Math.min(t,i.length);return await Promise.all(Array.from({length:c},()=>s())),a}async function nr(e,t,n){let r=[...new Set([...t.contributingEventIds,...t.contradictingEventIds])],i=En(t),a={subjectId:t.subjectId,layer:t.evidenceLayer,suiteId:t.suiteId},[o,s,c,l,u]=await Promise.all([Hn(e,t.subjectId,n),Wn(e,a,n),tr(r,kn,n,t=>Gn(e,t,n)),tr(i,kn,n,t=>Kn(e,t,n)),Jn(e,t.subjectId,n).catch(e=>{if(n.aborted)throw e;return null})]);return{subject:o,observations:s.rows,observationsTruncated:s.truncated,events:c,artifacts:l,production:u}}var rr={protocol_conformance:`lab.layer.protocol_conformance`,live_route_compatibility:`lab.layer.live_route_compatibility`,task_effectiveness:`lab.layer.task_effectiveness`},ir={protocol_conformance:`lab.col.protocol`,live_route_compatibility:`lab.col.live`,task_effectiveness:`lab.col.task`},ar={UNKNOWN:`lab.verdict.UNKNOWN`,CLAIMED:`lab.verdict.CLAIMED`,PROBED:`lab.verdict.PROBED`,VERIFIED:`lab.verdict.VERIFIED`,DEGRADED:`lab.verdict.DEGRADED`,BLOCKED:`lab.verdict.BLOCKED`,UNSUPPORTED:`lab.verdict.UNSUPPORTED`},or={present:`artifact.present`,corrupt:`artifact.corrupt`,purged_unavailable:`artifact.purged_unavailable`};function sr(e,t){if(!(e instanceof Error))return t;let n=e.message;return n===`Failed to fetch`||n.includes(`NetworkError`)||n.includes(`network error`)?t:n||t}function cr({verdict:e,caption:t,label:n,selected:r,onSelect:i}){let a=`lab-verdict-badge${r?` lab-verdict-badge--selected`:``}`;return i?(0,W.jsxs)(`button`,{type:`button`,className:a,"data-verdict":e,title:t,onClick:i,children:[(0,W.jsx)(`span`,{children:n}),(0,W.jsx)(`span`,{className:`suite`,children:t})]}):(0,W.jsxs)(`span`,{className:a,"data-verdict":e,title:t,children:[(0,W.jsx)(`span`,{children:n}),(0,W.jsx)(`span`,{className:`suite`,children:t})]})}function lr({rows:e,t,selectedKey:n,onSelect:r}){return e.length===0?(0,W.jsx)(`span`,{className:`muted`,children:`-`}):(0,W.jsx)(`div`,{className:`lab-verdict-stack`,children:e.map(e=>(0,W.jsx)(cr,{verdict:e.verdict,caption:e.suiteId,label:t(ar[e.verdict]),selected:n===e.projectionKey,onSelect:()=>r(e)},e.projectionKey))})}function ur({data:e,t,locale:n}){let{status:r}=e,i=[{label:t(`lab.subjectCount`),value:String(r.subjectCount??0)},{label:t(`lab.verdictCount`),value:String(r.verdictCount??0)},{label:t(`lab.observationCount`),value:String(r.observationCount??0)},{label:t(`lab.eventCount`),value:String(r.eventCount??0)}];return r.builtAtMs&&i.push({label:t(`lab.builtAt`),value:X(r.builtAtMs,n)}),(0,W.jsx)(`div`,{className:`lab-status-grid`,"aria-label":t(`lab.statusTitle`),children:i.map(e=>(0,W.jsxs)(`div`,{className:`lab-status-card`,children:[(0,W.jsx)(`span`,{className:`label`,children:e.label}),(0,W.jsx)(`span`,{className:`value`,children:e.value})]},e.label))})}function dr({community:e,locale:t}){if(!e||e.evidence.length===0)return null;let r=e.evidence.reduce((e,t)=>e+t.activeRecordCount,0),i=e.evidence.reduce((e,t)=>e+t.revokedRecordCount,0);return(0,W.jsxs)(`section`,{className:`lab-matrix-block`,"data-testid":`lab-community-evidence`,children:[(0,W.jsx)(`h3`,{className:`lab-matrix-title`,children:n(t,`community.title`)}),(0,W.jsx)(`p`,{className:`muted`,children:n(t,`community.notLocalVerdict`)}),(0,W.jsxs)(`dl`,{className:`lab-detail-meta`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:n(t,`community.bundles`)}),(0,W.jsx)(`dd`,{children:e.evidence.length})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:n(t,`community.activeRecords`)}),(0,W.jsx)(`dd`,{children:r})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:n(t,`community.revokedRecords`)}),(0,W.jsx)(`dd`,{children:i})]})]})]})}function fr({verdict:e,detail:t,loading:r,error:i,t:a,locale:o,onClose:s}){let c=new Set([...e.contributingEventIds,...e.contradictingEventIds]).size;return(0,W.jsxs)(`aside`,{className:`lab-detail-pane`,"aria-label":a(`lab.detailTitle`),children:[(0,W.jsxs)(`div`,{className:`lab-detail-head`,children:[(0,W.jsx)(`h3`,{children:Tn(e.subjectId)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:s,children:a(`lab.detailClose`)})]}),(0,W.jsxs)(`dl`,{className:`lab-detail-meta`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:a(`lab.col.layer`)}),(0,W.jsx)(`dd`,{children:a(rr[e.evidenceLayer])})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:a(`lab.col.suite`)}),(0,W.jsx)(`dd`,{className:`mono`,children:e.suiteId})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:a(`lab.col.verdict`)}),(0,W.jsx)(`dd`,{children:a(ar[e.verdict])})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:a(`lab.col.asOf`)}),(0,W.jsx)(`dd`,{children:X(e.asOf,o)})]})]}),r&&(0,W.jsx)(ve,{busy:!0,children:a(`common.loading`)}),i&&(0,W.jsx)(d,{tone:`err`,children:i}),t&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`section`,{className:`lab-detail-section`,children:[(0,W.jsx)(`h4`,{children:a(`lab.detailSubject`)}),(0,W.jsx)(`p`,{className:`mono`,children:t.subject.subjectKind})]}),t.production&&(0,W.jsxs)(`section`,{className:`lab-detail-section`,"data-testid":`lab-production-signals`,children:[(0,W.jsx)(`h4`,{children:a(`lab.production.title`)}),(0,W.jsx)(`p`,{className:`muted`,children:a(`lab.production.notVerification`)}),(0,W.jsxs)(`dl`,{className:`lab-detail-meta`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:a(`lab.production.attempts`)}),(0,W.jsx)(`dd`,{children:t.production.summary.recentProductionAttempts})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:a(`lab.production.successes`)}),(0,W.jsx)(`dd`,{children:t.production.summary.recentSuccessfulAttempts})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:a(`lab.production.routeErrors`)}),(0,W.jsx)(`dd`,{children:t.production.summary.recentRouteErrorSignals})]}),t.production.summary.lastObservedProductionAttempt!==void 0&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:a(`lab.production.lastObserved`)}),(0,W.jsx)(`dd`,{children:X(t.production.summary.lastObservedProductionAttempt,o)})]})]})]}),t.observations.length>0&&(0,W.jsxs)(`section`,{className:`lab-detail-section`,children:[(0,W.jsx)(`h4`,{children:a(`lab.detailObservations`)}),(0,W.jsx)(`ul`,{className:`lab-detail-list`,children:t.observations.map(e=>(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`mono`,children:e.scenarioId}),(0,W.jsx)(`span`,{children:e.outcome}),(0,W.jsx)(`span`,{className:`muted`,children:X(e.completedAt,o)})]},e.eventId))})]}),(t.events.length>0||c>0)&&(0,W.jsxs)(`section`,{className:`lab-detail-section`,children:[(0,W.jsxs)(`h4`,{children:[a(`lab.detailEvents`),t.events.length<c?` (${t.events.length}/${c})`:``]}),(0,W.jsx)(`ul`,{className:`lab-detail-list`,children:t.events.map(e=>(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`mono`,children:e.eventId}),(0,W.jsx)(`span`,{children:e.eventKind})]},e.eventId))})]}),t.artifacts.length>0&&(0,W.jsxs)(`section`,{className:`lab-detail-section`,children:[(0,W.jsx)(`h4`,{children:a(`lab.detailArtifacts`)}),(0,W.jsx)(`ul`,{className:`lab-detail-list`,children:t.artifacts.map(e=>(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`mono`,title:e.digest,children:Tn(e.digest)}),(0,W.jsx)(`span`,{children:e.artifactClass??`-`}),(0,W.jsx)(`span`,{children:n(o,or[e.status])})]},e.digest))})]})]})]})}function pr({apiBase:e,active:t=!0,onCountChange:r}){let{t:i,locale:o}=a(),[s,c]=(0,P.useState)({layer:``,verdict:``,subjectQuery:``,suiteId:``}),[l,u]=(0,P.useState)(null),[f,m]=(0,P.useState)(null),[h,g]=(0,P.useState)(!1),[_,v]=(0,P.useState)(null),[b,x]=(0,P.useState)(null),[S,C]=(0,P.useState)(!1),[w,T]=(0,P.useState)(null),E=(0,P.useRef)(null),D=(0,P.useRef)(null),O=(0,P.useRef)(null),k=(0,P.useMemo)(()=>xn(s),[s]),A=JSON.stringify(k),te=(0,P.useCallback)(t=>$n(e,k,t),[e,k]),j=`lab-matrix:${e}:${A}`,M=_e(j,[e,A],te,{isEmpty:e=>e.verdicts.length===0,pollMs:6e4,enabled:t,pauseWhenHidden:!0}),ne=(0,P.useCallback)(()=>{E.current?.abort(),E.current=null,u(null),m(null),g(!1)},[]),N=(0,P.useCallback)(()=>{O.current=null,D.current?.abort(),D.current=null,v(null),x(null),T(null),C(!1)},[]);(0,P.useEffect)(()=>{E.current?.abort()},[M.data]),(0,P.useEffect)(()=>()=>{E.current?.abort(),D.current?.abort()},[]);let re=(0,P.useCallback)(e=>{N(),ne(),c(e)},[N,ne]),ie=l!==null&&l.baseData===M.data&&l.queryKey===A?l:null,ae=f!==null&&f.baseData===M.data&&f.queryKey===A?f.message:null,oe=(0,P.useMemo)(()=>{if(!t||!M.data?.status.projectionAvailable)return null;let e=M.data.status.verdictCount;return typeof e==`number`?e:M.data.verdicts.length+(ie?.verdicts.length??0)},[t,M.data,ie]);(0,P.useEffect)(()=>{r?.(oe)},[r,oe]);let se=(0,P.useMemo)(()=>M.data?[...M.data.verdicts,...ie?.verdicts??[]]:[],[M.data,ie]),ce=(0,P.useMemo)(()=>M.data?Cn(se,M.data.subjects):[],[se,M.data]),le=(0,P.useCallback)(async()=>{let t=ie?.nextCursor??M.data?.nextCursor,n=M.data;if(!t||!n||h)return;E.current?.abort();let r=new AbortController;E.current=r;let a=A;m(null),g(!0);try{let i=await er(e,k,t,r.signal);if(r.signal.aborted)return;u(e=>{let t=e?.baseData===n&&e.queryKey===a?e.verdicts:[];return{baseData:n,queryKey:a,verdicts:[...t,...i.verdicts],nextCursor:i.nextCursor,hasMore:i.hasMore}})}catch(e){r.signal.aborted||m({baseData:n,queryKey:a,message:sr(e,i(`lab.loadFailed`))})}finally{E.current===r&&(E.current=null,g(!1))}},[e,h,k,A,M.data,i,ie]),ue=(0,P.useCallback)(async n=>{if(!t)return;D.current?.abort();let r=new AbortController;D.current=r,O.current=n.projectionKey,v(n),x(null),T(null),C(!0);try{let t=await nr(e,n,r.signal);!r.signal.aborted&&O.current===n.projectionKey&&x(t)}catch(e){!r.signal.aborted&&O.current===n.projectionKey&&T(sr(e,i(`lab.detailLoadFailed`)))}finally{D.current===r&&(D.current=null,!r.signal.aborted&&O.current===n.projectionKey&&C(!1))}},[t,e,i]),de=M.refresh,fe=(0,P.useCallback)(()=>{N(),ne(),de({forceLoading:!0})},[N,de,ne]),pe=t?_:null,me=ie?ie.hasMore:M.data?.hasMore??!1,he=[{value:``,label:i(`lab.filter.all`)},...on.map(e=>({value:e,label:i(rr[e])}))],ge=[{value:``,label:i(`lab.filter.all`)},...sn.map(e=>({value:e,label:i(ar[e])}))],be=M.data?wn(M.data.subjects,se):[];if(M.state.showSkeleton)return(0,W.jsx)(ye,{label:i(`lab.loading`),rows:5});let xe=M.state.showError?sr(M.error,i(`lab.loadFailed`)):null,Se=M.data?.status,Ce=Se&&!Se.projectionAvailable,we=Se?.projectionIncompatible===!0;return(0,W.jsxs)(`div`,{className:`lab-page`,children:[(0,W.jsx)(`div`,{className:`lab-toolbar`,children:(0,W.jsxs)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:fe,disabled:M.refreshing,children:[(0,W.jsx)(ee,{}),i(`lab.refresh`)]})}),M.refreshing&&!M.state.showSkeleton&&(0,W.jsx)(ve,{busy:!0,live:!xe,children:i(`common.loading`)}),xe&&(0,W.jsx)(d,{tone:`err`,children:xe}),we&&(0,W.jsx)(d,{tone:`err`,children:i(`lab.projectionIncompatible`)}),Ce&&!we&&(0,W.jsx)(y,{title:i(`lab.projectionUnavailable`)}),M.data&&(0,W.jsx)(dr,{community:M.data.community,locale:o}),M.data&&Se?.projectionAvailable&&!we&&(0,W.jsxs)(`div`,{className:`lab-layout`,children:[(0,W.jsxs)(`div`,{className:`lab-main`,children:[(0,W.jsx)(ur,{data:M.data,t:i,locale:o}),(0,W.jsxs)(`div`,{className:`lab-filters`,children:[(0,W.jsxs)(`div`,{className:`lab-filter-field`,children:[(0,W.jsx)(`label`,{htmlFor:`lab-filter-layer`,children:i(`lab.filter.layer`)}),(0,W.jsx)(p,{id:`lab-filter-layer`,value:s.layer,options:he,onChange:e=>re(t=>({...t,layer:e})),label:i(`lab.filter.layer`),portal:!1})]}),(0,W.jsxs)(`div`,{className:`lab-filter-field`,children:[(0,W.jsx)(`label`,{htmlFor:`lab-filter-verdict`,children:i(`lab.filter.verdict`)}),(0,W.jsx)(p,{id:`lab-filter-verdict`,value:s.verdict,options:ge,onChange:e=>re(t=>({...t,verdict:e})),label:i(`lab.filter.verdict`),portal:!1})]}),(0,W.jsxs)(`div`,{className:`lab-filter-field`,children:[(0,W.jsx)(`label`,{htmlFor:`lab-filter-subject`,children:i(`lab.filter.subject`)}),(0,W.jsx)(`input`,{id:`lab-filter-subject`,type:`search`,value:s.subjectQuery,list:`lab-subject-suggestions`,onChange:e=>re(t=>({...t,subjectQuery:e.currentTarget.value}))}),(0,W.jsx)(`datalist`,{id:`lab-subject-suggestions`,children:be.map(e=>(0,W.jsx)(`option`,{value:e.subjectId,label:e.subjectKind||n(o,`subjectKindUnknown`)},e.subjectId))})]})]}),ce.length===0?(0,W.jsx)(y,{title:i(`lab.empty`)}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`lab-matrix-block`,children:[(0,W.jsx)(`h3`,{className:`lab-matrix-title`,children:i(`lab.matrixTitle`)}),(0,W.jsx)(`div`,{className:`lab-matrix-scroll`,children:(0,W.jsxs)(`table`,{className:`lab-matrix`,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{children:i(`lab.col.subject`)}),(0,W.jsx)(`th`,{children:i(`lab.subjectKind`)}),on.map(e=>(0,W.jsx)(`th`,{children:i(ir[e])},e))]})}),(0,W.jsx)(`tbody`,{children:ce.map(e=>(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`td`,{className:`subject`,title:e.subjectId,children:Tn(e.subjectId)}),(0,W.jsx)(`td`,{className:`kind`,children:e.subjectKind||n(o,`subjectKindUnknown`)}),on.map(t=>(0,W.jsx)(`td`,{children:(0,W.jsx)(lr,{rows:e.byLayer[t],t:i,selectedKey:pe?.projectionKey??null,onSelect:e=>{ue(e)}})},t))]},e.subjectId))})]})})]}),(0,W.jsxs)(`div`,{className:`lab-matrix-block`,children:[(0,W.jsx)(`h3`,{className:`lab-matrix-title`,children:i(`lab.verdictsTitle`)}),(0,W.jsx)(`div`,{className:`lab-matrix-scroll`,children:(0,W.jsxs)(`table`,{className:`lab-detail-table`,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{children:i(`lab.col.subject`)}),(0,W.jsx)(`th`,{children:i(`lab.col.layer`)}),(0,W.jsx)(`th`,{children:i(`lab.col.suite`)}),(0,W.jsx)(`th`,{children:i(`lab.col.verdict`)}),(0,W.jsx)(`th`,{children:i(`lab.col.asOf`)})]})}),(0,W.jsx)(`tbody`,{children:se.map(e=>{let t=pe?.projectionKey===e.projectionKey;return(0,W.jsxs)(`tr`,{className:t?`selected`:``,children:[(0,W.jsx)(`td`,{className:`mono`,title:e.subjectId,children:(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"data-verdict-detail":e.projectionKey,"aria-pressed":t,"aria-label":n(o,`selectVerdict`,{subject:Tn(e.subjectId)}),onClick:()=>{ue(e)},children:Tn(e.subjectId)})}),(0,W.jsx)(`td`,{children:i(rr[e.evidenceLayer])}),(0,W.jsx)(`td`,{className:`mono`,children:e.suiteId}),(0,W.jsx)(`td`,{children:(0,W.jsx)(cr,{verdict:e.verdict,caption:e.suiteId,label:i(ar[e.verdict])})}),(0,W.jsx)(`td`,{children:X(e.asOf,o)})]},e.projectionKey)})})]})})]}),ae&&(0,W.jsx)(d,{tone:`err`,children:ae}),me&&(0,W.jsx)(`div`,{className:`lab-load-more`,children:(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:h,onClick:()=>{le()},children:i(h?`common.loading`:`lab.loadMore`)})})]})]}),pe&&(0,W.jsx)(fr,{verdict:pe,detail:b,loading:S,error:w,t:i,locale:o,onClose:N})]})]})}var mr={catalog:`models.tab.catalog`,combos:`models.tab.combos`,routing:`models.tab.routing`,compatibility:`models.tab.compatibility`};function hr({tab:e,onSelect:n,meta:r}){let i=t(),a=(0,P.useRef)(null);a.current===null&&(a.current=new Map);let o=e=>{n(e),window.requestAnimationFrame(()=>{a.current.get(e)?.focus({preventScroll:!0})})},s=t=>{let n=j.indexOf(e),r=null;t.key===`ArrowLeft`?r=(n-1+j.length)%j.length:t.key===`ArrowRight`?r=(n+1)%j.length:t.key===`Home`?r=0:t.key===`End`&&(r=j.length-1),r!==null&&(t.preventDefault(),o(j[r]))};return(0,W.jsx)(`div`,{className:`page-tabs`,role:`tablist`,"aria-label":i(`models.tabsLabel`),children:j.map(t=>{let n=t===e,c=r?.[t];return(0,W.jsxs)(`button`,{ref:e=>{e?a.current.set(t,e):a.current.delete(t)},type:`button`,role:`tab`,id:ae(t),"aria-selected":n,"aria-controls":E(t),tabIndex:n?0:-1,className:`page-tab${n?` page-tab--active`:``}`,onClick:()=>o(t),onKeyDown:s,children:[i(mr[t]),c?(0,W.jsx)(`span`,{className:`section-tab-meta`,children:c}):null]},t)})})}function gr(e,t){let n=new Map;for(let t of e){let e=n.get(t.provider);e?e.push(t):n.set(t.provider,[t])}let r=new Map(t.map(e=>[e.name,e]));for(let e of t){if(e.disabled===!0){n.delete(e.name);continue}e.authMode!==`forward`&&(n.has(e.name)||n.set(e.name,[]))}return[...n.entries()].map(([e,t])=>{let n=r.get(e);return{provider:e,rows:t,native:t.length>0&&t.every(e=>e.native===!0),nativeProviderGroup:t.some(e=>e.native===!0),liveModels:n?.liveModels!==!1,configuredModels:n?.models??[],contextWindow:n?.contextWindow,modelContextWindows:n?.modelContextWindows,discovery:n?.discovery}}).sort((e,t)=>e.nativeProviderGroup===t.nativeProviderGroup?e.provider.localeCompare(t.provider):e.nativeProviderGroup?-1:1)}function _r(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function vr(e){if(!Array.isArray(e)||e.some(e=>typeof e!=`string`))throw Error(`invalid model list`);return[...new Set(e)]}function yr(e){if(!_r(e))throw Error(`invalid selected models response`);let t=e.selected;if(!_r(t))throw Error(`invalid selected models response`);return Object.fromEntries(Object.entries(t).map(([e,t])=>[e,vr(t)]))}async function br(e,t=fetch,n){let r=await t(`${e}/api/selected-models`,n?{signal:n}:void 0);if(!r.ok)throw Error(`selected models HTTP ${r.status}`);return yr(await r.json())}function xr(e,t,n,r=!1){if(r)return!0;let i=e[t];return!i||i.length===0||i.includes(n)}function Sr(e,t,n,r,i){return xr(e,t,n,r)&&!i}async function Cr(e,t,n,r,i,a=fetch){return a(`${e}/api/model-visibility`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({scope:t,provider:n,targets:r,enabled:i})})}function wr(e,t){return e===t}function Tr(e,t){switch(t.reason){case`http`:return e(`models.discoveryFailedHttp`,{status:t.httpStatus});case`blocked`:return e(`models.discoveryFailedBlocked`);case`invalid_response`:return e(`models.discoveryFailedInvalidResponse`);case`network`:return e(`models.discoveryFailedNetwork`);case`provider`:return e(`models.discoveryFailedProvider`);default:return e(`models.discoveryFailedGeneric`)}}var Er=[`none`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`],Dr=Array.from({length:18},(e,t)=>1e5+t*5e4),Or=new Set(Dr),kr=272e3,Ar=922e3,jr=[kr,372e3,Ar],Mr=new Set(jr),Nr=`custom`,Pr=[4,8,16,32,64,128,256,500,1e3],Fr=new Set(Pr),Ir=`ocx-models-collapsed:v2`;function $(e){return!Number.isFinite(e)||e<=0?String(e):e%1e3==0?e>=1e6?Number((e/1e6).toFixed(2))+`M`:`${e/1e3}k`:e.toLocaleString()}function Lr(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?e:void 0}function Rr(e){return e===`live`||e===`registry`||e===`snapshot`||e===`derived`}function zr(e){let t=Lr(e.contextWindow);if(t!==void 0&&e.metadataSource!==`unknown`){if(t===128e3){if(Rr(e.metadataSource)||e.native===!0)return t;if(e.metadataSource===void 0||e.metadataSource===`config_fallback`)return}return t}}function Br(e){switch(e.metadataSource){case`live`:return`models.contextMetadataLive`;case`registry`:return e.provider===`cursor`?`models.contextMetadataCursorStatic`:`models.contextMetadataRegistry`;case`snapshot`:return`models.contextMetadataSnapshot`;case`config_fallback`:return`models.contextMetadataFallback`;case`derived`:return`models.contextMetadataDerived`;default:return}}function Vr(e,t,n=Date.now()){if(!e)return t(`time.notChecked`);let r=Date.parse(e);if(!Number.isFinite(r))return t(`time.notChecked`);let i=Math.max(0,n-r),a=Math.floor(i/864e5);if(a===1)return t(`models.contextYesterday`);if(a>=2)return t(`time.daysAgo`,{n:a});let o=Math.floor(i/36e5);if(o>=1)return t(`time.hoursAgo`,{n:o});let s=Math.floor(i/6e4);return s>=1?t(`time.minutesAgo`,{n:s}):t(`time.justNow`)}function Hr(e,t,n=Date.now()){let r=e.contextCapped===!0?Lr(e.contextCap):void 0,i=Lr(e.detectedContextWindow);if(r!==void 0&&i!==void 0&&i>r)return t(`models.contextTooltipCapped`,{detected:$(i),cap:$(r)});let a=zr(e);if(a===void 0)return e.metadataSource===`unknown`||Lr(e.contextWindow)===128e3?t(`models.contextTooltipUnknown`):void 0;if(r!==void 0)return t(`models.contextTooltipCapped`,{detected:$(i??a),cap:$(r)});if(e.metadataStale===!0)return t(`models.contextTooltipStale`,{value:$(a),when:t(`models.contextLastChecked`,{when:Vr(e.metadataObservedAt,t,n)})});if(e.metadataSource===`live`)return t(`models.contextTooltipDetected`,{value:$(a)});let o=Br(e);return o?t(`models.contextTooltipSource`,{value:$(a),source:t(o)}):$(a)}function Ur(e){let t=new Set;for(let n of e)n.disabled&&t.add(n.namespaced);return t}function Wr(e,t,n,r){let i=[];for(let a of e){let e=t.has(a.id)||t.has(a.namespaced);Sr(n,a.provider,a.id,a.native===!0,e)&&i.push({value:a.namespaced,label:r?b(a.namespaced,r):a.namespaced})}return i}function Gr(e=localStorage){try{let t=e.getItem(Ir);if(t===null)return null;let n=JSON.parse(t);return Array.isArray(n)?new Set(n.filter(e=>typeof e==`string`)):null}catch{return null}}function Kr(e,t=localStorage){try{t.setItem(Ir,JSON.stringify([...e]))}catch{}}function qr({liveModels:e,discovery:n,showFailureBadge:r=!0}){let i=t(),a=e&&n?.status===`failed`?n:void 0;return(0,W.jsxs)(`div`,{className:`row muted text-label leading-body`,role:`status`,style:{alignItems:`flex-start`,gap:8,padding:`6px 0`},children:[(0,W.jsx)(fe,{width:15,height:15,"aria-hidden":`true`,style:{flexShrink:0,marginTop:2}}),(0,W.jsxs)(`span`,{children:[a&&r&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`badge badge-amber`,children:i(`models.discoveryFailedBadge`)}),` `]}),a?`${Tr(i,a)} `:`${i(e?`models.emptyDiscovery`:`models.emptyDiscoveryDisabled`)} `,(0,W.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:()=>c(`providers`),children:i(`models.openProviderSettings`)})]})]})}var Jr={catalog:`models.subtitle`,combos:`models.subtitle.combos`,routing:`models.subtitle.routing`,compatibility:`models.subtitle.compatibility`};function Yr(e){let t=e.replace(/[_,\s]/g,``);if(!t)return null;let n=Number(t);return Number.isSafeInteger(n)&&n>0?n:void 0}function Xr({apiBase:e,restartEpoch:n=0}){let[r,i]=(0,P.useState)(null),a=(0,P.useRef)(!0);(0,P.useEffect)(()=>(a.current=!0,()=>{a.current=!1}),[]);let o=(0,P.useCallback)(t=>{we(e,{signal:t}).then(e=>{t?.aborted||!a.current||i(e.state)})},[e]),{restarting:c,restart:f}=ie(e,{onSettled:()=>o()});(0,P.useEffect)(()=>{let e=new AbortController;return o(e.signal),()=>e.abort()},[o,n]);let[C,k]=(0,P.useState)(ue),[A,j]=(0,P.useState)(()=>new Set([ue()])),N=(0,P.useCallback)(e=>{k(e),j(t=>t.has(e)?t:new Set([...t,e]))},[]);(0,P.useEffect)(()=>{let e=()=>N(ue());return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[N]);let re=(0,P.useCallback)(e=>{O(e),N(e)},[N]),se=C===`catalog`,[le,he]=(0,P.useState)(null),[ve,Se]=(0,P.useState)(null),[Ce,Te]=(0,P.useState)(null),F=t(),Ee=`ocx.models.catalog.v1:${e}`,I=(0,P.useMemo)(()=>oe(Ee),[Ee]),[L,De]=(0,P.useState)(()=>I?.models??[]),[Oe,ke]=(0,P.useState)(()=>I?.providers??[]),[Ae,je]=(0,P.useState)(()=>new Set(I?.disabled??[])),[Me,Ne]=(0,P.useState)(()=>I?.selectedModels??null),[Pe,Fe]=(0,P.useState)({}),[Ie,Le]=(0,P.useState)({}),[Re,ze]=(0,P.useState)(()=>I?.contextCaps??{}),[R,Be]=(0,P.useState)(()=>I?.contextCapValue??35e4),[Ve,He]=(0,P.useState)(``),[Ue,We]=(0,P.useState)(!1),[z,Ge]=(0,P.useState)({}),[Ke,qe]=(0,P.useState)({}),Je=Gr(),[Ye,Xe]=(0,P.useState)(()=>Je??new Set),Ze=(0,P.useRef)(Je===null),[Qe,B]=(0,P.useState)(``),[$e,V]=(0,P.useState)(!1),[et,tt]=(0,P.useState)(0),H=(e,t)=>{V(e),B(t),tt(e=>e+1)};(0,P.useEffect)(()=>{if(!Qe)return;let e=setTimeout(()=>B(``),$e?6e3:8e3);return()=>clearTimeout(e)},[Qe,$e,et]);let[U,nt]=(0,P.useState)(!1),rt=(0,P.useRef)(!1),it=(0,P.useRef)(0),at=(0,P.useRef)(!1),[G,ot]=(0,P.useState)(null),[st,ct]=(0,P.useState)({}),[lt,ut]=(0,P.useState)(null),[K,dt]=(0,P.useState)({providers:{},models:{},defaults:{global:!1,providers:{}}}),[ft,pt]=(0,P.useState)(!1),[mt,ht]=(0,P.useState)(null),[gt,_t]=(0,P.useState)(!0),[vt,yt]=(0,P.useState)(!1),[xt,St]=(0,P.useState)(``),Ct=(0,P.useRef)(!1),[wt,Tt]=(0,P.useState)(``),[Et,Dt]=(0,P.useState)(!1),[Ot,kt]=(0,P.useState)(!1),At=(0,P.useRef)(null),jt=M(Ot,At),[Mt,q]=(0,P.useState)(!1),Nt=(0,P.useRef)(null),Pt=M(Mt,Nt),Ft=(0,P.useCallback)(async t=>{let n=await fetch(`${e}/api/aliases`,{signal:t}),r=await g(n);r&&!t?.aborted&&dt(r)},[e]),It=async t=>{let n=window.prompt(F(`models.aliasPrompt`),K.providers[t]??``);if(n!==null){if(!(await fetch(`${e}/api/providers/${encodeURIComponent(t)}/alias`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({alias:n.trim()||null})})).ok){H(!1,F(`models.aliasConflict`));return}await Ft(),H(!0,F(`models.aliasSaved`))}},Lt=async(t,n)=>{let r=K.models[t]?.[n]?.alias??``,i=window.prompt(F(`models.modelAliasPrompt`),r);if(i===null)return;let a=i.trim()?{set:{[n]:i.trim()}}:{remove:[n]};if(!(await fetch(`${e}/api/providers/${encodeURIComponent(t)}/model-aliases`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(a)})).ok){H(!1,F(`models.aliasConflict`));return}await Ft(),H(!0,F(`models.aliasSaved`))},Rt=async(t,n)=>{(await fetch(`${e}/api/default-aliases`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({enabled:t,...n?{provider:n}:{}})})).ok&&await Ft()},[zt,Bt]=(0,P.useState)(`add`),[Vt,Ht]=(0,P.useState)(``),[Ut,Wt]=(0,P.useState)(``),[Gt,Kt]=(0,P.useState)(``),[qt,Jt]=(0,P.useState)(``),[Yt,Xt]=(0,P.useState)(``),[Zt,Qt]=(0,P.useState)(!1),[$t,en]=(0,P.useState)([`text`]),[tn,nn]=(0,P.useState)(!1),[rn,on]=(0,P.useState)([]),sn=(0,P.useRef)(!1),[J,cn]=(0,P.useState)(!1),[Y,ln]=(0,P.useState)(``),[un,dn]=(0,P.useState)(null),[fn,pn]=(0,P.useState)([]),[mn,hn]=(0,P.useState)(``),[gn,_n]=(0,P.useState)(``),[vn,yn]=(0,P.useState)({}),[bn,xn]=(0,P.useState)({contextWindow:null,modelContextWindows:{}}),[Sn,Cn]=(0,P.useState)(new Set),[wn,Tn]=(0,P.useState)(!1),[X,En]=(0,P.useState)(!1),[Dn,On]=(0,P.useState)(``),kn=(0,P.useRef)(null),An=M(un!==null,kn),[jn,Mn]=(0,P.useState)(null),Nn=(0,P.useRef)(null),[Z,Pn]=(0,P.useState)(null),[Fn,In]=(0,P.useState)(!1),[Ln,Rn]=(0,P.useState)(null);(0,P.useEffect)(()=>()=>{Nn.current&&clearTimeout(Nn.current)},[]);let zn=(0,P.useMemo)(()=>Wr(L,Ae,Me??{},F),[L,Ae,Me,F]),Bn=(0,P.useMemo)(()=>{let e=new Set(zn.map(e=>e.value));return s(L.filter(t=>e.has(t.namespaced)),Z?.model)},[L,Z?.model,zn]),Vn=(0,P.useCallback)(async()=>{let t=pe(15e3);try{let n=await fetch(`${e}/api/shadow-call-settings`,{signal:t.signal}),r=await g(n);r&&Pn(r)}catch{}finally{t.clear()}},[e]),Hn=(0,P.useCallback)(async()=>{if(Ct.current)return;let t=pe(15e3);try{let n=await fetch(`${e}/api/v2`,{signal:t.signal});if(!(n.headers.get(`content-type`)??``).includes(`application/json`)){ot(null);return}let r=await g(n);if(!r||typeof r.enabled!=`boolean`){ot(null);return}ot({enabled:r.enabled,agentsMaxThreadsConflict:r.agentsMaxThreadsConflict===!0,maxConcurrentThreadsPerSession:typeof r.maxConcurrentThreadsPerSession==`number`?r.maxConcurrentThreadsPerSession:null,multiAgentMode:r.multiAgentMode===`v1`||r.multiAgentMode===`v2`?r.multiAgentMode:`default`,keepNativeChatGptOnV1:r.keepNativeChatGptOnV1===!0})}catch{ot(null)}finally{t.clear(),_t(!1)}},[e]),Un=(0,P.useCallback)(async t=>{let[n,r,i,a]=await Promise.all([fetch(`${e}/api/models`,{signal:t}),fetch(`${e}/api/provider-context-caps`,{signal:t}),fetch(`${e}/api/providers`,{signal:t}),br(e,fetch,t)]),[o,s,c]=await Promise.all([_(n),_(r),_(i)]);if(o===void 0||s===void 0||c===void 0)throw Error(`models payload missing`);if(t.aborted)throw Error(`models request aborted`);let l=Ur(o),u=typeof s.value==`number`&&Number.isFinite(s.value)&&s.value>0?s.value:typeof s.cap==`number`&&Number.isFinite(s.cap)&&s.cap>0?s.cap:void 0,d=u===void 0?35e4:u,f={models:o,providers:c,selectedModels:a,disabled:[...l],contextCaps:s.caps??{},contextCapValue:d};return te(Ee,f),f},[e,Ee]),Wn=(0,P.useCallback)(e=>{let t=gr(e.models,e.providers);Rn(e=>e!==null&&!t.some(t=>t.provider===e)?null:e),De(e.models),ke(e.providers),je(new Set(e.disabled)),Ne(e.selectedModels),Be(e.contextCapValue),ze(e.contextCaps)},[]),Gn=_e(Ee,[e],async e=>{let t=await Un(e);if(e.aborted)throw Error(`models request aborted`);return Wn(t),t},{isEmpty:()=>!1,pollMs:1e4,initialData:I??void 0,enabled:se,deadlineMs:6e4}),Kn=Gn.state,qn=(0,P.useCallback)(async(e=!1)=>{if(at.current&&!e)return!1;at.current=!0;let t=++it.current;try{let e=await Un(new AbortController().signal);return wr(t,it.current)?(Wn(e),D(Ee,e),!0):!1}catch{return!1}finally{wr(t,it.current)&&(at.current=!1)}},[Wn,Ee,Un]),Jn=(0,P.useCallback)(async()=>{try{let t=pe(15e3),n=await fetch(`${e}/api/model-presets`,{signal:t.signal}),r=await g(n);ct(r?.providers??{})}catch{ct({})}},[e]),Yn=(0,P.useCallback)(async()=>{try{let t=await fetch(`${e}/api/model-discovery`);ut(await g(t)??null)}catch{ut(null)}},[e]);(0,P.useEffect)(()=>{if(!se)return;let e=window.setTimeout(()=>{Vn(),Hn(),Ft(),Jn(),Yn()},0),t=T(()=>{Ct.current||Hn()},1e4);return()=>{window.clearTimeout(e),t()}},[se,Yn,Jn,Vn,Hn,Ft]);let Q=(0,P.useMemo)(()=>gr(L,Oe),[L,Oe]),Xn=L.length>0||Kn.data!==void 0,Zn=(e,t)=>{kn.current=t;let n=[...new Set([...e.rows.map(e=>e.id),...e.configuredModels,...Object.keys(e.modelContextWindows??{})])].sort(),r=n[0]??``;dn(e.provider),pn(n),hn(r);let i=e.contextWindow?String(e.contextWindow):``,a=Object.fromEntries(Object.entries(e.modelContextWindows??{}).map(([e,t])=>[e,String(t)]));_n(i),yn(a),xn({contextWindow:e.contextWindow??null,modelContextWindows:Object.fromEntries(Object.entries(e.modelContextWindows??{}).map(([e,t])=>[e,t]))}),Cn(new Set),Tn(!1),On(``)},Qn=e=>{hn(e)},$n=async()=>{if(!un)return;let t=Yr(gn);if(!Q.find(e=>e.provider===un)){On(F(`models.contextSaveFailed`));return}if(wn&&t===void 0){On(F(`models.contextInvalid`));return}let n={};for(let e of Sn){let t=Yr(vn[e]??``);if(t===void 0){On(F(`models.contextInvalid`));return}t!==(bn.modelContextWindows[e]??null)&&(n[e]=t)}let r=wn&&t!==bn.contextWindow;if(!r&&Object.keys(n).length===0){dn(null),H(!0,F(`models.contextUnchanged`));return}En(!0),On(``);try{let i={};r&&(i.contextWindow=t),Object.keys(n).length>0&&(i.modelContextWindows=n);let a=await fetch(`${e}/api/providers?name=${encodeURIComponent(un)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(i)});await _(a,F(`models.contextSaveFailed`))}catch(e){On(e instanceof Error?e.message:F(`models.contextSaveFailed`));return}finally{En(!1)}dn(null),H(!0,F(`models.contextSaved`)),await qn(!0)};(0,P.useEffect)(()=>{if(!Ze.current||Q.length===0)return;Ze.current=!1;let e=new Set(Q.map(e=>e.provider));Xe(e),Kr(e)},[Q]);let er=(0,P.useMemo)(()=>Me?L.filter(e=>Sr(Me,e.provider,e.id,e.native===!0,Ae.has(e.namespaced))).length:0,[Ae,L,Me]),tr=(0,P.useMemo)(()=>({catalog:Xn?F(`models.active`,{active:er,total:L.length}):void 0,combos:le===null?void 0:String(le),routing:ve===null?void 0:String(ve),compatibility:Ce===null?void 0:String(Ce)}),[Xn,le,Ce,er,L.length,ve,F]),nr=async(t,n,r,i)=>{++it.current,nt(!0),rt.current=!0,B(``);let a=null;try{(await Cr(e,t,n,r,i)).ok||(a=`models.saveFailed`)}catch{a=`models.networkError`}finally{let e=await qn(!0);a?(V(!1),B(F(a))):e&&(V(!0),B(F(`models.applied`))),nt(!1),rt.current=!1}},rr=async(t,n=!1)=>{nt(!0),rt.current=!0,B(``);let r=Re[t]===void 0;try{let i=await fetch(`${e}/api/provider-context-caps`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(r&&n?{provider:t,enabled:r,value:Ar}:{provider:t,enabled:r})});try{let e=await _(i,F(`models.capSaveFailed`));ze(e?.caps??{}),V(!0),B(F(`models.capApplied`)),await qn(!0)}catch(e){V(!1),B(e instanceof Error?e.message:F(`models.capSaveFailed`))}}catch{V(!1),B(F(`models.networkError`))}finally{nt(!1),rt.current=!1}},ir=e=>{Xe(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),Kr(n),n})},ar=e=>{Xe(()=>{let t=e?new Set(Q.map(e=>e.provider)):new Set;return Kr(t),t})},or=async t=>{nt(!0),rt.current=!0,B(``);try{let n=await fetch(`${e}/api/provider-context-caps`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});try{let e=await _(n,F(`models.capSaveFailed`));typeof e?.value==`number`&&Number.isFinite(e.value)&&e.value>0&&Be(e.value),ze(e?.caps??{}),V(!0),B(F(`models.capApplied`)),await qn(!0)}catch(e){V(!1),B(e instanceof Error?e.message:F(`models.capSaveFailed`))}}catch{V(!1),B(F(`models.networkError`))}finally{nt(!1),rt.current=!1}},sr=(0,P.useMemo)(()=>{let e=Q.filter(e=>!e.native);return e.length>0&&e.every(e=>Re[e.provider]===R)&&Object.keys(Re).every(e=>Re[e]===R)},[Q,Re,R]),cr=e=>{!Number.isSafeInteger(e)||e<=0||or(sr?{value:e,setAll:!0}:{value:e})},lr=(e,t)=>{if(t===`custom`){Ge(t=>({...t,[e]:!0})),qe(t=>({...t,[e]:String(Re[e]??R)}));return}Ge(t=>({...t,[e]:!1}));let n=Number(t);Number.isSafeInteger(n)&&n>0&&n!==Re[e]&&or({provider:e,enabled:!0,value:n})},ur=e=>{let t=Number((Ke[e]??``).replace(/[_,\s]/g,``));if(!Number.isSafeInteger(t)||t<=0){H(!1,F(`models.capSaveFailed`));return}Ge(t=>({...t,[e]:!1})),or({provider:e,enabled:!0,value:t})},dr=e=>{if(e===`custom`){We(!0),He(String(R));return}We(!1);let t=Number(e);Number.isSafeInteger(t)&&t>0&&t!==R&&cr(t)},fr=()=>{let e=Number(Ve.replace(/[_,\s]/g,``));if(!Number.isSafeInteger(e)||e<=0){H(!1,F(`models.capSaveFailed`));return}We(!1),cr(e)},mr=()=>{or({setAll:!sr})},_r=async t=>{if(!(!Z||Fn)){In(!0),Pn({...Z,...t});try{await fetch(`${e}/api/shadow-call-settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)})}finally{In(!1)}}},vr=async t=>{if(!(!G||Ct.current)){yt(!0),Ct.current=!0,St(``),B(``);try{let n=await fetch(`${e}/api/v2`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});try{let e=await _(n,F(`models.saveFailed`));if(!e||typeof e.enabled!=`boolean`){V(!1),B(F(`models.saveFailed`));return}ot({enabled:e.enabled,agentsMaxThreadsConflict:e.agentsMaxThreadsConflict===!0,maxConcurrentThreadsPerSession:typeof e.maxConcurrentThreadsPerSession==`number`?e.maxConcurrentThreadsPerSession:null,multiAgentMode:e.multiAgentMode===`v1`||e.multiAgentMode===`v2`?e.multiAgentMode:`default`,keepNativeChatGptOnV1:e.keepNativeChatGptOnV1===!0}),V(!0),B(F(`models.v2Applied`)),St((e.warnings??[]).join(` `))}catch(e){V(!1),B(e instanceof Error?e.message:F(`models.saveFailed`))}}catch{V(!1),B(F(`models.networkError`))}finally{yt(!1),Ct.current=!1}}},yr=async e=>{!G||G.multiAgentMode===e||await vr({multiAgentMode:e})},xr=async(t,n)=>{let r=await fetch(`${e}/api/model-discovery`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({policy:t,provider:n??null})});await g(r),await Promise.all([Yn(),qn()])},Ir=async(t,n)=>{if(!mt){ht(t);try{let r=pe(3e4),i=await fetch(`${e}/api/model-presets`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({provider:t,mode:n}),signal:r.signal}),a=await g(i)??{};a.fallback===`preset-empty`?H(!1,F(`models.presetEmpty`,{provider:t})):H(!0,n===`all`?F(`models.presetClearedToast`,{provider:t}):F(`models.presetAppliedToast`,{provider:t,count:String(a.selected?.length??0)})),await Promise.all([Jn(),qn()])}catch(e){H(!1,e instanceof Error?e.message:String(e))}finally{ht(null)}}},Lr=async e=>{!G||G.keepNativeChatGptOnV1===e||await vr({keepNativeChatGptOnV1:e})},Rr=async t=>{if(!(!G||Ct.current)){if(!Number.isInteger(t)||t<1){H(!1,F(`models.v2ThreadsInvalid`));return}if(G.maxConcurrentThreadsPerSession!==t){yt(!0),Ct.current=!0,St(``),B(``);try{let n=await fetch(`${e}/api/v2`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({maxConcurrentThreadsPerSession:t})});try{let e=await _(n,F(`models.saveFailed`));if(!e||typeof e.enabled!=`boolean`){V(!1),B(F(`models.saveFailed`));return}ot({enabled:e.enabled,agentsMaxThreadsConflict:e.agentsMaxThreadsConflict===!0,maxConcurrentThreadsPerSession:typeof e.maxConcurrentThreadsPerSession==`number`?e.maxConcurrentThreadsPerSession:null,multiAgentMode:e.multiAgentMode===`v1`||e.multiAgentMode===`v2`?e.multiAgentMode:`default`,keepNativeChatGptOnV1:e.keepNativeChatGptOnV1===!0}),V(!0),B(F(`models.v2ThreadsApplied`)),Dt(!1)}catch(e){V(!1),B(e instanceof Error?e.message:F(`models.saveFailed`))}}catch{V(!1),B(F(`models.networkError`))}finally{yt(!1),Ct.current=!1}}}},Vr=e=>{if(e===`custom`){Dt(!0),Tt(String(G?.maxConcurrentThreadsPerSession??``));return}Dt(!1),Rr(Number(e))},Xr=(e,t)=>{Nn.current&&clearTimeout(Nn.current),Nn.current=setTimeout(()=>{Mn({namespaced:e,rect:t.getBoundingClientRect()})},300)},Zr=(e,t)=>{Nn.current&&clearTimeout(Nn.current),Mn({namespaced:e,rect:t.getBoundingClientRect()})},Qr=()=>{Nn.current&&clearTimeout(Nn.current),Nn.current=setTimeout(()=>Mn(null),120)},$r=async(t,n,r,i,a,o)=>{cn(!0),ln(``);try{let s=await fetch(`${e}/api/custom-models`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:t,modelId:n,displayName:r,contextWindow:i,inputModalities:a,reasoningEfforts:o})});try{await _(s,F(`models.customSaveFailed`)),q(!1),H(!0,F(`models.customAdded`)),await qn(!0)}catch(e){ln(e instanceof Error?e.message:F(`models.customSaveFailed`))}}catch{ln(F(`models.networkError`))}finally{cn(!1)}},ei=async(t,n)=>{cn(!0),ln(``);try{let r=await fetch(`${e}/api/custom-models/${encodeURIComponent(t)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)});try{await _(r,F(`models.customSaveFailed`)),q(!1),H(!0,F(`models.customUpdated`)),await qn(!0)}catch(e){ln(e instanceof Error?e.message:F(`models.customSaveFailed`))}}catch{ln(F(`models.networkError`))}finally{cn(!1)}},ti=async t=>{try{(await fetch(`${e}/api/custom-models/${encodeURIComponent(t)}`,{method:`DELETE`})).ok?(H(!0,F(`models.customDeleted`)),await qn(!0)):H(!1,F(`models.customSaveFailed`))}catch{H(!1,F(`models.networkError`))}},ni=Kn.data??I,ri=Kn.kind===`failed-cold`?Kn.error instanceof Error?Kn.error.message:F(`models.loadFail`):null,ii=Kn.showSkeleton&&!ni,ai=Me??{},oi=e=>{let{provider:t,rows:n,nativeProviderGroup:r,liveModels:i,discovery:a}=e,o=Ye.has(t),s=e=>Sr(ai,t,e.id,e.native===!0,Ae.has(e.namespaced)),c=n.filter(s).length,u=lt?.recentArrivals[t]??[],d=new Set(u.map(e=>e.id)),f=Re[t]!==void 0,m=Re[t]??R,g=n.reduce((e,t)=>{let n=zr(t);return n===void 0?e:e===void 0||n>e?n:e},void 0),_=f?m:r?kr:g??m,v=e.nativeProviderGroup?jr:Dr,y=e.nativeProviderGroup?Mr:Or,S=i&&a?.status===`failed`?a:void 0,C=(Pe[t]??``).trim().toLowerCase(),T=C?n.filter(e=>e.id.toLowerCase().includes(C)):n,E=T.toSorted((e,t)=>Number(!s(e))-Number(!s(t))),D=Ie[t]??60,O=E.slice(0,D),ee=T.length-O.length,k=n.length>0,A=!k||n.every(s),te=!k||n.every(e=>!s(e)),j=e=>{k&&nr(`provider`,t,n.map(e=>({id:e.id,native:e.native===!0})),e)};return(0,W.jsxs)(`div`,{className:`card models-provider-card`,children:[(0,W.jsxs)(`div`,{className:`row group-head models-provider-head${o?``:` open`}`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`row models-provider-toggle`,onClick:()=>ir(t),"aria-expanded":!o,style:{flex:1,border:0,background:`transparent`,padding:0,color:`inherit`,cursor:`pointer`,textAlign:`left`},children:[(0,W.jsx)(w,{style:{width:14,height:14,color:`var(--muted)`,transform:o?`none`:`rotate(90deg)`,transition:`transform .12s`}}),(0,W.jsx)(`span`,{className:`text-body font-semibold`,style:{whiteSpace:`nowrap`},children:x(t)}),K.providers[t]&&(0,W.jsx)(`span`,{className:`models-chip mono text-caption`,children:K.providers[t]}),r&&(0,W.jsx)(`span`,{className:`models-chip muted mono text-caption`,children:F(`models.nativeGroupLabel`)}),S&&(0,W.jsx)(`span`,{className:`badge badge-amber`,role:`status`,title:Tr(F,S),children:F(`models.discoveryFailedBadge`)}),(0,W.jsx)(`span`,{className:`muted mono text-label`,children:F(`models.active`,{active:c,total:n.length})}),u.length>0&&(0,W.jsx)(`span`,{className:`models-chip mono text-caption`,children:F(`models.newCount`,{count:u.length})})]}),(0,W.jsxs)(`div`,{className:`row models-provider-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":F(`models.editProviderAlias`),title:F(`models.editProviderAlias`),onClick:()=>void It(t),children:(0,W.jsx)(de,{style:{width:14,height:14}})}),(0,W.jsx)(h,{on:K.defaults.providers[t]??K.defaults.global,onClick:()=>void Rt(!(K.defaults.providers[t]??K.defaults.global),t),label:F(`models.useDefaultAliases`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:t=>Zn(e,t.currentTarget),"aria-haspopup":`dialog`,children:F(`models.contextSettings`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:e=>{e.stopPropagation(),Nt.current=e.currentTarget,Bt(`add`),Ht(t),Wt(``),Kt(``),Jt(``),Xt(``),Qt(!1),en([`text`]),nn(!1),on([]),sn.current=!1,ln(``),q(!0)},"aria-label":F(`models.customAdd`),"aria-haspopup":`dialog`,children:`+`}),(()=>{let e=st[t];if(!e)return null;let n=mt===t,r=e.mode===`custom`&&e.appliedVersion!==void 0&&e.appliedVersion<e.availableVersion;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`segmented models-segmented`,role:`radiogroup`,"aria-label":F(`models.presetLabel`),children:[[`preset`,`all`].map(r=>(0,W.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":e.mode===r,className:`btn btn-sm${e.mode===r?` btn-primary`:` btn-ghost`}`,style:{background:e.mode===r?void 0:`transparent`,color:e.mode===r?void 0:`var(--muted)`},disabled:U||n,onClick:n=>{n.stopPropagation(),!(r===`preset`&&e.mode===`custom`&&!confirm(F(`models.presetConfirmReplace`,{count:String(e.presetCount)})))&&Ir(t,r)},children:F(`models.presetMode_${r}`)},r)),e.mode===`custom`&&(0,W.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":!0,className:`btn btn-sm btn-primary`,disabled:!0,children:F(`models.presetMode_custom`)})]}),e.mode===`preset`&&(0,W.jsx)(`span`,{className:`muted mono text-label`,children:F(`models.presetSummary`,{count:String(e.presetCount),total:String(e.totalCount),version:String(e.availableVersion)})}),r&&(0,W.jsx)(`span`,{className:`badge badge-amber`,role:`status`,children:F(`models.presetUpdateAvailable`,{version:String(e.availableVersion)})})]})})(),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,disabled:U||A,onClick:()=>j(!0),children:F(`models.allOn`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,disabled:U||te,onClick:()=>j(!1),children:F(`models.allOff`)}),(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(h,{on:f,onClick:()=>rr(t,r),disabled:U,label:F(`models.capValue`,{value:$(_)})}),(f||r)&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(p,{value:z[t]?`custom`:String(_),options:[...!y.has(_)&&!z[t]?[{value:String(_),label:$(_)}]:[],...v.map(e=>({value:String(e),label:$(e)})),{value:`custom`,label:F(`models.custom`)}],onChange:e=>lr(t,e),disabled:U||!f,label:F(`models.capValue`,{value:$(_)})}),z[t]&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`input`,{className:`input`,style:{width:120},inputMode:`numeric`,placeholder:F(`models.customPlaceholder`),value:Ke[t]??``,onChange:e=>qe(n=>({...n,[t]:e.target.value})),onKeyDown:e=>{e.key===`Enter`&&ur(t)},disabled:U,"aria-label":F(`models.customPlaceholder`)}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>ur(t),disabled:U,className:`btn btn-ghost btn-sm`,children:F(`models.customApply`)})]})]})]})]})]}),!o&&(0,W.jsxs)(`div`,{className:`models-provider-body`,children:[r&&(0,W.jsx)(`p`,{className:`muted text-label models-provider-hint`,children:F(`models.nativeHint`)}),!r&&lt&&(0,W.jsxs)(`div`,{className:`row models-provider-hint`,children:[(0,W.jsx)(`span`,{className:`muted text-label`,children:F(`models.newPolicyProvider`)}),(0,W.jsx)(`div`,{className:`segmented models-segmented`,role:`radiogroup`,"aria-label":F(`models.newPolicyProvider`),children:[`off`,`on`].map(e=>(0,W.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":(lt.providers[t]??`inherit`)===e,className:`btn btn-sm${(lt.providers[t]??`inherit`)===e?` btn-primary`:` btn-ghost`}`,onClick:()=>void xr(e,t),children:F(`models.newPolicy_${e}`)},e))})]}),n.length===0&&(0,W.jsx)(qr,{liveModels:i,discovery:a,showFailureBadge:!1}),n.length>30&&(0,W.jsx)(`input`,{className:`input`,placeholder:F(`models.search`),value:Pe[t]??``,onChange:e=>Fe(n=>({...n,[t]:e.target.value})),"aria-label":F(`models.search`)}),O.map(e=>{let n=!s(e),r=Br(e),i=Hr(e,F);return(0,W.jsxs)(`div`,{className:`model-row-wrap`,onMouseEnter:t=>Xr(e.namespaced,t.currentTarget),onMouseLeave:Qr,onFocus:t=>Zr(e.namespaced,t.currentTarget),onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||Mn(null)},children:[(0,W.jsxs)(`div`,{className:`row models-model-row`,children:[(0,W.jsx)(h,{on:!n,onClick:()=>void nr(`models`,t,[{id:e.id,native:e.native===!0}],n),disabled:U,label:e.native?e.id:e.namespaced}),K.models[t]?.[e.id]&&(0,W.jsx)(`strong`,{className:`mono text-control`,children:K.models[t][e.id].alias}),(0,W.jsx)(`code`,{className:`mono text-control`,style:{color:n?`var(--faint)`:`var(--text)`,textDecoration:n?`line-through`:`none`},children:e.native?be(e.id):b(e.namespaced,F)}),K.models[t]?.[e.id]?.source===`builtin`&&(0,W.jsx)(`span`,{className:`models-chip muted text-caption`,children:F(`models.aliasAuto`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":F(`models.editModelAlias`),title:F(`models.editModelAlias`),onClick:()=>void Lt(t,e.id),children:(0,W.jsx)(de,{style:{width:13,height:13}})}),e.custom&&(0,W.jsx)(`span`,{className:`models-chip muted mono text-caption`,children:F(`models.customBadge`)}),!e.custom&&d.has(e.id)&&(0,W.jsx)(`span`,{className:`badge badge-amber`,children:F(`models.newBadge`)}),e.contextCapped&&(0,W.jsx)(`span`,{className:`models-chip muted mono text-caption`,children:F(`models.contextCappedValue`,{value:$(e.contextCap??R)})}),r&&(0,W.jsx)(`span`,{className:`models-chip muted mono text-caption`,children:F(r)}),e.metadataStale&&(0,W.jsx)(`span`,{className:`models-chip muted mono text-caption`,children:F(`models.contextMetadataStale`)}),e.custom&&e.customId&&(0,W.jsxs)(`span`,{className:`models-model-row-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,"aria-label":F(`models.customEditNamed`,{name:e.displayName??e.id}),onClick:t=>{Nt.current=t.currentTarget,Bt(`edit`),Ht(e.provider),Wt(e.customId),Kt(e.id),Jt(e.displayName??``),Xt(e.contextWindow?String(e.contextWindow):``),Qt(!1),en(e.inputModalities??[`text`]),nn(Array.isArray(e.reasoningEfforts)),on(e.reasoningEfforts??[]),sn.current=Array.isArray(e.reasoningEfforts),ln(``),q(!0),Mn(null)},children:(0,W.jsx)(de,{width:13,height:13,"aria-hidden":`true`})}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,"aria-label":F(`models.customDeleteNamed`,{name:e.displayName??e.id}),style:{color:`var(--red)`},onClick:()=>{window.confirm(F(`models.customDeleteConfirm`,{name:e.displayName??e.id}))&&ti(e.customId),Mn(null)},children:(0,W.jsx)(me,{width:13,height:13,"aria-hidden":`true`})})]})]}),jn?.namespaced===e.namespaced&&(()=>{let t=jn.rect,a=Math.max(0,Math.min(480,window.innerWidth-16)),o=Math.max(8,Math.min(t.left+24,window.innerWidth-a-8)),s=Math.max(8,t.bottom+4),c=Math.max(0,window.innerHeight-s-8),u=Math.max(0,t.top-12),d=c<Math.min(360,u);return(0,W.jsxs)(`div`,{className:`model-tip${d?` flip-up`:``}`,role:`tooltip`,style:{position:`fixed`,left:o,width:`max-content`,minWidth:Math.min(320,a),maxWidth:a,maxHeight:Math.min(360,d?u:c),...d?{bottom:Math.max(8,window.innerHeight-t.top+4)}:{top:s}},children:[(0,W.jsx)(`div`,{className:`model-tip-id`,children:e.native?e.id:e.namespaced}),e.displayName&&(0,W.jsx)(`div`,{className:`model-tip-display`,children:e.displayName}),e.custom&&(0,W.jsx)(`span`,{className:`models-chip models-chip--tip muted mono text-caption`,children:F(`models.customBadge`)}),(0,W.jsxs)(`div`,{className:`model-tip-grid`,children:[(0,W.jsx)(`span`,{className:`model-tip-key`,children:F(`models.tipProvider`)}),(0,W.jsx)(`span`,{className:`model-tip-val`,children:l(e.provider,F)}),i&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`model-tip-key`,children:F(`models.tipContext`)}),(0,W.jsx)(`span`,{className:`model-tip-val`,children:i})]}),r&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`model-tip-key`,children:F(`models.contextMetadataSource`)}),(0,W.jsx)(`span`,{className:`model-tip-val`,children:F(r)})]}),e.inputModalities&&e.inputModalities.length>0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`model-tip-key`,children:F(`models.tipModalities`)}),(0,W.jsx)(`span`,{className:`model-tip-val`,children:e.inputModalities.join(`, `)})]}),(0,W.jsx)(`span`,{className:`model-tip-key`,children:F(`models.tipStatus`)}),(0,W.jsx)(`span`,{className:`model-tip-val`,children:F(n?`models.tipDisabled`:`models.tipActive`)})]})]})})()]},e.namespaced)}),ee>0&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>Le(e=>({...e,[t]:D+60})),className:`btn btn-ghost btn-sm models-show-more`,children:F(`models.showMore`,{n:ee})})]})]},t)},si=Ln?Q.filter(e=>e.provider===Ln):Q,ci=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`models-control-top-row`,children:[lt&&(0,W.jsxs)(`div`,{className:`models-shadow-row row muted text-control`,children:[(0,W.jsx)(`span`,{className:`models-shadow-label`,children:F(`models.newPolicyGlobal`)}),(0,W.jsx)(h,{on:lt.policy===`off`,onClick:()=>void xr(lt.policy===`off`?`on`:`off`),label:F(`models.newPolicyGlobal`)})]}),(0,W.jsxs)(`div`,{className:`row`,children:[(0,W.jsx)(h,{on:K.defaults.global,onClick:()=>void Rt(!K.defaults.global),label:F(`models.useDefaultAliasesGlobal`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>pt(e=>!e),children:F(`models.aliases`)})]}),(0,W.jsxs)(`div`,{className:`models-shadow-row row muted text-control`,"aria-busy":!Z||void 0,children:[(0,W.jsxs)(`span`,{className:`models-shadow-label`,children:[F(`models.shadowCallIntercept`),` `,(0,W.jsx)(ge,{content:F(`models.shadowCallInterceptHint`,{models:v(Z?.sourceModels)}),side:`top`,maxWidth:320,children:(0,W.jsx)(`span`,{style:{cursor:`help`},"aria-label":F(`models.shadowCallInterceptHint`,{models:v(Z?.sourceModels)}),children:`ⓘ`})})]}),(0,W.jsx)(`code`,{className:`text-caption models-shadow-warning`,style:{opacity:.6},children:F(`models.shadowCallOriginal`,{models:u(Z?.sourceModels)})}),(0,W.jsx)(h,{on:Z?.enabled??!1,onClick:()=>void _r({enabled:!Z?.enabled}),disabled:!Z||Fn,label:F(`models.shadowCallIntercept`)}),(0,W.jsx)(`div`,{className:`models-shadow-model-slot`,children:(0,W.jsx)(p,{value:Z?.model??``,options:Bn,onChange:e=>{Pn(t=>t&&{...t,model:e}),_r({model:e})},disabled:!Z||Fn||!Z.enabled,label:F(`models.shadowCallIntercept`)})})]}),(gt||G)&&(0,W.jsxs)(`div`,{className:`models-v2-mode-row row`,children:[(0,W.jsx)(`span`,{className:`muted text-control`,children:F(`models.v2Label`)}),(0,W.jsx)(`div`,{className:`segmented models-segmented`,role:`radiogroup`,"aria-label":F(`models.v2Label`),children:[`v1`,`default`,`v2`].map(e=>(0,W.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":(G?.multiAgentMode??`default`)===e,className:`btn btn-sm${(G?.multiAgentMode??`default`)===e?` btn-primary`:` btn-ghost`}`,style:{background:(G?.multiAgentMode??`default`)===e?void 0:`transparent`,color:(G?.multiAgentMode??`default`)===e?void 0:`var(--muted)`},disabled:!G||vt,onClick:()=>void yr(e),children:F(`models.v2Mode_${e}`)},e))}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,style:{width:24,height:24,minWidth:24,flex:`0 0 24px`,padding:0,borderRadius:`var(--radius-pill)`,color:`var(--muted)`},disabled:!G,onClick:e=>{At.current=e.currentTarget,kt(!0)},"aria-label":F(`models.v2Label`),"aria-haspopup":`dialog`,children:(0,W.jsx)(fe,{width:14,height:14,"aria-hidden":`true`})})]}),G&&G.multiAgentMode===`v2`&&(0,W.jsx)(`div`,{className:`models-v2-keep-native-row`,children:(0,W.jsxs)(`div`,{className:`models-v2-keep-native`,children:[(0,W.jsx)(`span`,{className:`models-v2-keep-native-label text-caption`,children:F(`models.keepNativeOnV1`)}),(0,W.jsx)(h,{on:G.keepNativeChatGptOnV1===!0,onClick:()=>void Lr(!G.keepNativeChatGptOnV1),disabled:vt,label:F(`models.keepNativeOnV1`)}),(0,W.jsx)(ge,{content:F(`models.keepNativeOnV1Hint`),side:`top`,maxWidth:360,children:(0,W.jsx)(`span`,{className:`models-v2-keep-native-info`,"aria-label":F(`models.keepNativeOnV1Hint`),children:(0,W.jsx)(fe,{width:13,height:13,"aria-hidden":`true`})})})]})})]}),G&&(G.enabled||G.agentsMaxThreadsConflict||xt)&&(0,W.jsxs)(`div`,{className:`models-v2-detail-row row`,children:[G.enabled&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`muted text-control`,children:F(`models.v2ThreadsLabel`)}),(0,W.jsx)(p,{value:Et?`custom`:G.maxConcurrentThreadsPerSession!==null&&G.maxConcurrentThreadsPerSession!==void 0?Fr.has(G.maxConcurrentThreadsPerSession)?String(G.maxConcurrentThreadsPerSession):`custom`:``,options:[...G.maxConcurrentThreadsPerSession===null||G.maxConcurrentThreadsPerSession===void 0?[{value:``,label:F(`models.v2ThreadsDefault`)}]:[],...G.maxConcurrentThreadsPerSession!==null&&G.maxConcurrentThreadsPerSession!==void 0&&!Fr.has(G.maxConcurrentThreadsPerSession)&&!Et?[{value:`custom`,label:String(G.maxConcurrentThreadsPerSession)}]:[],...Pr.map(e=>({value:String(e),label:String(e)})),{value:`custom`,label:F(`models.custom`)}],onChange:e=>Vr(e),disabled:vt,label:F(`models.v2ThreadsLabel`)}),Et&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`input`,{className:`input`,style:{width:100},inputMode:`numeric`,value:wt,onChange:e=>Tt(e.target.value),onKeyDown:e=>{e.key===`Enter`&&Rr(Number(wt.replace(/[_,\s]/g,``)))},disabled:vt,"aria-label":F(`models.v2ThreadsLabel`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:vt,onClick:()=>{Rr(Number(wt.replace(/[_,\s]/g,``)))},children:F(`models.v2ThreadsApply`)})]})]}),G.enabled&&G.agentsMaxThreadsConflict&&(0,W.jsx)(`span`,{className:`mono text-label`,style:{color:`var(--err, #e5484d)`},children:F(`models.v2Conflict`)}),xt&&(0,W.jsx)(`span`,{className:`muted text-label`,children:xt})]}),(0,W.jsxs)(`div`,{className:`row models-cap-row`,children:[(0,W.jsx)(`span`,{className:`muted text-control`,children:F(`models.contextCapLabel`)}),(0,W.jsx)(p,{value:Ue?Nr:String(R),options:[...!Or.has(R)&&!Ue?[{value:String(R),label:$(R)}]:[],...Dr.map(e=>({value:String(e),label:$(e)})),{value:Nr,label:F(`models.custom`)}],onChange:e=>dr(e),disabled:U,label:F(`models.contextCapLabel`)}),Ue&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`input`,{className:`input`,style:{width:160},inputMode:`numeric`,placeholder:F(`models.customPlaceholder`),value:Ve,onChange:e=>He(e.target.value),onKeyDown:e=>{e.key===`Enter`&&fr()},disabled:U,"aria-label":F(`models.customPlaceholder`)}),(0,W.jsx)(`button`,{type:`button`,onClick:fr,disabled:U,className:`btn btn-ghost btn-sm`,children:F(`models.customApply`)})]}),(0,W.jsx)(h,{on:sr,onClick:mr,disabled:U,label:F(`models.setAll`)}),(0,W.jsx)(`span`,{className:`muted text-label leading-body`,children:F(`models.setAllHint`,{value:$(R)})})]}),(()=>{let e=L.filter(e=>e.custom).length;return e===0?null:(0,W.jsx)(`div`,{className:`row muted text-label models-custom-summary`,children:(0,W.jsx)(`span`,{className:`models-chip mono text-caption`,children:F(`models.customSummary`,{count:e})})})})(),(0,W.jsxs)(`div`,{className:`row muted text-label leading-body models-order-hint`,children:[(0,W.jsx)(fe,{width:15,height:15,"aria-hidden":`true`}),(0,W.jsx)(`span`,{children:F(`models.orderHint`)})]})]}),li=(0,W.jsxs)(`div`,{className:`row models-collapse-controls`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:()=>ar(!0),disabled:U,children:[(0,W.jsx)(w,{width:12,height:12,"aria-hidden":`true`}),` `,F(`models.collapseAll`)]}),(0,W.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:()=>ar(!1),disabled:U,children:[(0,W.jsx)(w,{width:12,height:12,"aria-hidden":`true`,style:{transform:`rotate(90deg)`}}),` `,F(`models.expandAll`)]})]}),ui=(0,W.jsx)(W.Fragment,{children:Q.length===0&&(0,W.jsx)(y,{icon:(0,W.jsx)(ce,{}),title:F(`models.noRouted`),children:F(`models.noRoutedHint`)})}),di=(0,W.jsxs)(W.Fragment,{children:[Ot&&(0,W.jsxs)(`dialog`,{ref:jt,className:`modal-overlay`,"aria-labelledby":`models-v2-help-title`,onCancel:e=>{e.preventDefault(),kt(!1)},children:[(0,W.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":F(`common.close`),tabIndex:-1,onClick:()=>kt(!1)}),(0,W.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`div`,{className:`modal-head`,children:[(0,W.jsx)(`h3`,{id:`models-v2-help-title`,children:F(`models.v2Label`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>kt(!1),"aria-label":F(`common.close`),children:`×`})]}),(0,W.jsx)(`div`,{className:`modal-desc leading-relaxed`,style:{whiteSpace:`pre-line`},children:F(`models.v2Help`)}),(0,W.jsx)(`div`,{className:`models-help-link`,children:(0,W.jsx)(`a`,{className:`text-control`,href:`https://opencodex.me/guides/sub-agent-surface/`,target:`_blank`,rel:`noreferrer`,style:{color:`var(--accent)`},children:F(`models.v2DocsLink`)})}),(0,W.jsx)(`div`,{className:`modal-actions`,children:(0,W.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>kt(!1),children:F(`common.ok`)})})]})]}),un&&(0,W.jsxs)(`dialog`,{ref:An,className:`modal-overlay`,"aria-labelledby":`models-context-dialog-title`,onCancel:e=>{e.preventDefault(),X||dn(null)},children:[(0,W.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":F(`common.close`),tabIndex:-1,disabled:X,onClick:()=>dn(null)}),(0,W.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`div`,{className:`modal-head`,children:[(0,W.jsx)(`h3`,{id:`models-context-dialog-title`,children:F(`models.contextSettingsTitle`,{provider:l(un,F)})}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>dn(null),disabled:X,"aria-label":F(`common.close`),children:`×`})]}),Dn&&(0,W.jsx)(d,{tone:`err`,children:Dn}),(0,W.jsx)(`p`,{className:`modal-desc leading-relaxed`,children:F(`models.contextHint`)}),(0,W.jsxs)(`div`,{className:`models-context-fields`,children:[(0,W.jsxs)(`label`,{className:`text-label models-field`,children:[F(`models.contextDefault`),(0,W.jsx)(`input`,{className:`input`,inputMode:`numeric`,value:gn,onChange:e=>{_n(e.target.value),Tn(!0)},disabled:X,placeholder:F(`models.contextAutomatic`),autoFocus:!0})]}),fn.length>0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`text-label models-field`,children:[F(`models.contextModel`),(0,W.jsx)(p,{value:mn,options:fn.map(e=>({value:e,label:e})),onChange:Qn,disabled:X,label:F(`models.contextModel`)})]}),(0,W.jsxs)(`label`,{className:`text-label models-field`,children:[F(`models.contextModelOverride`),(0,W.jsx)(`input`,{className:`input`,inputMode:`numeric`,value:vn[mn]??``,onChange:e=>{yn(t=>({...t,[mn]:e.target.value})),Cn(e=>new Set(e).add(mn))},disabled:X,placeholder:F(`models.contextAutomatic`)})]})]})]}),(0,W.jsxs)(`div`,{className:`modal-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>dn(null),disabled:X,children:F(`common.cancel`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>void $n(),disabled:X,children:F(X?`models.customSaving`:`models.customApply`)})]})]})]}),Mt&&(0,W.jsxs)(`dialog`,{ref:Pt,className:`modal-overlay`,"aria-labelledby":`models-custom-dialog-title`,onCancel:e=>{e.preventDefault(),J||q(!1)},children:[(0,W.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":F(`common.close`),tabIndex:-1,disabled:J,onClick:()=>q(!1)}),(0,W.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`div`,{className:`modal-head`,children:[(0,W.jsx)(`h3`,{id:`models-custom-dialog-title`,children:F(zt===`add`?`models.customAddTitle`:`models.customEditTitle`,{provider:l(Vt,F)})}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>q(!1),disabled:J,"aria-label":F(`common.close`),children:`×`})]}),Y&&(0,W.jsx)(d,{tone:`err`,children:Y}),(0,W.jsxs)(`div`,{className:`models-field-stack`,children:[(0,W.jsxs)(`label`,{className:`text-label models-field`,children:[F(`models.customFieldModelId`),(0,W.jsx)(`input`,{className:`input`,value:Gt,onChange:e=>Kt(e.target.value),disabled:J,placeholder:F(`models.customFieldModelIdPlaceholder`),autoFocus:!0})]}),(0,W.jsxs)(`label`,{className:`text-label models-field`,children:[F(`models.customFieldDisplayName`),(0,W.jsx)(`input`,{className:`input`,value:qt,onChange:e=>Jt(e.target.value),disabled:J,placeholder:F(`models.customFieldDisplayNamePlaceholder`)})]}),(0,W.jsxs)(`label`,{className:`text-label models-field`,children:[F(`models.customFieldContext`),(0,W.jsxs)(`div`,{className:`row models-field-row`,children:[(0,W.jsx)(p,{value:Zt?`custom`:Yt,options:[{value:``,label:`—`},{value:`100000`,label:`100k`},{value:`128000`,label:`128k`},{value:`200000`,label:`200k`},{value:`256000`,label:`256k`},{value:`352000`,label:`352k`},{value:`500000`,label:`500k`},{value:`1000000`,label:`1M`},{value:`custom`,label:F(`models.custom`)}],onChange:e=>{if(e===`custom`){Qt(!0);return}Qt(!1),Xt(e)},disabled:J,label:F(`models.customFieldContext`)}),Zt&&(0,W.jsx)(`input`,{className:`input`,style:{width:120},inputMode:`numeric`,value:Yt,onChange:e=>Xt(e.target.value),disabled:J,placeholder:F(`models.customPlaceholder`),"aria-label":F(`models.customFieldContext`)})]})]}),(0,W.jsxs)(`div`,{className:`text-label models-field`,children:[F(`models.customFieldModalities`),(0,W.jsx)(`div`,{className:`row models-field-row`,children:[`text`,`image`,`audio`].map(e=>(0,W.jsxs)(`label`,{className:`row models-modality-option`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:$t.includes(e),onChange:t=>{en(n=>t.target.checked?[...n,e]:n.filter(t=>t!==e))},disabled:J}),(0,W.jsx)(`span`,{className:`text-control`,children:e})]},e))})]}),(0,W.jsxs)(`div`,{className:`text-label models-field`,children:[F(`models.customFieldReasoning`),(0,W.jsx)(`div`,{className:`row models-field-row`,children:(0,W.jsxs)(`label`,{className:`row models-modality-option`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:tn,onChange:e=>{if(nn(e.target.checked),e.target.checked&&!sn.current){sn.current=!0;let e=L.find(e=>e.provider===Vt&&e.id===Gt),t=Array.isArray(e?.reasoningEfforts)?e.reasoningEfforts:void 0;on(t??[...Er])}},disabled:J}),(0,W.jsx)(`span`,{className:`text-control`,children:F(`models.customFieldReasoningOverride`)})]})}),tn&&(0,W.jsx)(`div`,{className:`row models-field-row`,style:{flexWrap:`wrap`},children:Er.map(e=>(0,W.jsxs)(`label`,{className:`row models-modality-option`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:rn.includes(e),onChange:t=>{on(n=>t.target.checked?[...n,e]:n.filter(t=>t!==e))},disabled:J}),(0,W.jsx)(`span`,{className:`text-control`,children:F(`models.reasoningEffort.${e}`)})]},e))})]})]}),(0,W.jsxs)(`div`,{className:`modal-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>q(!1),disabled:J,children:F(`common.cancel`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:J||!Gt.trim(),onClick:()=>{let e=Gt.trim(),t=qt.trim(),n=Yt?Number(Yt.replace(/[_,\s]/g,``)):void 0,r=n&&n>0?Math.floor(n):void 0;if(zt===`add`){let n=tn?rn:void 0;$r(Vt,e,t||void 0,r,$t.length>0?$t:void 0,n)}else ei(Ut,{modelId:e,displayName:t,contextWindow:r??null,inputModalities:$t,reasoningEfforts:tn?rn:null})},children:F(J?`models.customSaving`:zt===`add`?`models.customAddBtn`:`models.customEditBtn`)})]})]})]})]}),fi=(0,W.jsxs)(`div`,{className:`models-workspace-shell`,children:[Qe&&(0,W.jsxs)(`div`,{className:`action-toast notice ${$e?`notice-ok`:`notice-err`}`,role:`status`,"aria-live":`polite`,children:[$e?(0,W.jsx)(m,{}):(0,W.jsx)(S,{}),(0,W.jsx)(`span`,{children:Qe})]}),Kn.showError&&(0,W.jsx)(d,{tone:`err`,children:F(`models.loadFail`)}),(0,W.jsxs)(`div`,{className:`models-workspace-root`,"aria-busy":Kn.refreshing||void 0,children:[(0,W.jsxs)(`aside`,{className:`models-workspace-rail`,"aria-label":F(`nav.models`),children:[(0,W.jsxs)(`div`,{className:`models-workspace-rail-header`,children:[(0,W.jsx)(`span`,{className:`models-workspace-rail-title`,children:F(`models.workspace.providers`)}),(0,W.jsx)(`span`,{className:`models-workspace-rail-count`,children:Q.length})]}),(0,W.jsxs)(`div`,{className:`models-workspace-rail-list`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`models-workspace-rail-row${Ln===null?` models-workspace-rail-row--selected`:``}`,onClick:()=>Rn(null),"aria-current":Ln===null?`true`:void 0,children:[(0,W.jsx)(`span`,{className:`models-workspace-rail-name`,children:F(`models.workspace.allProviders`)}),(0,W.jsx)(`span`,{className:`models-workspace-rail-meta`,children:F(`models.active`,{active:er,total:L.length})})]}),Q.map(e=>{let{provider:t,rows:n}=e,r=n.filter(e=>Sr(ai,t,e.id,e.native===!0,Ae.has(e.namespaced))).length;return(0,W.jsxs)(`button`,{type:`button`,className:`models-workspace-rail-row${Ln===t?` models-workspace-rail-row--selected`:``}`,onClick:()=>Rn(t),"aria-current":Ln===t?`true`:void 0,children:[(0,W.jsx)(`span`,{className:`models-workspace-rail-name`,children:l(t,F)}),(0,W.jsx)(`span`,{className:`models-workspace-rail-meta`,children:F(`models.active`,{active:r,total:n.length})})]},t)})]})]}),(0,W.jsxs)(`section`,{className:`models-workspace-main`,"aria-label":F(`models.workspace.mainAria`),children:[ci,li,ft&&(0,W.jsxs)(`div`,{className:`card`,"aria-label":F(`models.aliasesTable`),children:[(0,W.jsx)(`div`,{className:`row group-head`,children:(0,W.jsx)(`strong`,{children:F(`models.aliases`)})}),Object.entries(K.models).flatMap(([e,t])=>Object.entries(t).map(([t,n])=>(0,W.jsxs)(`div`,{className:`row models-model-row`,children:[(0,W.jsxs)(`code`,{className:`mono text-caption`,style:{flex:1},children:[e,`/`,t]}),(0,W.jsx)(`strong`,{className:`mono text-control`,children:n.alias}),(0,W.jsx)(`span`,{className:`models-chip muted text-caption`,children:n.source===`builtin`?F(`models.aliasAuto`):F(`models.aliasUser`)}),n.stale&&(0,W.jsx)(`span`,{className:`badge badge-amber`,children:F(`models.aliasStale`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":F(`models.editModelAlias`),onClick:()=>void Lt(e,t),children:(0,W.jsx)(de,{style:{width:13,height:13}})})]},`${e}/${t}`)))]}),(0,W.jsx)(`div`,{className:`models-provider-list`,children:si.map(e=>oi(e))}),Q.length===0&&ui]})]}),di]});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`page-head`,children:[(0,W.jsx)(`h2`,{children:F(`nav.models`)}),(0,W.jsx)(`div`,{className:`page-head-actions`,children:(0,W.jsx)(`button`,{type:`button`,className:`sidebar-orb`,onClick:()=>{f()},disabled:c,"aria-label":F(c?`dash.codexRestarting`:`dash.codexRestart`),title:F(c?`dash.codexRestarting`:`dash.codexRestart`),children:(0,W.jsx)(ee,{})})})]}),(0,W.jsx)(xe,{state:r,controller:{restarting:c,restart:f}}),(0,W.jsx)(hr,{tab:C,onSelect:re,meta:tr}),(0,W.jsx)(`p`,{className:`page-sub`,children:F(Jr[C])}),(0,W.jsx)(`div`,{className:`models-tab-panel`,role:`tabpanel`,id:E(`catalog`),"aria-labelledby":ae(`catalog`),hidden:C!==`catalog`,children:(0,W.jsx)(ne,{pageName:F(`models.tab.catalog`),title:F(`errorBoundary.title`),message:F(`errorBoundary.message`),detailsLabel:F(`errorBoundary.details`),reloadLabel:F(`errorBoundary.reload`),children:ii?(0,W.jsx)(ye,{label:F(`models.loading`),rows:5}):ri===null?fi:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(d,{tone:`err`,children:ri}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>Gn.refresh(),children:F(`common.retry`)})]})})}),(0,W.jsx)(`div`,{className:`models-tab-panel models-tab-panel--fill`,role:`tabpanel`,id:E(`combos`),"aria-labelledby":ae(`combos`),hidden:C!==`combos`,children:A.has(`combos`)&&(0,W.jsx)(ne,{pageName:F(`models.tab.combos`),title:F(`errorBoundary.title`),message:F(`errorBoundary.message`),detailsLabel:F(`errorBoundary.details`),reloadLabel:F(`errorBoundary.reload`),children:(0,W.jsx)(bt,{apiBase:e,active:C===`combos`,onCountChange:he})})}),(0,W.jsx)(`div`,{className:`models-tab-panel`,role:`tabpanel`,id:E(`routing`),"aria-labelledby":ae(`routing`),hidden:C!==`routing`,children:A.has(`routing`)&&(0,W.jsx)(ne,{pageName:F(`models.tab.routing`),title:F(`errorBoundary.title`),message:F(`errorBoundary.message`),detailsLabel:F(`errorBoundary.details`),reloadLabel:F(`errorBoundary.reload`),children:(0,W.jsx)(an,{apiBase:e,active:C===`routing`,onCountChange:Se})})}),(0,W.jsx)(`div`,{className:`models-tab-panel`,role:`tabpanel`,id:E(`compatibility`),"aria-labelledby":ae(`compatibility`),hidden:C!==`compatibility`,children:A.has(`compatibility`)&&(0,W.jsx)(ne,{pageName:F(`models.tab.compatibility`),title:F(`errorBoundary.title`),message:F(`errorBoundary.message`),detailsLabel:F(`errorBoundary.details`),reloadLabel:F(`errorBoundary.reload`),children:(0,W.jsx)(pr,{apiBase:e,active:C===`compatibility`,onCountChange:Te})})})]})}export{Xr as default};
1
+ import{_ as e,c as t,f as n,h as r,m as i,s as a}from"./shared-BHpPx-nZ.js";import{$ as o,A as s,B as c,C as l,D as u,F as d,G as f,I as p,J as m,L as h,M as g,N as _,O as v,P as y,S as b,T as x,U as S,W as C,Y as w,_ as T,a as E,bt as D,c as O,dt as ee,ft as k,g as A,h as te,i as j,j as M,l as ne,lt as N,m as re,n as ie,o as ae,p as oe,pt as se,q as ce,r as le,s as ue,st as de,tt as fe,v as pe,vt as me,yt as he,z as ge}from"./index-CZ1jyQCF.js";import{t as _e}from"./data-surface-OiQUZok8.js";import{n as ve,t as ye}from"./data-surface-B0APtUxm.js";import{t as be}from"./model-display-Dlrzica2.js";import{t as xe}from"./codex-stale-banner-B5VQPO3t.js";import{a as Se}from"./catalog-CerhMn14.js";var Ce={state:null,runningCount:0};async function we(e,t={}){let n=t.fetchFn??fetch;try{let r=await n(`${e}/api/system/codex-app-server`,{signal:t.signal});if(!r.ok)return Ce;let i=await r.json().catch(()=>null);return le(i)?{state:i.state,runningCount:i.runningCount}:Ce}catch{return Ce}}var P=e(r(),1),Te=`gpt-daybreak-blue-latest`,F=Object.freeze({[Te]:`gpt-5.6-sol`});Object.freeze(Object.keys(F));var Ee=new Set([`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.3-codex-spark`,`gpt-5.6-sol`,`gpt-5.6-terra`,`gpt-5.6-luna`,Te]),I=[`low`,`medium`,`high`,`xhigh`,`max`,`ultra`];function L(e,t){let n=e.filter(e=>e.provider.trim()&&e.model.trim());if(n.length===0)return[...I];let r=new Set(I),i=null;for(let e of n){let n=`${e.provider.trim()}/${e.model.trim()}`,a=t.get(n);if(a===void 0)continue;let o=a.filter(e=>r.has(e));if(i===null)i=o;else{let e=new Set(o);i=i.filter(t=>e.has(t))}}if(i===null)return[...I];let a=new Set(i);return I.filter(e=>a.has(e))}var De=0;function Oe(e={}){return{provider:e.provider??``,model:e.model??``,...e.weight===void 0?{}:{weight:e.weight},clientKey:e.clientKey??`ct-${++De}`}}function ke(e){return e===`disabled`?`disabled`:`auto`}var Ae=/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}$/,je=/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}(\/[a-zA-Z0-9][a-zA-Z0-9._-]{0,63})?$/,Me=/^(?:gpt-|o1-|o3-|o4-|codex-)/;function Ne(e){return Ae.test(e.trim())}function Pe(e){return`combo/${e.trim()}`}function Fe(e,t){return(typeof t==`string`?t.trim():``)||Pe(e)}function Ie(e,t){let n=t.trim(),r=e.nativeAlias&&(!n||n.includes(`/`)||!Me.test(n));return{...e,alias:n?t:null,model:Fe(e.id,t),...r?{nativeAlias:!1,displayName:null}:{}}}function Le(e){return typeof e==`string`&&e.trim()?e.trim():null}function Re(e){return e===`round-robin`?`round-robin`:`failover`}function ze(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=100?e:1}function R(e){return typeof e==`string`&&I.includes(e)?e:null}function Be(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=1e4?e:void 0}function Ve(e){if(!e||typeof e!=`object`)return[];let t=e.combos;if(!Array.isArray(t))return[];let n=[];for(let e of t){if(!e||typeof e!=`object`)continue;let t=e,r=typeof t.id==`string`?t.id.trim():``;if(!r)continue;let i=Array.isArray(t.targets)?t.targets:[],a=[];for(let e of i){if(!e||typeof e!=`object`)continue;let t=e,n=typeof t.provider==`string`?t.provider.trim():``,r=typeof t.model==`string`?t.model.trim():``;if(!n||!r)continue;let i=Be(t.weight);a.push(Oe(i===void 0?{provider:n,model:r}:{provider:n,model:r,weight:i}))}n.push({id:r,model:typeof t.model==`string`&&t.model.trim()?t.model.trim():Fe(r,Le(t.alias)),alias:Le(t.alias),nativeAlias:t.nativeAlias===!0,displayName:Le(t.displayName),strategy:Re(t.strategy),stickyLimit:ze(t.stickyLimit),defaultEffort:R(t.defaultEffort),imageInput:ke(t.imageInput),targets:a})}return n.sort((e,t)=>e.id.localeCompare(t.id,void 0,{sensitivity:`base`}))}function He(e){let t=[],n=[];for(let r of e)r.strategy===`round-robin`?n.push(r):t.push(r);return{failover:t,roundRobin:n}}function Ue(e,t){let n=t.trim().toLowerCase();return n?e.filter(e=>e.id.toLowerCase().includes(n)||e.model.toLowerCase().includes(n)?!0:e.targets.some(e=>e.provider.toLowerCase().includes(n)||e.model.toLowerCase().includes(n))):e}function We(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:null}function z(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function Ge(e,t){let n=z(e);return n!==null&&t-n<18e5}function Ke(e){let t=z(e);return t!==null&&Number.isInteger(t)&&t>=0?t:null}function qe(e,t){let n=We(e),r=z(n?.usedPercent);return!!n&&r!==null&&r>=0&&Ke(n.includedAccounts)!==null&&(Ke(n.includedAccounts)??0)>0&&Ke(n.excludedAccounts)===0&&n.incomplete===!1&&Ge(n.updatedAt,t)}function Je(e,t){let n=We(e);if(!n||n.kind!==`capacity-weighted-v1`||n.scope!==`routable-known`||n.presentation!==`aggregate`||n.incomplete!==!1)return!1;for(let e of[`includedAccounts`,`excludedAccounts`,`unknownPlanAccounts`,`missingQuotaAccounts`,`pausedAccounts`,`reauthAccounts`,`staleQuotaAccounts`,`partialWindowAccounts`])if(Ke(n[e])===null)return!1;if((Ke(n.includedAccounts)??0)===0)return!1;for(let e of[`excludedAccounts`,`unknownPlanAccounts`,`missingQuotaAccounts`,`pausedAccounts`,`reauthAccounts`,`staleQuotaAccounts`,`partialWindowAccounts`])if(n[e]!==0)return!1;let r=!1;for(let e of[`fiveHour`,`weekly`,`monthly`])if(Object.hasOwn(n,e)){if(!qe(n[e],t))return!1;r=!0}if(Object.hasOwn(n,`customWindows`)){if(!Array.isArray(n.customWindows))return!1;for(let e of n.customWindows){let n=We(e);if(!n||typeof n.label!=`string`||!n.label.trim()||!qe(n,t))return!1;r=!0}}return r}function Ye(e,t){if(!Ge(e.updatedAt,t))return`unknown`;let n=We(e.quota);if(!n||!Ge(n.updatedAt,t)||e.aggregation!==void 0&&!Je(e.aggregation,t))return`unknown`;let r=!1,i=!1;for(let e of[`fiveHourPercent`,`weeklyPercent`,`monthlyPercent`]){if(!Object.hasOwn(n,e))continue;let t=z(n[e]);if(t===null||t<0)return`unknown`;r=!0,t>=100&&(i=!0)}for(let e of[`fiveHourResetAt`,`weeklyResetAt`,`monthlyResetAt`])if(Object.hasOwn(n,e)&&z(n[e])===null)return`unknown`;if(Object.hasOwn(n,`customWindows`)){if(!Array.isArray(n.customWindows))return`unknown`;for(let e of n.customWindows){let t=We(e),n=z(t?.percent);if(!t||typeof t.label!=`string`||!t.label.trim()||n===null||n<0||Object.hasOwn(t,`resetAt`)&&z(t.resetAt)===null)return`unknown`;r=!0,n>=100&&(i=!0)}}if(Object.hasOwn(n,`creditsUsd`)){let e=We(n.creditsUsd);if(!e)return`unknown`;let t=z(e.used),a=z(e.limit),o=z(e.remaining),s=z(e.percent);if(t===null||t<0||a===null||a<0||o===null||s===null||s<0||e.unlimited!==void 0&&typeof e.unlimited!=`boolean`||Object.hasOwn(e,`expiresAt`)&&z(e.expiresAt)===null)return`unknown`;r=!0,e.unlimited!==!0&&o<=0&&(i=!0)}return r?i?`exhausted`:`available`:`unknown`}function Xe(e,t=Date.now()){if(!Array.isArray(e))return{};let n={};for(let r of e){let e=We(r),i=typeof e?.provider==`string`?e.provider.trim():``;if(!e||!i)continue;let a=Ye(e,t);n[i]=Object.hasOwn(n,i)&&n[i]!==a?`unknown`:a}return n}function Ze(e,t,n){let r=e.flatMap(e=>{let t=e.provider.trim();return!t||!e.model.trim()||!Object.hasOwn(n,t)||n[t]?.disabled===!0?[]:[t]});if(r.length===0)return`unknown`;let i=!1;for(let e of r){let n=t[e]??`unknown`;if(n===`available`)return`available`;n===`unknown`&&(i=!0)}return i?`unknown`:`exhausted`}function Qe(e,t={}){let n=[],r=t.cataloguedComboIds;for(let i of e)i.targets.length===0?n.push({id:i.id,model:i.model,reason:`empty-targets`}):i.targets.length<2&&n.push({id:i.id,model:i.model,reason:`few-targets`}),r&&i.targets.length>0&&!r.has(i.id)&&n.push({id:i.id,model:i.model,reason:`catalog-omitted`}),t.providerQuotaStates&&t.providers&&Ze(i.targets,t.providerQuotaStates,t.providers)===`exhausted`&&n.push({id:i.id,model:i.model,reason:`all-targets-exhausted`});return n}function B(e,t){return e.id!==t.id||e.alias!==t.alias||e.nativeAlias!==t.nativeAlias||e.displayName!==t.displayName||e.strategy!==t.strategy||e.stickyLimit!==t.stickyLimit||e.defaultEffort!==t.defaultEffort||(e.imageInput??`auto`)!==(t.imageInput??`auto`)||e.targets.length!==t.targets.length?!1:e.targets.every((e,n)=>{let r=t.targets[n];return e.provider===r.provider&&e.model===r.model&&(e.weight??1)===(r.weight??1)})}function $e(e,t={}){return{id:e.id.trim(),...t.renameFrom?{renameFrom:t.renameFrom}:{},combo:{targets:e.targets.map(t=>e.strategy===`round-robin`?{provider:t.provider.trim(),model:t.model.trim(),weight:t.weight??1}:{provider:t.provider.trim(),model:t.model.trim()}),strategy:e.strategy,defaultEffort:e.defaultEffort,...e.imageInput===`disabled`?{imageInput:`disabled`}:{},...e.strategy===`round-robin`?{stickyLimit:e.stickyLimit}:{},...e.alias&&e.alias.trim()?{alias:e.alias.trim()}:{},...e.nativeAlias?{nativeAlias:!0}:{},...e.displayName&&e.displayName.trim()?{displayName:e.displayName.trim()}:{}}}}function V(e,t){let n=e.id.trim();if(!n)return`missingId`;if(!Ne(n))return`invalidId`;if(t.existingIds.includes(n))return`duplicateId`;if(Object.hasOwn(t.providers,`combo`))return`reservedNamespace`;if(Object.hasOwn(t.providers,n))return`providerCollision`;let r=e.alias?.trim()??``,i=e.displayName?.trim()??``;if(r){if(!je.test(r))return`invalidAlias`;if(r===`combo`||r.startsWith(`combo/`))return`aliasReservedNamespace`;if(!r.includes(`/`)&&Me.test(r)&&!e.nativeAlias)return`aliasNativeFamily`;if((t.existingAliases??[]).includes(r))return`duplicateAlias`}let a=[...e.displayName??``].some(e=>{let t=e.codePointAt(0)??0;return t<=31||t===127});if(e.displayName!==null&&(i.length>128||a))return`invalidDisplayName`;if(e.nativeAlias&&!Ee.has(r))return`unsupportedNativeAlias`;if(e.nativeAlias&&!i)return`missingNativeAliasDisplayName`;if(e.targets.length<1)return`noTargets`;for(let n of e.targets){if(!n.provider.trim()||!n.model.trim())return`incompleteTarget`;if(!Object.hasOwn(t.providers,n.provider.trim()))return`unknownProvider`}let o=new Set;for(let t of e.targets){let e=`${t.provider.trim()}/${t.model.trim()}`;if(o.has(e))return`duplicateTarget`;o.add(e)}if(e.strategy===`round-robin`){if(!Number.isInteger(e.stickyLimit)||e.stickyLimit<1||e.stickyLimit>100)return`invalidStickyLimit`;for(let t of e.targets){let e=t.weight??1;if(!Number.isInteger(e)||e<1||e>1e4)return`invalidWeight`}}return e.targets.some(e=>t.providers[e.provider.trim()]?.disabled!==!0)?null:`noEnabledTarget`}function et(e=``){return{id:e,model:e?Pe(e):`combo/`,alias:null,nativeAlias:!1,displayName:null,strategy:`failover`,stickyLimit:1,defaultEffort:null,imageInput:`auto`,targets:[Oe()]}}function tt(e,t){if(e.length===0)return!1;let n=new Set(t.filter(e=>e.inputModalities?.includes(`image`)).map(e=>`${e.provider}\0${e.id}`));return e.every(e=>{let t=e.provider.trim(),r=e.model.trim();return!t||!r?!1:n.has(`${t}\0${r}`)})}function H(e){return e.filter(e=>!e.disabled&&!e.hiddenFromPicker).sort((e,t)=>e.name.localeCompare(t.name))}function U(e,t,n){if(e===``)return;let r=Number(e);if(Number.isFinite(r))return Math.min(n,Math.max(t,r))}function nt(e){if(!e)return!1;let t=e.name.toLowerCase();if(t!==`openai`&&t!==`chatgpt`||(e.authMode??``).toLowerCase()!==`forward`||(e.adapter??``).toLowerCase()!==`openai-responses`)return!1;let n=(e.baseUrl??``).replace(/\/+$/,``);return!n||n.includes(`chatgpt.com/backend-api/codex`)}function rt(e,t,n){let r=new Set([t]),i=n.find(e=>e.name===t);(t.toLowerCase()===`chatgpt`||nt(i))&&r.add(`openai`);let a=[],o=new Set;for(let t of e)!r.has(t.provider)||!t.id||o.has(t.id)||(o.add(t.id),a.push(t.id));return a.toSorted((e,t)=>e.localeCompare(t))}var W=i();function it({value:e,onChange:n,disabled:r}){let i=t();return(0,W.jsx)(`div`,{className:`cwi-strategy-seg`,role:`radiogroup`,"aria-label":i(`cws.strategy`),children:[[`failover`,`cws.strategy.failover`],[`round-robin`,`cws.strategy.roundRobin`]].map(([t,a])=>(0,W.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":e===t,className:`btn btn-sm${e===t?` btn-primary`:` btn-ghost`}`,disabled:r,onClick:()=>n(t),children:i(a)},t))})}function at({id:e,value:n,onChange:r,disabled:i,allowedEfforts:a}){let o=t(),s=a??I,c=n!==null&&!s.includes(n);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`select`,{id:e,className:`input`,value:n??``,disabled:i,"aria-label":o(`cws.field.defaultEffort`),onChange:e=>r(e.target.value===``?null:e.target.value),children:[(0,W.jsx)(`option`,{value:``,children:o(`cws.field.defaultEffortNone`)}),c&&n?(0,W.jsxs)(`option`,{value:n,children:[n,` (`,o(`cws.field.defaultEffortUnsupportedOption`),`)`]}):null,s.map(e=>(0,W.jsx)(`option`,{value:e,children:e},e))]}),c?(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`4px 0 0`,color:`var(--danger, #b42318)`},children:o(`cws.field.defaultEffortUnsupported`)}):null]})}function G({targets:e,models:n,imageInput:r,disabled:i,onChange:a}){let o=t(),s=tt(e,n),c=s&&r!==`disabled`;return(0,W.jsxs)(`section`,{className:`cwi-capabilities`,"aria-label":o(`cws.capabilities`),children:[(0,W.jsx)(`span`,{className:`field-label`,children:o(`cws.capabilities`)}),(0,W.jsxs)(`div`,{className:`cwi-capability-row`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`cwi-capability-label`,children:o(`cws.capability.imageInput`)}),(0,W.jsx)(`p`,{className:`muted cwi-capability-hint`,children:o(s?`cws.capability.imageInputHint`:`cws.capability.imageInputUnavailable`)})]}),(0,W.jsx)(h,{on:c,onClick:()=>{s&&a({imageInput:r===`auto`?`disabled`:`auto`})},disabled:i||!s,label:o(`cws.capability.imageInput`)})]})]})}function ot({targets:e,strategy:n,providers:r,models:i,providerQuotaStates:a,onChange:s}){let c=t(),u=H(r),[d,p]=(0,P.useState)(null),[m,h]=(0,P.useState)(null),g=(t,n)=>{s(e.map((e,r)=>r===t?{...e,...n}:e))},_=(t,n)=>{if(t===n||t<0||n<0||t>=e.length||n>=e.length)return;let r=[...e],[i]=r.splice(t,1);r.splice(n,0,i),s(r)};return(0,W.jsxs)(`div`,{className:`cwi-target-list`,children:[e.map((t,v)=>{let y=r.find(e=>e.name===t.provider),b=y&&!u.some(e=>e.name===t.provider)?[...u,y]:u,x=rt(i,t.provider,r),S=t.model&&!x.includes(t.model)?[t.model,...x]:x,w=!t.provider,T=d===v,E=m===v&&d!==null&&d!==v,D=a[t.provider.trim()]??`unknown`;return(0,W.jsxs)(`div`,{className:[`cwi-target-row`,n===`failover`?`cwi-target-row--failover`:``,T?`cwi-target-row--dragging`:``,E?`cwi-target-row--drop`:``].filter(Boolean).join(` `),onDragOver:e=>{d!==null&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,m!==v&&h(v))},onDrop:e=>{e.preventDefault(),d!==null&&_(d,v),p(null),h(null)},onDragEnd:()=>{p(null),h(null)},children:[(0,W.jsx)(`button`,{type:`button`,className:`cwi-target-grip`,draggable:!0,"aria-label":c(`cws.target.drag`),title:c(`cws.target.drag`),onDragStart:e=>{p(v),e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,String(v))},children:(0,W.jsx)(o,{width:14,height:14,"aria-hidden":`true`})}),(0,W.jsxs)(`div`,{className:`cwi-target-reorder`,children:[(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:v===0,"aria-label":c(`cws.target.moveUp`),onClick:()=>_(v,v-1),children:(0,W.jsx)(f,{width:14,height:14,"aria-hidden":`true`})}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:v===e.length-1,"aria-label":c(`cws.target.moveDown`),onClick:()=>_(v,v+1),children:(0,W.jsx)(C,{width:14,height:14,"aria-hidden":`true`})})]}),(0,W.jsxs)(`select`,{className:`input`,value:t.provider,"aria-label":c(`cws.target.provider`),onChange:e=>{let t=e.target.value,n=rt(i,t,r)[0]??``;g(v,{provider:t,model:n})},children:[(0,W.jsx)(`option`,{value:``,children:c(`cws.target.pickProvider`)}),b.map(e=>(0,W.jsx)(`option`,{value:e.name,children:e.disabled?c(`cws.target.disabled`,{name:l(e.name,c)}):l(e.name,c)},e.name))]}),(0,W.jsxs)(`select`,{className:`input`,value:t.model,disabled:w,"aria-label":c(`cws.target.model`),onChange:e=>g(v,{model:e.target.value}),children:[(0,W.jsx)(`option`,{value:``,children:w?c(`cws.target.pickProviderFirst`):S.length===0?c(`cws.target.noModels`):c(`cws.target.pickModel`)}),S.map(e=>(0,W.jsx)(`option`,{value:e,children:e},e))]}),n===`round-robin`&&(0,W.jsx)(`input`,{className:`input mono`,type:`number`,min:1,max:1e4,value:t.weight??1,"aria-label":c(`cws.target.weight`),onChange:e=>{let t=U(e.target.value,1,1e4);t!==void 0&&g(v,{weight:t})}}),(0,W.jsx)(`span`,{className:`cwi-quota-badge cwi-quota-badge--${D}`,"aria-label":c(`cws.quota.${D}`),children:c(`cws.quota.${D}`)}),(0,W.jsx)(`div`,{className:`cwi-target-actions`,children:(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:e.length<=1,onClick:()=>s(e.filter((e,t)=>t!==v)),"aria-label":c(`common.remove`),children:(0,W.jsx)(me,{width:14,height:14})})})]},t.clientKey??`${t.provider}:${t.model}`)}),(0,W.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,style:{alignSelf:`flex-start`},onClick:()=>s([...e,Oe()]),children:[(0,W.jsx)(N,{width:14,height:14}),` `,c(`cws.target.add`)]})]})}function st({existingIds:e,existingAliases:n,providerMap:r,providerQuotaStates:i,providers:a,models:o,onClose:s,onSubmit:c}){let l=t(),u=(0,P.useRef)(null),[f,p]=(0,P.useState)(()=>et()),[m,h]=(0,P.useState)(!1),[g,_]=(0,P.useState)(``),v=(0,P.useMemo)(()=>{let e=new Map;for(let t of o)e.set(`${t.provider}/${t.id}`,t.reasoningEfforts);return e},[o]),y=(0,P.useMemo)(()=>L(f.targets,v),[f.targets,v]),b=Ze(f.targets,i,r)===`exhausted`;(0,P.useEffect)(()=>{let e=u.current;e&&!e.open&&e.showModal()},[]);let x=(0,P.useCallback)(()=>{m||s()},[m,s]),S=(0,P.useCallback)(e=>{e.preventDefault(),x()},[x]),C=async()=>{let t=V(f,{existingIds:e,existingAliases:n,isCreate:!0,providers:r});if(t){_(l(`cws.err.${t}`));return}h(!0),_(``);let i=f.id.trim(),a=f.alias?.trim()||null;try{let e=await c({...f,id:i,alias:a,model:Fe(i,a)});if(!e.ok){_(e.error||l(`cws.saveFailed`));return}}finally{h(!1)}};return(0,W.jsxs)(`dialog`,{ref:u,className:`modal-overlay`,"aria-labelledby":`cwi-add-title`,onCancel:S,children:[(0,W.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":l(`common.close`),tabIndex:-1,onClick:x}),(0,W.jsxs)(`div`,{className:`modal-card`,style:{width:`min(560px, 94vw)`},onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`div`,{className:`row`,style:{justifyContent:`space-between`,marginBottom:8},children:[(0,W.jsx)(`h3`,{id:`cwi-add-title`,style:{margin:0},children:l(`cws.addTitle`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:x,disabled:m,"aria-label":l(`common.close`),children:(0,W.jsx)(he,{width:16,height:16})})]}),(0,W.jsx)(`p`,{className:`muted`,style:{marginTop:0,maxWidth:`62ch`,overflowWrap:`anywhere`},children:l(`cws.addSubtitle`)}),g&&(0,W.jsx)(d,{tone:`err`,children:g}),b&&(0,W.jsx)(`div`,{className:`cwi-quota-banner`,role:`status`,"aria-live":`polite`,children:l(`cws.quota.allExhausted`)}),(0,W.jsxs)(`div`,{className:`cwi-modal-form`,children:[(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`label`,{htmlFor:`cwi-new-id`,children:l(`cws.field.id`)}),(0,W.jsx)(`input`,{id:`cwi-new-id`,className:`input mono`,value:f.id,disabled:m,onChange:e=>p(t=>({...t,id:e.target.value,model:Fe(e.target.value,t.alias)}))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:l(`cws.field.idInternalHint`)})]}),(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`label`,{htmlFor:`cwi-new-alias`,children:l(`cws.field.alias`)}),(0,W.jsx)(`input`,{id:`cwi-new-alias`,className:`input mono`,value:f.alias??``,placeholder:l(`cws.field.aliasPlaceholder`),disabled:m,onChange:e=>p(t=>({...t,alias:e.target.value.trim()?e.target.value:null,model:Fe(t.id,e.target.value)}))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:l(`cws.field.aliasHint`)}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:l(`cws.field.idHint`,{model:f.id.trim()?Fe(f.id,f.alias):`…`})})]}),(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`span`,{className:`field-label`,children:l(`cws.strategy`)}),(0,W.jsx)(it,{value:f.strategy,disabled:m,onChange:e=>p(t=>({...t,strategy:e}))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:f.strategy===`failover`?l(`cws.strategy.failoverHint`):l(`cws.strategy.roundRobinHint`)})]}),(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`label`,{htmlFor:`cwi-new-effort`,children:l(`cws.field.defaultEffort`)}),(0,W.jsx)(at,{id:`cwi-new-effort`,value:f.defaultEffort,disabled:m,allowedEfforts:y,onChange:e=>p(t=>({...t,defaultEffort:e}))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:l(`cws.field.defaultEffortHint`)})]}),f.strategy===`round-robin`&&(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`label`,{htmlFor:`cwi-new-sticky`,children:l(`cws.field.stickyLimit`)}),(0,W.jsx)(`input`,{id:`cwi-new-sticky`,className:`input mono`,type:`number`,min:1,max:100,value:f.stickyLimit,disabled:m,onChange:e=>{let t=U(e.target.value,1,100);t!==void 0&&p(e=>({...e,stickyLimit:t}))}}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:l(`cws.field.stickyLimitHint`)})]}),(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`span`,{className:`field-label`,children:l(`cws.targets`)}),(0,W.jsx)(ot,{targets:f.targets,strategy:f.strategy,providers:a,models:o,providerQuotaStates:i,onChange:e=>p(t=>({...t,targets:e}))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:f.strategy===`failover`?l(`cws.targets.failoverHint`):l(`cws.targets.roundRobinHint`)})]}),(0,W.jsx)(G,{targets:f.targets,models:o,imageInput:f.imageInput??`auto`,disabled:m,onChange:e=>p(t=>({...t,...e}))})]}),(0,W.jsxs)(`div`,{className:`cwi-modal-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:x,disabled:m,children:l(`common.cancel`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>{C()},disabled:m||b,children:l(m?`common.saving`:`cws.create`)})]})]})]})}var ct=[`config`,`about`],lt=e=>`cws-detail-tab-${e}`,ut=e=>`cws-detail-panel-${e}`;function K({baseline:e,isCreate:n=!1,otherIds:r,otherAliases:i,providerMap:a,providerQuotaStates:o,providers:s,models:c,onBack:l,onSaved:u,onRequestRemove:f,onSave:p,onDirtyChange:m}){let h=t(),[g,_]=(0,P.useState)(`config`),v=(0,P.useCallback)((e,t)=>{let n;if(e.key===`ArrowRight`)n=(t+1)%ct.length;else if(e.key===`ArrowLeft`)n=(t-1+ct.length)%ct.length;else if(e.key===`Home`)n=0;else if(e.key===`End`)n=ct.length-1;else return;e.preventDefault(),_(ct[n]),e.currentTarget.parentElement?.querySelectorAll(`[role="tab"]`)[n]?.focus()},[]),[y,b]=(0,P.useState)(e),[x,S]=(0,P.useState)(!1),[C,T]=(0,P.useState)(null),[E,D]=(0,P.useState)(!1),O=!B(y,e),ee=Ze(y.targets,o,a)===`exhausted`,k=`${e.id}:${e.alias??``}:${e.nativeAlias}:${e.displayName??``}:${e.strategy}:${e.stickyLimit}:${e.defaultEffort}:${e.imageInput??`auto`}:${e.targets.map(e=>`${e.provider}/${e.model}:${e.weight??1}`).join(`,`)}`,A=(0,P.useMemo)(()=>{let e=new Map;for(let t of c)e.set(`${t.provider}/${t.id}`,t.reasoningEfforts);return e},[c]),te=(0,P.useMemo)(()=>L(y.targets,A),[y.targets,A]),j=(0,P.useCallback)(t=>{let n=t(y);b(n),m(!B(n,e))},[y,e,m]);(0,P.useEffect)(()=>{let t=window.setTimeout(()=>{b(e),T(null),_(`config`),m(!1)},0);return()=>window.clearTimeout(t)},[k]);let M=async()=>{try{await navigator.clipboard.writeText(e.model),D(!0),window.setTimeout(()=>D(!1),1200)}catch{}},ne=async()=>{let t=V(y,{existingIds:r,existingAliases:i,isCreate:n,providers:a});if(t){T({ok:!1,text:h(`cws.err.${t}`)});return}S(!0);let o=y.id.trim(),s=y.alias?.trim()||null,c=y.displayName?.trim()||null,l={...y,id:o,alias:s,displayName:c,model:Fe(o,s)},d=!n&&o!==e.id?e.id:void 0;try{let e=await p(l,n,d);if(!e.ok){T({ok:!1,text:e.error||h(`cws.saveFailed`)});return}T({ok:!0,text:n?h(`cws.created`,{model:l.model}):h(`cws.saved`)}),u(l)}finally{S(!1)}},N=n?y.id.trim()?Fe(y.id,y.alias):h(`cws.addTitle`):e.model;return(0,W.jsxs)(`div`,{className:`combos-workspace-detail`,children:[(0,W.jsxs)(`div`,{className:`combos-workspace-detail-head`,children:[l&&(0,W.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm pwi-back-overview`,onClick:l,"aria-label":h(`cws.backToAll`),children:[(0,W.jsx)(w,{style:{width:14,height:14,transform:`rotate(180deg)`},"aria-hidden":`true`}),h(`cws.allCombos`)]}),(0,W.jsx)(`h2`,{className:`combos-workspace-detail-title`,children:N}),!n&&(0,W.jsx)(`button`,{type:`button`,className:`chip cwi-copy-chip`,onClick:()=>{M()},title:h(`cws.copyModel`),children:h(E?`cws.copied`:`cws.copyModel`)}),(0,W.jsxs)(`div`,{className:`combos-workspace-detail-actions`,children:[!n&&f&&(0,W.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:f,children:[(0,W.jsx)(me,{width:14,height:14}),` `,h(`common.remove`)]}),(0,W.jsx)(`button`,{id:n?`cwi-edit-create`:`cwi-edit-save`,type:`button`,className:`btn btn-primary btn-sm`,disabled:!n&&!O||x||ee,onClick:()=>{ne()},children:h(x?`common.saving`:n?`cws.create`:`common.save`)})]})]}),C&&(0,W.jsx)(d,{tone:C.ok?`ok`:`err`,children:C.text}),ee&&(0,W.jsx)(`div`,{className:`cwi-quota-banner`,role:`status`,"aria-live":`polite`,children:h(`cws.quota.allExhausted`)}),(0,W.jsx)(`div`,{className:`segmented combos-workspace-segmented`,role:`tablist`,"aria-label":h(`cws.tabsLabel`),children:ct.map((e,t)=>(0,W.jsx)(`button`,{type:`button`,role:`tab`,id:lt(e),"aria-selected":g===e,"aria-controls":ut(e),tabIndex:g===e?0:-1,className:`btn btn-sm ${g===e?`btn-primary`:`btn-ghost`}`,onClick:()=>_(e),onKeyDown:e=>v(e,t),children:h(e===`config`?`cws.tab.config`:`cws.tab.about`)},e))}),(0,W.jsx)(`div`,{className:`combos-workspace-tab-content`,role:`tabpanel`,id:ut(`config`),"aria-labelledby":lt(`config`),hidden:g!==`config`,children:(0,W.jsxs)(`div`,{className:`cwi-form-grid`,children:[(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`label`,{htmlFor:`cwi-edit-id`,children:h(`cws.field.id`)}),(0,W.jsx)(`input`,{id:`cwi-edit-id`,className:`input mono`,value:y.id,disabled:x,onChange:e=>j(t=>({...t,id:e.target.value,model:Fe(e.target.value,t.alias)}))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:n?h(`cws.field.idInternalHint`):h(`cws.field.idHintEdit`,{model:Fe(y.id,y.alias)})})]}),(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`label`,{htmlFor:`cwi-edit-alias`,children:h(`cws.field.alias`)}),(0,W.jsx)(`input`,{id:`cwi-edit-alias`,className:`input mono`,value:y.alias??``,placeholder:Pe(y.id.trim()||`…`),disabled:x,onChange:e=>j(t=>Ie(t,e.target.value))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:h(`cws.field.aliasHint`)})]}),(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsxs)(`label`,{htmlFor:`cwi-edit-native-alias`,children:[(0,W.jsx)(`input`,{id:`cwi-edit-native-alias`,type:`checkbox`,checked:y.nativeAlias,disabled:x,onChange:e=>j(t=>({...t,nativeAlias:e.target.checked}))}),` `,h(`cws.field.nativeAlias`)]}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:h(`cws.field.nativeAliasHint`)})]}),(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`label`,{htmlFor:`cwi-edit-display-name`,children:h(`cws.field.displayName`)}),(0,W.jsx)(`input`,{id:`cwi-edit-display-name`,className:`input`,value:y.displayName??``,maxLength:128,disabled:x,onChange:e=>j(t=>({...t,displayName:e.target.value||null}))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:h(`cws.field.displayNameHint`)})]}),(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`span`,{className:`field-label`,children:h(`cws.strategy`)}),(0,W.jsx)(it,{value:y.strategy,disabled:x,onChange:e=>j(t=>({...t,strategy:e}))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:y.strategy===`failover`?h(`cws.strategy.failoverHint`):h(`cws.strategy.roundRobinHint`)})]}),(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`label`,{htmlFor:`cwi-effort`,children:h(`cws.field.defaultEffort`)}),(0,W.jsx)(at,{id:`cwi-effort`,value:y.defaultEffort,disabled:x,allowedEfforts:te,onChange:e=>j(t=>({...t,defaultEffort:e}))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:h(`cws.field.defaultEffortHint`)})]}),y.strategy===`round-robin`&&(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`label`,{htmlFor:`cwi-sticky`,children:h(`cws.field.stickyLimit`)}),(0,W.jsx)(`input`,{id:`cwi-sticky`,className:`input mono`,type:`number`,min:1,max:100,value:y.stickyLimit,disabled:x,onChange:e=>{let t=U(e.target.value,1,100);t!==void 0&&j(e=>({...e,stickyLimit:t}))}})]}),(0,W.jsxs)(`div`,{className:`cwi-field`,children:[(0,W.jsx)(`span`,{className:`field-label`,children:h(`cws.targets`)}),(0,W.jsx)(ot,{targets:y.targets,strategy:y.strategy,providers:s,models:c,providerQuotaStates:o,onChange:e=>j(t=>({...t,targets:e}))}),(0,W.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:y.strategy===`failover`?h(`cws.targets.failoverHint`):h(`cws.targets.roundRobinHint`)})]}),(0,W.jsx)(G,{targets:y.targets,models:c,imageInput:y.imageInput??`auto`,disabled:x,onChange:e=>j(t=>({...t,...e}))})]})}),(0,W.jsx)(`div`,{className:`combos-workspace-tab-content`,role:`tabpanel`,id:ut(`about`),"aria-labelledby":lt(`about`),hidden:g!==`about`,tabIndex:0,children:(0,W.jsxs)(`section`,{className:`pwi-section`,children:[(0,W.jsx)(`h3`,{className:`pwi-section-title`,children:h(`cws.aboutTitle`)}),(0,W.jsx)(`p`,{className:`muted`,style:{margin:0,maxWidth:`70ch`,overflowWrap:`anywhere`},children:h(`cws.aboutBody`)})]})})]})}function dt({model:e,onCancel:n,onConfirm:r}){let i=t(),a=(0,P.useRef)(null);(0,P.useEffect)(()=>{let e=a.current;e&&!e.open&&e.showModal()},[]);let o=(0,P.useCallback)(e=>{e.preventDefault(),n()},[n]);return(0,W.jsxs)(`dialog`,{ref:a,className:`modal-overlay`,"aria-labelledby":`cwi-remove-title`,onCancel:o,children:[(0,W.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":i(`common.close`),tabIndex:-1,onClick:n}),(0,W.jsxs)(`div`,{className:`modal-card pwi-remove-confirm-card`,onClick:e=>e.stopPropagation(),children:[(0,W.jsx)(`h3`,{id:`cwi-remove-title`,className:`pwi-remove-confirm-title`,children:i(`cws.removeConfirmTitle`,{model:e})}),(0,W.jsx)(`p`,{className:`muted pwi-remove-confirm-desc`,children:i(`cws.removeConfirmDesc`)}),(0,W.jsxs)(`div`,{className:`pwi-remove-confirm-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:n,children:i(`common.cancel`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn pwi-remove-confirm-danger`,onClick:r,children:i(`common.remove`)})]})]})]})}function ft({onKeep:e,onDiscard:n}){let r=t(),i=(0,P.useRef)(null);(0,P.useEffect)(()=>{let e=i.current;e&&!e.open&&e.showModal()},[]);let a=(0,P.useCallback)(t=>{t.preventDefault(),e()},[e]);return(0,W.jsxs)(`dialog`,{ref:i,className:`modal-overlay`,"aria-labelledby":`cwi-unsaved-title`,onCancel:a,children:[(0,W.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":r(`common.close`),tabIndex:-1,onClick:e}),(0,W.jsxs)(`div`,{className:`modal-card pwi-json-unsaved-card`,onClick:e=>e.stopPropagation(),children:[(0,W.jsx)(`h3`,{id:`cwi-unsaved-title`,className:`pwi-json-unsaved-title`,children:r(`cws.unsavedTitle`)}),(0,W.jsx)(`p`,{className:`muted pwi-json-unsaved-desc`,children:r(`cws.unsavedDesc`)}),(0,W.jsxs)(`div`,{className:`pwi-json-unsaved-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,"data-testid":`cwi-unsaved-keep`,onClick:e,children:r(`cws.keepEditing`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-danger`,"data-testid":`cwi-unsaved-discard`,onClick:n,children:r(`common.discard`)})]})]})]})}function pt(e,t){return t(e===`empty-targets`?`cws.attention.empty`:e===`catalog-omitted`?`cws.attention.catalogOmitted`:e===`all-targets-exhausted`?`cws.attention.allTargetsExhausted`:`cws.attention.few`)}function mt({combos:e,cataloguedComboIds:n,providerMap:r,providerQuotaStates:i,onSelect:a,onAdd:o}){let s=t(),c=He(e),l=Qe(e,{cataloguedComboIds:n,providers:r,providerQuotaStates:i});return(0,W.jsxs)(`div`,{className:`combos-workspace-overview`,children:[(0,W.jsxs)(`div`,{className:`combos-workspace-overview-head`,children:[(0,W.jsx)(`h2`,{className:`combos-workspace-overview-title`,children:s(`cws.overviewTitle`)}),(0,W.jsxs)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:o,children:[(0,W.jsx)(N,{width:14,height:14}),` `,s(`cws.add`)]})]}),(0,W.jsx)(`p`,{className:`muted`,style:{marginTop:0,maxWidth:`62ch`},children:s(`cws.overviewBlurb`)}),(0,W.jsxs)(`div`,{className:`cwi-count-strip`,children:[(0,W.jsxs)(`div`,{className:`cwi-count-pill`,children:[(0,W.jsx)(`strong`,{children:e.length}),(0,W.jsx)(`span`,{children:s(`cws.count.total`)})]}),(0,W.jsxs)(`div`,{className:`cwi-count-pill`,children:[(0,W.jsx)(`strong`,{children:c.failover.length}),(0,W.jsx)(`span`,{children:s(`cws.count.failover`)})]}),(0,W.jsxs)(`div`,{className:`cwi-count-pill`,children:[(0,W.jsx)(`strong`,{children:c.roundRobin.length}),(0,W.jsx)(`span`,{children:s(`cws.count.roundRobin`)})]})]}),(0,W.jsxs)(`section`,{className:`pwi-section`,"aria-label":s(`cws.howTitle`),children:[(0,W.jsx)(`h3`,{className:`pwi-section-title`,children:s(`cws.howTitle`)}),(0,W.jsx)(`p`,{className:`muted`,style:{margin:0},children:s(`cws.howBody`)})]}),l.length>0&&(0,W.jsxs)(`section`,{className:`pwi-section`,"aria-label":s(`cws.attentionTitle`),children:[(0,W.jsx)(`h3`,{className:`pwi-section-title`,children:s(`cws.attentionTitle`)}),(0,W.jsx)(`div`,{className:`cwi-attention-list`,children:l.map(e=>(0,W.jsxs)(`button`,{type:`button`,className:`cwi-attention-row`,onClick:()=>a(e.id),children:[(0,W.jsx)(S,{width:14,height:14,"aria-hidden":`true`}),(0,W.jsx)(`code`,{className:`chip`,children:e.model}),(0,W.jsx)(`span`,{className:`muted`,children:pt(e.reason,s)}),(0,W.jsx)(w,{width:14,height:14,style:{marginLeft:`auto`},"aria-hidden":`true`})]},`${e.id}:${e.reason}`))})]})]})}function ht({combos:e,providerQuotaStates:n,providers:r,models:i,cataloguedComboIds:a,loading:o,onRefresh:s,onSave:c,onRemove:l,onAdd:u,adding:d,onCloseAdd:f,onCreated:p}){let m=t(),h=(0,P.useMemo)(()=>Object.fromEntries(r.map(e=>[e.name,{disabled:e.disabled}])),[r]),[g,_]=(0,P.useState)(``),[v,y]=(0,P.useState)(null),[b,x]=(0,P.useState)(void 0),[S,C]=(0,P.useState)(null),[T,E]=(0,P.useState)(null),D=(0,P.useMemo)(()=>et(),[]),O=(0,P.useMemo)(()=>Ue(e,g),[e,g]),ee=(0,P.useMemo)(()=>He(O),[O]),A=(0,P.useMemo)(()=>e.flatMap(e=>e.alias?[e.alias]:[]),[e]),te=v&&e.some(e=>e.id===v)?v:null,j=e.find(e=>e.id===te)??null,M=j&&T?.id===j.id?T:j,[ne,re]=(0,P.useState)(!1),ie=[],ae=[];if(M)for(let t of e)t.id!==M.id&&(ie.push(t.id),t.alias&&ae.push(t.alias));let oe=(0,P.useCallback)(e=>{if(e!==te){if(!ne){y(e),E(null);return}x(e)}},[te,ne]),ce=()=>{b!==void 0&&(y(b),E(null),re(!1),x(void 0))},le=()=>x(void 0),ue=b!==void 0&&ne,de=!o&&e.length===0;return(0,W.jsxs)(`div`,{className:`combos-workspace-root`,children:[(0,W.jsxs)(`aside`,{className:`combos-workspace-rail`,"aria-label":m(`cws.railAria`),children:[(0,W.jsxs)(`div`,{className:`combos-workspace-rail-header`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`combos-workspace-rail-title`,children:m(`nav.combos`)}),(0,W.jsx)(`div`,{className:`combos-workspace-rail-count`,children:e.length})]}),(0,W.jsxs)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:()=>{if(de){document.getElementById(`cwi-edit-id`)?.focus();return}u()},"aria-label":m(`cws.add`),children:[(0,W.jsx)(N,{width:14,height:14}),` `,m(`cws.add`)]})]}),(0,W.jsx)(`div`,{className:`cwi-search-row`,children:(0,W.jsxs)(`div`,{className:`cwi-search-wrap`,children:[(0,W.jsx)(k,{className:`cwi-search-icon`,"aria-hidden":`true`}),(0,W.jsx)(`input`,{className:`input cwi-search-input`,value:g,onChange:e=>_(e.target.value),placeholder:m(`cws.searchPlaceholder`),"aria-label":m(`cws.searchPlaceholder`)})]})}),(0,W.jsx)(`div`,{className:`combos-workspace-rail-list`,children:O.length===0&&e.length>0?(0,W.jsx)(`p`,{className:`muted`,style:{padding:`16px`},children:m(`cws.noSearchResults`)}):(0,W.jsx)(W.Fragment,{children:[[`failover`,ee.failover,`cws.group.failover`],[`round-robin`,ee.roundRobin,`cws.group.roundRobin`]].map(([e,t,n])=>t.length>0?(0,W.jsxs)(`div`,{className:`combos-workspace-rail-group`,children:[(0,W.jsxs)(`div`,{className:`combos-workspace-rail-group-head`,children:[(0,W.jsx)(`span`,{className:`pwi-dot`,"aria-hidden":`true`}),m(n),(0,W.jsx)(`span`,{className:`combos-workspace-rail-count`,children:t.length})]}),t.map(e=>(0,W.jsxs)(`button`,{type:`button`,className:`combos-workspace-rail-row${te===e.id?` combos-workspace-rail-row--selected`:``}`,onClick:()=>oe(e.id),"aria-current":te===e.id?`true`:void 0,children:[(0,W.jsx)(`span`,{className:`combos-workspace-rail-icon`,"aria-hidden":`true`,children:(0,W.jsx)(se,{width:16,height:16})}),(0,W.jsx)(`span`,{className:`combos-workspace-rail-name`,children:e.model}),(0,W.jsx)(`span`,{className:`combos-workspace-rail-meta`,children:e.targets.length===1?m(`cws.targetCountOne`):m(`cws.targetCount`,{count:e.targets.length})}),(0,W.jsx)(w,{className:`combos-workspace-rail-chevron`,"aria-hidden":`true`})]},e.id))]},e):null)})})]}),(0,W.jsx)(`div`,{className:`combos-workspace-main`,children:M?(0,W.jsx)(K,{baseline:M,otherIds:ie,otherAliases:ae,providerMap:h,providerQuotaStates:n,providers:r,models:i,onBack:()=>oe(null),onSaved:e=>{re(!1),e.id===M.id?E(e):(y(e.id),E(null)),s()},onRequestRemove:()=>C(M.id),onSave:c,onDirtyChange:re},M.id):de?(0,W.jsx)(K,{baseline:D,isCreate:!0,otherIds:[],otherAliases:[],providerMap:h,providerQuotaStates:n,providers:r,models:i,onSaved:e=>{re(!1),y(e.id),E(e),p(e.id)},onSave:c,onDirtyChange:re},`first-combo`):(0,W.jsx)(mt,{combos:e,cataloguedComboIds:a,providerMap:h,providerQuotaStates:n,onSelect:e=>oe(e),onAdd:u})}),d&&!de&&(0,W.jsx)(st,{existingIds:e.map(e=>e.id),existingAliases:A,providerMap:h,providerQuotaStates:n,providers:r,models:i,onClose:f,onSubmit:async e=>{let t=await c(e,!0);return t.ok&&(f(),p(e.id),y(e.id),E(null)),t}}),S&&(0,W.jsx)(dt,{model:e.find(e=>e.id===S)?.model??Pe(S),onCancel:()=>C(null),onConfirm:()=>{(async()=>{let e=await l(S);C(null),e.ok&&(te===S&&(y(null),E(null)),s())})()}}),ue&&(0,W.jsx)(ft,{onKeep:le,onDiscard:ce})]})}function gt(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e.error;return typeof t==`string`&&t.trim()?t:void 0}function _t(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&e.success===!0}function vt(e){return re(e)?.data??null}function yt(e){return re(e)?.cachedAt??null}function bt({apiBase:e,active:n=!0,onCountChange:r}){let i=t(),a=`ocx.combos.workspace.v1:${e}`,o=(0,P.useMemo)(()=>vt(a),[a]),[s,c]=(0,P.useState)(o??null),[l,u]=(0,P.useState)(``),[f,p]=(0,P.useState)(!1),[m,h]=(0,P.useState)(!1),g=(e,t)=>{u(e),p(t)};(0,P.useEffect)(()=>{if(!l||!f)return;let e=window.setTimeout(()=>{u(``),p(!1)},5e3);return()=>window.clearTimeout(e)},[l,f]);let _=(0,P.useCallback)(async t=>{let[n,r,i]=await Promise.all([fetch(`${e}/api/combos`,{signal:t}),fetch(`${e}/api/config`,{signal:t}),fetch(`${e}/api/models`,{signal:t})]);if(!n.ok||!r.ok||!i.ok)throw Error(`combo workspace load failed`);let o=await n.json(),s=await r.json(),l=await i.json(),u=Array.isArray(l)?l:Array.isArray(l?.models)?l.models:[],d=Ve(o),f=s.providers??{},p=Se(f),m=Object.entries(f).map(([e,t])=>({name:e,disabled:!!t.disabled,hiddenFromPicker:!Object.hasOwn(p,e),authMode:t.authMode,adapter:t.adapter,baseUrl:t.baseUrl})),h=[],g=new Set;for(let e of u){if(!e||typeof e!=`object`)continue;let t=e;if(typeof t.provider!=`string`||typeof t.id!=`string`)continue;let n=t.provider.trim(),r=t.id.trim();if(!n||!r)continue;if(n===`combo`){g.add(r);continue}if(t.disabled===!0)continue;let i=Array.isArray(t.reasoningEfforts)?t.reasoningEfforts.filter(e=>typeof e==`string`):void 0,a=Array.isArray(t.inputModalities)?t.inputModalities.flatMap(e=>{if(typeof e!=`string`)return[];let t=e.trim();return t?[t]:[]}):void 0;h.push({provider:n,id:r,namespaced:typeof t.namespaced==`string`?t.namespaced:void 0,...i?{reasoningEfforts:i}:{},...a&&a.length>0?{inputModalities:a}:{}})}for(let[e,t]of Object.entries(f)){let n=typeof t.defaultModel==`string`?t.defaultModel.trim():``;!n||t.disabled||h.some(t=>t.provider===e&&t.id===n)||h.push({provider:e,id:n,namespaced:`${e}/${n}`})}let _={combos:d,providers:m,models:h,cataloguedComboIds:[...g]};return A(a,_),c(_),_},[e,a]),v=_e(a,[e],_,{isEmpty:()=>!1,initialData:o??void 0,initialDataCachedAt:yt(a),staleAfterMs:6e4,enabled:n}),{state:y}=v,b=(0,P.useCallback)(async t=>{let n=await fetch(`${e}/api/provider-quotas`,{signal:t});if(!n.ok)throw Error(`combo quota load failed`);let r=await n.json();return r&&typeof r==`object`&&!Array.isArray(r)?r:{}},[e]),x=_e(`ocx.combos.provider-quotas.v1:${e}`,[e],b,{isEmpty:()=>!1,pollMs:6e4,pauseWhenHidden:!0,enabled:n}),S=(0,P.useMemo)(()=>x.lastAttemptOk?Xe(x.data?.reports):{},[x.data,x.lastAttemptOk]),C=y.data??s??void 0,w=C?.combos??[];(0,P.useEffect)(()=>{C&&r?.(w.length)},[w.length,C,r]);let T=C?.providers??[],E=C?.models??[],D=new Set(C?.cataloguedComboIds??[]),O=async(t,n,r)=>{try{let a=await fetch(`${e}/api/combos`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify($e(t,r?{renameFrom:r}:{}))}),o=a.ok?await a.json():await a.json().catch(()=>null),s=gt(o);if(!a.ok||s||!_t(o)){let e=s||i(`cws.saveFailed`);return g(e,!1),{ok:!1,error:e}}return v.refresh(),g(r?i(`cws.renamed`,{from:Pe(r),to:t.model}):n?i(`cws.created`,{model:t.model}):i(`cws.saved`),!0),{ok:!0}}catch{let e=i(`cws.saveFailed`);return g(e,!1),{ok:!1,error:e}}},ee=async t=>{try{let n=await fetch(`${e}/api/combos?id=${encodeURIComponent(t)}`,{method:`DELETE`}),r=n.ok?await n.json():await n.json().catch(()=>null),a=gt(r);if(!n.ok||a||!_t(r)){let e=a||i(`cws.removeFailed`);return g(e,!1),{ok:!1,error:e}}return v.refresh(),g(i(`cws.removed`,{id:t}),!0),{ok:!0}}catch{let e=i(`cws.removeFailed`);return g(e,!1),{ok:!1,error:e}}};if(y.showSkeleton&&!C)return(0,W.jsx)(ye,{label:i(`cws.loading`),rows:5});if(y.kind===`failed-cold`&&!C){let e=y.error instanceof Error?y.error.message:i(`cws.loadFailed`);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(d,{tone:`err`,children:e}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>v.refresh(),children:i(`common.retry`)})]})}return(0,W.jsxs)(`div`,{className:`combos-workspace-shell`,children:[l&&(0,W.jsx)(`div`,{className:`combos-workspace-shell-banner`,children:(0,W.jsx)(d,{tone:f?`ok`:`err`,children:l})}),y.showError&&(0,W.jsx)(`div`,{className:`combos-workspace-shell-banner`,children:(0,W.jsx)(d,{tone:`err`,children:i(`cws.loadFailed`)})}),(0,W.jsxs)(`div`,{className:`combos-workspace-shell-body`,"aria-busy":y.refreshing,children:[(0,W.jsx)(`span`,{className:`sr-only`,role:`status`,"aria-live":`polite`,"aria-atomic":`true`,children:y.refreshing?i(`common.loading`):``}),(0,W.jsx)(ht,{combos:w,providerQuotaStates:S,providers:T,models:E,cataloguedComboIds:D,loading:!1,onRefresh:()=>v.refresh(),onSave:O,onRemove:ee,onAdd:()=>h(!0),adding:m,onCloseAdd:()=>h(!1),onCreated:()=>v.refresh()})]})]})}var xt=0;function St(){return xt+=1,`candidate-${xt}`}function Ct(e,t){return{provider:e,model:t,key:St()}}function wt(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(!n||typeof n!=`object`||Array.isArray(n))continue;let e=typeof n.suiteId==`string`?n.suiteId.trim():``,r=n.evidenceLayer;!e||r!==`protocol_conformance`&&r!==`live_route_compatibility`||t.push({suiteId:e,evidenceLayer:r})}return t}function Tt(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e,n={requiredSuites:wt(t.requiredSuites)};return(t.minStatus===`PROBED`||t.minStatus===`VERIFIED`)&&(n.minStatus=t.minStatus),typeof t.maxEvidenceAgeMs==`number`&&Number.isFinite(t.maxEvidenceAgeMs)&&t.maxEvidenceAgeMs>=0&&(n.maxEvidenceAgeMs=t.maxEvidenceAgeMs),(t.unknownEvidence===`allow`||t.unknownEvidence===`penalize`||t.unknownEvidence===`exclude`)&&(n.unknownEvidence=t.unknownEvidence),(t.degradedEvidence===`allow`||t.degradedEvidence===`penalize`||t.degradedEvidence===`exclude`)&&(n.degradedEvidence=t.degradedEvidence),n}var Et={latency:`0.55`,health:`0.25`,cost:`0.1`,quota:`0.1`},Dt={capability:`exclude`,health:`penalize`,quota:`penalize`,cost:`penalize`};function Ot(e){return e===!0?`true`:e===!1?`false`:``}function kt(e){return e===void 0?``:String(e)}function At(e=``,t=``){return{id:``,alias:``,candidates:[Ct(e,t)],require:{minContextWindow:``,minQuotaHeadroom:``,tools:``,imageInput:``,structuredOutput:``,reasoningEffort:``,serviceTier:``,localOnly:``,remoteAllowed:``,encryptedCodexTasks:``},optimize:{...Et},limits:{maxEstimatedCostUsd:``,onUnknownCost:`allow`},unknownEvidence:{...Dt},compatibility:{enabled:!1,requiredSuites:[],minStatus:``,maxEvidenceAgeMs:``,unknownEvidence:`exclude`,degradedEvidence:`penalize`}}}function jt(e){let t=Tt(e.compatibility);return{id:e.id,alias:e.alias??``,candidates:e.candidates.map(e=>({...e,key:St()})),require:{minContextWindow:kt(e.require.minContextWindow),minQuotaHeadroom:kt(e.require.minQuotaHeadroom),tools:Ot(e.require.tools),imageInput:Ot(e.require.imageInput),structuredOutput:Ot(e.require.structuredOutput),reasoningEffort:e.require.reasoningEffort??``,serviceTier:e.require.serviceTier??``,localOnly:Ot(e.require.localOnly),remoteAllowed:Ot(e.require.remoteAllowed),encryptedCodexTasks:Ot(e.require.encryptedCodexTasks)},optimize:{latency:String(e.optimize.latency),health:String(e.optimize.health),cost:String(e.optimize.cost),quota:String(e.optimize.quota)},limits:{maxEstimatedCostUsd:kt(e.limits.maxEstimatedCostUsd),onUnknownCost:e.limits.onUnknownCost===`exclude`?`exclude`:`allow`},unknownEvidence:{...e.unknownEvidence},compatibility:{enabled:!!t,requiredSuites:t?.requiredSuites??[],minStatus:t?.minStatus??``,maxEvidenceAgeMs:kt(t?.maxEvidenceAgeMs),unknownEvidence:t?.unknownEvidence??`exclude`,degradedEvidence:t?.degradedEvidence??`penalize`}}}function Mt(e){let t=e.trim();return t?Number(t):void 0}function q(e){if(e===`true`)return!0;if(e===`false`)return!1}function Nt(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}function Pt(e,t,n){let r=Nt({minContextWindow:Mt(e.require.minContextWindow),minQuotaHeadroom:Mt(e.require.minQuotaHeadroom),tools:q(e.require.tools),imageInput:q(e.require.imageInput),structuredOutput:q(e.require.structuredOutput),reasoningEffort:e.require.reasoningEffort.trim()||void 0,serviceTier:e.require.serviceTier.trim()||void 0,localOnly:q(e.require.localOnly),remoteAllowed:q(e.require.remoteAllowed),encryptedCodexTasks:q(e.require.encryptedCodexTasks)}),i=Mt(e.limits.maxEstimatedCostUsd),a=e.compatibility.enabled?Nt({requiredSuites:e.compatibility.requiredSuites,minStatus:e.compatibility.minStatus||void 0,maxEvidenceAgeMs:Mt(e.compatibility.maxEvidenceAgeMs),unknownEvidence:e.compatibility.unknownEvidence,degradedEvidence:e.compatibility.degradedEvidence}):void 0,o=Nt({maxEstimatedCostUsd:i,onUnknownCost:e.limits.onUnknownCost===`exclude`?`exclude`:void 0});return{mode:t,id:e.id.trim(),...t===`update`&&n?{expectedRevision:n}:{},profile:{...e.alias.trim()?{alias:e.alias.trim()}:{},candidates:e.candidates.map(e=>({provider:e.provider.trim(),model:e.model.trim()})),...Object.keys(r).length>0?{require:r}:{},optimize:{latency:Number(e.optimize.latency),health:Number(e.optimize.health),cost:Number(e.optimize.cost),quota:Number(e.optimize.quota)},...Object.keys(o).length>0?{limits:o}:{},unknownEvidence:{...e.unknownEvidence},...a&&Object.keys(a).length>0?{compatibility:a}:{}}}}function Ft(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e.error;if(typeof t==`string`&&t.trim())return t;if(t&&typeof t==`object`&&!Array.isArray(t)){let e=t.message;if(typeof e==`string`&&e.trim())return e}}function It(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&e.success===!0}function Lt(e,t){return e.filter(e=>e.provider===t)}var Rt={en:{maxEvidenceAgeMs:`Maximum evidence age (ms)`,unknownEvidence:`Unknown evidence`,degradedEvidence:`Degraded evidence`},de:{maxEvidenceAgeMs:`Maximales Evidenzalter (ms)`,unknownEvidence:`Unbekannte Evidenz`,degradedEvidence:`Eingeschränkte Evidenz`},fr:{maxEvidenceAgeMs:`Âge maximal des preuves (ms)`,unknownEvidence:`Preuves inconnues`,degradedEvidence:`Preuves dégradées`},ko:{maxEvidenceAgeMs:`최대 증거 유효 기간 (ms)`,unknownEvidence:`알 수 없는 증거`,degradedEvidence:`저하된 증거`},zh:{maxEvidenceAgeMs:`证据最大有效期(毫秒)`,unknownEvidence:`未知证据`,degradedEvidence:`降级证据`},"zh-TW":{maxEvidenceAgeMs:`證據最大有效期限(毫秒)`,unknownEvidence:`未知證據`,degradedEvidence:`降級證據`},ru:{maxEvidenceAgeMs:`Максимальный возраст доказательств (мс)`,unknownEvidence:`Неизвестные доказательства`,degradedEvidence:`Ухудшенные доказательства`},ja:{maxEvidenceAgeMs:`エビデンスの最大有効期間 (ms)`,unknownEvidence:`不明なエビデンス`,degradedEvidence:`低下したエビデンス`},tr:{maxEvidenceAgeMs:`Maksimum kanıt yaşı (ms)`,unknownEvidence:`Bilinmeyen kanıt`,degradedEvidence:`Bozulmuş kanıt`}},zt=[`tools`,`imageInput`,`structuredOutput`,`localOnly`,`remoteAllowed`,`encryptedCodexTasks`],Bt=[`reasoningEffort`,`serviceTier`],Vt={minContextWindow:{min:1,max:void 0,step:1},minQuotaHeadroom:{min:0,max:1,step:`any`}},Ht=Object.keys(Vt),Ut=[`latency`,`health`,`cost`,`quota`],Wt=[`capability`,`health`,`quota`,`cost`],Gt=[`allow`,`penalize`,`exclude`],Kt=[`allow`,`exclude`];function qt(e){return`${e.evidenceLayer}:${e.suiteId}`}function Jt(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Yt(e){let t=new Set,n=[];for(let r of e){if(!Jt(r))continue;let e=typeof r.suiteId==`string`?r.suiteId.trim():``,i=r.evidenceLayer;if(!e||i!==`protocol_conformance`&&i!==`live_route_compatibility`)continue;let a={suiteId:e,evidenceLayer:i},o=qt(a);t.has(o)||(t.add(o),n.push({...a,key:o}))}return n.sort((e,t)=>{let n=e.evidenceLayer.localeCompare(t.evidenceLayer);return n===0?e.suiteId.localeCompare(t.suiteId):n})}function Xt(e,t){return e.some(e=>e.suiteId===t.suiteId&&e.evidenceLayer===t.evidenceLayer)}function Zt(e,t){return e===void 0?t:`${Math.round(e)}ms`}function Qt(e,t){return e==null?t:`${Math.round(e*100)}%`}function $t(e,t,n){switch(e){case`satisfied`:return t(`routing.capOutcome.satisfied`);case`exceeded`:return t(`routing.capOutcome.exceeded`);case`unknown-allowed`:return t(`routing.capOutcome.unknown-allowed`);case`unknown-excluded`:return t(`routing.capOutcome.unknown-excluded`);default:return n}}function en(e,t){switch(e){case`capability-unsatisfied`:return t(`routing.exclusion.capability-unsatisfied`);case`unknown-capability`:return t(`routing.exclusion.unknown-capability`);case`cost-limit`:return t(`routing.exclusion.cost-limit`);case`cost-limit-unknown`:return t(`routing.exclusion.cost-limit-unknown`);case`cooldown`:return t(`routing.exclusion.cooldown`);case`unknown-health`:return t(`routing.exclusion.unknown-health`);case`unknown-quota`:return t(`routing.exclusion.unknown-quota`);case`unknown-price`:return t(`routing.exclusion.unknown-price`);default:return t(`routing.exclusion.other`,{code:e})}}function tn(e){if(!e||typeof e!=`object`||Array.isArray(e))return[];let t=e.profiles;return Array.isArray(t)?t.filter(e=>Jt(e)?typeof e.id==`string`&&typeof e.model==`string`&&typeof e.revision==`string`&&Array.isArray(e.candidates)&&Jt(e.require)&&Jt(e.optimize)&&Jt(e.limits)&&Jt(e.unknownEvidence):!1).map(e=>{let t=Tt(`compatibility`in e?e.compatibility:void 0),n={...e};return delete n.compatibility,{...n,alias:e.alias??null,...t?{compatibility:t}:{}}}):[]}function nn(e){let t=Array.isArray(e)?e:e&&typeof e==`object`&&Array.isArray(e.models)?e.models:[],n=new Set,r=[];for(let e of t){if(!e||typeof e!=`object`||Array.isArray(e))continue;let t=typeof e.provider==`string`?e.provider.trim():``,i=typeof e.id==`string`?e.id.trim():``;if(!t||!i||t===`combo`||t===`policy`||e.disabled===!0)continue;let a=JSON.stringify([t,i]);n.has(a)||(n.add(a),r.push({provider:t,id:i}))}return r}function rn(e,t,n){let r=n??t;if(r){let t=e.find(e=>e.id===r);if(t)return t}return e[0]??null}function an({apiBase:e,active:t=!0,onCountChange:n}){let{locale:r,t:i}=a(),o=Rt[r],s=i(`routing.unavailable`),[c,l]=(0,P.useState)([]),[u,f]=(0,P.useState)(null),[p,m]=(0,P.useState)([]),[h,_]=(0,P.useState)({}),[v,y]=(0,P.useState)([]),[b,x]=(0,P.useState)(``),[S,C]=(0,P.useState)(null),[w,T]=(0,P.useState)(null),[E,D]=(0,P.useState)(null),[O,ee]=(0,P.useState)(!1),[k,A]=(0,P.useState)(``),[te,j]=(0,P.useState)(!1),[M,ne]=(0,P.useState)(!1),[N,re]=(0,P.useState)(!1),[ie,ae]=(0,P.useState)(null),[oe,se]=(0,P.useState)(``),[ce,le]=(0,P.useState)(!1),[ue,de]=(0,P.useState)([]),[fe,pe]=(0,P.useState)(!1),me=(0,P.useRef)(null),he=(0,P.useRef)(0),ge=(0,P.useRef)(null),_e=(0,P.useRef)(!0),ve=(0,P.useCallback)(()=>{_e.current=!1,ge.current?.abort(),he.current++},[]),ye=(0,P.useRef)(0),be=(0,P.useCallback)((e,t)=>{D({message:e,ok:t})},[]);(0,P.useEffect)(()=>{if(!E?.ok)return;let e=window.setTimeout(()=>D(null),5e3);return()=>window.clearTimeout(e)},[E]);let xe=(0,P.useCallback)(()=>{ye.current+=1,ae(null),se(``),le(!1)},[]),Se=(0,P.useCallback)(e=>{me.current=e,C(e),T(e?jt(e):null),D(null),xe()},[xe]),Ce=(0,P.useCallback)(async t=>{if(!_e.current)return;ge.current?.abort();let n=new AbortController;ge.current=n;let{signal:r}=n,i=++he.current;x(``);try{let[n,a,o,s,c]=await Promise.all([fetch(`${e}/api/routing-profiles`,{signal:r}),fetch(`${e}/api/routing-analytics`,{signal:r}),fetch(`${e}/api/config`,{signal:r}),fetch(`${e}/api/models`,{signal:r}),fetch(`${e}/api/lab/catalog`,{signal:r})]);if(!n.ok)throw Error(`load-${n.status}`);let[u,d,p,h,g]=await Promise.all([n.json(),a.ok?a.json():Promise.resolve(null),o.ok?o.json():Promise.resolve({}),s.ok?s.json():Promise.resolve([]),c.ok?c.json().catch(()=>null):Promise.resolve(null)]);if(i!==he.current)return;let v=tn(u),b=me.current,x=rn(v,b?.id??null,t),S=p.providers??{},w=Object.entries(S).filter(([,e])=>e.disabled!==!0).map(([e])=>e).sort((e,t)=>e<t?-1:+(e>t)),E=Object.fromEntries(Object.entries(S).filter(([,e])=>e.disabled!==!0&&typeof e.defaultModel==`string`).map(([e,t])=>[e,t.defaultModel.trim()]));me.current=x,l(v),C(x),T(x?jt(x):null),f(d),m(w),_(E),y(nn(h)),g&&Array.isArray(g.scenarios)?(de(Yt(g.scenarios)),pe(!1)):(de([]),pe(!0)),(!b||!x||b.id!==x.id||b.revision!==x.revision)&&xe()}catch(e){if(i!==he.current||r.aborted)return;x(e instanceof Error?e.message:String(e))}finally{ge.current===n&&(ge.current=null)}},[e,xe]);(0,P.useEffect)(()=>{if(!t){ve();return}_e.current=!0;let e=window.setTimeout(()=>void Ce(),0);return()=>{window.clearTimeout(e),ve()}},[t,ve,Ce]),(0,P.useEffect)(()=>{n?.(c.length)},[n,c.length]);let we=p[0]??``,Te=h[we]??Lt(v,we)[0]?.id??``,F=()=>{me.current=null,C(null),T(At(we,Te)),D(null),xe()},Ee=()=>{if(S){T(jt(S)),D(null);return}Se(c[0]??null)},I=async()=>{if(!(!w||O)){ee(!0),D(null);try{let t=Pt(w,S?`update`:`create`,S?.revision),n=await fetch(`${e}/api/routing-profiles`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(t)}),r=await g(n);if(!n.ok){let e=await n.json().catch(()=>null);be(Ft(e)??i(`routing.loadFailed`),!1);return}if(!It(r)){be(Ft(r)??i(`routing.loadFailed`),!1);return}await Ce(t.id),be(i(`common.ok`),!0)}catch(e){be(e instanceof Error?e.message:i(`routing.loadFailed`),!1)}finally{ee(!1)}}},L=async()=>{if(!(!S||O)&&window.confirm(i(`routing.removeConfirm`,{id:S.id}))){ee(!0),D(null);try{let t=await fetch(`${e}/api/routing-profiles?id=${encodeURIComponent(S.id)}`,{method:`DELETE`}),n=await g(t);if(!t.ok){let e=await t.json().catch(()=>null);be(Ft(e)??i(`routing.loadFailed`),!1);return}if(!It(n)){be(Ft(n)??i(`routing.loadFailed`),!1);return}me.current=null,await Ce(),be(i(`common.ok`),!0)}catch(e){be(e instanceof Error?e.message:i(`routing.loadFailed`),!1)}finally{ee(!1)}}},De=(e,t,n)=>{T(r=>{if(!r)return r;let i=r.candidates.map((r,i)=>i===e?t===`provider`?{...r,provider:n,model:h[n]??Lt(v,n)[0]?.id??``}:{...r,model:n}:r);return{...r,candidates:i}})},Oe=()=>{T(e=>e&&{...e,candidates:[...e.candidates,Ct(we,Te)]})},ke=e=>{T(t=>t&&{...t,candidates:t.candidates.filter((t,n)=>n!==e)})},Ae=async()=>{if(!S)return;let t=++ye.current;le(!0),ae(null),se(``);try{let n={},r=k.trim()?Number(k.trim()):NaN;Number.isFinite(r)&&r>0&&(n.contextWindow=r),te&&(n.toolsRequired=!0),M&&(n.imageInputRequired=!0),N&&(n.structuredOutputRequired=!0);let a=await fetch(`${e}/api/routing-profiles/dry-run`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({profile:S.id,evidence:n})});if(t!==ye.current)return;if(!a.ok){let e=await a.json().catch(()=>null);if(t!==ye.current)return;se(Ft(e)??i(`routing.dryRunError`,{status:a.status}));return}let o=await a.json();if(t!==ye.current)return;ae(o)}catch(e){if(t!==ye.current)return;se(e instanceof Error?e.message:String(e))}finally{t===ye.current&&le(!1)}},je=w?.candidates.map(e=>Lt(v,e.provider))??[];return(0,W.jsxs)(`div`,{className:`page`,"data-page":`routing`,children:[(0,W.jsxs)(`div`,{className:`row`,style:{display:`flex`,gap:8,justifyContent:`flex-end`,marginBottom:12},children:[(0,W.jsxs)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:F,children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,children:`+`}),` `,i(`routing.createProfile`)]}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void Ce(),children:i(`common.retry`)})]}),b?(0,W.jsxs)(d,{tone:`err`,children:[i(`routing.loadFailed`),`: `,b]}):null,E?(0,W.jsx)(d,{tone:E.ok?`ok`:`err`,children:E.message}):null,c.length>0?(0,W.jsx)(`div`,{className:`panel`,style:{display:`flex`,flexDirection:`column`,gap:12},children:c.map(e=>(0,W.jsx)(`button`,{type:`button`,className:`model-card`,style:{textAlign:`left`,cursor:`pointer`},onClick:()=>Se(e),"aria-pressed":S?.id===e.id,children:(0,W.jsxs)(`div`,{className:`card-badges`,children:[(0,W.jsx)(`strong`,{children:e.id}),(0,W.jsx)(`span`,{className:`badge badge-muted`,children:e.model}),(0,W.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.revision`),`: `,e.revision]})]})},e.id))}):null,w?(0,W.jsxs)(`form`,{className:`panel`,style:{marginTop:14,display:`flex`,flexDirection:`column`,gap:16},onSubmit:e=>{e.preventDefault(),I()},children:[(0,W.jsxs)(`div`,{className:`page-head`,children:[(0,W.jsxs)(`h3`,{children:[i(`routing.detail`),`: `,S?.model??(0,W.jsx)(`code`,{children:`policy/…`})]}),S?(0,W.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.revision`),`: `,S.revision]}):null]}),(0,W.jsxs)(`div`,{className:`model-grid`,children:[(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:`id`}),(0,W.jsx)(`input`,{className:`input`,required:!0,disabled:S!==null,value:w.id,onChange:e=>T(t=>t&&{...t,id:e.target.value})})]}),(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:`alias`}),(0,W.jsx)(`input`,{className:`input`,value:w.alias,onChange:e=>T(t=>t&&{...t,alias:e.target.value})})]})]}),(0,W.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,W.jsx)(`legend`,{className:`field-label`,children:i(`routing.candidates`)}),(0,W.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:10},children:[w.candidates.map((e,t)=>{let n=[...new Set([e.provider,...p])].filter(Boolean),r=`routing-model-options-${t}`;return(0,W.jsxs)(`div`,{className:`model-card`,children:[(0,W.jsxs)(`div`,{className:`model-grid`,children:[(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:`provider`}),(0,W.jsxs)(`select`,{className:`input`,required:!0,value:e.provider,onChange:e=>De(t,`provider`,e.target.value),children:[(0,W.jsx)(`option`,{value:``,disabled:!0,children:i(`routing.none`)}),n.map(e=>(0,W.jsx)(`option`,{value:e,children:e},e))]})]}),(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:`model`}),(0,W.jsx)(`input`,{className:`input`,required:!0,list:r,value:e.model,onChange:e=>De(t,`model`,e.target.value)}),(0,W.jsx)(`datalist`,{id:r,children:je[t]?.map(e=>(0,W.jsx)(`option`,{value:e.id},e.id))})]})]}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:w.candidates.length===1,onClick:()=>ke(t),"aria-label":i(`routing.removeCandidate`,{provider:e.provider,model:e.model}),children:i(`common.remove`)})]},e.key)}),(0,W.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:Oe,children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,children:`+`}),` `,i(`routing.candidate`)]})]})]}),(0,W.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,W.jsx)(`legend`,{className:`field-label`,children:i(`routing.require`)}),(0,W.jsxs)(`div`,{className:`model-grid`,children:[Ht.map(e=>(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:e}),(0,W.jsx)(`input`,{className:`input`,type:`number`,min:Vt[e].min,max:Vt[e].max,step:Vt[e].step,value:w.require[e],onChange:t=>T(n=>n&&{...n,require:{...n.require,[e]:t.target.value}})})]},e)),Bt.map(e=>(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:e}),(0,W.jsx)(`input`,{className:`input`,value:w.require[e],onChange:t=>T(n=>n&&{...n,require:{...n.require,[e]:t.target.value}})})]},e)),zt.map(e=>(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:e}),(0,W.jsxs)(`select`,{className:`input`,value:w.require[e],onChange:t=>T(n=>n&&{...n,require:{...n.require,[e]:t.target.value}}),children:[(0,W.jsx)(`option`,{value:``,children:i(`routing.none`)}),(0,W.jsx)(`option`,{value:`true`,children:i(`routing.yes`)}),(0,W.jsx)(`option`,{value:`false`,children:i(`routing.no`)})]})]},e))]})]}),(0,W.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,W.jsx)(`legend`,{className:`field-label`,children:i(`routing.optimize`)}),(0,W.jsx)(`div`,{className:`model-grid`,children:Ut.map(e=>(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:e}),(0,W.jsx)(`input`,{className:`input`,type:`number`,min:0,step:`any`,required:!0,value:w.optimize[e],onChange:t=>T(n=>n&&{...n,optimize:{...n.optimize,[e]:t.target.value}})})]},e))})]}),(0,W.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,W.jsx)(`legend`,{className:`field-label`,children:i(`routing.limits`)}),(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:`maxEstimatedCostUsd`}),(0,W.jsx)(`input`,{className:`input`,type:`number`,min:0,step:`any`,value:w.limits.maxEstimatedCostUsd,onChange:e=>T(t=>t&&{...t,limits:{...t.limits,maxEstimatedCostUsd:e.target.value}})})]}),(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:`onUnknownCost`}),(0,W.jsx)(`select`,{className:`input`,value:w.limits.onUnknownCost,onChange:e=>T(t=>t&&{...t,limits:{...t.limits,onUnknownCost:e.target.value}}),children:Kt.map(e=>(0,W.jsx)(`option`,{value:e,children:i(`routing.unknownEvidence.${e}`)},e))})]})]}),(0,W.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,W.jsx)(`legend`,{className:`field-label`,children:i(`routing.unknownEvidence`)}),(0,W.jsx)(`div`,{className:`model-grid`,children:Wt.map(e=>(0,W.jsxs)(`label`,{className:`field-label`,children:[(0,W.jsx)(`code`,{children:e}),(0,W.jsx)(`select`,{className:`input`,value:w.unknownEvidence[e],onChange:t=>T(n=>n&&{...n,unknownEvidence:{...n.unknownEvidence,[e]:t.target.value}}),children:Gt.map(e=>(0,W.jsx)(`option`,{value:e,children:i(`routing.unknownEvidence.${e}`)},e))})]},e))})]}),(0,W.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,W.jsx)(`legend`,{className:`field-label`,children:i(`routing.compatibility.title`)}),(0,W.jsxs)(`label`,{className:`checkbox`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:w.compatibility.enabled,onChange:e=>T(t=>t&&{...t,compatibility:{...t.compatibility,enabled:e.target.checked}})}),i(`routing.compatibility.enabled`)]}),w.compatibility.enabled?(0,W.jsxs)(`div`,{className:`model-grid`,style:{marginTop:10},children:[(0,W.jsxs)(`div`,{className:`field-label`,style:{gridColumn:`1 / -1`},children:[i(`routing.compatibility.requiredSuites`),fe?(0,W.jsx)(`div`,{style:{marginTop:6},children:(0,W.jsx)(d,{tone:`warn`,children:i(`routing.compatibility.catalogUnavailable`)})}):null,ue.length>0?(0,W.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:4,marginTop:6},children:ue.map(e=>(0,W.jsxs)(`label`,{className:`checkbox`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:Xt(w.compatibility.requiredSuites,e),onChange:t=>T(n=>{if(!n)return n;let r=t.target.checked?[...n.compatibility.requiredSuites,{suiteId:e.suiteId,evidenceLayer:e.evidenceLayer}]:n.compatibility.requiredSuites.filter(t=>t.suiteId!==e.suiteId||t.evidenceLayer!==e.evidenceLayer);return{...n,compatibility:{...n.compatibility,requiredSuites:r}}})}),(0,W.jsxs)(`span`,{children:[e.suiteId,` `,(0,W.jsxs)(`span`,{className:`muted`,children:[`(`,i(`routing.compatibility.layer.${e.evidenceLayer}`),`)`]})]})]},e.key))}):null]}),(0,W.jsxs)(`label`,{className:`field-label`,children:[i(`routing.compatibility.minStatus`),(0,W.jsxs)(`select`,{className:`input`,value:w.compatibility.minStatus,onChange:e=>T(t=>t&&{...t,compatibility:{...t.compatibility,minStatus:e.target.value}}),children:[(0,W.jsx)(`option`,{value:``,children:i(`routing.none`)}),(0,W.jsx)(`option`,{value:`PROBED`,children:i(`lab.verdict.PROBED`)}),(0,W.jsx)(`option`,{value:`VERIFIED`,children:i(`lab.verdict.VERIFIED`)})]})]}),(0,W.jsxs)(`label`,{className:`field-label`,children:[o.maxEvidenceAgeMs,(0,W.jsx)(`input`,{className:`input`,type:`number`,min:0,value:w.compatibility.maxEvidenceAgeMs,onChange:e=>T(t=>t&&{...t,compatibility:{...t.compatibility,maxEvidenceAgeMs:e.target.value}})})]}),(0,W.jsxs)(`label`,{className:`field-label`,children:[o.unknownEvidence,(0,W.jsx)(`select`,{className:`input`,value:w.compatibility.unknownEvidence,onChange:e=>T(t=>t&&{...t,compatibility:{...t.compatibility,unknownEvidence:e.target.value}}),children:Gt.map(e=>(0,W.jsx)(`option`,{value:e,children:i(`routing.unknownEvidence.${e}`)},e))})]}),(0,W.jsxs)(`label`,{className:`field-label`,children:[o.degradedEvidence,(0,W.jsx)(`select`,{className:`input`,value:w.compatibility.degradedEvidence,onChange:e=>T(t=>t&&{...t,compatibility:{...t.compatibility,degradedEvidence:e.target.value}}),children:Gt.map(e=>(0,W.jsx)(`option`,{value:e,children:i(`routing.unknownEvidence.${e}`)},e))})]})]}):null]}),(0,W.jsxs)(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[(0,W.jsx)(`button`,{type:`submit`,className:`btn btn-primary`,disabled:O,children:i(O?`common.saving`:`common.save`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:O,onClick:Ee,children:i(`common.cancel`)}),S?(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:O,onClick:()=>void L(),children:i(`common.remove`)}):null]})]}):null,(0,W.jsxs)(`div`,{className:`panel`,style:{marginTop:14,display:`flex`,flexDirection:`column`,gap:10},children:[(0,W.jsx)(`h3`,{children:i(`routing.dryRun`)}),(0,W.jsxs)(`label`,{className:`field-label`,htmlFor:`routing-context`,children:[i(`routing.dryRunContext`),(0,W.jsx)(`input`,{id:`routing-context`,className:`input`,type:`number`,min:1,value:k,onChange:e=>{A(e.target.value),xe()}})]}),(0,W.jsxs)(`label`,{className:`checkbox`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:te,onChange:e=>{j(e.target.checked),xe()}}),i(`routing.dryRunTools`)]}),(0,W.jsxs)(`label`,{className:`checkbox`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:M,onChange:e=>{ne(e.target.checked),xe()}}),i(`routing.dryRunImage`)]}),(0,W.jsxs)(`label`,{className:`checkbox`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:N,onChange:e=>{re(e.target.checked),xe()}}),i(`routing.dryRunStructured`)]}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:!S||ce,onClick:()=>void Ae(),children:i(`routing.dryRunRun`)}),oe?(0,W.jsx)(d,{tone:`err`,children:oe}):null,ie?(0,W.jsxs)(`table`,{className:`tbl`,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{children:i(`routing.candidate`)}),(0,W.jsx)(`th`,{children:i(`routing.eligible`)}),(0,W.jsx)(`th`,{children:i(`routing.exclusions`)}),(0,W.jsx)(`th`,{children:i(`routing.costCap`)}),(0,W.jsx)(`th`,{children:i(`routing.score`)})]})}),(0,W.jsx)(`tbody`,{children:ie.candidates.map((e,t)=>(0,W.jsxs)(`tr`,{children:[(0,W.jsxs)(`td`,{children:[e.provider,`/`,e.model,t===ie.selectedIndex?` ✓ (${i(`routing.selected`)})`:``]}),(0,W.jsx)(`td`,{children:e.eligible?i(`routing.yes`):i(`routing.no`)}),(0,W.jsx)(`td`,{children:e.exclusions.map(e=>en(e.code,i)).join(`, `)||i(`routing.none`)}),(0,W.jsx)(`td`,{children:$t(e.cost?.capOutcome,i,s)}),(0,W.jsx)(`td`,{children:e.score?e.score.total.toFixed(3):s})]},`${e.provider}/${e.model}`))})]}):null]}),(0,W.jsxs)(`div`,{className:`panel`,style:{marginTop:14,display:`flex`,flexDirection:`column`,gap:10},children:[(0,W.jsx)(`h3`,{children:i(`routing.analytics`)}),u?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`card-badges`,children:[(0,W.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsTotal`),`: `,u.totalRequests]}),(0,W.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsSuccessRate`),`: `,Qt(u.successRate,s)]}),(0,W.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsFallbackRate`),`: `,Qt(u.fallbackRate,s)]}),(0,W.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsP50`),`: `,Zt(u.durationMs.p50,s)]}),(0,W.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsP95`),`: `,Zt(u.durationMs.p95,s)]}),(0,W.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsP99`),`: `,Zt(u.durationMs.p99,s)]}),(0,W.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsCooldown`),`: `,u.cooldownTriggeringFailures]}),(0,W.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsConfidence`),`: `,u.confidence??s]}),u.historyTruncated?(0,W.jsx)(`span`,{className:`badge badge-muted`,children:i(`routing.analyticsTruncated`)}):null]}),(0,W.jsxs)(`table`,{className:`tbl`,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{children:i(`routing.candidate`)}),(0,W.jsx)(`th`,{children:i(`routing.analyticsRequests`)}),(0,W.jsx)(`th`,{children:i(`routing.analyticsSuccessRate`)}),(0,W.jsx)(`th`,{children:i(`routing.analyticsP50`)})]})}),(0,W.jsx)(`tbody`,{children:u.breakdown.map(e=>(0,W.jsxs)(`tr`,{children:[(0,W.jsxs)(`td`,{children:[e.provider,`/`,e.model]}),(0,W.jsx)(`td`,{children:e.requests}),(0,W.jsx)(`td`,{children:Qt(e.successRate,s)}),(0,W.jsx)(`td`,{children:Zt(e.p50DurationMs,s)})]},`${e.provider}/${e.model}`))})]})]}):(0,W.jsx)(`p`,{className:`muted`,children:i(`routing.analyticsEmpty`)})]})]})}var on=[`protocol_conformance`,`live_route_compatibility`,`task_effectiveness`],sn=[`UNKNOWN`,`CLAIMED`,`PROBED`,`VERIFIED`,`DEGRADED`,`BLOCKED`,`UNSUPPORTED`],J=[`present`,`corrupt`,`purged_unavailable`],cn=50;function Y(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function ln(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}function un(e){return e===null||typeof e==`string`}function dn(e){return e===void 0||typeof e==`number`&&Number.isFinite(e)}function fn(e){if(!Y(e)||typeof e.projectionAvailable!=`boolean`||e.projectionIncompatible!==void 0&&typeof e.projectionIncompatible!=`boolean`)return null;for(let t of[`sqliteSchemaVersion`,`builtAtMs`,`eventCount`,`subjectCount`,`observationCount`,`claimCount`,`verdictCount`,`artifactCount`,`corruptionCount`])if(!dn(e[t]))return null;return e.projectionSpecVersion!==void 0&&typeof e.projectionSpecVersion!=`string`?null:e}function pn(e){return!Y(e)||typeof e.projectionKey!=`string`||e.projectionKey.length===0||typeof e.subjectId!=`string`||e.subjectId.length===0||typeof e.evidenceLayer!=`string`||!on.includes(e.evidenceLayer)||typeof e.suiteId!=`string`||e.suiteId.length===0||typeof e.suiteVersion!=`string`||typeof e.suiteManifestDigest!=`string`||typeof e.projectionSpecVersion!=`string`||typeof e.verdict!=`string`||!sn.includes(e.verdict)||typeof e.asOf!=`number`||!Number.isFinite(e.asOf)||!ln(e.scenarioManifestDigests)||!un(e.claimSourceDigest)||!ln(e.contributingEventIds)||!ln(e.contradictingEventIds)||!ln(e.notes)?null:e}function mn(e){return!Y(e)||!Array.isArray(e.verdicts)?{verdicts:[],hasMore:!1}:{verdicts:e.verdicts.map(pn).filter(e=>e!==null),hasMore:e.hasMore===!0,nextCursor:typeof e.nextCursor==`string`?e.nextCursor:void 0}}function hn(e){return!Y(e)||!Array.isArray(e.subjects)?{subjects:[],hasMore:!1}:{subjects:e.subjects.filter(e=>Y(e)&&typeof e.subjectId==`string`&&typeof e.subjectKind==`string`),hasMore:e.hasMore===!0,nextCursor:typeof e.nextCursor==`string`?e.nextCursor:void 0}}function gn(e){return!Y(e)||!Y(e.subject)||typeof e.subject.subjectKind!=`string`?null:e.subject}function _n(e){return!Y(e)||typeof e.eventId!=`string`||typeof e.subjectId!=`string`||typeof e.evidenceLayer!=`string`||!on.includes(e.evidenceLayer)||typeof e.suiteId!=`string`||typeof e.suiteVersion!=`string`||typeof e.suiteManifestDigest!=`string`||typeof e.scenarioId!=`string`||typeof e.scenarioVersion!=`string`||typeof e.scenarioManifestDigest!=`string`||typeof e.outcome!=`string`||typeof e.completedAt!=`number`||!Number.isFinite(e.completedAt)||typeof e.executionMode!=`string`||typeof e.excluded!=`boolean`||!un(e.exclusionReason)?null:e}function vn(e){return!Y(e)||!Array.isArray(e.observations)?{observations:[],hasMore:!1}:{observations:e.observations.map(_n).filter(e=>e!==null),hasMore:e.hasMore===!0,nextCursor:typeof e.nextCursor==`string`?e.nextCursor:void 0}}function yn(e){if(!Y(e)||!Y(e.event))return null;let t={...e.event};return delete t.payload_json,typeof t.eventKind!=`string`||typeof t.eventId!=`string`||typeof t.recordedAt!=`number`||!Number.isFinite(t.recordedAt)||typeof t.producer!=`string`||typeof t.producerVersion!=`string`||typeof t.excluded!=`boolean`||!un(t.exclusionReason)?null:t}function bn(e){if(!Y(e)||!Y(e.artifact))return null;let t=e.artifact;return typeof t.digest!=`string`||typeof t.status!=`string`||!J.includes(t.status)||!un(t.artifactClass)||!un(t.mediaType)||t.byteCount!==null&&(typeof t.byteCount!=`number`||!Number.isFinite(t.byteCount))||!un(t.lastError)?null:t}function xn(e){let t={},n=e.subjectQuery.trim();return e.layer&&(t.layer=e.layer),e.verdict&&(t.verdict=e.verdict),n&&(t.subjectId=n),e.suiteId.trim()&&(t.suiteId=e.suiteId.trim()),t}function Sn(){return{protocol_conformance:[],live_route_compatibility:[],task_effectiveness:[]}}function Cn(e,t){let n=new Map(t.map(e=>[e.subjectId,e.subjectKind])),r=new Map;for(let t of e){let e=r.get(t.subjectId);e||(e={subjectId:t.subjectId,subjectKind:n.get(t.subjectId)??``,byLayer:Sn()},r.set(t.subjectId,e)),e.byLayer[t.evidenceLayer].push(t)}return[...r.values()].sort((e,t)=>e.subjectId.localeCompare(t.subjectId))}function wn(e,t){let n=new Map(e.map(e=>[e.subjectId,e])),r=new Map;for(let e of t){if(r.size>=cn)break;r.has(e.subjectId)||r.set(e.subjectId,n.get(e.subjectId)??{subjectId:e.subjectId,subjectKind:``})}for(let t of e){if(r.size>=cn)break;r.has(t.subjectId)||r.set(t.subjectId,t)}return[...r.values()].slice(0,cn)}function Tn(e){return e.length<=16?e:`${e.slice(0,8)}.${e.slice(-6)}`}function X(e,t){return!Number.isFinite(e)||e<=0?`-`:new Date(e).toLocaleString(t)}function En(e){let t=new Set;e.suiteManifestDigest&&t.add(e.suiteManifestDigest);for(let n of e.scenarioManifestDigests)n&&t.add(n);return e.claimSourceDigest&&t.add(e.claimSourceDigest),[...t]}var Dn=50,On=200,kn=6,An=200;async function jn(e,t,n){let r=await fetch(`${e}${t}`,{signal:n});return _(r)}function Mn(e,t){let n=new URLSearchParams({limit:String(Dn)});for(let[t,r]of Object.entries(e))r&&n.set(t,r);return t&&n.set(`cursor`,t),n.toString()}var Nn=class extends Error{};function Z(){return new Nn}function Pn(e,t,n){if(e.hasMore!==void 0&&typeof e.hasMore!=`boolean`||e.nextCursor!==void 0&&typeof e.nextCursor!=`string`||t&&!n)throw Z()}function Fn(e){if(!Y(e)||!Array.isArray(e.verdicts))throw Z();let t=mn(e);if(t.verdicts.length!==e.verdicts.length)throw Z();return Pn(e,t.hasMore,t.nextCursor),t}function In(e){if(!Y(e)||!Array.isArray(e.subjects))throw Z();let t=hn(e);if(t.subjects.length!==e.subjects.length)throw Z();return Pn(e,t.hasMore,t.nextCursor),t}function Ln(e){if(!Y(e)||!Array.isArray(e.observations))throw Z();let t=vn(e);if(t.observations.length!==e.observations.length)throw Z();return Pn(e,t.hasMore,t.nextCursor),t}async function Rn(e,t){let n=fn(await jn(e,`/api/lab/status`,t));if(!n)throw Z();return n}async function zn(e,t,n,r){return Fn(await jn(e,`/api/lab/verdicts?${Mn({layer:t.layer,verdict:t.verdict,subjectId:t.subjectId,suiteId:t.suiteId},n)}`,r))}async function Bn(e,t,n){return In(await jn(e,`/api/lab/subjects?${Mn({},t)}`,n))}async function Vn(e){let t=[],n=new Set,r;for(let i=0;i<On;i++){let i=await e(r);if(t.push(...i.rows),!i.hasMore)return{rows:t,truncated:!1};let a=i.nextCursor;if(!a||n.has(a)||a===r)throw new Nn;n.add(a),r=a}return{rows:t,truncated:!0}}async function Hn(e,t,n){let r=gn(await jn(e,`/api/lab/subjects/${encodeURIComponent(t)}`,n));if(!r)throw Z();return r}async function Un(e,t,n,r){return Ln(await jn(e,`/api/lab/observations?${Mn({subjectId:t.subjectId,layer:t.layer,suiteId:t.suiteId},n)}`,r))}async function Wn(e,t,n){return Vn(async r=>{let i=await Un(e,t,r,n);return{rows:i.observations,hasMore:i.hasMore,nextCursor:i.nextCursor}})}async function Gn(e,t,n){let r=yn(await jn(e,`/api/lab/events/${encodeURIComponent(t)}`,n));if(!r)throw Z();return r}async function Kn(e,t,n){let r=bn(await jn(e,`/api/lab/artifacts/${encodeURIComponent(t)}`,n));if(!r)throw Z();return r}function qn(e){if(!Y(e)||e.verificationStatus!==`not_verification`||!Y(e.summary))throw Z();let t=e.summary;if(t.verificationStatus!==`not_verification`||typeof t.subjectId!=`string`||typeof t.recentProductionAttempts!=`number`||typeof t.recentSuccessfulAttempts!=`number`||typeof t.recentRouteErrorSignals!=`number`||t.lastObservedProductionAttempt!==void 0&&typeof t.lastObservedProductionAttempt!=`number`)throw Z();return{verificationStatus:`not_verification`,summary:t}}async function Jn(e,t,n){return qn(await jn(e,`/api/lab/production-signals?${Mn({subjectId:t})}`,n))}function Yn(e,t){let n=new Set(t);return Object.keys(e).every(e=>n.has(e))}function Q(e){return typeof e==`string`&&/^[0-9a-f]{64}$/.test(e)}function Xn(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function Zn(e){if(!Y(e)||!Yn(e,[`evidence`,`trustClass`,`locallyVerified`])||e.trustClass!==`community_untrusted_v1`||e.locallyVerified!==!1||!Array.isArray(e.evidence)||e.evidence.length>4096)return null;let t=[];for(let n of e.evidence){if(!Y(n)||!Yn(n,[`trustClass`,`status`,`bundleId`,`publisherKeyId`,`activeRecordCount`,`revokedRecordCount`])||n.trustClass!==`community_untrusted_v1`||n.status!==`cryptographically_valid`||!Q(n.bundleId)||!Q(n.publisherKeyId)||!Xn(n.activeRecordCount)||!Xn(n.revokedRecordCount))return null;t.push({trustClass:`community_untrusted_v1`,status:`cryptographically_valid`,bundleId:n.bundleId,publisherKeyId:n.publisherKeyId,activeRecordCount:n.activeRecordCount,revokedRecordCount:n.revokedRecordCount})}return{evidence:t,trustClass:`community_untrusted_v1`,locallyVerified:!1}}async function Qn(e,t){let n=Zn(await jn(e,`/api/lab/public/community`,t));if(!n)throw Z();return n}async function $n(e,t,n){let[r,i]=await Promise.all([Rn(e,n),Qn(e,n).catch(e=>{if(n.aborted)throw e;return null})]);if(!r.projectionAvailable)return{status:r,verdicts:[],subjects:[],subjectsTruncated:!1,hasMore:!1,community:i};let[a,o]=await Promise.all([zn(e,t,void 0,n),Bn(e,void 0,n)]);return{status:r,verdicts:a.verdicts,subjects:o.subjects,subjectsTruncated:o.hasMore,hasMore:a.hasMore,nextCursor:a.nextCursor,community:i}}async function er(e,t,n,r){return zn(e,t,n,r)}async function tr(e,t,n,r){let i=e.slice(0,An),a=[],o=0,s=async()=>{for(;;){if(n.aborted)throw new DOMException(`Aborted`,`AbortError`);let e=o++;if(e>=i.length)return;try{a.push(await r(i[e]))}catch(e){if(n.aborted)throw e}}},c=Math.min(t,i.length);return await Promise.all(Array.from({length:c},()=>s())),a}async function nr(e,t,n){let r=[...new Set([...t.contributingEventIds,...t.contradictingEventIds])],i=En(t),a={subjectId:t.subjectId,layer:t.evidenceLayer,suiteId:t.suiteId},[o,s,c,l,u]=await Promise.all([Hn(e,t.subjectId,n),Wn(e,a,n),tr(r,kn,n,t=>Gn(e,t,n)),tr(i,kn,n,t=>Kn(e,t,n)),Jn(e,t.subjectId,n).catch(e=>{if(n.aborted)throw e;return null})]);return{subject:o,observations:s.rows,observationsTruncated:s.truncated,events:c,artifacts:l,production:u}}var rr={protocol_conformance:`lab.layer.protocol_conformance`,live_route_compatibility:`lab.layer.live_route_compatibility`,task_effectiveness:`lab.layer.task_effectiveness`},ir={protocol_conformance:`lab.col.protocol`,live_route_compatibility:`lab.col.live`,task_effectiveness:`lab.col.task`},ar={UNKNOWN:`lab.verdict.UNKNOWN`,CLAIMED:`lab.verdict.CLAIMED`,PROBED:`lab.verdict.PROBED`,VERIFIED:`lab.verdict.VERIFIED`,DEGRADED:`lab.verdict.DEGRADED`,BLOCKED:`lab.verdict.BLOCKED`,UNSUPPORTED:`lab.verdict.UNSUPPORTED`},or={present:`artifact.present`,corrupt:`artifact.corrupt`,purged_unavailable:`artifact.purged_unavailable`};function sr(e,t){if(!(e instanceof Error))return t;let n=e.message;return n===`Failed to fetch`||n.includes(`NetworkError`)||n.includes(`network error`)?t:n||t}function cr({verdict:e,caption:t,label:n,selected:r,onSelect:i}){let a=`lab-verdict-badge${r?` lab-verdict-badge--selected`:``}`;return i?(0,W.jsxs)(`button`,{type:`button`,className:a,"data-verdict":e,title:t,onClick:i,children:[(0,W.jsx)(`span`,{children:n}),(0,W.jsx)(`span`,{className:`suite`,children:t})]}):(0,W.jsxs)(`span`,{className:a,"data-verdict":e,title:t,children:[(0,W.jsx)(`span`,{children:n}),(0,W.jsx)(`span`,{className:`suite`,children:t})]})}function lr({rows:e,t,selectedKey:n,onSelect:r}){return e.length===0?(0,W.jsx)(`span`,{className:`muted`,children:`-`}):(0,W.jsx)(`div`,{className:`lab-verdict-stack`,children:e.map(e=>(0,W.jsx)(cr,{verdict:e.verdict,caption:e.suiteId,label:t(ar[e.verdict]),selected:n===e.projectionKey,onSelect:()=>r(e)},e.projectionKey))})}function ur({data:e,t,locale:n}){let{status:r}=e,i=[{label:t(`lab.subjectCount`),value:String(r.subjectCount??0)},{label:t(`lab.verdictCount`),value:String(r.verdictCount??0)},{label:t(`lab.observationCount`),value:String(r.observationCount??0)},{label:t(`lab.eventCount`),value:String(r.eventCount??0)}];return r.builtAtMs&&i.push({label:t(`lab.builtAt`),value:X(r.builtAtMs,n)}),(0,W.jsx)(`div`,{className:`lab-status-grid`,"aria-label":t(`lab.statusTitle`),children:i.map(e=>(0,W.jsxs)(`div`,{className:`lab-status-card`,children:[(0,W.jsx)(`span`,{className:`label`,children:e.label}),(0,W.jsx)(`span`,{className:`value`,children:e.value})]},e.label))})}function dr({community:e,locale:t}){if(!e||e.evidence.length===0)return null;let r=e.evidence.reduce((e,t)=>e+t.activeRecordCount,0),i=e.evidence.reduce((e,t)=>e+t.revokedRecordCount,0);return(0,W.jsxs)(`section`,{className:`lab-matrix-block`,"data-testid":`lab-community-evidence`,children:[(0,W.jsx)(`h3`,{className:`lab-matrix-title`,children:n(t,`community.title`)}),(0,W.jsx)(`p`,{className:`muted`,children:n(t,`community.notLocalVerdict`)}),(0,W.jsxs)(`dl`,{className:`lab-detail-meta`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:n(t,`community.bundles`)}),(0,W.jsx)(`dd`,{children:e.evidence.length})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:n(t,`community.activeRecords`)}),(0,W.jsx)(`dd`,{children:r})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:n(t,`community.revokedRecords`)}),(0,W.jsx)(`dd`,{children:i})]})]})]})}function fr({verdict:e,detail:t,loading:r,error:i,t:a,locale:o,onClose:s}){let c=new Set([...e.contributingEventIds,...e.contradictingEventIds]).size;return(0,W.jsxs)(`aside`,{className:`lab-detail-pane`,"aria-label":a(`lab.detailTitle`),children:[(0,W.jsxs)(`div`,{className:`lab-detail-head`,children:[(0,W.jsx)(`h3`,{children:Tn(e.subjectId)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:s,children:a(`lab.detailClose`)})]}),(0,W.jsxs)(`dl`,{className:`lab-detail-meta`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:a(`lab.col.layer`)}),(0,W.jsx)(`dd`,{children:a(rr[e.evidenceLayer])})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:a(`lab.col.suite`)}),(0,W.jsx)(`dd`,{className:`mono`,children:e.suiteId})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:a(`lab.col.verdict`)}),(0,W.jsx)(`dd`,{children:a(ar[e.verdict])})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:a(`lab.col.asOf`)}),(0,W.jsx)(`dd`,{children:X(e.asOf,o)})]})]}),r&&(0,W.jsx)(ve,{busy:!0,children:a(`common.loading`)}),i&&(0,W.jsx)(d,{tone:`err`,children:i}),t&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`section`,{className:`lab-detail-section`,children:[(0,W.jsx)(`h4`,{children:a(`lab.detailSubject`)}),(0,W.jsx)(`p`,{className:`mono`,children:t.subject.subjectKind})]}),t.production&&(0,W.jsxs)(`section`,{className:`lab-detail-section`,"data-testid":`lab-production-signals`,children:[(0,W.jsx)(`h4`,{children:a(`lab.production.title`)}),(0,W.jsx)(`p`,{className:`muted`,children:a(`lab.production.notVerification`)}),(0,W.jsxs)(`dl`,{className:`lab-detail-meta`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:a(`lab.production.attempts`)}),(0,W.jsx)(`dd`,{children:t.production.summary.recentProductionAttempts})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:a(`lab.production.successes`)}),(0,W.jsx)(`dd`,{children:t.production.summary.recentSuccessfulAttempts})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:a(`lab.production.routeErrors`)}),(0,W.jsx)(`dd`,{children:t.production.summary.recentRouteErrorSignals})]}),t.production.summary.lastObservedProductionAttempt!==void 0&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:a(`lab.production.lastObserved`)}),(0,W.jsx)(`dd`,{children:X(t.production.summary.lastObservedProductionAttempt,o)})]})]})]}),t.observations.length>0&&(0,W.jsxs)(`section`,{className:`lab-detail-section`,children:[(0,W.jsx)(`h4`,{children:a(`lab.detailObservations`)}),(0,W.jsx)(`ul`,{className:`lab-detail-list`,children:t.observations.map(e=>(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`mono`,children:e.scenarioId}),(0,W.jsx)(`span`,{children:e.outcome}),(0,W.jsx)(`span`,{className:`muted`,children:X(e.completedAt,o)})]},e.eventId))})]}),(t.events.length>0||c>0)&&(0,W.jsxs)(`section`,{className:`lab-detail-section`,children:[(0,W.jsxs)(`h4`,{children:[a(`lab.detailEvents`),t.events.length<c?` (${t.events.length}/${c})`:``]}),(0,W.jsx)(`ul`,{className:`lab-detail-list`,children:t.events.map(e=>(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`mono`,children:e.eventId}),(0,W.jsx)(`span`,{children:e.eventKind})]},e.eventId))})]}),t.artifacts.length>0&&(0,W.jsxs)(`section`,{className:`lab-detail-section`,children:[(0,W.jsx)(`h4`,{children:a(`lab.detailArtifacts`)}),(0,W.jsx)(`ul`,{className:`lab-detail-list`,children:t.artifacts.map(e=>(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`mono`,title:e.digest,children:Tn(e.digest)}),(0,W.jsx)(`span`,{children:e.artifactClass??`-`}),(0,W.jsx)(`span`,{children:n(o,or[e.status])})]},e.digest))})]})]})]})}function pr({apiBase:e,active:t=!0,onCountChange:r}){let{t:i,locale:o}=a(),[s,c]=(0,P.useState)({layer:``,verdict:``,subjectQuery:``,suiteId:``}),[l,u]=(0,P.useState)(null),[f,m]=(0,P.useState)(null),[h,g]=(0,P.useState)(!1),[_,v]=(0,P.useState)(null),[b,x]=(0,P.useState)(null),[S,C]=(0,P.useState)(!1),[w,T]=(0,P.useState)(null),E=(0,P.useRef)(null),D=(0,P.useRef)(null),O=(0,P.useRef)(null),k=(0,P.useMemo)(()=>xn(s),[s]),A=JSON.stringify(k),te=(0,P.useCallback)(t=>$n(e,k,t),[e,k]),j=`lab-matrix:${e}:${A}`,M=_e(j,[e,A],te,{isEmpty:e=>e.verdicts.length===0,pollMs:6e4,enabled:t,pauseWhenHidden:!0}),ne=(0,P.useCallback)(()=>{E.current?.abort(),E.current=null,u(null),m(null),g(!1)},[]),N=(0,P.useCallback)(()=>{O.current=null,D.current?.abort(),D.current=null,v(null),x(null),T(null),C(!1)},[]);(0,P.useEffect)(()=>{E.current?.abort()},[M.data]),(0,P.useEffect)(()=>()=>{E.current?.abort(),D.current?.abort()},[]);let re=(0,P.useCallback)(e=>{N(),ne(),c(e)},[N,ne]),ie=l!==null&&l.baseData===M.data&&l.queryKey===A?l:null,ae=f!==null&&f.baseData===M.data&&f.queryKey===A?f.message:null,oe=(0,P.useMemo)(()=>{if(!t||!M.data?.status.projectionAvailable)return null;let e=M.data.status.verdictCount;return typeof e==`number`?e:M.data.verdicts.length+(ie?.verdicts.length??0)},[t,M.data,ie]);(0,P.useEffect)(()=>{r?.(oe)},[r,oe]);let se=(0,P.useMemo)(()=>M.data?[...M.data.verdicts,...ie?.verdicts??[]]:[],[M.data,ie]),ce=(0,P.useMemo)(()=>M.data?Cn(se,M.data.subjects):[],[se,M.data]),le=(0,P.useCallback)(async()=>{let t=ie?.nextCursor??M.data?.nextCursor,n=M.data;if(!t||!n||h)return;E.current?.abort();let r=new AbortController;E.current=r;let a=A;m(null),g(!0);try{let i=await er(e,k,t,r.signal);if(r.signal.aborted)return;u(e=>{let t=e?.baseData===n&&e.queryKey===a?e.verdicts:[];return{baseData:n,queryKey:a,verdicts:[...t,...i.verdicts],nextCursor:i.nextCursor,hasMore:i.hasMore}})}catch(e){r.signal.aborted||m({baseData:n,queryKey:a,message:sr(e,i(`lab.loadFailed`))})}finally{E.current===r&&(E.current=null,g(!1))}},[e,h,k,A,M.data,i,ie]),ue=(0,P.useCallback)(async n=>{if(!t)return;D.current?.abort();let r=new AbortController;D.current=r,O.current=n.projectionKey,v(n),x(null),T(null),C(!0);try{let t=await nr(e,n,r.signal);!r.signal.aborted&&O.current===n.projectionKey&&x(t)}catch(e){!r.signal.aborted&&O.current===n.projectionKey&&T(sr(e,i(`lab.detailLoadFailed`)))}finally{D.current===r&&(D.current=null,!r.signal.aborted&&O.current===n.projectionKey&&C(!1))}},[t,e,i]),de=M.refresh,fe=(0,P.useCallback)(()=>{N(),ne(),de({forceLoading:!0})},[N,de,ne]),pe=t?_:null,me=ie?ie.hasMore:M.data?.hasMore??!1,he=[{value:``,label:i(`lab.filter.all`)},...on.map(e=>({value:e,label:i(rr[e])}))],ge=[{value:``,label:i(`lab.filter.all`)},...sn.map(e=>({value:e,label:i(ar[e])}))],be=M.data?wn(M.data.subjects,se):[];if(M.state.showSkeleton)return(0,W.jsx)(ye,{label:i(`lab.loading`),rows:5});let xe=M.state.showError?sr(M.error,i(`lab.loadFailed`)):null,Se=M.data?.status,Ce=Se&&!Se.projectionAvailable,we=Se?.projectionIncompatible===!0;return(0,W.jsxs)(`div`,{className:`lab-page`,children:[(0,W.jsx)(`div`,{className:`lab-toolbar`,children:(0,W.jsxs)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:fe,disabled:M.refreshing,children:[(0,W.jsx)(ee,{}),i(`lab.refresh`)]})}),M.refreshing&&!M.state.showSkeleton&&(0,W.jsx)(ve,{busy:!0,live:!xe,children:i(`common.loading`)}),xe&&(0,W.jsx)(d,{tone:`err`,children:xe}),we&&(0,W.jsx)(d,{tone:`err`,children:i(`lab.projectionIncompatible`)}),Ce&&!we&&(0,W.jsx)(y,{title:i(`lab.projectionUnavailable`)}),M.data&&(0,W.jsx)(dr,{community:M.data.community,locale:o}),M.data&&Se?.projectionAvailable&&!we&&(0,W.jsxs)(`div`,{className:`lab-layout`,children:[(0,W.jsxs)(`div`,{className:`lab-main`,children:[(0,W.jsx)(ur,{data:M.data,t:i,locale:o}),(0,W.jsxs)(`div`,{className:`lab-filters`,children:[(0,W.jsxs)(`div`,{className:`lab-filter-field`,children:[(0,W.jsx)(`label`,{htmlFor:`lab-filter-layer`,children:i(`lab.filter.layer`)}),(0,W.jsx)(p,{id:`lab-filter-layer`,value:s.layer,options:he,onChange:e=>re(t=>({...t,layer:e})),label:i(`lab.filter.layer`),portal:!1})]}),(0,W.jsxs)(`div`,{className:`lab-filter-field`,children:[(0,W.jsx)(`label`,{htmlFor:`lab-filter-verdict`,children:i(`lab.filter.verdict`)}),(0,W.jsx)(p,{id:`lab-filter-verdict`,value:s.verdict,options:ge,onChange:e=>re(t=>({...t,verdict:e})),label:i(`lab.filter.verdict`),portal:!1})]}),(0,W.jsxs)(`div`,{className:`lab-filter-field`,children:[(0,W.jsx)(`label`,{htmlFor:`lab-filter-subject`,children:i(`lab.filter.subject`)}),(0,W.jsx)(`input`,{id:`lab-filter-subject`,type:`search`,value:s.subjectQuery,list:`lab-subject-suggestions`,onChange:e=>re(t=>({...t,subjectQuery:e.currentTarget.value}))}),(0,W.jsx)(`datalist`,{id:`lab-subject-suggestions`,children:be.map(e=>(0,W.jsx)(`option`,{value:e.subjectId,label:e.subjectKind||n(o,`subjectKindUnknown`)},e.subjectId))})]})]}),ce.length===0?(0,W.jsx)(y,{title:i(`lab.empty`)}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`lab-matrix-block`,children:[(0,W.jsx)(`h3`,{className:`lab-matrix-title`,children:i(`lab.matrixTitle`)}),(0,W.jsx)(`div`,{className:`lab-matrix-scroll`,children:(0,W.jsxs)(`table`,{className:`lab-matrix`,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{children:i(`lab.col.subject`)}),(0,W.jsx)(`th`,{children:i(`lab.subjectKind`)}),on.map(e=>(0,W.jsx)(`th`,{children:i(ir[e])},e))]})}),(0,W.jsx)(`tbody`,{children:ce.map(e=>(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`td`,{className:`subject`,title:e.subjectId,children:Tn(e.subjectId)}),(0,W.jsx)(`td`,{className:`kind`,children:e.subjectKind||n(o,`subjectKindUnknown`)}),on.map(t=>(0,W.jsx)(`td`,{children:(0,W.jsx)(lr,{rows:e.byLayer[t],t:i,selectedKey:pe?.projectionKey??null,onSelect:e=>{ue(e)}})},t))]},e.subjectId))})]})})]}),(0,W.jsxs)(`div`,{className:`lab-matrix-block`,children:[(0,W.jsx)(`h3`,{className:`lab-matrix-title`,children:i(`lab.verdictsTitle`)}),(0,W.jsx)(`div`,{className:`lab-matrix-scroll`,children:(0,W.jsxs)(`table`,{className:`lab-detail-table`,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{children:i(`lab.col.subject`)}),(0,W.jsx)(`th`,{children:i(`lab.col.layer`)}),(0,W.jsx)(`th`,{children:i(`lab.col.suite`)}),(0,W.jsx)(`th`,{children:i(`lab.col.verdict`)}),(0,W.jsx)(`th`,{children:i(`lab.col.asOf`)})]})}),(0,W.jsx)(`tbody`,{children:se.map(e=>{let t=pe?.projectionKey===e.projectionKey;return(0,W.jsxs)(`tr`,{className:t?`selected`:``,children:[(0,W.jsx)(`td`,{className:`mono`,title:e.subjectId,children:(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"data-verdict-detail":e.projectionKey,"aria-pressed":t,"aria-label":n(o,`selectVerdict`,{subject:Tn(e.subjectId)}),onClick:()=>{ue(e)},children:Tn(e.subjectId)})}),(0,W.jsx)(`td`,{children:i(rr[e.evidenceLayer])}),(0,W.jsx)(`td`,{className:`mono`,children:e.suiteId}),(0,W.jsx)(`td`,{children:(0,W.jsx)(cr,{verdict:e.verdict,caption:e.suiteId,label:i(ar[e.verdict])})}),(0,W.jsx)(`td`,{children:X(e.asOf,o)})]},e.projectionKey)})})]})})]}),ae&&(0,W.jsx)(d,{tone:`err`,children:ae}),me&&(0,W.jsx)(`div`,{className:`lab-load-more`,children:(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:h,onClick:()=>{le()},children:i(h?`common.loading`:`lab.loadMore`)})})]})]}),pe&&(0,W.jsx)(fr,{verdict:pe,detail:b,loading:S,error:w,t:i,locale:o,onClose:N})]})]})}var mr={catalog:`models.tab.catalog`,combos:`models.tab.combos`,routing:`models.tab.routing`,compatibility:`models.tab.compatibility`};function hr({tab:e,onSelect:n,meta:r}){let i=t(),a=(0,P.useRef)(null);a.current===null&&(a.current=new Map);let o=e=>{n(e),window.requestAnimationFrame(()=>{a.current.get(e)?.focus({preventScroll:!0})})},s=t=>{let n=j.indexOf(e),r=null;t.key===`ArrowLeft`?r=(n-1+j.length)%j.length:t.key===`ArrowRight`?r=(n+1)%j.length:t.key===`Home`?r=0:t.key===`End`&&(r=j.length-1),r!==null&&(t.preventDefault(),o(j[r]))};return(0,W.jsx)(`div`,{className:`page-tabs`,role:`tablist`,"aria-label":i(`models.tabsLabel`),children:j.map(t=>{let n=t===e,c=r?.[t];return(0,W.jsxs)(`button`,{ref:e=>{e?a.current.set(t,e):a.current.delete(t)},type:`button`,role:`tab`,id:ae(t),"aria-selected":n,"aria-controls":E(t),tabIndex:n?0:-1,className:`page-tab${n?` page-tab--active`:``}`,onClick:()=>o(t),onKeyDown:s,children:[i(mr[t]),c?(0,W.jsx)(`span`,{className:`section-tab-meta`,children:c}):null]},t)})})}function gr(e,t){let n=new Map;for(let t of e){let e=n.get(t.provider);e?e.push(t):n.set(t.provider,[t])}let r=new Map(t.map(e=>[e.name,e]));for(let e of t){if(e.disabled===!0){n.delete(e.name);continue}e.authMode!==`forward`&&(n.has(e.name)||n.set(e.name,[]))}return[...n.entries()].map(([e,t])=>{let n=r.get(e);return{provider:e,rows:t,native:t.length>0&&t.every(e=>e.native===!0),nativeProviderGroup:t.some(e=>e.native===!0),liveModels:n?.liveModels!==!1,configuredModels:n?.models??[],contextWindow:n?.contextWindow,modelContextWindows:n?.modelContextWindows,discovery:n?.discovery}}).sort((e,t)=>e.nativeProviderGroup===t.nativeProviderGroup?e.provider.localeCompare(t.provider):e.nativeProviderGroup?-1:1)}function _r(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function vr(e){if(!Array.isArray(e)||e.some(e=>typeof e!=`string`))throw Error(`invalid model list`);return[...new Set(e)]}function yr(e){if(!_r(e))throw Error(`invalid selected models response`);let t=e.selected;if(!_r(t))throw Error(`invalid selected models response`);return Object.fromEntries(Object.entries(t).map(([e,t])=>[e,vr(t)]))}async function br(e,t=fetch,n){let r=await t(`${e}/api/selected-models`,n?{signal:n}:void 0);if(!r.ok)throw Error(`selected models HTTP ${r.status}`);return yr(await r.json())}function xr(e,t,n,r=!1){if(r)return!0;let i=e[t];return!i||i.length===0||i.includes(n)}function Sr(e,t,n,r,i){return xr(e,t,n,r)&&!i}async function Cr(e,t,n,r,i,a=fetch){return a(`${e}/api/model-visibility`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({scope:t,provider:n,targets:r,enabled:i})})}function wr(e,t){return e===t}function Tr(e,t){switch(t.reason){case`http`:return e(`models.discoveryFailedHttp`,{status:t.httpStatus});case`blocked`:return e(`models.discoveryFailedBlocked`);case`invalid_response`:return e(`models.discoveryFailedInvalidResponse`);case`network`:return e(`models.discoveryFailedNetwork`);case`provider`:return e(`models.discoveryFailedProvider`);default:return e(`models.discoveryFailedGeneric`)}}var Er=[`none`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`],Dr=Array.from({length:18},(e,t)=>1e5+t*5e4),Or=new Set(Dr),kr=272e3,Ar=922e3,jr=[kr,372e3,Ar],Mr=new Set(jr),Nr=`custom`,Pr=[4,8,16,32,64,128,256,500,1e3],Fr=new Set(Pr),Ir=`ocx-models-collapsed:v2`;function $(e){return!Number.isFinite(e)||e<=0?String(e):e%1e3==0?e>=1e6?Number((e/1e6).toFixed(2))+`M`:`${e/1e3}k`:e.toLocaleString()}function Lr(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?e:void 0}function Rr(e){return e===`live`||e===`registry`||e===`snapshot`||e===`derived`}function zr(e){let t=Lr(e.contextWindow);if(t!==void 0&&e.metadataSource!==`unknown`){if(t===128e3){if(Rr(e.metadataSource)||e.native===!0)return t;if(e.metadataSource===void 0||e.metadataSource===`config_fallback`)return}return t}}function Br(e){switch(e.metadataSource){case`live`:return`models.contextMetadataLive`;case`registry`:return e.provider===`cursor`?`models.contextMetadataCursorStatic`:`models.contextMetadataRegistry`;case`snapshot`:return`models.contextMetadataSnapshot`;case`config_fallback`:return`models.contextMetadataFallback`;case`derived`:return`models.contextMetadataDerived`;default:return}}function Vr(e,t,n=Date.now()){if(!e)return t(`time.notChecked`);let r=Date.parse(e);if(!Number.isFinite(r))return t(`time.notChecked`);let i=Math.max(0,n-r),a=Math.floor(i/864e5);if(a===1)return t(`models.contextYesterday`);if(a>=2)return t(`time.daysAgo`,{n:a});let o=Math.floor(i/36e5);if(o>=1)return t(`time.hoursAgo`,{n:o});let s=Math.floor(i/6e4);return s>=1?t(`time.minutesAgo`,{n:s}):t(`time.justNow`)}function Hr(e,t,n=Date.now()){let r=e.contextCapped===!0?Lr(e.contextCap):void 0,i=Lr(e.detectedContextWindow);if(r!==void 0&&i!==void 0&&i>r)return t(`models.contextTooltipCapped`,{detected:$(i),cap:$(r)});let a=zr(e);if(a===void 0)return e.metadataSource===`unknown`||Lr(e.contextWindow)===128e3?t(`models.contextTooltipUnknown`):void 0;if(r!==void 0)return t(`models.contextTooltipCapped`,{detected:$(i??a),cap:$(r)});if(e.metadataStale===!0)return t(`models.contextTooltipStale`,{value:$(a),when:t(`models.contextLastChecked`,{when:Vr(e.metadataObservedAt,t,n)})});if(e.metadataSource===`live`)return t(`models.contextTooltipDetected`,{value:$(a)});let o=Br(e);return o?t(`models.contextTooltipSource`,{value:$(a),source:t(o)}):$(a)}function Ur(e){let t=new Set;for(let n of e)n.disabled&&t.add(n.namespaced);return t}function Wr(e,t,n,r){let i=[];for(let a of e){let e=t.has(a.id)||t.has(a.namespaced);Sr(n,a.provider,a.id,a.native===!0,e)&&i.push({value:a.namespaced,label:r?b(a.namespaced,r):a.namespaced})}return i}function Gr(e=localStorage){try{let t=e.getItem(Ir);if(t===null)return null;let n=JSON.parse(t);return Array.isArray(n)?new Set(n.filter(e=>typeof e==`string`)):null}catch{return null}}function Kr(e,t=localStorage){try{t.setItem(Ir,JSON.stringify([...e]))}catch{}}function qr({liveModels:e,discovery:n,showFailureBadge:r=!0}){let i=t(),a=e&&n?.status===`failed`?n:void 0;return(0,W.jsxs)(`div`,{className:`row muted text-label leading-body`,role:`status`,style:{alignItems:`flex-start`,gap:8,padding:`6px 0`},children:[(0,W.jsx)(fe,{width:15,height:15,"aria-hidden":`true`,style:{flexShrink:0,marginTop:2}}),(0,W.jsxs)(`span`,{children:[a&&r&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`badge badge-amber`,children:i(`models.discoveryFailedBadge`)}),` `]}),a?`${Tr(i,a)} `:`${i(e?`models.emptyDiscovery`:`models.emptyDiscoveryDisabled`)} `,(0,W.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:()=>c(`providers`),children:i(`models.openProviderSettings`)})]})]})}var Jr={catalog:`models.subtitle`,combos:`models.subtitle.combos`,routing:`models.subtitle.routing`,compatibility:`models.subtitle.compatibility`};function Yr(e){let t=e.replace(/[_,\s]/g,``);if(!t)return null;let n=Number(t);return Number.isSafeInteger(n)&&n>0?n:void 0}function Xr({apiBase:e,restartEpoch:n=0}){let[r,i]=(0,P.useState)(null),a=(0,P.useRef)(!0);(0,P.useEffect)(()=>(a.current=!0,()=>{a.current=!1}),[]);let o=(0,P.useCallback)(t=>{we(e,{signal:t}).then(e=>{t?.aborted||!a.current||i(e.state)})},[e]),{restarting:c,restart:f}=ie(e,{onSettled:()=>o()});(0,P.useEffect)(()=>{let e=new AbortController;return o(e.signal),()=>e.abort()},[o,n]);let[C,k]=(0,P.useState)(ue),[A,j]=(0,P.useState)(()=>new Set([ue()])),N=(0,P.useCallback)(e=>{k(e),j(t=>t.has(e)?t:new Set([...t,e]))},[]);(0,P.useEffect)(()=>{let e=()=>N(ue());return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[N]);let re=(0,P.useCallback)(e=>{O(e),N(e)},[N]),se=C===`catalog`,[le,he]=(0,P.useState)(null),[ve,Se]=(0,P.useState)(null),[Ce,Te]=(0,P.useState)(null),F=t(),Ee=`ocx.models.catalog.v1:${e}`,I=(0,P.useMemo)(()=>oe(Ee),[Ee]),[L,De]=(0,P.useState)(()=>I?.models??[]),[Oe,ke]=(0,P.useState)(()=>I?.providers??[]),[Ae,je]=(0,P.useState)(()=>new Set(I?.disabled??[])),[Me,Ne]=(0,P.useState)(()=>I?.selectedModels??null),[Pe,Fe]=(0,P.useState)({}),[Ie,Le]=(0,P.useState)({}),[Re,ze]=(0,P.useState)(()=>I?.contextCaps??{}),[R,Be]=(0,P.useState)(()=>I?.contextCapValue??35e4),[Ve,He]=(0,P.useState)(``),[Ue,We]=(0,P.useState)(!1),[z,Ge]=(0,P.useState)({}),[Ke,qe]=(0,P.useState)({}),Je=Gr(),[Ye,Xe]=(0,P.useState)(()=>Je??new Set),Ze=(0,P.useRef)(Je===null),[Qe,B]=(0,P.useState)(``),[$e,V]=(0,P.useState)(!1),[et,tt]=(0,P.useState)(0),H=(e,t)=>{V(e),B(t),tt(e=>e+1)};(0,P.useEffect)(()=>{if(!Qe)return;let e=setTimeout(()=>B(``),$e?6e3:8e3);return()=>clearTimeout(e)},[Qe,$e,et]);let[U,nt]=(0,P.useState)(!1),rt=(0,P.useRef)(!1),it=(0,P.useRef)(0),at=(0,P.useRef)(!1),[G,ot]=(0,P.useState)(null),[st,ct]=(0,P.useState)({}),[lt,ut]=(0,P.useState)(null),[K,dt]=(0,P.useState)({providers:{},models:{},defaults:{global:!1,providers:{}}}),[ft,pt]=(0,P.useState)(!1),[mt,ht]=(0,P.useState)(null),[gt,_t]=(0,P.useState)(!0),[vt,yt]=(0,P.useState)(!1),[xt,St]=(0,P.useState)(``),Ct=(0,P.useRef)(!1),[wt,Tt]=(0,P.useState)(``),[Et,Dt]=(0,P.useState)(!1),[Ot,kt]=(0,P.useState)(!1),At=(0,P.useRef)(null),jt=M(Ot,At),[Mt,q]=(0,P.useState)(!1),Nt=(0,P.useRef)(null),Pt=M(Mt,Nt),Ft=(0,P.useCallback)(async t=>{let n=await fetch(`${e}/api/aliases`,{signal:t}),r=await g(n);r&&!t?.aborted&&dt(r)},[e]),It=async t=>{let n=window.prompt(F(`models.aliasPrompt`),K.providers[t]??``);if(n!==null){if(!(await fetch(`${e}/api/providers/${encodeURIComponent(t)}/alias`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({alias:n.trim()||null})})).ok){H(!1,F(`models.aliasConflict`));return}await Ft(),H(!0,F(`models.aliasSaved`))}},Lt=async(t,n)=>{let r=K.models[t]?.[n]?.alias??``,i=window.prompt(F(`models.modelAliasPrompt`),r);if(i===null)return;let a=i.trim()?{set:{[n]:i.trim()}}:{remove:[n]};if(!(await fetch(`${e}/api/providers/${encodeURIComponent(t)}/model-aliases`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(a)})).ok){H(!1,F(`models.aliasConflict`));return}await Ft(),H(!0,F(`models.aliasSaved`))},Rt=async(t,n)=>{(await fetch(`${e}/api/default-aliases`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({enabled:t,...n?{provider:n}:{}})})).ok&&await Ft()},[zt,Bt]=(0,P.useState)(`add`),[Vt,Ht]=(0,P.useState)(``),[Ut,Wt]=(0,P.useState)(``),[Gt,Kt]=(0,P.useState)(``),[qt,Jt]=(0,P.useState)(``),[Yt,Xt]=(0,P.useState)(``),[Zt,Qt]=(0,P.useState)(!1),[$t,en]=(0,P.useState)([`text`]),[tn,nn]=(0,P.useState)(!1),[rn,on]=(0,P.useState)([]),sn=(0,P.useRef)(!1),[J,cn]=(0,P.useState)(!1),[Y,ln]=(0,P.useState)(``),[un,dn]=(0,P.useState)(null),[fn,pn]=(0,P.useState)([]),[mn,hn]=(0,P.useState)(``),[gn,_n]=(0,P.useState)(``),[vn,yn]=(0,P.useState)({}),[bn,xn]=(0,P.useState)({contextWindow:null,modelContextWindows:{}}),[Sn,Cn]=(0,P.useState)(new Set),[wn,Tn]=(0,P.useState)(!1),[X,En]=(0,P.useState)(!1),[Dn,On]=(0,P.useState)(``),kn=(0,P.useRef)(null),An=M(un!==null,kn),[jn,Mn]=(0,P.useState)(null),Nn=(0,P.useRef)(null),[Z,Pn]=(0,P.useState)(null),[Fn,In]=(0,P.useState)(!1),[Ln,Rn]=(0,P.useState)(null);(0,P.useEffect)(()=>()=>{Nn.current&&clearTimeout(Nn.current)},[]);let zn=(0,P.useMemo)(()=>Wr(L,Ae,Me??{},F),[L,Ae,Me,F]),Bn=(0,P.useMemo)(()=>{let e=new Set(zn.map(e=>e.value));return s(L.filter(t=>e.has(t.namespaced)),Z?.model)},[L,Z?.model,zn]),Vn=(0,P.useCallback)(async()=>{let t=pe(15e3);try{let n=await fetch(`${e}/api/shadow-call-settings`,{signal:t.signal}),r=await g(n);r&&Pn(r)}catch{}finally{t.clear()}},[e]),Hn=(0,P.useCallback)(async()=>{if(Ct.current)return;let t=pe(15e3);try{let n=await fetch(`${e}/api/v2`,{signal:t.signal});if(!(n.headers.get(`content-type`)??``).includes(`application/json`)){ot(null);return}let r=await g(n);if(!r||typeof r.enabled!=`boolean`){ot(null);return}ot({enabled:r.enabled,agentsMaxThreadsConflict:r.agentsMaxThreadsConflict===!0,maxConcurrentThreadsPerSession:typeof r.maxConcurrentThreadsPerSession==`number`?r.maxConcurrentThreadsPerSession:null,multiAgentMode:r.multiAgentMode===`v1`||r.multiAgentMode===`v2`?r.multiAgentMode:`default`,keepNativeChatGptOnV1:r.keepNativeChatGptOnV1===!0})}catch{ot(null)}finally{t.clear(),_t(!1)}},[e]),Un=(0,P.useCallback)(async t=>{let[n,r,i,a]=await Promise.all([fetch(`${e}/api/models`,{signal:t}),fetch(`${e}/api/provider-context-caps`,{signal:t}),fetch(`${e}/api/providers`,{signal:t}),br(e,fetch,t)]),[o,s,c]=await Promise.all([_(n),_(r),_(i)]);if(o===void 0||s===void 0||c===void 0)throw Error(`models payload missing`);if(t.aborted)throw Error(`models request aborted`);let l=Ur(o),u=typeof s.value==`number`&&Number.isFinite(s.value)&&s.value>0?s.value:typeof s.cap==`number`&&Number.isFinite(s.cap)&&s.cap>0?s.cap:void 0,d=u===void 0?35e4:u,f={models:o,providers:c,selectedModels:a,disabled:[...l],contextCaps:s.caps??{},contextCapValue:d};return te(Ee,f),f},[e,Ee]),Wn=(0,P.useCallback)(e=>{let t=gr(e.models,e.providers);Rn(e=>e!==null&&!t.some(t=>t.provider===e)?null:e),De(e.models),ke(e.providers),je(new Set(e.disabled)),Ne(e.selectedModels),Be(e.contextCapValue),ze(e.contextCaps)},[]),Gn=_e(Ee,[e],async e=>{let t=await Un(e);if(e.aborted)throw Error(`models request aborted`);return Wn(t),t},{isEmpty:()=>!1,pollMs:1e4,initialData:I??void 0,enabled:se,deadlineMs:6e4}),Kn=Gn.state,qn=(0,P.useCallback)(async(e=!1)=>{if(at.current&&!e)return!1;at.current=!0;let t=++it.current;try{let e=await Un(new AbortController().signal);return wr(t,it.current)?(Wn(e),D(Ee,e),!0):!1}catch{return!1}finally{wr(t,it.current)&&(at.current=!1)}},[Wn,Ee,Un]),Jn=(0,P.useCallback)(async()=>{try{let t=pe(15e3),n=await fetch(`${e}/api/model-presets`,{signal:t.signal}),r=await g(n);ct(r?.providers??{})}catch{ct({})}},[e]),Yn=(0,P.useCallback)(async()=>{try{let t=await fetch(`${e}/api/model-discovery`);ut(await g(t)??null)}catch{ut(null)}},[e]);(0,P.useEffect)(()=>{if(!se)return;let e=window.setTimeout(()=>{Vn(),Hn(),Ft(),Jn(),Yn()},0),t=T(()=>{Ct.current||Hn()},1e4);return()=>{window.clearTimeout(e),t()}},[se,Yn,Jn,Vn,Hn,Ft]);let Q=(0,P.useMemo)(()=>gr(L,Oe),[L,Oe]),Xn=L.length>0||Kn.data!==void 0,Zn=(e,t)=>{kn.current=t;let n=[...new Set([...e.rows.map(e=>e.id),...e.configuredModels,...Object.keys(e.modelContextWindows??{})])].sort(),r=n[0]??``;dn(e.provider),pn(n),hn(r);let i=e.contextWindow?String(e.contextWindow):``,a=Object.fromEntries(Object.entries(e.modelContextWindows??{}).map(([e,t])=>[e,String(t)]));_n(i),yn(a),xn({contextWindow:e.contextWindow??null,modelContextWindows:Object.fromEntries(Object.entries(e.modelContextWindows??{}).map(([e,t])=>[e,t]))}),Cn(new Set),Tn(!1),On(``)},Qn=e=>{hn(e)},$n=async()=>{if(!un)return;let t=Yr(gn);if(!Q.find(e=>e.provider===un)){On(F(`models.contextSaveFailed`));return}if(wn&&t===void 0){On(F(`models.contextInvalid`));return}let n={};for(let e of Sn){let t=Yr(vn[e]??``);if(t===void 0){On(F(`models.contextInvalid`));return}t!==(bn.modelContextWindows[e]??null)&&(n[e]=t)}let r=wn&&t!==bn.contextWindow;if(!r&&Object.keys(n).length===0){dn(null),H(!0,F(`models.contextUnchanged`));return}En(!0),On(``);try{let i={};r&&(i.contextWindow=t),Object.keys(n).length>0&&(i.modelContextWindows=n);let a=await fetch(`${e}/api/providers?name=${encodeURIComponent(un)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(i)});await _(a,F(`models.contextSaveFailed`))}catch(e){On(e instanceof Error?e.message:F(`models.contextSaveFailed`));return}finally{En(!1)}dn(null),H(!0,F(`models.contextSaved`)),await qn(!0)};(0,P.useEffect)(()=>{if(!Ze.current||Q.length===0)return;Ze.current=!1;let e=new Set(Q.map(e=>e.provider));Xe(e),Kr(e)},[Q]);let er=(0,P.useMemo)(()=>Me?L.filter(e=>Sr(Me,e.provider,e.id,e.native===!0,Ae.has(e.namespaced))).length:0,[Ae,L,Me]),tr=(0,P.useMemo)(()=>({catalog:Xn?F(`models.active`,{active:er,total:L.length}):void 0,combos:le===null?void 0:String(le),routing:ve===null?void 0:String(ve),compatibility:Ce===null?void 0:String(Ce)}),[Xn,le,Ce,er,L.length,ve,F]),nr=async(t,n,r,i)=>{++it.current,nt(!0),rt.current=!0,B(``);let a=null;try{(await Cr(e,t,n,r,i)).ok||(a=`models.saveFailed`)}catch{a=`models.networkError`}finally{let e=await qn(!0);a?(V(!1),B(F(a))):e&&(V(!0),B(F(`models.applied`))),nt(!1),rt.current=!1}},rr=async(t,n=!1)=>{nt(!0),rt.current=!0,B(``);let r=Re[t]===void 0;try{let i=await fetch(`${e}/api/provider-context-caps`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(r&&n?{provider:t,enabled:r,value:Ar}:{provider:t,enabled:r})});try{let e=await _(i,F(`models.capSaveFailed`));ze(e?.caps??{}),V(!0),B(F(`models.capApplied`)),await qn(!0)}catch(e){V(!1),B(e instanceof Error?e.message:F(`models.capSaveFailed`))}}catch{V(!1),B(F(`models.networkError`))}finally{nt(!1),rt.current=!1}},ir=e=>{Xe(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),Kr(n),n})},ar=e=>{Xe(()=>{let t=e?new Set(Q.map(e=>e.provider)):new Set;return Kr(t),t})},or=async t=>{nt(!0),rt.current=!0,B(``);try{let n=await fetch(`${e}/api/provider-context-caps`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});try{let e=await _(n,F(`models.capSaveFailed`));typeof e?.value==`number`&&Number.isFinite(e.value)&&e.value>0&&Be(e.value),ze(e?.caps??{}),V(!0),B(F(`models.capApplied`)),await qn(!0)}catch(e){V(!1),B(e instanceof Error?e.message:F(`models.capSaveFailed`))}}catch{V(!1),B(F(`models.networkError`))}finally{nt(!1),rt.current=!1}},sr=(0,P.useMemo)(()=>{let e=Q.filter(e=>!e.native);return e.length>0&&e.every(e=>Re[e.provider]===R)&&Object.keys(Re).every(e=>Re[e]===R)},[Q,Re,R]),cr=e=>{!Number.isSafeInteger(e)||e<=0||or(sr?{value:e,setAll:!0}:{value:e})},lr=(e,t)=>{if(t===`custom`){Ge(t=>({...t,[e]:!0})),qe(t=>({...t,[e]:String(Re[e]??R)}));return}Ge(t=>({...t,[e]:!1}));let n=Number(t);Number.isSafeInteger(n)&&n>0&&n!==Re[e]&&or({provider:e,enabled:!0,value:n})},ur=e=>{let t=Number((Ke[e]??``).replace(/[_,\s]/g,``));if(!Number.isSafeInteger(t)||t<=0){H(!1,F(`models.capSaveFailed`));return}Ge(t=>({...t,[e]:!1})),or({provider:e,enabled:!0,value:t})},dr=e=>{if(e===`custom`){We(!0),He(String(R));return}We(!1);let t=Number(e);Number.isSafeInteger(t)&&t>0&&t!==R&&cr(t)},fr=()=>{let e=Number(Ve.replace(/[_,\s]/g,``));if(!Number.isSafeInteger(e)||e<=0){H(!1,F(`models.capSaveFailed`));return}We(!1),cr(e)},mr=()=>{or({setAll:!sr})},_r=async t=>{if(!(!Z||Fn)){In(!0),Pn({...Z,...t});try{await fetch(`${e}/api/shadow-call-settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)})}finally{In(!1)}}},vr=async t=>{if(!(!G||Ct.current)){yt(!0),Ct.current=!0,St(``),B(``);try{let n=await fetch(`${e}/api/v2`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});try{let e=await _(n,F(`models.saveFailed`));if(!e||typeof e.enabled!=`boolean`){V(!1),B(F(`models.saveFailed`));return}ot({enabled:e.enabled,agentsMaxThreadsConflict:e.agentsMaxThreadsConflict===!0,maxConcurrentThreadsPerSession:typeof e.maxConcurrentThreadsPerSession==`number`?e.maxConcurrentThreadsPerSession:null,multiAgentMode:e.multiAgentMode===`v1`||e.multiAgentMode===`v2`?e.multiAgentMode:`default`,keepNativeChatGptOnV1:e.keepNativeChatGptOnV1===!0}),V(!0),B(F(`models.v2Applied`)),St((e.warnings??[]).join(` `))}catch(e){V(!1),B(e instanceof Error?e.message:F(`models.saveFailed`))}}catch{V(!1),B(F(`models.networkError`))}finally{yt(!1),Ct.current=!1}}},yr=async e=>{!G||G.multiAgentMode===e||await vr({multiAgentMode:e})},xr=async(t,n)=>{let r=await fetch(`${e}/api/model-discovery`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({policy:t,provider:n??null})});await g(r),await Promise.all([Yn(),qn()])},Ir=async(t,n)=>{if(!mt){ht(t);try{let r=pe(3e4),i=await fetch(`${e}/api/model-presets`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({provider:t,mode:n}),signal:r.signal}),a=await g(i)??{};a.fallback===`preset-empty`?H(!1,F(`models.presetEmpty`,{provider:t})):H(!0,n===`all`?F(`models.presetClearedToast`,{provider:t}):F(`models.presetAppliedToast`,{provider:t,count:String(a.selected?.length??0)})),await Promise.all([Jn(),qn()])}catch(e){H(!1,e instanceof Error?e.message:String(e))}finally{ht(null)}}},Lr=async e=>{!G||G.keepNativeChatGptOnV1===e||await vr({keepNativeChatGptOnV1:e})},Rr=async t=>{if(!(!G||Ct.current)){if(!Number.isInteger(t)||t<1){H(!1,F(`models.v2ThreadsInvalid`));return}if(G.maxConcurrentThreadsPerSession!==t){yt(!0),Ct.current=!0,St(``),B(``);try{let n=await fetch(`${e}/api/v2`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({maxConcurrentThreadsPerSession:t})});try{let e=await _(n,F(`models.saveFailed`));if(!e||typeof e.enabled!=`boolean`){V(!1),B(F(`models.saveFailed`));return}ot({enabled:e.enabled,agentsMaxThreadsConflict:e.agentsMaxThreadsConflict===!0,maxConcurrentThreadsPerSession:typeof e.maxConcurrentThreadsPerSession==`number`?e.maxConcurrentThreadsPerSession:null,multiAgentMode:e.multiAgentMode===`v1`||e.multiAgentMode===`v2`?e.multiAgentMode:`default`,keepNativeChatGptOnV1:e.keepNativeChatGptOnV1===!0}),V(!0),B(F(`models.v2ThreadsApplied`)),Dt(!1)}catch(e){V(!1),B(e instanceof Error?e.message:F(`models.saveFailed`))}}catch{V(!1),B(F(`models.networkError`))}finally{yt(!1),Ct.current=!1}}}},Vr=e=>{if(e===`custom`){Dt(!0),Tt(String(G?.maxConcurrentThreadsPerSession??``));return}Dt(!1),Rr(Number(e))},Xr=(e,t)=>{Nn.current&&clearTimeout(Nn.current),Nn.current=setTimeout(()=>{Mn({namespaced:e,rect:t.getBoundingClientRect()})},300)},Zr=(e,t)=>{Nn.current&&clearTimeout(Nn.current),Mn({namespaced:e,rect:t.getBoundingClientRect()})},Qr=()=>{Nn.current&&clearTimeout(Nn.current),Nn.current=setTimeout(()=>Mn(null),120)},$r=async(t,n,r,i,a,o)=>{cn(!0),ln(``);try{let s=await fetch(`${e}/api/custom-models`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:t,modelId:n,displayName:r,contextWindow:i,inputModalities:a,reasoningEfforts:o})});try{await _(s,F(`models.customSaveFailed`)),q(!1),H(!0,F(`models.customAdded`)),await qn(!0)}catch(e){ln(e instanceof Error?e.message:F(`models.customSaveFailed`))}}catch{ln(F(`models.networkError`))}finally{cn(!1)}},ei=async(t,n)=>{cn(!0),ln(``);try{let r=await fetch(`${e}/api/custom-models/${encodeURIComponent(t)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)});try{await _(r,F(`models.customSaveFailed`)),q(!1),H(!0,F(`models.customUpdated`)),await qn(!0)}catch(e){ln(e instanceof Error?e.message:F(`models.customSaveFailed`))}}catch{ln(F(`models.networkError`))}finally{cn(!1)}},ti=async t=>{try{(await fetch(`${e}/api/custom-models/${encodeURIComponent(t)}`,{method:`DELETE`})).ok?(H(!0,F(`models.customDeleted`)),await qn(!0)):H(!1,F(`models.customSaveFailed`))}catch{H(!1,F(`models.networkError`))}},ni=Kn.data??I,ri=Kn.kind===`failed-cold`?Kn.error instanceof Error?Kn.error.message:F(`models.loadFail`):null,ii=Kn.showSkeleton&&!ni,ai=Me??{},oi=e=>{let{provider:t,rows:n,nativeProviderGroup:r,liveModels:i,discovery:a}=e,o=Ye.has(t),s=e=>Sr(ai,t,e.id,e.native===!0,Ae.has(e.namespaced)),c=n.filter(s).length,u=lt?.recentArrivals[t]??[],d=new Set(u.map(e=>e.id)),f=Re[t]!==void 0,m=Re[t]??R,g=n.reduce((e,t)=>{let n=zr(t);return n===void 0?e:e===void 0||n>e?n:e},void 0),_=f?m:r?kr:g??m,v=e.nativeProviderGroup?jr:Dr,y=e.nativeProviderGroup?Mr:Or,S=i&&a?.status===`failed`?a:void 0,C=(Pe[t]??``).trim().toLowerCase(),T=C?n.filter(e=>e.id.toLowerCase().includes(C)):n,E=T.toSorted((e,t)=>Number(!s(e))-Number(!s(t))),D=Ie[t]??60,O=E.slice(0,D),ee=T.length-O.length,k=n.length>0,A=!k||n.every(s),te=!k||n.every(e=>!s(e)),j=e=>{k&&nr(`provider`,t,n.map(e=>({id:e.id,native:e.native===!0})),e)};return(0,W.jsxs)(`div`,{className:`card models-provider-card`,children:[(0,W.jsxs)(`div`,{className:`row group-head models-provider-head${o?``:` open`}`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`row models-provider-toggle`,onClick:()=>ir(t),"aria-expanded":!o,style:{flex:1,border:0,background:`transparent`,padding:0,color:`inherit`,cursor:`pointer`,textAlign:`left`},children:[(0,W.jsx)(w,{style:{width:14,height:14,color:`var(--muted)`,transform:o?`none`:`rotate(90deg)`,transition:`transform .12s`}}),(0,W.jsx)(`span`,{className:`text-body font-semibold`,style:{whiteSpace:`nowrap`},children:x(t)}),K.providers[t]&&(0,W.jsx)(`span`,{className:`models-chip mono text-caption`,children:K.providers[t]}),r&&(0,W.jsx)(`span`,{className:`models-chip muted mono text-caption`,children:F(`models.nativeGroupLabel`)}),S&&(0,W.jsx)(`span`,{className:`badge badge-amber`,role:`status`,title:Tr(F,S),children:F(`models.discoveryFailedBadge`)}),(0,W.jsx)(`span`,{className:`muted mono text-label`,children:F(`models.active`,{active:c,total:n.length})}),u.length>0&&(0,W.jsx)(`span`,{className:`models-chip mono text-caption`,children:F(`models.newCount`,{count:u.length})})]}),(0,W.jsxs)(`div`,{className:`row models-provider-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":F(`models.editProviderAlias`),title:F(`models.editProviderAlias`),onClick:()=>void It(t),children:(0,W.jsx)(de,{style:{width:14,height:14}})}),(0,W.jsx)(h,{on:K.defaults.providers[t]??K.defaults.global,onClick:()=>void Rt(!(K.defaults.providers[t]??K.defaults.global),t),label:F(`models.useDefaultAliases`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:t=>Zn(e,t.currentTarget),"aria-haspopup":`dialog`,children:F(`models.contextSettings`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:e=>{e.stopPropagation(),Nt.current=e.currentTarget,Bt(`add`),Ht(t),Wt(``),Kt(``),Jt(``),Xt(``),Qt(!1),en([`text`]),nn(!1),on([]),sn.current=!1,ln(``),q(!0)},"aria-label":F(`models.customAdd`),"aria-haspopup":`dialog`,children:`+`}),(()=>{let e=st[t];if(!e)return null;let n=mt===t,r=e.mode===`custom`&&e.appliedVersion!==void 0&&e.appliedVersion<e.availableVersion;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`segmented models-segmented`,role:`radiogroup`,"aria-label":F(`models.presetLabel`),children:[[`preset`,`all`].map(r=>(0,W.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":e.mode===r,className:`btn btn-sm${e.mode===r?` btn-primary`:` btn-ghost`}`,style:{background:e.mode===r?void 0:`transparent`,color:e.mode===r?void 0:`var(--muted)`},disabled:U||n,onClick:n=>{n.stopPropagation(),!(r===`preset`&&e.mode===`custom`&&!confirm(F(`models.presetConfirmReplace`,{count:String(e.presetCount)})))&&Ir(t,r)},children:F(`models.presetMode_${r}`)},r)),e.mode===`custom`&&(0,W.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":!0,className:`btn btn-sm btn-primary`,disabled:!0,children:F(`models.presetMode_custom`)})]}),e.mode===`preset`&&(0,W.jsx)(`span`,{className:`muted mono text-label`,children:F(`models.presetSummary`,{count:String(e.presetCount),total:String(e.totalCount),version:String(e.availableVersion)})}),r&&(0,W.jsx)(`span`,{className:`badge badge-amber`,role:`status`,children:F(`models.presetUpdateAvailable`,{version:String(e.availableVersion)})})]})})(),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,disabled:U||A,onClick:()=>j(!0),children:F(`models.allOn`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,disabled:U||te,onClick:()=>j(!1),children:F(`models.allOff`)}),(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(h,{on:f,onClick:()=>rr(t,r),disabled:U,label:F(`models.capValue`,{value:$(_)})}),(f||r)&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(p,{value:z[t]?`custom`:String(_),options:[...!y.has(_)&&!z[t]?[{value:String(_),label:$(_)}]:[],...v.map(e=>({value:String(e),label:$(e)})),{value:`custom`,label:F(`models.custom`)}],onChange:e=>lr(t,e),disabled:U||!f,label:F(`models.capValue`,{value:$(_)})}),z[t]&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`input`,{className:`input`,style:{width:120},inputMode:`numeric`,placeholder:F(`models.customPlaceholder`),value:Ke[t]??``,onChange:e=>qe(n=>({...n,[t]:e.target.value})),onKeyDown:e=>{e.key===`Enter`&&ur(t)},disabled:U,"aria-label":F(`models.customPlaceholder`)}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>ur(t),disabled:U,className:`btn btn-ghost btn-sm`,children:F(`models.customApply`)})]})]})]})]})]}),!o&&(0,W.jsxs)(`div`,{className:`models-provider-body`,children:[r&&(0,W.jsx)(`p`,{className:`muted text-label models-provider-hint`,children:F(`models.nativeHint`)}),!r&&lt&&(0,W.jsxs)(`div`,{className:`row models-provider-hint`,children:[(0,W.jsx)(`span`,{className:`muted text-label`,children:F(`models.newPolicyProvider`)}),(0,W.jsx)(`div`,{className:`segmented models-segmented`,role:`radiogroup`,"aria-label":F(`models.newPolicyProvider`),children:[`off`,`on`].map(e=>(0,W.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":(lt.providers[t]??`inherit`)===e,className:`btn btn-sm${(lt.providers[t]??`inherit`)===e?` btn-primary`:` btn-ghost`}`,onClick:()=>void xr(e,t),children:F(`models.newPolicy_${e}`)},e))})]}),n.length===0&&(0,W.jsx)(qr,{liveModels:i,discovery:a,showFailureBadge:!1}),n.length>30&&(0,W.jsx)(`input`,{className:`input`,placeholder:F(`models.search`),value:Pe[t]??``,onChange:e=>Fe(n=>({...n,[t]:e.target.value})),"aria-label":F(`models.search`)}),O.map(e=>{let n=!s(e),r=Br(e),i=Hr(e,F);return(0,W.jsxs)(`div`,{className:`model-row-wrap`,onMouseEnter:t=>Xr(e.namespaced,t.currentTarget),onMouseLeave:Qr,onFocus:t=>Zr(e.namespaced,t.currentTarget),onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||Mn(null)},children:[(0,W.jsxs)(`div`,{className:`row models-model-row`,children:[(0,W.jsx)(h,{on:!n,onClick:()=>void nr(`models`,t,[{id:e.id,native:e.native===!0}],n),disabled:U,label:e.native?e.id:e.namespaced}),K.models[t]?.[e.id]&&(0,W.jsx)(`strong`,{className:`mono text-control`,children:K.models[t][e.id].alias}),(0,W.jsx)(`code`,{className:`mono text-control`,style:{color:n?`var(--faint)`:`var(--text)`,textDecoration:n?`line-through`:`none`},children:e.native?be(e.id):b(e.namespaced,F)}),K.models[t]?.[e.id]?.source===`builtin`&&(0,W.jsx)(`span`,{className:`models-chip muted text-caption`,children:F(`models.aliasAuto`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":F(`models.editModelAlias`),title:F(`models.editModelAlias`),onClick:()=>void Lt(t,e.id),children:(0,W.jsx)(de,{style:{width:13,height:13}})}),e.custom&&(0,W.jsx)(`span`,{className:`models-chip muted mono text-caption`,children:F(`models.customBadge`)}),!e.custom&&d.has(e.id)&&(0,W.jsx)(`span`,{className:`badge badge-amber`,children:F(`models.newBadge`)}),e.contextCapped&&(0,W.jsx)(`span`,{className:`models-chip muted mono text-caption`,children:F(`models.contextCappedValue`,{value:$(e.contextCap??R)})}),r&&(0,W.jsx)(`span`,{className:`models-chip muted mono text-caption`,children:F(r)}),e.metadataStale&&(0,W.jsx)(`span`,{className:`models-chip muted mono text-caption`,children:F(`models.contextMetadataStale`)}),e.custom&&e.customId&&(0,W.jsxs)(`span`,{className:`models-model-row-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,"aria-label":F(`models.customEditNamed`,{name:e.displayName??e.id}),onClick:t=>{Nt.current=t.currentTarget,Bt(`edit`),Ht(e.provider),Wt(e.customId),Kt(e.id),Jt(e.displayName??``),Xt(e.contextWindow?String(e.contextWindow):``),Qt(!1),en(e.inputModalities??[`text`]),nn(Array.isArray(e.reasoningEfforts)),on(e.reasoningEfforts??[]),sn.current=Array.isArray(e.reasoningEfforts),ln(``),q(!0),Mn(null)},children:(0,W.jsx)(de,{width:13,height:13,"aria-hidden":`true`})}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,"aria-label":F(`models.customDeleteNamed`,{name:e.displayName??e.id}),style:{color:`var(--red)`},onClick:()=>{window.confirm(F(`models.customDeleteConfirm`,{name:e.displayName??e.id}))&&ti(e.customId),Mn(null)},children:(0,W.jsx)(me,{width:13,height:13,"aria-hidden":`true`})})]})]}),jn?.namespaced===e.namespaced&&(()=>{let t=jn.rect,a=Math.max(0,Math.min(480,window.innerWidth-16)),o=Math.max(8,Math.min(t.left+24,window.innerWidth-a-8)),s=Math.max(8,t.bottom+4),c=Math.max(0,window.innerHeight-s-8),u=Math.max(0,t.top-12),d=c<Math.min(360,u);return(0,W.jsxs)(`div`,{className:`model-tip${d?` flip-up`:``}`,role:`tooltip`,style:{position:`fixed`,left:o,width:`max-content`,minWidth:Math.min(320,a),maxWidth:a,maxHeight:Math.min(360,d?u:c),...d?{bottom:Math.max(8,window.innerHeight-t.top+4)}:{top:s}},children:[(0,W.jsx)(`div`,{className:`model-tip-id`,children:e.native?e.id:e.namespaced}),e.displayName&&(0,W.jsx)(`div`,{className:`model-tip-display`,children:e.displayName}),e.custom&&(0,W.jsx)(`span`,{className:`models-chip models-chip--tip muted mono text-caption`,children:F(`models.customBadge`)}),(0,W.jsxs)(`div`,{className:`model-tip-grid`,children:[(0,W.jsx)(`span`,{className:`model-tip-key`,children:F(`models.tipProvider`)}),(0,W.jsx)(`span`,{className:`model-tip-val`,children:l(e.provider,F)}),i&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`model-tip-key`,children:F(`models.tipContext`)}),(0,W.jsx)(`span`,{className:`model-tip-val`,children:i})]}),r&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`model-tip-key`,children:F(`models.contextMetadataSource`)}),(0,W.jsx)(`span`,{className:`model-tip-val`,children:F(r)})]}),e.inputModalities&&e.inputModalities.length>0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`model-tip-key`,children:F(`models.tipModalities`)}),(0,W.jsx)(`span`,{className:`model-tip-val`,children:e.inputModalities.join(`, `)})]}),(0,W.jsx)(`span`,{className:`model-tip-key`,children:F(`models.tipStatus`)}),(0,W.jsx)(`span`,{className:`model-tip-val`,children:F(n?`models.tipDisabled`:`models.tipActive`)})]})]})})()]},e.namespaced)}),ee>0&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>Le(e=>({...e,[t]:D+60})),className:`btn btn-ghost btn-sm models-show-more`,children:F(`models.showMore`,{n:ee})})]})]},t)},si=Ln?Q.filter(e=>e.provider===Ln):Q,ci=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`models-control-top-row`,children:[lt&&(0,W.jsxs)(`div`,{className:`models-shadow-row row muted text-control`,children:[(0,W.jsx)(`span`,{className:`models-shadow-label`,children:F(`models.newPolicyGlobal`)}),(0,W.jsx)(h,{on:lt.policy===`off`,onClick:()=>void xr(lt.policy===`off`?`on`:`off`),label:F(`models.newPolicyGlobal`)})]}),(0,W.jsxs)(`div`,{className:`row`,children:[(0,W.jsx)(h,{on:K.defaults.global,onClick:()=>void Rt(!K.defaults.global),label:F(`models.useDefaultAliasesGlobal`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>pt(e=>!e),children:F(`models.aliases`)})]}),(0,W.jsxs)(`div`,{className:`models-shadow-row row muted text-control`,"aria-busy":!Z||void 0,children:[(0,W.jsxs)(`span`,{className:`models-shadow-label`,children:[F(`models.shadowCallIntercept`),` `,(0,W.jsx)(ge,{content:F(`models.shadowCallInterceptHint`,{models:v(Z?.sourceModels)}),side:`top`,maxWidth:320,children:(0,W.jsx)(`span`,{style:{cursor:`help`},"aria-label":F(`models.shadowCallInterceptHint`,{models:v(Z?.sourceModels)}),children:`ⓘ`})})]}),(0,W.jsx)(`code`,{className:`text-caption models-shadow-warning`,style:{opacity:.6},children:F(`models.shadowCallOriginal`,{models:u(Z?.sourceModels)})}),(0,W.jsx)(h,{on:Z?.enabled??!1,onClick:()=>void _r({enabled:!Z?.enabled}),disabled:!Z||Fn,label:F(`models.shadowCallIntercept`)}),(0,W.jsx)(`div`,{className:`models-shadow-model-slot`,children:(0,W.jsx)(p,{value:Z?.model??``,options:Bn,onChange:e=>{Pn(t=>t&&{...t,model:e}),_r({model:e})},disabled:!Z||Fn||!Z.enabled,label:F(`models.shadowCallIntercept`)})})]}),(gt||G)&&(0,W.jsxs)(`div`,{className:`models-v2-mode-row row`,children:[(0,W.jsx)(`span`,{className:`muted text-control`,children:F(`models.v2Label`)}),(0,W.jsx)(`div`,{className:`segmented models-segmented`,role:`radiogroup`,"aria-label":F(`models.v2Label`),children:[`v1`,`default`,`v2`].map(e=>(0,W.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":(G?.multiAgentMode??`default`)===e,className:`btn btn-sm${(G?.multiAgentMode??`default`)===e?` btn-primary`:` btn-ghost`}`,style:{background:(G?.multiAgentMode??`default`)===e?void 0:`transparent`,color:(G?.multiAgentMode??`default`)===e?void 0:`var(--muted)`},disabled:!G||vt,onClick:()=>void yr(e),children:F(`models.v2Mode_${e}`)},e))}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,style:{width:24,height:24,minWidth:24,flex:`0 0 24px`,padding:0,borderRadius:`var(--radius-pill)`,color:`var(--muted)`},disabled:!G,onClick:e=>{At.current=e.currentTarget,kt(!0)},"aria-label":F(`models.v2Label`),"aria-haspopup":`dialog`,children:(0,W.jsx)(fe,{width:14,height:14,"aria-hidden":`true`})})]}),G&&G.multiAgentMode===`v2`&&(0,W.jsx)(`div`,{className:`models-v2-keep-native-row`,children:(0,W.jsxs)(`div`,{className:`models-v2-keep-native`,children:[(0,W.jsx)(`span`,{className:`models-v2-keep-native-label text-caption`,children:F(`models.keepNativeOnV1`)}),(0,W.jsx)(h,{on:G.keepNativeChatGptOnV1===!0,onClick:()=>void Lr(!G.keepNativeChatGptOnV1),disabled:vt,label:F(`models.keepNativeOnV1`)}),(0,W.jsx)(ge,{content:F(`models.keepNativeOnV1Hint`),side:`top`,maxWidth:360,children:(0,W.jsx)(`span`,{className:`models-v2-keep-native-info`,"aria-label":F(`models.keepNativeOnV1Hint`),children:(0,W.jsx)(fe,{width:13,height:13,"aria-hidden":`true`})})})]})})]}),G&&(G.enabled||G.agentsMaxThreadsConflict||xt)&&(0,W.jsxs)(`div`,{className:`models-v2-detail-row row`,children:[G.enabled&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`muted text-control`,children:F(`models.v2ThreadsLabel`)}),(0,W.jsx)(p,{value:Et?`custom`:G.maxConcurrentThreadsPerSession!==null&&G.maxConcurrentThreadsPerSession!==void 0?Fr.has(G.maxConcurrentThreadsPerSession)?String(G.maxConcurrentThreadsPerSession):`custom`:``,options:[...G.maxConcurrentThreadsPerSession===null||G.maxConcurrentThreadsPerSession===void 0?[{value:``,label:F(`models.v2ThreadsDefault`)}]:[],...G.maxConcurrentThreadsPerSession!==null&&G.maxConcurrentThreadsPerSession!==void 0&&!Fr.has(G.maxConcurrentThreadsPerSession)&&!Et?[{value:`custom`,label:String(G.maxConcurrentThreadsPerSession)}]:[],...Pr.map(e=>({value:String(e),label:String(e)})),{value:`custom`,label:F(`models.custom`)}],onChange:e=>Vr(e),disabled:vt,label:F(`models.v2ThreadsLabel`)}),Et&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`input`,{className:`input`,style:{width:100},inputMode:`numeric`,value:wt,onChange:e=>Tt(e.target.value),onKeyDown:e=>{e.key===`Enter`&&Rr(Number(wt.replace(/[_,\s]/g,``)))},disabled:vt,"aria-label":F(`models.v2ThreadsLabel`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:vt,onClick:()=>{Rr(Number(wt.replace(/[_,\s]/g,``)))},children:F(`models.v2ThreadsApply`)})]})]}),G.enabled&&G.agentsMaxThreadsConflict&&(0,W.jsx)(`span`,{className:`mono text-label`,style:{color:`var(--err, #e5484d)`},children:F(`models.v2Conflict`)}),xt&&(0,W.jsx)(`span`,{className:`muted text-label`,children:xt})]}),(0,W.jsxs)(`div`,{className:`row models-cap-row`,children:[(0,W.jsx)(`span`,{className:`muted text-control`,children:F(`models.contextCapLabel`)}),(0,W.jsx)(p,{value:Ue?Nr:String(R),options:[...!Or.has(R)&&!Ue?[{value:String(R),label:$(R)}]:[],...Dr.map(e=>({value:String(e),label:$(e)})),{value:Nr,label:F(`models.custom`)}],onChange:e=>dr(e),disabled:U,label:F(`models.contextCapLabel`)}),Ue&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`input`,{className:`input`,style:{width:160},inputMode:`numeric`,placeholder:F(`models.customPlaceholder`),value:Ve,onChange:e=>He(e.target.value),onKeyDown:e=>{e.key===`Enter`&&fr()},disabled:U,"aria-label":F(`models.customPlaceholder`)}),(0,W.jsx)(`button`,{type:`button`,onClick:fr,disabled:U,className:`btn btn-ghost btn-sm`,children:F(`models.customApply`)})]}),(0,W.jsx)(h,{on:sr,onClick:mr,disabled:U,label:F(`models.setAll`)}),(0,W.jsx)(`span`,{className:`muted text-label leading-body`,children:F(`models.setAllHint`,{value:$(R)})})]}),(()=>{let e=L.filter(e=>e.custom).length;return e===0?null:(0,W.jsx)(`div`,{className:`row muted text-label models-custom-summary`,children:(0,W.jsx)(`span`,{className:`models-chip mono text-caption`,children:F(`models.customSummary`,{count:e})})})})(),(0,W.jsxs)(`div`,{className:`row muted text-label leading-body models-order-hint`,children:[(0,W.jsx)(fe,{width:15,height:15,"aria-hidden":`true`}),(0,W.jsx)(`span`,{children:F(`models.orderHint`)})]})]}),li=(0,W.jsxs)(`div`,{className:`row models-collapse-controls`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:()=>ar(!0),disabled:U,children:[(0,W.jsx)(w,{width:12,height:12,"aria-hidden":`true`}),` `,F(`models.collapseAll`)]}),(0,W.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:()=>ar(!1),disabled:U,children:[(0,W.jsx)(w,{width:12,height:12,"aria-hidden":`true`,style:{transform:`rotate(90deg)`}}),` `,F(`models.expandAll`)]})]}),ui=(0,W.jsx)(W.Fragment,{children:Q.length===0&&(0,W.jsx)(y,{icon:(0,W.jsx)(ce,{}),title:F(`models.noRouted`),children:F(`models.noRoutedHint`)})}),di=(0,W.jsxs)(W.Fragment,{children:[Ot&&(0,W.jsxs)(`dialog`,{ref:jt,className:`modal-overlay`,"aria-labelledby":`models-v2-help-title`,onCancel:e=>{e.preventDefault(),kt(!1)},children:[(0,W.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":F(`common.close`),tabIndex:-1,onClick:()=>kt(!1)}),(0,W.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`div`,{className:`modal-head`,children:[(0,W.jsx)(`h3`,{id:`models-v2-help-title`,children:F(`models.v2Label`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>kt(!1),"aria-label":F(`common.close`),children:`×`})]}),(0,W.jsx)(`div`,{className:`modal-desc leading-relaxed`,style:{whiteSpace:`pre-line`},children:F(`models.v2Help`)}),(0,W.jsx)(`div`,{className:`models-help-link`,children:(0,W.jsx)(`a`,{className:`text-control`,href:`https://opencodex.me/guides/sub-agent-surface/`,target:`_blank`,rel:`noreferrer`,style:{color:`var(--accent)`},children:F(`models.v2DocsLink`)})}),(0,W.jsx)(`div`,{className:`modal-actions`,children:(0,W.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>kt(!1),children:F(`common.ok`)})})]})]}),un&&(0,W.jsxs)(`dialog`,{ref:An,className:`modal-overlay`,"aria-labelledby":`models-context-dialog-title`,onCancel:e=>{e.preventDefault(),X||dn(null)},children:[(0,W.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":F(`common.close`),tabIndex:-1,disabled:X,onClick:()=>dn(null)}),(0,W.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`div`,{className:`modal-head`,children:[(0,W.jsx)(`h3`,{id:`models-context-dialog-title`,children:F(`models.contextSettingsTitle`,{provider:l(un,F)})}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>dn(null),disabled:X,"aria-label":F(`common.close`),children:`×`})]}),Dn&&(0,W.jsx)(d,{tone:`err`,children:Dn}),(0,W.jsx)(`p`,{className:`modal-desc leading-relaxed`,children:F(`models.contextHint`)}),(0,W.jsxs)(`div`,{className:`models-context-fields`,children:[(0,W.jsxs)(`label`,{className:`text-label models-field`,children:[F(`models.contextDefault`),(0,W.jsx)(`input`,{className:`input`,inputMode:`numeric`,value:gn,onChange:e=>{_n(e.target.value),Tn(!0)},disabled:X,placeholder:F(`models.contextAutomatic`),autoFocus:!0})]}),fn.length>0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`text-label models-field`,children:[F(`models.contextModel`),(0,W.jsx)(p,{value:mn,options:fn.map(e=>({value:e,label:e})),onChange:Qn,disabled:X,label:F(`models.contextModel`)})]}),(0,W.jsxs)(`label`,{className:`text-label models-field`,children:[F(`models.contextModelOverride`),(0,W.jsx)(`input`,{className:`input`,inputMode:`numeric`,value:vn[mn]??``,onChange:e=>{yn(t=>({...t,[mn]:e.target.value})),Cn(e=>new Set(e).add(mn))},disabled:X,placeholder:F(`models.contextAutomatic`)})]})]})]}),(0,W.jsxs)(`div`,{className:`modal-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>dn(null),disabled:X,children:F(`common.cancel`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>void $n(),disabled:X,children:F(X?`models.customSaving`:`models.customApply`)})]})]})]}),Mt&&(0,W.jsxs)(`dialog`,{ref:Pt,className:`modal-overlay`,"aria-labelledby":`models-custom-dialog-title`,onCancel:e=>{e.preventDefault(),J||q(!1)},children:[(0,W.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":F(`common.close`),tabIndex:-1,disabled:J,onClick:()=>q(!1)}),(0,W.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`div`,{className:`modal-head`,children:[(0,W.jsx)(`h3`,{id:`models-custom-dialog-title`,children:F(zt===`add`?`models.customAddTitle`:`models.customEditTitle`,{provider:l(Vt,F)})}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>q(!1),disabled:J,"aria-label":F(`common.close`),children:`×`})]}),Y&&(0,W.jsx)(d,{tone:`err`,children:Y}),(0,W.jsxs)(`div`,{className:`models-field-stack`,children:[(0,W.jsxs)(`label`,{className:`text-label models-field`,children:[F(`models.customFieldModelId`),(0,W.jsx)(`input`,{className:`input`,value:Gt,onChange:e=>Kt(e.target.value),disabled:J,placeholder:F(`models.customFieldModelIdPlaceholder`),autoFocus:!0})]}),(0,W.jsxs)(`label`,{className:`text-label models-field`,children:[F(`models.customFieldDisplayName`),(0,W.jsx)(`input`,{className:`input`,value:qt,onChange:e=>Jt(e.target.value),disabled:J,placeholder:F(`models.customFieldDisplayNamePlaceholder`)})]}),(0,W.jsxs)(`label`,{className:`text-label models-field`,children:[F(`models.customFieldContext`),(0,W.jsxs)(`div`,{className:`row models-field-row`,children:[(0,W.jsx)(p,{value:Zt?`custom`:Yt,options:[{value:``,label:`—`},{value:`100000`,label:`100k`},{value:`128000`,label:`128k`},{value:`200000`,label:`200k`},{value:`256000`,label:`256k`},{value:`352000`,label:`352k`},{value:`500000`,label:`500k`},{value:`1000000`,label:`1M`},{value:`custom`,label:F(`models.custom`)}],onChange:e=>{if(e===`custom`){Qt(!0);return}Qt(!1),Xt(e)},disabled:J,label:F(`models.customFieldContext`)}),Zt&&(0,W.jsx)(`input`,{className:`input`,style:{width:120},inputMode:`numeric`,value:Yt,onChange:e=>Xt(e.target.value),disabled:J,placeholder:F(`models.customPlaceholder`),"aria-label":F(`models.customFieldContext`)})]})]}),(0,W.jsxs)(`div`,{className:`text-label models-field`,children:[F(`models.customFieldModalities`),(0,W.jsx)(`div`,{className:`row models-field-row`,children:[`text`,`image`,`audio`].map(e=>(0,W.jsxs)(`label`,{className:`row models-modality-option`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:$t.includes(e),onChange:t=>{en(n=>t.target.checked?[...n,e]:n.filter(t=>t!==e))},disabled:J}),(0,W.jsx)(`span`,{className:`text-control`,children:e})]},e))})]}),(0,W.jsxs)(`div`,{className:`text-label models-field`,children:[F(`models.customFieldReasoning`),(0,W.jsx)(`div`,{className:`row models-field-row`,children:(0,W.jsxs)(`label`,{className:`row models-modality-option`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:tn,onChange:e=>{if(nn(e.target.checked),e.target.checked&&!sn.current){sn.current=!0;let e=L.find(e=>e.provider===Vt&&e.id===Gt),t=Array.isArray(e?.reasoningEfforts)?e.reasoningEfforts:void 0;on(t??[...Er])}},disabled:J}),(0,W.jsx)(`span`,{className:`text-control`,children:F(`models.customFieldReasoningOverride`)})]})}),tn&&(0,W.jsx)(`div`,{className:`row models-field-row`,style:{flexWrap:`wrap`},children:Er.map(e=>(0,W.jsxs)(`label`,{className:`row models-modality-option`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:rn.includes(e),onChange:t=>{on(n=>t.target.checked?[...n,e]:n.filter(t=>t!==e))},disabled:J}),(0,W.jsx)(`span`,{className:`text-control`,children:F(`models.reasoningEffort.${e}`)})]},e))})]})]}),(0,W.jsxs)(`div`,{className:`modal-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>q(!1),disabled:J,children:F(`common.cancel`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:J||!Gt.trim(),onClick:()=>{let e=Gt.trim(),t=qt.trim(),n=Yt?Number(Yt.replace(/[_,\s]/g,``)):void 0,r=n&&n>0?Math.floor(n):void 0;if(zt===`add`){let n=tn?rn:void 0;$r(Vt,e,t||void 0,r,$t.length>0?$t:void 0,n)}else ei(Ut,{modelId:e,displayName:t,contextWindow:r??null,inputModalities:$t,reasoningEfforts:tn?rn:null})},children:F(J?`models.customSaving`:zt===`add`?`models.customAddBtn`:`models.customEditBtn`)})]})]})]})]}),fi=(0,W.jsxs)(`div`,{className:`models-workspace-shell`,children:[Qe&&(0,W.jsxs)(`div`,{className:`action-toast notice ${$e?`notice-ok`:`notice-err`}`,role:`status`,"aria-live":`polite`,children:[$e?(0,W.jsx)(m,{}):(0,W.jsx)(S,{}),(0,W.jsx)(`span`,{children:Qe})]}),Kn.showError&&(0,W.jsx)(d,{tone:`err`,children:F(`models.loadFail`)}),(0,W.jsxs)(`div`,{className:`models-workspace-root`,"aria-busy":Kn.refreshing||void 0,children:[(0,W.jsxs)(`aside`,{className:`models-workspace-rail`,"aria-label":F(`nav.models`),children:[(0,W.jsxs)(`div`,{className:`models-workspace-rail-header`,children:[(0,W.jsx)(`span`,{className:`models-workspace-rail-title`,children:F(`models.workspace.providers`)}),(0,W.jsx)(`span`,{className:`models-workspace-rail-count`,children:Q.length})]}),(0,W.jsxs)(`div`,{className:`models-workspace-rail-list`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`models-workspace-rail-row${Ln===null?` models-workspace-rail-row--selected`:``}`,onClick:()=>Rn(null),"aria-current":Ln===null?`true`:void 0,children:[(0,W.jsx)(`span`,{className:`models-workspace-rail-name`,children:F(`models.workspace.allProviders`)}),(0,W.jsx)(`span`,{className:`models-workspace-rail-meta`,children:F(`models.active`,{active:er,total:L.length})})]}),Q.map(e=>{let{provider:t,rows:n}=e,r=n.filter(e=>Sr(ai,t,e.id,e.native===!0,Ae.has(e.namespaced))).length;return(0,W.jsxs)(`button`,{type:`button`,className:`models-workspace-rail-row${Ln===t?` models-workspace-rail-row--selected`:``}`,onClick:()=>Rn(t),"aria-current":Ln===t?`true`:void 0,children:[(0,W.jsx)(`span`,{className:`models-workspace-rail-name`,children:l(t,F)}),(0,W.jsx)(`span`,{className:`models-workspace-rail-meta`,children:F(`models.active`,{active:r,total:n.length})})]},t)})]})]}),(0,W.jsxs)(`section`,{className:`models-workspace-main`,"aria-label":F(`models.workspace.mainAria`),children:[ci,li,ft&&(0,W.jsxs)(`div`,{className:`card`,"aria-label":F(`models.aliasesTable`),children:[(0,W.jsx)(`div`,{className:`row group-head`,children:(0,W.jsx)(`strong`,{children:F(`models.aliases`)})}),Object.entries(K.models).flatMap(([e,t])=>Object.entries(t).map(([t,n])=>(0,W.jsxs)(`div`,{className:`row models-model-row`,children:[(0,W.jsxs)(`code`,{className:`mono text-caption`,style:{flex:1},children:[e,`/`,t]}),(0,W.jsx)(`strong`,{className:`mono text-control`,children:n.alias}),(0,W.jsx)(`span`,{className:`models-chip muted text-caption`,children:n.source===`builtin`?F(`models.aliasAuto`):F(`models.aliasUser`)}),n.stale&&(0,W.jsx)(`span`,{className:`badge badge-amber`,children:F(`models.aliasStale`)}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":F(`models.editModelAlias`),onClick:()=>void Lt(e,t),children:(0,W.jsx)(de,{style:{width:13,height:13}})})]},`${e}/${t}`)))]}),(0,W.jsx)(`div`,{className:`models-provider-list`,children:si.map(e=>oi(e))}),Q.length===0&&ui]})]}),di]});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`page-head`,children:[(0,W.jsx)(`h2`,{children:F(`nav.models`)}),(0,W.jsx)(`div`,{className:`page-head-actions`,children:(0,W.jsx)(`button`,{type:`button`,className:`sidebar-orb`,onClick:()=>{f()},disabled:c,"aria-label":F(c?`dash.codexRestarting`:`dash.codexRestart`),title:F(c?`dash.codexRestarting`:`dash.codexRestart`),children:(0,W.jsx)(ee,{})})})]}),(0,W.jsx)(xe,{state:r,controller:{restarting:c,restart:f}}),(0,W.jsx)(hr,{tab:C,onSelect:re,meta:tr}),(0,W.jsx)(`p`,{className:`page-sub`,children:F(Jr[C])}),(0,W.jsx)(`div`,{className:`models-tab-panel`,role:`tabpanel`,id:E(`catalog`),"aria-labelledby":ae(`catalog`),hidden:C!==`catalog`,children:(0,W.jsx)(ne,{pageName:F(`models.tab.catalog`),title:F(`errorBoundary.title`),message:F(`errorBoundary.message`),detailsLabel:F(`errorBoundary.details`),reloadLabel:F(`errorBoundary.reload`),children:ii?(0,W.jsx)(ye,{label:F(`models.loading`),rows:5}):ri===null?fi:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(d,{tone:`err`,children:ri}),(0,W.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>Gn.refresh(),children:F(`common.retry`)})]})})}),(0,W.jsx)(`div`,{className:`models-tab-panel models-tab-panel--fill`,role:`tabpanel`,id:E(`combos`),"aria-labelledby":ae(`combos`),hidden:C!==`combos`,children:A.has(`combos`)&&(0,W.jsx)(ne,{pageName:F(`models.tab.combos`),title:F(`errorBoundary.title`),message:F(`errorBoundary.message`),detailsLabel:F(`errorBoundary.details`),reloadLabel:F(`errorBoundary.reload`),children:(0,W.jsx)(bt,{apiBase:e,active:C===`combos`,onCountChange:he})})}),(0,W.jsx)(`div`,{className:`models-tab-panel`,role:`tabpanel`,id:E(`routing`),"aria-labelledby":ae(`routing`),hidden:C!==`routing`,children:A.has(`routing`)&&(0,W.jsx)(ne,{pageName:F(`models.tab.routing`),title:F(`errorBoundary.title`),message:F(`errorBoundary.message`),detailsLabel:F(`errorBoundary.details`),reloadLabel:F(`errorBoundary.reload`),children:(0,W.jsx)(an,{apiBase:e,active:C===`routing`,onCountChange:Se})})}),(0,W.jsx)(`div`,{className:`models-tab-panel`,role:`tabpanel`,id:E(`compatibility`),"aria-labelledby":ae(`compatibility`),hidden:C!==`compatibility`,children:A.has(`compatibility`)&&(0,W.jsx)(ne,{pageName:F(`models.tab.compatibility`),title:F(`errorBoundary.title`),message:F(`errorBoundary.message`),detailsLabel:F(`errorBoundary.details`),reloadLabel:F(`errorBoundary.reload`),children:(0,W.jsx)(pr,{apiBase:e,active:C===`compatibility`,onCountChange:Te})})})]})}export{Xr as default};