@bitkyc08/opencodex 2.87.0 → 2.88.0

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 (68) hide show
  1. package/gui/dist/assets/{App-ZfYbLHkB.js → App-CHC89EXQ.js} +3 -3
  2. package/gui/dist/assets/{Tray-DCd-A1az.js → Tray-B5bC7AWL.js} +1 -1
  3. package/gui/dist/assets/index-B5bsvxor.js +94 -0
  4. package/gui/dist/assets/{quota-summary-ChvmKGOk.js → quota-summary-D8y2wTsB.js} +1 -1
  5. package/gui/dist/index.html +1 -1
  6. package/package.json +1 -1
  7. package/src/adapters/anthropic-rejection-memo.ts +71 -0
  8. package/src/adapters/anthropic-replay.ts +135 -0
  9. package/src/adapters/anthropic-tool-catalog.ts +11 -0
  10. package/src/adapters/anthropic.ts +76 -45
  11. package/src/adapters/google-progress-history.ts +53 -0
  12. package/src/adapters/google.ts +17 -1
  13. package/src/bridge/internal.ts +6 -2
  14. package/src/bridge/response-json.ts +2 -2
  15. package/src/bridge/sse.ts +7 -6
  16. package/src/claude/inbound-content-options.ts +66 -0
  17. package/src/claude/outbound.ts +13 -5
  18. package/src/cli/cross-home-owner.ts +16 -2
  19. package/src/cli/loopback-family.ts +31 -0
  20. package/src/codex/catalog/routed-gather.ts +3 -1
  21. package/src/codex/websocket-activity.ts +161 -0
  22. package/src/codex/websocket-registry.ts +25 -1
  23. package/src/config/opencode-zen-upgrade.ts +9 -8
  24. package/src/generated/compatibility-version.json +88 -52
  25. package/src/images/loop.ts +72 -21
  26. package/src/lib/request-failure-model.ts +2 -0
  27. package/src/oauth/generic-account-failover.ts +7 -4
  28. package/src/protocols/encoders/adapter-events.ts +5 -5
  29. package/src/protocols/encoders/messages.ts +2 -2
  30. package/src/providers/opencode-zen-rate-limit.ts +7 -2
  31. package/src/responses/reasoning-replay-cache.ts +50 -4
  32. package/src/routing/analytics.ts +7 -15
  33. package/src/server/claude-messages.ts +2 -1
  34. package/src/server/index/live-sideband.ts +3 -2
  35. package/src/server/index/serve-options.ts +11 -5
  36. package/src/server/index/websocket-handler.ts +18 -4
  37. package/src/server/index.ts +7 -7
  38. package/src/server/lifecycle.ts +13 -1
  39. package/src/server/messages-native.ts +16 -3
  40. package/src/server/responses/adapter-continuation.ts +34 -18
  41. package/src/server/responses/adapter-delivery.ts +53 -6
  42. package/src/server/responses/adapter-dispatch.ts +27 -1
  43. package/src/server/responses/anthropic-thinking-recovery.ts +153 -0
  44. package/src/server/responses/combo-stream-preflight.ts +3 -2
  45. package/src/server/responses/compaction-recovery.ts +2 -0
  46. package/src/server/responses/core-codex-account.ts +2 -2
  47. package/src/server/responses/core-combo.ts +3 -2
  48. package/src/server/responses/core-lifetime.ts +3 -2
  49. package/src/server/responses/core-options.ts +2 -0
  50. package/src/server/responses/core-replay.ts +5 -1
  51. package/src/server/responses/passthrough-execution.ts +3 -2
  52. package/src/server/responses/request-prepare.ts +1 -0
  53. package/src/server/responses/response-effects.ts +1 -0
  54. package/src/server/responses/response-tool-ownership.ts +21 -0
  55. package/src/server/responses/sidecar-execution.ts +43 -7
  56. package/src/server/responses/sidecar-send-budget.ts +2 -2
  57. package/src/server/responses-undeclared-tool-guard.ts +1 -1
  58. package/src/server/ws-bridge.ts +2 -0
  59. package/src/types/opencode-zen.ts +9 -3
  60. package/src/types/request.ts +10 -2
  61. package/src/types/wire.ts +4 -2
  62. package/src/types.ts +1 -0
  63. package/src/usage/summary.ts +9 -3
  64. package/src/usage/telemetry-contract.ts +1 -0
  65. package/src/web-search/anthropic-history.ts +59 -0
  66. package/src/web-search/loop.ts +181 -68
  67. package/src/web-search/progress-stream.ts +11 -1
  68. package/gui/dist/assets/index-CfYDMj34.js +0 -94
@@ -1,10 +1,10 @@
1
- import{A as e,C as t,D as n,E as r,O as i,S as a,T as o,_ as s,a as c,b as l,c as u,d,f,g as p,h as m,i as h,j as g,k as _,l as v,m as y,n as b,o as x,p as S,r as C,s as w,t as T,u as E,v as D,w as O,x as k,y as A}from"./index-CfYDMj34.js";import{$ as j,A as M,At as N,B as P,Bt as F,C as I,Ct as L,D as R,Dt as z,E as B,Et as V,F as H,Ft as U,G as W,H as G,I as ee,It as te,J as K,K as q,L as ne,Lt as J,M as Y,Mt as re,N as ie,Nt as X,O as ae,Ot as oe,P as se,Pt as ce,Q as le,R as ue,Rt as de,S as fe,St as pe,T as me,Tt as he,U as ge,V as _e,Vt as ve,W as ye,X as be,Y as xe,Z as Se,_ as Ce,_t as we,at as Te,b as Ee,bt as De,ct as Oe,dt as ke,et as Ae,ft as je,g as Me,gt as Ne,h as Pe,ht as Fe,it as Ie,j as Le,jt as Re,k as ze,kt as Be,lt as Ve,m as He,mt as Ue,n as We,nt as Ge,ot as Ke,pt as qe,q as Je,rt as Ye,st as Xe,t as Ze,tt as Qe,ut as $e,v as et,vt as tt,w as nt,wt as rt,x as it,xt as at,y as ot,yt as st,z as ct,zt as lt}from"./quota-summary-ChvmKGOk.js";var Z=g(e(),1);function ut(){return typeof document<`u`&&document.visibilityState===`hidden`||typeof window<`u`&&window.__OPENCODEX_HOST_VISIBLE__===!1}function dt(e){let t=ut(),n=()=>{let n=ut();n!==t&&(t=n,e())},r=e=>{let t=e.detail;typeof window<`u`&&typeof t==`boolean`&&(window.__OPENCODEX_HOST_VISIBLE__=t),n()};return typeof document<`u`&&document.addEventListener(`visibilitychange`,n),typeof window<`u`&&window.addEventListener(`opencodex:host-visibility`,r),()=>{typeof document<`u`&&document.removeEventListener(`visibilitychange`,n),typeof window<`u`&&window.removeEventListener(`opencodex:host-visibility`,r)}}var ft=new Map,pt=new Set,mt=3e4,ht=`ocx-resource-deadline`,gt={data:void 0,error:void 0,loading:!1,refreshing:!1,hasSucceeded:!1,lastAttemptOk:!1};function _t(e){let t=ft.get(e);return t||(t={key:e,snapshot:{data:void 0,error:void 0,loading:!1,refreshing:!1,hasSucceeded:!1,lastAttemptOk:!1},listeners:new Set,pollByListener:new Map,pauseWhenHiddenByListener:new Map,fetcherByListener:new Map,deadlineByListener:new Map,subscriberCount:0,pollIntervalMs:void 0,inflight:null,inflightOwner:null,generation:0,seedNeedsRevalidate:!1,lastSettledAt:void 0},ft.set(e,t)),t}function vt(e){for(let t of e.listeners)t()}var yt=new Map;function bt(e){for(let[t,n]of e.pollByListener)if(typeof n==`number`&&n>0&&e.pauseWhenHiddenByListener.get(t)===!1)return!0;return!1}function xt(e){if(e.stores.size===0)return!1;if(!Dt())return!0;for(let t of e.stores)if(bt(t))return!0;return!1}function St(e){for(let t of e.stores){let e=Ot(t);e&&Pt(t,e.fetcher,{replaceInflight:!1,owner:e.owner,deadlineMs:e.deadlineMs})}}function Ct(e,t){let n=xt(t);if(n&&t.timer===null){t.timer=setInterval(()=>St(t),e);return}!n&&t.timer!==null&&(clearInterval(t.timer),t.timer=null),t.stores.size===0&&yt.delete(e)}function wt(){for(let[e,t]of[...yt])Ct(e,t)}function Tt(e){let t=e.pollIntervalMs;if(t===void 0)return;let n=yt.get(t);e.pollIntervalMs=void 0,n&&(n.stores.delete(e),Ct(t,n))}function Et(e,t){let n=yt.get(t);n||(n={timer:null,stores:new Set},yt.set(t,n)),n.stores.add(e),e.pollIntervalMs=t,Ct(t,n)}function Dt(){return ut()}function Ot(e){if(!Dt())return kt(e);for(let[t,n]of e.pollByListener)if(!(typeof n!=`number`||n<=0)&&e.pauseWhenHiddenByListener.get(t)===!1){let n=e.fetcherByListener.get(t);if(n)return{owner:t,fetcher:n,deadlineMs:e.deadlineByListener.get(t)}}return null}function kt(e){for(let[t,n]of e.pollByListener)if(typeof n==`number`&&n>0){let n=e.fetcherByListener.get(t);if(n)return{owner:t,fetcher:n,deadlineMs:e.deadlineByListener.get(t)}}for(let[t,n]of e.fetcherByListener)return{owner:t,fetcher:n,deadlineMs:e.deadlineByListener.get(t)};return null}function At(e){let t;for(let n of e.pollByListener.values())typeof n==`number`&&n>0&&(t=t===void 0?n:Math.min(t,n));if(t===void 0){Tt(e),Nt(e);return}if(t===e.pollIntervalMs){let n=yt.get(t);n&&Ct(t,n),Mt(e);return}Tt(e),Et(e,t),Mt(e)}var jt=null;function Mt(e){typeof document>`u`||jt||(jt=dt(()=>{if(wt(),!Dt())for(let e of yt.values())for(let t of e.stores){let e=kt(t);e&&Pt(t,e.fetcher,{replaceInflight:!1,owner:e.owner,deadlineMs:e.deadlineMs})}}))}function Nt(e){jt&&(yt.size>0||(jt(),jt=null))}async function Pt(e,t,n){let r=n?.replaceInflight!==!1;if(e.inflight&&!r)return;r&&e.inflight?.abort();let i=new AbortController;e.inflight=i,e.inflightOwner=n?.owner??null;let a=++e.generation,o=n?.deadlineMs??mt,s=!1,c=setTimeout(()=>{s=!0,i.abort(ht)},o),l=e.snapshot.data===void 0||n?.forceLoading===!0;e.snapshot={...e.snapshot,loading:l?!0:e.snapshot.loading,refreshing:!0},vt(e);try{let n=await Promise.race([t(i.signal),new Promise((e,t)=>{i.signal.addEventListener(`abort`,()=>{s?t(Error(`resource request timed out after ${o}ms`)):e(null)},{once:!0})})]);if(a!==e.generation||i.signal.aborted)return;e.seedNeedsRevalidate=!1,pt.delete(e.key),e.lastSettledAt=Date.now(),e.snapshot={data:n,error:void 0,loading:!1,refreshing:!1,hasSucceeded:!0,lastAttemptOk:!0}}catch(t){if(a!==e.generation||i.signal.aborted&&!s)return;e.seedNeedsRevalidate=!1,e.snapshot={...e.snapshot,error:t===void 0?Error(`resource load failed`):t,loading:!1,refreshing:!1,lastAttemptOk:!1}}finally{clearTimeout(c),e.inflight===i&&(e.inflight=null,e.inflightOwner=null),vt(e)}}function Ft(e,t){return e.inflightOwner===t&&(e.inflight?.abort(),e.inflight=null,e.inflightOwner=null,e.generation++,e.snapshot.refreshing&&(e.snapshot={...e.snapshot,refreshing:!1},vt(e)),!0)}function It(e,t){Tt(t),Nt(t),setTimeout(()=>{t.subscriberCount===0&&ft.get(e)===t&&(t.inflight?.abort(),t.inflight=null,t.inflightOwner=null,ft.delete(e))},0)}function Lt(e,t,n){let{fetcher:r,pollMs:i,pauseWhenHidden:a=!0,deadlineMs:o,staleAfterMs:s}=n,c=_t(e);if(c.listeners.add(t),c.pollByListener.set(t,i),c.pauseWhenHiddenByListener.set(t,a),c.fetcherByListener.set(t,r),c.deadlineByListener.set(t,o),c.subscriberCount++,c.subscriberCount===1){let n=typeof s==`number`&&c.lastSettledAt!==void 0&&Date.now()-c.lastSettledAt>s;(c.snapshot.data===void 0||c.seedNeedsRevalidate||pt.has(e)||n)&&Pt(c,r,{replaceInflight:!0,owner:t,deadlineMs:o})}return At(c),()=>{c.listeners.delete(t),c.pollByListener.delete(t),c.pauseWhenHiddenByListener.delete(t),c.fetcherByListener.delete(t),c.deadlineByListener.delete(t),c.subscriberCount--;let n=Ft(c,t);if(c.subscriberCount===0){It(e,c);return}if(n){let e=kt(c);e&&Pt(c,e.fetcher,{replaceInflight:!0,owner:e.owner,deadlineMs:e.deadlineMs})}At(c)}}function Rt(e,t,n,r){let i=_t(e);i.subscriberCount===0&&i.snapshot.data===void 0&&(Ut(e,t),!pt.has(e)&&typeof r==`number`&&typeof n==`number`&&Date.now()-n<r&&(i.seedNeedsRevalidate=!1,i.lastSettledAt=n))}function zt(e,t,n){let r=n?.enabled!==!1,i=n?.pollMs,a=n?.pauseWhenHidden!==!1,o=n?.deadlineMs,s=n?.staleAfterMs;r&&n?.initialData!==void 0&&Rt(e,n.initialData,n.initialDataCachedAt,s);let c=(0,Z.useRef)(t);(0,Z.useLayoutEffect)(()=>{c.current=t});let l=(0,Z.useCallback)(e=>c.current(e),[]),u=(0,Z.useRef)(null),d=(0,Z.useCallback)(t=>r?(u.current=t,Lt(e,t,{fetcher:l,pollMs:i,pauseWhenHidden:a,deadlineMs:o,staleAfterMs:s})):()=>{},[e,l,i,r,a,o,s]),f=(0,Z.useCallback)(()=>r?_t(e).snapshot:gt,[e,r]),p=(0,Z.useSyncExternalStore)(d,f,f),m=(0,Z.useCallback)(t=>{if(!r)return;let n=_t(e);Pt(n,l,{replaceInflight:!0,owner:u.current,forceLoading:t?.forceLoading,deadlineMs:u.current?n.deadlineByListener.get(u.current):o})},[e,l,r,o]);return{...p,refresh:m}}function Bt(e,t){if(e===null)return!1;if(e.length!==t.length)return!0;for(let n=0;n<e.length;n++)if(!Object.is(e[n],t[n]))return!0;return!1}function Vt(e,t,n,r){let i=zt(e,n,r),a=(0,Z.useRef)(null),o=(0,Z.useRef)(null);return(0,Z.useLayoutEffect)(()=>{let n=a.current,r=o.current;a.current=t,o.current=e,Bt(n,t)&&(r===null||r===e)&&i.refresh({forceLoading:!0})}),i}function Ht(e){pt.add(e);let t=ft.get(e);if(!t)return;let n=kt(t);n&&Pt(t,n.fetcher,{replaceInflight:!0,owner:n.owner,deadlineMs:n.deadlineMs})}function Ut(e,t){let n=_t(e);n.inflight?.abort(),n.inflight=null,n.inflightOwner=null,n.generation++,n.snapshot={data:t,error:void 0,loading:!1,refreshing:!1,hasSucceeded:!0,lastAttemptOk:!0},n.seedNeedsRevalidate=n.subscriberCount===0,n.lastSettledAt=Date.now(),vt(n)}function Wt(e){return e.replace(/^#\/?/,``)}function Gt(e){let t=e.indexOf(`?`);return t<0?{path:e,query:``}:{path:e.slice(0,t),query:e.slice(t+1)}}function Kt(e,t=window){let n=Wt(e);if(Wt(t.location.hash)===n)return;let r=`${t.location.pathname}${t.location.search}#${n}`;t.history.replaceState(t.history.state,``,r)}function qt(e,t=window){let n=Wt(e);Wt(t.location.hash)!==n&&(t.location.hash=n)}var Jt=_(),Yt=4,Xt=8,Zt=8,Qt=280,$t=120,en=160,tn=12;function nn(){return typeof window<`u`?window.innerHeight:800}function rn(){return typeof window<`u`?window.innerWidth:1024}function an(e,{align:t,placement:n=`below`,menuHeight:r=Qt}={}){let i=Math.min(Math.max(r,$t),Qt),a=nn(),o=rn();if(n===`right`){let t=a-e.top-Zt,n=e.top-Zt,r=i+Xt>t&&n>t,s=Math.max(Zt,Math.min(e.right+tn,o-en-Zt));return r?{position:`fixed`,left:s,bottom:a-e.top+Xt,minWidth:en,maxHeight:Math.max($t,Math.min(Qt,e.top-Zt-Yt))}:{position:`fixed`,top:e.top,left:s,minWidth:en,maxHeight:Math.max($t,Math.min(Qt,a-e.top-Zt))}}let s=t??(e.right>o/2?`right`:`left`),c=Math.max(e.width,0),l=a-e.bottom-Zt,u=e.top-Zt;if(i+Yt>l&&u>l){let t={position:`fixed`,bottom:a-e.top+Xt,minWidth:c,maxHeight:Math.max(0,Math.min(Qt,u-Yt))};return s===`right`?t.right=Math.max(Zt,o-e.right):t.left=Math.max(Zt,Math.min(e.left,o-Zt-c)),t}let d={position:`fixed`,top:e.bottom+Yt,minWidth:c,maxHeight:Math.max(0,Math.min(Qt,l-Yt))};return s===`right`?d.right=Math.max(Zt,o-e.right):d.left=Math.max(Zt,Math.min(e.left,o-Zt-c)),d}var Q=b();function on({on:e,mixed:t=!1,onClick:n,disabled:r,label:i,showLabel:a=!1,title:o}){let s=a&&!!i;return(0,Q.jsxs)(`button`,{type:`button`,className:`switch${e?` on`:``}${t?` mixed`:``}${s?` switch-labeled`:``}`,onClick:n,disabled:r,"aria-pressed":t?`mixed`:e,"aria-label":s?void 0:i??(e?`enabled`:`disabled`),title:o,children:[(0,Q.jsx)(`span`,{className:`knob`}),s?(0,Q.jsx)(`span`,{className:`switch-labeled-text text-label muted`,children:i}):null]})}function $({tone:e,children:t}){return(0,Q.jsxs)(`div`,{className:`notice ${e===`ok`?`notice-ok`:e===`warn`?`notice-warn`:`notice-err`}`,role:`status`,children:[e===`ok`?(0,Q.jsx)(Te,{}):(0,Q.jsx)(Ae,{}),(0,Q.jsx)(`span`,{children:t})]})}function sn({tone:e,children:t,onDismiss:n,dismissLabel:r}){return(0,Jt.createPortal)((0,Q.jsx)(`div`,{className:`toast-notice-host`,role:`presentation`,children:(0,Q.jsxs)(`div`,{className:`toast-notice notice ${e===`ok`?`notice-ok`:e===`warn`?`notice-warn`:`notice-err`}`,role:`status`,"aria-live":`polite`,children:[e===`ok`?(0,Q.jsx)(Te,{}):(0,Q.jsx)(Ae,{}),(0,Q.jsx)(`span`,{className:`toast-notice-copy`,children:t}),n&&(0,Q.jsx)(`button`,{type:`button`,className:`toast-notice-dismiss`,onClick:n,"aria-label":r,children:`×`})]})}),document.body)}function cn({value:e,options:t,onChange:n,disabled:r,id:i,label:a,describedBy:o,title:s,style:c,align:l,placement:u,dropdownStyle:d,portal:f=!0}){let p=(0,Z.useId)(),[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(null),[v,y]=(0,Z.useState)(),b=(0,Z.useRef)(null),x=(0,Z.useRef)(null),S=(0,Z.useRef)(null),C=(0,Z.useCallback)(e=>`${p}-${e}`,[p]),w=t.find(t=>t.value===e),T=t.length===0?0:Math.max(0,t.findIndex(t=>t.value===e)),E=!m||t.length===0?T:Math.min(g??T,t.length-1),D=(0,Z.useCallback)((e=!1)=>{h(!1),_(null),e&&x.current?.focus()},[]),O=(0,Z.useCallback)(e=>{if(r||t.length===0)return;let n=Math.max(0,Math.min(t.length-1,e));_(n),h(!0)},[r,t.length]),k=(0,Z.useCallback)(e=>{if(!f)return;let t=x.current;t&&y(an(t.getBoundingClientRect(),{align:l,placement:u,menuHeight:e}))},[l,u,f]);(0,Z.useEffect)(()=>{if(!m)return;let e=e=>{let t=e.target;b.current?.contains(t)||S.current?.contains(t)||D()};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[D,m]),(0,Z.useLayoutEffect)(()=>{if(!m||!f)return;k();let e=()=>k(S.current?.offsetHeight);return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[m,t.length,f,k]),(0,Z.useLayoutEffect)(()=>{if(!m||!f||!S.current||!x.current)return;let e=S.current.offsetHeight;if(!e)return;let t=an(x.current.getBoundingClientRect(),{align:l,placement:u,menuHeight:e});y(e=>e?.top===t.top&&e?.bottom===t.bottom&&e?.maxHeight===t.maxHeight?e:t)},[l,m,t.length,u,f]),(0,Z.useLayoutEffect)(()=>{!m||!S.current||S.current.querySelector(`[id="${C(E)}"]`)?.scrollIntoView({block:`nearest`})},[E,m,C]);let A=e=>{if(r)return;let i=t[e];i&&(n(i.value),D(!0))},j=e=>{if(!r)switch(e.key){case`ArrowDown`:e.preventDefault(),O(m?Math.min(t.length-1,E+1):T);break;case`ArrowUp`:e.preventDefault(),O(m?Math.max(0,E-1):T);break;case`Home`:e.preventDefault(),O(0);break;case`End`:e.preventDefault(),O(t.length-1);break;case`Enter`:case` `:e.preventDefault(),m?A(E):O(T);break;case`Escape`:m&&(e.preventDefault(),D(!0));break;case`Tab`:if(m){let e=t[E];e&&n(e.value),h(!1)}}},M=m&&t[E]?C(E):void 0,N=m&&!r?(0,Q.jsx)(`div`,{ref:S,id:p,className:`select-dropdown${f?` select-dropdown-portal`:``}${!f&&l===`right`?` select-dropdown-right`:``}${!f&&u===`right`?` select-dropdown-beside`:``}`,role:`listbox`,"aria-label":a,style:f?{...v,zIndex:60,...d}:d,children:t.map((t,n)=>(0,Q.jsx)(`button`,{id:C(n),type:`button`,role:`option`,tabIndex:-1,disabled:r,"aria-selected":t.value===e,className:`select-option${t.value===e?` active`:``}${n===E?` select-option-active`:``}`,onMouseEnter:()=>_(n),onClick:()=>A(n),children:t.label},t.value))}):null;return(0,Q.jsxs)(`div`,{ref:b,className:`custom-select`,style:{position:`relative`,display:`inline-block`,...c},children:[(0,Q.jsxs)(`button`,{ref:x,id:i,type:`button`,role:`combobox`,title:s,"aria-describedby":o,className:`select-trigger`,onClick:()=>{r||(m?D():O(T))},onKeyDown:j,disabled:r,"aria-haspopup":`listbox`,"aria-expanded":m,"aria-controls":m?p:void 0,"aria-activedescendant":M,"aria-label":a,children:[(0,Q.jsx)(`span`,{children:w?.label??e}),(0,Q.jsx)(Ke,{style:{width:12,height:12,color:`var(--muted)`,transform:m?`rotate(90deg)`:`none`,transition:`transform .12s`}})]}),f?N&&(0,Jt.createPortal)(N,document.body):N]})}function ln({icon:e,title:t,children:n,className:r,style:i}){return(0,Q.jsxs)(`div`,{className:r?`empty ${r}`:`empty`,style:i,children:[e,(0,Q.jsx)(`div`,{className:`title`,children:t}),n&&(0,Q.jsx)(`div`,{className:`text-control`,children:n})]})}function un({content:e,children:t,side:n=`top`,maxWidth:r=280}){let[i,a]=(0,Z.useState)(!1),o=(0,Z.useId)(),s=(0,Z.useRef)(null),c=()=>{s.current!==null&&window.clearTimeout(s.current),s.current=window.setTimeout(()=>a(!0),150)},l=()=>{s.current!==null&&(window.clearTimeout(s.current),s.current=null),a(!1)};return(0,Z.useEffect)(()=>()=>{s.current!==null&&window.clearTimeout(s.current)},[]),(0,Q.jsxs)(`button`,{type:`button`,className:`ocx-tooltip`,onMouseEnter:c,onMouseLeave:l,onFocus:c,onBlur:l,onKeyDown:e=>{e.key===`Escape`&&l()},"aria-describedby":i?o:void 0,style:{display:`inline`,border:0,background:`transparent`,padding:0,margin:0,color:`inherit`,font:`inherit`,cursor:`inherit`},children:[t,i&&(0,Q.jsx)(`span`,{id:o,className:`ocx-tooltip-bubble ocx-tooltip-bubble--${n}`,role:`tooltip`,style:{maxWidth:r},children:e})]})}var dn=45e3,fn=2147483647;async function pn(e){if(e.status!==204){if(typeof e.text==`function`){let t=await e.text();return t.trim()?JSON.parse(t):void 0}return await e.json()}}function mn(e,t){return typeof e.error==`string`&&e.error?e.error:typeof e.message==`string`&&e.message?e.message:t}async function hn(e,t=`HTTP ${e.status}`){if(!e.ok){let n=t;try{n=mn(await e.json(),t)}catch{}throw Error(n)}return pn(e)}async function gn(e){if(!e.ok)return null;try{return await pn(e)}catch{return null}}var _n=[`gpt-6-luna`,`gpt-5.6-luna`];function vn(e){let t=Array.isArray(e)?e.filter(e=>typeof e==`string`&&e.trim()!==``).map(e=>e.trim()):[];return t.length>0?t:_n}function yn(e){return vn(e).join(`, `)}function bn(e){return vn(e).map(e=>e.replace(/^gpt-/,``)).join(`, `)}var xn=`dashboard/update`;function Sn(){let e=window.location.hash.replace(/^#\/?/,``);return e===`dashboard/providers`?`providers`:e===`dashboard/models`?`models`:`overview`}function Cn(){return window.location.hash.replace(/^#\/?/,``)===xn}function wn(e){return e===`overview`?`dashboard`:`dashboard/${e}`}async function Tn(e,t){let n=await hn(e,t);if(n===void 0)throw Error(t??`empty response`);return n}var En=[`low`,`medium`,`high`,`xhigh`];function Dn(e){return e?.includes(`-preview.`)?`preview`:`latest`}function On(e,t){switch(e){case`source_checkout`:return t(`dash.updateReason.source_checkout`);case`latest_unavailable`:return t(`dash.updateReason.latest_unavailable`);case`already_latest`:return t(`dash.updateReason.already_latest`);case`externally_managed`:return t(`dash.updateReason.externally_managed`);case`external_ownership_invalid`:return t(`dash.updateReason.external_ownership_invalid`);default:return t(`dash.updateReason.unknown`)}}function kn(e,t){switch(e){case`running`:return t(`dash.updateStatus.running`);case`restarting`:return t(`dash.updateStatus.restarting`);case`succeeded`:return t(`dash.updateStatus.succeeded`);case`failed`:return t(`dash.updateStatus.failed`)}}function An(e,t){let n={...e};return t?.model!==void 0&&(n.model=t.model),t?.backend===null?delete n.backend:t?.backend!==void 0&&(n.backend=t.backend),t?.anthropicInstance===null?delete n.anthropicInstance:t?.anthropicInstance!==void 0&&(n.anthropicInstance=t.anthropicInstance),t?.backend!==void 0&&t.backend!==`anthropic`&&delete n.anthropicInstance,t?.reasoning!==void 0&&(n.reasoning=t.reasoning),t?.streamRoutedModelOutput!==void 0&&(n.streamRoutedModelOutput=t.streamRoutedModelOutput),t?.enabled!==void 0&&(n.enabled=t.enabled),t?.maxDescriptionsPerTurn!==void 0&&(n.maxDescriptionsPerTurn=t.maxDescriptionsPerTurn),t?.timeoutMs!==void 0&&(n.timeoutMs=t.timeoutMs),n}function jn(e){return{vision:{reasoning:e}}}function Mn(e){return{vision:{enabled:e}}}function Nn(e){return{webSearch:{enabled:e}}}function Pn(e){return e?.applied===!1&&e.reason!==`not_requested`}function Fn(e,t){return t?.reason===`not_requested`&&Pn(e)?e:t}function In(e){return{vision:{maxDescriptionsPerTurn:e}}}function Ln(e){return{vision:{timeoutMs:e}}}var Rn=dn,zn=fn,Bn=1;function Vn(e){let t=e.trim();if(!/^[0-9]+$/.test(t))return;let n=Number(t);if(!(!Number.isSafeInteger(n)||n<=0))return n}function Hn(e){let t=Vn(e);if(!(t===void 0||t<Bn||t>zn))return t}var Un=[`low`,`medium`,`high`,`xhigh`,`max`];function Wn(e,t){let n=e.find(e=>e.id===t)?.reasoningEfforts;if(!n||n.length===0)return[...Un];let r=Un.filter(e=>n.includes(e));return r.length>0?r:[...Un]}function Gn(e,t){let n=Kn(e,t);return e.includes(n)?e:[n,...e]}function Kn(e,t){if(e.length===0||e.includes(t))return t;let n=Un.indexOf(t),r=e[0],i=Un.indexOf(r);for(let t of e){let e=Un.indexOf(t);e<=n&&e>=i&&(r=t,i=e)}return r}function qn(e){let t=[];for(let n of e)(n.provider===`openai`||n.provider===`anthropic`)&&t.push({value:n.id,label:`${n.provider}/${n.id}`});return t}function Jn(e,t,n,r){if(e===void 0){let e=qn(t);return n&&!e.some(e=>e.value===n)&&e.unshift({value:n,label:n,...r?{backend:r}:{},model:n}),e}let i=e.map(e=>({value:e.value,label:e.label,backend:e.backend,model:e.model}));return n&&!i.some(e=>e.value===n)&&i.unshift({value:n,label:n,...r?{backend:r}:{},model:n}),i}function Yn(e,t,n,r){let i=e?e.map(e=>({value:e.value,label:e.label,backend:e.backend})):qn(t);return n&&!i.some(e=>e.value===n)&&i.unshift({value:n,label:n,...r?{backend:r}:{}}),i}function Xn(e,t,n){let r=vn(n),i=r.flatMap(t=>{let n=e.find(e=>e.namespaced.startsWith(t))??e.find(e=>e.id.startsWith(t));return n?[{provider:n.provider,modelId:t}]:[]}),a=e.filter(e=>i.some(t=>e.provider===t.provider&&e.id.startsWith(t.modelId))),o=new Set([...r.flatMap(e=>[e,`openai/${e}`]),...a.flatMap(e=>[e.namespaced,`${e.provider}/${e.id}`])]),s=[{value:``,label:`—`},...e.filter(e=>!o.has(e.namespaced)).map(e=>({value:e.namespaced,label:e.namespaced}))];return t&&!o.has(t)&&!s.some(e=>e.value===t)&&s.push({value:t,label:t}),s}function Zn(e,t){let n=e.find(e=>e.id===t)?.provider;return n===`anthropic`||n===`anthropic2`?`anthropic`:`openai`}function Qn(e,t){function n(e,t){return t.backend!==void 0&&t.backend!==`anthropic`&&e.anthropicInstance!==void 0?{...t,anthropicInstance:null}:t}return{...t,...t.webSearch?{webSearch:n(e.webSearch,t.webSearch)}:{},...t.vision?{vision:n(e.vision,t.vision)}:{}}}function $n(e,t,n){let r=t.find(e=>e.value===n);return{backend:r?.backend??Zn(e,n),model:r?.model??n}}function er(e,t,n){return t.find(e=>e.value===n)?.backend||(n.includes(`/`)?`routed`:Zn(e,n))}var tr=!1;typeof window<`u`&&typeof window.addEventListener==`function`&&(window.addEventListener(`keydown`,()=>{tr=!0},{capture:!0,passive:!0}),window.addEventListener(`pointerdown`,()=>{tr=!1},{capture:!0,passive:!0}));function nr(e){if(e){if(tr){e.focus({preventScroll:!0});return}try{e.focus({preventScroll:!0,focusVisible:!1})}catch{e.focus({preventScroll:!0})}}}function rr(e,t){let n=(0,Z.useRef)(null);return(0,Z.useEffect)(()=>{let r=n.current;if(r){if(e){r.open||r.showModal();return}r.open&&r.close(),nr(t.current)}},[e,t]),(0,Z.useEffect)(()=>()=>{let e=n.current;e?.open&&e.close(),nr(t.current)},[t]),n}var ir=`https://opencodex.me/guides/subagent-v1-default/`;function ar(e){if(!e||typeof e!=`object`)return null;let t=e,n=t.mode;return n!==`v1`&&n!=="default"&&n!==`v2`||typeof t.required!=`boolean`?null:{required:t.required,mode:n,recommended:`v1`,version:typeof t.version==`number`?t.version:0,docsUrl:typeof t.docsUrl==`string`&&t.docsUrl?t.docsUrl:ir}}function or(e){return e==="default"?`base`:e}function sr({reason:e,mode:t,docsUrl:n,busy:r=!1,onContinue:i,onChooseV1:a,onDismiss:o}){let s=O(),c=(0,Z.useId)(),l=(0,Z.useId)(),u=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{let e=u.current;e&&!e.open&&e.showModal()},[]);let d=(0,Z.useCallback)(e=>{e.preventDefault(),!r&&o()},[r,o]),f=or(t),p=e===`advisory`;return(0,Q.jsxs)(`dialog`,{ref:u,"aria-labelledby":c,"aria-describedby":l,className:`modal-overlay`,"data-subagent-surface-reason":e,onCancel:d,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":s(`common.close`),tabIndex:-1,disabled:r,onClick:()=>{r||o()}}),(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),style:{maxWidth:480},children:[(0,Q.jsx)(`h3`,{id:c,children:s(p?`subagentSurface.advisoryTitle`:`subagentSurface.selectionTitle`,{mode:f})}),(0,Q.jsxs)(`div`,{id:l,className:`notice-warn`,style:{marginTop:12,display:`flex`,gap:8,alignItems:`flex-start`},children:[(0,Q.jsx)(Ae,{width:16,height:16,style:{flexShrink:0,marginTop:2},"aria-hidden":`true`}),(0,Q.jsx)(`p`,{className:`modal-desc`,style:{margin:0},children:s(p?`subagentSurface.advisoryBody`:`subagentSurface.selectionBody`,{mode:f})})]}),(0,Q.jsx)(`p`,{className:`text-label`,style:{marginTop:12},children:(0,Q.jsx)(`a`,{href:n,target:`_blank`,rel:`noreferrer`,style:{color:`var(--accent)`},children:s(`subagentSurface.learnMore`)})}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:r,onClick:i,children:s(`subagentSurface.continue`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:r,onClick:a,children:s(`subagentSurface.switchToV1`)})]})]})]})}function cr(e){let{t,updateOpen:n,closeUpdateDialog:r,updateDialogRef:i,updateChannel:a,changeUpdateChannel:o,updateLoading:s,updateError:c,updateCheck:l,fetchUpdateCheck:u,updateRestart:d,setUpdateRestart:f,runUpdate:p,maHelpOpen:m,setMaHelpOpen:h,maHelpDialogRef:g,effortCapHelpOpen:_,setEffortCapHelpOpen:v,effortCapHelpDialogRef:y,shadowCallHelpOpen:b,setShadowCallHelpOpen:x,shadowCallHelpDialogRef:S,shadowCall:C,maAdvisory:w,maAdvisoryOpen:T,pendingMaMode:E,maBusy:D,keepMaMode:O,chooseMaV1:k,dismissMaSurfaceDialog:A}=e;return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dialog`,{ref:i,id:`dashboard-update-dialog`,className:`modal-overlay`,style:{display:n?`flex`:`none`,border:`none`,margin:0,maxWidth:`none`,maxHeight:`none`,width:`100%`,height:`100%`},"aria-labelledby":`update-title`,onCancel:e=>{e.preventDefault(),r()},children:(0,Q.jsxs)(`div`,{className:`modal-card`,children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{id:`update-title`,children:t(`dash.updateTitle`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon`,onClick:r,"aria-label":t(`common.cancel`),children:(0,Q.jsx)(ve,{})})]}),(0,Q.jsx)(`div`,{className:`modal-desc`,children:t(`dash.updateDesc`)}),(0,Q.jsxs)(`div`,{className:`update-row`,children:[(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`update-channel`,children:t(`dash.updateChannel`)}),(0,Q.jsx)(cn,{value:a,options:[{value:`latest`,label:`latest`},{value:`preview`,label:`preview`}],onChange:e=>o(e),disabled:s,label:t(`dash.updateChannel`),portal:!1})]}),s&&(0,Q.jsx)(ln,{className:`update-empty`,icon:(0,Q.jsx)(`span`,{className:`spin`}),title:t(`dash.updateChecking`)}),c&&(0,Q.jsxs)(`div`,{className:`notice notice-err`,role:`status`,children:[(0,Q.jsx)(Ae,{}),(0,Q.jsx)(`span`,{children:c})]}),l&&!s&&(0,Q.jsxs)(`div`,{className:`update-box`,children:[(0,Q.jsxs)(`div`,{className:`spread`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{className:`muted text-label`,children:t(`dash.updateInstalled`)}),(0,Q.jsx)(`div`,{className:`mono`,children:l.currentVersion})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{className:`muted text-label`,children:t(`dash.updateLatest`)}),(0,Q.jsx)(`div`,{className:`mono`,children:l.latestVersion??`—`})]}),(0,Q.jsx)(`span`,{className:`badge ${l.updateAvailable?`badge-green`:`badge-muted`}`,children:l.updateAvailable?t(`dash.updateAvailable`):t(`dash.updateCurrent`)})]}),l.command&&(0,Q.jsxs)(`div`,{className:`muted update-command`,children:[t(`dash.updateCommand`),` `,(0,Q.jsx)(`code`,{className:`chip`,children:l.command})]}),l.reason===`source_checkout`&&(0,Q.jsxs)(`div`,{className:`notice-warn`,role:`status`,children:[(0,Q.jsx)(Ae,{}),` `,t(`dash.updateSource`)]}),l.reason===`latest_unavailable`&&(0,Q.jsxs)(`div`,{className:`notice-warn`,role:`status`,children:[(0,Q.jsx)(Ae,{}),` `,t(`dash.updateUnavailable`),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:s,onClick:()=>{u(a,!0)},style:{marginLeft:12},children:[(0,Q.jsx)(re,{}),` `,t(`dash.updateRetry`)]})]}),!l.canUpdate&&l.reason!==`latest_unavailable`&&l.reason!==`source_checkout`&&(0,Q.jsxs)(`div`,{className:`update-recheck`,children:[(0,Q.jsx)(`span`,{className:`muted update-recheck-reason`,children:t(`dash.updateCannotAuto`,{reason:On(l.reason,t)})}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:s,onClick:()=>{u(a,!0)},children:[(0,Q.jsx)(re,{}),` `,t(s?`dash.updateChecking`:`dash.updateRecheck`)]})]}),l.canUpdate&&(0,Q.jsxs)(`div`,{className:`spread update-restart`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:t(`dash.updateRestart`)}),(0,Q.jsx)(`div`,{className:`muted text-label`,children:t(`dash.updateRestartHint`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`switch ${d?`on`:``}`,onClick:()=>f(e=>!e),"aria-label":t(`dash.updateRestart`),"aria-pressed":d,children:(0,Q.jsx)(`span`,{className:`knob`})})]})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:r,children:t(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:p,disabled:!l?.canUpdate||s,children:t(`dash.runUpdate`)})]})]})}),(0,Q.jsxs)(`dialog`,{ref:g,id:`multi-agent-help-dialog`,className:`modal-overlay`,style:{display:m?`flex`:`none`,border:`none`,margin:0,maxWidth:`none`,maxHeight:`none`,width:`100%`,height:`100%`},"aria-labelledby":`multi-agent-help-title`,onCancel:e=>{e.preventDefault(),h(!1)},children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":t(`common.close`),tabIndex:-1,onClick:()=>h(!1)}),(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{id:`multi-agent-help-title`,children:t(`dash.multiAgent`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon`,onClick:()=>h(!1),"aria-label":t(`common.close`),children:(0,Q.jsx)(ve,{})})]}),(0,Q.jsx)(`div`,{className:`modal-desc leading-relaxed`,style:{whiteSpace:`pre-line`},children:t(`models.v2Help`)}),(0,Q.jsx)(`div`,{style:{marginTop:12},children:(0,Q.jsx)(`a`,{className:`text-control`,href:`https://opencodex.me/guides/sub-agent-surface/`,target:`_blank`,rel:`noreferrer`,style:{color:`var(--accent)`},children:t(`models.v2DocsLink`)})}),(0,Q.jsx)(`div`,{className:`modal-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>h(!1),children:t(`common.ok`)})})]})]}),(0,Q.jsxs)(`dialog`,{ref:y,id:`effort-cap-help-dialog`,className:`modal-overlay`,style:{display:_?`flex`:`none`,border:`none`,margin:0,maxWidth:`none`,maxHeight:`none`,width:`100%`,height:`100%`},"aria-labelledby":`effort-cap-help-title`,onCancel:e=>{e.preventDefault(),v(!1)},children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":t(`common.close`),tabIndex:-1,onClick:()=>v(!1)}),(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{id:`effort-cap-help-title`,children:t(`dash.effortCapLabel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon`,onClick:()=>v(!1),"aria-label":t(`common.close`),children:(0,Q.jsx)(ve,{})})]}),(0,Q.jsx)(`div`,{className:`modal-desc leading-relaxed`,style:{whiteSpace:`pre-line`},children:t(`dash.effortCapHelp`)}),(0,Q.jsx)(`div`,{className:`modal-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>v(!1),children:t(`common.ok`)})})]})]}),(0,Q.jsxs)(`dialog`,{ref:S,id:`shadow-call-help-dialog`,className:`modal-overlay`,style:{display:b?`flex`:`none`,border:`none`,margin:0,maxWidth:`none`,maxHeight:`none`,width:`100%`,height:`100%`},"aria-labelledby":`shadow-call-help-title`,onCancel:e=>{e.preventDefault(),x(!1)},children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":t(`common.close`),tabIndex:-1,onClick:()=>x(!1)}),(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{id:`shadow-call-help-title`,children:t(`dash.shadowCallIntercept`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon`,onClick:()=>x(!1),"aria-label":t(`common.close`),children:(0,Q.jsx)(ve,{})})]}),(0,Q.jsx)(`div`,{className:`modal-desc leading-relaxed`,style:{whiteSpace:`pre-line`},children:t(`dash.shadowCallTooltip`,{models:yn(C?.sourceModels)})}),(0,Q.jsx)(`div`,{className:`modal-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>x(!1),children:t(`common.ok`)})})]})]}),(E||T)&&(0,Q.jsx)(sr,{reason:E?`selection`:`advisory`,mode:E??w?.mode??`default`,docsUrl:w?.docsUrl??`https://opencodex.me/guides/subagent-v1-default/`,busy:D,onContinue:()=>{O()},onChooseV1:()=>{k()},onDismiss:A})]})}function lr({t:e,models:t,modelsLoading:n,modelQuery:r,setModelQuery:i,filteredGroups:a,expandedProviders:o,setExpandedProviders:s}){return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`h-section`,children:[e(`dash.availableModels`),` `,(0,Q.jsx)(`span`,{className:`count`,children:t.length}),n&&(0,Q.jsx)(`span`,{className:`spin`,style:{marginLeft:4}})]}),t.length===0&&!n?(0,Q.jsx)(ln,{title:e(`dash.noModels`)}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`pws-search-wrap`,children:[(0,Q.jsx)(X,{className:`pws-search-icon`,width:14,height:14,"aria-hidden":`true`}),(0,Q.jsx)(`input`,{type:`search`,className:`input pws-search-input`,placeholder:e(`models.search`),value:r,onChange:e=>i(e.target.value),"aria-label":e(`models.search`)})]}),a.length===0?(0,Q.jsx)(`p`,{className:`muted text-control`,style:{margin:`4px 0`},children:e(`dash.modelsNoResults`)}):(0,Q.jsx)(`div`,{className:`dash-model-acc`,children:a.map(([t,n])=>{let i=r.trim().toLowerCase()!==``||o.has(t);return(0,Q.jsxs)(`div`,{className:`dash-model-group`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`dash-model-head`,onClick:()=>s(e=>{let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n}),"aria-expanded":i,children:[(0,Q.jsx)(Ke,{width:12,height:12,style:{transform:i?`rotate(90deg)`:`none`,transition:`transform .12s`,color:`var(--muted)`},"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`font-semibold`,children:be(t,e)}),(0,Q.jsx)(`span`,{className:`count`,children:n.length})]}),i&&(0,Q.jsx)(`div`,{className:`dash-model-chips`,children:n.map(e=>(0,Q.jsx)(`code`,{className:`dash-model-chip`,children:e.id},`${e.provider}/${e.id}`))})]},t)})})]})]})}function ur(e,t){let n=Math.max(0,Math.floor(e)),i=r(t,`uptime.day`),a=r(t,`uptime.hour`),o=r(t,`uptime.minute`),s=r(t,`uptime.second`);if(n<300)return`${n}${s}`;let c=Math.floor(n/60);if(c<60)return`${c}${o}`;let l=Math.floor(c/60);if(l<24){let e=c%60;return e>0?`${l}${a} ${e}${o}`:`${l}${a}`}let u=Math.floor(l/24),d=l%24;return d>0?`${u}${i} ${d}${a}`:`${u}${i}`}function dr(e){return!e||typeof e!=`object`||!(`usageIncomplete`in e)||e.usageIncomplete!==!0?{}:{usageIncomplete:!0,...`usageIncompleteReason`in e&&e.usageIncompleteReason===`oversized_rows`?{usageIncompleteReason:`oversized_rows`}:{}}}function fr(e){return!!e&&typeof e==`object`&&`error`in e&&e.error===`read_failed`}var pr=class extends Error{constructor(){super(`usage ledger read failed`),this.name=`UsageReadFailedError`}};async function mr(e,t){let n;try{n=await e.json()}catch{throw Error(t??`${e.status} ${e.statusText}`.trim())}if(fr(n))throw new pr;if(!e.ok)throw Error(t??`${e.status} ${e.statusText}`.trim());return n}function hr(e,t=`all`){return t===`codex`?[`usage-summary-30d`,e,`codex`].join(`:`):[`usage-summary-30d`,e,`all`].join(`:`)}function gr({data:e}){let t=O();return dr(e).usageIncomplete?(0,Q.jsx)($,{tone:`warn`,children:t(`usage.incomplete`)}):null}function _r({locale:e,health:t,providers:n,usage30d:r,usageLoading:i,healthLoading:a,startupHealth:o,projectConfigWarnings:s,maMode:c,maBusy:l,maHelpTriggerRef:u,maHelpOpen:d,setMaHelpOpen:f,switchMaMode:p,maError:m}){let h=O(),g=t?.status===`ok`;return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`dash-overview-head`,children:[(0,Q.jsxs)(`div`,{className:`stat-row`,children:[(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsxs)(`div`,{className:`label`,style:{display:`flex`,alignItems:`center`,gap:6},children:[h(`dash.multiAgent`),(0,Q.jsx)(`button`,{ref:u,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)`},onClick:()=>f(!0),"aria-label":h(`dash.multiAgent`),"aria-haspopup":`dialog`,"aria-controls":`multi-agent-help-dialog`,"aria-expanded":d,children:(0,Q.jsx)(we,{width:14,height:14,"aria-hidden":`true`})})]}),(0,Q.jsx)(`div`,{className:`value`,style:{display:`flex`,alignItems:`center`},children:(0,Q.jsx)(`div`,{className:`dash-ma-switch`,role:`radiogroup`,"aria-label":h(`dash.multiAgent`),style:{display:`inline-flex`,borderRadius:`var(--radius-pill)`,background:`var(--surface-soft, var(--raised))`,padding:3,gap:2},children:[`v1`,`default`,`v2`].map(e=>(0,Q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":c===e,className:`btn btn-sm text-caption dash-ma-option${c===e?` btn-primary`:` btn-ghost`}`,style:{borderRadius:`var(--radius-pill)`,border:`none`,background:c===e?void 0:`transparent`,color:c===e?void 0:`var(--muted)`},disabled:l,onClick:()=>void p(e),children:h(`models.v2Mode_${e}`)},e))})}),m&&(0,Q.jsx)(`div`,{role:`alert`,className:`text-caption`,style:{color:`var(--red)`,marginTop:4,textAlign:`center`,maxWidth:280,wordBreak:`break-word`},children:m})]}),(0,Q.jsxs)(`div`,{className:`stat`,"aria-busy":a||void 0,children:[(0,Q.jsx)(`div`,{className:`label`,children:h(`dash.status`)}),(0,Q.jsxs)(`div`,{className:`value`,style:{display:`flex`,alignItems:`center`,gap:9,color:g?`var(--green)`:`var(--red)`},children:[(0,Q.jsx)(`span`,{className:`dot ${g?`dot-green`:`dot-red`}`}),h(g?`dash.online`:`dash.offline`)]})]}),(0,Q.jsxs)(`div`,{className:`stat`,"aria-busy":a||void 0,children:[(0,Q.jsx)(`div`,{className:`label`,children:h(`dash.version`)}),(0,Q.jsx)(`div`,{className:`value mono dash-stat-version`,title:t?.version,children:t?.version??`—`})]}),(0,Q.jsxs)(`div`,{className:`stat`,"aria-busy":a||void 0,children:[(0,Q.jsx)(`div`,{className:`label`,children:h(`dash.uptime`)}),(0,Q.jsx)(`div`,{className:`value mono`,children:t?ur(t.uptime,e):`—`})]}),(0,Q.jsxs)(`div`,{className:`stat`,"aria-busy":a||void 0,children:[(0,Q.jsx)(`div`,{className:`label`,children:h(`dash.providers`)}),(0,Q.jsx)(`div`,{className:`value`,children:n.length})]}),(0,Q.jsxs)(`div`,{className:`stat`,"aria-busy":i||void 0,children:[(0,Q.jsx)(`div`,{className:`label`,children:h(`dash.tokens30d`)}),(0,Q.jsx)(`div`,{className:`value mono`,children:r&&r.summary.requests>0?K(r.summary.totalTokens,e):`—`}),(0,Q.jsx)(`div`,{className:`muted text-label dash-stat-coverage`,children:r&&r.summary.requests>0?h(`dash.coverage`).replace(`{pct}`,`${Math.round(r.summary.coverageRatio*100)}%`):`\xA0`})]})]}),(0,Q.jsx)(`div`,{className:`startup-health-slot`,"aria-live":`polite`,children:o?(0,Q.jsxs)(`button`,{type:`button`,className:`startup-health-bar`,onClick:()=>qt(`startup`),children:[(0,Q.jsx)(`span`,{className:`dot ${o===`error`?`dot-red`:o===`at-risk`?`dot-amber`:`dot-green`}`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`startup-health-bar__summary`,children:h(o===`error`?`startup.error`:o===`at-risk`?`startup.summary.atRisk`:o===`protected`?`startup.summary.protected`:`startup.summary.native`)})]}):(0,Q.jsxs)(`div`,{className:`startup-health-bar startup-health-bar--pending`,"aria-hidden":`true`,children:[(0,Q.jsx)(`span`,{className:`dot dot-amber`}),(0,Q.jsx)(`span`,{className:`startup-health-bar__summary`,children:`\xA0`})]})})]}),(0,Q.jsx)(gr,{data:r}),s.length>0&&(0,Q.jsxs)(`div`,{className:`notice notice-err maintenance-notice`,role:`alert`,children:[(0,Q.jsx)(Ae,{}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:h(`dash.projectConfigTitle`)}),(0,Q.jsx)(`div`,{className:`muted text-control`,style:{marginTop:4},children:h(`dash.projectConfigHint`)}),(0,Q.jsx)(`ul`,{className:`text-control`,style:{margin:`10px 0 0`,paddingLeft:18},children:s.map(e=>(0,Q.jsxs)(`li`,{style:{marginBottom:8},children:[(0,Q.jsx)(`code`,{children:e.path}),` — `,e.issues.join(`, `),(0,Q.jsx)(`div`,{className:`muted`,style:{marginTop:2},children:e.bypass})]},e.path))})]})]})]})}var vr=`gpt-daybreak-blue-latest`,yr=`gpt-6-astra`,br=`gpt-6-sol`,xr=`gpt-6-luna`,Sr=`gpt-6.1-sol`,Cr=`gpt-6-astra-minor`,wr=Object.freeze({contextWindow:272e3,maxContextWindow:872e3,maxInputTokens:872e3});Object.freeze({...wr,contextWindow:5e5});var Tr=new Set([vr,Cr]),Er=Object.freeze({[vr]:`gpt-5.6-sol`,[Cr]:yr});Object.freeze(Object.keys(Er)),Object.freeze({[vr]:{displayName:`Daybreak Blue`,description:`Frontier general-purpose model with safeguards for defensive cybersecurity work.`},[Cr]:{displayName:`GPT-6-Astra-Minor`,description:`Unreleased GPT-6 Astra variant; shown only when your account's Codex roster lists it.`}});var Dr=[...Object.freeze([`gpt-5.5`,`gpt-5.6-sol`,`gpt-5.6-terra`,`gpt-5.6-luna`,vr,yr,br,xr,Sr,Cr])],Or=new Set(Dr);[...Tr];var kr=18e5,Ar=[`account_unavailable`,`access_denied`,`rate_limited`,`upstream_error`,`redirect_blocked`,`destination_blocked`,`dns_failed`,`timeout`,`transport_error`,`response_unusable`];function jr(e){return Ar.find(t=>t===e)}var Mr=1e3,Nr=12e4,Pr=4e3;function Fr(e){try{let t=e.trim();if(/[\u0000-\u001f\u007f]/.test(t))return!1;let n=t.replace(/^[a-z][a-z\d+.-]*:[/\\]*/i,``).split(/[/\\]/,1)[0]??``;if(/[?#]/.test(t)||n.includes(`@`))return!1;let r=new URL(t);if(r.username||r.password||r.search||r.hash)return!1;let i=r.hostname,a=i===`localhost`||i===`[::1]`||/^(?:(?:127|10)\.\d+|172\.(?:1[6-9]|2\d|3[01])|192\.168)\.\d+\.\d+$/.test(i)||/^\[f[cd][\da-f]{2}:/.test(i)||/^\[::ffff:7f[\da-f]{2}:/.test(i);return r.protocol===`https:`||r.protocol===`http:`&&a&&r.pathname.replace(/\/+$/,``).endsWith(`/systemone`)}catch{return!1}}function Ir(e){return e?e.adapter===`jev-decision`?e.disabled===!0?`disabled`:Fr(e.baseUrl??``)?!e.defaultModel?.trim()&&!e.models?.[0]?.trim()?`model`:null:`endpoint`:`notDecision`:`missing`}function Lr(e){return e.name===`jev`?e.adapter===`jev-decision`&&e.disabled!==!0&&e.hasApiKey===!0:Ir(e)===null}var Rr={typesafe:`cws.jev.backend.typesafe`,systemone:`cws.jev.backend.systemone`,model:`cws.jev.backend.model`,unknown:`cws.jev.backend.unknown`};function zr(e){return e.decisionModel==null?e.decisionProvider!=null&&e.decisionProvider.trim()!==`jev`?`systemone`:`typesafe`:`model`}function Br(e,t,n){let r=e.trim(),i=e=>r===`combo/${e.id.trim()}`||!!e.alias?.trim()&&r===e.alias.trim()||!!e.model?.trim()&&r===e.model.trim();return!!n&&i(n)||t.some(e=>e.strategy===`jev`&&i(e))}function Vr(e,t,n,r){let i=new Set(t.filter(e=>!e.disabled&&e.adapter!==`jev-decision`).map(e=>e.name)),a=e.filter(e=>!e.disabled&&e.provider!==`combo`&&i.has(e.provider)).map(e=>e.namespaced?.trim()||`${e.provider}/${e.id}`);return a.push(...n.filter(e=>e.strategy!==`jev`).map(e=>e.model)),[...new Set(a)].filter(e=>!Br(e,n,r)).sort((e,t)=>e.localeCompare(t))}var Hr=[`low`,`medium`,`high`,`xhigh`,`max`,`ultra`],Ur=[`failover`,`round-robin`,`random`,`least-used`,`reset-window`,`jev`],Wr={failover:`cws.strategy.failover`,"round-robin":`cws.strategy.roundRobin`,random:`cws.strategy.random`,"least-used":`cws.strategy.leastUsed`,"reset-window":`cws.strategy.resetWindow`,jev:`cws.strategy.jev`},Gr={failover:`cws.strategy.failoverHint`,"round-robin":`cws.strategy.roundRobinHint`,random:`cws.strategy.randomHint`,"least-used":`cws.strategy.leastUsedHint`,"reset-window":`cws.strategy.resetWindowHint`,jev:`cws.strategy.jevHint`},Kr={failover:`cws.targets.failoverHint`,"round-robin":`cws.targets.roundRobinHint`,random:`cws.targets.randomHint`,"least-used":`cws.targets.leastUsedHint`,"reset-window":`cws.targets.resetWindowHint`,jev:`cws.targets.jevHint`},qr=new Set(Ur),Jr={missing:`cws.jev.decisionIssue.missing`,notDecision:`cws.jev.decisionIssue.notDecision`,disabled:`cws.jev.decisionIssue.disabled`,endpoint:`cws.jev.decisionIssue.endpoint`,model:`cws.jev.decisionIssue.model`};function Yr(e,t,n=`strict`){let r=e.filter(e=>e.provider.trim()&&e.model.trim());if(r.length===0)return[...Hr];let i=new Set(Hr),a=null;for(let e of r){let r=`${e.provider.trim()}/${e.model.trim()}`,o=t.get(r);if(o===void 0||n===`adaptive`&&o.length===0)continue;let s=o.filter(e=>i.has(e));if(a===null)a=s;else{let e=new Set(s);a=a.filter(t=>e.has(t))}}if(a===null)return[...Hr];let o=new Set(a);return Hr.filter(e=>o.has(e))}var Xr=kr,Zr=0;function Qr(e={}){return{provider:e.provider??``,model:e.model??``,...e.weight===void 0?{}:{weight:e.weight},...e.reasoningEfforts===void 0?{}:{reasoningEfforts:[...e.reasoningEfforts]},...e.modelProfile===void 0?{}:{modelProfile:e.modelProfile},clientKey:e.clientKey??`ct-${++Zr}`}}function $r(e){return e===`disabled`?`disabled`:`auto`}function ei(e){return e===`adaptive`?`adaptive`:`strict`}var ti=/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}$/,ni=/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}(\/[a-zA-Z0-9][a-zA-Z0-9._-]{0,63})?$/,ri=/^(?:gpt-|o1-|o3-|o4-|codex-)/;function ii(e){return ti.test(e.trim())}function ai(e){return`combo/${e.trim()}`}function oi(e,t){return(typeof t==`string`?t.trim():``)||ai(e)}function si(e,t){let n=t.trim(),r=e.nativeAlias&&(!n||n.includes(`/`)||!ri.test(n));return{...e,alias:n?t:null,model:oi(e.id,t),...r?{nativeAlias:!1,displayName:null}:{}}}function ci(e){let t=typeof e==`string`?e.trim():``;return t&&t!==`jev`?t:null}function li(e){return typeof e==`number`&&Number.isInteger(e)?e:null}function ui(e){return typeof e==`string`&&e.trim()?e.trim():null}function di(e){return typeof e==`string`&&qr.has(e)?e:`failover`}function fi(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=100?e:1}function pi(e){return typeof e==`string`&&Hr.includes(e)?e:null}function mi(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=1e4?e:void 0}function hi(e){if(!Array.isArray(e)||e.length===0)return;let t=[],n=new Set;for(let r of e){if(typeof r!=`string`||!Hr.includes(r))return;let e=r;if(n.has(e))return;n.add(e),t.push(e)}return t}function gi(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=mi(t.weight),o=hi(t.reasoningEfforts);a.push(Qr({provider:n,model:r,...i===void 0?{}:{weight:i},...o===void 0?{}:{reasoningEfforts:o},...typeof t.modelProfile==`string`?{modelProfile:t.modelProfile}:{}}))}let o=ci(t.decisionProvider),s=ui(t.decisionModel),c=li(t.decisionTimeoutMs);n.push({id:r,model:typeof t.model==`string`&&t.model.trim()?t.model.trim():oi(r,ui(t.alias)),alias:ui(t.alias),nativeAlias:t.nativeAlias===!0,displayName:ui(t.displayName),strategy:di(t.strategy),stickyLimit:fi(t.stickyLimit),defaultEffort:pi(t.defaultEffort),imageInput:$r(t.imageInput),reasoningEffortMode:ei(t.reasoningEffortMode),...o===null?{}:{decisionProvider:o},...s===null?{}:{decisionModel:s},...c===null?{}:{decisionTimeoutMs:c},targets:a})}return n.sort((e,t)=>e.id.localeCompare(t.id,void 0,{sensitivity:`base`}))}function _i(e){let t=[],n=[],r=[];for(let i of e)i.strategy===`failover`?t.push(i):i.strategy===`round-robin`?n.push(i):r.push(i);return{failover:t,roundRobin:n,other:r}}function vi(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 yi(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:null}function bi(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function xi(e,t){let n=yi(e.routingQuota);if(!n||n.state!==`available`&&n.state!==`exhausted`)return null;let r=bi(n.updatedAt),i=bi(n.validUntil);return r===null||r<0||r>t||t-r>=Xr||i===null||i<=t||i>r+Xr?null:{state:n.state,validUntil:i}}function Si(e,t){return xi(e,t)?.state??`unknown`}function Ci(e,t=Date.now()){if(!Array.isArray(e))return;let n;for(let r of e){let e=yi(r);if(!e||typeof e.provider!=`string`||!e.provider.trim())continue;let i=xi(e,t);i&&(n===void 0||i.validUntil<n)&&(n=i.validUntil)}return n}function wi(e,t=Date.now()){if(!Array.isArray(e))return{};let n={};for(let r of e){let e=yi(r),i=typeof e?.provider==`string`?e.provider.trim():``;if(!e||!i)continue;let a=Si(e,t);n[i]=Object.hasOwn(n,i)&&n[i]!==a?`unknown`:a}return n}function Ti(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 Ei(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&&Ti(i.targets,t.providerQuotaStates,t.providers)===`exhausted`&&n.push({id:i.id,model:i.model,reason:`all-targets-exhausted`});return n}function Di(e,t){return e.reasoningEfforts===void 0||t.reasoningEfforts===void 0?e.reasoningEfforts===t.reasoningEfforts:e.reasoningEfforts.length===t.reasoningEfforts.length&&e.reasoningEfforts.every((e,n)=>e===t.reasoningEfforts[n])}function Oi(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.reasoningEffortMode??`strict`)!==(t.reasoningEffortMode??`strict`)||e.strategy===`jev`&&((e.decisionProvider??null)!==(t.decisionProvider??null)||(e.decisionModel??null)!==(t.decisionModel??null)||(e.decisionTimeoutMs??null)!==(t.decisionTimeoutMs??null))||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)&&Di(e,r)&&(e.modelProfile??``)===(r.modelProfile??``)})}function ki(e,t={}){let n=e.strategy===`round-robin`||e.strategy===`random`;return{id:e.id.trim(),...t.renameFrom?{renameFrom:t.renameFrom}:{},...t.visionSidecarTargets?.length?{visionSidecarTargets:t.visionSidecarTargets}:{},combo:{targets:e.targets.map(e=>({provider:e.provider.trim(),model:e.model.trim(),...n?{weight:e.weight??1}:{},...e.reasoningEfforts===void 0?{}:{reasoningEfforts:[...e.reasoningEfforts]},...e.modelProfile?.trim()?{modelProfile:e.modelProfile.trim()}:{}})),strategy:e.strategy,defaultEffort:e.defaultEffort,imageInput:e.imageInput===`disabled`?`disabled`:`auto`,reasoningEffortMode:e.reasoningEffortMode===`adaptive`?`adaptive`:`strict`,...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()}:{},...e.strategy===`jev`?{decisionProvider:e.decisionModel?.trim()?null:ci(e.decisionProvider),decisionModel:e.decisionModel?.trim()||null,decisionTimeoutMs:e.decisionTimeoutMs??null}:{}}}}function Ai(e,t){let n=e.id.trim();if(!n)return`missingId`;if(!ii(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(!ni.test(r))return`invalidAlias`;if(r===`combo`||r.startsWith(`combo/`))return`aliasReservedNamespace`;if(!r.includes(`/`)&&ri.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&&!Or.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`;if(n.reasoningEfforts!==void 0&&(n.reasoningEfforts.length===0||n.reasoningEfforts.some(e=>!Hr.includes(e))||new Set(n.reasoningEfforts).size!==n.reasoningEfforts.length))return`invalidReasoningEfforts`;if(n.modelProfile!==void 0&&(n.modelProfile.length>512||[...n.modelProfile].some(e=>{let t=e.charCodeAt(0);return t<32&&t!==9&&t!==10&&t!==13||t===127})))return`invalidModelProfile`}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`&&(!Number.isInteger(e.stickyLimit)||e.stickyLimit<1||e.stickyLimit>100))return`invalidStickyLimit`;if(e.strategy===`round-robin`||e.strategy===`random`)for(let t of e.targets){let e=t.weight??1;if(!Number.isInteger(e)||e<1||e>1e4)return`invalidWeight`}if(e.strategy===`jev`&&e.decisionTimeoutMs!=null&&(!Number.isInteger(e.decisionTimeoutMs)||e.decisionTimeoutMs<1e3||e.decisionTimeoutMs>12e4))return`invalidDecisionTimeout`;if(e.strategy===`jev`&&zr(e)===`model`){let n=e.decisionModel?.trim()??``;if(!n||n.length>512||e.decisionProvider!=null||Br(n,t.combos??[],e)||t.decisionModels&&!t.decisionModels.includes(n))return`invalidDecisionModel`}return e.strategy===`jev`&&zr(e)===`systemone`&&(!e.decisionProvider?.trim()||Pi(e.decisionProvider,t.providers)!==null)?`invalidDecisionProvider`:e.targets.some(e=>t.providers[e.provider.trim()]?.disabled!==!0)?null:`noEnabledTarget`}function ji(e=``){return{id:e,model:e?ai(e):`combo/`,alias:null,nativeAlias:!1,displayName:null,strategy:`failover`,stickyLimit:1,defaultEffort:null,imageInput:`auto`,reasoningEffortMode:`strict`,targets:[Qr()]}}var Mi=[`gpt-6-astra`,`gpt-5.6-sol`,`gpt-5.6-luna`];function Ni(e,t,n){let r=Mi.flatMap(n=>{let r=e.find(e=>e.id===n&&(t===void 0||t.has(e.provider)));return r?[Qr({provider:r.provider,model:r.id})]:[]});return{id:`jev-auto`,model:`jev-auto`,alias:`jev-auto`,nativeAlias:!1,displayName:null,strategy:`jev`,stickyLimit:1,defaultEffort:null,imageInput:`auto`,reasoningEffortMode:`adaptive`,decisionProvider:ci(n),targets:r.length>0?r:[Qr()]}}function Pi(e,t){let n=ci(e);return n===null?null:Ir(Object.hasOwn(t,n)?t[n]:void 0)}function Fi(e,t){let n=e.filter(e=>e.adapter===`jev-decision`&&e.name!==`jev`).toSorted((e,t)=>e.name.localeCompare(t.name)).map(e=>{let t=Ir(e);return{id:e.name,...e.baseUrl?{baseUrl:e.baseUrl}:{},...t?{issue:t}:{}}}),r=ci(t),i=r!==null&&!n.some(e=>e.id===r)?[{id:r,issue:e.some(e=>e.name===r)?`notDecision`:`missing`}]:[];return[{id:null},...n,...i]}function Ii(e,t){if(e.strategy!==`jev`)return null;let n=ci(e.decisionProvider),r=n===null?void 0:t.find(e=>e.name===n);return{provider:n,model:e.decisionModel?.trim()||null,baseUrl:r?.baseUrl?.trim()||null,timeoutMs:e.decisionTimeoutMs??null}}var Li=[`none`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`,`ultra`],Ri=[`manual`,`auto`],zi=300,Bi=[`manual`,`manual+auto`,`auto`],Vi={manual:`compactionRouting.triggersManual`,"manual+auto":`compactionRouting.triggersBoth`,auto:`compactionRouting.triggersAuto`},Hi=[`all`,`selected`],Ui={all:`compactionRouting.sourcesAll`,selected:`compactionRouting.sourcesSelected`};function Wi(e){if(!e)return`manual`;let t=e.includes(`auto`);return e.includes(`manual`)?t?`manual+auto`:`manual`:t?`auto`:`manual`}function Gi(e){if(e===`auto`)return[`auto`];if(e===`manual+auto`)return[`manual`,`auto`]}function Ki(e){let t=new Map;for(let n of gi(e))t.set(n.model,[...new Set(n.targets.flatMap(e=>e.provider?[e.provider]:[]))]);return t}function qi(e){let t=e.compactionRouting;if(t==null)return null;if(!t||typeof t!=`object`||!(`model`in t)||typeof t.model!=`string`||!t.model.trim())throw Error(`invalid settings`);let n=`reasoningEffort`in t?t.reasoningEffort:void 0;if(n!==void 0&&(typeof n!=`string`||!Li.includes(n)))throw Error(`invalid effort`);let r=`triggers`in t?t.triggers:void 0,i=`sourceModels`in t?t.sourceModels:void 0;if(i!==void 0&&(!Array.isArray(i)||!i.length||!i.every(e=>typeof e==`string`&&e.trim())))throw Error(`invalid sourceModels`);if(r!==void 0&&(!Array.isArray(r)||r.length===0||!r.every(e=>typeof e==`string`&&Ri.includes(e))||new Set(r).size!==r.length))throw Error(`invalid triggers`);return{model:t.model,...n?{reasoningEffort:n}:{},...r?{triggers:r}:{},...i?{sourceModels:i}:{}}}function Ji(e){if(!e)return``;try{return new URL(e).hostname||e}catch{return e}}function Yi(e,t){let n=t.get(e);return n?`${e} (${n})`:e}function Xi(e){return(0,Q.jsx)(Zi,{...e},e.apiBase)}function Zi({apiBase:e,models:t,providers:n=[]}){let r=O(),[i,a]=(0,Z.useState)(void 0),[o,s]=(0,Z.useState)(``),[c,l]=(0,Z.useState)(``),[u,d]=(0,Z.useState)(`manual`),[f,p]=(0,Z.useState)(`all`),[m,h]=(0,Z.useState)([]),[g,_]=(0,Z.useState)(``),[v,y]=(0,Z.useState)(!1),[b,x]=(0,Z.useState)(!1),[S,C]=(0,Z.useState)(null),[w,T]=(0,Z.useState)(()=>new Map),E=(0,Z.useRef)(!1),D=(0,Z.useRef)(null),k=(0,Z.useCallback)(e=>{a(e),s(e?.model??``),l(e?.reasoningEffort??``),d(Wi(e?.triggers)),p(e?.sourceModels?`selected`:`all`),h(e?.sourceModels??[])},[]),j=e=>{h(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e]),C(null)},M=(0,Z.useCallback)(async()=>{if(D.current)return;let t=A(15e3);D.current=t,x(!1);try{let n=qi(await Tn(await fetch(`${e}/api/settings`,{signal:t.signal})));E.current&&D.current===t&&k(n);let r=await fetch(`${e}/api/combos`,{signal:t.signal}).then(Tn).then(Ki).catch(()=>new Map);E.current&&D.current===t&&T(r)}catch{E.current&&D.current===t&&x(!0)}finally{t.clear(),D.current===t&&(D.current=null)}},[e,k]);(0,Z.useEffect)(()=>{E.current=!0;let e=window.setTimeout(()=>{M()},0);return()=>{window.clearTimeout(e),E.current=!1,D.current?.controller.abort(),D.current?.clear(),D.current=null}},[M]);let N=async()=>{if(D.current||i===void 0)return;let t=A(15e3);D.current=t,y(!0),C(null);try{let n=qi(await Tn(await fetch(`${e}/api/settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({compactionRouting:o?{model:o,...c?{reasoningEffort:c}:{},...Gi(u)?{triggers:Gi(u)}:{},...f===`selected`&&m.length>0?{sourceModels:m}:{}}:null}),signal:t.signal})));E.current&&D.current===t&&(k(n),C(`saved`))}catch{E.current&&D.current===t&&C(`failed`)}finally{t.clear(),E.current&&D.current===t&&y(!1),D.current===t&&(D.current=null)}},P=[{value:``,label:r(`compactionRouting.currentModel`)},...[...new Set([...t.map(e=>e.namespaced),...o?[o]:[]])].map(e=>({value:e,label:xe(e,r)}))],F=[...new Set([...n.map(e=>e.name),...t.flatMap(e=>e.provider?[e.provider]:[])])].map(e=>`${e}/*`),I=new Set([...F,...t.map(e=>e.namespaced)]),L=(i?.sourceModels??[]).filter(e=>!I.has(e)),R=v||i===void 0||b,z=i?.sourceModels?`selected`:`all`,B=new Set(i?.sourceModels),V=o!==(i?.model??``)||c!==(i?.reasoningEffort??``)||u!==Wi(i?.triggers)||f!==z||f===`selected`&&(m.length!==(i?.sourceModels?.length??0)||m.some(e=>!B.has(e))),H=f===`selected`&&m.length===0,U=new Set(m),W=[...new Set(t.map(e=>e.namespaced))].filter(e=>e.toLowerCase().includes(g.trim().toLowerCase())),G=e=>(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:U.has(e),disabled:R,onChange:()=>{j(e)}}),(0,Q.jsx)(`span`,{children:e})]},e),ee=w.get(o),te=ee!==void 0||o.startsWith(ai(``)),K=o.slice(0,Math.max(o.indexOf(`/`),0)),q=new Map(n.map(e=>[e.name,Ji(e.baseUrl)]).filter(([,e])=>e)),ne=te?``:Yi(K||o,q),J=ee?.map(e=>Yi(e,q)).join(`, `)||r(`compactionRouting.comboProvidersUnknown`),Y=u!==`manual`,re=m.join(`, `),ie=!o||H?null:te?f===`selected`?r(`compactionRouting.comboWarningScoped`,{combo:o,providers:J,sources:re}):r(`compactionRouting.comboWarning`,{combo:o,providers:J}):f===`selected`?r(`compactionRouting.providerWarningScoped`,{provider:ne,sources:re}):r(`compactionRouting.providerWarning`,{provider:ne});return(0,Q.jsxs)(`section`,{className:`panel`,"aria-labelledby":`compaction-routing-title`,"aria-busy":v||i===void 0&&!b,children:[(0,Q.jsxs)(`div`,{className:`spread`,style:{alignItems:`flex-start`,flexWrap:`wrap`},children:[(0,Q.jsxs)(`div`,{style:{flex:`1 1 20rem`,minWidth:0},children:[(0,Q.jsx)(`div`,{className:`font-semibold`,id:`compaction-routing-title`,children:r(`compactionRouting.title`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:r(`compactionRouting.description`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:r(`compactionRouting.dataNotice`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:r(`compactionRouting.effortHint`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:r(`compactionRouting.sourcesHint`)})]}),(0,Q.jsxs)(`div`,{className:`dash-delegation-controls compaction-routing-controls`,style:{flex:`0 1 auto`},children:[(0,Q.jsxs)(`div`,{className:`compaction-field`,children:[(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`compaction-routing-model`,children:r(`compactionRouting.model`)}),(0,Q.jsx)(cn,{id:`compaction-routing-model`,value:o,options:P,disabled:R,label:r(`compactionRouting.model`),onChange:e=>{s(e),e||(l(``),d(`manual`),p(`all`),h([])),C(null)}})]}),(0,Q.jsxs)(`div`,{className:`compaction-field`,children:[(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`compaction-routing-triggers`,children:r(`compactionRouting.triggers`)}),(0,Q.jsx)(cn,{id:`compaction-routing-triggers`,value:u,disabled:R||!o,align:`right`,label:r(`compactionRouting.triggers`),options:Bi.map(e=>({value:e,label:r(Vi[e])})),onChange:e=>{d(e),C(null)}})]}),(0,Q.jsxs)(`div`,{className:`compaction-field`,children:[(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`compaction-routing-sources`,children:r(`compactionRouting.sources`)}),(0,Q.jsx)(cn,{id:`compaction-routing-sources`,value:f,disabled:R||!o,align:`right`,label:r(`compactionRouting.sources`),options:Hi.map(e=>({value:e,label:r(Ui[e])})),onChange:e=>{p(e),C(null)}})]}),(0,Q.jsxs)(`div`,{className:`compaction-field`,children:[(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`compaction-routing-effort`,children:r(`compactionRouting.effort`)}),(0,Q.jsx)(cn,{id:`compaction-routing-effort`,value:c,disabled:R||!o,align:`right`,label:r(`compactionRouting.effort`),options:[{value:``,label:r(`compactionRouting.currentEffort`)},...Li.map(e=>({value:e,label:r(`models.reasoningEffort.${e}`)}))],onChange:e=>{l(e),C(null)}})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:R||!V||H,onClick:()=>{N()},children:r(v?`common.saving`:`common.save`)})]})]}),o&&f===`selected`&&(0,Q.jsxs)(`div`,{className:`compaction-sources-block`,children:[(0,Q.jsx)(`div`,{className:`field-label compaction-sources-title`,children:r(`compactionRouting.sourcesGridTitle`)}),(0,Q.jsxs)(`div`,{className:`source-scope-groups`,children:[F.length>0&&(0,Q.jsxs)(`fieldset`,{className:`source-scope-group`,children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:r(`compactionRouting.sourcesProviders`)}),F.map(G)]}),t.length>0&&(0,Q.jsxs)(`fieldset`,{className:`source-scope-group`,children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:r(`compactionRouting.sourcesModels`)}),(0,Q.jsx)(`input`,{type:`search`,className:`input`,value:g,disabled:R,"aria-label":r(`pws.modelSearchPlaceholder`),placeholder:r(`pws.modelSearchPlaceholder`),onChange:e=>_(e.target.value)}),W.slice(0,zi).map(G),W.length>zi&&(0,Q.jsx)(`p`,{className:`muted text-label`,children:r(`pws.modelsTruncated`,{shown:zi,total:W.length})})]}),L.length>0&&(0,Q.jsxs)(`fieldset`,{className:`source-scope-group`,children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:r(`compactionRouting.sourcesSaved`)}),L.map(G)]}),H&&(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:r(`compactionRouting.sourcesNone`)})]})]}),ie&&(0,Q.jsxs)(`div`,{className:`notice-warn`,role:`note`,style:{marginTop:12},children:[(0,Q.jsx)(Ae,{width:14}),` `,ie]}),o&&Y&&(0,Q.jsxs)(`div`,{className:`notice-warn`,role:`note`,style:{marginTop:12},children:[(0,Q.jsx)(Ae,{width:14}),` `,r(`compactionRouting.autoNotice`)]}),b&&(0,Q.jsxs)(`div`,{className:`notice notice-err`,role:`alert`,style:{marginTop:12,marginBottom:0},children:[r(`compactionRouting.loadFailed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{M()},children:r(`common.retry`)})]}),S===`failed`&&(0,Q.jsx)(`div`,{className:`notice notice-err`,role:`alert`,style:{marginTop:12,marginBottom:0},children:r(`compactionRouting.saveFailed`)}),S===`saved`&&(0,Q.jsx)(`div`,{className:`muted setting-hint`,role:`status`,children:r(`compactionRouting.saved`)})]})}function Qi(e){if(!(`reasoningRetention`in e))throw Error(`Missing reasoningRetention settings`);return e.reasoningRetention??null}function $i({apiBase:e}){let t=O();return(0,Q.jsxs)(`details`,{className:`panel`,children:[(0,Q.jsx)(`summary`,{className:`font-semibold`,children:t(`reasoningRetention.advanced`)}),(0,Q.jsx)(ea,{apiBase:e},e)]})}function ea({apiBase:e}){let t=O(),[n,r]=(0,Z.useState)(),[i,a]=(0,Z.useState)(!1),[o,s]=(0,Z.useState)(`20`),[c,l]=(0,Z.useState)(`100000`),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(null),g=(0,Z.useRef)(!1),_=(0,Z.useRef)(null),v=(0,Z.useCallback)(e=>{r(e),a(e?.enabled===!0),s(String(e?.maxContextPercent??20)),l(String(e?.maxTokens??1e5))},[]),y=(0,Z.useCallback)(async()=>{if(_.current)return;let t=A(15e3);_.current=t,p(!1);try{let n=Qi(await Tn(await fetch(`${e}/api/settings`,{signal:t.signal})));g.current&&_.current===t&&v(n)}catch{g.current&&_.current===t&&p(!0)}finally{t.clear(),_.current===t&&(_.current=null)}},[e,v]);(0,Z.useEffect)(()=>{g.current=!0;let e=window.setTimeout(()=>{y()},0);return()=>{window.clearTimeout(e),g.current=!1,_.current?.controller.abort(),_.current?.clear(),_.current=null}},[y]);let b=o.trim()!==``&&Number.isFinite(Number(o))&&Number(o)>0&&Number(o)<=100,x=c.trim()!==``&&Number.isSafeInteger(Number(c))&&Number(c)>0,S=!i||b&&x,C=i!==(n?.enabled===!0)||i&&(Number(o)!==(n?.maxContextPercent??20)||Number(c)!==(n?.maxTokens??1e5)),w=async(t=!1)=>{if(_.current||n===void 0||!t&&!S)return;let r=A(15e3);_.current=r,d(!0),h(null);try{let n=Qi(await Tn(await fetch(`${e}/api/settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},signal:r.signal,body:JSON.stringify({reasoningRetention:t?null:i?{enabled:!0,maxContextPercent:Number(o),maxTokens:Number(c)}:{enabled:!1}})})));g.current&&_.current===r&&(v(n),h(`saved`))}catch{g.current&&_.current===r&&h(`failed`)}finally{r.clear(),g.current&&_.current===r&&d(!1),_.current===r&&(_.current=null)}},T=u||n===void 0||f;return(0,Q.jsxs)(`section`,{"aria-labelledby":`reasoning-retention-title`,"aria-busy":u||n===void 0&&!f,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,id:`reasoning-retention-title`,children:t(`reasoningRetention.title`)}),(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:t(`reasoningRetention.description`)}),(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:t(`reasoningRetention.storageHint`)}),(0,Q.jsx)(on,{on:i,disabled:T,label:t(`reasoningRetention.enable`),showLabel:!0,onClick:()=>{a(e=>!e),h(null)}}),(0,Q.jsxs)(`div`,{className:`row`,style:{flexWrap:`wrap`,alignItems:`flex-end`},children:[i&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`label`,{className:`field-label`,htmlFor:`reasoning-retention-percent`,children:[t(`reasoningRetention.percent`),(0,Q.jsx)(`input`,{id:`reasoning-retention-percent`,className:`input`,type:`number`,min:`0`,max:`100`,step:`any`,value:o,disabled:T,"aria-invalid":!b||void 0,"aria-describedby":b?void 0:`reasoning-retention-error`,onInput:e=>{s(e.currentTarget.value),h(null)}})]}),(0,Q.jsxs)(`label`,{className:`field-label`,htmlFor:`reasoning-retention-tokens`,children:[t(`reasoningRetention.tokens`),(0,Q.jsx)(`input`,{id:`reasoning-retention-tokens`,className:`input`,type:`number`,min:`1`,step:`1`,value:c,disabled:T,"aria-invalid":!x||void 0,"aria-describedby":x?void 0:`reasoning-retention-error`,onInput:e=>{l(e.currentTarget.value),h(null)}})]})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:T||!S||!C,onClick:()=>{w()},children:t(`common.save`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:T||n===null&&!C,onClick:()=>{w(!0)},children:t(`reasoningRetention.reset`)})]}),!S&&(0,Q.jsx)(`div`,{id:`reasoning-retention-error`,className:`notice notice-err`,role:`alert`,children:t(`reasoningRetention.invalid`)}),f&&(0,Q.jsxs)(`div`,{className:`notice notice-err`,role:`alert`,children:[t(`reasoningRetention.loadFailed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{y()},children:t(`common.retry`)})]}),m===`failed`&&(0,Q.jsx)(`div`,{className:`notice notice-err`,role:`alert`,children:t(`reasoningRetention.saveFailed`)}),m===`saved`&&(0,Q.jsx)(`div`,{className:`muted setting-hint`,role:`status`,children:t(`reasoningRetention.saved`)})]})}var ta=0;function na(e){let t=e.split(/\n{2,}/).map(e=>e.trim()).filter(e=>e.length>0);return t.length>0?t:[e]}function ra(e,t,n,r){let i=o[e],a=`opencodex-action-dialog-${++ta}`,s=document.activeElement,c=typeof s?.focus==`function`?s:null,l=!1,u=document.createElement(`dialog`);u.id=a,u.className=`modal-overlay`,u.setAttribute(`aria-labelledby`,`${a}-body`);let d=document.createElement(`button`);d.type=`button`,d.className=`modal-backdrop-dismiss`,d.tabIndex=-1,d.setAttribute(`aria-label`,i[`common.close`]);let f=document.createElement(`form`);f.className=`modal-card`;let p=e=>{if(!l){l=!0,window.removeEventListener(`hashchange`,m),window.removeEventListener(`popstate`,m),document.removeEventListener(`keydown`,h),r?.removeEventListener(`abort`,m);try{u.open&&typeof u.close==`function`&&u.close(),u.remove(),c?.isConnected&&c.focus()}finally{n(e)}}};function m(){p(t)}function h(e){e.key===`Escape`&&p(t)}return d.addEventListener(`click`,()=>p(t)),u.addEventListener(`cancel`,e=>{e.preventDefault(),p(t)}),window.addEventListener(`hashchange`,m),window.addEventListener(`popstate`,m),r?.addEventListener(`abort`,m),u.append(d,f),document.body.append(u),typeof u.showModal==`function`?u.showModal():(u.setAttribute(`open`,``),document.addEventListener(`keydown`,h)),{form:f,bodyId:`${a}-body`,finish:p}}function ia(e,t,n,r=`div`){let i=document.createElement(r);i.id=t;for(let e of na(n)){let t=document.createElement(`p`);t.className=`modal-desc`,t.textContent=e,i.append(t)}return e.append(i),i}function aa(e){let t=e.locale??a(),n=o[t],r=e.tone===`danger`;return new Promise(i=>{if(e.signal?.aborted){i(!1);return}let{form:a,bodyId:o,finish:s}=ra(t,!1,i,e.signal);ia(a,o,e.message);let c=document.createElement(`div`);c.className=`modal-actions`;let l=document.createElement(`button`);l.type=`button`,l.className=`btn btn-ghost`,l.textContent=n[`common.cancel`],l.addEventListener(`click`,()=>s(!1));let u=document.createElement(`button`);u.type=`submit`,u.className=r?`btn btn-danger`:`btn btn-primary`,u.textContent=e.confirmLabel??n[`common.ok`],a.addEventListener(`submit`,e=>{e.preventDefault(),s(!0)}),c.append(l,u),a.append(c),queueMicrotask(()=>(r?l:u).focus())})}function oa(e){let t=e.locale??a(),n=o[t];return new Promise(r=>{if(e.signal?.aborted){r(null);return}let{form:i,bodyId:a,finish:o}=ra(t,null,r,e.signal),s=document.createElement(`input`),c=`${a}-input`,l=ia(i,a,e.message,`label`);l.className=`field-label`,l.setAttribute(`for`,c),s.id=c,s.className=`input`,s.type=`text`,s.value=e.initialValue??``,s.spellcheck=!1,s.autocapitalize=`none`,e.maxLength!==void 0&&(s.maxLength=e.maxLength);let u=document.createElement(`div`),d=`${a}-error`;u.id=d,u.className=`notice notice-err`,u.setAttribute(`role`,`alert`),u.hidden=!0;let f=e=>{u.textContent=e??``,u.hidden=e===null,e===null?(s.removeAttribute(`aria-invalid`),s.removeAttribute(`aria-describedby`)):(s.setAttribute(`aria-invalid`,`true`),s.setAttribute(`aria-describedby`,d))},p=document.createElement(`div`);p.className=`modal-actions`;let m=document.createElement(`button`);m.type=`button`,m.className=`btn btn-ghost`,m.textContent=n[`common.cancel`],m.addEventListener(`click`,()=>o(null));let h=document.createElement(`button`);h.type=`submit`,h.className=`btn btn-primary`,h.textContent=e.confirmLabel??n[`common.save`],i.addEventListener(`submit`,t=>{t.preventDefault();let n=s.value,r=e.validate?.(n)??null;if(f(r),r!==null){h.disabled=!0,s.focus();return}o(n)}),s.addEventListener(`input`,()=>{h.disabled&&=!1,u.hidden||f(null)}),p.append(m,h),i.append(s,u,p),queueMicrotask(()=>s.focus())})}function sa(){return ut()}function ca(e,t){return typeof window<`u`&&typeof window.setInterval==`function`?window.setInterval(e,t):setInterval(e,t)}function la(e){if(typeof window<`u`&&typeof window.clearInterval==`function`){window.clearInterval(e);return}clearInterval(e)}function ua(e,t,n){let r=n?.pauseWhenHidden!==!1,i=null,a=!1,o=()=>{try{e()}catch(e){console.error(`[visibility-poll]`,e)}},s=()=>{i!==null||a||(i=ca(o,t))},c=()=>{i!==null&&(la(i),i=null)},l=()=>{if(r){if(sa()){c();return}o(),s()}};r&&sa()||s();let u=r?dt(l):null;return n?.immediate&&o(),()=>{a=!0,c(),u?.()}}var da=new Map;function fa(e,t){let n=`${e}:${t}`,r=da.get(n);return r||(r=new Intl.NumberFormat(e,{minimumFractionDigits:t,maximumFractionDigits:t}),da.set(n,r)),r}var pa=new Map;function ma(e){let t=pa.get(e);return t||(t=new Intl.NumberFormat(e),pa.set(e,t)),t}function ha(e,t){if(!Number.isFinite(e)||e<=0)return`0 B`;let n=[`B`,`KiB`,`MiB`,`GiB`,`TiB`],r=Math.min(Math.floor(Math.log(e)/Math.log(1024)),n.length-1),i=e/1024**r;return`${fa(t,r===0?0:1).format(i)} ${n[r]}`}function ga(e,t){return!Number.isFinite(e)||e<0?`—`:ur(e/1e3,t)}function _a(e){return typeof e.observedBytes==`number`?e.observedBytes:Math.max(e.rss,e.external??0,e.arrayBuffers??0)}function va(e){if(e.observedMetric)return e.observedMetric;if(e.watchdog?.observedMetric)return e.watchdog.observedMetric;let t=[{metric:`rss`,bytes:e.rss},{metric:`external`,bytes:e.external??0},{metric:`arrayBuffers`,bytes:e.arrayBuffers??0}];return t.reduce((e,t)=>t.bytes>e.bytes?t:e,t[0]).metric}function ya(e){if(e.length<2)return null;let t=e[0],n=e[e.length-1],r=n.at-t.at;return r<=0?null:(_a(n)-_a(t))/r*36e5}function ba({label:e,value:t,sub:n,tone:r}){return(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`label`,children:e}),(0,Q.jsx)(`div`,{className:`value mono${r?` value--${r}`:``}`,children:t}),n&&(0,Q.jsx)(`div`,{className:`stat-sub mono`,children:n})]})}function xa({observedBytes:e,thresholdBytes:t,metric:n,locale:r,t:i}){let a=e!==null&&t!==null&&t>0?e/t:null,o=a===null?`unknown`:a>=1?`over`:a>=.75?`warn`:`ok`,s=a===null?null:Math.round(a*100);return(0,Q.jsxs)(`div`,{className:`mem-pressure mem-pressure--${o}`,children:[(0,Q.jsxs)(`div`,{className:`mem-pressure-head`,children:[(0,Q.jsxs)(`span`,{className:`mem-pressure-label`,children:[i(`dash.mem.pressure`),n?(0,Q.jsx)(`span`,{className:`mem-pressure-metric mono`,children:n}):null]}),(0,Q.jsxs)(`span`,{className:`mem-pressure-figure mono`,children:[e===null?`—`:ha(e,r),t!==null&&(0,Q.jsxs)(`span`,{className:`mem-pressure-limit`,children:[` / `,ha(t,r)]})]})]}),(0,Q.jsx)(`div`,{className:`mem-pressure-track`,role:`presentation`,children:(0,Q.jsx)(`span`,{className:`mem-pressure-fill`,style:{"--mem-scale":String(a===null?0:Math.min(1,Math.max(.01,a)))}})}),(0,Q.jsx)(`div`,{className:`mem-pressure-foot`,children:s===null?i(`dash.mem.pressureUnknown`):i(`dash.mem.pressureOf`,{pct:s})})]})}var Sa=60,Ca=1500,wa=12e4;function Ta({apiBase:e}){let{locale:n,t:r}=t(),[i,a]=(0,Z.useState)(null),[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(`idle`),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{let t=!1;return(async()=>{try{let n=await fetch(`${e}/api/startup-health`);if(!n.ok||t)return;let r=await n.json();t||p(r.protection===`none`)}catch{}})(),()=>{t=!0}},[e]),(0,Z.useEffect)(()=>{let t=!1,n=!1,r=null,i=async()=>{if(n)return;n=!0;let i=A(1e4);r=i;try{let n=await fetch(`${e}/api/system/memory`,{signal:i.signal});if(!n.ok)throw Error(`memory unavailable`);let r=await n.json();if(t)return;a(r),s(!1),h(typeof r.activeTurnCount==`number`),r.isDraining&&c===`idle`&&l(`draining`),(c===`draining`||c===`reconnecting`)&&g!=null&&typeof r.pid==`number`&&r.pid!==g&&!r.isDraining&&(l(`idle`),_(null),d(null))}catch{if(t)return;c===`draining`||c===`reconnecting`?l(`reconnecting`):s(!0)}finally{i.clear(),r===i&&(r=null),n=!1}};i();let o=ua(()=>void i(),5e3);return()=>{t=!0,r?.controller.abort(),r?.clear(),o()}},[e,c,g]),(0,Z.useEffect)(()=>{if(c!==`reconnecting`)return;let t=!1,n=!1,i=null,a=Date.now(),o=()=>{if(n||t)return;n=!0;let o=A(5e3);i=o,fetch(`${e}/api/system/health`,{cache:`no-store`,signal:o.signal}).then(async e=>{if(t)return;if(!e.ok){Date.now()-a>=wa&&(l(`error`),d(r(`dash.mem.restartFailed`)));return}let n=g==null;if(g!=null)try{let t=await e.json();n=typeof t.pid==`number`&&t.pid!==g}catch{n=!0}if(!t){if(n){l(`idle`),_(null),d(null);return}Date.now()-a>=wa&&(l(`error`),d(r(`dash.mem.restartFailed`)))}}).catch(()=>{t||Date.now()-a>=wa&&(l(`error`),d(r(`dash.mem.restartFailed`)))}).finally(()=>{o.clear(),i===o&&(i=null),n=!1})};o();let s=setInterval(o,Ca);return()=>{t=!0,i?.controller.abort(),i?.clear(),clearInterval(s)}},[e,c,g,r]);let v=async()=>{let t=i?.activeTurnCount??0,n=[r(`dash.mem.restartConfirm`,{count:t,seconds:Sa})];if(f&&n.push(r(`dash.mem.restartNoSupervisor`)),await aa({message:n.join(`
1
+ import{A as e,C as t,D as n,E as r,O as i,S as a,T as o,_ as s,a as c,b as l,c as u,d,f,g as p,h as m,i as h,j as g,k as _,l as v,m as y,n as b,o as x,p as S,r as C,s as w,t as T,u as E,v as D,w as O,x as k,y as A}from"./index-B5bsvxor.js";import{$ as j,A as M,At as N,B as P,Bt as F,C as I,Ct as L,D as R,Dt as z,E as B,Et as V,F as H,Ft as U,G as W,H as G,I as ee,It as te,J as K,K as q,L as ne,Lt as J,M as Y,Mt as re,N as ie,Nt as X,O as ae,Ot as oe,P as se,Pt as ce,Q as le,R as ue,Rt as de,S as fe,St as pe,T as me,Tt as he,U as ge,V as _e,Vt as ve,W as ye,X as be,Y as xe,Z as Se,_ as Ce,_t as we,at as Te,b as Ee,bt as De,ct as Oe,dt as ke,et as Ae,ft as je,g as Me,gt as Ne,h as Pe,ht as Fe,it as Ie,j as Le,jt as Re,k as ze,kt as Be,lt as Ve,m as He,mt as Ue,n as We,nt as Ge,ot as Ke,pt as qe,q as Je,rt as Ye,st as Xe,t as Ze,tt as Qe,ut as $e,v as et,vt as tt,w as nt,wt as rt,x as it,xt as at,y as ot,yt as st,z as ct,zt as lt}from"./quota-summary-D8y2wTsB.js";var Z=g(e(),1);function ut(){return typeof document<`u`&&document.visibilityState===`hidden`||typeof window<`u`&&window.__OPENCODEX_HOST_VISIBLE__===!1}function dt(e){let t=ut(),n=()=>{let n=ut();n!==t&&(t=n,e())},r=e=>{let t=e.detail;typeof window<`u`&&typeof t==`boolean`&&(window.__OPENCODEX_HOST_VISIBLE__=t),n()};return typeof document<`u`&&document.addEventListener(`visibilitychange`,n),typeof window<`u`&&window.addEventListener(`opencodex:host-visibility`,r),()=>{typeof document<`u`&&document.removeEventListener(`visibilitychange`,n),typeof window<`u`&&window.removeEventListener(`opencodex:host-visibility`,r)}}var ft=new Map,pt=new Set,mt=3e4,ht=`ocx-resource-deadline`,gt={data:void 0,error:void 0,loading:!1,refreshing:!1,hasSucceeded:!1,lastAttemptOk:!1};function _t(e){let t=ft.get(e);return t||(t={key:e,snapshot:{data:void 0,error:void 0,loading:!1,refreshing:!1,hasSucceeded:!1,lastAttemptOk:!1},listeners:new Set,pollByListener:new Map,pauseWhenHiddenByListener:new Map,fetcherByListener:new Map,deadlineByListener:new Map,subscriberCount:0,pollIntervalMs:void 0,inflight:null,inflightOwner:null,generation:0,seedNeedsRevalidate:!1,lastSettledAt:void 0},ft.set(e,t)),t}function vt(e){for(let t of e.listeners)t()}var yt=new Map;function bt(e){for(let[t,n]of e.pollByListener)if(typeof n==`number`&&n>0&&e.pauseWhenHiddenByListener.get(t)===!1)return!0;return!1}function xt(e){if(e.stores.size===0)return!1;if(!Dt())return!0;for(let t of e.stores)if(bt(t))return!0;return!1}function St(e){for(let t of e.stores){let e=Ot(t);e&&Pt(t,e.fetcher,{replaceInflight:!1,owner:e.owner,deadlineMs:e.deadlineMs})}}function Ct(e,t){let n=xt(t);if(n&&t.timer===null){t.timer=setInterval(()=>St(t),e);return}!n&&t.timer!==null&&(clearInterval(t.timer),t.timer=null),t.stores.size===0&&yt.delete(e)}function wt(){for(let[e,t]of[...yt])Ct(e,t)}function Tt(e){let t=e.pollIntervalMs;if(t===void 0)return;let n=yt.get(t);e.pollIntervalMs=void 0,n&&(n.stores.delete(e),Ct(t,n))}function Et(e,t){let n=yt.get(t);n||(n={timer:null,stores:new Set},yt.set(t,n)),n.stores.add(e),e.pollIntervalMs=t,Ct(t,n)}function Dt(){return ut()}function Ot(e){if(!Dt())return kt(e);for(let[t,n]of e.pollByListener)if(!(typeof n!=`number`||n<=0)&&e.pauseWhenHiddenByListener.get(t)===!1){let n=e.fetcherByListener.get(t);if(n)return{owner:t,fetcher:n,deadlineMs:e.deadlineByListener.get(t)}}return null}function kt(e){for(let[t,n]of e.pollByListener)if(typeof n==`number`&&n>0){let n=e.fetcherByListener.get(t);if(n)return{owner:t,fetcher:n,deadlineMs:e.deadlineByListener.get(t)}}for(let[t,n]of e.fetcherByListener)return{owner:t,fetcher:n,deadlineMs:e.deadlineByListener.get(t)};return null}function At(e){let t;for(let n of e.pollByListener.values())typeof n==`number`&&n>0&&(t=t===void 0?n:Math.min(t,n));if(t===void 0){Tt(e),Nt(e);return}if(t===e.pollIntervalMs){let n=yt.get(t);n&&Ct(t,n),Mt(e);return}Tt(e),Et(e,t),Mt(e)}var jt=null;function Mt(e){typeof document>`u`||jt||(jt=dt(()=>{if(wt(),!Dt())for(let e of yt.values())for(let t of e.stores){let e=kt(t);e&&Pt(t,e.fetcher,{replaceInflight:!1,owner:e.owner,deadlineMs:e.deadlineMs})}}))}function Nt(e){jt&&(yt.size>0||(jt(),jt=null))}async function Pt(e,t,n){let r=n?.replaceInflight!==!1;if(e.inflight&&!r)return;r&&e.inflight?.abort();let i=new AbortController;e.inflight=i,e.inflightOwner=n?.owner??null;let a=++e.generation,o=n?.deadlineMs??mt,s=!1,c=setTimeout(()=>{s=!0,i.abort(ht)},o),l=e.snapshot.data===void 0||n?.forceLoading===!0;e.snapshot={...e.snapshot,loading:l?!0:e.snapshot.loading,refreshing:!0},vt(e);try{let n=await Promise.race([t(i.signal),new Promise((e,t)=>{i.signal.addEventListener(`abort`,()=>{s?t(Error(`resource request timed out after ${o}ms`)):e(null)},{once:!0})})]);if(a!==e.generation||i.signal.aborted)return;e.seedNeedsRevalidate=!1,pt.delete(e.key),e.lastSettledAt=Date.now(),e.snapshot={data:n,error:void 0,loading:!1,refreshing:!1,hasSucceeded:!0,lastAttemptOk:!0}}catch(t){if(a!==e.generation||i.signal.aborted&&!s)return;e.seedNeedsRevalidate=!1,e.snapshot={...e.snapshot,error:t===void 0?Error(`resource load failed`):t,loading:!1,refreshing:!1,lastAttemptOk:!1}}finally{clearTimeout(c),e.inflight===i&&(e.inflight=null,e.inflightOwner=null),vt(e)}}function Ft(e,t){return e.inflightOwner===t&&(e.inflight?.abort(),e.inflight=null,e.inflightOwner=null,e.generation++,e.snapshot.refreshing&&(e.snapshot={...e.snapshot,refreshing:!1},vt(e)),!0)}function It(e,t){Tt(t),Nt(t),setTimeout(()=>{t.subscriberCount===0&&ft.get(e)===t&&(t.inflight?.abort(),t.inflight=null,t.inflightOwner=null,ft.delete(e))},0)}function Lt(e,t,n){let{fetcher:r,pollMs:i,pauseWhenHidden:a=!0,deadlineMs:o,staleAfterMs:s}=n,c=_t(e);if(c.listeners.add(t),c.pollByListener.set(t,i),c.pauseWhenHiddenByListener.set(t,a),c.fetcherByListener.set(t,r),c.deadlineByListener.set(t,o),c.subscriberCount++,c.subscriberCount===1){let n=typeof s==`number`&&c.lastSettledAt!==void 0&&Date.now()-c.lastSettledAt>s;(c.snapshot.data===void 0||c.seedNeedsRevalidate||pt.has(e)||n)&&Pt(c,r,{replaceInflight:!0,owner:t,deadlineMs:o})}return At(c),()=>{c.listeners.delete(t),c.pollByListener.delete(t),c.pauseWhenHiddenByListener.delete(t),c.fetcherByListener.delete(t),c.deadlineByListener.delete(t),c.subscriberCount--;let n=Ft(c,t);if(c.subscriberCount===0){It(e,c);return}if(n){let e=kt(c);e&&Pt(c,e.fetcher,{replaceInflight:!0,owner:e.owner,deadlineMs:e.deadlineMs})}At(c)}}function Rt(e,t,n,r){let i=_t(e);i.subscriberCount===0&&i.snapshot.data===void 0&&(Ut(e,t),!pt.has(e)&&typeof r==`number`&&typeof n==`number`&&Date.now()-n<r&&(i.seedNeedsRevalidate=!1,i.lastSettledAt=n))}function zt(e,t,n){let r=n?.enabled!==!1,i=n?.pollMs,a=n?.pauseWhenHidden!==!1,o=n?.deadlineMs,s=n?.staleAfterMs;r&&n?.initialData!==void 0&&Rt(e,n.initialData,n.initialDataCachedAt,s);let c=(0,Z.useRef)(t);(0,Z.useLayoutEffect)(()=>{c.current=t});let l=(0,Z.useCallback)(e=>c.current(e),[]),u=(0,Z.useRef)(null),d=(0,Z.useCallback)(t=>r?(u.current=t,Lt(e,t,{fetcher:l,pollMs:i,pauseWhenHidden:a,deadlineMs:o,staleAfterMs:s})):()=>{},[e,l,i,r,a,o,s]),f=(0,Z.useCallback)(()=>r?_t(e).snapshot:gt,[e,r]),p=(0,Z.useSyncExternalStore)(d,f,f),m=(0,Z.useCallback)(t=>{if(!r)return;let n=_t(e);Pt(n,l,{replaceInflight:!0,owner:u.current,forceLoading:t?.forceLoading,deadlineMs:u.current?n.deadlineByListener.get(u.current):o})},[e,l,r,o]);return{...p,refresh:m}}function Bt(e,t){if(e===null)return!1;if(e.length!==t.length)return!0;for(let n=0;n<e.length;n++)if(!Object.is(e[n],t[n]))return!0;return!1}function Vt(e,t,n,r){let i=zt(e,n,r),a=(0,Z.useRef)(null),o=(0,Z.useRef)(null);return(0,Z.useLayoutEffect)(()=>{let n=a.current,r=o.current;a.current=t,o.current=e,Bt(n,t)&&(r===null||r===e)&&i.refresh({forceLoading:!0})}),i}function Ht(e){pt.add(e);let t=ft.get(e);if(!t)return;let n=kt(t);n&&Pt(t,n.fetcher,{replaceInflight:!0,owner:n.owner,deadlineMs:n.deadlineMs})}function Ut(e,t){let n=_t(e);n.inflight?.abort(),n.inflight=null,n.inflightOwner=null,n.generation++,n.snapshot={data:t,error:void 0,loading:!1,refreshing:!1,hasSucceeded:!0,lastAttemptOk:!0},n.seedNeedsRevalidate=n.subscriberCount===0,n.lastSettledAt=Date.now(),vt(n)}function Wt(e){return e.replace(/^#\/?/,``)}function Gt(e){let t=e.indexOf(`?`);return t<0?{path:e,query:``}:{path:e.slice(0,t),query:e.slice(t+1)}}function Kt(e,t=window){let n=Wt(e);if(Wt(t.location.hash)===n)return;let r=`${t.location.pathname}${t.location.search}#${n}`;t.history.replaceState(t.history.state,``,r)}function qt(e,t=window){let n=Wt(e);Wt(t.location.hash)!==n&&(t.location.hash=n)}var Jt=_(),Yt=4,Xt=8,Zt=8,Qt=280,$t=120,en=160,tn=12;function nn(){return typeof window<`u`?window.innerHeight:800}function rn(){return typeof window<`u`?window.innerWidth:1024}function an(e,{align:t,placement:n=`below`,menuHeight:r=Qt}={}){let i=Math.min(Math.max(r,$t),Qt),a=nn(),o=rn();if(n===`right`){let t=a-e.top-Zt,n=e.top-Zt,r=i+Xt>t&&n>t,s=Math.max(Zt,Math.min(e.right+tn,o-en-Zt));return r?{position:`fixed`,left:s,bottom:a-e.top+Xt,minWidth:en,maxHeight:Math.max($t,Math.min(Qt,e.top-Zt-Yt))}:{position:`fixed`,top:e.top,left:s,minWidth:en,maxHeight:Math.max($t,Math.min(Qt,a-e.top-Zt))}}let s=t??(e.right>o/2?`right`:`left`),c=Math.max(e.width,0),l=a-e.bottom-Zt,u=e.top-Zt;if(i+Yt>l&&u>l){let t={position:`fixed`,bottom:a-e.top+Xt,minWidth:c,maxHeight:Math.max(0,Math.min(Qt,u-Yt))};return s===`right`?t.right=Math.max(Zt,o-e.right):t.left=Math.max(Zt,Math.min(e.left,o-Zt-c)),t}let d={position:`fixed`,top:e.bottom+Yt,minWidth:c,maxHeight:Math.max(0,Math.min(Qt,l-Yt))};return s===`right`?d.right=Math.max(Zt,o-e.right):d.left=Math.max(Zt,Math.min(e.left,o-Zt-c)),d}var Q=b();function on({on:e,mixed:t=!1,onClick:n,disabled:r,label:i,showLabel:a=!1,title:o}){let s=a&&!!i;return(0,Q.jsxs)(`button`,{type:`button`,className:`switch${e?` on`:``}${t?` mixed`:``}${s?` switch-labeled`:``}`,onClick:n,disabled:r,"aria-pressed":t?`mixed`:e,"aria-label":s?void 0:i??(e?`enabled`:`disabled`),title:o,children:[(0,Q.jsx)(`span`,{className:`knob`}),s?(0,Q.jsx)(`span`,{className:`switch-labeled-text text-label muted`,children:i}):null]})}function $({tone:e,children:t}){return(0,Q.jsxs)(`div`,{className:`notice ${e===`ok`?`notice-ok`:e===`warn`?`notice-warn`:`notice-err`}`,role:`status`,children:[e===`ok`?(0,Q.jsx)(Te,{}):(0,Q.jsx)(Ae,{}),(0,Q.jsx)(`span`,{children:t})]})}function sn({tone:e,children:t,onDismiss:n,dismissLabel:r}){return(0,Jt.createPortal)((0,Q.jsx)(`div`,{className:`toast-notice-host`,role:`presentation`,children:(0,Q.jsxs)(`div`,{className:`toast-notice notice ${e===`ok`?`notice-ok`:e===`warn`?`notice-warn`:`notice-err`}`,role:`status`,"aria-live":`polite`,children:[e===`ok`?(0,Q.jsx)(Te,{}):(0,Q.jsx)(Ae,{}),(0,Q.jsx)(`span`,{className:`toast-notice-copy`,children:t}),n&&(0,Q.jsx)(`button`,{type:`button`,className:`toast-notice-dismiss`,onClick:n,"aria-label":r,children:`×`})]})}),document.body)}function cn({value:e,options:t,onChange:n,disabled:r,id:i,label:a,describedBy:o,title:s,style:c,align:l,placement:u,dropdownStyle:d,portal:f=!0}){let p=(0,Z.useId)(),[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(null),[v,y]=(0,Z.useState)(),b=(0,Z.useRef)(null),x=(0,Z.useRef)(null),S=(0,Z.useRef)(null),C=(0,Z.useCallback)(e=>`${p}-${e}`,[p]),w=t.find(t=>t.value===e),T=t.length===0?0:Math.max(0,t.findIndex(t=>t.value===e)),E=!m||t.length===0?T:Math.min(g??T,t.length-1),D=(0,Z.useCallback)((e=!1)=>{h(!1),_(null),e&&x.current?.focus()},[]),O=(0,Z.useCallback)(e=>{if(r||t.length===0)return;let n=Math.max(0,Math.min(t.length-1,e));_(n),h(!0)},[r,t.length]),k=(0,Z.useCallback)(e=>{if(!f)return;let t=x.current;t&&y(an(t.getBoundingClientRect(),{align:l,placement:u,menuHeight:e}))},[l,u,f]);(0,Z.useEffect)(()=>{if(!m)return;let e=e=>{let t=e.target;b.current?.contains(t)||S.current?.contains(t)||D()};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[D,m]),(0,Z.useLayoutEffect)(()=>{if(!m||!f)return;k();let e=()=>k(S.current?.offsetHeight);return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[m,t.length,f,k]),(0,Z.useLayoutEffect)(()=>{if(!m||!f||!S.current||!x.current)return;let e=S.current.offsetHeight;if(!e)return;let t=an(x.current.getBoundingClientRect(),{align:l,placement:u,menuHeight:e});y(e=>e?.top===t.top&&e?.bottom===t.bottom&&e?.maxHeight===t.maxHeight?e:t)},[l,m,t.length,u,f]),(0,Z.useLayoutEffect)(()=>{!m||!S.current||S.current.querySelector(`[id="${C(E)}"]`)?.scrollIntoView({block:`nearest`})},[E,m,C]);let A=e=>{if(r)return;let i=t[e];i&&(n(i.value),D(!0))},j=e=>{if(!r)switch(e.key){case`ArrowDown`:e.preventDefault(),O(m?Math.min(t.length-1,E+1):T);break;case`ArrowUp`:e.preventDefault(),O(m?Math.max(0,E-1):T);break;case`Home`:e.preventDefault(),O(0);break;case`End`:e.preventDefault(),O(t.length-1);break;case`Enter`:case` `:e.preventDefault(),m?A(E):O(T);break;case`Escape`:m&&(e.preventDefault(),D(!0));break;case`Tab`:if(m){let e=t[E];e&&n(e.value),h(!1)}}},M=m&&t[E]?C(E):void 0,N=m&&!r?(0,Q.jsx)(`div`,{ref:S,id:p,className:`select-dropdown${f?` select-dropdown-portal`:``}${!f&&l===`right`?` select-dropdown-right`:``}${!f&&u===`right`?` select-dropdown-beside`:``}`,role:`listbox`,"aria-label":a,style:f?{...v,zIndex:60,...d}:d,children:t.map((t,n)=>(0,Q.jsx)(`button`,{id:C(n),type:`button`,role:`option`,tabIndex:-1,disabled:r,"aria-selected":t.value===e,className:`select-option${t.value===e?` active`:``}${n===E?` select-option-active`:``}`,onMouseEnter:()=>_(n),onClick:()=>A(n),children:t.label},t.value))}):null;return(0,Q.jsxs)(`div`,{ref:b,className:`custom-select`,style:{position:`relative`,display:`inline-block`,...c},children:[(0,Q.jsxs)(`button`,{ref:x,id:i,type:`button`,role:`combobox`,title:s,"aria-describedby":o,className:`select-trigger`,onClick:()=>{r||(m?D():O(T))},onKeyDown:j,disabled:r,"aria-haspopup":`listbox`,"aria-expanded":m,"aria-controls":m?p:void 0,"aria-activedescendant":M,"aria-label":a,children:[(0,Q.jsx)(`span`,{children:w?.label??e}),(0,Q.jsx)(Ke,{style:{width:12,height:12,color:`var(--muted)`,transform:m?`rotate(90deg)`:`none`,transition:`transform .12s`}})]}),f?N&&(0,Jt.createPortal)(N,document.body):N]})}function ln({icon:e,title:t,children:n,className:r,style:i}){return(0,Q.jsxs)(`div`,{className:r?`empty ${r}`:`empty`,style:i,children:[e,(0,Q.jsx)(`div`,{className:`title`,children:t}),n&&(0,Q.jsx)(`div`,{className:`text-control`,children:n})]})}function un({content:e,children:t,side:n=`top`,maxWidth:r=280}){let[i,a]=(0,Z.useState)(!1),o=(0,Z.useId)(),s=(0,Z.useRef)(null),c=()=>{s.current!==null&&window.clearTimeout(s.current),s.current=window.setTimeout(()=>a(!0),150)},l=()=>{s.current!==null&&(window.clearTimeout(s.current),s.current=null),a(!1)};return(0,Z.useEffect)(()=>()=>{s.current!==null&&window.clearTimeout(s.current)},[]),(0,Q.jsxs)(`button`,{type:`button`,className:`ocx-tooltip`,onMouseEnter:c,onMouseLeave:l,onFocus:c,onBlur:l,onKeyDown:e=>{e.key===`Escape`&&l()},"aria-describedby":i?o:void 0,style:{display:`inline`,border:0,background:`transparent`,padding:0,margin:0,color:`inherit`,font:`inherit`,cursor:`inherit`},children:[t,i&&(0,Q.jsx)(`span`,{id:o,className:`ocx-tooltip-bubble ocx-tooltip-bubble--${n}`,role:`tooltip`,style:{maxWidth:r},children:e})]})}var dn=45e3,fn=2147483647;async function pn(e){if(e.status!==204){if(typeof e.text==`function`){let t=await e.text();return t.trim()?JSON.parse(t):void 0}return await e.json()}}function mn(e,t){return typeof e.error==`string`&&e.error?e.error:typeof e.message==`string`&&e.message?e.message:t}async function hn(e,t=`HTTP ${e.status}`){if(!e.ok){let n=t;try{n=mn(await e.json(),t)}catch{}throw Error(n)}return pn(e)}async function gn(e){if(!e.ok)return null;try{return await pn(e)}catch{return null}}var _n=[`gpt-6-luna`,`gpt-5.6-luna`];function vn(e){let t=Array.isArray(e)?e.filter(e=>typeof e==`string`&&e.trim()!==``).map(e=>e.trim()):[];return t.length>0?t:_n}function yn(e){return vn(e).join(`, `)}function bn(e){return vn(e).map(e=>e.replace(/^gpt-/,``)).join(`, `)}var xn=`dashboard/update`;function Sn(){let e=window.location.hash.replace(/^#\/?/,``);return e===`dashboard/providers`?`providers`:e===`dashboard/models`?`models`:`overview`}function Cn(){return window.location.hash.replace(/^#\/?/,``)===xn}function wn(e){return e===`overview`?`dashboard`:`dashboard/${e}`}async function Tn(e,t){let n=await hn(e,t);if(n===void 0)throw Error(t??`empty response`);return n}var En=[`low`,`medium`,`high`,`xhigh`];function Dn(e){return e?.includes(`-preview.`)?`preview`:`latest`}function On(e,t){switch(e){case`source_checkout`:return t(`dash.updateReason.source_checkout`);case`latest_unavailable`:return t(`dash.updateReason.latest_unavailable`);case`already_latest`:return t(`dash.updateReason.already_latest`);case`externally_managed`:return t(`dash.updateReason.externally_managed`);case`external_ownership_invalid`:return t(`dash.updateReason.external_ownership_invalid`);default:return t(`dash.updateReason.unknown`)}}function kn(e,t){switch(e){case`running`:return t(`dash.updateStatus.running`);case`restarting`:return t(`dash.updateStatus.restarting`);case`succeeded`:return t(`dash.updateStatus.succeeded`);case`failed`:return t(`dash.updateStatus.failed`)}}function An(e,t){let n={...e};return t?.model!==void 0&&(n.model=t.model),t?.backend===null?delete n.backend:t?.backend!==void 0&&(n.backend=t.backend),t?.anthropicInstance===null?delete n.anthropicInstance:t?.anthropicInstance!==void 0&&(n.anthropicInstance=t.anthropicInstance),t?.backend!==void 0&&t.backend!==`anthropic`&&delete n.anthropicInstance,t?.reasoning!==void 0&&(n.reasoning=t.reasoning),t?.streamRoutedModelOutput!==void 0&&(n.streamRoutedModelOutput=t.streamRoutedModelOutput),t?.enabled!==void 0&&(n.enabled=t.enabled),t?.maxDescriptionsPerTurn!==void 0&&(n.maxDescriptionsPerTurn=t.maxDescriptionsPerTurn),t?.timeoutMs!==void 0&&(n.timeoutMs=t.timeoutMs),n}function jn(e){return{vision:{reasoning:e}}}function Mn(e){return{vision:{enabled:e}}}function Nn(e){return{webSearch:{enabled:e}}}function Pn(e){return e?.applied===!1&&e.reason!==`not_requested`}function Fn(e,t){return t?.reason===`not_requested`&&Pn(e)?e:t}function In(e){return{vision:{maxDescriptionsPerTurn:e}}}function Ln(e){return{vision:{timeoutMs:e}}}var Rn=dn,zn=fn,Bn=1;function Vn(e){let t=e.trim();if(!/^[0-9]+$/.test(t))return;let n=Number(t);if(!(!Number.isSafeInteger(n)||n<=0))return n}function Hn(e){let t=Vn(e);if(!(t===void 0||t<Bn||t>zn))return t}var Un=[`low`,`medium`,`high`,`xhigh`,`max`];function Wn(e,t){let n=e.find(e=>e.id===t)?.reasoningEfforts;if(!n||n.length===0)return[...Un];let r=Un.filter(e=>n.includes(e));return r.length>0?r:[...Un]}function Gn(e,t){let n=Kn(e,t);return e.includes(n)?e:[n,...e]}function Kn(e,t){if(e.length===0||e.includes(t))return t;let n=Un.indexOf(t),r=e[0],i=Un.indexOf(r);for(let t of e){let e=Un.indexOf(t);e<=n&&e>=i&&(r=t,i=e)}return r}function qn(e){let t=[];for(let n of e)(n.provider===`openai`||n.provider===`anthropic`)&&t.push({value:n.id,label:`${n.provider}/${n.id}`});return t}function Jn(e,t,n,r){if(e===void 0){let e=qn(t);return n&&!e.some(e=>e.value===n)&&e.unshift({value:n,label:n,...r?{backend:r}:{},model:n}),e}let i=e.map(e=>({value:e.value,label:e.label,backend:e.backend,model:e.model}));return n&&!i.some(e=>e.value===n)&&i.unshift({value:n,label:n,...r?{backend:r}:{},model:n}),i}function Yn(e,t,n,r){let i=e?e.map(e=>({value:e.value,label:e.label,backend:e.backend})):qn(t);return n&&!i.some(e=>e.value===n)&&i.unshift({value:n,label:n,...r?{backend:r}:{}}),i}function Xn(e,t,n){let r=vn(n),i=r.flatMap(t=>{let n=e.find(e=>e.namespaced.startsWith(t))??e.find(e=>e.id.startsWith(t));return n?[{provider:n.provider,modelId:t}]:[]}),a=e.filter(e=>i.some(t=>e.provider===t.provider&&e.id.startsWith(t.modelId))),o=new Set([...r.flatMap(e=>[e,`openai/${e}`]),...a.flatMap(e=>[e.namespaced,`${e.provider}/${e.id}`])]),s=[{value:``,label:`—`},...e.filter(e=>!o.has(e.namespaced)).map(e=>({value:e.namespaced,label:e.namespaced}))];return t&&!o.has(t)&&!s.some(e=>e.value===t)&&s.push({value:t,label:t}),s}function Zn(e,t){let n=e.find(e=>e.id===t)?.provider;return n===`anthropic`||n===`anthropic2`?`anthropic`:`openai`}function Qn(e,t){function n(e,t){return t.backend!==void 0&&t.backend!==`anthropic`&&e.anthropicInstance!==void 0?{...t,anthropicInstance:null}:t}return{...t,...t.webSearch?{webSearch:n(e.webSearch,t.webSearch)}:{},...t.vision?{vision:n(e.vision,t.vision)}:{}}}function $n(e,t,n){let r=t.find(e=>e.value===n);return{backend:r?.backend??Zn(e,n),model:r?.model??n}}function er(e,t,n){return t.find(e=>e.value===n)?.backend||(n.includes(`/`)?`routed`:Zn(e,n))}var tr=!1;typeof window<`u`&&typeof window.addEventListener==`function`&&(window.addEventListener(`keydown`,()=>{tr=!0},{capture:!0,passive:!0}),window.addEventListener(`pointerdown`,()=>{tr=!1},{capture:!0,passive:!0}));function nr(e){if(e){if(tr){e.focus({preventScroll:!0});return}try{e.focus({preventScroll:!0,focusVisible:!1})}catch{e.focus({preventScroll:!0})}}}function rr(e,t){let n=(0,Z.useRef)(null);return(0,Z.useEffect)(()=>{let r=n.current;if(r){if(e){r.open||r.showModal();return}r.open&&r.close(),nr(t.current)}},[e,t]),(0,Z.useEffect)(()=>()=>{let e=n.current;e?.open&&e.close(),nr(t.current)},[t]),n}var ir=`https://opencodex.me/guides/subagent-v1-default/`;function ar(e){if(!e||typeof e!=`object`)return null;let t=e,n=t.mode;return n!==`v1`&&n!=="default"&&n!==`v2`||typeof t.required!=`boolean`?null:{required:t.required,mode:n,recommended:`v1`,version:typeof t.version==`number`?t.version:0,docsUrl:typeof t.docsUrl==`string`&&t.docsUrl?t.docsUrl:ir}}function or(e){return e==="default"?`base`:e}function sr({reason:e,mode:t,docsUrl:n,busy:r=!1,onContinue:i,onChooseV1:a,onDismiss:o}){let s=O(),c=(0,Z.useId)(),l=(0,Z.useId)(),u=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{let e=u.current;e&&!e.open&&e.showModal()},[]);let d=(0,Z.useCallback)(e=>{e.preventDefault(),!r&&o()},[r,o]),f=or(t),p=e===`advisory`;return(0,Q.jsxs)(`dialog`,{ref:u,"aria-labelledby":c,"aria-describedby":l,className:`modal-overlay`,"data-subagent-surface-reason":e,onCancel:d,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":s(`common.close`),tabIndex:-1,disabled:r,onClick:()=>{r||o()}}),(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),style:{maxWidth:480},children:[(0,Q.jsx)(`h3`,{id:c,children:s(p?`subagentSurface.advisoryTitle`:`subagentSurface.selectionTitle`,{mode:f})}),(0,Q.jsxs)(`div`,{id:l,className:`notice-warn`,style:{marginTop:12,display:`flex`,gap:8,alignItems:`flex-start`},children:[(0,Q.jsx)(Ae,{width:16,height:16,style:{flexShrink:0,marginTop:2},"aria-hidden":`true`}),(0,Q.jsx)(`p`,{className:`modal-desc`,style:{margin:0},children:s(p?`subagentSurface.advisoryBody`:`subagentSurface.selectionBody`,{mode:f})})]}),(0,Q.jsx)(`p`,{className:`text-label`,style:{marginTop:12},children:(0,Q.jsx)(`a`,{href:n,target:`_blank`,rel:`noreferrer`,style:{color:`var(--accent)`},children:s(`subagentSurface.learnMore`)})}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:r,onClick:i,children:s(`subagentSurface.continue`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:r,onClick:a,children:s(`subagentSurface.switchToV1`)})]})]})]})}function cr(e){let{t,updateOpen:n,closeUpdateDialog:r,updateDialogRef:i,updateChannel:a,changeUpdateChannel:o,updateLoading:s,updateError:c,updateCheck:l,fetchUpdateCheck:u,updateRestart:d,setUpdateRestart:f,runUpdate:p,maHelpOpen:m,setMaHelpOpen:h,maHelpDialogRef:g,effortCapHelpOpen:_,setEffortCapHelpOpen:v,effortCapHelpDialogRef:y,shadowCallHelpOpen:b,setShadowCallHelpOpen:x,shadowCallHelpDialogRef:S,shadowCall:C,maAdvisory:w,maAdvisoryOpen:T,pendingMaMode:E,maBusy:D,keepMaMode:O,chooseMaV1:k,dismissMaSurfaceDialog:A}=e;return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dialog`,{ref:i,id:`dashboard-update-dialog`,className:`modal-overlay`,style:{display:n?`flex`:`none`,border:`none`,margin:0,maxWidth:`none`,maxHeight:`none`,width:`100%`,height:`100%`},"aria-labelledby":`update-title`,onCancel:e=>{e.preventDefault(),r()},children:(0,Q.jsxs)(`div`,{className:`modal-card`,children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{id:`update-title`,children:t(`dash.updateTitle`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon`,onClick:r,"aria-label":t(`common.cancel`),children:(0,Q.jsx)(ve,{})})]}),(0,Q.jsx)(`div`,{className:`modal-desc`,children:t(`dash.updateDesc`)}),(0,Q.jsxs)(`div`,{className:`update-row`,children:[(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`update-channel`,children:t(`dash.updateChannel`)}),(0,Q.jsx)(cn,{value:a,options:[{value:`latest`,label:`latest`},{value:`preview`,label:`preview`}],onChange:e=>o(e),disabled:s,label:t(`dash.updateChannel`),portal:!1})]}),s&&(0,Q.jsx)(ln,{className:`update-empty`,icon:(0,Q.jsx)(`span`,{className:`spin`}),title:t(`dash.updateChecking`)}),c&&(0,Q.jsxs)(`div`,{className:`notice notice-err`,role:`status`,children:[(0,Q.jsx)(Ae,{}),(0,Q.jsx)(`span`,{children:c})]}),l&&!s&&(0,Q.jsxs)(`div`,{className:`update-box`,children:[(0,Q.jsxs)(`div`,{className:`spread`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{className:`muted text-label`,children:t(`dash.updateInstalled`)}),(0,Q.jsx)(`div`,{className:`mono`,children:l.currentVersion})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{className:`muted text-label`,children:t(`dash.updateLatest`)}),(0,Q.jsx)(`div`,{className:`mono`,children:l.latestVersion??`—`})]}),(0,Q.jsx)(`span`,{className:`badge ${l.updateAvailable?`badge-green`:`badge-muted`}`,children:l.updateAvailable?t(`dash.updateAvailable`):t(`dash.updateCurrent`)})]}),l.command&&(0,Q.jsxs)(`div`,{className:`muted update-command`,children:[t(`dash.updateCommand`),` `,(0,Q.jsx)(`code`,{className:`chip`,children:l.command})]}),l.reason===`source_checkout`&&(0,Q.jsxs)(`div`,{className:`notice-warn`,role:`status`,children:[(0,Q.jsx)(Ae,{}),` `,t(`dash.updateSource`)]}),l.reason===`latest_unavailable`&&(0,Q.jsxs)(`div`,{className:`notice-warn`,role:`status`,children:[(0,Q.jsx)(Ae,{}),` `,t(`dash.updateUnavailable`),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:s,onClick:()=>{u(a,!0)},style:{marginLeft:12},children:[(0,Q.jsx)(re,{}),` `,t(`dash.updateRetry`)]})]}),!l.canUpdate&&l.reason!==`latest_unavailable`&&l.reason!==`source_checkout`&&(0,Q.jsxs)(`div`,{className:`update-recheck`,children:[(0,Q.jsx)(`span`,{className:`muted update-recheck-reason`,children:t(`dash.updateCannotAuto`,{reason:On(l.reason,t)})}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:s,onClick:()=>{u(a,!0)},children:[(0,Q.jsx)(re,{}),` `,t(s?`dash.updateChecking`:`dash.updateRecheck`)]})]}),l.canUpdate&&(0,Q.jsxs)(`div`,{className:`spread update-restart`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:t(`dash.updateRestart`)}),(0,Q.jsx)(`div`,{className:`muted text-label`,children:t(`dash.updateRestartHint`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`switch ${d?`on`:``}`,onClick:()=>f(e=>!e),"aria-label":t(`dash.updateRestart`),"aria-pressed":d,children:(0,Q.jsx)(`span`,{className:`knob`})})]})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:r,children:t(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:p,disabled:!l?.canUpdate||s,children:t(`dash.runUpdate`)})]})]})}),(0,Q.jsxs)(`dialog`,{ref:g,id:`multi-agent-help-dialog`,className:`modal-overlay`,style:{display:m?`flex`:`none`,border:`none`,margin:0,maxWidth:`none`,maxHeight:`none`,width:`100%`,height:`100%`},"aria-labelledby":`multi-agent-help-title`,onCancel:e=>{e.preventDefault(),h(!1)},children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":t(`common.close`),tabIndex:-1,onClick:()=>h(!1)}),(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{id:`multi-agent-help-title`,children:t(`dash.multiAgent`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon`,onClick:()=>h(!1),"aria-label":t(`common.close`),children:(0,Q.jsx)(ve,{})})]}),(0,Q.jsx)(`div`,{className:`modal-desc leading-relaxed`,style:{whiteSpace:`pre-line`},children:t(`models.v2Help`)}),(0,Q.jsx)(`div`,{style:{marginTop:12},children:(0,Q.jsx)(`a`,{className:`text-control`,href:`https://opencodex.me/guides/sub-agent-surface/`,target:`_blank`,rel:`noreferrer`,style:{color:`var(--accent)`},children:t(`models.v2DocsLink`)})}),(0,Q.jsx)(`div`,{className:`modal-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>h(!1),children:t(`common.ok`)})})]})]}),(0,Q.jsxs)(`dialog`,{ref:y,id:`effort-cap-help-dialog`,className:`modal-overlay`,style:{display:_?`flex`:`none`,border:`none`,margin:0,maxWidth:`none`,maxHeight:`none`,width:`100%`,height:`100%`},"aria-labelledby":`effort-cap-help-title`,onCancel:e=>{e.preventDefault(),v(!1)},children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":t(`common.close`),tabIndex:-1,onClick:()=>v(!1)}),(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{id:`effort-cap-help-title`,children:t(`dash.effortCapLabel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon`,onClick:()=>v(!1),"aria-label":t(`common.close`),children:(0,Q.jsx)(ve,{})})]}),(0,Q.jsx)(`div`,{className:`modal-desc leading-relaxed`,style:{whiteSpace:`pre-line`},children:t(`dash.effortCapHelp`)}),(0,Q.jsx)(`div`,{className:`modal-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>v(!1),children:t(`common.ok`)})})]})]}),(0,Q.jsxs)(`dialog`,{ref:S,id:`shadow-call-help-dialog`,className:`modal-overlay`,style:{display:b?`flex`:`none`,border:`none`,margin:0,maxWidth:`none`,maxHeight:`none`,width:`100%`,height:`100%`},"aria-labelledby":`shadow-call-help-title`,onCancel:e=>{e.preventDefault(),x(!1)},children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":t(`common.close`),tabIndex:-1,onClick:()=>x(!1)}),(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{id:`shadow-call-help-title`,children:t(`dash.shadowCallIntercept`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon`,onClick:()=>x(!1),"aria-label":t(`common.close`),children:(0,Q.jsx)(ve,{})})]}),(0,Q.jsx)(`div`,{className:`modal-desc leading-relaxed`,style:{whiteSpace:`pre-line`},children:t(`dash.shadowCallTooltip`,{models:yn(C?.sourceModels)})}),(0,Q.jsx)(`div`,{className:`modal-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>x(!1),children:t(`common.ok`)})})]})]}),(E||T)&&(0,Q.jsx)(sr,{reason:E?`selection`:`advisory`,mode:E??w?.mode??`default`,docsUrl:w?.docsUrl??`https://opencodex.me/guides/subagent-v1-default/`,busy:D,onContinue:()=>{O()},onChooseV1:()=>{k()},onDismiss:A})]})}function lr({t:e,models:t,modelsLoading:n,modelQuery:r,setModelQuery:i,filteredGroups:a,expandedProviders:o,setExpandedProviders:s}){return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`h-section`,children:[e(`dash.availableModels`),` `,(0,Q.jsx)(`span`,{className:`count`,children:t.length}),n&&(0,Q.jsx)(`span`,{className:`spin`,style:{marginLeft:4}})]}),t.length===0&&!n?(0,Q.jsx)(ln,{title:e(`dash.noModels`)}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`pws-search-wrap`,children:[(0,Q.jsx)(X,{className:`pws-search-icon`,width:14,height:14,"aria-hidden":`true`}),(0,Q.jsx)(`input`,{type:`search`,className:`input pws-search-input`,placeholder:e(`models.search`),value:r,onChange:e=>i(e.target.value),"aria-label":e(`models.search`)})]}),a.length===0?(0,Q.jsx)(`p`,{className:`muted text-control`,style:{margin:`4px 0`},children:e(`dash.modelsNoResults`)}):(0,Q.jsx)(`div`,{className:`dash-model-acc`,children:a.map(([t,n])=>{let i=r.trim().toLowerCase()!==``||o.has(t);return(0,Q.jsxs)(`div`,{className:`dash-model-group`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`dash-model-head`,onClick:()=>s(e=>{let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n}),"aria-expanded":i,children:[(0,Q.jsx)(Ke,{width:12,height:12,style:{transform:i?`rotate(90deg)`:`none`,transition:`transform .12s`,color:`var(--muted)`},"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`font-semibold`,children:be(t,e)}),(0,Q.jsx)(`span`,{className:`count`,children:n.length})]}),i&&(0,Q.jsx)(`div`,{className:`dash-model-chips`,children:n.map(e=>(0,Q.jsx)(`code`,{className:`dash-model-chip`,children:e.id},`${e.provider}/${e.id}`))})]},t)})})]})]})}function ur(e,t){let n=Math.max(0,Math.floor(e)),i=r(t,`uptime.day`),a=r(t,`uptime.hour`),o=r(t,`uptime.minute`),s=r(t,`uptime.second`);if(n<300)return`${n}${s}`;let c=Math.floor(n/60);if(c<60)return`${c}${o}`;let l=Math.floor(c/60);if(l<24){let e=c%60;return e>0?`${l}${a} ${e}${o}`:`${l}${a}`}let u=Math.floor(l/24),d=l%24;return d>0?`${u}${i} ${d}${a}`:`${u}${i}`}function dr(e){return!e||typeof e!=`object`||!(`usageIncomplete`in e)||e.usageIncomplete!==!0?{}:{usageIncomplete:!0,...`usageIncompleteReason`in e&&e.usageIncompleteReason===`oversized_rows`?{usageIncompleteReason:`oversized_rows`}:{}}}function fr(e){return!!e&&typeof e==`object`&&`error`in e&&e.error===`read_failed`}var pr=class extends Error{constructor(){super(`usage ledger read failed`),this.name=`UsageReadFailedError`}};async function mr(e,t){let n;try{n=await e.json()}catch{throw Error(t??`${e.status} ${e.statusText}`.trim())}if(fr(n))throw new pr;if(!e.ok)throw Error(t??`${e.status} ${e.statusText}`.trim());return n}function hr(e,t=`all`){return t===`codex`?[`usage-summary-30d`,e,`codex`].join(`:`):[`usage-summary-30d`,e,`all`].join(`:`)}function gr({data:e}){let t=O();return dr(e).usageIncomplete?(0,Q.jsx)($,{tone:`warn`,children:t(`usage.incomplete`)}):null}function _r({locale:e,health:t,providers:n,usage30d:r,usageLoading:i,healthLoading:a,startupHealth:o,projectConfigWarnings:s,maMode:c,maBusy:l,maHelpTriggerRef:u,maHelpOpen:d,setMaHelpOpen:f,switchMaMode:p,maError:m}){let h=O(),g=t?.status===`ok`;return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`dash-overview-head`,children:[(0,Q.jsxs)(`div`,{className:`stat-row`,children:[(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsxs)(`div`,{className:`label`,style:{display:`flex`,alignItems:`center`,gap:6},children:[h(`dash.multiAgent`),(0,Q.jsx)(`button`,{ref:u,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)`},onClick:()=>f(!0),"aria-label":h(`dash.multiAgent`),"aria-haspopup":`dialog`,"aria-controls":`multi-agent-help-dialog`,"aria-expanded":d,children:(0,Q.jsx)(we,{width:14,height:14,"aria-hidden":`true`})})]}),(0,Q.jsx)(`div`,{className:`value`,style:{display:`flex`,alignItems:`center`},children:(0,Q.jsx)(`div`,{className:`dash-ma-switch`,role:`radiogroup`,"aria-label":h(`dash.multiAgent`),style:{display:`inline-flex`,borderRadius:`var(--radius-pill)`,background:`var(--surface-soft, var(--raised))`,padding:3,gap:2},children:[`v1`,`default`,`v2`].map(e=>(0,Q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":c===e,className:`btn btn-sm text-caption dash-ma-option${c===e?` btn-primary`:` btn-ghost`}`,style:{borderRadius:`var(--radius-pill)`,border:`none`,background:c===e?void 0:`transparent`,color:c===e?void 0:`var(--muted)`},disabled:l,onClick:()=>void p(e),children:h(`models.v2Mode_${e}`)},e))})}),m&&(0,Q.jsx)(`div`,{role:`alert`,className:`text-caption`,style:{color:`var(--red)`,marginTop:4,textAlign:`center`,maxWidth:280,wordBreak:`break-word`},children:m})]}),(0,Q.jsxs)(`div`,{className:`stat`,"aria-busy":a||void 0,children:[(0,Q.jsx)(`div`,{className:`label`,children:h(`dash.status`)}),(0,Q.jsxs)(`div`,{className:`value`,style:{display:`flex`,alignItems:`center`,gap:9,color:g?`var(--green)`:`var(--red)`},children:[(0,Q.jsx)(`span`,{className:`dot ${g?`dot-green`:`dot-red`}`}),h(g?`dash.online`:`dash.offline`)]})]}),(0,Q.jsxs)(`div`,{className:`stat`,"aria-busy":a||void 0,children:[(0,Q.jsx)(`div`,{className:`label`,children:h(`dash.version`)}),(0,Q.jsx)(`div`,{className:`value mono dash-stat-version`,title:t?.version,children:t?.version??`—`})]}),(0,Q.jsxs)(`div`,{className:`stat`,"aria-busy":a||void 0,children:[(0,Q.jsx)(`div`,{className:`label`,children:h(`dash.uptime`)}),(0,Q.jsx)(`div`,{className:`value mono`,children:t?ur(t.uptime,e):`—`})]}),(0,Q.jsxs)(`div`,{className:`stat`,"aria-busy":a||void 0,children:[(0,Q.jsx)(`div`,{className:`label`,children:h(`dash.providers`)}),(0,Q.jsx)(`div`,{className:`value`,children:n.length})]}),(0,Q.jsxs)(`div`,{className:`stat`,"aria-busy":i||void 0,children:[(0,Q.jsx)(`div`,{className:`label`,children:h(`dash.tokens30d`)}),(0,Q.jsx)(`div`,{className:`value mono`,children:r&&r.summary.requests>0?K(r.summary.totalTokens,e):`—`}),(0,Q.jsx)(`div`,{className:`muted text-label dash-stat-coverage`,children:r&&r.summary.requests>0?h(`dash.coverage`).replace(`{pct}`,`${Math.round(r.summary.coverageRatio*100)}%`):`\xA0`})]})]}),(0,Q.jsx)(`div`,{className:`startup-health-slot`,"aria-live":`polite`,children:o?(0,Q.jsxs)(`button`,{type:`button`,className:`startup-health-bar`,onClick:()=>qt(`startup`),children:[(0,Q.jsx)(`span`,{className:`dot ${o===`error`?`dot-red`:o===`at-risk`?`dot-amber`:`dot-green`}`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`startup-health-bar__summary`,children:h(o===`error`?`startup.error`:o===`at-risk`?`startup.summary.atRisk`:o===`protected`?`startup.summary.protected`:`startup.summary.native`)})]}):(0,Q.jsxs)(`div`,{className:`startup-health-bar startup-health-bar--pending`,"aria-hidden":`true`,children:[(0,Q.jsx)(`span`,{className:`dot dot-amber`}),(0,Q.jsx)(`span`,{className:`startup-health-bar__summary`,children:`\xA0`})]})})]}),(0,Q.jsx)(gr,{data:r}),s.length>0&&(0,Q.jsxs)(`div`,{className:`notice notice-err maintenance-notice`,role:`alert`,children:[(0,Q.jsx)(Ae,{}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:h(`dash.projectConfigTitle`)}),(0,Q.jsx)(`div`,{className:`muted text-control`,style:{marginTop:4},children:h(`dash.projectConfigHint`)}),(0,Q.jsx)(`ul`,{className:`text-control`,style:{margin:`10px 0 0`,paddingLeft:18},children:s.map(e=>(0,Q.jsxs)(`li`,{style:{marginBottom:8},children:[(0,Q.jsx)(`code`,{children:e.path}),` — `,e.issues.join(`, `),(0,Q.jsx)(`div`,{className:`muted`,style:{marginTop:2},children:e.bypass})]},e.path))})]})]})]})}var vr=`gpt-daybreak-blue-latest`,yr=`gpt-6-astra`,br=`gpt-6-sol`,xr=`gpt-6-luna`,Sr=`gpt-6.1-sol`,Cr=`gpt-6-astra-minor`,wr=Object.freeze({contextWindow:272e3,maxContextWindow:872e3,maxInputTokens:872e3});Object.freeze({...wr,contextWindow:5e5});var Tr=new Set([vr,Cr]),Er=Object.freeze({[vr]:`gpt-5.6-sol`,[Cr]:yr});Object.freeze(Object.keys(Er)),Object.freeze({[vr]:{displayName:`Daybreak Blue`,description:`Frontier general-purpose model with safeguards for defensive cybersecurity work.`},[Cr]:{displayName:`GPT-6-Astra-Minor`,description:`Unreleased GPT-6 Astra variant; shown only when your account's Codex roster lists it.`}});var Dr=[...Object.freeze([`gpt-5.5`,`gpt-5.6-sol`,`gpt-5.6-terra`,`gpt-5.6-luna`,vr,yr,br,xr,Sr,Cr])],Or=new Set(Dr);[...Tr];var kr=18e5,Ar=[`account_unavailable`,`access_denied`,`rate_limited`,`upstream_error`,`redirect_blocked`,`destination_blocked`,`dns_failed`,`timeout`,`transport_error`,`response_unusable`];function jr(e){return Ar.find(t=>t===e)}var Mr=1e3,Nr=12e4,Pr=4e3;function Fr(e){try{let t=e.trim();if(/[\u0000-\u001f\u007f]/.test(t))return!1;let n=t.replace(/^[a-z][a-z\d+.-]*:[/\\]*/i,``).split(/[/\\]/,1)[0]??``;if(/[?#]/.test(t)||n.includes(`@`))return!1;let r=new URL(t);if(r.username||r.password||r.search||r.hash)return!1;let i=r.hostname,a=i===`localhost`||i===`[::1]`||/^(?:(?:127|10)\.\d+|172\.(?:1[6-9]|2\d|3[01])|192\.168)\.\d+\.\d+$/.test(i)||/^\[f[cd][\da-f]{2}:/.test(i)||/^\[::ffff:7f[\da-f]{2}:/.test(i);return r.protocol===`https:`||r.protocol===`http:`&&a&&r.pathname.replace(/\/+$/,``).endsWith(`/systemone`)}catch{return!1}}function Ir(e){return e?e.adapter===`jev-decision`?e.disabled===!0?`disabled`:Fr(e.baseUrl??``)?!e.defaultModel?.trim()&&!e.models?.[0]?.trim()?`model`:null:`endpoint`:`notDecision`:`missing`}function Lr(e){return e.name===`jev`?e.adapter===`jev-decision`&&e.disabled!==!0&&e.hasApiKey===!0:Ir(e)===null}var Rr={typesafe:`cws.jev.backend.typesafe`,systemone:`cws.jev.backend.systemone`,model:`cws.jev.backend.model`,unknown:`cws.jev.backend.unknown`};function zr(e){return e.decisionModel==null?e.decisionProvider!=null&&e.decisionProvider.trim()!==`jev`?`systemone`:`typesafe`:`model`}function Br(e,t,n){let r=e.trim(),i=e=>r===`combo/${e.id.trim()}`||!!e.alias?.trim()&&r===e.alias.trim()||!!e.model?.trim()&&r===e.model.trim();return!!n&&i(n)||t.some(e=>e.strategy===`jev`&&i(e))}function Vr(e,t,n,r){let i=new Set(t.filter(e=>!e.disabled&&e.adapter!==`jev-decision`).map(e=>e.name)),a=e.filter(e=>!e.disabled&&e.provider!==`combo`&&i.has(e.provider)).map(e=>e.namespaced?.trim()||`${e.provider}/${e.id}`);return a.push(...n.filter(e=>e.strategy!==`jev`).map(e=>e.model)),[...new Set(a)].filter(e=>!Br(e,n,r)).sort((e,t)=>e.localeCompare(t))}var Hr=[`low`,`medium`,`high`,`xhigh`,`max`,`ultra`],Ur=[`failover`,`round-robin`,`random`,`least-used`,`reset-window`,`jev`],Wr={failover:`cws.strategy.failover`,"round-robin":`cws.strategy.roundRobin`,random:`cws.strategy.random`,"least-used":`cws.strategy.leastUsed`,"reset-window":`cws.strategy.resetWindow`,jev:`cws.strategy.jev`},Gr={failover:`cws.strategy.failoverHint`,"round-robin":`cws.strategy.roundRobinHint`,random:`cws.strategy.randomHint`,"least-used":`cws.strategy.leastUsedHint`,"reset-window":`cws.strategy.resetWindowHint`,jev:`cws.strategy.jevHint`},Kr={failover:`cws.targets.failoverHint`,"round-robin":`cws.targets.roundRobinHint`,random:`cws.targets.randomHint`,"least-used":`cws.targets.leastUsedHint`,"reset-window":`cws.targets.resetWindowHint`,jev:`cws.targets.jevHint`},qr=new Set(Ur),Jr={missing:`cws.jev.decisionIssue.missing`,notDecision:`cws.jev.decisionIssue.notDecision`,disabled:`cws.jev.decisionIssue.disabled`,endpoint:`cws.jev.decisionIssue.endpoint`,model:`cws.jev.decisionIssue.model`};function Yr(e,t,n=`strict`){let r=e.filter(e=>e.provider.trim()&&e.model.trim());if(r.length===0)return[...Hr];let i=new Set(Hr),a=null;for(let e of r){let r=`${e.provider.trim()}/${e.model.trim()}`,o=t.get(r);if(o===void 0||n===`adaptive`&&o.length===0)continue;let s=o.filter(e=>i.has(e));if(a===null)a=s;else{let e=new Set(s);a=a.filter(t=>e.has(t))}}if(a===null)return[...Hr];let o=new Set(a);return Hr.filter(e=>o.has(e))}var Xr=kr,Zr=0;function Qr(e={}){return{provider:e.provider??``,model:e.model??``,...e.weight===void 0?{}:{weight:e.weight},...e.reasoningEfforts===void 0?{}:{reasoningEfforts:[...e.reasoningEfforts]},...e.modelProfile===void 0?{}:{modelProfile:e.modelProfile},clientKey:e.clientKey??`ct-${++Zr}`}}function $r(e){return e===`disabled`?`disabled`:`auto`}function ei(e){return e===`adaptive`?`adaptive`:`strict`}var ti=/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}$/,ni=/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}(\/[a-zA-Z0-9][a-zA-Z0-9._-]{0,63})?$/,ri=/^(?:gpt-|o1-|o3-|o4-|codex-)/;function ii(e){return ti.test(e.trim())}function ai(e){return`combo/${e.trim()}`}function oi(e,t){return(typeof t==`string`?t.trim():``)||ai(e)}function si(e,t){let n=t.trim(),r=e.nativeAlias&&(!n||n.includes(`/`)||!ri.test(n));return{...e,alias:n?t:null,model:oi(e.id,t),...r?{nativeAlias:!1,displayName:null}:{}}}function ci(e){let t=typeof e==`string`?e.trim():``;return t&&t!==`jev`?t:null}function li(e){return typeof e==`number`&&Number.isInteger(e)?e:null}function ui(e){return typeof e==`string`&&e.trim()?e.trim():null}function di(e){return typeof e==`string`&&qr.has(e)?e:`failover`}function fi(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=100?e:1}function pi(e){return typeof e==`string`&&Hr.includes(e)?e:null}function mi(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=1e4?e:void 0}function hi(e){if(!Array.isArray(e)||e.length===0)return;let t=[],n=new Set;for(let r of e){if(typeof r!=`string`||!Hr.includes(r))return;let e=r;if(n.has(e))return;n.add(e),t.push(e)}return t}function gi(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=mi(t.weight),o=hi(t.reasoningEfforts);a.push(Qr({provider:n,model:r,...i===void 0?{}:{weight:i},...o===void 0?{}:{reasoningEfforts:o},...typeof t.modelProfile==`string`?{modelProfile:t.modelProfile}:{}}))}let o=ci(t.decisionProvider),s=ui(t.decisionModel),c=li(t.decisionTimeoutMs);n.push({id:r,model:typeof t.model==`string`&&t.model.trim()?t.model.trim():oi(r,ui(t.alias)),alias:ui(t.alias),nativeAlias:t.nativeAlias===!0,displayName:ui(t.displayName),strategy:di(t.strategy),stickyLimit:fi(t.stickyLimit),defaultEffort:pi(t.defaultEffort),imageInput:$r(t.imageInput),reasoningEffortMode:ei(t.reasoningEffortMode),...o===null?{}:{decisionProvider:o},...s===null?{}:{decisionModel:s},...c===null?{}:{decisionTimeoutMs:c},targets:a})}return n.sort((e,t)=>e.id.localeCompare(t.id,void 0,{sensitivity:`base`}))}function _i(e){let t=[],n=[],r=[];for(let i of e)i.strategy===`failover`?t.push(i):i.strategy===`round-robin`?n.push(i):r.push(i);return{failover:t,roundRobin:n,other:r}}function vi(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 yi(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:null}function bi(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function xi(e,t){let n=yi(e.routingQuota);if(!n||n.state!==`available`&&n.state!==`exhausted`)return null;let r=bi(n.updatedAt),i=bi(n.validUntil);return r===null||r<0||r>t||t-r>=Xr||i===null||i<=t||i>r+Xr?null:{state:n.state,validUntil:i}}function Si(e,t){return xi(e,t)?.state??`unknown`}function Ci(e,t=Date.now()){if(!Array.isArray(e))return;let n;for(let r of e){let e=yi(r);if(!e||typeof e.provider!=`string`||!e.provider.trim())continue;let i=xi(e,t);i&&(n===void 0||i.validUntil<n)&&(n=i.validUntil)}return n}function wi(e,t=Date.now()){if(!Array.isArray(e))return{};let n={};for(let r of e){let e=yi(r),i=typeof e?.provider==`string`?e.provider.trim():``;if(!e||!i)continue;let a=Si(e,t);n[i]=Object.hasOwn(n,i)&&n[i]!==a?`unknown`:a}return n}function Ti(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 Ei(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&&Ti(i.targets,t.providerQuotaStates,t.providers)===`exhausted`&&n.push({id:i.id,model:i.model,reason:`all-targets-exhausted`});return n}function Di(e,t){return e.reasoningEfforts===void 0||t.reasoningEfforts===void 0?e.reasoningEfforts===t.reasoningEfforts:e.reasoningEfforts.length===t.reasoningEfforts.length&&e.reasoningEfforts.every((e,n)=>e===t.reasoningEfforts[n])}function Oi(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.reasoningEffortMode??`strict`)!==(t.reasoningEffortMode??`strict`)||e.strategy===`jev`&&((e.decisionProvider??null)!==(t.decisionProvider??null)||(e.decisionModel??null)!==(t.decisionModel??null)||(e.decisionTimeoutMs??null)!==(t.decisionTimeoutMs??null))||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)&&Di(e,r)&&(e.modelProfile??``)===(r.modelProfile??``)})}function ki(e,t={}){let n=e.strategy===`round-robin`||e.strategy===`random`;return{id:e.id.trim(),...t.renameFrom?{renameFrom:t.renameFrom}:{},...t.visionSidecarTargets?.length?{visionSidecarTargets:t.visionSidecarTargets}:{},combo:{targets:e.targets.map(e=>({provider:e.provider.trim(),model:e.model.trim(),...n?{weight:e.weight??1}:{},...e.reasoningEfforts===void 0?{}:{reasoningEfforts:[...e.reasoningEfforts]},...e.modelProfile?.trim()?{modelProfile:e.modelProfile.trim()}:{}})),strategy:e.strategy,defaultEffort:e.defaultEffort,imageInput:e.imageInput===`disabled`?`disabled`:`auto`,reasoningEffortMode:e.reasoningEffortMode===`adaptive`?`adaptive`:`strict`,...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()}:{},...e.strategy===`jev`?{decisionProvider:e.decisionModel?.trim()?null:ci(e.decisionProvider),decisionModel:e.decisionModel?.trim()||null,decisionTimeoutMs:e.decisionTimeoutMs??null}:{}}}}function Ai(e,t){let n=e.id.trim();if(!n)return`missingId`;if(!ii(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(!ni.test(r))return`invalidAlias`;if(r===`combo`||r.startsWith(`combo/`))return`aliasReservedNamespace`;if(!r.includes(`/`)&&ri.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&&!Or.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`;if(n.reasoningEfforts!==void 0&&(n.reasoningEfforts.length===0||n.reasoningEfforts.some(e=>!Hr.includes(e))||new Set(n.reasoningEfforts).size!==n.reasoningEfforts.length))return`invalidReasoningEfforts`;if(n.modelProfile!==void 0&&(n.modelProfile.length>512||[...n.modelProfile].some(e=>{let t=e.charCodeAt(0);return t<32&&t!==9&&t!==10&&t!==13||t===127})))return`invalidModelProfile`}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`&&(!Number.isInteger(e.stickyLimit)||e.stickyLimit<1||e.stickyLimit>100))return`invalidStickyLimit`;if(e.strategy===`round-robin`||e.strategy===`random`)for(let t of e.targets){let e=t.weight??1;if(!Number.isInteger(e)||e<1||e>1e4)return`invalidWeight`}if(e.strategy===`jev`&&e.decisionTimeoutMs!=null&&(!Number.isInteger(e.decisionTimeoutMs)||e.decisionTimeoutMs<1e3||e.decisionTimeoutMs>12e4))return`invalidDecisionTimeout`;if(e.strategy===`jev`&&zr(e)===`model`){let n=e.decisionModel?.trim()??``;if(!n||n.length>512||e.decisionProvider!=null||Br(n,t.combos??[],e)||t.decisionModels&&!t.decisionModels.includes(n))return`invalidDecisionModel`}return e.strategy===`jev`&&zr(e)===`systemone`&&(!e.decisionProvider?.trim()||Pi(e.decisionProvider,t.providers)!==null)?`invalidDecisionProvider`:e.targets.some(e=>t.providers[e.provider.trim()]?.disabled!==!0)?null:`noEnabledTarget`}function ji(e=``){return{id:e,model:e?ai(e):`combo/`,alias:null,nativeAlias:!1,displayName:null,strategy:`failover`,stickyLimit:1,defaultEffort:null,imageInput:`auto`,reasoningEffortMode:`strict`,targets:[Qr()]}}var Mi=[`gpt-6-astra`,`gpt-5.6-sol`,`gpt-5.6-luna`];function Ni(e,t,n){let r=Mi.flatMap(n=>{let r=e.find(e=>e.id===n&&(t===void 0||t.has(e.provider)));return r?[Qr({provider:r.provider,model:r.id})]:[]});return{id:`jev-auto`,model:`jev-auto`,alias:`jev-auto`,nativeAlias:!1,displayName:null,strategy:`jev`,stickyLimit:1,defaultEffort:null,imageInput:`auto`,reasoningEffortMode:`adaptive`,decisionProvider:ci(n),targets:r.length>0?r:[Qr()]}}function Pi(e,t){let n=ci(e);return n===null?null:Ir(Object.hasOwn(t,n)?t[n]:void 0)}function Fi(e,t){let n=e.filter(e=>e.adapter===`jev-decision`&&e.name!==`jev`).toSorted((e,t)=>e.name.localeCompare(t.name)).map(e=>{let t=Ir(e);return{id:e.name,...e.baseUrl?{baseUrl:e.baseUrl}:{},...t?{issue:t}:{}}}),r=ci(t),i=r!==null&&!n.some(e=>e.id===r)?[{id:r,issue:e.some(e=>e.name===r)?`notDecision`:`missing`}]:[];return[{id:null},...n,...i]}function Ii(e,t){if(e.strategy!==`jev`)return null;let n=ci(e.decisionProvider),r=n===null?void 0:t.find(e=>e.name===n);return{provider:n,model:e.decisionModel?.trim()||null,baseUrl:r?.baseUrl?.trim()||null,timeoutMs:e.decisionTimeoutMs??null}}var Li=[`none`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`,`ultra`],Ri=[`manual`,`auto`],zi=300,Bi=[`manual`,`manual+auto`,`auto`],Vi={manual:`compactionRouting.triggersManual`,"manual+auto":`compactionRouting.triggersBoth`,auto:`compactionRouting.triggersAuto`},Hi=[`all`,`selected`],Ui={all:`compactionRouting.sourcesAll`,selected:`compactionRouting.sourcesSelected`};function Wi(e){if(!e)return`manual`;let t=e.includes(`auto`);return e.includes(`manual`)?t?`manual+auto`:`manual`:t?`auto`:`manual`}function Gi(e){if(e===`auto`)return[`auto`];if(e===`manual+auto`)return[`manual`,`auto`]}function Ki(e){let t=new Map;for(let n of gi(e))t.set(n.model,[...new Set(n.targets.flatMap(e=>e.provider?[e.provider]:[]))]);return t}function qi(e){let t=e.compactionRouting;if(t==null)return null;if(!t||typeof t!=`object`||!(`model`in t)||typeof t.model!=`string`||!t.model.trim())throw Error(`invalid settings`);let n=`reasoningEffort`in t?t.reasoningEffort:void 0;if(n!==void 0&&(typeof n!=`string`||!Li.includes(n)))throw Error(`invalid effort`);let r=`triggers`in t?t.triggers:void 0,i=`sourceModels`in t?t.sourceModels:void 0;if(i!==void 0&&(!Array.isArray(i)||!i.length||!i.every(e=>typeof e==`string`&&e.trim())))throw Error(`invalid sourceModels`);if(r!==void 0&&(!Array.isArray(r)||r.length===0||!r.every(e=>typeof e==`string`&&Ri.includes(e))||new Set(r).size!==r.length))throw Error(`invalid triggers`);return{model:t.model,...n?{reasoningEffort:n}:{},...r?{triggers:r}:{},...i?{sourceModels:i}:{}}}function Ji(e){if(!e)return``;try{return new URL(e).hostname||e}catch{return e}}function Yi(e,t){let n=t.get(e);return n?`${e} (${n})`:e}function Xi(e){return(0,Q.jsx)(Zi,{...e},e.apiBase)}function Zi({apiBase:e,models:t,providers:n=[]}){let r=O(),[i,a]=(0,Z.useState)(void 0),[o,s]=(0,Z.useState)(``),[c,l]=(0,Z.useState)(``),[u,d]=(0,Z.useState)(`manual`),[f,p]=(0,Z.useState)(`all`),[m,h]=(0,Z.useState)([]),[g,_]=(0,Z.useState)(``),[v,y]=(0,Z.useState)(!1),[b,x]=(0,Z.useState)(!1),[S,C]=(0,Z.useState)(null),[w,T]=(0,Z.useState)(()=>new Map),E=(0,Z.useRef)(!1),D=(0,Z.useRef)(null),k=(0,Z.useCallback)(e=>{a(e),s(e?.model??``),l(e?.reasoningEffort??``),d(Wi(e?.triggers)),p(e?.sourceModels?`selected`:`all`),h(e?.sourceModels??[])},[]),j=e=>{h(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e]),C(null)},M=(0,Z.useCallback)(async()=>{if(D.current)return;let t=A(15e3);D.current=t,x(!1);try{let n=qi(await Tn(await fetch(`${e}/api/settings`,{signal:t.signal})));E.current&&D.current===t&&k(n);let r=await fetch(`${e}/api/combos`,{signal:t.signal}).then(Tn).then(Ki).catch(()=>new Map);E.current&&D.current===t&&T(r)}catch{E.current&&D.current===t&&x(!0)}finally{t.clear(),D.current===t&&(D.current=null)}},[e,k]);(0,Z.useEffect)(()=>{E.current=!0;let e=window.setTimeout(()=>{M()},0);return()=>{window.clearTimeout(e),E.current=!1,D.current?.controller.abort(),D.current?.clear(),D.current=null}},[M]);let N=async()=>{if(D.current||i===void 0)return;let t=A(15e3);D.current=t,y(!0),C(null);try{let n=qi(await Tn(await fetch(`${e}/api/settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({compactionRouting:o?{model:o,...c?{reasoningEffort:c}:{},...Gi(u)?{triggers:Gi(u)}:{},...f===`selected`&&m.length>0?{sourceModels:m}:{}}:null}),signal:t.signal})));E.current&&D.current===t&&(k(n),C(`saved`))}catch{E.current&&D.current===t&&C(`failed`)}finally{t.clear(),E.current&&D.current===t&&y(!1),D.current===t&&(D.current=null)}},P=[{value:``,label:r(`compactionRouting.currentModel`)},...[...new Set([...t.map(e=>e.namespaced),...o?[o]:[]])].map(e=>({value:e,label:xe(e,r)}))],F=[...new Set([...n.map(e=>e.name),...t.flatMap(e=>e.provider?[e.provider]:[])])].map(e=>`${e}/*`),I=new Set([...F,...t.map(e=>e.namespaced)]),L=(i?.sourceModels??[]).filter(e=>!I.has(e)),R=v||i===void 0||b,z=i?.sourceModels?`selected`:`all`,B=new Set(i?.sourceModels),V=o!==(i?.model??``)||c!==(i?.reasoningEffort??``)||u!==Wi(i?.triggers)||f!==z||f===`selected`&&(m.length!==(i?.sourceModels?.length??0)||m.some(e=>!B.has(e))),H=f===`selected`&&m.length===0,U=new Set(m),W=[...new Set(t.map(e=>e.namespaced))].filter(e=>e.toLowerCase().includes(g.trim().toLowerCase())),G=e=>(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:U.has(e),disabled:R,onChange:()=>{j(e)}}),(0,Q.jsx)(`span`,{children:e})]},e),ee=w.get(o),te=ee!==void 0||o.startsWith(ai(``)),K=o.slice(0,Math.max(o.indexOf(`/`),0)),q=new Map(n.map(e=>[e.name,Ji(e.baseUrl)]).filter(([,e])=>e)),ne=te?``:Yi(K||o,q),J=ee?.map(e=>Yi(e,q)).join(`, `)||r(`compactionRouting.comboProvidersUnknown`),Y=u!==`manual`,re=m.join(`, `),ie=!o||H?null:te?f===`selected`?r(`compactionRouting.comboWarningScoped`,{combo:o,providers:J,sources:re}):r(`compactionRouting.comboWarning`,{combo:o,providers:J}):f===`selected`?r(`compactionRouting.providerWarningScoped`,{provider:ne,sources:re}):r(`compactionRouting.providerWarning`,{provider:ne});return(0,Q.jsxs)(`section`,{className:`panel`,"aria-labelledby":`compaction-routing-title`,"aria-busy":v||i===void 0&&!b,children:[(0,Q.jsxs)(`div`,{className:`spread`,style:{alignItems:`flex-start`,flexWrap:`wrap`},children:[(0,Q.jsxs)(`div`,{style:{flex:`1 1 20rem`,minWidth:0},children:[(0,Q.jsx)(`div`,{className:`font-semibold`,id:`compaction-routing-title`,children:r(`compactionRouting.title`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:r(`compactionRouting.description`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:r(`compactionRouting.dataNotice`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:r(`compactionRouting.effortHint`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:r(`compactionRouting.sourcesHint`)})]}),(0,Q.jsxs)(`div`,{className:`dash-delegation-controls compaction-routing-controls`,style:{flex:`0 1 auto`},children:[(0,Q.jsxs)(`div`,{className:`compaction-field`,children:[(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`compaction-routing-model`,children:r(`compactionRouting.model`)}),(0,Q.jsx)(cn,{id:`compaction-routing-model`,value:o,options:P,disabled:R,label:r(`compactionRouting.model`),onChange:e=>{s(e),e||(l(``),d(`manual`),p(`all`),h([])),C(null)}})]}),(0,Q.jsxs)(`div`,{className:`compaction-field`,children:[(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`compaction-routing-triggers`,children:r(`compactionRouting.triggers`)}),(0,Q.jsx)(cn,{id:`compaction-routing-triggers`,value:u,disabled:R||!o,align:`right`,label:r(`compactionRouting.triggers`),options:Bi.map(e=>({value:e,label:r(Vi[e])})),onChange:e=>{d(e),C(null)}})]}),(0,Q.jsxs)(`div`,{className:`compaction-field`,children:[(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`compaction-routing-sources`,children:r(`compactionRouting.sources`)}),(0,Q.jsx)(cn,{id:`compaction-routing-sources`,value:f,disabled:R||!o,align:`right`,label:r(`compactionRouting.sources`),options:Hi.map(e=>({value:e,label:r(Ui[e])})),onChange:e=>{p(e),C(null)}})]}),(0,Q.jsxs)(`div`,{className:`compaction-field`,children:[(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`compaction-routing-effort`,children:r(`compactionRouting.effort`)}),(0,Q.jsx)(cn,{id:`compaction-routing-effort`,value:c,disabled:R||!o,align:`right`,label:r(`compactionRouting.effort`),options:[{value:``,label:r(`compactionRouting.currentEffort`)},...Li.map(e=>({value:e,label:r(`models.reasoningEffort.${e}`)}))],onChange:e=>{l(e),C(null)}})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:R||!V||H,onClick:()=>{N()},children:r(v?`common.saving`:`common.save`)})]})]}),o&&f===`selected`&&(0,Q.jsxs)(`div`,{className:`compaction-sources-block`,children:[(0,Q.jsx)(`div`,{className:`field-label compaction-sources-title`,children:r(`compactionRouting.sourcesGridTitle`)}),(0,Q.jsxs)(`div`,{className:`source-scope-groups`,children:[F.length>0&&(0,Q.jsxs)(`fieldset`,{className:`source-scope-group`,children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:r(`compactionRouting.sourcesProviders`)}),F.map(G)]}),t.length>0&&(0,Q.jsxs)(`fieldset`,{className:`source-scope-group`,children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:r(`compactionRouting.sourcesModels`)}),(0,Q.jsx)(`input`,{type:`search`,className:`input`,value:g,disabled:R,"aria-label":r(`pws.modelSearchPlaceholder`),placeholder:r(`pws.modelSearchPlaceholder`),onChange:e=>_(e.target.value)}),W.slice(0,zi).map(G),W.length>zi&&(0,Q.jsx)(`p`,{className:`muted text-label`,children:r(`pws.modelsTruncated`,{shown:zi,total:W.length})})]}),L.length>0&&(0,Q.jsxs)(`fieldset`,{className:`source-scope-group`,children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:r(`compactionRouting.sourcesSaved`)}),L.map(G)]}),H&&(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:r(`compactionRouting.sourcesNone`)})]})]}),ie&&(0,Q.jsxs)(`div`,{className:`notice-warn`,role:`note`,style:{marginTop:12},children:[(0,Q.jsx)(Ae,{width:14}),` `,ie]}),o&&Y&&(0,Q.jsxs)(`div`,{className:`notice-warn`,role:`note`,style:{marginTop:12},children:[(0,Q.jsx)(Ae,{width:14}),` `,r(`compactionRouting.autoNotice`)]}),b&&(0,Q.jsxs)(`div`,{className:`notice notice-err`,role:`alert`,style:{marginTop:12,marginBottom:0},children:[r(`compactionRouting.loadFailed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{M()},children:r(`common.retry`)})]}),S===`failed`&&(0,Q.jsx)(`div`,{className:`notice notice-err`,role:`alert`,style:{marginTop:12,marginBottom:0},children:r(`compactionRouting.saveFailed`)}),S===`saved`&&(0,Q.jsx)(`div`,{className:`muted setting-hint`,role:`status`,children:r(`compactionRouting.saved`)})]})}function Qi(e){if(!(`reasoningRetention`in e))throw Error(`Missing reasoningRetention settings`);return e.reasoningRetention??null}function $i({apiBase:e}){let t=O();return(0,Q.jsxs)(`details`,{className:`panel`,children:[(0,Q.jsx)(`summary`,{className:`font-semibold`,children:t(`reasoningRetention.advanced`)}),(0,Q.jsx)(ea,{apiBase:e},e)]})}function ea({apiBase:e}){let t=O(),[n,r]=(0,Z.useState)(),[i,a]=(0,Z.useState)(!1),[o,s]=(0,Z.useState)(`20`),[c,l]=(0,Z.useState)(`100000`),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(null),g=(0,Z.useRef)(!1),_=(0,Z.useRef)(null),v=(0,Z.useCallback)(e=>{r(e),a(e?.enabled===!0),s(String(e?.maxContextPercent??20)),l(String(e?.maxTokens??1e5))},[]),y=(0,Z.useCallback)(async()=>{if(_.current)return;let t=A(15e3);_.current=t,p(!1);try{let n=Qi(await Tn(await fetch(`${e}/api/settings`,{signal:t.signal})));g.current&&_.current===t&&v(n)}catch{g.current&&_.current===t&&p(!0)}finally{t.clear(),_.current===t&&(_.current=null)}},[e,v]);(0,Z.useEffect)(()=>{g.current=!0;let e=window.setTimeout(()=>{y()},0);return()=>{window.clearTimeout(e),g.current=!1,_.current?.controller.abort(),_.current?.clear(),_.current=null}},[y]);let b=o.trim()!==``&&Number.isFinite(Number(o))&&Number(o)>0&&Number(o)<=100,x=c.trim()!==``&&Number.isSafeInteger(Number(c))&&Number(c)>0,S=!i||b&&x,C=i!==(n?.enabled===!0)||i&&(Number(o)!==(n?.maxContextPercent??20)||Number(c)!==(n?.maxTokens??1e5)),w=async(t=!1)=>{if(_.current||n===void 0||!t&&!S)return;let r=A(15e3);_.current=r,d(!0),h(null);try{let n=Qi(await Tn(await fetch(`${e}/api/settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},signal:r.signal,body:JSON.stringify({reasoningRetention:t?null:i?{enabled:!0,maxContextPercent:Number(o),maxTokens:Number(c)}:{enabled:!1}})})));g.current&&_.current===r&&(v(n),h(`saved`))}catch{g.current&&_.current===r&&h(`failed`)}finally{r.clear(),g.current&&_.current===r&&d(!1),_.current===r&&(_.current=null)}},T=u||n===void 0||f;return(0,Q.jsxs)(`section`,{"aria-labelledby":`reasoning-retention-title`,"aria-busy":u||n===void 0&&!f,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,id:`reasoning-retention-title`,children:t(`reasoningRetention.title`)}),(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:t(`reasoningRetention.description`)}),(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:t(`reasoningRetention.storageHint`)}),(0,Q.jsx)(on,{on:i,disabled:T,label:t(`reasoningRetention.enable`),showLabel:!0,onClick:()=>{a(e=>!e),h(null)}}),(0,Q.jsxs)(`div`,{className:`row`,style:{flexWrap:`wrap`,alignItems:`flex-end`},children:[i&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`label`,{className:`field-label`,htmlFor:`reasoning-retention-percent`,children:[t(`reasoningRetention.percent`),(0,Q.jsx)(`input`,{id:`reasoning-retention-percent`,className:`input`,type:`number`,min:`0`,max:`100`,step:`any`,value:o,disabled:T,"aria-invalid":!b||void 0,"aria-describedby":b?void 0:`reasoning-retention-error`,onInput:e=>{s(e.currentTarget.value),h(null)}})]}),(0,Q.jsxs)(`label`,{className:`field-label`,htmlFor:`reasoning-retention-tokens`,children:[t(`reasoningRetention.tokens`),(0,Q.jsx)(`input`,{id:`reasoning-retention-tokens`,className:`input`,type:`number`,min:`1`,step:`1`,value:c,disabled:T,"aria-invalid":!x||void 0,"aria-describedby":x?void 0:`reasoning-retention-error`,onInput:e=>{l(e.currentTarget.value),h(null)}})]})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:T||!S||!C,onClick:()=>{w()},children:t(`common.save`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:T||n===null&&!C,onClick:()=>{w(!0)},children:t(`reasoningRetention.reset`)})]}),!S&&(0,Q.jsx)(`div`,{id:`reasoning-retention-error`,className:`notice notice-err`,role:`alert`,children:t(`reasoningRetention.invalid`)}),f&&(0,Q.jsxs)(`div`,{className:`notice notice-err`,role:`alert`,children:[t(`reasoningRetention.loadFailed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{y()},children:t(`common.retry`)})]}),m===`failed`&&(0,Q.jsx)(`div`,{className:`notice notice-err`,role:`alert`,children:t(`reasoningRetention.saveFailed`)}),m===`saved`&&(0,Q.jsx)(`div`,{className:`muted setting-hint`,role:`status`,children:t(`reasoningRetention.saved`)})]})}var ta=0;function na(e){let t=e.split(/\n{2,}/).map(e=>e.trim()).filter(e=>e.length>0);return t.length>0?t:[e]}function ra(e,t,n,r){let i=o[e],a=`opencodex-action-dialog-${++ta}`,s=document.activeElement,c=typeof s?.focus==`function`?s:null,l=!1,u=document.createElement(`dialog`);u.id=a,u.className=`modal-overlay`,u.setAttribute(`aria-labelledby`,`${a}-body`);let d=document.createElement(`button`);d.type=`button`,d.className=`modal-backdrop-dismiss`,d.tabIndex=-1,d.setAttribute(`aria-label`,i[`common.close`]);let f=document.createElement(`form`);f.className=`modal-card`;let p=e=>{if(!l){l=!0,window.removeEventListener(`hashchange`,m),window.removeEventListener(`popstate`,m),document.removeEventListener(`keydown`,h),r?.removeEventListener(`abort`,m);try{u.open&&typeof u.close==`function`&&u.close(),u.remove(),c?.isConnected&&c.focus()}finally{n(e)}}};function m(){p(t)}function h(e){e.key===`Escape`&&p(t)}return d.addEventListener(`click`,()=>p(t)),u.addEventListener(`cancel`,e=>{e.preventDefault(),p(t)}),window.addEventListener(`hashchange`,m),window.addEventListener(`popstate`,m),r?.addEventListener(`abort`,m),u.append(d,f),document.body.append(u),typeof u.showModal==`function`?u.showModal():(u.setAttribute(`open`,``),document.addEventListener(`keydown`,h)),{form:f,bodyId:`${a}-body`,finish:p}}function ia(e,t,n,r=`div`){let i=document.createElement(r);i.id=t;for(let e of na(n)){let t=document.createElement(`p`);t.className=`modal-desc`,t.textContent=e,i.append(t)}return e.append(i),i}function aa(e){let t=e.locale??a(),n=o[t],r=e.tone===`danger`;return new Promise(i=>{if(e.signal?.aborted){i(!1);return}let{form:a,bodyId:o,finish:s}=ra(t,!1,i,e.signal);ia(a,o,e.message);let c=document.createElement(`div`);c.className=`modal-actions`;let l=document.createElement(`button`);l.type=`button`,l.className=`btn btn-ghost`,l.textContent=n[`common.cancel`],l.addEventListener(`click`,()=>s(!1));let u=document.createElement(`button`);u.type=`submit`,u.className=r?`btn btn-danger`:`btn btn-primary`,u.textContent=e.confirmLabel??n[`common.ok`],a.addEventListener(`submit`,e=>{e.preventDefault(),s(!0)}),c.append(l,u),a.append(c),queueMicrotask(()=>(r?l:u).focus())})}function oa(e){let t=e.locale??a(),n=o[t];return new Promise(r=>{if(e.signal?.aborted){r(null);return}let{form:i,bodyId:a,finish:o}=ra(t,null,r,e.signal),s=document.createElement(`input`),c=`${a}-input`,l=ia(i,a,e.message,`label`);l.className=`field-label`,l.setAttribute(`for`,c),s.id=c,s.className=`input`,s.type=`text`,s.value=e.initialValue??``,s.spellcheck=!1,s.autocapitalize=`none`,e.maxLength!==void 0&&(s.maxLength=e.maxLength);let u=document.createElement(`div`),d=`${a}-error`;u.id=d,u.className=`notice notice-err`,u.setAttribute(`role`,`alert`),u.hidden=!0;let f=e=>{u.textContent=e??``,u.hidden=e===null,e===null?(s.removeAttribute(`aria-invalid`),s.removeAttribute(`aria-describedby`)):(s.setAttribute(`aria-invalid`,`true`),s.setAttribute(`aria-describedby`,d))},p=document.createElement(`div`);p.className=`modal-actions`;let m=document.createElement(`button`);m.type=`button`,m.className=`btn btn-ghost`,m.textContent=n[`common.cancel`],m.addEventListener(`click`,()=>o(null));let h=document.createElement(`button`);h.type=`submit`,h.className=`btn btn-primary`,h.textContent=e.confirmLabel??n[`common.save`],i.addEventListener(`submit`,t=>{t.preventDefault();let n=s.value,r=e.validate?.(n)??null;if(f(r),r!==null){h.disabled=!0,s.focus();return}o(n)}),s.addEventListener(`input`,()=>{h.disabled&&=!1,u.hidden||f(null)}),p.append(m,h),i.append(s,u,p),queueMicrotask(()=>s.focus())})}function sa(){return ut()}function ca(e,t){return typeof window<`u`&&typeof window.setInterval==`function`?window.setInterval(e,t):setInterval(e,t)}function la(e){if(typeof window<`u`&&typeof window.clearInterval==`function`){window.clearInterval(e);return}clearInterval(e)}function ua(e,t,n){let r=n?.pauseWhenHidden!==!1,i=null,a=!1,o=()=>{try{e()}catch(e){console.error(`[visibility-poll]`,e)}},s=()=>{i!==null||a||(i=ca(o,t))},c=()=>{i!==null&&(la(i),i=null)},l=()=>{if(r){if(sa()){c();return}o(),s()}};r&&sa()||s();let u=r?dt(l):null;return n?.immediate&&o(),()=>{a=!0,c(),u?.()}}var da=new Map;function fa(e,t){let n=`${e}:${t}`,r=da.get(n);return r||(r=new Intl.NumberFormat(e,{minimumFractionDigits:t,maximumFractionDigits:t}),da.set(n,r)),r}var pa=new Map;function ma(e){let t=pa.get(e);return t||(t=new Intl.NumberFormat(e),pa.set(e,t)),t}function ha(e,t){if(!Number.isFinite(e)||e<=0)return`0 B`;let n=[`B`,`KiB`,`MiB`,`GiB`,`TiB`],r=Math.min(Math.floor(Math.log(e)/Math.log(1024)),n.length-1),i=e/1024**r;return`${fa(t,r===0?0:1).format(i)} ${n[r]}`}function ga(e,t){return!Number.isFinite(e)||e<0?`—`:ur(e/1e3,t)}function _a(e){return typeof e.observedBytes==`number`?e.observedBytes:Math.max(e.rss,e.external??0,e.arrayBuffers??0)}function va(e){if(e.observedMetric)return e.observedMetric;if(e.watchdog?.observedMetric)return e.watchdog.observedMetric;let t=[{metric:`rss`,bytes:e.rss},{metric:`external`,bytes:e.external??0},{metric:`arrayBuffers`,bytes:e.arrayBuffers??0}];return t.reduce((e,t)=>t.bytes>e.bytes?t:e,t[0]).metric}function ya(e){if(e.length<2)return null;let t=e[0],n=e[e.length-1],r=n.at-t.at;return r<=0?null:(_a(n)-_a(t))/r*36e5}function ba({label:e,value:t,sub:n,tone:r}){return(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`label`,children:e}),(0,Q.jsx)(`div`,{className:`value mono${r?` value--${r}`:``}`,children:t}),n&&(0,Q.jsx)(`div`,{className:`stat-sub mono`,children:n})]})}function xa({observedBytes:e,thresholdBytes:t,metric:n,locale:r,t:i}){let a=e!==null&&t!==null&&t>0?e/t:null,o=a===null?`unknown`:a>=1?`over`:a>=.75?`warn`:`ok`,s=a===null?null:Math.round(a*100);return(0,Q.jsxs)(`div`,{className:`mem-pressure mem-pressure--${o}`,children:[(0,Q.jsxs)(`div`,{className:`mem-pressure-head`,children:[(0,Q.jsxs)(`span`,{className:`mem-pressure-label`,children:[i(`dash.mem.pressure`),n?(0,Q.jsx)(`span`,{className:`mem-pressure-metric mono`,children:n}):null]}),(0,Q.jsxs)(`span`,{className:`mem-pressure-figure mono`,children:[e===null?`—`:ha(e,r),t!==null&&(0,Q.jsxs)(`span`,{className:`mem-pressure-limit`,children:[` / `,ha(t,r)]})]})]}),(0,Q.jsx)(`div`,{className:`mem-pressure-track`,role:`presentation`,children:(0,Q.jsx)(`span`,{className:`mem-pressure-fill`,style:{"--mem-scale":String(a===null?0:Math.min(1,Math.max(.01,a)))}})}),(0,Q.jsx)(`div`,{className:`mem-pressure-foot`,children:s===null?i(`dash.mem.pressureUnknown`):i(`dash.mem.pressureOf`,{pct:s})})]})}var Sa=60,Ca=1500,wa=12e4;function Ta({apiBase:e}){let{locale:n,t:r}=t(),[i,a]=(0,Z.useState)(null),[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(`idle`),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{let t=!1;return(async()=>{try{let n=await fetch(`${e}/api/startup-health`);if(!n.ok||t)return;let r=await n.json();t||p(r.protection===`none`)}catch{}})(),()=>{t=!0}},[e]),(0,Z.useEffect)(()=>{let t=!1,n=!1,r=null,i=async()=>{if(n)return;n=!0;let i=A(1e4);r=i;try{let n=await fetch(`${e}/api/system/memory`,{signal:i.signal});if(!n.ok)throw Error(`memory unavailable`);let r=await n.json();if(t)return;a(r),s(!1),h(typeof r.activeTurnCount==`number`),r.isDraining&&c===`idle`&&l(`draining`),(c===`draining`||c===`reconnecting`)&&g!=null&&typeof r.pid==`number`&&r.pid!==g&&!r.isDraining&&(l(`idle`),_(null),d(null))}catch{if(t)return;c===`draining`||c===`reconnecting`?l(`reconnecting`):s(!0)}finally{i.clear(),r===i&&(r=null),n=!1}};i();let o=ua(()=>void i(),5e3);return()=>{t=!0,r?.controller.abort(),r?.clear(),o()}},[e,c,g]),(0,Z.useEffect)(()=>{if(c!==`reconnecting`)return;let t=!1,n=!1,i=null,a=Date.now(),o=()=>{if(n||t)return;n=!0;let o=A(5e3);i=o,fetch(`${e}/api/system/health`,{cache:`no-store`,signal:o.signal}).then(async e=>{if(t)return;if(!e.ok){Date.now()-a>=wa&&(l(`error`),d(r(`dash.mem.restartFailed`)));return}let n=g==null;if(g!=null)try{let t=await e.json();n=typeof t.pid==`number`&&t.pid!==g}catch{n=!0}if(!t){if(n){l(`idle`),_(null),d(null);return}Date.now()-a>=wa&&(l(`error`),d(r(`dash.mem.restartFailed`)))}}).catch(()=>{t||Date.now()-a>=wa&&(l(`error`),d(r(`dash.mem.restartFailed`)))}).finally(()=>{o.clear(),i===o&&(i=null),n=!1})};o();let s=setInterval(o,Ca);return()=>{t=!0,i?.controller.abort(),i?.clear(),clearInterval(s)}},[e,c,g,r]);let v=async()=>{let t=i?.activeTurnCount??0,n=[r(`dash.mem.restartConfirm`,{count:t,seconds:Sa})];if(f&&n.push(r(`dash.mem.restartNoSupervisor`)),await aa({message:n.join(`
2
2
 
3
3
  `),tone:`danger`})){d(null),_(typeof i?.pid==`number`?i.pid:null),l(`draining`);try{if(!(await fetch(`${e}/api/system/restart`,{method:`POST`})).ok)throw Error(`restart_failed`)}catch{l(`error`),_(null),d(r(`dash.mem.restartFailed`))}}};if(o&&!i&&c===`idle`)return(0,Q.jsxs)(`div`,{className:`panel`,style:{marginBottom:24},children:[(0,Q.jsxs)(`div`,{className:`font-semibold`,style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,Q.jsx)(j,{width:16,height:16,"aria-hidden":`true`}),r(`dash.mem.title`)]}),(0,Q.jsx)(`div`,{className:`muted text-control`,style:{marginTop:8},children:r(`dash.mem.unavailable`)})]});let y=i?.watchdog?ya(i.watchdog.samples):null,b=i?i.observedBytes??i.watchdog?.observedBytes??_a(i):null,x=i?va(i):null,S=(()=>{let e=i?.watchdog?.warnThresholdBytes;if(y===null||y<=0||b===null||!e)return;let t=e-b;if(t<=0)return`danger`;let n=t/y;if(n<=1)return`danger`;if(n<=8)return`warn`})(),C=i?.responseState,w=i?.activeTurnCount,T=c===`draining`||c===`reconnecting`;return(0,Q.jsxs)(`div`,{className:`panel`,style:{marginBottom:24},children:[(0,Q.jsxs)(`div`,{className:`mem-head`,children:[(0,Q.jsxs)(`div`,{className:`font-semibold mem-head-title`,children:[(0,Q.jsx)(j,{width:16,height:16,"aria-hidden":`true`}),r(`dash.mem.title`)]}),m&&(0,Q.jsxs)(`div`,{className:`mem-head-actions`,children:[(0,Q.jsxs)(`span`,{className:`mem-inflight`,children:[(0,Q.jsx)(`span`,{className:`mem-inflight-label`,children:r(`dash.mem.inFlight`)}),(0,Q.jsx)(`span`,{className:`mem-inflight-value mono`,children:typeof w==`number`?ma(n).format(w):`—`})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:T,onClick:()=>{v()},children:r(`dash.mem.restart`)})]})]}),(0,Q.jsx)(xa,{observedBytes:b,thresholdBytes:i?.watchdog?.warnThresholdBytes??null,metric:x,locale:n,t:r}),(0,Q.jsxs)(`div`,{className:`stat-row mem-stats`,children:[(0,Q.jsx)(ba,{label:r(`dash.mem.rss`),value:i?ha(i.rss,n):`—`}),(0,Q.jsx)(ba,{label:r(`dash.mem.jsHeap`),value:i?ha(i.heapUsed,n):`—`,sub:i?r(`dash.mem.jsHeapArena`,{total:ha(i.heapTotal,n)}):void 0}),(0,Q.jsx)(ba,{label:r(`dash.mem.jscHeap`),value:i?.jscHeap?ha(i.jscHeap.heapSize,n):`—`}),(0,Q.jsx)(ba,{label:r(`dash.mem.growth`),value:y===null?`—`:`${y>=0?`+`:`−`}${ha(Math.abs(y),n)}${r(`dash.mem.perHour`)}`,tone:S})]}),(0,Q.jsxs)(`details`,{style:{marginTop:10},children:[(0,Q.jsx)(`summary`,{className:`muted text-label`,style:{cursor:`pointer`,padding:`2px 2px`},children:r(`dash.mem.details`)}),(0,Q.jsx)(`div`,{className:`muted text-control`,style:{margin:`8px 0 0`},children:r(`dash.mem.hint`)}),(0,Q.jsx)(`div`,{className:`muted text-label`,style:{margin:`14px 0 6px`},children:r(`dash.mem.runtime`)}),(0,Q.jsxs)(`div`,{className:`stat-row`,children:[(0,Q.jsx)(ba,{label:r(`dash.mem.observed`),value:b===null?`—`:`${ha(b,n)} (${x})`}),(0,Q.jsx)(ba,{label:r(`dash.mem.external`),value:i?.external===void 0?`—`:ha(i.external,n)}),(0,Q.jsx)(ba,{label:r(`dash.mem.arrayBuffers`),value:i?.arrayBuffers===void 0?`—`:ha(i.arrayBuffers,n)})]}),(0,Q.jsx)(`div`,{className:`muted text-label`,style:{margin:`14px 0 6px`},children:r(`dash.mem.store`)}),(0,Q.jsx)(`div`,{className:`muted text-control`,style:{marginBottom:10},children:r(`dash.mem.storeHint`)}),(0,Q.jsxs)(`div`,{className:`stat-row`,children:[(0,Q.jsx)(ba,{label:r(`dash.mem.storeEntries`),value:C?ma(n).format(C.count):`—`}),(0,Q.jsx)(ba,{label:r(`dash.mem.storeTotal`),value:C?ha(C.totalBytes,n):`—`}),(0,Q.jsx)(ba,{label:r(`dash.mem.storeLargest`),value:C?ha(C.largestBytes,n):`—`}),(0,Q.jsx)(ba,{label:r(`dash.mem.storeOldest`),value:C?C.count===0?`—`:ga(C.oldestAgeMs,n):`—`})]}),i?.watchdog&&(0,Q.jsxs)(`div`,{className:`stat-row`,style:{marginTop:16},children:[(0,Q.jsx)(ba,{label:r(`dash.mem.threshold`),value:ha(i.watchdog.warnThresholdBytes,n)}),(0,Q.jsx)(ba,{label:r(`dash.mem.lastWarn`),value:i.watchdog.lastWarnAt?new Date(i.watchdog.lastWarnAt).toLocaleString(n):r(`dash.mem.never`)})]})]}),m&&(0,Q.jsxs)(`div`,{className:`mem-status`,"aria-live":`polite`,children:[c===`draining`&&(0,Q.jsx)(`span`,{className:`muted text-control`,children:r(`dash.mem.draining`,{count:typeof w==`number`?w:0})}),c===`reconnecting`&&(0,Q.jsx)(`span`,{className:`muted text-control`,children:r(`dash.mem.reconnecting`)}),c===`error`&&u&&(0,Q.jsx)(`span`,{className:`text-control`,style:{color:`var(--danger, #c44)`},children:u}),f&&c===`idle`&&(0,Q.jsx)(`span`,{className:`muted text-control`,children:r(`dash.mem.restartNoSupervisor`)})]})]})}var Ea=[`none`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`,`ultra`];function Da(e){let t=e.memoryModels;if(t==null)return{};if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`invalid settings`);let n={};for(let e of[`extract`,`consolidation`]){let r=t[e];if(r===void 0)continue;if(!r||typeof r!=`object`||Array.isArray(r))throw Error(`invalid phase`);let i=`model`in r&&typeof r.model==`string`?r.model.trim():``;if(!i)throw Error(`invalid model`);let a=`reasoningEffort`in r?r.reasoningEffort:void 0;if(a!==void 0&&(typeof a!=`string`||!Ea.includes(a)))throw Error(`invalid effort`);n[e]={model:i,...a?{reasoningEffort:a}:{}}}return n}function Oa(e,t){return e?{model:e,...t?{reasoningEffort:t}:{}}:void 0}function ka(e){return(0,Q.jsx)(Aa,{...e},e.apiBase)}function Aa({apiBase:e,models:t}){let n=O(),[r,i]=(0,Z.useState)(void 0),[a,o]=(0,Z.useState)(!1),[s,c]=(0,Z.useState)(``),[l,u]=(0,Z.useState)(``),[d,f]=(0,Z.useState)(``),[p,m]=(0,Z.useState)(``),[h,g]=(0,Z.useState)(!1),[_,v]=(0,Z.useState)(!1),[y,b]=(0,Z.useState)(null),x=(0,Z.useRef)(!1),S=(0,Z.useRef)(null),C=(0,Z.useRef)(null),w=rr(a,C),T=(0,Z.useCallback)(e=>{i(e),c(e.extract?.model??``),u(e.extract?.reasoningEffort??``),f(e.consolidation?.model??``),m(e.consolidation?.reasoningEffort??``)},[]),E=(0,Z.useCallback)(async()=>{if(S.current)return;let t=A(15e3);S.current=t,v(!1);try{let n=Da(await Tn(await fetch(`${e}/api/settings`,{signal:t.signal})));x.current&&S.current===t&&T(n)}catch{x.current&&S.current===t&&v(!0)}finally{t.clear(),S.current===t&&(S.current=null)}},[e,T]);(0,Z.useEffect)(()=>{x.current=!0;let e=window.setTimeout(()=>{E()},0);return()=>{window.clearTimeout(e),x.current=!1,S.current?.controller.abort(),S.current?.clear(),S.current=null}},[E]);let D=async()=>{if(S.current||r===void 0)return;let t=A(15e3);S.current=t,g(!0),b(null);let n=Oa(s,l),i=Oa(d,p);try{let r=Da(await Tn(await fetch(`${e}/api/settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({memoryModels:n||i?{...n?{extract:n}:{},...i?{consolidation:i}:{}}:null}),signal:t.signal})));x.current&&S.current===t&&(T(r),b(`saved`))}catch{x.current&&S.current===t&&b(`failed`)}finally{t.clear(),x.current&&S.current===t&&g(!1),S.current===t&&(S.current=null)}},k=[{value:``,label:n(`memoryModels.off`)},...[...new Set([...t.map(e=>e.namespaced),...[s,d].filter(Boolean)])].map(e=>({value:e,label:xe(e,n)}))],j=[{value:``,label:n(`memoryModels.defaultEffort`)},...Ea.map(e=>({value:e,label:n(`models.reasoningEffort.${e}`)}))],M=h||r===void 0||_,N=s!==(r?.extract?.model??``)||l!==(r?.extract?.reasoningEffort??``)||d!==(r?.consolidation?.model??``)||p!==(r?.consolidation?.reasoningEffort??``),P=!!s!=!!d,F=n(`memoryModels.info`),I=(e,t,r,i,a)=>(0,Q.jsxs)(`div`,{className:`spread memory-models-row`,style:{flexWrap:`wrap`,gap:8,marginTop:12},children:[(0,Q.jsxs)(`div`,{style:{flex:`1 1 18rem`,minWidth:0},children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:n(`memoryModels.${e}`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:n(`memoryModels.${e}Hint`)})]}),(0,Q.jsxs)(`div`,{className:`memory-models-controls`,children:[(0,Q.jsx)(cn,{id:`memory-models-${e}`,value:t,options:k,disabled:M,label:n(`memoryModels.model`),onChange:e=>{i(e),e||a(``),b(null)}}),(0,Q.jsx)(cn,{id:`memory-models-${e}-effort`,value:r,options:j,disabled:M||!t,align:`right`,label:n(`memoryModels.effort`),onChange:e=>{a(e),b(null)}})]})]});return(0,Q.jsxs)(`section`,{className:`panel`,"aria-labelledby":`memory-models-title`,"aria-busy":h||r===void 0&&!_,children:[(0,Q.jsxs)(`div`,{className:`font-semibold`,id:`memory-models-title`,style:{display:`flex`,alignItems:`center`,gap:6},children:[n(`memoryModels.title`),(0,Q.jsx)(`button`,{ref:C,type:`button`,className:`btn btn-ghost btn-sm`,style:{width:22,height:22,minWidth:22,padding:0,borderRadius:`var(--radius-pill)`,color:`var(--muted)`},onClick:()=>o(e=>!e),"aria-label":n(`memoryModels.infoLabel`),"aria-expanded":a,"aria-haspopup":`dialog`,"aria-controls":`memory-models-help-dialog`,children:(0,Q.jsx)(we,{width:13,height:13,"aria-hidden":`true`})})]}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:n(`memoryModels.description`)}),I(`extract`,s,l,c,u),I(`consolidation`,d,p,f,m),(0,Q.jsxs)(`div`,{className:`spread`,style:{alignItems:`center`,flexWrap:`wrap`,gap:8,marginTop:12},children:[(0,Q.jsx)(`div`,{className:`muted setting-hint`,style:{flex:`1 1 18rem`,minWidth:0},children:n(`memoryModels.dataNotice`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:M||!N,onClick:()=>{D()},children:n(h?`common.saving`:`common.save`)})]}),P&&(0,Q.jsxs)(`div`,{className:`notice-warn`,role:`note`,style:{marginTop:12},children:[(0,Q.jsx)(Ae,{width:14}),` `,n(`memoryModels.accountNotice`)]}),_&&(0,Q.jsxs)(`div`,{className:`notice notice-err`,role:`alert`,style:{marginTop:12,marginBottom:0},children:[n(`memoryModels.loadFailed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{E()},children:n(`common.retry`)})]}),y===`failed`&&(0,Q.jsx)(`div`,{className:`notice notice-err`,role:`alert`,style:{marginTop:12,marginBottom:0},children:n(`memoryModels.saveFailed`)}),y===`saved`&&(0,Q.jsx)(`div`,{className:`muted setting-hint`,role:`status`,children:n(`memoryModels.saved`)}),(0,Q.jsxs)(`dialog`,{ref:w,id:`memory-models-help-dialog`,className:`modal-overlay`,style:{display:a?`flex`:`none`,border:`none`,margin:0,maxWidth:`none`,maxHeight:`none`,width:`100%`,height:`100%`},"aria-labelledby":`memory-models-help-title`,onCancel:e=>{e.preventDefault(),o(!1)},children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":n(`common.close`),tabIndex:-1,onClick:()=>o(!1)}),(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{id:`memory-models-help-title`,children:n(`memoryModels.title`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon`,onClick:()=>o(!1),"aria-label":n(`common.close`),children:(0,Q.jsx)(ve,{})})]}),(0,Q.jsx)(`div`,{className:`modal-desc leading-relaxed`,style:{whiteSpace:`pre-line`},children:F}),(0,Q.jsx)(`div`,{className:`modal-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>o(!1),children:n(`common.ok`)})})]})]})]})}function ja(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`Invalid reasoning settings`);let t=e;if(typeof t.modelSwitch!=`boolean`||typeof t.accountSwitch!=`boolean`)throw Error(`Missing reasoning settings`);return{modelSwitch:t.modelSwitch,accountSwitch:t.accountSwitch}}function Ma({apiBase:e}){return(0,Q.jsx)(Na,{apiBase:e},e)}function Na({apiBase:e}){let t=O(),[n,r]=(0,Z.useState)(),[i,a]=(0,Z.useState)(!1),[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(null),m=(0,Z.useRef)(!1),h=(0,Z.useRef)(null),g=(0,Z.useCallback)(e=>{r(e),a(e.modelSwitch),s(e.accountSwitch)},[]),_=(0,Z.useCallback)(async()=>{if(h.current)return;let t=A(15e3);h.current=t,d(!1);try{let n=ja(await Tn(await fetch(`${e}/api/native-reasoning-retention`,{signal:t.signal})));m.current&&h.current===t&&g(n)}catch{m.current&&h.current===t&&d(!0)}finally{t.clear(),h.current===t&&(h.current=null)}},[e,g]);(0,Z.useEffect)(()=>{m.current=!0;let e=window.setTimeout(()=>{_()},0);return()=>{window.clearTimeout(e),m.current=!1,h.current?.controller.abort(),h.current?.clear(),h.current=null}},[_]);let v=async(t=!1)=>{if(h.current||n===void 0)return;let r=A(15e3);h.current=r,l(!0),p(null);try{let n=ja(await Tn(await fetch(`${e}/api/native-reasoning-retention`,{method:`PUT`,headers:{"Content-Type":`application/json`},signal:r.signal,body:JSON.stringify(t?null:{modelSwitch:i,accountSwitch:o})})));m.current&&h.current===r&&(g(n),p(`saved`))}catch{m.current&&h.current===r&&p(`failed`)}finally{r.clear(),m.current&&h.current===r&&l(!1),h.current===r&&(h.current=null)}},y=c||n===void 0||u,b=i!==n?.modelSwitch||o!==n?.accountSwitch;return(0,Q.jsxs)(`section`,{className:`panel`,"aria-labelledby":`native-reasoning-retention-title`,"aria-busy":c||n===void 0&&!u,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,id:`native-reasoning-retention-title`,children:t(`nativeReasoningRetention.title`)}),(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:t(`nativeReasoningRetention.description`)}),(0,Q.jsxs)(`div`,{className:`stack`,style:{gap:`var(--space-3)`},children:[(0,Q.jsxs)(`div`,{className:`spread`,children:[(0,Q.jsx)(`span`,{children:t(`nativeReasoningRetention.modelSwitch`)}),(0,Q.jsx)(on,{on:i,disabled:y,label:t(`nativeReasoningRetention.modelSwitch`),onClick:()=>{a(e=>!e),p(null)}})]}),(0,Q.jsxs)(`div`,{className:`spread`,children:[(0,Q.jsx)(`span`,{children:t(`nativeReasoningRetention.accountSwitch`)}),(0,Q.jsx)(on,{on:o,disabled:y,label:t(`nativeReasoningRetention.accountSwitch`),onClick:()=>{s(e=>!e),p(null)}})]}),(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:t(`nativeReasoningRetention.accountHint`)}),(0,Q.jsxs)(`div`,{className:`row`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:y||!b,onClick:()=>{v()},children:t(`common.save`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:y||!b&&!n?.modelSwitch&&!n?.accountSwitch,onClick:()=>{v(!0)},children:t(`nativeReasoningRetention.reset`)})]})]}),u&&(0,Q.jsxs)(`div`,{className:`notice notice-err`,role:`alert`,children:[t(`nativeReasoningRetention.loadFailed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{_()},children:t(`common.retry`)})]}),f===`failed`&&(0,Q.jsx)(`div`,{className:`notice notice-err`,role:`alert`,children:t(`nativeReasoningRetention.saveFailed`)}),f===`saved`&&(0,Q.jsx)(`div`,{className:`muted setting-hint`,role:`status`,children:t(`nativeReasoningRetention.saved`)})]})}function Pa({apiBase:e,d:t}){let{t:n,maMode:r,maModeResolved:i,effortCapHelpTriggerRef:a,effortCapHelpOpen:o,setEffortCapHelpOpen:s,effortCap:c,subagentEffortCap:l,effortCapSaving:u,setEffortCap:d,setSubagentEffortCap:f,setEffortCapSaving:p}=t;return!i||r===`v1`?null:(0,Q.jsx)(`div`,{className:`panel dash-effort-panel`,children:(0,Q.jsxs)(`div`,{className:`injection-head`,children:[(0,Q.jsxs)(`span`,{className:`injection-label`,style:{display:`inline-flex`,alignItems:`center`,gap:6},children:[n(`dash.effortCapLabel`),(0,Q.jsx)(`button`,{ref:a,type:`button`,className:`btn btn-ghost btn-sm`,style:{width:22,height:22,minWidth:22,padding:0,borderRadius:`var(--radius-pill)`,color:`var(--muted)`},onClick:()=>s(e=>!e),"aria-label":n(`dash.effortCapLabel`),"aria-expanded":o,"aria-haspopup":`dialog`,"aria-controls":`effort-cap-help-dialog`,children:(0,Q.jsx)(we,{width:13,height:13,"aria-hidden":`true`})})]}),(0,Q.jsxs)(`div`,{className:`dash-effort-controls`,children:[(0,Q.jsx)(cn,{value:c,options:[{value:``,label:n(`dash.effortCapNone`)},...En.map(e=>({value:e,label:e}))],onChange:async t=>{if(!u){p(!0);try{let n=await Tn(await fetch(`${e}/api/effort-caps`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({effortCap:t||null})}));d(n.effortCap??``),f(n.subagentEffortCap??``)}catch{}finally{p(!1)}}},disabled:u,label:n(`dash.effortCapLabel`),align:`right`}),(0,Q.jsx)(cn,{value:l,options:[{value:``,label:n(`dash.effortCapNone`)},...En.map(e=>({value:e,label:e}))],onChange:async t=>{if(!u){p(!0);try{let n=await Tn(await fetch(`${e}/api/effort-caps`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({subagentEffortCap:t||null})}));d(n.effortCap??``),f(n.subagentEffortCap??``)}catch{}finally{p(!1)}}},disabled:u,label:n(`dash.subagentEffortCapLabel`),align:`right`})]})]})})}function Fa({d:e}){let{t,injectionModel:n,injectionEffort:r,injectionEfforts:i,injectionAvailable:a,injectionSaving:o,saveInjection:s}=e;return(0,Q.jsxs)(`div`,{className:`panel dash-delegation-summary`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:t(`dash.injectionLabel`)}),(0,Q.jsxs)(`div`,{className:`dash-delegation-controls`,children:[(0,Q.jsx)(cn,{value:n,options:[{value:``,label:t(`dash.injectionNone`)},...a.map(e=>({value:e.namespaced,label:xe(`${e.provider}/${e.model}`,t)}))],onChange:e=>{s({model:e||null,effort:r||null})},disabled:o,label:t(`dash.injectionLabel`),align:`right`}),n&&i.length>0&&(0,Q.jsx)(cn,{value:r,options:[{value:``,label:t(`dash.injectionEffortNone`)},...i.map(e=>({value:e,label:e}))],onChange:e=>{s({model:n||null,effort:e||null})},disabled:o,label:t(`dash.injectionEffortLabel`),align:`right`}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>qt(`#subagents`),children:t(`dash.injectionManage`)})]})]})}function Ia({d:e}){let{t,runSync:n,syncing:r,settingsSaving:i,updateTriggerRef:a,openUpdateDialog:o,updateLoading:s,updateOpen:c,syncResult:l,syncError:u,updateJob:d,reconnecting:f,clearSyncFeedback:p}=e,m=!!l&&(!!l.warning||!!l.nativeSubagentDefaultsWarning||!!l.staleAppServerHint),[h,g]=(0,Z.useState)(!1),_=(0,Z.useRef)(null);(0,Z.useEffect)(()=>(_.current&&=(clearTimeout(_.current),null),(l||u)&&!m&&(_.current=setTimeout(()=>{_.current=null,g(!0),p()},u?8e3:6e3)),()=>{_.current&&clearTimeout(_.current)}),[l,u,m,p]);let v=()=>{g(!1),n()},y=()=>{g(!0),p()};return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`panel maintenance-panel`,children:[(0,Q.jsxs)(`div`,{className:`dash-sync-summary`,children:[(0,Q.jsxs)(`div`,{className:`dash-sync-copy`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:t(`dash.syncModels`)}),(0,Q.jsx)(`div`,{className:`muted text-control dash-sync-hint`,children:t(`dash.syncModelsHint`)})]}),(0,Q.jsxs)(`div`,{className:`maintenance-actions`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:v,disabled:r||i,children:[(0,Q.jsx)(re,{className:r?`spin-icon`:void 0}),` `,t(r?`dash.syncing`:`dash.syncRun`)]}),(0,Q.jsx)(`button`,{ref:a,type:`button`,className:`maintenance-update-anchor`,onClick:o,disabled:s,"aria-haspopup":`dialog`,"aria-controls":`dashboard-update-dialog`,"aria-expanded":c,"aria-label":t(`dash.checkUpdate`),tabIndex:-1})]})]}),d&&(0,Q.jsxs)(`div`,{className:`notice ${d.status===`failed`?`notice-err`:`notice-ok`} maintenance-notice`,role:`status`,children:[d.status===`failed`?(0,Q.jsx)(Ae,{}):(0,Q.jsx)(re,{}),(0,Q.jsxs)(`span`,{children:[kn(d.status,t),d.latestVersion?` ${t(`dash.updateVersionTransition`,{currentVersion:d.currentVersion,latestVersion:d.latestVersion})}`:``,f?` ${t(`dash.updateReconnecting`)}`:``,d.error?` ${d.error}`:``]})]})]}),!h&&l&&(0,Q.jsxs)(`div`,{className:`action-toast notice ${m?`notice-warn`:`notice-ok`}`,role:`status`,"aria-live":`polite`,children:[m?(0,Q.jsx)(Ae,{}):(0,Q.jsx)(Te,{}),(0,Q.jsxs)(`span`,{children:[t(`dash.syncOk`,{count:l.added}),l.warning?` ${l.warning}`:``,l.nativeSubagentDefaultsWarning?` ${l.nativeSubagentDefaultsWarning}`:``,l.staleAppServerHint?(0,Q.jsxs)(Q.Fragment,{children:[` `,(0,Q.jsx)(T,{k:`dash.syncStaleHint`,cmd:`ocx sync --restart-codex`})]}):null]}),(0,Q.jsx)(`button`,{type:`button`,className:`action-toast-dismiss`,onClick:y,"aria-label":t(`api.dismiss`),children:(0,Q.jsx)(ve,{width:13,height:13,"aria-hidden":`true`})})]}),!h&&u&&(0,Q.jsxs)(`div`,{className:`action-toast notice notice-err`,role:`status`,"aria-live":`polite`,children:[(0,Q.jsx)(Ae,{}),(0,Q.jsx)(`span`,{children:t(`dash.syncFailed`,{error:u})}),(0,Q.jsx)(`button`,{type:`button`,className:`action-toast-dismiss`,onClick:y,"aria-label":t(`api.dismiss`),children:(0,Q.jsx)(ve,{width:13,height:13,"aria-hidden":`true`})})]})]})}function La({t:e,open:t,triggerRef:n,onClose:r,maxValue:i,maxInvalid:a,timeoutValue:o,timeoutInvalid:s,disabled:c,setMaxDraft:l,setMaxInvalid:u,setTimeoutDraft:d,setTimeoutInvalid:f,commitMaxDescriptions:p,commitTimeout:m}){let h=(0,Z.useRef)(null),g=(0,Z.useRef)(null),[_,v]=(0,Z.useState)(),y=(0,Z.useCallback)(()=>{n.current&&v(an(n.current.getBoundingClientRect(),{align:`right`,placement:`below`,menuHeight:h.current?.offsetHeight??180}))},[n]);return(0,Z.useLayoutEffect)(()=>{if(!t)return;y();let e=()=>y();return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[t,y,a,s]),(0,Z.useEffect)(()=>{if(!t)return;let e=e=>{let t=e.target;if(h.current?.contains(t)||n.current?.contains(t))return;let i=document.activeElement;i&&h.current?.contains(i)&&i.blur(),r()};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[t,r,n]),(0,Z.useEffect)(()=>{if(!t)return;let e=e=>{e.key===`Escape`&&(e.preventDefault(),r(),n.current?.focus())};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[t,r,n]),(0,Z.useEffect)(()=>{t&&g.current?.focus()},[t]),t?(0,Q.jsxs)(`div`,{ref:h,id:`dash-vision-advanced-popover`,className:`dash-vision-advanced-popover`,role:`dialog`,"aria-modal":`false`,"aria-label":e(`dash.visionAdvancedPopover`),style:{..._,zIndex:60},children:[(0,Q.jsx)(`div`,{className:`dash-vision-advanced-popover-title`,children:e(`dash.visionAdvancedPopover`)}),(0,Q.jsxs)(`label`,{className:`dash-vision-number`,children:[(0,Q.jsx)(`span`,{className:`muted setting-hint`,id:`dash-vision-max-label`,children:e(`dash.visionMaxDescriptions`)}),(0,Q.jsx)(`span`,{className:`codex-auto-switch-input-wrap`,children:(0,Q.jsx)(`input`,{ref:g,className:`input mono codex-auto-switch-input`,type:`number`,min:1,step:1,inputMode:`numeric`,value:i,disabled:c,"aria-invalid":a||void 0,"aria-label":e(`dash.visionMaxDescriptions`),"aria-describedby":a?`dash-vision-max-error dash-vision-max-label`:`dash-vision-max-label`,onChange:e=>{u(!1),l(e.target.value)},onBlur:e=>p(e.currentTarget.value),onKeyDown:e=>{e.nativeEvent.isComposing||c||(e.key===`Enter`?(e.preventDefault(),p(e.currentTarget.value)):e.key===`Escape`&&(e.preventDefault(),l(null),u(!1)))}})}),a&&(0,Q.jsx)(`span`,{id:`dash-vision-max-error`,className:`muted setting-hint`,role:`alert`,children:e(`dash.visionMaxDescriptionsInvalid`)})]}),(0,Q.jsxs)(`label`,{className:`dash-vision-number`,children:[(0,Q.jsx)(`span`,{className:`muted setting-hint`,id:`dash-vision-timeout-label`,children:e(`dash.visionTimeout`)}),(0,Q.jsxs)(`span`,{className:`codex-auto-switch-input-wrap`,children:[(0,Q.jsx)(`input`,{className:`input mono codex-auto-switch-input`,type:`number`,min:Bn,max:zn,step:1e3,inputMode:`numeric`,value:o,disabled:c,"aria-invalid":s||void 0,"aria-label":e(`dash.visionTimeout`),"aria-describedby":s?`dash-vision-timeout-error dash-vision-timeout-label`:`dash-vision-timeout-label`,onChange:e=>{f(!1),d(e.target.value)},onBlur:e=>m(e.currentTarget.value),onKeyDown:e=>{e.nativeEvent.isComposing||c||(e.key===`Enter`?(e.preventDefault(),m(e.currentTarget.value)):e.key===`Escape`&&(e.preventDefault(),d(null),f(!1)))}}),(0,Q.jsx)(`span`,{className:`codex-auto-switch-unit`,"aria-hidden":`true`,children:`ms`})]}),s&&(0,Q.jsx)(`span`,{id:`dash-vision-timeout-error`,className:`muted setting-hint`,role:`alert`,children:e(`dash.visionTimeoutInvalid`,{min:Bn,max:zn})})]})]}):null}function Ra({d:e}){let{t,settings:n,settingsSaving:r,syncing:i,toggleCodexAutoStart:a,toggleCodexDesktopAuthless:o,toggleCodexClientCompaction:s,sidecar:c,sidecarSaving:l,sidecarModels:u,visionModels:d,models:f,saveSidecar:p,sidecarCodexApply:m,shadowCall:h,shadowCallSaving:g,shadowCallHelpTriggerRef:_,shadowCallHelpOpen:v,setShadowCallHelpOpen:y,saveShadowCall:b}=e,x=c?.vision?.enabled!==!1,S=x?c?.vision?.model??`gpt-5.6-luna`:``,C=c?.vision.backend??d.find(e=>e.value===c?.vision.model)?.backend,w=c?.webSearch.backend??u.find(e=>e.value===c?.webSearch.model)?.backend,T=c?.webSearch?.enabled!==!1,E=T?c?.webSearch?.model??`gpt-5.6-luna`:``,D=c?.vision?.reasoning??`low`,O=Wn(f,S),k=Kn(O,D),A=String(c?.vision?.maxDescriptionsPerTurn??8),j=String(c?.vision?.timeoutMs??Rn),[M,N]=(0,Z.useState)(null),[P,F]=(0,Z.useState)(null),[I,L]=(0,Z.useState)(!1),[R,z]=(0,Z.useState)(!1),[B,V]=(0,Z.useState)(!1),H=(0,Z.useRef)(null),U=M??A,W=P??j,G=(e=U)=>{let t=Vn(e);if(t===void 0){N(e),L(!0);return}L(!1),N(null),t!==(c?.vision?.maxDescriptionsPerTurn??8)&&p(In(t))},ee=(e=W)=>{let t=Hn(e);if(t===void 0){F(e),z(!0);return}z(!1),F(null),t!==(c?.vision?.timeoutMs??Rn)&&p(Ln(t))};return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`panel`,children:(0,Q.jsxs)(`div`,{className:`spread`,children:[(0,Q.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:t(`dash.codexAutoStart`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:t(`dash.codexAutoStartHint`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`switch ${n?.codexAutoStart??!0?`on`:``}`,onClick:a,disabled:!n||r||i,"aria-label":t(`dash.codexAutoStart`),"aria-pressed":n?.codexAutoStart??!0,children:(0,Q.jsx)(`span`,{className:`knob`})})]})}),(0,Q.jsx)(`div`,{className:`panel`,children:(0,Q.jsxs)(`div`,{className:`spread`,children:[(0,Q.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:t(`dash.codexDesktopAuthless`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:t(`dash.codexDesktopAuthlessHint`)}),n?.codexDesktopAuthless&&(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:t(`dash.codexRemoteHistoryHint`)}),n?.catalogRefreshPending&&(0,Q.jsx)(`div`,{className:`muted setting-hint`,role:`status`,children:t(`codexAuth.catalogRefreshPending`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`switch ${n?.codexDesktopAuthless??!1?`on`:``}`,onClick:o,disabled:!n||r||i,"aria-label":t(`dash.codexDesktopAuthless`),"aria-pressed":n?.codexDesktopAuthless??!1,children:(0,Q.jsx)(`span`,{className:`knob`})})]})}),(0,Q.jsx)(`div`,{className:`panel`,children:(0,Q.jsxs)(`div`,{className:`spread`,children:[(0,Q.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:t(`dash.codexClientCompaction`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:t(`dash.codexClientCompactionHint`)}),!n?.codexDesktopAuthless&&n?.codexClientCompaction&&(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:t(`dash.codexRemoteHistoryHint`)}),n?.catalogRefreshPending&&(0,Q.jsx)(`div`,{className:`muted setting-hint`,role:`status`,children:t(`codexAuth.catalogRefreshPending`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`switch ${n?.codexClientCompaction??!1?`on`:``}`,onClick:s,disabled:!n||r||i,"aria-label":t(`dash.codexClientCompaction`),"aria-pressed":n?.codexClientCompaction??!1,children:(0,Q.jsx)(`span`,{className:`knob`})})]})}),(0,Q.jsxs)(`div`,{className:`dash-sidecar-grid`,children:[(0,Q.jsxs)(`div`,{className:`panel dash-delegation-summary dash-sidecar-row-card`,"aria-busy":!c||void 0,children:[(0,Q.jsxs)(`div`,{className:`dash-sidecar-copy`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:t(`dash.webSearchSidecar`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:t(`dash.webSearchSidecarHint`)}),Pn(m)&&(0,Q.jsxs)(`div`,{className:`notice-warn`,role:`status`,children:[(0,Q.jsx)(Ae,{}),(0,Q.jsx)(`span`,{children:t(`dash.webSearchCodexSync`)})]})]}),(0,Q.jsxs)(`div`,{className:`dash-delegation-controls`,children:[(0,Q.jsx)(`div`,{className:`dash-sidecar-select-row`,children:(0,Q.jsx)(cn,{value:E,options:[{value:``,label:t(`dash.webSearchOff`)},...u],onChange:e=>{if(e===``){p(Nn(!1));return}let t={webSearch:$n(f,u,e)};T||(t.webSearch={...t.webSearch,enabled:!0}),p(t)},disabled:!c||l,label:t(`dash.sidecarModel`),align:`right`})}),c&&w===`anthropic`&&(0,Q.jsxs)(`div`,{className:`dash-sidecar-trailing-row`,children:[(0,Q.jsx)(cn,{value:c.webSearch.anthropicInstance??``,label:t(`sidecar.pool`),options:[{value:``,label:t(`sidecar.poolCurrent`)},{value:`anthropic`,label:t(`sidecar.poolA`)},{value:`anthropic2`,label:t(`sidecar.poolB`)}],disabled:l,align:`right`,onChange:e=>{p({webSearch:{anthropicInstance:e===`anthropic`||e===`anthropic2`?e:null}})}}),c.webSearch.anthropicPool?.mixed&&(0,Q.jsx)(`span`,{className:`muted setting-hint`,children:t(`sidecar.poolMixed`)})]}),(0,Q.jsxs)(`div`,{className:`dash-sidecar-trailing-row`,title:t(`dash.webSearchStreamHint`),children:[(0,Q.jsx)(`span`,{className:`muted setting-hint dash-sidecar-toggle-label`,children:t(`dash.webSearchStream`)}),(0,Q.jsx)(`button`,{type:`button`,className:`switch ${c?.webSearch?.streamRoutedModelOutput?`on`:``}`,onClick:()=>{p({webSearch:{streamRoutedModelOutput:!c?.webSearch?.streamRoutedModelOutput}})},disabled:!T||!c||l,"aria-label":t(`dash.webSearchStream`),"aria-pressed":c?.webSearch?.streamRoutedModelOutput===!0,children:(0,Q.jsx)(`span`,{className:`knob`})})]})]})]}),(0,Q.jsxs)(`div`,{className:`panel dash-delegation-summary dash-sidecar-row-card dash-vision-sidecar-card`,"aria-busy":!c||void 0,children:[(0,Q.jsxs)(`div`,{className:`dash-sidecar-copy`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:t(`dash.visionSidecar`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:t(`dash.visionSidecarHint`)})]}),(0,Q.jsxs)(`div`,{className:`dash-delegation-controls`,children:[(0,Q.jsxs)(`div`,{className:`dash-sidecar-select-row`,children:[(0,Q.jsx)(cn,{value:S,options:[{value:``,label:t(`dash.visionOff`)},...d],onChange:e=>{if(e===``){p(Mn(!1));return}let t=Kn(Wn(f,e),k),n={vision:{model:e,backend:er(f,d,e),reasoning:t}};x||(n.vision={...n.vision,enabled:!0}),p(n)},disabled:!c||l,label:t(`dash.sidecarModel`)}),(0,Q.jsx)(cn,{value:k,options:Gn(O,k).map(e=>({value:e,label:e})),onChange:e=>{p(jn(e))},disabled:!x||!c||l,align:`right`,label:`${t(`dash.visionSidecar`)} — ${t(`dash.injectionEffortLabel`)}`})]}),c&&C===`anthropic`&&(0,Q.jsxs)(`div`,{className:`dash-sidecar-trailing-row`,children:[(0,Q.jsx)(cn,{value:c.vision.anthropicInstance??``,label:t(`sidecar.pool`),options:[{value:``,label:t(`sidecar.poolCurrent`)},{value:`anthropic`,label:t(`sidecar.poolA`)},{value:`anthropic2`,label:t(`sidecar.poolB`)}],disabled:l,align:`right`,onChange:e=>{p({vision:{anthropicInstance:e===`anthropic`||e===`anthropic2`?e:null}})}}),c.vision.anthropicPool?.mixed&&(0,Q.jsx)(`span`,{className:`muted setting-hint`,children:t(`sidecar.poolMixed`)})]}),(0,Q.jsx)(`div`,{className:`dash-sidecar-trailing-row`,children:(0,Q.jsxs)(`button`,{type:`button`,ref:H,className:`dash-vision-advanced-trigger`,onClick:()=>V(e=>!e),disabled:!x||!c||l,"aria-expanded":B,"aria-haspopup":`dialog`,"aria-controls":`dash-vision-advanced-popover`,children:[(0,Q.jsx)(`span`,{children:t(`dash.visionAdvanced`)}),(0,Q.jsx)(Ke,{width:12,height:12,"aria-hidden":`true`,style:{transform:B?`rotate(90deg)`:`none`,transition:`transform .12s`}})]})})]}),(0,Jt.createPortal)((0,Q.jsx)(La,{t,open:B,triggerRef:H,onClose:()=>V(!1),maxValue:U,maxInvalid:I,timeoutValue:W,timeoutInvalid:R,disabled:!x||!c||l,setMaxDraft:N,setMaxInvalid:L,setTimeoutDraft:F,setTimeoutInvalid:z,commitMaxDescriptions:G,commitTimeout:ee}),document.body)]})]}),(0,Q.jsx)(`div`,{className:`panel`,"aria-busy":!h||void 0,children:(0,Q.jsxs)(`div`,{className:`spread`,style:{alignItems:`center`},children:[(0,Q.jsxs)(`div`,{className:`dash-shadow-label`,style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,Q.jsx)(`span`,{className:`font-semibold`,children:t(`dash.shadowCallIntercept`)}),(0,Q.jsx)(`button`,{ref:_,type:`button`,className:`btn btn-ghost btn-sm`,style:{width:22,height:22,minWidth:22,padding:0,borderRadius:`var(--radius-pill)`,color:`var(--muted)`},onClick:()=>y(e=>!e),"aria-label":t(`dash.shadowCallIntercept`),"aria-expanded":v,"aria-haspopup":`dialog`,"aria-controls":`shadow-call-help-dialog`,children:(0,Q.jsx)(we,{width:13,height:13,"aria-hidden":`true`})}),(0,Q.jsx)(`code`,{className:`muted text-caption`,children:`⚠ ${bn(h?.sourceModels)}`})]}),(0,Q.jsxs)(`div`,{className:`setting-controls dash-shadow-controls`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`switch ${h?.enabled?`on`:``}`,onClick:()=>b({enabled:!h?.enabled}),disabled:!h||g,"aria-label":t(`dash.shadowCallIntercept`),"aria-pressed":h?.enabled??!1,children:(0,Q.jsx)(`span`,{className:`knob`})}),(0,Q.jsx)(cn,{value:h?.model??``,options:Xn(f,h?.model,h?.sourceModels).map(e=>e.value===``?e:{...e,label:xe(e.value,t)}),onChange:e=>{b({model:e})},disabled:!h||g||!h?.enabled,label:t(`dash.shadowCallModel`),align:`right`})]})]})})]})}function za(e){return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Pa,{apiBase:e.apiBase,d:e}),(0,Q.jsxs)(`div`,{className:`dash-overview-tools`,children:[(0,Q.jsx)(Fa,{apiBase:e.apiBase,d:e}),(0,Q.jsx)(Ia,{d:e})]}),(0,Q.jsx)(Ra,{d:e}),(0,Q.jsx)(Xi,{apiBase:e.apiBase,models:e.models,providers:e.providers}),(0,Q.jsx)(Ma,{apiBase:e.apiBase}),(0,Q.jsx)(ka,{apiBase:e.apiBase,models:e.models}),(0,Q.jsx)(Ta,{apiBase:e.apiBase}),(0,Q.jsx)($i,{apiBase:e.apiBase})]})}function Ba(e){return(0,Q.jsxs)(`div`,{className:`dash-overview-stack`,children:[(0,Q.jsx)(_r,{...e}),(0,Q.jsx)(za,{...e})]})}function Va({t:e,providers:t}){return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`h-section`,children:[e(`dash.activeProviders`),` `,(0,Q.jsx)(`span`,{className:`count`,children:t.length})]}),t.length===0?(0,Q.jsx)(ln,{title:(0,Q.jsx)(T,{k:`dash.noProviders`,cmd:`ocx init`})}):(0,Q.jsx)(`div`,{className:`tbl-wrap`,children:(0,Q.jsxs)(`table`,{className:`tbl`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:e(`dash.col.name`)}),(0,Q.jsx)(`th`,{children:e(`dash.col.adapter`)}),(0,Q.jsx)(`th`,{children:e(`dash.col.baseUrl`)}),(0,Q.jsx)(`th`,{children:e(`dash.col.model`)})]})}),(0,Q.jsx)(`tbody`,{children:t.map(t=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{className:`font-semibold`,children:be(t.name,e)}),(0,Q.jsx)(`td`,{children:(0,Q.jsx)(`span`,{className:`chip`,children:t.adapter})}),(0,Q.jsx)(`td`,{className:`muted mono text-label`,children:t.baseUrl}),(0,Q.jsx)(`td`,{className:`muted`,children:t.defaultModel??`—`})]},t.name))})]})})]})}var Ha=`__ocxCachedAt`;function Ua(e){try{let t=sessionStorage.getItem(e);if(!t)return null;let n=JSON.parse(t);return Wa(n)?n.data:n}catch{return null}}function Wa(e){return typeof e==`object`&&!!e&&typeof e[Ha]==`number`&&`data`in e}function Ga(e){try{let t=sessionStorage.getItem(e);if(!t)return null;let n=JSON.parse(t);return Wa(n)?{data:n.data,cachedAt:n[Ha]}:{data:n,cachedAt:null}}catch{return null}}function Ka(e,t){try{sessionStorage.setItem(e,JSON.stringify({[Ha]:Date.now(),data:t}))}catch{}}function qa(e,t){try{sessionStorage.setItem(e,JSON.stringify(t))}catch{}}function Ja(e,t,n){if(!n)return{kind:`disabled`,data:void 0,error:void 0,showSkeleton:!1,refreshing:!1,showError:!1};let r=e.data!==void 0,i=!e.lastAttemptOk&&e.error!==void 0;return e.refreshing?r?{kind:`loading-with-stale-data`,data:e.data,error:e.error,showSkeleton:!1,refreshing:!0,showError:i}:{kind:i?`retrying-cold`:`cold`,data:void 0,error:i?e.error:void 0,showSkeleton:!0,refreshing:!0,showError:!1}:i?r?{kind:`failed-with-stale`,data:e.data,error:e.error,showSkeleton:!1,refreshing:!1,showError:!0}:{kind:`failed-cold`,data:void 0,error:e.error,showSkeleton:!1,refreshing:!1,showError:!0}:r?{kind:t(e.data)?`ready-empty`:`ready-populated`,data:e.data,error:void 0,showSkeleton:!1,refreshing:!1,showError:!1}:{kind:`cold`,data:void 0,error:void 0,showSkeleton:!0,refreshing:!1,showError:!1}}function Ya(e,t,n,r){let{isEmpty:i,sessionCacheKey:a,...o}=r,s=(0,Z.useMemo)(()=>a?Ga(a):null,[a]),c=Vt(e,t,(0,Z.useCallback)(async e=>{let t=await n(e);return a&&Ka(a,t),t},[n,a]),{...o,...a?{initialData:o.initialData??s?.data,initialDataCachedAt:o.initialDataCachedAt??s?.cachedAt??null}:{}});return{...c,state:Ja(c,i,r.enabled!==!1)}}function Xa(){return typeof navigator>`u`?``:navigator.userAgent}function Za(e=Xa()){return e.match(/OpenCodexDesktop\/(\S+)/)?.[1]??null}function Qa(e=Xa()){return Za(e)!==null}var $a=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;function eo(e=typeof location>`u`?``:location.search){let t=new URLSearchParams(e).get(`desktop_session`);return t&&$a.test(t)?t:null}function to(e,t,n){let r=e+`/api/update/badge`;if(!Qa(t))return r;let i=eo(n);return r+`?surface=desktop`+(i?`&session=`+encodeURIComponent(i):``)}function no(e=Xa()){return/Windows/i.test(e)?`windows`:/Mac OS X|Macintosh/i.test(e)?`macos`:/Linux|X11/i.test(e)&&!/Android/i.test(e)?`linux`:`unknown`}function ro(e=Xa()){if(!Qa(e))return null;let t=no(e);return t===`windows`?`http://tauri.localhost/update.html`:t===`macos`||t===`linux`?`tauri://localhost/update.html`:null}function io(e=Xa()){let t=ro(e);return t?(window.location.assign(t),!0):!1}function ao(e=Xa()){if(!Qa(e))return null;let t=no(e);return t===`windows`?`http://tauri.localhost/cli.html`:t===`macos`||t===`linux`?`tauri://localhost/cli.html`:null}function oo(e=Xa()){let t=ao(e);return t?(window.location.assign(t),!0):!1}function so(e,t=typeof location>`u`?``:location.origin){if(!/^https?:\/\//i.test(e))return!1;try{return new URL(e).origin!==t}catch{return!1}}function co(e){return e.desktop!==void 0&&(e.desktop.owned||e.desktop.supervisor!==void 0)}function lo(e,t){return t?`startup.unhealthy`:e.viable?`startup.viable`:e.running&&!e.loginEnabled&&(e.owned||e.supervisor!==void 0)?`startup.desktopLoginUnverified`:`startup.unhealthy`}function uo(e){if(e.routingKind===`custom-local`)return`startup.riskDetailCustomLocal`;if(e.routingKind===`opencodex-local`){if(e.diagnosticStale&&e.desktop)return`startup.desktopReopenRecovery`;if(e.desktop?.owned)return`startup.desktopRecovery`;if(e.desktop?.supervisor)return`startup.desktopSupervisedRecovery`}return e.shimCoverage===`cli-only`?`startup.riskDetailWindowsShim`:`startup.riskDetail`}function fo(e,t){return!t.mutationInFlight&&e.request===t.request&&e.mutation===t.mutation}function po(e,t){return{request:++e.current,mutation:t.current}}var mo=2e3;function ho(e){let t=e.status;return t!==`native`&&t!==`protected`&&t!==`at-risk`?null:t}function go(e){return e?e.stale&&e.status!==`error`:!1}function _o(e,t){return!t||t.diagnosticStale||e!==null&&e!==`error`?e:t.status}var vo=3e4;function yo(e){return{multiAgentGuidanceEnabled:e.multiAgentGuidanceEnabled!==!1,syncCodexSubagentDefaults:e.syncCodexSubagentDefaults===!0,injectionModel:e.model??``,injectionEffort:e.effort??``}}function bo(e,t){return t.aborted?!0:e instanceof Error&&e.name===`AbortError`}async function xo(e,t){try{let n=await fetch(`${e}/api/startup-health`,{signal:t});if(!n.ok)throw Error(`startup health unavailable`);let r=await n.json(),i=ho(r);if(!i)throw Error(`invalid startup health response`);return{status:i,stale:r.diagnosticStale===!0}}catch(e){if(bo(e,t))throw e;return{status:`error`,stale:!1}}}async function So(e,t){try{return(await gn(await fetch(`${e}/api/diagnostics/project-config`,{signal:t})))?.grouped??[]}catch{return[]}}async function Co(e,t){return Tn(await fetch(`${e}/api/models`,{signal:t}))}async function wo(e,t){return mr(await fetch(`${e}/api/usage?range=30d`,{signal:t}))}async function To(e,t,n){let{request:r,mutation:i}=po(n.shadowCallRequestEpochRef,n.shadowCallMutationEpochRef),[a,o]=await Promise.all([fetch(`${e}/api/sidecar-settings`,{signal:t}),fetch(`${e}/api/shadow-call-settings`,{signal:t})]),s=await Tn(a),c;try{if(o.ok){let e=await o.json();fo({request:r,mutation:i},{request:n.shadowCallRequestEpochRef.current,mutation:n.shadowCallMutationEpochRef.current,mutationInFlight:n.shadowCallMutationInFlightRef.current})&&(c=e)}else fo({request:r,mutation:i},{request:n.shadowCallRequestEpochRef.current,mutation:n.shadowCallMutationEpochRef.current,mutationInFlight:n.shadowCallMutationInFlightRef.current})&&(c=null)}catch{fo({request:r,mutation:i},{request:n.shadowCallRequestEpochRef.current,mutation:n.shadowCallMutationEpochRef.current,mutationInFlight:n.shadowCallMutationInFlightRef.current})&&(c=null)}return{sidecar:s,shadowCall:c}}async function Eo(e,t,n){let{request:r,mutation:i}=po(n.settingsRequestEpochRef,n.settingsMutationEpochRef),a=await Tn(await fetch(`${e}/api/settings`,{signal:t})),o,s;return fo({request:r,mutation:i},{request:n.settingsRequestEpochRef.current,mutation:n.settingsMutationEpochRef.current,mutationInFlight:n.settingsMutationInFlightRef.current})&&(o=a,s=a.startupHealth),{settings:o,startupHealthSeed:s}}async function Do(e,t){try{let n=await fetch(`${e}/api/v2`,{signal:t});if(!n.ok)return{maMode:`default`};let r=await n.json(),i=ar(r.multiAgentSurfaceAdvisory);return r.multiAgentMode===`v1`||r.multiAgentMode===`v2`?{maMode:r.multiAgentMode,advisory:i}:{maMode:`default`,advisory:i}}catch(e){if(bo(e,t))throw e;return{maMode:`default`}}}async function Oo(e,t){let n=e=>({health:null,providers:[],error:!0,failure:e}),r=new AbortController,i=AbortSignal.any([t,r.signal]),a,o,s=new Promise(e=>{o=()=>e(`access`)}),c=e=>((e.status===401||e.status===403)&&((e.status===403||a===void 0)&&(a=e.status===403?`denied`:`auth`),o()),e);try{let r=[`/api/system/health`,`/api/providers`].map(t=>Promise.resolve().then(()=>fetch(`${e}${t}`,{signal:i})).then(c)),o=await Promise.race([Promise.allSettled(r),s]);if(t.throwIfAborted(),o===`access`)return n(a??`auth`);let[l,u]=o;if(l.status===`rejected`||u.status===`rejected`)return n(`unavailable`);let d=l.value,f=u.value;if(!d.ok||!f.ok)return n(`request`);try{let e=await Tn(d),t=await Tn(f);return!e||typeof e.status!=`string`||typeof e.version!=`string`||!Number.isFinite(e.uptime)||e.uptime<0||!Array.isArray(t)||t.some(e=>!e||typeof e.name!=`string`||typeof e.adapter!=`string`||typeof e.baseUrl!=`string`||typeof e.hasApiKey!=`boolean`||e.defaultModel!==void 0&&typeof e.defaultModel!=`string`)?n(`invalid`):{health:e,providers:t,error:!1}}catch(e){if(bo(e,t))throw e;return n(`invalid`)}}finally{r.abort()}}async function ko(e,t){let[n,r]=await Promise.all([fetch(`${e}/api/injection-model`,{signal:t}).catch(()=>null),fetch(`${e}/api/effort-caps`,{signal:t}).catch(()=>null)]),i;try{if(n?.ok){let e=await n.json();i={...yo(e),injectionEfforts:e.efforts??[],injectionAvailable:e.available??[]}}}catch{}let a;try{if(r?.ok){let e=await r.json();a={effortCap:e.effortCap??``,subagentEffortCap:e.subagentEffortCap??``}}}catch{}return{injection:i,effortCaps:a}}var Ao=`ocx.dash.controls.v1:`,jo=`ocx.dash.overview.v1:`,Mo=`ocx.dash.usage30d.v1:`,No=`ocx.dash.startup.v1:`,Po=`ocx.dash.maMode.v1:`;function Fo(e,t){switch(t.type){case`polled`:return e.beforeSave?e:{...e,settings:{...t.settings,catalogRefreshPending:e.settings?.catalogRefreshPending===!0||t.settings.catalogRefreshPending}};case`save-started`:return!e.settings||e.beforeSave?e:{beforeSave:e.settings,settings:{...e.settings,[t.key]:t.value}};case`save-succeeded`:return!e.settings||!e.beforeSave?e:{...e,settings:{...e.settings,[t.key]:t.settings[t.key],catalogRefreshPending:t.key===`codexDesktopAuthless`||t.key===`codexClientCompaction`||e.settings.catalogRefreshPending,startupHealth:t.settings.startupHealth??e.settings.startupHealth}};case`save-failed`:return e.beforeSave?{...e,settings:e.beforeSave}:e;case`save-finished`:return{...e,beforeSave:null};case`applied`:return e.settings?{...e,settings:{...e.settings,catalogRefreshPending:!1}}:e}}function Io(e){let t=new Map;for(let n of e){let e=t.get(n.provider);e?e.push(n):t.set(n.provider,[n])}return[...t.entries()].sort(([e],[t])=>e.localeCompare(t))}function Lo(e){return`${Ao}${e}`}function Ro(e,n=0){let{locale:r,t:i}=t(),[a,o]=(0,Z.useState)(Sn),[s,c]=(0,Z.useState)(``),[l,u]=(0,Z.useState)(new Set),d=(0,Z.useMemo)(()=>Ua(Lo(e)),[e]),f=(0,Z.useMemo)(()=>Ua(`${jo}${e}`),[e]),p=(0,Z.useMemo)(()=>Ua(`${Mo}${e}`),[e]),m=(0,Z.useMemo)(()=>{let t=Ua(`${No}${e}`);return t===`error`?null:t},[e]),h=(0,Z.useMemo)(()=>Ua(`${Po}${e}`),[e]),[g,_]=(0,Z.useState)(()=>f?.health??null),[v,y]=(0,Z.useState)(()=>m),[b,x]=(0,Z.useState)(()=>f?.providers??[]),[S,C]=(0,Z.useState)([]),[w,T]=(0,Z.useReducer)(Fo,{settings:d?.settings??null,beforeSave:null}),{settings:E}=w,D=w.beforeSave!==null,[O,k]=(0,Z.useState)(()=>d?.sidecar??null),[A,j]=(0,Z.useState)(()=>d?.shadowCall??null),[M,N]=(0,Z.useState)(()=>p),[P,F]=(0,Z.useState)(!1),[I,L]=(0,Z.useState)(),[R,z]=(0,Z.useState)(!1),[B,V]=(0,Z.useState)(!1),[H,U]=(0,Z.useState)(!1),[W,G]=(0,Z.useState)(()=>h??`default`),[ee,te]=(0,Z.useState)(!1),[K,q]=(0,Z.useState)(null),[ne,J]=(0,Z.useState)(null),[Y,re]=(0,Z.useState)(null),[ie,X]=(0,Z.useState)(null),ae=ne?.apiBase===e?ne.advisory:null,oe=Y===e,se=ie?.apiBase===e?ie.mode:null,[ce,le]=(0,Z.useState)(!1),[ue,de]=(0,Z.useState)(!1),[fe,pe]=(0,Z.useState)(!1),[me,he]=(0,Z.useState)(``),[ge,_e]=(0,Z.useState)(``),[ve,ye]=(0,Z.useState)([]),[be,xe]=(0,Z.useState)([]),[Se,Ce]=(0,Z.useState)(!1),[we,Te]=(0,Z.useState)(!0),[Ee,De]=(0,Z.useState)(!1),[Oe,ke]=(0,Z.useState)(``),[Ae,je]=(0,Z.useState)(``),[Me,Ne]=(0,Z.useState)(!1),[Pe,Fe]=(0,Z.useState)(null),[Ie,Le]=(0,Z.useState)(null),[Re,ze]=(0,Z.useState)([]),[Be,Ve]=(0,Z.useState)(!1),[He,Ue]=(0,Z.useState)(`latest`),[We,Ge]=(0,Z.useState)(!0),[Ke,qe]=(0,Z.useState)(!1),Je=(0,Z.useRef)(0),Ye=(0,Z.useRef)(null),Xe=(0,Z.useRef)(0),Ze=(0,Z.useRef)(0),Qe=(0,Z.useRef)(0),$e=(0,Z.useRef)(!1),et=(0,Z.useRef)(0),tt=(0,Z.useRef)(0),nt=(0,Z.useRef)(!1),[rt,it]=(0,Z.useState)(null),[at,ot]=(0,Z.useState)(null),[st,ct]=(0,Z.useState)(null),[lt,ut]=(0,Z.useState)(!1),[dt,ft]=(0,Z.useState)(!1),pt=(0,Z.useRef)(null),mt=(0,Z.useRef)(null),ht=(0,Z.useRef)(null),gt=(0,Z.useRef)(null),_t=rr(ue,pt),vt=rr(Be,mt),yt=rr(ce,ht),bt=rr(fe,gt);(0,Z.useEffect)(()=>{let e=()=>o(Sn());return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[]),(0,Z.useEffect)(()=>()=>{Xe.current+=1,Ye.current!==null&&(window.clearTimeout(Ye.current),Ye.current=null)},[]);let xt=(0,Z.useRef)(m),St=(0,Z.useRef)(0),Ct=(0,Z.useRef)({settingsRequestEpochRef:Ze,settingsMutationEpochRef:Qe,settingsMutationInFlightRef:$e,shadowCallRequestEpochRef:et,shadowCallMutationEpochRef:tt,shadowCallMutationInFlightRef:nt}).current,wt=Vt(`dashboard-startup-health:${e}`,[e,n],t=>xo(e,t),{pollMs:3e4}),Tt=go(wt.data),Et=wt.refresh;(0,Z.useEffect)(()=>{if(!Tt)return;let e=window.setTimeout(()=>{Et()},mo);return()=>window.clearTimeout(e)},[Tt,Et]);let Dt=Vt(`dashboard-overview:${e}`,[e,n],t=>Oo(e,t),{pollMs:5e3}),Ot=Ja(Dt,e=>e.health===null,!0),kt=g!==null||Dt.data!==void 0,At=Vt(`dashboard-ma-mode:${e}`,[e,n],t=>Do(e,t),{pollMs:5e3}),jt=Vt(`dashboard-sidecars:${e}`,[e,n],async t=>{let n=St.current;return{...await To(e,t,Ct),startupHealthGeneration:n}},{pollMs:5e3}),Mt=Vt(`dashboard-settings:${e}`,[e,n],async t=>{let n=St.current;return{...await Eo(e,t,Ct),startupHealthGeneration:n}},{pollMs:5e3}),Nt=Vt(`dashboard-multi-agent:${e}`,[e,n],t=>ko(e,t),{pollMs:5e3,enabled:kt}),Pt=Vt(hr(e),[e,n],t=>wo(e,t),{enabled:kt,pollMs:6e4,deadlineMs:6e4}),Ft=Vt(`dashboard-diagnostics:${e}`,[e,n],t=>So(e,t),{pollMs:vo,enabled:kt}),It=Vt(`dashboard-models:${e}`,[e,dt,n],t=>Co(e,t),{enabled:kt&&!dt});(0,Z.useEffect)(()=>{if(wt.data!==void 0){let t=wt.data;St.current+=1,y(t.status),xt.current=t.status,t.status!==`error`&&!t.stale&&qa(`${No}${e}`,t.status)}},[wt.data,e]),(0,Z.useEffect)(()=>{let t=Dt.data;t&&(t.health&&(_(t.health),x(t.providers),qa(`${jo}${e}`,{health:t.health,providers:t.providers})),ft(t.error))},[Dt.data,e]),(0,Z.useEffect)(()=>{At.data!==void 0&&(G(At.data.maMode),J({advisory:At.data.advisory??null,apiBase:e}),qa(`${Po}${e}`,At.data.maMode))},[At.data,e]);let Lt=At.data!==void 0||h!==null;(0,Z.useEffect)(()=>{let e=Nt.data;e&&(e.injection&&(Te(e.injection.multiAgentGuidanceEnabled),De(e.injection.syncCodexSubagentDefaults),he(e.injection.injectionModel),_e(e.injection.injectionEffort),ye(e.injection.injectionEfforts),xe(e.injection.injectionAvailable)),e.effortCaps&&(ke(e.effortCaps.effortCap),je(e.effortCaps.subagentEffortCap)))},[Nt.data]),(0,Z.useEffect)(()=>{let t=jt.data;if(!t)return;k(t.sidecar),t.shadowCall!==void 0&&j(t.shadowCall);let n=Ua(Lo(e))??{};qa(Lo(e),{...n,sidecar:t.sidecar,...t.shadowCall===void 0?{}:{shadowCall:t.shadowCall}})},[jt.data,e]),(0,Z.useEffect)(()=>{let t=Mt.data;if(t&&(t.settings!==void 0&&T({type:`polled`,settings:t.settings}),t.startupHealthSeed!==void 0&&t.startupHealthGeneration===St.current)){let n=_o(xt.current,t.startupHealthSeed);y(n),xt.current=n,n&&qa(`${No}${e}`,n)}},[Mt.data,e]),(0,Z.useEffect)(()=>{if(!E)return;let t=Ua(Lo(e))??{};qa(Lo(e),{...t,settings:E})},[E,e]),(0,Z.useEffect)(()=>{Pt.data!==void 0&&(N(Pt.data),qa(`${Mo}${e}`,Pt.data))},[Pt.data,e]),(0,Z.useEffect)(()=>{Ft.data&&ze(Ft.data)},[Ft.data]),(0,Z.useEffect)(()=>{It.data&&C(It.data),V(It.loading)},[It.data,It.loading]),(0,Z.useEffect)(()=>()=>{Ze.current+=1,et.current+=1},[]);let Rt=Vt(st?.id&&st.restart?`update-job:${e}:${st.id}`:`update-job:idle:${e}`,[e,st?.id,st?.restart,st?.latestVersion],async t=>{if(!st?.id||!st.restart)return{reconnecting:!1};let n=st.latestVersion;try{let r=await Tn(await fetch(`${e}/api/update/status?jobId=${encodeURIComponent(st.id)}`,{signal:t}));if(r.job){if(r.job.status===`failed`)return{job:r.job,reconnecting:!1};if(n)try{if((await Tn(await fetch(`${e}/healthz`,{cache:`no-store`,signal:t}))).version===n)return{job:r.job,reconnecting:!1,reload:!0}}catch{return{job:r.job,reconnecting:!0}}return{job:r.job,reconnecting:!1}}}catch{return{reconnecting:!0}}return{reconnecting:!1}},{pollMs:1500,enabled:!!(st?.id&&st.restart),pauseWhenHidden:!1});(0,Z.useEffect)(()=>{let e=Rt.data;e&&(`job`in e&&e.job&&ct(e.job),ut(e.reconnecting),`reload`in e&&e.reload&&window.location.reload())},[Rt.data]);let zt=(0,Z.useMemo)(()=>Io(S),[S]),Bt=(0,Z.useMemo)(()=>{let e=s.trim().toLowerCase();if(!e)return zt;let t=[];for(let[n,r]of zt){let i=r.filter(t=>t.id.toLowerCase().includes(e)||n.toLowerCase().includes(e));i.length>0&&t.push([n,i])}return t},[zt,s]),Ht=(0,Z.useMemo)(()=>{let e=O?.webSearch?.backend;return Jn(O?.webSearchModels,S,O?.webSearch?.model,e===`routed`?void 0:e)},[S,O?.webSearchModels,O?.webSearch]),Ut=(0,Z.useMemo)(()=>Yn(O?.visionModels,S,O?.vision?.model,O?.vision?.backend),[O?.visionModels,S,O?.vision]),Wt=async t=>{if(!O||P)return;t=Qn(O,t);let n=O,r={webSearch:An(O.webSearch,t.webSearch),vision:An(O.vision,t.vision),...O.visionModels?{visionModels:O.visionModels}:{},...O.webSearchModels?{webSearchModels:O.webSearchModels}:{}};F(!0),k(r);try{let n=await Tn(await fetch(`${e}/api/sidecar-settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}),`save failed`);L(e=>Fn(e,n.codexWebSearch)),k({webSearch:n.webSearch,vision:n.vision,...n.visionModels?{visionModels:n.visionModels}:{},...n.webSearchModels?{webSearchModels:n.webSearchModels}:{}});let r=Ua(Lo(e))??{};qa(Lo(e),{...r,sidecar:{webSearch:n.webSearch,vision:n.vision,...n.visionModels?{visionModels:n.visionModels}:{},...n.webSearchModels?{webSearchModels:n.webSearchModels}:{}}})}catch{k(n)}finally{F(!1)}};async function Gt(t){if(!A||R)return;let n=A,r={...A,...t};z(!0),nt.current=!0,j(r);try{if(!(await fetch(`${e}/api/shadow-call-settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)})).ok)throw Error(`shadow-call save failed`);tt.current+=1}catch{j(n)}finally{nt.current=!1,z(!1)}}let qt=async(t,n=!1)=>{te(!0),q(null);try{let r={multiAgentMode:t};n&&(r.multiAgentSurfaceAdvisoryAcknowledged=!0);let a=await fetch(`${e}/api/v2`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(r)});if(a.ok)G(t),n&&re(e),qa(`${Po}${e}`,t);else{let e=i(`dash.maSwitchFailed`,{status:String(a.status)});try{let t=await a.json();e=typeof t.error==`string`&&t.error||typeof t.message==`string`&&t.message||e}catch{}q(e)}}catch(e){q(e instanceof Error?e.message:i(`dash.maNetworkError`))}finally{te(!1)}},Jt=async t=>{if(!(ee||W===t)){if(t!==`v1`){X({mode:t,apiBase:e});return}await qt(`v1`)}},Yt=async()=>{re(e);try{let t=await fetch(`${e}/api/v2`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({multiAgentSurfaceAdvisoryAcknowledged:!0})});t.ok||q(i(`dash.maSwitchFailed`,{status:String(t.status)}))}catch(e){q(e instanceof Error?e.message:i(`dash.maNetworkError`))}},Xt=async()=>{let e=se;if(X(null),e){await qt(e,!0);return}await Yt()},Zt=async()=>{if(X(null),W===`v1`){await Yt();return}await qt(`v1`,!0)},Qt=()=>{if(se){X(null);return}re(e)},$t=!se&&!oe&&ae?.required===!0,en=async t=>{if(!Se){Ce(!0);try{if(!(await fetch(`${e}/api/injection-model`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)})).ok)throw Error(`injection save failed`);let n=await Tn(await fetch(`${e}/api/injection-model`)),r=yo(n);Te(r.multiAgentGuidanceEnabled),De(r.syncCodexSubagentDefaults),he(r.injectionModel),_e(r.injectionEffort),Array.isArray(n.efforts)&&ye(n.efforts),Array.isArray(n.available)&&xe(n.available)}catch{}finally{Ce(!1)}}},tn=async t=>{if(!E||D||H)return;let n=!(E[t]??t===`codexAutoStart`);$e.current=!0,T({type:`save-started`,key:t,value:n});try{let r=await Tn(await fetch(`${e}/api/settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({[t]:n})}),`save failed`);Qe.current+=1,T({type:`save-succeeded`,key:t,settings:r}),(t===`codexDesktopAuthless`||t===`codexClientCompaction`)&&await on()}catch{T({type:`save-failed`}),ft(!0)}finally{$e.current=!1,T({type:`save-finished`})}},nn=()=>tn(`codexAutoStart`),rn=()=>tn(`codexDesktopAuthless`),an=()=>tn(`codexClientCompaction`),Q=(0,Z.useCallback)(()=>{Fe(null),Le(null)},[]),on=async()=>{if(!H){U(!0),Fe(null),Le(null);try{let t=await Tn(await fetch(`${e}/api/sync`,{method:`POST`}),`sync failed`);Fe(t),t.ok&&t.status===`applied`&&(T({type:`applied`}),L(void 0)),t.projectConfigGrouped&&ze(t.projectConfigGrouped)}catch(e){Le(e instanceof Error?e.message:String(e))}finally{U(!1)}}},$=async(t,n=!1)=>{n&&(Je.current=0),Ye.current!==null&&(window.clearTimeout(Ye.current),Ye.current=null);let r=++Xe.current;qe(!0),ot(null),it(null);try{let n=await Tn(await fetch(`${e}/api/update/check?tag=${t}`),`update check failed`);if(r!==Xe.current)return;if(it(n),n.reason===`latest_unavailable`&&Je.current<2){let e=++Je.current;Ye.current=window.setTimeout(()=>{r===Xe.current&&(Ye.current=null,$(t))},800*e);return}n.reason!==`latest_unavailable`&&(Je.current=0),qe(!1)}catch(e){if(r!==Xe.current)return;ot(e instanceof Error?e.message:String(e)),qe(!1)}},sn=()=>{Xe.current+=1,Ye.current!==null&&(window.clearTimeout(Ye.current),Ye.current=null),qe(!1),Ve(!1)},cn=()=>{if(io())return;let e=Dn(g?.version);Ue(e),Ge(!0),Ve(!0),$(e,!0)},ln=e=>{Ue(e),$(e,!0)},un=(0,Z.useRef)(cn);return(0,Z.useEffect)(()=>{un.current=cn}),(0,Z.useEffect)(()=>{let e=()=>{Cn()&&(Kt(`dashboard`),un.current())},t=Cn()?window.setTimeout(e,0):null;return window.addEventListener(`hashchange`,e),()=>{t!==null&&window.clearTimeout(t),window.removeEventListener(`hashchange`,e)}},[]),{apiBase:e,locale:r,t:i,selectedSection:a,setSelectedSection:o,modelQuery:s,setModelQuery:c,expandedProviders:l,setExpandedProviders:u,health:g,startupHealth:v,providers:b,models:S,settings:E,sidecar:O,shadowCall:A,usage30d:M,usageLoading:Pt.loading&&!M,healthLoading:Dt.loading&&!g,sidecarSaving:P,shadowCallSaving:R,modelsLoading:B,settingsSaving:D,syncing:H,maMode:W,maModeResolved:Lt,maBusy:ee,setMaHelpOpen:le,maHelpOpen:ce,maError:K,maAdvisory:ae,maAdvisoryOpen:$t,pendingMaMode:se,keepMaMode:Xt,chooseMaV1:Zt,dismissMaSurfaceDialog:Qt,effortCapHelpOpen:ue,setEffortCapHelpOpen:de,shadowCallHelpOpen:fe,setShadowCallHelpOpen:pe,injectionModel:me,injectionEffort:ge,injectionEfforts:ve,injectionAvailable:be,injectionSaving:Se,multiAgentGuidanceEnabled:we,syncCodexSubagentDefaults:Ee,saveInjection:en,effortCap:Oe,subagentEffortCap:Ae,effortCapSaving:Me,setEffortCap:ke,setSubagentEffortCap:je,setEffortCapSaving:Ne,syncResult:Pe,syncError:Ie,projectConfigWarnings:Re,updateOpen:Be,updateChannel:He,setUpdateRestart:Ge,updateRestart:We,updateLoading:Ke,updateCheck:rt,updateError:at,updateJob:st,reconnecting:lt,error:dt||Ot.showError,connectionFailure:Dt.data?.failure??(Ot.showError?`unavailable`:void 0),refreshDashboard:Dt.refresh,effortCapHelpTriggerRef:pt,updateTriggerRef:mt,maHelpTriggerRef:ht,shadowCallHelpTriggerRef:gt,effortCapHelpDialogRef:_t,updateDialogRef:vt,maHelpDialogRef:yt,shadowCallHelpDialogRef:bt,filteredGroups:Bt,sidecarModels:Ht,visionModels:Ut,sidecarCodexApply:I,saveSidecar:Wt,saveShadowCall:Gt,switchMaMode:Jt,toggleCodexAutoStart:nn,toggleCodexDesktopAuthless:rn,toggleCodexClientCompaction:an,runSync:on,clearSyncFeedback:Q,fetchUpdateCheck:$,closeUpdateDialog:sn,openUpdateDialog:cn,changeUpdateChannel:ln,runUpdate:async()=>{if(rt?.canUpdate){ot(null);try{let t=await Tn(await fetch(`${e}/api/update/run`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({tag:He,restart:We})}),`update failed to start`);if(!t.job)throw Error(`update failed to start`);ct(t.job),ut(!1),sn()}catch(e){ot(e instanceof Error?e.message:String(e))}}}}}function zo(e){qt(wn(e))}function Bo({apiBase:e,connected:t=!1,authenticationPending:n=!1,refreshEpoch:r=0}){let i=Ro(e,r),{t:a,error:o,selectedSection:s,providers:c,models:l,modelsLoading:u,modelQuery:d,setModelQuery:f,filteredGroups:p,expandedProviders:m,setExpandedProviders:h}=i;if(n)return null;let g=i.connectionFailure===`auth`||i.connectionFailure===`denied`;if(o&&(g||!i.health))return(0,Q.jsxs)(ln,{style:{marginTop:40},icon:(0,Q.jsx)(Ae,{}),title:(0,Q.jsx)(`span`,{style:{color:`var(--red)`},children:a(i.connectionFailure===`denied`?`dash.permissionDenied`:i.connectionFailure===`auth`?`dash.authRequired`:`dash.dataUnavailable`)}),children:[!t&&i.connectionFailure===`unavailable`&&(0,Q.jsx)(T,{k:`dash.runStart`,cmd:`ocx start`}),(0,Q.jsx)(`button`,{className:`btn btn-ghost`,type:`button`,onClick:()=>i.refreshDashboard(),children:a(`common.retry`)})]});let _=(0,Q.jsx)(Ba,{...i}),v=(0,Q.jsx)(Va,{t:a,providers:c}),y=(0,Q.jsx)(lr,{t:a,models:l,modelsLoading:u,modelQuery:d,setModelQuery:f,filteredGroups:p,expandedProviders:m,setExpandedProviders:h}),b=(0,Q.jsx)(cr,{...i}),x=[{id:`overview`,label:a(`dash.workspace.overview`),body:_},{id:`providers`,label:a(`dash.activeProviders`),body:v},{id:`models`,label:a(`dash.availableModels`),body:y}],S=x.find(e=>e.id===s)??x[0],C=zo,w=e=>{let t=x.findIndex(e=>e.id===s),n=-1;if(e.key===`ArrowRight`?n=(t+1)%x.length:e.key===`ArrowLeft`?n=(t-1+x.length)%x.length:e.key===`Home`?n=0:e.key===`End`&&(n=x.length-1),n<0)return;e.preventDefault();let r=x[n];C(r.id),document.getElementById(`dashboard-tab-${r.id}`)?.focus()};return(0,Q.jsxs)(`div`,{className:`dashboard-workspace-shell`,children:[o&&(0,Q.jsxs)($,{tone:`warn`,children:[a(`dash.staleData`),` `,(0,Q.jsx)(`button`,{className:`btn btn-ghost`,type:`button`,onClick:()=>i.refreshDashboard(),children:a(`common.retry`)})]}),(0,Q.jsx)(`div`,{className:`page-head`,children:(0,Q.jsx)(`h2`,{children:a(`nav.dashboard`)})}),(0,Q.jsx)(`p`,{className:`page-sub`,children:a(`dash.subtitle`)}),(0,Q.jsx)(`div`,{className:`page-tabs`,role:`tablist`,"aria-label":a(`dash.workspace.sections`),children:x.map(e=>(0,Q.jsx)(`button`,{type:`button`,role:`tab`,id:`dashboard-tab-${e.id}`,"aria-selected":s===e.id,"aria-controls":`dashboard-panel-${e.id}`,tabIndex:s===e.id?0:-1,className:`page-tab${s===e.id?` page-tab--active`:``}`,onClick:()=>C(e.id),onKeyDown:w,children:e.label},e.id))}),(0,Q.jsx)(`section`,{className:`dashboard-workspace-main`,role:`tabpanel`,id:`dashboard-panel-${S.id}`,"aria-labelledby":`dashboard-tab-${S.id}`,tabIndex:0,children:S.body}),b]})}function Vo(e){let t=Object.create(null);for(let n of e)t[n.provider]={requests:n.requests,totalTokens:n.totalTokens};return t}function Ho(e,t){let n=Object.create(null);for(let r of e){let e=t[r.provider]?.totalTokens??0,{provider:i,...a}=r;(n[i]??=[]).push({...a,shareRatio:e>0?Math.min(1,Math.max(0,r.totalTokens/e)):0})}return n}function Uo(e){return Object.entries(e).filter(e=>typeof e[1].requests==`number`&&e[1].requests>0).map(([e,t])=>({name:e,...t,requests:t.requests})).sort((e,t)=>t.requests-e.requests||e.name.localeCompare(t.name))}var Wo={justNow:`Just now`,notChecked:`Not checked`,minutesAgo:e=>`${e}m ago`,hoursAgo:e=>`${e}h ago`,daysAgo:e=>`${e}d ago`};function Go(e,t,n){let r=typeof t==`object`&&t?t:Wo,i=typeof t==`number`?t:n??Date.now();if(e===void 0||!Number.isFinite(e))return r.notChecked;let a=Math.max(0,i-e),o=Math.floor(a/6e4);if(o<1)return r.justNow;if(o<60)return r.minutesAgo(o);let s=Math.floor(o/60);return s<24?r.hoursAgo(s):r.daysAgo(Math.floor(s/24))}function Ko(e){return{justNow:e(`time.justNow`),notChecked:e(`time.notChecked`),minutesAgo:t=>e(`time.minutesAgo`,{n:t}),hoursAgo:t=>e(`time.hoursAgo`,{n:t}),daysAgo:t=>e(`time.daysAgo`,{n:t})}}function qo(e,t){let n=[];for(let r of e.ready)r.activeNeedsReauth&&n.push({name:r.name,reason:t[r.name]??`Active account needs re-authentication`});for(let r of e.needsSetup){let e=r.activeNeedsReauth?t[r.name]??`Active account needs re-authentication`:t[r.name]??`Missing credentials`;n.push({name:r.name,reason:e})}for(let r of e.disabled){let e=t[r.name];e&&n.push({name:r.name,reason:e})}return n}function Jo(e){return e===`Active account needs re-authentication`?`reauth`:e===`Missing credentials`?`missing`:`custom`}function Yo(e,t=`en`){if(e===void 0)return`—`;if(t.toLowerCase().slice(0,2)===`de`){let t=e=>e.replace(/\.0+$/,``).replace(`.`,`,`);return e>=1e9?`${t((e/1e9).toFixed(2))} Mrd.`:e>=1e6?`${t((e/1e6).toFixed(1))} Mio.`:e>=1e3?`${t((e/1e3).toFixed(1))} Tsd.`:String(e)}return e>=1e9?`${(e/1e9).toFixed(2).replace(/\.?0+$/,``)}B`:e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function Xo(e,t=`en`){return Yo(e,t)}function Zo(e,t=`en`){return e==null||!Number.isFinite(e)||e<0?`—`:`~$${new Intl.NumberFormat(t,{minimumFractionDigits:4,maximumFractionDigits:4}).format(e)}`}function Qo(e){return e===`5h`?0:e===`First-party models`?2:e===`API usage`?3:e===`Total subscription credits`?4.5:5}var $o=`Total subscription credits`;function es(e){return e.trim().toLowerCase()===$o.toLowerCase()?$o:e}function ts(e,t){if(e===void 0||!t)return!1;let n=es(e);for(let e of t)if(es(e)===n)return!0;return!1}function ns(e,t){switch(e){case`First-party models`:return t(`quota.cursorFirstParty`);case`API usage`:return t(`quota.cursorApiUsage`);case`Total subscription credits`:return t(`quota.totalSubscriptionCredits`);default:return e}}function rs(e,t,n){let r=I(e,t);if(!r)return[];let i=[];typeof r.fiveHourPercent==`number`&&i.push({rank:0,row:{windowKey:`fiveHour`,label:n(`codexAuth.fiveHour`),limitLabel:n(`quota.fiveHourLimit`),percent:r.fiveHourPercent,resetAt:r.fiveHourResetAt}}),typeof r.weeklyPercent==`number`&&i.push({rank:1,row:{windowKey:`weekly`,label:n(`codexAuth.weekly`),limitLabel:n(`quota.weeklyLimit`),percent:r.weeklyPercent,resetAt:r.weeklyResetAt}}),typeof r.monthlyPercent==`number`&&i.push({rank:4,row:{windowKey:`monthly`,label:n(`codexAuth.monthly`),limitLabel:n(`quota.monthlyLimit`),percent:r.monthlyPercent,resetAt:r.monthlyResetAt}});for(let e of r.customWindows??[]){let t=es(e.label),r=ns(t,n);i.push({rank:Qo(t),row:{id:JSON.stringify([e.modelId??null,e.label,e.resetAt??null]),customLabel:t,label:r,limitLabel:r,percent:e.percent,resetAt:e.resetAt}})}if(r.creditsUsd&&typeof r.creditsUsd.percent==`number`&&!r.customWindows?.some(e=>e.modelId===void 0&&es(e.label)===$o)){let e=ns($o,n);i.push({rank:Qo($o),row:{customLabel:$o,label:e,limitLabel:e,percent:r.creditsUsd.percent,resetAt:r.creditsUsd.expiresAt}})}let a=new Map;return i.sort((e,t)=>e.rank-t.rank).map(({row:e})=>{let t=e.id??e.windowKey??e.customLabel,n=a.get(t)??0;return a.set(t,n+1),{...e,id:JSON.stringify([t,n])}})}function is(e){if(!e)return-1;let t=[e.fiveHourPercent,e.weeklyPercent,e.monthlyPercent].filter(e=>typeof e==`number`);for(let n of e.customWindows??[])n.modelId===void 0&&typeof n.percent==`number`&&t.push(n.percent);return!e.customWindows?.some(e=>e.modelId===void 0&&es(e.label)===$o)&&typeof e.creditsUsd?.percent==`number`&&t.push(e.creditsUsd.percent),t.length?Math.max(...t):-1}function as(e){switch(e){case`en`:return`en-GB`;case`de`:return`de-DE`;case`fr`:return`fr-FR`;case`ko`:return`ko-KR`;case`zh`:return`zh-CN`;case`zh-TW`:return`zh-TW`;case`ru`:return`ru-RU`;case`ja`:return`ja-JP`;case`tr`:return`tr-TR`;case`vi`:return`vi-VN`;case`pt`:return`pt-BR`;default:return e}}function os(e){return e>=99.5}function ss(e,t){return t>0&&e>=t}function cs(e,t){return ss(e,t)||os(e)?`bar-warn`:`bar-green`}function ls(e){let t=Math.max(0,Math.min(100,e));return t<=0?0:Math.max(4,Math.round(t))}function us(e){return{"--bar-scale":String(ls(e)/100)}}function ds(e,t,n=Date.now()){let r=n-e;return!Number.isFinite(r)||r<6e4?null:r<36e5?t(`quota.ageMinutes`).replace(`{n}`,String(Math.floor(r/6e4))):r<864e5?t(`quota.ageHours`).replace(`{n}`,String(Math.floor(r/36e5))):t(`quota.ageDays`).replace(`{n}`,String(Math.floor(r/864e5)))}function fs({quota:e,plan:n,threshold:r,t:i,className:a,layout:o=`compact`,pending:s=!1,incompleteWindowKeys:c,incompleteCustomWindowLabels:l,observedAt:u,afterWeekly:d}){let{locale:f}=t(),p=rs(e,n,i),m=u===void 0?null:ds(u,i),h=m===null?null:(0,Q.jsx)(`p`,{className:`quota-observed muted`,title:i(`quota.observedHint`),children:i(`quota.observedAgo`).replace(`{age}`,m)});return p.length===0?s?o===`stacked`?(0,Q.jsxs)(`div`,{className:`quota-stacked quota-stacked--pending${a?` ${a}`:``}`,"aria-busy":`true`,role:`status`,children:[Array.from({length:2},(e,t)=>(0,Q.jsxs)(`div`,{className:`quota-stacked-row quota-stacked-row--skeleton`,"aria-hidden":`true`,children:[(0,Q.jsxs)(`div`,{className:`quota-stacked-head`,children:[(0,Q.jsx)(`span`,{className:`quota-skel quota-skel--label`,style:{width:72}}),(0,Q.jsx)(`span`,{className:`quota-skel quota-skel--time`,style:{width:64}})]}),(0,Q.jsxs)(`div`,{className:`quota-stacked-bar-row`,children:[(0,Q.jsx)(`span`,{className:`quota-skel quota-skel--bar`,style:{height:6,flex:1}}),(0,Q.jsx)(`span`,{className:`quota-skel quota-skel--val`,style:{width:36}})]})]},t)),(0,Q.jsx)(`span`,{className:`sr-only`,children:i(`common.loading`)})]}):(0,Q.jsxs)(`div`,{className:`codex-account-quota-slot quota-compact quota-compact--pending${a?` ${a}`:``}`,"aria-busy":`true`,role:`status`,children:[(0,Q.jsxs)(`div`,{className:`quota-row quota-row--skeleton`,"aria-hidden":`true`,children:[(0,Q.jsx)(`span`,{className:`quota-skel quota-skel--label`}),(0,Q.jsx)(`span`,{className:`quota-skel quota-skel--reset`}),(0,Q.jsx)(`span`,{className:`quota-skel quota-skel--day`}),(0,Q.jsx)(`span`,{className:`quota-skel quota-skel--time`}),(0,Q.jsx)(`span`,{className:`quota-skel quota-skel--bar`}),(0,Q.jsx)(`span`,{className:`quota-skel quota-skel--val`})]}),(0,Q.jsx)(`span`,{className:`sr-only`,children:i(`common.loading`)})]}):o===`compact`&&d?(0,Q.jsx)(`div`,{className:`codex-account-quota-slot quota-compact${a?` ${a}`:``}`,children:d}):null:o===`stacked`?(0,Q.jsxs)(`div`,{className:`quota-stacked${a?` ${a}`:``}`,children:[h,p.map(e=>(0,Q.jsx)(ms,{row:e,threshold:r,t:i,locale:f,incomplete:e.windowKey?c?.has(e.windowKey)===!0:ts(e.customLabel,l)},e.id))]}):(0,Q.jsxs)(`div`,{className:`codex-account-quota-slot quota-compact${a?` ${a}`:``}`,children:[h,p.map(e=>(0,Q.jsxs)(Z.Fragment,{children:[(0,Q.jsx)(ps,{credits:e.customLabel===$o,label:e.label,percent:e.percent,resetAt:e.resetAt,threshold:r,t:i,locale:f}),e.windowKey===`weekly`&&d]},e.id)),!p.some(e=>e.windowKey===`weekly`)&&d]})}function ps({credits:e,label:t,percent:n,resetAt:r,threshold:i,t:a,locale:o}){let s=os(n),c=ss(n,i),l=cs(n,i),u=gs(r,a,o),d=u.day||u.time?`${a(`codexAuth.resets`)} ${u.day} ${u.time}`.replace(/\s+/g,` `).trim():void 0,f=u.day!==``||u.time!==``;return(0,Q.jsxs)(`div`,{className:`quota-row${e?` quota-row--credits`:``}${c?` quota-row--warn`:``}${s?` quota-row--exhausted`:``}`,children:[(0,Q.jsx)(`span`,{className:`quota-label`,title:d,children:t}),(0,Q.jsx)(`span`,{className:`quota-reset-label`,children:f?a(`codexAuth.resets`):``}),(0,Q.jsx)(`span`,{className:`quota-reset-day`,children:u.day}),(0,Q.jsx)(`span`,{className:`quota-reset-time`,children:u.time}),(0,Q.jsx)(`div`,{className:`bar`,title:d,children:(0,Q.jsx)(`div`,{className:`bar-fill ${l}`,style:us(n)})}),(0,Q.jsxs)(`span`,{className:`quota-val${c?` quota-val--warn`:``}`,title:s?a(`quota.limitReached`):d,"aria-label":d,children:[c&&(0,Q.jsx)(Ae,{width:12,height:12,"aria-hidden":`true`}),Math.round(n),`%`,s?` · ${a(`quota.limitReached`)}`:``]})]})}function ms({row:e,threshold:t,t:n,locale:r,incomplete:i}){let a=os(e.percent),o=ss(e.percent,t),s=cs(e.percent,t),c=_s(e.resetAt,n,r);return(0,Q.jsxs)(`div`,{className:`quota-stacked-row${o?` quota-stacked-row--warn`:``}${a?` quota-stacked-row--exhausted`:``}`,children:[(0,Q.jsxs)(`div`,{className:`quota-stacked-head`,children:[(0,Q.jsxs)(`span`,{className:`quota-stacked-limit-group`,children:[(0,Q.jsx)(`span`,{className:`quota-stacked-limit`,children:e.limitLabel}),i&&(0,Q.jsx)(`span`,{className:`quota-window-partial`,role:`note`,"aria-label":n(`pws.capacity.windowPartialA11y`,{window:e.limitLabel}),title:n(`pws.capacity.windowPartialA11y`,{window:e.limitLabel}),children:n(`pws.capacity.windowPartial`)})]}),(0,Q.jsx)(`span`,{className:`quota-stacked-reset muted`,children:c})]}),(0,Q.jsxs)(`div`,{className:`quota-stacked-bar-row`,children:[(0,Q.jsx)(`div`,{className:`bar quota-stacked-bar`,children:(0,Q.jsx)(`div`,{className:`bar-fill ${s}`,style:us(e.percent)})}),(0,Q.jsx)(`span`,{className:`quota-stacked-used${o?` quota-stacked-used--warn`:``}`,children:n(`quota.usedPercent`,{pct:Math.round(e.percent)})})]}),a&&(0,Q.jsxs)(`div`,{className:`quota-stacked-limit-reached`,role:`status`,children:[(0,Q.jsx)(Ae,{width:12,height:12,"aria-hidden":`true`}),n(`quota.limitReached`)]})]})}function hs(e){if(typeof e!=`number`||!Number.isFinite(e))return null;let t=e<1e10?e*1e3:e,n=new Date(t);return Number.isFinite(n.getTime())?{date:n,ms:t}:null}function gs(e,t,n){let r=hs(e);if(!r)return{day:``,time:``};let{date:i}=r,a=new Date,o=as(n),s=new Intl.DateTimeFormat(o,{hour:`2-digit`,minute:`2-digit`,hour12:!1}).format(i);return i.getFullYear()===a.getFullYear()&&i.getMonth()===a.getMonth()&&i.getDate()===a.getDate()?{day:t(`codexAuth.today`),time:s}:{day:new Intl.DateTimeFormat(o,{day:`numeric`,month:`short`}).format(i),time:s}}function _s(e,t,n=`en`,r=Date.now()){let i=hs(e);if(!i)return``;let{date:a,ms:o}=i,s=as(n),c=new Intl.DateTimeFormat(s,{hour:`2-digit`,minute:`2-digit`,hour12:!1}).format(a),l=new Date(r),u=new Date(l.getFullYear(),l.getMonth(),l.getDate()).getTime(),d=new Date(a.getFullYear(),a.getMonth(),a.getDate()).getTime(),f=Math.round((d-u)/864e5);if(f===1)return t(`quota.resetsTomorrow`,{time:c});let p=a.getFullYear()!==l.getFullYear(),m=new Intl.DateTimeFormat(s,{day:`numeric`,month:`short`,...p?{year:`numeric`}:{}}).format(a);if(o<=r)return t(`quota.resetsAt`,{date:m,time:c,when:`${m}, ${c}`});let h=Math.round((o-r)/6e4);if(h<60)return t(`quota.resetsRelativeMinutes`,{n:Math.max(1,h)});let g=Math.round(h/60);return g<12&&f===0?t(`quota.resetsRelativeHours`,{n:Math.max(1,g)}):f===0?t(`quota.resetsToday`,{time:c}):t(`quota.resetsAt`,{date:m,time:c,when:`${m}, ${c}`})}function vs(e){switch(e){case`en`:return`en-GB`;case`de`:return`de-DE`;case`fr`:return`fr-FR`;case`ko`:return`ko-KR`;case`zh`:return`zh-CN`;case`zh-TW`:return`zh-TW`;case`ru`:return`ru-RU`;case`ja`:return`ja-JP`;case`tr`:return`tr-TR`;case`vi`:return`vi-VN`;case`pt`:return`pt-BR`;default:return e}}function ys(e){let t=new Date(e>1e10?e:e*1e3);return Number.isFinite(t.getTime())?t:null}function bs({report:e,pending:n}){let r=O(),{locale:i}=t(),a=ze(e),o=ae(e),s=se(e),c=o?.creditsUsd,l=a?.presentation===`aggregate`,u=new Set,d=new Set;if(l&&a){a.fiveHour?.incomplete&&u.add(`fiveHour`),a.weekly?.incomplete&&u.add(`weekly`),a.monthly?.incomplete&&u.add(`monthly`);for(let e of a.customWindows??[])e.incomplete&&d.add(e.label)}let f=l&&a?[...a.fiveHour?[{key:0,label:r(`codexAuth.fiveHour`),window:a.fiveHour}]:[],...a.weekly?[{key:1,label:r(`codexAuth.weekly`),window:a.weekly}]:[],...a.monthly?[{key:2,label:r(`codexAuth.monthly`),window:a.monthly}]:[],...(a.customWindows??[]).map((e,t)=>({key:t+3,label:e.label,window:e}))]:[],p=e=>new Intl.NumberFormat(i,{maximumFractionDigits:1}).format(e),m=e=>{let t=ys(e);return t===null?null:new Intl.DateTimeFormat(i,{dateStyle:`medium`,timeStyle:`short`}).format(t)},h=vs(i),g=e=>new Intl.NumberFormat(h,{style:`currency`,currency:`USD`}).format(e),_=c?.expiresAt===void 0?null:(e=>{let t=ys(e);return t===null?null:new Intl.DateTimeFormat(h,{dateStyle:`medium`}).format(t)})(c.expiresAt);return(0,Q.jsxs)(Q.Fragment,{children:[l&&(0,Q.jsx)(`div`,{className:`pws-capacity-label`,children:r(`pws.capacity.estimate`)}),(o||n)&&(0,Q.jsx)(fs,{quota:o,threshold:80,t:r,layout:`stacked`,pending:n,...s===void 0?{}:{observedAt:s},incompleteWindowKeys:l?u:void 0,incompleteCustomWindowLabels:l?d:void 0}),(c||a)&&(0,Q.jsxs)(`div`,{className:`pws-capacity-details`,children:[c&&(0,Q.jsxs)(`div`,{className:`pws-capacity-recovery`,children:[(0,Q.jsx)(`span`,{children:r(`quota.creditsBalance`)}),(0,Q.jsx)(`strong`,{children:g(c.remaining)})]}),_!==null&&(0,Q.jsx)(`div`,{className:`pws-capacity-recovery`,children:(0,Q.jsx)(`span`,{children:r(`quota.creditsPeriodEnds`,{date:_})})}),f.flatMap(({key:e,label:t,window:n})=>{let i=n.nextRecoveryAt===void 0?null:m(n.nextRecoveryAt);return i!==null&&n.nextRecoveryPercent!==void 0?[(0,Q.jsxs)(`div`,{className:`pws-capacity-recovery`,children:[(0,Q.jsxs)(`span`,{children:[r(`pws.capacity.nextRecovery`),` · `,t,` · `,i]}),(0,Q.jsx)(`strong`,{children:r(`pws.capacity.recoveryShare`,{percent:p(n.nextRecoveryPercent)})})]},e)]:[]}),l&&a&&a.currentAccount?.quota&&(0,Q.jsxs)(`div`,{className:`pws-capacity-current`,children:[(0,Q.jsxs)(`span`,{className:`pws-capacity-label`,children:[r(`pws.capacity.currentAccount`),a.currentAccount.plan?` · ${a.currentAccount.plan}`:``]}),(0,Q.jsx)(fs,{quota:a.currentAccount.quota,threshold:80,t:r,layout:`stacked`})]}),a&&a.incomplete&&a.excludedAccounts>0&&(0,Q.jsx)(`div`,{className:`pws-capacity-incomplete`,children:r(`pws.capacity.incomplete`,{excluded:a.excludedAccounts})}),a&&a.unknownPlanAccounts>0&&(0,Q.jsx)(`div`,{className:`pws-capacity-incomplete`,children:r(`pws.capacity.uncalibratedPlan`,{count:a.unknownPlanAccounts})}),a&&a.partialWindowAccounts>0&&(0,Q.jsx)(`div`,{className:`pws-capacity-incomplete`,children:r(`pws.capacity.partial`,{count:a.partialWindowAccounts})})]})]})}function xs({sections:e,quotaReports:n,usageTotals:r,usageLoading:i=!1,quotasLoading:a=!1,onSelectProvider:o,onEditConfig:s,onRefreshAllQuotas:c}){let l=O(),{locale:u}=t(),d=Ko(l),[f,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(null),g=async()=>{if(!(!c||f)){p(!0),h(null);try{let e=await c();h({ok:e,text:l(e?`pws.quotaRefreshDone`:`codexAuth.quotaRefreshFailed`)})}catch{h({ok:!1,text:l(`codexAuth.quotaRefreshFailed`)})}finally{p(!1)}}},_=(0,Z.useMemo)(()=>[...e.ready,...e.needsSetup,...e.disabled],[e]),v=(0,Z.useMemo)(()=>new Set(_.map(e=>e.name)),[_]),y=(0,Z.useMemo)(()=>qo(e,{}),[e]),b=y.length,x=(0,Z.useMemo)(()=>e.ready.filter(e=>e.activeNeedsReauth).length,[e]),S=e.ready.length-x,C=e.needsSetup.length+x,w=(0,Z.useMemo)(()=>{let e=[];for(let t of _){let r=n[t.name],i=r?ae(r):null,a=r?ze(r):null;r&&(i||a?.presentation===`coverage-only`)&&e.push({item:t,report:r,urgency:i?is(i):-1})}return e.sort((e,t)=>t.urgency-e.urgency||e.item.name.localeCompare(t.item.name))},[_,n]),T=(0,Z.useMemo)(()=>{let e={};for(let[t,n]of Object.entries(r))v.has(t)&&(e[t]=n);return Uo(e).slice(0,4)},[r,v]),E=e=>{let t=Jo(e);return t===`reauth`?l(`pws.attention.reauth`):t===`missing`?l(`pws.attention.missingCredentials`):e};return(0,Q.jsxs)(`div`,{className:`pws-dashboard`,children:[(0,Q.jsxs)(`div`,{className:`pws-dashboard-header`,children:[(0,Q.jsx)(`div`,{className:`pws-dashboard-header-text`,children:(0,Q.jsx)(`h2`,{className:`pws-dashboard-title`,children:l(`pws.dashboard.title`)})}),(0,Q.jsxs)(`div`,{className:`pws-dashboard-header-actions`,children:[m&&(0,Q.jsx)(`span`,{role:`status`,className:m.ok?`pws-status-ok`:`pws-status-warn`,children:m.text}),c&&(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:f,onClick:()=>{g()},children:[(0,Q.jsx)(re,{width:14,height:14,"aria-hidden":`true`}),` `,l(f?`codexAuth.refreshingQuota`:`pws.refreshAllQuotas`)]}),s&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:s,children:l(`prov.editJson`)})]})]}),(0,Q.jsxs)(`div`,{className:`pws-dashboard-summary`,children:[(0,Q.jsx)(Ss,{count:S,label:l(`pws.status.ready`),tone:`ok`}),(0,Q.jsx)(Ss,{count:C,label:l(x>0?`pws.status.needsAttention`:`pws.status.needsSetup`),tone:`warn`}),(0,Q.jsx)(Ss,{count:e.disabled.length,label:l(`prov.disabledBadge`),tone:`muted`})]}),b>0&&(0,Q.jsxs)(`section`,{className:`pws-dashboard-section pws-dashboard-attention`,"aria-label":l(`pws.attentionTitle`),children:[(0,Q.jsxs)(`h3`,{className:`pws-dashboard-section-title`,children:[(0,Q.jsx)(Ae,{style:{width:14,height:14},"aria-hidden":`true`}),l(`pws.attentionTitle`)]}),(0,Q.jsx)(`div`,{className:`pws-dashboard-rows`,children:y.map(e=>(0,Q.jsxs)(`button`,{type:`button`,className:`pws-dashboard-row pws-dashboard-row--attention`,onClick:()=>o(e.name),children:[(0,Q.jsx)(me,{name:e.name,adapter:``,baseUrl:``,cls:`pws-dashboard-row-icon`}),(0,Q.jsxs)(`div`,{className:`pws-dashboard-row-info`,children:[(0,Q.jsx)(`span`,{className:`pws-dashboard-row-name`,children:be(e.name,l)}),(0,Q.jsx)(`span`,{className:`pws-dashboard-row-meta muted`,children:E(e.reason)})]}),(0,Q.jsx)(Ke,{className:`pws-dashboard-row-chevron`,"aria-hidden":`true`})]},`${e.name}:${e.reason}`))})]}),(0,Q.jsxs)(`div`,{className:`pws-dashboard-columns`,children:[(0,Q.jsxs)(`section`,{className:`pws-dashboard-section pws-dashboard-section--rate-limits`,"aria-label":l(`pws.dashboard.rateLimits`),"aria-busy":a||void 0,children:[(0,Q.jsx)(`h3`,{className:`pws-dashboard-section-title`,children:l(`pws.dashboard.rateLimits`)}),w.length>0?(0,Q.jsx)(`div`,{className:`pws-dashboard-rows`,children:w.map(({item:e,report:t})=>(0,Q.jsxs)(`button`,{type:`button`,className:`pws-dashboard-row`,onClick:()=>o(e.name),children:[(0,Q.jsx)(me,{name:e.name,adapter:e.adapter,baseUrl:e.baseUrl,cls:`pws-dashboard-row-icon`}),(0,Q.jsxs)(`div`,{className:`pws-dashboard-row-info`,children:[(0,Q.jsx)(`span`,{className:`pws-dashboard-row-name`,children:be(e.name,l)}),(0,Q.jsx)(`span`,{className:`pws-dashboard-row-meta muted`,children:l(`pws.dashboard.checkedAgo`,{time:Go(t.updatedAt,d)})})]}),(0,Q.jsx)(Ke,{className:`pws-dashboard-row-chevron`,"aria-hidden":`true`}),(0,Q.jsx)(`div`,{className:`pws-dashboard-row-bars`,children:(0,Q.jsx)(bs,{report:t,pending:a&&!t.quota})})]},e.name))}):a?(0,Q.jsx)(`div`,{className:`pws-dashboard-rows pws-dashboard-rows--pending`,"aria-hidden":`true`,children:Array.from({length:3},(e,t)=>(0,Q.jsxs)(`div`,{className:`pws-dashboard-row pws-dashboard-row--skeleton`,children:[(0,Q.jsx)(`span`,{className:`pws-dashboard-row-icon pws-skel`}),(0,Q.jsxs)(`div`,{className:`pws-dashboard-row-info`,children:[(0,Q.jsx)(`span`,{className:`pws-skel pws-skel--name`}),(0,Q.jsx)(`span`,{className:`pws-skel pws-skel--meta`})]}),(0,Q.jsx)(`div`,{className:`pws-dashboard-row-bars`,children:(0,Q.jsx)(fs,{quota:null,threshold:80,t:l,layout:`stacked`,pending:!0})})]},t))}):(0,Q.jsx)(`p`,{className:`muted pws-dashboard-empty`,children:l(`pws.dashboard.noRateLimits`)})]}),(0,Q.jsx)(`section`,{className:`pws-dashboard-section pws-dashboard-section--recent`,"aria-label":l(`pws.dashboard.recentlyUsed`),"aria-busy":i||void 0,children:(0,Q.jsxs)(`details`,{className:`pws-dashboard-recent-details`,children:[(0,Q.jsx)(`summary`,{className:`pws-dashboard-section-title`,children:l(`pws.dashboard.recentlyUsed`)}),T.length>0?(0,Q.jsx)(`div`,{className:`pws-dashboard-rows`,children:T.map(e=>(0,Q.jsxs)(`button`,{type:`button`,className:`pws-dashboard-row`,onClick:()=>o(e.name),children:[(0,Q.jsx)(me,{name:e.name,adapter:``,baseUrl:``,cls:`pws-dashboard-row-icon`}),(0,Q.jsx)(`span`,{className:`pws-dashboard-row-name`,children:be(e.name,l)}),(0,Q.jsx)(`span`,{className:`pws-dashboard-row-count muted`,children:l(`pws.dashboard.requests`,{count:Yo(e.requests,u)})}),(0,Q.jsx)(Ke,{className:`pws-dashboard-row-chevron`,"aria-hidden":`true`})]},e.name))}):i?(0,Q.jsx)(`div`,{className:`pws-dashboard-rows pws-dashboard-rows--pending`,"aria-hidden":`true`,children:Array.from({length:3},(e,t)=>(0,Q.jsxs)(`div`,{className:`pws-dashboard-row pws-dashboard-row--skeleton`,children:[(0,Q.jsx)(`span`,{className:`pws-dashboard-row-icon pws-skel`}),(0,Q.jsx)(`span`,{className:`pws-skel pws-skel--name`}),(0,Q.jsx)(`span`,{className:`pws-skel pws-skel--count`})]},t))}):(0,Q.jsx)(`p`,{className:`muted pws-dashboard-empty`,children:l(`pws.dashboard.noUsage`)})]})})]})]})}function Ss({count:e,label:t,tone:n}){return(0,Q.jsxs)(`div`,{className:`pws-dashboard-card pws-dashboard-card--${n}`,children:[(0,Q.jsx)(`span`,{className:`pws-dashboard-card-count`,children:e}),(0,Q.jsx)(`span`,{className:`pws-dashboard-card-label`,children:t})]})}function Cs({editor:e,providerName:t,saving:n,onSave:r,message:i}){let a=O(),o=(0,Z.useRef)(null);return(0,Z.useEffect)(()=>{e.open&&o.current?.focus()},[e.open]),e.open?(0,Q.jsxs)(`div`,{className:`pwi-json-panel`,children:[(0,Q.jsxs)(`div`,{className:`pwi-json-panel-header`,children:[(0,Q.jsx)(`span`,{className:`pwi-json-panel-title`,children:a(`pws.jsonEditorTitle`,{name:t})}),(0,Q.jsxs)(`div`,{className:`pwi-json-panel-actions`,children:[e.onRestore&&e.isDirty&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:e.onRestore,children:a(`pws.jsonRestore`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:e.onClose,children:a(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:r,disabled:n||!e.isDirty,children:a(n?`pws.saving`:`pws.jsonSave`)})]})]}),(0,Q.jsx)(`p`,{className:`pwi-json-panel-desc muted`,children:a(`pws.jsonEditorDesc`)}),(0,Q.jsx)(`textarea`,{ref:o,className:`input pwi-json-textarea`,value:e.draft,onChange:t=>e.onDraftChange(t.target.value),spellCheck:!1,rows:20,"aria-label":a(`pws.jsonEditorDesc`)}),i&&(0,Q.jsx)(`div`,{className:i.ok?`pwi-settings-msg pwi-settings-msg--ok`:`pwi-settings-msg pwi-settings-msg--err`,children:i.text})]}):null}function ws(e){if(!(!Ts(e)||!Array.isArray(e.clientIntegrations)))return e.clientIntegrations.filter(e=>Ts(e)&&e.ok===!1).map(e=>({client:typeof e.client==`string`?e.client:``,...Number.isSafeInteger(e.profileId)&&e.profileId>=0?{profileId:e.profileId}:{},...typeof e.reason==`string`?{reason:e.reason}:{},...typeof e.refusalReason==`string`?{refusalReason:e.refusalReason}:{},...typeof e.snapshotPath==`string`?{snapshotPath:e.snapshotPath}:{},...e.residual===!0?{residual:!0}:{}}))}function Ts(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Es(e){if(!Array.isArray(e)||e.some(e=>typeof e!=`string`))throw Error(`invalid model list`);return[...new Set(e)]}function Ds(e){if(!Ts(e))throw Error(`invalid selected models response`);let t=e.selected;if(!Ts(t))throw Error(`invalid selected models response`);return Object.fromEntries(Object.entries(t).map(([e,t])=>[e,Es(t)]))}async function Os(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 Ds(await r.json())}function ks(e,t,n,r=!1){if(r)return!0;let i=e[t];return!i||i.length===0||i.includes(n)}function As(e,t,n,r,i){return ks(e,t,n,r)&&!i}async function js(e,t,n,r,i,a=fetch,o){return a(`${e}/api/model-visibility`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({scope:t,provider:n,targets:r,enabled:i}),...o?{signal:o}:{}})}function Ms(e,t){return e===t}function Ns(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`Invalid model response`);return e}function Ps(e){if(typeof e!=`string`||!e.trim())throw Error(`Invalid model identity`);return e}function Fs(e){if(!Array.isArray(e))throw Error(`Invalid model inventory`);let t=new Map,n=[];for(let r of e){let e=Ns(r),i=Ps(e.provider),a=Ps(e.id),o=Ps(e.namespaced);if(typeof e.disabled!=`boolean`)throw Error(`Invalid model visibility`);for(let t of[`native`,`custom`,`initialSelectionPending`,`contextCapped`])if(e[t]!==void 0&&typeof e[t]!=`boolean`)throw Error(`Invalid model flag`);if(e.custom===!0&&Ps(e.customId),e.customId!==void 0&&(e.custom!==!0||typeof e.customId!=`string`))throw Error(`Invalid custom ownership`);if(e.custom===!0&&e.native===!0)throw Error(`Conflicting model ownership`);if(e.displayName!==void 0&&typeof e.displayName!=`string`)throw Error(`Invalid model label`);for(let t of[`inputModalities`,`reasoningEfforts`])if(e[t]!==void 0&&(!Array.isArray(e[t])||e[t].some(e=>typeof e!=`string`)))throw Error(`Invalid model metadata`);for(let t of[`contextWindow`,`contextCap`])if(e[t]!==void 0&&(typeof e[t]!=`number`||!Number.isFinite(e[t])))throw Error(`Invalid model context`);let s={...e,provider:i,id:a,namespaced:o,disabled:e.disabled},c=t.get(i)??new Map,l=c.get(o);if(l&&(l.id!==a||l.disabled!==s.disabled||!!l.native!=!!s.native||!!l.custom!=!!s.custom||l.customId!==s.customId||!!l.initialSelectionPending!=!!s.initialSelectionPending))throw Error(`Conflicting model selector`);l||(c.set(o,s),n.push(s)),t.set(i,c)}return n}function Is(e){let t=new Map;for(let n of e){let e=t.get(n.provider)??new Set;n.disabled||e.add(n.namespaced),t.set(n.provider,e)}return Object.fromEntries([...t].map(([e,t])=>[e,t.size]))}function Ls(e){let t=Ns(e),n=Object.assign(Object.create(null),Ds(t));for(let[e,t]of Object.entries(n))Ps(e),t.forEach(Ps);let r=Object.fromEntries(Object.entries(Ns(t.available)).map(([e,t])=>{if(Ps(e),!Array.isArray(t))throw Error(`Invalid available models`);return[e,t.map(Ps)]})),i=Object.hasOwn(t,`liveModelCounts`)?Ns(t.liveModelCounts):{},a=Object.fromEntries(Object.entries(i).map(([e,t])=>{if(Ps(e),typeof t!=`number`||!Number.isInteger(t)||t<0)throw Error(`Invalid discovery count`);return[e,t]}));return{available:Object.assign(Object.create(null),r),selected:n,liveModelCounts:Object.assign(Object.create(null),a)}}function Rs(e){let t=Ns(e);return{id:Ps(t.id),provider:Ps(t.provider),modelId:Ps(t.modelId)}}function zs(e){if(!Array.isArray(e))throw Error(`Invalid custom model inventory`);let t=new Map,n=new Set;for(let r of e){let e=Rs(r),i=JSON.stringify([e.provider,e.modelId]);if(t.has(e.id)||n.has(i))throw Error(`Duplicate custom ownership`);t.set(e.id,e),n.add(i)}return[...t.values()]}function Bs(e,t,n){let r=Rs(e);if(r.provider!==t||r.modelId!==n)throw Error(`Unexpected created model`);return r}function Vs(e){if(!e||typeof e!=`object`||Array.isArray(e))return!0;let t=e.catalogRefresh;if(!t||typeof t!=`object`||Array.isArray(t))return!0;let n=t;return n.status!==`committed`||typeof n.changed!=`boolean`||typeof n.degraded!=`boolean`}var Hs=[{id:`az`,labelKey:`pws.sort.az`},{id:`za`,labelKey:`pws.sort.za`},{id:`free-paid`,labelKey:`pws.sort.freePaid`},{id:`paid-free`,labelKey:`pws.sort.paidFree`},{id:`accounts-first`,labelKey:`pws.sort.accountsFirst`}];function Us(e){return Y(Ua(e))}function Ws({providers:e,apiBase:t,defaultProvider:n,selectedName:r,onSelect:i,onRemoveProvider:a,onAddProvider:o,onEditConfig:s,jsonEditor:c,jsonSaving:l=!1,modelsRefreshToken:u=0,onModelsSettled:d,activeAccountNeedsReauth:f,quotaRefreshEpoch:p=0,quotaForceRefresh:m=!1,onQuotaRefreshSettled:h,onRefreshAllQuotas:g,detail:_}){let v=O(),[y,b]=(0,Z.useState)(``),[x,S]=(0,Z.useState)({ready:!0,needsSetup:!0,disabled:!0}),[C,w]=(0,Z.useState)({free:!0,paid:!0}),[T,E]=(0,Z.useState)({cloud:!0,local:!0,selfHosted:!0,login:!0}),[D,k]=(0,Z.useState)(`az`),[j,M]=(0,Z.useState)(!1),[N,I]=(0,Z.useState)(null),[L,R]=(0,Z.useState)(null),[z,V]=(0,Z.useState)(!1),[H,U]=(0,Z.useState)(!1),te=`ocx.providers.quotas.v1:${t}`,K=`ocx.providers.usage.v2:${t}`,[q,J]=(0,Z.useState)(()=>dr(Ua(K))),[re,ae]=(0,Z.useState)(()=>Ua(K)?.totals??{}),[oe,se]=(0,Z.useState)(()=>Ua(K)?.models??{}),[ce,le]=(0,Z.useState)(()=>Us(te)??{}),[ue,de]=(0,Z.useState)(()=>!Ua(K)),[fe,pe]=(0,Z.useState)(()=>{let e=Us(te);return!e||Object.keys(e).length===0}),[me,he]=(0,Z.useState)(0),ge=JSON.stringify([t,u,me]),_e=L?.revision===ge&&!z&&!H,ve=(0,Z.useMemo)(()=>Is(L?.rows??[]),[L]),ye=(0,Z.useRef)(d);(0,Z.useEffect)(()=>{ye.current=d},[d]);let xe=(0,Z.useRef)(null),Se=Vt(hr(t),[t],async e=>await mr(await fetch(t+`/api/usage?range=30d`,{signal:e})),{deadlineMs:6e4}),Ce=(0,Z.useMemo)(()=>{let t=ct(P(e));return ne(t,f??{})},[e,f]),we=(0,Z.useCallback)(()=>{V(!0),U(!1),he(e=>e+1)},[]);(0,Z.useEffect)(()=>{let e=!1,n=A(6e4),r=window.setTimeout(()=>{V(!0),(async()=>{let r=!1;try{let[i,a]=await Promise.all([fetch(`${t}/api/selected-models`,{signal:n.signal}).then(hn).then(Ls),fetch(`${t}/api/models`,{signal:n.signal}).then(hn).then(Fs)]);if(e)return;R({revision:ge,selection:i,rows:a}),U(!1),r=!0}catch{if(e)return;U(!0)}finally{n.controller.abort(),n.clear(),e||(V(!1),ye.current?.(r))}})()},0);return()=>{e=!0,window.clearTimeout(r),n.controller.abort(),n.clear()}},[t,ge]),(0,Z.useEffect)(()=>{let e=!1,t=window.setTimeout(()=>{let t=Se.data;if(e)return;if(!t){Se.loading&&de(!Ua(K));return}let n=Vo(t.providers??[]);ae(n);let r=Ho(t.models??[],n);se(r);let i=dr(t);J(i),qa(K,{totals:n,models:r,...i}),de(!1)},0);return()=>{e=!0,window.clearTimeout(t)}},[t,K,Se.data,Se.loading]),(0,Z.useEffect)(()=>{let e=!1,n=window.setTimeout(()=>{let n=Us(te);(!n||Object.keys(n).length===0)&&pe(!0);let i=A(2e4);r=()=>{i.controller.abort(),i.clear()},fetch(`${t}/api/provider-quotas${m?`?refresh=1`:``}`,{signal:i.signal}).then(e=>gn(e)).then(t=>{if(e)return;if(!t){m&&h?.(!1,p);return}let n=ie(t.reports);le(n),qa(te,n),m&&h?.(!0,p)}).catch(()=>{e||(le(e=>{let t=Y(e)??{};return qa(te,t),t}),m&&h?.(!1,p))}).finally(()=>{i.clear(),e||pe(!1)})},0),r;return()=>{e=!0,window.clearTimeout(n),r?.()}},[t,p,m,te,h]),(0,Z.useEffect)(()=>{if(!j)return;let e=e=>{xe.current&&!xe.current.contains(e.target)&&M(!1)},t=e=>{e.key===`Escape`&&M(!1)};return document.addEventListener(`mousedown`,e),window.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),window.removeEventListener(`keydown`,t)}},[j]);let Te=(0,Z.useMemo)(()=>[...Ce.ready,...Ce.needsSetup,...Ce.disabled],[Ce]),Ee=(0,Z.useMemo)(()=>Te.filter(G).length,[Te]),De=Te.length-Ee,Oe=(0,Z.useMemo)(()=>{let e={cloud:0,local:0,selfHosted:0,login:0};for(let t of Te)e[ee(t)]+=1;return e},[Te]),Ae=(0,Z.useMemo)(()=>{let e=y.trim().toLowerCase(),t=t=>{let n=t.filter(t=>{if(e&&!t.name.toLowerCase().includes(e)&&!t.adapter.toLowerCase().includes(e))return!1;let n=G(t);return!(n&&!C.free||!n&&!C.paid||!T[ee(t)])});return W(n,D)};return{ready:x.ready?t(Ce.ready):[],needsSetup:x.needsSetup?t(Ce.needsSetup):[],disabled:x.disabled?t(Ce.disabled):[]}},[Ce,y,x,C,T,D]),je=!x.ready||!x.needsSetup||!x.disabled||!C.free||!C.paid||!T.cloud||!T.local||!T.selfHosted||!T.login||D!==`az`,Me=()=>{S({ready:!0,needsSetup:!0,disabled:!0}),w({free:!0,paid:!0}),E({cloud:!0,local:!0,selfHosted:!0,login:!0}),k(`az`)},Ne=(0,Z.useMemo)(()=>r?Te.find(e=>e.name===r)??null:null,[r,Te]),Pe=(0,Z.useMemo)(()=>{let e=new Map;for(let t of Te){let n=be(t.name,v);e.set(n,(e.get(n)??0)+1)}let t=new Set;for(let[n,r]of e.entries())r>1&&t.add(n);return t},[Te,v]);if(Te.length===0)return(0,Q.jsx)(Gs,{onAddProvider:o});let Fe=[{key:`ready`,label:v(`pws.status.ready`),count:Ce.ready.length},{key:`needsSetup`,label:v(`pws.status.needsSetup`),count:Ce.needsSetup.length},{key:`disabled`,label:v(`prov.disabledBadge`),count:Ce.disabled.length}],Ie=[{id:`ready`,label:v(`pws.status.ready`),count:Ae.ready.length,ariaLabel:v(`pws.groupReady`,{count:Ae.ready.length}),items:Ae.ready},{id:`needs-setup`,label:v(`pws.status.needsSetup`),count:Ae.needsSetup.length,ariaLabel:v(`pws.groupNeedsSetup`,{count:Ae.needsSetup.length}),items:Ae.needsSetup},{id:`disabled`,label:v(`prov.disabledBadge`),count:Ae.disabled.length,ariaLabel:v(`pws.groupDisabled`,{count:Ae.disabled.length}),items:Ae.disabled}],Le=Ie.flatMap(e=>e.items.map(e=>e.name)),Re=N&&Le.includes(N)?N:r&&Le.includes(r)?r:Le[0]??null;return(0,Q.jsx)(`div`,{className:`pws-shell-container`,children:(0,Q.jsxs)(`div`,{className:`pws-root`,children:[(0,Q.jsxs)(`aside`,{className:`pws-rail`,"aria-label":v(`pws.providerList`),children:[(0,Q.jsxs)(`div`,{className:`pws-search-row`,children:[(0,Q.jsxs)(`div`,{className:`pws-search-wrap`,children:[(0,Q.jsx)(X,{className:`pws-search-icon`,width:14,height:14,"aria-hidden":`true`}),(0,Q.jsx)(`input`,{type:`search`,className:`input pws-search-input`,placeholder:v(`pws.searchPlaceholder`),value:y,onChange:e=>b(e.target.value),"aria-label":v(`pws.searchPlaceholder`)})]}),(0,Q.jsxs)(`div`,{className:`pws-filter-wrap`,ref:xe,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`pws-filter-btn${je||j?` pws-filter-btn--active`:``}`,onClick:()=>M(e=>!e),"aria-label":v(`pws.filterAria`),"aria-expanded":j,"aria-controls":`pws-provider-filters`,children:[(0,Q.jsx)(ke,{width:18,height:18,"aria-hidden":`true`}),je&&(0,Q.jsx)(`span`,{className:`pws-filter-dot`,"aria-hidden":`true`})]}),j&&(0,Q.jsxs)(`div`,{id:`pws-provider-filters`,className:`pws-filter-menu`,role:`group`,"aria-label":v(`pws.providerFiltersAria`),children:[(0,Q.jsx)(`div`,{className:`pws-filter-title`,children:v(`pws.filters`)}),(0,Q.jsx)(`div`,{className:`pws-filter-head`,children:v(`pws.filterStatus`)}),Fe.map(({key:e,label:t,count:n})=>(0,Q.jsxs)(`label`,{className:`pws-filter-option`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:x[e],onChange:()=>S(t=>({...t,[e]:!t[e]}))}),(0,Q.jsx)(`span`,{className:`pws-filter-label`,children:t}),(0,Q.jsx)(`span`,{className:`pws-filter-count`,children:n})]},e)),(0,Q.jsx)(`div`,{className:`pws-filter-head`,children:v(`pws.pricing`)}),(0,Q.jsxs)(`label`,{className:`pws-filter-option`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:C.free,onChange:()=>w(e=>({...e,free:!e.free}))}),(0,Q.jsx)(`span`,{className:`pws-filter-label`,children:v(`modal.badge.free`)}),(0,Q.jsx)(`span`,{className:`pws-filter-count`,children:Ee})]}),(0,Q.jsxs)(`label`,{className:`pws-filter-option`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:C.paid,onChange:()=>w(e=>({...e,paid:!e.paid}))}),(0,Q.jsx)(`span`,{className:`pws-filter-label`,children:v(`pws.paid`)}),(0,Q.jsx)(`span`,{className:`pws-filter-count`,children:De})]}),(0,Q.jsx)(`div`,{className:`pws-filter-head`,children:v(`pws.filterType`)}),[{key:`cloud`,label:v(`pws.type.cloud`),count:Oe.cloud},{key:`local`,label:v(`pws.type.local`),count:Oe.local},{key:`selfHosted`,label:v(`pws.type.selfHosted`),count:Oe.selfHosted},{key:`login`,label:v(`pws.type.login`),count:Oe.login}].map(({key:e,label:t,count:n})=>(0,Q.jsxs)(`label`,{className:`pws-filter-option`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:T[e],onChange:()=>E(t=>({...t,[e]:!t[e]}))}),(0,Q.jsx)(`span`,{className:`pws-filter-label`,children:t}),(0,Q.jsx)(`span`,{className:`pws-filter-count`,children:n})]},e)),(0,Q.jsx)(`div`,{className:`pws-filter-head`,children:v(`pws.sort`)}),(0,Q.jsx)(`div`,{className:`pws-sort-grid`,role:`group`,"aria-label":v(`pws.sortProvidersAria`),children:Hs.map(e=>(0,Q.jsx)(`button`,{type:`button`,className:`pws-sort-btn${D===e.id?` pws-sort-btn--active`:``}`,onClick:()=>k(e.id),"aria-pressed":D===e.id,children:v(e.labelKey)},e.id))}),(0,Q.jsx)(`div`,{className:`pws-filter-footer`,children:(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:Me,disabled:!je,children:v(`pws.resetAll`)})})]})]})]}),(0,Q.jsxs)(`div`,{className:`pws-rail-list`,role:`listbox`,"aria-label":v(`pws.providersAria`),onKeyDown:e=>{let t=Array.from(e.currentTarget.querySelectorAll(`[role="option"]`));if(t.length===0)return;let n=document.activeElement,r=t.findIndex(e=>e===n||e.contains(n));if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let n=e.key===`ArrowDown`?1:-1;t[r<0?n>0?0:t.length-1:(r+n+t.length)%t.length]?.focus();return}if(e.key===`Home`){e.preventDefault(),t[0]?.focus();return}e.key===`End`&&(e.preventDefault(),t[t.length-1]?.focus())},children:[Object.values(Ae).every(e=>e.length===0)&&(0,Q.jsx)(`span`,{className:`muted pws-rail-empty`,role:`status`,children:v(y?`pws.noSearchResults`:je?`pws.noMatchFilters`:`pws.noProvidersConfigured`)}),Ie.map(({id:e,label:t,count:o,ariaLabel:s,items:c})=>c.length===0?null:(0,Q.jsxs)(`div`,{className:`pws-rail-group`,role:`group`,"aria-label":s,children:[(0,Q.jsxs)(`div`,{className:`pws-rail-group-head`,"aria-hidden":`true`,children:[(0,Q.jsx)(`span`,{className:`pws-rail-group-label`,children:t}),(0,Q.jsx)(`span`,{className:`pws-rail-group-count`,children:o})]}),c.map(e=>(0,Q.jsxs)(`div`,{className:`pws-rail-row-wrap`,children:[(0,Q.jsx)(B,{item:e,selected:r===e.name,tabbable:Re===e.name,modelCount:L?Object.hasOwn(ve,e.name)?ve[e.name]:0:void 0,isDefault:n===e.name,showConfigId:Pe.has(be(e.name,v)),onClick:()=>i(e.name),onFocus:()=>I(e.name)}),a&&(0,Q.jsx)(`button`,{type:`button`,className:`pws-rail-row-remove`,tabIndex:-1,"aria-hidden":`true`,onClick:t=>{t.stopPropagation(),a(e.name)},title:v(`pws.removeConfirmTitle`),children:(0,Q.jsx)(F,{width:14,height:14})})]},e.name))]},e))]})]}),(0,Q.jsxs)(`main`,{className:`pws-main`,"aria-label":v(`pws.workspaceMainAria`),children:[!c?.open&&(0,Q.jsx)(gr,{data:q}),c?.open?(0,Q.jsx)(Cs,{editor:c,providerName:v(`nav.providers`),saving:l,onSave:()=>{c.onSave()}}):Ne?_?.(Ne,{usageTotals:re[Ne.name],modelUsage:oe[Ne.name],quotaReport:ce[Ne.name],availableModels:L?.selection.available[Ne.name]??[],hasLiveModels:(L?.selection.liveModelCounts[Ne.name]??0)>0,selectedModels:L?.selection.selected[Ne.name]??[],modelRows:L?.rows.filter(e=>e.provider===Ne.name)??null,modelRevision:ge,modelRowsReady:_e,modelsLoading:z||!_e&&!H,modelsLoadFailed:H,onRetryModels:we})??(0,Q.jsxs)(`div`,{className:`pws-detail-placeholder`,children:[(0,Q.jsx)(`h3`,{children:be(Ne.name,v)}),(0,Q.jsx)(`p`,{className:`muted`,children:v(`pws.detailComingSoon`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>i(null),children:v(`modal.back`)})]}):(0,Q.jsx)(xs,{sections:Ce,quotaReports:ce,usageTotals:re,usageLoading:ue,quotasLoading:fe,onSelectProvider:e=>i(e),onEditConfig:s,...g?{onRefreshAllQuotas:g}:{}})]})]})})}function Gs({onAddProvider:e}){let t=O();return(0,Q.jsx)(`div`,{className:`pws-empty-root`,children:(0,Q.jsxs)(`div`,{className:`pws-empty-hero`,children:[(0,Q.jsx)(`div`,{"aria-hidden":`true`,children:(0,Q.jsx)(Ie,{style:{width:64,height:64}})}),(0,Q.jsx)(`h2`,{children:t(`pws.connectFirst`)}),(0,Q.jsxs)(`div`,{className:`pws-empty-tiles`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`pws-empty-tile`,onClick:()=>e({tier:`free`}),children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:(0,Q.jsx)(qe,{width:18,height:18})}),(0,Q.jsx)(`span`,{className:`pws-empty-tile-label`,children:t(`pws.empty.browseFree`)}),(0,Q.jsx)(`span`,{className:`pws-empty-tile-desc muted`,children:t(`pws.empty.browseFreeDesc`)})]}),(0,Q.jsxs)(`button`,{type:`button`,className:`pws-empty-tile`,onClick:()=>e({tier:`accounts`}),children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:(0,Q.jsx)(at,{width:18,height:18})}),(0,Q.jsx)(`span`,{className:`pws-empty-tile-label`,children:t(`pws.empty.connectAccount`)}),(0,Q.jsx)(`span`,{className:`pws-empty-tile-desc muted`,children:t(`pws.empty.connectAccountDesc`)})]}),(0,Q.jsxs)(`button`,{type:`button`,className:`pws-empty-tile`,onClick:()=>e({custom:!0}),children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:(0,Q.jsx)(tt,{width:18,height:18})}),(0,Q.jsx)(`span`,{className:`pws-empty-tile-label`,children:t(`pws.empty.addEndpoint`)}),(0,Q.jsx)(`span`,{className:`pws-empty-tile-desc muted`,children:t(`pws.empty.addEndpointDesc`)})]})]})]})})}function Ks(e){if(_e(e.name,e))return`codex-accounts`;let t=(e.authMode??``).toLowerCase();if(t===`forward`||t===`local`||H(e))return null;if(t===`oauth`)return`oauth-accounts`;let n=e.hasApiKey===!0,r=t===`key`||n||t===``,i=e.keyOptional===!0||Je(e);return!r||i&&!n?null:`api-keys`}function qs(e,t,n){let r=t.alias?.trim();if(r)return r;let i=t.email?.trim();if(i)return i;let a=e.findIndex(e=>e.id===t.id);return n(`pws.accountOrdinal`,{count:String(a>=0?a+1:1)})}function Js({quota:e,quotaMode:t,quotaUnavailable:n,quotaPending:r,quotaFailure:i}){let a=O(),o=ae({quota:e});if(t===`unsupported`)return(0,Q.jsx)(`p`,{className:`muted`,"data-quota-state":`unsupported`,children:a(`pws.quotaUnsupported`)});let s=t===`probe`&&n?jr(i):void 0,c=t===`probe`&&r===!0;return(0,Q.jsxs)(`div`,{"data-quota-state":n?`unavailable`:c?`pending`:o?`ready`:t===`passive`?`unobserved`:`unknown`,children:[n&&(0,Q.jsx)(`p`,{className:`muted pwi-auth-acct-quota-stale`,children:a(s?`pws.quotaFailure.${s}`:`pws.accountQuotaUnavailable`)}),o||c?(0,Q.jsx)(bs,{report:{quota:o,updatedAt:o?.updatedAt,...t===`passive`?{observed:!0}:{}},pending:c&&!o}):!n&&(0,Q.jsx)(`p`,{className:`muted`,children:a(t===`passive`?`pws.quotaUnobserved`:`pws.quotaUnavailable`)}),n&&o&&(0,Q.jsxs)(`p`,{className:`muted`,children:[a(`pws.stats.quotaUpdated`),`: `,Go(o.updatedAt,Ko(a))]})]})}function Ys({report:e,reading:t,onRefreshQuota:n}){let r=O(),i=M(e),a=t!==void 0&&(t.quotaMode!==void 0||t.quota!==void 0||t.quotaUnavailable!==void 0||t.quotaPending!==void 0),o=a?t:{quota:ae(i),...i?.observed===!0?{quotaMode:`passive`}:{}},s=ae({quota:o.quota}),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(null),f=async()=>{if(!(!n||c)){l(!0),d(null);try{d(await n())}catch{d(!1)}finally{l(!1)}}};return(0,Q.jsxs)(`section`,{className:`pws-usage-block`,"aria-label":r(`pws.currentAccountUsage`),children:[(0,Q.jsxs)(`div`,{className:`pws-usage-block-head`,children:[(0,Q.jsx)(`h3`,{className:`pws-section-title`,children:r(`pws.currentAccountUsage`)}),n&&o.quotaMode!==`unsupported`&&(0,Q.jsxs)(`div`,{className:`pws-quota-refresh`,children:[u!==null&&(0,Q.jsx)(`span`,{role:`status`,className:u?`pws-status-ok`:`pws-status-warn`,children:r(u?`pws.quotaCheckCompleted`:`codexAuth.quotaRefreshFailed`)}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:c,onClick:()=>{f()},children:[(0,Q.jsx)(re,{width:14,height:14,"aria-hidden":`true`}),` `,r(c?`codexAuth.refreshingQuota`:`codexAuth.refreshQuota`)]})]})]}),(0,Q.jsx)(Js,{...o}),s&&!o.quotaUnavailable&&o.quotaMode!==`unsupported`&&(0,Q.jsxs)(`dl`,{className:`pws-kv pws-usage-meta`,children:[!a&&i?.source?.trim()&&(0,Q.jsxs)(`div`,{className:`pws-kv-row`,children:[(0,Q.jsx)(`dt`,{children:r(`pws.stats.source`)}),(0,Q.jsx)(`dd`,{children:Le(i.source)})]}),(0,Q.jsxs)(`div`,{className:`pws-kv-row`,children:[(0,Q.jsx)(`dt`,{children:r(`pws.stats.quotaUpdated`)}),(0,Q.jsx)(`dd`,{children:Go(s.updatedAt,Ko(r))})]})]})]})}function Xs(e,t){let n=e=>{try{let t=new URL(e.trim());return t.username||t.password||t.search||t.hash?void 0:`${t.origin}${t.pathname.replace(/\/+$/,``)}`}catch{return}},r=n(e.baseUrl);if(r)return t.find(t=>t.id===e.name&&t.adapter===e.adapter&&n(t.baseUrl)===r)}function Zs(e){return{adapter:e.adapter,baseUrl:e.baseUrl,authMode:e.auth,freeTier:!!e.freeTier,keyOptional:!!e.keyOptional}}function Qs(e){return ye(e.id,Zs(e))}function $s(e){return H(Zs(e))}function ec(e){let t={accounts:[],free:[],local:[],paid:[]};for(let n of e){let e=Qs(n);t[e===`accounts`?`accounts`:$s(n)?`local`:e].push(n)}return t}function tc(e){return!!e?.trim()}var nc=new Set([`local`,`localhost`,`ollama`,`vllm`,`lmstudio`,`lm studio`,`self-hosted`,`selfhosted`]);function rc(e,t){let n=t.trim().toLowerCase();return!n||e.label.toLowerCase().includes(n)||e.id.toLowerCase().includes(n)||e.adapter.toLowerCase()===n?!0:nc.has(n)&&$s(e)}function ic(e,t){let n=t.trim().toLowerCase();if(!n)return e;let r=e=>{let t=e.label.toLowerCase(),r=e.id.toLowerCase();return r===n||t===n?0:t.startsWith(n)||r.startsWith(n)?1:2};return e.map((e,t)=>({preset:e,index:t})).sort((e,t)=>r(e.preset)-r(t.preset)||e.index-t.index).map(e=>e.preset)}function ac(e,t,n){let r=t.trim().toLowerCase();return r?e.filter(e=>e.id===n||e.label.toLowerCase().includes(r)||e.id.toLowerCase().includes(r)):[...e]}function oc(e,t){if(t.length===0)return e;let n=new Set(t.map(e=>e.id));return e.filter(e=>!n.has(e.id))}var sc={main:0,standard:1};function cc(e){let t=e.filter(e=>e.sponsor);return t.length===0?e:(t.sort((e,t)=>sc[e.sponsor]-sc[t.sponsor]||e.label.localeCompare(t.label,void 0,{sensitivity:`base`})||e.id.localeCompare(t.id)),[...t,...e.filter(e=>!e.sponsor)])}var lc={name:`OrcaRouter`,title:`pws.sponsor.orcaTitle`,description:`pws.sponsor.orcaDescription`},uc={orcarouter:lc,"orcarouter-oauth":lc,tokenlab:{name:`TokenLab`,title:`pws.sponsor.tokenlabTitle`,description:`pws.sponsor.tokenlabDescription`}};function dc(e){if(e)try{let t=new URL(e);return(t.protocol===`https:`||t.protocol===`http:`)&&!t.username&&!t.password?e:void 0}catch{return}}function fc({item:e,preset:t}){let n=O();if(!t?.sponsor||!Xs(e,[t]))return null;let r=Object.hasOwn(uc,t.id)?uc[t.id]:void 0;if(!r)return null;let i=dc(t.sponsorUrl),a=dc(t.dashboardUrl);return(0,Q.jsxs)(`section`,{className:`pws-sponsor`,"aria-label":`${r.name} · ${n(`modal.badge.sponsor`)}`,children:[(0,Q.jsxs)(`div`,{className:`pws-sponsor-copy`,children:[(0,Q.jsxs)(`div`,{className:`pws-sponsor-byline`,children:[(0,Q.jsx)(`span`,{children:r.name}),(0,Q.jsx)(`span`,{className:`pws-sponsor-badge`,children:n(`modal.badge.sponsor`)})]}),(0,Q.jsx)(`h3`,{children:n(r.title)}),(0,Q.jsx)(`p`,{children:n(r.description)})]}),(i||a)&&(0,Q.jsxs)(`div`,{className:`pws-sponsor-actions`,children:[i&&(0,Q.jsxs)(`a`,{className:`btn btn-primary`,href:i,target:`_blank`,rel:`noopener noreferrer`,children:[n(`pws.sponsor.visit`,{provider:r.name}),(0,Q.jsx)(Ve,{width:14,height:14,"aria-hidden":`true`})]}),a&&a!==i&&(0,Q.jsxs)(`a`,{className:`pws-sponsor-console`,href:a,target:`_blank`,rel:`noopener noreferrer`,children:[n(`pws.sponsor.console`),(0,Q.jsx)(Ve,{width:13,height:13,"aria-hidden":`true`})]})]})]})}function pc({item:e,preset:n,usageTotals:r,quotaReport:i,currentQuotaReading:a,onRefreshQuota:o,oauthEmail:s,oauth:c,apiBase:l,connectionIdentity:u,onEditSettings:d,onViewUsage:f,onUpdateProvider:p,onCreateJevAuto:m,onReauthenticate:h,onCancelLogin:g,reauthBusy:_=!1}){let v=O(),{locale:y}=t(),b=ue(e),x=!!e.activeNeedsReauth,S=v(b===`ready`?`pws.status.connected`:b===`needs-setup`?x?`pws.status.needsAttention`:`pws.status.needsSetup`:`prov.disabledBadge`),C=r?.requests,w=r?.totalTokens,T=JSON.stringify([l??null,e.name,e.adapter,e.baseUrl,e.authMode??null,e.apiKeyTransport??null,e.liveModels??null,e.disabled===!0,e.hasApiKey===!0,e.hasHeaders===!0,e.allowPrivateNetwork===!0,e.keyOptional===!0,e.activeNeedsReauth===!0,u??null]),[E,D]=(0,Z.useState)(null),k=(0,Z.useRef)(null),A=E?.key===T&&E.testing,j=E?.key===T?E.result:null;(0,Z.useEffect)(()=>()=>{k.current?.key===T&&(k.current.controller.abort(),k.current=null)},[T]);let M=(0,Z.useCallback)(async()=>{if(!l)return;k.current?.controller.abort();let t=new AbortController;k.current={key:T,controller:t},D({key:T,testing:!0,result:null});try{let n=await hn(await fetch(`${l}/api/providers/test?name=${encodeURIComponent(e.name)}`,{method:`POST`,signal:t.signal}),v(`pws.connectionFailed`));if(!n)throw Error(v(`pws.connectionFailed`));t.signal.aborted||D({key:T,testing:!1,result:n})}catch(e){t.signal.aborted||D({key:T,testing:!1,result:{applicable:!0,ok:!1,error:e instanceof Error?e.message:v(`pws.connectionFailed`)}})}finally{k.current?.controller===t&&(k.current=null)}},[l,T,e.name,v]),N=j?.applicable===!1?`not-applicable`:j?.ok===!0?`ok`:`failed`,P=j?.applicable===!1?v(`pws.connectionNotApplicable`):j?.ok===!0?j.message||v(`pws.connectionOk`):j?.error||v(`pws.connectionFailed`);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(fc,{item:e,preset:n}),(0,Q.jsxs)(`div`,{className:`pws-overview-layout`,children:[(0,Q.jsxs)(`div`,{className:`pws-overview-main`,children:[(0,Q.jsxs)(`section`,{className:`pws-section`,"aria-label":v(`pws.connection`),children:[(0,Q.jsx)(`h3`,{className:`pws-section-title`,children:v(`pws.connection`)}),(0,Q.jsxs)(`dl`,{className:`pws-kv`,children:[(0,Q.jsxs)(`div`,{className:`pws-kv-row`,children:[(0,Q.jsx)(`dt`,{children:v(`dash.status`)}),(0,Q.jsxs)(`dd`,{className:b===`ready`?`pws-status-ok`:`pws-status-warn`,children:[b===`ready`?(0,Q.jsx)(Te,{style:{width:13,height:13},"aria-hidden":`true`}):(0,Q.jsx)(Ae,{style:{width:13,height:13},"aria-hidden":`true`}),S]})]}),(0,Q.jsxs)(`div`,{className:`pws-kv-row`,children:[(0,Q.jsx)(`dt`,{children:v(`modal.baseUrl`)}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(`code`,{children:e.baseUrl?.trim()?e.baseUrl:`—`})})]}),(0,Q.jsxs)(`div`,{className:`pws-kv-row`,children:[(0,Q.jsx)(`dt`,{children:v(`pws.cell.auth`)}),(0,Q.jsx)(`dd`,{children:s?`${R(e,v)} · ${s}`:R(e,v)})]}),(0,Q.jsxs)(`div`,{className:`pws-kv-row`,children:[(0,Q.jsx)(`dt`,{children:v(`modal.defaultModel`)}),(0,Q.jsx)(`dd`,{children:e.defaultModel??(0,Q.jsx)(`span`,{className:`muted`,children:`—`})})]})]}),l&&(0,Q.jsxs)(`div`,{className:`row`,style:{marginTop:12,alignItems:`center`},children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:A,onClick:()=>void M(),children:v(A?`pws.testing`:`pws.testConnection`)}),j&&(0,Q.jsx)(`span`,{role:`status`,className:N===`ok`?`pws-status-ok`:N===`failed`?`pws-status-warn`:`muted`,"data-connection-test-state":N,children:P})]}),d&&(0,Q.jsx)(`button`,{type:`button`,className:`link-btn pws-edit-settings-link`,onClick:d,children:v(`pws.editSettings`)})]}),e.adapter===`jev-decision`&&m&&(0,Q.jsxs)(`section`,{className:`pws-section`,"aria-label":v(`cws.jev.create`),children:[(0,Q.jsx)(`h3`,{className:`pws-section-title`,children:v(`cws.jev.create`)}),(0,Q.jsx)(`p`,{className:`muted`,style:{marginTop:0},children:v(`cws.jev.setupHint`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:m,children:v(`cws.jev.create`)})]}),(0,Q.jsxs)(`section`,{className:`pws-section`,"aria-label":v(`pws.authSummary`),children:[(0,Q.jsx)(`h3`,{className:`pws-section-title`,children:v(`pws.authSummary`)}),x?(0,Q.jsxs)(`div`,{className:`pws-auth-summary pws-auth-summary--warn`,role:`status`,children:[(0,Q.jsx)(Ae,{style:{width:14,height:14},"aria-hidden":`true`}),(0,Q.jsxs)(`div`,{className:`pws-auth-summary-body`,children:[(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`strong`,{children:v(`pws.status.needsAttention`)}),` — `,e.authMode===`forward`?v(`pws.attention.reauthForward`):v(`pws.attention.reauth`)]}),h&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:_,onClick:()=>h(),children:v(_?`prov.waitingBrowser`:`pws.reauthenticate`)}),_&&g&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>g(),children:v(`common.cancel`)})]})]}):(0,Q.jsxs)(`div`,{className:`pws-auth-summary`,children:[(0,Q.jsx)(`span`,{className:`pws-auth-dot`}),(0,Q.jsx)(`span`,{children:e.authMode===`forward`?v(`pws.passthrough`):e.authMode===`oauth`?s?v(`pws.loggedInAs`,{email:s}):c?.loggedIn?v(`pws.loggedInTitle`):v(`pws.notLoggedIn`):e.hasApiKey?v(`pws.apiKeyConfigured`):R(e,v)})]})]}),(0,Q.jsx)(mc,{item:e,onUpdateProvider:p})]}),(0,Q.jsxs)(`aside`,{className:`pws-overview-sidebar`,children:[(0,Q.jsxs)(`section`,{className:`pws-section`,"aria-label":v(`pws.statsAria`),children:[(0,Q.jsx)(`h3`,{className:`pws-section-title`,children:v(`pws.statsTitle`)}),(0,Q.jsxs)(`dl`,{className:`pws-kv`,children:[typeof C==`number`&&(0,Q.jsxs)(`div`,{className:`pws-kv-row`,children:[(0,Q.jsx)(`dt`,{children:v(`pws.stats.totalRequests`)}),(0,Q.jsx)(`dd`,{className:`pws-kv-mono`,children:Yo(C,y)})]}),typeof w==`number`&&(0,Q.jsxs)(`div`,{className:`pws-kv-row`,children:[(0,Q.jsx)(`dt`,{children:v(`pws.stats.totalTokens`)}),(0,Q.jsx)(`dd`,{className:`pws-kv-mono`,children:Xo(w,y)})]}),typeof C!=`number`&&typeof w!=`number`&&(0,Q.jsx)(`div`,{className:`muted`,children:v(`pws.usageUnavailable`)})]}),f&&(0,Q.jsxs)(`button`,{type:`button`,className:`link-btn pws-view-usage-link`,onClick:f,children:[v(`pws.viewUsage`),` →`]})]}),(0,Q.jsx)(Ys,{report:i,reading:a,onRefreshQuota:o},`${e.name}:${u??``}`)]})]})]})}function mc({item:e,onUpdateProvider:t}){let n=O(),[r,i]=(0,Z.useState)(!1),[a,o]=(0,Z.useState)(``),[s,c]=(0,Z.useState)(!1),[l,u]=(0,Z.useState)(``),d=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{r&&d.current?.focus()},[r]);let f=(0,Z.useCallback)(async()=>{if(s||!t)return;let r=a.trim();if(r===(e.note??``)){i(!1),u(``);return}c(!0);try{let a=await t(e.name,{note:r||void 0});if(!a.ok){u(a.error||n(`prov.saveFailed`));return}u(``),i(!1)}finally{c(!1)}},[a,e.name,e.note,t,s,n]);return r?(0,Q.jsxs)(`section`,{className:`pws-section pws-notes-section`,"aria-label":n(`pws.notes`),children:[(0,Q.jsx)(`h3`,{className:`pws-section-title`,children:n(`pws.notes`)}),(0,Q.jsx)(`textarea`,{ref:d,className:`pws-notes-textarea`,value:a,onChange:e=>o(e.target.value),onBlur:()=>void f(),onKeyDown:t=>{t.key===`Escape`&&(o(e.note??``),u(``),i(!1))},placeholder:n(`pws.notePlaceholder`),rows:3,disabled:s}),l?(0,Q.jsx)(`p`,{className:`pws-inline-error`,role:`alert`,children:l}):null]}):(0,Q.jsxs)(`section`,{className:`pws-section pws-notes-section`,"aria-label":n(`pws.notes`),children:[(0,Q.jsx)(`h3`,{className:`pws-section-title`,children:n(`pws.notes`)}),(0,Q.jsx)(`button`,{type:`button`,className:`pws-notes-display`,onClick:()=>{t&&(o(e.note??``),u(``),i(!0))},disabled:!t,children:e.note||(0,Q.jsx)(`span`,{className:`muted`,children:n(`pws.notePlaceholder`)})})]})}function hc(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`)}}function gc(e){return e.some(e=>e.pricingStatus!==void 0)}function _c(e,t){return t?e.filter(e=>e.pricingStatus===`free`):[...e]}function vc(e,t){return e&&gc(t)}function yc(e){return[...e].some(e=>{let t=e.codePointAt(0);return t<=31||t>=127&&t<=159||t===8232||t===8233})}function bc(e){let t=e.trim();return t?t.length>128?`models.displayNameTooLong`:t.includes(`/`)?`models.displayNameNoSlash`:yc(t)?`models.displayNameNoControl`:null:`models.displayNameRequired`}var xc=[`none`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`],Sc=Array.from({length:18},(e,t)=>1e5+t*5e4),Cc=new Set(Sc),wc=[272e3,372e3,922e3],Tc=new Set(wc),Ec=`custom`,Dc=[4,8,16,32,64,128,256,500,1e3],Oc=new Set(Dc);function kc(e,t){return t?Math.max(1,e-1):e}function Ac(e,t){return t?e+1:e}var jc=`ocx-models-collapsed:v2`;function Mc(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 Nc(e){let t=new Set;for(let n of e)n.disabled&&t.add(n.namespaced);return t}function Pc(e,t,n,r){let i=[];for(let a of e){let e=t.has(a.id)||t.has(a.namespaced);As(n,a.provider,a.id,a.native===!0,e)&&i.push({value:a.namespaced,label:r?xe(a.namespaced,r):a.namespaced})}return i}function Fc(e,t,n){let r=new Set(t.filter(e=>e.native===!0).map(e=>e.namespaced)),i=e.filter(e=>!r.has(e.value));return n&&!i.some(e=>e.value===n)&&i.push({value:n,label:e.find(e=>e.value===n)?.label??n}),i}function Ic(e=localStorage){try{let t=e.getItem(jc);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 Lc(e,t=localStorage){try{t.setItem(jc,JSON.stringify([...e]))}catch{}}function Rc(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 zc(e){return e.includes(`/`)?e.replaceAll(`/`,`-`):e}function Bc(e,t){let n=zc(e);for(let r of t)if(r!==e&&zc(r)===n)return!0;return!1}function Vc({row:e,disambiguate:t,copied:n,isDefault:r,selected:i,action:a,disabled:o,onCopy:s,onRemove:c}){let l=O(),u=l(a===`delete`?`models.customDelete`:`models.hide`);return(0,Q.jsxs)(`li`,{className:`pws-model-chip`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`pws-model-chip-main`,onClick:s,title:e.namespaced,"aria-label":l(n?`pws.modelCopied`:`pws.copyModelId`),children:(0,Q.jsx)(`span`,{className:`pws-model-id`,children:t?e.namespaced:e.id})}),r&&(0,Q.jsx)(`span`,{className:`badge badge-muted pws-model-flag`,children:l(`prov.defaultBadge`)}),i&&(0,Q.jsx)(`span`,{className:`badge badge-accent pws-model-flag`,children:l(`pws.selected`)}),a&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm btn-icon-only`,onClick:e=>c(e.currentTarget),disabled:o,"aria-label":`${u}: ${e.namespaced}`,title:`${u}: ${e.namespaced}`,children:a===`delete`?(0,Q.jsx)(F,{style:{width:13,height:13},"aria-hidden":`true`}):(0,Q.jsx)($e,{style:{width:13,height:13},"aria-hidden":`true`})})]})}var Hc=300;function Uc(e){return(0,Q.jsx)(Wc,{...e},JSON.stringify([e.apiBase,e.item.name]))}function Wc({item:e,apiBase:t,availableModels:n,selectedModels:r,modelRows:i,modelRevision:a,modelRowsReady:o,modelsLoading:s=!1,modelsLoadFailed:c=!1,needsReauth:l=!1,onRetryModels:u,onOpenAccounts:d,onOpenModels:f}){let p=O(),[m,h]=(0,Z.useState)(``),[g,_]=(0,Z.useState)(!1),[v,y]=(0,Z.useState)(``),[b,x]=(0,Z.useState)(0),S=JSON.stringify([t,e.name,a,b]),[C,w]=(0,Z.useState)(null),[T,E]=(0,Z.useState)(null),[D,k]=(0,Z.useState)(!1),[j,M]=(0,Z.useState)(null),[N,P]=(0,Z.useState)(null),F=(0,Z.useRef)(null),I=(0,Z.useRef)(!1),L=(0,Z.useRef)(!0),R=(0,Z.useRef)(a),z=(0,Z.useRef)(null),B=(0,Z.useRef)(null),V=(0,Z.useRef)(null),H=C?.key===S&&T!==S,U=i!==null&&o&&!s&&!c&&H,W=U&&(!j||a!==j.revision),G=D||!!j&&!W,ee=(i??[]).filter(t=>t.provider===e.name),te=ee.some(e=>e.initialSelectionPending),K=!U||G||te,q=C?.rows.filter(t=>t.provider===e.name)??[],ne=new Set(r),J=[...n,...e.models??[],...q.map(e=>e.modelId),...e.defaultModel?[e.defaultModel]:[]],Y=v.trim(),re=!!Y&&(J.includes(Y)||Bc(Y,J)),ie=ee.filter(e=>!e.disabled),X=gc(ie),ae=vc(g,ie),oe=_c(ie,ae),se=m.trim().toLowerCase(),ce=oe.filter(e=>[e.id,e.namespaced].some(e=>e.toLowerCase().includes(se))),le=new Map;for(let e of ie)le.set(e.id,(le.get(e.id)??0)+1);(0,Z.useEffect)(()=>{R.current=a},[a]),(0,Z.useEffect)(()=>{L.current=!0;let e=e=>{V.current&&e.target!==V.current.button&&e.target!==document.body&&(V.current.retained=!1)};return document.addEventListener(`focusin`,e),()=>{L.current=!1,document.removeEventListener(`focusin`,e),F.current!==null&&clearTimeout(F.current)}},[]),(0,Z.useEffect)(()=>{let e=!1,n=A(2e4);return fetch(`${t}/api/custom-models`,{signal:n.signal}).then(hn).then(zs).then(t=>{e||(w({key:S,rows:t}),E(null))}).catch(()=>{e||E(S)}).finally(()=>n.clear()),()=>{e=!0,n.controller.abort(),n.clear()}},[t,S]),(0,Z.useEffect)(()=>{!D&&W&&(I.current=!1);let e=V.current;e&&!e.button.isConnected&&(e.retained&&document.activeElement===document.body&&(z.current??B.current)?.focus(),V.current=null)},[D,W,i]);let ue=()=>{x(e=>e+1),u?.()},de=async e=>{try{if(await navigator.clipboard.writeText((le.get(e.id)??0)>1?e.namespaced:e.id),!L.current)return;P(e.namespaced),F.current!==null&&clearTimeout(F.current),F.current=setTimeout(()=>P(null),1200)}catch{}},fe=e=>e.custom===!0&&e.native!==!0&&q.some(t=>t.id===e.customId&&t.provider===e.provider&&t.modelId===e.id),pe=e=>!U||e.initialSelectionPending?null:e.custom?fe(e)?`delete`:null:e.native!==!0&&q.some(t=>t.modelId===e.id)?null:`hide`,me=e=>{if(!L.current){u?.();return}M({...e,revision:R.current}),k(!1),ue()},he=async()=>{if(K||I.current||!Y||re)return;I.current=!0,k(!0),M(null);let n=A(6e4),r={outcome:`unconfirmed`,refreshPending:!1};try{let i=await fetch(`${t}/api/custom-models`,{method:`POST`,signal:n.signal,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:e.name,modelId:Y})});if(i.status===201){let t=await hn(i),n=Bs(t,e.name,Y);if(C?.rows.some(e=>e.id===n.id))throw Error(`Reused custom identity`);r={outcome:`saved`,created:n,refreshPending:Vs(t)},L.current&&y(``)}else i.status>=400&&i.status<500&&(r={outcome:`rejected`,refreshPending:!1})}catch{}finally{n.clear(),me(r)}},ge=async(e,n)=>{let r=pe(e);if(K||I.current||!r)return;if(I.current=!0,!await aa({message:p(r===`delete`?`models.customDeleteConfirm`:`models.hideConfirm`,{name:e.namespaced}),confirmLabel:p(r===`delete`?`common.delete`:`common.ok`),tone:`danger`})){I.current=!1;return}k(!0),M(null),V.current={button:n,retained:document.activeElement===n};let i=A(6e4),a={outcome:`unconfirmed`,refreshPending:!1};try{let n=r===`delete`?await fetch(`${t}/api/custom-models/${encodeURIComponent(e.customId)}`,{method:`DELETE`,signal:i.signal}):await js(t,`models`,e.provider,[{id:e.id,native:e.native===!0}],!1,(e,t)=>fetch(e,{...t,signal:i.signal}));if(n.ok){let e=await hn(n);e&&typeof e==`object`&&!Array.isArray(e)&&`ok`in e&&e.ok===!0&&(a={outcome:r===`delete`?`deleted`:`hidden`,refreshPending:Vs(e)})}else n.status>=400&&n.status<500&&(a={outcome:`rejected`,refreshPending:!1})}catch{}finally{i.clear(),me(a)}},_e=j?.created&&W&&ee.some(e=>e.customId===j.created?.id&&e.disabled),ve=j&&(j.refreshPending||c||T===S),ye=j?j.outcome===`unconfirmed`?p(`pws.modelMutationUnconfirmed`):j.outcome===`rejected`?p(`models.customSaveFailed`):j.outcome===`saved`?p(ve?`pws.modelSavedRefreshPending`:_e?`pws.modelSavedHidden`:`pws.modelSaved`):p(ve?`pws.modelRemovedRefreshPending`:j.outcome===`deleted`?`pws.modelDefinitionDeleted`:`pws.modelHidden`):null;return(0,Q.jsxs)(`div`,{className:`pws-section`,children:[(0,Q.jsxs)(`div`,{className:`pws-section-head`,children:[(0,Q.jsx)(`h3`,{className:`pws-section-title`,children:p(`pws.tab.models`)}),i!==null&&(0,Q.jsx)(`span`,{className:`muted`,children:p(`pws.modelsAvailable`,{count:ie.length})})]}),(0,Q.jsx)(`div`,{className:`row`,children:(0,Q.jsx)(`button`,{ref:B,type:`button`,className:`btn btn-ghost btn-sm`,onClick:f,children:p(`pws.manageModelVisibility`)})}),l&&(0,Q.jsxs)(`div`,{className:`pws-inline-error`,role:`status`,children:[(0,Q.jsx)(`span`,{children:p(`pws.modelsNeedsReauth`)}),d&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:d,children:p(`pws.tab.accounts`)})]}),o&&n.length===0&&ie.length>0&&(e.models?.length??0)>0&&!l&&(0,Q.jsx)(`p`,{className:`muted text-label`,children:p(`pws.modelsConfiguredFallback`)}),te&&(0,Q.jsx)(`p`,{role:`status`,className:`muted`,children:p(`pws.modelSelectionPending`)}),(0,Q.jsx)(`label`,{className:`text-label pws-custom-model-label`,htmlFor:`pws-custom-model-${e.name}`,children:p(`models.customAdd`)}),(0,Q.jsxs)(`div`,{className:`row pws-custom-model-row`,children:[(0,Q.jsx)(`input`,{id:`pws-custom-model-${e.name}`,className:`input`,value:v,onChange:e=>y(e.target.value),onKeyDown:e=>{e.key===`Enter`&&he()},placeholder:p(`models.customFieldModelIdPlaceholder`),"aria-label":p(`models.customAdd`),disabled:D}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:()=>{he()},disabled:K||!Y||re,children:p(D?`models.customSaving`:`models.customAddBtn`)})]}),re&&(0,Q.jsx)(`p`,{className:`muted text-label`,role:`status`,children:p(`pws.modelKnown`)}),ye&&(0,Q.jsx)(`p`,{className:j?.outcome===`unconfirmed`||j?.outcome===`rejected`?`pws-inline-error`:`muted text-label`,role:j?.outcome===`unconfirmed`||j?.outcome===`rejected`?`alert`:`status`,children:ye}),_e&&ve&&(0,Q.jsx)(`p`,{className:`muted text-label`,role:`status`,children:p(`pws.modelSavedHidden`)}),j?.refreshPending&&(0,Q.jsx)(`p`,{className:`muted text-label`,role:`status`,children:p(`codexAuth.catalogRefreshPending`)}),c||T===S?(0,Q.jsxs)(`div`,{className:`pws-inline-error`,role:`alert`,children:[(0,Q.jsx)(`span`,{children:p(c?`pws.modelsLoadFailed`:`pws.modelOwnershipFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:ue,disabled:D,children:p(`common.retry`)})]}):(!U||G)&&(0,Q.jsx)(`p`,{className:`muted`,role:`status`,children:p(!o||s?`pws.modelsLoading`:`pws.modelOwnershipLoading`)}),j&&(j.outcome===`unconfirmed`||j.refreshPending)&&!c&&T!==S&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:ue,disabled:D,children:p(`common.retry`)}),X&&(0,Q.jsx)(`div`,{className:`row`,children:(0,Q.jsx)(on,{on:g,onClick:()=>_(!g),label:p(`models.freeOnly`),showLabel:!0})}),(0,Q.jsx)(`input`,{ref:z,type:`search`,className:`input pws-model-search`,placeholder:p(`pws.modelSearchPlaceholder`),value:m,onChange:e=>h(e.target.value),"aria-label":p(`pws.modelSearchPlaceholder`)}),i!==null&&ie.length===0?(0,Q.jsx)(`p`,{className:`muted`,children:p(`pws.noModels`)}):ce.length===0&&i!==null?(0,Q.jsx)(`p`,{className:`muted`,role:`status`,children:p(ae&&oe.length===0?`models.noFreeMatch`:`pws.noModelMatch`)}):(0,Q.jsx)(`ul`,{className:`pws-model-list`,children:ce.slice(0,Hc).map(t=>(0,Q.jsx)(Vc,{row:t,disambiguate:(le.get(t.id)??0)>1,copied:N===t.namespaced,isDefault:t.id===e.defaultModel,selected:t.native!==!0&&ne.has(t.id),action:pe(t),disabled:K,onCopy:()=>{de(t)},onRemove:e=>{ge(t,e)}},t.namespaced))}),ce.length>Hc&&(0,Q.jsx)(`p`,{className:`muted text-label`,style:{marginTop:10},children:p(`pws.modelsTruncated`,{shown:String(Hc),total:String(ce.length)})})]})}function Gc({item:e,usageTotals:n,quotaReport:r,currentQuotaReading:i,quotaIdentity:a,modelUsage:o,onRefreshQuota:s}){let c=O(),{locale:l}=t(),u=n?.requests!==void 0,[d,f]=(0,Z.useState)(null),p=(0,Z.useMemo)(()=>o?.length?o.toSorted((e,t)=>t.totalTokens-e.totalTokens):[],[o]),m=(0,Z.useMemo)(()=>{if(!p.length)return;let e=0,t=!1;for(let n of p)n.estimatedCostUsd!==void 0&&(e+=n.estimatedCostUsd,t=!0);return t?e:void 0},[p]);return(0,Q.jsxs)(`div`,{className:`pws-section`,children:[(0,Q.jsxs)(`div`,{className:`pws-usage-block`,children:[(0,Q.jsx)(`h3`,{className:`pws-section-title`,children:c(`pws.usageLast30d`)}),u?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`pws-usage-metrics pws-usage-metrics-3`,role:`group`,"aria-label":c(`pws.usageLast30d`),children:[(0,Q.jsxs)(`div`,{className:`pws-usage-metric`,children:[(0,Q.jsx)(`span`,{className:`pws-usage-metric-value mono`,children:Zo(m,l)}),(0,Q.jsx)(`span`,{className:`muted pws-usage-metric-label`,children:c(`pws.estimatedCost`)})]}),(0,Q.jsxs)(`div`,{className:`pws-usage-metric`,children:[(0,Q.jsx)(`span`,{className:`pws-usage-metric-value`,children:Yo(n?.requests,l)}),(0,Q.jsx)(`span`,{className:`muted pws-usage-metric-label`,children:c(`pws.metricRequests`)})]}),(0,Q.jsxs)(`div`,{className:`pws-usage-metric`,children:[(0,Q.jsx)(`span`,{className:`pws-usage-metric-value`,children:Xo(n?.totalTokens,l)}),(0,Q.jsx)(`span`,{className:`muted pws-usage-metric-label`,children:c(`pws.metricTokens`)})]})]}),(0,Q.jsx)(`p`,{className:`muted pws-cost-disclaimer`,children:c(`pws.costDisclaimer`)})]}):(0,Q.jsx)(`p`,{className:`muted`,children:c(`pws.usageUnavailable`)})]}),p.length>0&&(0,Q.jsxs)(`div`,{className:`pws-usage-block`,children:[(0,Q.jsx)(`h3`,{className:`pws-section-title`,children:c(`pws.modelBreakdown`)}),(0,Q.jsx)(`div`,{className:`tbl-wrap`,children:(0,Q.jsxs)(`table`,{className:`pws-model-table`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:c(`pws.col.model`)}),(0,Q.jsx)(`th`,{className:`num`,children:c(`pws.col.cost`)}),(0,Q.jsx)(`th`,{className:`num`,children:c(`pws.col.tokens`)}),(0,Q.jsx)(`th`,{className:`num`,children:c(`pws.col.requests`)}),(0,Q.jsx)(`th`,{children:c(`pws.col.share`)})]})}),(0,Q.jsx)(`tbody`,{children:p.map(e=>{let t=e.model,n=d===t;return(0,Q.jsxs)(Z.Fragment,{children:[(0,Q.jsxs)(`tr`,{className:`pws-model-row`,children:[(0,Q.jsxs)(`td`,{className:`mono`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`pws-model-expand`,"aria-expanded":n,onClick:()=>f(n?null:t),children:e.model}),e.hasUnresolvedRequestedModel&&(0,Q.jsx)(`div`,{className:`muted pws-model-attribution`,children:c(`pws.unresolvedRequestedModel`)})]}),(0,Q.jsx)(`td`,{className:`num mono`,children:Zo(e.estimatedCostUsd,l)}),(0,Q.jsx)(`td`,{className:`num mono`,children:Xo(e.totalTokens,l)}),(0,Q.jsx)(`td`,{className:`num`,children:e.requests}),(0,Q.jsx)(`td`,{children:(0,Q.jsx)(`div`,{className:`pws-share-bar`,children:(0,Q.jsx)(`div`,{className:`pws-share-bar-fill`,style:{width:`${Math.round(e.shareRatio*100)}%`}})})})]}),n&&(0,Q.jsx)(`tr`,{className:`pws-model-detail`,children:(0,Q.jsx)(`td`,{colSpan:5,children:(0,Q.jsxs)(`div`,{className:`pws-model-detail-grid`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:c(`pws.tokenInput`)}),(0,Q.jsxs)(`span`,{className:`mono`,children:[` `,Xo(e.inputTokens,l)]})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:c(`pws.tokenOutput`)}),(0,Q.jsxs)(`span`,{className:`mono`,children:[` `,Xo(e.outputTokens,l)]})]})]})})})]},t)})})]})})]}),(0,Q.jsx)(Ys,{report:r,reading:i,onRefreshQuota:s},`${e.name}:${a??``}`)]})}function Kc(e){return e===`anthropic`||e===`anthropic2`}function qc(e,t){return e===`anthropic`?!0:e!==`anthropic2`||!t?!1:Object.hasOwn(t,`anthropicOAuthInstance`)&&t.anthropicOAuthInstance===`anthropic2`&&t.adapter===`anthropic`&&t.authMode===`oauth`}function Jc(e){if(!e)return null;let t=e.trim();return t?t.length<=4?`account-…`:`account-…${t.slice(-4)}`:null}function Yc(e){return Jc(e)??`account-…`}function Xc(e,t,n,r,i=1){let a=e.trim(),o=a===``?NaN:Number(a),s=Math.min(r,Math.max(n,(Number.isFinite(o)?o:n)+t));return String(i<1?Math.round(s*10)/10:Math.round(s))}function Zc({disabled:e=!1,onIncrement:t,onDecrement:n,incrementLabel:r,decrementLabel:i}){return(0,Q.jsxs)(`div`,{className:`ocx-stepper`,role:`group`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`ocx-stepper__btn`,disabled:e,"aria-label":r,onMouseDown:e=>e.preventDefault(),onClick:t,children:(0,Q.jsx)(Ge,{width:10,height:10,"aria-hidden":`true`})}),(0,Q.jsx)(`button`,{type:`button`,className:`ocx-stepper__btn`,disabled:e,"aria-label":i,onMouseDown:e=>e.preventDefault(),onClick:n,children:(0,Q.jsx)(Qe,{width:10,height:10,"aria-hidden":`true`})})]})}function Qc({accountLabel:e,globalThreshold:t,override:n,disabled:r=!1,inputId:i,hintText:a,onChange:o}){let s=O(),c=(0,Z.useRef)(!1),l=(0,Z.useRef)(!1),[u,d]=(0,Z.useState)(!1),f=n!==null,[p,m]=(0,Z.useState)({override:n,draft:String(n??t)});p.override!==n&&m({override:n,draft:String(n??t)});let{draft:h}=p,g=e=>m(t=>({...t,draft:e})),_=()=>m(e=>({...e,draft:String(e.override??t)})),v=r||u,y=a??s(`accountPool.autoSwitchHint`),b=(0,Z.useId)(),x=async e=>{if(!(r||l.current)){l.current=!0,d(!0);try{await o(e)}finally{_(),l.current=!1,d(!1)}}},S=async()=>{if(!f||r||l.current)return;let e=h.trim(),t=e===``?NaN:Number(e);if(!Number.isInteger(t)||t<0||t>100){_();return}t!==n&&await x(t)},C=e=>{if(r||l.current)return;let t=Xc(h,e,0,100);g(t);let i=Number(t);i!==n&&x(i)};return(0,Q.jsxs)(`div`,{className:`codex-account-auto-switch`,title:y,"aria-busy":u,"aria-disabled":v,onBlur:e=>{if(!e.currentTarget.contains(e.relatedTarget)){if(c.current){c.current=!1;return}S()}},children:[(0,Q.jsx)(`label`,{className:`codex-account-auto-switch-label`,htmlFor:f?i:void 0,children:s(`accountPool.autoSwitchThreshold`)}),f&&(0,Q.jsxs)(`span`,{className:`codex-account-auto-switch-input-wrap`,children:[(0,Q.jsx)(`input`,{id:i,className:`input mono codex-auto-switch-input codex-account-auto-switch-input`,type:`number`,min:0,max:100,step:1,inputMode:`numeric`,value:h,readOnly:v,"aria-disabled":v,"aria-label":s(`accountPool.autoSwitchThresholdAria`,{email:e}),"aria-describedby":b,onChange:e=>{v||g(e.target.value)},onKeyDown:e=>{e.nativeEvent.isComposing||v||(e.key===`Enter`?(e.preventDefault(),S()):e.key===`Escape`&&(e.preventDefault(),_()))}}),(0,Q.jsx)(`span`,{className:`codex-account-auto-switch-unit`,"aria-hidden":`true`,children:`%`}),(0,Q.jsx)(Zc,{disabled:r&&!u,incrementLabel:s(`codexAuth.autoSwitchThresholdInc`),decrementLabel:s(`codexAuth.autoSwitchThresholdDec`),onIncrement:()=>C(1),onDecrement:()=>C(-1)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`toggle codex-account-auto-switch-toggle ${f?`on`:``}`,disabled:r&&!u,"aria-disabled":v,"aria-pressed":f,"aria-label":s(`accountPool.autoSwitchOverrideAria`,{email:e}),"aria-describedby":b,onPointerDownCapture:()=>{c.current=!0},onPointerUp:()=>{c.current=!1},onPointerCancel:()=>{c.current=!1},onClick:()=>{c.current=!1,x(f?null:t)},children:(0,Q.jsx)(`span`,{className:`toggle-knob`})}),(0,Q.jsx)(`span`,{id:b,className:`sr-only`,children:y})]})}function $c(e){return e===`healthy`?`ok`:e===`cooldown`?`muted`:e===`reauth_required`||e===`warning`?`warn`:`muted`}function el(e){let t=$c(e);return t===`ok`?`badge badge-green`:t===`warn`?`badge badge-amber`:`badge badge-muted`}function tl(e){return e===`reauth_required`}function nl(e){return!!e?.needsReauth||tl(e?.health?.status)}function rl(e){return e===`cooldown`}function il(e){return e===`warning`||e===`reauth_required`}function al(e){if(!e||e.status===`healthy`)return null;if(e.status===`cooldown`)return e.reason===`rate_limit`?`pws.healthLabel.rateLimited`:`pws.healthLabel.quotaLimited`;if(e.status===`reauth_required`)return e.reason===`refresh_failed`?`pws.healthLabel.refreshFailed`:`pws.healthLabel.reauthRequired`;switch(e.reason){case`validation_pending`:return`pws.healthLabel.validationPending`;case`refresh_conflict`:return`pws.healthLabel.credentialConflict`;case`metadata_mismatch`:return`pws.healthLabel.metadataMismatch`;case`stale_credentials`:return`pws.healthLabel.refreshFailed`;default:return`pws.healthLabel.reauthRequired`}}function ol(e,t){let n=al(t);return n?e(n):null}function sl(e,t,n,r){if(!r||r.status===`healthy`)return null;let i=n===`__main__`?e(`codexAuth.mainAccount`):Yc(n);if(r.status===`cooldown`){let n=r.until?new Date(r.until).toLocaleString():``;return e(r.reason===`rate_limit`?`pws.healthSummary.rateLimited`:`pws.healthSummary.quotaLimited`,{provider:t,account:i,until:n})}return r.status===`reauth_required`?e(`pws.healthSummary.reauthRequired`,{provider:t,account:i}):r.reason===`validation_pending`?e(`pws.healthSummary.validationPending`,{provider:t,account:i}):r.reason===`refresh_conflict`?e(`pws.healthSummary.credentialConflict`,{provider:t,account:i}):r.reason===`metadata_mismatch`?e(`pws.healthSummary.metadataMismatch`,{provider:t,account:i}):e(`pws.healthSummary.staleCredentials`,{provider:t,account:i})}async function cl(e){let t=navigator.clipboard?.writeText?.bind(navigator.clipboard);if(t)try{return await t(e),!0}catch{}return ll(e)}function ll(e){if(typeof document>`u`||typeof document.execCommand!=`function`)return!1;let t=document.createElement(`textarea`);t.value=e,t.setAttribute(`readonly`,``),t.setAttribute(`aria-hidden`,`true`),t.style.position=`fixed`,t.style.top=`0`,t.style.opacity=`0`,document.body.appendChild(t);try{return t.select(),document.execCommand(`copy`)}catch{return!1}finally{t.remove()}}function ul(e,t){return e(t?t===`copied`?`pws.doctorCopied`:`pws.doctorCopyUnavailable`:`pws.copyDoctor`)}function dl(e){return[...e].some(e=>{let t=e.codePointAt(0);return t<=31||t===127})}function fl(e,t){let n=e.trim();return n.length>80||dl(n)?t(`prov.aliasInvalid`):null}var pl=e=>({step:e?`oauth-waiting`:`pick`,id:``,error:``,authUrl:``,deviceCode:``,instructions:``,manualCode:``,manualCodeState:`idle`,statusNotice:``,statusTone:`ok`,flowId:null});function ml(e,t){switch(t.type){case`set-step`:return{...e,step:t.step};case`set-id`:return{...e,id:t.id};case`set-error`:return{...e,error:t.error};case`set-auth-url`:return{...e,authUrl:t.authUrl};case`set-login-hint`:return{...e,authUrl:t.authUrl,deviceCode:t.deviceCode??``,instructions:t.instructions??``,browserLaunch:t.browserLaunch};case`set-manual-code`:return{...e,manualCode:t.manualCode};case`set-manual-code-state`:return{...e,manualCodeState:t.manualCodeState};case`set-status-notice`:return{...e,statusNotice:t.statusNotice,statusTone:t.statusTone??e.statusTone};case`set-flow-id`:return{...e,flowId:t.flowId};case`clear-manual-code`:return{...e,manualCode:``,manualCodeState:`idle`,statusNotice:``,statusTone:`ok`};case`reset-oauth-start`:return{...e,error:``,statusNotice:``,statusTone:`ok`,flowId:null,browserLaunch:void 0};case`oauth-code-submitted`:return{...e,error:``,manualCode:``,manualCodeState:`waiting`,statusTone:`ok`,statusNotice:``};default:return e}}function hl({id:e,error:t,onIdChange:n,onStartOAuth:r,onStartDeviceOAuth:i,onClose:a}){let o=O();return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`h3`,{style:{marginBottom:4},children:o(`codexAuth.addTitle`)}),(0,Q.jsx)(`p`,{className:`modal-desc`,children:o(`codexAuth.addPickDesc`)}),(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`codex-account-id-input`,children:o(`codexAuth.addIdLabel`)}),(0,Q.jsx)(`input`,{id:`codex-account-id-input`,className:`input`,placeholder:o(`codexAuth.addIdPlaceholder`),value:e,onChange:e=>n(e.target.value),style:{marginBottom:12}}),(0,Q.jsx)(`button`,{type:`button`,className:`list-row`,onClick:r,style:{marginBottom:8},children:(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:10},children:[(0,Q.jsx)(qe,{width:20}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{className:`title`,children:o(`codexAuth.oauthLogin`)}),(0,Q.jsx)(`div`,{className:`sub`,children:o(`codexAuth.oauthDesc`)})]})]})}),(0,Q.jsx)(`button`,{type:`button`,className:`list-row`,onClick:i,style:{marginBottom:8},children:(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:10},children:[(0,Q.jsx)(st,{width:20}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{className:`title`,children:o(`codexAuth.deviceLogin`)}),(0,Q.jsx)(`div`,{className:`sub`,children:o(`codexAuth.deviceDesc`)})]})]})}),t&&(0,Q.jsx)(`div`,{className:`notice notice-err`,style:{marginTop:8},children:t}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:a,style:{width:`100%`},children:o(`codexAuth.cancel`)})]})}var gl=2500;function _l(){let[e,t]=(0,Z.useState)(null),n=(0,Z.useRef)(null),r=(0,Z.useRef)(0),i=(0,Z.useCallback)(()=>{n.current&&=(clearTimeout(n.current),null)},[]);return(0,Z.useEffect)(()=>i,[i]),{outcomeFor:(0,Z.useCallback)(t=>e&&Object.is(e.scope,t)?e.outcome:null,[e]),copy:(0,Z.useCallback)((e,a)=>{let o=++r.current;cl(e).then(e=>{r.current===o&&(i(),t({scope:a,outcome:e?`copied`:`unavailable`}),n.current=setTimeout(()=>{n.current=null,r.current===o&&t(null)},gl))})},[i])}}function vl(e){try{let t=new URL(e).protocol;return t===`https:`||t===`http:`}catch{return!1}}function yl({url:e,openLabel:t}){let n=O(),{outcomeFor:r,copy:i}=_l();if(!e)return null;let a=r(e),o=n(a===`copied`?`prov.linkCopied`:a===`unavailable`?`prov.linkCopyUnavailable`:`prov.copyLink`),s=vl(e);return(0,Q.jsxs)(`div`,{className:`login-url-block`,children:[(0,Q.jsx)(`code`,{className:`login-url-block-text`,children:e}),(0,Q.jsxs)(`div`,{className:`login-url-block-actions`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>i(e,e),children:[(0,Q.jsx)(st,{style:{width:13,height:13},"aria-hidden":`true`}),(0,Q.jsx)(`span`,{"aria-live":`polite`,children:o})]}),s&&(0,Q.jsxs)(`a`,{href:e,target:`_blank`,rel:`noreferrer`,className:`login-url-block-open`,children:[(0,Q.jsx)(Ve,{style:{width:13,height:13},"aria-hidden":`true`}),` `,t??n(`prov.didntOpen`)]})]})]})}function bl({hint:e,paste:t}){let n=O(),r=_l(),i=e.deviceCode??``,a=e.url??``;if(!i&&!a&&!e.instructions&&!t)return null;let o=r.outcomeFor(i),s=n(o===`copied`?`prov.codeCopied`:o===`unavailable`?`prov.linkCopyUnavailable`:`prov.copyCode`),c=i||e.browserLaunch===`skipped`?n(`prov.openSignInPage`):void 0,l=i&&vl(a)?()=>{r.copy(i,i),window.open(a,`_blank`,`noopener,noreferrer`)}:null;return(0,Q.jsxs)(`div`,{className:`login-hint`,children:[e.browserLaunch===`failed`&&a&&(0,Q.jsx)(`div`,{className:`notice-warn login-hint-launch-failed`,role:`status`,children:n(`prov.browserLaunchFailed`)}),i&&(0,Q.jsxs)(`div`,{className:`login-hint-device pwi-device-code-wrap`,children:[(0,Q.jsx)(`span`,{className:`text-label`,children:n(`prov.deviceCode`)}),(0,Q.jsx)(`code`,{className:`login-hint-device-code pwi-device-code`,children:i}),(0,Q.jsx)(`button`,{type:`button`,className:l?`btn btn-ghost btn-sm`:`btn btn-primary btn-sm`,onClick:()=>r.copy(i,i),children:(0,Q.jsx)(`span`,{"aria-live":`polite`,children:s})}),l&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm login-hint-copy-open`,onClick:l,children:n(`prov.copyCodeAndOpen`)})]}),(0,Q.jsx)(yl,{url:a,openLabel:c}),e.instructions&&(0,Q.jsx)(`div`,{className:`muted text-label`,children:e.instructions}),t&&!i&&(0,Q.jsxs)(`div`,{className:`login-hint-paste`,children:[(0,Q.jsx)(`div`,{className:`muted text-label`,children:n(`prov.pasteRedirectHint`)}),(0,Q.jsxs)(`div`,{className:`login-hint-paste-row`,children:[(0,Q.jsx)(`input`,{type:`text`,autoComplete:`off`,spellCheck:!1,value:t.value,onChange:e=>t.onChange(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),t.onSubmit())},placeholder:n(`prov.pasteRedirect`),"aria-label":n(`prov.pasteRedirect`),disabled:t.busy,className:`input text-label login-hint-paste-input`}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:t.busy||t.disabled===!0||!t.value.trim(),onClick:t.onSubmit,children:t.busy?t.submittingLabel??n(`prov.pasteSubmitting`):n(`prov.pasteSubmit`)})]}),t.message&&(0,Q.jsx)(`div`,{className:`text-label`,"aria-live":`polite`,style:{color:t.ok?`var(--accent-hover)`:`var(--amber)`},children:t.message})]})]})}function xl({reauthAccountId:e,authUrl:t,deviceCode:n,instructions:r,browserLaunch:i,manualCode:a,manualCodeBusy:o,manualCodeWaiting:s,statusNotice:c,statusTone:l,flowId:u,error:d,onSwitchToDevice:f,onManualCodeChange:p,onSubmitManualCode:m,onClose:h}){let g=O();return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`h3`,{style:{marginBottom:4},children:g(e?`codexAuth.reauthenticate`:`codexAuth.oauthLogin`)}),(0,Q.jsx)(`p`,{className:`modal-desc`,children:g(`codexAuth.oauthWaiting`)}),(0,Q.jsx)(bl,{hint:{url:t,deviceCode:n,instructions:r,browserLaunch:i},paste:{value:a,busy:o,disabled:o||s||!a.trim()||!u,submittingLabel:g(`codexAuth.oauthSubmittingCode`),message:``,ok:!0,onChange:p,onSubmit:m}}),c&&(0,Q.jsx)(`div`,{className:l===`warn`?`notice-warn`:`notice notice-ok`,role:`status`,"aria-live":`polite`,style:{marginTop:12},children:c}),d&&(0,Q.jsx)(`div`,{className:`notice notice-err`,style:{marginTop:12},children:d}),f&&!n&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:f,style:{width:`100%`,marginTop:8},children:g(`codexAuth.deviceLogin`)}),(0,Q.jsx)(`div`,{style:{textAlign:`center`,padding:`24px 0`},children:(0,Q.jsx)(`span`,{className:`spin`,style:{width:24,height:24}})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:h,style:{width:`100%`},children:g(`codexAuth.cancel`)})]})}var Sl=`ocx.oauth.openBrowser`;function Cl(){try{let e=window.localStorage.getItem(Sl);return e===`0`?!1:e===`1`||void 0}catch{return}}function wl(){let e=Cl();return e===void 0?{}:{openBrowser:e}}function Tl(e){try{window.localStorage.setItem(Sl,e?`1`:`0`)}catch{}}function El(e){return e===`started`||e===`failed`||e===`skipped`?e:void 0}function Dl(e){if(typeof e!=`object`||!e||Array.isArray(e))return{catalogRefreshPending:!1};let t=Object.getOwnPropertyDescriptor(e,`catalogRefreshPending`),n=Object.getOwnPropertyDescriptor(e,`validationPending`);return{...n&&`value`in n&&n.value===!0?{validationPending:!0}:{},catalogRefreshPending:t!==void 0&&`value`in t&&t.value===!0}}var Ol=3e5,kl=96e4;function Al({apiBase:e,reauthAccountId:t,ui:n,dispatch:r,t:i}){let a=(0,Z.useRef)(!0),o=(0,Z.useRef)(0),s=(0,Z.useRef)(!1),c=(0,Z.useRef)(null),l=(0,Z.useRef)(null),u=(0,Z.useRef)(null),d=(0,Z.useRef)(null),f=(0,Z.useRef)(n.manualCodeState),p=(0,Z.useRef)(null),m=(0,Z.useRef)(null),h=(0,Z.useRef)(()=>{}),g=(0,Z.useRef)(()=>{}),_=n.manualCodeState===`submitting`,v=n.manualCodeState===`waiting`;(0,Z.useEffect)(()=>{f.current=n.manualCodeState},[n.manualCodeState]),(0,Z.useEffect)(()=>{d.current=n.flowId},[n.flowId]);let y=(0,Z.useCallback)(()=>{c.current&&=(c.current(),null),l.current&&=(clearTimeout(l.current),null),u.current?.abort(),u.current=null,s.current=!1},[]),b=(0,Z.useCallback)(()=>{r({type:`clear-manual-code`}),o.current=0},[r]),x=(0,Z.useCallback)(async()=>{b();let t=d.current;d.current=null,r({type:`set-flow-id`,flowId:null}),r({type:`set-login-hint`,authUrl:``}),y(),p.current?.abort(),p.current=null,t&&await fetch(`${e}/api/codex-auth/login/cancel`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({flowId:t})}).catch(()=>{})},[e,b,r,y]);(0,Z.useEffect)(()=>(a.current=!0,()=>{b(),a.current=!1,m.current=null,p.current?.abort(),p.current=null;let t=d.current;d.current=null,r({type:`set-flow-id`,flowId:null}),y(),t&&fetch(`${e}/api/codex-auth/login/cancel`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({flowId:t})}).catch(()=>{})}),[e,b,r,y]);let S=(0,Z.useCallback)((e,t)=>{h.current=e,g.current=t},[]),C=(0,Z.useCallback)(()=>{n.step===`oauth-waiting`&&x(),g.current()},[n.step,x]),w=(0,Z.useCallback)(async(n,m)=>{b(),d.current=null,r({type:`set-flow-id`,flowId:null});let _=new AbortController;p.current?.abort(),p.current=_,r({type:`reset-oauth-start`}),o.current=0;try{let p=t??n?.trim()??``,v=m?.device===!0,S=()=>fetch(`${e}/api/codex-auth/login`,{signal:_.signal,method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...wl(),...v?{device:!0}:{},...t?{id:t,reauth:!0}:p?{id:p}:{}})}),C=await S();if(!a.current)return;if(C.status===409){if(await fetch(`${e}/api/codex-auth/login/cancel`,{method:`POST`,headers:{"Content-Type":`application/json`},body:`{}`}),!a.current||_.signal.aborted)return;if(C=await S(),C.status===409){r({type:`set-error`,error:i(`codexAuth.oauthAlreadyInProgress`)});return}}let w=await hn(C,i(`modal.networkError`));if(!a.current||!w)return;if(w.url){d.current=w.flowId??null,r({type:`set-flow-id`,flowId:w.flowId??null}),r({type:`set-login-hint`,authUrl:w.url,deviceCode:w.deviceCode,instructions:w.instructions,browserLaunch:El(w.browserLaunch)}),r({type:`set-step`,step:`oauth-waiting`}),y();let n=w.flowId??``,m=t?`&reauth=1`:``,_=n?`${e}/api/codex-auth/login-status?flowId=${encodeURIComponent(n)}${p?`&accountId=${encodeURIComponent(p)}`:``}${m}`:`${e}/api/codex-auth/login-status`,S=new AbortController;u.current=S,c.current=ua(async()=>{if(s.current||S.signal.aborted)return;s.current=!0;let e=AbortSignal.any([S.signal,AbortSignal.timeout(1e4)]);try{let n=await gn(await fetch(_,{signal:e}));if(!a.current||S.signal.aborted)return;if(!n){o.current+=1,o.current>=3&&r({type:`set-status-notice`,statusNotice:i(`codexAuth.oauthStatusRetrying`),statusTone:`warn`});return}if(o.current=0,f.current===`waiting`?r({type:`set-status-notice`,statusNotice:i(`codexAuth.oauthCodeSubmitted`),statusTone:`ok`}):r({type:`set-status-notice`,statusNotice:``,statusTone:`ok`}),n.status===`done`){if(y(),b(),d.current=null,r({type:`set-flow-id`,flowId:null}),!a.current)return;h.current(Dl(n)),g.current()}else(n.status===`error`||n.status===`expired`)&&(y(),b(),d.current=null,r({type:`set-flow-id`,flowId:null}),a.current&&(t||r({type:`set-step`,step:`pick`}),r({type:`set-error`,error:n.error??i(`codexAuth.loginFailed`)})))}catch(e){if(!a.current||S.signal.aborted||e instanceof Error&&e.name===`AbortError`)return;o.current+=1,o.current>=3&&r({type:`set-status-notice`,statusNotice:i(`codexAuth.oauthStatusRetrying`),statusTone:`warn`})}finally{s.current=!1}},2e3),l.current=setTimeout(()=>{c.current&&(b(),x(),a.current&&(t||r({type:`set-step`,step:`pick`}),r({type:`set-error`,error:i(`modal.loginTimeout`)})))},v?kl:Ol)}w.error&&!w.url&&r({type:`set-error`,error:w.error})}catch(e){a.current&&!(e instanceof Error&&e.name===`AbortError`)&&r({type:`set-error`,error:e instanceof Error?e.message:String(e)})}},[e,x,b,r,t,y,i]);return(0,Z.useEffect)(()=>{if(!t){m.current=null;return}m.current!==t&&(m.current=t,w())},[t,w]),{manualCodeBusy:_,manualCodeWaiting:v,bindCallbacks:S,closeModal:C,startOAuth:w,submitManualCode:(0,Z.useCallback)(async()=>{let t=d.current,s=n.manualCode.trim();if(!(!t||!s||_||v)){r({type:`set-manual-code-state`,manualCodeState:`submitting`}),r({type:`set-status-notice`,statusNotice:``,statusTone:`ok`});try{let n=await fetch(`${e}/api/codex-auth/login/code`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({flowId:t,input:s})});if(!a.current)return;if(!n.ok){r({type:`set-error`,error:i(`prov.pasteFail`,{error:(await n.json().catch(()=>({}))).error??n.statusText})}),r({type:`set-manual-code-state`,manualCodeState:`idle`});return}r({type:`oauth-code-submitted`}),r({type:`set-status-notice`,statusNotice:i(`codexAuth.oauthCodeSubmitted`),statusTone:`ok`}),o.current=0}catch{a.current&&(r({type:`set-error`,error:i(`modal.networkError`)}),r({type:`set-manual-code-state`,manualCodeState:`idle`}))}}},[e,r,_,v,i,n.manualCode])}}function jl({apiBase:e,onClose:t,onAdded:n,reauthAccountId:r}){let i=O(),[a,o]=(0,Z.useReducer)(ml,r,pl),s=(0,Z.useRef)(null),c=(0,Z.useRef)(null),{manualCodeBusy:l,manualCodeWaiting:u,bindCallbacks:d,closeModal:f,startOAuth:p,submitManualCode:m}=Al({apiBase:e,reauthAccountId:r,ui:a,dispatch:o,t:i});(0,Z.useEffect)(()=>{d(n,t)},[d,n,t]),(0,Z.useEffect)(()=>{s.current=document.activeElement;let e=c.current;e&&!e.open&&e.showModal();let t=e?.querySelector(`input:not([disabled]), button:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex='-1'])`);return t&&t.focus(),()=>{s.current?.focus()}},[]);let h=(0,Z.useCallback)(e=>{e.preventDefault(),f()},[f]),g=i(r?`codexAuth.reauthenticate`:`codexAuth.addTitle`);return(0,Q.jsx)(`dialog`,{ref:c,"aria-label":g,className:`modal-overlay`,onCancel:h,children:(0,Q.jsxs)(`div`,{className:`modal-card`,style:{maxWidth:440},children:[a.step===`pick`&&(0,Q.jsx)(hl,{id:a.id,error:a.error,onIdChange:e=>o({type:`set-id`,id:e}),onStartOAuth:()=>{p(a.id)},onStartDeviceOAuth:()=>{p(a.id,{device:!0})},onClose:f}),a.step===`oauth-waiting`&&(0,Q.jsx)(xl,{reauthAccountId:r,authUrl:a.authUrl,deviceCode:a.deviceCode,instructions:a.instructions,browserLaunch:a.browserLaunch,manualCode:a.manualCode,manualCodeBusy:l,manualCodeWaiting:u,statusNotice:a.statusNotice,statusTone:a.statusTone,flowId:a.flowId,error:a.error,onSwitchToDevice:()=>{p(a.id,{device:!0})},onManualCodeChange:e=>o({type:`set-manual-code`,manualCode:e}),onSubmitManualCode:()=>{m()},onClose:f})]})})}var Ml=[2,1,0,-1,-2],Nl=new Map([[2,`accountPool.priorityFirst`],[1,`accountPool.priorityEarlier`],[0,`accountPool.priorityNormal`],[-1,`accountPool.priorityLater`],[-2,`accountPool.priorityLast`]]);function Pl(e){return typeof e==`number`&&Number.isInteger(e)&&e>=-100&&e<=100?e:0}function Fl(e){let t=Pl(e);return t>0?`+${t}`:String(t)}function Il(e){return Nl.has(e)}function Ll(e){return Nl.get(e)??null}function Rl(e,t){let n=Pl(t);return e(`accountPool.priorityOption`,{name:e(Ll(n)??`accountPool.priorityCustom`),value:Fl(n)})}var zl=[`quota`,`round-robin`,`fill-first`,`reset-first`],Bl=[`five-hour`,`weekly`,`max-utilization`],Vl=`quota`,Hl=`five-hour`,Ul=new Set(zl),Wl=new Set(Bl);function Gl(e){return typeof e==`string`&&Ul.has(e)?e:Vl}function Kl(e){return typeof e==`string`&&Wl.has(e)?e:Hl}function ql(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=100?e:1}function Jl(e){let t=e.trim();if(!/^\d+$/.test(t))return null;let n=Number(t);return n>=1&&n<=100?n:null}var Yl=`openai`;function Xl(e,t,n){let r=e??{},i=r.autoSwitchThreshold??n?.threshold;return{provider:t,kind:r.kind===`codex`||r.kind===`anthropic`?r.kind:`generic`,supported:Array.isArray(r.supported)?r.supported.filter(e=>typeof e==`string`):[],enabled:typeof r.enabled==`boolean`?r.enabled:null,enabledEffective:r.enabledEffective===!0,strategy:Gl(r.strategy??n?.strategy),stickyLimit:ql(r.stickyLimit??n?.stickyLimit),autoSwitchThreshold:typeof i==`number`?i:null,quotaWindow:(r.quotaWindow??n?.quotaWindow)===void 0||r.quotaWindow===null?null:Kl(r.quotaWindow??n?.quotaWindow),nativeMessages:Kc(t)?Object.hasOwn(r,`nativeMessages`)?r.nativeMessages===!0:n?.nativeMessages??!0:null,...r.warning===`config_bookkeeping_failed`?{warning:r.warning}:{}}}function Zl(e,t){return{provider:e,...t.enabled===void 0?{}:{enabled:t.enabled},...t.strategy===void 0?{}:{strategy:t.strategy},...t.stickyLimit===void 0?{}:{stickyLimit:t.stickyLimit},...t.threshold===void 0?{}:{autoSwitchThreshold:t.threshold},...t.quotaWindow===void 0?{}:{quotaWindow:t.quotaWindow},...Kc(e)&&t.nativeMessages!==void 0?{nativeMessages:t.nativeMessages}:{}}}async function Ql(e,t,n=(e,t)=>fetch(e,t),r){try{let i=await n(`${e}/api/pool/settings?provider=${encodeURIComponent(t)}`,r);return i.ok?Xl(await i.json(),t):null}catch{return null}}var $l=class extends Error{code=`config_save_state_unknown`;constructor(){super(`config_save_state_unknown`),this.name=`PoolSettingsSaveStateUnknownError`}};async function eu(e,t,n,r=(e,t)=>fetch(e,t),i){try{let a=await r(`${e}/api/pool/settings`,{...i,method:`PUT`,headers:{"Content-Type":`application/json`,...i?.headers??{}},body:JSON.stringify(Zl(t,n))});if(!a.ok){if(Kc(t)&&a.status===409&&(await a.json().catch(()=>null))?.code===`config_save_state_unknown`)throw new $l;return null}return Xl(await a.json().catch(()=>({})),t,n)}catch(e){if(e instanceof $l)throw e;return null}}async function tu(e,t,n=(e,t)=>fetch(e,t)){if(t.strategy===void 0&&t.stickyLimit===void 0)return{ok:!1};let r=await eu(e,Yl,{strategy:t.strategy,stickyLimit:t.stickyLimit},n);return r?{ok:!0,strategy:r.strategy,stickyLimit:r.stickyLimit}:{ok:!1}}var nu=1e4;function ru(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0&&e<=100?e:80}function iu(e){let t=e.trim();if(!/^\d+$/.test(t))return null;let n=Number(t);return n>=1&&n<=100?n:null}function au(e,t){return e>0?0:Number.isInteger(t)&&t>=1&&t<=100?t:80}function ou(e,t,n,r){return n===r?e||t?`defer`:`apply`:`ignore`}function su(e){return e&&typeof e==`object`&&e&&`autoSwitchThreshold`in e?e.autoSwitchThreshold:e}function cu(e,t,n){if(e<=0){let t=au(e,n);return{threshold:t,lastEnabled:t}}return{threshold:0,lastEnabled:iu(t)??au(0,n)}}async function lu(e,t,n=(e,t)=>fetch(e,t),r=nu){return!Number.isInteger(t)||t<0||t>100?!1:await eu(e,Yl,{threshold:t},(e,t)=>n(e,t),{signal:AbortSignal.timeout(r)})!==null}var uu={short:90,long:98};function du(e){let t=e&&typeof e==`object`?e:void 0,n=e=>typeof e==`number`&&Number.isFinite(e)&&e>=0&&e<=100;return t&&n(t.short)&&n(t.long)?{short:t.short,long:t.long}:{...uu}}var fu=3e4,pu=new Map;function mu(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0&&e<=100?e:null}function hu(e,t=!0){let n=pu.get(e),[r,i]=(0,Z.useState)(()=>n?.accounts??[]),a=Vt(hr(e,`codex`),[e],async t=>mr(await fetch(`${e}/api/usage?range=30d&surface=codex`,{signal:t}),`account usage load failed`),{enabled:t}),[o,s]=(0,Z.useState)(()=>n?.activeId??null),[c,l]=(0,Z.useState)(()=>n==null?`loading`:`ready`),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(null),[m,h]=(0,Z.useState)(null),[g,_]=(0,Z.useState)(null),[v,y]=(0,Z.useState)(null),[b,x]=(0,Z.useState)(null),[S,C]=(0,Z.useState)(!1),[w,T]=(0,Z.useState)(null),[E,D]=(0,Z.useState)(0),[O,k]=(0,Z.useState)(()=>n!=null),[j,M]=(0,Z.useState)(0),N=(0,Z.useRef)(null);N.current===null&&(N.current=new Set);let P=(0,Z.useRef)(null),F=(0,Z.useRef)(0),I=(0,Z.useRef)(null),L=(0,Z.useRef)(null);L.current===null&&(L.current=new Set);let R=(0,Z.useRef)(null),z=(0,Z.useRef)(null),B=(0,Z.useRef)(!!n?.accounts.length),V=(0,Z.useRef)(n!=null),H=(0,Z.useRef)(null),U=(0,Z.useRef)(null),W=(0,Z.useRef)(null),G=(0,Z.useRef)(!1),ee=(0,Z.useCallback)(e=>(L.current.add(e),()=>{L.current.delete(e)}),[]),te=(0,Z.useCallback)(()=>su(R.current?.value),[]),K=(0,Z.useCallback)(()=>R.current?.value,[]),q=(0,Z.useCallback)(async(t=!1,n={})=>{let r=++F.current,a=n.validatePending===!0,o=pu.get(e)?.accounts.length??0,c=A(a?3e4+12e4*Math.max(1,o):2e4),u=a?{}:null;u&&(N.current.add(u),M(N.current.size)),D(e=>e+1);try{let n=[...L.current],o=new Map;for(let e of n)o.set(e,e.beginActiveRead());!t&&!V.current&&l(`loading`);let u=null,f,p=(async()=>{try{let n=await fetch(`${e}/api/codex-auth/accounts${a?`/refresh`:t?`?refresh=1`:``}`,{method:a?`POST`:`GET`,signal:c.signal});if(!n.ok)throw Error(`account load failed`);let o=await n.json();return F.current===r&&(u=(o.accounts??[]).map(e=>{let t=e.isMain?`main`:e.logLabel,n=nt(e.quota);return{...e,...t?{logLabel:t}:{},priority:Pl(e.priority),autoSwitchThresholdOverride:mu(e.autoSwitchThresholdOverride),quotaAutoRefresh:e.quotaAutoRefresh??{...n,fiveHourEnabled:!1,weeklyEnabled:!1}}}),i(u),B.current=u.length>0,V.current=!0,l(`ready`),d(!1)),!0}catch{return!1}})(),m=(async()=>{try{let t=await fetch(`${e}/api/codex-auth/active`,{signal:c.signal});if(!t.ok)throw Error(`active account load failed`);let i=await t.json();if(F.current===r){let e=i.activeCodexAccountId??null,t=I.current;t&&t.staleReadsRemaining>0&&e!==t.id?--t.staleReadsRemaining:(I.current=null,f=e,s(e)),R.current={value:i},T(typeof i.pinnedAccountId==`string`?i.pinnedAccountId:null);for(let e of n)e.acceptActiveRead(i,o.get(e))}return!0}catch{if(F.current===r)for(let e of n)e.rejectActiveRead();return!1}})(),[h,g]=await Promise.all([p,m]);if(F.current!==r)return!1;if(h){l(`ready`),V.current=!0;let t=pu.get(e);return pu.set(e,{accounts:u??t?.accounts??[],activeId:f===void 0?t?.activeId??null:f}),g}return V.current||l(`error`),d(!0),!1}finally{c.clear(),u&&(N.current.delete(u),M(N.current.size)),D(e=>Math.max(0,e-1)),k(!0)}},[e]);(0,Z.useEffect)(()=>{t&&P.current!==e&&(P.current=e,Promise.resolve().then(()=>{q()}))},[e,t,q]);let ne=r.some(e=>e.hasCredential&&!e.quota);(0,Z.useEffect)(()=>{if(!t||!ne||j>0)return;let e=[350,900,2e3].map(e=>window.setTimeout(()=>{N.current.size===0&&q(!1)},e));return()=>{for(let t of e)window.clearTimeout(t)}},[t,ne,j,q]),(0,Z.useEffect)(()=>{if(!(!t||j>0))return ua(()=>{N.current.size===0&&q()},fu)},[t,q,j]);let J=(0,Z.useCallback)(()=>{let e={};return N.current.add(e),M(N.current.size),e},[]),Y=(0,Z.useCallback)(e=>{N.current.delete(e)&&M(N.current.size)},[]),re=(0,Z.useCallback)(async(t,n)=>{if(z.current||U.current)return{ok:!1,reason:`busy`};z.current=t??`__main__`,p(t??`__main__`);let r=`request`;try{let i=await fetch(`${e}/api/codex-auth/active`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({accountId:t,...n?{expectedPinnedAccountId:n.expectedPinnedAccountId}:{}})});if(!i.ok)throw(await i.json().catch(()=>({}))).code===`account_pin_changed`&&(r=`pin_changed`),Error(`account switch failed`);let a=(await i.json().catch(()=>({}))).activeCodexAccountId??t;return I.current={id:a??null,staleReadsRemaining:1},s(a??null),T(a??null),q(),{ok:!0,activeId:a??null}}catch{return t===null&&(I.current=null,await q()),{ok:!1,reason:r}}finally{z.current=null,p(null)}},[e,q]),ie=(0,Z.useCallback)(async(t,n)=>{try{return(await fetch(`${e}/api/codex-auth/accounts/alias`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:t,alias:n.trim()})})).ok?(await q(),{ok:!0}):{ok:!1,reason:`request`}}catch{return{ok:!1,reason:`request`}}},[e,q]),X=(0,Z.useCallback)(async(t,n)=>{if(H.current)return{ok:!1,reason:`busy`};H.current={accountId:t},h(t);try{let r=await fetch(`${e}/api/codex-auth/accounts/pause`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:t,paused:n})});if(!r.ok)return{ok:!1,reason:`request`};let a=await r.json().catch(()=>({})),o=a&&typeof a==`object`?a:{};if(i(e=>e.map(e=>e.id===t||t===`__main__`&&e.isMain?{...e,paused:n}:e)),Object.prototype.hasOwnProperty.call(o,`activeCodexAccountId`)){let e=o.activeCodexAccountId??null;I.current={id:e,staleReadsRemaining:1},s(e)}return n&&T(e=>e===t?null:e),q(),{ok:!0}}catch{return{ok:!1,reason:`request`}}finally{H.current=null,h(null)}},[e,q]),ae=(0,Z.useCallback)(async(t,n)=>{if(U.current||z.current)return{ok:!1,reason:`busy`};U.current={accountId:t},_(t);try{let r=await fetch(`${e}/api/codex-auth/accounts/priority`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:t,priority:n})});if(!r.ok)return{ok:!1,reason:`request`};let a=await r.json().catch(()=>({})),o=Pl((a&&typeof a==`object`?a:{}).priority??n);return i(e=>e.map(e=>e.id===t||t===`__main__`&&e.isMain?{...e,priority:o}:e)),T(null),I.current=null,q(),{ok:!0}}catch{return{ok:!1,reason:`request`}}finally{U.current=null,_(null)}},[e,q]),oe=(0,Z.useCallback)(async(t,n)=>{if(W.current)return{ok:!1,reason:`busy`};W.current={accountId:t},y(t);try{let r=await fetch(`${e}/api/codex-auth/auto-switch`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:t,threshold:n})});if(!r.ok)return{ok:!1,reason:`request`};let a=await r.json().catch(()=>({})),o=a&&typeof a==`object`?a:{},s=Object.prototype.hasOwnProperty.call(o,`autoSwitchThresholdOverride`)?mu(o.autoSwitchThresholdOverride):n;return i(e=>e.map(e=>e.id===t||t===`__main__`&&e.isMain?{...e,autoSwitchThresholdOverride:s}:e)),q(),{ok:!0}}catch{return{ok:!1,reason:`request`}}finally{W.current=null,y(null)}},[e,q]),se=(0,Z.useCallback)(async(t,n,r)=>{if(G.current)return{ok:!1,reason:`busy`};G.current=!0,x(t);try{return(await fetch(`${e}/api/codex-auth/accounts/credits`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)})).ok?(i(e=>e.map(r)),q(),{ok:!0}):{ok:!1,reason:`request`}}catch{return{ok:!1,reason:`request`}}finally{G.current=!1,x(null)}},[e,q]),ce=(0,Z.useCallback)((e,t)=>se(e,{id:e,creditsAfterLimit:t},n=>n.id===e||e===`__main__`&&n.isMain?{...n,creditsAfterLimit:t}:n),[se]),le=(0,Z.useCallback)(e=>se(`*`,{all:e},t=>({...t,creditsAfterLimit:e})),[se]),ue=(0,Z.useCallback)(async()=>{if(H.current)return{ok:!1,reason:`busy`};H.current=`bulk`,C(!0);try{let t=await fetch(`${e}/api/codex-auth/accounts/pause-exhausted`,{method:`PUT`});if(!t.ok)return{ok:!1,reason:`request`};let n=await t.json().catch(()=>({})),r=n&&typeof n==`object`?n:{},a=new Set(r.pausedAccountIds??[]);if(i(e=>e.map(e=>a.has(e.id)||a.has(`__main__`)&&e.isMain?{...e,paused:!0}:e)),Object.prototype.hasOwnProperty.call(r,`activeCodexAccountId`)){let e=r.activeCodexAccountId??null;I.current={id:e,staleReadsRemaining:1},s(e)}return T(e=>e!==null&&a.has(e)?null:e),q(),{ok:!0,pausedCount:r.pausedCount??a.size}}catch{return{ok:!1,reason:`request`}}finally{H.current=null,C(!1)}},[e,q]),de=(0,Z.useCallback)(async t=>{try{let n=await fetch(`${e}/api/codex-auth/accounts?id=${encodeURIComponent(t)}`,{method:`DELETE`});if(!n.ok)return{ok:!1,reason:`request`};let r=Dl(await n.json().catch(()=>({})));return await q(),{ok:!0,...r}}catch{return{ok:!1,reason:`request`}}},[e,q]),fe=(0,Z.useCallback)(async()=>await q()?{ok:!0}:{ok:!1,reason:`reload`},[q]),pe=o&&o!==`__main__`?r.find(e=>e.id===o):null,me=r.find(e=>e.isMain),he=pe??me,ge=!he?.paused&&nl(he);return{accounts:(0,Z.useMemo)(()=>{let e=new Map((a.data?.accounts??[]).map(e=>[e.accountLogLabel,e]));return r.map(t=>{let n=t.isMain?`main`:t.logLabel,r=n?e.get(n):void 0;return r?{...t,usage30d:r}:t})},[r,a.data]),activeId:o,loadState:c,refreshing:E>0,refreshFailed:u,initialLoading:!O,switchingId:f,pauseUpdatingId:m,priorityUpdatingId:g,autoSwitchUpdatingId:v,creditsAfterLimitUpdatingId:b,pausingExhausted:S,activeNeedsReauth:ge,activePinnedId:w,load:q,switchAccount:re,setAccountPaused:X,setAccountPriority:ae,setAccountAutoSwitchThreshold:oe,setAccountCreditsAfterLimit:ce,setAllCreditsAfterLimit:le,pauseExhaustedAccounts:ue,saveAlias:ie,removeAccount:de,syncAfterAccountAdded:fe,pauseRefresh:J,resumeRefresh:Y,subscribeLoadObserver:ee,readLastThreshold:te,readLastActive:K}}function gu(e,t,n,r,i){let[a,o]=(0,Z.useState)({apiBase:e,busy:!1}),s=(0,Z.useRef)(null),c=(0,Z.useRef)(0),l=(0,Z.useEffectEvent)((e,t)=>{i?.onRead(e,t)}),u=i?.revision??0,d=(0,Z.useRef)(null);a.apiBase!==e&&o({apiBase:e,busy:!1});let f=a.apiBase===e?a.visible:void 0,p=a.apiBase===e&&a.busy;return(0,Z.useEffect)(()=>{let e=new AbortController;return s.current=e,()=>{e.abort(),d.current?.abort(),d.current=null}},[e]),(0,Z.useEffect)(()=>{let t=new AbortController,n=A(15e3),r=c.current,i=fetch(`${e}/api/settings`,{signal:n.signal}).then(e=>{if(!e.ok)throw Error(`read`);return e.json()});return l(i,t.signal),i.then(n=>{t.signal.aborted||d.current||c.current!==r||!n||typeof n!=`object`||!(`showCodexCredits`in n)||typeof n.showCodexCredits!=`boolean`||o({apiBase:e,visible:n.showCodexCredits,busy:!1})}).catch(()=>{}).finally(()=>n.clear()),()=>{t.abort(),n.controller.abort(),n.clear()}},[e,u]),{visible:f,busy:p,toggle:async()=>{let i=s.current;if(f===void 0||p||d.current||!i||i.signal.aborted)return;let a=new AbortController;d.current=a;let l=A(15e3),u=()=>l.controller.abort();a.signal.addEventListener(`abort`,u,{once:!0});let m=()=>s.current===i&&!i.signal.aborted,h=!f;c.current+=1,o({apiBase:e,visible:h,busy:!0});try{let i;try{let t=await fetch(`${e}/api/settings`,{method:`PUT`,headers:{"content-type":`application/json`},signal:l.signal,body:JSON.stringify({showCodexCredits:h})});if(!t.ok)throw Error(`save`);let n=await t.json();if(typeof n?.showCodexCredits!=`boolean`)throw Error(`shape`);i=n.showCodexCredits}catch{m()&&(o({apiBase:e,visible:f,busy:!1}),n(r(`codexAuth.creditsToggleFailed`),`err`));return}if(!m())return;o({apiBase:e,visible:i,busy:!0}),n(r(i?`codexAuth.creditsShown`:`codexAuth.creditsHidden`),`ok`);try{let e=await t(!0);m()&&!e&&n(r(`codexAuth.quotaRefreshFailed`),`err`)}catch{m()&&n(r(`codexAuth.quotaRefreshFailed`),`err`)}}finally{l.clear(),a.signal.removeEventListener(`abort`,u),m()&&(d.current=null,o(e=>({...e,busy:!1})))}}}}var _u=`https://auth.openai.com/codex/device`,vu=2e3,yu=1e4,bu=new Set([`identity_mismatch`,`credential_changed`,`native_main_unavailable`,`device_authorization_failed`,`publication_failed`,`reconciliation_failed`,`flow_in_progress`]);function xu(e){return typeof e==`string`&&bu.has(e)?e:`request_failed`}function Su(e){return typeof e==`string`&&e.startsWith(_u)?e:``}function Cu(e){return typeof e==`string`&&/^[A-Z0-9-]{1,16}$/i.test(e)?e:``}function wu(e,t){let[n,r]=(0,Z.useState)({phase:`idle`}),i=(0,Z.useRef)(null),a=(0,Z.useRef)(null),o=(0,Z.useRef)(null),s=(0,Z.useRef)(null),c=(0,Z.useRef)(!1),l=(0,Z.useCallback)(()=>{s.current?.abort(),s.current=null},[]),u=(0,Z.useCallback)(async()=>{let n=i.current;if(!n){l(),r({phase:`idle`});return}a.current=n;try{let a=await fetch(`${e}/api/codex-auth/main/reauth-device?flowId=${encodeURIComponent(n)}`,{method:`DELETE`}),o=await a.json().catch(()=>({}));if(c.current||i.current!==n)return;if(a.status===404&&o.code===`unknown_flow`){l(),i.current=null,r({phase:`failed`,code:`request_failed`});return}if(!a.ok||o.status!==`cancelled`&&o.status!==`succeeded`&&o.status!==`failed`)throw Error();l(),i.current=null,r(o.status===`failed`?{phase:`failed`,code:xu(o.code)}:{phase:o.status}),o.status===`succeeded`&&t()}catch{if(c.current||i.current!==n)return;r(e=>{if(c.current||i.current!==n)return e;let t=e.phase===`pending`||e.phase===`committing`?e:o.current;return t?.flowId===n?{...t,cancelFailed:!0}:e})}},[e,t,l]),d=(0,Z.useCallback)(async()=>{l(),i.current=null,a.current=null,o.current=null;let n=new AbortController;s.current=n;let u=()=>!n.signal.aborted&&!c.current&&s.current===n;r({phase:`starting`});let d;try{let t=await fetch(`${e}/api/codex-auth/main/reauth-device`,{method:`POST`,signal:n.signal}),i=await t.json().catch(()=>({}));if(!u())return;if(!t.ok){r({phase:`failed`,code:xu(i.code)});return}if(typeof i.flowId!=`string`||!i.flowId){r({phase:`failed`,code:`request_failed`});return}d=i.flowId}catch{u()&&r({phase:`failed`,code:`request_failed`});return}let f=d;i.current=f;let p=``,m=``;for(;u();){if(i.current!==f)return;try{let s=await fetch(`${e}/api/codex-auth/main/reauth-device?flowId=${encodeURIComponent(f)}`,{signal:AbortSignal.any([n.signal,AbortSignal.timeout(yu)])}),c=await s.json().catch(()=>({}));if(!u()||i.current!==f)return;if(!s.ok){if(s.status===404&&c.code===`unknown_flow`){l(),i.current=null,r({phase:`failed`,code:`request_failed`});return}let e=a.current===f;if(r(t=>!u()||i.current!==f||(t.phase===`pending`||t.phase===`committing`)&&t.flowId===f&&(e||t.cancelFailed)?t:{phase:`failed`,code:xu(c.code)}),!e)return}else if(p=Su(c.verificationUrl)||p,m=Cu(c.deviceCode)||m,c.status===`pending`||c.status===`committing`){let e={phase:c.status,flowId:f,verificationUrl:p,deviceCode:m};o.current=e,r(t=>(t.phase===`pending`||t.phase===`committing`)&&t.flowId===f&&t.cancelFailed?{...e,cancelFailed:!0}:e)}else if(c.status===`succeeded`){i.current=null,r({phase:`succeeded`}),t();return}else if(c.status===`cancelled`){i.current=null,r({phase:`cancelled`});return}else if(c.status===`failed`){i.current=null,r({phase:`failed`,code:xu(c.code)});return}}catch{if(!u()||i.current!==f)return}await new Promise(e=>setTimeout(e,vu))}},[e,t,l]);return(0,Z.useEffect)(()=>(c.current=!1,()=>{c.current=!0,l();let t=i.current;i.current=null,t&&fetch(`${e}/api/codex-auth/main/reauth-device?flowId=${encodeURIComponent(t)}`,{method:`DELETE`}).catch(()=>{})}),[e,l]),{state:n,start:d,cancel:u}}var Tu={en:{"nativeMain.title":`Native main login`,"nativeMain.manage":`Manage main login`,"nativeMain.close":`Close main login manager`,"nativeMain.separate":`These controls change the native Codex login, not the account selected for the next Pool request.`,"nativeMain.home":`Effective CODEX_HOME`,"nativeMain.current":`Registered active profile`,"nativeMain.unregistered":`Not registered`,"nativeMain.physicalHint":`This home belongs to the OpenCodex server, which may be a different computer. The backend verifies the physical login before any switch.`,"nativeMain.busyOther":`Another native login operation is running. Finish or cancel it first.`,"nativeMain.working":`Working…`,"nativeMain.changed":`The home, active profile or recovery state changed. Review the refreshed state and confirm again.`,"nativeMain.error":`The result could not be confirmed. A missing response does not mean the original login was restored.`,"nativeMain.doctorHint":`Run {cmd} on the server for details.`,"nativeMain.saved":`Current login saved as a profile. The physical login was not changed.`,"nativeMain.lastResult":`Last confirmed result`,"nativeMain.restart":`Login change completed. The server requires a native Codex restart.`,"nativeMain.done":`Operation completed. The server did not request a native Codex restart.`,"nativeMain.refreshFailed":`Could not refresh all account information. A completed change has not been undone. Refresh before another operation.`,"nativeMain.refresh":`Refresh status`,"nativeMain.unsupported":`This credential store is not supported. Native profile management requires the file credential store.`,"nativeMain.recoveryHint":`An interrupted transaction needs recovery. Recover finishes reconciliation; restore rolls back the pending transaction. Neither action runs until you confirm.`,"nativeMain.recover":`Recover interrupted change`,"nativeMain.rollback":`Restore pending transaction`,"nativeMain.empty":`No native profiles are registered yet. Save the current login first.`,"nativeMain.active":`Active`,"nativeMain.switchTo":`Switch native login to {label}`,"nativeMain.switch":`Switch`,"nativeMain.restore":`Return to previously displayed: {label}`,"nativeMain.restoreHint":`This shortcut selects the profile shown before your last switch, not a server-verified transaction history. It is kept only on this page.`,"nativeMain.label":`Profile label`,"nativeMain.save":`Save current as profile`,"nativeMain.saveHint":`For an already registered active login, saving updates its label. It does not add a new login.`,"nativeMain.confirmHint":`This changes only the native login in the home below. Close native Codex on that computer first. Pool strategy, membership, provider keys and task/history data are not edited by this panel.`,"nativeMain.stepClose":`Close native Codex on the server computer for the displayed CODEX_HOME. Keep it closed until you have checked the result.`,"nativeMain.stepConfirm":`Select the checkbox below to confirm Codex is closed, then confirm the change.`,"nativeMain.stepResult":`Wait for the result and the updated active profile, then follow the instructions to reopen Codex.`,"nativeMain.reopenHint":`Check the updated active profile, then reopen native Codex on the server computer with the displayed CODEX_HOME. Follow any restart requirement shown here.`,"nativeMain.retryHint":`Refresh the status and review the active profile. To retry a login change, select the action again and confirm that Codex is closed. Nothing is retried automatically.`,"nativeMain.errorCodexBusy":`Native Codex is still running on the server computer. Close it for the displayed CODEX_HOME before retrying.`,"nativeMain.errorProcessCheck":`The server could not verify whether native Codex is running. Check that Codex is closed on that computer and inspect the server diagnostics before retrying.`,"nativeMain.errorRequests":`Main-account requests are still running or draining. Wait for them to finish before retrying.`,"nativeMain.errorBusy":`Another native-login operation is running. Wait for it to finish before trying again.`,"nativeMain.errorAuth":`The current native login could not be read or verified against its saved profile. Inspect the server diagnostics before another change.`,"nativeMain.errorKeyStore":`The saved profile or operating-system key store could not be opened. Inspect the key-store and profile diagnostics on the server before another change.`,"nativeMain.errorStorage":`The server cannot safely access the login folder or profile storage. Check the server diagnostics before another change.`,"nativeMain.errorProfile":`The saved profile state cannot be used for this action. Refresh and review the profile list; inspect the diagnostics if the problem persists.`,"nativeMain.errorRecovery":`Profile storage or an interrupted transaction needs attention. Refresh status and inspect the server diagnostics. Use recovery controls only when the panel offers them.`,"nativeMain.errorRolledBack":`The server reports that the switch failed and the original login was restored. Review the refreshed active profile before another attempt.`,"nativeMain.stopped":`I have stopped native Codex using this CODEX_HOME and understand that a restart may be required.`,"nativeMain.cancel":`Cancel`,"nativeMain.confirm":`Confirm native-login change`,"nativeMain.unavailable":`Profile changes are unavailable. Check the diagnostic code before continuing.`},ko:{"nativeMain.title":`실제 Codex 메인 로그인`,"nativeMain.manage":`메인 로그인 관리`,"nativeMain.close":`메인 로그인 관리 닫기`,"nativeMain.separate":`이 기능은 실제 Codex 로그인을 변경합니다. 다음 요청에 사용할 Pool 계정 선택과는 다릅니다.`,"nativeMain.home":`실제 적용되는 CODEX_HOME`,"nativeMain.current":`등록된 활성 프로필`,"nativeMain.unregistered":`등록되지 않음`,"nativeMain.physicalHint":`이 경로는 OpenCodex 서버의 경로이며, 현재 컴퓨터와 다를 수 있습니다. 서버는 전환 전에 실제 로그인을 검증합니다.`,"nativeMain.busyOther":`다른 메인 로그인 작업이 진행 중입니다. 먼저 완료하거나 취소해 주세요.`,"nativeMain.working":`처리 중…`,"nativeMain.changed":`적용 경로, 활성 프로필 또는 복구 상태가 바뀌었습니다. 갱신된 정보를 검토하고 다시 확인해 주세요.`,"nativeMain.error":`결과를 확인하지 못했습니다. 응답이 없다고 해서 원래 로그인이 복원되었다는 뜻은 아닙니다.`,"nativeMain.doctorHint":`자세한 내용은 서버에서 {cmd} 명령을 실행해 확인하세요.`,"nativeMain.saved":`현재 로그인을 프로필로 저장했습니다. 실제 로그인은 변경하지 않았습니다.`,"nativeMain.lastResult":`마지막으로 확인된 결과`,"nativeMain.restart":`로그인 변경을 완료했습니다. 서버는 Codex 재시작이 필요하다고 응답했습니다.`,"nativeMain.done":`작업을 완료했습니다. 서버는 Codex 재시작이 필요하지 않다고 응답했습니다.`,"nativeMain.refreshFailed":`일부 계정 정보를 갱신하지 못했습니다. 완료된 변경이 취소된 것은 아닙니다. 다음 작업 전에 새로고침해 주세요.`,"nativeMain.refresh":`상태 새로고침`,"nativeMain.unsupported":`이 자격 증명 저장 방식은 지원하지 않습니다. 파일 저장 방식이 필요합니다.`,"nativeMain.recoveryHint":`중단된 전환에 복구가 필요합니다. 복구는 상태 정리를 진행하고, 되돌리기는 미완료 전환을 원복합니다. 확인 전에는 실행되지 않습니다.`,"nativeMain.recover":`중단된 전환 복구`,"nativeMain.rollback":`미완료 전환 되돌리기`,"nativeMain.empty":`등록된 메인 프로필이 없습니다. 현재 로그인을 먼저 저장해 주세요.`,"nativeMain.active":`활성`,"nativeMain.switchTo":`실제 로그인을 {label}(으)로 전환`,"nativeMain.switch":`전환`,"nativeMain.restore":`이전에 표시된 프로필로 돌아가기: {label}`,"nativeMain.restoreHint":`마지막 전환 전에 표시된 프로필을 선택하는 바로가기입니다. 서버가 검증한 거래 이력은 아니며 이 페이지에만 보관됩니다.`,"nativeMain.label":`프로필 이름`,"nativeMain.save":`현재 로그인을 프로필로 저장`,"nativeMain.saveHint":`현재 로그인이 이미 등록되어 있으면 이름을 변경합니다. 새 로그인은 추가하지 않습니다.`,"nativeMain.confirmHint":`아래 경로의 실제 로그인만 변경합니다. 해당 컴퓨터의 Codex를 먼저 종료해 주세요. 이 패널은 Pool 전략·구성, 공급자 키, 작업·기록 데이터를 수정하지 않습니다.`,"nativeMain.stepClose":`서버 컴퓨터에서 표시된 CODEX_HOME을 사용하는 실제 Codex를 종료합니다. 결과를 확인할 때까지 종료 상태를 유지합니다.`,"nativeMain.stepConfirm":`아래 체크박스를 선택해 Codex가 종료되었음을 확인한 다음 변경을 확인합니다.`,"nativeMain.stepResult":`작업 결과와 갱신된 활성 프로필을 기다린 다음 안내에 따라 Codex를 다시 엽니다.`,"nativeMain.reopenHint":`갱신된 활성 프로필을 확인한 다음 서버 컴퓨터에서 표시된 CODEX_HOME을 사용하는 실제 Codex를 다시 엽니다. 여기에 재시작이 필요하다고 표시되면 해당 안내를 따릅니다.`,"nativeMain.retryHint":`상태를 새로고침하고 활성 프로필을 확인합니다. 로그인 변경을 다시 시도하려면 작업을 다시 선택하고 Codex가 종료되었음을 확인해야 합니다. 자동으로 다시 시도하지 않습니다.`,"nativeMain.errorCodexBusy":`서버 컴퓨터에서 Codex가 아직 실행 중입니다. 다시 시도하기 전에 표시된 CODEX_HOME을 사용하는 Codex를 종료하세요.`,"nativeMain.errorProcessCheck":`서버가 Codex 실행 여부를 확인하지 못했습니다. 해당 컴퓨터에서 Codex가 종료됐는지 확인하고 서버 진단을 살펴본 뒤 다시 시도하세요.`,"nativeMain.errorRequests":`메인 계정 요청이 실행 중이거나 종료를 기다리고 있습니다. 요청이 끝난 뒤 다시 시도하세요.`,"nativeMain.errorBusy":`다른 실제 로그인 작업이 진행 중입니다. 해당 작업이 끝날 때까지 기다린 다음 다시 시도해야 합니다.`,"nativeMain.errorAuth":`현재 실제 로그인을 읽거나 저장된 프로필과 일치하는지 확인하지 못했습니다. 다음 변경 전에 서버 진단을 확인하세요.`,"nativeMain.errorKeyStore":`저장된 프로필 또는 운영체제 키 저장소를 열지 못했습니다. 다음 변경 전에 서버에서 키 저장소와 프로필 진단을 확인하세요.`,"nativeMain.errorStorage":`서버가 로그인 폴더 또는 프로필 저장소에 안전하게 접근할 수 없습니다. 다음 변경 전에 서버 진단을 확인해야 합니다.`,"nativeMain.errorProfile":`저장된 프로필 상태로 이 작업을 수행할 수 없습니다. 프로필 목록을 새로고침하고 확인하세요. 문제가 계속되면 진단을 확인하세요.`,"nativeMain.errorRecovery":`프로필 저장소 또는 중단된 전환을 확인해야 합니다. 상태를 새로고침하고 서버 진단을 확인하세요. 패널에 복구 기능이 표시될 때만 사용하세요.`,"nativeMain.errorRolledBack":`서버는 전환이 실패하여 원래 로그인을 복원했다고 응답했습니다. 다시 시도하기 전에 갱신된 활성 프로필을 확인하세요.`,"nativeMain.stopped":`이 CODEX_HOME을 사용하는 Codex를 종료했으며, 변경 후 재시작이 필요할 수 있음을 확인했습니다.`,"nativeMain.cancel":`취소`,"nativeMain.confirm":`메인 로그인 변경 확인`,"nativeMain.unavailable":`프로필을 변경할 수 없습니다. 계속하기 전에 진단 코드를 확인하세요.`},de:{"nativeMain.title":`Native Codex-Hauptanmeldung`,"nativeMain.manage":`Hauptanmeldung verwalten`,"nativeMain.close":`Anmeldungsverwaltung schließen`,"nativeMain.separate":`Diese Aktionen ändern die native Codex-Anmeldung, nicht das Konto für die nächste Pool-Anfrage.`,"nativeMain.home":`Wirksames CODEX_HOME`,"nativeMain.current":`Registriertes aktives Profil`,"nativeMain.unregistered":`Nicht registriert`,"nativeMain.physicalHint":`Dieser Pfad gehört zum OpenCodex-Server, möglicherweise auf einem anderen Computer. Das Backend prüft die tatsächliche Anmeldung vor jedem Wechsel.`,"nativeMain.busyOther":`Eine andere native Anmeldung läuft. Beenden oder abbrechen Sie sie zuerst.`,"nativeMain.working":`Wird verarbeitet…`,"nativeMain.changed":`Pfad, aktives Profil oder Wiederherstellungsstatus haben sich geändert. Prüfen und bestätigen Sie den neuen Stand.`,"nativeMain.error":`Das Ergebnis konnte nicht bestätigt werden. Eine fehlende Antwort bedeutet nicht, dass die ursprüngliche Anmeldung wiederhergestellt wurde.`,"nativeMain.doctorHint":`Führen Sie {cmd} auf dem Server aus, um Details zu sehen.`,"nativeMain.saved":`Aktuelle Anmeldung als Profil gespeichert. Die tatsächliche Anmeldung wurde nicht geändert.`,"nativeMain.lastResult":`Zuletzt bestätigtes Ergebnis`,"nativeMain.restart":`Anmeldung geändert. Der Server verlangt einen Neustart von nativem Codex.`,"nativeMain.done":`Vorgang abgeschlossen. Der Server verlangt keinen Codex-Neustart.`,"nativeMain.refreshFailed":`Nicht alle Kontodaten konnten aktualisiert werden. Eine abgeschlossene Änderung wurde nicht zurückgenommen. Aktualisieren Sie vor weiteren Aktionen.`,"nativeMain.refresh":`Status aktualisieren`,"nativeMain.unsupported":`Dieser Anmeldespeicher wird nicht unterstützt. Native Profile benötigen den dateibasierten Speicher.`,"nativeMain.recoveryHint":`Eine unterbrochene Transaktion muss wiederhergestellt werden. Wiederherstellen gleicht den Zustand ab; Zurücksetzen nimmt die ausstehende Transaktion zurück. Beide benötigen Ihre Bestätigung.`,"nativeMain.recover":`Unterbrochenen Wechsel wiederherstellen`,"nativeMain.rollback":`Ausstehende Transaktion zurücksetzen`,"nativeMain.empty":`Noch keine nativen Profile. Speichern Sie zuerst die aktuelle Anmeldung.`,"nativeMain.active":`Aktiv`,"nativeMain.switchTo":`Native Anmeldung zu {label} wechseln`,"nativeMain.switch":`Wechseln`,"nativeMain.restore":`Zum zuvor angezeigten Profil: {label}`,"nativeMain.restoreHint":`Diese Verknüpfung wählt das vor Ihrem letzten Wechsel angezeigte Profil, keinen servergeprüften Transaktionsverlauf. Sie bleibt nur auf dieser Seite erhalten.`,"nativeMain.label":`Profilname`,"nativeMain.save":`Aktuelle Anmeldung als Profil speichern`,"nativeMain.saveHint":`Ist die aktive Anmeldung bereits registriert, wird ihr Name geändert. Es wird keine neue Anmeldung hinzugefügt.`,"nativeMain.confirmHint":`Nur die native Anmeldung im folgenden Pfad wird geändert. Schließen Sie dort zuerst Codex. Pool-Strategie, Mitgliedschaft, Anbieterschlüssel sowie Aufgaben und Verlauf werden nicht bearbeitet.`,"nativeMain.stepClose":`Schließen Sie natives Codex auf dem Servercomputer für das angezeigte CODEX_HOME. Lassen Sie es geschlossen, bis Sie das Ergebnis geprüft haben.`,"nativeMain.stepConfirm":`Aktivieren Sie das Kontrollkästchen unten, um zu bestätigen, dass Codex geschlossen ist, und bestätigen Sie dann die Änderung.`,"nativeMain.stepResult":`Warten Sie auf das Ergebnis und das aktualisierte aktive Profil und folgen Sie dann den Anweisungen zum erneuten Öffnen von Codex.`,"nativeMain.reopenHint":`Prüfen Sie das aktualisierte aktive Profil und öffnen Sie dann natives Codex auf dem Servercomputer mit dem angezeigten CODEX_HOME. Beachten Sie alle hier angezeigten Neustartanforderungen.`,"nativeMain.retryHint":`Aktualisieren Sie den Status und prüfen Sie das aktive Profil. Um einen Anmeldewechsel erneut zu versuchen, wählen Sie die Aktion erneut und bestätigen Sie, dass Codex geschlossen ist. Nichts wird automatisch erneut versucht.`,"nativeMain.errorCodexBusy":`Natives Codex läuft noch auf dem Servercomputer. Schließen Sie es für das angezeigte CODEX_HOME vor einem erneuten Versuch.`,"nativeMain.errorProcessCheck":`Der Server konnte nicht prüfen, ob natives Codex läuft. Prüfen Sie auf diesem Computer, dass Codex beendet ist, und lesen Sie vor einem erneuten Versuch die Serverdiagnose.`,"nativeMain.errorRequests":`Anfragen des Hauptkontos laufen noch oder werden abgearbeitet. Warten Sie vor einem erneuten Versuch auf deren Abschluss.`,"nativeMain.errorBusy":`Ein anderer Vorgang für die native Anmeldung läuft. Warten Sie, bis er abgeschlossen ist, bevor Sie es erneut versuchen.`,"nativeMain.errorAuth":`Die aktuelle native Anmeldung konnte nicht gelesen oder mit dem gespeicherten Profil abgeglichen werden. Prüfen Sie vor einer weiteren Änderung die Serverdiagnose.`,"nativeMain.errorKeyStore":`Das gespeicherte Profil oder der Schlüsselspeicher des Betriebssystems konnte nicht geöffnet werden. Prüfen Sie vor einer weiteren Änderung die Schlüssel- und Profildiagnose auf dem Server.`,"nativeMain.errorStorage":`Der Server kann nicht sicher auf den Anmeldeordner oder den Profilspeicher zugreifen. Prüfen Sie vor einer weiteren Änderung die Serverdiagnose.`,"nativeMain.errorProfile":`Der gespeicherte Profilzustand erlaubt diese Aktion nicht. Aktualisieren und prüfen Sie die Profilliste; lesen Sie bei anhaltenden Problemen die Diagnose.`,"nativeMain.errorRecovery":`Der Profilspeicher oder eine unterbrochene Transaktion benötigt Aufmerksamkeit. Aktualisieren Sie den Status und prüfen Sie die Serverdiagnose. Nutzen Sie Wiederherstellungsaktionen nur, wenn das Panel sie anbietet.`,"nativeMain.errorRolledBack":`Der Server meldet, dass der Wechsel fehlgeschlagen ist und die ursprüngliche Anmeldung wiederhergestellt wurde. Prüfen Sie vor einem erneuten Versuch das aktualisierte aktive Profil.`,"nativeMain.stopped":`Ich habe natives Codex für dieses CODEX_HOME beendet und weiß, dass ein Neustart nötig sein kann.`,"nativeMain.cancel":`Abbrechen`,"nativeMain.confirm":`Änderung der Hauptanmeldung bestätigen`,"nativeMain.unavailable":`Profiländerungen sind nicht verfügbar. Prüfen Sie zuerst den Diagnosecode.`},fr:{"nativeMain.title":`Connexion principale native Codex`,"nativeMain.manage":`Gérer la connexion principale`,"nativeMain.close":`Fermer la gestion de connexion`,"nativeMain.separate":`Ces commandes modifient la connexion native Codex, pas le compte choisi pour la prochaine requête du Pool.`,"nativeMain.home":`CODEX_HOME effectif`,"nativeMain.current":`Profil actif enregistré`,"nativeMain.unregistered":`Non enregistré`,"nativeMain.physicalHint":`Ce chemin appartient au serveur OpenCodex, qui peut être un autre ordinateur. Le serveur vérifie la connexion réelle avant tout changement.`,"nativeMain.busyOther":`Une autre opération de connexion est en cours. Terminez-la ou annulez-la.`,"nativeMain.working":`Traitement…`,"nativeMain.changed":`Le chemin, le profil actif ou la récupération a changé. Vérifiez les informations actualisées et confirmez à nouveau.`,"nativeMain.error":`Le résultat n’a pas pu être confirmé. L’absence de réponse ne signifie pas que la connexion d’origine a été restaurée.`,"nativeMain.doctorHint":`Exécutez {cmd} sur le serveur pour obtenir des détails.`,"nativeMain.saved":`Connexion actuelle enregistrée comme profil. La connexion réelle reste inchangée.`,"nativeMain.lastResult":`Dernier résultat confirmé`,"nativeMain.restart":`Connexion modifiée. Le serveur demande un redémarrage de Codex natif.`,"nativeMain.done":`Opération terminée. Le serveur ne demande pas de redémarrage de Codex.`,"nativeMain.refreshFailed":`Certaines informations n’ont pas pu être actualisées. Une modification terminée n’a pas été annulée. Actualisez avant une autre opération.`,"nativeMain.refresh":`Actualiser l’état`,"nativeMain.unsupported":`Ce stockage d’identifiants n’est pas pris en charge. Les profils natifs exigent le stockage dans un fichier.`,"nativeMain.recoveryHint":`Une transaction interrompue nécessite une récupération. Récupérer réconcilie l’état ; restaurer annule la transaction en attente. Les deux actions exigent une confirmation.`,"nativeMain.recover":`Récupérer le changement interrompu`,"nativeMain.rollback":`Restaurer la transaction en attente`,"nativeMain.empty":`Aucun profil natif enregistré. Enregistrez d’abord la connexion actuelle.`,"nativeMain.active":`Actif`,"nativeMain.switchTo":`Utiliser {label} comme connexion native`,"nativeMain.switch":`Changer`,"nativeMain.restore":`Revenir au profil affiché précédemment : {label}`,"nativeMain.restoreHint":`Ce raccourci sélectionne le profil affiché avant votre dernier changement, et non un historique de transactions vérifié par le serveur. Il reste uniquement sur cette page.`,"nativeMain.label":`Nom du profil`,"nativeMain.save":`Enregistrer la connexion actuelle`,"nativeMain.saveHint":`Si la connexion active est déjà enregistrée, son nom est mis à jour. Aucune nouvelle connexion n’est ajoutée.`,"nativeMain.confirmHint":`Seule la connexion native du chemin ci-dessous change. Fermez d’abord Codex sur cet ordinateur. Ce panneau ne modifie ni la stratégie ni les membres du Pool, les clés fournisseur, les tâches ou l’historique.`,"nativeMain.stepClose":`Fermez Codex natif sur l’ordinateur du serveur pour le CODEX_HOME affiché. Gardez-le fermé jusqu’à ce que vous ayez vérifié le résultat.`,"nativeMain.stepConfirm":`Cochez la case ci-dessous pour confirmer que Codex est fermé, puis confirmez la modification.`,"nativeMain.stepResult":`Attendez le résultat et le profil actif actualisé, puis suivez les instructions pour rouvrir Codex.`,"nativeMain.reopenHint":`Vérifiez le profil actif actualisé, puis rouvrez Codex natif sur l’ordinateur du serveur avec le CODEX_HOME affiché. Respectez toute exigence de redémarrage indiquée ici.`,"nativeMain.retryHint":`Actualisez l’état et vérifiez le profil actif. Pour réessayer un changement de connexion, sélectionnez à nouveau l’action et confirmez que Codex est fermé. Aucune action n’est réessayée automatiquement.`,"nativeMain.errorCodexBusy":`Codex natif fonctionne encore sur l’ordinateur du serveur. Fermez-le pour le CODEX_HOME affiché avant de réessayer.`,"nativeMain.errorProcessCheck":`Le serveur n’a pas pu vérifier si Codex natif fonctionne. Vérifiez son arrêt sur cet ordinateur et consultez le diagnostic du serveur avant de réessayer.`,"nativeMain.errorRequests":`Des requêtes du compte principal sont encore en cours ou en cours de terminaison. Attendez leur fin avant de réessayer.`,"nativeMain.errorBusy":`Une autre opération de connexion native est en cours. Attendez qu’elle se termine avant de réessayer.`,"nativeMain.errorAuth":`La connexion native actuelle n’a pas pu être lue ou vérifiée avec le profil enregistré. Consultez le diagnostic du serveur avant toute autre modification.`,"nativeMain.errorKeyStore":`Le profil enregistré ou le trousseau du système n’a pas pu être ouvert. Consultez leurs diagnostics sur le serveur avant toute autre modification.`,"nativeMain.errorStorage":`Le serveur ne peut pas accéder en toute sécurité au dossier de connexion ou au stockage des profils. Consultez le diagnostic du serveur avant toute autre modification.`,"nativeMain.errorProfile":`L’état du profil enregistré ne permet pas cette action. Actualisez et vérifiez la liste ; consultez le diagnostic si le problème persiste.`,"nativeMain.errorRecovery":`Le stockage des profils ou une transaction interrompue nécessite une intervention. Actualisez l’état et consultez le diagnostic du serveur. Utilisez la récupération uniquement si le panneau la propose.`,"nativeMain.errorRolledBack":`Le serveur indique que le changement a échoué et que la connexion initiale a été restaurée. Vérifiez le profil actif actualisé avant un nouvel essai.`,"nativeMain.stopped":`J’ai arrêté Codex natif utilisant ce CODEX_HOME et comprends qu’un redémarrage peut être nécessaire.`,"nativeMain.cancel":`Annuler`,"nativeMain.confirm":`Confirmer le changement de connexion`,"nativeMain.unavailable":`La modification des profils est indisponible. Vérifiez le code de diagnostic avant de continuer.`},zh:{"nativeMain.title":`原生 Codex 主登录`,"nativeMain.manage":`管理主登录`,"nativeMain.close":`关闭主登录管理`,"nativeMain.separate":`这些操作更改原生 Codex 登录,不会选择下一次 Pool 请求使用的账号。`,"nativeMain.home":`实际使用的 CODEX_HOME`,"nativeMain.current":`已注册的活动配置`,"nativeMain.unregistered":`尚未注册`,"nativeMain.physicalHint":`此路径属于 OpenCodex 服务器,可能位于另一台计算机。后端会在切换前验证实际登录。`,"nativeMain.busyOther":`另一项原生登录操作正在进行。请先完成或取消。`,"nativeMain.working":`处理中…`,"nativeMain.changed":`路径、活动配置或恢复状态已变化。请查看刷新后的状态并重新确认。`,"nativeMain.error":`无法确认结果。未收到响应并不意味着原来的登录已恢复。`,"nativeMain.doctorHint":`在服务器上运行 {cmd} 可查看详细信息。`,"nativeMain.saved":`已将当前登录保存为配置。实际登录未改变。`,"nativeMain.lastResult":`最近确认的结果`,"nativeMain.restart":`登录已更改。服务器要求重启原生 Codex。`,"nativeMain.done":`操作已完成。服务器未要求重新启动 Codex。`,"nativeMain.refreshFailed":`部分账号信息刷新失败。已完成的更改并未撤销。请在继续操作前刷新。`,"nativeMain.refresh":`刷新状态`,"nativeMain.unsupported":`不支持此凭据存储方式。原生配置管理需要文件凭据存储。`,"nativeMain.recoveryHint":`中断的事务需要恢复。恢复会完成状态协调;还原会回滚待处理事务。两项操作均需确认后才执行。`,"nativeMain.recover":`恢复中断的更改`,"nativeMain.rollback":`还原待处理事务`,"nativeMain.empty":`尚无原生配置。请先保存当前登录。`,"nativeMain.active":`活动`,"nativeMain.switchTo":`将原生登录切换为 {label}`,"nativeMain.switch":`切换`,"nativeMain.restore":`返回之前显示的配置档案:{label}`,"nativeMain.restoreHint":`此快捷方式选择上次切换前显示的配置档案,并非服务器验证的事务历史记录,仅保留在此页面。`,"nativeMain.label":`配置名称`,"nativeMain.save":`将当前登录保存为配置`,"nativeMain.saveHint":`如果当前活动登录已注册,保存会更新其名称,不会添加新登录。`,"nativeMain.confirmHint":`仅更改以下路径中的原生登录。请先关闭该计算机上的 Codex。此面板不会编辑 Pool 策略、成员、供应商密钥或任务与历史数据。`,"nativeMain.stepClose":`在服务器计算机上关闭使用所示 CODEX_HOME 的原生 Codex。在检查结果之前,请保持 Codex 关闭。`,"nativeMain.stepConfirm":`勾选下方复选框,确认 Codex 已关闭,然后确认更改。`,"nativeMain.stepResult":`等待结果和更新后的活动配置,然后按照提示重新打开 Codex。`,"nativeMain.reopenHint":`检查更新后的活动配置,然后在服务器计算机上重新打开使用所示 CODEX_HOME 的原生 Codex。请遵循此处显示的任何重启要求。`,"nativeMain.retryHint":`刷新状态并检查活动配置。要重试登录更改,请重新选择操作并确认 Codex 已关闭。不会自动重试任何操作。`,"nativeMain.errorCodexBusy":`服务器计算机上的原生 Codex 仍在运行。重试前请关闭使用所示 CODEX_HOME 的 Codex。`,"nativeMain.errorProcessCheck":`服务器无法验证原生 Codex 是否在运行。重试前请确认该计算机上的 Codex 已关闭,并检查服务器诊断。`,"nativeMain.errorRequests":`主账号请求仍在运行或等待结束。请等待请求结束后再重试。`,"nativeMain.errorBusy":`另一项原生登录操作正在运行。请等待其完成后再试。`,"nativeMain.errorAuth":`无法读取当前原生登录或验证其是否匹配保存的配置。再次更改前请检查服务器诊断。`,"nativeMain.errorKeyStore":`无法打开保存的配置或操作系统密钥存储。再次更改前请检查服务器上的密钥存储和配置诊断。`,"nativeMain.errorStorage":`服务器无法安全访问登录文件夹或配置存储。再次更改前,请检查服务器诊断。`,"nativeMain.errorProfile":`保存的配置状态无法用于此操作。请刷新并检查配置列表;若问题持续,请检查诊断。`,"nativeMain.errorRecovery":`配置存储或中断的事务需要处理。请刷新状态并检查服务器诊断。仅在面板提供恢复功能时使用。`,"nativeMain.errorRolledBack":`服务器报告切换失败且原登录已恢复。再次尝试前请检查刷新的活动配置。`,"nativeMain.stopped":`我已停止使用此 CODEX_HOME 的原生 Codex,并了解之后可能需要重新启动。`,"nativeMain.cancel":`取消`,"nativeMain.confirm":`确认更改原生登录`,"nativeMain.unavailable":`目前无法更改配置档案。请先检查诊断代码。`},"zh-TW":{"nativeMain.title":`原生 Codex 主登入`,"nativeMain.manage":`管理主登入`,"nativeMain.close":`關閉主登入管理`,"nativeMain.separate":`這些操作會變更原生 Codex 登入,不會選擇下一次 Pool 請求使用的帳號。`,"nativeMain.home":`實際使用的 CODEX_HOME`,"nativeMain.current":`已註冊的作用中設定檔`,"nativeMain.unregistered":`尚未註冊`,"nativeMain.physicalHint":`此路徑屬於 OpenCodex 伺服器,可能位於另一台電腦。後端會在切換前驗證實際登入。`,"nativeMain.busyOther":`另一項原生登入操作正在進行。請先完成或取消。`,"nativeMain.working":`處理中…`,"nativeMain.changed":`路徑、作用中設定檔或復原狀態已變更。請查看更新後的狀態並再次確認。`,"nativeMain.error":`無法確認結果。未收到回應並不代表原本的登入已還原。`,"nativeMain.doctorHint":`在伺服器上執行 {cmd} 可查看詳細資訊。`,"nativeMain.saved":`已將目前登入儲存為設定檔。實際登入未變更。`,"nativeMain.lastResult":`最近確認的結果`,"nativeMain.restart":`登入已變更。伺服器要求重新啟動原生 Codex。`,"nativeMain.done":`操作已完成。伺服器未要求重新啟動 Codex。`,"nativeMain.refreshFailed":`部分帳號資訊更新失敗。已完成的變更並未撤銷。請在繼續操作前重新整理。`,"nativeMain.refresh":`重新整理狀態`,"nativeMain.unsupported":`不支援此憑證儲存方式。原生設定檔管理需要檔案憑證儲存。`,"nativeMain.recoveryHint":`中斷的交易需要復原。復原會完成狀態協調;還原會回復待處理的交易。兩項操作都需確認後才執行。`,"nativeMain.recover":`復原中斷的變更`,"nativeMain.rollback":`還原待處理交易`,"nativeMain.empty":`尚無原生設定檔。請先儲存目前登入。`,"nativeMain.active":`作用中`,"nativeMain.switchTo":`將原生登入切換為 {label}`,"nativeMain.switch":`切換`,"nativeMain.restore":`返回先前顯示的設定檔:{label}`,"nativeMain.restoreHint":`此捷徑選擇上次切換前顯示的設定檔,並非伺服器驗證的交易歷史紀錄,僅保留於此頁面。`,"nativeMain.label":`設定檔名稱`,"nativeMain.save":`將目前登入儲存為設定檔`,"nativeMain.saveHint":`若目前登入已註冊,儲存會更新名稱,不會新增登入。`,"nativeMain.confirmHint":`僅變更以下路徑中的原生登入。請先關閉該電腦上的 Codex。此面板不會編輯 Pool 策略、成員、供應商金鑰或工作與歷史資料。`,"nativeMain.stepClose":`在伺服器電腦上關閉使用所示 CODEX_HOME 的原生 Codex。在檢查結果之前,請保持 Codex 關閉。`,"nativeMain.stepConfirm":`勾選下方核取方塊,確認 Codex 已關閉,然後確認變更。`,"nativeMain.stepResult":`等待結果和更新後的作用中設定檔,然後依照指示重新開啟 Codex。`,"nativeMain.reopenHint":`檢查更新後的作用中設定檔,然後在伺服器電腦上重新開啟使用所示 CODEX_HOME 的原生 Codex。請遵循此處顯示的任何重新啟動要求。`,"nativeMain.retryHint":`重新整理狀態並檢查作用中設定檔。若要重試登入變更,請重新選擇操作並確認 Codex 已關閉。不會自動重試任何操作。`,"nativeMain.errorCodexBusy":`伺服器電腦上的原生 Codex 仍在執行。重試前請關閉使用所示 CODEX_HOME 的 Codex。`,"nativeMain.errorProcessCheck":`伺服器無法驗證原生 Codex 是否在執行。重試前請確認該電腦上的 Codex 已關閉,並檢查伺服器診斷。`,"nativeMain.errorRequests":`主帳號請求仍在執行或等待結束。請等待請求結束後再重試。`,"nativeMain.errorBusy":`另一項原生登入操作正在執行。請等待其完成後再試。`,"nativeMain.errorAuth":`無法讀取目前的原生登入或驗證其是否符合已儲存的設定檔。再次變更前請檢查伺服器診斷。`,"nativeMain.errorKeyStore":`無法開啟已儲存的設定檔或作業系統金鑰儲存區。再次變更前請檢查伺服器上的金鑰儲存區和設定檔診斷。`,"nativeMain.errorStorage":`伺服器無法安全存取登入資料夾或設定檔儲存區。再次變更前,請檢查伺服器診斷。`,"nativeMain.errorProfile":`已儲存的設定檔狀態無法用於此操作。請重新整理並檢查設定檔清單;若問題持續,請檢查診斷。`,"nativeMain.errorRecovery":`設定檔儲存區或中斷的交易需要處理。請重新整理狀態並檢查伺服器診斷。僅在面板提供復原功能時使用。`,"nativeMain.errorRolledBack":`伺服器回報切換失敗且原登入已還原。再次嘗試前請檢查更新的作用中設定檔。`,"nativeMain.stopped":`我已停止使用此 CODEX_HOME 的原生 Codex,並了解之後可能需要重新啟動。`,"nativeMain.cancel":`取消`,"nativeMain.confirm":`確認變更原生登入`,"nativeMain.unavailable":`目前無法變更設定檔。請先檢查診斷代碼。`},ru:{"nativeMain.title":`Основной вход в Codex`,"nativeMain.manage":`Управление основным входом`,"nativeMain.close":`Закрыть управление входом`,"nativeMain.separate":`Эти действия меняют вход самого Codex, а не аккаунт для следующего запроса Pool.`,"nativeMain.home":`Фактический CODEX_HOME`,"nativeMain.current":`Зарегистрированный активный профиль`,"nativeMain.unregistered":`Не зарегистрирован`,"nativeMain.physicalHint":`Этот путь относится к серверу OpenCodex, возможно на другом компьютере. Сервер проверяет фактический вход перед переключением.`,"nativeMain.busyOther":`Выполняется другая операция входа. Сначала завершите или отмените её.`,"nativeMain.working":`Обработка…`,"nativeMain.changed":`Путь, активный профиль или состояние восстановления изменились. Проверьте обновлённые данные и подтвердите снова.`,"nativeMain.error":`Не удалось подтвердить результат. Отсутствие ответа не означает, что исходный вход был восстановлен.`,"nativeMain.doctorHint":`Выполните {cmd} на сервере, чтобы увидеть подробности.`,"nativeMain.saved":`Текущий вход сохранён как профиль. Фактический вход не изменён.`,"nativeMain.lastResult":`Последний подтверждённый результат`,"nativeMain.restart":`Вход изменён. Сервер требует перезапуска нативного Codex.`,"nativeMain.done":`Операция завершена. Сервер не требует перезапуска Codex.`,"nativeMain.refreshFailed":`Не все данные аккаунтов обновлены. Завершённое изменение не отменено. Обновите состояние перед следующей операцией.`,"nativeMain.refresh":`Обновить состояние`,"nativeMain.unsupported":`Этот способ хранения учётных данных не поддерживается. Требуется файловое хранилище.`,"nativeMain.recoveryHint":`Прерванная транзакция требует восстановления. Восстановление согласует состояние, а откат отменяет незавершённую транзакцию. Оба действия требуют подтверждения.`,"nativeMain.recover":`Восстановить прерванное изменение`,"nativeMain.rollback":`Откатить незавершённую транзакцию`,"nativeMain.empty":`Профилей пока нет. Сначала сохраните текущий вход.`,"nativeMain.active":`Активен`,"nativeMain.switchTo":`Переключить вход Codex на {label}`,"nativeMain.switch":`Переключить`,"nativeMain.restore":`Вернуться к ранее показанному профилю: {label}`,"nativeMain.restoreHint":`Этот ярлык выбирает профиль, показанный перед последним переключением, а не подтверждённую сервером историю транзакций. Он хранится только на этой странице.`,"nativeMain.label":`Название профиля`,"nativeMain.save":`Сохранить текущий вход`,"nativeMain.saveHint":`Если активный вход уже зарегистрирован, обновляется его название. Новый вход не добавляется.`,"nativeMain.confirmHint":`Изменится только вход Codex по указанному пути. Сначала закройте Codex на том компьютере. Панель не меняет стратегию и состав Pool, ключи провайдеров, задачи или историю.`,"nativeMain.stepClose":`Закройте нативный Codex на серверном компьютере, где он использует указанный CODEX_HOME. Не открывайте его, пока не проверите результат.`,"nativeMain.stepConfirm":`Установите флажок ниже, чтобы подтвердить, что Codex закрыт, затем подтвердите изменение.`,"nativeMain.stepResult":`Дождитесь результата и обновлённого активного профиля, затем следуйте инструкциям, чтобы снова открыть Codex.`,"nativeMain.reopenHint":`Проверьте обновлённый активный профиль, затем снова откройте нативный Codex на серверном компьютере с указанным CODEX_HOME. Соблюдайте все указанные здесь требования к перезапуску.`,"nativeMain.retryHint":`Обновите состояние и проверьте активный профиль. Чтобы повторить смену входа, выберите действие снова и подтвердите, что Codex закрыт. Никакие действия не повторяются автоматически.`,"nativeMain.errorCodexBusy":`Нативный Codex всё ещё работает на компьютере сервера. Перед повтором закройте Codex, использующий указанный CODEX_HOME.`,"nativeMain.errorProcessCheck":`Сервер не смог проверить, работает ли нативный Codex. Перед повтором проверьте его остановку на этом компьютере и диагностику сервера.`,"nativeMain.errorRequests":`Запросы основного аккаунта ещё выполняются или завершаются. Дождитесь их окончания перед повтором.`,"nativeMain.errorBusy":`Выполняется другая операция нативного входа. Дождитесь её завершения, прежде чем повторить попытку.`,"nativeMain.errorAuth":`Не удалось прочитать текущий нативный вход или сверить его с сохранённым профилем. Перед новым изменением проверьте диагностику сервера.`,"nativeMain.errorKeyStore":`Не удалось открыть сохранённый профиль или системное хранилище ключей. Перед новым изменением проверьте их диагностику на сервере.`,"nativeMain.errorStorage":`Сервер не может безопасно получить доступ к папке входа или хранилищу профилей. Перед следующим изменением проверьте диагностику сервера.`,"nativeMain.errorProfile":`Состояние сохранённого профиля не подходит для этого действия. Обновите и проверьте список; если проблема остаётся, изучите диагностику.`,"nativeMain.errorRecovery":`Хранилище профилей или прерванная транзакция требуют внимания. Обновите состояние и проверьте диагностику сервера. Используйте восстановление только когда панель его предлагает.`,"nativeMain.errorRolledBack":`Сервер сообщает, что переключение не удалось и исходный вход восстановлен. Перед повтором проверьте обновлённый активный профиль.`,"nativeMain.stopped":`Я остановил Codex, использующий этот CODEX_HOME, и понимаю, что может потребоваться перезапуск.`,"nativeMain.cancel":`Отмена`,"nativeMain.confirm":`Подтвердить изменение входа`,"nativeMain.unavailable":`Изменение профилей недоступно. Перед продолжением проверьте диагностический код.`},ja:{"nativeMain.title":`ネイティブ Codex メインログイン`,"nativeMain.manage":`メインログインを管理`,"nativeMain.close":`ログイン管理を閉じる`,"nativeMain.separate":`この操作は Codex 本体のログインを変更します。次の Pool リクエストに使うアカウントの選択とは異なります。`,"nativeMain.home":`適用される CODEX_HOME`,"nativeMain.current":`登録済みの有効なプロファイル`,"nativeMain.unregistered":`未登録`,"nativeMain.physicalHint":`これは OpenCodex サーバーのパスであり、別のコンピューターの場合があります。切り替え前にサーバーが実際のログインを検証します。`,"nativeMain.busyOther":`別のログイン操作が実行中です。先に完了またはキャンセルしてください。`,"nativeMain.working":`処理中…`,"nativeMain.changed":`パス、有効なプロファイル、または復旧状態が変わりました。更新された情報を確認し、再度承認してください。`,"nativeMain.error":`結果を確認できませんでした。応答がないことは、元のログインが復元されたことを意味しません。`,"nativeMain.doctorHint":`詳細はサーバーで {cmd} を実行して確認してください。`,"nativeMain.saved":`現在のログインをプロファイルとして保存しました。実際のログインは変更していません。`,"nativeMain.lastResult":`最後に確認された結果`,"nativeMain.restart":`ログインを変更しました。サーバーはネイティブ Codex の再起動を要求しています。`,"nativeMain.done":`操作が完了しました。サーバーは Codex の再起動を要求していません。`,"nativeMain.refreshFailed":`一部のアカウント情報を更新できませんでした。完了した変更は取り消されていません。次の操作前に更新してください。`,"nativeMain.refresh":`状態を更新`,"nativeMain.unsupported":`この認証情報の保存方式には対応していません。ファイル方式が必要です。`,"nativeMain.recoveryHint":`中断された処理の復旧が必要です。復旧は状態を整合させ、復元は未完了の変更を戻します。どちらも確認後に実行されます。`,"nativeMain.recover":`中断された変更を復旧`,"nativeMain.rollback":`未完了の変更を復元`,"nativeMain.empty":`登録されたプロファイルがありません。まず現在のログインを保存してください。`,"nativeMain.active":`有効`,"nativeMain.switchTo":`ネイティブログインを {label} に切り替える`,"nativeMain.switch":`切り替え`,"nativeMain.restore":`以前表示されていたプロファイルに戻る: {label}`,"nativeMain.restoreHint":`最後の切り替え前に表示されていたプロファイルを選ぶショートカットです。サーバーが検証した取引履歴ではなく、このページだけに保持されます。`,"nativeMain.label":`プロファイル名`,"nativeMain.save":`現在のログインを保存`,"nativeMain.saveHint":`現在のログインが登録済みの場合は名前を更新します。新しいログインは追加しません。`,"nativeMain.confirmHint":`以下のパスの Codex ログインだけを変更します。そのコンピューターの Codex を先に終了してください。Pool の戦略・構成、プロバイダーのキー、タスクや履歴は編集しません。`,"nativeMain.stepClose":`サーバーのコンピューターで、表示された CODEX_HOME を使用するネイティブ Codex を終了してください。結果を確認するまで終了したままにしてください。`,"nativeMain.stepConfirm":`下のチェックボックスを選択して Codex が終了していることを確認し、その後で変更を確定してください。`,"nativeMain.stepResult":`結果と更新されたアクティブプロファイルを待ち、その後で案内に従って Codex を再度開いてください。`,"nativeMain.reopenHint":`更新されたアクティブプロファイルを確認し、サーバーのコンピューターで表示された CODEX_HOME を使用するネイティブ Codex を再度開いてください。ここに再起動が必要と表示された場合は、その案内に従ってください。`,"nativeMain.retryHint":`状態を更新し、アクティブプロファイルを確認してください。ログイン変更を再試行するには、操作を再度選択し、Codex が終了していることを確認してください。自動では再試行しません。`,"nativeMain.errorCodexBusy":`サーバーのコンピューターでネイティブ Codex がまだ動作しています。再試行の前に、表示された CODEX_HOME を使う Codex を終了してください。`,"nativeMain.errorProcessCheck":`サーバーはネイティブ Codex の動作状態を確認できませんでした。そのコンピューターで Codex が終了していることとサーバー診断を確認してから再試行してください。`,"nativeMain.errorRequests":`メインアカウントのリクエストが実行中、または終了待ちです。完了してから再試行してください。`,"nativeMain.errorBusy":`別のネイティブログイン操作が実行中です。完了するまで待ってから再試行してください。`,"nativeMain.errorAuth":`現在のネイティブログインを読み取るか、保存されたプロファイルと照合することができませんでした。次の変更前にサーバー診断を確認してください。`,"nativeMain.errorKeyStore":`保存されたプロファイルまたは OS のキーストアを開けませんでした。次の変更前にサーバーのキーストアとプロファイルの診断を確認してください。`,"nativeMain.errorStorage":`サーバーがログインフォルダーまたはプロファイル保存先に安全にアクセスできません。次の変更前にサーバー診断を確認してください。`,"nativeMain.errorProfile":`保存されたプロファイルの状態ではこの操作を実行できません。一覧を更新して確認し、問題が続く場合は診断を確認してください。`,"nativeMain.errorRecovery":`プロファイル保存先または中断された処理への対応が必要です。状態を更新し、サーバー診断を確認してください。復旧操作はパネルに表示される場合のみ使用してください。`,"nativeMain.errorRolledBack":`サーバーは切り替えに失敗し、元のログインを復元したと報告しています。再試行の前に更新されたアクティブプロファイルを確認してください。`,"nativeMain.stopped":`この CODEX_HOME を使う Codex を終了し、変更後に再起動が必要な場合があることを確認しました。`,"nativeMain.cancel":`キャンセル`,"nativeMain.confirm":`ログインの変更を確認`,"nativeMain.unavailable":`プロファイルを変更できません。続行する前に診断コードを確認してください。`},tr:{"nativeMain.title":`Yerel Codex ana oturumu`,"nativeMain.manage":`Ana oturumu yönet`,"nativeMain.close":`Oturum yönetimini kapat`,"nativeMain.separate":`Bu işlemler sonraki Pool isteğinin hesabını değil, yerel Codex oturumunu değiştirir.`,"nativeMain.home":`Geçerli CODEX_HOME`,"nativeMain.current":`Kayıtlı etkin profil`,"nativeMain.unregistered":`Kayıtlı değil`,"nativeMain.physicalHint":`Bu yol OpenCodex sunucusuna aittir; başka bir bilgisayarda olabilir. Sunucu her geçişten önce gerçek oturumu doğrular.`,"nativeMain.busyOther":`Başka bir yerel oturum işlemi sürüyor. Önce tamamlayın veya iptal edin.`,"nativeMain.working":`İşleniyor…`,"nativeMain.changed":`Yol, etkin profil veya kurtarma durumu değişti. Güncel durumu inceleyip yeniden onaylayın.`,"nativeMain.error":`Sonuç doğrulanamadı. Yanıt alınamaması, önceki girişin geri yüklendiği anlamına gelmez.`,"nativeMain.doctorHint":`Ayrıntılar için sunucuda {cmd} komutunu çalıştırın.`,"nativeMain.saved":`Geçerli oturum profil olarak kaydedildi. Gerçek oturum değiştirilmedi.`,"nativeMain.lastResult":`Son doğrulanan sonuç`,"nativeMain.restart":`Giriş değiştirildi. Sunucu yerel Codex’in yeniden başlatılmasını gerektiriyor.`,"nativeMain.done":`İşlem tamamlandı. Sunucu Codex uygulamasının yeniden başlatılmasını istemedi.`,"nativeMain.refreshFailed":`Tüm hesap bilgileri yenilenemedi. Tamamlanan değişiklik geri alınmadı. Sonraki işlemden önce yenileyin.`,"nativeMain.refresh":`Durumu yenile`,"nativeMain.unsupported":`Bu kimlik bilgisi deposu desteklenmiyor. Yerel profiller dosya tabanlı depo gerektirir.`,"nativeMain.recoveryHint":`Kesilen işlem kurtarma gerektiriyor. Kurtarma durumu uzlaştırır; geri yükleme bekleyen işlemi geri alır. Her iki işlem de onay gerektirir.`,"nativeMain.recover":`Kesilen değişikliği kurtar`,"nativeMain.rollback":`Bekleyen işlemi geri al`,"nativeMain.empty":`Henüz yerel profil yok. Önce geçerli oturumu kaydedin.`,"nativeMain.active":`Etkin`,"nativeMain.switchTo":`Yerel oturumu {label} profiline geçir`,"nativeMain.switch":`Geçiş yap`,"nativeMain.restore":`Önceden görüntülenen profile dön: {label}`,"nativeMain.restoreHint":`Bu kısayol son geçişinizden önce görüntülenen profili seçer; sunucu tarafından doğrulanmış işlem geçmişi değildir. Yalnızca bu sayfada tutulur.`,"nativeMain.label":`Profil adı`,"nativeMain.save":`Geçerli oturumu profil olarak kaydet`,"nativeMain.saveHint":`Etkin oturum zaten kayıtlıysa adı güncellenir. Yeni bir oturum eklenmez.`,"nativeMain.confirmHint":`Yalnızca aşağıdaki yoldaki yerel oturum değişir. Önce o bilgisayarda Codex uygulamasını kapatın. Bu panel Pool stratejisini ve üyelerini, sağlayıcı anahtarlarını, görevleri veya geçmişi değiştirmez.`,"nativeMain.stepClose":`Sunucu bilgisayarında gösterilen CODEX_HOME’u kullanan yerel Codex’i kapatın. Sonucu kontrol edene kadar kapalı tutun.`,"nativeMain.stepConfirm":`Codex’in kapalı olduğunu doğrulamak için aşağıdaki onay kutusunu işaretleyin, ardından değişikliği onaylayın.`,"nativeMain.stepResult":`Sonucu ve güncellenmiş etkin profili bekleyin, ardından Codex’i yeniden açma talimatlarını izleyin.`,"nativeMain.reopenHint":`Güncellenmiş etkin profili kontrol edin, ardından sunucu bilgisayarında gösterilen CODEX_HOME ile yerel Codex’i yeniden açın. Burada gösterilen yeniden başlatma gerekliliklerine uyun.`,"nativeMain.retryHint":`Durumu yenileyin ve etkin profili kontrol edin. Bir giriş değişikliğini tekrar denemek için işlemi yeniden seçin ve Codex’in kapalı olduğunu doğrulayın. Hiçbir işlem otomatik olarak tekrar denenmez.`,"nativeMain.errorCodexBusy":`Yerel Codex sunucu bilgisayarında hâlâ çalışıyor. Tekrar denemeden önce gösterilen CODEX_HOME için Codex’i kapatın.`,"nativeMain.errorProcessCheck":`Sunucu yerel Codex’in çalışıp çalışmadığını doğrulayamadı. Tekrar denemeden önce o bilgisayarda Codex’in kapalı olduğunu ve sunucu tanılamasını kontrol edin.`,"nativeMain.errorRequests":`Ana hesap istekleri hâlâ çalışıyor veya tamamlanmayı bekliyor. Tekrar denemeden önce bitmelerini bekleyin.`,"nativeMain.errorBusy":`Başka bir yerel giriş işlemi çalışıyor. Tekrar denemeden önce bitmesini bekleyin.`,"nativeMain.errorAuth":`Mevcut yerel giriş okunamadı veya kayıtlı profille doğrulanamadı. Başka bir değişiklikten önce sunucu tanılamasını inceleyin.`,"nativeMain.errorKeyStore":`Kayıtlı profil veya işletim sistemi anahtar deposu açılamadı. Başka bir değişiklikten önce sunucudaki anahtar deposu ve profil tanılamasını inceleyin.`,"nativeMain.errorStorage":`Sunucu giriş klasörüne veya profil deposuna güvenli bir şekilde erişemiyor. Başka bir değişiklikten önce sunucu tanılamasını kontrol edin.`,"nativeMain.errorProfile":`Kayıtlı profil durumu bu işlem için kullanılamıyor. Listeyi yenileyip inceleyin; sorun sürerse tanılamayı inceleyin.`,"nativeMain.errorRecovery":`Profil deposu veya kesintiye uğramış bir işlem dikkat gerektiriyor. Durumu yenileyip sunucu tanılamasını inceleyin. Kurtarma kontrollerini yalnızca panel sunduğunda kullanın.`,"nativeMain.errorRolledBack":`Sunucu geçişin başarısız olduğunu ve önceki girişin geri yüklendiğini bildiriyor. Tekrar denemeden önce yenilenmiş etkin profili kontrol edin.`,"nativeMain.stopped":`Bu CODEX_HOME ile çalışan Codex uygulamasını durdurdum ve yeniden başlatma gerekebileceğini anlıyorum.`,"nativeMain.cancel":`İptal`,"nativeMain.confirm":`Yerel oturum değişikliğini onayla`,"nativeMain.unavailable":`Profil değişiklikleri kullanılamıyor. Devam etmeden önce tanılama kodunu kontrol edin.`},vi:{"nativeMain.title":`Đăng nhập Codex gốc`,"nativeMain.manage":`Quản lý đăng nhập chính`,"nativeMain.close":`Đóng trình quản lý đăng nhập chính`,"nativeMain.separate":`Các điều khiển này thay đổi đăng nhập Codex gốc, không phải tài khoản được chọn cho yêu cầu Pool tiếp theo.`,"nativeMain.home":`CODEX_HOME đang có hiệu lực`,"nativeMain.current":`Hồ sơ đang hoạt động đã đăng ký`,"nativeMain.unregistered":`Chưa đăng ký`,"nativeMain.physicalHint":`Thư mục home này thuộc về máy chủ OpenCodex, có thể là một máy tính khác. Backend xác minh đăng nhập thực tế trước mọi lần chuyển đổi.`,"nativeMain.busyOther":`Một thao tác đăng nhập gốc khác đang chạy. Hãy hoàn tất hoặc hủy nó trước.`,"nativeMain.working":`Đang xử lý…`,"nativeMain.changed":`Thư mục home, hồ sơ đang hoạt động hoặc trạng thái khôi phục đã thay đổi. Hãy xem lại trạng thái vừa làm mới và xác nhận lại.`,"nativeMain.error":`Không thể xác nhận kết quả. Không nhận được phản hồi không có nghĩa là đăng nhập ban đầu đã được khôi phục.`,"nativeMain.doctorHint":`Chạy {cmd} trên máy chủ để biết chi tiết.`,"nativeMain.saved":`Đã lưu đăng nhập hiện tại thành một hồ sơ. Đăng nhập thực tế không bị thay đổi.`,"nativeMain.lastResult":`Kết quả được xác nhận gần nhất`,"nativeMain.restart":`Đã thay đổi đăng nhập. Máy chủ yêu cầu khởi động lại Codex gốc.`,"nativeMain.done":`Đã hoàn tất thao tác. Máy chủ không yêu cầu khởi động lại Codex gốc.`,"nativeMain.refreshFailed":`Không thể làm mới toàn bộ thông tin tài khoản. Một thay đổi đã hoàn tất sẽ không bị hoàn tác. Hãy làm mới trước khi thực hiện thao tác khác.`,"nativeMain.refresh":`Làm mới trạng thái`,"nativeMain.unsupported":`Kho lưu trữ thông tin đăng nhập này không được hỗ trợ. Quản lý hồ sơ gốc yêu cầu kho lưu trữ dạng tệp.`,"nativeMain.recoveryHint":`Một giao dịch bị gián đoạn cần được khôi phục. Khôi phục sẽ hoàn tất việc đối chiếu; phục hồi sẽ quay lui giao dịch đang chờ. Không thao tác nào chạy cho đến khi bạn xác nhận.`,"nativeMain.recover":`Khôi phục thay đổi bị gián đoạn`,"nativeMain.rollback":`Phục hồi giao dịch đang chờ`,"nativeMain.empty":`Chưa có hồ sơ gốc nào được đăng ký. Hãy lưu đăng nhập hiện tại trước.`,"nativeMain.active":`Đang hoạt động`,"nativeMain.switchTo":`Chuyển đăng nhập gốc sang {label}`,"nativeMain.switch":`Chuyển`,"nativeMain.restore":`Quay lại hồ sơ đã hiển thị trước đó: {label}`,"nativeMain.restoreHint":`Lối tắt này chọn hồ sơ được hiển thị trước lần chuyển đổi gần nhất của bạn, không phải lịch sử giao dịch được máy chủ xác minh. Nó chỉ được giữ trên trang này.`,"nativeMain.label":`Nhãn hồ sơ`,"nativeMain.save":`Lưu hiện tại thành hồ sơ`,"nativeMain.saveHint":`Với một đăng nhập đang hoạt động đã được đăng ký, việc lưu sẽ cập nhật nhãn của nó. Nó không thêm một đăng nhập mới.`,"nativeMain.confirmHint":`Thao tác này chỉ thay đổi đăng nhập gốc trong thư mục home bên dưới. Hãy đóng Codex gốc trên máy tính đó trước. Bảng này không chỉnh sửa chiến lược Pool, thành viên, khóa nhà cung cấp hay dữ liệu tác vụ/lịch sử.`,"nativeMain.stepClose":`Đóng Codex gốc trên máy tính của máy chủ đang dùng CODEX_HOME được hiển thị. Giữ Codex đóng cho đến khi bạn đã kiểm tra kết quả.`,"nativeMain.stepConfirm":`Chọn ô bên dưới để xác nhận Codex đã đóng, rồi xác nhận thay đổi.`,"nativeMain.stepResult":`Chờ kết quả và hồ sơ đang hoạt động được cập nhật, rồi làm theo hướng dẫn để mở lại Codex.`,"nativeMain.reopenHint":`Kiểm tra hồ sơ đang hoạt động đã cập nhật, rồi mở lại Codex gốc trên máy tính của máy chủ với CODEX_HOME được hiển thị. Làm theo mọi yêu cầu khởi động lại hiển thị tại đây.`,"nativeMain.retryHint":`Làm mới trạng thái và kiểm tra hồ sơ đang hoạt động. Để thử lại việc đổi đăng nhập, hãy chọn lại thao tác và xác nhận Codex đã đóng. Không thao tác nào được tự động thử lại.`,"nativeMain.errorCodexBusy":`Codex gốc vẫn đang chạy trên máy chủ. Đóng Codex dùng CODEX_HOME hiển thị trước khi thử lại.`,"nativeMain.errorProcessCheck":`Máy chủ không xác minh được Codex gốc có đang chạy hay không. Kiểm tra Codex đã đóng trên máy đó và xem chẩn đoán máy chủ trước khi thử lại.`,"nativeMain.errorRequests":`Yêu cầu của tài khoản chính vẫn đang chạy hoặc chờ hoàn tất. Chờ chúng kết thúc trước khi thử lại.`,"nativeMain.errorBusy":`Một thao tác đăng nhập gốc khác đang chạy. Chờ thao tác đó kết thúc trước khi thử lại.`,"nativeMain.errorAuth":`Không đọc được đăng nhập gốc hiện tại hoặc không xác minh được với hồ sơ đã lưu. Xem chẩn đoán máy chủ trước khi thay đổi tiếp.`,"nativeMain.errorKeyStore":`Không mở được hồ sơ đã lưu hoặc kho khóa của hệ điều hành. Xem chẩn đoán kho khóa và hồ sơ trên máy chủ trước khi thay đổi tiếp.`,"nativeMain.errorStorage":`Máy chủ không thể truy cập an toàn vào thư mục đăng nhập hoặc kho hồ sơ. Kiểm tra chẩn đoán máy chủ trước khi thực hiện thay đổi khác.`,"nativeMain.errorProfile":`Trạng thái hồ sơ đã lưu không dùng được cho thao tác này. Làm mới và xem danh sách; kiểm tra chẩn đoán nếu vấn đề tiếp diễn.`,"nativeMain.errorRecovery":`Kho hồ sơ hoặc giao dịch bị gián đoạn cần được xử lý. Làm mới trạng thái và xem chẩn đoán máy chủ. Chỉ dùng điều khiển khôi phục khi bảng cung cấp.`,"nativeMain.errorRolledBack":`Máy chủ báo việc chuyển đổi thất bại và đăng nhập ban đầu đã được khôi phục. Kiểm tra hồ sơ đang hoạt động đã cập nhật trước khi thử lại.`,"nativeMain.stopped":`Tôi đã dừng Codex gốc đang dùng CODEX_HOME này và hiểu rằng có thể cần khởi động lại.`,"nativeMain.cancel":`Hủy`,"nativeMain.confirm":`Xác nhận thay đổi đăng nhập gốc`,"nativeMain.unavailable":`Không thể thay đổi hồ sơ. Hãy kiểm tra mã chẩn đoán trước khi tiếp tục.`},pt:{"nativeMain.title":`Login principal do Codex nativo`,"nativeMain.manage":`Gerenciar login principal`,"nativeMain.close":`Fechar o gerenciador de login principal`,"nativeMain.separate":`Estes controles alteram o login do Codex nativo, não a conta selecionada para a próxima requisição do Pool.`,"nativeMain.home":`CODEX_HOME efetivo`,"nativeMain.current":`Perfil ativo registrado`,"nativeMain.unregistered":`Não registrado`,"nativeMain.physicalHint":`Este diretório home pertence ao servidor do OpenCodex, que pode ser outro computador. O backend verifica o login físico antes de qualquer troca.`,"nativeMain.busyOther":`Outra operação de login nativo está em andamento. Conclua ou cancele-a primeiro.`,"nativeMain.working":`Processando…`,"nativeMain.changed":`O diretório home, o perfil ativo ou o estado de recuperação mudou. Revise o estado atualizado e confirme novamente.`,"nativeMain.error":`Não foi possível confirmar o resultado. A ausência de resposta não significa que o login original foi restaurado.`,"nativeMain.doctorHint":`Execute {cmd} no servidor para ver os detalhes.`,"nativeMain.saved":`Login atual salvo como perfil. O login físico não foi alterado.`,"nativeMain.lastResult":`Último resultado confirmado`,"nativeMain.restart":`Login alterado. O servidor exige a reinicialização do Codex nativo.`,"nativeMain.done":`Operação concluída. O servidor não solicitou a reinicialização do Codex nativo.`,"nativeMain.refreshFailed":`Não foi possível atualizar todas as informações da conta. Uma alteração já concluída não foi desfeita. Atualize antes de outra operação.`,"nativeMain.refresh":`Atualizar status`,"nativeMain.unsupported":`Este armazenamento de credenciais não é suportado. O gerenciamento de perfis nativos exige o armazenamento de credenciais em arquivo.`,"nativeMain.recoveryHint":`Uma transação interrompida precisa de recuperação. Recuperar conclui a reconciliação; restaurar reverte a transação pendente. Nenhuma das ações é executada até você confirmar.`,"nativeMain.recover":`Recuperar alteração interrompida`,"nativeMain.rollback":`Restaurar transação pendente`,"nativeMain.empty":`Nenhum perfil nativo registrado ainda. Salve primeiro o login atual.`,"nativeMain.active":`Ativo`,"nativeMain.switchTo":`Trocar o login nativo para {label}`,"nativeMain.switch":`Trocar`,"nativeMain.restore":`Voltar ao perfil exibido anteriormente: {label}`,"nativeMain.restoreHint":`Este atalho seleciona o perfil exibido antes da sua última troca, não um histórico de transações verificado pelo servidor. Ele é mantido apenas nesta página.`,"nativeMain.label":`Rótulo do perfil`,"nativeMain.save":`Salvar atual como perfil`,"nativeMain.saveHint":`Para um login ativo já registrado, salvar atualiza o rótulo. Não adiciona um novo login.`,"nativeMain.confirmHint":`Isto altera apenas o login nativo no diretório home abaixo. Feche primeiro o Codex nativo naquele computador. Este painel não edita estratégia do Pool, membros, chaves de provedor nem dados de tarefas/histórico.`,"nativeMain.stepClose":`Feche o Codex nativo no computador do servidor que usa o CODEX_HOME exibido. Mantenha-o fechado até verificar o resultado.`,"nativeMain.stepConfirm":`Marque a caixa de seleção abaixo para confirmar que o Codex está fechado e depois confirme a alteração.`,"nativeMain.stepResult":`Aguarde o resultado e o perfil ativo atualizado e depois siga as instruções para reabrir o Codex.`,"nativeMain.reopenHint":`Verifique o perfil ativo atualizado e depois reabra o Codex nativo no computador do servidor com o CODEX_HOME exibido. Siga qualquer exigência de reinicialização indicada aqui.`,"nativeMain.retryHint":`Atualize o status e verifique o perfil ativo. Para tentar novamente uma alteração de login, selecione a ação novamente e confirme que o Codex está fechado. Nada é repetido automaticamente.`,"nativeMain.errorCodexBusy":`O Codex nativo ainda está em execução no computador do servidor. Feche-o para o CODEX_HOME exibido antes de tentar novamente.`,"nativeMain.errorProcessCheck":`O servidor não pôde verificar se o Codex nativo está em execução. Verifique se ele está fechado nesse computador e consulte o diagnóstico do servidor antes de tentar novamente.`,"nativeMain.errorRequests":`As solicitações da conta principal ainda estão em execução ou terminando. Aguarde sua conclusão antes de tentar novamente.`,"nativeMain.errorBusy":`Outra operação de login nativo está em andamento. Aguarde sua conclusão antes de tentar novamente.`,"nativeMain.errorAuth":`O login nativo atual não pôde ser lido ou verificado com o perfil salvo. Consulte o diagnóstico do servidor antes de outra alteração.`,"nativeMain.errorKeyStore":`O perfil salvo ou o armazenamento de chaves do sistema não pôde ser aberto. Consulte seus diagnósticos no servidor antes de outra alteração.`,"nativeMain.errorStorage":`O servidor não consegue acessar com segurança a pasta de login ou o armazenamento de perfis. Verifique o diagnóstico do servidor antes de outra alteração.`,"nativeMain.errorProfile":`O estado do perfil salvo não pode ser usado nesta ação. Atualize e verifique a lista; consulte o diagnóstico se o problema persistir.`,"nativeMain.errorRecovery":`O armazenamento de perfis ou uma transação interrompida requer atenção. Atualize o status e consulte o diagnóstico do servidor. Use a recuperação somente quando o painel a oferecer.`,"nativeMain.errorRolledBack":`O servidor informa que a troca falhou e o login original foi restaurado. Verifique o perfil ativo atualizado antes de tentar novamente.`,"nativeMain.stopped":`Parei o Codex nativo que usa este CODEX_HOME e entendo que pode ser necessário reiniciá-lo.`,"nativeMain.cancel":`Cancelar`,"nativeMain.confirm":`Confirmar alteração do login nativo`,"nativeMain.unavailable":`As alterações de perfil estão indisponíveis. Verifique o código de diagnóstico antes de continuar.`}};function Eu(e){return(t,n)=>{let r=Tu[e][t];for(let[e,t]of Object.entries(n??{}))r=r.split(`{${e}}`).join(String(t));return r}}var Du=`INVALID_REQUEST.CODEX_HOME_UNAVAILABLE.UNSUPPORTED_AUTH_STORE.AUTH_MISSING.AUTH_INVALID.AUTH_UNREADABLE.AUTH_TEMP_CLEANUP_REQUIRED.ACTIVE_PROFILE_MISMATCH.PROFILE_NOT_FOUND.PROFILE_ALREADY_EXISTS.PROFILE_DECRYPT_FAILED.KEYRING_UNAVAILABLE.KEYRING_KEY_MISSING.PROFILE_LOCK_UNAVAILABLE.NATIVE_PROFILE_BUSY.NATIVE_MAIN_OWNER_BUSY.NATIVE_MAIN_OWNER_UNAVAILABLE.NATIVE_MAIN_CLAIM_BUSY.NATIVE_MAIN_CLAIM_UNAVAILABLE.CODEX_BUSY.CODEX_PROCESS_CHECK_UNAVAILABLE.MAIN_REQUESTS_ACTIVE.RECOVERY_REQUIRED.AUTH_RESTORE_FAILED.SWITCH_ROLLED_BACK.PROFILE_METADATA_TOO_LARGE.PROFILE_STORAGE_UNSAFE.LEGACY_PROFILE_STATE.INTERNAL_ERROR.VAULT_INVALID.STAGING_CLEANUP_REQUIRED.NETWORK_ERROR.INVALID_RESPONSE.STATE_CHANGED`.split(`.`),Ou=class extends Error{code;constructor(e){super(e),this.code=e}};function ku(e){return e instanceof Ou?e.code:`NETWORK_ERROR`}function Au(){throw new Ou(`INVALID_RESPONSE`)}function ju(e){return!e||typeof e!=`object`||Array.isArray(e)?Au():e}function Mu(e){return typeof e!=`string`||!e.trim()?Au():e}function Nu(e){return e===null?null:Mu(e)}function Pu(e){return typeof e==`boolean`?e:Au()}function Fu(e,t){return typeof e==`string`&&t.includes(e)?e:Au()}function Iu(e){let t=ju(e);return{id:Mu(t.id),label:Mu(t.label),identityHint:Mu(t.identityHint),state:Fu(t.state,[`active`,`inactive`])}}function Lu(e){let t=ju(e);if(!Array.isArray(t.profiles)||t.profiles.length>32)return Au();let n=t.profiles.map(Iu),r=Nu(t.activeProfileId);if(new Set(n.map(e=>e.id)).size!==n.length)return Au();let i=n.filter(e=>e.state===`active`);return(r===null?n.length!==0:i.length!==1||i[0].id!==r)?Au():{effectiveCodexHome:Mu(t.effectiveCodexHome),activeProfileId:r,profiles:n}}function Ru(e){let t=ju(e);return{effectiveCodexHome:Mu(t.effectiveCodexHome),activeProfileId:Nu(t.activeProfileId),supported:Pu(t.supported),authStatus:Fu(t.authStatus,[`ok`,`missing`,`invalid`,`unreadable`]),keyStore:Fu(t.keyStore,[`available`,`missing-key`,`unavailable`]),vaultStatus:Fu(t.vaultStatus,[`ok`,`missing`,`invalid`]),recoveryPending:Pu(t.recoveryPending)}}async function zu(e,t,n,r,i){n.throwIfAborted();let a=await(i??fetch)(`${e}/api/native-main-profiles${t}`,{method:r?`POST`:`GET`,signal:n,cache:`no-store`,...r?{headers:{"content-type":`application/json`},body:JSON.stringify(r)}:{}}),o;try{o=await a.json()}catch{throw new Ou(`INVALID_RESPONSE`)}if(n.throwIfAborted(),!a.ok){let e=o&&typeof o==`object`?o.code:void 0;throw new Ou(typeof e==`string`&&Du.includes(e)?e:`INTERNAL_ERROR`)}return o}async function Bu(e,t,n){let[r,i]=await Promise.allSettled([zu(e,``,t,void 0,n).then(Lu),zu(e,`/doctor`,t,void 0,n).then(Ru)]);if(t.throwIfAborted(),i.status===`rejected`)throw i.reason;if(r.status===`rejected`){if(!i.value.recoveryPending)throw r.reason;return{doctor:i.value,list:null}}if(r.value.effectiveCodexHome!==i.value.effectiveCodexHome||r.value.activeProfileId!==i.value.activeProfileId)throw new Ou(`STATE_CHANGED`);return{doctor:i.value,list:r.value}}function Vu(e){let t=e.doctor;return t.supported?t.recoveryPending?`RECOVERY_REQUIRED`:t.authStatus===`ok`?t.keyStore===`available`?t.vaultStatus===`invalid`?`VAULT_INVALID`:null:t.keyStore===`missing-key`?`KEYRING_KEY_MISSING`:`KEYRING_UNAVAILABLE`:t.authStatus===`missing`?`AUTH_MISSING`:t.authStatus===`invalid`?`AUTH_INVALID`:`AUTH_UNREADABLE`:`UNSUPPORTED_AUTH_STORE`}function Hu(e){let t=e.doctor;return!!e.list&&t.supported&&t.authStatus===`ok`&&t.keyStore===`available`&&t.vaultStatus!==`invalid`&&!t.recoveryPending}function Uu(e,t){let n=e.doctor;return n.supported?t.kind===`recover`?n.recoveryPending:Hu(e)&&!!e.list?.profiles.some(e=>e.id===t.target&&e.label===t.label&&e.state===`inactive`):!1}function Wu(e,t){return e.doctor.effectiveCodexHome===t.doctor.effectiveCodexHome&&e.doctor.activeProfileId===t.doctor.activeProfileId&&e.doctor.recoveryPending===t.doctor.recoveryPending}async function Gu(e,t,n,r){let i=ju(await zu(e,`/register`,n,{label:t.trim()},r)),a=Mu(i.effectiveCodexHome);return Iu(i.profile).state===`active`?a:Au()}async function Ku(e,t,n,r,i){if(!n)throw new Ou(`INVALID_REQUEST`);let a=ju(await zu(e,t.kind===`switch`?`/switch`:`/recover`,r,t.kind===`switch`?{target:t.target,confirmedStopped:!0}:{rollback:t.rollback,confirmedStopped:!0},i));if(a.ok!==!0)return Au();if(t.kind===`switch`){let e=Iu(a.activeProfile);if(e.id!==t.target||e.state!==`active`)return Au()}let o=t.kind===`recover`&&a.restartRequired===void 0&&a.recovered===!1?!1:Pu(a.restartRequired);return{effectiveCodexHome:Mu(a.effectiveCodexHome),restartRequired:o,...typeof a.recovered==`boolean`?{recovered:a.recovered}:{}}}var qu=2e4,Ju=Symbol(`account-refresh-timeout`),Yu=class{state={open:!1,busy:!1,blocked:!1,snapshot:null,label:``,action:null,confirmedStopped:!1,previous:null,error:null,result:null,refreshFailed:!1};listener=null;epoch=0;pending=null;onChanged=()=>{};restartRequired=!1;resultHome=null;apiBase;accountRefreshTimeoutMs;fetchImpl;constructor(e,t=qu,n){this.apiBase=e,this.accountRefreshTimeoutMs=t,this.fetchImpl=n}attach(e){let t=++this.epoch;return this.listener=e,e(this.state),()=>{this.epoch===t&&(this.epoch++,this.listener=null,this.pending?.abort(),this.pending=null,this.state.busy&&(this.state={...this.state,busy:!1,snapshot:null,action:null,confirmedStopped:!1,previous:null,refreshFailed:!0}))}}updateOptions(e,t){this.onChanged=t,this.state.blocked!==e&&this.set({blocked:e,action:null,confirmedStopped:!1})}set(e){this.state={...this.state,...e},this.listener?.(this.state)}current(e){return this.epoch===e&&this.listener!==null}accept(e){let t=this.state.previous,n=this.resultHome!==null&&this.resultHome!==e.doctor.effectiveCodexHome;n&&(this.restartRequired=!1,this.resultHome=null),this.set({snapshot:e,...n?{result:null}:{},previous:t&&t.home===e.doctor.effectiveCodexHome&&t.active===e.doctor.activeProfileId?t:null})}setLabel(e){this.pending||this.set({label:e})}setStopped(e){!this.pending&&this.state.action&&!this.state.blocked&&this.set({confirmedStopped:e})}select(e){this.pending||e&&(this.state.blocked||this.state.refreshFailed||!this.state.snapshot||!Uu(this.state.snapshot,e))||this.set({action:e,confirmedStopped:!1,error:null})}async toggle(){if(this.pending)return;let e=!this.state.open;this.set({open:e,action:null,confirmedStopped:!1}),e&&await this.refresh()}async run(e){if(!this.listener||this.pending||this.state.blocked)return;let t=this.epoch,n=new AbortController;this.pending=n;let r=setTimeout(()=>n.abort(),45e3);this.set({busy:!0});try{await e(t,n.signal)}catch(e){this.current(t)&&this.set({error:ku(e),snapshot:null})}finally{clearTimeout(r),this.current(t)&&(this.pending=null,this.set({busy:!1}))}}async refresh(){this.state.action||await this.run(async(e,t)=>{let n=this.state.refreshFailed;this.set({error:null});let r=await Bu(this.apiBase,t,this.fetchImpl);this.current(e)&&(this.accept(r),this.set({refreshFailed:!1}),n&&await this.refreshAccount(e))})}async refreshAccount(e){if(!this.current(e))return;let t=new AbortController,n,r=(async()=>{try{return await this.onChanged(t.signal)}catch{return!1}})(),i=new Promise(e=>{n=setTimeout(()=>{t.abort(),e(Ju)},this.accountRefreshTimeoutMs)});try{let t=await Promise.race([r,i]);this.current(e)&&(t===!1||t===Ju)&&this.set({refreshFailed:!0})}finally{clearTimeout(n)}}async reconcile(e){if(!this.current(e))return;let t=new AbortController;this.pending=t;let n=setTimeout(()=>t.abort(),2e4);try{let n=await Bu(this.apiBase,t.signal,this.fetchImpl);if(!this.current(e))return;this.accept(n)}catch{this.current(e)&&this.set({snapshot:null,refreshFailed:!0})}finally{clearTimeout(n)}await this.refreshAccount(e)}async register(){let e=this.state.snapshot,t=this.state.label.trim();!e||this.state.refreshFailed||!t||this.state.action||!Hu(e)||await this.mutate(e,{label:t})}async confirm(){let{snapshot:e,action:t,confirmedStopped:n,refreshFailed:r}=this.state;!e||!t||!n||r||!Uu(e,t)||await this.mutate(e,{action:t})}async mutate(e,t){await this.run(async(n,r)=>{this.set({error:null,result:this.restartRequired?`restart`:null,refreshFailed:!1});let i=!1;try{let a=await Bu(this.apiBase,r,this.fetchImpl);if(r.throwIfAborted(),!this.current(n)||this.state.blocked)return;if(this.accept(a),!Wu(e,a)||(`action`in t?!Uu(a,t.action):!Hu(a)))throw new Ou(`STATE_CHANGED`);if(i=!0,`label`in t){let i=await Gu(this.apiBase,t.label,r,this.fetchImpl);if(!this.current(n))return;if(i!==e.doctor.effectiveCodexHome)throw new Ou(`STATE_CHANGED`);this.resultHome=i,this.set({label:``,result:this.restartRequired?`restart`:`saved`})}else{let i=await Ku(this.apiBase,t.action,!0,r,this.fetchImpl);if(!this.current(n))return;if(i.effectiveCodexHome!==e.doctor.effectiveCodexHome)throw new Ou(`STATE_CHANGED`);this.resultHome=i.effectiveCodexHome,this.restartRequired||=i.restartRequired,this.set({previous:t.action.kind===`switch`?{id:e.doctor.activeProfileId,home:e.doctor.effectiveCodexHome,active:t.action.target}:null,result:this.restartRequired?`restart`:`done`})}}catch(e){this.current(n)&&this.set({error:ku(e),previous:null})}finally{this.current(n)&&this.set({action:null,confirmedStopped:!1}),i&&await this.reconcile(n)}})}},Xu={INVALID_REQUEST:`nativeMain.error`,CODEX_HOME_UNAVAILABLE:`nativeMain.errorStorage`,UNSUPPORTED_AUTH_STORE:`nativeMain.unsupported`,AUTH_MISSING:`nativeMain.errorAuth`,AUTH_INVALID:`nativeMain.errorAuth`,AUTH_UNREADABLE:`nativeMain.errorAuth`,AUTH_TEMP_CLEANUP_REQUIRED:`nativeMain.errorRecovery`,ACTIVE_PROFILE_MISMATCH:`nativeMain.errorAuth`,PROFILE_NOT_FOUND:`nativeMain.errorProfile`,PROFILE_ALREADY_EXISTS:`nativeMain.errorProfile`,PROFILE_DECRYPT_FAILED:`nativeMain.errorKeyStore`,KEYRING_UNAVAILABLE:`nativeMain.errorKeyStore`,KEYRING_KEY_MISSING:`nativeMain.errorKeyStore`,PROFILE_LOCK_UNAVAILABLE:`nativeMain.errorStorage`,NATIVE_PROFILE_BUSY:`nativeMain.errorBusy`,NATIVE_MAIN_OWNER_BUSY:`nativeMain.errorBusy`,NATIVE_MAIN_OWNER_UNAVAILABLE:`nativeMain.errorStorage`,NATIVE_MAIN_CLAIM_BUSY:`nativeMain.errorBusy`,NATIVE_MAIN_CLAIM_UNAVAILABLE:`nativeMain.errorStorage`,CODEX_BUSY:`nativeMain.errorCodexBusy`,CODEX_PROCESS_CHECK_UNAVAILABLE:`nativeMain.errorProcessCheck`,MAIN_REQUESTS_ACTIVE:`nativeMain.errorRequests`,RECOVERY_REQUIRED:`nativeMain.errorRecovery`,AUTH_RESTORE_FAILED:`nativeMain.errorRecovery`,SWITCH_ROLLED_BACK:`nativeMain.errorRolledBack`,PROFILE_METADATA_TOO_LARGE:`nativeMain.errorProfile`,PROFILE_STORAGE_UNSAFE:`nativeMain.errorStorage`,LEGACY_PROFILE_STATE:`nativeMain.errorProfile`,INTERNAL_ERROR:`nativeMain.error`,VAULT_INVALID:`nativeMain.errorRecovery`,STAGING_CLEANUP_REQUIRED:`nativeMain.errorRecovery`,NETWORK_ERROR:`nativeMain.error`,INVALID_RESPONSE:`nativeMain.error`,STATE_CHANGED:`nativeMain.changed`},Zu=`ocx account main doctor`;function Qu({t:e}){let[t,n=``]=e(`nativeMain.doctorHint`).split(`{cmd}`);return(0,Q.jsxs)(Q.Fragment,{children:[t,(0,Q.jsx)(`code`,{className:`chip`,children:Zu}),n]})}function $u({t:e,id:t,open:n,busy:r,blocked:i,snapshot:a,label:o,action:s,confirmedStopped:c,previousId:l,error:u,result:d,refreshFailed:f,summaryRef:p,confirmationRef:m,onToggle:h,onRefresh:g,onLabel:_,onRegister:v,onSelect:y,onStopped:b,onConfirm:x}){let S=r||i,C=S||f,w=a?Vu(a):null,T=a?.list?.profiles??[],E=T.find(e=>e.id===a?.doctor.activeProfileId),D=T.find(e=>e.id===l&&e.state===`inactive`);return(0,Q.jsxs)(`section`,{className:`panel`,"aria-labelledby":`${t}-heading`,style:{marginBottom:12},children:[(0,Q.jsxs)(`div`,{className:`row`,style:{justifyContent:`space-between`},children:[(0,Q.jsx)(`strong`,{id:`${t}-heading`,children:e(`nativeMain.title`)}),(0,Q.jsx)(`button`,{ref:p,type:`button`,className:`btn btn-sm btn-ghost`,"aria-expanded":n,"aria-controls":`${t}-panel`,onClick:h,disabled:r,children:e(n?`nativeMain.close`:`nativeMain.manage`)})]}),n&&(0,Q.jsxs)(`div`,{id:`${t}-panel`,"aria-busy":r,children:[(0,Q.jsx)(`p`,{className:`card-sub`,children:e(`nativeMain.separate`)}),a&&(0,Q.jsxs)(`dl`,{children:[(0,Q.jsx)(`dt`,{children:e(`nativeMain.home`)}),(0,Q.jsx)(`dd`,{style:{marginLeft:0,overflowWrap:`anywhere`},children:(0,Q.jsx)(`code`,{children:a.doctor.effectiveCodexHome})}),a.list&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:e(`nativeMain.current`)}),(0,Q.jsx)(`dd`,{style:{marginLeft:0,overflowWrap:`anywhere`},children:E?.label??e(`nativeMain.unregistered`)})]})]}),(0,Q.jsx)(`p`,{className:`card-sub`,children:e(`nativeMain.physicalHint`)}),i&&(0,Q.jsx)(`p`,{role:`status`,className:`notice notice-warn`,children:e(`nativeMain.busyOther`)}),r&&(0,Q.jsx)(`p`,{role:`status`,children:e(`nativeMain.working`)}),u&&(0,Q.jsxs)(`div`,{role:`alert`,className:`notice notice-err native-main-notice`,children:[(0,Q.jsx)(`p`,{children:e(Xu[u])}),(0,Q.jsx)(`p`,{children:e(`nativeMain.retryHint`)}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`code`,{children:u}),` `,(0,Q.jsx)(Qu,{t:e})]})]}),d&&!r&&!u&&!s&&(0,Q.jsxs)(`div`,{role:`status`,className:`notice native-main-notice`,children:[(0,Q.jsx)(`strong`,{children:e(`nativeMain.lastResult`)}),(0,Q.jsx)(`p`,{children:e(d===`saved`?`nativeMain.saved`:d===`restart`?`nativeMain.restart`:`nativeMain.done`)}),d!==`saved`&&a&&!f&&(0,Q.jsx)(`p`,{children:e(`nativeMain.reopenHint`)})]}),f&&(0,Q.jsx)(`p`,{role:`alert`,className:`notice notice-warn`,children:e(`nativeMain.refreshFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm btn-ghost`,onClick:g,disabled:S||!!s,children:e(`nativeMain.refresh`)}),a&&!a.doctor.supported&&(0,Q.jsx)(`p`,{role:`alert`,children:e(`nativeMain.unsupported`)}),w&&a?.doctor.supported&&!a.doctor.recoveryPending&&(0,Q.jsxs)(`p`,{role:`status`,children:[e(`nativeMain.unavailable`),` `,(0,Q.jsx)(`code`,{children:w})]}),a?.doctor.recoveryPending&&(0,Q.jsxs)(`div`,{className:`notice notice-warn`,children:[(0,Q.jsx)(`p`,{children:e(`nativeMain.recoveryHint`)}),(0,Q.jsxs)(`div`,{className:`row`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:C||!!s||!a.doctor.supported,onClick:()=>y({kind:`recover`,rollback:!1}),children:e(`nativeMain.recover`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:C||!!s||!a.doctor.supported,onClick:()=>y({kind:`recover`,rollback:!0}),children:e(`nativeMain.rollback`)})]})]}),a?.list&&(0,Q.jsxs)(Q.Fragment,{children:[T.length===0&&(0,Q.jsx)(`p`,{children:e(`nativeMain.empty`)}),(0,Q.jsx)(`ul`,{style:{listStyle:`none`,padding:0},children:T.map(t=>(0,Q.jsxs)(`li`,{className:`row`,style:{padding:`8px 0`,flexWrap:`wrap`},children:[(0,Q.jsx)(`strong`,{style:{overflowWrap:`anywhere`,minWidth:0},children:t.label}),` `,(0,Q.jsx)(`code`,{style:{overflowWrap:`anywhere`,minWidth:0},children:t.identityHint}),t.state===`active`?(0,Q.jsx)(`span`,{className:`badge badge-green`,children:e(`nativeMain.active`)}):(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:C||!!s||!Uu(a,{kind:`switch`,target:t.id,label:t.label}),"aria-label":e(`nativeMain.switchTo`,{label:t.label}),onClick:()=>y({kind:`switch`,target:t.id,label:t.label}),children:e(`nativeMain.switch`)})]},t.id))}),D&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:C||!!s||!Uu(a,{kind:`switch`,target:D.id,label:D.label}),onClick:()=>y({kind:`switch`,target:D.id,label:D.label}),children:e(`nativeMain.restore`,{label:D.label})}),(0,Q.jsx)(`p`,{className:`card-sub`,children:e(`nativeMain.restoreHint`)})]}),(0,Q.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),v()},children:[(0,Q.jsx)(`label`,{htmlFor:`${t}-label`,children:e(`nativeMain.label`)}),(0,Q.jsxs)(`div`,{className:`row`,style:{flexWrap:`wrap`},children:[(0,Q.jsx)(`input`,{id:`${t}-label`,value:o,onChange:e=>_(e.target.value),disabled:C||!!s||!Hu(a),maxLength:80,autoComplete:`off`}),(0,Q.jsx)(`button`,{type:`submit`,className:`btn btn-sm`,disabled:C||!!s||!o.trim()||!Hu(a),children:e(`nativeMain.save`)})]}),(0,Q.jsx)(`p`,{className:`card-sub`,children:e(`nativeMain.saveHint`)})]})]}),s&&a&&(0,Q.jsxs)(`div`,{ref:m,role:`group`,tabIndex:-1,"aria-labelledby":`${t}-confirm-title`,className:`notice notice-warn`,style:{marginTop:12,display:`block`},onKeyDown:e=>{e.key===`Escape`&&!r&&(e.preventDefault(),y(null))},children:[(0,Q.jsx)(`h3`,{id:`${t}-confirm-title`,style:{overflowWrap:`anywhere`},children:e(s.kind===`switch`?`nativeMain.switchTo`:s.rollback?`nativeMain.rollback`:`nativeMain.recover`,{label:s.kind===`switch`?s.label:``})}),(0,Q.jsx)(`p`,{children:e(`nativeMain.confirmHint`)}),(0,Q.jsx)(`code`,{style:{overflowWrap:`anywhere`},children:a.doctor.effectiveCodexHome}),(0,Q.jsxs)(`ol`,{children:[(0,Q.jsx)(`li`,{children:e(`nativeMain.stepClose`)}),(0,Q.jsx)(`li`,{children:e(`nativeMain.stepConfirm`)}),(0,Q.jsx)(`li`,{children:e(`nativeMain.stepResult`)})]}),(0,Q.jsx)(`p`,{children:(0,Q.jsxs)(`label`,{htmlFor:`${t}-stopped`,children:[(0,Q.jsx)(`input`,{id:`${t}-stopped`,type:`checkbox`,checked:c,disabled:C,onChange:e=>b(e.target.checked)}),` `,e(`nativeMain.stopped`)]})}),(0,Q.jsxs)(`div`,{className:`row`,style:{flexWrap:`wrap`},children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,style:{whiteSpace:`normal`,overflowWrap:`anywhere`,maxWidth:`100%`},disabled:r,onClick:()=>y(null),children:e(`nativeMain.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm btn-primary`,style:{whiteSpace:`normal`,overflowWrap:`anywhere`,maxWidth:`100%`},disabled:C||!c||!Uu(a,s),onClick:x,children:e(`nativeMain.confirm`)})]})]})]})]})}function ed(e){return(0,Q.jsx)(td,{...e},e.apiBase)}function td({apiBase:e,disabled:n=!1,onChanged:r}){let{locale:i}=t(),a=Eu(i),o=(0,Z.useId)(),[s]=(0,Z.useState)(()=>new Yu(e)),[c,l]=(0,Z.useState)(s.state),u=(0,Z.useRef)(null),d=(0,Z.useRef)(null),f=(0,Z.useRef)(!1);return(0,Z.useLayoutEffect)(()=>s.attach(l),[s]),(0,Z.useLayoutEffect)(()=>{s.updateOptions(n,r)},[s,n,r]),(0,Z.useLayoutEffect)(()=>{c.action?(f.current=!0,d.current?.focus()):!c.busy&&f.current&&(f.current=!1,u.current?.focus())},[c.action,c.busy]),(0,Q.jsx)($u,{t:a,id:o,...c,previousId:c.previous?.id??null,summaryRef:u,confirmationRef:d,onToggle:()=>{s.toggle()},onRefresh:()=>{s.refresh()},onLabel:e=>s.setLabel(e),onRegister:()=>{s.register()},onSelect:e=>s.select(e),onStopped:e=>s.setStopped(e),onConfirm:()=>{s.confirm()}})}var nd={"reset-first":{on:`accountPool.strategyHintResetFirst`,off:`codexAuth.autoSwitchQuotaOffDesc`},quota:{on:`codexAuth.autoSwitchQuotaDesc`,off:`codexAuth.autoSwitchQuotaOffDesc`},"round-robin":{on:`codexAuth.autoSwitchRoundRobinDesc`,off:`codexAuth.autoSwitchRoundRobinDesc`},"fill-first":{on:`codexAuth.autoSwitchFillFirstDesc`,off:`codexAuth.autoSwitchFillFirstOffDesc`}};function rd({threshold:e,draft:t,strategy:n=`quota`,hydrated:r=!0,saving:i,loadError:a,feedback:o,onDraftChange:s,onEditingChange:c,onCommit:l,onCancel:u,onToggle:d,onRetry:f}){let p=O(),m=(0,Z.useRef)(!1),h=e>0,g=nd[n][h?`on`:`off`],_=i||!r,v=i?p(`common.saving`):o?.message??``,y=i?`pending`:o?.tone,b=v?`codex-auto-switch-desc codex-auto-switch-feedback`:`codex-auto-switch-desc`;return(0,Q.jsxs)(`div`,{className:`card card-row codex-auto-switch-card`,style:{marginTop:16},"aria-busy":i||!r&&!a||void 0,children:[(0,Q.jsxs)(`div`,{className:`codex-auto-switch-copy`,children:[(0,Q.jsx)(`strong`,{children:p(`codexAuth.autoSwitch`)}),(0,Q.jsx)(`div`,{id:`codex-auto-switch-desc`,className:`card-sub`,role:a?`alert`:void 0,children:a?p(`codexAuth.autoSwitchLoadFailed`):p(g,{threshold:e})}),(0,Q.jsx)(`div`,{className:`card-sub`,children:p(`codexAuth.failureRecoveryNote`)}),(0,Q.jsx)(`div`,{className:`card-sub`,children:p(`codexAuth.cacheWarning`)})]}),(0,Q.jsxs)(`div`,{className:`codex-auto-switch-controls`,onBlur:e=>{if(!e.currentTarget.contains(e.relatedTarget)){if(c(!1),m.current){m.current=!1;return}h&&!_&&l()}},children:[a&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:f,children:p(`pws.retryAccounts`)}),h&&(0,Q.jsxs)(`label`,{className:`codex-auto-switch-threshold`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:p(`codexAuth.autoSwitchThreshold`)}),(0,Q.jsxs)(`span`,{className:`codex-auto-switch-input-wrap`,children:[(0,Q.jsx)(`input`,{className:`input mono codex-auto-switch-input`,type:`number`,min:1,max:100,step:1,inputMode:`numeric`,value:t,readOnly:_,"aria-disabled":_,"aria-label":p(`codexAuth.autoSwitchThresholdAria`),"aria-describedby":b,onChange:e=>s(e.target.value),onFocus:()=>{_||c(!0)},onKeyDown:e=>{e.nativeEvent.isComposing||_||(e.key===`Enter`?(e.preventDefault(),l()):e.key===`Escape`&&(e.preventDefault(),u()))}}),(0,Q.jsx)(`span`,{className:`codex-auto-switch-unit`,"aria-hidden":`true`,children:`%`}),(0,Q.jsx)(Zc,{disabled:_,incrementLabel:p(`codexAuth.autoSwitchThresholdInc`),decrementLabel:p(`codexAuth.autoSwitchThresholdDec`),onIncrement:()=>{c(!0),s(Xc(t,1,1,100))},onDecrement:()=>{c(!0),s(Xc(t,-1,1,100))}})]})]}),(0,Q.jsx)(`span`,{className:`codex-auto-switch-toggle-slot`,children:(0,Q.jsx)(`button`,{type:`button`,className:`toggle ${h?`on`:``}`,onPointerDownCapture:()=>{m.current=!0},onPointerUp:()=>{m.current=!1},onPointerCancel:()=>{m.current=!1},onClick:()=>{m.current=!1,d()},disabled:_,"aria-pressed":h,"aria-label":p(`codexAuth.autoSwitch`),"aria-describedby":b,title:p(`codexAuth.autoSwitch`),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})})})]}),v&&(0,Q.jsx)(`div`,{id:`codex-auto-switch-feedback`,className:`codex-auto-switch-feedback${y===`err`?` is-error`:``}`,role:y===`err`?`alert`:`status`,"aria-atomic":`true`,children:v})]})}var id={"reset-first":`accountPool.strategyResetFirst`,quota:`accountPool.strategyQuota`,"round-robin":`accountPool.strategyRoundRobin`,"fill-first":`accountPool.strategyFillFirst`},ad={"reset-first":`accountPool.strategyHintResetFirst`,quota:`accountPool.strategyHintQuota`,"round-robin":`accountPool.strategyHintRoundRobin`,"fill-first":`accountPool.strategyHintFillFirst`};function od({strategy:e,codex:t=!1,threshold:n,stickyDraft:r,disabled:i=!1,strategySelectId:a=`account-pool-strategy`,stickyInputId:o=`account-pool-sticky-limit`,onStrategyChange:s,onStickyDraftChange:c,onStickyCommit:l}){let u=O(),d=zl.filter(e=>t||e!==`reset-first`).map(e=>({value:e,label:u(id[e])})),f=n===void 0?null:e===`round-robin`?u(`accountPool.thresholdNotUsed`):n>0?u(e===`fill-first`?`accountPool.drainAtThreshold`:e===`reset-first`?`accountPool.resetBelowThreshold`:`accountPool.switchAtThreshold`,{threshold:String(n)}):u(`accountPool.proactiveSwitchingOff`);return(0,Q.jsxs)(`div`,{className:`account-pool-strategy-controls`,children:[(0,Q.jsxs)(`div`,{className:`setting-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-label`,children:[(0,Q.jsx)(`span`,{className:`title`,id:`${a}-label`,children:u(`accountPool.strategy`)}),(0,Q.jsx)(`span`,{className:`desc`,children:u(`accountPool.strategyDesc`)}),(0,Q.jsx)(`span`,{className:`desc`,children:u(ad[e])}),(0,Q.jsx)(`span`,{className:`desc`,children:u(`accountPool.unboundDefinition`)})]}),(0,Q.jsxs)(`div`,{className:`setting-controls`,children:[(0,Q.jsx)(cn,{id:a,value:e,options:d,disabled:i,label:u(`accountPool.strategy`),onChange:e=>s(e)}),f&&(0,Q.jsx)(`span`,{className:`badge badge-muted account-pool-threshold-badge`,"data-testid":`account-pool-threshold-summary`,children:f})]})]}),e===`round-robin`&&(0,Q.jsxs)(`div`,{className:`setting-row`,children:[(0,Q.jsxs)(`label`,{className:`setting-label`,htmlFor:o,children:[(0,Q.jsx)(`span`,{className:`title`,children:u(`accountPool.stickyLimit`)}),(0,Q.jsx)(`span`,{className:`desc`,children:u(`accountPool.stickyLimitHelp`)})]}),(0,Q.jsx)(`div`,{className:`setting-controls`,children:(0,Q.jsxs)(`span`,{className:`codex-auto-switch-input-wrap`,children:[(0,Q.jsx)(`input`,{id:o,className:`input mono codex-auto-switch-input`,type:`number`,min:1,max:100,step:1,inputMode:`numeric`,value:r,disabled:i,"aria-label":u(`accountPool.stickyLimitAria`),onChange:e=>c(e.target.value),onBlur:()=>l(),onKeyDown:e=>{e.nativeEvent.isComposing||i||e.key===`Enter`&&(e.preventDefault(),l())}}),(0,Q.jsx)(Zc,{disabled:i,incrementLabel:u(`accountPool.stickyLimitInc`),decrementLabel:u(`accountPool.stickyLimitDec`),onIncrement:()=>{let e=Xc(r,1,1,100);c(e),l(e)},onDecrement:()=>{let e=Xc(r,-1,1,100);c(e),l(e)}})]})})]})]})}function sd(e){if(!e||typeof e!=`object`)return null;let t=e;if(!(`accountPoolStrategy`in t)&&!(`accountPoolStickyLimit`in t)&&!(`autoSwitchThreshold`in t))return null;let n=typeof t.autoSwitchThreshold==`number`?t.autoSwitchThreshold:void 0;return{strategy:Gl(t.accountPoolStrategy),stickyLimit:ql(t.accountPoolStickyLimit),threshold:n}}function cd({apiBase:e,subscribeLoadObserver:t,readLastActive:n,onStrategyResolved:r,threshold:i}){let a=O(),[o,s]=(0,Z.useState)(Vl),[c,l]=(0,Z.useState)(1),[u,d]=(0,Z.useState)(`1`),[f,p]=(0,Z.useState)(void 0),[m,h]=(0,Z.useState)(!1),g=(0,Z.useRef)(!1),[_,v]=(0,Z.useState)(!1),y=(0,Z.useRef)(!1),b=(0,Z.useRef)(!1),x=(0,Z.useRef)(0),[S,C]=(0,Z.useState)(!1),[w,T]=(0,Z.useState)(null),E=(0,Z.useCallback)(e=>{let t=Gl(e.accountPoolStrategy),n=ql(e.accountPoolStickyLimit);typeof e.autoSwitchThreshold==`number`&&p(e.autoSwitchThreshold),s(t),r?.(t),l(n),d(String(n)),g.current=!0,h(!0),C(!1),T(null)},[r]),D=(0,Z.useCallback)(e=>{let t=sd(e);t&&E({accountPoolStrategy:t.strategy,accountPoolStickyLimit:t.stickyLimit,autoSwitchThreshold:t.threshold})},[E]),k=(0,Z.useCallback)(async()=>{try{let t=await fetch(`${e}/api/codex-auth/active`);if(!t.ok)throw Error(`load`);let n=await t.json();if(y.current){b.current=!0;return}E(n)}catch{y.current||C(!0)}},[e,E]),A=(0,Z.useCallback)(()=>{b.current&&(b.current=!1,queueMicrotask(()=>{if(y.current){b.current=!0;return}k()}))},[k]);(0,Z.useEffect)(()=>{if(!t)return;let e=t({beginActiveRead:()=>x.current,acceptActiveRead:(e,t)=>{if(t===x.current){if(y.current){b.current=!0;return}D(e)}},rejectActiveRead:()=>{g.current||C(!0)}});return!y.current&&n&&D(n()),e},[t,D,n]),(0,Z.useEffect)(()=>{!n||t||y.current||D(n())},[n,D,t]),(0,Z.useEffect)(()=>{t||k()},[k,t]);let j=(0,Z.useCallback)(async t=>{if(y.current)return;let n=o,i=c;t.strategy!==void 0&&(s(t.strategy),r?.(t.strategy)),t.stickyLimit!==void 0&&(l(t.stickyLimit),d(String(t.stickyLimit))),y.current=!0,v(!0),T(null),x.current+=1;let u=await tu(e,t);x.current+=1,u.ok?(s(u.strategy),r?.(u.strategy),l(u.stickyLimit),d(String(u.stickyLimit)),g.current=!0,h(!0)):(T(a(`accountPool.strategyUpdateFailed`)),s(n),r?.(n),l(i),d(String(i))),y.current=!1,v(!1),A()},[e,r,A,c,o,a]),M=_||S||!m;return(0,Q.jsxs)(`div`,{className:`card account-pool-strategy-card`,"aria-busy":_||!m&&!S,children:[S&&(0,Q.jsx)(`div`,{className:`card-sub`,role:`alert`,children:a(`accountPool.strategyLoadFailed`)}),S&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm account-pool-strategy-card__retry`,onClick:()=>{k()},children:a(`common.retry`)}),!S&&(0,Q.jsx)(od,{codex:!0,strategy:o,threshold:i===void 0?f:i,stickyDraft:u,disabled:M,strategySelectId:`codex-pool-strategy`,stickyInputId:`codex-pool-sticky-limit`,onStrategyChange:e=>{M||e===o||j({strategy:e})},onStickyDraftChange:d,onStickyCommit:e=>{if(M)return;let t=Jl(e??u);if(t===null){d(String(c)),T(a(`accountPool.stickyLimitInvalid`));return}if(t===c){d(String(t));return}j({stickyLimit:t})}}),w&&(0,Q.jsx)(`div`,{role:`alert`,className:`card-sub account-pool-strategy-card__error`,children:w})]})}function ld({t:e,open:t,onToggle:n,children:r}){return(0,Q.jsxs)(`section`,{className:`codex-auth-advanced`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`codex-auth-advanced__toggle`,"aria-expanded":t,"aria-controls":`codex-auth-advanced-boxes`,onClick:n,children:[(0,Q.jsx)(`span`,{children:e(`codexAuth.advancedSettings`)}),(0,Q.jsx)(Ke,{width:12,height:12,"aria-hidden":`true`,className:t?`codex-auth-advanced__chevron is-open`:`codex-auth-advanced__chevron`})]}),t&&(0,Q.jsx)(`div`,{id:`codex-auth-advanced-boxes`,className:`codex-auth-advanced__boxes`,children:r})]})}function ud(e,t){let[n,r]=(0,Z.useState)(80),[i,a]=(0,Z.useState)(`80`),[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(null),m=(0,Z.useRef)(80),h=(0,Z.useRef)(!1),g=(0,Z.useRef)(80),_=(0,Z.useRef)(!1),v=(0,Z.useRef)(!1),y=(0,Z.useRef)(!1),b=(0,Z.useRef)(0),x=(0,Z.useRef)(null),S=(0,Z.useRef)(null),C=(0,Z.useCallback)(e=>{m.current=e,h.current=!0,s(!0),r(e),e>0&&(g.current=e),a(String(e>0?e:g.current))},[]),w=(0,Z.useCallback)(e=>{if(_.current||v.current){x.current=e;return}x.current=null,C(e)},[C]),T=(0,Z.useCallback)(()=>{let e=x.current;return e!==null&&(x.current=null,C(e),!0)},[C]),E=(0,Z.useCallback)(()=>{S.current!==null&&(window.clearTimeout(S.current),S.current=null),p(null)},[]),D=(0,Z.useCallback)((e,t)=>{S.current!==null&&window.clearTimeout(S.current),p({tone:t?`err`:`ok`,message:e}),S.current=window.setTimeout(()=>{p(null),S.current=null},5e3)},[]);(0,Z.useEffect)(()=>()=>{S.current!==null&&window.clearTimeout(S.current)},[]);let O=(0,Z.useCallback)(()=>(h.current||l(!1),b.current),[]),k=(0,Z.useCallback)((e,t)=>{l(!1);let n=su(e),r=ou(_.current,v.current,t,b.current);r===`defer`?x.current=ru(n):r===`apply`&&w(ru(n))},[w]),A=(0,Z.useCallback)(e=>{h.current||_.current||v.current||(l(!1),C(ru(su(e))))},[C]),j=(0,Z.useCallback)(()=>{h.current||l(!0)},[]),M=(0,Z.useCallback)(async(n,r,i=!0)=>{if(v.current)return!1;v.current=!0,_.current=!1,E(),d(!0),b.current+=1;try{let a=await lu(e,n);return b.current+=1,a?(x.current=null,C(n),i&&D(t.updated,!1)):(T()||C(r),D(t.updateFailed,!0)),a}finally{v.current=!1,d(!1)}},[e,C,E,t.updateFailed,t.updated,T,D]),N=(0,Z.useCallback)(()=>{_.current=!1;let e=m.current;T()||a(String(e>0?e:g.current)),D(t.invalid,!0)},[t.invalid,T,D]),P=(0,Z.useCallback)(()=>{_.current=!1,y.current=!0,E();let e=m.current;T()||a(String(e>0?e:g.current))},[E,T]),F=(0,Z.useCallback)(async()=>{if(y.current)return y.current=!1,!0;if(!h.current||v.current)return!1;let e=m.current;_.current=!1;let t=iu(i);return t===null?(N(),!1):t===e?(T()||a(String(t)),!0):M(t,e)},[i,T,N,M]),I=(0,Z.useCallback)(async()=>{if(!h.current||v.current)return!1;let e=m.current;_.current=!1;let t=cu(e,i,g.current),n=await M(t.threshold,e);return n?(g.current=t.lastEnabled,t.threshold===0&&a(String(t.lastEnabled)),n):!1},[i,M]);return{threshold:n,draft:i,hydrated:o,saving:u,loadError:c,feedback:f,beginServerRead:O,acceptServerRead:k,hydrateServerValue:A,rejectServerRead:j,setDraft:(0,Z.useCallback)(e=>{h.current&&(_.current=!0,y.current=!1,E(),a(e))},[E]),setEditing:(0,Z.useCallback)(e=>{_.current=e},[]),commit:F,cancel:P,toggle:I,retry:(0,Z.useCallback)(()=>{l(!1),E()},[E])}}function dd({value:e,disabled:t=!1,selectId:n,onChange:r}){let i=O(),a=Pl(e),o=i(`accountPool.priorityHint`),s=`${n}-hint`,c=Ml.map(e=>({value:String(e),label:Rl(i,e)})),l=Il(a)?c:[{value:String(a),label:Rl(i,a)},...c];return(0,Q.jsxs)(`div`,{className:`codex-account-priority`,children:[(0,Q.jsx)(`label`,{className:`codex-account-priority-label`,htmlFor:n,children:i(`accountPool.priority`)}),(0,Q.jsx)(cn,{id:n,value:String(a),options:l,disabled:t,label:i(`accountPool.priorityAria`),describedBy:s,title:o,onChange:e=>r(Pl(Number.parseInt(e,10)))}),(0,Q.jsx)(`span`,{id:s,className:`sr-only`,children:o})]})}function fd({value:e}){let t=O(),n=Pl(e);return n===0?null:(0,Q.jsx)(`span`,{className:`badge badge-muted`,children:Rl(t,n)})}function pd({summary:e,busy:t,onToggleAll:n}){let r=O(),i=(0,Z.useId)(),a=e.total>0&&e.enabled===e.total,o=e.enabled>0&&!a;return(0,Q.jsxs)(`span`,{className:`codex-credit-spend`,"aria-busy":t||void 0,children:[(0,Q.jsx)(`span`,{className:`codex-auth-credits-toggle__label`,children:r(`codexAuth.creditSpend`)}),(0,Q.jsx)(`button`,{type:`button`,className:`toggle ${a?`on`:``}`,"aria-label":r(`codexAuth.creditSpendAria`),"aria-describedby":i,"aria-pressed":o?`mixed`:a,title:r(`codexAuth.creditsAfterLimitHint`),disabled:t||e.total===0,onClick:()=>n(!a),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})}),(0,Q.jsx)(`span`,{id:i,className:`sr-only`,children:r(`codexAuth.creditsAfterLimitHint`)})]})}function md({accountLabel:e,enabled:t,saving:n,disabled:r,hint:i,onChange:a}){let o=O(),s=(0,Z.useId)(),c=t===!0,l=i??o(`codexAuth.creditsAfterLimitHint`);return(0,Q.jsxs)(`div`,{className:`codex-account-credits`,title:l,"aria-busy":n||void 0,children:[(0,Q.jsx)(`span`,{className:`codex-account-credits__label`,children:o(`codexAuth.creditsAfterLimit`)}),(0,Q.jsx)(`button`,{type:`button`,className:`toggle codex-account-credits__toggle ${c?`on`:``}`,disabled:r||n,"aria-pressed":c,"aria-label":o(`codexAuth.creditsAfterLimitAria`,{email:e}),"aria-describedby":s,onClick:()=>a(!c),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})}),(0,Q.jsx)(`span`,{id:s,className:`sr-only`,children:l})]})}function hd({enabled:e}){let t=O();return e===!0?(0,Q.jsx)(`span`,{className:`badge badge-amber`,title:t(`codexAuth.creditsAfterLimitHint`),children:t(`codexAuth.creditsOn`)}):null}function gd({credits:e,t,locale:n}){if(!e)return null;let r=e.balance!==void 0&&/^\d+(\.\d+)?$/.test(e.balance)?Number(e.balance):void 0,i=r!==void 0&&Number.isFinite(r);if(!i&&e.unlimited!==!0&&e.overageLimitReached!==!0)return null;let a=new Intl.NumberFormat(n,{maximumFractionDigits:2}),o=i?a.format(r):``,s=e.overageLimitReached===!0,c=e.unlimited===!0,l=s?`${o?`${o} · `:``}${t(`codexAuth.creditsOverage`)}`:c?t(`codexAuth.creditsUnlimited`):o,u=!s&&(c||i&&r>0),d=e=>e?e.map(e=>a.format(e)).join(`–`):`—`,f=e.approxLocalMessages||e.approxCloudMessages?t(`codexAuth.creditsApprox`,{local:d(e.approxLocalMessages),cloud:d(e.approxCloudMessages)}):void 0;return(0,Q.jsxs)(`div`,{className:`quota-row quota-row--codex-credits`,title:f,children:[(0,Q.jsx)(`span`,{className:`quota-label`,children:t(`codexAuth.credits`)}),(0,Q.jsx)(`span`,{className:`quota-reset-label`,children:t(`codexAuth.creditsRemaining`)}),(0,Q.jsx)(`span`,{className:`quota-reset-day`}),(0,Q.jsx)(`span`,{className:`quota-reset-time`}),(0,Q.jsx)(`div`,{className:`bar`,"aria-hidden":`true`,children:(0,Q.jsx)(`div`,{className:`bar-fill bar-green`,style:{"--bar-scale":u?`1`:`0`}})}),(0,Q.jsx)(`span`,{className:`quota-val`,children:l})]})}function _d(e,t){return`${e??``}\0${JSON.stringify(t)}`}var vd={month:`short`,day:`numeric`,year:`numeric`},yd={month:`short`,day:`numeric`,year:`numeric`,hour:`2-digit`,minute:`2-digit`},bd=new Map;function xd(e,t){let n=_d(e,t),r=bd.get(n);return r||(r=new Intl.DateTimeFormat(e,t),bd.set(n,r)),r}function Sd(e,t){let n=new Date(e);return Number.isNaN(n.getTime())?`—`:xd(t,vd).format(n)}function Cd(e,t){let n=new Date(e);return Number.isNaN(n.getTime())?`—`:xd(t,yd).format(n)}var wd=new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`,currencyDisplay:`narrowSymbol`,minimumFractionDigits:4,maximumFractionDigits:4});function Td(e,t){return!Number.isFinite(e)||e<0?`—`:`~${wd.format(e)}`}function Ed(e,t){return Sd(e,t)}function Dd(e,t){return Cd(e,t)}function Od(e){return Math.max(0,Math.ceil((new Date(e).getTime()-Date.now())/864e5))}function kd({index:e,grantedAt:t,expiresAt:n,isNext:r,locale:i,t:a}){let o=Od(n),s=o<=7;return(0,Q.jsxs)(`div`,{className:`credit-item${r?` credit-next`:``}`,children:[(0,Q.jsxs)(`div`,{className:`credit-item-head`,children:[(0,Q.jsx)(lt,{width:13}),(0,Q.jsx)(`span`,{className:`credit-item-label`,children:r?a(`codexAuth.creditNext`):a(`codexAuth.creditLabel`,{n:String(e+1)})}),r&&(0,Q.jsx)(`span`,{className:`badge badge-amber text-micro`,style:{padding:`1px 6px`},children:a(`codexAuth.creditNextBadge`)})]}),(0,Q.jsxs)(`div`,{className:`credit-item-dates`,children:[(0,Q.jsx)(`span`,{children:a(`codexAuth.creditGranted`,{date:Ed(t,i)})}),(0,Q.jsx)(`span`,{className:s?`credit-urgent`:``,children:a(`codexAuth.creditExpires`,{date:Dd(n,i),days:String(o)})})]})]})}function Ad({t:e,onUnpin:t}){return(0,Q.jsx)(`button`,{type:`button`,className:`badge badge-muted badge-clickable`,onClick:e=>{e.stopPropagation(),t()},title:`${e(`codexAuth.pinnedHint`)} ${e(`codexAuth.unpinHint`)}`,"aria-label":`${e(`codexAuth.pinned`)} — ${e(`codexAuth.unpinHint`)}`,children:e(`codexAuth.pinned`)})}function jd({account:e,onClick:t,t:n}){let r=e.quota?.resetCredits;return e.quota==null?(0,Q.jsxs)(`span`,{className:`badge badge-muted codex-ticket-badge-slot`,"aria-hidden":`true`,children:[(0,Q.jsx)(lt,{width:12}),`0`]}):r===void 0?null:(0,Q.jsxs)(`button`,{type:`button`,className:`badge ${typeof r==`number`&&r>0?`badge-amber`:`badge-muted`} badge-clickable`,onClick:e=>{e.stopPropagation(),t()},"aria-label":n(`codexAuth.resetCreditsAria`,{count:String(r)}),children:[(0,Q.jsx)(lt,{width:12}),r]})}function Md({t:e,paused:t,saving:n}){let r=e(`codexAuth.pause`),i=e(`codexAuth.resume`),a=e(`common.saving`),o=n?a:t?i:r,s=Math.max(r.length,i.length,a.length);return(0,Q.jsx)(`span`,{className:`codex-auth-pause-label`,style:{minWidth:`${s}ch`},children:o})}function Nd({pool:e,creditsVisible:n,loading:r=!1,activeId:i,accountModeState:a,switchActionLabel:o,threshold:s,onOpenReset:c,onSwitch:l,onTogglePause:u,pauseUpdatingId:d,pauseBusy:f,onPriorityChange:p,priorityUpdatingId:m,onAutoSwitchThresholdChange:h,autoSwitchDisabled:g,switchingId:_,pinnedId:v=null,onUnpin:y,onReauth:b,onEditAlias:x,onRemove:S,onToggleCreditsAfterLimit:C,creditsAfterLimitUpdatingId:w=null,onCopyDoctor:T,doctorCopyOutcomeFor:E}){let D=O(),{locale:k}=t(),A=e=>!e.paused&&i===e.id,j=_l(),[M,N]=(0,Z.useState)(new Set);return(0,Q.jsx)(Q.Fragment,{children:e.map(e=>{let t=n===!0&&e.credits!==void 0,i=e.health?.status,O=e.selectionExcludedReason===`plan_excluded`,P=!!e.needsReauth||tl(i),F=rl(i),I=e.health?.reason===`validation_pending`,L=ol(D,e.health),R=sl(D,`codex`,e.id,e.health);return(0,Q.jsxs)(`div`,{className:`card ${A(e)?`card-active`:``}`,style:{marginBottom:8},children:[(0,Q.jsxs)(`div`,{className:`card-head`,children:[(0,Q.jsx)(`span`,{className:`dot ${P?`dot-amber`:A(e)?`dot-blue`:`dot-muted`}`}),(0,Q.jsx)(`strong`,{children:e.alias??e.email}),(0,Q.jsxs)(`span`,{className:`card-badges`,children:[e.plan&&(0,Q.jsx)(`span`,{className:`badge badge-green`,children:e.plan}),O&&(0,Q.jsx)(`span`,{className:`badge badge-muted`,title:D(`codexAuth.planExcludedHint`,{plan:e.selectionExcludedPlan??e.plan??``}),children:D(`codexAuth.planExcluded`)}),e.paused&&(0,Q.jsx)(`span`,{className:`badge badge-muted`,title:D(`codexAuth.pausedHint`),children:D(`codexAuth.paused`)}),(0,Q.jsx)(fd,{value:e.priority}),(0,Q.jsx)(hd,{enabled:e.creditsAfterLimit}),e.id===v&&!e.paused&&(0,Q.jsx)(Ad,{t:D,onUnpin:()=>y(e)}),(0,Q.jsx)(jd,{t:D,account:e,onClick:()=>c(e)}),L&&(0,Q.jsx)(`span`,{className:el(i),children:L}),P&&!L&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:D(`codexAuth.needsReauth`)}),A(e)&&!O&&!P&&!F&&!I&&(0,Q.jsx)(`span`,{className:`badge badge-primary`,children:D(a===`direct`?`codexAuth.poolPrepared`:`codexAuth.nextSession`)})]}),!e.paused&&!O&&(!A(e)||v!==e.id)&&!P&&!F&&!I&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm codex-account-switch`,onClick:()=>l(e),children:o}),P&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:()=>b(e.id),children:D(`codexAuth.reauthenticate`)}),T&&il(i)&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm codex-auth-action-btn`,onClick:()=>T(e.id),children:(0,Q.jsx)(`span`,{"aria-live":`polite`,children:ul(D,E?.(e.id))})}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-sm btn-ghost codex-auth-action-btn`,onClick:()=>u(e),disabled:f,title:e.paused?D(`codexAuth.pausedHint`):void 0,"aria-label":e.paused?`${D(`codexAuth.resume`)}. ${D(`codexAuth.pausedHint`)}`:D(`codexAuth.pause`),children:[e.paused?(0,Q.jsx)(Be,{width:14}):(0,Q.jsx)(z,{width:14}),(0,Q.jsx)(Md,{t:D,paused:e.paused,saving:d===e.id})]}),(0,Q.jsxs)(`details`,{className:`codex-account-more card-right`,open:M.has(e.id),onToggle:t=>{let n=t.currentTarget.open;N(t=>{let r=new Set(t);return n?r.add(e.id):r.delete(e.id),r})},children:[(0,Q.jsx)(`summary`,{className:`btn btn-ghost btn-sm`,"aria-label":`${D(`codexAuth.moreActions`)} — ${e.email}`,title:D(`codexAuth.moreActions`),children:`⋯`}),(0,Q.jsxs)(`div`,{className:`codex-account-more-body`,children:[(0,Q.jsxs)(`span`,{className:`mono text-caption muted`,children:[D(`prov.accountId`),`: `,Yc(e.id)]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>j.copy(e.id,e.id),children:j.outcomeFor(e.id)===`copied`?D(`startup.copied`):D(`codexAuth.copyId`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void x(e),children:D(`prov.editAlias`)}),C&&(0,Q.jsx)(md,{accountLabel:e.alias??e.email,enabled:e.creditsAfterLimit,saving:w===e.id,disabled:w!==null,onChange:t=>C(e,t)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn-icon btn-icon-danger`,"aria-label":`${D(`common.remove`)} — ${e.email}`,title:`${D(`common.remove`)} — ${e.email}`,onClick:t=>{t.stopPropagation(),S(e.id)},children:(0,Q.jsx)(ve,{width:14})})]})]})]}),(0,Q.jsxs)(`div`,{className:`codex-account-identity`,children:[(0,Q.jsxs)(`div`,{className:`codex-account-identity-copy`,children:[e.email,e.plan?` · ${e.plan}`:``]}),(0,Q.jsxs)(`div`,{className:`codex-account-controls`,children:[(Pl(e.priority)!==0||M.has(e.id))&&(0,Q.jsx)(dd,{value:e.priority,selectId:`codex-account-priority-${e.id}`,disabled:m!==null||_!==null,onChange:t=>p(e,t)}),(0,Q.jsx)(Qc,{accountLabel:e.alias??e.email,globalThreshold:s,override:e.autoSwitchThresholdOverride,inputId:`codex-account-auto-switch-${e.id}`,disabled:g,onChange:t=>h(e,t)},e.id)]})]}),R&&(0,Q.jsx)(`div`,{className:`card-sub faint`,children:R}),F&&(0,Q.jsx)(`div`,{className:`card-sub faint`,children:D(`pws.healthCooldownHint`)}),P?(0,Q.jsx)(`div`,{className:`card-sub faint`,children:D(`codexAuth.tokenExpired`)}):!F&&(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsx)(fs,{quota:e.quota,plan:e.plan,threshold:e.autoSwitchThresholdOverride??s,t:D,pending:e.quota==null&&(r||!t),afterWeekly:t&&!r?(0,Q.jsx)(gd,{credits:e.credits,t:D,locale:k}):void 0})})]},e.id)})})}function Pd({onReauth:e}){let t=O();return(0,Q.jsxs)(`div`,{className:`notice-warn`,style:{marginBottom:12,display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:12,flexWrap:`wrap`},children:[(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(Ae,{width:14}),` `,t(`codexAuth.tokenExpired`)]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:e,children:t(`codexAuth.reauthenticate`)})]})}function Fd({confirm:e,mainEmail:t,accountModeState:n,switchingId:r,orderBusy:i=!1,threshold:a,unpin:o=!1,onCancel:s,onConfirm:c}){let l=O(),u=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{let e=u.current;e&&!e.open&&e.showModal()},[]);let d=(0,Z.useCallback)(e=>{e.preventDefault(),s()},[s]),f=fe(e.quota,e.plan),p=a!==void 0&&a>0&&f!==null&&f>=a;return(0,Q.jsxs)(`dialog`,{ref:u,className:`modal-overlay`,"aria-labelledby":`codex-switch-title`,onCancel:d,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":l(`common.close`),tabIndex:-1,onClick:s}),(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),role:`document`,children:[(0,Q.jsx)(`h3`,{id:`codex-switch-title`,children:o?l(`codexAuth.unpinTitle`):n===`direct`?l(`codexAuth.preparePoolTitle`):e.id===`__main__`?l(`codexAuth.switchBack`):l(`codexAuth.switchTitle`)}),(0,Q.jsx)(`p`,{className:`modal-desc`,children:o?l(`codexAuth.unpinDesc`):n===`direct`?l(`codexAuth.preparePoolDesc`):e.id===`__main__`?l(`codexAuth.switchBackDesc`):l(`codexAuth.switchDesc`)}),(0,Q.jsxs)(`div`,{className:`card`,style:{margin:`12px 0`},children:[(0,Q.jsx)(`strong`,{children:e.id===`__main__`?t||l(`codexAuth.codexApp`):e.email}),e.plan&&(0,Q.jsx)(`span`,{className:`badge badge-green`,style:{marginLeft:8},children:e.plan})]}),!o&&e.id!==`__main__`&&(0,Q.jsxs)(`div`,{className:`notice-warn`,children:[(0,Q.jsx)(Ae,{width:14}),` `,l(`codexAuth.cacheWarning`)]}),!o&&p&&(0,Q.jsxs)(`div`,{className:`notice-warn`,"data-testid":`codex-switch-threshold-warning`,children:[(0,Q.jsx)(Ae,{width:14}),` `,l(`codexAuth.switchExceedsThresholdWarning`,{threshold:a})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:s,children:l(`codexAuth.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:!!r||i,onClick:c,children:l(r?`pws.accountSwitching`:o?`codexAuth.unpinAction`:n===`direct`?`codexAuth.prepareForPool`:`codexAuth.setAsNext`)})]})]})]})}function Id({resetPopup:e,resetConfirm:n,creditDetails:r,creditDetailsLoading:i,redeeming:a,onClose:o,onShowConfirm:s,onCancelConfirm:c,onRedeem:l}){let{locale:u,t:d}=t(),f=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{let e=f.current;e&&!e.open&&e.showModal()},[]);let p=(0,Z.useCallback)(e=>{e.preventDefault(),o()},[o]);return(0,Q.jsxs)(`dialog`,{ref:f,className:`modal-overlay`,"aria-labelledby":`codex-reset-title`,onCancel:p,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":d(`common.close`),tabIndex:-1,onClick:o}),(0,Q.jsx)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),role:`document`,children:n?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{textAlign:`center`,padding:`12px 0`},children:[(0,Q.jsx)(`div`,{className:`confirm-icon`,children:(0,Q.jsx)(Ae,{width:22})}),(0,Q.jsx)(`h3`,{id:`codex-reset-title`,children:d(`codexAuth.confirmResetTitle`)}),(0,Q.jsx)(`p`,{className:`modal-desc`,children:d(`codexAuth.confirmResetDesc`,{count:String(e.quota?.resetCredits??0)})}),r&&r[0]&&(0,Q.jsx)(`p`,{className:`faint text-label`,children:d(`codexAuth.confirmWhichCredit`,{date:Ed(r[0].granted_at,u)})}),(0,Q.jsx)(`p`,{className:`faint text-label`,children:d(`codexAuth.irreversible`)})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:c,children:d(`codexAuth.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:l,disabled:a,children:d(a?`codexAuth.redeeming`:`codexAuth.useCredit`)})]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`h3`,{id:`codex-reset-title`,children:[(0,Q.jsx)(lt,{width:16}),` `,d(`codexAuth.resetCreditsTitle`)]}),(0,Q.jsxs)(`div`,{className:`card-sub`,children:[e.email,e.plan?` · ${e.plan}`:``]}),(0,Q.jsx)(`div`,{style:{margin:`16px 0`},children:(e.quota?.resetCredits??0)>0?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{style:{marginBottom:12},children:d(`codexAuth.resetCreditsAvailable`,{count:String(e.quota?.resetCredits??0)})}),i&&(0,Q.jsx)(`p`,{className:`faint text-label`,children:d(`common.loading`)}),r&&r.length>0&&(0,Q.jsx)(`div`,{className:`credit-list`,children:r.map((e,t)=>(0,Q.jsx)(kd,{index:t,grantedAt:e.granted_at,expiresAt:e.expires_at,isNext:t===0,locale:u,t:d},`${e.granted_at}:${e.expires_at}`))}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,style:{marginTop:12,width:`100%`},onClick:s,disabled:a,children:d(`codexAuth.useOneCredit`)}),(0,Q.jsx)(`p`,{className:`card-sub text-caption`,style:{marginTop:8,textAlign:`center`},children:d(`codexAuth.fifoNote`)})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`faint`,children:d(`codexAuth.noResetCredits`)}),(0,Q.jsx)(`p`,{className:`modal-desc`,children:d(`codexAuth.earnCreditsHint`)})]})})]})})]})}function Ld({t:e,main:n,isMainActive:r,accountModeState:i,threshold:a,switchActionLabel:o,onSwitch:s,onTogglePause:c,pauseUpdatingId:l,pauseBusy:u,onPriorityChange:d,priorityUpdatingId:f,onAutoSwitchThresholdChange:p,autoSwitchDisabled:m,switchingId:h,pinnedId:g=null,onUnpin:_,onOpenReset:v,onCopyDoctor:y,doctorCopyOutcomeFor:b,onManageMainHardLock:x,mainReauth:S,onToggleCreditsAfterLimit:C,creditsAfterLimitUpdatingId:w=null,creditsVisible:T,loading:E=!1}){let{locale:D}=t(),O=T===!0&&n?.credits!==void 0,k=e(`codexAuth.codexApp`),A=n?.id??`__main__`,j={id:`__main__`,email:n?.email||k,plan:n?.plan,isMain:!0,paused:n?.paused??!1,priority:n?.priority??0,autoSwitchThresholdOverride:n?.autoSwitchThresholdOverride??null,hasCredential:!0,quota:n?.quota??null,quotaAutoRefresh:n?.quotaAutoRefresh??{fiveHourAvailable:!1,weeklyAvailable:!1,fiveHourEnabled:!1,weeklyEnabled:!1}},M=!!n?.needsReauth||tl(n?.health?.status),N=rl(n?.health?.status),P=n?.mainAccountHardLock,F=P?.enabled===!0&&P.state===`blocked`,I=ol(e,n?.health),L=n?sl(e,`codex`,A,n.health):null;return(0,Q.jsxs)(`div`,{className:`card ${r&&!F?`card-active`:``}`,style:{marginBottom:12},children:[(0,Q.jsxs)(`div`,{className:`card-head`,children:[(0,Q.jsx)(`span`,{className:`dot ${M||F?`dot-amber`:`dot-green`}`}),(0,Q.jsx)(`strong`,{children:e(`codexAuth.mainAccount`)}),(0,Q.jsxs)(`span`,{className:`card-badges`,children:[n?.plan&&(0,Q.jsx)(`span`,{className:`badge badge-green`,children:n.plan}),n?.paused&&(0,Q.jsx)(`span`,{className:`badge badge-muted`,title:e(`codexAuth.pausedHint`),children:e(`codexAuth.paused`)}),(0,Q.jsx)(fd,{value:j.priority}),(0,Q.jsx)(hd,{enabled:n?.creditsAfterLimit}),g===`__main__`&&!n?.paused&&(0,Q.jsx)(Ad,{t:e,onUnpin:()=>_(j)}),n&&(0,Q.jsx)(jd,{t:e,account:{...n,id:`__main__`},onClick:()=>v({...n,id:`__main__`})}),I&&(0,Q.jsx)(`span`,{className:el(n?.health?.status),children:I}),M&&!I&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:e(`codexAuth.needsReauth`)}),!n?.paused&&!F&&(0,Q.jsx)(`span`,{className:`badge ${r?`badge-primary`:`badge-muted`}`,children:e(r?i===`direct`?`codexAuth.poolPrepared`:`codexAuth.nextSession`:`codexAuth.current`)})]}),!n?.paused&&!F&&(!r||g!==`__main__`)&&!M&&!N&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm codex-account-switch`,onClick:()=>s(j),children:o}),y&&il(n?.health?.status)&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm codex-auth-action-btn`,onClick:()=>y(A),children:(0,Q.jsx)(`span`,{"aria-live":`polite`,children:ul(e,b?.(A))})}),n&&(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-sm btn-ghost codex-auth-action-btn`,onClick:()=>c(j),disabled:u,title:n.paused?e(`codexAuth.pausedHint`):void 0,"aria-label":n.paused?`${e(`codexAuth.resume`)}. ${e(`codexAuth.pausedHint`)}`:e(`codexAuth.pause`),children:[n.paused?(0,Q.jsx)(Be,{width:14}):(0,Q.jsx)(z,{width:14}),(0,Q.jsx)(Md,{t:e,paused:!!n.paused,saving:l===`__main__`})]}),n?.hasCredential&&C&&(0,Q.jsxs)(`details`,{className:`codex-account-more card-right`,children:[(0,Q.jsx)(`summary`,{className:`btn btn-ghost btn-sm`,"aria-label":`${e(`codexAuth.moreActions`)} — ${e(`codexAuth.mainAccount`)}`,title:e(`codexAuth.moreActions`),children:`⋯`}),(0,Q.jsx)(`div`,{className:`codex-account-more-body`,children:(0,Q.jsx)(md,{accountLabel:n.alias??(n.email||e(`codexAuth.mainAccount`)),enabled:n.creditsAfterLimit,saving:w===`__main__`,disabled:w!==null,hint:e(`codexAuth.creditsAfterLimitMainHint`),onChange:e=>C(j,e)})})]}),(0,Q.jsxs)(`span`,{className:`card-right`,children:[(0,Q.jsx)(at,{width:14}),` `,e(`codexAuth.appLogin`)]})]}),(0,Q.jsxs)(`div`,{className:`codex-account-identity`,children:[(0,Q.jsxs)(`div`,{className:`codex-account-identity-copy`,children:[n?.email||e(`codexAuth.appLogin`),n?.plan?` · ${n.plan}`:``]}),n&&(0,Q.jsxs)(`div`,{className:`codex-account-controls`,children:[(0,Q.jsx)(dd,{value:j.priority,selectId:`codex-account-priority-${j.id}`,disabled:f!==null||h!==null,onChange:e=>d(j,e)}),(0,Q.jsx)(Qc,{accountLabel:j.email,globalThreshold:a,override:j.autoSwitchThresholdOverride,inputId:`codex-account-auto-switch-${j.id}`,disabled:m,onChange:e=>p(j,e)},j.id)]})]}),P?.enabled&&(0,Q.jsxs)(`div`,{className:`codex-main-hard-lock-status${F?` is-blocked`:``}`,children:[(0,Q.jsx)(`p`,{role:`status`,children:e(F?`codexAuth.mainHardLockBlocked`:P.state===`ready`?`codexAuth.mainHardLockMonitoring`:`codexAuth.mainHardLockUnknown`,du(P.thresholds))}),x?(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:x,children:e(`codexAuth.mainHardLockManage`)}):(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:()=>qt(`codex-set`),children:e(`codexAuth.mainHardLockManage`)})]}),P?.externalUsage&&(0,Q.jsx)(`div`,{className:`codex-main-hard-lock-status is-blocked`,children:(0,Q.jsx)(`p`,{role:`status`,children:e(`codexAuth.mainExternalUsageWarning`)})}),L&&(0,Q.jsx)(`div`,{className:`card-sub faint`,children:L}),N&&(0,Q.jsx)(`div`,{className:`card-sub faint`,children:e(`pws.healthCooldownHint`)}),M?(0,Q.jsxs)(`div`,{className:`card-sub faint`,children:[(0,Q.jsx)(`p`,{role:`status`,children:e(`codexAuth.mainTokenExpired`)}),S&&(S.state.phase===`idle`||S.state.phase===`failed`||S.state.phase===`cancelled`)&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm codex-auth-action-btn`,onClick:()=>{S.start()},children:e(`codexAuth.mainReauthDevice`)}),S.state.phase===`failed`&&(0,Q.jsxs)(`span`,{className:`badge badge-amber`,children:[e(`codexAuth.mainReauthFailed`),`: `,S.state.code]})]}),S&&S.state.phase===`starting`&&(0,Q.jsx)(`span`,{className:`faint`,children:e(`codexAuth.mainReauthPending`)}),S&&(S.state.phase===`pending`||S.state.phase===`committing`)&&(0,Q.jsxs)(`span`,{className:`codex-main-reauth-pending`,children:[(0,Q.jsx)(bl,{hint:{url:S.state.verificationUrl,deviceCode:S.state.deviceCode}}),(0,Q.jsx)(`span`,{className:`faint`,children:e(`codexAuth.mainReauthPending`)}),S.state.cancelFailed&&(0,Q.jsx)(`span`,{role:`status`,className:`badge badge-amber`,children:e(`codexAuth.mainReauthFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm codex-auth-action-btn`,onClick:()=>{S.cancel()},children:e(`codexAuth.mainReauthCancel`)})]}),S&&S.state.phase===`succeeded`&&(0,Q.jsx)(`span`,{className:`badge badge-primary`,children:e(`codexAuth.mainReauthSucceeded`)})]}):!N&&(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsx)(fs,{quota:n?.quota??null,plan:n?.plan,threshold:j.autoSwitchThresholdOverride??a,t:e,pending:n!=null&&n.quota==null&&(E||!O),afterWeekly:O&&!E?(0,Q.jsx)(gd,{credits:n?.credits,t:e,locale:D}):void 0})})]})}function Rd({t:e,embedded:t,refreshingQuota:n,pausingExhausted:r,pauseBusy:i,actionFeedback:a,actionFeedbackTone:o,onRefresh:s,onPauseExhausted:c,creditsVisible:l,creditsBusy:u,onToggleCredits:d,creditSpendControl:f}){return(0,Q.jsxs)(`div`,{className:t?`row`:`page-head codex-auth-page-head`,style:t?{justifyContent:`flex-end`,marginBottom:8}:void 0,children:[!t&&(0,Q.jsx)(`h2`,{className:`page-title`,children:e(`nav.codexAuth`)}),(0,Q.jsxs)(`div`,{className:t?`row`:`codex-auth-page-head__actions`,children:[(0,Q.jsx)(`span`,{className:`codex-auth-page-head__feedback${o===`ok`?` is-ok`:``}${o===`warn`?` is-warn`:``}${o===`err`?` is-err`:``}`,role:`status`,"aria-live":`polite`,children:a??``}),l!==void 0&&d&&(0,Q.jsxs)(`span`,{className:`codex-auth-credits-toggle`,children:[(0,Q.jsx)(`span`,{className:`codex-auth-credits-toggle__label`,children:e(`codexAuth.creditsToggle`)}),(0,Q.jsx)(`button`,{type:`button`,className:`toggle ${l?`on`:``}`,onClick:d,disabled:!!u,"aria-pressed":l,"aria-label":e(`codexAuth.creditsToggle`),title:e(`codexAuth.creditsToggleHint`),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})})]}),f,t&&(0,Q.jsx)(zd,{t:e,refreshingQuota:n,pausingExhausted:r,pauseBusy:i,onRefresh:s,onPauseExhausted:c})]})]})}function zd({t:e,refreshingQuota:t,pausingExhausted:n,pauseBusy:r,onRefresh:i,onPauseExhausted:a}){return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-sm btn-ghost codex-auth-action-btn`,onClick:a,disabled:t||n||!!r,children:[(0,Q.jsx)(z,{width:14}),` `,e(n?`codexAuth.pausingExhausted`:`codexAuth.pauseExhausted`)]}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-sm btn-ghost codex-auth-action-btn`,onClick:i,disabled:t||n||!!r,children:[(0,Q.jsx)(re,{width:14}),` `,e(t?`codexAuth.refreshingQuota`:`codexAuth.refreshQuota`)]})]})}function Bd(e){return(0,Q.jsx)(`div`,{className:`codex-auth-actions-row`,children:(0,Q.jsx)(zd,{...e})})}function Vd({t:e,loadState:t,refreshFailed:n,accountsCount:r,onRetry:i}){return t===`loading`&&r===0?(0,Q.jsxs)(`div`,{className:`codex-auth-load-skeleton`,role:`status`,"aria-live":`polite`,"aria-busy":`true`,children:[(0,Q.jsxs)(`div`,{className:`card codex-auth-load-skeleton__main`,style:{marginBottom:12},"aria-hidden":`true`,children:[(0,Q.jsxs)(`div`,{className:`card-head`,children:[(0,Q.jsx)(`span`,{className:`dot dot-muted`}),(0,Q.jsx)(`strong`,{children:e(`codexAuth.mainAccount`)}),(0,Q.jsxs)(`span`,{className:`card-badges`,children:[(0,Q.jsxs)(`span`,{className:`badge badge-muted codex-ticket-badge-slot`,"aria-hidden":`true`,children:[(0,Q.jsx)(lt,{width:12}),`0`]}),(0,Q.jsx)(`span`,{className:`badge badge-primary`,children:e(`codexAuth.nextSession`)})]}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-sm btn-ghost`,tabIndex:-1,disabled:!0,children:[(0,Q.jsx)(z,{width:14}),` `,e(`codexAuth.pause`)]}),(0,Q.jsxs)(`span`,{className:`card-right`,children:[(0,Q.jsx)(at,{width:14}),` `,e(`codexAuth.appLogin`)]})]}),(0,Q.jsxs)(`div`,{className:`card-sub`,children:[(0,Q.jsx)(`span`,{className:`codex-auth-load-skeleton__strut`,children:e(`codexAuth.appLogin`)}),(0,Q.jsx)(`span`,{className:`codex-auth-load-skeleton__line codex-auth-load-skeleton__line--sub`})]}),(0,Q.jsx)(fs,{quota:null,threshold:0,t:e,pending:!0})]}),(0,Q.jsxs)(`div`,{className:`section-sep`,"aria-hidden":`true`,children:[(0,Q.jsx)(`span`,{className:`section-label`,children:e(`codexAuth.accountPool`)}),(0,Q.jsx)(`div`,{className:`sep-line`}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-sm btn-ghost`,tabIndex:-1,disabled:!0,children:[(0,Q.jsx)(N,{width:14}),` `,e(`codexAuth.add`)]})]}),(0,Q.jsx)(`div`,{className:`empty codex-auth-pool-empty codex-auth-load-skeleton__empty`,"aria-hidden":`true`,children:(0,Q.jsx)(`div`,{className:`title`,children:e(`codexAuth.noPool`)})}),(0,Q.jsx)(`span`,{className:`sr-only`,children:e(`pws.accountsLoading`)})]}):t===`error`?(0,Q.jsxs)(`div`,{className:`pwi-auth-state pwi-auth-state--error`,role:`alert`,children:[(0,Q.jsx)(`span`,{children:e(`codexAuth.loadFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:i,children:e(`pws.retryAccounts`)})]}):n&&r>0?(0,Q.jsxs)(`div`,{className:`pwi-auth-state pwi-auth-state--stale`,role:`status`,children:[(0,Q.jsx)(`span`,{children:e(`codexAuth.accountsRefreshFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:i,children:e(`pws.retryAccounts`)})]}):null}function Hd(e,t){return t===void 0?e(`codexAuth.resetSuccessGeneric`):e(`codexAuth.resetSuccess`,{remaining:String(t)})}async function Ud(e,t,n,r){try{let i=await gn(await fetch(`${e}/api/codex-auth/reset-credits/consume`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({accountId:t})}));return i?i.code===`reset`||i.code===`already_redeemed`?(await r(!0),{ok:!0,close:!0,toast:Hd(n,typeof i.remaining==`number`&&Number.isFinite(i.remaining)?Math.max(0,i.remaining):void 0)}):{ok:!1,close:!0,toast:n(i.code===`nothing_to_reset`?`codexAuth.resetNothingToReset`:i.code===`no_credit`?`codexAuth.resetNoCredit`:`codexAuth.resetError`)}:{ok:!1,toast:n(`codexAuth.resetError`)}}catch{return{ok:!1,toast:n(`codexAuth.resetError`)}}}function Wd({windows:e,ready:t,busy:n,loadError:r,feedback:i,onToggle:a,onRetry:o}){let s=O(),c=e.filter(e=>e.available),l=e.some(e=>e.enabled),u=c.length?c.every(e=>e.enabled):l,d=l&&!u,f=c.length===0&&!l,p=n?s(`common.saving`):r?s(`codexAuth.quotaAutoRefreshLoadFailed`):t?i?.message??(f?s(`codexAuth.quotaAutoRefreshEmpty`):d?s(`codexAuth.quotaAutoRefreshMixed`):``):s(`common.loading`),m=!n&&(r||i?.failed);return(0,Q.jsxs)(`div`,{id:`codex-quota-activation`,className:`card card-row codex-quota-activation`,"aria-busy":n||!t&&!r||void 0,children:[(0,Q.jsxs)(`div`,{className:`codex-quota-activation__copy`,children:[(0,Q.jsx)(`strong`,{children:s(`codexAuth.quotaAutoRefresh`)}),(0,Q.jsx)(`div`,{id:`codex-quota-activation-desc`,className:`card-sub`,children:s(`codexAuth.quotaAutoRefreshAllHint`)}),p&&(0,Q.jsx)(`div`,{className:`card-sub${m?` is-error`:``}`,role:m?`alert`:`status`,children:p})]}),(0,Q.jsxs)(`div`,{className:`codex-quota-activation__controls`,children:[m&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:n,onClick:o,children:s(`common.retry`)}),(0,Q.jsx)(`button`,{type:`button`,className:`toggle ${t&&u?`on`:``}`,"aria-label":s(`codexAuth.quotaAutoRefresh`),"aria-describedby":`codex-quota-activation-desc`,"aria-pressed":t?d?`mixed`:u:void 0,disabled:!t||n||f,onClick:()=>a(!u),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})})]})]})}function Gd(e){return{enabled:e.filter(e=>e.creditsAfterLimit===!0).length,total:e.length}}function Kd(e){let t=e&&typeof e==`object`&&`codexQuotaAutoRefresh`in e?e.codexQuotaAutoRefresh:null;if(!t||typeof t!=`object`||Array.isArray(t)||Object.values(t).some(e=>!e||typeof e!=`object`||Array.isArray(e)||[e.fiveHour,e.weekly].some(e=>e!==void 0&&typeof e!=`boolean`)))throw Error(`Invalid quota activation settings`);return t}function qd(e,t){return e.flatMap(e=>{let n=e.isMain?`__main__`:e.id,r=e.quotaAutoRefresh??nt(e.quota);return[`fiveHour`,`weekly`].map(e=>({id:n,window:e,available:r[e===`fiveHour`?`fiveHourAvailable`:`weeklyAvailable`],enabled:t[n]?.[e]===!0}))})}function Jd(e){let t=O(),n=(0,Z.useId)(),r=(0,Z.useRef)(null),i=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{let e=document.activeElement;return i.current?.focus(),()=>{e?.isConnected&&typeof e.focus==`function`&&e.focus()}},[]);let a=e.selection?.status===`pending`,o=e.failed||!e.providerKnown,s=e.loading?t(`prov.modelsNoticeChecking`):o?t(`prov.modelsNoticeFailed`):a?t(`prov.modelsNoticePending`):e.initialRegistration&&e.selection?.status===`all-off`?t(`prov.modelsNoticeOff`):t(`prov.modelsNoticeReady`);return(0,Q.jsx)(`div`,{className:`modal-overlay`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":n,onKeyDown:t=>{if(t.key===`Escape`&&(t.preventDefault(),t.stopPropagation(),e.onClose()),t.key!==`Tab`)return;let n=r.current?.querySelectorAll(`button:not([disabled])`),i=n?.[0],a=n?.[n.length-1];t.shiftKey&&document.activeElement===i?(t.preventDefault(),a?.focus()):!t.shiftKey&&document.activeElement===a&&(t.preventDefault(),i?.focus())},children:(0,Q.jsxs)(`div`,{className:`modal-card`,ref:r,children:[(0,Q.jsx)(`div`,{className:`modal-head`,children:(0,Q.jsx)(`h2`,{id:n,style:{fontSize:`var(--text-subtitle)`,margin:0},children:t(`prov.modelsNoticeTitle`)})}),(0,Q.jsx)(`p`,{children:(0,Q.jsx)(`strong`,{style:{overflowWrap:`anywhere`},children:e.provider})}),(0,Q.jsx)(`p`,{role:`status`,"aria-live":`polite`,children:s}),e.initialRegistration&&e.selection?.modelCount!==void 0&&(0,Q.jsx)(`p`,{className:`muted`,children:t(`prov.modelsNoticeCount`,{count:e.selection.modelCount})}),e.catalogRefreshPending&&(0,Q.jsx)(`p`,{className:`muted`,role:`status`,children:t(`codexAuth.catalogRefreshPending`)}),!e.loading&&(a||o)&&e.onRetry&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>{e.onRetry?.(),i.current?.focus()},children:t(`common.retry`)}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:e.onClose,children:t(`common.close`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,ref:i,onClick:e.onOpenModels,children:t(`prov.modelsNoticeOpen`)})]})]})})}var Yd=`ocx doctor`;function Xd({apiBase:e,accountModeState:t=null,banner:n=null,embedded:r=!1,onActiveNeedsReauthChange:i,controller:a,advancedExtras:o=null,hasMainHardLockSetting:s=!1}){let c=O(),l=ud(e,{updated:c(`codexAuth.autoSwitchUpdated`),updateFailed:c(`codexAuth.autoSwitchUpdateFailed`),invalid:c(`codexAuth.autoSwitchThresholdInvalid`)}),[u,d]=(0,Z.useState)(null),{beginServerRead:f,acceptServerRead:p,rejectServerRead:m,hydrateServerValue:h}=l,g=hu(e,!a),_=a??g,{accounts:v,activeId:y,loadState:b,refreshFailed:x,switchingId:S,pauseUpdatingId:C,priorityUpdatingId:w,autoSwitchUpdatingId:T,pausingExhausted:E,activePinnedId:D,load:k}=_,j=wu(e,()=>{k()}),M=j.state.phase===`starting`||j.state.phase===`pending`||j.state.phase===`committing`,[P,F]=(0,Z.useState)(null),[I,L]=(0,Z.useState)(null),[R,z]=(0,Z.useState)(!1),[B,V]=(0,Z.useState)(null),[H,U]=(0,Z.useState)(!1),W=(0,Z.useRef)(!1),G=(0,Z.useCallback)(()=>{let e=document.getElementById(`codex-main-hard-lock-setting`);e?.focus(),e?.scrollIntoView({block:`nearest`})},[]);(0,Z.useEffect)(()=>{H&&W.current&&(W.current=!1,G())},[H,G]);let ee=()=>{H?G():(W.current=!0,U(!0))},[te,K]=(0,Z.useState)(null),[q,ne]=(0,Z.useState)(null),[J,Y]=(0,Z.useState)(null),re=(0,Z.useRef)(null),[ie,X]=(0,Z.useState)(!1),[ae,oe]=(0,Z.useState)(null),[se,ce]=(0,Z.useState)(null),le=(0,Z.useRef)(0),ue=(0,Z.useRef)(null),de=(0,Z.useRef)(null),[fe,pe]=(0,Z.useState)(0),[me,he]=(0,Z.useState)(e),[ge,_e]=(0,Z.useState)(null),ve=(0,Z.useRef)(null),ye=se?.apiBase===e&&se.revision===fe?se:null,be=ye?.settings??null,xe=ye?.error??!1,Se=ae===e;me!==e&&(he(e),pe(e=>e+1),ce(null),oe(null),_e(null));let[Ce,we]=(0,Z.useState)(null),[Te,Ee]=(0,Z.useState)(!1),[De,Oe]=(0,Z.useState)(!1),[ke,Ae]=(0,Z.useState)(null),[je,Me]=(0,Z.useState)(!1),Ne=_l(),Pe=(0,Z.useCallback)((e,t=`ok`)=>{re.current&&clearTimeout(re.current),ne(e),Y(t),re.current=setTimeout(()=>{ne(null),Y(null),re.current=null},5e3)},[]);(0,Z.useEffect)(()=>()=>{re.current&&clearTimeout(re.current)},[]);let Fe=gu(e,k,Pe,c,{revision:fe,onRead:(t,n)=>{let r=le.current;t.then(t=>{n.aborted||le.current!==r||(ce({apiBase:e,revision:fe,settings:Kd(t),error:!1}),oe(null))}).catch(()=>{n.aborted||le.current!==r||(ce({apiBase:e,revision:fe,settings:null,error:!0}),oe(null))})}}),Ie=(0,Z.useCallback)(e=>{Ne.copy(Yd,e)},[Ne]),{subscribeLoadObserver:Le,readLastThreshold:Re}=_;(0,Z.useEffect)(()=>Le({beginActiveRead:f,acceptActiveRead:p,rejectActiveRead:m}),[Le,f,p,m]),(0,Z.useEffect)(()=>{let e=Re();e!==void 0&&h(e)},[Re,h]),(0,Z.useEffect)(()=>{if(!R&&!M)return;let e=_.pauseRefresh();return()=>_.resumeRefresh(e)},[_,R,M]);let ze=y&&y!==`__main__`?v.find(e=>e.id===y):null,Be=!ze?.paused&&nl(ze);(0,Z.useEffect)(()=>{i?.(Be)},[Be,i]);let Ve=(0,Z.useCallback)(e=>{K(e),z(!0)},[]),He=(0,Z.useCallback)(()=>{z(!1),K(null)},[]),Ue=(0,Z.useCallback)(e=>{_.syncAfterAccountAdded(),Pe(c(e.validationPending?`pws.healthLabel.validationPending`:e.catalogRefreshPending?`codexAuth.catalogRefreshPending`:`codexAuth.accountAdded`),e.validationPending||e.catalogRefreshPending?`warn`:`ok`),He(),V(e.validationPending?null:{catalogRefreshPending:e.catalogRefreshPending})},[He,_,Pe,c]),We=async e=>{let n=await _.switchAccount(e);if(!n.ok){if(n.reason===`busy`)return;Pe(c(`codexAuth.switchFailed`),`err`);return}F(null);let r=n.activeId,i=r&&r!==`__main__`?v.find(e=>e.id===r)?.email??c(`pws.accountOrdinal`,{count:`1`}):c(`codexAuth.mainAccount`);Pe(c(t===`direct`?`codexAuth.poolPreparedToast`:`codexAuth.switched`,{email:i}))},Ge=async()=>{if(!I)return;let e=await _.switchAccount(null,{expectedPinnedAccountId:I.id});if(!e.ok){if(e.reason===`busy`)return;L(null),Pe(c(e.reason===`pin_changed`?`codexAuth.unpinChanged`:`codexAuth.unpinFailed`),`err`);return}L(null),Pe(c(`codexAuth.unpinned`),`ok`)},Ke=async e=>{let t=await oa({message:c(`prov.aliasPrompt`),initialValue:e.alias??``,maxLength:80,validate:e=>fl(e,c)});if(t===null)return;let n=await _.saveAlias(e.id,t);Pe(c(n.ok?`prov.aliasSaved`:`prov.aliasSaveFailed`),n.ok?`ok`:`err`)},qe=async e=>{let t=!e.paused,n=await _.setAccountPaused(e.id,t);!n.ok&&n.reason===`busy`||(F(t=>t?.id===e.id?null:t),Pe(c(n.ok?t?`codexAuth.pauseSucceeded`:`codexAuth.resumeSucceeded`:t?`codexAuth.pauseFailed`:`codexAuth.resumeFailed`,{email:e.alias??e.email}),n.ok?`ok`:`err`))},Je=async e=>{let t=await _.setAllCreditsAfterLimit(e);!t.ok&&t.reason===`busy`||Pe(c(t.ok?e?`codexAuth.creditsAllOnSucceeded`:`codexAuth.creditsAllOffSucceeded`:`codexAuth.creditsAllUpdateFailed`),t.ok?`ok`:`err`)},Ye=async(e,t)=>{if(t===e.priority)return;let n=await _.setAccountPriority(e.id,t);!n.ok&&n.reason===`busy`||Pe(c(n.ok?`accountPool.priorityUpdated`:`accountPool.priorityUpdateFailed`,{email:e.alias??e.email}),n.ok?`ok`:`err`)},Xe=async(e,t)=>{if(t===e.autoSwitchThresholdOverride)return!0;let n=await _.setAccountAutoSwitchThreshold(e.id,t);return!n.ok&&n.reason===`busy`?!1:(Pe(c(n.ok?`accountPool.autoSwitchUpdated`:`accountPool.autoSwitchUpdateFailed`,{email:e.alias??e.email}),n.ok?`ok`:`err`),n.ok)},Ze=async(e,t)=>{let n=await _.setAccountCreditsAfterLimit(e.id,t);!n.ok&&n.reason===`busy`||Pe(c(n.ok?t?`codexAuth.creditsOnSucceeded`:`codexAuth.creditsOffSucceeded`:`codexAuth.creditsUpdateFailed`,{email:e.alias??e.email}),n.ok?`ok`:`err`)},Qe=async e=>{let t=v.find(t=>t.id===e)?.email??c(`pws.accountOrdinal`,{count:`1`});if(!await aa({message:c(`codexAuth.removeConfirm`,{id:t}),confirmLabel:c(`common.remove`),tone:`danger`}))return;let n=await _.removeAccount(e);n.ok?n.catalogRefreshPending&&Pe(c(`codexAuth.catalogRefreshPending`),`warn`):Pe(c(`codexAuth.removeFailed`),`err`)},$e=async()=>{X(!0);try{let e=await k(!0,{validatePending:!0});Pe(c(e?`codexAuth.quotaRefreshed`:`codexAuth.quotaRefreshFailed`),e?`ok`:`err`)}finally{X(!1)}},et=async t=>{let n=ue.current;if(de.current||!n||n.signal.aborted||be===null||b!==`ready`)return;let r=A(3e4);de.current=r,le.current+=1;let i=()=>ue.current===n&&!n.signal.aborted,a=qd(v,be);oe(e),_e(null);let o=!1;try{for(let n of a){if(t&&!n.available)continue;let a=t;if(n.enabled!==a){if(!i())return;if(r.signal.aborted){o=!0;break}try{if(!(await fetch(`${e}/api/settings`,{method:`PUT`,headers:{"content-type":`application/json`},signal:r.signal,body:JSON.stringify({codexQuotaAutoRefresh:{id:n.id,window:n.window,enabled:a}})})).ok)throw Error(`save`)}catch{o=!0}}}if(!i())return;r.clear();let n=A(15e3);de.current=n;try{let r=await fetch(`${e}/api/settings`,{signal:n.signal});if(!r.ok)throw Error(`read`);let s=Kd(await r.json());if(!i())return;o||=a.some(e=>(!t||e.available)&&s[e.id]?.[e.window]===!0!==t),ce({apiBase:e,revision:fe,settings:s,error:!1})}catch{if(!i())return;o=!0,ce({apiBase:e,revision:fe,settings:null,error:!0})}finally{n.clear()}if(!i())return;ve.current=o?{apiBase:e,enabled:t}:null,_e({apiBase:e,message:c(o?`codexAuth.quotaAutoRefreshPartial`:`codexAuth.quotaAutoRefreshUpdated`),failed:o})}finally{r.clear(),i()&&(de.current=null,oe(null))}};(0,Z.useEffect)(()=>{let e=new AbortController;return ue.current=e,()=>{e.abort(),de.current?.controller.abort(),de.current?.clear(),de.current=null}},[e,fe]);let tt=async()=>{let e=await _.pauseExhaustedAccounts();!e.ok&&e.reason===`busy`||Pe(e.ok?e.pausedCount>0?c(`codexAuth.pauseExhaustedSucceeded`,{count:String(e.pausedCount)}):c(`codexAuth.pauseExhaustedNone`):c(`codexAuth.pauseExhaustedFailed`),e.ok?`ok`:`err`)},nt=async t=>{we(t),Ee(!1),Ae(null),Me(!0);try{let n=await gn(await fetch(`${e}/api/codex-auth/reset-credits?accountId=${encodeURIComponent(t.id)}`));if(n){let e=(n.credits??[]).sort((e,t)=>new Date(e.granted_at).getTime()-new Date(t.granted_at).getTime());Ae(e)}}catch{}finally{Me(!1)}},rt=async t=>{Oe(!0);try{let n=await Ud(e,t,c,k);n.close&&(we(null),Ee(!1)),n.toast&&Pe(n.toast,n.ok?`ok`:`err`)}finally{Oe(!1)}},it=v.find(e=>e.isMain),at=v.filter(e=>!e.isMain),ot=Gd([...it?.hasCredential?[it]:[],...at]),st=!it?.paused&&(!y||y===`__main__`),ct=c(t===`direct`?`codexAuth.prepareForPool`:`codexAuth.setAsNext`),lt=C!==null||E,ut=l.threshold,dt=!l.hydrated||T!==null,ft=!r;return(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Rd,{t:c,embedded:r,creditsVisible:Fe.visible,creditsBusy:Fe.busy,onToggleCredits:()=>{Fe.toggle()},creditSpendControl:b===`loading`&&v.length===0?void 0:(0,Q.jsx)(pd,{summary:ot,busy:_.creditsAfterLimitUpdatingId!==null,onToggleAll:e=>{Je(e)}}),refreshingQuota:ie,actionFeedback:q,actionFeedbackTone:J,pausingExhausted:E,pauseBusy:lt,onRefresh:()=>{$e()},onPauseExhausted:()=>{tt()}}),n,!r&&(0,Q.jsx)(Bd,{t:c,refreshingQuota:ie,pausingExhausted:E,pauseBusy:lt,onRefresh:()=>{$e()},onPauseExhausted:()=>{tt()}}),(0,Q.jsx)(Vd,{t:c,loadState:b,refreshFailed:x,accountsCount:v.length,onRetry:()=>{k()}}),(b!==`loading`||v.length!==0)&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Ld,{t:c,main:it,creditsVisible:Fe.visible,loading:b===`loading`,isMainActive:st,accountModeState:t,threshold:ut,switchActionLabel:ct,onSwitch:F,onUnpin:L,onTogglePause:qe,pauseUpdatingId:C,pauseBusy:lt,onPriorityChange:(e,t)=>{Ye(e,t)},priorityUpdatingId:w,onAutoSwitchThresholdChange:Xe,autoSwitchDisabled:dt,onToggleCreditsAfterLimit:(e,t)=>{Ze(e,t)},creditsAfterLimitUpdatingId:_.creditsAfterLimitUpdatingId,switchingId:S,pinnedId:D,onOpenReset:nt,onCopyDoctor:ft?Ie:void 0,doctorCopyOutcomeFor:ft?Ne.outcomeFor:void 0,onManageMainHardLock:s?ee:void 0,mainReauth:j}),(0,Q.jsx)(ed,{apiBase:e,disabled:M,onChanged:()=>k(!1)}),(0,Q.jsxs)(`div`,{className:`section-sep`,children:[(0,Q.jsx)(`span`,{className:`section-label`,children:c(`codexAuth.accountPool`)}),(0,Q.jsx)(`div`,{className:`sep-line`}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-sm btn-ghost`,onClick:()=>z(!0),children:[(0,Q.jsx)(N,{width:14}),` `,c(`codexAuth.add`)]})]}),Be&&ze&&(0,Q.jsx)(Pd,{onReauth:()=>Ve(ze.id)}),at.length===0&&(0,Q.jsx)(ln,{title:c(`codexAuth.noPool`)}),(0,Q.jsx)(Nd,{pool:at,creditsVisible:Fe.visible,loading:b===`loading`,activeId:y,accountModeState:t,switchActionLabel:ct,threshold:ut,onOpenReset:nt,onSwitch:F,onUnpin:L,onTogglePause:qe,pauseUpdatingId:C,pauseBusy:lt,onPriorityChange:(e,t)=>{Ye(e,t)},priorityUpdatingId:w,onAutoSwitchThresholdChange:Xe,autoSwitchDisabled:dt,onToggleCreditsAfterLimit:(e,t)=>{Ze(e,t)},creditsAfterLimitUpdatingId:_.creditsAfterLimitUpdatingId,switchingId:S,pinnedId:D,onReauth:Ve,onEditAlias:Ke,onRemove:Qe,onCopyDoctor:ft?Ie:void 0,doctorCopyOutcomeFor:ft?Ne.outcomeFor:void 0})]}),(0,Q.jsx)(cd,{apiBase:e,subscribeLoadObserver:_.subscribeLoadObserver,readLastActive:_.readLastActive,onStrategyResolved:d,threshold:l.threshold}),(0,Q.jsxs)(ld,{t:c,open:H,onToggle:()=>U(e=>!e),children:[(0,Q.jsx)(Wd,{windows:qd(v,be??{}),ready:be!==null&&b===`ready`,busy:Se,loadError:xe||b===`error`,feedback:ge?.apiBase===e?ge:null,onToggle:e=>{et(e)},onRetry:()=>{xe||be===null||b!==`ready`?(pe(e=>e+1),k()):ve.current?.apiBase===e&&et(ve.current.enabled)}}),u!==null&&(0,Q.jsx)(rd,{threshold:l.threshold,draft:l.draft,strategy:u,hydrated:l.hydrated,saving:l.saving,loadError:l.loadError,feedback:l.feedback,onDraftChange:l.setDraft,onEditingChange:l.setEditing,onCommit:l.commit,onCancel:l.cancel,onToggle:l.toggle,onRetry:()=>{l.retry(),k()}}),o]}),P&&(0,Q.jsx)(Fd,{confirm:P,mainEmail:it?.email,accountModeState:t,switchingId:S,orderBusy:w!==null,threshold:u&&u!==`round-robin`?ut:void 0,onCancel:()=>F(null),onConfirm:()=>{We(P.id===`__main__`?`__main__`:P.id)}}),I&&(0,Q.jsx)(Fd,{unpin:!0,confirm:I,mainEmail:it?.email,accountModeState:t,switchingId:S,orderBusy:w!==null,onCancel:()=>L(null),onConfirm:()=>{Ge()}}),Ce&&(0,Q.jsx)(Id,{resetPopup:Ce,resetConfirm:Te,creditDetails:ke,creditDetailsLoading:je,redeeming:De,onClose:()=>{we(null),Ee(!1),Ae(null)},onShowConfirm:()=>Ee(!0),onCancelConfirm:()=>Ee(!1),onRedeem:()=>{rt(Ce.id)}}),R&&(0,Q.jsx)(jl,{apiBase:e,reauthAccountId:te??void 0,onClose:He,onAdded:Ue}),B&&(0,Q.jsx)(Jd,{provider:`openai`,loading:!1,failed:!1,providerKnown:!0,initialRegistration:!1,catalogRefreshPending:B.catalogRefreshPending,onClose:()=>V(null),onOpenModels:()=>{V(null),qt(`models`)}})]})}var Zd=`https://opencodex.me/guides/claude-code/#claude-oauth-account-pool-experimental`,Qd={"five-hour":`accountPool.quotaWindowFiveHour`,weekly:`accountPool.quotaWindowWeekly`,"max-utilization":`accountPool.quotaWindowMaxUtilization`};function $d(e,t,n,r){let i=e(Qd[r]);return t===`round-robin`?e(`anthropicPool.enabledRoundRobinDesc`):t===`fill-first`?n===0?e(`anthropicPool.enabledFillFirstNoThresholdDesc`):e(`anthropicPool.enabledFillFirstDesc`,{threshold:n,window:i}):n===0?e(`anthropicPool.enabledNoProactiveDesc`,{window:i}):e(`anthropicPool.enabledDesc`,{threshold:n,window:i})}function ef({apiBase:e,provider:t=`anthropic`,accountCount:n,onThresholdChange:r}){let i=O(),[a,o]=(0,Z.useState)(null),[s,c]=(0,Z.useState)(`80`),[l,u]=(0,Z.useState)(`1`),[d,f]=(0,Z.useState)(!1),[p,m]=(0,Z.useState)(null),[h,g]=(0,Z.useState)(!1),[_,v]=(0,Z.useState)(!1),[y,b]=(0,Z.useState)(!1),[x,S]=(0,Z.useState)(0),[C,w]=(0,Z.useState)(!1),T=(0,Z.useRef)(r),E=(0,Z.useRef)(!0),D=(0,Z.useRef)(e),k=(0,Z.useRef)(t),A=(0,Z.useRef)(null);(0,Z.useLayoutEffect)(()=>(E.current=!0,()=>{E.current=!1,A.current?.abort(),A.current=null}),[]),(0,Z.useLayoutEffect)(()=>{T.current=r,D.current=e,k.current=t},[e,t,r]),(0,Z.useEffect)(()=>{let n=!1,r=new AbortController;return Promise.resolve().then(()=>Ql(e,t,(e,t)=>fetch(e,t),{signal:r.signal})).then(e=>{if(!e)throw Error(`load`);return e}).then(e=>{if(n)return;let t=typeof e.autoSwitchThreshold==`number`?e.autoSwitchThreshold:80,r=ql(e.stickyLimit);o({enabled:e.enabled===!0,threshold:t,strategy:Gl(e.strategy),stickyLimit:r,quotaWindow:Kl(e.quotaWindow),nativeMessages:e.nativeMessages===!0}),c(String(t)),T.current?.(t),u(String(r)),g(!1),b(!1),m(null),v(!1),w(!1)}).catch(()=>{n||r.signal.aborted||(g(!0),w(!1))}),()=>{n=!0,r.abort()}},[e,t,x]);let j=(0,Z.useCallback)(async n=>{let r=e,s=t;A.current?.abort();let l=new AbortController;A.current=l;let d=()=>E.current&&D.current===r&&k.current===s&&A.current===l&&!l.signal.aborted,p=a;f(!0),m(null),v(!1);try{let e=await eu(r,s,{enabled:n.enabled,threshold:n.threshold,strategy:n.strategy,stickyLimit:n.stickyLimit,quotaWindow:n.quotaWindow,nativeMessages:n.nativeMessages},(e,t)=>fetch(e,t),{signal:l.signal});if(!d())return;if(!e)throw Error(`save`);let t=typeof e.autoSwitchThreshold==`number`?e.autoSwitchThreshold:n.threshold,i=Gl(e?.strategy??n.strategy),a=ql(e?.stickyLimit??n.stickyLimit),f=Kl(e?.quotaWindow??n.quotaWindow);o({enabled:e.enabled??n.enabled,threshold:t,strategy:i,stickyLimit:a,quotaWindow:f,nativeMessages:e.nativeMessages===!0}),c(String(t)),T.current?.(t),u(String(a)),v(e.warning===`config_bookkeeping_failed`)}catch(e){if(!d())return;if(e instanceof $l){o(null),b(!0),g(!1),m(null);return}m(i(`anthropicPool.saveFailed`)),p&&(o(p),c(String(p.threshold)),u(String(p.stickyLimit)))}finally{let e=A.current===l;e&&(A.current=null),e&&E.current&&D.current===r&&k.current===s&&f(!1)}},[e,t,a,i]),M=a?.enabled===!0,N=a?.threshold??80,P=a?.strategy??`quota`,F=a?.stickyLimit??1,I=a?.quotaWindow??`five-hour`,L=a?.nativeMessages??!0,R=P===`round-robin`,z=C||a===null&&!h&&!y,B=z||d||h||y,V=B||!M&&n<2;return(0,Q.jsxs)(`div`,{className:`card anthropic-pool-card`,"aria-busy":z||d,children:[(0,Q.jsxs)(`div`,{className:`card-row`,style:{alignItems:`flex-start`,gap:12},children:[(0,Q.jsxs)(`div`,{style:{flex:1},children:[(0,Q.jsx)(`strong`,{children:i(`anthropicPool.title`)}),(0,Q.jsx)(`div`,{className:`card-sub`,style:{marginTop:4},children:y?i(`anthropicPool.saveStateUnknown`):h?i(`anthropicPool.loadFailed`):z?i(`common.loading`):M?$d(i,P,N,I):i(`anthropicPool.disabledDesc`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`toggle ${M?`on`:``}`,disabled:V,"aria-pressed":y?void 0:M,"aria-label":i(`anthropicPool.title`),title:i(M?`anthropicPool.on`:`anthropicPool.off`),onClick:()=>{j({enabled:!M,threshold:N,strategy:P,stickyLimit:F,quotaWindow:I,nativeMessages:L})},children:(0,Q.jsx)(`span`,{className:`toggle-knob`})})]}),(0,Q.jsx)(`p`,{className:`card-sub anthropic-pool-card__notice`,children:i(`anthropicPool.experimentalWarning`)}),n<2&&(0,Q.jsx)(`div`,{className:`card-sub`,style:{marginTop:8},children:i(`anthropicPool.needTwoAccounts`)}),(0,Q.jsxs)(`details`,{className:`anthropic-pool-card__details`,children:[(0,Q.jsx)(`summary`,{children:i(`anthropicPool.detailsSummary`)}),(0,Q.jsx)(`p`,{children:i(`anthropicPool.detailsEnabling`)}),(0,Q.jsx)(`p`,{children:i(`anthropicPool.detailsFailover`)}),(0,Q.jsx)(`p`,{children:i(`anthropicPool.detailsActivity`)}),(0,Q.jsxs)(`label`,{className:`anthropic-pool-card__native-messages`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:a?L:!1,disabled:B||!a,"aria-label":i(`anthropicPool.nativeMessagesLabel`),"aria-describedby":`anthropic-pool-native-messages-help`,onChange:e=>{j({enabled:M,threshold:N,strategy:P,stickyLimit:F,quotaWindow:I,nativeMessages:e.target.checked})}}),(0,Q.jsxs)(`span`,{className:`anthropic-pool-card__native-messages-copy`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:i(`anthropicPool.nativeMessagesLabel`)}),(0,Q.jsx)(`span`,{id:`anthropic-pool-native-messages-help`,className:`card-sub`,children:i(`anthropicPool.nativeMessagesHelp`)})]})]}),(0,Q.jsx)(`p`,{children:(0,Q.jsx)(`a`,{href:Zd,target:`_blank`,rel:`noreferrer`,children:i(`anthropicPool.detailsGuide`)})})]}),M&&a&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`label`,{className:`field anthropic-pool-card__field`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:i(`anthropicPool.threshold`)}),(0,Q.jsx)(`input`,{className:`input mono`,type:`number`,min:0,max:100,step:1,value:s,disabled:B,"aria-label":i(`anthropicPool.thresholdAria`),onChange:e=>c(e.target.value),onBlur:()=>{let e=Number(s);if(!Number.isInteger(e)||e<0||e>100){c(String(N)),m(i(`anthropicPool.thresholdInvalid`));return}e!==N&&j({enabled:!0,threshold:e,strategy:P,stickyLimit:F,quotaWindow:I,nativeMessages:L})}}),(0,Q.jsx)(`div`,{className:`card-sub`,style:{marginTop:4},children:i(`anthropicPool.thresholdHelp`)})]}),(0,Q.jsx)(od,{strategy:P,stickyDraft:l,disabled:B,strategySelectId:`anthropic-pool-strategy`,stickyInputId:`anthropic-pool-sticky-limit`,onStrategyChange:e=>{e!==P&&j({enabled:!0,threshold:N,strategy:e,stickyLimit:F,quotaWindow:I,nativeMessages:L})},onStickyDraftChange:u,onStickyCommit:e=>{let t=Jl(e??l);if(t===null){u(String(F)),m(i(`accountPool.stickyLimitInvalid`));return}if(t===F){u(String(t));return}j({enabled:!0,threshold:N,strategy:P,stickyLimit:t,quotaWindow:I,nativeMessages:L})}}),(0,Q.jsxs)(`div`,{className:`field anthropic-pool-card__field anthropic-pool-card__field--quota-window`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:i(`accountPool.quotaWindow`)}),(0,Q.jsx)(cn,{id:`anthropic-pool-quota-window`,value:I,options:Bl.map(e=>({value:e,label:i(Qd[e])})),disabled:B||R,label:i(`accountPool.quotaWindow`),onChange:e=>{let t=Kl(e);t!==I&&j({enabled:!0,threshold:N,strategy:P,stickyLimit:F,quotaWindow:t,nativeMessages:L})}}),(0,Q.jsx)(`div`,{className:`card-sub`,style:{marginTop:4},children:i(`accountPool.quotaWindowDesc`)}),(0,Q.jsx)(`div`,{className:`card-sub`,style:{marginTop:4},children:i(R?`accountPool.quotaWindowInert`:`accountPool.quotaWindowHint`)})]})]}),y&&(0,Q.jsxs)(`div`,{role:`alert`,className:`anthropic-pool-card__save-warning`,children:[(0,Q.jsx)(`p`,{children:i(`anthropicPool.saveStateUnknown`)}),h&&(0,Q.jsx)(`p`,{children:i(`anthropicPool.loadFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:C,onClick:()=>{g(!1),w(!0),S(e=>e+1)},children:i(`anthropicPool.reloadSettings`)})]}),_&&(0,Q.jsx)(`div`,{role:`status`,className:`anthropic-pool-card__save-warning`,children:i(`anthropicPool.saveWarning`)}),p&&(0,Q.jsx)(`div`,{role:`alert`,className:`card-sub`,style:{marginTop:8,color:`var(--danger, #c44)`},children:p})]})}function tf({serverDefault:e=!0}){let t=O(),[n,r]=(0,Z.useState)(Cl);return(0,Q.jsxs)(`label`,{className:`open-browser-pref`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:!(n??e),onChange:e=>{let t=!e.target.checked;r(t),Tl(t)}}),(0,Q.jsxs)(`span`,{className:`open-browser-pref-copy`,children:[(0,Q.jsx)(`span`,{className:`text-label`,children:t(`prov.dontOpenBrowser`)}),(0,Q.jsx)(`span`,{className:`muted text-label`,children:t(`prov.dontOpenBrowserHint`)})]})]})}function nf(e){return e?.status===`ready`?e.coupons:[]}function rf(){let e=globalThis.crypto;if(e&&typeof e.randomUUID==`function`)return e.randomUUID();if(e&&typeof e.getRandomValues==`function`){let t=e.getRandomValues(new Uint8Array(16));t[6]=t[6]&15|64,t[8]=t[8]&63|128;let n=[...t].map(e=>e.toString(16).padStart(2,`0`)).join(``);return[n.slice(0,8),n.slice(8,12),n.slice(12,16),n.slice(16,20),n.slice(20)].join(`-`)}}var af={auth_failed:`grokCoupon.authFailed`,no_account:`grokCoupon.noAccount`,no_coupons_available:`grokCoupon.noneAvailable`,operation_id_owned_by_another_account:`grokCoupon.identityMismatch`,capacity:`grokCoupon.capacity`,unavailable:`grokCoupon.capacity`,network:`grokCoupon.networkError`,redeem_failed:`grokCoupon.redeemFailed`};function of({entry:e,onClick:t,t:n}){if(e===void 0||e.status===`loading`)return(0,Q.jsxs)(`span`,{className:`badge badge-muted codex-ticket-badge-slot`,"aria-hidden":`true`,children:[(0,Q.jsx)(lt,{width:12}),`0`]});let r=e.status===`ready`?e.coupons.length:null,i=r===null?n(`grokCoupon.badgeErrorAria`):n(`grokCoupon.badgeAria`,{count:String(r)});return(0,Q.jsxs)(`button`,{type:`button`,className:`badge ${r?`badge-amber`:`badge-muted`} badge-clickable`,"data-grok-coupon-badge":r===null?`error`:String(r),onClick:e=>{e.stopPropagation(),t()},"aria-label":i,title:i,children:[(0,Q.jsx)(lt,{width:12}),r===null?(0,Q.jsx)(Ae,{width:11}):r]})}function sf({coupon:e,index:t,isNext:n,locale:r,t:i}){let a=e.validityEnd?Od(e.validityEnd):null;return(0,Q.jsxs)(`div`,{className:`credit-item${n?` credit-next`:``}`,children:[(0,Q.jsxs)(`div`,{className:`credit-item-head`,children:[(0,Q.jsx)(lt,{width:13}),(0,Q.jsx)(`span`,{className:`credit-item-label`,children:n?i(`grokCoupon.couponNext`):i(`grokCoupon.couponLabel`,{n:String(t+1)})}),n&&(0,Q.jsx)(`span`,{className:`badge badge-amber text-micro`,style:{padding:`1px 6px`},children:i(`grokCoupon.couponNextBadge`)})]}),(0,Q.jsxs)(`div`,{className:`credit-item-dates`,children:[e.validityStart&&(0,Q.jsx)(`span`,{children:i(`grokCoupon.validFrom`,{date:Ed(e.validityStart,r)})}),a!==null&&(0,Q.jsx)(`span`,{className:a<=7?`credit-urgent`:``,children:i(`grokCoupon.expires`,{date:Dd(e.validityEnd,r),days:String(a)})})]})]})}function cf({accountId:e,accountLabel:n,entry:r,controller:i,onClose:a}){let{locale:o,t:s}=t(),c=(0,Z.useRef)(null),l=(0,Z.useRef)(null),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(!1),g=i.uncertain[e],[_,v]=(0,Z.useState)(null),y=(0,Z.useRef)(void 0);(0,Z.useEffect)(()=>{let e=c.current;e&&!e.open&&e.showModal()},[]),(0,Z.useEffect)(()=>{u&&l.current?.focus()},[u]);let b=(0,Z.useCallback)(e=>{e.preventDefault(),a()},[a]),x=nf(r),S=x[0],C=()=>{if(g)return;let e=rf();if(!e){v({tone:`warn`,key:`grokCoupon.noOperationId`});return}y.current=e,v(null),d(!0)},w=async()=>{if(f||g)return;let t=y.current;if(!S?.tokenId){v({tone:`warn`,key:`grokCoupon.noneAvailable`});return}if(!t){v({tone:`warn`,key:`grokCoupon.noOperationId`});return}p(!0);let n=await i.redeem(e,{tokenId:S.tokenId,operationId:t});if(p(!1),n.ok){y.current=void 0,d(!1),v({tone:`ok`,key:n.replayed?`grokCoupon.redeemReplayed`:`grokCoupon.redeemSuccess`});return}if(n.uncertain||n.code===`aborted`){n.operationId&&(y.current=n.operationId),d(!1),v(null),i.refresh(e);return}n.code===`operation_id_owned_by_another_account`&&(y.current=void 0),v({tone:`warn`,key:af[n.code]??`grokCoupon.redeemFailed`})},T=async()=>{!g||m||(h(!0),await i.refresh(e),h(!1))},E=g?nf(r).some(e=>e.tokenId===g.tokenId):!1,D=String(x.length),O=e=>(0,Q.jsx)(`p`,{className:e.tone===`ok`?`pws-status-ok`:`pws-status-warn`,role:e.tone===`ok`?`status`:`alert`,style:{marginTop:12},children:s(e.key,{count:D})});return(0,Q.jsxs)(`dialog`,{ref:c,className:`modal-overlay`,"aria-labelledby":`grok-coupon-title`,onCancel:b,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":s(`common.close`),tabIndex:-1,onClick:a}),(0,Q.jsx)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),role:`document`,children:g?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{textAlign:`center`,padding:`12px 0`},children:[(0,Q.jsx)(`div`,{className:`confirm-icon`,children:(0,Q.jsx)(Ae,{width:22})}),(0,Q.jsx)(`h3`,{id:`grok-coupon-title`,children:s(`grokCoupon.title`)}),(0,Q.jsx)(`p`,{className:`pws-status-warn`,role:`alert`,children:s(`grokCoupon.unknownOutcome`)}),!m&&(0,Q.jsx)(`p`,{className:`faint text-label`,children:s(E?`grokCoupon.unresolved`:`grokCoupon.consumedElsewhere`)})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:a,children:s(`common.close`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>{T()},disabled:m,children:s(m?`grokCoupon.checking`:`grokCoupon.checkResult`)})]})]}):u?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{textAlign:`center`,padding:`12px 0`},children:[(0,Q.jsx)(`div`,{className:`confirm-icon`,children:(0,Q.jsx)(Ae,{width:22})}),(0,Q.jsx)(`h3`,{id:`grok-coupon-title`,children:s(`grokCoupon.confirmTitle`)}),(0,Q.jsx)(`p`,{className:`modal-desc`,children:s(`grokCoupon.confirmDesc`,{count:D})}),S?.validityEnd&&(0,Q.jsx)(`p`,{className:`faint text-label`,children:s(`grokCoupon.confirmWhich`,{date:Ed(S.validityEnd,o)})}),(0,Q.jsx)(`p`,{className:`faint text-label`,children:s(`grokCoupon.irreversible`)}),_&&O(_)]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>d(!1),disabled:f,children:s(`common.cancel`)}),(0,Q.jsx)(`button`,{ref:l,type:`button`,className:`btn btn-primary`,onClick:()=>{w()},disabled:f,children:s(f?`grokCoupon.redeeming`:`grokCoupon.redeem`)})]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`h3`,{id:`grok-coupon-title`,children:[(0,Q.jsx)(lt,{width:16}),` `,s(`grokCoupon.title`)]}),(0,Q.jsx)(`div`,{className:`card-sub`,children:n}),(0,Q.jsxs)(`div`,{style:{margin:`16px 0`},children:[r===void 0||r.status===`loading`?(0,Q.jsx)(`p`,{className:`faint text-label`,children:s(`common.loading`)}):r.status===`error`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`faint`,role:`alert`,children:s(r.reason===`auth`?`grokCoupon.loadFailedAuth`:`grokCoupon.loadFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,style:{marginTop:12},onClick:()=>{i.refresh(e)},children:s(`grokCoupon.retry`)})]}):x.length>0?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{style:{marginBottom:12},children:s(`grokCoupon.available`,{count:D})}),(0,Q.jsx)(`div`,{className:`credit-list`,children:x.map((e,t)=>(0,Q.jsx)(sf,{coupon:e,index:t,isNext:t===0,locale:o,t:s},e.tokenId))}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,style:{marginTop:12,width:`100%`},onClick:C,disabled:f,children:s(`grokCoupon.useOne`)}),(0,Q.jsx)(`p`,{className:`card-sub text-caption`,style:{marginTop:8,textAlign:`center`},children:s(`grokCoupon.fifoNote`)})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`faint`,children:s(`grokCoupon.none`)}),(0,Q.jsx)(`p`,{className:`modal-desc`,children:s(`grokCoupon.desc`)})]}),_&&O(_)]})]})})]})}var lf=2e4,uf=6e4,df=3,ff={},pf=[`five_hour`,`seven_day`,`seven_day_overage_included`],mf=new Set([`unknown_outcome`,`journal_write_failed`,`in_flight`]);function hf(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function gf(e){return e==null?null:typeof e==`string`?e:void 0}function _f(e){if(!hf(e))return null;let{id:t,label:n,resetsTotal:r,resetsLeft:i,paused:a,usableNow:o,useRequiresLimit:s}=e,c=gf(e.startsAt),l=gf(e.endsAt);if(typeof t!=`string`||t===``||typeof n!=`string`||typeof r!=`number`||typeof i!=`number`||typeof a!=`boolean`||typeof o!=`boolean`||typeof s!=`boolean`||c===void 0||l===void 0||!Array.isArray(e.clears))return null;let u={};if(hf(e.percentUsed))for(let t of pf){let n=e.percentUsed[t];typeof n==`number`&&(u[t]=n)}return{id:t,label:n,resetsTotal:r,resetsLeft:i,startsAt:c,endsAt:l,paused:a,usableNow:o,useRequiresLimit:s,percentUsed:u,clears:pf.filter(t=>e.clears.includes(t))}}function vf(e){if(!hf(e)||typeof e.eligible!=`boolean`||!Array.isArray(e.grants))return null;let t=[];for(let n of e.grants){let e=_f(n);if(!e)return null;t.push(e)}let n=null,r=e.pendingOperation;return hf(r)&&typeof r.operationId==`string`&&typeof r.grantId==`string`&&typeof r.retryableUntil==`number`&&(n={operationId:r.operationId,grantId:r.grantId,retryableUntil:r.retryableUntil}),{eligible:e.eligible,atLimit:e.atLimit===!0,grants:t,pendingOperation:n,journalAvailable:e.journalAvailable!==!1}}function yf(e){return e.eligible?e.grants.reduce((e,t)=>e+t.resetsLeft,0):0}function bf(e){if(!(!e.eligible||!e.journalAvailable))return e.grants.find(t=>!t.paused&&t.usableNow&&t.resetsLeft>0&&(!t.useRequiresLimit||e.atLimit))}function xf(e){return hf(e)&&hf(e.error)&&typeof e.error.code==`string`&&e.error.code!==``?e.error.code:`failed`}function Sf({apiBase:e,provider:t=`anthropic`,accountIds:n,enabled:r}){let i=`${e}\0${t}`,[a,o]=(0,Z.useState)(()=>({namespace:i,entries:{}})),s=(0,Z.useRef)(0),c=(0,Z.useRef)(new Map),l=(0,Z.useRef)({active:0,waiting:[]}),u=n.join(`\0`);(0,Z.useLayoutEffect)(()=>{s.current+=1,c.current.clear();let e=l.current;l.current={active:0,waiting:[]};for(let t of e.waiting.splice(0))t();return()=>{s.current+=1}},[i]);let d=(0,Z.useCallback)((e,t)=>{o(n=>({namespace:i,entries:{...n.namespace===i?n.entries:{},[e]:t}}))},[i]),f=(0,Z.useCallback)(async(n,r)=>{if(s.current!==r)return;let i=(c.current.get(n)??0)+1;c.current.set(n,i);let a=l.current;a.active>=df&&await new Promise(e=>a.waiting.push(e)),a.active+=1;let o=()=>s.current===r&&c.current.get(n)===i,u=A(lf);try{if(!o())return;let r=await fetch(`${e}/api/anthropic/reset-grants?accountId=${encodeURIComponent(n)}${t===`anthropic`?``:`&provider=${encodeURIComponent(t)}`}`,{signal:u.signal}),i=r.ok?await r.json().catch(()=>null):null,a=hf(i)&&(i.provider===t||t===`anthropic`&&i.provider===void 0)?vf(i):null;if(!o())return;d(n,a?{status:`ready`,snapshot:a}:{status:`error`,reason:r.status===401?`auth`:`upstream`})}catch{if(!o())return;d(n,{status:`error`,reason:`upstream`})}finally{u.clear(),--a.active,a.waiting.shift()?.()}},[e,t,d]);(0,Z.useEffect)(()=>{if(!r||u===``)return;let e=++s.current;return Promise.resolve().then(()=>{for(let t of u.split(`\0`))f(t,e)}),()=>{s.current+=1}},[r,u,f]);let p=(0,Z.useCallback)(async e=>{d(e,{status:`loading`}),await f(e,s.current)},[f,d]),m=(0,Z.useCallback)(async(n,r)=>{let i=s.current,a=A(uf);try{let o=await fetch(`${e}/api/anthropic/reset-grants/consume`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...t===`anthropic`?{}:{provider:t},accountId:n,grantId:r.grantId,operationId:r.operationId}),signal:a.signal});if(!o.ok){let e=xf(await o.json().catch(()=>null));return mf.has(e)?{kind:`unknown`,code:e}:{kind:`refused`,code:e}}let c=await o.json().catch(()=>null);return!hf(c)||typeof c.code!=`string`||c.provider!==t&&(t!==`anthropic`||c.provider!==void 0)?{kind:`unknown`,code:`unknown_outcome`}:(i===s.current&&f(n,i),{kind:`settled`,code:c.code,replayed:c.replayed===!0,resetsLeft:typeof c.resetsLeft==`number`?c.resetsLeft:null})}catch{return{kind:`unknown`,code:`aborted`}}finally{a.clear()}},[e,t,f]);return{entries:a.namespace===i?a.entries:ff,refresh:p,spend:m}}function Cf(){let e=globalThis.crypto;if(e&&typeof e.randomUUID==`function`)return e.randomUUID();if(e&&typeof e.getRandomValues==`function`){let t=e.getRandomValues(new Uint8Array(16));t[6]=t[6]&15|64,t[8]=t[8]&63|128;let n=[...t].map(e=>e.toString(16).padStart(2,`0`)).join(``);return[n.slice(0,8),n.slice(8,12),n.slice(12,16),n.slice(16,20),n.slice(20)].join(`-`)}}var wf={reset:`anthropicGrant.resultReset`,already_used:`anthropicGrant.resultAlreadyUsed`,not_limited:`anthropicGrant.resultNotLimited`,cooldown:`anthropicGrant.resultCooldown`,ineligible:`anthropicGrant.resultIneligible`,unavailable:`anthropicGrant.resultUnavailable`,rate_limited:`anthropicGrant.resultRateLimited`,auth_error:`anthropicGrant.resultAuthError`},Tf={grant_not_usable:`anthropicGrant.notUsableNow`,operation_identity_mismatch:`anthropicGrant.identityMismatch`,unresolved_prior_operation:`anthropicGrant.unresolvedPrior`,unknown_outcome_expired:`anthropicGrant.expired`,session_required:`anthropicGrant.sessionRequired`,ledger_busy:`anthropicGrant.journalBusy`,ledger_unavailable:`anthropicGrant.journalBusy`,ledger_capacity:`anthropicGrant.journalBusy`,auth_failed:`anthropicGrant.resultAuthError`};function Ef({entry:e,onClick:t,t:n}){if(e===void 0||e.status===`loading`)return(0,Q.jsxs)(`span`,{className:`badge badge-muted codex-ticket-badge-slot`,"aria-hidden":`true`,children:[(0,Q.jsx)(lt,{width:12}),`0`]});let r=e.status===`ready`?yf(e.snapshot):null,i=e.status===`ready`&&bf(e.snapshot)!==void 0,a=r===null?n(`anthropicGrant.badgeErrorAria`):n(`anthropicGrant.badgeAria`,{count:String(r)});return(0,Q.jsxs)(`button`,{type:`button`,className:`badge ${i?`badge-amber`:`badge-muted`} badge-clickable`,"data-anthropic-grant-badge":r===null?`error`:String(r),onClick:e=>{e.stopPropagation(),t()},"aria-label":a,title:a,children:[(0,Q.jsx)(lt,{width:12}),r===null?(0,Q.jsx)(Ae,{width:11}):r]})}var Df={five_hour:`anthropicGrant.windowFiveHour`,seven_day:`anthropicGrant.windowWeekly`,seven_day_overage_included:`anthropicGrant.windowOverage`};function Of({grant:e,snapshot:t,isNext:n,locale:r,t:i}){let a=e.endsAt?Od(e.endsAt):null,o=e.paused?i(`anthropicGrant.paused`):e.usableNow?e.useRequiresLimit&&!t.atLimit?i(`anthropicGrant.requiresLimit`):null:i(`anthropicGrant.notUsable`);return(0,Q.jsxs)(`div`,{className:`credit-item${n?` credit-next`:``}`,"data-anthropic-grant":e.id,children:[(0,Q.jsxs)(`div`,{className:`credit-item-head`,children:[(0,Q.jsx)(lt,{width:13}),(0,Q.jsx)(`span`,{className:`credit-item-label`,children:e.label||e.id}),(0,Q.jsx)(`span`,{className:`badge badge-muted text-micro anthropic-grant-count`,children:i(`anthropicGrant.resetsLeft`,{left:String(e.resetsLeft),total:String(e.resetsTotal)})})]}),(0,Q.jsxs)(`div`,{className:`credit-item-dates`,children:[e.startsAt&&(0,Q.jsx)(`span`,{children:i(`anthropicGrant.validFrom`,{date:Ed(e.startsAt,r)})}),e.endsAt&&a!==null&&(0,Q.jsx)(`span`,{className:a<=7?`credit-urgent`:``,children:i(`anthropicGrant.expires`,{date:Dd(e.endsAt,r),days:String(a)})})]}),e.clears.length>0&&(0,Q.jsx)(`div`,{className:`anthropic-grant-windows`,children:e.clears.map(t=>(0,Q.jsx)(`span`,{className:`anthropic-grant-window`,children:i(Df[t],{percent:String(e.percentUsed[t]??0)})},t))}),o&&(0,Q.jsx)(`div`,{className:`faint text-caption anthropic-grant-note`,children:o})]})}function kf(e){return e.kind===`settled`?e.replayed&&e.code===`reset`?{tone:`ok`,key:`anthropicGrant.replayed`}:{tone:e.code===`reset`?`ok`:`warn`,key:wf[e.code]??`anthropicGrant.failed`,count:e.resetsLeft===null?`?`:String(e.resetsLeft)}:{tone:`warn`,key:Tf[e.code]??`anthropicGrant.failed`}}var Af=new Set([`unknown_outcome_expired`,`operation_identity_mismatch`]);function jf({accountId:e,accountLabel:n,entry:r,controller:i,onClose:a}){let{locale:o,t:s}=t(),c=(0,Z.useRef)(null),l=(0,Z.useRef)(null),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(null),[v,y]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{let e=c.current;e&&!e.open&&e.showModal()},[]),(0,Z.useEffect)(()=>{u&&l.current?.focus()},[u]);let b=(0,Z.useCallback)(e=>{e.preventDefault(),a()},[a]),x=r?.status===`ready`?r.snapshot:null,S=x?.pendingOperation,C=g??(S?{grantId:S.grantId,operationId:S.operationId}:null),w=x?bf(x):void 0,T=()=>{if(!w||C)return;let e=Cf();if(!e){y({tone:`warn`,key:`anthropicGrant.noOperationId`});return}y(null),d({grantId:w.id,operationId:e})},E=async t=>{if(f)return;let n=C!==null&&C.operationId===t.operationId;p(!0);let r=await i.spend(e,t);if(p(!1),d(null),r.kind===`unknown`||r.kind===`refused`&&n&&!Af.has(r.code)){_(t),y(r.kind===`refused`?kf(r):null);return}_(null),y(kf(r)),r.kind===`refused`&&i.refresh(e)},D=async()=>{m||(h(!0),await i.refresh(e),h(!1))},O=e=>(0,Q.jsx)(`p`,{className:e.tone===`ok`?`pws-status-ok`:`pws-status-warn`,role:e.tone===`ok`?`status`:`alert`,style:{marginTop:12},children:s(e.key,{count:e.count??``})}),k=u&&x?x.grants.find(e=>e.id===u.grantId):void 0,A=x?yf(x):0;return(0,Q.jsxs)(`dialog`,{ref:c,className:`modal-overlay`,"aria-labelledby":`anthropic-grant-title`,onCancel:b,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":s(`common.close`),tabIndex:-1,onClick:a}),(0,Q.jsx)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),role:`document`,children:C?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{textAlign:`center`,padding:`12px 0`},children:[(0,Q.jsx)(`div`,{className:`confirm-icon`,children:(0,Q.jsx)(Ae,{width:22})}),(0,Q.jsx)(`h3`,{id:`anthropic-grant-title`,children:s(`anthropicGrant.title`)}),(0,Q.jsx)(`p`,{className:`pws-status-warn`,role:`alert`,children:s(`anthropicGrant.unknownOutcome`)}),v&&O(v)]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:a,children:s(`common.close`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>{D()},disabled:m||f,children:s(m?`anthropicGrant.checking`:`anthropicGrant.checkResult`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,"data-anthropic-grant-retry":!0,onClick:()=>{E(C)},disabled:f||m,children:s(f?`anthropicGrant.redeeming`:`anthropicGrant.retrySame`)})]})]}):u?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{textAlign:`center`,padding:`12px 0`},children:[(0,Q.jsx)(`div`,{className:`confirm-icon`,children:(0,Q.jsx)(Ae,{width:22})}),(0,Q.jsx)(`h3`,{id:`anthropic-grant-title`,children:s(`anthropicGrant.confirmTitle`)}),(0,Q.jsx)(`p`,{className:`modal-desc`,children:s(`anthropicGrant.confirmDesc`)}),k&&(0,Q.jsx)(`p`,{className:`faint text-label`,children:s(`anthropicGrant.confirmWhich`,{label:k.label||k.id})}),(0,Q.jsx)(`p`,{className:`faint text-label`,children:s(`anthropicGrant.irreversible`)})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>d(null),disabled:f,children:s(`common.cancel`)}),(0,Q.jsx)(`button`,{ref:l,type:`button`,className:`btn btn-primary`,"data-anthropic-grant-confirm":!0,onClick:()=>{E(u)},disabled:f,children:s(f?`anthropicGrant.redeeming`:`anthropicGrant.redeem`)})]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`h3`,{id:`anthropic-grant-title`,children:[(0,Q.jsx)(lt,{width:16}),` `,s(`anthropicGrant.title`)]}),(0,Q.jsx)(`div`,{className:`card-sub`,children:n}),(0,Q.jsxs)(`div`,{style:{margin:`16px 0`},children:[r===void 0||r.status===`loading`?(0,Q.jsx)(`p`,{className:`faint text-label`,children:s(`common.loading`)}):r.status===`error`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`faint`,role:`alert`,children:s(r.reason===`auth`?`anthropicGrant.loadFailedAuth`:`anthropicGrant.loadFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,style:{marginTop:12},onClick:()=>{i.refresh(e)},children:s(`anthropicGrant.retry`)})]}):r.snapshot.eligible?r.snapshot.grants.length>0?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{style:{marginBottom:12},children:s(`anthropicGrant.available`,{count:String(A)})}),(0,Q.jsx)(`div`,{className:`credit-list`,children:r.snapshot.grants.map(e=>(0,Q.jsx)(Of,{grant:e,snapshot:r.snapshot,isNext:e.id===w?.id,locale:o,t:s},e.id))}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,"data-anthropic-grant-use":!0,style:{marginTop:12,width:`100%`},onClick:T,disabled:!w||f,children:s(`anthropicGrant.useOne`)}),(0,Q.jsx)(`p`,{className:`card-sub text-caption`,style:{marginTop:8,textAlign:`center`},children:s(`anthropicGrant.desc`)})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`faint`,children:s(`anthropicGrant.none`)}),(0,Q.jsx)(`p`,{className:`modal-desc`,children:s(`anthropicGrant.desc`)})]}):(0,Q.jsx)(`p`,{className:`faint`,children:s(`anthropicGrant.ineligible`)}),v&&O(v)]})]})})]})}var Mf=2e4,Nf=3e4,Pf=3,Ff=`ocx.grok-coupon-holds.v1`,If=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,Lf=new Set([`attempt_unresolved`,`attempt_in_progress`,`attempt_reconcile_failed`,`operation_state_changed`,`redeem_failed`,`attempt_mark_failed`,`operation_token_mismatch`]),Rf=new Set([`ledger_unavailable`,`capacity`]),zf=new Set([`redeemed`,`auth_failed`,`fetch_resets_failed`,`no_coupons_available`,`coupon_unavailable`,`token_unresolved`]),Bf=new Map,Vf=new Set,Hf;function Uf(e){if(!e||typeof e!=`object`)return!1;let{tokenId:t,operationId:n}=e;return typeof t==`string`&&t.trim()!==``&&typeof n==`string`&&If.test(n)}function Wf(){try{let e=window.sessionStorage.getItem(Ff);if(e!==Hf){Hf=e;let t=e===null?null:JSON.parse(e);if(t&&typeof t==`object`&&!Array.isArray(t))for(let[e,n]of Object.entries(t))!e.includes(`\0`)||!Uf(n)||Bf.has(e)||(Bf=new Map(Bf).set(e,{tokenId:n.tokenId,operationId:n.operationId}))}}catch{}return Bf}function Gf(e){return Vf.add(e),()=>{Vf.delete(e)}}function Kf(){try{let e=JSON.stringify(Object.fromEntries(Bf));window.sessionStorage.setItem(Ff,e),Hf=e}catch{}for(let e of Vf)e()}function qf(e,t){Bf=new Map(Bf).set(e,{...t}),Kf()}function Jf(e,t){Wf().get(e)?.operationId===t&&(Bf=new Map(Bf),Bf.delete(e),Kf())}function Yf(e,t){return Lf.has(e)||Rf.has(e)&&!!(t&&typeof t==`object`&&`operationId`in t)}function Xf(e){if(!e||typeof e!=`object`)return null;let t=e.tokens;if(!Array.isArray(t))return null;let n=[];for(let e of t){if(!e||typeof e!=`object`)return null;let{tokenId:t,validityStart:r,validityEnd:i}=e;if(typeof t!=`string`||t===``)return null;n.push({tokenId:t,validityStart:typeof r==`string`?r:``,validityEnd:typeof i==`string`?i:``})}return n}function Zf(e){if(e&&typeof e==`object`){let t=e.error;if(t&&typeof t==`object`){let e=t.code;if(typeof e==`string`&&e.trim()!==``)return e}}return`redeem_failed`}function Qf(e){if(e&&typeof e==`object`){let t=e.code;if(typeof t==`string`&&t.trim()!==``)return t}return null}function $f(e){if(!e.validityEnd)return 1/0;let t=Date.parse(e.validityEnd);return Number.isNaN(t)?1/0:t}function ep(e){return e.toSorted((e,t)=>$f(e)-$f(t))}function tp({apiBase:e,accountIds:t,enabled:n}){let[r,i]=(0,Z.useState)({}),a=(0,Z.useSyncExternalStore)(Gf,Wf,Wf),o=(0,Z.useMemo)(()=>{let t=`${e}\u0000`;return Object.fromEntries([...a].filter(([e])=>e.startsWith(t)).map(([e,n])=>[e.slice(t.length),n]))},[e,a]),s=(0,Z.useRef)(0),c=(0,Z.useRef)(new Map),l=(0,Z.useRef)({active:0,waiting:[]}),u=t.join(`\0`),d=(0,Z.useCallback)(async(t,n)=>{let r=(c.current.get(t)??0)+1;c.current.set(t,r);let a=l.current;a.active>=Pf&&await new Promise(e=>a.waiting.push(e)),a.active+=1;let o=()=>s.current===n&&c.current.get(t)===r,u=A(Mf);try{let n=await fetch(`${e}/api/grok/reset-coupons?accountId=${encodeURIComponent(t)}`,{signal:u.signal}),r=n.ok?Xf(await n.json().catch(()=>null)):null;if(!o())return;i(e=>({...e,[t]:r?{status:`ready`,coupons:ep(r)}:{status:`error`,reason:n.status===401?`auth`:`upstream`}}))}catch{if(!o())return;i(e=>({...e,[t]:{status:`error`,reason:`upstream`}}))}finally{u.clear(),--a.active,a.waiting.shift()?.()}},[e]);return(0,Z.useEffect)(()=>{if(!n||u===``)return;let e=++s.current;return Promise.resolve().then(()=>{for(let t of u.split(`\0`))d(t,e)}),()=>{s.current+=1}},[n,u,d]),{entries:r,uncertain:o,refresh:(0,Z.useCallback)(async e=>{i(t=>({...t,[e]:{status:`loading`}})),await d(e,s.current)},[d]),redeem:(0,Z.useCallback)(async(t,n)=>{let r=`${e}\u0000${t}`,i=(e,t=`attempt_unresolved`)=>({ok:!1,code:t,replayed:!1,operationId:e.operationId,uncertain:!0}),a=Wf().get(r);if(a)return i(a);qf(r,n);let o=()=>Jf(r,n.operationId),c=A(Nf);try{let r=await fetch(`${e}/api/grok/reset-coupons/consume`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({accountId:t,tokenId:n.tokenId,operationId:n.operationId}),signal:c.signal});if(!r.ok){let e=await r.json().catch(()=>null),t=Zf(e);return Yf(t,e)?i(n,t):(o(),{ok:!1,code:t,replayed:!1})}let a=await r.json().catch(()=>null),l=!!(a&&typeof a==`object`&&a.replayed===!0),u=Qf(a);return u===null||!zf.has(u)?i(n,u??`attempt_unresolved`):(o(),await d(t,s.current),{ok:u===`redeemed`,code:u,replayed:l})}catch{return i(n,`aborted`)}finally{c.clear()}},[e,d])}}var np=new Set([`builder-id`,`google`,`github`]),rp=new Set([`pending`,`done`,`failed`,`expired`,`cancelled`]);function ip(e){if(!e||typeof e!=`object`)return null;let t=e;return typeof t.flowId!=`string`||!t.flowId||!np.has(t.method)||!rp.has(t.state)?null:{flowId:t.flowId,method:t.method,state:t.state,...typeof t.userCode==`string`?{userCode:t.userCode}:{},...typeof t.verificationUri==`string`?{verificationUri:t.verificationUri}:{},...typeof t.verificationUriComplete==`string`?{verificationUriComplete:t.verificationUriComplete}:{},...typeof t.expiresAt==`number`&&Number.isFinite(t.expiresAt)?{expiresAt:t.expiresAt}:{},...t.warning===`duplicate_profile_arn`||t.warning===`manual_review_required`?{warning:t.warning}:{}}}function ap(e){if(!e||[...e].some(e=>e.charCodeAt(0)<32||e.charCodeAt(0)===127))return null;let t=/^https:\/\/([^/?#]+)/iu.exec(e)?.[1];if(!t||t.includes(`@`)||t.includes(`:`))return null;try{let t=new URL(e);if(t.protocol!==`https:`||t.username||t.password||t.port)return null;let n=t.hostname.toLowerCase();return n!==`device.sso.us-east-1.amazonaws.com`&&n!==`kiro.dev`&&!n.endsWith(`.kiro.dev`)?null:t.href}catch{return null}}function op(e,t){return t!==`kiro`||e.autoSelectable!==!1||e.skipReason===`needs_reauth`||e.skipReason===`paused`||e.skipReason===`cooldown`&&e.health?.status===`cooldown`?null:e.skipReason===`suspended`?`kiroSelection.suspended`:e.skipReason===`quota_exhausted`?`kiroSelection.quotaExhausted`:e.skipReason===`cooldown`?`kiroSelection.cooldown`:`kiroSelection.generic`}var sp=new Map;function cp(e,t){let n=JSON.stringify([e,t]),r=sp.get(n);if(r)return r;let i=(async()=>{await fetch(`${e}/api/oauth/login/cancel`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:t}),keepalive:!0})})().catch(()=>{}).finally(()=>{sp.get(n)===i&&sp.delete(n)});return sp.set(n,i),i}async function lp(e,t,n){let r=JSON.stringify([e,t]),i=sp.get(r);return i?(await i,lp(e,t,n)):n()}var up=new Map,dp=new Map,fp=new Map,pp=(e,t)=>JSON.stringify([e,t]),mp=e=>new Promise(t=>setTimeout(t,e)),hp=65536;function gp(e){try{e.body?.cancel().catch(()=>{})}catch{}}function _p(e,t,n=45e3){let r=new AbortController,i,a=!1,o,s=new Promise(e=>{o=e}),c=e=>{a||(a=!0,clearTimeout(u),o(e))},l=()=>{if(!a){r.abort();try{i?.cancel().catch(()=>{})}catch{}c({kind:`retry`})}},u=setTimeout(l,Math.max(0,n));return(async()=>{try{let n=await fetch(`${e}/api/oauth/status?provider=kiro&flowId=${encodeURIComponent(t)}`,{signal:r.signal});if(a){gp(n);return}if(n.status===404){gp(n),c({kind:`missing`});return}if(!n.ok||!n.body){gp(n),c({kind:`retry`});return}i=n.body.getReader();let o=new TextDecoder,s=``,u=0;for(;;){let e=await i.read();if(a)return;if(e.done)break;if(u+=e.value.byteLength,u>hp){l();return}s+=o.decode(e.value,{stream:!0})}s+=o.decode();let d;try{d=JSON.parse(s)}catch{c({kind:`retry`});return}let f=ip(d);c(f?{kind:`view`,view:f}:{kind:`retry`})}catch{c({kind:`retry`})}})(),{result:s,cancel:l}}async function vp(e,t){let n;try{return await Promise.race([e.result,new Promise(r=>{n=setTimeout(()=>{e.cancel(),r({kind:`retry`})},Math.max(0,t))})])}finally{n&&clearTimeout(n)}}function yp(e,t){let n=fp.get(e)??new Set;return n.add(t),fp.set(e,n),()=>{n.delete(t),n.size===0&&fp.delete(e)}}function bp(e,t,n){let r=pp(e,t);if(dp.has(r))return dp.get(r);dp.set(r,n);for(let t of fp.get(e)??[])t(n);return n}function xp(e,t,n,r=`status`){return n.flowId!==t||r===`cancel`&&n.state!==`failed`?null:n.state===`done`?bp(e,t,`added`):n.state===`failed`?bp(e,t,`failed`):n.state===`expired`||n.state===`cancelled`?bp(e,t,`ended`):null}function Sp(e,t,n,r){let i=pp(e,t),a=up.get(i);if(a)return a;let o=dp.get(i);if(o)return Promise.resolve(o);let s=Math.min(Date.now()+96e4,(n??Date.now()+9e5)+6e4),c=(async()=>{let n=r;for(;Date.now()<s;){let r=s-Date.now(),a=n??_p(e,t,Math.min(45e3,r));n=void 0;let o=await vp(a,r);if(dp.has(i))return dp.get(i);if(o.kind===`missing`)return bp(e,t,`ended`);if(o.kind===`view`){let n=xp(e,t,o.view);if(n)return n}let c=s-Date.now();if(c<=0)break;await mp(Math.min(2e3,c))}return n?.cancel(),bp(e,t,`ended`)})().finally(()=>{up.delete(i)});return up.set(i,c),c}var Cp=(e,t)=>new Promise(n=>{if(t.aborted){n();return}let r=setTimeout(()=>{t.removeEventListener(`abort`,i),n()},e),i=()=>{clearTimeout(r),t.removeEventListener(`abort`,i),n()};t.addEventListener(`abort`,i,{once:!0})}),wp=Symbol(`closed`),Tp=(e,t)=>new Promise(n=>{if(e.closed){n(wp);return}let r=!1,i=t=>{r||(r=!0,e.closedController.signal.removeEventListener(`abort`,a),n(t))},a=()=>i(wp);e.closedController.signal.addEventListener(`abort`,a,{once:!0}),t.then(t=>i(e.closed?wp:t),()=>i(wp))});function Ep(e,t,n=Cp){let[r,i]=(0,Z.useState)({phase:`idle`}),a=(0,Z.useRef)(null),o=(0,Z.useRef)(!0),s=(0,Z.useRef)(t);(0,Z.useEffect)(()=>{s.current=t},[t]);let c=(0,Z.useCallback)(async t=>{try{return await fetch(`${e}/api/oauth/login/cancel`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:`kiro`,flowId:t.flowId}),keepalive:!0})}catch{return null}},[e]),l=(0,Z.useCallback)(t=>{let n=t.view;n&&!t.terminal&&Sp(e,n.flowId,n.expiresAt,t.inFlight)},[e]),u=(0,Z.useCallback)(async()=>{let t=a.current;if(!t||t.closed||(t.closed=!0,t.closedController.abort(),a.current=null,t.waitController?.abort(),o.current&&i({phase:`cancelled`}),!t.view||t.terminal))return;let n=c(t.view);l(t);let r=await n,s=r?.ok?ip(await r.json().catch(()=>null)):null;s&&xp(e,t.view.flowId,s,`cancel`)},[e,c,l]);return(0,Z.useEffect)(()=>(o.current=!0,()=>{o.current=!1,u()}),[u]),{state:r,start:(0,Z.useCallback)(async t=>{if(a.current)return;let r={closed:!1,closedController:new AbortController};a.current=r,i({phase:`starting`});let u;try{u=await lp(e,`kiro`,()=>fetch(`${e}/api/oauth/login`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:`kiro`,method:t})}))}catch{!r.closed&&o.current&&i({phase:`failed`,error:`network`}),a.current===r&&(a.current=null);return}let d=u.ok?ip(await u.json().catch(()=>null)):null;if(!d||d.method!==t){!r.closed&&o.current&&i({phase:`failed`,error:u.ok?`invalid`:`start`}),a.current===r&&(a.current=null);return}if(r.view=d,r.closed){let t=c(d);l(r);let n=await t,i=n?.ok?ip(await n.json().catch(()=>null)):null;i&&xp(e,d.flowId,i,`cancel`);return}if(d.state!==`pending`){d.state===`done`?s.current?.(`kiro`,`added`):d.state===`failed`&&s.current?.(`kiro`,`failed`),o.current&&i({phase:d.state,view:d}),r.terminal=d.state===`done`?`added`:d.state===`failed`?`failed`:`ended`,a.current=null;return}for(i({phase:`pending`,view:d});!r.closed&&!r.terminal;){let t=new AbortController;if(r.waitController=t,await n(2e3,t.signal),r.waitController=void 0,r.closed||r.terminal)break;if(r.view?.expiresAt&&Date.now()>=r.view.expiresAt){r.terminal=`ended`,o.current&&i({phase:`expired`,view:r.view});break}let a=d.flowId,c=_p(e,a);r.inFlight=c;let l=await Tp(r,c.result);if(l===wp)break;if(r.inFlight=void 0,l.kind===`missing`){r.terminal=`ended`,s.current?.(`kiro`,`ended`),i({phase:`ended`,view:r.view});break}let u=l.kind===`view`?l.view:null;if(!(!u||u.flowId!==a)){if(r.view=u,u.state===`pending`){i({phase:`pending`,view:u});continue}r.terminal=u.state===`done`?`added`:u.state===`failed`?`failed`:`ended`,(u.state===`done`||u.state===`failed`)&&s.current?.(`kiro`,r.terminal),i({phase:u.state,view:u});break}}a.current===r&&(a.current=null)},[e,c,l,n]),close:u,reset:(0,Z.useCallback)(()=>{a.current||i({phase:`idle`})},[])}}function Dp({disabled:e,onCli:t,onMethod:n}){let r=O();return(0,Q.jsxs)(`div`,{className:`kiro-login-choices`,role:`group`,"aria-label":r(`kiroLogin.chooseMethod`),children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:e,onClick:t,children:r(`kiroLogin.cli`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:e,onClick:()=>n(`builder-id`),children:r(`kiroLogin.builderId`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:e,onClick:()=>n(`google`),children:r(`kiroLogin.google`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:e,onClick:()=>n(`github`),children:r(`kiroLogin.github`)})]})}function Op({apiBase:e,triggerRef:t,addAccount:n,busy:r,onCli:i,onClose:a,onSettled:o,pollDelay:s}){let c=O(),l=(0,Z.useId)(),u=rr(!0,t),d=Ep(e,o,s),f=_l(),{state:p}=d,m=p.view,h=m?.verificationUriComplete??m?.verificationUri,g=ap(h),_=()=>{d.close(),a()};return(0,Q.jsxs)(`dialog`,{ref:u,className:`kiro-device-dialog`,"aria-modal":`true`,"aria-labelledby":l,onCancel:e=>{e.preventDefault(),_()},children:[(0,Q.jsx)(`h2`,{id:l,children:c(`kiroLogin.title`)}),p.phase===`idle`&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`muted`,children:c(n?`kiroLogin.addDescription`:`kiroLogin.loginDescription`)}),(0,Q.jsx)(Dp,{disabled:r,onCli:()=>{a(),i(n)},onMethod:e=>{d.start(e)}})]}),p.phase===`starting`&&(0,Q.jsx)(`p`,{role:`status`,"aria-live":`polite`,children:c(`kiroLogin.starting`)}),m&&(p.phase===`pending`||p.phase===`done`||p.phase===`failed`||p.phase===`expired`||p.phase===`ended`)&&(0,Q.jsxs)(Q.Fragment,{children:[m.userCode&&(0,Q.jsxs)(`div`,{className:`kiro-device-code`,children:[(0,Q.jsx)(`span`,{className:`kiro-device-code-value`,children:m.userCode}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>f.copy(m.userCode,m.flowId),children:f.outcomeFor(m.flowId)===`copied`?c(`kiroLogin.copied`):f.outcomeFor(m.flowId)===`unavailable`?c(`kiroLogin.copyUnavailable`):c(`kiroLogin.copyCode`)})]}),h&&(g?(0,Q.jsx)(`a`,{href:g,target:`_blank`,rel:`noopener noreferrer`,children:c(`kiroLogin.openVerification`)}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`kiro-device-destination`,children:h}),(0,Q.jsx)(`p`,{className:`notice-warn`,children:c(`kiroLogin.unexpectedHost`)})]})),m.warning===`duplicate_profile_arn`&&(0,Q.jsx)(`p`,{className:`notice-warn`,children:c(`kiroLogin.duplicate`)}),m.warning===`manual_review_required`&&(0,Q.jsx)(`p`,{className:`notice-warn`,children:c(`kiroLogin.manualReview`)})]}),(0,Q.jsxs)(`p`,{role:`status`,"aria-live":`polite`,children:[p.phase===`pending`&&c(`kiroLogin.pending`),p.phase===`done`&&c(`kiroLogin.done`),p.phase===`expired`&&c(`kiroLogin.expired`),p.phase===`ended`&&c(`kiroLogin.ended`),p.phase===`failed`&&c(p.error===`start`?`kiroLogin.startFailed`:`kiroLogin.failed`)]}),(0,Q.jsxs)(`div`,{className:`kiro-device-actions`,children:[(p.phase===`failed`||p.phase===`expired`||p.phase===`ended`)&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:d.reset,children:c(`kiroLogin.tryAgain`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:_,children:c(`common.cancel`)})]})]})}var kp=262144,Ap=[],jp=[];function Mp(e){return!!e.needsReauth||tl(e.health?.status)}function Np({initialState:e,onUpdateProvider:t}){let n=O(),[r,i]=(0,Z.useState)(e),[a,o]=(0,Z.useState)(e),[s,c]=(0,Z.useState)(!1),[l,u]=(0,Z.useState)(``);e!==a&&(o(e),i(e));let d=r===`mixed`,f=async()=>{if(!t||s)return;let e=r===!1;c(!0),u(``);try{let r=await t(`xai`,{xaiResponsesOptIn:e});if(!r.ok){u(r.error??n(`prov.updateFail`));return}i(r.xaiResponsesOptInState??e)}catch{u(n(`prov.networkError`))}finally{c(!1)}};return(0,Q.jsxs)(`div`,{className:`pwi-auth-optin-row`,children:[(0,Q.jsxs)(`div`,{className:`pwi-auth-optin-copy`,children:[(0,Q.jsx)(`span`,{className:`pwi-auth-optin-label`,children:n(`pws.xaiChatOptIn`)}),(0,Q.jsxs)(`span`,{className:`pwi-auth-row-secondary`,children:[n(`pws.xaiChatOptInDesc`),d&&(0,Q.jsxs)(`span`,{className:`pwi-auth-optin-mixed`,children:[` `,n(`pws.xaiChatOptInMixed`)]})]}),l&&(0,Q.jsx)(`span`,{className:`pwi-auth-optin-error`,role:`alert`,children:l})]}),(0,Q.jsx)(on,{on:r===!1,mixed:d,onClick:()=>{f()},disabled:!t||s,label:n(`pws.xaiChatOptIn`)})]})}var Pp=new Set([`totalCount`,`importedCount`,`updatedCount`,`failedCount`,`unsupportedCount`,`results`]),Fp=new Set([`imported`,`updated`,`failed`,`unsupported`]),Ip={imported:new Set([`imported`]),updated:new Set([`updated`]),failed:new Set([`invalid_record`,`credential_rejected`,`identity_mismatch`,`missing_project`,`persist_failed`]),unsupported:new Set([`unsupported_provider`,`unsupported_format`])};function Lp(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function Rp(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function zp(e){if(!Lp(e)||Object.keys(e).some(e=>!Pp.has(e)))return null;let{totalCount:t,importedCount:n,updatedCount:r,failedCount:i,unsupportedCount:a,results:o}=e;if(!Rp(t)||!Rp(n)||!Rp(r)||!Rp(i)||!Rp(a)||!Array.isArray(o)||o.length!==t||n+r+i+a!==t)return null;let s={imported:0,updated:0,failed:0,unsupported:0};for(let[e,t]of o.entries()){if(!Lp(t)||Object.keys(t).some(e=>![`index`,`status`,`code`].includes(e)))return null;let n=String(t.status),r=String(t.code);if(t.index!==e||!Fp.has(n)||!Ip[n]?.has(r))return null;s[n]+=1}return s.imported!==n||s.updated!==r||s.failed!==i||s.unsupported!==a?null:{importedCount:n,updatedCount:r,failedCount:i,unsupportedCount:a}}function Bp({item:e,apiBase:t,oauth:n,accounts:r=Ap,keys:i=jp,accountLoadState:a=`ready`,switchingAccountId:o=null,pausingAccountId:s=null,busy:c=!1,loginHint:l,authHandlers:u,onCodexActiveNeedsReauthChange:d,codexController:f,onUpdateProvider:p}){let m=O(),[h,g]=(0,Z.useState)(!1),[_,v]=(0,Z.useState)(null),y=(0,Z.useRef)(null),b=(0,Z.useRef)(null),x=t=>{e.name===`kiro`?v({addAccount:t}):u?.onLogin(e.name,t)},[S,C]=(0,Z.useState)(``),[w,T]=(0,Z.useState)(!1),[E,D]=(0,Z.useState)(!1),[k,A]=(0,Z.useState)(`idle`),[j,M]=(0,Z.useState)(null),N=(0,Z.useRef)(null),[P,I]=(0,Z.useState)(``),[L,R]=(0,Z.useState)(!1),[z,B]=(0,Z.useState)(``),[V,H]=(0,Z.useState)(!0),U=JSON.stringify([t,e.name,r.find(e=>e.active)?.id,i.find(e=>e.active)?.id]),[W,G]=(0,Z.useState)({identity:U,refreshing:!1,result:null}),ee=W.identity===U&&W.refreshing,te=W.identity===U?W.result:null,K=(0,Z.useRef)(0);(0,Z.useEffect)(()=>(K.current+=1,()=>{K.current+=1}),[U]);let q=u?.onRefreshQuota,ne=Ks({...e,hasApiKey:e.hasApiKey||i.length>0}),J=ne===`oauth-accounts`,Y=ne===`api-keys`,ie=J&&e.name===`xai`&&r.length>0,X=tp({apiBase:t,accountIds:(0,Z.useMemo)(()=>ie?r.filter(e=>!Mp(e)).map(e=>e.id):[],[ie,r]),enabled:ie}),[ae,oe]=(0,Z.useState)(null),se=Kc(e.name)&&qc(e.name,e),ce=J&&se&&r.length>0,le=(0,Z.useMemo)(()=>ce?r.filter(e=>!Mp(e)).map(e=>e.id):[],[ce,r]),ue=Sf({apiBase:t,provider:Kc(e.name)?e.name:`anthropic`,accountIds:le,enabled:ce}),de=`${t}\0${e.name}`,[fe,pe]=(0,Z.useState)(null),me=fe?.scope===de?fe.account:null,he=e=>{pe(e?{scope:de,account:e}:null)},ge=async()=>{if(!q||ee)return;let t=++K.current;G({identity:U,refreshing:!0,result:null});try{let n=await q(e.name);K.current===t&&G({identity:U,refreshing:!1,result:{ok:n,text:m(n?`pws.quotaCheckCompleted`:`codexAuth.quotaRefreshFailed`)}})}catch{K.current===t&&G({identity:U,refreshing:!1,result:{ok:!1,text:m(`codexAuth.quotaRefreshFailed`)}})}};if(ne===`codex-accounts`)return(0,Q.jsxs)(`section`,{className:`pwi-section pwi-auth-section`,"aria-label":m(`pws.availableAccounts`),children:[(0,Q.jsx)(`h3`,{className:`pwi-section-title`,children:m(`pws.availableAccounts`)}),(0,Q.jsx)(`div`,{className:`pwi-auth-body`,children:(0,Q.jsx)(Xd,{apiBase:t,embedded:!0,controller:f,onActiveNeedsReauthChange:d})})]});if(!ne||!u)return null;let _e=l?.provider===e.name?l:null,ve=async()=>{let n=P.trim();if(!(!n||L)){R(!0),B(``);try{let r=await fetch(`${t}/api/oauth/login/code`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:e.name,input:n})});if(!r.ok){let e=await r.json().catch(()=>({}));H(!1),B(m(`prov.pasteFail`,{error:e.error||r.statusText}));return}I(``),H(!0),B(m(`prov.pasteOk`))}catch{H(!1),B(m(`modal.networkError`))}finally{R(!1)}}},ye=r.length>0||n?.loggedIn===!0,be=r.find(e=>e.active&&e.needsReauth),xe=!!be,Se=J?r:i,Ce=!!q&&!(Se.length>0&&Se.every(e=>e.quotaMode===`unsupported`)),we=async()=>{let t=S.trim();if(t){T(!0);try{await u.onAddApiKey(e.name,t)&&(C(``),g(!1))}finally{T(!1)}}},Te=async n=>{if(!(!n||E)){D(!0),A(`idle`),M(null);try{if(!n.name.toLowerCase().endsWith(`.json`)||n.size>kp){A(`invalid`);return}let r;try{r=JSON.parse(await n.text())}catch{A(`invalid`);return}let i=await fetch(`${t}/api/oauth/accounts/import`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:`google-antigravity`,format:`cockpit-tools`,document:r})});if(!i.ok){A(`failed`);return}let a=zp(await i.json().catch(()=>null));if(!a){A(`failed`);return}M(a),A(`complete`);try{await u.onRetryAccounts?.(e.name)}catch{}}catch{A(`failed`)}finally{N.current&&(N.current.value=``),D(!1)}}};return(0,Q.jsxs)(`section`,{className:`pwi-section pwi-auth-section`,"aria-label":m(J?`pws.availableAccounts`:`pws.apiKeys`),children:[(0,Q.jsxs)(`div`,{className:`pwi-auth-head`,children:[(0,Q.jsx)(`h3`,{className:`pwi-section-title`,children:m(J?`pws.availableAccounts`:`pws.apiKeys`)}),(J&&ye||Y)&&Ce&&(0,Q.jsxs)(`div`,{className:`pwi-auth-head-actions`,children:[te&&(0,Q.jsx)(`span`,{role:`status`,className:te.ok?`pws-status-ok`:`pws-status-warn`,children:te.text}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:ee||c||!!o,onClick:()=>{ge()},children:[(0,Q.jsx)(re,{width:14,height:14,"aria-hidden":`true`}),` `,m(ee?`codexAuth.refreshingQuota`:`codexAuth.refreshQuota`)]})]})]}),(0,Q.jsxs)(`div`,{className:`pwi-auth-body`,children:[e.name===`xai`&&(0,Q.jsx)(Np,{initialState:e.xaiResponsesOptInState??!0,onUpdateProvider:p}),J&&(0,Q.jsxs)(Q.Fragment,{children:[se&&(0,Q.jsx)(ef,{apiBase:t,provider:Kc(e.name)?e.name:`anthropic`,accountCount:r.length,onThresholdChange:t=>{u?.onAccountPoolThreshold?.(e.name,t)}},`${t}:${e.name}`),e.name===`google-antigravity`&&(0,Q.jsxs)(`div`,{className:`pwi-auth-add-key`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{id:`cockpit-import-description`,className:`pwi-auth-row-secondary`,children:m(`pws.cockpitImportDescription`)}),(0,Q.jsx)(`label`,{className:`sr-only`,htmlFor:`cockpit-import-file`,children:m(`pws.cockpitImportFileLabel`)}),(0,Q.jsx)(`input`,{ref:N,id:`cockpit-import-file`,type:`file`,accept:`application/json,.json`,className:`sr-only`,"aria-describedby":`cockpit-import-description cockpit-import-status`,disabled:E,onChange:e=>{Te(e.currentTarget.files?.[0])}})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:E,onClick:()=>N.current?.click(),children:m(E?`pws.cockpitImporting`:`pws.cockpitImportChooseFile`)}),(0,Q.jsxs)(`div`,{id:`cockpit-import-status`,role:`status`,"aria-live":`polite`,children:[k===`invalid`&&m(`pws.cockpitImportInvalid`),k===`failed`&&m(`pws.cockpitImportFailed`),k===`complete`&&j&&m(`pws.cockpitImportComplete`,{imported:j.importedCount,updated:j.updatedCount,failed:j.failedCount,unsupported:j.unsupportedCount})]})]}),(0,Q.jsxs)(`div`,{className:`pwi-auth-status-row`,children:[(0,Q.jsx)(`span`,{className:`pwi-auth-dot ${xe?`pwi-auth-dot--warn`:ye?`pwi-auth-dot--ok`:`pwi-auth-dot--off`}`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`pwi-auth-status-text`,children:ye?r.length>0?m(`pws.loggedInTitle`):n?.email??m(`pws.loggedInTitle`):n?.error||m(`pws.notLoggedInTitle`)}),(0,Q.jsxs)(`span`,{className:`pwi-auth-actions`,children:[be&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:c,onClick:()=>void u.onReauth(e.name,be.id),children:m(`pws.reauthenticate`)}),ye?(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void u.onLogout(e.name),children:m(`prov.logout`)}):(0,Q.jsxs)(`button`,{ref:e.name===`kiro`?y:void 0,type:`button`,className:`btn btn-primary btn-sm`,disabled:c||e.name===`kiro`&&!!_,onClick:()=>x(!1),children:[c?(0,Q.jsx)(`span`,{className:`pwi-spin-inline`,"aria-hidden":`true`}):(0,Q.jsx)(at,{style:{width:13,height:13},"aria-hidden":`true`}),m(c?`prov.waitingBrowser`:`prov.login`)]})]})]}),!c&&(0,Q.jsx)(tf,{}),c&&_e&&(0,Q.jsxs)(`div`,{className:`pwi-auth-wait`,children:[(0,Q.jsx)(`span`,{className:`pwi-spin-inline`,"aria-hidden":`true`}),(0,Q.jsxs)(`div`,{className:`pwi-auth-wait-copy`,children:[(0,Q.jsx)(`div`,{className:`pwi-auth-wait-title`,children:m(`prov.waitingBrowser`)}),(0,Q.jsx)(bl,{hint:{url:_e.url,deviceCode:_e.deviceCode,instructions:_e.instructions,browserLaunch:_e.browserLaunch},paste:{value:P,busy:L,message:z,ok:V,onChange:I,onSubmit:()=>{ve()}}}),u.onCancelLogin&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void u.onCancelLogin?.(e.name),children:m(`common.cancel`)})]})]}),a===`loading`&&r.length===0&&(0,Q.jsxs)(`div`,{className:`pwi-auth-state`,role:`status`,children:[(0,Q.jsx)(`span`,{className:`pwi-spin-inline`,"aria-hidden":`true`}),m(`pws.accountsLoading`)]}),a===`error`&&(0,Q.jsxs)(`div`,{className:`pwi-auth-state pwi-auth-state--error`,role:`alert`,children:[(0,Q.jsx)(`span`,{children:m(`pws.accountsLoadFailed`)}),u.onRetryAccounts&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void u.onRetryAccounts?.(e.name),children:m(`pws.retryAccounts`)})]}),r.length>0&&(0,Q.jsx)(`ul`,{className:`pwi-auth-list`,children:r.map(t=>{let n=qs(r,t,m),i=e.name===`google-antigravity`?t.plan:void 0,a=o===t.id,l=s===t.id,d=t.health?.status,f=Mp(t),p=rl(d),h=Yc(t.id),g=ol(m,t.health),_=sl(m,e.name,t.id,t.health);return(0,Q.jsxs)(`li`,{className:`pwi-auth-acct${t.active?` pwi-auth-acct--active`:``}`,children:[(0,Q.jsxs)(`div`,{className:`pwi-auth-row${t.active?` pwi-auth-row--active`:``}`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`pwi-auth-row-main`,onClick:()=>{!t.active&&!t.paused&&!f&&!p&&!o&&!s&&u.onSwitchAccount(e.name,t)},"aria-current":t.active?`true`:void 0,"aria-label":`${n}${i?` — ${i}`:``}${t.active?` — ${m(`pws.accountCurrent`)}`:``}`,disabled:!!(t.paused||f||p||o||s),children:[(0,Q.jsx)(`span`,{className:`pwi-auth-dot ${f?`pwi-auth-dot--warn`:t.active&&!t.paused?`pwi-auth-dot--ok`:`pwi-auth-dot--off`}`,"aria-hidden":`true`}),(0,Q.jsxs)(`span`,{className:`pwi-auth-row-copy`,children:[(0,Q.jsxs)(`span`,{className:`pwi-auth-row-heading`,children:[(0,Q.jsx)(`span`,{className:`pwi-auth-row-label`,children:n}),i&&(0,Q.jsx)(`span`,{className:`badge badge-green`,children:i})]}),(0,Q.jsx)(`span`,{className:`pwi-auth-row-secondary`,children:[t.email,`${m(`prov.accountId`)}: ${h}`].filter(Boolean).join(` · `)}),_&&(0,Q.jsx)(`span`,{className:`pwi-auth-row-secondary faint`,children:_}),p&&(0,Q.jsx)(`span`,{className:`pwi-auth-row-secondary faint`,children:m(`pws.healthCooldownHint`)}),t.paused&&(0,Q.jsx)(`span`,{className:`pwi-auth-row-secondary faint`,children:m(`pws.accountPausedHint`)})]}),g&&(0,Q.jsx)(`span`,{className:el(d),children:g}),f&&!g&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:m(`pws.reauth`)}),op(t,e.name)&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:m(op(t,e.name))}),t.paused&&(0,Q.jsx)(`span`,{className:`badge badge-muted`,children:m(`codexAuth.paused`)}),t.active&&!t.paused&&(0,Q.jsx)(`span`,{className:`badge badge-primary`,children:m(`prov.accountActive`)}),a&&(0,Q.jsx)(`span`,{className:`badge badge-muted`,children:m(`pws.accountSwitching`)})]}),typeof t.paused==`boolean`&&u.onPauseAccount&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":`${m(t.paused?`codexAuth.resume`:`codexAuth.pause`)} — ${n}`,title:t.paused?m(`pws.accountPausedHint`):void 0,"aria-busy":l,disabled:c||!!o||!!s,onClick:()=>void u.onPauseAccount(e.name,t,!t.paused),children:m(t.paused?`codexAuth.resume`:`codexAuth.pause`)}),f&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:c||!!o||!!s,onClick:()=>void u.onReauth(e.name,t.id),children:m(`pws.reauthenticate`)}),ie&&!f&&(0,Q.jsx)(of,{entry:X.entries[t.id],t:m,onClick:()=>oe(t)}),ce&&!f&&(0,Q.jsx)(Ef,{entry:ue.entries[t.id],t:m,onClick:()=>he(t)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void u.onEditAlias(e.name,`oauth`,t.id,t.alias),children:m(`prov.editAlias`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm pwi-auth-row-remove`,"aria-label":`${m(`common.remove`)} — ${n}`,title:`${m(`common.remove`)} — ${n}`,disabled:!!o||!!s,onClick:()=>void u.onRemoveAccount(e.name,t),children:(0,Q.jsx)(F,{style:{width:13,height:13},"aria-hidden":`true`})})]}),(0,Q.jsxs)(`div`,{className:`pwi-auth-acct-quota`,children:[se&&t.autoSwitchThresholdOverride!==void 0&&t.autoSwitchThreshold!==void 0&&u.onAccountThreshold&&(0,Q.jsx)(Qc,{accountLabel:n,inputId:`anthropic-threshold-${t.id}`,globalThreshold:t.autoSwitchThreshold,override:t.autoSwitchThresholdOverride,hintText:m(`pws.anthropicAccountThresholdHint`),disabled:c||!!o||!!s,onChange:n=>u.onAccountThreshold(e.name,t,n)}),(0,Q.jsx)(Js,{quotaMode:t.quotaMode,quota:t.quota,quotaUnavailable:t.quotaUnavailable,quotaPending:t.quotaPending,quotaFailure:t.quotaFailure})]})]},t.id)})}),ae&&(0,Q.jsx)(cf,{accountId:ae.id,accountLabel:qs(r,ae,m),entry:X.entries[ae.id],controller:X,onClose:()=>oe(null)}),me&&(0,Q.jsx)(jf,{accountId:me.id,accountLabel:qs(r,me,m),entry:ue.entries[me.id],controller:ue,onClose:()=>he(null)},`${t}:${e.name}:${me.id}`),a===`ready`&&ye&&r.length===0&&(0,Q.jsx)(`div`,{className:`pwi-auth-state pwi-auth-state--empty`,children:m(`pws.noAccounts`)}),ye&&(0,Q.jsxs)(`div`,{className:`pwi-auth-actions`,children:[(0,Q.jsx)(`button`,{ref:e.name===`kiro`?b:void 0,type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>x(!0),disabled:c||!!o||e.name===`kiro`&&!!_,children:m(`pws.addAccount`)}),Ce&&(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:ee||c||!!o,onClick:()=>{ge()},children:[(0,Q.jsx)(re,{width:14,height:14,"aria-hidden":`true`}),` `,m(ee?`codexAuth.refreshingQuota`:`codexAuth.refreshQuota`)]})]})]}),e.name===`kiro`&&_&&(0,Q.jsx)(Op,{apiBase:t,triggerRef:_.addAccount?b:y,addAccount:_.addAccount,busy:c,onClose:()=>v(null),onCli:t=>{u.onLogin(e.name,t)},onSettled:u.onNativeLoginSettled}),Y&&(0,Q.jsxs)(Q.Fragment,{children:[i.length>0&&(0,Q.jsx)(`ul`,{className:`pwi-auth-list`,children:i.map(t=>(0,Q.jsxs)(`li`,{className:`pwi-auth-acct${t.active?` pwi-auth-acct--active`:``}`,children:[(0,Q.jsxs)(`div`,{className:`pwi-auth-row${t.active?` pwi-auth-row--active`:``}`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`pwi-auth-row-main`,onClick:()=>void u.onSwitchApiKey(e.name,t),disabled:t.active,children:[(0,Q.jsx)(`span`,{className:`pwi-auth-dot ${t.active?`pwi-auth-dot--ok`:`pwi-auth-dot--off`}`,"aria-hidden":`true`}),(0,Q.jsxs)(`span`,{className:`pwi-auth-row-copy`,children:[(0,Q.jsx)(`span`,{className:`pwi-auth-row-label`,children:t.label??t.masked}),t.label&&(0,Q.jsxs)(`code`,{className:`pwi-auth-row-secondary`,children:[t.masked,` · `,m(`prov.accountId`),`: `,t.id]})]}),t.active&&(0,Q.jsx)(`span`,{className:`badge badge-primary`,children:m(`prov.accountActive`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void u.onEditAlias(e.name,`api-key`,t.id,t.label),children:m(`prov.editAlias`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm pwi-auth-row-remove`,"aria-label":`${m(`common.remove`)} — ${t.label??t.masked}`,title:`${m(`common.remove`)} — ${t.label??t.masked}`,onClick:()=>void u.onRemoveApiKey(e.name,t),children:(0,Q.jsx)(F,{style:{width:13,height:13},"aria-hidden":`true`})})]}),(0,Q.jsx)(`div`,{className:`pwi-auth-acct-quota`,children:(0,Q.jsx)(Js,{quotaMode:t.quotaMode,quota:t.quota,quotaUnavailable:t.quotaUnavailable,quotaPending:t.quotaPending,quotaFailure:t.quotaFailure})})]},t.id))}),h?(0,Q.jsxs)(`div`,{className:`pwi-auth-add-key`,children:[(0,Q.jsx)(`input`,{className:`input`,type:`password`,value:S,onChange:e=>C(e.target.value),placeholder:m(`modal.apiKeyPlaceholder`),autoComplete:`off`,disabled:w}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:()=>void we(),disabled:w||!S.trim(),children:m(w?`pws.saving`:`pws.addKey`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{g(!1),C(``)},children:m(`common.cancel`)})]}):(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,style:{marginTop:8},onClick:()=>g(!0),children:m(`pws.addKey`)})]})]})]})}function Vp(e,t,n){let r=e?.find(e=>e.id===t);if(!r)return n;if(r.baseUrl)return r.baseUrl;let i=new Set((e??[]).map(e=>e.baseUrl?.trim().replace(/\/+$/,``)).filter(e=>!!e)),a=n.trim().replace(/\/+$/,``);return i.has(a)?``:n}function Hp(e,t){if(!e?.length)return`custom`;let n=t.trim().replace(/\/+$/,``);for(let t of e)if(t.baseUrl&&t.baseUrl.trim().replace(/\/+$/,``)===n)return t.id;return e.some(e=>e.id===`custom`)?`custom`:e[0].id}function Up(e,t,n){let r=e?.find(e=>e.id===t);return r?.baseUrl?r.baseUrl.trim():n.trim()}function Wp(e){if(e.adapter.trim()!==`openai-responses`||e.authMode&&e.authMode!==`key`&&e.authMode!==`local`)return!1;try{let t=new URL(e.baseUrl.trim());if(![`https:`,`http:`].includes(t.protocol)||t.username||t.password)return!1;let n=t.hostname.toLowerCase().replace(/\.$/,``);return n!==`api.openai.com`&&n!==`chatgpt.com`&&n!==`chat.openai.com`&&![`.openai.azure.com`,`.services.ai.azure.com`,`.cognitiveservices.azure.com`].some(e=>n.endsWith(e))}catch{return!1}}var Gp=`https://chatgpt.com/backend-api/codex`;function Kp(e){try{let t=new URL(e.trim());if(t.username||t.password||t.search||t.hash)return;let n=t.pathname.replace(/\/+$/,``);return`${t.origin}${n}`}catch{return}}function qp(e){return[`openai`,...Object.entries(e).filter(([,e])=>e.authMode===`forward`).map(([e])=>e).filter(e=>e!==`openai`).sort((e,t)=>e.localeCompare(t))]}function Jp(e){return e?e.adapter!==`openai-responses`||e.authMode!==`forward`||typeof e.baseUrl!=`string`||Kp(e.baseUrl)!==Gp?`invalid`:e.disabled===!0?`disabled`:`ready`:`absent`}function Yp(e){return e.id===`openai`}function Xp(e){return e.id===`openai`?e.codexAccountMode===`direct`?`prov.openaiDirectDesc`:`prov.openaiPoolDesc`:null}function Zp(e){let t={adapter:e.adapter.trim(),baseUrl:e.baseUrl.trim()};return e.responsesPath?.trim()&&(t.responsesPath=e.responsesPath.trim()),(e.authMode===`key`||e.authMode===`forward`)&&(t.authMode=e.authMode),e.authMode===`key`&&e.apiKey.trim()&&(t.apiKey=e.apiKey.trim()),e.adapter.trim()===`anthropic`&&e.authMode===`key`&&e.apiKeyTransport===`bearer`&&(t.apiKeyTransport=`bearer`),e.defaultModel.trim()&&(t.defaultModel=e.defaultModel.trim()),e.allowPrivateNetwork&&(t.allowPrivateNetwork=!0),Wp(e)&&e.preserveResponsesReasoningContent===!0&&(t.preserveResponsesReasoningContent=!0),t}function Qp(e,t){return Yp(e)?$p(e):{name:t.name.trim(),provider:Zp(t)}}function $p(e){if(!e.provider)throw Error(`Missing canonical provider seed for ${e.id}`);return{name:e.id,provider:structuredClone(e.provider)}}var em=class extends Error{i18nKey;constructor(e){super(e),this.name=`OpenAiEnableError`,this.i18nKey=e}};async function tm(e,t,n=fetch){if(t===`disabled`){if((await n(`${e}/api/providers?name=openai`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({disabled:!1})})).ok)return;throw new em(`codexAuth.enableOpenaiFailed`)}let r=await n(`${e}/api/provider-presets`);if(!r.ok)throw new em(`codexAuth.openaiPresetLoadFailed`);let i=(await r.json()).providers?.find(e=>e.id===`openai`);if(!i?.provider)throw new em(`codexAuth.openaiPresetUnavailable`);if(!(await n(`${e}/api/providers`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify($p(i))})).ok)throw new em(`codexAuth.enableOpenaiFailed`)}function nm({checked:e,onChange:t}){let n=O();return(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,style:{flexDirection:`row`,alignItems:`flex-start`,gap:8},children:[(0,Q.jsx)(`input`,{name:`preserveResponsesReasoningContent`,type:`checkbox`,checked:e,onChange:e=>t(e.target.checked)}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:n(`pws.responsesReasoningReplay`)}),(0,Q.jsx)(`span`,{className:`muted text-label`,style:{display:`block`,marginTop:2},children:n(`pws.responsesReasoningReplayHint`)})]})]})}var rm=[`responses`,`chat`,`messages`],im=[`responses`,`chat`,`messages`,`other`],am=[`responses`,`chat`,`messages`,`other`,`ir`,`responses-internal`],om=[`native`,`translated`,`legacy-bridge`,`blocked`],sm=[`preserved`,`degraded`,`unknown`],cm=[`same-wire-native`,`cross-wire-codec`,`cross-wire-ir`,`combo-or-policy-route`,`responses-only-feature`,`hosted-tool`,`vision-preprocessing`,`tool-result-image`,`auth-mode-not-native`,`effort-row`,`fast-row`,`caller-credential-required`,`not-migrated`,`surface-disabled`,`feature-unrepresentable`,`compatibility-reject`,`unknown-model`,`upstream-other`,`rollout-disabled`,`bridge-only-policy`,`oauth-account-pool`,`anthropic-beta-dropped`,`opaque-state-stripped`],lm=new Set(rm),um=new Set(im),dm=new Set(am),fm=new Set(om),pm=new Set(sm),mm=new Set(cm);function hm(e){return typeof e==`string`&&lm.has(e)}function gm(e){return typeof e==`string`&&um.has(e)}function _m(e){return typeof e==`string`&&dm.has(e)}function vm(e){return typeof e==`string`&&fm.has(e)}function ym(e){return typeof e==`string`&&pm.has(e)}function bm(e){return typeof e==`string`&&mm.has(e)}function xm(e){switch(e){case`openai-responses`:return`responses`;case`openai-chat`:return`chat`;case`anthropic-messages`:return`messages`;default:return}}function Sm(e){switch(e){case`openai-responses`:return`responses`;case`openai-chat`:return`chat`;case`anthropic`:return`messages`;default:return`other`}}var Cm=[`request.tools`,`request.hosted_tools`,`request.images`,`request.documents`,`request.multiple_choices`,`request.logprobs`,`request.logit_bias`,`request.seed`,`request.audio`,`request.prediction`,`request.response_format`,`request.reasoning`,`request.thinking_budget`,`request.top_k`,`request.cache_control`,`request.previous_response_id`,`request.store`,`request.background`,`request.compaction`],wm=new Set(Cm);function Tm(e){return typeof e==`string`&&wm.has(e)}var Em={"request.tools":[`responses`,`chat`,`messages`],"request.hosted_tools":[`responses`],"request.images":[`responses`,`chat`,`messages`],"request.documents":[`responses`,`chat`,`messages`],"request.multiple_choices":[`chat`],"request.logprobs":[`responses`,`chat`],"request.logit_bias":[`chat`],"request.seed":[`chat`],"request.audio":[`chat`],"request.prediction":[`chat`],"request.response_format":[`responses`,`chat`],"request.reasoning":[`responses`,`chat`,`messages`],"request.thinking_budget":[`messages`],"request.top_k":[`messages`],"request.cache_control":[`messages`],"request.previous_response_id":[`responses`],"request.store":[`responses`],"request.background":[`responses`],"request.compaction":[`responses`]},Dm={pathHops:6,reasonCodes:8,featureEffects:24,candidates:16,attempts:16,identifierLength:200},Om=[`hard-pin`,`operator`,`registry`,`provider-default`];function km(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}var Am=new Set([`passthrough`,`translated`,`degraded`,`unsupported`]);function jm(e,t,n){return Array.isArray(e)&&e.length<=t&&e.every(n)}function Mm(e){return typeof e==`string`&&e.length>0&&e.length<=Dm.identifierLength&&!/[\u0000-\u001f\u007f]/.test(e)}function Nm(e){return km(e)&&Tm(e.feature)&&typeof e.disposition==`string`&&Am.has(e.disposition)}function Pm(e){return jm(e,Dm.pathHops,_m)&&e.length>0}function Fm(e){return jm(e,Dm.reasonCodes,bm)}function Im(e){return jm(e,Dm.featureEffects,Tm)}function Lm(e){return km(e)&&Mm(e.provider)&&Mm(e.model)&&Mm(e.adapter)&&gm(e.upstream)&&vm(e.mode)&&(e.mode===`blocked`?Array.isArray(e.requestPath):Pm(e.requestPath))&&(e.mode===`blocked`?Array.isArray(e.responsePath):Pm(e.responsePath))&&ym(e.fidelity)&&Fm(e.reasonCodes)&&jm(e.featureEffects,Dm.featureEffects,Nm)&&Im(e.unknownFeatures)&&typeof e.eligible==`boolean`}function Rm(e){return km(e)&&e.schemaVersion===1&&(e.basis===`preview`||e.basis===`dispatch`)&&typeof e.contractVersion==`string`&&typeof e.policyRevision==`string`&&hm(e.inbound)&&Mm(e.requestedModel)&&(e.routeKind===`direct`||e.routeKind===`combo`||e.routeKind===`policy`||e.routeKind===`unknown`)&&vm(e.mode)&&Fm(e.reasonCodes)&&jm(e.candidates,Dm.candidates,Lm)&&Im(e.guaranteedFeatures)&&Im(e.partialFeatures)}function zm(e){return km(e)&&typeof e.ordinal==`number`&&Number.isInteger(e.ordinal)&&e.ordinal>0&&gm(e.upstream)&&vm(e.mode)&&e.mode!==`blocked`&&Pm(e.requestPath)&&(e.responsePath===void 0||Pm(e.responsePath))}function Bm(e){return!(!km(e)||e.v!==1||!hm(e.inbound)||!vm(e.mode)||e.upstream!==void 0&&!gm(e.upstream)||!(e.mode===`blocked`?Array.isArray(e.requestPath)&&e.requestPath.length===0&&Array.isArray(e.responsePath)&&e.responsePath.length===0:Pm(e.requestPath)&&Pm(e.responsePath))||!Fm(e.reasonCodes)||typeof e.contractVersion!=`string`||e.featureEffects!==void 0&&!jm(e.featureEffects,Dm.featureEffects,Nm)||e.attempts!==void 0&&!jm(e.attempts,Dm.attempts,zm)||e.planMismatch!==void 0&&e.planMismatch!==!0)}function Vm(e){if(Bm(e))return{v:1,inbound:e.inbound,mode:e.mode,...e.upstream===void 0?{}:{upstream:e.upstream},requestPath:[...e.requestPath],responsePath:[...e.responsePath],reasonCodes:[...e.reasonCodes],...e.featureEffects?{featureEffects:e.featureEffects.map(e=>({...e}))}:{},...e.attempts?{attempts:e.attempts.map(e=>({...e,requestPath:[...e.requestPath],...e.responsePath?{responsePath:[...e.responsePath]}:{}}))}:{},...e.planMismatch?{planMismatch:!0}:{},contractVersion:e.contractVersion}}var Hm=new Set(Om);function Um(e){return typeof e==`string`&&Hm.has(e)}function Wm(e){return km(e)&&Mm(e.model)&&Mm(e.adapter)&&Um(e.source)}function Gm(e){return km(e)&&Mm(e.name)&&Mm(e.adapter)&&Um(e.adapterSource)&&(e.authMode===null||Mm(e.authMode))&&gm(e.upstream)&&jm(e.modelOverrides,64,Wm)&&(e.modelOverridesTruncated===void 0||e.modelOverridesTruncated===!0)}var Km=32,qm=new Map;function Jm(e,t,n){return JSON.stringify([e,t.model,t.inbound,[...new Set(t.features)].sort(),n])}function Ym(e,t){for(qm.delete(e),qm.set(e,t);qm.size>Km;){let e=qm.keys().next().value;if(e===void 0)break;qm.delete(e)}}function Xm(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Zm(e){if(!Xm(e)||e.schemaVersion!==1||typeof e.policyRevision!=`string`||!Array.isArray(e.features)||!e.features.every(Tm)||!Xm(e.surfaces))return null;let t={};for(let[n,r]of Object.entries(e.surfaces)){if(!hm(n)||!Xm(r)||typeof r.enabled!=`boolean`)return null;t[n]={enabled:r.enabled}}return!t.responses||!t.chat||!t.messages?null:{policyRevision:e.policyRevision,features:[...e.features],surfaces:t}}async function Qm(e,t){let n=await fetch(`${e}/api/protocols`,{signal:t});if(n.status===404)return null;if(!n.ok)throw Error(`HTTP ${n.status}`);let r=Zm(await n.json());if(!r)throw Error(`invalid protocol info`);return r}async function $m(e,t,n){try{let r=await Qm(e,n);if(!r)return{kind:`unavailable`};let i=Jm(e,t,r.policyRevision),a=qm.get(i);if(a)return{kind:`plan`,plan:a};let o=await fetch(`${e}/api/protocols/plan`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({model:t.model,inbound:t.inbound,features:[...t.features]}),signal:n});if(o.status===404)return{kind:`unavailable`};if(!o.ok)return{kind:`error`};let s=await o.json();return Rm(s)?(Ym(Jm(e,t,s.policyRevision),s),{kind:`plan`,plan:s}):{kind:`error`}}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)throw e;return{kind:`error`}}}async function eh(e,t,n){try{let r=await fetch(`${e}/api/protocols/settings`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify(t),signal:n});if(r.status===404||r.status===405)return{kind:`unavailable`};let i=await r.json().catch(()=>null);if(!r.ok){let e=Xm(i)&&Xm(i.error)&&typeof i.error.code==`string`?i.error.code:void 0;return e?{kind:`error`,code:e}:{kind:`error`}}let a=Zm(i);return a?{kind:`ok`,info:a}:{kind:`error`}}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)throw e;return{kind:`error`}}}async function th(e,t,n){try{let r=await fetch(`${e}/api/protocols?${new URLSearchParams({provider:t}).toString()}`,{signal:n});if(r.status===404)return{kind:`unavailable`};if(!r.ok)return{kind:`error`};let i=await r.json();return!Xm(i)||i.provider===void 0?{kind:`unavailable`}:!Gm(i.provider)||i.provider.name!==t?{kind:`error`}:{kind:`summary`,summary:i.provider}}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)throw e;return{kind:`error`}}}var nh={native:`logs.protocol.mode.native`,translated:`logs.protocol.mode.translated`,"legacy-bridge":`logs.protocol.mode.legacyBridge`,blocked:`logs.protocol.mode.blocked`},rh={passthrough:`logs.protocol.disposition.passthrough`,translated:`logs.protocol.disposition.translated`,degraded:`logs.protocol.disposition.degraded`,unsupported:`logs.protocol.disposition.unsupported`},ih={responses:`logs.protocol.wire.responses`,chat:`logs.protocol.wire.chat`,messages:`logs.protocol.wire.messages`,other:`logs.protocol.wire.other`,ir:`logs.protocol.hop.ir`,"responses-internal":`logs.protocol.hop.internal`},ah=` → `;function oh(e,t){return t(ih[e])}function sh(e,t){return e.map(e=>oh(e,t)).join(ah)}function ch(e,t){let n=oh(e.inbound,t);if(e.mode===`blocked`)return n;let r=e.upstream??e.requestPath[e.requestPath.length-1];return r?`${n}${ah}${oh(r,t)}`:n}var lh={"hard-pin":`pws.protocol.source.hardPin`,operator:`pws.protocol.source.operator`,registry:`pws.protocol.source.registry`,"provider-default":`pws.protocol.source.providerDefault`};function uh({adapter:e}){let t=O();return(0,Q.jsxs)(`span`,{className:`ppp-wire`,children:[(0,Q.jsx)(`code`,{children:e}),(0,Q.jsx)(`span`,{className:`muted`,children:oh(Sm(e),t)})]})}function dh({apiBase:e,providerName:t,savedAdapter:n,draftAdapter:r,refreshKey:i}){let a=O(),o=JSON.stringify([e??``,t,n,i??``]),[s,c]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{if(e===void 0)return;let n=new AbortController;return th(e,t,n.signal).then(e=>{n.signal.aborted||c(e.kind===`summary`?{key:o,kind:`summary`,summary:e.summary}:{key:o,kind:e.kind===`unavailable`?`hidden`:`error`})}).catch(()=>{}),()=>n.abort()},[e,t,o]);let l=s?.key===o?s:null;if(e===void 0||!l||l.kind===`hidden`)return null;let u=r&&r!==n?r:null;return(0,Q.jsxs)(`section`,{className:`ppp-card`,"aria-labelledby":`ppp-title`,"data-testid":`provider-protocol-panel`,children:[(0,Q.jsx)(`h3`,{id:`ppp-title`,children:a(`pws.protocol.title`)}),(0,Q.jsx)(`p`,{className:`pwi-settings-hint`,children:a(`pws.protocol.note`)}),l.kind===`error`?(0,Q.jsx)(`p`,{className:`muted small`,role:`status`,children:a(`pws.protocol.loadFailed`)}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`dl`,{className:`ppp-kv`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:a(`pws.protocol.adapterLabel`)}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(uh,{adapter:l.summary.adapter})})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:a(`pws.protocol.source`)}),(0,Q.jsx)(`dd`,{"data-adapter-source":l.summary.adapterSource,children:a(lh[l.summary.adapterSource])})]}),l.summary.authMode&&(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:a(`pws.authMode`)}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(`code`,{children:l.summary.authMode})})]})]}),u&&(0,Q.jsx)(`p`,{className:`ppp-pending`,role:`status`,children:a(`pws.protocol.pending`,{adapter:u})}),(0,Q.jsx)(`h4`,{children:a(`pws.protocol.overrides`)}),l.summary.modelOverrides.length===0?(0,Q.jsx)(`p`,{className:`muted small`,children:a(`pws.protocol.noOverrides`)}):(0,Q.jsxs)(`table`,{className:`ppp-overrides`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{scope:`col`,children:a(`pws.protocol.col.model`)}),(0,Q.jsx)(`th`,{scope:`col`,children:a(`pws.protocol.col.wire`)}),(0,Q.jsx)(`th`,{scope:`col`,children:a(`pws.protocol.col.source`)})]})}),(0,Q.jsx)(`tbody`,{children:l.summary.modelOverrides.map(e=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{children:(0,Q.jsx)(`code`,{children:e.model})}),(0,Q.jsx)(`td`,{children:(0,Q.jsx)(uh,{adapter:e.adapter})}),(0,Q.jsx)(`td`,{"data-adapter-source":e.source,children:a(lh[e.source])})]},e.model))})]}),l.summary.modelOverridesTruncated&&(0,Q.jsx)(`p`,{className:`muted small`,children:a(`pws.protocol.overridesTruncated`,{count:l.summary.modelOverrides.length})})]})]})}function fh({value:e,onChange:t,status:n=[]}){let r=O(),i=(n,r)=>{let i={...e.keys};r.trim()?i[n]=Number(r):delete i[n],t({...e,keys:Object.keys(i).length?i:void 0})};return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:r(`pws.keySelection`)}),(0,Q.jsxs)(`select`,{className:`input`,value:e.keySelection??`active`,onChange:n=>t({...e,keySelection:n.target.value}),children:[(0,Q.jsx)(`option`,{value:`active`,children:r(`pws.keyActive`)}),(0,Q.jsx)(`option`,{value:`round-robin`,children:r(`pws.keyRoundRobin`)})]})]}),(0,Q.jsx)(`h4`,{children:r(`pws.keyLimits`)}),(0,Q.jsx)(`div`,{className:`pwi-key-limits`,style:{display:`flex`,flexWrap:`wrap`,gap:12},children:[`requestsPerMinute`,`minIntervalMs`,`maxConcurrentRequests`].map((t,n)=>(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,style:{flex:`1 1 160px`,minWidth:0},children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:r([`pws.pacingRpm`,`pws.pacingDelay`,`pws.pacingConcurrency`][n])}),(0,Q.jsx)(`input`,{className:`input`,type:`number`,min:t===`requestsPerMinute`?1/60:1,step:t===`requestsPerMinute`?`any`:1,value:e.keys?.[t]??``,onChange:e=>i(t,e.target.value)})]},t))}),(0,Q.jsx)(`p`,{className:`pwi-settings-hint`,children:r(`pws.keySharedQuota`)}),n.length>0&&(0,Q.jsxs)(`table`,{style:{width:`100%`,tableLayout:`fixed`,overflowWrap:`anywhere`},children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:r(`pws.keyHandle`)}),(0,Q.jsx)(`th`,{children:r(`pws.keyStarts`)}),(0,Q.jsx)(`th`,{children:r(`pws.keyInFlight`)}),(0,Q.jsx)(`th`,{children:r(`pws.pacingQueued`)}),(0,Q.jsx)(`th`,{children:r(`pws.keyWait`)})]})}),(0,Q.jsx)(`tbody`,{children:n.map(e=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{children:(0,Q.jsx)(`code`,{children:e.id})}),(0,Q.jsx)(`td`,{children:e.starts}),(0,Q.jsx)(`td`,{children:e.inFlight}),(0,Q.jsx)(`td`,{children:e.queued}),(0,Q.jsx)(`td`,{children:e.cooldownUntil?r(`pws.keyCooldown`):`${e.nextSlotInMs} ms`})]},e.id))})]})]})}var ph=[`openai-responses`,`openai-chat`,`anthropic`,`google`,`azure-openai`,`cursor`],mh=[];function hh(e){return e===`http1.1`||e===`h1`?`http1.1`:`http2`}function gh(e){return e===void 0?``:String(e)}function _h(e){if(!e.trim())return;let t=Number(e);return Number.isFinite(t)&&t>=1/60?t:void 0}function vh(e){if(!e.trim())return;let t=Number(e);return Number.isSafeInteger(t)&&t>0?t:void 0}function yh(e){let t=Object.entries(e?.models??{}).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,t.requestsPerMinute??null,t.minIntervalMs??null,t.maxConcurrentRequests??null]);return JSON.stringify([e?.enabled===!0,e?.requestsPerMinute??null,e?.minIntervalMs??null,e?.maxConcurrentRequests??null,e?.keySelection??`active`,[e?.keys?.requestsPerMinute??null,e?.keys?.minIntervalMs??null,e?.keys?.maxConcurrentRequests??null],t])}function bh({item:e,availableModels:t=mh,apiBase:n,onUpdateProvider:r,onDirtyChange:i,onRegisterSave:a}){let o=O(),s=String(e.authMode??(e.keyOptional?`local`:`key`)),c=ge(e.name,e),l=c?e.liveModels!==!1:!1,u=hh(e.upstreamHttpVersion),[d,f]=(0,Z.useState)(e.adapter),[p,m]=(0,Z.useState)(e.baseUrl),[h,g]=(0,Z.useState)(e.defaultModel??``),[_,v]=(0,Z.useState)(s),[y,b]=(0,Z.useState)(e.apiKeyTransport??`x-api-key`),[x,S]=(0,Z.useState)(e.note??``),[C,w]=(0,Z.useState)(e.allowPrivateNetwork??!1),[T,E]=(0,Z.useState)(e.preserveResponsesReasoningContent===!0),[D,k]=(0,Z.useState)(l),[j,M]=(0,Z.useState)(u),[N,P]=(0,Z.useState)(!1),[F,I]=(0,Z.useState)(null),[L,z]=(0,Z.useState)(e.codexAccountMode??`pool`),[B,V]=(0,Z.useState)(!1),[H,U]=(0,Z.useState)(null),[W,G]=(0,Z.useState)(),[ee,te]=(0,Z.useState)(n?`loading`:`idle`),[K,q]=(0,Z.useState)(()=>`custom`),[ne,J]=(0,Z.useState)(e.requestPacing?.enabled===!0),[Y,re]=(0,Z.useState)({keySelection:e.requestPacing?.keySelection,keys:e.requestPacing?.keys}),[ie,X]=(0,Z.useState)(()=>gh(e.requestPacing?.requestsPerMinute)),[ae,oe]=(0,Z.useState)(()=>gh(e.requestPacing?.minIntervalMs)),[se,ce]=(0,Z.useState)(()=>gh(e.requestPacing?.maxConcurrentRequests)),[le,ue]=(0,Z.useState)(()=>({...e.requestPacing?.models??{}})),[de,fe]=(0,Z.useState)(``),[pe,me]=(0,Z.useState)(``),[he,_e]=(0,Z.useState)(``),[ve,ye]=(0,Z.useState)(``),[be,xe]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{f(e.adapter),m(e.baseUrl),g(e.defaultModel??``),v(String(e.authMode??(e.keyOptional?`local`:`key`))),b(e.apiKeyTransport??`x-api-key`),S(e.note??``),w(e.allowPrivateNetwork??!1),E(e.preserveResponsesReasoningContent===!0),k(l),M(u),J(e.requestPacing?.enabled===!0),re({keySelection:e.requestPacing?.keySelection,keys:e.requestPacing?.keys}),X(gh(e.requestPacing?.requestsPerMinute)),oe(gh(e.requestPacing?.minIntervalMs)),ce(gh(e.requestPacing?.maxConcurrentRequests)),ue({...e.requestPacing?.models??{}}),I(null),U(null),queueMicrotask(()=>q(Hp(W,e.baseUrl)))},[e.adapter,e.baseUrl,e.defaultModel,e.authMode,e.apiKeyTransport,e.keyOptional,e.note,e.allowPrivateNetwork,e.preserveResponsesReasoningContent,l,u,e.requestPacing,W]),(0,Z.useEffect)(()=>{z(e.codexAccountMode??`pool`)},[e.codexAccountMode]),(0,Z.useEffect)(()=>{if(!n)return;let t=!1,r=e.name,i=e.baseUrl;return fetch(`${n}/api/provider-presets`).then(e=>gn(e)).then(e=>{if(t)return;if(!e){G(void 0),te(`error`);return}let n=(e.providers??[]).find(e=>e.id===r)?.baseUrlChoices;G(n),te(`ready`),q(Hp(n,i))}).catch(()=>{t||(G(void 0),te(`error`))}),()=>{t=!0}},[n,e.name]),(0,Z.useEffect)(()=>{if(!n)return;let t=!0,r=!1,i=()=>{if(r)return;r=!0;let i=A(1e4);fetch(`${n}/api/provider-request-pacing?name=${encodeURIComponent(e.name)}`,{signal:i.signal}).then(e=>gn(e)).then(e=>{t&&e&&xe(e)}).catch(()=>void 0).finally(()=>{i.clear(),r=!1})};i();let a=ua(i,2e3);return()=>{t=!1,a()}},[n,e.name]);let Ce=(0,Z.useMemo)(()=>({enabled:ne,...Y,..._h(ie)===void 0?{}:{requestsPerMinute:_h(ie)},...vh(ae)===void 0?{}:{minIntervalMs:vh(ae)},...vh(se)===void 0?{}:{maxConcurrentRequests:vh(se)},...Object.keys(le).length>0?{models:le}:{}}),[Y,se,ae,ne,le,ie]),we=!Se(e.name)&&Wp({adapter:d,baseUrl:p,authMode:_}),Te=we&&T!==(e.preserveResponsesReasoningContent===!0),Ee=Te||d.trim()!==e.adapter||p.trim()!==e.baseUrl||h.trim()!==(e.defaultModel??``)||_!==String(e.authMode??(e.keyOptional?`local`:`key`))||d.trim()===`anthropic`&&_===`key`&&y!==(e.apiKeyTransport??`x-api-key`)||x.trim()!==(e.note??``)||C!==(e.allowPrivateNetwork??!1)||D!==l||d.trim()===`cursor`&&j!==u,De=yh(Ce)!==yh(e.requestPacing),Oe=Ee||De;(0,Z.useEffect)(()=>(i?.(Oe),()=>i?.(!1)),[Oe,i]);let ke=(0,Z.useMemo)(()=>{let n=new Set(t);return h.trim()&&n.add(h.trim()),e.defaultModel&&n.add(e.defaultModel),[...n].sort((e,t)=>e.localeCompare(t))},[t,h,e.defaultModel]),Ae=(0,Z.useMemo)(()=>{let e=[...ph];return d&&!e.includes(d)&&e.unshift(d),e},[d]),je=Se(e.name),Me=ee===`ready`&&!!(W&&W.length>0),Ne=d.trim()===`anthropic`&&_===`key`,Pe=e.name===`openai`?Jp(e):`invalid`,Fe=Pe===`ready`||Pe===`disabled`,Ie=je&&ee!==`error`,Le=async()=>{if(!r)return I({ok:!1,text:o(`pws.updatesUnavailable`)}),!1;if(B)return!1;let t=Me?Up(W,K,p):p.trim();if(!d.trim()||!t)return I({ok:!1,text:o(`pws.adapterBaseRequired`)}),!1;P(!0),I(null);try{if(se.trim()!==``&&vh(se)===void 0)return I({ok:!1,text:o(`pws.pacingCapInvalid`)}),!1;if(Object.entries(Y.keys??{}).some(([e,t])=>!Number.isFinite(t)||t<=0||e!==`requestsPerMinute`&&!Number.isSafeInteger(t)||e===`requestsPerMinute`&&(t<1/60||t>6e4)||e===`minIntervalMs`&&t>36e5))return I({ok:!1,text:o(`pws.keyLimitInvalid`)}),!1;if(ne&&!Ce.requestsPerMinute&&!Ce.minIntervalMs&&!Ce.maxConcurrentRequests&&!Ce.models&&!Ce.keys&&Ce.keySelection!==`round-robin`)return I({ok:!1,text:o(`pws.pacingRuleRequired`)}),!1;let n=De&&!Ee,i=n?{requestPacing:Ce}:{adapter:d.trim(),baseUrl:t,defaultModel:h.trim(),authMode:_,note:x.trim(),allowPrivateNetwork:C,...De?{requestPacing:Ce}:{}};n||(c&&D!==(e.liveModels!==!1)&&(i.liveModels=D),Te&&(i.preserveResponsesReasoningContent=T),d.trim()===`cursor`&&j!==u&&(i.upstreamHttpVersion=j===`http1.1`?`http1.1`:null),Ne?i.apiKeyTransport=y:e.apiKeyTransport!==void 0&&(i.apiKeyTransport=``));let a=await r(e.name,i);return I(a.ok?{ok:!0,text:o(`pws.settingsSaved`)}:{ok:!1,text:a.error||o(`prov.saveFailed`)}),a.ok}finally{P(!1)}},Re=(0,Z.useRef)(Le);(0,Z.useEffect)(()=>{Re.current=Le}),(0,Z.useEffect)(()=>{if(a)return a(()=>Re.current()),()=>a(null)},[a]);let ze=async e=>{if(!(B||N||e===L)){if(!r){U({ok:!1,text:o(`pws.updatesUnavailable`)});return}V(!0),U(null);try{let t=await r(`openai`,{codexAccountMode:e});t.ok?(z(e),U({ok:!0,text:o(`pws.accountModeSaved`)})):U({ok:!1,text:t.error||o(`pws.accountModeFailed`)})}catch{U({ok:!1,text:o(`pws.accountModeFailed`)})}finally{V(!1)}}},Be=async(e,t)=>{if(await aa({message:o(`pws.accountModeConfirm`)})){await ze(e);return}t.value=L},Ve=()=>{f(e.adapter),m(e.baseUrl),g(e.defaultModel??``),v(s),b(e.apiKeyTransport??`x-api-key`),S(e.note??``),w(e.allowPrivateNetwork??!1),k(l),E(e.preserveResponsesReasoningContent===!0),M(u),I(null),J(e.requestPacing?.enabled===!0),X(gh(e.requestPacing?.requestsPerMinute)),re({keySelection:e.requestPacing?.keySelection,keys:e.requestPacing?.keys}),oe(gh(e.requestPacing?.minIntervalMs)),ce(gh(e.requestPacing?.maxConcurrentRequests)),ue({...e.requestPacing?.models??{}}),q(Hp(W,e.baseUrl))},He=(e,t)=>{switch(e){case`token-plan`:return o(`modal.endpoint.tokenPlan`);case`payg`:return o(`modal.endpoint.payAsYouGo`);case`custom`:return o(`modal.endpoint.custom`);default:return t}};return(0,Q.jsxs)(`div`,{className:`pwi-settings-form`,children:[(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsxs)(`span`,{className:`pwi-settings-label`,children:[(0,Q.jsx)(at,{style:{width:12,height:12}}),` `,o(`pws.providerId`)]}),(0,Q.jsx)(`input`,{className:`input`,value:e.name,readOnly:!0,disabled:!0})]}),(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:o(`modal.adapter`)}),je?(0,Q.jsx)(`input`,{className:`input`,value:d,readOnly:!0,disabled:!0}):(0,Q.jsx)(`select`,{className:`input`,value:d,onChange:e=>f(e.target.value),children:Ae.map(e=>(0,Q.jsx)(`option`,{value:e,children:e},e))})]}),(0,Q.jsx)(dh,{apiBase:n,providerName:e.name,savedAdapter:e.adapter,draftAdapter:d.trim(),refreshKey:`${e.baseUrl}|${e.authMode??``}`}),Me?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:o(`modal.endpoint`)}),(0,Q.jsx)(`select`,{className:`input`,value:K,onChange:e=>{let t=e.target.value;q(t),m(Vp(W,t,p))},children:W.map(e=>(0,Q.jsx)(`option`,{value:e.id,children:He(e.id,e.label)},e.id))})]}),K===`custom`&&(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:o(`modal.baseUrl`)}),(0,Q.jsx)(`input`,{className:`input`,value:p,onChange:e=>m(e.target.value),placeholder:o(`modal.baseUrlPlaceholder`)})]})]}):(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:o(`modal.baseUrl`)}),(0,Q.jsx)(`input`,{className:`input`,value:p,onChange:e=>m(e.target.value),readOnly:Ie,disabled:Ie})]}),d.trim()===`cursor`&&(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:o(`pws.cursorTransport`)}),(0,Q.jsxs)(`select`,{className:`input`,value:j,onChange:e=>M(e.target.value),children:[(0,Q.jsx)(`option`,{value:`http2`,children:o(`pws.cursorTransportHttp2`)}),(0,Q.jsx)(`option`,{value:`http1.1`,children:o(`pws.cursorTransportHttp1`)})]}),(0,Q.jsx)(`span`,{className:`pwi-settings-hint`,children:o(`pws.cursorTransportDesc`)})]}),(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:o(`pws.cell.defaultModel`)}),ke.length>0?(0,Q.jsxs)(`select`,{className:`input`,value:h,onChange:e=>g(e.target.value),children:[(0,Q.jsx)(`option`,{value:``,children:o(`pws.defaultModelNone`)}),ke.map(e=>(0,Q.jsx)(`option`,{value:e,children:e},e))]}):(0,Q.jsx)(`input`,{className:`input`,value:h,onChange:e=>g(e.target.value),placeholder:o(`pws.optionalPlaceholder`)})]}),(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:o(`pws.authMode`)}),je?(0,Q.jsx)(`input`,{className:`input`,value:R(e,o),readOnly:!0,disabled:!0}):(0,Q.jsxs)(`select`,{className:`input`,value:_,onChange:e=>v(e.target.value),children:[(0,Q.jsx)(`option`,{value:`key`,children:o(`modal.badge.apiKey`)}),(0,Q.jsx)(`option`,{value:`forward`,children:o(`pws.auth.chatgptPassthrough`)}),(0,Q.jsx)(`option`,{value:`oauth`,children:o(`modal.badge.oauth`)}),(0,Q.jsx)(`option`,{value:`local`,children:o(`modal.badge.local`)})]})]}),Fe&&(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:o(`codexAuth.accountModeTitle`)}),(0,Q.jsxs)(`select`,{className:`input`,value:L,disabled:B||N,onChange:e=>{let t=e.target.value;t!==L&&Be(t,e.currentTarget)},children:[(0,Q.jsx)(`option`,{value:`pool`,children:o(`codexAuth.accountModePool`)}),(0,Q.jsx)(`option`,{value:`direct`,children:o(`codexAuth.accountModeDirect`)})]}),(0,Q.jsx)(`span`,{className:`pwi-settings-hint`,children:o(L===`direct`?`codexAuth.accountModeDirectDesc`:`codexAuth.accountModePoolDesc`)}),B&&(0,Q.jsx)(`span`,{className:`muted text-label`,children:o(`pws.accountSwitching`)}),H&&(0,Q.jsx)(`span`,{role:H.ok?`status`:`alert`,className:H.ok?`pwi-settings-mode-msg pwi-settings-mode-msg--ok`:`pwi-settings-mode-msg pwi-settings-mode-msg--err`,children:H.text})]}),Ne&&(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:o(`modal.apiKeyTransport`)}),(0,Q.jsxs)(`select`,{className:`input`,value:y,onChange:e=>b(e.target.value),children:[(0,Q.jsx)(`option`,{value:`x-api-key`,children:o(`modal.apiKeyTransportNative`)}),(0,Q.jsx)(`option`,{value:`bearer`,children:o(`modal.apiKeyTransportBearer`)})]})]}),(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:o(`pws.note`)}),(0,Q.jsx)(`textarea`,{className:`input pwi-settings-textarea`,value:x,onChange:e=>S(e.target.value),rows:2})]}),(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,style:{flexDirection:`row`,alignItems:`center`,gap:8},children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:C,onChange:e=>w(e.target.checked)}),(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:o(`pws.allowPrivateNetwork`)})]}),we&&(0,Q.jsx)(nm,{checked:T,onChange:E}),(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,style:{flexDirection:`row`,alignItems:`flex-start`,gap:8},children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:D,disabled:!c,onChange:e=>k(e.target.checked)}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:o(`pws.liveModels`)}),(0,Q.jsx)(`span`,{className:`muted text-label`,style:{display:`block`,marginTop:2},children:o(`pws.liveModelsDesc`)})]})]}),(0,Q.jsxs)(`section`,{className:`pwi-pacing-card`,"aria-labelledby":`pwi-pacing-title`,children:[(0,Q.jsxs)(`div`,{className:`pwi-pacing-head`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{id:`pwi-pacing-title`,children:o(`pws.pacingTitle`)}),(0,Q.jsx)(`p`,{children:o(`pws.pacingDesc`)})]}),(0,Q.jsxs)(`label`,{className:`pwi-pacing-toggle`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:ne,onChange:e=>J(e.target.checked)}),` `,o(`pws.pacingEnabled`)]})]}),(0,Q.jsxs)(`div`,{className:`pwi-pacing-grid`,children:[(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:o(`pws.pacingRpm`)}),(0,Q.jsx)(`input`,{className:`input`,type:`number`,min:`0.016667`,step:`any`,value:ie,onChange:e=>X(e.target.value),placeholder:`38`})]}),(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:o(`pws.pacingDelay`)}),(0,Q.jsx)(`input`,{className:`input`,type:`number`,min:`1`,step:`1`,value:ae,onChange:e=>oe(e.target.value),placeholder:`1600`})]}),(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:o(`pws.pacingConcurrency`)}),(0,Q.jsx)(`input`,{className:`input`,type:`number`,min:`1`,step:`1`,value:se,onChange:e=>ce(e.target.value),placeholder:`8`})]})]}),(0,Q.jsx)(`p`,{className:`pwi-settings-hint`,children:o(`pws.pacingSlowerWins`)}),(0,Q.jsxs)(`div`,{className:`pwi-pacing-status`,"aria-live":`polite`,children:[(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`strong`,{children:be?.queued??0}),` `,o(`pws.pacingQueued`)]}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsxs)(`strong`,{children:[be?.nextSlotInMs??0,` ms`]}),` `,o(`pws.pacingNextSlot`)]}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`strong`,{children:be?.lastModelId??o(`pws.pacingNone`)}),` `,o(`pws.pacingLastModel`)]})]}),_!==`oauth`&&_!==`forward`&&(0,Q.jsx)(fh,{value:Y,onChange:re,status:be?.keys}),(0,Q.jsx)(`h4`,{children:o(`pws.pacingModelOverrides`)}),(0,Q.jsxs)(`div`,{className:`pwi-pacing-grid pwi-pacing-grid--model`,children:[(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:o(`pws.pacingModel`)}),(0,Q.jsx)(`input`,{className:`input`,list:`pacing-models-${e.name}`,value:de,onChange:e=>fe(e.target.value)}),(0,Q.jsx)(`datalist`,{id:`pacing-models-${e.name}`,children:t.map(e=>(0,Q.jsx)(`option`,{value:e},e))})]}),(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:o(`pws.pacingRpm`)}),(0,Q.jsx)(`input`,{className:`input`,type:`number`,min:`0.016667`,step:`any`,value:pe,onChange:e=>me(e.target.value)})]}),(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:o(`pws.pacingDelay`)}),(0,Q.jsx)(`input`,{className:`input`,type:`number`,min:`1`,step:`1`,value:he,onChange:e=>_e(e.target.value)})]}),(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:o(`pws.pacingConcurrency`)}),(0,Q.jsx)(`input`,{className:`input`,type:`number`,min:`1`,step:`1`,value:ve,onChange:e=>ye(e.target.value)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{let e=de.trim(),t=_h(pe),n=vh(he),r=vh(ve);if(ve.trim()!==``&&r===void 0){I({ok:!1,text:o(`pws.pacingCapInvalid`)});return}!e||t===void 0&&n===void 0&&r===void 0||(ue(i=>({...i,[e]:{...t===void 0?{}:{requestsPerMinute:t},...n===void 0?{}:{minIntervalMs:n},...r===void 0?{}:{maxConcurrentRequests:r}}})),fe(``),me(``),_e(``),ye(``))},children:o(`pws.pacingAdd`)})]}),Object.entries(le).length>0&&(0,Q.jsx)(`div`,{className:`pwi-pacing-overrides`,children:Object.entries(le).map(([e,t])=>(0,Q.jsxs)(`div`,{className:`pwi-pacing-row`,children:[(0,Q.jsx)(`code`,{children:e}),(0,Q.jsx)(`span`,{children:[t.requestsPerMinute===void 0?void 0:`${t.requestsPerMinute} ${o(`pws.pacingRpmUnit`)}`,t.minIntervalMs===void 0?void 0:`${t.minIntervalMs} ms`,t.maxConcurrentRequests===void 0?void 0:`${t.maxConcurrentRequests} ${o(`pws.pacingCapUnit`)}`].filter(e=>e!==void 0).join(` · `)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>ue(t=>Object.fromEntries(Object.entries(t).filter(([t])=>t!==e))),"aria-label":o(`pws.pacingRemoveModel`,{model:e}),children:o(`pws.pacingRemove`)})]},e))})]}),Oe&&(0,Q.jsxs)(`div`,{className:`pwi-settings-sticky-bar`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:o(`pws.settingsUnsavedBar`)}),(0,Q.jsxs)(`div`,{className:`pwi-settings-sticky-bar-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:Ve,disabled:N,children:o(`pws.discardSettings`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:()=>void Le(),disabled:N||B,children:o(N?`pws.saving`:`pws.saveSettings`)})]})]}),F&&(0,Q.jsx)(`div`,{role:F.ok?`status`:`alert`,className:F.ok?`pwi-settings-msg pwi-settings-msg--ok`:`pwi-settings-msg pwi-settings-msg--err`,children:F.text})]})}function xh({providerName:e,defaultProviderName:t,onConfirm:n,onCancel:r}){let i=O();return(0,Q.jsx)(`div`,{className:`dialog-backdrop`,onClick:r,children:(0,Q.jsxs)(`div`,{className:`dialog`,role:`alertdialog`,"aria-label":i(`pws.removeConfirmTitle`),onClick:e=>e.stopPropagation(),children:[(0,Q.jsx)(`h3`,{children:i(`pws.removeConfirmTitle`)}),(0,Q.jsx)(`p`,{children:t?i(`pws.removeDefaultConfirmBody`,{name:e,defaultProvider:t}):i(`pws.removeConfirmBody`,{name:e})}),(0,Q.jsxs)(`div`,{className:`dialog-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:r,children:i(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-danger`,onClick:n,children:i(`pws.removeConfirm`)})]})]})})}function Sh({onSave:e,onDiscard:t,onCancel:n,saving:r=!1}){let i=O();return(0,Q.jsx)(`div`,{className:`dialog-backdrop`,onClick:n,children:(0,Q.jsxs)(`div`,{className:`dialog`,role:`alertdialog`,"aria-label":i(`pws.unsavedLeaveTitle`),onClick:e=>e.stopPropagation(),children:[(0,Q.jsx)(`h3`,{children:i(`pws.unsavedLeaveTitle`)}),(0,Q.jsx)(`p`,{children:i(`pws.unsavedLeaveBody`)}),(0,Q.jsxs)(`div`,{className:`dialog-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:n,children:i(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:t,children:i(`pws.discardSettings`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:e,disabled:r,children:i(r?`pws.saving`:`pws.saveSettings`)})]})]})})}function Ch({item:e,preset:t,usageTotals:n,modelUsage:r,quotaReport:i,availableModels:a,hasLiveModels:o,selectedModels:s,modelRows:c,modelRevision:l,modelRowsReady:u,onOpenModels:d,onCreateJevAuto:f,modelsLoading:p,modelsLoadFailed:m,onRetryModels:h,oauthEmail:g,onDeselect:_,apiBase:v,oauth:y,accounts:b,accountLoadState:x,accountsFocusToken:S=0,accountsFocusProvider:C=null,settingsFocusToken:w=0,settingsFocusProvider:T=null,switchingAccountId:E,pausingAccountId:D,keys:k,busyProvider:A,loginHint:j,authHandlers:M,onCodexActiveNeedsReauthChange:N,codexController:P,onUpdateProvider:I,isDefault:L,onRemoveProvider:R,onSetDisabled:z,onSetDefault:B,onRefreshQuota:V}){let U=O(),[W,ee]=(0,Z.useState)(`overview`),[te,K]=(0,Z.useState)(!1),[q,ne]=(0,Z.useState)(null),[J,Y]=(0,Z.useState)(!1),re=(0,Z.useRef)(null),[ie,X]=(0,Z.useState)(0),[ae,oe]=(0,Z.useState)(0),se=(0,Z.useCallback)(e=>{re.current=e},[]),ce=e.disabled===!0,le=(0,Z.useMemo)(()=>G(e),[e]),ue=(0,Z.useMemo)(()=>H(e),[e]),de=(0,Z.useMemo)(()=>Ks(e),[e]),fe=de===`oauth-accounts`?b?.find(e=>e.active):de===`api-keys`?k?.find(e=>e.active):void 0,pe=C===e.name?S:0,he=JSON.stringify([P?.activeId??``,b?.find(e=>e.active)?.id??``,k?.find(e=>e.active)?.id??``,y?.loggedIn===void 0?``:String(y.loggedIn),y?.needsReauth===void 0?``:String(y.needsReauth),g??``]),ge=(0,Z.useMemo)(()=>[{id:`overview`,label:U(`pws.tab.overview`)},{id:`models`,label:U(`pws.tab.models`)},{id:`usage`,label:U(`pws.tab.usage`)},...de?[{id:`accounts`,label:U(de===`api-keys`?`pws.apiKeys`:`pws.tab.accounts`)}]:[],{id:`settings`,label:U(`pws.tab.settings`)}],[de,U]),_e=(0,Z.useCallback)(e=>{if(te&&W===`settings`&&e!==`settings`){ne(e);return}ee(e)},[W,te]);pe!==ie&&!(pe&&!de)&&(X(pe),pe&&de&&(te&&W===`settings`?ne(`accounts`):ee(`accounts`)));let ve=T===e.name?w:0;ve!==ae&&(oe(ve),ve&&ee(`settings`));let ye=(0,Z.useCallback)(()=>{if(te&&W===`settings`){ne(`deselect`);return}_()},[te,W,_]),xe=(0,Z.useCallback)((e,t)=>{let n;if(e.key===`ArrowRight`)n=(t+1)%ge.length;else if(e.key===`ArrowLeft`)n=(t-1+ge.length)%ge.length;else if(e.key===`Home`)n=0;else if(e.key===`End`)n=ge.length-1;else return;e.preventDefault(),_e(ge[n].id),e.currentTarget.parentElement?.querySelectorAll(`[role="tab"]`)[n]?.focus()},[_e,ge]),Se=`pws-tab-${W}`,Ce=`pws-panel-${W}`;return(0,Q.jsxs)(`div`,{className:`pws-detail`,children:[(0,Q.jsx)(`div`,{className:`pws-detail-head`,children:(0,Q.jsxs)(`button`,{type:`button`,className:`pws-detail-back-link`,onClick:ye,children:[(0,Q.jsx)(Ke,{className:`pws-detail-back-chevron`,"aria-hidden":`true`}),U(`pws.allProviders`)]})}),(0,Q.jsxs)(`div`,{className:`pws-detail-head-main`,children:[(0,Q.jsx)(me,{name:e.name,adapter:e.adapter,baseUrl:e.baseUrl,cls:`pws-detail-icon`}),(0,Q.jsx)(`div`,{className:`pws-detail-title-wrap`,children:(0,Q.jsxs)(`h2`,{className:`pws-detail-title`,children:[be(e.name,U),ue&&(0,Q.jsx)(`span`,{className:`pwi-rail-badge pwi-rail-badge--local`,children:U(`modal.badge.local`)}),!ue&&le&&(0,Q.jsx)(`span`,{className:`pwi-rail-badge pwi-rail-badge--free`,children:U(`modal.badge.free`)})]})}),(0,Q.jsxs)(`div`,{className:`pws-detail-actions`,children:[!L&&!ce&&B&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>B(e.name),children:U(`prov.setDefault`)}),R&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm btn-icon-only`,onClick:()=>R(e.name),"aria-label":U(`pws.removeConfirmTitle`),title:U(`pws.removeConfirmTitle`),children:(0,Q.jsx)(F,{style:{width:15,height:15},"aria-hidden":`true`})}),z&&(0,Q.jsxs)(`div`,{className:`pws-detail-toggle`,children:[(0,Q.jsx)(`span`,{className:`pws-detail-toggle-label`,children:U(`pws.enabledLabel`)}),(0,Q.jsx)(on,{on:!ce,onClick:()=>z(e.name,!ce),disabled:L,label:U(`pws.enabledLabel`)})]})]})]}),(0,Q.jsx)(`div`,{className:`pws-detail-tabs`,role:`tablist`,children:ge.map((e,t)=>(0,Q.jsx)(`button`,{type:`button`,role:`tab`,id:`pws-tab-${e.id}`,"aria-controls":`pws-panel-${e.id}`,"aria-selected":W===e.id,tabIndex:W===e.id?0:-1,className:`pws-detail-tab${W===e.id?` pws-detail-tab--active`:``}`,onClick:()=>_e(e.id),onKeyDown:e=>xe(e,t),children:e.label},e.id))}),(0,Q.jsxs)(`div`,{className:`pws-detail-panel`,role:`tabpanel`,id:Ce,"aria-labelledby":Se,tabIndex:0,children:[W===`overview`&&(0,Q.jsx)(pc,{item:e,preset:t,apiBase:v,connectionIdentity:he,usageTotals:n,quotaReport:i,currentQuotaReading:fe,onRefreshQuota:V,oauthEmail:g,oauth:y,onEditSettings:()=>_e(`settings`),onViewUsage:()=>_e(`usage`),onCreateJevAuto:f,onUpdateProvider:I,reauthBusy:A===e.name,onCancelLogin:M?.onCancelLogin?()=>void M.onCancelLogin?.(e.name):void 0,onReauthenticate:e.activeNeedsReauth?()=>{if(e.authMode===`oauth`){let t=b??[],n=t.find(e=>e.active&&e.needsReauth)??t.find(e=>e.needsReauth);M?.onReauth(e.name,n?.id);return}_e(`accounts`)}:void 0}),W===`models`&&(0,Q.jsx)(Uc,{item:e,apiBase:v,availableModels:a,hasLiveModels:o,selectedModels:s,modelRows:c,modelRevision:l,modelRowsReady:u,onOpenModels:d,modelsLoading:p,modelsLoadFailed:m,needsReauth:(b??[]).some(e=>e.active&&e.needsReauth)||y?.needsReauth===!0,onRetryModels:h,onOpenAccounts:de?()=>_e(`accounts`):void 0},e.name),W===`usage`&&(0,Q.jsx)(Gc,{item:e,usageTotals:n,quotaReport:i,currentQuotaReading:fe,quotaIdentity:he,modelUsage:r,...V?{onRefreshQuota:V}:{}}),W===`accounts`&&(0,Q.jsx)(Bp,{item:e,apiBase:v,oauth:y,accounts:b,keys:k,accountLoadState:x,switchingAccountId:E,pausingAccountId:D,busy:A===e.name,loginHint:j,authHandlers:M,onUpdateProvider:I,onCodexActiveNeedsReauthChange:N,codexController:P}),W===`settings`&&(0,Q.jsx)(bh,{item:e,apiBase:v,availableModels:a,onUpdateProvider:I,onDirtyChange:K,onRegisterSave:se},e.name)]}),q&&(0,Q.jsx)(Sh,{saving:J,onCancel:()=>{J||ne(null)},onDiscard:()=>{if(J)return;let e=q;ne(null),K(!1),e===`deselect`?_():ee(e)},onSave:()=>{(async()=>{if(!J){Y(!0);try{if(!(await re.current?.()??!1))return;let e=q;ne(null),K(!1),e===`deselect`?_():e&&ee(e)}finally{Y(!1)}}})()}})]})}var wh=new Set([`anthropic`,`anthropic2`,`google-antigravity`,`meta-muse`]),Th=new Set([`github-copilot`,`cursor`,`zed`]);function Eh(e){let t=e.trim().toLowerCase();return wh.has(t)?`high`:Th.has(t)?`elevated`:null}function Dh(e){switch(e){case`high`:return`oauthTos.highTitle`;case`elevated`:return`oauthTos.elevatedTitle`;default:return e}}function Oh(e){switch(e){case`high`:return`oauthTos.highBody`;case`elevated`:return`oauthTos.elevatedBody`;default:return e}}function kh(e,t){let n=e.trim().toLowerCase();return n===`anthropic`||n===`anthropic2`?{title:`oauthTos.anthropicTitle`,body:`oauthTos.anthropicBody`,conditions:`oauthTos.anthropicConditions`,saferPath:`oauthTos.anthropicSaferPath`,acknowledge:`oauthTos.anthropicAcknowledge`,continue:`oauthTos.anthropicContinue`}:{title:Dh(t),body:Oh(t),conditions:null,saferPath:n===`google-antigravity`?`oauthTos.saferPath`:null,acknowledge:`oauthTos.acknowledge`,continue:`oauthTos.continue`}}function Ah(e,t){return t===void 0?e:e.map(e=>({...e,active:e.id===t}))}function jh(e,t){let n=new Map(t.map(e=>[e.id,e]));return Ph(e,t,!1).map(e=>Nh(e)?{...e,quotaPending:n.get(e.id)?.quotaPending??!1,quotaUnavailable:n.get(e.id)?.quotaMode===e.quotaMode?n.get(e.id)?.quotaUnavailable??!1:!1,quotaFailure:e.quotaMode===`probe`&&n.get(e.id)?.quotaMode===e.quotaMode&&n.get(e.id)?.quotaUnavailable?jr(n.get(e.id)?.quotaFailure):void 0}:e)}function Mh(e,t){let n=new Map(t.map(e=>[e.id,e]));return e.map(e=>{let t=n.get(e.id);if(!t||t.quotaMode!==e.quotaMode)return e;let r=Ph([t],[e],!0)[0];return{...e,quota:r.quota,quotaPending:r.quotaPending,quotaUnavailable:r.quotaUnavailable,quotaFailure:r.quotaFailure}})}var Nh=e=>e.quotaMode===`probe`||e.quotaMode===`passive`;function Ph(e,t,n){let r=new Map(t.map(e=>[e.id,e]));return e.map(e=>{let t=Nh(e);if(!t&&e.quotaMode!==`unsupported`)return{...e,quotaMode:void 0,quotaPending:void 0,quotaFailure:void 0};let i=t&&(!n||e.quotaUnavailable===!0);return{...e,quota:e.quotaMode===`unsupported`?null:e.quota===void 0?i?r.get(e.id)?.quota:void 0:e.quota,quotaPending:!n&&e.quotaMode===`probe`,quotaUnavailable:n?e.quotaUnavailable===!0:!1,quotaFailure:n&&e.quotaMode===`probe`&&e.quotaUnavailable===!0?jr(e.quotaFailure):void 0}})}function Fh(e,t){let n=t&&new Map(t.map(e=>[e.id,e.quotaMode]));return e.map(e=>Nh(e)&&(!n||n.get(e.id)===e.quotaMode)?{...e,quotaUnavailable:!0,quotaPending:!1,quotaFailure:void 0}:e)}function Ih(e,t=!1){let n={};for(let[t,r]of Object.entries(e))nl(r.accounts.find(e=>e.active)??r.accounts.find(e=>e.id===r.activeAccountId))&&(n[t]=!0);return t&&(n.openai=!0),n}function Lh(e){let{apiBase:t,t:n,config:r,aliveRef:i,notify:a,fetchConfig:o,fetchOauth:s,fetchProviderQuotas:c,codexActiveNeedsReauth:l}=e,[u,d]=(0,Z.useState)({}),[f,p]=(0,Z.useState)({}),[m,h]=(0,Z.useState)({}),g=Object.values(m)[0]??null,_=e=>h(e?{[e.provider]:e}:{}),[v,y]=(0,Z.useState)({}),b=Object.values(v)[0]??null,[x,S]=(0,Z.useState)({}),[C,w]=(0,Z.useState)({}),[T,E]=(0,Z.useState)(null),[D,O]=(0,Z.useState)(``),k=(0,Z.useRef)({}),j=(0,Z.useRef)({}),M=(0,Z.useRef)({}),N=(0,Z.useRef)(new Map),P=(0,Z.useRef)(new Set),F=(0,Z.useRef)(new Map),I=(0,Z.useRef)(new Map),L=(0,Z.useRef)(!0),R=(0,Z.useRef)(t);(0,Z.useEffect)(()=>{let e=k.current,n=P.current,r=j.current,i=M.current,a=N.current,o=F.current,s=I.current;L.current=!0;let c=R.current!==t;return R.current=t,c&&Promise.resolve().then(()=>{!L.current||R.current!==t||(d({}),y({}),h({}),w({}),p({}))}),()=>{L.current=!1;for(let t of Object.keys(e))e[t]+=1;for(let e of Object.keys(r))r[e]+=1;for(let e of Object.keys(i))i[e]+=1;a.clear(),o.clear(),s.clear();for(let e of n)e.abort();n.clear()}},[t]);let z=(0,Z.useRef)(null),B=(0,Z.useRef)(null),V=(0,Z.useCallback)(async(e,t)=>{let n=A(2e4),r=()=>n.controller.abort();t?.aborted&&r(),t?.addEventListener(`abort`,r,{once:!0}),P.current.add(n.controller);try{let t=await fetch(e,{signal:n.signal});if(!t.ok)throw Error(String(t.status));let r=await t.json();if(n.signal.aborted)throw Error(`Quota roster deadline exceeded`);return r}finally{n.clear(),t?.removeEventListener(`abort`,r),P.current.delete(n.controller)}},[]),H=(0,Z.useCallback)(async(e,n=!1)=>{if(!i.current||!L.current||R.current!==t)return!1;let r=[...new Set(e)];return p(e=>{let t={...e};for(let e of r)t[e]=`loading`;return t}),(await Promise.all(r.map(async e=>{let r=`oauth:${e}`,a=(k.current[r]??0)+1;k.current[r]=a;let o=(j.current[r]??0)+1;j.current[r]=o;let s=()=>i.current&&L.current&&R.current===t&&k.current[r]===a,c=()=>s()&&j.current[r]===o,l=`${t}/api/oauth/accounts?provider=${encodeURIComponent(e)}`;try{let a=await V(l);if(!Array.isArray(a.accounts))throw Error(`Invalid account roster`);if(!s())return!1;let o=Ah(a.accounts,a.activeAccountId);if(d(t=>c()?{...t,[e]:{activeAccountId:a.activeAccountId??null,accounts:Ph(o,t[e]?.accounts??[],!1)}}:t),p(t=>c()?{...t,[e]:`ready`}:t),!o.some(Nh))return!0;let u=async()=>{let s=(M.current[r]??0)+1;M.current[r]=s;let u=()=>i.current&&L.current&&R.current===t&&M.current[r]===s;try{let t=await V(`${l}&quota=1${n?`&refresh=1`:``}`);if(!Array.isArray(t.accounts))throw Error(`Invalid account quota roster`);if(!u())return!1;let r=Ah(t.accounts,t.activeAccountId);return d(n=>u()?c()?{...n,[e]:{activeAccountId:t.activeAccountId===void 0?a.activeAccountId??null:t.activeAccountId,accounts:Ph(r,n[e]?.accounts??[],!0)}}:{...n,[e]:{...n[e],accounts:Mh(n[e]?.accounts??[],r)}}:n),!r.some(e=>e.quotaUnavailable===!0)}catch{return u()&&d(t=>u()&&t[e]?{...t,[e]:{...t[e],accounts:Fh(t[e].accounts,o)}}:t),!1}};return n?await u():(u(),!0)}catch{return c()?(p(t=>c()?{...t,[e]:`error`}:t),d(t=>c()&&t[e]?{...t,[e]:{...t[e],accounts:Fh(t[e].accounts)}}:t),!1):!1}}))).every(Boolean)},[i,t,V]),U=(0,Z.useCallback)(async(e,n=!1)=>!i.current||!L.current||R.current!==t?!1:(await Promise.all([...new Set(e)].map(async e=>{let r=`key:${e}`,a=(k.current[r]??0)+1;k.current[r]=a;let o=(j.current[r]??0)+1;j.current[r]=o;let s=()=>i.current&&L.current&&R.current===t&&k.current[r]===a,c=()=>s()&&j.current[r]===o,l=`${t}/api/providers/keys?name=${encodeURIComponent(e)}`,u=()=>(c()&&w(t=>c()?{...t,[e]:Fh(t[e]??[])}:t),!1);try{let a=await V(l);if(!Array.isArray(a.keys))throw Error(`Invalid key roster`);if(!s())return!1;let o=Ah(a.keys,a.activeId);if(w(t=>c()?{...t,[e]:Ph(o,t[e]??[],!1)}:t),!o.some(Nh))return!0;let u=async()=>{let a=(M.current[r]??0)+1;M.current[r]=a;let s=()=>i.current&&L.current&&R.current===t&&M.current[r]===a;try{let t=await V(`${l}&quota=1${n?`&refresh=1`:``}`);if(!Array.isArray(t.keys))throw Error(`Invalid key quota roster`);if(!s())return!1;let r=Ah(t.keys,t.activeId);return w(t=>s()?{...t,[e]:c()?Ph(r,t[e]??[],!0):Mh(t[e]??[],r)}:t),!r.some(e=>e.quotaUnavailable===!0)}catch{return s()&&w(t=>s()?{...t,[e]:Fh(t[e]??[],o)}:t),!1}};return n?await u():(u(),!0)}catch{return u()}}))).every(Boolean),[t,i,V]),W=(0,Z.useCallback)(async(e,n)=>{if(!i.current||!L.current||R.current!==t||n?.aborted)return!1;let a=e?[e]:Object.entries(r?.providers??{}).flatMap(([e,t])=>t.authMode===`oauth`&&e!==`openai`?[{provider:e,kind:`oauth`}]:t.hasApiKey&&t.authMode!==`oauth`&&t.authMode!==`forward`?[{provider:e,kind:`api-key`}]:[]);return(await Promise.all(a.map(async({provider:e,kind:r})=>{let a=`${r===`oauth`?`oauth`:`key`}:${e}`;if(N.current.has(a))return!1;let o=(j.current[a]??0)+1;j.current[a]=o;let s=()=>i.current&&L.current&&R.current===t&&!n?.aborted&&j.current[a]===o&&!N.current.has(a);try{if(r===`oauth`){let r=await V(`${t}/api/oauth/accounts?provider=${encodeURIComponent(e)}`,n);if(!Array.isArray(r.accounts)||!s())return!1;let i=Ah(r.accounts,r.activeAccountId);d(t=>s()?{...t,[e]:{activeAccountId:r.activeAccountId===void 0?i.find(e=>e.active)?.id??null:r.activeAccountId,accounts:jh(i,t[e]?.accounts??[])}}:t),p(t=>s()?{...t,[e]:`ready`}:t)}else{let r=await V(`${t}/api/providers/keys?name=${encodeURIComponent(e)}`,n);if(!Array.isArray(r.keys)||!s())return!1;let i=Ah(r.keys,r.activeId);w(t=>s()?{...t,[e]:jh(i,t[e]??[])}:t)}return!0}catch{return!1}}))).every(Boolean)},[i,t,r,V]),G=(e,t)=>{let n=`${t===`oauth`?`oauth`:`key`}:${e}`;return k.current[n]=(k.current[n]??0)+1,j.current[n]=(j.current[n]??0)+1,n},ee=async(e,n)=>!i.current||!L.current||R.current!==t?!1:(G(e,`oauth`),d(t=>{let r=t[e];return r?{...t,[e]:{...r,accounts:r.accounts.map(e=>({...e,autoSwitchThreshold:n,effectiveAutoSwitchThreshold:typeof e.autoSwitchThresholdOverride==`number`?e.autoSwitchThresholdOverride:n}))}}:t}),H([e])),te=async(e,r)=>{if(r.active||r.needsReauth||r.paused||I.current.has(e)||F.current.has(e)||N.current.has(`oauth:${e}`))return;let o={provider:e,accountId:r.id};I.current.set(e,o),h(t=>({...t,[e]:o}));let l=G(e,`oauth`),f=Symbol();N.current.set(l,f);let p=()=>i.current&&L.current&&R.current===t&&N.current.get(l)===f,m=qs(u[e]?.accounts??[r],r,n);try{let i=await fetch(`${t}/api/oauth/accounts/active`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:e,accountId:r.id})});if(!p())return;if(!i.ok){a(n(`prov.accountSwitchFail`),!1);return}let o=await i.json().catch(()=>({}));if(!p())return;G(e,`oauth`);let u=o.activeAccountId===void 0?r.id:o.activeAccountId;d(t=>t[e]?{...t,[e]:{...t[e],activeAccountId:u,accounts:Ah(t[e].accounts,u)}}:t),N.current.delete(l);let f=await W({provider:e,kind:`oauth`});if(await Promise.all([s(),c(!0)]),!f){a(n(`pws.accountsLoadFailed`),!1);return}a(n(`prov.accountSwitched`,{email:m}),!0)}catch{p()&&a(n(`prov.accountSwitchFail`),!1)}finally{p()&&(G(e,`oauth`),N.current.delete(l),W({provider:e,kind:`oauth`})),I.current.get(e)===o&&(I.current.delete(e),i.current&&h(t=>{let n={...t};return delete n[e],n}))}},K=async(e,r,o)=>{let s=`oauth:${e}`;if(I.current.has(e)||F.current.has(e)||N.current.has(s))return!1;let c=G(e,`oauth`),l=Symbol();N.current.set(c,l);let f=()=>i.current&&L.current&&R.current===t&&N.current.get(c)===l,p=qs(u[e]?.accounts??[r],r,n);try{let n=A(2e4);P.current.add(n.controller);let i;try{let a=await fetch(`${t}/api/oauth/accounts/auto-switch`,{method:`PUT`,headers:{"Content-Type":`application/json`},signal:n.signal,body:JSON.stringify({provider:e,accountId:r.id,threshold:o})});if(!a.ok)throw Error(`account threshold write failed`);if(i=await a.json(),n.signal.aborted)throw Error(`account threshold deadline exceeded`)}finally{n.clear(),P.current.delete(n.controller)}let a=e=>typeof e==`number`&&Number.isInteger(e)&&e>=0&&e<=100;if(!i||i.autoSwitchThresholdOverride!==null&&!a(i.autoSwitchThresholdOverride)||!a(i.autoSwitchThreshold)||!a(i.effectiveAutoSwitchThreshold))throw Error(`invalid threshold response`);return f()?(G(e,`oauth`),d(t=>{let n=t[e];return n?{...t,[e]:{...n,accounts:n.accounts.map(e=>e.id===r.id?{...e,autoSwitchThresholdOverride:i.autoSwitchThresholdOverride,autoSwitchThreshold:i.autoSwitchThreshold,effectiveAutoSwitchThreshold:i.effectiveAutoSwitchThreshold}:e)}}:t}),!0):!1}catch{return f()&&a(n(`accountPool.autoSwitchUpdateFailed`,{email:p}),!1),!1}finally{f()&&(G(e,`oauth`),N.current.delete(c),W({provider:e,kind:`oauth`}))}},q=async(e,r,o)=>{if(I.current.has(e)||F.current.has(e)||N.current.has(`oauth:${e}`))return;let l={provider:e,accountId:r.id};F.current.set(e,l),y(t=>({...t,[e]:{...l,paused:o}}));let f=G(e,`oauth`),p=Symbol();N.current.set(f,p);let m=()=>i.current&&L.current&&R.current===t&&N.current.get(f)===p,h=qs(u[e]?.accounts??[r],r,n),g;try{let i=await fetch(`${t}/api/oauth/accounts/pause`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:e,accountId:r.id,paused:o})});if(!m())return;if(!i.ok){a(n(o?`codexAuth.pauseFailed`:`codexAuth.resumeFailed`,{email:h}),!1);return}if(g=await i.json().catch(()=>({})),!m())return;G(e,`oauth`);let s=g.activeAccountId===void 0?u[e]?.activeAccountId??null:g.activeAccountId;d(t=>{let n=t[e];if(!n)return t;let i=n.accounts.map(e=>e.id===r.id?{...e,paused:o}:e);return{...t,[e]:{activeAccountId:s,accounts:Ah(i,s)}}}),N.current.delete(f)}catch{m()&&a(n(o?`codexAuth.pauseFailed`:`codexAuth.resumeFailed`,{email:h}),!1);return}finally{m()&&(G(e,`oauth`),N.current.delete(f),W({provider:e,kind:`oauth`})),F.current.get(e)===l&&(F.current.delete(e),i.current&&y(t=>{let n={...t};return delete n[e],n}))}if(!(!i.current||!L.current||R.current!==t)){a(n(o?`codexAuth.pauseSucceeded`:`codexAuth.resumeSucceeded`,{email:h}),!0);try{let t=await W({provider:e,kind:`oauth`});g.activeAccountChanged&&await Promise.all([s(),c(!0)]),t||a(n(`pws.accountsLoadFailed`),!1)}catch{i.current&&L.current&&a(n(`pws.accountsLoadFailed`),!1)}}},ne=async(e,r)=>{if(r.active||N.current.has(`key:${e}`))return;let o=G(e,`api-key`),s=Symbol();N.current.set(o,s);let l=()=>i.current&&L.current&&R.current===t&&N.current.get(o)===s;try{let i=await fetch(`${t}/api/providers/keys/active`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e,id:r.id})});if(!l())return;if(!i.ok){let e=await i.json().catch(()=>({}));l()&&a(e.error||n(`prov.keySwitchFail`),!1);return}let o=await i.json().catch(()=>({}));if(!l())return;G(e,`api-key`);let s=o.activeId===void 0?r.id:o.activeId;w(t=>t[e]?{...t,[e]:Ah(t[e],s)}:t),a(n(`prov.keySwitched`,{key:r.label??r.masked}),!0),c(!0)}catch{l()&&a(n(`prov.keySwitchFail`),!1)}finally{l()&&(G(e,`api-key`),N.current.delete(o),W({provider:e,kind:`api-key`}))}},J=async(e,r)=>{await aa({message:n(`prov.keyRemoveConfirm`,{key:r.label??r.masked}),confirmLabel:n(`common.remove`),tone:`danger`})&&(await fetch(`${t}/api/providers/keys?name=${encodeURIComponent(e)}&id=${encodeURIComponent(r.id)}`,{method:`DELETE`})).ok&&(a(n(`prov.keyRemoved`,{key:r.label??r.masked}),!0),U(Object.keys(C)),o(),c(!0))},Y=async(e,r)=>{let i=r.trim();if(!i)return!1;try{let r=await fetch(`${t}/api/providers/keys`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e,key:i})});if(!r.ok){let e=await r.json().catch(()=>({}));return a(e.error||n(`prov.keyAddFail`),!1),!1}return a(n(`prov.keyAdded`,{name:e}),!0),E(null),await Promise.all([U(Object.keys(C).includes(e)?Object.keys(C):[...Object.keys(C),e]),o(),c(!0)]),!0}catch{return a(n(`prov.keyAddFail`),!1),!1}},re=async e=>{await Y(e,D)&&O(``)},ie=async(e,r,i,o)=>{let s=await oa({message:n(`prov.aliasPrompt`),initialValue:o??``,maxLength:80,validate:e=>fl(e,n)});if(s===null)return;let c=s.trim(),l=await fetch(r===`oauth`?`${t}/api/oauth/accounts/alias`:`${t}/api/providers/keys/alias`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(r===`oauth`?{provider:e,accountId:i,alias:c}:{name:e,id:i,alias:c})});if(!l.ok){let e=await l.json().catch(()=>({}));a(e.error||n(`prov.aliasSaveFailed`),!1);return}r===`oauth`?await H([e]):await U(Object.keys(C).includes(e)?Object.keys(C):[...Object.keys(C),e]),a(n(`prov.aliasSaved`),!0)},X=async(e,r)=>{let i=qs(u[e]?.accounts??[r],r,n);if(await aa({message:n(`prov.accountRemoveConfirm`,{email:i}),confirmLabel:n(`common.remove`),tone:`danger`}))try{if(!(await fetch(`${t}/api/oauth/accounts?provider=${encodeURIComponent(e)}&id=${encodeURIComponent(r.id)}`,{method:`DELETE`})).ok){a(n(`prov.accountRemoveFail`,{email:i}),!1);return}a(n(`prov.accountRemoved`,{email:i}),!0),await H([e]),await Promise.all([s(),c(!0)])}catch{a(n(`prov.accountRemoveFail`,{email:i}),!1)}},ae=(0,Z.useMemo)(()=>r?Object.entries(r.providers).filter(([,e])=>e.authMode===`oauth`).map(([e])=>e):[],[r]);(0,Z.useEffect)(()=>{if(ae.length===0)return;let e=`${t}:${ae.join(`,`)}`;z.current!==e&&(z.current=e,Promise.resolve().then(()=>{H(ae)}))},[t,H,ae]);let oe=(0,Z.useMemo)(()=>r?Object.entries(r.providers).filter(([,e])=>e.hasApiKey&&e.authMode!==`oauth`&&e.authMode!==`forward`).map(([e])=>e):[],[r]);return(0,Z.useEffect)(()=>{if(oe.length===0)return;let e=`${t}:${oe.join(`,`)}`;B.current!==e&&(B.current=e,Promise.resolve().then(()=>{U(oe)}))},[t,U,oe]),{accountSets:u,accountLoadStates:f,switchingAccount:g,pausingAccount:b,switchingAccounts:m,pausingAccounts:v,openAccounts:x,keyPools:C,addingKeyFor:T,newKeyValue:D,setAccountSets:d,setAccountLoadStates:p,setSwitchingAccount:_,setOpenAccounts:S,setKeyPools:w,setAddingKeyFor:E,setNewKeyValue:O,fetchAccountSets:H,fetchKeyPools:U,refreshAccountRosters:W,switchAccount:te,pauseAccount:q,setAccountPoolThreshold:ee,setAccountThreshold:K,switchApiKey:ne,removeApiKey:J,addApiKeyValue:Y,addApiKey:re,editCredentialAlias:ie,removeAccount:X,oauthCardProviders:ae,keyCardProviders:oe,activeAccountNeedsReauth:(0,Z.useMemo)(()=>Ih(u,l),[u,l])}}var Rh=new Set([`hasApiKey`,`hasHeaders`,`xaiResponsesOptInState`,`initialModelSelection`]);function zh(e){return{defaultProvider:e.defaultProvider,providers:Object.fromEntries(Object.entries(e.providers).map(([e,t])=>{let n={};for(let[e,r]of Object.entries(t))Rh.has(e)||(n[e]=structuredClone(r));return[e,n]}))}}function Bh(e){let{apiBase:t,config:n,notify:r,fetchConfig:i,fetchProviderQuotas:a,onSaved:o,t:s}=e,[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(``),[f,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(``),[g,_]=(0,Z.useState)(!1),[v,y]=(0,Z.useState)(!1),b=(0,Z.useRef)(!1);(0,Z.useEffect)(()=>{n&&!b.current&&d(JSON.stringify(zh(n),null,2))},[n]);let x=(0,Z.useCallback)(async()=>{_(!0);let e;try{e=JSON.parse(u)}catch{return r(s(`prov.invalidJson`),!1),_(!1),!1}try{let n=JSON.parse(m),c=await fetch(`${t}/api/providers`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({baseline:n,next:e})});if(!c.ok){let e=await c.json().catch(()=>({}));return r(e.error||s(`prov.saveFailed`),!1),!1}r(s(`prov.saved`),!0),l(!1),p(!1),b.current=!1,y(!1),h(JSON.stringify(e,null,2)),i(),a(!0);let u=Object.keys(e.providers).filter(e=>!Object.hasOwn(n.providers,e));return o(u),!0}catch{return r(s(`prov.saveFailed`),!1),!1}finally{_(!1)}},[t,u,i,a,m,r,o,s]),S=(0,Z.useCallback)(()=>{let e=n?JSON.stringify(zh(n),null,2):u;h(e),d(e),y(!1),p(!0),b.current=!0},[n,u]),C=(0,Z.useCallback)(()=>{y(!1),p(!1),b.current=!1;let e=n?JSON.stringify(zh(n),null,2):m;h(e),d(e)},[n,m]);return{editing:c,setEditing:l,draft:u,setDraft:d,jsonEditorOpen:f,jsonBaseline:m,jsonSaving:g,jsonLeaveOpen:v,jsonEditorOpenRef:b,saveConfig:x,openJsonEditor:S,discardJsonEditor:C,requestCloseJsonEditor:(0,Z.useCallback)(()=>{if(f&&u!==m){y(!0);return}C()},[C,u,m,f]),restoreJsonEditor:(0,Z.useCallback)(()=>{d(m)},[m]),jsonIsDirty:f&&u!==m,setJsonLeaveOpen:y}}var Vh=186e4;function Hh(e,t,n){return e?Math.max(n,Math.ceil(Vh/t)):n}var Uh={xai:`xAI (Grok)`,anthropic:`Anthropic (Claude)`,anthropic2:`Anthropic · Pool 2`,kimi:`Kimi (Moonshot)`,"meta-muse":`Meta Muse Code (CLI)`,"google-antigravity":`Google Antigravity`,"github-copilot":`GitHub Copilot`,cursor:`Cursor`,zed:`Zed Hosted AI`,devin:`Devin`,"dsh-account":`DeepSeek Account (DSH)`},Wh=e=>Uh[e]??e;function Gh({apiBase:e,t,aliveRef:n,accountSets:r,setAccountSets:i,setBusy:a,setStatus:o,setLoginInfo:s,setOauthStatus:c,notify:l,fetchConfig:u,fetchOauth:d,fetchAccountSets:f,fetchProviderQuotas:p,bumpModelsRefresh:m,onLoginSettled:h}){let g=(0,Z.useRef)(null);g.current===null&&(g.current=new Map);let _=(0,Z.useRef)(new Map),v=(0,Z.useCallback)(e=>{let t=(g.current.get(e)??0)+1;return g.current.set(e,t),t},[]),y=(0,Z.useCallback)(t=>cp(e,t),[e]),b=(0,Z.useCallback)(async e=>{let t=Object.keys(r);await f(new Set(t).has(e)?t:[...t,e])},[r,f]),x=(0,Z.useCallback)(()=>{u(),p(!0),m()},[u,p,m]),S=(0,Z.useCallback)(async(e,r)=>{if(n.current){r===`added`&&h?.(e);try{await b(e)}catch{}n.current&&(r===`added`?l(t(`prov.loginOk`,{provider:Wh(e),cmd:`ocx sync`}),!0):l(r===`ended`?t(`kiroLogin.ended`):t(`prov.loginError`,{provider:Wh(e),error:t(`kiroLogin.failed`)}),!1),x())}},[n,h,b,l,t,x]);return(0,Z.useEffect)(()=>{let e=e=>{let t=[..._.current];_.current.clear();for(let[n,r]of t)g.current.get(n)===r&&v(n),e&&(a(e=>e===n?null:e),s(e=>e?.provider===n?null:e)),y(n)},t=()=>e(!0);return window.addEventListener(`pagehide`,t),()=>{window.removeEventListener(`pagehide`,t),e(!1)}},[v,y,a,s]),{cancelLoginOAuth:(0,Z.useCallback)(async e=>{let r=v(e);_.current.delete(e),await y(e),!(!n.current||g.current.get(e)!==r)&&(a(t=>t===e?null:t),s(t=>t?.provider===e?null:t),l(t(`prov.loginCancelled`,{provider:Wh(e)}),!1))},[n,v,y,l,a,s,t]),loginOAuth:async(u,d=!1,f)=>{let p=v(u);_.current.set(u,p);let m=f?.trim()||void 0;a(u),o(``),s(null);try{let a=await lp(e,u,()=>{if(!(!n.current||g.current.get(u)!==p))return fetch(`${e}/api/oauth/login`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:u,...wl(),...d||m?{addAccount:!0}:{},...m?{accountId:m,reauth:!0}:{}})})});if(!a||g.current.get(u)!==p||!n.current)return;if(!a.ok){let e=await a.json().catch(()=>({}));if(!n.current||g.current.get(u)!==p)return;l(e.error||t(`prov.loginFailStart`,{provider:Wh(u)}),!1);return}let o=await a.json();if(!n.current||g.current.get(u)!==p)return;let f=El(o.browserLaunch);(o.url||o.instructions||o.deviceCode)&&s({provider:u,url:o.url,instructions:o.instructions,deviceCode:o.deviceCode,browserLaunch:f});let _=r[u]?.accounts.length??0,v=!1,S=!!o.deviceCode;for(let r=0;r<Hh(S,2e3,150)&&n.current&&g.current.get(u)===p;r++){if(await new Promise(e=>setTimeout(e,2e3)),g.current.get(u)!==p||!n.current)return;let r=await fetch(`${e}/api/oauth/status?provider=${u}`).catch(()=>null),a=r?await gn(r)??null:null;if(!n.current||g.current.get(u)!==p)return;if(!a)continue;if(a.error){c(e=>({...e,[u]:a})),l(/cancel/i.test(a.error)?t(`prov.loginCancelled`,{provider:Wh(u)}):t(`prov.loginError`,{provider:Wh(u),error:a.error}),!1),s(null),v=!0;break}let o=a.accounts?.length??0;if(d||m?o>_||a.done===!0:a.loggedIn||a.done===!0){c(e=>({...e,[u]:a}));let e=m?a.accounts?.find(e=>e.id===m):a.accounts?.find(e=>e.active)??a.accounts?.find(e=>e.id===a.activeAccountId);if(m&&!e){l(t(`prov.loginError`,{provider:Wh(u),error:t(`prov.reauthAccountMissing`)}),!1),s(null),v=!0;break}if(e?.needsReauth){l(t(`prov.loginError`,{provider:Wh(u),error:t(`prov.reauthIdentityMismatch`)}),!1),s(null),v=!0;break}if(a.accounts){let e=a.accounts.find(e=>e.active)?.id??null;i(t=>t[u]?t:{...t,[u]:{activeAccountId:a.activeAccountId??e,accounts:a.accounts}})}if(s(null),h?.(u),await b(u),!n.current||g.current.get(u)!==p)return;d&&!m&&o<=_?l(t(`prov.loginSameAccount`,{provider:Wh(u)}),!1):l(t(`prov.loginOk`,{provider:Wh(u),cmd:`ocx sync`}),!0),x(),v=!0;break}a.hint&&(a.hint.deviceCode&&(S=!0),s({provider:u,url:a.hint.url,instructions:a.hint.instructions,deviceCode:a.hint.deviceCode,browserLaunch:f}))}if(!v&&g.current.get(u)===p&&n.current){if(await y(u),!n.current||g.current.get(u)!==p)return;l(t(`prov.loginTimeout`,{provider:Wh(u)}),!1),s(null)}}catch{if(g.current.get(u)===p){if(await y(u),!n.current||g.current.get(u)!==p)return;l(t(`prov.loginRequestFail`,{provider:Wh(u)}),!1)}}finally{_.current.get(u)===p&&_.current.delete(u),n.current&&g.current.get(u)===p&&a(null)}},logoutOAuth:async n=>{v(n),a(e=>e===n?null:e),s(e=>e?.provider===n?null:e);try{if(!(await fetch(`${e}/api/oauth/logout?provider=${encodeURIComponent(n)}`,{method:`POST`})).ok){l(t(`prov.logoutFail`,{provider:Wh(n)}),!1);return}await Promise.all([f([n]),d(),u(),p(!0)]),m(),l(t(`prov.logoutOk`,{provider:Wh(n)}),!0)}catch{l(t(`prov.logoutFail`,{provider:Wh(n)}),!1)}},onNativeLoginSettled:S}}async function Kh(e,t){try{let t=await e.json();if(typeof t.error==`string`&&t.error.trim())return t.error.trim()}catch{}return t}function qh(e){let t=e.dependentShadowIntercept;return!t||typeof t.model!=`string`||t.enabled!==!0?null:{model:t.model,enabled:!0}}function Jh(e,t,n){switch(e.code){case`last_provider`:return t(`prov.removeLastProvider`);case`provider_has_dependent_combos`:return t(`prov.removeHasDependentCombos`,{combos:(Array.isArray(e.combos)?e.combos.filter(e=>typeof e==`string`).join(`, `):``)||`—`});case`default_provider_disabled`:return t(`prov.defaultDisabled`);default:return typeof e.error==`string`&&e.error.trim()?e.error.trim():n}}function Yh({apiBase:e,t,removeBusyRef:n,workspaceSelected:r,setWorkspaceSelected:i,setRemoveConfirmName:a,notify:o,fetchConfig:s,fetchOauth:c,fetchProviderQuotas:l,refreshCodexAccount:u}){let d=(0,Z.useCallback)(async e=>{a(e)},[a]),f=(0,Z.useCallback)(async u=>{let d=u;if(!d||n.current)return;n.current=!0,a(null);let f=t(`prov.removeFail`,{name:d});try{let n=await fetch(`${e}/api/providers?name=${encodeURIComponent(d)}`,{method:`DELETE`});if(n.ok){let e=await n.json().catch(()=>({})),a=typeof e.defaultProvider==`string`?e.defaultProvider:null,u=qh(e);u?o(t(`prov.removedShadowTarget`,{name:d,model:u.model}),!1,`warn`):o(a?t(`prov.removedDefault`,{name:d,defaultProvider:a}):t(`prov.removed`,{name:d}),!0),r===d&&i(null),s(),c(),l(!0)}else o(Jh(await n.json().catch(()=>({})),t,f),!1)}catch{o(f,!1)}finally{n.current=!1}},[e,s,c,l,o,n,a,i,t,r]),p=(0,Z.useCallback)(async(n,r)=>{let i=await fetch(`${e}/api/providers?name=${encodeURIComponent(n)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({disabled:r})});if(!i.ok){o(await Kh(i,t(r?`prov.disableFail`:`prov.enableFail`,{name:n})),!1);return}let a=qh(await i.json().catch(()=>({})));a?o(t(`prov.disabledShadowTarget`,{name:n,model:a.model}),!1,`warn`):o(t(r?`prov.disabled`:`prov.enabled`,{name:n}),!0),s(),c(),l(!0)},[e,s,c,l,o,t]),m=(0,Z.useCallback)(async(n,r)=>{try{let i=await fetch(`${e}/api/providers?name=${encodeURIComponent(n)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(r)});if(!i.ok)return{ok:!1,error:await Kh(i,t(`prov.updateFail`))};let a=await i.json().catch(()=>({}));if(await s(),Object.hasOwn(r,`codexAccountMode`)){let e=[l(!0)];u&&e.push(Promise.resolve(u())),await Promise.all(e)}let o=a.xaiResponsesOptInState;return{ok:!0,...o===!0||o===!1||o===`mixed`?{xaiResponsesOptInState:o}:{}}}catch{return{ok:!1,error:t(`prov.networkError`)}}},[e,s,l,u,t]);return{removeProvider:d,confirmRemoveProvider:f,setProviderDisabled:p,setDefaultProvider:(0,Z.useCallback)(async n=>{try{let r=await fetch(`${e}/api/providers?name=${encodeURIComponent(n)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({setDefault:!0})});return r.ok?(o(t(`prov.setDefaultSuccess`,{name:n}),!0),await s(),!0):(o(Jh(await r.json().catch(()=>({})),t,t(`prov.setDefaultFail`,{name:n})),!1),!1)}catch{return o(t(`prov.setDefaultFail`,{name:n}),!1),!1}},[e,s,o,t]),updateProvider:m}}function Xh({apiBase:e,t,setConfig:n,setOauthProviders:r,setOauthStatus:i,notify:a,invalidateProviderQuotas:o,configCacheKey:s}){let c=(0,Z.useRef)(0);return(0,Z.useEffect)(()=>()=>{c.current+=1},[e]),{fetchConfig:(0,Z.useCallback)(async()=>{let r=++c.current;try{let t=await hn(await fetch(`${e}/api/config`));if(r!==c.current)return`superseded`;if(!t)throw Error(`config response missing`);return n(t??null),s&&t&&qa(s,t),`applied`}catch{return r===c.current?(a(t(`prov.loadConfigFail`),!1),`failed`):`superseded`}},[e,s,a,n,t]),fetchOauth:(0,Z.useCallback)(async()=>{try{let t=(await hn(await fetch(`${e}/api/oauth/providers`)))?.providers??[];r(t);let n=await Promise.all(t.map(async t=>{let n=await fetch(`${e}/api/oauth/status?provider=${encodeURIComponent(t)}`).catch(()=>null);return[t,n?await gn(n)??{loggedIn:!1}:{loggedIn:!1}]}));i(Object.fromEntries(n))}catch{}},[e,r,i]),fetchProviderQuotas:(0,Z.useCallback)(async(e=!1)=>{o(e)},[o])}}function Zh({providerId:e,providerLabel:t,onCancel:n,onContinue:r}){let i=O(),a=(0,Z.useId)(),o=(0,Z.useId)(),s=(0,Z.useId)(),c=(0,Z.useRef)(null),l=(0,Z.useRef)(!1),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(!1),m=Eh(e);(0,Z.useEffect)(()=>{let e=c.current;e&&!e.open&&e.showModal()},[]);let h=(0,Z.useCallback)(e=>{e.preventDefault(),n()},[n]);if(!m)return null;let g=kh(e,m);return(0,Q.jsxs)(`dialog`,{ref:c,"aria-labelledby":a,"aria-describedby":g.conditions?`${o} ${s}`:o,className:`modal-overlay`,onCancel:h,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":i(`common.close`),tabIndex:-1,onClick:n}),(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),style:{maxWidth:460},children:[(0,Q.jsx)(`h3`,{id:a,children:i(g.title,{provider:t})}),(0,Q.jsxs)(`div`,{id:o,className:`notice-warn`,style:{marginTop:12,display:`flex`,gap:8,alignItems:`flex-start`},children:[(0,Q.jsx)(Ae,{width:16,height:16,style:{flexShrink:0,marginTop:2},"aria-hidden":`true`}),(0,Q.jsx)(`p`,{className:`modal-desc`,style:{margin:0},children:i(g.body,{provider:t})})]}),g.conditions&&(0,Q.jsx)(`p`,{id:s,className:`modal-desc`,style:{marginTop:12},children:i(g.conditions)}),g.saferPath&&(0,Q.jsx)(`p`,{className:`muted text-label`,style:{marginTop:12},children:i(g.saferPath)}),(0,Q.jsxs)(`label`,{className:`oauth-tos-ack`,style:{display:`flex`,gap:8,alignItems:`flex-start`,marginTop:14},children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:u,onChange:e=>d(e.target.checked),style:{marginTop:3},"aria-required":`true`}),(0,Q.jsx)(`span`,{className:`text-label`,children:i(g.acknowledge)})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:n,children:i(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:!u||f,onClick:()=>{!u||l.current||(l.current=!0,p(!0),r())},children:i(g.continue)})]})]})]})}function Qh(e,t,n){return!n||e.kind!==`oauth`||t!==e.id?!1:n.provider===e.id}function $h({row:e,status:t,busyProvider:n,loginHint:r,paste:i,onLogin:a,onCancelLogin:o,onLogout:s,onManage:c}){let l=O(),u=n===e.id,d=!!t?.loggedIn,f=d?t?.email??e.statusLabel??l(`modal.accountLoggedIn`):t?.error??e.statusLabel??l(`modal.accountLoggedOut`),p=Qh(e,n,r);return(0,Q.jsxs)(`div`,{className:`list-row provider-catalog-account-row${p?` provider-catalog-account-row--waiting`:``}`,children:[(0,Q.jsxs)(`div`,{className:`provider-catalog-account-row-head`,children:[(0,Q.jsx)(me,{name:e.id,cls:`provider-icon provider-icon-sm`}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{className:`title`,children:e.label}),(0,Q.jsx)(`div`,{className:`sub`,children:f})]}),(0,Q.jsx)(`div`,{className:`provider-catalog-badges`,children:e.kind===`key`?null:e.kind===`codex`?(0,Q.jsxs)(Q.Fragment,{children:[d&&(0,Q.jsx)(`a`,{className:`btn btn-ghost`,href:e.href??`#codex-set`,children:l(`modal.accountManage`)}),a&&(0,Q.jsx)(`button`,{type:`button`,className:d?`btn btn-ghost`:`btn btn-primary`,disabled:u,onClick:()=>{u||a(e.id)},children:l(u?`codexAuth.enablingOpenai`:d?`modal.accountAdd`:`modal.accountLogin`)})]}):d?(0,Q.jsxs)(Q.Fragment,{children:[c&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>c(e.id),children:l(`modal.accountManage`)}),a&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:u,onClick:()=>{u||a(e.id,!0)},children:l(u?`prov.waitingBrowser`:`modal.accountAdd`)}),u&&o&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>o(e.id),children:l(`common.cancel`)}),s&&!u&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>s(e.id),children:l(`modal.accountLogout`)})]}):u?o&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>o(e.id),children:l(`common.cancel`)}):a&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>a(e.id),children:l(`modal.accountLogin`)})})]}),p&&r&&(0,Q.jsx)(bl,{hint:{url:r.url,deviceCode:r.deviceCode,instructions:r.instructions,browserLaunch:r.browserLaunch},...i?{paste:{value:i.value,busy:i.busy,message:i.message,ok:i.ok,onChange:i.onChange,onSubmit:()=>i.onSubmit(e.id)}}:{}})]})}var eg=[`accounts`,`free`,`local`,`paid`],tg={accounts:`modal.tab.accounts`,free:`modal.tab.free`,local:`modal.tab.local`,paid:`modal.tab.paid`},ng={},rg=[],ig={};function ag({presets:e,usageRank:t=ng,presetsLoading:n=!1,initialTier:r=`free`,query:i,onQueryChange:a,onSelectPreset:o,onSelectCustom:s,onShowNote:c,accountRows:l=rg,accountStatus:u=ig,busyProvider:d=null,loginHint:f=null,paste:p,onLogin:m,onCancelLogin:h,onLogout:g,onManage:_}){let v=O(),[y,b]=(0,Z.useState)(r),x=(0,Z.useId)(),S=e=>`${x}-${e}`,C=(0,Z.useRef)(null),w=i.trim().length>0;(0,Z.useEffect)(()=>{C.current&&(C.current.scrollTop=0)},[y,w]);let T=(0,Z.useMemo)(()=>e.filter(e=>e.id!==`custom`),[e]),E=(0,Z.useMemo)(()=>{let e=Object.keys(t).length>0;return T.toSorted((n,r)=>{if(e){let e=t[n.id]??0,i=t[r.id]??0;if(i!==e)return i-e}return n.label.localeCompare(r.label,void 0,{sensitivity:`base`})||n.id.localeCompare(r.id)})},[T,t]),D=(0,Z.useMemo)(()=>ec(cc(E)),[E]),k=D[y],A=(0,Z.useMemo)(()=>w?ac(l,i,d):l,[l,i,w,d]),j=(0,Z.useMemo)(()=>{let e=eg.filter(e=>e!==`accounts`);return w?e.map(e=>({tier:e,rows:ic(oc(D[e].filter(e=>rc(e,i)),A),i)})):y===`accounts`?[]:[{tier:y,rows:k}]},[w,y,k,D,i,A]),M=(0,Z.useMemo)(()=>({...Object.fromEntries(j.map(e=>[e.tier,e.rows.length])),accounts:A.length}),[j,A]),N=eg.reduce((e,t)=>e+(M[t]??0),0),P=eg.filter(e=>(M[e]??0)>0),F=w?N:y===`accounts`?A.length:j[0]?.rows.length??0,I=e=>{let t=C.current,n=t?.querySelector(`[data-catalog-group="${e}"]`);!t||!n||(t.scrollTop=n.offsetTop-t.offsetTop,d||n.focus({preventScroll:!0}))},L=e=>{if(e.key!==`ArrowDown`)return;let t=C.current?.querySelector(`button:not(:disabled), a[href]`);t&&(e.preventDefault(),t.focus())},R=(e,t)=>(0,Q.jsxs)(`h4`,{id:S(e),"data-catalog-group":e,className:`provider-catalog-group-head`,tabIndex:-1,children:[(0,Q.jsx)(`span`,{children:v(tg[e])}),(0,Q.jsx)(`span`,{className:`provider-catalog-group-count`,children:t})]}),z=e=>{let t=Je(e),n=t?(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:v(`modal.badge.subscriptionCli`)}):e.codexAccountMode===`direct`?(0,Q.jsx)(`span`,{className:`badge badge-green`,children:v(`modal.badge.direct`)}):e.codexAccountMode===`pool`?(0,Q.jsx)(`span`,{className:`badge badge-accent`,children:v(`modal.badge.pool`)}):e.auth===`oauth`?(0,Q.jsx)(`span`,{className:`badge badge-accent`,children:v(`modal.badge.oauth`)}):e.auth===`forward`?(0,Q.jsx)(`span`,{className:`badge badge-green`,children:v(`modal.badge.codexLogin`)}):e.auth===`local`?(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:v(`modal.badge.local`)}):e.keyOptional?null:(0,Q.jsx)(`span`,{className:`badge badge-muted`,children:v(`modal.badge.apiKey`)}),r=(e.freeTier||e.keyOptional)&&e.auth===`key`&&!t?(0,Q.jsx)(`span`,{className:`badge badge-green`,children:v(`modal.badge.free`)}):null,i=e.sponsor?(0,Q.jsx)(`span`,{className:`badge badge-accent provider-catalog-sponsor`,title:e.sponsorUrl,children:v(`modal.badge.sponsor`)}):null;return(0,Q.jsxs)(Q.Fragment,{children:[i,r,n]})};return(0,Q.jsxs)(`div`,{className:`provider-catalog`,children:[(0,Q.jsx)(`input`,{className:`input provider-catalog-search`,type:`search`,value:i,onChange:e=>a(e.target.value),onKeyDown:L,placeholder:v(`modal.search`),"aria-label":v(`modal.search`)}),w?(0,Q.jsx)(`div`,{className:`provider-catalog-tabs provider-catalog-tabs--chips`,children:eg.map(e=>(0,Q.jsxs)(`button`,{type:`button`,className:`provider-catalog-tab provider-catalog-chip`,disabled:(M[e]??0)===0,...(M[e]??0)>0?{"aria-controls":S(e)}:{},onClick:()=>I(e),children:[v(tg[e]),(0,Q.jsx)(`span`,{className:`provider-catalog-chip-count`,children:M[e]??0})]},e))}):(0,Q.jsx)(`div`,{className:`provider-catalog-tabs`,role:`tablist`,children:eg.map(e=>(0,Q.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":y===e,"aria-controls":x,className:`provider-catalog-tab${y===e?` active`:``}`,onClick:()=>b(e),children:v(tg[e])},e))}),!w&&y===`accounts`&&(0,Q.jsx)(`div`,{className:`provider-catalog-accounts-hint muted text-label`,children:v(`modal.accountsHint`)}),(0,Q.jsx)(`div`,{className:`sr-only`,"aria-live":`polite`,"aria-atomic":`true`,children:w?N===0?v(`modal.noMatch`):v(`modal.searchResults`,{count:N,tiers:P.map(e=>v(tg[e])).join(`, `)}):``}),(0,Q.jsxs)(`div`,{className:`provider-catalog-rows`,id:x,ref:C,children:[n&&F===0&&(0,Q.jsx)(`div`,{className:`muted text-control provider-catalog-empty`,children:v(`modal.catalogLoading`)}),(w||y===`accounts`)&&A.length>0&&(0,Q.jsxs)(Z.Fragment,{children:[w&&R(`accounts`,A.length),A.map(e=>(0,Q.jsx)($h,{row:e,status:u[e.id],busyProvider:d,loginHint:f,...p?{paste:p}:{},...m?{onLogin:m}:{},...h?{onCancelLogin:h}:{},...g?{onLogout:g}:{},..._?{onManage:_}:{}},e.id))]},`accounts`),j.map(e=>e.rows.length===0?null:(0,Q.jsxs)(Z.Fragment,{children:[w&&R(e.tier,e.rows.length),e.rows.map(e=>(0,Q.jsxs)(`div`,{className:`provider-catalog-row-wrap`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`list-row`,onClick:()=>o(e),children:[(0,Q.jsx)(me,{name:e.id,adapter:e.adapter,cls:`provider-icon provider-icon-sm`}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{className:`title`,children:e.label}),(0,Q.jsxs)(`div`,{className:`sub`,children:[(0,Q.jsx)(`code`,{className:`chip`,children:e.adapter}),e.note?` · ${e.note}`:``]})]}),(0,Q.jsx)(`div`,{className:`provider-catalog-badges`,children:z(e)})]}),c&&tc(e.note)&&(0,Q.jsx)(`button`,{type:`button`,className:`link-btn provider-catalog-note-more`,onClick:()=>c(e),children:v(`modal.noteMore`)})]},e.id))]},e.tier)),!n&&F===0&&(0,Q.jsx)(`div`,{className:`muted text-control provider-catalog-empty`,children:v(`modal.noMatch`)})]}),(0,Q.jsxs)(`div`,{className:`provider-catalog-footer`,children:[(0,Q.jsx)(`div`,{style:{flex:1}}),!w&&y!==`accounts`&&(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:s,children:v(`modal.notListed`)})]})]})}function og({providerId:e,label:t,adapter:n,note:r,onClose:i}){let a=O(),o=(0,Z.useId)(),s=(0,Z.useId)(),c=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{let e=c.current,t=document.activeElement;return e&&!e.open&&e.showModal(),()=>{e?.open&&e.close(),t?.isConnected&&t.focus({preventScroll:!0})}},[]);let l=(0,Z.useCallback)(e=>{e.preventDefault(),i()},[i]);return(0,Q.jsxs)(`dialog`,{ref:c,"aria-labelledby":o,"aria-describedby":s,className:`modal-overlay`,onCancel:l,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":a(`common.close`),tabIndex:-1,onClick:i}),(0,Q.jsxs)(`div`,{className:`modal-card provider-note-card`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsxs)(`h3`,{id:o,className:`provider-note-title`,children:[(0,Q.jsx)(me,{name:e,adapter:n,cls:`provider-icon provider-icon-sm`}),t]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon`,"aria-label":a(`common.close`),onClick:i,children:(0,Q.jsx)(ve,{})})]}),(0,Q.jsxs)(`div`,{id:s,className:`provider-note-body`,children:[(0,Q.jsx)(`code`,{className:`chip`,children:n}),(0,Q.jsx)(`p`,{className:`modal-desc provider-note-text`,children:r})]}),(0,Q.jsx)(`div`,{className:`modal-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:i,children:a(`common.close`)})})]})]})}function sg({preset:e,oauthSupported:t,oauthBusy:n,oauthMsg:r,oauthMsgTone:i,oauthUrl:a,oauthDeviceCode:o,oauthInstructions:s,oauthBrowserLaunch:c,manualCode:l,manualCodeBusy:u,manualCodeMsg:d,manualCodeOk:f,onRequestLogin:p,onCancelLogin:m,onUseApiKeyInstead:h,onManualCodeChange:g,onSubmitManualCode:_,onBack:v}){let y=O();return(0,Q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:14},children:[(0,Q.jsx)(`div`,{className:`muted text-control`,children:e.note??y(`modal.oauthDefaultNote`)}),t.includes(e.oauthProvider??``)?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>p(e.oauthProvider),disabled:n,style:{width:`100%`,padding:`12px 16px`},children:[(0,Q.jsx)(at,{}),n?y(`modal.waitingBrowser`):y(`modal.logInWith`,{label:e.label})]}),!n&&(0,Q.jsx)(tf,{})]}):(0,Q.jsx)(`div`,{className:`text-control`,style:{color:`var(--amber)`,background:`var(--amber-soft)`,border:`1px solid var(--amber)`,borderRadius:`var(--radius-sm)`,padding:`10px 12px`},children:y(`modal.oauthComingSoon`,{label:e.label})}),r&&(0,Q.jsx)(`div`,{className:`text-label`,style:{color:i===`warn`?`var(--amber)`:`var(--accent-hover)`},children:r}),n&&(0,Q.jsx)(bl,{hint:{url:a,deviceCode:o,instructions:s,browserLaunch:c},paste:{value:l,busy:u,disabled:!e.oauthProvider,message:d,ok:f,onChange:g,onSubmit:()=>{e.oauthProvider&&_(e.oauthProvider)}}}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`center`,marginTop:2},children:[(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:h,children:y(`modal.useApiKeyInstead`)}),(0,Q.jsx)(`div`,{style:{flex:1}}),n&&e.oauthProvider&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>m(e.oauthProvider),children:y(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:v,children:y(`modal.back`)})]})]})}function cg({label:e,children:t}){return(0,Q.jsxs)(`label`,{style:{display:`block`},children:[(0,Q.jsx)(`span`,{className:`field-label`,children:e}),t]})}var lg=[`openai-responses`,`openai-chat`,`anthropic`,`google`,`azure-openai`,`cursor`];function ug(e){return e&&!lg.includes(e)?[e,...lg]:lg}function dg({preset:e,form:t,endpointChoice:n,error:r,saving:i,dup:a,isCustom:o,isLocal:s,isReservedForward:c,presetDescription:l,onFormChange:u,onEndpointChoiceChange:d,onSubmit:f,onUseOauthLogin:p,onBack:m}){let h=O(),g=Je(t);return(0,Q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:10},children:[!c&&!o&&!s&&!e.keyOptional&&e.note&&(0,Q.jsxs)(`details`,{className:`setup-guide`,children:[(0,Q.jsx)(`summary`,{children:h(`modal.setupGuide`)}),(0,Q.jsxs)(`ol`,{className:`text-label leading-relaxed`,style:{margin:`8px 0 0`,paddingLeft:18,color:`var(--muted)`},children:[(0,Q.jsxs)(`li`,{children:[h(`modal.setupStep1Prefix`),` `,(0,Q.jsx)(`a`,{href:e.dashboardUrl,target:`_blank`,rel:`noreferrer`,children:h(`modal.setupDashboardLink`,{label:e.label})}),` `,h(`modal.setupStep1Suffix`)]}),(0,Q.jsx)(`li`,{children:h(`modal.setupStep2`)}),(0,Q.jsx)(`li`,{children:h(`modal.setupStep3`)})]}),e.note&&(0,Q.jsx)(`div`,{className:`text-label`,style:{color:`var(--muted)`,marginTop:6,fontStyle:`italic`},children:e.note}),/\{[^}]*\}/.test(t.baseUrl)&&(0,Q.jsx)(`div`,{className:`text-label`,style:{color:`var(--amber)`,marginTop:6},children:h(`modal.baseUrlPlaceholderHint`)})]}),(0,Q.jsx)(cg,{label:h(`modal.providerName`),children:(0,Q.jsx)(`input`,{className:`input`,value:t.name,readOnly:c,onChange:e=>u({...t,name:e.target.value}),placeholder:h(`modal.namePlaceholder`)})}),a&&(0,Q.jsx)(`div`,{className:`text-label`,style:{color:`var(--amber)`},children:h(`modal.duplicateWarn`,{name:t.name.trim()})}),!c&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(cg,{label:h(`modal.adapter`),children:(0,Q.jsx)(`select`,{className:`input`,value:t.adapter,onChange:e=>u({...t,adapter:e.target.value}),children:ug(t.adapter).map(e=>(0,Q.jsx)(`option`,{value:e,children:e},e))})}),e.baseUrlChoices&&e.baseUrlChoices.length>0?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(cg,{label:h(`modal.endpoint`),children:(0,Q.jsx)(`select`,{className:`input`,value:n,onChange:n=>{let r=n.target.value;d(r),u({...t,baseUrl:Vp(e.baseUrlChoices,r,t.baseUrl)})},children:e.baseUrlChoices.map(e=>(0,Q.jsx)(`option`,{value:e.id,children:e.id===`token-plan`?h(`modal.endpoint.tokenPlan`):e.id===`payg`?h(`modal.endpoint.payAsYouGo`):e.id===`custom`?h(`modal.endpoint.custom`):e.label},e.id))})}),n===`custom`&&(0,Q.jsx)(cg,{label:h(`modal.baseUrl`),children:(0,Q.jsx)(`input`,{className:`input`,value:t.baseUrl,onChange:e=>u({...t,baseUrl:e.target.value}),placeholder:h(`modal.baseUrlPlaceholder`)})})]}):(0,Q.jsx)(cg,{label:h(`modal.baseUrl`),children:(0,Q.jsx)(`input`,{className:`input`,value:t.baseUrl,onChange:e=>u({...t,baseUrl:e.target.value}),placeholder:h(`modal.baseUrlPlaceholder`)})}),!c&&(0,Q.jsxs)(`label`,{className:`modal-field`,style:{flexDirection:`row`,alignItems:`center`,gap:8},children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:t?.allowPrivateNetwork??!1,onChange:e=>u({...t,allowPrivateNetwork:e.target.checked})}),(0,Q.jsx)(`span`,{className:`muted text-control`,children:h(`modal.allowPrivateNetwork`)})]}),!c&&(t?.allowPrivateNetwork??!1)&&(0,Q.jsx)(`p`,{className:`muted text-hint`,children:h(`modal.allowPrivateNetworkHint`)})]}),o&&Wp(t)&&(0,Q.jsx)(nm,{checked:t.preserveResponsesReasoningContent===!0,onChange:e=>u({...t,preserveResponsesReasoningContent:e})}),t.authMode===`forward`?(0,Q.jsx)(`div`,{className:`text-label`,style:{color:`var(--green)`,background:`var(--green-soft)`,border:`1px solid var(--green)`,borderRadius:`var(--radius-sm)`,padding:`8px 10px`},children:l(e)}):t.authMode===`local`?(0,Q.jsx)(`div`,{className:`text-label leading-relaxed`,style:{color:`var(--amber)`,background:`var(--amber-soft)`,border:`1px solid var(--amber)`,borderRadius:`var(--radius-sm)`,padding:`8px 10px`},children:h(`modal.localHint`)}):g?(0,Q.jsxs)(`div`,{role:`note`,"data-subscription-cli-warning":``,className:`text-label leading-relaxed`,style:{color:`var(--amber)`,background:`var(--amber-soft)`,border:`1px solid var(--amber)`,borderRadius:`var(--radius-sm)`,padding:`10px 12px`},children:[(0,Q.jsx)(`strong`,{children:h(`modal.subscriptionCliTitle`)}),(0,Q.jsx)(`div`,{style:{marginTop:4},children:(0,Q.jsx)(T,{k:`modal.subscriptionCliWarning`,cmd:`claude -p`,vars:{apiProvider:q}})})]}):e.keyOptional?(0,Q.jsxs)(`div`,{className:`text-label leading-relaxed`,style:{color:`var(--green)`,background:`var(--green-soft)`,border:`1px solid var(--green)`,borderRadius:`var(--radius-sm)`,padding:`10px 12px`},children:[(0,Q.jsx)(`strong`,{children:h(`modal.freeTierTitle`)}),` — `,e.note??h(`modal.freeTierDefault`)]}):(0,Q.jsxs)(Q.Fragment,{children:[e.dashboardUrl&&(0,Q.jsxs)(`a`,{className:`text-label`,href:e.dashboardUrl,target:`_blank`,rel:`noreferrer`,style:{display:`inline-flex`,alignItems:`center`,gap:5},children:[(0,Q.jsx)(tt,{style:{width:14,height:14}}),h(`modal.getApiKey`,{label:e.label}),(0,Q.jsx)(Ve,{style:{width:13,height:13}})]}),(0,Q.jsx)(cg,{label:h(`modal.apiKey`),children:(0,Q.jsx)(`input`,{className:`input`,type:`password`,value:t.apiKey,onChange:e=>u({...t,apiKey:e.target.value}),placeholder:h(`modal.apiKeyPlaceholder`)})}),t.adapter===`anthropic`&&t.authMode===`key`&&(0,Q.jsx)(cg,{label:h(`modal.apiKeyTransport`),children:(0,Q.jsxs)(`select`,{className:`input`,value:t.apiKeyTransport??`x-api-key`,onChange:e=>u({...t,apiKeyTransport:e.target.value===`bearer`?`bearer`:void 0}),children:[(0,Q.jsx)(`option`,{value:`x-api-key`,children:h(`modal.apiKeyTransportNative`)}),(0,Q.jsx)(`option`,{value:`bearer`,children:h(`modal.apiKeyTransportBearer`)})]})})]}),!c&&(0,Q.jsx)(cg,{label:h(`modal.defaultModel`),children:(0,Q.jsx)(`input`,{className:`input`,value:t.defaultModel,onChange:e=>u({...t,defaultModel:e.target.value}),placeholder:h(`modal.defaultModelPlaceholder`)})}),r&&(0,Q.jsx)(`div`,{className:`text-control`,role:`alert`,style:{color:`var(--red)`},children:r}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:8,marginTop:4,alignItems:`center`},children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:f,disabled:i,children:h(i?`modal.adding`:`modal.add`)}),e.auth===`oauth`&&(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:p,children:h(`modal.useOauthLogin`)}),(0,Q.jsx)(`div`,{style:{flex:1}}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:m,children:h(`modal.back`)})]})]})}var fg=2e3;function pg({apiBase:e,t,aliveRef:n,onAdded:r}){let i=(0,Z.useRef)(new Map),a=(0,Z.useRef)(new Map),o=(0,Z.useCallback)(e=>{let t=(i.current.get(e)??0)+1;return i.current.set(e,t),t},[]),s=(0,Z.useCallback)(t=>cp(e,t),[e]);return(0,Z.useEffect)(()=>{let e=e=>{let t=[...a.current];a.current.clear();for(let[n,r]of t)o(n),e&&(r.setOauthBusy(!1),r.setOauthUrl(``,n),r.setOauthMsg(``)),s(n)},t=()=>e(!0);return window.addEventListener(`pagehide`,t),()=>{window.removeEventListener(`pagehide`,t),e(!1)}},[o,s]),{cancelLoginOAuth:(0,Z.useCallback)(async(e,r,c=e)=>{let l=o(e);a.current.delete(e),await s(e),!(!n.current||i.current.get(e)!==l)&&(r.setOauthBusy(!1),r.setOauthUrl(``,e),r.setOauthMsgTone(`warn`),r.setOauthMsg(t(`prov.loginCancelled`,{provider:c})))},[n,o,s,t]),loginOAuth:(0,Z.useCallback)(async(c,l)=>{let{setOauthBusy:u,setOauthMsg:d,setOauthMsgTone:f,setOauthUrl:p,setManualCode:m,setManualCodeMsg:h,setManualCodeOk:g}=l,_=o(c),v=()=>i.current.get(c)===_;a.current.set(c,l),u(!0),d(``),f(`ok`),p(``,c),m(``),h(``),g(!0);try{let i=await lp(e,c,()=>{if(!(!n.current||!v()))return fetch(`${e}/api/oauth/login`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:c,...wl()})})});if(!i||!n.current||!v())return;if(!i.ok){a.current.delete(c);let e=await i.json().catch(()=>({}));if(!n.current||!v())return;f(`warn`),d(e.error===`unknown oauth provider`?t(`modal.oauthComingSoonShort`):e.error||t(`modal.loginFailStart`));return}let o=await i.json();if(!n.current||!v())return;p(o.url??``,c,o.deviceCode,o.instructions,El(o.browserLaunch)),o.url||o.deviceCode?d(t(`modal.waitingLogin`)):d(o.instructions||t(`modal.loggingIn`));let l=!!o.deviceCode;for(let i=0;i<Hh(l,fg,100);i++){if(await new Promise(e=>setTimeout(e,fg)),!n.current||!v())return;let i=await fetch(`${e}/api/oauth/status?provider=${c}`).catch(()=>null),o=i?await gn(i):null;if(!n.current||!v())return;if(o?.error){a.current.delete(c),f(`warn`),d(t(`modal.loginError`,{error:o.error}));return}if(o?.loggedIn){a.current.delete(c),d(``),r(c);return}let s=o?.hint;s&&(s.deviceCode&&(l=!0),p(s.url??``,c,s.deviceCode,s.instructions),d(s.url||s.deviceCode?t(`modal.waitingLogin`):s.instructions||t(`modal.loggingIn`)))}if(await s(c),!n.current||!v())return;a.current.delete(c),f(`warn`),d(t(`modal.loginTimeout`))}catch{v()&&await s(c),v()&&a.current.delete(c),n.current&&v()&&(f(`warn`),d(t(`modal.networkError`)))}finally{n.current&&v()&&(u(!1),p(``,c))}},[n,e,o,s,r,t]),submitManualCode:(0,Z.useCallback)(async(r,i,a,o)=>{let s=i.trim();if(!s||a)return;let{setManualCodeBusy:c,setManualCode:l,setManualCodeOk:u,setManualCodeMsg:d}=o;c(!0),d(``);try{let i=await fetch(`${e}/api/oauth/login/code`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:r,input:s})});if(!n.current)return;if(!i.ok){let e=await i.json().catch(()=>({}));u(!1),d(t(`prov.pasteFail`,{error:e.error||i.statusText}));return}l(``),u(!0),d(t(`prov.pasteOk`))}catch{n.current&&(u(!1),d(t(`modal.networkError`)))}finally{n.current&&c(!1)}},[n,e,t])}}function mg(e,t){return{preset:e?{id:`custom`,label:t,adapter:`openai-chat`,baseUrl:``,auth:`key`}:null,form:e?{name:``,adapter:`openai-chat`,baseUrl:``,authMode:`key`,apiKey:``,apiKeyTransport:void 0,defaultModel:``,allowPrivateNetwork:!1}:null,saving:!1,error:``,oauthBusy:!1,oauthMsg:``,oauthMsgTone:`ok`,oauthUrl:``,oauthDeviceCode:``,oauthInstructions:``,oauthUrlProvider:null,manualCode:``,manualCodeBusy:!1,manualCodeMsg:``,manualCodeOk:!0,endpointChoice:`custom`,oauthTosPending:null}}function hg(e,t){switch(t.type){case`choose-preset`:return{...e,preset:t.preset,form:t.form,endpointChoice:t.endpointChoice,error:``,oauthMsg:``,oauthMsgTone:`ok`,oauthUrl:``,oauthDeviceCode:``,oauthInstructions:``,oauthBrowserLaunch:void 0,oauthUrlProvider:null,oauthBusy:!1,manualCode:``,manualCodeMsg:``,manualCodeOk:!0};case`back`:return{...e,preset:null,form:null,endpointChoice:`custom`,error:``,oauthMsg:``,oauthMsgTone:`ok`,oauthUrl:``,oauthDeviceCode:``,oauthInstructions:``,oauthBrowserLaunch:void 0,oauthUrlProvider:null,oauthBusy:!1,manualCode:``,manualCodeMsg:``,manualCodeOk:!0};case`set-form`:return{...e,form:t.form};case`set-endpoint-choice`:return{...e,endpointChoice:t.choice};case`set-saving`:return{...e,saving:t.saving};case`set-error`:return{...e,error:t.error};case`set-oauth-busy`:return{...e,oauthBusy:t.busy};case`set-oauth-msg`:return{...e,oauthMsg:t.msg,oauthMsgTone:t.tone??e.oauthMsgTone};case`set-oauth-tone`:return{...e,oauthMsgTone:t.tone};case`set-oauth-url`:return e.preset?.oauthProvider===t.providerId?{...e,oauthUrl:t.url,oauthDeviceCode:t.deviceCode??``,oauthInstructions:t.instructions??``,oauthUrlProvider:t.providerId,oauthBrowserLaunch:t.url?t.browserLaunch??(e.oauthUrlProvider===t.providerId?e.oauthBrowserLaunch:void 0):void 0}:e;case`set-manual-code`:return{...e,manualCode:t.code};case`set-manual-code-busy`:return{...e,manualCodeBusy:t.busy};case`set-manual-code-msg`:return{...e,manualCodeMsg:t.msg,manualCodeOk:t.ok??e.manualCodeOk};case`set-oauth-tos-pending`:return{...e,oauthTosPending:t.providerId};case`use-oauth-login`:return{...e,form:t.form,error:``,oauthUrl:``,oauthDeviceCode:``,oauthInstructions:``,oauthBrowserLaunch:void 0,oauthUrlProvider:null};case`use-api-key-instead`:return{...e,form:t.form,oauthMsg:``,oauthMsgTone:`ok`,oauthUrl:``,oauthDeviceCode:``,oauthInstructions:``,oauthBrowserLaunch:void 0,oauthUrlProvider:null,oauthBusy:!1,manualCode:``,manualCodeMsg:``};default:return e}}function gg({apiBase:e,existingNames:t,onClose:n,onAdded:r,initialTier:i,initialCustom:a=!1,accountRows:o,accountStatus:s,accountBusy:c,accountLoginHint:l=null,onAccountLogin:u,onAccountCancelLogin:d,onAccountLogout:f,onAccountManage:p,onOpen:m}){let h=O(),g=(0,Z.useMemo)(()=>[{id:`custom`,label:h(`modal.customProvider`),adapter:`openai-chat`,baseUrl:``,auth:`key`}],[h]),[_,v]=(0,Z.useReducer)(hg,a,e=>mg(e,h(`modal.customProvider`))),y=(0,Z.useRef)(!0),b=(0,Z.useRef)(null),x=(0,Z.useRef)(null),[S,C]=(0,Z.useState)(null),[w,T]=(0,Z.useState)(``),E=Vt(`add-provider-oauth:${e}`,[e],async t=>{let n=await fetch(`${e}/api/oauth/providers`,{signal:t});return n.ok?(await n.json()).providers??[]:[]}),D=Vt(`add-provider-presets:${e}`,[e],async t=>{let n=await fetch(`${e}/api/provider-presets`,{signal:t});if(!n.ok)throw Error(String(n.status));let r=await n.json();return Array.isArray(r.providers)&&r.providers.length>0?r.providers:null}),k=Vt(hr(e),[e],async t=>await mr(await fetch(`${e}/api/usage?range=30d`,{signal:t})),{deadlineMs:6e4}),A=E.data??[],j=D.data??g,M=D.loading,N=Object.fromEntries((k.data?.providers??[]).map(e=>[e.provider,e.requests])),{preset:P,form:F,saving:I,error:L,oauthBusy:R,oauthMsg:z,oauthMsgTone:B,oauthUrl:V,oauthUrlProvider:H,oauthDeviceCode:U,oauthInstructions:W,oauthBrowserLaunch:G,manualCode:ee,manualCodeBusy:te,manualCodeMsg:K,manualCodeOk:q,endpointChoice:ne,oauthTosPending:J}=_;(0,Z.useEffect)(()=>{y.current=!0,b.current=document.activeElement,m?.();let e=x.current;if(e){let t=e.querySelector(`input:not([disabled]), button:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex='-1'])`);t&&t.focus()}return()=>{y.current=!1,b.current?.focus()}},[]),(0,Z.useEffect)(()=>{let e=e=>{let t=!J&&!S;if(!(e.key!==`Escape`||!t)){if(w){T(``);return}n()}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n,J,S,w]);let Y=e=>{let t=Xp(e);return t?h(t):e.note},re=e=>{let t=Hp(e.baseUrlChoices,e.baseUrl);v({type:`choose-preset`,preset:e,endpointChoice:t,form:{name:e.id===`custom`?``:e.id,adapter:e.adapter,baseUrl:e.baseUrlChoices?.length?Vp(e.baseUrlChoices,t,e.baseUrl):e.baseUrl,responsesPath:e.responsesPath,authMode:e.auth,apiKey:``,apiKeyTransport:void 0,defaultModel:e.defaultModel??``,allowPrivateNetwork:!1}})},ie=async()=>{if(!F)return;let t=P?Yp(P):!1,n=P?.baseUrlChoices?.length?Up(P.baseUrlChoices,ne,F.baseUrl):F.baseUrl.trim();if(!t&&!F.name.trim()){v({type:`set-error`,error:h(`modal.nameRequired`)});return}if(!t&&!n){v({type:`set-error`,error:h(`modal.baseUrlRequired`)});return}if(!t&&/\{[^}]*\}/.test(n)){v({type:`set-error`,error:h(`modal.baseUrlPlaceholderError`)});return}let i={...F,baseUrl:n},a;try{a=Qp(P??{id:`custom`},i)}catch{v({type:`set-error`,error:h(`modal.invalidPreset`)});return}v({type:`set-saving`,saving:!0}),v({type:`set-error`,error:``});try{let t=await fetch(`${e}/api/providers`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(a)});if(!t.ok){let e=await t.json().catch(()=>({}));v({type:`set-error`,error:e.error||h(`modal.failedStatus`,{status:t.status})});return}r(a.name)}catch{v({type:`set-error`,error:h(`modal.networkError`)})}finally{v({type:`set-saving`,saving:!1})}},{cancelLoginOAuth:X,loginOAuth:ae,submitManualCode:oe}=pg({apiBase:e,t:h,aliveRef:y,onAdded:r}),se={setOauthBusy:e=>v({type:`set-oauth-busy`,busy:e}),setOauthMsg:e=>v({type:`set-oauth-msg`,msg:e}),setOauthMsgTone:e=>v({type:`set-oauth-tone`,tone:e}),setOauthUrl:(e,t,n,r,i)=>v({type:`set-oauth-url`,url:e,providerId:t,deviceCode:n,instructions:r,browserLaunch:i}),setManualCode:e=>v({type:`set-manual-code`,code:e}),setManualCodeMsg:e=>v({type:`set-manual-code-msg`,msg:e}),setManualCodeOk:e=>v({type:`set-manual-code-msg`,msg:K,ok:e})},ce=F?t.includes(F.name.trim())&&F.name.trim()!==``:!1,le=e=>{if(!R){if(Eh(e)){v({type:`set-oauth-tos-pending`,providerId:e});return}ae(e,se)}},ue=e=>{oe(e,ee,te,{setManualCodeBusy:e=>v({type:`set-manual-code-busy`,busy:e}),setManualCode:e=>v({type:`set-manual-code`,code:e}),setManualCodeOk:e=>v({type:`set-manual-code-msg`,msg:K,ok:e}),setManualCodeMsg:e=>v({type:`set-manual-code-msg`,msg:e})})},de=P?.id===`custom`,fe=F?.authMode===`local`,pe=P?Yp(P):!1;return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-label":h(`modal.add`),className:`modal-overlay`,children:(0,Q.jsxs)(`div`,{ref:x,className:`modal-card`,children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{children:P?h(`modal.addNamed`,{label:P.label}):h(`modal.add`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon`,"aria-label":h(`common.close`),onClick:n,children:(0,Q.jsx)(ve,{})})]}),!P&&(0,Q.jsx)(gr,{data:k.data}),P?F&&(P.auth===`oauth`&&F.authMode===`oauth`?(0,Q.jsx)(sg,{preset:P,oauthSupported:A,oauthBusy:R,oauthMsg:z,oauthMsgTone:B,oauthUrl:H===P.oauthProvider?V:``,oauthDeviceCode:H===P.oauthProvider?U:``,oauthInstructions:H===P.oauthProvider?W:``,oauthBrowserLaunch:H===P.oauthProvider?G:void 0,manualCode:ee,manualCodeBusy:te,manualCodeMsg:K,manualCodeOk:q,onRequestLogin:le,onCancelLogin:e=>{X(e,se,P.label)},onUseApiKeyInstead:()=>{R&&P.oauthProvider&&X(P.oauthProvider,se,P.label),v({type:`use-api-key-instead`,form:{...F,authMode:`key`}})},onManualCodeChange:e=>v({type:`set-manual-code`,code:e}),onSubmitManualCode:e=>{ue(e)},onBack:()=>{R&&P.oauthProvider&&X(P.oauthProvider,se,P.label),v({type:`back`})}}):(0,Q.jsx)(dg,{preset:P,form:F,endpointChoice:ne,error:L,saving:I,dup:ce,isCustom:de,isLocal:fe,isReservedForward:pe,presetDescription:Y,onFormChange:e=>v({type:`set-form`,form:e}),onEndpointChoiceChange:e=>v({type:`set-endpoint-choice`,choice:e}),onSubmit:()=>{ie()},onUseOauthLogin:()=>v({type:`use-oauth-login`,form:{...F,authMode:`oauth`}}),onBack:()=>v({type:`back`})})):(0,Q.jsx)(ag,{presets:j,usageRank:N,presetsLoading:M,initialTier:i,query:w,onQueryChange:T,onSelectPreset:e=>re(e),onSelectCustom:()=>re(g[0]),onShowNote:e=>C(e),accountRows:o,accountStatus:s,busyProvider:c,onLogin:u,onCancelLogin:d,onLogout:f,onManage:p,loginHint:l,paste:{value:ee,busy:te,message:K,ok:q,onChange:e=>v({type:`set-manual-code`,code:e}),onSubmit:e=>{ue(e)}}})]})}),J&&(0,Q.jsx)(Zh,{providerId:J,providerLabel:P?.label??J,onCancel:()=>v({type:`set-oauth-tos-pending`,providerId:null}),onContinue:()=>{let e=J;e&&(v({type:`set-oauth-tos-pending`,providerId:null}),ae(e,se))}},J),S?.note&&(0,Q.jsx)(og,{providerId:S.id,label:S.label,adapter:S.adapter,note:S.note,onClose:()=>C(null)},S.id)]})}function _g({apiBase:e,config:t,adding:n,modelsNotice:r,addIntent:i,busy:a,addModalAccountRows:o,accountLoginStatus:s,accountLoginHint:c,removeConfirmName:l,removeDefaultProvider:u,codexLoginOpen:d,jsonLeaveOpen:f,jsonSaving:p,oauthTosPending:m,onCloseAdd:h,onAdded:g,onAccountLogin:_,onAccountCancelLogin:v,onAccountLogout:y,onAccountManage:b,onOpenAdd:x,onCloseCodexLogin:S,onCodexAdded:C,onCancelRemove:w,onConfirmRemove:T,onCancelJsonLeave:E,onDiscardJson:D,onSaveJson:O,onCancelOauthTos:k,onContinueOauthTos:A}){return(0,Q.jsxs)(Q.Fragment,{children:[r&&(0,Q.jsx)(Jd,{...r}),n&&(0,Q.jsx)(gg,{apiBase:e,existingNames:Object.keys(t.providers),initialTier:i?.tier,initialCustom:i?.custom,onClose:h,onAdded:g,accountRows:o,accountStatus:s,accountBusy:a,accountLoginHint:c??null,onAccountLogin:_,onAccountCancelLogin:v,onAccountLogout:y,onAccountManage:b,onOpen:x}),d&&(0,Q.jsx)(jl,{apiBase:e,onClose:S,onAdded:C}),l&&(0,Q.jsx)(xh,{providerName:l,defaultProviderName:u,onCancel:w,onConfirm:T}),f&&E&&D&&O&&(0,Q.jsx)(Sh,{saving:p??!1,onCancel:E,onDiscard:D,onSave:O}),m&&(0,Q.jsx)(Zh,{providerId:m.provider,providerLabel:Wh(m.provider),onCancel:k,onContinue:A},`${m.provider}:${m.addAccount?`add`:`login`}`)]})}function vg(e,t,n){return[...qp(e.providers).map(e=>({id:e,label:be(e,n),kind:`codex`,href:`#codex-set`})),...t.toSorted((e,t)=>e.localeCompare(t)).map(e=>({id:e,label:Wh(e),kind:`oauth`}))]}function yg(e,t){let n={...t},r=t.openai;if(r)for(let[t,i]of Object.entries(e.providers))i.authMode===`forward`&&(n[t]=r);return n}function bg(e,t){let[n,r]=(0,Z.useState)({apiBase:e,notice:null});n.apiBase!==e&&r({apiBase:e,notice:null});let i=(0,Z.useRef)(null);(0,Z.useEffect)(()=>()=>{i.current=null},[e]);let a=(0,Z.useCallback)((t,n,a=!1)=>{let o=typeof t==`string`?[t]:t,s={provider:o.join(`, `),providers:o,apiBase:e,initialRegistration:n&&o.length===1,catalogRefreshPending:a};i.current=s,r({apiBase:e,notice:{context:s,loading:!0,failed:!1}})},[e]),o=(0,Z.useCallback)(()=>{i.current=null,r(e=>({...e,notice:null}))},[]),s=(0,Z.useCallback)(n=>{let a=i.current;!a||a.apiBase!==e||t().then(async e=>{e===`superseded`&&i.current===a&&(e=await t()),i.current===a&&r(t=>t.apiBase===a.apiBase?{...t,notice:{context:a,loading:!1,failed:!n||e!==`applied`}}:t)}).catch(()=>{i.current===a&&r(e=>e.apiBase===a.apiBase?{...e,notice:{context:a,loading:!1,failed:!0}}:e)})},[e,t]);return{notice:n.apiBase===e?n.notice:null,open:a,close:o,modelsSettled:s}}var xg=new Set([`dashboard`,`startup`,`providers`,`models`,`subagents`,`advisor`,`logs`,`usage`,`storage`,`remote`,`remote-workspace`,`codex-set`,`integrations`,`claude`]);function Sg(e){let t=Gt(Wt(e??(typeof window<`u`?window.location.hash:``))).path,n=t.split(`/`)[0];return n===`debug`?`logs`:n===`codex-auth`?`codex-set`:n===`combos`||n===`routing`||n===`lab`?`models`:n===`api`||n===`grok`?`integrations`:t===`integrations/claude`||t===`integrations/claude/desktop`?`claude`:t===`claude/account`?`providers`:xg.has(n)?n:`dashboard`}function Cg(e){let t=Wt(e);return Ng(t).replaceTo??t}var wg=[`dashboard/providers`,`dashboard/models`],Tg=[`models/combos`,`models/routing`,`models/compatibility`],Eg=`models/combos/jev-auto`;function Dg(e){let t=e?.trim();return t&&t!==`jev`?`${Eg}?${new URLSearchParams({decisionProvider:t})}`:Eg}function Og(e){let{path:t,query:n}=Gt(Wt(e));if(t!==`models/combos/jev-auto`)return;let r=new URLSearchParams(n).get(`decisionProvider`)?.trim();return r&&r!==`jev`?r:null}var kg=`integrations/keys.integrations/codex.integrations/claude.integrations/claude/desktop.integrations/grok.integrations/cursor.integrations/opencode.integrations/pi.integrations/gentle-shell.integrations/omp.integrations/hermes.integrations/openclaw.integrations/kimi.integrations/gajae.integrations/dsh.integrations/mcode.integrations/zcode.integrations/commandcode.integrations/prime.integrations/aside.integrations/raycast.integrations/omo.integrations/cline.integrations/kilo.integrations/droid.integrations/qoder`.split(`.`),Ag=[`providers`,`models/compatibility`,Eg],jg=`providers?provider=anthropic&tab=accounts`;function Mg(e,t){return e===t||t===`claude`&&[`claude/code`,`claude/desktop`].includes(e)||t===`logs`&&e===`logs/debug`||t===`usage`&&e===`usage/companion`||t===`codex-set`&&(e===`codex-set/prompt`||e===`codex-set/desktop`)||t===`models`&&(Tg.includes(e)||e===`models/combos/jev-auto`)||t===`dashboard`&&(e===`dashboard/update`||wg.includes(e))||t===`integrations`&&kg.includes(e)}function Ng(e){let{path:t,query:n}=Gt(e);if(n||t!==e){let e=Ng(t);return e.replaceTo===null&&Ag.includes(t)?e:{page:e.page,replaceTo:e.replaceTo??t}}let r=Sg(e);return e===`debug`||e.startsWith(`debug/`)?{page:`logs`,replaceTo:`logs/debug`}:e===`codex-auth`||e.startsWith(`codex-auth/`)?{page:`codex-set`,replaceTo:`codex-set`}:e===`combos`||e.startsWith(`combos/`)?{page:`models`,replaceTo:`models/combos`}:e===`routing`||e.startsWith(`routing/`)?{page:`models`,replaceTo:`models/routing`}:e===`lab`||e.startsWith(`lab/`)?{page:`models`,replaceTo:`models/compatibility`}:e===`api`?{page:`integrations`,replaceTo:`integrations/keys`}:e===`integrations/claude`?{page:`claude`,replaceTo:`claude/code`}:e===`integrations/claude/desktop`?{page:`claude`,replaceTo:`claude/desktop`}:e===`claude/account`?{page:`providers`,replaceTo:jg}:e===`claude/settings`?{page:`claude`,replaceTo:`claude/code`}:e===`grok`?{page:`integrations`,replaceTo:`integrations/grok`}:e===`providers/workspace`?{page:`providers`,replaceTo:`providers`}:Mg(e,r)?{page:r,replaceTo:null}:{page:r,replaceTo:r}}var Pg=`models/compatibility`,Fg=`providers`,Ig=200,Lg={inbound:``,upstream:``};function Rg(e){return e!==void 0&&hm(e)?e:``}function zg(e){let t=new URLSearchParams;e.inbound&&t.set(`inbound`,e.inbound),e.upstream&&t.set(`upstream`,e.upstream);let n=t.toString();return n?`${Pg}?${n}`:Pg}function Bg(e,t){let n=Gt(Cg(e));return n.path===t?new URLSearchParams(n.query):null}function Vg(e=window.location.hash){let t=Bg(e,Pg);if(!t)return null;let n=t.get(`inbound`),r=t.get(`upstream`);return{inbound:hm(n)?n:``,upstream:hm(r)?r:``}}function Hg(e){return`${Fg}?${new URLSearchParams({provider:e}).toString()}`}function Ug(e){return`${Fg}?${new URLSearchParams({provider:e,tab:`accounts`}).toString()}`}function Wg(e=window.location.hash){return Bg(e,`providers`)?.get(`tab`)===`accounts`?`accounts`:`settings`}function Gg(e=window.location.hash){let t=Bg(e,`providers`)?.get(`provider`)?.trim()??``;return t&&t.length<=Ig?t:null}function Kg(e){qt(zg(e))}function qg(e){qt(Hg(e))}function Jg(e,t=window){let n=Ug(e);if(Wt(t.location.hash)===n){t.dispatchEvent(new t.Event(`hashchange`));return}qt(n,t)}function Yg(e,t,n,r){let[i,a]=(0,Z.useState)(()=>({name:Gg(),tab:Wg(),seq:0})),[o,s]=(0,Z.useState)(null),c=(0,Z.useRef)(t);if((0,Z.useEffect)(()=>{let e=()=>a(e=>({name:Gg(),tab:Wg(),seq:e.seq+1}));return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[]),i.name&&o?.seq!==i.seq&&e?.includes(i.name)){let e=i.tab===`accounts`?r:void 0;s({seq:i.seq,provider:i.name,tab:e?`accounts`:`settings`}),e?e(i.name):n(i.name)}return(0,Z.useEffect)(()=>{let e=c.current;if(c.current=t,e===t)return;let n=Gg();!n||o?.seq!==i.seq||i.name!==n||(t===null?e===n:t!==n)&&Kt(Fg)},[o,i,t]),o?.tab===`settings`?{token:o.seq+1,provider:o.provider}:{token:0,provider:null}}function Xg(e){let[t,n]=(0,Z.useState)({epoch:0,force:!1}),r=(0,Z.useRef)(0),i=(0,Z.useRef)(!0),a=(0,Z.useRef)(new Map),o=(0,Z.useCallback)(()=>{for(let e of a.current.values())e.resolve(!1);a.current.clear()},[]);(0,Z.useEffect)(()=>(i.current=!0,()=>{i.current=!1,o()}),[e,o]);let s=(0,Z.useCallback)((e=!1)=>{o();let t=++r.current;return i.current&&n({epoch:t,force:e}),t},[o]),c=(0,Z.useCallback)((e,t,n)=>{let r=a.current.get(e);!r||!i.current||(r[t]=n,r.accounts!==void 0&&r.report!==void 0&&(a.current.delete(e),r.resolve(r.accounts&&r.report)))},[]);return{quotaRefresh:t,invalidateProviderQuotas:s,settleQuotaRefresh:(0,Z.useCallback)((e,t)=>c(t,`report`,e),[c]),beginQuotaRefresh:(0,Z.useCallback)(e=>{if(!i.current)return Promise.resolve(!1);let t=s(!0),n=new Promise(n=>{a.current.set(t,{resolve:n,accounts:!e||void 0})});return e&&Promise.resolve().then(e).then(e=>c(t,`accounts`,e),()=>c(t,`accounts`,!1)),n},[c,s])}}function Zg(e,t,n){let r=(0,Z.useRef)(n);(0,Z.useLayoutEffect)(()=>{r.current=n});let i=(0,Z.useRef)(()=>{});return(0,Z.useEffect)(()=>{if(!t)return;let n=!1,a=null,o=250,s=null,c=()=>{a!==null&&window.clearTimeout(a),a=null},l=e=>{e.controller.abort(),e.reader?.cancel().catch(()=>{})},u=()=>{if(n||s)return;c();let t={controller:new AbortController,lastActivity:Date.now()};s=t,(async()=>{try{let i=await fetch(`${e}/api/accounts/events`,{signal:t.controller.signal,credentials:`same-origin`,headers:{Accept:`text/event-stream`}});if(!i.ok||!i.headers.get(`content-type`)?.includes(`text/event-stream`)||!i.body)throw Error(`Account selection stream unavailable`);if(n||t.controller.signal.aborted){await i.body.cancel();return}let a=i.body.getReader();t.reader=a,t.openedAt=Date.now();let o=new TextDecoder,s=new Map,c=new Map,l=!1,u=!1,d=()=>{u||(u=!0,Promise.resolve().then(async()=>{if(u=!1,n||t.controller.signal.aborted)return;let e=l?[void 0]:[...c.values()];l=!1,c.clear(),await Promise.all(e.map(e=>r.current(e)))}).catch(()=>{}))},f=``,p=``,m=[],h=0,g=()=>{let e;try{e=JSON.parse(m.join(`
4
4
  `))}catch{return}if(!(!e||typeof e!=`object`||typeof e.revision!=`number`||!Number.isSafeInteger(e.revision)||e.revision<0)){if(p===`ready`)s.clear(),l=!0,d();else if(p===`account-selection`&&typeof e.provider==`string`&&e.provider&&(e.kind===`oauth`||e.kind===`api-key`)){let t=`${e.kind}:${e.provider}`;if(e.revision<=(s.get(t)??-1))return;s.set(t,e.revision),c.set(t,{provider:e.provider,kind:e.kind}),d()}}};for(;!n&&!t.controller.signal.aborted;){let e=await a.read();if(e.done)break;t.lastActivity=Date.now(),f+=o.decode(e.value,{stream:!0});let n;for(;(n=f.indexOf(`
5
5
  `))!==-1;){let e=f.slice(0,n).replace(/\r$/,``);if(f=f.slice(n+1),h+=e.length,h>16384)throw Error(`Account selection event too large`);e?e.startsWith(`event:`)?p=e.slice(6).replace(/^ /,``):e.startsWith(`data:`)&&m.push(e.slice(5).replace(/^ /,``)):(g(),p=``,m=[],h=0)}if(f.length+h>16384)throw Error(`Account selection event too large`)}}catch{}finally{if(l(t),s===t&&(s=null,!n)){t.openedAt!==void 0&&Date.now()-t.openedAt>=1e4&&(o=250);let e=o;o=Math.min(o*2,5e3),a=window.setTimeout(()=>{a=null,u()},e)}}})()};return i.current=()=>{s&&Date.now()-s.lastActivity>6e4&&(l(s),s=null),u()},u(),()=>{n=!0,i.current=()=>{},c(),s&&l(s)}},[e,t]),(0,Z.useCallback)(()=>i.current(),[])}function Qg({apiBase:e}){let t=O(),n=`ocx.providers.config.v1:${e}`,[r,i]=(0,Z.useState)(()=>Ua(n)),[a,o]=(0,Z.useState)(!1),[s,c]=(0,Z.useState)(``),[l,u]=(0,Z.useState)(!1),[d,f]=(0,Z.useState)(`err`),[p,m]=(0,Z.useState)(0),[h,g]=(0,Z.useState)([]),[_,v]=(0,Z.useState)({}),[y,b]=(0,Z.useState)(null),[x,S]=(0,Z.useState)(null),[C,w]=(0,Z.useState)(null),[T,E]=(0,Z.useState)(null),[D,k]=(0,Z.useState)(null),[A,j]=(0,Z.useState)(!1),[M,P]=(0,Z.useState)(0),[F,I]=(0,Z.useState)(null),[L,R]=(0,Z.useState)({token:0,provider:null}),z=(0,Z.useRef)(!0),B=(0,Z.useRef)(null),V=(0,Z.useRef)(!1),H=(0,Z.useCallback)((e,t=!0,n)=>{c(e),u(t),f(n??(t?`ok`:`err`)),m(e=>e+1)},[]),U=(0,Z.useCallback)(()=>{c(``),u(!1),f(`err`)},[]),W=(0,Z.useCallback)(e=>{if(e.validationPending||e.catalogRefreshPending){c(t(e.validationPending?`pws.healthLabel.validationPending`:`codexAuth.catalogRefreshPending`)),u(!1),f(`warn`),m(e=>e+1);return}H(t(`codexAuth.accountAdded`),!0)},[H,t]);(0,Z.useEffect)(()=>(z.current=!0,()=>{z.current=!1}),[]),(0,Z.useEffect)(()=>{if(!s||!l)return;let e=window.setTimeout(U,4500);return()=>window.clearTimeout(e)},[s,l,p,U]);let G=(0,Z.useCallback)(e=>{o(!1),E(null),w(e),R(t=>({token:t.token+1,provider:e}))},[]),ee=Yg(r?Object.keys(r.providers):null,C,w,G),te=Vt(`add-provider-presets:${e}`,[e],async t=>{let n=await fetch(`${e}/api/provider-presets`,{signal:t});if(!n.ok)throw Error(String(n.status));let r=await n.json();return Array.isArray(r.providers)&&r.providers.length>0?r.providers:null});Vt(hr(e),[e],async t=>await mr(await fetch(`${e}/api/usage?range=30d`,{signal:t})),{deadlineMs:6e4});let{quotaRefresh:K,invalidateProviderQuotas:q,settleQuotaRefresh:ne,beginQuotaRefresh:J}=Xg(e),{fetchConfig:Y,fetchOauth:re,fetchProviderQuotas:ie}=Xh({apiBase:e,t,setConfig:i,setOauthProviders:g,setOauthStatus:v,notify:H,invalidateProviderQuotas:q,configCacheKey:n}),X=(0,Z.useCallback)(async()=>{await Y()},[Y]),ae=bg(e,Y),oe=ae.open,se=(0,Z.useCallback)(e=>{G(e),oe(e,!1)},[G,oe]),ce=hu(e),le=ce.activeNeedsReauth,ue=(0,Z.useMemo)(()=>{let e=ce.accounts;if(e.length===0&&ce.loadState===`loading`)return _;let t=e.find(e=>e.isMain)??e[0],n=!!t&&!!t.email&&t.email!==`Codex App login`,r=e.some(e=>!e.isMain&&(e.hasCredential||e.email)),i=n||r,a=n?t?.email:e.find(e=>!e.isMain&&e.email)?.email??void 0;return{..._,openai:{loggedIn:i,...a?{email:a}:{},...le?{needsReauth:!0}:{}}}},[_,ce.accounts,ce.loadState,le]),{accountSets:de,setAccountSets:fe,accountLoadStates:pe,switchingAccounts:me,pausingAccounts:he,keyPools:ge,fetchAccountSets:ve,fetchKeyPools:ye,refreshAccountRosters:be,oauthCardProviders:xe,keyCardProviders:Se,switchAccount:Ce,pauseAccount:we,setAccountPoolThreshold:Te,setAccountThreshold:Ee,switchApiKey:De,removeApiKey:Oe,addApiKeyValue:ke,editCredentialAlias:Ae,removeAccount:je,activeAccountNeedsReauth:Me}=Lh({apiBase:e,t,config:r,oauthStatus:ue,aliveRef:z,notify:H,fetchConfig:X,fetchOauth:re,fetchProviderQuotas:ie,codexActiveNeedsReauth:le}),Ne=(0,Z.useCallback)(e=>e&&!(e.kind===`oauth`?xe:Se).includes(e.provider)?Promise.resolve(!0):be(e),[be,xe,Se]),Pe=Zg(e,r!==null,Ne),Fe=JSON.stringify([e,xe.toSorted(),Se.toSorted()]),Ie=(0,Z.useRef)(null);Vt(`provider-rosters:${Fe}`,[Fe],async e=>Ie.current===Fe?(Pe(),be(void 0,e)):(Ie.current=Fe,!0),{enabled:r!==null,pollMs:3e4});let{draft:Le,setDraft:Re,jsonEditorOpen:ze,jsonSaving:Be,jsonLeaveOpen:Ve,saveConfig:He,openJsonEditor:Ue,discardJsonEditor:We,requestCloseJsonEditor:Ge,restoreJsonEditor:Ke,jsonIsDirty:qe,setJsonLeaveOpen:Je}=Bh({apiBase:e,config:r,notify:H,fetchConfig:X,fetchProviderQuotas:ie,onSaved:e=>{e.length&&ae.open(e,!0),P(e=>e+1)},t}),Ye=(0,Z.useCallback)(e=>{let t=r?.providers[e],n=t?.authMode,i=t&&_e(e,t)?()=>ce.load(!0,{validatePending:!0}):n===`oauth`?()=>ve([e],!0):n===`forward`||n===`local`?void 0:()=>ye([e],!0);return J(i)},[r,ce,ve,ye,J]),Xe=(0,Z.useCallback)(()=>J(),[J]);(0,Z.useEffect)(()=>{B.current!==e&&(B.current=e,Promise.resolve().then(()=>{X(),re()}))},[e,X,re]);let Ze=()=>P(e=>e+1),{cancelLoginOAuth:Qe,loginOAuth:$e,logoutOAuth:et,onNativeLoginSettled:tt}=Gh({apiBase:e,t,aliveRef:z,accountSets:de,setAccountSets:fe,setBusy:b,setStatus:c,setLoginInfo:S,setOauthStatus:v,notify:H,fetchConfig:X,fetchOauth:re,fetchAccountSets:ve,fetchProviderQuotas:ie,bumpModelsRefresh:Ze,onLoginSettled:se}),nt=(0,Z.useRef)(tt);(0,Z.useEffect)(()=>{nt.current=tt},[tt]),(0,Z.useEffect)(()=>yp(e,e=>{nt.current(`kiro`,e).catch(()=>{})}),[e]);let{removeProvider:rt,confirmRemoveProvider:it,setProviderDisabled:at,setDefaultProvider:ot,updateProvider:st}=Yh({apiBase:e,t,removeBusyRef:V,workspaceSelected:C,setWorkspaceSelected:w,setRemoveConfirmName:k,notify:H,fetchConfig:X,fetchOauth:re,fetchProviderQuotas:ie,refreshCodexAccount:()=>ce.load(!0)}),ct=(e,t=!1,n)=>{if(y!==e){if(Eh(e)){I({provider:e,addAccount:t,...n?{accountId:n}:{}});return}$e(e,t,n)}};if(!r)return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`page-head`,children:(0,Q.jsx)(`h2`,{children:t(`nav.providers`)})}),s?(0,Q.jsx)(sn,{tone:d,onDismiss:U,dismissLabel:t(`common.close`),children:s}):(0,Q.jsxs)(`div`,{className:`providers-workspace providers-workspace--boot`,"aria-busy":`true`,children:[(0,Q.jsx)(`div`,{className:`providers-workspace-rail providers-workspace-rail--boot`,"aria-hidden":`true`}),(0,Q.jsx)(`div`,{className:`providers-workspace-main`,children:(0,Q.jsxs)(`p`,{className:`muted`,children:[(0,Q.jsx)(`span`,{className:`spin`,"aria-hidden":`true`}),` `,t(`prov.loadingConfig`)]})})]})]});let lt=vg(r,h,t),ut=yg(r,ue),dt=e=>r.providers[e]?.authMode===`forward`,ft=async(n,i=!1)=>{if(n===`openai`){if(y===`openai`)return;let n=r.providers.openai,i=Jp(n);if(i===`invalid`){H(t(`codexAuth.openaiMissing`),!1);return}if(i===`absent`||i===`disabled`){b(`openai`);try{await tm(e,i),await X()}catch(e){e instanceof em?H(t(e.i18nKey),!1):H(e instanceof Error?e.message:t(`prov.saveFailed`),!1);return}finally{z.current&&b(e=>e===`openai`?null:e)}}j(!0);return}if(dt(n)){j(!0);return}(r.providers[n]?.authMode===`oauth`||h.includes(n))&&ct(n,i)},pt=e=>{G(e)},mt={onLogin:ct,onNativeLoginSettled:tt,onCancelLogin:Qe,onLogout:et,onReauth:(e,t)=>ct(e,!0,t),onSwitchAccount:Ce,onPauseAccount:we,onAccountPoolThreshold:Te,onAccountThreshold:Ee,onRemoveAccount:je,onRetryAccounts:async e=>{await ve([e])},onAddApiKey:ke,onSwitchApiKey:De,onRemoveApiKey:Oe,onEditAlias:Ae,onRefreshQuota:Ye};return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`page-head`,children:[(0,Q.jsx)(`h2`,{children:t(`nav.providers`)}),(0,Q.jsx)(`div`,{className:`row`,children:(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>o(!0),children:[(0,Q.jsx)(N,{}),t(`prov.add`)]})})]}),s&&(0,Q.jsx)(sn,{tone:d,onDismiss:U,dismissLabel:t(`common.close`),children:s}),(0,Q.jsx)(Ws,{onRemoveProvider:rt,providers:r.providers,apiBase:e,defaultProvider:r.defaultProvider,selectedName:C,onSelect:w,onAddProvider:e=>{E(e??null),o(!0)},onEditConfig:Ue,jsonEditor:{open:ze,draft:Le,isDirty:qe,onDraftChange:Re,onSave:()=>He(),onClose:Ge,onRestore:Ke},jsonSaving:Be,modelsRefreshToken:M,onModelsSettled:ae.modelsSettled,activeAccountNeedsReauth:Me,quotaRefreshEpoch:K.epoch,quotaForceRefresh:K.force,onQuotaRefreshSettled:ne,onRefreshAllQuotas:Xe,detail:(t,n)=>{let i=ut[t.name]??_[t.name];return(0,Q.jsx)(Ch,{item:t,preset:Xs(t,te.data??[]),usageTotals:n.usageTotals,modelUsage:n.modelUsage,quotaReport:n.quotaReport,availableModels:n.availableModels,hasLiveModels:n.hasLiveModels,selectedModels:n.selectedModels,modelRows:n.modelRows,modelRevision:n.modelRevision,modelRowsReady:n.modelRowsReady,onOpenModels:()=>qt(`models`),onCreateJevAuto:Lr(t)?()=>qt(Dg(t.name)):void 0,modelsLoading:n.modelsLoading,modelsLoadFailed:n.modelsLoadFailed,onRetryModels:n.onRetryModels,oauthEmail:i?.email,onDeselect:()=>w(null),apiBase:e,oauth:i,accounts:de[t.name]?.accounts??[],keys:ge[t.name]??[],accountLoadState:pe[t.name]??(t.authMode===`oauth`?`idle`:`ready`),accountsFocusToken:L.token,accountsFocusProvider:L.provider,settingsFocusToken:ee.token,settingsFocusProvider:ee.provider,switchingAccountId:me[t.name]?.accountId??null,pausingAccountId:he[t.name]?.accountId??null,busyProvider:y,loginHint:x,authHandlers:mt,onRefreshQuota:()=>Ye(t.name),isDefault:t.name===r.defaultProvider,onRemoveProvider:rt,onSetDisabled:at,onSetDefault:e=>{ot(e)},onUpdateProvider:st,codexController:ce},t.name)}}),(0,Q.jsx)(_g,{apiBase:e,config:r,adding:a,modelsNotice:ae.notice?{provider:ae.notice.context.provider,initialRegistration:ae.notice.context.initialRegistration,catalogRefreshPending:ae.notice.context.catalogRefreshPending,loading:ae.notice.loading,failed:ae.notice.failed,providerKnown:ae.notice.context.providers.every(e=>!!r.providers[e]),selection:ae.notice.context.providers.length===1?r.providers[ae.notice.context.provider]?.initialModelSelection:ae.notice.context.providers.some(e=>r.providers[e]?.initialModelSelection?.status===`pending`)?{status:`pending`}:void 0,onClose:ae.close,onOpenModels:()=>{ae.close(),qt(`models`)},onRetry:()=>{let e=ae.notice.context;ae.open(e.providers,e.initialRegistration,e.catalogRefreshPending),Ze()}}:null,addIntent:T,busy:y,addModalAccountRows:lt,accountLoginStatus:ut,accountLoginHint:x,removeConfirmName:D,removeDefaultProvider:D===r.defaultProvider?Object.entries(r.providers).find(([e,t])=>e!==D&&t.disabled!==!0)?.[0]??null:null,codexLoginOpen:A,jsonLeaveOpen:Ve,jsonSaving:Be,oauthTosPending:F,onCloseAdd:()=>{y&&Qe(y),o(!1),E(null)},onAdded:e=>{o(!1),E(null),U(),ae.open(e,!r.providers[e]),X(),re(),ie(!0),Ze()},onAccountLogin:ft,onAccountCancelLogin:e=>{Qe(e)},onAccountLogout:e=>{et(e)},onAccountManage:pt,onOpenAdd:re,onCloseCodexLogin:()=>j(!1),onCodexAdded:e=>{j(!1),W(e),e.validationPending||ae.open(`openai`,!r.providers.openai,e.catalogRefreshPending),X(),re(),ie(!0),Ze()},onCancelRemove:()=>k(null),onConfirmRemove:()=>{it(D)},onCancelJsonLeave:()=>{Be||Je(!1)},onDiscardJson:We,onSaveJson:()=>{He()},onCancelOauthTos:()=>I(null),onContinueOauthTos:()=>{let e=F;e&&(I(null),$e(e.provider,e.addAccount,e.accountId))}})]})}function $g(e){let{t:n}=t();return e.state===`stale`?(0,Q.jsxs)(`div`,{className:`codex-stale-banner`,role:`status`,children:[(0,Q.jsx)(`span`,{className:`codex-stale-banner-text`,children:n(`models.staleBanner`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:e.controller.restarting,onClick:()=>{e.controller.restart()},children:e.controller.restarting?n(`dash.codexRestarting`):n(`dash.codexRestart`)})]}):null}function e_(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`&&e.trim().length>0)}function t_(e){return e===null||e===`alphabetical`||e===`provider`||e===`most-used`}function n_(e){if(typeof e!=`object`||!e)return!1;let t=e;return e_(t.pickerOrder)&&t_(t.pickerOrderMode)}function r_(e){if(!n_(e))return!1;let t=e;return e_(t.pickerAvailable)&&(!(`chosen`in t)||Array.isArray(t.chosen)&&t.chosen.every(e=>typeof e==`string`))}function i_(e){return Array.isArray(e)&&e.every(e=>typeof e==`object`&&!!e&&typeof e.provider==`string`&&typeof e.model==`string`&&(e.resolvedModel===void 0||typeof e.resolvedModel==`string`)&&typeof e.requests==`number`&&Number.isFinite(e.requests)&&e.requests>=0)}function a_(e){let t=e.indexOf(`/`);return t<0?[``,e]:[e.slice(0,t),e.slice(t+1)]}var o_=(e,t)=>e.localeCompare(t,`en`);function s_(e,t){let[n,r]=a_(e),[i,a]=a_(t);return o_(n,i)||o_(r,a)}function c_(e,t,n=[],r=[]){if(e==="default")return null;let i=[...new Set(t)];if(e===`alphabetical`)return i.sort((e,t)=>o_(a_(e)[1],a_(t)[1])||s_(e,t));if(e===`provider`)return i.sort(s_);let a=new Set(i),o=new Map,s=new Map;for(let e of r){if(!a.has(e.namespaced))continue;let t=JSON.stringify([e.provider,e.id]),n=o.get(t)??new Set;n.add(e.namespaced),o.set(t,n);let r=s.get(e.namespaced)??new Set;r.add(t),s.set(e.namespaced,r)}let c=e=>(s.get(e)?.size??0)>1?null:e,l=(e,t)=>{let n=o.get(JSON.stringify([e,t]));if(n)return n.size===1?c([...n][0]):null;if(t.startsWith(`${e}/`)&&a.has(t))return c(t);let r=`${e}/${t}`;return!t.includes(`/`)&&a.has(r)?c(r):void 0},u=new Map;for(let e of n){let t=l(e.provider,e.model);t&&u.set(t,(u.get(t)??0)+e.requests)}return i.sort((e,t)=>(u.get(t)??0)-(u.get(e)??0)||s_(e,t))}function l_(e,t,n){if(t.length===0)return`default`;if(t.some(e=>!e.includes(`/`)))return`custom`;if(n===`alphabetical`||n===`provider`||n===`most-used`)return n;let r=new Set(e);if(new Set(t).size!==t.length||t.length!==r.size||t.some(e=>!r.has(e)))return`custom`;for(let n of[`alphabetical`,`provider`]){let r=c_(n,e);if(r!==null&&r.length===t.length&&r.every((e,n)=>e===t[n]))return n}return`custom`}function u_(e,t,n){let r=new Set(t.filter(e=>e.includes(`/`))),i=e=>{if(r.has(e))return e;let t=new Set(n.filter(t=>r.has(t.namespaced)&&e===`${t.provider}/${t.id}`).map(e=>e.namespaced));return t.size===1?[...t][0]:void 0};return[...new Set(e.map(e=>i(e.trim())).filter(e=>e!==void 0))]}function d_(e,t,n){return JSON.stringify([e,t,n.pickerAvailable,n.chosen??null,n.pickerOrder,n.pickerOrderMode])}function f_(e,t){let n=new Set(e.filter(e=>e.includes(`/`))),r=new Map,i=new Map;for(let e of t){if(!n.has(e.namespaced))continue;let t=`${e.provider}/${e.id}`,a=r.get(e.namespaced)??new Set,o=i.get(t)??new Set;a.add(t),o.add(e.namespaced),r.set(e.namespaced,a),i.set(t,o)}return[...n].every(e=>{let t=r.get(e);return t?.size===1&&i.get([...t][0])?.size===1})}function p_(e,t){if(e.chosen===void 0||e.pickerOrder.some(e=>!e.includes(`/`)))return null;let n=[...new Set(e.pickerAvailable.filter(e=>e.includes(`/`)))];if(!f_(n,t))return null;let r=new Map(e.chosen.map((e,t)=>[e,t])),i=new Map(t.map(e=>[e.namespaced,`${e.provider}/${e.id}`])),a=e=>r.get(e)??r.get(i.get(e)),o=n.filter(e=>a(e)!==void 0).sort((e,t)=>a(e)-a(t)),s=u_(e.pickerOrder,n,t);return{fixed:o,order:[...new Set([...o,...s,...n])]}}function m_(e,t,n,r){let i=[...e];return t===n||r.includes(t)||r.includes(n)||!i.includes(t)||!i.includes(n)?i:(i.splice(i.indexOf(t),1),i.splice(i.indexOf(n),0,t),i)}function h_(e,t,n,r){let i=[...e],a=i.indexOf(t),o=a+n;return a<0||o<0||o>=i.length||r.includes(t)||r.includes(i[o])||([i[a],i[o]]=[i[o],i[a]]),i}var g_=`application/x-ocx-picker-order`,__=0;function v_(){let e=++__;if(typeof crypto<`u`&&typeof crypto.randomUUID==`function`)try{return`${e}:${crypto.randomUUID()}`}catch{}return`picker-${Date.now().toString(36)}-${e}`}function y_({apiBase:e,active:t,identities:n,onAccepted:r,onBusyChange:i}){let a=O(),[o,s]=(0,Z.useState)(null),[c,l]=(0,Z.useState)([]),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(null),[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(``),[v,y]=(0,Z.useState)(null),[b,x]=(0,Z.useState)(null),S=(0,Z.useRef)({generation:0,flight:null,drag:null}),[C,w]=(0,Z.useState)({apiBase:e,active:t,onBusyChange:i}),T=JSON.stringify(n.map(({provider:e,id:t,namespaced:n})=>[e,t,n])),E=(0,Z.useRef)(T);(0,Z.useLayoutEffect)(()=>{E.current=T},[T]);let D=o!==null&&o.identities!==T,k=!t||u||!o||f!==null||D,j=o!==null&&JSON.stringify(c)!==JSON.stringify(o.order),M=(0,Z.useCallback)(()=>{S.current.drag=null,y(null),x(null)},[]);(C.apiBase!==e||C.active!==t||C.onBusyChange!==i)&&(w({apiBase:e,active:t,onBusyChange:i}),s(null),l([]),p(null),h(!1),d(!1));let[N,P]=(0,Z.useState)({disabled:k,snapshot:o,identitySignature:T});(N.disabled!==k||N.snapshot!==o||N.identitySignature!==T)&&(P({disabled:k,snapshot:o,identitySignature:T}),y(null),x(null)),(0,Z.useLayoutEffect)(()=>{let e=S.current;return e.generation++,()=>{e.generation++,e.flight?.controller.abort(),e.flight?.clear(),e.flight=null,e.drag=null,i(!1)}},[e,t,i]),(0,Z.useLayoutEffect)(()=>{S.current.drag=null},[k,o,T]);let F=async a=>{if(!t||S.current.flight||a&&(k||!j))return;let u=S.current.generation,f=A(15e3);S.current.flight=f,d(!0),i(!0),h(!1),M();let m=()=>S.current.generation===u&&S.current.flight===f,g=()=>m()&&!f.signal.aborted&&E.current===T;try{let t=await fetch(`${e}/api/subagent-models`,{signal:f.signal});if(!g())return;let i=await hn(t);if(!g())return;if(!r_(i))throw Error(`Invalid picker settings`);let d=d_(e,u,i);if(a&&(!o||d!==o.signature||T!==o.identities)){p(`models.pickerOrder.changed`);return}let m=p_(i,n);if(!m){p(i.pickerOrder.some(e=>!e.includes(`/`))?`models.pickerOrder.nativeLocked`:i.chosen===void 0?`models.pickerOrder.unknownChosen`:`models.pickerOrder.catalogRequired`);return}if(!a){s({...m,signature:d,identities:T}),l(m.order),p(null),_(``);return}let h=await fetch(`${e}/api/subagent-models`,{method:`PUT`,headers:{"Content-Type":`application/json`},signal:f.signal,body:JSON.stringify({pickerOrder:c,pickerOrderMode:null})});if(!g())return;let v=await hn(h);if(!g())return;if(!n_(v)||!(`ok`in v)||v.ok!==!0)throw Error(`Invalid picker receipt`);l(v.pickerOrder),p(`models.pickerOrder.savedReload`),r({pickerOrder:v.pickerOrder,pickerOrderMode:v.pickerOrderMode,catalogRefresh:`catalogRefresh`in v?v.catalogRefresh:void 0})}catch{m()&&E.current===T&&h(!0)}finally{f.clear(),m()&&(S.current.flight=null,d(!1),i(!1))}},I=(0,Z.useEffectEvent)(async()=>{let e=S.current,n=e.generation;await Promise.resolve(),t&&e.generation===n&&F(!1)});(0,Z.useEffect)(()=>{t&&I()},[e,t,i]);let L=(e,t)=>{k||(l(t),_(a(`models.pickerOrder.position`,{model:e,position:t.indexOf(e)+1,total:t.length})),M())},R=new Set(c),z=new Set(o?.fixed),B=e=>!k&&R.has(e)&&!z.has(e),V=(e,t)=>{!S.current.drag||S.current.drag.id===t||!B(S.current.drag.id)||!B(t)||!e.dataTransfer.types.includes(g_)||(e.preventDefault(),e.dataTransfer.dropEffect=`move`,x(t))};return(0,Q.jsxs)(`section`,{className:`picker-order-editor`,"aria-label":a(`models.pickerOrder.custom`),"aria-busy":u,children:[(0,Q.jsx)(`p`,{className:`muted text-label`,children:a(`models.pickerOrder.editorHint`)}),(f||D)&&(0,Q.jsx)(`p`,{role:`alert`,children:a(f??`models.pickerOrder.changed`)}),m&&(0,Q.jsx)(`p`,{role:`alert`,children:a(`models.pickerOrder.requestFailed`)}),o&&c.length===0&&(0,Q.jsx)(`p`,{children:a(`models.pickerOrder.empty`)}),(0,Q.jsx)(`ol`,{className:`picker-order-list`,children:c.map((e,t)=>{let n=z.has(e);return(0,Q.jsxs)(`li`,{className:`picker-order-row${v===e?` cwi-target-row--dragging`:``}${b===e?` cwi-target-row--drop`:``}`,onDragOver:t=>V(t,e),onDragLeave:()=>x(null),onDrop:t=>{let n=S.current.drag;n&&n.id!==e&&n.token===t.dataTransfer.getData(g_)&&B(n.id)&&B(e)&&(t.preventDefault(),L(n.id,m_(c,n.id,e,o?.fixed??[]))),M()},onDragEnd:M,children:[(0,Q.jsx)(`button`,{type:`button`,className:`cwi-target-grip`,disabled:k||n,draggable:!k&&!n,"aria-label":a(`models.pickerOrder.dragModel`,{model:e}),onDragStart:t=>{if(!B(e)){t.preventDefault();return}let n=v_();S.current.drag={id:e,token:n},y(e),t.dataTransfer.effectAllowed=`move`,t.dataTransfer.setData(g_,n)},children:(0,Q.jsx)(Fe,{width:14,height:14,"aria-hidden":`true`})}),(0,Q.jsx)(`code`,{className:`picker-order-name`,children:e}),n&&(0,Q.jsx)(`span`,{className:`muted text-caption`,children:a(`models.pickerOrder.featured`)}),(0,Q.jsxs)(`span`,{className:`picker-order-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:k||n||t===0||z.has(c[t-1]),"aria-label":a(`models.pickerOrder.upModel`,{model:e}),onClick:()=>L(e,h_(c,e,-1,o?.fixed??[])),children:(0,Q.jsx)(Ge,{width:14,height:14,"aria-hidden":`true`})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:k||n||t===c.length-1||z.has(c[t+1]),"aria-label":a(`models.pickerOrder.downModel`,{model:e}),onClick:()=>L(e,h_(c,e,1,o?.fixed??[])),children:(0,Q.jsx)(Qe,{width:14,height:14,"aria-hidden":`true`})})]})]},e)})}),(0,Q.jsx)(`p`,{role:`status`,"aria-live":`polite`,children:g}),(0,Q.jsxs)(`div`,{className:`row`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:k||!j,onClick:()=>void F(!0),children:a(u?`models.pickerOrder.applying`:`models.pickerOrder.saveDraft`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:!t||u,onClick:()=>void F(!1),children:a(`models.pickerOrder.reloadDraft`)})]})]})}function b_({apiBase:e,onSaved:t}){let n=O(),[r,i]=(0,Z.useState)(!0),[a,o]=(0,Z.useState)(!1),[s,c]=(0,Z.useState)(!1),[l,u]=(0,Z.useState)(!1),[d,f]=(0,Z.useState)(null),p=(0,Z.useRef)(!0),m=(0,Z.useRef)(!1),h=(0,Z.useRef)(0),g=(0,Z.useCallback)(async()=>{if(m.current)return;let t=++h.current,n=A(15e3);try{let r=await fetch(`${e}/api/settings`,{signal:n.signal});if(!r.ok)throw Error(`load`);let a=await r.json();if(m.current||t!==h.current)return;if(typeof a.fastRows!=`boolean`)throw Error(`shape`);p.current=a.fastRows,i(a.fastRows),o(!0),u(!1)}catch{!m.current&&t===h.current&&u(!0)}finally{n.clear()}},[e]);(0,Z.useEffect)(()=>{let e=window.setTimeout(()=>{g()},0),t=ua(()=>{g()},3e4);return()=>{window.clearTimeout(e),t()}},[g]);let _=(0,Z.useCallback)(async()=>{if(m.current||!a)return;let r=p.current,s=!r;p.current=s,i(s),m.current=!0,c(!0),f(null),h.current+=1;let l=A(15e3);try{let r=await hn(await fetch(`${e}/api/settings`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({fastRows:s}),signal:l.signal}))??{};if(r.ok!==!0||typeof r.fastRows!=`boolean`)throw Error(`unconfirmed`);p.current=r.fastRows,i(r.fastRows),o(!0),u(!1),f(r.catalogRefreshPending===!0?{tone:`warn`,message:n(`models.fastRows.refreshHint`)}:{tone:`ok`,message:n(r.fastRows?`models.fastRows.enabled`:`models.fastRows.disabled`)}),t?.()}catch{let a=A(15e3);try{let t=await fetch(`${e}/api/settings`,{signal:a.signal});if(!t.ok)throw Error(`reconcile`);let r=await t.json();if(typeof r.fastRows!=`boolean`)throw Error(`shape`);p.current=r.fastRows,i(r.fastRows),o(!0),u(!1),f(r.fastRows===s?{tone:`warn`,message:n(`models.fastRows.refreshHint`)}:{tone:`err`,message:n(`models.fastRows.updateFailed`)})}catch{p.current=r,i(r),f({tone:`err`,message:n(`models.fastRows.updateFailed`)})}finally{a.clear(),t?.()}}finally{l.clear(),m.current=!1,c(!1)}},[e,a,t,n]),v=l&&!a;return(0,Q.jsxs)(`div`,{className:`card card-row fast-rows-card`,"aria-busy":s||!a&&!v||void 0,children:[(0,Q.jsxs)(`div`,{className:`fast-rows-copy`,children:[(0,Q.jsx)(`strong`,{children:n(`models.fastRows.title`)}),(0,Q.jsx)(`div`,{className:`card-sub`,role:v?`status`:void 0,children:n(v?`models.fastRows.loadFailed`:a?`models.fastRows.desc`:`common.loading`)}),a&&l&&(0,Q.jsx)(`div`,{className:`card-sub faint`,role:`status`,children:n(`models.fastRows.loadFailed`)})]}),(0,Q.jsxs)(`div`,{className:`fast-rows-controls`,children:[l&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{g()},disabled:s,children:n(`common.retry`)}),a&&(0,Q.jsx)(`button`,{type:`button`,className:`toggle ${r?`on`:``}`,onClick:()=>{_()},disabled:s,"aria-pressed":r,"aria-label":n(`models.fastRows.title`),title:n(`models.fastRows.title`),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})})]}),d&&(0,Q.jsx)(`div`,{className:`fast-rows-feedback is-${d.tone}`,role:d.tone===`err`?`alert`:`status`,"aria-atomic":`true`,children:d.message})]})}function x_({showOrderEditor:e,onSaved:t,...n}){return(0,Q.jsxs)(Q.Fragment,{children:[e&&(0,Q.jsx)(y_,{...n},n.apiBase),(0,Q.jsx)(b_,{apiBase:n.apiBase,onSaved:t})]})}var S_={operator:`models.displayNameSourceOperator`,provider:`models.displayNameSourceProvider`,fallback:`models.displayNameSourceFallback`};function C_({model:e,saving:t,requestError:n,currentNamePending:r=!1,mutationOutcomeUnknown:i=!1,onRetry:a,onEdit:o,onSave:s,onReset:c,onClose:l}){let u=O(),d=(0,Z.useRef)(null),f=(0,Z.useRef)(null),p=(0,Z.useRef)(null),m=(0,Z.useRef)(t),h=(0,Z.useId)(),g=(0,Z.useId)(),_=(0,Z.useId)(),[v,y]=(0,Z.useState)(e),[b,x]=(0,Z.useState)(e.displayNameOverride??``),[S,C]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{let e=d.current;return e&&!e.open&&e.showModal(),f.current?.focus(),()=>{e?.open&&e.close()}},[]),(0,Z.useEffect)(()=>{let e=m.current&&!t&&!!n;m.current=t,e&&(i?p.current?.focus():f.current?.focus())},[n,t,i]),v!==e&&(y(e),x(e.displayNameOverride??``),C(null));let w=S?u(S):null,T=w??n,E=e.displayNameSource?S_[e.displayNameSource]:`models.displayNameSourceFallback`,D=()=>{t||l()};return(0,Q.jsxs)(`dialog`,{ref:d,className:`modal-overlay`,"aria-labelledby":h,onCancel:e=>{e.preventDefault(),D()},children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":u(`common.close`),tabIndex:-1,disabled:t,onClick:D}),(0,Q.jsxs)(`form`,{className:`modal-card model-display-name-dialog`,role:`document`,onClick:e=>e.stopPropagation(),onSubmit:e=>{if(e.preventDefault(),t)return;if(a){a();return}if(i)return;let n=bc(b);C(n),n||s(b.trim())},children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{id:h,children:u(`models.displayNameTitle`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:t,onClick:D,children:u(`common.close`)})]}),(0,Q.jsxs)(`div`,{className:`model-display-name-identity`,children:[(0,Q.jsx)(`span`,{className:`muted text-label`,children:u(`models.displayNameModelId`)}),(0,Q.jsx)(`code`,{className:`mono text-control`,children:e.namespaced})]}),(0,Q.jsxs)(`div`,{className:`model-display-name-current`,children:[(0,Q.jsx)(`span`,{className:`muted text-label`,children:u(`models.displayNameCurrent`)}),(0,Q.jsx)(`strong`,{children:r?u(`models.displayNameCurrentUnavailable`):e.displayName??e.namespaced}),!r&&(0,Q.jsx)(`span`,{className:`models-chip muted text-caption`,children:u(E)})]}),(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`${h}-input`,children:u(`models.displayNameField`)}),(0,Q.jsx)(`input`,{ref:f,id:`${h}-input`,className:`input`,value:b,maxLength:129,placeholder:u(`models.displayNamePlaceholder`),"aria-describedby":`${g}${T?` ${_}`:``}`,"aria-invalid":w?!0:void 0,disabled:t||i,onChange:e=>{t||i||(o?.(),x(e.target.value),C(null))}}),(0,Q.jsx)(`p`,{id:g,className:`muted small`,children:u(`models.displayNameHelp`,{model:e.namespaced})}),T&&(0,Q.jsx)(`p`,{id:_,className:`model-display-name-error`,role:`alert`,children:T}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:t||i||!e.displayNameOverride,onClick:()=>{!t&&!i&&c()},children:u(`models.displayNameReset`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:t,onClick:D,children:u(`common.cancel`)}),(0,Q.jsx)(`button`,{ref:p,type:`submit`,className:`btn btn-primary btn-sm`,disabled:t||i&&!a,children:u(t?`common.saving`:a?`common.retry`:`common.save`)})]})]})]})}var w_=[`input`,`output`,`cacheRead`,`cacheWrite`],T_={input:``,output:``,cacheRead:``,cacheWrite:``},E_={...T_,threshold:``,comparison:`gt`},D_=Symbol(`invalid model cost`),O_={input:`customInput`,output:`customOutput`,cacheRead:`customCacheRead`,cacheWrite:`customCacheWrite`};function k_(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function A_(e,t){return Object.keys(e).length===t.length&&t.every(t=>Object.hasOwn(e,t))}function j_(e){return typeof e==`number`&&Number.isFinite(e)&&e>=0&&e<=1e6}function M_(e){return k_(e)&&A_(e,w_)&&w_.every(t=>j_(e[t]))}function N_(e){if(e!==void 0){if(!k_(e))return D_;if(!(e.mode===`automatic`&&A_(e,[`mode`])))return e.mode===`flat`&&A_(e,[`mode`])?{mode:`flat`}:e.mode!==`custom`||!Number.isSafeInteger(e.thresholdTokens)||Number(e.thresholdTokens)<=0||!A_(e,[`mode`,`thresholdTokens`,`comparison`,`rates`])||e.comparison!==`gt`&&e.comparison!==`gte`||!M_(e.rates)?D_:{mode:`custom`,thresholdTokens:Number(e.thresholdTokens),comparison:e.comparison,rates:{input:e.rates.input,output:e.rates.output,cacheRead:e.rates.cacheRead,cacheWrite:e.rates.cacheWrite}}}}function P_(e){if(!k_(e)||!A_(e,Object.hasOwn(e,`promptLengthPricing`)?[...w_,`promptLengthPricing`]:w_)||!w_.every(t=>j_(e[t])))return D_;let t=N_(e.promptLengthPricing);if(t===D_)return D_;let n=Object.fromEntries(w_.map(t=>[t,e[t]]));return t===void 0?n:{...n,promptLengthPricing:t}}function F_(e,t){if(!w_.every(n=>e[n]===t[n]))return!1;let n=e.promptLengthPricing??{mode:`automatic`},r=t.promptLengthPricing??{mode:`automatic`};return n.mode===r.mode?n.mode!==`custom`||r.mode===`custom`&&n.thresholdTokens===r.thresholdTokens&&n.comparison===r.comparison&&w_.every(e=>n.rates[e]===r.rates[e]):!1}function I_(e,t){if(t===null)return e===null;let n=P_(e);return n!==D_&&F_(n,t)}var L_=e=>Object.fromEntries(w_.map(t=>[t,String(e[t])]));function R_(e){if(!e)return{rates:T_,mode:`automatic`,custom:E_};let t=e.promptLengthPricing;return!t||t.mode===`flat`?{rates:L_(e),mode:t?.mode??`automatic`,custom:E_}:{rates:L_(e),mode:`custom`,custom:{...L_(t.rates),threshold:String(t.thresholdTokens),comparison:t.comparison}}}var z_=e=>e.trim()===``?0:Number(e);function B_(e,t,n,r){if(r)return{field:r};if(!e.input.trim())return{field:`input`};if(!e.output.trim())return{field:`output`};let i={input:Number(e.input),output:Number(e.output),cacheRead:z_(e.cacheRead),cacheWrite:z_(e.cacheWrite)},a=w_.find(e=>!j_(i[e]));if(a)return{field:a};if(t===`automatic`)return{cost:i};if(t===`flat`)return{cost:{...i,promptLengthPricing:{mode:`flat`}}};let o=n.threshold.trim();if(!/^[1-9]\d*$/.test(o)||!Number.isSafeInteger(Number(o)))return{field:`threshold`};if(!n.input.trim())return{field:`customInput`};if(!n.output.trim())return{field:`customOutput`};let s={input:Number(n.input),output:Number(n.output),cacheRead:z_(n.cacheRead),cacheWrite:z_(n.cacheWrite)},c=w_.find(e=>!j_(s[e]));return c?{field:O_[c]}:{cost:{...i,promptLengthPricing:{mode:`custom`,thresholdTokens:Number(o),comparison:n.comparison,rates:s}}}}var V_={input:`pricing.override.input`,output:`pricing.override.output`,cacheRead:`pricing.override.cacheRead`,cacheWrite:`pricing.override.cacheWrite`},H_=6e4;function U_({model:e,apiBase:t,onRefresh:n,onClose:r}){let i=O(),a=(0,Z.useId)(),o=(0,Z.useId)(),s=(0,Z.useId)(),c=(0,Z.useRef)(null),l=(0,Z.useRef)(null),u=(0,Z.useRef)({}),d=(0,Z.useRef)(null),f=(0,Z.useRef)(null),p=(0,Z.useRef)(!1),[m,h]=(0,Z.useState)(`loading`),[g,_]=(0,Z.useState)(T_),[v,y]=(0,Z.useState)(`automatic`),[b,x]=(0,Z.useState)(E_),[S,C]=(0,Z.useState)(!1),[w,T]=(0,Z.useState)(null),[E,D]=(0,Z.useState)(null),[k,j]=(0,Z.useState)(!1),M=`${t}/api/providers/${encodeURIComponent(e.provider)}/model-costs`,N=m===`saving`||m===`refreshing`,P=m!==`ready`,F=(0,Z.useCallback)((t=!1)=>{if(f.current)return;let n=A(H_);f.current=n,fetch(M,{signal:n.signal,cache:`no-store`}).then(async r=>{let i=await hn(r);if(n.signal.throwIfAborted(),!k_(i)||i.provider!==e.provider||!k_(i.modelCosts))throw Error(`invalid model-costs response`);let a=Object.hasOwn(i.modelCosts,e.id)?i.modelCosts[e.id]:void 0,o=a===void 0?void 0:P_(a);if(o===D_)throw Error(`invalid model cost`);if(f.current!==n)return;let s=R_(o);_(s.rates),y(s.mode),x(s.custom),C(o!==void 0),T(null),D(null),j(t),h(`ready`)}).catch(()=>{f.current===n&&(h(t?`unknown`:`loadFailed`),T(t?`pricing.override.recoveryFailed`:`pricing.override.loadFailed`))}).finally(()=>{n.clear(),f.current===n&&(f.current=null)})},[M,e.id,e.provider,x,T,D,y]);(0,Z.useEffect)(()=>{let e=c.current;return e&&!e.open&&e.showModal(),F(),()=>{f.current?.controller.abort(),f.current?.clear(),f.current=null,e?.open&&e.close()}},[F]),(0,Z.useEffect)(()=>{m===`ready`?l.current?.focus():(m===`unknown`||m===`loadFailed`||m===`refreshFailed`)&&d.current?.focus()},[m]);let I=async t=>{if(f.current||(t===void 0?m!==`refreshFailed`:m!==`ready`))return;let i=A(H_);f.current=i,h(t===void 0?`refreshing`:`saving`),p.current=!0,T(null),D(null);let a=t===void 0;try{if(t!==void 0){let n=await hn(await fetch(M,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({modelId:e.id,cost:t}),signal:i.signal}));i.signal.throwIfAborted();let r=k_(n)?n.cost:void 0;if(!k_(n)||n.ok!==!0||n.provider!==e.provider||n.modelId!==e.id||!I_(r,t))throw Error(`invalid model-costs receipt`);if(f.current!==i)return;a=!0,h(`refreshing`)}if(!await n(i.signal))throw Error(`catalog refresh failed`);i.signal.throwIfAborted(),f.current===i&&r()}catch{if(f.current!==i)return;h(a?`refreshFailed`:`unknown`),T(a?`pricing.override.refreshFailed`:`pricing.override.outcomeUnknown`)}finally{i.clear(),f.current===i&&(f.current=null,p.current=!1)}},L=()=>{p.current||r()};return(0,Q.jsxs)(`dialog`,{ref:c,className:`modal-overlay`,"aria-labelledby":`${a}-title`,onCancel:e=>{e.preventDefault(),L()},children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,tabIndex:-1,"aria-label":i(`pricing.override.close`),disabled:N,onClick:L}),(0,Q.jsxs)(`form`,{className:`modal-card model-display-name-dialog model-price-dialog`,role:`document`,noValidate:!0,"aria-busy":m===`loading`||N,onClick:e=>e.stopPropagation(),onSubmit:e=>{if(e.preventDefault(),f.current)return;if(m===`unknown`||m===`loadFailed`){h(`loading`),T(null),F(m===`unknown`);return}if(m===`refreshFailed`){I(void 0);return}if(P)return;let t=Object.entries(u.current).find(([,e])=>e.validity.badInput)?.[0],n=B_(g,v,b,t);if(`field`in n){D(n.field),T(n.field===`threshold`||n.field.startsWith(`custom`)?`pricing.override.customInvalid`:`pricing.override.invalid`),u.current[n.field]?.focus();return}I(n.cost)},children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{id:`${a}-title`,children:i(`pricing.override.title`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:N,onClick:L,children:i(`pricing.override.close`)})]}),(0,Q.jsxs)(`div`,{className:`model-display-name-identity`,children:[(0,Q.jsx)(`span`,{className:`muted text-label`,children:i(`pricing.override.modelId`)}),(0,Q.jsx)(`code`,{className:`mono text-control`,children:e.namespaced})]}),(0,Q.jsxs)(`div`,{className:`model-price-body`,children:[(0,Q.jsx)(`p`,{id:o,className:`muted small`,children:i(`pricing.override.help`)}),(0,Q.jsx)(`p`,{className:`muted small`,children:i(`pricing.override.promptHelp`)}),m===`loading`&&(0,Q.jsx)(`p`,{role:`status`,className:`muted small`,children:i(`pricing.override.loading`)}),(0,Q.jsx)(`div`,{className:`model-price-rates-grid`,children:w_.map(e=>(0,Q.jsxs)(`div`,{className:`model-price-rate-field`,children:[(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`${a}-${e}`,children:i(V_[e])}),(0,Q.jsx)(`input`,{ref:t=>{t?u.current[e]=t:delete u.current[e],e===`input`&&(l.current=t)},id:`${a}-${e}`,className:`input`,type:`number`,min:0,max:1e6,step:`any`,inputMode:`decimal`,value:g[e],disabled:P,required:e===`input`||e===`output`,"aria-describedby":`${o}${w?` ${s}`:``}`,"aria-invalid":E===e||void 0,onChange:t=>{if(P||f.current)return;let n=t.target.value;_(t=>({...t,cacheRead:t.cacheRead||`0`,cacheWrite:t.cacheWrite||`0`,[e]:n})),T(null),D(null)}})]},e))}),(0,Q.jsxs)(`fieldset`,{className:`model-price-mode`,children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:i(`pricing.override.promptTitle`)}),[`automatic`,`flat`,`custom`].map(e=>(0,Q.jsxs)(`label`,{className:`model-price-mode-option`,children:[(0,Q.jsx)(`input`,{type:`radio`,name:`${a}-mode`,value:e,checked:v===e,disabled:P,onChange:()=>{y(e),T(null),D(null)}}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`strong`,{children:i(`pricing.override.mode${e[0].toUpperCase()}${e.slice(1)}`)}),(0,Q.jsx)(`small`,{className:`muted`,children:i(`pricing.override.mode${e[0].toUpperCase()}${e.slice(1)}Help`)})]})]},e))]}),v===`custom`&&(0,Q.jsxs)(`section`,{className:`model-price-band`,"aria-labelledby":`${a}-custom-title`,children:[(0,Q.jsx)(`h4`,{id:`${a}-custom-title`,className:`model-price-band-title`,children:i(`pricing.override.bandTitle`)}),(0,Q.jsxs)(`div`,{className:`model-price-custom-controls`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`${a}-threshold`,children:i(`pricing.override.threshold`)}),(0,Q.jsx)(`input`,{ref:e=>{e?u.current.threshold=e:delete u.current.threshold},id:`${a}-threshold`,className:`input`,type:`number`,min:1,step:1,inputMode:`numeric`,value:b.threshold,disabled:P,"aria-describedby":`${o}${w?` ${s}`:``}`,"aria-invalid":E===`threshold`||void 0,onChange:e=>{x(t=>({...t,threshold:e.target.value})),T(null),D(null)}})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`${a}-comparison`,children:i(`pricing.override.comparison`)}),(0,Q.jsx)(cn,{id:`${a}-comparison`,label:i(`pricing.override.comparison`),value:b.comparison,disabled:P,portal:!1,describedBy:o,options:[{value:`gt`,label:i(`pricing.override.comparisonGt`)},{value:`gte`,label:i(`pricing.override.comparisonGte`)}],onChange:e=>x(t=>({...t,comparison:e}))})]})]}),(0,Q.jsx)(`p`,{id:`${a}-custom-help`,className:`muted small`,children:i(`pricing.override.bandHelp`)}),(0,Q.jsx)(`div`,{className:`model-price-rates-grid`,children:w_.map(e=>(0,Q.jsxs)(`div`,{className:`model-price-rate-field`,children:[(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`${a}-custom-${e}`,children:i(V_[e])}),(0,Q.jsx)(`input`,{ref:t=>{let n=O_[e];t?u.current[n]=t:delete u.current[n]},id:`${a}-custom-${e}`,className:`input`,type:`number`,min:0,max:1e6,step:`any`,inputMode:`decimal`,value:b[e],disabled:P,required:e===`input`||e===`output`,"aria-describedby":`${o}${w?` ${s}`:``}`,"aria-invalid":E===O_[e]||void 0,onChange:t=>{let n=t.target.value;x(t=>({...t,[e]:n})),T(null),D(null)}})]},`custom-${e}`))})]})]}),k&&(0,Q.jsx)(`p`,{role:`status`,className:`muted small`,children:i(`pricing.override.recovered`)}),w&&(0,Q.jsx)(`p`,{id:s,className:`model-display-name-error`,role:`alert`,children:i(w)}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:P||!S,onClick:()=>void I(null),children:i(`pricing.override.reset`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:N,onClick:L,children:i(`pricing.override.cancel`)}),(0,Q.jsx)(`button`,{ref:d,type:`submit`,className:`btn btn-primary btn-sm`,disabled:m===`loading`||N,children:i(N?`pricing.override.saving`:m===`unknown`||m===`loadFailed`?`pricing.override.reload`:m===`refreshFailed`?`pricing.override.refresh`:`pricing.override.save`)})]})]})]})}var W_=[`text`,`image`,`audio`],G_=[`100000`,`128000`,`200000`,`256000`,`352000`,`500000`,`1000000`],K_=6e4;function q_(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function J_(e){let t=e.reasoningOverridden===!0;return{contextWindow:e.contextWindowDeclared===void 0?``:String(e.contextWindowDeclared),modalities:Array.isArray(e.inputModalitiesDeclared)?[...e.inputModalitiesDeclared]:[],reasoning:t,ladder:t&&Array.isArray(e.reasoningEfforts)?[...e.reasoningEfforts]:[],defaultEffort:t?e.defaultReasoningEffort??``:``}}function Y_(e){return e.toSorted().join(`,`)}function X_(e){let t=e.trim();if(!t)return null;let n=Number(t.replace(/[_,\s]/g,``));return Number.isSafeInteger(n)&&n>0?n:void 0}function Z_({row:e,apiBase:t,onRefresh:n,onFeedback:r,onClose:i}){let a=O(),o=(0,Z.useId)(),s=(0,Z.useRef)(null),c=(0,Z.useRef)(null),l=(0,Z.useRef)(null),[u]=(0,Z.useState)(()=>J_(e)),[d,f]=(0,Z.useState)(`ready`),[p,m]=(0,Z.useState)(()=>u.contextWindow),[h,g]=(0,Z.useState)(()=>u.contextWindow!==``&&!G_.includes(u.contextWindow)),[_,v]=(0,Z.useState)(()=>[...u.modalities]),[y,b]=(0,Z.useState)(()=>u.reasoning),[x,S]=(0,Z.useState)(()=>[...u.ladder]),[C,w]=(0,Z.useState)(()=>u.defaultEffort),[T,E]=(0,Z.useState)(null),D=d===`saving`||d===`restoring`,k=d===`unknown`||d===`saved-stale`;(0,Z.useEffect)(()=>{let e=s.current,t=document.activeElement;return e&&!e.open&&e.showModal(),()=>{e?.open&&e.close(),t?.isConnected&&typeof t.focus==`function`&&t.focus()}},[]),(0,Z.useEffect)(()=>{k&&c.current?.focus()},[k]);let j=async()=>{let t=A(K_);l.current=t;try{if(!await n(t.signal)||(t.signal.throwIfAborted(),l.current!==t))return;r(!0,a(`models.settingsReloaded`,{model:e.namespaced})),i()}catch{}finally{t.clear(),l.current===t&&(l.current=null)}},M=t=>{if(b(t),!t||x.length>0)return;let n=Array.isArray(e.reasoningEfforts)?e.reasoningEfforts:void 0;S(n&&n.length>0?[...n]:[...xc])},N=(e,t)=>{S(n=>t?[...n,e]:n.filter(t=>t!==e)),!t&&C===e&&w(``)},P=()=>{D||i()},F=async(o,s)=>{let c=A(K_);l.current=c,f(s?`restoring`:`saving`),E(null);let u=!1,d=!1;try{let f=await fetch(t+`/api/model-settings`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({provider:e.provider,modelId:e.id,...o}),signal:c.signal});if(f.status>=400&&f.status<500)throw d=!0,Error(`model settings rejected`);let p=await hn(f);if(c.signal.throwIfAborted(),!q_(p)||p.ok!==!0||p.provider!==e.provider||p.modelId!==e.id||typeof p.changed!=`boolean`||typeof p.hasOverrides!=`boolean`||typeof p.saved!=`boolean`||p.saved!==p.changed||!q_(p.catalogRefresh)||![`committed`,`skipped`,`failed`].includes(String(p.catalogRefresh.status)))throw Error(`invalid model-settings receipt`);if(l.current!==c)return;if(u=!0,!p.changed){r(!0,a(s&&!p.hasOverrides?`models.settingsNothingToRestore`:`models.settingsNoChange`,{model:e.namespaced})),i();return}let m=p.catalogRefresh,h=m.status===`failed`||m.status===`skipped`&&m.retryable===!0;if(!await n(c.signal))throw Error(`catalog refresh failed`);if(c.signal.throwIfAborted(),l.current!==c)return;h?r(!1,a(`models.settingsSavedCodexStale`,{model:e.namespaced})):s?r(!0,a(`models.settingsRestored`,{model:e.namespaced})):r(!0,a(`models.settingsSaved`,{model:e.namespaced})),i()}catch{if(l.current!==c)return;if(d){f(`ready`),E(`models.settingsRejected`);return}f(u?`saved-stale`:`unknown`),E(u?`models.settingsRefreshFailed`:`models.settingsSaveFailed`)}finally{c.clear(),l.current===c&&(l.current=null)}},I=()=>{if(d!==`ready`)return;let e=X_(p);if(e===void 0){E(`models.contextInvalid`);return}let t=u,n={};p.trim()!==t.contextWindow&&(n.contextWindow=e),Y_(_)!==Y_(t.modalities)&&(n.inputModalities=_.length>0?[..._]:null);let r=y?Y_(x):``;(y!==t.reasoning||r!==Y_(t.ladder))&&(n.reasoningEfforts=y?[...x]:null);let a=y&&x.includes(C)?C:``;if(a!==t.defaultEffort&&(n.defaultReasoningEffort=a||null),Object.keys(n).length===0){i();return}F(n,!1)},L=async()=>{d===`ready`&&await aa({message:a(`models.settingsRestoreConfirm`,{model:e.namespaced}),confirmLabel:a(`models.settingsRestore`),tone:`danger`})&&F({contextWindow:null,inputModalities:null,reasoningEfforts:null,defaultReasoningEffort:null},!0)},R=Array.isArray(e.inputModalities)?e.inputModalities.join(`, `):``,z=Array.isArray(e.inputModalities)?e.inputModalities.filter(e=>W_.includes(e)):[];return(0,Q.jsxs)(`dialog`,{ref:s,className:`modal-overlay`,"aria-labelledby":o+`-title`,onCancel:e=>{e.preventDefault(),P()},children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":a(`common.close`),tabIndex:-1,disabled:D,onClick:P}),(0,Q.jsxs)(`form`,{className:`modal-card model-display-name-dialog`,role:`document`,noValidate:!0,"aria-busy":D,onClick:e=>e.stopPropagation(),onSubmit:e=>{e.preventDefault(),I()},children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{id:o+`-title`,children:a(`models.settingsTitle`,{model:e.namespaced})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:D,onClick:P,children:a(`common.close`)})]}),T&&(0,Q.jsx)($,{tone:d===`saved-stale`?`warn`:`err`,children:a(T)}),(0,Q.jsxs)(`div`,{className:`models-field-stack`,children:[(0,Q.jsxs)(`div`,{className:`text-label models-field`,children:[a(`models.customFieldModelId`),(0,Q.jsx)(`code`,{className:`mono text-control`,children:e.namespaced})]}),(0,Q.jsxs)(`label`,{className:`text-label models-field`,children:[a(`models.customFieldContext`),(0,Q.jsxs)(`div`,{className:`row models-field-row`,children:[(0,Q.jsx)(cn,{value:h?Ec:p,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:Ec,label:a(`models.custom`)}],onChange:e=>{if(e===`custom`){g(!0);return}g(!1),m(e)},disabled:D,label:a(`models.customFieldContext`),portal:!1}),h&&(0,Q.jsx)(`input`,{className:`input`,style:{width:120},inputMode:`numeric`,value:p,onChange:e=>m(e.target.value),disabled:D,placeholder:a(`models.customPlaceholder`),"aria-label":a(`models.customFieldContext`)})]}),e.contextWindowDeclared===void 0&&(0,Q.jsx)(`span`,{className:`muted text-caption`,children:a(`models.settingsContextInherit`,{value:e.contextWindow?String(e.contextWindow):a(`models.settingsContextUnknown`)})})]}),(0,Q.jsxs)(`div`,{className:`text-label models-field`,children:[a(`models.customFieldModalities`),(0,Q.jsx)(`div`,{className:`row models-field-row`,children:W_.map(e=>(0,Q.jsxs)(`label`,{className:`row models-modality-option`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:_.includes(e),onChange:t=>{let n=t.target.checked;v(t=>{if(!n)return t.filter(t=>t!==e);let r=t.length>0?t:z;return[...new Set([...r,e])]})},disabled:D}),(0,Q.jsx)(`span`,{className:`text-control`,children:e})]},e))}),_.length===0&&(0,Q.jsx)(`span`,{className:`muted text-caption`,children:a(`models.settingsModalitiesInherit`,{modalities:R||a(`models.settingsModalitiesUnknown`)})})]}),(0,Q.jsxs)(`div`,{className:`text-label models-field`,children:[a(`models.customFieldReasoning`),(0,Q.jsx)(`div`,{className:`row models-field-row`,children:(0,Q.jsxs)(`label`,{className:`row models-modality-option`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:y,onChange:e=>M(e.target.checked),disabled:D}),(0,Q.jsx)(`span`,{className:`text-control`,children:a(`models.customFieldReasoningOverride`)})]})}),y&&(0,Q.jsx)(`div`,{className:`row models-field-row`,style:{flexWrap:`wrap`},children:xc.map(e=>(0,Q.jsxs)(`label`,{className:`row models-modality-option`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:x.includes(e),onChange:t=>N(e,t.target.checked),disabled:D}),(0,Q.jsx)(`span`,{className:`text-control`,children:a(`models.reasoningEffort.`+e)})]},e))})]}),y&&(0,Q.jsxs)(`label`,{className:`text-label models-field`,children:[a(`models.settingsDefaultEffort`),(0,Q.jsx)(`div`,{className:`row models-field-row`,children:(0,Q.jsx)(cn,{value:C,options:[{value:``,label:`—`},...x.map(e=>({value:e,label:a(`models.reasoningEffort.`+e)}))],onChange:w,disabled:D,label:a(`models.settingsDefaultEffort`),portal:!1})})]})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[k&&(0,Q.jsx)(`button`,{ref:c,type:`button`,className:`btn btn-ghost`,onClick:()=>void j(),children:a(`models.settingsReload`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,title:a(`models.settingsRestoreHint`),disabled:D||k,onClick:()=>void L(),children:a(`models.settingsRestore`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:P,disabled:D,children:a(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`submit`,className:`btn btn-primary`,disabled:D||k,children:a(D?`models.customSaving`:`models.customApply`)})]})]})]})}var Q_=[`current`,`stale`,`unknown`,`not_running`],$_=[`fresh`,`stale`,`not_running`,`unknown`],ev=[`stopped`,`nothing_running`,`enumeration_unavailable`,`partially_stopped`];function tv(e){return Array.isArray(e)&&e.every(e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0)}function nv(e){if(typeof e!=`object`||!e)return!1;let t=e;if(!(typeof t.success==`boolean`&&typeof t.synced==`boolean`&&typeof t.stateBefore==`string`&&$_.includes(t.stateBefore)&&typeof t.code==`string`&&ev.includes(t.code)&&tv(t.requested)&&tv(t.stopped)&&tv(t.surviving)&&tv(t.failed)))return!1;let n=t.success,r=t.code,i=t.surviving,a=t.failed,o=t.stopped;if(n!==(r!==`partially_stopped`)||n&&(i.length>0||a.length>0)||!n&&i.length===0&&a.length===0||(r===`nothing_running`||r===`enumeration_unavailable`)&&o.length>0)return!1;if(`desktopApp`in t&&t.desktopApp!==void 0){let e=t.desktopApp;if(typeof e!=`object`||!e)return!1;let n=e;if(typeof n.attempted!=`boolean`||!tv(n.stopped)||!tv(n.surviving)||n.relaunch!==`started`&&n.relaunch!==`skipped`||n.reason!==void 0&&typeof n.reason!=`string`||n.pickerState!==void 0&&(typeof n.pickerState!=`string`||!Q_.includes(n.pickerState))||n.relaunch===`started`&&n.surviving.length>0)return!1}return!0}function rv(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.state==`string`&&$_.includes(t.state)&&typeof t.runningCount==`number`&&Number.isSafeInteger(t.runningCount)&&t.runningCount>=0}var iv={state:null,runningCount:0};async function av(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 iv;let i=await r.json().catch(()=>null);return rv(i)?{state:i.state,runningCount:i.runningCount}:iv}catch{return iv}}var ov=3e4;function sv(e){return(e instanceof DOMException||e instanceof Error)&&(e.name===`AbortError`||e.name===`TimeoutError`)}async function cv(e,t={}){let{fetchFn:n=fetch,timeoutMs:r=ov,formatFailure:i=e=>`Failed to restart Codex (HTTP ${e}).`,formatUnreachable:a=()=>`Could not reach the proxy.`,formatMalformed:o=()=>`The proxy returned an unexpected response.`,formatTimeout:s=()=>`The proxy did not answer in time. It may still be working.`}=t,c;try{c=await n(`${e}/api/system/codex-restart`,{method:`POST`,signal:AbortSignal.timeout(r)})}catch(e){return{ok:!1,message:sv(e)?s():a()}}if(!c.ok)return{ok:!1,message:i(c.status)};let l;try{l=await c.json()}catch(e){return{ok:!1,message:sv(e)?s():o()}}return nv(l)?{ok:!0,result:l}:{ok:!1,message:o()}}function lv(e){return e===`stopped`||e===`nothing_running`}function uv(e,n){let{t:r}=t(),[i,a]=(0,Z.useState)(!1),o=(0,Z.useRef)(!0),s=(0,Z.useRef)(n.onSettled),c=(0,Z.useRef)(n.report),l=(0,Z.useRef)(e),u=(0,Z.useRef)(null);return(0,Z.useEffect)(()=>{s.current=n.onSettled,c.current=n.report},[n.onSettled,n.report]),(0,Z.useEffect)(()=>(l.current=e,()=>{u.current?.abort(),u.current=null}),[e]),(0,Z.useEffect)(()=>(o.current=!0,()=>{o.current=!1,u.current?.abort(),u.current=null}),[]),{restarting:i,restart:(0,Z.useCallback)(async()=>{let t=new AbortController;u.current?.abort(),u.current=t;let n=await aa({message:r(`dash.codexRestartConfirm`),confirmLabel:r(`dash.codexRestart`),tone:`danger`,signal:t.signal});if(u.current===t&&(u.current=null),!n||!o.current||l.current!==e)return null;a(!0);let i=await cv(e,{formatFailure:e=>r(`dash.codexRestartFailed`,{status:String(e)}),formatUnreachable:()=>r(`dash.codexRestartUnreachable`),formatTimeout:()=>r(`dash.codexRestartTimeout`),formatMalformed:()=>r(`dash.codexRestartMalformed`)});if(o.current&&a(!1),!i.ok)return c.current(i.message,`err`),null;let d=i.result;return d.code===`stopped`?c.current(r(`dash.codexRestartDone`,{count:String(d.stopped.length)}),`ok`):d.code===`nothing_running`?c.current(r(`dash.codexRestartNothing`),`ok`):d.code===`enumeration_unavailable`?c.current(r(`dash.codexRestartUnknown`),`warn`):c.current(r(`dash.codexRestartPartial`,{count:String(d.surviving.length)}),`warn`),o.current&&lv(d.code)&&s.current?.(d.code),d.code},[e,r])}}async function dv(e,t,{apiBase:n,t:r,reloadAliases:i,publishFeedback:a}){let o=await oa({message:r(`models.aliasPrompt`),initialValue:t});if(o!==null){if(!(await fetch(`${n}/api/providers/${encodeURIComponent(e)}/alias`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({alias:o.trim()||null})})).ok){a(!1,r(`models.aliasConflict`));return}await i(),a(!0,r(`models.aliasSaved`))}}async function fv(e,t,n,{apiBase:r,t:i,reloadAliases:a,publishFeedback:o}){let s=await oa({message:i(`models.modelAliasPrompt`),initialValue:n});if(s===null)return;let c=s.trim()?{set:{[t]:s.trim()}}:{remove:[t]};if(!(await fetch(`${r}/api/providers/${encodeURIComponent(e)}/model-aliases`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(c)})).ok){o(!1,i(`models.aliasConflict`));return}await a(),o(!0,i(`models.aliasSaved`))}var pv={"gpt-5.6-sol":J,"gpt-5.6-terra":qe,"gpt-5.6-luna":he,"gpt-daybreak-blue-latest":J,"daybreak-blue-latest":J,"daybreak-red-latest":at},mv={width:14,height:14,flexShrink:0,verticalAlign:`text-bottom`};function hv(e){return e.slice(e.lastIndexOf(`/`)+1)}function gv(e){return pv[e]??pv[hv(e)]??null}function _v(e){let t=gv(e);return t?(0,Z.createElement)(`span`,{className:`model-label`},(0,Z.createElement)(t,{style:mv,"aria-hidden":!0}),e):e}function vv(e,t){return Object.hasOwn(e,t)?e[t]:void 0}var yv=new Set([`absent`,`current`,`stale`,`conflict`,`unsafe`]),bv=new Set([`unparseable`,`not-regular-file`,`foreign-edit`,`unowned-key`,`blocked-container`,`unresolvable-path`]);function xv(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Sv(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function Cv(e){if(!xv(e)||e.clientId!==`aside`||!Sv(e.profileId)||typeof e.current!=`boolean`||typeof e.enabled!=`boolean`||!yv.has(e.state)||typeof e.installed!=`boolean`||typeof e.configPath!=`string`||!Number.isSafeInteger(e.snapshotCount)||e.snapshotCount<-1||typeof e.retentionDegraded!=`boolean`||e.reason!==void 0&&!bv.has(e.reason))return null;for(let t of[`name`,`error`,`appliedAt`,`lastOpId`])if(e[t]!==void 0&&typeof e[t]!=`string`)return null;return{clientId:`aside`,profileId:e.profileId,current:e.current,enabled:e.enabled,state:e.state,installed:e.installed,configPath:e.configPath,snapshotCount:e.snapshotCount,retentionDegraded:e.retentionDegraded,...typeof e.name==`string`?{name:e.name}:{},...typeof e.error==`string`?{error:e.error}:{},...typeof e.appliedAt==`string`?{appliedAt:e.appliedAt}:{},...typeof e.lastOpId==`string`?{lastOpId:e.lastOpId}:{},...e.reason===void 0?{}:{reason:e.reason}}}function wv(e){if(!Array.isArray(e))return null;let t=[];for(let n of e){if(!xv(n)||!Sv(n.profileId)||typeof n.ok!=`boolean`||n.state!==void 0&&!yv.has(n.state)||n.residual!==void 0&&typeof n.residual!=`boolean`)return null;for(let e of[`reason`,`refusalReason`,`message`,`snapshotPath`])if(n[e]!==void 0&&typeof n[e]!=`string`)return null;t.push({profileId:n.profileId,ok:n.ok,...n.state===void 0?{}:{state:n.state},...typeof n.reason==`string`?{reason:n.reason}:{},...typeof n.refusalReason==`string`?{refusalReason:n.refusalReason}:{},...typeof n.message==`string`?{message:n.message}:{},...typeof n.snapshotPath==`string`?{snapshotPath:n.snapshotPath}:{},...typeof n.residual==`boolean`?{residual:n.residual}:{}})}return t}var Tv=[`qoder`,`opencode`,`pi`,`omp`,`hermes`,`openclaw`,`kimi`,`gajae`,`dsh`,`mcode`,`zcode`,`commandcode`,`prime`,`aside`,`raycast`,`omo`,`cline`,`kilo`,`droid`,`gentle-shell`];function Ev(e){return e.clientId===`kilo`&&!!e.lastOpId&&(e.reason===`candidate-conflict`||e.state===`unsafe`&&!!e.candidateFailurePath&&e.candidateFailurePath!==e.configPath)}var Dv=new Set([`not_installed`,`conflict`,`unsafe`,`non_loopback`,`superseded_store`,`drift_requires_confirm`,`snapshot_expired`,`write_failed`]),Ov=new Set([`integration_unsafe`,`integration_conflict`,`integration_drift_confirmation_required`,`integration_snapshot_expired`,`integration_mutation_failed`]),kv=new Set([`absent`,`current`,`stale`,`conflict`,`unsafe`]),Av=[`apply`,`overwrite`,`disable`,`restore`],jv=[`add`,`replace`,`remove`,`snapshot`,`ownership`,`journal`],Mv=[`none`,`unowned`,`foreign-edit`,`drift`],Nv=new Set([`version`,`clientId`,`operation`,`state`,`foreignEdit`,`changes`,`fingerprint`,`canApply`,`willChange`,`refusalReason`,`supersededReason`,`missingStoreDocument`,`profileId`]),Pv=new Set([`owned-config-file`,`unestablished-schema`,`missing-store`]),Fv=/^[\x20-\x7e]{1,64}$/,Iv=new Set([`kind`,`path`]),Lv=new Set([`$snapshot`,`$ownership`,`$journal`]),Rv=new Set([`provider.opencodex`,`providers.opencodex`,`models.providers.opencodex`,`models.*`,`modelConfigs.customModels.*`,`llm-pi-ai.providers.opencodex`,`custom_provider.opencodex`,`providers.[id=opencodex]`,`settings.providers.opencodex`,`catalog.providers.opencodex`,`customModels.*`,`config.providerConfigRules.providerRules.[providerId=opencodex]`,`config.modelConfigRules.providerModelRules.*`,`[id=llm-pi-ai].config.providers.opencodex`]),zv=256;function Bv(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Vv(e,t){return Object.keys(e).every(e=>t.has(e))}function Hv(e){return Lv.has(e)||Rv.has(e)}function Uv(){return new Kv(502,{code:`invalid_integration_preview_response`})}function Wv(e){if(!Bv(e)||!Vv(e,Nv)||e.version!==1||!Tv.includes(e.clientId)||!Av.includes(e.operation)||!kv.has(String(e.state))||!Mv.includes(e.foreignEdit)||typeof e.fingerprint!=`string`||!/^p[0-9]+:(?:[0-9a-f]{32}|unbound)$/.test(e.fingerprint)||typeof e.canApply!=`boolean`||typeof e.willChange!=`boolean`||!Array.isArray(e.changes)||e.changes.length>zv||e.profileId!==void 0&&(typeof e.profileId!=`number`||!Number.isSafeInteger(e.profileId)||e.profileId<0)||e.profileId!==void 0&&e.clientId!==`aside`||e.refusalReason!==void 0&&!Dv.has(String(e.refusalReason))||e.supersededReason!==void 0&&(e.refusalReason!==`superseded_store`||typeof e.supersededReason!=`string`||!Pv.has(e.supersededReason))||e.missingStoreDocument!==void 0&&(e.supersededReason!==`missing-store`||typeof e.missingStoreDocument!=`string`||!Fv.test(e.missingStoreDocument)))throw Uv();let t=[],n=-1,r=``,i=new Map;for(let a of e.changes){if(!Bv(a)||!Vv(a,Iv)||!jv.includes(a.kind)||typeof a.path!=`string`||!Hv(a.path))throw Uv();let e=jv.indexOf(a.kind);if(e<n||e===n&&a.path<=r)throw Uv();let o=a.kind,s=i.get(o)??new Set;if(s.has(a.path))throw Uv();s.add(a.path),i.set(o,s),n=e,r=a.path,t.push({kind:o,path:a.path})}if(e.willChange&&(!e.canApply||t.length===0)||!e.willChange&&t.length!==0||e.fingerprint.endsWith(`:unbound`)&&e.canApply||e.canApply===(e.refusalReason!==void 0))throw Uv();return{version:1,clientId:e.clientId,operation:e.operation,state:e.state,foreignEdit:e.foreignEdit,changes:t,fingerprint:e.fingerprint,canApply:e.canApply,willChange:e.willChange,...e.refusalReason===void 0?{}:{refusalReason:e.refusalReason},...e.supersededReason===void 0?{}:{supersededReason:e.supersededReason},...e.missingStoreDocument===void 0?{}:{missingStoreDocument:e.missingStoreDocument},...e.profileId===void 0?{}:{profileId:Number(e.profileId)}}}function Gv(e){return!Bv(e)||!Dv.has(String(e.reason))?!1:typeof e.error==`string`&&Ov.has(String(e.code))&&Tv.includes(e.clientId)&&kv.has(String(e.state))&&typeof e.message==`string`}var Kv=class extends Error{refusal;status;body;stalePlan;constructor(e,t){let n=Gv(t)?t:null;super(n?.message??t.error??t.message??String(e)),this.name=`IntegrationApiError`,this.status=e,this.body=t,this.refusal=n,this.stalePlan=t.code===`integration_preview_stale`&&`plan`in t&&t.plan?t.plan:null}};function qv(e){return e instanceof Kv&&e.status===404&&e.body.code===`integration_operation_not_found`}async function Jv(e){let t;try{t=await e.json()}catch{return{}}return Bv(t)?t.code===`integration_preview_stale`?{code:t.code,plan:Wv(t.plan)}:t:{}}async function Yv(e){if(!e.ok)throw new Kv(e.status,await Jv(e));let t=await gn(e);if(t==null)throw new Kv(e.status,{});return t}function Xv(e){return e instanceof Kv&&e.body.code===`integration_preview_unavailable`}function Zv(e){return{operation:e.operation,planFingerprint:e.fingerprint}}function Qv(e){if(!Number.isSafeInteger(e)||e<0)throw new Kv(400,{code:`invalid_aside_profile`});return`/api/client-integrations/aside/profiles/${e}`}function $v(e,t){if(t!==void 0){if(e!==`aside`)throw new Kv(400,{code:`invalid_aside_profile`});return Qv(t)}return e===`aside`?`/api/client-integrations/aside/profiles`:`/api/client-integrations/${encodeURIComponent(e)}`}async function ey(e,t){return Yv(await fetch(`${e}/api/client-integrations`,{signal:t}))}async function ty(e,t,n,r){let i=await Yv(await fetch(`${e}${$v(t,r)}`,{signal:n}));if(r!==void 0){let e=Cv(i);if(!e||e.profileId!==r)throw new Kv(502,{code:`invalid_aside_profile_response`});return e}return i}async function ny(e,t,n,r){if(r!==void 0&&t!==`aside`)throw new Kv(400,{code:`invalid_aside_profile`});let i=t===`aside`?`${$v(t,r)}/journal`:`/api/client-integrations/journal${t?`?client=${encodeURIComponent(t)}`:``}`,a=await Yv(await fetch(`${e}${i}`,{signal:n}));if(r!==void 0&&(!Array.isArray(a.operations)||a.operations.some(e=>e.clientId!==`aside`||e.profileId!==r)))throw new Kv(502,{code:`invalid_aside_profile_response`});return a}async function ry(e,t,n,r,i,a){let o=i===void 0?`/api/client-integrations/preview`:`${Qv(i)}/preview`,s={...i===void 0?{clientId:t}:{},operation:n,...t===`droid`&&a!==void 0?{droidReasoningDefaults:a}:{}},c=Wv(await Yv(await fetch(`${e}${o}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(s),signal:r})));if(c.clientId!==t||c.operation!==n||c.profileId!==i)throw Uv();return c}async function iy(e,t,n=!1,r,i){let a=i===void 0?`/api/client-integrations/restore/preview`:`${Qv(i)}/preview`,o=i===void 0?{opId:t,confirmDrift:n}:{operation:`restore`,opId:t,confirmDrift:n},s=Wv(await Yv(await fetch(`${e}${a}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(o),signal:r})));if(s.operation!==`restore`||s.profileId!==i)throw Uv();return s}async function ay(e,t,n){let{enabled:r,signal:i,overwriteConflict:a,profileId:o,binding:s,droidReasoningDefaults:c}=n,l=r?a?`overwrite`:`apply`:`disable`,u;try{u=await Yv(await fetch(`${e}${$v(t,o)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:r,...a===!0?{overwriteConflict:!0}:{},...s,...t===`droid`&&c!==void 0?{droidReasoningDefaults:c}:{}}),signal:i}))}catch(e){throw e instanceof Kv&&e.stalePlan&&(e.stalePlan.clientId!==t||e.stalePlan.operation!==l||e.stalePlan.profileId!==o)?Uv():e}let d=u.results===void 0?void 0:wv(u.results);if(t===`aside`&&u.results!==void 0&&(!d||u.ok!==d.every(e=>e.ok)))throw new Kv(502,{code:`invalid_aside_profile_response`});if(u.ok!==!0)throw new Kv(207,{code:t===`aside`?`aside_profile_partial`:`integration_mutation_failed`,message:u.message,results:d??void 0});if(o!==void 0&&u.profileId!==o)throw new Kv(502,{code:`invalid_aside_profile_response`});return{...u,...d?{results:d}:{}}}async function oy(e,t){let{opId:n,confirmDrift:r=!1,signal:i,profileId:a,binding:o}=t,s;try{s=await Yv(await fetch(`${e}${a===void 0?`/api/client-integrations/restore`:`${Qv(a)}/restore`}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({opId:n,confirmDrift:r,...o}),signal:i}))}catch(e){throw e instanceof Kv&&e.stalePlan&&(e.stalePlan.operation!==`restore`||e.stalePlan.profileId!==a)?Uv():e}if(a!==void 0&&s.profileId!==a)throw new Kv(502,{code:`invalid_aside_profile_response`});return s}async function sy(e,t,n,r){let i=await Yv(await fetch(`${e}${r===void 0?`/api/client-integrations/journal`:`${Qv(r)}/journal`}?opId=${encodeURIComponent(t)}`,{method:`DELETE`,signal:n}));if(r!==void 0&&i.profileId!==r)throw new Kv(502,{code:`invalid_aside_profile_response`});return i}async function cy(e){try{let t=await e;return t.ok?await gn(t)??null:null}catch{return null}}async function ly(e,t){let n=await cy(fetch(`${e}/api/startup-health`,{signal:t}));return n?{routingInjected:n.routingInjected===!0,status:typeof n.status==`string`?n.status:void 0,recommendedCommand:typeof n.recommendedCommand==`string`?n.recommendedCommand:null}:null}async function uy(e,t){let n=await fetch(`${e}/api/keys`,{signal:t});if(!n.ok)throw Error(`/api/keys responded ${n.status}`);let r=await gn(n);if(!r||!Array.isArray(r.keys))throw Error(`/api/keys returned an unexpected body`);return r.keys.length}async function dy(e,t){let n=await cy(fetch(`${e}/api/claude-code`,{signal:t}));return n?{enabled:n.enabled===!0,authMode:typeof n.authMode==`string`?n.authMode:void 0}:null}async function fy(e,t){let n=await cy(fetch(`${e}/api/claude-desktop/status`,{signal:t}));return!n||typeof n.desiredEnabled!=`boolean`||typeof n.installed!=`boolean`||typeof n.observedKind!=`string`?null:{desiredEnabled:n.desiredEnabled,installed:n.installed,observedKind:n.observedKind,applied:n.applied===!0,stale:n.stale===!0,drift:n.drift===!0,driftReason:typeof n.driftReason==`string`?n.driftReason:null,activeProfile:typeof n.activeProfile==`boolean`?n.activeProfile:null,appliedAt:typeof n.appliedAt==`string`?n.appliedAt:null}}async function py(e,t){let n=await cy(fetch(`${e}/api/grok`,{signal:t}));return n?{present:n.present===!0,models:Array.isArray(n.models)?n.models:[]}:null}var my=new Set([`claude`,`grok`,`codex`,`claude-desktop`]),hy=new Set([`native_integration_refused`,`native_integration_failed`]),gy=new Set([`not_installed`,`orphaned_marker`,`home_mismatch`,`config_busy`,`write_failed`,`metadata_unreadable`,`cleanup_incomplete`,`desired_state_changed`]);function _y(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function vy(e){return _y(e)?typeof e.error==`string`&&hy.has(String(e.code))&&my.has(String(e.clientId))&&gy.has(String(e.reason))&&typeof e.message==`string`:!1}var yy=class extends Error{refusal;status;body;constructor(e,t){let n=vy(t)?t:null;super(n?.message??t.error??t.message??String(e)),this.name=`NativeApiError`,this.status=e,this.body=t,this.refusal=n}};async function by(e){try{let t=await e;return t.ok?await gn(t)??null:null}catch{return null}}async function xy(e){try{let t=await e.json();return _y(t)?t:{}}catch{return{}}}async function Sy(e){if(!e.ok)throw new yy(e.status,await xy(e));let t=await gn(e);if(t==null)throw new yy(e.status,{});return t}function Cy(e,t){return by(fetch(`${e}/api/native-integrations`,{signal:t}))}async function wy(e,t,n,r){return Sy(await fetch(`${e}/api/native-integrations/${encodeURIComponent(t)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:n}),signal:r}))}var Ty={integration_mutation_busy:`integrations.error.busy`,integration_journal_newest_protected:`integrations.rollback.deleteNewest`,integration_operation_not_found:`integrations.rollback.deleteGone`,aside_profile_partial:`integrations.aside.partial`,invalid_aside_profile_response:`integrations.aside.loadError`};function Ey(e){return e instanceof Kv?e.refusal:null}function Dy(e){return e instanceof yy?e.refusal:null}function Oy(e){return e===`conflict`?`integrations.error.conflict`:e===`unsafe`?`integrations.error.unsafe`:e===`non_loopback`?`integrations.error.nonLoopback`:`integrations.error.generic`}var ky=new Set([`non_loopback`]);function Ay(e,t,n){return t.reason===`orphaned_marker`?e(`integrations.native.error.orphanedMarker`,{path:n??``}):t.reason===`home_mismatch`?`${e(`integrations.native.error.homeMismatch`)} ${t.message}`:t.reason===`not_installed`?e(`integrations.native.error.notInstalled`):t.reason===`config_busy`?e(`integrations.native.error.configBusy`):t.reason===`metadata_unreadable`?e(`integrations.native.error.desktopUnsafeMetadata`,{path:n??``}):t.reason===`cleanup_incomplete`?e(`integrations.native.error.desktopCleanupIncomplete`,{paths:(t.residualPaths??[]).join(`, `)}):t.message||e(`integrations.error.generic`)}function jy(e,t,n,r){let i=Dy(t);if(i)return Ay(e,i,r);let a=Ey(t);if(!a){if(t instanceof Kv&&`results`in t.body&&t.body.results?.length){let n=t.body.results.filter(e=>!e.ok).map(t=>{let n=My(e,t);return`${e(`integrations.aside.profile`,{id:String(t.profileId)})}: ${n}`});return[e(`integrations.aside.partial`),...n].join(`
6
6
  `)}let r=Ty[t instanceof Kv?String(t.body.code??``):``];return r?e(r):t instanceof Error&&t.message?t.message:n??e(`integrations.error.generic`)}return Ny(e,a)}function My(e,t){return Ny(e,{clientId:`aside`,message:t.message??t.reason,reason:t.refusalReason??t.reason,snapshotPath:t.snapshotPath,residual:t.residual})}function Ny(e,t){let n=ky.has(t.reason??``)?e(Oy(t.reason),{client:t.clientId}):t.message||e(Oy(t.reason));return t.snapshotPath?e(t.residual?`integrations.error.residual`:`integrations.error.recover`,{message:n,path:t.snapshotPath}):t.residual?e(`integrations.error.residualNoSnapshot`,{message:n}):t.reason===`conflict`||t.reason===`unsafe`?`${e(Oy(t.reason))} ${n}`:n}var Py=(e,t,n)=>JSON.stringify([e,t,n]),Fy=new Map;function Iy(e,t){let[n,r]=(0,Z.useState)({apiBase:e,overrides:Fy,pending:!1});n.apiBase!==e&&r({apiBase:e,overrides:Fy,pending:!1});let i=n.apiBase===e?n.overrides:Fy,a=n.apiBase===e&&n.pending,o=(0,Z.useRef)(t);(0,Z.useLayoutEffect)(()=>{o.current=t});let s=(0,Z.useRef)(null);(0,Z.useLayoutEffect)(()=>{let e={active:!0,running:!1,queue:[],readVersion:0,bounded:null};return s.current=e,o.current.onBusy(!1),()=>{e.active=!1,e.queue.length=0,e.bounded?.controller.abort(),e.bounded?.clear()}},[e]);let c=async t=>{let n=null;for(;t.active;){for(;t.active&&t.queue.length>0;){let r=t.queue.shift(),i=A(6e4);t.bounded=i;try{let a=await js(e,r.scope,r.provider,r.targets,r.enabled,fetch,i.signal);if(t.active){if(!a.ok)n=`models.saveFailed`;else{let e=await a.json().catch(()=>void 0);t.active&&o.current.onResponse(e)}}}catch{if(!t.active)return;n=`models.networkError`}finally{i.clear(),t.bounded=null}}if(!t.active)return;let i=t.readVersion,a=!1,s=A(6e4);t.bounded=s;try{a=await o.current.refresh(s.signal)}catch{}finally{s.clear(),t.bounded=null}if(!t.active)return;if(!(t.queue.length||i!==t.readVersion)){t.running=!1,r({apiBase:e,overrides:Fy,pending:!1}),o.current.onBusy(!1),o.current.onSettled(n??(a?null:`models.networkError`));return}}};return{pending:a,overrides:i,enqueue:(t,n,i,a)=>{let l=s.current;l?.active&&(l.queue.push({scope:t,provider:n,targets:i,enabled:a}),l.readVersion++,o.current.onQueued(),r(t=>{let r=new Map(t.apiBase===e?t.overrides:Fy);for(let e of i)r.set(Py(n,e.id,e.native===!0),a);return{apiBase:e,overrides:r,pending:!0}}),l.running||(l.running=!0,o.current.onBusy(!0),c(l)))},isRunning:()=>s.current?.running===!0,visible:(e,t,n,r)=>i.get(Py(e,t,n))??r}}function Ly({className:e,style:t}){return(0,Q.jsx)(`span`,{"aria-hidden":`true`,className:e?`data-surface-skeleton__block ${e}`:`data-surface-skeleton__block`,style:t})}function Ry({label:e,rows:t=3,className:n}){let r=Math.max(1,Math.floor(t));return(0,Q.jsxs)(`div`,{className:n?`data-surface-skeleton ${n}`:`data-surface-skeleton`,role:`status`,"aria-live":`polite`,"aria-atomic":`true`,"aria-busy":`true`,children:[(0,Q.jsx)(`span`,{className:`sr-only`,children:e}),Array.from({length:r},(e,t)=>(0,Q.jsx)(`div`,{className:`data-surface-skeleton__row`,"aria-hidden":`true`,children:(0,Q.jsx)(Ly,{})},t))]})}function zy({children:e,busy:t=!0,live:n=!0,className:r}){return(0,Q.jsxs)(`div`,{className:r?`data-surface-status ${r}`:`data-surface-status`,role:n?`status`:void 0,"aria-live":n?`polite`:void 0,"aria-atomic":n?`true`:void 0,"aria-busy":t||void 0,children:[t&&(0,Q.jsx)(`span`,{className:`spin`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{children:e})]})}var By=class extends Z.Component{state={error:null};static getDerivedStateFromError(e){return{error:e instanceof Error?e:Error(String(e))}}reload=()=>{this.setState({error:null})};render(){return this.state.error?(0,Q.jsxs)(`section`,{className:`card`,role:`alert`,style:{maxWidth:720,padding:`var(--space-6)`},children:[(0,Q.jsxs)(`h2`,{style:{margin:`0 0 var(--space-2)`,fontSize:`var(--text-title)`},children:[this.props.pageName,`: `,this.props.title]}),(0,Q.jsx)(`p`,{className:`muted`,style:{margin:`0 0 var(--space-4)`},children:this.props.message}),(0,Q.jsxs)(`p`,{style:{margin:`0 0 var(--space-5)`,overflowWrap:`anywhere`},children:[(0,Q.jsxs)(`strong`,{children:[this.props.detailsLabel,`:`]}),` `,this.state.error.message]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:this.reload,children:this.props.reloadLabel})]}):this.props.children}};function Vy(e,t){let n=e.provider.trim(),r=e.model.trim();if(!n||!r)return`missing`;let i=t.find(e=>e.provider===n&&e.id===r);if(!i)return`missing`;if(i.visionSidecarConsumer===!0)return`sidecar`;let a=i.inputModalitiesDeclared??i.inputModalities;return!a||a.length===0?`blocked`:a.includes(`image`)?`vision`:a.includes(`text`)?`sidecar`:`blocked`}function Hy(e,t){return e.length!==0&&e.every(e=>{let n=Vy(e,t);return n===`vision`||n===`sidecar`})}function Uy(e,t){if(!Hy(e,t))return[];let n=new Set,r=[];for(let i of e){if(Vy(i,t)!==`sidecar`)continue;let e=i.provider.trim(),a=i.model.trim(),o=`${e}/${a}`;n.has(o)||(n.add(o),r.push({provider:e,model:a}))}return r}function Wy(e,t){return e.filter(e=>Vy(e,t)===`blocked`).map(e=>({provider:e.provider.trim(),model:e.model.trim()}))}function Gy(e,t,n,r){if(t===`invalidDecisionTimeout`)return e(`cws.err.invalidDecisionTimeout`,{min:Mr,max:Nr});if(t===`invalidDecisionProvider`){let t=Pi(n.decisionProvider,r)??`missing`;return e(`cws.err.invalidDecisionProvider`,{name:n.decisionProvider??``,reason:e(Jr[t])})}return e(`cws.err.${t}`)}function Ky(e){return e.filter(e=>!e.disabled&&!e.hiddenFromPicker).sort((e,t)=>e.name.localeCompare(t.name))}function qy(e,t,n){if(e===``)return;let r=Number(e);if(Number.isFinite(r))return Math.min(n,Math.max(t,r))}function Jy(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 Yy(e,t,n){let r=new Set([t]),i=n.find(e=>e.name===t);(t.toLowerCase()===`chatgpt`||Jy(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))}function Xy({value:e,onChange:t,disabled:n}){let r=O();return(0,Q.jsx)(`div`,{className:`cwi-strategy-seg`,role:`radiogroup`,"aria-label":r(`cws.strategy`),children:Ur.map(i=>(0,Q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":e===i,className:`btn btn-sm${e===i?` btn-primary`:` btn-ghost`}`,disabled:n,onClick:()=>t(i),children:r(Wr[i])},i))})}function Zy({id:e,value:t,onChange:n,disabled:r,allowedEfforts:i}){let a=O(),o=i??Hr,s=t!==null&&!o.includes(t);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`select`,{id:e,className:`input`,value:t??``,disabled:r,"aria-label":a(`cws.field.defaultEffort`),onChange:e=>n(e.target.value===``?null:e.target.value),children:[(0,Q.jsx)(`option`,{value:``,children:a(`cws.field.defaultEffortNone`)}),s&&t?(0,Q.jsxs)(`option`,{value:t,children:[t,` (`,a(`cws.field.defaultEffortUnsupportedOption`),`)`]}):null,o.map(e=>(0,Q.jsx)(`option`,{value:e,children:e},e))]}),s?(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`4px 0 0`,color:`var(--danger, #b42318)`},children:a(`cws.field.defaultEffortUnsupported`)}):null]})}function Qy({targets:e,models:t,imageInput:n,reasoningEffortMode:r,visionEnabled:i,disabled:a,onChange:o}){let s=O(),c=Hy(e,t),l=Wy(e,t),u=c&&n!==`disabled`,d=Uy(e,t),f=c?d.length>0&&n!==`disabled`?s(`cws.capability.imageInputSidecarHint`,{models:d.map(({provider:e,model:t})=>`${e}/${t}`).join(`, `)}):s(`cws.capability.imageInputHint`):l.length>0?s(`cws.capability.imageInputBlockedHint`,{models:l.map(({provider:e,model:t})=>`${e}/${t}`).join(`, `)}):s(`cws.capability.imageInputUnavailable`);return(0,Q.jsxs)(`section`,{className:`cwi-capabilities`,"aria-label":s(`cws.capabilities`),children:[(0,Q.jsx)(`span`,{className:`field-label`,children:s(`cws.capabilities`)}),(0,Q.jsxs)(`div`,{className:`cwi-capability-row`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`cwi-capability-label`,children:s(`cws.capability.imageInput`)}),(0,Q.jsx)(`p`,{className:`muted cwi-capability-hint`,children:f}),d.length>0&&u&&i===!1?(0,Q.jsxs)(`p`,{className:`cwi-capability-hint cwi-capability-hint--warn`,children:[s(`cws.capability.imageInputSidecarDisabled`,{models:d.map(({provider:e,model:t})=>`${e}/${t}`).join(`, `)}),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>qt(`dashboard`),children:s(`nav.dashboard`)})]}):null]}),(0,Q.jsx)(on,{on:u,onClick:()=>{c&&o({imageInput:n===`auto`?`disabled`:`auto`})},disabled:a||!c,label:s(`cws.capability.imageInput`)})]}),(0,Q.jsxs)(`div`,{className:`cwi-capability-row`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`cwi-capability-label`,children:s(`cws.capability.adaptiveEffort`)}),(0,Q.jsx)(`p`,{className:`muted cwi-capability-hint`,children:s(`cws.capability.adaptiveEffortHint`)})]}),(0,Q.jsx)(on,{on:r===`adaptive`,onClick:()=>{o({reasoningEffortMode:r===`adaptive`?`strict`:`adaptive`})},disabled:a,label:s(`cws.capability.adaptiveEffort`)})]})]})}function $y({targets:e,strategy:t,providers:n,models:r,capabilityModels:i=r,providerQuotaStates:a,onChange:o}){let s=O(),c=Ky(n),[l,u]=(0,Z.useState)(null),[d,f]=(0,Z.useState)(null),p=t===`jev`?e.findIndex(e=>{let t=n.find(t=>t.name===e.provider.trim());return!!e.provider.trim()&&!!e.model.trim()&&t!==void 0&&t.disabled!==!0&&t.adapter!==`jev-decision`&&a[e.provider.trim()]!==`exhausted`}):-1,m=(t,n)=>{o(e.map((e,r)=>r===t?{...e,...n}:e))},h=(t,n)=>{o(e.map((e,r)=>{if(r!==t)return e;let{reasoningEfforts:i,modelProfile:a,...o}=e;return{...o,...n}}))},g=(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),o(r)};return(0,Q.jsxs)(`div`,{className:`cwi-target-list`,children:[e.map((_,v)=>{let y=n.find(e=>e.name===_.provider),b=y&&!c.some(e=>e.name===_.provider)?[...c,y]:c,x=Yy(r,_.provider,n),S=_.model&&!x.includes(_.model)?[_.model,...x]:x,C=!_.provider,w=l===v,T=d===v&&l!==null&&l!==v,E=a[_.provider.trim()]??`unknown`,D=i.find(e=>e.provider===_.provider&&e.id===_.model)?.reasoningEfforts,O=D===void 0?void 0:new Set(D),k=O===void 0?void 0:Hr.filter(e=>O.has(e)),A=new Set(k??[]),j=k===void 0?[]:_.reasoningEfforts===void 0?k:_.reasoningEfforts.filter(e=>A.has(e)),M=new Set(j);return(0,Q.jsxs)(`div`,{className:`cwi-target-entry`,children:[(0,Q.jsxs)(`div`,{className:[`cwi-target-row`,t===`failover`||t===`jev`?`cwi-target-row--failover`:``,w?`cwi-target-row--dragging`:``,T?`cwi-target-row--drop`:``].filter(Boolean).join(` `),onDragOver:e=>{l!==null&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,d!==v&&f(v))},onDrop:e=>{e.preventDefault(),l!==null&&g(l,v),u(null),f(null)},onDragEnd:()=>{u(null),f(null)},children:[(0,Q.jsx)(`button`,{type:`button`,className:`cwi-target-grip`,draggable:!0,"aria-label":s(`cws.target.drag`),title:s(`cws.target.drag`),onDragStart:e=>{u(v),e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,String(v))},children:(0,Q.jsx)(Fe,{width:14,height:14,"aria-hidden":`true`})}),(0,Q.jsxs)(`div`,{className:`cwi-target-reorder`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:v===0,"aria-label":s(`cws.target.moveUp`),onClick:()=>g(v,v-1),children:(0,Q.jsx)(Ge,{width:14,height:14,"aria-hidden":`true`})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:v===e.length-1,"aria-label":s(`cws.target.moveDown`),onClick:()=>g(v,v+1),children:(0,Q.jsx)(Qe,{width:14,height:14,"aria-hidden":`true`})})]}),(0,Q.jsxs)(`select`,{className:`input`,value:_.provider,"aria-label":s(`cws.target.provider`),onChange:e=>{let t=e.target.value,i=Yy(r,t,n)[0]??``;h(v,{provider:t,model:i})},children:[(0,Q.jsx)(`option`,{value:``,children:s(`cws.target.pickProvider`)}),b.map(e=>(0,Q.jsx)(`option`,{value:e.name,children:e.disabled?s(`cws.target.disabled`,{name:be(e.name,s)}):be(e.name,s)},e.name))]}),(0,Q.jsxs)(`select`,{className:`input`,value:_.model,disabled:C,"aria-label":s(`cws.target.model`),onChange:e=>h(v,{provider:_.provider,model:e.target.value}),children:[(0,Q.jsx)(`option`,{value:``,children:C?s(`cws.target.pickProviderFirst`):S.length===0?s(`cws.target.noModels`):s(`cws.target.pickModel`)}),S.map(e=>(0,Q.jsx)(`option`,{value:e,children:e},e))]}),(t===`round-robin`||t===`random`)&&(0,Q.jsx)(`input`,{className:`input mono`,type:`number`,min:1,max:1e4,value:_.weight??1,"aria-label":s(`cws.target.weight`),onChange:e=>{let t=qy(e.target.value,1,1e4);t!==void 0&&m(v,{weight:t})}}),(0,Q.jsx)(`span`,{className:`cwi-quota-badge cwi-quota-badge--${E}`,"aria-label":s(`cws.quota.${E}`),children:s(`cws.quota.${E}`)}),(0,Q.jsx)(`div`,{className:`cwi-target-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:e.length<=1,onClick:()=>o(e.filter((e,t)=>t!==v)),"aria-label":s(`common.remove`),children:(0,Q.jsx)(F,{width:14,height:14})})})]}),t===`jev`&&(0,Q.jsxs)(`div`,{className:`cwi-jev-target-meta`,children:[v===p&&(0,Q.jsx)(`span`,{className:`chip`,children:s(`cws.jev.failOpen`)}),k===void 0?(0,Q.jsx)(`span`,{className:`muted`,children:s(`cws.jev.effortsUnknown`)}):k.length===0?(0,Q.jsx)(`span`,{className:`muted`,children:s(`cws.jev.effortsNone`)}):(0,Q.jsxs)(`fieldset`,{className:`cwi-jev-efforts`,children:[(0,Q.jsx)(`legend`,{children:s(`cws.jev.allowedEfforts`)}),k.map(e=>{let t=M.has(e);return(0,Q.jsxs)(`label`,{className:`cwi-jev-effort`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,"data-jev-effort":!0,value:e,checked:t,disabled:t&&j.length===1,onChange:t=>{let n=new Set(j);t.target.checked?n.add(e):n.delete(e),m(v,{reasoningEfforts:k.filter(e=>n.has(e))})}}),(0,Q.jsx)(`span`,{children:e})]},e)})]}),(0,Q.jsxs)(`label`,{className:`cwi-field`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:s(`cws.jev.modelProfile`)}),(0,Q.jsx)(`textarea`,{className:`input`,rows:3,maxLength:512,value:_.modelProfile??``,placeholder:s(`cws.jev.modelProfilePlaceholder`),onChange:e=>m(v,{modelProfile:e.target.value})}),(0,Q.jsx)(`span`,{className:`muted`,children:s(`cws.jev.modelProfileHint`)})]})]})]},_.clientKey??`${_.provider}:${_.model}`)}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,style:{alignSelf:`flex-start`},onClick:()=>o([...e,Qr()]),children:[(0,Q.jsx)(N,{width:14,height:14}),` `,s(`cws.target.add`)]})]})}var eb=[`typesafe`,`systemone`,`model`],tb={typesafe:`cws.jev.method.typesafe`,systemone:`cws.jev.method.systemone`,model:`cws.jev.method.model`};function nb({idPrefix:e,apiBase:t,combo:n,combos:r,providers:i,models:a,decisionProvider:o,decisionModel:s,decisionTimeoutMs:c,disabled:l,onChange:u}){let d=O(),f=zr({decisionProvider:o,decisionModel:s}),p=(0,Z.useMemo)(()=>Fi(i,o).filter(e=>e.id!==null),[i,o]),m=p.find(e=>e.id===o?.trim()),{id:h,alias:g,model:_}=n,v=(0,Z.useMemo)(()=>Vr(a,i,r,{id:h,alias:g,model:_}),[a,i,r,h,g,_]),[y,b]=(0,Z.useState)(null),x=(0,Z.useRef)(null),S=`${f}\0${o??``}\0${s??``}\0${c??``}`,C=y?.key===S?y.result:null,w=e+`-decision-model-options`;(0,Z.useEffect)(()=>()=>{x.current?.abort(),x.current=null},[S]);let T=e=>{e!==f&&u(e===`typesafe`?{decisionProvider:null,decisionModel:null}:e===`systemone`?{decisionProvider:p.find(e=>!e.issue)?.id??p[0]?.id??``,decisionModel:null}:{decisionProvider:null,decisionModel:v[0]??``})},E=f===`typesafe`||f===`systemone`&&!!m&&!m.issue||f===`model`&&!!s?.trim(),D=async()=>{x.current?.abort();let e=new AbortController;x.current=e;let r=S,i=e=>b({key:r,result:e});i({state:`running`});try{let r=await fetch(`${t??``}/api/combos/decision-test`,{method:`POST`,headers:{"content-type":`application/json`},signal:e.signal,body:JSON.stringify({...n.id.trim()?{comboId:n.id.trim()}:{},...f===`systemone`&&o?{decisionProvider:o.trim()}:{},...f===`model`&&s?{decisionModel:s.trim()}:{},...c===null?{}:{decisionTimeoutMs:c}})});if(!r.ok){let t=await r.json().catch(()=>null);if(e.signal.aborted)return;i({state:`error`,message:t&&typeof t.error==`string`?t.error:String(r.status)});return}let a=await r.json().catch(()=>null);if(e.signal.aborted)return;if(!a||typeof a.gate!=`string`){i({state:`error`,message:String(r.status)});return}i({state:`done`,ok:a.ok===!0,backend:typeof a.backend==`string`?a.backend:`unknown`,gate:a.gate,latencyMs:typeof a.latencyMs==`number`?Math.round(a.latencyMs):0})}catch(t){if(e.signal.aborted)return;i({state:`error`,message:t instanceof Error?t.message:String(t)})}finally{x.current===e&&(x.current=null)}};return(0,Q.jsxs)(`fieldset`,{className:`cwi-field cwi-jev-decision`,"aria-describedby":`${e}-decision-method-hint`,children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:d(`cws.jev.decisionMethod`)}),(0,Q.jsx)(`div`,{className:`segmented`,role:`group`,"aria-label":d(`cws.jev.decisionMethod`),children:eb.map(t=>(0,Q.jsx)(`button`,{type:`button`,id:`${e}-decision-method-${t}`,className:`btn btn-sm ${f===t?`btn-primary`:`btn-ghost`}`,"aria-pressed":f===t,disabled:l,onClick:()=>T(t),children:d(tb[t])},t))}),(0,Q.jsxs)(`p`,{id:`${e}-decision-method-hint`,className:`muted`,style:{fontSize:12,margin:`8px 0 0`,overflowWrap:`anywhere`},children:[f===`typesafe`&&d(`cws.jev.decisionServiceDefaultHint`),f===`systemone`&&p.length===0&&d(`cws.jev.method.systemoneEmpty`)]}),f===`systemone`&&p.length>0&&(0,Q.jsxs)(`div`,{className:`cwi-field`,style:{marginTop:8},children:[(0,Q.jsx)(`label`,{htmlFor:`${e}-decision-provider`,children:d(`cws.jev.decisionService`)}),(0,Q.jsxs)(`select`,{id:`${e}-decision-provider`,className:`input`,value:o?.trim()??``,disabled:l,"aria-describedby":m?.issue?`${e}-decision-provider-hint ${e}-decision-provider-issue`:`${e}-decision-provider-hint`,"aria-invalid":m?.issue?!0:void 0,onChange:e=>u({decisionProvider:e.target.value,decisionModel:null}),children:[!m&&(0,Q.jsx)(`option`,{value:``,disabled:!0,children:`—`}),p.map(e=>(0,Q.jsx)(`option`,{value:e.id,disabled:e.issue!==void 0&&e.id!==m?.id,children:e.issue?`${e.id} (${d(Jr[e.issue])})`:e.id},e.id))]}),(0,Q.jsxs)(`p`,{id:`${e}-decision-provider-hint`,className:`muted`,style:{fontSize:12,margin:`8px 0 0`,overflowWrap:`anywhere`},children:[d(`cws.jev.decisionServiceHint`),m?.baseUrl&&(0,Q.jsxs)(Q.Fragment,{children:[` `,(0,Q.jsx)(`code`,{children:m.baseUrl})]})]}),m?.issue&&(0,Q.jsx)(`p`,{id:`${e}-decision-provider-issue`,className:`muted`,style:{fontSize:12,margin:`4px 0 0`,color:`var(--danger, #b42318)`},children:d(`cws.err.invalidDecisionProvider`,{name:m.id??``,reason:d(Jr[m.issue])})})]}),f===`model`&&(0,Q.jsxs)(`div`,{className:`cwi-field`,style:{marginTop:8},children:[(0,Q.jsx)(`label`,{htmlFor:`${e}-decision-model`,children:d(`cws.jev.decisionModel`)}),(0,Q.jsx)(`input`,{id:`${e}-decision-model`,className:`input mono`,list:w,value:s??``,maxLength:512,spellCheck:!1,autoComplete:`off`,placeholder:`ollama/qwen3:4b`,disabled:l,"aria-describedby":`${e}-decision-model-hint`,onChange:e=>u({decisionModel:e.target.value,decisionProvider:null})}),(0,Q.jsx)(`datalist`,{id:w,children:v.map(e=>(0,Q.jsx)(`option`,{value:e},e))}),(0,Q.jsx)(`p`,{id:`${e}-decision-model-hint`,className:`muted`,style:{fontSize:12,margin:`8px 0 0`,overflowWrap:`anywhere`},children:d(`cws.jev.decisionModelHint`)})]}),(0,Q.jsxs)(`div`,{className:`cwi-field`,style:{marginTop:8},children:[(0,Q.jsx)(`label`,{htmlFor:`${e}-decision-timeout`,children:d(`cws.jev.decisionTimeout`)}),(0,Q.jsx)(`input`,{id:`${e}-decision-timeout`,className:`input mono`,type:`number`,inputMode:`numeric`,min:Mr,max:Nr,step:1,placeholder:String(Pr),value:c??``,disabled:l,"aria-describedby":`${e}-decision-timeout-hint`,onChange:e=>{if(e.target.value===``){u({decisionTimeoutMs:null});return}let t=Number(e.target.value);Number.isFinite(t)&&u({decisionTimeoutMs:t})}}),(0,Q.jsx)(`p`,{id:`${e}-decision-timeout-hint`,className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:d(`cws.jev.decisionTimeoutHint`,{default:Pr,min:Mr,max:Nr})})]}),(0,Q.jsxs)(`div`,{className:`cwi-jev-decision-test`,style:{display:`flex`,gap:8,alignItems:`center`,flexWrap:`wrap`,marginTop:8},children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:l||!E||C?.state===`running`,onClick:()=>{D()},children:C?.state===`running`?d(`cws.jev.testing`):d(`cws.jev.test`)}),(0,Q.jsxs)(`span`,{className:`muted`,role:`status`,"aria-live":`polite`,style:{fontSize:12,overflowWrap:`anywhere`},children:[C===null&&d(`cws.jev.testHint`),C?.state===`done`&&(C.ok?d(`cws.jev.testOk`,{ms:C.latencyMs,backend:d(Rr[C.backend]??`cws.jev.backend.unknown`)}):d(`cws.jev.testFailOpen`,{gate:C.gate,ms:C.latencyMs})),C?.state===`error`&&d(`cws.jev.testError`,{error:C.message})]})]})]})}var rb=[];function ib({apiBase:e,combos:t=rb,existingIds:n,existingAliases:r,providerMap:i,providerQuotaStates:a,providers:o,models:s,capabilityModels:c=s,initialDraft:l,onClose:u,onSubmit:d}){let f=O(),p=(0,Z.useRef)(null),[m,h]=(0,Z.useState)(()=>l?{...l,targets:l.targets.map(e=>({...e}))}:ji()),[g,_]=(0,Z.useState)(!1),[v,y]=(0,Z.useState)(``),b=(0,Z.useMemo)(()=>{let e=new Map;for(let t of c)e.set(`${t.provider}/${t.id}`,t.reasoningEfforts);return e},[c]),x=(0,Z.useMemo)(()=>Yr(m.targets,b,m.reasoningEffortMode??`strict`),[m.targets,b,m.reasoningEffortMode]),S=Ti(m.targets,a,i)===`exhausted`,C=l?.strategy===`jev`,w=C&&(n.includes(m.id.trim())||!!m.alias?.trim()&&r.includes(m.alias.trim()));(0,Z.useEffect)(()=>{let e=p.current;e&&!e.open&&e.showModal()},[]);let T=(0,Z.useCallback)(()=>{g||u()},[g,u]),E=(0,Z.useCallback)(e=>{e.preventDefault(),T()},[T]),D=async()=>{let e=Ai(m,{existingIds:n,existingAliases:r,combos:t,isCreate:!0,providers:i});if(e){y(Gy(f,e,m,i));return}_(!0),y(``);let a=m.id.trim(),o=m.alias?.trim()||null;try{let e=await d({...m,id:a,alias:o,model:oi(a,o)});if(!e.ok){y(e.error||f(`cws.saveFailed`));return}}finally{_(!1)}};return(0,Q.jsxs)(`dialog`,{ref:p,className:`modal-overlay`,"data-combo-preset":C?`jev-auto`:void 0,"aria-labelledby":`cwi-add-title`,onCancel:E,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":f(`common.close`),tabIndex:-1,onClick:T}),(0,Q.jsxs)(`div`,{className:`modal-card`,style:{width:`min(560px, 94vw)`},onClick:e=>e.stopPropagation(),children:[(0,Q.jsxs)(`div`,{className:`row`,style:{justifyContent:`space-between`,marginBottom:8},children:[(0,Q.jsx)(`h3`,{id:`cwi-add-title`,style:{margin:0},children:f(`cws.addTitle`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:T,disabled:g,"aria-label":f(`common.close`),children:(0,Q.jsx)(ve,{width:16,height:16})})]}),(0,Q.jsx)(`p`,{className:`muted`,style:{marginTop:0,maxWidth:`62ch`,overflowWrap:`anywhere`},children:f(C?`cws.jev.setupHint`:`cws.addSubtitle`)}),v&&(0,Q.jsx)($,{tone:`err`,children:v}),w&&(0,Q.jsx)($,{tone:`err`,children:f(`cws.jev.exists`)}),S&&(0,Q.jsx)(`div`,{className:`cwi-quota-banner`,role:`status`,"aria-live":`polite`,children:f(`cws.quota.allExhausted`)}),(0,Q.jsxs)(`div`,{className:`cwi-modal-form`,children:[(0,Q.jsxs)(`div`,{className:`cwi-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`cwi-new-id`,children:f(`cws.field.id`)}),(0,Q.jsx)(`input`,{id:`cwi-new-id`,className:`input mono`,value:m.id,disabled:g,onChange:e=>h(t=>({...t,id:e.target.value,model:oi(e.target.value,t.alias)}))}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:f(`cws.field.idInternalHint`)})]}),(0,Q.jsxs)(`div`,{className:`cwi-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`cwi-new-alias`,children:f(`cws.field.alias`)}),(0,Q.jsx)(`input`,{id:`cwi-new-alias`,className:`input mono`,value:m.alias??``,placeholder:f(`cws.field.aliasPlaceholder`),disabled:g,onChange:e=>h(t=>({...t,alias:e.target.value.trim()?e.target.value:null,model:oi(t.id,e.target.value)}))}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:f(`cws.field.aliasHint`)}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:f(`cws.field.idHint`,{model:m.id.trim()?oi(m.id,m.alias):`…`})})]}),(0,Q.jsxs)(`div`,{className:`cwi-field`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:f(`cws.strategy`)}),(0,Q.jsx)(Xy,{value:m.strategy,disabled:g,onChange:e=>h(t=>({...t,strategy:e}))}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:f(Gr[m.strategy])})]}),m.strategy===`jev`&&(0,Q.jsx)(nb,{idPrefix:`cwi-new`,apiBase:e,combo:m,combos:t,providers:o,models:s,decisionProvider:m.decisionProvider??null,decisionModel:m.decisionModel??null,decisionTimeoutMs:m.decisionTimeoutMs??null,disabled:g,onChange:e=>h(t=>({...t,...e}))}),(0,Q.jsxs)(`div`,{className:`cwi-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`cwi-new-effort`,children:f(`cws.field.defaultEffort`)}),(0,Q.jsx)(Zy,{id:`cwi-new-effort`,value:m.defaultEffort,disabled:g,allowedEfforts:x,onChange:e=>h(t=>({...t,defaultEffort:e}))}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:f(`cws.field.defaultEffortHint`)})]}),m.strategy===`round-robin`&&(0,Q.jsxs)(`div`,{className:`cwi-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`cwi-new-sticky`,children:f(`cws.field.stickyLimit`)}),(0,Q.jsx)(`input`,{id:`cwi-new-sticky`,className:`input mono`,type:`number`,min:1,max:100,value:m.stickyLimit,disabled:g,onChange:e=>{let t=qy(e.target.value,1,100);t!==void 0&&h(e=>({...e,stickyLimit:t}))}}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:f(`cws.field.stickyLimitHint`)})]}),(0,Q.jsxs)(`div`,{className:`cwi-field`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:f(`cws.targets`)}),(0,Q.jsx)($y,{targets:m.targets,strategy:m.strategy,providers:o,models:s,capabilityModels:c,providerQuotaStates:a,onChange:e=>h(t=>({...t,targets:e}))}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:f(Kr[m.strategy])})]}),(0,Q.jsx)(Qy,{targets:m.targets,models:c,imageInput:m.imageInput??`auto`,reasoningEffortMode:m.reasoningEffortMode??`strict`,disabled:g,onChange:e=>h(t=>({...t,...e}))})]}),(0,Q.jsxs)(`div`,{className:`cwi-modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:T,disabled:g,children:f(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>{D()},disabled:g||S||w,children:f(g?`common.saving`:`cws.create`)})]})]})]})}function ab(e){return e===null?`—`:`${Math.round(e*100)}%`}function ob(e,t){if(e===null)return`—`;let n=e>=1e3;return new Intl.NumberFormat(t,{style:`unit`,unit:n?`second`:`millisecond`,unitDisplay:`short`,maximumFractionDigits:n&&e<1e4?1:0}).format(n?e/1e3:e)}function sb({apiBase:e,comboId:n,active:r}){let{t:i,locale:a}=t(),[o,s]=(0,Z.useState)(`30d`),c=(0,Z.useCallback)(async t=>{let r=new URLSearchParams({jev:`1`,comboId:n,range:o}),i=await fetch(`${e}/api/usage?${r}`,{signal:t});if(!i.ok)throw Error(String(i.status));return i.json()},[e,n,o]),l=Ya(`ocx.jev-stats.v1:${e}:${n}:${o}`,[e,n,o],c,{isEmpty:e=>e.summary.decisions===0,enabled:r,pollMs:3e4,pauseWhenHidden:!0,deadlineMs:6e4}),{state:u}=l,d=u.data;return r?(0,Q.jsxs)(`section`,{className:`jev-stats`,"aria-busy":u.refreshing,children:[(0,Q.jsxs)(`div`,{className:`jev-stats-toolbar`,children:[(0,Q.jsx)(`div`,{className:`segmented jev-stats-ranges`,role:`group`,"aria-label":i(`cws.jev.stats.range`),children:[`7d`,`30d`,`all`].map(e=>(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm ${o===e?`btn-primary`:`btn-ghost`}`,"aria-pressed":o===e,onClick:()=>s(e),children:i(e===`all`?`usage.range.available`:`usage.range.${e}`)},e))}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>l.refresh(),children:i(`cws.jev.stats.refresh`)})]}),u.showSkeleton&&(0,Q.jsx)(Ry,{label:i(`cws.jev.stats.loading`),rows:4}),u.showError&&(0,Q.jsx)($,{tone:`err`,children:i(`cws.jev.stats.loadFailed`)}),d&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(gr,{data:d}),(d.historyTruncated||d.entriesTruncated)&&(0,Q.jsx)($,{tone:`warn`,children:i(`cws.jev.stats.historyIncomplete`)}),d.error&&(0,Q.jsx)($,{tone:`err`,children:i(`cws.jev.stats.loadFailed`)}),d.summary.decisions===0?(0,Q.jsxs)(`div`,{className:`jev-stats-empty`,children:[(0,Q.jsx)(`h3`,{children:i(`cws.jev.stats.emptyTitle`)}),(0,Q.jsx)(`p`,{className:`muted`,children:i(`cws.jev.stats.emptyBody`)})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`jev-stats-cards`,children:[(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:i(`cws.jev.stats.decisions`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:d.summary.decisions.toLocaleString(a)}),(0,Q.jsx)(`div`,{className:`muted text-caption`,children:i(`cws.jev.stats.appliedAndFailOpen`,{applied:d.summary.appliedDecisions,failOpen:d.summary.failOpenDecisions})})]}),(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:i(`cws.jev.stats.modelTokens`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:K(d.summary.modelTotalTokens,a)}),(0,Q.jsx)(`div`,{className:`muted text-caption`,children:i(`cws.jev.stats.measuredAttempts`,{measured:d.summary.measuredModelAttempts,total:d.summary.modelAttempts})})]}),(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:i(`cws.jev.stats.decisionTokens`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:K(d.summary.decisionTotalTokens,a)}),(0,Q.jsx)(`div`,{className:`muted text-caption`,children:i(`cws.jev.stats.measuredDecisions`,{measured:d.summary.decisionUsageReported,total:d.summary.decisions})})]})]}),(0,Q.jsxs)(`div`,{className:`jev-stats-facts`,children:[(0,Q.jsx)(`span`,{children:i(`cws.jev.stats.successful`,{count:d.summary.successfulRequests})}),(0,Q.jsx)(`span`,{children:i(d.summary.requestsWithModelFallback===1?`cws.jev.stats.fallbackOne`:`cws.jev.stats.fallbackMany`,{count:d.summary.requestsWithModelFallback})}),(0,Q.jsx)(`span`,{children:i(`cws.jev.stats.averageLatency`,{value:ob(d.summary.averageLatencyMs,a)})}),(0,Q.jsx)(`span`,{children:i(`cws.jev.stats.averageConfidence`,{value:ab(d.summary.averageConfidence)})})]}),(0,Q.jsx)(`div`,{className:`jev-stats-gates`,"aria-label":i(`cws.jev.stats.gates`),children:d.gates.map(e=>(0,Q.jsxs)(`span`,{className:`chip`,children:[e.gate,`: `,e.decisions]},e.gate))}),d.backends&&d.backends.length>0&&(0,Q.jsx)(`div`,{className:`jev-stats-table-wrap`,children:(0,Q.jsxs)(`table`,{className:`jev-stats-table`,"aria-label":i(`cws.jev.stats.backends`),children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:i(`cws.jev.stats.backend`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`cws.jev.stats.decisions`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`cws.jev.stats.applied`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`cws.jev.stats.latency`)})]})}),(0,Q.jsx)(`tbody`,{children:d.backends.map(e=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{children:i(Rr[e.backend]??`cws.jev.backend.unknown`)}),(0,Q.jsx)(`td`,{className:`num mono`,children:e.decisions.toLocaleString(a)}),(0,Q.jsx)(`td`,{className:`num mono`,children:e.applied.toLocaleString(a)}),(0,Q.jsx)(`td`,{className:`num mono`,children:ob(e.averageLatencyMs,a)})]},e.backend))})]})}),(0,Q.jsx)(`div`,{className:`jev-stats-table-wrap`,children:(0,Q.jsxs)(`table`,{className:`jev-stats-table`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:i(`cws.jev.stats.model`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`cws.jev.stats.picks`)}),(0,Q.jsx)(`th`,{children:i(`cws.jev.stats.efforts`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`cws.jev.stats.attempts`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`cws.jev.stats.input`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`cws.jev.stats.output`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`cws.jev.stats.reasoning`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`cws.jev.stats.cacheReadWrite`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`cws.jev.stats.total`)})]})}),(0,Q.jsx)(`tbody`,{children:d.models.map(e=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{children:e.overflow?(0,Q.jsx)(`div`,{children:i(`cws.jev.stats.otherModels`)}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`mono`,children:e.model}),(0,Q.jsx)(`div`,{className:`muted text-caption`,children:be(e.provider,i)})]})}),(0,Q.jsxs)(`td`,{className:`num mono`,children:[e.picks,(0,Q.jsx)(`span`,{className:`jev-stats-cell-note`,children:i(`cws.jev.stats.appliedAndFailOpen`,{applied:e.appliedPicks,failOpen:e.failOpenPicks})})]}),(0,Q.jsx)(`td`,{children:e.efforts.length>0?e.efforts.map(e=>`${e.effort??i(`cws.jev.stats.noEffort`)} × ${e.picks}`).join(`, `):`—`}),(0,Q.jsxs)(`td`,{className:`num mono`,children:[e.attempts,(0,Q.jsxs)(`span`,{className:`jev-stats-cell-note`,children:[e.measuredAttempts,` `,i(`cws.jev.stats.measuredShort`)]})]}),(0,Q.jsx)(`td`,{className:`num mono`,children:K(e.inputTokens,a)}),(0,Q.jsx)(`td`,{className:`num mono`,children:K(e.outputTokens,a)}),(0,Q.jsx)(`td`,{className:`num mono`,children:K(e.reasoningTokens,a)}),(0,Q.jsxs)(`td`,{className:`num mono`,children:[K(e.cacheReadTokens,a),` / `,K(e.cacheWriteTokens,a)]}),(0,Q.jsx)(`td`,{className:`num mono`,children:K(e.totalTokens,a)})]},e.overflow?`__jev_stats_overflow__`:`${e.provider}\0${e.model}`))})]})}),(0,Q.jsx)(`p`,{className:`muted text-caption jev-stats-footnote`,children:i(`cws.jev.stats.tokenFootnote`)})]})]})]}):null}var cb={passthrough:`api.plan.disposition.passthrough`,translated:`api.plan.disposition.translated`,degraded:`api.plan.disposition.degraded`,unsupported:`api.plan.disposition.unsupported`},lb={passthrough:`badge-green`,translated:`badge-accent`,degraded:`badge-amber`,unsupported:`badge-muted`};function ub({effects:e,unknownFeatures:t}){let n=O();return e.length===0&&t.length===0?(0,Q.jsx)(`p`,{className:`muted small`,children:n(`api.plan.noFeatures`)}):(0,Q.jsxs)(`ul`,{className:`protocol-feature-list`,children:[e.map(e=>(0,Q.jsxs)(`li`,{children:[(0,Q.jsx)(`code`,{children:e.feature}),(0,Q.jsx)(`span`,{className:`badge ${lb[e.disposition]}`,children:n(cb[e.disposition])})]},e.feature)),t.map(e=>(0,Q.jsxs)(`li`,{children:[(0,Q.jsx)(`code`,{children:e}),(0,Q.jsx)(`span`,{className:`badge badge-muted`,children:n(`api.plan.disposition.unknown`)})]},e))]})}var db=[`responses`,`chat`,`messages`],fb={native:`api.plan.mode.native`,translated:`api.plan.mode.translated`,"legacy-bridge":`api.plan.mode.legacyBridge`,blocked:`api.plan.mode.blocked`},pb={native:`badge-green`,translated:`badge-accent`,"legacy-bridge":`badge-amber`,blocked:`badge-muted`},mb={preserved:`api.plan.fidelity.preserved`,degraded:`api.plan.fidelity.degraded`,unknown:`api.plan.fidelity.unknown`},hb={direct:`api.plan.routeKind.direct`,combo:`api.plan.routeKind.combo`,policy:`api.plan.routeKind.policy`,unknown:`api.plan.routeKind.unknown`},gb=` → `;function _b({path:e}){let t=O();return e.length>0?(0,Q.jsx)(`code`,{children:e.join(gb)}):(0,Q.jsx)(`span`,{className:`muted`,children:t(`api.plan.noPath`)})}function vb({features:e}){let t=O();return e.length===0?(0,Q.jsx)(`span`,{className:`muted`,children:t(`api.plan.none`)}):(0,Q.jsx)(`span`,{className:`protocol-plan-chips`,children:e.map(e=>(0,Q.jsx)(`code`,{className:`chip`,children:e},e))})}function yb({plan:e}){let t=O();return(0,Q.jsxs)(`div`,{className:`protocol-plan-result`,"aria-live":`polite`,children:[(0,Q.jsxs)(`dl`,{className:`awi-kv`,children:[(0,Q.jsxs)(`div`,{className:`awi-kv-row`,children:[(0,Q.jsx)(`dt`,{children:t(`api.plan.overallMode`)}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(`span`,{className:`badge ${pb[e.mode]}`,children:t(fb[e.mode])})})]}),(0,Q.jsxs)(`div`,{className:`awi-kv-row`,children:[(0,Q.jsx)(`dt`,{children:t(`api.plan.routeKind`)}),(0,Q.jsx)(`dd`,{children:t(hb[e.routeKind])})]}),e.reasonCodes.length>0&&(0,Q.jsxs)(`div`,{className:`awi-kv-row`,children:[(0,Q.jsx)(`dt`,{children:t(`api.plan.reasons`)}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(`span`,{className:`protocol-plan-chips`,children:e.reasonCodes.map(e=>(0,Q.jsx)(`code`,{className:`chip`,children:e},e))})})]}),(0,Q.jsxs)(`div`,{className:`awi-kv-row`,children:[(0,Q.jsx)(`dt`,{children:t(`api.plan.guaranteed`)}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(vb,{features:e.guaranteedFeatures})})]}),(0,Q.jsxs)(`div`,{className:`awi-kv-row`,children:[(0,Q.jsx)(`dt`,{children:t(`api.plan.partial`)}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(vb,{features:e.partialFeatures})})]}),(0,Q.jsxs)(`div`,{className:`awi-kv-row`,children:[(0,Q.jsx)(`dt`,{children:t(`api.plan.policyRevision`)}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(`code`,{children:e.policyRevision})})]})]}),e.candidates.length===0?(0,Q.jsx)(`p`,{className:`muted small`,children:t(`api.plan.noCandidates`)}):(0,Q.jsx)(`ol`,{className:`protocol-plan-candidates`,children:e.candidates.map(n=>(0,Q.jsxs)(`li`,{className:`protocol-plan-candidate`,children:[(0,Q.jsxs)(`div`,{className:`protocol-plan-candidate-head`,children:[(0,Q.jsxs)(`code`,{children:[n.provider,`/`,n.model]}),(0,Q.jsx)(`span`,{className:`badge ${pb[n.mode]}`,children:t(fb[n.mode])}),!n.eligible&&n.mode!==`blocked`&&(0,Q.jsx)(`span`,{className:`badge badge-muted`,children:t(`api.plan.ineligible`)})]}),(0,Q.jsxs)(`dl`,{className:`awi-kv`,children:[(0,Q.jsxs)(`div`,{className:`awi-kv-row`,children:[(0,Q.jsx)(`dt`,{children:t(`api.plan.requestPath`)}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(_b,{path:n.requestPath})})]}),(0,Q.jsxs)(`div`,{className:`awi-kv-row`,children:[(0,Q.jsx)(`dt`,{children:t(`api.plan.responsePath`)}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(_b,{path:n.responsePath})})]}),(0,Q.jsxs)(`div`,{className:`awi-kv-row`,children:[(0,Q.jsx)(`dt`,{children:t(`api.plan.fidelity`)}),(0,Q.jsx)(`dd`,{children:t(mb[n.fidelity])})]}),n.reasonCodes.length>0&&(0,Q.jsxs)(`div`,{className:`awi-kv-row`,children:[(0,Q.jsx)(`dt`,{children:t(`api.plan.reasons`)}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(`span`,{className:`protocol-plan-chips`,children:n.reasonCodes.map(e=>(0,Q.jsx)(`code`,{className:`chip`,children:e},e))})})]})]}),(0,Q.jsx)(ub,{effects:n.featureEffects,unknownFeatures:n.unknownFeatures}),(0,Q.jsxs)(`div`,{className:`protocol-plan-links`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>qg(n.provider),children:t(`protocolLinks.providerSettings`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>Kg({inbound:e.inbound,upstream:Rg(n.upstream)}),children:t(`protocolLinks.labEvidence`)})]})]},`${n.provider}/${n.model}`))})]})}function bb({apiBase:e,models:t,protocolLabel:n}){let r=O(),[i,a]=(0,Z.useState)(``),[o,s]=(0,Z.useState)(`chat`),[c,l]=(0,Z.useState)(()=>new Set),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(!1),v=(0,Z.useRef)(null);(0,Z.useEffect)(()=>()=>v.current?.abort(),[]);let y=i||t[0]?.id||``,b=(0,Z.useMemo)(()=>Cm.filter(e=>Em[e].includes(o)),[o]),x=e=>{s(e),l(t=>new Set([...t].filter(t=>Em[t].includes(e))))},S=(e,t)=>{l(n=>{let r=new Set(n);return t?r.add(e):r.delete(e),r})},C=async()=>{if(!y||f)return;v.current?.abort();let t=new AbortController;v.current=t,p(!0),h(!1);try{let n=await $m(e,{model:y,inbound:o,features:[...c]},t.signal);if(t.signal.aborted)return;n.kind===`unavailable`?(_(!0),d(null)):n.kind===`error`?h(!0):d(n.plan)}catch{}finally{v.current===t&&p(!1)}};return(0,Q.jsxs)(`div`,{className:`panel api-panel protocol-plan-panel`,children:[(0,Q.jsx)(`h3`,{className:`panel-title`,children:r(`api.plan.title`)}),(0,Q.jsx)(`p`,{className:`muted small`,children:r(`api.plan.description`)}),(0,Q.jsx)(`p`,{className:`muted small`,children:r(`api.plan.modeNote`)}),g?(0,Q.jsx)(`p`,{className:`muted small`,children:r(`api.plan.unavailable`)}):t.length===0?(0,Q.jsx)(`p`,{className:`muted small`,children:r(`api.plan.noModels`)}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`protocol-plan-form`,children:[(0,Q.jsxs)(`label`,{className:`protocol-plan-field`,children:[(0,Q.jsx)(`span`,{className:`muted small`,children:r(`api.plan.model`)}),(0,Q.jsx)(`select`,{className:`input`,value:y,onChange:e=>a(e.target.value),children:t.map(e=>(0,Q.jsx)(`option`,{value:e.id,children:e.id},e.id))})]}),(0,Q.jsxs)(`label`,{className:`protocol-plan-field`,children:[(0,Q.jsx)(`span`,{className:`muted small`,children:r(`api.plan.inbound`)}),(0,Q.jsx)(`select`,{className:`input`,value:o,onChange:e=>x(e.target.value),children:db.map(e=>(0,Q.jsx)(`option`,{value:e,children:n(e)},e))})]})]}),(0,Q.jsxs)(`fieldset`,{className:`protocol-plan-features`,children:[(0,Q.jsx)(`legend`,{className:`muted small`,children:r(`api.plan.features`)}),b.map(e=>(0,Q.jsxs)(`label`,{className:`protocol-plan-feature`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:c.has(e),onChange:t=>S(e,t.target.checked)}),(0,Q.jsx)(`code`,{children:e})]},e))]}),(0,Q.jsx)(`div`,{children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:!y||f,onClick:()=>{C()},children:r(f?`api.plan.previewing`:`api.plan.preview`)})}),m&&(0,Q.jsx)(`p`,{className:`awi-delete-error`,role:`alert`,children:r(`api.plan.failed`)}),u&&(0,Q.jsx)(yb,{plan:u})]})]})}function xb({apiBase:e,model:t,dirty:n}){let r=O(),[i,a]=(0,Z.useState)(`responses`),[o,s]=(0,Z.useState)(null),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(!1),m=(0,Z.useRef)(null);(0,Z.useEffect)(()=>()=>m.current?.abort(),[]);let h=(0,Z.useMemo)(()=>Cm.filter(e=>Em[e].includes(i)),[i]),g=async()=>{if(c)return;m.current?.abort();let n=new AbortController;m.current=n,l(!0),d(!1);try{let r=await $m(e,{model:t,inbound:i,features:h},n.signal);if(n.signal.aborted)return;r.kind===`unavailable`?p(!0):r.kind===`error`?d(!0):s(r.plan)}catch{}finally{m.current===n&&l(!1)}};return f?null:(0,Q.jsxs)(`section`,{className:`pwi-section combo-protocol-plan`,"aria-labelledby":`cws-plan-title`,children:[(0,Q.jsx)(`h3`,{id:`cws-plan-title`,className:`pwi-section-title`,children:r(`cws.plan.title`)}),(0,Q.jsx)(`p`,{className:`muted small`,children:r(`cws.plan.description`)}),(0,Q.jsx)(`p`,{className:`muted small`,children:r(`api.plan.modeNote`)}),n&&(0,Q.jsx)(`p`,{className:`muted small`,role:`status`,children:r(`cws.plan.savedOnly`)}),(0,Q.jsx)(`div`,{className:`protocol-plan-form`,children:(0,Q.jsxs)(`label`,{className:`protocol-plan-field`,children:[(0,Q.jsx)(`span`,{className:`muted small`,children:r(`api.plan.inbound`)}),(0,Q.jsx)(`select`,{className:`input`,value:i,onChange:e=>{a(e.target.value),s(null)},children:rm.map(e=>(0,Q.jsx)(`option`,{value:e,children:oh(e,r)},e))})]})}),(0,Q.jsx)(`div`,{children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:c,onClick:()=>{g()},children:r(c?`api.plan.previewing`:`cws.plan.run`)})}),u&&(0,Q.jsx)(`p`,{className:`awi-delete-error`,role:`alert`,children:r(`api.plan.failed`)}),o&&o.inbound===i&&(0,Q.jsx)(yb,{plan:o})]})}var Sb=[`config`,`about`],Cb=[`config`,`stats`,`about`],wb=e=>`cws-detail-tab-${e}`,Tb=e=>`cws-detail-panel-${e}`,Eb=[];function Db({apiBase:e,baseline:t,combos:n=Eb,isCreate:r=!1,otherIds:i,otherAliases:a,providerMap:o,providerQuotaStates:s,providers:c,models:l,capabilityModels:u=l,visionEnabled:d,onBack:f,onSaved:p,onRequestRemove:m,onSave:h,onDirtyChange:g}){let _=O(),[v,y]=(0,Z.useState)(`config`),b=!r&&t.strategy===`jev`?Cb:Sb,x=(0,Z.useCallback)((e,t)=>{let n;if(e.key===`ArrowRight`)n=(t+1)%b.length;else if(e.key===`ArrowLeft`)n=(t-1+b.length)%b.length;else if(e.key===`Home`)n=0;else if(e.key===`End`)n=b.length-1;else return;e.preventDefault(),y(b[n]),e.currentTarget.parentElement?.querySelectorAll(`[role="tab"]`)[n]?.focus()},[b]),[S,C]=(0,Z.useState)(t),[w,T]=(0,Z.useState)(!1),[E,D]=(0,Z.useState)(null),[k,A]=(0,Z.useState)(!1),j=!Oi(S,t),M=Ti(S.targets,s,o)===`exhausted`,N=JSON.stringify([t.id,t.alias,t.nativeAlias,t.displayName,t.strategy,t.stickyLimit,t.defaultEffort,t.imageInput,t.reasoningEffortMode,t.decisionProvider,t.decisionModel,t.decisionTimeoutMs,t.targets.map(e=>[e.provider,e.model,e.weight,e.reasoningEfforts,e.modelProfile])]),P=(0,Z.useMemo)(()=>{let e=new Map;for(let t of u)e.set(`${t.provider}/${t.id}`,t.reasoningEfforts);return e},[u]),I=(0,Z.useMemo)(()=>Yr(S.targets,P,S.reasoningEffortMode??`strict`),[S.targets,P,S.reasoningEffortMode]),L=(0,Z.useCallback)(e=>{let n=e(S);C(n),g(!Oi(n,t))},[S,t,g]);(0,Z.useEffect)(()=>{let e=window.setTimeout(()=>{C(t),D(null),y(`config`),g(!1)},0);return()=>window.clearTimeout(e)},[N]);let R=async()=>{try{await navigator.clipboard.writeText(t.model),A(!0),window.setTimeout(()=>A(!1),1200)}catch{}},z=async()=>{let e=Ai(S,{existingIds:i,existingAliases:a,combos:n,isCreate:r,providers:o});if(e){D({ok:!1,text:Gy(_,e,S,o)});return}T(!0);let s=S.id.trim(),c=S.alias?.trim()||null,l=S.displayName?.trim()||null,u={...S,id:s,alias:c,displayName:l,model:oi(s,c),...S.strategy===`jev`?{}:{decisionProvider:null,decisionModel:null,decisionTimeoutMs:null}},d=!r&&s!==t.id?t.id:void 0;try{let e=await h(u,r,d);if(!e.ok){D({ok:!1,text:e.error||_(`cws.saveFailed`)});return}D({ok:!0,text:r?_(`cws.created`,{model:u.model}):_(`cws.saved`)}),p(u)}finally{T(!1)}},B=r?S.id.trim()?oi(S.id,S.alias):_(`cws.addTitle`):t.model;return(0,Q.jsxs)(`div`,{className:`combos-workspace-detail`,children:[(0,Q.jsxs)(`div`,{className:`combos-workspace-detail-head`,children:[f&&(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm pwi-back-overview`,onClick:f,"aria-label":_(`cws.backToAll`),children:[(0,Q.jsx)(Ke,{style:{width:14,height:14,transform:`rotate(180deg)`},"aria-hidden":`true`}),_(`cws.allCombos`)]}),(0,Q.jsx)(`h2`,{className:`combos-workspace-detail-title`,children:B}),!r&&(0,Q.jsx)(`button`,{type:`button`,className:`chip cwi-copy-chip`,onClick:()=>{R()},title:_(`cws.copyModel`),children:_(k?`cws.copied`:`cws.copyModel`)}),(0,Q.jsxs)(`div`,{className:`combos-workspace-detail-actions`,children:[!r&&m&&(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:m,children:[(0,Q.jsx)(F,{width:14,height:14}),` `,_(`common.remove`)]}),(0,Q.jsx)(`button`,{id:r?`cwi-edit-create`:`cwi-edit-save`,type:`button`,className:`btn btn-primary btn-sm`,disabled:!r&&!j||w||M,onClick:()=>{z()},children:_(w?`common.saving`:r?`cws.create`:`common.save`)})]})]}),E&&(0,Q.jsx)($,{tone:E.ok?`ok`:`err`,children:E.text}),M&&(0,Q.jsx)(`div`,{className:`cwi-quota-banner`,role:`status`,"aria-live":`polite`,children:_(`cws.quota.allExhausted`)}),(0,Q.jsx)(`div`,{className:`segmented combos-workspace-segmented`,role:`tablist`,"aria-label":_(`cws.tabsLabel`),children:b.map((e,t)=>(0,Q.jsx)(`button`,{type:`button`,role:`tab`,id:wb(e),"aria-selected":v===e,"aria-controls":Tb(e),tabIndex:v===e?0:-1,className:`btn btn-sm ${v===e?`btn-primary`:`btn-ghost`}`,onClick:()=>y(e),onKeyDown:e=>x(e,t),children:_(e===`config`?`cws.tab.config`:e===`stats`?`cws.jev.stats.tab`:`cws.tab.about`)},e))}),(0,Q.jsxs)(`div`,{className:`combos-workspace-tab-content`,role:`tabpanel`,id:Tb(`config`),"aria-labelledby":wb(`config`),hidden:v!==`config`,children:[(0,Q.jsxs)(`div`,{className:`cwi-form-grid`,children:[(0,Q.jsxs)(`div`,{className:`cwi-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`cwi-edit-id`,children:_(`cws.field.id`)}),(0,Q.jsx)(`input`,{id:`cwi-edit-id`,className:`input mono`,value:S.id,disabled:w,onChange:e=>L(t=>({...t,id:e.target.value,model:oi(e.target.value,t.alias)}))}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:r?_(`cws.field.idInternalHint`):_(`cws.field.idHintEdit`,{model:oi(S.id,S.alias)})})]}),(0,Q.jsxs)(`div`,{className:`cwi-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`cwi-edit-alias`,children:_(`cws.field.alias`)}),(0,Q.jsx)(`input`,{id:`cwi-edit-alias`,className:`input mono`,value:S.alias??``,placeholder:ai(S.id.trim()||`…`),disabled:w,onChange:e=>L(t=>si(t,e.target.value))}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:_(`cws.field.aliasHint`)})]}),(0,Q.jsxs)(`div`,{className:`cwi-field`,children:[(0,Q.jsxs)(`label`,{htmlFor:`cwi-edit-native-alias`,children:[(0,Q.jsx)(`input`,{id:`cwi-edit-native-alias`,type:`checkbox`,checked:S.nativeAlias,disabled:w,onChange:e=>L(t=>({...t,nativeAlias:e.target.checked}))}),` `,_(`cws.field.nativeAlias`)]}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:_(`cws.field.nativeAliasHint`)})]}),(0,Q.jsxs)(`div`,{className:`cwi-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`cwi-edit-display-name`,children:_(`cws.field.displayName`)}),(0,Q.jsx)(`input`,{id:`cwi-edit-display-name`,className:`input`,value:S.displayName??``,maxLength:128,disabled:w,onChange:e=>L(t=>({...t,displayName:e.target.value||null}))}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:_(`cws.field.displayNameHint`)})]}),(0,Q.jsxs)(`div`,{className:`cwi-field`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:_(`cws.strategy`)}),(0,Q.jsx)(Xy,{value:S.strategy,disabled:w,onChange:e=>L(t=>({...t,strategy:e}))}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:_(Gr[S.strategy])})]}),S.strategy===`jev`&&(0,Q.jsx)(nb,{idPrefix:`cwi-edit`,apiBase:e,combo:S,combos:n,providers:c,models:l,decisionProvider:S.decisionProvider??null,decisionModel:S.decisionModel??null,decisionTimeoutMs:S.decisionTimeoutMs??null,disabled:w,onChange:e=>L(t=>({...t,...e}))}),(0,Q.jsxs)(`div`,{className:`cwi-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`cwi-effort`,children:_(`cws.field.defaultEffort`)}),(0,Q.jsx)(Zy,{id:`cwi-effort`,value:S.defaultEffort,disabled:w,allowedEfforts:I,onChange:e=>L(t=>({...t,defaultEffort:e}))}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:_(`cws.field.defaultEffortHint`)})]}),S.strategy===`round-robin`&&(0,Q.jsxs)(`div`,{className:`cwi-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`cwi-sticky`,children:_(`cws.field.stickyLimit`)}),(0,Q.jsx)(`input`,{id:`cwi-sticky`,className:`input mono`,type:`number`,min:1,max:100,value:S.stickyLimit,disabled:w,onChange:e=>{let t=qy(e.target.value,1,100);t!==void 0&&L(e=>({...e,stickyLimit:t}))}})]}),(0,Q.jsxs)(`div`,{className:`cwi-field`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:_(`cws.targets`)}),(0,Q.jsx)($y,{targets:S.targets,strategy:S.strategy,providers:c,models:l,capabilityModels:u,providerQuotaStates:s,onChange:e=>L(t=>({...t,targets:e}))}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:_(Kr[S.strategy])})]}),(0,Q.jsx)(Qy,{targets:S.targets,models:u,imageInput:S.imageInput??`auto`,reasoningEffortMode:S.reasoningEffortMode??`strict`,visionEnabled:d,disabled:w,onChange:e=>L(t=>({...t,...e}))})]}),!r&&e!==void 0&&(0,Q.jsx)(xb,{apiBase:e,model:t.model,dirty:j})]}),!r&&t.strategy===`jev`&&(0,Q.jsx)(`div`,{className:`combos-workspace-tab-content`,role:`tabpanel`,id:Tb(`stats`),"aria-labelledby":wb(`stats`),hidden:v!==`stats`,children:(0,Q.jsx)(sb,{apiBase:e??``,comboId:t.id,active:v===`stats`})}),(0,Q.jsx)(`div`,{className:`combos-workspace-tab-content`,role:`tabpanel`,id:Tb(`about`),"aria-labelledby":wb(`about`),hidden:v!==`about`,tabIndex:0,children:(0,Q.jsxs)(`section`,{className:`pwi-section`,children:[(0,Q.jsx)(`h3`,{className:`pwi-section-title`,children:_(`cws.aboutTitle`)}),(0,Q.jsx)(`p`,{className:`muted`,style:{margin:0,maxWidth:`70ch`,overflowWrap:`anywhere`},children:_(`cws.aboutBody`)})]})})]})}function Ob({model:e,onCancel:t,onConfirm:n}){let r=O(),i=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{let e=i.current;e&&!e.open&&e.showModal()},[]);let a=(0,Z.useCallback)(e=>{e.preventDefault(),t()},[t]);return(0,Q.jsxs)(`dialog`,{ref:i,className:`modal-overlay`,"aria-labelledby":`cwi-remove-title`,onCancel:a,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":r(`common.close`),tabIndex:-1,onClick:t}),(0,Q.jsxs)(`div`,{className:`modal-card pwi-remove-confirm-card`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsx)(`h3`,{id:`cwi-remove-title`,className:`pwi-remove-confirm-title`,children:r(`cws.removeConfirmTitle`,{model:e})}),(0,Q.jsx)(`p`,{className:`muted pwi-remove-confirm-desc`,children:r(`cws.removeConfirmDesc`)}),(0,Q.jsxs)(`div`,{className:`pwi-remove-confirm-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:t,children:r(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn pwi-remove-confirm-danger`,onClick:n,children:r(`common.remove`)})]})]})]})}function kb({onKeep:e,onDiscard:t}){let n=O(),r=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{let e=r.current;e&&!e.open&&e.showModal()},[]);let i=(0,Z.useCallback)(t=>{t.preventDefault(),e()},[e]);return(0,Q.jsxs)(`dialog`,{ref:r,className:`modal-overlay`,"aria-labelledby":`cwi-unsaved-title`,onCancel:i,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":n(`common.close`),tabIndex:-1,onClick:e}),(0,Q.jsxs)(`div`,{className:`modal-card pwi-json-unsaved-card`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsx)(`h3`,{id:`cwi-unsaved-title`,className:`pwi-json-unsaved-title`,children:n(`cws.unsavedTitle`)}),(0,Q.jsx)(`p`,{className:`muted pwi-json-unsaved-desc`,children:n(`cws.unsavedDesc`)}),(0,Q.jsxs)(`div`,{className:`pwi-json-unsaved-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,"data-testid":`cwi-unsaved-keep`,onClick:e,children:n(`cws.keepEditing`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-danger`,"data-testid":`cwi-unsaved-discard`,onClick:t,children:n(`common.discard`)})]})]})]})}function Ab(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 jb({combos:e,cataloguedComboIds:t,providerMap:n,providerQuotaStates:r,providers:i,onSelect:a,onAdd:o}){let s=O(),c=_i(e),l=Ei(e,{cataloguedComboIds:t,providers:n,providerQuotaStates:r}),u=e.flatMap(e=>{let t=Ii(e,i);return t?[{item:e,decision:t}]:[]});return(0,Q.jsxs)(`div`,{className:`combos-workspace-overview`,children:[(0,Q.jsxs)(`div`,{className:`combos-workspace-overview-head`,children:[(0,Q.jsx)(`h2`,{className:`combos-workspace-overview-title`,children:s(`cws.overviewTitle`)}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:o,children:[(0,Q.jsx)(N,{width:14,height:14}),` `,s(`cws.add`)]})]}),(0,Q.jsx)(`p`,{className:`muted`,style:{marginTop:0,maxWidth:`62ch`},children:s(`cws.overviewBlurb`)}),(0,Q.jsxs)(`div`,{className:`cwi-count-strip`,children:[(0,Q.jsxs)(`div`,{className:`cwi-count-pill`,children:[(0,Q.jsx)(`strong`,{children:e.length}),(0,Q.jsx)(`span`,{children:s(`cws.count.total`)})]}),(0,Q.jsxs)(`div`,{className:`cwi-count-pill`,children:[(0,Q.jsx)(`strong`,{children:c.failover.length}),(0,Q.jsx)(`span`,{children:s(`cws.count.failover`)})]}),(0,Q.jsxs)(`div`,{className:`cwi-count-pill`,children:[(0,Q.jsx)(`strong`,{children:c.roundRobin.length}),(0,Q.jsx)(`span`,{children:s(`cws.count.roundRobin`)})]}),(0,Q.jsxs)(`div`,{className:`cwi-count-pill`,children:[(0,Q.jsx)(`strong`,{children:c.other.length}),(0,Q.jsx)(`span`,{children:s(`cws.count.other`)})]})]}),(0,Q.jsxs)(`section`,{className:`pwi-section`,"aria-label":s(`cws.howTitle`),children:[(0,Q.jsx)(`h3`,{className:`pwi-section-title`,children:s(`cws.howTitle`)}),(0,Q.jsx)(`p`,{className:`muted`,style:{margin:0},children:s(`cws.howBody`)})]}),u.length>0&&(0,Q.jsxs)(`section`,{className:`pwi-section`,"aria-label":s(`cws.jev.decisionServicesTitle`),children:[(0,Q.jsx)(`h3`,{className:`pwi-section-title`,children:s(`cws.jev.decisionServicesTitle`)}),(0,Q.jsx)(`div`,{className:`cwi-attention-list`,children:u.map(({item:e,decision:t})=>(0,Q.jsxs)(`button`,{type:`button`,className:`cwi-attention-row`,style:{flexWrap:`wrap`},"data-decision-provider":t.model?void 0:t.provider??`jev`,"data-decision-model":t.model??void 0,onClick:()=>a(e.id),children:[(0,Q.jsx)(`code`,{className:`chip`,children:e.model}),t.model?(0,Q.jsxs)(`span`,{children:[s(`cws.jev.method.model`),`: `,(0,Q.jsx)(`code`,{children:t.model})]}):(0,Q.jsx)(`span`,{children:t.provider??s(`cws.jev.decisionServiceDefault`)}),t.baseUrl&&(0,Q.jsx)(`code`,{className:`muted`,style:{overflowWrap:`anywhere`},children:t.baseUrl}),(0,Q.jsx)(`span`,{className:`muted`,children:t.timeoutMs===null?s(`cws.jev.decisionTimeoutDefaultShort`):s(`cws.jev.decisionTimeoutShort`,{ms:t.timeoutMs})}),(0,Q.jsx)(Ke,{width:14,height:14,style:{marginLeft:`auto`},"aria-hidden":`true`})]},e.id))})]}),l.length>0&&(0,Q.jsxs)(`section`,{className:`pwi-section`,"aria-label":s(`cws.attentionTitle`),children:[(0,Q.jsx)(`h3`,{className:`pwi-section-title`,children:s(`cws.attentionTitle`)}),(0,Q.jsx)(`div`,{className:`cwi-attention-list`,children:l.map(e=>(0,Q.jsxs)(`button`,{type:`button`,className:`cwi-attention-row`,onClick:()=>a(e.id),children:[(0,Q.jsx)(Ae,{width:14,height:14,"aria-hidden":`true`}),(0,Q.jsx)(`code`,{className:`chip`,children:e.model}),(0,Q.jsx)(`span`,{className:`muted`,children:Ab(e.reason,s)}),(0,Q.jsx)(Ke,{width:14,height:14,style:{marginLeft:`auto`},"aria-hidden":`true`})]},`${e.id}:${e.reason}`))})]})]})}function Mb({apiBase:e,combos:t,providerQuotaStates:n,providers:r,models:i,capabilityModels:a=i,cataloguedComboIds:o,visionEnabled:s,loading:c,onRefresh:l,onSave:u,onRemove:d,onAdd:f,adding:p,addIntent:m,addDecisionProvider:h,onCloseAdd:g,onCreated:_}){let v=O(),y=(0,Z.useMemo)(()=>Object.fromEntries(r.map(e=>[e.name,{disabled:e.disabled,adapter:e.adapter,baseUrl:e.baseUrl,defaultModel:e.defaultModel,models:e.models}])),[r]),[b,x]=(0,Z.useState)(``),[S,C]=(0,Z.useState)(null),[w,T]=(0,Z.useState)(void 0),[E,D]=(0,Z.useState)(null),[k,A]=(0,Z.useState)(null),j=(0,Z.useMemo)(()=>ji(),[]),M=(0,Z.useMemo)(()=>t.some(e=>e.id===`jev-auto`||e.alias===`jev-auto`),[t]),P=(0,Z.useMemo)(()=>new Set(r.filter(e=>!e.disabled&&!e.hiddenFromPicker&&e.adapter!==`jev-decision`).map(e=>e.name)),[r]),F=(0,Z.useMemo)(()=>{if(m!==`jev-auto`)return;let e=r.length===0||Pi(h,y)===null;return Ni(i,P,e?h:null)},[h,m,P,i,y,r.length]),I=(0,Z.useMemo)(()=>vi(t,b),[t,b]),L=(0,Z.useMemo)(()=>_i(I),[I]),R=(0,Z.useMemo)(()=>t.flatMap(e=>e.alias?[e.alias]:[]),[t]),z=S&&t.some(e=>e.id===S)?S:null,B=t.find(e=>e.id===z)??null,V=B&&k?.id===B.id?k:B,[H,W]=(0,Z.useState)(!1),G=[],ee=[];if(V)for(let e of t)e.id!==V.id&&(G.push(e.id),e.alias&&ee.push(e.alias));let te=(0,Z.useCallback)(e=>{if(e!==z){if(!H){C(e),A(null);return}T(e)}},[z,H]),K=()=>{w!==void 0&&(C(w),A(null),W(!1),T(void 0))},q=()=>T(void 0),ne=w!==void 0&&H,J=!c&&t.length===0&&!p;return(0,Q.jsxs)(`div`,{className:`combos-workspace-root`,children:[(0,Q.jsxs)(`aside`,{className:`combos-workspace-rail`,"aria-label":v(`cws.railAria`),children:[(0,Q.jsxs)(`div`,{className:`combos-workspace-rail-header`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{className:`combos-workspace-rail-title`,children:v(`nav.combos`)}),(0,Q.jsx)(`div`,{className:`combos-workspace-rail-count`,children:t.length})]}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:()=>{if(J){document.getElementById(`cwi-edit-id`)?.focus();return}f()},"aria-label":v(`cws.add`),children:[(0,Q.jsx)(N,{width:14,height:14}),` `,v(`cws.add`)]})]}),(0,Q.jsxs)(`div`,{className:`cwi-jev-quick-action`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>f(`jev-auto`),disabled:M,title:v(M?`cws.jev.exists`:`cws.jev.setupHint`),children:[(0,Q.jsx)(U,{width:14,height:14}),` `,v(`cws.jev.create`)]}),M&&(0,Q.jsx)(`span`,{className:`muted`,children:v(`cws.jev.exists`)})]}),t.length>0&&(0,Q.jsx)(`div`,{className:`cwi-search-row`,children:(0,Q.jsxs)(`div`,{className:`cwi-search-wrap`,children:[(0,Q.jsx)(X,{className:`cwi-search-icon`,"aria-hidden":`true`}),(0,Q.jsx)(`input`,{className:`input cwi-search-input`,value:b,onChange:e=>x(e.target.value),placeholder:v(`cws.searchPlaceholder`),"aria-label":v(`cws.searchPlaceholder`)})]})}),(0,Q.jsx)(`div`,{className:`combos-workspace-rail-list`,children:I.length===0&&t.length>0?(0,Q.jsx)(`p`,{className:`muted`,style:{padding:`16px`},children:v(`cws.noSearchResults`)}):(0,Q.jsx)(Q.Fragment,{children:[[`failover`,L.failover,`cws.group.failover`],[`round-robin`,L.roundRobin,`cws.group.roundRobin`],[`other`,L.other,`cws.group.other`]].map(([e,t,n])=>t.length>0?(0,Q.jsxs)(`div`,{className:`combos-workspace-rail-group`,children:[(0,Q.jsxs)(`div`,{className:`combos-workspace-rail-group-head`,children:[(0,Q.jsx)(`span`,{className:`pwi-dot`,"aria-hidden":`true`}),v(n),(0,Q.jsx)(`span`,{className:`combos-workspace-rail-count`,children:t.length})]}),t.map(e=>(0,Q.jsxs)(`button`,{type:`button`,className:`combos-workspace-rail-row${z===e.id?` combos-workspace-rail-row--selected`:``}`,onClick:()=>te(e.id),"aria-current":z===e.id?`true`:void 0,children:[(0,Q.jsx)(`span`,{className:`combos-workspace-rail-icon`,"aria-hidden":`true`,children:(0,Q.jsx)(U,{width:16,height:16})}),(0,Q.jsx)(`span`,{className:`combos-workspace-rail-name`,children:e.model}),(0,Q.jsx)(`span`,{className:`combos-workspace-rail-meta`,children:e.targets.length===1?v(`cws.targetCountOne`):v(`cws.targetCount`,{count:e.targets.length})}),(0,Q.jsx)(Ke,{className:`combos-workspace-rail-chevron`,"aria-hidden":`true`})]},e.id))]},e):null)})})]}),(0,Q.jsx)(`div`,{className:`combos-workspace-main`,children:V?(0,Q.jsx)(Db,{apiBase:e,baseline:V,combos:t.filter(e=>e.id!==V.id),otherIds:G,otherAliases:ee,providerMap:y,providerQuotaStates:n,providers:r,models:i,capabilityModels:a,visionEnabled:s,onBack:()=>te(null),onSaved:e=>{W(!1),e.id===V.id?A(e):(C(e.id),A(null)),l()},onRequestRemove:()=>D(V.id),onSave:u,onDirtyChange:W},V.id):J?(0,Q.jsx)(Db,{apiBase:e,baseline:j,isCreate:!0,otherIds:[],otherAliases:[],providerMap:y,providerQuotaStates:n,providers:r,models:i,capabilityModels:a,visionEnabled:s,onSaved:e=>{W(!1),C(e.id),A(e),_(e.id)},onSave:u,onDirtyChange:W},`first-combo`):(0,Q.jsx)(jb,{combos:t,cataloguedComboIds:o,providerMap:y,providerQuotaStates:n,providers:r,onSelect:e=>te(e),onAdd:f})}),p&&(0,Q.jsx)(ib,{apiBase:e,combos:t,existingIds:t.map(e=>e.id),existingAliases:R,providerMap:y,providerQuotaStates:n,providers:r,models:i,capabilityModels:a,initialDraft:F,onClose:g,onSubmit:async e=>{let t=await u(e,!0);return t.ok&&(g(),_(e.id),C(e.id),A(null)),t}},`${m??`blank`}:${F?.decisionProvider??``}`),E&&(0,Q.jsx)(Ob,{model:t.find(e=>e.id===E)?.model??ai(E),onCancel:()=>D(null),onConfirm:()=>{(async()=>{let e=await d(E);D(null),e.ok&&(z===E&&(C(null),A(null)),l())})()}}),ne&&(0,Q.jsx)(kb,{onKeep:q,onDiscard:K})]})}function Nb(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e.error;return typeof t==`string`&&t.trim()?t:void 0}function Pb(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&e.success===!0}function Fb(e){return Ga(e)?.data??null}function Ib(e){return Ga(e)?.cachedAt??null}function Lb({apiBase:e,active:t=!0,onCountChange:n}){let r=O(),i=`ocx.combos.workspace.v2:${e}`,a=(0,Z.useMemo)(()=>Fb(i),[i]),[o,s]=(0,Z.useState)(a??null),[c,l]=(0,Z.useState)(``),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(()=>Og(window.location.hash)===void 0?null:`jev-auto`),[m,h]=(0,Z.useState)(()=>Og(window.location.hash)??null),g=(0,Z.useCallback)(()=>{p(null),h(null),Og(window.location.hash)!==void 0&&Kt(`models/combos`)},[]),_=(e,t)=>{l(e),d(t)};(0,Z.useEffect)(()=>{if(!c||!u)return;let e=window.setTimeout(()=>{l(``),d(!1)},5e3);return()=>window.clearTimeout(e)},[c,u]);let v=(0,Z.useCallback)(async t=>{let[n,r,a]=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||!a.ok)throw Error(`combo workspace load failed`);let o=await n.json(),c=await r.json(),l=await a.json(),u=Array.isArray(l)?l:Array.isArray(l?.models)?l.models:[],d=gi(o),f=c.providers??{},p=P(f),m=Object.entries(f).map(([e,t])=>({name:e,disabled:!!t.disabled,hiddenFromPicker:t.adapter===`jev-decision`||!Object.hasOwn(p,e),authMode:t.authMode,adapter:t.adapter,baseUrl:t.baseUrl,...typeof t.defaultModel==`string`?{defaultModel:t.defaultModel}:{},...Array.isArray(t.models)?{models:t.models.filter(e=>typeof e==`string`)}:{}})),h=[],g=[],_=new Set,v=e=>Array.isArray(e)?e.flatMap(e=>{let t=typeof e==`string`?e.trim():``;return t?[t]:[]}):void 0;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`){_.add(r);continue}let i=Array.isArray(t.reasoningEfforts)?t.reasoningEfforts.filter(e=>typeof e==`string`):void 0,a=v(t.inputModalities),o=v(t.inputModalitiesDeclared),s={provider:n,id:r,namespaced:typeof t.namespaced==`string`?t.namespaced:void 0,...i?{reasoningEfforts:i}:{},...a&&a.length>0?{inputModalities:a}:{},...o&&o.length>0?{inputModalitiesDeclared:o}:{},visionSidecarConsumer:t.visionSidecarConsumer===!0};g.push(s),h.push(s)}for(let[e,t]of Object.entries(f)){let n=typeof t.defaultModel==`string`?t.defaultModel.trim():``;!n||t.disabled||g.some(t=>t.provider===e&&t.id===n)||h.push({provider:e,id:n,namespaced:`${e}/${n}`})}let y={combos:d,providers:m,models:h,capabilityModels:g,cataloguedComboIds:[..._]};return Ka(i,y),s(y),y},[e,i]),y=Ya(i,[e],v,{isEmpty:()=>!1,initialData:a??void 0,initialDataCachedAt:Ib(i),staleAfterMs:6e4,enabled:t}),{state:b}=y,[x,S]=(0,Z.useState)(void 0);(0,Z.useEffect)(()=>{if(!t)return;let n=!1;return fetch(`${e}/api/sidecar-settings`).then(e=>e.ok?e.json():null).then(e=>{if(n||!e||typeof e!=`object`)return;let t=e.vision;!t||typeof t!=`object`||S(t.enabled!==!1)}).catch(()=>{}),()=>{n=!0}},[t,e]);let[C,w]=(0,Z.useState)(()=>Date.now()),T=(0,Z.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 t?.aborted||w(Date.now()),r&&typeof r==`object`&&!Array.isArray(r)?r:{}},[e]),E=Ya(`ocx.combos.provider-quotas.v1:${e}`,[e],T,{isEmpty:()=>!1,pollMs:6e4,pauseWhenHidden:!0,enabled:t}),D=t&&E.lastAttemptOk?E.data?.reports:void 0,k=wi(D,C),A=Ci(D,C);(0,Z.useEffect)(()=>{if(!t)return;let e=()=>w(Date.now()),n=window.setTimeout(e,A===void 0?0:Math.max(0,A-Date.now())),r=dt(()=>{ut()||e()});return()=>{window.clearTimeout(n),r()}},[t,e,E.data,E.lastAttemptOk,A]);let j=b.data??o??void 0,M=j?.combos??[];(0,Z.useEffect)(()=>{j&&n?.(M.length)},[M.length,j,n]);let N=j?.providers??[],F=j?.models??[],I=j?.capabilityModels??F,L=new Set(j?.cataloguedComboIds??[]),R=async(t,n,i)=>{try{let a=await fetch(`${e}/api/combos`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(ki(t,{...i?{renameFrom:i}:{},...t.imageInput===`disabled`?{}:{visionSidecarTargets:Uy(t.targets,I)}}))}),o=a.ok?await a.json():await a.json().catch(()=>null),s=Nb(o);if(!a.ok||s||!Pb(o)){let e=s||r(`cws.saveFailed`);return _(e,!1),{ok:!1,error:e}}return y.refresh(),_(i?r(`cws.renamed`,{from:ai(i),to:t.model}):n?r(`cws.created`,{model:t.model}):r(`cws.saved`),!0),{ok:!0}}catch{let e=r(`cws.saveFailed`);return _(e,!1),{ok:!1,error:e}}},z=async t=>{try{let n=await fetch(`${e}/api/combos?id=${encodeURIComponent(t)}`,{method:`DELETE`}),i=n.ok?await n.json():await n.json().catch(()=>null),a=Nb(i);if(!n.ok||a||!Pb(i)){let e=a||r(`cws.removeFailed`);return _(e,!1),{ok:!1,error:e}}return y.refresh(),_(r(`cws.removed`,{id:t}),!0),{ok:!0}}catch{let e=r(`cws.removeFailed`);return _(e,!1),{ok:!1,error:e}}};if(b.showSkeleton&&!j)return(0,Q.jsx)(Ry,{label:r(`cws.loading`),rows:5});if(b.kind===`failed-cold`&&!j){let e=b.error instanceof Error?b.error.message:r(`cws.loadFailed`);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)($,{tone:`err`,children:e}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>y.refresh(),children:r(`common.retry`)})]})}return(0,Q.jsxs)(`div`,{className:`combos-workspace-shell`,children:[c&&(0,Q.jsx)(`div`,{className:`combos-workspace-shell-banner`,children:(0,Q.jsx)($,{tone:u?`ok`:`err`,children:c})}),b.showError&&(0,Q.jsx)(`div`,{className:`combos-workspace-shell-banner`,children:(0,Q.jsx)($,{tone:`err`,children:r(`cws.loadFailed`)})}),(0,Q.jsxs)(`div`,{className:`combos-workspace-shell-body`,"aria-busy":b.refreshing,children:[(0,Q.jsx)(`span`,{className:`sr-only`,role:`status`,"aria-live":`polite`,"aria-atomic":`true`,children:b.refreshing?r(`common.loading`):``}),(0,Q.jsx)(Mb,{apiBase:e,combos:M,providerQuotaStates:k,providers:N,models:F,capabilityModels:I,cataloguedComboIds:L,visionEnabled:x,loading:!1,onRefresh:()=>{y.refresh(),E.refresh()},onSave:R,onRemove:z,onAdd:(e=`blank`)=>p(e),adding:f!==null,addIntent:f??void 0,addDecisionProvider:m,onCloseAdd:g,onCreated:()=>y.refresh()})]})]})}var Rb=0;function zb(){return Rb+=1,`candidate-${Rb}`}function Bb(e,t){return{provider:e,model:t,key:zb()}}function Vb(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 Hb(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e,n={requiredSuites:Vb(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 Ub={latency:`0.55`,health:`0.25`,cost:`0.1`,quota:`0.1`},Wb={capability:`exclude`,health:`penalize`,quota:`penalize`,cost:`penalize`};function Gb(e){return e===!0?`true`:e===!1?`false`:``}function Kb(e){return e===void 0?``:String(e)}function qb(e=``,t=``){return{id:``,alias:``,candidates:[Bb(e,t)],require:{minContextWindow:``,minQuotaHeadroom:``,tools:``,imageInput:``,structuredOutput:``,reasoningEffort:``,serviceTier:``,localOnly:``,remoteAllowed:``,encryptedCodexTasks:``},optimize:{...Ub},limits:{maxEstimatedCostUsd:``,onUnknownCost:`allow`},unknownEvidence:{...Wb},compatibility:{enabled:!1,requiredSuites:[],minStatus:``,maxEvidenceAgeMs:``,unknownEvidence:`exclude`,degradedEvidence:`penalize`}}}function Jb(e){let t=Hb(e.compatibility);return{id:e.id,alias:e.alias??``,candidates:e.candidates.map(e=>({...e,key:zb()})),require:{minContextWindow:Kb(e.require.minContextWindow),minQuotaHeadroom:Kb(e.require.minQuotaHeadroom),tools:Gb(e.require.tools),imageInput:Gb(e.require.imageInput),structuredOutput:Gb(e.require.structuredOutput),reasoningEffort:e.require.reasoningEffort??``,serviceTier:e.require.serviceTier??``,localOnly:Gb(e.require.localOnly),remoteAllowed:Gb(e.require.remoteAllowed),encryptedCodexTasks:Gb(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:Kb(e.limits.maxEstimatedCostUsd),onUnknownCost:e.limits.onUnknownCost===`exclude`?`exclude`:`allow`},unknownEvidence:{...e.unknownEvidence},compatibility:{enabled:!!t,requiredSuites:t?.requiredSuites??[],minStatus:t?.minStatus??``,maxEvidenceAgeMs:Kb(t?.maxEvidenceAgeMs),unknownEvidence:t?.unknownEvidence??`exclude`,degradedEvidence:t?.degradedEvidence??`penalize`}}}function Yb(e){let t=e.trim();return t?Number(t):void 0}function Xb(e){if(e===`true`)return!0;if(e===`false`)return!1}function Zb(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}function Qb(e,t,n){let r=Zb({minContextWindow:Yb(e.require.minContextWindow),minQuotaHeadroom:Yb(e.require.minQuotaHeadroom),tools:Xb(e.require.tools),imageInput:Xb(e.require.imageInput),structuredOutput:Xb(e.require.structuredOutput),reasoningEffort:e.require.reasoningEffort.trim()||void 0,serviceTier:e.require.serviceTier.trim()||void 0,localOnly:Xb(e.require.localOnly),remoteAllowed:Xb(e.require.remoteAllowed),encryptedCodexTasks:Xb(e.require.encryptedCodexTasks)}),i=Yb(e.limits.maxEstimatedCostUsd),a=e.compatibility.enabled?Zb({requiredSuites:e.compatibility.requiredSuites,minStatus:e.compatibility.minStatus||void 0,maxEvidenceAgeMs:Yb(e.compatibility.maxEvidenceAgeMs),unknownEvidence:e.compatibility.unknownEvidence,degradedEvidence:e.compatibility.degradedEvidence}):void 0,o=Zb({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 $b(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 ex(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&e.success===!0}function tx(e,t){return e.filter(e=>e.provider===t)}var nx={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`},vi:{maxEvidenceAgeMs:`Tuổi bằng chứng tối đa (ms)`,unknownEvidence:`Bằng chứng không xác định`,degradedEvidence:`Bằng chứng bị suy giảm`},pt:{maxEvidenceAgeMs:`Idade máxima da evidência (ms)`,unknownEvidence:`Evidência desconhecida`,degradedEvidence:`Evidência degradada`}},rx=[`tools`,`imageInput`,`structuredOutput`,`localOnly`,`remoteAllowed`,`encryptedCodexTasks`],ix=[`reasoningEffort`,`serviceTier`],ax={minContextWindow:{min:1,max:void 0,step:1},minQuotaHeadroom:{min:0,max:1,step:`any`}},ox=Object.keys(ax),sx=[`latency`,`health`,`cost`,`quota`],cx=[`capability`,`health`,`quota`,`cost`],lx=[`allow`,`penalize`,`exclude`],ux=[`allow`,`exclude`];function dx(e){return`${e.evidenceLayer}:${e.suiteId}`}function fx(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function px(e){let t=new Set,n=[];for(let r of e){if(!fx(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=dx(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 mx(e,t){return e.some(e=>e.suiteId===t.suiteId&&e.evidenceLayer===t.evidenceLayer)}function hx(e,t){return e===void 0?t:`${Math.round(e)}ms`}function gx(e,t){return e==null?t:`${Math.round(e*100)}%`}function _x(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 vx(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 yx(e){if(!e||typeof e!=`object`||Array.isArray(e))return[];let t=e.profiles;return Array.isArray(t)?t.filter(e=>fx(e)?typeof e.id==`string`&&typeof e.model==`string`&&typeof e.revision==`string`&&Array.isArray(e.candidates)&&fx(e.require)&&fx(e.optimize)&&fx(e.limits)&&fx(e.unknownEvidence):!1).map(e=>{let t=Hb(`compatibility`in e?e.compatibility:void 0),n={...e};return delete n.compatibility,{...n,alias:e.alias??null,...t?{compatibility:t}:{}}}):[]}function bx(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 xx(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 Sx({apiBase:e,active:n=!0,onCountChange:r}){let{locale:i,t:a}=t(),o=nx[i],s=a(`routing.unavailable`),[c,l]=(0,Z.useState)([]),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)([]),[m,h]=(0,Z.useState)({}),[g,_]=(0,Z.useState)([]),[v,y]=(0,Z.useState)(``),[b,x]=(0,Z.useState)(null),[S,C]=(0,Z.useState)(null),[w,T]=(0,Z.useState)(null),[E,D]=(0,Z.useState)(!1),[O,k]=(0,Z.useState)(``),[A,j]=(0,Z.useState)(!1),[M,N]=(0,Z.useState)(!1),[P,F]=(0,Z.useState)(!1),[I,L]=(0,Z.useState)(null),[R,z]=(0,Z.useState)(``),[B,V]=(0,Z.useState)(!1),[H,U]=(0,Z.useState)([]),[W,G]=(0,Z.useState)(!1),ee=(0,Z.useRef)(null),te=(0,Z.useRef)(0),K=(0,Z.useRef)(null),q=(0,Z.useRef)(!0),ne=(0,Z.useCallback)(()=>{q.current=!1,K.current?.abort(),te.current++},[]),J=(0,Z.useRef)(0),Y=(0,Z.useCallback)((e,t)=>{T({message:e,ok:t})},[]);(0,Z.useEffect)(()=>{if(!w?.ok)return;let e=window.setTimeout(()=>T(null),5e3);return()=>window.clearTimeout(e)},[w]);let re=(0,Z.useCallback)(()=>{J.current+=1,L(null),z(``),V(!1)},[]),ie=(0,Z.useCallback)(e=>{ee.current=e,x(e),C(e?Jb(e):null),T(null),re()},[re]),X=(0,Z.useCallback)(async t=>{if(!q.current)return;K.current?.abort();let n=new AbortController;K.current=n;let{signal:r}=n,i=++te.current;y(``);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,f,m,g,v]=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!==te.current)return;let y=yx(u),b=ee.current,S=xx(y,b?.id??null,t),w=m.providers??{},T=Object.entries(w).filter(([,e])=>e.disabled!==!0).map(([e])=>e).sort((e,t)=>e<t?-1:+(e>t)),E=Object.fromEntries(Object.entries(w).filter(([,e])=>e.disabled!==!0&&typeof e.defaultModel==`string`).map(([e,t])=>[e,t.defaultModel.trim()]));ee.current=S,l(y),x(S),C(S?Jb(S):null),d(f),p(T),h(E),_(bx(g)),v&&Array.isArray(v.scenarios)?(U(px(v.scenarios)),G(!1)):(U([]),G(!0)),(!b||!S||b.id!==S.id||b.revision!==S.revision)&&re()}catch(e){if(i!==te.current||r.aborted)return;y(e instanceof Error?e.message:String(e))}finally{K.current===n&&(K.current=null)}},[e,re]);(0,Z.useEffect)(()=>{if(!n){ne();return}q.current=!0;let e=window.setTimeout(()=>void X(),0);return()=>{window.clearTimeout(e),ne()}},[n,ne,X]),(0,Z.useEffect)(()=>{r?.(c.length)},[r,c.length]);let ae=f[0]??``,oe=m[ae]??tx(g,ae)[0]?.id??``,se=()=>{ee.current=null,x(null),C(qb(ae,oe)),T(null),re()},ce=()=>{if(b){C(Jb(b)),T(null);return}ie(c[0]??null)},le=async()=>{if(!(!S||E)){D(!0),T(null);try{let t=Qb(S,b?`update`:`create`,b?.revision),n=await fetch(`${e}/api/routing-profiles`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(t)}),r=await gn(n);if(!n.ok){let e=await n.json().catch(()=>null);Y($b(e)??a(`routing.loadFailed`),!1);return}if(!ex(r)){Y($b(r)??a(`routing.loadFailed`),!1);return}await X(t.id),Y(a(`common.ok`),!0)}catch(e){Y(e instanceof Error?e.message:a(`routing.loadFailed`),!1)}finally{D(!1)}}},ue=async()=>{if(!(!b||E)&&await aa({message:a(`routing.removeConfirm`,{id:b.id}),confirmLabel:a(`common.remove`),tone:`danger`})){D(!0),T(null);try{let t=await fetch(`${e}/api/routing-profiles?id=${encodeURIComponent(b.id)}`,{method:`DELETE`}),n=await gn(t);if(!t.ok){let e=await t.json().catch(()=>null);Y($b(e)??a(`routing.loadFailed`),!1);return}if(!ex(n)){Y($b(n)??a(`routing.loadFailed`),!1);return}ee.current=null,await X(),Y(a(`common.ok`),!0)}catch(e){Y(e instanceof Error?e.message:a(`routing.loadFailed`),!1)}finally{D(!1)}}},de=(e,t,n)=>{C(r=>{if(!r)return r;let i=r.candidates.map((r,i)=>i===e?t===`provider`?{...r,provider:n,model:m[n]??tx(g,n)[0]?.id??``}:{...r,model:n}:r);return{...r,candidates:i}})},fe=()=>{C(e=>e&&{...e,candidates:[...e.candidates,Bb(ae,oe)]})},pe=e=>{C(t=>t&&{...t,candidates:t.candidates.filter((t,n)=>n!==e)})},me=async()=>{if(!b)return;let t=++J.current;V(!0),L(null),z(``);try{let n={},r=O.trim()?Number(O.trim()):NaN;Number.isFinite(r)&&r>0&&(n.contextWindow=r),A&&(n.toolsRequired=!0),M&&(n.imageInputRequired=!0),P&&(n.structuredOutputRequired=!0);let i=await fetch(`${e}/api/routing-profiles/dry-run`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({profile:b.id,evidence:n})});if(t!==J.current)return;if(!i.ok){let e=await i.json().catch(()=>null);if(t!==J.current)return;z($b(e)??a(`routing.dryRunError`,{status:i.status}));return}let o=await i.json();if(t!==J.current)return;L(o)}catch(e){if(t!==J.current)return;z(e instanceof Error?e.message:String(e))}finally{t===J.current&&V(!1)}},he=S?.candidates.map(e=>tx(g,e.provider))??[];return(0,Q.jsxs)(`div`,{className:`page`,"data-page":`routing`,children:[(0,Q.jsxs)(`div`,{className:`row`,style:{display:`flex`,gap:8,justifyContent:`flex-end`,marginBottom:12},children:[(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:se,children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:`+`}),` `,a(`routing.createProfile`)]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void X(),children:a(`common.retry`)})]}),v?(0,Q.jsxs)($,{tone:`err`,children:[a(`routing.loadFailed`),`: `,v]}):null,w?(0,Q.jsx)($,{tone:w.ok?`ok`:`err`,children:w.message}):null,c.length>0?(0,Q.jsx)(`div`,{className:`panel`,style:{display:`flex`,flexDirection:`column`,gap:12},children:c.map(e=>(0,Q.jsx)(`button`,{type:`button`,className:`model-card`,style:{textAlign:`left`,cursor:`pointer`},onClick:()=>ie(e),"aria-pressed":b?.id===e.id,children:(0,Q.jsxs)(`div`,{className:`card-badges`,children:[(0,Q.jsx)(`strong`,{children:e.id}),(0,Q.jsx)(`span`,{className:`badge badge-muted`,children:e.model}),(0,Q.jsxs)(`span`,{className:`badge badge-muted`,children:[a(`routing.revision`),`: `,e.revision]})]})},e.id))}):null,S?(0,Q.jsxs)(`form`,{className:`panel`,style:{marginTop:14,display:`flex`,flexDirection:`column`,gap:16},onSubmit:e=>{e.preventDefault(),le()},children:[(0,Q.jsxs)(`div`,{className:`page-head`,children:[(0,Q.jsxs)(`h3`,{children:[a(`routing.detail`),`: `,b?.model??(0,Q.jsx)(`code`,{children:`policy/…`})]}),b?(0,Q.jsxs)(`span`,{className:`badge badge-muted`,children:[a(`routing.revision`),`: `,b.revision]}):null]}),(0,Q.jsxs)(`div`,{className:`model-grid`,children:[(0,Q.jsxs)(`label`,{className:`field-label`,children:[(0,Q.jsx)(`code`,{children:`id`}),(0,Q.jsx)(`input`,{className:`input`,required:!0,disabled:b!==null,value:S.id,onChange:e=>C(t=>t&&{...t,id:e.target.value})})]}),(0,Q.jsxs)(`label`,{className:`field-label`,children:[(0,Q.jsx)(`code`,{children:`alias`}),(0,Q.jsx)(`input`,{className:`input`,value:S.alias,onChange:e=>C(t=>t&&{...t,alias:e.target.value})})]})]}),(0,Q.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:a(`routing.candidates`)}),(0,Q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:10},children:[S.candidates.map((e,t)=>{let n=[...new Set([e.provider,...f])].filter(Boolean),r=`routing-model-options-${t}`;return(0,Q.jsxs)(`div`,{className:`model-card`,children:[(0,Q.jsxs)(`div`,{className:`model-grid`,children:[(0,Q.jsxs)(`label`,{className:`field-label`,children:[(0,Q.jsx)(`code`,{children:`provider`}),(0,Q.jsxs)(`select`,{className:`input`,required:!0,value:e.provider,onChange:e=>de(t,`provider`,e.target.value),children:[(0,Q.jsx)(`option`,{value:``,disabled:!0,children:a(`routing.none`)}),n.map(e=>(0,Q.jsx)(`option`,{value:e,children:e},e))]})]}),(0,Q.jsxs)(`label`,{className:`field-label`,children:[(0,Q.jsx)(`code`,{children:`model`}),(0,Q.jsx)(`input`,{className:`input`,required:!0,list:r,value:e.model,onChange:e=>de(t,`model`,e.target.value)}),(0,Q.jsx)(`datalist`,{id:r,children:he[t]?.map(e=>(0,Q.jsx)(`option`,{value:e.id},e.id))})]})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:S.candidates.length===1,onClick:()=>pe(t),"aria-label":a(`routing.removeCandidate`,{provider:e.provider,model:e.model}),children:a(`common.remove`)})]},e.key)}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:fe,children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:`+`}),` `,a(`routing.candidate`)]})]})]}),(0,Q.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:a(`routing.require`)}),(0,Q.jsxs)(`div`,{className:`model-grid`,children:[ox.map(e=>(0,Q.jsxs)(`label`,{className:`field-label`,children:[(0,Q.jsx)(`code`,{children:e}),(0,Q.jsx)(`input`,{className:`input`,type:`number`,min:ax[e].min,max:ax[e].max,step:ax[e].step,value:S.require[e],onChange:t=>C(n=>n&&{...n,require:{...n.require,[e]:t.target.value}})})]},e)),ix.map(e=>(0,Q.jsxs)(`label`,{className:`field-label`,children:[(0,Q.jsx)(`code`,{children:e}),(0,Q.jsx)(`input`,{className:`input`,value:S.require[e],onChange:t=>C(n=>n&&{...n,require:{...n.require,[e]:t.target.value}})})]},e)),rx.map(e=>(0,Q.jsxs)(`label`,{className:`field-label`,children:[(0,Q.jsx)(`code`,{children:e}),(0,Q.jsxs)(`select`,{className:`input`,value:S.require[e],onChange:t=>C(n=>n&&{...n,require:{...n.require,[e]:t.target.value}}),children:[(0,Q.jsx)(`option`,{value:``,children:a(`routing.none`)}),(0,Q.jsx)(`option`,{value:`true`,children:a(`routing.yes`)}),(0,Q.jsx)(`option`,{value:`false`,children:a(`routing.no`)})]})]},e))]})]}),(0,Q.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:a(`routing.optimize`)}),(0,Q.jsx)(`div`,{className:`model-grid`,children:sx.map(e=>(0,Q.jsxs)(`label`,{className:`field-label`,children:[(0,Q.jsx)(`code`,{children:e}),(0,Q.jsx)(`input`,{className:`input`,type:`number`,min:0,step:`any`,required:!0,value:S.optimize[e],onChange:t=>C(n=>n&&{...n,optimize:{...n.optimize,[e]:t.target.value}})})]},e))})]}),(0,Q.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:a(`routing.limits`)}),(0,Q.jsxs)(`label`,{className:`field-label`,children:[(0,Q.jsx)(`code`,{children:`maxEstimatedCostUsd`}),(0,Q.jsx)(`input`,{className:`input`,type:`number`,min:0,step:`any`,value:S.limits.maxEstimatedCostUsd,onChange:e=>C(t=>t&&{...t,limits:{...t.limits,maxEstimatedCostUsd:e.target.value}})})]}),(0,Q.jsxs)(`label`,{className:`field-label`,children:[(0,Q.jsx)(`code`,{children:`onUnknownCost`}),(0,Q.jsx)(`select`,{className:`input`,value:S.limits.onUnknownCost,onChange:e=>C(t=>t&&{...t,limits:{...t.limits,onUnknownCost:e.target.value}}),children:ux.map(e=>(0,Q.jsx)(`option`,{value:e,children:a(`routing.unknownEvidence.${e}`)},e))})]})]}),(0,Q.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:a(`routing.unknownEvidence`)}),(0,Q.jsx)(`div`,{className:`model-grid`,children:cx.map(e=>(0,Q.jsxs)(`label`,{className:`field-label`,children:[(0,Q.jsx)(`code`,{children:e}),(0,Q.jsx)(`select`,{className:`input`,value:S.unknownEvidence[e],onChange:t=>C(n=>n&&{...n,unknownEvidence:{...n.unknownEvidence,[e]:t.target.value}}),children:lx.map(e=>(0,Q.jsx)(`option`,{value:e,children:a(`routing.unknownEvidence.${e}`)},e))})]},e))})]}),(0,Q.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:a(`routing.compatibility.title`)}),(0,Q.jsxs)(`label`,{className:`checkbox`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:S.compatibility.enabled,onChange:e=>C(t=>t&&{...t,compatibility:{...t.compatibility,enabled:e.target.checked}})}),a(`routing.compatibility.enabled`)]}),S.compatibility.enabled?(0,Q.jsxs)(`div`,{className:`model-grid`,style:{marginTop:10},children:[(0,Q.jsxs)(`div`,{className:`field-label`,style:{gridColumn:`1 / -1`},children:[a(`routing.compatibility.requiredSuites`),W?(0,Q.jsx)(`div`,{style:{marginTop:6},children:(0,Q.jsx)($,{tone:`warn`,children:a(`routing.compatibility.catalogUnavailable`)})}):null,H.length>0?(0,Q.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:4,marginTop:6},children:H.map(e=>(0,Q.jsxs)(`label`,{className:`checkbox`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:mx(S.compatibility.requiredSuites,e),onChange:t=>C(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,Q.jsxs)(`span`,{children:[e.suiteId,` `,(0,Q.jsxs)(`span`,{className:`muted`,children:[`(`,a(`routing.compatibility.layer.${e.evidenceLayer}`),`)`]})]})]},e.key))}):null]}),(0,Q.jsxs)(`label`,{className:`field-label`,children:[a(`routing.compatibility.minStatus`),(0,Q.jsxs)(`select`,{className:`input`,value:S.compatibility.minStatus,onChange:e=>C(t=>t&&{...t,compatibility:{...t.compatibility,minStatus:e.target.value}}),children:[(0,Q.jsx)(`option`,{value:``,children:a(`routing.none`)}),(0,Q.jsx)(`option`,{value:`PROBED`,children:a(`lab.verdict.PROBED`)}),(0,Q.jsx)(`option`,{value:`VERIFIED`,children:a(`lab.verdict.VERIFIED`)})]})]}),(0,Q.jsxs)(`label`,{className:`field-label`,children:[o.maxEvidenceAgeMs,(0,Q.jsx)(`input`,{className:`input`,type:`number`,min:0,value:S.compatibility.maxEvidenceAgeMs,onChange:e=>C(t=>t&&{...t,compatibility:{...t.compatibility,maxEvidenceAgeMs:e.target.value}})})]}),(0,Q.jsxs)(`label`,{className:`field-label`,children:[o.unknownEvidence,(0,Q.jsx)(`select`,{className:`input`,value:S.compatibility.unknownEvidence,onChange:e=>C(t=>t&&{...t,compatibility:{...t.compatibility,unknownEvidence:e.target.value}}),children:lx.map(e=>(0,Q.jsx)(`option`,{value:e,children:a(`routing.unknownEvidence.${e}`)},e))})]}),(0,Q.jsxs)(`label`,{className:`field-label`,children:[o.degradedEvidence,(0,Q.jsx)(`select`,{className:`input`,value:S.compatibility.degradedEvidence,onChange:e=>C(t=>t&&{...t,compatibility:{...t.compatibility,degradedEvidence:e.target.value}}),children:lx.map(e=>(0,Q.jsx)(`option`,{value:e,children:a(`routing.unknownEvidence.${e}`)},e))})]})]}):null]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[(0,Q.jsx)(`button`,{type:`submit`,className:`btn btn-primary`,disabled:E,children:a(E?`common.saving`:`common.save`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:E,onClick:ce,children:a(`common.cancel`)}),b?(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:E,onClick:()=>void ue(),children:a(`common.remove`)}):null]})]}):null,b&&(0,Q.jsxs)(`div`,{className:`panel`,style:{marginTop:14,display:`flex`,flexDirection:`column`,gap:10},children:[(0,Q.jsx)(`h3`,{children:a(`routing.dryRun`)}),(0,Q.jsxs)(`label`,{className:`field-label`,htmlFor:`routing-context`,children:[a(`routing.dryRunContext`),(0,Q.jsx)(`input`,{id:`routing-context`,className:`input`,type:`number`,min:1,value:O,onChange:e=>{k(e.target.value),re()}})]}),(0,Q.jsxs)(`label`,{className:`checkbox`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:A,onChange:e=>{j(e.target.checked),re()}}),a(`routing.dryRunTools`)]}),(0,Q.jsxs)(`label`,{className:`checkbox`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:M,onChange:e=>{N(e.target.checked),re()}}),a(`routing.dryRunImage`)]}),(0,Q.jsxs)(`label`,{className:`checkbox`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:P,onChange:e=>{F(e.target.checked),re()}}),a(`routing.dryRunStructured`)]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:!b||B,onClick:()=>void me(),children:a(`routing.dryRunRun`)}),R?(0,Q.jsx)($,{tone:`err`,children:R}):null,I?(0,Q.jsxs)(`table`,{className:`tbl`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:a(`routing.candidate`)}),(0,Q.jsx)(`th`,{children:a(`routing.eligible`)}),(0,Q.jsx)(`th`,{children:a(`routing.exclusions`)}),(0,Q.jsx)(`th`,{children:a(`routing.costCap`)}),(0,Q.jsx)(`th`,{children:a(`routing.score`)})]})}),(0,Q.jsx)(`tbody`,{children:I.candidates.map((e,t)=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsxs)(`td`,{children:[e.provider,`/`,e.model,t===I.selectedIndex?` ✓ (${a(`routing.selected`)})`:``]}),(0,Q.jsx)(`td`,{children:e.eligible?a(`routing.yes`):a(`routing.no`)}),(0,Q.jsx)(`td`,{children:e.exclusions.map(e=>vx(e.code,a)).join(`, `)||a(`routing.none`)}),(0,Q.jsx)(`td`,{children:_x(e.cost?.capOutcome,a,s)}),(0,Q.jsx)(`td`,{children:e.score?e.score.total.toFixed(3):s})]},`${e.provider}/${e.model}`))})]}):null]}),c.length>0&&(0,Q.jsxs)(`div`,{className:`panel`,style:{marginTop:14,display:`flex`,flexDirection:`column`,gap:10},children:[(0,Q.jsx)(`h3`,{children:a(`routing.analytics`)}),u?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`card-badges`,children:[(0,Q.jsxs)(`span`,{className:`badge badge-muted`,children:[a(`routing.analyticsTotal`),`: `,u.totalRequests]}),(0,Q.jsxs)(`span`,{className:`badge badge-muted`,children:[a(`routing.analyticsSuccessRate`),`: `,gx(u.successRate,s)]}),(0,Q.jsxs)(`span`,{className:`badge badge-muted`,children:[a(`routing.analyticsFallbackRate`),`: `,gx(u.fallbackRate,s)]}),(0,Q.jsxs)(`span`,{className:`badge badge-muted`,children:[a(`routing.analyticsP50`),`: `,hx(u.durationMs.p50,s)]}),(0,Q.jsxs)(`span`,{className:`badge badge-muted`,children:[a(`routing.analyticsP95`),`: `,hx(u.durationMs.p95,s)]}),(0,Q.jsxs)(`span`,{className:`badge badge-muted`,children:[a(`routing.analyticsP99`),`: `,hx(u.durationMs.p99,s)]}),(0,Q.jsxs)(`span`,{className:`badge badge-muted`,children:[a(`routing.analyticsCooldown`),`: `,u.cooldownTriggeringFailures]}),(0,Q.jsxs)(`span`,{className:`badge badge-muted`,children:[a(`routing.analyticsConfidence`),`: `,u.confidence??s]}),u.historyTruncated?(0,Q.jsx)(`span`,{className:`badge badge-muted`,children:a(`routing.analyticsTruncated`)}):null]}),(0,Q.jsxs)(`table`,{className:`tbl`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:a(`routing.candidate`)}),(0,Q.jsx)(`th`,{children:a(`routing.analyticsRequests`)}),(0,Q.jsx)(`th`,{children:a(`routing.analyticsSuccessRate`)}),(0,Q.jsx)(`th`,{children:a(`routing.analyticsP50`)})]})}),(0,Q.jsx)(`tbody`,{children:u.breakdown.map(e=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsxs)(`td`,{children:[e.provider,`/`,e.model]}),(0,Q.jsx)(`td`,{children:e.requests}),(0,Q.jsx)(`td`,{children:gx(e.successRate,s)}),(0,Q.jsx)(`td`,{children:hx(e.p50DurationMs,s)})]},`${e.provider}/${e.model}`))})]})]}):(0,Q.jsx)(`p`,{className:`muted`,children:a(`routing.analyticsEmpty`)})]})]})}var Cx=[`protocol_conformance`,`live_route_compatibility`,`task_effectiveness`],wx=[`UNKNOWN`,`CLAIMED`,`PROBED`,`VERIFIED`,`DEGRADED`,`BLOCKED`,`UNSUPPORTED`],Tx=[`present`,`corrupt`,`purged_unavailable`];function Ex(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Dx(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}function Ox(e){return e===null||typeof e==`string`}function kx(e){return e===void 0||typeof e==`number`&&Number.isFinite(e)}function Ax(e){if(!Ex(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(!kx(e[t]))return null;return e.projectionSpecVersion!==void 0&&typeof e.projectionSpecVersion!=`string`?null:e}function jx(e){return!Ex(e)||typeof e.projectionKey!=`string`||e.projectionKey.length===0||typeof e.subjectId!=`string`||e.subjectId.length===0||typeof e.evidenceLayer!=`string`||!Cx.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`||!wx.includes(e.verdict)||typeof e.asOf!=`number`||!Number.isFinite(e.asOf)||!Dx(e.scenarioManifestDigests)||!Ox(e.claimSourceDigest)||!Dx(e.contributingEventIds)||!Dx(e.contradictingEventIds)||!Dx(e.notes)?null:e}function Mx(e){return!Ex(e)||!Array.isArray(e.verdicts)?{verdicts:[],hasMore:!1}:{verdicts:e.verdicts.map(jx).filter(e=>e!==null),hasMore:e.hasMore===!0,nextCursor:typeof e.nextCursor==`string`?e.nextCursor:void 0}}function Nx(e){return!Ex(e)||!Array.isArray(e.subjects)?{subjects:[],hasMore:!1}:{subjects:e.subjects.filter(e=>Ex(e)&&typeof e.subjectId==`string`&&typeof e.subjectKind==`string`),hasMore:e.hasMore===!0,nextCursor:typeof e.nextCursor==`string`?e.nextCursor:void 0}}function Px(e){return!Ex(e)||!Ex(e.subject)||typeof e.subject.subjectKind!=`string`?null:e.subject}function Fx(e){return!Ex(e)||typeof e.eventId!=`string`||typeof e.subjectId!=`string`||typeof e.evidenceLayer!=`string`||!Cx.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`||!Ox(e.exclusionReason)?null:e}function Ix(e){return!Ex(e)||!Array.isArray(e.observations)?{observations:[],hasMore:!1}:{observations:e.observations.map(Fx).filter(e=>e!==null),hasMore:e.hasMore===!0,nextCursor:typeof e.nextCursor==`string`?e.nextCursor:void 0}}function Lx(e){if(!Ex(e)||!Ex(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`||!Ox(t.exclusionReason)?null:t}function Rx(e){if(!Ex(e)||!Ex(e.artifact))return null;let t=e.artifact;return typeof t.digest!=`string`||typeof t.status!=`string`||!Tx.includes(t.status)||!Ox(t.artifactClass)||!Ox(t.mediaType)||t.byteCount!==null&&(typeof t.byteCount!=`number`||!Number.isFinite(t.byteCount))||!Ox(t.lastError)?null:t}function zx(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 Bx(){return{protocol_conformance:[],live_route_compatibility:[],task_effectiveness:[]}}function Vx(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:Bx()},r.set(t.subjectId,e)),e.byLayer[t.evidenceLayer].push(t)}return[...r.values()].sort((e,t)=>e.subjectId.localeCompare(t.subjectId))}function Hx(e){return e.length<=16?e:`${e.slice(0,8)}.${e.slice(-6)}`}function Ux(e,t){return!Number.isFinite(e)||e<=0?`-`:new Date(e).toLocaleString(t)}function Wx(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]}function Gx(e){if(!e)return{};let t=typeof e.inboundProtocol==`string`?xm(e.inboundProtocol):void 0,n=typeof e.upstreamProtocol==`string`?xm(e.upstreamProtocol):void 0;return{...t?{inbound:t}:{},...n?{upstream:n}:{}}}function Kx(e){return e.inbound!==``||e.upstream!==``}function qx(e,t){return!Kx(t)||!(!e||t.inbound&&e.inbound!==t.inbound||t.upstream&&e.upstream!==t.upstream)}function Jx(e,t,n){return Kx(n)?e.filter(e=>qx(t.get(e.subjectId),n)):e}function Yx(e,t){return Kx(e)?t.some(e=>Cx.some(t=>e.byLayer[t].length>0))?`evidence`:`unverified`:`any`}function Xx(){let e=O();return t=>t?oh(t,e):e(`compatProtocol.anyProtocol`)}function Zx({value:e,onChange:t}){let n=O(),r=Xx(),i=[{value:``,label:n(`lab.filter.all`)},...rm.map(e=>({value:e,label:r(e)}))];return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`lab-filter-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`lab-filter-inbound`,children:n(`compatProtocol.filter.inbound`)}),(0,Q.jsx)(cn,{id:`lab-filter-inbound`,value:e.inbound,options:i,onChange:n=>t({...e,inbound:n}),label:n(`compatProtocol.filter.inbound`),portal:!1})]}),(0,Q.jsxs)(`div`,{className:`lab-filter-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`lab-filter-upstream`,children:n(`compatProtocol.filter.upstream`)}),(0,Q.jsx)(cn,{id:`lab-filter-upstream`,value:e.upstream,options:i,onChange:n=>t({...e,upstream:n}),label:n(`compatProtocol.filter.upstream`),portal:!1})]})]})}function Qx({filter:e,evidence:t,resolution:n}){let r=O(),i=Xx();if(!Kx(e))return null;let a=r(`compatProtocol.pair`,{inbound:i(e.inbound),upstream:i(e.upstream)});return(0,Q.jsxs)(`div`,{className:`lab-protocol-status`,"data-pair-evidence":n.loading?`loading`:t,children:[n.loading?(0,Q.jsx)(`p`,{className:`muted small`,role:`status`,children:r(`compatProtocol.loading`)}):t===`unverified`?(0,Q.jsx)(`p`,{className:`lab-protocol-unverified`,role:`status`,children:r(`compatProtocol.unverified`,{pair:a})}):null,n.unresolved>0&&!n.loading&&(0,Q.jsx)(`p`,{className:`muted small`,children:r(`compatProtocol.unresolved`,{count:n.unresolved})}),(0,Q.jsx)(`p`,{className:`muted small`,children:r(`compatProtocol.axisNote`)})]})}var $x=50,eS=200,tS=6,nS=200;async function rS(e,t,n){return hn(await fetch(`${e}${t}`,{signal:n}))}function iS(e,t){let n=new URLSearchParams({limit:String($x)});for(let[t,r]of Object.entries(e))r&&n.set(t,r);return t&&n.set(`cursor`,t),n.toString()}var aS=class extends Error{};function oS(){return new aS}function sS(e,t,n){if(e.hasMore!==void 0&&typeof e.hasMore!=`boolean`||e.nextCursor!==void 0&&typeof e.nextCursor!=`string`||t&&!n)throw oS()}function cS(e){if(!Ex(e)||!Array.isArray(e.verdicts))throw oS();let t=Mx(e);if(t.verdicts.length!==e.verdicts.length)throw oS();return sS(e,t.hasMore,t.nextCursor),t}function lS(e){if(!Ex(e)||!Array.isArray(e.subjects))throw oS();let t=Nx(e);if(t.subjects.length!==e.subjects.length)throw oS();return sS(e,t.hasMore,t.nextCursor),t}function uS(e){if(!Ex(e)||!Array.isArray(e.observations))throw oS();let t=Ix(e);if(t.observations.length!==e.observations.length)throw oS();return sS(e,t.hasMore,t.nextCursor),t}async function dS(e,t){let n=Ax(await rS(e,`/api/lab/status`,t));if(!n)throw oS();return n}async function fS(e,t,n,r){return cS(await rS(e,`/api/lab/verdicts?${iS({layer:t.layer,verdict:t.verdict,subjectId:t.subjectId,suiteId:t.suiteId},n)}`,r))}async function pS(e,t,n){return lS(await rS(e,`/api/lab/subjects?${iS({},t)}`,n))}async function mS(e){let t=[],n=new Set,r;for(let i=0;i<eS;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 aS;n.add(a),r=a}return{rows:t,truncated:!0}}async function hS(e,t){return mS(async n=>{let r=await pS(e,n,t);return{rows:r.subjects,hasMore:r.hasMore,nextCursor:r.nextCursor}})}async function gS(e,t,n){let r=Px(await rS(e,`/api/lab/subjects/${encodeURIComponent(t)}`,n));if(!r)throw oS();return r}async function _S(e,t,n,r){return uS(await rS(e,`/api/lab/observations?${iS({subjectId:t.subjectId,layer:t.layer,suiteId:t.suiteId},n)}`,r))}async function vS(e,t,n){return mS(async r=>{let i=await _S(e,t,r,n);return{rows:i.observations,hasMore:i.hasMore,nextCursor:i.nextCursor}})}async function yS(e,t,n){let r=Lx(await rS(e,`/api/lab/events/${encodeURIComponent(t)}`,n));if(!r)throw oS();return r}async function bS(e,t,n){let r=Rx(await rS(e,`/api/lab/artifacts/${encodeURIComponent(t)}`,n));if(!r)throw oS();return r}function xS(e){if(!Ex(e)||e.verificationStatus!==`not_verification`||!Ex(e.summary))throw oS();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 oS();return{verificationStatus:`not_verification`,summary:t}}async function SS(e,t,n){return xS(await rS(e,`/api/lab/production-signals?${iS({subjectId:t})}`,n))}function CS(e,t){let n=new Set(t);return Object.keys(e).every(e=>n.has(e))}function wS(e){return typeof e==`string`&&/^[0-9a-f]{64}$/.test(e)}function TS(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function ES(e){if(!Ex(e)||!CS(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(!Ex(n)||!CS(n,[`trustClass`,`status`,`bundleId`,`publisherKeyId`,`activeRecordCount`,`revokedRecordCount`])||n.trustClass!==`community_untrusted_v1`||n.status!==`cryptographically_valid`||!wS(n.bundleId)||!wS(n.publisherKeyId)||!TS(n.activeRecordCount)||!TS(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 DS(e,t){let n=ES(await rS(e,`/api/lab/public/community`,t));if(!n)throw oS();return n}async function OS(e,t,n){let[r,i]=await Promise.all([dS(e,n),DS(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([fS(e,t,void 0,n),hS(e,n)]);return{status:r,verdicts:a.verdicts,subjects:o.rows,subjectsTruncated:o.truncated,hasMore:a.hasMore,nextCursor:a.nextCursor,community:i}}async function kS(e,t,n,r){return fS(e,t,n,r)}async function AS(e,t,n,r){let i=e.slice(0,nS),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 jS(e,t,n){let r=[...new Set([...t.contributingEventIds,...t.contradictingEventIds])],i=Wx(t),a={subjectId:t.subjectId,layer:t.evidenceLayer,suiteId:t.suiteId},[o,s,c,l,u]=await Promise.all([gS(e,t.subjectId,n),vS(e,a,n),AS(r,tS,n,t=>yS(e,t,n)),AS(i,tS,n,t=>bS(e,t,n)),SS(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 MS=6,NS=2e3,PS=`
7
- `,FS=new Map;function IS(e,t){return JSON.stringify([e,t])}function LS(e,t){for(FS.set(e,t);FS.size>NS;){let e=FS.keys().next().value;if(e===void 0)break;FS.delete(e)}}var RS={pairs:new Map,loading:!1,unresolved:0};function zS(e,t,n){let[,r]=(0,Z.useState)(0),i=n?t.slice(0,200):[],a=i.filter(t=>!FS.has(IS(e,t))).join(PS);if((0,Z.useEffect)(()=>{if(!a)return;let t=new AbortController,n=a.split(PS);return Promise.all(Array.from({length:Math.min(MS,n.length)},async()=>{for(let r=n.shift();r!==void 0;r=n.shift())try{let n=await gS(e,r,t.signal);LS(IS(e,r),Gx(n))}catch{if(t.signal.aborted)return;LS(IS(e,r),null)}})).then(()=>{t.signal.aborted||r(e=>e+1)}),()=>t.abort()},[e,a]),!n)return RS;let o=new Map,s=Math.max(0,t.length-200);for(let t of i){let n=FS.get(IS(e,t));n?o.set(t,n):n===null&&(s+=1)}return{pairs:o,loading:a.length>0,unresolved:s}}var BS={protocol_conformance:`lab.layer.protocol_conformance`,live_route_compatibility:`lab.layer.live_route_compatibility`,task_effectiveness:`lab.layer.task_effectiveness`},VS={protocol_conformance:`lab.col.protocol`,live_route_compatibility:`lab.col.live`,task_effectiveness:`lab.col.task`},HS={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`},US={present:`artifact.present`,corrupt:`artifact.corrupt`,purged_unavailable:`artifact.purged_unavailable`};function WS(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 GS({verdict:e,caption:t,label:n,selected:r,onSelect:i}){let a=`lab-verdict-badge${r?` lab-verdict-badge--selected`:``}`;return i?(0,Q.jsxs)(`button`,{type:`button`,className:a,"data-verdict":e,title:t,onClick:i,children:[(0,Q.jsx)(`span`,{children:n}),(0,Q.jsx)(`span`,{className:`suite`,children:t})]}):(0,Q.jsxs)(`span`,{className:a,"data-verdict":e,title:t,children:[(0,Q.jsx)(`span`,{children:n}),(0,Q.jsx)(`span`,{className:`suite`,children:t})]})}function KS({rows:e,t,selectedKey:n,onSelect:r}){return e.length===0?(0,Q.jsx)(`span`,{className:`muted`,children:`-`}):(0,Q.jsx)(`div`,{className:`lab-verdict-stack`,children:e.map(e=>(0,Q.jsx)(GS,{verdict:e.verdict,caption:e.suiteId,label:t(HS[e.verdict]),selected:n===e.projectionKey,onSelect:()=>r(e)},e.projectionKey))})}function qS({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:Ux(r.builtAtMs,n)}),(0,Q.jsx)(`div`,{className:`lab-status-grid`,"aria-label":t(`lab.statusTitle`),children:i.map(e=>(0,Q.jsxs)(`div`,{className:`lab-status-card`,children:[(0,Q.jsx)(`span`,{className:`label`,children:e.label}),(0,Q.jsx)(`span`,{className:`value`,children:e.value})]},e.label))})}function JS({community:e,locale:t}){if(!e||e.evidence.length===0)return null;let n=e.evidence.reduce((e,t)=>e+t.activeRecordCount,0),r=e.evidence.reduce((e,t)=>e+t.revokedRecordCount,0);return(0,Q.jsxs)(`section`,{className:`lab-matrix-block`,"data-testid":`lab-community-evidence`,children:[(0,Q.jsx)(`h3`,{className:`lab-matrix-title`,children:i(t,`community.title`)}),(0,Q.jsx)(`p`,{className:`muted`,children:i(t,`community.notLocalVerdict`)}),(0,Q.jsxs)(`dl`,{className:`lab-detail-meta`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:i(t,`community.bundles`)}),(0,Q.jsx)(`dd`,{children:e.evidence.length})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:i(t,`community.activeRecords`)}),(0,Q.jsx)(`dd`,{children:n})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:i(t,`community.revokedRecords`)}),(0,Q.jsx)(`dd`,{children:r})]})]})]})}function YS({verdict:e,detail:t,loading:n,error:r,t:a,locale:o,onClose:s}){let c=new Set([...e.contributingEventIds,...e.contradictingEventIds]).size;return(0,Q.jsxs)(`aside`,{className:`lab-detail-pane`,"aria-label":a(`lab.detailTitle`),children:[(0,Q.jsxs)(`div`,{className:`lab-detail-head`,children:[(0,Q.jsx)(`h3`,{children:Hx(e.subjectId)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:s,children:a(`lab.detailClose`)})]}),(0,Q.jsxs)(`dl`,{className:`lab-detail-meta`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:a(`lab.col.layer`)}),(0,Q.jsx)(`dd`,{children:a(BS[e.evidenceLayer])})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:a(`lab.col.suite`)}),(0,Q.jsx)(`dd`,{className:`mono`,children:e.suiteId})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:a(`lab.col.verdict`)}),(0,Q.jsx)(`dd`,{children:a(HS[e.verdict])})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:a(`lab.col.asOf`)}),(0,Q.jsx)(`dd`,{children:Ux(e.asOf,o)})]})]}),n&&(0,Q.jsx)(zy,{busy:!0,children:a(`common.loading`)}),r&&(0,Q.jsx)($,{tone:`err`,children:r}),t&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`section`,{className:`lab-detail-section`,children:[(0,Q.jsx)(`h4`,{children:a(`lab.detailSubject`)}),(0,Q.jsx)(`p`,{className:`mono`,children:t.subject.subjectKind})]}),t.production&&(0,Q.jsxs)(`section`,{className:`lab-detail-section`,"data-testid":`lab-production-signals`,children:[(0,Q.jsx)(`h4`,{children:a(`lab.production.title`)}),(0,Q.jsx)(`p`,{className:`muted`,children:a(`lab.production.notVerification`)}),(0,Q.jsxs)(`dl`,{className:`lab-detail-meta`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:a(`lab.production.attempts`)}),(0,Q.jsx)(`dd`,{children:t.production.summary.recentProductionAttempts})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:a(`lab.production.successes`)}),(0,Q.jsx)(`dd`,{children:t.production.summary.recentSuccessfulAttempts})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:a(`lab.production.routeErrors`)}),(0,Q.jsx)(`dd`,{children:t.production.summary.recentRouteErrorSignals})]}),t.production.summary.lastObservedProductionAttempt!==void 0&&(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:a(`lab.production.lastObserved`)}),(0,Q.jsx)(`dd`,{children:Ux(t.production.summary.lastObservedProductionAttempt,o)})]})]})]}),t.observations.length>0&&(0,Q.jsxs)(`section`,{className:`lab-detail-section`,children:[(0,Q.jsx)(`h4`,{children:a(`lab.detailObservations`)}),(0,Q.jsx)(`ul`,{className:`lab-detail-list`,children:t.observations.map(e=>(0,Q.jsxs)(`li`,{children:[(0,Q.jsx)(`span`,{className:`mono`,children:e.scenarioId}),(0,Q.jsx)(`span`,{children:e.outcome}),(0,Q.jsx)(`span`,{className:`muted`,children:Ux(e.completedAt,o)})]},e.eventId))})]}),(t.events.length>0||c>0)&&(0,Q.jsxs)(`section`,{className:`lab-detail-section`,children:[(0,Q.jsxs)(`h4`,{children:[a(`lab.detailEvents`),t.events.length<c?` (${t.events.length}/${c})`:``]}),(0,Q.jsx)(`ul`,{className:`lab-detail-list`,children:t.events.map(e=>(0,Q.jsxs)(`li`,{children:[(0,Q.jsx)(`span`,{className:`mono`,children:e.eventId}),(0,Q.jsx)(`span`,{children:e.eventKind})]},e.eventId))})]}),t.artifacts.length>0&&(0,Q.jsxs)(`section`,{className:`lab-detail-section`,children:[(0,Q.jsx)(`h4`,{children:a(`lab.detailArtifacts`)}),(0,Q.jsx)(`ul`,{className:`lab-detail-list`,children:t.artifacts.map(e=>(0,Q.jsxs)(`li`,{children:[(0,Q.jsx)(`span`,{className:`mono`,title:e.digest,children:Hx(e.digest)}),(0,Q.jsx)(`span`,{children:e.artifactClass??`-`}),(0,Q.jsx)(`span`,{children:i(o,US[e.status])})]},e.digest))})]})]})]})}function XS({apiBase:e,active:n=!0,onCountChange:r}){let{t:a,locale:o}=t(),[s,c]=(0,Z.useState)({layer:``,verdict:``,subjectQuery:``,suiteId:``}),[l,u]=(0,Z.useState)(()=>Vg()??Lg),[d,f]=(0,Z.useState)(null),[p,m]=(0,Z.useState)(null),[h,g]=(0,Z.useState)(!1),[_,v]=(0,Z.useState)(null),[y,b]=(0,Z.useState)(null),[x,S]=(0,Z.useState)(!1),[C,w]=(0,Z.useState)(null),T=(0,Z.useRef)(null),E=(0,Z.useRef)(null),D=(0,Z.useRef)(null),O=(0,Z.useMemo)(()=>zx(s),[s]),k=JSON.stringify(O),A=(0,Z.useCallback)(t=>OS(e,O,t),[e,O]),j=Ya(`lab-matrix:${e}:${k}`,[e,k],A,{isEmpty:e=>e.verdicts.length===0,pollMs:6e4,enabled:n,pauseWhenHidden:!0}),M=(0,Z.useCallback)(()=>{T.current?.abort(),T.current=null,f(null),m(null),g(!1)},[]),N=(0,Z.useCallback)(()=>{D.current=null,E.current?.abort(),E.current=null,v(null),b(null),w(null),S(!1)},[]);(0,Z.useEffect)(()=>{T.current?.abort()},[j.data]),(0,Z.useEffect)(()=>()=>{T.current?.abort(),E.current?.abort()},[]);let P=(0,Z.useCallback)(e=>{N(),M(),c(e)},[N,M]),F=(0,Z.useCallback)(e=>{N(),u(e),n&&Kt(zg(e))},[n,N]);(0,Z.useEffect)(()=>{let e=()=>{let e=Vg();e&&u(t=>t.inbound===e.inbound&&t.upstream===e.upstream?t:e)};return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[]);let I=d!==null&&d.baseData===j.data&&d.queryKey===k?d:null,L=p!==null&&p.baseData===j.data&&p.queryKey===k?p.message:null,R=(0,Z.useMemo)(()=>{if(!n||!j.data?.status.projectionAvailable)return null;let e=j.data.status.verdictCount;return typeof e==`number`?e:j.data.verdicts.length+(I?.verdicts.length??0)},[n,j.data,I]);(0,Z.useEffect)(()=>{r?.(R)},[r,R]);let z=(0,Z.useMemo)(()=>j.data?[...j.data.verdicts,...I?.verdicts??[]]:[],[j.data,I]),B=(0,Z.useMemo)(()=>j.data?Vx(z,j.data.subjects):[],[z,j.data]),V=Kx(l),H=zS(e,(0,Z.useMemo)(()=>B.map(e=>e.subjectId),[B]),n&&V),U=(0,Z.useMemo)(()=>Jx(B,H.pairs,l),[l,H.pairs,B]),W=(0,Z.useMemo)(()=>{if(!V)return z;let e=new Set(U.map(e=>e.subjectId));return z.filter(t=>e.has(t.subjectId))},[z,U,V]),G=Yx(l,U),ee=(0,Z.useCallback)(async()=>{let t=I?.nextCursor??j.data?.nextCursor,n=j.data;if(!t||!n||h)return;T.current?.abort();let r=new AbortController;T.current=r;let i=k;m(null),g(!0);try{let a=await kS(e,O,t,r.signal);if(r.signal.aborted)return;f(e=>{let t=e?.baseData===n&&e.queryKey===i?e.verdicts:[];return{baseData:n,queryKey:i,verdicts:[...t,...a.verdicts],nextCursor:a.nextCursor,hasMore:a.hasMore}})}catch(e){r.signal.aborted||m({baseData:n,queryKey:i,message:WS(e,a(`lab.loadFailed`))})}finally{T.current===r&&(T.current=null,g(!1))}},[e,h,O,k,j.data,a,I]),te=(0,Z.useCallback)(async t=>{if(!n)return;E.current?.abort();let r=new AbortController;E.current=r,D.current=t.projectionKey,v(t),b(null),w(null),S(!0);try{let n=await jS(e,t,r.signal);!r.signal.aborted&&D.current===t.projectionKey&&b(n)}catch(e){!r.signal.aborted&&D.current===t.projectionKey&&w(WS(e,a(`lab.detailLoadFailed`)))}finally{E.current===r&&(E.current=null,!r.signal.aborted&&D.current===t.projectionKey&&S(!1))}},[n,e,a]),K=j.refresh,q=(0,Z.useCallback)(()=>{N(),M(),K({forceLoading:!0})},[N,K,M]),ne=n?_:null,J=I?I.hasMore:j.data?.hasMore??!1,Y=[{value:``,label:a(`lab.filter.all`)},...Cx.map(e=>({value:e,label:a(BS[e])}))],ie=[{value:``,label:a(`lab.filter.all`)},...wx.map(e=>({value:e,label:a(HS[e])}))],X=[{value:``,label:a(`lab.filter.all`)},...(j.data?.subjects??[]).map(e=>({value:e.subjectId,label:`${Hx(e.subjectId)} · ${e.subjectKind}`}))];if(j.state.showSkeleton)return(0,Q.jsx)(Ry,{label:a(`lab.loading`),rows:5});let ae=j.state.showError?WS(j.error,a(`lab.loadFailed`)):null,oe=j.data?.status,se=oe&&!oe.projectionAvailable,ce=oe?.projectionIncompatible===!0;return(0,Q.jsxs)(`div`,{className:`lab-page`,children:[(0,Q.jsx)(`div`,{className:`lab-toolbar`,children:(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:q,disabled:j.refreshing,children:[(0,Q.jsx)(re,{}),a(`lab.refresh`)]})}),j.refreshing&&!j.state.showSkeleton&&(0,Q.jsx)(zy,{busy:!0,live:!ae,children:a(`common.loading`)}),ae&&(0,Q.jsx)($,{tone:`err`,children:ae}),ce&&(0,Q.jsx)($,{tone:`err`,children:a(`lab.projectionIncompatible`)}),se&&!ce&&(0,Q.jsx)(ln,{title:a(`lab.projectionUnavailable`)}),se&&!ce&&(0,Q.jsx)(Qx,{filter:l,evidence:`unverified`,resolution:{loading:!1,unresolved:0}}),j.data&&(0,Q.jsx)(JS,{community:j.data.community,locale:o}),j.data&&oe?.projectionAvailable&&!ce&&(0,Q.jsxs)(`div`,{className:`lab-layout`,children:[(0,Q.jsxs)(`div`,{className:`lab-main`,children:[(0,Q.jsx)(qS,{data:j.data,t:a,locale:o}),(0,Q.jsxs)(`div`,{className:`lab-filters`,children:[(0,Q.jsxs)(`div`,{className:`lab-filter-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`lab-filter-layer`,children:a(`lab.filter.layer`)}),(0,Q.jsx)(cn,{id:`lab-filter-layer`,value:s.layer,options:Y,onChange:e=>P(t=>({...t,layer:e})),label:a(`lab.filter.layer`),portal:!1})]}),(0,Q.jsxs)(`div`,{className:`lab-filter-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`lab-filter-verdict`,children:a(`lab.filter.verdict`)}),(0,Q.jsx)(cn,{id:`lab-filter-verdict`,value:s.verdict,options:ie,onChange:e=>P(t=>({...t,verdict:e})),label:a(`lab.filter.verdict`),portal:!1})]}),(0,Q.jsxs)(`div`,{className:`lab-filter-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`lab-filter-subject`,children:a(`lab.filter.subject`)}),(0,Q.jsx)(cn,{id:`lab-filter-subject`,value:s.subjectQuery,options:X,onChange:e=>P(t=>({...t,subjectQuery:e})),label:a(`lab.filter.subject`),portal:!1})]}),(0,Q.jsx)(Zx,{value:l,onChange:F})]}),(0,Q.jsx)(Qx,{filter:l,evidence:G,resolution:H}),U.length===0?(0,Q.jsx)(ln,{title:a(`lab.empty`)}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`lab-matrix-block`,children:[(0,Q.jsx)(`h3`,{className:`lab-matrix-title`,children:a(`lab.matrixTitle`)}),(0,Q.jsx)(`div`,{className:`lab-matrix-scroll`,children:(0,Q.jsxs)(`table`,{className:`lab-matrix`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:a(`lab.col.subject`)}),(0,Q.jsx)(`th`,{children:a(`lab.subjectKind`)}),Cx.map(e=>(0,Q.jsx)(`th`,{children:a(VS[e])},e))]})}),(0,Q.jsx)(`tbody`,{children:U.map(e=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{className:`subject`,title:e.subjectId,children:Hx(e.subjectId)}),(0,Q.jsx)(`td`,{className:`kind`,children:e.subjectKind||i(o,`subjectKindUnknown`)}),Cx.map(t=>(0,Q.jsx)(`td`,{children:(0,Q.jsx)(KS,{rows:e.byLayer[t],t:a,selectedKey:ne?.projectionKey??null,onSelect:e=>{te(e)}})},t))]},e.subjectId))})]})})]}),(0,Q.jsxs)(`div`,{className:`lab-matrix-block`,children:[(0,Q.jsx)(`h3`,{className:`lab-matrix-title`,children:a(`lab.verdictsTitle`)}),(0,Q.jsx)(`div`,{className:`lab-matrix-scroll`,children:(0,Q.jsxs)(`table`,{className:`lab-detail-table`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:a(`lab.col.subject`)}),(0,Q.jsx)(`th`,{children:a(`lab.col.layer`)}),(0,Q.jsx)(`th`,{children:a(`lab.col.suite`)}),(0,Q.jsx)(`th`,{children:a(`lab.col.verdict`)}),(0,Q.jsx)(`th`,{children:a(`lab.col.asOf`)})]})}),(0,Q.jsx)(`tbody`,{children:W.map(e=>{let t=ne?.projectionKey===e.projectionKey;return(0,Q.jsxs)(`tr`,{className:t?`selected`:``,children:[(0,Q.jsx)(`td`,{className:`mono`,title:e.subjectId,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"data-verdict-detail":e.projectionKey,"aria-pressed":t,"aria-label":i(o,`selectVerdict`,{subject:Hx(e.subjectId)}),onClick:()=>{te(e)},children:Hx(e.subjectId)})}),(0,Q.jsx)(`td`,{children:a(BS[e.evidenceLayer])}),(0,Q.jsx)(`td`,{className:`mono`,children:e.suiteId}),(0,Q.jsx)(`td`,{children:(0,Q.jsx)(GS,{verdict:e.verdict,caption:e.suiteId,label:a(HS[e.verdict])})}),(0,Q.jsx)(`td`,{children:Ux(e.asOf,o)})]},e.projectionKey)})})]})})]}),L&&(0,Q.jsx)($,{tone:`err`,children:L}),J&&(0,Q.jsx)(`div`,{className:`lab-load-more`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:h,onClick:()=>{ee()},children:a(h?`common.loading`:`lab.loadMore`)})})]})]}),ne&&(0,Q.jsx)(YS,{verdict:ne,detail:y,loading:x,error:C,t:a,locale:o,onClose:N})]})]})}var ZS=[`catalog`,`combos`,`routing`,`compatibility`];function QS(e){return e===`catalog`?`models`:`models/${e}`}function $S(e=window.location.hash){let t=Gt(Wt(e)).path;return t===`models/combos`||t===`models/combos/jev-auto`||t===`combos`||t.startsWith(`combos/`)?`combos`:t===`models/routing`||t===`routing`||t.startsWith(`routing/`)?`routing`:t===`models/compatibility`||t===`lab`||t.startsWith(`lab/`)?`compatibility`:`catalog`}function eC(e){qt(QS(e))}function tC(e){return`models-tab-${e}`}function nC(e){return`models-panel-${e}`}var rC={catalog:`models.tab.catalog`,combos:`models.tab.combos`,routing:`models.tab.routing`,compatibility:`models.tab.compatibility`};function iC({tab:e,onSelect:t,meta:n}){let r=O(),i=(0,Z.useRef)(null);i.current===null&&(i.current=new Map);let a=e=>{t(e),window.requestAnimationFrame(()=>{i.current.get(e)?.focus({preventScroll:!0})})},o=t=>{let n=ZS.indexOf(e),r=null;t.key===`ArrowLeft`?r=(n-1+ZS.length)%ZS.length:t.key===`ArrowRight`?r=(n+1)%ZS.length:t.key===`Home`?r=0:t.key===`End`&&(r=ZS.length-1),r!==null&&(t.preventDefault(),a(ZS[r]))};return(0,Q.jsx)(`div`,{className:`page-tabs`,role:`tablist`,"aria-label":r(`models.tabsLabel`),children:ZS.map(t=>{let s=t===e,c=n?.[t];return(0,Q.jsxs)(`button`,{ref:e=>{e?i.current.set(t,e):i.current.delete(t)},type:`button`,role:`tab`,id:tC(t),"aria-selected":s,"aria-controls":nC(t),tabIndex:s?0:-1,className:`page-tab${s?` page-tab--active`:``}`,onClick:()=>a(t),onKeyDown:o,children:[r(rC[t]),c?(0,Q.jsx)(`span`,{className:`section-tab-meta`,children:c}):null]},t)})})}function aC({summary:e,apiBase:t,onSaved:n}){let r=O(),[i,a]=(0,Z.useState)(!1),[o,s]=(0,Z.useState)(null),c=e?.fastOptIn?.enabled;if(o&&c!==o.from&&s(null),!e?.fastOptIn)return null;let l=e.fastOptIn.enabled,u=o&&o.from===l?o.value:l,d=async o=>{if(!(i||o===u)){a(!0);try{await hn(await fetch(`${t}/api/providers?name=${encodeURIComponent(e.name)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({fastEnabled:o})}),r(`models.fastSaveFailed`)),s({value:o,from:l}),n(!0,r(o?`models.fastEnabled`:`models.fastDisabled`))}catch(e){n(!1,e instanceof Error?e.message:r(`models.fastSaveFailed`))}finally{a(!1)}}};return(0,Q.jsxs)(`div`,{className:`row models-provider-hint`,children:[(0,Q.jsx)(`span`,{className:`muted text-label`,children:r(`models.fastProvider`)}),(0,Q.jsx)(`div`,{className:`segmented models-segmented`,role:`radiogroup`,"aria-label":r(`models.fastProvider`),children:[!1,!0].map(e=>(0,Q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":u===e,className:`btn btn-sm${u===e?` btn-primary`:` btn-ghost`}`,disabled:i,onClick:()=>void d(e),children:r(e?`models.newPolicy_on`:`models.newPolicy_off`)},String(e)))}),(0,Q.jsx)(`span`,{className:`muted text-caption`,children:r(`models.fastProviderHint`)})]})}function oC(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)||e===`openai`&&n?.authMode===`forward`,liveModels:n?.liveModels!==!1,configuredModels:n?.models??[],contextWindow:n?.contextWindow,modelContextWindows:n?.modelContextWindows,discovery:n?.discovery,entitlement:n?.entitlement}}).sort((e,t)=>e.nativeProviderGroup===t.nativeProviderGroup?e.provider.localeCompare(t.provider):e.nativeProviderGroup?-1:1)}function sC({liveModels:e,discovery:t,showFailureBadge:n=!0}){let r=O(),i=e&&t?.status===`failed`?t:void 0;return(0,Q.jsxs)(`div`,{className:`row muted text-label leading-body`,role:`status`,style:{alignItems:`flex-start`,gap:8,padding:`6px 0`},children:[(0,Q.jsx)(we,{width:15,height:15,"aria-hidden":`true`,style:{flexShrink:0,marginTop:2}}),(0,Q.jsxs)(`span`,{children:[i&&n&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:r(`models.discoveryFailedBadge`)}),` `]}),i?`${hc(r,i)} `:`${r(e?`models.emptyDiscovery`:`models.emptyDiscoveryDisabled`)} `,(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:()=>qt(`providers`),children:r(`models.openProviderSettings`)})]})]})}function cC(){let e=O();return(0,Q.jsxs)(`div`,{className:`row muted text-label leading-body`,role:`status`,style:{alignItems:`flex-start`,gap:8,padding:`6px 0`},children:[(0,Q.jsx)(we,{width:15,height:15,"aria-hidden":`true`,style:{flexShrink:0,marginTop:2}}),(0,Q.jsxs)(`span`,{children:[`${e(`models.discoveryFailedDependency`,{control:e(`pws.liveModels`)})} `,(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:()=>qt(`providers`),children:e(`models.openProviderSettings`)})]})]})}function lC(e,t){if(!e)return null;let n=new Date(e);return Number.isNaN(n.getTime())?null:new Intl.DateTimeFormat(t,{dateStyle:`medium`,timeStyle:`short`}).format(n)}function uC({connected:e,catalogSyncedAt:n}){let{locale:r,t:i}=t(),a=lC(n,r),o=e?[{id:`saved`,chip:i(`models.delivery.chip.savedHub`),title:i(`models.delivery.savedHub.title`),body:i(`models.delivery.savedHub.body`)},{id:`synced`,chip:a?i(`models.delivery.chip.synced`,{time:a}):i(`models.delivery.chip.syncedUnknown`),title:i(`models.delivery.synced.title`),body:a?i(`models.delivery.synced.bodyAt`,{time:a}):i(`models.delivery.synced.bodyUnknown`)}]:[{id:`saved`,chip:i(`models.delivery.chip.saved`),title:i(`models.delivery.saved.title`),body:i(`models.delivery.saved.body`)}];return o.push({id:`loaded`,chip:i(`models.delivery.chip.loaded`),title:i(`models.delivery.loaded.title`),body:i(`models.delivery.loaded.body`)}),(0,Q.jsxs)(`details`,{className:`models-delivery`,children:[(0,Q.jsxs)(`summary`,{children:[(0,Q.jsx)(`span`,{className:`models-delivery-title`,children:i(`models.delivery.title`)}),(0,Q.jsx)(`span`,{className:`models-delivery-flow`,children:o.map(e=>e.chip).join(` → `)})]}),(0,Q.jsx)(`ol`,{className:`models-delivery-steps`,children:o.map(e=>(0,Q.jsxs)(`li`,{"data-step":e.id,children:[(0,Q.jsx)(`strong`,{children:e.title}),(0,Q.jsx)(`p`,{children:e.body})]},e.id))}),(0,Q.jsx)(`p`,{className:`models-delivery-hint`,children:i(`models.delivery.hint`)})]})}var dC=`ocx.models.settingsOpen.v1`;function fC(e){return e||(typeof localStorage>`u`?void 0:localStorage)}function pC(e){try{return fC(e)?.getItem(dC)===`1`}catch{return!1}}function mC(e,t){try{fC(t)?.setItem(dC,e?`1`:`0`)}catch{}}var hC={default:`models.pickerOrder.default`,alphabetical:`models.pickerOrder.alphabetical`,provider:`models.pickerOrder.provider`,"most-used":`models.pickerOrder.mostUsed`,custom:`models.pickerOrder.custom`};function gC(e,t){let n=e(`models.settingsPanel.off`),r=[];t.multiAgentMode&&r.push({id:`subagent`,label:e(`models.v2Label`),value:e(`models.v2Mode_${t.multiAgentMode}`)}),typeof t.v2Threads==`number`&&r.push({id:`threads`,label:e(`models.v2ThreadsLabel`),value:String(t.v2Threads)}),t.multiAgentMode===`v2`&&t.keepNativeOnV1&&r.push({id:`keep-native`,label:e(`models.keepNativeOnV1`),value:``}),r.push({id:`shadow`,label:e(`models.shadowCallIntercept`),value:t.shadowEnabled&&t.shadowModel?t.shadowModel:n}),t.autoReviewEnabled&&r.push({id:`auto-review`,label:e(`models.autoReviewOverride`),value:t.autoReviewModel||e(`models.autoReviewPending`)}),r.push({id:`window`,label:e(`models.contextCapLabel`),value:t.windowOn?Mc(t.windowValue):n});let i=hC[t.pickerMode];return r.push({id:`order`,label:e(`models.pickerOrder.label`),value:i?e(i):t.pickerMode}),t.newModelsOff&&r.push({id:`new-models`,label:e(`models.newPolicyGlobal`),value:``}),t.aliasesOn&&r.push({id:`aliases`,label:e(`models.useDefaultAliasesGlobal`),value:``}),r}function _C({title:e,attentionLabel:t,summary:n,warn:r,children:i,storage:a}){let[o,s]=(0,Z.useState)(()=>pC(a)),[c,l]=(0,Z.useState)(!1),u=o||r&&!c;return(0,Q.jsxs)(`details`,{className:`models-settings`,open:u,onToggle:e=>{let t=e.currentTarget.open;t!==u&&(s(t),!t&&r&&l(!0),mC(t,a))},children:[(0,Q.jsxs)(`summary`,{className:`models-settings-summary`,children:[(0,Q.jsx)(`span`,{className:`models-settings-title`,children:e}),r&&(0,Q.jsx)(`span`,{className:`models-settings-warn`,role:`img`,"aria-label":t,title:t}),(0,Q.jsx)(`span`,{className:`models-settings-state`,children:n.map(e=>(0,Q.jsxs)(`span`,{className:`models-settings-kv`,"data-item":e.id,children:[(0,Q.jsx)(`span`,{className:`models-settings-k`,children:e.label}),e.value&&(0,Q.jsx)(`span`,{className:`models-settings-v`,children:e.value})]},e.id))})]}),(0,Q.jsx)(`div`,{className:`models-settings-body`,children:i})]})}function vC({count:e,label:t}){return e===0?null:(0,Q.jsx)(`span`,{className:`models-chip mono text-caption models-custom-summary`,children:t})}function yC({text:e}){return(0,Q.jsx)(un,{content:e,side:`top`,maxWidth:360,children:(0,Q.jsxs)(`span`,{className:`models-info-hint`,children:[(0,Q.jsx)(we,{width:14,height:14,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:e})]})})}function bC({label:e,hint:t,busy:n,muted:r=!0,caption:i,children:a}){let o=[`models-row-label`,r?`muted`:``,i?`text-caption`:`text-control`].filter(Boolean).join(` `);return(0,Q.jsxs)(`div`,{className:`models-control-row`,"aria-busy":n||void 0,children:[(0,Q.jsxs)(`span`,{className:o,children:[e,t?(0,Q.jsxs)(Q.Fragment,{children:[` `,t]}):null]}),(0,Q.jsx)(`div`,{className:`models-row-actions`,children:a})]})}function xC(e,t,n){let[r,i]=(0,Z.useState)({apiBase:e,data:null,saving:!1}),a=r.apiBase===e?r.data:null,o=r.apiBase===e&&r.saving,s=(0,Z.useRef)({read:null,write:null,generation:0,apiBase:e});(0,Z.useLayoutEffect)(()=>{let t=s.current;return t.apiBase=e,t.generation++,()=>{t.generation++,t.read?.controller.abort(),t.read?.clear(),t.read=null,t.write?.controller.abort(),t.write?.clear(),t.write=null}},[e]);let c=(0,Z.useCallback)(async({reconcile:t=!1}={})=>{let n=s.current;if(n.write&&!t)return null;n.read?.controller.abort(),n.read?.clear();let r=A(15e3),a=n.generation;n.read=r;try{let o=await gn(await fetch(`${e}/api/auto-review-settings`,{signal:r.signal}));return!o||typeof o.enabled!=`boolean`||typeof o.model!=`string`?null:!r.signal.aborted&&n.apiBase===e&&n.generation===a&&n.read===r&&(!n.write||t)?(i({apiBase:e,data:o,saving:n.write!==null}),o):null}catch{return null}finally{r.clear(),n.read===r&&(n.read=null)}},[e]);return{data:a,saving:o,load:c,save:(0,Z.useCallback)(async r=>{let l=s.current;if(!a||o||l.apiBase!==e||l.write)return;let u=a,d=A(15e3);l.write=d;let f=++l.generation;l.read?.controller.abort(),l.read?.clear(),l.read=null,i({apiBase:e,data:{...u,...r},saving:!0});try{let a=await hn(await fetch(`${e}/api/auto-review-settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},signal:d.signal,body:JSON.stringify(r)}),t(`models.saveFailed`));if(!a||a.ok!==!0||typeof a.enabled!=`boolean`||typeof a.model!=`string`)throw Error(t(`models.saveFailed`));if(l.apiBase!==e||l.generation!==f)return;i({apiBase:e,data:{enabled:a.enabled,model:a.model},saving:!0}),(!a.catalogRefresh||a.catalogRefresh.status!==`committed`)&&n(!1,t(`codexAuth.catalogRefreshPending`))}catch(r){if(l.apiBase===e&&l.generation===f){let a=await c({reconcile:!0});if(l.apiBase!==e||l.generation!==f)return;i({apiBase:e,data:a??u,saving:!0}),n(!1,r instanceof Error&&r.message?r.message:t(`models.saveFailed`))}}finally{d.clear(),l.write===d&&(l.write=null),l.apiBase===e&&l.generation===f&&i(t=>t.apiBase===e?{...t,saving:!1}:t)}},[e,a,o,t,n,c])}}var SC={catalog:`models.subtitle`,combos:`models.subtitle.combos`,routing:`models.subtitle.routing`,compatibility:`models.subtitle.compatibility`};function CC({apiBase:e,restartEpoch:t=0,connected:n=!1,catalogSyncedAt:r,reportRestart:i}){let[a,o]=(0,Z.useState)(null),s=(0,Z.useRef)(!0);(0,Z.useEffect)(()=>(s.current=!0,()=>{s.current=!1}),[]);let c=(0,Z.useRef)(null),l=(0,Z.useRef)(0),u=(0,Z.useRef)(e),d=(0,Z.useCallback)(()=>{l.current++,c.current?.controller.abort(),c.current?.clear(),c.current=null},[]),f=(0,Z.useCallback)(async()=>{if(!s.current||u.current!==e)return;d();let t=l.current,n=A(15e3);c.current=n;try{let r=await av(e,{signal:n.signal});if(n.signal.aborted||!s.current||u.current!==e||t!==l.current||c.current!==n)return;o(r.state)}finally{n.clear(),c.current===n&&(c.current=null)}},[e,d]),{restarting:p,restart:m}=uv(e,{onSettled:()=>{f()},report:i});(0,Z.useEffect)(()=>(u.current=e,o(null),f(),d),[e,d,f,t]);let[h,g]=(0,Z.useState)($S),[_,v]=(0,Z.useState)(()=>new Set([$S()])),y=(0,Z.useCallback)(e=>{g(e),v(t=>t.has(e)?t:new Set([...t,e]))},[]);(0,Z.useEffect)(()=>{let e=()=>y($S());return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[y]);let b=(0,Z.useCallback)(e=>{eC(e),y(e)},[y]),x=h===`catalog`,[S,C]=(0,Z.useState)(null),[w,T]=(0,Z.useState)(null),[E,D]=(0,Z.useState)(null),k=O(),j=`ocx.models.catalog.v1:${e}`,M=(0,Z.useMemo)(()=>Ua(j),[j]),[N,P]=(0,Z.useState)(()=>M?.models??[]),[F,I]=(0,Z.useState)(()=>M?.providers??[]),[L,R]=(0,Z.useState)(()=>new Set(M?.disabled??[])),[z,B]=(0,Z.useState)(()=>M?.selectedModels??null),[V,H]=(0,Z.useState)({}),[U,W]=(0,Z.useState)({}),[G,ee]=(0,Z.useState)({}),[te,K]=(0,Z.useState)(()=>M?.contextCaps??{}),[q,ne]=(0,Z.useState)(()=>M?.contextCapValues??{}),[J,Y]=(0,Z.useState)(()=>M?.contextCapValue??35e4),ie=`${j}:picker-order`,X=(0,Z.useMemo)(()=>{let e=Ua(ie);return r_(e)?e:void 0},[ie]),[ae,se]=(0,Z.useState)(null),[ce,ue]=(0,Z.useState)(!1),de=(0,Z.useRef)(null),fe=(0,Z.useRef)(0),pe=Ya(ie,[e],(0,Z.useCallback)(async t=>{let n=await hn(await fetch(`${e}/api/subagent-models`,{signal:t}));if(!r_(n))throw Error(`picker settings payload missing`);if(t.aborted)throw Error(`picker settings request aborted`);return qa(ie,n),n},[e,ie]),{isEmpty:()=>!1,enabled:x,deadlineMs:15e3,initialData:X}),me=pe.state.data,he=ae??l_(me?.pickerAvailable??[],me?.pickerOrder??[],me?.pickerOrderMode);(0,Z.useLayoutEffect)(()=>(fe.current++,se(null),ue(!1),()=>{fe.current++,de.current?.controller.abort(),de.current?.clear(),de.current=null}),[e,x]),(0,Z.useLayoutEffect)(()=>{x&&ae===null&&he===`custom`&&se(`custom`)},[x,ae,he]);let[ge,_e]=(0,Z.useState)(``),[ve,ye]=(0,Z.useState)(!1),[xe,Se]=(0,Z.useState)({}),[Ce,Ee]=(0,Z.useState)({}),De=Ic(),[Oe,ke]=(0,Z.useState)(()=>De??new Set),je=(0,Z.useRef)(De===null),[Me,Ne]=(0,Z.useState)(``),[Pe,Fe]=(0,Z.useState)([]),[Le,Re]=(0,Z.useState)(!1),[ze,Be]=(0,Z.useState)(0),Ve=(0,Z.useCallback)((e,t)=>{Re(e),Ne(t),Be(e=>e+1)},[]),{data:He,saving:Ue,load:We,save:Ge}=xC(e,k,Ve);(0,Z.useEffect)(()=>{x||We()},[e,x,We]),(0,Z.useEffect)(()=>{if(!Me)return;let e=setTimeout(()=>Ne(``),Le?6e3:8e3);return()=>clearTimeout(e)},[Me,Le,ze]);let[qe,Je]=(0,Z.useState)(!1),Ye=(0,Z.useRef)(!1),Xe=(0,Z.useRef)(!1),Ze=(0,Z.useRef)(0),Qe=(0,Z.useRef)(!1),$e=Iy(e,{onQueued:()=>{++Ze.current,Ne(``)},onBusy:e=>{++Ze.current,Qe.current=!1,Xe.current=e,Ye.current=e,Je(e)},onResponse:e=>{let t=ws(e);t!==void 0&&Fe(t)},refresh:e=>Cr(!0,e),onSettled:e=>{Re(!e),Ne(k(e??`models.applied`))}}),et=(e,t,n,r,i)=>$e.visible(t,n,r,As(e,t,n,r,i)),[tt,nt]=(0,Z.useState)(null),[rt,it]=(0,Z.useState)({}),[at,ot]=(0,Z.useState)(null),[st,ct]=(0,Z.useState)({providers:{},models:{},defaults:{global:!1,providers:{}}}),[lt,ut]=(0,Z.useState)(!1),[dt,ft]=(0,Z.useState)(null),[pt,mt]=(0,Z.useState)(!0),[ht,gt]=(0,Z.useState)(!1),[_t,vt]=(0,Z.useState)(``),yt=(0,Z.useRef)(!1),bt=(0,Z.useRef)(0),xt=(0,Z.useRef)(0),[St,Ct]=(0,Z.useState)(``),[wt,Tt]=(0,Z.useState)(!1),[Et,Dt]=(0,Z.useState)(!1),[Ot,kt]=(0,Z.useState)(null),[At,jt]=(0,Z.useState)(!1),[Mt,Nt]=(0,Z.useState)(null),[Pt,Ft]=(0,Z.useState)(null),It=(0,Z.useRef)(null),[Lt,Rt]=(0,Z.useState)(null),[zt,Bt]=(0,Z.useState)(!1),[Vt,Ht]=(0,Z.useState)(null),[Wt,Gt]=(0,Z.useState)(null),[Kt,qt]=(0,Z.useState)(!1),Jt=(0,Z.useRef)(null),Yt=(0,Z.useRef)(!1);(0,Z.useEffect)(()=>()=>{Jt.current?.controller.abort(),Jt.current?.clear(),Jt.current=null},[]);let Xt=(0,Z.useRef)(null),Zt=(0,Z.useCallback)(async t=>{let n=await gn(await fetch(`${e}/api/aliases`,{signal:t}));n&&!t?.aborted&&ct(n)},[e]);(0,Z.useEffect)(()=>{let e=new AbortController;return Zt(e.signal),()=>e.abort()},[Zt]);let Qt={apiBase:e,t:k,reloadAliases:Zt,publishFeedback:Ve},$t=e=>dv(e,st.providers[e]??``,Qt),en=(e,t)=>fv(e,t,st.models[e]?.[t]?.alias??``,Qt),tn=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 Zt()},[nn,rn]=(0,Z.useState)(`add`),[an,sn]=(0,Z.useState)(``),[dn,fn]=(0,Z.useState)(``),[pn,mn]=(0,Z.useState)(``),[_n,vn]=(0,Z.useState)(``),[xn,Sn]=(0,Z.useState)(``),[Cn,wn]=(0,Z.useState)(!1),[Tn,En]=(0,Z.useState)([`text`]),[Dn,On]=(0,Z.useState)(!1),[kn,An]=(0,Z.useState)([]),jn=(0,Z.useRef)(!1),[Mn,Nn]=(0,Z.useState)(!1),[Pn,Fn]=(0,Z.useState)(``),[In,Ln]=(0,Z.useState)(null),[Rn,zn]=(0,Z.useState)([]),[Bn,Vn]=(0,Z.useState)(``),[Hn,Un]=(0,Z.useState)(``),[Wn,Gn]=(0,Z.useState)({}),[Kn,qn]=(0,Z.useState)({contextWindow:null,modelContextWindows:{}}),[Jn,Yn]=(0,Z.useState)(new Set),[Zn,Qn]=(0,Z.useState)(!1),[$n,er]=(0,Z.useState)(!1),[tr,nr]=(0,Z.useState)(``),[rr,ir]=(0,Z.useState)(null),or=(0,Z.useRef)(null),[cr,lr]=(0,Z.useState)(null),[ur,dr]=(0,Z.useState)(!1),[fr,pr]=(0,Z.useState)(null);(0,Z.useEffect)(()=>()=>{or.current&&clearTimeout(or.current)},[]);let mr=(0,Z.useMemo)(()=>Pc(N,L,z??{},k),[N,L,z,k]),hr=(0,Z.useMemo)(()=>{let e=new Set(mr.map(e=>e.value));return Xn(N.filter(t=>e.has(t.namespaced)),cr?.model,cr?.sourceModels)},[N,cr?.model,cr?.sourceModels,mr]),gr=(0,Z.useMemo)(()=>[{value:``,label:`—`},...Fc(mr,N,He?.model)],[N,mr,He?.model]),_r=(0,Z.useCallback)(async()=>{let t=A(15e3);try{let n=await gn(await fetch(`${e}/api/shadow-call-settings`,{signal:t.signal}));n&&lr(n)}catch{}finally{t.clear()}},[e]),vr=(0,Z.useCallback)(async()=>{if(yt.current)return;let t=++bt.current,n=xt.current,r=()=>t===bt.current&&n===xt.current,i=A(15e3);try{let t=await fetch(`${e}/api/v2`,{signal:i.signal});if(!r())return;if(!(t.headers.get(`content-type`)??``).includes(`application/json`)){nt(null);return}let n=await gn(t);if(!r())return;if(!n||typeof n.enabled!=`boolean`){nt(null);return}nt({enabled:n.enabled,agentsMaxThreadsConflict:n.agentsMaxThreadsConflict===!0,maxConcurrentThreadsPerSession:typeof n.maxConcurrentThreadsPerSession==`number`?n.maxConcurrentThreadsPerSession:null,multiAgentMode:n.multiAgentMode===`v1`||n.multiAgentMode===`v2`?n.multiAgentMode:`default`,keepNativeChatGptOnV1:n.keepNativeChatGptOnV1===!0})}catch{r()&&nt(null)}finally{i.clear(),mt(!1)}},[e]),yr=(0,Z.useCallback)(async t=>{let n=Ze.current,[r,i,a,o]=await Promise.all([fetch(`${e}/api/models`,{signal:t}),fetch(`${e}/api/provider-context-caps`,{signal:t}),fetch(`${e}/api/providers`,{signal:t}),Os(e,fetch,t)]),[s,c,l]=await Promise.all([hn(r),hn(i),hn(a)]);if(s===void 0||c===void 0||l===void 0)throw Error(`models payload missing`);if(t.aborted)throw Error(`models request aborted`);let u=Nc(s),d=typeof c.value==`number`&&Number.isFinite(c.value)&&c.value>0?c.value:typeof c.cap==`number`&&Number.isFinite(c.cap)&&c.cap>0?c.cap:void 0,f=d===void 0?35e4:d,p={models:s,providers:l,selectedModels:o,disabled:[...u],contextCaps:c.caps??{},contextCapValues:c.values??c.caps??{},contextCapValue:f};return n===Ze.current&&qa(j,p),p},[e,j]),br=(0,Z.useCallback)(e=>{let t=oC(e.models,e.providers);pr(e=>e!==null&&!t.some(t=>t.provider===e)?null:e),P(e.models),I(e.providers),R(new Set(e.disabled)),B(e.selectedModels),Y(e.contextCapValue),K(e.contextCaps),ne(e.contextCapValues??e.contextCaps)},[]),xr=Ya(j,[e],async e=>{let t=Ze.current,n=await yr(e);if(e.aborted)throw Error(`models request aborted`);return!Xe.current&&t===Ze.current&&br(n),n},{isEmpty:()=>!1,pollMs:1e4,initialData:M??void 0,enabled:x,deadlineMs:6e4}),Sr=xr.state,Cr=(0,Z.useCallback)(async(e=!1,t)=>{if(Qe.current&&!e)return!1;Qe.current=!0;let n=++Ze.current;try{let e=await yr(t??new AbortController().signal);return Ms(n,Ze.current)?(br(e),Ut(j,e),pe.refresh(),!0):!1}catch{return!1}finally{Ms(n,Ze.current)&&(Qe.current=!1)}},[br,j,yr,pe.refresh]),wr=(0,Z.useCallback)(()=>{let e=Xt.current;Nt(null),Ht(null),Gt(null),qt(!1),window.setTimeout(()=>{e?.isConnected&&e.focus()},0)},[]),Tr=(0,Z.useCallback)(()=>{Yt.current||wr()},[wr]),Er=(0,Z.useCallback)(async t=>{let n=Mt;if(!n||Yt.current)return;let r=A(6e4);Jt.current=r,Yt.current=!0,Bt(!0),Ht(null);let i=Wt?.confirmed===!0&&(t===void 0||t===Wt.value),a=t===void 0,o=t===void 0;try{if(t!==void 0){let s=await fetch(`${e}/api/providers/${encodeURIComponent(n.provider)}/model-display-names`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({modelId:n.id,displayName:t}),signal:r.signal}),c=s.ok?await hn(s,k(`models.displayNameSaveFailed`)):await s.json();if(r.signal.throwIfAborted(),!c||typeof c!=`object`||Array.isArray(c)||!s.ok&&c.saved!==!0&&typeof c.error!=`string`)throw Error(k(`models.displayNameSaveFailed`));a=!0;let l=s.ok||c.saved===!0;if(i||=l,l){let e=c.displayNameOverride===null?void 0:c.displayNameOverride??t??void 0,r={displayName:c.displayName??e,displayNameOverride:e,displayNameSource:c.displayNameSource??(e?`operator`:void 0)};P(e=>e.map(e=>e.namespaced===n.namespaced?{...e,...r}:e)),Nt({...n,...r}),qt(r.displayName===void 0)}if(!s.ok)throw Error(c.error||k(`models.displayNameSaveFailed`));o=!0}if(!await Cr(!0,r.signal))throw Error(k(`models.loadFail`));r.signal.throwIfAborted(),Ve(!0,k(i?t===null||t===void 0&&Wt?.value===null?`models.displayNameResetDone`:`models.displayNameSaved`:`models.displayNameReloaded`)),wr()}catch(e){if(Jt.current!==r)return;let n=!a||r.signal.aborted;n&&!i&&qt(!0),Gt(i||n||o?{value:o||n?void 0:t,confirmed:i}:null),Ht(i?k(`models.displayNameSavedRefreshFailed`):n||o?k(`models.displayNameOutcomeUnknown`):e instanceof Error&&e.message?e.message:k(`models.displayNameSaveFailed`))}finally{r.clear(),Jt.current===r&&(Jt.current=null,Yt.current=!1,Bt(!1))}},[e,Mt,Wt,wr,Cr,Ve,k]);(0,Z.useEffect)(()=>{if(!x)return;let e=window.setTimeout(()=>{_r(),We(),vr(),Yr(),Xr()},0),t=ua(()=>{yt.current||vr()},1e4);return()=>{window.clearTimeout(e),t()}},[x,_r,We,vr]);let Dr=(0,Z.useMemo)(()=>oC(N,F),[N,F]),Or=N.length>0||Sr.data!==void 0,kr=e=>{let t=[...new Set([...e.rows.map(e=>e.id),...e.configuredModels,...Object.keys(e.modelContextWindows??{})])].sort(),n=t[0]??``;Ln(e.provider),zn(t),Vn(n);let r=e.contextWindow?String(e.contextWindow):``,i=Object.fromEntries(Object.entries(e.modelContextWindows??{}).map(([e,t])=>[e,String(t)]));Un(r),Gn(i),qn({contextWindow:e.contextWindow??null,modelContextWindows:Object.fromEntries(Object.entries(e.modelContextWindows??{}).map(([e,t])=>[e,t]))}),Yn(new Set),Qn(!1),nr(``)},Ar=e=>{Vn(e)},jr=async()=>{if(!In)return;let t=Rc(Hn);if(!Dr.find(e=>e.provider===In)){nr(k(`models.contextSaveFailed`));return}if(Zn&&t===void 0){nr(k(`models.contextInvalid`));return}let n=Object.create(null);for(let e of Jn){let t=Rc(vv(Wn,e)??``);if(t===void 0){nr(k(`models.contextInvalid`));return}t!==(vv(Kn.modelContextWindows,e)??null)&&(n[e]=t)}let r=Zn&&t!==Kn.contextWindow;if(!r&&Object.keys(n).length===0){Ln(null),Ve(!0,k(`models.contextUnchanged`));return}er(!0),nr(``);try{let i={};r&&(i.contextWindow=t),Object.keys(n).length>0&&(i.modelContextWindows=n),await hn(await fetch(`${e}/api/providers?name=${encodeURIComponent(In)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(i)}),k(`models.contextSaveFailed`))}catch(e){nr(e instanceof Error?e.message:k(`models.contextSaveFailed`));return}finally{er(!1)}Ln(null),Ve(!0,k(`models.contextSaved`)),await Cr(!0)};(0,Z.useEffect)(()=>{if(!je.current||Dr.length===0)return;je.current=!1;let e=new Set(Dr.map(e=>e.provider));ke(e),Lc(e)},[Dr]);let Mr=(0,Z.useMemo)(()=>z?N.filter(e=>et(z,e.provider,e.id,e.native===!0,L.has(e.namespaced))).length:0,[L,N,z,$e.overrides]),Nr=(0,Z.useMemo)(()=>({catalog:Or?k(`models.active`,{active:Mr,total:N.length}):void 0,combos:S===null?void 0:String(S),routing:w===null?void 0:String(w),compatibility:E===null?void 0:String(E)}),[Or,S,E,Mr,N.length,w,k]),Pr=async(e,t,n,r)=>{Ye.current&&!$e.isRunning()||$e.enqueue(e,t,n,r)},Fr=async t=>{Je(!0),Ye.current=!0,Ne(``);let n=te[t]===void 0;try{let r=await fetch(`${e}/api/provider-context-caps`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:t,enabled:n})});try{let e=await hn(r,k(`models.capSaveFailed`));K(e?.caps??{}),ne(e?.values??e?.caps??{}),Re(!0),Ne(k(`models.capApplied`)),await Cr(!0)}catch(e){Re(!1),Ne(e instanceof Error?e.message:k(`models.capSaveFailed`))}}catch{Re(!1),Ne(k(`models.networkError`))}finally{Je(!1),Ye.current=!1}},Ir=e=>{ke(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),Lc(n),n})},Lr=e=>{ke(()=>{let t=e?new Set(Dr.map(e=>e.provider)):new Set;return Lc(t),t})},Rr=async t=>{Je(!0),Ye.current=!0,Ne(``);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 hn(n,k(`models.capSaveFailed`));typeof e?.value==`number`&&Number.isFinite(e.value)&&e.value>0&&Y(e.value),K(e?.caps??{}),ne(e?.values??e?.caps??{}),Re(!0),Ne(k(`models.capApplied`)),await Cr(!0)}catch(e){Re(!1),Ne(e instanceof Error?e.message:k(`models.capSaveFailed`))}}catch{Re(!1),Ne(k(`models.networkError`))}finally{Je(!1),Ye.current=!1}},zr=(0,Z.useMemo)(()=>{let e=Dr.filter(e=>!e.native);return e.length>0&&e.every(e=>te[e.provider]===J)&&Object.keys(te).every(e=>te[e]===J)},[Dr,te,J]),Br=e=>{!Number.isSafeInteger(e)||e<=0||Rr(zr?{value:e,setAll:!0}:{value:e})},Vr=(e,t)=>{if(t===`custom`){Se(t=>({...t,[e]:!0})),Ee(t=>({...t,[e]:String(te[e]??q[e]??J)}));return}Se(t=>({...t,[e]:!1}));let n=Number(t);Number.isSafeInteger(n)&&n>0&&n!==te[e]&&Rr({provider:e,enabled:!0,value:n})},Hr=e=>{let t=Number((Ce[e]??``).replace(/[_,\s]/g,``));if(!Number.isSafeInteger(t)||t<=0){Ve(!1,k(`models.capSaveFailed`));return}Se(t=>({...t,[e]:!1})),Rr({provider:e,enabled:!0,value:t})},Ur=e=>{if(e===`custom`){ye(!0),_e(String(J));return}ye(!1);let t=Number(e);Number.isSafeInteger(t)&&t>0&&t!==J&&Br(t)},Wr=()=>{let e=Number(ge.replace(/[_,\s]/g,``));if(!Number.isSafeInteger(e)||e<=0){Ve(!1,k(`models.capSaveFailed`));return}ye(!1),Br(e)},Gr=()=>{Rr({setAll:!zr})},Kr=async t=>{if(!(!cr||ur)){dr(!0),lr({...cr,...t});try{await fetch(`${e}/api/shadow-call-settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)})}finally{dr(!1)}}},qr=async t=>{if(!(!tt||yt.current)){gt(!0),yt.current=!0,xt.current++,vt(``),Ne(``);try{let n=await fetch(`${e}/api/v2`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});try{let e=await hn(n,k(`models.saveFailed`));if(!e||typeof e.enabled!=`boolean`){Re(!1),Ne(k(`models.saveFailed`));return}nt({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}),Re(!0),Ne(k(`models.v2Applied`)),vt((e.warnings??[]).join(` `))}catch(e){Re(!1),Ne(e instanceof Error?e.message:k(`models.saveFailed`))}}catch{Re(!1),Ne(k(`models.networkError`))}finally{gt(!1),yt.current=!1}}},Jr=async e=>{if(!(!tt||tt.multiAgentMode===e)){if(e===`v1`){await qr({multiAgentMode:`v1`});return}kt(e)}},Yr=async()=>{try{let t=A(15e3),n=await gn(await fetch(`${e}/api/model-presets`,{signal:t.signal}));it(n?.providers??{})}catch{it({})}},Xr=async()=>{try{let t=await fetch(`${e}/api/model-discovery`);ot(await gn(t)??null)}catch{ot(null)}},Zr=async(t,n)=>{await gn(await fetch(`${e}/api/model-discovery`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({policy:t,provider:n??null})})),await Promise.all([Xr(),Cr()])},Qr=async(t,n,r)=>{if(!(r&&!await aa({message:k(`models.presetConfirmReplace`,{count:String(r.presetCount)}),tone:`danger`}))&&!Xe.current){Xe.current=!0,ft(t),Je(!0),Ye.current=!0;try{let r=A(3e4),i=await hn(await fetch(`${e}/api/model-presets`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({provider:t,mode:n}),signal:r.signal}),k(`models.saveFailed`));if(!i)throw Error(k(`models.saveFailed`));if(i.fallback===`preset-empty`)Ve(!1,k(`models.presetEmpty`,{provider:t}));else{let e=ws(i);e!==void 0&&Fe(e),Ve(!0,n===`all`?k(`models.presetClearedToast`,{provider:t}):k(`models.presetAppliedToast`,{provider:t,count:String(i.selected?.length??0)}))}await Promise.all([Yr(),Cr()])}catch(e){Ve(!1,e instanceof Error?e.message:String(e))}finally{ft(null),Je(!1),Ye.current=!1,Xe.current=!1}}},$r=async e=>{!tt||tt.keepNativeChatGptOnV1===e||await qr({keepNativeChatGptOnV1:e})},ei=tt?.maxConcurrentThreadsPerSession==null?null:kc(tt.maxConcurrentThreadsPerSession,tt.enabled),ti=async t=>{if(!(!tt||yt.current)){if(!Number.isInteger(t)||t<1){Ve(!1,k(`models.v2ThreadsInvalid`));return}if(ei!==t){gt(!0),yt.current=!0,xt.current++,vt(``),Ne(``);try{let n=await fetch(`${e}/api/v2`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({maxConcurrentThreadsPerSession:Ac(t,tt.enabled)})});try{let e=await hn(n,k(`models.saveFailed`));if(!e||typeof e.enabled!=`boolean`){Re(!1),Ne(k(`models.saveFailed`));return}nt({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}),Re(!0),Ne(k(`models.v2ThreadsApplied`)),Tt(!1)}catch(e){Re(!1),Ne(e instanceof Error?e.message:k(`models.saveFailed`))}}catch{Re(!1),Ne(k(`models.networkError`))}finally{gt(!1),yt.current=!1}}}},ni=e=>{if(e===`custom`){Tt(!0),Ct(String(ei??``));return}Tt(!1),ti(Number(e))},ri=(e,t)=>{or.current&&clearTimeout(or.current),or.current=setTimeout(()=>{ir({namespaced:e,rect:t.getBoundingClientRect()})},300)},ii=(e,t)=>{or.current&&clearTimeout(or.current),ir({namespaced:e,rect:t.getBoundingClientRect()})},ai=()=>{or.current&&clearTimeout(or.current),or.current=setTimeout(()=>ir(null),120)},oi=()=>{or.current&&clearTimeout(or.current)},si=async(t,n,r,i,a,o)=>{Nn(!0),Fn(``);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 hn(s,k(`models.customSaveFailed`)),jt(!1),Ve(!0,k(`models.customAdded`)),await Cr(!0)}catch(e){Fn(e instanceof Error?e.message:k(`models.customSaveFailed`))}}catch{Fn(k(`models.networkError`))}finally{Nn(!1)}},ci=async(t,n)=>{Nn(!0),Fn(``);try{let r=await fetch(`${e}/api/custom-models/${encodeURIComponent(t)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)});try{await hn(r,k(`models.customSaveFailed`)),jt(!1),Ve(!0,k(`models.customUpdated`)),await Cr(!0)}catch(e){Fn(e instanceof Error?e.message:k(`models.customSaveFailed`))}}catch{Fn(k(`models.networkError`))}finally{Nn(!1)}},li=async(t,n)=>{if(await aa({message:k(`models.customDeleteConfirm`,{name:n}),confirmLabel:k(`common.delete`),tone:`danger`}))try{(await fetch(`${e}/api/custom-models/${encodeURIComponent(t)}`,{method:`DELETE`})).ok?(Ve(!0,k(`models.customDeleted`)),await Cr(!0)):Ve(!1,k(`models.customSaveFailed`))}catch{Ve(!1,k(`models.networkError`))}},ui=Sr.data??M,di=Sr.kind===`failed-cold`?Sr.error instanceof Error?Sr.error.message:k(`models.loadFail`):null,fi=Sr.showSkeleton&&!ui,pi=z??{},mi=t=>{let{provider:n,rows:r,nativeProviderGroup:i,liveModels:a,discovery:o}=t,s=Oe.has(n),c=e=>et(pi,n,e.id,e.native===!0,L.has(e.namespaced)),l=U[n]===!0,u=gc(r),d=vc(l,r),f=_c(r,d),p=f.filter(c).length,m=at?.recentArrivals[n]??[],h=new Set(m.map(e=>e.id)),g=te[n]!==void 0,_=te[n]??q[n]??J,v=t.nativeProviderGroup?wc:Sc,y=t.nativeProviderGroup?Tc:Cc,b=a&&o?.status===`failed`?o:void 0,x=(V[n]??``).trim().toLowerCase(),S=x?f.filter(e=>e.id.toLowerCase().includes(x)):f,C=S.toSorted((e,t)=>Number(!c(e))-Number(!c(t))),w=G[n]??60,T=C.slice(0,w),E=S.length-T.length,D=f.length>0,O=r.some(e=>e.initialSelectionPending),A=!D||f.every(c),j=!D||f.every(e=>!c(e)),M=e=>{!D||O||Pr(`provider`,n,f.map(e=>({id:e.id,native:e.native===!0})),e)};return(0,Q.jsxs)(`div`,{className:`card models-provider-card`,children:[(0,Q.jsxs)(`div`,{className:`row group-head models-provider-head${s?``:` open`}`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`row models-provider-toggle`,onClick:()=>Ir(n),"aria-expanded":!s,style:{flex:`1 1 auto`,border:0,background:`transparent`,padding:0,color:`inherit`,cursor:`pointer`,textAlign:`left`},children:[(0,Q.jsx)(Ke,{style:{width:14,height:14,color:`var(--muted)`,transform:s?`none`:`rotate(90deg)`,transition:`transform .12s`}}),(0,Q.jsx)(`span`,{className:`text-body font-semibold`,style:{whiteSpace:`nowrap`},children:le(n)}),st.providers[n]&&(0,Q.jsx)(`span`,{className:`models-chip mono text-caption`,children:st.providers[n]}),i&&(0,Q.jsx)(`span`,{className:`models-chip muted mono text-caption`,children:k(`models.nativeGroupLabel`)}),b&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,role:`status`,title:hc(k,b),children:k(`models.discoveryFailedBadge`)}),(0,Q.jsx)(`span`,{className:`muted mono text-label`,children:k(`models.active`,{active:p,total:f.length})}),m.length>0&&(0,Q.jsx)(`span`,{className:`models-chip mono text-caption`,children:k(`models.newCount`,{count:m.length})})]}),(0,Q.jsxs)(`div`,{className:`row models-provider-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm models-alias-edit`,"aria-label":k(`models.editProviderAlias`),title:k(`models.editProviderAlias`),onClick:()=>void $t(n),children:(0,Q.jsx)(oe,{style:{width:14,height:14}})}),(0,Q.jsx)(on,{on:st.defaults.providers[n]??st.defaults.global,onClick:()=>void tn(!(st.defaults.providers[n]??st.defaults.global),n),label:k(`models.useDefaultAliases`),showLabel:!0}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:e=>{e.stopPropagation(),rn(`add`),sn(n),fn(``),mn(``),vn(``),Sn(``),wn(!1),En([`text`]),On(!1),An([]),jn.current=!1,Fn(``),jt(!0)},"aria-haspopup":`dialog`,children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:`+`}),` `,k(`models.customAdd`)]}),(()=>{let e=rt[n];if(!e)return null;let t=qe||dt!==null,r=e.mode===`custom`&&e.appliedVersion!==void 0&&e.appliedVersion<e.availableVersion;return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`segmented models-segmented`,role:`radiogroup`,"aria-label":k(`models.presetLabel`),children:[[`preset`,`all`].map(r=>(0,Q.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:qe||t||O,onClick:t=>{t.stopPropagation(),Qr(n,r,r===`preset`&&e.mode===`custom`?e:void 0)},children:k(`models.presetMode_${r}`)},r)),e.mode===`custom`&&(0,Q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":!0,className:`btn btn-sm btn-primary`,disabled:!0,children:k(`models.presetMode_custom`)})]}),e.mode===`preset`&&(0,Q.jsx)(`span`,{className:`muted mono text-label`,children:k(`models.presetSummary`,{count:String(e.presetCount),total:String(e.totalCount),version:String(e.availableVersion)})}),r&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,role:`status`,children:k(`models.presetUpdateAvailable`,{version:String(e.availableVersion)})})]})})(),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,disabled:qe&&!$e.pending||A||O,onClick:()=>M(!0),children:k(`models.allOn`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,disabled:qe&&!$e.pending||j||O,onClick:()=>M(!1),children:k(`models.allOff`)}),(0,Q.jsxs)(`div`,{className:`models-cap-cluster`,children:[(0,Q.jsx)(on,{on:g,onClick:()=>Fr(n),disabled:qe,label:k(`models.contextCapLabel`),showLabel:!0}),(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(cn,{value:xe[n]?Ec:String(_),options:[...!y.has(_)&&!xe[n]?[{value:String(_),label:Mc(_)}]:[],...v.map(e=>({value:String(e),label:Mc(e)})),{value:Ec,label:k(`models.custom`)}],onChange:e=>Vr(n,e),disabled:qe||!g,label:k(`models.capValue`,{value:Mc(_)}),title:k(`models.contextCapLabel`)}),g&&xe[n]&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`input`,{className:`input`,style:{width:120},inputMode:`numeric`,placeholder:k(`models.customPlaceholder`),value:Ce[n]??``,onChange:e=>Ee(t=>({...t,[n]:e.target.value})),onKeyDown:e=>{e.key===`Enter`&&Hr(n)},disabled:qe,"aria-label":k(`models.customPlaceholder`)}),(0,Q.jsx)(`button`,{type:`button`,onClick:()=>Hr(n),disabled:qe,className:`btn btn-ghost btn-sm`,children:k(`models.customApply`)})]})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:()=>kr(t),"aria-haspopup":`dialog`,children:k(`models.contextSettings`)})]})]})]}),!s&&(0,Q.jsxs)(`div`,{className:`models-provider-body`,children:[i&&(0,Q.jsx)(`p`,{className:`muted text-label models-provider-hint`,children:k(`models.nativeHint`)}),!i&&at&&(0,Q.jsxs)(`div`,{className:`row models-provider-hint`,children:[(0,Q.jsx)(`span`,{className:`muted text-label`,children:k(`models.newPolicyProvider`)}),(0,Q.jsx)(`div`,{className:`segmented models-segmented`,role:`radiogroup`,"aria-label":k(`models.newPolicyProvider`),children:[`off`,`on`].map(e=>(0,Q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":(at.providers[n]??`inherit`)===e,className:`btn btn-sm${(at.providers[n]??`inherit`)===e?` btn-primary`:` btn-ghost`}`,onClick:()=>void Zr(e,n),children:k(`models.newPolicy_${e}`)},e))})]}),!i&&(0,Q.jsx)(aC,{summary:F.find(e=>e.name===n),apiBase:e,onSaved:(e,t)=>{Ve(e,t),e&&Cr(!0)}}),r.length===0&&(0,Q.jsx)(sC,{liveModels:a,discovery:o,showFailureBadge:!1}),r.length>0&&b&&(0,Q.jsx)(cC,{}),u&&(0,Q.jsx)(`div`,{className:`row models-provider-hint`,children:(0,Q.jsx)(on,{on:l,onClick:()=>W(e=>({...e,[n]:!l})),label:k(`models.freeOnly`),showLabel:!0})}),d&&f.length===0&&r.length>0&&(0,Q.jsx)(`p`,{className:`muted text-label`,role:`status`,children:k(`models.noFreeMatch`)}),r.length>30&&(0,Q.jsx)(`input`,{className:`input`,placeholder:k(`models.search`),value:V[n]??``,onChange:e=>H(t=>({...t,[n]:e.target.value})),"aria-label":k(`models.search`)}),T.map(e=>{let t=!c(e);return(0,Q.jsxs)(`div`,{className:`model-row-wrap`,onMouseEnter:t=>ri(e.namespaced,t.currentTarget),onMouseLeave:ai,onFocus:t=>ii(e.namespaced,t.currentTarget),onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||ir(null)},children:[(0,Q.jsxs)(`div`,{className:`row models-model-row`,children:[(0,Q.jsx)(on,{on:!t,onClick:()=>void Pr(`models`,n,[{id:e.id,native:e.native===!0}],t),disabled:qe&&!$e.pending||e.initialSelectionPending,label:e.native?e.id:e.namespaced}),e.initialSelectionPending&&(0,Q.jsx)(`span`,{className:`models-chip muted`,role:`status`,children:k(`models.initialSelectionPending`)}),e.quotaInactiveReason===`no_credit`&&(0,Q.jsx)(`span`,{className:`models-chip muted`,role:`status`,title:k(`models.inactiveNoCreditHint`),children:k(`models.inactiveNoCredit`)}),st.models[n]?.[e.id]&&(0,Q.jsx)(`strong`,{className:`mono text-control`,children:st.models[n][e.id].alias}),(0,Q.jsxs)(`span`,{className:`models-model-identity`,children:[(0,Q.jsx)(`code`,{className:`mono text-control`,style:{color:t?`var(--faint)`:`var(--text)`,textDecoration:t?`line-through`:`none`},children:e.native?_v(e.id):e.namespaced}),!e.native&&e.displayName?.trim()&&e.displayName.trim()!==e.namespaced&&(0,Q.jsx)(`span`,{className:`models-model-friendly text-caption`,children:e.displayName.trim()})]}),st.models[n]?.[e.id]?.source===`builtin`&&(0,Q.jsx)(`span`,{className:`models-chip muted text-caption`,children:k(`models.aliasAuto`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":k(`models.editModelAlias`),title:k(`models.editModelAlias`),onClick:()=>void en(n,e.id),children:(0,Q.jsx)(oe,{style:{width:13,height:13}})}),!e.native&&!e.custom&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption models-display-name-trigger`,"aria-haspopup":`dialog`,"aria-label":k(`models.displayNameActionLabel`,{model:e.namespaced}),onClick:t=>{Xt.current=t.currentTarget,Ht(null),Gt(null),qt(!1),Nt(e)},children:k(`models.displayNameAction`)}),e.custom&&(0,Q.jsx)(`span`,{className:`models-chip muted mono text-caption`,children:k(`models.customBadge`)}),!e.native&&e.provider!==`combo`&&(0,Q.jsxs)(Q.Fragment,{children:[e.manualPricing===!0&&(0,Q.jsx)(`span`,{className:`models-chip muted text-caption`,children:k(`pricing.override.badge`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption models-display-name-trigger`,"aria-haspopup":`dialog`,"aria-label":k(`pricing.override.actionLabel`,{model:e.namespaced}),onClick:t=>{It.current=t.currentTarget,Ft(e)},children:k(`pricing.override.action`)})]}),!e.native&&!e.custom&&e.provider!==`combo`&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption models-display-name-trigger`,"aria-haspopup":`dialog`,"aria-label":k(`models.settingsTitle`,{model:e.namespaced}),onClick:()=>Rt(e),children:k(`models.customEdit`)}),!e.custom&&h.has(e.id)&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:k(`models.newBadge`)}),e.contextCapped&&(0,Q.jsx)(`span`,{className:`models-chip muted mono text-caption`,children:k(`models.contextCappedValue`,{value:Mc(e.contextCap??J)})})]}),rr?.namespaced===e.namespaced&&(()=>{let n=rr.rect,r=n.bottom+4,i=r+360>window.innerHeight;return(0,Q.jsxs)(`div`,{className:`model-tip${e.custom?` has-actions`:``}${i?` flip-up`:``}`,role:`tooltip`,style:{position:`fixed`,left:n.left+24,...i?{bottom:window.innerHeight-n.top+4}:{top:r}},onMouseEnter:oi,onMouseLeave:ai,children:[(0,Q.jsx)(`div`,{className:`model-tip-id`,children:e.native?e.id:e.namespaced}),e.displayName&&(0,Q.jsx)(`div`,{className:`model-tip-display`,children:e.displayName}),e.custom&&(0,Q.jsx)(`span`,{className:`models-chip models-chip--tip muted mono text-caption`,children:k(`models.customBadge`)}),(0,Q.jsxs)(`div`,{className:`model-tip-grid`,children:[(0,Q.jsx)(`span`,{className:`model-tip-key`,children:k(`models.tipProvider`)}),(0,Q.jsx)(`span`,{className:`model-tip-val`,children:be(e.provider,k)}),(e.contextWindow||e.contextCap)&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`model-tip-key`,children:k(`models.tipContext`)}),(0,Q.jsx)(`span`,{className:`model-tip-val`,children:Mc(e.contextWindow??e.contextCap??0)})]}),e.inputModalities&&e.inputModalities.length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`model-tip-key`,children:k(`models.tipModalities`)}),(0,Q.jsx)(`span`,{className:`model-tip-val`,children:e.inputModalities.join(`, `)})]}),(0,Q.jsx)(`span`,{className:`model-tip-key`,children:k(`models.tipStatus`)}),(0,Q.jsx)(`span`,{className:`model-tip-val`,children:k(t?`models.tipDisabled`:`models.tipActive`)})]}),e.custom&&e.customId&&(0,Q.jsxs)(`div`,{className:`model-tip-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:()=>{rn(`edit`),sn(e.provider),fn(e.customId),mn(e.id),vn(e.displayName??``),Sn(e.contextWindow?String(e.contextWindow):``),wn(!1),En(e.inputModalities??[`text`]),On(Array.isArray(e.reasoningEfforts)),An(e.reasoningEfforts??[]),jn.current=Array.isArray(e.reasoningEfforts),Fn(``),jt(!0),ir(null)},children:k(`models.customEdit`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,style:{color:`var(--red)`},onClick:()=>{li(e.customId,e.displayName??e.id).finally(()=>ir(null))},children:k(`models.customDelete`)})]})]})})()]},e.namespaced)}),E>0&&(0,Q.jsx)(`button`,{type:`button`,onClick:()=>ee(e=>({...e,[n]:w+60})),className:`btn btn-ghost btn-sm models-show-more`,children:k(`models.showMore`,{n:E})})]})]},n)},hi=fr?Dr.filter(e=>e.provider===fr):Dr,gi=(e,t=!1)=>{let n={pickerOrder:e.pickerOrder,pickerOrderMode:e.pickerOrderMode,pickerAvailable:[]};Ut(ie,n),qa(ie,n),t&&se(`custom`),pe.refresh();let r=e.catalogRefresh,i=typeof r==`object`&&!!r&&`status`in r&&r.status===`committed`&&`degraded`in r&&r.degraded===!1;Ve(i,k(i?`models.pickerOrder.saved`:`models.pickerOrder.pending`)),f()},_i=async()=>{if(de.current||!me||pe.state.showError||he===`custom`)return;let t=fe.current,n=he,r=me.pickerAvailable,i=A(15e3);de.current=i,ue(!0);let a=()=>fe.current===t&&de.current===i,o=()=>a()&&!i.signal.aborted;try{let t=[];if(n===`most-used`){let n=await fetch(`${e}/api/usage?range=all&surface=all`,{signal:i.signal});if(!o())return;let r=await hn(n,k(`models.pickerOrder.usageFailed`));if(!o())return;if(r?.usageIncomplete===!0)throw Error(k(`models.pickerOrder.usageIncomplete`));if(!i_(r?.models))throw Error(k(`models.pickerOrder.usageFailed`));t=r.models}if(!o())return;let a=c_(n,r,t,N),s=await fetch(`${e}/api/subagent-models`,{method:`PUT`,headers:{"Content-Type":`application/json`},signal:i.signal,body:JSON.stringify({pickerOrder:a,pickerOrderMode:n==="default"?null:n})});if(!o())return;let c=await hn(s,k(`models.saveFailed`));if(!n_(c)||!(`ok`in c)||c.ok!==!0)throw Error(k(`models.saveFailed`));if(!o())return;gi({pickerOrder:c.pickerOrder,pickerOrderMode:c.pickerOrderMode,catalogRefresh:`catalogRefresh`in c?c.catalogRefresh:void 0}),se(null)}catch(e){a()&&Ve(!1,e instanceof Error?e.message:k(`models.networkError`))}finally{i.clear(),a()&&(de.current=null,ue(!1))}},vi=(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`models-control-top-row`,children:[at&&(0,Q.jsx)(bC,{label:k(`models.newPolicyGlobal`),children:(0,Q.jsx)(on,{on:at.policy===`off`,onClick:()=>void Zr(at.policy===`off`?`on`:`off`),label:k(`models.newPolicyGlobal`)})}),(0,Q.jsxs)(bC,{label:k(`models.useDefaultAliasesGlobal`),children:[(0,Q.jsx)(on,{on:st.defaults.global,onClick:()=>void tn(!st.defaults.global),label:k(`models.useDefaultAliasesGlobal`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>ut(e=>!e),children:k(`models.aliases`)})]}),(0,Q.jsxs)(bC,{label:k(`models.shadowCallIntercept`),hint:(0,Q.jsx)(un,{content:k(`models.shadowCallInterceptHint`,{models:yn(cr?.sourceModels)}),side:`top`,maxWidth:320,children:(0,Q.jsx)(`span`,{style:{cursor:`help`},"aria-label":k(`models.shadowCallInterceptHint`,{models:yn(cr?.sourceModels)}),children:`ⓘ`})}),busy:!cr,children:[(0,Q.jsx)(`code`,{className:`text-caption models-shadow-warning`,style:{opacity:.6},children:k(`models.shadowCallOriginal`,{models:bn(cr?.sourceModels)})}),(0,Q.jsx)(on,{on:cr?.enabled??!1,onClick:()=>void Kr({enabled:!cr?.enabled}),disabled:!cr||ur,label:k(`models.shadowCallIntercept`)}),(0,Q.jsx)(`div`,{className:`models-shadow-model-slot`,children:(0,Q.jsx)(cn,{value:cr?.model??``,options:hr,onChange:e=>{lr(t=>t&&{...t,model:e}),Kr({model:e})},disabled:!cr||ur||!cr.enabled,label:k(`models.shadowCallIntercept`)})})]}),(0,Q.jsxs)(bC,{label:k(`models.autoReviewOverride`),hint:(0,Q.jsx)(un,{content:k(`models.autoReviewOverrideHint`),side:`top`,maxWidth:320,children:(0,Q.jsx)(`span`,{style:{cursor:`help`},"aria-label":k(`models.autoReviewOverrideHint`),children:`ⓘ`})}),busy:!He,children:[(0,Q.jsx)(on,{on:He?.enabled??!1,onClick:()=>void Ge({enabled:!He?.enabled}),disabled:!He||Ue,label:k(`models.autoReviewOverride`)}),(0,Q.jsx)(`div`,{className:`models-shadow-model-slot`,children:(0,Q.jsx)(cn,{value:He?.model??``,options:gr,onChange:e=>void Ge({model:e}),disabled:!He||Ue||!He.enabled,label:k(`models.autoReviewOverride`)})})]}),(pt||tt)&&(0,Q.jsxs)(bC,{label:k(`models.v2Label`),children:[(0,Q.jsx)(`div`,{className:`segmented models-segmented`,role:`radiogroup`,"aria-label":k(`models.v2Label`),children:[`v1`,`default`,`v2`].map(e=>(0,Q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":(tt?.multiAgentMode??`default`)===e,className:`btn btn-sm${(tt?.multiAgentMode??`default`)===e?` btn-primary`:` btn-ghost`}`,style:{background:(tt?.multiAgentMode??`default`)===e?void 0:`transparent`,color:(tt?.multiAgentMode??`default`)===e?void 0:`var(--muted)`},disabled:!tt||ht,onClick:()=>void Jr(e),children:k(`models.v2Mode_${e}`)},e))}),(0,Q.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:!tt,onClick:()=>Dt(!0),"aria-label":k(`models.v2Label`),"aria-haspopup":`dialog`,children:(0,Q.jsx)(we,{width:14,height:14,"aria-hidden":`true`})})]}),tt&&tt.multiAgentMode===`v2`&&(0,Q.jsx)(`div`,{className:`models-v2-keep-native-row`,children:(0,Q.jsxs)(`div`,{className:`models-v2-keep-native`,children:[(0,Q.jsx)(`span`,{className:`models-v2-keep-native-label text-caption`,children:k(`models.keepNativeOnV1`)}),(0,Q.jsx)(on,{on:tt.keepNativeChatGptOnV1===!0,onClick:()=>void $r(!tt.keepNativeChatGptOnV1),disabled:ht,label:k(`models.keepNativeOnV1`)}),(0,Q.jsx)(un,{content:k(`models.keepNativeOnV1Hint`),side:`top`,maxWidth:360,children:(0,Q.jsx)(`span`,{className:`models-v2-keep-native-info`,"aria-label":k(`models.keepNativeOnV1Hint`),children:(0,Q.jsx)(we,{width:13,height:13,"aria-hidden":`true`})})})]})}),Ot&&(0,Q.jsx)(sr,{reason:`selection`,mode:Ot,docsUrl:ar(tt?.multiAgentSurfaceAdvisory)?.docsUrl??`https://opencodex.me/guides/subagent-v1-default/`,busy:ht,onContinue:()=>{let e=Ot;kt(null),qr({multiAgentMode:e,multiAgentSurfaceAdvisoryAcknowledged:!0})},onChooseV1:()=>{kt(null),tt?.multiAgentMode!==`v1`&&qr({multiAgentMode:`v1`,multiAgentSurfaceAdvisoryAcknowledged:!0})},onDismiss:()=>kt(null)})]}),tt&&(0,Q.jsxs)(`div`,{className:`models-v2-detail-row row`,children:[(0,Q.jsx)(`span`,{className:`muted text-control`,children:k(`models.v2ThreadsLabel`)}),(0,Q.jsx)(cn,{value:wt?`custom`:ei===null?``:Oc.has(ei)?String(ei):`custom`,options:[...ei===null?[{value:``,label:k(`models.v2ThreadsDefault`)}]:[],...ei!==null&&!Oc.has(ei)&&!wt?[{value:`custom`,label:String(ei)}]:[],...Dc.map(e=>({value:String(e),label:String(e)})),{value:`custom`,label:k(`models.custom`)}],onChange:e=>ni(e),disabled:ht,label:k(`models.v2ThreadsLabel`)}),wt&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`input`,{className:`input`,style:{width:100},inputMode:`numeric`,value:St,onChange:e=>Ct(e.target.value),onKeyDown:e=>{e.key===`Enter`&&ti(Number(St.replace(/[_,\s]/g,``)))},disabled:ht,"aria-label":k(`models.v2ThreadsLabel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:ht,onClick:()=>{ti(Number(St.replace(/[_,\s]/g,``)))},children:k(`models.v2ThreadsApply`)})]}),tt.enabled&&tt.agentsMaxThreadsConflict&&(0,Q.jsx)(`span`,{className:`mono text-label`,style:{color:`var(--err, #e5484d)`},children:k(`models.v2Conflict`)}),_t&&(0,Q.jsx)(`span`,{className:`muted text-label`,children:_t})]}),(0,Q.jsxs)(`div`,{className:`row models-cap-row`,children:[(0,Q.jsx)(`span`,{className:`muted text-control`,children:k(`models.contextCapLabel`)}),(0,Q.jsx)(cn,{value:ve?Ec:String(J),options:[...!Cc.has(J)&&!ve?[{value:String(J),label:Mc(J)}]:[],...Sc.map(e=>({value:String(e),label:Mc(e)})),{value:Ec,label:k(`models.custom`)}],onChange:e=>Ur(e),disabled:qe,label:k(`models.contextCapLabel`)}),ve&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`input`,{className:`input`,style:{width:160},inputMode:`numeric`,placeholder:k(`models.customPlaceholder`),value:ge,onChange:e=>_e(e.target.value),onKeyDown:e=>{e.key===`Enter`&&Wr()},disabled:qe,"aria-label":k(`models.customPlaceholder`)}),(0,Q.jsx)(`button`,{type:`button`,onClick:Wr,disabled:qe,className:`btn btn-ghost btn-sm`,children:k(`models.customApply`)})]}),(0,Q.jsx)(on,{on:zr,onClick:Gr,disabled:qe,label:k(`models.setAll`)}),(0,Q.jsx)(yC,{text:k(`models.setAllHint`,{value:Mc(J)})})]}),(0,Q.jsxs)(`div`,{className:`row models-cap-row`,"aria-busy":ce||pe.state.refreshing,children:[(0,Q.jsx)(`span`,{className:`muted text-control`,children:k(`models.pickerOrder.label`)}),(0,Q.jsx)(cn,{value:he,options:[{value:`default`,label:k(`models.pickerOrder.default`)},{value:`alphabetical`,label:k(`models.pickerOrder.alphabetical`)},{value:`provider`,label:k(`models.pickerOrder.provider`)},{value:`most-used`,label:k(`models.pickerOrder.mostUsed`)},{value:`custom`,label:k(`models.pickerOrder.custom`)}],onChange:e=>se(e),disabled:ce||!me||pe.state.showError,label:k(`models.pickerOrder.label`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void _i(),disabled:ce||!me||pe.state.showError||he===`custom`||he!=="default"&&me.pickerAvailable.length===0,children:k(ce?`models.pickerOrder.applying`:`models.pickerOrder.apply`)}),pe.state.showError&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{role:`alert`,children:k(`models.pickerOrder.loadFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>pe.refresh(),children:k(`models.pickerOrder.retry`)})]}),(0,Q.jsx)(yC,{text:k(`models.pickerOrder.hint`)})]}),(0,Q.jsx)(x_,{showOrderEditor:he===`custom`,apiBase:e,active:x,identities:N,onBusyChange:ue,onAccepted:e=>gi(e,!0),onSaved:()=>xr.refresh()}),lt&&(0,Q.jsxs)(`div`,{className:`card models-aliases-card`,"aria-label":k(`models.aliasesTable`),children:[(0,Q.jsx)(`div`,{className:`row group-head`,children:(0,Q.jsx)(`strong`,{children:k(`models.aliases`)})}),Object.entries(st.models).flatMap(([e,t])=>Object.entries(t).map(([t,n])=>(0,Q.jsxs)(`div`,{className:`row models-model-row`,children:[(0,Q.jsxs)(`code`,{className:`mono text-caption`,style:{flex:1},children:[e,`/`,t]}),(0,Q.jsx)(`strong`,{className:`mono text-control`,children:n.alias}),(0,Q.jsx)(`span`,{className:`models-chip muted text-caption`,children:n.source===`builtin`?k(`models.aliasAuto`):k(`models.aliasUser`)}),n.stale&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:k(`models.aliasStale`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":k(`models.editModelAlias`),onClick:()=>void en(e,t),children:(0,Q.jsx)(oe,{style:{width:13,height:13}})})]},`${e}/${t}`)))]})]}),yi=N.filter(e=>e.custom).length,bi=(0,Q.jsxs)(`div`,{className:`row models-collapse-controls`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:()=>Lr(!0),disabled:qe,children:[(0,Q.jsx)(Ke,{width:12,height:12,"aria-hidden":`true`}),` `,k(`models.collapseAll`)]}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:()=>Lr(!1),disabled:qe,children:[(0,Q.jsx)(Ke,{width:12,height:12,"aria-hidden":`true`,style:{transform:`rotate(90deg)`}}),` `,k(`models.expandAll`)]}),(0,Q.jsx)(yC,{text:k(`models.orderHint`)}),(0,Q.jsx)(vC,{count:yi,label:k(`models.customSummary`,{count:yi})})]}),xi=(0,Q.jsx)(Q.Fragment,{children:Dr.length===0&&(0,Q.jsx)(ln,{icon:(0,Q.jsx)(Ie,{}),title:k(`models.noRouted`),children:k(`models.noRoutedHint`)})}),Si=(0,Q.jsxs)(Q.Fragment,{children:[Et&&(0,Q.jsx)(`div`,{className:`modal-overlay`,role:`dialog`,"aria-modal":`true`,"aria-label":k(`models.v2Label`),onClick:()=>Dt(!1),onKeyDown:e=>{e.key===`Escape`&&Dt(!1)},children:(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{children:k(`models.v2Label`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>Dt(!1),"aria-label":k(`common.close`),children:`×`})]}),(0,Q.jsx)(`div`,{className:`modal-desc leading-relaxed`,style:{whiteSpace:`pre-line`},children:k(`models.v2Help`)}),(0,Q.jsx)(`div`,{className:`models-help-link`,children:(0,Q.jsx)(`a`,{className:`text-control`,href:`https://opencodex.me/guides/sub-agent-surface/`,target:`_blank`,rel:`noreferrer`,style:{color:`var(--accent)`},children:k(`models.v2DocsLink`)})}),(0,Q.jsx)(`div`,{className:`modal-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>Dt(!1),children:k(`common.ok`)})})]})}),In&&(0,Q.jsx)(`div`,{className:`modal-overlay`,role:`dialog`,"aria-modal":`true`,"aria-label":k(`models.contextSettings`),onClick:()=>{$n||Ln(null)},onKeyDown:e=>{e.key===`Escape`&&!$n&&Ln(null)},children:(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{children:k(`models.contextSettingsTitle`,{provider:be(In,k)})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>Ln(null),disabled:$n,"aria-label":k(`common.close`),children:`×`})]}),tr&&(0,Q.jsx)($,{tone:`err`,children:tr}),(0,Q.jsx)(`p`,{className:`modal-desc leading-relaxed`,children:k(`models.contextHint`)}),(0,Q.jsxs)(`div`,{className:`models-context-fields`,children:[(0,Q.jsxs)(`label`,{className:`text-label models-field`,children:[k(`models.contextDefault`),(0,Q.jsx)(`input`,{className:`input`,inputMode:`numeric`,value:Hn,onChange:e=>{Un(e.target.value),Qn(!0)},disabled:$n,placeholder:k(`models.contextAutomatic`),autoFocus:!0})]}),Rn.length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`text-label models-field`,children:[k(`models.contextModel`),(0,Q.jsx)(cn,{value:Bn,options:Rn.map(e=>({value:e,label:e})),onChange:Ar,disabled:$n,label:k(`models.contextModel`)})]}),(0,Q.jsxs)(`label`,{className:`text-label models-field`,children:[k(`models.contextModelOverride`),(0,Q.jsx)(`input`,{className:`input`,inputMode:`numeric`,value:vv(Wn,Bn)??``,onChange:e=>{Gn(t=>({...t,[Bn]:e.target.value})),Yn(e=>new Set(e).add(Bn))},disabled:$n,placeholder:k(`models.contextAutomatic`)})]})]})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>Ln(null),disabled:$n,children:k(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>void jr(),disabled:$n,children:k($n?`models.customSaving`:`models.customApply`)})]})]})}),At&&(0,Q.jsx)(`div`,{className:`modal-overlay`,role:`dialog`,"aria-modal":`true`,"aria-label":k(`models.customAdd`),onClick:()=>{Mn||jt(!1)},onKeyDown:e=>{e.key===`Escape`&&!Mn&&jt(!1)},children:(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{children:k(nn===`add`?`models.customAddTitle`:`models.customEditTitle`,{provider:be(an,k)})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>jt(!1),disabled:Mn,"aria-label":k(`common.close`),children:`×`})]}),Pn&&(0,Q.jsx)($,{tone:`err`,children:Pn}),(0,Q.jsxs)(`div`,{className:`models-field-stack`,children:[(0,Q.jsxs)(`label`,{className:`text-label models-field`,children:[k(`models.customFieldModelId`),(0,Q.jsx)(`input`,{className:`input`,value:pn,onChange:e=>mn(e.target.value),disabled:Mn,placeholder:k(`models.customFieldModelIdPlaceholder`),autoFocus:!0})]}),(0,Q.jsxs)(`label`,{className:`text-label models-field`,children:[k(`models.customFieldDisplayName`),(0,Q.jsx)(`input`,{className:`input`,value:_n,onChange:e=>vn(e.target.value),disabled:Mn,placeholder:k(`models.customFieldDisplayNamePlaceholder`)})]}),(0,Q.jsxs)(`label`,{className:`text-label models-field`,children:[k(`models.customFieldContext`),(0,Q.jsxs)(`div`,{className:`row models-field-row`,children:[(0,Q.jsx)(cn,{value:Cn?`custom`:xn,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:k(`models.custom`)}],onChange:e=>{if(e===`custom`){wn(!0);return}wn(!1),Sn(e)},disabled:Mn,label:k(`models.customFieldContext`)}),Cn&&(0,Q.jsx)(`input`,{className:`input`,style:{width:120},inputMode:`numeric`,value:xn,onChange:e=>Sn(e.target.value),disabled:Mn,placeholder:k(`models.customPlaceholder`),"aria-label":k(`models.customFieldContext`)})]})]}),(0,Q.jsxs)(`div`,{className:`text-label models-field`,children:[k(`models.customFieldModalities`),(0,Q.jsx)(`div`,{className:`row models-field-row`,children:[`text`,`image`,`audio`].map(e=>(0,Q.jsxs)(`label`,{className:`row models-modality-option`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:Tn.includes(e),onChange:t=>{En(n=>t.target.checked?[...n,e]:n.filter(t=>t!==e))},disabled:Mn}),(0,Q.jsx)(`span`,{className:`text-control`,children:e})]},e))})]}),(0,Q.jsxs)(`div`,{className:`text-label models-field`,children:[k(`models.customFieldReasoning`),(0,Q.jsx)(`div`,{className:`row models-field-row`,children:(0,Q.jsxs)(`label`,{className:`row models-modality-option`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:Dn,onChange:e=>{if(On(e.target.checked),e.target.checked&&!jn.current){jn.current=!0;let e=N.find(e=>e.provider===an&&e.id===pn),t=Array.isArray(e?.reasoningEfforts)?e.reasoningEfforts:void 0;An(t??[...xc])}},disabled:Mn}),(0,Q.jsx)(`span`,{className:`text-control`,children:k(`models.customFieldReasoningOverride`)})]})}),Dn&&(0,Q.jsx)(`div`,{className:`row models-field-row`,style:{flexWrap:`wrap`},children:xc.map(e=>(0,Q.jsxs)(`label`,{className:`row models-modality-option`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:kn.includes(e),onChange:t=>{An(n=>t.target.checked?[...n,e]:n.filter(t=>t!==e))},disabled:Mn}),(0,Q.jsx)(`span`,{className:`text-control`,children:k(`models.reasoningEffort.${e}`)})]},e))})]})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>jt(!1),disabled:Mn,children:k(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:Mn||!pn.trim(),onClick:()=>{let e=pn.trim(),t=_n.trim(),n=Rc(xn);if(n===void 0){Fn(k(`models.contextInvalid`));return}if(nn===`add`){let r=Dn?kn:void 0;si(an,e,t||void 0,n??void 0,Tn.length>0?Tn:void 0,r)}else ci(dn,{modelId:e,displayName:t,contextWindow:n,inputModalities:Tn,reasoningEfforts:Dn?kn:null})},children:k(Mn?`models.customSaving`:nn===`add`?`models.customAddBtn`:`models.customEditBtn`)})]})]})})]}),Ci=(0,Q.jsxs)(`div`,{className:`models-workspace-shell`,children:[Me&&(0,Q.jsxs)(`div`,{className:`action-toast notice ${Le?`notice-ok`:`notice-err`}`,role:`status`,"aria-live":`polite`,children:[Le?(0,Q.jsx)(Te,{}):(0,Q.jsx)(Ae,{}),(0,Q.jsx)(`span`,{children:Me})]}),Sr.showError&&(0,Q.jsx)($,{tone:`err`,children:k(`models.loadFail`)}),Pe.length>0&&(0,Q.jsx)(`div`,{className:`models-integration-warning`,children:(0,Q.jsxs)($,{tone:`warn`,children:[k(`models.integrationRefreshWarning`),(0,Q.jsx)(`ul`,{children:Pe.map(e=>(0,Q.jsxs)(`li`,{children:[e.client,e.profileId===void 0?``:`:${e.profileId}`,`: `,Ny(k,{clientId:e.client,message:e.reason===`integration_mutation_busy`?k(`integrations.error.busy`):e.reason,reason:e.refusalReason,snapshotPath:e.snapshotPath,residual:e.residual})]},`${e.client}:${e.profileId??`all`}`))})]})}),(0,Q.jsx)(_C,{title:k(`models.settingsPanel.title`),attentionLabel:k(`models.settingsPanel.attention`),warn:!!(tt?.enabled&&tt.agentsMaxThreadsConflict)||_t!==``||pe.state.showError,summary:gC(k,{multiAgentMode:tt?.multiAgentMode,v2Threads:ei,keepNativeOnV1:tt?.keepNativeChatGptOnV1===!0,shadowEnabled:cr?.enabled===!0,shadowModel:cr?.model,windowOn:zr,windowValue:J,newModelsOff:at?.policy===`off`,aliasesOn:st.defaults.global,autoReviewEnabled:He?.enabled===!0,autoReviewModel:He?.model,pickerMode:l_(me?.pickerAvailable??[],me?.pickerOrder??[],me?.pickerOrderMode)}),children:vi}),(0,Q.jsxs)(`div`,{className:`models-workspace-root`,"aria-busy":$e.pending||Sr.refreshing||void 0,children:[(0,Q.jsxs)(`aside`,{className:`models-workspace-rail`,"aria-label":k(`nav.models`),children:[(0,Q.jsxs)(`div`,{className:`models-workspace-rail-header`,children:[(0,Q.jsx)(`span`,{className:`models-workspace-rail-title`,children:k(`models.workspace.providers`)}),(0,Q.jsx)(`span`,{className:`models-workspace-rail-count`,children:Dr.length})]}),(0,Q.jsxs)(`div`,{className:`models-workspace-rail-list`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`models-workspace-rail-row${fr===null?` models-workspace-rail-row--selected`:``}`,onClick:()=>pr(null),"aria-current":fr===null?`true`:void 0,children:[(0,Q.jsx)(`span`,{className:`models-workspace-rail-name`,children:k(`models.workspace.allProviders`)}),(0,Q.jsx)(`span`,{className:`models-workspace-rail-meta`,children:k(`models.active`,{active:Mr,total:N.length})})]}),Dr.map(e=>{let{provider:t,rows:n}=e,r=n.filter(e=>et(pi,t,e.id,e.native===!0,L.has(e.namespaced))).length;return(0,Q.jsxs)(`button`,{type:`button`,className:`models-workspace-rail-row${fr===t?` models-workspace-rail-row--selected`:``}`,onClick:()=>pr(t),"aria-current":fr===t?`true`:void 0,children:[(0,Q.jsx)(`span`,{className:`models-workspace-rail-name`,children:be(t,k)}),(0,Q.jsx)(`span`,{className:`models-workspace-rail-meta`,children:k(`models.active`,{active:r,total:n.length})})]},t)})]})]}),(0,Q.jsxs)(`section`,{className:`models-workspace-main`,"aria-label":k(`models.workspace.mainAria`),children:[bi,(0,Q.jsx)(`div`,{className:`models-provider-list`,children:hi.map(e=>mi(e))}),Dr.length===0&&xi]})]}),Si]});return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`page-head`,children:[(0,Q.jsx)(`h2`,{children:k(`nav.models`)}),(0,Q.jsx)(`div`,{className:`page-head-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb`,onClick:()=>{m()},disabled:p,"aria-label":k(p?`dash.codexRestarting`:`dash.codexRestart`),title:k(p?`dash.codexRestarting`:`dash.codexRestart`),children:(0,Q.jsx)(re,{})})})]}),(0,Q.jsx)($g,{state:a,controller:{restarting:p,restart:m}}),(0,Q.jsx)(iC,{tab:h,onSelect:b,meta:Nr}),(0,Q.jsx)(`p`,{className:`page-sub`,children:k(SC[h])}),h===`catalog`&&(0,Q.jsx)(uC,{connected:n,catalogSyncedAt:r}),(0,Q.jsx)(`div`,{className:`models-tab-panel`,role:`tabpanel`,id:nC(`catalog`),"aria-labelledby":tC(`catalog`),hidden:h!==`catalog`,children:(0,Q.jsx)(By,{pageName:k(`models.tab.catalog`),title:k(`errorBoundary.title`),message:k(`errorBoundary.message`),detailsLabel:k(`errorBoundary.details`),reloadLabel:k(`errorBoundary.reload`),children:fi?(0,Q.jsx)(Ry,{label:k(`models.loading`),rows:5}):di===null?Ci:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)($,{tone:`err`,children:di}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>xr.refresh(),children:k(`common.retry`)})]})})}),(0,Q.jsx)(`div`,{className:`models-tab-panel models-tab-panel--fill`,role:`tabpanel`,id:nC(`combos`),"aria-labelledby":tC(`combos`),hidden:h!==`combos`,children:_.has(`combos`)&&(0,Q.jsx)(By,{pageName:k(`models.tab.combos`),title:k(`errorBoundary.title`),message:k(`errorBoundary.message`),detailsLabel:k(`errorBoundary.details`),reloadLabel:k(`errorBoundary.reload`),children:(0,Q.jsx)(Lb,{apiBase:e,active:h===`combos`,onCountChange:C})})}),(0,Q.jsx)(`div`,{className:`models-tab-panel`,role:`tabpanel`,id:nC(`routing`),"aria-labelledby":tC(`routing`),hidden:h!==`routing`,children:_.has(`routing`)&&(0,Q.jsx)(By,{pageName:k(`models.tab.routing`),title:k(`errorBoundary.title`),message:k(`errorBoundary.message`),detailsLabel:k(`errorBoundary.details`),reloadLabel:k(`errorBoundary.reload`),children:(0,Q.jsx)(Sx,{apiBase:e,active:h===`routing`,onCountChange:T})})}),(0,Q.jsx)(`div`,{className:`models-tab-panel`,role:`tabpanel`,id:nC(`compatibility`),"aria-labelledby":tC(`compatibility`),hidden:h!==`compatibility`,children:_.has(`compatibility`)&&(0,Q.jsx)(By,{pageName:k(`models.tab.compatibility`),title:k(`errorBoundary.title`),message:k(`errorBoundary.message`),detailsLabel:k(`errorBoundary.details`),reloadLabel:k(`errorBoundary.reload`),children:(0,Q.jsx)(XS,{apiBase:e,active:h===`compatibility`,onCountChange:D})})}),Mt&&(0,Q.jsx)(C_,{model:Mt,saving:zt,requestError:Vt,currentNamePending:Kt,mutationOutcomeUnknown:Wt?.confirmed===!1,onRetry:Wt?()=>void Er(Wt.value):void 0,onEdit:()=>Gt(null),onSave:e=>void Er(e),onReset:()=>void Er(null),onClose:Tr}),Pt&&(0,Q.jsx)(U_,{model:Pt,apiBase:e,onRefresh:e=>Cr(!0,e),onClose:()=>{let e=It.current;Ft(null),window.setTimeout(()=>{e?.isConnected&&e.focus()},0)}},`${e}/${Pt.namespaced}`),Lt&&(0,Q.jsx)(Z_,{row:Lt,apiBase:e,onRefresh:e=>Cr(!0,e),onFeedback:Ve,onClose:()=>Rt(null)},`${e}/${Lt.namespaced}`)]})}function wC(e){return[...new Set(e.filter(e=>!e.disabled&&!e.initialSelectionPending).map(e=>e.namespaced))]}function TC({apiBase:e,value:t,disabled:n,onChange:r}){let i=O(),a=Ya(`advisor-models:${e}`,[e],async t=>{let n=await fetch(`${e}/api/models`,{signal:t});if(!n.ok)throw Error(String(n.status));let r=await n.json();if(!Array.isArray(r)||!r.every(e=>e&&typeof e.namespaced==`string`&&e.namespaced.length>0))throw Error(`Invalid model catalog`);return r},{isEmpty:e=>e.length===0}),{state:o}=a,s=wC(o.data??[]),c=t!==``&&!s.includes(t),l=[{value:``,label:i(`advisor.modelClear`)},...c?[{value:t,label:t}]:[],...s.map(e=>({value:e,label:e}))];return(0,Q.jsxs)(`div`,{"aria-busy":o.showSkeleton||o.refreshing,children:[(0,Q.jsx)(cn,{id:`advisor-model`,value:t,options:l,label:i(`advisor.model`),describedBy:`advisor-model-hint`,disabled:n||o.showSkeleton,onChange:r}),(0,Q.jsx)(`p`,{id:`advisor-model-hint`,className:`muted setting-hint`,children:i(`advisor.modelHint`)}),o.showSkeleton&&(0,Q.jsx)($,{tone:`warn`,children:i(`common.loading`)}),o.showError&&!o.showSkeleton&&(0,Q.jsxs)($,{tone:`err`,children:[i(`advisor.modelsLoadFailed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:n,onClick:()=>a.refresh(),children:i(`common.retry`)})]}),!o.showSkeleton&&!o.showError&&s.length===0&&(0,Q.jsxs)($,{tone:`warn`,children:[i(`advisor.modelsEmpty`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:n,onClick:()=>a.refresh(),children:i(`common.retry`)})]}),!o.showSkeleton&&!o.showError&&c&&(0,Q.jsx)($,{tone:`warn`,children:i(`advisor.modelUnavailable`)})]})}function EC({entries:e}){let t=O();return e.length?(0,Q.jsx)(`div`,{className:`tbl-wrap`,children:(0,Q.jsxs)(`table`,{className:`tbl advisor-activity-table`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:t(`advisor.activity.started`)}),(0,Q.jsx)(`th`,{children:t(`advisor.activity.trigger`)}),(0,Q.jsx)(`th`,{children:t(`advisor.model`)}),(0,Q.jsx)(`th`,{children:t(`advisor.effort`)}),(0,Q.jsx)(`th`,{children:t(`advisor.activity.tokens`)}),(0,Q.jsx)(`th`,{children:t(`advisor.activity.duration`)})]})}),(0,Q.jsx)(`tbody`,{children:e.map(e=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{children:(0,Q.jsx)(`time`,{dateTime:new Date(e.startedAt).toISOString(),children:new Date(e.startedAt).toLocaleTimeString()})}),(0,Q.jsxs)(`td`,{children:[(0,Q.jsx)(`div`,{children:t(`advisor.activity.trigger.${e.trigger}`)}),(0,Q.jsx)(`span`,{className:e.status===`ok`?`badge badge-green`:`badge badge-muted`,children:t(`advisor.activity.status.${e.status}`)})]}),(0,Q.jsxs)(`td`,{children:[(0,Q.jsx)(`code`,{children:e.advisorModel}),(0,Q.jsx)(`div`,{className:`muted`,children:(0,Q.jsx)(`code`,{children:e.workerModel})})]}),(0,Q.jsx)(`td`,{children:(0,Q.jsxs)(`code`,{children:[e.requestedEffort,` → `,e.effectiveEffort??t(`logs.tokens.unreported`)]})}),(0,Q.jsx)(`td`,{className:`num`,children:e.usage?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{title:t(`logs.tokens.input`),children:e.usage.inputTokens??`—`}),` / `,(0,Q.jsx)(`span`,{title:t(`logs.tokens.output`),children:e.usage.outputTokens??`—`})]}):t(`logs.tokens.unreported`)}),(0,Q.jsx)(`td`,{className:`num`,children:e.durationMs===null?`—`:(0,Q.jsxs)(Q.Fragment,{children:[e.durationMs,` ms`]})})]},e.id))})]})}):(0,Q.jsx)(`p`,{className:`muted`,children:t(`advisor.activity.empty`)})}function DC({apiBase:e}){let t=O(),n=Ya(`advisor-activity:${e}`,[e],async t=>{let n=await fetch(`${e}/api/advisor/activity`,{signal:t});if(!n.ok)throw Error(String(n.status));return await n.json()},{isEmpty:e=>e.entries.length===0,pollMs:5e3,pauseWhenHidden:!0}),{state:r}=n;return(0,Q.jsxs)(`section`,{"aria-label":t(`advisor.activity.title`),children:[(0,Q.jsx)(`h3`,{children:t(`advisor.activity.title`)}),(0,Q.jsx)(`p`,{className:`muted`,children:t(`advisor.activity.note`)}),r.showSkeleton&&(0,Q.jsx)(`p`,{className:`muted`,children:t(`common.loading`)}),r.showError&&(0,Q.jsxs)($,{tone:`err`,children:[t(`advisor.activity.failed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>n.refresh(),children:t(`common.retry`)})]}),r.data&&(0,Q.jsx)(EC,{entries:r.data.entries})]})}var OC=[`low`,`medium`,`high`,`xhigh`,`max`,`ultra`];function kC({apiBase:e,initial:t}){let n=O(),[r,i]=(0,Z.useState)(t),[a,o]=(0,Z.useState)(t),[s,c]=(0,Z.useState)(!1),[l,u]=(0,Z.useState)(!1),[d,f]=(0,Z.useState)(``),p=(0,Z.useRef)(null);(0,Z.useEffect)(()=>()=>{p.current!==null&&(clearTimeout(p.current),p.current=null)},[]);let m=(0,Z.useCallback)(async()=>{p.current!==null&&(clearTimeout(p.current),p.current=null),u(!1),c(!0),f(``);let t=a;try{let n=await fetch(`${e}/api/advisor/settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:t.enabled,model:t.model,effort:t.effort,policy:t.policy,...t.maxConsultationsPerTask===void 0?{}:{maxConsultationsPerTask:t.maxConsultationsPerTask},timeoutMs:t.timeoutMs,contextSharingConsent:t.contextSharingConsent})});if(!n.ok){let e=await n.json().catch(()=>null);f(e?.error?.message??String(n.status));return}let r=await n.json();i(r.settings),o(e=>JSON.stringify(e)===JSON.stringify(t)?r.settings:e),u(!0),p.current=setTimeout(()=>{p.current=null,u(!1)},2500)}catch(e){f(e instanceof Error?e.message:String(e))}finally{c(!1)}},[e,a]),h=(0,Z.useCallback)(e=>{f(``),o(t=>({...t,...e}))},[]),g=JSON.stringify(a)!==JSON.stringify(r),_=a.enabled&&a.model.trim()===``,v=a.enabled&&a.model.trim()!==``&&a.contextSharingConsent!==`v1`;return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{marginTop:`0.75rem`},children:[(0,Q.jsxs)(`div`,{className:`advisor-editor-row`,children:[(0,Q.jsx)(`span`,{className:`advisor-editor-label`,children:n(`advisor.enabled`)}),(0,Q.jsxs)(`label`,{className:`toggle`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:a.enabled,disabled:s,"aria-label":n(`advisor.enabled`),onChange:e=>h({enabled:e.target.checked})}),(0,Q.jsx)(`span`,{className:`slider`,"aria-hidden":`true`})]})]}),(0,Q.jsxs)(`div`,{className:`advisor-editor-row`,children:[(0,Q.jsx)(`label`,{htmlFor:`advisor-model`,className:`advisor-editor-label`,children:n(`advisor.model`)}),(0,Q.jsx)(TC,{apiBase:e,value:a.model,disabled:s,onChange:e=>h({model:e})})]}),(0,Q.jsxs)(`div`,{className:`advisor-editor-row`,children:[(0,Q.jsx)(`label`,{htmlFor:`advisor-effort`,className:`advisor-editor-label`,children:n(`advisor.effort`)}),(0,Q.jsx)(`select`,{id:`advisor-effort`,value:a.effort,disabled:s,onChange:e=>h({effort:e.target.value}),children:OC.map(e=>(0,Q.jsx)(`option`,{value:e,children:n(`models.reasoningEffort.${e}`)},e))})]}),(0,Q.jsxs)(`div`,{className:`advisor-editor-row`,children:[(0,Q.jsx)(`label`,{htmlFor:`advisor-policy`,className:`advisor-editor-label`,children:n(`advisor.policy`)}),(0,Q.jsxs)(`select`,{id:`advisor-policy`,value:a.policy,disabled:s,onChange:e=>h({policy:e.target.value}),children:[(0,Q.jsx)(`option`,{value:`manual`,children:n(`advisor.policy.manual`)}),(0,Q.jsx)(`option`,{value:`preflight`,children:n(`advisor.policy.preflight`)}),(0,Q.jsx)(`option`,{value:`adaptive`,children:n(`advisor.policy.adaptive`)})]})]}),a.policy===`adaptive`&&(0,Q.jsxs)(`div`,{className:`advisor-editor-row`,children:[(0,Q.jsx)(`label`,{htmlFor:`advisor-task-limit`,className:`advisor-editor-label`,children:n(`advisor.taskLimit`)}),(0,Q.jsx)(`select`,{id:`advisor-task-limit`,value:a.maxConsultationsPerTask??3,disabled:s,onChange:e=>h({maxConsultationsPerTask:Number(e.target.value)}),children:[1,2,3].map(e=>(0,Q.jsx)(`option`,{value:e,children:e},e))})]}),a.policy===`adaptive`&&(0,Q.jsx)(`p`,{className:`muted`,children:n(`advisor.adaptiveNote`)}),(0,Q.jsx)(`div`,{style:{margin:`0.8rem 0`},children:(0,Q.jsxs)(`label`,{style:{display:`flex`,alignItems:`flex-start`,gap:`0.6rem`},children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:a.contextSharingConsent===`v1`,disabled:s,"aria-label":n(`advisor.consent.label`),onChange:e=>h({contextSharingConsent:e.target.checked?`v1`:null})}),(0,Q.jsx)(`span`,{children:n(`advisor.consent.label`)})]})}),(0,Q.jsxs)(`div`,{className:`advisor-editor-row`,children:[(0,Q.jsx)(`label`,{htmlFor:`advisor-timeout`,className:`advisor-editor-label`,children:n(`advisor.timeout`)}),(0,Q.jsx)(`input`,{id:`advisor-timeout`,type:`number`,min:1e3,max:6e5,value:a.timeoutMs,disabled:s,onChange:e=>{let t=e.target.value.trim();if(t===``)return;let n=Number(t);Number.isFinite(n)&&h({timeoutMs:n})}})]})]}),_&&(0,Q.jsx)($,{tone:`warn`,children:n(`advisor.warning.noModel`)}),v&&(0,Q.jsx)($,{tone:`warn`,children:n(`advisor.consent.required`)}),d&&(0,Q.jsx)($,{tone:`err`,children:d}),l&&(0,Q.jsx)($,{tone:`ok`,children:n(`advisor.saved`)}),(0,Q.jsx)(`div`,{style:{marginTop:`0.75rem`},children:(0,Q.jsx)(`button`,{type:`button`,className:`btn`,disabled:!g||s,onClick:()=>void m(),children:n(s?`common.loading`:`advisor.save`)})})]})}function AC({apiBase:e}){let t=O(),n=Ya(`advisor-settings:${e}`,[e],async t=>{let n=await fetch(`${e}/api/advisor/settings`,{signal:t});if(!n.ok)throw Error(String(n.status));return await n.json()},{isEmpty:()=>!1}),{state:r}=n,i=(0,Q.jsx)(`h2`,{children:t(`nav.advisor`)});return(0,Q.jsxs)(`section`,{className:`panel`,children:[i,(0,Q.jsx)(`p`,{className:`muted`,children:t(`advisor.description`)}),(0,Q.jsxs)(`details`,{className:`advisor-notices`,style:{margin:`0.5rem 0`},children:[(0,Q.jsx)(`summary`,{className:`muted text-label`,style:{cursor:`pointer`,padding:`2px 2px`},children:t(`advisor.notices`)}),(0,Q.jsx)($,{tone:`warn`,children:t(`advisor.costNote`)}),(0,Q.jsx)($,{tone:`warn`,children:t(`advisor.privacyNote`)}),(0,Q.jsx)($,{tone:`warn`,children:t(`advisor.disclosure`)})]}),r.showSkeleton&&(0,Q.jsx)($,{tone:`warn`,children:t(`common.loading`)}),r.showError&&!r.showSkeleton&&(0,Q.jsxs)($,{tone:`err`,children:[t(`advisor.loadFailed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>n.refresh(),children:t(`common.retry`)})]}),r.data!==void 0&&(0,Q.jsx)(kC,{apiBase:e,initial:r.data.settings},n.hasSucceeded?`ready`:`cold`),(0,Q.jsx)(DC,{apiBase:e})]})}function jC(e,t){let n=new Set(t);return[...new Set([...e.filter(e=>n.has(e)),...t])]}function MC({apiBase:e,roster:t}){let n=O(),[r,i]=(0,Z.useState)(null),[a,o]=(0,Z.useState)(``),[s,c]=(0,Z.useState)(!1),[l,u]=(0,Z.useState)(``),[d,f]=(0,Z.useState)(!1),[p,m]=(0,Z.useState)(0),[h,g]=(0,Z.useState)(null),_=s||h?.retry!==p||h.t!==n,v=(0,Z.useRef)(!1),y=(0,Z.useRef)(!1);(0,Z.useEffect)(()=>{y.current=!0,v.current=!0;let t=new AbortController,r=!1;return(async()=>{try{let a=await hn(await fetch(`${e}/api/subagent-models`,{signal:t.signal}),n(`sub.loadFail`));if(r)return;let s={force:a?.force??null,forceAvailable:a?.forceAvailable??[],forceStatus:a?.forceStatus??null};i(s),o(s.force??``),u(``)}catch{r||u(n(`sub.loadFail`))}finally{r||(v.current=!1,g({retry:p,t:n}))}})(),()=>{r=!0,y.current=!1,t.abort()}},[e,p,n]);async function b(t){if(!(!r||_||v.current)){v.current=!0,c(!0),u(``),f(!1);try{let r=await hn(await fetch(`${e}/api/subagent-models`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({force:t})}),n(`sub.saveFailed`));if(!y.current)return;i(e=>e&&{...e,force:r?.force??null,forceStatus:null}),o(r?.force??a),f(!0),m(e=>e+1)}catch{y.current&&u(n(`sub.saveFailed`))}finally{v.current=!1,y.current&&c(!1)}}}let x=jC(t,r?.forceAvailable??[]),S=r?.force??a,C=x.includes(S),w=r?.forceStatus;return(0,Q.jsxs)(`section`,{className:`panel`,children:[(0,Q.jsx)(`h3`,{children:n(`sub.forceTitle`)}),(0,Q.jsx)(on,{on:!!r?.force,disabled:!r||_||!r.force&&!C,label:n(`sub.forceTitle`),onClick:()=>{b(r?.force?null:a)}}),(0,Q.jsxs)(`label`,{className:`field-label`,children:[n(`sub.forceModel`),(0,Q.jsxs)(`select`,{className:`input`,value:S,disabled:!r||_,onChange:e=>{let t=e.target.value;r?.force?b(t):o(t)},children:[(0,Q.jsx)(`option`,{value:``,disabled:!0,children:n(`sub.forceChoose`)}),S&&!C&&(0,Q.jsx)(`option`,{value:S,disabled:!0,children:S}),x.map(e=>(0,Q.jsx)(`option`,{value:e,children:e},e))]})]}),(0,Q.jsx)(`p`,{className:`muted`,children:n(`sub.forceHelp`)}),(0,Q.jsx)(`p`,{className:`muted`,children:n(`sub.forceScope`)}),r?.force&&(!C||w?.targetValid===!1)&&(0,Q.jsx)($,{tone:`warn`,children:n(`sub.forceInvalid`)}),r?.force&&w?.support===`unsupported`&&(0,Q.jsx)($,{tone:`warn`,children:n(`sub.forceOld`)}),r?.force&&(!w||w.support===`unknown`)&&(0,Q.jsx)($,{tone:`warn`,children:n(`sub.forceUnknown`)}),r?.force&&w?.settingsOverride&&(0,Q.jsx)($,{tone:`warn`,children:n(`sub.forceOverride`)}),r?.force&&w?.settingsReadable===!1&&(0,Q.jsx)($,{tone:`warn`,children:n(`sub.forceSettingsUnknown`)}),d&&(0,Q.jsx)($,{tone:`ok`,children:n(`sub.forceSaved`)}),l&&(0,Q.jsxs)($,{tone:`err`,children:[l,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:_,onClick:()=>m(e=>e+1),children:n(`common.retry`)})]})]})}var NC=`section`;function PC(e,t){return[e,NC,t].join(`-`)}function FC(e){return[e,NC,``].join(`-`)}var IC=1200;function LC({scope:e,items:t,ariaLabel:n,mobileReadingLine:r}){let[i,a]=(0,Z.useState)(()=>r&&window.matchMedia(`(max-width: 760px)`).matches?r:72);(0,Z.useEffect)(()=>{if(!r)return;let e=window.matchMedia(`(max-width: 760px)`),t=()=>a(e.matches?r:72);return t(),e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[r]);let[o,s]=(0,Z.useState)(t[0]?.id??``),c=(0,Z.useRef)(null),l=(0,Z.useRef)(null),u=(0,Z.useCallback)(()=>{c.current=null,l.current!==null&&(clearTimeout(l.current),l.current=null)},[]),d=(0,Z.useCallback)(()=>{u();let n=null,r=1/0;for(let a of t){let t=document.getElementById(PC(e,a.id));if(!t)continue;let o=Math.abs(t.getBoundingClientRect().top-i);o<r&&(r=o,n=a.id)}n&&s(n)},[u,t,e,i]);(0,Z.useEffect)(()=>()=>u(),[u]),(0,Z.useEffect)(()=>{if(typeof IntersectionObserver>`u`)return;let n=t.map(t=>document.getElementById(PC(e,t.id))).filter(e=>e!==null);if(n.length===0)return;let r=new IntersectionObserver(t=>{let n=c.current;if(n){let r=document.getElementById(PC(e,n));t.some(e=>e.isIntersecting&&e.target===r)&&(u(),s(n));return}let r=t.filter(e=>e.isIntersecting).sort((e,t)=>e.boundingClientRect.top-t.boundingClientRect.top)[0];if(!r)return;let i=r.target.id.slice(FC(e).length);s(e=>e===i?e:i)},{rootMargin:[String(-i)+`px`,`0px`,`-60%`,`0px`].join(` `),threshold:0});for(let e of n)r.observe(e);return()=>r.disconnect()},[u,t,e,i]);let f=t=>{let n=document.getElementById(PC(e,t));n&&(c.current=t,l.current!==null&&clearTimeout(l.current),l.current=setTimeout(d,IC),s(t),n.scrollIntoView({behavior:`smooth`,block:`start`}))};return(0,Q.jsx)(`div`,{className:`page-tabs section-tabs`,role:`tablist`,"aria-label":n,children:t.map(t=>(0,Q.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":o===t.id,"aria-controls":PC(e,t.id),tabIndex:o===t.id?0:-1,className:`page-tab${o===t.id?` page-tab--active`:``}`,onClick:()=>f(t.id),children:[t.label,t.meta?(0,Q.jsx)(`span`,{className:`section-tab-meta`,children:t.meta}):null]},t.id))})}var RC=1500,zC={fast:`integrations.lazycodexRoles.auto.tierFast`,standard:`integrations.lazycodexRoles.auto.tierStandard`,frontier:`integrations.lazycodexRoles.auto.tierFrontier`},BC={glance:`integrations.lazycodexRoles.auto.effortGlance`,measured:`integrations.lazycodexRoles.auto.effortMeasured`,thorough:`integrations.lazycodexRoles.auto.effortThorough`,exhaustive:`integrations.lazycodexRoles.auto.effortExhaustive`};function VC({apiBase:e,model:t,effort:n,available:r,saving:i,onAccept:a}){let o=O(),[s,c]=(0,Z.useState)(``),[l,u]=(0,Z.useState)(!1),[d,f]=(0,Z.useState)(null),[p,m]=(0,Z.useState)(null),h=e=>{let t=r.find(t=>t.namespaced===e);return t?xe(`${t.provider}/${t.model}`,o):e},g=async()=>{u(!0),f(null);try{let t=await fetch(`${e}/api/injection-model/suggest`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({work:s.trim()})});m(await hn(t,o(`sub.suggest.failed`))??null)}catch(e){m(null),f(e instanceof Error&&e.message?e.message:o(`sub.suggest.failed`))}finally{u(!1)}},_=p?.proposal,v=!!_?.proposedModel&&_.proposedModel===t&&(_.proposedEffort??``)===n,y=l?o(`sub.suggest.running`):p?o(`sub.suggest.title`):``;return(0,Q.jsxs)(`div`,{className:`swi-suggest`,children:[(0,Q.jsx)(`div`,{className:`sr-only`,"aria-live":`polite`,"aria-atomic":`true`,children:y}),(0,Q.jsx)(`label`,{className:`swi-suggest-label`,htmlFor:`swi-suggest-work`,children:o(`sub.suggest.label`)}),(0,Q.jsxs)(`div`,{className:`swi-suggest-input`,children:[(0,Q.jsx)(`textarea`,{id:`swi-suggest-work`,className:`input`,rows:2,maxLength:RC,value:s,placeholder:o(`sub.suggest.placeholder`),onChange:e=>c(e.target.value),disabled:l}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:l||i||s.trim()===``,onClick:()=>void g(),children:o(l?`sub.suggest.running`:`sub.suggest.submit`)})]}),d&&(0,Q.jsx)($,{tone:`err`,children:d}),p&&_&&(0,Q.jsxs)(`section`,{className:`swi-suggest-result`,"aria-label":o(`sub.suggest.title`),children:[(0,Q.jsxs)(`div`,{className:`swi-suggest-head`,children:[_.tier&&_.effortIntent&&(0,Q.jsx)(`span`,{className:`font-semibold`,children:o(`integrations.lazycodexRoles.auto.tierEffort`,{tier:o(zC[_.tier]),effort:o(BC[_.effortIntent])})}),(0,Q.jsx)(`span`,{className:`muted setting-hint`,children:o(`integrations.lazycodexRoles.auto.sizedWith`,{model:p.sizingModel})})]}),p.sizingError&&(0,Q.jsx)($,{tone:`warn`,children:o(`integrations.lazycodexRoles.auto.sizingFailed`,{error:p.sizingError})}),_.status===`unsized`?(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:o(`integrations.lazycodexRoles.auto.unsized`,{reason:_.reason??``})}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`swi-suggest-change`,children:[(0,Q.jsxs)(`span`,{children:[_.model?h(_.model):o(`dash.injectionNone`),_.effort?` · ${_.effort}`:``]}),(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:`→`}),_.proposedModel?(0,Q.jsxs)(`strong`,{children:[h(_.proposedModel),_.proposedEffort?` · ${_.proposedEffort}`:``]}):(0,Q.jsx)(`span`,{className:`muted`,children:o(`integrations.lazycodexRoles.auto.unassigned`,{reason:_.reason??``})})]}),_.rationale&&(0,Q.jsx)(`p`,{children:_.rationale}),_.moveUpIf&&(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:o(`integrations.lazycodexRoles.auto.moveUp`,{text:_.moveUpIf})}),_.moveDownIf&&(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:o(`integrations.lazycodexRoles.auto.moveDown`,{text:_.moveDownIf})})]}),(0,Q.jsxs)(`div`,{className:`swi-suggest-actions`,children:[v?(0,Q.jsx)(`span`,{className:`swi-suggest-done`,children:o(`integrations.lazycodexRoles.auto.alreadySet`)}):_.status===`proposed`&&_.proposedModel&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:i,onClick:()=>a({model:_.proposedModel,effort:_.proposedEffort??null}),children:o(`sub.suggest.accept`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:i,onClick:()=>m(null),children:o(`integrations.lazycodexRoles.auto.discard`)})]})]})]})}function HC({apiBase:e,model:t,effort:n,efforts:r,available:i,guidanceEnabled:a,syncCodexDefaults:o,saving:s,onSave:c,ultraMode:l,ultraSaving:u,onUltraModeSave:d,ultraLoadFailed:f,onUltraModeRetry:p,fallback:m,fallbackPollMs:h,fallbackBusy:g,availableModels:_,onFallbackChange:v,onFallbackPollMsChange:y,onFallbackSave:b}){let x=O(),S=(l.hintText??``).trim().length>0,C=i.some(e=>e.namespaced===t&&(e.provider!==`openai`||e.namespaced!==e.model)),w=l.enabled||l.multiAgentMode!==`v1`&&!(l.multiAgentMode===`v2`&&l.keepNativeChatGptOnV1),T=!f&&l.loaded===!0&&C&&w,E=new Set(_),D=new Set(m),[k,A]=(0,Z.useState)(()=>({pollMs:h,text:String(h)}));Object.is(k.pollMs,h)||A({pollMs:h,text:Number.isFinite(h)?String(h):``});let j=(0,Z.useRef)(null),[M,N]=(0,Z.useState)(!1),[P,F]=(0,Z.useState)(()=>({models:m,rows:m.map((e,t)=>({model:e,id:t})),nextId:m.length})),I=P.rows;if(P.models!==m){let e=[...P.rows],t=P.nextId;I=m.map(n=>{let r=e.findIndex(e=>e.model===n);return r>=0?e.splice(r,1)[0]:{model:n,id:t++}}),F({models:m,rows:I,nextId:t})}let L=(0,Z.useRef)(null);(0,Z.useLayoutEffect)(()=>{let e=L.current;if(!e)return;L.current=null;let t=j.current?.querySelectorAll(`.swi-fallback-row`)[e.row],n=t?.querySelectorAll(`button[data-action]:not(:disabled)`);(Array.from(n??[]).find(t=>t.dataset.action===e.action)??t?.querySelector(`button:not(:disabled)`)??j.current?.querySelector(`button[role="combobox"]`))?.focus()},[m]);let R=Number.isInteger(h)&&h>=5e3&&h<=6e5,z=(e,t)=>{let n=[...m],r=e+t;if(g||r<0||r>=n.length)return;[n[e],n[r]]=[n[r],n[e]];let i=[...I];[i[e],i[r]]=[i[r],i[e]],F({...P,models:n,rows:i}),L.current={row:r,action:t===-1?`up`:`down`},v(n)};return(0,Q.jsxs)(`div`,{className:`swi-delegation`,children:[f&&(0,Q.jsxs)(`div`,{className:`swi-delegation-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-copy`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:x(`sub.ultraMode`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:x(`sub.ultraModeLoadFail`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:p,children:x(`common.retry`)})]}),(0,Q.jsxs)(`div`,{className:`swi-delegation-row swi-delegation-model-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-copy`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:x(`sub.delegation.model`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:x(`sub.delegation.modelHint`)})]}),(0,Q.jsxs)(`div`,{className:`swi-delegation-controls`,children:[(0,Q.jsx)(cn,{value:t,options:[{value:``,label:x(`dash.injectionNone`)},...i.map(e=>({value:e.namespaced,label:xe(`${e.provider}/${e.model}`,x)}))],onChange:e=>c({model:e||null,effort:n||null}),disabled:s,label:x(`dash.injectionLabel`),align:`right`}),t&&r.length>0&&(0,Q.jsx)(cn,{value:n,options:[{value:``,label:x(`dash.injectionEffortNone`)},...r.map(e=>({value:e,label:e}))],onChange:e=>c({model:t||null,effort:e||null}),disabled:s,label:x(`dash.injectionEffortLabel`),align:`right`}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-expanded":M,onClick:()=>N(e=>!e),children:x(`sub.suggest.button`)})]})]}),M&&(0,Q.jsx)(`div`,{className:`swi-delegation-row`,children:(0,Q.jsx)(VC,{apiBase:e,model:t,effort:n,available:i,saving:s,onAccept:c})}),T&&(0,Q.jsx)(`div`,{className:`swi-delegation-row swi-v2-compatibility`,role:`note`,children:(0,Q.jsxs)(`div`,{className:`setting-copy`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:x(`sub.v2Compatibility.title`)}),(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:x(`sub.v2Compatibility.risk`)}),(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:x(`sub.v2Compatibility.recoveryUnknown`)}),(0,Q.jsx)(`a`,{href:`https://github.com/lidge-jun/opencodex/issues/92`,target:`_blank`,rel:`noreferrer`,children:x(`sub.v2Compatibility.details`)})]})}),(0,Q.jsxs)(`div`,{className:`swi-delegation-row swi-fallback-editor`,children:[(0,Q.jsxs)(`div`,{className:`setting-copy`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:x(`sub.fallbackLabel`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:x(`sub.fallbackHint`)})]}),(0,Q.jsxs)(`div`,{className:`swi-fallback-controls`,ref:j,children:[m.map((e,t)=>(0,Q.jsxs)(`div`,{className:`swi-fallback-row`,children:[(0,Q.jsxs)(`span`,{className:`swi-fallback-model`,children:[t+1,`. `,e,!E.has(e)&&(0,Q.jsx)(`span`,{className:`muted setting-hint`,children:x(`sub.fallbackUnavailable`)})]}),(0,Q.jsxs)(`span`,{className:`swi-fallback-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon btn-sm`,"data-action":`up`,onClick:()=>z(t,-1),disabled:g||t===0,"aria-label":x(`sub.moveUp`,{m:e}),children:(0,Q.jsx)(Ge,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon btn-sm`,"data-action":`down`,onClick:()=>z(t,1),disabled:g||t===m.length-1,"aria-label":x(`sub.moveDown`,{m:e}),children:(0,Q.jsx)(Qe,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon btn-sm`,"data-action":`remove`,onClick:()=>{let e=m.filter((e,n)=>n!==t);F({...P,models:e,rows:I.filter((e,n)=>n!==t)}),L.current={row:Math.max(0,Math.min(t,m.length-2)),action:`remove`},v(e)},disabled:g,"aria-label":x(`sub.removeAria`,{m:e}),children:(0,Q.jsx)(ve,{})})]})]},I[t].id)),(0,Q.jsx)(cn,{value:``,label:x(`sub.fallbackAdd`),options:[{value:``,label:x(`sub.fallbackAdd`)},..._.filter(e=>!D.has(e)).map(e=>({value:e,label:e}))],onChange:e=>{e&&!D.has(e)&&v([...m,e])},disabled:g}),(0,Q.jsxs)(`label`,{className:`setting-hint`,children:[x(`sub.fallbackPoll`),(0,Q.jsx)(`input`,{className:`input`,type:`number`,min:5e3,max:6e5,step:1e3,value:k.text,onChange:e=>{let t=e.currentTarget.value,n=Number(t),r=t.trim()!==``&&Number.isFinite(n)?n:NaN;A({pollMs:r,text:t}),y(r)},disabled:g,"aria-invalid":!R}),` ms`]}),!R&&(0,Q.jsx)(`div`,{className:`setting-hint`,role:`alert`,children:x(`sub.fallbackPollInvalid`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:b,disabled:g||!R,children:x(`common.save`)})]})]}),(0,Q.jsxs)(`div`,{className:`swi-delegation-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-copy`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:x(`dash.syncCodexSubagentDefaults`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:x(`dash.syncCodexSubagentDefaultsHint`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`switch ${o?`on`:``}`,onClick:()=>c({syncCodexSubagentDefaults:!o}),disabled:s||!t,"aria-label":x(`dash.syncCodexSubagentDefaults`),"aria-pressed":o,children:(0,Q.jsx)(`span`,{className:`knob`})})]}),(0,Q.jsxs)(`details`,{className:`swi-advanced`,children:[(0,Q.jsx)(`summary`,{className:`muted text-label`,children:x(`sub.advanced`)}),(0,Q.jsxs)(`div`,{className:`swi-delegation-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-copy`,children:[(0,Q.jsxs)(`div`,{className:`font-semibold`,style:{display:`inline-flex`,alignItems:`center`,gap:6},children:[x(`models.v2Label`),(0,Q.jsxs)(un,{content:x(`models.v2Help`),side:`top`,maxWidth:380,children:[(0,Q.jsx)(we,{width:13,height:13,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:x(`models.v2Label`)})]})]}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:(0,Q.jsx)(`a`,{className:`text-control`,href:`https://opencodex.me/guides/sub-agent-surface/`,target:`_blank`,rel:`noreferrer`,style:{color:`var(--accent)`},children:x(`models.v2DocsLink`)})})]}),(0,Q.jsx)(`div`,{className:`swi-delegation-controls`,children:(0,Q.jsx)(`div`,{className:`segmented models-segmented`,role:`radiogroup`,"aria-label":x(`models.v2Label`),children:[`v1`,`default`,`v2`].map(e=>(0,Q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":l.multiAgentMode===e,className:`btn btn-sm${l.multiAgentMode===e?` btn-primary`:` btn-ghost`}`,style:{background:l.multiAgentMode===e?void 0:`transparent`,color:l.multiAgentMode===e?void 0:`var(--muted)`},disabled:u||f,onClick:()=>{l.multiAgentMode!==e&&d({multiAgentMode:e})},children:x(`models.v2Mode_${e}`)},e))})})]}),(0,Q.jsxs)(`div`,{className:`swi-delegation-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-copy`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:x(`dash.multiAgentGuidance`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:x(`dash.multiAgentGuidanceHint`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`switch ${a?`on`:``}`,onClick:()=>c({multiAgentGuidanceEnabled:!a}),disabled:s,"aria-label":x(`dash.multiAgentGuidance`),"aria-pressed":a,children:(0,Q.jsx)(`span`,{className:`knob`})})]}),(0,Q.jsxs)(`div`,{className:`swi-delegation-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-copy`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:x(`sub.ultraMode`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:x(`sub.ultraModeHint`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`switch ${S?`on`:``}`,onClick:()=>{S?d({multiAgentModeHintText:null}):l.recommendation&&d({multiAgentModeHintText:l.recommendation.text})},disabled:s||u||!S&&(!l.multiAgentV2Enabled||!l.recommendation),"aria-label":x(`sub.ultraMode`),"aria-pressed":S,children:(0,Q.jsx)(`span`,{className:`knob`})}),!l.multiAgentV2Enabled&&(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:x(`sub.ultraModeV2Required`)})]}),S&&(0,Q.jsx)(`div`,{className:`swi-delegation-row swi-ultra-mode-editor`,children:(0,Q.jsx)(UC,{initialHint:l.hintText??``,disabled:s||u,onSave:d,preset:l.recommendation?.text??null,labels:{text:x(`sub.ultraModeText`),preset:x(`sub.ultraModePreset`),save:x(`common.save`)}},l.hintText)})]})]})}function UC({initialHint:e,disabled:t,onSave:n,preset:r,labels:i}){let[a,o]=(0,Z.useState)(e);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`textarea`,{className:`input swi-ultra-mode-textarea`,value:a,onChange:e=>o(e.target.value),disabled:t,rows:4,"aria-label":i.text}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{r!==null&&o(r)},disabled:t||r===null,children:i.preset}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:()=>{a.trim().length!==0&&n({multiAgentModeHintText:a})},disabled:t||a.trim().length===0,children:i.save})]})}function WC({available:e,fallbackAvailable:t,chosen:n,onToggle:r,onMove:i,fallback:a,fallbackPollMs:o,fallbackBusy:s,onFallbackChange:c,onFallbackPollMsChange:l,onFallbackSave:u,delegation:d}){let f=O(),[p,m]=(0,Z.useState)(``),h=(0,Z.useMemo)(()=>new Set(n),[n]),g=n.length>=5,_=(0,Z.useMemo)(()=>{let t=p.trim().toLowerCase();return e.filter(e=>!t||e.toLowerCase().includes(t))},[e,p]),v=(0,Z.useMemo)(()=>[{id:`featured`,label:f(`sub.featured`),meta:`${n.length}/5`},{id:`models`,label:f(`sub.models`),meta:String(_.length)},{id:`settings`,label:f(`sub.settings`)}],[f,n.length,_.length]);return(0,Q.jsxs)(`div`,{className:`subagents-workspace-shell`,children:[(0,Q.jsx)(LC,{scope:`subagents`,items:v,ariaLabel:f(`sub.sections`)}),(0,Q.jsxs)(`div`,{className:`subagents-workspace-root`,children:[(0,Q.jsxs)(`section`,{id:PC(`subagents`,`featured`),className:`subagents-workspace-section`,"aria-label":f(`sub.featured`),children:[(0,Q.jsxs)(`div`,{className:`swi-featured-head`,children:[(0,Q.jsx)(`h2`,{className:`swi-featured-title`,children:f(`sub.featured`)}),(0,Q.jsxs)(`span`,{className:`swi-featured-count`,children:[n.length,`/`,5]}),(0,Q.jsxs)(un,{content:(0,Q.jsx)(T,{k:`sub.orderHint`,cmd:`spawn_agent`}),side:`bottom`,maxWidth:380,children:[(0,Q.jsx)(we,{width:14,height:14,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:f(`sub.orderHintAria`)})]})]}),n.length===0?(0,Q.jsx)(`div`,{className:`swi-featured-empty`,children:f(`sub.noneSelected`)}):(0,Q.jsx)(`div`,{className:`swi-featured-list`,children:n.map((e,t)=>(0,Q.jsxs)(`div`,{className:`swi-featured-row`,children:[(0,Q.jsx)(`span`,{className:`swi-featured-pos`,children:t+1}),(0,Q.jsx)(`span`,{className:`swi-featured-name`,children:_v(e)}),(0,Q.jsxs)(`span`,{className:`swi-featured-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon btn-sm`,onClick:()=>i(t,-1),disabled:t===0,"aria-label":f(`sub.moveUp`,{m:e}),children:(0,Q.jsx)(Ge,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon btn-sm`,onClick:()=>i(t,1),disabled:t===n.length-1,"aria-label":f(`sub.moveDown`,{m:e}),children:(0,Q.jsx)(Qe,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon btn-sm`,onClick:()=>r(e),"aria-label":f(`sub.removeAria`,{m:e}),style:{color:`var(--red)`},children:(0,Q.jsx)(ve,{})})]})]},e))})]}),(0,Q.jsxs)(`section`,{id:PC(`subagents`,`models`),className:`subagents-workspace-section`,"aria-label":f(`sub.models`),children:[(0,Q.jsxs)(`div`,{className:`swi-featured-head`,children:[(0,Q.jsx)(`h2`,{className:`swi-featured-title`,children:f(`sub.models`)}),(0,Q.jsx)(`span`,{className:`swi-featured-count`,children:_.length})]}),(0,Q.jsxs)(`div`,{className:`swi-picker-box`,children:[(0,Q.jsx)(`div`,{className:`subagents-workspace-rail-search`,children:(0,Q.jsx)(`input`,{className:`input`,value:p,onChange:e=>m(e.target.value),placeholder:f(`sub.search`),"aria-label":f(`sub.search`)})}),(0,Q.jsx)(`div`,{className:`subagents-workspace-rail-list`,children:_.length===0?(0,Q.jsx)(`span`,{className:`subagents-workspace-rail-empty`,children:f(`sub.noModels`)}):_.map(e=>{let t=h.has(e),i=t?n.indexOf(e)+1:null,a=!t&&g;return(0,Q.jsxs)(`div`,{className:`subagents-workspace-rail-row${t?` subagents-workspace-rail-row--selected`:``}`,children:[(0,Q.jsxs)(`span`,{className:`subagents-workspace-rail-row-main`,children:[(0,Q.jsx)(`span`,{className:`swi-rail-priority`,children:i??``}),(0,Q.jsx)(Ye,{className:`swi-rail-icon`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`subagents-workspace-rail-name`,children:_v(e)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`subagents-workspace-rail-toggle${t?` subagents-workspace-rail-toggle--on`:``}${a?` subagents-workspace-rail-toggle--disabled`:``}`,onClick:()=>{a||r(e)},disabled:a,"aria-pressed":t,"aria-label":f(t?`sub.workspace.removeFromFeatured`:`sub.workspace.addToFeatured`,{m:e}),title:t?f(`sub.workspace.removeFromFeatured`,{m:e}):g?f(`sub.workspace.featuredFull`):f(`sub.workspace.addToFeatured`,{m:e}),children:t?(0,Q.jsx)(Te,{style:{width:14,height:14}}):(0,Q.jsx)(N,{style:{width:14,height:14}})})]},e)})})]})]}),(0,Q.jsxs)(`section`,{id:PC(`subagents`,`settings`),className:`subagents-workspace-section`,"aria-label":f(`sub.settings`),children:[(0,Q.jsx)(`div`,{className:`swi-featured-head`,children:(0,Q.jsx)(`h2`,{className:`swi-featured-title`,children:f(`sub.settings`)})}),(0,Q.jsx)(HC,{apiBase:d.apiBase,model:d.model,effort:d.effort,efforts:d.efforts,available:d.available,guidanceEnabled:d.guidanceEnabled,syncCodexDefaults:d.syncCodexDefaults,saving:d.saving,onSave:d.onSave,ultraMode:d.ultraMode,ultraSaving:d.ultraSaving,onUltraModeSave:d.onUltraModeSave,ultraLoadFailed:d.ultraLoadFailed,onUltraModeRetry:d.onUltraModeRetry,fallback:a,fallbackPollMs:o,fallbackBusy:s,availableModels:t??e,onFallbackChange:c,onFallbackPollMsChange:l,onFallbackSave:u})]})]})]})}function GC(e){let[t,n]=(0,Z.useState)(!1),[r,i]=(0,Z.useState)(!1),[a,o]=(0,Z.useState)(``),[s,c]=(0,Z.useState)(``),[l,u]=(0,Z.useState)([]),[d,f]=(0,Z.useState)([]),[p,m]=(0,Z.useState)(!0),[h,g]=(0,Z.useState)(!1),_=(0,Z.useCallback)(e=>{let t=yo(e);m(t.multiAgentGuidanceEnabled),g(t.syncCodexSubagentDefaults),o(t.injectionModel),c(t.injectionEffort),Array.isArray(e.efforts)&&u(e.efforts),Array.isArray(e.available)&&f(e.available)},[]);return(0,Z.useEffect)(()=>{let t=!1;return(async()=>{try{let n=await Tn(await fetch(`${e}/api/injection-model`));if(t)return;_(n)}catch{}finally{t||n(!0)}})(),()=>{t=!0}},[e,_]),{loaded:t,saving:r,model:a,effort:s,efforts:l,available:d,guidanceEnabled:p,syncCodexDefaults:h,save:(0,Z.useCallback)(async t=>{if(!r){i(!0);try{if(!(await fetch(`${e}/api/injection-model`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)})).ok)throw Error(`injection save failed`);let n=await fetch(`${e}/api/injection-model`);_(await Tn(n))}catch{}finally{i(!1)}}},[e,_,r])}}var KC={enabled:!1,hintText:null,recommendation:null,multiAgentV2Enabled:!1,multiAgentMode:`default`};function qC(e){return Ua(e)}function JC({apiBase:e}){let t=O(),n=`ocx.subagents.v1:${e}`,r=qC(n),[i,a]=(0,Z.useState)(()=>r?.chosen??[]),[o,s]=(0,Z.useState)(()=>r?.fallback??[]),[c,l]=(0,Z.useState)(()=>r?.pollMs??6e4),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(()=>Array.isArray(r?.fallback)&&Number.isInteger(r?.pollMs)),[m,h]=(0,Z.useState)(()=>r?.fallbackAvailable),[g,_]=(0,Z.useState)(``),[v,y]=(0,Z.useState)(!0),b=(0,Z.useRef)(null),x=(0,Z.useRef)({fallback:r?.fallback,pollMs:r?.pollMs,fallbackAvailable:r?.fallbackAvailable}),S=(0,Z.useRef)(0),C=(0,Z.useRef)(0),w=(0,Z.useRef)(!1),T=(0,Z.useRef)(r),[E,D]=(0,Z.useState)(``),[k,A]=(0,Z.useState)(!1),j=(0,Z.useRef)(!1),M=(0,Z.useRef)(null),N=(0,Z.useRef)(i),P=(0,Z.useCallback)(e=>{N.current=e,a(e)},[]),F=GC(e),[I,L]=(0,Z.useState)(null),R=I?.apiBase===e,z=R?I.mode:KC,[B,V]=(0,Z.useState)(!1),[H,U]=(0,Z.useState)(null),[W,G]=(0,Z.useState)(!1),ee=(0,Z.useRef)(0),te=(0,Z.useRef)(e);(0,Z.useEffect)(()=>{te.current=e,ee.current++},[e]);let K=(0,Z.useCallback)(async n=>{if(te.current!==e)return!1;let r=++ee.current,i=await hn(await fetch(`${e}/api/v2`,{signal:n}),t(`sub.ultraModeLoadFail`));if(!i||n?.aborted||r!==ee.current||te.current!==e)return!1;G(!1);let a=i.multiAgentModeHintRecommendation,o=a&&typeof a.text==`string`&&a.text.trim().length>0&&typeof a.revision==`string`&&a.revision.trim().length>0?{text:a.text,revision:a.revision}:null;return L({apiBase:e,mode:{enabled:i.enabled??!1,loaded:!0,keepNativeChatGptOnV1:i.keepNativeChatGptOnV1===!0,hintText:i.multiAgentModeHintText??null,recommendation:o,multiAgentV2Enabled:i.enabled===!0&&i.multiAgentMode===`v2`,multiAgentMode:i.multiAgentMode??`default`}}),!0},[e,t]);(0,Z.useEffect)(()=>{let e=new AbortController;return(async()=>{await K(e.signal)})().catch(()=>{e.signal.aborted||(A(!1),G(!0),D(t(`sub.ultraModeLoadFail`)))}),()=>{e.abort()}},[K,t]);let q=async n=>{if(B||!R||te.current!==e)return;let r=e;V(!0),D(``);try{if(await hn(await fetch(`${e}/api/v2`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)}),t(`sub.ultraModeSaveFail`)),te.current!==r||!await K())return;A(!0),D(t(`sub.ultraModeSaved`))}catch(e){if(te.current!==r)return;A(!1),D(e instanceof Error&&e.message?e.message:t(`sub.networkError`))}finally{V(!1)}},ne=(0,Z.useCallback)(async()=>{try{if(!await K())return;A(!1),D(e=>e===t(`sub.ultraModeLoadFail`)?``:e)}catch{A(!1),G(!0),D(t(`sub.ultraModeLoadFail`))}},[K,t]),J=(0,Z.useCallback)(async()=>{b.current?.abort();let r=new AbortController;b.current=r;let{signal:i}=r,a=S.current;try{let r=await hn(await fetch(`${e}/api/subagent-model-fallback`,{signal:i}));if(!r||!Array.isArray(r.models)||!r.models.every(e=>typeof e==`string`&&e.trim())||typeof r.pollMs!=`number`||!Number.isInteger(r.pollMs)||r.pollMs<5e3||r.pollMs>6e5||!Array.isArray(r.available)||!r.available.every(e=>typeof e==`string`&&e.trim()))throw Error(t(`sub.loadFail`));if(i.aborted||a!==S.current||w.current)return;let o={fallback:r.models,pollMs:r.pollMs,fallbackAvailable:r.available};x.current=o,s(o.fallback),l(o.pollMs),h(o.fallbackAvailable),p(!0),_(``),T.current&&(T.current={...T.current,...o},qa(n,T.current))}catch(e){if(i.aborted||a!==S.current||w.current)return;p(!1),_(e instanceof Error&&!(e instanceof SyntaxError)?e.message:t(`sub.loadFail`))}finally{i.aborted||y(!1)}},[e,n,t]);(0,Z.useEffect)(()=>((async()=>{await J()})(),()=>{b.current?.abort()}),[J]);let Y=(0,Z.useCallback)(async r=>{let i=C.current,a=await hn(await fetch(`${e}/api/subagent-models`,{signal:r}),t(`sub.loadFail`));if(!a)throw Error(t(`sub.loadFail`));let o=a.available??[],s=new Set(o),c=i===C.current&&!j.current,l={...x.current,available:o,chosen:c?(a.chosen??[]).filter(e=>s.has(e)):T.current?.chosen??[]};if(r?.aborted)throw r.reason;return T.current=l,c&&P(l.chosen),qa(n,l),l},[e,n,P,t]),re=Ya(n,[e],Y,{isEmpty:()=>!1,initialData:r??void 0}),{state:ie}=re,X=re.refresh,ae=ie.data??r,oe=ae?.available??[],se=async r=>{if(M.current=r,j.current)return;j.current=!0,D(``);let i=null,a=r;for(;M.current;){let r=M.current;M.current=null;try{a=(await hn(await fetch(`${e}/api/subagent-models`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({models:r})}),t(`sub.saveFailed`)))?.applied??r,T.current={...T.current,available:oe,chosen:a},qa(n,T.current),i=null}catch(e){i=e}}if(C.current+=1,j.current=!1,i){P(T.current?.chosen??[]),A(!1),D(i instanceof Error&&i.message?i.message:t(`sub.networkError`));return}P(a),A(!0),D(t(`sub.saved`,{n:a.length,cmd:`ocx sync`}))},ce=e=>{C.current+=1,P(e),se(e)},le=e=>{let t=N.current;!t.includes(e)&&t.length>=5||ce(t.includes(e)?t.filter(t=>t!==e):[...t,e])},ue=(e,t)=>{let n=e+t,r=[...N.current];n<0||n>=r.length||([r[e],r[n]]=[r[n],r[e]],ce(r))},de=async()=>{if(!f||w.current||!Number.isInteger(c)||c<5e3||c>6e5)return;w.current=!0,S.current+=1;let r=e;d(!0),D(``);try{let i=await hn(await fetch(`${e}/api/subagent-model-fallback`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({models:o,pollMs:c})}),t(`sub.fallbackSaveFailed`));if(te.current!==r)return;if(!i||!Array.isArray(i.models)||typeof i.pollMs!=`number`)throw Error(t(`sub.fallbackSaveFailed`));S.current+=1,s(i.models),l(i.pollMs),x.current={...x.current,fallback:i.models,pollMs:i.pollMs};let a={available:oe,chosen:T.current?.chosen??[],...x.current};T.current=a,qa(n,a),A(!0),D(t(`sub.fallbackSaved`))}catch(e){A(!1),D(e instanceof Error&&e.message?e.message:t(`sub.networkError`))}finally{w.current=!1,d(!1)}};if(ie.showSkeleton&&!ae)return(0,Q.jsx)(Ry,{label:t(`sub.loading`),rows:4});if(ie.kind===`failed-cold`){let e=ie.error instanceof Error?ie.error.message:t(`sub.loadFail`);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)($,{tone:`err`,children:e}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>X(),children:t(`common.retry`)})]})}return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`page-head`,children:(0,Q.jsx)(`h2`,{children:t(`nav.subagents`)})}),E&&(0,Q.jsx)($,{tone:k?`ok`:`err`,children:E}),ie.showError&&(0,Q.jsx)($,{tone:`err`,children:t(`sub.loadFail`)}),g&&(0,Q.jsxs)($,{tone:`err`,children:[t(`sub.fallbackLabel`),`: `,t(`sub.loadFail`),g!==t(`sub.loadFail`)&&(0,Q.jsxs)(Q.Fragment,{children:[` `,g]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:v,onClick:()=>{y(!0),J()},children:t(`common.retry`)})]}),(0,Q.jsx)(MC,{apiBase:e,roster:i},e),(0,Q.jsx)(WC,{available:oe,fallbackAvailable:m??[],chosen:i,onToggle:le,onMove:ue,fallback:o,fallbackPollMs:c,fallbackBusy:u||!f,onFallbackChange:e=>{S.current+=1,s(e)},onFallbackPollMsChange:e=>{S.current+=1,l(e)},onFallbackSave:()=>{de()},delegation:{apiBase:e,model:F.model,effort:F.effort,efforts:F.efforts,available:F.available,guidanceEnabled:F.guidanceEnabled,syncCodexDefaults:F.syncCodexDefaults,saving:F.saving,onSave:e=>{F.save(e)},ultraMode:z,ultraSaving:B||!R,onUltraModeSave:t=>{if(t.multiAgentMode==="default"||t.multiAgentMode===`v2`){U({mode:t.multiAgentMode,apiBase:e});return}q(t)},ultraLoadFailed:W,onUltraModeRetry:()=>{ne()}}}),H&&H.apiBase===e&&(0,Q.jsx)(sr,{reason:`selection`,mode:H.mode,docsUrl:`https://opencodex.me/guides/subagent-v1-default/`,busy:B,onContinue:()=>{let e=H.mode;U(null),q({multiAgentMode:e,multiAgentSurfaceAdvisoryAcknowledged:!0})},onChooseV1:()=>{U(null),z.multiAgentMode!==`v1`&&q({multiAgentMode:`v1`,multiAgentSurfaceAdvisoryAcknowledged:!0})},onDismiss:()=>U(null)})]})}function YC(e,t,n){let r=Array(e);return new Proxy(r,{get(r,i,a){if(typeof i==`string`){let a=i.charCodeAt(0);if(a>=48&&a<=57){let a=+i;if(Number.isInteger(a)&&a>=0&&a<e){let e=r[a];if(!e){let i=t[a*2];e=r[a]={index:a,key:n(a),start:i,size:t[a*2+1],end:i+t[a*2+1],lane:0}}return e}}if(i===`length`)return e}return Reflect.get(r,i,a)}})}function XC(e,t,n){let r=n.initialDeps??[],i,a=!0;function o(){let o=e();return o.length!==r.length||o.some((e,t)=>r[t]!==e)?(r=o,i=t(...o),n?.onChange&&!(a&&n.skipInitialOnChange)&&n.onChange(i),a=!1,i):i}return o.updateDeps=e=>{r=e},o}function ZC(e,t){if(e===void 0)throw Error(`Unexpected undefined${t?`: ${t}`:``}`);return e}var QC=(e,t)=>Math.abs(e-t)<1.01,$C=(e,t,n)=>{let r;return function(...i){e.clearTimeout(r),r=e.setTimeout(()=>t.apply(this,i),n)}},ew,tw=()=>{if(ew!==void 0)return ew;if(typeof navigator>`u`)return ew=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return ew=!0;let e=navigator.maxTouchPoints;return ew=navigator.platform===`MacIntel`&&e!==void 0&&e>0},nw=e=>{let{offsetWidth:t,offsetHeight:n}=e;return{width:t,height:n}},rw=e=>e,iw=e=>{let t=Math.max(e.startIndex-e.overscan,0),n=Math.min(e.endIndex+e.overscan,e.count-1)-t+1,r=Array(n);for(let e=0;e<n;e++)r[e]=t+e;return r},aw=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=e=>{let{width:n,height:r}=e;t({width:Math.round(n),height:Math.round(r)})};if(i(nw(n)),!r.ResizeObserver)return()=>{};let a=new r.ResizeObserver(t=>{let r=()=>{let e=t[0];if(e?.borderBoxSize){let t=e.borderBoxSize[0];if(t){i({width:t.inlineSize,height:t.blockSize});return}}i(nw(n))};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return a.observe(n,{box:`border-box`}),()=>{a.unobserve(n)}},ow={passive:!0},sw=typeof window>`u`||`onscrollend`in window,cw=(e,t,n)=>{let r=e.scrollElement;if(!r)return;let i=e.targetWindow;if(!i)return;let a=e.options.useScrollendEvent&&sw,o=0,s=a?null:$C(i,()=>t(o,!1),e.options.isScrollingResetDelay),c=e=>()=>{o=n(r),s?.(),t(o,e)},l=c(!0),u=c(!1);return r.addEventListener(`scroll`,l,ow),a&&r.addEventListener(`scrollend`,u,ow),()=>{r.removeEventListener(`scroll`,l),a&&r.removeEventListener(`scrollend`,u)}},lw=(e,t)=>cw(e,t,t=>{let{horizontal:n,isRtl:r}=e.options;return n?t.scrollLeft*(r&&-1||1):t.scrollTop}),uw=(e,t,n)=>{if(n.options.useCachedMeasurements){let t=n.indexFromElement(e),r=n.options.getItemKey(t);return n.itemSizeCache.get(r)??n.options.estimateSize(t)}if(t?.borderBoxSize){let e=t.borderBoxSize[0];if(e)return Math.round(e[n.options.horizontal?`inlineSize`:`blockSize`])}if(!t){let t=n.indexFromElement(e),r=n.options.getItemKey(t),i=n.itemSizeCache.get(r);if(i!==void 0)return i}return e[n.options.horizontal?`offsetWidth`:`offsetHeight`]},dw=(e,{adjustments:t=0,behavior:n},r)=>{var i,a;(a=(i=r.scrollElement)?.scrollTo)==null||a.call(i,{[r.options.horizontal?`left`:`top`]:e+t,behavior:n})},fw=class{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var e;return((e=this.targetWindow?.performance)?.now)?.call(e)??Date.now()},this.observer=(()=>{let e=null,t=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(e=>{e.forEach(e=>{let t=()=>{let t=e.target,n=this.indexFromElement(t);if(!t.isConnected){this.observer.unobserve(t);for(let[e,n]of this.elementsCache)if(n===t){this.elementsCache.delete(e);break}return}this.shouldMeasureDuringScroll(n)&&this.resizeItem(n,this.options.measureElement(t,e,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(t):t()})}));return{disconnect:()=>{var n;(n=t())==null||n.disconnect(),e=null},observe:e=>t()?.observe(e,{box:`border-box`}),unobserve:e=>t()?.unobserve(e)}})(),this.range=null,this.setOptions=e=>{let t={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:rw,rangeExtractor:iw,onChange:()=>{},measureElement:uw,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:`data-index`,initialMeasurementsCache:[],lanes:1,anchorTo:`start`,followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:`estimate`,useCachedMeasurements:!1};for(let n in e){let r=e[n];r!==void 0&&(t[n]=r)}let n=this.options,r=null,i=null,a=!1;if(n!==void 0&&n.enabled&&t.enabled&&t.anchorTo===`end`&&this.scrollElement!==null){let e=n.count,o=t.count,s=this.getMeasurements(),c=e>0?s[0]?.key??n.getItemKey(0):null,l=e>0?s[e-1]?.key??n.getItemKey(e-1):null;if(o!==e||e>0&&o>0&&(t.getItemKey(0)!==c||t.getItemKey(o-1)!==l)){a=!0;let c=e>0?this.getVirtualItemForOffset(this.getScrollOffset())??s[0]:null;c&&(r=[c.key,this.getScrollOffset()-c.start]);let u=t.followOnAppend===!0?`auto`:t.followOnAppend||null;u&&o>e&&this.isAtEnd(n.scrollEndThreshold)&&(e===0||t.getItemKey(o-1)!==l)&&(i=u)}}this.options=t,a&&(this.pendingMin=0,this.itemSizeCacheVersion++);let o=!1,s=0;if(r&&this.scrollOffset!==null){let[e,t]=r,n=this.getMeasurements(),{count:i,getItemKey:a}=this.options,c=0;for(;c<i&&a(c)!==e;)c++;if(c<i){let e=n[c];if(e){let n=Math.max(0,e.start+t);n!==this.scrollOffset&&(s=n-this.scrollOffset,this.scrollOffset=n,o=!0)}}}(o||i)&&(this.pendingScrollAnchor=[o?r[0]:null,o?r[1]:0,i,s])},this.notify=e=>{var t,n;(n=(t=this.options).onChange)==null||n.call(t,this,e)},this.maybeNotify=XC(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{let e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}if(this.scrollElement=e,this.targetWindow=this.scrollElement&&`ownerDocument`in this.scrollElement?this.scrollElement.ownerDocument.defaultView:this.scrollElement?.window??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{if(t&&this._intendedScrollOffset===null&&e===this.scrollOffset)return;this._intendedScrollOffset!==null&&Math.abs(e-this._intendedScrollOffset)<1.5&&(e=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0;let n=this.getScrollOffset();this.scrollDirection=t?n===e?this.scrollDirection:n<e?`forward`:`backward`:null,this.scrollOffset=e,this.isScrolling=t,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),`addEventListener`in this.scrollElement){let e=this.scrollElement,t=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},n=()=>{this._iosTouching=!1,!(!tw()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};e.addEventListener(`touchstart`,t,ow),e.addEventListener(`touchend`,n,ow),this.unsubs.push(()=>{e.removeEventListener(`touchstart`,t),e.removeEventListener(`touchend`,n),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}let t=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,t&&this.scrollElement&&this.options.enabled){let[e,n,r,i]=t;e!==null&&!r&&(tw()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?i!==0&&(this._iosDeferredAdjustment+=i):this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})),r&&this.scrollToEnd({behavior:r})}},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;let e=this.getScrollOffset(),t=this.getMaxScrollOffset();if(e<0||e>t)return;if(this._iosDeferredAdjustment<0&&e>=t-1){this._iosDeferredAdjustment=0;return}let n=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(e,{adjustments:this.scrollAdjustments+=n,behavior:void 0})},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?`width`:`height`]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset==`function`?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getMeasurementOptions=XC(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode,this.options.gap],(e,t,n,r,i,a,o,s)=>(this.prevLanes!==void 0&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMin=null,{count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o,gap:s}),{key:!1}),this.getMeasurements=XC(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o,gap:s},c)=>{let l=this.itemSizeCache;if(!i)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(let t of this.laneAssignments.keys())t>=e&&this.laneAssignments.delete(t);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));let u=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1),a===1){let i=e*2,a=this._flatMeasurements;if(!a||a.length<i){let e=new Float64Array(i);a&&u>0&&e.set(a.subarray(0,u*2)),a=e,this._flatMeasurements=a}let o;if(u===0)o=t+n;else{let e=u-1;o=a[e*2]+a[e*2+1]+s}for(let t=u;t<e;t++){let e=r(t),n=l.get(e),i=typeof n==`number`?n:this.options.estimateSize(t);a[t*2]=o,a[t*2+1]=i,o+=i+s}let c=YC(e,a,r);return this.measurementsCache=c,c}let d=this.measurementsCache.slice(0,u),f=Array(a).fill(void 0),p=new Float64Array(a),m=0;for(let e=0;e<u;e++){let t=d[e];t&&(f[t.lane]===void 0&&m++,f[t.lane]=e,p[t.lane]=t.end)}for(let i=u;i<e;i++){let e=r(i),c=this.laneAssignments.get(i),u,h,g=o===`estimate`||l.has(e);if(c!==void 0&&this.options.lanes>1){u=c;let e=f[u],r=e===void 0?void 0:d[e];h=r?r.end+s:t+n}else if(m===a){let e=0,t=p[0],n=f[0];for(let r=1;r<a;r++){let i=p[r];(i<t||i===t&&f[r]<n)&&(e=r,t=i,n=f[r])}u=e,h=t+s,g&&this.laneAssignments.set(i,u)}else u=i%this.options.lanes,h=t+n,g&&this.laneAssignments.set(i,u);let _=l.get(e),v=typeof _==`number`?_:this.options.estimateSize(i),y=h+v;d[i]={index:i,start:h,size:v,end:y,key:e,lane:u},f[u]===void 0&&m++,f[u]=i,p[u]=y}return this.measurementsCache=d,d},{key:!1,debug:()=>this.options.debug}),this.calculateRange=XC(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>e.length===0||t===0?(this.range=null,null):(this.range=hw(e,t,n,r,r===1&&this._flatMeasurements!=null?this._flatMeasurements:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=XC(()=>{let e=null,t=null,n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,n,r,i)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:t,count:n}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{if(!this.scrollState||this.scrollState.behavior!==`smooth`)return!0;let t=this.scrollState.index??this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)?.index;if(t!==void 0&&this.range){let n=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,t-n),i=Math.min(this.options.count-1,t+n);return e>=r&&e<=i}return!0},this.measureElement=e=>{if(!e){this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});return}let t=this.indexFromElement(e),n=this.options.getItemKey(t),r=this.elementsCache.get(n);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.elementsCache.set(n,e)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{if(e<0||e>=this.options.count)return;let n,r,i,a=this._flatMeasurements;if(this.options.lanes===1&&a!==null)i=this.options.getItemKey(e),r=a[e*2],n=a[e*2+1];else{let t=this.measurementsCache[e];if(!t)return;i=t.key,r=t.start,n=t.size}let o=this.itemSizeCache.get(i)??n,s=t-o;if(s!==0){let a=this.options.anchorTo===`end`&&this.scrollState?.behavior!==`smooth`&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,c=a?this.getTotalSize():0,l=this.getScrollOffset()+this.scrollAdjustments,u=this.itemSizeCache.has(i)?r+o<=l&&this.scrollDirection!==`backward`:r<l,d=this.scrollState?.behavior!==`smooth`&&(this.shouldAdjustScrollPositionOnItemSizeChange===void 0?u:this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[e]??{index:e,key:i,start:r,size:n,end:r+n,lane:0},s,this));(this.pendingMin===null||e<this.pendingMin)&&(this.pendingMin=e),this.itemSizeCache.set(i,t),this.itemSizeCacheVersion++;let f=!1;a?f=this.applyScrollAdjustment(this.getTotalSize()-c):d&&(f=this.applyScrollAdjustment(s)),this.notify(f)}},this.getVirtualItems=XC(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{let n=[];for(let r=0,i=e.length;r<i;r++){let i=t[e[r]];n.push(i)}return n},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{let t=this.getMeasurements();if(t.length===0)return;let n=this._flatMeasurements,r=this.options.lanes===1&&n!=null;return ZC(t[pw(0,t.length-1,r?e=>n[e*2]:e=>ZC(t[e]).start,e)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if(`scrollHeight`in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{let e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getVirtualDistanceFromEnd=()=>Math.max(this.getTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(e=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=e,this.getOffsetForAlignment=(e,t,n=0)=>{if(!this.scrollElement)return 0;let r=this.getSize(),i=this.getScrollOffset();t===`auto`&&(t=e>=i+r?`end`:`start`),t===`center`?e+=(n-r)/2:t===`end`&&(e-=r);let a=this.getMaxScrollOffset();return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,t=`auto`)=>{e=Math.max(0,Math.min(e,this.options.count-1));let n=this.getSize(),r=this.getScrollOffset(),i=this.measurementsCache[e];if(!i)return;if(t===`auto`){if(i.end>=r+n-this.options.scrollPaddingEnd)t=`end`;else if(i.start<=r+this.options.scrollPaddingStart)t=`start`;else return[r,t]}if(t===`end`&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];let a=t===`end`?i.end+this.options.scrollPaddingEnd:i.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,t,i.size),t]},this.scrollToOffset=(e,{align:t=`start`,behavior:n=`auto`}={})=>{this._iosDeferredAdjustment=0;let r=this.getOffsetForAlignment(e,t),i=this.now();this.scrollState={index:null,align:t,behavior:n,startedAt:i,lastTargetOffset:r,stableFrames:0},this._scrollToOffset(r,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:t=`auto`,behavior:n=`auto`}={})=>{this._iosDeferredAdjustment=0,e=Math.max(0,Math.min(e,this.options.count-1));let r=this.getOffsetForIndex(e,t);if(!r)return;let[i,a]=r,o=this.now();this.scrollState={index:e,align:a,behavior:n,startedAt:o,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:t=`auto`}={})=>{let n=this.getScrollOffset()+e,r=this.now();this.scrollState={index:null,align:`start`,behavior:t,startedAt:r,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:t}),this.scheduleScrollReconcile()},this.scrollToEnd=({behavior:e=`auto`}={})=>{if(this.options.count>0){this.scrollToIndex(this.options.count-1,{align:`end`,behavior:e});return}this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:e})},this.getTotalSize=()=>{let e=this.getMeasurements(),t;if(e.length===0)t=this.options.paddingStart;else if(this.options.lanes===1){let n=e.length-1,r=this._flatMeasurements;t=r==null?e[n]?.end??0:r[n*2]+r[n*2+1]}else{let n=Array(this.options.lanes).fill(null),r=e.length-1;for(;r>=0&&n.some(e=>e===null);){let t=e[r];n[t.lane]===null&&(n[t.lane]=t.end),r--}t=Math.max(...n.filter(e=>e!==null))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{let e=[];if(this.itemSizeCache.size===0)return e;let t=this.getMeasurements();for(let n of t)n&&this.itemSizeCache.has(n.key)&&e.push({index:n.index,key:n.key,start:n.start,size:n.size,end:n.end,lane:n.lane});return e},this._scrollToOffset=(e,{adjustments:t,behavior:n})=>{this._intendedScrollOffset=e+(t??0),this.options.scrollToFn(e,{behavior:n,adjustments:t},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(e)}applyScrollAdjustment(e,t){return e===0?!1:tw()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?(this._iosDeferredAdjustment+=e,!1):(this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=e,behavior:t}),this.scrollOffset!==null&&(this.scrollOffset+=this.scrollAdjustments,this.scrollOffset<0&&(this.scrollOffset=0),this.scrollAdjustments=0),!0)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId??=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()})}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}let e=this.scrollState.index==null?void 0:this.getOffsetForIndex(this.scrollState.index,this.scrollState.align),t=e?e[0]:this.scrollState.lastTargetOffset,n=t!==this.scrollState.lastTargetOffset;if(!n&&QC(t,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=1){this.getScrollOffset()!==t&&this._scrollToOffset(t,{adjustments:void 0,behavior:`auto`}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,n){let e=this.getSize()||600,n=Math.abs(t-this.getScrollOffset()),r=this.scrollState.behavior===`smooth`&&n>e;this.scrollState.lastTargetOffset=t,r||(this.scrollState.behavior=`auto`),this._scrollToOffset(t,{adjustments:void 0,behavior:r?`smooth`:`auto`})}this.scheduleScrollReconcile()}},pw=(e,t,n,r)=>{for(;e<=t;){let i=(e+t)/2|0,a=n(i);if(a<r)e=i+1;else if(a>r)t=i-1;else return i}return e>0?e-1:0};function mw(e,t,n){let r=0;for(;r<=t;){let i=(r+t)/2|0,a=e[i*2];if(a<n)r=i+1;else if(a>n)t=i-1;else return i}return r>0?r-1:0}function hw(e,t,n,r,i){let a=e.length-1;if(e.length<=r)return{startIndex:0,endIndex:a};if(r===1&&i!==null){let e=mw(i,a,n),r=e,o=n+t;for(;r<a&&i[r*2]+i[r*2+1]<o;)r++;return{startIndex:e,endIndex:r}}let o=pw(0,a,t=>e[t].start,n),s=o;if(r===1)for(;s<a&&e[s].end<n+t;)s++;else if(r>1){let i=Array(r).fill(0);for(;s<a&&i.some(e=>e<n+t);){let t=e[s];i[t.lane]=t.end,s++}let c=Array(r).fill(n+t);for(;o>=0&&c.some(e=>e>=n);){let t=e[o];c[t.lane]=t.start,o--}o=Math.max(0,o-o%r),s=Math.min(a,s+(r-1-s%r))}return{startIndex:o,endIndex:s}}var gw=typeof document<`u`?Z.useLayoutEffect:Z.useEffect;function _w({useFlushSync:e=!0,directDomUpdates:t=!1,directDomUpdatesMode:n=`transform`,...r}){let i=Z.useReducer(e=>e+1,0)[1],a=Z.useRef({enabled:t,mode:n,container:null,lastSize:null,lastPositions:new WeakMap,prevRange:null});a.current.enabled=t,a.current.mode=n;let o=e=>{let t=a.current;if(!t.enabled||!t.container)return;let n=e.getTotalSize();if(n!==t.lastSize){t.lastSize=n;let r=e.options.horizontal?`width`:`height`;t.container.style[r]=`${n}px`}},s=e=>{let t=a.current;if(!t.enabled||!t.container)return;o(e);let n=!!e.options.horizontal,r=t.mode===`transform`,i=n?`left`:`top`,s=e.options.scrollMargin,c=e.getVirtualItems();for(let a of c){let o=a.start-s,c=e.elementsCache.get(a.key);c&&t.lastPositions.get(c)!==o&&(t.lastPositions.set(c,o),r?c.style.transform=n?`translate3d(${o}px, 0, 0)`:`translate3d(0, ${o}px, 0)`:c.style[i]=`${o}px`)}},c={...r,onChange:(t,n)=>{var o;let c=a.current,l=!0;if(c.enabled){s(t);let e=t.range,n=c.prevRange;l=!n||n.isScrolling!==t.isScrolling||n.startIndex!==e?.startIndex||n.endIndex!==e?.endIndex,l&&(c.prevRange=e?{startIndex:e.startIndex,endIndex:e.endIndex,isScrolling:t.isScrolling}:null)}l&&(e&&n?(0,Jt.flushSync)(i):i()),(o=r.onChange)==null||o.call(r,t,n)}},[l]=Z.useState(()=>{let e=new fw(c);return Object.assign(e,{containerRef:t=>{let n=a.current;if(n.container=t,n.lastSize=null,t&&n.enabled){let r=e.getTotalSize();n.lastSize=r;let i=e.options.horizontal?`width`:`height`;t.style[i]=`${r}px`}}})});return l.setOptions(c),gw(()=>l._didMount(),[]),gw(()=>(o(l),l._willUpdate())),gw(()=>{s(l)}),l}function vw(e){return _w({observeElementRect:aw,observeElementOffset:lw,scrollToFn:dw,...e})}var yw=32;function bw(e){return[...new Uint8Array(e)].map(e=>e.toString(16).padStart(2,`0`)).join(``)}function xw(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<=31||n===127)return!0}return!1}var Sw=`codex://threads/`,Cw=512;function ww(e){let t=e.trim();if(t.length>Cw||t.length<=16||!t.toLowerCase().startsWith(Sw))return t;let n=t.slice(16),r=n.search(/[?#]/),i=(r===-1?n:n.slice(0,r)).replace(/\/+$/,``);return i!==``&&!/[/\s]/.test(i)?i:t}function Tw(e){let t=e.trim(),n=ww(t);return n===t?[n]:[n,t]}async function Ew(e){let t=Tw(e).filter(e=>e!==``&&!xw(e)&&e.length<=4096);return(await Promise.all(t.map(e=>crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e))))).map(e=>bw(e).slice(0,yw))}function Dw(e,t,n){if(!e)return!1;let r=Tw(t);return r.some(Boolean)?r.includes(e)?!0:n!==void 0&&n.includes(e):!1}var Ow={400:{en:{label:`Bad request`,description:`The proxy could not understand the request. Check the model, message shape, headers, and JSON body before retrying.`},fr:{label:`Requête incorrecte`,description:`Le proxy n’a pas pu comprendre la requête. Vérifiez le modèle, la structure des messages, les en-têtes et le corps JSON avant de réessayer.`},ko:{label:`잘못된 요청`,description:`프록시가 요청을 이해할 수 없습니다. 재시도 전에 모델, 메시지 형식, 헤더, JSON 본문을 확인해야 합니다.`},zh:{label:`错误请求`,description:`代理无法理解该请求。重试前请检查模型、消息结构、标头和 JSON 正文。`},"zh-TW":{label:`錯誤請求`,description:`代理無法理解該請求。重試前請檢查模型、訊息結構、標頭和 JSON 本文。`},de:{label:`Ungültige Anfrage`,description:`Der Proxy konnte die Anfrage nicht verstehen. Prüfe Modell, Nachrichtenformat, Header und JSON-Body vor einem erneuten Versuch.`},ru:{label:`Некорректный запрос`,description:`Прокси не смог интерпретировать запрос. Перед повторной попыткой проверьте модель, формат сообщений, заголовки и тело JSON.`},ja:{label:`不正なリクエスト`,description:`プロキシがリクエストを解釈できませんでした。再試行前にモデル、メッセージ形式、ヘッダー、JSON 本文を確認してください。`},tr:{label:`Hatalı istek`,description:`Proxy isteği anlayamadı. Yeniden denemeden önce modeli, mesaj yapısını, başlıkları ve JSON gövdesini kontrol edin.`},vi:{label:`Yêu cầu không hợp lệ`,description:`Proxy không thể hiểu yêu cầu. Hãy kiểm tra model, cấu trúc tin nhắn, header và nội dung JSON trước khi thử lại.`},pt:{label:`Requisição inválida`,description:`O proxy não conseguiu entender a requisição. Verifique o modelo, a estrutura das mensagens, os cabeçalhos e o corpo JSON antes de tentar novamente.`}},401:{en:{label:`Unauthorized`,description:`Credentials are missing, expired, or invalid. Re-login or refresh the account/provider credentials used by opencodex.`},fr:{label:`Non autorisé`,description:`Les identifiants sont absents, expirés ou non valides. Reconnectez-vous ou actualisez les identifiants du compte ou du fournisseur utilisés par opencodex.`},ko:{label:`인증 필요`,description:`자격 증명이 없거나 만료되었거나 유효하지 않습니다. opencodex에서 사용하는 계정 또는 제공자 자격 증명을 다시 로그인하거나 갱신해야 합니다.`},zh:{label:`未授权`,description:`凭据缺失、已过期或无效。请重新登录,或刷新 opencodex 使用的账号/提供商凭据。`},"zh-TW":{label:`未授權`,description:`憑證缺失、已過期或無效。請重新登入,或重新整理 opencodex 使用的帳號/供應商憑證。`},de:{label:`Nicht autorisiert`,description:`Anmeldedaten fehlen, sind abgelaufen oder ungültig. Melde dich erneut an oder aktualisiere die von opencodex genutzten Konto-/Anbieter-Zugangsdaten.`},ru:{label:`Не авторизован`,description:`Учётные данные отсутствуют, истекли или недействительны. Войдите заново или обновите учётные данные аккаунта или провайдера, которые использует opencodex.`},ja:{label:`認証が必要`,description:`認証情報が不在・期限切れ・無効です。opencodex が使用するアカウントまたはプロバイダー認証情報を再ログインまたは更新してください。`},tr:{label:`Yetkisiz erişim`,description:`Kimlik bilgileri eksik, süresi dolmuş veya geçersiz. opencodex tarafından kullanılan hesap veya sağlayıcı kimlik bilgilerini yeniden doğrulayın.`},vi:{label:`Chưa xác thực`,description:`Thông tin xác thực bị thiếu, đã hết hạn hoặc không hợp lệ. Hãy đăng nhập lại hoặc làm mới thông tin xác thực của tài khoản hay nhà cung cấp mà opencodex sử dụng.`},pt:{label:`Não autorizado`,description:`As credenciais estão ausentes, expiradas ou inválidas. Faça login novamente ou atualize as credenciais da conta/provedor usadas pelo opencodex.`}},402:{en:{label:`Payment required`,description:`The upstream provider rejected the request because billing, credits, or plan access is not available. Add credits, update billing, or switch provider.`},fr:{label:`Paiement requis`,description:`Le fournisseur en amont a rejeté la requête, car la facturation, les crédits ou l’accès à l’offre ne sont pas disponibles. Ajoutez des crédits, mettez à jour la facturation ou changez de fournisseur.`},ko:{label:`결제 필요`,description:`청구, 크레딧, 플랜 접근 권한 문제로 업스트림 제공자가 요청을 거부했습니다. 크레딧 추가, 결제 정보 갱신, 제공자 전환이 필요합니다.`},zh:{label:`需要付款`,description:`上游提供商因账单、额度或套餐权限不可用而拒绝了请求。请充值、更新账单信息或切换提供商。`},"zh-TW":{label:`需要付款`,description:`上游供應商因帳單、額度或方案許可權不可用而拒絕了請求。請儲值、更新帳單資訊或切換供應商。`},de:{label:`Zahlung erforderlich`,description:`Der Upstream-Anbieter hat die Anfrage abgelehnt, weil Abrechnung, Guthaben oder Planzugriff nicht verfügbar ist. Guthaben aufladen, Abrechnung aktualisieren oder Anbieter wechseln.`},ru:{label:`Требуется оплата`,description:`Вышестоящий провайдер отклонил запрос из-за проблем с оплатой, кредитами или доступом по тарифному плану. Пополните баланс, обновите платёжные данные или переключитесь на другого провайдера.`},ja:{label:`支払いが必要`,description:`課金、クレジット、プランアクセスが利用できないため上流プロバイダーがリクエストを拒否しました。クレジット追加、支払い情報更新、プロバイダー切替が必要です。`},tr:{label:`Ödeme gerekli`,description:`Yukarı akış sağlayıcısı faturalandırma, kredi veya plan erişimi bulunmadığından isteği reddetti. Kredi ekleyin, ödeme bilgilerini güncelleyin veya sağlayıcı değiştirin.`},vi:{label:`Yêu cầu thanh toán`,description:`Nhà cung cấp upstream đã từ chối yêu cầu vì không có quyền truy cập thanh toán, tín dụng hoặc gói dịch vụ. Hãy thêm tín dụng, cập nhật thanh toán hoặc đổi nhà cung cấp.`},pt:{label:`Pagamento necessário`,description:`O provedor upstream rejeitou a requisição porque faturamento, créditos ou acesso ao plano não estão disponíveis. Adicione créditos, atualize o faturamento ou troque de provedor.`}},403:{en:{label:`Forbidden`,description:`The account is authenticated but not allowed to use this model or operation. Often a plan/subscription gate (e.g. Ollama Cloud Pro), org policy, or model permission — not necessarily a bad API key.`},fr:{label:`Accès interdit`,description:`Le compte est authentifié, mais n’est pas autorisé à utiliser ce modèle ou cette opération. Il s’agit souvent d’une restriction liée à l’offre ou à l’abonnement (p. ex. Ollama Cloud Pro), à la politique de l’organisation ou aux autorisations du modèle — pas nécessairement d’une clé API incorrecte.`},ko:{label:`권한 없음`,description:`계정 인증은 되었지만 이 모델 또는 작업을 사용할 권한이 없습니다. 플랜/구독 제한(예: Ollama Cloud Pro), 조직 정책, 모델 권한 문제인 경우가 많으며 API 키가 잘못된 것은 아닐 수 있습니다.`},zh:{label:`禁止访问`,description:`账号已认证,但无权使用此模型或操作。常见原因是套餐/订阅限制(例如 Ollama Cloud Pro)、组织策略或模型权限——不一定是 API 密钥无效。`},"zh-TW":{label:`禁止存取`,description:`帳號已認證,但無權使用此模型或操作。常見原因是方案/訂閱限制(例如 Ollama Cloud Pro)、組織策略或模型許可權——不一定是 API 金鑰無效。`},de:{label:`Verboten`,description:`Das Konto ist authentifiziert, darf dieses Modell oder diese Operation aber nicht nutzen. Oft Plan-/Abo-Sperre (z. B. Ollama Cloud Pro), Organisationsrichtlinie oder Modellrecht — nicht zwingend ein ungültiger API-Key.`},ru:{label:`Доступ запрещён`,description:`Аккаунт аутентифицирован, но не имеет права использовать эту модель или операцию. Часто причина — ограничение тарифа или подписки (например, Ollama Cloud Pro), политика организации или права доступа к модели, а не обязательно неверный API-ключ.`},ja:{label:`アクセス禁止`,description:`アカウントは認証済みですがこのモデルや操作の使用が許可されていません。多くはプラン/サブスクリプション制限(例: Ollama Cloud Pro)、組織ポリシー、モデル権限であり、API キーが不正とは限りません。`},tr:{label:`Erişim yasaklandı`,description:`Hesabın kimliği doğrulandı ancak bu modeli veya işlemi kullanma izni yok. Genellikle plan/abonelik sınırı (örn. Ollama Cloud Pro), organizasyon politikası veya model izni kaynaklıdır.`},vi:{label:`Bị cấm`,description:`Tài khoản đã được xác thực nhưng không được phép dùng model hoặc thao tác này. Nguyên nhân thường là giới hạn gói hoặc thuê bao (ví dụ Ollama Cloud Pro), chính sách tổ chức hay quyền model — không nhất thiết do API key sai.`},pt:{label:`Acesso negado`,description:`A conta está autenticada, mas não tem permissão para usar este modelo ou esta operação. Costuma ser limite de plano/assinatura (ex.: Ollama Cloud Pro), política da organização ou permissão do modelo — não necessariamente uma API key inválida.`}},404:{en:{label:`Not found`,description:`The requested route, model, account, or upstream resource was not found. Verify the model name and opencodex provider configuration.`},fr:{label:`Introuvable`,description:`La route, le modèle, le compte ou la ressource en amont demandés sont introuvables. Vérifiez le nom du modèle et la configuration du fournisseur opencodex.`},ko:{label:`찾을 수 없음`,description:`요청한 경로, 모델, 계정 또는 업스트림 리소스를 찾을 수 없습니다. 모델 이름과 opencodex 제공자 설정을 확인해야 합니다.`},zh:{label:`未找到`,description:`找不到请求的路由、模型、账号或上游资源。请确认模型名称和 opencodex 提供商配置。`},"zh-TW":{label:`未找到`,description:`找不到請求的路由、模型、帳號或上游資源。請確認模型名稱和 opencodex 供應商配置。`},de:{label:`Nicht gefunden`,description:`Die angeforderte Route, das Modell, das Konto oder die Upstream-Ressource wurde nicht gefunden. Prüfe Modellname und opencodex-Anbieterkonfiguration.`},ru:{label:`Не найдено`,description:`Запрошенный маршрут, модель, аккаунт или вышестоящий ресурс не найден. Проверьте имя модели и конфигурацию провайдера в opencodex.`},ja:{label:`見つかりません`,description:`要求されたルート、モデル、アカウント、上流リソースが見つかりませんでした。モデル名と opencodex プロバイダー設定を確認してください。`},tr:{label:`Bulunamadı`,description:`İstenen rota, model, hesap veya yukarı akış kaynağı bulunamadı. Model adını ve opencodex sağlayıcı yapılandırmasını doğrulayın.`},vi:{label:`Không tìm thấy`,description:`Không tìm thấy endpoint, model hoặc tài nguyên được yêu cầu. Hãy kiểm tra base URL, tên model và đường dẫn yêu cầu.`},pt:{label:`Não encontrado`,description:`A rota, o modelo, a conta ou o recurso upstream solicitado não foi encontrado. Verifique o nome do modelo e a configuração do provedor no opencodex.`}},408:{en:{label:`Request timeout`,description:`The request took too long before the proxy or upstream provider could complete it. Retry with a smaller request or a different provider.`},fr:{label:`Délai d’attente de la requête dépassé`,description:`La requête a pris trop de temps pour que le proxy ou le fournisseur en amont puisse la traiter. Réessayez avec une requête plus petite ou un autre fournisseur.`},ko:{label:`요청 시간 초과`,description:`프록시 또는 업스트림 제공자가 요청을 완료하기 전에 시간이 초과되었습니다. 더 작은 요청으로 재시도하거나 다른 제공자로 전환해야 합니다.`},zh:{label:`请求超时`,description:`代理或上游提供商未能在限定时间内完成请求。请缩小请求后重试,或切换提供商。`},"zh-TW":{label:`請求逾時`,description:`代理或上游供應商未能在限定時間內完成請求。請縮小請求後重試,或切換供應商。`},de:{label:`Anfrage-Timeout`,description:`Die Anfrage dauerte zu lange, bevor Proxy oder Upstream-Anbieter sie abschließen konnten. Mit kleinerer Anfrage oder anderem Anbieter erneut versuchen.`},ru:{label:`Тайм-аут запроса`,description:`Обработка запроса заняла слишком много времени, и прокси или вышестоящий провайдер не успел её завершить. Повторите попытку с меньшим запросом или через другого провайдера.`},ja:{label:`リクエストタイムアウト`,description:`プロキシまたは上流プロバイダーがリクエストを完了する前に時間切れになりました。より小さいリクエストで再試行するか、別のプロバイダーに切り替えてください。`},tr:{label:`İstek zaman aşımı`,description:`Proxy veya yukarı akış sağlayıcısı isteği tamamlayamadan zaman aşımına uğradı. Daha küçük bir istek veya farklı bir sağlayıcı ile tekrar deneyin.`},vi:{label:`Yêu cầu hết thời gian chờ`,description:`Yêu cầu không hoàn tất trước thời hạn. Hãy thử lại với yêu cầu nhỏ hơn hoặc kiểm tra kết nối mạng.`},pt:{label:`Tempo limite da requisição`,description:`A requisição demorou demais para o proxy ou o provedor upstream concluí-la. Tente novamente com uma requisição menor ou outro provedor.`}},409:{en:{label:`Conflict`,description:`The request conflicts with the current account, session, or provider state. Refresh the session or retry after the active operation finishes.`},fr:{label:`Conflit`,description:`La requête entre en conflit avec l’état actuel du compte, de la session ou du fournisseur. Actualisez la session ou réessayez une fois l’opération en cours terminée.`},ko:{label:`상태 충돌`,description:`요청이 현재 계정, 세션 또는 제공자 상태와 충돌합니다. 세션을 갱신하거나 진행 중인 작업이 끝난 뒤 재시도해야 합니다.`},zh:{label:`状态冲突`,description:`请求与当前账号、会话或提供商状态冲突。请刷新会话,或等待当前操作完成后重试。`},"zh-TW":{label:`狀態衝突`,description:`請求與當前帳號、會話或供應商狀態衝突。請重新整理會話,或等待當前操作完成後重試。`},de:{label:`Konflikt`,description:`Die Anfrage kollidiert mit dem aktuellen Konto-, Sitzungs- oder Anbieterstatus. Sitzung aktualisieren oder nach Abschluss der laufenden Operation erneut versuchen.`},ru:{label:`Конфликт`,description:`Запрос конфликтует с текущим состоянием аккаунта, сессии или провайдера. Обновите сессию или повторите попытку после завершения текущей операции.`},ja:{label:`状態の衝突`,description:`リクエストが現在のアカウント、セッション、プロバイダー状態と衝突しています。セッションを更新するか、進行中の操作が終わった後に再試行してください。`},tr:{label:`Durum çakışması`,description:`İstek mevcut hesap, oturum veya sağlayıcı durumuyla çakışıyor. Oturumu yenileyin veya aktif işlem bittikten sonra tekrar deneyin.`},vi:{label:`Xung đột`,description:`Yêu cầu xung đột với trạng thái hiện tại của tài nguyên hoặc tài khoản. Hãy làm mới trạng thái rồi thử lại.`},pt:{label:`Conflito`,description:`A requisição conflita com o estado atual da conta, da sessão ou do provedor. Atualize a sessão ou tente novamente quando a operação ativa terminar.`}},413:{en:{label:`Request too large`,description:`The prompt, attachments, or generated payload exceeds a proxy or upstream limit. Reduce tokens, file size, or conversation history.`},fr:{label:`Requête trop volumineuse`,description:`L’invite, les pièces jointes ou la charge utile générée dépassent une limite du proxy ou du fournisseur en amont. Réduisez le nombre de jetons, la taille des fichiers ou l’historique de la conversation.`},ko:{label:`요청 과대`,description:`프롬프트, 첨부 파일 또는 생성 페이로드가 프록시나 업스트림 한도를 초과했습니다. 토큰, 파일 크기, 대화 기록을 줄여야 합니다.`},zh:{label:`请求过大`,description:`提示、附件或生成的负载超过了代理或上游限制。请减少 token、文件大小或对话历史。`},"zh-TW":{label:`請求過大`,description:`提示、附件或生成的負載超過了代理或上游限制。請減少 token、檔案大小或對話歷史。`},de:{label:`Anfrage zu groß`,description:`Prompt, Anhänge oder generierte Nutzlast überschreiten ein Proxy- oder Upstream-Limit. Tokens, Dateigröße oder Verlauf reduzieren.`},ru:{label:`Слишком большой запрос`,description:`Промпт, вложения или сформированная полезная нагрузка превышают лимит прокси или вышестоящего провайдера. Сократите количество токенов, размер файлов или историю диалога.`},ja:{label:`リクエストが大きすぎます`,description:`プロンプト、添付ファイル、生成ペイロードがプロキシまたは上流の制限を超えました。トークン、ファイルサイズ、会話履歴を減らしてください。`},tr:{label:`İstek çok büyük`,description:`İstemi, ekler veya oluşturulan veri proxy ya da yukarı akış sınırını aşıyor. Jeton sayısını, dosya boyutunu veya sohbet geçmişini azaltın.`},vi:{label:`Nội dung quá lớn`,description:`Nội dung yêu cầu vượt quá giới hạn của proxy hoặc nhà cung cấp. Hãy giảm kích thước tin nhắn, tệp hoặc ngữ cảnh rồi thử lại.`},pt:{label:`Requisição grande demais`,description:`O prompt, os anexos ou o conteúdo gerado excedem um limite do proxy ou do upstream. Reduza tokens, tamanho de arquivos ou histórico da conversa.`}},422:{en:{label:`Invalid content`,description:`The provider accepted the request format but rejected its contents. Check model options, tool definitions, message roles, and unsupported fields.`},fr:{label:`Contenu non valide`,description:`Le fournisseur a accepté le format de la requête, mais en a rejeté le contenu. Vérifiez les options du modèle, les définitions des outils, les rôles des messages et les champs non pris en charge.`},ko:{label:`내용 검증 실패`,description:`제공자가 요청 형식은 받았지만 내용을 거부했습니다. 모델 옵션, 도구 정의, 메시지 역할, 지원되지 않는 필드를 확인해야 합니다.`},zh:{label:`内容无效`,description:`提供商接受了请求格式,但拒绝了其中的内容。请检查模型选项、工具定义、消息角色和不支持的字段。`},"zh-TW":{label:`內容無效`,description:`供應商接受了請求格式,但拒絕了其中的內容。請檢查模型選項、工具定義、訊息角色和不支援的欄位。`},de:{label:`Ungültiger Inhalt`,description:`Der Anbieter akzeptierte das Anfrageformat, lehnte den Inhalt aber ab. Prüfe Modelloptionen, Tool-Definitionen, Nachrichtenrollen und nicht unterstützte Felder.`},ru:{label:`Недопустимое содержимое`,description:`Провайдер принял формат запроса, но отклонил его содержимое. Проверьте параметры модели, определения инструментов, роли сообщений и неподдерживаемые поля.`},ja:{label:`内容の検証失敗`,description:`プロバイダーはリクエスト形式を受け付けましたが内容を拒否しました。モデルオプション、ツール定義、メッセージロール、未サポートのフィールドを確認してください。`},tr:{label:`Geçersiz içerik`,description:`Sağlayıcı istek formatını kabul etti ancak içeriğini reddetti. Model seçeneklerini, araç tanımlarını, mesaj rollerini ve desteklenmeyen alanları kontrol edin.`},vi:{label:`Yêu cầu không thể xử lý`,description:`Yêu cầu có cú pháp hợp lệ nhưng chứa giá trị hoặc tổ hợp tùy chọn mà model hay nhà cung cấp không hỗ trợ.`},pt:{label:`Conteúdo inválido`,description:`O provedor aceitou o formato da requisição, mas rejeitou o conteúdo. Verifique as opções do modelo, as definições de ferramentas, os papéis das mensagens e campos não suportados.`}},424:{en:{label:`Provider dependency failed`,description:`A required upstream dependency failed while opencodex was routing the request. Retry later or switch to another configured provider.`},fr:{label:`Échec d’une dépendance du fournisseur`,description:`Une dépendance en amont requise a échoué pendant le routage de la requête par opencodex. Réessayez plus tard ou sélectionnez un autre fournisseur configuré.`},ko:{label:`제공자 의존성 실패`,description:`opencodex가 요청을 라우팅하는 동안 필요한 업스트림 의존성이 실패했습니다. 나중에 재시도하거나 다른 설정된 제공자로 전환해야 합니다.`},zh:{label:`提供商依赖失败`,description:`opencodex 路由请求时,必需的上游依赖失败。请稍后重试,或切换到另一个已配置的提供商。`},"zh-TW":{label:`供應商依賴失敗`,description:`opencodex 路由請求時,必需的上游依賴失敗。請稍後重試,或切換到另一個已配置的供應商。`},de:{label:`Anbieter-Abhängigkeit fehlgeschlagen`,description:`Eine erforderliche Upstream-Abhängigkeit ist fehlgeschlagen, während opencodex die Anfrage geroutet hat. Später erneut versuchen oder zu einem anderen Anbieter wechseln.`},ru:{label:`Сбой зависимости провайдера`,description:`Необходимая вышестоящая зависимость дала сбой, пока opencodex маршрутизировал запрос. Повторите попытку позже или переключитесь на другого настроенного провайдера.`},ja:{label:`プロバイダー依存の失敗`,description:`opencodex がリクエストをルーティング中に必要な上流依存が失敗しました。後で再試行するか、別の設定済みプロバイダーに切り替えてください。`},tr:{label:`Sağlayıcı bağımlılığı başarısız`,description:`opencodex isteği yönlendirirken gerekli bir yukarı akış bağımlılığı başarısız oldu. Daha sonra tekrar deneyin veya başka bir sağlayıcıya geçin.`},vi:{label:`Phụ thuộc thất bại`,description:`Không thể hoàn tất yêu cầu vì một dịch vụ phụ thuộc hoặc thao tác upstream đã thất bại. Hãy kiểm tra lỗi liên quan rồi thử lại.`},pt:{label:`Falha em dependência do provedor`,description:`Uma dependência upstream necessária falhou enquanto o opencodex roteava a requisição. Tente novamente mais tarde ou troque para outro provedor configurado.`}},429:{en:{label:`Rate limited`,description:`The upstream provider rate or quota limit has been reached. Wait for the quota window to reset or switch account/provider.`},fr:{label:`Limite de débit atteinte`,description:`La limite de débit ou de quota du fournisseur en amont a été atteinte. Attendez la réinitialisation de la fenêtre de quota ou changez de compte ou de fournisseur.`},ko:{label:`한도 초과`,description:`업스트림 제공자의 속도 또는 할당량 한도에 도달했습니다. 한도 창이 초기화될 때까지 기다리거나 계정/제공자를 전환해야 합니다.`},zh:{label:`限流`,description:`已达到上游提供商的速率或额度限制。请等待额度窗口重置,或切换账号/提供商。`},"zh-TW":{label:`限流`,description:`已達到上游供應商的速率或額度限制。請等待額度視窗重設,或切換帳號/供應商。`},de:{label:`Ratenlimit erreicht`,description:`Das Raten- oder Kontingentlimit des Upstream-Anbieters ist erreicht. Auf Reset des Kontingentfensters warten oder Konto/Anbieter wechseln.`},ru:{label:`Превышен лимит запросов`,description:`Достигнут лимит скорости или квота вышестоящего провайдера. Дождитесь сброса окна квоты или переключитесь на другой аккаунт или провайдера.`},ja:{label:`レート制限`,description:`上流プロバイダーのレートまたはクォータ制限に達しました。クォータウィンドウがリセットされるまで待つか、アカウント/プロバイダーを切り替えてください。`},tr:{label:`Oran sınırı aşıldı`,description:`Yukarı akış sağlayıcısının hız veya kota sınırına ulaşıldı. Kota penceresinin sıfırlanmasını bekleyin ya da hesap/sağlayıcı değiştirin.`},vi:{label:`Quá nhiều yêu cầu`,description:`Tài khoản hoặc nhà cung cấp đã đạt giới hạn tốc độ hay hạn ngạch. Hãy chờ thời gian Retry-After, đổi tài khoản hoặc đổi nhà cung cấp.`},pt:{label:`Limite de requisições excedido`,description:`O limite de taxa ou de cota do provedor upstream foi atingido. Aguarde a janela de cota reiniciar ou troque de conta/provedor.`}},499:{en:{label:`Client closed request`,description:`The client disconnected or canceled the request before opencodex finished routing it. Retry if the cancellation was accidental.`},fr:{label:`Requête fermée par le client`,description:`Le client s’est déconnecté ou a annulé la requête avant la fin de son routage par opencodex. Réessayez si l’annulation était involontaire.`},ko:{label:`클라이언트 취소`,description:`opencodex가 라우팅을 끝내기 전에 클라이언트 연결이 끊기거나 요청이 취소되었습니다. 의도한 취소가 아니면 다시 시도해야 합니다.`},zh:{label:`客户端已取消`,description:`opencodex 完成路由前,客户端已断开连接或取消请求。如果不是有意取消,请重试。`},"zh-TW":{label:`客戶端已取消`,description:`opencodex 完成路由前,客戶端已斷開連線或取消請求。如果不是有意取消,請重試。`},de:{label:`Client hat Anfrage geschlossen`,description:`Der Client hat die Verbindung getrennt oder die Anfrage abgebrochen, bevor opencodex das Routing abgeschlossen hat. Bei versehentlichem Abbruch erneut versuchen.`},ru:{label:`Запрос закрыт клиентом`,description:`Клиент отключился или отменил запрос до того, как opencodex завершил его маршрутизацию. Если отмена была случайной, повторите попытку.`},ja:{label:`クライアントがリクエストをクローズ`,description:`opencodex がルーティングを終える前にクライアントが切断またはキャンセルしました。意図しないキャンセルなら再試行してください。`},tr:{label:`İstemci isteği kapattı`,description:`opencodex yönlendirmeyi bitirmeden önce istemci bağlantıyı kesti veya isteği iptal etti. İptal kazara yapıldıysa tekrar deneyin.`},vi:{label:`Máy khách đã đóng yêu cầu`,description:`Máy khách đã ngắt kết nối hoặc hủy yêu cầu trước khi opencodex định tuyến xong. Nếu không chủ ý hủy, hãy thử lại.`},pt:{label:`Requisição encerrada pelo cliente`,description:`O cliente desconectou ou cancelou a requisição antes de o opencodex terminar de rotear. Tente novamente se o cancelamento foi acidental.`}},500:{en:{label:`Proxy error`,description:`opencodex hit an internal error while handling the request. Retry once, then check proxy logs if it repeats.`},fr:{label:`Erreur du proxy`,description:`opencodex a rencontré une erreur interne lors du traitement de la requête. Réessayez une fois, puis consultez les journaux du proxy si l’erreur se reproduit.`},ko:{label:`프록시 오류`,description:`opencodex가 요청을 처리하는 동안 내부 오류가 발생했습니다. 한 번 재시도하고 반복되면 프록시 로그를 확인해야 합니다.`},zh:{label:`代理错误`,description:`opencodex 处理请求时发生内部错误。请先重试一次;如果重复出现,请检查代理日志。`},"zh-TW":{label:`代理錯誤`,description:`opencodex 處理請求時發生內部錯誤。請先重試一次;如果重複出現,請檢查代理日誌。`},de:{label:`Proxy-Fehler`,description:`opencodex ist bei der Anfragebearbeitung auf einen internen Fehler gestoßen. Einmal erneut versuchen, bei Wiederholung Proxy-Logs prüfen.`},ru:{label:`Ошибка прокси`,description:`В opencodex произошла внутренняя ошибка при обработке запроса. Повторите попытку один раз; если ошибка повторяется, проверьте логи прокси.`},ja:{label:`プロキシエラー`,description:`opencodex がリクエスト処理中に内部エラーに遭遇しました。1 回再試行し、繰り返す場合はプロキシログを確認してください。`},tr:{label:`Proxy hatası`,description:`opencodex isteği işlerken dahili bir hatayla karşılaştı. Bir kez tekrar deneyin, tekrarlarsa proxy günlüklerini kontrol edin.`},vi:{label:`Lỗi proxy`,description:`opencodex gặp lỗi nội bộ khi xử lý yêu cầu. Hãy thử lại một lần, rồi kiểm tra log proxy nếu lỗi lặp lại.`},pt:{label:`Erro do proxy`,description:`O opencodex encontrou um erro interno ao tratar a requisição. Tente novamente uma vez; se repetir, verifique os logs do proxy.`}},502:{en:{label:`Bad upstream response`,description:`The upstream provider returned an invalid or failed response through the proxy. Retry or route the request to another provider.`},fr:{label:`Réponse incorrecte du fournisseur en amont`,description:`Le fournisseur en amont a renvoyé une réponse non valide ou en échec par l’intermédiaire du proxy. Réessayez ou acheminez la requête vers un autre fournisseur.`},ko:{label:`업스트림 응답 오류`,description:`업스트림 제공자가 프록시를 통해 유효하지 않거나 실패한 응답을 반환했습니다. 재시도하거나 다른 제공자로 라우팅해야 합니다.`},zh:{label:`上游响应错误`,description:`上游提供商通过代理返回了无效或失败的响应。请重试,或将请求路由到其他提供商。`},"zh-TW":{label:`上游回應錯誤`,description:`上游供應商透過代理返回了無效或失敗的回應。請重試,或將請求路由到其他供應商。`},de:{label:`Ungültige Upstream-Antwort`,description:`Der Upstream-Anbieter lieferte über den Proxy eine ungültige oder fehlgeschlagene Antwort. Erneut versuchen oder zu einem anderen Anbieter routen.`},ru:{label:`Некорректный ответ провайдера`,description:`Вышестоящий провайдер вернул через прокси недействительный или ошибочный ответ. Повторите попытку или направьте запрос другому провайдеру.`},ja:{label:`上流レスポンス不良`,description:`上流プロバイダーがプロキシ経由で無効または失敗したレスポンスを返しました。再試行するか、リクエストを別のプロバイダーにルーティングしてください。`},tr:{label:`Kötü yukarı akış yanıtı`,description:`Yukarı akış sağlayıcısı proxy üzerinden geçersiz veya başarısız bir yanıt döndürdü. Tekrar deneyin veya isteği başka bir sağlayıcıya yönlendirin.`},vi:{label:`Phản hồi upstream không hợp lệ`,description:`Nhà cung cấp upstream trả về phản hồi không hợp lệ hoặc thất bại qua proxy. Hãy thử lại hoặc định tuyến yêu cầu sang nhà cung cấp khác.`},pt:{label:`Resposta upstream inválida`,description:`O provedor upstream retornou uma resposta inválida ou com falha através do proxy. Tente novamente ou roteie a requisição para outro provedor.`}},503:{en:{label:`Provider unavailable`,description:`The proxy or upstream provider is temporarily unavailable or overloaded. Wait briefly, then retry or switch provider.`},fr:{label:`Fournisseur indisponible`,description:`Le proxy ou le fournisseur en amont est temporairement indisponible ou surchargé. Patientez un instant, puis réessayez ou changez de fournisseur.`},ko:{label:`제공자 사용 불가`,description:`프록시 또는 업스트림 제공자가 일시적으로 사용할 수 없거나 과부하 상태입니다. 잠시 기다린 뒤 재시도하거나 제공자를 전환해야 합니다.`},zh:{label:`提供商不可用`,description:`代理或上游提供商暂时不可用或过载。请稍后重试,或切换提供商。`},"zh-TW":{label:`供應商不可用`,description:`代理或上游供應商暫時不可用或過載。請稍後重試,或切換供應商。`},de:{label:`Anbieter nicht verfügbar`,description:`Proxy oder Upstream-Anbieter ist vorübergehend nicht verfügbar oder überlastet. Kurz warten, dann erneut versuchen oder Anbieter wechseln.`},ru:{label:`Провайдер недоступен`,description:`Прокси или вышестоящий провайдер временно недоступен или перегружен. Немного подождите, затем повторите попытку или смените провайдера.`},ja:{label:`プロバイダー利用不可`,description:`プロキシまたは上流プロバイダーが一時的に利用不可または過負荷です。少し待ってから再試行するか、プロバイダーを切り替えてください。`},tr:{label:`Sağlayıcı kullanılamıyor`,description:`Proxy veya yukarı akış sağlayıcısı geçici olarak kullanılamıyor veya aşırı yüklü. Kısa bir süre bekleyip tekrar deneyin ya da sağlayıcı değiştirin.`},vi:{label:`Nhà cung cấp không khả dụng`,description:`Proxy hoặc nhà cung cấp upstream tạm thời không khả dụng hay đang quá tải. Hãy chờ một lát rồi thử lại hoặc đổi nhà cung cấp.`},pt:{label:`Provedor indisponível`,description:`O proxy ou o provedor upstream está temporariamente indisponível ou sobrecarregado. Aguarde um instante e tente novamente, ou troque de provedor.`}},504:{en:{label:`Upstream timeout`,description:`The upstream provider did not respond before the proxy timeout. Retry with a smaller request or choose a faster provider.`},fr:{label:`Délai d’attente du fournisseur en amont dépassé`,description:`Le fournisseur en amont n’a pas répondu avant l’expiration du délai du proxy. Réessayez avec une requête plus petite ou choisissez un fournisseur plus rapide.`},ko:{label:`업스트림 시간 초과`,description:`프록시 시간 제한 전에 업스트림 제공자가 응답하지 않았습니다. 더 작은 요청으로 재시도하거나 더 빠른 제공자를 선택해야 합니다.`},zh:{label:`上游超时`,description:`上游提供商未在代理超时前响应。请缩小请求后重试,或选择响应更快的提供商。`},"zh-TW":{label:`上游逾時`,description:`上游供應商未在代理逾時前回應。請縮小請求後重試,或選擇回應更快的供應商。`},de:{label:`Upstream-Timeout`,description:`Der Upstream-Anbieter antwortete nicht vor dem Proxy-Timeout. Mit kleinerer Anfrage erneut versuchen oder schnelleren Anbieter wählen.`},ru:{label:`Тайм-аут вышестоящего провайдера`,description:`Вышестоящий провайдер не ответил до истечения тайм-аута прокси. Повторите попытку с меньшим запросом или выберите более быстрого провайдера.`},ja:{label:`上流タイムアウト`,description:`上流プロバイダーがプロキシタイムアウト前に応答しませんでした。より小さいリクエストで再試行するか、より速いプロバイダーを選んでください。`},tr:{label:`Yukarı akış zaman aşımı`,description:`Yukarı akış sağlayıcısı proxy zaman aşımı süresinden önce yanıt vermedi. Daha küçük bir istekle tekrar deneyin veya daha hızlı bir sağlayıcı seçin.`},vi:{label:`Upstream hết thời gian chờ`,description:`Nhà cung cấp upstream không phản hồi trước thời hạn của proxy. Hãy thử lại với yêu cầu nhỏ hơn hoặc chọn nhà cung cấp nhanh hơn.`},pt:{label:`Tempo limite do upstream`,description:`O provedor upstream não respondeu antes do tempo limite do proxy. Tente novamente com uma requisição menor ou escolha um provedor mais rápido.`}},529:{en:{label:`Provider overloaded`,description:`The upstream provider is overloaded or capacity-limited. Wait and retry, or switch to another account/provider.`},fr:{label:`Fournisseur surchargé`,description:`Le fournisseur en amont est surchargé ou sa capacité est limitée. Patientez et réessayez, ou changez de compte ou de fournisseur.`},ko:{label:`제공자 과부하`,description:`업스트림 제공자가 과부하 상태이거나 처리 용량이 제한되었습니다. 기다렸다가 재시도하거나 다른 계정/제공자로 전환해야 합니다.`},zh:{label:`提供商过载`,description:`上游提供商过载或容量受限。请等待后重试,或切换到其他账号/提供商。`},"zh-TW":{label:`供應商過載`,description:`上游供應商過載或容量受限。請等待後重試,或切換到其他帳號/供應商。`},de:{label:`Anbieter überlastet`,description:`Der Upstream-Anbieter ist überlastet oder kapazitätsbegrenzt. Warten und erneut versuchen oder anderes Konto/Anbieter nutzen.`},ru:{label:`Провайдер перегружен`,description:`Вышестоящий провайдер перегружен или ограничен по мощности. Подождите и повторите попытку либо переключитесь на другой аккаунт или провайдера.`},ja:{label:`プロバイダー過負荷`,description:`上流プロバイダーが過負荷または容量制限されています。待ってから再試行するか、別のアカウント/プロバイダーに切り替えてください。`},tr:{label:`Sağlayıcı aşırı yüklü`,description:`Yukarı akış sağlayıcısı aşırı yüklü veya kapasitesi sınırlı. Bekleyip tekrar deneyin veya başka bir hesap/sağlayıcıya geçin.`},vi:{label:`Nhà cung cấp quá tải`,description:`Nhà cung cấp upstream đang quá tải hoặc bị giới hạn công suất. Hãy chờ rồi thử lại, hoặc đổi sang tài khoản hay nhà cung cấp khác.`},pt:{label:`Provedor sobrecarregado`,description:`O provedor upstream está sobrecarregado ou com capacidade limitada. Aguarde e tente novamente, ou troque para outra conta/provedor.`}}},kw={client:{en:{label:`Request error`,description:`The proxy or upstream provider rejected the request. Check the request shape, credentials, model name, and provider configuration.`},fr:{label:`Erreur de requête`,description:`Le proxy ou le fournisseur en amont a rejeté la requête. Vérifiez sa structure, les identifiants, le nom du modèle et la configuration du fournisseur.`},ko:{label:`요청 오류`,description:`프록시 또는 업스트림 제공자가 요청을 거부했습니다. 요청 형식, 자격 증명, 모델 이름, 제공자 설정을 확인해야 합니다.`},zh:{label:`请求错误`,description:`代理或上游提供商拒绝了该请求。请检查请求结构、凭据、模型名称和提供商配置。`},"zh-TW":{label:`請求錯誤`,description:`代理或上游供應商拒絕了該請求。請檢查請求結構、憑證、模型名稱和供應商配置。`},de:{label:`Anfragefehler`,description:`Der Proxy oder Upstream-Anbieter hat die Anfrage abgelehnt. Prüfe Anfrageformat, Anmeldedaten, Modellname und Anbieterkonfiguration.`},ru:{label:`Ошибка запроса`,description:`Прокси или вышестоящий провайдер отклонил запрос. Проверьте структуру запроса, учётные данные, имя модели и конфигурацию провайдера.`},ja:{label:`リクエストエラー`,description:`プロキシまたは上流プロバイダーがリクエストを拒否しました。リクエスト形式、認証情報、モデル名、プロバイダー設定を確認してください。`},tr:{label:`İstek hatası`,description:`Proxy veya yukarı akış sağlayıcısı isteği reddetti. İstek yapısını, kimlik bilgilerini, model adını ve sağlayıcı yapılandırmasını kontrol edin.`},vi:{label:`Lỗi yêu cầu`,description:`Proxy hoặc nhà cung cấp upstream đã từ chối yêu cầu. Hãy kiểm tra cấu trúc yêu cầu, thông tin xác thực, tên model và cấu hình nhà cung cấp.`},pt:{label:`Erro na requisição`,description:`O proxy ou o provedor upstream rejeitou a requisição. Verifique a estrutura da requisição, as credenciais, o nome do modelo e a configuração do provedor.`}},server:{en:{label:`Server or upstream error`,description:`opencodex or an upstream provider failed while processing the request. Retry later or route the request to another provider.`},fr:{label:`Erreur du serveur ou du fournisseur en amont`,description:`opencodex ou un fournisseur en amont a échoué lors du traitement de la requête. Réessayez plus tard ou acheminez la requête vers un autre fournisseur.`},ko:{label:`서버 또는 업스트림 오류`,description:`opencodex 또는 업스트림 제공자가 요청 처리 중 실패했습니다. 나중에 재시도하거나 다른 제공자로 라우팅해야 합니다.`},zh:{label:`服务器或上游错误`,description:`opencodex 或上游提供商处理请求时失败。请稍后重试,或将请求路由到其他提供商。`},"zh-TW":{label:`伺服器或上游錯誤`,description:`opencodex 或上游供應商處理請求時失敗。請稍後重試,或將請求路由到其他供應商。`},de:{label:`Server- oder Upstream-Fehler`,description:`opencodex oder ein Upstream-Anbieter ist bei der Anfragebearbeitung fehlgeschlagen. Später erneut versuchen oder zu einem anderen Anbieter routen.`},ru:{label:`Ошибка сервера или провайдера`,description:`opencodex или вышестоящий провайдер завершил обработку запроса с ошибкой. Повторите попытку позже или направьте запрос другому провайдеру.`},ja:{label:`サーバーまたは上流エラー`,description:`opencodex または上流プロバイダーがリクエスト処理中に失敗しました。後で再試行するか、リクエストを別のプロバイダーにルーティングしてください。`},tr:{label:`Sunucu veya yukarı akış hatası`,description:`opencodex veya bir yukarı akış sağlayıcısı isteği işlerken başarısız oldu. Daha sonra tekrar deneyin veya isteği başka bir sağlayıcıya yönlendirin.`},vi:{label:`Lỗi máy chủ hoặc upstream`,description:`opencodex hoặc một nhà cung cấp upstream đã thất bại khi xử lý yêu cầu. Hãy thử lại sau hoặc định tuyến yêu cầu sang nhà cung cấp khác.`},pt:{label:`Erro do servidor ou do upstream`,description:`O opencodex ou um provedor upstream falhou ao processar a requisição. Tente novamente mais tarde ou roteie a requisição para outro provedor.`}}};function Aw(e){return e.toLowerCase().startsWith(`fr`)?`fr`:e.toLowerCase().startsWith(`vi`)?`vi`:e.toLowerCase().startsWith(`pt`)?`pt`:e===`de`||e===`ko`||e===`zh`||e===`zh-TW`||e===`ru`||e===`ja`||e===`tr`?e:`en`}function jw(e,t){if(e<400)return null;let n=Aw(t);return(Ow[Math.trunc(e)]??(e<500?kw.client:kw.server))[n]}var Mw=[`provider`,`usage`,`injection`];function Nw(e){return e>0?`[${new Date(e).toLocaleTimeString()}] `:``}function Pw(e){return new Date(e).toLocaleTimeString()}function Fw(e,t){return t===`provider`?!!e?.enabled:t===`usage`?!!e?.usage:!!e?.injection}function Iw(e,t){return t===`debug`?e.enabled:t===`usage`?e.usage:t===`injection`?e.injection:e.claude}function Lw({entries:e}){let{t:n}=t();return(0,Q.jsxs)(`div`,{className:`card`,style:{marginBottom:16,padding:`12px 14px`},children:[(0,Q.jsx)(`div`,{className:`font-semibold`,style:{marginBottom:4},children:n(`debug.claudeInbound.title`)}),(0,Q.jsx)(`div`,{className:`muted text-control`,style:{marginBottom:10},children:n(`debug.claudeInbound.sub`)}),e.length===0?(0,Q.jsx)(`div`,{className:`muted text-control`,children:n(`debug.claudeInbound.empty`)}):(0,Q.jsx)(`div`,{style:{overflowX:`auto`},children:(0,Q.jsxs)(`table`,{className:`table text-label`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:n(`debug.claudeInbound.time`)}),(0,Q.jsx)(`th`,{children:n(`debug.claudeInbound.endpoint`)}),(0,Q.jsx)(`th`,{children:n(`debug.claudeInbound.model`)}),(0,Q.jsx)(`th`,{children:`thinking`}),(0,Q.jsx)(`th`,{children:`effort`}),(0,Q.jsx)(`th`,{children:`beta`}),(0,Q.jsx)(`th`,{children:`metadata`}),(0,Q.jsx)(`th`,{children:`system`})]})}),(0,Q.jsx)(`tbody`,{children:e.map(e=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{className:`muted mono`,children:Pw(e.at)}),(0,Q.jsx)(`td`,{className:`mono`,children:e.endpoint}),(0,Q.jsxs)(`td`,{className:`mono`,title:e.resolvedModel,children:[e.model,e.resolvedModel&&e.resolvedModel!==e.model&&(0,Q.jsxs)(`span`,{className:`muted`,children:[` → `,e.resolvedModel]})]}),(0,Q.jsxs)(`td`,{className:`mono`,children:[e.thinkingType??`-`,e.thinkingBudgetTokens!==void 0&&(0,Q.jsxs)(`span`,{className:`muted`,children:[` (`,e.thinkingBudgetTokens,`)`]})]}),(0,Q.jsx)(`td`,{className:`mono`,children:e.outputConfigEffort??`-`}),(0,Q.jsx)(`td`,{className:`mono`,title:e.anthropicBeta,style:{maxWidth:160,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:e.anthropicBeta??`-`}),(0,Q.jsx)(`td`,{className:`mono`,title:e.metadataKeys?.join(`, `),children:e.hasMetadataUserId?`user_id ${e.userIdTag??``}`:n(`debug.claudeInbound.none`)}),(0,Q.jsx)(`td`,{className:`mono`,children:e.hasSystem?e.systemTag??`yes`:n(`debug.claudeInbound.none`)})]},e.id))})]})})]})}function Rw({debug:e,stream:n,streamEnabled:r,entries:i,scrollContainerRef:a,lineVirtualizer:o}){let{t:s}=t();return e?r?i.length===0?(0,Q.jsxs)(`div`,{className:`empty`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,style:{marginBottom:6},children:s(`debug.noLinesTitle`)}),(0,Q.jsx)(`div`,{className:`muted text-control`,style:{maxWidth:560,marginInline:`auto`},children:s(`debug.noLines.${n}`)})]}):(0,Q.jsx)(`div`,{ref:a,className:`log-detail-json`,style:{maxHeight:`calc(100vh - 280px)`,overflow:`auto`},children:(0,Q.jsx)(`div`,{style:{position:`relative`,height:o.getTotalSize(),width:`100%`},children:o.getVirtualItems().map(e=>(0,Q.jsx)(`div`,{ref:o.measureElement,"data-index":e.index,style:{position:`absolute`,top:0,left:0,width:`100%`,transform:`translateY(${e.start}px)`},children:`${Nw(i[e.index].at)}${i[e.index].line}`},e.key))})}):(0,Q.jsxs)(`div`,{className:`empty`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,style:{marginBottom:6},children:s(`debug.emptyTitle`)}),(0,Q.jsx)(`div`,{className:`muted text-control`,style:{maxWidth:560,marginInline:`auto`},children:s(`debug.empty`)})]}):null}function zw({debug:e,debugBusy:n,stream:r,onSetFlag:i,onReset:a,onStreamChange:o}){let{t:s}=t();return(0,Q.jsxs)(`div`,{className:`card`,style:{marginBottom:16,padding:`12px 14px`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:12,flexWrap:`wrap`},children:[(0,Q.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:16},children:[`debug`,`usage`,`injection`,`claude`].map(t=>{let r=Iw(e,t);return(0,Q.jsxs)(`div`,{style:{display:`inline-flex`,alignItems:`center`,gap:10,minWidth:220},children:[(0,Q.jsx)(on,{on:r,disabled:n,label:s(`debug.${t}`),onClick:()=>i(t,!r)}),(0,Q.jsx)(`span`,{className:`text-control`,children:s(`debug.${t}`)})]},t)})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:n,onClick:a,children:s(`debug.reset`)})]}),(e.enabled||e.usage||e.injection)&&(0,Q.jsxs)(`div`,{style:{display:`inline-flex`,gap:6,marginTop:12},children:[e.enabled&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm${r===`provider`?` btn-primary`:` btn-ghost`}`,onClick:()=>o(`provider`),children:s(`debug.streamProvider`)}),e.usage&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm${r===`usage`?` btn-primary`:` btn-ghost`}`,onClick:()=>o(`usage`),children:s(`debug.streamUsage`)}),e.injection&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm${r===`injection`?` btn-primary`:` btn-ghost`}`,onClick:()=>o(`injection`),children:s(`debug.streamInjection`)})]})]})}function Bw({embedded:e,refreshing:n,streamEnabled:r,follow:i,onRefresh:a,onFollowChange:o}){let{t:s}=t();return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:e?`row`:`page-head`,style:e?{justifyContent:`flex-end`,marginBottom:4}:void 0,children:[!e&&(0,Q.jsx)(`h2`,{children:s(`debug.title`)}),(0,Q.jsxs)(`div`,{style:{display:`inline-flex`,alignItems:`center`,gap:12},children:[(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:n||!r,onClick:a,children:[(0,Q.jsx)(re,{}),` `,s(`debug.refresh`)]}),(0,Q.jsxs)(`label`,{className:`muted text-control`,style:{cursor:`pointer`,display:`inline-flex`,alignItems:`center`,gap:6},children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:i,onChange:e=>o(e.target.checked)}),s(`debug.follow`)]})]})]}),(0,Q.jsx)(`p`,{className:`page-sub`,children:s(`debug.subtitle`)})]})}function Vw(e){return`debug-settings:${e}`}function Hw({apiBase:e,embedded:n,active:r=!0}){let{t:i}=t(),a=`ocx.debug.settings.v1:${e}`,o=Ua(a),s=Vw(e),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(`provider`),[f,p]=(0,Z.useState)([]),[m,h]=(0,Z.useState)(!0),[g,_]=(0,Z.useState)(!1),v=(0,Z.useRef)(0),y=(0,Z.useRef)(0),b=(0,Z.useRef)(0),x=(0,Z.useRef)(null),S=(0,Z.useRef)(null),C=(0,Z.useRef)(null),w=Ya(s,[e],async t=>{let n=await fetch(`${e}/api/debug`,{signal:t});if(!n.ok)throw Error(String(n.status));let r=await n.json();return qa(a,r),r},{pollMs:2e3,enabled:r,isEmpty:()=>!1,initialData:o??void 0}),T=w.state,E=w.data??o??null,D=Vt(`debug-claude-inbound:${e}`,[e,E?.claude],async t=>{let n=await fetch(`${e}/api/claude/inbound-debug`,{signal:t});if(!n.ok)return[];let r=await n.json();return Array.isArray(r.entries)?r.entries:[]},{pollMs:2e3,enabled:r&&!!E?.claude}).data??[],O=vw({count:f.length,getScrollElement:()=>S.current,estimateSize:()=>20,overscan:30,getItemKey:e=>f[e].seq}),k=(0,Z.useCallback)(e=>Fw(E,e),[E]);(0,Z.useEffect)(()=>{if(!E||k(u))return;let e=Mw.find(k);if(!e)return;let t=window.setTimeout(()=>d(e),0);return()=>window.clearTimeout(t)},[E,u,k]);let j=k(u),M=u===`provider`?`${e}/api/debug/logs`:u===`usage`?`${e}/api/debug/usage-logs`:`${e}/api/debug/injection-logs`,N=(0,Z.useCallback)(async(e,t)=>{let n=++b.current;if(!j){n===b.current&&(p([]),v.current=0);return}_(!0);try{let r=new URLSearchParams({limit:`500`});!e&&v.current>0&&r.set(`after`,String(v.current));let i=await fetch(`${M}?${r}`,{signal:t});if(!i.ok||t?.aborted||n!==b.current)return;let a=await i.json();if(t?.aborted||n!==b.current||a.length===0)return;p(t=>(e?a:[...t,...a]).slice(-2e3)),v.current=a[a.length-1].seq}catch{}finally{n===b.current&&_(!1)}},[M,j]);(0,Z.useEffect)(()=>{if(!r)return;let t=`${e}:${u}:${j}`,n=C.current!==t;if(C.current=t,!n&&f.length>0)return;v.current=0;let i=new AbortController,a=window.setTimeout(()=>{n&&p([]),N(!0,i.signal)},0);return()=>{window.clearTimeout(a),b.current+=1,i.abort()}},[r,e,u,j]);let P=(0,Z.useRef)(!1),F=(0,Z.useEffectEvent)(()=>{if(P.current)return;P.current=!0;let e=A(1e4);N(!1,e.signal).finally(()=>{e.clear(),P.current=!1})});(0,Z.useEffect)(()=>{if(!(!r||!m||!j))return ua(()=>F(),1e3)},[r,m,j]),(0,Z.useEffect)(()=>{m&&f.length>0&&O.scrollToIndex(f.length-1,{align:`end`})},[f,m,O]);let I=async t=>{let n=++y.current;l(!0);let r=async()=>{try{let r=await fetch(`${e}/api/debug`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(t)});if(!r.ok)return;let i=await r.json();if(n!==y.current)return;qa(a,i),Ut(s,i)}catch{}},i=(x.current??Promise.resolve()).then(r,r);x.current=i.then(()=>void 0,()=>void 0);try{await i}finally{n===y.current&&l(!1)}},L=async(e,t)=>{await I({[e]:t})},R=async()=>{await I({reset:!0})};return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Bw,{embedded:n,refreshing:g,streamEnabled:j,follow:m,onRefresh:()=>void N(!0),onFollowChange:h}),!E&&T.showError?(0,Q.jsxs)(`div`,{className:`notice notice-err`,role:`alert`,children:[(0,Q.jsx)(`span`,{children:i(`debug.loadFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>w.refresh(),children:i(`common.retry`)})]}):T.showSkeleton&&!E?(0,Q.jsx)(Ry,{label:i(`debug.loading`),rows:3}):E?(0,Q.jsx)(zw,{debug:E,debugBusy:c,stream:u,onSetFlag:(e,t)=>{L(e,t)},onReset:()=>{R()},onStreamChange:d}):null,E&&T.showError&&(0,Q.jsx)($,{tone:`err`,children:i(`debug.loadFailed`)}),E?.claude&&(0,Q.jsx)(Lw,{entries:D}),(0,Q.jsx)(Rw,{debug:!!E,stream:u,streamEnabled:j,entries:f,scrollContainerRef:S,lineVirtualizer:O})]})}function Uw(e,t){return t===`all`?!0:t===`claude`?e.surface===`claude`||e.surface===`claude-desktop`:t===`grok`?e.surface===`grok`:e.surface===void 0}var Ww=[`all`,`native`,`translated`,`legacy-bridge`,`blocked`,`none`],Gw={surface:`all`,model:``,provider:``,status:`all`,timeWindow:`all`,interceptedOnly:!1,conversationId:``};function Kw(e){return e.surface!==`all`||e.model.trim()!==``||e.provider.trim()!==``||e.status!==`all`||e.timeWindow!==`all`||e.minTokPerSec!==void 0||e.maxTokPerSec!==void 0||e.interceptedOnly||e.conversationId.trim()!==``||(e.protocolMode??`all`)!==`all`}function qw(e){return Array.isArray(e.attempts)?e.attempts.filter(e=>typeof e==`object`&&!!e):[]}function Jw(e){if(typeof e!=`string`)return;let t=e.trim();return t?t.toLowerCase():void 0}function Yw(e,t){if(e===`15m`)return t-9e5;if(e===`1h`)return t-36e5;if(e===`24h`)return t-864e5}function Xw(e,t,n=Date.now()){let r=t.model.trim().toLowerCase(),i=t.provider.trim().toLowerCase(),a=t.conversationId.trim(),o=Yw(t.timeWindow,n),s=t.protocolMode??`all`;return e.filter(e=>{if(!Uw(e,t.surface)||t.interceptedOnly&&typeof e.shadowCallRewrittenFrom!=`string`)return!1;if(s!==`all`){let t=Vm(e.protocolTrace)?.mode;if(s===`none`?t!==void 0:t!==s)return!1}if(a&&!Dw(e.conversationId,a,t.conversationQueryHash)||t.status===`success`&&(typeof e.status!=`number`||!Number.isInteger(e.status)||e.status<200||e.status>=300)||t.status===`errors`&&(typeof e.status!=`number`||!Number.isInteger(e.status)||e.status<400||e.status>599))return!1;let n=qw(e);if(r&&![Jw(e.model),Jw(e.resolvedModel),Jw(e.servedModel),...n.map(e=>Jw(e.model))].some(e=>e===r)||i&&![Jw(e.provider),...n.map(e=>Jw(e.provider))].some(e=>e===i)||o!==void 0&&(typeof e.timestamp!=`number`||!Number.isFinite(e.timestamp)||e.timestamp<o))return!1;let c=e.displayMetrics?.tokPerSecond?.kind===`value`&&Number.isFinite(e.displayMetrics.tokPerSecond.value)?e.displayMetrics.tokPerSecond.value:void 0;return!(t.minTokPerSec!==void 0&&(c===void 0||c<t.minTokPerSec)||t.maxTokPerSec!==void 0&&(c===void 0||c>=t.maxTokPerSec))})}function Zw(e,t){if(typeof t!=`string`)return;let n=t.trim(),r=Jw(n);if(!r)return;let i=e.get(r);(i===void 0||n<i)&&e.set(r,n)}function Qw(e){let t=new Map,n=new Map;for(let r of e){for(let e of[r.model,r.resolvedModel,r.servedModel,...qw(r).map(e=>e.model)])Zw(t,e);for(let e of[r.provider,...qw(r).map(e=>e.provider)])Zw(n,e)}return{models:[...t.values()].sort(),providers:[...n.values()].sort()}}var $w=[`all`,`claude`,`codex`,`grok`];function eT(e,t,n){let r=$w.indexOf(t),i=-1;if(e.key===`ArrowRight`||e.key===`ArrowDown`?i=(r+1)%$w.length:e.key===`ArrowLeft`||e.key===`ArrowUp`?i=(r-1+$w.length)%$w.length:e.key===`Home`?i=0:e.key===`End`&&(i=$w.length-1),i<0)return;e.preventDefault();let a=$w[i];n(a),document.getElementById(`logs-surface-${a}`)?.focus()}function tT({filters:e,options:t,hasActiveFilters:n,filteredCount:r,totalCount:i,t:a,onFilterChange:o,onResetFilters:s}){let c=(0,Z.useRef)(null),l=()=>{s(),c.current?.focus({preventScroll:!0})},u=e.maxTokPerSec===15?`slow`:e.minTokPerSec===15&&e.maxTokPerSec===50?`medium`:e.minTokPerSec===50?`fast`:`all`,d=t=>{let n=t===`slow`?{minTokPerSec:void 0,maxTokPerSec:15}:t===`medium`?{minTokPerSec:15,maxTokPerSec:50}:t===`fast`?{minTokPerSec:50,maxTokPerSec:void 0}:{minTokPerSec:void 0,maxTokPerSec:void 0};o({...e,...n})};return(0,Q.jsxs)(`div`,{className:`logs-filter-container`,children:[(0,Q.jsxs)(`div`,{className:`logs-toolbar`,children:[(0,Q.jsx)(`span`,{className:`muted text-control`,children:a(`logs.filter.surface.label`)}),(0,Q.jsx)(`div`,{className:`segmented logs-segmented`,role:`radiogroup`,"aria-label":a(`logs.filter.surface.label`),children:[`all`,`claude`,`codex`,`grok`].map(t=>(0,Q.jsx)(`button`,{ref:t===`all`?c:void 0,type:`button`,role:`radio`,"aria-checked":e.surface===t,id:`logs-surface-${t}`,tabIndex:e.surface===t?0:-1,className:`btn btn-sm${e.surface===t?` btn-primary`:` btn-ghost`}`,style:{background:e.surface===t?void 0:`transparent`,color:e.surface===t?void 0:`var(--muted)`},onClick:()=>o({...e,surface:t}),onKeyDown:n=>eT(n,t,t=>o({...e,surface:t})),children:a(`logs.filter.surface.${t}`)},t))}),(0,Q.jsxs)(`label`,{className:`muted text-control logs-filter-field`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:e.interceptedOnly,onChange:t=>o({...e,interceptedOnly:t.target.checked})}),a(`logs.filter.interceptedHelpersOnly`)]}),(0,Q.jsxs)(`label`,{className:`muted text-control logs-filter-field`,children:[a(`logs.filter.provider.label`),(0,Q.jsxs)(`select`,{className:`input select-sm`,value:e.provider,"aria-label":a(`logs.filter.provider.label`),onChange:t=>o({...e,provider:t.target.value}),children:[(0,Q.jsx)(`option`,{value:``,children:a(`logs.filter.provider.all`)}),t.providers.map(e=>(0,Q.jsx)(`option`,{value:e,children:be(e,a)},e))]})]}),(0,Q.jsxs)(`label`,{className:`muted text-control logs-filter-field`,children:[a(`logs.filter.model.label`),(0,Q.jsxs)(`select`,{className:`input select-sm`,value:e.model,"aria-label":a(`logs.filter.model.label`),onChange:t=>o({...e,model:t.target.value}),children:[(0,Q.jsx)(`option`,{value:``,children:a(`logs.filter.model.all`)}),t.models.map(e=>(0,Q.jsx)(`option`,{value:e,children:e},e))]})]}),(0,Q.jsxs)(`label`,{className:`muted text-control logs-filter-field`,children:[a(`logs.filter.time.label`),(0,Q.jsxs)(`select`,{className:`input select-sm`,value:e.timeWindow,"aria-label":a(`logs.filter.time.label`),onChange:t=>o({...e,timeWindow:t.target.value}),children:[(0,Q.jsx)(`option`,{value:`all`,children:a(`logs.filter.time.all`)}),(0,Q.jsx)(`option`,{value:`15m`,children:a(`logs.filter.time.15m`)}),(0,Q.jsx)(`option`,{value:`1h`,children:a(`logs.filter.time.1h`)}),(0,Q.jsx)(`option`,{value:`24h`,children:a(`logs.filter.time.24h`)})]})]}),(0,Q.jsxs)(`label`,{className:`muted text-control logs-filter-field`,children:[a(`logs.filter.speed.label`),(0,Q.jsxs)(`select`,{className:`input select-sm`,value:u,"aria-label":a(`logs.filter.speed.label`),onChange:e=>d(e.target.value),children:[(0,Q.jsx)(`option`,{value:`all`,children:a(`logs.filter.speed.all`)}),(0,Q.jsx)(`option`,{value:`slow`,children:a(`logs.filter.speed.slow`)}),(0,Q.jsx)(`option`,{value:`medium`,children:a(`logs.filter.speed.medium`)}),(0,Q.jsx)(`option`,{value:`fast`,children:a(`logs.filter.speed.fast`)})]})]}),(0,Q.jsxs)(`label`,{className:`muted text-control logs-filter-field`,children:[a(`logs.filter.status.label`),(0,Q.jsxs)(`select`,{className:`input select-sm`,value:e.status,"aria-label":a(`logs.filter.status.label`),onChange:t=>o({...e,status:t.target.value}),children:[(0,Q.jsx)(`option`,{value:`all`,children:a(`logs.filter.status.all`)}),(0,Q.jsx)(`option`,{value:`success`,children:a(`logs.filter.status.success`)}),(0,Q.jsx)(`option`,{value:`errors`,children:a(`logs.filter.status.errors`)})]})]}),(0,Q.jsxs)(`label`,{className:`muted text-control logs-filter-field`,children:[a(`logs.filter.protocol.label`),(0,Q.jsx)(`select`,{className:`input select-sm`,value:e.protocolMode??`all`,"aria-label":a(`logs.filter.protocol.label`),onChange:t=>o({...e,protocolMode:t.target.value}),children:Ww.map(e=>(0,Q.jsx)(`option`,{value:e,children:a(nT(e))},e))})]})]}),(0,Q.jsxs)(`div`,{className:`logs-toolbar logs-toolbar-secondary`,children:[(0,Q.jsxs)(`label`,{className:`muted text-control logs-filter-field`,children:[a(`logs.filter.conversation.label`),(0,Q.jsx)(`input`,{type:`search`,className:`input mono select-sm`,value:e.conversationId,onChange:t=>o({...e,conversationId:t.target.value}),placeholder:a(`logs.filter.conversation.placeholder`),"aria-label":a(`logs.filter.conversation.label`)})]}),n&&(0,Q.jsxs)(`div`,{className:`logs-filter-status`,children:[(0,Q.jsx)(`span`,{className:`muted text-control`,children:a(`logs.filter.showingCount`,{count:r,total:i})}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:l,children:[(0,Q.jsx)(ve,{}),` `,a(`logs.filter.reset`)]})]})]})]})}function nT(e){return e===`all`?`logs.filter.protocol.all`:e===`none`?`logs.filter.protocol.none`:nh[e]}function rT({trace:e,t}){let n=Vm(e);if(!n)return null;let r=ch(n,t),i=t(nh[n.mode]);return(0,Q.jsxs)(`span`,{className:`badge badge-muted protocol-path-badge`,title:t(`logs.protocol.badgeTitle`,{path:r,mode:i}),"data-protocol-mode":n.mode,children:[r,` · `,i]})}function iT({trace:e,t}){let n=Vm(e);return(0,Q.jsxs)(`section`,{className:`log-detail-section`,"aria-labelledby":`log-detail-protocol`,children:[(0,Q.jsx)(`h4`,{id:`log-detail-protocol`,className:`log-detail-section-title`,children:t(`logs.detail.protocol.section`)}),n?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`log-detail-grid`,"data-protocol-mode":n.mode,children:[(0,Q.jsx)(`span`,{className:`muted`,children:t(`logs.detail.protocol.inbound`)}),(0,Q.jsx)(`span`,{children:oh(n.inbound,t)}),(0,Q.jsx)(`span`,{className:`muted`,children:t(`logs.detail.protocol.mode`)}),(0,Q.jsx)(`span`,{children:t(nh[n.mode])}),n.upstream&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:t(`logs.detail.protocol.upstream`)}),(0,Q.jsx)(`span`,{children:oh(n.upstream,t)})]}),n.requestPath.length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:t(`logs.detail.protocol.requestPath`)}),(0,Q.jsx)(`span`,{children:sh(n.requestPath,t)}),(0,Q.jsx)(`span`,{className:`muted`,children:t(`logs.detail.protocol.responsePath`)}),(0,Q.jsx)(`span`,{children:sh(n.responsePath,t)})]}),(0,Q.jsx)(`span`,{className:`muted`,children:t(`logs.detail.protocol.reasons`)}),(0,Q.jsx)(`span`,{className:`mono log-detail-break`,children:n.reasonCodes.join(`, `)||`–`}),n.featureEffects&&n.featureEffects.length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:t(`logs.detail.protocol.features`)}),(0,Q.jsx)(`span`,{children:n.featureEffects.map(e=>(0,Q.jsxs)(`span`,{style:{display:`block`},children:[(0,Q.jsx)(`code`,{children:e.feature}),`: `,t(rh[e.disposition])]},e.feature))})]}),n.attempts&&n.attempts.length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:t(`logs.detail.protocol.attempts`)}),(0,Q.jsx)(`span`,{children:n.attempts.map(e=>(0,Q.jsxs)(`span`,{style:{display:`block`},children:[t(`logs.detail.protocol.attempt`,{ordinal:e.ordinal}),`:`,` `,sh(e.requestPath,t),` · `,t(nh[e.mode])]},e.ordinal))})]})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm protocol-deep-link`,onClick:()=>Kg({inbound:n.inbound,upstream:Rg(n.upstream)}),children:t(`protocolLinks.labEvidence`)})]}):(0,Q.jsx)(`p`,{className:`log-detail-notes-line muted`,children:t(`logs.detail.protocol.none`)})]})}function aT(e,t){return typeof e==`number`&&Number.isFinite(e)&&e>=0?{generatedAt:e,receivedAt:t}:void 0}function oT(e,t,n){return e?e.generatedAt+Math.max(0,t-e.receivedAt):n}function sT(){return Cg(window.location.hash)===`logs/debug`?`debug`:`logs`}function cT(e){window.location.hash=e===`debug`?`logs/debug`:`logs`}function lT(e){e.key===`ArrowLeft`||e.key===`Home`?(e.preventDefault(),cT(`logs`),document.getElementById(`logs-tab-logs`)?.focus()):(e.key===`ArrowRight`||e.key===`End`)&&(e.preventDefault(),cT(`debug`),document.getElementById(`logs-tab-debug`)?.focus())}function uT(e){return e.servedModel!==void 0&&e.servedModel!==(e.wireModel??e.model)}function dT(e,t){let n=e?.confirmation;if(!n)return``;let r=n===`downgraded`&&e?.fastDowngradeReason?`: ${e.fastDowngradeReason}`:``;return` (${t(`logs.modelTooltip.tierOutcome.${n}`)}${r})`}function fT(e,t){return[uT(e)?t(`logs.modelRerouteTitle`):void 0,`${t(`logs.modelTooltip.model`)}=${e.model}`,e.resolvedModel?`${t(`logs.modelTooltip.resolvedModel`)}=${e.resolvedModel}`:void 0,e.servedModel?`${t(`logs.modelTooltip.servedModel`)}=${e.servedModel}`:void 0,e.wireModel?`${t(`logs.modelTooltip.wireModel`)}=${e.wireModel}`:void 0,e.requestedServiceTier?`${t(`logs.modelTooltip.requestedTier`)}=${e.requestedServiceTier}`:void 0,e.configuredServiceTier?`${t(`logs.modelTooltip.configuredTier`)}=${e.configuredServiceTier}`:void 0,e.responseServiceTier?`${t(`logs.modelTooltip.responseTier`)}=${e.responseServiceTier}${dT(e.tierOutcome,t)}`:void 0,e.modelSupportsServiceTier===void 0?void 0:`${t(`logs.modelTooltip.supportsTier`)}=${e.modelSupportsServiceTier}`].filter(Boolean).join(` · `)}function pT(e){return e.requestedSpeedLabel||void 0}function mT(e){switch(e.timingBasis){case`generation-window`:return{short:`logs.decodeBasis.generation`,detail:`logs.detail.decodeGeneration`,hint:`logs.detail.decodeBasisHint.generation`};case`legacy-post-visible-output`:return{short:`logs.decodeBasis.legacy`,detail:`logs.detail.decodeLegacy`,hint:`logs.detail.decodeBasisHint.legacy`};default:return{short:`logs.decodeBasis.unknown`,detail:`logs.detail.decodeUnknown`,hint:`logs.detail.decodeBasisHint.unknown`}}}var hT=new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`,currencyDisplay:`narrowSymbol`,minimumFractionDigits:4,maximumFractionDigits:4});function gT(e,t,n,r=!1){if(!Number.isFinite(e)||e<0)return t(`logs.cost.unavailable`);let i=hT.format(e);return t(r?`logs.cost.lowerBound`:`logs.cost.approximate`,{amount:i})}function _T(e,t,n){return!e||e.kind===`unavailable`?t(`logs.cost.unavailable`):gT(e.estimate.cost.total,t,n,e.estimate.priorityLowerBound)}function vT(e){let t=0,n=!0,r=0,i=0,a=0;for(let o of e){if(o.usageStatus===`unsupported`){a+=1;continue}let e=o.displayMetrics?.cost;if(e?.kind===`value`){let i=e.estimate.cost.total;if(Number.isFinite(i)&&i>=0){t+=i,r+=1,n&&=e.estimate.priorityLowerBound===!0;continue}}i+=1}return{estimatedCostUsd:t,priorityLowerBound:r>0&&n,unpricedRequests:i,unmeteredRequests:a}}function yT(e){return e===`cursor`||e.startsWith(`cursor-`)}function bT(e){let t=e.usage;if(!t)return{};let n=typeof t.cacheCreationInputTokens==`number`?t.cacheCreationInputTokens:void 0;return{read:typeof t.cacheReadInputTokens==`number`?t.cacheReadInputTokens:typeof t.cachedInputTokens==`number`&&n!==void 0?Math.max(0,t.cachedInputTokens-n):t.cachedInputTokens,write:n}}function xT(e,t){if(!e.usage)return;let n=bT(e),r=[`${t(`logs.tokens.input`)}=${e.usage.inputTokens}`,`${t(`logs.tokens.output`)}=${e.usage.outputTokens}`];return n.read!==void 0&&r.push(`${t(`logs.tokens.cacheRead`)}=${n.read}`),n.write!==void 0&&r.push(`${t(`logs.tokens.cacheWrite`)}=${n.write}`),typeof e.usage.contextTotalTokens==`number`&&r.push(`${t(`logs.tokens.contextTotal`)}=${e.usage.contextTotalTokens}`),typeof e.usage.reasoningOutputTokens==`number`&&r.push(`${t(`logs.tokens.reasoning`)}=${e.usage.reasoningOutputTokens}`),e.usageStatus===`estimated`&&r.push(t(`logs.tokens.estimatedNote`)),e.usageStatus===`estimated`&&n.read===void 0&&n.write===void 0&&r.push(t(yT(e.provider)?`logs.tokens.noCacheCursorNote`:`logs.tokens.noCacheNote`)),r.join(` · `)}function ST(e){return e===void 0||typeof e==`string`}function CT(e){if(e===void 0)return!0;if(!e||typeof e!=`object`||!ST(e.routeKind)||e.profile!==void 0&&(!e.profile||typeof e.profile!=`object`||!ST(e.profile.id)||!ST(e.profile.revision))||e.selected!==void 0&&(!e.selected||typeof e.selected!=`object`||!ST(e.selected.provider)||!ST(e.selected.model)||!ST(e.selected.reason)))return!1;if(e.candidates===void 0)return!0;if(!Array.isArray(e.candidates))return!1;for(let t of e.candidates){if(!t||typeof t!=`object`||!ST(t.provider)||!ST(t.model)||t.eligible!==void 0&&typeof t.eligible!=`boolean`)return!1;if(t.exclusions!==void 0){if(!Array.isArray(t.exclusions))return!1;for(let e of t.exclusions)if(!e||typeof e!=`object`||!ST(e.code))return!1}}return!0}function wT(e){if(e.routeDecision===void 0||CT(e.routeDecision))return e;let t={...e};return delete t.routeDecision,t}function TT(e){if(Array.isArray(e))return{rows:e,cursor:null,reset:!1};if(!e||typeof e!=`object`)throw Error(`Invalid log response`);let t=e,n=Object.hasOwn(t,`cursor`)||Object.hasOwn(t,`reset`);if(t.logs!==void 0&&!Array.isArray(t.logs)||n&&(!Array.isArray(t.logs)||typeof t.cursor!=`string`||t.cursor.length===0||t.cursor.length>512||!/^[A-Za-z0-9_-]+$/.test(t.cursor)||typeof t.reset!=`boolean`))throw Error(`Invalid log response`);return{rows:t.logs??[],cursor:n?t.cursor:null,reset:t.reset===!0,generatedAt:t.generatedAt,...typeof t.timeZone==`string`?{timeZone:t.timeZone}:{},...typeof t.total==`number`&&Number.isFinite(t.total)&&t.total>=0?{total:t.total}:{}}}function ET(e,t,n=2e3){if(t.length===0&&e.length<=n)return e;let r=[...e,...t];return r.length>n?r.slice(r.length-n):r}var DT=Object.freeze([`completed`,`failed`,`incomplete`,`aborted`]);Object.freeze(DT.filter(e=>e!==`aborted`)),Object.freeze([`terminal`,`client_cancel`,`non_stream`,`body_stall`,`body_overflow`]);function OT(e){return e.closeReason===`client_cancel`||e.status===499?`aborted`:e.terminalStatus===`failed`?`failed`:e.terminalStatus===`incomplete`||e.closeReason===`body_stall`||e.closeReason===`body_overflow`?`incomplete`:e.terminalStatus===`completed`||e.terminalStatus===void 0&&(e.status===101||e.status>=200&&e.status<400)?`completed`:`failed`}function kT(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function AT(e){return kT(e?.sends)}function jT(e){return kT(e?.unresolved)}function MT(e){return`ocx.logs.list.v1:${e}`}var NT=[];function PT(e){if(!Array.isArray(e))return null;for(let t of e)if(!t||typeof t!=`object`||typeof t.timestamp!=`number`||typeof t.model!=`string`||typeof t.provider!=`string`||typeof t.status!=`number`||typeof t.durationMs!=`number`||t.shadowCallRewrittenFrom!==void 0&&typeof t.shadowCallRewrittenFrom!=`string`||!CT(t.routeDecision))return null;return e}function FT(e){if(!e.usage)return typeof e.totalTokens==`number`?e.totalTokens:void 0;let t=e.usage.inputTokens+e.usage.outputTokens,n=e.usage.totalTokens??e.totalTokens;return typeof n==`number`?Math.max(n,t):t}function IT(e){let t=FT(e),n=e.usage?.contextTotalTokens;return typeof n==`number`?Math.max(t??0,n)||void 0:t}function LT(e){let t=e.requestedEffort?.replace(/\s*->\s*/g,` → `),n=e.effectiveEffort;return t?!n||t===n||t.split(` → `).at(-1)===n?t:`${t} → ${n}`:n??`-`}function RT(e){if(!(!e.reasoningWireField||e.reasoningWireValue===void 0))return`${e.reasoningWireField}=${e.reasoningWireValue}`}function zT(e){return uT(e)?(0,Q.jsxs)(Q.Fragment,{children:[_v(e.wireModel??e.model),` → `,_v(e.servedModel)]}):_v(e.servedModel??e.resolvedModel??e.model)}function BT(e,t){if(!e||e.kind===`unavailable`||!Number.isFinite(e.value)||e.value<=0)return`—`;let n=e.value>=100?0:1,r=new Intl.NumberFormat(t,{minimumFractionDigits:n,maximumFractionDigits:n}).format(e.value);return`${e.estimated?`~`:``}${r}`}var VT=2e3,HT=3e4,UT=4,WT=3,GT={usage_missing:`logs.detail.reason.usage_missing`,usage_unsupported:`logs.detail.reason.usage_unsupported`,output_missing:`logs.detail.reason.output_missing`,invalid_duration:`logs.detail.reason.invalid_duration`,price_unmatched:`logs.detail.reason.price_unmatched`,invalid_cache_breakdown:`logs.detail.reason.invalid_cache_breakdown`,invalid_usage:`logs.detail.reason.invalid_usage`,combo_attempt_unavailable:`logs.detail.reason.combo_attempt_unavailable`,ttft_missing:`logs.detail.reason.ttft_missing`,decode_window_too_short:`logs.detail.reason.decode_window_too_short`},KT={usage_estimated:`logs.detail.estimate.usage_estimated`,cache_detail_missing:`logs.detail.estimate.cache_detail_missing`,expected_price_overlay:`logs.detail.estimate.expected_price_overlay`,provider_cost_overlay:`logs.detail.estimate.provider_cost_overlay`,priority_lower_bound:`logs.detail.estimate.priority_lower_bound`},qT={"transient-5xx":`logs.detail.attempt.recovery.transient5xx`,"connection-reset":`logs.detail.attempt.recovery.connectionReset`,"oauth-401":`logs.detail.attempt.recovery.oauth401`,"oauth-account-403":`logs.detail.attempt.recovery.oauthAccount403`,"key-401":`logs.detail.attempt.recovery.key401`,"key-429":`logs.detail.attempt.recovery.key429`,"rate-limit-429":`logs.detail.attempt.recovery.rateLimit429`,"anthropic-oauth-429":`logs.detail.attempt.recovery.anthropicOauth429`,"oauth-account-429":`logs.detail.attempt.recovery.oauthAccount429`,"image-413":`logs.detail.attempt.recovery.image413`,"empty-completion":`logs.detail.attempt.recovery.emptyCompletion`,"console-go-upload-retry":`logs.detail.attempt.recovery.consoleGoUpload`,"opaque-blob-rejection":`logs.detail.attempt.recovery.opaqueBlobRejection`,"reasoning-effort-downgrade":`logs.detail.attempt.recovery.reasoningEffortDowngrade`,"anthropic-fast-downgrade":`logs.detail.attempt.recovery.anthropicFastDowngrade`};function JT(e){return GT[e]}function YT(e){return KT[e]}function XT(e){return qT[e]??`logs.detail.attempt.recovery.unknown`}function ZT(e){return e===`verified`?`logs.detail.verification.verified`:`logs.detail.verification.derived`}var QT={completed:`logs.detail.outcome.completed`,failed:`logs.detail.outcome.failed`,incomplete:`logs.detail.outcome.incomplete`,aborted:`logs.detail.outcome.aborted`},$T={"transport-unsent":`logs.detail.cause.transportUnsent`,"transport-ambiguous":`logs.detail.cause.transportAmbiguous`,"upstream-declined":`logs.detail.cause.upstreamDeclined`,"rate-limit":`logs.detail.cause.rateLimit`,"quota-exhausted":`logs.detail.cause.quotaExhausted`,"credential-rejected":`logs.detail.cause.credentialRejected`,"policy-refusal":`logs.detail.cause.policyRefusal`,"parameter-rejected":`logs.detail.cause.parameterRejected`,"ciphertext-refusal":`logs.detail.cause.ciphertextRefusal`,"payload-too-large":`logs.detail.cause.payloadTooLarge`,"payload-rejected":`logs.detail.cause.payloadRejected`,"upstream-fault":`logs.detail.cause.upstreamFault`,"empty-output":`logs.detail.cause.emptyOutput`,"client-cancelled":`logs.detail.cause.clientCancelled`,"local-refusal":`logs.detail.cause.localRefusal`},eE={"pre-header":`logs.detail.stage.preHeader`,"headers-only":`logs.detail.stage.headersOnly`,"protocol-prelude":`logs.detail.stage.protocolPrelude`,"semantic-output":`logs.detail.stage.semanticOutput`,"side-effect":`logs.detail.stage.sideEffect`,terminal:`logs.detail.stage.terminal`},tE={permitted:`logs.detail.resend.permitted`,"permitted-after-repair":`logs.detail.resend.permittedAfterRepair`,"refused-ambiguous":`logs.detail.resend.refusedAmbiguous`,"refused-committed":`logs.detail.resend.refusedCommitted`,"refused-futile":`logs.detail.resend.refusedFutile`};function nE(e){return QT[OT(e)]}function rE(e,t){let n=e.failureCause===void 0?void 0:$T[e.failureCause],r=e.failureStage===void 0?void 0:eE[e.failureStage],i=e.resendPermission===void 0?void 0:tE[e.resendPermission];return{...e.failureCause?{cause:n?t(n):e.failureCause}:{},...e.failureStage?{stage:r?t(r):e.failureStage}:{},...e.resendPermission?{resend:i?t(i):e.resendPermission}:{}}}function iE(e){return e>=200&&e<300?`var(--green)`:e>=400?`var(--red)`:`var(--amber)`}function aE(e,t,n){let r=n?{timeZone:n}:void 0;try{return{date:new Date(e).toLocaleDateString(t,r),time:new Date(e).toLocaleTimeString(t,r)}}catch{return{date:new Date(e).toLocaleDateString(t),time:new Date(e).toLocaleTimeString(t)}}}function oE(e,t,n){let{date:r,time:i}=aE(e,t,n);return`${r} ${i}`}function sE(e){let t=0;for(let n of e){let e=FT(n);e!==void 0&&(t+=e)}return{requests:e.length,totalTokens:t,...vT(e)}}function cE({apiBase:e}){let{t:n,locale:r}=t(),i=MT(e),a=PT(Ua(i)),[o,s]=(0,Z.useState)(!0),[c,l]=(0,Z.useState)({error:null,count:0}),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(Gw),[m,h]=(0,Z.useState)(()=>Date.now()),g=(0,Z.useRef)({key:i,active:!1,request:0}),_=(0,Z.useRef)({key:i,cursor:null,rows:[]});(0,Z.useLayoutEffect)(()=>{let e={key:i,active:!0,request:0};return g.current=e,_.current={key:i,cursor:null,rows:[]},h(Date.now()),()=>{e.active=!1}},[i]);let v=(0,Z.useCallback)(()=>{let e=g.current;return oT(e.key===i?e.anchor:void 0,performance.now(),Date.now())},[i]),y=(0,Z.useRef)(null),b=(0,Z.useRef)({key:i,failures:0,nextAttemptAt:0,error:null}),x=k.find(e=>e.code===r)?.htmlLang,[S,C]=(0,Z.useState)();(0,Z.useEffect)(()=>{let t=new AbortController,n=!1;return fetch(`${e}/api/settings`,{signal:t.signal}).then(e=>e.ok?e.json():null).then(e=>{n||!e||typeof e.timeZone==`string`&&e.timeZone.trim()&&C(e.timeZone.trim())}).catch(()=>{}),()=>{n=!0,t.abort()}},[e]);let[w,T]=(0,Z.useState)(sT),[E,D]=(0,Z.useState)(()=>sT()===`debug`);(0,Z.useEffect)(()=>{let e=()=>T(sT());return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[]),(0,Z.useEffect)(()=>{w===`debug`&&D(!0)},[w]);let O=cT,A=(0,Z.useCallback)(async t=>{let n=g.current;if(t.aborted||!n.active||n.key!==i)throw t.reason??new DOMException(`Obsolete log request`,`AbortError`);let r=++n.request,a=()=>!t.aborted&&n.active&&g.current===n&&n.request===r,o=b.current;if(o.key!==i&&(o={key:i,failures:0,nextAttemptAt:0,error:null},b.current=o),o.failures>0&&Date.now()<o.nextAttemptAt)throw o.error;let s=_.current,c=s.key===i?s.cursor:null,l=`${e}/api/logs?limit=2000${c?`&cursor=${encodeURIComponent(c)}`:``}`;try{let e=await fetch(l,{signal:t});if(!e.ok)throw Error(`${e.status} ${e.statusText}`.trim());let r=await e.json(),o=performance.now(),u=TT(r),d=u.rows.map(wT),f=c&&u.cursor&&!u.reset?ET(s.rows,d):d;if(!a())throw t.reason??new DOMException(`Obsolete log request`,`AbortError`);_.current={key:i,cursor:u.cursor,rows:f};let m=Qw(f);p(e=>{let t=e.model.trim().toLowerCase(),n=e.provider.trim().toLowerCase(),r=t?m.models.find(e=>e.trim().toLowerCase()===t)??``:``,i=n?m.providers.find(e=>e.trim().toLowerCase()===n)??``:``;return e.model===r&&e.provider===i?e:{...e,model:r,provider:i}});let g=aT(u.generatedAt,o);return g&&(n.anchor=g),h(oT(n.anchor,o,Date.now())),b.current={key:i,failures:0,nextAttemptAt:0,error:null},qa(i,f),f}catch(e){if(!a())throw e;let t=e??Error(`log request failed`),n=o.failures+1,r=VT*2**Math.min(n,UT);throw b.current={key:i,failures:n,nextAttemptAt:Date.now()+r,error:t},t}},[e,i]),j=Ya(i,[e],A,{isEmpty:e=>e.length===0,enabled:w===`logs`,pollMs:o?VT:void 0,initialData:a??void 0}),M=j.state,N=M.data??a??NT,P=j.refresh,F=(0,Z.useCallback)(()=>{b.current={key:i,failures:0,nextAttemptAt:0,error:null},_.current={key:i,cursor:null,rows:[]},P({forceLoading:!0})},[P,i]),I=!j.refreshing&&M.showError;!j.refreshing&&!M.showError&&M.data!==void 0&&c.count!==0?l({error:null,count:0}):I&&c.error!==M.error&&l(e=>({error:M.error,count:e.count+1}));let L=c.count>=WT||!o&&I,R=u?jw(u.status,r):null,z=f.conversationId.trim();(0,Z.useEffect)(()=>{if(f.timeWindow===`all`||w!==`logs`)return;h(v());let e=window.setInterval(()=>h(v()),HT);return()=>window.clearInterval(e)},[f.timeWindow,w,v]),(0,Z.useEffect)(()=>{let e=!1;if(!z){p(e=>e.conversationQueryHash===void 0?e:{...e,conversationQueryHash:void 0});return}return Ew(z).then(t=>{e||p(e=>e.conversationQueryHash?.join(` `)===t.join(` `)?e:{...e,conversationQueryHash:t})}),()=>{e=!0}},[z]);let B=(0,Z.useMemo)(()=>Qw(N),[N]),V=Kw(f),H=(0,Z.useMemo)(()=>Xw(N,f,m),[N,f,m]),U=z?sE(H):null,W=vw({count:H.length,getScrollElement:()=>y.current,estimateSize:()=>92,overscan:15,getItemKey:e=>{let t=H[H.length-1-e];return t.requestId??`${t.timestamp}:${t.model}:${t.provider}`}}),G=W.getVirtualItems(),ee=G.length>0?G[0].start:0,te=G.length>0?W.getTotalSize()-G[G.length-1].end:0;return(0,Q.jsxs)(`div`,{className:`logs-page`,children:[(0,Q.jsxs)(`div`,{className:`page-head`,children:[(0,Q.jsx)(`h2`,{children:n(`nav.logs`)}),w===`logs`&&(0,Q.jsxs)(`label`,{className:`muted text-control logs-auto-refresh`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:o,onChange:e=>s(e.target.checked)}),n(`logs.autoRefresh`)]})]}),(0,Q.jsxs)(`div`,{className:`page-tabs`,role:`tablist`,"aria-label":n(`nav.logs`),children:[(0,Q.jsx)(`button`,{type:`button`,role:`tab`,id:`logs-tab-logs`,"aria-selected":w===`logs`,"aria-controls":`logs-panel-logs`,tabIndex:w===`logs`?0:-1,className:`page-tab${w===`logs`?` page-tab--active`:``}`,onClick:()=>O(`logs`),onKeyDown:lT,children:n(`logs.tabLogs`)}),(0,Q.jsx)(`button`,{type:`button`,role:`tab`,id:`logs-tab-debug`,"aria-selected":w===`debug`,"aria-controls":`logs-panel-debug`,tabIndex:w===`debug`?0:-1,className:`page-tab${w===`debug`?` page-tab--active`:``}`,onClick:()=>O(`debug`),onKeyDown:lT,children:n(`logs.tabDebug`)})]}),E&&(0,Q.jsx)(`div`,{role:`tabpanel`,id:`logs-panel-debug`,"aria-labelledby":`logs-tab-debug`,hidden:w!==`debug`,children:(0,Q.jsx)(Hw,{apiBase:e,embedded:!0,active:w===`debug`})}),(0,Q.jsxs)(`div`,{role:`tabpanel`,id:`logs-panel-logs`,"aria-labelledby":`logs-tab-logs`,hidden:w!==`logs`,children:[(0,Q.jsx)(tT,{filters:f,options:B,hasActiveFilters:V,filteredCount:H.length,totalCount:N.length,t:n,onFilterChange:p,onResetFilters:()=>p(Gw)}),U&&(0,Q.jsx)(`div`,{className:`logs-conversation-totals`,children:(0,Q.jsxs)($,{tone:`ok`,children:[n(`logs.conversation.totals`,{requests:U.requests,tokens:K(U.totalTokens,x??r),cost:gT(U.estimatedCostUsd,n,x,U.priorityLowerBound)}),` `,(0,Q.jsxs)(`span`,{className:`muted`,children:[n(`logs.conversation.scope`),U.unpricedRequests+U.unmeteredRequests>0?` ${n(`logs.conversation.excluded`,{unpriced:U.unpricedRequests,unmetered:U.unmeteredRequests})}`:``]})]})}),M.kind===`failed-cold`&&(0,Q.jsxs)($,{tone:`err`,children:[M.error instanceof Error?`${n(`logs.loadError`)} ${M.error.message}`:n(`logs.loadError`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:F,disabled:M.refreshing,children:n(`common.retry`)})]}),L&&N.length>0&&(0,Q.jsxs)($,{tone:`err`,children:[n(`logs.loadError`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:F,disabled:j.refreshing,children:n(`common.retry`)})]}),M.kind===`failed-cold`?null:M.showSkeleton&&N.length===0?(0,Q.jsx)(Ry,{label:n(`common.loading`),rows:6}):H.length===0?(0,Q.jsx)(ln,{title:N.length>0&&V?n(`logs.noMatchingRequests`):n(`logs.noRequests`)}):(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsx)(`div`,{ref:y,className:`tbl-wrap logs-table-wrap`,children:(0,Q.jsxs)(`table`,{className:`tbl logs-table`,children:[(0,Q.jsxs)(`colgroup`,{children:[(0,Q.jsx)(`col`,{className:`logs-col-time`}),(0,Q.jsx)(`col`,{className:`logs-col-tokens`}),(0,Q.jsx)(`col`,{className:`logs-col-rate`}),(0,Q.jsx)(`col`,{className:`logs-col-cost`}),(0,Q.jsx)(`col`,{className:`logs-col-model`}),(0,Q.jsx)(`col`,{className:`logs-col-effort`}),(0,Q.jsx)(`col`,{className:`logs-col-provider`}),(0,Q.jsx)(`col`,{className:`logs-col-status`}),(0,Q.jsx)(`col`,{className:`logs-col-request`}),(0,Q.jsx)(`col`,{className:`logs-col-duration`})]}),(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:n(`logs.col.time`)}),(0,Q.jsx)(`th`,{className:`num log-col-tokens`,children:n(`logs.col.tokens`)}),(0,Q.jsx)(`th`,{className:`num log-col-rate`,title:n(`logs.metric.tokPerSecTitle`),children:n(`logs.col.tokPerSec`)}),(0,Q.jsx)(`th`,{className:`num log-col-cost`,title:n(`logs.metric.estimatedCostTitle`),children:n(`logs.col.estimatedCost`)}),(0,Q.jsx)(`th`,{className:`log-col-model`,children:n(`logs.col.model`)}),(0,Q.jsx)(`th`,{children:n(`logs.col.effort`)}),(0,Q.jsx)(`th`,{children:n(`logs.col.provider`)}),(0,Q.jsx)(`th`,{children:n(`logs.col.status`)}),(0,Q.jsx)(`th`,{children:n(`logs.col.request`)}),(0,Q.jsx)(`th`,{className:`num log-col-duration`,children:n(`logs.col.duration`)})]})}),(0,Q.jsxs)(`tbody`,{children:[ee>0&&(0,Q.jsx)(`tr`,{children:(0,Q.jsx)(`td`,{colSpan:10,className:`logs-virtual-spacer`,style:{height:ee}})}),G.map(e=>{let t=H[H.length-1-e.index],i=RT(t),a=t.displayMetrics?.decodeTokPerSecond,o=mT(a?.kind===`value`?a:{}),s=aE(t.timestamp,x,S);return(0,Q.jsxs)(`tr`,{"data-index":e.index,ref:W.measureElement,children:[(0,Q.jsx)(`td`,{className:`muted mono log-col-time`,children:(0,Q.jsxs)(`span`,{className:`logs-stack-start`,children:[(0,Q.jsx)(`span`,{children:s.date}),(0,Q.jsx)(`span`,{children:s.time})]})}),(0,Q.jsx)(`td`,{className:`num mono log-col-tokens`,title:xT(t,n),children:(()=>{let e=IT(t),{read:i,write:a}=bT(t);return e===void 0?(0,Q.jsx)(`span`,{className:`muted`,children:n(`logs.tokens.${t.usageStatus??`unreported`}`)}):(0,Q.jsxs)(`span`,{className:`logs-stack-end`,children:[(0,Q.jsxs)(`span`,{children:[t.usageStatus===`estimated`?`~`:``,K(e,r)]}),i!==void 0&&i>0&&(0,Q.jsxs)(`span`,{className:`muted text-caption leading-tight`,children:[`c `,K(i,r)]}),a!==void 0&&a>0&&(0,Q.jsxs)(`span`,{className:`muted text-caption leading-tight`,children:[`w `,K(a,r)]}),t.usageStatus===`estimated`&&i===void 0&&a===void 0&&(0,Q.jsx)(`span`,{className:`muted text-caption leading-tight`,children:n(yT(t.provider)?`logs.tokens.noCacheCursor`:`logs.tokens.noCache`)})]})})()}),(0,Q.jsxs)(`td`,{className:`num mono log-col-rate`,children:[BT(t.displayMetrics?.tokPerSecond,x),a?.kind===`value`&&(0,Q.jsxs)(`span`,{className:`logs-stack-end logs-decode-rate muted`,title:n(o.detail),children:[(0,Q.jsx)(`span`,{children:BT(a,x)}),(0,Q.jsx)(`span`,{className:`text-caption`,children:n(o.short)})]})]}),(0,Q.jsx)(`td`,{className:`num mono log-col-cost`,children:_T(t.displayMetrics?.cost,n,x)}),(0,Q.jsx)(`td`,{className:`mono log-col-model`,title:fT(t,n),children:(0,Q.jsxs)(`span`,{className:`logs-model-cell`,children:[(0,Q.jsx)(`span`,{children:zT(t)}),t.shadowCallRewrittenFrom&&(0,Q.jsx)(`span`,{className:`badge badge-muted`,style:{whiteSpace:`nowrap`},title:n(`logs.badge.interceptedHelperTitle`),children:n(`logs.badge.interceptedHelper`,{model:t.shadowCallRewrittenFrom})}),(t.surface===`claude`||t.surface===`claude-desktop`)&&(0,Q.jsx)(`span`,{className:`badge badge-accent`,children:n(`logs.badge.claude`)}),t.surface===`grok`&&(0,Q.jsx)(`span`,{className:`badge badge-accent`,children:n(`logs.badge.grok`)}),pT(t)&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:pT(t)}),(0,Q.jsx)(rT,{trace:t.protocolTrace,t:n})]})}),(0,Q.jsx)(`td`,{className:`mono log-reasoning-cell`,title:i,children:LT(t)}),(0,Q.jsx)(`td`,{className:`muted`,children:be(t.provider,n)}),(0,Q.jsx)(`td`,{children:(0,Q.jsxs)(`span`,{className:`log-status-cell`,children:[(0,Q.jsx)(`span`,{className:`mono font-semibold`,style:{color:iE(t.status)},children:t.status}),(0,Q.jsx)(`button`,{type:`button`,className:`log-detail-btn`,onClick:()=>d(t),"aria-label":`${n(`logs.details`)}: ${t.requestId??t.status}`,children:n(`logs.details`)})]})}),(0,Q.jsx)(`td`,{className:`muted mono`,children:(0,Q.jsx)(`span`,{className:`log-reqid`,title:t.requestId,children:t.requestId??`-`})}),(0,Q.jsxs)(`td`,{className:`num log-col-duration`,children:[t.durationMs,`ms`]})]},e.key)}),te>0&&(0,Q.jsx)(`tr`,{children:(0,Q.jsx)(`td`,{colSpan:10,className:`logs-virtual-spacer`,style:{height:te}})})]})]})})}),u&&(0,Q.jsx)(uE,{detail:u,detailInfo:R,localeCode:r,localeTag:x,serverTimeZone:S,t:n,onClose:()=>d(null),onFilterConversation:e=>{p(t=>({...t,conversationId:e})),d(null)}})]})]})}function lE(e){let t=(0,Z.useRef)(null);return(0,Z.useEffect)(()=>{let n=t.current;n&&(e&&!n.open?n.showModal():!e&&n.open&&n.close())},[e]),t}function uE({detail:e,detailInfo:t,localeCode:n,localeTag:r,serverTimeZone:i,t:a,onClose:o,onFilterConversation:s}){let c=lE(!0),[l,u]=(0,Z.useState)(!1),d=bT(e),f=e.displayMetrics?.cost,p=e.displayMetrics?.decodeTokPerSecond,m=mT(p?.kind===`value`?p:{}),h=RT(e),g=rE(e,a),_=async()=>{if(e.requestId)try{await navigator.clipboard.writeText(e.requestId),u(!0),window.setTimeout(()=>u(!1),1200)}catch{}};return(0,Q.jsxs)(`dialog`,{ref:c,className:`modal-overlay`,"aria-labelledby":`log-detail-title`,onCancel:e=>{e.preventDefault(),o()},children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":a(`common.close`),tabIndex:-1,onClick:o}),(0,Q.jsxs)(`div`,{className:`modal-card log-detail-card`,onClick:e=>e.stopPropagation(),role:`document`,children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsxs)(`h3`,{id:`log-detail-title`,children:[(0,Q.jsx)(`span`,{className:`mono`,style:{color:iE(e.status)},children:e.status}),t&&(0,Q.jsx)(`span`,{className:`logs-detail-info`,children:t.label})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:o,"aria-label":a(`common.cancel`),children:(0,Q.jsx)(ve,{})})]}),t&&(0,Q.jsx)(`p`,{className:`modal-desc`,children:t.description}),(0,Q.jsxs)(`section`,{className:`log-detail-section`,"aria-labelledby":`log-detail-basic`,children:[(0,Q.jsx)(`h4`,{id:`log-detail-basic`,className:`log-detail-section-title`,children:a(`logs.detail.section.basic`)}),(0,Q.jsxs)(`div`,{className:`log-detail-grid`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.col.time`)}),(0,Q.jsx)(`span`,{className:`mono`,children:oE(e.timestamp,r,i)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.outcome.label`)}),(0,Q.jsx)(`span`,{children:a(nE(e))}),g.cause&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.cause.label`)}),(0,Q.jsxs)(`span`,{children:[g.cause,g.stage&&` (${a(`logs.detail.stage.label`)}: ${g.stage})`]})]}),g.resend&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.resend.label`)}),(0,Q.jsx)(`span`,{children:g.resend})]}),e.spend&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.sends.label`)}),(0,Q.jsxs)(`span`,{className:`mono`,children:[AT(e.spend),jT(e.spend)>0&&` (${a(`logs.detail.sends.unresolved`)}: ${jT(e.spend)})`]})]}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.col.request`)}),(0,Q.jsxs)(`span`,{className:`log-detail-request-row`,children:[(0,Q.jsx)(`span`,{className:`mono log-detail-break`,children:e.requestId??`—`}),e.requestId&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void _(),children:a(l?`logs.detail.copied`:`logs.detail.copyRequestId`)})]}),e.conversationId&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.conversation`)}),(0,Q.jsxs)(`span`,{className:`log-detail-request-row`,children:[(0,Q.jsx)(`span`,{className:`mono log-detail-break`,children:e.conversationId}),s&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>s(e.conversationId),children:a(`logs.filter.conversation.apply`)})]})]}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.col.model`)}),(0,Q.jsx)(`span`,{className:`mono`,children:zT(e)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.col.provider`)}),(0,Q.jsx)(`span`,{children:be(e.provider,a)}),(e.requestedEffort||e.effectiveEffort)&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.col.effort`)}),(0,Q.jsxs)(`span`,{className:`mono`,children:[LT(e),h?` (${h})`:``]})]}),e.errorCode&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.col.error`)}),(0,Q.jsx)(`span`,{className:`mono`,children:e.errorCode})]}),e.upstreamError&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.col.upstreamReason`)}),(0,Q.jsx)(`span`,{className:`mono log-detail-break`,children:e.upstreamError})]})]})]}),(0,Q.jsxs)(`section`,{className:`log-detail-section`,"aria-labelledby":`log-detail-route`,children:[(0,Q.jsx)(`h4`,{id:`log-detail-route`,className:`log-detail-section-title`,children:a(`logs.detail.route.section`)}),e.routeDecision?(0,Q.jsxs)(`div`,{className:`log-detail-grid`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.route.kind`)}),(0,Q.jsx)(`span`,{className:`mono`,children:e.routeDecision.routeKind??`–`}),e.routeDecision.profile?.id&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.route.profile`)}),(0,Q.jsxs)(`span`,{className:`mono`,children:[e.routeDecision.profile.id,` (`,e.routeDecision.profile.revision,`)`]})]}),e.routeDecision.selected?.provider&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.route.selected`)}),(0,Q.jsxs)(`span`,{className:`mono`,children:[e.routeDecision.selected.provider,`/`,e.routeDecision.selected.model,e.routeDecision.selected.reason?` — ${e.routeDecision.selected.reason}`:``]})]}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.route.candidates`)}),(0,Q.jsx)(`span`,{className:`mono`,children:(e.routeDecision.candidates??[]).map(e=>`${typeof e.provider==`string`&&e.provider.length>0?e.provider:`–`}/${typeof e.model==`string`&&e.model.length>0?e.model:`–`}${e.eligible===!0?` ✓`:e.eligible===!1?` ✗`:` ?`}`).join(` `)||`–`})]}):(0,Q.jsx)(`p`,{className:`log-detail-notes-line muted`,children:a(`logs.detail.route.unknown`)})]}),(0,Q.jsx)(iT,{trace:e.protocolTrace,t:a}),(0,Q.jsxs)(`section`,{className:`log-detail-section`,"aria-labelledby":`log-detail-performance`,children:[(0,Q.jsx)(`h4`,{id:`log-detail-performance`,className:`log-detail-section-title`,children:a(`logs.detail.section.performance`)}),(0,Q.jsxs)(`div`,{className:`log-detail-grid log-detail-performance-grid`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.col.duration`)}),(0,Q.jsxs)(`span`,{className:`mono`,children:[e.durationMs,`ms`]}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.endToEndTokPerSec`)}),(0,Q.jsx)(`span`,{className:`mono`,children:BT(e.displayMetrics?.tokPerSecond,r)}),p?.kind===`value`&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,title:a(m.hint),children:a(m.detail)}),(0,Q.jsx)(`span`,{className:`mono`,children:BT(p,r)}),(0,Q.jsx)(`span`,{className:`logs-decode-basis-hint muted text-caption`,children:a(m.hint)})]}),e.firstOutputMs!==void 0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.ttft`)}),(0,Q.jsxs)(`span`,{className:`mono`,children:[e.firstOutputMs,`ms`]})]})]}),e.displayMetrics?.tokPerSecond.kind===`unavailable`&&(0,Q.jsx)(`p`,{className:`log-detail-notes-line muted`,children:a(JT(e.displayMetrics.tokPerSecond.reason))}),e.displayMetrics?.decodeTokPerSecond?.kind===`unavailable`&&(0,Q.jsxs)(`p`,{className:`log-detail-notes-line muted`,children:[a(`logs.detail.decodeTokPerSec`),`: `,a(JT(e.displayMetrics.decodeTokPerSecond.reason))]})]}),(0,Q.jsxs)(`section`,{className:`log-detail-section`,"aria-labelledby":`log-detail-cost`,children:[(0,Q.jsx)(`h4`,{id:`log-detail-cost`,className:`log-detail-section-title`,children:a(`logs.detail.section.cost`)}),(0,Q.jsx)(`p`,{className:`log-detail-notes-line muted`,children:a(`usage.cost.disclaimer`)}),f?.kind===`value`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`log-detail-grid`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.costTotal`)}),(0,Q.jsx)(`span`,{className:`mono`,children:gT(f.estimate.cost.total,a,r,f.estimate.priorityLowerBound)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.input`)}),(0,Q.jsx)(`span`,{className:`mono`,children:gT(f.estimate.cost.input,a,r,f.estimate.priorityLowerBound)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.cacheRead`)}),(0,Q.jsx)(`span`,{className:`mono`,children:gT(f.estimate.cost.cacheRead,a,r,f.estimate.priorityLowerBound)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.cacheWrite`)}),(0,Q.jsx)(`span`,{className:`mono`,children:gT(f.estimate.cost.cacheWrite,a,r,f.estimate.priorityLowerBound)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.output`)}),(0,Q.jsx)(`span`,{className:`mono`,children:gT(f.estimate.cost.output,a,r,f.estimate.priorityLowerBound)}),f.estimate.price&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.matchedKey`)}),(0,Q.jsxs)(`span`,{className:`mono log-detail-break`,children:[f.estimate.price.jawcodeProvider??f.estimate.price.provider,`/`,f.estimate.price.modelId]}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.priceSource`)}),(0,Q.jsxs)(`span`,{children:[a(`logs.detail.source.${f.estimate.price.source}`),` · `,a(ZT(f.estimate.price.status))]})]})]}),f.estimateReasons.length>0&&(0,Q.jsx)(`ul`,{className:`log-detail-notes`,children:f.estimateReasons.map(e=>(0,Q.jsx)(`li`,{children:a(YT(e))},e))})]}):(0,Q.jsxs)(`div`,{className:`log-detail-grid`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.costTotal`)}),(0,Q.jsx)(`span`,{className:`mono`,children:a(`logs.cost.unavailable`)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.unavailableReason`)}),(0,Q.jsx)(`span`,{children:f?.kind===`unavailable`?a(JT(f.reason)):a(`logs.detail.reason.usage_missing`)})]})]}),e.attempts?.length?(0,Q.jsxs)(`section`,{className:`log-detail-section`,"aria-labelledby":`log-detail-attempts`,children:[(0,Q.jsx)(`h4`,{id:`log-detail-attempts`,className:`log-detail-section-title`,children:a(`logs.detail.section.attempts`)}),(0,Q.jsx)(`p`,{className:`log-detail-notes-line muted`,children:a(`logs.detail.attempt.e2eNote`)}),(0,Q.jsx)(`div`,{className:`log-detail-attempts-wrap`,children:(0,Q.jsxs)(`table`,{className:`tbl log-detail-attempts`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{className:`num`,children:`#`}),(0,Q.jsx)(`th`,{children:a(`logs.detail.attempt.target`)}),(0,Q.jsx)(`th`,{className:`num`,children:a(`logs.col.duration`)}),(0,Q.jsx)(`th`,{className:`num`,title:a(`logs.detail.endToEndTokPerSec`),children:a(`logs.col.tokPerSec`)}),(0,Q.jsx)(`th`,{className:`num`,children:a(`logs.col.estimatedCost`)}),(0,Q.jsx)(`th`,{children:a(`logs.detail.attempt.reason`)})]})}),(0,Q.jsx)(`tbody`,{children:e.attempts.toSorted((e,t)=>e.ordinal-t.ordinal).map(e=>{let t=e.displayMetrics?.cost,n=e.displayMetrics?.decodeTokPerSecond,i=mT(n?.kind===`value`?n:{}),o=RT(e),s=t?.kind===`value`?t.estimate.price:void 0,c=rE(e,a).cause??e.errorCode??(e.recoveryKinds.length?e.recoveryKinds.map(e=>a(XT(e))).join(`, `):void 0)??(t?.kind===`unavailable`?a(JT(t.reason)):a(`logs.detail.attempt.completed`));return(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{className:`num mono`,children:e.ordinal}),(0,Q.jsxs)(`td`,{children:[(0,Q.jsx)(`span`,{children:be(e.provider,a)}),(0,Q.jsx)(`br`,{}),(0,Q.jsx)(`span`,{className:`mono muted log-detail-break`,children:e.model}),(e.requestedEffort||e.effectiveEffort)&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`br`,{}),(0,Q.jsxs)(`span`,{className:`mono muted text-caption log-detail-break`,children:[LT(e),o?` (${o})`:``]})]}),s&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`br`,{}),(0,Q.jsxs)(`span`,{className:`muted text-caption log-detail-break`,children:[s.jawcodeProvider??s.provider,`/`,s.modelId,` · `,a(`logs.detail.source.${s.source}`),` · `,a(ZT(s.status))]})]})]}),(0,Q.jsxs)(`td`,{className:`num mono`,children:[e.durationMs,`ms`]}),(0,Q.jsxs)(`td`,{className:`num mono`,children:[BT(e.displayMetrics?.tokPerSecond,r),n?.kind===`value`&&(0,Q.jsxs)(`span`,{className:`logs-stack-end logs-decode-rate muted`,title:a(i.detail),children:[(0,Q.jsx)(`span`,{children:BT(n,r)}),(0,Q.jsx)(`span`,{className:`text-caption`,children:a(i.short)})]})]}),(0,Q.jsx)(`td`,{className:`num mono`,children:_T(t,a,r)}),(0,Q.jsx)(`td`,{className:`log-detail-break`,children:c})]},`${e.ordinal}-${e.provider}-${e.model}`)})})]})})]}):null,(0,Q.jsxs)(`section`,{className:`log-detail-section`,"aria-labelledby":`log-detail-usage`,children:[(0,Q.jsx)(`h4`,{id:`log-detail-usage`,className:`log-detail-section-title`,children:a(`logs.detail.section.usage`)}),(0,Q.jsxs)(`div`,{className:`log-detail-grid`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.input`)}),(0,Q.jsx)(`span`,{className:`mono`,children:e.usage?K(e.usage.inputTokens,n):`—`}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.output`)}),(0,Q.jsx)(`span`,{className:`mono`,children:e.usage?K(e.usage.outputTokens,n):`—`}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.cacheRead`)}),(0,Q.jsx)(`span`,{className:`mono`,children:d.read===void 0?`—`:K(d.read,n)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.cacheWrite`)}),(0,Q.jsx)(`span`,{className:`mono`,children:d.write===void 0?`—`:K(d.write,n)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.reasoning`)}),(0,Q.jsx)(`span`,{className:`mono`,children:e.usage?.reasoningOutputTokens===void 0?`—`:K(e.usage.reasoningOutputTokens,n)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.totalTokens`)}),(0,Q.jsx)(`span`,{className:`mono`,children:IT(e)===void 0?`—`:K(IT(e),n)}),e.usage?.contextTotalTokens!==void 0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.contextTotal`)}),(0,Q.jsx)(`span`,{className:`mono`,children:K(e.usage.contextTotalTokens,n)})]})]}),e.usageStatus===`estimated`&&(0,Q.jsx)(`p`,{className:`log-detail-notes-line muted`,children:a(`logs.tokens.estimatedNote`)})]}),(0,Q.jsxs)(`details`,{className:`log-detail-raw`,children:[(0,Q.jsx)(`summary`,{children:a(`logs.detailRaw`)}),(0,Q.jsx)(`pre`,{className:`log-detail-json`,children:JSON.stringify(e,null,2)})]})]})]})}function dE(e){let t=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})$/.exec(e);if(!t)return null;let[n,r,i,a,o]=t.slice(1).map(Number),s=new Date(`${e}:00`),c=s.getTime();return!Number.isSafeInteger(c)||c<0||s.getFullYear()!==n||s.getMonth()!==r-1||s.getDate()!==i||s.getHours()!==a||s.getMinutes()!==o?null:c}function fE(e,t){if(!e||!t)return{ok:!1,error:`required`};let n=dE(e),r=dE(t);return n===null||r===null?{ok:!1,error:`invalid`}:n>r?{ok:!1,error:`reversed`}:{ok:!0,window:{since:n,until:r+59999}}}var pE=[`requests`,`tokens`,`cost`,`quota`,`none`],mE=[6,24,72,168],hE=[`line`,`stackedBar`],gE=[`total`,`input`,`output`,`cached`],_E=[`sum`,`average`,`max`],vE=[`model`,`modelAccount`],yE={requests:`usage.companion.menuRequests`,tokens:`usage.companion.menuTokens`,cost:`usage.companion.menuCost`,quota:`usage.companion.menuQuota`,none:`usage.companion.menuNone`},bE={6:`usage.companion.window6`,24:`usage.companion.window24`,72:`usage.companion.window72`,168:`usage.companion.window168`},xE={total:`usage.companion.metricTotal`,input:`usage.companion.metricInput`,output:`usage.companion.metricOutput`,cached:`usage.companion.metricCached`},SE=[[`showToday`,`usage.companion.sectionToday`],[`showChart`,`usage.companion.sectionChart`],[`showModels`,`usage.companion.sectionModels`],[`showCost`,`usage.companion.sectionCost`],[`showAccounts`,`usage.companion.sectionAccounts`]],CE={sum:`usage.companion.aggregationSum`,average:`usage.companion.aggregationAverage`,max:`usage.companion.aggregationMax`},wE={macos:[`usage.companion.installMacStep1`,`usage.companion.installMacStep2`,`usage.companion.installMacStep3`],windows:[`usage.companion.installWinStep1`,`usage.companion.installWinStep2`,`usage.companion.installWinStep3`],linux:[`usage.companion.installLinuxStep1`,`usage.companion.installLinuxStep2`,`usage.companion.installLinuxStep3`]},TE={macos:`usage.companion.osMac`,windows:`usage.companion.osWindows`,linux:`usage.companion.osLinux`};function EE(e,t){return new Intl.DateTimeFormat(t,{hour:`2-digit`,minute:`2-digit`}).format(e)}function DE(e){return e instanceof Error&&e.message?e.message:String(e)}function OE({value:e,onChange:t,t:n}){return(0,Q.jsx)(`div`,{className:`usage-segmented`,role:`group`,"aria-label":n(`usage.companion.installOs`),children:Object.keys(TE).map(r=>(0,Q.jsx)(`button`,{type:`button`,className:`usage-segmented-btn${e===r?` active`:``}`,"aria-pressed":e===r,onClick:()=>t(r),children:n(TE[r])},r))})}function kE({label:e,value:t,options:n,optionLabel:r,onChange:i}){return(0,Q.jsxs)(`div`,{className:`usage-companion-control`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:e}),(0,Q.jsx)(`div`,{className:`usage-segmented`,role:`group`,"aria-label":e,children:n.map(e=>(0,Q.jsx)(`button`,{type:`button`,className:`usage-segmented-btn${e===t?` active`:``}`,"aria-pressed":e===t,onClick:()=>i(e),children:r(e)},String(e)))})]})}function AE({label:e,value:t,options:n,optionLabel:r,onChange:i}){return(0,Q.jsxs)(`label`,{className:`usage-companion-control`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:e}),(0,Q.jsx)(`select`,{value:t,onChange:e=>i(e.target.value),children:n.map(e=>(0,Q.jsx)(`option`,{value:e,children:r(e)},e))})]})}function jE(e){let[t,n]=(0,Z.useState)(!1);return(0,Z.useEffect)(()=>{if(t||!e.current||typeof IntersectionObserver>`u`)return;let r=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(n(!0),r.disconnect())},{rootMargin:`240px`});return r.observe(e.current),()=>r.disconnect()},[e,t]),t}function ME({apiBase:e,providers:n,onSettingsLoaded:r}){let{t:i,locale:a}=t(),o=(0,Z.useRef)(null),s=jE(o),[c,l]=(0,Z.useState)(null),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(null),[m,h]=(0,Z.useState)([]),[g,_]=(0,Z.useState)(null),[v,y]=(0,Z.useState)(null),[b,x]=(0,Z.useState)(!1),[S,C]=(0,Z.useState)(`idle`),[w,T]=(0,Z.useState)(null),[E,D]=(0,Z.useState)(null),O=(0,Z.useRef)(null),k=(0,Z.useRef)(null),A=(0,Z.useRef)(null),j=(0,Z.useRef)(S),M=(0,Z.useRef)(u),N=(0,Z.useRef)(new Map),[P,F]=(0,Z.useState)(new Map),[I,L]=(0,Z.useState)(()=>{let e=no();return e===`unknown`?`macos`:e});(0,Z.useEffect)(()=>{j.current=S},[S]),(0,Z.useEffect)(()=>{M.current=u},[u]);let R=(0,Z.useCallback)(async()=>{_(null);try{let t=await fetch(`${e}/api/companion/settings`);if(!t.ok)throw Error(`${t.status} ${t.statusText}`.trim());let n=await t.json();l(n),T(Date.now()),d(n.settings),k.current=n.settings,r?.(n.settings.menuBarMetric)}catch(e){_(DE(e))}},[e,r]);(0,Z.useEffect)(()=>{if(!s||c)return;let e=setTimeout(()=>void R(),0);return()=>clearTimeout(e)},[R,c,s]),(0,Z.useEffect)(()=>{if(!s)return;let e=setInterval(()=>{j.current!==`saving`&&(M.current&&k.current!==M.current||R())},6e4);return()=>clearInterval(e)},[R,s]);let z=(0,Z.useMemo)(()=>u?et(u):null,[u]),B=(0,Z.useCallback)(async()=>{if(!z)return;A.current?.abort();let t=new AbortController;A.current=t,x(!0),y(null);try{let n=await fetch(`${e}/api/usage/timeline?${z}`,{signal:t.signal});if(!n.ok)throw Error(`${n.status} ${n.statusText}`.trim());let r=await n.json(),i=u?Ce(r,u):r;p(i),h(i.availableModels);let a=new Map;for(let e of i.series)a.set(e.id,(a.get(e.id)??0)+e.total);for(let[e,t]of a)N.current.set(e,t);F(new Map(N.current))}catch(e){t.signal.aborted||y(DE(e))}finally{t.signal.aborted||x(!1)}},[u,e,z]);(0,Z.useEffect)(()=>{if(!s||!z)return;let e=setTimeout(()=>void B(),250),t=setInterval(()=>void B(),6e4);return()=>{clearTimeout(e),clearInterval(t),A.current?.abort()}},[z,B,s]);let V=(0,Z.useCallback)(e=>{c?.corrupt||(d(t=>t&&{...t,...e}),C(`saving`),D(null))},[c?.corrupt]);(0,Z.useEffect)(()=>{if(!(c?.corrupt||!u||!k.current||k.current===u||S!==`saving`))return O.current&&clearTimeout(O.current),O.current=setTimeout(async()=>{try{let t=Me(u,m),n=await fetch(`${e}/api/companion/settings`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({settings:t})}),r=await n.json();if(!n.ok)throw Error(r&&`error`in r&&r.error?r.error:`${n.status} ${n.statusText}`.trim());l(r),T(Date.now()),d(r.settings),k.current=r.settings,C(`saved`)}catch(e){D(DE(e)),C(`error`)}},300),()=>{O.current&&clearTimeout(O.current)}},[e,m,c?.corrupt,S,u]);let H=(0,Z.useRef)(m);(0,Z.useEffect)(()=>{H.current=m},[m]),(0,Z.useEffect)(()=>()=>{let t=M.current;!t||!k.current||k.current===t||j.current!==`saving`||fetch(`${e}/api/companion/settings`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({settings:Me(t,H.current)}),keepalive:!0}).catch(()=>{})},[e]);let U=(0,Z.useCallback)(async()=>{C(`saving`),D(null);try{let t=await fetch(`${e}/api/companion/settings`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({reset:!0})});if(!t.ok)throw Error(`${t.status} ${t.statusText}`.trim());await R(),C(`saved`)}catch(e){D(DE(e)),C(`error`)}},[e,R]),W=(0,Z.useCallback)(async()=>{try{let t=location.hash?`/${location.hash}`:`/#/usage`,n=await fetch(`${e}/api/companion/open-in-browser`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({path:t})});if(!n.ok)throw Error(`${n.status} ${n.statusText}`.trim())}catch(e){D(DE(e))}},[e]);if(g)return(0,Q.jsxs)(`section`,{ref:o,className:`usage-companion-panel`,children:[(0,Q.jsx)(`p`,{role:`alert`,children:i(`usage.companion.settingsUnavailable`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void R(),children:i(`common.retry`)})]});let G=u;if(!G)return(0,Q.jsx)(`section`,{ref:o,className:`usage-companion-panel`,"aria-busy":`true`,children:(0,Q.jsx)(`div`,{className:`usage-companion-loading`,children:i(`common.loading`)})});let ee=n.map(e=>e.provider).filter((e,t,n)=>n.indexOf(e)===t).toSorted(),te=G.models??m,K=new Set(te),q=Ee(m,P),ne=new Set(G.hiddenProviders),J=S===`saved`&&c?.updatedAt?i(`usage.companion.saved`,{time:EE(c.updatedAt,a)}):S===`error`?i(`usage.companion.saveFailed`,{error:E??``}):``;return(0,Q.jsxs)(`section`,{ref:o,className:`usage-companion-panel`,children:[c?.corrupt&&(0,Q.jsxs)(`div`,{className:`usage-companion-save-status is-error`,role:`alert`,children:[(0,Q.jsx)(`span`,{children:i(`usage.companion.corrupt`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void U(),disabled:S===`saving`,children:i(`usage.companion.corruptReset`)})]}),(0,Q.jsxs)(`div`,{className:`usage-companion-header`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:`panel-title`,children:i(`usage.companion.title`)}),(0,Q.jsx)(`p`,{className:`card-sub`,children:i(`usage.companion.description`)})]}),(0,Q.jsx)(`a`,{className:`btn btn-ghost btn-sm`,href:`https://opencodex.me/guides/macos-menu-bar/`,target:`_blank`,rel:`noreferrer`,children:i(`usage.companion.installGuide`)})]}),(()=>{let e=c?.companion?.lastSeenAt??null,t=e!==null&&w!==null&&w-e<=6e5,n=e===null||w===null?``:Go(e,Ko(i),w),r=Qa(),a=Za()??`2.87.0`,o=wE[I],s=(0,Q.jsxs)(`ol`,{className:`usage-companion-install-steps`,children:[(0,Q.jsxs)(`li`,{children:[i(o[0]),` `,(0,Q.jsx)(`a`,{className:`btn btn-ghost btn-sm`,href:`https://github.com/lidge-jun/opencodex/releases/latest`,target:`_blank`,rel:`noreferrer`,children:i(`common.github`)})]}),(0,Q.jsx)(`li`,{children:i(o[1])}),(0,Q.jsx)(`li`,{children:i(o[2])})]}),l=I===`macos`?(0,Q.jsx)(`code`,{className:`usage-companion-install-command`,children:`xattr -d com.apple.quarantine /Applications/OpenCodex.app`}):I===`linux`?(0,Q.jsx)(`code`,{className:`usage-companion-install-command`,children:`chmod +x OpenCodex-*.AppImage`}):null,u=(0,Q.jsxs)(`details`,{children:[(0,Q.jsx)(`summary`,{children:i(`usage.companion.installAnother`)}),(0,Q.jsx)(OE,{value:I,onChange:L,t:i}),s,l]});return r?(0,Q.jsxs)(`div`,{className:`usage-companion-install usage-companion-install--shell`,children:[(0,Q.jsx)(`p`,{children:i(`usage.companion.runningInDesktop`,{version:a})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void W(),children:i(`usage.companion.openInBrowser`)}),u]}):t?(0,Q.jsxs)(`div`,{className:`usage-companion-install usage-companion-install--connected`,children:[(0,Q.jsxs)(`div`,{className:`usage-companion-install-status`,children:[(0,Q.jsx)(`span`,{className:`usage-companion-install-dot`,"aria-hidden":`true`}),i(c?.companion?.kind===`desktop`?`usage.companion.connectedDesktop`:`usage.companion.connected`,{age:n})]}),u]}):(0,Q.jsxs)(`details`,{className:`usage-companion-install`,open:!0,children:[(0,Q.jsx)(`summary`,{children:i(`usage.companion.installTitle`)}),e!==null&&(0,Q.jsx)(`p`,{className:`usage-companion-install-last-seen muted text-caption`,children:i(`usage.companion.lastSeen`,{age:n})}),e===null&&(0,Q.jsx)(`p`,{className:`usage-companion-install-last-seen muted text-caption`,children:i(`usage.companion.notConnected`)}),(0,Q.jsx)(OE,{value:I,onChange:L,t:i}),s,l]})})(),(0,Q.jsx)(He,{timeline:f,chartStyle:G.chartStyle,hours:G.chartHours,loading:b,error:v,onRetry:()=>void B(),locale:a,t:i}),q.length>0&&(0,Q.jsxs)(`section`,{className:`usage-companion-models`,children:[(0,Q.jsxs)(`div`,{className:`usage-companion-models-header`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`field-label`,children:i(`usage.companion.modelsOnChart`)}),(0,Q.jsx)(`span`,{className:`usage-companion-models-count text-caption muted`,children:i(`usage.companion.modelsCount`,{selected:te.length,total:m.length})})]}),G.models!==null&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>V({models:null}),disabled:c?.corrupt,children:i(`usage.companion.modelsShowAll`)})]}),(0,Q.jsx)(`div`,{className:`usage-companion-models-list`,children:q.map(e=>{let t=e.models.filter(e=>K.has(e.id)).length,n=t===e.models.length;return(0,Q.jsxs)(`div`,{className:`usage-companion-model-group`,children:[(0,Q.jsxs)(`div`,{className:`usage-companion-model-group-header`,children:[(0,Q.jsx)(`span`,{className:`usage-companion-model-provider`,children:e.provider}),(0,Q.jsx)(`span`,{className:`usage-companion-model-chip mono text-caption`,children:e.models.length}),(0,Q.jsx)(on,{on:n,mixed:t>0&&!n,onClick:()=>V({models:it(G.models,m,e.models.map(e=>e.id),!n)}),disabled:c?.corrupt,label:e.provider,title:e.provider})]}),e.models.map(e=>{let t=K.has(e.id);return(0,Q.jsxs)(`div`,{className:`usage-companion-model-row${t?``:` is-off`}`,children:[(0,Q.jsx)(on,{on:t,onClick:()=>V({models:it(G.models,m,[e.id],!t)}),disabled:c?.corrupt,label:e.id,title:e.id}),(0,Q.jsx)(`code`,{className:`mono text-control`,children:e.id}),(0,Q.jsx)(`span`,{className:`usage-companion-model-total muted text-caption`,children:P.has(e.id)?ot(e.total):`—`})]},e.id)})]},e.provider)})})]}),(0,Q.jsxs)(`fieldset`,{className:`usage-companion-controls`,disabled:c?.corrupt,children:[(0,Q.jsx)(kE,{label:i(`usage.companion.menuBarShows`),value:G.menuBarMetric,options:pE,optionLabel:e=>i(yE[e]),onChange:e=>V({menuBarMetric:e})}),(0,Q.jsx)(kE,{label:i(`usage.companion.window`),value:G.chartHours,options:mE,optionLabel:e=>i(bE[e]),onChange:e=>V({chartHours:e,bucketMinutes:Pe(e)})}),(0,Q.jsx)(kE,{label:i(`usage.companion.style`),value:G.chartStyle,options:hE,optionLabel:e=>i(e===`line`?`usage.companion.styleLine`:`usage.companion.styleStacked`),onChange:e=>V({chartStyle:e})}),(0,Q.jsx)(AE,{label:i(`usage.companion.metric`),value:G.tokenMetric,options:gE,optionLabel:e=>i(xE[e]),onChange:e=>V({tokenMetric:e})}),(0,Q.jsx)(AE,{label:i(`usage.companion.groupBy`),value:G.chartGrouping,options:vE,optionLabel:e=>i(e===`model`?`usage.companion.groupModel`:`usage.companion.groupAccount`),onChange:e=>V({chartGrouping:e})}),(0,Q.jsxs)(`fieldset`,{className:`usage-companion-switches`,children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:i(`usage.companion.popoverSections`)}),SE.map(([e,t])=>(0,Q.jsxs)(`div`,{className:`usage-companion-switch`,children:[(0,Q.jsx)(`span`,{children:i(t)}),(0,Q.jsx)(`button`,{type:`button`,className:`toggle ${G[e]?`on`:``}`,"aria-label":i(t),"aria-pressed":G[e],onClick:()=>V({[e]:!G[e]}),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})})]},e))]}),(0,Q.jsxs)(`details`,{className:`usage-companion-advanced`,children:[(0,Q.jsx)(`summary`,{children:i(`usage.companion.advanced`)}),(0,Q.jsxs)(`div`,{className:`usage-companion-advanced-body`,children:[(0,Q.jsx)(AE,{label:i(`usage.companion.aggregation`),value:G.aggregation,options:_E,optionLabel:e=>i(CE[e]),onChange:e=>V({aggregation:e})}),(0,Q.jsxs)(`label`,{className:`usage-companion-control`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:i(`usage.companion.menuText`)}),(0,Q.jsx)(`input`,{value:G.menuBarTemplate??``,onChange:e=>V({menuBarTemplate:e.target.value}),maxLength:200}),(0,Q.jsxs)(`span`,{className:`muted text-caption`,children:[i(`usage.companion.placeholders`),` `,(0,Q.jsx)(`code`,{children:`{requests} {totalTokens} {inputTokens} {outputTokens} {costUsd} {quotaPercent}`})]})]}),ee.length>0&&(0,Q.jsxs)(`fieldset`,{className:`usage-companion-check-list`,children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:i(`usage.companion.hideProviders`)}),ee.map(e=>(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:ne.has(e),onChange:t=>V({hiddenProviders:t.target.checked?[...G.hiddenProviders,e]:G.hiddenProviders.filter(t=>t!==e)})}),` `,(0,Q.jsx)(`span`,{children:e})]},e))]})]})]})]}),(0,Q.jsxs)(`div`,{className:`usage-companion-save-status${S===`error`?` is-error`:``}`,role:S===`error`?`alert`:`status`,children:[J||`\xA0`,S===`error`&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{C(`saving`)},children:i(`common.retry`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void U(),children:i(`usage.companion.reset`)}),(0,Q.jsx)(`p`,{className:`muted text-caption`,children:i(`usage.companion.footer`)})]})}function NE({apiBase:e,providers:t}){let[n,r]=(0,Z.useState)([]);return(0,Z.useEffect)(()=>{if(t.length>0)return;let n=new AbortController;return fetch(`${e}/api/config`,{signal:n.signal}).then(e=>hn(e)).then(e=>{n.signal.aborted||r(Object.keys(e?.providers??{}).map(e=>({provider:e})))}).catch(()=>{}),()=>n.abort()},[e,t.length]),(0,Q.jsx)(ME,{apiBase:e,providers:t.length>0?t:n})}function PE(){return window.location.hash.replace(/^#\/?/,``)===`usage/companion`?`companion`:`report`}function FE(e){window.location.hash=e===`report`?`usage`:`usage/companion`}function IE(e){if(e.key===`ArrowLeft`||e.key===`Home`||e.key===`ArrowRight`||e.key===`End`){e.preventDefault();let t=e.key===`ArrowLeft`||e.key===`Home`?`report`:`companion`;FE(t),document.getElementById(`usage-tab-${t}`)?.focus()}}var LE=class extends Error{};function RE(e){return`${Math.round(e*100)}%`}function zE({row:e,locale:t,t:n}){if(e.estimatedCostUsd===void 0&&e.pricedRequests===void 0&&e.unpricedRequests===void 0)return(0,Q.jsx)(`span`,{className:`muted`,children:`—`});let r=e.unpricedRequests??0,i=n(r===1?`usage.cost.excludedOne`:`usage.cost.excluded`,{count:r});return e.estimatedCostUsd===void 0?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:`—`}),r>0&&(0,Q.jsxs)(`span`,{className:`muted text-caption usage-cost-note`,children:[` `,i]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`mono`,children:Td(e.estimatedCostUsd??0,t)}),r>0&&(0,Q.jsxs)(`span`,{className:`muted text-caption usage-cost-note`,children:[` `,i]})]})}function BE(e,t,n){return typeof e==`number`&&Number.isFinite(e)&&e>=0?K(e,t):n}function VE(e,t){return typeof e==`number`&&Number.isFinite(e)?RE(e):t}function HE(e,t,n){if(typeof e.cacheHitRate!=`number`||!Number.isFinite(e.cacheHitRate))return n(`usage.cacheHitRate.unmeasured`);let r=e.cacheObservedInputTokens;if(!(typeof r!=`number`||!Number.isFinite(r)||r>=e.inputTokens))return n(`usage.cacheHitRate.partial`,{measured:K(r,t),total:K(e.inputTokens,t)})}function UE(e){return typeof e==`number`&&Number.isFinite(e)&&e>0}function WE(e,t){return UE(e.throughputTokensPerSec)?t(`usage.throughput.title`,{samples:e.throughputSamples??0}):t(`usage.throughput.unmeasured`)}function GE(e,t){let n=`${t}/${e}`,r=0;for(let e=0;e<n.length;e++)r=r*31+n.charCodeAt(e)>>>0;return`hsl(${r%360} 55% 55%)`}function KE(e){let t=new Map(e.map(e=>[e.date,e])),n=[],r=new Date;r.setHours(0,0,0,0),r.setDate(r.getDate()-6);for(let e=0;e<7;e++){let e=`${r.getFullYear()}-${String(r.getMonth()+1).padStart(2,`0`)}-${String(r.getDate()).padStart(2,`0`)}`,i=t.get(e);n.push({date:e,requests:i?.requests??0,measuredRequests:i?.measuredRequests??0,reportedRequests:i?.reportedRequests??0,totalTokens:i?.totalTokens??0,models:i?.models??[]}),r.setDate(r.getDate()+1)}return n}function qE(e,t){return new Intl.DateTimeFormat(t,{dateStyle:`medium`}).format(new Date(`${e}T12:00:00`))}function JE(e){let t=window.innerWidth,n=window.innerHeight,r=Math.min(240,Math.max(0,t-16));return{left:Math.max(8,Math.min(e.left+e.width/2-r/2,t-8-r)),maxWidth:r,...e.top-8>n-e.bottom-8?(()=>{let t=Math.max(8,Math.min(n-8,n-e.top+8));return{bottom:t,maxHeight:Math.max(0,n-t-8)}})():(()=>{let t=Math.max(8,Math.min(n-8,e.bottom+8));return{top:t,maxHeight:Math.max(0,n-t-8)}})()}}function YE({anchor:e,className:t,children:n}){return(0,Jt.createPortal)((0,Q.jsx)(`div`,{className:`${t} chart-overlay`,role:`tooltip`,style:JE(e),children:n}),document.body)}function XE(e,t,n){return n(`usage.chart.dayDetail`,{date:qE(e.date,t),requests:e.requests,tokens:K(e.totalTokens,t)})}function ZE(e){let t=e.filter(e=>e>0).sort((e,t)=>e-t);if(t.length===0)return[0,0,0,0];let n=e=>t[Math.min(t.length-1,Math.floor(e*t.length))];return[n(.25),n(.5),n(.75),n(.95)]}function QE(e,t){return e<=0?0:e<=t[0]?1:e<=t[1]?2:e<=t[2]?3:4}function $E(e,t=!1){let n=ZE(e.map(e=>e.totalTokens)),r=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];if(t){let t=[],i=[],a=[],o,s=-1,c=-4,l=e=>{for(;a.length<e;)a.push({date:``,requests:0,totalTokens:0,level:0,dayOfWeek:a.length})};for(let u of e){let[e,d,f]=u.date.split(`-`).map(Number),p=new Date(Date.UTC(e,d-1,f)),m=p.getUTCDay(),h=p.getTime()-m*864e5;o!==h&&(a.length>0&&(l(7),t.push(a)),a=[],o=h);let g=p.getUTCMonth();g!==s&&t.length-c>=4&&(i.push({label:r[g],col:t.length}),s=g,c=t.length),l(m),a.push({date:u.date,requests:u.requests,totalTokens:u.totalTokens,level:QE(u.totalTokens,n),dayOfWeek:m})}return a.length>0&&(l(7),t.push(a)),{weeks:t,months:i,buckets:n}}let i=new Map(e.map(e=>[e.date,e])),a=new Date;a.setHours(0,0,0,0);let o=new Date(a);o.setDate(o.getDate()-364),o.setDate(o.getDate()-o.getDay());let s=[],c=[],l=-4,u=-1,d=[],f=new Date(o);for(;f<=a;){let e=`${f.getFullYear()}-${String(f.getMonth()+1).padStart(2,`0`)}-${String(f.getDate()).padStart(2,`0`)}`,t=f.getMonth();f.getDay()===0&&t!==u&&s.length-l>=4&&(c.push({label:r[t],col:s.length}),l=s.length,u=t);let a=i.get(e);d.push({date:e,requests:a?.requests??0,totalTokens:a?.totalTokens??0,level:a?QE(a.totalTokens,n):0,dayOfWeek:f.getDay()}),f.getDay()===6&&(s.push(d),d=[]),f.setDate(f.getDate()+1)}if(d.length>0){for(;d.length<7;)d.push({date:``,requests:0,totalTokens:0,level:0,dayOfWeek:d.length});s.push(d)}return{weeks:s,months:c,buckets:n}}function eD({surface:e,range:t,onSurface:n,onRange:r,t:i}){return(0,Q.jsxs)(`div`,{className:`usage-filters`,children:[(0,Q.jsx)(`div`,{className:`usage-segmented`,role:`group`,"aria-label":i(`logs.filter.surface.label`),children:[`all`,`codex`,`claude`,`grok`].map(t=>{let r=i(`logs.filter.surface.${t}`);return(0,Q.jsxs)(`button`,{type:`button`,className:`usage-segmented-btn usage-source-btn${e===t?` active`:``}`,"aria-label":r,"aria-pressed":e===t,onClick:()=>n(t),children:[t===`codex`&&(0,Q.jsx)(`img`,{className:`usage-source-mark`,src:`/provider-icons/openai.svg`,alt:``,"aria-hidden":`true`}),t===`claude`&&(0,Q.jsx)(`img`,{className:`usage-source-mark`,src:`/provider-icons/claude-color.svg`,alt:``,"aria-hidden":`true`}),t===`grok`&&(0,Q.jsx)(`img`,{className:`usage-source-mark usage-source-mark--mono`,src:`/provider-icons/grok.svg`,alt:``,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:t===`all`?`usage-source-label`:`usage-source-label usage-source-label-collapsible`,children:r})]},t)})}),(0,Q.jsx)(`div`,{className:`usage-segmented`,role:`group`,"aria-label":i(`usage.title`),children:[`all`,`30d`,`7d`].map(e=>{let n=i(e===`all`?`usage.range.available`:`usage.range.${e}`);return(0,Q.jsx)(`button`,{type:`button`,className:`usage-segmented-btn${t===e?` active`:``}`,"aria-label":n,"aria-pressed":t===e,onClick:()=>r(e),children:n},e)})})]})}function tD({summary:e,activeDays:t,locale:n,t:r}){return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`usage-cards usage-cards-3x2`,role:`group`,"aria-label":r(`usage.title`),children:[(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:r(`usage.card.requests`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:e.requests})]}),(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:r(`usage.card.measured`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:e.measuredRequests})]}),(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:r(`usage.card.totalTokens`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:K(e.totalTokens,n)})]}),(0,Q.jsxs)(`div`,{className:`stat`,title:r(`usage.card.cachedTokensHint`),children:[(0,Q.jsx)(`div`,{className:`muted`,children:r(`usage.card.cachedTokens`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:K(e.cacheReadInputTokens??e.cachedInputTokens,n)}),(e.cacheCreationInputTokens??0)>0&&(0,Q.jsxs)(`div`,{className:`muted text-caption`,children:[r(`usage.card.cacheWriteTokens`),`: `,K(e.cacheCreationInputTokens??0,n)]})]}),(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:r(`usage.card.coverage`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:RE(e.coverageRatio)})]}),(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:r(`usage.card.activeDays`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:t})]})]}),(0,Q.jsxs)(`div`,{className:`usage-cost-row`,role:`note`,title:WE(e,r),children:[(0,Q.jsx)(`span`,{className:`muted`,children:r(`usage.col.tokPerSec`)}),(0,Q.jsx)(`span`,{className:`stat-value mono usage-cost-value`,children:UE(e.throughputTokensPerSec)?e.throughputTokensPerSec.toFixed(1):r(`usage.unavailable`)}),(0,Q.jsx)(`span`,{className:`muted text-caption`,children:WE(e,r)})]}),e.estimatedCostUsd!==void 0&&(0,Q.jsxs)(`div`,{className:`usage-cost-row`,role:`note`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:r(`usage.cost.total`)}),(0,Q.jsx)(`span`,{className:`stat-value mono usage-cost-value`,children:Td(e.estimatedCostUsd,n)}),(0,Q.jsx)(`span`,{className:`muted text-caption`,children:r(`usage.cost.disclaimer`)}),(e.unpricedRequests??0)+(e.unmeteredRequests??0)>0&&(0,Q.jsx)(`span`,{className:`muted text-caption`,children:r(`usage.cost.unpricedNote`).replace(`{count}`,String((e.unpricedRequests??0)+(e.unmeteredRequests??0)))})]})]})}function nD({weekBars:e,locale:t,t:n}){let[r,i]=(0,Z.useState)(null),a=Math.max(1,...e.map(e=>e.totalTokens)),o=e.find(e=>e.date===r?.date),s=(e,t)=>{i({date:e.date,anchor:t.getBoundingClientRect()})};return(0,Q.jsxs)(`div`,{className:`daybars`,role:`group`,"aria-label":n(`usage.section.heatmap`),children:[e.map(e=>{let r=Math.round(e.totalTokens/a*100),o=new Intl.DateTimeFormat(t,{weekday:`short`}).format(new Date(`${e.date}T12:00:00`));return(0,Q.jsxs)(`button`,{type:`button`,className:`daybar`,"aria-label":XE(e,t,n),onFocus:t=>s(e,t.currentTarget),onBlur:()=>i(t=>t?.date===e.date?null:t),onPointerEnter:t=>s(e,t.currentTarget),onPointerDown:t=>s(e,t.currentTarget),onPointerLeave:t=>{t.pointerType!==`touch`&&document.activeElement!==t.currentTarget&&i(t=>t?.date===e.date?null:t)},children:[(0,Q.jsx)(`div`,{className:`daybar-track`,children:(0,Q.jsxs)(`div`,{className:`daybar-stack`,style:{"--daybar-scale":String(Math.max(0,Math.min(1,r/100)))},children:[e.models.map(e=>(0,Q.jsx)(`div`,{className:`daybar-seg`,style:{flexGrow:e.totalTokens,background:GE(e.model,e.provider)}},`${e.provider}/${e.model}`)),e.models.length===0&&e.totalTokens>0&&(0,Q.jsx)(`div`,{className:`daybar-seg`,style:{flexGrow:1,background:`var(--green)`}})]})}),(0,Q.jsx)(`span`,{className:`daybar-count`,children:K(e.totalTokens,t)}),(0,Q.jsx)(`span`,{className:`daybar-label muted`,children:o})]},e.date)}),r&&o&&(0,Q.jsxs)(YE,{className:`daybar-tip`,anchor:r.anchor,children:[(0,Q.jsx)(`div`,{className:`daybar-tip-date`,children:qE(o.date,t)}),(0,Q.jsxs)(`div`,{className:`daybar-tip-row`,children:[(0,Q.jsx)(`span`,{children:n(`usage.heatmap.tooltipRequests`,{requests:o.requests})}),(0,Q.jsx)(`span`,{className:`daybar-tip-val`,children:n(`usage.heatmap.tooltipTokens`,{tokens:K(o.totalTokens,t)})})]}),o.models.slice(0,8).map(e=>(0,Q.jsxs)(`div`,{className:`daybar-tip-row`,children:[(0,Q.jsx)(`span`,{className:`daybar-tip-swatch`,style:{background:GE(e.model,e.provider)}}),(0,Q.jsx)(`span`,{className:`daybar-tip-name`,children:_v(e.model)}),(0,Q.jsx)(`span`,{className:`daybar-tip-val`,children:K(e.totalTokens,t)})]},`${e.provider}/${e.model}`))]})]})}function rD({range:e,heatmap:t,weekBars:n,locale:r,t:i}){let a=(0,Z.useRef)(null),o=(0,Z.useMemo)(()=>t.weeks.flat().filter(e=>e.date),[t]),[s,c]=(0,Z.useState)(()=>o.at(-1)?.date??``),[l,u]=(0,Z.useState)(null),d=(0,Z.useId)(),f=o.some(e=>e.date===s)?s:o.at(-1)?.date??``,p=(e,t)=>{c(e.date),u({date:e.date,anchor:t.getBoundingClientRect()})},m=(e,t)=>{let n=o.findIndex(e=>e.date===t.date),r=e.key===`ArrowUp`?-1:e.key===`ArrowDown`?1:e.key===`ArrowLeft`?-7:e.key===`ArrowRight`?7:0;if(!r||n<0)return;e.preventDefault();let i=o[Math.max(0,Math.min(o.length-1,n+r))];c(i.date);let s=a.current?.querySelector(`[data-date="${i.date}"]`);s&&(s.focus(),u({date:i.date,anchor:s.getBoundingClientRect()}))};return(0,Z.useEffect)(()=>{let e=a.current;if(!e)return;let t=()=>{e.scrollLeft=e.scrollWidth};t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[t,e]),(0,Q.jsxs)(`section`,{className:`panel`,style:{marginTop:16},"aria-labelledby":`usage-heatmap-title`,children:[(0,Q.jsx)(`h3`,{id:`usage-heatmap-title`,className:`panel-title`,children:i(`usage.section.heatmap`)}),e===`7d`?(0,Q.jsx)(nD,{weekBars:n,locale:r,t:i}):(0,Q.jsxs)(`div`,{className:`heatmap`,ref:a,children:[(0,Q.jsxs)(`div`,{className:`heatmap-months`,style:{gridTemplateColumns:`28px repeat(${t.weeks.length}, calc(var(--hm-cell) + var(--hm-gap)))`},children:[(0,Q.jsx)(`span`,{className:`heatmap-day-spacer`}),t.months.map(e=>(0,Q.jsx)(`span`,{className:`heatmap-month`,style:{gridColumn:e.col+2},children:e.label},`${e.label}-${e.col}`))]}),(0,Q.jsxs)(`div`,{className:`heatmap-body`,children:[(0,Q.jsxs)(`div`,{className:`heatmap-days`,children:[(0,Q.jsx)(`span`,{}),(0,Q.jsx)(`span`,{children:i(`usage.dayMon`)}),(0,Q.jsx)(`span`,{}),(0,Q.jsx)(`span`,{children:i(`usage.dayWed`)}),(0,Q.jsx)(`span`,{}),(0,Q.jsx)(`span`,{children:i(`usage.dayFri`)}),(0,Q.jsx)(`span`,{})]}),(0,Q.jsx)(`div`,{className:`heatmap-grid`,role:`group`,"aria-labelledby":`usage-heatmap-title`,"aria-describedby":d,style:{gridTemplateColumns:`repeat(${t.weeks.length}, var(--hm-cell))`},children:t.weeks.map((e,t)=>(0,Q.jsx)(`div`,{className:`heatmap-week`,children:e.map((e,n)=>e.date?(0,Q.jsx)(`button`,{type:`button`,className:`heatmap-cell heatmap-cell-${e.level}`,"data-date":e.date,tabIndex:f===e.date?0:-1,"aria-label":XE(e,r,i),onFocus:t=>p(e,t.currentTarget),onBlur:()=>u(t=>t?.date===e.date?null:t),onKeyDown:t=>m(t,e),onPointerEnter:t=>p(e,t.currentTarget),onPointerDown:t=>p(e,t.currentTarget),onPointerLeave:t=>{t.pointerType!==`touch`&&document.activeElement!==t.currentTarget&&u(t=>t?.date===e.date?null:t)}},e.date):(0,Q.jsx)(`span`,{className:`heatmap-cell heatmap-cell-0`,"aria-hidden":`true`},`pad-${t}-${n}`))},e[0]?.date||`week-${t}`))})]}),(0,Q.jsx)(`span`,{id:d,className:`sr-only`,children:i(`usage.heatmap.keyboardLabel`)}),(0,Q.jsx)(`span`,{className:`sr-only`,"aria-live":`polite`,children:o.find(e=>e.date===f)?XE(o.find(e=>e.date===f),r,i):``}),l&&(()=>{let e=o.find(e=>e.date===l.date);return e?.date?(0,Q.jsxs)(YE,{className:`heatmap-tip`,anchor:l.anchor,children:[(0,Q.jsx)(`div`,{className:`heatmap-tip-date`,children:qE(e.date,r)}),(0,Q.jsx)(`div`,{className:`heatmap-tip-val`,children:i(`usage.heatmap.tooltipTokens`,{tokens:K(e.totalTokens,r)})}),(0,Q.jsx)(`div`,{className:`heatmap-tip-req muted`,children:i(`usage.heatmap.tooltipRequests`,{requests:e.requests})})]}):null})(),(0,Q.jsxs)(`div`,{className:`heatmap-legend muted`,children:[(0,Q.jsx)(`span`,{children:i(`usage.heatmap.less`)}),[0,1,2,3,4].map(e=>(0,Q.jsx)(`span`,{className:`heatmap-cell heatmap-cell-${e}`},e)),(0,Q.jsx)(`span`,{children:i(`usage.heatmap.more`)})]})]})]})}function iD({title:e,titleId:t,children:n}){return(0,Q.jsxs)(`section`,{className:`usw-section`,"aria-labelledby":t,children:[(0,Q.jsx)(`h3`,{id:t,className:`h-section`,children:e}),n]})}function aD({models:e,modelQuery:t,onModelQuery:n,locale:r,t:i,workspace:a=!1}){let o=i(`usage.search.models`),s=i(`usage.section.models`),c=`usage-models-title`,l=`usage-models-list-price-disclaimer`,u=i(`usage.unavailable`),d=(0,Q.jsx)(`input`,{className:`input`,"aria-label":o,placeholder:o,value:t,onChange:e=>n(e.target.value)}),f=(0,Q.jsxs)(`div`,{className:`tbl-wrap`,children:[(0,Q.jsxs)(`table`,{className:`tbl usage-models-tbl`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:i(`logs.col.model`)}),(0,Q.jsx)(`th`,{children:i(`logs.col.provider`)}),(0,Q.jsx)(`th`,{children:i(`usage.col.share`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`usage.col.tokens`)}),(0,Q.jsx)(`th`,{className:`num`,"aria-describedby":l,children:i(`usage.col.apiListPrice`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`usage.col.requests`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`usage.col.measured`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`usage.col.inputTokens`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`usage.col.outputTokens`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`usage.col.tokPerSec`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`usage.col.cacheHits`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`usage.col.cacheWrites`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`usage.col.cacheHitRate`)})]})}),(0,Q.jsx)(`tbody`,{children:e.map(e=>{let t=be(e.provider,i),n=HE(e,r,i),a=WE(e,i);return(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{className:`mono`,title:e.model,children:_v(e.model)}),(0,Q.jsx)(`td`,{className:`muted`,title:t,children:t}),(0,Q.jsx)(`td`,{children:(0,Q.jsx)(`div`,{className:`usage-bar`,children:(0,Q.jsx)(`div`,{className:`usage-bar-fill`,style:{width:`${Math.round(e.shareRatio*100)}%`}})})}),(0,Q.jsx)(`td`,{className:`num mono`,children:K(e.totalTokens,r)}),(0,Q.jsx)(`td`,{className:`num`,children:(0,Q.jsx)(zE,{row:e,locale:r,t:i})}),(0,Q.jsx)(`td`,{className:`num`,children:e.requests}),(0,Q.jsx)(`td`,{className:`num`,children:e.measuredRequests}),(0,Q.jsx)(`td`,{className:`num mono`,children:K(e.inputTokens,r)}),(0,Q.jsx)(`td`,{className:`num mono`,children:K(e.outputTokens,r)}),(0,Q.jsxs)(`td`,{className:`num mono`,title:a,children:[(0,Q.jsx)(`span`,{className:`usage-hit-rate`,children:UE(e.throughputTokensPerSec)?`${e.throughputTokensPerSec.toFixed(1)} tok/s`:u}),UE(e.throughputTokensPerSec)&&(0,Q.jsx)(`span`,{className:`sr-only`,children:a})]}),(0,Q.jsx)(`td`,{className:`num mono`,children:BE(e.cacheReadInputTokens??e.cachedInputTokens,r,u)}),(0,Q.jsx)(`td`,{className:`num mono`,children:BE(e.cacheCreationInputTokens,r,u)}),(0,Q.jsxs)(`td`,{className:`num mono`,title:n,children:[(0,Q.jsx)(`span`,{className:`usage-hit-rate`,children:VE(e.cacheHitRate,u)}),n!==void 0&&(0,Q.jsx)(`span`,{className:`sr-only`,children:n})]})]},`${e.provider}/${e.model}`)})})]}),(0,Q.jsx)(`p`,{id:l,className:`muted text-caption`,children:i(`usage.cost.disclaimer`)})]});return a?(0,Q.jsxs)(iD,{title:s,titleId:c,children:[(0,Q.jsx)(`div`,{className:`usw-section-toolbar`,children:d}),f]}):(0,Q.jsxs)(`section`,{className:`panel`,style:{marginTop:16},"aria-labelledby":c,children:[(0,Q.jsxs)(`div`,{className:`panel-head`,children:[(0,Q.jsx)(`h3`,{id:c,className:`panel-title`,children:s}),d]}),f]})}function oD({providers:e,locale:t,t:n,workspace:r=!1}){let i=n(`usage.unavailable`),a=n(`usage.section.providers`),o=`usage-providers-title`,s=`usage-providers-list-price-disclaimer`,c=(0,Q.jsxs)(`div`,{className:`tbl-wrap`,children:[(0,Q.jsxs)(`table`,{className:`tbl`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:n(`logs.col.provider`)}),(0,Q.jsx)(`th`,{className:`num`,children:n(`usage.col.requests`)}),(0,Q.jsx)(`th`,{className:`num`,children:n(`usage.col.measured`)}),(0,Q.jsx)(`th`,{className:`num`,children:n(`usage.col.tokens`)}),(0,Q.jsx)(`th`,{className:`num`,children:n(`usage.col.tokPerSec`)}),(0,Q.jsx)(`th`,{className:`num`,"aria-describedby":s,children:n(`usage.col.apiListPrice`)}),(0,Q.jsx)(`th`,{children:n(`usage.col.share`)})]})}),(0,Q.jsx)(`tbody`,{children:e.map(e=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{className:`mono`,children:be(e.provider,n)}),(0,Q.jsx)(`td`,{className:`num`,children:e.requests}),(0,Q.jsx)(`td`,{className:`num`,children:e.measuredRequests}),(0,Q.jsx)(`td`,{className:`num mono`,children:K(e.totalTokens,t)}),(0,Q.jsxs)(`td`,{className:`num mono`,title:WE(e,n),children:[(0,Q.jsx)(`span`,{className:`usage-hit-rate`,children:UE(e.throughputTokensPerSec)?`${e.throughputTokensPerSec.toFixed(1)} tok/s`:i}),UE(e.throughputTokensPerSec)&&(0,Q.jsx)(`span`,{className:`sr-only`,children:WE(e,n)})]}),(0,Q.jsx)(`td`,{className:`num`,children:(0,Q.jsx)(zE,{row:e,locale:t,t:n})}),(0,Q.jsx)(`td`,{children:(0,Q.jsx)(`div`,{className:`usage-bar`,children:(0,Q.jsx)(`div`,{className:`usage-bar-fill`,style:{width:`${Math.round(e.shareRatio*100)}%`}})})})]},e.provider))})]}),(0,Q.jsx)(`p`,{id:s,className:`muted text-caption`,children:n(`usage.cost.disclaimer`)})]});return r?(0,Q.jsx)(iD,{title:a,titleId:o,children:c}):(0,Q.jsxs)(`section`,{className:`panel`,style:{marginTop:16},"aria-labelledby":o,children:[(0,Q.jsx)(`h3`,{id:o,className:`panel-title`,children:a}),c]})}function sD({summary:e,t,workspace:n=!1}){let r=t(`usage.section.coverage`),i=`usage-coverage-title`,a=(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`usage-cards usage-cards-3x2`,children:[(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:t(`usage.coverage.measured`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:e.measuredRequests})]}),(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:t(`usage.coverage.reported`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:e.reportedRequests})]}),(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:t(`usage.coverage.estimated`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:e.estimatedRequests})]}),(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:t(`logs.tokens.unreported`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:e.unreportedRequests})]}),(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:t(`logs.tokens.unsupported`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:e.unsupportedRequests})]})]}),(0,Q.jsx)(`p`,{className:`muted text-control`,style:{marginTop:12},children:t(`usage.coverage.note`)})]});return n?(0,Q.jsx)(iD,{title:r,titleId:i,children:a}):(0,Q.jsxs)(`section`,{className:`panel`,style:{marginTop:16},"aria-labelledby":i,children:[(0,Q.jsx)(`h3`,{id:i,className:`panel-title`,children:r}),a]})}function cD({data:e,heatmap:t,weekBars:n,activeDays:r,filteredModels:i,modelQuery:a,onModelQuery:o,sortedProviders:s,range:c,locale:l,t:u}){let d=!!e&&e.summary.requests===0,f=[{id:`overview`,label:u(`usage.section.overview`),meta:e?`${e.summary.requests}`:`—`,body:e?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(tD,{summary:e.summary,activeDays:r,locale:l,t:u}),(0,Q.jsx)(rD,{range:c,heatmap:t,weekBars:n,locale:l,t:u})]}):null},{id:`models`,label:u(`usage.section.models`),meta:e?`${e.models.length}`:`—`,body:e?(0,Q.jsx)(aD,{models:i,modelQuery:a,onModelQuery:o,locale:l,t:u,workspace:!0}):null},{id:`providers`,label:u(`usage.section.providers`),meta:e?`${e.providers.length}`:`—`,body:e?(0,Q.jsx)(oD,{providers:s,locale:l,t:u,workspace:!0}):null},{id:`coverage`,label:u(`usage.section.coverage`),meta:e?RE(e.summary.coverageRatio):`—`,body:e?(0,Q.jsx)(sD,{summary:e.summary,t:u,workspace:!0}):null}];return(0,Q.jsx)(`div`,{className:`usage-workspace-shell`,children:(0,Q.jsxs)(`div`,{className:`usage-workspace-root`,children:[(0,Q.jsx)(LC,{scope:`usage`,ariaLabel:u(`usage.workspace.sections`),items:f.map(e=>({id:e.id,label:e.label,meta:e.meta}))}),(0,Q.jsx)(`section`,{className:`usage-workspace-main`,"aria-label":u(`usage.workspace.report`),children:d?(0,Q.jsx)(ln,{title:u(`usage.empty`)}):f.map(e=>(0,Q.jsx)(`div`,{id:PC(`usage`,e.id),className:`usw-body usw-section-block`,children:e.body},e.id))})]})})}var lD=new Map;function uD(e,t,n,r,i,a){return`ocx.usage.v2:${e}:${r?`connected`:`standalone`}:${i}:${a??``}:${t}:${n}`}function dD(e,t,n,r,i,a){let o=uD(e,t,n,r,i,a);return lD.get(o)??Ua(o)}function fD(e,t,n,r,i,a,o){let s=uD(e,t,n,r,i,a);lD.set(s,o),qa(s,o)}function pD({apiBase:e,connected:n=!1,apiKeyId:r}){let{t:i,locale:a}=t(),[o,s]=(0,Z.useState)(PE);(0,Z.useEffect)(()=>{let e=()=>s(PE());return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[]);let[c,l]=(0,Z.useState)(`30d`),[u,d]=(0,Z.useState)(`all`),[f,p]=(0,Z.useState)(`machine`),[m,h]=(0,Z.useState)(``),[g,_]=(0,Z.useState)({since:``,until:``}),[v,y]=(0,Z.useState)(null),[b,x]=(0,Z.useState)(null),[S,C]=(0,Z.useState)(!1),w=v?.since,T=v?.until,E=()=>{y(null),_({since:``,until:``}),x(null)},D=e=>{l(e),E()},O=(0,Z.useCallback)(async t=>{let i=new URLSearchParams({range:c,surface:u});n&&f===`machine`&&r&&i.set(`apiKeyId`,r),w!==void 0&&T!==void 0&&(i.set(`since`,String(w)),i.set(`until`,String(T)));let a=await mr(await fetch(`${e}/api/usage?${i}`,{signal:t}));if(w!==void 0&&(a?.customWindow!==!0||a.since!==w||a.until!==T))throw new LE;return w===void 0&&fD(e,c,u,n,f,r,a),a},[e,r,n,c,f,u,w,T]),k=uD(e,c,u,n,f,r),A=v?JSON.stringify([k,w,T]):k,j=v?null:dD(e,c,u,n,f,r),M=Ya(A,[e,r,n,c,f,u,w,T],O,{isEmpty:()=>!1,initialData:j??void 0}),{state:N}=M,P=N.data??j??null,F=(0,Z.useMemo)(()=>$E(P?.days??[],!!v),[P?.days,v]),I=(0,Z.useMemo)(()=>KE(P?.days??[]),[P?.days]),L=(0,Z.useMemo)(()=>(P?.days??[]).filter(e=>e.requests>0).length,[P?.days]),R=(0,Z.useMemo)(()=>{let e=m.trim().toLowerCase(),t=(P?.models??[]).toSorted((e,t)=>t.totalTokens-e.totalTokens);return e?t.filter(t=>t.model.toLowerCase().includes(e)||t.provider.toLowerCase().includes(e)||(t.resolvedModel??``).toLowerCase().includes(e)).slice(0,100):t.slice(0,100)},[P?.models,m]),z=(0,Z.useMemo)(()=>(P?.providers??[]).toSorted((e,t)=>t.totalTokens-e.totalTokens),[P?.providers]);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`page-head usage-head`,children:[(0,Q.jsx)(`h2`,{id:`usage-page-title`,children:i(`usage.title`)}),o===`report`&&(0,Q.jsx)(eD,{surface:u,range:v?null:c,onSurface:d,onRange:D,t:i})]}),(0,Q.jsx)(`div`,{className:`page-tabs`,role:`tablist`,"aria-label":i(`nav.usage`),children:[`report`,`companion`].map(e=>(0,Q.jsx)(`button`,{type:`button`,role:`tab`,id:`usage-tab-${e}`,"aria-selected":o===e,"aria-controls":`usage-panel-${e}`,tabIndex:o===e?0:-1,className:`page-tab${o===e?` page-tab--active`:``}`,onClick:()=>FE(e),onKeyDown:IE,children:i(e===`report`?`usage.workspace.report`:`usage.section.companion`)},e))}),o===`companion`?(0,Q.jsx)(`div`,{role:`tabpanel`,id:`usage-panel-companion`,"aria-labelledby":`usage-tab-companion`,children:(0,Q.jsx)(NE,{apiBase:e,providers:P?.providers??[]})}):(0,Q.jsxs)(`div`,{role:`tabpanel`,id:`usage-panel-report`,"aria-labelledby":`usage-tab-report`,children:[(0,Q.jsx)(`p`,{className:`page-sub`,children:i(`usage.subtitle`)}),(0,Q.jsxs)(`section`,{className:`usage-range`,children:[(0,Q.jsxs)(`div`,{className:`usage-range-bar`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`usage-range-toggle${v?` is-active`:``}`,"aria-expanded":S,"aria-controls":S?`usage-range-panel`:void 0,onClick:()=>{S&&x(null),C(!S)},children:[(0,Q.jsx)(`span`,{children:i(`usage.range.custom`)}),(0,Q.jsx)(Ke,{width:12,height:12,"aria-hidden":`true`,className:`usage-range-chevron`})]}),v&&(0,Q.jsx)(`p`,{className:`usage-range-applied muted text-control`,role:`status`,children:(()=>{let e=new Intl.DateTimeFormat(a,{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,fractionalSecondDigits:3,timeZoneName:`short`});return i(`usage.range.applied`,{start:e.format(v.since),end:e.format(v.until)})})()})]}),S&&(0,Q.jsxs)(`form`,{id:`usage-range-panel`,className:`usage-range-panel`,"aria-label":i(`usage.range.custom`),noValidate:!0,onSubmit:e=>{e.preventDefault();let t=fE(g.since,g.until);if(t.ok===!1){x(t.error);return}x(null),y(t.window)},children:[(0,Q.jsxs)(`div`,{className:`usage-range-fields`,children:[(0,Q.jsxs)(`label`,{className:`usage-range-field`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:i(`usage.range.start`)}),(0,Q.jsx)(`input`,{className:`input`,type:`datetime-local`,step:`60`,required:!0,value:g.since,"aria-invalid":b!==null,"aria-describedby":b?`usage-range-help usage-range-error`:`usage-range-help`,onChange:e=>{let t=e.currentTarget.value;_(e=>({...e,since:t})),x(null)}})]}),(0,Q.jsxs)(`label`,{className:`usage-range-field`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:i(`usage.range.end`)}),(0,Q.jsx)(`input`,{className:`input`,type:`datetime-local`,step:`60`,required:!0,value:g.until,"aria-invalid":b!==null,"aria-describedby":b?`usage-range-help usage-range-error`:`usage-range-help`,onChange:e=>{let t=e.currentTarget.value;_(e=>({...e,until:t})),x(null)}})]}),(0,Q.jsx)(`button`,{type:`submit`,className:`btn btn-primary btn-sm usage-range-action`,children:i(`usage.range.apply`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm usage-range-action`,onClick:E,children:i(`usage.range.clear`)})]}),(0,Q.jsx)(`p`,{id:`usage-range-help`,className:`muted text-caption`,children:i(`usage.range.help`)}),b&&(0,Q.jsx)(`p`,{id:`usage-range-error`,role:`alert`,className:`notice notice-err`,children:i(`usage.range.${b}`)})]})]}),n&&(0,Q.jsxs)(`div`,{className:`usage-source-row`,children:[(0,Q.jsx)(`span`,{children:i(`usage.source.connected`)}),(0,Q.jsxs)(`div`,{className:`usage-scope-control`,role:`group`,"aria-label":i(`usage.scope.label`),children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm${f===`machine`?` btn-primary`:` btn-ghost`}`,"aria-pressed":f===`machine`,onClick:()=>p(`machine`),children:i(`usage.scope.machine`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm${f===`hub`?` btn-primary`:` btn-ghost`}`,"aria-pressed":f===`hub`,onClick:()=>p(`hub`),children:i(`usage.scope.hub`)})]})]}),N.showSkeleton&&!P?(0,Q.jsx)(Ry,{label:i(`usage.loading`),rows:5}):N.kind===`failed-cold`?(0,Q.jsxs)($,{tone:`err`,children:[N.error instanceof LE?`${i(`usage.loadError`)} ${i(`dash.codexRestartMalformed`)}`:N.error instanceof pr?i(`usage.loadError`):n?i(`usage.hubOffline`):N.error instanceof Error?`${i(`usage.loadError`)} ${N.error.message}`:i(`usage.loadError`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>M.refresh(),children:i(`common.retry`)})]}):(0,Q.jsxs)(Q.Fragment,{children:[N.showError&&(0,Q.jsx)($,{tone:`err`,children:i(n&&!(N.error instanceof pr)?`usage.hubOffline`:`usage.loadError`)}),(0,Q.jsx)(gr,{data:P}),P?.historyTruncated&&(0,Q.jsx)($,{tone:`warn`,children:(()=>{let e=mD(P.snapshotWindowStart),t=mD(P.snapshotWindowEnd);return e!==null&&t!==null?i(`usage.historyTruncatedWindow`,{start:e,end:t}):i(`usage.historyTruncated`)})()}),(0,Q.jsx)(cD,{data:P,heatmap:F,weekBars:I,activeDays:L,filteredModels:R,modelQuery:m,onModelQuery:h,sortedProviders:z,range:v?null:c,locale:a,t:i})]})]})]})}function mD(e){if(typeof e!=`number`||!Number.isFinite(e))return null;let t=new Date(e);return Number.isFinite(t.getTime())?t.toLocaleString():null}function hD(e,t){if(e<1024)return`${e} B`;let n=[`KiB`,`MiB`,`GiB`,`TiB`],r=e,i=-1;do r/=1024,i++;while(r>=1024&&i<n.length-1);return`${r.toLocaleString(t,{maximumFractionDigits:1})} ${n[i]}`}var gD={en:{compact:`Compact`,compactComplete:`Compaction complete (logical / on-disk reclaimed)`,pagesUnit:`pages`,compactPartial:`Compaction partial (logical / on-disk reclaimed)`,confirmCompact:`Confirm compaction`,cancel:`Cancel`,inspectionOnly:`Inspection only`,externalSqliteHome:`External SQLite storage`,inspectionUnavailable:`Diagnostic log inspection is unavailable.`,metricsSkippedLarge:`Row metrics skipped: the database is above {threshold}, and scanning it would stall the proxy.`,protection:`Protection`,compat:`Compatibility`,quiet:`Quiet`,disable:`Disable protection`,repair:`Repair protection`,applying:`Applying protection…`,"error.generic":`Could not change Codex log protection.`,"error.codex_running":`Quit Codex before changing log protection.`,"error.process_enumeration_failed":`Could not verify that Codex is stopped. Protection was not changed.`,"error.busy":`The Codex logs database is busy. Quit Codex and try again.`,"error.unsupported_schema":`This Codex logs schema is not supported for protection.`,"error.trigger_collision":`A reserved Log Guard trigger name is already in use. Protection was not changed.`,"error.unsafe_path":`The Codex logs database path failed the safety check.`,"error.database_error":`Could not update the Codex logs database.`,"error.config_write_failed":`The database changed, but OpenCodex could not save the protection setting. Fix config storage, then run Repair.`},de:{compact:`Komprimieren`,compactComplete:`Komprimierung abgeschlossen (logisch / auf Datentraeger freigegeben)`,pagesUnit:`Seiten`,compactPartial:`Komprimierung teilweise (logisch / auf Datentraeger freigegeben)`,confirmCompact:`Komprimierung bestätigen`,cancel:`Abbrechen`,inspectionOnly:`Nur Inspektion`,externalSqliteHome:`Externer SQLite-Speicher`,inspectionUnavailable:`Die Diagnoseprotokoll-Inspektion ist nicht verfügbar.`,metricsSkippedLarge:`Zeilenmetriken übersprungen: Die Datenbank ist größer als {threshold}; ein Scan würde den Proxy blockieren.`,protection:`Schutz`,compat:`Kompatibilität`,quiet:`Leise`,disable:`Schutz deaktivieren`,repair:`Schutz reparieren`,applying:`Schutz wird angewendet…`,"error.generic":`Der Schutz der Codex-Protokolle konnte nicht geändert werden.`,"error.codex_running":`Beende Codex, bevor du den Protokollschutz änderst.`,"error.process_enumeration_failed":`Es konnte nicht sicher festgestellt werden, dass Codex beendet ist. Der Schutz wurde nicht geändert.`,"error.busy":`Die Codex-Protokolldatenbank ist belegt. Beende Codex und versuche es erneut.`,"error.unsupported_schema":`Dieses Schema der Codex-Protokolldatenbank wird für den Schutz nicht unterstützt.`,"error.trigger_collision":`Ein reservierter Log-Guard-Triggername wird bereits verwendet. Der Schutz wurde nicht geändert.`,"error.unsafe_path":`Der Pfad der Codex-Protokolldatenbank hat die Sicherheitsprüfung nicht bestanden.`,"error.database_error":`Die Codex-Protokolldatenbank konnte nicht aktualisiert werden.`,"error.config_write_failed":`Die Datenbank wurde geändert, aber OpenCodex konnte die Schutzeinstellung nicht speichern. Repariere den Konfigurationsspeicher und führe danach Reparieren aus.`},fr:{compact:`Compacter`,compactComplete:`Compactage termine (logique / recupere sur disque)`,pagesUnit:`pages`,compactPartial:`Compactage partiel (logique / recupere sur disque)`,confirmCompact:`Confirmer le compactage`,cancel:`Annuler`,inspectionOnly:`Inspection uniquement`,externalSqliteHome:`Stockage SQLite externe`,inspectionUnavailable:`L’inspection des journaux de diagnostic est indisponible.`,metricsSkippedLarge:`Métriques de lignes ignorées : la base dépasse {threshold} et son analyse bloquerait le proxy.`,protection:`Protection`,compat:`Compatibilité`,quiet:`Silencieux`,disable:`Désactiver la protection`,repair:`Réparer la protection`,applying:`Application de la protection…`,"error.generic":`Impossible de modifier la protection des journaux Codex.`,"error.codex_running":`Quittez Codex avant de modifier la protection des journaux.`,"error.process_enumeration_failed":`Impossible de vérifier que Codex est arrêté. La protection n’a pas été modifiée.`,"error.busy":`La base de données des journaux Codex est occupée. Quittez Codex et réessayez.`,"error.unsupported_schema":`Ce schéma de journaux Codex n’est pas pris en charge pour la protection.`,"error.trigger_collision":`Un nom de déclencheur Log Guard réservé est déjà utilisé. La protection n’a pas été modifiée.`,"error.unsafe_path":`Le chemin de la base de données des journaux Codex a échoué au contrôle de sécurité.`,"error.database_error":`Impossible de mettre à jour la base de données des journaux Codex.`,"error.config_write_failed":`La base de données a été modifiée, mais OpenCodex n’a pas pu enregistrer le paramètre de protection. Corrigez le stockage de configuration, puis lancez Réparer.`},ko:{compact:`압축`,compactComplete:`압축 완료 (논리 / 디스크 회수량)`,pagesUnit:`페이지`,compactPartial:`압축 부분 완료 (논리 / 디스크 회수량)`,confirmCompact:`압축 확인`,cancel:`취소`,inspectionOnly:`검사 전용`,externalSqliteHome:`외부 SQLite 저장소`,inspectionUnavailable:`진단 로그 검사를 사용할 수 없습니다.`,metricsSkippedLarge:`행 지표를 건너뛰었습니다. 데이터베이스가 {threshold}보다 커서 스캔하면 프록시가 멈춥니다.`,protection:`보호`,compat:`호환 모드`,quiet:`조용한 모드`,disable:`보호 비활성화`,repair:`보호 복구`,applying:`보호 적용 중…`,"error.generic":`Codex 로그 보호를 변경하지 못했습니다.`,"error.codex_running":`로그 보호를 변경하기 전에 Codex를 종료하세요.`,"error.process_enumeration_failed":`Codex가 종료되었는지 확인할 수 없어 보호를 변경하지 않았습니다.`,"error.busy":`Codex 로그 데이터베이스가 사용 중입니다. Codex를 종료한 뒤 다시 시도하세요.`,"error.unsupported_schema":`이 Codex 로그 스키마는 보호 기능을 지원하지 않습니다.`,"error.trigger_collision":`예약된 Log Guard 트리거 이름이 이미 사용 중입니다. 보호를 변경하지 않았습니다.`,"error.unsafe_path":`Codex 로그 데이터베이스 경로가 안전성 검사를 통과하지 못했습니다.`,"error.database_error":`Codex 로그 데이터베이스를 업데이트하지 못했습니다.`,"error.config_write_failed":`데이터베이스는 변경되었지만 OpenCodex가 보호 설정을 저장하지 못했습니다. 구성 저장소를 수정한 뒤 복구를 실행하세요.`},zh:{compact:`压缩`,compactComplete:`压缩完成(逻辑 / 磁盘回收)`,pagesUnit:`页`,compactPartial:`压缩部分完成(逻辑 / 磁盘回收)`,confirmCompact:`确认压缩`,cancel:`取消`,inspectionOnly:`仅检查`,externalSqliteHome:`外部 SQLite 存储`,inspectionUnavailable:`诊断日志检查当前不可用。`,metricsSkippedLarge:`已跳过行指标:数据库超过 {threshold},扫描会阻塞代理。`,protection:`保护`,compat:`兼容模式`,quiet:`静默模式`,disable:`禁用保护`,repair:`修复保护`,applying:`正在应用保护…`,"error.generic":`无法更改 Codex 日志保护。`,"error.codex_running":`更改 Codex 日志保护前请先退出 Codex。`,"error.process_enumeration_failed":`无法确认 Codex 已停止,因此未更改保护设置。`,"error.busy":`Codex 日志数据库正忙。请退出 Codex 后重试。`,"error.unsupported_schema":`此 Codex 日志数据库结构不支持保护功能。`,"error.trigger_collision":`保留的 Log Guard 触发器名称已被占用,因此未更改保护设置。`,"error.unsafe_path":`Codex 日志数据库路径未通过安全检查。`,"error.database_error":`无法更新 Codex 日志数据库。`,"error.config_write_failed":`数据库已更改,但 OpenCodex 无法保存保护设置。请先修复配置存储,然后运行“修复保护”。`},"zh-TW":{compact:`壓縮`,compactComplete:`压缩完成(逻辑 / 磁盘回收)`,pagesUnit:`頁`,compactPartial:`压缩部分完成(逻辑 / 磁盘回收)`,confirmCompact:`確認壓縮`,cancel:`取消`,inspectionOnly:`僅檢查`,externalSqliteHome:`外部 SQLite 儲存空間`,inspectionUnavailable:`診斷記錄檢查目前無法使用。`,metricsSkippedLarge:`已略過列指標:資料庫超過 {threshold},掃描會阻塞代理。`,protection:`保護`,compat:`相容模式`,quiet:`靜默模式`,disable:`停用保護`,repair:`修復保護`,applying:`正在套用保護…`,"error.generic":`無法變更 Codex 日誌保護。`,"error.codex_running":`變更 Codex 日誌保護前請先退出 Codex。`,"error.process_enumeration_failed":`無法確認 Codex 已停止,因此未變更保護設定。`,"error.busy":`Codex 日誌資料庫忙碌中。請退出 Codex 後重試。`,"error.unsupported_schema":`此 Codex 日誌資料庫結構不支援保護功能。`,"error.trigger_collision":`保留的 Log Guard 觸發器名稱已被使用,因此未變更保護設定。`,"error.unsafe_path":`Codex 日誌資料庫路徑未通過安全檢查。`,"error.database_error":`無法更新 Codex 日誌資料庫。`,"error.config_write_failed":`資料庫已變更,但 OpenCodex 無法儲存保護設定。請先修復設定儲存空間,再執行「修復保護」。`},ru:{compact:`Сжать`,compactComplete:`Сжатие завершено (логически / освобождено на диске)`,pagesUnit:`страниц`,compactPartial:`Сжатие частичное (логически / освобождено на диске)`,confirmCompact:`Подтвердить сжатие`,cancel:`Отмена`,inspectionOnly:`Только проверка`,externalSqliteHome:`Внешнее хранилище SQLite`,inspectionUnavailable:`Проверка диагностических журналов недоступна.`,metricsSkippedLarge:`Метрики строк пропущены: база больше {threshold}, и её сканирование заблокировало бы прокси.`,protection:`Защита`,compat:`Совместимость`,quiet:`Тихий режим`,disable:`Отключить защиту`,repair:`Восстановить защиту`,applying:`Применение защиты…`,"error.generic":`Не удалось изменить защиту журналов Codex.`,"error.codex_running":`Закройте Codex перед изменением защиты журналов.`,"error.process_enumeration_failed":`Не удалось убедиться, что Codex остановлен. Защита не изменена.`,"error.busy":`База журналов Codex занята. Закройте Codex и повторите попытку.`,"error.unsupported_schema":`Эта схема базы журналов Codex не поддерживает защиту.`,"error.trigger_collision":`Зарезервированное имя триггера Log Guard уже используется. Защита не изменена.`,"error.unsafe_path":`Путь к базе журналов Codex не прошёл проверку безопасности.`,"error.database_error":`Не удалось обновить базу журналов Codex.`,"error.config_write_failed":`База была изменена, но OpenCodex не смог сохранить настройку защиты. Исправьте хранилище конфигурации и затем запустите восстановление.`},ja:{compact:`圧縮`,compactComplete:`圧縮完了(論理 / ディスク解放)`,pagesUnit:`ページ`,compactPartial:`圧縮は部分的に完了(論理 / ディスク解放)`,confirmCompact:`圧縮を確認`,cancel:`キャンセル`,inspectionOnly:`検査のみ`,externalSqliteHome:`外部 SQLite ストレージ`,inspectionUnavailable:`診断ログの検査を利用できません。`,metricsSkippedLarge:`行メトリクスをスキップしました。データベースが {threshold} を超えており、走査するとプロキシが停止します。`,protection:`保護`,compat:`互換モード`,quiet:`静音モード`,disable:`保護を無効化`,repair:`保護を修復`,applying:`保護を適用中…`,"error.generic":`Codex ログ保護を変更できませんでした。`,"error.codex_running":`ログ保護を変更する前に Codex を終了してください。`,"error.process_enumeration_failed":`Codex が停止していることを確認できなかったため、保護は変更されませんでした。`,"error.busy":`Codex ログデータベースが使用中です。Codex を終了して再試行してください。`,"error.unsupported_schema":`この Codex ログスキーマでは保護機能を使用できません。`,"error.trigger_collision":`予約済みの Log Guard トリガー名が既に使用されています。保護は変更されませんでした。`,"error.unsafe_path":`Codex ログデータベースのパスが安全性チェックに失敗しました。`,"error.database_error":`Codex ログデータベースを更新できませんでした。`,"error.config_write_failed":`データベースは変更されましたが、OpenCodex は保護設定を保存できませんでした。設定ストレージを修正してから保護を修復してください。`},tr:{compact:`Sıkıştır`,compactComplete:`Sikistirma tamamlandi (mantiksal / diskte geri kazanilan)`,pagesUnit:`sayfa`,compactPartial:`Sikistirma kismi (mantiksal / diskte geri kazanilan)`,confirmCompact:`Sıkıştırmayı onayla`,cancel:`İptal`,inspectionOnly:`Yalnızca inceleme`,externalSqliteHome:`Harici SQLite depolaması`,inspectionUnavailable:`Tanılama günlüğü incelemesi kullanılamıyor.`,metricsSkippedLarge:`Satır ölçümleri atlandı: veritabanı {threshold} sınırının üzerinde ve taranması proxy’yi kilitler.`,protection:`Koruma`,compat:`Uyumluluk`,quiet:`Sessiz`,disable:`Korumayı devre dışı bırak`,repair:`Korumayı onar`,applying:`Koruma uygulanıyor…`,"error.generic":`Codex günlük koruması değiştirilemedi.`,"error.codex_running":`Günlük korumasını değiştirmeden önce Codex'i kapatın.`,"error.process_enumeration_failed":`Codex'in kapalı olduğu doğrulanamadı. Koruma değiştirilmedi.`,"error.busy":`Codex günlük veritabanı meşgul. Codex'i kapatıp yeniden deneyin.`,"error.unsupported_schema":`Bu Codex günlük şeması koruma için desteklenmiyor.`,"error.trigger_collision":`Ayrılmış bir Log Guard tetikleyici adı zaten kullanılıyor. Koruma değiştirilmedi.`,"error.unsafe_path":`Codex günlük veritabanı yolu güvenlik denetimini geçemedi.`,"error.database_error":`Codex günlük veritabanı güncellenemedi.`,"error.config_write_failed":`Veritabanı değişti ancak OpenCodex koruma ayarını kaydedemedi. Yapılandırma depolamasını düzeltip ardından korumayı onarın.`},vi:{compact:`Nén`,compactComplete:`Hoàn tất nén (logic / thu hồi trên đĩa)`,pagesUnit:`trang`,compactPartial:`Nén một phần (logic / thu hồi trên đĩa)`,confirmCompact:`Xác nhận nén`,cancel:`Hủy`,inspectionOnly:`Chỉ kiểm tra`,externalSqliteHome:`Lưu trữ SQLite bên ngoài`,inspectionUnavailable:`Tính năng kiểm tra nhật ký chẩn đoán không khả dụng.`,metricsSkippedLarge:`Đã bỏ qua số liệu hàng: cơ sở dữ liệu lớn hơn {threshold} và việc quét sẽ làm treo proxy.`,protection:`Bảo vệ`,compat:`Tương thích`,quiet:`Yên tĩnh`,disable:`Tắt bảo vệ`,repair:`Sửa chữa bảo vệ`,applying:`Đang áp dụng bảo vệ…`,"error.generic":`Không thể thay đổi bảo vệ nhật ký Codex.`,"error.codex_running":`Hãy thoát Codex trước khi thay đổi bảo vệ nhật ký.`,"error.process_enumeration_failed":`Không thể xác minh rằng Codex đã dừng. Bảo vệ chưa được thay đổi.`,"error.busy":`Cơ sở dữ liệu nhật ký Codex đang bận. Hãy thoát Codex và thử lại.`,"error.unsupported_schema":`Lược đồ nhật ký Codex này không được hỗ trợ để bảo vệ.`,"error.trigger_collision":`Tên trình kích hoạt Log Guard dành riêng đã được sử dụng. Bảo vệ chưa được thay đổi.`,"error.unsafe_path":`Đường dẫn cơ sở dữ liệu nhật ký Codex không vượt qua được kiểm tra an toàn.`,"error.database_error":`Không thể cập nhật cơ sở dữ liệu nhật ký Codex.`,"error.config_write_failed":`Cơ sở dữ liệu đã thay đổi nhưng OpenCodex không thể lưu cài đặt bảo vệ. Vui lòng sửa lỗi lưu trữ cấu hình, sau đó chạy Sửa chữa.`},pt:{compact:`Compactar`,compactComplete:`Compactação concluída (lógico / recuperado em disco)`,pagesUnit:`páginas`,compactPartial:`Compactação parcial (lógico / recuperado em disco)`,confirmCompact:`Confirmar compactação`,cancel:`Cancelar`,inspectionOnly:`Somente inspeção`,externalSqliteHome:`Armazenamento SQLite externo`,inspectionUnavailable:`A inspeção do log de diagnóstico não está disponível.`,metricsSkippedLarge:`Métricas de linhas ignoradas: o banco de dados excede {threshold} e a varredura travaria o proxy.`,protection:`Proteção`,compat:`Compatibilidade`,quiet:`Silencioso`,disable:`Desativar proteção`,repair:`Reparar proteção`,applying:`Aplicando proteção…`,"error.generic":`Não foi possível alterar a proteção de logs do Codex.`,"error.codex_running":`Feche o Codex antes de alterar a proteção de logs.`,"error.process_enumeration_failed":`Não foi possível verificar se o Codex está parado. A proteção não foi alterada.`,"error.busy":`O banco de dados de logs do Codex está ocupado. Feche o Codex e tente novamente.`,"error.unsupported_schema":`Este esquema de logs do Codex não é suportado para proteção.`,"error.trigger_collision":`Um nome de trigger reservado do Log Guard já está em uso. A proteção não foi alterada.`,"error.unsafe_path":`O caminho do banco de dados de logs do Codex falhou na verificação de segurança.`,"error.database_error":`Não foi possível atualizar o banco de dados de logs do Codex.`,"error.config_write_failed":`O banco de dados foi alterado, mas o OpenCodex não conseguiu salvar a configuração de proteção. Corrija o armazenamento de configuração e execute Reparar.`}};function _D(e,t){return gD[e][t]}var vD={en:{applying:`Applying Log Guard change…`,"error.generic":`Could not update Codex log storage.`,"error.codex_running":`Quit Codex before changing Codex log storage.`,"error.process_enumeration_failed":`Could not verify that Codex is stopped. The Log Guard operation was not started.`,"error.busy":`The Codex logs database is busy. Quit Codex and try again.`,"error.unsupported_schema":`This Codex logs schema is not supported for this operation.`,"error.unsafe_path":`The Codex logs database path failed the safety check.`,"error.database_error":`Could not update the Codex logs database.`,"error.auto_vacuum_not_incremental":`This Codex logs database is not configured for incremental vacuum, so space cannot be reclaimed without a full rebuild.`,"error.integrity_check_failed":`The Codex logs database failed its integrity check. No space was reclaimed.`},de:{applying:`Log-Guard-Änderung wird angewendet…`,"error.generic":`Der Codex-Protokollspeicher konnte nicht aktualisiert werden.`,"error.codex_running":`Beende Codex, bevor du den Codex-Protokollspeicher änderst.`,"error.process_enumeration_failed":`Es konnte nicht sicher festgestellt werden, dass Codex beendet ist. Der Log-Guard-Vorgang wurde nicht gestartet.`,"error.busy":`Die Codex-Protokolldatenbank ist belegt. Beende Codex und versuche es erneut.`,"error.unsupported_schema":`Dieses Schema der Codex-Protokolldatenbank wird für diesen Vorgang nicht unterstützt.`,"error.unsafe_path":`Der Pfad der Codex-Protokolldatenbank hat die Sicherheitsprüfung nicht bestanden.`,"error.database_error":`Die Codex-Protokolldatenbank konnte nicht aktualisiert werden.`,"error.auto_vacuum_not_incremental":`Diese Codex-Protokolldatenbank ist nicht fuer inkrementelles Vacuum konfiguriert; ohne vollstaendigen Neuaufbau kann kein Speicher freigegeben werden.`,"error.integrity_check_failed":`Die Integritaetspruefung der Codex-Protokolldatenbank ist fehlgeschlagen. Es wurde kein Speicher freigegeben.`},fr:{applying:`Application de la modification Log Guard…`,"error.generic":`Impossible de mettre à jour le stockage des journaux Codex.`,"error.codex_running":`Quittez Codex avant de modifier le stockage des journaux Codex.`,"error.process_enumeration_failed":`Impossible de vérifier que Codex est arrêté. L’opération Log Guard n’a pas été lancée.`,"error.busy":`La base de données des journaux Codex est occupée. Quittez Codex et réessayez.`,"error.unsupported_schema":`Ce schéma de journaux Codex n’est pas pris en charge pour cette opération.`,"error.unsafe_path":`Le chemin de la base de données des journaux Codex a échoué au contrôle de sécurité.`,"error.database_error":`Impossible de mettre à jour la base de données des journaux Codex.`,"error.auto_vacuum_not_incremental":`Cette base de donnees de journaux Codex n'est pas configuree pour le vacuum incrementiel : l'espace ne peut pas etre recupere sans reconstruction complete.`,"error.integrity_check_failed":`La verification d'integrite de la base de donnees de journaux Codex a echoue. Aucun espace n'a ete recupere.`},ko:{applying:`Log Guard 변경 적용 중…`,"error.generic":`Codex 로그 저장소를 업데이트하지 못했습니다.`,"error.codex_running":`Codex 로그 저장소를 변경하기 전에 Codex를 종료하세요.`,"error.process_enumeration_failed":`Codex가 종료되었는지 확인할 수 없어 Log Guard 작업을 시작하지 않았습니다.`,"error.busy":`Codex 로그 데이터베이스가 사용 중입니다. Codex를 종료한 뒤 다시 시도하세요.`,"error.unsupported_schema":`이 Codex 로그 스키마는 이 작업을 지원하지 않습니다.`,"error.unsafe_path":`Codex 로그 데이터베이스 경로가 안전성 검사를 통과하지 못했습니다.`,"error.database_error":`Codex 로그 데이터베이스를 업데이트하지 못했습니다.`,"error.auto_vacuum_not_incremental":`이 Codex 로그 데이터베이스는 증분 정리로 구성되어 있지 않아, 전체 재구축 없이는 공간을 회수할 수 없습니다.`,"error.integrity_check_failed":`Codex 로그 데이터베이스 무결성 검사에 실패했습니다. 공간이 회수되지 않았습니다.`},zh:{applying:`正在应用 Log Guard 更改…`,"error.generic":`无法更新 Codex 日志存储。`,"error.codex_running":`更改 Codex 日志存储前请先退出 Codex。`,"error.process_enumeration_failed":`无法确认 Codex 已停止,因此未启动 Log Guard 操作。`,"error.busy":`Codex 日志数据库正忙。请退出 Codex 后重试。`,"error.unsupported_schema":`此 Codex 日志数据库结构不支持此操作。`,"error.unsafe_path":`Codex 日志数据库路径未通过安全检查。`,"error.database_error":`无法更新 Codex 日志数据库。`,"error.auto_vacuum_not_incremental":`此 Codex 日志数据库未配置增量清理,因此不完整重建就无法回收空间。`,"error.integrity_check_failed":`Codex 日志数据库完整性检查失败,未回收任何空间。`},"zh-TW":{applying:`正在套用 Log Guard 變更…`,"error.generic":`無法更新 Codex 日誌儲存空間。`,"error.codex_running":`變更 Codex 日誌儲存空間前請先退出 Codex。`,"error.process_enumeration_failed":`無法確認 Codex 已停止,因此未啟動 Log Guard 操作。`,"error.busy":`Codex 日誌資料庫忙碌中。請退出 Codex 後重試。`,"error.unsupported_schema":`此 Codex 日誌資料庫結構不支援此操作。`,"error.unsafe_path":`Codex 日誌資料庫路徑未通過安全檢查。`,"error.database_error":`無法更新 Codex 日誌資料庫。`,"error.auto_vacuum_not_incremental":`此 Codex 日志数据库未配置增量清理,因此不完整重建就无法回收空间。`,"error.integrity_check_failed":`Codex 日志数据库完整性检查失败,未回收任何空间。`},ru:{applying:`Применение изменения Log Guard…`,"error.generic":`Не удалось обновить хранилище журналов Codex.`,"error.codex_running":`Закройте Codex перед изменением хранилища журналов Codex.`,"error.process_enumeration_failed":`Не удалось убедиться, что Codex остановлен. Операция Log Guard не запущена.`,"error.busy":`База журналов Codex занята. Закройте Codex и повторите попытку.`,"error.unsupported_schema":`Эта схема базы журналов Codex не поддерживает эту операцию.`,"error.unsafe_path":`Путь к базе журналов Codex не прошёл проверку безопасности.`,"error.database_error":`Не удалось обновить базу журналов Codex.`,"error.auto_vacuum_not_incremental":`Эта база данных журналов Codex не настроена на инкрементальную очистку, поэтому освободить место без полной перестройки невозможно.`,"error.integrity_check_failed":`Проверка целостности базы данных журналов Codex не пройдена. Место не освобождено.`},ja:{applying:`Log Guard の変更を適用中…`,"error.generic":`Codex ログストレージを更新できませんでした。`,"error.codex_running":`Codex ログストレージを変更する前に Codex を終了してください。`,"error.process_enumeration_failed":`Codex が停止していることを確認できなかったため、Log Guard 操作を開始しませんでした。`,"error.busy":`Codex ログデータベースが使用中です。Codex を終了して再試行してください。`,"error.unsupported_schema":`この Codex ログスキーマではこの操作を使用できません。`,"error.unsafe_path":`Codex ログデータベースのパスが安全性チェックに失敗しました。`,"error.database_error":`Codex ログデータベースを更新できませんでした。`,"error.auto_vacuum_not_incremental":`この Codex ログ データベースは増分バキューム用に構成されていないため、完全な再構築なしに領域を解放できません。`,"error.integrity_check_failed":`Codex ログ データベースの整合性チェックに失敗しました。領域は解放されていません。`},tr:{applying:`Log Guard değişikliği uygulanıyor…`,"error.generic":`Codex günlük depolaması güncellenemedi.`,"error.codex_running":`Codex günlük depolamasını değiştirmeden önce Codex'i kapatın.`,"error.process_enumeration_failed":`Codex'in kapalı olduğu doğrulanamadı. Log Guard işlemi başlatılmadı.`,"error.busy":`Codex günlük veritabanı meşgul. Codex'i kapatıp yeniden deneyin.`,"error.unsupported_schema":`Bu Codex günlük şeması bu işlem için desteklenmiyor.`,"error.unsafe_path":`Codex günlük veritabanı yolu güvenlik denetimini geçemedi.`,"error.database_error":`Codex günlük veritabanı güncellenemedi.`,"error.auto_vacuum_not_incremental":`Bu Codex gunluk veritabani artimli vacuum icin yapilandirilmamis; tam yeniden olusturma olmadan alan geri kazanilamaz.`,"error.integrity_check_failed":`Codex gunluk veritabani butunluk denetiminden gecemedi. Alan geri kazanilmadi.`},vi:{applying:`Đang áp dụng thay đổi Log Guard…`,"error.generic":`Không thể cập nhật lưu trữ nhật ký Codex.`,"error.codex_running":`Hãy thoát Codex trước khi thay đổi lưu trữ nhật ký Codex.`,"error.process_enumeration_failed":`Không thể xác minh rằng Codex đã dừng. Thao tác Log Guard chưa được bắt đầu.`,"error.busy":`Cơ sở dữ liệu nhật ký Codex đang bận. Hãy thoát Codex và thử lại.`,"error.unsupported_schema":`Lược đồ nhật ký Codex này không được hỗ trợ cho thao tác này.`,"error.unsafe_path":`Đường dẫn cơ sở dữ liệu nhật ký Codex không vượt qua được kiểm tra an toàn.`,"error.database_error":`Không thể cập nhật cơ sở dữ liệu nhật ký Codex.`,"error.auto_vacuum_not_incremental":`Cơ sở dữ liệu nhật ký Codex này không được định cấu hình cho tính năng incremental vacuum, do đó không thể thu hồi dung lượng nếu không xây dựng lại hoàn toàn.`,"error.integrity_check_failed":`Cơ sở dữ liệu nhật ký Codex không vượt qua được kiểm tra tính toàn vẹn. Không có dung lượng nào được thu hồi.`},pt:{applying:`Aplicando alteração do Log Guard…`,"error.generic":`Não foi possível atualizar o armazenamento de logs do Codex.`,"error.codex_running":`Feche o Codex antes de alterar o armazenamento de logs do Codex.`,"error.process_enumeration_failed":`Não foi possível verificar se o Codex está parado. A operação do Log Guard não foi iniciada.`,"error.busy":`O banco de dados de logs do Codex está ocupado. Feche o Codex e tente novamente.`,"error.unsupported_schema":`Este esquema de logs do Codex não é suportado para esta operação.`,"error.unsafe_path":`O caminho do banco de dados de logs do Codex falhou na verificação de segurança.`,"error.database_error":`Não foi possível atualizar o banco de dados de logs do Codex.`,"error.auto_vacuum_not_incremental":`Este banco de dados de logs do Codex não está configurado para incremental vacuum; por isso, não é possível recuperar espaço sem uma reconstrução completa.`,"error.integrity_check_failed":`O banco de dados de logs do Codex falhou na verificação de integridade. Nenhum espaço foi recuperado.`}};function yD(e,t){return vD[e][t]}var bD={en:{schema:{compatible:`Compatible`,missing:`Database not found`,unreadable:`Database unavailable`,unsupported:`Unsupported`},protection:{off:`Off`,active:`Active`,drifted:`Needs repair`,unsupported:`Unsupported`,unknown:`Unknown`},mode:{off:`Off`,compat:`Compatibility`,quiet:`Quiet`,collision:`Unknown`}},de:{schema:{compatible:`Kompatibel`,missing:`Datenbank nicht gefunden`,unreadable:`Datenbank nicht lesbar`,unsupported:`Nicht unterstützt`},protection:{off:`Aus`,active:`Aktiv`,drifted:`Reparatur erforderlich`,unsupported:`Nicht unterstützt`,unknown:`Unbekannt`},mode:{off:`Aus`,compat:`Kompatibilität`,quiet:`Leise`,collision:`Unbekannt`}},fr:{schema:{compatible:`Compatible`,missing:`Base de données introuvable`,unreadable:`Base de données indisponible`,unsupported:`Non pris en charge`},protection:{off:`Désactivée`,active:`Active`,drifted:`Réparation requise`,unsupported:`Non prise en charge`,unknown:`Inconnue`},mode:{off:`Désactivé`,compat:`Compatibilité`,quiet:`Silencieux`,collision:`Inconnu`}},ko:{schema:{compatible:`호환됨`,missing:`데이터베이스 없음`,unreadable:`데이터베이스를 읽을 수 없음`,unsupported:`지원되지 않음`},protection:{off:`꺼짐`,active:`활성`,drifted:`복구 필요`,unsupported:`지원되지 않음`,unknown:`알 수 없음`},mode:{off:`꺼짐`,compat:`호환 모드`,quiet:`조용한 모드`,collision:`알 수 없음`}},zh:{schema:{compatible:`兼容`,missing:`未找到数据库`,unreadable:`无法读取数据库`,unsupported:`不受支持`},protection:{off:`关闭`,active:`已启用`,drifted:`需要修复`,unsupported:`不受支持`,unknown:`未知`},mode:{off:`关闭`,compat:`兼容模式`,quiet:`静默模式`,collision:`未知`}},"zh-TW":{schema:{compatible:`相容`,missing:`找不到資料庫`,unreadable:`無法讀取資料庫`,unsupported:`不支援`},protection:{off:`關閉`,active:`已啟用`,drifted:`需要修復`,unsupported:`不支援`,unknown:`未知`},mode:{off:`關閉`,compat:`相容模式`,quiet:`靜默模式`,collision:`未知`}},ru:{schema:{compatible:`Совместимо`,missing:`База не найдена`,unreadable:`База недоступна`,unsupported:`Не поддерживается`},protection:{off:`Выключено`,active:`Активно`,drifted:`Требуется восстановление`,unsupported:`Не поддерживается`,unknown:`Неизвестно`},mode:{off:`Выключено`,compat:`Совместимость`,quiet:`Тихий режим`,collision:`Неизвестно`}},ja:{schema:{compatible:`互換`,missing:`データベースが見つかりません`,unreadable:`データベースを読み取れません`,unsupported:`未対応`},protection:{off:`オフ`,active:`有効`,drifted:`修復が必要`,unsupported:`未対応`,unknown:`不明`},mode:{off:`オフ`,compat:`互換モード`,quiet:`静音モード`,collision:`不明`}},tr:{schema:{compatible:`Uyumlu`,missing:`Veritabanı bulunamadı`,unreadable:`Veritabanı okunamıyor`,unsupported:`Desteklenmiyor`},protection:{off:`Kapalı`,active:`Etkin`,drifted:`Onarım gerekli`,unsupported:`Desteklenmiyor`,unknown:`Bilinmiyor`},mode:{off:`Kapalı`,compat:`Uyumluluk`,quiet:`Sessiz`,collision:`Bilinmiyor`}},vi:{schema:{compatible:`Tương thích`,missing:`Không tìm thấy cơ sở dữ liệu`,unreadable:`Cơ sở dữ liệu không khả dụng`,unsupported:`Không được hỗ trợ`},protection:{off:`Tắt`,active:`Đang hoạt động`,drifted:`Cần sửa chữa`,unsupported:`Không được hỗ trợ`,unknown:`Không xác định`},mode:{off:`Tắt`,compat:`Tương thích`,quiet:`Yên tĩnh`,collision:`Không xác định`}},pt:{schema:{compatible:`Compatível`,missing:`Banco de dados não encontrado`,unreadable:`Banco de dados indisponível`,unsupported:`Não suportado`},protection:{off:`Desativada`,active:`Ativa`,drifted:`Requer reparo`,unsupported:`Não suportada`,unknown:`Desconhecida`},mode:{off:`Desativado`,compat:`Compatibilidade`,quiet:`Silencioso`,collision:`Desconhecido`}}};function xD(e,t){return bD[e].schema[t]}function SD(e,t){return bD[e].protection[t]}function CD(e,t){return bD[e].mode[t]}var wD={sessions:`storage.bucket.sessions`,archived_sessions:`storage.bucket.archived_sessions`,logs_db:`storage.bucket.logs_db`,state_db:`storage.bucket.state_db`,attachments:`storage.bucket.attachments`,deletion_manifests:`storage.bucket.deletion_manifests`,other:`storage.bucket.other`};function TD(e,t){let n=wD[e.key];return n?t(n):e.label}function ED(e,t){return e===void 0?`—`:new Date(e).toLocaleDateString(t)}function DD(e,t,n){return e.rows===void 0?`—`:e.rows===null?n(`storage.rows.unknown`):e.rows.toLocaleString(t)}function OD(e,t){switch(t){case`codex_running`:return yD(e,`error.codex_running`);case`process_enumeration_failed`:return yD(e,`error.process_enumeration_failed`);case`busy`:return yD(e,`error.busy`);case`unsupported_schema`:return yD(e,`error.unsupported_schema`);case`trigger_collision`:return _D(e,`error.trigger_collision`);case`unsafe_path`:return yD(e,`error.unsafe_path`);case`database_error`:return yD(e,`error.database_error`);case`auto_vacuum_not_incremental`:return yD(e,`error.auto_vacuum_not_incremental`);case`integrity_check_failed`:return yD(e,`error.integrity_check_failed`);case`config_write_failed`:return _D(e,`error.config_write_failed`);default:return yD(e,`error.generic`)}}function kD({report:e,locale:t,t:n,busy:r,error:i,compaction:a,onAction:o}){let s=e.metrics,c=e.capabilities.protection.state===`unsupported`||e.capabilities.reclaim.state===`unsupported`,l=e.protection,u=r||e.capabilities.protection.state!==`supported`,d=l!==void 0&&e.capabilities.reclaim.state===`supported`&&(s?.reclaimableBytes??0)>0,[f,p]=(0,Z.useState)(!1);return(0,Q.jsxs)(`div`,{className:`stw-section`,"data-testid":`codex-log-guard`,children:[(0,Q.jsx)(`h3`,{className:`stw-section-title`,children:n(`storage.bucket.logs_db`)}),(0,Q.jsxs)(`dl`,{className:`stw-kv`,children:[(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:n(`dash.status`)}),(0,Q.jsxs)(`dd`,{className:`stw-kv-mono`,children:[(0,Q.jsx)(`code`,{children:xD(t,e.schema.state)}),c&&e.schema.state===`unsupported`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:` · `}),(0,Q.jsx)(`code`,{children:_D(t,`inspectionOnly`)})]}):null]})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:n(`storage.bucket.logs_db`)}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:hD(e.files.databaseBytes,t)})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:(0,Q.jsx)(`code`,{children:`WAL`})}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:hD(e.files.walBytes,t)})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:(0,Q.jsx)(`code`,{children:`SHM`})}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:hD(e.files.shmBytes,t)})]}),s&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:n(`storage.col.rows`)}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:s.totalRows.toLocaleString(t)})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:(0,Q.jsx)(`code`,{children:`TRACE`})}),(0,Q.jsxs)(`dd`,{className:`stw-kv-mono`,children:[(s.traceShare*100).toFixed(1),`%`]})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:(0,Q.jsx)(`code`,{children:`freelist`})}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:hD(s.reclaimableBytes,t)})]})]}),!s&&e.metricsSkipped&&(0,Q.jsxs)(`div`,{className:`stw-kv-row`,"data-testid":`log-guard-metrics-skipped`,children:[(0,Q.jsx)(`dt`,{children:n(`storage.col.rows`)}),(0,Q.jsx)(`dd`,{className:`muted`,children:_D(t,`metricsSkippedLarge`).replace(`{threshold}`,hD(e.metricsSkipped.thresholdBytes,t))})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:(0,Q.jsx)(`code`,{children:`sqlite_home`})}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:(0,Q.jsx)(`code`,{children:e.externalSqliteHome?_D(t,`externalSqliteHome`):`CODEX_HOME`})})]})]}),l&&(0,Q.jsxs)(`div`,{className:`stw-section`,"data-testid":`log-guard-protection`,children:[(0,Q.jsx)(`h4`,{className:`stw-section-title`,children:_D(t,`protection`)}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:(0,Q.jsx)(`code`,{children:SD(t,l.state)})}),(0,Q.jsxs)(`span`,{className:`stw-kv-mono`,children:[(0,Q.jsx)(`code`,{children:CD(t,l.desiredMode)}),l.observedMode===l.desiredMode?null:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:` · `}),(0,Q.jsx)(`code`,{children:CD(t,l.observedMode)})]})]})]}),(0,Q.jsxs)(`div`,{className:`storage-policy-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"data-testid":`log-guard-protect-compat`,disabled:u,"aria-pressed":l.desiredMode===`compat`,onClick:()=>o({action:`protect`,mode:`compat`}),children:_D(t,`compat`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"data-testid":`log-guard-protect-quiet`,disabled:u,"aria-pressed":l.desiredMode===`quiet`,onClick:()=>o({action:`protect`,mode:`quiet`}),children:_D(t,`quiet`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"data-testid":`log-guard-unprotect`,disabled:u||l.desiredMode===`off`,onClick:()=>o({action:`unprotect`}),children:_D(t,`disable`)}),l.state===`drifted`&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,"data-testid":`log-guard-repair`,disabled:u,onClick:()=>o({action:`repair`}),children:_D(t,`repair`)}),r&&(0,Q.jsx)(`span`,{className:`muted`,role:`status`,children:yD(t,`applying`)})]}),i&&(0,Q.jsx)(`p`,{className:`err`,role:`alert`,children:i})]}),d&&(0,Q.jsx)(`div`,{className:`stw-section`,"data-testid":`log-guard-reclaim`,children:(0,Q.jsx)(`div`,{className:`storage-policy-actions`,children:f?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,"data-testid":`log-guard-compact-confirm`,disabled:r,onClick:()=>{p(!1),o({action:`compact`})},children:_D(t,`confirmCompact`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:r,onClick:()=>p(!1),children:_D(t,`cancel`)})]}):(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"data-testid":`log-guard-compact`,disabled:r,onClick:()=>p(!0),children:_D(t,`compact`)})})}),a&&(0,Q.jsx)(`div`,{className:`stw-section`,children:(0,Q.jsx)(`p`,{className:`stw-kv-mono`,role:`status`,"data-testid":`log-guard-compact-result`,children:a})}),s&&s.topTargets.length>0&&(0,Q.jsxs)(`div`,{className:`stw-section`,children:[(0,Q.jsx)(`h4`,{className:`stw-section-title`,children:(0,Q.jsx)(`code`,{children:`target`})}),s.topTargets.slice(0,5).map(e=>(0,Q.jsxs)(`div`,{className:`stw-file-row`,children:[(0,Q.jsx)(`span`,{className:`stw-file-path`,title:e.target,children:(0,Q.jsx)(`code`,{children:e.target})}),(0,Q.jsx)(`span`,{className:`stw-file-size`,children:e.rows.toLocaleString(t)})]},e.target))]}),(0,Q.jsx)(`p`,{className:`stw-hint`,children:(0,Q.jsxs)(`code`,{children:[`immutable=1 · snapshot=`,e.snapshot]})})]})}function AD({locale:e,t}){return(0,Q.jsxs)(`div`,{className:`stw-section`,"data-testid":`codex-log-guard-unavailable`,children:[(0,Q.jsx)(`h3`,{className:`stw-section-title`,children:t(`storage.bucket.logs_db`)}),(0,Q.jsx)(`p`,{className:`stw-hint`,children:_D(e,`inspectionUnavailable`)})]})}function jD({report:e,locale:t,apiBase:n=``,logGuardBusy:r=!1,onLogGuardAction:i}){let a=O(),[o,s]=(0,Z.useState)(null),[c,l]=(0,Z.useState)(null),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(null),[m,h]=(0,Z.useState)(null),g=(0,Z.useMemo)(()=>e.buckets.toSorted((e,t)=>t.bytes-e.bytes),[e.buckets]),_=g.find(e=>e.key===o)??null,v=c?.generation===e.generatedAt?c.report:e.codexLogs??null,y=f?.generation===e.generatedAt?f.message:null,b=m?.generation===e.generatedAt?m.summary:null,x=r||u,S=(0,Z.useMemo)(()=>{let t=[];for(let n of e.buckets)for(let e of n.largest??[])t.push({...e,bucketKey:n.key});return t.sort((e,t)=>t.bytes-e.bytes).slice(0,10)},[e.buckets]),C=(0,Z.useMemo)(()=>new Map(e.buckets.map(e=>[e.key,e])),[e.buckets]);return(0,Q.jsxs)(`div`,{className:`storage-workspace-root`,children:[(0,Q.jsxs)(`aside`,{className:`storage-workspace-rail`,"aria-label":a(`storage.section.buckets`),children:[(0,Q.jsxs)(`div`,{className:`storage-workspace-rail-header`,children:[(0,Q.jsx)(`span`,{className:`storage-workspace-rail-title`,children:a(`storage.section.buckets`)}),(0,Q.jsx)(`span`,{className:`storage-workspace-rail-count`,children:g.length})]}),(0,Q.jsx)(`div`,{className:`storage-workspace-rail-list`,children:g.length===0?(0,Q.jsx)(`span`,{className:`storage-workspace-rail-empty`,children:a(`storage.empty`)}):g.map(e=>(0,Q.jsxs)(`button`,{type:`button`,className:`storage-workspace-rail-row${o===e.key?` storage-workspace-rail-row--selected`:``}`,onClick:()=>s(t=>t===e.key?null:e.key),"aria-current":o===e.key?`true`:void 0,children:[(0,Q.jsxs)(`span`,{className:`storage-workspace-rail-primary`,children:[(0,Q.jsx)(`span`,{className:`storage-workspace-rail-name`,children:TD(e,a)}),(0,Q.jsx)(`span`,{className:`storage-workspace-rail-size`,children:hD(e.bytes,t)})]}),(0,Q.jsxs)(`span`,{className:`storage-workspace-rail-meta`,children:[e.fileCount.toLocaleString(t),` `,a(`storage.col.files`).toLowerCase()]})]},e.key))})]}),(0,Q.jsx)(`section`,{className:`storage-workspace-main`,"aria-label":_?TD(_,a):a(`storage.section.largest`),children:_?(0,Q.jsxs)(`div`,{className:`stw-detail`,children:[(0,Q.jsx)(`div`,{className:`stw-detail-toolbar`,children:(0,Q.jsxs)(`button`,{type:`button`,className:`stw-detail-back`,onClick:()=>s(null),children:[(0,Q.jsx)(Ke,{className:`stw-detail-back-chevron`,"aria-hidden":`true`}),a(`modal.back`)]})}),(0,Q.jsxs)(`div`,{className:`stw-detail-body`,children:[(0,Q.jsx)(`h2`,{className:`stw-detail-title`,children:TD(_,a)}),(0,Q.jsxs)(`dl`,{className:`stw-kv`,children:[(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:a(`storage.col.size`)}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:hD(_.bytes,t)})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:a(`storage.col.files`)}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:_.fileCount.toLocaleString(t)})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:a(`storage.col.oldest`)}),(0,Q.jsx)(`dd`,{children:ED(_.oldest,t)})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:a(`storage.col.newest`)}),(0,Q.jsx)(`dd`,{children:ED(_.newest,t)})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:a(`storage.col.rows`)}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:DD(_,t,a)})]})]}),(_.largest?.length??0)>0&&(0,Q.jsxs)(`div`,{className:`stw-section`,children:[(0,Q.jsx)(`h3`,{className:`stw-section-title`,children:a(`storage.section.largest`)}),_.largest.map(e=>(0,Q.jsxs)(`div`,{className:`stw-file-row`,children:[(0,Q.jsx)(`span`,{className:`stw-file-path`,title:e.path,children:e.path}),(0,Q.jsx)(`span`,{className:`stw-file-size`,children:hD(e.bytes,t)})]},e.path))]})]})]}):(0,Q.jsxs)(`div`,{className:`stw-overview`,children:[(0,Q.jsxs)(`div`,{className:`stw-summary`,children:[(0,Q.jsxs)(`div`,{className:`stw-summary-card`,children:[(0,Q.jsx)(`div`,{className:`stw-summary-label`,children:a(`storage.card.total`)}),(0,Q.jsx)(`div`,{className:`stw-summary-value`,children:hD(e.total.bytes,t)})]}),(0,Q.jsxs)(`div`,{className:`stw-summary-card`,children:[(0,Q.jsx)(`div`,{className:`stw-summary-label`,children:a(`storage.card.files`)}),(0,Q.jsx)(`div`,{className:`stw-summary-value`,children:e.total.fileCount.toLocaleString(t)})]}),(0,Q.jsxs)(`div`,{className:`stw-summary-card`,children:[(0,Q.jsx)(`div`,{className:`stw-summary-label`,children:a(`storage.card.home`)}),(0,Q.jsx)(`div`,{className:`stw-summary-value mono stw-home-path`,title:e.codexHome,children:e.codexHome})]})]}),v?(0,Q.jsx)(kD,{report:v,locale:t,t:a,busy:x,error:y,compaction:b,onAction:r=>{if(i){i(r);return}if(u)return;let a=e.generatedAt;(async()=>{d(!0),p(null),r.action===`compact`&&h(null);try{let e=r.action===`protect`?`protect`:r.action,i={method:`POST`,...r.action===`protect`?{headers:{"content-type":`application/json`},body:JSON.stringify({mode:r.mode})}:{}},o=await fetch(`${n}/api/storage/codex-logs/${e}`,i);if(!o.ok){let e=await o.json().catch(()=>({}));p({generation:a,message:OD(t,e.error)});return}if(r.action===`compact`){let e=(await o.json().catch(()=>null))?.report;if(e){let n=hD(e.logicalBytesReclaimed??0,t),r=hD(e.physicalDatabaseBytesReclaimed??0,t),i=e.complete?_D(t,`compactComplete`):_D(t,`compactPartial`),o=e.pagesReclaimed??0,s=!e.complete&&e.stopReason?` (${e.stopReason})`:``;h({generation:a,summary:[`${i}${s}`,`${o.toLocaleString(t)} ${_D(t,`pagesUnit`)}`,`${n} / ${r}`].join(` — `)})}try{let e=await fetch(`${n}/api/storage/codex-logs`);if(e.ok){let t=await e.json();l({generation:a,report:t})}}catch{}return}let s=await o.json();l({generation:a,report:s})}catch{p({generation:a,message:yD(t,`error.generic`)})}finally{d(!1)}})()}}):e.codexLogsError===`inspect_failed`?(0,Q.jsx)(AD,{locale:t,t:a}):null,S.length>0?(0,Q.jsxs)(`div`,{className:`stw-section`,children:[(0,Q.jsx)(`h3`,{className:`stw-section-title`,children:a(`storage.section.largest`)}),S.map(e=>{let n=C.get(e.bucketKey);return(0,Q.jsxs)(`div`,{className:`stw-file-row`,children:[(0,Q.jsx)(`span`,{className:`stw-file-path`,title:e.path,children:e.path}),n&&(0,Q.jsx)(`span`,{className:`stw-file-bucket`,children:TD(n,a)}),(0,Q.jsx)(`span`,{className:`stw-file-size`,children:hD(e.bytes,t)})]},`${e.bucketKey}:${e.path}`)})]}):(0,Q.jsxs)(`p`,{className:`stw-hint`,children:[(0,Q.jsx)(Ne,{style:{width:14,height:14,verticalAlign:`text-bottom`,marginRight:6},"aria-hidden":`true`}),a(`storage.workspace.selectBucket`)]})]})})]})}var MD=1024**3,ND=[10,25,50],PD=(e,t)=>{if(!(e instanceof Error))return t;let n=e.message;return n===`Failed to fetch`||n.includes(`NetworkError`)||n.includes(`network error`)||n.includes(`JSON`)||n.includes(`Unexpected end of`)?t:n||t};function FD({apiBase:e,locale:t,t:n,onDone:r}){let[i,a]=(0,Z.useState)(25),[o,s]=(0,Z.useState)(null),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(null),[g,_]=(0,Z.useState)(null),v=(0,Z.useRef)(null),y=(0,Z.useRef)(null),b=(0,Z.useRef)(!1),x=(0,Z.useCallback)((e=!1)=>{l(!1),d(!1),e&&s(null)},[]);(0,Z.useEffect)(()=>{b.current=f},[f]),(0,Z.useEffect)(()=>{if(!c)return;y.current=document.activeElement,v.current?.focus();let e=e=>{e.key===`Escape`&&!b.current&&x()};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e),y.current?.focus()}},[c,x]);let S=(e,t,r)=>{switch(e){case`codex_busy`:return n(`storage.cleanup.err.codex_busy`);case`stale_preview`:return n(`storage.cleanup.err.stale_preview`);case`restore_pending_overlap`:return n(`storage.cleanup.err.restore_pending_overlap`);case`referenced_history`:return n(`storage.cleanup.err.referenced_history`);case`invalid_digest`:return n(`storage.cleanup.err.invalid_digest`);case`invalid_mode`:return n(`storage.cleanup.err.invalid_mode`);case`fs_failed`:return r?n(`storage.cleanup.err.fs_failed_trash`,{trashDir:r}):n(`storage.cleanup.err.fs_failed`);case`db_reconcile_failed`:return n(`storage.cleanup.err.db_reconcile_failed`);case`cleanup_failed`:return n(`storage.cleanup.err.cleanup_failed`);default:return t??n(`storage.cleanup.cleanupFailed`)}},C=e=>n(`storage.cleanup.preset`,{percent:new Intl.NumberFormat(t,{style:`percent`,maximumFractionDigits:0}).format(e/100)}),w=async()=>{p(!0),_(null),h(null);try{let t=await fetch(`${e}/api/storage/cleanup/preview`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({percent:i})});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(S(e.error,n(`storage.cleanup.previewFailed`)))}let r=await t.json();s(r),l(!0)}catch(e){_(PD(e,n(`storage.cleanup.previewFailed`)))}finally{p(!1)}},T=async()=>{if(o){p(!0),_(null);try{let i=await fetch(`${e}/api/storage/cleanup`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({percent:o.percent,mode:u?`permanent`:`quarantine`,digest:o.digest})});if(!i.ok){let e=await i.json().catch(()=>({}));throw e.error===`stale_preview`&&x(!0),Error(S(e.error,e.message,e.trashDir))}let a=await i.json();if(!a.ok)throw a.error===`stale_preview`&&x(!0),Error(S(a.error,a.message,a.trashDir));x(!0);let s=n(u?`storage.cleanup.donePermanent`:`storage.cleanup.doneQuarantine`,{count:String(a.count),size:hD(a.bytes,t)});h(a.skippedReferencedPaths?.length?`${s} ${n(`storage.cleanup.skippedReferenced`,{count:String(a.skippedReferencedPaths.length)})}`:s),r()}catch(e){_(PD(e,n(`storage.cleanup.cleanupFailed`)))}finally{p(!1)}}};return(0,Q.jsxs)(`section`,{className:`storage-cleanup-pane`,children:[(0,Q.jsx)(`p`,{className:`muted storage-manual-panel__help`,children:n(`storage.cleanup.help`)}),(0,Q.jsxs)(`div`,{className:`storage-manual-panel__controls`,children:[(0,Q.jsxs)(`label`,{className:`storage-manual-panel__slider`,children:[(0,Q.jsx)(`span`,{className:`muted mono`,style:{minWidth:`3.5rem`,fontVariantNumeric:`tabular-nums`},children:n(`storage.cleanup.percent`,{percent:String(i)})}),(0,Q.jsx)(`input`,{type:`range`,min:1,max:100,value:i,onChange:e=>a(Number(e.target.value)),disabled:f,style:{flex:1,minWidth:0},"aria-label":n(`storage.cleanup.slider`)})]}),(0,Q.jsx)(`div`,{className:`storage-manual-panel__presets`,children:ND.map(e=>(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm${i===e?` active`:``}`,disabled:f,onClick:()=>a(e),children:C(e)},e))}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:f,onClick:()=>void w(),children:n(`storage.cleanup.preview`)})]}),m&&(0,Q.jsx)(`p`,{className:`muted storage-manual-panel__status`,children:m}),g&&!c&&(0,Q.jsx)(`p`,{className:`storage-manual-panel__status`,style:{color:`var(--red)`},children:g}),c&&o&&(0,Q.jsx)(`div`,{className:`modal-overlay`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`storage-cleanup-confirm-title`,onClick:()=>!f&&x(),children:(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsx)(`h3`,{id:`storage-cleanup-confirm-title`,children:n(`storage.cleanup.confirmTitle`)}),(0,Q.jsx)(`p`,{children:n(`storage.cleanup.confirmBody`,{count:String(o.count),size:hD(o.bytes,t),percent:String(o.percent)})}),o.candidates.length>0&&(0,Q.jsxs)(`ul`,{className:`mono muted`,style:{maxHeight:160,overflow:`auto`,fontSize:`var(--text-caption)`},children:[o.candidates.slice(0,8).map(e=>(0,Q.jsx)(`li`,{children:e.relPath},e.relPath)),o.count>8&&(0,Q.jsx)(`li`,{children:n(`storage.cleanup.moreFiles`,{n:String(Math.max(0,o.count-8))})})]}),(0,Q.jsxs)(`label`,{style:{display:`flex`,gap:8,alignItems:`center`,marginTop:12},children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:u,disabled:f,onChange:e=>d(e.target.checked)}),(0,Q.jsx)(`span`,{children:n(`storage.cleanup.permanent`)})]}),(0,Q.jsx)(`p`,{className:`muted`,style:{marginTop:8,fontSize:`var(--text-caption)`},children:n(u?`storage.cleanup.permanentWarn`:`storage.cleanup.quarantineNote`)}),g&&(0,Q.jsx)(`p`,{style:{marginTop:12,color:`var(--red)`},children:g}),(0,Q.jsxs)(`div`,{className:`dialog-actions`,style:{marginTop:16},children:[(0,Q.jsx)(`button`,{ref:v,type:`button`,className:`btn btn-ghost`,disabled:f,onClick:()=>x(),children:n(`storage.cleanup.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:u?`btn btn-danger`:`btn`,disabled:f||o.count===0,onClick:()=>void T(),children:n(u?`storage.cleanup.confirmPermanent`:`storage.cleanup.confirmQuarantine`)})]})]})})]})}function ID({apiBase:e,locale:t,t:n,onDone:r,reloadToken:i,onEntriesChange:a}){let[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(null),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(null),m=(0,Z.useRef)(null),h=(0,Z.useRef)(null),g=(0,Z.useRef)(!1);(0,Z.useEffect)(()=>{g.current=o},[o]);let _=(0,Z.useCallback)(()=>l(null),[]);(0,Z.useEffect)(()=>{if(!c)return;h.current=document.activeElement,m.current?.focus();let e=e=>{e.key===`Escape`&&!g.current&&_()};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e),h.current?.focus()}},[c,_]);let v=(0,Z.useCallback)(async t=>{let r=await fetch(`${e}/api/storage/trash`,{signal:t});if(!r.ok)throw Error(n(`storage.trash.listFailed`));let i=await r.json(),o=Array.isArray(i.entries)?i.entries:[];return a?.(o),o},[e,a,n]),y=Ya(`storage-trash:${e}`,[e,i],v,{isEmpty:e=>e.length===0}).state,b=y.data??[],x=(e,t)=>{switch(e){case`codex_busy`:return n(`storage.trash.err.codex_busy`);case`invalid_trash`:return n(`storage.trash.err.invalid_trash`);case`missing_trash`:return n(`storage.trash.err.missing_trash`);case`dest_exists`:return n(`storage.trash.err.dest_exists`);case`fs_failed`:return n(`storage.trash.err.fs_failed`);case`db_reconcile_failed`:return n(`storage.trash.err.db_reconcile_failed`);case`storage_mutation_busy`:return n(`storage.trash.err.storage_mutation_busy`);case`restore_failed`:return n(`storage.trash.err.restore_failed`);case`restore_worker_timeout`:return n(`storage.trash.err.restore_worker_timeout`);case`restore_worker_aborted`:return n(`storage.trash.err.restore_worker_aborted`);case`restore_worker_failed`:return t??n(`storage.trash.err.restore_worker_failed`);default:return t??n(`storage.trash.restoreFailed`)}},S=async()=>{if(c){s(!0),p(null);try{let i=await fetch(`${e}/api/storage/trash/restore`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:c.id})});if(!i.ok){let e=await i.json().catch(()=>({}));throw Error(x(e.error,e.message))}let a=await i.json();if(!a.ok)throw Error(x(a.error,a.message));_(),d(n(`storage.trash.done`,{count:String(a.count),size:hD(a.bytes,t)})),r()}catch(e){p(PD(e,n(`storage.trash.restoreFailed`)))}finally{s(!1)}}},C=e=>{let n=e.quarantinedAt??Number(e.epoch.split(`-`)[0]);return!Number.isFinite(n)||n<=0?`—`:new Date(n).toLocaleString(t)},w=e=>e===`permanent`?n(`storage.trash.mode.permanent`):e===`quarantine`?n(`storage.trash.mode.quarantine`):`—`;return(0,Q.jsxs)(`section`,{className:`storage-cleanup-pane storage-quarantine-pane`,children:[(0,Q.jsx)(`p`,{className:`muted storage-manual-panel__help`,children:n(`storage.trash.help`)}),u&&(0,Q.jsx)(`p`,{className:`muted storage-manual-panel__status`,children:u}),f&&!c&&(0,Q.jsx)(`p`,{className:`storage-manual-panel__status`,style:{color:`var(--red)`},role:`alert`,children:f}),y.showError&&!c&&(0,Q.jsx)(`p`,{className:`storage-manual-panel__status`,style:{color:`var(--red)`},role:`alert`,children:y.error instanceof Error?y.error.message:n(`storage.trash.listFailed`)}),y.refreshing&&!y.showSkeleton&&(0,Q.jsx)(zy,{live:!y.showError,children:n(`storage.trash.loading`)}),y.showSkeleton?(0,Q.jsx)(Ry,{label:n(`storage.trash.loading`),rows:2}):b.length===0?(0,Q.jsx)(`p`,{className:`muted storage-manual-panel__status`,children:n(`storage.trash.empty`)}):(0,Q.jsx)(`div`,{className:`tbl-wrap storage-manual-panel__table`,children:(0,Q.jsxs)(`table`,{className:`tbl`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:n(`storage.trash.col.when`)}),(0,Q.jsx)(`th`,{className:`num`,children:n(`storage.trash.col.files`)}),(0,Q.jsx)(`th`,{className:`num`,children:n(`storage.trash.col.size`)}),(0,Q.jsx)(`th`,{children:n(`storage.trash.col.mode`)}),(0,Q.jsx)(`th`,{children:n(`storage.trash.col.id`)}),(0,Q.jsx)(`th`,{})]})}),(0,Q.jsx)(`tbody`,{children:b.map(e=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{className:`muted`,children:C(e)}),(0,Q.jsx)(`td`,{className:`num`,children:e.fileCount}),(0,Q.jsx)(`td`,{className:`num mono`,children:hD(e.bytes,t)}),(0,Q.jsx)(`td`,{className:`muted`,children:w(e.mode)}),(0,Q.jsx)(`td`,{className:`mono`,style:{fontSize:`var(--text-caption)`},children:e.id}),(0,Q.jsx)(`td`,{children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:o,onClick:()=>{p(null),l(e)},children:n(`storage.trash.restore`)})})]},e.id))})]})}),c&&(0,Q.jsx)(`div`,{className:`modal-overlay`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`storage-trash-confirm-title`,onClick:()=>!o&&_(),children:(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsx)(`h3`,{id:`storage-trash-confirm-title`,children:n(`storage.trash.confirmTitle`)}),(0,Q.jsx)(`p`,{children:n(`storage.trash.confirmBody`,{count:String(c.fileCount),size:hD(c.bytes,t),id:c.id})}),f&&(0,Q.jsx)(`p`,{style:{marginTop:12,color:`var(--red)`},children:f}),(0,Q.jsxs)(`div`,{className:`dialog-actions`,style:{marginTop:16},children:[(0,Q.jsx)(`button`,{ref:m,type:`button`,className:`btn btn-ghost`,disabled:o,onClick:()=>_(),children:n(`storage.trash.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn`,disabled:o,onClick:()=>void S(),children:n(`storage.trash.confirmRestore`)})]})]})})]})}function LD(e){let{job:t,...n}=e;return n}function RD(e){let t=String(Math.max(0,Math.round(e.trigger.archivedBytesOver/MD*100)/100));return e.target.reduceToBytes===void 0?{policy:LD(e),thresholdGb:t,targetMode:`percent`,percent:String(Math.min(100,Math.max(1,Math.floor(e.target.removeOldestPercent??25)))),reduceGb:`4`}:{policy:LD(e),thresholdGb:t,targetMode:`reduce`,percent:`25`,reduceGb:String(Math.max(0,Math.round(e.target.reduceToBytes/MD*100)/100))}}async function zD(e){await new Promise(t=>window.setTimeout(t,e))}function BD({apiBase:e,locale:t,t:n,onDone:r}){let i=`ocx.storage.cleanup-policy.v1:${e}`,a=Ua(i),o=(0,Z.useRef)(!!a),[s,c]=(0,Z.useState)(()=>a?.policy??null),[l,u]=(0,Z.useState)(()=>!a),[d,f]=(0,Z.useState)(!1),[p,m]=(0,Z.useState)(!1),[h,g]=(0,Z.useState)(null),[_,v]=(0,Z.useState)(null),[y,b]=(0,Z.useState)(()=>a?.targetMode??`percent`),[x,S]=(0,Z.useState)(()=>a?.percent??`25`),[C,w]=(0,Z.useState)(()=>a?.reduceGb??`4`),[T,E]=(0,Z.useState)(()=>a?.thresholdGb??`5`),D=(0,Z.useRef)(null),O=(0,Z.useRef)(!1),k=(0,Z.useRef)(!1),A=(0,Z.useRef)(0),j=(0,Z.useCallback)(e=>{let t=RD(e);c(t.policy),E(t.thresholdGb),b(t.targetMode),S(t.percent),w(t.reduceGb),o.current=!0,qa(i,t),O.current=!1},[i]),M=(0,Z.useCallback)(()=>{O.current=!0},[]),N=(0,Z.useCallback)(e=>{k.current=e},[]),P=(0,Z.useCallback)(async t=>{let r=++A.current;o.current||u(!0),v(null);try{let n=await fetch(`${e}/api/storage/cleanup-policy`,{signal:t});if(!n.ok)throw Error(`load_failed`);let i=await n.json();if(t?.aborted||r!==A.current||O.current||k.current)return;j(i)}catch{if(t?.aborted||r!==A.current)return;o.current||(c(null),v(n(`storage.policy.loadFailed`)))}finally{!t?.aborted&&r===A.current&&u(!1)}},[e,j,n]);(0,Z.useEffect)(()=>{let e=new AbortController,t=window.setTimeout(()=>{P(e.signal)},0);return()=>{window.clearTimeout(t),A.current+=1,e.abort()}},[P]),(0,Z.useEffect)(()=>()=>{D.current?.abort(),D.current=null},[]);let F=()=>{if(!s)return null;let e=T.trim();if(e===``)return null;let t=Number(e);if(!Number.isFinite(t)||t<0)return null;let n;if(y===`reduce`){let e=C.trim();if(e===``)return null;let t=Number(e);if(!Number.isFinite(t)||t<0)return null;n={reduceToBytes:Math.floor(t*MD)}}else{let e=Number(x);if(!Number.isFinite(e)||e<1||e>100)return null;n={removeOldestPercent:Math.min(100,Math.max(1,Math.floor(e)))}}return{enabled:s.enabled,trigger:{archivedBytesOver:Math.floor(t*MD)},target:n,schedule:s.schedule,mode:s.mode}},I=async t=>{let r=F();if(!r){v(n(`storage.policy.invalid`));return}let i={...r,...t};f(!0),v(null),g(null);try{let t=await fetch(`${e}/api/storage/cleanup-policy`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(i)});if(!t.ok){v(n(`storage.policy.saveFailed`));return}let r=await t.json();if(!r.policy){v(n(`storage.policy.saveFailed`));return}j(r.policy),g(n(`storage.policy.saved`))}catch{v(n(`storage.policy.saveFailed`))}finally{f(!1)}},L=async()=>{D.current?.abort();let i=new AbortController;D.current=i;let{signal:a}=i;m(!0),v(null),g(null);try{let i=F();if(!i){v(n(`storage.policy.invalid`));return}let o=await fetch(`${e}/api/storage/cleanup-policy`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(i),signal:a});if(a.aborted)return;if(!o.ok){v(n(`storage.policy.saveFailed`));return}let s=await o.json();if(a.aborted)return;if(!s.policy){v(n(`storage.policy.saveFailed`));return}j(s.policy);let c=await fetch(`${e}/api/storage/cleanup-policy/run`,{method:`POST`,signal:a});if(a.aborted)return;if(c.status===409){let e=await c.json().catch(()=>({}));if(a.aborted)return;e.policy&&j(e.policy),v(n(`storage.policy.alreadyRunning`));return}if(!c.ok){let e=await c.json().catch(()=>({}));if(a.aborted)return;if(e.policy&&j(e.policy),e.error===`already_running`){v(n(`storage.policy.alreadyRunning`));return}v(n(`storage.policy.runFailed`));return}let l=await c.json();if(a.aborted)return;if(l.policy&&j(l.policy),l.error===`already_running`){v(n(`storage.policy.alreadyRunning`));return}if(!l.started||!l.job?.startedAt){v(n(`storage.policy.runFailed`));return}let u=l.job.startedAt,d=Date.now()+12e4,f,p;for(;Date.now()<d;){if(a.aborted||(await zD(250),a.aborted))return;let t=await fetch(`${e}/api/storage/cleanup-policy`,{signal:a});if(a.aborted)return;if(!t.ok)continue;let n=await t.json();if(a.aborted)return;p=LD(n),j(n);let r=n.job;if(r&&r.status!==`running`){if(r.startedAt===u&&r.lastOutcome){f=r.lastOutcome;break}if(r.finishedAt&&r.finishedAt>=u&&r.lastOutcome){f=r.lastOutcome;break}}}if(a.aborted)return;if(p&&j(p),!f){v(n(`storage.policy.runFailed`));return}f.skipped===`disabled`?g(n(`storage.policy.skippedDisabled`)):f.ok&&f.metadataPersistenceError?(v(n(`storage.policy.metadataSaveWarning`)),f.removed!==void 0&&r()):f.skipped===`under_threshold`?g(n(`storage.policy.skippedUnder`)):f.skipped===`nothing_selected`?g(n(`storage.policy.skippedEmpty`)):f.deferred===`codex_busy`||f.error===`codex_busy`?v(n(`storage.cleanup.err.codex_busy`)):f.ok?(g(f.mode===`permanent`?n(`storage.policy.donePermanent`,{count:String(f.removed??0),size:hD(f.freedBytes??0,t)}):n(`storage.policy.doneQuarantine`,{count:String(f.removed??0),size:hD(f.freedBytes??0,t)})),r()):v(n(`storage.policy.runFailed`))}catch(e){if(a.aborted||e instanceof DOMException&&e.name===`AbortError`)return;v(n(`storage.policy.runFailed`))}finally{D.current===i&&(D.current=null),a.aborted||m(!1)}},R=e=>e===void 0?n(`storage.policy.never`):new Date(e).toLocaleString(t);return l&&!s?(0,Q.jsx)(`section`,{className:`storage-cleanup-pane`,children:(0,Q.jsx)(`p`,{className:`muted storage-policy-help`,children:n(`storage.policy.loading`)})}):s?(0,Q.jsxs)(`section`,{className:`storage-cleanup-pane`,children:[(0,Q.jsx)(`p`,{className:`muted storage-policy-help`,children:n(`storage.policy.help`)}),(0,Q.jsx)(`div`,{className:`storage-policy-enable`,children:(0,Q.jsxs)(`div`,{className:`storage-policy-enable-row`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`toggle${s.enabled?` on`:``}`,disabled:d||p,"aria-pressed":s.enabled,"aria-label":n(`storage.policy.enabled`),title:n(`storage.policy.enabledHint`),onClick:()=>void I({enabled:!s.enabled}),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})}),(0,Q.jsx)(`span`,{children:n(`storage.policy.enabled`)})]})}),(0,Q.jsxs)(`div`,{className:`storage-policy-fields`,children:[(0,Q.jsxs)(`div`,{className:`field storage-policy-trigger`,children:[(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`storage-policy-threshold`,children:n(`storage.policy.trigger`)}),(0,Q.jsxs)(`div`,{className:`storage-policy-trigger-row`,children:[(0,Q.jsx)(`span`,{className:`storage-policy-trigger-hint`,children:n(`storage.policy.threshold`)}),(0,Q.jsxs)(`span`,{className:`codex-auto-switch-input-wrap`,onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||(N(!1),I())},children:[(0,Q.jsx)(`input`,{id:`storage-policy-threshold`,className:`input mono codex-auto-switch-input`,type:`number`,min:0,step:.1,inputMode:`decimal`,value:T,disabled:d||p,"aria-label":n(`storage.policy.threshold`),onFocus:()=>N(!0),onChange:e=>{M(),E(e.target.value)},onKeyDown:e=>{e.nativeEvent.isComposing||d||p||e.key===`Enter`&&(e.preventDefault(),I())}}),(0,Q.jsx)(`span`,{className:`codex-auto-switch-unit`,"aria-hidden":`true`,children:`GiB`}),(0,Q.jsx)(Zc,{disabled:d||p,incrementLabel:n(`storage.policy.thresholdInc`),decrementLabel:n(`storage.policy.thresholdDec`),onIncrement:()=>{M(),E(Xc(T,.1,0,1e4,.1))},onDecrement:()=>{M(),E(Xc(T,-.1,0,1e4,.1))}})]})]})]}),(0,Q.jsxs)(`fieldset`,{className:`field storage-policy-target`,children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:n(`storage.policy.target`)}),(0,Q.jsxs)(`label`,{className:`storage-policy-target-row`,children:[(0,Q.jsx)(`input`,{type:`radio`,name:`storage-policy-target`,checked:y===`percent`,disabled:d||p,onChange:()=>{M(),b(`percent`)}}),(0,Q.jsx)(`span`,{className:`storage-policy-target-label`,children:n(`storage.policy.targetPercent`)}),y===`percent`&&(0,Q.jsxs)(`span`,{className:`codex-auto-switch-input-wrap`,onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||(N(!1),I())},children:[(0,Q.jsx)(`input`,{id:`storage-policy-percent`,className:`input mono codex-auto-switch-input`,type:`number`,min:1,max:100,step:1,inputMode:`numeric`,value:x,disabled:d||p,"aria-label":n(`storage.policy.targetPercent`),onFocus:()=>N(!0),onChange:e=>{M(),S(e.target.value)},onKeyDown:e=>{e.nativeEvent.isComposing||d||p||e.key===`Enter`&&(e.preventDefault(),I())}}),(0,Q.jsx)(`span`,{className:`codex-auto-switch-unit`,"aria-hidden":`true`,children:`%`}),(0,Q.jsx)(Zc,{disabled:d||p,incrementLabel:n(`storage.policy.percentInc`),decrementLabel:n(`storage.policy.percentDec`),onIncrement:()=>{M(),S(Xc(x,1,1,100))},onDecrement:()=>{M(),S(Xc(x,-1,1,100))}})]})]}),(0,Q.jsxs)(`label`,{className:`storage-policy-target-row`,children:[(0,Q.jsx)(`input`,{type:`radio`,name:`storage-policy-target`,checked:y===`reduce`,disabled:d||p,onChange:()=>{M(),b(`reduce`)}}),(0,Q.jsx)(`span`,{className:`storage-policy-target-label`,children:n(`storage.policy.targetReduce`)}),y===`reduce`&&(0,Q.jsxs)(`span`,{className:`codex-auto-switch-input-wrap`,onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||(N(!1),I())},children:[(0,Q.jsx)(`input`,{id:`storage-policy-reduce`,className:`input mono codex-auto-switch-input`,type:`number`,min:0,step:.1,inputMode:`decimal`,value:C,disabled:d||p,"aria-label":n(`storage.policy.targetReduce`),onFocus:()=>N(!0),onChange:e=>{M(),w(e.target.value)},onKeyDown:e=>{e.nativeEvent.isComposing||d||p||e.key===`Enter`&&(e.preventDefault(),I())}}),(0,Q.jsx)(`span`,{className:`codex-auto-switch-unit`,"aria-hidden":`true`,children:`GiB`}),(0,Q.jsx)(Zc,{disabled:d||p,incrementLabel:n(`storage.policy.reduceInc`),decrementLabel:n(`storage.policy.reduceDec`),onIncrement:()=>{M(),w(Xc(C,.1,0,1e4,.1))},onDecrement:()=>{M(),w(Xc(C,-.1,0,1e4,.1))}})]})]})]}),(0,Q.jsxs)(`div`,{className:`storage-policy-selects`,children:[(0,Q.jsxs)(`label`,{className:`field`,htmlFor:`storage-policy-schedule`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:n(`storage.policy.schedule`)}),(0,Q.jsxs)(`select`,{id:`storage-policy-schedule`,className:`input`,value:s.schedule,disabled:d||p,onChange:e=>{let t=e.target.value;I({schedule:t})},children:[(0,Q.jsx)(`option`,{value:`manual`,children:n(`storage.policy.schedule.manual`)}),(0,Q.jsx)(`option`,{value:`startup`,children:n(`storage.policy.schedule.startup`)}),(0,Q.jsx)(`option`,{value:`daily`,children:n(`storage.policy.schedule.daily`)}),(0,Q.jsx)(`option`,{value:`weekly`,children:n(`storage.policy.schedule.weekly`)})]})]}),(0,Q.jsxs)(`label`,{className:`field`,htmlFor:`storage-policy-mode`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:n(`storage.policy.mode`)}),(0,Q.jsxs)(`select`,{id:`storage-policy-mode`,className:`input`,value:s.mode,disabled:d||p,onChange:e=>{let t=e.target.value;I({mode:t})},children:[(0,Q.jsx)(`option`,{value:`quarantine`,children:n(`storage.policy.mode.quarantine`)}),(0,Q.jsx)(`option`,{value:`permanent`,children:n(`storage.policy.mode.permanent`)})]})]})]}),s.mode===`permanent`&&(0,Q.jsx)(`p`,{className:`err storage-policy-warn`,role:`status`,children:n(`storage.policy.permanentWarn`)})]}),(0,Q.jsxs)(`div`,{className:`storage-policy-meta`,children:[(0,Q.jsxs)(`div`,{className:`storage-policy-meta-item`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:n(`storage.policy.lastRun`)}),(0,Q.jsxs)(`span`,{className:`storage-policy-meta-value`,children:[R(s.lastRun?.at),s.lastRun?` · ${n(`storage.policy.lastRunDetail`,{count:String(s.lastRun.removed),size:hD(s.lastRun.freedBytes,t)})}`:``]})]}),(0,Q.jsxs)(`div`,{className:`storage-policy-meta-item`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:n(`storage.policy.nextRun`)}),(0,Q.jsx)(`span`,{className:`storage-policy-meta-value`,children:R(s.nextRun)})]})]}),(0,Q.jsxs)(`div`,{className:`storage-policy-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:d||p,onClick:()=>void I(),children:n(`storage.policy.save`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:d||p,onClick:()=>void L(),children:n(p?`storage.policy.running`:`storage.policy.runNow`)}),(0,Q.jsx)(`span`,{className:`storage-policy-actions__status${_?` is-error`:``}`,role:_?`alert`:`status`,"aria-live":`polite`,children:_??h??``})]})]}):(0,Q.jsx)(`section`,{className:`storage-cleanup-pane`,children:_&&(0,Q.jsx)(`p`,{className:`err`,role:`alert`,children:_})})}function VD({apiBase:e,locale:t,t:n,archivedCount:r,showQuarantine:i,trashReloadToken:a,onDone:o,onTrashEntriesChange:s}){let[c,l]=(0,Z.useState)(`policy`),u=(0,Z.useRef)(null),d=(0,Z.useRef)(null),f=[{id:`policy`,label:n(`storage.cleanupCard.tab.policy`),ref:u},{id:`quarantine`,label:n(`storage.cleanupCard.tab.quarantine`),ref:d}],p=e=>{l(e),window.requestAnimationFrame(()=>(e===`policy`?u:d).current?.focus())},m=e=>{e.key===`ArrowLeft`||e.key===`ArrowRight`?(e.preventDefault(),p(c===`policy`?`quarantine`:`policy`)):e.key===`Home`?(e.preventDefault(),p(`policy`)):e.key===`End`&&(e.preventDefault(),p(`quarantine`))};return(0,Q.jsxs)(`section`,{className:`panel storage-cleanup-card`,"aria-labelledby":`storage-cleanup-card-title`,children:[(0,Q.jsx)(`div`,{className:`page-tabs storage-cleanup-card__tabs`,role:`tablist`,"aria-label":n(`storage.cleanupCard.tabs`),children:f.map(({id:e,label:t,ref:n})=>(0,Q.jsx)(`button`,{type:`button`,role:`tab`,ref:n,id:`storage-cleanup-tab-${e}`,"aria-selected":c===e,"aria-controls":`storage-cleanup-panel-${e}`,tabIndex:c===e?0:-1,className:`page-tab${c===e?` page-tab--active`:``}`,onKeyDown:m,onClick:()=>p(e),children:t},e))}),(0,Q.jsx)(`h3`,{id:`storage-cleanup-card-title`,className:`panel-title`,children:n(`storage.cleanupCard.title`)}),(0,Q.jsxs)(`div`,{className:`storage-cleanup-card__stack`,children:[(0,Q.jsxs)(`div`,{id:`storage-cleanup-panel-policy`,role:`tabpanel`,"aria-labelledby":`storage-cleanup-tab-policy`,className:`storage-cleanup-card__body storage-cleanup-policy-split`,"data-active":c===`policy`?`true`:`false`,"aria-hidden":c!==`policy`,...c===`policy`?{}:{inert:!0},children:[(0,Q.jsx)(BD,{apiBase:e,locale:t,t:n,onDone:o}),(0,Q.jsxs)(`aside`,{className:`storage-cleanup-manual`,"aria-labelledby":`storage-cleanup-manual-title`,children:[(0,Q.jsx)(`h4`,{id:`storage-cleanup-manual-title`,className:`storage-cleanup-manual__title`,children:n(`storage.cleanup.title`)}),r>0?(0,Q.jsx)(FD,{apiBase:e,locale:t,t:n,onDone:o}):(0,Q.jsx)(`p`,{className:`muted storage-manual-panel__status`,children:n(`storage.cleanup.noArchives`)})]})]}),(0,Q.jsx)(`div`,{id:`storage-cleanup-panel-quarantine`,role:`tabpanel`,"aria-labelledby":`storage-cleanup-tab-quarantine`,className:`storage-cleanup-card__body`,"data-active":c===`quarantine`?`true`:`false`,"aria-hidden":c!==`quarantine`,...c===`quarantine`?{}:{inert:!0},children:i?(0,Q.jsx)(ID,{apiBase:e,locale:t,t:n,onDone:o,reloadToken:a,onEntriesChange:s}):(0,Q.jsx)(`p`,{className:`muted storage-manual-panel__status`,children:n(`storage.trash.empty`)})})]})]})}function HD({apiBase:e}){let{t:n,locale:r}=t(),i=`ocx.storage.report.v1:${e}`,a=Ua(i),[o,s]=(0,Z.useState)(null),[c,l]=(0,Z.useState)(0),u=(0,Z.useRef)(!1),[d,f]=(0,Z.useState)({apiBase:e,settled:!1,hasEntries:!1}),p=(0,Z.useCallback)(async t=>{try{let r=await fetch(`${e}/api/storage`,{signal:t});if(!r.ok)throw Error(n(`storage.error`));let a=await r.json();return qa(i,a),u.current&&(u.current=!1,s(n(`storage.rescanned`))),a}catch(e){throw u.current&&(u.current=!1,s(n(`storage.error`))),t.aborted?e:Error(n(`storage.error`),{cause:e})}},[e,i,n]),m=Ya(`storage-report:${e}`,[e],p,{isEmpty:e=>e.total.fileCount===0&&e.error===void 0}),h=m.state,g=h.data??a,_=h.refreshing||h.showSkeleton&&!g,v=m.refresh,y=(0,Z.useCallback)(()=>{s(null),u.current=!0,v(),l(e=>e+1)},[v]),b=(0,Z.useCallback)(t=>{f({apiBase:e,settled:!0,hasEntries:t.length>0})},[e]),x=d.apiBase===e&&d.settled,S=d.apiBase===e&&d.hasEntries,C=g?.error!==void 0,w=!_&&!h.showError&&!C&&g.total.fileCount===0&&x&&!S,T=g?.buckets.find(e=>e.key===`archived_sessions`)?.fileCount??0,E=!!g&&!C,D=E&&(g.total.fileCount>0||!x||S);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`page-head`,children:[(0,Q.jsx)(`h2`,{id:`storage-page-title`,children:n(`storage.title`)}),(0,Q.jsxs)(`div`,{className:`storage-page-head-actions`,children:[(0,Q.jsx)(`span`,{className:`storage-page-head-feedback`,role:`status`,"aria-live":`polite`,children:o??``}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:_,onClick:()=>void y(),children:[(0,Q.jsx)(re,{}),` `,n(`storage.refresh`)]})]})]}),(0,Q.jsx)(`p`,{className:`page-sub`,children:n(`storage.subtitle`)}),g&&g.error===void 0&&(0,Q.jsxs)(`p`,{className:`storage-page-meta`,children:[(0,Q.jsx)(`code`,{className:`mono storage-page-meta__home`,title:g.codexHome,children:g.codexHome}),(0,Q.jsx)(`span`,{className:`storage-page-meta__sep`,"aria-hidden":`true`,children:`·`}),(0,Q.jsxs)(`span`,{children:[n(`storage.snapshot.lastScan`),`:`,` `,new Date(g.generatedAt).toLocaleString(r)]})]}),h.showSkeleton&&!g?(0,Q.jsx)(Ry,{label:n(`storage.loading`),rows:5}):h.kind===`failed-cold`&&!g?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`alert alert-err`,role:`alert`,children:h.error instanceof Error?h.error.message:n(`storage.error`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>v(),children:n(`common.retry`)})]}):C?(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsx)(`div`,{className:`alert alert-err`,role:`alert`,children:n(`storage.error`)})}):(0,Q.jsxs)(Q.Fragment,{children:[h.showError&&(0,Q.jsx)(`div`,{className:`alert alert-err`,role:`alert`,children:n(`storage.error`)}),w?(0,Q.jsx)(ln,{title:n(`storage.empty`)}):g&&g.total.fileCount>0&&(0,Q.jsx)(jD,{report:g,locale:r,apiBase:e})]}),g&&g.error===void 0&&h.refreshing&&!h.showSkeleton&&(0,Q.jsx)(zy,{live:!h.showError,children:n(`storage.loading`)}),E&&(0,Q.jsx)(VD,{apiBase:e,locale:r,t:n,archivedCount:T,showQuarantine:D,trashReloadToken:c,onDone:()=>void y(),onTrashEntriesChange:b})]})}var UD=`/api/codex-auth/features/default-mode-request-user-input`;function WD({apiBase:e}){let t=O(),[n,r]=(0,Z.useState)(!1),[i,a]=(0,Z.useState)(!1),[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(null),f=(0,Z.useRef)(!1),p=(0,Z.useRef)(!1),m=(0,Z.useRef)(0),h=(0,Z.useCallback)(async()=>{if(f.current)return;let t=++m.current,n=A(15e3);try{let i=await fetch(`${e}${UD}`,{signal:n.signal});if(!i.ok)throw Error(`load`);let o=await i.json();if(f.current||t!==m.current)return;p.current=o.enabled===!0,r(p.current),a(!0),l(!1)}catch{!f.current&&t===m.current&&l(!0)}finally{n.clear()}},[e]);(0,Z.useEffect)(()=>{let e=window.setTimeout(()=>{h()},0),t=ua(()=>{h()},3e4);return()=>{window.clearTimeout(e),t()}},[h]);let g=(0,Z.useCallback)(async()=>{if(f.current||!i||c)return;let n=!p.current,o=p.current;p.current=n,r(n),f.current=!0,s(!0),d(null),m.current++;try{let i=await fetch(`${e}${UD}`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({enabled:n})}),o=await hn(i)??{};if(o.ok!==!0)throw Error(String(i.status));p.current=o.enabled===!0,r(p.current),a(!0),d({tone:`ok`,message:t(o.changed===!0?`codexAuth.requestUserInputUpdatedRestart`:`codexAuth.requestUserInputUpdated`)})}catch(e){p.current=o,r(o);let n=e instanceof Error&&e.message&&!/^HTTP \d{3}$/.test(e.message)?e.message:t(`codexAuth.requestUserInputUpdateFailed`);d({tone:`err`,message:n})}finally{f.current=!1,s(!1)}},[e,i,c,t]),_=o||!i||c;return(0,Q.jsxs)(`div`,{className:`card card-row codex-request-user-input-card`,style:{marginTop:16},"aria-busy":o||!i&&!c||void 0,children:[(0,Q.jsxs)(`div`,{className:`codex-request-user-input-copy`,children:[(0,Q.jsx)(`strong`,{children:t(`codexAuth.requestUserInput`)}),(0,Q.jsx)(`div`,{className:`card-sub`,role:c?`alert`:void 0,children:t(c?`codexAuth.requestUserInputLoadFailed`:`codexAuth.requestUserInputDesc`)}),(0,Q.jsx)(`code`,{className:`mono codex-request-user-input-config`,children:`[features]
7
+ `,FS=new Map;function IS(e,t){return JSON.stringify([e,t])}function LS(e,t){for(FS.set(e,t);FS.size>NS;){let e=FS.keys().next().value;if(e===void 0)break;FS.delete(e)}}var RS={pairs:new Map,loading:!1,unresolved:0};function zS(e,t,n){let[,r]=(0,Z.useState)(0),i=n?t.slice(0,200):[],a=i.filter(t=>!FS.has(IS(e,t))).join(PS);if((0,Z.useEffect)(()=>{if(!a)return;let t=new AbortController,n=a.split(PS);return Promise.all(Array.from({length:Math.min(MS,n.length)},async()=>{for(let r=n.shift();r!==void 0;r=n.shift())try{let n=await gS(e,r,t.signal);LS(IS(e,r),Gx(n))}catch{if(t.signal.aborted)return;LS(IS(e,r),null)}})).then(()=>{t.signal.aborted||r(e=>e+1)}),()=>t.abort()},[e,a]),!n)return RS;let o=new Map,s=Math.max(0,t.length-200);for(let t of i){let n=FS.get(IS(e,t));n?o.set(t,n):n===null&&(s+=1)}return{pairs:o,loading:a.length>0,unresolved:s}}var BS={protocol_conformance:`lab.layer.protocol_conformance`,live_route_compatibility:`lab.layer.live_route_compatibility`,task_effectiveness:`lab.layer.task_effectiveness`},VS={protocol_conformance:`lab.col.protocol`,live_route_compatibility:`lab.col.live`,task_effectiveness:`lab.col.task`},HS={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`},US={present:`artifact.present`,corrupt:`artifact.corrupt`,purged_unavailable:`artifact.purged_unavailable`};function WS(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 GS({verdict:e,caption:t,label:n,selected:r,onSelect:i}){let a=`lab-verdict-badge${r?` lab-verdict-badge--selected`:``}`;return i?(0,Q.jsxs)(`button`,{type:`button`,className:a,"data-verdict":e,title:t,onClick:i,children:[(0,Q.jsx)(`span`,{children:n}),(0,Q.jsx)(`span`,{className:`suite`,children:t})]}):(0,Q.jsxs)(`span`,{className:a,"data-verdict":e,title:t,children:[(0,Q.jsx)(`span`,{children:n}),(0,Q.jsx)(`span`,{className:`suite`,children:t})]})}function KS({rows:e,t,selectedKey:n,onSelect:r}){return e.length===0?(0,Q.jsx)(`span`,{className:`muted`,children:`-`}):(0,Q.jsx)(`div`,{className:`lab-verdict-stack`,children:e.map(e=>(0,Q.jsx)(GS,{verdict:e.verdict,caption:e.suiteId,label:t(HS[e.verdict]),selected:n===e.projectionKey,onSelect:()=>r(e)},e.projectionKey))})}function qS({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:Ux(r.builtAtMs,n)}),(0,Q.jsx)(`div`,{className:`lab-status-grid`,"aria-label":t(`lab.statusTitle`),children:i.map(e=>(0,Q.jsxs)(`div`,{className:`lab-status-card`,children:[(0,Q.jsx)(`span`,{className:`label`,children:e.label}),(0,Q.jsx)(`span`,{className:`value`,children:e.value})]},e.label))})}function JS({community:e,locale:t}){if(!e||e.evidence.length===0)return null;let n=e.evidence.reduce((e,t)=>e+t.activeRecordCount,0),r=e.evidence.reduce((e,t)=>e+t.revokedRecordCount,0);return(0,Q.jsxs)(`section`,{className:`lab-matrix-block`,"data-testid":`lab-community-evidence`,children:[(0,Q.jsx)(`h3`,{className:`lab-matrix-title`,children:i(t,`community.title`)}),(0,Q.jsx)(`p`,{className:`muted`,children:i(t,`community.notLocalVerdict`)}),(0,Q.jsxs)(`dl`,{className:`lab-detail-meta`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:i(t,`community.bundles`)}),(0,Q.jsx)(`dd`,{children:e.evidence.length})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:i(t,`community.activeRecords`)}),(0,Q.jsx)(`dd`,{children:n})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:i(t,`community.revokedRecords`)}),(0,Q.jsx)(`dd`,{children:r})]})]})]})}function YS({verdict:e,detail:t,loading:n,error:r,t:a,locale:o,onClose:s}){let c=new Set([...e.contributingEventIds,...e.contradictingEventIds]).size;return(0,Q.jsxs)(`aside`,{className:`lab-detail-pane`,"aria-label":a(`lab.detailTitle`),children:[(0,Q.jsxs)(`div`,{className:`lab-detail-head`,children:[(0,Q.jsx)(`h3`,{children:Hx(e.subjectId)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:s,children:a(`lab.detailClose`)})]}),(0,Q.jsxs)(`dl`,{className:`lab-detail-meta`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:a(`lab.col.layer`)}),(0,Q.jsx)(`dd`,{children:a(BS[e.evidenceLayer])})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:a(`lab.col.suite`)}),(0,Q.jsx)(`dd`,{className:`mono`,children:e.suiteId})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:a(`lab.col.verdict`)}),(0,Q.jsx)(`dd`,{children:a(HS[e.verdict])})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:a(`lab.col.asOf`)}),(0,Q.jsx)(`dd`,{children:Ux(e.asOf,o)})]})]}),n&&(0,Q.jsx)(zy,{busy:!0,children:a(`common.loading`)}),r&&(0,Q.jsx)($,{tone:`err`,children:r}),t&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`section`,{className:`lab-detail-section`,children:[(0,Q.jsx)(`h4`,{children:a(`lab.detailSubject`)}),(0,Q.jsx)(`p`,{className:`mono`,children:t.subject.subjectKind})]}),t.production&&(0,Q.jsxs)(`section`,{className:`lab-detail-section`,"data-testid":`lab-production-signals`,children:[(0,Q.jsx)(`h4`,{children:a(`lab.production.title`)}),(0,Q.jsx)(`p`,{className:`muted`,children:a(`lab.production.notVerification`)}),(0,Q.jsxs)(`dl`,{className:`lab-detail-meta`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:a(`lab.production.attempts`)}),(0,Q.jsx)(`dd`,{children:t.production.summary.recentProductionAttempts})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:a(`lab.production.successes`)}),(0,Q.jsx)(`dd`,{children:t.production.summary.recentSuccessfulAttempts})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:a(`lab.production.routeErrors`)}),(0,Q.jsx)(`dd`,{children:t.production.summary.recentRouteErrorSignals})]}),t.production.summary.lastObservedProductionAttempt!==void 0&&(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:a(`lab.production.lastObserved`)}),(0,Q.jsx)(`dd`,{children:Ux(t.production.summary.lastObservedProductionAttempt,o)})]})]})]}),t.observations.length>0&&(0,Q.jsxs)(`section`,{className:`lab-detail-section`,children:[(0,Q.jsx)(`h4`,{children:a(`lab.detailObservations`)}),(0,Q.jsx)(`ul`,{className:`lab-detail-list`,children:t.observations.map(e=>(0,Q.jsxs)(`li`,{children:[(0,Q.jsx)(`span`,{className:`mono`,children:e.scenarioId}),(0,Q.jsx)(`span`,{children:e.outcome}),(0,Q.jsx)(`span`,{className:`muted`,children:Ux(e.completedAt,o)})]},e.eventId))})]}),(t.events.length>0||c>0)&&(0,Q.jsxs)(`section`,{className:`lab-detail-section`,children:[(0,Q.jsxs)(`h4`,{children:[a(`lab.detailEvents`),t.events.length<c?` (${t.events.length}/${c})`:``]}),(0,Q.jsx)(`ul`,{className:`lab-detail-list`,children:t.events.map(e=>(0,Q.jsxs)(`li`,{children:[(0,Q.jsx)(`span`,{className:`mono`,children:e.eventId}),(0,Q.jsx)(`span`,{children:e.eventKind})]},e.eventId))})]}),t.artifacts.length>0&&(0,Q.jsxs)(`section`,{className:`lab-detail-section`,children:[(0,Q.jsx)(`h4`,{children:a(`lab.detailArtifacts`)}),(0,Q.jsx)(`ul`,{className:`lab-detail-list`,children:t.artifacts.map(e=>(0,Q.jsxs)(`li`,{children:[(0,Q.jsx)(`span`,{className:`mono`,title:e.digest,children:Hx(e.digest)}),(0,Q.jsx)(`span`,{children:e.artifactClass??`-`}),(0,Q.jsx)(`span`,{children:i(o,US[e.status])})]},e.digest))})]})]})]})}function XS({apiBase:e,active:n=!0,onCountChange:r}){let{t:a,locale:o}=t(),[s,c]=(0,Z.useState)({layer:``,verdict:``,subjectQuery:``,suiteId:``}),[l,u]=(0,Z.useState)(()=>Vg()??Lg),[d,f]=(0,Z.useState)(null),[p,m]=(0,Z.useState)(null),[h,g]=(0,Z.useState)(!1),[_,v]=(0,Z.useState)(null),[y,b]=(0,Z.useState)(null),[x,S]=(0,Z.useState)(!1),[C,w]=(0,Z.useState)(null),T=(0,Z.useRef)(null),E=(0,Z.useRef)(null),D=(0,Z.useRef)(null),O=(0,Z.useMemo)(()=>zx(s),[s]),k=JSON.stringify(O),A=(0,Z.useCallback)(t=>OS(e,O,t),[e,O]),j=Ya(`lab-matrix:${e}:${k}`,[e,k],A,{isEmpty:e=>e.verdicts.length===0,pollMs:6e4,enabled:n,pauseWhenHidden:!0}),M=(0,Z.useCallback)(()=>{T.current?.abort(),T.current=null,f(null),m(null),g(!1)},[]),N=(0,Z.useCallback)(()=>{D.current=null,E.current?.abort(),E.current=null,v(null),b(null),w(null),S(!1)},[]);(0,Z.useEffect)(()=>{T.current?.abort()},[j.data]),(0,Z.useEffect)(()=>()=>{T.current?.abort(),E.current?.abort()},[]);let P=(0,Z.useCallback)(e=>{N(),M(),c(e)},[N,M]),F=(0,Z.useCallback)(e=>{N(),u(e),n&&Kt(zg(e))},[n,N]);(0,Z.useEffect)(()=>{let e=()=>{let e=Vg();e&&u(t=>t.inbound===e.inbound&&t.upstream===e.upstream?t:e)};return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[]);let I=d!==null&&d.baseData===j.data&&d.queryKey===k?d:null,L=p!==null&&p.baseData===j.data&&p.queryKey===k?p.message:null,R=(0,Z.useMemo)(()=>{if(!n||!j.data?.status.projectionAvailable)return null;let e=j.data.status.verdictCount;return typeof e==`number`?e:j.data.verdicts.length+(I?.verdicts.length??0)},[n,j.data,I]);(0,Z.useEffect)(()=>{r?.(R)},[r,R]);let z=(0,Z.useMemo)(()=>j.data?[...j.data.verdicts,...I?.verdicts??[]]:[],[j.data,I]),B=(0,Z.useMemo)(()=>j.data?Vx(z,j.data.subjects):[],[z,j.data]),V=Kx(l),H=zS(e,(0,Z.useMemo)(()=>B.map(e=>e.subjectId),[B]),n&&V),U=(0,Z.useMemo)(()=>Jx(B,H.pairs,l),[l,H.pairs,B]),W=(0,Z.useMemo)(()=>{if(!V)return z;let e=new Set(U.map(e=>e.subjectId));return z.filter(t=>e.has(t.subjectId))},[z,U,V]),G=Yx(l,U),ee=(0,Z.useCallback)(async()=>{let t=I?.nextCursor??j.data?.nextCursor,n=j.data;if(!t||!n||h)return;T.current?.abort();let r=new AbortController;T.current=r;let i=k;m(null),g(!0);try{let a=await kS(e,O,t,r.signal);if(r.signal.aborted)return;f(e=>{let t=e?.baseData===n&&e.queryKey===i?e.verdicts:[];return{baseData:n,queryKey:i,verdicts:[...t,...a.verdicts],nextCursor:a.nextCursor,hasMore:a.hasMore}})}catch(e){r.signal.aborted||m({baseData:n,queryKey:i,message:WS(e,a(`lab.loadFailed`))})}finally{T.current===r&&(T.current=null,g(!1))}},[e,h,O,k,j.data,a,I]),te=(0,Z.useCallback)(async t=>{if(!n)return;E.current?.abort();let r=new AbortController;E.current=r,D.current=t.projectionKey,v(t),b(null),w(null),S(!0);try{let n=await jS(e,t,r.signal);!r.signal.aborted&&D.current===t.projectionKey&&b(n)}catch(e){!r.signal.aborted&&D.current===t.projectionKey&&w(WS(e,a(`lab.detailLoadFailed`)))}finally{E.current===r&&(E.current=null,!r.signal.aborted&&D.current===t.projectionKey&&S(!1))}},[n,e,a]),K=j.refresh,q=(0,Z.useCallback)(()=>{N(),M(),K({forceLoading:!0})},[N,K,M]),ne=n?_:null,J=I?I.hasMore:j.data?.hasMore??!1,Y=[{value:``,label:a(`lab.filter.all`)},...Cx.map(e=>({value:e,label:a(BS[e])}))],ie=[{value:``,label:a(`lab.filter.all`)},...wx.map(e=>({value:e,label:a(HS[e])}))],X=[{value:``,label:a(`lab.filter.all`)},...(j.data?.subjects??[]).map(e=>({value:e.subjectId,label:`${Hx(e.subjectId)} · ${e.subjectKind}`}))];if(j.state.showSkeleton)return(0,Q.jsx)(Ry,{label:a(`lab.loading`),rows:5});let ae=j.state.showError?WS(j.error,a(`lab.loadFailed`)):null,oe=j.data?.status,se=oe&&!oe.projectionAvailable,ce=oe?.projectionIncompatible===!0;return(0,Q.jsxs)(`div`,{className:`lab-page`,children:[(0,Q.jsx)(`div`,{className:`lab-toolbar`,children:(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:q,disabled:j.refreshing,children:[(0,Q.jsx)(re,{}),a(`lab.refresh`)]})}),j.refreshing&&!j.state.showSkeleton&&(0,Q.jsx)(zy,{busy:!0,live:!ae,children:a(`common.loading`)}),ae&&(0,Q.jsx)($,{tone:`err`,children:ae}),ce&&(0,Q.jsx)($,{tone:`err`,children:a(`lab.projectionIncompatible`)}),se&&!ce&&(0,Q.jsx)(ln,{title:a(`lab.projectionUnavailable`)}),se&&!ce&&(0,Q.jsx)(Qx,{filter:l,evidence:`unverified`,resolution:{loading:!1,unresolved:0}}),j.data&&(0,Q.jsx)(JS,{community:j.data.community,locale:o}),j.data&&oe?.projectionAvailable&&!ce&&(0,Q.jsxs)(`div`,{className:`lab-layout`,children:[(0,Q.jsxs)(`div`,{className:`lab-main`,children:[(0,Q.jsx)(qS,{data:j.data,t:a,locale:o}),(0,Q.jsxs)(`div`,{className:`lab-filters`,children:[(0,Q.jsxs)(`div`,{className:`lab-filter-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`lab-filter-layer`,children:a(`lab.filter.layer`)}),(0,Q.jsx)(cn,{id:`lab-filter-layer`,value:s.layer,options:Y,onChange:e=>P(t=>({...t,layer:e})),label:a(`lab.filter.layer`),portal:!1})]}),(0,Q.jsxs)(`div`,{className:`lab-filter-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`lab-filter-verdict`,children:a(`lab.filter.verdict`)}),(0,Q.jsx)(cn,{id:`lab-filter-verdict`,value:s.verdict,options:ie,onChange:e=>P(t=>({...t,verdict:e})),label:a(`lab.filter.verdict`),portal:!1})]}),(0,Q.jsxs)(`div`,{className:`lab-filter-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`lab-filter-subject`,children:a(`lab.filter.subject`)}),(0,Q.jsx)(cn,{id:`lab-filter-subject`,value:s.subjectQuery,options:X,onChange:e=>P(t=>({...t,subjectQuery:e})),label:a(`lab.filter.subject`),portal:!1})]}),(0,Q.jsx)(Zx,{value:l,onChange:F})]}),(0,Q.jsx)(Qx,{filter:l,evidence:G,resolution:H}),U.length===0?(0,Q.jsx)(ln,{title:a(`lab.empty`)}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`lab-matrix-block`,children:[(0,Q.jsx)(`h3`,{className:`lab-matrix-title`,children:a(`lab.matrixTitle`)}),(0,Q.jsx)(`div`,{className:`lab-matrix-scroll`,children:(0,Q.jsxs)(`table`,{className:`lab-matrix`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:a(`lab.col.subject`)}),(0,Q.jsx)(`th`,{children:a(`lab.subjectKind`)}),Cx.map(e=>(0,Q.jsx)(`th`,{children:a(VS[e])},e))]})}),(0,Q.jsx)(`tbody`,{children:U.map(e=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{className:`subject`,title:e.subjectId,children:Hx(e.subjectId)}),(0,Q.jsx)(`td`,{className:`kind`,children:e.subjectKind||i(o,`subjectKindUnknown`)}),Cx.map(t=>(0,Q.jsx)(`td`,{children:(0,Q.jsx)(KS,{rows:e.byLayer[t],t:a,selectedKey:ne?.projectionKey??null,onSelect:e=>{te(e)}})},t))]},e.subjectId))})]})})]}),(0,Q.jsxs)(`div`,{className:`lab-matrix-block`,children:[(0,Q.jsx)(`h3`,{className:`lab-matrix-title`,children:a(`lab.verdictsTitle`)}),(0,Q.jsx)(`div`,{className:`lab-matrix-scroll`,children:(0,Q.jsxs)(`table`,{className:`lab-detail-table`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:a(`lab.col.subject`)}),(0,Q.jsx)(`th`,{children:a(`lab.col.layer`)}),(0,Q.jsx)(`th`,{children:a(`lab.col.suite`)}),(0,Q.jsx)(`th`,{children:a(`lab.col.verdict`)}),(0,Q.jsx)(`th`,{children:a(`lab.col.asOf`)})]})}),(0,Q.jsx)(`tbody`,{children:W.map(e=>{let t=ne?.projectionKey===e.projectionKey;return(0,Q.jsxs)(`tr`,{className:t?`selected`:``,children:[(0,Q.jsx)(`td`,{className:`mono`,title:e.subjectId,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"data-verdict-detail":e.projectionKey,"aria-pressed":t,"aria-label":i(o,`selectVerdict`,{subject:Hx(e.subjectId)}),onClick:()=>{te(e)},children:Hx(e.subjectId)})}),(0,Q.jsx)(`td`,{children:a(BS[e.evidenceLayer])}),(0,Q.jsx)(`td`,{className:`mono`,children:e.suiteId}),(0,Q.jsx)(`td`,{children:(0,Q.jsx)(GS,{verdict:e.verdict,caption:e.suiteId,label:a(HS[e.verdict])})}),(0,Q.jsx)(`td`,{children:Ux(e.asOf,o)})]},e.projectionKey)})})]})})]}),L&&(0,Q.jsx)($,{tone:`err`,children:L}),J&&(0,Q.jsx)(`div`,{className:`lab-load-more`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:h,onClick:()=>{ee()},children:a(h?`common.loading`:`lab.loadMore`)})})]})]}),ne&&(0,Q.jsx)(YS,{verdict:ne,detail:y,loading:x,error:C,t:a,locale:o,onClose:N})]})]})}var ZS=[`catalog`,`combos`,`routing`,`compatibility`];function QS(e){return e===`catalog`?`models`:`models/${e}`}function $S(e=window.location.hash){let t=Gt(Wt(e)).path;return t===`models/combos`||t===`models/combos/jev-auto`||t===`combos`||t.startsWith(`combos/`)?`combos`:t===`models/routing`||t===`routing`||t.startsWith(`routing/`)?`routing`:t===`models/compatibility`||t===`lab`||t.startsWith(`lab/`)?`compatibility`:`catalog`}function eC(e){qt(QS(e))}function tC(e){return`models-tab-${e}`}function nC(e){return`models-panel-${e}`}var rC={catalog:`models.tab.catalog`,combos:`models.tab.combos`,routing:`models.tab.routing`,compatibility:`models.tab.compatibility`};function iC({tab:e,onSelect:t,meta:n}){let r=O(),i=(0,Z.useRef)(null);i.current===null&&(i.current=new Map);let a=e=>{t(e),window.requestAnimationFrame(()=>{i.current.get(e)?.focus({preventScroll:!0})})},o=t=>{let n=ZS.indexOf(e),r=null;t.key===`ArrowLeft`?r=(n-1+ZS.length)%ZS.length:t.key===`ArrowRight`?r=(n+1)%ZS.length:t.key===`Home`?r=0:t.key===`End`&&(r=ZS.length-1),r!==null&&(t.preventDefault(),a(ZS[r]))};return(0,Q.jsx)(`div`,{className:`page-tabs`,role:`tablist`,"aria-label":r(`models.tabsLabel`),children:ZS.map(t=>{let s=t===e,c=n?.[t];return(0,Q.jsxs)(`button`,{ref:e=>{e?i.current.set(t,e):i.current.delete(t)},type:`button`,role:`tab`,id:tC(t),"aria-selected":s,"aria-controls":nC(t),tabIndex:s?0:-1,className:`page-tab${s?` page-tab--active`:``}`,onClick:()=>a(t),onKeyDown:o,children:[r(rC[t]),c?(0,Q.jsx)(`span`,{className:`section-tab-meta`,children:c}):null]},t)})})}function aC({summary:e,apiBase:t,onSaved:n}){let r=O(),[i,a]=(0,Z.useState)(!1),[o,s]=(0,Z.useState)(null),c=e?.fastOptIn?.enabled;if(o&&c!==o.from&&s(null),!e?.fastOptIn)return null;let l=e.fastOptIn.enabled,u=o&&o.from===l?o.value:l,d=async o=>{if(!(i||o===u)){a(!0);try{await hn(await fetch(`${t}/api/providers?name=${encodeURIComponent(e.name)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({fastEnabled:o})}),r(`models.fastSaveFailed`)),s({value:o,from:l}),n(!0,r(o?`models.fastEnabled`:`models.fastDisabled`))}catch(e){n(!1,e instanceof Error?e.message:r(`models.fastSaveFailed`))}finally{a(!1)}}};return(0,Q.jsxs)(`div`,{className:`row models-provider-hint`,children:[(0,Q.jsx)(`span`,{className:`muted text-label`,children:r(`models.fastProvider`)}),(0,Q.jsx)(`div`,{className:`segmented models-segmented`,role:`radiogroup`,"aria-label":r(`models.fastProvider`),children:[!1,!0].map(e=>(0,Q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":u===e,className:`btn btn-sm${u===e?` btn-primary`:` btn-ghost`}`,disabled:i,onClick:()=>void d(e),children:r(e?`models.newPolicy_on`:`models.newPolicy_off`)},String(e)))}),(0,Q.jsx)(`span`,{className:`muted text-caption`,children:r(`models.fastProviderHint`)})]})}function oC(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)||e===`openai`&&n?.authMode===`forward`,liveModels:n?.liveModels!==!1,configuredModels:n?.models??[],contextWindow:n?.contextWindow,modelContextWindows:n?.modelContextWindows,discovery:n?.discovery,entitlement:n?.entitlement}}).sort((e,t)=>e.nativeProviderGroup===t.nativeProviderGroup?e.provider.localeCompare(t.provider):e.nativeProviderGroup?-1:1)}function sC({liveModels:e,discovery:t,showFailureBadge:n=!0}){let r=O(),i=e&&t?.status===`failed`?t:void 0;return(0,Q.jsxs)(`div`,{className:`row muted text-label leading-body`,role:`status`,style:{alignItems:`flex-start`,gap:8,padding:`6px 0`},children:[(0,Q.jsx)(we,{width:15,height:15,"aria-hidden":`true`,style:{flexShrink:0,marginTop:2}}),(0,Q.jsxs)(`span`,{children:[i&&n&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:r(`models.discoveryFailedBadge`)}),` `]}),i?`${hc(r,i)} `:`${r(e?`models.emptyDiscovery`:`models.emptyDiscoveryDisabled`)} `,(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:()=>qt(`providers`),children:r(`models.openProviderSettings`)})]})]})}function cC(){let e=O();return(0,Q.jsxs)(`div`,{className:`row muted text-label leading-body`,role:`status`,style:{alignItems:`flex-start`,gap:8,padding:`6px 0`},children:[(0,Q.jsx)(we,{width:15,height:15,"aria-hidden":`true`,style:{flexShrink:0,marginTop:2}}),(0,Q.jsxs)(`span`,{children:[`${e(`models.discoveryFailedDependency`,{control:e(`pws.liveModels`)})} `,(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:()=>qt(`providers`),children:e(`models.openProviderSettings`)})]})]})}function lC(e,t){if(!e)return null;let n=new Date(e);return Number.isNaN(n.getTime())?null:new Intl.DateTimeFormat(t,{dateStyle:`medium`,timeStyle:`short`}).format(n)}function uC({connected:e,catalogSyncedAt:n}){let{locale:r,t:i}=t(),a=lC(n,r),o=e?[{id:`saved`,chip:i(`models.delivery.chip.savedHub`),title:i(`models.delivery.savedHub.title`),body:i(`models.delivery.savedHub.body`)},{id:`synced`,chip:a?i(`models.delivery.chip.synced`,{time:a}):i(`models.delivery.chip.syncedUnknown`),title:i(`models.delivery.synced.title`),body:a?i(`models.delivery.synced.bodyAt`,{time:a}):i(`models.delivery.synced.bodyUnknown`)}]:[{id:`saved`,chip:i(`models.delivery.chip.saved`),title:i(`models.delivery.saved.title`),body:i(`models.delivery.saved.body`)}];return o.push({id:`loaded`,chip:i(`models.delivery.chip.loaded`),title:i(`models.delivery.loaded.title`),body:i(`models.delivery.loaded.body`)}),(0,Q.jsxs)(`details`,{className:`models-delivery`,children:[(0,Q.jsxs)(`summary`,{children:[(0,Q.jsx)(`span`,{className:`models-delivery-title`,children:i(`models.delivery.title`)}),(0,Q.jsx)(`span`,{className:`models-delivery-flow`,children:o.map(e=>e.chip).join(` → `)})]}),(0,Q.jsx)(`ol`,{className:`models-delivery-steps`,children:o.map(e=>(0,Q.jsxs)(`li`,{"data-step":e.id,children:[(0,Q.jsx)(`strong`,{children:e.title}),(0,Q.jsx)(`p`,{children:e.body})]},e.id))}),(0,Q.jsx)(`p`,{className:`models-delivery-hint`,children:i(`models.delivery.hint`)})]})}var dC=`ocx.models.settingsOpen.v1`;function fC(e){return e||(typeof localStorage>`u`?void 0:localStorage)}function pC(e){try{return fC(e)?.getItem(dC)===`1`}catch{return!1}}function mC(e,t){try{fC(t)?.setItem(dC,e?`1`:`0`)}catch{}}var hC={default:`models.pickerOrder.default`,alphabetical:`models.pickerOrder.alphabetical`,provider:`models.pickerOrder.provider`,"most-used":`models.pickerOrder.mostUsed`,custom:`models.pickerOrder.custom`};function gC(e,t){let n=e(`models.settingsPanel.off`),r=[];t.multiAgentMode&&r.push({id:`subagent`,label:e(`models.v2Label`),value:e(`models.v2Mode_${t.multiAgentMode}`)}),typeof t.v2Threads==`number`&&r.push({id:`threads`,label:e(`models.v2ThreadsLabel`),value:String(t.v2Threads)}),t.multiAgentMode===`v2`&&t.keepNativeOnV1&&r.push({id:`keep-native`,label:e(`models.keepNativeOnV1`),value:``}),r.push({id:`shadow`,label:e(`models.shadowCallIntercept`),value:t.shadowEnabled&&t.shadowModel?t.shadowModel:n}),t.autoReviewEnabled&&r.push({id:`auto-review`,label:e(`models.autoReviewOverride`),value:t.autoReviewModel||e(`models.autoReviewPending`)}),r.push({id:`window`,label:e(`models.contextCapLabel`),value:t.windowOn?Mc(t.windowValue):n});let i=hC[t.pickerMode];return r.push({id:`order`,label:e(`models.pickerOrder.label`),value:i?e(i):t.pickerMode}),t.newModelsOff&&r.push({id:`new-models`,label:e(`models.newPolicyGlobal`),value:``}),t.aliasesOn&&r.push({id:`aliases`,label:e(`models.useDefaultAliasesGlobal`),value:``}),r}function _C({title:e,attentionLabel:t,summary:n,warn:r,children:i,storage:a}){let[o,s]=(0,Z.useState)(()=>pC(a)),[c,l]=(0,Z.useState)(!1),u=o||r&&!c;return(0,Q.jsxs)(`details`,{className:`models-settings`,open:u,onToggle:e=>{let t=e.currentTarget.open;t!==u&&(s(t),!t&&r&&l(!0),mC(t,a))},children:[(0,Q.jsxs)(`summary`,{className:`models-settings-summary`,children:[(0,Q.jsx)(`span`,{className:`models-settings-title`,children:e}),r&&(0,Q.jsx)(`span`,{className:`models-settings-warn`,role:`img`,"aria-label":t,title:t}),(0,Q.jsx)(`span`,{className:`models-settings-state`,children:n.map(e=>(0,Q.jsxs)(`span`,{className:`models-settings-kv`,"data-item":e.id,children:[(0,Q.jsx)(`span`,{className:`models-settings-k`,children:e.label}),e.value&&(0,Q.jsx)(`span`,{className:`models-settings-v`,children:e.value})]},e.id))})]}),(0,Q.jsx)(`div`,{className:`models-settings-body`,children:i})]})}function vC({count:e,label:t}){return e===0?null:(0,Q.jsx)(`span`,{className:`models-chip mono text-caption models-custom-summary`,children:t})}function yC({text:e}){return(0,Q.jsx)(un,{content:e,side:`top`,maxWidth:360,children:(0,Q.jsxs)(`span`,{className:`models-info-hint`,children:[(0,Q.jsx)(we,{width:14,height:14,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:e})]})})}function bC({label:e,hint:t,busy:n,muted:r=!0,caption:i,children:a}){let o=[`models-row-label`,r?`muted`:``,i?`text-caption`:`text-control`].filter(Boolean).join(` `);return(0,Q.jsxs)(`div`,{className:`models-control-row`,"aria-busy":n||void 0,children:[(0,Q.jsxs)(`span`,{className:o,children:[e,t?(0,Q.jsxs)(Q.Fragment,{children:[` `,t]}):null]}),(0,Q.jsx)(`div`,{className:`models-row-actions`,children:a})]})}function xC(e,t,n){let[r,i]=(0,Z.useState)({apiBase:e,data:null,saving:!1}),a=r.apiBase===e?r.data:null,o=r.apiBase===e&&r.saving,s=(0,Z.useRef)({read:null,write:null,generation:0,apiBase:e});(0,Z.useLayoutEffect)(()=>{let t=s.current;return t.apiBase=e,t.generation++,()=>{t.generation++,t.read?.controller.abort(),t.read?.clear(),t.read=null,t.write?.controller.abort(),t.write?.clear(),t.write=null}},[e]);let c=(0,Z.useCallback)(async({reconcile:t=!1}={})=>{let n=s.current;if(n.write&&!t)return null;n.read?.controller.abort(),n.read?.clear();let r=A(15e3),a=n.generation;n.read=r;try{let o=await gn(await fetch(`${e}/api/auto-review-settings`,{signal:r.signal}));return!o||typeof o.enabled!=`boolean`||typeof o.model!=`string`?null:!r.signal.aborted&&n.apiBase===e&&n.generation===a&&n.read===r&&(!n.write||t)?(i({apiBase:e,data:o,saving:n.write!==null}),o):null}catch{return null}finally{r.clear(),n.read===r&&(n.read=null)}},[e]);return{data:a,saving:o,load:c,save:(0,Z.useCallback)(async r=>{let l=s.current;if(!a||o||l.apiBase!==e||l.write)return;let u=a,d=A(15e3);l.write=d;let f=++l.generation;l.read?.controller.abort(),l.read?.clear(),l.read=null,i({apiBase:e,data:{...u,...r},saving:!0});try{let a=await hn(await fetch(`${e}/api/auto-review-settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},signal:d.signal,body:JSON.stringify(r)}),t(`models.saveFailed`));if(!a||a.ok!==!0||typeof a.enabled!=`boolean`||typeof a.model!=`string`)throw Error(t(`models.saveFailed`));if(l.apiBase!==e||l.generation!==f)return;i({apiBase:e,data:{enabled:a.enabled,model:a.model},saving:!0}),(!a.catalogRefresh||a.catalogRefresh.status!==`committed`)&&n(!1,t(`codexAuth.catalogRefreshPending`))}catch(r){if(l.apiBase===e&&l.generation===f){let a=await c({reconcile:!0});if(l.apiBase!==e||l.generation!==f)return;i({apiBase:e,data:a??u,saving:!0}),n(!1,r instanceof Error&&r.message?r.message:t(`models.saveFailed`))}}finally{d.clear(),l.write===d&&(l.write=null),l.apiBase===e&&l.generation===f&&i(t=>t.apiBase===e?{...t,saving:!1}:t)}},[e,a,o,t,n,c])}}var SC={catalog:`models.subtitle`,combos:`models.subtitle.combos`,routing:`models.subtitle.routing`,compatibility:`models.subtitle.compatibility`};function CC({apiBase:e,restartEpoch:t=0,connected:n=!1,catalogSyncedAt:r,reportRestart:i}){let[a,o]=(0,Z.useState)(null),s=(0,Z.useRef)(!0);(0,Z.useEffect)(()=>(s.current=!0,()=>{s.current=!1}),[]);let c=(0,Z.useRef)(null),l=(0,Z.useRef)(0),u=(0,Z.useRef)(e),d=(0,Z.useCallback)(()=>{l.current++,c.current?.controller.abort(),c.current?.clear(),c.current=null},[]),f=(0,Z.useCallback)(async()=>{if(!s.current||u.current!==e)return;d();let t=l.current,n=A(15e3);c.current=n;try{let r=await av(e,{signal:n.signal});if(n.signal.aborted||!s.current||u.current!==e||t!==l.current||c.current!==n)return;o(r.state)}finally{n.clear(),c.current===n&&(c.current=null)}},[e,d]),{restarting:p,restart:m}=uv(e,{onSettled:()=>{f()},report:i});(0,Z.useEffect)(()=>(u.current=e,o(null),f(),d),[e,d,f,t]);let[h,g]=(0,Z.useState)($S),[_,v]=(0,Z.useState)(()=>new Set([$S()])),y=(0,Z.useCallback)(e=>{g(e),v(t=>t.has(e)?t:new Set([...t,e]))},[]);(0,Z.useEffect)(()=>{let e=()=>y($S());return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[y]);let b=(0,Z.useCallback)(e=>{eC(e),y(e)},[y]),x=h===`catalog`,[S,C]=(0,Z.useState)(null),[w,T]=(0,Z.useState)(null),[E,D]=(0,Z.useState)(null),k=O(),j=`ocx.models.catalog.v1:${e}`,M=(0,Z.useMemo)(()=>Ua(j),[j]),[N,P]=(0,Z.useState)(()=>M?.models??[]),[F,I]=(0,Z.useState)(()=>M?.providers??[]),[L,R]=(0,Z.useState)(()=>new Set(M?.disabled??[])),[z,B]=(0,Z.useState)(()=>M?.selectedModels??null),[V,H]=(0,Z.useState)({}),[U,W]=(0,Z.useState)({}),[G,ee]=(0,Z.useState)({}),[te,K]=(0,Z.useState)(()=>M?.contextCaps??{}),[q,ne]=(0,Z.useState)(()=>M?.contextCapValues??{}),[J,Y]=(0,Z.useState)(()=>M?.contextCapValue??35e4),ie=`${j}:picker-order`,X=(0,Z.useMemo)(()=>{let e=Ua(ie);return r_(e)?e:void 0},[ie]),[ae,se]=(0,Z.useState)(null),[ce,ue]=(0,Z.useState)(!1),de=(0,Z.useRef)(null),fe=(0,Z.useRef)(0),pe=Ya(ie,[e],(0,Z.useCallback)(async t=>{let n=await hn(await fetch(`${e}/api/subagent-models`,{signal:t}));if(!r_(n))throw Error(`picker settings payload missing`);if(t.aborted)throw Error(`picker settings request aborted`);return qa(ie,n),n},[e,ie]),{isEmpty:()=>!1,enabled:x,deadlineMs:15e3,initialData:X}),me=pe.state.data,he=ae??l_(me?.pickerAvailable??[],me?.pickerOrder??[],me?.pickerOrderMode);(0,Z.useLayoutEffect)(()=>(fe.current++,se(null),ue(!1),()=>{fe.current++,de.current?.controller.abort(),de.current?.clear(),de.current=null}),[e,x]),(0,Z.useLayoutEffect)(()=>{x&&ae===null&&he===`custom`&&se(`custom`)},[x,ae,he]);let[ge,_e]=(0,Z.useState)(``),[ve,ye]=(0,Z.useState)(!1),[xe,Se]=(0,Z.useState)({}),[Ce,Ee]=(0,Z.useState)({}),De=Ic(),[Oe,ke]=(0,Z.useState)(()=>De??new Set),je=(0,Z.useRef)(De===null),[Me,Ne]=(0,Z.useState)(``),[Pe,Fe]=(0,Z.useState)([]),[Le,Re]=(0,Z.useState)(!1),[ze,Be]=(0,Z.useState)(0),Ve=(0,Z.useCallback)((e,t)=>{Re(e),Ne(t),Be(e=>e+1)},[]),{data:He,saving:Ue,load:We,save:Ge}=xC(e,k,Ve);(0,Z.useEffect)(()=>{x||We()},[e,x,We]),(0,Z.useEffect)(()=>{if(!Me)return;let e=setTimeout(()=>Ne(``),Le?6e3:8e3);return()=>clearTimeout(e)},[Me,Le,ze]);let[qe,Je]=(0,Z.useState)(!1),Ye=(0,Z.useRef)(!1),Xe=(0,Z.useRef)(!1),Ze=(0,Z.useRef)(0),Qe=(0,Z.useRef)(!1),$e=Iy(e,{onQueued:()=>{++Ze.current,Ne(``)},onBusy:e=>{++Ze.current,Qe.current=!1,Xe.current=e,Ye.current=e,Je(e)},onResponse:e=>{let t=ws(e);t!==void 0&&Fe(t)},refresh:e=>Cr(!0,e),onSettled:e=>{Re(!e),Ne(k(e??`models.applied`))}}),et=(e,t,n,r,i)=>$e.visible(t,n,r,As(e,t,n,r,i)),[tt,nt]=(0,Z.useState)(null),[rt,it]=(0,Z.useState)({}),[at,ot]=(0,Z.useState)(null),[st,ct]=(0,Z.useState)({providers:{},models:{},defaults:{global:!1,providers:{}}}),[lt,ut]=(0,Z.useState)(!1),[dt,ft]=(0,Z.useState)(null),[pt,mt]=(0,Z.useState)(!0),[ht,gt]=(0,Z.useState)(!1),[_t,vt]=(0,Z.useState)(``),yt=(0,Z.useRef)(!1),bt=(0,Z.useRef)(0),xt=(0,Z.useRef)(0),[St,Ct]=(0,Z.useState)(``),[wt,Tt]=(0,Z.useState)(!1),[Et,Dt]=(0,Z.useState)(!1),[Ot,kt]=(0,Z.useState)(null),[At,jt]=(0,Z.useState)(!1),[Mt,Nt]=(0,Z.useState)(null),[Pt,Ft]=(0,Z.useState)(null),It=(0,Z.useRef)(null),[Lt,Rt]=(0,Z.useState)(null),[zt,Bt]=(0,Z.useState)(!1),[Vt,Ht]=(0,Z.useState)(null),[Wt,Gt]=(0,Z.useState)(null),[Kt,qt]=(0,Z.useState)(!1),Jt=(0,Z.useRef)(null),Yt=(0,Z.useRef)(!1);(0,Z.useEffect)(()=>()=>{Jt.current?.controller.abort(),Jt.current?.clear(),Jt.current=null},[]);let Xt=(0,Z.useRef)(null),Zt=(0,Z.useCallback)(async t=>{let n=await gn(await fetch(`${e}/api/aliases`,{signal:t}));n&&!t?.aborted&&ct(n)},[e]);(0,Z.useEffect)(()=>{let e=new AbortController;return Zt(e.signal),()=>e.abort()},[Zt]);let Qt={apiBase:e,t:k,reloadAliases:Zt,publishFeedback:Ve},$t=e=>dv(e,st.providers[e]??``,Qt),en=(e,t)=>fv(e,t,st.models[e]?.[t]?.alias??``,Qt),tn=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 Zt()},[nn,rn]=(0,Z.useState)(`add`),[an,sn]=(0,Z.useState)(``),[dn,fn]=(0,Z.useState)(``),[pn,mn]=(0,Z.useState)(``),[_n,vn]=(0,Z.useState)(``),[xn,Sn]=(0,Z.useState)(``),[Cn,wn]=(0,Z.useState)(!1),[Tn,En]=(0,Z.useState)([`text`]),[Dn,On]=(0,Z.useState)(!1),[kn,An]=(0,Z.useState)([]),jn=(0,Z.useRef)(!1),[Mn,Nn]=(0,Z.useState)(!1),[Pn,Fn]=(0,Z.useState)(``),[In,Ln]=(0,Z.useState)(null),[Rn,zn]=(0,Z.useState)([]),[Bn,Vn]=(0,Z.useState)(``),[Hn,Un]=(0,Z.useState)(``),[Wn,Gn]=(0,Z.useState)({}),[Kn,qn]=(0,Z.useState)({contextWindow:null,modelContextWindows:{}}),[Jn,Yn]=(0,Z.useState)(new Set),[Zn,Qn]=(0,Z.useState)(!1),[$n,er]=(0,Z.useState)(!1),[tr,nr]=(0,Z.useState)(``),[rr,ir]=(0,Z.useState)(null),or=(0,Z.useRef)(null),[cr,lr]=(0,Z.useState)(null),[ur,dr]=(0,Z.useState)(!1),[fr,pr]=(0,Z.useState)(null);(0,Z.useEffect)(()=>()=>{or.current&&clearTimeout(or.current)},[]);let mr=(0,Z.useMemo)(()=>Pc(N,L,z??{},k),[N,L,z,k]),hr=(0,Z.useMemo)(()=>{let e=new Set(mr.map(e=>e.value));return Xn(N.filter(t=>e.has(t.namespaced)),cr?.model,cr?.sourceModels)},[N,cr?.model,cr?.sourceModels,mr]),gr=(0,Z.useMemo)(()=>[{value:``,label:`—`},...Fc(mr,N,He?.model)],[N,mr,He?.model]),_r=(0,Z.useCallback)(async()=>{let t=A(15e3);try{let n=await gn(await fetch(`${e}/api/shadow-call-settings`,{signal:t.signal}));n&&lr(n)}catch{}finally{t.clear()}},[e]),vr=(0,Z.useCallback)(async()=>{if(yt.current)return;let t=++bt.current,n=xt.current,r=()=>t===bt.current&&n===xt.current,i=A(15e3);try{let t=await fetch(`${e}/api/v2`,{signal:i.signal});if(!r())return;if(!(t.headers.get(`content-type`)??``).includes(`application/json`)){nt(null);return}let n=await gn(t);if(!r())return;if(!n||typeof n.enabled!=`boolean`){nt(null);return}nt({enabled:n.enabled,agentsMaxThreadsConflict:n.agentsMaxThreadsConflict===!0,maxConcurrentThreadsPerSession:typeof n.maxConcurrentThreadsPerSession==`number`?n.maxConcurrentThreadsPerSession:null,multiAgentMode:n.multiAgentMode===`v1`||n.multiAgentMode===`v2`?n.multiAgentMode:`default`,keepNativeChatGptOnV1:n.keepNativeChatGptOnV1===!0})}catch{r()&&nt(null)}finally{i.clear(),mt(!1)}},[e]),yr=(0,Z.useCallback)(async t=>{let n=Ze.current,[r,i,a,o]=await Promise.all([fetch(`${e}/api/models`,{signal:t}),fetch(`${e}/api/provider-context-caps`,{signal:t}),fetch(`${e}/api/providers`,{signal:t}),Os(e,fetch,t)]),[s,c,l]=await Promise.all([hn(r),hn(i),hn(a)]);if(s===void 0||c===void 0||l===void 0)throw Error(`models payload missing`);if(t.aborted)throw Error(`models request aborted`);let u=Nc(s),d=typeof c.value==`number`&&Number.isFinite(c.value)&&c.value>0?c.value:typeof c.cap==`number`&&Number.isFinite(c.cap)&&c.cap>0?c.cap:void 0,f=d===void 0?35e4:d,p={models:s,providers:l,selectedModels:o,disabled:[...u],contextCaps:c.caps??{},contextCapValues:c.values??c.caps??{},contextCapValue:f};return n===Ze.current&&qa(j,p),p},[e,j]),br=(0,Z.useCallback)(e=>{let t=oC(e.models,e.providers);pr(e=>e!==null&&!t.some(t=>t.provider===e)?null:e),P(e.models),I(e.providers),R(new Set(e.disabled)),B(e.selectedModels),Y(e.contextCapValue),K(e.contextCaps),ne(e.contextCapValues??e.contextCaps)},[]),xr=Ya(j,[e],async e=>{let t=Ze.current,n=await yr(e);if(e.aborted)throw Error(`models request aborted`);return!Xe.current&&t===Ze.current&&br(n),n},{isEmpty:()=>!1,pollMs:1e4,initialData:M??void 0,enabled:x,deadlineMs:6e4}),Sr=xr.state,Cr=(0,Z.useCallback)(async(e=!1,t)=>{if(Qe.current&&!e)return!1;Qe.current=!0;let n=++Ze.current;try{let e=await yr(t??new AbortController().signal);return Ms(n,Ze.current)?(br(e),Ut(j,e),pe.refresh(),!0):!1}catch{return!1}finally{Ms(n,Ze.current)&&(Qe.current=!1)}},[br,j,yr,pe.refresh]),wr=(0,Z.useCallback)(()=>{let e=Xt.current;Nt(null),Ht(null),Gt(null),qt(!1),window.setTimeout(()=>{e?.isConnected&&e.focus()},0)},[]),Tr=(0,Z.useCallback)(()=>{Yt.current||wr()},[wr]),Er=(0,Z.useCallback)(async t=>{let n=Mt;if(!n||Yt.current)return;let r=A(6e4);Jt.current=r,Yt.current=!0,Bt(!0),Ht(null);let i=Wt?.confirmed===!0&&(t===void 0||t===Wt.value),a=t===void 0,o=t===void 0;try{if(t!==void 0){let s=await fetch(`${e}/api/providers/${encodeURIComponent(n.provider)}/model-display-names`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({modelId:n.id,displayName:t}),signal:r.signal}),c=s.ok?await hn(s,k(`models.displayNameSaveFailed`)):await s.json();if(r.signal.throwIfAborted(),!c||typeof c!=`object`||Array.isArray(c)||!s.ok&&c.saved!==!0&&typeof c.error!=`string`)throw Error(k(`models.displayNameSaveFailed`));a=!0;let l=s.ok||c.saved===!0;if(i||=l,l){let e=c.displayNameOverride===null?void 0:c.displayNameOverride??t??void 0,r={displayName:c.displayName??e,displayNameOverride:e,displayNameSource:c.displayNameSource??(e?`operator`:void 0)};P(e=>e.map(e=>e.namespaced===n.namespaced?{...e,...r}:e)),Nt({...n,...r}),qt(r.displayName===void 0)}if(!s.ok)throw Error(c.error||k(`models.displayNameSaveFailed`));o=!0}if(!await Cr(!0,r.signal))throw Error(k(`models.loadFail`));r.signal.throwIfAborted(),Ve(!0,k(i?t===null||t===void 0&&Wt?.value===null?`models.displayNameResetDone`:`models.displayNameSaved`:`models.displayNameReloaded`)),wr()}catch(e){if(Jt.current!==r)return;let n=!a||r.signal.aborted;n&&!i&&qt(!0),Gt(i||n||o?{value:o||n?void 0:t,confirmed:i}:null),Ht(i?k(`models.displayNameSavedRefreshFailed`):n||o?k(`models.displayNameOutcomeUnknown`):e instanceof Error&&e.message?e.message:k(`models.displayNameSaveFailed`))}finally{r.clear(),Jt.current===r&&(Jt.current=null,Yt.current=!1,Bt(!1))}},[e,Mt,Wt,wr,Cr,Ve,k]);(0,Z.useEffect)(()=>{if(!x)return;let e=window.setTimeout(()=>{_r(),We(),vr(),Yr(),Xr()},0),t=ua(()=>{yt.current||vr()},1e4);return()=>{window.clearTimeout(e),t()}},[x,_r,We,vr]);let Dr=(0,Z.useMemo)(()=>oC(N,F),[N,F]),Or=N.length>0||Sr.data!==void 0,kr=e=>{let t=[...new Set([...e.rows.map(e=>e.id),...e.configuredModels,...Object.keys(e.modelContextWindows??{})])].sort(),n=t[0]??``;Ln(e.provider),zn(t),Vn(n);let r=e.contextWindow?String(e.contextWindow):``,i=Object.fromEntries(Object.entries(e.modelContextWindows??{}).map(([e,t])=>[e,String(t)]));Un(r),Gn(i),qn({contextWindow:e.contextWindow??null,modelContextWindows:Object.fromEntries(Object.entries(e.modelContextWindows??{}).map(([e,t])=>[e,t]))}),Yn(new Set),Qn(!1),nr(``)},Ar=e=>{Vn(e)},jr=async()=>{if(!In)return;let t=Rc(Hn);if(!Dr.find(e=>e.provider===In)){nr(k(`models.contextSaveFailed`));return}if(Zn&&t===void 0){nr(k(`models.contextInvalid`));return}let n=Object.create(null);for(let e of Jn){let t=Rc(vv(Wn,e)??``);if(t===void 0){nr(k(`models.contextInvalid`));return}t!==(vv(Kn.modelContextWindows,e)??null)&&(n[e]=t)}let r=Zn&&t!==Kn.contextWindow;if(!r&&Object.keys(n).length===0){Ln(null),Ve(!0,k(`models.contextUnchanged`));return}er(!0),nr(``);try{let i={};r&&(i.contextWindow=t),Object.keys(n).length>0&&(i.modelContextWindows=n),await hn(await fetch(`${e}/api/providers?name=${encodeURIComponent(In)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(i)}),k(`models.contextSaveFailed`))}catch(e){nr(e instanceof Error?e.message:k(`models.contextSaveFailed`));return}finally{er(!1)}Ln(null),Ve(!0,k(`models.contextSaved`)),await Cr(!0)};(0,Z.useEffect)(()=>{if(!je.current||Dr.length===0)return;je.current=!1;let e=new Set(Dr.map(e=>e.provider));ke(e),Lc(e)},[Dr]);let Mr=(0,Z.useMemo)(()=>z?N.filter(e=>et(z,e.provider,e.id,e.native===!0,L.has(e.namespaced))).length:0,[L,N,z,$e.overrides]),Nr=(0,Z.useMemo)(()=>({catalog:Or?k(`models.active`,{active:Mr,total:N.length}):void 0,combos:S===null?void 0:String(S),routing:w===null?void 0:String(w),compatibility:E===null?void 0:String(E)}),[Or,S,E,Mr,N.length,w,k]),Pr=async(e,t,n,r)=>{Ye.current&&!$e.isRunning()||$e.enqueue(e,t,n,r)},Fr=async t=>{Je(!0),Ye.current=!0,Ne(``);let n=te[t]===void 0;try{let r=await fetch(`${e}/api/provider-context-caps`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:t,enabled:n})});try{let e=await hn(r,k(`models.capSaveFailed`));K(e?.caps??{}),ne(e?.values??e?.caps??{}),Re(!0),Ne(k(`models.capApplied`)),await Cr(!0)}catch(e){Re(!1),Ne(e instanceof Error?e.message:k(`models.capSaveFailed`))}}catch{Re(!1),Ne(k(`models.networkError`))}finally{Je(!1),Ye.current=!1}},Ir=e=>{ke(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),Lc(n),n})},Lr=e=>{ke(()=>{let t=e?new Set(Dr.map(e=>e.provider)):new Set;return Lc(t),t})},Rr=async t=>{Je(!0),Ye.current=!0,Ne(``);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 hn(n,k(`models.capSaveFailed`));typeof e?.value==`number`&&Number.isFinite(e.value)&&e.value>0&&Y(e.value),K(e?.caps??{}),ne(e?.values??e?.caps??{}),Re(!0),Ne(k(`models.capApplied`)),await Cr(!0)}catch(e){Re(!1),Ne(e instanceof Error?e.message:k(`models.capSaveFailed`))}}catch{Re(!1),Ne(k(`models.networkError`))}finally{Je(!1),Ye.current=!1}},zr=(0,Z.useMemo)(()=>{let e=Dr.filter(e=>!e.native);return e.length>0&&e.every(e=>te[e.provider]===J)&&Object.keys(te).every(e=>te[e]===J)},[Dr,te,J]),Br=e=>{!Number.isSafeInteger(e)||e<=0||Rr(zr?{value:e,setAll:!0}:{value:e})},Vr=(e,t)=>{if(t===`custom`){Se(t=>({...t,[e]:!0})),Ee(t=>({...t,[e]:String(te[e]??q[e]??J)}));return}Se(t=>({...t,[e]:!1}));let n=Number(t);Number.isSafeInteger(n)&&n>0&&n!==te[e]&&Rr({provider:e,enabled:!0,value:n})},Hr=e=>{let t=Number((Ce[e]??``).replace(/[_,\s]/g,``));if(!Number.isSafeInteger(t)||t<=0){Ve(!1,k(`models.capSaveFailed`));return}Se(t=>({...t,[e]:!1})),Rr({provider:e,enabled:!0,value:t})},Ur=e=>{if(e===`custom`){ye(!0),_e(String(J));return}ye(!1);let t=Number(e);Number.isSafeInteger(t)&&t>0&&t!==J&&Br(t)},Wr=()=>{let e=Number(ge.replace(/[_,\s]/g,``));if(!Number.isSafeInteger(e)||e<=0){Ve(!1,k(`models.capSaveFailed`));return}ye(!1),Br(e)},Gr=()=>{Rr({setAll:!zr})},Kr=async t=>{if(!(!cr||ur)){dr(!0),lr({...cr,...t});try{await fetch(`${e}/api/shadow-call-settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)})}finally{dr(!1)}}},qr=async t=>{if(!(!tt||yt.current)){gt(!0),yt.current=!0,xt.current++,vt(``),Ne(``);try{let n=await fetch(`${e}/api/v2`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});try{let e=await hn(n,k(`models.saveFailed`));if(!e||typeof e.enabled!=`boolean`){Re(!1),Ne(k(`models.saveFailed`));return}nt({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}),Re(!0),Ne(k(`models.v2Applied`)),vt((e.warnings??[]).join(` `))}catch(e){Re(!1),Ne(e instanceof Error?e.message:k(`models.saveFailed`))}}catch{Re(!1),Ne(k(`models.networkError`))}finally{gt(!1),yt.current=!1}}},Jr=async e=>{if(!(!tt||tt.multiAgentMode===e)){if(e===`v1`){await qr({multiAgentMode:`v1`});return}kt(e)}},Yr=async()=>{try{let t=A(15e3),n=await gn(await fetch(`${e}/api/model-presets`,{signal:t.signal}));it(n?.providers??{})}catch{it({})}},Xr=async()=>{try{let t=await fetch(`${e}/api/model-discovery`);ot(await gn(t)??null)}catch{ot(null)}},Zr=async(t,n)=>{await gn(await fetch(`${e}/api/model-discovery`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({policy:t,provider:n??null})})),await Promise.all([Xr(),Cr()])},Qr=async(t,n,r)=>{if(!(r&&!await aa({message:k(`models.presetConfirmReplace`,{count:String(r.presetCount)}),tone:`danger`}))&&!Xe.current){Xe.current=!0,ft(t),Je(!0),Ye.current=!0;try{let r=A(3e4),i=await hn(await fetch(`${e}/api/model-presets`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({provider:t,mode:n}),signal:r.signal}),k(`models.saveFailed`));if(!i)throw Error(k(`models.saveFailed`));if(i.fallback===`preset-empty`)Ve(!1,k(`models.presetEmpty`,{provider:t}));else{let e=ws(i);e!==void 0&&Fe(e),Ve(!0,n===`all`?k(`models.presetClearedToast`,{provider:t}):k(`models.presetAppliedToast`,{provider:t,count:String(i.selected?.length??0)}))}await Promise.all([Yr(),Cr()])}catch(e){Ve(!1,e instanceof Error?e.message:String(e))}finally{ft(null),Je(!1),Ye.current=!1,Xe.current=!1}}},$r=async e=>{!tt||tt.keepNativeChatGptOnV1===e||await qr({keepNativeChatGptOnV1:e})},ei=tt?.maxConcurrentThreadsPerSession==null?null:kc(tt.maxConcurrentThreadsPerSession,tt.enabled),ti=async t=>{if(!(!tt||yt.current)){if(!Number.isInteger(t)||t<1){Ve(!1,k(`models.v2ThreadsInvalid`));return}if(ei!==t){gt(!0),yt.current=!0,xt.current++,vt(``),Ne(``);try{let n=await fetch(`${e}/api/v2`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({maxConcurrentThreadsPerSession:Ac(t,tt.enabled)})});try{let e=await hn(n,k(`models.saveFailed`));if(!e||typeof e.enabled!=`boolean`){Re(!1),Ne(k(`models.saveFailed`));return}nt({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}),Re(!0),Ne(k(`models.v2ThreadsApplied`)),Tt(!1)}catch(e){Re(!1),Ne(e instanceof Error?e.message:k(`models.saveFailed`))}}catch{Re(!1),Ne(k(`models.networkError`))}finally{gt(!1),yt.current=!1}}}},ni=e=>{if(e===`custom`){Tt(!0),Ct(String(ei??``));return}Tt(!1),ti(Number(e))},ri=(e,t)=>{or.current&&clearTimeout(or.current),or.current=setTimeout(()=>{ir({namespaced:e,rect:t.getBoundingClientRect()})},300)},ii=(e,t)=>{or.current&&clearTimeout(or.current),ir({namespaced:e,rect:t.getBoundingClientRect()})},ai=()=>{or.current&&clearTimeout(or.current),or.current=setTimeout(()=>ir(null),120)},oi=()=>{or.current&&clearTimeout(or.current)},si=async(t,n,r,i,a,o)=>{Nn(!0),Fn(``);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 hn(s,k(`models.customSaveFailed`)),jt(!1),Ve(!0,k(`models.customAdded`)),await Cr(!0)}catch(e){Fn(e instanceof Error?e.message:k(`models.customSaveFailed`))}}catch{Fn(k(`models.networkError`))}finally{Nn(!1)}},ci=async(t,n)=>{Nn(!0),Fn(``);try{let r=await fetch(`${e}/api/custom-models/${encodeURIComponent(t)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)});try{await hn(r,k(`models.customSaveFailed`)),jt(!1),Ve(!0,k(`models.customUpdated`)),await Cr(!0)}catch(e){Fn(e instanceof Error?e.message:k(`models.customSaveFailed`))}}catch{Fn(k(`models.networkError`))}finally{Nn(!1)}},li=async(t,n)=>{if(await aa({message:k(`models.customDeleteConfirm`,{name:n}),confirmLabel:k(`common.delete`),tone:`danger`}))try{(await fetch(`${e}/api/custom-models/${encodeURIComponent(t)}`,{method:`DELETE`})).ok?(Ve(!0,k(`models.customDeleted`)),await Cr(!0)):Ve(!1,k(`models.customSaveFailed`))}catch{Ve(!1,k(`models.networkError`))}},ui=Sr.data??M,di=Sr.kind===`failed-cold`?Sr.error instanceof Error?Sr.error.message:k(`models.loadFail`):null,fi=Sr.showSkeleton&&!ui,pi=z??{},mi=t=>{let{provider:n,rows:r,nativeProviderGroup:i,liveModels:a,discovery:o}=t,s=Oe.has(n),c=e=>et(pi,n,e.id,e.native===!0,L.has(e.namespaced)),l=U[n]===!0,u=gc(r),d=vc(l,r),f=_c(r,d),p=f.filter(c).length,m=at?.recentArrivals[n]??[],h=new Set(m.map(e=>e.id)),g=te[n]!==void 0,_=te[n]??q[n]??J,v=t.nativeProviderGroup?wc:Sc,y=t.nativeProviderGroup?Tc:Cc,b=a&&o?.status===`failed`?o:void 0,x=(V[n]??``).trim().toLowerCase(),S=x?f.filter(e=>e.id.toLowerCase().includes(x)):f,C=S.toSorted((e,t)=>Number(!c(e))-Number(!c(t))),w=G[n]??60,T=C.slice(0,w),E=S.length-T.length,D=f.length>0,O=r.some(e=>e.initialSelectionPending),A=!D||f.every(c),j=!D||f.every(e=>!c(e)),M=e=>{!D||O||Pr(`provider`,n,f.map(e=>({id:e.id,native:e.native===!0})),e)};return(0,Q.jsxs)(`div`,{className:`card models-provider-card`,children:[(0,Q.jsxs)(`div`,{className:`row group-head models-provider-head${s?``:` open`}`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`row models-provider-toggle`,onClick:()=>Ir(n),"aria-expanded":!s,style:{flex:`1 1 auto`,border:0,background:`transparent`,padding:0,color:`inherit`,cursor:`pointer`,textAlign:`left`},children:[(0,Q.jsx)(Ke,{style:{width:14,height:14,color:`var(--muted)`,transform:s?`none`:`rotate(90deg)`,transition:`transform .12s`}}),(0,Q.jsx)(`span`,{className:`text-body font-semibold`,style:{whiteSpace:`nowrap`},children:le(n)}),st.providers[n]&&(0,Q.jsx)(`span`,{className:`models-chip mono text-caption`,children:st.providers[n]}),i&&(0,Q.jsx)(`span`,{className:`models-chip muted mono text-caption`,children:k(`models.nativeGroupLabel`)}),b&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,role:`status`,title:hc(k,b),children:k(`models.discoveryFailedBadge`)}),(0,Q.jsx)(`span`,{className:`muted mono text-label`,children:k(`models.active`,{active:p,total:f.length})}),m.length>0&&(0,Q.jsx)(`span`,{className:`models-chip mono text-caption`,children:k(`models.newCount`,{count:m.length})})]}),(0,Q.jsxs)(`div`,{className:`row models-provider-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm models-alias-edit`,"aria-label":k(`models.editProviderAlias`),title:k(`models.editProviderAlias`),onClick:()=>void $t(n),children:(0,Q.jsx)(oe,{style:{width:14,height:14}})}),(0,Q.jsx)(on,{on:st.defaults.providers[n]??st.defaults.global,onClick:()=>void tn(!(st.defaults.providers[n]??st.defaults.global),n),label:k(`models.useDefaultAliases`),showLabel:!0}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:e=>{e.stopPropagation(),rn(`add`),sn(n),fn(``),mn(``),vn(``),Sn(``),wn(!1),En([`text`]),On(!1),An([]),jn.current=!1,Fn(``),jt(!0)},"aria-haspopup":`dialog`,children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:`+`}),` `,k(`models.customAdd`)]}),(()=>{let e=rt[n];if(!e)return null;let t=qe||dt!==null,r=e.mode===`custom`&&e.appliedVersion!==void 0&&e.appliedVersion<e.availableVersion;return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`segmented models-segmented`,role:`radiogroup`,"aria-label":k(`models.presetLabel`),children:[[`preset`,`all`].map(r=>(0,Q.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:qe||t||O,onClick:t=>{t.stopPropagation(),Qr(n,r,r===`preset`&&e.mode===`custom`?e:void 0)},children:k(`models.presetMode_${r}`)},r)),e.mode===`custom`&&(0,Q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":!0,className:`btn btn-sm btn-primary`,disabled:!0,children:k(`models.presetMode_custom`)})]}),e.mode===`preset`&&(0,Q.jsx)(`span`,{className:`muted mono text-label`,children:k(`models.presetSummary`,{count:String(e.presetCount),total:String(e.totalCount),version:String(e.availableVersion)})}),r&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,role:`status`,children:k(`models.presetUpdateAvailable`,{version:String(e.availableVersion)})})]})})(),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,disabled:qe&&!$e.pending||A||O,onClick:()=>M(!0),children:k(`models.allOn`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,disabled:qe&&!$e.pending||j||O,onClick:()=>M(!1),children:k(`models.allOff`)}),(0,Q.jsxs)(`div`,{className:`models-cap-cluster`,children:[(0,Q.jsx)(on,{on:g,onClick:()=>Fr(n),disabled:qe,label:k(`models.contextCapLabel`),showLabel:!0}),(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(cn,{value:xe[n]?Ec:String(_),options:[...!y.has(_)&&!xe[n]?[{value:String(_),label:Mc(_)}]:[],...v.map(e=>({value:String(e),label:Mc(e)})),{value:Ec,label:k(`models.custom`)}],onChange:e=>Vr(n,e),disabled:qe||!g,label:k(`models.capValue`,{value:Mc(_)}),title:k(`models.contextCapLabel`)}),g&&xe[n]&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`input`,{className:`input`,style:{width:120},inputMode:`numeric`,placeholder:k(`models.customPlaceholder`),value:Ce[n]??``,onChange:e=>Ee(t=>({...t,[n]:e.target.value})),onKeyDown:e=>{e.key===`Enter`&&Hr(n)},disabled:qe,"aria-label":k(`models.customPlaceholder`)}),(0,Q.jsx)(`button`,{type:`button`,onClick:()=>Hr(n),disabled:qe,className:`btn btn-ghost btn-sm`,children:k(`models.customApply`)})]})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:()=>kr(t),"aria-haspopup":`dialog`,children:k(`models.contextSettings`)})]})]})]}),!s&&(0,Q.jsxs)(`div`,{className:`models-provider-body`,children:[i&&(0,Q.jsx)(`p`,{className:`muted text-label models-provider-hint`,children:k(`models.nativeHint`)}),!i&&at&&(0,Q.jsxs)(`div`,{className:`row models-provider-hint`,children:[(0,Q.jsx)(`span`,{className:`muted text-label`,children:k(`models.newPolicyProvider`)}),(0,Q.jsx)(`div`,{className:`segmented models-segmented`,role:`radiogroup`,"aria-label":k(`models.newPolicyProvider`),children:[`off`,`on`].map(e=>(0,Q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":(at.providers[n]??`inherit`)===e,className:`btn btn-sm${(at.providers[n]??`inherit`)===e?` btn-primary`:` btn-ghost`}`,onClick:()=>void Zr(e,n),children:k(`models.newPolicy_${e}`)},e))})]}),!i&&(0,Q.jsx)(aC,{summary:F.find(e=>e.name===n),apiBase:e,onSaved:(e,t)=>{Ve(e,t),e&&Cr(!0)}}),r.length===0&&(0,Q.jsx)(sC,{liveModels:a,discovery:o,showFailureBadge:!1}),r.length>0&&b&&(0,Q.jsx)(cC,{}),u&&(0,Q.jsx)(`div`,{className:`row models-provider-hint`,children:(0,Q.jsx)(on,{on:l,onClick:()=>W(e=>({...e,[n]:!l})),label:k(`models.freeOnly`),showLabel:!0})}),d&&f.length===0&&r.length>0&&(0,Q.jsx)(`p`,{className:`muted text-label`,role:`status`,children:k(`models.noFreeMatch`)}),r.length>30&&(0,Q.jsx)(`input`,{className:`input`,placeholder:k(`models.search`),value:V[n]??``,onChange:e=>H(t=>({...t,[n]:e.target.value})),"aria-label":k(`models.search`)}),T.map(e=>{let t=!c(e);return(0,Q.jsxs)(`div`,{className:`model-row-wrap`,onMouseEnter:t=>ri(e.namespaced,t.currentTarget),onMouseLeave:ai,onFocus:t=>ii(e.namespaced,t.currentTarget),onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||ir(null)},children:[(0,Q.jsxs)(`div`,{className:`row models-model-row`,children:[(0,Q.jsx)(on,{on:!t,onClick:()=>void Pr(`models`,n,[{id:e.id,native:e.native===!0}],t),disabled:qe&&!$e.pending||e.initialSelectionPending,label:e.native?e.id:e.namespaced}),e.initialSelectionPending&&(0,Q.jsx)(`span`,{className:`models-chip muted`,role:`status`,children:k(`models.initialSelectionPending`)}),e.quotaInactiveReason===`no_credit`&&(0,Q.jsx)(`span`,{className:`models-chip muted`,role:`status`,title:k(`models.inactiveNoCreditHint`),children:k(`models.inactiveNoCredit`)}),st.models[n]?.[e.id]&&(0,Q.jsx)(`strong`,{className:`mono text-control`,children:st.models[n][e.id].alias}),(0,Q.jsxs)(`span`,{className:`models-model-identity`,children:[(0,Q.jsx)(`code`,{className:`mono text-control`,style:{color:t?`var(--faint)`:`var(--text)`,textDecoration:t?`line-through`:`none`},children:e.native?_v(e.id):e.namespaced}),!e.native&&e.displayName?.trim()&&e.displayName.trim()!==e.namespaced&&(0,Q.jsx)(`span`,{className:`models-model-friendly text-caption`,children:e.displayName.trim()})]}),st.models[n]?.[e.id]?.source===`builtin`&&(0,Q.jsx)(`span`,{className:`models-chip muted text-caption`,children:k(`models.aliasAuto`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":k(`models.editModelAlias`),title:k(`models.editModelAlias`),onClick:()=>void en(n,e.id),children:(0,Q.jsx)(oe,{style:{width:13,height:13}})}),!e.native&&!e.custom&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption models-display-name-trigger`,"aria-haspopup":`dialog`,"aria-label":k(`models.displayNameActionLabel`,{model:e.namespaced}),onClick:t=>{Xt.current=t.currentTarget,Ht(null),Gt(null),qt(!1),Nt(e)},children:k(`models.displayNameAction`)}),e.custom&&(0,Q.jsx)(`span`,{className:`models-chip muted mono text-caption`,children:k(`models.customBadge`)}),!e.native&&e.provider!==`combo`&&(0,Q.jsxs)(Q.Fragment,{children:[e.manualPricing===!0&&(0,Q.jsx)(`span`,{className:`models-chip muted text-caption`,children:k(`pricing.override.badge`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption models-display-name-trigger`,"aria-haspopup":`dialog`,"aria-label":k(`pricing.override.actionLabel`,{model:e.namespaced}),onClick:t=>{It.current=t.currentTarget,Ft(e)},children:k(`pricing.override.action`)})]}),!e.native&&!e.custom&&e.provider!==`combo`&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption models-display-name-trigger`,"aria-haspopup":`dialog`,"aria-label":k(`models.settingsTitle`,{model:e.namespaced}),onClick:()=>Rt(e),children:k(`models.customEdit`)}),!e.custom&&h.has(e.id)&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:k(`models.newBadge`)}),e.contextCapped&&(0,Q.jsx)(`span`,{className:`models-chip muted mono text-caption`,children:k(`models.contextCappedValue`,{value:Mc(e.contextCap??J)})})]}),rr?.namespaced===e.namespaced&&(()=>{let n=rr.rect,r=n.bottom+4,i=r+360>window.innerHeight;return(0,Q.jsxs)(`div`,{className:`model-tip${e.custom?` has-actions`:``}${i?` flip-up`:``}`,role:`tooltip`,style:{position:`fixed`,left:n.left+24,...i?{bottom:window.innerHeight-n.top+4}:{top:r}},onMouseEnter:oi,onMouseLeave:ai,children:[(0,Q.jsx)(`div`,{className:`model-tip-id`,children:e.native?e.id:e.namespaced}),e.displayName&&(0,Q.jsx)(`div`,{className:`model-tip-display`,children:e.displayName}),e.custom&&(0,Q.jsx)(`span`,{className:`models-chip models-chip--tip muted mono text-caption`,children:k(`models.customBadge`)}),(0,Q.jsxs)(`div`,{className:`model-tip-grid`,children:[(0,Q.jsx)(`span`,{className:`model-tip-key`,children:k(`models.tipProvider`)}),(0,Q.jsx)(`span`,{className:`model-tip-val`,children:be(e.provider,k)}),(e.contextWindow||e.contextCap)&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`model-tip-key`,children:k(`models.tipContext`)}),(0,Q.jsx)(`span`,{className:`model-tip-val`,children:Mc(e.contextWindow??e.contextCap??0)})]}),e.inputModalities&&e.inputModalities.length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`model-tip-key`,children:k(`models.tipModalities`)}),(0,Q.jsx)(`span`,{className:`model-tip-val`,children:e.inputModalities.join(`, `)})]}),(0,Q.jsx)(`span`,{className:`model-tip-key`,children:k(`models.tipStatus`)}),(0,Q.jsx)(`span`,{className:`model-tip-val`,children:k(t?`models.tipDisabled`:`models.tipActive`)})]}),e.custom&&e.customId&&(0,Q.jsxs)(`div`,{className:`model-tip-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:()=>{rn(`edit`),sn(e.provider),fn(e.customId),mn(e.id),vn(e.displayName??``),Sn(e.contextWindow?String(e.contextWindow):``),wn(!1),En(e.inputModalities??[`text`]),On(Array.isArray(e.reasoningEfforts)),An(e.reasoningEfforts??[]),jn.current=Array.isArray(e.reasoningEfforts),Fn(``),jt(!0),ir(null)},children:k(`models.customEdit`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,style:{color:`var(--red)`},onClick:()=>{li(e.customId,e.displayName??e.id).finally(()=>ir(null))},children:k(`models.customDelete`)})]})]})})()]},e.namespaced)}),E>0&&(0,Q.jsx)(`button`,{type:`button`,onClick:()=>ee(e=>({...e,[n]:w+60})),className:`btn btn-ghost btn-sm models-show-more`,children:k(`models.showMore`,{n:E})})]})]},n)},hi=fr?Dr.filter(e=>e.provider===fr):Dr,gi=(e,t=!1)=>{let n={pickerOrder:e.pickerOrder,pickerOrderMode:e.pickerOrderMode,pickerAvailable:[]};Ut(ie,n),qa(ie,n),t&&se(`custom`),pe.refresh();let r=e.catalogRefresh,i=typeof r==`object`&&!!r&&`status`in r&&r.status===`committed`&&`degraded`in r&&r.degraded===!1;Ve(i,k(i?`models.pickerOrder.saved`:`models.pickerOrder.pending`)),f()},_i=async()=>{if(de.current||!me||pe.state.showError||he===`custom`)return;let t=fe.current,n=he,r=me.pickerAvailable,i=A(15e3);de.current=i,ue(!0);let a=()=>fe.current===t&&de.current===i,o=()=>a()&&!i.signal.aborted;try{let t=[];if(n===`most-used`){let n=await fetch(`${e}/api/usage?range=all&surface=all`,{signal:i.signal});if(!o())return;let r=await hn(n,k(`models.pickerOrder.usageFailed`));if(!o())return;if(r?.usageIncomplete===!0)throw Error(k(`models.pickerOrder.usageIncomplete`));if(!i_(r?.models))throw Error(k(`models.pickerOrder.usageFailed`));t=r.models}if(!o())return;let a=c_(n,r,t,N),s=await fetch(`${e}/api/subagent-models`,{method:`PUT`,headers:{"Content-Type":`application/json`},signal:i.signal,body:JSON.stringify({pickerOrder:a,pickerOrderMode:n==="default"?null:n})});if(!o())return;let c=await hn(s,k(`models.saveFailed`));if(!n_(c)||!(`ok`in c)||c.ok!==!0)throw Error(k(`models.saveFailed`));if(!o())return;gi({pickerOrder:c.pickerOrder,pickerOrderMode:c.pickerOrderMode,catalogRefresh:`catalogRefresh`in c?c.catalogRefresh:void 0}),se(null)}catch(e){a()&&Ve(!1,e instanceof Error?e.message:k(`models.networkError`))}finally{i.clear(),a()&&(de.current=null,ue(!1))}},vi=(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`models-control-top-row`,children:[at&&(0,Q.jsx)(bC,{label:k(`models.newPolicyGlobal`),children:(0,Q.jsx)(on,{on:at.policy===`off`,onClick:()=>void Zr(at.policy===`off`?`on`:`off`),label:k(`models.newPolicyGlobal`)})}),(0,Q.jsxs)(bC,{label:k(`models.useDefaultAliasesGlobal`),children:[(0,Q.jsx)(on,{on:st.defaults.global,onClick:()=>void tn(!st.defaults.global),label:k(`models.useDefaultAliasesGlobal`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>ut(e=>!e),children:k(`models.aliases`)})]}),(0,Q.jsxs)(bC,{label:k(`models.shadowCallIntercept`),hint:(0,Q.jsx)(un,{content:k(`models.shadowCallInterceptHint`,{models:yn(cr?.sourceModels)}),side:`top`,maxWidth:320,children:(0,Q.jsx)(`span`,{style:{cursor:`help`},"aria-label":k(`models.shadowCallInterceptHint`,{models:yn(cr?.sourceModels)}),children:`ⓘ`})}),busy:!cr,children:[(0,Q.jsx)(`code`,{className:`text-caption models-shadow-warning`,style:{opacity:.6},children:k(`models.shadowCallOriginal`,{models:bn(cr?.sourceModels)})}),(0,Q.jsx)(on,{on:cr?.enabled??!1,onClick:()=>void Kr({enabled:!cr?.enabled}),disabled:!cr||ur,label:k(`models.shadowCallIntercept`)}),(0,Q.jsx)(`div`,{className:`models-shadow-model-slot`,children:(0,Q.jsx)(cn,{value:cr?.model??``,options:hr,onChange:e=>{lr(t=>t&&{...t,model:e}),Kr({model:e})},disabled:!cr||ur||!cr.enabled,label:k(`models.shadowCallIntercept`)})})]}),(0,Q.jsxs)(bC,{label:k(`models.autoReviewOverride`),hint:(0,Q.jsx)(un,{content:k(`models.autoReviewOverrideHint`),side:`top`,maxWidth:320,children:(0,Q.jsx)(`span`,{style:{cursor:`help`},"aria-label":k(`models.autoReviewOverrideHint`),children:`ⓘ`})}),busy:!He,children:[(0,Q.jsx)(on,{on:He?.enabled??!1,onClick:()=>void Ge({enabled:!He?.enabled}),disabled:!He||Ue,label:k(`models.autoReviewOverride`)}),(0,Q.jsx)(`div`,{className:`models-shadow-model-slot`,children:(0,Q.jsx)(cn,{value:He?.model??``,options:gr,onChange:e=>void Ge({model:e}),disabled:!He||Ue||!He.enabled,label:k(`models.autoReviewOverride`)})})]}),(pt||tt)&&(0,Q.jsxs)(bC,{label:k(`models.v2Label`),children:[(0,Q.jsx)(`div`,{className:`segmented models-segmented`,role:`radiogroup`,"aria-label":k(`models.v2Label`),children:[`v1`,`default`,`v2`].map(e=>(0,Q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":(tt?.multiAgentMode??`default`)===e,className:`btn btn-sm${(tt?.multiAgentMode??`default`)===e?` btn-primary`:` btn-ghost`}`,style:{background:(tt?.multiAgentMode??`default`)===e?void 0:`transparent`,color:(tt?.multiAgentMode??`default`)===e?void 0:`var(--muted)`},disabled:!tt||ht,onClick:()=>void Jr(e),children:k(`models.v2Mode_${e}`)},e))}),(0,Q.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:!tt,onClick:()=>Dt(!0),"aria-label":k(`models.v2Label`),"aria-haspopup":`dialog`,children:(0,Q.jsx)(we,{width:14,height:14,"aria-hidden":`true`})})]}),tt&&tt.multiAgentMode===`v2`&&(0,Q.jsx)(`div`,{className:`models-v2-keep-native-row`,children:(0,Q.jsxs)(`div`,{className:`models-v2-keep-native`,children:[(0,Q.jsx)(`span`,{className:`models-v2-keep-native-label text-caption`,children:k(`models.keepNativeOnV1`)}),(0,Q.jsx)(on,{on:tt.keepNativeChatGptOnV1===!0,onClick:()=>void $r(!tt.keepNativeChatGptOnV1),disabled:ht,label:k(`models.keepNativeOnV1`)}),(0,Q.jsx)(un,{content:k(`models.keepNativeOnV1Hint`),side:`top`,maxWidth:360,children:(0,Q.jsx)(`span`,{className:`models-v2-keep-native-info`,"aria-label":k(`models.keepNativeOnV1Hint`),children:(0,Q.jsx)(we,{width:13,height:13,"aria-hidden":`true`})})})]})}),Ot&&(0,Q.jsx)(sr,{reason:`selection`,mode:Ot,docsUrl:ar(tt?.multiAgentSurfaceAdvisory)?.docsUrl??`https://opencodex.me/guides/subagent-v1-default/`,busy:ht,onContinue:()=>{let e=Ot;kt(null),qr({multiAgentMode:e,multiAgentSurfaceAdvisoryAcknowledged:!0})},onChooseV1:()=>{kt(null),tt?.multiAgentMode!==`v1`&&qr({multiAgentMode:`v1`,multiAgentSurfaceAdvisoryAcknowledged:!0})},onDismiss:()=>kt(null)})]}),tt&&(0,Q.jsxs)(`div`,{className:`models-v2-detail-row row`,children:[(0,Q.jsx)(`span`,{className:`muted text-control`,children:k(`models.v2ThreadsLabel`)}),(0,Q.jsx)(cn,{value:wt?`custom`:ei===null?``:Oc.has(ei)?String(ei):`custom`,options:[...ei===null?[{value:``,label:k(`models.v2ThreadsDefault`)}]:[],...ei!==null&&!Oc.has(ei)&&!wt?[{value:`custom`,label:String(ei)}]:[],...Dc.map(e=>({value:String(e),label:String(e)})),{value:`custom`,label:k(`models.custom`)}],onChange:e=>ni(e),disabled:ht,label:k(`models.v2ThreadsLabel`)}),wt&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`input`,{className:`input`,style:{width:100},inputMode:`numeric`,value:St,onChange:e=>Ct(e.target.value),onKeyDown:e=>{e.key===`Enter`&&ti(Number(St.replace(/[_,\s]/g,``)))},disabled:ht,"aria-label":k(`models.v2ThreadsLabel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:ht,onClick:()=>{ti(Number(St.replace(/[_,\s]/g,``)))},children:k(`models.v2ThreadsApply`)})]}),tt.enabled&&tt.agentsMaxThreadsConflict&&(0,Q.jsx)(`span`,{className:`mono text-label`,style:{color:`var(--err, #e5484d)`},children:k(`models.v2Conflict`)}),_t&&(0,Q.jsx)(`span`,{className:`muted text-label`,children:_t})]}),(0,Q.jsxs)(`div`,{className:`row models-cap-row`,children:[(0,Q.jsx)(`span`,{className:`muted text-control`,children:k(`models.contextCapLabel`)}),(0,Q.jsx)(cn,{value:ve?Ec:String(J),options:[...!Cc.has(J)&&!ve?[{value:String(J),label:Mc(J)}]:[],...Sc.map(e=>({value:String(e),label:Mc(e)})),{value:Ec,label:k(`models.custom`)}],onChange:e=>Ur(e),disabled:qe,label:k(`models.contextCapLabel`)}),ve&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`input`,{className:`input`,style:{width:160},inputMode:`numeric`,placeholder:k(`models.customPlaceholder`),value:ge,onChange:e=>_e(e.target.value),onKeyDown:e=>{e.key===`Enter`&&Wr()},disabled:qe,"aria-label":k(`models.customPlaceholder`)}),(0,Q.jsx)(`button`,{type:`button`,onClick:Wr,disabled:qe,className:`btn btn-ghost btn-sm`,children:k(`models.customApply`)})]}),(0,Q.jsx)(on,{on:zr,onClick:Gr,disabled:qe,label:k(`models.setAll`)}),(0,Q.jsx)(yC,{text:k(`models.setAllHint`,{value:Mc(J)})})]}),(0,Q.jsxs)(`div`,{className:`row models-cap-row`,"aria-busy":ce||pe.state.refreshing,children:[(0,Q.jsx)(`span`,{className:`muted text-control`,children:k(`models.pickerOrder.label`)}),(0,Q.jsx)(cn,{value:he,options:[{value:`default`,label:k(`models.pickerOrder.default`)},{value:`alphabetical`,label:k(`models.pickerOrder.alphabetical`)},{value:`provider`,label:k(`models.pickerOrder.provider`)},{value:`most-used`,label:k(`models.pickerOrder.mostUsed`)},{value:`custom`,label:k(`models.pickerOrder.custom`)}],onChange:e=>se(e),disabled:ce||!me||pe.state.showError,label:k(`models.pickerOrder.label`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void _i(),disabled:ce||!me||pe.state.showError||he===`custom`||he!=="default"&&me.pickerAvailable.length===0,children:k(ce?`models.pickerOrder.applying`:`models.pickerOrder.apply`)}),pe.state.showError&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{role:`alert`,children:k(`models.pickerOrder.loadFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>pe.refresh(),children:k(`models.pickerOrder.retry`)})]}),(0,Q.jsx)(yC,{text:k(`models.pickerOrder.hint`)})]}),(0,Q.jsx)(x_,{showOrderEditor:he===`custom`,apiBase:e,active:x,identities:N,onBusyChange:ue,onAccepted:e=>gi(e,!0),onSaved:()=>xr.refresh()}),lt&&(0,Q.jsxs)(`div`,{className:`card models-aliases-card`,"aria-label":k(`models.aliasesTable`),children:[(0,Q.jsx)(`div`,{className:`row group-head`,children:(0,Q.jsx)(`strong`,{children:k(`models.aliases`)})}),Object.entries(st.models).flatMap(([e,t])=>Object.entries(t).map(([t,n])=>(0,Q.jsxs)(`div`,{className:`row models-model-row`,children:[(0,Q.jsxs)(`code`,{className:`mono text-caption`,style:{flex:1},children:[e,`/`,t]}),(0,Q.jsx)(`strong`,{className:`mono text-control`,children:n.alias}),(0,Q.jsx)(`span`,{className:`models-chip muted text-caption`,children:n.source===`builtin`?k(`models.aliasAuto`):k(`models.aliasUser`)}),n.stale&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:k(`models.aliasStale`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":k(`models.editModelAlias`),onClick:()=>void en(e,t),children:(0,Q.jsx)(oe,{style:{width:13,height:13}})})]},`${e}/${t}`)))]})]}),yi=N.filter(e=>e.custom).length,bi=(0,Q.jsxs)(`div`,{className:`row models-collapse-controls`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:()=>Lr(!0),disabled:qe,children:[(0,Q.jsx)(Ke,{width:12,height:12,"aria-hidden":`true`}),` `,k(`models.collapseAll`)]}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:()=>Lr(!1),disabled:qe,children:[(0,Q.jsx)(Ke,{width:12,height:12,"aria-hidden":`true`,style:{transform:`rotate(90deg)`}}),` `,k(`models.expandAll`)]}),(0,Q.jsx)(yC,{text:k(`models.orderHint`)}),(0,Q.jsx)(vC,{count:yi,label:k(`models.customSummary`,{count:yi})})]}),xi=(0,Q.jsx)(Q.Fragment,{children:Dr.length===0&&(0,Q.jsx)(ln,{icon:(0,Q.jsx)(Ie,{}),title:k(`models.noRouted`),children:k(`models.noRoutedHint`)})}),Si=(0,Q.jsxs)(Q.Fragment,{children:[Et&&(0,Q.jsx)(`div`,{className:`modal-overlay`,role:`dialog`,"aria-modal":`true`,"aria-label":k(`models.v2Label`),onClick:()=>Dt(!1),onKeyDown:e=>{e.key===`Escape`&&Dt(!1)},children:(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{children:k(`models.v2Label`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>Dt(!1),"aria-label":k(`common.close`),children:`×`})]}),(0,Q.jsx)(`div`,{className:`modal-desc leading-relaxed`,style:{whiteSpace:`pre-line`},children:k(`models.v2Help`)}),(0,Q.jsx)(`div`,{className:`models-help-link`,children:(0,Q.jsx)(`a`,{className:`text-control`,href:`https://opencodex.me/guides/sub-agent-surface/`,target:`_blank`,rel:`noreferrer`,style:{color:`var(--accent)`},children:k(`models.v2DocsLink`)})}),(0,Q.jsx)(`div`,{className:`modal-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>Dt(!1),children:k(`common.ok`)})})]})}),In&&(0,Q.jsx)(`div`,{className:`modal-overlay`,role:`dialog`,"aria-modal":`true`,"aria-label":k(`models.contextSettings`),onClick:()=>{$n||Ln(null)},onKeyDown:e=>{e.key===`Escape`&&!$n&&Ln(null)},children:(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{children:k(`models.contextSettingsTitle`,{provider:be(In,k)})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>Ln(null),disabled:$n,"aria-label":k(`common.close`),children:`×`})]}),tr&&(0,Q.jsx)($,{tone:`err`,children:tr}),(0,Q.jsx)(`p`,{className:`modal-desc leading-relaxed`,children:k(`models.contextHint`)}),(0,Q.jsxs)(`div`,{className:`models-context-fields`,children:[(0,Q.jsxs)(`label`,{className:`text-label models-field`,children:[k(`models.contextDefault`),(0,Q.jsx)(`input`,{className:`input`,inputMode:`numeric`,value:Hn,onChange:e=>{Un(e.target.value),Qn(!0)},disabled:$n,placeholder:k(`models.contextAutomatic`),autoFocus:!0})]}),Rn.length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`text-label models-field`,children:[k(`models.contextModel`),(0,Q.jsx)(cn,{value:Bn,options:Rn.map(e=>({value:e,label:e})),onChange:Ar,disabled:$n,label:k(`models.contextModel`)})]}),(0,Q.jsxs)(`label`,{className:`text-label models-field`,children:[k(`models.contextModelOverride`),(0,Q.jsx)(`input`,{className:`input`,inputMode:`numeric`,value:vv(Wn,Bn)??``,onChange:e=>{Gn(t=>({...t,[Bn]:e.target.value})),Yn(e=>new Set(e).add(Bn))},disabled:$n,placeholder:k(`models.contextAutomatic`)})]})]})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>Ln(null),disabled:$n,children:k(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>void jr(),disabled:$n,children:k($n?`models.customSaving`:`models.customApply`)})]})]})}),At&&(0,Q.jsx)(`div`,{className:`modal-overlay`,role:`dialog`,"aria-modal":`true`,"aria-label":k(`models.customAdd`),onClick:()=>{Mn||jt(!1)},onKeyDown:e=>{e.key===`Escape`&&!Mn&&jt(!1)},children:(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{children:k(nn===`add`?`models.customAddTitle`:`models.customEditTitle`,{provider:be(an,k)})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>jt(!1),disabled:Mn,"aria-label":k(`common.close`),children:`×`})]}),Pn&&(0,Q.jsx)($,{tone:`err`,children:Pn}),(0,Q.jsxs)(`div`,{className:`models-field-stack`,children:[(0,Q.jsxs)(`label`,{className:`text-label models-field`,children:[k(`models.customFieldModelId`),(0,Q.jsx)(`input`,{className:`input`,value:pn,onChange:e=>mn(e.target.value),disabled:Mn,placeholder:k(`models.customFieldModelIdPlaceholder`),autoFocus:!0})]}),(0,Q.jsxs)(`label`,{className:`text-label models-field`,children:[k(`models.customFieldDisplayName`),(0,Q.jsx)(`input`,{className:`input`,value:_n,onChange:e=>vn(e.target.value),disabled:Mn,placeholder:k(`models.customFieldDisplayNamePlaceholder`)})]}),(0,Q.jsxs)(`label`,{className:`text-label models-field`,children:[k(`models.customFieldContext`),(0,Q.jsxs)(`div`,{className:`row models-field-row`,children:[(0,Q.jsx)(cn,{value:Cn?`custom`:xn,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:k(`models.custom`)}],onChange:e=>{if(e===`custom`){wn(!0);return}wn(!1),Sn(e)},disabled:Mn,label:k(`models.customFieldContext`)}),Cn&&(0,Q.jsx)(`input`,{className:`input`,style:{width:120},inputMode:`numeric`,value:xn,onChange:e=>Sn(e.target.value),disabled:Mn,placeholder:k(`models.customPlaceholder`),"aria-label":k(`models.customFieldContext`)})]})]}),(0,Q.jsxs)(`div`,{className:`text-label models-field`,children:[k(`models.customFieldModalities`),(0,Q.jsx)(`div`,{className:`row models-field-row`,children:[`text`,`image`,`audio`].map(e=>(0,Q.jsxs)(`label`,{className:`row models-modality-option`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:Tn.includes(e),onChange:t=>{En(n=>t.target.checked?[...n,e]:n.filter(t=>t!==e))},disabled:Mn}),(0,Q.jsx)(`span`,{className:`text-control`,children:e})]},e))})]}),(0,Q.jsxs)(`div`,{className:`text-label models-field`,children:[k(`models.customFieldReasoning`),(0,Q.jsx)(`div`,{className:`row models-field-row`,children:(0,Q.jsxs)(`label`,{className:`row models-modality-option`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:Dn,onChange:e=>{if(On(e.target.checked),e.target.checked&&!jn.current){jn.current=!0;let e=N.find(e=>e.provider===an&&e.id===pn),t=Array.isArray(e?.reasoningEfforts)?e.reasoningEfforts:void 0;An(t??[...xc])}},disabled:Mn}),(0,Q.jsx)(`span`,{className:`text-control`,children:k(`models.customFieldReasoningOverride`)})]})}),Dn&&(0,Q.jsx)(`div`,{className:`row models-field-row`,style:{flexWrap:`wrap`},children:xc.map(e=>(0,Q.jsxs)(`label`,{className:`row models-modality-option`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:kn.includes(e),onChange:t=>{An(n=>t.target.checked?[...n,e]:n.filter(t=>t!==e))},disabled:Mn}),(0,Q.jsx)(`span`,{className:`text-control`,children:k(`models.reasoningEffort.${e}`)})]},e))})]})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>jt(!1),disabled:Mn,children:k(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:Mn||!pn.trim(),onClick:()=>{let e=pn.trim(),t=_n.trim(),n=Rc(xn);if(n===void 0){Fn(k(`models.contextInvalid`));return}if(nn===`add`){let r=Dn?kn:void 0;si(an,e,t||void 0,n??void 0,Tn.length>0?Tn:void 0,r)}else ci(dn,{modelId:e,displayName:t,contextWindow:n,inputModalities:Tn,reasoningEfforts:Dn?kn:null})},children:k(Mn?`models.customSaving`:nn===`add`?`models.customAddBtn`:`models.customEditBtn`)})]})]})})]}),Ci=(0,Q.jsxs)(`div`,{className:`models-workspace-shell`,children:[Me&&(0,Q.jsxs)(`div`,{className:`action-toast notice ${Le?`notice-ok`:`notice-err`}`,role:`status`,"aria-live":`polite`,children:[Le?(0,Q.jsx)(Te,{}):(0,Q.jsx)(Ae,{}),(0,Q.jsx)(`span`,{children:Me})]}),Sr.showError&&(0,Q.jsx)($,{tone:`err`,children:k(`models.loadFail`)}),Pe.length>0&&(0,Q.jsx)(`div`,{className:`models-integration-warning`,children:(0,Q.jsxs)($,{tone:`warn`,children:[k(`models.integrationRefreshWarning`),(0,Q.jsx)(`ul`,{children:Pe.map(e=>(0,Q.jsxs)(`li`,{children:[e.client,e.profileId===void 0?``:`:${e.profileId}`,`: `,Ny(k,{clientId:e.client,message:e.reason===`integration_mutation_busy`?k(`integrations.error.busy`):e.reason,reason:e.refusalReason,snapshotPath:e.snapshotPath,residual:e.residual})]},`${e.client}:${e.profileId??`all`}`))})]})}),(0,Q.jsx)(_C,{title:k(`models.settingsPanel.title`),attentionLabel:k(`models.settingsPanel.attention`),warn:!!(tt?.enabled&&tt.agentsMaxThreadsConflict)||_t!==``||pe.state.showError,summary:gC(k,{multiAgentMode:tt?.multiAgentMode,v2Threads:ei,keepNativeOnV1:tt?.keepNativeChatGptOnV1===!0,shadowEnabled:cr?.enabled===!0,shadowModel:cr?.model,windowOn:zr,windowValue:J,newModelsOff:at?.policy===`off`,aliasesOn:st.defaults.global,autoReviewEnabled:He?.enabled===!0,autoReviewModel:He?.model,pickerMode:l_(me?.pickerAvailable??[],me?.pickerOrder??[],me?.pickerOrderMode)}),children:vi}),(0,Q.jsxs)(`div`,{className:`models-workspace-root`,"aria-busy":$e.pending||Sr.refreshing||void 0,children:[(0,Q.jsxs)(`aside`,{className:`models-workspace-rail`,"aria-label":k(`nav.models`),children:[(0,Q.jsxs)(`div`,{className:`models-workspace-rail-header`,children:[(0,Q.jsx)(`span`,{className:`models-workspace-rail-title`,children:k(`models.workspace.providers`)}),(0,Q.jsx)(`span`,{className:`models-workspace-rail-count`,children:Dr.length})]}),(0,Q.jsxs)(`div`,{className:`models-workspace-rail-list`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`models-workspace-rail-row${fr===null?` models-workspace-rail-row--selected`:``}`,onClick:()=>pr(null),"aria-current":fr===null?`true`:void 0,children:[(0,Q.jsx)(`span`,{className:`models-workspace-rail-name`,children:k(`models.workspace.allProviders`)}),(0,Q.jsx)(`span`,{className:`models-workspace-rail-meta`,children:k(`models.active`,{active:Mr,total:N.length})})]}),Dr.map(e=>{let{provider:t,rows:n}=e,r=n.filter(e=>et(pi,t,e.id,e.native===!0,L.has(e.namespaced))).length;return(0,Q.jsxs)(`button`,{type:`button`,className:`models-workspace-rail-row${fr===t?` models-workspace-rail-row--selected`:``}`,onClick:()=>pr(t),"aria-current":fr===t?`true`:void 0,children:[(0,Q.jsx)(`span`,{className:`models-workspace-rail-name`,children:be(t,k)}),(0,Q.jsx)(`span`,{className:`models-workspace-rail-meta`,children:k(`models.active`,{active:r,total:n.length})})]},t)})]})]}),(0,Q.jsxs)(`section`,{className:`models-workspace-main`,"aria-label":k(`models.workspace.mainAria`),children:[bi,(0,Q.jsx)(`div`,{className:`models-provider-list`,children:hi.map(e=>mi(e))}),Dr.length===0&&xi]})]}),Si]});return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`page-head`,children:[(0,Q.jsx)(`h2`,{children:k(`nav.models`)}),(0,Q.jsx)(`div`,{className:`page-head-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb`,onClick:()=>{m()},disabled:p,"aria-label":k(p?`dash.codexRestarting`:`dash.codexRestart`),title:k(p?`dash.codexRestarting`:`dash.codexRestart`),children:(0,Q.jsx)(re,{})})})]}),(0,Q.jsx)($g,{state:a,controller:{restarting:p,restart:m}}),(0,Q.jsx)(iC,{tab:h,onSelect:b,meta:Nr}),(0,Q.jsx)(`p`,{className:`page-sub`,children:k(SC[h])}),h===`catalog`&&(0,Q.jsx)(uC,{connected:n,catalogSyncedAt:r}),(0,Q.jsx)(`div`,{className:`models-tab-panel`,role:`tabpanel`,id:nC(`catalog`),"aria-labelledby":tC(`catalog`),hidden:h!==`catalog`,children:(0,Q.jsx)(By,{pageName:k(`models.tab.catalog`),title:k(`errorBoundary.title`),message:k(`errorBoundary.message`),detailsLabel:k(`errorBoundary.details`),reloadLabel:k(`errorBoundary.reload`),children:fi?(0,Q.jsx)(Ry,{label:k(`models.loading`),rows:5}):di===null?Ci:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)($,{tone:`err`,children:di}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>xr.refresh(),children:k(`common.retry`)})]})})}),(0,Q.jsx)(`div`,{className:`models-tab-panel models-tab-panel--fill`,role:`tabpanel`,id:nC(`combos`),"aria-labelledby":tC(`combos`),hidden:h!==`combos`,children:_.has(`combos`)&&(0,Q.jsx)(By,{pageName:k(`models.tab.combos`),title:k(`errorBoundary.title`),message:k(`errorBoundary.message`),detailsLabel:k(`errorBoundary.details`),reloadLabel:k(`errorBoundary.reload`),children:(0,Q.jsx)(Lb,{apiBase:e,active:h===`combos`,onCountChange:C})})}),(0,Q.jsx)(`div`,{className:`models-tab-panel`,role:`tabpanel`,id:nC(`routing`),"aria-labelledby":tC(`routing`),hidden:h!==`routing`,children:_.has(`routing`)&&(0,Q.jsx)(By,{pageName:k(`models.tab.routing`),title:k(`errorBoundary.title`),message:k(`errorBoundary.message`),detailsLabel:k(`errorBoundary.details`),reloadLabel:k(`errorBoundary.reload`),children:(0,Q.jsx)(Sx,{apiBase:e,active:h===`routing`,onCountChange:T})})}),(0,Q.jsx)(`div`,{className:`models-tab-panel`,role:`tabpanel`,id:nC(`compatibility`),"aria-labelledby":tC(`compatibility`),hidden:h!==`compatibility`,children:_.has(`compatibility`)&&(0,Q.jsx)(By,{pageName:k(`models.tab.compatibility`),title:k(`errorBoundary.title`),message:k(`errorBoundary.message`),detailsLabel:k(`errorBoundary.details`),reloadLabel:k(`errorBoundary.reload`),children:(0,Q.jsx)(XS,{apiBase:e,active:h===`compatibility`,onCountChange:D})})}),Mt&&(0,Q.jsx)(C_,{model:Mt,saving:zt,requestError:Vt,currentNamePending:Kt,mutationOutcomeUnknown:Wt?.confirmed===!1,onRetry:Wt?()=>void Er(Wt.value):void 0,onEdit:()=>Gt(null),onSave:e=>void Er(e),onReset:()=>void Er(null),onClose:Tr}),Pt&&(0,Q.jsx)(U_,{model:Pt,apiBase:e,onRefresh:e=>Cr(!0,e),onClose:()=>{let e=It.current;Ft(null),window.setTimeout(()=>{e?.isConnected&&e.focus()},0)}},`${e}/${Pt.namespaced}`),Lt&&(0,Q.jsx)(Z_,{row:Lt,apiBase:e,onRefresh:e=>Cr(!0,e),onFeedback:Ve,onClose:()=>Rt(null)},`${e}/${Lt.namespaced}`)]})}function wC(e){return[...new Set(e.filter(e=>!e.disabled&&!e.initialSelectionPending).map(e=>e.namespaced))]}function TC({apiBase:e,value:t,disabled:n,onChange:r}){let i=O(),a=Ya(`advisor-models:${e}`,[e],async t=>{let n=await fetch(`${e}/api/models`,{signal:t});if(!n.ok)throw Error(String(n.status));let r=await n.json();if(!Array.isArray(r)||!r.every(e=>e&&typeof e.namespaced==`string`&&e.namespaced.length>0))throw Error(`Invalid model catalog`);return r},{isEmpty:e=>e.length===0}),{state:o}=a,s=wC(o.data??[]),c=t!==``&&!s.includes(t),l=[{value:``,label:i(`advisor.modelClear`)},...c?[{value:t,label:t}]:[],...s.map(e=>({value:e,label:e}))];return(0,Q.jsxs)(`div`,{"aria-busy":o.showSkeleton||o.refreshing,children:[(0,Q.jsx)(cn,{id:`advisor-model`,value:t,options:l,label:i(`advisor.model`),describedBy:`advisor-model-hint`,disabled:n||o.showSkeleton,onChange:r}),(0,Q.jsx)(`p`,{id:`advisor-model-hint`,className:`muted setting-hint`,children:i(`advisor.modelHint`)}),o.showSkeleton&&(0,Q.jsx)($,{tone:`warn`,children:i(`common.loading`)}),o.showError&&!o.showSkeleton&&(0,Q.jsxs)($,{tone:`err`,children:[i(`advisor.modelsLoadFailed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:n,onClick:()=>a.refresh(),children:i(`common.retry`)})]}),!o.showSkeleton&&!o.showError&&s.length===0&&(0,Q.jsxs)($,{tone:`warn`,children:[i(`advisor.modelsEmpty`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:n,onClick:()=>a.refresh(),children:i(`common.retry`)})]}),!o.showSkeleton&&!o.showError&&c&&(0,Q.jsx)($,{tone:`warn`,children:i(`advisor.modelUnavailable`)})]})}function EC({entries:e}){let t=O();return e.length?(0,Q.jsx)(`div`,{className:`tbl-wrap`,children:(0,Q.jsxs)(`table`,{className:`tbl advisor-activity-table`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:t(`advisor.activity.started`)}),(0,Q.jsx)(`th`,{children:t(`advisor.activity.trigger`)}),(0,Q.jsx)(`th`,{children:t(`advisor.model`)}),(0,Q.jsx)(`th`,{children:t(`advisor.effort`)}),(0,Q.jsx)(`th`,{children:t(`advisor.activity.tokens`)}),(0,Q.jsx)(`th`,{children:t(`advisor.activity.duration`)})]})}),(0,Q.jsx)(`tbody`,{children:e.map(e=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{children:(0,Q.jsx)(`time`,{dateTime:new Date(e.startedAt).toISOString(),children:new Date(e.startedAt).toLocaleTimeString()})}),(0,Q.jsxs)(`td`,{children:[(0,Q.jsx)(`div`,{children:t(`advisor.activity.trigger.${e.trigger}`)}),(0,Q.jsx)(`span`,{className:e.status===`ok`?`badge badge-green`:`badge badge-muted`,children:t(`advisor.activity.status.${e.status}`)})]}),(0,Q.jsxs)(`td`,{children:[(0,Q.jsx)(`code`,{children:e.advisorModel}),(0,Q.jsx)(`div`,{className:`muted`,children:(0,Q.jsx)(`code`,{children:e.workerModel})})]}),(0,Q.jsx)(`td`,{children:(0,Q.jsxs)(`code`,{children:[e.requestedEffort,` → `,e.effectiveEffort??t(`logs.tokens.unreported`)]})}),(0,Q.jsx)(`td`,{className:`num`,children:e.usage?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{title:t(`logs.tokens.input`),children:e.usage.inputTokens??`—`}),` / `,(0,Q.jsx)(`span`,{title:t(`logs.tokens.output`),children:e.usage.outputTokens??`—`})]}):t(`logs.tokens.unreported`)}),(0,Q.jsx)(`td`,{className:`num`,children:e.durationMs===null?`—`:(0,Q.jsxs)(Q.Fragment,{children:[e.durationMs,` ms`]})})]},e.id))})]})}):(0,Q.jsx)(`p`,{className:`muted`,children:t(`advisor.activity.empty`)})}function DC({apiBase:e}){let t=O(),n=Ya(`advisor-activity:${e}`,[e],async t=>{let n=await fetch(`${e}/api/advisor/activity`,{signal:t});if(!n.ok)throw Error(String(n.status));return await n.json()},{isEmpty:e=>e.entries.length===0,pollMs:5e3,pauseWhenHidden:!0}),{state:r}=n;return(0,Q.jsxs)(`section`,{"aria-label":t(`advisor.activity.title`),children:[(0,Q.jsx)(`h3`,{children:t(`advisor.activity.title`)}),(0,Q.jsx)(`p`,{className:`muted`,children:t(`advisor.activity.note`)}),r.showSkeleton&&(0,Q.jsx)(`p`,{className:`muted`,children:t(`common.loading`)}),r.showError&&(0,Q.jsxs)($,{tone:`err`,children:[t(`advisor.activity.failed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>n.refresh(),children:t(`common.retry`)})]}),r.data&&(0,Q.jsx)(EC,{entries:r.data.entries})]})}var OC=[`low`,`medium`,`high`,`xhigh`,`max`,`ultra`];function kC({apiBase:e,initial:t}){let n=O(),[r,i]=(0,Z.useState)(t),[a,o]=(0,Z.useState)(t),[s,c]=(0,Z.useState)(!1),[l,u]=(0,Z.useState)(!1),[d,f]=(0,Z.useState)(``),p=(0,Z.useRef)(null);(0,Z.useEffect)(()=>()=>{p.current!==null&&(clearTimeout(p.current),p.current=null)},[]);let m=(0,Z.useCallback)(async()=>{p.current!==null&&(clearTimeout(p.current),p.current=null),u(!1),c(!0),f(``);let t=a;try{let n=await fetch(`${e}/api/advisor/settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:t.enabled,model:t.model,effort:t.effort,policy:t.policy,...t.maxConsultationsPerTask===void 0?{}:{maxConsultationsPerTask:t.maxConsultationsPerTask},timeoutMs:t.timeoutMs,contextSharingConsent:t.contextSharingConsent})});if(!n.ok){let e=await n.json().catch(()=>null);f(e?.error?.message??String(n.status));return}let r=await n.json();i(r.settings),o(e=>JSON.stringify(e)===JSON.stringify(t)?r.settings:e),u(!0),p.current=setTimeout(()=>{p.current=null,u(!1)},2500)}catch(e){f(e instanceof Error?e.message:String(e))}finally{c(!1)}},[e,a]),h=(0,Z.useCallback)(e=>{f(``),o(t=>({...t,...e}))},[]),g=JSON.stringify(a)!==JSON.stringify(r),_=a.enabled&&a.model.trim()===``,v=a.enabled&&a.model.trim()!==``&&a.contextSharingConsent!==`v1`;return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{marginTop:`0.75rem`},children:[(0,Q.jsxs)(`div`,{className:`advisor-editor-row`,children:[(0,Q.jsx)(`span`,{className:`advisor-editor-label`,children:n(`advisor.enabled`)}),(0,Q.jsxs)(`label`,{className:`toggle`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:a.enabled,disabled:s,"aria-label":n(`advisor.enabled`),onChange:e=>h({enabled:e.target.checked})}),(0,Q.jsx)(`span`,{className:`slider`,"aria-hidden":`true`})]})]}),(0,Q.jsxs)(`div`,{className:`advisor-editor-row`,children:[(0,Q.jsx)(`label`,{htmlFor:`advisor-model`,className:`advisor-editor-label`,children:n(`advisor.model`)}),(0,Q.jsx)(TC,{apiBase:e,value:a.model,disabled:s,onChange:e=>h({model:e})})]}),(0,Q.jsxs)(`div`,{className:`advisor-editor-row`,children:[(0,Q.jsx)(`label`,{htmlFor:`advisor-effort`,className:`advisor-editor-label`,children:n(`advisor.effort`)}),(0,Q.jsx)(`select`,{id:`advisor-effort`,value:a.effort,disabled:s,onChange:e=>h({effort:e.target.value}),children:OC.map(e=>(0,Q.jsx)(`option`,{value:e,children:n(`models.reasoningEffort.${e}`)},e))})]}),(0,Q.jsxs)(`div`,{className:`advisor-editor-row`,children:[(0,Q.jsx)(`label`,{htmlFor:`advisor-policy`,className:`advisor-editor-label`,children:n(`advisor.policy`)}),(0,Q.jsxs)(`select`,{id:`advisor-policy`,value:a.policy,disabled:s,onChange:e=>h({policy:e.target.value}),children:[(0,Q.jsx)(`option`,{value:`manual`,children:n(`advisor.policy.manual`)}),(0,Q.jsx)(`option`,{value:`preflight`,children:n(`advisor.policy.preflight`)}),(0,Q.jsx)(`option`,{value:`adaptive`,children:n(`advisor.policy.adaptive`)})]})]}),a.policy===`adaptive`&&(0,Q.jsxs)(`div`,{className:`advisor-editor-row`,children:[(0,Q.jsx)(`label`,{htmlFor:`advisor-task-limit`,className:`advisor-editor-label`,children:n(`advisor.taskLimit`)}),(0,Q.jsx)(`select`,{id:`advisor-task-limit`,value:a.maxConsultationsPerTask??3,disabled:s,onChange:e=>h({maxConsultationsPerTask:Number(e.target.value)}),children:[1,2,3].map(e=>(0,Q.jsx)(`option`,{value:e,children:e},e))})]}),a.policy===`adaptive`&&(0,Q.jsx)(`p`,{className:`muted`,children:n(`advisor.adaptiveNote`)}),(0,Q.jsx)(`div`,{style:{margin:`0.8rem 0`},children:(0,Q.jsxs)(`label`,{style:{display:`flex`,alignItems:`flex-start`,gap:`0.6rem`},children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:a.contextSharingConsent===`v1`,disabled:s,"aria-label":n(`advisor.consent.label`),onChange:e=>h({contextSharingConsent:e.target.checked?`v1`:null})}),(0,Q.jsx)(`span`,{children:n(`advisor.consent.label`)})]})}),(0,Q.jsxs)(`div`,{className:`advisor-editor-row`,children:[(0,Q.jsx)(`label`,{htmlFor:`advisor-timeout`,className:`advisor-editor-label`,children:n(`advisor.timeout`)}),(0,Q.jsx)(`input`,{id:`advisor-timeout`,type:`number`,min:1e3,max:6e5,value:a.timeoutMs,disabled:s,onChange:e=>{let t=e.target.value.trim();if(t===``)return;let n=Number(t);Number.isFinite(n)&&h({timeoutMs:n})}})]})]}),_&&(0,Q.jsx)($,{tone:`warn`,children:n(`advisor.warning.noModel`)}),v&&(0,Q.jsx)($,{tone:`warn`,children:n(`advisor.consent.required`)}),d&&(0,Q.jsx)($,{tone:`err`,children:d}),l&&(0,Q.jsx)($,{tone:`ok`,children:n(`advisor.saved`)}),(0,Q.jsx)(`div`,{style:{marginTop:`0.75rem`},children:(0,Q.jsx)(`button`,{type:`button`,className:`btn`,disabled:!g||s,onClick:()=>void m(),children:n(s?`common.loading`:`advisor.save`)})})]})}function AC({apiBase:e}){let t=O(),n=Ya(`advisor-settings:${e}`,[e],async t=>{let n=await fetch(`${e}/api/advisor/settings`,{signal:t});if(!n.ok)throw Error(String(n.status));return await n.json()},{isEmpty:()=>!1}),{state:r}=n,i=(0,Q.jsx)(`h2`,{children:t(`nav.advisor`)});return(0,Q.jsxs)(`section`,{className:`panel`,children:[i,(0,Q.jsx)(`p`,{className:`muted`,children:t(`advisor.description`)}),(0,Q.jsxs)(`details`,{className:`advisor-notices`,style:{margin:`0.5rem 0`},children:[(0,Q.jsx)(`summary`,{className:`muted text-label`,style:{cursor:`pointer`,padding:`2px 2px`},children:t(`advisor.notices`)}),(0,Q.jsx)($,{tone:`warn`,children:t(`advisor.costNote`)}),(0,Q.jsx)($,{tone:`warn`,children:t(`advisor.privacyNote`)}),(0,Q.jsx)($,{tone:`warn`,children:t(`advisor.disclosure`)})]}),r.showSkeleton&&(0,Q.jsx)($,{tone:`warn`,children:t(`common.loading`)}),r.showError&&!r.showSkeleton&&(0,Q.jsxs)($,{tone:`err`,children:[t(`advisor.loadFailed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>n.refresh(),children:t(`common.retry`)})]}),r.data!==void 0&&(0,Q.jsx)(kC,{apiBase:e,initial:r.data.settings},n.hasSucceeded?`ready`:`cold`),(0,Q.jsx)(DC,{apiBase:e})]})}function jC(e,t){let n=new Set(t);return[...new Set([...e.filter(e=>n.has(e)),...t])]}function MC({apiBase:e,roster:t}){let n=O(),[r,i]=(0,Z.useState)(null),[a,o]=(0,Z.useState)(``),[s,c]=(0,Z.useState)(!1),[l,u]=(0,Z.useState)(``),[d,f]=(0,Z.useState)(!1),[p,m]=(0,Z.useState)(0),[h,g]=(0,Z.useState)(null),_=s||h?.retry!==p||h.t!==n,v=(0,Z.useRef)(!1),y=(0,Z.useRef)(!1);(0,Z.useEffect)(()=>{y.current=!0,v.current=!0;let t=new AbortController,r=!1;return(async()=>{try{let a=await hn(await fetch(`${e}/api/subagent-models`,{signal:t.signal}),n(`sub.loadFail`));if(r)return;let s={force:a?.force??null,forceAvailable:a?.forceAvailable??[],forceStatus:a?.forceStatus??null};i(s),o(s.force??``),u(``)}catch{r||u(n(`sub.loadFail`))}finally{r||(v.current=!1,g({retry:p,t:n}))}})(),()=>{r=!0,y.current=!1,t.abort()}},[e,p,n]);async function b(t){if(!(!r||_||v.current)){v.current=!0,c(!0),u(``),f(!1);try{let r=await hn(await fetch(`${e}/api/subagent-models`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({force:t})}),n(`sub.saveFailed`));if(!y.current)return;i(e=>e&&{...e,force:r?.force??null,forceStatus:null}),o(r?.force??a),f(!0),m(e=>e+1)}catch{y.current&&u(n(`sub.saveFailed`))}finally{v.current=!1,y.current&&c(!1)}}}let x=jC(t,r?.forceAvailable??[]),S=r?.force??a,C=x.includes(S),w=r?.forceStatus;return(0,Q.jsxs)(`section`,{className:`panel`,children:[(0,Q.jsx)(`h3`,{children:n(`sub.forceTitle`)}),(0,Q.jsx)(on,{on:!!r?.force,disabled:!r||_||!r.force&&!C,label:n(`sub.forceTitle`),onClick:()=>{b(r?.force?null:a)}}),(0,Q.jsxs)(`label`,{className:`field-label`,children:[n(`sub.forceModel`),(0,Q.jsxs)(`select`,{className:`input`,value:S,disabled:!r||_,onChange:e=>{let t=e.target.value;r?.force?b(t):o(t)},children:[(0,Q.jsx)(`option`,{value:``,disabled:!0,children:n(`sub.forceChoose`)}),S&&!C&&(0,Q.jsx)(`option`,{value:S,disabled:!0,children:S}),x.map(e=>(0,Q.jsx)(`option`,{value:e,children:e},e))]})]}),(0,Q.jsx)(`p`,{className:`muted`,children:n(`sub.forceHelp`)}),(0,Q.jsx)(`p`,{className:`muted`,children:n(`sub.forceScope`)}),r?.force&&(!C||w?.targetValid===!1)&&(0,Q.jsx)($,{tone:`warn`,children:n(`sub.forceInvalid`)}),r?.force&&w?.support===`unsupported`&&(0,Q.jsx)($,{tone:`warn`,children:n(`sub.forceOld`)}),r?.force&&(!w||w.support===`unknown`)&&(0,Q.jsx)($,{tone:`warn`,children:n(`sub.forceUnknown`)}),r?.force&&w?.settingsOverride&&(0,Q.jsx)($,{tone:`warn`,children:n(`sub.forceOverride`)}),r?.force&&w?.settingsReadable===!1&&(0,Q.jsx)($,{tone:`warn`,children:n(`sub.forceSettingsUnknown`)}),d&&(0,Q.jsx)($,{tone:`ok`,children:n(`sub.forceSaved`)}),l&&(0,Q.jsxs)($,{tone:`err`,children:[l,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:_,onClick:()=>m(e=>e+1),children:n(`common.retry`)})]})]})}var NC=`section`;function PC(e,t){return[e,NC,t].join(`-`)}function FC(e){return[e,NC,``].join(`-`)}var IC=1200;function LC({scope:e,items:t,ariaLabel:n,mobileReadingLine:r}){let[i,a]=(0,Z.useState)(()=>r&&window.matchMedia(`(max-width: 760px)`).matches?r:72);(0,Z.useEffect)(()=>{if(!r)return;let e=window.matchMedia(`(max-width: 760px)`),t=()=>a(e.matches?r:72);return t(),e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[r]);let[o,s]=(0,Z.useState)(t[0]?.id??``),c=(0,Z.useRef)(null),l=(0,Z.useRef)(null),u=(0,Z.useCallback)(()=>{c.current=null,l.current!==null&&(clearTimeout(l.current),l.current=null)},[]),d=(0,Z.useCallback)(()=>{u();let n=null,r=1/0;for(let a of t){let t=document.getElementById(PC(e,a.id));if(!t)continue;let o=Math.abs(t.getBoundingClientRect().top-i);o<r&&(r=o,n=a.id)}n&&s(n)},[u,t,e,i]);(0,Z.useEffect)(()=>()=>u(),[u]),(0,Z.useEffect)(()=>{if(typeof IntersectionObserver>`u`)return;let n=t.map(t=>document.getElementById(PC(e,t.id))).filter(e=>e!==null);if(n.length===0)return;let r=new IntersectionObserver(t=>{let n=c.current;if(n){let r=document.getElementById(PC(e,n));t.some(e=>e.isIntersecting&&e.target===r)&&(u(),s(n));return}let r=t.filter(e=>e.isIntersecting).sort((e,t)=>e.boundingClientRect.top-t.boundingClientRect.top)[0];if(!r)return;let i=r.target.id.slice(FC(e).length);s(e=>e===i?e:i)},{rootMargin:[String(-i)+`px`,`0px`,`-60%`,`0px`].join(` `),threshold:0});for(let e of n)r.observe(e);return()=>r.disconnect()},[u,t,e,i]);let f=t=>{let n=document.getElementById(PC(e,t));n&&(c.current=t,l.current!==null&&clearTimeout(l.current),l.current=setTimeout(d,IC),s(t),n.scrollIntoView({behavior:`smooth`,block:`start`}))};return(0,Q.jsx)(`div`,{className:`page-tabs section-tabs`,role:`tablist`,"aria-label":n,children:t.map(t=>(0,Q.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":o===t.id,"aria-controls":PC(e,t.id),tabIndex:o===t.id?0:-1,className:`page-tab${o===t.id?` page-tab--active`:``}`,onClick:()=>f(t.id),children:[t.label,t.meta?(0,Q.jsx)(`span`,{className:`section-tab-meta`,children:t.meta}):null]},t.id))})}var RC=1500,zC={fast:`integrations.lazycodexRoles.auto.tierFast`,standard:`integrations.lazycodexRoles.auto.tierStandard`,frontier:`integrations.lazycodexRoles.auto.tierFrontier`},BC={glance:`integrations.lazycodexRoles.auto.effortGlance`,measured:`integrations.lazycodexRoles.auto.effortMeasured`,thorough:`integrations.lazycodexRoles.auto.effortThorough`,exhaustive:`integrations.lazycodexRoles.auto.effortExhaustive`};function VC({apiBase:e,model:t,effort:n,available:r,saving:i,onAccept:a}){let o=O(),[s,c]=(0,Z.useState)(``),[l,u]=(0,Z.useState)(!1),[d,f]=(0,Z.useState)(null),[p,m]=(0,Z.useState)(null),h=e=>{let t=r.find(t=>t.namespaced===e);return t?xe(`${t.provider}/${t.model}`,o):e},g=async()=>{u(!0),f(null);try{let t=await fetch(`${e}/api/injection-model/suggest`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({work:s.trim()})});m(await hn(t,o(`sub.suggest.failed`))??null)}catch(e){m(null),f(e instanceof Error&&e.message?e.message:o(`sub.suggest.failed`))}finally{u(!1)}},_=p?.proposal,v=!!_?.proposedModel&&_.proposedModel===t&&(_.proposedEffort??``)===n,y=l?o(`sub.suggest.running`):p?o(`sub.suggest.title`):``;return(0,Q.jsxs)(`div`,{className:`swi-suggest`,children:[(0,Q.jsx)(`div`,{className:`sr-only`,"aria-live":`polite`,"aria-atomic":`true`,children:y}),(0,Q.jsx)(`label`,{className:`swi-suggest-label`,htmlFor:`swi-suggest-work`,children:o(`sub.suggest.label`)}),(0,Q.jsxs)(`div`,{className:`swi-suggest-input`,children:[(0,Q.jsx)(`textarea`,{id:`swi-suggest-work`,className:`input`,rows:2,maxLength:RC,value:s,placeholder:o(`sub.suggest.placeholder`),onChange:e=>c(e.target.value),disabled:l}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:l||i||s.trim()===``,onClick:()=>void g(),children:o(l?`sub.suggest.running`:`sub.suggest.submit`)})]}),d&&(0,Q.jsx)($,{tone:`err`,children:d}),p&&_&&(0,Q.jsxs)(`section`,{className:`swi-suggest-result`,"aria-label":o(`sub.suggest.title`),children:[(0,Q.jsxs)(`div`,{className:`swi-suggest-head`,children:[_.tier&&_.effortIntent&&(0,Q.jsx)(`span`,{className:`font-semibold`,children:o(`integrations.lazycodexRoles.auto.tierEffort`,{tier:o(zC[_.tier]),effort:o(BC[_.effortIntent])})}),(0,Q.jsx)(`span`,{className:`muted setting-hint`,children:o(`integrations.lazycodexRoles.auto.sizedWith`,{model:p.sizingModel})})]}),p.sizingError&&(0,Q.jsx)($,{tone:`warn`,children:o(`integrations.lazycodexRoles.auto.sizingFailed`,{error:p.sizingError})}),_.status===`unsized`?(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:o(`integrations.lazycodexRoles.auto.unsized`,{reason:_.reason??``})}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`swi-suggest-change`,children:[(0,Q.jsxs)(`span`,{children:[_.model?h(_.model):o(`dash.injectionNone`),_.effort?` · ${_.effort}`:``]}),(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:`→`}),_.proposedModel?(0,Q.jsxs)(`strong`,{children:[h(_.proposedModel),_.proposedEffort?` · ${_.proposedEffort}`:``]}):(0,Q.jsx)(`span`,{className:`muted`,children:o(`integrations.lazycodexRoles.auto.unassigned`,{reason:_.reason??``})})]}),_.rationale&&(0,Q.jsx)(`p`,{children:_.rationale}),_.moveUpIf&&(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:o(`integrations.lazycodexRoles.auto.moveUp`,{text:_.moveUpIf})}),_.moveDownIf&&(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:o(`integrations.lazycodexRoles.auto.moveDown`,{text:_.moveDownIf})})]}),(0,Q.jsxs)(`div`,{className:`swi-suggest-actions`,children:[v?(0,Q.jsx)(`span`,{className:`swi-suggest-done`,children:o(`integrations.lazycodexRoles.auto.alreadySet`)}):_.status===`proposed`&&_.proposedModel&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:i,onClick:()=>a({model:_.proposedModel,effort:_.proposedEffort??null}),children:o(`sub.suggest.accept`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:i,onClick:()=>m(null),children:o(`integrations.lazycodexRoles.auto.discard`)})]})]})]})}function HC({apiBase:e,model:t,effort:n,efforts:r,available:i,guidanceEnabled:a,syncCodexDefaults:o,saving:s,onSave:c,ultraMode:l,ultraSaving:u,onUltraModeSave:d,ultraLoadFailed:f,onUltraModeRetry:p,fallback:m,fallbackPollMs:h,fallbackBusy:g,availableModels:_,onFallbackChange:v,onFallbackPollMsChange:y,onFallbackSave:b}){let x=O(),S=(l.hintText??``).trim().length>0,C=i.some(e=>e.namespaced===t&&(e.provider!==`openai`||e.namespaced!==e.model)),w=l.enabled||l.multiAgentMode!==`v1`&&!(l.multiAgentMode===`v2`&&l.keepNativeChatGptOnV1),T=!f&&l.loaded===!0&&C&&w,E=new Set(_),D=new Set(m),[k,A]=(0,Z.useState)(()=>({pollMs:h,text:String(h)}));Object.is(k.pollMs,h)||A({pollMs:h,text:Number.isFinite(h)?String(h):``});let j=(0,Z.useRef)(null),[M,N]=(0,Z.useState)(!1),[P,F]=(0,Z.useState)(()=>({models:m,rows:m.map((e,t)=>({model:e,id:t})),nextId:m.length})),I=P.rows;if(P.models!==m){let e=[...P.rows],t=P.nextId;I=m.map(n=>{let r=e.findIndex(e=>e.model===n);return r>=0?e.splice(r,1)[0]:{model:n,id:t++}}),F({models:m,rows:I,nextId:t})}let L=(0,Z.useRef)(null);(0,Z.useLayoutEffect)(()=>{let e=L.current;if(!e)return;L.current=null;let t=j.current?.querySelectorAll(`.swi-fallback-row`)[e.row],n=t?.querySelectorAll(`button[data-action]:not(:disabled)`);(Array.from(n??[]).find(t=>t.dataset.action===e.action)??t?.querySelector(`button:not(:disabled)`)??j.current?.querySelector(`button[role="combobox"]`))?.focus()},[m]);let R=Number.isInteger(h)&&h>=5e3&&h<=6e5,z=(e,t)=>{let n=[...m],r=e+t;if(g||r<0||r>=n.length)return;[n[e],n[r]]=[n[r],n[e]];let i=[...I];[i[e],i[r]]=[i[r],i[e]],F({...P,models:n,rows:i}),L.current={row:r,action:t===-1?`up`:`down`},v(n)};return(0,Q.jsxs)(`div`,{className:`swi-delegation`,children:[f&&(0,Q.jsxs)(`div`,{className:`swi-delegation-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-copy`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:x(`sub.ultraMode`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:x(`sub.ultraModeLoadFail`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:p,children:x(`common.retry`)})]}),(0,Q.jsxs)(`div`,{className:`swi-delegation-row swi-delegation-model-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-copy`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:x(`sub.delegation.model`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:x(`sub.delegation.modelHint`)})]}),(0,Q.jsxs)(`div`,{className:`swi-delegation-controls`,children:[(0,Q.jsx)(cn,{value:t,options:[{value:``,label:x(`dash.injectionNone`)},...i.map(e=>({value:e.namespaced,label:xe(`${e.provider}/${e.model}`,x)}))],onChange:e=>c({model:e||null,effort:n||null}),disabled:s,label:x(`dash.injectionLabel`),align:`right`}),t&&r.length>0&&(0,Q.jsx)(cn,{value:n,options:[{value:``,label:x(`dash.injectionEffortNone`)},...r.map(e=>({value:e,label:e}))],onChange:e=>c({model:t||null,effort:e||null}),disabled:s,label:x(`dash.injectionEffortLabel`),align:`right`}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-expanded":M,onClick:()=>N(e=>!e),children:x(`sub.suggest.button`)})]})]}),M&&(0,Q.jsx)(`div`,{className:`swi-delegation-row`,children:(0,Q.jsx)(VC,{apiBase:e,model:t,effort:n,available:i,saving:s,onAccept:c})}),T&&(0,Q.jsx)(`div`,{className:`swi-delegation-row swi-v2-compatibility`,role:`note`,children:(0,Q.jsxs)(`div`,{className:`setting-copy`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:x(`sub.v2Compatibility.title`)}),(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:x(`sub.v2Compatibility.risk`)}),(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:x(`sub.v2Compatibility.recoveryUnknown`)}),(0,Q.jsx)(`a`,{href:`https://github.com/lidge-jun/opencodex/issues/92`,target:`_blank`,rel:`noreferrer`,children:x(`sub.v2Compatibility.details`)})]})}),(0,Q.jsxs)(`div`,{className:`swi-delegation-row swi-fallback-editor`,children:[(0,Q.jsxs)(`div`,{className:`setting-copy`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:x(`sub.fallbackLabel`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:x(`sub.fallbackHint`)})]}),(0,Q.jsxs)(`div`,{className:`swi-fallback-controls`,ref:j,children:[m.map((e,t)=>(0,Q.jsxs)(`div`,{className:`swi-fallback-row`,children:[(0,Q.jsxs)(`span`,{className:`swi-fallback-model`,children:[t+1,`. `,e,!E.has(e)&&(0,Q.jsx)(`span`,{className:`muted setting-hint`,children:x(`sub.fallbackUnavailable`)})]}),(0,Q.jsxs)(`span`,{className:`swi-fallback-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon btn-sm`,"data-action":`up`,onClick:()=>z(t,-1),disabled:g||t===0,"aria-label":x(`sub.moveUp`,{m:e}),children:(0,Q.jsx)(Ge,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon btn-sm`,"data-action":`down`,onClick:()=>z(t,1),disabled:g||t===m.length-1,"aria-label":x(`sub.moveDown`,{m:e}),children:(0,Q.jsx)(Qe,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon btn-sm`,"data-action":`remove`,onClick:()=>{let e=m.filter((e,n)=>n!==t);F({...P,models:e,rows:I.filter((e,n)=>n!==t)}),L.current={row:Math.max(0,Math.min(t,m.length-2)),action:`remove`},v(e)},disabled:g,"aria-label":x(`sub.removeAria`,{m:e}),children:(0,Q.jsx)(ve,{})})]})]},I[t].id)),(0,Q.jsx)(cn,{value:``,label:x(`sub.fallbackAdd`),options:[{value:``,label:x(`sub.fallbackAdd`)},..._.filter(e=>!D.has(e)).map(e=>({value:e,label:e}))],onChange:e=>{e&&!D.has(e)&&v([...m,e])},disabled:g}),(0,Q.jsxs)(`label`,{className:`setting-hint`,children:[x(`sub.fallbackPoll`),(0,Q.jsx)(`input`,{className:`input`,type:`number`,min:5e3,max:6e5,step:1e3,value:k.text,onChange:e=>{let t=e.currentTarget.value,n=Number(t),r=t.trim()!==``&&Number.isFinite(n)?n:NaN;A({pollMs:r,text:t}),y(r)},disabled:g,"aria-invalid":!R}),` ms`]}),!R&&(0,Q.jsx)(`div`,{className:`setting-hint`,role:`alert`,children:x(`sub.fallbackPollInvalid`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:b,disabled:g||!R,children:x(`common.save`)})]})]}),(0,Q.jsxs)(`div`,{className:`swi-delegation-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-copy`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:x(`dash.syncCodexSubagentDefaults`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:x(`dash.syncCodexSubagentDefaultsHint`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`switch ${o?`on`:``}`,onClick:()=>c({syncCodexSubagentDefaults:!o}),disabled:s||!t,"aria-label":x(`dash.syncCodexSubagentDefaults`),"aria-pressed":o,children:(0,Q.jsx)(`span`,{className:`knob`})})]}),(0,Q.jsxs)(`details`,{className:`swi-advanced`,children:[(0,Q.jsx)(`summary`,{className:`muted text-label`,children:x(`sub.advanced`)}),(0,Q.jsxs)(`div`,{className:`swi-delegation-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-copy`,children:[(0,Q.jsxs)(`div`,{className:`font-semibold`,style:{display:`inline-flex`,alignItems:`center`,gap:6},children:[x(`models.v2Label`),(0,Q.jsxs)(un,{content:x(`models.v2Help`),side:`top`,maxWidth:380,children:[(0,Q.jsx)(we,{width:13,height:13,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:x(`models.v2Label`)})]})]}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:(0,Q.jsx)(`a`,{className:`text-control`,href:`https://opencodex.me/guides/sub-agent-surface/`,target:`_blank`,rel:`noreferrer`,style:{color:`var(--accent)`},children:x(`models.v2DocsLink`)})})]}),(0,Q.jsx)(`div`,{className:`swi-delegation-controls`,children:(0,Q.jsx)(`div`,{className:`segmented models-segmented`,role:`radiogroup`,"aria-label":x(`models.v2Label`),children:[`v1`,`default`,`v2`].map(e=>(0,Q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":l.multiAgentMode===e,className:`btn btn-sm${l.multiAgentMode===e?` btn-primary`:` btn-ghost`}`,style:{background:l.multiAgentMode===e?void 0:`transparent`,color:l.multiAgentMode===e?void 0:`var(--muted)`},disabled:u||f,onClick:()=>{l.multiAgentMode!==e&&d({multiAgentMode:e})},children:x(`models.v2Mode_${e}`)},e))})})]}),(0,Q.jsxs)(`div`,{className:`swi-delegation-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-copy`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:x(`dash.multiAgentGuidance`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:x(`dash.multiAgentGuidanceHint`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`switch ${a?`on`:``}`,onClick:()=>c({multiAgentGuidanceEnabled:!a}),disabled:s,"aria-label":x(`dash.multiAgentGuidance`),"aria-pressed":a,children:(0,Q.jsx)(`span`,{className:`knob`})})]}),(0,Q.jsxs)(`div`,{className:`swi-delegation-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-copy`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:x(`sub.ultraMode`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:x(`sub.ultraModeHint`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`switch ${S?`on`:``}`,onClick:()=>{S?d({multiAgentModeHintText:null}):l.recommendation&&d({multiAgentModeHintText:l.recommendation.text})},disabled:s||u||!S&&(!l.multiAgentV2Enabled||!l.recommendation),"aria-label":x(`sub.ultraMode`),"aria-pressed":S,children:(0,Q.jsx)(`span`,{className:`knob`})}),!l.multiAgentV2Enabled&&(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:x(`sub.ultraModeV2Required`)})]}),S&&(0,Q.jsx)(`div`,{className:`swi-delegation-row swi-ultra-mode-editor`,children:(0,Q.jsx)(UC,{initialHint:l.hintText??``,disabled:s||u,onSave:d,preset:l.recommendation?.text??null,labels:{text:x(`sub.ultraModeText`),preset:x(`sub.ultraModePreset`),save:x(`common.save`)}},l.hintText)})]})]})}function UC({initialHint:e,disabled:t,onSave:n,preset:r,labels:i}){let[a,o]=(0,Z.useState)(e);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`textarea`,{className:`input swi-ultra-mode-textarea`,value:a,onChange:e=>o(e.target.value),disabled:t,rows:4,"aria-label":i.text}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{r!==null&&o(r)},disabled:t||r===null,children:i.preset}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:()=>{a.trim().length!==0&&n({multiAgentModeHintText:a})},disabled:t||a.trim().length===0,children:i.save})]})}function WC({available:e,fallbackAvailable:t,chosen:n,onToggle:r,onMove:i,fallback:a,fallbackPollMs:o,fallbackBusy:s,onFallbackChange:c,onFallbackPollMsChange:l,onFallbackSave:u,delegation:d}){let f=O(),[p,m]=(0,Z.useState)(``),h=(0,Z.useMemo)(()=>new Set(n),[n]),g=n.length>=5,_=(0,Z.useMemo)(()=>{let t=p.trim().toLowerCase();return e.filter(e=>!t||e.toLowerCase().includes(t))},[e,p]),v=(0,Z.useMemo)(()=>[{id:`featured`,label:f(`sub.featured`),meta:`${n.length}/5`},{id:`models`,label:f(`sub.models`),meta:String(_.length)},{id:`settings`,label:f(`sub.settings`)}],[f,n.length,_.length]);return(0,Q.jsxs)(`div`,{className:`subagents-workspace-shell`,children:[(0,Q.jsx)(LC,{scope:`subagents`,items:v,ariaLabel:f(`sub.sections`)}),(0,Q.jsxs)(`div`,{className:`subagents-workspace-root`,children:[(0,Q.jsxs)(`section`,{id:PC(`subagents`,`featured`),className:`subagents-workspace-section`,"aria-label":f(`sub.featured`),children:[(0,Q.jsxs)(`div`,{className:`swi-featured-head`,children:[(0,Q.jsx)(`h2`,{className:`swi-featured-title`,children:f(`sub.featured`)}),(0,Q.jsxs)(`span`,{className:`swi-featured-count`,children:[n.length,`/`,5]}),(0,Q.jsxs)(un,{content:(0,Q.jsx)(T,{k:`sub.orderHint`,cmd:`spawn_agent`}),side:`bottom`,maxWidth:380,children:[(0,Q.jsx)(we,{width:14,height:14,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:f(`sub.orderHintAria`)})]})]}),n.length===0?(0,Q.jsx)(`div`,{className:`swi-featured-empty`,children:f(`sub.noneSelected`)}):(0,Q.jsx)(`div`,{className:`swi-featured-list`,children:n.map((e,t)=>(0,Q.jsxs)(`div`,{className:`swi-featured-row`,children:[(0,Q.jsx)(`span`,{className:`swi-featured-pos`,children:t+1}),(0,Q.jsx)(`span`,{className:`swi-featured-name`,children:_v(e)}),(0,Q.jsxs)(`span`,{className:`swi-featured-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon btn-sm`,onClick:()=>i(t,-1),disabled:t===0,"aria-label":f(`sub.moveUp`,{m:e}),children:(0,Q.jsx)(Ge,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon btn-sm`,onClick:()=>i(t,1),disabled:t===n.length-1,"aria-label":f(`sub.moveDown`,{m:e}),children:(0,Q.jsx)(Qe,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon btn-sm`,onClick:()=>r(e),"aria-label":f(`sub.removeAria`,{m:e}),style:{color:`var(--red)`},children:(0,Q.jsx)(ve,{})})]})]},e))})]}),(0,Q.jsxs)(`section`,{id:PC(`subagents`,`models`),className:`subagents-workspace-section`,"aria-label":f(`sub.models`),children:[(0,Q.jsxs)(`div`,{className:`swi-featured-head`,children:[(0,Q.jsx)(`h2`,{className:`swi-featured-title`,children:f(`sub.models`)}),(0,Q.jsx)(`span`,{className:`swi-featured-count`,children:_.length})]}),(0,Q.jsxs)(`div`,{className:`swi-picker-box`,children:[(0,Q.jsx)(`div`,{className:`subagents-workspace-rail-search`,children:(0,Q.jsx)(`input`,{className:`input`,value:p,onChange:e=>m(e.target.value),placeholder:f(`sub.search`),"aria-label":f(`sub.search`)})}),(0,Q.jsx)(`div`,{className:`subagents-workspace-rail-list`,children:_.length===0?(0,Q.jsx)(`span`,{className:`subagents-workspace-rail-empty`,children:f(`sub.noModels`)}):_.map(e=>{let t=h.has(e),i=t?n.indexOf(e)+1:null,a=!t&&g;return(0,Q.jsxs)(`div`,{className:`subagents-workspace-rail-row${t?` subagents-workspace-rail-row--selected`:``}`,children:[(0,Q.jsxs)(`span`,{className:`subagents-workspace-rail-row-main`,children:[(0,Q.jsx)(`span`,{className:`swi-rail-priority`,children:i??``}),(0,Q.jsx)(Ye,{className:`swi-rail-icon`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`subagents-workspace-rail-name`,children:_v(e)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`subagents-workspace-rail-toggle${t?` subagents-workspace-rail-toggle--on`:``}${a?` subagents-workspace-rail-toggle--disabled`:``}`,onClick:()=>{a||r(e)},disabled:a,"aria-pressed":t,"aria-label":f(t?`sub.workspace.removeFromFeatured`:`sub.workspace.addToFeatured`,{m:e}),title:t?f(`sub.workspace.removeFromFeatured`,{m:e}):g?f(`sub.workspace.featuredFull`):f(`sub.workspace.addToFeatured`,{m:e}),children:t?(0,Q.jsx)(Te,{style:{width:14,height:14}}):(0,Q.jsx)(N,{style:{width:14,height:14}})})]},e)})})]})]}),(0,Q.jsxs)(`section`,{id:PC(`subagents`,`settings`),className:`subagents-workspace-section`,"aria-label":f(`sub.settings`),children:[(0,Q.jsx)(`div`,{className:`swi-featured-head`,children:(0,Q.jsx)(`h2`,{className:`swi-featured-title`,children:f(`sub.settings`)})}),(0,Q.jsx)(HC,{apiBase:d.apiBase,model:d.model,effort:d.effort,efforts:d.efforts,available:d.available,guidanceEnabled:d.guidanceEnabled,syncCodexDefaults:d.syncCodexDefaults,saving:d.saving,onSave:d.onSave,ultraMode:d.ultraMode,ultraSaving:d.ultraSaving,onUltraModeSave:d.onUltraModeSave,ultraLoadFailed:d.ultraLoadFailed,onUltraModeRetry:d.onUltraModeRetry,fallback:a,fallbackPollMs:o,fallbackBusy:s,availableModels:t??e,onFallbackChange:c,onFallbackPollMsChange:l,onFallbackSave:u})]})]})]})}function GC(e){let[t,n]=(0,Z.useState)(!1),[r,i]=(0,Z.useState)(!1),[a,o]=(0,Z.useState)(``),[s,c]=(0,Z.useState)(``),[l,u]=(0,Z.useState)([]),[d,f]=(0,Z.useState)([]),[p,m]=(0,Z.useState)(!0),[h,g]=(0,Z.useState)(!1),_=(0,Z.useCallback)(e=>{let t=yo(e);m(t.multiAgentGuidanceEnabled),g(t.syncCodexSubagentDefaults),o(t.injectionModel),c(t.injectionEffort),Array.isArray(e.efforts)&&u(e.efforts),Array.isArray(e.available)&&f(e.available)},[]);return(0,Z.useEffect)(()=>{let t=!1;return(async()=>{try{let n=await Tn(await fetch(`${e}/api/injection-model`));if(t)return;_(n)}catch{}finally{t||n(!0)}})(),()=>{t=!0}},[e,_]),{loaded:t,saving:r,model:a,effort:s,efforts:l,available:d,guidanceEnabled:p,syncCodexDefaults:h,save:(0,Z.useCallback)(async t=>{if(!r){i(!0);try{if(!(await fetch(`${e}/api/injection-model`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)})).ok)throw Error(`injection save failed`);let n=await fetch(`${e}/api/injection-model`);_(await Tn(n))}catch{}finally{i(!1)}}},[e,_,r])}}var KC={enabled:!1,hintText:null,recommendation:null,multiAgentV2Enabled:!1,multiAgentMode:`default`};function qC(e){return Ua(e)}function JC({apiBase:e}){let t=O(),n=`ocx.subagents.v1:${e}`,r=qC(n),[i,a]=(0,Z.useState)(()=>r?.chosen??[]),[o,s]=(0,Z.useState)(()=>r?.fallback??[]),[c,l]=(0,Z.useState)(()=>r?.pollMs??6e4),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(()=>Array.isArray(r?.fallback)&&Number.isInteger(r?.pollMs)),[m,h]=(0,Z.useState)(()=>r?.fallbackAvailable),[g,_]=(0,Z.useState)(``),[v,y]=(0,Z.useState)(!0),b=(0,Z.useRef)(null),x=(0,Z.useRef)({fallback:r?.fallback,pollMs:r?.pollMs,fallbackAvailable:r?.fallbackAvailable}),S=(0,Z.useRef)(0),C=(0,Z.useRef)(0),w=(0,Z.useRef)(!1),T=(0,Z.useRef)(r),[E,D]=(0,Z.useState)(``),[k,A]=(0,Z.useState)(!1),j=(0,Z.useRef)(!1),M=(0,Z.useRef)(null),N=(0,Z.useRef)(i),P=(0,Z.useCallback)(e=>{N.current=e,a(e)},[]),F=GC(e),[I,L]=(0,Z.useState)(null),R=I?.apiBase===e,z=R?I.mode:KC,[B,V]=(0,Z.useState)(!1),[H,U]=(0,Z.useState)(null),[W,G]=(0,Z.useState)(!1),ee=(0,Z.useRef)(0),te=(0,Z.useRef)(e);(0,Z.useEffect)(()=>{te.current=e,ee.current++},[e]);let K=(0,Z.useCallback)(async n=>{if(te.current!==e)return!1;let r=++ee.current,i=await hn(await fetch(`${e}/api/v2`,{signal:n}),t(`sub.ultraModeLoadFail`));if(!i||n?.aborted||r!==ee.current||te.current!==e)return!1;G(!1);let a=i.multiAgentModeHintRecommendation,o=a&&typeof a.text==`string`&&a.text.trim().length>0&&typeof a.revision==`string`&&a.revision.trim().length>0?{text:a.text,revision:a.revision}:null;return L({apiBase:e,mode:{enabled:i.enabled??!1,loaded:!0,keepNativeChatGptOnV1:i.keepNativeChatGptOnV1===!0,hintText:i.multiAgentModeHintText??null,recommendation:o,multiAgentV2Enabled:i.enabled===!0&&i.multiAgentMode===`v2`,multiAgentMode:i.multiAgentMode??`default`}}),!0},[e,t]);(0,Z.useEffect)(()=>{let e=new AbortController;return(async()=>{await K(e.signal)})().catch(()=>{e.signal.aborted||(A(!1),G(!0),D(t(`sub.ultraModeLoadFail`)))}),()=>{e.abort()}},[K,t]);let q=async n=>{if(B||!R||te.current!==e)return;let r=e;V(!0),D(``);try{if(await hn(await fetch(`${e}/api/v2`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)}),t(`sub.ultraModeSaveFail`)),te.current!==r||!await K())return;A(!0),D(t(`sub.ultraModeSaved`))}catch(e){if(te.current!==r)return;A(!1),D(e instanceof Error&&e.message?e.message:t(`sub.networkError`))}finally{V(!1)}},ne=(0,Z.useCallback)(async()=>{try{if(!await K())return;A(!1),D(e=>e===t(`sub.ultraModeLoadFail`)?``:e)}catch{A(!1),G(!0),D(t(`sub.ultraModeLoadFail`))}},[K,t]),J=(0,Z.useCallback)(async()=>{b.current?.abort();let r=new AbortController;b.current=r;let{signal:i}=r,a=S.current;try{let r=await hn(await fetch(`${e}/api/subagent-model-fallback`,{signal:i}));if(!r||!Array.isArray(r.models)||!r.models.every(e=>typeof e==`string`&&e.trim())||typeof r.pollMs!=`number`||!Number.isInteger(r.pollMs)||r.pollMs<5e3||r.pollMs>6e5||!Array.isArray(r.available)||!r.available.every(e=>typeof e==`string`&&e.trim()))throw Error(t(`sub.loadFail`));if(i.aborted||a!==S.current||w.current)return;let o={fallback:r.models,pollMs:r.pollMs,fallbackAvailable:r.available};x.current=o,s(o.fallback),l(o.pollMs),h(o.fallbackAvailable),p(!0),_(``),T.current&&(T.current={...T.current,...o},qa(n,T.current))}catch(e){if(i.aborted||a!==S.current||w.current)return;p(!1),_(e instanceof Error&&!(e instanceof SyntaxError)?e.message:t(`sub.loadFail`))}finally{i.aborted||y(!1)}},[e,n,t]);(0,Z.useEffect)(()=>((async()=>{await J()})(),()=>{b.current?.abort()}),[J]);let Y=(0,Z.useCallback)(async r=>{let i=C.current,a=await hn(await fetch(`${e}/api/subagent-models`,{signal:r}),t(`sub.loadFail`));if(!a)throw Error(t(`sub.loadFail`));let o=a.available??[],s=new Set(o),c=i===C.current&&!j.current,l={...x.current,available:o,chosen:c?(a.chosen??[]).filter(e=>s.has(e)):T.current?.chosen??[]};if(r?.aborted)throw r.reason;return T.current=l,c&&P(l.chosen),qa(n,l),l},[e,n,P,t]),re=Ya(n,[e],Y,{isEmpty:()=>!1,initialData:r??void 0}),{state:ie}=re,X=re.refresh,ae=ie.data??r,oe=ae?.available??[],se=async r=>{if(M.current=r,j.current)return;j.current=!0,D(``);let i=null,a=r;for(;M.current;){let r=M.current;M.current=null;try{a=(await hn(await fetch(`${e}/api/subagent-models`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({models:r})}),t(`sub.saveFailed`)))?.applied??r,T.current={...T.current,available:oe,chosen:a},qa(n,T.current),i=null}catch(e){i=e}}if(C.current+=1,j.current=!1,i){P(T.current?.chosen??[]),A(!1),D(i instanceof Error&&i.message?i.message:t(`sub.networkError`));return}P(a),A(!0),D(t(`sub.saved`,{n:a.length,cmd:`ocx sync`}))},ce=e=>{C.current+=1,P(e),se(e)},le=e=>{let t=N.current;!t.includes(e)&&t.length>=5||ce(t.includes(e)?t.filter(t=>t!==e):[...t,e])},ue=(e,t)=>{let n=e+t,r=[...N.current];n<0||n>=r.length||([r[e],r[n]]=[r[n],r[e]],ce(r))},de=async()=>{if(!f||w.current||!Number.isInteger(c)||c<5e3||c>6e5)return;w.current=!0,S.current+=1;let r=e;d(!0),D(``);try{let i=await hn(await fetch(`${e}/api/subagent-model-fallback`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({models:o,pollMs:c})}),t(`sub.fallbackSaveFailed`));if(te.current!==r)return;if(!i||!Array.isArray(i.models)||typeof i.pollMs!=`number`)throw Error(t(`sub.fallbackSaveFailed`));S.current+=1,s(i.models),l(i.pollMs),x.current={...x.current,fallback:i.models,pollMs:i.pollMs};let a={available:oe,chosen:T.current?.chosen??[],...x.current};T.current=a,qa(n,a),A(!0),D(t(`sub.fallbackSaved`))}catch(e){A(!1),D(e instanceof Error&&e.message?e.message:t(`sub.networkError`))}finally{w.current=!1,d(!1)}};if(ie.showSkeleton&&!ae)return(0,Q.jsx)(Ry,{label:t(`sub.loading`),rows:4});if(ie.kind===`failed-cold`){let e=ie.error instanceof Error?ie.error.message:t(`sub.loadFail`);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)($,{tone:`err`,children:e}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>X(),children:t(`common.retry`)})]})}return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`page-head`,children:(0,Q.jsx)(`h2`,{children:t(`nav.subagents`)})}),E&&(0,Q.jsx)($,{tone:k?`ok`:`err`,children:E}),ie.showError&&(0,Q.jsx)($,{tone:`err`,children:t(`sub.loadFail`)}),g&&(0,Q.jsxs)($,{tone:`err`,children:[t(`sub.fallbackLabel`),`: `,t(`sub.loadFail`),g!==t(`sub.loadFail`)&&(0,Q.jsxs)(Q.Fragment,{children:[` `,g]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:v,onClick:()=>{y(!0),J()},children:t(`common.retry`)})]}),(0,Q.jsx)(MC,{apiBase:e,roster:i},e),(0,Q.jsx)(WC,{available:oe,fallbackAvailable:m??[],chosen:i,onToggle:le,onMove:ue,fallback:o,fallbackPollMs:c,fallbackBusy:u||!f,onFallbackChange:e=>{S.current+=1,s(e)},onFallbackPollMsChange:e=>{S.current+=1,l(e)},onFallbackSave:()=>{de()},delegation:{apiBase:e,model:F.model,effort:F.effort,efforts:F.efforts,available:F.available,guidanceEnabled:F.guidanceEnabled,syncCodexDefaults:F.syncCodexDefaults,saving:F.saving,onSave:e=>{F.save(e)},ultraMode:z,ultraSaving:B||!R,onUltraModeSave:t=>{if(t.multiAgentMode==="default"||t.multiAgentMode===`v2`){U({mode:t.multiAgentMode,apiBase:e});return}q(t)},ultraLoadFailed:W,onUltraModeRetry:()=>{ne()}}}),H&&H.apiBase===e&&(0,Q.jsx)(sr,{reason:`selection`,mode:H.mode,docsUrl:`https://opencodex.me/guides/subagent-v1-default/`,busy:B,onContinue:()=>{let e=H.mode;U(null),q({multiAgentMode:e,multiAgentSurfaceAdvisoryAcknowledged:!0})},onChooseV1:()=>{U(null),z.multiAgentMode!==`v1`&&q({multiAgentMode:`v1`,multiAgentSurfaceAdvisoryAcknowledged:!0})},onDismiss:()=>U(null)})]})}function YC(e,t,n){let r=Array(e);return new Proxy(r,{get(r,i,a){if(typeof i==`string`){let a=i.charCodeAt(0);if(a>=48&&a<=57){let a=+i;if(Number.isInteger(a)&&a>=0&&a<e){let e=r[a];if(!e){let i=t[a*2];e=r[a]={index:a,key:n(a),start:i,size:t[a*2+1],end:i+t[a*2+1],lane:0}}return e}}if(i===`length`)return e}return Reflect.get(r,i,a)}})}function XC(e,t,n){let r=n.initialDeps??[],i,a=!0;function o(){let o=e();return o.length!==r.length||o.some((e,t)=>r[t]!==e)?(r=o,i=t(...o),n?.onChange&&!(a&&n.skipInitialOnChange)&&n.onChange(i),a=!1,i):i}return o.updateDeps=e=>{r=e},o}function ZC(e,t){if(e===void 0)throw Error(`Unexpected undefined${t?`: ${t}`:``}`);return e}var QC=(e,t)=>Math.abs(e-t)<1.01,$C=(e,t,n)=>{let r;return function(...i){e.clearTimeout(r),r=e.setTimeout(()=>t.apply(this,i),n)}},ew,tw=()=>{if(ew!==void 0)return ew;if(typeof navigator>`u`)return ew=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return ew=!0;let e=navigator.maxTouchPoints;return ew=navigator.platform===`MacIntel`&&e!==void 0&&e>0},nw=e=>{let{offsetWidth:t,offsetHeight:n}=e;return{width:t,height:n}},rw=e=>e,iw=e=>{let t=Math.max(e.startIndex-e.overscan,0),n=Math.min(e.endIndex+e.overscan,e.count-1)-t+1,r=Array(n);for(let e=0;e<n;e++)r[e]=t+e;return r},aw=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=e=>{let{width:n,height:r}=e;t({width:Math.round(n),height:Math.round(r)})};if(i(nw(n)),!r.ResizeObserver)return()=>{};let a=new r.ResizeObserver(t=>{let r=()=>{let e=t[0];if(e?.borderBoxSize){let t=e.borderBoxSize[0];if(t){i({width:t.inlineSize,height:t.blockSize});return}}i(nw(n))};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return a.observe(n,{box:`border-box`}),()=>{a.unobserve(n)}},ow={passive:!0},sw=typeof window>`u`||`onscrollend`in window,cw=(e,t,n)=>{let r=e.scrollElement;if(!r)return;let i=e.targetWindow;if(!i)return;let a=e.options.useScrollendEvent&&sw,o=0,s=a?null:$C(i,()=>t(o,!1),e.options.isScrollingResetDelay),c=e=>()=>{o=n(r),s?.(),t(o,e)},l=c(!0),u=c(!1);return r.addEventListener(`scroll`,l,ow),a&&r.addEventListener(`scrollend`,u,ow),()=>{r.removeEventListener(`scroll`,l),a&&r.removeEventListener(`scrollend`,u)}},lw=(e,t)=>cw(e,t,t=>{let{horizontal:n,isRtl:r}=e.options;return n?t.scrollLeft*(r&&-1||1):t.scrollTop}),uw=(e,t,n)=>{if(n.options.useCachedMeasurements){let t=n.indexFromElement(e),r=n.options.getItemKey(t);return n.itemSizeCache.get(r)??n.options.estimateSize(t)}if(t?.borderBoxSize){let e=t.borderBoxSize[0];if(e)return Math.round(e[n.options.horizontal?`inlineSize`:`blockSize`])}if(!t){let t=n.indexFromElement(e),r=n.options.getItemKey(t),i=n.itemSizeCache.get(r);if(i!==void 0)return i}return e[n.options.horizontal?`offsetWidth`:`offsetHeight`]},dw=(e,{adjustments:t=0,behavior:n},r)=>{var i,a;(a=(i=r.scrollElement)?.scrollTo)==null||a.call(i,{[r.options.horizontal?`left`:`top`]:e+t,behavior:n})},fw=class{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var e;return((e=this.targetWindow?.performance)?.now)?.call(e)??Date.now()},this.observer=(()=>{let e=null,t=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(e=>{e.forEach(e=>{let t=()=>{let t=e.target,n=this.indexFromElement(t);if(!t.isConnected){this.observer.unobserve(t);for(let[e,n]of this.elementsCache)if(n===t){this.elementsCache.delete(e);break}return}this.shouldMeasureDuringScroll(n)&&this.resizeItem(n,this.options.measureElement(t,e,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(t):t()})}));return{disconnect:()=>{var n;(n=t())==null||n.disconnect(),e=null},observe:e=>t()?.observe(e,{box:`border-box`}),unobserve:e=>t()?.unobserve(e)}})(),this.range=null,this.setOptions=e=>{let t={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:rw,rangeExtractor:iw,onChange:()=>{},measureElement:uw,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:`data-index`,initialMeasurementsCache:[],lanes:1,anchorTo:`start`,followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:`estimate`,useCachedMeasurements:!1};for(let n in e){let r=e[n];r!==void 0&&(t[n]=r)}let n=this.options,r=null,i=null,a=!1;if(n!==void 0&&n.enabled&&t.enabled&&t.anchorTo===`end`&&this.scrollElement!==null){let e=n.count,o=t.count,s=this.getMeasurements(),c=e>0?s[0]?.key??n.getItemKey(0):null,l=e>0?s[e-1]?.key??n.getItemKey(e-1):null;if(o!==e||e>0&&o>0&&(t.getItemKey(0)!==c||t.getItemKey(o-1)!==l)){a=!0;let c=e>0?this.getVirtualItemForOffset(this.getScrollOffset())??s[0]:null;c&&(r=[c.key,this.getScrollOffset()-c.start]);let u=t.followOnAppend===!0?`auto`:t.followOnAppend||null;u&&o>e&&this.isAtEnd(n.scrollEndThreshold)&&(e===0||t.getItemKey(o-1)!==l)&&(i=u)}}this.options=t,a&&(this.pendingMin=0,this.itemSizeCacheVersion++);let o=!1,s=0;if(r&&this.scrollOffset!==null){let[e,t]=r,n=this.getMeasurements(),{count:i,getItemKey:a}=this.options,c=0;for(;c<i&&a(c)!==e;)c++;if(c<i){let e=n[c];if(e){let n=Math.max(0,e.start+t);n!==this.scrollOffset&&(s=n-this.scrollOffset,this.scrollOffset=n,o=!0)}}}(o||i)&&(this.pendingScrollAnchor=[o?r[0]:null,o?r[1]:0,i,s])},this.notify=e=>{var t,n;(n=(t=this.options).onChange)==null||n.call(t,this,e)},this.maybeNotify=XC(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{let e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}if(this.scrollElement=e,this.targetWindow=this.scrollElement&&`ownerDocument`in this.scrollElement?this.scrollElement.ownerDocument.defaultView:this.scrollElement?.window??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{if(t&&this._intendedScrollOffset===null&&e===this.scrollOffset)return;this._intendedScrollOffset!==null&&Math.abs(e-this._intendedScrollOffset)<1.5&&(e=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0;let n=this.getScrollOffset();this.scrollDirection=t?n===e?this.scrollDirection:n<e?`forward`:`backward`:null,this.scrollOffset=e,this.isScrolling=t,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),`addEventListener`in this.scrollElement){let e=this.scrollElement,t=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},n=()=>{this._iosTouching=!1,!(!tw()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};e.addEventListener(`touchstart`,t,ow),e.addEventListener(`touchend`,n,ow),this.unsubs.push(()=>{e.removeEventListener(`touchstart`,t),e.removeEventListener(`touchend`,n),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}let t=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,t&&this.scrollElement&&this.options.enabled){let[e,n,r,i]=t;e!==null&&!r&&(tw()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?i!==0&&(this._iosDeferredAdjustment+=i):this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})),r&&this.scrollToEnd({behavior:r})}},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;let e=this.getScrollOffset(),t=this.getMaxScrollOffset();if(e<0||e>t)return;if(this._iosDeferredAdjustment<0&&e>=t-1){this._iosDeferredAdjustment=0;return}let n=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(e,{adjustments:this.scrollAdjustments+=n,behavior:void 0})},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?`width`:`height`]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset==`function`?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getMeasurementOptions=XC(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode,this.options.gap],(e,t,n,r,i,a,o,s)=>(this.prevLanes!==void 0&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMin=null,{count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o,gap:s}),{key:!1}),this.getMeasurements=XC(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o,gap:s},c)=>{let l=this.itemSizeCache;if(!i)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(let t of this.laneAssignments.keys())t>=e&&this.laneAssignments.delete(t);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));let u=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1),a===1){let i=e*2,a=this._flatMeasurements;if(!a||a.length<i){let e=new Float64Array(i);a&&u>0&&e.set(a.subarray(0,u*2)),a=e,this._flatMeasurements=a}let o;if(u===0)o=t+n;else{let e=u-1;o=a[e*2]+a[e*2+1]+s}for(let t=u;t<e;t++){let e=r(t),n=l.get(e),i=typeof n==`number`?n:this.options.estimateSize(t);a[t*2]=o,a[t*2+1]=i,o+=i+s}let c=YC(e,a,r);return this.measurementsCache=c,c}let d=this.measurementsCache.slice(0,u),f=Array(a).fill(void 0),p=new Float64Array(a),m=0;for(let e=0;e<u;e++){let t=d[e];t&&(f[t.lane]===void 0&&m++,f[t.lane]=e,p[t.lane]=t.end)}for(let i=u;i<e;i++){let e=r(i),c=this.laneAssignments.get(i),u,h,g=o===`estimate`||l.has(e);if(c!==void 0&&this.options.lanes>1){u=c;let e=f[u],r=e===void 0?void 0:d[e];h=r?r.end+s:t+n}else if(m===a){let e=0,t=p[0],n=f[0];for(let r=1;r<a;r++){let i=p[r];(i<t||i===t&&f[r]<n)&&(e=r,t=i,n=f[r])}u=e,h=t+s,g&&this.laneAssignments.set(i,u)}else u=i%this.options.lanes,h=t+n,g&&this.laneAssignments.set(i,u);let _=l.get(e),v=typeof _==`number`?_:this.options.estimateSize(i),y=h+v;d[i]={index:i,start:h,size:v,end:y,key:e,lane:u},f[u]===void 0&&m++,f[u]=i,p[u]=y}return this.measurementsCache=d,d},{key:!1,debug:()=>this.options.debug}),this.calculateRange=XC(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>e.length===0||t===0?(this.range=null,null):(this.range=hw(e,t,n,r,r===1&&this._flatMeasurements!=null?this._flatMeasurements:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=XC(()=>{let e=null,t=null,n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,n,r,i)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:t,count:n}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{if(!this.scrollState||this.scrollState.behavior!==`smooth`)return!0;let t=this.scrollState.index??this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)?.index;if(t!==void 0&&this.range){let n=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,t-n),i=Math.min(this.options.count-1,t+n);return e>=r&&e<=i}return!0},this.measureElement=e=>{if(!e){this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});return}let t=this.indexFromElement(e),n=this.options.getItemKey(t),r=this.elementsCache.get(n);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.elementsCache.set(n,e)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{if(e<0||e>=this.options.count)return;let n,r,i,a=this._flatMeasurements;if(this.options.lanes===1&&a!==null)i=this.options.getItemKey(e),r=a[e*2],n=a[e*2+1];else{let t=this.measurementsCache[e];if(!t)return;i=t.key,r=t.start,n=t.size}let o=this.itemSizeCache.get(i)??n,s=t-o;if(s!==0){let a=this.options.anchorTo===`end`&&this.scrollState?.behavior!==`smooth`&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,c=a?this.getTotalSize():0,l=this.getScrollOffset()+this.scrollAdjustments,u=this.itemSizeCache.has(i)?r+o<=l&&this.scrollDirection!==`backward`:r<l,d=this.scrollState?.behavior!==`smooth`&&(this.shouldAdjustScrollPositionOnItemSizeChange===void 0?u:this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[e]??{index:e,key:i,start:r,size:n,end:r+n,lane:0},s,this));(this.pendingMin===null||e<this.pendingMin)&&(this.pendingMin=e),this.itemSizeCache.set(i,t),this.itemSizeCacheVersion++;let f=!1;a?f=this.applyScrollAdjustment(this.getTotalSize()-c):d&&(f=this.applyScrollAdjustment(s)),this.notify(f)}},this.getVirtualItems=XC(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{let n=[];for(let r=0,i=e.length;r<i;r++){let i=t[e[r]];n.push(i)}return n},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{let t=this.getMeasurements();if(t.length===0)return;let n=this._flatMeasurements,r=this.options.lanes===1&&n!=null;return ZC(t[pw(0,t.length-1,r?e=>n[e*2]:e=>ZC(t[e]).start,e)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if(`scrollHeight`in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{let e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getVirtualDistanceFromEnd=()=>Math.max(this.getTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(e=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=e,this.getOffsetForAlignment=(e,t,n=0)=>{if(!this.scrollElement)return 0;let r=this.getSize(),i=this.getScrollOffset();t===`auto`&&(t=e>=i+r?`end`:`start`),t===`center`?e+=(n-r)/2:t===`end`&&(e-=r);let a=this.getMaxScrollOffset();return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,t=`auto`)=>{e=Math.max(0,Math.min(e,this.options.count-1));let n=this.getSize(),r=this.getScrollOffset(),i=this.measurementsCache[e];if(!i)return;if(t===`auto`){if(i.end>=r+n-this.options.scrollPaddingEnd)t=`end`;else if(i.start<=r+this.options.scrollPaddingStart)t=`start`;else return[r,t]}if(t===`end`&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];let a=t===`end`?i.end+this.options.scrollPaddingEnd:i.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,t,i.size),t]},this.scrollToOffset=(e,{align:t=`start`,behavior:n=`auto`}={})=>{this._iosDeferredAdjustment=0;let r=this.getOffsetForAlignment(e,t),i=this.now();this.scrollState={index:null,align:t,behavior:n,startedAt:i,lastTargetOffset:r,stableFrames:0},this._scrollToOffset(r,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:t=`auto`,behavior:n=`auto`}={})=>{this._iosDeferredAdjustment=0,e=Math.max(0,Math.min(e,this.options.count-1));let r=this.getOffsetForIndex(e,t);if(!r)return;let[i,a]=r,o=this.now();this.scrollState={index:e,align:a,behavior:n,startedAt:o,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:t=`auto`}={})=>{let n=this.getScrollOffset()+e,r=this.now();this.scrollState={index:null,align:`start`,behavior:t,startedAt:r,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:t}),this.scheduleScrollReconcile()},this.scrollToEnd=({behavior:e=`auto`}={})=>{if(this.options.count>0){this.scrollToIndex(this.options.count-1,{align:`end`,behavior:e});return}this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:e})},this.getTotalSize=()=>{let e=this.getMeasurements(),t;if(e.length===0)t=this.options.paddingStart;else if(this.options.lanes===1){let n=e.length-1,r=this._flatMeasurements;t=r==null?e[n]?.end??0:r[n*2]+r[n*2+1]}else{let n=Array(this.options.lanes).fill(null),r=e.length-1;for(;r>=0&&n.some(e=>e===null);){let t=e[r];n[t.lane]===null&&(n[t.lane]=t.end),r--}t=Math.max(...n.filter(e=>e!==null))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{let e=[];if(this.itemSizeCache.size===0)return e;let t=this.getMeasurements();for(let n of t)n&&this.itemSizeCache.has(n.key)&&e.push({index:n.index,key:n.key,start:n.start,size:n.size,end:n.end,lane:n.lane});return e},this._scrollToOffset=(e,{adjustments:t,behavior:n})=>{this._intendedScrollOffset=e+(t??0),this.options.scrollToFn(e,{behavior:n,adjustments:t},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(e)}applyScrollAdjustment(e,t){return e===0?!1:tw()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?(this._iosDeferredAdjustment+=e,!1):(this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=e,behavior:t}),this.scrollOffset!==null&&(this.scrollOffset+=this.scrollAdjustments,this.scrollOffset<0&&(this.scrollOffset=0),this.scrollAdjustments=0),!0)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId??=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()})}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}let e=this.scrollState.index==null?void 0:this.getOffsetForIndex(this.scrollState.index,this.scrollState.align),t=e?e[0]:this.scrollState.lastTargetOffset,n=t!==this.scrollState.lastTargetOffset;if(!n&&QC(t,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=1){this.getScrollOffset()!==t&&this._scrollToOffset(t,{adjustments:void 0,behavior:`auto`}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,n){let e=this.getSize()||600,n=Math.abs(t-this.getScrollOffset()),r=this.scrollState.behavior===`smooth`&&n>e;this.scrollState.lastTargetOffset=t,r||(this.scrollState.behavior=`auto`),this._scrollToOffset(t,{adjustments:void 0,behavior:r?`smooth`:`auto`})}this.scheduleScrollReconcile()}},pw=(e,t,n,r)=>{for(;e<=t;){let i=(e+t)/2|0,a=n(i);if(a<r)e=i+1;else if(a>r)t=i-1;else return i}return e>0?e-1:0};function mw(e,t,n){let r=0;for(;r<=t;){let i=(r+t)/2|0,a=e[i*2];if(a<n)r=i+1;else if(a>n)t=i-1;else return i}return r>0?r-1:0}function hw(e,t,n,r,i){let a=e.length-1;if(e.length<=r)return{startIndex:0,endIndex:a};if(r===1&&i!==null){let e=mw(i,a,n),r=e,o=n+t;for(;r<a&&i[r*2]+i[r*2+1]<o;)r++;return{startIndex:e,endIndex:r}}let o=pw(0,a,t=>e[t].start,n),s=o;if(r===1)for(;s<a&&e[s].end<n+t;)s++;else if(r>1){let i=Array(r).fill(0);for(;s<a&&i.some(e=>e<n+t);){let t=e[s];i[t.lane]=t.end,s++}let c=Array(r).fill(n+t);for(;o>=0&&c.some(e=>e>=n);){let t=e[o];c[t.lane]=t.start,o--}o=Math.max(0,o-o%r),s=Math.min(a,s+(r-1-s%r))}return{startIndex:o,endIndex:s}}var gw=typeof document<`u`?Z.useLayoutEffect:Z.useEffect;function _w({useFlushSync:e=!0,directDomUpdates:t=!1,directDomUpdatesMode:n=`transform`,...r}){let i=Z.useReducer(e=>e+1,0)[1],a=Z.useRef({enabled:t,mode:n,container:null,lastSize:null,lastPositions:new WeakMap,prevRange:null});a.current.enabled=t,a.current.mode=n;let o=e=>{let t=a.current;if(!t.enabled||!t.container)return;let n=e.getTotalSize();if(n!==t.lastSize){t.lastSize=n;let r=e.options.horizontal?`width`:`height`;t.container.style[r]=`${n}px`}},s=e=>{let t=a.current;if(!t.enabled||!t.container)return;o(e);let n=!!e.options.horizontal,r=t.mode===`transform`,i=n?`left`:`top`,s=e.options.scrollMargin,c=e.getVirtualItems();for(let a of c){let o=a.start-s,c=e.elementsCache.get(a.key);c&&t.lastPositions.get(c)!==o&&(t.lastPositions.set(c,o),r?c.style.transform=n?`translate3d(${o}px, 0, 0)`:`translate3d(0, ${o}px, 0)`:c.style[i]=`${o}px`)}},c={...r,onChange:(t,n)=>{var o;let c=a.current,l=!0;if(c.enabled){s(t);let e=t.range,n=c.prevRange;l=!n||n.isScrolling!==t.isScrolling||n.startIndex!==e?.startIndex||n.endIndex!==e?.endIndex,l&&(c.prevRange=e?{startIndex:e.startIndex,endIndex:e.endIndex,isScrolling:t.isScrolling}:null)}l&&(e&&n?(0,Jt.flushSync)(i):i()),(o=r.onChange)==null||o.call(r,t,n)}},[l]=Z.useState(()=>{let e=new fw(c);return Object.assign(e,{containerRef:t=>{let n=a.current;if(n.container=t,n.lastSize=null,t&&n.enabled){let r=e.getTotalSize();n.lastSize=r;let i=e.options.horizontal?`width`:`height`;t.style[i]=`${r}px`}}})});return l.setOptions(c),gw(()=>l._didMount(),[]),gw(()=>(o(l),l._willUpdate())),gw(()=>{s(l)}),l}function vw(e){return _w({observeElementRect:aw,observeElementOffset:lw,scrollToFn:dw,...e})}var yw=32;function bw(e){return[...new Uint8Array(e)].map(e=>e.toString(16).padStart(2,`0`)).join(``)}function xw(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<=31||n===127)return!0}return!1}var Sw=`codex://threads/`,Cw=512;function ww(e){let t=e.trim();if(t.length>Cw||t.length<=16||!t.toLowerCase().startsWith(Sw))return t;let n=t.slice(16),r=n.search(/[?#]/),i=(r===-1?n:n.slice(0,r)).replace(/\/+$/,``);return i!==``&&!/[/\s]/.test(i)?i:t}function Tw(e){let t=e.trim(),n=ww(t);return n===t?[n]:[n,t]}async function Ew(e){let t=Tw(e).filter(e=>e!==``&&!xw(e)&&e.length<=4096);return(await Promise.all(t.map(e=>crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e))))).map(e=>bw(e).slice(0,yw))}function Dw(e,t,n){if(!e)return!1;let r=Tw(t);return r.some(Boolean)?r.includes(e)?!0:n!==void 0&&n.includes(e):!1}var Ow={400:{en:{label:`Bad request`,description:`The proxy could not understand the request. Check the model, message shape, headers, and JSON body before retrying.`},fr:{label:`Requête incorrecte`,description:`Le proxy n’a pas pu comprendre la requête. Vérifiez le modèle, la structure des messages, les en-têtes et le corps JSON avant de réessayer.`},ko:{label:`잘못된 요청`,description:`프록시가 요청을 이해할 수 없습니다. 재시도 전에 모델, 메시지 형식, 헤더, JSON 본문을 확인해야 합니다.`},zh:{label:`错误请求`,description:`代理无法理解该请求。重试前请检查模型、消息结构、标头和 JSON 正文。`},"zh-TW":{label:`錯誤請求`,description:`代理無法理解該請求。重試前請檢查模型、訊息結構、標頭和 JSON 本文。`},de:{label:`Ungültige Anfrage`,description:`Der Proxy konnte die Anfrage nicht verstehen. Prüfe Modell, Nachrichtenformat, Header und JSON-Body vor einem erneuten Versuch.`},ru:{label:`Некорректный запрос`,description:`Прокси не смог интерпретировать запрос. Перед повторной попыткой проверьте модель, формат сообщений, заголовки и тело JSON.`},ja:{label:`不正なリクエスト`,description:`プロキシがリクエストを解釈できませんでした。再試行前にモデル、メッセージ形式、ヘッダー、JSON 本文を確認してください。`},tr:{label:`Hatalı istek`,description:`Proxy isteği anlayamadı. Yeniden denemeden önce modeli, mesaj yapısını, başlıkları ve JSON gövdesini kontrol edin.`},vi:{label:`Yêu cầu không hợp lệ`,description:`Proxy không thể hiểu yêu cầu. Hãy kiểm tra model, cấu trúc tin nhắn, header và nội dung JSON trước khi thử lại.`},pt:{label:`Requisição inválida`,description:`O proxy não conseguiu entender a requisição. Verifique o modelo, a estrutura das mensagens, os cabeçalhos e o corpo JSON antes de tentar novamente.`}},401:{en:{label:`Unauthorized`,description:`Credentials are missing, expired, or invalid. Re-login or refresh the account/provider credentials used by opencodex.`},fr:{label:`Non autorisé`,description:`Les identifiants sont absents, expirés ou non valides. Reconnectez-vous ou actualisez les identifiants du compte ou du fournisseur utilisés par opencodex.`},ko:{label:`인증 필요`,description:`자격 증명이 없거나 만료되었거나 유효하지 않습니다. opencodex에서 사용하는 계정 또는 제공자 자격 증명을 다시 로그인하거나 갱신해야 합니다.`},zh:{label:`未授权`,description:`凭据缺失、已过期或无效。请重新登录,或刷新 opencodex 使用的账号/提供商凭据。`},"zh-TW":{label:`未授權`,description:`憑證缺失、已過期或無效。請重新登入,或重新整理 opencodex 使用的帳號/供應商憑證。`},de:{label:`Nicht autorisiert`,description:`Anmeldedaten fehlen, sind abgelaufen oder ungültig. Melde dich erneut an oder aktualisiere die von opencodex genutzten Konto-/Anbieter-Zugangsdaten.`},ru:{label:`Не авторизован`,description:`Учётные данные отсутствуют, истекли или недействительны. Войдите заново или обновите учётные данные аккаунта или провайдера, которые использует opencodex.`},ja:{label:`認証が必要`,description:`認証情報が不在・期限切れ・無効です。opencodex が使用するアカウントまたはプロバイダー認証情報を再ログインまたは更新してください。`},tr:{label:`Yetkisiz erişim`,description:`Kimlik bilgileri eksik, süresi dolmuş veya geçersiz. opencodex tarafından kullanılan hesap veya sağlayıcı kimlik bilgilerini yeniden doğrulayın.`},vi:{label:`Chưa xác thực`,description:`Thông tin xác thực bị thiếu, đã hết hạn hoặc không hợp lệ. Hãy đăng nhập lại hoặc làm mới thông tin xác thực của tài khoản hay nhà cung cấp mà opencodex sử dụng.`},pt:{label:`Não autorizado`,description:`As credenciais estão ausentes, expiradas ou inválidas. Faça login novamente ou atualize as credenciais da conta/provedor usadas pelo opencodex.`}},402:{en:{label:`Payment required`,description:`The upstream provider rejected the request because billing, credits, or plan access is not available. Add credits, update billing, or switch provider.`},fr:{label:`Paiement requis`,description:`Le fournisseur en amont a rejeté la requête, car la facturation, les crédits ou l’accès à l’offre ne sont pas disponibles. Ajoutez des crédits, mettez à jour la facturation ou changez de fournisseur.`},ko:{label:`결제 필요`,description:`청구, 크레딧, 플랜 접근 권한 문제로 업스트림 제공자가 요청을 거부했습니다. 크레딧 추가, 결제 정보 갱신, 제공자 전환이 필요합니다.`},zh:{label:`需要付款`,description:`上游提供商因账单、额度或套餐权限不可用而拒绝了请求。请充值、更新账单信息或切换提供商。`},"zh-TW":{label:`需要付款`,description:`上游供應商因帳單、額度或方案許可權不可用而拒絕了請求。請儲值、更新帳單資訊或切換供應商。`},de:{label:`Zahlung erforderlich`,description:`Der Upstream-Anbieter hat die Anfrage abgelehnt, weil Abrechnung, Guthaben oder Planzugriff nicht verfügbar ist. Guthaben aufladen, Abrechnung aktualisieren oder Anbieter wechseln.`},ru:{label:`Требуется оплата`,description:`Вышестоящий провайдер отклонил запрос из-за проблем с оплатой, кредитами или доступом по тарифному плану. Пополните баланс, обновите платёжные данные или переключитесь на другого провайдера.`},ja:{label:`支払いが必要`,description:`課金、クレジット、プランアクセスが利用できないため上流プロバイダーがリクエストを拒否しました。クレジット追加、支払い情報更新、プロバイダー切替が必要です。`},tr:{label:`Ödeme gerekli`,description:`Yukarı akış sağlayıcısı faturalandırma, kredi veya plan erişimi bulunmadığından isteği reddetti. Kredi ekleyin, ödeme bilgilerini güncelleyin veya sağlayıcı değiştirin.`},vi:{label:`Yêu cầu thanh toán`,description:`Nhà cung cấp upstream đã từ chối yêu cầu vì không có quyền truy cập thanh toán, tín dụng hoặc gói dịch vụ. Hãy thêm tín dụng, cập nhật thanh toán hoặc đổi nhà cung cấp.`},pt:{label:`Pagamento necessário`,description:`O provedor upstream rejeitou a requisição porque faturamento, créditos ou acesso ao plano não estão disponíveis. Adicione créditos, atualize o faturamento ou troque de provedor.`}},403:{en:{label:`Forbidden`,description:`The account is authenticated but not allowed to use this model or operation. Often a plan/subscription gate (e.g. Ollama Cloud Pro), org policy, or model permission — not necessarily a bad API key.`},fr:{label:`Accès interdit`,description:`Le compte est authentifié, mais n’est pas autorisé à utiliser ce modèle ou cette opération. Il s’agit souvent d’une restriction liée à l’offre ou à l’abonnement (p. ex. Ollama Cloud Pro), à la politique de l’organisation ou aux autorisations du modèle — pas nécessairement d’une clé API incorrecte.`},ko:{label:`권한 없음`,description:`계정 인증은 되었지만 이 모델 또는 작업을 사용할 권한이 없습니다. 플랜/구독 제한(예: Ollama Cloud Pro), 조직 정책, 모델 권한 문제인 경우가 많으며 API 키가 잘못된 것은 아닐 수 있습니다.`},zh:{label:`禁止访问`,description:`账号已认证,但无权使用此模型或操作。常见原因是套餐/订阅限制(例如 Ollama Cloud Pro)、组织策略或模型权限——不一定是 API 密钥无效。`},"zh-TW":{label:`禁止存取`,description:`帳號已認證,但無權使用此模型或操作。常見原因是方案/訂閱限制(例如 Ollama Cloud Pro)、組織策略或模型許可權——不一定是 API 金鑰無效。`},de:{label:`Verboten`,description:`Das Konto ist authentifiziert, darf dieses Modell oder diese Operation aber nicht nutzen. Oft Plan-/Abo-Sperre (z. B. Ollama Cloud Pro), Organisationsrichtlinie oder Modellrecht — nicht zwingend ein ungültiger API-Key.`},ru:{label:`Доступ запрещён`,description:`Аккаунт аутентифицирован, но не имеет права использовать эту модель или операцию. Часто причина — ограничение тарифа или подписки (например, Ollama Cloud Pro), политика организации или права доступа к модели, а не обязательно неверный API-ключ.`},ja:{label:`アクセス禁止`,description:`アカウントは認証済みですがこのモデルや操作の使用が許可されていません。多くはプラン/サブスクリプション制限(例: Ollama Cloud Pro)、組織ポリシー、モデル権限であり、API キーが不正とは限りません。`},tr:{label:`Erişim yasaklandı`,description:`Hesabın kimliği doğrulandı ancak bu modeli veya işlemi kullanma izni yok. Genellikle plan/abonelik sınırı (örn. Ollama Cloud Pro), organizasyon politikası veya model izni kaynaklıdır.`},vi:{label:`Bị cấm`,description:`Tài khoản đã được xác thực nhưng không được phép dùng model hoặc thao tác này. Nguyên nhân thường là giới hạn gói hoặc thuê bao (ví dụ Ollama Cloud Pro), chính sách tổ chức hay quyền model — không nhất thiết do API key sai.`},pt:{label:`Acesso negado`,description:`A conta está autenticada, mas não tem permissão para usar este modelo ou esta operação. Costuma ser limite de plano/assinatura (ex.: Ollama Cloud Pro), política da organização ou permissão do modelo — não necessariamente uma API key inválida.`}},404:{en:{label:`Not found`,description:`The requested route, model, account, or upstream resource was not found. Verify the model name and opencodex provider configuration.`},fr:{label:`Introuvable`,description:`La route, le modèle, le compte ou la ressource en amont demandés sont introuvables. Vérifiez le nom du modèle et la configuration du fournisseur opencodex.`},ko:{label:`찾을 수 없음`,description:`요청한 경로, 모델, 계정 또는 업스트림 리소스를 찾을 수 없습니다. 모델 이름과 opencodex 제공자 설정을 확인해야 합니다.`},zh:{label:`未找到`,description:`找不到请求的路由、模型、账号或上游资源。请确认模型名称和 opencodex 提供商配置。`},"zh-TW":{label:`未找到`,description:`找不到請求的路由、模型、帳號或上游資源。請確認模型名稱和 opencodex 供應商配置。`},de:{label:`Nicht gefunden`,description:`Die angeforderte Route, das Modell, das Konto oder die Upstream-Ressource wurde nicht gefunden. Prüfe Modellname und opencodex-Anbieterkonfiguration.`},ru:{label:`Не найдено`,description:`Запрошенный маршрут, модель, аккаунт или вышестоящий ресурс не найден. Проверьте имя модели и конфигурацию провайдера в opencodex.`},ja:{label:`見つかりません`,description:`要求されたルート、モデル、アカウント、上流リソースが見つかりませんでした。モデル名と opencodex プロバイダー設定を確認してください。`},tr:{label:`Bulunamadı`,description:`İstenen rota, model, hesap veya yukarı akış kaynağı bulunamadı. Model adını ve opencodex sağlayıcı yapılandırmasını doğrulayın.`},vi:{label:`Không tìm thấy`,description:`Không tìm thấy endpoint, model hoặc tài nguyên được yêu cầu. Hãy kiểm tra base URL, tên model và đường dẫn yêu cầu.`},pt:{label:`Não encontrado`,description:`A rota, o modelo, a conta ou o recurso upstream solicitado não foi encontrado. Verifique o nome do modelo e a configuração do provedor no opencodex.`}},408:{en:{label:`Request timeout`,description:`The request took too long before the proxy or upstream provider could complete it. Retry with a smaller request or a different provider.`},fr:{label:`Délai d’attente de la requête dépassé`,description:`La requête a pris trop de temps pour que le proxy ou le fournisseur en amont puisse la traiter. Réessayez avec une requête plus petite ou un autre fournisseur.`},ko:{label:`요청 시간 초과`,description:`프록시 또는 업스트림 제공자가 요청을 완료하기 전에 시간이 초과되었습니다. 더 작은 요청으로 재시도하거나 다른 제공자로 전환해야 합니다.`},zh:{label:`请求超时`,description:`代理或上游提供商未能在限定时间内完成请求。请缩小请求后重试,或切换提供商。`},"zh-TW":{label:`請求逾時`,description:`代理或上游供應商未能在限定時間內完成請求。請縮小請求後重試,或切換供應商。`},de:{label:`Anfrage-Timeout`,description:`Die Anfrage dauerte zu lange, bevor Proxy oder Upstream-Anbieter sie abschließen konnten. Mit kleinerer Anfrage oder anderem Anbieter erneut versuchen.`},ru:{label:`Тайм-аут запроса`,description:`Обработка запроса заняла слишком много времени, и прокси или вышестоящий провайдер не успел её завершить. Повторите попытку с меньшим запросом или через другого провайдера.`},ja:{label:`リクエストタイムアウト`,description:`プロキシまたは上流プロバイダーがリクエストを完了する前に時間切れになりました。より小さいリクエストで再試行するか、別のプロバイダーに切り替えてください。`},tr:{label:`İstek zaman aşımı`,description:`Proxy veya yukarı akış sağlayıcısı isteği tamamlayamadan zaman aşımına uğradı. Daha küçük bir istek veya farklı bir sağlayıcı ile tekrar deneyin.`},vi:{label:`Yêu cầu hết thời gian chờ`,description:`Yêu cầu không hoàn tất trước thời hạn. Hãy thử lại với yêu cầu nhỏ hơn hoặc kiểm tra kết nối mạng.`},pt:{label:`Tempo limite da requisição`,description:`A requisição demorou demais para o proxy ou o provedor upstream concluí-la. Tente novamente com uma requisição menor ou outro provedor.`}},409:{en:{label:`Conflict`,description:`The request conflicts with the current account, session, or provider state. Refresh the session or retry after the active operation finishes.`},fr:{label:`Conflit`,description:`La requête entre en conflit avec l’état actuel du compte, de la session ou du fournisseur. Actualisez la session ou réessayez une fois l’opération en cours terminée.`},ko:{label:`상태 충돌`,description:`요청이 현재 계정, 세션 또는 제공자 상태와 충돌합니다. 세션을 갱신하거나 진행 중인 작업이 끝난 뒤 재시도해야 합니다.`},zh:{label:`状态冲突`,description:`请求与当前账号、会话或提供商状态冲突。请刷新会话,或等待当前操作完成后重试。`},"zh-TW":{label:`狀態衝突`,description:`請求與當前帳號、會話或供應商狀態衝突。請重新整理會話,或等待當前操作完成後重試。`},de:{label:`Konflikt`,description:`Die Anfrage kollidiert mit dem aktuellen Konto-, Sitzungs- oder Anbieterstatus. Sitzung aktualisieren oder nach Abschluss der laufenden Operation erneut versuchen.`},ru:{label:`Конфликт`,description:`Запрос конфликтует с текущим состоянием аккаунта, сессии или провайдера. Обновите сессию или повторите попытку после завершения текущей операции.`},ja:{label:`状態の衝突`,description:`リクエストが現在のアカウント、セッション、プロバイダー状態と衝突しています。セッションを更新するか、進行中の操作が終わった後に再試行してください。`},tr:{label:`Durum çakışması`,description:`İstek mevcut hesap, oturum veya sağlayıcı durumuyla çakışıyor. Oturumu yenileyin veya aktif işlem bittikten sonra tekrar deneyin.`},vi:{label:`Xung đột`,description:`Yêu cầu xung đột với trạng thái hiện tại của tài nguyên hoặc tài khoản. Hãy làm mới trạng thái rồi thử lại.`},pt:{label:`Conflito`,description:`A requisição conflita com o estado atual da conta, da sessão ou do provedor. Atualize a sessão ou tente novamente quando a operação ativa terminar.`}},413:{en:{label:`Request too large`,description:`The prompt, attachments, or generated payload exceeds a proxy or upstream limit. Reduce tokens, file size, or conversation history.`},fr:{label:`Requête trop volumineuse`,description:`L’invite, les pièces jointes ou la charge utile générée dépassent une limite du proxy ou du fournisseur en amont. Réduisez le nombre de jetons, la taille des fichiers ou l’historique de la conversation.`},ko:{label:`요청 과대`,description:`프롬프트, 첨부 파일 또는 생성 페이로드가 프록시나 업스트림 한도를 초과했습니다. 토큰, 파일 크기, 대화 기록을 줄여야 합니다.`},zh:{label:`请求过大`,description:`提示、附件或生成的负载超过了代理或上游限制。请减少 token、文件大小或对话历史。`},"zh-TW":{label:`請求過大`,description:`提示、附件或生成的負載超過了代理或上游限制。請減少 token、檔案大小或對話歷史。`},de:{label:`Anfrage zu groß`,description:`Prompt, Anhänge oder generierte Nutzlast überschreiten ein Proxy- oder Upstream-Limit. Tokens, Dateigröße oder Verlauf reduzieren.`},ru:{label:`Слишком большой запрос`,description:`Промпт, вложения или сформированная полезная нагрузка превышают лимит прокси или вышестоящего провайдера. Сократите количество токенов, размер файлов или историю диалога.`},ja:{label:`リクエストが大きすぎます`,description:`プロンプト、添付ファイル、生成ペイロードがプロキシまたは上流の制限を超えました。トークン、ファイルサイズ、会話履歴を減らしてください。`},tr:{label:`İstek çok büyük`,description:`İstemi, ekler veya oluşturulan veri proxy ya da yukarı akış sınırını aşıyor. Jeton sayısını, dosya boyutunu veya sohbet geçmişini azaltın.`},vi:{label:`Nội dung quá lớn`,description:`Nội dung yêu cầu vượt quá giới hạn của proxy hoặc nhà cung cấp. Hãy giảm kích thước tin nhắn, tệp hoặc ngữ cảnh rồi thử lại.`},pt:{label:`Requisição grande demais`,description:`O prompt, os anexos ou o conteúdo gerado excedem um limite do proxy ou do upstream. Reduza tokens, tamanho de arquivos ou histórico da conversa.`}},422:{en:{label:`Invalid content`,description:`The provider accepted the request format but rejected its contents. Check model options, tool definitions, message roles, and unsupported fields.`},fr:{label:`Contenu non valide`,description:`Le fournisseur a accepté le format de la requête, mais en a rejeté le contenu. Vérifiez les options du modèle, les définitions des outils, les rôles des messages et les champs non pris en charge.`},ko:{label:`내용 검증 실패`,description:`제공자가 요청 형식은 받았지만 내용을 거부했습니다. 모델 옵션, 도구 정의, 메시지 역할, 지원되지 않는 필드를 확인해야 합니다.`},zh:{label:`内容无效`,description:`提供商接受了请求格式,但拒绝了其中的内容。请检查模型选项、工具定义、消息角色和不支持的字段。`},"zh-TW":{label:`內容無效`,description:`供應商接受了請求格式,但拒絕了其中的內容。請檢查模型選項、工具定義、訊息角色和不支援的欄位。`},de:{label:`Ungültiger Inhalt`,description:`Der Anbieter akzeptierte das Anfrageformat, lehnte den Inhalt aber ab. Prüfe Modelloptionen, Tool-Definitionen, Nachrichtenrollen und nicht unterstützte Felder.`},ru:{label:`Недопустимое содержимое`,description:`Провайдер принял формат запроса, но отклонил его содержимое. Проверьте параметры модели, определения инструментов, роли сообщений и неподдерживаемые поля.`},ja:{label:`内容の検証失敗`,description:`プロバイダーはリクエスト形式を受け付けましたが内容を拒否しました。モデルオプション、ツール定義、メッセージロール、未サポートのフィールドを確認してください。`},tr:{label:`Geçersiz içerik`,description:`Sağlayıcı istek formatını kabul etti ancak içeriğini reddetti. Model seçeneklerini, araç tanımlarını, mesaj rollerini ve desteklenmeyen alanları kontrol edin.`},vi:{label:`Yêu cầu không thể xử lý`,description:`Yêu cầu có cú pháp hợp lệ nhưng chứa giá trị hoặc tổ hợp tùy chọn mà model hay nhà cung cấp không hỗ trợ.`},pt:{label:`Conteúdo inválido`,description:`O provedor aceitou o formato da requisição, mas rejeitou o conteúdo. Verifique as opções do modelo, as definições de ferramentas, os papéis das mensagens e campos não suportados.`}},424:{en:{label:`Provider dependency failed`,description:`A required upstream dependency failed while opencodex was routing the request. Retry later or switch to another configured provider.`},fr:{label:`Échec d’une dépendance du fournisseur`,description:`Une dépendance en amont requise a échoué pendant le routage de la requête par opencodex. Réessayez plus tard ou sélectionnez un autre fournisseur configuré.`},ko:{label:`제공자 의존성 실패`,description:`opencodex가 요청을 라우팅하는 동안 필요한 업스트림 의존성이 실패했습니다. 나중에 재시도하거나 다른 설정된 제공자로 전환해야 합니다.`},zh:{label:`提供商依赖失败`,description:`opencodex 路由请求时,必需的上游依赖失败。请稍后重试,或切换到另一个已配置的提供商。`},"zh-TW":{label:`供應商依賴失敗`,description:`opencodex 路由請求時,必需的上游依賴失敗。請稍後重試,或切換到另一個已配置的供應商。`},de:{label:`Anbieter-Abhängigkeit fehlgeschlagen`,description:`Eine erforderliche Upstream-Abhängigkeit ist fehlgeschlagen, während opencodex die Anfrage geroutet hat. Später erneut versuchen oder zu einem anderen Anbieter wechseln.`},ru:{label:`Сбой зависимости провайдера`,description:`Необходимая вышестоящая зависимость дала сбой, пока opencodex маршрутизировал запрос. Повторите попытку позже или переключитесь на другого настроенного провайдера.`},ja:{label:`プロバイダー依存の失敗`,description:`opencodex がリクエストをルーティング中に必要な上流依存が失敗しました。後で再試行するか、別の設定済みプロバイダーに切り替えてください。`},tr:{label:`Sağlayıcı bağımlılığı başarısız`,description:`opencodex isteği yönlendirirken gerekli bir yukarı akış bağımlılığı başarısız oldu. Daha sonra tekrar deneyin veya başka bir sağlayıcıya geçin.`},vi:{label:`Phụ thuộc thất bại`,description:`Không thể hoàn tất yêu cầu vì một dịch vụ phụ thuộc hoặc thao tác upstream đã thất bại. Hãy kiểm tra lỗi liên quan rồi thử lại.`},pt:{label:`Falha em dependência do provedor`,description:`Uma dependência upstream necessária falhou enquanto o opencodex roteava a requisição. Tente novamente mais tarde ou troque para outro provedor configurado.`}},429:{en:{label:`Rate limited`,description:`The upstream provider rate or quota limit has been reached. Wait for the quota window to reset or switch account/provider.`},fr:{label:`Limite de débit atteinte`,description:`La limite de débit ou de quota du fournisseur en amont a été atteinte. Attendez la réinitialisation de la fenêtre de quota ou changez de compte ou de fournisseur.`},ko:{label:`한도 초과`,description:`업스트림 제공자의 속도 또는 할당량 한도에 도달했습니다. 한도 창이 초기화될 때까지 기다리거나 계정/제공자를 전환해야 합니다.`},zh:{label:`限流`,description:`已达到上游提供商的速率或额度限制。请等待额度窗口重置,或切换账号/提供商。`},"zh-TW":{label:`限流`,description:`已達到上游供應商的速率或額度限制。請等待額度視窗重設,或切換帳號/供應商。`},de:{label:`Ratenlimit erreicht`,description:`Das Raten- oder Kontingentlimit des Upstream-Anbieters ist erreicht. Auf Reset des Kontingentfensters warten oder Konto/Anbieter wechseln.`},ru:{label:`Превышен лимит запросов`,description:`Достигнут лимит скорости или квота вышестоящего провайдера. Дождитесь сброса окна квоты или переключитесь на другой аккаунт или провайдера.`},ja:{label:`レート制限`,description:`上流プロバイダーのレートまたはクォータ制限に達しました。クォータウィンドウがリセットされるまで待つか、アカウント/プロバイダーを切り替えてください。`},tr:{label:`Oran sınırı aşıldı`,description:`Yukarı akış sağlayıcısının hız veya kota sınırına ulaşıldı. Kota penceresinin sıfırlanmasını bekleyin ya da hesap/sağlayıcı değiştirin.`},vi:{label:`Quá nhiều yêu cầu`,description:`Tài khoản hoặc nhà cung cấp đã đạt giới hạn tốc độ hay hạn ngạch. Hãy chờ thời gian Retry-After, đổi tài khoản hoặc đổi nhà cung cấp.`},pt:{label:`Limite de requisições excedido`,description:`O limite de taxa ou de cota do provedor upstream foi atingido. Aguarde a janela de cota reiniciar ou troque de conta/provedor.`}},499:{en:{label:`Client closed request`,description:`The client disconnected or canceled the request before opencodex finished routing it. Retry if the cancellation was accidental.`},fr:{label:`Requête fermée par le client`,description:`Le client s’est déconnecté ou a annulé la requête avant la fin de son routage par opencodex. Réessayez si l’annulation était involontaire.`},ko:{label:`클라이언트 취소`,description:`opencodex가 라우팅을 끝내기 전에 클라이언트 연결이 끊기거나 요청이 취소되었습니다. 의도한 취소가 아니면 다시 시도해야 합니다.`},zh:{label:`客户端已取消`,description:`opencodex 完成路由前,客户端已断开连接或取消请求。如果不是有意取消,请重试。`},"zh-TW":{label:`客戶端已取消`,description:`opencodex 完成路由前,客戶端已斷開連線或取消請求。如果不是有意取消,請重試。`},de:{label:`Client hat Anfrage geschlossen`,description:`Der Client hat die Verbindung getrennt oder die Anfrage abgebrochen, bevor opencodex das Routing abgeschlossen hat. Bei versehentlichem Abbruch erneut versuchen.`},ru:{label:`Запрос закрыт клиентом`,description:`Клиент отключился или отменил запрос до того, как opencodex завершил его маршрутизацию. Если отмена была случайной, повторите попытку.`},ja:{label:`クライアントがリクエストをクローズ`,description:`opencodex がルーティングを終える前にクライアントが切断またはキャンセルしました。意図しないキャンセルなら再試行してください。`},tr:{label:`İstemci isteği kapattı`,description:`opencodex yönlendirmeyi bitirmeden önce istemci bağlantıyı kesti veya isteği iptal etti. İptal kazara yapıldıysa tekrar deneyin.`},vi:{label:`Máy khách đã đóng yêu cầu`,description:`Máy khách đã ngắt kết nối hoặc hủy yêu cầu trước khi opencodex định tuyến xong. Nếu không chủ ý hủy, hãy thử lại.`},pt:{label:`Requisição encerrada pelo cliente`,description:`O cliente desconectou ou cancelou a requisição antes de o opencodex terminar de rotear. Tente novamente se o cancelamento foi acidental.`}},500:{en:{label:`Proxy error`,description:`opencodex hit an internal error while handling the request. Retry once, then check proxy logs if it repeats.`},fr:{label:`Erreur du proxy`,description:`opencodex a rencontré une erreur interne lors du traitement de la requête. Réessayez une fois, puis consultez les journaux du proxy si l’erreur se reproduit.`},ko:{label:`프록시 오류`,description:`opencodex가 요청을 처리하는 동안 내부 오류가 발생했습니다. 한 번 재시도하고 반복되면 프록시 로그를 확인해야 합니다.`},zh:{label:`代理错误`,description:`opencodex 处理请求时发生内部错误。请先重试一次;如果重复出现,请检查代理日志。`},"zh-TW":{label:`代理錯誤`,description:`opencodex 處理請求時發生內部錯誤。請先重試一次;如果重複出現,請檢查代理日誌。`},de:{label:`Proxy-Fehler`,description:`opencodex ist bei der Anfragebearbeitung auf einen internen Fehler gestoßen. Einmal erneut versuchen, bei Wiederholung Proxy-Logs prüfen.`},ru:{label:`Ошибка прокси`,description:`В opencodex произошла внутренняя ошибка при обработке запроса. Повторите попытку один раз; если ошибка повторяется, проверьте логи прокси.`},ja:{label:`プロキシエラー`,description:`opencodex がリクエスト処理中に内部エラーに遭遇しました。1 回再試行し、繰り返す場合はプロキシログを確認してください。`},tr:{label:`Proxy hatası`,description:`opencodex isteği işlerken dahili bir hatayla karşılaştı. Bir kez tekrar deneyin, tekrarlarsa proxy günlüklerini kontrol edin.`},vi:{label:`Lỗi proxy`,description:`opencodex gặp lỗi nội bộ khi xử lý yêu cầu. Hãy thử lại một lần, rồi kiểm tra log proxy nếu lỗi lặp lại.`},pt:{label:`Erro do proxy`,description:`O opencodex encontrou um erro interno ao tratar a requisição. Tente novamente uma vez; se repetir, verifique os logs do proxy.`}},502:{en:{label:`Bad upstream response`,description:`The upstream provider returned an invalid or failed response through the proxy. Retry or route the request to another provider.`},fr:{label:`Réponse incorrecte du fournisseur en amont`,description:`Le fournisseur en amont a renvoyé une réponse non valide ou en échec par l’intermédiaire du proxy. Réessayez ou acheminez la requête vers un autre fournisseur.`},ko:{label:`업스트림 응답 오류`,description:`업스트림 제공자가 프록시를 통해 유효하지 않거나 실패한 응답을 반환했습니다. 재시도하거나 다른 제공자로 라우팅해야 합니다.`},zh:{label:`上游响应错误`,description:`上游提供商通过代理返回了无效或失败的响应。请重试,或将请求路由到其他提供商。`},"zh-TW":{label:`上游回應錯誤`,description:`上游供應商透過代理返回了無效或失敗的回應。請重試,或將請求路由到其他供應商。`},de:{label:`Ungültige Upstream-Antwort`,description:`Der Upstream-Anbieter lieferte über den Proxy eine ungültige oder fehlgeschlagene Antwort. Erneut versuchen oder zu einem anderen Anbieter routen.`},ru:{label:`Некорректный ответ провайдера`,description:`Вышестоящий провайдер вернул через прокси недействительный или ошибочный ответ. Повторите попытку или направьте запрос другому провайдеру.`},ja:{label:`上流レスポンス不良`,description:`上流プロバイダーがプロキシ経由で無効または失敗したレスポンスを返しました。再試行するか、リクエストを別のプロバイダーにルーティングしてください。`},tr:{label:`Kötü yukarı akış yanıtı`,description:`Yukarı akış sağlayıcısı proxy üzerinden geçersiz veya başarısız bir yanıt döndürdü. Tekrar deneyin veya isteği başka bir sağlayıcıya yönlendirin.`},vi:{label:`Phản hồi upstream không hợp lệ`,description:`Nhà cung cấp upstream trả về phản hồi không hợp lệ hoặc thất bại qua proxy. Hãy thử lại hoặc định tuyến yêu cầu sang nhà cung cấp khác.`},pt:{label:`Resposta upstream inválida`,description:`O provedor upstream retornou uma resposta inválida ou com falha através do proxy. Tente novamente ou roteie a requisição para outro provedor.`}},503:{en:{label:`Provider unavailable`,description:`The proxy or upstream provider is temporarily unavailable or overloaded. Wait briefly, then retry or switch provider.`},fr:{label:`Fournisseur indisponible`,description:`Le proxy ou le fournisseur en amont est temporairement indisponible ou surchargé. Patientez un instant, puis réessayez ou changez de fournisseur.`},ko:{label:`제공자 사용 불가`,description:`프록시 또는 업스트림 제공자가 일시적으로 사용할 수 없거나 과부하 상태입니다. 잠시 기다린 뒤 재시도하거나 제공자를 전환해야 합니다.`},zh:{label:`提供商不可用`,description:`代理或上游提供商暂时不可用或过载。请稍后重试,或切换提供商。`},"zh-TW":{label:`供應商不可用`,description:`代理或上游供應商暫時不可用或過載。請稍後重試,或切換供應商。`},de:{label:`Anbieter nicht verfügbar`,description:`Proxy oder Upstream-Anbieter ist vorübergehend nicht verfügbar oder überlastet. Kurz warten, dann erneut versuchen oder Anbieter wechseln.`},ru:{label:`Провайдер недоступен`,description:`Прокси или вышестоящий провайдер временно недоступен или перегружен. Немного подождите, затем повторите попытку или смените провайдера.`},ja:{label:`プロバイダー利用不可`,description:`プロキシまたは上流プロバイダーが一時的に利用不可または過負荷です。少し待ってから再試行するか、プロバイダーを切り替えてください。`},tr:{label:`Sağlayıcı kullanılamıyor`,description:`Proxy veya yukarı akış sağlayıcısı geçici olarak kullanılamıyor veya aşırı yüklü. Kısa bir süre bekleyip tekrar deneyin ya da sağlayıcı değiştirin.`},vi:{label:`Nhà cung cấp không khả dụng`,description:`Proxy hoặc nhà cung cấp upstream tạm thời không khả dụng hay đang quá tải. Hãy chờ một lát rồi thử lại hoặc đổi nhà cung cấp.`},pt:{label:`Provedor indisponível`,description:`O proxy ou o provedor upstream está temporariamente indisponível ou sobrecarregado. Aguarde um instante e tente novamente, ou troque de provedor.`}},504:{en:{label:`Upstream timeout`,description:`The upstream provider did not respond before the proxy timeout. Retry with a smaller request or choose a faster provider.`},fr:{label:`Délai d’attente du fournisseur en amont dépassé`,description:`Le fournisseur en amont n’a pas répondu avant l’expiration du délai du proxy. Réessayez avec une requête plus petite ou choisissez un fournisseur plus rapide.`},ko:{label:`업스트림 시간 초과`,description:`프록시 시간 제한 전에 업스트림 제공자가 응답하지 않았습니다. 더 작은 요청으로 재시도하거나 더 빠른 제공자를 선택해야 합니다.`},zh:{label:`上游超时`,description:`上游提供商未在代理超时前响应。请缩小请求后重试,或选择响应更快的提供商。`},"zh-TW":{label:`上游逾時`,description:`上游供應商未在代理逾時前回應。請縮小請求後重試,或選擇回應更快的供應商。`},de:{label:`Upstream-Timeout`,description:`Der Upstream-Anbieter antwortete nicht vor dem Proxy-Timeout. Mit kleinerer Anfrage erneut versuchen oder schnelleren Anbieter wählen.`},ru:{label:`Тайм-аут вышестоящего провайдера`,description:`Вышестоящий провайдер не ответил до истечения тайм-аута прокси. Повторите попытку с меньшим запросом или выберите более быстрого провайдера.`},ja:{label:`上流タイムアウト`,description:`上流プロバイダーがプロキシタイムアウト前に応答しませんでした。より小さいリクエストで再試行するか、より速いプロバイダーを選んでください。`},tr:{label:`Yukarı akış zaman aşımı`,description:`Yukarı akış sağlayıcısı proxy zaman aşımı süresinden önce yanıt vermedi. Daha küçük bir istekle tekrar deneyin veya daha hızlı bir sağlayıcı seçin.`},vi:{label:`Upstream hết thời gian chờ`,description:`Nhà cung cấp upstream không phản hồi trước thời hạn của proxy. Hãy thử lại với yêu cầu nhỏ hơn hoặc chọn nhà cung cấp nhanh hơn.`},pt:{label:`Tempo limite do upstream`,description:`O provedor upstream não respondeu antes do tempo limite do proxy. Tente novamente com uma requisição menor ou escolha um provedor mais rápido.`}},529:{en:{label:`Provider overloaded`,description:`The upstream provider is overloaded or capacity-limited. Wait and retry, or switch to another account/provider.`},fr:{label:`Fournisseur surchargé`,description:`Le fournisseur en amont est surchargé ou sa capacité est limitée. Patientez et réessayez, ou changez de compte ou de fournisseur.`},ko:{label:`제공자 과부하`,description:`업스트림 제공자가 과부하 상태이거나 처리 용량이 제한되었습니다. 기다렸다가 재시도하거나 다른 계정/제공자로 전환해야 합니다.`},zh:{label:`提供商过载`,description:`上游提供商过载或容量受限。请等待后重试,或切换到其他账号/提供商。`},"zh-TW":{label:`供應商過載`,description:`上游供應商過載或容量受限。請等待後重試,或切換到其他帳號/供應商。`},de:{label:`Anbieter überlastet`,description:`Der Upstream-Anbieter ist überlastet oder kapazitätsbegrenzt. Warten und erneut versuchen oder anderes Konto/Anbieter nutzen.`},ru:{label:`Провайдер перегружен`,description:`Вышестоящий провайдер перегружен или ограничен по мощности. Подождите и повторите попытку либо переключитесь на другой аккаунт или провайдера.`},ja:{label:`プロバイダー過負荷`,description:`上流プロバイダーが過負荷または容量制限されています。待ってから再試行するか、別のアカウント/プロバイダーに切り替えてください。`},tr:{label:`Sağlayıcı aşırı yüklü`,description:`Yukarı akış sağlayıcısı aşırı yüklü veya kapasitesi sınırlı. Bekleyip tekrar deneyin veya başka bir hesap/sağlayıcıya geçin.`},vi:{label:`Nhà cung cấp quá tải`,description:`Nhà cung cấp upstream đang quá tải hoặc bị giới hạn công suất. Hãy chờ rồi thử lại, hoặc đổi sang tài khoản hay nhà cung cấp khác.`},pt:{label:`Provedor sobrecarregado`,description:`O provedor upstream está sobrecarregado ou com capacidade limitada. Aguarde e tente novamente, ou troque para outra conta/provedor.`}}},kw={client:{en:{label:`Request error`,description:`The proxy or upstream provider rejected the request. Check the request shape, credentials, model name, and provider configuration.`},fr:{label:`Erreur de requête`,description:`Le proxy ou le fournisseur en amont a rejeté la requête. Vérifiez sa structure, les identifiants, le nom du modèle et la configuration du fournisseur.`},ko:{label:`요청 오류`,description:`프록시 또는 업스트림 제공자가 요청을 거부했습니다. 요청 형식, 자격 증명, 모델 이름, 제공자 설정을 확인해야 합니다.`},zh:{label:`请求错误`,description:`代理或上游提供商拒绝了该请求。请检查请求结构、凭据、模型名称和提供商配置。`},"zh-TW":{label:`請求錯誤`,description:`代理或上游供應商拒絕了該請求。請檢查請求結構、憑證、模型名稱和供應商配置。`},de:{label:`Anfragefehler`,description:`Der Proxy oder Upstream-Anbieter hat die Anfrage abgelehnt. Prüfe Anfrageformat, Anmeldedaten, Modellname und Anbieterkonfiguration.`},ru:{label:`Ошибка запроса`,description:`Прокси или вышестоящий провайдер отклонил запрос. Проверьте структуру запроса, учётные данные, имя модели и конфигурацию провайдера.`},ja:{label:`リクエストエラー`,description:`プロキシまたは上流プロバイダーがリクエストを拒否しました。リクエスト形式、認証情報、モデル名、プロバイダー設定を確認してください。`},tr:{label:`İstek hatası`,description:`Proxy veya yukarı akış sağlayıcısı isteği reddetti. İstek yapısını, kimlik bilgilerini, model adını ve sağlayıcı yapılandırmasını kontrol edin.`},vi:{label:`Lỗi yêu cầu`,description:`Proxy hoặc nhà cung cấp upstream đã từ chối yêu cầu. Hãy kiểm tra cấu trúc yêu cầu, thông tin xác thực, tên model và cấu hình nhà cung cấp.`},pt:{label:`Erro na requisição`,description:`O proxy ou o provedor upstream rejeitou a requisição. Verifique a estrutura da requisição, as credenciais, o nome do modelo e a configuração do provedor.`}},server:{en:{label:`Server or upstream error`,description:`opencodex or an upstream provider failed while processing the request. Retry later or route the request to another provider.`},fr:{label:`Erreur du serveur ou du fournisseur en amont`,description:`opencodex ou un fournisseur en amont a échoué lors du traitement de la requête. Réessayez plus tard ou acheminez la requête vers un autre fournisseur.`},ko:{label:`서버 또는 업스트림 오류`,description:`opencodex 또는 업스트림 제공자가 요청 처리 중 실패했습니다. 나중에 재시도하거나 다른 제공자로 라우팅해야 합니다.`},zh:{label:`服务器或上游错误`,description:`opencodex 或上游提供商处理请求时失败。请稍后重试,或将请求路由到其他提供商。`},"zh-TW":{label:`伺服器或上游錯誤`,description:`opencodex 或上游供應商處理請求時失敗。請稍後重試,或將請求路由到其他供應商。`},de:{label:`Server- oder Upstream-Fehler`,description:`opencodex oder ein Upstream-Anbieter ist bei der Anfragebearbeitung fehlgeschlagen. Später erneut versuchen oder zu einem anderen Anbieter routen.`},ru:{label:`Ошибка сервера или провайдера`,description:`opencodex или вышестоящий провайдер завершил обработку запроса с ошибкой. Повторите попытку позже или направьте запрос другому провайдеру.`},ja:{label:`サーバーまたは上流エラー`,description:`opencodex または上流プロバイダーがリクエスト処理中に失敗しました。後で再試行するか、リクエストを別のプロバイダーにルーティングしてください。`},tr:{label:`Sunucu veya yukarı akış hatası`,description:`opencodex veya bir yukarı akış sağlayıcısı isteği işlerken başarısız oldu. Daha sonra tekrar deneyin veya isteği başka bir sağlayıcıya yönlendirin.`},vi:{label:`Lỗi máy chủ hoặc upstream`,description:`opencodex hoặc một nhà cung cấp upstream đã thất bại khi xử lý yêu cầu. Hãy thử lại sau hoặc định tuyến yêu cầu sang nhà cung cấp khác.`},pt:{label:`Erro do servidor ou do upstream`,description:`O opencodex ou um provedor upstream falhou ao processar a requisição. Tente novamente mais tarde ou roteie a requisição para outro provedor.`}}};function Aw(e){return e.toLowerCase().startsWith(`fr`)?`fr`:e.toLowerCase().startsWith(`vi`)?`vi`:e.toLowerCase().startsWith(`pt`)?`pt`:e===`de`||e===`ko`||e===`zh`||e===`zh-TW`||e===`ru`||e===`ja`||e===`tr`?e:`en`}function jw(e,t){if(e<400)return null;let n=Aw(t);return(Ow[Math.trunc(e)]??(e<500?kw.client:kw.server))[n]}var Mw=[`provider`,`usage`,`injection`];function Nw(e){return e>0?`[${new Date(e).toLocaleTimeString()}] `:``}function Pw(e){return new Date(e).toLocaleTimeString()}function Fw(e,t){return t===`provider`?!!e?.enabled:t===`usage`?!!e?.usage:!!e?.injection}function Iw(e,t){return t===`debug`?e.enabled:t===`usage`?e.usage:t===`injection`?e.injection:e.claude}function Lw({entries:e}){let{t:n}=t();return(0,Q.jsxs)(`div`,{className:`card`,style:{marginBottom:16,padding:`12px 14px`},children:[(0,Q.jsx)(`div`,{className:`font-semibold`,style:{marginBottom:4},children:n(`debug.claudeInbound.title`)}),(0,Q.jsx)(`div`,{className:`muted text-control`,style:{marginBottom:10},children:n(`debug.claudeInbound.sub`)}),e.length===0?(0,Q.jsx)(`div`,{className:`muted text-control`,children:n(`debug.claudeInbound.empty`)}):(0,Q.jsx)(`div`,{style:{overflowX:`auto`},children:(0,Q.jsxs)(`table`,{className:`table text-label`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:n(`debug.claudeInbound.time`)}),(0,Q.jsx)(`th`,{children:n(`debug.claudeInbound.endpoint`)}),(0,Q.jsx)(`th`,{children:n(`debug.claudeInbound.model`)}),(0,Q.jsx)(`th`,{children:`thinking`}),(0,Q.jsx)(`th`,{children:`effort`}),(0,Q.jsx)(`th`,{children:`beta`}),(0,Q.jsx)(`th`,{children:`metadata`}),(0,Q.jsx)(`th`,{children:`system`})]})}),(0,Q.jsx)(`tbody`,{children:e.map(e=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{className:`muted mono`,children:Pw(e.at)}),(0,Q.jsx)(`td`,{className:`mono`,children:e.endpoint}),(0,Q.jsxs)(`td`,{className:`mono`,title:e.resolvedModel,children:[e.model,e.resolvedModel&&e.resolvedModel!==e.model&&(0,Q.jsxs)(`span`,{className:`muted`,children:[` → `,e.resolvedModel]})]}),(0,Q.jsxs)(`td`,{className:`mono`,children:[e.thinkingType??`-`,e.thinkingBudgetTokens!==void 0&&(0,Q.jsxs)(`span`,{className:`muted`,children:[` (`,e.thinkingBudgetTokens,`)`]})]}),(0,Q.jsx)(`td`,{className:`mono`,children:e.outputConfigEffort??`-`}),(0,Q.jsx)(`td`,{className:`mono`,title:e.anthropicBeta,style:{maxWidth:160,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:e.anthropicBeta??`-`}),(0,Q.jsx)(`td`,{className:`mono`,title:e.metadataKeys?.join(`, `),children:e.hasMetadataUserId?`user_id ${e.userIdTag??``}`:n(`debug.claudeInbound.none`)}),(0,Q.jsx)(`td`,{className:`mono`,children:e.hasSystem?e.systemTag??`yes`:n(`debug.claudeInbound.none`)})]},e.id))})]})})]})}function Rw({debug:e,stream:n,streamEnabled:r,entries:i,scrollContainerRef:a,lineVirtualizer:o}){let{t:s}=t();return e?r?i.length===0?(0,Q.jsxs)(`div`,{className:`empty`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,style:{marginBottom:6},children:s(`debug.noLinesTitle`)}),(0,Q.jsx)(`div`,{className:`muted text-control`,style:{maxWidth:560,marginInline:`auto`},children:s(`debug.noLines.${n}`)})]}):(0,Q.jsx)(`div`,{ref:a,className:`log-detail-json`,style:{maxHeight:`calc(100vh - 280px)`,overflow:`auto`},children:(0,Q.jsx)(`div`,{style:{position:`relative`,height:o.getTotalSize(),width:`100%`},children:o.getVirtualItems().map(e=>(0,Q.jsx)(`div`,{ref:o.measureElement,"data-index":e.index,style:{position:`absolute`,top:0,left:0,width:`100%`,transform:`translateY(${e.start}px)`},children:`${Nw(i[e.index].at)}${i[e.index].line}`},e.key))})}):(0,Q.jsxs)(`div`,{className:`empty`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,style:{marginBottom:6},children:s(`debug.emptyTitle`)}),(0,Q.jsx)(`div`,{className:`muted text-control`,style:{maxWidth:560,marginInline:`auto`},children:s(`debug.empty`)})]}):null}function zw({debug:e,debugBusy:n,stream:r,onSetFlag:i,onReset:a,onStreamChange:o}){let{t:s}=t();return(0,Q.jsxs)(`div`,{className:`card`,style:{marginBottom:16,padding:`12px 14px`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:12,flexWrap:`wrap`},children:[(0,Q.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:16},children:[`debug`,`usage`,`injection`,`claude`].map(t=>{let r=Iw(e,t);return(0,Q.jsxs)(`div`,{style:{display:`inline-flex`,alignItems:`center`,gap:10,minWidth:220},children:[(0,Q.jsx)(on,{on:r,disabled:n,label:s(`debug.${t}`),onClick:()=>i(t,!r)}),(0,Q.jsx)(`span`,{className:`text-control`,children:s(`debug.${t}`)})]},t)})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:n,onClick:a,children:s(`debug.reset`)})]}),(e.enabled||e.usage||e.injection)&&(0,Q.jsxs)(`div`,{style:{display:`inline-flex`,gap:6,marginTop:12},children:[e.enabled&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm${r===`provider`?` btn-primary`:` btn-ghost`}`,onClick:()=>o(`provider`),children:s(`debug.streamProvider`)}),e.usage&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm${r===`usage`?` btn-primary`:` btn-ghost`}`,onClick:()=>o(`usage`),children:s(`debug.streamUsage`)}),e.injection&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm${r===`injection`?` btn-primary`:` btn-ghost`}`,onClick:()=>o(`injection`),children:s(`debug.streamInjection`)})]})]})}function Bw({embedded:e,refreshing:n,streamEnabled:r,follow:i,onRefresh:a,onFollowChange:o}){let{t:s}=t();return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:e?`row`:`page-head`,style:e?{justifyContent:`flex-end`,marginBottom:4}:void 0,children:[!e&&(0,Q.jsx)(`h2`,{children:s(`debug.title`)}),(0,Q.jsxs)(`div`,{style:{display:`inline-flex`,alignItems:`center`,gap:12},children:[(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:n||!r,onClick:a,children:[(0,Q.jsx)(re,{}),` `,s(`debug.refresh`)]}),(0,Q.jsxs)(`label`,{className:`muted text-control`,style:{cursor:`pointer`,display:`inline-flex`,alignItems:`center`,gap:6},children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:i,onChange:e=>o(e.target.checked)}),s(`debug.follow`)]})]})]}),(0,Q.jsx)(`p`,{className:`page-sub`,children:s(`debug.subtitle`)})]})}function Vw(e){return`debug-settings:${e}`}function Hw({apiBase:e,embedded:n,active:r=!0}){let{t:i}=t(),a=`ocx.debug.settings.v1:${e}`,o=Ua(a),s=Vw(e),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(`provider`),[f,p]=(0,Z.useState)([]),[m,h]=(0,Z.useState)(!0),[g,_]=(0,Z.useState)(!1),v=(0,Z.useRef)(0),y=(0,Z.useRef)(0),b=(0,Z.useRef)(0),x=(0,Z.useRef)(null),S=(0,Z.useRef)(null),C=(0,Z.useRef)(null),w=Ya(s,[e],async t=>{let n=await fetch(`${e}/api/debug`,{signal:t});if(!n.ok)throw Error(String(n.status));let r=await n.json();return qa(a,r),r},{pollMs:2e3,enabled:r,isEmpty:()=>!1,initialData:o??void 0}),T=w.state,E=w.data??o??null,D=Vt(`debug-claude-inbound:${e}`,[e,E?.claude],async t=>{let n=await fetch(`${e}/api/claude/inbound-debug`,{signal:t});if(!n.ok)return[];let r=await n.json();return Array.isArray(r.entries)?r.entries:[]},{pollMs:2e3,enabled:r&&!!E?.claude}).data??[],O=vw({count:f.length,getScrollElement:()=>S.current,estimateSize:()=>20,overscan:30,getItemKey:e=>f[e].seq}),k=(0,Z.useCallback)(e=>Fw(E,e),[E]);(0,Z.useEffect)(()=>{if(!E||k(u))return;let e=Mw.find(k);if(!e)return;let t=window.setTimeout(()=>d(e),0);return()=>window.clearTimeout(t)},[E,u,k]);let j=k(u),M=u===`provider`?`${e}/api/debug/logs`:u===`usage`?`${e}/api/debug/usage-logs`:`${e}/api/debug/injection-logs`,N=(0,Z.useCallback)(async(e,t)=>{let n=++b.current;if(!j){n===b.current&&(p([]),v.current=0);return}_(!0);try{let r=new URLSearchParams({limit:`500`});!e&&v.current>0&&r.set(`after`,String(v.current));let i=await fetch(`${M}?${r}`,{signal:t});if(!i.ok||t?.aborted||n!==b.current)return;let a=await i.json();if(t?.aborted||n!==b.current||a.length===0)return;p(t=>(e?a:[...t,...a]).slice(-2e3)),v.current=a[a.length-1].seq}catch{}finally{n===b.current&&_(!1)}},[M,j]);(0,Z.useEffect)(()=>{if(!r)return;let t=`${e}:${u}:${j}`,n=C.current!==t;if(C.current=t,!n&&f.length>0)return;v.current=0;let i=new AbortController,a=window.setTimeout(()=>{n&&p([]),N(!0,i.signal)},0);return()=>{window.clearTimeout(a),b.current+=1,i.abort()}},[r,e,u,j]);let P=(0,Z.useRef)(!1),F=(0,Z.useEffectEvent)(()=>{if(P.current)return;P.current=!0;let e=A(1e4);N(!1,e.signal).finally(()=>{e.clear(),P.current=!1})});(0,Z.useEffect)(()=>{if(!(!r||!m||!j))return ua(()=>F(),1e3)},[r,m,j]),(0,Z.useEffect)(()=>{m&&f.length>0&&O.scrollToIndex(f.length-1,{align:`end`})},[f,m,O]);let I=async t=>{let n=++y.current;l(!0);let r=async()=>{try{let r=await fetch(`${e}/api/debug`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(t)});if(!r.ok)return;let i=await r.json();if(n!==y.current)return;qa(a,i),Ut(s,i)}catch{}},i=(x.current??Promise.resolve()).then(r,r);x.current=i.then(()=>void 0,()=>void 0);try{await i}finally{n===y.current&&l(!1)}},L=async(e,t)=>{await I({[e]:t})},R=async()=>{await I({reset:!0})};return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Bw,{embedded:n,refreshing:g,streamEnabled:j,follow:m,onRefresh:()=>void N(!0),onFollowChange:h}),!E&&T.showError?(0,Q.jsxs)(`div`,{className:`notice notice-err`,role:`alert`,children:[(0,Q.jsx)(`span`,{children:i(`debug.loadFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>w.refresh(),children:i(`common.retry`)})]}):T.showSkeleton&&!E?(0,Q.jsx)(Ry,{label:i(`debug.loading`),rows:3}):E?(0,Q.jsx)(zw,{debug:E,debugBusy:c,stream:u,onSetFlag:(e,t)=>{L(e,t)},onReset:()=>{R()},onStreamChange:d}):null,E&&T.showError&&(0,Q.jsx)($,{tone:`err`,children:i(`debug.loadFailed`)}),E?.claude&&(0,Q.jsx)(Lw,{entries:D}),(0,Q.jsx)(Rw,{debug:!!E,stream:u,streamEnabled:j,entries:f,scrollContainerRef:S,lineVirtualizer:O})]})}function Uw(e,t){return t===`all`?!0:t===`claude`?e.surface===`claude`||e.surface===`claude-desktop`:t===`grok`?e.surface===`grok`:e.surface===void 0}var Ww=[`all`,`native`,`translated`,`legacy-bridge`,`blocked`,`none`],Gw={surface:`all`,model:``,provider:``,status:`all`,timeWindow:`all`,interceptedOnly:!1,conversationId:``};function Kw(e){return e.surface!==`all`||e.model.trim()!==``||e.provider.trim()!==``||e.status!==`all`||e.timeWindow!==`all`||e.minTokPerSec!==void 0||e.maxTokPerSec!==void 0||e.interceptedOnly||e.conversationId.trim()!==``||(e.protocolMode??`all`)!==`all`}function qw(e){return Array.isArray(e.attempts)?e.attempts.filter(e=>typeof e==`object`&&!!e):[]}function Jw(e){if(typeof e!=`string`)return;let t=e.trim();return t?t.toLowerCase():void 0}function Yw(e,t){if(e===`15m`)return t-9e5;if(e===`1h`)return t-36e5;if(e===`24h`)return t-864e5}function Xw(e,t,n=Date.now()){let r=t.model.trim().toLowerCase(),i=t.provider.trim().toLowerCase(),a=t.conversationId.trim(),o=Yw(t.timeWindow,n),s=t.protocolMode??`all`;return e.filter(e=>{if(!Uw(e,t.surface)||t.interceptedOnly&&typeof e.shadowCallRewrittenFrom!=`string`)return!1;if(s!==`all`){let t=Vm(e.protocolTrace)?.mode;if(s===`none`?t!==void 0:t!==s)return!1}if(a&&!Dw(e.conversationId,a,t.conversationQueryHash)||t.status===`success`&&(typeof e.status!=`number`||!Number.isInteger(e.status)||e.status<200||e.status>=300)||t.status===`errors`&&(typeof e.status!=`number`||!Number.isInteger(e.status)||e.status<400||e.status>599))return!1;let n=qw(e);if(r&&![Jw(e.model),Jw(e.resolvedModel),Jw(e.servedModel),...n.map(e=>Jw(e.model))].some(e=>e===r)||i&&![Jw(e.provider),...n.map(e=>Jw(e.provider))].some(e=>e===i)||o!==void 0&&(typeof e.timestamp!=`number`||!Number.isFinite(e.timestamp)||e.timestamp<o))return!1;let c=e.displayMetrics?.tokPerSecond?.kind===`value`&&Number.isFinite(e.displayMetrics.tokPerSecond.value)?e.displayMetrics.tokPerSecond.value:void 0;return!(t.minTokPerSec!==void 0&&(c===void 0||c<t.minTokPerSec)||t.maxTokPerSec!==void 0&&(c===void 0||c>=t.maxTokPerSec))})}function Zw(e,t){if(typeof t!=`string`)return;let n=t.trim(),r=Jw(n);if(!r)return;let i=e.get(r);(i===void 0||n<i)&&e.set(r,n)}function Qw(e){let t=new Map,n=new Map;for(let r of e){for(let e of[r.model,r.resolvedModel,r.servedModel,...qw(r).map(e=>e.model)])Zw(t,e);for(let e of[r.provider,...qw(r).map(e=>e.provider)])Zw(n,e)}return{models:[...t.values()].sort(),providers:[...n.values()].sort()}}var $w=[`all`,`claude`,`codex`,`grok`];function eT(e,t,n){let r=$w.indexOf(t),i=-1;if(e.key===`ArrowRight`||e.key===`ArrowDown`?i=(r+1)%$w.length:e.key===`ArrowLeft`||e.key===`ArrowUp`?i=(r-1+$w.length)%$w.length:e.key===`Home`?i=0:e.key===`End`&&(i=$w.length-1),i<0)return;e.preventDefault();let a=$w[i];n(a),document.getElementById(`logs-surface-${a}`)?.focus()}function tT({filters:e,options:t,hasActiveFilters:n,filteredCount:r,totalCount:i,t:a,onFilterChange:o,onResetFilters:s}){let c=(0,Z.useRef)(null),l=()=>{s(),c.current?.focus({preventScroll:!0})},u=e.maxTokPerSec===15?`slow`:e.minTokPerSec===15&&e.maxTokPerSec===50?`medium`:e.minTokPerSec===50?`fast`:`all`,d=t=>{let n=t===`slow`?{minTokPerSec:void 0,maxTokPerSec:15}:t===`medium`?{minTokPerSec:15,maxTokPerSec:50}:t===`fast`?{minTokPerSec:50,maxTokPerSec:void 0}:{minTokPerSec:void 0,maxTokPerSec:void 0};o({...e,...n})};return(0,Q.jsxs)(`div`,{className:`logs-filter-container`,children:[(0,Q.jsxs)(`div`,{className:`logs-toolbar`,children:[(0,Q.jsx)(`span`,{className:`muted text-control`,children:a(`logs.filter.surface.label`)}),(0,Q.jsx)(`div`,{className:`segmented logs-segmented`,role:`radiogroup`,"aria-label":a(`logs.filter.surface.label`),children:[`all`,`claude`,`codex`,`grok`].map(t=>(0,Q.jsx)(`button`,{ref:t===`all`?c:void 0,type:`button`,role:`radio`,"aria-checked":e.surface===t,id:`logs-surface-${t}`,tabIndex:e.surface===t?0:-1,className:`btn btn-sm${e.surface===t?` btn-primary`:` btn-ghost`}`,style:{background:e.surface===t?void 0:`transparent`,color:e.surface===t?void 0:`var(--muted)`},onClick:()=>o({...e,surface:t}),onKeyDown:n=>eT(n,t,t=>o({...e,surface:t})),children:a(`logs.filter.surface.${t}`)},t))}),(0,Q.jsxs)(`label`,{className:`muted text-control logs-filter-field`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:e.interceptedOnly,onChange:t=>o({...e,interceptedOnly:t.target.checked})}),a(`logs.filter.interceptedHelpersOnly`)]}),(0,Q.jsxs)(`label`,{className:`muted text-control logs-filter-field`,children:[a(`logs.filter.provider.label`),(0,Q.jsxs)(`select`,{className:`input select-sm`,value:e.provider,"aria-label":a(`logs.filter.provider.label`),onChange:t=>o({...e,provider:t.target.value}),children:[(0,Q.jsx)(`option`,{value:``,children:a(`logs.filter.provider.all`)}),t.providers.map(e=>(0,Q.jsx)(`option`,{value:e,children:be(e,a)},e))]})]}),(0,Q.jsxs)(`label`,{className:`muted text-control logs-filter-field`,children:[a(`logs.filter.model.label`),(0,Q.jsxs)(`select`,{className:`input select-sm`,value:e.model,"aria-label":a(`logs.filter.model.label`),onChange:t=>o({...e,model:t.target.value}),children:[(0,Q.jsx)(`option`,{value:``,children:a(`logs.filter.model.all`)}),t.models.map(e=>(0,Q.jsx)(`option`,{value:e,children:e},e))]})]}),(0,Q.jsxs)(`label`,{className:`muted text-control logs-filter-field`,children:[a(`logs.filter.time.label`),(0,Q.jsxs)(`select`,{className:`input select-sm`,value:e.timeWindow,"aria-label":a(`logs.filter.time.label`),onChange:t=>o({...e,timeWindow:t.target.value}),children:[(0,Q.jsx)(`option`,{value:`all`,children:a(`logs.filter.time.all`)}),(0,Q.jsx)(`option`,{value:`15m`,children:a(`logs.filter.time.15m`)}),(0,Q.jsx)(`option`,{value:`1h`,children:a(`logs.filter.time.1h`)}),(0,Q.jsx)(`option`,{value:`24h`,children:a(`logs.filter.time.24h`)})]})]}),(0,Q.jsxs)(`label`,{className:`muted text-control logs-filter-field`,children:[a(`logs.filter.speed.label`),(0,Q.jsxs)(`select`,{className:`input select-sm`,value:u,"aria-label":a(`logs.filter.speed.label`),onChange:e=>d(e.target.value),children:[(0,Q.jsx)(`option`,{value:`all`,children:a(`logs.filter.speed.all`)}),(0,Q.jsx)(`option`,{value:`slow`,children:a(`logs.filter.speed.slow`)}),(0,Q.jsx)(`option`,{value:`medium`,children:a(`logs.filter.speed.medium`)}),(0,Q.jsx)(`option`,{value:`fast`,children:a(`logs.filter.speed.fast`)})]})]}),(0,Q.jsxs)(`label`,{className:`muted text-control logs-filter-field`,children:[a(`logs.filter.status.label`),(0,Q.jsxs)(`select`,{className:`input select-sm`,value:e.status,"aria-label":a(`logs.filter.status.label`),onChange:t=>o({...e,status:t.target.value}),children:[(0,Q.jsx)(`option`,{value:`all`,children:a(`logs.filter.status.all`)}),(0,Q.jsx)(`option`,{value:`success`,children:a(`logs.filter.status.success`)}),(0,Q.jsx)(`option`,{value:`errors`,children:a(`logs.filter.status.errors`)})]})]}),(0,Q.jsxs)(`label`,{className:`muted text-control logs-filter-field`,children:[a(`logs.filter.protocol.label`),(0,Q.jsx)(`select`,{className:`input select-sm`,value:e.protocolMode??`all`,"aria-label":a(`logs.filter.protocol.label`),onChange:t=>o({...e,protocolMode:t.target.value}),children:Ww.map(e=>(0,Q.jsx)(`option`,{value:e,children:a(nT(e))},e))})]})]}),(0,Q.jsxs)(`div`,{className:`logs-toolbar logs-toolbar-secondary`,children:[(0,Q.jsxs)(`label`,{className:`muted text-control logs-filter-field`,children:[a(`logs.filter.conversation.label`),(0,Q.jsx)(`input`,{type:`search`,className:`input mono select-sm`,value:e.conversationId,onChange:t=>o({...e,conversationId:t.target.value}),placeholder:a(`logs.filter.conversation.placeholder`),"aria-label":a(`logs.filter.conversation.label`)})]}),n&&(0,Q.jsxs)(`div`,{className:`logs-filter-status`,children:[(0,Q.jsx)(`span`,{className:`muted text-control`,children:a(`logs.filter.showingCount`,{count:r,total:i})}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:l,children:[(0,Q.jsx)(ve,{}),` `,a(`logs.filter.reset`)]})]})]})]})}function nT(e){return e===`all`?`logs.filter.protocol.all`:e===`none`?`logs.filter.protocol.none`:nh[e]}function rT({trace:e,t}){let n=Vm(e);if(!n)return null;let r=ch(n,t),i=t(nh[n.mode]);return(0,Q.jsxs)(`span`,{className:`badge badge-muted protocol-path-badge`,title:t(`logs.protocol.badgeTitle`,{path:r,mode:i}),"data-protocol-mode":n.mode,children:[r,` · `,i]})}function iT({trace:e,t}){let n=Vm(e);return(0,Q.jsxs)(`section`,{className:`log-detail-section`,"aria-labelledby":`log-detail-protocol`,children:[(0,Q.jsx)(`h4`,{id:`log-detail-protocol`,className:`log-detail-section-title`,children:t(`logs.detail.protocol.section`)}),n?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`log-detail-grid`,"data-protocol-mode":n.mode,children:[(0,Q.jsx)(`span`,{className:`muted`,children:t(`logs.detail.protocol.inbound`)}),(0,Q.jsx)(`span`,{children:oh(n.inbound,t)}),(0,Q.jsx)(`span`,{className:`muted`,children:t(`logs.detail.protocol.mode`)}),(0,Q.jsx)(`span`,{children:t(nh[n.mode])}),n.upstream&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:t(`logs.detail.protocol.upstream`)}),(0,Q.jsx)(`span`,{children:oh(n.upstream,t)})]}),n.requestPath.length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:t(`logs.detail.protocol.requestPath`)}),(0,Q.jsx)(`span`,{children:sh(n.requestPath,t)}),(0,Q.jsx)(`span`,{className:`muted`,children:t(`logs.detail.protocol.responsePath`)}),(0,Q.jsx)(`span`,{children:sh(n.responsePath,t)})]}),(0,Q.jsx)(`span`,{className:`muted`,children:t(`logs.detail.protocol.reasons`)}),(0,Q.jsx)(`span`,{className:`mono log-detail-break`,children:n.reasonCodes.join(`, `)||`–`}),n.featureEffects&&n.featureEffects.length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:t(`logs.detail.protocol.features`)}),(0,Q.jsx)(`span`,{children:n.featureEffects.map(e=>(0,Q.jsxs)(`span`,{style:{display:`block`},children:[(0,Q.jsx)(`code`,{children:e.feature}),`: `,t(rh[e.disposition])]},e.feature))})]}),n.attempts&&n.attempts.length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:t(`logs.detail.protocol.attempts`)}),(0,Q.jsx)(`span`,{children:n.attempts.map(e=>(0,Q.jsxs)(`span`,{style:{display:`block`},children:[t(`logs.detail.protocol.attempt`,{ordinal:e.ordinal}),`:`,` `,sh(e.requestPath,t),` · `,t(nh[e.mode])]},e.ordinal))})]})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm protocol-deep-link`,onClick:()=>Kg({inbound:n.inbound,upstream:Rg(n.upstream)}),children:t(`protocolLinks.labEvidence`)})]}):(0,Q.jsx)(`p`,{className:`log-detail-notes-line muted`,children:t(`logs.detail.protocol.none`)})]})}function aT(e,t){return typeof e==`number`&&Number.isFinite(e)&&e>=0?{generatedAt:e,receivedAt:t}:void 0}function oT(e,t,n){return e?e.generatedAt+Math.max(0,t-e.receivedAt):n}function sT(){return Cg(window.location.hash)===`logs/debug`?`debug`:`logs`}function cT(e){window.location.hash=e===`debug`?`logs/debug`:`logs`}function lT(e){e.key===`ArrowLeft`||e.key===`Home`?(e.preventDefault(),cT(`logs`),document.getElementById(`logs-tab-logs`)?.focus()):(e.key===`ArrowRight`||e.key===`End`)&&(e.preventDefault(),cT(`debug`),document.getElementById(`logs-tab-debug`)?.focus())}function uT(e){return e.servedModel!==void 0&&e.servedModel!==(e.wireModel??e.model)}function dT(e,t){let n=e?.confirmation;if(!n)return``;let r=n===`downgraded`&&e?.fastDowngradeReason?`: ${e.fastDowngradeReason}`:``;return` (${t(`logs.modelTooltip.tierOutcome.${n}`)}${r})`}function fT(e,t){return[uT(e)?t(`logs.modelRerouteTitle`):void 0,`${t(`logs.modelTooltip.model`)}=${e.model}`,e.resolvedModel?`${t(`logs.modelTooltip.resolvedModel`)}=${e.resolvedModel}`:void 0,e.servedModel?`${t(`logs.modelTooltip.servedModel`)}=${e.servedModel}`:void 0,e.wireModel?`${t(`logs.modelTooltip.wireModel`)}=${e.wireModel}`:void 0,e.requestedServiceTier?`${t(`logs.modelTooltip.requestedTier`)}=${e.requestedServiceTier}`:void 0,e.configuredServiceTier?`${t(`logs.modelTooltip.configuredTier`)}=${e.configuredServiceTier}`:void 0,e.responseServiceTier?`${t(`logs.modelTooltip.responseTier`)}=${e.responseServiceTier}${dT(e.tierOutcome,t)}`:void 0,e.modelSupportsServiceTier===void 0?void 0:`${t(`logs.modelTooltip.supportsTier`)}=${e.modelSupportsServiceTier}`].filter(Boolean).join(` · `)}function pT(e){return e.requestedSpeedLabel||void 0}function mT(e){switch(e.timingBasis){case`generation-window`:return{short:`logs.decodeBasis.generation`,detail:`logs.detail.decodeGeneration`,hint:`logs.detail.decodeBasisHint.generation`};case`legacy-post-visible-output`:return{short:`logs.decodeBasis.legacy`,detail:`logs.detail.decodeLegacy`,hint:`logs.detail.decodeBasisHint.legacy`};default:return{short:`logs.decodeBasis.unknown`,detail:`logs.detail.decodeUnknown`,hint:`logs.detail.decodeBasisHint.unknown`}}}var hT=new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`,currencyDisplay:`narrowSymbol`,minimumFractionDigits:4,maximumFractionDigits:4});function gT(e,t,n,r=!1){if(!Number.isFinite(e)||e<0)return t(`logs.cost.unavailable`);let i=hT.format(e);return t(r?`logs.cost.lowerBound`:`logs.cost.approximate`,{amount:i})}function _T(e,t,n){return!e||e.kind===`unavailable`?t(`logs.cost.unavailable`):gT(e.estimate.cost.total,t,n,e.estimate.priorityLowerBound)}function vT(e){let t=0,n=!0,r=0,i=0,a=0;for(let o of e){if(o.usageStatus===`unsupported`){a+=1;continue}let e=o.displayMetrics?.cost;if(e?.kind===`value`){let i=e.estimate.cost.total;if(Number.isFinite(i)&&i>=0){t+=i,r+=1,n&&=e.estimate.priorityLowerBound===!0;continue}}i+=1}return{estimatedCostUsd:t,priorityLowerBound:r>0&&n,unpricedRequests:i,unmeteredRequests:a}}function yT(e){return e===`cursor`||e.startsWith(`cursor-`)}function bT(e){let t=e.usage;if(!t)return{};let n=typeof t.cacheCreationInputTokens==`number`?t.cacheCreationInputTokens:void 0;return{read:typeof t.cacheReadInputTokens==`number`?t.cacheReadInputTokens:typeof t.cachedInputTokens==`number`&&n!==void 0?Math.max(0,t.cachedInputTokens-n):t.cachedInputTokens,write:n}}function xT(e,t){if(!e.usage)return;let n=bT(e),r=[`${t(`logs.tokens.input`)}=${e.usage.inputTokens}`,`${t(`logs.tokens.output`)}=${e.usage.outputTokens}`];return n.read!==void 0&&r.push(`${t(`logs.tokens.cacheRead`)}=${n.read}`),n.write!==void 0&&r.push(`${t(`logs.tokens.cacheWrite`)}=${n.write}`),typeof e.usage.contextTotalTokens==`number`&&r.push(`${t(`logs.tokens.contextTotal`)}=${e.usage.contextTotalTokens}`),typeof e.usage.reasoningOutputTokens==`number`&&r.push(`${t(`logs.tokens.reasoning`)}=${e.usage.reasoningOutputTokens}`),e.usageStatus===`estimated`&&r.push(t(`logs.tokens.estimatedNote`)),e.usageStatus===`estimated`&&n.read===void 0&&n.write===void 0&&r.push(t(yT(e.provider)?`logs.tokens.noCacheCursorNote`:`logs.tokens.noCacheNote`)),r.join(` · `)}function ST(e){return e===void 0||typeof e==`string`}function CT(e){if(e===void 0)return!0;if(!e||typeof e!=`object`||!ST(e.routeKind)||e.profile!==void 0&&(!e.profile||typeof e.profile!=`object`||!ST(e.profile.id)||!ST(e.profile.revision))||e.selected!==void 0&&(!e.selected||typeof e.selected!=`object`||!ST(e.selected.provider)||!ST(e.selected.model)||!ST(e.selected.reason)))return!1;if(e.candidates===void 0)return!0;if(!Array.isArray(e.candidates))return!1;for(let t of e.candidates){if(!t||typeof t!=`object`||!ST(t.provider)||!ST(t.model)||t.eligible!==void 0&&typeof t.eligible!=`boolean`)return!1;if(t.exclusions!==void 0){if(!Array.isArray(t.exclusions))return!1;for(let e of t.exclusions)if(!e||typeof e!=`object`||!ST(e.code))return!1}}return!0}function wT(e){if(e.routeDecision===void 0||CT(e.routeDecision))return e;let t={...e};return delete t.routeDecision,t}function TT(e){if(Array.isArray(e))return{rows:e,cursor:null,reset:!1};if(!e||typeof e!=`object`)throw Error(`Invalid log response`);let t=e,n=Object.hasOwn(t,`cursor`)||Object.hasOwn(t,`reset`);if(t.logs!==void 0&&!Array.isArray(t.logs)||n&&(!Array.isArray(t.logs)||typeof t.cursor!=`string`||t.cursor.length===0||t.cursor.length>512||!/^[A-Za-z0-9_-]+$/.test(t.cursor)||typeof t.reset!=`boolean`))throw Error(`Invalid log response`);return{rows:t.logs??[],cursor:n?t.cursor:null,reset:t.reset===!0,generatedAt:t.generatedAt,...typeof t.timeZone==`string`?{timeZone:t.timeZone}:{},...typeof t.total==`number`&&Number.isFinite(t.total)&&t.total>=0?{total:t.total}:{}}}function ET(e,t,n=2e3){if(t.length===0&&e.length<=n)return e;let r=[...e,...t];return r.length>n?r.slice(r.length-n):r}var DT=Object.freeze([`completed`,`failed`,`incomplete`,`aborted`]);Object.freeze(DT.filter(e=>e!==`aborted`)),Object.freeze([`terminal`,`client_cancel`,`non_stream`,`body_stall`,`body_overflow`]);function OT(e){return e.closeReason===`client_cancel`||e.status===499?`aborted`:e.terminalStatus===`failed`?`failed`:e.terminalStatus===`incomplete`||e.closeReason===`body_stall`||e.closeReason===`body_overflow`?`incomplete`:e.terminalStatus===`completed`||e.terminalStatus===void 0&&(e.status===101||e.status>=200&&e.status<400)?`completed`:`failed`}function kT(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function AT(e){return kT(e?.sends)}function jT(e){return kT(e?.unresolved)}function MT(e){return`ocx.logs.list.v1:${e}`}var NT=[];function PT(e){if(!Array.isArray(e))return null;for(let t of e)if(!t||typeof t!=`object`||typeof t.timestamp!=`number`||typeof t.model!=`string`||typeof t.provider!=`string`||typeof t.status!=`number`||typeof t.durationMs!=`number`||t.shadowCallRewrittenFrom!==void 0&&typeof t.shadowCallRewrittenFrom!=`string`||!CT(t.routeDecision))return null;return e}function FT(e){if(!e.usage)return typeof e.totalTokens==`number`?e.totalTokens:void 0;let t=e.usage.inputTokens+e.usage.outputTokens,n=e.usage.totalTokens??e.totalTokens;return typeof n==`number`?Math.max(n,t):t}function IT(e){let t=FT(e),n=e.usage?.contextTotalTokens;return typeof n==`number`?Math.max(t??0,n)||void 0:t}function LT(e){let t=e.requestedEffort?.replace(/\s*->\s*/g,` → `),n=e.effectiveEffort;return t?!n||t===n||t.split(` → `).at(-1)===n?t:`${t} → ${n}`:n??`-`}function RT(e){if(!(!e.reasoningWireField||e.reasoningWireValue===void 0))return`${e.reasoningWireField}=${e.reasoningWireValue}`}function zT(e){return uT(e)?(0,Q.jsxs)(Q.Fragment,{children:[_v(e.wireModel??e.model),` → `,_v(e.servedModel)]}):_v(e.servedModel??e.resolvedModel??e.model)}function BT(e,t){if(!e||e.kind===`unavailable`||!Number.isFinite(e.value)||e.value<=0)return`—`;let n=e.value>=100?0:1,r=new Intl.NumberFormat(t,{minimumFractionDigits:n,maximumFractionDigits:n}).format(e.value);return`${e.estimated?`~`:``}${r}`}var VT=2e3,HT=3e4,UT=4,WT=3,GT={usage_missing:`logs.detail.reason.usage_missing`,usage_unsupported:`logs.detail.reason.usage_unsupported`,output_missing:`logs.detail.reason.output_missing`,invalid_duration:`logs.detail.reason.invalid_duration`,price_unmatched:`logs.detail.reason.price_unmatched`,invalid_cache_breakdown:`logs.detail.reason.invalid_cache_breakdown`,invalid_usage:`logs.detail.reason.invalid_usage`,combo_attempt_unavailable:`logs.detail.reason.combo_attempt_unavailable`,ttft_missing:`logs.detail.reason.ttft_missing`,decode_window_too_short:`logs.detail.reason.decode_window_too_short`},KT={usage_estimated:`logs.detail.estimate.usage_estimated`,cache_detail_missing:`logs.detail.estimate.cache_detail_missing`,expected_price_overlay:`logs.detail.estimate.expected_price_overlay`,provider_cost_overlay:`logs.detail.estimate.provider_cost_overlay`,priority_lower_bound:`logs.detail.estimate.priority_lower_bound`},qT={"transient-5xx":`logs.detail.attempt.recovery.transient5xx`,"connection-reset":`logs.detail.attempt.recovery.connectionReset`,"oauth-401":`logs.detail.attempt.recovery.oauth401`,"oauth-account-403":`logs.detail.attempt.recovery.oauthAccount403`,"key-401":`logs.detail.attempt.recovery.key401`,"key-429":`logs.detail.attempt.recovery.key429`,"rate-limit-429":`logs.detail.attempt.recovery.rateLimit429`,"anthropic-oauth-429":`logs.detail.attempt.recovery.anthropicOauth429`,"oauth-account-429":`logs.detail.attempt.recovery.oauthAccount429`,"oauth-account-402":`logs.detail.attempt.recovery.oauthAccount402`,"image-413":`logs.detail.attempt.recovery.image413`,"empty-completion":`logs.detail.attempt.recovery.emptyCompletion`,"console-go-upload-retry":`logs.detail.attempt.recovery.consoleGoUpload`,"opaque-blob-rejection":`logs.detail.attempt.recovery.opaqueBlobRejection`,"reasoning-effort-downgrade":`logs.detail.attempt.recovery.reasoningEffortDowngrade`,"anthropic-fast-downgrade":`logs.detail.attempt.recovery.anthropicFastDowngrade`};function JT(e){return GT[e]}function YT(e){return KT[e]}function XT(e){return qT[e]??`logs.detail.attempt.recovery.unknown`}function ZT(e){return e===`verified`?`logs.detail.verification.verified`:`logs.detail.verification.derived`}var QT={completed:`logs.detail.outcome.completed`,failed:`logs.detail.outcome.failed`,incomplete:`logs.detail.outcome.incomplete`,aborted:`logs.detail.outcome.aborted`},$T={"transport-unsent":`logs.detail.cause.transportUnsent`,"transport-ambiguous":`logs.detail.cause.transportAmbiguous`,"upstream-declined":`logs.detail.cause.upstreamDeclined`,"rate-limit":`logs.detail.cause.rateLimit`,"quota-exhausted":`logs.detail.cause.quotaExhausted`,"credential-rejected":`logs.detail.cause.credentialRejected`,"policy-refusal":`logs.detail.cause.policyRefusal`,"parameter-rejected":`logs.detail.cause.parameterRejected`,"ciphertext-refusal":`logs.detail.cause.ciphertextRefusal`,"payload-too-large":`logs.detail.cause.payloadTooLarge`,"payload-rejected":`logs.detail.cause.payloadRejected`,"upstream-fault":`logs.detail.cause.upstreamFault`,"empty-output":`logs.detail.cause.emptyOutput`,"client-cancelled":`logs.detail.cause.clientCancelled`,"local-refusal":`logs.detail.cause.localRefusal`},eE={"pre-header":`logs.detail.stage.preHeader`,"headers-only":`logs.detail.stage.headersOnly`,"protocol-prelude":`logs.detail.stage.protocolPrelude`,"semantic-output":`logs.detail.stage.semanticOutput`,"side-effect":`logs.detail.stage.sideEffect`,terminal:`logs.detail.stage.terminal`},tE={permitted:`logs.detail.resend.permitted`,"permitted-after-repair":`logs.detail.resend.permittedAfterRepair`,"refused-ambiguous":`logs.detail.resend.refusedAmbiguous`,"refused-committed":`logs.detail.resend.refusedCommitted`,"refused-futile":`logs.detail.resend.refusedFutile`};function nE(e){return QT[OT(e)]}function rE(e,t){let n=e.failureCause===void 0?void 0:$T[e.failureCause],r=e.failureStage===void 0?void 0:eE[e.failureStage],i=e.resendPermission===void 0?void 0:tE[e.resendPermission];return{...e.failureCause?{cause:n?t(n):e.failureCause}:{},...e.failureStage?{stage:r?t(r):e.failureStage}:{},...e.resendPermission?{resend:i?t(i):e.resendPermission}:{}}}function iE(e){return e>=200&&e<300?`var(--green)`:e>=400?`var(--red)`:`var(--amber)`}function aE(e,t,n){let r=n?{timeZone:n}:void 0;try{return{date:new Date(e).toLocaleDateString(t,r),time:new Date(e).toLocaleTimeString(t,r)}}catch{return{date:new Date(e).toLocaleDateString(t),time:new Date(e).toLocaleTimeString(t)}}}function oE(e,t,n){let{date:r,time:i}=aE(e,t,n);return`${r} ${i}`}function sE(e){let t=0;for(let n of e){let e=FT(n);e!==void 0&&(t+=e)}return{requests:e.length,totalTokens:t,...vT(e)}}function cE({apiBase:e}){let{t:n,locale:r}=t(),i=MT(e),a=PT(Ua(i)),[o,s]=(0,Z.useState)(!0),[c,l]=(0,Z.useState)({error:null,count:0}),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(Gw),[m,h]=(0,Z.useState)(()=>Date.now()),g=(0,Z.useRef)({key:i,active:!1,request:0}),_=(0,Z.useRef)({key:i,cursor:null,rows:[]});(0,Z.useLayoutEffect)(()=>{let e={key:i,active:!0,request:0};return g.current=e,_.current={key:i,cursor:null,rows:[]},h(Date.now()),()=>{e.active=!1}},[i]);let v=(0,Z.useCallback)(()=>{let e=g.current;return oT(e.key===i?e.anchor:void 0,performance.now(),Date.now())},[i]),y=(0,Z.useRef)(null),b=(0,Z.useRef)({key:i,failures:0,nextAttemptAt:0,error:null}),x=k.find(e=>e.code===r)?.htmlLang,[S,C]=(0,Z.useState)();(0,Z.useEffect)(()=>{let t=new AbortController,n=!1;return fetch(`${e}/api/settings`,{signal:t.signal}).then(e=>e.ok?e.json():null).then(e=>{n||!e||typeof e.timeZone==`string`&&e.timeZone.trim()&&C(e.timeZone.trim())}).catch(()=>{}),()=>{n=!0,t.abort()}},[e]);let[w,T]=(0,Z.useState)(sT),[E,D]=(0,Z.useState)(()=>sT()===`debug`);(0,Z.useEffect)(()=>{let e=()=>T(sT());return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[]),(0,Z.useEffect)(()=>{w===`debug`&&D(!0)},[w]);let O=cT,A=(0,Z.useCallback)(async t=>{let n=g.current;if(t.aborted||!n.active||n.key!==i)throw t.reason??new DOMException(`Obsolete log request`,`AbortError`);let r=++n.request,a=()=>!t.aborted&&n.active&&g.current===n&&n.request===r,o=b.current;if(o.key!==i&&(o={key:i,failures:0,nextAttemptAt:0,error:null},b.current=o),o.failures>0&&Date.now()<o.nextAttemptAt)throw o.error;let s=_.current,c=s.key===i?s.cursor:null,l=`${e}/api/logs?limit=2000${c?`&cursor=${encodeURIComponent(c)}`:``}`;try{let e=await fetch(l,{signal:t});if(!e.ok)throw Error(`${e.status} ${e.statusText}`.trim());let r=await e.json(),o=performance.now(),u=TT(r),d=u.rows.map(wT),f=c&&u.cursor&&!u.reset?ET(s.rows,d):d;if(!a())throw t.reason??new DOMException(`Obsolete log request`,`AbortError`);_.current={key:i,cursor:u.cursor,rows:f};let m=Qw(f);p(e=>{let t=e.model.trim().toLowerCase(),n=e.provider.trim().toLowerCase(),r=t?m.models.find(e=>e.trim().toLowerCase()===t)??``:``,i=n?m.providers.find(e=>e.trim().toLowerCase()===n)??``:``;return e.model===r&&e.provider===i?e:{...e,model:r,provider:i}});let g=aT(u.generatedAt,o);return g&&(n.anchor=g),h(oT(n.anchor,o,Date.now())),b.current={key:i,failures:0,nextAttemptAt:0,error:null},qa(i,f),f}catch(e){if(!a())throw e;let t=e??Error(`log request failed`),n=o.failures+1,r=VT*2**Math.min(n,UT);throw b.current={key:i,failures:n,nextAttemptAt:Date.now()+r,error:t},t}},[e,i]),j=Ya(i,[e],A,{isEmpty:e=>e.length===0,enabled:w===`logs`,pollMs:o?VT:void 0,initialData:a??void 0}),M=j.state,N=M.data??a??NT,P=j.refresh,F=(0,Z.useCallback)(()=>{b.current={key:i,failures:0,nextAttemptAt:0,error:null},_.current={key:i,cursor:null,rows:[]},P({forceLoading:!0})},[P,i]),I=!j.refreshing&&M.showError;!j.refreshing&&!M.showError&&M.data!==void 0&&c.count!==0?l({error:null,count:0}):I&&c.error!==M.error&&l(e=>({error:M.error,count:e.count+1}));let L=c.count>=WT||!o&&I,R=u?jw(u.status,r):null,z=f.conversationId.trim();(0,Z.useEffect)(()=>{if(f.timeWindow===`all`||w!==`logs`)return;h(v());let e=window.setInterval(()=>h(v()),HT);return()=>window.clearInterval(e)},[f.timeWindow,w,v]),(0,Z.useEffect)(()=>{let e=!1;if(!z){p(e=>e.conversationQueryHash===void 0?e:{...e,conversationQueryHash:void 0});return}return Ew(z).then(t=>{e||p(e=>e.conversationQueryHash?.join(` `)===t.join(` `)?e:{...e,conversationQueryHash:t})}),()=>{e=!0}},[z]);let B=(0,Z.useMemo)(()=>Qw(N),[N]),V=Kw(f),H=(0,Z.useMemo)(()=>Xw(N,f,m),[N,f,m]),U=z?sE(H):null,W=vw({count:H.length,getScrollElement:()=>y.current,estimateSize:()=>92,overscan:15,getItemKey:e=>{let t=H[H.length-1-e];return t.requestId??`${t.timestamp}:${t.model}:${t.provider}`}}),G=W.getVirtualItems(),ee=G.length>0?G[0].start:0,te=G.length>0?W.getTotalSize()-G[G.length-1].end:0;return(0,Q.jsxs)(`div`,{className:`logs-page`,children:[(0,Q.jsxs)(`div`,{className:`page-head`,children:[(0,Q.jsx)(`h2`,{children:n(`nav.logs`)}),w===`logs`&&(0,Q.jsxs)(`label`,{className:`muted text-control logs-auto-refresh`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:o,onChange:e=>s(e.target.checked)}),n(`logs.autoRefresh`)]})]}),(0,Q.jsxs)(`div`,{className:`page-tabs`,role:`tablist`,"aria-label":n(`nav.logs`),children:[(0,Q.jsx)(`button`,{type:`button`,role:`tab`,id:`logs-tab-logs`,"aria-selected":w===`logs`,"aria-controls":`logs-panel-logs`,tabIndex:w===`logs`?0:-1,className:`page-tab${w===`logs`?` page-tab--active`:``}`,onClick:()=>O(`logs`),onKeyDown:lT,children:n(`logs.tabLogs`)}),(0,Q.jsx)(`button`,{type:`button`,role:`tab`,id:`logs-tab-debug`,"aria-selected":w===`debug`,"aria-controls":`logs-panel-debug`,tabIndex:w===`debug`?0:-1,className:`page-tab${w===`debug`?` page-tab--active`:``}`,onClick:()=>O(`debug`),onKeyDown:lT,children:n(`logs.tabDebug`)})]}),E&&(0,Q.jsx)(`div`,{role:`tabpanel`,id:`logs-panel-debug`,"aria-labelledby":`logs-tab-debug`,hidden:w!==`debug`,children:(0,Q.jsx)(Hw,{apiBase:e,embedded:!0,active:w===`debug`})}),(0,Q.jsxs)(`div`,{role:`tabpanel`,id:`logs-panel-logs`,"aria-labelledby":`logs-tab-logs`,hidden:w!==`logs`,children:[(0,Q.jsx)(tT,{filters:f,options:B,hasActiveFilters:V,filteredCount:H.length,totalCount:N.length,t:n,onFilterChange:p,onResetFilters:()=>p(Gw)}),U&&(0,Q.jsx)(`div`,{className:`logs-conversation-totals`,children:(0,Q.jsxs)($,{tone:`ok`,children:[n(`logs.conversation.totals`,{requests:U.requests,tokens:K(U.totalTokens,x??r),cost:gT(U.estimatedCostUsd,n,x,U.priorityLowerBound)}),` `,(0,Q.jsxs)(`span`,{className:`muted`,children:[n(`logs.conversation.scope`),U.unpricedRequests+U.unmeteredRequests>0?` ${n(`logs.conversation.excluded`,{unpriced:U.unpricedRequests,unmetered:U.unmeteredRequests})}`:``]})]})}),M.kind===`failed-cold`&&(0,Q.jsxs)($,{tone:`err`,children:[M.error instanceof Error?`${n(`logs.loadError`)} ${M.error.message}`:n(`logs.loadError`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:F,disabled:M.refreshing,children:n(`common.retry`)})]}),L&&N.length>0&&(0,Q.jsxs)($,{tone:`err`,children:[n(`logs.loadError`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:F,disabled:j.refreshing,children:n(`common.retry`)})]}),M.kind===`failed-cold`?null:M.showSkeleton&&N.length===0?(0,Q.jsx)(Ry,{label:n(`common.loading`),rows:6}):H.length===0?(0,Q.jsx)(ln,{title:N.length>0&&V?n(`logs.noMatchingRequests`):n(`logs.noRequests`)}):(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsx)(`div`,{ref:y,className:`tbl-wrap logs-table-wrap`,children:(0,Q.jsxs)(`table`,{className:`tbl logs-table`,children:[(0,Q.jsxs)(`colgroup`,{children:[(0,Q.jsx)(`col`,{className:`logs-col-time`}),(0,Q.jsx)(`col`,{className:`logs-col-tokens`}),(0,Q.jsx)(`col`,{className:`logs-col-rate`}),(0,Q.jsx)(`col`,{className:`logs-col-cost`}),(0,Q.jsx)(`col`,{className:`logs-col-model`}),(0,Q.jsx)(`col`,{className:`logs-col-effort`}),(0,Q.jsx)(`col`,{className:`logs-col-provider`}),(0,Q.jsx)(`col`,{className:`logs-col-status`}),(0,Q.jsx)(`col`,{className:`logs-col-request`}),(0,Q.jsx)(`col`,{className:`logs-col-duration`})]}),(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:n(`logs.col.time`)}),(0,Q.jsx)(`th`,{className:`num log-col-tokens`,children:n(`logs.col.tokens`)}),(0,Q.jsx)(`th`,{className:`num log-col-rate`,title:n(`logs.metric.tokPerSecTitle`),children:n(`logs.col.tokPerSec`)}),(0,Q.jsx)(`th`,{className:`num log-col-cost`,title:n(`logs.metric.estimatedCostTitle`),children:n(`logs.col.estimatedCost`)}),(0,Q.jsx)(`th`,{className:`log-col-model`,children:n(`logs.col.model`)}),(0,Q.jsx)(`th`,{children:n(`logs.col.effort`)}),(0,Q.jsx)(`th`,{children:n(`logs.col.provider`)}),(0,Q.jsx)(`th`,{children:n(`logs.col.status`)}),(0,Q.jsx)(`th`,{children:n(`logs.col.request`)}),(0,Q.jsx)(`th`,{className:`num log-col-duration`,children:n(`logs.col.duration`)})]})}),(0,Q.jsxs)(`tbody`,{children:[ee>0&&(0,Q.jsx)(`tr`,{children:(0,Q.jsx)(`td`,{colSpan:10,className:`logs-virtual-spacer`,style:{height:ee}})}),G.map(e=>{let t=H[H.length-1-e.index],i=RT(t),a=t.displayMetrics?.decodeTokPerSecond,o=mT(a?.kind===`value`?a:{}),s=aE(t.timestamp,x,S);return(0,Q.jsxs)(`tr`,{"data-index":e.index,ref:W.measureElement,children:[(0,Q.jsx)(`td`,{className:`muted mono log-col-time`,children:(0,Q.jsxs)(`span`,{className:`logs-stack-start`,children:[(0,Q.jsx)(`span`,{children:s.date}),(0,Q.jsx)(`span`,{children:s.time})]})}),(0,Q.jsx)(`td`,{className:`num mono log-col-tokens`,title:xT(t,n),children:(()=>{let e=IT(t),{read:i,write:a}=bT(t);return e===void 0?(0,Q.jsx)(`span`,{className:`muted`,children:n(`logs.tokens.${t.usageStatus??`unreported`}`)}):(0,Q.jsxs)(`span`,{className:`logs-stack-end`,children:[(0,Q.jsxs)(`span`,{children:[t.usageStatus===`estimated`?`~`:``,K(e,r)]}),i!==void 0&&i>0&&(0,Q.jsxs)(`span`,{className:`muted text-caption leading-tight`,children:[`c `,K(i,r)]}),a!==void 0&&a>0&&(0,Q.jsxs)(`span`,{className:`muted text-caption leading-tight`,children:[`w `,K(a,r)]}),t.usageStatus===`estimated`&&i===void 0&&a===void 0&&(0,Q.jsx)(`span`,{className:`muted text-caption leading-tight`,children:n(yT(t.provider)?`logs.tokens.noCacheCursor`:`logs.tokens.noCache`)})]})})()}),(0,Q.jsxs)(`td`,{className:`num mono log-col-rate`,children:[BT(t.displayMetrics?.tokPerSecond,x),a?.kind===`value`&&(0,Q.jsxs)(`span`,{className:`logs-stack-end logs-decode-rate muted`,title:n(o.detail),children:[(0,Q.jsx)(`span`,{children:BT(a,x)}),(0,Q.jsx)(`span`,{className:`text-caption`,children:n(o.short)})]})]}),(0,Q.jsx)(`td`,{className:`num mono log-col-cost`,children:_T(t.displayMetrics?.cost,n,x)}),(0,Q.jsx)(`td`,{className:`mono log-col-model`,title:fT(t,n),children:(0,Q.jsxs)(`span`,{className:`logs-model-cell`,children:[(0,Q.jsx)(`span`,{children:zT(t)}),t.shadowCallRewrittenFrom&&(0,Q.jsx)(`span`,{className:`badge badge-muted`,style:{whiteSpace:`nowrap`},title:n(`logs.badge.interceptedHelperTitle`),children:n(`logs.badge.interceptedHelper`,{model:t.shadowCallRewrittenFrom})}),(t.surface===`claude`||t.surface===`claude-desktop`)&&(0,Q.jsx)(`span`,{className:`badge badge-accent`,children:n(`logs.badge.claude`)}),t.surface===`grok`&&(0,Q.jsx)(`span`,{className:`badge badge-accent`,children:n(`logs.badge.grok`)}),pT(t)&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:pT(t)}),(0,Q.jsx)(rT,{trace:t.protocolTrace,t:n})]})}),(0,Q.jsx)(`td`,{className:`mono log-reasoning-cell`,title:i,children:LT(t)}),(0,Q.jsx)(`td`,{className:`muted`,children:be(t.provider,n)}),(0,Q.jsx)(`td`,{children:(0,Q.jsxs)(`span`,{className:`log-status-cell`,children:[(0,Q.jsx)(`span`,{className:`mono font-semibold`,style:{color:iE(t.status)},children:t.status}),(0,Q.jsx)(`button`,{type:`button`,className:`log-detail-btn`,onClick:()=>d(t),"aria-label":`${n(`logs.details`)}: ${t.requestId??t.status}`,children:n(`logs.details`)})]})}),(0,Q.jsx)(`td`,{className:`muted mono`,children:(0,Q.jsx)(`span`,{className:`log-reqid`,title:t.requestId,children:t.requestId??`-`})}),(0,Q.jsxs)(`td`,{className:`num log-col-duration`,children:[t.durationMs,`ms`]})]},e.key)}),te>0&&(0,Q.jsx)(`tr`,{children:(0,Q.jsx)(`td`,{colSpan:10,className:`logs-virtual-spacer`,style:{height:te}})})]})]})})}),u&&(0,Q.jsx)(uE,{detail:u,detailInfo:R,localeCode:r,localeTag:x,serverTimeZone:S,t:n,onClose:()=>d(null),onFilterConversation:e=>{p(t=>({...t,conversationId:e})),d(null)}})]})]})}function lE(e){let t=(0,Z.useRef)(null);return(0,Z.useEffect)(()=>{let n=t.current;n&&(e&&!n.open?n.showModal():!e&&n.open&&n.close())},[e]),t}function uE({detail:e,detailInfo:t,localeCode:n,localeTag:r,serverTimeZone:i,t:a,onClose:o,onFilterConversation:s}){let c=lE(!0),[l,u]=(0,Z.useState)(!1),d=bT(e),f=e.displayMetrics?.cost,p=e.displayMetrics?.decodeTokPerSecond,m=mT(p?.kind===`value`?p:{}),h=RT(e),g=rE(e,a),_=async()=>{if(e.requestId)try{await navigator.clipboard.writeText(e.requestId),u(!0),window.setTimeout(()=>u(!1),1200)}catch{}};return(0,Q.jsxs)(`dialog`,{ref:c,className:`modal-overlay`,"aria-labelledby":`log-detail-title`,onCancel:e=>{e.preventDefault(),o()},children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":a(`common.close`),tabIndex:-1,onClick:o}),(0,Q.jsxs)(`div`,{className:`modal-card log-detail-card`,onClick:e=>e.stopPropagation(),role:`document`,children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsxs)(`h3`,{id:`log-detail-title`,children:[(0,Q.jsx)(`span`,{className:`mono`,style:{color:iE(e.status)},children:e.status}),t&&(0,Q.jsx)(`span`,{className:`logs-detail-info`,children:t.label})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:o,"aria-label":a(`common.cancel`),children:(0,Q.jsx)(ve,{})})]}),t&&(0,Q.jsx)(`p`,{className:`modal-desc`,children:t.description}),(0,Q.jsxs)(`section`,{className:`log-detail-section`,"aria-labelledby":`log-detail-basic`,children:[(0,Q.jsx)(`h4`,{id:`log-detail-basic`,className:`log-detail-section-title`,children:a(`logs.detail.section.basic`)}),(0,Q.jsxs)(`div`,{className:`log-detail-grid`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.col.time`)}),(0,Q.jsx)(`span`,{className:`mono`,children:oE(e.timestamp,r,i)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.outcome.label`)}),(0,Q.jsx)(`span`,{children:a(nE(e))}),g.cause&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.cause.label`)}),(0,Q.jsxs)(`span`,{children:[g.cause,g.stage&&` (${a(`logs.detail.stage.label`)}: ${g.stage})`]})]}),g.resend&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.resend.label`)}),(0,Q.jsx)(`span`,{children:g.resend})]}),e.spend&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.sends.label`)}),(0,Q.jsxs)(`span`,{className:`mono`,children:[AT(e.spend),jT(e.spend)>0&&` (${a(`logs.detail.sends.unresolved`)}: ${jT(e.spend)})`]})]}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.col.request`)}),(0,Q.jsxs)(`span`,{className:`log-detail-request-row`,children:[(0,Q.jsx)(`span`,{className:`mono log-detail-break`,children:e.requestId??`—`}),e.requestId&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void _(),children:a(l?`logs.detail.copied`:`logs.detail.copyRequestId`)})]}),e.conversationId&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.conversation`)}),(0,Q.jsxs)(`span`,{className:`log-detail-request-row`,children:[(0,Q.jsx)(`span`,{className:`mono log-detail-break`,children:e.conversationId}),s&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>s(e.conversationId),children:a(`logs.filter.conversation.apply`)})]})]}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.col.model`)}),(0,Q.jsx)(`span`,{className:`mono`,children:zT(e)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.col.provider`)}),(0,Q.jsx)(`span`,{children:be(e.provider,a)}),(e.requestedEffort||e.effectiveEffort)&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.col.effort`)}),(0,Q.jsxs)(`span`,{className:`mono`,children:[LT(e),h?` (${h})`:``]})]}),e.errorCode&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.col.error`)}),(0,Q.jsx)(`span`,{className:`mono`,children:e.errorCode})]}),e.upstreamError&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.col.upstreamReason`)}),(0,Q.jsx)(`span`,{className:`mono log-detail-break`,children:e.upstreamError})]})]})]}),(0,Q.jsxs)(`section`,{className:`log-detail-section`,"aria-labelledby":`log-detail-route`,children:[(0,Q.jsx)(`h4`,{id:`log-detail-route`,className:`log-detail-section-title`,children:a(`logs.detail.route.section`)}),e.routeDecision?(0,Q.jsxs)(`div`,{className:`log-detail-grid`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.route.kind`)}),(0,Q.jsx)(`span`,{className:`mono`,children:e.routeDecision.routeKind??`–`}),e.routeDecision.profile?.id&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.route.profile`)}),(0,Q.jsxs)(`span`,{className:`mono`,children:[e.routeDecision.profile.id,` (`,e.routeDecision.profile.revision,`)`]})]}),e.routeDecision.selected?.provider&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.route.selected`)}),(0,Q.jsxs)(`span`,{className:`mono`,children:[e.routeDecision.selected.provider,`/`,e.routeDecision.selected.model,e.routeDecision.selected.reason?` — ${e.routeDecision.selected.reason}`:``]})]}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.route.candidates`)}),(0,Q.jsx)(`span`,{className:`mono`,children:(e.routeDecision.candidates??[]).map(e=>`${typeof e.provider==`string`&&e.provider.length>0?e.provider:`–`}/${typeof e.model==`string`&&e.model.length>0?e.model:`–`}${e.eligible===!0?` ✓`:e.eligible===!1?` ✗`:` ?`}`).join(` `)||`–`})]}):(0,Q.jsx)(`p`,{className:`log-detail-notes-line muted`,children:a(`logs.detail.route.unknown`)})]}),(0,Q.jsx)(iT,{trace:e.protocolTrace,t:a}),(0,Q.jsxs)(`section`,{className:`log-detail-section`,"aria-labelledby":`log-detail-performance`,children:[(0,Q.jsx)(`h4`,{id:`log-detail-performance`,className:`log-detail-section-title`,children:a(`logs.detail.section.performance`)}),(0,Q.jsxs)(`div`,{className:`log-detail-grid log-detail-performance-grid`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.col.duration`)}),(0,Q.jsxs)(`span`,{className:`mono`,children:[e.durationMs,`ms`]}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.endToEndTokPerSec`)}),(0,Q.jsx)(`span`,{className:`mono`,children:BT(e.displayMetrics?.tokPerSecond,r)}),p?.kind===`value`&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,title:a(m.hint),children:a(m.detail)}),(0,Q.jsx)(`span`,{className:`mono`,children:BT(p,r)}),(0,Q.jsx)(`span`,{className:`logs-decode-basis-hint muted text-caption`,children:a(m.hint)})]}),e.firstOutputMs!==void 0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.ttft`)}),(0,Q.jsxs)(`span`,{className:`mono`,children:[e.firstOutputMs,`ms`]})]})]}),e.displayMetrics?.tokPerSecond.kind===`unavailable`&&(0,Q.jsx)(`p`,{className:`log-detail-notes-line muted`,children:a(JT(e.displayMetrics.tokPerSecond.reason))}),e.displayMetrics?.decodeTokPerSecond?.kind===`unavailable`&&(0,Q.jsxs)(`p`,{className:`log-detail-notes-line muted`,children:[a(`logs.detail.decodeTokPerSec`),`: `,a(JT(e.displayMetrics.decodeTokPerSecond.reason))]})]}),(0,Q.jsxs)(`section`,{className:`log-detail-section`,"aria-labelledby":`log-detail-cost`,children:[(0,Q.jsx)(`h4`,{id:`log-detail-cost`,className:`log-detail-section-title`,children:a(`logs.detail.section.cost`)}),(0,Q.jsx)(`p`,{className:`log-detail-notes-line muted`,children:a(`usage.cost.disclaimer`)}),f?.kind===`value`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`log-detail-grid`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.costTotal`)}),(0,Q.jsx)(`span`,{className:`mono`,children:gT(f.estimate.cost.total,a,r,f.estimate.priorityLowerBound)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.input`)}),(0,Q.jsx)(`span`,{className:`mono`,children:gT(f.estimate.cost.input,a,r,f.estimate.priorityLowerBound)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.cacheRead`)}),(0,Q.jsx)(`span`,{className:`mono`,children:gT(f.estimate.cost.cacheRead,a,r,f.estimate.priorityLowerBound)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.cacheWrite`)}),(0,Q.jsx)(`span`,{className:`mono`,children:gT(f.estimate.cost.cacheWrite,a,r,f.estimate.priorityLowerBound)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.output`)}),(0,Q.jsx)(`span`,{className:`mono`,children:gT(f.estimate.cost.output,a,r,f.estimate.priorityLowerBound)}),f.estimate.price&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.matchedKey`)}),(0,Q.jsxs)(`span`,{className:`mono log-detail-break`,children:[f.estimate.price.jawcodeProvider??f.estimate.price.provider,`/`,f.estimate.price.modelId]}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.priceSource`)}),(0,Q.jsxs)(`span`,{children:[a(`logs.detail.source.${f.estimate.price.source}`),` · `,a(ZT(f.estimate.price.status))]})]})]}),f.estimateReasons.length>0&&(0,Q.jsx)(`ul`,{className:`log-detail-notes`,children:f.estimateReasons.map(e=>(0,Q.jsx)(`li`,{children:a(YT(e))},e))})]}):(0,Q.jsxs)(`div`,{className:`log-detail-grid`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.costTotal`)}),(0,Q.jsx)(`span`,{className:`mono`,children:a(`logs.cost.unavailable`)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.unavailableReason`)}),(0,Q.jsx)(`span`,{children:f?.kind===`unavailable`?a(JT(f.reason)):a(`logs.detail.reason.usage_missing`)})]})]}),e.attempts?.length?(0,Q.jsxs)(`section`,{className:`log-detail-section`,"aria-labelledby":`log-detail-attempts`,children:[(0,Q.jsx)(`h4`,{id:`log-detail-attempts`,className:`log-detail-section-title`,children:a(`logs.detail.section.attempts`)}),(0,Q.jsx)(`p`,{className:`log-detail-notes-line muted`,children:a(`logs.detail.attempt.e2eNote`)}),(0,Q.jsx)(`div`,{className:`log-detail-attempts-wrap`,children:(0,Q.jsxs)(`table`,{className:`tbl log-detail-attempts`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{className:`num`,children:`#`}),(0,Q.jsx)(`th`,{children:a(`logs.detail.attempt.target`)}),(0,Q.jsx)(`th`,{className:`num`,children:a(`logs.col.duration`)}),(0,Q.jsx)(`th`,{className:`num`,title:a(`logs.detail.endToEndTokPerSec`),children:a(`logs.col.tokPerSec`)}),(0,Q.jsx)(`th`,{className:`num`,children:a(`logs.col.estimatedCost`)}),(0,Q.jsx)(`th`,{children:a(`logs.detail.attempt.reason`)})]})}),(0,Q.jsx)(`tbody`,{children:e.attempts.toSorted((e,t)=>e.ordinal-t.ordinal).map(e=>{let t=e.displayMetrics?.cost,n=e.displayMetrics?.decodeTokPerSecond,i=mT(n?.kind===`value`?n:{}),o=RT(e),s=t?.kind===`value`?t.estimate.price:void 0,c=rE(e,a).cause??e.errorCode??(e.recoveryKinds.length?e.recoveryKinds.map(e=>a(XT(e))).join(`, `):void 0)??(t?.kind===`unavailable`?a(JT(t.reason)):a(`logs.detail.attempt.completed`));return(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{className:`num mono`,children:e.ordinal}),(0,Q.jsxs)(`td`,{children:[(0,Q.jsx)(`span`,{children:be(e.provider,a)}),(0,Q.jsx)(`br`,{}),(0,Q.jsx)(`span`,{className:`mono muted log-detail-break`,children:e.model}),(e.requestedEffort||e.effectiveEffort)&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`br`,{}),(0,Q.jsxs)(`span`,{className:`mono muted text-caption log-detail-break`,children:[LT(e),o?` (${o})`:``]})]}),s&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`br`,{}),(0,Q.jsxs)(`span`,{className:`muted text-caption log-detail-break`,children:[s.jawcodeProvider??s.provider,`/`,s.modelId,` · `,a(`logs.detail.source.${s.source}`),` · `,a(ZT(s.status))]})]})]}),(0,Q.jsxs)(`td`,{className:`num mono`,children:[e.durationMs,`ms`]}),(0,Q.jsxs)(`td`,{className:`num mono`,children:[BT(e.displayMetrics?.tokPerSecond,r),n?.kind===`value`&&(0,Q.jsxs)(`span`,{className:`logs-stack-end logs-decode-rate muted`,title:a(i.detail),children:[(0,Q.jsx)(`span`,{children:BT(n,r)}),(0,Q.jsx)(`span`,{className:`text-caption`,children:a(i.short)})]})]}),(0,Q.jsx)(`td`,{className:`num mono`,children:_T(t,a,r)}),(0,Q.jsx)(`td`,{className:`log-detail-break`,children:c})]},`${e.ordinal}-${e.provider}-${e.model}`)})})]})})]}):null,(0,Q.jsxs)(`section`,{className:`log-detail-section`,"aria-labelledby":`log-detail-usage`,children:[(0,Q.jsx)(`h4`,{id:`log-detail-usage`,className:`log-detail-section-title`,children:a(`logs.detail.section.usage`)}),(0,Q.jsxs)(`div`,{className:`log-detail-grid`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.input`)}),(0,Q.jsx)(`span`,{className:`mono`,children:e.usage?K(e.usage.inputTokens,n):`—`}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.output`)}),(0,Q.jsx)(`span`,{className:`mono`,children:e.usage?K(e.usage.outputTokens,n):`—`}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.cacheRead`)}),(0,Q.jsx)(`span`,{className:`mono`,children:d.read===void 0?`—`:K(d.read,n)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.cacheWrite`)}),(0,Q.jsx)(`span`,{className:`mono`,children:d.write===void 0?`—`:K(d.write,n)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.reasoning`)}),(0,Q.jsx)(`span`,{className:`mono`,children:e.usage?.reasoningOutputTokens===void 0?`—`:K(e.usage.reasoningOutputTokens,n)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.totalTokens`)}),(0,Q.jsx)(`span`,{className:`mono`,children:IT(e)===void 0?`—`:K(IT(e),n)}),e.usage?.contextTotalTokens!==void 0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.contextTotal`)}),(0,Q.jsx)(`span`,{className:`mono`,children:K(e.usage.contextTotalTokens,n)})]})]}),e.usageStatus===`estimated`&&(0,Q.jsx)(`p`,{className:`log-detail-notes-line muted`,children:a(`logs.tokens.estimatedNote`)})]}),(0,Q.jsxs)(`details`,{className:`log-detail-raw`,children:[(0,Q.jsx)(`summary`,{children:a(`logs.detailRaw`)}),(0,Q.jsx)(`pre`,{className:`log-detail-json`,children:JSON.stringify(e,null,2)})]})]})]})}function dE(e){let t=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})$/.exec(e);if(!t)return null;let[n,r,i,a,o]=t.slice(1).map(Number),s=new Date(`${e}:00`),c=s.getTime();return!Number.isSafeInteger(c)||c<0||s.getFullYear()!==n||s.getMonth()!==r-1||s.getDate()!==i||s.getHours()!==a||s.getMinutes()!==o?null:c}function fE(e,t){if(!e||!t)return{ok:!1,error:`required`};let n=dE(e),r=dE(t);return n===null||r===null?{ok:!1,error:`invalid`}:n>r?{ok:!1,error:`reversed`}:{ok:!0,window:{since:n,until:r+59999}}}var pE=[`requests`,`tokens`,`cost`,`quota`,`none`],mE=[6,24,72,168],hE=[`line`,`stackedBar`],gE=[`total`,`input`,`output`,`cached`],_E=[`sum`,`average`,`max`],vE=[`model`,`modelAccount`],yE={requests:`usage.companion.menuRequests`,tokens:`usage.companion.menuTokens`,cost:`usage.companion.menuCost`,quota:`usage.companion.menuQuota`,none:`usage.companion.menuNone`},bE={6:`usage.companion.window6`,24:`usage.companion.window24`,72:`usage.companion.window72`,168:`usage.companion.window168`},xE={total:`usage.companion.metricTotal`,input:`usage.companion.metricInput`,output:`usage.companion.metricOutput`,cached:`usage.companion.metricCached`},SE=[[`showToday`,`usage.companion.sectionToday`],[`showChart`,`usage.companion.sectionChart`],[`showModels`,`usage.companion.sectionModels`],[`showCost`,`usage.companion.sectionCost`],[`showAccounts`,`usage.companion.sectionAccounts`]],CE={sum:`usage.companion.aggregationSum`,average:`usage.companion.aggregationAverage`,max:`usage.companion.aggregationMax`},wE={macos:[`usage.companion.installMacStep1`,`usage.companion.installMacStep2`,`usage.companion.installMacStep3`],windows:[`usage.companion.installWinStep1`,`usage.companion.installWinStep2`,`usage.companion.installWinStep3`],linux:[`usage.companion.installLinuxStep1`,`usage.companion.installLinuxStep2`,`usage.companion.installLinuxStep3`]},TE={macos:`usage.companion.osMac`,windows:`usage.companion.osWindows`,linux:`usage.companion.osLinux`};function EE(e,t){return new Intl.DateTimeFormat(t,{hour:`2-digit`,minute:`2-digit`}).format(e)}function DE(e){return e instanceof Error&&e.message?e.message:String(e)}function OE({value:e,onChange:t,t:n}){return(0,Q.jsx)(`div`,{className:`usage-segmented`,role:`group`,"aria-label":n(`usage.companion.installOs`),children:Object.keys(TE).map(r=>(0,Q.jsx)(`button`,{type:`button`,className:`usage-segmented-btn${e===r?` active`:``}`,"aria-pressed":e===r,onClick:()=>t(r),children:n(TE[r])},r))})}function kE({label:e,value:t,options:n,optionLabel:r,onChange:i}){return(0,Q.jsxs)(`div`,{className:`usage-companion-control`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:e}),(0,Q.jsx)(`div`,{className:`usage-segmented`,role:`group`,"aria-label":e,children:n.map(e=>(0,Q.jsx)(`button`,{type:`button`,className:`usage-segmented-btn${e===t?` active`:``}`,"aria-pressed":e===t,onClick:()=>i(e),children:r(e)},String(e)))})]})}function AE({label:e,value:t,options:n,optionLabel:r,onChange:i}){return(0,Q.jsxs)(`label`,{className:`usage-companion-control`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:e}),(0,Q.jsx)(`select`,{value:t,onChange:e=>i(e.target.value),children:n.map(e=>(0,Q.jsx)(`option`,{value:e,children:r(e)},e))})]})}function jE(e){let[t,n]=(0,Z.useState)(!1);return(0,Z.useEffect)(()=>{if(t||!e.current||typeof IntersectionObserver>`u`)return;let r=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(n(!0),r.disconnect())},{rootMargin:`240px`});return r.observe(e.current),()=>r.disconnect()},[e,t]),t}function ME({apiBase:e,providers:n,onSettingsLoaded:r}){let{t:i,locale:a}=t(),o=(0,Z.useRef)(null),s=jE(o),[c,l]=(0,Z.useState)(null),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(null),[m,h]=(0,Z.useState)([]),[g,_]=(0,Z.useState)(null),[v,y]=(0,Z.useState)(null),[b,x]=(0,Z.useState)(!1),[S,C]=(0,Z.useState)(`idle`),[w,T]=(0,Z.useState)(null),[E,D]=(0,Z.useState)(null),O=(0,Z.useRef)(null),k=(0,Z.useRef)(null),A=(0,Z.useRef)(null),j=(0,Z.useRef)(S),M=(0,Z.useRef)(u),N=(0,Z.useRef)(new Map),[P,F]=(0,Z.useState)(new Map),[I,L]=(0,Z.useState)(()=>{let e=no();return e===`unknown`?`macos`:e});(0,Z.useEffect)(()=>{j.current=S},[S]),(0,Z.useEffect)(()=>{M.current=u},[u]);let R=(0,Z.useCallback)(async()=>{_(null);try{let t=await fetch(`${e}/api/companion/settings`);if(!t.ok)throw Error(`${t.status} ${t.statusText}`.trim());let n=await t.json();l(n),T(Date.now()),d(n.settings),k.current=n.settings,r?.(n.settings.menuBarMetric)}catch(e){_(DE(e))}},[e,r]);(0,Z.useEffect)(()=>{if(!s||c)return;let e=setTimeout(()=>void R(),0);return()=>clearTimeout(e)},[R,c,s]),(0,Z.useEffect)(()=>{if(!s)return;let e=setInterval(()=>{j.current!==`saving`&&(M.current&&k.current!==M.current||R())},6e4);return()=>clearInterval(e)},[R,s]);let z=(0,Z.useMemo)(()=>u?et(u):null,[u]),B=(0,Z.useCallback)(async()=>{if(!z)return;A.current?.abort();let t=new AbortController;A.current=t,x(!0),y(null);try{let n=await fetch(`${e}/api/usage/timeline?${z}`,{signal:t.signal});if(!n.ok)throw Error(`${n.status} ${n.statusText}`.trim());let r=await n.json(),i=u?Ce(r,u):r;p(i),h(i.availableModels);let a=new Map;for(let e of i.series)a.set(e.id,(a.get(e.id)??0)+e.total);for(let[e,t]of a)N.current.set(e,t);F(new Map(N.current))}catch(e){t.signal.aborted||y(DE(e))}finally{t.signal.aborted||x(!1)}},[u,e,z]);(0,Z.useEffect)(()=>{if(!s||!z)return;let e=setTimeout(()=>void B(),250),t=setInterval(()=>void B(),6e4);return()=>{clearTimeout(e),clearInterval(t),A.current?.abort()}},[z,B,s]);let V=(0,Z.useCallback)(e=>{c?.corrupt||(d(t=>t&&{...t,...e}),C(`saving`),D(null))},[c?.corrupt]);(0,Z.useEffect)(()=>{if(!(c?.corrupt||!u||!k.current||k.current===u||S!==`saving`))return O.current&&clearTimeout(O.current),O.current=setTimeout(async()=>{try{let t=Me(u,m),n=await fetch(`${e}/api/companion/settings`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({settings:t})}),r=await n.json();if(!n.ok)throw Error(r&&`error`in r&&r.error?r.error:`${n.status} ${n.statusText}`.trim());l(r),T(Date.now()),d(r.settings),k.current=r.settings,C(`saved`)}catch(e){D(DE(e)),C(`error`)}},300),()=>{O.current&&clearTimeout(O.current)}},[e,m,c?.corrupt,S,u]);let H=(0,Z.useRef)(m);(0,Z.useEffect)(()=>{H.current=m},[m]),(0,Z.useEffect)(()=>()=>{let t=M.current;!t||!k.current||k.current===t||j.current!==`saving`||fetch(`${e}/api/companion/settings`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({settings:Me(t,H.current)}),keepalive:!0}).catch(()=>{})},[e]);let U=(0,Z.useCallback)(async()=>{C(`saving`),D(null);try{let t=await fetch(`${e}/api/companion/settings`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({reset:!0})});if(!t.ok)throw Error(`${t.status} ${t.statusText}`.trim());await R(),C(`saved`)}catch(e){D(DE(e)),C(`error`)}},[e,R]),W=(0,Z.useCallback)(async()=>{try{let t=location.hash?`/${location.hash}`:`/#/usage`,n=await fetch(`${e}/api/companion/open-in-browser`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({path:t})});if(!n.ok)throw Error(`${n.status} ${n.statusText}`.trim())}catch(e){D(DE(e))}},[e]);if(g)return(0,Q.jsxs)(`section`,{ref:o,className:`usage-companion-panel`,children:[(0,Q.jsx)(`p`,{role:`alert`,children:i(`usage.companion.settingsUnavailable`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void R(),children:i(`common.retry`)})]});let G=u;if(!G)return(0,Q.jsx)(`section`,{ref:o,className:`usage-companion-panel`,"aria-busy":`true`,children:(0,Q.jsx)(`div`,{className:`usage-companion-loading`,children:i(`common.loading`)})});let ee=n.map(e=>e.provider).filter((e,t,n)=>n.indexOf(e)===t).toSorted(),te=G.models??m,K=new Set(te),q=Ee(m,P),ne=new Set(G.hiddenProviders),J=S===`saved`&&c?.updatedAt?i(`usage.companion.saved`,{time:EE(c.updatedAt,a)}):S===`error`?i(`usage.companion.saveFailed`,{error:E??``}):``;return(0,Q.jsxs)(`section`,{ref:o,className:`usage-companion-panel`,children:[c?.corrupt&&(0,Q.jsxs)(`div`,{className:`usage-companion-save-status is-error`,role:`alert`,children:[(0,Q.jsx)(`span`,{children:i(`usage.companion.corrupt`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void U(),disabled:S===`saving`,children:i(`usage.companion.corruptReset`)})]}),(0,Q.jsxs)(`div`,{className:`usage-companion-header`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:`panel-title`,children:i(`usage.companion.title`)}),(0,Q.jsx)(`p`,{className:`card-sub`,children:i(`usage.companion.description`)})]}),(0,Q.jsx)(`a`,{className:`btn btn-ghost btn-sm`,href:`https://opencodex.me/guides/macos-menu-bar/`,target:`_blank`,rel:`noreferrer`,children:i(`usage.companion.installGuide`)})]}),(()=>{let e=c?.companion?.lastSeenAt??null,t=e!==null&&w!==null&&w-e<=6e5,n=e===null||w===null?``:Go(e,Ko(i),w),r=Qa(),a=Za()??`2.88.0`,o=wE[I],s=(0,Q.jsxs)(`ol`,{className:`usage-companion-install-steps`,children:[(0,Q.jsxs)(`li`,{children:[i(o[0]),` `,(0,Q.jsx)(`a`,{className:`btn btn-ghost btn-sm`,href:`https://github.com/lidge-jun/opencodex/releases/latest`,target:`_blank`,rel:`noreferrer`,children:i(`common.github`)})]}),(0,Q.jsx)(`li`,{children:i(o[1])}),(0,Q.jsx)(`li`,{children:i(o[2])})]}),l=I===`macos`?(0,Q.jsx)(`code`,{className:`usage-companion-install-command`,children:`xattr -d com.apple.quarantine /Applications/OpenCodex.app`}):I===`linux`?(0,Q.jsx)(`code`,{className:`usage-companion-install-command`,children:`chmod +x OpenCodex-*.AppImage`}):null,u=(0,Q.jsxs)(`details`,{children:[(0,Q.jsx)(`summary`,{children:i(`usage.companion.installAnother`)}),(0,Q.jsx)(OE,{value:I,onChange:L,t:i}),s,l]});return r?(0,Q.jsxs)(`div`,{className:`usage-companion-install usage-companion-install--shell`,children:[(0,Q.jsx)(`p`,{children:i(`usage.companion.runningInDesktop`,{version:a})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void W(),children:i(`usage.companion.openInBrowser`)}),u]}):t?(0,Q.jsxs)(`div`,{className:`usage-companion-install usage-companion-install--connected`,children:[(0,Q.jsxs)(`div`,{className:`usage-companion-install-status`,children:[(0,Q.jsx)(`span`,{className:`usage-companion-install-dot`,"aria-hidden":`true`}),i(c?.companion?.kind===`desktop`?`usage.companion.connectedDesktop`:`usage.companion.connected`,{age:n})]}),u]}):(0,Q.jsxs)(`details`,{className:`usage-companion-install`,open:!0,children:[(0,Q.jsx)(`summary`,{children:i(`usage.companion.installTitle`)}),e!==null&&(0,Q.jsx)(`p`,{className:`usage-companion-install-last-seen muted text-caption`,children:i(`usage.companion.lastSeen`,{age:n})}),e===null&&(0,Q.jsx)(`p`,{className:`usage-companion-install-last-seen muted text-caption`,children:i(`usage.companion.notConnected`)}),(0,Q.jsx)(OE,{value:I,onChange:L,t:i}),s,l]})})(),(0,Q.jsx)(He,{timeline:f,chartStyle:G.chartStyle,hours:G.chartHours,loading:b,error:v,onRetry:()=>void B(),locale:a,t:i}),q.length>0&&(0,Q.jsxs)(`section`,{className:`usage-companion-models`,children:[(0,Q.jsxs)(`div`,{className:`usage-companion-models-header`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`field-label`,children:i(`usage.companion.modelsOnChart`)}),(0,Q.jsx)(`span`,{className:`usage-companion-models-count text-caption muted`,children:i(`usage.companion.modelsCount`,{selected:te.length,total:m.length})})]}),G.models!==null&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>V({models:null}),disabled:c?.corrupt,children:i(`usage.companion.modelsShowAll`)})]}),(0,Q.jsx)(`div`,{className:`usage-companion-models-list`,children:q.map(e=>{let t=e.models.filter(e=>K.has(e.id)).length,n=t===e.models.length;return(0,Q.jsxs)(`div`,{className:`usage-companion-model-group`,children:[(0,Q.jsxs)(`div`,{className:`usage-companion-model-group-header`,children:[(0,Q.jsx)(`span`,{className:`usage-companion-model-provider`,children:e.provider}),(0,Q.jsx)(`span`,{className:`usage-companion-model-chip mono text-caption`,children:e.models.length}),(0,Q.jsx)(on,{on:n,mixed:t>0&&!n,onClick:()=>V({models:it(G.models,m,e.models.map(e=>e.id),!n)}),disabled:c?.corrupt,label:e.provider,title:e.provider})]}),e.models.map(e=>{let t=K.has(e.id);return(0,Q.jsxs)(`div`,{className:`usage-companion-model-row${t?``:` is-off`}`,children:[(0,Q.jsx)(on,{on:t,onClick:()=>V({models:it(G.models,m,[e.id],!t)}),disabled:c?.corrupt,label:e.id,title:e.id}),(0,Q.jsx)(`code`,{className:`mono text-control`,children:e.id}),(0,Q.jsx)(`span`,{className:`usage-companion-model-total muted text-caption`,children:P.has(e.id)?ot(e.total):`—`})]},e.id)})]},e.provider)})})]}),(0,Q.jsxs)(`fieldset`,{className:`usage-companion-controls`,disabled:c?.corrupt,children:[(0,Q.jsx)(kE,{label:i(`usage.companion.menuBarShows`),value:G.menuBarMetric,options:pE,optionLabel:e=>i(yE[e]),onChange:e=>V({menuBarMetric:e})}),(0,Q.jsx)(kE,{label:i(`usage.companion.window`),value:G.chartHours,options:mE,optionLabel:e=>i(bE[e]),onChange:e=>V({chartHours:e,bucketMinutes:Pe(e)})}),(0,Q.jsx)(kE,{label:i(`usage.companion.style`),value:G.chartStyle,options:hE,optionLabel:e=>i(e===`line`?`usage.companion.styleLine`:`usage.companion.styleStacked`),onChange:e=>V({chartStyle:e})}),(0,Q.jsx)(AE,{label:i(`usage.companion.metric`),value:G.tokenMetric,options:gE,optionLabel:e=>i(xE[e]),onChange:e=>V({tokenMetric:e})}),(0,Q.jsx)(AE,{label:i(`usage.companion.groupBy`),value:G.chartGrouping,options:vE,optionLabel:e=>i(e===`model`?`usage.companion.groupModel`:`usage.companion.groupAccount`),onChange:e=>V({chartGrouping:e})}),(0,Q.jsxs)(`fieldset`,{className:`usage-companion-switches`,children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:i(`usage.companion.popoverSections`)}),SE.map(([e,t])=>(0,Q.jsxs)(`div`,{className:`usage-companion-switch`,children:[(0,Q.jsx)(`span`,{children:i(t)}),(0,Q.jsx)(`button`,{type:`button`,className:`toggle ${G[e]?`on`:``}`,"aria-label":i(t),"aria-pressed":G[e],onClick:()=>V({[e]:!G[e]}),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})})]},e))]}),(0,Q.jsxs)(`details`,{className:`usage-companion-advanced`,children:[(0,Q.jsx)(`summary`,{children:i(`usage.companion.advanced`)}),(0,Q.jsxs)(`div`,{className:`usage-companion-advanced-body`,children:[(0,Q.jsx)(AE,{label:i(`usage.companion.aggregation`),value:G.aggregation,options:_E,optionLabel:e=>i(CE[e]),onChange:e=>V({aggregation:e})}),(0,Q.jsxs)(`label`,{className:`usage-companion-control`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:i(`usage.companion.menuText`)}),(0,Q.jsx)(`input`,{value:G.menuBarTemplate??``,onChange:e=>V({menuBarTemplate:e.target.value}),maxLength:200}),(0,Q.jsxs)(`span`,{className:`muted text-caption`,children:[i(`usage.companion.placeholders`),` `,(0,Q.jsx)(`code`,{children:`{requests} {totalTokens} {inputTokens} {outputTokens} {costUsd} {quotaPercent}`})]})]}),ee.length>0&&(0,Q.jsxs)(`fieldset`,{className:`usage-companion-check-list`,children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:i(`usage.companion.hideProviders`)}),ee.map(e=>(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:ne.has(e),onChange:t=>V({hiddenProviders:t.target.checked?[...G.hiddenProviders,e]:G.hiddenProviders.filter(t=>t!==e)})}),` `,(0,Q.jsx)(`span`,{children:e})]},e))]})]})]})]}),(0,Q.jsxs)(`div`,{className:`usage-companion-save-status${S===`error`?` is-error`:``}`,role:S===`error`?`alert`:`status`,children:[J||`\xA0`,S===`error`&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{C(`saving`)},children:i(`common.retry`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void U(),children:i(`usage.companion.reset`)}),(0,Q.jsx)(`p`,{className:`muted text-caption`,children:i(`usage.companion.footer`)})]})}function NE({apiBase:e,providers:t}){let[n,r]=(0,Z.useState)([]);return(0,Z.useEffect)(()=>{if(t.length>0)return;let n=new AbortController;return fetch(`${e}/api/config`,{signal:n.signal}).then(e=>hn(e)).then(e=>{n.signal.aborted||r(Object.keys(e?.providers??{}).map(e=>({provider:e})))}).catch(()=>{}),()=>n.abort()},[e,t.length]),(0,Q.jsx)(ME,{apiBase:e,providers:t.length>0?t:n})}function PE(){return window.location.hash.replace(/^#\/?/,``)===`usage/companion`?`companion`:`report`}function FE(e){window.location.hash=e===`report`?`usage`:`usage/companion`}function IE(e){if(e.key===`ArrowLeft`||e.key===`Home`||e.key===`ArrowRight`||e.key===`End`){e.preventDefault();let t=e.key===`ArrowLeft`||e.key===`Home`?`report`:`companion`;FE(t),document.getElementById(`usage-tab-${t}`)?.focus()}}var LE=class extends Error{};function RE(e){return`${Math.round(e*100)}%`}function zE({row:e,locale:t,t:n}){if(e.estimatedCostUsd===void 0&&e.pricedRequests===void 0&&e.unpricedRequests===void 0)return(0,Q.jsx)(`span`,{className:`muted`,children:`—`});let r=e.unpricedRequests??0,i=n(r===1?`usage.cost.excludedOne`:`usage.cost.excluded`,{count:r});return e.estimatedCostUsd===void 0?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted`,children:`—`}),r>0&&(0,Q.jsxs)(`span`,{className:`muted text-caption usage-cost-note`,children:[` `,i]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`mono`,children:Td(e.estimatedCostUsd??0,t)}),r>0&&(0,Q.jsxs)(`span`,{className:`muted text-caption usage-cost-note`,children:[` `,i]})]})}function BE(e,t,n){return typeof e==`number`&&Number.isFinite(e)&&e>=0?K(e,t):n}function VE(e,t){return typeof e==`number`&&Number.isFinite(e)?RE(e):t}function HE(e,t,n){if(typeof e.cacheHitRate!=`number`||!Number.isFinite(e.cacheHitRate))return n(`usage.cacheHitRate.unmeasured`);let r=e.cacheObservedInputTokens;if(!(typeof r!=`number`||!Number.isFinite(r)||r>=e.inputTokens))return n(`usage.cacheHitRate.partial`,{measured:K(r,t),total:K(e.inputTokens,t)})}function UE(e){return typeof e==`number`&&Number.isFinite(e)&&e>0}function WE(e,t){return UE(e.throughputTokensPerSec)?t(`usage.throughput.title`,{samples:e.throughputSamples??0}):t(`usage.throughput.unmeasured`)}function GE(e,t){let n=`${t}/${e}`,r=0;for(let e=0;e<n.length;e++)r=r*31+n.charCodeAt(e)>>>0;return`hsl(${r%360} 55% 55%)`}function KE(e){let t=new Map(e.map(e=>[e.date,e])),n=[],r=new Date;r.setHours(0,0,0,0),r.setDate(r.getDate()-6);for(let e=0;e<7;e++){let e=`${r.getFullYear()}-${String(r.getMonth()+1).padStart(2,`0`)}-${String(r.getDate()).padStart(2,`0`)}`,i=t.get(e);n.push({date:e,requests:i?.requests??0,measuredRequests:i?.measuredRequests??0,reportedRequests:i?.reportedRequests??0,totalTokens:i?.totalTokens??0,models:i?.models??[]}),r.setDate(r.getDate()+1)}return n}function qE(e,t){return new Intl.DateTimeFormat(t,{dateStyle:`medium`}).format(new Date(`${e}T12:00:00`))}function JE(e){let t=window.innerWidth,n=window.innerHeight,r=Math.min(240,Math.max(0,t-16));return{left:Math.max(8,Math.min(e.left+e.width/2-r/2,t-8-r)),maxWidth:r,...e.top-8>n-e.bottom-8?(()=>{let t=Math.max(8,Math.min(n-8,n-e.top+8));return{bottom:t,maxHeight:Math.max(0,n-t-8)}})():(()=>{let t=Math.max(8,Math.min(n-8,e.bottom+8));return{top:t,maxHeight:Math.max(0,n-t-8)}})()}}function YE({anchor:e,className:t,children:n}){return(0,Jt.createPortal)((0,Q.jsx)(`div`,{className:`${t} chart-overlay`,role:`tooltip`,style:JE(e),children:n}),document.body)}function XE(e,t,n){return n(`usage.chart.dayDetail`,{date:qE(e.date,t),requests:e.requests,tokens:K(e.totalTokens,t)})}function ZE(e){let t=e.filter(e=>e>0).sort((e,t)=>e-t);if(t.length===0)return[0,0,0,0];let n=e=>t[Math.min(t.length-1,Math.floor(e*t.length))];return[n(.25),n(.5),n(.75),n(.95)]}function QE(e,t){return e<=0?0:e<=t[0]?1:e<=t[1]?2:e<=t[2]?3:4}function $E(e,t=!1){let n=ZE(e.map(e=>e.totalTokens)),r=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];if(t){let t=[],i=[],a=[],o,s=-1,c=-4,l=e=>{for(;a.length<e;)a.push({date:``,requests:0,totalTokens:0,level:0,dayOfWeek:a.length})};for(let u of e){let[e,d,f]=u.date.split(`-`).map(Number),p=new Date(Date.UTC(e,d-1,f)),m=p.getUTCDay(),h=p.getTime()-m*864e5;o!==h&&(a.length>0&&(l(7),t.push(a)),a=[],o=h);let g=p.getUTCMonth();g!==s&&t.length-c>=4&&(i.push({label:r[g],col:t.length}),s=g,c=t.length),l(m),a.push({date:u.date,requests:u.requests,totalTokens:u.totalTokens,level:QE(u.totalTokens,n),dayOfWeek:m})}return a.length>0&&(l(7),t.push(a)),{weeks:t,months:i,buckets:n}}let i=new Map(e.map(e=>[e.date,e])),a=new Date;a.setHours(0,0,0,0);let o=new Date(a);o.setDate(o.getDate()-364),o.setDate(o.getDate()-o.getDay());let s=[],c=[],l=-4,u=-1,d=[],f=new Date(o);for(;f<=a;){let e=`${f.getFullYear()}-${String(f.getMonth()+1).padStart(2,`0`)}-${String(f.getDate()).padStart(2,`0`)}`,t=f.getMonth();f.getDay()===0&&t!==u&&s.length-l>=4&&(c.push({label:r[t],col:s.length}),l=s.length,u=t);let a=i.get(e);d.push({date:e,requests:a?.requests??0,totalTokens:a?.totalTokens??0,level:a?QE(a.totalTokens,n):0,dayOfWeek:f.getDay()}),f.getDay()===6&&(s.push(d),d=[]),f.setDate(f.getDate()+1)}if(d.length>0){for(;d.length<7;)d.push({date:``,requests:0,totalTokens:0,level:0,dayOfWeek:d.length});s.push(d)}return{weeks:s,months:c,buckets:n}}function eD({surface:e,range:t,onSurface:n,onRange:r,t:i}){return(0,Q.jsxs)(`div`,{className:`usage-filters`,children:[(0,Q.jsx)(`div`,{className:`usage-segmented`,role:`group`,"aria-label":i(`logs.filter.surface.label`),children:[`all`,`codex`,`claude`,`grok`].map(t=>{let r=i(`logs.filter.surface.${t}`);return(0,Q.jsxs)(`button`,{type:`button`,className:`usage-segmented-btn usage-source-btn${e===t?` active`:``}`,"aria-label":r,"aria-pressed":e===t,onClick:()=>n(t),children:[t===`codex`&&(0,Q.jsx)(`img`,{className:`usage-source-mark`,src:`/provider-icons/openai.svg`,alt:``,"aria-hidden":`true`}),t===`claude`&&(0,Q.jsx)(`img`,{className:`usage-source-mark`,src:`/provider-icons/claude-color.svg`,alt:``,"aria-hidden":`true`}),t===`grok`&&(0,Q.jsx)(`img`,{className:`usage-source-mark usage-source-mark--mono`,src:`/provider-icons/grok.svg`,alt:``,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:t===`all`?`usage-source-label`:`usage-source-label usage-source-label-collapsible`,children:r})]},t)})}),(0,Q.jsx)(`div`,{className:`usage-segmented`,role:`group`,"aria-label":i(`usage.title`),children:[`all`,`30d`,`7d`].map(e=>{let n=i(e===`all`?`usage.range.available`:`usage.range.${e}`);return(0,Q.jsx)(`button`,{type:`button`,className:`usage-segmented-btn${t===e?` active`:``}`,"aria-label":n,"aria-pressed":t===e,onClick:()=>r(e),children:n},e)})})]})}function tD({summary:e,activeDays:t,locale:n,t:r}){return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`usage-cards usage-cards-3x2`,role:`group`,"aria-label":r(`usage.title`),children:[(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:r(`usage.card.requests`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:e.requests})]}),(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:r(`usage.card.measured`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:e.measuredRequests})]}),(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:r(`usage.card.totalTokens`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:K(e.totalTokens,n)})]}),(0,Q.jsxs)(`div`,{className:`stat`,title:r(`usage.card.cachedTokensHint`),children:[(0,Q.jsx)(`div`,{className:`muted`,children:r(`usage.card.cachedTokens`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:K(e.cacheReadInputTokens??e.cachedInputTokens,n)}),(e.cacheCreationInputTokens??0)>0&&(0,Q.jsxs)(`div`,{className:`muted text-caption`,children:[r(`usage.card.cacheWriteTokens`),`: `,K(e.cacheCreationInputTokens??0,n)]})]}),(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:r(`usage.card.coverage`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:RE(e.coverageRatio)})]}),(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:r(`usage.card.activeDays`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:t})]})]}),(0,Q.jsxs)(`div`,{className:`usage-cost-row`,role:`note`,title:WE(e,r),children:[(0,Q.jsx)(`span`,{className:`muted`,children:r(`usage.col.tokPerSec`)}),(0,Q.jsx)(`span`,{className:`stat-value mono usage-cost-value`,children:UE(e.throughputTokensPerSec)?e.throughputTokensPerSec.toFixed(1):r(`usage.unavailable`)}),(0,Q.jsx)(`span`,{className:`muted text-caption`,children:WE(e,r)})]}),e.estimatedCostUsd!==void 0&&(0,Q.jsxs)(`div`,{className:`usage-cost-row`,role:`note`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:r(`usage.cost.total`)}),(0,Q.jsx)(`span`,{className:`stat-value mono usage-cost-value`,children:Td(e.estimatedCostUsd,n)}),(0,Q.jsx)(`span`,{className:`muted text-caption`,children:r(`usage.cost.disclaimer`)}),(e.unpricedRequests??0)+(e.unmeteredRequests??0)>0&&(0,Q.jsx)(`span`,{className:`muted text-caption`,children:r(`usage.cost.unpricedNote`).replace(`{count}`,String((e.unpricedRequests??0)+(e.unmeteredRequests??0)))})]})]})}function nD({weekBars:e,locale:t,t:n}){let[r,i]=(0,Z.useState)(null),a=Math.max(1,...e.map(e=>e.totalTokens)),o=e.find(e=>e.date===r?.date),s=(e,t)=>{i({date:e.date,anchor:t.getBoundingClientRect()})};return(0,Q.jsxs)(`div`,{className:`daybars`,role:`group`,"aria-label":n(`usage.section.heatmap`),children:[e.map(e=>{let r=Math.round(e.totalTokens/a*100),o=new Intl.DateTimeFormat(t,{weekday:`short`}).format(new Date(`${e.date}T12:00:00`));return(0,Q.jsxs)(`button`,{type:`button`,className:`daybar`,"aria-label":XE(e,t,n),onFocus:t=>s(e,t.currentTarget),onBlur:()=>i(t=>t?.date===e.date?null:t),onPointerEnter:t=>s(e,t.currentTarget),onPointerDown:t=>s(e,t.currentTarget),onPointerLeave:t=>{t.pointerType!==`touch`&&document.activeElement!==t.currentTarget&&i(t=>t?.date===e.date?null:t)},children:[(0,Q.jsx)(`div`,{className:`daybar-track`,children:(0,Q.jsxs)(`div`,{className:`daybar-stack`,style:{"--daybar-scale":String(Math.max(0,Math.min(1,r/100)))},children:[e.models.map(e=>(0,Q.jsx)(`div`,{className:`daybar-seg`,style:{flexGrow:e.totalTokens,background:GE(e.model,e.provider)}},`${e.provider}/${e.model}`)),e.models.length===0&&e.totalTokens>0&&(0,Q.jsx)(`div`,{className:`daybar-seg`,style:{flexGrow:1,background:`var(--green)`}})]})}),(0,Q.jsx)(`span`,{className:`daybar-count`,children:K(e.totalTokens,t)}),(0,Q.jsx)(`span`,{className:`daybar-label muted`,children:o})]},e.date)}),r&&o&&(0,Q.jsxs)(YE,{className:`daybar-tip`,anchor:r.anchor,children:[(0,Q.jsx)(`div`,{className:`daybar-tip-date`,children:qE(o.date,t)}),(0,Q.jsxs)(`div`,{className:`daybar-tip-row`,children:[(0,Q.jsx)(`span`,{children:n(`usage.heatmap.tooltipRequests`,{requests:o.requests})}),(0,Q.jsx)(`span`,{className:`daybar-tip-val`,children:n(`usage.heatmap.tooltipTokens`,{tokens:K(o.totalTokens,t)})})]}),o.models.slice(0,8).map(e=>(0,Q.jsxs)(`div`,{className:`daybar-tip-row`,children:[(0,Q.jsx)(`span`,{className:`daybar-tip-swatch`,style:{background:GE(e.model,e.provider)}}),(0,Q.jsx)(`span`,{className:`daybar-tip-name`,children:_v(e.model)}),(0,Q.jsx)(`span`,{className:`daybar-tip-val`,children:K(e.totalTokens,t)})]},`${e.provider}/${e.model}`))]})]})}function rD({range:e,heatmap:t,weekBars:n,locale:r,t:i}){let a=(0,Z.useRef)(null),o=(0,Z.useMemo)(()=>t.weeks.flat().filter(e=>e.date),[t]),[s,c]=(0,Z.useState)(()=>o.at(-1)?.date??``),[l,u]=(0,Z.useState)(null),d=(0,Z.useId)(),f=o.some(e=>e.date===s)?s:o.at(-1)?.date??``,p=(e,t)=>{c(e.date),u({date:e.date,anchor:t.getBoundingClientRect()})},m=(e,t)=>{let n=o.findIndex(e=>e.date===t.date),r=e.key===`ArrowUp`?-1:e.key===`ArrowDown`?1:e.key===`ArrowLeft`?-7:e.key===`ArrowRight`?7:0;if(!r||n<0)return;e.preventDefault();let i=o[Math.max(0,Math.min(o.length-1,n+r))];c(i.date);let s=a.current?.querySelector(`[data-date="${i.date}"]`);s&&(s.focus(),u({date:i.date,anchor:s.getBoundingClientRect()}))};return(0,Z.useEffect)(()=>{let e=a.current;if(!e)return;let t=()=>{e.scrollLeft=e.scrollWidth};t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[t,e]),(0,Q.jsxs)(`section`,{className:`panel`,style:{marginTop:16},"aria-labelledby":`usage-heatmap-title`,children:[(0,Q.jsx)(`h3`,{id:`usage-heatmap-title`,className:`panel-title`,children:i(`usage.section.heatmap`)}),e===`7d`?(0,Q.jsx)(nD,{weekBars:n,locale:r,t:i}):(0,Q.jsxs)(`div`,{className:`heatmap`,ref:a,children:[(0,Q.jsxs)(`div`,{className:`heatmap-months`,style:{gridTemplateColumns:`28px repeat(${t.weeks.length}, calc(var(--hm-cell) + var(--hm-gap)))`},children:[(0,Q.jsx)(`span`,{className:`heatmap-day-spacer`}),t.months.map(e=>(0,Q.jsx)(`span`,{className:`heatmap-month`,style:{gridColumn:e.col+2},children:e.label},`${e.label}-${e.col}`))]}),(0,Q.jsxs)(`div`,{className:`heatmap-body`,children:[(0,Q.jsxs)(`div`,{className:`heatmap-days`,children:[(0,Q.jsx)(`span`,{}),(0,Q.jsx)(`span`,{children:i(`usage.dayMon`)}),(0,Q.jsx)(`span`,{}),(0,Q.jsx)(`span`,{children:i(`usage.dayWed`)}),(0,Q.jsx)(`span`,{}),(0,Q.jsx)(`span`,{children:i(`usage.dayFri`)}),(0,Q.jsx)(`span`,{})]}),(0,Q.jsx)(`div`,{className:`heatmap-grid`,role:`group`,"aria-labelledby":`usage-heatmap-title`,"aria-describedby":d,style:{gridTemplateColumns:`repeat(${t.weeks.length}, var(--hm-cell))`},children:t.weeks.map((e,t)=>(0,Q.jsx)(`div`,{className:`heatmap-week`,children:e.map((e,n)=>e.date?(0,Q.jsx)(`button`,{type:`button`,className:`heatmap-cell heatmap-cell-${e.level}`,"data-date":e.date,tabIndex:f===e.date?0:-1,"aria-label":XE(e,r,i),onFocus:t=>p(e,t.currentTarget),onBlur:()=>u(t=>t?.date===e.date?null:t),onKeyDown:t=>m(t,e),onPointerEnter:t=>p(e,t.currentTarget),onPointerDown:t=>p(e,t.currentTarget),onPointerLeave:t=>{t.pointerType!==`touch`&&document.activeElement!==t.currentTarget&&u(t=>t?.date===e.date?null:t)}},e.date):(0,Q.jsx)(`span`,{className:`heatmap-cell heatmap-cell-0`,"aria-hidden":`true`},`pad-${t}-${n}`))},e[0]?.date||`week-${t}`))})]}),(0,Q.jsx)(`span`,{id:d,className:`sr-only`,children:i(`usage.heatmap.keyboardLabel`)}),(0,Q.jsx)(`span`,{className:`sr-only`,"aria-live":`polite`,children:o.find(e=>e.date===f)?XE(o.find(e=>e.date===f),r,i):``}),l&&(()=>{let e=o.find(e=>e.date===l.date);return e?.date?(0,Q.jsxs)(YE,{className:`heatmap-tip`,anchor:l.anchor,children:[(0,Q.jsx)(`div`,{className:`heatmap-tip-date`,children:qE(e.date,r)}),(0,Q.jsx)(`div`,{className:`heatmap-tip-val`,children:i(`usage.heatmap.tooltipTokens`,{tokens:K(e.totalTokens,r)})}),(0,Q.jsx)(`div`,{className:`heatmap-tip-req muted`,children:i(`usage.heatmap.tooltipRequests`,{requests:e.requests})})]}):null})(),(0,Q.jsxs)(`div`,{className:`heatmap-legend muted`,children:[(0,Q.jsx)(`span`,{children:i(`usage.heatmap.less`)}),[0,1,2,3,4].map(e=>(0,Q.jsx)(`span`,{className:`heatmap-cell heatmap-cell-${e}`},e)),(0,Q.jsx)(`span`,{children:i(`usage.heatmap.more`)})]})]})]})}function iD({title:e,titleId:t,children:n}){return(0,Q.jsxs)(`section`,{className:`usw-section`,"aria-labelledby":t,children:[(0,Q.jsx)(`h3`,{id:t,className:`h-section`,children:e}),n]})}function aD({models:e,modelQuery:t,onModelQuery:n,locale:r,t:i,workspace:a=!1}){let o=i(`usage.search.models`),s=i(`usage.section.models`),c=`usage-models-title`,l=`usage-models-list-price-disclaimer`,u=i(`usage.unavailable`),d=(0,Q.jsx)(`input`,{className:`input`,"aria-label":o,placeholder:o,value:t,onChange:e=>n(e.target.value)}),f=(0,Q.jsxs)(`div`,{className:`tbl-wrap`,children:[(0,Q.jsxs)(`table`,{className:`tbl usage-models-tbl`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:i(`logs.col.model`)}),(0,Q.jsx)(`th`,{children:i(`logs.col.provider`)}),(0,Q.jsx)(`th`,{children:i(`usage.col.share`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`usage.col.tokens`)}),(0,Q.jsx)(`th`,{className:`num`,"aria-describedby":l,children:i(`usage.col.apiListPrice`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`usage.col.requests`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`usage.col.measured`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`usage.col.inputTokens`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`usage.col.outputTokens`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`usage.col.tokPerSec`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`usage.col.cacheHits`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`usage.col.cacheWrites`)}),(0,Q.jsx)(`th`,{className:`num`,children:i(`usage.col.cacheHitRate`)})]})}),(0,Q.jsx)(`tbody`,{children:e.map(e=>{let t=be(e.provider,i),n=HE(e,r,i),a=WE(e,i);return(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{className:`mono`,title:e.model,children:_v(e.model)}),(0,Q.jsx)(`td`,{className:`muted`,title:t,children:t}),(0,Q.jsx)(`td`,{children:(0,Q.jsx)(`div`,{className:`usage-bar`,children:(0,Q.jsx)(`div`,{className:`usage-bar-fill`,style:{width:`${Math.round(e.shareRatio*100)}%`}})})}),(0,Q.jsx)(`td`,{className:`num mono`,children:K(e.totalTokens,r)}),(0,Q.jsx)(`td`,{className:`num`,children:(0,Q.jsx)(zE,{row:e,locale:r,t:i})}),(0,Q.jsx)(`td`,{className:`num`,children:e.requests}),(0,Q.jsx)(`td`,{className:`num`,children:e.measuredRequests}),(0,Q.jsx)(`td`,{className:`num mono`,children:K(e.inputTokens,r)}),(0,Q.jsx)(`td`,{className:`num mono`,children:K(e.outputTokens,r)}),(0,Q.jsxs)(`td`,{className:`num mono`,title:a,children:[(0,Q.jsx)(`span`,{className:`usage-hit-rate`,children:UE(e.throughputTokensPerSec)?`${e.throughputTokensPerSec.toFixed(1)} tok/s`:u}),UE(e.throughputTokensPerSec)&&(0,Q.jsx)(`span`,{className:`sr-only`,children:a})]}),(0,Q.jsx)(`td`,{className:`num mono`,children:BE(e.cacheReadInputTokens??e.cachedInputTokens,r,u)}),(0,Q.jsx)(`td`,{className:`num mono`,children:BE(e.cacheCreationInputTokens,r,u)}),(0,Q.jsxs)(`td`,{className:`num mono`,title:n,children:[(0,Q.jsx)(`span`,{className:`usage-hit-rate`,children:VE(e.cacheHitRate,u)}),n!==void 0&&(0,Q.jsx)(`span`,{className:`sr-only`,children:n})]})]},`${e.provider}/${e.model}`)})})]}),(0,Q.jsx)(`p`,{id:l,className:`muted text-caption`,children:i(`usage.cost.disclaimer`)})]});return a?(0,Q.jsxs)(iD,{title:s,titleId:c,children:[(0,Q.jsx)(`div`,{className:`usw-section-toolbar`,children:d}),f]}):(0,Q.jsxs)(`section`,{className:`panel`,style:{marginTop:16},"aria-labelledby":c,children:[(0,Q.jsxs)(`div`,{className:`panel-head`,children:[(0,Q.jsx)(`h3`,{id:c,className:`panel-title`,children:s}),d]}),f]})}function oD({providers:e,locale:t,t:n,workspace:r=!1}){let i=n(`usage.unavailable`),a=n(`usage.section.providers`),o=`usage-providers-title`,s=`usage-providers-list-price-disclaimer`,c=(0,Q.jsxs)(`div`,{className:`tbl-wrap`,children:[(0,Q.jsxs)(`table`,{className:`tbl`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:n(`logs.col.provider`)}),(0,Q.jsx)(`th`,{className:`num`,children:n(`usage.col.requests`)}),(0,Q.jsx)(`th`,{className:`num`,children:n(`usage.col.measured`)}),(0,Q.jsx)(`th`,{className:`num`,children:n(`usage.col.tokens`)}),(0,Q.jsx)(`th`,{className:`num`,children:n(`usage.col.tokPerSec`)}),(0,Q.jsx)(`th`,{className:`num`,"aria-describedby":s,children:n(`usage.col.apiListPrice`)}),(0,Q.jsx)(`th`,{children:n(`usage.col.share`)})]})}),(0,Q.jsx)(`tbody`,{children:e.map(e=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{className:`mono`,children:be(e.provider,n)}),(0,Q.jsx)(`td`,{className:`num`,children:e.requests}),(0,Q.jsx)(`td`,{className:`num`,children:e.measuredRequests}),(0,Q.jsx)(`td`,{className:`num mono`,children:K(e.totalTokens,t)}),(0,Q.jsxs)(`td`,{className:`num mono`,title:WE(e,n),children:[(0,Q.jsx)(`span`,{className:`usage-hit-rate`,children:UE(e.throughputTokensPerSec)?`${e.throughputTokensPerSec.toFixed(1)} tok/s`:i}),UE(e.throughputTokensPerSec)&&(0,Q.jsx)(`span`,{className:`sr-only`,children:WE(e,n)})]}),(0,Q.jsx)(`td`,{className:`num`,children:(0,Q.jsx)(zE,{row:e,locale:t,t:n})}),(0,Q.jsx)(`td`,{children:(0,Q.jsx)(`div`,{className:`usage-bar`,children:(0,Q.jsx)(`div`,{className:`usage-bar-fill`,style:{width:`${Math.round(e.shareRatio*100)}%`}})})})]},e.provider))})]}),(0,Q.jsx)(`p`,{id:s,className:`muted text-caption`,children:n(`usage.cost.disclaimer`)})]});return r?(0,Q.jsx)(iD,{title:a,titleId:o,children:c}):(0,Q.jsxs)(`section`,{className:`panel`,style:{marginTop:16},"aria-labelledby":o,children:[(0,Q.jsx)(`h3`,{id:o,className:`panel-title`,children:a}),c]})}function sD({summary:e,t,workspace:n=!1}){let r=t(`usage.section.coverage`),i=`usage-coverage-title`,a=(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`usage-cards usage-cards-3x2`,children:[(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:t(`usage.coverage.measured`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:e.measuredRequests})]}),(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:t(`usage.coverage.reported`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:e.reportedRequests})]}),(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:t(`usage.coverage.estimated`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:e.estimatedRequests})]}),(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:t(`logs.tokens.unreported`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:e.unreportedRequests})]}),(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:t(`logs.tokens.unsupported`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:e.unsupportedRequests})]})]}),(0,Q.jsx)(`p`,{className:`muted text-control`,style:{marginTop:12},children:t(`usage.coverage.note`)})]});return n?(0,Q.jsx)(iD,{title:r,titleId:i,children:a}):(0,Q.jsxs)(`section`,{className:`panel`,style:{marginTop:16},"aria-labelledby":i,children:[(0,Q.jsx)(`h3`,{id:i,className:`panel-title`,children:r}),a]})}function cD({data:e,heatmap:t,weekBars:n,activeDays:r,filteredModels:i,modelQuery:a,onModelQuery:o,sortedProviders:s,range:c,locale:l,t:u}){let d=!!e&&e.summary.requests===0,f=[{id:`overview`,label:u(`usage.section.overview`),meta:e?`${e.summary.requests}`:`—`,body:e?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(tD,{summary:e.summary,activeDays:r,locale:l,t:u}),(0,Q.jsx)(rD,{range:c,heatmap:t,weekBars:n,locale:l,t:u})]}):null},{id:`models`,label:u(`usage.section.models`),meta:e?`${e.models.length}`:`—`,body:e?(0,Q.jsx)(aD,{models:i,modelQuery:a,onModelQuery:o,locale:l,t:u,workspace:!0}):null},{id:`providers`,label:u(`usage.section.providers`),meta:e?`${e.providers.length}`:`—`,body:e?(0,Q.jsx)(oD,{providers:s,locale:l,t:u,workspace:!0}):null},{id:`coverage`,label:u(`usage.section.coverage`),meta:e?RE(e.summary.coverageRatio):`—`,body:e?(0,Q.jsx)(sD,{summary:e.summary,t:u,workspace:!0}):null}];return(0,Q.jsx)(`div`,{className:`usage-workspace-shell`,children:(0,Q.jsxs)(`div`,{className:`usage-workspace-root`,children:[(0,Q.jsx)(LC,{scope:`usage`,ariaLabel:u(`usage.workspace.sections`),items:f.map(e=>({id:e.id,label:e.label,meta:e.meta}))}),(0,Q.jsx)(`section`,{className:`usage-workspace-main`,"aria-label":u(`usage.workspace.report`),children:d?(0,Q.jsx)(ln,{title:u(`usage.empty`)}):f.map(e=>(0,Q.jsx)(`div`,{id:PC(`usage`,e.id),className:`usw-body usw-section-block`,children:e.body},e.id))})]})})}var lD=new Map;function uD(e,t,n,r,i,a){return`ocx.usage.v2:${e}:${r?`connected`:`standalone`}:${i}:${a??``}:${t}:${n}`}function dD(e,t,n,r,i,a){let o=uD(e,t,n,r,i,a);return lD.get(o)??Ua(o)}function fD(e,t,n,r,i,a,o){let s=uD(e,t,n,r,i,a);lD.set(s,o),qa(s,o)}function pD({apiBase:e,connected:n=!1,apiKeyId:r}){let{t:i,locale:a}=t(),[o,s]=(0,Z.useState)(PE);(0,Z.useEffect)(()=>{let e=()=>s(PE());return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[]);let[c,l]=(0,Z.useState)(`30d`),[u,d]=(0,Z.useState)(`all`),[f,p]=(0,Z.useState)(`machine`),[m,h]=(0,Z.useState)(``),[g,_]=(0,Z.useState)({since:``,until:``}),[v,y]=(0,Z.useState)(null),[b,x]=(0,Z.useState)(null),[S,C]=(0,Z.useState)(!1),w=v?.since,T=v?.until,E=()=>{y(null),_({since:``,until:``}),x(null)},D=e=>{l(e),E()},O=(0,Z.useCallback)(async t=>{let i=new URLSearchParams({range:c,surface:u});n&&f===`machine`&&r&&i.set(`apiKeyId`,r),w!==void 0&&T!==void 0&&(i.set(`since`,String(w)),i.set(`until`,String(T)));let a=await mr(await fetch(`${e}/api/usage?${i}`,{signal:t}));if(w!==void 0&&(a?.customWindow!==!0||a.since!==w||a.until!==T))throw new LE;return w===void 0&&fD(e,c,u,n,f,r,a),a},[e,r,n,c,f,u,w,T]),k=uD(e,c,u,n,f,r),A=v?JSON.stringify([k,w,T]):k,j=v?null:dD(e,c,u,n,f,r),M=Ya(A,[e,r,n,c,f,u,w,T],O,{isEmpty:()=>!1,initialData:j??void 0}),{state:N}=M,P=N.data??j??null,F=(0,Z.useMemo)(()=>$E(P?.days??[],!!v),[P?.days,v]),I=(0,Z.useMemo)(()=>KE(P?.days??[]),[P?.days]),L=(0,Z.useMemo)(()=>(P?.days??[]).filter(e=>e.requests>0).length,[P?.days]),R=(0,Z.useMemo)(()=>{let e=m.trim().toLowerCase(),t=(P?.models??[]).toSorted((e,t)=>t.totalTokens-e.totalTokens);return e?t.filter(t=>t.model.toLowerCase().includes(e)||t.provider.toLowerCase().includes(e)||(t.resolvedModel??``).toLowerCase().includes(e)).slice(0,100):t.slice(0,100)},[P?.models,m]),z=(0,Z.useMemo)(()=>(P?.providers??[]).toSorted((e,t)=>t.totalTokens-e.totalTokens),[P?.providers]);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`page-head usage-head`,children:[(0,Q.jsx)(`h2`,{id:`usage-page-title`,children:i(`usage.title`)}),o===`report`&&(0,Q.jsx)(eD,{surface:u,range:v?null:c,onSurface:d,onRange:D,t:i})]}),(0,Q.jsx)(`div`,{className:`page-tabs`,role:`tablist`,"aria-label":i(`nav.usage`),children:[`report`,`companion`].map(e=>(0,Q.jsx)(`button`,{type:`button`,role:`tab`,id:`usage-tab-${e}`,"aria-selected":o===e,"aria-controls":`usage-panel-${e}`,tabIndex:o===e?0:-1,className:`page-tab${o===e?` page-tab--active`:``}`,onClick:()=>FE(e),onKeyDown:IE,children:i(e===`report`?`usage.workspace.report`:`usage.section.companion`)},e))}),o===`companion`?(0,Q.jsx)(`div`,{role:`tabpanel`,id:`usage-panel-companion`,"aria-labelledby":`usage-tab-companion`,children:(0,Q.jsx)(NE,{apiBase:e,providers:P?.providers??[]})}):(0,Q.jsxs)(`div`,{role:`tabpanel`,id:`usage-panel-report`,"aria-labelledby":`usage-tab-report`,children:[(0,Q.jsx)(`p`,{className:`page-sub`,children:i(`usage.subtitle`)}),(0,Q.jsxs)(`section`,{className:`usage-range`,children:[(0,Q.jsxs)(`div`,{className:`usage-range-bar`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`usage-range-toggle${v?` is-active`:``}`,"aria-expanded":S,"aria-controls":S?`usage-range-panel`:void 0,onClick:()=>{S&&x(null),C(!S)},children:[(0,Q.jsx)(`span`,{children:i(`usage.range.custom`)}),(0,Q.jsx)(Ke,{width:12,height:12,"aria-hidden":`true`,className:`usage-range-chevron`})]}),v&&(0,Q.jsx)(`p`,{className:`usage-range-applied muted text-control`,role:`status`,children:(()=>{let e=new Intl.DateTimeFormat(a,{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,fractionalSecondDigits:3,timeZoneName:`short`});return i(`usage.range.applied`,{start:e.format(v.since),end:e.format(v.until)})})()})]}),S&&(0,Q.jsxs)(`form`,{id:`usage-range-panel`,className:`usage-range-panel`,"aria-label":i(`usage.range.custom`),noValidate:!0,onSubmit:e=>{e.preventDefault();let t=fE(g.since,g.until);if(t.ok===!1){x(t.error);return}x(null),y(t.window)},children:[(0,Q.jsxs)(`div`,{className:`usage-range-fields`,children:[(0,Q.jsxs)(`label`,{className:`usage-range-field`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:i(`usage.range.start`)}),(0,Q.jsx)(`input`,{className:`input`,type:`datetime-local`,step:`60`,required:!0,value:g.since,"aria-invalid":b!==null,"aria-describedby":b?`usage-range-help usage-range-error`:`usage-range-help`,onChange:e=>{let t=e.currentTarget.value;_(e=>({...e,since:t})),x(null)}})]}),(0,Q.jsxs)(`label`,{className:`usage-range-field`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:i(`usage.range.end`)}),(0,Q.jsx)(`input`,{className:`input`,type:`datetime-local`,step:`60`,required:!0,value:g.until,"aria-invalid":b!==null,"aria-describedby":b?`usage-range-help usage-range-error`:`usage-range-help`,onChange:e=>{let t=e.currentTarget.value;_(e=>({...e,until:t})),x(null)}})]}),(0,Q.jsx)(`button`,{type:`submit`,className:`btn btn-primary btn-sm usage-range-action`,children:i(`usage.range.apply`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm usage-range-action`,onClick:E,children:i(`usage.range.clear`)})]}),(0,Q.jsx)(`p`,{id:`usage-range-help`,className:`muted text-caption`,children:i(`usage.range.help`)}),b&&(0,Q.jsx)(`p`,{id:`usage-range-error`,role:`alert`,className:`notice notice-err`,children:i(`usage.range.${b}`)})]})]}),n&&(0,Q.jsxs)(`div`,{className:`usage-source-row`,children:[(0,Q.jsx)(`span`,{children:i(`usage.source.connected`)}),(0,Q.jsxs)(`div`,{className:`usage-scope-control`,role:`group`,"aria-label":i(`usage.scope.label`),children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm${f===`machine`?` btn-primary`:` btn-ghost`}`,"aria-pressed":f===`machine`,onClick:()=>p(`machine`),children:i(`usage.scope.machine`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm${f===`hub`?` btn-primary`:` btn-ghost`}`,"aria-pressed":f===`hub`,onClick:()=>p(`hub`),children:i(`usage.scope.hub`)})]})]}),N.showSkeleton&&!P?(0,Q.jsx)(Ry,{label:i(`usage.loading`),rows:5}):N.kind===`failed-cold`?(0,Q.jsxs)($,{tone:`err`,children:[N.error instanceof LE?`${i(`usage.loadError`)} ${i(`dash.codexRestartMalformed`)}`:N.error instanceof pr?i(`usage.loadError`):n?i(`usage.hubOffline`):N.error instanceof Error?`${i(`usage.loadError`)} ${N.error.message}`:i(`usage.loadError`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>M.refresh(),children:i(`common.retry`)})]}):(0,Q.jsxs)(Q.Fragment,{children:[N.showError&&(0,Q.jsx)($,{tone:`err`,children:i(n&&!(N.error instanceof pr)?`usage.hubOffline`:`usage.loadError`)}),(0,Q.jsx)(gr,{data:P}),P?.historyTruncated&&(0,Q.jsx)($,{tone:`warn`,children:(()=>{let e=mD(P.snapshotWindowStart),t=mD(P.snapshotWindowEnd);return e!==null&&t!==null?i(`usage.historyTruncatedWindow`,{start:e,end:t}):i(`usage.historyTruncated`)})()}),(0,Q.jsx)(cD,{data:P,heatmap:F,weekBars:I,activeDays:L,filteredModels:R,modelQuery:m,onModelQuery:h,sortedProviders:z,range:v?null:c,locale:a,t:i})]})]})]})}function mD(e){if(typeof e!=`number`||!Number.isFinite(e))return null;let t=new Date(e);return Number.isFinite(t.getTime())?t.toLocaleString():null}function hD(e,t){if(e<1024)return`${e} B`;let n=[`KiB`,`MiB`,`GiB`,`TiB`],r=e,i=-1;do r/=1024,i++;while(r>=1024&&i<n.length-1);return`${r.toLocaleString(t,{maximumFractionDigits:1})} ${n[i]}`}var gD={en:{compact:`Compact`,compactComplete:`Compaction complete (logical / on-disk reclaimed)`,pagesUnit:`pages`,compactPartial:`Compaction partial (logical / on-disk reclaimed)`,confirmCompact:`Confirm compaction`,cancel:`Cancel`,inspectionOnly:`Inspection only`,externalSqliteHome:`External SQLite storage`,inspectionUnavailable:`Diagnostic log inspection is unavailable.`,metricsSkippedLarge:`Row metrics skipped: the database is above {threshold}, and scanning it would stall the proxy.`,protection:`Protection`,compat:`Compatibility`,quiet:`Quiet`,disable:`Disable protection`,repair:`Repair protection`,applying:`Applying protection…`,"error.generic":`Could not change Codex log protection.`,"error.codex_running":`Quit Codex before changing log protection.`,"error.process_enumeration_failed":`Could not verify that Codex is stopped. Protection was not changed.`,"error.busy":`The Codex logs database is busy. Quit Codex and try again.`,"error.unsupported_schema":`This Codex logs schema is not supported for protection.`,"error.trigger_collision":`A reserved Log Guard trigger name is already in use. Protection was not changed.`,"error.unsafe_path":`The Codex logs database path failed the safety check.`,"error.database_error":`Could not update the Codex logs database.`,"error.config_write_failed":`The database changed, but OpenCodex could not save the protection setting. Fix config storage, then run Repair.`},de:{compact:`Komprimieren`,compactComplete:`Komprimierung abgeschlossen (logisch / auf Datentraeger freigegeben)`,pagesUnit:`Seiten`,compactPartial:`Komprimierung teilweise (logisch / auf Datentraeger freigegeben)`,confirmCompact:`Komprimierung bestätigen`,cancel:`Abbrechen`,inspectionOnly:`Nur Inspektion`,externalSqliteHome:`Externer SQLite-Speicher`,inspectionUnavailable:`Die Diagnoseprotokoll-Inspektion ist nicht verfügbar.`,metricsSkippedLarge:`Zeilenmetriken übersprungen: Die Datenbank ist größer als {threshold}; ein Scan würde den Proxy blockieren.`,protection:`Schutz`,compat:`Kompatibilität`,quiet:`Leise`,disable:`Schutz deaktivieren`,repair:`Schutz reparieren`,applying:`Schutz wird angewendet…`,"error.generic":`Der Schutz der Codex-Protokolle konnte nicht geändert werden.`,"error.codex_running":`Beende Codex, bevor du den Protokollschutz änderst.`,"error.process_enumeration_failed":`Es konnte nicht sicher festgestellt werden, dass Codex beendet ist. Der Schutz wurde nicht geändert.`,"error.busy":`Die Codex-Protokolldatenbank ist belegt. Beende Codex und versuche es erneut.`,"error.unsupported_schema":`Dieses Schema der Codex-Protokolldatenbank wird für den Schutz nicht unterstützt.`,"error.trigger_collision":`Ein reservierter Log-Guard-Triggername wird bereits verwendet. Der Schutz wurde nicht geändert.`,"error.unsafe_path":`Der Pfad der Codex-Protokolldatenbank hat die Sicherheitsprüfung nicht bestanden.`,"error.database_error":`Die Codex-Protokolldatenbank konnte nicht aktualisiert werden.`,"error.config_write_failed":`Die Datenbank wurde geändert, aber OpenCodex konnte die Schutzeinstellung nicht speichern. Repariere den Konfigurationsspeicher und führe danach Reparieren aus.`},fr:{compact:`Compacter`,compactComplete:`Compactage termine (logique / recupere sur disque)`,pagesUnit:`pages`,compactPartial:`Compactage partiel (logique / recupere sur disque)`,confirmCompact:`Confirmer le compactage`,cancel:`Annuler`,inspectionOnly:`Inspection uniquement`,externalSqliteHome:`Stockage SQLite externe`,inspectionUnavailable:`L’inspection des journaux de diagnostic est indisponible.`,metricsSkippedLarge:`Métriques de lignes ignorées : la base dépasse {threshold} et son analyse bloquerait le proxy.`,protection:`Protection`,compat:`Compatibilité`,quiet:`Silencieux`,disable:`Désactiver la protection`,repair:`Réparer la protection`,applying:`Application de la protection…`,"error.generic":`Impossible de modifier la protection des journaux Codex.`,"error.codex_running":`Quittez Codex avant de modifier la protection des journaux.`,"error.process_enumeration_failed":`Impossible de vérifier que Codex est arrêté. La protection n’a pas été modifiée.`,"error.busy":`La base de données des journaux Codex est occupée. Quittez Codex et réessayez.`,"error.unsupported_schema":`Ce schéma de journaux Codex n’est pas pris en charge pour la protection.`,"error.trigger_collision":`Un nom de déclencheur Log Guard réservé est déjà utilisé. La protection n’a pas été modifiée.`,"error.unsafe_path":`Le chemin de la base de données des journaux Codex a échoué au contrôle de sécurité.`,"error.database_error":`Impossible de mettre à jour la base de données des journaux Codex.`,"error.config_write_failed":`La base de données a été modifiée, mais OpenCodex n’a pas pu enregistrer le paramètre de protection. Corrigez le stockage de configuration, puis lancez Réparer.`},ko:{compact:`압축`,compactComplete:`압축 완료 (논리 / 디스크 회수량)`,pagesUnit:`페이지`,compactPartial:`압축 부분 완료 (논리 / 디스크 회수량)`,confirmCompact:`압축 확인`,cancel:`취소`,inspectionOnly:`검사 전용`,externalSqliteHome:`외부 SQLite 저장소`,inspectionUnavailable:`진단 로그 검사를 사용할 수 없습니다.`,metricsSkippedLarge:`행 지표를 건너뛰었습니다. 데이터베이스가 {threshold}보다 커서 스캔하면 프록시가 멈춥니다.`,protection:`보호`,compat:`호환 모드`,quiet:`조용한 모드`,disable:`보호 비활성화`,repair:`보호 복구`,applying:`보호 적용 중…`,"error.generic":`Codex 로그 보호를 변경하지 못했습니다.`,"error.codex_running":`로그 보호를 변경하기 전에 Codex를 종료하세요.`,"error.process_enumeration_failed":`Codex가 종료되었는지 확인할 수 없어 보호를 변경하지 않았습니다.`,"error.busy":`Codex 로그 데이터베이스가 사용 중입니다. Codex를 종료한 뒤 다시 시도하세요.`,"error.unsupported_schema":`이 Codex 로그 스키마는 보호 기능을 지원하지 않습니다.`,"error.trigger_collision":`예약된 Log Guard 트리거 이름이 이미 사용 중입니다. 보호를 변경하지 않았습니다.`,"error.unsafe_path":`Codex 로그 데이터베이스 경로가 안전성 검사를 통과하지 못했습니다.`,"error.database_error":`Codex 로그 데이터베이스를 업데이트하지 못했습니다.`,"error.config_write_failed":`데이터베이스는 변경되었지만 OpenCodex가 보호 설정을 저장하지 못했습니다. 구성 저장소를 수정한 뒤 복구를 실행하세요.`},zh:{compact:`压缩`,compactComplete:`压缩完成(逻辑 / 磁盘回收)`,pagesUnit:`页`,compactPartial:`压缩部分完成(逻辑 / 磁盘回收)`,confirmCompact:`确认压缩`,cancel:`取消`,inspectionOnly:`仅检查`,externalSqliteHome:`外部 SQLite 存储`,inspectionUnavailable:`诊断日志检查当前不可用。`,metricsSkippedLarge:`已跳过行指标:数据库超过 {threshold},扫描会阻塞代理。`,protection:`保护`,compat:`兼容模式`,quiet:`静默模式`,disable:`禁用保护`,repair:`修复保护`,applying:`正在应用保护…`,"error.generic":`无法更改 Codex 日志保护。`,"error.codex_running":`更改 Codex 日志保护前请先退出 Codex。`,"error.process_enumeration_failed":`无法确认 Codex 已停止,因此未更改保护设置。`,"error.busy":`Codex 日志数据库正忙。请退出 Codex 后重试。`,"error.unsupported_schema":`此 Codex 日志数据库结构不支持保护功能。`,"error.trigger_collision":`保留的 Log Guard 触发器名称已被占用,因此未更改保护设置。`,"error.unsafe_path":`Codex 日志数据库路径未通过安全检查。`,"error.database_error":`无法更新 Codex 日志数据库。`,"error.config_write_failed":`数据库已更改,但 OpenCodex 无法保存保护设置。请先修复配置存储,然后运行“修复保护”。`},"zh-TW":{compact:`壓縮`,compactComplete:`压缩完成(逻辑 / 磁盘回收)`,pagesUnit:`頁`,compactPartial:`压缩部分完成(逻辑 / 磁盘回收)`,confirmCompact:`確認壓縮`,cancel:`取消`,inspectionOnly:`僅檢查`,externalSqliteHome:`外部 SQLite 儲存空間`,inspectionUnavailable:`診斷記錄檢查目前無法使用。`,metricsSkippedLarge:`已略過列指標:資料庫超過 {threshold},掃描會阻塞代理。`,protection:`保護`,compat:`相容模式`,quiet:`靜默模式`,disable:`停用保護`,repair:`修復保護`,applying:`正在套用保護…`,"error.generic":`無法變更 Codex 日誌保護。`,"error.codex_running":`變更 Codex 日誌保護前請先退出 Codex。`,"error.process_enumeration_failed":`無法確認 Codex 已停止,因此未變更保護設定。`,"error.busy":`Codex 日誌資料庫忙碌中。請退出 Codex 後重試。`,"error.unsupported_schema":`此 Codex 日誌資料庫結構不支援保護功能。`,"error.trigger_collision":`保留的 Log Guard 觸發器名稱已被使用,因此未變更保護設定。`,"error.unsafe_path":`Codex 日誌資料庫路徑未通過安全檢查。`,"error.database_error":`無法更新 Codex 日誌資料庫。`,"error.config_write_failed":`資料庫已變更,但 OpenCodex 無法儲存保護設定。請先修復設定儲存空間,再執行「修復保護」。`},ru:{compact:`Сжать`,compactComplete:`Сжатие завершено (логически / освобождено на диске)`,pagesUnit:`страниц`,compactPartial:`Сжатие частичное (логически / освобождено на диске)`,confirmCompact:`Подтвердить сжатие`,cancel:`Отмена`,inspectionOnly:`Только проверка`,externalSqliteHome:`Внешнее хранилище SQLite`,inspectionUnavailable:`Проверка диагностических журналов недоступна.`,metricsSkippedLarge:`Метрики строк пропущены: база больше {threshold}, и её сканирование заблокировало бы прокси.`,protection:`Защита`,compat:`Совместимость`,quiet:`Тихий режим`,disable:`Отключить защиту`,repair:`Восстановить защиту`,applying:`Применение защиты…`,"error.generic":`Не удалось изменить защиту журналов Codex.`,"error.codex_running":`Закройте Codex перед изменением защиты журналов.`,"error.process_enumeration_failed":`Не удалось убедиться, что Codex остановлен. Защита не изменена.`,"error.busy":`База журналов Codex занята. Закройте Codex и повторите попытку.`,"error.unsupported_schema":`Эта схема базы журналов Codex не поддерживает защиту.`,"error.trigger_collision":`Зарезервированное имя триггера Log Guard уже используется. Защита не изменена.`,"error.unsafe_path":`Путь к базе журналов Codex не прошёл проверку безопасности.`,"error.database_error":`Не удалось обновить базу журналов Codex.`,"error.config_write_failed":`База была изменена, но OpenCodex не смог сохранить настройку защиты. Исправьте хранилище конфигурации и затем запустите восстановление.`},ja:{compact:`圧縮`,compactComplete:`圧縮完了(論理 / ディスク解放)`,pagesUnit:`ページ`,compactPartial:`圧縮は部分的に完了(論理 / ディスク解放)`,confirmCompact:`圧縮を確認`,cancel:`キャンセル`,inspectionOnly:`検査のみ`,externalSqliteHome:`外部 SQLite ストレージ`,inspectionUnavailable:`診断ログの検査を利用できません。`,metricsSkippedLarge:`行メトリクスをスキップしました。データベースが {threshold} を超えており、走査するとプロキシが停止します。`,protection:`保護`,compat:`互換モード`,quiet:`静音モード`,disable:`保護を無効化`,repair:`保護を修復`,applying:`保護を適用中…`,"error.generic":`Codex ログ保護を変更できませんでした。`,"error.codex_running":`ログ保護を変更する前に Codex を終了してください。`,"error.process_enumeration_failed":`Codex が停止していることを確認できなかったため、保護は変更されませんでした。`,"error.busy":`Codex ログデータベースが使用中です。Codex を終了して再試行してください。`,"error.unsupported_schema":`この Codex ログスキーマでは保護機能を使用できません。`,"error.trigger_collision":`予約済みの Log Guard トリガー名が既に使用されています。保護は変更されませんでした。`,"error.unsafe_path":`Codex ログデータベースのパスが安全性チェックに失敗しました。`,"error.database_error":`Codex ログデータベースを更新できませんでした。`,"error.config_write_failed":`データベースは変更されましたが、OpenCodex は保護設定を保存できませんでした。設定ストレージを修正してから保護を修復してください。`},tr:{compact:`Sıkıştır`,compactComplete:`Sikistirma tamamlandi (mantiksal / diskte geri kazanilan)`,pagesUnit:`sayfa`,compactPartial:`Sikistirma kismi (mantiksal / diskte geri kazanilan)`,confirmCompact:`Sıkıştırmayı onayla`,cancel:`İptal`,inspectionOnly:`Yalnızca inceleme`,externalSqliteHome:`Harici SQLite depolaması`,inspectionUnavailable:`Tanılama günlüğü incelemesi kullanılamıyor.`,metricsSkippedLarge:`Satır ölçümleri atlandı: veritabanı {threshold} sınırının üzerinde ve taranması proxy’yi kilitler.`,protection:`Koruma`,compat:`Uyumluluk`,quiet:`Sessiz`,disable:`Korumayı devre dışı bırak`,repair:`Korumayı onar`,applying:`Koruma uygulanıyor…`,"error.generic":`Codex günlük koruması değiştirilemedi.`,"error.codex_running":`Günlük korumasını değiştirmeden önce Codex'i kapatın.`,"error.process_enumeration_failed":`Codex'in kapalı olduğu doğrulanamadı. Koruma değiştirilmedi.`,"error.busy":`Codex günlük veritabanı meşgul. Codex'i kapatıp yeniden deneyin.`,"error.unsupported_schema":`Bu Codex günlük şeması koruma için desteklenmiyor.`,"error.trigger_collision":`Ayrılmış bir Log Guard tetikleyici adı zaten kullanılıyor. Koruma değiştirilmedi.`,"error.unsafe_path":`Codex günlük veritabanı yolu güvenlik denetimini geçemedi.`,"error.database_error":`Codex günlük veritabanı güncellenemedi.`,"error.config_write_failed":`Veritabanı değişti ancak OpenCodex koruma ayarını kaydedemedi. Yapılandırma depolamasını düzeltip ardından korumayı onarın.`},vi:{compact:`Nén`,compactComplete:`Hoàn tất nén (logic / thu hồi trên đĩa)`,pagesUnit:`trang`,compactPartial:`Nén một phần (logic / thu hồi trên đĩa)`,confirmCompact:`Xác nhận nén`,cancel:`Hủy`,inspectionOnly:`Chỉ kiểm tra`,externalSqliteHome:`Lưu trữ SQLite bên ngoài`,inspectionUnavailable:`Tính năng kiểm tra nhật ký chẩn đoán không khả dụng.`,metricsSkippedLarge:`Đã bỏ qua số liệu hàng: cơ sở dữ liệu lớn hơn {threshold} và việc quét sẽ làm treo proxy.`,protection:`Bảo vệ`,compat:`Tương thích`,quiet:`Yên tĩnh`,disable:`Tắt bảo vệ`,repair:`Sửa chữa bảo vệ`,applying:`Đang áp dụng bảo vệ…`,"error.generic":`Không thể thay đổi bảo vệ nhật ký Codex.`,"error.codex_running":`Hãy thoát Codex trước khi thay đổi bảo vệ nhật ký.`,"error.process_enumeration_failed":`Không thể xác minh rằng Codex đã dừng. Bảo vệ chưa được thay đổi.`,"error.busy":`Cơ sở dữ liệu nhật ký Codex đang bận. Hãy thoát Codex và thử lại.`,"error.unsupported_schema":`Lược đồ nhật ký Codex này không được hỗ trợ để bảo vệ.`,"error.trigger_collision":`Tên trình kích hoạt Log Guard dành riêng đã được sử dụng. Bảo vệ chưa được thay đổi.`,"error.unsafe_path":`Đường dẫn cơ sở dữ liệu nhật ký Codex không vượt qua được kiểm tra an toàn.`,"error.database_error":`Không thể cập nhật cơ sở dữ liệu nhật ký Codex.`,"error.config_write_failed":`Cơ sở dữ liệu đã thay đổi nhưng OpenCodex không thể lưu cài đặt bảo vệ. Vui lòng sửa lỗi lưu trữ cấu hình, sau đó chạy Sửa chữa.`},pt:{compact:`Compactar`,compactComplete:`Compactação concluída (lógico / recuperado em disco)`,pagesUnit:`páginas`,compactPartial:`Compactação parcial (lógico / recuperado em disco)`,confirmCompact:`Confirmar compactação`,cancel:`Cancelar`,inspectionOnly:`Somente inspeção`,externalSqliteHome:`Armazenamento SQLite externo`,inspectionUnavailable:`A inspeção do log de diagnóstico não está disponível.`,metricsSkippedLarge:`Métricas de linhas ignoradas: o banco de dados excede {threshold} e a varredura travaria o proxy.`,protection:`Proteção`,compat:`Compatibilidade`,quiet:`Silencioso`,disable:`Desativar proteção`,repair:`Reparar proteção`,applying:`Aplicando proteção…`,"error.generic":`Não foi possível alterar a proteção de logs do Codex.`,"error.codex_running":`Feche o Codex antes de alterar a proteção de logs.`,"error.process_enumeration_failed":`Não foi possível verificar se o Codex está parado. A proteção não foi alterada.`,"error.busy":`O banco de dados de logs do Codex está ocupado. Feche o Codex e tente novamente.`,"error.unsupported_schema":`Este esquema de logs do Codex não é suportado para proteção.`,"error.trigger_collision":`Um nome de trigger reservado do Log Guard já está em uso. A proteção não foi alterada.`,"error.unsafe_path":`O caminho do banco de dados de logs do Codex falhou na verificação de segurança.`,"error.database_error":`Não foi possível atualizar o banco de dados de logs do Codex.`,"error.config_write_failed":`O banco de dados foi alterado, mas o OpenCodex não conseguiu salvar a configuração de proteção. Corrija o armazenamento de configuração e execute Reparar.`}};function _D(e,t){return gD[e][t]}var vD={en:{applying:`Applying Log Guard change…`,"error.generic":`Could not update Codex log storage.`,"error.codex_running":`Quit Codex before changing Codex log storage.`,"error.process_enumeration_failed":`Could not verify that Codex is stopped. The Log Guard operation was not started.`,"error.busy":`The Codex logs database is busy. Quit Codex and try again.`,"error.unsupported_schema":`This Codex logs schema is not supported for this operation.`,"error.unsafe_path":`The Codex logs database path failed the safety check.`,"error.database_error":`Could not update the Codex logs database.`,"error.auto_vacuum_not_incremental":`This Codex logs database is not configured for incremental vacuum, so space cannot be reclaimed without a full rebuild.`,"error.integrity_check_failed":`The Codex logs database failed its integrity check. No space was reclaimed.`},de:{applying:`Log-Guard-Änderung wird angewendet…`,"error.generic":`Der Codex-Protokollspeicher konnte nicht aktualisiert werden.`,"error.codex_running":`Beende Codex, bevor du den Codex-Protokollspeicher änderst.`,"error.process_enumeration_failed":`Es konnte nicht sicher festgestellt werden, dass Codex beendet ist. Der Log-Guard-Vorgang wurde nicht gestartet.`,"error.busy":`Die Codex-Protokolldatenbank ist belegt. Beende Codex und versuche es erneut.`,"error.unsupported_schema":`Dieses Schema der Codex-Protokolldatenbank wird für diesen Vorgang nicht unterstützt.`,"error.unsafe_path":`Der Pfad der Codex-Protokolldatenbank hat die Sicherheitsprüfung nicht bestanden.`,"error.database_error":`Die Codex-Protokolldatenbank konnte nicht aktualisiert werden.`,"error.auto_vacuum_not_incremental":`Diese Codex-Protokolldatenbank ist nicht fuer inkrementelles Vacuum konfiguriert; ohne vollstaendigen Neuaufbau kann kein Speicher freigegeben werden.`,"error.integrity_check_failed":`Die Integritaetspruefung der Codex-Protokolldatenbank ist fehlgeschlagen. Es wurde kein Speicher freigegeben.`},fr:{applying:`Application de la modification Log Guard…`,"error.generic":`Impossible de mettre à jour le stockage des journaux Codex.`,"error.codex_running":`Quittez Codex avant de modifier le stockage des journaux Codex.`,"error.process_enumeration_failed":`Impossible de vérifier que Codex est arrêté. L’opération Log Guard n’a pas été lancée.`,"error.busy":`La base de données des journaux Codex est occupée. Quittez Codex et réessayez.`,"error.unsupported_schema":`Ce schéma de journaux Codex n’est pas pris en charge pour cette opération.`,"error.unsafe_path":`Le chemin de la base de données des journaux Codex a échoué au contrôle de sécurité.`,"error.database_error":`Impossible de mettre à jour la base de données des journaux Codex.`,"error.auto_vacuum_not_incremental":`Cette base de donnees de journaux Codex n'est pas configuree pour le vacuum incrementiel : l'espace ne peut pas etre recupere sans reconstruction complete.`,"error.integrity_check_failed":`La verification d'integrite de la base de donnees de journaux Codex a echoue. Aucun espace n'a ete recupere.`},ko:{applying:`Log Guard 변경 적용 중…`,"error.generic":`Codex 로그 저장소를 업데이트하지 못했습니다.`,"error.codex_running":`Codex 로그 저장소를 변경하기 전에 Codex를 종료하세요.`,"error.process_enumeration_failed":`Codex가 종료되었는지 확인할 수 없어 Log Guard 작업을 시작하지 않았습니다.`,"error.busy":`Codex 로그 데이터베이스가 사용 중입니다. Codex를 종료한 뒤 다시 시도하세요.`,"error.unsupported_schema":`이 Codex 로그 스키마는 이 작업을 지원하지 않습니다.`,"error.unsafe_path":`Codex 로그 데이터베이스 경로가 안전성 검사를 통과하지 못했습니다.`,"error.database_error":`Codex 로그 데이터베이스를 업데이트하지 못했습니다.`,"error.auto_vacuum_not_incremental":`이 Codex 로그 데이터베이스는 증분 정리로 구성되어 있지 않아, 전체 재구축 없이는 공간을 회수할 수 없습니다.`,"error.integrity_check_failed":`Codex 로그 데이터베이스 무결성 검사에 실패했습니다. 공간이 회수되지 않았습니다.`},zh:{applying:`正在应用 Log Guard 更改…`,"error.generic":`无法更新 Codex 日志存储。`,"error.codex_running":`更改 Codex 日志存储前请先退出 Codex。`,"error.process_enumeration_failed":`无法确认 Codex 已停止,因此未启动 Log Guard 操作。`,"error.busy":`Codex 日志数据库正忙。请退出 Codex 后重试。`,"error.unsupported_schema":`此 Codex 日志数据库结构不支持此操作。`,"error.unsafe_path":`Codex 日志数据库路径未通过安全检查。`,"error.database_error":`无法更新 Codex 日志数据库。`,"error.auto_vacuum_not_incremental":`此 Codex 日志数据库未配置增量清理,因此不完整重建就无法回收空间。`,"error.integrity_check_failed":`Codex 日志数据库完整性检查失败,未回收任何空间。`},"zh-TW":{applying:`正在套用 Log Guard 變更…`,"error.generic":`無法更新 Codex 日誌儲存空間。`,"error.codex_running":`變更 Codex 日誌儲存空間前請先退出 Codex。`,"error.process_enumeration_failed":`無法確認 Codex 已停止,因此未啟動 Log Guard 操作。`,"error.busy":`Codex 日誌資料庫忙碌中。請退出 Codex 後重試。`,"error.unsupported_schema":`此 Codex 日誌資料庫結構不支援此操作。`,"error.unsafe_path":`Codex 日誌資料庫路徑未通過安全檢查。`,"error.database_error":`無法更新 Codex 日誌資料庫。`,"error.auto_vacuum_not_incremental":`此 Codex 日志数据库未配置增量清理,因此不完整重建就无法回收空间。`,"error.integrity_check_failed":`Codex 日志数据库完整性检查失败,未回收任何空间。`},ru:{applying:`Применение изменения Log Guard…`,"error.generic":`Не удалось обновить хранилище журналов Codex.`,"error.codex_running":`Закройте Codex перед изменением хранилища журналов Codex.`,"error.process_enumeration_failed":`Не удалось убедиться, что Codex остановлен. Операция Log Guard не запущена.`,"error.busy":`База журналов Codex занята. Закройте Codex и повторите попытку.`,"error.unsupported_schema":`Эта схема базы журналов Codex не поддерживает эту операцию.`,"error.unsafe_path":`Путь к базе журналов Codex не прошёл проверку безопасности.`,"error.database_error":`Не удалось обновить базу журналов Codex.`,"error.auto_vacuum_not_incremental":`Эта база данных журналов Codex не настроена на инкрементальную очистку, поэтому освободить место без полной перестройки невозможно.`,"error.integrity_check_failed":`Проверка целостности базы данных журналов Codex не пройдена. Место не освобождено.`},ja:{applying:`Log Guard の変更を適用中…`,"error.generic":`Codex ログストレージを更新できませんでした。`,"error.codex_running":`Codex ログストレージを変更する前に Codex を終了してください。`,"error.process_enumeration_failed":`Codex が停止していることを確認できなかったため、Log Guard 操作を開始しませんでした。`,"error.busy":`Codex ログデータベースが使用中です。Codex を終了して再試行してください。`,"error.unsupported_schema":`この Codex ログスキーマではこの操作を使用できません。`,"error.unsafe_path":`Codex ログデータベースのパスが安全性チェックに失敗しました。`,"error.database_error":`Codex ログデータベースを更新できませんでした。`,"error.auto_vacuum_not_incremental":`この Codex ログ データベースは増分バキューム用に構成されていないため、完全な再構築なしに領域を解放できません。`,"error.integrity_check_failed":`Codex ログ データベースの整合性チェックに失敗しました。領域は解放されていません。`},tr:{applying:`Log Guard değişikliği uygulanıyor…`,"error.generic":`Codex günlük depolaması güncellenemedi.`,"error.codex_running":`Codex günlük depolamasını değiştirmeden önce Codex'i kapatın.`,"error.process_enumeration_failed":`Codex'in kapalı olduğu doğrulanamadı. Log Guard işlemi başlatılmadı.`,"error.busy":`Codex günlük veritabanı meşgul. Codex'i kapatıp yeniden deneyin.`,"error.unsupported_schema":`Bu Codex günlük şeması bu işlem için desteklenmiyor.`,"error.unsafe_path":`Codex günlük veritabanı yolu güvenlik denetimini geçemedi.`,"error.database_error":`Codex günlük veritabanı güncellenemedi.`,"error.auto_vacuum_not_incremental":`Bu Codex gunluk veritabani artimli vacuum icin yapilandirilmamis; tam yeniden olusturma olmadan alan geri kazanilamaz.`,"error.integrity_check_failed":`Codex gunluk veritabani butunluk denetiminden gecemedi. Alan geri kazanilmadi.`},vi:{applying:`Đang áp dụng thay đổi Log Guard…`,"error.generic":`Không thể cập nhật lưu trữ nhật ký Codex.`,"error.codex_running":`Hãy thoát Codex trước khi thay đổi lưu trữ nhật ký Codex.`,"error.process_enumeration_failed":`Không thể xác minh rằng Codex đã dừng. Thao tác Log Guard chưa được bắt đầu.`,"error.busy":`Cơ sở dữ liệu nhật ký Codex đang bận. Hãy thoát Codex và thử lại.`,"error.unsupported_schema":`Lược đồ nhật ký Codex này không được hỗ trợ cho thao tác này.`,"error.unsafe_path":`Đường dẫn cơ sở dữ liệu nhật ký Codex không vượt qua được kiểm tra an toàn.`,"error.database_error":`Không thể cập nhật cơ sở dữ liệu nhật ký Codex.`,"error.auto_vacuum_not_incremental":`Cơ sở dữ liệu nhật ký Codex này không được định cấu hình cho tính năng incremental vacuum, do đó không thể thu hồi dung lượng nếu không xây dựng lại hoàn toàn.`,"error.integrity_check_failed":`Cơ sở dữ liệu nhật ký Codex không vượt qua được kiểm tra tính toàn vẹn. Không có dung lượng nào được thu hồi.`},pt:{applying:`Aplicando alteração do Log Guard…`,"error.generic":`Não foi possível atualizar o armazenamento de logs do Codex.`,"error.codex_running":`Feche o Codex antes de alterar o armazenamento de logs do Codex.`,"error.process_enumeration_failed":`Não foi possível verificar se o Codex está parado. A operação do Log Guard não foi iniciada.`,"error.busy":`O banco de dados de logs do Codex está ocupado. Feche o Codex e tente novamente.`,"error.unsupported_schema":`Este esquema de logs do Codex não é suportado para esta operação.`,"error.unsafe_path":`O caminho do banco de dados de logs do Codex falhou na verificação de segurança.`,"error.database_error":`Não foi possível atualizar o banco de dados de logs do Codex.`,"error.auto_vacuum_not_incremental":`Este banco de dados de logs do Codex não está configurado para incremental vacuum; por isso, não é possível recuperar espaço sem uma reconstrução completa.`,"error.integrity_check_failed":`O banco de dados de logs do Codex falhou na verificação de integridade. Nenhum espaço foi recuperado.`}};function yD(e,t){return vD[e][t]}var bD={en:{schema:{compatible:`Compatible`,missing:`Database not found`,unreadable:`Database unavailable`,unsupported:`Unsupported`},protection:{off:`Off`,active:`Active`,drifted:`Needs repair`,unsupported:`Unsupported`,unknown:`Unknown`},mode:{off:`Off`,compat:`Compatibility`,quiet:`Quiet`,collision:`Unknown`}},de:{schema:{compatible:`Kompatibel`,missing:`Datenbank nicht gefunden`,unreadable:`Datenbank nicht lesbar`,unsupported:`Nicht unterstützt`},protection:{off:`Aus`,active:`Aktiv`,drifted:`Reparatur erforderlich`,unsupported:`Nicht unterstützt`,unknown:`Unbekannt`},mode:{off:`Aus`,compat:`Kompatibilität`,quiet:`Leise`,collision:`Unbekannt`}},fr:{schema:{compatible:`Compatible`,missing:`Base de données introuvable`,unreadable:`Base de données indisponible`,unsupported:`Non pris en charge`},protection:{off:`Désactivée`,active:`Active`,drifted:`Réparation requise`,unsupported:`Non prise en charge`,unknown:`Inconnue`},mode:{off:`Désactivé`,compat:`Compatibilité`,quiet:`Silencieux`,collision:`Inconnu`}},ko:{schema:{compatible:`호환됨`,missing:`데이터베이스 없음`,unreadable:`데이터베이스를 읽을 수 없음`,unsupported:`지원되지 않음`},protection:{off:`꺼짐`,active:`활성`,drifted:`복구 필요`,unsupported:`지원되지 않음`,unknown:`알 수 없음`},mode:{off:`꺼짐`,compat:`호환 모드`,quiet:`조용한 모드`,collision:`알 수 없음`}},zh:{schema:{compatible:`兼容`,missing:`未找到数据库`,unreadable:`无法读取数据库`,unsupported:`不受支持`},protection:{off:`关闭`,active:`已启用`,drifted:`需要修复`,unsupported:`不受支持`,unknown:`未知`},mode:{off:`关闭`,compat:`兼容模式`,quiet:`静默模式`,collision:`未知`}},"zh-TW":{schema:{compatible:`相容`,missing:`找不到資料庫`,unreadable:`無法讀取資料庫`,unsupported:`不支援`},protection:{off:`關閉`,active:`已啟用`,drifted:`需要修復`,unsupported:`不支援`,unknown:`未知`},mode:{off:`關閉`,compat:`相容模式`,quiet:`靜默模式`,collision:`未知`}},ru:{schema:{compatible:`Совместимо`,missing:`База не найдена`,unreadable:`База недоступна`,unsupported:`Не поддерживается`},protection:{off:`Выключено`,active:`Активно`,drifted:`Требуется восстановление`,unsupported:`Не поддерживается`,unknown:`Неизвестно`},mode:{off:`Выключено`,compat:`Совместимость`,quiet:`Тихий режим`,collision:`Неизвестно`}},ja:{schema:{compatible:`互換`,missing:`データベースが見つかりません`,unreadable:`データベースを読み取れません`,unsupported:`未対応`},protection:{off:`オフ`,active:`有効`,drifted:`修復が必要`,unsupported:`未対応`,unknown:`不明`},mode:{off:`オフ`,compat:`互換モード`,quiet:`静音モード`,collision:`不明`}},tr:{schema:{compatible:`Uyumlu`,missing:`Veritabanı bulunamadı`,unreadable:`Veritabanı okunamıyor`,unsupported:`Desteklenmiyor`},protection:{off:`Kapalı`,active:`Etkin`,drifted:`Onarım gerekli`,unsupported:`Desteklenmiyor`,unknown:`Bilinmiyor`},mode:{off:`Kapalı`,compat:`Uyumluluk`,quiet:`Sessiz`,collision:`Bilinmiyor`}},vi:{schema:{compatible:`Tương thích`,missing:`Không tìm thấy cơ sở dữ liệu`,unreadable:`Cơ sở dữ liệu không khả dụng`,unsupported:`Không được hỗ trợ`},protection:{off:`Tắt`,active:`Đang hoạt động`,drifted:`Cần sửa chữa`,unsupported:`Không được hỗ trợ`,unknown:`Không xác định`},mode:{off:`Tắt`,compat:`Tương thích`,quiet:`Yên tĩnh`,collision:`Không xác định`}},pt:{schema:{compatible:`Compatível`,missing:`Banco de dados não encontrado`,unreadable:`Banco de dados indisponível`,unsupported:`Não suportado`},protection:{off:`Desativada`,active:`Ativa`,drifted:`Requer reparo`,unsupported:`Não suportada`,unknown:`Desconhecida`},mode:{off:`Desativado`,compat:`Compatibilidade`,quiet:`Silencioso`,collision:`Desconhecido`}}};function xD(e,t){return bD[e].schema[t]}function SD(e,t){return bD[e].protection[t]}function CD(e,t){return bD[e].mode[t]}var wD={sessions:`storage.bucket.sessions`,archived_sessions:`storage.bucket.archived_sessions`,logs_db:`storage.bucket.logs_db`,state_db:`storage.bucket.state_db`,attachments:`storage.bucket.attachments`,deletion_manifests:`storage.bucket.deletion_manifests`,other:`storage.bucket.other`};function TD(e,t){let n=wD[e.key];return n?t(n):e.label}function ED(e,t){return e===void 0?`—`:new Date(e).toLocaleDateString(t)}function DD(e,t,n){return e.rows===void 0?`—`:e.rows===null?n(`storage.rows.unknown`):e.rows.toLocaleString(t)}function OD(e,t){switch(t){case`codex_running`:return yD(e,`error.codex_running`);case`process_enumeration_failed`:return yD(e,`error.process_enumeration_failed`);case`busy`:return yD(e,`error.busy`);case`unsupported_schema`:return yD(e,`error.unsupported_schema`);case`trigger_collision`:return _D(e,`error.trigger_collision`);case`unsafe_path`:return yD(e,`error.unsafe_path`);case`database_error`:return yD(e,`error.database_error`);case`auto_vacuum_not_incremental`:return yD(e,`error.auto_vacuum_not_incremental`);case`integrity_check_failed`:return yD(e,`error.integrity_check_failed`);case`config_write_failed`:return _D(e,`error.config_write_failed`);default:return yD(e,`error.generic`)}}function kD({report:e,locale:t,t:n,busy:r,error:i,compaction:a,onAction:o}){let s=e.metrics,c=e.capabilities.protection.state===`unsupported`||e.capabilities.reclaim.state===`unsupported`,l=e.protection,u=r||e.capabilities.protection.state!==`supported`,d=l!==void 0&&e.capabilities.reclaim.state===`supported`&&(s?.reclaimableBytes??0)>0,[f,p]=(0,Z.useState)(!1);return(0,Q.jsxs)(`div`,{className:`stw-section`,"data-testid":`codex-log-guard`,children:[(0,Q.jsx)(`h3`,{className:`stw-section-title`,children:n(`storage.bucket.logs_db`)}),(0,Q.jsxs)(`dl`,{className:`stw-kv`,children:[(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:n(`dash.status`)}),(0,Q.jsxs)(`dd`,{className:`stw-kv-mono`,children:[(0,Q.jsx)(`code`,{children:xD(t,e.schema.state)}),c&&e.schema.state===`unsupported`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:` · `}),(0,Q.jsx)(`code`,{children:_D(t,`inspectionOnly`)})]}):null]})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:n(`storage.bucket.logs_db`)}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:hD(e.files.databaseBytes,t)})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:(0,Q.jsx)(`code`,{children:`WAL`})}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:hD(e.files.walBytes,t)})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:(0,Q.jsx)(`code`,{children:`SHM`})}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:hD(e.files.shmBytes,t)})]}),s&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:n(`storage.col.rows`)}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:s.totalRows.toLocaleString(t)})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:(0,Q.jsx)(`code`,{children:`TRACE`})}),(0,Q.jsxs)(`dd`,{className:`stw-kv-mono`,children:[(s.traceShare*100).toFixed(1),`%`]})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:(0,Q.jsx)(`code`,{children:`freelist`})}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:hD(s.reclaimableBytes,t)})]})]}),!s&&e.metricsSkipped&&(0,Q.jsxs)(`div`,{className:`stw-kv-row`,"data-testid":`log-guard-metrics-skipped`,children:[(0,Q.jsx)(`dt`,{children:n(`storage.col.rows`)}),(0,Q.jsx)(`dd`,{className:`muted`,children:_D(t,`metricsSkippedLarge`).replace(`{threshold}`,hD(e.metricsSkipped.thresholdBytes,t))})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:(0,Q.jsx)(`code`,{children:`sqlite_home`})}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:(0,Q.jsx)(`code`,{children:e.externalSqliteHome?_D(t,`externalSqliteHome`):`CODEX_HOME`})})]})]}),l&&(0,Q.jsxs)(`div`,{className:`stw-section`,"data-testid":`log-guard-protection`,children:[(0,Q.jsx)(`h4`,{className:`stw-section-title`,children:_D(t,`protection`)}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:(0,Q.jsx)(`code`,{children:SD(t,l.state)})}),(0,Q.jsxs)(`span`,{className:`stw-kv-mono`,children:[(0,Q.jsx)(`code`,{children:CD(t,l.desiredMode)}),l.observedMode===l.desiredMode?null:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:` · `}),(0,Q.jsx)(`code`,{children:CD(t,l.observedMode)})]})]})]}),(0,Q.jsxs)(`div`,{className:`storage-policy-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"data-testid":`log-guard-protect-compat`,disabled:u,"aria-pressed":l.desiredMode===`compat`,onClick:()=>o({action:`protect`,mode:`compat`}),children:_D(t,`compat`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"data-testid":`log-guard-protect-quiet`,disabled:u,"aria-pressed":l.desiredMode===`quiet`,onClick:()=>o({action:`protect`,mode:`quiet`}),children:_D(t,`quiet`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"data-testid":`log-guard-unprotect`,disabled:u||l.desiredMode===`off`,onClick:()=>o({action:`unprotect`}),children:_D(t,`disable`)}),l.state===`drifted`&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,"data-testid":`log-guard-repair`,disabled:u,onClick:()=>o({action:`repair`}),children:_D(t,`repair`)}),r&&(0,Q.jsx)(`span`,{className:`muted`,role:`status`,children:yD(t,`applying`)})]}),i&&(0,Q.jsx)(`p`,{className:`err`,role:`alert`,children:i})]}),d&&(0,Q.jsx)(`div`,{className:`stw-section`,"data-testid":`log-guard-reclaim`,children:(0,Q.jsx)(`div`,{className:`storage-policy-actions`,children:f?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,"data-testid":`log-guard-compact-confirm`,disabled:r,onClick:()=>{p(!1),o({action:`compact`})},children:_D(t,`confirmCompact`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:r,onClick:()=>p(!1),children:_D(t,`cancel`)})]}):(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"data-testid":`log-guard-compact`,disabled:r,onClick:()=>p(!0),children:_D(t,`compact`)})})}),a&&(0,Q.jsx)(`div`,{className:`stw-section`,children:(0,Q.jsx)(`p`,{className:`stw-kv-mono`,role:`status`,"data-testid":`log-guard-compact-result`,children:a})}),s&&s.topTargets.length>0&&(0,Q.jsxs)(`div`,{className:`stw-section`,children:[(0,Q.jsx)(`h4`,{className:`stw-section-title`,children:(0,Q.jsx)(`code`,{children:`target`})}),s.topTargets.slice(0,5).map(e=>(0,Q.jsxs)(`div`,{className:`stw-file-row`,children:[(0,Q.jsx)(`span`,{className:`stw-file-path`,title:e.target,children:(0,Q.jsx)(`code`,{children:e.target})}),(0,Q.jsx)(`span`,{className:`stw-file-size`,children:e.rows.toLocaleString(t)})]},e.target))]}),(0,Q.jsx)(`p`,{className:`stw-hint`,children:(0,Q.jsxs)(`code`,{children:[`immutable=1 · snapshot=`,e.snapshot]})})]})}function AD({locale:e,t}){return(0,Q.jsxs)(`div`,{className:`stw-section`,"data-testid":`codex-log-guard-unavailable`,children:[(0,Q.jsx)(`h3`,{className:`stw-section-title`,children:t(`storage.bucket.logs_db`)}),(0,Q.jsx)(`p`,{className:`stw-hint`,children:_D(e,`inspectionUnavailable`)})]})}function jD({report:e,locale:t,apiBase:n=``,logGuardBusy:r=!1,onLogGuardAction:i}){let a=O(),[o,s]=(0,Z.useState)(null),[c,l]=(0,Z.useState)(null),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(null),[m,h]=(0,Z.useState)(null),g=(0,Z.useMemo)(()=>e.buckets.toSorted((e,t)=>t.bytes-e.bytes),[e.buckets]),_=g.find(e=>e.key===o)??null,v=c?.generation===e.generatedAt?c.report:e.codexLogs??null,y=f?.generation===e.generatedAt?f.message:null,b=m?.generation===e.generatedAt?m.summary:null,x=r||u,S=(0,Z.useMemo)(()=>{let t=[];for(let n of e.buckets)for(let e of n.largest??[])t.push({...e,bucketKey:n.key});return t.sort((e,t)=>t.bytes-e.bytes).slice(0,10)},[e.buckets]),C=(0,Z.useMemo)(()=>new Map(e.buckets.map(e=>[e.key,e])),[e.buckets]);return(0,Q.jsxs)(`div`,{className:`storage-workspace-root`,children:[(0,Q.jsxs)(`aside`,{className:`storage-workspace-rail`,"aria-label":a(`storage.section.buckets`),children:[(0,Q.jsxs)(`div`,{className:`storage-workspace-rail-header`,children:[(0,Q.jsx)(`span`,{className:`storage-workspace-rail-title`,children:a(`storage.section.buckets`)}),(0,Q.jsx)(`span`,{className:`storage-workspace-rail-count`,children:g.length})]}),(0,Q.jsx)(`div`,{className:`storage-workspace-rail-list`,children:g.length===0?(0,Q.jsx)(`span`,{className:`storage-workspace-rail-empty`,children:a(`storage.empty`)}):g.map(e=>(0,Q.jsxs)(`button`,{type:`button`,className:`storage-workspace-rail-row${o===e.key?` storage-workspace-rail-row--selected`:``}`,onClick:()=>s(t=>t===e.key?null:e.key),"aria-current":o===e.key?`true`:void 0,children:[(0,Q.jsxs)(`span`,{className:`storage-workspace-rail-primary`,children:[(0,Q.jsx)(`span`,{className:`storage-workspace-rail-name`,children:TD(e,a)}),(0,Q.jsx)(`span`,{className:`storage-workspace-rail-size`,children:hD(e.bytes,t)})]}),(0,Q.jsxs)(`span`,{className:`storage-workspace-rail-meta`,children:[e.fileCount.toLocaleString(t),` `,a(`storage.col.files`).toLowerCase()]})]},e.key))})]}),(0,Q.jsx)(`section`,{className:`storage-workspace-main`,"aria-label":_?TD(_,a):a(`storage.section.largest`),children:_?(0,Q.jsxs)(`div`,{className:`stw-detail`,children:[(0,Q.jsx)(`div`,{className:`stw-detail-toolbar`,children:(0,Q.jsxs)(`button`,{type:`button`,className:`stw-detail-back`,onClick:()=>s(null),children:[(0,Q.jsx)(Ke,{className:`stw-detail-back-chevron`,"aria-hidden":`true`}),a(`modal.back`)]})}),(0,Q.jsxs)(`div`,{className:`stw-detail-body`,children:[(0,Q.jsx)(`h2`,{className:`stw-detail-title`,children:TD(_,a)}),(0,Q.jsxs)(`dl`,{className:`stw-kv`,children:[(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:a(`storage.col.size`)}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:hD(_.bytes,t)})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:a(`storage.col.files`)}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:_.fileCount.toLocaleString(t)})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:a(`storage.col.oldest`)}),(0,Q.jsx)(`dd`,{children:ED(_.oldest,t)})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:a(`storage.col.newest`)}),(0,Q.jsx)(`dd`,{children:ED(_.newest,t)})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:a(`storage.col.rows`)}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:DD(_,t,a)})]})]}),(_.largest?.length??0)>0&&(0,Q.jsxs)(`div`,{className:`stw-section`,children:[(0,Q.jsx)(`h3`,{className:`stw-section-title`,children:a(`storage.section.largest`)}),_.largest.map(e=>(0,Q.jsxs)(`div`,{className:`stw-file-row`,children:[(0,Q.jsx)(`span`,{className:`stw-file-path`,title:e.path,children:e.path}),(0,Q.jsx)(`span`,{className:`stw-file-size`,children:hD(e.bytes,t)})]},e.path))]})]})]}):(0,Q.jsxs)(`div`,{className:`stw-overview`,children:[(0,Q.jsxs)(`div`,{className:`stw-summary`,children:[(0,Q.jsxs)(`div`,{className:`stw-summary-card`,children:[(0,Q.jsx)(`div`,{className:`stw-summary-label`,children:a(`storage.card.total`)}),(0,Q.jsx)(`div`,{className:`stw-summary-value`,children:hD(e.total.bytes,t)})]}),(0,Q.jsxs)(`div`,{className:`stw-summary-card`,children:[(0,Q.jsx)(`div`,{className:`stw-summary-label`,children:a(`storage.card.files`)}),(0,Q.jsx)(`div`,{className:`stw-summary-value`,children:e.total.fileCount.toLocaleString(t)})]}),(0,Q.jsxs)(`div`,{className:`stw-summary-card`,children:[(0,Q.jsx)(`div`,{className:`stw-summary-label`,children:a(`storage.card.home`)}),(0,Q.jsx)(`div`,{className:`stw-summary-value mono stw-home-path`,title:e.codexHome,children:e.codexHome})]})]}),v?(0,Q.jsx)(kD,{report:v,locale:t,t:a,busy:x,error:y,compaction:b,onAction:r=>{if(i){i(r);return}if(u)return;let a=e.generatedAt;(async()=>{d(!0),p(null),r.action===`compact`&&h(null);try{let e=r.action===`protect`?`protect`:r.action,i={method:`POST`,...r.action===`protect`?{headers:{"content-type":`application/json`},body:JSON.stringify({mode:r.mode})}:{}},o=await fetch(`${n}/api/storage/codex-logs/${e}`,i);if(!o.ok){let e=await o.json().catch(()=>({}));p({generation:a,message:OD(t,e.error)});return}if(r.action===`compact`){let e=(await o.json().catch(()=>null))?.report;if(e){let n=hD(e.logicalBytesReclaimed??0,t),r=hD(e.physicalDatabaseBytesReclaimed??0,t),i=e.complete?_D(t,`compactComplete`):_D(t,`compactPartial`),o=e.pagesReclaimed??0,s=!e.complete&&e.stopReason?` (${e.stopReason})`:``;h({generation:a,summary:[`${i}${s}`,`${o.toLocaleString(t)} ${_D(t,`pagesUnit`)}`,`${n} / ${r}`].join(` — `)})}try{let e=await fetch(`${n}/api/storage/codex-logs`);if(e.ok){let t=await e.json();l({generation:a,report:t})}}catch{}return}let s=await o.json();l({generation:a,report:s})}catch{p({generation:a,message:yD(t,`error.generic`)})}finally{d(!1)}})()}}):e.codexLogsError===`inspect_failed`?(0,Q.jsx)(AD,{locale:t,t:a}):null,S.length>0?(0,Q.jsxs)(`div`,{className:`stw-section`,children:[(0,Q.jsx)(`h3`,{className:`stw-section-title`,children:a(`storage.section.largest`)}),S.map(e=>{let n=C.get(e.bucketKey);return(0,Q.jsxs)(`div`,{className:`stw-file-row`,children:[(0,Q.jsx)(`span`,{className:`stw-file-path`,title:e.path,children:e.path}),n&&(0,Q.jsx)(`span`,{className:`stw-file-bucket`,children:TD(n,a)}),(0,Q.jsx)(`span`,{className:`stw-file-size`,children:hD(e.bytes,t)})]},`${e.bucketKey}:${e.path}`)})]}):(0,Q.jsxs)(`p`,{className:`stw-hint`,children:[(0,Q.jsx)(Ne,{style:{width:14,height:14,verticalAlign:`text-bottom`,marginRight:6},"aria-hidden":`true`}),a(`storage.workspace.selectBucket`)]})]})})]})}var MD=1024**3,ND=[10,25,50],PD=(e,t)=>{if(!(e instanceof Error))return t;let n=e.message;return n===`Failed to fetch`||n.includes(`NetworkError`)||n.includes(`network error`)||n.includes(`JSON`)||n.includes(`Unexpected end of`)?t:n||t};function FD({apiBase:e,locale:t,t:n,onDone:r}){let[i,a]=(0,Z.useState)(25),[o,s]=(0,Z.useState)(null),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(null),[g,_]=(0,Z.useState)(null),v=(0,Z.useRef)(null),y=(0,Z.useRef)(null),b=(0,Z.useRef)(!1),x=(0,Z.useCallback)((e=!1)=>{l(!1),d(!1),e&&s(null)},[]);(0,Z.useEffect)(()=>{b.current=f},[f]),(0,Z.useEffect)(()=>{if(!c)return;y.current=document.activeElement,v.current?.focus();let e=e=>{e.key===`Escape`&&!b.current&&x()};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e),y.current?.focus()}},[c,x]);let S=(e,t,r)=>{switch(e){case`codex_busy`:return n(`storage.cleanup.err.codex_busy`);case`stale_preview`:return n(`storage.cleanup.err.stale_preview`);case`restore_pending_overlap`:return n(`storage.cleanup.err.restore_pending_overlap`);case`referenced_history`:return n(`storage.cleanup.err.referenced_history`);case`invalid_digest`:return n(`storage.cleanup.err.invalid_digest`);case`invalid_mode`:return n(`storage.cleanup.err.invalid_mode`);case`fs_failed`:return r?n(`storage.cleanup.err.fs_failed_trash`,{trashDir:r}):n(`storage.cleanup.err.fs_failed`);case`db_reconcile_failed`:return n(`storage.cleanup.err.db_reconcile_failed`);case`cleanup_failed`:return n(`storage.cleanup.err.cleanup_failed`);default:return t??n(`storage.cleanup.cleanupFailed`)}},C=e=>n(`storage.cleanup.preset`,{percent:new Intl.NumberFormat(t,{style:`percent`,maximumFractionDigits:0}).format(e/100)}),w=async()=>{p(!0),_(null),h(null);try{let t=await fetch(`${e}/api/storage/cleanup/preview`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({percent:i})});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(S(e.error,n(`storage.cleanup.previewFailed`)))}let r=await t.json();s(r),l(!0)}catch(e){_(PD(e,n(`storage.cleanup.previewFailed`)))}finally{p(!1)}},T=async()=>{if(o){p(!0),_(null);try{let i=await fetch(`${e}/api/storage/cleanup`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({percent:o.percent,mode:u?`permanent`:`quarantine`,digest:o.digest})});if(!i.ok){let e=await i.json().catch(()=>({}));throw e.error===`stale_preview`&&x(!0),Error(S(e.error,e.message,e.trashDir))}let a=await i.json();if(!a.ok)throw a.error===`stale_preview`&&x(!0),Error(S(a.error,a.message,a.trashDir));x(!0);let s=n(u?`storage.cleanup.donePermanent`:`storage.cleanup.doneQuarantine`,{count:String(a.count),size:hD(a.bytes,t)});h(a.skippedReferencedPaths?.length?`${s} ${n(`storage.cleanup.skippedReferenced`,{count:String(a.skippedReferencedPaths.length)})}`:s),r()}catch(e){_(PD(e,n(`storage.cleanup.cleanupFailed`)))}finally{p(!1)}}};return(0,Q.jsxs)(`section`,{className:`storage-cleanup-pane`,children:[(0,Q.jsx)(`p`,{className:`muted storage-manual-panel__help`,children:n(`storage.cleanup.help`)}),(0,Q.jsxs)(`div`,{className:`storage-manual-panel__controls`,children:[(0,Q.jsxs)(`label`,{className:`storage-manual-panel__slider`,children:[(0,Q.jsx)(`span`,{className:`muted mono`,style:{minWidth:`3.5rem`,fontVariantNumeric:`tabular-nums`},children:n(`storage.cleanup.percent`,{percent:String(i)})}),(0,Q.jsx)(`input`,{type:`range`,min:1,max:100,value:i,onChange:e=>a(Number(e.target.value)),disabled:f,style:{flex:1,minWidth:0},"aria-label":n(`storage.cleanup.slider`)})]}),(0,Q.jsx)(`div`,{className:`storage-manual-panel__presets`,children:ND.map(e=>(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm${i===e?` active`:``}`,disabled:f,onClick:()=>a(e),children:C(e)},e))}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:f,onClick:()=>void w(),children:n(`storage.cleanup.preview`)})]}),m&&(0,Q.jsx)(`p`,{className:`muted storage-manual-panel__status`,children:m}),g&&!c&&(0,Q.jsx)(`p`,{className:`storage-manual-panel__status`,style:{color:`var(--red)`},children:g}),c&&o&&(0,Q.jsx)(`div`,{className:`modal-overlay`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`storage-cleanup-confirm-title`,onClick:()=>!f&&x(),children:(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsx)(`h3`,{id:`storage-cleanup-confirm-title`,children:n(`storage.cleanup.confirmTitle`)}),(0,Q.jsx)(`p`,{children:n(`storage.cleanup.confirmBody`,{count:String(o.count),size:hD(o.bytes,t),percent:String(o.percent)})}),o.candidates.length>0&&(0,Q.jsxs)(`ul`,{className:`mono muted`,style:{maxHeight:160,overflow:`auto`,fontSize:`var(--text-caption)`},children:[o.candidates.slice(0,8).map(e=>(0,Q.jsx)(`li`,{children:e.relPath},e.relPath)),o.count>8&&(0,Q.jsx)(`li`,{children:n(`storage.cleanup.moreFiles`,{n:String(Math.max(0,o.count-8))})})]}),(0,Q.jsxs)(`label`,{style:{display:`flex`,gap:8,alignItems:`center`,marginTop:12},children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:u,disabled:f,onChange:e=>d(e.target.checked)}),(0,Q.jsx)(`span`,{children:n(`storage.cleanup.permanent`)})]}),(0,Q.jsx)(`p`,{className:`muted`,style:{marginTop:8,fontSize:`var(--text-caption)`},children:n(u?`storage.cleanup.permanentWarn`:`storage.cleanup.quarantineNote`)}),g&&(0,Q.jsx)(`p`,{style:{marginTop:12,color:`var(--red)`},children:g}),(0,Q.jsxs)(`div`,{className:`dialog-actions`,style:{marginTop:16},children:[(0,Q.jsx)(`button`,{ref:v,type:`button`,className:`btn btn-ghost`,disabled:f,onClick:()=>x(),children:n(`storage.cleanup.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:u?`btn btn-danger`:`btn`,disabled:f||o.count===0,onClick:()=>void T(),children:n(u?`storage.cleanup.confirmPermanent`:`storage.cleanup.confirmQuarantine`)})]})]})})]})}function ID({apiBase:e,locale:t,t:n,onDone:r,reloadToken:i,onEntriesChange:a}){let[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(null),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(null),m=(0,Z.useRef)(null),h=(0,Z.useRef)(null),g=(0,Z.useRef)(!1);(0,Z.useEffect)(()=>{g.current=o},[o]);let _=(0,Z.useCallback)(()=>l(null),[]);(0,Z.useEffect)(()=>{if(!c)return;h.current=document.activeElement,m.current?.focus();let e=e=>{e.key===`Escape`&&!g.current&&_()};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e),h.current?.focus()}},[c,_]);let v=(0,Z.useCallback)(async t=>{let r=await fetch(`${e}/api/storage/trash`,{signal:t});if(!r.ok)throw Error(n(`storage.trash.listFailed`));let i=await r.json(),o=Array.isArray(i.entries)?i.entries:[];return a?.(o),o},[e,a,n]),y=Ya(`storage-trash:${e}`,[e,i],v,{isEmpty:e=>e.length===0}).state,b=y.data??[],x=(e,t)=>{switch(e){case`codex_busy`:return n(`storage.trash.err.codex_busy`);case`invalid_trash`:return n(`storage.trash.err.invalid_trash`);case`missing_trash`:return n(`storage.trash.err.missing_trash`);case`dest_exists`:return n(`storage.trash.err.dest_exists`);case`fs_failed`:return n(`storage.trash.err.fs_failed`);case`db_reconcile_failed`:return n(`storage.trash.err.db_reconcile_failed`);case`storage_mutation_busy`:return n(`storage.trash.err.storage_mutation_busy`);case`restore_failed`:return n(`storage.trash.err.restore_failed`);case`restore_worker_timeout`:return n(`storage.trash.err.restore_worker_timeout`);case`restore_worker_aborted`:return n(`storage.trash.err.restore_worker_aborted`);case`restore_worker_failed`:return t??n(`storage.trash.err.restore_worker_failed`);default:return t??n(`storage.trash.restoreFailed`)}},S=async()=>{if(c){s(!0),p(null);try{let i=await fetch(`${e}/api/storage/trash/restore`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:c.id})});if(!i.ok){let e=await i.json().catch(()=>({}));throw Error(x(e.error,e.message))}let a=await i.json();if(!a.ok)throw Error(x(a.error,a.message));_(),d(n(`storage.trash.done`,{count:String(a.count),size:hD(a.bytes,t)})),r()}catch(e){p(PD(e,n(`storage.trash.restoreFailed`)))}finally{s(!1)}}},C=e=>{let n=e.quarantinedAt??Number(e.epoch.split(`-`)[0]);return!Number.isFinite(n)||n<=0?`—`:new Date(n).toLocaleString(t)},w=e=>e===`permanent`?n(`storage.trash.mode.permanent`):e===`quarantine`?n(`storage.trash.mode.quarantine`):`—`;return(0,Q.jsxs)(`section`,{className:`storage-cleanup-pane storage-quarantine-pane`,children:[(0,Q.jsx)(`p`,{className:`muted storage-manual-panel__help`,children:n(`storage.trash.help`)}),u&&(0,Q.jsx)(`p`,{className:`muted storage-manual-panel__status`,children:u}),f&&!c&&(0,Q.jsx)(`p`,{className:`storage-manual-panel__status`,style:{color:`var(--red)`},role:`alert`,children:f}),y.showError&&!c&&(0,Q.jsx)(`p`,{className:`storage-manual-panel__status`,style:{color:`var(--red)`},role:`alert`,children:y.error instanceof Error?y.error.message:n(`storage.trash.listFailed`)}),y.refreshing&&!y.showSkeleton&&(0,Q.jsx)(zy,{live:!y.showError,children:n(`storage.trash.loading`)}),y.showSkeleton?(0,Q.jsx)(Ry,{label:n(`storage.trash.loading`),rows:2}):b.length===0?(0,Q.jsx)(`p`,{className:`muted storage-manual-panel__status`,children:n(`storage.trash.empty`)}):(0,Q.jsx)(`div`,{className:`tbl-wrap storage-manual-panel__table`,children:(0,Q.jsxs)(`table`,{className:`tbl`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:n(`storage.trash.col.when`)}),(0,Q.jsx)(`th`,{className:`num`,children:n(`storage.trash.col.files`)}),(0,Q.jsx)(`th`,{className:`num`,children:n(`storage.trash.col.size`)}),(0,Q.jsx)(`th`,{children:n(`storage.trash.col.mode`)}),(0,Q.jsx)(`th`,{children:n(`storage.trash.col.id`)}),(0,Q.jsx)(`th`,{})]})}),(0,Q.jsx)(`tbody`,{children:b.map(e=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{className:`muted`,children:C(e)}),(0,Q.jsx)(`td`,{className:`num`,children:e.fileCount}),(0,Q.jsx)(`td`,{className:`num mono`,children:hD(e.bytes,t)}),(0,Q.jsx)(`td`,{className:`muted`,children:w(e.mode)}),(0,Q.jsx)(`td`,{className:`mono`,style:{fontSize:`var(--text-caption)`},children:e.id}),(0,Q.jsx)(`td`,{children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:o,onClick:()=>{p(null),l(e)},children:n(`storage.trash.restore`)})})]},e.id))})]})}),c&&(0,Q.jsx)(`div`,{className:`modal-overlay`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`storage-trash-confirm-title`,onClick:()=>!o&&_(),children:(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsx)(`h3`,{id:`storage-trash-confirm-title`,children:n(`storage.trash.confirmTitle`)}),(0,Q.jsx)(`p`,{children:n(`storage.trash.confirmBody`,{count:String(c.fileCount),size:hD(c.bytes,t),id:c.id})}),f&&(0,Q.jsx)(`p`,{style:{marginTop:12,color:`var(--red)`},children:f}),(0,Q.jsxs)(`div`,{className:`dialog-actions`,style:{marginTop:16},children:[(0,Q.jsx)(`button`,{ref:m,type:`button`,className:`btn btn-ghost`,disabled:o,onClick:()=>_(),children:n(`storage.trash.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn`,disabled:o,onClick:()=>void S(),children:n(`storage.trash.confirmRestore`)})]})]})})]})}function LD(e){let{job:t,...n}=e;return n}function RD(e){let t=String(Math.max(0,Math.round(e.trigger.archivedBytesOver/MD*100)/100));return e.target.reduceToBytes===void 0?{policy:LD(e),thresholdGb:t,targetMode:`percent`,percent:String(Math.min(100,Math.max(1,Math.floor(e.target.removeOldestPercent??25)))),reduceGb:`4`}:{policy:LD(e),thresholdGb:t,targetMode:`reduce`,percent:`25`,reduceGb:String(Math.max(0,Math.round(e.target.reduceToBytes/MD*100)/100))}}async function zD(e){await new Promise(t=>window.setTimeout(t,e))}function BD({apiBase:e,locale:t,t:n,onDone:r}){let i=`ocx.storage.cleanup-policy.v1:${e}`,a=Ua(i),o=(0,Z.useRef)(!!a),[s,c]=(0,Z.useState)(()=>a?.policy??null),[l,u]=(0,Z.useState)(()=>!a),[d,f]=(0,Z.useState)(!1),[p,m]=(0,Z.useState)(!1),[h,g]=(0,Z.useState)(null),[_,v]=(0,Z.useState)(null),[y,b]=(0,Z.useState)(()=>a?.targetMode??`percent`),[x,S]=(0,Z.useState)(()=>a?.percent??`25`),[C,w]=(0,Z.useState)(()=>a?.reduceGb??`4`),[T,E]=(0,Z.useState)(()=>a?.thresholdGb??`5`),D=(0,Z.useRef)(null),O=(0,Z.useRef)(!1),k=(0,Z.useRef)(!1),A=(0,Z.useRef)(0),j=(0,Z.useCallback)(e=>{let t=RD(e);c(t.policy),E(t.thresholdGb),b(t.targetMode),S(t.percent),w(t.reduceGb),o.current=!0,qa(i,t),O.current=!1},[i]),M=(0,Z.useCallback)(()=>{O.current=!0},[]),N=(0,Z.useCallback)(e=>{k.current=e},[]),P=(0,Z.useCallback)(async t=>{let r=++A.current;o.current||u(!0),v(null);try{let n=await fetch(`${e}/api/storage/cleanup-policy`,{signal:t});if(!n.ok)throw Error(`load_failed`);let i=await n.json();if(t?.aborted||r!==A.current||O.current||k.current)return;j(i)}catch{if(t?.aborted||r!==A.current)return;o.current||(c(null),v(n(`storage.policy.loadFailed`)))}finally{!t?.aborted&&r===A.current&&u(!1)}},[e,j,n]);(0,Z.useEffect)(()=>{let e=new AbortController,t=window.setTimeout(()=>{P(e.signal)},0);return()=>{window.clearTimeout(t),A.current+=1,e.abort()}},[P]),(0,Z.useEffect)(()=>()=>{D.current?.abort(),D.current=null},[]);let F=()=>{if(!s)return null;let e=T.trim();if(e===``)return null;let t=Number(e);if(!Number.isFinite(t)||t<0)return null;let n;if(y===`reduce`){let e=C.trim();if(e===``)return null;let t=Number(e);if(!Number.isFinite(t)||t<0)return null;n={reduceToBytes:Math.floor(t*MD)}}else{let e=Number(x);if(!Number.isFinite(e)||e<1||e>100)return null;n={removeOldestPercent:Math.min(100,Math.max(1,Math.floor(e)))}}return{enabled:s.enabled,trigger:{archivedBytesOver:Math.floor(t*MD)},target:n,schedule:s.schedule,mode:s.mode}},I=async t=>{let r=F();if(!r){v(n(`storage.policy.invalid`));return}let i={...r,...t};f(!0),v(null),g(null);try{let t=await fetch(`${e}/api/storage/cleanup-policy`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(i)});if(!t.ok){v(n(`storage.policy.saveFailed`));return}let r=await t.json();if(!r.policy){v(n(`storage.policy.saveFailed`));return}j(r.policy),g(n(`storage.policy.saved`))}catch{v(n(`storage.policy.saveFailed`))}finally{f(!1)}},L=async()=>{D.current?.abort();let i=new AbortController;D.current=i;let{signal:a}=i;m(!0),v(null),g(null);try{let i=F();if(!i){v(n(`storage.policy.invalid`));return}let o=await fetch(`${e}/api/storage/cleanup-policy`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(i),signal:a});if(a.aborted)return;if(!o.ok){v(n(`storage.policy.saveFailed`));return}let s=await o.json();if(a.aborted)return;if(!s.policy){v(n(`storage.policy.saveFailed`));return}j(s.policy);let c=await fetch(`${e}/api/storage/cleanup-policy/run`,{method:`POST`,signal:a});if(a.aborted)return;if(c.status===409){let e=await c.json().catch(()=>({}));if(a.aborted)return;e.policy&&j(e.policy),v(n(`storage.policy.alreadyRunning`));return}if(!c.ok){let e=await c.json().catch(()=>({}));if(a.aborted)return;if(e.policy&&j(e.policy),e.error===`already_running`){v(n(`storage.policy.alreadyRunning`));return}v(n(`storage.policy.runFailed`));return}let l=await c.json();if(a.aborted)return;if(l.policy&&j(l.policy),l.error===`already_running`){v(n(`storage.policy.alreadyRunning`));return}if(!l.started||!l.job?.startedAt){v(n(`storage.policy.runFailed`));return}let u=l.job.startedAt,d=Date.now()+12e4,f,p;for(;Date.now()<d;){if(a.aborted||(await zD(250),a.aborted))return;let t=await fetch(`${e}/api/storage/cleanup-policy`,{signal:a});if(a.aborted)return;if(!t.ok)continue;let n=await t.json();if(a.aborted)return;p=LD(n),j(n);let r=n.job;if(r&&r.status!==`running`){if(r.startedAt===u&&r.lastOutcome){f=r.lastOutcome;break}if(r.finishedAt&&r.finishedAt>=u&&r.lastOutcome){f=r.lastOutcome;break}}}if(a.aborted)return;if(p&&j(p),!f){v(n(`storage.policy.runFailed`));return}f.skipped===`disabled`?g(n(`storage.policy.skippedDisabled`)):f.ok&&f.metadataPersistenceError?(v(n(`storage.policy.metadataSaveWarning`)),f.removed!==void 0&&r()):f.skipped===`under_threshold`?g(n(`storage.policy.skippedUnder`)):f.skipped===`nothing_selected`?g(n(`storage.policy.skippedEmpty`)):f.deferred===`codex_busy`||f.error===`codex_busy`?v(n(`storage.cleanup.err.codex_busy`)):f.ok?(g(f.mode===`permanent`?n(`storage.policy.donePermanent`,{count:String(f.removed??0),size:hD(f.freedBytes??0,t)}):n(`storage.policy.doneQuarantine`,{count:String(f.removed??0),size:hD(f.freedBytes??0,t)})),r()):v(n(`storage.policy.runFailed`))}catch(e){if(a.aborted||e instanceof DOMException&&e.name===`AbortError`)return;v(n(`storage.policy.runFailed`))}finally{D.current===i&&(D.current=null),a.aborted||m(!1)}},R=e=>e===void 0?n(`storage.policy.never`):new Date(e).toLocaleString(t);return l&&!s?(0,Q.jsx)(`section`,{className:`storage-cleanup-pane`,children:(0,Q.jsx)(`p`,{className:`muted storage-policy-help`,children:n(`storage.policy.loading`)})}):s?(0,Q.jsxs)(`section`,{className:`storage-cleanup-pane`,children:[(0,Q.jsx)(`p`,{className:`muted storage-policy-help`,children:n(`storage.policy.help`)}),(0,Q.jsx)(`div`,{className:`storage-policy-enable`,children:(0,Q.jsxs)(`div`,{className:`storage-policy-enable-row`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`toggle${s.enabled?` on`:``}`,disabled:d||p,"aria-pressed":s.enabled,"aria-label":n(`storage.policy.enabled`),title:n(`storage.policy.enabledHint`),onClick:()=>void I({enabled:!s.enabled}),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})}),(0,Q.jsx)(`span`,{children:n(`storage.policy.enabled`)})]})}),(0,Q.jsxs)(`div`,{className:`storage-policy-fields`,children:[(0,Q.jsxs)(`div`,{className:`field storage-policy-trigger`,children:[(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`storage-policy-threshold`,children:n(`storage.policy.trigger`)}),(0,Q.jsxs)(`div`,{className:`storage-policy-trigger-row`,children:[(0,Q.jsx)(`span`,{className:`storage-policy-trigger-hint`,children:n(`storage.policy.threshold`)}),(0,Q.jsxs)(`span`,{className:`codex-auto-switch-input-wrap`,onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||(N(!1),I())},children:[(0,Q.jsx)(`input`,{id:`storage-policy-threshold`,className:`input mono codex-auto-switch-input`,type:`number`,min:0,step:.1,inputMode:`decimal`,value:T,disabled:d||p,"aria-label":n(`storage.policy.threshold`),onFocus:()=>N(!0),onChange:e=>{M(),E(e.target.value)},onKeyDown:e=>{e.nativeEvent.isComposing||d||p||e.key===`Enter`&&(e.preventDefault(),I())}}),(0,Q.jsx)(`span`,{className:`codex-auto-switch-unit`,"aria-hidden":`true`,children:`GiB`}),(0,Q.jsx)(Zc,{disabled:d||p,incrementLabel:n(`storage.policy.thresholdInc`),decrementLabel:n(`storage.policy.thresholdDec`),onIncrement:()=>{M(),E(Xc(T,.1,0,1e4,.1))},onDecrement:()=>{M(),E(Xc(T,-.1,0,1e4,.1))}})]})]})]}),(0,Q.jsxs)(`fieldset`,{className:`field storage-policy-target`,children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:n(`storage.policy.target`)}),(0,Q.jsxs)(`label`,{className:`storage-policy-target-row`,children:[(0,Q.jsx)(`input`,{type:`radio`,name:`storage-policy-target`,checked:y===`percent`,disabled:d||p,onChange:()=>{M(),b(`percent`)}}),(0,Q.jsx)(`span`,{className:`storage-policy-target-label`,children:n(`storage.policy.targetPercent`)}),y===`percent`&&(0,Q.jsxs)(`span`,{className:`codex-auto-switch-input-wrap`,onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||(N(!1),I())},children:[(0,Q.jsx)(`input`,{id:`storage-policy-percent`,className:`input mono codex-auto-switch-input`,type:`number`,min:1,max:100,step:1,inputMode:`numeric`,value:x,disabled:d||p,"aria-label":n(`storage.policy.targetPercent`),onFocus:()=>N(!0),onChange:e=>{M(),S(e.target.value)},onKeyDown:e=>{e.nativeEvent.isComposing||d||p||e.key===`Enter`&&(e.preventDefault(),I())}}),(0,Q.jsx)(`span`,{className:`codex-auto-switch-unit`,"aria-hidden":`true`,children:`%`}),(0,Q.jsx)(Zc,{disabled:d||p,incrementLabel:n(`storage.policy.percentInc`),decrementLabel:n(`storage.policy.percentDec`),onIncrement:()=>{M(),S(Xc(x,1,1,100))},onDecrement:()=>{M(),S(Xc(x,-1,1,100))}})]})]}),(0,Q.jsxs)(`label`,{className:`storage-policy-target-row`,children:[(0,Q.jsx)(`input`,{type:`radio`,name:`storage-policy-target`,checked:y===`reduce`,disabled:d||p,onChange:()=>{M(),b(`reduce`)}}),(0,Q.jsx)(`span`,{className:`storage-policy-target-label`,children:n(`storage.policy.targetReduce`)}),y===`reduce`&&(0,Q.jsxs)(`span`,{className:`codex-auto-switch-input-wrap`,onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||(N(!1),I())},children:[(0,Q.jsx)(`input`,{id:`storage-policy-reduce`,className:`input mono codex-auto-switch-input`,type:`number`,min:0,step:.1,inputMode:`decimal`,value:C,disabled:d||p,"aria-label":n(`storage.policy.targetReduce`),onFocus:()=>N(!0),onChange:e=>{M(),w(e.target.value)},onKeyDown:e=>{e.nativeEvent.isComposing||d||p||e.key===`Enter`&&(e.preventDefault(),I())}}),(0,Q.jsx)(`span`,{className:`codex-auto-switch-unit`,"aria-hidden":`true`,children:`GiB`}),(0,Q.jsx)(Zc,{disabled:d||p,incrementLabel:n(`storage.policy.reduceInc`),decrementLabel:n(`storage.policy.reduceDec`),onIncrement:()=>{M(),w(Xc(C,.1,0,1e4,.1))},onDecrement:()=>{M(),w(Xc(C,-.1,0,1e4,.1))}})]})]})]}),(0,Q.jsxs)(`div`,{className:`storage-policy-selects`,children:[(0,Q.jsxs)(`label`,{className:`field`,htmlFor:`storage-policy-schedule`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:n(`storage.policy.schedule`)}),(0,Q.jsxs)(`select`,{id:`storage-policy-schedule`,className:`input`,value:s.schedule,disabled:d||p,onChange:e=>{let t=e.target.value;I({schedule:t})},children:[(0,Q.jsx)(`option`,{value:`manual`,children:n(`storage.policy.schedule.manual`)}),(0,Q.jsx)(`option`,{value:`startup`,children:n(`storage.policy.schedule.startup`)}),(0,Q.jsx)(`option`,{value:`daily`,children:n(`storage.policy.schedule.daily`)}),(0,Q.jsx)(`option`,{value:`weekly`,children:n(`storage.policy.schedule.weekly`)})]})]}),(0,Q.jsxs)(`label`,{className:`field`,htmlFor:`storage-policy-mode`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:n(`storage.policy.mode`)}),(0,Q.jsxs)(`select`,{id:`storage-policy-mode`,className:`input`,value:s.mode,disabled:d||p,onChange:e=>{let t=e.target.value;I({mode:t})},children:[(0,Q.jsx)(`option`,{value:`quarantine`,children:n(`storage.policy.mode.quarantine`)}),(0,Q.jsx)(`option`,{value:`permanent`,children:n(`storage.policy.mode.permanent`)})]})]})]}),s.mode===`permanent`&&(0,Q.jsx)(`p`,{className:`err storage-policy-warn`,role:`status`,children:n(`storage.policy.permanentWarn`)})]}),(0,Q.jsxs)(`div`,{className:`storage-policy-meta`,children:[(0,Q.jsxs)(`div`,{className:`storage-policy-meta-item`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:n(`storage.policy.lastRun`)}),(0,Q.jsxs)(`span`,{className:`storage-policy-meta-value`,children:[R(s.lastRun?.at),s.lastRun?` · ${n(`storage.policy.lastRunDetail`,{count:String(s.lastRun.removed),size:hD(s.lastRun.freedBytes,t)})}`:``]})]}),(0,Q.jsxs)(`div`,{className:`storage-policy-meta-item`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:n(`storage.policy.nextRun`)}),(0,Q.jsx)(`span`,{className:`storage-policy-meta-value`,children:R(s.nextRun)})]})]}),(0,Q.jsxs)(`div`,{className:`storage-policy-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:d||p,onClick:()=>void I(),children:n(`storage.policy.save`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:d||p,onClick:()=>void L(),children:n(p?`storage.policy.running`:`storage.policy.runNow`)}),(0,Q.jsx)(`span`,{className:`storage-policy-actions__status${_?` is-error`:``}`,role:_?`alert`:`status`,"aria-live":`polite`,children:_??h??``})]})]}):(0,Q.jsx)(`section`,{className:`storage-cleanup-pane`,children:_&&(0,Q.jsx)(`p`,{className:`err`,role:`alert`,children:_})})}function VD({apiBase:e,locale:t,t:n,archivedCount:r,showQuarantine:i,trashReloadToken:a,onDone:o,onTrashEntriesChange:s}){let[c,l]=(0,Z.useState)(`policy`),u=(0,Z.useRef)(null),d=(0,Z.useRef)(null),f=[{id:`policy`,label:n(`storage.cleanupCard.tab.policy`),ref:u},{id:`quarantine`,label:n(`storage.cleanupCard.tab.quarantine`),ref:d}],p=e=>{l(e),window.requestAnimationFrame(()=>(e===`policy`?u:d).current?.focus())},m=e=>{e.key===`ArrowLeft`||e.key===`ArrowRight`?(e.preventDefault(),p(c===`policy`?`quarantine`:`policy`)):e.key===`Home`?(e.preventDefault(),p(`policy`)):e.key===`End`&&(e.preventDefault(),p(`quarantine`))};return(0,Q.jsxs)(`section`,{className:`panel storage-cleanup-card`,"aria-labelledby":`storage-cleanup-card-title`,children:[(0,Q.jsx)(`div`,{className:`page-tabs storage-cleanup-card__tabs`,role:`tablist`,"aria-label":n(`storage.cleanupCard.tabs`),children:f.map(({id:e,label:t,ref:n})=>(0,Q.jsx)(`button`,{type:`button`,role:`tab`,ref:n,id:`storage-cleanup-tab-${e}`,"aria-selected":c===e,"aria-controls":`storage-cleanup-panel-${e}`,tabIndex:c===e?0:-1,className:`page-tab${c===e?` page-tab--active`:``}`,onKeyDown:m,onClick:()=>p(e),children:t},e))}),(0,Q.jsx)(`h3`,{id:`storage-cleanup-card-title`,className:`panel-title`,children:n(`storage.cleanupCard.title`)}),(0,Q.jsxs)(`div`,{className:`storage-cleanup-card__stack`,children:[(0,Q.jsxs)(`div`,{id:`storage-cleanup-panel-policy`,role:`tabpanel`,"aria-labelledby":`storage-cleanup-tab-policy`,className:`storage-cleanup-card__body storage-cleanup-policy-split`,"data-active":c===`policy`?`true`:`false`,"aria-hidden":c!==`policy`,...c===`policy`?{}:{inert:!0},children:[(0,Q.jsx)(BD,{apiBase:e,locale:t,t:n,onDone:o}),(0,Q.jsxs)(`aside`,{className:`storage-cleanup-manual`,"aria-labelledby":`storage-cleanup-manual-title`,children:[(0,Q.jsx)(`h4`,{id:`storage-cleanup-manual-title`,className:`storage-cleanup-manual__title`,children:n(`storage.cleanup.title`)}),r>0?(0,Q.jsx)(FD,{apiBase:e,locale:t,t:n,onDone:o}):(0,Q.jsx)(`p`,{className:`muted storage-manual-panel__status`,children:n(`storage.cleanup.noArchives`)})]})]}),(0,Q.jsx)(`div`,{id:`storage-cleanup-panel-quarantine`,role:`tabpanel`,"aria-labelledby":`storage-cleanup-tab-quarantine`,className:`storage-cleanup-card__body`,"data-active":c===`quarantine`?`true`:`false`,"aria-hidden":c!==`quarantine`,...c===`quarantine`?{}:{inert:!0},children:i?(0,Q.jsx)(ID,{apiBase:e,locale:t,t:n,onDone:o,reloadToken:a,onEntriesChange:s}):(0,Q.jsx)(`p`,{className:`muted storage-manual-panel__status`,children:n(`storage.trash.empty`)})})]})]})}function HD({apiBase:e}){let{t:n,locale:r}=t(),i=`ocx.storage.report.v1:${e}`,a=Ua(i),[o,s]=(0,Z.useState)(null),[c,l]=(0,Z.useState)(0),u=(0,Z.useRef)(!1),[d,f]=(0,Z.useState)({apiBase:e,settled:!1,hasEntries:!1}),p=(0,Z.useCallback)(async t=>{try{let r=await fetch(`${e}/api/storage`,{signal:t});if(!r.ok)throw Error(n(`storage.error`));let a=await r.json();return qa(i,a),u.current&&(u.current=!1,s(n(`storage.rescanned`))),a}catch(e){throw u.current&&(u.current=!1,s(n(`storage.error`))),t.aborted?e:Error(n(`storage.error`),{cause:e})}},[e,i,n]),m=Ya(`storage-report:${e}`,[e],p,{isEmpty:e=>e.total.fileCount===0&&e.error===void 0}),h=m.state,g=h.data??a,_=h.refreshing||h.showSkeleton&&!g,v=m.refresh,y=(0,Z.useCallback)(()=>{s(null),u.current=!0,v(),l(e=>e+1)},[v]),b=(0,Z.useCallback)(t=>{f({apiBase:e,settled:!0,hasEntries:t.length>0})},[e]),x=d.apiBase===e&&d.settled,S=d.apiBase===e&&d.hasEntries,C=g?.error!==void 0,w=!_&&!h.showError&&!C&&g.total.fileCount===0&&x&&!S,T=g?.buckets.find(e=>e.key===`archived_sessions`)?.fileCount??0,E=!!g&&!C,D=E&&(g.total.fileCount>0||!x||S);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`page-head`,children:[(0,Q.jsx)(`h2`,{id:`storage-page-title`,children:n(`storage.title`)}),(0,Q.jsxs)(`div`,{className:`storage-page-head-actions`,children:[(0,Q.jsx)(`span`,{className:`storage-page-head-feedback`,role:`status`,"aria-live":`polite`,children:o??``}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:_,onClick:()=>void y(),children:[(0,Q.jsx)(re,{}),` `,n(`storage.refresh`)]})]})]}),(0,Q.jsx)(`p`,{className:`page-sub`,children:n(`storage.subtitle`)}),g&&g.error===void 0&&(0,Q.jsxs)(`p`,{className:`storage-page-meta`,children:[(0,Q.jsx)(`code`,{className:`mono storage-page-meta__home`,title:g.codexHome,children:g.codexHome}),(0,Q.jsx)(`span`,{className:`storage-page-meta__sep`,"aria-hidden":`true`,children:`·`}),(0,Q.jsxs)(`span`,{children:[n(`storage.snapshot.lastScan`),`:`,` `,new Date(g.generatedAt).toLocaleString(r)]})]}),h.showSkeleton&&!g?(0,Q.jsx)(Ry,{label:n(`storage.loading`),rows:5}):h.kind===`failed-cold`&&!g?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`alert alert-err`,role:`alert`,children:h.error instanceof Error?h.error.message:n(`storage.error`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>v(),children:n(`common.retry`)})]}):C?(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsx)(`div`,{className:`alert alert-err`,role:`alert`,children:n(`storage.error`)})}):(0,Q.jsxs)(Q.Fragment,{children:[h.showError&&(0,Q.jsx)(`div`,{className:`alert alert-err`,role:`alert`,children:n(`storage.error`)}),w?(0,Q.jsx)(ln,{title:n(`storage.empty`)}):g&&g.total.fileCount>0&&(0,Q.jsx)(jD,{report:g,locale:r,apiBase:e})]}),g&&g.error===void 0&&h.refreshing&&!h.showSkeleton&&(0,Q.jsx)(zy,{live:!h.showError,children:n(`storage.loading`)}),E&&(0,Q.jsx)(VD,{apiBase:e,locale:r,t:n,archivedCount:T,showQuarantine:D,trashReloadToken:c,onDone:()=>void y(),onTrashEntriesChange:b})]})}var UD=`/api/codex-auth/features/default-mode-request-user-input`;function WD({apiBase:e}){let t=O(),[n,r]=(0,Z.useState)(!1),[i,a]=(0,Z.useState)(!1),[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(null),f=(0,Z.useRef)(!1),p=(0,Z.useRef)(!1),m=(0,Z.useRef)(0),h=(0,Z.useCallback)(async()=>{if(f.current)return;let t=++m.current,n=A(15e3);try{let i=await fetch(`${e}${UD}`,{signal:n.signal});if(!i.ok)throw Error(`load`);let o=await i.json();if(f.current||t!==m.current)return;p.current=o.enabled===!0,r(p.current),a(!0),l(!1)}catch{!f.current&&t===m.current&&l(!0)}finally{n.clear()}},[e]);(0,Z.useEffect)(()=>{let e=window.setTimeout(()=>{h()},0),t=ua(()=>{h()},3e4);return()=>{window.clearTimeout(e),t()}},[h]);let g=(0,Z.useCallback)(async()=>{if(f.current||!i||c)return;let n=!p.current,o=p.current;p.current=n,r(n),f.current=!0,s(!0),d(null),m.current++;try{let i=await fetch(`${e}${UD}`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({enabled:n})}),o=await hn(i)??{};if(o.ok!==!0)throw Error(String(i.status));p.current=o.enabled===!0,r(p.current),a(!0),d({tone:`ok`,message:t(o.changed===!0?`codexAuth.requestUserInputUpdatedRestart`:`codexAuth.requestUserInputUpdated`)})}catch(e){p.current=o,r(o);let n=e instanceof Error&&e.message&&!/^HTTP \d{3}$/.test(e.message)?e.message:t(`codexAuth.requestUserInputUpdateFailed`);d({tone:`err`,message:n})}finally{f.current=!1,s(!1)}},[e,i,c,t]),_=o||!i||c;return(0,Q.jsxs)(`div`,{className:`card card-row codex-request-user-input-card`,style:{marginTop:16},"aria-busy":o||!i&&!c||void 0,children:[(0,Q.jsxs)(`div`,{className:`codex-request-user-input-copy`,children:[(0,Q.jsx)(`strong`,{children:t(`codexAuth.requestUserInput`)}),(0,Q.jsx)(`div`,{className:`card-sub`,role:c?`alert`:void 0,children:t(c?`codexAuth.requestUserInputLoadFailed`:`codexAuth.requestUserInputDesc`)}),(0,Q.jsx)(`code`,{className:`mono codex-request-user-input-config`,children:`[features]
8
8
  default_mode_request_user_input = true`})]}),(0,Q.jsxs)(`div`,{className:`codex-request-user-input-controls`,children:[c&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{h()},children:t(`common.retry`)}),(0,Q.jsx)(`button`,{type:`button`,className:`toggle ${n?`on`:``}`,onClick:()=>{g()},disabled:_,"aria-pressed":n,"aria-label":t(`codexAuth.requestUserInput`),title:t(`codexAuth.requestUserInput`),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})})]}),u&&(0,Q.jsx)(`div`,{className:`codex-request-user-input-feedback${u.tone===`err`?` is-error`:``}`,role:u.tone===`err`?`alert`:`status`,"aria-atomic":`true`,children:u.message})]})}function GD({apiBase:e}){let t=O(),[n,r]=(0,Z.useState)(!1),[i,a]=(0,Z.useState)(!1),[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(null),f=(0,Z.useRef)(!1),p=(0,Z.useRef)(0),m=(0,Z.useCallback)(async()=>{if(f.current)return;let t=++p.current,n=A(15e3);try{let i=await fetch(`${e}/api/settings`,{signal:n.signal});if(!i.ok)throw Error(`load`);let o=await i.json();if(f.current||t!==p.current)return;r(o.ultraFastTier===!0),a(!0),l(!1)}catch{!f.current&&t===p.current&&l(!0)}finally{n.clear()}},[e]);(0,Z.useEffect)(()=>{let e=window.setTimeout(()=>{m()},0),t=ua(()=>{m()},3e4);return()=>{window.clearTimeout(e),t()}},[m]);let h=(0,Z.useCallback)(async()=>{if(f.current||!i||c)return;let a=!n;f.current=!0,s(!0),d(null),r(a);let o=A(15e3);try{let n=await fetch(`${e}/api/settings`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({ultraFastTier:a}),signal:o.signal});if(!n.ok)throw Error(`save`);let i=await n.json(),s=typeof i.ultraFastTier==`boolean`?i.ultraFastTier:a;r(s),d({tone:`ok`,message:t(s?`codexAuth.ultraFastEnabled`:`codexAuth.ultraFastDisabled`)})}catch{r(!a),d({tone:`err`,message:t(`codexAuth.ultraFastFailed`)})}finally{o.clear(),f.current=!1,s(!1)}},[e,n,i,c,t]),g=o||!i||c;return(0,Q.jsxs)(`div`,{className:`card card-row codex-ultrafast-card`,style:{marginTop:16},"aria-busy":o||!i&&!c||void 0,children:[(0,Q.jsxs)(`div`,{className:`codex-ultrafast-copy`,children:[(0,Q.jsx)(`strong`,{children:t(`codexAuth.ultraFastTitle`)}),(0,Q.jsx)(`div`,{className:`card-sub`,role:c?`alert`:void 0,children:t(c?`codexAuth.ultraFastLoadFailed`:`codexAuth.ultraFastDesc`)})]}),(0,Q.jsxs)(`div`,{className:`codex-ultrafast-controls`,children:[c&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{m()},children:t(`common.retry`)}),(0,Q.jsx)(`button`,{type:`button`,className:`toggle ${n?`on`:``}`,onClick:()=>{h()},disabled:g,"aria-pressed":n,"aria-label":t(`codexAuth.ultraFastTitle`),title:t(`codexAuth.ultraFastTitle`),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})})]}),u&&(0,Q.jsx)(`div`,{className:`codex-ultrafast-feedback${u.tone===`err`?` is-error`:``}`,role:u.tone===`err`?`alert`:`status`,"aria-atomic":`true`,children:u.message})]})}var KD=[`none`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`,`ultra`];function qD(e){if(e==null)return null;if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`settings shape`);let t=`model`in e&&typeof e.model==`string`?e.model.trim():``;if(!t)throw Error(`settings shape`);let n=`reasoningEffort`in e?e.reasoningEffort:void 0;if(n!==void 0&&(typeof n!=`string`||!KD.includes(n)))throw Error(`settings shape`);let r=`enabled`in e?e.enabled:void 0;if(r!==void 0&&typeof r!=`boolean`)throw Error(`settings shape`);return{model:t,...n?{reasoningEffort:n}:{},...r===void 0?{}:{enabled:r}}}function JD(e){if(!e||typeof e!=`object`)throw Error(`settings shape`);let t=e,n=t.mainAccountHardLock;if(typeof t.codexMainAccountHardLock!=`boolean`||!n||n.enabled!==t.codexMainAccountHardLock||!(n.enabled?[`unknown`,`ready`,`blocked`]:[`off`]).includes(n.state)||n.resetAt!==void 0&&(typeof n.resetAt!=`number`||!Number.isFinite(n.resetAt)))throw Error(`settings shape`);let r=qD(t.codexMainAccountHardLockFallback);return{...t,codexMainAccountHardLock:t.codexMainAccountHardLock,mainAccountHardLock:n,codexMainAccountHardLockFallback:r}}function YD({pending:e,thresholds:t,onCancel:n,onConfirm:r}){let i=O(),a=(0,Z.useId)(),o=(0,Z.useRef)(null),s=(0,Z.useRef)(null),c=(0,Z.useRef)(null);return(0,Z.useEffect)(()=>{let e=o.current;return e&&!e.open&&e.showModal(),s.current?.focus(),()=>{e?.open&&e.close()}},[]),(0,Q.jsxs)(`dialog`,{ref:o,className:`modal-overlay`,"aria-labelledby":`${a}-title`,"aria-describedby":`${a}-body`,"aria-busy":e||void 0,onCancel:e=>{e.preventDefault(),n()},onKeyDown:t=>{if(t.key!==`Tab`||e)return;let n=t.shiftKey?s.current:c.current,r=t.shiftKey?c.current:s.current;document.activeElement===n&&(t.preventDefault(),r?.focus())},children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,tabIndex:-1,"aria-label":i(`common.close`),disabled:e,onClick:n}),(0,Q.jsxs)(`div`,{className:`modal-card codex-main-hard-lock-dialog`,role:`document`,children:[(0,Q.jsx)(`h3`,{id:`${a}-title`,children:i(`codexAuth.mainHardLockConfirmTitle`,t)}),(0,Q.jsx)(`p`,{id:`${a}-body`,className:`modal-desc`,children:i(`codexAuth.mainHardLockConfirmBody`)}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{ref:s,type:`button`,className:`btn btn-ghost`,disabled:e,onClick:n,children:i(`codexAuth.cancel`)}),(0,Q.jsx)(`button`,{ref:c,type:`button`,className:`btn btn-primary`,disabled:e,onClick:r,children:i(e?`common.saving`:`codexAuth.mainHardLockConfirm`)})]})]})]})}function XD(e){return(0,Q.jsx)(ZD,{...e},e.apiBase)}function ZD({apiBase:e,onSaved:t}){let n=O(),r=(0,Z.useId)(),[i,a]=(0,Z.useState)(null),[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(null),[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(!1),[v,y]=(0,Z.useState)(null),[b,x]=(0,Z.useState)([]),[S,C]=(0,Z.useState)(!1),[w,T]=(0,Z.useState)(!1),E=(0,Z.useRef)(!1),D=(0,Z.useRef)(!1),k=(0,Z.useRef)(0),j=(0,Z.useRef)(null),M=(0,Z.useRef)(null),N=(0,Z.useRef)(!1),P=(0,Z.useCallback)(()=>{if(N.current||M.current)return;let t=new AbortController;M.current=t,(async()=>{try{let n=await fetch(`${e}/api/models`,{signal:t.signal});if(!n.ok)throw Error(`models`);let r=await n.json();if(!Array.isArray(r))throw Error(`models`);N.current=!0,D.current&&x(r.filter(e=>typeof e==`object`&&!!e&&typeof e.namespaced==`string`&&e.native!==!0&&e.disabled!==!0))}catch{}finally{M.current===t&&(M.current=null)}})()},[e]),F=(0,Z.useRef)(null),I=(0,Z.useRef)(null),L=(0,Z.useRef)(!1),R=(0,Z.useCallback)(async()=>{if(E.current)return;let t=++k.current;j.current?.abort();let n=A(15e3);j.current=n.controller;try{let r=await fetch(`${e}/api/settings`,{signal:n.signal});if(!r.ok)throw Error(`load`);let i=JD(await r.json());if(!D.current||t!==k.current)return;a(i),y(i.codexMainAccountHardLockFallback),s(!1),p(null)}catch{D.current&&t===k.current&&s(!0)}finally{n.clear()}},[e]);(0,Z.useEffect)(()=>{D.current=!0;let e=window.setTimeout(()=>{R()},0),t=ua(()=>{R()},3e4);return()=>{D.current=!1,k.current+=1,j.current?.abort(),M.current?.abort(),M.current=null,window.clearTimeout(e),t()}},[R]),(0,Z.useEffect)(()=>{g||m||!L.current||(F.current&&!F.current.disabled?(F.current.focus(),L.current=!1):I.current?.focus())},[g,m,o,i]);let z=async()=>{let e=!1;try{e=await t()}catch{}D.current&&d(!e)},B=async t=>{if(E.current||!i)return;E.current=!0,k.current+=1,j.current?.abort(),h(!0),l(!1),d(!1),p(null);let n=A(15e3),r=!1;try{let i=await fetch(`${e}/api/settings`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({codexMainAccountHardLock:t}),signal:n.signal});if(!i.ok)throw Error(`save`);let o=await i.json();if(!o||typeof o!=`object`||!(`ok`in o)||o.ok!==!0)throw Error(`unconfirmed`);let c=JD(o);r=!0,D.current&&(a(c),s(!1),p(c.codexMainAccountHardLock))}catch{D.current&&(l(!0),s(!0))}finally{n.clear()}r&&await z(),E.current=!1,D.current&&(h(!1),_(!1),r||R())},V=()=>{E.current||_(!1)},H=async t=>{if(E.current||S||!i)return;E.current=!0,k.current+=1,j.current?.abort(),C(!0),T(!1);let n=A(15e3),r=!1;try{let i=await fetch(`${e}/api/settings`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({codexMainAccountHardLockFallback:t}),signal:n.signal});if(!i.ok)throw Error(`save`);let o=await i.json();if(!o||typeof o!=`object`||!(`ok`in o)||o.ok!==!0)throw Error(`unconfirmed`);let c=JD(o);r=!0,D.current&&(a(c),y(c.codexMainAccountHardLockFallback),s(!1))}catch{D.current&&T(!0)}finally{n.clear()}r&&await z(),E.current=!1,D.current&&(C(!1),r||R())},U=v?.enabled!==!1&&!!v?.model,W=()=>{v?.model&&H({...v,enabled:!U})},G=e=>{if(!e)return;let{enabled:t,...n}=v??{};H({...n,model:e,...v?.enabled===!1?{enabled:!0}:{}})},ee=e=>{H({...v??{},...e?{reasoningEffort:e}:{reasoningEffort:void 0}})},te=async()=>{E.current||(E.current=!0,k.current+=1,h(!0),await z(),E.current=!1,D.current&&h(!1))},K=i?.codexMainAccountHardLock,q=du(i?.mainAccountHardLock.thresholds);return(0,Q.jsxs)(`section`,{ref:I,id:`codex-main-hard-lock-setting`,tabIndex:-1,className:`card card-row codex-main-hard-lock-setting`,"aria-labelledby":`${r}-title`,"aria-busy":m||!i&&!o||void 0,onBlurCapture:e=>{e.relatedTarget!==null&&!e.currentTarget.contains(e.relatedTarget)&&(L.current=!1)},children:[(0,Q.jsxs)(`div`,{className:`codex-main-hard-lock-copy`,children:[(0,Q.jsx)(`strong`,{id:`${r}-title`,children:n(`codexAuth.mainHardLockTitle`,q)}),(0,Q.jsx)(`div`,{id:`${r}-desc`,className:`card-sub`,children:n(`codexAuth.mainHardLockDesc`,q)})]}),(0,Q.jsx)(`button`,{ref:F,type:`button`,className:`toggle ${K===!0?`on`:``}`,disabled:m||K===void 0||o,"aria-pressed":K,"aria-label":n(`codexAuth.mainHardLockTitle`,q),"aria-describedby":`${r}-desc`,onClick:()=>{E.current||K===void 0||o||(L.current=!0,K?B(!1):_(!0))},children:(0,Q.jsx)(`span`,{className:`toggle-knob`})}),(0,Q.jsxs)(`div`,{className:`codex-main-hard-lock-feedback`,children:[i?.mainAccountHardLock.externalUsage&&(0,Q.jsx)(`div`,{className:`codex-main-hard-lock-status is-blocked`,children:(0,Q.jsx)(`p`,{role:`status`,children:n(`codexAuth.mainExternalUsageWarning`)})}),(c||o)&&(0,Q.jsxs)(`p`,{role:`alert`,children:[n(c?`codexAuth.mainHardLockSaveFailed`:`codexAuth.mainHardLockLoadFailed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,disabled:m,onClick:()=>{R()},children:n(`common.retry`)})]}),f!==null&&!u&&(0,Q.jsx)(`p`,{role:`status`,children:n(f?`codexAuth.mainHardLockEnabled`:`codexAuth.mainHardLockDisabled`,q)}),u&&(0,Q.jsxs)(`p`,{role:`status`,children:[n(`codexAuth.mainHardLockRefreshFailed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,disabled:m,onClick:()=>{te()},children:n(`common.retry`)})]})]}),(0,Q.jsxs)(`div`,{className:`codex-main-hard-lock-fallback`,role:`group`,"aria-label":n(`codexAuth.mainHardLockFallbackTitle`),onFocusCapture:P,onPointerDownCapture:P,onClickCapture:P,style:{flexBasis:`100%`},children:[(0,Q.jsxs)(`div`,{className:`spread`,style:{alignItems:`center`},children:[(0,Q.jsx)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,minWidth:0},children:(0,Q.jsx)(`span`,{className:`font-semibold`,children:n(`codexAuth.mainHardLockFallbackTitle`)})}),(0,Q.jsxs)(`div`,{className:`setting-controls`,style:{flex:`0 1 auto`},children:[(0,Q.jsx)(`button`,{type:`button`,className:`switch ${U?`on`:``}`,onClick:W,disabled:S||o||!v?.model,"aria-label":n(`codexAuth.mainHardLockFallbackTitle`),"aria-pressed":U,children:(0,Q.jsx)(`span`,{className:`knob`})}),(0,Q.jsx)(cn,{value:v?.model??``,options:[...new Set([v?.model,...b.map(e=>e.namespaced)].filter(e=>!!e))].map(e=>({value:e,label:xe(e,n)})),onChange:G,disabled:S||o,label:n(`codexAuth.mainHardLockFallbackModel`),align:`right`}),(0,Q.jsx)(cn,{value:v?.reasoningEffort??``,options:[{value:``,label:n(`codexAuth.mainHardLockFallbackDefaultEffort`)},...KD.map(e=>({value:e,label:n(`models.reasoningEffort.${e}`)}))],onChange:ee,disabled:S||o||!U,label:n(`codexAuth.mainHardLockFallbackEffort`),align:`right`})]})]}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:n(`codexAuth.mainHardLockFallbackDesc`)}),i?.mainAccountHardLock.state===`blocked`&&U&&v?.model&&(0,Q.jsx)(`p`,{role:`status`,className:`codex-main-hard-lock-status is-blocked`,children:n(`codexAuth.mainHardLockFallbackActive`,{model:v.model})}),w&&(0,Q.jsxs)(`p`,{role:`alert`,children:[n(`codexAuth.mainHardLockFallbackSaveFailed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,disabled:S,onClick:()=>{R()},children:n(`common.retry`)})]})]}),g&&(0,Q.jsx)(YD,{pending:m,thresholds:q,onCancel:V,onConfirm:()=>{B(!0)}})]})}function QD({apiBase:e}){let t=O(),[n,r]=(0,Z.useState)(!1),[i,a]=(0,Z.useState)(!1),[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(null),f=(0,Z.useRef)(!1),p=(0,Z.useRef)(!1),m=(0,Z.useRef)(0),h=(0,Z.useCallback)(async()=>{if(p.current)return;let t=++m.current,n=A(15e3);try{let i=await fetch(`${e}/api/settings`,{signal:n.signal});if(!i.ok)throw Error(`load`);let o=await i.json();if(p.current||t!==m.current)return;if(typeof o.codexAccountPickerEnabled!=`boolean`)throw Error(`shape`);f.current=o.codexAccountPickerEnabled,r(o.codexAccountPickerEnabled),a(!0),l(!1)}catch{!p.current&&t===m.current&&l(!0)}finally{n.clear()}},[e]);(0,Z.useEffect)(()=>{let e=window.setTimeout(()=>{h()},0),t=ua(()=>{h()},3e4);return()=>{window.clearTimeout(e),t()}},[h]);let g=(0,Z.useCallback)(async()=>{if(p.current||!i)return;let n=f.current,o=!n;f.current=o,r(o),p.current=!0,s(!0),d(null),m.current+=1;try{let n=await hn(await fetch(`${e}/api/settings`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({codexAccountPickerEnabled:o})}))??{};if(n.ok!==!0||typeof n.codexAccountPickerEnabled!=`boolean`)throw Error(`unconfirmed`);f.current=n.codexAccountPickerEnabled,r(n.codexAccountPickerEnabled),a(!0),l(!1),d(n.catalogRefreshPending===!0?{tone:`warn`,message:t(`codexAuth.catalogRefreshPending`)}:{tone:`ok`,message:t(`codexAuth.accountPickerUpdated`)})}catch{f.current=n,r(n),d({tone:`err`,message:t(`codexAuth.accountPickerUpdateFailed`)})}finally{p.current=!1,s(!1)}},[e,i,t]),_=c&&!i;return(0,Q.jsxs)(`div`,{className:`card card-row codex-account-picker-card`,"aria-busy":o||!i&&!_||void 0,children:[(0,Q.jsxs)(`div`,{className:`codex-account-picker-copy`,children:[(0,Q.jsx)(`strong`,{children:t(`codexAuth.accountPickerTitle`)}),(0,Q.jsx)(`div`,{className:`card-sub`,role:_?`status`:void 0,children:t(_?`codexAuth.accountPickerLoadFailed`:i?n?`codexAuth.accountPickerOnDesc`:`codexAuth.accountPickerOffDesc`:`common.loading`)}),i&&n&&(0,Q.jsx)(`div`,{className:`card-sub faint`,children:t(`codexAuth.accountPickerCompatibility`)}),i&&c&&(0,Q.jsx)(`div`,{className:`card-sub faint`,role:`status`,children:t(`codexAuth.accountPickerRefreshFailed`)})]}),(0,Q.jsxs)(`div`,{className:`codex-account-picker-controls`,children:[c&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{h()},disabled:o,children:t(`common.retry`)}),i&&(0,Q.jsx)(`button`,{type:`button`,className:`toggle ${n?`on`:``}`,onClick:()=>{g()},disabled:o,"aria-pressed":n,"aria-label":t(`codexAuth.accountPickerTitle`),title:t(`codexAuth.accountPickerTitle`),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})})]}),u&&(0,Q.jsx)(`div`,{className:`codex-account-picker-feedback is-${u.tone}`,role:u.tone===`err`?`alert`:`status`,"aria-atomic":`true`,children:u.message})]})}function $D(e){if(!e||typeof e!=`object`)return`absent`;let t=e.providers;if(!t||typeof t!=`object`||Array.isArray(t)||!Object.hasOwn(t,`openai`))return`absent`;let n=t.openai;if(!n||typeof n!=`object`||Array.isArray(n))return`absent`;let r=n;return r.disabled===!0?`disabled`:r.codexAccountMode===`direct`?`direct`:r.codexAccountMode===void 0||r.codexAccountMode===`pool`?`pool`:`absent`}function eO({state:e,busy:t,onEnable:n}){let r=O();return e===null?null:(0,Q.jsxs)(`div`,{className:`panel openai-account-mode-banner`,style:{marginBottom:16},children:[(0,Q.jsxs)(`div`,{className:`row`,children:[(0,Q.jsx)(`strong`,{children:r(`codexAuth.accountModeTitle`)}),e===`pool`?(0,Q.jsx)(`span`,{className:`badge badge-accent openai-account-mode-banner__badge-slot`,children:r(`codexAuth.accountModePool`)}):e===`direct`?(0,Q.jsx)(`span`,{className:`badge badge-green openai-account-mode-banner__badge-slot`,children:r(`codexAuth.accountModeDirect`)}):null]}),e===`pool`&&(0,Q.jsx)(`p`,{className:`card-sub openai-account-mode-banner__desc`,children:r(`codexAuth.accountModePoolDesc`)}),e===`direct`&&(0,Q.jsxs)(`p`,{className:`card-sub openai-account-mode-banner__desc`,children:[r(`codexAuth.accountModeDirectDesc`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:()=>qt(`providers`),children:r(`codexAuth.openProviders`)})]}),(e===`absent`||e===`disabled`)&&(0,Q.jsxs)(`div`,{className:`row`,style:{alignItems:`center`,marginTop:8},children:[(0,Q.jsx)(`p`,{className:`card-sub`,style:{flex:1,margin:0},children:r(`codexAuth.openaiUnavailableDesc`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:t,onClick:n,children:r(t?`codexAuth.enablingOpenai`:`codexAuth.enableOpenai`)})]}),e===`invalid`&&(0,Q.jsxs)(`p`,{className:`card-sub openai-account-mode-banner__desc`,children:[r(`codexAuth.openaiMissing`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:()=>qt(`providers`),children:r(`codexAuth.openProviders`)})]})]})}function tO(e){if(!e||typeof e!=`object`)return;let t=e.providers;if(!t||typeof t!=`object`||Array.isArray(t)||!Object.hasOwn(t,`openai`))return;let n=t.openai;if(!(!n||typeof n!=`object`||Array.isArray(n)))return n}function nO({apiBase:e}){return(0,Q.jsx)(rO,{apiBase:e},e)}function rO({apiBase:e}){let t=O(),n=hu(e),{load:r}=n,i=(0,Z.useRef)(!1);(0,Z.useLayoutEffect)(()=>(i.current=!0,()=>{i.current=!1}),[]);let a=(0,Z.useCallback)(()=>i.current?r(!1):Promise.resolve(!1),[r]),o=`ocx.codex-auth.config.v1:${e}`,s=Ua(o),[c,l]=(0,Z.useState)(()=>s?.bannerState??null),[u,d]=(0,Z.useState)(()=>s?.accountModeState??null),f=(0,Z.useRef)(null),[p,m]=(0,Z.useState)(!1),[h,g]=(0,Z.useState)(``),_=(0,Z.useCallback)(async()=>{let t=A(15e3);try{let n=await fetch(`${e}/api/config`,{signal:t.signal});if(!n.ok)throw Error(String(n.status));let r=await n.json(),i=Jp(tO(r));if(i===`absent`||i===`disabled`||i===`invalid`){l(i);let e=i===`disabled`?`disabled`:`absent`;d(e),qa(o,{bannerState:i,accountModeState:e});return}let a=$D(r);l(a),d(a),qa(o,{bannerState:a,accountModeState:a})}catch{}finally{t.clear()}},[e,o]);(0,Z.useEffect)(()=>{f.current!==e&&(f.current=e,Promise.resolve().then(()=>{_()}));let t=ua(()=>{_()},3e4);return()=>{t()}},[e,_]);let v=async()=>{m(!0),g(``);try{if(c!==`absent`&&c!==`disabled`)return;await tm(e,c),await _()}catch(e){e instanceof em?g(t(e.i18nKey)):g(e instanceof Error?e.message:t(`prov.saveFailed`))}finally{m(!1)}};return(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsx)(Xd,{apiBase:e,controller:n,hasMainHardLockSetting:!0,accountModeState:u,banner:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(eO,{state:c,busy:p,onEnable:()=>{v()}}),h&&(0,Q.jsx)(`div`,{className:`notice notice-err`,role:`alert`,children:h})]}),advancedExtras:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(QD,{apiBase:e}),(0,Q.jsx)(WD,{apiBase:e}),(0,Q.jsx)(GD,{apiBase:e}),(0,Q.jsx)(XD,{apiBase:e,onSaved:a})]})})})}var iO={"base-instructions":`codexSet.layer.base-instructions`,"model-switch":`codexSet.layer.model-switch`,personality:`codexSet.layer.personality`,"context-window-guidance":`codexSet.layer.context-window-guidance`,realtime:`codexSet.layer.realtime`,"agents-md":`codexSet.layer.agents-md`,permissions:`codexSet.layer.permissions`,collaboration:`codexSet.layer.collaboration`,environment:`codexSet.layer.environment`,"environments-instructions":`codexSet.layer.environments-instructions`,apps:`codexSet.layer.apps`,plugins:`codexSet.layer.plugins`,tools:`codexSet.layer.tools`,skills:`codexSet.layer.skills`,"multi-agent-mode":`codexSet.layer.multi-agent-mode`,"git-attribution":`codexSet.layer.git-attribution`},aO={"base-instructions":`codexSet.about.base-instructions`,"model-switch":`codexSet.about.model-switch`,personality:`codexSet.about.personality`,"context-window-guidance":`codexSet.about.context-window-guidance`,realtime:`codexSet.about.realtime`,"agents-md":`codexSet.about.agents-md`,permissions:`codexSet.about.permissions`,collaboration:`codexSet.about.collaboration`,environment:`codexSet.about.environment`,"environments-instructions":`codexSet.about.environments-instructions`,apps:`codexSet.about.apps`,plugins:`codexSet.about.plugins`,tools:`codexSet.about.tools`,skills:`codexSet.about.skills`,"multi-agent-mode":`codexSet.about.multi-agent-mode`,"git-attribution":`codexSet.about.git-attribution`},oO={"model-switch":`codexSet.condition.model-switch`,realtime:`codexSet.condition.realtime`,"agents-md":`codexSet.condition.agents-md`,plugins:`codexSet.condition.plugins`,"git-attribution":`codexSet.condition.git-attribution`},sO={base:`codexSet.class.base`,"config-toggle":`codexSet.class.config-toggle`,"feature-gated":`codexSet.class.feature-gated`,"runtime-conditional":`codexSet.class.runtime-conditional`,"extension-unknown":`codexSet.class.extension-unknown`};function cO({descriptor:e,toggle:t,bytes:n,transitionOnly:r=!1,busy:i,writesRefused:a,onToggle:o,onReset:s,onSelectBase:c,baseSelection:l,onOpen:u}){let d=O(),f=iO[e.id],p=f?d(f):e.id,m=oO[e.id],h=t?.defaultedUserValue??e.default??!0,g=l?.kind==="default";return(0,Q.jsxs)(`li`,{className:`codex-set-prompt__row`,"data-layer-id":e.id,"data-layer-class":e.class,children:[(0,Q.jsx)(`span`,{className:`codex-set-prompt__pos`,"aria-hidden":`true`,children:e.order===null?`·`:e.order+1}),(0,Q.jsx)(`button`,{type:`button`,className:`link-btn codex-set-prompt__name`,onClick:()=>u(e.id),children:p}),e.key&&(0,Q.jsx)(`code`,{className:`codex-set-prompt__key`,children:e.key}),n!==null&&n>0&&(0,Q.jsx)(`span`,{className:`codex-set-prompt__bytes`,title:d(`codexSet.dialog.sourceBytes`,{bytes:n}),children:n>=1024?Math.round(n/1024)+` KB`:n+` B`}),e.class===`base`&&c?(0,Q.jsx)(`button`,{type:`button`,role:`switch`,className:`toggle ${g?`on`:``}`,"aria-checked":g,"aria-label":p,disabled:i||a||l?.kind===`external`,onClick:()=>{c(!g)},children:(0,Q.jsx)(`span`,{className:`toggle-knob`})}):e.class===`config-toggle`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`button`,{type:`button`,role:`switch`,className:`toggle ${h?`on`:``}`,"aria-checked":h,"aria-label":p,disabled:i||a,onClick:()=>{o(e.id,!h)},children:(0,Q.jsx)(`span`,{className:`toggle-knob`})}),t!==void 0&&t.userFileValue!==null&&s&&(0,Q.jsx)(`button`,{type:`button`,className:`link-btn codex-set-prompt__reset`,disabled:i||a,onClick:()=>{s(e.id)},children:d(`codexSet.row.resetDefault`,{value:String(t.default)})})]}):e.class===`feature-gated`?(0,Q.jsxs)(`span`,{className:`codex-set-prompt__note`,children:[d(`codexSet.row.featureGated`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:()=>qt(`integrations/codex`),children:d(`codexSet.row.openFeatures`)})]}):(0,Q.jsx)(`span`,{className:`codex-set-prompt__note codex-set-prompt__note--locked`,children:d(r?`codexSet.row.onChange`:m||`codexSet.row.alwaysOn`)})]})}function lO({descriptor:e,toggle:t,text:n,probe:r,busy:i,onToggle:a,onReset:o,onClose:s,onRemeasure:c}){let l=O(),u=(0,Z.useRef)(null),d=`codex-set-layer-dialog-`+e.id;(0,Z.useEffect)(()=>{let e=u.current,t=document.activeElement;return e&&!e.open&&e.showModal(),()=>{e?.open&&e.close(),t&&typeof t.focus==`function`&&t.focus()}},[]);let f=(0,Z.useCallback)(e=>{e.preventDefault(),s()},[s]),p=sO[e.class],m=iO[e.id],h=aO[e.id],g=oO[e.id];return(0,Q.jsxs)(`dialog`,{ref:u,className:`modal-overlay`,"aria-labelledby":d,onCancel:f,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":l(`common.close`),tabIndex:-1,onClick:s}),(0,Q.jsxs)(`div`,{className:`modal-card codex-set-layer-dialog`,onClick:e=>e.stopPropagation(),role:`document`,children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{id:d,children:m?l(m):e.id}),e.class===`config-toggle`&&t&&(0,Q.jsx)(`button`,{type:`button`,role:`switch`,className:`toggle ${t.defaultedUserValue?`on`:``}`,"aria-checked":t.defaultedUserValue,"aria-label":m?l(m):e.id,disabled:i,onClick:()=>{a(e.id,!t.defaultedUserValue)},children:(0,Q.jsx)(`span`,{className:`toggle-knob`})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:s,children:l(`common.close`)})]}),(0,Q.jsx)(`p`,{className:`muted small`,children:l(h||`codexSet.dialog.unknownLayer`)}),(0,Q.jsxs)(`div`,{className:`codex-set-layer-dialog__line`,children:[(0,Q.jsx)(`span`,{className:`muted text-label`,children:l(`codexSet.dialog.class`)}),(0,Q.jsx)(`span`,{children:l(p)})]}),e.key&&(0,Q.jsxs)(`div`,{className:`codex-set-layer-dialog__line`,children:[(0,Q.jsx)(`span`,{className:`muted text-label`,children:l(`codexSet.dialog.key`)}),(0,Q.jsx)(`code`,{className:`api-code`,children:e.key}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{navigator.clipboard?.writeText(e.key??``)},children:l(`codexSet.dialog.copyKey`)})]}),e.class===`config-toggle`&&t&&(0,Q.jsxs)(`div`,{className:`codex-set-layer-dialog__line`,children:[(0,Q.jsx)(`span`,{className:`muted text-label`,children:l(`codexSet.dialog.fileValue`)}),(0,Q.jsx)(`span`,{children:t.userFileValue===null?l(`codexSet.dialog.absentDefault`,{value:String(t.default)}):l(`codexSet.dialog.setValue`,{value:String(t.userFileValue),fallback:String(t.default)})}),t.userFileValue!==null&&o&&(0,Q.jsx)(`button`,{type:`button`,className:`link-btn codex-set-prompt__reset`,disabled:i,onClick:()=>{o(e.id)},children:l(`codexSet.row.resetDefault`,{value:String(t.default)})})]}),e.class===`runtime-conditional`&&g&&(0,Q.jsx)(`p`,{className:`muted small`,children:l(g)}),e.class===`feature-gated`&&(0,Q.jsx)(`div`,{className:`codex-set-layer-dialog__line`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>qt(`integrations/codex`),children:l(`codexSet.row.openFeatures`)})}),n?.reason===`ok`&&n.text?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`codex-set-layer-dialog__line`,children:[(0,Q.jsx)(`span`,{className:`muted text-label`,children:l(`codexSet.dialog.sourceText`)}),(0,Q.jsx)(`span`,{className:`muted small`,children:l(`codexSet.dialog.sourceBytes`,{bytes:n.bytes})})]}),(0,Q.jsx)(`pre`,{className:`api-code codex-set-layer-dialog__text`,children:n.text})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`muted small codex-set-layer-dialog__no-text`,children:n?.reason===`empty-source`?l(`codexSet.dialog.emptySource`,{path:n.sourcePath??``}):n?.reason===`not-rendered`?l(`codexSet.dialog.notRendered`):n?.reason===`unmapped`?l(`codexSet.dialog.unmapped`):n?.reason===`not-exposed`?l(`codexSet.dialog.notExposed`):r&&r.ok===!1?r.failure?.kind===`program-not-found`?l(`codexSet.dialog.probeNotFound`):r.failure?.kind===`command-unsupported`?l(`codexSet.dialog.probeUnsupported`):r.failure?.kind===`output-invalid`?l(`codexSet.dialog.probeInvalid`):r.failure?.kind===`execution-failed`||r.failure?.kind===`request-failed`?l(`codexSet.dialog.probeFailed`):l(`codexSet.dialog.probeBusy`):l(`codexSet.dialog.textUnavailable`)}),r&&r.ok===!1&&r.failure===void 0&&c&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:c,children:l(`common.retry`)})]})]})]})}var uO=65536;function dO(e){let t=0;for(let n of e){let e=n.codePointAt(0);t+=e<128?1:e<2048?2:e<65536?3:4}return t}function fO(e){return e.replace(/\r\n/g,`
9
9
  `).replace(/\r/g,`
10
10
  `).replace(/\t/g,` `)}function pO(e){let t=0;for(let n of e){let e=n.codePointAt(0);if(n!==`
@@ -55,4 +55,4 @@ const closeSession = () => ws.send(JSON.stringify({ type: "session.close" }));`}
55
55
  `):a(`claude.tierDefaults.applied`)}),u&&(0,Q.jsx)(`p`,{role:f?`alert`:`status`,children:u}),m&&(0,Q.jsx)(`pre`,{children:m})]})}var Sj=[`authMode`,`systemEnv`,`fastMode`,`autoContext`,`autoCompactWindow`,`contextAccounting`,`injectAgents`,`smallFastModel`,`tierModels`,`webSearchSidecar`,`visionSidecar`];function Cj(e){let t=new Map;for(let n of e){let e=n.from.trim(),r=n.to.trim();e&&r&&t.set(e,r)}return Object.fromEntries([...t.entries()].sort(([e],[t])=>e.localeCompare(t)))}function wj(e,t){return{authMode:e.authMode,systemEnv:e.systemEnv,fastMode:e.fastMode,autoContext:e.autoContext,autoCompactWindow:e.autoCompactWindow,contextAccounting:e.contextAccounting,injectAgents:e.injectAgents,smallFastModel:e.smallFastModel,tierModels:e.tierModels??null,modelMap:Cj(t),webSearchSidecar:lj(e.webSearchSidecar),visionSidecar:lj(e.visionSidecar)}}function Tj(e){return JSON.stringify([wj(e.state,e.rows),e.rows.map(e=>[e.from,e.to])])}function Ej(e,t){return Tj(e)!==Tj(t)}function Dj(e){return Object.fromEntries(Sj.map(t=>[t,e[t]]))}function Oj(e,t){return{...t,...Dj(e)}}function kj(e,t){return{...e,...Dj(t)}}function Aj(e,t){return!e||e.adoptNextRead||!e.savePending&&!Ej(e.draft,e.baseline)?{draft:t,baseline:t,adoptNextRead:!1,savePending:e?.savePending}:{draft:{state:Oj(e.draft.state,t.state),rows:e.draft.rows},baseline:t,adoptNextRead:!1,savePending:e.savePending}}function jj(e,t){return{state:{...e,...Dj(t.state)},rows:Object.entries(Cj(t.rows)).map(([e,t])=>({id:JA(),from:e,to:t}))}}function Mj(e,t){if(!e)return e;let n=jj(e.baseline.state,t),r=n.rows,i=Tj(e.draft)===Tj(t);return{draft:i?{state:e.draft.state,rows:r}:e.draft,baseline:n,adoptNextRead:i}}function Nj(e){return{...e,cliFirstParty:e.cliFirstParty===!0,cliFirstPartyApplied:e.cliFirstPartyApplied===!0,desktopFirstParty:e.desktopFirstParty===!0,interceptRunning:e.interceptRunning===!0,interceptEligible:e.interceptEligible===void 0||e.interceptEligible===!0,sharedProxy:BA(e.sharedProxy),contextAccounting:ZA(e.contextAccounting),servedContextAccounting:ZA(e.servedContextAccounting??e.contextAccounting)}}var Pj=new Map,Fj=e=>Pj.get(e)??0,Ij=e=>{Pj.set(e,Fj(e)+1)},Lj=Symbol(`claude-code-live`),Rj=new Map;function zj(e,t,n){for(let r of Rj.get(e)??[])r(t,n)}var Bj={unknown:`claude.firstParty.unknown`,foreign:`claude.firstParty.foreign`,local:`claude.firstParty.local`,residual:`claude.firstParty.residual`,disabled:`claude.firstParty.disabled`,routingOff:`claude.firstParty.routingOff`,stopped:`claude.firstParty.deadProxy`,broken:`claude.firstParty.brokenProxy`,notApplied:`claude.firstParty.notApplied`,shared:`claude.firstParty.shared`};function Vj({title:e,count:t,children:n}){let r=(0,Z.useId)();return(0,Q.jsxs)(`section`,{className:`ccw-section`,"aria-labelledby":r,children:[(0,Q.jsxs)(`h3`,{className:`ccw-section-title`,id:r,children:[e,t==null?null:(0,Q.jsx)(`span`,{className:`count`,children:t})]}),n]})}function Hj({apiBase:e,active:n=!0}){let r=O(),{locale:i}=t(),a=k.find(e=>e.code===i)?.htmlLang??`en`,o=`ocx.claude-code.v1:${e}`,s=`claude-code:${e}`,c=(0,Z.useMemo)(()=>Ga(o),[o]),l=(0,Z.useMemo)(()=>c?.data?{...c.data,state:Nj(c.data.state)}:null,[c]),[u,d]=(0,Z.useState)(()=>l?{draft:l,baseline:l,adoptNextRead:!1}:null),[f,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(``),[g,_]=(0,Z.useState)(``),[v,y]=(0,Z.useState)(!1),{pending:b,change:x}=GA(e),[S,C]=(0,Z.useState)(!1),w=(0,Z.useRef)(!1),T=(0,Z.useCallback)(async t=>{let n=Fj(o),i=await hn(await fetch(`${e}/api/claude-code`,{signal:t}),r(`claude.loadFail`));if(!i)throw Error(r(`claude.loadFail`));let a={state:Nj({...i,authMode:i.authMode===`proxy`||i.authMode===`subscription`?i.authMode:`auto`,...qA(i),fastMode:i.fastMode??null,maxContextTokens:i.maxContextTokens??null,autoContext:i.autoContext!==!1,autoCompactWindow:i.autoCompactWindow??null,injectAgents:i.injectAgents!==!1,effectiveModelEnv:i.effectiveModelEnv??{}}),rows:Object.entries(i.modelMap??{}).map(([e,t])=>({id:JA(),from:e,to:String(t)}))};if(t.aborted)throw Error(`Claude Code request aborted`);return n===Fj(o)?(Ka(o,a),a):{...a,superseded:!0}},[e,o,r]),E=Ya(s,[e],T,{isEmpty:()=>!1,enabled:n,initialData:l??void 0,initialDataCachedAt:c?.cachedAt??null,staleAfterMs:6e4}),D=E.state,[A,j]=(0,Z.useState)(D.data);if(D.data!==A){j(D.data);let e=D.data;e&&!e.superseded&&d(t=>Aj(t,{state:e.state,rows:e.rows}))}let M=D.data??l,N=u?.draft.state??M?.state??null,P=u?.draft.rows??M?.rows??[],F=u!==null&&Ej(u.draft,u.baseline),I=e=>{d(t=>t&&{...t,draft:{...t.draft,state:e},adoptNextRead:!1})},L=e=>{d(t=>t&&{...t,draft:{...t.draft,rows:e},adoptNextRead:!1})},R=e=>{let t=Ga(o)?.data;t&&Ka(o,{...t,state:{...t.state,...e}}),zj(o,{kind:`live`,fields:e},Lj)},[z]=(0,Z.useState)(()=>Symbol(`claude-code-page`));(0,Z.useEffect)(()=>{let e=(e,t)=>{if(e.kind===`live`){let{fields:t}=e;d(e=>e&&{...e,draft:{...e.draft,state:{...e.draft.state,...t}},baseline:{...e.baseline,state:{...e.baseline.state,...t}}})}else if(t!==z){let{copy:t}=e;d(e=>Aj(e,t))}},t=Rj.get(o)??new Set;return t.add(e),Rj.set(o,t),()=>{t.delete(e)}},[o,z]);let B=(0,Z.useMemo)(()=>KA(N?.available,r(`claude.smallFastModelUnsetOption`)),[N?.available,r]),V=(0,Z.useMemo)(()=>{let e=[1e5,2e5,25e4,3e5,35e4,4e5,5e5,6e5,75e4,YA,9e5,1e6].sort((e,t)=>e-t),t=N?.autoCompactWindow??null,n=t!==null&&!e.includes(t)?[...e,t].sort((e,t)=>e-t):e;return[{value:``,label:r(`claude.autoCompactDefault`,{value:XA(YA,a)})},...n.map(e=>({value:String(e),label:XA(e,a)}))]},[N?.autoCompactWindow,r,a]),H=async()=>{N&&(_(``),await x(!N.enabled,e=>{Ij(o),R({enabled:e}),E.refresh()},e=>{y(!1),_(e instanceof Error&&e.message?e.message:r(`claude.networkError`))}))},U=async()=>{if(!N||w.current)return;w.current=!0,C(!0),_(``);let t=!N.cliFirstParty;try{let n=await fetch(`${e}/api/claude-code`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({cliFirstParty:t})});if(!n.ok){let e=await n.json().catch(()=>null),t={intercept_disabled:`claude.firstParty.refusal.interceptDisabled`,intercept_unavailable:`claude.firstParty.refusal.interceptUnavailable`,foreign_env:`claude.firstParty.refusal.foreignEnv`,ca_unavailable:`claude.firstParty.refusal.caUnavailable`,unreadable:`claude.firstParty.refusal.unreadable`,write_failed:`claude.firstParty.refusal.writeFailed`},i=e?.code&&e.code in t?t[e.code]:`claude.saveFailed`;throw Error(e?.code&&[`disabled`,`client_role`,`ephemeral_port`,`port_in_use`,`port_mismatch`,`stopped`,`failed`].includes(e.code)?r(HA(e.code),{port:e.port??``,bound:e.bound??``,configured:e.configured??``}):r(i))}await hn(n,r(`claude.saveFailed`)),Ij(o),R({cliFirstParty:t}),E.refresh()}catch(e){y(!1),_(e instanceof Error&&e.message?e.message:r(`claude.networkError`))}finally{w.current=!1,C(!1)}},W=async()=>{if(!N||!u||f)return;let t=u.draft;_(``),h(``),p(!0),d(e=>e&&{...e,savePending:!0}),Ij(o);try{await hn(await fetch(`${e}/api/claude-code`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(wj(t.state,t.rows))}),r(`claude.saveFailed`)),Ij(o);let n=Ga(o)?.data,i=jj(n?.state??t.state,t);Ka(o,i),zj(o,{kind:`saved`,copy:i},z),d(e=>Mj(e,t)),y(!0),h(``),_(r(`claude.saved`)),E.refresh()}catch(e){d(e=>e&&{...e,savePending:!1}),y(!1),h(e instanceof Error&&e.message?e.message:r(`claude.networkError`))}finally{p(!1)}},G=()=>{_(``),h(``),d(e=>e&&{draft:{state:kj(e.draft.state,e.baseline.state),rows:e.baseline.rows},baseline:e.baseline,adoptNextRead:!1})};if(D.kind===`disabled`&&!M)return null;if(D.showSkeleton&&!M)return(0,Q.jsx)(Ry,{label:r(`claude.loading`),rows:3});if(D.kind===`failed-cold`){let e=D.error instanceof Error?D.error.message:r(`claude.loadFail`);return(0,Q.jsxs)(`div`,{className:`claudecode-workspace-shell`,children:[(0,Q.jsx)($,{tone:`err`,children:e}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>E.refresh(),children:r(`common.retry`)})]})}if(!N)return null;let ee=(0,Q.jsxs)(`div`,{className:`setting-row claudecode-connection-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-label`,children:[(0,Q.jsx)(`span`,{className:`title`,id:`claudecode-connection-label`,children:r(`claude.enabledLabel`)}),(0,Q.jsx)(`span`,{className:`desc`,children:r(`claude.subtitle`)})]}),(0,Q.jsx)(on,{on:N.enabled,onClick:()=>void H(),disabled:b,label:r(`claude.toggleAria`)})]});return(0,Q.jsxs)(`div`,{className:`claudecode-workspace-shell claudecode-doc`,children:[g&&(0,Q.jsx)($,{tone:v?`ok`:`err`,children:g}),D.showError&&(0,Q.jsx)($,{tone:`err`,children:r(`claude.loadFail`)}),(0,Q.jsx)(`div`,{className:`card claudecode-connection-card`,children:(0,Q.jsxs)(`div`,{className:`setting-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-label`,children:[(0,Q.jsx)(`span`,{className:`title`,id:`claudecode-first-party-label`,children:r(`claude.firstParty.label`)}),(0,Q.jsx)(`span`,{className:`desc`,children:r(`claude.firstParty.desc`)})]}),(0,Q.jsx)(on,{on:N.cliFirstParty,onClick:()=>void U(),disabled:S,label:r(`claude.firstParty.aria`)})]})}),!N.interceptRunning&&(0,Q.jsx)(WA,{apiBase:e,reason:N.interceptReason,port:N.interceptFailurePort,onStarted:()=>E.refresh()}),N.cliFirstParty&&(0,Q.jsx)($,{tone:`warn`,children:r(`claude.firstParty.risk`)}),(()=>{let e=VA(N),t=e&&Bj[e];return t?(0,Q.jsx)($,{tone:`warn`,children:r(t)}):null})(),(0,Q.jsx)(Vj,{title:r(`claude.quickstart`),children:(0,Q.jsx)(hj,{manualEnv:ij(N)})}),(0,Q.jsx)(Vj,{title:r(`claude.workspace.settings`),children:(0,Q.jsx)(mj,{state:N,autoCompactOptions:V,availableModels:N.available??[],onStateChange:I})}),(0,Q.jsx)(Vj,{title:r(`claude.tierDefaults.title`),children:(0,Q.jsx)(xj,{state:N,options:B,onChange:I,apiBase:e,dirty:!!u&&Ej(u.draft,u.baseline)})}),(0,Q.jsx)(Vj,{title:r(`claude.smallFastModel`),children:(0,Q.jsx)(fj,{value:N.smallFastModel,tierHaikuModel:N.tierModels?.haiku,options:B,onChange:e=>I({...N,smallFastModel:e})})}),(0,Q.jsx)(Vj,{title:r(`claude.modelMap`),count:P.length,children:(0,Q.jsx)(gj,{rows:P,onRowsChange:L})}),(0,Q.jsx)(Vj,{title:r(`claude.aliases`),count:N.aliases.length,children:(0,Q.jsx)(yj,{aliases:N.aliases})}),(0,Q.jsx)(`div`,{className:`card claudecode-master-card`,children:ee}),(0,Q.jsxs)(`div`,{className:`ccw-savebar`,role:`region`,"aria-label":r(`claude.saveBar.label`),children:[m&&(0,Q.jsx)(`span`,{className:`ccw-savebar-error`,role:`alert`,children:m}),(0,Q.jsx)(`span`,{className:`ccw-savebar-state${F?` dirty`:``}`,"aria-live":`polite`,"aria-atomic":`true`,children:r(F?`claude.saveBar.dirty`:`claude.saveBar.clean`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:!F||f,onClick:G,children:r(`claude.saveBar.revert`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:f,onClick:()=>{W()},children:r(`common.save`)})]})]})}function Uj({apiBase:e,active:t=!0,embedded:n=!1}){let r=O();return(0,Q.jsxs)(`section`,{className:`claude-page${n?` claude-page--embedded`:``}`,children:[!n&&(0,Q.jsx)(`div`,{className:`page-head`,children:(0,Q.jsx)(`h2`,{children:r(`nav.claude`)})}),(0,Q.jsx)(`p`,{className:`page-sub`,children:r(`claude.pageSub`)}),(0,Q.jsx)(Hj,{apiBase:e,active:t},e)]})}function Wj(e,t,n){let r=t.trim().toLowerCase(),i=(r?e.filter(e=>e.label.toLowerCase().includes(r)||e.route.toLowerCase().includes(r)):e).toSorted((e,t)=>Number(!e.available)-Number(!t.available)),a=i.slice(0,n);return{total:e.length,showSearch:e.length>4,shown:a,hidden:i.length-a.length,noMatch:e.length>0&&i.length===0}}function Gj(e){return new Set(Object.keys(e))}function Kj(e,t){return t!==null&&e===t}function qj(e){return e||(typeof localStorage>`u`?void 0:localStorage)}function Jj(e){return{read(t){let n=qj(t);if(!n)return null;try{let t=n.getItem(e);if(t===null)return null;let r=JSON.parse(t);return Array.isArray(r)?new Set(r.filter(e=>typeof e==`string`)):null}catch{return null}},write(t,n){let r=qj(n);if(r)try{r.setItem(e,JSON.stringify([...t]))}catch{}}}}function Yj(e,t){let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n}function Xj(e){return e.label||e.route}function Zj({apiBase:e,bindings:n,suggestions:r,models:i,onSaved:a}){let{t:o}=t(),[s,c]=(0,Z.useState)(``),[l,u]=(0,Z.useState)(``),[d,f]=(0,Z.useState)(null),[p,m]=(0,Z.useState)(null),h=(0,Z.useMemo)(()=>i.filter(e=>e.available),[i]),g=(0,Z.useMemo)(()=>new Set(Object.keys(n)),[n]),_=(0,Z.useMemo)(()=>r.filter(e=>!g.has(e)),[r,g]),v=(0,Z.useMemo)(()=>Object.entries(n).sort(([e],[t])=>e.localeCompare(t)),[n]),y=s.trim(),b=y.startsWith(`claude-`)&&l!==``&&d===null,x=async(t,n)=>{if(d===null){f(n),m(null);try{let n=await hn(await fetch(`${e}/api/claude-desktop/first-party-bindings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}),o(`claudeDesktop.firstParty.bindings.saveFailed`));if(!n||n.ok!==!0||typeof n.modelBindings!=`object`||n.modelBindings===null)throw Error(o(`claudeDesktop.firstParty.bindings.saveFailed`));c(``),u(``),a(n.modelBindings)}catch(e){m(e instanceof Error?e.message:o(`claudeDesktop.firstParty.bindings.saveFailed`))}finally{f(null)}}};return(0,Q.jsxs)(`section`,{className:`claude-bindings`,"aria-labelledby":`claude-bindings-title`,children:[(0,Q.jsx)(`h3`,{id:`claude-bindings-title`,className:`claude-bindings-title`,children:o(`claudeDesktop.firstParty.bindings.title`)}),(0,Q.jsx)(`p`,{className:`claude-bindings-hint`,children:o(`claudeDesktop.firstParty.bindings.hint`)}),p&&(0,Q.jsx)($,{tone:`err`,children:p}),v.length===0?(0,Q.jsx)(`p`,{className:`claude-bindings-empty`,children:o(`claudeDesktop.firstParty.bindings.empty`)}):(0,Q.jsx)(`ul`,{className:`claude-bindings-list`,children:v.map(([e,t])=>{let n=h.some(e=>e.route===t);return(0,Q.jsxs)(`li`,{className:`claude-bindings-row`,children:[(0,Q.jsx)(`code`,{className:`claude-bindings-id`,title:e,children:e}),(0,Q.jsx)(Ke,{className:`claude-bindings-arrow`,width:12,height:12,"aria-hidden":`true`}),(0,Q.jsxs)(`select`,{className:`input claude-bindings-select`,"aria-label":o(`claudeDesktop.firstParty.bindings.routeLabel`),value:t,disabled:d!==null,onChange:t=>void x({set:{[e]:t.target.value}},e),children:[!n&&(0,Q.jsx)(`option`,{value:t,children:t}),h.map(e=>(0,Q.jsx)(`option`,{value:e.route,children:Xj(e)},e.route))]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm claude-bindings-remove`,"aria-label":o(`claudeDesktop.firstParty.bindings.remove`,{id:e}),disabled:d!==null,onClick:()=>void x({remove:[e]},e),children:(0,Q.jsx)(ve,{width:12,height:12,"aria-hidden":`true`})})]},e)})}),(0,Q.jsxs)(`div`,{className:`claude-bindings-add`,children:[(0,Q.jsx)(`input`,{className:`input claude-bindings-input`,type:`text`,list:`claude-bindings-suggestions`,"aria-label":o(`claudeDesktop.firstParty.bindings.pickerLabel`),placeholder:o(`claudeDesktop.firstParty.bindings.pickerPlaceholder`),value:s,disabled:d!==null,onChange:e=>c(e.target.value)}),(0,Q.jsx)(`datalist`,{id:`claude-bindings-suggestions`,children:_.map(e=>(0,Q.jsx)(`option`,{value:e},e))}),(0,Q.jsxs)(`select`,{className:`input claude-bindings-select`,"aria-label":o(`claudeDesktop.firstParty.bindings.routeLabel`),value:l,disabled:d!==null,onChange:e=>u(e.target.value),children:[(0,Q.jsx)(`option`,{value:``,children:o(`claudeDesktop.firstParty.bindings.routePlaceholder`)}),h.map(e=>(0,Q.jsx)(`option`,{value:e.route,children:Xj(e)},e.route))]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:!b,onClick:()=>void x({set:{[y]:l}},y),children:o(d!==null&&d===y?`common.saving`:`claudeDesktop.firstParty.bindings.add`)})]})]})}function Qj(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.desired==`boolean`&&typeof t.supported==`boolean`&&[`trusted`,`untrusted`,`unsupported`,`unknown`].includes(t.trust)&&[`absent`,`applied`,`not_selected`,`unsafe`].includes(t.profile)&&typeof t.listenerReady==`boolean`&&typeof t.effective==`boolean`&&[`active`,`restart_required`,`unsupported_platform`,`not_first_party`,`integration_off`,`disabled`,`proxy_unavailable`,`mode_not_committed`,`trust_pending`,`trust_declined`,`profile_failed`].includes(t.reason)&&typeof t.models==`number`&&Number.isFinite(t.models)&&t.models>=0&&(t.snapshotAt===null||typeof t.snapshotAt==`number`)&&(t.lastBootstrapAt===null||typeof t.lastBootstrapAt==`number`)&&(t.hint===void 0||typeof t.hint==`string`)&&(t.residual===void 0||Array.isArray(t.residual)&&t.residual.every(e=>typeof e==`string`))}function $j(e){switch(e){case`active`:return`claudeDesktop.picker.state.active`;case`restart_required`:return`claudeDesktop.picker.state.restart`;case`trust_pending`:return`claudeDesktop.picker.state.trustPending`;case`trust_declined`:return`claudeDesktop.picker.state.trustDeclined`;case`proxy_unavailable`:return`claudeDesktop.picker.state.proxyUnavailable`;case`unsupported_platform`:return`claudeDesktop.picker.state.unsupported`;case`profile_failed`:return`claudeDesktop.picker.state.profileFailed`;case`not_first_party`:case`integration_off`:case`disabled`:case`mode_not_committed`:return`claudeDesktop.picker.state.notFirstParty`}}function eM({apiBase:e,picker:n,onUpdated:r,pickerReason:i,pickerFailurePort:a}){let{t:o}=t(),[s,c]=(0,Z.useState)(null),[l,u]=(0,Z.useState)(!1),[d,f]=(0,Z.useState)(null),p=s??n,m=async()=>{if(!l){u(!0),f(null);try{let t=await fetch(`${e}/api/claude-desktop/picker`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:!p.desired,persist:!0})}),n;if(t.ok)n=await hn(t,o(`claudeDesktop.updateFailed`));else{try{n=await t.json()}catch{throw Error(o(`claudeDesktop.updateFailed`))}if(!n.picker)throw Error(o(HA(n.reason),{port:n.port??``}))}if(!n||n.ok!==!0&&!n.picker||!n.picker||!Qj(n.picker))throw Error(o(`claudeDesktop.updateFailed`));c(n.picker),r?.(n.picker)}catch(e){f(e instanceof Error?e.message:o(`claudeDesktop.updateFailed`))}finally{u(!1)}}};return(0,Q.jsxs)(`section`,{className:`claude-picker`,"aria-labelledby":`claude-picker-title`,children:[!p.listenerReady&&i&&(0,Q.jsx)(`span`,{role:`status`,children:o(HA(i===`port_in_use`&&!a?`failed`:i),{port:a??``})}),!p.listenerReady&&!i&&(0,Q.jsx)(WA,{apiBase:e,onStarted:()=>{c(null),r?.(p)}}),(0,Q.jsxs)(`div`,{className:`claude-picker-header`,children:[(0,Q.jsxs)(`div`,{className:`claude-picker-copy`,children:[(0,Q.jsx)(`h3`,{id:`claude-picker-title`,className:`claude-picker-title`,children:o(`claudeDesktop.picker.title`)}),(0,Q.jsx)(`p`,{className:`claude-picker-hint`,children:o(`claudeDesktop.picker.hint`)})]}),(0,Q.jsx)(`button`,{type:`button`,role:`switch`,className:`toggle ${p.desired?`on`:``}`,"aria-checked":p.desired,"aria-label":o(`claudeDesktop.picker.toggle`),disabled:l,onClick:()=>void m(),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})})]}),d&&(0,Q.jsx)($,{tone:`err`,children:d}),(0,Q.jsxs)(`p`,{className:`claude-picker-state claude-picker-state-${p.reason}`,"aria-live":`polite`,children:[(0,Q.jsx)(`span`,{className:`claude-picker-state-dot`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{children:o($j(p.reason))}),p.reason===`trust_pending`&&p.hint&&(0,Q.jsx)(`code`,{children:p.hint})]}),(0,Q.jsx)(`p`,{className:`claude-picker-models`,children:o(`claudeDesktop.picker.models`,{count:p.models})}),(0,Q.jsx)(`p`,{className:`claude-picker-offline-note`,role:`note`,children:o(`claudeDesktop.picker.offlineNote`)})]})}var tM=[`opus`,`fable`,`sonnet`,`haiku`];function nM(e,t,n,r){let i=e.assignments[t];if(!i)return e;if(i.family===n)return!r||e.defaults[n]===t?e:{...e,defaults:{...e.defaults,[n]:t}};let a={...e.assignments,[t]:{...i,family:n}},o={...e.defaults};return o[i.family]===t&&(o[i.family]=Object.keys(a).filter(e=>e!==t&&a[e].family===i.family).sort()[0]??null),(r||o[n]===null)&&(o[n]=t),{...e,assignments:a,defaults:o}}function rM(e,t){let n=Object.fromEntries(tM.map(e=>[e,[]]));for(let r of e)r.available&&n[t.assignments[r.route]?.family??`opus`].push(r.route);let r={};for(let e of tM){let i=n[e].toSorted(),a=t.defaults[e];r[e]=a&&i.includes(a)?a:i[0]??null}return r}function iM(e,t,n){return e.filter(e=>(t.assignments[e.route]?.family??`opus`)===n).length}function aM(e,t,n){return e.defaults[n]??t[n]??``}function oM(e,t){return e.filter(e=>e.available&&e.route!==t).sort((e,t)=>e.label.localeCompare(t.label)||e.route.localeCompare(t.route))}function sM(e,t,n){let r=e=>e===t?0:e===n?1:2;return e.toSorted((e,t)=>r(e.route)-r(t.route)||e.label.localeCompare(t.label)||e.route.localeCompare(t.route))}var cM=Jj(`ocx.claudeDesktop.collapsedFamilies.v2`),lM=[`first-party`,`gateway`];function uM(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.desired==`boolean`&&typeof t.supported==`boolean`&&[`trusted`,`untrusted`,`unsupported`,`unknown`].includes(t.trust)&&[`absent`,`applied`,`not_selected`,`unsafe`].includes(t.profile)&&typeof t.listenerReady==`boolean`&&typeof t.effective==`boolean`&&[`active`,`restart_required`,`unsupported_platform`,`not_first_party`,`integration_off`,`disabled`,`proxy_unavailable`,`mode_not_committed`,`trust_pending`,`trust_declined`,`profile_failed`].includes(t.reason)&&typeof t.models==`number`&&Number.isFinite(t.models)&&t.models>=0&&(t.snapshotAt===null||typeof t.snapshotAt==`number`)&&(t.lastBootstrapAt===null||typeof t.lastBootstrapAt==`number`)&&(t.hint===void 0||typeof t.hint==`string`)&&(t.residual===void 0||Array.isArray(t.residual)&&t.residual.every(e=>typeof e==`string`))}function dM(e){if(typeof e!=`object`||!e)return!1;let t=e,n=t.health;if(t.mode!==void 0&&!lM.includes(t.mode))return!1;if(t.riskWarning!==void 0&&t.riskWarning!==null){let e=t.riskWarning;if(typeof e!=`object`||typeof e.code!=`string`||typeof e.message!=`string`)return!1}if(t.firstParty!==void 0){let e=t.firstParty;if(typeof e!=`object`||!e||typeof e.applied!=`boolean`||typeof e.stale!=`boolean`||typeof e.interceptEnabled!=`boolean`||typeof e.interceptRunning!=`boolean`||typeof e.proxyPort!=`number`||typeof e.caCertPath!=`string`||e.picker!==void 0&&!uM(e.picker))return!1;if(e.modelBindings!==void 0){let t=e.modelBindings;if(typeof t!=`object`||!t||Array.isArray(t)||Object.values(t).some(e=>typeof e!=`string`))return!1}if(e.pickerSuggestions!==void 0&&(!Array.isArray(e.pickerSuggestions)||e.pickerSuggestions.some(e=>typeof e!=`string`)))return!1}return typeof t.desiredEnabled==`boolean`&&typeof t.applied==`boolean`&&(t.appliedAt===null||typeof t.appliedAt==`string`)&&typeof t.stale==`boolean`&&typeof n==`object`&&!!n&&(n.lastRequestAt===null||typeof n.lastRequestAt==`string`)&&typeof n.requestCount==`number`&&typeof n.errorCount==`number`}var fM={opus:`claudeDesktop.family.opus`,fable:`claudeDesktop.family.fable`,sonnet:`claudeDesktop.family.sonnet`,haiku:`claudeDesktop.family.haiku`};function pM(e){return{version:1,assignments:Object.fromEntries(Object.entries(e.assignments).map(([e,t])=>[e,{...t}])),defaults:{...e.defaults},...e.appliedFingerprint===void 0?{}:{appliedFingerprint:e.appliedFingerprint},...e.appliedAt===void 0?{}:{appliedAt:e.appliedAt}}}function mM(e){let t={...e.profile.assignments};for(let n of e.models){let e=t[n.route]??n.assignment;t[n.route]={family:tM.includes(e?.family)?e.family:`opus`,alias:typeof e?.alias==`string`?e.alias:``}}return{version:1,assignments:t,defaults:{opus:e.profile.defaults.opus??null,fable:e.profile.defaults.fable??null,sonnet:e.profile.defaults.sonnet??null,haiku:e.profile.defaults.haiku??null}}}function hM(e,t){return e&&typeof e==`object`&&`error`in e&&typeof e.error==`string`?e.error:t}var gM=`⁣route⁣`;function _M({route:e,t}){let[n=``,r=``]=t(`claudeDesktop.roles.unavailableOption`,{route:gM}).split(gM);return(0,Q.jsxs)(`span`,{className:`claude-role-option`,children:[n&&(0,Q.jsx)(`span`,{className:`claude-role-option__status`,children:n}),(0,Q.jsx)(`span`,{className:`claude-role-option__route`,children:e}),r&&(0,Q.jsx)(`span`,{className:`claude-role-option__status`,children:r})]})}function vM(e,t){return e?e>=1048576?t(`claudeDesktop.contextM`,{n:Math.round(e/1048576)}):e>=1e6?t(`claudeDesktop.contextM`,{n:e/1e6}):t(`claudeDesktop.contextK`,{n:Math.round(e/1e3)}):null}function yM(e){return Ga(e)?.data??null}function bM(e){return Ga(e)?.cachedAt??null}function xM(e){let t=yM(e);return{held:t,data:t?.data??null,profile:t?.profile??null,savedProfile:t?.profile?pM(t.profile):null,destinations:t?.data?Object.fromEntries(t.data.models.map(e=>[e.route,t.profile.assignments[e.route]?.family??`opus`])):{}}}function SM({apiBase:e,active:n=!0}){let{t:r,locale:i}=t(),a=k.find(e=>e.code===i)?.htmlLang,o=`ocx.claude-desktop.v1:${e}`,s=`claude-desktop:${e}`,c=(0,Z.useMemo)(()=>xM(o),[o]),[l,u]=(0,Z.useState)(()=>c.profile),[d,f]=(0,Z.useState)(()=>c.savedProfile),[p,m]=(0,Z.useState)(()=>c.destinations),[h,g]=(0,Z.useState)(null),[_,v]=(0,Z.useState)(``),[y,b]=(0,Z.useState)(null),[x,S]=(0,Z.useState)({}),[C,w]=(0,Z.useState)({}),[T,E]=(0,Z.useState)(()=>cM.read()??new Set(tM)),[D,O]=(0,Z.useState)({}),[A,j]=(0,Z.useState)(!1),[M,N]=(0,Z.useState)(6),[P,F]=(0,Z.useState)(null),I=(0,Z.useRef)(null),L=(0,Z.useCallback)(async t=>{let n=await hn(await fetch(`${e}/api/claude-desktop`,{signal:t}),r(`claudeDesktop.loadFail`));if(!n||!(`profile`in n)||!(`models`in n))throw Error(hM(n,r(`claudeDesktop.loadFail`)));let i=mM(n),a={data:n,profile:i};if(t.aborted)throw Error(`Claude Desktop request aborted`);if(u(i),f(pM(i)),m(Object.fromEntries(n.models.map(e=>[e.route,i.assignments[e.route]?.family??`opus`]))),cM.read()===null){let e=Object.fromEntries(tM.map(e=>[e,0]));for(let t of n.models)e[i.assignments[t.route]?.family??`opus`]+=1;E(Gj(e))}return Ka(o,a),a},[e,o,r,m,u,f]),R=Ya(s,[e],L,{isEmpty:()=>!1,enabled:n,initialData:c.held??void 0,initialDataCachedAt:bM(o),staleAfterMs:6e4}),z=R.state,B=z.data??(c.data&&c.profile?{data:c.data,profile:c.profile}:null),V=B?.data??null,H=l??B?.profile??null,U=d??B?.profile??null,W=B?Object.fromEntries(B.data.models.map(e=>[e.route,B.profile.assignments[e.route]?.family??`opus`])):{},G=Object.keys(p).length>0?p:W,ee=(0,Z.useMemo)(()=>H!==null&&U!==null&&JSON.stringify(H)!==JSON.stringify(U),[H,U]),te=(0,Z.useMemo)(()=>{let e=Object.fromEntries(tM.map(e=>[e,[]]));if(!V||!H)return e;for(let t of V.models)e[H.assignments[t.route]?.family??`opus`].push(t);return e},[V,H]),K=(0,Z.useMemo)(()=>V&&H?rM(V.models,H):{opus:null,fable:null,sonnet:null,haiku:null},[V,H]),q=`ocx.claude-desktop.status.v1:${e}`,ne=`claude-desktop-status:${e}`,J=Ga(q),Y=J&&dM(J.data)?J.data:null,re=Ya(ne,[e],async t=>{let n=await gn(await fetch(`${e}/api/claude-desktop/status`,{signal:t}));if(!dM(n))throw Error(`Claude Desktop status unavailable`);return Ka(q,n),n},{isEmpty:()=>!1,pollMs:5e3,enabled:n,initialData:Y??void 0}),ie=re.state,X=ie.data??Y,ae=ie.showError,oe=X!==null,se=oe||ae,ce=X?.mode??`gateway`,le=P??ce,ue=oe&&le!==ce,de=X?.firstParty?.modelBindings,fe=de?JSON.stringify(de):null,[pe,me]=(0,Z.useState)(null),[he,ge]=(0,Z.useState)(fe);he!==fe&&(ge(fe),me(null));let _e=pe??de??{},ve=(0,Z.useMemo)(()=>X?.firstParty?.pickerSuggestions??[],[X]),ye=(e,t,n=!1)=>{H&&(!n&&H.assignments[e]?.family===t||(u(r=>r&&nM(r,e,t,n)),m(n=>({...n,[e]:t})),v(r(`claudeDesktop.moved`,{route:e,family:r(fM[t])}))))},be=e=>{let t=Yj(T,e);cM.write(t),E(t)},xe=async t=>{if(!(!H||y)){b(`save`),g(null);try{await hn(await fetch(`${e}/api/claude-desktop`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({profile:H})}),r(`claudeDesktop.saveFailed`)),f(pM(H)),t?(b(`apply`),(await hn(await fetch(`${e}/api/claude-desktop/apply`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({mode:le})}),r(`claudeDesktop.applyFailed`)))?.saved===!1?(g({tone:`warn`,text:r(`claudeDesktop.appliedMarkerUnsaved`)}),v(r(`claudeDesktop.appliedMarkerUnsaved`))):(g({tone:`ok`,text:r(`claudeDesktop.savedApplied`)}),v(r(`claudeDesktop.savedAppliedAnnounce`))),F(null)):(g({tone:`ok`,text:r(`claudeDesktop.saved`)}),v(r(`claudeDesktop.savedAnnounce`))),re.refresh()}catch(e){let t=e instanceof Error?e.message:r(`claudeDesktop.updateFailed`);g({tone:`err`,text:t}),v(t)}finally{b(null)}}},Se=()=>{if(!H)return;let e=URL.createObjectURL(new Blob([`${JSON.stringify(H,null,2)}\n`],{type:`application/json`})),t=document.createElement(`a`);t.href=e,t.download=`claude-desktop-profile.json`,t.click(),URL.revokeObjectURL(e),v(r(`claudeDesktop.exported`))},Ce=async e=>{let t=e.target.files?.[0];if(e.target.value=``,t)try{let e=JSON.parse(await t.text());if(e.version!==1||!e.assignments||!e.defaults)throw Error(r(`claudeDesktop.importExpected`));let n=mM({...V,profile:e});u(n),g({tone:`ok`,text:r(`claudeDesktop.importReady`)}),v(r(`claudeDesktop.importedAnnounce`))}catch(e){let t=e instanceof Error?e.message:r(`claudeDesktop.importInvalid`);g({tone:`err`,text:t}),v(r(`claudeDesktop.importFailed`,{error:t}))}},we=(e,t)=>{e.preventDefault();let n=e.dataTransfer.getData(`text/plain`);n&&ye(n,t)};if(z.kind===`disabled`&&!B)return null;if(z.showSkeleton&&!B)return(0,Q.jsx)(Ry,{label:r(`claudeDesktop.loading`),rows:4});if(z.kind===`failed-cold`){let e=z.error instanceof Error?z.error.message:r(`claudeDesktop.loadFail`);return(0,Q.jsxs)(`div`,{className:`claude-desktop-error`,children:[(0,Q.jsx)($,{tone:`err`,children:e}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>R.refresh(),children:r(`claudeDesktop.retry`)})]})}if(!V||!H)return null;let Te=aM(H,K,`opus`),Ee=aM(H,K,`haiku`),De=new Map(V.models.map(e=>[e.route,e])),Oe=(e,t,n)=>{let i=oM(V.models,t||null).map(e=>({value:e.route,label:e.label}));if(e&&!i.some(t=>t.value===e)){let t=De.get(e);i.unshift({value:e,label:t?.available===!1||!t?(0,Q.jsx)(_M,{route:e,t:r}):e})}return n?i.unshift({value:``,label:r(`claudeDesktop.roles.unset`)}):e||i.unshift({value:``,label:r(`claudeDesktop.roles.pick`)}),i},ke=e=>{if(!e)return;let t=De.get(e);return t?.available?t.label:r(`claudeDesktop.roles.unavailableOption`,{route:e})},Ae=sM(V.models,Te||null,Ee||null),je=iM(V.models,H,`haiku`)===0;return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`claude-desktop-toolbar`,children:(0,Q.jsx)(`p`,{className:`claude-panel-lead`,children:r(`claudeDesktop.subtitle`,{port:V.port})})}),(0,Q.jsxs)(`fieldset`,{className:`claude-mode-picker`,disabled:y!==null||!se,children:[(0,Q.jsx)(`legend`,{children:r(`claudeDesktop.mode.legend`)}),lM.map(e=>(0,Q.jsxs)(`label`,{className:`claude-mode-option${se&&le===e?` active`:``}`,children:[(0,Q.jsx)(`input`,{type:`radio`,name:`claude-desktop-mode`,value:e,checked:se&&le===e,onChange:()=>F(e)}),(0,Q.jsxs)(`span`,{className:`claude-mode-title`,children:[r(e===`first-party`?`claudeDesktop.mode.firstParty`:`claudeDesktop.mode.gateway`),e===`gateway`&&(0,Q.jsx)(`span`,{className:`claude-mode-default`,children:r(`claudeDesktop.mode.defaultBadge`)}),oe&&ce===e&&(0,Q.jsx)(`span`,{className:`claude-mode-current`,children:r(`claudeDesktop.mode.current`)})]}),(0,Q.jsx)(`span`,{className:`claude-mode-hint`,children:r(e===`first-party`?`claudeDesktop.mode.firstPartyHint`:`claudeDesktop.mode.gatewayHint`)})]},e)),le===`first-party`&&(0,Q.jsx)(`p`,{className:`claude-mode-risk`,role:`note`,children:r(`claudeDesktop.mode.firstPartyRisk`)}),ue&&(0,Q.jsx)(`span`,{className:`claude-mode-switch-note`,children:r(`claudeDesktop.mode.switchNote`)})]}),(0,Q.jsxs)(`div`,{className:`claude-status-bar ${ae&&!X?`not-applied`:X?X.desiredEnabled?ce===`gateway`&&X.activeProfile===!1?`not-applied`:X.stale?`stale`:X.applied?`applied`:`not-applied`:`not-applied`:`pending`}`,"aria-busy":!X&&!ae||void 0,children:[(0,Q.jsx)(`span`,{className:`claude-status-dot`}),(0,Q.jsx)(`span`,{children:ae&&!X?r(`claudeDesktop.loadFail`):X?X.desiredEnabled?ce===`gateway`&&X.activeProfile===!1?r(`claudeDesktop.status.notActiveProfile`):X.stale?r(`claudeDesktop.status.stale`):X.applied?r(ce===`first-party`?`claudeDesktop.status.appliedFirstParty`:`claudeDesktop.status.applied`):r(`claudeDesktop.status.notApplied`):r(`claudeDesktop.status.disabled`):r(`claudeDesktop.loading`)}),X?.firstParty&&ce===`first-party`&&X.desiredEnabled&&(0,Q.jsx)(`span`,{className:`claude-status-health`,children:X.firstParty.interceptRunning?r(`claudeDesktop.firstParty.proxyRunning`,{port:X.firstParty.proxyPort}):(0,Q.jsx)(WA,{apiBase:e,reason:X.firstParty.interceptReason,port:X.firstParty.proxyPort,onStarted:()=>re.refresh()})}),X?.health.lastRequestAt&&(0,Q.jsxs)(`span`,{className:`claude-status-health`,children:[r(`claudeDesktop.health.lastRequest`),`:`,` `,new Date(X.health.lastRequestAt).toLocaleTimeString(a)]}),X&&X.health.requestCount>0&&(0,Q.jsx)(`span`,{className:`claude-status-health`,children:r(`claudeDesktop.health.stats`,{count:X.health.requestCount,errors:X.health.errorCount})}),(0,Q.jsxs)(`span`,{className:`claude-status-actions`,children:[(0,Q.jsx)(`span`,{className:`claude-dirty${ee?` active`:``}`,children:r(ee?`claudeDesktop.unsaved`:`claudeDesktop.upToDate`)}),(0,Q.jsxs)(`span`,{className:`claude-save-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:!ee||y!==null,onClick:()=>void xe(!1),children:r(y===`save`?`claudeDesktop.saving`:`common.save`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:y!==null,onClick:()=>void xe(!0),children:y===`apply`?r(`claudeDesktop.applying`):y===`save`?r(`claudeDesktop.saving`):X?.desiredEnabled===!1?r(`claudeDesktop.enableApply`):r(ue?`claudeDesktop.switchModeApply`:`claudeDesktop.saveApply`)})]})]})]}),X?.riskWarning&&le!==`first-party`&&(0,Q.jsx)(`p`,{className:`claude-mode-risk`,role:`note`,children:r(`claudeDesktop.mode.firstPartyRisk`)}),(0,Q.jsx)(`div`,{className:`sr-only`,"aria-live":`polite`,"aria-atomic":`true`,children:_}),h&&(0,Q.jsx)($,{tone:h.tone,children:h.text}),z.showError&&(0,Q.jsx)($,{tone:`err`,children:r(`claudeDesktop.loadFail`)}),ae&&X&&(0,Q.jsx)($,{tone:`err`,children:r(`claudeDesktop.loadFail`)}),ce===`first-party`&&X?.firstParty?.picker&&(0,Q.jsx)(eM,{apiBase:e,picker:X.firstParty.picker,pickerReason:X.firstParty.pickerReason,pickerFailurePort:X.firstParty.pickerFailurePort,onUpdated:()=>void re.refresh()},`${X.firstParty.picker.reason}:${X.firstParty.picker.desired}:${X.firstParty.picker.effective}:${X.firstParty.picker.models}:${X.firstParty.picker.hint??``}`),ce===`first-party`&&(0,Q.jsx)(Zj,{apiBase:e,bindings:_e,suggestions:ve,models:V.models,onSaved:e=>{me(e),re.refresh()}}),V.models.length===0&&(0,Q.jsx)(ln,{title:r(`claudeDesktop.emptyTitle`),children:r(`claudeDesktop.emptyHint`)}),V.models.length>0&&(0,Q.jsxs)(`section`,{className:`card claude-desktop-roles`,"aria-labelledby":`claude-desktop-roles-title`,children:[(0,Q.jsx)(`h3`,{className:`claude-desktop-section-title`,id:`claude-desktop-roles-title`,children:r(`claudeDesktop.roles.title`)}),ce===`first-party`&&(0,Q.jsx)(`p`,{className:`claude-desktop-roles-scope`,children:r(`claudeDesktop.roles.gatewayScope`)}),(0,Q.jsxs)(`div`,{className:`setting-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-label`,children:[(0,Q.jsx)(`span`,{className:`title`,children:r(`claudeDesktop.roles.default`)}),(0,Q.jsx)(`span`,{className:`desc`,children:r(`claudeDesktop.roles.defaultDesc`)})]}),(0,Q.jsx)(`div`,{className:`setting-controls`,children:(0,Q.jsx)(cn,{value:Te,options:Oe(Te,Ee,!1),onChange:e=>{e&&ye(e,`opus`,!0)},label:r(`claudeDesktop.roles.default`),title:ke(Te),disabled:y!==null,style:{minWidth:240},align:`right`,portal:!0})})]}),(0,Q.jsxs)(`div`,{className:`setting-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-label`,children:[(0,Q.jsx)(`span`,{className:`title`,children:r(`claudeDesktop.roles.quick`)}),(0,Q.jsx)(`span`,{className:`desc`,children:r(`claudeDesktop.roles.quickDesc`)})]}),(0,Q.jsx)(`div`,{className:`setting-controls`,children:(0,Q.jsx)(cn,{value:Ee,options:Oe(Ee,Te,je),onChange:e=>{e&&ye(e,`haiku`,!0)},label:r(`claudeDesktop.roles.quick`),title:ke(Ee),disabled:y!==null,style:{minWidth:240},align:`right`,portal:!0})})]})]}),(0,Q.jsxs)(`section`,{className:`claude-desktop-list`,"aria-labelledby":`claude-desktop-list-title`,children:[(0,Q.jsxs)(`div`,{className:`claude-desktop-list-head`,children:[(0,Q.jsxs)(`h3`,{className:`claude-desktop-section-title`,id:`claude-desktop-list-title`,children:[r(`claudeDesktop.roles.listTitle`),(0,Q.jsx)(`span`,{className:`count`,children:V.models.length})]}),(0,Q.jsxs)(`div`,{className:`claude-profile-tools`,children:[(0,Q.jsx)(`input`,{ref:I,type:`file`,accept:`application/json,.json`,hidden:!0,onChange:e=>void Ce(e)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>I.current?.click(),children:r(`claudeDesktop.importJson`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:Se,children:r(`claudeDesktop.exportJson`)})]})]}),V.models.length>0&&(0,Q.jsx)(`p`,{className:`claude-desktop-list-hint`,children:r(`claudeDesktop.roles.listHint`)}),V.models.length>0&&(0,Q.jsx)(`ul`,{className:`card claude-desktop-list-rows`,children:Ae.slice(0,M).map(e=>{let t=vM(e.contextWindow,r);return(0,Q.jsxs)(`li`,{className:`claude-desktop-list-row`,children:[(0,Q.jsxs)(`span`,{className:`claude-desktop-list-names`,children:[(0,Q.jsx)(`strong`,{title:e.label,children:e.label}),e.label!==e.route&&(0,Q.jsx)(`code`,{title:e.route,children:e.route})]}),e.route===Te&&(0,Q.jsx)(`span`,{className:`claude-row-default`,children:r(`claudeDesktop.defaultBadge`)}),e.route===Ee&&(0,Q.jsx)(`span`,{className:`claude-row-default claude-row-quick`,children:r(`claudeDesktop.roles.quickBadge`)}),t&&(0,Q.jsx)(`span`,{className:`claude-model-context`,children:t}),e.supports1m===!0&&(0,Q.jsx)(`span`,{className:`claude-1m-chip`,children:r(`claudeDesktop.supports1m`)}),!e.available&&(0,Q.jsx)(`span`,{className:`badge badge-muted`,children:r(`claudeDesktop.unavailable`)})]},e.route)})}),Ae.length>M&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm claude-lane-more`,onClick:()=>N(e=>e+6),children:r(`models.showMore`,{n:Ae.length-M})})]}),(0,Q.jsxs)(`details`,{className:`claude-desktop-advanced`,open:A,onToggle:e=>j(e.currentTarget.open),children:[(0,Q.jsxs)(`summary`,{children:[(0,Q.jsxs)(`span`,{className:`claude-desktop-advanced-title`,children:[(0,Q.jsx)(Ke,{className:`ocx-chevron`,width:14,height:14,"aria-hidden":`true`,style:{transform:A?`rotate(90deg)`:`none`}}),r(`claudeDesktop.advanced.title`)]}),(0,Q.jsx)(`span`,{className:`claude-desktop-advanced-chips`,children:tM.map(e=>{let t=te[e].length,n=H.defaults[e],i=K[e];return(0,Q.jsxs)(`span`,{className:`claude-desktop-advanced-chip`,children:[(0,Q.jsx)(`b`,{children:r(fM[e])}),i?(0,Q.jsx)(`code`,{title:i,children:i}):(0,Q.jsx)(`span`,{children:r(`claudeDesktop.advanced.empty`)}),t>0&&(0,Q.jsx)(`span`,{className:`claude-desktop-advanced-count`,children:t}),t>0&&n===null&&(0,Q.jsx)(`span`,{className:`claude-default-needed`,children:r(`claudeDesktop.chooseDefault`)}),i&&n!==null&&i!==n&&(0,Q.jsx)(`span`,{className:`claude-default-needed`,children:r(`claudeDesktop.temporaryDefault`)})]},e)})})]}),(0,Q.jsx)(`p`,{className:`claude-desktop-advanced-desc`,children:r(`claudeDesktop.advanced.desc`)}),(0,Q.jsx)(`div`,{className:`ocx-group-stack`,"aria-label":r(`claudeDesktop.assignmentsLabel`),children:tM.map(e=>{let t=te[e],n=Wj(t,x[e]??``,C[e]??6),i=T.has(e),a=K[e];return(0,Q.jsxs)(`section`,{className:`ocx-group${i?` collapsed`:``}`,"aria-labelledby":`claude-lane-${e}`,onDragOver:e=>e.preventDefault(),onDrop:t=>we(t,e),children:[(0,Q.jsxs)(`header`,{className:`ocx-group-head${i?``:` open`}`,children:[(0,Q.jsx)(`h3`,{id:`claude-lane-${e}`,className:`ocx-group-heading`,children:(0,Q.jsxs)(`button`,{type:`button`,className:`ocx-group-toggle`,"aria-expanded":!i,"aria-controls":`claude-lane-body-${e}`,onClick:()=>be(e),children:[(0,Q.jsx)(Ke,{className:`ocx-chevron`,width:14,height:14,"aria-hidden":`true`,style:{transform:i?`none`:`rotate(90deg)`}}),(0,Q.jsx)(`span`,{className:`ocx-group-name`,children:r(fM[e])}),(0,Q.jsx)(`span`,{className:`ocx-group-count`,children:r(t.length===1?`claudeDesktop.modelCountOne`:`claudeDesktop.modelCountMany`,{count:t.length})}),a&&(0,Q.jsx)(`code`,{className:`claude-lane-default`,title:a,children:a})]})}),t.length>0&&H.defaults[e]===null&&(0,Q.jsx)(`span`,{className:`claude-default-needed`,children:r(`claudeDesktop.chooseDefault`)}),a&&a!==H.defaults[e]&&(0,Q.jsx)(`span`,{className:`claude-default-needed`,title:a,children:r(`claudeDesktop.temporaryDefault`)})]}),!i&&(0,Q.jsxs)(`div`,{id:`claude-lane-body-${e}`,children:[n.showSearch&&(0,Q.jsx)(`input`,{className:`input claude-lane-search`,type:`search`,placeholder:r(`models.search`),"aria-label":r(`models.search`),value:x[e]??``,onChange:t=>{let n=t.target.value;S(t=>({...t,[e]:n})),w(t=>({...t,[e]:6}))}}),(0,Q.jsxs)(`div`,{className:`claude-lane-models`,children:[t.length===0?(0,Q.jsx)(`div`,{className:`claude-lane-empty`,children:r(`claudeDesktop.laneEmpty`)}):n.noMatch?(0,Q.jsx)(`div`,{className:`claude-lane-empty`,children:r(`claudeDesktop.laneNoMatch`)}):n.shown.map(t=>{let n=H.assignments[t.route],i=vM(t.contextWindow,r),a=G[t.route]??`opus`,o=D[t.route]??Kj(t.route,K[e]);return(0,Q.jsxs)(`article`,{className:`claude-model-card${o?` open`:``}`,draggable:t.available,onDragStart:e=>{e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,t.route)},children:[(0,Q.jsxs)(`button`,{type:`button`,className:`claude-model-summary`,"aria-expanded":o,"aria-controls":`claude-model-body-${t.route}`,onClick:()=>O(e=>({...e,[t.route]:!o})),children:[(0,Q.jsx)(Ke,{className:`ocx-chevron`,width:12,height:12,"aria-hidden":`true`,style:{transform:o?`rotate(90deg)`:`none`}}),(0,Q.jsxs)(`span`,{className:`claude-model-names`,children:[(0,Q.jsx)(`strong`,{title:t.label,children:t.label}),(0,Q.jsx)(`code`,{title:t.route,children:t.route})]}),i&&(0,Q.jsx)(`span`,{className:`claude-model-context`,children:i}),!i&&(0,Q.jsx)(`span`,{className:`claude-model-context claude-model-context-unknown`,children:r(`claudeDesktop.contextUnknown`)}),t.supports1m===!0&&(0,Q.jsx)(`span`,{className:`claude-1m-chip`,children:r(`claudeDesktop.supports1m`)}),t.effortSupported===!1&&(0,Q.jsx)(`span`,{className:`claude-effort-badge off`,children:r(`claudeDesktop.effort.displayOnly`)}),t.effortSupported===!0&&(0,Q.jsx)(`span`,{className:`claude-effort-badge on`,children:r(`claudeDesktop.effort.supported`)}),H.defaults[e]===t.route&&(0,Q.jsx)(`span`,{className:`claude-row-default`,children:r(`claudeDesktop.defaultBadge`)}),(0,Q.jsx)(`span`,{className:`badge ${t.available?`badge-green`:`badge-muted`}`,children:t.available?r(`claudeDesktop.available`):r(`claudeDesktop.unavailable`)})]}),o&&(0,Q.jsxs)(`div`,{className:`claude-model-body`,id:`claude-model-body-${t.route}`,children:[K[e]===t.route&&H.defaults[e]!==t.route&&(0,Q.jsx)(`span`,{className:`claude-effective-default`,children:r(`claudeDesktop.temporaryDefault`)}),(0,Q.jsxs)(`div`,{className:`claude-field`,children:[(0,Q.jsx)(`span`,{children:r(`claudeDesktop.alias`)}),(0,Q.jsx)(`code`,{className:`claude-alias`,title:n.alias,children:n.alias})]}),(0,Q.jsxs)(`label`,{className:`claude-default-radio`,children:[(0,Q.jsx)(`input`,{type:`radio`,name:`default-${e}`,checked:H.defaults[e]===t.route,disabled:!t.available,onChange:()=>u(n=>n&&{...n,defaults:{...n.defaults,[e]:t.route}})}),r(`claudeDesktop.useAsDefault`,{family:r(fM[e])})]}),(0,Q.jsxs)(`div`,{className:`claude-move-row`,children:[(0,Q.jsx)(`label`,{htmlFor:`move-${t.route}`,children:r(`claudeDesktop.moveTo`)}),(0,Q.jsx)(`select`,{id:`move-${t.route}`,className:`input`,value:a,disabled:!t.available,onChange:e=>m(n=>({...n,[t.route]:e.target.value})),children:tM.map(e=>(0,Q.jsx)(`option`,{value:e,children:r(fM[e])},e))}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:!t.available||a===e,onClick:()=>ye(t.route,a),children:r(`claudeDesktop.move`)})]})]})]},t.route)}),n.hidden>0&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm claude-lane-more`,onClick:()=>w(t=>({...t,[e]:(t[e]??6)+6})),children:r(`models.showMore`,{n:n.hidden})})]})]})]},e)})})]})]})}function CM(e,t,n,r){let i=e.filter(e=>r===`native`===e.native).map(e=>({...e,alias:t.get(e.id)??null,enabled:!n.has(e.id)})).toSorted((e,t)=>Number(!e.enabled)-Number(!t.enabled));return{rows:i,total:i.length,enabled:i.filter(e=>e.enabled).length}}var wM=Jj(`ocx.grok.collapsedGroups.v2`),TM=[{id:`native`,tkey:`grok.groupNative`},{id:`routed`,tkey:`grok.groupRouted`}],EM=new Set(TM.map(e=>e.id));function DM(e,t){return e?e>=1048576?t(`claudeDesktop.contextM`,{n:Math.round(e/1048576)}):e>=1e6?t(`claudeDesktop.contextM`,{n:e/1e6}):t(`claudeDesktop.contextK`,{n:Math.round(e/1e3)}):`—`}function OM({apiBase:e,active:t=!0}){let n=O(),r=`ocx.grok.status.v1:${e}`,i=Ga(r),a=i?.data??null,[o,s]=(0,Z.useState)(null),[c,l]=(0,Z.useState)(()=>wM.read()??new Set(EM)),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(null),[m,h]=(0,Z.useState)(``),g=(0,Z.useCallback)(async t=>{let i=await hn(await fetch(`${e}/api/grok`,{signal:t}),n(`grok.loadFail`));if(!i)throw Error(n(`grok.loadFail`));let a={...i,candidates:i.candidates??[],excluded:i.excluded??[]};return Ka(r,a),a},[e,r,n]),_=`grok-status:${e}`,v=Ya(_,[e],g,{isEmpty:()=>!1,initialData:a??void 0,initialDataCachedAt:i?.cachedAt??null,staleAfterMs:6e4,enabled:t}),{state:y}=v,b=v.refresh,x=y.data??a,S=(0,Z.useMemo)(()=>new Set(x?.excluded??[]),[x]),C=o??S,w=(0,Z.useMemo)(()=>o!==null&&(o.size!==S.size||[...o].some(e=>!S.has(e))),[o,S]),T=(0,Z.useMemo)(()=>new Map((x?.models??[]).map(e=>[e.id,e.alias])),[x]),E=e=>{let t=Yj(c,e);wM.write(t),l(t)},D=e=>{let t=e?new Set(TM.map(e=>e.id)):new Set;wM.write(t),l(t)},k=(e,t)=>{s(n=>{let r=new Set(n??S);return t?r.delete(e):r.add(e),r})},A=async t=>{if(!u){d(`save`),p(null);try{await hn(await fetch(`${e}/api/grok/selection`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({excluded:[...C]})}),n(`grok.saveFailed`));let i=[...C];if(x&&Ut(_,{...x,excluded:i}),s(null),t){d(`apply`);let t=await fetch(`${e}/api/grok/apply`,{method:`POST`});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.message??e.error??n(`grok.applyFailed`))}let r=await t.json().catch(()=>({}));r.skippedReason?(p({tone:`err`,text:r.message??n(`grok.applySkipped`)}),h(r.message??n(`grok.applySkipped`))):(p({tone:`ok`,text:n(`grok.savedApplied`)}),h(n(`grok.savedApplied`))),await b()}else p({tone:`ok`,text:n(`grok.saved`)}),h(n(`grok.saved`)),x&&Ka(r,{...x,excluded:i})}catch(e){let t=e instanceof Error?e.message:n(`grok.saveFailed`);p({tone:`err`,text:t}),h(t)}finally{d(null)}}};if(y.showSkeleton&&!x)return(0,Q.jsx)(`section`,{className:`grok-page`,children:(0,Q.jsx)(Ry,{label:n(`grok.loading`),rows:4})});if(y.kind===`failed-cold`){let e=y.error instanceof Error?y.error.message:n(`grok.loadFail`);return(0,Q.jsxs)(`section`,{className:`grok-page`,children:[(0,Q.jsx)(`div`,{className:`alert alert-err`,role:`alert`,children:e}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>b(),children:n(`common.retry`)})]})}return(0,Q.jsxs)(`section`,{className:`grok-page`,"aria-busy":y.refreshing||void 0,children:[(0,Q.jsx)(`h2`,{className:`page-title`,children:n(`grok.title`)}),(0,Q.jsx)(`p`,{className:`page-sub`,children:n(`grok.subtitle`)}),(0,Q.jsx)(`div`,{className:`sr-only`,"aria-live":`polite`,"aria-atomic":`true`,children:m}),f&&(0,Q.jsx)($,{tone:f.tone,children:f.text}),y.showError&&(0,Q.jsx)($,{tone:`err`,children:n(`grok.loadFail`)}),x&&x.candidates.length>0&&(0,Q.jsxs)(`div`,{className:`claude-profile-bar`,children:[(0,Q.jsx)(`span`,{className:`claude-dirty${w?` active`:``}`,children:n(w?`grok.unsaved`:`grok.upToDate`)}),(0,Q.jsxs)(`div`,{className:`claude-save-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:!w||u!==null,onClick:()=>void A(!1),children:n(u===`save`?`grok.saving`:`common.save`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:!w||u!==null,onClick:()=>void A(!0),children:n(u===`apply`?`grok.applying`:u===`save`?`grok.saving`:`grok.saveApply`)})]})]}),x?.present?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`grok-endpoint`,children:[(0,Q.jsx)(`span`,{children:n(`grok.endpoint`)}),(0,Q.jsx)(`code`,{children:x.baseUrl??`—`})]}),(0,Q.jsx)(`p`,{className:`page-sub`,children:(0,Q.jsx)(`code`,{children:x.configPath})})]}):(0,Q.jsxs)(ln,{title:n(`grok.notConfiguredTitle`),children:[n(`grok.notConfiguredHint`),(0,Q.jsx)(`br`,{}),(0,Q.jsx)(`code`,{children:x?.configPath})]}),x&&x.candidates.length>0&&(0,Q.jsxs)(`div`,{className:`ocx-group-stack`,children:[(0,Q.jsxs)(`div`,{className:`row`,style:{gap:6,margin:`2px 0 10px`},children:[(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:()=>D(!0),disabled:u!==null,children:[(0,Q.jsx)(Ke,{width:12,height:12,"aria-hidden":`true`}),` `,n(`models.collapseAll`)]}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:()=>D(!1),disabled:u!==null,children:[(0,Q.jsx)(Ke,{width:12,height:12,"aria-hidden":`true`,style:{transform:`rotate(90deg)`}}),` `,n(`models.expandAll`)]})]}),TM.map(e=>{let t=CM(x.candidates,T,C,e.id);if(t.total===0)return null;let r=c.has(e.id);return(0,Q.jsxs)(`section`,{className:`ocx-group${r?` collapsed`:``}`,"aria-labelledby":`grok-group-${e.id}`,children:[(0,Q.jsx)(`header`,{className:`ocx-group-head${r?``:` open`}`,children:(0,Q.jsx)(`h3`,{id:`grok-group-${e.id}`,className:`ocx-group-heading`,children:(0,Q.jsxs)(`button`,{type:`button`,className:`ocx-group-toggle`,"aria-expanded":!r,"aria-controls":`grok-group-body-${e.id}`,onClick:()=>E(e.id),children:[(0,Q.jsx)(Ke,{className:`ocx-chevron`,width:14,height:14,"aria-hidden":`true`,style:{transform:r?`none`:`rotate(90deg)`}}),(0,Q.jsx)(`span`,{className:`ocx-group-name`,children:n(e.tkey)}),(0,Q.jsx)(`span`,{className:`ocx-group-count`,children:n(`grok.enabledCount`,{on:t.enabled,total:t.total})})]})})}),!r&&(0,Q.jsx)(`div`,{id:`grok-group-body-${e.id}`,className:`grok-model-list`,children:t.rows.map(e=>(0,Q.jsxs)(`div`,{className:`grok-model-row`,children:[(0,Q.jsx)(on,{on:e.enabled,onClick:()=>k(e.id,!e.enabled),disabled:u!==null,label:n(`grok.toggleModel`,{id:e.id})}),(0,Q.jsxs)(`span`,{className:`grok-model-names`,children:[(0,Q.jsx)(`strong`,{title:e.id,children:e.id}),(0,Q.jsx)(`code`,{title:e.alias??void 0,children:e.alias??`—`})]}),(0,Q.jsx)(`span`,{className:`claude-model-context`,children:DM(e.contextWindow,n)})]},e.id))})]},e.id)})]})]})}async function kM(e,t){try{let n=await fetch(`${e}/api/native-integrations/cursor`,{signal:t});if(!n.ok)return null;let r=await gn(n);return!r||typeof r!=`object`||!r.gateway||!r.privateInference?null:r}catch{return null}}async function AM(e,t){try{let n=await fetch(`${e}/api/native-integrations/cursor/local-installer`,{signal:t});if(!n.ok)return null;let r=await gn(n);return!r||typeof r!=`object`||typeof r.available!=`boolean`?null:r}catch{return null}}function jM({value:e,label:t}){let n=O(),[r,i]=(0,Z.useState)(!1),a=(0,Z.useRef)(null);(0,Z.useEffect)(()=>()=>{a.current!==null&&window.clearTimeout(a.current)},[]);let o=async()=>{try{await navigator.clipboard.writeText(e),i(!0),a.current!==null&&window.clearTimeout(a.current),a.current=window.setTimeout(()=>i(!1),1500)}catch{i(!1)}};return(0,Q.jsxs)(`div`,{className:`cursor-gateway-row`,children:[(0,Q.jsx)(`span`,{className:`cursor-gateway-label`,children:t}),(0,Q.jsx)(`code`,{className:`cursor-gateway-value`,children:e}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void o(),"aria-label":`${n(`integrations.cursor.copy`)} ${t}`,children:n(r?`integrations.cursor.copied`:`integrations.cursor.copy`)})]})}function MM({labelKey:e,installed:t,path:n,version:r}){let i=O();return(0,Q.jsxs)(`div`,{className:`cursor-detect-row`,"data-installed":t?`true`:`false`,children:[(0,Q.jsx)(`span`,{className:`cursor-detect-name`,children:i(e)}),(0,Q.jsx)(`span`,{className:`badge ${t?`badge-green`:`badge-muted`}`,children:i(t?`integrations.cursor.detected`:`integrations.cursor.notFound`)}),t&&n&&(0,Q.jsxs)(`span`,{className:`cursor-detect-path muted`,children:[r?`${r} · `:``,n]})]})}function NM({apiBase:e}){let t=O(),[n,r]=(0,Z.useState)(`idle`),[i,a]=(0,Z.useState)(null),o=(0,Z.useRef)(null);(0,Z.useEffect)(()=>()=>o.current?.abort(),[]);let s=async()=>{o.current?.abort();let t=new AbortController;o.current=t,r(`checking`);let n=await AM(e,t.signal);t.signal.aborted||(a(n),r(`done`))};return n===`done`&&i?.available&&i.url!==null?(0,Q.jsxs)(`span`,{"data-cursor-installer-hint":!0,children:[t(`integrations.cursor.installerIntro`,{version:i.version??t(`integrations.cursor.unknownVersion`)}),` `,(0,Q.jsx)(`a`,{href:i.url,target:`_blank`,rel:`noreferrer`,"data-cursor-installer-url":!0,children:t(`integrations.cursor.installerOpen`)}),`.`]}):(0,Q.jsxs)(Q.Fragment,{children:[n===`done`&&(0,Q.jsxs)(`span`,{"data-cursor-installer-unavailable":!0,children:[t(`integrations.cursor.installerUnavailable`),` `]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void s(),disabled:n===`checking`,"data-cursor-installer-check":!0,children:t(n===`checking`?`integrations.cursor.installerChecking`:`integrations.cursor.installerCheck`)})]})}function PM({apiBase:e,active:n}){let{t:r,locale:i}=t(),[a,o]=(0,Z.useState)(()=>Date.now()),s=(0,Z.useCallback)(async t=>{let n=await kM(e,t);if(!n)throw Error(`cursor status unavailable`);return o(Date.now()),n},[e]),c=Ya(`integration-cursor-page:${e}`,[e],s,{isEmpty:()=>!1,enabled:n,pollMs:15e3,pauseWhenHidden:!0}),l=c.state.data??null,u=Ko(r);return(0,Q.jsxs)(`section`,{className:`integration-native-page cursor-page`,"aria-labelledby":`cursor-integration-title`,children:[(0,Q.jsx)(`h3`,{id:`cursor-integration-title`,children:r(`integrations.cursor.title`)}),(0,Q.jsx)(`p`,{children:r(`integrations.cursor.intro`)}),c.state.showError&&(0,Q.jsx)($,{tone:`err`,children:r(`integrations.cursor.unavailable`)}),!l&&!c.state.showError&&(0,Q.jsx)(Ry,{label:r(`integrations.cursor.loading`),rows:4}),l&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`cursor-card`,children:[(0,Q.jsx)(`h4`,{children:r(`integrations.cursor.detection`)}),(0,Q.jsx)(MM,{labelKey:`integrations.cursor.privateInference`,installed:l.privateInference.installed,path:l.privateInference.path,version:l.privateInference.version}),(0,Q.jsx)(MM,{labelKey:`integrations.cursor.regular`,installed:l.regularCursor.installed,path:l.regularCursor.path,version:null}),!l.privateInference.installed&&(0,Q.jsxs)($,{tone:`warn`,children:[r(l.regularCursor.installed?`integrations.cursor.regularOnly`:`integrations.cursor.nothingFound`),` `,(0,Q.jsx)(`a`,{href:l.guideUrl,target:`_blank`,rel:`noreferrer`,"data-cursor-guide":`notice`,children:r(`integrations.cursor.guide`)}),l.regularCursor.installed&&(0,Q.jsxs)(Q.Fragment,{children:[` `,(0,Q.jsx)(`span`,{"data-cursor-installer":!0,children:(0,Q.jsx)(NM,{apiBase:e})})]})]})]}),(0,Q.jsxs)(`div`,{className:`cursor-card`,children:[(0,Q.jsx)(`h4`,{children:r(`integrations.cursor.gateway`)}),(0,Q.jsx)(`p`,{className:`muted`,children:r(`integrations.cursor.gatewayHint`)}),(0,Q.jsx)(jM,{label:r(`integrations.cursor.baseUrl`),value:l.gateway.baseUrl}),l.gateway.apiKeyMode===`placeholder`?(0,Q.jsx)(jM,{label:r(`integrations.cursor.apiKey`),value:l.gateway.placeholder}):(0,Q.jsxs)(`div`,{className:`cursor-gateway-row`,children:[(0,Q.jsx)(`span`,{className:`cursor-gateway-label`,children:r(`integrations.cursor.apiKey`)}),(0,Q.jsx)(`span`,{className:`cursor-gateway-value`,children:r(`integrations.cursor.apiKeyCredential`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>qt(`integrations/keys`),children:r(`integrations.tab.keys`)})]})]}),(0,Q.jsxs)(`div`,{className:`cursor-card`,"data-seen":l.lastSeen?`true`:`false`,children:[(0,Q.jsx)(`h4`,{children:r(`integrations.cursor.connection`)}),l.lastSeen?(0,Q.jsx)(`p`,{children:(0,Q.jsx)(`span`,{className:`badge ${a-l.lastSeen.at<864e5?`badge-green`:`badge-muted`}`,children:r(`integrations.cursor.seen`,{time:Go(l.lastSeen.at,u,a),ua:l.lastSeen.userAgent})})}):(0,Q.jsx)(`p`,{className:`muted`,children:r(`integrations.cursor.neverSeen`)})]}),(0,Q.jsxs)(`div`,{className:`cursor-card`,children:[(0,Q.jsx)(`h4`,{children:r(`integrations.cursor.models`)}),(0,Q.jsx)(`p`,{className:`muted`,children:l.effortTable.source===`bundle`?r(`integrations.cursor.ladderFromBundle`,{version:l.effortTable.version??r(`integrations.cursor.unknownVersion`)}):r(`integrations.cursor.ladderFromStatic`)}),(0,Q.jsxs)(`table`,{className:`cursor-model-table`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:r(`integrations.cursor.colModel`)}),(0,Q.jsx)(`th`,{children:r(`integrations.cursor.colReasoning`)}),(0,Q.jsx)(`th`,{children:r(`integrations.cursor.colContext`)})]})}),(0,Q.jsx)(`tbody`,{children:l.models.map(e=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{children:(0,Q.jsx)(`code`,{children:e.id})}),(0,Q.jsx)(`td`,{children:e.reasoning?e.reasoning.join(` · `):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`cursor-no-control`,title:r(`integrations.cursor.noControlTitle`),"aria-label":r(`integrations.cursor.noControlTitle`),children:r(`integrations.cursor.noControl`)}),e.effortRows.length>0?(0,Q.jsx)(`span`,{className:`cursor-effort-rows`,children:r(e.effortRows.length===1?`integrations.cursor.effortRowsOne`:`integrations.cursor.effortRowsMany`,{n:e.effortRows.length})}):(0,Q.jsx)(`span`,{className:`cursor-effort-rows muted`,children:r(`integrations.cursor.effortRowsOff`)})]})}),(0,Q.jsx)(`td`,{children:e.context?`${K(e.context.defaultWindow,i)} · ${K(e.context.longWindow,i)}`:r(`integrations.cursor.singleWindow`)})]},e.id))})]}),l.models.some(e=>e.tableLess)&&(0,Q.jsx)(`p`,{className:`muted`,"data-cursor-tableless-hint":!0,children:r(`integrations.cursor.tableLessHint`)})]}),(0,Q.jsx)(`p`,{children:(0,Q.jsx)(`a`,{href:l.guideUrl,target:`_blank`,rel:`noreferrer`,children:r(`integrations.cursor.guide`)})})]})]})}var FM={"not-installed":`integrations.state.notInstalled`,unknown:`integrations.state.unknown`,absent:`integrations.state.absent`,current:`integrations.state.current`,stale:`integrations.state.stale`,conflict:`integrations.state.conflict`,unsafe:`integrations.state.unsafe`},IM={"not-installed":`badge badge-muted`,unknown:`badge badge-muted`,absent:`badge badge-muted`,current:`badge badge-green`,stale:`badge badge-amber`,conflict:`badge integration-badge--danger`,unsafe:`badge integration-badge--danger-outline`};function LM({state:e,installed:t,id:n}){let r=O(),i=e===`unknown`||e===`not-installed`||t?e:`not-installed`;return(0,Q.jsx)(`span`,{id:n,className:IM[i],"data-integration-state":i,children:r(FM[i])})}var RM={apply:`integrations.plan.operation.apply`,overwrite:`integrations.plan.operation.overwrite`,disable:`integrations.plan.operation.disable`,restore:`integrations.plan.operation.restore`},zM={add:`integrations.plan.change.add`,replace:`integrations.plan.change.replace`,remove:`integrations.plan.change.remove`,snapshot:`integrations.plan.change.snapshot`,ownership:`integrations.plan.change.ownership`,journal:`integrations.plan.change.journal`},BM={none:`integrations.plan.foreign.none`,unowned:`integrations.plan.foreign.unowned`,"foreign-edit":`integrations.plan.foreign.foreignEdit`,drift:`integrations.plan.foreign.drift`},VM={not_installed:`integrations.plan.refusal.notInstalled`,conflict:`integrations.plan.refusal.conflict`,unsafe:`integrations.plan.refusal.unsafe`,non_loopback:`integrations.plan.refusal.nonLoopback`,superseded_store:`integrations.plan.refusal.supersededStore`,drift_requires_confirm:`integrations.plan.refusal.driftRequiresConfirm`,snapshot_expired:`integrations.plan.refusal.snapshotExpired`,write_failed:`integrations.plan.refusal.writeFailed`};function HM({plan:e,missingStorePath:t}){let n=O(),r=e.refusalReason?VM[e.refusalReason]:void 0,i=e.supersededReason===`missing-store`?e.missingStoreDocument:void 0,a=i===void 0?n(r??`integrations.plan.refused`):t===void 0?n(`integrations.plan.refusal.missingStore`,{document:i}):n(`integrations.status.missingStore`,{path:t,document:i});return(0,Q.jsxs)(`div`,{className:`integration-plan-details`,children:[(0,Q.jsx)(`p`,{className:`integration-plan-operation`,children:n(`integrations.plan.operation`,{operation:n(RM[e.operation])})}),e.foreignEdit!==`none`&&(0,Q.jsx)(`p`,{children:n(BM[e.foreignEdit])}),!e.willChange&&e.canApply&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{children:n(e.operation===`disable`?`integrations.plan.noop.disabled`:`integrations.plan.noop.applied`)}),e.profileId!==void 0&&(0,Q.jsx)(`p`,{children:n(`integrations.plan.noop.profilePreference`)})]}),!e.canApply&&(0,Q.jsx)(`p`,{children:a}),e.changes.length>0&&(0,Q.jsx)(`ul`,{className:`integration-plan-changes`,children:e.changes.map(e=>(0,Q.jsxs)(`li`,{children:[(0,Q.jsx)(`span`,{children:n(zM[e.kind])}),` `,(0,Q.jsx)(`code`,{children:e.path})]},`${e.kind}:${e.path}`))})]})}function UM({plan:e,plans:t,missingStorePath:n}){let r=O();return!e&&(!t||t.length===0)?null:(0,Q.jsxs)(`section`,{className:`integration-plan`,"aria-labelledby":`integration-plan-heading`,children:[(0,Q.jsx)(`h4`,{id:`integration-plan-heading`,children:r(`integrations.plan.heading`)}),e&&(0,Q.jsx)(HM,{plan:e,missingStorePath:n}),t?.map(e=>(0,Q.jsxs)(`section`,{className:`integration-plan-group`,children:[(0,Q.jsx)(`h5`,{children:e.label}),(0,Q.jsx)(HM,{plan:e.plan})]},`${e.clientId}:${e.plan.fingerprint}`))]})}function WM({copyKey:e,vars:t}){let n=O()(e,t),r=t?.path;if(!r||!n.includes(r))return(0,Q.jsx)(`p`,{children:n});let[i,...a]=n.split(r);return(0,Q.jsxs)(`p`,{children:[i,(0,Q.jsx)(`code`,{children:r}),a.join(r)]})}function GM(e){return e.changes.some(e=>e.kind===`snapshot`||e.kind===`journal`)}function KM({copy:e,plan:t=null,plans:n,hasUnboundAction:r=!1,planStale:i=!1,planLoading:a=!1,planFailure:o=null,missingStorePath:s,onConfirm:c,onClose:l}){let u=O(),d=(0,Z.useRef)(null),f=(0,Z.useRef)(null),p=(0,Z.useRef)(null),[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(null),[v,y]=(0,Z.useState)(null),b=`integration-consequence-dialog-title`,x=t!==null||a||o!==null||n!==void 0,S=v?.sourceFingerprint===(t?.fingerprint??null)?v.plan:t,C=v?.sourceFingerprint===(t?.fingerprint??null),w=n!==void 0&&!r&&!n.some(e=>e.plan.canApply),T=!x||(S?GM(S):n?.some(e=>GM(e.plan))===!0),E=(0,Z.useCallback)(()=>{m||l()},[l,m]);(0,Z.useEffect)(()=>{let e=d.current,t=document.activeElement;return f.current=t?.tagName===`BUTTON`?t:null,e&&!e.open&&e.showModal(),p.current?.focus(),()=>{e?.open&&e.close(),f.current?.isConnected&&f.current.focus?.()}},[]);let D=(0,Z.useCallback)(e=>{e.preventDefault(),E()},[E]),k=(0,Z.useCallback)(async()=>{if(!m){h(!0),_(null);try{await c(S??void 0)}catch(e){if(e instanceof Kv&&e.stalePlan){y({sourceFingerprint:t?.fingerprint??null,plan:e.stalePlan});return}_(e instanceof Error?e.message:u(`integrations.error.generic`))}finally{h(!1)}}},[S,c,m,t?.fingerprint,u]),A=[(0,Q.jsx)(WM,{copyKey:e.changesKey,vars:e.vars},`changes`),(0,Q.jsx)(WM,{copyKey:e.breakageKey,vars:e.vars},`breakage`)];return T&&A.push((0,Q.jsx)(WM,{copyKey:e.undoKey,vars:e.vars},`undo`)),e.sideEffectKey&&A.push((0,Q.jsx)(WM,{copyKey:e.sideEffectKey,vars:e.vars},`side-effect`)),(0,Q.jsxs)(`dialog`,{ref:d,className:`modal-overlay`,"aria-labelledby":b,"aria-busy":m,onCancel:D,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":u(`common.close`),tabIndex:-1,onClick:E}),(0,Q.jsxs)(`div`,{className:`modal-card integration-consequence-dialog`,role:`document`,children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{id:b,children:u(e.titleKey,e.vars)}),(0,Q.jsx)(`button`,{ref:p,type:`button`,className:`btn btn-ghost btn-sm`,onClick:E,disabled:m,children:u(`common.close`)})]}),(0,Q.jsx)(`div`,{className:`integration-consequence-body`,children:A}),(0,Q.jsxs)(`div`,{role:`status`,"aria-live":`polite`,"aria-atomic":`true`,children:[a&&(0,Q.jsx)(`p`,{children:u(`integrations.preview.loading`)}),m&&(0,Q.jsx)(`p`,{children:u(`integrations.mutation.pending`)}),(C||i)&&(0,Q.jsx)($,{tone:`err`,children:u(`integrations.preview.stale`)}),o&&(0,Q.jsx)($,{tone:`err`,children:o})]}),(0,Q.jsx)(UM,{plan:S,plans:n,missingStorePath:s}),g&&(0,Q.jsx)($,{tone:`err`,children:g}),(0,Q.jsx)(`div`,{className:`modal-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>void k(),disabled:m||a||!!o||x&&!S&&n===void 0||w||S?.canApply===!1,children:u(e.confirmKey)})})]})]})}function qM({apiBase:e,row:t,onClose:n,onRestored:r,profileId:i,onReconcile:a}){let o=O(),s=(0,Z.useRef)(null),c=(0,Z.useRef)(null),l=(0,Z.useRef)(null),u=(0,Z.useRef)(!1),d=(0,Z.useRef)(n),f=(0,Z.useRef)(r),p=(0,Z.useRef)(a),m=(0,Z.useRef)(o),h=(0,Z.useRef)(null),g=(0,Z.useRef)(0),[_,v]=(0,Z.useState)(null),[y,b]=(0,Z.useState)(!0),[x,S]=(0,Z.useState)(!1),[C,w]=(0,Z.useState)(!1),[T,E]=(0,Z.useState)(null),[D,k]=(0,Z.useState)(null),A=t.clientId===`aside`?i??t.profileId:void 0,j=_?.plan??null,M=j?.foreignEdit===`drift`;(0,Z.useEffect)(()=>{d.current=n,f.current=r,p.current=a,m.current=o},[n,a,r,o]);let N=(0,Z.useCallback)(()=>{C||(g.current+=1,h.current?.abort(),h.current=null,d.current())},[C]);(0,Z.useEffect)(()=>{let e=s.current,t=document.activeElement;return c.current=t?.tagName===`BUTTON`?t:null,l.current=t?.closest?.(`section, [role='region'], main`)??null,e&&!e.open&&e.showModal(),()=>{e?.open&&e.close();let t=l.current;if(u.current&&t?.isConnected){t.hasAttribute(`tabindex`)||t.setAttribute(`tabindex`,`-1`),t.focus?.();return}let n=c.current;if(n?.isConnected){n.focus?.();return}t?.isConnected&&(t.hasAttribute(`tabindex`)||t.setAttribute(`tabindex`,`-1`),t.focus?.())}},[]);let P=(0,Z.useCallback)(async()=>{let n=new AbortController,r=g.current+1;g.current=r,h.current?.abort(),h.current=n,b(!0),E(null),k(null),v(null),S(!1);try{let i=!1,a=await iy(e,t.opId,i,n.signal,A);if(a.refusalReason===`drift_requires_confirm`&&(i=!0,a=await iy(e,t.opId,i,n.signal,A)),n.signal.aborted||r!==g.current)return;v({plan:a,confirmDrift:i})}catch(e){if(n.signal.aborted||r!==g.current)return;if(Xv(e)){p.current?.(),d.current();return}E(m.current(`integrations.preview.failed`))}finally{!n.signal.aborted&&r===g.current&&(h.current=null,b(!1))}},[e,t.opId,A]);(0,Z.useEffect)(()=>{let e=window.setTimeout(()=>{P()},0);return()=>{window.clearTimeout(e),g.current+=1,h.current?.abort(),h.current=null}},[P]);let F=(0,Z.useCallback)(e=>{e.preventDefault(),N()},[N]),I=async()=>{if(C||y||!_||!_.plan.canApply)return;let n=_.confirmDrift;w(!0),k(null);try{await oy(e,{opId:t.opId,confirmDrift:n,profileId:A,binding:Zv(_.plan)}),u.current=!0,f.current(),d.current()}catch(r){if(t.clientId===`aside`&&p.current?.(),r instanceof Kv&&r.stalePlan){let i=r.stalePlan,a=n;w(!1);try{if(i.refusalReason===`drift_requires_confirm`){let n=new AbortController,r=g.current+1;g.current=r,h.current?.abort(),h.current=n,b(!0),a=!0;try{i=await iy(e,t.opId,a,n.signal,A)}finally{!n.signal.aborted&&r===g.current&&(h.current=null,b(!1))}if(n.signal.aborted||r!==g.current)return}}catch(e){if(e instanceof Error&&e.name===`AbortError`)return;if(Xv(e)){p.current?.(),d.current();return}E(m.current(`integrations.preview.failed`));return}v({plan:i,confirmDrift:a}),S(!0);return}k(jy(o,r)),w(!1)}};return(0,Q.jsxs)(`dialog`,{ref:s,className:`modal-overlay`,"aria-labelledby":`integration-restore-title`,"aria-busy":C,onCancel:F,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":o(`common.close`),tabIndex:-1,onClick:N}),(0,Q.jsxs)(`div`,{className:`modal-card integration-restore-dialog`,role:`document`,children:[(0,Q.jsx)(`div`,{className:`modal-head`,children:(0,Q.jsx)(`h3`,{id:`integration-restore-title`,children:o(M?`integrations.restore.driftTitle`:`integrations.restore.title`)})}),(0,Q.jsx)(`div`,{className:`modal-desc`,children:o(M?`integrations.restore.driftBody`:`integrations.restore.body`)}),(0,Q.jsxs)(`div`,{role:`status`,"aria-live":`polite`,"aria-atomic":`true`,children:[y&&(0,Q.jsx)(`p`,{children:o(`integrations.preview.loading`)}),C&&(0,Q.jsx)(`p`,{children:o(`integrations.mutation.pending`)}),x&&(0,Q.jsx)($,{tone:`err`,children:o(`integrations.preview.stale`)})]}),(0,Q.jsx)(UM,{plan:j}),T&&(0,Q.jsx)($,{tone:`err`,children:T}),D&&(0,Q.jsx)($,{tone:`err`,children:D}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:N,disabled:C,children:o(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>void I(),disabled:C||y||!j?.canApply||!!T,children:o(C?`integrations.restore.pending`:M?`integrations.restore.confirmDrift`:`integrations.restore.confirm`)})]})]})]})}var JM={opencode:`integrations.tab.opencode`,pi:`integrations.tab.pi`,"gentle-shell":`integrations.tab.gentleShell`,omp:`integrations.tab.omp`,hermes:`integrations.tab.hermes`,openclaw:`integrations.tab.openclaw`,kimi:`integrations.tab.kimi`,gajae:`integrations.tab.gajae`,dsh:`integrations.tab.dsh`,mcode:`integrations.tab.mcode`,zcode:`integrations.tab.zcode`,commandcode:`integrations.tab.commandcode`,prime:`integrations.tab.prime`,aside:`integrations.tab.aside`,raycast:`integrations.tab.raycast`,omo:`integrations.tab.omo`,cline:`integrations.tab.cline`,kilo:`integrations.tab.kilo`,droid:`integrations.tab.droid`,qoder:`integrations.tab.qoder`},YM={apply:`integrations.kind.apply`,disable:`integrations.kind.disable`,refresh:`integrations.kind.refresh`,restore:`integrations.kind.restore`,overwrite:`integrations.kind.overwrite`};function XM(e){return e===`current`||e===`stale`}function ZM(e,t,n){let r={id:`codex`,hash:`integrations/codex`,labelKey:`integrations.tab.codex`,toggle:`codex`,toggleBlocked:t?.disableBlocked??null,togglePath:t?.configPath??null,status:null,detail:null,detailVars:null};if(n===void 0)return e?e.routingInjected===!0?{...r,state:e.status===`error`?`stale`:`current`,installed:!0,applied:!0,detailKey:`integrations.detail.codexRouted`}:{...r,state:`absent`,installed:!0,applied:!1,detail:e.recommendedCommand??null,detailKey:e.recommendedCommand?null:`integrations.detail.codexAbsent`}:{...r,state:`unknown`,installed:!1,applied:!1,detailKey:null};if(!n)return{...r,state:`unknown`,installed:!1,applied:!1,detailKey:null};if(!t)return{...r,toggle:null,state:`unknown`,installed:!1,applied:!1,detailKey:null};let i=t.desiredEnabled;return e?e.routingInjected===!0?{...r,state:e.status===`error`?`stale`:`current`,installed:t.installed,applied:!0,toggleOn:i,detailKey:`integrations.detail.codexRouted`}:{...r,state:`absent`,installed:t.installed,applied:!1,toggleOn:i,detail:e.recommendedCommand??null,detailKey:e.recommendedCommand?null:`integrations.detail.codexAbsent`}:{...r,state:`unknown`,installed:t.installed,applied:!1,toggleOn:i,detailKey:null}}function QM(e,t){let n={hash:`integrations/keys`,labelKey:`integrations.tab.keys`};return e===`checking`?{...n,state:`checking`,detailKey:`integrations.detail.keyChecking`,detailVars:null}:e===`unavailable`||t===null?{...n,state:`unavailable`,detailKey:`integrations.detail.keyUnavailable`,detailVars:null}:{...n,state:t>0?`issued`:`none-issued`,detailKey:t>0?`integrations.detail.keyCount`:`integrations.detail.keyNone`,detailVars:t>0?{count:String(t)}:null}}function $M(e){return e?e.enabled===!0?e.authMode===`subscription`?`claude.authModeSubscription`:e.authMode===`proxy`?`claude.authModeProxy`:e.authMode===`auto`?`claude.authModeAuto`:null:`integrations.detail.claudeOff`:null}function eN(e,t,n){let r={id:`claude`,hash:`claude/code`,labelKey:`integrations.tab.claude`,toggle:`claude`,toggleBlocked:t?.disableBlocked??null,togglePath:t?.configPath??null,status:null,detail:null,detailVars:null},i=$M(e);if(n===void 0){if(!e)return{...r,state:`unknown`,installed:!1,applied:!1,detailKey:i};let t=e.enabled===!0;return{...r,state:t?`current`:`absent`,installed:!0,applied:t,detailKey:i}}return n?t?{...r,state:t.state,installed:t.installed,applied:t.state===`current`,detailKey:i}:{...r,toggle:null,state:`unknown`,installed:!1,applied:!1,detailKey:i}:{...r,state:`unknown`,installed:!1,applied:!1,detailKey:i}}function tN(e,t,n){let r={id:`claudeDesktop`,hash:`claude/desktop`,labelKey:`claudeDesktop.title`,toggle:`claude-desktop`,toggleBlocked:t?.disableBlocked??null,togglePath:t?.configPath??null,status:null,detail:null,detailVars:null};if(!e||!n||!t||typeof e.desiredEnabled!=`boolean`)return{...r,toggle:null,state:`unknown`,installed:!1,applied:!1,detailKey:null};let i=e.desiredEnabled;if(!i)return e.applied===!0||e.driftReason===`desired_off_gateway_selected`?{...r,state:`stale`,installed:e.installed===!0,applied:!0,toggleOn:!1,detailKey:`integrations.detail.desktopDesiredOffCleanupPending`}:{...r,state:`absent`,installed:e.installed===!0,applied:!1,toggleOn:!1,detailKey:`integrations.detail.desktopDesiredOff`};if(e.applied!==!0)return{...r,state:`absent`,installed:e.installed===!0,applied:!1,toggleOn:i,detailKey:`integrations.detail.desktopDesiredOnNotApplied`};let a=e.stale===!0||e.activeProfile===!1;return{...r,state:a?`stale`:`current`,installed:!0,applied:!0,toggleOn:i,detailKey:e.activeProfile===!1?`integrations.detail.desktopNotServed`:a?`integrations.detail.desktopStale`:`integrations.detail.desktopCurrent`}}function nN(e){if(!e)return{detailKey:null,detailVars:null};let t=e.present===!0;return{detailKey:t?`integrations.detail.grokModels`:`integrations.detail.grokAbsent`,detailVars:t?{count:String(e.models?.length??0)}:null}}function rN(e,t,n){let r={id:`grok`,hash:`integrations/grok`,labelKey:`integrations.tab.grok`,toggle:`grok`,toggleBlocked:t?.disableBlocked??null,togglePath:t?.configPath??null,status:null,detail:null},i=nN(e);if(n===void 0){if(!e)return{...r,state:`unknown`,installed:!1,applied:!1,...i};let t=e.present===!0;return{...r,state:t?`current`:`absent`,installed:t,applied:t,...i}}return n?t?{...r,state:t.state,installed:t.installed,applied:t.state===`current`,...i}:{...r,toggle:null,state:`unknown`,installed:!1,applied:!1,...i}:{...r,state:`unknown`,installed:!1,applied:!1,...i}}function iN(e,t=Date.now()){let n={id:`cursor`,hash:`integrations/cursor`,labelKey:`integrations.tab.cursor`,toggle:null,toggleBlocked:null,togglePath:null,status:null,detail:null,detailVars:null};if(!e)return{...n,state:`unknown`,installed:!1,applied:!1,detailKey:null};if(!e.privateInference.installed)return{...n,state:`not-installed`,installed:!1,applied:!1,detailKey:`integrations.detail.cursorAbsent`};let r=e.lastSeen!==null&&t-e.lastSeen.at<864e5;return{...n,state:r?`current`:`absent`,installed:!0,applied:r,detailKey:r?`integrations.detail.cursorSeen`:`integrations.detail.cursorNeverSeen`}}function aN(e){return{id:e.clientId,hash:`integrations/${e.clientId}`,labelKey:JM[e.clientId],state:e.installed?e.state:`not-installed`,installed:e.installed,applied:e.installed&&(XM(e.state)||Ev(e)),detail:e.configPath,detailKey:null,detailVars:null,toggle:e.clientId,toggleBlocked:null,togglePath:e.configPath,status:e}}function oN(e){let t=e.native?.find(e=>e.clientId===`codex`),n=e.native?.find(e=>e.clientId===`claude`),r=e.native?.find(e=>e.clientId===`grok`),i=new Map(e.clients.map(e=>[e.clientId,e])),a=[ZM(e.codex,t,e.nativeSettled),eN(e.claude,n,e.nativeSettled),tN(e.claudeDesktop,e.native?.find(e=>e.clientId===`claude-desktop`),e.nativeSettled),rN(e.grok,r,e.nativeSettled),iN(e.cursor)];for(let t of Tv){let n=i.get(t);if(n){a.push(aN(n));continue}e.clientsSettled||a.push({id:t,hash:`integrations/${t}`,labelKey:JM[t],state:`unknown`,installed:!1,applied:!1,detail:null,detailKey:null,detailVars:null,toggle:null,toggleBlocked:null,togglePath:null,status:null})}return{keysRow:QM(e.keyPhase,e.keyCount),rows:a}}function sN(e){return{detected:e.filter(e=>e.installed).length,applied:e.filter(e=>e.applied).length,stale:e.filter(e=>e.state===`stale`).length,unknown:e.filter(e=>e.state===`unknown`).length}}var cN=6;function lN({row:e,showClient:t,onRestore:n,onDelete:r}){let i=O();return(0,Q.jsxs)(`li`,{className:`integration-history-row`,children:[(0,Q.jsx)(`span`,{className:`integration-history-kind`,children:i(YM[e.kind])}),t&&(0,Q.jsx)(`span`,{className:`integration-history-client`,children:e.clientId}),(0,Q.jsx)(`span`,{className:`integration-history-at`,children:new Date(e.at).toLocaleString()}),e.snapshot===`expired`?(0,Q.jsx)(`span`,{className:`badge badge-muted`,children:i(`integrations.action.snapshotExpired`)}):(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>n(e),children:e.undoable?i(`integrations.action.undo`):i(`integrations.action.restorePoint`)}),e.deletable&&r&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>r(e),"aria-label":i(`integrations.rollback.deleteAria`,{at:new Date(e.at).toLocaleString()}),children:i(`integrations.rollback.delete`)})]})}function uN({rows:e,showClient:t,onRestore:n,onDelete:r}){let i=O(),[a,o]=(0,Z.useState)(cN),[s,...c]=e;if(!s)return null;let l=c.slice(0,a),u=c.length-l.length;return(0,Q.jsxs)(`div`,{className:`integration-history`,children:[(0,Q.jsx)(`ul`,{className:`integration-history-list`,children:(0,Q.jsx)(lN,{row:s,showClient:t,onRestore:n,onDelete:r})}),c.length>0&&(0,Q.jsxs)(`details`,{className:`integration-history-older`,children:[(0,Q.jsx)(`summary`,{children:i(`integrations.rollback.older`)}),(0,Q.jsx)(`ul`,{className:`integration-history-list`,children:l.map(e=>(0,Q.jsx)(lN,{row:e,showClient:t,onRestore:n,onDelete:r},e.opId))}),u>0&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm integration-history-more`,onClick:()=>o(e=>e+cN),children:i(`integrations.rollback.showMore`,{n:String(Math.min(u,cN))})})]})]})}var dN={titleKey:`integrations.dialog.grok.title`,changesKey:`integrations.dialog.grok.changes`,breakageKey:`integrations.dialog.grok.breakage`,undoKey:`integrations.dialog.grok.undo`,confirmKey:`integrations.dialog.grok.confirm`},fN={titleKey:`integrations.dialog.codex.title`,changesKey:`integrations.dialog.codex.changes`,breakageKey:`integrations.dialog.codex.breakage`,undoKey:`integrations.dialog.codex.undo`,sideEffectKey:`integrations.dialog.codex.sideEffect`,confirmKey:`integrations.dialog.codex.confirm`},pN={titleKey:`integrations.dialog.desktop.title`,changesKey:`integrations.dialog.desktop.changes`,breakageKey:`integrations.dialog.desktop.breakage`,undoKey:`integrations.dialog.desktop.undo`,sideEffectKey:`integrations.dialog.desktop.restart`,confirmKey:`integrations.dialog.desktop.confirm`},mN={titleKey:`integrations.dialog.apply.title`,changesKey:`integrations.dialog.apply.changes`,breakageKey:`integrations.dialog.apply.breakage`,undoKey:`integrations.dialog.apply.undo`,confirmKey:`integrations.dialog.apply.confirm`},hN={titleKey:`integrations.dialog.disable.title`,changesKey:`integrations.dialog.disable.changes`,breakageKey:`integrations.dialog.disable.breakage`,undoKey:`integrations.dialog.disable.undo`,confirmKey:`integrations.dialog.disable.confirm`},gN={titleKey:`integrations.bulk.title`,changesKey:`integrations.bulk.body`,breakageKey:`integrations.bulk.breakage`,undoKey:`integrations.bulk.undo`,confirmKey:`integrations.bulk.confirm`};function _N(e){return e.flatMap(e=>e.plan?[{clientId:e.clientId,label:e.label,plan:e.plan}]:[])}function vN(e){return e.state===`current`||e.state===`stale`||Ev(e)}function yN({row:e,pending:t,result:n,onOpen:r,onToggle:i,onOverwrite:a}){let o=O(),s=e.detail??(e.detailKey?o(e.detailKey,e.detailVars??void 0):null),c=e.toggleBlocked!==null&&(e.applied||e.toggleBlocked.reason===`orphaned_marker`),l=c&&e.toggleBlocked&&(e.toggle===`claude`||e.toggle===`grok`||e.toggle===`codex`)?jy(o,new yy(409,{error:`native integration change refused`,code:`native_integration_refused`,clientId:e.toggle,reason:e.toggleBlocked.reason,message:e.toggleBlocked.message}),void 0,e.togglePath??void 0):null,u=e.toggleOn??e.applied,d=e.status!==null&&Ev(e.status);return(0,Q.jsxs)(`li`,{className:`integration-card`,"data-client":e.id,children:[(0,Q.jsxs)(`div`,{className:`integration-card-head`,children:[(0,Q.jsx)(fk,{src:dk(e.id),label:o(e.labelKey),size:20}),(0,Q.jsx)(`h4`,{children:(0,Q.jsx)(`button`,{type:`button`,className:`integration-card-link`,onClick:r,children:o(e.labelKey)})}),(0,Q.jsx)(LM,{state:e.state,installed:e.installed})]}),s&&(0,Q.jsx)(`p`,{className:e.detail?`integration-path`:`integration-meta`,children:s}),e.status?.reason===`candidate-conflict`&&e.status.conflictPaths?.map(e=>(0,Q.jsx)($,{tone:`err`,children:o(`integrations.status.candidateConflict`,{path:e})},e)),n?.tone===`err`&&(0,Q.jsx)($,{tone:`err`,children:n.text}),n?.tone===`ok`&&(0,Q.jsx)($,{tone:`ok`,children:n.text}),(0,Q.jsxs)(`div`,{className:`integration-card-actions`,children:[e.toggle&&i&&(0,Q.jsxs)(`div`,{className:`integration-toggle-control`,children:[(0,Q.jsx)(on,{on:u,onClick:i,disabled:e.state===`unknown`||!e.installed||(e.state===`conflict`||e.state===`unsafe`)&&!d||c||t,label:o(u?`integrations.action.disable`:`integrations.action.apply`)}),l&&(0,Q.jsx)(`p`,{className:`integration-toggle-blocked`,children:l})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:r,tabIndex:-1,children:o(`integrations.action.settings`)}),a&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-danger`,onClick:a,disabled:t,children:o(`integrations.action.overwrite`)})]})]})}function bN({apiBase:e,active:t=!0}){let n=O(),[r,i]=(0,Z.useState)(!1),[a,o]=(0,Z.useState)(null),[s,c]=(0,Z.useState)(null),[l,u]=(0,Z.useState)(null),[d,f]=(0,Z.useState)({}),[p,m]=(0,Z.useState)(null),[h,g]=(0,Z.useState)(null),[_,v]=(0,Z.useState)(null),y=(0,Z.useRef)(null),b=(0,Z.useRef)(0),x=(0,Z.useRef)(null),S=(0,Z.useRef)(0),C=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{if(p!==null)return;let e=C.current;e&&(C.current=null,e.isConnected&&e.focus())},[p]),(0,Z.useEffect)(()=>()=>{b.current+=1,S.current+=1,y.current?.abort(),x.current?.abort()},[]);let w=(0,Z.useCallback)(async t=>(await ey(e,t)).clients,[e]),T=(0,Z.useCallback)(async t=>(await ny(e,void 0,t)).operations,[e]),E=(0,Z.useCallback)(t=>ly(e,t),[e]),D=(0,Z.useCallback)(t=>uy(e,t),[e]),k=(0,Z.useCallback)(t=>dy(e,t),[e]),A=(0,Z.useCallback)(t=>fy(e,t),[e]),j=(0,Z.useCallback)(t=>py(e,t),[e]),M=(0,Z.useCallback)(t=>kM(e,t),[e]),N=(0,Z.useCallback)(async t=>(await Cy(e,t))?.clients??null,[e]),P=Ya(`integration-states:${e}`,[e],w,{isEmpty:e=>e.length===0,enabled:t,sessionCacheKey:`ocx.integrations.states.v1:${e}`}),F=Ya(`integration-journal-all:${e}`,[e],T,{isEmpty:e=>e.length===0,enabled:t,sessionCacheKey:`ocx.integrations.journal.v1:${e}`}),I=Ya(`integration-codex:${e}`,[e],E,{isEmpty:e=>e===null,enabled:t,sessionCacheKey:`ocx.integrations.codex.v1:${e}`}),L=Ya(`integration-keys:${e}`,[e],D,{isEmpty:()=>!1,enabled:t,sessionCacheKey:`ocx.integrations.keys.v1:${e}`}),R=Ya(`integration-claude:${e}`,[e],k,{isEmpty:e=>e===null,enabled:t,sessionCacheKey:`ocx.integrations.claude.v1:${e}`}),z=Ya(`integration-claude-desktop:${e}`,[e],A,{isEmpty:e=>e===null,enabled:t,sessionCacheKey:`ocx.integrations.claude-desktop.v1:${e}`}),B=Ya(`integration-grok:${e}`,[e],j,{isEmpty:e=>e===null,enabled:t,sessionCacheKey:`ocx.integrations.grok.v1:${e}`}),V=Ya(`integration-cursor:${e}`,[e],M,{isEmpty:e=>e===null,enabled:t,sessionCacheKey:`ocx.integrations.cursor.v1:${e}`}),H=Ya(`integration-native:${e}`,[e],N,{isEmpty:e=>e===null,enabled:t,sessionCacheKey:`ocx.integrations.native.v1:${e}`}),U=P.state.data??[],W=F.state.data??[],G=U.filter(vN),ee=U.filter(e=>e.installed),te=P.state.data!==void 0,K=H.state.data??null,q=K!==null,ne=L.state.kind===`cold`||L.state.kind===`retrying-cold`?`checking`:L.state.kind===`failed-cold`||L.state.kind===`failed-with-stale`?`unavailable`:`settled`,{keysRow:J,rows:Y}=oN({clients:U,clientsSettled:te,codex:I.state.data??null,keyCount:L.state.data??null,keyPhase:ne,claude:R.state.data??null,claudeDesktop:z.state.data??null,grok:B.state.data??null,cursor:V.state.data??null,native:K,nativeSettled:q}),re=sN(Y),ie=()=>{P.refresh(),F.refresh(),I.refresh(),L.refresh(),R.refresh(),z.refresh(),B.refresh(),H.refresh()},X=async()=>{if(r||_||G.length===0)return;let t=new AbortController,i=S.current+1;S.current=i,x.current?.abort(),x.current=t,v({actions:[],loading:!0,failure:null,stale:!1,failures:[]});try{let r=await Promise.all(G.map(async r=>{let i=Y.find(e=>e.status?.clientId===r.clientId);if(r.clientId===`aside`)return{clientId:r.clientId,label:i?n(i.labelKey):r.clientId,plan:null};let a=await ry(e,r.clientId,`disable`,t.signal);return{clientId:r.clientId,label:i?n(i.labelKey):r.clientId,plan:a}}));if(t.signal.aborted||i!==S.current)return;x.current=null,v({actions:r,loading:!1,failure:null,stale:!1,failures:[]})}catch(e){if(t.signal.aborted||i!==S.current)return;if(x.current=null,Xv(e)){v(null),ie();return}v({actions:[],loading:!1,failure:n(`integrations.preview.failed`),stale:!1,failures:[]})}},ae=()=>{S.current+=1,x.current?.abort(),x.current=null,v(null)},oe=async t=>{if(r||t.actions.length===0)return;i(!0),o(null);let a=[...t.failures],s=[];for(let r of t.actions){if(r.plan&&!r.plan.canApply){a.push(`${r.clientId}: ${n(`integrations.plan.refused`)}`);continue}try{await ay(e,r.clientId,{enabled:!1,...r.plan?{binding:Zv(r.plan)}:{}})}catch(e){if(r.plan&&e instanceof Kv&&e.stalePlan){s.push({...r,plan:e.stalePlan});continue}a.push(`${r.clientId}: ${jy(n,e)}`)}}if(s.length>0){ie(),i(!1),v({actions:s,loading:!1,failure:null,stale:!0,failures:a}),o(a.length===0?null:{tone:`err`,text:n(`integrations.bulk.partial`,{clients:a.join(`; `)})});return}let c=!1;try{c=(await ey(e)).clients.some(vN)}catch{a.push(n(`integrations.error.stale`))}c&&a.length===0&&a.push(n(`integrations.error.stale`)),ie(),i(!1),v(null),o(a.length===0?{tone:`ok`,text:n(`integrations.bulk.success`)}:{tone:`err`,text:n(`integrations.bulk.partial`,{clients:a.join(`; `)})})},se=W[0]?.at,[ce,le]=(0,Z.useState)(null),ue=()=>{H.refresh(),I.refresh(),R.refresh(),B.refresh()},de=(e,t)=>{f(n=>{let r={...n};return t?r[e]=t:delete r[e],r})},fe=async(t,r,i)=>{if(!ce&&t.toggle){le(t.id),de(t.id,null);try{if(t.status){if(!i&&t.status.clientId!==`aside`)return;await ay(e,t.status.clientId,{enabled:r,...i?{overwriteConflict:i.operation===`overwrite`,binding:Zv(i)}:{}}),ie()}else if(t.toggle===`claude`||t.toggle===`grok`||t.toggle===`codex`||t.toggle===`claude-desktop`){let i=await wy(e,t.toggle,r);i.reason===`non_loopback_removed`?de(t.id,{tone:`ok`,text:n(i.changed?`integrations.native.msg.nonLoopbackRemoved`:`integrations.native.msg.nonLoopbackRemovedNoop`)}):i.reason===`non_loopback_superseded`&&de(t.id,{tone:`ok`,text:n(`integrations.native.msg.nonLoopbackSuperseded`)}),ue()}}catch(e){if(t.status&&e instanceof Kv&&e.stalePlan)throw e;if(de(t.id,{tone:`err`,text:jy(n,e,void 0,t.togglePath??void 0)}),(t.toggle===`claude`||t.toggle===`grok`||t.toggle===`codex`||t.toggle===`claude-desktop`)&&ue(),t.status)throw Error(jy(n,e,void 0,t.togglePath??void 0),{cause:e})}finally{le(null)}}},pe=async(t,r)=>{if(!t.status||h)return;let i=new AbortController,a=b.current+1;b.current=a,y.current?.abort(),y.current=i,g({row:t,operation:r,plan:null,loading:!0,failure:null});try{let n=await ry(e,t.status.clientId,r,i.signal);if(i.signal.aborted||a!==b.current)return;y.current=null,g({row:t,operation:r,plan:n,loading:!1,failure:null})}catch(e){if(i.signal.aborted||a!==b.current)return;if(y.current=null,Xv(e)){g(null),ie();return}g({row:t,operation:r,plan:null,loading:!1,failure:n(`integrations.preview.failed`)})}},me=()=>{b.current+=1,y.current?.abort(),y.current=null,g(null)},he=(e,t)=>{if(e.status&&e.status.clientId!==`aside`){pe(e,t?`apply`:`disable`);return}if(e.status?.clientId===`aside`){fe(e,t).catch(()=>{});return}if(t||e.id===`claude`||e.toggle===null){fe(e,t);return}let n=document.activeElement;C.current=n?.tagName===`BUTTON`?n:null,m(e)};return(0,Q.jsxs)(`section`,{className:`integrations-overview`,children:[(0,Q.jsxs)(`div`,{className:`integration-summary`,children:[(0,Q.jsxs)(`div`,{className:`integration-summary-cell`,children:[(0,Q.jsx)(`span`,{className:`integration-summary-label`,children:n(`integrations.summary.detected`)}),(0,Q.jsx)(`strong`,{children:re.detected})]}),(0,Q.jsxs)(`div`,{className:`integration-summary-cell`,children:[(0,Q.jsx)(`span`,{className:`integration-summary-label`,children:n(`integrations.summary.applied`)}),(0,Q.jsx)(`strong`,{children:re.applied})]}),(0,Q.jsxs)(`div`,{className:`integration-summary-cell`,children:[(0,Q.jsx)(`span`,{className:`integration-summary-label`,children:n(`integrations.summary.stale`)}),(0,Q.jsx)(`strong`,{children:re.stale})]}),re.unknown>0&&(0,Q.jsxs)(`div`,{className:`integration-summary-cell`,children:[(0,Q.jsx)(`span`,{className:`integration-summary-label`,children:n(`integrations.state.unknown`)}),(0,Q.jsx)(`strong`,{children:re.unknown})]}),(0,Q.jsxs)(`div`,{className:`integration-summary-cell`,children:[(0,Q.jsx)(`span`,{className:`integration-summary-label`,children:n(`integrations.summary.lastChange`)}),(0,Q.jsx)(`strong`,{children:se?new Date(se).toLocaleString():n(`integrations.status.unknown`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>void X(),disabled:r||!!_||G.length===0,children:n(`integrations.summary.disableAll`)})]}),(0,Q.jsx)(`h3`,{children:n(`integrations.catalog.title`)}),(0,Q.jsx)(xN,{row:J}),(0,Q.jsx)(`p`,{className:`page-sub`,children:n(`integrations.onboarding`)}),P.state.kind===`failed-cold`&&(0,Q.jsx)($,{tone:`err`,children:n(`integrations.error.load`)}),P.state.kind===`failed-with-stale`&&(0,Q.jsx)($,{tone:`err`,children:n(`integrations.error.stale`)}),a&&(0,Q.jsx)($,{tone:a.tone,children:a.text}),Y.length===0?P.state.kind===`failed-cold`?null:(0,Q.jsx)(`p`,{className:`page-sub`,children:n(`common.loading`)}):(0,Q.jsx)(`ul`,{className:`integration-cards`,children:Y.map(e=>(0,Q.jsx)(yN,{row:e,pending:ce!==null,result:d[e.id]??null,onOpen:()=>qt(e.hash),onToggle:e.toggle?()=>he(e,!(e.toggleOn??e.applied)):null,onOverwrite:e.status!==null&&e.status.state===`conflict`&&e.status.reason!==`candidate-conflict`&&e.installed?()=>void pe(e,`overwrite`):null},e.id))}),te&&ee.length===0&&(0,Q.jsxs)(`div`,{className:`integration-empty`,children:[(0,Q.jsx)(`h4`,{children:n(`integrations.empty.title`)}),(0,Q.jsx)(`p`,{children:n(`integrations.empty.body`)})]}),(0,Q.jsx)(`h3`,{children:n(`integrations.rollback.title`)}),F.state.showSkeleton?(0,Q.jsx)(Ry,{label:n(`integrations.rollback.title`),rows:2}):F.state.kind===`failed-cold`?(0,Q.jsxs)($,{tone:`err`,children:[n(`integrations.rollback.failed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void F.refresh(),children:n(`common.retry`)})]}):W.length===0?(0,Q.jsxs)(`div`,{className:`integration-empty`,children:[(0,Q.jsx)(`p`,{children:n(`integrations.rollback.empty`)}),(0,Q.jsx)(`p`,{className:`page-sub`,children:n(`integrations.rollback.emptyBody`)})]}):(0,Q.jsx)(uN,{rows:W,showClient:!0,onRestore:c,onDelete:u}),s&&(0,Q.jsx)(qM,{apiBase:e,row:s,onClose:()=>c(null),onRestored:ie,onReconcile:ie}),l&&(0,Q.jsx)(KM,{copy:{titleKey:`integrations.dialog.deleteEntry.title`,changesKey:`integrations.dialog.deleteEntry.changes`,breakageKey:`integrations.dialog.deleteEntry.breakage`,undoKey:`integrations.dialog.deleteEntry.undo`,confirmKey:`integrations.dialog.deleteEntry.confirm`,vars:{path:l.configPath}},onClose:()=>u(null),onConfirm:async()=>{try{await sy(e,l.opId,void 0,l.clientId===`aside`?l.profileId:void 0)}catch(e){if(qv(e)){u(null),await F.refresh();return}throw Error(jy(n,e),{cause:e})}u(null),await F.refresh()}}),p&&(0,Q.jsx)(KM,{copy:{...p.toggle===`claude-desktop`?pN:p.id===`codex`?fN:dN,vars:{path:p.togglePath??``}},onClose:()=>m(null),onConfirm:async()=>{await fe(p,!1),m(null)}}),h&&h.row.status&&(0,Q.jsx)(KM,{copy:h.operation===`overwrite`?{titleKey:`integrations.dialog.overwrite.title`,changesKey:h.row.status.reason===`foreign-edit`?`integrations.dialog.overwrite.changesForeign`:`integrations.dialog.overwrite.changesUnowned`,breakageKey:`integrations.dialog.overwrite.breakage`,undoKey:`integrations.dialog.overwrite.undo`,confirmKey:`integrations.dialog.overwrite.confirm`,vars:{path:h.row.status.configPath}}:h.operation===`disable`?hN:mN,plan:h.plan,planLoading:h.loading,planFailure:h.failure,onClose:me,onConfirm:async e=>{e&&(await fe(h.row,e.operation!==`disable`,e),g(null))}}),_&&(0,Q.jsx)(KM,{copy:gN,plans:_N(_.actions),hasUnboundAction:_.actions.some(e=>e.plan===null),planStale:_.stale,planLoading:_.loading,planFailure:_.failure,onClose:ae,onConfirm:async()=>{await oe(_)}})]})}function xN({row:e}){let t=O(),n=e.detailKey?t(e.detailKey,e.detailVars??void 0):null;return(0,Q.jsxs)(`div`,{className:`integration-api-keys-row`,"data-client":`keys`,"data-key-state":e.state,children:[(0,Q.jsxs)(`div`,{className:`integration-api-keys-copy`,children:[(0,Q.jsx)(`h4`,{children:t(e.labelKey)}),n&&(0,Q.jsx)(`p`,{className:`integration-meta`,children:n})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>qt(e.hash),children:t(`integrations.action.manageKeys`)})]})}function SN({install:e}){let t=O();return(0,Q.jsxs)(Q.Fragment,{children:[e.plan===`free`&&(0,Q.jsx)($,{tone:`warn`,children:t(`integrations.raycast.proRequired`)}),e.plan===`unknown`&&(0,Q.jsx)(`p`,{className:`page-sub`,"data-raycast-plan":`unknown`,children:t(`integrations.raycast.planUnknown`)}),!e.aiDirPresent&&(0,Q.jsx)(`p`,{className:`page-sub`,"data-raycast-ai-dir":`absent`,children:t(`integrations.raycast.revealConfig`)})]})}function CN({reasoning:e,defaults:t,disabled:n,onChange:r,onReview:i}){let a=O(),o=new Map(e.models.map(e=>[e.model,new Set(e.efforts)])),s=Object.entries(t).filter(([e,t])=>!o.get(e)?.has(t)),c=(e,n)=>{let i={...t};n?i[e]=n:delete i[e],r(i)};return(0,Q.jsxs)(`section`,{className:`droid-reasoning-panel`,"aria-labelledby":`droid-reasoning-title`,children:[(0,Q.jsxs)(`div`,{className:`droid-reasoning-heading`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h4`,{id:`droid-reasoning-title`,children:a(`integrations.droidReasoning.title`)}),(0,Q.jsx)(`p`,{className:`page-sub`,children:a(`integrations.droidReasoning.description`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:i,disabled:n,children:a(`integrations.droidReasoning.saveReview`)})]}),e.models.length>0?(0,Q.jsx)(`ul`,{className:`droid-reasoning-list`,children:e.models.map(e=>{let r=t[e.model]??``,i=e.efforts.includes(r),o=[{value:``,label:a(`integrations.droidReasoning.noDefault`)},...!i&&r?[{value:r,label:a(`integrations.droidReasoning.unsupportedEffort`,{effort:r})}]:[],...e.efforts.map(e=>({value:e,label:e}))];return(0,Q.jsxs)(`li`,{className:`droid-reasoning-row`,children:[(0,Q.jsxs)(`div`,{className:`droid-reasoning-model`,children:[(0,Q.jsx)(`span`,{children:e.label}),(0,Q.jsx)(`code`,{children:e.model})]}),e.efforts.length>0?(0,Q.jsx)(cn,{value:r,options:o,onChange:t=>c(e.model,t),disabled:n,label:a(`integrations.droidReasoning.modelDefault`,{model:e.label})}):(0,Q.jsx)(`span`,{className:`muted text-caption`,children:a(`integrations.droidReasoning.noEfforts`)})]},e.model)})}):(0,Q.jsx)(`p`,{className:`page-sub`,children:a(`integrations.droidReasoning.noModels`)}),s.length>0&&(0,Q.jsxs)(`div`,{className:`droid-reasoning-unsupported`,role:`status`,children:[(0,Q.jsx)(`p`,{children:a(`integrations.droidReasoning.unsupportedTitle`)}),(0,Q.jsx)(`ul`,{children:s.map(([e,t])=>(0,Q.jsxs)(`li`,{children:[(0,Q.jsx)(`code`,{children:e}),` `,a(`integrations.droidReasoning.unsupportedEffort`,{effort:t}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:n,onClick:()=>c(e,``),children:a(`integrations.droidReasoning.clear`)})]},e))})]})]})}function wN(e,t){return{titleKey:`integrations.dialog.overwrite.title`,changesKey:e===`foreign-edit`?`integrations.dialog.overwrite.changesForeign`:`integrations.dialog.overwrite.changesUnowned`,breakageKey:`integrations.dialog.overwrite.breakage`,undoKey:`integrations.dialog.overwrite.undo`,confirmKey:`integrations.dialog.overwrite.confirm`,vars:{path:t}}}var TN={titleKey:`integrations.dialog.apply.title`,changesKey:`integrations.dialog.apply.changes`,breakageKey:`integrations.dialog.apply.breakage`,undoKey:`integrations.dialog.apply.undo`,confirmKey:`integrations.dialog.apply.confirm`},EN={titleKey:`integrations.dialog.disable.title`,changesKey:`integrations.dialog.disable.changes`,breakageKey:`integrations.dialog.disable.breakage`,undoKey:`integrations.dialog.disable.undo`,confirmKey:`integrations.dialog.disable.confirm`},DN={opencode:`integrations.semantics.opencode`,pi:`integrations.semantics.pi`,"gentle-shell":`integrations.semantics.gentleShell`,omp:`integrations.semantics.omp`,hermes:`integrations.semantics.hermes`,openclaw:`integrations.semantics.openclaw`,kimi:`integrations.semantics.kimi`,gajae:`integrations.semantics.gajae`,dsh:`integrations.semantics.dsh`,mcode:`integrations.semantics.mcode`,zcode:`integrations.semantics.zcode`,commandcode:`integrations.semantics.commandcode`,prime:`integrations.semantics.prime`,aside:`integrations.semantics.aside`,raycast:`integrations.semantics.raycast`,omo:`integrations.semantics.omo`,cline:`integrations.semantics.cline`,kilo:`integrations.semantics.kilo`,droid:`integrations.semantics.droid`,qoder:`integrations.semantics.qoder`},ON={opencode:`integrations.tab.opencode`,pi:`integrations.tab.pi`,"gentle-shell":`integrations.tab.gentleShell`,omp:`integrations.tab.omp`,hermes:`integrations.tab.hermes`,openclaw:`integrations.tab.openclaw`,kimi:`integrations.tab.kimi`,gajae:`integrations.tab.gajae`,dsh:`integrations.tab.dsh`,mcode:`integrations.tab.mcode`,zcode:`integrations.tab.zcode`,commandcode:`integrations.tab.commandcode`,prime:`integrations.tab.prime`,aside:`integrations.tab.aside`,raycast:`integrations.tab.raycast`,omo:`integrations.tab.omo`,cline:`integrations.tab.cline`,kilo:`integrations.tab.kilo`,droid:`integrations.tab.droid`,qoder:`integrations.tab.qoder`};function kN(e){return(0,Q.jsx)(AN,{...e},JSON.stringify([e.apiBase,e.client,e.profileId]))}function AN({apiBase:e,client:t,active:n=!0,profileId:r,profileLabel:i}){let a=O(),o=r===void 0?t:`${t}:${r}`,[s,c]=(0,Z.useState)(!1),[l,u]=(0,Z.useState)(null),[d,f]=(0,Z.useState)(null),[p,m]=(0,Z.useState)(null),[h,g]=(0,Z.useState)(null),[_,v]=(0,Z.useState)(null),y=(0,Z.useRef)(null),b=(0,Z.useRef)(0);(0,Z.useEffect)(()=>()=>{b.current+=1,y.current?.abort()},[]);let x=(0,Z.useCallback)(n=>ty(e,t,n,r),[e,t,r]),S=(0,Z.useCallback)(async n=>(await ny(e,t,n,r)).operations,[e,t,r]),C=Ya(`integration-state:${e}:${o}`,[e,t,r],x,{isEmpty:()=>!1,enabled:n,sessionCacheKey:`ocx.integrations.state.v1:${e}:${o}`}),w=Ya(`integration-journal:${e}:${o}`,[e,t,r],S,{isEmpty:e=>e.length===0,enabled:n,sessionCacheKey:`ocx.integrations.client-journal.v1:${e}:${o}`}),T=C.state.data??null,E=T&&(r===void 0||T.profileId===r&&typeof T.enabled==`boolean`)?T:null,D=w.state.data??[],k=()=>{C.refresh(),w.refresh()},A=()=>{u(null),k()},j=async(n,i=t===`droid`&&n!==`disable`&&l?.scopeKey===o?l.values:void 0)=>{if(!E||s||_)return;let c=i===void 0?void 0:{...i},u=new AbortController,d=b.current+1;b.current=d,y.current?.abort(),y.current=u,v({operation:n,plan:null,loading:!0,failure:null});try{let i=await ry(e,t,n,u.signal,r,c);if(u.signal.aborted||d!==b.current)return;y.current=null,v({operation:n,plan:i,loading:!1,failure:null,droidReasoningDefaults:c})}catch(e){if(u.signal.aborted||d!==b.current)return;if(y.current=null,Xv(e)){v(null),k();return}v({operation:n,plan:null,loading:!1,failure:a(`integrations.preview.failed`)})}},M=()=>{b.current+=1,y.current?.abort(),y.current=null,v(null)},N=async n=>{if(!(!E||s)){c(!0),f(null);try{await ay(e,t,{enabled:n.operation!==`disable`,overwriteConflict:n.operation===`overwrite`,profileId:r,binding:Zv(n),...n.operation!==`disable`&&_?.droidReasoningDefaults!==void 0?{droidReasoningDefaults:_.droidReasoningDefaults}:{}}),v(null),t===`droid`&&u(null)}catch(e){throw k(),e instanceof Kv&&e.stalePlan?e:Error(jy(a,e),{cause:e})}finally{k(),c(!1)}}},P=()=>void j(L?`disable`:`apply`);if(!E)return(0,Q.jsx)(`section`,{className:`integration-client-page`,children:C.state.showError?(0,Q.jsxs)($,{tone:`err`,children:[a(`integrations.error.load`),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:k,disabled:C.state.refreshing,children:a(`common.retry`)})]}):(0,Q.jsx)(`p`,{className:`page-sub`,children:a(`common.loading`)})});let F=Ev(E),I=E.state===`current`||E.state===`stale`||F,L=r===void 0?I:E.enabled===!0,R=r!==void 0&&(C.state.showError||C.state.refreshing),z=(!E.installed||(E.state===`conflict`||E.state===`unsafe`)&&!F)&&!(r!==void 0&&L);return(0,Q.jsxs)(`section`,{className:`integration-client-page`,children:[(0,Q.jsxs)(`div`,{className:`integration-client-head`,children:[(0,Q.jsx)(fk,{src:dk(t),label:a(ON[t]),size:24}),(0,Q.jsx)(`h3`,{children:i??a(ON[t])}),(0,Q.jsx)(LM,{state:E.state,installed:E.installed,id:`integration-state-${t}${r===void 0?``:`-${r}`}`}),(0,Q.jsx)(on,{on:L,onClick:P,disabled:z||s||R,label:a(L?`integrations.action.disable`:`integrations.action.apply`)})]}),r!==void 0&&C.state.showError&&(0,Q.jsxs)($,{tone:`err`,children:[a(`integrations.aside.loadError`),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:k,disabled:s||C.state.refreshing,children:a(`common.retry`)})]}),E.state===`stale`&&L&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>void j(`apply`),disabled:s,children:a(`integrations.action.refresh`)}),t===`droid`&&E.droidReasoning&&(0,Q.jsx)(CN,{reasoning:E.droidReasoning,defaults:l?.scopeKey===o?l.values:E.droidReasoning.defaults,disabled:s||_!==null,onChange:e=>u({scopeKey:o,values:e}),onReview:()=>void j(`apply`)}),E.installed&&E.state===`conflict`&&E.reason!==`candidate-conflict`&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-danger`,onClick:()=>void j(`overwrite`),disabled:s,children:a(`integrations.action.overwrite`)}),(0,Q.jsx)(`p`,{className:`page-sub`,children:a(DN[t])}),(0,Q.jsx)(`p`,{className:`integration-path`,children:E.configPath}),E.reason===`candidate-conflict`&&E.conflictPaths?.map(e=>(0,Q.jsx)($,{tone:`err`,children:a(`integrations.status.candidateConflict`,{path:e})},e)),E.raycast&&(0,Q.jsx)(SN,{install:E.raycast}),E.supersededBy&&(0,Q.jsx)($,{tone:`err`,children:E.supersededReason===`missing-store`&&E.missingStoreDocument!==void 0?a(`integrations.status.missingStore`,{path:E.supersededBy,document:E.missingStoreDocument}):a(`integrations.status.supersededStore`,{path:E.supersededBy})}),E.appliedAt&&(0,Q.jsxs)(`p`,{className:`integration-meta`,children:[a(`integrations.status.appliedAt`),`: `,new Date(E.appliedAt).toLocaleString()]}),E.retentionDegraded&&(0,Q.jsx)($,{tone:`err`,children:a(`integrations.retention.degraded`)}),d&&(0,Q.jsx)($,{tone:`err`,children:d}),(0,Q.jsx)(`h4`,{children:a(`integrations.rollback.title`)}),w.state.showSkeleton?(0,Q.jsx)(Ry,{label:a(`integrations.rollback.title`),rows:2}):w.state.kind===`failed-cold`?(0,Q.jsxs)($,{tone:`err`,children:[a(`integrations.rollback.failed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void w.refresh(),children:a(`common.retry`)})]}):D.length===0?(0,Q.jsx)(`p`,{className:`page-sub`,children:a(`integrations.rollback.empty`)}):(0,Q.jsx)(uN,{rows:D,onRestore:m,onDelete:g}),p&&(0,Q.jsx)(qM,{apiBase:e,row:p,profileId:r,onClose:()=>m(null),onRestored:()=>{t===`droid`?A():k()},onReconcile:k}),h&&(0,Q.jsx)(KM,{copy:{titleKey:`integrations.dialog.deleteEntry.title`,changesKey:`integrations.dialog.deleteEntry.changes`,breakageKey:`integrations.dialog.deleteEntry.breakage`,undoKey:`integrations.dialog.deleteEntry.undo`,confirmKey:`integrations.dialog.deleteEntry.confirm`,vars:{path:h.configPath}},onClose:()=>g(null),onConfirm:async()=>{try{await sy(e,h.opId,void 0,r)}catch(e){if(qv(e)){g(null),await w.refresh();return}throw Error(jy(a,e),{cause:e})}g(null),await w.refresh()}}),_&&(0,Q.jsx)(KM,{copy:_.operation===`overwrite`?wN(E.reason,E.configPath):_.operation===`disable`?EN:TN,plan:_.plan,planLoading:_.loading,planFailure:_.failure,missingStorePath:E.supersededReason===`missing-store`?E.supersededBy:void 0,onClose:M,onConfirm:async e=>{e&&await N(e)}})]})}function jN(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function MN(){throw new Kv(502,{code:`invalid_aside_profile_response`})}async function NN(e,t){let n=await Yv(await fetch(`${e}/api/client-integrations/aside/profiles`,{signal:t}));(!jN(n)||!Array.isArray(n.profiles)||typeof n.allEnabled!=`boolean`)&&MN();let r=n.profiles.map(e=>Cv(e)??MN());new Set(r.map(e=>e.profileId)).size!==r.length&&MN();let i=r.filter(e=>e.enabled).length,a=r.filter(e=>e.state===`current`||e.state===`stale`).length;return(n.total!==r.length||n.enabledCount!==i||n.appliedCount!==a||n.allEnabled!==(r.length>0&&i===r.length))&&MN(),{profiles:r,allEnabled:n.allEnabled,enabledCount:i,appliedCount:a,total:r.length,...typeof n.error==`string`?{error:n.error}:{}}}async function PN(e,t){let n=await Yv(await fetch(`${e}/api/client-integrations/aside/sync`,{method:`POST`,headers:{"Content-Type":`application/json`},body:`{}`,signal:t}));(!jN(n)||typeof n.ok!=`boolean`||!Array.isArray(n.results))&&MN(),n.results.some(e=>!jN(e)||e.client!==`aside`)&&MN();let r=wv(n.results)??MN();return n.ok!==r.every(e=>e.ok)&&MN(),{ok:n.ok,results:r}}var FN={titleKey:`integrations.dialog.apply.title`,changesKey:`integrations.dialog.apply.changes`,breakageKey:`integrations.dialog.apply.breakage`,undoKey:`integrations.dialog.apply.undo`,confirmKey:`integrations.dialog.apply.confirm`},IN={titleKey:`integrations.dialog.disable.title`,changesKey:`integrations.dialog.disable.changes`,breakageKey:`integrations.dialog.disable.breakage`,undoKey:`integrations.dialog.disable.undo`,confirmKey:`integrations.dialog.disable.confirm`};function LN({apiBase:e,active:t=!0}){let n=O(),[r,i]=(0,Z.useState)(null),[a,o]=(0,Z.useState)(null),s=(0,Z.useRef)(!1),[c,l]=(0,Z.useState)(null),[u,d]=(0,Z.useState)(new Map),[f,p]=(0,Z.useState)(null),m=(0,Z.useRef)(null),h=(0,Z.useRef)(0);(0,Z.useEffect)(()=>()=>{h.current+=1,m.current?.abort()},[]);let g=(0,Z.useCallback)(t=>NN(e,t),[e]),_=Ya(`aside-profiles:${e}`,[e],g,{enabled:t,isEmpty:e=>!e.error&&e.profiles.length===0,sessionCacheKey:`ocx.integrations.aside-profiles.v1:${e}`}),v=_.state.data,y=v?.profiles??[],b=_.state.showError||!!v?.error,x=a!==null||_.state.refreshing||f!==null,S=e=>e.name||n(`integrations.aside.profile`,{id:e.profileId}),C=e=>d(t=>{let r=new Map(t);for(let t of e)t.ok?r.delete(t.profileId):r.set(t.profileId,My(n,t));return r}),w=(e,t)=>{e instanceof Kv&&`results`in e.body&&e.body.results?.length?(C(e.body.results),l(n(`integrations.aside.partial`))):t===void 0?l(jy(n,e)):d(r=>new Map(r).set(t,jy(n,e)))},T=async(t,r,i)=>{if(!s.current){s.current=!0,o(r??`all`),l(null);try{let n=await ay(e,`aside`,{enabled:t,profileId:r,...i?{binding:Zv(i)}:{}});C(n.results??(r===void 0?y.map(e=>e.profileId):[r]).map(e=>({profileId:e,ok:!0})))}catch(e){if(i&&e instanceof Kv&&e.stalePlan)throw e;if(w(e,r),i)throw Error(jy(n,e),{cause:e})}finally{_.refresh(),s.current=!1,o(null)}}},E=async(t,r)=>{if(s.current||f)return;let i=new AbortController,a=h.current+1;h.current=a,m.current?.abort(),m.current=i,p({profile:t,enabled:r,plan:null,loading:!0,failure:null});try{let n=await ry(e,`aside`,r?`apply`:`disable`,i.signal,t.profileId);if(i.signal.aborted||a!==h.current)return;m.current=null,p({profile:t,enabled:r,plan:n,loading:!1,failure:null})}catch(e){if(i.signal.aborted||a!==h.current)return;if(m.current=null,Xv(e)){p(null),_.refresh();return}p({profile:t,enabled:r,plan:null,loading:!1,failure:n(`integrations.preview.failed`)})}},D=()=>{h.current+=1,m.current?.abort(),m.current=null,p(null)},k=async()=>{if(!s.current){s.current=!0,o(`sync`),l(null);try{let t=await PN(e);C(t.results),t.ok||l(n(`integrations.aside.partial`))}catch(e){w(e)}finally{_.refresh(),s.current=!1,o(null)}}};return r?(0,Q.jsxs)(`section`,{className:`integration-client-page`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,autoFocus:!0,onClick:()=>{i(null),_.refresh()},children:n(`integrations.aside.back`)}),u.has(r.profileId)&&(0,Q.jsx)($,{tone:`err`,children:(0,Q.jsx)(`span`,{className:`aside-profile-failure`,children:u.get(r.profileId)})}),(0,Q.jsx)(kN,{apiBase:e,client:`aside`,active:t,profileId:r.profileId,profileLabel:S(r)},r.profileId)]}):(0,Q.jsxs)(`section`,{className:`integration-client-page`,"aria-busy":x,children:[(0,Q.jsxs)(`div`,{className:`integration-client-head`,children:[(0,Q.jsx)(fk,{src:dk(`aside`),label:n(`integrations.tab.aside`),size:24}),(0,Q.jsx)(`h3`,{children:n(`integrations.aside.profilesTitle`)})]}),(0,Q.jsx)(`p`,{className:`page-sub`,children:n(`integrations.aside.profilesHint`)}),(0,Q.jsxs)(`div`,{className:`aside-profile-toolbar`,children:[(0,Q.jsx)(on,{on:v?.allEnabled??!1,mixed:!!(v&&v.enabledCount>0&&v.enabledCount<v.total),onClick:()=>void T(!v?.allEnabled),disabled:x||b||y.length===0,label:n(`integrations.aside.all`),showLabel:!0}),(0,Q.jsx)(`span`,{className:`text-caption muted`,children:n(`integrations.aside.applied`,{count:v?.appliedCount??0,total:v?.total??0})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn`,disabled:x||b||!v?.enabledCount,onClick:()=>void k(),children:n(`integrations.aside.syncNow`)})]}),c&&(0,Q.jsx)($,{tone:`err`,children:(0,Q.jsx)(`span`,{className:`aside-profile-failure`,children:c})}),[...u].filter(([e])=>!y.some(t=>t.profileId===e)).map(([e,t])=>(0,Q.jsx)($,{tone:`err`,children:(0,Q.jsxs)(`span`,{className:`aside-profile-failure`,children:[n(`integrations.aside.profile`,{id:e}),`: `,t]})},e)),b&&(0,Q.jsxs)($,{tone:`err`,children:[(0,Q.jsx)(`span`,{children:n(`integrations.aside.loadError`)}),v?.error&&(0,Q.jsx)(`span`,{className:`text-caption`,children:v.error}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>_.refresh(),disabled:x,children:n(`common.retry`)})]}),_.state.showSkeleton&&(0,Q.jsx)(Ry,{label:n(`common.loading`),rows:3}),!_.state.showSkeleton&&!b&&v&&y.length===0&&(0,Q.jsx)(`p`,{className:`page-sub`,children:n(`integrations.aside.empty`)}),y.length>0&&(0,Q.jsx)(`div`,{className:`aside-profile-list`,children:y.map(e=>{let t=S(e),r=e.state===`current`||e.state===`stale`,o=e.enabled!==r||e.enabled&&e.state===`stale`,s=(!e.installed||e.state===`unsafe`||e.state===`conflict`)&&!e.enabled;return(0,Q.jsxs)(`div`,{className:`aside-profile-row`,"aria-busy":a===e.profileId,children:[(0,Q.jsxs)(`div`,{className:`aside-profile-info`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost aside-profile-name`,"aria-label":n(`integrations.aside.details`,{name:t}),onClick:()=>i(e),disabled:x||b,children:t}),(0,Q.jsxs)(`div`,{className:`aside-profile-meta`,children:[(0,Q.jsx)(`code`,{children:e.profileId}),e.current&&(0,Q.jsx)(`span`,{className:`text-caption muted`,children:n(`integrations.aside.current`)})]}),o&&(0,Q.jsx)(`span`,{className:`text-caption muted`,children:n(`integrations.aside.pending`)}),e.error&&(0,Q.jsx)(`span`,{className:`text-caption muted`,children:e.error}),u.has(e.profileId)&&(0,Q.jsx)($,{tone:`err`,children:(0,Q.jsx)(`span`,{className:`aside-profile-failure`,children:u.get(e.profileId)})})]}),(0,Q.jsxs)(`div`,{className:`aside-profile-controls`,children:[(0,Q.jsx)(LM,{state:e.state,installed:e.installed,id:`aside-profile-state-${e.profileId}`}),o&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:x||b,"aria-label":n(`integrations.aside.retry`,{name:t}),onClick:()=>void E(e,e.enabled),children:n(`common.retry`)}),(0,Q.jsx)(on,{on:e.enabled,onClick:()=>void E(e,!e.enabled),disabled:x||b||s,label:n(`integrations.aside.toggle`,{name:t})})]})]},e.profileId)})}),f&&(0,Q.jsx)(KM,{copy:f.enabled?FN:IN,plan:f.plan,planLoading:f.loading,planFailure:f.failure,onClose:D,onConfirm:async e=>{e&&(await T(f.enabled,f.profile.profileId,e),p(null))}})]})}function RN(e){return e.proposedModel===e.model&&(e.proposedEffort==null||e.proposedEffort===e.effort)}function zN({apiBase:e,busy:t,apply:n}){let r=O(),[i,a]=(0,Z.useState)(!1),[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(null),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)({}),[m,h]=(0,Z.useState)(null),g=async()=>{a(!0),l(null),h(null);try{let t=await hn(await fetch(`${e}/api/codex-agent-roles/auto-assign`,{method:`POST`,headers:{"Content-Type":`application/json`},body:`{}`}),r(`integrations.lazycodexRoles.auto.failed`));d(t??null),p({})}catch(e){d(null),l(e instanceof Error&&e.message?e.message:r(`integrations.lazycodexRoles.auto.failed`))}finally{a(!1)}},_=(u?.proposals??[]).filter(e=>e.status===`proposed`&&e.proposedModel&&!f[e.role]&&!RN(e)),v=async e=>{let t=await n(e.role,e.proposedModel,e.proposedEffort??void 0);return t&&p(t=>({...t,[e.role]:!0})),t},y=async()=>{s(!0);let e=0,t=_.length;for(let t of _)await v(t)&&(e+=1);h(r(`integrations.lazycodexRoles.auto.appliedCount`,{count:String(e),total:String(t)})),s(!1)},b=i||o||t;return(0,Q.jsxs)(`div`,{className:`lazycodex-auto-assign`,children:[(0,Q.jsxs)(`div`,{className:`lazycodex-auto-assign-bar`,children:[(0,Q.jsx)(`p`,{className:`page-sub`,children:r(`integrations.lazycodexRoles.auto.hint`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:b,onClick:()=>void g(),children:r(i?`integrations.lazycodexRoles.auto.running`:`integrations.lazycodexRoles.auto.button`)})]}),c&&(0,Q.jsx)($,{tone:`err`,children:c}),u&&(0,Q.jsxs)(`section`,{className:`lazycodex-auto-assign-panel`,"aria-labelledby":`lazycodex-auto-assign-title`,children:[(0,Q.jsxs)(`div`,{className:`lazycodex-auto-assign-bar`,children:[(0,Q.jsx)(`h5`,{id:`lazycodex-auto-assign-title`,children:r(`integrations.lazycodexRoles.auto.title`)}),(0,Q.jsx)(`span`,{className:`integration-meta`,children:r(`integrations.lazycodexRoles.auto.sizedWith`,{model:u.sizingModel})}),(0,Q.jsxs)(`div`,{className:`lazycodex-auto-assign-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:b||_.length===0,onClick:()=>void y(),children:r(`integrations.lazycodexRoles.auto.applyAll`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:o,onClick:()=>{d(null),h(null)},children:r(`integrations.lazycodexRoles.auto.discard`)})]})]}),u.sizingError&&(0,Q.jsx)($,{tone:`warn`,children:r(`integrations.lazycodexRoles.auto.sizingFailed`,{error:u.sizingError})}),m&&(0,Q.jsx)($,{tone:`ok`,children:m}),(0,Q.jsx)(`ul`,{className:`lazycodex-auto-assign-list`,children:u.proposals.map(e=>(0,Q.jsxs)(`li`,{"aria-label":r(`integrations.lazycodexRoles.auto.proposalFor`,{role:e.role}),children:[(0,Q.jsxs)(`div`,{className:`lazycodex-auto-assign-head`,children:[(0,Q.jsx)(`code`,{children:e.role}),e.tier&&e.effortIntent&&(0,Q.jsx)(`span`,{className:`integration-meta`,children:r(`integrations.lazycodexRoles.auto.tierEffort`,{tier:r(zC[e.tier]),effort:r(BC[e.effortIntent])})})]}),e.status===`unsized`?(0,Q.jsx)(`p`,{className:`integration-meta`,children:r(`integrations.lazycodexRoles.auto.unsized`,{reason:e.reason??``})}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`lazycodex-auto-assign-change`,children:[(0,Q.jsx)(`span`,{children:e.model?(0,Q.jsx)(`code`,{children:e.model}):r(`integrations.lazycodexRoles.none`)}),(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:`→`}),e.proposedModel?(0,Q.jsxs)(`code`,{children:[e.proposedModel,e.proposedEffort?` · ${e.proposedEffort}`:``]}):(0,Q.jsx)(`span`,{className:`integration-meta`,children:r(`integrations.lazycodexRoles.auto.unassigned`,{reason:e.reason??``})}),e.status===`proposed`&&(f[e.role]||RN(e)?(0,Q.jsx)(`span`,{className:`lazycodex-auto-assign-done`,children:f[e.role]?r(`integrations.lazycodexRoles.auto.applied`):r(`integrations.lazycodexRoles.auto.alreadySet`)}):(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:b,onClick:()=>void v(e),children:r(`integrations.lazycodexRoles.auto.apply`)}))]}),e.rationale&&(0,Q.jsx)(`p`,{children:e.rationale}),e.moveUpIf&&(0,Q.jsx)(`p`,{className:`integration-meta`,children:r(`integrations.lazycodexRoles.auto.moveUp`,{text:e.moveUpIf})}),e.moveDownIf&&(0,Q.jsx)(`p`,{className:`integration-meta`,children:r(`integrations.lazycodexRoles.auto.moveDown`,{text:e.moveDownIf})})]})]},e.role))})]})]})}var BN={absent:`integrations.lazycodexRoles.omoAbsent`,skipped_comments:`integrations.lazycodexRoles.omoComments`,invalid:`integrations.lazycodexRoles.omoInvalid`,write_failed:`integrations.lazycodexRoles.omoFailed`};function VN({apiBase:e,active:t}){let n=O(),[r,i]=(0,Z.useState)({}),[a,o]=(0,Z.useState)({}),[s,c]=(0,Z.useState)({}),[l,u]=(0,Z.useState)(null),[d,f]=(0,Z.useState)(null),p=(0,Z.useCallback)(async t=>{let r=await hn(await fetch(`${e}/api/codex-agent-roles`,{signal:t}),n(`integrations.lazycodexRoles.loadFailed`));if(r?.lazycodex?.detected!==!0)return{detected:!1,roles:[],omoJsonc:null,available:[],efforts:[]};let[i,a]=await Promise.all([fetch(`${e}/api/subagent-models`,{signal:t}).then(e=>hn(e,n(`integrations.lazycodexRoles.loadFailed`))),fetch(`${e}/api/injection-model`,{signal:t}).then(e=>hn(e,n(`integrations.lazycodexRoles.loadFailed`))).catch(()=>null)]);return{detected:!0,roles:r.roles??[],omoJsonc:r.omoJsonc??null,available:i?.available??[],efforts:a?.efforts??[]}},[e,n]),m=`lazycodex-role-models:${e}`,h=Ya(m,[e],p,{isEmpty:e=>e.roles.length===0,enabled:t}),g=h.state.data,_=(0,Z.useRef)(g);(0,Z.useLayoutEffect)(()=>{_.current=g},[g]);let v=async(t,r,a=void 0,d)=>{if(l!==null)return!1;let p=a===void 0?s[t]?.sent:a;if(r===void 0&&p===void 0)return!1;u(t),f(null);try{let a=(await hn(await fetch(`${e}/api/codex-agent-roles/${encodeURIComponent(t)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...r===void 0?{}:{model:r},...p===void 0?{}:{effort:p}})}),n(`integrations.lazycodexRoles.saveFailed`,{role:t})))?.omoJsonc?.status,s=_.current,l=s?.roles.find(e=>e.role===t),u=p===void 0?l?l.effort??null:d||null:p,g=u??``,v=r??l?.model??null;if(s){let e={...s,roles:s.roles.map(e=>e.role===t?{...e,model:r??e.model,effort:u,omoJsoncModel:r!==void 0&&(a===`written`||a===`unchanged`)?r:e.omoJsoncModel}:e)};_.current=e,Ut(m,e)}let y=a?BN[a]:void 0,b=v??n(`integrations.lazycodexRoles.none`),x=g?`${b} · ${g}`:b;f(y?{tone:`warn`,text:n(y,{role:t,model:x})}:{tone:`ok`,text:n(`integrations.lazycodexRoles.saved`,{role:t,model:x})});let S=a===`write_failed`,C=(e,n)=>{let{[t]:r,...i}=e;return S?{...i,[t]:n}:i};return i(e=>C(e,r??``)),o(e=>C(e,g)),c(e=>C(e,{sent:p})),await h.refresh(),!0}catch{return f({tone:`err`,text:n(`integrations.lazycodexRoles.saveFailed`,{role:t})}),!1}finally{u(null)}},y=(e,t)=>{let r=[...new Set([...e.model?[e.model]:[],...g?.available??[]])];return[...t===``?[{value:``,label:n(`integrations.lazycodexRoles.choose`)}]:[],...r.map(e=>({value:e,label:e}))]};return h.state.kind===`failed-cold`?(0,Q.jsxs)($,{tone:`err`,children:[n(`integrations.lazycodexRoles.loadFailed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void h.refresh(),children:n(`common.retry`)})]}):g?.detected?(0,Q.jsxs)(`section`,{id:`lazycodex-role-models`,className:`lazycodex-role-models`,"aria-labelledby":`lazycodex-role-models-title`,children:[(0,Q.jsx)(`h4`,{id:`lazycodex-role-models-title`,children:n(`integrations.lazycodexRoles.title`)}),(0,Q.jsx)(`p`,{className:`page-sub`,children:n(`integrations.lazycodexRoles.hint`)}),g.omoJsonc?.state===`comments`&&(0,Q.jsx)($,{tone:`warn`,children:n(`integrations.lazycodexRoles.omoCommentsState`)}),d&&(0,Q.jsx)($,{tone:d.tone,children:d.text}),g.roles.length===0?(0,Q.jsx)(`p`,{className:`page-sub`,children:n(`integrations.lazycodexRoles.empty`)}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(zN,{apiBase:e,busy:l!==null,apply:v}),(0,Q.jsx)(`div`,{className:`tbl-wrap`,children:(0,Q.jsxs)(`table`,{className:`tbl`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:n(`integrations.lazycodexRoles.role`)}),(0,Q.jsx)(`th`,{children:n(`integrations.lazycodexRoles.current`)}),(0,Q.jsxs)(`th`,{children:[n(`integrations.lazycodexRoles.model`),` · `,n(`integrations.lazycodexRoles.effort`)]})]})}),(0,Q.jsx)(`tbody`,{children:g.roles.map(e=>{let t=r[e.role]??e.model??``,c=a[e.role]??e.effort??``,u=c!==(e.effort??``),d=t!==``&&t!==e.model||u,f=s[e.role],p=f!==void 0&&(t!==``||f.sent!==void 0);return(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{children:(0,Q.jsx)(`code`,{children:e.role})}),(0,Q.jsx)(`td`,{children:e.model?(0,Q.jsx)(`code`,{children:e.effort?`${e.model} · ${e.effort}`:e.model}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`integration-meta`,children:n(`integrations.lazycodexRoles.none`)}),e.effort&&(0,Q.jsxs)(Q.Fragment,{children:[` · `,(0,Q.jsx)(`code`,{children:e.effort})]})]})}),(0,Q.jsx)(`td`,{children:(0,Q.jsxs)(`div`,{className:`lazycodex-role-models-edit`,children:[(0,Q.jsx)(cn,{value:t,options:y(e,t),label:n(`integrations.lazycodexRoles.modelFor`,{role:e.role}),disabled:l!==null,onChange:t=>i(n=>({...n,[e.role]:t}))}),(0,Q.jsx)(cn,{value:c,options:[{value:``,label:n(`integrations.lazycodexRoles.effortDefault`)},...[...new Set([...e.effort?[e.effort]:[],...g.efforts])].map(e=>({value:e,label:e}))],label:n(`integrations.lazycodexRoles.effortFor`,{role:e.role}),disabled:l!==null,onChange:t=>o(n=>({...n,[e.role]:t}))}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:!(d||p)||l!==null,onClick:()=>void v(e.role,t||void 0,u?c||null:void 0,e.effort??``),children:l===e.role?n(`common.saving`):n(p&&!d?`integrations.lazycodexRoles.retryMirror`:`common.save`)})]})})]},e.role)})})]})})]})]}):null}var HN=[{id:`overview`,hash:`integrations`,labelKey:`integrations.tab.overview`},{id:`keys`,hash:`integrations/keys`,labelKey:`integrations.tab.keys`},{id:`codex`,hash:`integrations/codex`,labelKey:`integrations.tab.codex`},{id:`claude`,hash:`claude`,labelKey:`nav.claude`},{id:`claudeDesktop`,hash:`claude/desktop`,labelKey:`claudeDesktop.title`},{id:`grok`,hash:`integrations/grok`,labelKey:`integrations.tab.grok`},{id:`cursor`,hash:`integrations/cursor`,labelKey:`integrations.tab.cursor`},{id:`opencode`,hash:`integrations/opencode`,labelKey:`integrations.tab.opencode`},{id:`pi`,hash:`integrations/pi`,labelKey:`integrations.tab.pi`},{id:`gentle-shell`,hash:`integrations/gentle-shell`,labelKey:`integrations.tab.gentleShell`},{id:`omp`,hash:`integrations/omp`,labelKey:`integrations.tab.omp`},{id:`hermes`,hash:`integrations/hermes`,labelKey:`integrations.tab.hermes`},{id:`openclaw`,hash:`integrations/openclaw`,labelKey:`integrations.tab.openclaw`},{id:`kimi`,hash:`integrations/kimi`,labelKey:`integrations.tab.kimi`},{id:`gajae`,hash:`integrations/gajae`,labelKey:`integrations.tab.gajae`},{id:`dsh`,hash:`integrations/dsh`,labelKey:`integrations.tab.dsh`},{id:`mcode`,hash:`integrations/mcode`,labelKey:`integrations.tab.mcode`},{id:`zcode`,hash:`integrations/zcode`,labelKey:`integrations.tab.zcode`},{id:`commandcode`,hash:`integrations/commandcode`,labelKey:`integrations.tab.commandcode`},{id:`prime`,hash:`integrations/prime`,labelKey:`integrations.tab.prime`},{id:`aside`,hash:`integrations/aside`,labelKey:`integrations.tab.aside`},{id:`raycast`,hash:`integrations/raycast`,labelKey:`integrations.tab.raycast`},{id:`omo`,hash:`integrations/omo`,labelKey:`integrations.tab.omo`},{id:`qoder`,hash:`integrations/qoder`,labelKey:`integrations.tab.qoder`},{id:`cline`,hash:`integrations/cline`,labelKey:`integrations.tab.cline`},{id:`kilo`,hash:`integrations/kilo`,labelKey:`integrations.tab.kilo`},{id:`droid`,hash:`integrations/droid`,labelKey:`integrations.tab.droid`}],UN=new Set([`opencode`,`pi`,`gentle-shell`,`omp`,`hermes`,`openclaw`,`kimi`,`gajae`,`dsh`,`mcode`,`zcode`,`commandcode`,`prime`,`aside`,`raycast`,`omo`,`cline`,`kilo`,`droid`,`qoder`]);function WN(e=window.location.hash){let t=Cg(e);return t===`claude/desktop`?`claudeDesktop`:t===`claude`||t.startsWith(`claude/`)?`claude`:HN.find(e=>e.hash===t)?.id??`overview`}function GN(e){return`integrations-tab-${e}`}function KN(e){return`integrations-panel-${e}`}function qN(e){return e===`overview`||e===`keys`?null:ck[e]??null}function JN({apiBase:e,machineApiBase:t=e,connected:n=!1}){let r=O(),[i,a]=(0,Z.useState)(WN),[o,s]=(0,Z.useState)(()=>new Set([WN()])),c=(0,Z.useRef)(null),[l,u]=(0,Z.useState)([]),[d,f]=(0,Z.useState)(!1);c.current===null&&(c.current=new Map),(0,Z.useEffect)(()=>{if(!n)return;let e=new AbortController;return fetch(`${t}/api/machine/clients`,{signal:e.signal}).then(e=>e.ok?e.json():null).then(t=>{!e.signal.aborted&&Array.isArray(t?.selectedClients)&&u(t.selectedClients.filter(e=>typeof e==`string`))}).catch(()=>{}),()=>e.abort()},[n,t]);let p=async()=>{f(!0);try{await fetch(`${t}/api/machine/sync`,{method:`POST`,headers:{"Content-Type":`application/json`},body:`{}`})}finally{f(!1)}},m=e=>{a(e),s(t=>t.has(e)?t:new Set([...t,e]))};(0,Z.useEffect)(()=>{let e=()=>m(WN());return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[]);let h=(e,t)=>{let n=HN.find(t=>t.id===e);n&&(qt(n.hash),m(e),t&&window.requestAnimationFrame(()=>{c.current.get(e)?.focus({preventScroll:!0})}))},g=e=>{let t=HN.findIndex(e=>e.id===i),n=null;e.key===`ArrowLeft`?n=(t-1+HN.length)%HN.length:e.key===`ArrowRight`?n=(t+1)%HN.length:e.key===`Home`?n=0:e.key===`End`&&(n=HN.length-1),n!==null&&(e.preventDefault(),h(HN[n].id,!0))};return(0,Q.jsxs)(`section`,{className:`integrations-page`,children:[(0,Q.jsx)(`div`,{className:`page-head`,children:(0,Q.jsx)(`h2`,{children:r(`nav.connect`)})}),(0,Q.jsx)(`p`,{className:`page-sub`,children:r(`integrations.subtitle`)}),n&&(0,Q.jsxs)(`section`,{className:`notice`,"aria-label":r(`connection.clients.title`),children:[(0,Q.jsx)(`strong`,{children:r(`connection.clients.title`)}),(0,Q.jsx)(`span`,{children:l.length>0?l.join(`, `):r(`connection.clients.none`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:d,onClick:()=>void p(),children:r(d?`connection.clients.syncing`:`connection.clients.sync`)})]}),(0,Q.jsx)(`div`,{className:`page-tabs`,role:`tablist`,"aria-label":r(`integrations.tabsLabel`),children:HN.map(e=>(0,Q.jsxs)(`button`,{ref:t=>{t?c.current.set(e.id,t):c.current.delete(e.id)},type:`button`,role:`tab`,id:GN(e.id),"aria-selected":i===e.id,"aria-controls":KN(e.id),tabIndex:i===e.id?0:-1,className:`page-tab${i===e.id?` page-tab--active`:``}`,onClick:()=>h(e.id,!0),onKeyDown:g,children:[e.id!==`overview`&&e.id!==`keys`&&(0,Q.jsx)(fk,{src:qN(e.id),label:r(e.labelKey),size:14}),r(e.labelKey)]},e.id))}),HN.map(t=>{if(!o.has(t.id))return null;let n=i===t.id;return(0,Q.jsxs)(`div`,{role:`tabpanel`,id:KN(t.id),"aria-labelledby":GN(t.id),hidden:!n,children:[t.id===`overview`&&(0,Q.jsx)(bN,{apiBase:e,active:n}),t.id===`keys`&&(0,Q.jsx)(RA,{apiBase:e,active:n}),t.id===`codex`&&(0,Q.jsxs)(`section`,{className:`integration-native-page`,"aria-labelledby":`codex-integration-title`,children:[(0,Q.jsx)(`h3`,{id:`codex-integration-title`,children:r(`integrations.codex.title`)}),(0,Q.jsx)(`p`,{children:r(`integrations.codex.body`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>qt(`startup`),children:r(`integrations.codex.openService`)})]}),t.id===`grok`&&(0,Q.jsx)(OM,{apiBase:e,active:n}),t.id===`claude`&&(0,Q.jsx)(Uj,{apiBase:e,active:n,embedded:!0}),t.id===`claudeDesktop`&&(0,Q.jsx)(`div`,{className:`claude-page claude-page--embedded`,children:(0,Q.jsx)(SM,{apiBase:e,active:n},e)}),t.id===`cursor`&&(0,Q.jsx)(PM,{apiBase:e,active:n}),UN.has(t.id)&&(t.id===`aside`?(0,Q.jsx)(LN,{apiBase:e,active:n}):(0,Q.jsx)(kN,{apiBase:e,client:t.id,active:n})),t.id===`omo`&&(0,Q.jsx)(VN,{apiBase:e,active:n})]},t.id)})]})}function YN(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.supported==`boolean`&&typeof t.installed==`boolean`&&typeof t.running==`boolean`&&typeof t.stale==`boolean`&&typeof t.summary==`string`}var XN={native:`startup.status.native`,protected:`startup.status.protected`,"at-risk":`startup.status.atRisk`},ZN={native:`startup.summary.native`,protected:`startup.summary.protected`,"at-risk":`startup.summary.atRisk`},QN={desktop:`startup.protection.desktop`,service:`startup.protection.service`,shim:`startup.protection.shim`,none:`startup.protection.none`};function $N({ok:e,yes:t,no:n}){return(0,Q.jsx)(`span`,{className:`badge ${e?`badge-green`:`badge-amber`}`,children:e?t:n})}function eP({failed:e,data:n}){let{t:r}=t(),i=e?`startup-hero--risk`:n.status===`protected`?`startup-hero--safe`:n.status===`at-risk`?`startup-hero--risk`:`startup-hero--native`,a=e||n.status===`at-risk`?Ae:Te,o=n.routingKind===`opencodex-local`?`startup.routing.proxy`:n.routingKind===`custom-local`?`startup.routing.customLocal`:n.routingKind===`custom-remote`?`startup.routing.customRemote`:n.routingKind===`unknown`?`startup.routing.unknown`:`startup.routing.native`;return(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsxs)(`section`,{className:`panel startup-hero ${i}`,"aria-live":`polite`,children:[(0,Q.jsx)(`div`,{className:`startup-hero-icon`,children:(0,Q.jsx)(a,{})}),(0,Q.jsxs)(`div`,{className:`startup-hero-copy`,children:[(0,Q.jsx)(`span`,{className:`badge ${e||n.status===`at-risk`?`badge-amber`:`badge-green`}`,children:r(e?`startup.status.atRisk`:XN[n.status])}),(0,Q.jsx)(`h3`,{children:r(e?`startup.error`:ZN[n.status])}),(0,Q.jsx)(`p`,{children:e?r(`startup.staleData`):n.status===`at-risk`?r(uo(n)):r(`startup.safeDetail`)}),(0,Q.jsxs)(`p`,{className:`muted startup-state-line`,children:[r(o),` · `,r(QN[n.protection]),` · `,r(n.autostartEnabled?`startup.enabled`:`startup.disabled`)]}),(0,Q.jsx)(`p`,{className:`muted text-label`,children:r(`startup.subtitle`)})]})]})})}function tP({data:e,failed:n,loading:r=!1,installBusy:i,installResult:a,onInstall:o}){let{t:s}=t(),c=e.serviceSupported&&e.serviceInstalled&&e.serviceStale&&!e.serviceConflict,l=e.shimInstalled&&!e.shimHealthy&&e.shimActivationPending===!0,u=e.shimInstalled&&!e.shimHealthy&&!l,d=i!==null||n||r,f=d||co(e);return(0,Q.jsxs)(`section`,{className:`panel startup-details`,children:[(0,Q.jsxs)(`div`,{className:`panel-head`,children:[(0,Q.jsx)(`h3`,{className:`panel-title`,children:s(`startup.details`)}),(0,Q.jsx)(`span`,{className:`muted mono`,children:e.platform})]}),e.desktop&&(0,Q.jsxs)(`div`,{className:`startup-detail-row`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`strong`,{children:s(`startup.protection.desktop`)}),(0,Q.jsx)(`span`,{children:s(!n&&e.desktop.viable?`startup.desktopHint`:uo(e))})]}),(0,Q.jsx)(`div`,{className:`startup-detail-actions`,children:(0,Q.jsx)($N,{ok:!n&&e.desktop.viable,yes:s(`startup.viable`),no:s(lo(e.desktop,n))})})]}),(0,Q.jsxs)(`div`,{className:`startup-detail-row`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`strong`,{children:s(`startup.service`)}),(0,Q.jsx)(`span`,{children:s(`startup.serviceHint`)})]}),(0,Q.jsxs)(`div`,{className:`startup-detail-actions`,children:[(0,Q.jsx)($N,{ok:e.serviceViable,yes:s(`startup.viable`),no:s(e.serviceConflict?`startup.conflict`:e.serviceStale?`startup.stale`:e.serviceInstalled?`startup.unhealthy`:e.serviceSupported?`startup.notInstalled`:`startup.unsupported`)}),e.serviceSupported&&!e.serviceInstalled&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,"aria-label":`${s(`startup.service`)} - ${s(`startup.install`)}`,disabled:f,onClick:()=>o(`install-service`),children:s(i===`install-service`?`startup.installing`:`startup.install`)}),c&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,"aria-label":`${s(`startup.service`)} - ${s(`startup.repair`)}`,disabled:f,onClick:()=>o(`install-service`,{repair:!0}),children:s(i===`install-service`?`startup.repairing`:`startup.repair`)})]})]}),(0,Q.jsxs)(`div`,{className:`startup-detail-row`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`strong`,{children:s(`startup.shim`)}),(0,Q.jsx)(`span`,{children:s(l?`startup.shimActivationHint`:`startup.shimHint`)})]}),(0,Q.jsxs)(`div`,{className:`startup-detail-actions`,children:[(0,Q.jsx)($N,{ok:e.shimHealthy&&e.autostartEnabled,yes:s(e.shimCoverage===`cli-only`?`startup.cliOnly`:`startup.healthy`),no:s(e.shimInstalled?e.shimHealthy&&!e.autostartEnabled?`startup.installedDisabled`:l?`startup.shimActivationPending`:`startup.stale`:`startup.notInstalled`)}),!e.shimInstalled&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,"aria-label":`${s(`startup.shim`)} - ${s(`startup.install`)}`,disabled:d,onClick:()=>o(`install-shim`),children:s(i===`install-shim`?`startup.installing`:`startup.install`)}),u&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,"aria-label":`${s(`startup.shim`)} - ${s(`startup.repair`)}`,disabled:d,onClick:()=>o(`install-shim`,{repair:!0}),children:s(i===`install-shim`?`startup.repairing`:`startup.repair`)})]})]}),a&&(0,Q.jsx)(`div`,{className:`notice ${a.kind===`success`?`notice-ok`:`notice-warn`} startup-action-notice`,role:`status`,"aria-live":`polite`,children:a.kind===`success`?a.action===`install-service`?s(a.repair?`startup.serviceRepaired`:`startup.serviceInstalled`):s(a.repair?`startup.shimRepaired`:`startup.shimInstalled`):`${s(`startup.installFailed`)} ${a.detail??``}`})]})}function nP({tray:e,trayLoading:n,trayError:r,trayBusy:i,onTrayAction:a}){let{t:o}=t(),s=async()=>{await aa({message:o(`startup.tray.uninstall`),tone:`danger`})&&a(`uninstall`)};return(0,Q.jsxs)(`section`,{className:`panel startup-actions`,children:[(0,Q.jsxs)(`div`,{className:`panel-head`,children:[(0,Q.jsx)(`h3`,{className:`panel-title`,children:o(`startup.tray.title`)}),(0,Q.jsx)(Re,{})]}),(0,Q.jsx)(`p`,{className:`muted`,children:o(`startup.tray.hint`)}),(0,Q.jsxs)(`div`,{className:`startup-detail-row`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`strong`,{children:o(`startup.tray.login`)}),(0,Q.jsx)(`span`,{children:o(`startup.tray.notProtection`)})]}),n||r||!e?(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:o(n?`startup.tray.loading`:`startup.tray.unavailable`)}):(0,Q.jsx)($N,{ok:e.running&&!e.stale,yes:o(`startup.tray.running`),no:o(e.stale?`startup.tray.stale`:e.installed?`startup.tray.stopped`:`startup.tray.notInstalled`)})]}),(0,Q.jsxs)(`div`,{className:`startup-tray-buttons`,children:[!n&&!r&&e&&!e.installed&&!e.stale&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:i,onClick:()=>a(`install`),children:o(`startup.tray.install`)}),!n&&!r&&e?.installed&&!e.stale&&!e.running&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:i,onClick:()=>a(`start`),children:o(`startup.tray.start`)}),!n&&!r&&e?.running&&!e.stale&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:i,onClick:()=>a(`stop`),children:o(`startup.tray.stop`)}),!n&&!r&&e&&(e.installed||e.stale)&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-danger`,disabled:i,onClick:()=>{s()},children:o(`startup.tray.uninstall`)})]}),(r||e?.stale)&&(0,Q.jsx)(`div`,{className:`notice notice-warn startup-tray-error`,role:`alert`,children:o(`startup.tray.error`)})]})}function rP({data:e,copied:n,onCopy:r}){let{t:i}=t(),a=e.serviceInstalled&&!e.serviceConflict?e.commands.repairService:e.commands.installService;return(0,Q.jsxs)(`section`,{className:`panel startup-actions`,children:[(0,Q.jsxs)(`div`,{className:`panel-head`,children:[(0,Q.jsx)(`h3`,{className:`panel-title`,children:i(`startup.recovery`)}),(0,Q.jsx)(de,{})]}),(0,Q.jsxs)(`details`,{className:`startup-recovery-details`,open:e.status!==`protected`,children:[(0,Q.jsx)(`summary`,{className:`muted`,children:i(co(e)?`startup.protection.desktop`:`startup.recoveryHint`)}),co(e)&&(0,Q.jsx)(`p`,{className:`muted`,children:i(uo(e))}),(0,Q.jsxs)(`div`,{className:`startup-command-list`,children:[e.serviceSupported&&!co(e)&&(0,Q.jsxs)(`div`,{className:`startup-command-row`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`strong`,{children:i(`startup.command.service`)}),(0,Q.jsx)(`code`,{children:a})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>r(a),children:i(n===a?`startup.copied`:`startup.copy`)})]}),(0,Q.jsxs)(`div`,{className:`startup-command-row`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`strong`,{children:i(`startup.command.shim`)}),(0,Q.jsx)(`code`,{children:e.commands.installShim})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>r(e.commands.installShim),children:n===e.commands.installShim?i(`startup.copied`):i(`startup.copy`)})]}),(0,Q.jsxs)(`div`,{className:`startup-command-row`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`strong`,{children:i(`startup.command.native`)}),(0,Q.jsx)(`code`,{children:e.commands.restoreNative})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>r(e.commands.restoreNative),children:n===e.commands.restoreNative?i(`startup.copied`):i(`startup.copy`)})]})]}),e.status===`at-risk`&&e.recommendedCommand&&!co(e)&&(0,Q.jsxs)(`div`,{className:`notice notice-warn startup-action-notice`,role:`alert`,children:[(0,Q.jsx)(Re,{}),` `,i(`startup.recommended`,{cmd:e.recommendedCommand})]})]})]})}var iP=`ocx.startup.page.v1:`;function aP(e,t){let n=t===`win32`?`; `:` && `;return e.join(n)}function oP(e,t,n){if(!e)return{warning:null,fix:null};let r=!!e.catalogClamp?.active,i=!!e.newerAvailable,a=(r?e.catalogClamp?.runtimeVersion:e.version)??e.version??`unknown`,o=(e.catalogClamp?.removedEfforts??[]).join(`, `),s=aP([`ocx doctor --fix-codex-runtime`,`ocx sync`],n);return r?{warning:o?t(`startup.codexRuntime.clampHiddenWithEfforts`,{version:a,efforts:o}):t(`startup.codexRuntime.clampHidden`,{version:a}),fix:i?s:`ocx sync`}:i?{warning:t(`startup.codexRuntime.olderBinary`,{version:a}),fix:s}:{warning:null,fix:null}}function sP({apiBase:e,machineApiBase:n=e,connected:r=!1}){let{t:i}=t(),a=`${iP}${e}`,o=(0,Z.useMemo)(()=>Ua(a),[a]),s=`startup-page:${e}`,[c,l]=(0,Z.useState)(null),[u,d]=(0,Z.useState)(()=>o?.tray??null),[f,p]=(0,Z.useState)(()=>!o?.data),[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(!1),[v,y]=(0,Z.useState)(null),[b,x]=(0,Z.useState)(null),[S,C]=(0,Z.useState)(()=>o?.warning??null),[w,T]=(0,Z.useState)(()=>o?.fix??null),[E,D]=(0,Z.useState)(()=>!o?.data),O=(0,Z.useRef)(!!o?.data),k=(0,Z.useRef)(0),[A,j]=(0,Z.useState)(null),[M,N]=(0,Z.useState)(!1);(0,Z.useEffect)(()=>{if(!r)return;let e=new AbortController;return fetch(`${n}/api/machine/shim`,{signal:e.signal}).then(e=>e.ok?e.json():null).then(t=>{e.signal.aborted||j(t)}).catch(()=>{e.signal.aborted||j(null)}),()=>e.abort()},[r,n]);let P=async e=>{N(!0);try{let t=await fetch(`${n}/api/machine/shim`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:e})});if(t.ok){let e=await t.json();j(e.shim??null)}}finally{N(!1)}};(0,Z.useEffect)(()=>()=>{k.current+=1},[e]);let F=(0,Z.useCallback)(async t=>{let n=++k.current,r=O.current;r||(p(!0),D(!0));try{let r=fetch(`${e}/api/settings`,{signal:t}).then(async e=>e.ok?await e.json():null).catch(()=>null),o=await fetch(`${e}/api/startup-health`,{signal:t});if(!o.ok)throw Error(`fetch failed`);let s=await o.json();x(e=>e?.kind===`error`&&(s.status===`native`&&e.forLocalRouting===!0||(e.action===`install-service`?s.serviceViable:s.shimInstalled&&(s.shimHealthy||s.shimActivationPending===!0)))?null:e),O.current=!0;let c=Ua(a);qa(a,{data:s,warning:c?.warning??null,fix:c?.fix??null,tray:c?.tray??null});let l=s.platform===`win32`?fetch(`${e}/api/windows-tray`,{signal:t}).then(async e=>{if(!e.ok)throw Error(`tray status failed`);let t=await e.json();if(!YN(t))throw Error(`invalid tray status`);return{tray:t,error:!1}}).catch(()=>({tray:null,error:!0})):Promise.resolve({tray:null,error:!1});return Promise.all([r,l]).then(([e,r])=>{if(t.aborted||n!==k.current)return;let o=s.platform===`win32`?r.tray:null;if(s.platform===`win32`?(d(o),_(r.error)):(d(null),_(!1)),p(!1),D(!1),e){let t=oP(e.codexRuntime,i,s.platform);C(t.warning),T(t.fix),qa(a,{data:s,warning:t.warning,fix:t.fix,tray:o});return}let c=Ua(a);qa(a,{data:s,warning:c?.warning??null,fix:c?.fix??null,tray:o})}),s}catch(e){throw t.aborted?e:(r||(d(null),_(!0),C(null),T(null)),D(!1),p(!1),e)}},[e,a,i]),I=Ya(s,[e],F,{isEmpty:()=>!1,initialData:o?.data??void 0}),L=I.state,R=I.refresh,z=L.data??o?.data??null,B=L.refreshing,V=!!z?.diagnosticStale||L.showError;(0,Z.useEffect)(()=>{if(!z?.diagnosticStale)return;let e=window.setTimeout(R,2e3);return()=>window.clearTimeout(e)},[z,R]);let H=async e=>{try{await navigator.clipboard.writeText(e),l(e),window.setTimeout(()=>l(t=>t===e?null:t),1600)}catch{l(null)}},U=async t=>{h(!0),_(!1);try{let n=await fetch(`${e}/api/windows-tray`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:t})});if(!n.ok)throw Error(`tray action failed`);let r=await n.json();if(!YN(r.status))throw Error(`invalid tray action status`);d(r.status),_(!1)}catch{d(null),_(!0)}finally{h(!1)}},W=async(t,n)=>{y(t),x(null);try{let r=await fetch(`${e}/api/startup-action`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:t,repair:n?.repair===!0})});if(!r.ok){let e=await r.json().catch(()=>null);throw Error(typeof e?.error==`string`?e.error:`installation failed`)}x({kind:`success`,action:t,repair:n?.repair===!0}),R()}catch(e){x({kind:`error`,action:t,repair:n?.repair===!0,detail:e instanceof Error?e.message:String(e),forLocalRouting:z?.localRoutingDependency===!0})}finally{y(null)}};return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`page-head`,children:[(0,Q.jsx)(`h2`,{children:i(`startup.title`)}),(0,Q.jsx)(`div`,{className:`startup-page-head-actions`,children:(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>R(),disabled:B,children:[(0,Q.jsx)(re,{}),` `,i(`startup.refresh`)]})})]}),r&&(0,Q.jsxs)(`section`,{className:`notice startup-page-notice`,"aria-label":i(`connection.machine.title`),children:[(0,Q.jsx)(`strong`,{children:i(`connection.machine.title`)}),(0,Q.jsx)(`span`,{children:A?.healthy?i(`connection.machine.shimHealthy`):i(`connection.machine.shimNeedsAttention`)}),(0,Q.jsxs)(`div`,{className:`startup-page-head-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:M,onClick:()=>void P(`repair`),children:i(`connection.machine.repairShim`)}),A?.installed&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:M,onClick:()=>void P(`uninstall`),children:i(`connection.machine.removeShim`)})]})]}),L.showSkeleton&&!z?(0,Q.jsx)(Ry,{label:i(`startup.loading`),rows:5}):L.kind===`failed-cold`?(0,Q.jsxs)(`div`,{className:`startup-page-notice`,children:[(0,Q.jsx)($,{tone:`err`,children:L.error instanceof Error?L.error.message:i(`startup.error`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>R(),children:i(`common.retry`)})]}):z?(0,Q.jsxs)(Q.Fragment,{children:[L.showError&&(0,Q.jsx)($,{tone:`err`,children:i(`startup.error`)}),V&&(0,Q.jsx)(`div`,{className:`notice notice-warn startup-page-notice`,role:`alert`,children:i(`startup.staleData`)}),(E||S)&&(0,Q.jsx)(`div`,{className:`startup-runtime-notice-slot${E&&!S?` startup-runtime-notice-slot--pending`:``}`,"aria-hidden":E&&!S?!0:void 0,children:S&&(0,Q.jsxs)(`div`,{className:`notice notice-warn startup-page-notice startup-runtime-notice`,role:`status`,children:[(0,Q.jsx)(`p`,{className:`startup-runtime-notice__text`,children:S}),w&&(0,Q.jsxs)(`div`,{className:`startup-runtime-notice__fix`,children:[(0,Q.jsx)(`code`,{children:w}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void H(w),children:i(c===w?`startup.copied`:`startup.copy`)})]})]})}),(0,Q.jsx)(eP,{failed:V,data:z}),(0,Q.jsx)(tP,{data:z,failed:V,loading:B,installBusy:v,installResult:b,onInstall:(e,t)=>{W(e,t)}}),z.platform===`win32`&&(0,Q.jsx)(nP,{tray:u,trayLoading:f,trayError:g,trayBusy:m,onTrayAction:e=>{U(e)}}),(0,Q.jsx)(rP,{data:z,copied:c,onCopy:e=>{H(e)}})]}):null]})}function cP(e){return`'${e.replace(/'/g,`'"'"'`)}'`}function lP(e){return`'${e.replace(/'/g,`''`)}'`}function uP(e,t){return{posix:`printf '%s\\n' ${cP(e)} | ocx remote-workspace pair ${cP(t)} --pairing-code-stdin --root "$PWD" && ocx remote-workspace agent`,powershell:`$pairingCode = ${lP(e)}; $pairingCode | ocx remote-workspace pair ${lP(t)} --pairing-code-stdin --root (Get-Location).Path; if ($LASTEXITCODE -eq 0) { ocx remote-workspace agent }`}}var dP=[`codex`,`claude`,`pi`],fP={codex:`Codex`,claude:`Claude Code`,pi:`Pi`},pP={starting:`remote.status.starting`,ready:`remote.status.ready`,running:`remote.status.running`,waiting_for_executor:`remote.status.waiting`,failed:`remote.status.failed`,stopped:`remote.status.stopped`},mP={status:`remote.event.status`,tool:`remote.event.tool`,error:`remote.event.error`},hP=8,gP=e=>e?e.type===`pane`?[e.sessionId]:[...gP(e.first),...gP(e.second)]:[],_P=e=>({type:`pane`,sessionId:e});function vP(e){if(e.type===`pane`)return 260;let t=vP(e.first),n=vP(e.second);return e.axis===`row`?t+hP+n:Math.max(t,n)}function yP(e,t){if(!e)return null;if(e.type===`pane`)return e.sessionId===t?null:e;let n=yP(e.first,t),r=yP(e.second,t);return n?r?n===e.first&&r===e.second?e:{...e,first:n,second:r}:n:r}function bP(e,t,n){return e.type===`pane`?e.sessionId===t?n:e:{...e,first:bP(e.first,t,n),second:bP(e.second,t,n)}}function xP(e,t,n){return e?gP(e).includes(t)?e:bP(e,gP(e).includes(n)?n:gP(e)[0],_P(t)):_P(t)}function SP(e,t,n,r){if(!e)return _P(t);let i=gP(e);if(t===n||!i.includes(n)||i.length>=4&&!i.includes(t))return e;let a=yP(e,t),o=r===`left`||r===`up`,s=new Set,c=e=>{e.type!==`pane`&&(s.add(e.id),c(e.first),c(e.second))};c(a);let l=1;for(;s.has(`split-${l}`);)l++;return bP(a,n,{type:`split`,id:`split-${l}`,axis:r===`left`||r===`right`?`row`:`column`,ratio:.5,first:_P(o?t:n),second:_P(o?n:t)})}function CP(e,t,n){return e.type===`pane`?e:e.id===t?{...e,ratio:Math.min(.8,Math.max(.2,n))}:{...e,first:CP(e.first,t,n),second:CP(e.second,t,n)}}function wP(e,t,n){let r=new Set(t),i=e;for(let t of gP(e))r.has(t)||(i=yP(i,t));return i??(n&&r.has(n)?_P(n):t.length?_P(t[t.length-1]):null)}function TP(e){if(!e||e.length>8192)return null;let t=new Set,n=new Set;function r(e,i){if(!e||typeof e!=`object`||i>4)return null;let a=e;if(a.type===`pane`&&typeof a.sessionId==`string`&&a.sessionId.length>0&&a.sessionId.length<200&&!t.has(a.sessionId))return t.add(a.sessionId),t.size<=4?_P(a.sessionId):null;if(a.type!==`split`||typeof a.id!=`string`||a.id.length>400||a.axis!==`row`&&a.axis!==`column`||typeof a.ratio!=`number`||!Number.isFinite(a.ratio)||n.has(a.id))return null;n.add(a.id);let o=r(a.first,i+1),s=r(a.second,i+1);return o&&s?{type:`split`,id:a.id,axis:a.axis,ratio:Math.min(.8,Math.max(.2,a.ratio)),first:o,second:s}:null}try{return r(JSON.parse(e),0)}catch{return null}}function EP(e,t,n,r,i){let a=O(),[o,s]=(0,Z.useState)({}),[c,l]=(0,Z.useState)({}),[u,d]=(0,Z.useState)({}),[f,p]=(0,Z.useState)({}),m=(0,Z.useRef)(new Set),h=(0,Z.useRef)(new Set),g=(0,Z.useRef)(new Set),_=t.map(e=>{let t=c[e.id];return t?.status===`stopped`?{...e,status:`stopped`}:t&&(t.events.at(-1)?.sequence??0)>(e.events.at(-1)?.sequence??0)?t:e}),v=(e,t)=>s(n=>({...n,[e]:t})),y=(e,t)=>p(n=>({...n,[e]:t})),b=(e,t,n)=>d(r=>({...r,[e]:{...r[e],[t]:n}})),x=e=>!!((o[e.id]??``).trim()&&!u[e.id]?.prompt&&!u[e.id]?.stop&&!r&&e.status!==`running`&&e.status!==`starting`&&e.status!==`stopped`&&(e.status!==`failed`||e.resumable!==!1)&&!(e.status===`waiting_for_executor`&&!n.find(t=>t.id===e.deviceId)?.online));return{sessions:_,drafts:o,setDraft:v,pending:u,errors:f,canSend:x,send:async t=>{let n=t.id;if(!x(t)||h.current.has(n)||g.current.has(n))return;let r=o[n]??``;h.current.add(n),b(n,`prompt`,!0),y(n,``);let c;try{let t=await fetch(`${e}/api/remote-workspace/sessions/${n}/prompt`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({prompt:r})});c=t.status;let o=await hn(t,a(`remote.requestFailed`));if(!o)throw Error(a(`remote.requestFailed`));s(e=>e[n]===r?{...e,[n]:``}:e),m.current.has(n)||l(e=>({...e,[n]:o})),i()}catch(e){m.current.has(n)||(y(n,c!==void 0&&c>=400&&c<500?e instanceof Error?e.message:a(`remote.requestFailed`):a(`remote.submissionUnknown`)),i())}finally{h.current.delete(n),b(n,`prompt`,!1)}},stop:async t=>{let n=t.id;if(!(g.current.has(n)||t.status===`stopped`)){g.current.add(n),b(n,`stop`,!0);try{await hn(await fetch(`${e}/api/remote-workspace/sessions/${n}`,{method:`DELETE`}),a(`remote.requestFailed`)),m.current.add(n),l(e=>({...e,[n]:{...t,status:`stopped`}})),i()}catch(e){y(n,e instanceof Error?e.message:a(`remote.requestFailed`))}finally{g.current.delete(n),b(n,`stop`,!1)}}}}}var DP=`application/x-opencodex-session`,OP=[`left`,`right`,`up`,`down`],kP=e=>e.type===`split`?vP(e):0;function AP({node:e,renderPane:t,resize:n}){let r=O(),i=(0,Z.useRef)(null),a=(0,Z.useRef)(!1);if(e.type===`pane`)return t(e.sessionId);let o={"--split-ratio":e.ratio,"--split-min-width":vP(e),"--split-first-min":kP(e.first),"--split-second-min":kP(e.second)};return(0,Q.jsxs)(`div`,{ref:i,className:`remote-split-branch remote-split-branch--${e.axis}`,style:o,children:[(0,Q.jsx)(`div`,{className:`remote-split-child`,children:(0,Q.jsx)(AP,{node:e.first,renderPane:t,resize:n})}),(0,Q.jsx)(`div`,{role:`separator`,tabIndex:0,className:`remote-split-divider`,"aria-label":r(`remote.split.resize`),"aria-orientation":e.axis===`row`?`vertical`:`horizontal`,"aria-valuemin":20,"aria-valuemax":80,"aria-valuenow":Math.round(e.ratio*100),onPointerDown:e=>{e.button===0&&(e.preventDefault(),e.currentTarget.focus(),a.current=!0,e.currentTarget.setPointerCapture(e.pointerId))},onPointerMove:t=>{if(!a.current||!i.current)return;let r=i.current.getBoundingClientRect(),o=e.axis===`row`?r.width:r.height;o>0&&n(e.id,(e.axis===`row`?t.clientX-r.left:t.clientY-r.top)/o)},onPointerUp:e=>{a.current=!1,e.currentTarget.hasPointerCapture(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId)},onPointerCancel:()=>{a.current=!1},onLostPointerCapture:()=>{a.current=!1},onKeyDown:t=>{let r=e.axis===`row`?`ArrowLeft`:`ArrowUp`;[r,e.axis===`row`?`ArrowRight`:`ArrowDown`,`Home`,`End`].includes(t.key)&&(t.preventDefault(),n(e.id,t.key===`Home`?.2:t.key===`End`?.8:e.ratio+(t.key===r?-.05:.05)))}}),(0,Q.jsx)(`div`,{className:`remote-split-child`,children:(0,Q.jsx)(AP,{node:e.second,renderPane:t,resize:n})})]})}function jP({apiBase:e,sessions:t,devices:n,selectedSessionId:r,stale:i,refresh:a}){let o=O(),s=`ocx-remote-workspace-layout:${e}`,[c,l]=(0,Z.useState)(()=>{try{return TP(localStorage.getItem(s))}catch{return null}}),[u,d]=(0,Z.useState)(``),[f,p]=(0,Z.useState)(null),[m,h]=(0,Z.useState)(null),[g,_]=(0,Z.useState)(null),[v,y]=(0,Z.useState)(r),b=(0,Z.useRef)(null),x=EP(e,t,n,i,a),S=x.sessions.map(e=>e.id),C=wP(c,S,[...x.sessions].reverse().find(e=>e.status!==`stopped`)?.id??S.at(-1)),w=gP(C),T=w.includes(u)?u:w[0]??``;v===r?c!==C&&l(C):(y(r),r&&S.includes(r)&&(l(xP(C,r,T)),d(r))),(0,Z.useEffect)(()=>{try{localStorage.setItem(s,JSON.stringify(C))}catch{}},[C,s]),(0,Z.useEffect)(()=>{g&&[...b.current?.querySelectorAll(`[data-pane-heading]`)??[]].find(e=>e.dataset.paneHeading===g.id)?.focus()},[g]);let E=e=>{l(xP(C,e,T)),d(e)},D=(e,t,n)=>{if(!S.includes(e))return;let r=SP(C,e,t,n);l(r),gP(r).includes(e)&&d(e),p(null),h(null)},k=e=>{let t=yP(C,e),n=gP(t)[0]??``;l(t),d(n),_({id:n})},A=(e,t)=>{e.dataTransfer.setData(DP,t),e.dataTransfer.effectAllowed=`move`,p(t)},j=()=>{p(null),h(null)},M=(e,t)=>e!==t&&(w.includes(e)||w.length<4);return(0,Q.jsxs)(`section`,{ref:b,className:`remote-chats-workspace`,"aria-label":o(`remote.split.title`),children:[(0,Q.jsxs)(`div`,{className:`remote-chats-toolbar`,children:[(0,Q.jsx)(`h3`,{children:o(`remote.sessions`)}),(0,Q.jsx)(`p`,{children:o(`remote.split.hint`)})]}),(0,Q.jsxs)(`div`,{className:`remote-chats-layout`,children:[(0,Q.jsxs)(`aside`,{className:`remote-session-rail`,"aria-label":o(`remote.sessions`),children:[x.sessions.map(e=>(0,Q.jsxs)(`div`,{className:`remote-session-row${T===e.id?` is-active`:``}`,draggable:!0,onDragStart:t=>A(t,e.id),onDragEnd:j,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`remote-session-open`,"data-session-open":e.id,"aria-pressed":T===e.id,title:o(`remote.split.open`),onClick:()=>E(e.id),children:[(0,Q.jsx)(Fe,{}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsxs)(`strong`,{children:[fP[e.profile],` · `,e.rootLabel]}),(0,Q.jsxs)(`small`,{children:[e.deviceName,` · `,o(pP[e.status])]})]})]}),(0,Q.jsxs)(`div`,{className:`remote-session-split-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,title:o(`remote.split.right`),"aria-label":o(`remote.split.right`),disabled:!T||!M(e.id,T),onClick:()=>D(e.id,T,`right`),children:(0,Q.jsx)(Ke,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,title:o(`remote.split.down`),"aria-label":o(`remote.split.down`),disabled:!T||!M(e.id,T),onClick:()=>D(e.id,T,`down`),children:(0,Q.jsx)(Qe,{})})]})]},e.id)),w.length>=4?(0,Q.jsx)(`p`,{className:`remote-split-limit`,children:o(`remote.split.limit`)}):null]}),(0,Q.jsx)(`div`,{className:`remote-pane-surface`,children:C?(0,Q.jsx)(AP,{node:C,renderPane:e=>{let t=x.sessions.find(t=>t.id===e);if(!t)return null;let n=t.status===`stopped`||t.status===`failed`&&t.resumable===!1;return(0,Q.jsxs)(`section`,{className:`remote-chat-pane remote-console-panel${e===T?` is-active`:``}`,"data-session-id":e,"aria-label":`${fP[t.profile]} · ${t.deviceName}/${t.rootLabel}`,onFocusCapture:()=>d(e),onPointerDown:()=>d(e),children:[(0,Q.jsxs)(`header`,{className:`remote-chat-pane-head`,children:[(0,Q.jsxs)(`div`,{tabIndex:-1,"data-pane-heading":e,className:`remote-chat-pane-name`,draggable:!0,onDragStart:t=>A(t,e),onDragEnd:j,children:[(0,Q.jsx)(Fe,{}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`strong`,{children:fP[t.profile]}),(0,Q.jsxs)(`small`,{children:[t.deviceName,`/`,t.rootLabel]})]})]}),(0,Q.jsx)(`span`,{className:`remote-status remote-status--${t.status}`,children:o(pP[t.status])}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm remote-pane-close`,"aria-label":o(`remote.split.close`),title:o(`remote.split.close`),disabled:w.length===1,onClick:()=>k(e),children:(0,Q.jsx)(ve,{})})]}),(0,Q.jsx)(`small`,{className:`remote-chat-access`,children:t.accessMode===`read-only`?o(`remote.access.readOnly`):t.capabilities.includes(`workspace.exec`)?o(`remote.access.workspace`):o(`remote.access.workspaceFilesOnly`)}),(0,Q.jsx)(`div`,{className:`remote-events`,"aria-live":`polite`,"aria-label":o(`remote.events`),children:t.events.length===0?(0,Q.jsx)(`p`,{className:`remote-empty`,children:o(`remote.noEvents`)}):t.events.map(e=>(0,Q.jsxs)(`div`,{className:`remote-event remote-event--${e.type}`,children:[(0,Q.jsx)(`span`,{children:e.type===`assistant`?fP[t.profile]:o(mP[e.type])}),(0,Q.jsx)(`p`,{children:e.text})]},e.sequence))}),t.status===`failed`&&t.resumable===!1?(0,Q.jsx)($,{tone:`err`,children:o(`remote.notResumable`)}):null,x.errors[e]?(0,Q.jsx)($,{tone:`err`,children:x.errors[e]}):null,(0,Q.jsxs)(`label`,{className:`remote-composer`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:o(`remote.prompt`)}),(0,Q.jsx)(`textarea`,{className:`input`,rows:3,value:x.drafts[e]??``,onChange:t=>x.setDraft(e,t.target.value),placeholder:o(`remote.promptPlaceholder`),disabled:n,onKeyDown:e=>{(e.ctrlKey||e.metaKey)&&e.key===`Enter`&&(e.preventDefault(),x.send(t))}})]}),(0,Q.jsxs)(`div`,{className:`remote-console-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:!x.canSend(t),onClick:()=>void x.send(t),children:o(`remote.send`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-danger`,disabled:x.pending[e]?.stop||t.status===`stopped`,onClick:()=>void x.stop(t),children:o(`remote.stop`)})]}),f&&M(f,e)?(0,Q.jsx)(`div`,{className:`remote-pane-drop-targets`,children:OP.map(t=>(0,Q.jsx)(`div`,{className:`remote-pane-drop remote-pane-drop--${t}${m?.id===e&&m.edge===t?` is-over`:``}`,onDragOver:n=>{n.preventDefault(),n.dataTransfer.dropEffect=`move`,h({id:e,edge:t})},onDrop:n=>{n.preventDefault();let r=n.dataTransfer.getData(DP);r===f?D(r,e,t):j()},children:o(`remote.split.${t}`)},t))}):null]},e)},resize:(e,t)=>l(CP(C,e,t))}):(0,Q.jsx)(`p`,{className:`remote-empty remote-empty--console`,children:o(`remote.noSessions`)})})]})]})}function MP(e){return e===`codex`||e===`claude`||e===`pi`}function NP(e){return e===`read-only`||e===`workspace`}async function PP(e){try{return await navigator.clipboard.writeText(e),!0}catch{return!1}}function FP({apiBase:e,hubOrigin:t}){let n=O(),r=Vt(`remote-workspace:${e}`,[e],async t=>await hn(await fetch(`${e}/api/remote-workspace`,{signal:t,cache:`no-store`}),n(`remote.loadFailed`)),{pollMs:3e3,deadlineMs:1e4}),i=r.data,[a,o]=(0,Z.useState)(``),[s,c]=(0,Z.useState)(``),[l,u]=(0,Z.useState)(`codex`),[d,f]=(0,Z.useState)(`read-only`),[p,m]=(0,Z.useState)(``),[h,g]=(0,Z.useState)(null),[_,v]=(0,Z.useState)(null),[y,b]=(0,Z.useState)(null),[x,S]=(0,Z.useState)(null),[C,w]=(0,Z.useState)(null),T=i?.devices??[],E=T.find(e=>e.id===a)??T.find(e=>e.online)??T[0]??null,D=E?.roots.find(e=>e.id===s)??E?.roots[0]??null,k=d===`workspace`&&(E?.capabilities.includes(`workspace.exec`)??!1),A=E&&!E.capabilities.includes(`workspace.exec`)?n(`remote.access.workspaceFilesOnly`):n(`remote.access.workspace`),j=dP.filter(e=>i?.runtimes?.[e]?.available),M=j.includes(l)?l:j[0]??l,P=i?.sessions??[],I=h&&!P.some(e=>e.id===h.id)?[...P,h]:P;h&&i?.sessions.some(e=>e.id===h.id)&&g(null);let L=!!(i&&!r.lastAttemptOk),R=(0,Z.useMemo)(()=>_?uP(_.code,t):{posix:``,powershell:``},[_,t]),z=async(t,n,r)=>{let i=await hn(await fetch(`${e}${t}`,n),r);if(i===void 0)throw Error(r);return i},B=async()=>{b(`pair`),S(null);try{let e=await z(`/api/remote-workspace/pairing`,{method:`POST`},n(`remote.requestFailed`));v(e),w(null)}catch(e){S({tone:`err`,text:e instanceof Error?e.message:n(`remote.requestFailed`)})}finally{b(null)}},V=async()=>{if(!(!E||!D)){b(`session`),S(null);try{let e=await z(`/api/remote-workspace/sessions`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({profile:M,deviceId:E.id,rootId:D.id,accessMode:d})},n(`remote.requestFailed`));g(e),m(e.id),S({tone:`ok`,text:n(`remote.sessionStarted`)}),r.refresh()}catch(e){S({tone:`err`,text:e instanceof Error?e.message:n(`remote.requestFailed`)})}finally{b(null)}}},H=async e=>{if(await aa({message:n(`remote.revokeConfirm`,{name:e.name}),confirmLabel:n(`common.remove`),tone:`danger`})){b(`revoke`);try{await z(`/api/remote-workspace/devices/${e.id}`,{method:`DELETE`},n(`remote.requestFailed`)),a===e.id&&o(``),r.refresh()}catch(e){S({tone:`err`,text:e instanceof Error?e.message:n(`remote.requestFailed`)})}finally{b(null)}}},U=async(e,t)=>{w(await PP(t)?e:null)};return!i&&!r.error?(0,Q.jsx)(`div`,{className:`alert`,children:n(`remote.loading`)}):r.error&&!i?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)($,{tone:`err`,children:n(`remote.loadFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>void r.refresh(),children:n(`common.retry`)})]}):i?.available===!1?(0,Q.jsx)($,{tone:`err`,children:n(`remote.hubRequired`)}):(0,Q.jsxs)(`section`,{className:`remote-workspace-page`,children:[(0,Q.jsxs)(`div`,{className:`page-head`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h2`,{children:n(`remote.title`)}),(0,Q.jsx)(`p`,{className:`page-sub`,children:n(`remote.subtitle`)})]}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void r.refresh(),disabled:r.refreshing,children:[(0,Q.jsx)(re,{}),` `,n(`remote.refresh`)]})]}),L?(0,Q.jsx)($,{tone:`err`,children:n(`remote.loadFailed`)}):null,x?(0,Q.jsx)($,{tone:x.tone,children:x.text}):null,(0,Q.jsxs)(`div`,{className:`remote-workspace-grid`,children:[(0,Q.jsxs)(`div`,{className:`remote-workspace-column`,children:[(0,Q.jsxs)(`article`,{className:`panel panel-accent remote-pair-card`,children:[(0,Q.jsxs)(`div`,{className:`remote-panel-head`,children:[(0,Q.jsx)(`div`,{className:`remote-icon`,children:(0,Q.jsx)(st,{})}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{children:n(`remote.addComputer`)}),(0,Q.jsx)(`p`,{children:n(`remote.addComputerHint`)})]})]}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>void B(),disabled:y!==null,children:[(0,Q.jsx)(N,{}),` `,n(`remote.createPairing`)]}),_?(0,Q.jsxs)(`div`,{className:`remote-pairing-result`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:n(`remote.pairingCode`)}),(0,Q.jsx)(`div`,{className:`remote-pairing-code`,children:_.code}),(0,Q.jsx)(`div`,{className:`remote-expiry`,children:n(`remote.pairingExpires`,{time:new Date(_.expiresAt).toLocaleTimeString()})}),(0,Q.jsx)(`span`,{className:`field-label`,children:n(`remote.pairingCommandPosix`)}),(0,Q.jsx)(`pre`,{children:(0,Q.jsx)(`code`,{children:R.posix})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void U(`posix`,R.posix),children:n(C===`posix`?`remote.copied`:`remote.copyCommand`)}),(0,Q.jsx)(`span`,{className:`field-label`,children:n(`remote.pairingCommandWindows`)}),(0,Q.jsx)(`pre`,{children:(0,Q.jsx)(`code`,{children:R.powershell})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void U(`powershell`,R.powershell),children:n(C===`powershell`?`remote.copied`:`remote.copyCommand`)})]}):null]}),(0,Q.jsxs)(`section`,{className:`panel remote-device-panel`,children:[(0,Q.jsxs)(`div`,{className:`remote-section-title`,children:[(0,Q.jsx)(`h3`,{children:n(`remote.devices`)}),(0,Q.jsx)(`span`,{children:T.length})]}),T.length===0?(0,Q.jsx)(`p`,{className:`remote-empty`,children:n(`remote.noDevices`)}):(0,Q.jsx)(`div`,{className:`remote-device-list`,children:T.map(e=>(0,Q.jsxs)(`div`,{className:`remote-device${E?.id===e.id?` selected`:``}`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`remote-device-main`,onClick:()=>{o(e.id),c(e.roots[0]?.id??``)},"aria-pressed":E?.id===e.id,children:[(0,Q.jsx)(`span`,{className:`remote-online-dot${e.online?` online`:``}`}),(0,Q.jsxs)(`span`,{className:`remote-device-copy`,children:[(0,Q.jsx)(`strong`,{children:e.name}),(0,Q.jsxs)(`small`,{children:[e.platform,` · `,e.online?n(`remote.online`):n(`remote.offline`),` · `,e.capabilities.includes(`workspace.exec`)?n(`remote.capability.full`):n(`remote.capability.files`)]})]})]}),(0,Q.jsx)(`button`,{type:`button`,className:`remote-revoke`,"aria-label":n(`remote.revoke`),disabled:y!==null,onClick:()=>void H(e),children:(0,Q.jsx)(F,{})})]},e.id))})]})]}),(0,Q.jsx)(`div`,{className:`remote-workspace-column remote-session-column`,children:(0,Q.jsxs)(`section`,{className:`panel remote-launch-panel`,children:[(0,Q.jsxs)(`div`,{className:`remote-section-title`,children:[(0,Q.jsx)(`h3`,{children:n(`remote.newSession`)}),(0,Q.jsx)(rt,{})]}),(0,Q.jsxs)(`div`,{className:`remote-launch-fields`,children:[(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(`span`,{className:`field-label`,children:n(`remote.device`)}),(0,Q.jsx)(cn,{value:E?.id??``,options:T.map(e=>({value:e.id,label:e.name})),onChange:e=>{o(e),c(T.find(t=>t.id===e)?.roots[0]?.id??``)},label:n(`remote.device`),disabled:T.length===0})]}),(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(`span`,{className:`field-label`,children:n(`remote.folder`)}),(0,Q.jsx)(cn,{value:D?.id??``,options:(E?.roots??[]).map(e=>({value:e.id,label:e.label})),onChange:c,label:n(`remote.folder`),disabled:!E})]}),(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(`span`,{className:`field-label`,children:n(`remote.runtime`)}),(0,Q.jsx)(cn,{value:M,options:dP.map(e=>({value:e,label:i?.runtimes?.[e]?.available?fP[e]:`${fP[e]} · ${n(`remote.unavailable`)}`})),onChange:e=>{MP(e)&&u(e)},label:n(`remote.runtime`)})]}),(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(`span`,{className:`field-label`,children:n(`remote.access`)}),(0,Q.jsx)(cn,{value:d,options:[{value:`read-only`,label:n(`remote.access.readOnly`)},{value:`workspace`,label:A}],onChange:e=>{NP(e)&&f(e)},label:n(`remote.access`)})]})]}),E?(0,Q.jsxs)(`div`,{className:`remote-execution-map`,children:[(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`strong`,{children:fP[M]}),n(`remote.runsOnHub`)]}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`strong`,{children:E.name}),n(d===`read-only`?`remote.runsReadOnly`:k?`remote.runsFilesCommands`:`remote.runsFilesOnly`)]})]}):null,d===`workspace`&&!k&&E?(0,Q.jsx)($,{tone:`err`,children:n(`remote.execUnavailable`)}):null,!i?.runtimes?.[M]?.available&&i?.runtimes?.[M]?.reason?(0,Q.jsx)(`p`,{className:`remote-runtime-reason`,children:i.runtimes[M].reason}):null,(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-primary remote-start`,onClick:()=>void V(),disabled:!E?.online||!D||!i?.runtimes?.[M]?.available||y!==null,children:[(0,Q.jsx)(de,{}),` `,n(`remote.startSession`)]})]})})]}),(0,Q.jsx)(jP,{apiBase:e,sessions:I,devices:T,selectedSessionId:p,stale:L,refresh:r.refresh},e)]})}function IP(){window.location.reload()}var LP={connecting:`remoteLink.status.connecting`,connected:`remoteLink.status.connected`,reconnecting:`remoteLink.status.reconnecting`,failed:`remoteLink.status.failed`,idle:`remoteLink.status.idle`},RP={admission_failed:`remoteLink.error.admission_failed`,admission_timeout:`remoteLink.error.admission_timeout`,compensation_failed:`remoteLink.error.compensation_failed`,fingerprint_failed:`remoteLink.error.fingerprint_failed`,forbidden:`remoteLink.error.forbidden`,host_confirmation_expired:`remoteLink.error.host_confirmation_expired`,host_fingerprint_mismatch:`remoteLink.error.host_fingerprint_mismatch`,host_not_confirmed:`remoteLink.error.host_not_confirmed`,invalid_alias:`remoteLink.error.invalid_alias`,invalid_body:`remoteLink.error.invalid_body`,invalid_link_id:`remoteLink.error.invalid_link_id`,join_connect_failed:`remoteLink.error.join_connect_failed`,join_in_progress:`remoteLink.error.join_in_progress`,join_issue_failed:`remoteLink.error.join_issue_failed`,join_port_failed:`remoteLink.error.join_port_failed`,join_port_mismatch:`remoteLink.error.join_port_mismatch`,join_restart_failed:`remoteLink.error.join_restart_failed`,join_rollback_failed:`remoteLink.error.join_rollback_failed`,join_tunnel_failed:`remoteLink.error.join_tunnel_failed`,key_issue_failed:`remoteLink.error.key_issue_failed`,key_revoke_failed:`remoteLink.error.key_revoke_failed`,link_apply_failed:`remoteLink.error.link_apply_failed`,link_exists:`remoteLink.error.link_exists`,link_not_found:`remoteLink.error.link_not_found`,link_not_home_initiated:`remoteLink.error.generic`,link_remove_failed:`remoteLink.error.link_remove_failed`,link_unavailable:`remoteLink.error.link_unavailable`,listener_unavailable:`remoteLink.error.listener_unavailable`,probe_failed:`remoteLink.error.probe_failed`,remote_connect_failed:`remoteLink.error.remote_connect_failed`,remote_disconnect_failed:`remoteLink.error.remote_disconnect_failed`,remote_ocx_missing:`remoteLink.error.remote_ocx_missing`,remote_ocx_outdated:`remoteLink.error.remote_ocx_outdated`,remote_ocx_unrecognized:`remoteLink.error.remote_ocx_unrecognized`,remote_port_failed:`remoteLink.error.remote_port_failed`,standalone_required:`remoteLink.error.standalone_required`,tailscale_session_refused:`remoteLink.error.tailscale_session_refused`,version_probe_failed:`remoteLink.error.version_probe_failed`},zP={auth:`remoteLink.reason.auth`,hostkey:`remoteLink.reason.hostkey`,forward:`remoteLink.reason.forward`,timeout:`remoteLink.reason.timeout`,bind:`remoteLink.reason.bind`,persist:`remoteLink.reason.persist`,compensation_failed:`remoteLink.reason.compensation_failed`,"stale tunnel may hold the port":`remoteLink.reason.staleTunnel`},BP={pairing_required:`remoteLink.joinDenied.pairing_required`,standalone_required:`remoteLink.childDisabled`,join_port_mismatch:`remoteLink.error.join_port_mismatch`};function VP(e){return typeof e==`object`&&!!e}function HP(e){return typeof e==`string`&&e.length>0}function UP(e){if(!VP(e)||!Array.isArray(e.candidates))throw Error(`invalid candidates`);return e.candidates.map(e=>{if(!VP(e)||!HP(e.alias)||!HP(e.source))throw Error(`invalid candidate`);return{alias:e.alias,source:e.source}})}function WP(e){if(!VP(e)||!HP(e.alias)||!HP(e.fingerprint)||!HP(e.keyType))throw Error(`invalid probe`);return{alias:e.alias,fingerprint:e.fingerprint,keyType:e.keyType}}function GP(e){if(!VP(e)||!HP(e.alias)||!HP(e.fingerprint)||!HP(e.ocxVersion))throw Error(`invalid confirmation`);return{alias:e.alias,fingerprint:e.fingerprint,ocxVersion:e.ocxVersion}}function KP(e){return e instanceof Gk&&e.code in RP?RP[e.code]:`remoteLink.error.generic`}function qP(e){return{key:KP(e),hint:e instanceof Gk?e.hint:null}}function JP({error:e}){let t=O();return(0,Q.jsxs)($,{tone:`err`,children:[(0,Q.jsx)(`span`,{className:`remote-link-error`,children:t(e.key)}),e.hint&&(0,Q.jsxs)(`span`,{className:`remote-link-hint`,children:[t(`remoteLink.reason.generic`),` `,(0,Q.jsx)(`code`,{children:e.hint})]})]})}function YP({apiBase:e,sessionReady:t,pairingRecoveryAvailable:n=!1,onRequestPairing:r,workspaceAvailable:i=!1,onOpenWorkspace:a,onChildReady:o=IP,restartWait:s}){let c=O(),[l,u]=(0,Z.useState)(`off`),[d,f]=(0,Z.useState)(`home`),[m,h]=(0,Z.useState)(null),[g,_]=(0,Z.useState)(null),[v,y]=(0,Z.useState)(!1),[b,x]=(0,Z.useState)(!1),[S,C]=(0,Z.useState)(`idle`),[w,E]=(0,Z.useState)([]),[k,A]=(0,Z.useState)(``),[j,M]=(0,Z.useState)(null),[P,I]=(0,Z.useState)(null),[L,R]=(0,Z.useState)(!1),[z,B]=(0,Z.useState)(null),[V,H]=(0,Z.useState)(null),[U,W]=(0,Z.useState)(null),[G,ee]=(0,Z.useState)(null),[te,K]=(0,Z.useState)(null),q=(0,Z.useRef)(null),ne=(0,Z.useRef)(null),J=(0,Z.useRef)(null),Y=(0,Z.useRef)(null),ie=(0,Z.useRef)([]),X=(0,Z.useRef)(null),ae=(0,Z.useRef)(0),oe=(0,Z.useRef)(null),se=(0,Z.useRef)(0),ce=(0,Z.useRef)(null),le=(0,Z.useRef)(!1),[ue,de]=(0,Z.useState)(!1),fe=n&&r&&(!t||v)?(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:r,children:c(`connection.pairing.title`)}):null,pe=(0,Z.useCallback)(()=>{oe.current?.controller.abort();let e={controller:new AbortController,sequence:++se.current};return oe.current=e,e},[]),me=(0,Z.useCallback)(()=>{se.current+=1,oe.current?.controller.abort(),oe.current=null},[]),he=e=>oe.current?.sequence===e.sequence&&!e.controller.signal.aborted,ge=(0,Z.useCallback)(()=>{ae.current+=1,X.current?.controller.abort(),X.current=null},[]),_e=(0,Z.useCallback)(async()=>{if(!t||document.visibilityState===`hidden`||le.current)return;X.current?.controller.abort();let n=new AbortController,r=++ae.current;X.current={controller:n,sequence:r};try{let t=Qk(await eA(e,`/api/link/status`,{signal:n.signal}));if(n.signal.aborted||ae.current!==r)return;h(t),_(null),y(!1),U?u(`failed`):t.role===`child`?u(`connected`):t.links.length===0?u(e=>[`role-select`,`adding-child`,`confirming-host`,`applying`,`joining`,`restart-waiting`].includes(e)?e:`off`):t.links.some(e=>e.state===`failed`)?u(`failed`):t.links.some(e=>e.state===`reconnecting`)?u(`reconnecting`):t.links.some(e=>e.state===`connected`)&&u(`connected`)}catch(e){if(n.signal.aborted||ae.current!==r)return;_(KP(e)),y(e instanceof Gk&&(e.status===401||e.status===403))}finally{X.current?.sequence===r&&(X.current=null)}},[e,U,t]),ye=(0,Z.useEffectEvent)(()=>{_e()});(0,Z.useEffect)(()=>{if(!t)return;Promise.resolve().then(ye);let e=window.setInterval(ye,5e3),n=()=>{document.visibilityState===`visible`?ye():ge()};return document.addEventListener(`visibilitychange`,n),()=>{window.clearInterval(e),document.removeEventListener(`visibilitychange`,n),ge()}},[ge,t]),(0,Z.useEffect)(()=>{if(l!==`restart-waiting`)return;let t=new AbortController;return sA(e,ce.current,t.signal,{...s,onSlow:()=>de(!0)}).then(e=>{e===`ready`&&o()}),()=>t.abort()},[e,o,s,l]),(0,Z.useEffect)(()=>{if(!b){let e=ne.current?.open;ne.current?.close?.(),e&&q.current?.focus();return}let e=ne.current;e&&!e.open&&(typeof e.showModal==`function`?e.showModal():e.setAttribute(`open`,``)),window.setTimeout(()=>e?.querySelector(`input, button`)?.focus(),0)},[b]),(0,Z.useEffect)(()=>{let e=J.current;if(!G){e?.close?.();return}e&&!e.open&&(typeof e.showModal==`function`?e.showModal():e.setAttribute(`open`,``))},[G]);let be=()=>{me(),x(!1),C(`idle`),E([]),M(null),I(null),R(!1),H(null),W(null),B(null),u(e=>[`failed`,`adding-child`,`confirming-host`,`applying`,`joining`].includes(e)?`adding-child`:e)},xe=p(),Se=xe&&m?.joinAvailable===!0,Ce=m?.joinDenied?BP[m.joinDenied]:`remoteLink.joinDenied.unavailable`,we=D(e).shared,Te=xe&&window.location.protocol===`http:`&&[`127.0.0.1`,`[::1]`].includes(window.location.hostname)&&we.serverOrigin===window.location.origin,Ee=async()=>{let t=pe();C(`loading`),E([]),H(null),W(null),B(`candidates`),M(null),I(null),R(!1);try{let n=await eA(e,`/api/link/candidates`,{signal:t.controller.signal});if(!he(t))return;E(UP(n)),C(`ready`)}catch(e){if(!he(t))return;C(`failed`),H(qP(e))}finally{he(t)&&B(null)}},De=async()=>{x(!0),u(`adding-child`),await Ee()},Oe=async(t=k.trim(),n=oe.current??pe())=>{let r=t.trim();if(r){S===`failed`&&C(`idle`),B(`probe`),H(null),M(null),I(null),R(!1),W(null),u(`adding-child`);try{let t=await eA(e,`/api/link/probe`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({alias:r}),signal:n.controller.signal});if(!he(n))return;M(WP(t))}catch(e){if(!he(n))return;H(qP(e)),W({phase:`probe`,alias:r}),u(`failed`)}finally{he(n)&&B(null)}}},ke=async()=>{if(!j||!L)return;let t=oe.current;if(t){B(`confirm`),H(null);try{let n=await eA(e,`/api/link/confirm-host`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({alias:j.alias,fingerprint:j.fingerprint}),signal:t.controller.signal});if(!he(t))return;I(GP(n))}catch(e){if(!he(t))return;H(qP(e))}finally{he(t)&&B(null)}}},Ae=async(t=oe.current)=>{let n=P;if(!(!n||!t)){B(`apply`),H(null),W(null),u(`applying`);try{if(await eA(e,`/api/link/apply`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({alias:n.alias}),signal:t.controller.signal}),!he(t))return;be(),_e()}catch(e){if(!he(t))return;H(qP(e)),W({phase:`apply`,alias:n.alias}),u(`failed`)}finally{he(t)&&B(null)}}},je=async(t=P?.alias,n=oe.current??pe())=>{let r=t?.trim();if(!(!r||!Se)){B(`join`),H(null),W(null),u(`joining`);try{if(ce.current=(await tA(e,n.controller.signal))?.pid??null,!he(n)||(await eA(e,`/api/link/join`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({alias:r}),signal:n.controller.signal}),!he(n)))return;le.current=!0,ge(),be(),de(!1),u(`restart-waiting`)}catch(e){if(!he(n))return;H(qP(e)),W({phase:`join`,alias:r}),u(`failed`)}finally{he(n)&&B(null)}}},Me=async()=>{let t=(m?.links??[]).filter(e=>e.direction===`hub-initiated`&&(e.state===`failed`||e.state===`reconnecting`));if(t.length===0){await _e();return}B(`reconnect`),H(null);try{let n=(await Promise.allSettled(t.map(t=>eA(e,`/api/link/${encodeURIComponent(t.id)}/reconnect`,{method:`POST`})))).find(e=>e.status===`rejected`);n&&H(qP(n.reason))}finally{await _e(),B(null)}},Ne=()=>{if(!U){Me();return}let e=pe();if(U.phase===`probe`){A(U.alias),Oe(U.alias,e);return}if(U.phase===`join`){je(U.alias,e);return}Ae(e)},Pe=()=>{ee(null),K(null),window.setTimeout(()=>Y.current?.focus(),0)},Fe=(e,t)=>{let n=t===`Home`?0:t===`End`?1:t===`ArrowRight`||t===`ArrowDown`||t===`ArrowLeft`||t===`ArrowUp`?(e+1)%2:e;n===1&&!Se||n!==e&&(ie.current[n]?.focus(),f(n===0?`home`:`child`))},Ie=async()=>{if(!G)return;let t=G;B(`remove`),K(null);try{await eA(e,`/api/link/${encodeURIComponent(t.row.id)}`,t.force?{method:`DELETE`,headers:{"content-type":`application/json`},body:JSON.stringify({force:!0})}:{method:`DELETE`}),Pe(),await _e()}catch(e){!t.force&&e instanceof Gk&&e.code===`remote_disconnect_failed`?ee({row:t.row,force:!0}):K(KP(e))}finally{B(null)}},Le=m?.links??[],Re=d===`home`&&(l===`adding-child`||l===`confirming-host`||l===`applying`),ze=m?.role===`home`||Re?`remoteLink.role.home`:m?.role===`child`?`remoteLink.role.child`:`remoteLink.role.standalone`,Be=d===`child`&&!Se;return t?(0,Q.jsxs)(`div`,{className:`remote-link-page`,children:[(0,Q.jsxs)(`div`,{className:`page-head`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h2`,{children:c(`link.title`)}),(0,Q.jsx)(`p`,{className:`page-sub`,children:c(`link.subtitle`)})]}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void _e(),disabled:z!==null,children:[(0,Q.jsx)(re,{}),c(`link.refresh`)]})]}),i&&(0,Q.jsxs)(`section`,{className:`panel remote-link-workspace-card`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`strong`,{children:c(`remoteLink.workspaceMoved.title`)}),(0,Q.jsx)(`p`,{children:c(`remoteLink.workspaceMoved.body`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:a??(()=>{window.location.hash=`remote-workspace`}),children:c(`remoteLink.workspaceMoved.open`)})]}),g&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)($,{tone:`err`,children:(0,Q.jsx)(`span`,{className:`remote-link-error`,children:c(g)})}),fe&&(0,Q.jsx)(`section`,{className:`panel`,children:fe})]}),Le.length===0&&l===`off`&&(0,Q.jsxs)(`section`,{className:`panel remote-link-off-preview`,children:[(0,Q.jsxs)(`div`,{className:`remote-link-switch-row`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`strong`,{children:c(`link.switch`)}),(0,Q.jsx)(`p`,{className:`remote-link-info`,children:c(`link.switchOffHint`)})]}),(0,Q.jsx)(`button`,{type:`button`,role:`switch`,className:`remote-link-switch`,"aria-checked":`false`,"aria-label":c(`link.switch`),onClick:()=>u(`role-select`)})]}),(0,Q.jsxs)(`div`,{className:`remote-link-preview-content`,"aria-hidden":`true`,children:[(0,Q.jsxs)(`div`,{className:`remote-link-preview-row`,children:[(0,Q.jsxs)(`div`,{className:`remote-link-preview-lines`,children:[(0,Q.jsx)(`span`,{}),(0,Q.jsx)(`span`,{}),(0,Q.jsx)(`span`,{})]}),(0,Q.jsx)(`span`,{className:`remote-link-status`,children:c(`remoteLink.status.idle`)})]}),(0,Q.jsxs)(`div`,{className:`remote-link-preview-row`,children:[(0,Q.jsxs)(`div`,{className:`remote-link-preview-lines`,children:[(0,Q.jsx)(`span`,{}),(0,Q.jsx)(`span`,{})]}),(0,Q.jsx)(`span`,{className:`remote-link-status`,children:c(`remoteLink.role.child`)})]})]})]}),l===`role-select`&&(0,Q.jsxs)(`section`,{className:`panel remote-link-panel`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{children:c(`link.role.title`)}),(0,Q.jsx)(`p`,{className:`remote-link-info`,children:c(`link.role.hint`)})]}),(0,Q.jsxs)(`div`,{className:`remote-link-role-grid`,role:`radiogroup`,"aria-label":c(`link.role.title`),children:[(0,Q.jsxs)(`button`,{ref:e=>{ie.current[0]=e},type:`button`,role:`radio`,tabIndex:d===`home`?0:-1,"aria-checked":d===`home`,className:`remote-link-role-card`,onClick:()=>f(`home`),onKeyDown:e=>{[`ArrowRight`,`ArrowDown`,`ArrowLeft`,`ArrowUp`,`Home`,`End`].includes(e.key)&&(e.preventDefault(),Fe(0,e.key))},children:[(0,Q.jsx)(`strong`,{children:c(`link.role.home`)}),(0,Q.jsx)(`span`,{children:c(`link.role.homeHint`)})]}),(0,Q.jsxs)(`button`,{ref:e=>{ie.current[1]=e},type:`button`,role:`radio`,tabIndex:Se&&d===`child`?0:-1,"aria-checked":d===`child`,"aria-disabled":!Se,className:`remote-link-role-card`,onClick:()=>{Se&&(f(`child`),De())},onKeyDown:e=>{Se&&[`ArrowRight`,`ArrowDown`,`ArrowLeft`,`ArrowUp`,`Home`,`End`].includes(e.key)&&(e.preventDefault(),Fe(1,e.key))},children:[(0,Q.jsx)(`strong`,{children:c(`link.role.child`)}),(0,Q.jsx)(`span`,{children:c(`link.role.childHint`)})]})]}),!xe&&(0,Q.jsx)($,{tone:`warn`,children:c(`remoteLink.childDisabled`)}),xe&&m!==null&&!m.joinAvailable&&(0,Q.jsx)($,{tone:`warn`,children:c(Ce)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:Be||m?.role===`child`,onClick:()=>void De(),children:c(d===`child`?`remoteLink.findHome.action`:`link.continue`)})]}),l===`role-select`&&Te&&m?.joinAvailable===!1&&m.joinDenied===`pairing_required`&&(0,Q.jsx)(_A,{local:!0,target:we,onConnected:()=>{_e()}}),(l===`connected`||l===`reconnecting`||l===`failed`||l===`restart-waiting`||m?.role===`child`||Le.length>0||l===`adding-child`||l===`confirming-host`||l===`applying`||l===`joining`)&&(0,Q.jsxs)(`section`,{className:`panel remote-link-panel`,children:[(0,Q.jsxs)(`div`,{className:`remote-link-toolbar`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{children:c(d===`child`&&xe?`remoteLink.findHome.title`:`link.children`)}),(0,Q.jsx)(`p`,{className:`remote-link-info`,children:c(l===`restart-waiting`?`remoteLink.restart.waiting`:ze)})]}),(0,Q.jsxs)(`button`,{ref:q,type:`button`,className:`btn btn-primary btn-sm`,onClick:()=>void De(),disabled:z!==null||l===`applying`||l===`joining`||l===`restart-waiting`||m?.role===`child`,children:[(0,Q.jsx)(N,{}),c(d===`child`&&xe?`remoteLink.findHome.action`:`link.addChild`)]})]}),l===`restart-waiting`?(0,Q.jsxs)(`div`,{className:`remote-link-restart`,"aria-live":`polite`,children:[(0,Q.jsx)(`strong`,{children:c(`remoteLink.restart.title`)}),(0,Q.jsx)(`p`,{children:c(`remoteLink.restart.body`)}),ue&&(0,Q.jsx)($,{tone:`warn`,children:c(`remoteLink.restart.slow`)})]}):m?.role===`child`?(0,Q.jsx)(`div`,{className:`remote-link-children`,"aria-live":`polite`,children:(0,Q.jsx)(`div`,{className:`remote-link-row`,children:(0,Q.jsxs)(`div`,{className:`remote-link-row-main`,children:[(0,Q.jsx)(`strong`,{children:m.child?.alias??c(`remoteLink.role.child`)}),m.child&&(0,Q.jsx)(`div`,{className:`remote-link-row-meta`,children:(0,Q.jsx)(`span`,{className:`remote-link-status`,"data-state":m.child.state,children:c(LP[m.child.state])})})]})})}):Le.length>0?(0,Q.jsx)(`div`,{className:`remote-link-children`,"aria-live":`polite`,children:Le.map(e=>(0,Q.jsxs)(`div`,{className:`remote-link-row`,children:[(0,Q.jsxs)(`div`,{className:`remote-link-row-main`,children:[(0,Q.jsx)(`strong`,{children:e.alias}),(0,Q.jsxs)(`div`,{className:`remote-link-row-meta`,children:[(0,Q.jsx)(`span`,{className:`remote-link-status`,"data-state":e.state,children:c(LP[e.state])}),(0,Q.jsx)(`span`,{children:e.direction===`hub-initiated`?c(`remoteLink.direction.hub`):c(`remoteLink.direction.client`)}),e.reason&&(0,Q.jsx)(`span`,{className:`remote-link-error`,children:e.reason in zP?c(zP[e.reason]):(0,Q.jsxs)(Q.Fragment,{children:[c(`remoteLink.reason.generic`),` `,(0,Q.jsx)(`code`,{children:e.reason})]})})]})]}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:t=>{Y.current=t.currentTarget,ee({row:e,force:!1})},disabled:z!==null,children:[(0,Q.jsx)(F,{}),c(`link.disconnect`)]})]},e.id))}):(0,Q.jsx)(`p`,{className:`remote-link-info`,children:c(d===`child`&&xe?`remoteLink.findHome.empty`:`link.noChildren`)}),!b&&(l===`reconnecting`||l===`failed`&&(U!==null&&V?.key!==`remoteLink.error.join_restart_failed`||Le.some(e=>e.state===`failed`)))&&(0,Q.jsxs)(`div`,{className:`remote-link-status-message`,"aria-live":`polite`,children:[(0,Q.jsx)(`span`,{className:`remote-link-status`,"data-state":l===`failed`?`failed`:`reconnecting`,children:c(LP[l===`failed`?`failed`:`reconnecting`])}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:Ne,disabled:z!==null,children:c(`link.retry`)})]}),l===`joining`&&(0,Q.jsx)(`p`,{className:`remote-link-info`,"aria-live":`polite`,children:c(`remoteLink.joining`)}),!b&&V&&(0,Q.jsx)(JP,{error:V})]}),(0,Q.jsxs)(`dialog`,{ref:ne,className:`remote-link-sheet`,"aria-labelledby":`remote-link-sheet-title`,onCancel:e=>{e.preventDefault(),be()},children:[(0,Q.jsxs)(`div`,{className:`remote-link-sheet-head`,children:[(0,Q.jsx)(`h3`,{id:`remote-link-sheet-title`,children:c(d===`child`&&xe?`remoteLink.findHome.title`:`link.sheetTitle`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon`,onClick:be,"aria-label":c(`link.close`),children:(0,Q.jsx)(ve,{})})]}),(0,Q.jsxs)(`div`,{className:`remote-link-sheet-body`,children:[d===`home`&&(0,Q.jsxs)(`div`,{className:`remote-link-info`,children:[(0,Q.jsx)(`p`,{children:c(`link.setup.relationship`)}),(0,Q.jsx)(`p`,{children:c(`link.setup.requirements`)})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h4`,{children:c(d===`child`&&xe?`remoteLink.findHome.body`:`link.candidates`)}),S===`loading`&&(0,Q.jsx)(`p`,{className:`remote-link-info`,role:`status`,children:c(`link.loading`)}),S===`failed`&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`remote-link-info`,children:c(`link.discoveryFailed`)}),b&&V&&(0,Q.jsx)(JP,{error:V})]}),S===`ready`&&(w.length>0?(0,Q.jsx)(`div`,{className:`remote-link-candidates`,children:w.map(e=>(0,Q.jsxs)(`button`,{type:`button`,className:`remote-link-candidate`,onClick:()=>A(e.alias),children:[(0,Q.jsx)(`span`,{children:e.alias}),(0,Q.jsx)(`small`,{children:e.source})]},`${e.source}:${e.alias}`))}):(0,Q.jsxs)(`div`,{className:`remote-link-info`,children:[(0,Q.jsx)(`p`,{children:c(`link.noCandidates`)}),(0,Q.jsx)(`p`,{children:c(d===`home`?`link.setup.emptyHome`:`link.setup.emptyLocal`)}),(0,Q.jsx)(`pre`,{children:(0,Q.jsx)(`code`,{children:`Host devbox
56
56
  HostName devbox.example.com
57
57
  User you
58
- IdentityFile ~/.ssh/id_ed25519`})})]})),(0,Q.jsx)(`a`,{href:`https://opencodex.me/guides/remote-link/`,target:`_blank`,rel:`noopener noreferrer`,children:c(`link.setup.guide`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>void Ee(),disabled:z!==null,children:c(S===`failed`?`link.retry`:`link.rescan`)})]}),(0,Q.jsxs)(`div`,{className:`remote-link-form`,children:[(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`remote-link-alias`,children:c(`link.alias`)}),(0,Q.jsx)(`input`,{id:`remote-link-alias`,"aria-describedby":`remote-link-alias-help`,className:`input`,spellCheck:!1,value:k,onChange:e=>A(e.target.value),placeholder:c(`link.aliasPlaceholder`),autoComplete:`off`}),(0,Q.jsx)(`p`,{id:`remote-link-alias-help`,className:`remote-link-info`,children:c(`link.aliasRequired`)}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>void Oe(),disabled:!k.trim()||z!==null,children:[(0,Q.jsx)(st,{}),c(z===`probe`?`link.probing`:`link.probe`)]})]}),j&&(0,Q.jsxs)(`div`,{className:`remote-link-panel`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`remote-link-info`,children:c(`link.hostFingerprint`)}),(0,Q.jsx)(`p`,{className:`remote-link-fingerprint`,children:(0,Q.jsx)(`code`,{children:j.fingerprint})}),(0,Q.jsx)(`span`,{className:`remote-link-info`,children:j.keyType})]}),(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:L,onChange:e=>R(e.target.checked)}),` `,c(`link.confirmFingerprint`)]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>void ke(),disabled:!L||z!==null,children:c(z===`confirm`?`link.confirming`:`link.confirm`)})]}),P&&(0,Q.jsxs)(`div`,{className:`remote-link-panel`,children:[(0,Q.jsx)(`p`,{className:`remote-link-info`,children:c(`link.ocxVersion`,{version:P.ocxVersion})}),d===`child`&&xe&&(0,Q.jsx)($,{tone:`warn`,children:c(`remoteLink.findHome.notice`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>void(d===`child`&&xe?je():Ae()),disabled:z!==null||d===`child`&&!Se,children:c(d===`child`&&xe?z===`join`?`remoteLink.joining`:`remoteLink.findHome.connect`:z===`apply`?`link.applying`:`link.apply`)})]}),b&&S!==`failed`&&V&&(0,Q.jsx)(JP,{error:V}),U&&V?.key!==`remoteLink.error.join_restart_failed`&&(0,Q.jsxs)(`div`,{children:[U.phase===`probe`&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`remote-link-info`,children:c(`link.probeHelp`)}),(0,Q.jsx)(`pre`,{children:(0,Q.jsx)(`code`,{children:`ssh -o BatchMode=yes <alias> true`})})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:Ne,disabled:z!==null,children:c(`link.retry`)})]}),(0,Q.jsx)(`div`,{className:`remote-link-sheet-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:be,children:c(`link.cancel`)})})]})]}),(0,Q.jsx)(`dialog`,{ref:J,className:`remote-link-confirm-dialog`,"aria-labelledby":`remote-link-confirm-title`,onCancel:e=>{e.preventDefault(),Pe()},children:G&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`h3`,{id:`remote-link-confirm-title`,children:G.force?c(`remoteLink.forceRemove.title`,{alias:G.row.alias}):c(`link.disconnect`)}),(0,Q.jsx)(`p`,{children:G.force?(0,Q.jsx)(T,{k:`remoteLink.forceRemove.body`,cmd:`ocx disconnect`,vars:{alias:G.row.alias}}):c(`link.disconnectConfirm`,{alias:G.row.alias})}),te&&(0,Q.jsx)(`p`,{className:`remote-link-error`,role:`alert`,children:c(te)}),(0,Q.jsxs)(`div`,{className:`remote-link-sheet-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:Pe,children:c(`link.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-danger`,onClick:()=>void Ie(),disabled:z===`remove`,children:G.force?c(`remoteLink.forceRemove.confirm`):c(`link.disconnect`)})]})]})})]}):(0,Q.jsxs)(`div`,{className:`remote-link-page`,children:[(0,Q.jsx)(`div`,{className:`page-head`,children:(0,Q.jsx)(`h2`,{children:c(`link.title`)})}),(0,Q.jsx)($,{tone:`warn`,children:c(`link.sessionRequired`)}),fe&&(0,Q.jsx)(`div`,{className:`panel`,children:fe})]})}function XP(e){let t=document.documentElement,n=()=>t.style.setProperty(`--ocx-sticky-top-h`,String(Math.ceil(e.getBoundingClientRect().height)));n();let r=typeof ResizeObserver>`u`?null:new ResizeObserver(n);return r?.observe(e),()=>{r?.disconnect(),t.style.removeProperty(`--ocx-sticky-top-h`)}}var ZP=6e4,QP=7,$P=8,eF=.8;function tF(e,t){try{return new Intl.DateTimeFormat(t,{hour:`2-digit`,minute:`2-digit`,hour12:!1}).format(e)}catch{return new Date(e).toTimeString().slice(0,5)}}function nF(e,t){return e.labelKey?t(e.labelKey):e.label??e.id}function rF(e,t){return e===`critical`?t(`quotaSummary.critical`):e===`warn`?t(`quotaSummary.warn`):``}function iF(e){try{return e.matches(`:focus-visible`)}catch{return!0}}function aF(e,t,n){(0,Z.useLayoutEffect)(()=>{if(!e)return;let r=()=>{let e=t.current,r=n.current;if(!e||!r)return;let i=e.getBoundingClientRect(),a=r.offsetWidth,o=document.documentElement.clientWidth||window.innerWidth,s=Math.max($P,o-a-$P),c=Math.min(Math.max(i.left,$P),s);r.style.setProperty(`--qs-pop-top`,String(Math.round(i.bottom+QP))),r.style.setProperty(`--qs-pop-left`,String(Math.round(c))),r.style.setProperty(`--qs-pop-gap`,String(Math.round(i.bottom+QP)-i.bottom));let l=r.getBoundingClientRect();r.style.setProperty(`--qs-bridge-left`,String(Math.min(0,Math.max(0,i.left)-l.left))),r.style.setProperty(`--qs-bridge-right`,String(Math.min(0,l.right-Math.min(o,i.right))))};return r(),window.addEventListener(`scroll`,r,{capture:!0,passive:!0}),window.addEventListener(`resize`,r),()=>{window.removeEventListener(`scroll`,r,{capture:!0}),window.removeEventListener(`resize`,r)}},[e,t,n])}function oF({row:e,t,locale:n}){let[r,i]=(0,Z.useState)(!1),[a,o]=(0,Z.useState)(!1),[s,c]=(0,Z.useState)(!1),[l,u]=(0,Z.useState)(!1),d=(0,Z.useRef)(null),f=(0,Z.useRef)(null),p=(0,Z.useRef)(null),m=(0,Z.useRef)(``),h=(0,Z.useId)(),g=!l&&(r||a||s),_=(0,Z.useCallback)(()=>{i(!1),o(!1),c(!1)},[]);(0,Z.useEffect)(()=>{if(!g)return;let e=e=>{d.current&&!d.current.contains(e.target)&&c(!1)},t=e=>{if(e.key===`Escape`){let e=p.current?.contains(document.activeElement);_(),e&&(f.current?.focus(),u(!0))}};return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,t)}},[g,_]),aF(g,f,p);let v=e=>{e.pointerType!==`touch`&&i(!0)},y=e=>{e.pointerType!==`touch`&&i(!1),u(!1)},b=t=>{if(t.button!==0||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey)return;t.preventDefault();let n=m.current===`touch`;if(m.current=``,n&&!g){c(!0);return}_(),n||u(!0),Jg(e.provider)},{headline:x}=e,S=rF(e.severity,t);return(0,Q.jsxs)(`li`,{ref:d,className:`quota-summary-item quota-summary-item--${e.severity}`,onPointerEnter:v,onPointerLeave:y,onFocus:e=>{iF(e.target)&&(u(!1),o(!0))},onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||o(!1)},children:[(0,Q.jsxs)(`a`,{ref:f,href:`#${Ug(e.provider)}`,className:`quota-summary-chip${g?` quota-summary-chip--open`:``}`,"aria-expanded":g,"aria-controls":g?h:void 0,"aria-describedby":g?`${h}-table`:void 0,onPointerDown:e=>{m.current=e.pointerType},onClick:b,children:[(0,Q.jsx)(`span`,{className:`quota-summary-name`,children:e.label}),(0,Q.jsx)(`span`,{className:`quota-summary-pct`,children:We(x.percent)}),S&&(0,Q.jsx)(`span`,{className:`quota-summary-flag`,"aria-hidden":`true`,children:`!`}),S&&(0,Q.jsx)(`span`,{className:`sr-only`,children:S}),(0,Q.jsx)(`span`,{className:`sr-only`,children:t(`quotaSummary.openAccounts`)})]}),g&&(0,Q.jsxs)(`div`,{ref:p,id:h,className:`quota-summary-popover`,role:`group`,"aria-label":e.label,children:[(0,Q.jsxs)(`div`,{className:`quota-summary-popover-head`,children:[(0,Q.jsx)(`strong`,{children:e.label}),S&&(0,Q.jsx)(`span`,{className:`quota-summary-badge quota-summary-badge--${e.severity}`,children:S})]}),(0,Q.jsx)(`table`,{id:`${h}-table`,className:`quota-summary-table`,children:(0,Q.jsx)(`tbody`,{children:e.windows.map(e=>(0,Q.jsxs)(`tr`,{className:`quota-summary-row--${e.severity}`,children:[(0,Q.jsx)(`th`,{scope:`row`,children:nF(e,t)}),(0,Q.jsx)(`td`,{className:`quota-summary-row-pct`,children:We(e.percent)}),(0,Q.jsx)(`td`,{className:`quota-summary-row-reset`,children:e.resetAt===void 0?`-`:_s(e.resetAt,t,n)})]},e.id))})}),(0,Q.jsxs)(`div`,{className:`quota-summary-popover-foot`,children:[e.updatedAt!==void 0&&(0,Q.jsx)(`span`,{children:t(e.observed?`quotaSummary.observedAt`:`quotaSummary.dataAt`,{time:tF(e.updatedAt,n)})}),(0,Q.jsx)(`a`,{href:`#${Ug(e.provider)}`,className:`quota-summary-popover-link`,onPointerDown:e=>{m.current=e.pointerType},onClick:b,children:t(`quotaSummary.openAccounts`)})]})]})]})}var sF={overflow:!1,atStart:!0,atEnd:!0};function cF({rows:e,t,locale:n}){let r=(0,Z.useRef)(null),[i,a]=(0,Z.useState)(sF),o=(0,Z.useCallback)(()=>{let e=r.current;if(!e)return;let t=e.scrollWidth-e.clientWidth,n=t>1?{overflow:!0,atStart:e.scrollLeft<=1,atEnd:e.scrollLeft>=t-1}:sF;a(e=>e.overflow===n.overflow&&e.atStart===n.atStart&&e.atEnd===n.atEnd?e:n)},[]),s=e.map(e=>`${e.provider}:${e.label}:${We(e.headline.percent)}:${e.severity}`).join(`|`);(0,Z.useEffect)(()=>{let e=r.current;if(!e)return;let t=requestAnimationFrame(o),n=typeof ResizeObserver>`u`?null:new ResizeObserver(()=>o());n?.observe(e);for(let t of Array.from(e.children))n?.observe(t);return()=>{cancelAnimationFrame(t),n?.disconnect()}},[o,s]);let c=e=>{let t=r.current;if(!t)return;let n=t.scrollWidth-t.clientWidth;if(e<0?t.scrollLeft<=1:t.scrollLeft>=n-1){o();return}let i=typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches;t.scrollBy({left:e*Math.max(t.clientWidth*eF,80),behavior:i?`auto`:`smooth`})};return(0,Q.jsxs)(`div`,{className:`quota-summary-scroller${i.overflow?` quota-summary-scroller--overflow`:``}`,children:[i.overflow&&(0,Q.jsx)(`button`,{type:`button`,className:`quota-summary-scroll quota-summary-scroll--prev`,"aria-label":t(`quotaSummary.scrollPrev`),title:t(`quotaSummary.scrollPrev`),"aria-disabled":i.atStart,onClick:()=>c(-1),children:(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:`«`})}),(0,Q.jsx)(`ul`,{ref:r,className:`quota-summary-list`,onScroll:o,children:e.map(e=>(0,Q.jsx)(oF,{row:e,t,locale:n},e.provider))}),i.overflow&&(0,Q.jsx)(`button`,{type:`button`,className:`quota-summary-scroll quota-summary-scroll--next`,"aria-label":t(`quotaSummary.scrollNext`),title:t(`quotaSummary.scrollNext`),"aria-disabled":i.atEnd,onClick:()=>c(1),children:(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:`»`})})]})}function lF({apiBase:e}){let{t:n,locale:r}=t(),i=(0,Z.useCallback)(async t=>{let n=await fetch(`${e}/api/provider-quotas`,{signal:t});if(!n.ok)throw Error(`quota summary load failed`);let r=await n.json();return{fetchedAt:Date.now(),reports:ie(r?.reports)}},[e]),a=Ya(`ocx.quota-summary.provider-quotas.v1:${e}`,[e],i,{isEmpty:e=>Object.keys(e.reports).length===0,pollMs:ZP,pauseWhenHidden:!0}),o=a.data;if(!o)return null;let s=Ze(o.reports,e=>be(e,n));if(s.length===0)return null;let c=!a.lastAttemptOk;return(0,Q.jsxs)(`section`,{className:`quota-summary-bar`,"aria-label":n(`quotaSummary.aria`),ref:XP,children:[(0,Q.jsx)(cF,{rows:s,t:n,locale:r}),(0,Q.jsx)(`span`,{className:`quota-summary-updated${c?` quota-summary-updated--stale`:``}`,title:c?n(`quotaSummary.refreshFailed`):void 0,children:n(`quotaSummary.updated`,{time:tF(o.fetchedAt,r)})}),(0,Q.jsx)(`span`,{className:`sr-only`,role:`status`,"aria-live":`polite`,children:c?n(`quotaSummary.refreshFailed`):``})]})}var uF=3e5,dF=6e5,fF=`https://github.com/lidge-jun/opencodex`;async function pF(e,t){let n=await fetch(e,{signal:t});return n.ok?await n.json():null}function mF({apiBase:e,onOpenUpdate:t,onOpenTerminalCommand:n}){let r=O(),[i,a]=(0,Z.useState)(!1),[o,s]=(0,Z.useState)(null),c=Vt(`sidebar-star:${e}`,[e],t=>pF(`${e}/api/github/star`,t),{pollMs:uF}),l=to(e),u=Vt(`sidebar-update-badge:`+l,[l],e=>pF(l,e),{pollMs:Qa()?6e4:dF}),d=c.data?.state??null,f=o!==null&&o.basedOn===d?o.state:d??`not-starred`,p=c.data?.url??fF,m=f===`starred`,h=u.data,g=h?.updateAvailable===!0,_=h?.latestVersion??null,v=()=>window.open(p,`_blank`,`noopener,noreferrer`),y=async()=>{if(!(m||i)){if(f===`unauthenticated`){v();return}a(!0);try{let t=await fetch(`${e}/api/github/star`,{method:`POST`}),n=t.ok?await t.json():null;if(n?.ok===!0){s({state:`starred`,basedOn:d});return}n?.state&&s({state:n.state,basedOn:d}),v()}catch{v()}finally{a(!1),c.refresh()}}},b=r(m?`sidebar.starred`:f===`unauthenticated`?`sidebar.starUnauthenticated`:`sidebar.star`),x=g&&_?r(`sidebar.updateAvailable`,{version:_}):Qa()?r(`sidebar.desktopUpdate`):r(`sidebar.checkUpdate`);return(0,Q.jsxs)(`div`,{className:`sidebar-github-row`,children:[(0,Q.jsxs)(`a`,{className:`sidebar-link sidebar-github-link`,href:p,target:`_blank`,rel:`noreferrer`,children:[(0,Q.jsx)(je,{}),` `,r(`common.github`)]}),(0,Q.jsxs)(`div`,{className:`sidebar-github-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb${m?` sidebar-orb--starred`:``}`,onClick:()=>{y()},disabled:i||m,"aria-label":b,"aria-pressed":m,title:b,children:(0,Q.jsx)(te,{"aria-hidden":`true`,...m?{fill:`currentColor`}:{}})}),(0,Q.jsxs)(`button`,{type:`button`,className:`sidebar-orb${g?` sidebar-orb--update`:``}`,onClick:t,"aria-label":x,title:x,children:[(0,Q.jsx)(Oe,{"aria-hidden":`true`}),g&&(0,Q.jsx)(`span`,{className:`sidebar-orb-dot`,"aria-hidden":`true`})]}),Qa()&&(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb`,onClick:n,"aria-label":r(`sidebar.terminalCommand`),title:r(`sidebar.terminalCommand`),children:(0,Q.jsx)(de,{"aria-hidden":`true`})})]})]})}var hF=`ocx-desktop-star-onboarding`,gF=`https://github.com/lidge-jun/opencodex`,_F=1200;function vF(){try{return window.localStorage.getItem(hF)!==null}catch{return!0}}function yF(){try{window.localStorage.setItem(hF,`seen`)}catch{}}function bF(e){window.location.assign(e)}function xF({apiBase:e,enabled:t}){let[n,r]=(0,Z.useState)(null),[i,a]=(0,Z.useState)(vF);(0,Z.useEffect)(()=>{if(!t||i||!Qa())return;let n=new AbortController,o=window.setTimeout(()=>{fetch(`${e}/api/github/star`,{signal:n.signal}).then(async e=>e.ok?await e.json():{}).catch(()=>n.signal.aborted?null:{}).then(e=>{if(e){if(e.state===`starred`){yF(),a(!0);return}r(e)}})},_F);return()=>{window.clearTimeout(o),n.abort()}},[e,t,i]);let o=(0,Z.useCallback)(()=>{yF(),a(!0)},[]);return i||!t||!n?null:(0,Q.jsx)(SF,{apiBase:e,status:n,onClose:o})}function SF({apiBase:e,status:t,onClose:n}){let r=O(),i=(0,Z.useId)(),a=(0,Z.useId)(),o=(0,Z.useRef)(null),[s,c]=(0,Z.useState)(`prompt`),l=t.url??gF,u=t.state===`not-starred`;(0,Z.useEffect)(()=>{let e=o.current;e&&!e.open&&e.showModal()},[]);let d=(0,Z.useCallback)(e=>{e.preventDefault(),s!==`starring`&&n()},[n,s]),f=()=>{bF(l),n()},p=async()=>{c(`starring`);try{let t=await fetch(`${e}/api/github/star`,{method:`POST`});if((t.ok?await t.json():null)?.ok===!0){Ut(`sidebar-star:${e}`,{state:`starred`,url:l}),c(`thanks`);return}}catch{}c(`failed`)},m=s===`thanks`,h=s===`failed`;return(0,Q.jsxs)(`dialog`,{ref:o,"aria-labelledby":i,"aria-describedby":a,className:`modal-overlay star-onboarding-overlay`,onCancel:d,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":r(`common.close`),tabIndex:-1,onClick:()=>{s!==`starring`&&n()}}),(0,Q.jsxs)(`div`,{className:`modal-card star-onboarding`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsx)(`span`,{className:`star-onboarding-mark${m?` star-onboarding-mark--done`:``}`,"aria-hidden":`true`,children:(0,Q.jsx)(te,{...m?{fill:`currentColor`}:{}})}),(0,Q.jsx)(`h3`,{id:i,className:`star-onboarding-title`,children:r(m?`onboarding.star.thanks`:`onboarding.star.title`)}),(0,Q.jsx)(`p`,{id:a,className:`star-onboarding-body`,children:r(m?`onboarding.star.thanksBody`:h?`onboarding.star.failed`:`onboarding.star.body`)}),m?(0,Q.jsx)(`div`,{className:`star-onboarding-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:n,autoFocus:!0,children:r(`onboarding.star.done`)})}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`star-onboarding-actions`,children:[u&&!h?(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-primary`,disabled:s===`starring`,onClick:()=>{p()},autoFocus:!0,children:[(0,Q.jsx)(te,{"aria-hidden":`true`}),r(s===`starring`?`onboarding.star.starring`:`onboarding.star.cta`)]}):(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-primary`,onClick:f,autoFocus:!0,children:[(0,Q.jsx)(je,{"aria-hidden":`true`}),r(h?`onboarding.star.openPage`:`onboarding.star.cta`)]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:s===`starring`,onClick:n,children:r(`onboarding.star.later`)})]}),(0,Q.jsxs)(`p`,{className:`star-onboarding-hint`,children:[r(u&&!h?`onboarding.star.ghHint`:`onboarding.star.browserHint`),u&&!h&&(0,Q.jsxs)(Q.Fragment,{children:[` `,(0,Q.jsx)(`button`,{type:`button`,className:`star-onboarding-link`,disabled:s===`starring`,onClick:f,children:r(`onboarding.star.openPage`)})]})]})]})]})]})}var CF=[{id:`dashboard`,tkey:`nav.dashboard`,Icon:Ue,pages:[`dashboard`]},{id:`connect`,tkey:`nav.connect`,Icon:st,pages:[`integrations`],embedded:[`claude`]},{id:`codex-set`,tkey:`nav.codexSet`,Icon:Xe,pages:[`codex-set`]},{id:`providers`,tkey:`nav.providers`,Icon:ce,pages:[`providers`]},{id:`models`,tkey:`nav.models`,Icon:Ie,pages:[`models`]},{id:`subagents`,tkey:`nav.subagents`,Icon:Ye,pages:[`subagents`,`advisor`]},{id:`usage-logs`,tkey:`nav.usageLogs`,Icon:j,pages:[`usage`,`logs`,`storage`]},{id:`remote`,tkey:`nav.remote`,Icon:rt,pages:[`remote`,`remote-workspace`]}];function wF(e){return CF.find(t=>t.pages.includes(e)||t.embedded?.includes(e))??null}function TF(e,t){return e.pages.filter(e=>e!==`remote-workspace`||t.remoteWorkspaceAvailable)}function EF({items:e,currentPage:t,onNavigate:n,ariaLabel:r,onFocusOrphaned:i}){let a=(0,Z.useRef)(null),o=(0,Z.useRef)(null),s=(0,Z.useRef)(i);(0,Z.useLayoutEffect)(()=>{s.current=i}),(0,Z.useLayoutEffect)(()=>{let e=a.current;return()=>{e&&e.contains(e.ownerDocument.activeElement)&&s.current?.()}},[]),(0,Z.useLayoutEffect)(()=>{let t=a.current,n=o.current;!t||n===null||t.contains(t.ownerDocument.activeElement)||e.some(e=>e.page===n)||(t.querySelector(`[aria-current="page"]`)??t.querySelector(`button`))?.focus()},[e]);let c=()=>[...a.current?.querySelectorAll(`button`)??[]],l=e=>{let t=c(),n=t.indexOf(e.currentTarget),r=null;e.key===`ArrowRight`?r=(n+1)%t.length:e.key===`ArrowLeft`?r=(n-1+t.length)%t.length:e.key===`Home`?r=0:e.key===`End`&&(r=t.length-1),r!==null&&(e.preventDefault(),t[r]?.focus())};return(0,Q.jsx)(`nav`,{ref:a,className:`section-switcher`,"aria-label":r,onFocus:e=>{o.current=e.target.dataset.sectionPage??null},onBlur:e=>{if(a.current?.contains(e.relatedTarget))return;let t=e.target;window.setTimeout(()=>{t.isConnected&&(o.current=null)},0)},children:e.map(e=>(0,Q.jsx)(`button`,{type:`button`,className:`section-switcher-btn`,"data-section-page":e.page,"aria-current":e.page===t?`page`:void 0,onClick:()=>{e.page!==t&&n(e.page)},onKeyDown:l,children:e.label},e.page))})}var DF=[`ocx-global-view`,`ocx-view`,`ocx-providers-view`,`ocx-subagents-view`,`ocx-storage-view`,`ocx-codexauth-view`,`ocx-apikeys-view`,`ocx-claudecode-view`,`ocx-usage-view`,`ocx-logs-view`,`ocx-models-view`,`ocx-dashboard-view`];function OF(){try{for(let e of DF)localStorage.removeItem(e)}catch{}}function kF(){let[e,t]=(0,Z.useState)(Sg);(0,Z.useEffect)(()=>{OF()},[]);let n=(0,Z.useCallback)(e=>{let n=Ng(e);n.replaceTo&&Kt(n.replaceTo),t(n.page)},[]);return(0,Z.useEffect)(()=>{let e=()=>{n(Wt(window.location.hash))};return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[n]),(0,Z.useEffect)(()=>{let n=Ng(Wt(window.location.hash));n.replaceTo&&Kt(n.replaceTo),n.page!==e&&t(n.page)},[e]),{page:e,setPageState:t,navigateToPage:(e,n)=>{qt(n?`${e}/${n}`:e),t(e)}}}var AF=15e3,jF=3e3;function MF(e,t,n){return typeof e?.message==`string`&&e.message.trim()?e.message:typeof e?.error==`string`&&e.error.trim()?e.error:n(t)}async function NF(e,t,n){try{return(await t(`${e}/healthz`,{method:`GET`,cache:`no-store`,signal:AbortSignal.timeout(n)})).ok?`answering`:`undecided`}catch{return`gone`}}async function PF(e,t={}){let{fetchFn:n=fetch,timeoutMs:r=AF,formatFailure:i=e=>`Failed to stop proxy (HTTP ${e}).`,formatStillRunning:a=()=>`The proxy is still answering, so it did not stop.`,formatUnknown:o=()=>`The proxy did not confirm the stop. Check whether it is still running.`,mode:s=`standalone`,livenessTimeoutMs:c=jF}=t,l;try{l=await n(`${e}${s===`client`?`/api/machine/disconnect`:`/api/stop`}`,{method:`POST`,...s===`client`?{headers:{"Content-Type":`application/json`},body:`{}`}:{},signal:AbortSignal.timeout(r)})}catch{if(s===`client`)return{status:`unknown`,message:o()};let t=await NF(e,n,c);return t===`gone`?{status:`accepted`}:t===`answering`?{status:`unknown`,message:a()}:{status:`unknown`,message:o()}}let u=null,d=!0;try{u=await l.json()}catch{d=!1}return!l.ok||u?.success===!1?{status:`rejected`,message:MF(u,l.status,i)}:d?{status:`accepted`}:{status:`unknown`,message:o()}}var FF=`ocx-desktop-zoom`,IF=.5,LF=.1;function RF(e){return e===`macos`||e===`linux`}function zF(e){return Number.isFinite(e)?Math.round(Math.min(Math.max(e,IF),3)*100)/100:1}function BF(e,t){return t===`reset`?1:zF(e+(t===`in`?LF:-.1))}function VF(e){return Math.round(e*100)}function HF(e=typeof localStorage>`u`?void 0:localStorage){try{let t=e?.getItem(FF);return t==null?1:zF(Number(t))}catch{return 1}}function UF(e,t=typeof localStorage>`u`?void 0:localStorage){try{t?.setItem(FF,String(e))}catch{}}function WF(e,t){return(t===`macos`?e.metaKey:e.ctrlKey)?e.key===`-`||e.key===`_`?`out`:e.key===`=`||e.key===`+`?`in`:e.key===`0`?`reset`:null:null}function GF(e,t){if(!Number.isFinite(t)||t===0)return{accumulated:e,action:null};let n=(Math.sign(e)===Math.sign(t)?e:0)+t;return Math.abs(n)<50?{accumulated:n,action:null}:{accumulated:0,action:n<0?`in`:`out`}}async function KF(e){let t=window.__TAURI_INTERNALS__?.invoke??window.__TAURI__?.core?.invoke;if(!t)return!1;try{return await t(`plugin:webview|set_webview_zoom`,{value:e}),!0}catch{return!1}}var qF=`ocx-sidebar-collapsed`;function JF(e=typeof localStorage>`u`?void 0:localStorage){try{return e?.getItem(qF)===`1`}catch{return!1}}function YF(e){try{localStorage.setItem(qF,e?`1`:`0`)}catch{}}function XF(e){return e instanceof HTMLElement&&(e.isContentEditable||e.closest(`input, textarea, select, [contenteditable]`)!==null)}function ZF({shortcut:e=!1}={}){let[t,n]=(0,Z.useState)(JF),r=(0,Z.useCallback)(()=>n(e=>!e),[]);return(0,Z.useEffect)(()=>{YF(t)},[t]),(0,Z.useEffect)(()=>{if(!e)return;let t=e=>{!(e.metaKey||e.ctrlKey)||e.altKey||e.shiftKey||(e.key===`b`||e.key===`B`)&&(XF(e.target)||(e.preventDefault(),r()))};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[r,e]),{collapsed:t,toggle:r}}function QF({managed:e}){let[t,n]=(0,Z.useState)(HF),r=(0,Z.useCallback)(e=>n(t=>BF(t,e)),[]),i=(0,Z.useRef)(0);return(0,Z.useEffect)(()=>{e&&(KF(t),UF(t))},[e,t]),(0,Z.useEffect)(()=>{if(!e)return;let t=no(),n=e=>{let n=WF(e,t);n&&(e.preventDefault(),e.stopImmediatePropagation(),r(n))},a=e=>{if(!e.ctrlKey)return;e.preventDefault(),e.stopImmediatePropagation();let t=GF(i.current,e.deltaY);i.current=t.accumulated,t.action&&r(t.action)},o=e=>{e.ctrlKey&&(e.preventDefault(),e.stopImmediatePropagation())};return window.addEventListener(`keydown`,n,{capture:!0}),window.addEventListener(`wheel`,a,{capture:!0,passive:!1}),window.addEventListener(`mousewheel`,o,{capture:!0,passive:!1}),()=>{window.removeEventListener(`keydown`,n,{capture:!0}),window.removeEventListener(`wheel`,a,{capture:!0}),window.removeEventListener(`mousewheel`,o,{capture:!0})}},[e,r]),{zoom:t,percent:VF(t),canZoomIn:t<3,canZoomOut:t>IF,step:r}}function $F({percent:e,canZoomIn:t,canZoomOut:n,onStep:r}){let i=O();return(0,Q.jsxs)(`div`,{className:`zoom-control`,role:`group`,"aria-label":i(`zoom.label`),title:i(`zoom.label`),children:[(0,Q.jsx)(`button`,{type:`button`,className:`zoom-control__btn`,disabled:!n,onClick:()=>r(`out`),"aria-label":i(`zoom.out`),title:i(`zoom.out`),children:(0,Q.jsx)(L,{"aria-hidden":!0})}),(0,Q.jsxs)(`button`,{type:`button`,className:`zoom-control__value`,onClick:()=>r(`reset`),"aria-label":i(`zoom.reset`),title:i(`zoom.reset`),children:[e,`%`]}),(0,Q.jsx)(`button`,{type:`button`,className:`zoom-control__btn`,disabled:!t,onClick:()=>r(`in`),"aria-label":i(`zoom.in`),title:i(`zoom.in`),children:(0,Q.jsx)(N,{"aria-hidden":!0})})]})}var eI=[{mode:`light`,tkey:`theme.light`,Icon:J},{mode:`dark`,tkey:`theme.dark`,Icon:he},{mode:`system`,tkey:`theme.system`,Icon:rt}];function tI({theme:e,onChange:t}){let n=O();return(0,Q.jsx)(`div`,{className:`theme-switch`,role:`group`,"aria-label":n(`theme.label`),children:eI.map(({mode:r,tkey:i,Icon:a})=>(0,Q.jsx)(`button`,{type:`button`,className:`theme-switch__btn`,"aria-pressed":e===r,"aria-label":n(i),title:n(i),onClick:()=>t(r),children:(0,Q.jsx)(a,{"aria-hidden":!0})},r))})}function nI(e){try{window.__TAURI__?.core?.invoke?.(e).catch(()=>{})}catch{}}var rI=`a, button, input, select, textarea, summary, [role='button'], [role='link'], [contenteditable]`;function iI(e){return e instanceof Element&&e.closest(rI)!==null}function aI(){return{onMouseDown:e=>{e.button!==0||iI(e.target)||nI(`plugin:window|start_dragging`)},onDoubleClick:e=>{iI(e.target)||nI(`plugin:window|toggle_maximize`)}}}function oI(e){let t=window.__TAURI__?.core,n=window.devicePixelRatio,r=Number.isFinite(n)&&n>0?Math.max(2,n):2,i=!0,a=0,o,s=()=>{let t=window.devicePixelRatio,n=Number.isFinite(t)&&t>0?r/t:1,i=Math.max(1,n);if(e.classList.toggle(`app--reduced-zoom`,i>1),e.style.setProperty(`--titlebar-h`,`${Math.ceil(40*i)}px`),n>=1){e.style.setProperty(`--tl-inset`,`${Math.ceil(80*i)}px`),e.style.setProperty(`--chrome-clear`,`${Math.ceil(124*i)}px`);return}let a=Math.ceil(80*n);e.style.setProperty(`--tl-inset`,`${a}px`),e.style.setProperty(`--chrome-clear`,`${a+44}px`)},c=()=>{if(!t?.invoke)return;let e=++a;t.invoke(`plugin:window|scale_factor`).then(t=>{!i||e!==a||typeof t==`number`&&Number.isFinite(t)&&t>0&&(r=t,s())}).catch(()=>{})},l=()=>{s(),clearTimeout(o),o=setTimeout(c,80)};return s(),c(),window.addEventListener(`resize`,l),window.addEventListener(`focus`,c),()=>{i=!1,clearTimeout(o),window.removeEventListener(`resize`,l),window.removeEventListener(`focus`,c)}}function sI({collapsed:e,onToggle:t}){let n=O()(e?`nav.expandSidebar`:`nav.collapseSidebar`);return(0,Q.jsx)(`div`,{className:`sidebar-top`,...aI(),children:(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-collapse`,onClick:t,"aria-expanded":!e,"aria-controls":`app-sidebar`,"aria-label":n,title:n,children:(0,Q.jsx)(V,{})})})}function cI({children:e}){return(0,Q.jsx)(`div`,{className:`main-top`,...aI(),children:e})}var lI={dashboard:`nav.dashboard`,startup:`nav.startup`,providers:`nav.providers`,models:`nav.models`,subagents:`nav.subagents`,advisor:`nav.advisor`,logs:`nav.logs`,usage:`nav.usage`,storage:`nav.storage`,remote:`nav.remote`,"remote-workspace":`nav.remoteWorkspace`,"codex-set":`nav.codexSet`,integrations:`nav.connect`,claude:`nav.claude`},uI=``,dI=D(uI);w(dI),d();var fI=`ocx-theme`;function pI({available:e,apiBase:t,hubOrigin:n,onOpenRemoteLink:r}){let i=O();return e?(0,Q.jsx)(FP,{apiBase:t,hubOrigin:n}):(0,Q.jsxs)(`section`,{className:`panel`,children:[(0,Q.jsx)(`h2`,{children:i(`nav.remoteWorkspace`)}),(0,Q.jsxs)($,{tone:`warn`,children:[i(`link.workspaceUnavailable`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:r,children:i(`nav.remote`)})]})]})}function mI(e){if(!e||typeof e!=`object`||!(`version`in e))return null;let t=e.version;return typeof t==`string`&&t.length>0?t:null}function hI(){let e=localStorage.getItem(fI);return e===`light`||e===`dark`?e:`system`}function gI(){let e=document.querySelector(`.sidebar .nav-item.active`),t=e?.getBoundingClientRect(),n=!!t&&t.width>0&&t.height>0&&t.right>0&&t.left<window.innerWidth&&t.bottom>0&&t.top<window.innerHeight;if(e&&n){e.focus({preventScroll:!0});return}let r=document.querySelector(`main.main`);r&&(r.tabIndex=-1,r.focus({preventScroll:!0}))}function _I(){let{page:e,navigateToPage:r}=kF(),[i,a]=(0,Z.useState)($S);(0,Z.useEffect)(()=>{let e=()=>a($S());return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[]);let[o,c]=(0,Z.useState)(hI),{locale:l,setLocale:u}=t(),d=O(),[p,g]=(0,Z.useState)(dI),[_,v]=(0,Z.useState)(()=>!m()),[b,C]=(0,Z.useState)(!1),[T,D]=(0,Z.useState)(()=>E(`shared`)),[A,j]=(0,Z.useState)(0),[M,N]=(0,Z.useState)(!1),[P,F]=(0,Z.useState)(!1),[I,L]=(0,Z.useState)(!1),[R,z]=(0,Z.useState)(null),[B,V]=(0,Z.useState)(0),H=(0,Z.useCallback)((e,t)=>{z({tone:t,text:e}),V(e=>e+1)},[]);(0,Z.useEffect)(()=>{let e=e=>{e.detail?.plane===`shared`&&!E(`shared`)&&D(!1)};return window.addEventListener(h,e),()=>window.removeEventListener(h,e)},[]),(0,Z.useEffect)(()=>{let e=new AbortController;return y(uI,e.signal).then(async t=>{w(t),g(t),t.connected&&!E(`shared`)&&await x(`shared`,e.signal),!e.signal.aborted&&(D(E(`shared`)),C(!1),v(!0))}).catch(()=>{e.signal.aborted||(C(!0),v(!0))}),()=>e.abort()},[]);let U=S(`machine`,p),W=S(`shared`,p);(0,Z.useEffect)(()=>{if(!T)return;let e=new AbortController;return fetch(`${W}/api/remote-workspace`,{signal:e.signal,cache:`no-store`}).then(e=>e.ok?e.json():Promise.reject(Error(`unavailable`))).then(t=>{e.signal.aborted||F(t.available===!0)}).catch(()=>{e.signal.aborted||F(!1)}),()=>e.abort()},[e,T,W]);let G=T&&P,ee=wF(e),te=ee?TF(ee,{remoteWorkspaceAvailable:G}):[],K=e===`claude`?`integrations`:e,q=e===`remote`&&s()===`hub`,ne=q&&M,[J,Y]=(0,Z.useState)(!1),ie=Qa(),{collapsed:X,toggle:ae}=ZF({shortcut:ie}),oe=ie&&no()===`macos`,se=ie&&RF(no()),ce=QF({managed:se}),le=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{if(oe&&le.current)return oI(le.current)},[oe]);let ue=(0,Z.useRef)(null),de=(0,Z.useRef)(null),fe=(0,Z.useRef)(!1);(0,Z.useEffect)(()=>{let e=()=>Y(!1);return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[]),(0,Z.useEffect)(()=>{if(!Qa())return;let e=e=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`a[href]`);if(!(n instanceof HTMLAnchorElement))return;let r=n.href;so(r)&&(e.preventDefault(),window.location.assign(r))};return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)},[]),(0,Z.useEffect)(()=>{let e=document.documentElement;o===`system`?(e.removeAttribute(`data-theme`),localStorage.removeItem(fI)):(e.setAttribute(`data-theme`,o),localStorage.setItem(fI,o))},[o]),(0,Z.useEffect)(()=>{if(R?.tone!==`ok`)return;let e=window.setTimeout(()=>z(null),4500);return()=>window.clearTimeout(e)},[R,B]);let me=Vt(`app-healthz:${U}`,[U,_],async e=>{let t=await fetch(`${U}/healthz`,{signal:e});return t.ok?mI(await t.json()):null},{pollMs:3e4,enabled:_}),he=(0,Q.jsx)(tI,{theme:o,onChange:c}),ge=me.data??`2.87.0`,[_e,ye]=(0,Z.useState)(!1);(0,Z.useEffect)(()=>{if(!J)return;let e=e=>{e.key===`Escape`&&Y(!1)};window.addEventListener(`keydown`,e);let t=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{window.removeEventListener(`keydown`,e),document.body.style.overflow=t}},[J]),(0,Z.useEffect)(()=>{if(J){fe.current=!0;let e=setTimeout(()=>de.current?.focus(),200);return()=>clearTimeout(e)}fe.current&&(fe.current=!1,ue.current?.focus())},[J]),(0,Z.useEffect)(()=>{let e=window.matchMedia(`(min-width: 761px)`),t=()=>{e.matches&&Y(!1)};return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let[be,xe]=(0,Z.useState)(0),{restarting:Se,restart:Ce}=uv(W,{onSettled:()=>xe(e=>e+1),report:H}),we=async()=>{if(!await aa({message:d(p.connected?`connection.disconnectConfirm`:`dash.stopConfirm`),confirmLabel:d(p.connected?`connection.disconnect`:`dash.stop`),tone:`danger`}))return;ye(!0);let e=await PF(U,{formatFailure:e=>d(`dash.stopFailed`,{status:String(e)}),formatStillRunning:()=>d(`dash.stopStillRunning`),formatUnknown:()=>d(`dash.stopUnknown`),mode:p.connected?`client`:`standalone`});e.status!==`accepted`&&(ye(!1),H(e.message,e.status===`rejected`?`err`:`warn`))},Te=async()=>{if(I)return;L(!0);let e=await f(`shared`);L(!1),e?D(!1):H(d(`connection.sessionLogoutFailed`),`err`)},Ee=(0,Q.jsxs)(`button`,{type:`button`,className:`brand brand-home`,onClick:()=>{r(`dashboard`),Y(!1)},"aria-label":d(`nav.goHome`),title:d(`nav.goHome`),...e===`dashboard`?{"aria-current":`page`}:{},children:[(0,Q.jsx)(`span`,{className:`brand-logo`,role:`img`,"aria-label":d(`app.logoAria`)}),(0,Q.jsx)(`span`,{className:`name`,children:`opencodex`}),(0,Q.jsxs)(`span`,{className:`ver`,title:ge,children:[`v`,ge]})]}),De=_&&e!==`startup`&&(!p.connected||T)&&(0,Q.jsx)(By,{pageName:d(`quotaSummary.aria`),title:d(`errorBoundary.title`),message:d(`errorBoundary.message`),detailsLabel:d(`errorBoundary.details`),reloadLabel:d(`errorBoundary.reload`),children:(0,Q.jsx)(lF,{apiBase:W})},W);return(0,Q.jsxs)(`div`,{ref:le,className:`app${ie?` app--desktop`:``}${oe?` app--macos`:``}${X?` app--nav-collapsed`:``}`,children:[(0,Q.jsx)(xF,{apiBase:W,enabled:_&&!p.connected}),R&&(0,Q.jsx)(sn,{tone:R.tone,onDismiss:()=>z(null),dismissLabel:d(`common.close`),children:R.text}),(0,Q.jsxs)(`header`,{className:`mobile-topbar`,inert:J,...ie?aI():{},children:[(0,Q.jsx)(`button`,{ref:ue,type:`button`,className:`menu-toggle`,onClick:()=>Y(e=>!e),"aria-expanded":J,"aria-controls":`app-sidebar`,"aria-label":d(J?`nav.closeMenu`:`nav.openMenu`),title:d(J?`nav.closeMenu`:`nav.openMenu`),children:(0,Q.jsx)(pe,{})}),Ee,(0,Q.jsxs)(`div`,{className:`mobile-topbar-actions`,children:[p.connected&&T&&(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb`,onClick:()=>{Te()},disabled:I,"aria-label":d(I?`connection.sessionLoggingOut`:`connection.sessionLogout`),title:d(`connection.sessionLogout`),children:(0,Q.jsx)(ve,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb sidebar-orb--danger`,onClick:we,disabled:_e,"aria-label":d(p.connected?`connection.disconnect`:`dash.stop`),title:d(p.connected?`connection.disconnect`:`dash.stop`),children:(0,Q.jsx)(Re,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb`,onClick:()=>{Ce()},disabled:Se,"aria-label":d(`dash.codexRestart`),title:d(`dash.codexRestart`),children:(0,Q.jsx)(re,{})})]})]}),J&&(0,Q.jsx)(`div`,{className:`drawer-scrim`,onClick:()=>Y(!1),"aria-hidden":`true`}),(0,Q.jsx)(sI,{collapsed:X,onToggle:ae}),(0,Q.jsxs)(`aside`,{id:`app-sidebar`,className:`sidebar${J?` open`:``}`,ref:de,tabIndex:-1,children:[(0,Q.jsxs)(`div`,{className:`drawer-head`,children:[Ee,(0,Q.jsx)(`button`,{type:`button`,className:`menu-toggle drawer-close`,onClick:()=>Y(!1),"aria-label":d(`nav.closeMenu`),title:d(`nav.closeMenu`),children:(0,Q.jsx)(ve,{})})]}),(0,Q.jsx)(`nav`,{children:CF.map(e=>{let{id:t,tkey:n,Icon:i}=e,a=ee?.id===t;return(0,Q.jsx)(`div`,{className:`nav-entry`,children:(0,Q.jsxs)(`button`,{type:`button`,className:`nav-item${a?` active`:``}`,"data-page":e.pages[0],"data-group":t,onClick:()=>{r(e.pages[0]),Y(!1)},"aria-current":a?`page`:void 0,children:[(0,Q.jsx)(i,{}),` `,d(n)]})},t)})}),(0,Q.jsxs)(`div`,{className:`sidebar-foot`,children:[(0,Q.jsxs)(`div`,{className:`lang-toggle`,children:[(0,Q.jsx)(qe,{"aria-hidden":!0}),(0,Q.jsx)(cn,{value:l,options:k.map(e=>({value:e.code,label:n(e.code)})),onChange:e=>u(e),label:d(`lang.label`),placement:`right`,portal:!1,style:{flex:1,minWidth:0,width:`100%`}})]}),se?(0,Q.jsxs)(`div`,{className:`sidebar-display-row`,children:[he,(0,Q.jsx)($F,{percent:ce.percent,canZoomIn:ce.canZoomIn,canZoomOut:ce.canZoomOut,onStep:ce.step})]}):(0,Q.jsxs)(`div`,{className:`sidebar-action-row sidebar-action-row--theme`,children:[(0,Q.jsx)(`span`,{className:`sidebar-action-label`,children:d(`theme.label`)}),he]}),(0,Q.jsxs)(`div`,{className:`sidebar-action-row`,children:[(0,Q.jsx)(`span`,{className:`sidebar-action-label`,children:d(`dash.actions`)}),(0,Q.jsxs)(`div`,{className:`sidebar-action-orbs`,children:[p.connected&&T&&(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb`,onClick:()=>{Te()},disabled:I,"aria-label":d(I?`connection.sessionLoggingOut`:`connection.sessionLogout`),title:d(`connection.sessionLogout`),children:(0,Q.jsx)(ve,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb sidebar-orb--danger`,onClick:we,disabled:_e,"aria-label":d(_e?`dash.stopping`:p.connected?`connection.disconnect`:`dash.stop`),title:d(_e?`dash.stopping`:p.connected?`connection.disconnect`:`dash.stop`),children:(0,Q.jsx)(Re,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb`,onClick:()=>{Ce()},disabled:Se,"aria-label":d(Se?`dash.codexRestarting`:`dash.codexRestart`),title:d(Se?`dash.codexRestarting`:`dash.codexRestart`),children:(0,Q.jsx)(re,{})})]})]}),(0,Q.jsx)(mF,{apiBase:W,onOpenUpdate:()=>{Y(!1),!io()&&r(`dashboard`,`update`)},onOpenTerminalCommand:()=>{Y(!1),oo()}})]})]}),(0,Q.jsxs)(`main`,{className:`main`,inert:J,children:[ie?(0,Q.jsx)(cI,{children:De}):De,(0,Q.jsxs)(`div`,{className:`main-inner${e===`models`&&i===`combos`?` main-inner--combos`:``}`,children:[_&&te.length>1&&(0,Q.jsx)(EF,{items:te.map(e=>({page:e,label:d(lI[e])})),currentPage:e,onNavigate:r,ariaLabel:d(`nav.sectionNavigation`),onFocusOrphaned:gI}),_&&p.link&&(0,Q.jsx)($,{tone:`warn`,children:p.link.home?d(`connection.linkManaged`,{home:p.link.home,linkId:p.link.linkId}):d(`connection.linkManagedUnnamed`,{linkId:p.link.linkId})}),(0,Q.jsx)(By,{pageName:d(lI[K]),title:d(`errorBoundary.title`),message:d(`errorBoundary.message`),detailsLabel:d(`errorBoundary.details`),reloadLabel:d(`errorBoundary.reload`),children:_?(0,Q.jsxs)(Q.Fragment,{children:[b&&(0,Q.jsx)(`div`,{className:`alert alert-err`,role:`alert`,children:d(`connection.machineUnavailable`)}),(p.connected&&!T||ne)&&(0,Q.jsx)(_A,{target:p.shared,focusOnMount:ne,onConnected:async e=>{ne&&await gA(W,void 0,e),e.throwIfAborted(),N(!1),D(E(`shared`)),j(e=>e+1)}},`${p.shared.serverOrigin}:${p.shared.bootstrapPath}`),e===`dashboard`&&(0,Q.jsx)(Bo,{apiBase:W,connected:p.connected,authenticationPending:p.connected&&!T,refreshEpoch:A}),e===`startup`&&(0,Q.jsx)(sP,{apiBase:W,machineApiBase:U,connected:p.connected}),e===`providers`&&(0,Q.jsx)(Qg,{apiBase:W}),e===`models`&&(0,Q.jsx)(CC,{apiBase:W,restartEpoch:be,connected:p.connected,catalogSyncedAt:p.catalogSyncedAt,reportRestart:H},W),e===`subagents`&&(0,Q.jsx)(JC,{apiBase:W},W),e===`advisor`&&(0,Q.jsx)(AC,{apiBase:W},W),e===`logs`&&(0,Q.jsx)(cE,{apiBase:W}),e===`usage`&&(0,Q.jsx)(pD,{apiBase:W,connected:p.connected,apiKeyId:p.apiKeyId}),e===`storage`&&(0,Q.jsx)(HD,{apiBase:W}),e===`remote`&&!ne&&(0,Q.jsx)(YP,{apiBase:W,sessionReady:T,pairingRecoveryAvailable:q,onRequestPairing:()=>N(!0),workspaceAvailable:G,onOpenWorkspace:()=>r(`remote-workspace`)},`${W}:${A}`),e===`remote-workspace`&&(0,Q.jsx)(pI,{available:G,apiBase:W,hubOrigin:p.shared.serverOrigin,onOpenRemoteLink:()=>r(`remote`)}),e===`codex-set`&&(0,Q.jsx)(nk,{apiBase:W,machineApiBase:U,connected:p.connected}),K===`integrations`&&(0,Q.jsx)(JN,{apiBase:W,machineApiBase:U,connected:p.connected})]}):(0,Q.jsx)(`div`,{className:`alert`,children:d(`connection.discovering`)})},K)]})]})]})}export{pI as RemoteWorkspaceRoute,_I as default};
58
+ IdentityFile ~/.ssh/id_ed25519`})})]})),(0,Q.jsx)(`a`,{href:`https://opencodex.me/guides/remote-link/`,target:`_blank`,rel:`noopener noreferrer`,children:c(`link.setup.guide`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>void Ee(),disabled:z!==null,children:c(S===`failed`?`link.retry`:`link.rescan`)})]}),(0,Q.jsxs)(`div`,{className:`remote-link-form`,children:[(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`remote-link-alias`,children:c(`link.alias`)}),(0,Q.jsx)(`input`,{id:`remote-link-alias`,"aria-describedby":`remote-link-alias-help`,className:`input`,spellCheck:!1,value:k,onChange:e=>A(e.target.value),placeholder:c(`link.aliasPlaceholder`),autoComplete:`off`}),(0,Q.jsx)(`p`,{id:`remote-link-alias-help`,className:`remote-link-info`,children:c(`link.aliasRequired`)}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>void Oe(),disabled:!k.trim()||z!==null,children:[(0,Q.jsx)(st,{}),c(z===`probe`?`link.probing`:`link.probe`)]})]}),j&&(0,Q.jsxs)(`div`,{className:`remote-link-panel`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`remote-link-info`,children:c(`link.hostFingerprint`)}),(0,Q.jsx)(`p`,{className:`remote-link-fingerprint`,children:(0,Q.jsx)(`code`,{children:j.fingerprint})}),(0,Q.jsx)(`span`,{className:`remote-link-info`,children:j.keyType})]}),(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:L,onChange:e=>R(e.target.checked)}),` `,c(`link.confirmFingerprint`)]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>void ke(),disabled:!L||z!==null,children:c(z===`confirm`?`link.confirming`:`link.confirm`)})]}),P&&(0,Q.jsxs)(`div`,{className:`remote-link-panel`,children:[(0,Q.jsx)(`p`,{className:`remote-link-info`,children:c(`link.ocxVersion`,{version:P.ocxVersion})}),d===`child`&&xe&&(0,Q.jsx)($,{tone:`warn`,children:c(`remoteLink.findHome.notice`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>void(d===`child`&&xe?je():Ae()),disabled:z!==null||d===`child`&&!Se,children:c(d===`child`&&xe?z===`join`?`remoteLink.joining`:`remoteLink.findHome.connect`:z===`apply`?`link.applying`:`link.apply`)})]}),b&&S!==`failed`&&V&&(0,Q.jsx)(JP,{error:V}),U&&V?.key!==`remoteLink.error.join_restart_failed`&&(0,Q.jsxs)(`div`,{children:[U.phase===`probe`&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`remote-link-info`,children:c(`link.probeHelp`)}),(0,Q.jsx)(`pre`,{children:(0,Q.jsx)(`code`,{children:`ssh -o BatchMode=yes <alias> true`})})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:Ne,disabled:z!==null,children:c(`link.retry`)})]}),(0,Q.jsx)(`div`,{className:`remote-link-sheet-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:be,children:c(`link.cancel`)})})]})]}),(0,Q.jsx)(`dialog`,{ref:J,className:`remote-link-confirm-dialog`,"aria-labelledby":`remote-link-confirm-title`,onCancel:e=>{e.preventDefault(),Pe()},children:G&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`h3`,{id:`remote-link-confirm-title`,children:G.force?c(`remoteLink.forceRemove.title`,{alias:G.row.alias}):c(`link.disconnect`)}),(0,Q.jsx)(`p`,{children:G.force?(0,Q.jsx)(T,{k:`remoteLink.forceRemove.body`,cmd:`ocx disconnect`,vars:{alias:G.row.alias}}):c(`link.disconnectConfirm`,{alias:G.row.alias})}),te&&(0,Q.jsx)(`p`,{className:`remote-link-error`,role:`alert`,children:c(te)}),(0,Q.jsxs)(`div`,{className:`remote-link-sheet-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:Pe,children:c(`link.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-danger`,onClick:()=>void Ie(),disabled:z===`remove`,children:G.force?c(`remoteLink.forceRemove.confirm`):c(`link.disconnect`)})]})]})})]}):(0,Q.jsxs)(`div`,{className:`remote-link-page`,children:[(0,Q.jsx)(`div`,{className:`page-head`,children:(0,Q.jsx)(`h2`,{children:c(`link.title`)})}),(0,Q.jsx)($,{tone:`warn`,children:c(`link.sessionRequired`)}),fe&&(0,Q.jsx)(`div`,{className:`panel`,children:fe})]})}function XP(e){let t=document.documentElement,n=()=>t.style.setProperty(`--ocx-sticky-top-h`,String(Math.ceil(e.getBoundingClientRect().height)));n();let r=typeof ResizeObserver>`u`?null:new ResizeObserver(n);return r?.observe(e),()=>{r?.disconnect(),t.style.removeProperty(`--ocx-sticky-top-h`)}}var ZP=6e4,QP=7,$P=8,eF=.8;function tF(e,t){try{return new Intl.DateTimeFormat(t,{hour:`2-digit`,minute:`2-digit`,hour12:!1}).format(e)}catch{return new Date(e).toTimeString().slice(0,5)}}function nF(e,t){return e.labelKey?t(e.labelKey):e.label??e.id}function rF(e,t){return e===`critical`?t(`quotaSummary.critical`):e===`warn`?t(`quotaSummary.warn`):``}function iF(e){try{return e.matches(`:focus-visible`)}catch{return!0}}function aF(e,t,n){(0,Z.useLayoutEffect)(()=>{if(!e)return;let r=()=>{let e=t.current,r=n.current;if(!e||!r)return;let i=e.getBoundingClientRect(),a=r.offsetWidth,o=document.documentElement.clientWidth||window.innerWidth,s=Math.max($P,o-a-$P),c=Math.min(Math.max(i.left,$P),s);r.style.setProperty(`--qs-pop-top`,String(Math.round(i.bottom+QP))),r.style.setProperty(`--qs-pop-left`,String(Math.round(c))),r.style.setProperty(`--qs-pop-gap`,String(Math.round(i.bottom+QP)-i.bottom));let l=r.getBoundingClientRect();r.style.setProperty(`--qs-bridge-left`,String(Math.min(0,Math.max(0,i.left)-l.left))),r.style.setProperty(`--qs-bridge-right`,String(Math.min(0,l.right-Math.min(o,i.right))))};return r(),window.addEventListener(`scroll`,r,{capture:!0,passive:!0}),window.addEventListener(`resize`,r),()=>{window.removeEventListener(`scroll`,r,{capture:!0}),window.removeEventListener(`resize`,r)}},[e,t,n])}function oF({row:e,t,locale:n}){let[r,i]=(0,Z.useState)(!1),[a,o]=(0,Z.useState)(!1),[s,c]=(0,Z.useState)(!1),[l,u]=(0,Z.useState)(!1),d=(0,Z.useRef)(null),f=(0,Z.useRef)(null),p=(0,Z.useRef)(null),m=(0,Z.useRef)(``),h=(0,Z.useId)(),g=!l&&(r||a||s),_=(0,Z.useCallback)(()=>{i(!1),o(!1),c(!1)},[]);(0,Z.useEffect)(()=>{if(!g)return;let e=e=>{d.current&&!d.current.contains(e.target)&&c(!1)},t=e=>{if(e.key===`Escape`){let e=p.current?.contains(document.activeElement);_(),e&&(f.current?.focus(),u(!0))}};return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,t)}},[g,_]),aF(g,f,p);let v=e=>{e.pointerType!==`touch`&&i(!0)},y=e=>{e.pointerType!==`touch`&&i(!1),u(!1)},b=t=>{if(t.button!==0||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey)return;t.preventDefault();let n=m.current===`touch`;if(m.current=``,n&&!g){c(!0);return}_(),n||u(!0),Jg(e.provider)},{headline:x}=e,S=rF(e.severity,t);return(0,Q.jsxs)(`li`,{ref:d,className:`quota-summary-item quota-summary-item--${e.severity}`,onPointerEnter:v,onPointerLeave:y,onFocus:e=>{iF(e.target)&&(u(!1),o(!0))},onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||o(!1)},children:[(0,Q.jsxs)(`a`,{ref:f,href:`#${Ug(e.provider)}`,className:`quota-summary-chip${g?` quota-summary-chip--open`:``}`,"aria-expanded":g,"aria-controls":g?h:void 0,"aria-describedby":g?`${h}-table`:void 0,onPointerDown:e=>{m.current=e.pointerType},onClick:b,children:[(0,Q.jsx)(`span`,{className:`quota-summary-name`,children:e.label}),(0,Q.jsx)(`span`,{className:`quota-summary-pct`,children:We(x.percent)}),S&&(0,Q.jsx)(`span`,{className:`quota-summary-flag`,"aria-hidden":`true`,children:`!`}),S&&(0,Q.jsx)(`span`,{className:`sr-only`,children:S}),(0,Q.jsx)(`span`,{className:`sr-only`,children:t(`quotaSummary.openAccounts`)})]}),g&&(0,Q.jsxs)(`div`,{ref:p,id:h,className:`quota-summary-popover`,role:`group`,"aria-label":e.label,children:[(0,Q.jsxs)(`div`,{className:`quota-summary-popover-head`,children:[(0,Q.jsx)(`strong`,{children:e.label}),S&&(0,Q.jsx)(`span`,{className:`quota-summary-badge quota-summary-badge--${e.severity}`,children:S})]}),(0,Q.jsx)(`table`,{id:`${h}-table`,className:`quota-summary-table`,children:(0,Q.jsx)(`tbody`,{children:e.windows.map(e=>(0,Q.jsxs)(`tr`,{className:`quota-summary-row--${e.severity}`,children:[(0,Q.jsx)(`th`,{scope:`row`,children:nF(e,t)}),(0,Q.jsx)(`td`,{className:`quota-summary-row-pct`,children:We(e.percent)}),(0,Q.jsx)(`td`,{className:`quota-summary-row-reset`,children:e.resetAt===void 0?`-`:_s(e.resetAt,t,n)})]},e.id))})}),(0,Q.jsxs)(`div`,{className:`quota-summary-popover-foot`,children:[e.updatedAt!==void 0&&(0,Q.jsx)(`span`,{children:t(e.observed?`quotaSummary.observedAt`:`quotaSummary.dataAt`,{time:tF(e.updatedAt,n)})}),(0,Q.jsx)(`a`,{href:`#${Ug(e.provider)}`,className:`quota-summary-popover-link`,onPointerDown:e=>{m.current=e.pointerType},onClick:b,children:t(`quotaSummary.openAccounts`)})]})]})]})}var sF={overflow:!1,atStart:!0,atEnd:!0};function cF({rows:e,t,locale:n}){let r=(0,Z.useRef)(null),[i,a]=(0,Z.useState)(sF),o=(0,Z.useCallback)(()=>{let e=r.current;if(!e)return;let t=e.scrollWidth-e.clientWidth,n=t>1?{overflow:!0,atStart:e.scrollLeft<=1,atEnd:e.scrollLeft>=t-1}:sF;a(e=>e.overflow===n.overflow&&e.atStart===n.atStart&&e.atEnd===n.atEnd?e:n)},[]),s=e.map(e=>`${e.provider}:${e.label}:${We(e.headline.percent)}:${e.severity}`).join(`|`);(0,Z.useEffect)(()=>{let e=r.current;if(!e)return;let t=requestAnimationFrame(o),n=typeof ResizeObserver>`u`?null:new ResizeObserver(()=>o());n?.observe(e);for(let t of Array.from(e.children))n?.observe(t);return()=>{cancelAnimationFrame(t),n?.disconnect()}},[o,s]);let c=e=>{let t=r.current;if(!t)return;let n=t.scrollWidth-t.clientWidth;if(e<0?t.scrollLeft<=1:t.scrollLeft>=n-1){o();return}let i=typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches;t.scrollBy({left:e*Math.max(t.clientWidth*eF,80),behavior:i?`auto`:`smooth`})};return(0,Q.jsxs)(`div`,{className:`quota-summary-scroller${i.overflow?` quota-summary-scroller--overflow`:``}`,children:[i.overflow&&(0,Q.jsx)(`button`,{type:`button`,className:`quota-summary-scroll quota-summary-scroll--prev`,"aria-label":t(`quotaSummary.scrollPrev`),title:t(`quotaSummary.scrollPrev`),"aria-disabled":i.atStart,onClick:()=>c(-1),children:(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:`«`})}),(0,Q.jsx)(`ul`,{ref:r,className:`quota-summary-list`,onScroll:o,children:e.map(e=>(0,Q.jsx)(oF,{row:e,t,locale:n},e.provider))}),i.overflow&&(0,Q.jsx)(`button`,{type:`button`,className:`quota-summary-scroll quota-summary-scroll--next`,"aria-label":t(`quotaSummary.scrollNext`),title:t(`quotaSummary.scrollNext`),"aria-disabled":i.atEnd,onClick:()=>c(1),children:(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:`»`})})]})}function lF({apiBase:e}){let{t:n,locale:r}=t(),i=(0,Z.useCallback)(async t=>{let n=await fetch(`${e}/api/provider-quotas`,{signal:t});if(!n.ok)throw Error(`quota summary load failed`);let r=await n.json();return{fetchedAt:Date.now(),reports:ie(r?.reports)}},[e]),a=Ya(`ocx.quota-summary.provider-quotas.v1:${e}`,[e],i,{isEmpty:e=>Object.keys(e.reports).length===0,pollMs:ZP,pauseWhenHidden:!0}),o=a.data;if(!o)return null;let s=Ze(o.reports,e=>be(e,n));if(s.length===0)return null;let c=!a.lastAttemptOk;return(0,Q.jsxs)(`section`,{className:`quota-summary-bar`,"aria-label":n(`quotaSummary.aria`),ref:XP,children:[(0,Q.jsx)(cF,{rows:s,t:n,locale:r}),(0,Q.jsx)(`span`,{className:`quota-summary-updated${c?` quota-summary-updated--stale`:``}`,title:c?n(`quotaSummary.refreshFailed`):void 0,children:n(`quotaSummary.updated`,{time:tF(o.fetchedAt,r)})}),(0,Q.jsx)(`span`,{className:`sr-only`,role:`status`,"aria-live":`polite`,children:c?n(`quotaSummary.refreshFailed`):``})]})}var uF=3e5,dF=6e5,fF=`https://github.com/lidge-jun/opencodex`;async function pF(e,t){let n=await fetch(e,{signal:t});return n.ok?await n.json():null}function mF({apiBase:e,onOpenUpdate:t,onOpenTerminalCommand:n}){let r=O(),[i,a]=(0,Z.useState)(!1),[o,s]=(0,Z.useState)(null),c=Vt(`sidebar-star:${e}`,[e],t=>pF(`${e}/api/github/star`,t),{pollMs:uF}),l=to(e),u=Vt(`sidebar-update-badge:`+l,[l],e=>pF(l,e),{pollMs:Qa()?6e4:dF}),d=c.data?.state??null,f=o!==null&&o.basedOn===d?o.state:d??`not-starred`,p=c.data?.url??fF,m=f===`starred`,h=u.data,g=h?.updateAvailable===!0,_=h?.latestVersion??null,v=()=>window.open(p,`_blank`,`noopener,noreferrer`),y=async()=>{if(!(m||i)){if(f===`unauthenticated`){v();return}a(!0);try{let t=await fetch(`${e}/api/github/star`,{method:`POST`}),n=t.ok?await t.json():null;if(n?.ok===!0){s({state:`starred`,basedOn:d});return}n?.state&&s({state:n.state,basedOn:d}),v()}catch{v()}finally{a(!1),c.refresh()}}},b=r(m?`sidebar.starred`:f===`unauthenticated`?`sidebar.starUnauthenticated`:`sidebar.star`),x=g&&_?r(`sidebar.updateAvailable`,{version:_}):Qa()?r(`sidebar.desktopUpdate`):r(`sidebar.checkUpdate`);return(0,Q.jsxs)(`div`,{className:`sidebar-github-row`,children:[(0,Q.jsxs)(`a`,{className:`sidebar-link sidebar-github-link`,href:p,target:`_blank`,rel:`noreferrer`,children:[(0,Q.jsx)(je,{}),` `,r(`common.github`)]}),(0,Q.jsxs)(`div`,{className:`sidebar-github-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb${m?` sidebar-orb--starred`:``}`,onClick:()=>{y()},disabled:i||m,"aria-label":b,"aria-pressed":m,title:b,children:(0,Q.jsx)(te,{"aria-hidden":`true`,...m?{fill:`currentColor`}:{}})}),(0,Q.jsxs)(`button`,{type:`button`,className:`sidebar-orb${g?` sidebar-orb--update`:``}`,onClick:t,"aria-label":x,title:x,children:[(0,Q.jsx)(Oe,{"aria-hidden":`true`}),g&&(0,Q.jsx)(`span`,{className:`sidebar-orb-dot`,"aria-hidden":`true`})]}),Qa()&&(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb`,onClick:n,"aria-label":r(`sidebar.terminalCommand`),title:r(`sidebar.terminalCommand`),children:(0,Q.jsx)(de,{"aria-hidden":`true`})})]})]})}var hF=`ocx-desktop-star-onboarding`,gF=`https://github.com/lidge-jun/opencodex`,_F=1200;function vF(){try{return window.localStorage.getItem(hF)!==null}catch{return!0}}function yF(){try{window.localStorage.setItem(hF,`seen`)}catch{}}function bF(e){window.location.assign(e)}function xF({apiBase:e,enabled:t}){let[n,r]=(0,Z.useState)(null),[i,a]=(0,Z.useState)(vF);(0,Z.useEffect)(()=>{if(!t||i||!Qa())return;let n=new AbortController,o=window.setTimeout(()=>{fetch(`${e}/api/github/star`,{signal:n.signal}).then(async e=>e.ok?await e.json():{}).catch(()=>n.signal.aborted?null:{}).then(e=>{if(e){if(e.state===`starred`){yF(),a(!0);return}r(e)}})},_F);return()=>{window.clearTimeout(o),n.abort()}},[e,t,i]);let o=(0,Z.useCallback)(()=>{yF(),a(!0)},[]);return i||!t||!n?null:(0,Q.jsx)(SF,{apiBase:e,status:n,onClose:o})}function SF({apiBase:e,status:t,onClose:n}){let r=O(),i=(0,Z.useId)(),a=(0,Z.useId)(),o=(0,Z.useRef)(null),[s,c]=(0,Z.useState)(`prompt`),l=t.url??gF,u=t.state===`not-starred`;(0,Z.useEffect)(()=>{let e=o.current;e&&!e.open&&e.showModal()},[]);let d=(0,Z.useCallback)(e=>{e.preventDefault(),s!==`starring`&&n()},[n,s]),f=()=>{bF(l),n()},p=async()=>{c(`starring`);try{let t=await fetch(`${e}/api/github/star`,{method:`POST`});if((t.ok?await t.json():null)?.ok===!0){Ut(`sidebar-star:${e}`,{state:`starred`,url:l}),c(`thanks`);return}}catch{}c(`failed`)},m=s===`thanks`,h=s===`failed`;return(0,Q.jsxs)(`dialog`,{ref:o,"aria-labelledby":i,"aria-describedby":a,className:`modal-overlay star-onboarding-overlay`,onCancel:d,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":r(`common.close`),tabIndex:-1,onClick:()=>{s!==`starring`&&n()}}),(0,Q.jsxs)(`div`,{className:`modal-card star-onboarding`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsx)(`span`,{className:`star-onboarding-mark${m?` star-onboarding-mark--done`:``}`,"aria-hidden":`true`,children:(0,Q.jsx)(te,{...m?{fill:`currentColor`}:{}})}),(0,Q.jsx)(`h3`,{id:i,className:`star-onboarding-title`,children:r(m?`onboarding.star.thanks`:`onboarding.star.title`)}),(0,Q.jsx)(`p`,{id:a,className:`star-onboarding-body`,children:r(m?`onboarding.star.thanksBody`:h?`onboarding.star.failed`:`onboarding.star.body`)}),m?(0,Q.jsx)(`div`,{className:`star-onboarding-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:n,autoFocus:!0,children:r(`onboarding.star.done`)})}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`star-onboarding-actions`,children:[u&&!h?(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-primary`,disabled:s===`starring`,onClick:()=>{p()},autoFocus:!0,children:[(0,Q.jsx)(te,{"aria-hidden":`true`}),r(s===`starring`?`onboarding.star.starring`:`onboarding.star.cta`)]}):(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-primary`,onClick:f,autoFocus:!0,children:[(0,Q.jsx)(je,{"aria-hidden":`true`}),r(h?`onboarding.star.openPage`:`onboarding.star.cta`)]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:s===`starring`,onClick:n,children:r(`onboarding.star.later`)})]}),(0,Q.jsxs)(`p`,{className:`star-onboarding-hint`,children:[r(u&&!h?`onboarding.star.ghHint`:`onboarding.star.browserHint`),u&&!h&&(0,Q.jsxs)(Q.Fragment,{children:[` `,(0,Q.jsx)(`button`,{type:`button`,className:`star-onboarding-link`,disabled:s===`starring`,onClick:f,children:r(`onboarding.star.openPage`)})]})]})]})]})]})}var CF=[{id:`dashboard`,tkey:`nav.dashboard`,Icon:Ue,pages:[`dashboard`]},{id:`connect`,tkey:`nav.connect`,Icon:st,pages:[`integrations`],embedded:[`claude`]},{id:`codex-set`,tkey:`nav.codexSet`,Icon:Xe,pages:[`codex-set`]},{id:`providers`,tkey:`nav.providers`,Icon:ce,pages:[`providers`]},{id:`models`,tkey:`nav.models`,Icon:Ie,pages:[`models`]},{id:`subagents`,tkey:`nav.subagents`,Icon:Ye,pages:[`subagents`,`advisor`]},{id:`usage-logs`,tkey:`nav.usageLogs`,Icon:j,pages:[`usage`,`logs`,`storage`]},{id:`remote`,tkey:`nav.remote`,Icon:rt,pages:[`remote`,`remote-workspace`]}];function wF(e){return CF.find(t=>t.pages.includes(e)||t.embedded?.includes(e))??null}function TF(e,t){return e.pages.filter(e=>e!==`remote-workspace`||t.remoteWorkspaceAvailable)}function EF({items:e,currentPage:t,onNavigate:n,ariaLabel:r,onFocusOrphaned:i}){let a=(0,Z.useRef)(null),o=(0,Z.useRef)(null),s=(0,Z.useRef)(i);(0,Z.useLayoutEffect)(()=>{s.current=i}),(0,Z.useLayoutEffect)(()=>{let e=a.current;return()=>{e&&e.contains(e.ownerDocument.activeElement)&&s.current?.()}},[]),(0,Z.useLayoutEffect)(()=>{let t=a.current,n=o.current;!t||n===null||t.contains(t.ownerDocument.activeElement)||e.some(e=>e.page===n)||(t.querySelector(`[aria-current="page"]`)??t.querySelector(`button`))?.focus()},[e]);let c=()=>[...a.current?.querySelectorAll(`button`)??[]],l=e=>{let t=c(),n=t.indexOf(e.currentTarget),r=null;e.key===`ArrowRight`?r=(n+1)%t.length:e.key===`ArrowLeft`?r=(n-1+t.length)%t.length:e.key===`Home`?r=0:e.key===`End`&&(r=t.length-1),r!==null&&(e.preventDefault(),t[r]?.focus())};return(0,Q.jsx)(`nav`,{ref:a,className:`section-switcher`,"aria-label":r,onFocus:e=>{o.current=e.target.dataset.sectionPage??null},onBlur:e=>{if(a.current?.contains(e.relatedTarget))return;let t=e.target;window.setTimeout(()=>{t.isConnected&&(o.current=null)},0)},children:e.map(e=>(0,Q.jsx)(`button`,{type:`button`,className:`section-switcher-btn`,"data-section-page":e.page,"aria-current":e.page===t?`page`:void 0,onClick:()=>{e.page!==t&&n(e.page)},onKeyDown:l,children:e.label},e.page))})}var DF=[`ocx-global-view`,`ocx-view`,`ocx-providers-view`,`ocx-subagents-view`,`ocx-storage-view`,`ocx-codexauth-view`,`ocx-apikeys-view`,`ocx-claudecode-view`,`ocx-usage-view`,`ocx-logs-view`,`ocx-models-view`,`ocx-dashboard-view`];function OF(){try{for(let e of DF)localStorage.removeItem(e)}catch{}}function kF(){let[e,t]=(0,Z.useState)(Sg);(0,Z.useEffect)(()=>{OF()},[]);let n=(0,Z.useCallback)(e=>{let n=Ng(e);n.replaceTo&&Kt(n.replaceTo),t(n.page)},[]);return(0,Z.useEffect)(()=>{let e=()=>{n(Wt(window.location.hash))};return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[n]),(0,Z.useEffect)(()=>{let n=Ng(Wt(window.location.hash));n.replaceTo&&Kt(n.replaceTo),n.page!==e&&t(n.page)},[e]),{page:e,setPageState:t,navigateToPage:(e,n)=>{qt(n?`${e}/${n}`:e),t(e)}}}var AF=15e3,jF=3e3;function MF(e,t,n){return typeof e?.message==`string`&&e.message.trim()?e.message:typeof e?.error==`string`&&e.error.trim()?e.error:n(t)}async function NF(e,t,n){try{return(await t(`${e}/healthz`,{method:`GET`,cache:`no-store`,signal:AbortSignal.timeout(n)})).ok?`answering`:`undecided`}catch{return`gone`}}async function PF(e,t={}){let{fetchFn:n=fetch,timeoutMs:r=AF,formatFailure:i=e=>`Failed to stop proxy (HTTP ${e}).`,formatStillRunning:a=()=>`The proxy is still answering, so it did not stop.`,formatUnknown:o=()=>`The proxy did not confirm the stop. Check whether it is still running.`,mode:s=`standalone`,livenessTimeoutMs:c=jF}=t,l;try{l=await n(`${e}${s===`client`?`/api/machine/disconnect`:`/api/stop`}`,{method:`POST`,...s===`client`?{headers:{"Content-Type":`application/json`},body:`{}`}:{},signal:AbortSignal.timeout(r)})}catch{if(s===`client`)return{status:`unknown`,message:o()};let t=await NF(e,n,c);return t===`gone`?{status:`accepted`}:t===`answering`?{status:`unknown`,message:a()}:{status:`unknown`,message:o()}}let u=null,d=!0;try{u=await l.json()}catch{d=!1}return!l.ok||u?.success===!1?{status:`rejected`,message:MF(u,l.status,i)}:d?{status:`accepted`}:{status:`unknown`,message:o()}}var FF=`ocx-desktop-zoom`,IF=.5,LF=.1;function RF(e){return e===`macos`||e===`linux`}function zF(e){return Number.isFinite(e)?Math.round(Math.min(Math.max(e,IF),3)*100)/100:1}function BF(e,t){return t===`reset`?1:zF(e+(t===`in`?LF:-.1))}function VF(e){return Math.round(e*100)}function HF(e=typeof localStorage>`u`?void 0:localStorage){try{let t=e?.getItem(FF);return t==null?1:zF(Number(t))}catch{return 1}}function UF(e,t=typeof localStorage>`u`?void 0:localStorage){try{t?.setItem(FF,String(e))}catch{}}function WF(e,t){return(t===`macos`?e.metaKey:e.ctrlKey)?e.key===`-`||e.key===`_`?`out`:e.key===`=`||e.key===`+`?`in`:e.key===`0`?`reset`:null:null}function GF(e,t){if(!Number.isFinite(t)||t===0)return{accumulated:e,action:null};let n=(Math.sign(e)===Math.sign(t)?e:0)+t;return Math.abs(n)<50?{accumulated:n,action:null}:{accumulated:0,action:n<0?`in`:`out`}}async function KF(e){let t=window.__TAURI_INTERNALS__?.invoke??window.__TAURI__?.core?.invoke;if(!t)return!1;try{return await t(`plugin:webview|set_webview_zoom`,{value:e}),!0}catch{return!1}}var qF=`ocx-sidebar-collapsed`;function JF(e=typeof localStorage>`u`?void 0:localStorage){try{return e?.getItem(qF)===`1`}catch{return!1}}function YF(e){try{localStorage.setItem(qF,e?`1`:`0`)}catch{}}function XF(e){return e instanceof HTMLElement&&(e.isContentEditable||e.closest(`input, textarea, select, [contenteditable]`)!==null)}function ZF({shortcut:e=!1}={}){let[t,n]=(0,Z.useState)(JF),r=(0,Z.useCallback)(()=>n(e=>!e),[]);return(0,Z.useEffect)(()=>{YF(t)},[t]),(0,Z.useEffect)(()=>{if(!e)return;let t=e=>{!(e.metaKey||e.ctrlKey)||e.altKey||e.shiftKey||(e.key===`b`||e.key===`B`)&&(XF(e.target)||(e.preventDefault(),r()))};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[r,e]),{collapsed:t,toggle:r}}function QF({managed:e}){let[t,n]=(0,Z.useState)(HF),r=(0,Z.useCallback)(e=>n(t=>BF(t,e)),[]),i=(0,Z.useRef)(0);return(0,Z.useEffect)(()=>{e&&(KF(t),UF(t))},[e,t]),(0,Z.useEffect)(()=>{if(!e)return;let t=no(),n=e=>{let n=WF(e,t);n&&(e.preventDefault(),e.stopImmediatePropagation(),r(n))},a=e=>{if(!e.ctrlKey)return;e.preventDefault(),e.stopImmediatePropagation();let t=GF(i.current,e.deltaY);i.current=t.accumulated,t.action&&r(t.action)},o=e=>{e.ctrlKey&&(e.preventDefault(),e.stopImmediatePropagation())};return window.addEventListener(`keydown`,n,{capture:!0}),window.addEventListener(`wheel`,a,{capture:!0,passive:!1}),window.addEventListener(`mousewheel`,o,{capture:!0,passive:!1}),()=>{window.removeEventListener(`keydown`,n,{capture:!0}),window.removeEventListener(`wheel`,a,{capture:!0}),window.removeEventListener(`mousewheel`,o,{capture:!0})}},[e,r]),{zoom:t,percent:VF(t),canZoomIn:t<3,canZoomOut:t>IF,step:r}}function $F({percent:e,canZoomIn:t,canZoomOut:n,onStep:r}){let i=O();return(0,Q.jsxs)(`div`,{className:`zoom-control`,role:`group`,"aria-label":i(`zoom.label`),title:i(`zoom.label`),children:[(0,Q.jsx)(`button`,{type:`button`,className:`zoom-control__btn`,disabled:!n,onClick:()=>r(`out`),"aria-label":i(`zoom.out`),title:i(`zoom.out`),children:(0,Q.jsx)(L,{"aria-hidden":!0})}),(0,Q.jsxs)(`button`,{type:`button`,className:`zoom-control__value`,onClick:()=>r(`reset`),"aria-label":i(`zoom.reset`),title:i(`zoom.reset`),children:[e,`%`]}),(0,Q.jsx)(`button`,{type:`button`,className:`zoom-control__btn`,disabled:!t,onClick:()=>r(`in`),"aria-label":i(`zoom.in`),title:i(`zoom.in`),children:(0,Q.jsx)(N,{"aria-hidden":!0})})]})}var eI=[{mode:`light`,tkey:`theme.light`,Icon:J},{mode:`dark`,tkey:`theme.dark`,Icon:he},{mode:`system`,tkey:`theme.system`,Icon:rt}];function tI({theme:e,onChange:t}){let n=O();return(0,Q.jsx)(`div`,{className:`theme-switch`,role:`group`,"aria-label":n(`theme.label`),children:eI.map(({mode:r,tkey:i,Icon:a})=>(0,Q.jsx)(`button`,{type:`button`,className:`theme-switch__btn`,"aria-pressed":e===r,"aria-label":n(i),title:n(i),onClick:()=>t(r),children:(0,Q.jsx)(a,{"aria-hidden":!0})},r))})}function nI(e){try{window.__TAURI__?.core?.invoke?.(e).catch(()=>{})}catch{}}var rI=`a, button, input, select, textarea, summary, [role='button'], [role='link'], [contenteditable]`;function iI(e){return e instanceof Element&&e.closest(rI)!==null}function aI(){return{onMouseDown:e=>{e.button!==0||iI(e.target)||nI(`plugin:window|start_dragging`)},onDoubleClick:e=>{iI(e.target)||nI(`plugin:window|toggle_maximize`)}}}function oI(e){let t=window.__TAURI__?.core,n=window.devicePixelRatio,r=Number.isFinite(n)&&n>0?Math.max(2,n):2,i=!0,a=0,o,s=()=>{let t=window.devicePixelRatio,n=Number.isFinite(t)&&t>0?r/t:1,i=Math.max(1,n);if(e.classList.toggle(`app--reduced-zoom`,i>1),e.style.setProperty(`--titlebar-h`,`${Math.ceil(40*i)}px`),n>=1){e.style.setProperty(`--tl-inset`,`${Math.ceil(80*i)}px`),e.style.setProperty(`--chrome-clear`,`${Math.ceil(124*i)}px`);return}let a=Math.ceil(80*n);e.style.setProperty(`--tl-inset`,`${a}px`),e.style.setProperty(`--chrome-clear`,`${a+44}px`)},c=()=>{if(!t?.invoke)return;let e=++a;t.invoke(`plugin:window|scale_factor`).then(t=>{!i||e!==a||typeof t==`number`&&Number.isFinite(t)&&t>0&&(r=t,s())}).catch(()=>{})},l=()=>{s(),clearTimeout(o),o=setTimeout(c,80)};return s(),c(),window.addEventListener(`resize`,l),window.addEventListener(`focus`,c),()=>{i=!1,clearTimeout(o),window.removeEventListener(`resize`,l),window.removeEventListener(`focus`,c)}}function sI({collapsed:e,onToggle:t}){let n=O()(e?`nav.expandSidebar`:`nav.collapseSidebar`);return(0,Q.jsx)(`div`,{className:`sidebar-top`,...aI(),children:(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-collapse`,onClick:t,"aria-expanded":!e,"aria-controls":`app-sidebar`,"aria-label":n,title:n,children:(0,Q.jsx)(V,{})})})}function cI({children:e}){return(0,Q.jsx)(`div`,{className:`main-top`,...aI(),children:e})}var lI={dashboard:`nav.dashboard`,startup:`nav.startup`,providers:`nav.providers`,models:`nav.models`,subagents:`nav.subagents`,advisor:`nav.advisor`,logs:`nav.logs`,usage:`nav.usage`,storage:`nav.storage`,remote:`nav.remote`,"remote-workspace":`nav.remoteWorkspace`,"codex-set":`nav.codexSet`,integrations:`nav.connect`,claude:`nav.claude`},uI=``,dI=D(uI);w(dI),d();var fI=`ocx-theme`;function pI({available:e,apiBase:t,hubOrigin:n,onOpenRemoteLink:r}){let i=O();return e?(0,Q.jsx)(FP,{apiBase:t,hubOrigin:n}):(0,Q.jsxs)(`section`,{className:`panel`,children:[(0,Q.jsx)(`h2`,{children:i(`nav.remoteWorkspace`)}),(0,Q.jsxs)($,{tone:`warn`,children:[i(`link.workspaceUnavailable`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:r,children:i(`nav.remote`)})]})]})}function mI(e){if(!e||typeof e!=`object`||!(`version`in e))return null;let t=e.version;return typeof t==`string`&&t.length>0?t:null}function hI(){let e=localStorage.getItem(fI);return e===`light`||e===`dark`?e:`system`}function gI(){let e=document.querySelector(`.sidebar .nav-item.active`),t=e?.getBoundingClientRect(),n=!!t&&t.width>0&&t.height>0&&t.right>0&&t.left<window.innerWidth&&t.bottom>0&&t.top<window.innerHeight;if(e&&n){e.focus({preventScroll:!0});return}let r=document.querySelector(`main.main`);r&&(r.tabIndex=-1,r.focus({preventScroll:!0}))}function _I(){let{page:e,navigateToPage:r}=kF(),[i,a]=(0,Z.useState)($S);(0,Z.useEffect)(()=>{let e=()=>a($S());return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[]);let[o,c]=(0,Z.useState)(hI),{locale:l,setLocale:u}=t(),d=O(),[p,g]=(0,Z.useState)(dI),[_,v]=(0,Z.useState)(()=>!m()),[b,C]=(0,Z.useState)(!1),[T,D]=(0,Z.useState)(()=>E(`shared`)),[A,j]=(0,Z.useState)(0),[M,N]=(0,Z.useState)(!1),[P,F]=(0,Z.useState)(!1),[I,L]=(0,Z.useState)(!1),[R,z]=(0,Z.useState)(null),[B,V]=(0,Z.useState)(0),H=(0,Z.useCallback)((e,t)=>{z({tone:t,text:e}),V(e=>e+1)},[]);(0,Z.useEffect)(()=>{let e=e=>{e.detail?.plane===`shared`&&!E(`shared`)&&D(!1)};return window.addEventListener(h,e),()=>window.removeEventListener(h,e)},[]),(0,Z.useEffect)(()=>{let e=new AbortController;return y(uI,e.signal).then(async t=>{w(t),g(t),t.connected&&!E(`shared`)&&await x(`shared`,e.signal),!e.signal.aborted&&(D(E(`shared`)),C(!1),v(!0))}).catch(()=>{e.signal.aborted||(C(!0),v(!0))}),()=>e.abort()},[]);let U=S(`machine`,p),W=S(`shared`,p);(0,Z.useEffect)(()=>{if(!T)return;let e=new AbortController;return fetch(`${W}/api/remote-workspace`,{signal:e.signal,cache:`no-store`}).then(e=>e.ok?e.json():Promise.reject(Error(`unavailable`))).then(t=>{e.signal.aborted||F(t.available===!0)}).catch(()=>{e.signal.aborted||F(!1)}),()=>e.abort()},[e,T,W]);let G=T&&P,ee=wF(e),te=ee?TF(ee,{remoteWorkspaceAvailable:G}):[],K=e===`claude`?`integrations`:e,q=e===`remote`&&s()===`hub`,ne=q&&M,[J,Y]=(0,Z.useState)(!1),ie=Qa(),{collapsed:X,toggle:ae}=ZF({shortcut:ie}),oe=ie&&no()===`macos`,se=ie&&RF(no()),ce=QF({managed:se}),le=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{if(oe&&le.current)return oI(le.current)},[oe]);let ue=(0,Z.useRef)(null),de=(0,Z.useRef)(null),fe=(0,Z.useRef)(!1);(0,Z.useEffect)(()=>{let e=()=>Y(!1);return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[]),(0,Z.useEffect)(()=>{if(!Qa())return;let e=e=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`a[href]`);if(!(n instanceof HTMLAnchorElement))return;let r=n.href;so(r)&&(e.preventDefault(),window.location.assign(r))};return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)},[]),(0,Z.useEffect)(()=>{let e=document.documentElement;o===`system`?(e.removeAttribute(`data-theme`),localStorage.removeItem(fI)):(e.setAttribute(`data-theme`,o),localStorage.setItem(fI,o))},[o]),(0,Z.useEffect)(()=>{if(R?.tone!==`ok`)return;let e=window.setTimeout(()=>z(null),4500);return()=>window.clearTimeout(e)},[R,B]);let me=Vt(`app-healthz:${U}`,[U,_],async e=>{let t=await fetch(`${U}/healthz`,{signal:e});return t.ok?mI(await t.json()):null},{pollMs:3e4,enabled:_}),he=(0,Q.jsx)(tI,{theme:o,onChange:c}),ge=me.data??`2.88.0`,[_e,ye]=(0,Z.useState)(!1);(0,Z.useEffect)(()=>{if(!J)return;let e=e=>{e.key===`Escape`&&Y(!1)};window.addEventListener(`keydown`,e);let t=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{window.removeEventListener(`keydown`,e),document.body.style.overflow=t}},[J]),(0,Z.useEffect)(()=>{if(J){fe.current=!0;let e=setTimeout(()=>de.current?.focus(),200);return()=>clearTimeout(e)}fe.current&&(fe.current=!1,ue.current?.focus())},[J]),(0,Z.useEffect)(()=>{let e=window.matchMedia(`(min-width: 761px)`),t=()=>{e.matches&&Y(!1)};return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let[be,xe]=(0,Z.useState)(0),{restarting:Se,restart:Ce}=uv(W,{onSettled:()=>xe(e=>e+1),report:H}),we=async()=>{if(!await aa({message:d(p.connected?`connection.disconnectConfirm`:`dash.stopConfirm`),confirmLabel:d(p.connected?`connection.disconnect`:`dash.stop`),tone:`danger`}))return;ye(!0);let e=await PF(U,{formatFailure:e=>d(`dash.stopFailed`,{status:String(e)}),formatStillRunning:()=>d(`dash.stopStillRunning`),formatUnknown:()=>d(`dash.stopUnknown`),mode:p.connected?`client`:`standalone`});e.status!==`accepted`&&(ye(!1),H(e.message,e.status===`rejected`?`err`:`warn`))},Te=async()=>{if(I)return;L(!0);let e=await f(`shared`);L(!1),e?D(!1):H(d(`connection.sessionLogoutFailed`),`err`)},Ee=(0,Q.jsxs)(`button`,{type:`button`,className:`brand brand-home`,onClick:()=>{r(`dashboard`),Y(!1)},"aria-label":d(`nav.goHome`),title:d(`nav.goHome`),...e===`dashboard`?{"aria-current":`page`}:{},children:[(0,Q.jsx)(`span`,{className:`brand-logo`,role:`img`,"aria-label":d(`app.logoAria`)}),(0,Q.jsx)(`span`,{className:`name`,children:`opencodex`}),(0,Q.jsxs)(`span`,{className:`ver`,title:ge,children:[`v`,ge]})]}),De=_&&e!==`startup`&&(!p.connected||T)&&(0,Q.jsx)(By,{pageName:d(`quotaSummary.aria`),title:d(`errorBoundary.title`),message:d(`errorBoundary.message`),detailsLabel:d(`errorBoundary.details`),reloadLabel:d(`errorBoundary.reload`),children:(0,Q.jsx)(lF,{apiBase:W})},W);return(0,Q.jsxs)(`div`,{ref:le,className:`app${ie?` app--desktop`:``}${oe?` app--macos`:``}${X?` app--nav-collapsed`:``}`,children:[(0,Q.jsx)(xF,{apiBase:W,enabled:_&&!p.connected}),R&&(0,Q.jsx)(sn,{tone:R.tone,onDismiss:()=>z(null),dismissLabel:d(`common.close`),children:R.text}),(0,Q.jsxs)(`header`,{className:`mobile-topbar`,inert:J,...ie?aI():{},children:[(0,Q.jsx)(`button`,{ref:ue,type:`button`,className:`menu-toggle`,onClick:()=>Y(e=>!e),"aria-expanded":J,"aria-controls":`app-sidebar`,"aria-label":d(J?`nav.closeMenu`:`nav.openMenu`),title:d(J?`nav.closeMenu`:`nav.openMenu`),children:(0,Q.jsx)(pe,{})}),Ee,(0,Q.jsxs)(`div`,{className:`mobile-topbar-actions`,children:[p.connected&&T&&(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb`,onClick:()=>{Te()},disabled:I,"aria-label":d(I?`connection.sessionLoggingOut`:`connection.sessionLogout`),title:d(`connection.sessionLogout`),children:(0,Q.jsx)(ve,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb sidebar-orb--danger`,onClick:we,disabled:_e,"aria-label":d(p.connected?`connection.disconnect`:`dash.stop`),title:d(p.connected?`connection.disconnect`:`dash.stop`),children:(0,Q.jsx)(Re,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb`,onClick:()=>{Ce()},disabled:Se,"aria-label":d(`dash.codexRestart`),title:d(`dash.codexRestart`),children:(0,Q.jsx)(re,{})})]})]}),J&&(0,Q.jsx)(`div`,{className:`drawer-scrim`,onClick:()=>Y(!1),"aria-hidden":`true`}),(0,Q.jsx)(sI,{collapsed:X,onToggle:ae}),(0,Q.jsxs)(`aside`,{id:`app-sidebar`,className:`sidebar${J?` open`:``}`,ref:de,tabIndex:-1,children:[(0,Q.jsxs)(`div`,{className:`drawer-head`,children:[Ee,(0,Q.jsx)(`button`,{type:`button`,className:`menu-toggle drawer-close`,onClick:()=>Y(!1),"aria-label":d(`nav.closeMenu`),title:d(`nav.closeMenu`),children:(0,Q.jsx)(ve,{})})]}),(0,Q.jsx)(`nav`,{children:CF.map(e=>{let{id:t,tkey:n,Icon:i}=e,a=ee?.id===t;return(0,Q.jsx)(`div`,{className:`nav-entry`,children:(0,Q.jsxs)(`button`,{type:`button`,className:`nav-item${a?` active`:``}`,"data-page":e.pages[0],"data-group":t,onClick:()=>{r(e.pages[0]),Y(!1)},"aria-current":a?`page`:void 0,children:[(0,Q.jsx)(i,{}),` `,d(n)]})},t)})}),(0,Q.jsxs)(`div`,{className:`sidebar-foot`,children:[(0,Q.jsxs)(`div`,{className:`lang-toggle`,children:[(0,Q.jsx)(qe,{"aria-hidden":!0}),(0,Q.jsx)(cn,{value:l,options:k.map(e=>({value:e.code,label:n(e.code)})),onChange:e=>u(e),label:d(`lang.label`),placement:`right`,portal:!1,style:{flex:1,minWidth:0,width:`100%`}})]}),se?(0,Q.jsxs)(`div`,{className:`sidebar-display-row`,children:[he,(0,Q.jsx)($F,{percent:ce.percent,canZoomIn:ce.canZoomIn,canZoomOut:ce.canZoomOut,onStep:ce.step})]}):(0,Q.jsxs)(`div`,{className:`sidebar-action-row sidebar-action-row--theme`,children:[(0,Q.jsx)(`span`,{className:`sidebar-action-label`,children:d(`theme.label`)}),he]}),(0,Q.jsxs)(`div`,{className:`sidebar-action-row`,children:[(0,Q.jsx)(`span`,{className:`sidebar-action-label`,children:d(`dash.actions`)}),(0,Q.jsxs)(`div`,{className:`sidebar-action-orbs`,children:[p.connected&&T&&(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb`,onClick:()=>{Te()},disabled:I,"aria-label":d(I?`connection.sessionLoggingOut`:`connection.sessionLogout`),title:d(`connection.sessionLogout`),children:(0,Q.jsx)(ve,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb sidebar-orb--danger`,onClick:we,disabled:_e,"aria-label":d(_e?`dash.stopping`:p.connected?`connection.disconnect`:`dash.stop`),title:d(_e?`dash.stopping`:p.connected?`connection.disconnect`:`dash.stop`),children:(0,Q.jsx)(Re,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb`,onClick:()=>{Ce()},disabled:Se,"aria-label":d(Se?`dash.codexRestarting`:`dash.codexRestart`),title:d(Se?`dash.codexRestarting`:`dash.codexRestart`),children:(0,Q.jsx)(re,{})})]})]}),(0,Q.jsx)(mF,{apiBase:W,onOpenUpdate:()=>{Y(!1),!io()&&r(`dashboard`,`update`)},onOpenTerminalCommand:()=>{Y(!1),oo()}})]})]}),(0,Q.jsxs)(`main`,{className:`main`,inert:J,children:[ie?(0,Q.jsx)(cI,{children:De}):De,(0,Q.jsxs)(`div`,{className:`main-inner${e===`models`&&i===`combos`?` main-inner--combos`:``}`,children:[_&&te.length>1&&(0,Q.jsx)(EF,{items:te.map(e=>({page:e,label:d(lI[e])})),currentPage:e,onNavigate:r,ariaLabel:d(`nav.sectionNavigation`),onFocusOrphaned:gI}),_&&p.link&&(0,Q.jsx)($,{tone:`warn`,children:p.link.home?d(`connection.linkManaged`,{home:p.link.home,linkId:p.link.linkId}):d(`connection.linkManagedUnnamed`,{linkId:p.link.linkId})}),(0,Q.jsx)(By,{pageName:d(lI[K]),title:d(`errorBoundary.title`),message:d(`errorBoundary.message`),detailsLabel:d(`errorBoundary.details`),reloadLabel:d(`errorBoundary.reload`),children:_?(0,Q.jsxs)(Q.Fragment,{children:[b&&(0,Q.jsx)(`div`,{className:`alert alert-err`,role:`alert`,children:d(`connection.machineUnavailable`)}),(p.connected&&!T||ne)&&(0,Q.jsx)(_A,{target:p.shared,focusOnMount:ne,onConnected:async e=>{ne&&await gA(W,void 0,e),e.throwIfAborted(),N(!1),D(E(`shared`)),j(e=>e+1)}},`${p.shared.serverOrigin}:${p.shared.bootstrapPath}`),e===`dashboard`&&(0,Q.jsx)(Bo,{apiBase:W,connected:p.connected,authenticationPending:p.connected&&!T,refreshEpoch:A}),e===`startup`&&(0,Q.jsx)(sP,{apiBase:W,machineApiBase:U,connected:p.connected}),e===`providers`&&(0,Q.jsx)(Qg,{apiBase:W}),e===`models`&&(0,Q.jsx)(CC,{apiBase:W,restartEpoch:be,connected:p.connected,catalogSyncedAt:p.catalogSyncedAt,reportRestart:H},W),e===`subagents`&&(0,Q.jsx)(JC,{apiBase:W},W),e===`advisor`&&(0,Q.jsx)(AC,{apiBase:W},W),e===`logs`&&(0,Q.jsx)(cE,{apiBase:W}),e===`usage`&&(0,Q.jsx)(pD,{apiBase:W,connected:p.connected,apiKeyId:p.apiKeyId}),e===`storage`&&(0,Q.jsx)(HD,{apiBase:W}),e===`remote`&&!ne&&(0,Q.jsx)(YP,{apiBase:W,sessionReady:T,pairingRecoveryAvailable:q,onRequestPairing:()=>N(!0),workspaceAvailable:G,onOpenWorkspace:()=>r(`remote-workspace`)},`${W}:${A}`),e===`remote-workspace`&&(0,Q.jsx)(pI,{available:G,apiBase:W,hubOrigin:p.shared.serverOrigin,onOpenRemoteLink:()=>r(`remote`)}),e===`codex-set`&&(0,Q.jsx)(nk,{apiBase:W,machineApiBase:U,connected:p.connected}),K===`integrations`&&(0,Q.jsx)(JN,{apiBase:W,machineApiBase:U,connected:p.connected})]}):(0,Q.jsx)(`div`,{className:`alert`,children:d(`connection.discovering`)})},K)]})]})]})}export{pI as RemoteWorkspaceRoute,_I as default};