@bitkyc08/opencodex 2.83.0 → 2.84.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 (216) hide show
  1. package/gui/dist/assets/App-CZtqiGcw.js +56 -0
  2. package/gui/dist/assets/Tray-C9TGtwad.js +1 -0
  3. package/gui/dist/assets/{index-BAbcj51J.css → index-BB6uK6tU.css} +1 -1
  4. package/gui/dist/assets/index-CTm4l-HQ.js +94 -0
  5. package/gui/dist/assets/{quota-summary-DiJO6sYY.js → quota-summary-BbEeRfPY.js} +1 -1
  6. package/gui/dist/index.html +2 -2
  7. package/package.json +2 -2
  8. package/src/adapters/coding-agent/protocol.ts +15 -8
  9. package/src/adapters/ollama-native.ts +29 -1
  10. package/src/adapters/openai-chat/messages.ts +8 -4
  11. package/src/adapters/openai-responses/empty-assistant.ts +32 -0
  12. package/src/adapters/openai-responses/passthrough.ts +3 -0
  13. package/src/adapters/openai-responses/request-strips.ts +10 -2
  14. package/src/adapters/qoder/adapter.ts +16 -14
  15. package/src/bridge/errors.ts +19 -0
  16. package/src/bridge.ts +1 -1
  17. package/src/claude/context-windows.ts +54 -1
  18. package/src/claude/intercept/connect-proxy.ts +10 -3
  19. package/src/claude/intercept/picker-ca-persistence.ts +3 -1
  20. package/src/claude/intercept/picker-listener.ts +49 -1
  21. package/src/claude/intercept/settings-no-proxy.ts +146 -0
  22. package/src/claude/intercept/settings.ts +101 -9
  23. package/src/cli/account-api.ts +65 -0
  24. package/src/cli/account-auth.ts +26 -2
  25. package/src/cli/account.ts +41 -5
  26. package/src/cli/capabilities-access-remote.ts +8 -0
  27. package/src/cli/capabilities-base.ts +13 -1
  28. package/src/cli/catalog-command-result.ts +2 -1
  29. package/src/cli/claude.ts +15 -6
  30. package/src/cli/config-command.ts +8 -2
  31. package/src/cli/debug.ts +8 -0
  32. package/src/cli/dispatch.ts +16 -3
  33. package/src/cli/export-command.ts +14 -1
  34. package/src/cli/hub-disable.ts +99 -0
  35. package/src/cli/hub.ts +4 -2
  36. package/src/cli/index.ts +13 -4
  37. package/src/cli/link-child.ts +104 -0
  38. package/src/cli/link-enrollment.ts +96 -0
  39. package/src/cli/link.ts +39 -24
  40. package/src/cli/observe-stream.ts +6 -1
  41. package/src/cli/observe.ts +10 -2
  42. package/src/cli/provider.ts +12 -0
  43. package/src/cli/registry.ts +5 -4
  44. package/src/cli/runtime-api.ts +27 -2
  45. package/src/cli/status.ts +104 -20
  46. package/src/client/connect.ts +39 -4
  47. package/src/client/hub-client.ts +14 -7
  48. package/src/client/hub-state.ts +25 -14
  49. package/src/client/link-home.ts +248 -0
  50. package/src/client/link-management-relay.ts +61 -0
  51. package/src/client/link-relay.ts +6 -1
  52. package/src/client/link-status.ts +14 -0
  53. package/src/client/machine-api.ts +14 -7
  54. package/src/client/machine-listener.ts +29 -4
  55. package/src/clients/config-export.ts +46 -16
  56. package/src/clients/omo-role-models.ts +6 -3
  57. package/src/codex/agent-role-models.ts +26 -8
  58. package/src/codex/auth-api/account-list.ts +17 -2
  59. package/src/codex/auth-api/account-selection.ts +17 -7
  60. package/src/codex/auth-api/routes.ts +5 -1
  61. package/src/codex/autostart-health.ts +3 -1
  62. package/src/codex/catalog/bundled.ts +5 -1
  63. package/src/codex/catalog/effort.ts +2 -2
  64. package/src/codex/catalog/metadata.ts +4 -2
  65. package/src/codex/catalog/native-models.ts +16 -2
  66. package/src/codex/native-profile-startup.ts +4 -1
  67. package/src/codex/prompt-journal.ts +20 -2
  68. package/src/codex/prompt-layers/encoding.ts +49 -0
  69. package/src/codex/prompt-layers/import-source.ts +30 -0
  70. package/src/codex/prompt-layers/toml-edit.ts +269 -37
  71. package/src/codex/prompt-layers/toml-read.ts +52 -4
  72. package/src/codex/prompt-layers.ts +383 -20
  73. package/src/codex/prompt-lock-claim.ts +13 -3
  74. package/src/codex/prompt-lock-evidence.ts +3 -3
  75. package/src/codex/prompt-lock-owner.ts +14 -6
  76. package/src/codex/prompt-text-probe.ts +34 -5
  77. package/src/codex/quota.ts +13 -6
  78. package/src/codex/role-auto-assign.ts +2 -5
  79. package/src/codex/routing/active-account.ts +21 -0
  80. package/src/codex/routing.ts +1 -1
  81. package/src/codex/runtime.ts +196 -8
  82. package/src/codex/shim-overlay.ts +8 -4
  83. package/src/codex/shim.ts +1 -1
  84. package/src/combos/failover.ts +3 -0
  85. package/src/config/api-key-reconcile.ts +34 -0
  86. package/src/config/diagnostics.ts +16 -0
  87. package/src/config/feature-flags.ts +5 -0
  88. package/src/config/live-reconcile.ts +43 -29
  89. package/src/config/live-topology.ts +29 -0
  90. package/src/config/load-degrade.ts +2 -1
  91. package/src/config/paths.ts +3 -0
  92. package/src/config/salvage.ts +3 -1
  93. package/src/config/schema/config-schema.ts +2 -0
  94. package/src/generated/compatibility-version.json +311 -171
  95. package/src/grok/grpc-web.ts +23 -1
  96. package/src/grok/reset-coupon-ledger.ts +75 -5
  97. package/src/grok/reset-coupons.ts +4 -2
  98. package/src/integrations/mutation-plan.ts +13 -7
  99. package/src/integrations/registry.ts +45 -11
  100. package/src/integrations/state.ts +19 -7
  101. package/src/integrations/target.ts +42 -5
  102. package/src/integrations/writer.ts +14 -6
  103. package/src/lib/app-owned-memory-stores.ts +4 -0
  104. package/src/lib/app-owned-memory.ts +11 -0
  105. package/src/lib/json-byte-size.ts +31 -0
  106. package/src/lib/optional-shutdown-hooks.ts +35 -0
  107. package/src/lib/outbound-credential-registry.ts +210 -0
  108. package/src/lib/passive-read.ts +35 -0
  109. package/src/lib/shadow-call.ts +44 -5
  110. package/src/link/codex-settings.ts +155 -0
  111. package/src/link/management-routes.ts +89 -0
  112. package/src/link/remote-probe.ts +38 -0
  113. package/src/link/ssh-argv.ts +26 -5
  114. package/src/link/ssh-runner.ts +58 -27
  115. package/src/link/status-projection.ts +22 -4
  116. package/src/link/supervisor.ts +144 -49
  117. package/src/link/tunnel-state.ts +11 -4
  118. package/src/oauth/anthropic-continuity.ts +4 -3
  119. package/src/oauth/anthropic-identity.ts +13 -2
  120. package/src/oauth/anthropic-model-quota.ts +13 -1
  121. package/src/oauth/anthropic-routing.ts +230 -23
  122. package/src/oauth/anthropic.ts +18 -4
  123. package/src/oauth/google-antigravity.ts +24 -7
  124. package/src/oauth/index.ts +24 -15
  125. package/src/oauth/kiro-account-identity.ts +106 -0
  126. package/src/oauth/kiro.ts +48 -5
  127. package/src/oauth/plan.ts +29 -0
  128. package/src/oauth/store.ts +40 -3
  129. package/src/oauth/types.ts +2 -0
  130. package/src/plugins/loader.ts +11 -0
  131. package/src/providers/anthropic-billing-ownership.ts +74 -0
  132. package/src/providers/anthropic-billing-recovery.ts +31 -0
  133. package/src/providers/anthropic-billing-refusal.ts +55 -0
  134. package/src/providers/anthropic-reset-admission.ts +62 -0
  135. package/src/providers/anthropic-reset-grant-ledger.ts +28 -6
  136. package/src/providers/api-key-resolve.ts +17 -2
  137. package/src/providers/key-failover.ts +52 -5
  138. package/src/providers/model-rename-startup.ts +5 -3
  139. package/src/providers/quota/account-cache.ts +11 -0
  140. package/src/providers/quota/anthropic-account-quota.ts +4 -2
  141. package/src/providers/quota/report-cache.ts +14 -0
  142. package/src/providers/quota/vendor-probes-oauth.ts +3 -3
  143. package/src/providers/quota.ts +4 -1
  144. package/src/providers/registry/entries-core.ts +14 -14
  145. package/src/providers/registry/entries-extended.ts +0 -1
  146. package/src/providers/registry/model-seeds.ts +17 -0
  147. package/src/providers/request-pacing.ts +9 -0
  148. package/src/providers/stale-no-vision-seed-migration.ts +72 -0
  149. package/src/responses/compaction.ts +14 -0
  150. package/src/responses/parser.ts +7 -1
  151. package/src/server/auth-cors.ts +42 -0
  152. package/src/server/configured-credentials.ts +194 -0
  153. package/src/server/index/link-management.ts +58 -0
  154. package/src/server/index/optional-listeners.ts +5 -1
  155. package/src/server/index/serve-options.ts +13 -0
  156. package/src/server/lifecycle.ts +2 -1
  157. package/src/server/management/agent-settings-routes.ts +28 -10
  158. package/src/server/management/anthropic-reset-grant-routes.ts +17 -1
  159. package/src/server/management/codex-agent-role-routes.ts +19 -6
  160. package/src/server/management/codex-prompt-routes.ts +136 -5
  161. package/src/server/management/codex-role-auto-assign.ts +1 -1
  162. package/src/server/management/grok-coupon-routes.ts +78 -27
  163. package/src/server/management/link-enrollment.ts +192 -0
  164. package/src/server/management/link-route-state.ts +185 -0
  165. package/src/server/management/link-routes.ts +82 -402
  166. package/src/server/management/model-rows.ts +3 -1
  167. package/src/server/management/provider-overwrite-carry.ts +10 -0
  168. package/src/server/management/provider-routes.ts +1 -0
  169. package/src/server/management/route-registry.ts +5 -3
  170. package/src/server/management/shared.ts +3 -0
  171. package/src/server/management-api.ts +3 -1
  172. package/src/server/messages-native.ts +68 -42
  173. package/src/server/relay-eager.ts +2 -0
  174. package/src/server/request-log-filter.ts +6 -1
  175. package/src/server/request-log-terminal-status.ts +63 -6
  176. package/src/server/responses/adapter-dispatch.ts +232 -79
  177. package/src/server/responses/code-mode-collab-surface.ts +205 -0
  178. package/src/server/responses/codex-ws-exchange.ts +147 -6
  179. package/src/server/responses/codex-ws-wire.ts +203 -0
  180. package/src/server/responses/collaboration.ts +36 -7
  181. package/src/server/responses/compact.ts +126 -48
  182. package/src/server/responses/context-overflow.ts +13 -1
  183. package/src/server/responses/core-codex-account.ts +105 -1
  184. package/src/server/responses/core-combo-failure.ts +14 -0
  185. package/src/server/responses/core-combo.ts +7 -2
  186. package/src/server/responses/core-errors.ts +29 -1
  187. package/src/server/responses/core-options.ts +2 -0
  188. package/src/server/responses/deferred-collab-surface.ts +158 -0
  189. package/src/server/responses/deferred-send-reporter.ts +25 -0
  190. package/src/server/responses/fetch-helpers.ts +12 -1
  191. package/src/server/responses/passthrough-delivery.ts +4 -1
  192. package/src/server/responses/passthrough-dispatch.ts +15 -4
  193. package/src/server/responses/request-prepare.ts +6 -4
  194. package/src/server/responses/request-transport.ts +6 -8
  195. package/src/server/responses/sidecar-execution.ts +11 -2
  196. package/src/server/responses/ws-upstream.ts +9 -1
  197. package/src/server/startup-action-control.ts +22 -2
  198. package/src/server/startup-health-cache.ts +4 -0
  199. package/src/server/system-env-shell.ts +7 -2
  200. package/src/server/system-env.ts +11 -1
  201. package/src/service/cli.ts +5 -1
  202. package/src/service/desktop-startup.ts +147 -34
  203. package/src/service/desktop-supervision.d.mts +27 -1
  204. package/src/service/desktop-supervision.mjs +111 -5
  205. package/src/service/health-sentinel-launch.ts +176 -0
  206. package/src/service/health-sentinel-main.ts +447 -0
  207. package/src/service/health-sentinel-policy.ts +241 -0
  208. package/src/service/health-sentinel-probe.ts +54 -0
  209. package/src/service/health-sentinel-windows.ts +87 -0
  210. package/src/service/linux-linger.ts +20 -0
  211. package/src/types/config.ts +5 -0
  212. package/src/usage/expected-prices.ts +4 -0
  213. package/src/usage/log.ts +19 -1
  214. package/gui/dist/assets/App-Ba8uG696.js +0 -54
  215. package/gui/dist/assets/Tray-IImbNPRy.js +0 -1
  216. package/gui/dist/assets/index-BHRZdJuv.js +0 -94
@@ -1,54 +0,0 @@
1
- import{C as e,D as t,E as n,O as r,S as i,T as a,_ as o,a as s,b as c,c as l,d as u,f as d,g as f,h as p,i as m,k as h,l as g,m as _,n as v,o as y,p as b,r as x,s as S,t as C,u as w,v as T,w as E,x as D,y as O}from"./index-BHRZdJuv.js";import{$ as k,A,At as j,B as M,Bt as N,C as P,Ct as F,D as I,Dt as L,E as R,Et as z,F as B,Ft as V,G as H,H as U,I as ee,It as W,J as G,K as te,L as ne,Lt as K,M as re,Mt as q,N as J,Nt as ie,O as Y,Ot as X,P as ae,Pt as oe,Q as se,R as ce,Rt as le,S as ue,St as de,T as fe,Tt as pe,U as me,V as he,W as ge,X as _e,Y as ve,Z as ye,_ as be,_t as xe,at as Se,b as Ce,bt as we,ct as Te,dt as Ee,et as De,ft as Oe,g as ke,gt as Ae,h as je,ht as Me,it as Ne,j as Pe,jt as Fe,k as Ie,kt as Le,lt as Re,m as ze,mt as Be,n as Ve,nt as He,ot as Ue,pt as We,q as Ge,rt as Ke,st as qe,t as Je,tt as Ye,ut as Xe,v as Ze,vt as Qe,w as $e,wt as et,x as tt,xt as nt,y as rt,yt as it,z as at,zt as ot}from"./quota-summary-DiJO6sYY.js";var Z=h(r(),1);function st(){return typeof document<`u`&&document.visibilityState===`hidden`||typeof window<`u`&&window.__OPENCODEX_HOST_VISIBLE__===!1}function ct(e){let t=st(),n=()=>{let n=st();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 lt=new Map,ut=new Set,dt=3e4,ft=`ocx-resource-deadline`,pt={data:void 0,error:void 0,loading:!1,refreshing:!1,hasSucceeded:!1,lastAttemptOk:!1};function mt(e){let t=lt.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},lt.set(e,t)),t}function ht(e){for(let t of e.listeners)t()}var gt=new Map;function _t(e){for(let[t,n]of e.pollByListener)if(typeof n==`number`&&n>0&&e.pauseWhenHiddenByListener.get(t)===!1)return!0;return!1}function vt(e){if(e.stores.size===0)return!1;if(!wt())return!0;for(let t of e.stores)if(_t(t))return!0;return!1}function yt(e){for(let t of e.stores){let e=Tt(t);e&&jt(t,e.fetcher,{replaceInflight:!1,owner:e.owner,deadlineMs:e.deadlineMs})}}function bt(e,t){let n=vt(t);if(n&&t.timer===null){t.timer=setInterval(()=>yt(t),e);return}!n&&t.timer!==null&&(clearInterval(t.timer),t.timer=null),t.stores.size===0&&gt.delete(e)}function xt(){for(let[e,t]of[...gt])bt(e,t)}function St(e){let t=e.pollIntervalMs;if(t===void 0)return;let n=gt.get(t);e.pollIntervalMs=void 0,n&&(n.stores.delete(e),bt(t,n))}function Ct(e,t){let n=gt.get(t);n||(n={timer:null,stores:new Set},gt.set(t,n)),n.stores.add(e),e.pollIntervalMs=t,bt(t,n)}function wt(){return st()}function Tt(e){if(!wt())return Et(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 Et(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 Dt(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){St(e),At(e);return}if(t===e.pollIntervalMs){let n=gt.get(t);n&&bt(t,n),kt(e);return}St(e),Ct(e,t),kt(e)}var Ot=null;function kt(e){typeof document>`u`||Ot||(Ot=ct(()=>{if(xt(),!wt())for(let e of gt.values())for(let t of e.stores){let e=Et(t);e&&jt(t,e.fetcher,{replaceInflight:!1,owner:e.owner,deadlineMs:e.deadlineMs})}}))}function At(e){Ot&&(gt.size>0||(Ot(),Ot=null))}async function jt(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??dt,s=!1,c=setTimeout(()=>{s=!0,i.abort(ft)},o),l=e.snapshot.data===void 0||n?.forceLoading===!0;e.snapshot={...e.snapshot,loading:l?!0:e.snapshot.loading,refreshing:!0},ht(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,ut.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),ht(e)}}function Mt(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},ht(e)),!0)}function Nt(e,t){St(t),At(t),setTimeout(()=>{t.subscriberCount===0&&lt.get(e)===t&&(t.inflight?.abort(),t.inflight=null,t.inflightOwner=null,lt.delete(e))},0)}function Pt(e,t,n){let{fetcher:r,pollMs:i,pauseWhenHidden:a=!0,deadlineMs:o,staleAfterMs:s}=n,c=mt(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||ut.has(e)||n)&&jt(c,r,{replaceInflight:!0,owner:t,deadlineMs:o})}return Dt(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=Mt(c,t);if(c.subscriberCount===0){Nt(e,c);return}if(n){let e=Et(c);e&&jt(c,e.fetcher,{replaceInflight:!0,owner:e.owner,deadlineMs:e.deadlineMs})}Dt(c)}}function Ft(e,t,n,r){let i=mt(e);i.subscriberCount===0&&i.snapshot.data===void 0&&(Bt(e,t),!ut.has(e)&&typeof r==`number`&&typeof n==`number`&&Date.now()-n<r&&(i.seedNeedsRevalidate=!1,i.lastSettledAt=n))}function It(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&&Ft(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,Pt(e,t,{fetcher:l,pollMs:i,pauseWhenHidden:a,deadlineMs:o,staleAfterMs:s})):()=>{},[e,l,i,r,a,o,s]),f=(0,Z.useCallback)(()=>r?mt(e).snapshot:pt,[e,r]),p=(0,Z.useSyncExternalStore)(d,f,f),m=(0,Z.useCallback)(t=>{if(!r)return;let n=mt(e);jt(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 Lt(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 Rt(e,t,n,r){let i=It(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,Lt(n,t)&&(r===null||r===e)&&i.refresh({forceLoading:!0})}),i}function zt(e){ut.add(e);let t=lt.get(e);if(!t)return;let n=Et(t);n&&jt(t,n.fetcher,{replaceInflight:!0,owner:n.owner,deadlineMs:n.deadlineMs})}function Bt(e,t){let n=mt(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(),ht(n)}function Vt(e){return e.replace(/^#\/?/,``)}function Ht(e){let t=e.indexOf(`?`);return t<0?{path:e,query:``}:{path:e.slice(0,t),query:e.slice(t+1)}}function Ut(e,t=window){let n=Vt(e);if(Vt(t.location.hash)===n)return;let r=`${t.location.pathname}${t.location.search}#${n}`;t.history.replaceState(t.history.state,``,r)}function Wt(e,t=window){let n=Vt(e);Vt(t.location.hash)!==n&&(t.location.hash=n)}var Gt=t(),Kt=4,qt=8,Jt=8,Yt=280,Xt=120,Zt=160,Qt=12;function $t(){return typeof window<`u`?window.innerHeight:800}function en(){return typeof window<`u`?window.innerWidth:1024}function tn(e,{align:t,placement:n=`below`,menuHeight:r=Yt}={}){let i=Math.min(Math.max(r,Xt),Yt),a=$t(),o=en();if(n===`right`){let t=a-e.top-Jt,n=e.top-Jt,r=i+qt>t&&n>t,s=Math.max(Jt,Math.min(e.right+Qt,o-Zt-Jt));return r?{position:`fixed`,left:s,bottom:a-e.top+qt,minWidth:Zt,maxHeight:Math.max(Xt,Math.min(Yt,e.top-Jt-Kt))}:{position:`fixed`,top:e.top,left:s,minWidth:Zt,maxHeight:Math.max(Xt,Math.min(Yt,a-e.top-Jt))}}let s=t??(e.right>o/2?`right`:`left`),c=Math.max(e.width,0),l=a-e.bottom-Jt,u=e.top-Jt;if(i+Kt>l&&u>l){let t={position:`fixed`,bottom:a-e.top+qt,minWidth:c,maxHeight:Math.max(0,Math.min(Yt,u-Kt))};return s===`right`?t.right=Math.max(Jt,o-e.right):t.left=Math.max(Jt,Math.min(e.left,o-Jt-c)),t}let d={position:`fixed`,top:e.bottom+Kt,minWidth:c,maxHeight:Math.max(0,Math.min(Yt,l-Kt))};return s===`right`?d.right=Math.max(Jt,o-e.right):d.left=Math.max(Jt,Math.min(e.left,o-Jt-c)),d}var Q=v();function nn({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)(Se,{}):(0,Q.jsx)(De,{}),(0,Q.jsx)(`span`,{children:t})]})}function rn({tone:e,children:t,onDismiss:n,dismissLabel:r}){return(0,Gt.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)(Se,{}):(0,Q.jsx)(De,{}),(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 an({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(tn(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=tn(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)(Ue,{style:{width:12,height:12,color:`var(--muted)`,transform:m?`rotate(90deg)`:`none`,transition:`transform .12s`}})]}),f?N&&(0,Gt.createPortal)(N,document.body):N]})}function on({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 sn({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 cn=45e3,ln=2147483647;async function un(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 dn(e,t){return typeof e.error==`string`&&e.error?e.error:typeof e.message==`string`&&e.message?e.message:t}async function fn(e,t=`HTTP ${e.status}`){if(!e.ok){let n=t;try{n=dn(await e.json(),t)}catch{}throw Error(n)}return un(e)}async function pn(e){if(!e.ok)return null;try{return await un(e)}catch{return null}}var mn=[`gpt-6-luna`,`gpt-5.6-luna`];function hn(e){let t=Array.isArray(e)?e.filter(e=>typeof e==`string`&&e.trim()!==``).map(e=>e.trim()):[];return t.length>0?t:mn}function gn(e){return hn(e).join(`, `)}function _n(e){return hn(e).map(e=>e.replace(/^gpt-/,``)).join(`, `)}var vn=`dashboard/update`;function yn(){let e=window.location.hash.replace(/^#\/?/,``);return e===`dashboard/providers`?`providers`:e===`dashboard/models`?`models`:`overview`}function bn(){return window.location.hash.replace(/^#\/?/,``)===vn}function xn(e){return e===`overview`?`dashboard`:`dashboard/${e}`}async function Sn(e,t){let n=await fn(e,t);if(n===void 0)throw Error(t??`empty response`);return n}var Cn=[`low`,`medium`,`high`,`xhigh`];function wn(e){return e?.includes(`-preview.`)?`preview`:`latest`}function Tn(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 En(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 Dn(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 On(e){return{vision:{reasoning:e}}}function kn(e){return{vision:{enabled:e}}}function An(e){return{webSearch:{enabled:e}}}function jn(e){return e?.applied===!1&&e.reason!==`not_requested`}function Mn(e,t){return t?.reason===`not_requested`&&jn(e)?e:t}function Nn(e){return{vision:{maxDescriptionsPerTurn:e}}}function Pn(e){return{vision:{timeoutMs:e}}}var Fn=cn,In=ln,Ln=1;function Rn(e){let t=e.trim();if(!/^[0-9]+$/.test(t))return;let n=Number(t);if(!(!Number.isSafeInteger(n)||n<=0))return n}function zn(e){let t=Rn(e);if(!(t===void 0||t<Ln||t>In))return t}var Bn=[`low`,`medium`,`high`,`xhigh`,`max`];function Vn(e,t){let n=e.find(e=>e.id===t)?.reasoningEfforts;if(!n||n.length===0)return[...Bn];let r=Bn.filter(e=>n.includes(e));return r.length>0?r:[...Bn]}function Hn(e,t){let n=Un(e,t);return e.includes(n)?e:[n,...e]}function Un(e,t){if(e.length===0||e.includes(t))return t;let n=Bn.indexOf(t),r=e[0],i=Bn.indexOf(r);for(let t of e){let e=Bn.indexOf(t);e<=n&&e>=i&&(r=t,i=e)}return r}function Wn(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 Gn(e,t,n,r){if(e===void 0){let e=Wn(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 Kn(e,t,n,r){let i=e?e.map(e=>({value:e.value,label:e.label,backend:e.backend})):Wn(t);return n&&!i.some(e=>e.value===n)&&i.unshift({value:n,label:n,...r?{backend:r}:{}}),i}function qn(e,t,n){let r=hn(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 Jn(e,t){let n=e.find(e=>e.id===t)?.provider;return n===`anthropic`||n===`anthropic2`?`anthropic`:`openai`}function Yn(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 Xn(e,t,n){let r=t.find(e=>e.value===n);return{backend:r?.backend??Jn(e,n),model:r?.model??n}}function Zn(e,t,n){return t.find(e=>e.value===n)?.backend||(n.includes(`/`)?`routed`:Jn(e,n))}var Qn=!1;typeof window<`u`&&typeof window.addEventListener==`function`&&(window.addEventListener(`keydown`,()=>{Qn=!0},{capture:!0,passive:!0}),window.addEventListener(`pointerdown`,()=>{Qn=!1},{capture:!0,passive:!0}));function $n(e){if(e){if(Qn){e.focus({preventScroll:!0});return}try{e.focus({preventScroll:!0,focusVisible:!1})}catch{e.focus({preventScroll:!0})}}}function er(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(),$n(t.current)}},[e,t]),(0,Z.useEffect)(()=>()=>{let e=n.current;e?.open&&e.close(),$n(t.current)},[t]),n}var tr=`https://opencodex.me/guides/subagent-v1-default/`;function nr(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:tr}}function rr(e){return e==="default"?`base`:e}function ir({reason:e,mode:t,docsUrl:n,busy:r=!1,onContinue:a,onChooseV1:o,onDismiss:s}){let c=i(),l=(0,Z.useId)(),u=(0,Z.useId)(),d=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{let e=d.current;e&&!e.open&&e.showModal()},[]);let f=(0,Z.useCallback)(e=>{e.preventDefault(),!r&&s()},[r,s]),p=rr(t),m=e===`advisory`;return(0,Q.jsxs)(`dialog`,{ref:d,"aria-labelledby":l,"aria-describedby":u,className:`modal-overlay`,"data-subagent-surface-reason":e,onCancel:f,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":c(`common.close`),tabIndex:-1,disabled:r,onClick:()=>{r||s()}}),(0,Q.jsxs)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),style:{maxWidth:480},children:[(0,Q.jsx)(`h3`,{id:l,children:c(m?`subagentSurface.advisoryTitle`:`subagentSurface.selectionTitle`,{mode:p})}),(0,Q.jsxs)(`div`,{id:u,className:`notice-warn`,style:{marginTop:12,display:`flex`,gap:8,alignItems:`flex-start`},children:[(0,Q.jsx)(De,{width:16,height:16,style:{flexShrink:0,marginTop:2},"aria-hidden":`true`}),(0,Q.jsx)(`p`,{className:`modal-desc`,style:{margin:0},children:c(m?`subagentSurface.advisoryBody`:`subagentSurface.selectionBody`,{mode:p})})]}),(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:c(`subagentSurface.learnMore`)})}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:r,onClick:a,children:c(`subagentSurface.continue`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:r,onClick:o,children:c(`subagentSurface.switchToV1`)})]})]})]})}function ar(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)(N,{})})]}),(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)(an,{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)(on,{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)(De,{}),(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)(De,{}),` `,t(`dash.updateSource`)]}),l.reason===`latest_unavailable`&&(0,Q.jsxs)(`div`,{className:`notice-warn`,role:`status`,children:[(0,Q.jsx)(De,{}),` `,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)(Fe,{}),` `,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:Tn(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)(Fe,{}),` `,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)(N,{})})]}),(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)(N,{})})]}),(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)(N,{})})]}),(0,Q.jsx)(`div`,{className:`modal-desc leading-relaxed`,style:{whiteSpace:`pre-line`},children:t(`dash.shadowCallTooltip`,{models:gn(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)(ir,{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 or({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)(on,{title:e(`dash.noModels`)}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`pws-search-wrap`,children:[(0,Q.jsx)(q,{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)(Ue,{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:_e(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 sr(e,t){let n=Math.max(0,Math.floor(e)),r=E(t,`uptime.day`),i=E(t,`uptime.hour`),a=E(t,`uptime.minute`),o=E(t,`uptime.second`);if(n<300)return`${n}${o}`;let s=Math.floor(n/60);if(s<60)return`${s}${a}`;let c=Math.floor(s/60);if(c<24){let e=s%60;return e>0?`${c}${i} ${e}${a}`:`${c}${i}`}let l=Math.floor(c/24),u=c%24;return u>0?`${l}${r} ${u}${i}`:`${l}${r}`}function cr(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 lr(e){return!!e&&typeof e==`object`&&`error`in e&&e.error===`read_failed`}var ur=class extends Error{constructor(){super(`usage ledger read failed`),this.name=`UsageReadFailedError`}};async function dr(e,t){let n;try{n=await e.json()}catch{throw Error(t??`${e.status} ${e.statusText}`.trim())}if(lr(n))throw new ur;if(!e.ok)throw Error(t??`${e.status} ${e.statusText}`.trim());return n}function fr(e,t=`all`){return t===`codex`?[`usage-summary-30d`,e,`codex`].join(`:`):[`usage-summary-30d`,e,`all`].join(`:`)}function pr({data:e}){let t=i();return cr(e).usageIncomplete?(0,Q.jsx)($,{tone:`warn`,children:t(`usage.incomplete`)}):null}function mr({locale:e,health:t,providers:n,usage30d:r,usageLoading:a,healthLoading:o,startupHealth:s,projectConfigWarnings:c,maMode:l,maBusy:u,maHelpTriggerRef:d,maHelpOpen:f,setMaHelpOpen:p,switchMaMode:m,maError:h}){let g=i(),_=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:[g(`dash.multiAgent`),(0,Q.jsx)(`button`,{ref:d,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:()=>p(!0),"aria-label":g(`dash.multiAgent`),"aria-haspopup":`dialog`,"aria-controls":`multi-agent-help-dialog`,"aria-expanded":f,children:(0,Q.jsx)(xe,{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":g(`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":l===e,className:`btn btn-sm text-caption dash-ma-option${l===e?` btn-primary`:` btn-ghost`}`,style:{borderRadius:`var(--radius-pill)`,border:`none`,background:l===e?void 0:`transparent`,color:l===e?void 0:`var(--muted)`},disabled:u,onClick:()=>void m(e),children:g(`models.v2Mode_${e}`)},e))})}),h&&(0,Q.jsx)(`div`,{role:`alert`,className:`text-caption`,style:{color:`var(--red)`,marginTop:4,textAlign:`center`,maxWidth:280,wordBreak:`break-word`},children:h})]}),(0,Q.jsxs)(`div`,{className:`stat`,"aria-busy":o||void 0,children:[(0,Q.jsx)(`div`,{className:`label`,children:g(`dash.status`)}),(0,Q.jsxs)(`div`,{className:`value`,style:{display:`flex`,alignItems:`center`,gap:9,color:_?`var(--green)`:`var(--red)`},children:[(0,Q.jsx)(`span`,{className:`dot ${_?`dot-green`:`dot-red`}`}),g(_?`dash.online`:`dash.offline`)]})]}),(0,Q.jsxs)(`div`,{className:`stat`,"aria-busy":o||void 0,children:[(0,Q.jsx)(`div`,{className:`label`,children:g(`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":o||void 0,children:[(0,Q.jsx)(`div`,{className:`label`,children:g(`dash.uptime`)}),(0,Q.jsx)(`div`,{className:`value mono`,children:t?sr(t.uptime,e):`—`})]}),(0,Q.jsxs)(`div`,{className:`stat`,"aria-busy":o||void 0,children:[(0,Q.jsx)(`div`,{className:`label`,children:g(`dash.providers`)}),(0,Q.jsx)(`div`,{className:`value`,children:n.length})]}),(0,Q.jsxs)(`div`,{className:`stat`,"aria-busy":a||void 0,children:[(0,Q.jsx)(`div`,{className:`label`,children:g(`dash.tokens30d`)}),(0,Q.jsx)(`div`,{className:`value mono`,children:r&&r.summary.requests>0?G(r.summary.totalTokens,e):`—`}),(0,Q.jsx)(`div`,{className:`muted text-label dash-stat-coverage`,children:r&&r.summary.requests>0?g(`dash.coverage`).replace(`{pct}`,`${Math.round(r.summary.coverageRatio*100)}%`):`\xA0`})]})]}),(0,Q.jsx)(`div`,{className:`startup-health-slot`,"aria-live":`polite`,children:s?(0,Q.jsxs)(`button`,{type:`button`,className:`startup-health-bar`,onClick:()=>Wt(`startup`),children:[(0,Q.jsx)(`span`,{className:`dot ${s===`error`?`dot-red`:s===`at-risk`?`dot-amber`:`dot-green`}`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`startup-health-bar__summary`,children:g(s===`error`?`startup.error`:s===`at-risk`?`startup.summary.atRisk`:s===`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)(pr,{data:r}),c.length>0&&(0,Q.jsxs)(`div`,{className:`notice notice-err maintenance-notice`,role:`alert`,children:[(0,Q.jsx)(De,{}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{className:`font-semibold`,children:g(`dash.projectConfigTitle`)}),(0,Q.jsx)(`div`,{className:`muted text-control`,style:{marginTop:4},children:g(`dash.projectConfigHint`)}),(0,Q.jsx)(`ul`,{className:`text-control`,style:{margin:`10px 0 0`,paddingLeft:18},children:c.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 hr=`gpt-daybreak-blue-latest`,gr=`gpt-6-astra`,_r=`gpt-6-sol`,vr=`gpt-6-luna`,yr=`gpt-6.1-sol`,br=`gpt-6-astra-minor`;Object.freeze({contextWindow:272e3,maxContextWindow:872e3,maxInputTokens:872e3});var xr=new Set([hr,br]),Sr=Object.freeze({[hr]:`gpt-5.6-sol`,[br]:gr});Object.freeze(Object.keys(Sr)),Object.freeze({[hr]:{displayName:`Daybreak Blue`,description:`Frontier general-purpose model with safeguards for defensive cybersecurity work.`},[br]:{displayName:`GPT-6-Astra-Minor`,description:`Unreleased GPT-6 Astra variant; shown only when your account's Codex roster lists it.`}});var Cr=[...Object.freeze([`gpt-5.5`,`gpt-5.6-sol`,`gpt-5.6-terra`,`gpt-5.6-luna`,hr,gr,_r,vr,yr,br])],wr=new Set(Cr);[...xr];var Tr=18e5,Er=[`account_unavailable`,`access_denied`,`rate_limited`,`upstream_error`,`redirect_blocked`,`destination_blocked`,`dns_failed`,`timeout`,`transport_error`,`response_unusable`];function Dr(e){return Er.find(t=>t===e)}var Or=1e3,kr=12e4,Ar=4e3;function jr(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 Mr(e){return e?e.adapter===`jev-decision`?e.disabled===!0?`disabled`:jr(e.baseUrl??``)?!e.defaultModel?.trim()&&!e.models?.[0]?.trim()?`model`:null:`endpoint`:`notDecision`:`missing`}function Nr(e){return e.name===`jev`?e.adapter===`jev-decision`&&e.disabled!==!0&&e.hasApiKey===!0:Mr(e)===null}var Pr={typesafe:`cws.jev.backend.typesafe`,systemone:`cws.jev.backend.systemone`,model:`cws.jev.backend.model`,unknown:`cws.jev.backend.unknown`};function Fr(e){return e.decisionModel==null?e.decisionProvider!=null&&e.decisionProvider.trim()!==`jev`?`systemone`:`typesafe`:`model`}function Ir(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 Lr(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=>!Ir(e,n,r)).sort((e,t)=>e.localeCompare(t))}var Rr=[`low`,`medium`,`high`,`xhigh`,`max`,`ultra`],zr=[`failover`,`round-robin`,`random`,`least-used`,`reset-window`,`jev`],Br={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`},Vr={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`},Hr={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`},Ur=new Set(zr),Wr={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 Gr(e,t,n=`strict`){let r=e.filter(e=>e.provider.trim()&&e.model.trim());if(r.length===0)return[...Rr];let i=new Set(Rr),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[...Rr];let o=new Set(a);return Rr.filter(e=>o.has(e))}var Kr=Tr,qr=0;function Jr(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-${++qr}`}}function Yr(e){return e===`disabled`?`disabled`:`auto`}function Xr(e){return e===`adaptive`?`adaptive`:`strict`}var Zr=/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}$/,Qr=/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}(\/[a-zA-Z0-9][a-zA-Z0-9._-]{0,63})?$/,$r=/^(?:gpt-|o1-|o3-|o4-|codex-)/;function ei(e){return Zr.test(e.trim())}function ti(e){return`combo/${e.trim()}`}function ni(e,t){return(typeof t==`string`?t.trim():``)||ti(e)}function ri(e,t){let n=t.trim(),r=e.nativeAlias&&(!n||n.includes(`/`)||!$r.test(n));return{...e,alias:n?t:null,model:ni(e.id,t),...r?{nativeAlias:!1,displayName:null}:{}}}function ii(e){let t=typeof e==`string`?e.trim():``;return t&&t!==`jev`?t:null}function ai(e){return typeof e==`number`&&Number.isInteger(e)?e:null}function oi(e){return typeof e==`string`&&e.trim()?e.trim():null}function si(e){return typeof e==`string`&&Ur.has(e)?e:`failover`}function ci(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=100?e:1}function li(e){return typeof e==`string`&&Rr.includes(e)?e:null}function ui(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=1e4?e:void 0}function di(e){if(!Array.isArray(e)||e.length===0)return;let t=[],n=new Set;for(let r of e){if(typeof r!=`string`||!Rr.includes(r))return;let e=r;if(n.has(e))return;n.add(e),t.push(e)}return t}function fi(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=ui(t.weight),o=di(t.reasoningEfforts);a.push(Jr({provider:n,model:r,...i===void 0?{}:{weight:i},...o===void 0?{}:{reasoningEfforts:o},...typeof t.modelProfile==`string`?{modelProfile:t.modelProfile}:{}}))}let o=ii(t.decisionProvider),s=oi(t.decisionModel),c=ai(t.decisionTimeoutMs);n.push({id:r,model:typeof t.model==`string`&&t.model.trim()?t.model.trim():ni(r,oi(t.alias)),alias:oi(t.alias),nativeAlias:t.nativeAlias===!0,displayName:oi(t.displayName),strategy:si(t.strategy),stickyLimit:ci(t.stickyLimit),defaultEffort:li(t.defaultEffort),imageInput:Yr(t.imageInput),reasoningEffortMode:Xr(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 pi(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 mi(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 hi(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:null}function gi(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function _i(e,t){let n=hi(e.routingQuota);if(!n||n.state!==`available`&&n.state!==`exhausted`)return null;let r=gi(n.updatedAt),i=gi(n.validUntil);return r===null||r<0||r>t||t-r>=Kr||i===null||i<=t||i>r+Kr?null:{state:n.state,validUntil:i}}function vi(e,t){return _i(e,t)?.state??`unknown`}function yi(e,t=Date.now()){if(!Array.isArray(e))return;let n;for(let r of e){let e=hi(r);if(!e||typeof e.provider!=`string`||!e.provider.trim())continue;let i=_i(e,t);i&&(n===void 0||i.validUntil<n)&&(n=i.validUntil)}return n}function bi(e,t=Date.now()){if(!Array.isArray(e))return{};let n={};for(let r of e){let e=hi(r),i=typeof e?.provider==`string`?e.provider.trim():``;if(!e||!i)continue;let a=vi(e,t);n[i]=Object.hasOwn(n,i)&&n[i]!==a?`unknown`:a}return n}function xi(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 Si(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&&xi(i.targets,t.providerQuotaStates,t.providers)===`exhausted`&&n.push({id:i.id,model:i.model,reason:`all-targets-exhausted`});return n}function Ci(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 wi(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)&&Ci(e,r)&&(e.modelProfile??``)===(r.modelProfile??``)})}function Ti(e,t={}){let n=e.strategy===`round-robin`||e.strategy===`random`;return{id:e.id.trim(),...t.renameFrom?{renameFrom:t.renameFrom}:{},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:ii(e.decisionProvider),decisionModel:e.decisionModel?.trim()||null,decisionTimeoutMs:e.decisionTimeoutMs??null}:{}}}}function Ei(e,t){let n=e.id.trim();if(!n)return`missingId`;if(!ei(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(!Qr.test(r))return`invalidAlias`;if(r===`combo`||r.startsWith(`combo/`))return`aliasReservedNamespace`;if(!r.includes(`/`)&&$r.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&&!wr.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=>!Rr.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`&&Fr(e)===`model`){let n=e.decisionModel?.trim()??``;if(!n||n.length>512||e.decisionProvider!=null||Ir(n,t.combos??[],e)||t.decisionModels&&!t.decisionModels.includes(n))return`invalidDecisionModel`}return e.strategy===`jev`&&Fr(e)===`systemone`&&(!e.decisionProvider?.trim()||Ai(e.decisionProvider,t.providers)!==null)?`invalidDecisionProvider`:e.targets.some(e=>t.providers[e.provider.trim()]?.disabled!==!0)?null:`noEnabledTarget`}function Di(e=``){return{id:e,model:e?ti(e):`combo/`,alias:null,nativeAlias:!1,displayName:null,strategy:`failover`,stickyLimit:1,defaultEffort:null,imageInput:`auto`,reasoningEffortMode:`strict`,targets:[Jr()]}}var Oi=[`gpt-6-astra`,`gpt-5.6-sol`,`gpt-5.6-luna`];function ki(e,t,n){let r=Oi.flatMap(n=>{let r=e.find(e=>e.id===n&&(t===void 0||t.has(e.provider)));return r?[Jr({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:ii(n),targets:r.length>0?r:[Jr()]}}function Ai(e,t){let n=ii(e);return n===null?null:Mr(Object.hasOwn(t,n)?t[n]:void 0)}function ji(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=Mr(e);return{id:e.name,...e.baseUrl?{baseUrl:e.baseUrl}:{},...t?{issue:t}:{}}}),r=ii(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 Mi(e,t){if(e.strategy!==`jev`)return null;let n=ii(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 Ni=[`none`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`,`ultra`],Pi=[`manual`,`auto`],Fi=300,Ii=[`manual`,`manual+auto`,`auto`],Li={manual:`compactionRouting.triggersManual`,"manual+auto":`compactionRouting.triggersBoth`,auto:`compactionRouting.triggersAuto`},Ri=[`all`,`selected`],zi={all:`compactionRouting.sourcesAll`,selected:`compactionRouting.sourcesSelected`};function Bi(e){if(!e)return`manual`;let t=e.includes(`auto`);return e.includes(`manual`)?t?`manual+auto`:`manual`:t?`auto`:`manual`}function Vi(e){if(e===`auto`)return[`auto`];if(e===`manual+auto`)return[`manual`,`auto`]}function Hi(e){let t=new Map;for(let n of fi(e))t.set(n.model,[...new Set(n.targets.flatMap(e=>e.provider?[e.provider]:[]))]);return t}function Ui(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`||!Ni.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`&&Pi.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 Wi(e){if(!e)return``;try{return new URL(e).hostname||e}catch{return e}}function Gi(e,t){let n=t.get(e);return n?`${e} (${n})`:e}function Ki(e){return(0,Q.jsx)(qi,{...e},e.apiBase)}function qi({apiBase:e,models:t,providers:n=[]}){let r=i(),[a,o]=(0,Z.useState)(void 0),[s,c]=(0,Z.useState)(``),[l,u]=(0,Z.useState)(``),[d,f]=(0,Z.useState)(`manual`),[p,m]=(0,Z.useState)(`all`),[h,g]=(0,Z.useState)([]),[_,v]=(0,Z.useState)(``),[y,b]=(0,Z.useState)(!1),[x,S]=(0,Z.useState)(!1),[C,w]=(0,Z.useState)(null),[E,D]=(0,Z.useState)(()=>new Map),O=(0,Z.useRef)(!1),k=(0,Z.useRef)(null),A=(0,Z.useCallback)(e=>{o(e),c(e?.model??``),u(e?.reasoningEffort??``),f(Bi(e?.triggers)),m(e?.sourceModels?`selected`:`all`),g(e?.sourceModels??[])},[]),j=e=>{g(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e]),w(null)},M=(0,Z.useCallback)(async()=>{if(k.current)return;let t=T(15e3);k.current=t,S(!1);try{let n=Ui(await Sn(await fetch(`${e}/api/settings`,{signal:t.signal})));O.current&&k.current===t&&A(n);let r=await fetch(`${e}/api/combos`,{signal:t.signal}).then(Sn).then(Hi).catch(()=>new Map);O.current&&k.current===t&&D(r)}catch{O.current&&k.current===t&&S(!0)}finally{t.clear(),k.current===t&&(k.current=null)}},[e,A]);(0,Z.useEffect)(()=>{O.current=!0;let e=window.setTimeout(()=>{M()},0);return()=>{window.clearTimeout(e),O.current=!1,k.current?.controller.abort(),k.current?.clear(),k.current=null}},[M]);let N=async()=>{if(k.current||a===void 0)return;let t=T(15e3);k.current=t,b(!0),w(null);try{let n=Ui(await Sn(await fetch(`${e}/api/settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({compactionRouting:s?{model:s,...l?{reasoningEffort:l}:{},...Vi(d)?{triggers:Vi(d)}:{},...p===`selected`&&h.length>0?{sourceModels:h}:{}}:null}),signal:t.signal})));O.current&&k.current===t&&(A(n),w(`saved`))}catch{O.current&&k.current===t&&w(`failed`)}finally{t.clear(),O.current&&k.current===t&&b(!1),k.current===t&&(k.current=null)}},P=[{value:``,label:r(`compactionRouting.currentModel`)},...[...new Set([...t.map(e=>e.namespaced),...s?[s]:[]])].map(e=>({value:e,label:ve(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=(a?.sourceModels??[]).filter(e=>!I.has(e)),R=y||a===void 0||x,z=a?.sourceModels?`selected`:`all`,B=new Set(a?.sourceModels),V=s!==(a?.model??``)||l!==(a?.reasoningEffort??``)||d!==Bi(a?.triggers)||p!==z||p===`selected`&&(h.length!==(a?.sourceModels?.length??0)||h.some(e=>!B.has(e))),H=p===`selected`&&h.length===0,U=new Set(h),ee=[...new Set(t.map(e=>e.namespaced))].filter(e=>e.toLowerCase().includes(_.trim().toLowerCase())),W=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),G=E.get(s),te=G!==void 0||s.startsWith(ti(``)),ne=s.slice(0,Math.max(s.indexOf(`/`),0)),K=new Map(n.map(e=>[e.name,Wi(e.baseUrl)]).filter(([,e])=>e)),re=te?``:Gi(ne||s,K),q=G?.map(e=>Gi(e,K)).join(`, `)||r(`compactionRouting.comboProvidersUnknown`),J=d!==`manual`,ie=h.join(`, `),Y=!s||H?null:te?p===`selected`?r(`compactionRouting.comboWarningScoped`,{combo:s,providers:q,sources:ie}):r(`compactionRouting.comboWarning`,{combo:s,providers:q}):p===`selected`?r(`compactionRouting.providerWarningScoped`,{provider:re,sources:ie}):r(`compactionRouting.providerWarning`,{provider:re});return(0,Q.jsxs)(`section`,{className:`panel`,"aria-labelledby":`compaction-routing-title`,"aria-busy":y||a===void 0&&!x,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)(an,{id:`compaction-routing-model`,value:s,options:P,disabled:R,label:r(`compactionRouting.model`),onChange:e=>{c(e),e||(u(``),f(`manual`),m(`all`),g([])),w(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)(an,{id:`compaction-routing-triggers`,value:d,disabled:R||!s,align:`right`,label:r(`compactionRouting.triggers`),options:Ii.map(e=>({value:e,label:r(Li[e])})),onChange:e=>{f(e),w(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)(an,{id:`compaction-routing-sources`,value:p,disabled:R||!s,align:`right`,label:r(`compactionRouting.sources`),options:Ri.map(e=>({value:e,label:r(zi[e])})),onChange:e=>{m(e),w(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)(an,{id:`compaction-routing-effort`,value:l,disabled:R||!s,align:`right`,label:r(`compactionRouting.effort`),options:[{value:``,label:r(`compactionRouting.currentEffort`)},...Ni.map(e=>({value:e,label:r(`models.reasoningEffort.${e}`)}))],onChange:e=>{u(e),w(null)}})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:R||!V||H,onClick:()=>{N()},children:r(y?`common.saving`:`common.save`)})]})]}),s&&p===`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(W)]}),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:_,disabled:R,"aria-label":r(`pws.modelSearchPlaceholder`),placeholder:r(`pws.modelSearchPlaceholder`),onChange:e=>v(e.target.value)}),ee.slice(0,Fi).map(W),ee.length>Fi&&(0,Q.jsx)(`p`,{className:`muted text-label`,children:r(`pws.modelsTruncated`,{shown:Fi,total:ee.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(W)]}),H&&(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:r(`compactionRouting.sourcesNone`)})]})]}),Y&&(0,Q.jsxs)(`div`,{className:`notice-warn`,role:`note`,style:{marginTop:12},children:[(0,Q.jsx)(De,{width:14}),` `,Y]}),s&&J&&(0,Q.jsxs)(`div`,{className:`notice-warn`,role:`note`,style:{marginTop:12},children:[(0,Q.jsx)(De,{width:14}),` `,r(`compactionRouting.autoNotice`)]}),x&&(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`)})]}),C===`failed`&&(0,Q.jsx)(`div`,{className:`notice notice-err`,role:`alert`,style:{marginTop:12,marginBottom:0},children:r(`compactionRouting.saveFailed`)}),C===`saved`&&(0,Q.jsx)(`div`,{className:`muted setting-hint`,role:`status`,children:r(`compactionRouting.saved`)})]})}var Ji=0;function Yi(e){let t=e.split(/\n{2,}/).map(e=>e.trim()).filter(e=>e.length>0);return t.length>0?t:[e]}function Xi(t,n,r,i){let a=e[t],o=`opencodex-action-dialog-${++Ji}`,s=document.activeElement,c=typeof s?.focus==`function`?s:null,l=!1,u=document.createElement(`dialog`);u.id=o,u.className=`modal-overlay`,u.setAttribute(`aria-labelledby`,`${o}-body`);let d=document.createElement(`button`);d.type=`button`,d.className=`modal-backdrop-dismiss`,d.tabIndex=-1,d.setAttribute(`aria-label`,a[`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),i?.removeEventListener(`abort`,m);try{u.open&&typeof u.close==`function`&&u.close(),u.remove(),c?.isConnected&&c.focus()}finally{r(e)}}};function m(){p(n)}function h(e){e.key===`Escape`&&p(n)}return d.addEventListener(`click`,()=>p(n)),u.addEventListener(`cancel`,e=>{e.preventDefault(),p(n)}),window.addEventListener(`hashchange`,m),window.addEventListener(`popstate`,m),i?.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:`${o}-body`,finish:p}}function Zi(e,t,n,r=`div`){let i=document.createElement(r);i.id=t;for(let e of Yi(n)){let t=document.createElement(`p`);t.className=`modal-desc`,t.textContent=e,i.append(t)}return e.append(i),i}function Qi(t){let n=t.locale??c(),r=e[n],i=t.tone===`danger`;return new Promise(e=>{if(t.signal?.aborted){e(!1);return}let{form:a,bodyId:o,finish:s}=Xi(n,!1,e,t.signal);Zi(a,o,t.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=r[`common.cancel`],l.addEventListener(`click`,()=>s(!1));let u=document.createElement(`button`);u.type=`submit`,u.className=i?`btn btn-danger`:`btn btn-primary`,u.textContent=t.confirmLabel??r[`common.ok`],a.addEventListener(`submit`,e=>{e.preventDefault(),s(!0)}),c.append(l,u),a.append(c),queueMicrotask(()=>(i?l:u).focus())})}function $i(t){let n=t.locale??c(),r=e[n];return new Promise(e=>{if(t.signal?.aborted){e(null);return}let{form:i,bodyId:a,finish:o}=Xi(n,null,e,t.signal),s=document.createElement(`input`),c=`${a}-input`,l=Zi(i,a,t.message,`label`);l.className=`field-label`,l.setAttribute(`for`,c),s.id=c,s.className=`input`,s.type=`text`,s.value=t.initialValue??``,s.spellcheck=!1,s.autocapitalize=`none`,t.maxLength!==void 0&&(s.maxLength=t.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=r[`common.cancel`],m.addEventListener(`click`,()=>o(null));let h=document.createElement(`button`);h.type=`submit`,h.className=`btn btn-primary`,h.textContent=t.confirmLabel??r[`common.save`],i.addEventListener(`submit`,e=>{e.preventDefault();let n=s.value,r=t.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 ea(){return st()}function ta(e,t){return typeof window<`u`&&typeof window.setInterval==`function`?window.setInterval(e,t):setInterval(e,t)}function na(e){if(typeof window<`u`&&typeof window.clearInterval==`function`){window.clearInterval(e);return}clearInterval(e)}function ra(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=ta(o,t))},c=()=>{i!==null&&(na(i),i=null)},l=()=>{if(r){if(ea()){c();return}o(),s()}};r&&ea()||s();let u=r?ct(l):null;return n?.immediate&&o(),()=>{a=!0,c(),u?.()}}var ia=new Map;function aa(e,t){let n=`${e}:${t}`,r=ia.get(n);return r||(r=new Intl.NumberFormat(e,{minimumFractionDigits:t,maximumFractionDigits:t}),ia.set(n,r)),r}var oa=new Map;function sa(e){let t=oa.get(e);return t||(t=new Intl.NumberFormat(e),oa.set(e,t)),t}function ca(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`${aa(t,r===0?0:1).format(i)} ${n[r]}`}function la(e,t){return!Number.isFinite(e)||e<0?`—`:sr(e/1e3,t)}function ua(e){return typeof e.observedBytes==`number`?e.observedBytes:Math.max(e.rss,e.external??0,e.arrayBuffers??0)}function da(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 fa(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:(ua(n)-ua(t))/r*36e5}function pa({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 ma({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?`—`:ca(e,r),t!==null&&(0,Q.jsxs)(`span`,{className:`mem-pressure-limit`,children:[` / `,ca(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 ha=60,ga=1500,_a=12e4;function va({apiBase:e}){let{locale:t,t:n}=D(),[r,i]=(0,Z.useState)(null),[a,o]=(0,Z.useState)(!1),[s,c]=(0,Z.useState)(`idle`),[l,u]=(0,Z.useState)(null),[d,f]=(0,Z.useState)(!1),[p,m]=(0,Z.useState)(!1),[h,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||f(r.protection===`none`)}catch{}})(),()=>{t=!0}},[e]),(0,Z.useEffect)(()=>{let t=!1,n=!1,r=null,a=async()=>{if(n)return;n=!0;let a=T(1e4);r=a;try{let n=await fetch(`${e}/api/system/memory`,{signal:a.signal});if(!n.ok)throw Error(`memory unavailable`);let r=await n.json();if(t)return;i(r),o(!1),m(typeof r.activeTurnCount==`number`),r.isDraining&&s===`idle`&&c(`draining`),(s===`draining`||s===`reconnecting`)&&h!=null&&typeof r.pid==`number`&&r.pid!==h&&!r.isDraining&&(c(`idle`),g(null),u(null))}catch{if(t)return;s===`draining`||s===`reconnecting`?c(`reconnecting`):o(!0)}finally{a.clear(),r===a&&(r=null),n=!1}};a();let l=ra(()=>void a(),5e3);return()=>{t=!0,r?.controller.abort(),r?.clear(),l()}},[e,s,h]),(0,Z.useEffect)(()=>{if(s!==`reconnecting`)return;let t=!1,r=!1,i=null,a=Date.now(),o=()=>{if(r||t)return;r=!0;let o=T(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>=_a&&(c(`error`),u(n(`dash.mem.restartFailed`)));return}let r=h==null;if(h!=null)try{let t=await e.json();r=typeof t.pid==`number`&&t.pid!==h}catch{r=!0}if(!t){if(r){c(`idle`),g(null),u(null);return}Date.now()-a>=_a&&(c(`error`),u(n(`dash.mem.restartFailed`)))}}).catch(()=>{t||Date.now()-a>=_a&&(c(`error`),u(n(`dash.mem.restartFailed`)))}).finally(()=>{o.clear(),i===o&&(i=null),r=!1})};o();let l=setInterval(o,ga);return()=>{t=!0,i?.controller.abort(),i?.clear(),clearInterval(l)}},[e,s,h,n]);let _=async()=>{let t=r?.activeTurnCount??0,i=[n(`dash.mem.restartConfirm`,{count:t,seconds:ha})];if(d&&i.push(n(`dash.mem.restartNoSupervisor`)),await Qi({message:i.join(`
2
-
3
- `),tone:`danger`})){u(null),g(typeof r?.pid==`number`?r.pid:null),c(`draining`);try{if(!(await fetch(`${e}/api/system/restart`,{method:`POST`})).ok)throw Error(`restart_failed`)}catch{c(`error`),g(null),u(n(`dash.mem.restartFailed`))}}};if(a&&!r&&s===`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)(k,{width:16,height:16,"aria-hidden":`true`}),n(`dash.mem.title`)]}),(0,Q.jsx)(`div`,{className:`muted text-control`,style:{marginTop:8},children:n(`dash.mem.unavailable`)})]});let v=r?.watchdog?fa(r.watchdog.samples):null,y=r?r.observedBytes??r.watchdog?.observedBytes??ua(r):null,b=r?da(r):null,x=(()=>{let e=r?.watchdog?.warnThresholdBytes;if(v===null||v<=0||y===null||!e)return;let t=e-y;if(t<=0)return`danger`;let n=t/v;if(n<=1)return`danger`;if(n<=8)return`warn`})(),S=r?.responseState,C=r?.activeTurnCount,w=s===`draining`||s===`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)(k,{width:16,height:16,"aria-hidden":`true`}),n(`dash.mem.title`)]}),p&&(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:n(`dash.mem.inFlight`)}),(0,Q.jsx)(`span`,{className:`mem-inflight-value mono`,children:typeof C==`number`?sa(t).format(C):`—`})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:w,onClick:()=>{_()},children:n(`dash.mem.restart`)})]})]}),(0,Q.jsx)(ma,{observedBytes:y,thresholdBytes:r?.watchdog?.warnThresholdBytes??null,metric:b,locale:t,t:n}),(0,Q.jsxs)(`div`,{className:`stat-row mem-stats`,children:[(0,Q.jsx)(pa,{label:n(`dash.mem.rss`),value:r?ca(r.rss,t):`—`}),(0,Q.jsx)(pa,{label:n(`dash.mem.jsHeap`),value:r?ca(r.heapUsed,t):`—`,sub:r?n(`dash.mem.jsHeapArena`,{total:ca(r.heapTotal,t)}):void 0}),(0,Q.jsx)(pa,{label:n(`dash.mem.jscHeap`),value:r?.jscHeap?ca(r.jscHeap.heapSize,t):`—`}),(0,Q.jsx)(pa,{label:n(`dash.mem.growth`),value:v===null?`—`:`${v>=0?`+`:`−`}${ca(Math.abs(v),t)}${n(`dash.mem.perHour`)}`,tone:x})]}),(0,Q.jsxs)(`details`,{style:{marginTop:10},children:[(0,Q.jsx)(`summary`,{className:`muted text-label`,style:{cursor:`pointer`,padding:`2px 2px`},children:n(`dash.mem.details`)}),(0,Q.jsx)(`div`,{className:`muted text-control`,style:{margin:`8px 0 0`},children:n(`dash.mem.hint`)}),(0,Q.jsx)(`div`,{className:`muted text-label`,style:{margin:`14px 0 6px`},children:n(`dash.mem.runtime`)}),(0,Q.jsxs)(`div`,{className:`stat-row`,children:[(0,Q.jsx)(pa,{label:n(`dash.mem.observed`),value:y===null?`—`:`${ca(y,t)} (${b})`}),(0,Q.jsx)(pa,{label:n(`dash.mem.external`),value:r?.external===void 0?`—`:ca(r.external,t)}),(0,Q.jsx)(pa,{label:n(`dash.mem.arrayBuffers`),value:r?.arrayBuffers===void 0?`—`:ca(r.arrayBuffers,t)})]}),(0,Q.jsx)(`div`,{className:`muted text-label`,style:{margin:`14px 0 6px`},children:n(`dash.mem.store`)}),(0,Q.jsx)(`div`,{className:`muted text-control`,style:{marginBottom:10},children:n(`dash.mem.storeHint`)}),(0,Q.jsxs)(`div`,{className:`stat-row`,children:[(0,Q.jsx)(pa,{label:n(`dash.mem.storeEntries`),value:S?sa(t).format(S.count):`—`}),(0,Q.jsx)(pa,{label:n(`dash.mem.storeTotal`),value:S?ca(S.totalBytes,t):`—`}),(0,Q.jsx)(pa,{label:n(`dash.mem.storeLargest`),value:S?ca(S.largestBytes,t):`—`}),(0,Q.jsx)(pa,{label:n(`dash.mem.storeOldest`),value:S?S.count===0?`—`:la(S.oldestAgeMs,t):`—`})]}),r?.watchdog&&(0,Q.jsxs)(`div`,{className:`stat-row`,style:{marginTop:16},children:[(0,Q.jsx)(pa,{label:n(`dash.mem.threshold`),value:ca(r.watchdog.warnThresholdBytes,t)}),(0,Q.jsx)(pa,{label:n(`dash.mem.lastWarn`),value:r.watchdog.lastWarnAt?new Date(r.watchdog.lastWarnAt).toLocaleString(t):n(`dash.mem.never`)})]})]}),p&&(0,Q.jsxs)(`div`,{className:`mem-status`,"aria-live":`polite`,children:[s===`draining`&&(0,Q.jsx)(`span`,{className:`muted text-control`,children:n(`dash.mem.draining`,{count:typeof C==`number`?C:0})}),s===`reconnecting`&&(0,Q.jsx)(`span`,{className:`muted text-control`,children:n(`dash.mem.reconnecting`)}),s===`error`&&l&&(0,Q.jsx)(`span`,{className:`text-control`,style:{color:`var(--danger, #c44)`},children:l}),d&&s===`idle`&&(0,Q.jsx)(`span`,{className:`muted text-control`,children:n(`dash.mem.restartNoSupervisor`)})]})]})}var ya=[`none`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`,`ultra`];function ba(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`||!ya.includes(a)))throw Error(`invalid effort`);n[e]={model:i,...a?{reasoningEffort:a}:{}}}return n}function xa(e,t){return e?{model:e,...t?{reasoningEffort:t}:{}}:void 0}function Sa(e){return(0,Q.jsx)(Ca,{...e},e.apiBase)}function Ca({apiBase:e,models:t}){let n=i(),[r,a]=(0,Z.useState)(void 0),[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(``),[u,d]=(0,Z.useState)(``),[f,p]=(0,Z.useState)(``),[m,h]=(0,Z.useState)(``),[g,_]=(0,Z.useState)(!1),[v,y]=(0,Z.useState)(!1),[b,x]=(0,Z.useState)(null),S=(0,Z.useRef)(!1),C=(0,Z.useRef)(null),w=(0,Z.useRef)(null),E=er(o,w),D=(0,Z.useCallback)(e=>{a(e),l(e.extract?.model??``),d(e.extract?.reasoningEffort??``),p(e.consolidation?.model??``),h(e.consolidation?.reasoningEffort??``)},[]),O=(0,Z.useCallback)(async()=>{if(C.current)return;let t=T(15e3);C.current=t,y(!1);try{let n=ba(await Sn(await fetch(`${e}/api/settings`,{signal:t.signal})));S.current&&C.current===t&&D(n)}catch{S.current&&C.current===t&&y(!0)}finally{t.clear(),C.current===t&&(C.current=null)}},[e,D]);(0,Z.useEffect)(()=>{S.current=!0;let e=window.setTimeout(()=>{O()},0);return()=>{window.clearTimeout(e),S.current=!1,C.current?.controller.abort(),C.current?.clear(),C.current=null}},[O]);let k=async()=>{if(C.current||r===void 0)return;let t=T(15e3);C.current=t,_(!0),x(null);let n=xa(c,u),i=xa(f,m);try{let r=ba(await Sn(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})));S.current&&C.current===t&&(D(r),x(`saved`))}catch{S.current&&C.current===t&&x(`failed`)}finally{t.clear(),S.current&&C.current===t&&_(!1),C.current===t&&(C.current=null)}},A=[{value:``,label:n(`memoryModels.off`)},...[...new Set([...t.map(e=>e.namespaced),...[c,f].filter(Boolean)])].map(e=>({value:e,label:ve(e,n)}))],j=[{value:``,label:n(`memoryModels.defaultEffort`)},...ya.map(e=>({value:e,label:n(`models.reasoningEffort.${e}`)}))],M=g||r===void 0||v,P=c!==(r?.extract?.model??``)||u!==(r?.extract?.reasoningEffort??``)||f!==(r?.consolidation?.model??``)||m!==(r?.consolidation?.reasoningEffort??``),F=!!c!=!!f,I=n(`memoryModels.info`),L=(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)(an,{id:`memory-models-${e}`,value:t,options:A,disabled:M,label:n(`memoryModels.model`),onChange:e=>{i(e),e||a(``),x(null)}}),(0,Q.jsx)(an,{id:`memory-models-${e}-effort`,value:r,options:j,disabled:M||!t,align:`right`,label:n(`memoryModels.effort`),onChange:e=>{a(e),x(null)}})]})]});return(0,Q.jsxs)(`section`,{className:`panel`,"aria-labelledby":`memory-models-title`,"aria-busy":g||r===void 0&&!v,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:w,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(`memoryModels.infoLabel`),"aria-expanded":o,"aria-haspopup":`dialog`,"aria-controls":`memory-models-help-dialog`,children:(0,Q.jsx)(xe,{width:13,height:13,"aria-hidden":`true`})})]}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:n(`memoryModels.description`)}),L(`extract`,c,u,l,d),L(`consolidation`,f,m,p,h),(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||!P,onClick:()=>{k()},children:n(g?`common.saving`:`common.save`)})]}),F&&(0,Q.jsxs)(`div`,{className:`notice-warn`,role:`note`,style:{marginTop:12},children:[(0,Q.jsx)(De,{width:14}),` `,n(`memoryModels.accountNotice`)]}),v&&(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:()=>{O()},children:n(`common.retry`)})]}),b===`failed`&&(0,Q.jsx)(`div`,{className:`notice notice-err`,role:`alert`,style:{marginTop:12,marginBottom:0},children:n(`memoryModels.saveFailed`)}),b===`saved`&&(0,Q.jsx)(`div`,{className:`muted setting-hint`,role:`status`,children:n(`memoryModels.saved`)}),(0,Q.jsxs)(`dialog`,{ref:E,id:`memory-models-help-dialog`,className:`modal-overlay`,style:{display:o?`flex`:`none`,border:`none`,margin:0,maxWidth:`none`,maxHeight:`none`,width:`100%`,height:`100%`},"aria-labelledby":`memory-models-help-title`,onCancel:e=>{e.preventDefault(),s(!1)},children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":n(`common.close`),tabIndex:-1,onClick:()=>s(!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:()=>s(!1),"aria-label":n(`common.close`),children:(0,Q.jsx)(N,{})})]}),(0,Q.jsx)(`div`,{className:`modal-desc leading-relaxed`,style:{whiteSpace:`pre-line`},children:I}),(0,Q.jsx)(`div`,{className:`modal-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>s(!1),children:n(`common.ok`)})})]})]})]})}function wa({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)(xe,{width:13,height:13,"aria-hidden":`true`})})]}),(0,Q.jsxs)(`div`,{className:`dash-effort-controls`,children:[(0,Q.jsx)(an,{value:c,options:[{value:``,label:n(`dash.effortCapNone`)},...Cn.map(e=>({value:e,label:e}))],onChange:async t=>{if(!u){p(!0);try{let n=await Sn(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)(an,{value:l,options:[{value:``,label:n(`dash.effortCapNone`)},...Cn.map(e=>({value:e,label:e}))],onChange:async t=>{if(!u){p(!0);try{let n=await Sn(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 Ta({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)(an,{value:n,options:[{value:``,label:t(`dash.injectionNone`)},...a.map(e=>({value:e.namespaced,label:ve(`${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)(an,{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:()=>Wt(`#subagents`),children:t(`dash.injectionManage`)})]})]})}function Ea({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)(Fe,{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)(De,{}):(0,Q.jsx)(Fe,{}),(0,Q.jsxs)(`span`,{children:[En(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)(De,{}):(0,Q.jsx)(Se,{}),(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)(C,{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)(N,{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)(De,{}),(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)(N,{width:13,height:13,"aria-hidden":`true`})})]})]})}function Da({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(tn(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:Ln,max:In,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:Ln,max:In})})]})]}):null}function Oa({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=Vn(f,S),k=Un(O,D),A=String(c?.vision?.maxDescriptionsPerTurn??8),j=String(c?.vision?.timeoutMs??Fn),[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,ee=P??j,W=(e=U)=>{let t=Rn(e);if(t===void 0){N(e),L(!0);return}L(!1),N(null),t!==(c?.vision?.maxDescriptionsPerTurn??8)&&p(Nn(t))},G=(e=ee)=>{let t=zn(e);if(t===void 0){F(e),z(!0);return}z(!1),F(null),t!==(c?.vision?.timeoutMs??Fn)&&p(Pn(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`)}),jn(m)&&(0,Q.jsxs)(`div`,{className:`notice-warn`,role:`status`,children:[(0,Q.jsx)(De,{}),(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)(an,{value:E,options:[{value:``,label:t(`dash.webSearchOff`)},...u],onChange:e=>{if(e===``){p(An(!1));return}let t={webSearch:Xn(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)(an,{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)(an,{value:S,options:[{value:``,label:t(`dash.visionOff`)},...d],onChange:e=>{if(e===``){p(kn(!1));return}let t=Un(Vn(f,e),k),n={vision:{model:e,backend:Zn(f,d,e),reasoning:t}};x||(n.vision={...n.vision,enabled:!0}),p(n)},disabled:!c||l,label:t(`dash.sidecarModel`)}),(0,Q.jsx)(an,{value:k,options:Hn(O,k).map(e=>({value:e,label:e})),onChange:e=>{p(On(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)(an,{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)(Ue,{width:12,height:12,"aria-hidden":`true`,style:{transform:B?`rotate(90deg)`:`none`,transition:`transform .12s`}})]})})]}),(0,Gt.createPortal)((0,Q.jsx)(Da,{t,open:B,triggerRef:H,onClose:()=>V(!1),maxValue:U,maxInvalid:I,timeoutValue:ee,timeoutInvalid:R,disabled:!x||!c||l,setMaxDraft:N,setMaxInvalid:L,setTimeoutDraft:F,setTimeoutInvalid:z,commitMaxDescriptions:W,commitTimeout:G}),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)(xe,{width:13,height:13,"aria-hidden":`true`})}),(0,Q.jsx)(`code`,{className:`muted text-caption`,children:`⚠ ${_n(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)(an,{value:h?.model??``,options:qn(f,h?.model,h?.sourceModels).map(e=>e.value===``?e:{...e,label:ve(e.value,t)}),onChange:e=>{b({model:e})},disabled:!h||g||!h?.enabled,label:t(`dash.shadowCallModel`),align:`right`})]})]})})]})}function ka(e){return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(wa,{apiBase:e.apiBase,d:e}),(0,Q.jsxs)(`div`,{className:`dash-overview-tools`,children:[(0,Q.jsx)(Ta,{apiBase:e.apiBase,d:e}),(0,Q.jsx)(Ea,{d:e})]}),(0,Q.jsx)(Oa,{d:e}),(0,Q.jsx)(Ki,{apiBase:e.apiBase,models:e.models,providers:e.providers}),(0,Q.jsx)(Sa,{apiBase:e.apiBase,models:e.models}),(0,Q.jsx)(va,{apiBase:e.apiBase})]})}function Aa(e){return(0,Q.jsxs)(`div`,{className:`dash-overview-stack`,children:[(0,Q.jsx)(mr,{...e}),(0,Q.jsx)(ka,{...e})]})}function ja({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)(on,{title:(0,Q.jsx)(C,{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:_e(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 Ma=`__ocxCachedAt`;function Na(e){try{let t=sessionStorage.getItem(e);if(!t)return null;let n=JSON.parse(t);return Pa(n)?n.data:n}catch{return null}}function Pa(e){return typeof e==`object`&&!!e&&typeof e[Ma]==`number`&&`data`in e}function Fa(e){try{let t=sessionStorage.getItem(e);if(!t)return null;let n=JSON.parse(t);return Pa(n)?{data:n.data,cachedAt:n[Ma]}:{data:n,cachedAt:null}}catch{return null}}function Ia(e,t){try{sessionStorage.setItem(e,JSON.stringify({[Ma]:Date.now(),data:t}))}catch{}}function La(e,t){try{sessionStorage.setItem(e,JSON.stringify(t))}catch{}}function Ra(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 za(e,t,n,r){let{isEmpty:i,sessionCacheKey:a,...o}=r,s=(0,Z.useMemo)(()=>a?Fa(a):null,[a]),c=Rt(e,t,(0,Z.useCallback)(async e=>{let t=await n(e);return a&&Ia(a,t),t},[n,a]),{...o,...a?{initialData:o.initialData??s?.data,initialDataCachedAt:o.initialDataCachedAt??s?.cachedAt??null}:{}});return{...c,state:Ra(c,i,r.enabled!==!1)}}function Ba(){return typeof navigator>`u`?``:navigator.userAgent}function Va(e=Ba()){return e.match(/OpenCodexDesktop\/(\S+)/)?.[1]??null}function Ha(e=Ba()){return Va(e)!==null}var Ua=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;function Wa(e=typeof location>`u`?``:location.search){let t=new URLSearchParams(e).get(`desktop_session`);return t&&Ua.test(t)?t:null}function Ga(e,t,n){let r=e+`/api/update/badge`;if(!Ha(t))return r;let i=Wa(n);return r+`?surface=desktop`+(i?`&session=`+encodeURIComponent(i):``)}function Ka(e=Ba()){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 qa(e=Ba()){if(!Ha(e))return null;let t=Ka(e);return t===`windows`?`http://tauri.localhost/update.html`:t===`macos`||t===`linux`?`tauri://localhost/update.html`:null}function Ja(e=Ba()){let t=qa(e);return t?(window.location.assign(t),!0):!1}function Ya(e=Ba()){if(!Ha(e))return null;let t=Ka(e);return t===`windows`?`http://tauri.localhost/cli.html`:t===`macos`||t===`linux`?`tauri://localhost/cli.html`:null}function Xa(e=Ba()){let t=Ya(e);return t?(window.location.assign(t),!0):!1}function Za(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 Qa(e){return e.desktop!==void 0&&(e.desktop.owned||e.desktop.supervisor!==void 0)}function $a(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 eo(e,t){return!t.mutationInFlight&&e.request===t.request&&e.mutation===t.mutation}function to(e,t){return{request:++e.current,mutation:t.current}}var no=2e3;function ro(e){let t=e.status;return t!==`native`&&t!==`protected`&&t!==`at-risk`?null:t}function io(e){return e?e.stale&&e.status!==`error`:!1}function ao(e,t){return!t||t.diagnosticStale||e!==null&&e!==`error`?e:t.status}var oo=3e4;function so(e){return{multiAgentGuidanceEnabled:e.multiAgentGuidanceEnabled!==!1,syncCodexSubagentDefaults:e.syncCodexSubagentDefaults===!0,injectionModel:e.model??``,injectionEffort:e.effort??``}}function co(e,t){return t.aborted?!0:e instanceof Error&&e.name===`AbortError`}async function lo(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=ro(r);if(!i)throw Error(`invalid startup health response`);return{status:i,stale:r.diagnosticStale===!0}}catch(e){if(co(e,t))throw e;return{status:`error`,stale:!1}}}async function uo(e,t){try{return(await pn(await fetch(`${e}/api/diagnostics/project-config`,{signal:t})))?.grouped??[]}catch{return[]}}async function fo(e,t){return Sn(await fetch(`${e}/api/models`,{signal:t}))}async function po(e,t){return dr(await fetch(`${e}/api/usage?range=30d`,{signal:t}))}async function mo(e,t,n){let{request:r,mutation:i}=to(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 Sn(a),c;try{if(o.ok){let e=await o.json();eo({request:r,mutation:i},{request:n.shadowCallRequestEpochRef.current,mutation:n.shadowCallMutationEpochRef.current,mutationInFlight:n.shadowCallMutationInFlightRef.current})&&(c=e)}else eo({request:r,mutation:i},{request:n.shadowCallRequestEpochRef.current,mutation:n.shadowCallMutationEpochRef.current,mutationInFlight:n.shadowCallMutationInFlightRef.current})&&(c=null)}catch{eo({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 ho(e,t,n){let{request:r,mutation:i}=to(n.settingsRequestEpochRef,n.settingsMutationEpochRef),a=await Sn(await fetch(`${e}/api/settings`,{signal:t})),o,s;return eo({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 go(e,t){try{let n=await fetch(`${e}/api/v2`,{signal:t});if(!n.ok)return{maMode:`default`};let r=await n.json(),i=nr(r.multiAgentSurfaceAdvisory);return r.multiAgentMode===`v1`||r.multiAgentMode===`v2`?{maMode:r.multiAgentMode,advisory:i}:{maMode:`default`,advisory:i}}catch(e){if(co(e,t))throw e;return{maMode:`default`}}}async function _o(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 Sn(d),t=await Sn(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(co(e,t))throw e;return n(`invalid`)}}finally{r.abort()}}async function vo(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={...so(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 yo=`ocx.dash.controls.v1:`,bo=`ocx.dash.overview.v1:`,xo=`ocx.dash.usage30d.v1:`,So=`ocx.dash.startup.v1:`,Co=`ocx.dash.maMode.v1:`;function wo(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 To(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 Eo(e){return`${yo}${e}`}function Do(e,t=0){let{locale:n,t:r}=D(),[i,a]=(0,Z.useState)(yn),[o,s]=(0,Z.useState)(``),[c,l]=(0,Z.useState)(new Set),u=(0,Z.useMemo)(()=>Na(Eo(e)),[e]),d=(0,Z.useMemo)(()=>Na(`${bo}${e}`),[e]),f=(0,Z.useMemo)(()=>Na(`${xo}${e}`),[e]),p=(0,Z.useMemo)(()=>{let t=Na(`${So}${e}`);return t===`error`?null:t},[e]),m=(0,Z.useMemo)(()=>Na(`${Co}${e}`),[e]),[h,g]=(0,Z.useState)(()=>d?.health??null),[_,v]=(0,Z.useState)(()=>p),[y,b]=(0,Z.useState)(()=>d?.providers??[]),[x,S]=(0,Z.useState)([]),[C,w]=(0,Z.useReducer)(wo,{settings:u?.settings??null,beforeSave:null}),{settings:T}=C,E=C.beforeSave!==null,[O,k]=(0,Z.useState)(()=>u?.sidecar??null),[A,j]=(0,Z.useState)(()=>u?.shadowCall??null),[M,N]=(0,Z.useState)(()=>f),[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),[ee,W]=(0,Z.useState)(()=>m??`default`),[G,te]=(0,Z.useState)(!1),[ne,K]=(0,Z.useState)(null),[re,q]=(0,Z.useState)(null),[J,ie]=(0,Z.useState)(null),[Y,X]=(0,Z.useState)(null),ae=re?.apiBase===e?re.advisory:null,oe=J===e,se=Y?.apiBase===e?Y.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=er(ue,pt),vt=er(Be,mt),yt=er(ce,ht),bt=er(fe,gt);(0,Z.useEffect)(()=>{let e=()=>a(yn());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)(p),St=(0,Z.useRef)(0),Ct=(0,Z.useRef)({settingsRequestEpochRef:Ze,settingsMutationEpochRef:Qe,settingsMutationInFlightRef:$e,shadowCallRequestEpochRef:et,shadowCallMutationEpochRef:tt,shadowCallMutationInFlightRef:nt}).current,wt=Rt(`dashboard-startup-health:${e}`,[e,t],t=>lo(e,t),{pollMs:3e4}),Tt=io(wt.data),Et=wt.refresh;(0,Z.useEffect)(()=>{if(!Tt)return;let e=window.setTimeout(()=>{Et()},no);return()=>window.clearTimeout(e)},[Tt,Et]);let Dt=Rt(`dashboard-overview:${e}`,[e,t],t=>_o(e,t),{pollMs:5e3}),Ot=Ra(Dt,e=>e.health===null,!0),kt=h!==null||Dt.data!==void 0,At=Rt(`dashboard-ma-mode:${e}`,[e,t],t=>go(e,t),{pollMs:5e3}),jt=Rt(`dashboard-sidecars:${e}`,[e,t],async t=>{let n=St.current;return{...await mo(e,t,Ct),startupHealthGeneration:n}},{pollMs:5e3}),Mt=Rt(`dashboard-settings:${e}`,[e,t],async t=>{let n=St.current;return{...await ho(e,t,Ct),startupHealthGeneration:n}},{pollMs:5e3}),Nt=Rt(`dashboard-multi-agent:${e}`,[e,t],t=>vo(e,t),{pollMs:5e3,enabled:kt}),Pt=Rt(fr(e),[e,t],t=>po(e,t),{enabled:kt,pollMs:6e4,deadlineMs:6e4}),Ft=Rt(`dashboard-diagnostics:${e}`,[e,t],t=>uo(e,t),{pollMs:oo,enabled:kt}),It=Rt(`dashboard-models:${e}`,[e,dt,t],t=>fo(e,t),{enabled:kt&&!dt});(0,Z.useEffect)(()=>{if(wt.data!==void 0){let t=wt.data;St.current+=1,v(t.status),xt.current=t.status,t.status!==`error`&&!t.stale&&La(`${So}${e}`,t.status)}},[wt.data,e]),(0,Z.useEffect)(()=>{let t=Dt.data;t&&(t.health&&(g(t.health),b(t.providers),La(`${bo}${e}`,{health:t.health,providers:t.providers})),ft(t.error))},[Dt.data,e]),(0,Z.useEffect)(()=>{At.data!==void 0&&(W(At.data.maMode),q({advisory:At.data.advisory??null,apiBase:e}),La(`${Co}${e}`,At.data.maMode))},[At.data,e]);let Lt=At.data!==void 0||m!==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=Na(Eo(e))??{};La(Eo(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&&w({type:`polled`,settings:t.settings}),t.startupHealthSeed!==void 0&&t.startupHealthGeneration===St.current)){let n=ao(xt.current,t.startupHealthSeed);v(n),xt.current=n,n&&La(`${So}${e}`,n)}},[Mt.data,e]),(0,Z.useEffect)(()=>{if(!T)return;let t=Na(Eo(e))??{};La(Eo(e),{...t,settings:T})},[T,e]),(0,Z.useEffect)(()=>{Pt.data!==void 0&&(N(Pt.data),La(`${xo}${e}`,Pt.data))},[Pt.data,e]),(0,Z.useEffect)(()=>{Ft.data&&ze(Ft.data)},[Ft.data]),(0,Z.useEffect)(()=>{It.data&&S(It.data),V(It.loading)},[It.data,It.loading]),(0,Z.useEffect)(()=>()=>{Ze.current+=1,et.current+=1},[]);let zt=Rt(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 Sn(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 Sn(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=zt.data;e&&(`job`in e&&e.job&&ct(e.job),ut(e.reconnecting),`reload`in e&&e.reload&&window.location.reload())},[zt.data]);let Bt=(0,Z.useMemo)(()=>To(x),[x]),Vt=(0,Z.useMemo)(()=>{let e=o.trim().toLowerCase();if(!e)return Bt;let t=[];for(let[n,r]of Bt){let i=r.filter(t=>t.id.toLowerCase().includes(e)||n.toLowerCase().includes(e));i.length>0&&t.push([n,i])}return t},[Bt,o]),Ht=(0,Z.useMemo)(()=>{let e=O?.webSearch?.backend;return Gn(O?.webSearchModels,x,O?.webSearch?.model,e===`routed`?void 0:e)},[x,O?.webSearchModels,O?.webSearch]),Wt=(0,Z.useMemo)(()=>Kn(O?.visionModels,x,O?.vision?.model,O?.vision?.backend),[O?.visionModels,x,O?.vision]),Gt=async t=>{if(!O||P)return;t=Yn(O,t);let n=O,r={webSearch:Dn(O.webSearch,t.webSearch),vision:Dn(O.vision,t.vision),...O.visionModels?{visionModels:O.visionModels}:{},...O.webSearchModels?{webSearchModels:O.webSearchModels}:{}};F(!0),k(r);try{let n=await Sn(await fetch(`${e}/api/sidecar-settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}),`save failed`);L(e=>Mn(e,n.codexWebSearch)),k({webSearch:n.webSearch,vision:n.vision,...n.visionModels?{visionModels:n.visionModels}:{},...n.webSearchModels?{webSearchModels:n.webSearchModels}:{}});let r=Na(Eo(e))??{};La(Eo(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 Kt(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),K(null);try{let i={multiAgentMode:t};n&&(i.multiAgentSurfaceAdvisoryAcknowledged=!0);let a=await fetch(`${e}/api/v2`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(i)});if(a.ok)W(t),n&&ie(e),La(`${Co}${e}`,t);else{let e=r(`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{}K(e)}}catch(e){K(e instanceof Error?e.message:r(`dash.maNetworkError`))}finally{te(!1)}},Jt=async t=>{if(!(G||ee===t)){if(t!==`v1`){X({mode:t,apiBase:e});return}await qt(`v1`)}},Yt=async()=>{ie(e);try{let t=await fetch(`${e}/api/v2`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({multiAgentSurfaceAdvisoryAcknowledged:!0})});t.ok||K(r(`dash.maSwitchFailed`,{status:String(t.status)}))}catch(e){K(e instanceof Error?e.message:r(`dash.maNetworkError`))}},Xt=async()=>{let e=se;if(X(null),e){await qt(e,!0);return}await Yt()},Zt=async()=>{if(X(null),ee===`v1`){await Yt();return}await qt(`v1`,!0)},Qt=()=>{if(se){X(null);return}ie(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 Sn(await fetch(`${e}/api/injection-model`)),r=so(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(!T||E||H)return;let n=!(T[t]??t===`codexAutoStart`);$e.current=!0,w({type:`save-started`,key:t,value:n});try{let r=await Sn(await fetch(`${e}/api/settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({[t]:n})}),`save failed`);Qe.current+=1,w({type:`save-succeeded`,key:t,settings:r}),(t===`codexDesktopAuthless`||t===`codexClientCompaction`)&&await an()}catch{w({type:`save-failed`}),ft(!0)}finally{$e.current=!1,w({type:`save-finished`})}},Q=()=>tn(`codexAutoStart`),nn=()=>tn(`codexDesktopAuthless`),$=()=>tn(`codexClientCompaction`),rn=(0,Z.useCallback)(()=>{Fe(null),Le(null)},[]),an=async()=>{if(!H){U(!0),Fe(null),Le(null);try{let t=await Sn(await fetch(`${e}/api/sync`,{method:`POST`}),`sync failed`);Fe(t),t.ok&&t.status===`applied`&&(w({type:`applied`}),L(void 0)),t.projectConfigGrouped&&ze(t.projectConfigGrouped)}catch(e){Le(e instanceof Error?e.message:String(e))}finally{U(!1)}}},on=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 Sn(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,on(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(Ja())return;let e=wn(h?.version);Ue(e),Ge(!0),Ve(!0),on(e,!0)},ln=e=>{Ue(e),on(e,!0)},un=(0,Z.useRef)(cn);return(0,Z.useEffect)(()=>{un.current=cn}),(0,Z.useEffect)(()=>{let e=()=>{bn()&&(Ut(`dashboard`),un.current())},t=bn()?window.setTimeout(e,0):null;return window.addEventListener(`hashchange`,e),()=>{t!==null&&window.clearTimeout(t),window.removeEventListener(`hashchange`,e)}},[]),{apiBase:e,locale:n,t:r,selectedSection:i,setSelectedSection:a,modelQuery:o,setModelQuery:s,expandedProviders:c,setExpandedProviders:l,health:h,startupHealth:_,providers:y,models:x,settings:T,sidecar:O,shadowCall:A,usage30d:M,usageLoading:Pt.loading&&!M,healthLoading:Dt.loading&&!h,sidecarSaving:P,shadowCallSaving:R,modelsLoading:B,settingsSaving:E,syncing:H,maMode:ee,maModeResolved:Lt,maBusy:G,setMaHelpOpen:le,maHelpOpen:ce,maError:ne,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:Vt,sidecarModels:Ht,visionModels:Wt,sidecarCodexApply:I,saveSidecar:Gt,saveShadowCall:Kt,switchMaMode:Jt,toggleCodexAutoStart:Q,toggleCodexDesktopAuthless:nn,toggleCodexClientCompaction:$,runSync:an,clearSyncFeedback:rn,fetchUpdateCheck:on,closeUpdateDialog:sn,openUpdateDialog:cn,changeUpdateChannel:ln,runUpdate:async()=>{if(rt?.canUpdate){ot(null);try{let t=await Sn(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 Oo(e){Wt(xn(e))}function ko({apiBase:e,connected:t=!1,authenticationPending:n=!1,refreshEpoch:r=0}){let i=Do(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)(on,{style:{marginTop:40},icon:(0,Q.jsx)(De,{}),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)(C,{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)(Aa,{...i}),v=(0,Q.jsx)(ja,{t:a,providers:c}),y=(0,Q.jsx)(or,{t:a,models:l,modelsLoading:u,modelQuery:d,setModelQuery:f,filteredGroups:p,expandedProviders:m,setExpandedProviders:h}),b=(0,Q.jsx)(ar,{...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],w=Oo,T=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];w(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:()=>w(e.id),onKeyDown:T,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 Ao(e){let t=Object.create(null);for(let n of e)t[n.provider]={requests:n.requests,totalTokens:n.totalTokens};return t}function jo(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 Mo(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 No={justNow:`Just now`,notChecked:`Not checked`,minutesAgo:e=>`${e}m ago`,hoursAgo:e=>`${e}h ago`,daysAgo:e=>`${e}d ago`};function Po(e,t,n){let r=typeof t==`object`&&t?t:No,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 Fo(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 Io(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 Lo(e){return e===`Active account needs re-authentication`?`reauth`:e===`Missing credentials`?`missing`:`custom`}function Ro(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 zo(e,t=`en`){return Ro(e,t)}function Bo(e,t=`en`){return e==null||!Number.isFinite(e)||e<0?`—`:`~$${new Intl.NumberFormat(t,{minimumFractionDigits:4,maximumFractionDigits:4}).format(e)}`}function Vo(e){return e===`5h`?0:e===`First-party models`?2:e===`API usage`?3:e===`Total subscription credits`?4.5:5}var Ho=`Total subscription credits`;function Uo(e){return e.trim().toLowerCase()===Ho.toLowerCase()?Ho:e}function Wo(e,t){if(e===void 0||!t)return!1;let n=Uo(e);for(let e of t)if(Uo(e)===n)return!0;return!1}function Go(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 Ko(e,t,n){let r=P(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=Uo(e.label),r=Go(t,n);i.push({rank:Vo(t),row:{customLabel:t,label:r,limitLabel:r,percent:e.percent,resetAt:e.resetAt}})}if(r.creditsUsd&&typeof r.creditsUsd.percent==`number`&&!r.customWindows?.some(e=>Uo(e.label)===Ho)){let e=Go(Ho,n);i.push({rank:Vo(Ho),row:{customLabel:Ho,label:e,limitLabel:e,percent:r.creditsUsd.percent,resetAt:r.creditsUsd.expiresAt}})}return i.sort((e,t)=>e.rank-t.rank).map(e=>e.row)}function qo(e){if(!e)return-1;let t=[e.fiveHourPercent,e.weeklyPercent,e.monthlyPercent].filter(e=>typeof e==`number`);for(let n of e.customWindows??[])typeof n.percent==`number`&&t.push(n.percent);return!e.customWindows?.some(e=>Uo(e.label)===Ho)&&typeof e.creditsUsd?.percent==`number`&&t.push(e.creditsUsd.percent),t.length?Math.max(...t):-1}function Jo(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 Yo(e){return e>=99.5}function Xo(e,t){return t>0&&e>=t}function Zo(e,t){return Xo(e,t)||Yo(e)?`bar-warn`:`bar-green`}function Qo(e){let t=Math.max(0,Math.min(100,e));return t<=0?0:Math.max(4,Math.round(t))}function $o(e){return{"--bar-scale":String(Qo(e)/100)}}function es(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 ts({quota:e,plan:t,threshold:n,t:r,className:i,layout:a=`compact`,pending:o=!1,incompleteWindowKeys:s,incompleteCustomWindowLabels:c,observedAt:l,afterWeekly:u}){let{locale:d}=D(),f=Ko(e,t,r),p=l===void 0?null:es(l,r),m=p===null?null:(0,Q.jsx)(`p`,{className:`quota-observed muted`,title:r(`quota.observedHint`),children:r(`quota.observedAgo`).replace(`{age}`,p)});return f.length===0?o?a===`stacked`?(0,Q.jsxs)(`div`,{className:`quota-stacked quota-stacked--pending${i?` ${i}`:``}`,"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:r(`common.loading`)})]}):(0,Q.jsxs)(`div`,{className:`codex-account-quota-slot quota-compact quota-compact--pending${i?` ${i}`:``}`,"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:r(`common.loading`)})]}):a===`compact`&&u?(0,Q.jsx)(`div`,{className:`codex-account-quota-slot quota-compact${i?` ${i}`:``}`,children:u}):null:a===`stacked`?(0,Q.jsxs)(`div`,{className:`quota-stacked${i?` ${i}`:``}`,children:[m,f.map(e=>(0,Q.jsx)(rs,{row:e,threshold:n,t:r,locale:d,incomplete:e.windowKey?s?.has(e.windowKey)===!0:Wo(e.customLabel,c)},e.limitLabel))]}):(0,Q.jsxs)(`div`,{className:`codex-account-quota-slot quota-compact${i?` ${i}`:``}`,children:[m,f.map(e=>(0,Q.jsxs)(Z.Fragment,{children:[(0,Q.jsx)(ns,{credits:e.customLabel===Ho,label:e.label,percent:e.percent,resetAt:e.resetAt,threshold:n,t:r,locale:d}),e.windowKey===`weekly`&&u]},e.label)),!f.some(e=>e.windowKey===`weekly`)&&u]})}function ns({credits:e,label:t,percent:n,resetAt:r,threshold:i,t:a,locale:o}){let s=Yo(n),c=Xo(n,i),l=Zo(n,i),u=as(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:$o(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)(De,{width:12,height:12,"aria-hidden":`true`}),Math.round(n),`%`,s?` · ${a(`quota.limitReached`)}`:``]})]})}function rs({row:e,threshold:t,t:n,locale:r,incomplete:i}){let a=Yo(e.percent),o=Xo(e.percent,t),s=Zo(e.percent,t),c=os(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:$o(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)(De,{width:12,height:12,"aria-hidden":`true`}),n(`quota.limitReached`)]})]})}function is(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 as(e,t,n){let r=is(e);if(!r)return{day:``,time:``};let{date:i}=r,a=new Date,o=Jo(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 os(e,t,n=`en`,r=Date.now()){let i=is(e);if(!i)return``;let{date:a,ms:o}=i,s=Jo(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 ss(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 cs(e){let t=new Date(e>1e10?e:e*1e3);return Number.isFinite(t.getTime())?t:null}function ls({report:e,pending:t}){let n=i(),{locale:r}=D(),a=Ie(e),o=Y(e),s=ae(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:n(`codexAuth.fiveHour`),window:a.fiveHour}]:[],...a.weekly?[{key:1,label:n(`codexAuth.weekly`),window:a.weekly}]:[],...a.monthly?[{key:2,label:n(`codexAuth.monthly`),window:a.monthly}]:[],...(a.customWindows??[]).map((e,t)=>({key:t+3,label:e.label,window:e}))]:[],p=e=>new Intl.NumberFormat(r,{maximumFractionDigits:1}).format(e),m=e=>{let t=cs(e);return t===null?null:new Intl.DateTimeFormat(r,{dateStyle:`medium`,timeStyle:`short`}).format(t)},h=ss(r),g=e=>new Intl.NumberFormat(h,{style:`currency`,currency:`USD`}).format(e),_=c?.expiresAt===void 0?null:(e=>{let t=cs(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:n(`pws.capacity.estimate`)}),(o||t)&&(0,Q.jsx)(ts,{quota:o,threshold:80,t:n,layout:`stacked`,pending:t,...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:n(`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:n(`quota.creditsPeriodEnds`,{date:_})})}),f.flatMap(({key:e,label:t,window:r})=>{let i=r.nextRecoveryAt===void 0?null:m(r.nextRecoveryAt);return i!==null&&r.nextRecoveryPercent!==void 0?[(0,Q.jsxs)(`div`,{className:`pws-capacity-recovery`,children:[(0,Q.jsxs)(`span`,{children:[n(`pws.capacity.nextRecovery`),` · `,t,` · `,i]}),(0,Q.jsx)(`strong`,{children:n(`pws.capacity.recoveryShare`,{percent:p(r.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:[n(`pws.capacity.currentAccount`),a.currentAccount.plan?` · ${a.currentAccount.plan}`:``]}),(0,Q.jsx)(ts,{quota:a.currentAccount.quota,threshold:80,t:n,layout:`stacked`})]}),a&&a.incomplete&&a.excludedAccounts>0&&(0,Q.jsx)(`div`,{className:`pws-capacity-incomplete`,children:n(`pws.capacity.incomplete`,{excluded:a.excludedAccounts})}),a&&a.unknownPlanAccounts>0&&(0,Q.jsx)(`div`,{className:`pws-capacity-incomplete`,children:n(`pws.capacity.uncalibratedPlan`,{count:a.unknownPlanAccounts})}),a&&a.partialWindowAccounts>0&&(0,Q.jsx)(`div`,{className:`pws-capacity-incomplete`,children:n(`pws.capacity.partial`,{count:a.partialWindowAccounts})})]})]})}function us({sections:e,quotaReports:t,usageTotals:n,usageLoading:r=!1,quotasLoading:a=!1,onSelectProvider:o,onEditConfig:s,onRefreshAllQuotas:c}){let l=i(),{locale:u}=D(),d=Fo(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)(()=>Io(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 n of _){let r=t[n.name],i=r?Y(r):null,a=r?Ie(r):null;r&&(i||a?.presentation===`coverage-only`)&&e.push({item:n,report:r,urgency:i?qo(i):-1})}return e.sort((e,t)=>t.urgency-e.urgency||e.item.name.localeCompare(t.item.name))},[_,t]),T=(0,Z.useMemo)(()=>{let e={};for(let[t,r]of Object.entries(n))v.has(t)&&(e[t]=r);return Mo(e).slice(0,4)},[n,v]),E=e=>{let t=Lo(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)(Fe,{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)(ds,{count:S,label:l(`pws.status.ready`),tone:`ok`}),(0,Q.jsx)(ds,{count:C,label:l(x>0?`pws.status.needsAttention`:`pws.status.needsSetup`),tone:`warn`}),(0,Q.jsx)(ds,{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)(De,{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)(fe,{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:_e(e.name,l)}),(0,Q.jsx)(`span`,{className:`pws-dashboard-row-meta muted`,children:E(e.reason)})]}),(0,Q.jsx)(Ue,{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)(fe,{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:_e(e.name,l)}),(0,Q.jsx)(`span`,{className:`pws-dashboard-row-meta muted`,children:l(`pws.dashboard.checkedAgo`,{time:Po(t.updatedAt,d)})})]}),(0,Q.jsx)(Ue,{className:`pws-dashboard-row-chevron`,"aria-hidden":`true`}),(0,Q.jsx)(`div`,{className:`pws-dashboard-row-bars`,children:(0,Q.jsx)(ls,{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)(ts,{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":r||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)(fe,{name:e.name,adapter:``,baseUrl:``,cls:`pws-dashboard-row-icon`}),(0,Q.jsx)(`span`,{className:`pws-dashboard-row-name`,children:_e(e.name,l)}),(0,Q.jsx)(`span`,{className:`pws-dashboard-row-count muted`,children:l(`pws.dashboard.requests`,{count:Ro(e.requests,u)})}),(0,Q.jsx)(Ue,{className:`pws-dashboard-row-chevron`,"aria-hidden":`true`})]},e.name))}):r?(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 ds({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 fs({editor:e,providerName:t,saving:n,onSave:r,message:a}){let o=i(),s=(0,Z.useRef)(null);return(0,Z.useEffect)(()=>{e.open&&s.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:o(`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:o(`pws.jsonRestore`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:e.onClose,children:o(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:r,disabled:n||!e.isDirty,children:o(n?`pws.saving`:`pws.jsonSave`)})]})]}),(0,Q.jsx)(`p`,{className:`pwi-json-panel-desc muted`,children:o(`pws.jsonEditorDesc`)}),(0,Q.jsx)(`textarea`,{ref:s,className:`input pwi-json-textarea`,value:e.draft,onChange:t=>e.onDraftChange(t.target.value),spellCheck:!1,rows:20,"aria-label":o(`pws.jsonEditorDesc`)}),a&&(0,Q.jsx)(`div`,{className:a.ok?`pwi-settings-msg pwi-settings-msg--ok`:`pwi-settings-msg pwi-settings-msg--err`,children:a.text})]}):null}function ps(e){if(!(!ms(e)||!Array.isArray(e.clientIntegrations)))return e.clientIntegrations.filter(e=>ms(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 ms(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function hs(e){if(!Array.isArray(e)||e.some(e=>typeof e!=`string`))throw Error(`invalid model list`);return[...new Set(e)]}function gs(e){if(!ms(e))throw Error(`invalid selected models response`);let t=e.selected;if(!ms(t))throw Error(`invalid selected models response`);return Object.fromEntries(Object.entries(t).map(([e,t])=>[e,hs(t)]))}async function _s(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 gs(await r.json())}function vs(e,t,n,r=!1){if(r)return!0;let i=e[t];return!i||i.length===0||i.includes(n)}function ys(e,t,n,r,i){return vs(e,t,n,r)&&!i}async function bs(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 xs(e,t){return e===t}function Ss(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`Invalid model response`);return e}function Cs(e){if(typeof e!=`string`||!e.trim())throw Error(`Invalid model identity`);return e}function ws(e){if(!Array.isArray(e))throw Error(`Invalid model inventory`);let t=new Map,n=[];for(let r of e){let e=Ss(r),i=Cs(e.provider),a=Cs(e.id),o=Cs(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&&Cs(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 Ts(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 Es(e){let t=Ss(e),n=Object.assign(Object.create(null),gs(t));for(let[e,t]of Object.entries(n))Cs(e),t.forEach(Cs);let r=Object.fromEntries(Object.entries(Ss(t.available)).map(([e,t])=>{if(Cs(e),!Array.isArray(t))throw Error(`Invalid available models`);return[e,t.map(Cs)]})),i=Object.hasOwn(t,`liveModelCounts`)?Ss(t.liveModelCounts):{},a=Object.fromEntries(Object.entries(i).map(([e,t])=>{if(Cs(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 Ds(e){let t=Ss(e);return{id:Cs(t.id),provider:Cs(t.provider),modelId:Cs(t.modelId)}}function Os(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=Ds(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 ks(e,t,n){let r=Ds(e);if(r.provider!==t||r.modelId!==n)throw Error(`Unexpected created model`);return r}function As(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 js=[{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 Ms(e){return re(Na(e))}function Ns({providers:e,apiBase:t,defaultProvider:n,selectedName:r,onSelect:a,onRemoveProvider:o,onAddProvider:s,onEditConfig:c,jsonEditor:l,jsonSaving:u=!1,modelsRefreshToken:d=0,onModelsSettled:f,activeAccountNeedsReauth:p,quotaRefreshEpoch:m=0,quotaForceRefresh:h=!1,onQuotaRefreshSettled:g,onRefreshAllQuotas:_,detail:v}){let y=i(),[b,x]=(0,Z.useState)(``),[S,C]=(0,Z.useState)({ready:!0,needsSetup:!0,disabled:!0}),[w,E]=(0,Z.useState)({free:!0,paid:!0}),[D,O]=(0,Z.useState)({cloud:!0,local:!0,selfHosted:!0,login:!0}),[k,A]=(0,Z.useState)(`az`),[j,N]=(0,Z.useState)(!1),[P,F]=(0,Z.useState)(null),[I,L]=(0,Z.useState)(null),[z,B]=(0,Z.useState)(!1),[V,W]=(0,Z.useState)(!1),G=`ocx.providers.quotas.v1:${t}`,te=`ocx.providers.usage.v2:${t}`,[K,ie]=(0,Z.useState)(()=>cr(Na(te))),[Y,X]=(0,Z.useState)(()=>Na(te)?.totals??{}),[ae,oe]=(0,Z.useState)(()=>Na(te)?.models??{}),[se,ce]=(0,Z.useState)(()=>Ms(G)??{}),[le,ue]=(0,Z.useState)(()=>!Na(te)),[de,fe]=(0,Z.useState)(()=>{let e=Ms(G);return!e||Object.keys(e).length===0}),[pe,me]=(0,Z.useState)(0),he=JSON.stringify([t,d,pe]),ge=I?.revision===he&&!z&&!V,ve=(0,Z.useMemo)(()=>Ts(I?.rows??[]),[I]),ye=(0,Z.useRef)(f);(0,Z.useEffect)(()=>{ye.current=f},[f]);let be=(0,Z.useRef)(null),xe=Rt(fr(t),[t],async e=>await dr(await fetch(t+`/api/usage?range=30d`,{signal:e})),{deadlineMs:6e4}),Se=(0,Z.useMemo)(()=>{let t=at(M(e));return ne(t,p??{})},[e,p]),Ce=(0,Z.useCallback)(()=>{B(!0),W(!1),me(e=>e+1)},[]);(0,Z.useEffect)(()=>{let e=!1,n=T(6e4),r=window.setTimeout(()=>{B(!0),(async()=>{let r=!1;try{let[i,a]=await Promise.all([fetch(`${t}/api/selected-models`,{signal:n.signal}).then(fn).then(Es),fetch(`${t}/api/models`,{signal:n.signal}).then(fn).then(ws)]);if(e)return;L({revision:he,selection:i,rows:a}),W(!1),r=!0}catch{if(e)return;W(!0)}finally{n.controller.abort(),n.clear(),e||(B(!1),ye.current?.(r))}})()},0);return()=>{e=!0,window.clearTimeout(r),n.controller.abort(),n.clear()}},[t,he]),(0,Z.useEffect)(()=>{let e=!1,t=window.setTimeout(()=>{let t=xe.data;if(e)return;if(!t){xe.loading&&ue(!Na(te));return}let n=Ao(t.providers??[]);X(n);let r=jo(t.models??[],n);oe(r);let i=cr(t);ie(i),La(te,{totals:n,models:r,...i}),ue(!1)},0);return()=>{e=!0,window.clearTimeout(t)}},[t,te,xe.data,xe.loading]),(0,Z.useEffect)(()=>{let e=!1,n=window.setTimeout(()=>{let n=Ms(G);(!n||Object.keys(n).length===0)&&fe(!0);let i=T(2e4);r=()=>{i.controller.abort(),i.clear()},fetch(`${t}/api/provider-quotas${h?`?refresh=1`:``}`,{signal:i.signal}).then(e=>pn(e)).then(t=>{if(e)return;if(!t){h&&g?.(!1,m);return}let n=J(t.reports);ce(n),La(G,n),h&&g?.(!0,m)}).catch(()=>{e||(ce(e=>{let t=re(e)??{};return La(G,t),t}),h&&g?.(!1,m))}).finally(()=>{i.clear(),e||fe(!1)})},0),r;return()=>{e=!0,window.clearTimeout(n),r?.()}},[t,m,h,G,g]),(0,Z.useEffect)(()=>{if(!j)return;let e=e=>{be.current&&!be.current.contains(e.target)&&N(!1)},t=e=>{e.key===`Escape`&&N(!1)};return document.addEventListener(`mousedown`,e),window.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),window.removeEventListener(`keydown`,t)}},[j]);let we=(0,Z.useMemo)(()=>[...Se.ready,...Se.needsSetup,...Se.disabled],[Se]),Te=(0,Z.useMemo)(()=>we.filter(U).length,[we]),De=we.length-Te,Oe=(0,Z.useMemo)(()=>{let e={cloud:0,local:0,selfHosted:0,login:0};for(let t of we)e[ee(t)]+=1;return e},[we]),ke=(0,Z.useMemo)(()=>{let e=b.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=U(t);return!(n&&!w.free||!n&&!w.paid||!D[ee(t)])});return H(n,k)};return{ready:S.ready?t(Se.ready):[],needsSetup:S.needsSetup?t(Se.needsSetup):[],disabled:S.disabled?t(Se.disabled):[]}},[Se,b,S,w,D,k]),Ae=!S.ready||!S.needsSetup||!S.disabled||!w.free||!w.paid||!D.cloud||!D.local||!D.selfHosted||!D.login||k!==`az`,je=()=>{C({ready:!0,needsSetup:!0,disabled:!0}),E({free:!0,paid:!0}),O({cloud:!0,local:!0,selfHosted:!0,login:!0}),A(`az`)},Me=(0,Z.useMemo)(()=>r?we.find(e=>e.name===r)??null:null,[r,we]),Ne=(0,Z.useMemo)(()=>{let e=new Map;for(let t of we){let n=_e(t.name,y);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},[we,y]);if(we.length===0)return(0,Q.jsx)(Ps,{onAddProvider:s});let Pe=[{key:`ready`,label:y(`pws.status.ready`),count:Se.ready.length},{key:`needsSetup`,label:y(`pws.status.needsSetup`),count:Se.needsSetup.length},{key:`disabled`,label:y(`prov.disabledBadge`),count:Se.disabled.length}],Fe=[{id:`ready`,label:y(`pws.status.ready`),count:ke.ready.length,ariaLabel:y(`pws.groupReady`,{count:ke.ready.length}),items:ke.ready},{id:`needs-setup`,label:y(`pws.status.needsSetup`),count:ke.needsSetup.length,ariaLabel:y(`pws.groupNeedsSetup`,{count:ke.needsSetup.length}),items:ke.needsSetup},{id:`disabled`,label:y(`prov.disabledBadge`),count:ke.disabled.length,ariaLabel:y(`pws.groupDisabled`,{count:ke.disabled.length}),items:ke.disabled}],Ie=Fe.flatMap(e=>e.items.map(e=>e.name)),Le=P&&Ie.includes(P)?P:r&&Ie.includes(r)?r:Ie[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":y(`pws.providerList`),children:[(0,Q.jsxs)(`div`,{className:`pws-search-row`,children:[(0,Q.jsxs)(`div`,{className:`pws-search-wrap`,children:[(0,Q.jsx)(q,{className:`pws-search-icon`,width:14,height:14,"aria-hidden":`true`}),(0,Q.jsx)(`input`,{type:`search`,className:`input pws-search-input`,placeholder:y(`pws.searchPlaceholder`),value:b,onChange:e=>x(e.target.value),"aria-label":y(`pws.searchPlaceholder`)})]}),(0,Q.jsxs)(`div`,{className:`pws-filter-wrap`,ref:be,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`pws-filter-btn${Ae||j?` pws-filter-btn--active`:``}`,onClick:()=>N(e=>!e),"aria-label":y(`pws.filterAria`),"aria-expanded":j,"aria-controls":`pws-provider-filters`,children:[(0,Q.jsx)(Ee,{width:18,height:18,"aria-hidden":`true`}),Ae&&(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":y(`pws.providerFiltersAria`),children:[(0,Q.jsx)(`div`,{className:`pws-filter-title`,children:y(`pws.filters`)}),(0,Q.jsx)(`div`,{className:`pws-filter-head`,children:y(`pws.filterStatus`)}),Pe.map(({key:e,label:t,count:n})=>(0,Q.jsxs)(`label`,{className:`pws-filter-option`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:S[e],onChange:()=>C(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:y(`pws.pricing`)}),(0,Q.jsxs)(`label`,{className:`pws-filter-option`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:w.free,onChange:()=>E(e=>({...e,free:!e.free}))}),(0,Q.jsx)(`span`,{className:`pws-filter-label`,children:y(`modal.badge.free`)}),(0,Q.jsx)(`span`,{className:`pws-filter-count`,children:Te})]}),(0,Q.jsxs)(`label`,{className:`pws-filter-option`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:w.paid,onChange:()=>E(e=>({...e,paid:!e.paid}))}),(0,Q.jsx)(`span`,{className:`pws-filter-label`,children:y(`pws.paid`)}),(0,Q.jsx)(`span`,{className:`pws-filter-count`,children:De})]}),(0,Q.jsx)(`div`,{className:`pws-filter-head`,children:y(`pws.filterType`)}),[{key:`cloud`,label:y(`pws.type.cloud`),count:Oe.cloud},{key:`local`,label:y(`pws.type.local`),count:Oe.local},{key:`selfHosted`,label:y(`pws.type.selfHosted`),count:Oe.selfHosted},{key:`login`,label:y(`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:D[e],onChange:()=>O(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:y(`pws.sort`)}),(0,Q.jsx)(`div`,{className:`pws-sort-grid`,role:`group`,"aria-label":y(`pws.sortProvidersAria`),children:js.map(e=>(0,Q.jsx)(`button`,{type:`button`,className:`pws-sort-btn${k===e.id?` pws-sort-btn--active`:``}`,onClick:()=>A(e.id),"aria-pressed":k===e.id,children:y(e.labelKey)},e.id))}),(0,Q.jsx)(`div`,{className:`pws-filter-footer`,children:(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:je,disabled:!Ae,children:y(`pws.resetAll`)})})]})]})]}),(0,Q.jsxs)(`div`,{className:`pws-rail-list`,role:`listbox`,"aria-label":y(`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(ke).every(e=>e.length===0)&&(0,Q.jsx)(`span`,{className:`muted pws-rail-empty`,role:`status`,children:y(b?`pws.noSearchResults`:Ae?`pws.noMatchFilters`:`pws.noProvidersConfigured`)}),Fe.map(({id:e,label:t,count:i,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:i})]}),c.map(e=>(0,Q.jsxs)(`div`,{className:`pws-rail-row-wrap`,children:[(0,Q.jsx)(R,{item:e,selected:r===e.name,tabbable:Le===e.name,modelCount:I?Object.hasOwn(ve,e.name)?ve[e.name]:0:void 0,isDefault:n===e.name,showConfigId:Ne.has(_e(e.name,y)),onClick:()=>a(e.name),onFocus:()=>F(e.name)}),o&&(0,Q.jsx)(`button`,{type:`button`,className:`pws-rail-row-remove`,tabIndex:-1,"aria-hidden":`true`,onClick:t=>{t.stopPropagation(),o(e.name)},title:y(`pws.removeConfirmTitle`),children:(0,Q.jsx)(ot,{width:14,height:14})})]},e.name))]},e))]})]}),(0,Q.jsxs)(`main`,{className:`pws-main`,"aria-label":y(`pws.workspaceMainAria`),children:[!l?.open&&(0,Q.jsx)(pr,{data:K}),l?.open?(0,Q.jsx)(fs,{editor:l,providerName:y(`nav.providers`),saving:u,onSave:()=>{l.onSave()}}):Me?v?.(Me,{usageTotals:Y[Me.name],modelUsage:ae[Me.name],quotaReport:se[Me.name],availableModels:I?.selection.available[Me.name]??[],hasLiveModels:(I?.selection.liveModelCounts[Me.name]??0)>0,selectedModels:I?.selection.selected[Me.name]??[],modelRows:I?.rows.filter(e=>e.provider===Me.name)??null,modelRevision:he,modelRowsReady:ge,modelsLoading:z||!ge&&!V,modelsLoadFailed:V,onRetryModels:Ce})??(0,Q.jsxs)(`div`,{className:`pws-detail-placeholder`,children:[(0,Q.jsx)(`h3`,{children:_e(Me.name,y)}),(0,Q.jsx)(`p`,{className:`muted`,children:y(`pws.detailComingSoon`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>a(null),children:y(`modal.back`)})]}):(0,Q.jsx)(us,{sections:Se,quotaReports:se,usageTotals:Y,usageLoading:le,quotasLoading:de,onSelectProvider:e=>a(e),onEditConfig:c,..._?{onRefreshAllQuotas:_}:{}})]})]})})}function Ps({onAddProvider:e}){let t=i();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)(Ne,{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)(We,{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)(we,{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)(Qe,{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 Fs(e){if(he(e.name,e))return`codex-accounts`;let t=(e.authMode??``).toLowerCase();if(t===`forward`||t===`local`||B(e))return null;if(t===`oauth`)return`oauth-accounts`;let n=e.hasApiKey===!0,r=t===`key`||n||t===``,i=e.keyOptional===!0||Ge(e);return!r||i&&!n?null:`api-keys`}function Is(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 Ls({quota:e,quotaMode:t,quotaUnavailable:n,quotaPending:r,quotaFailure:a}){let o=i(),s=Y({quota:e});if(t===`unsupported`)return(0,Q.jsx)(`p`,{className:`muted`,"data-quota-state":`unsupported`,children:o(`pws.quotaUnsupported`)});let c=t===`probe`&&n?Dr(a):void 0,l=t===`probe`&&r===!0;return(0,Q.jsxs)(`div`,{"data-quota-state":n?`unavailable`:l?`pending`:s?`ready`:t===`passive`?`unobserved`:`unknown`,children:[n&&(0,Q.jsx)(`p`,{className:`muted pwi-auth-acct-quota-stale`,children:o(c?`pws.quotaFailure.${c}`:`pws.accountQuotaUnavailable`)}),s||l?(0,Q.jsx)(ls,{report:{quota:s,updatedAt:s?.updatedAt,...t===`passive`?{observed:!0}:{}},pending:l&&!s}):!n&&(0,Q.jsx)(`p`,{className:`muted`,children:o(t===`passive`?`pws.quotaUnobserved`:`pws.quotaUnavailable`)}),n&&s&&(0,Q.jsxs)(`p`,{className:`muted`,children:[o(`pws.stats.quotaUpdated`),`: `,Po(s.updatedAt,Fo(o))]})]})}function Rs({report:e,reading:t,onRefreshQuota:n}){let r=i(),a=A(e),o=t!==void 0&&(t.quotaMode!==void 0||t.quota!==void 0||t.quotaUnavailable!==void 0||t.quotaPending!==void 0),s=o?t:{quota:Y(a),...a?.observed===!0?{quotaMode:`passive`}:{}},c=Y({quota:s.quota}),[l,u]=(0,Z.useState)(!1),[d,f]=(0,Z.useState)(null),p=async()=>{if(!(!n||l)){u(!0),f(null);try{f(await n())}catch{f(!1)}finally{u(!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&&s.quotaMode!==`unsupported`&&(0,Q.jsxs)(`div`,{className:`pws-quota-refresh`,children:[d!==null&&(0,Q.jsx)(`span`,{role:`status`,className:d?`pws-status-ok`:`pws-status-warn`,children:r(d?`pws.quotaCheckCompleted`:`codexAuth.quotaRefreshFailed`)}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:l,onClick:()=>{p()},children:[(0,Q.jsx)(Fe,{width:14,height:14,"aria-hidden":`true`}),` `,r(l?`codexAuth.refreshingQuota`:`codexAuth.refreshQuota`)]})]})]}),(0,Q.jsx)(Ls,{...s}),c&&!s.quotaUnavailable&&s.quotaMode!==`unsupported`&&(0,Q.jsxs)(`dl`,{className:`pws-kv pws-usage-meta`,children:[!o&&a?.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:Pe(a.source)})]}),(0,Q.jsxs)(`div`,{className:`pws-kv-row`,children:[(0,Q.jsx)(`dt`,{children:r(`pws.stats.quotaUpdated`)}),(0,Q.jsx)(`dd`,{children:Po(c.updatedAt,Fo(r))})]})]})]})}function zs(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 Bs(e){return{adapter:e.adapter,baseUrl:e.baseUrl,authMode:e.auth,freeTier:!!e.freeTier,keyOptional:!!e.keyOptional}}function Vs(e){return ge(e.id,Bs(e))}function Hs(e){return B(Bs(e))}function Us(e){let t={accounts:[],free:[],local:[],paid:[]};for(let n of e){let e=Vs(n);t[e===`accounts`?`accounts`:Hs(n)?`local`:e].push(n)}return t}function Ws(e){return!!e?.trim()}var Gs=new Set([`local`,`localhost`,`ollama`,`vllm`,`lmstudio`,`lm studio`,`self-hosted`,`selfhosted`]);function Ks(e,t){let n=t.trim().toLowerCase();return!n||e.label.toLowerCase().includes(n)||e.id.toLowerCase().includes(n)||e.adapter.toLowerCase()===n?!0:Gs.has(n)&&Hs(e)}function qs(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 Js(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 Ys(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 Xs={main:0,standard:1};function Zs(e){let t=e.filter(e=>e.sponsor);return t.length===0?e:(t.sort((e,t)=>Xs[e.sponsor]-Xs[t.sponsor]||e.label.localeCompare(t.label,void 0,{sensitivity:`base`})||e.id.localeCompare(t.id)),[...t,...e.filter(e=>!e.sponsor)])}var Qs={name:`OrcaRouter`,title:`pws.sponsor.orcaTitle`,description:`pws.sponsor.orcaDescription`},$s={orcarouter:Qs,"orcarouter-oauth":Qs,packycode:{name:`PackyCode`,title:`pws.sponsor.packyTitle`,description:`pws.sponsor.packyDescription`},tokenlab:{name:`TokenLab`,title:`pws.sponsor.tokenlabTitle`,description:`pws.sponsor.tokenlabDescription`}};function ec(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 tc({item:e,preset:t}){let n=i();if(!t?.sponsor||!zs(e,[t]))return null;let r=Object.hasOwn($s,t.id)?$s[t.id]:void 0;if(!r)return null;let a=ec(t.sponsorUrl),o=ec(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)})]}),(a||o)&&(0,Q.jsxs)(`div`,{className:`pws-sponsor-actions`,children:[a&&(0,Q.jsxs)(`a`,{className:`btn btn-primary`,href:a,target:`_blank`,rel:`noopener noreferrer`,children:[n(`pws.sponsor.visit`,{provider:r.name}),(0,Q.jsx)(Re,{width:14,height:14,"aria-hidden":`true`})]}),o&&o!==a&&(0,Q.jsxs)(`a`,{className:`pws-sponsor-console`,href:o,target:`_blank`,rel:`noopener noreferrer`,children:[n(`pws.sponsor.console`),(0,Q.jsx)(Re,{width:13,height:13,"aria-hidden":`true`})]})]})]})}function nc({item:e,preset:t,usageTotals:n,quotaReport:r,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=i(),{locale:y}=D(),b=ce(e),x=!!e.activeNeedsReauth,S=v(b===`ready`?`pws.status.connected`:b===`needs-setup`?x?`pws.status.needsAttention`:`pws.status.needsSetup`:`prov.disabledBadge`),C=n?.requests,w=n?.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,O]=(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},O({key:T,testing:!0,result:null});try{let n=await fn(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||O({key:T,testing:!1,result:n})}catch(e){t.signal.aborted||O({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)(tc,{item:e,preset:t}),(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)(Se,{style:{width:13,height:13},"aria-hidden":`true`}):(0,Q.jsx)(De,{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?`${I(e,v)} · ${s}`:I(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)(De,{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`):I(e,v)})]})]}),(0,Q.jsx)(rc,{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:Ro(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:zo(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)(Rs,{report:r,reading:a,onRefreshQuota:o},`${e.name}:${u??``}`)]})]})]})}function rc({item:e,onUpdateProvider:t}){let n=i(),[r,a]=(0,Z.useState)(!1),[o,s]=(0,Z.useState)(``),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(``),f=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{r&&f.current?.focus()},[r]);let p=(0,Z.useCallback)(async()=>{if(c||!t)return;let r=o.trim();if(r===(e.note??``)){a(!1),d(``);return}l(!0);try{let i=await t(e.name,{note:r||void 0});if(!i.ok){d(i.error||n(`prov.saveFailed`));return}d(``),a(!1)}finally{l(!1)}},[o,e.name,e.note,t,c,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:f,className:`pws-notes-textarea`,value:o,onChange:e=>s(e.target.value),onBlur:()=>void p(),onKeyDown:t=>{t.key===`Escape`&&(s(e.note??``),d(``),a(!1))},placeholder:n(`pws.notePlaceholder`),rows:3,disabled:c}),u?(0,Q.jsx)(`p`,{className:`pws-inline-error`,role:`alert`,children:u}):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&&(s(e.note??``),d(``),a(!0))},disabled:!t,children:e.note||(0,Q.jsx)(`span`,{className:`muted`,children:n(`pws.notePlaceholder`)})})]})}function ic(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 ac(e){return e.some(e=>e.pricingStatus!==void 0)}function oc(e,t){return t?e.filter(e=>e.pricingStatus===`free`):[...e]}function sc(e,t){return e&&ac(t)}function cc(e){return[...e].some(e=>{let t=e.codePointAt(0);return t<=31||t>=127&&t<=159||t===8232||t===8233})}function lc(e){let t=e.trim();return t?t.length>128?`models.displayNameTooLong`:t.includes(`/`)?`models.displayNameNoSlash`:cc(t)?`models.displayNameNoControl`:null:`models.displayNameRequired`}var uc=[`none`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`],dc=Array.from({length:18},(e,t)=>1e5+t*5e4),fc=new Set(dc),pc=[272e3,372e3,922e3],mc=new Set(pc),hc=`custom`,gc=[4,8,16,32,64,128,256,500,1e3],_c=new Set(gc),vc=`ocx-models-collapsed:v2`;function yc(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 bc(e){let t=new Set;for(let n of e)n.disabled&&t.add(n.namespaced);return t}function xc(e,t,n,r){let i=[];for(let a of e){let e=t.has(a.id)||t.has(a.namespaced);ys(n,a.provider,a.id,a.native===!0,e)&&i.push({value:a.namespaced,label:r?ve(a.namespaced,r):a.namespaced})}return i}function Sc(e=localStorage){try{let t=e.getItem(vc);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 Cc(e,t=localStorage){try{t.setItem(vc,JSON.stringify([...e]))}catch{}}function wc(e){return e.includes(`/`)?e.replaceAll(`/`,`-`):e}function Tc(e,t){let n=wc(e);for(let r of t)if(r!==e&&wc(r)===n)return!0;return!1}function Ec({row:e,disambiguate:t,copied:n,isDefault:r,selected:a,action:o,disabled:s,onCopy:c,onRemove:l}){let u=i(),d=u(o===`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:c,title:e.namespaced,"aria-label":u(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:u(`prov.defaultBadge`)}),a&&(0,Q.jsx)(`span`,{className:`badge badge-accent pws-model-flag`,children:u(`pws.selected`)}),o&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm btn-icon-only`,onClick:e=>l(e.currentTarget),disabled:s,"aria-label":`${d}: ${e.namespaced}`,title:`${d}: ${e.namespaced}`,children:o===`delete`?(0,Q.jsx)(ot,{style:{width:13,height:13},"aria-hidden":`true`}):(0,Q.jsx)(Xe,{style:{width:13,height:13},"aria-hidden":`true`})})]})}var Dc=300;function Oc(e){return(0,Q.jsx)(kc,{...e},JSON.stringify([e.apiBase,e.item.name]))}function kc({item:e,apiBase:t,availableModels:n,selectedModels:r,modelRows:a,modelRevision:o,modelRowsReady:s,modelsLoading:c=!1,modelsLoadFailed:l=!1,needsReauth:u=!1,onRetryModels:d,onOpenAccounts:f,onOpenModels:p}){let m=i(),[h,g]=(0,Z.useState)(``),[_,v]=(0,Z.useState)(!1),[y,b]=(0,Z.useState)(``),[x,S]=(0,Z.useState)(0),C=JSON.stringify([t,e.name,o,x]),[w,E]=(0,Z.useState)(null),[D,O]=(0,Z.useState)(null),[k,A]=(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)(o),z=(0,Z.useRef)(null),B=(0,Z.useRef)(null),V=(0,Z.useRef)(null),H=w?.key===C&&D!==C,U=a!==null&&s&&!c&&!l&&H,ee=U&&(!j||o!==j.revision),W=k||!!j&&!ee,G=(a??[]).filter(t=>t.provider===e.name),te=G.some(e=>e.initialSelectionPending),ne=!U||W||te,K=w?.rows.filter(t=>t.provider===e.name)??[],re=new Set(r),q=[...n,...e.models??[],...K.map(e=>e.modelId),...e.defaultModel?[e.defaultModel]:[]],J=y.trim(),ie=!!J&&(q.includes(J)||Tc(J,q)),Y=G.filter(e=>!e.disabled),X=ac(Y),ae=sc(_,Y),oe=oc(Y,ae),se=h.trim().toLowerCase(),ce=oe.filter(e=>[e.id,e.namespaced].some(e=>e.toLowerCase().includes(se))),le=new Map;for(let e of Y)le.set(e.id,(le.get(e.id)??0)+1);(0,Z.useEffect)(()=>{R.current=o},[o]),(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=T(2e4);return fetch(`${t}/api/custom-models`,{signal:n.signal}).then(fn).then(Os).then(t=>{e||(E({key:C,rows:t}),O(null))}).catch(()=>{e||O(C)}).finally(()=>n.clear()),()=>{e=!0,n.controller.abort(),n.clear()}},[t,C]),(0,Z.useEffect)(()=>{!k&&ee&&(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)},[k,ee,a]);let ue=()=>{S(e=>e+1),d?.()},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&&K.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&&K.some(t=>t.modelId===e.id)?null:`hide`,me=e=>{if(!L.current){d?.();return}M({...e,revision:R.current}),A(!1),ue()},he=async()=>{if(ne||I.current||!J||ie)return;I.current=!0,A(!0),M(null);let n=T(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:J})});if(i.status===201){let t=await fn(i),n=ks(t,e.name,J);if(w?.rows.some(e=>e.id===n.id))throw Error(`Reused custom identity`);r={outcome:`saved`,created:n,refreshPending:As(t)},L.current&&b(``)}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(ne||I.current||!r)return;if(I.current=!0,!await Qi({message:m(r===`delete`?`models.customDeleteConfirm`:`models.hideConfirm`,{name:e.namespaced}),confirmLabel:m(r===`delete`?`common.delete`:`common.ok`),tone:`danger`})){I.current=!1;return}A(!0),M(null),V.current={button:n,retained:document.activeElement===n};let i=T(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 bs(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 fn(n);e&&typeof e==`object`&&!Array.isArray(e)&&`ok`in e&&e.ok===!0&&(a={outcome:r===`delete`?`deleted`:`hidden`,refreshPending:As(e)})}else n.status>=400&&n.status<500&&(a={outcome:`rejected`,refreshPending:!1})}catch{}finally{i.clear(),me(a)}},_e=j?.created&&ee&&G.some(e=>e.customId===j.created?.id&&e.disabled),ve=j&&(j.refreshPending||l||D===C),ye=j?j.outcome===`unconfirmed`?m(`pws.modelMutationUnconfirmed`):j.outcome===`rejected`?m(`models.customSaveFailed`):j.outcome===`saved`?m(ve?`pws.modelSavedRefreshPending`:_e?`pws.modelSavedHidden`:`pws.modelSaved`):m(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:m(`pws.tab.models`)}),a!==null&&(0,Q.jsx)(`span`,{className:`muted`,children:m(`pws.modelsAvailable`,{count:Y.length})})]}),(0,Q.jsx)(`div`,{className:`row`,children:(0,Q.jsx)(`button`,{ref:B,type:`button`,className:`btn btn-ghost btn-sm`,onClick:p,children:m(`pws.manageModelVisibility`)})}),u&&(0,Q.jsxs)(`div`,{className:`pws-inline-error`,role:`status`,children:[(0,Q.jsx)(`span`,{children:m(`pws.modelsNeedsReauth`)}),f&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:f,children:m(`pws.tab.accounts`)})]}),s&&n.length===0&&Y.length>0&&(e.models?.length??0)>0&&!u&&(0,Q.jsx)(`p`,{className:`muted text-label`,children:m(`pws.modelsConfiguredFallback`)}),te&&(0,Q.jsx)(`p`,{role:`status`,className:`muted`,children:m(`pws.modelSelectionPending`)}),(0,Q.jsx)(`label`,{className:`text-label pws-custom-model-label`,htmlFor:`pws-custom-model-${e.name}`,children:m(`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:y,onChange:e=>b(e.target.value),onKeyDown:e=>{e.key===`Enter`&&he()},placeholder:m(`models.customFieldModelIdPlaceholder`),"aria-label":m(`models.customAdd`),disabled:k}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:()=>{he()},disabled:ne||!J||ie,children:m(k?`models.customSaving`:`models.customAddBtn`)})]}),ie&&(0,Q.jsx)(`p`,{className:`muted text-label`,role:`status`,children:m(`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:m(`pws.modelSavedHidden`)}),j?.refreshPending&&(0,Q.jsx)(`p`,{className:`muted text-label`,role:`status`,children:m(`codexAuth.catalogRefreshPending`)}),l||D===C?(0,Q.jsxs)(`div`,{className:`pws-inline-error`,role:`alert`,children:[(0,Q.jsx)(`span`,{children:m(l?`pws.modelsLoadFailed`:`pws.modelOwnershipFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:ue,disabled:k,children:m(`common.retry`)})]}):(!U||W)&&(0,Q.jsx)(`p`,{className:`muted`,role:`status`,children:m(!s||c?`pws.modelsLoading`:`pws.modelOwnershipLoading`)}),j&&(j.outcome===`unconfirmed`||j.refreshPending)&&!l&&D!==C&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:ue,disabled:k,children:m(`common.retry`)}),X&&(0,Q.jsx)(`div`,{className:`row`,children:(0,Q.jsx)(nn,{on:_,onClick:()=>v(!_),label:m(`models.freeOnly`),showLabel:!0})}),(0,Q.jsx)(`input`,{ref:z,type:`search`,className:`input pws-model-search`,placeholder:m(`pws.modelSearchPlaceholder`),value:h,onChange:e=>g(e.target.value),"aria-label":m(`pws.modelSearchPlaceholder`)}),a!==null&&Y.length===0?(0,Q.jsx)(`p`,{className:`muted`,children:m(`pws.noModels`)}):ce.length===0&&a!==null?(0,Q.jsx)(`p`,{className:`muted`,role:`status`,children:m(ae&&oe.length===0?`models.noFreeMatch`:`pws.noModelMatch`)}):(0,Q.jsx)(`ul`,{className:`pws-model-list`,children:ce.slice(0,Dc).map(t=>(0,Q.jsx)(Ec,{row:t,disambiguate:(le.get(t.id)??0)>1,copied:N===t.namespaced,isDefault:t.id===e.defaultModel,selected:t.native!==!0&&re.has(t.id),action:pe(t),disabled:ne,onCopy:()=>{de(t)},onRemove:e=>{ge(t,e)}},t.namespaced))}),ce.length>Dc&&(0,Q.jsx)(`p`,{className:`muted text-label`,style:{marginTop:10},children:m(`pws.modelsTruncated`,{shown:String(Dc),total:String(ce.length)})})]})}function Ac({item:e,usageTotals:t,quotaReport:n,currentQuotaReading:r,quotaIdentity:a,modelUsage:o,onRefreshQuota:s}){let c=i(),{locale:l}=D(),u=t?.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:Bo(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:Ro(t?.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:zo(t?.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:Bo(e.estimatedCostUsd,l)}),(0,Q.jsx)(`td`,{className:`num mono`,children:zo(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:[` `,zo(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:[` `,zo(e.outputTokens,l)]})]})]})})})]},t)})})]})})]}),(0,Q.jsx)(Rs,{report:n,reading:r,onRefreshQuota:s},`${e.name}:${a??``}`)]})}function jc(e){return e===`anthropic`||e===`anthropic2`}function Mc(e,t){return e===`anthropic`?!0:e!==`anthropic2`||!t?!1:Object.hasOwn(t,`anthropicOAuthInstance`)&&t.anthropicOAuthInstance===`anthropic2`&&t.adapter===`anthropic`&&t.authMode===`oauth`}function Nc(e){if(!e)return null;let t=e.trim();return t?t.length<=4?`account-…`:`account-…${t.slice(-4)}`:null}function Pc(e){return Nc(e)??`account-…`}function Fc(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 Ic({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)(He,{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)(Ye,{width:10,height:10,"aria-hidden":`true`})})]})}function Lc({accountLabel:e,globalThreshold:t,override:n,disabled:r=!1,inputId:a,hintText:o,onChange:s}){let c=i(),l=(0,Z.useRef)(!1),u=(0,Z.useRef)(!1),[d,f]=(0,Z.useState)(!1),p=n!==null,[m,h]=(0,Z.useState)({override:n,draft:String(n??t)});m.override!==n&&h({override:n,draft:String(n??t)});let{draft:g}=m,_=e=>h(t=>({...t,draft:e})),v=()=>h(e=>({...e,draft:String(e.override??t)})),y=r||d,b=o??c(`accountPool.autoSwitchHint`),x=(0,Z.useId)(),S=async e=>{if(!(r||u.current)){u.current=!0,f(!0);try{await s(e)}finally{v(),u.current=!1,f(!1)}}},C=async()=>{if(!p||r||u.current)return;let e=g.trim(),t=e===``?NaN:Number(e);if(!Number.isInteger(t)||t<0||t>100){v();return}t!==n&&await S(t)},w=e=>{if(r||u.current)return;let t=Fc(g,e,0,100);_(t);let i=Number(t);i!==n&&S(i)};return(0,Q.jsxs)(`div`,{className:`codex-account-auto-switch`,title:b,"aria-busy":d,"aria-disabled":y,onBlur:e=>{if(!e.currentTarget.contains(e.relatedTarget)){if(l.current){l.current=!1;return}C()}},children:[(0,Q.jsx)(`label`,{className:`codex-account-auto-switch-label`,htmlFor:p?a:void 0,children:c(`accountPool.autoSwitchThreshold`)}),p&&(0,Q.jsxs)(`span`,{className:`codex-account-auto-switch-input-wrap`,children:[(0,Q.jsx)(`input`,{id:a,className:`input mono codex-auto-switch-input codex-account-auto-switch-input`,type:`number`,min:0,max:100,step:1,inputMode:`numeric`,value:g,readOnly:y,"aria-disabled":y,"aria-label":c(`accountPool.autoSwitchThresholdAria`,{email:e}),"aria-describedby":x,onChange:e=>{y||_(e.target.value)},onKeyDown:e=>{e.nativeEvent.isComposing||y||(e.key===`Enter`?(e.preventDefault(),C()):e.key===`Escape`&&(e.preventDefault(),v()))}}),(0,Q.jsx)(`span`,{className:`codex-account-auto-switch-unit`,"aria-hidden":`true`,children:`%`}),(0,Q.jsx)(Ic,{disabled:r&&!d,incrementLabel:c(`codexAuth.autoSwitchThresholdInc`),decrementLabel:c(`codexAuth.autoSwitchThresholdDec`),onIncrement:()=>w(1),onDecrement:()=>w(-1)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`toggle codex-account-auto-switch-toggle ${p?`on`:``}`,disabled:r&&!d,"aria-disabled":y,"aria-pressed":p,"aria-label":c(`accountPool.autoSwitchOverrideAria`,{email:e}),"aria-describedby":x,onPointerDownCapture:()=>{l.current=!0},onPointerUp:()=>{l.current=!1},onPointerCancel:()=>{l.current=!1},onClick:()=>{l.current=!1,S(p?null:t)},children:(0,Q.jsx)(`span`,{className:`toggle-knob`})}),(0,Q.jsx)(`span`,{id:x,className:`sr-only`,children:b})]})}function Rc(e){return e===`healthy`?`ok`:e===`cooldown`?`muted`:e===`reauth_required`||e===`warning`?`warn`:`muted`}function zc(e){let t=Rc(e);return t===`ok`?`badge badge-green`:t===`warn`?`badge badge-amber`:`badge badge-muted`}function Bc(e){return e===`reauth_required`}function Vc(e){return!!e?.needsReauth||Bc(e?.health?.status)}function Hc(e){return e===`cooldown`}function Uc(e){return e===`warning`||e===`reauth_required`}function Wc(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 Gc(e,t){let n=Wc(t);return n?e(n):null}function Kc(e,t,n,r){if(!r||r.status===`healthy`)return null;let i=n===`__main__`?e(`codexAuth.mainAccount`):Pc(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 qc(e){let t=navigator.clipboard?.writeText?.bind(navigator.clipboard);if(t)try{return await t(e),!0}catch{}return Jc(e)}function Jc(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 Yc(e,t){return e(t?t===`copied`?`pws.doctorCopied`:`pws.doctorCopyUnavailable`:`pws.copyDoctor`)}function Xc(e){return[...e].some(e=>{let t=e.codePointAt(0);return t<=31||t===127})}function Zc(e,t){let n=e.trim();return n.length>80||Xc(n)?t(`prov.aliasInvalid`):null}var Qc=e=>({step:e?`oauth-waiting`:`pick`,id:``,error:``,authUrl:``,deviceCode:``,instructions:``,manualCode:``,manualCodeState:`idle`,statusNotice:``,statusTone:`ok`,flowId:null});function $c(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 el({id:e,error:t,onIdChange:n,onStartOAuth:r,onStartDeviceOAuth:a,onClose:o}){let s=i();return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`h3`,{style:{marginBottom:4},children:s(`codexAuth.addTitle`)}),(0,Q.jsx)(`p`,{className:`modal-desc`,children:s(`codexAuth.addPickDesc`)}),(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`codex-account-id-input`,children:s(`codexAuth.addIdLabel`)}),(0,Q.jsx)(`input`,{id:`codex-account-id-input`,className:`input`,placeholder:s(`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)(We,{width:20}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{className:`title`,children:s(`codexAuth.oauthLogin`)}),(0,Q.jsx)(`div`,{className:`sub`,children:s(`codexAuth.oauthDesc`)})]})]})}),(0,Q.jsx)(`button`,{type:`button`,className:`list-row`,onClick:a,style:{marginBottom:8},children:(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:10},children:[(0,Q.jsx)(it,{width:20}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{className:`title`,children:s(`codexAuth.deviceLogin`)}),(0,Q.jsx)(`div`,{className:`sub`,children:s(`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:o,style:{width:`100%`},children:s(`codexAuth.cancel`)})]})}var tl=2500;function nl(){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;qc(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)},tl))})},[i])}}function rl(e){try{let t=new URL(e).protocol;return t===`https:`||t===`http:`}catch{return!1}}function il({url:e,openLabel:t}){let n=i(),{outcomeFor:r,copy:a}=nl();if(!e)return null;let o=r(e),s=n(o===`copied`?`prov.linkCopied`:o===`unavailable`?`prov.linkCopyUnavailable`:`prov.copyLink`),c=rl(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:()=>a(e,e),children:[(0,Q.jsx)(it,{style:{width:13,height:13},"aria-hidden":`true`}),(0,Q.jsx)(`span`,{"aria-live":`polite`,children:s})]}),c&&(0,Q.jsxs)(`a`,{href:e,target:`_blank`,rel:`noreferrer`,className:`login-url-block-open`,children:[(0,Q.jsx)(Re,{style:{width:13,height:13},"aria-hidden":`true`}),` `,t??n(`prov.didntOpen`)]})]})]})}function al({hint:e,paste:t}){let n=i(),r=nl(),a=e.deviceCode??``,o=e.url??``;if(!a&&!o&&!e.instructions&&!t)return null;let s=r.outcomeFor(a),c=n(s===`copied`?`prov.codeCopied`:s===`unavailable`?`prov.linkCopyUnavailable`:`prov.copyCode`),l=a||e.browserLaunch===`skipped`?n(`prov.openSignInPage`):void 0,u=a&&rl(o)?()=>{r.copy(a,a),window.open(o,`_blank`,`noopener,noreferrer`)}:null;return(0,Q.jsxs)(`div`,{className:`login-hint`,children:[e.browserLaunch===`failed`&&o&&(0,Q.jsx)(`div`,{className:`notice-warn login-hint-launch-failed`,role:`status`,children:n(`prov.browserLaunchFailed`)}),a&&(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:a}),(0,Q.jsx)(`button`,{type:`button`,className:u?`btn btn-ghost btn-sm`:`btn btn-primary btn-sm`,onClick:()=>r.copy(a,a),children:(0,Q.jsx)(`span`,{"aria-live":`polite`,children:c})}),u&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm login-hint-copy-open`,onClick:u,children:n(`prov.copyCodeAndOpen`)})]}),(0,Q.jsx)(il,{url:o,openLabel:l}),e.instructions&&(0,Q.jsx)(`div`,{className:`muted text-label`,children:e.instructions}),t&&!a&&(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 ol({reauthAccountId:e,authUrl:t,deviceCode:n,instructions:r,browserLaunch:a,manualCode:o,manualCodeBusy:s,manualCodeWaiting:c,statusNotice:l,statusTone:u,flowId:d,error:f,onSwitchToDevice:p,onManualCodeChange:m,onSubmitManualCode:h,onClose:g}){let _=i();return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`h3`,{style:{marginBottom:4},children:_(e?`codexAuth.reauthenticate`:`codexAuth.oauthLogin`)}),(0,Q.jsx)(`p`,{className:`modal-desc`,children:_(`codexAuth.oauthWaiting`)}),(0,Q.jsx)(al,{hint:{url:t,deviceCode:n,instructions:r,browserLaunch:a},paste:{value:o,busy:s,disabled:s||c||!o.trim()||!d,submittingLabel:_(`codexAuth.oauthSubmittingCode`),message:``,ok:!0,onChange:m,onSubmit:h}}),l&&(0,Q.jsx)(`div`,{className:u===`warn`?`notice-warn`:`notice notice-ok`,role:`status`,"aria-live":`polite`,style:{marginTop:12},children:l}),f&&(0,Q.jsx)(`div`,{className:`notice notice-err`,style:{marginTop:12},children:f}),p&&!n&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:p,style:{width:`100%`,marginTop:8},children:_(`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:g,style:{width:`100%`},children:_(`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 ll(){let e=cl();return e===void 0?{}:{openBrowser:e}}function ul(e){try{window.localStorage.setItem(sl,e?`1`:`0`)}catch{}}function dl(e){return e===`started`||e===`failed`||e===`skipped`?e:void 0}function fl(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 pl=3e5,ml=96e4;function hl({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({...ll(),...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 fn(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:dl(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=ra(async()=>{if(s.current||S.signal.aborted)return;s.current=!0;let e=AbortSignal.any([S.signal,AbortSignal.timeout(1e4)]);try{let n=await pn(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(fl(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?ml:pl)}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 gl({apiBase:e,onClose:t,onAdded:n,reauthAccountId:r}){let a=i(),[o,s]=(0,Z.useReducer)($c,r,Qc),c=(0,Z.useRef)(null),l=(0,Z.useRef)(null),{manualCodeBusy:u,manualCodeWaiting:d,bindCallbacks:f,closeModal:p,startOAuth:m,submitManualCode:h}=hl({apiBase:e,reauthAccountId:r,ui:o,dispatch:s,t:a});(0,Z.useEffect)(()=>{f(n,t)},[f,n,t]),(0,Z.useEffect)(()=>{c.current=document.activeElement;let e=l.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(),()=>{c.current?.focus()}},[]);let g=(0,Z.useCallback)(e=>{e.preventDefault(),p()},[p]),_=a(r?`codexAuth.reauthenticate`:`codexAuth.addTitle`);return(0,Q.jsx)(`dialog`,{ref:l,"aria-label":_,className:`modal-overlay`,onCancel:g,children:(0,Q.jsxs)(`div`,{className:`modal-card`,style:{maxWidth:440},children:[o.step===`pick`&&(0,Q.jsx)(el,{id:o.id,error:o.error,onIdChange:e=>s({type:`set-id`,id:e}),onStartOAuth:()=>{m(o.id)},onStartDeviceOAuth:()=>{m(o.id,{device:!0})},onClose:p}),o.step===`oauth-waiting`&&(0,Q.jsx)(ol,{reauthAccountId:r,authUrl:o.authUrl,deviceCode:o.deviceCode,instructions:o.instructions,browserLaunch:o.browserLaunch,manualCode:o.manualCode,manualCodeBusy:u,manualCodeWaiting:d,statusNotice:o.statusNotice,statusTone:o.statusTone,flowId:o.flowId,error:o.error,onSwitchToDevice:()=>{m(o.id,{device:!0})},onManualCodeChange:e=>s({type:`set-manual-code`,manualCode:e}),onSubmitManualCode:()=>{h()},onClose:p})]})})}var _l=[2,1,0,-1,-2],vl=new Map([[2,`accountPool.priorityFirst`],[1,`accountPool.priorityEarlier`],[0,`accountPool.priorityNormal`],[-1,`accountPool.priorityLater`],[-2,`accountPool.priorityLast`]]);function yl(e){return typeof e==`number`&&Number.isInteger(e)&&e>=-100&&e<=100?e:0}function bl(e){let t=yl(e);return t>0?`+${t}`:String(t)}function xl(e){return vl.has(e)}function Sl(e){return vl.get(e)??null}function Cl(e,t){let n=yl(t);return e(`accountPool.priorityOption`,{name:e(Sl(n)??`accountPool.priorityCustom`),value:bl(n)})}var wl=[`quota`,`round-robin`,`fill-first`,`reset-first`],Tl=[`five-hour`,`weekly`,`max-utilization`],El=`quota`,Dl=`five-hour`,Ol=new Set(wl),kl=new Set(Tl);function Al(e){return typeof e==`string`&&Ol.has(e)?e:El}function jl(e){return typeof e==`string`&&kl.has(e)?e:Dl}function Ml(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=100?e:1}function Nl(e){let t=e.trim();if(!/^\d+$/.test(t))return null;let n=Number(t);return n>=1&&n<=100?n:null}var Pl=`openai`;function Fl(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:Al(r.strategy??n?.strategy),stickyLimit:Ml(r.stickyLimit??n?.stickyLimit),autoSwitchThreshold:typeof i==`number`?i:null,quotaWindow:(r.quotaWindow??n?.quotaWindow)===void 0||r.quotaWindow===null?null:jl(r.quotaWindow??n?.quotaWindow),nativeMessages:jc(t)?Object.hasOwn(r,`nativeMessages`)?r.nativeMessages===!0:n?.nativeMessages??!0:null,...r.warning===`config_bookkeeping_failed`?{warning:r.warning}:{}}}function Il(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},...jc(e)&&t.nativeMessages!==void 0?{nativeMessages:t.nativeMessages}:{}}}async function Ll(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?Fl(await i.json(),t):null}catch{return null}}var Rl=class extends Error{code=`config_save_state_unknown`;constructor(){super(`config_save_state_unknown`),this.name=`PoolSettingsSaveStateUnknownError`}};async function zl(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(Il(t,n))});if(!a.ok){if(jc(t)&&a.status===409&&(await a.json().catch(()=>null))?.code===`config_save_state_unknown`)throw new Rl;return null}return Fl(await a.json().catch(()=>({})),t,n)}catch(e){if(e instanceof Rl)throw e;return null}}async function Bl(e,t,n=(e,t)=>fetch(e,t)){if(t.strategy===void 0&&t.stickyLimit===void 0)return{ok:!1};let r=await zl(e,Pl,{strategy:t.strategy,stickyLimit:t.stickyLimit},n);return r?{ok:!0,strategy:r.strategy,stickyLimit:r.stickyLimit}:{ok:!1}}var Vl=1e4;function Hl(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0&&e<=100?e:80}function Ul(e){let t=e.trim();if(!/^\d+$/.test(t))return null;let n=Number(t);return n>=1&&n<=100?n:null}function Wl(e,t){return e>0?0:Number.isInteger(t)&&t>=1&&t<=100?t:80}function Gl(e,t,n,r){return n===r?e||t?`defer`:`apply`:`ignore`}function Kl(e){return e&&typeof e==`object`&&e&&`autoSwitchThreshold`in e?e.autoSwitchThreshold:e}function ql(e,t,n){if(e<=0){let t=Wl(e,n);return{threshold:t,lastEnabled:t}}return{threshold:0,lastEnabled:Ul(t)??Wl(0,n)}}async function Jl(e,t,n=(e,t)=>fetch(e,t),r=Vl){return!Number.isInteger(t)||t<0||t>100?!1:await zl(e,Pl,{threshold:t},(e,t)=>n(e,t),{signal:AbortSignal.timeout(r)})!==null}var Yl={short:90,long:98};function Xl(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}:{...Yl}}var Zl=3e4,Ql=new Map;function $l(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0&&e<=100?e:null}function eu(e,t=!0){let n=Ql.get(e),[r,i]=(0,Z.useState)(()=>n?.accounts??[]),a=Rt(fr(e,`codex`),[e],async t=>dr(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,E]=(0,Z.useState)(null),[D,O]=(0,Z.useState)(0),[k,A]=(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),ee=(0,Z.useRef)(null),W=(0,Z.useRef)(!1),G=(0,Z.useCallback)(e=>(L.current.add(e),()=>{L.current.delete(e)}),[]),te=(0,Z.useCallback)(()=>Kl(R.current?.value),[]),ne=(0,Z.useCallback)(()=>R.current?.value,[]),K=(0,Z.useCallback)(async(t=!1,n={})=>{let r=++F.current,a=n.validatePending===!0,o=Ql.get(e)?.accounts.length??0,c=T(a?3e4+12e4*Math.max(1,o):2e4),u=a?{}:null;u&&(N.current.add(u),M(N.current.size)),O(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=$e(e.quota);return{...e,...t?{logLabel:t}:{},priority:yl(e.priority),autoSwitchThresholdOverride:$l(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},E(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=Ql.get(e);return Ql.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)),O(e=>Math.max(0,e-1)),A(!0)}},[e]);(0,Z.useEffect)(()=>{t&&P.current!==e&&(P.current=e,Promise.resolve().then(()=>{K()}))},[e,t,K]);let re=r.some(e=>e.hasCredential&&!e.quota);(0,Z.useEffect)(()=>{if(!t||!re||j>0)return;let e=[350,900,2e3].map(e=>window.setTimeout(()=>{N.current.size===0&&K(!1)},e));return()=>{for(let t of e)window.clearTimeout(t)}},[t,re,j,K]),(0,Z.useEffect)(()=>{if(!(!t||j>0))return ra(()=>{N.current.size===0&&K()},Zl)},[t,K,j]);let q=(0,Z.useCallback)(()=>{let e={};return N.current.add(e),M(N.current.size),e},[]),J=(0,Z.useCallback)(e=>{N.current.delete(e)&&M(N.current.size)},[]),ie=(0,Z.useCallback)(async t=>{if(z.current||U.current)return{ok:!1,reason:`busy`};z.current=t??`__main__`,p(t??`__main__`);try{let n=await fetch(`${e}/api/codex-auth/active`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({accountId:t})});if(!n.ok)throw Error(`account switch failed`);let r=(await n.json().catch(()=>({}))).activeCodexAccountId??t;return I.current={id:r??null,staleReadsRemaining:1},s(r??null),E(r??`__main__`),K(),{ok:!0,activeId:r??null}}catch{return{ok:!1,reason:`request`}}finally{z.current=null,p(null)}},[e,K]),Y=(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 K(),{ok:!0}):{ok:!1,reason:`request`}}catch{return{ok:!1,reason:`request`}}},[e,K]),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&&E(e=>e===t?null:e),K(),{ok:!0}}catch{return{ok:!1,reason:`request`}}finally{H.current=null,h(null)}},[e,K]),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=yl((a&&typeof a==`object`?a:{}).priority??n);return i(e=>e.map(e=>e.id===t||t===`__main__`&&e.isMain?{...e,priority:o}:e)),E(null),I.current=null,K(),{ok:!0}}catch{return{ok:!1,reason:`request`}}finally{U.current=null,_(null)}},[e,K]),oe=(0,Z.useCallback)(async(t,n)=>{if(ee.current)return{ok:!1,reason:`busy`};ee.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`)?$l(o.autoSwitchThresholdOverride):n;return i(e=>e.map(e=>e.id===t||t===`__main__`&&e.isMain?{...e,autoSwitchThresholdOverride:s}:e)),K(),{ok:!0}}catch{return{ok:!1,reason:`request`}}finally{ee.current=null,y(null)}},[e,K]),se=(0,Z.useCallback)(async(t,n,r)=>{if(W.current)return{ok:!1,reason:`busy`};W.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)),K(),{ok:!0}):{ok:!1,reason:`request`}}catch{return{ok:!1,reason:`request`}}finally{W.current=!1,x(null)}},[e,K]),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 E(e=>e!==null&&a.has(e)?null:e),K(),{ok:!0,pausedCount:r.pausedCount??a.size}}catch{return{ok:!1,reason:`request`}}finally{H.current=null,C(!1)}},[e,K]),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=fl(await n.json().catch(()=>({})));return await K(),{ok:!0,...r}}catch{return{ok:!1,reason:`request`}}},[e,K]),fe=(0,Z.useCallback)(async()=>await K()?{ok:!0}:{ok:!1,reason:`reload`},[K]),pe=o&&o!==`__main__`?r.find(e=>e.id===o):null,me=r.find(e=>e.isMain),he=pe??me,ge=!he?.paused&&Vc(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:D>0,refreshFailed:u,initialLoading:!k,switchingId:f,pauseUpdatingId:m,priorityUpdatingId:g,autoSwitchUpdatingId:v,creditsAfterLimitUpdatingId:b,pausingExhausted:S,activeNeedsReauth:ge,activePinnedId:w,load:K,switchAccount:ie,setAccountPaused:X,setAccountPriority:ae,setAccountAutoSwitchThreshold:oe,setAccountCreditsAfterLimit:ce,setAllCreditsAfterLimit:le,pauseExhaustedAccounts:ue,saveAlias:Y,removeAccount:de,syncAfterAccountAdded:fe,pauseRefresh:q,resumeRefresh:J,subscribeLoadObserver:G,readLastThreshold:te,readLastActive:ne}}function tu(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=T(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=T(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 nu=`https://auth.openai.com/codex/device`,ru=2e3,iu=1e4,au=new Set([`identity_mismatch`,`credential_changed`,`native_main_unavailable`,`device_authorization_failed`,`publication_failed`,`reconciliation_failed`,`flow_in_progress`]);function ou(e){return typeof e==`string`&&au.has(e)?e:`request_failed`}function su(e){return typeof e==`string`&&e.startsWith(nu)?e:``}function cu(e){return typeof e==`string`&&/^[A-Z0-9-]{1,16}$/i.test(e)?e:``}function lu(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:ou(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:ou(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(iu)])}),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:ou(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:ou(c.code)});return}}catch{if(!u()||i.current!==f)return}await new Promise(e=>setTimeout(e,ru))}},[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 uu={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 du(e){return(t,n)=>{let r=uu[e][t];for(let[e,t]of Object.entries(n??{}))r=r.split(`{${e}}`).join(String(t));return r}}var fu=`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(`.`),pu=class extends Error{code;constructor(e){super(e),this.code=e}};function mu(e){return e instanceof pu?e.code:`NETWORK_ERROR`}function hu(){throw new pu(`INVALID_RESPONSE`)}function gu(e){return!e||typeof e!=`object`||Array.isArray(e)?hu():e}function _u(e){return typeof e!=`string`||!e.trim()?hu():e}function vu(e){return e===null?null:_u(e)}function yu(e){return typeof e==`boolean`?e:hu()}function bu(e,t){return typeof e==`string`&&t.includes(e)?e:hu()}function xu(e){let t=gu(e);return{id:_u(t.id),label:_u(t.label),identityHint:_u(t.identityHint),state:bu(t.state,[`active`,`inactive`])}}function Su(e){let t=gu(e);if(!Array.isArray(t.profiles)||t.profiles.length>32)return hu();let n=t.profiles.map(xu),r=vu(t.activeProfileId);if(new Set(n.map(e=>e.id)).size!==n.length)return hu();let i=n.filter(e=>e.state===`active`);return(r===null?n.length!==0:i.length!==1||i[0].id!==r)?hu():{effectiveCodexHome:_u(t.effectiveCodexHome),activeProfileId:r,profiles:n}}function Cu(e){let t=gu(e);return{effectiveCodexHome:_u(t.effectiveCodexHome),activeProfileId:vu(t.activeProfileId),supported:yu(t.supported),authStatus:bu(t.authStatus,[`ok`,`missing`,`invalid`,`unreadable`]),keyStore:bu(t.keyStore,[`available`,`missing-key`,`unavailable`]),vaultStatus:bu(t.vaultStatus,[`ok`,`missing`,`invalid`]),recoveryPending:yu(t.recoveryPending)}}async function wu(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 pu(`INVALID_RESPONSE`)}if(n.throwIfAborted(),!a.ok){let e=o&&typeof o==`object`?o.code:void 0;throw new pu(typeof e==`string`&&fu.includes(e)?e:`INTERNAL_ERROR`)}return o}async function Tu(e,t,n){let[r,i]=await Promise.allSettled([wu(e,``,t,void 0,n).then(Su),wu(e,`/doctor`,t,void 0,n).then(Cu)]);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 pu(`STATE_CHANGED`);return{doctor:i.value,list:r.value}}function Eu(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 Du(e){let t=e.doctor;return!!e.list&&t.supported&&t.authStatus===`ok`&&t.keyStore===`available`&&t.vaultStatus!==`invalid`&&!t.recoveryPending}function Ou(e,t){let n=e.doctor;return n.supported?t.kind===`recover`?n.recoveryPending:Du(e)&&!!e.list?.profiles.some(e=>e.id===t.target&&e.label===t.label&&e.state===`inactive`):!1}function ku(e,t){return e.doctor.effectiveCodexHome===t.doctor.effectiveCodexHome&&e.doctor.activeProfileId===t.doctor.activeProfileId&&e.doctor.recoveryPending===t.doctor.recoveryPending}async function Au(e,t,n,r){let i=gu(await wu(e,`/register`,n,{label:t.trim()},r)),a=_u(i.effectiveCodexHome);return xu(i.profile).state===`active`?a:hu()}async function ju(e,t,n,r,i){if(!n)throw new pu(`INVALID_REQUEST`);let a=gu(await wu(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 hu();if(t.kind===`switch`){let e=xu(a.activeProfile);if(e.id!==t.target||e.state!==`active`)return hu()}let o=t.kind===`recover`&&a.restartRequired===void 0&&a.recovered===!1?!1:yu(a.restartRequired);return{effectiveCodexHome:_u(a.effectiveCodexHome),restartRequired:o,...typeof a.recovered==`boolean`?{recovered:a.recovered}:{}}}var Mu=2e4,Nu=Symbol(`account-refresh-timeout`),Pu=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=Mu,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||!Ou(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:mu(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 Tu(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(Nu)},this.accountRefreshTimeoutMs)});try{let t=await Promise.race([r,i]);this.current(e)&&(t===!1||t===Nu)&&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 Tu(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||!Du(e)||await this.mutate(e,{label:t})}async confirm(){let{snapshot:e,action:t,confirmedStopped:n,refreshFailed:r}=this.state;!e||!t||!n||r||!Ou(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 Tu(this.apiBase,r,this.fetchImpl);if(r.throwIfAborted(),!this.current(n)||this.state.blocked)return;if(this.accept(a),!ku(e,a)||(`action`in t?!Ou(a,t.action):!Du(a)))throw new pu(`STATE_CHANGED`);if(i=!0,`label`in t){let i=await Au(this.apiBase,t.label,r,this.fetchImpl);if(!this.current(n))return;if(i!==e.doctor.effectiveCodexHome)throw new pu(`STATE_CHANGED`);this.resultHome=i,this.set({label:``,result:this.restartRequired?`restart`:`saved`})}else{let i=await ju(this.apiBase,t.action,!0,r,this.fetchImpl);if(!this.current(n))return;if(i.effectiveCodexHome!==e.doctor.effectiveCodexHome)throw new pu(`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:mu(e),previous:null})}finally{this.current(n)&&this.set({action:null,confirmedStopped:!1}),i&&await this.reconcile(n)}})}},Fu={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`},Iu=`ocx account main doctor`;function Lu({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:Iu}),n]})}function Ru({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?Eu(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(Fu[u])}),(0,Q.jsx)(`p`,{children:e(`nativeMain.retryHint`)}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`code`,{children:u}),` `,(0,Q.jsx)(Lu,{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||!Ou(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||!Ou(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||!Du(a),maxLength:80,autoComplete:`off`}),(0,Q.jsx)(`button`,{type:`submit`,className:`btn btn-sm`,disabled:C||!!s||!o.trim()||!Du(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||!Ou(a,s),onClick:x,children:e(`nativeMain.confirm`)})]})]})]})]})}function zu(e){return(0,Q.jsx)(Bu,{...e},e.apiBase)}function Bu({apiBase:e,disabled:t=!1,onChanged:n}){let{locale:r}=D(),i=du(r),a=(0,Z.useId)(),[o]=(0,Z.useState)(()=>new Pu(e)),[s,c]=(0,Z.useState)(o.state),l=(0,Z.useRef)(null),u=(0,Z.useRef)(null),d=(0,Z.useRef)(!1);return(0,Z.useLayoutEffect)(()=>o.attach(c),[o]),(0,Z.useLayoutEffect)(()=>{o.updateOptions(t,n)},[o,t,n]),(0,Z.useLayoutEffect)(()=>{s.action?(d.current=!0,u.current?.focus()):!s.busy&&d.current&&(d.current=!1,l.current?.focus())},[s.action,s.busy]),(0,Q.jsx)(Ru,{t:i,id:a,...s,previousId:s.previous?.id??null,summaryRef:l,confirmationRef:u,onToggle:()=>{o.toggle()},onRefresh:()=>{o.refresh()},onLabel:e=>o.setLabel(e),onRegister:()=>{o.register()},onSelect:e=>o.select(e),onStopped:e=>o.setStopped(e),onConfirm:()=>{o.confirm()}})}var Vu={"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 Hu({threshold:e,draft:t,strategy:n=`quota`,hydrated:r=!0,saving:a,loadError:o,feedback:s,onDraftChange:c,onEditingChange:l,onCommit:u,onCancel:d,onToggle:f,onRetry:p}){let m=i(),h=(0,Z.useRef)(!1),g=e>0,_=Vu[n][g?`on`:`off`],v=a||!r,y=a?m(`common.saving`):s?.message??``,b=a?`pending`:s?.tone,x=y?`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":a||!r&&!o||void 0,children:[(0,Q.jsxs)(`div`,{className:`codex-auto-switch-copy`,children:[(0,Q.jsx)(`strong`,{children:m(`codexAuth.autoSwitch`)}),(0,Q.jsx)(`div`,{id:`codex-auto-switch-desc`,className:`card-sub`,role:o?`alert`:void 0,children:o?m(`codexAuth.autoSwitchLoadFailed`):m(_,{threshold:e})}),(0,Q.jsx)(`div`,{className:`card-sub`,children:m(`codexAuth.failureRecoveryNote`)}),(0,Q.jsx)(`div`,{className:`card-sub`,children:m(`codexAuth.cacheWarning`)})]}),(0,Q.jsxs)(`div`,{className:`codex-auto-switch-controls`,onBlur:e=>{if(!e.currentTarget.contains(e.relatedTarget)){if(l(!1),h.current){h.current=!1;return}g&&!v&&u()}},children:[o&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:p,children:m(`pws.retryAccounts`)}),g&&(0,Q.jsxs)(`label`,{className:`codex-auto-switch-threshold`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:m(`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:v,"aria-disabled":v,"aria-label":m(`codexAuth.autoSwitchThresholdAria`),"aria-describedby":x,onChange:e=>c(e.target.value),onFocus:()=>{v||l(!0)},onKeyDown:e=>{e.nativeEvent.isComposing||v||(e.key===`Enter`?(e.preventDefault(),u()):e.key===`Escape`&&(e.preventDefault(),d()))}}),(0,Q.jsx)(`span`,{className:`codex-auto-switch-unit`,"aria-hidden":`true`,children:`%`}),(0,Q.jsx)(Ic,{disabled:v,incrementLabel:m(`codexAuth.autoSwitchThresholdInc`),decrementLabel:m(`codexAuth.autoSwitchThresholdDec`),onIncrement:()=>{l(!0),c(Fc(t,1,1,100))},onDecrement:()=>{l(!0),c(Fc(t,-1,1,100))}})]})]}),(0,Q.jsx)(`span`,{className:`codex-auto-switch-toggle-slot`,children:(0,Q.jsx)(`button`,{type:`button`,className:`toggle ${g?`on`:``}`,onPointerDownCapture:()=>{h.current=!0},onPointerUp:()=>{h.current=!1},onPointerCancel:()=>{h.current=!1},onClick:()=>{h.current=!1,f()},disabled:v,"aria-pressed":g,"aria-label":m(`codexAuth.autoSwitch`),"aria-describedby":x,title:m(`codexAuth.autoSwitch`),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})})})]}),y&&(0,Q.jsx)(`div`,{id:`codex-auto-switch-feedback`,className:`codex-auto-switch-feedback${b===`err`?` is-error`:``}`,role:b===`err`?`alert`:`status`,"aria-atomic":`true`,children:y})]})}var Uu={"reset-first":`accountPool.strategyResetFirst`,quota:`accountPool.strategyQuota`,"round-robin":`accountPool.strategyRoundRobin`,"fill-first":`accountPool.strategyFillFirst`},Wu={"reset-first":`accountPool.strategyHintResetFirst`,quota:`accountPool.strategyHintQuota`,"round-robin":`accountPool.strategyHintRoundRobin`,"fill-first":`accountPool.strategyHintFillFirst`};function Gu({strategy:e,codex:t=!1,threshold:n,stickyDraft:r,disabled:a=!1,strategySelectId:o=`account-pool-strategy`,stickyInputId:s=`account-pool-sticky-limit`,onStrategyChange:c,onStickyDraftChange:l,onStickyCommit:u}){let d=i(),f=wl.filter(e=>t||e!==`reset-first`).map(e=>({value:e,label:d(Uu[e])})),p=n===void 0?null:e===`round-robin`?d(`accountPool.thresholdNotUsed`):n>0?d(e===`fill-first`?`accountPool.drainAtThreshold`:e===`reset-first`?`accountPool.resetBelowThreshold`:`accountPool.switchAtThreshold`,{threshold:String(n)}):d(`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:`${o}-label`,children:d(`accountPool.strategy`)}),(0,Q.jsx)(`span`,{className:`desc`,children:d(`accountPool.strategyDesc`)}),(0,Q.jsx)(`span`,{className:`desc`,children:d(Wu[e])}),(0,Q.jsx)(`span`,{className:`desc`,children:d(`accountPool.unboundDefinition`)})]}),(0,Q.jsxs)(`div`,{className:`setting-controls`,children:[(0,Q.jsx)(an,{id:o,value:e,options:f,disabled:a,label:d(`accountPool.strategy`),onChange:e=>c(e)}),p&&(0,Q.jsx)(`span`,{className:`badge badge-muted account-pool-threshold-badge`,"data-testid":`account-pool-threshold-summary`,children:p})]})]}),e===`round-robin`&&(0,Q.jsxs)(`div`,{className:`setting-row`,children:[(0,Q.jsxs)(`label`,{className:`setting-label`,htmlFor:s,children:[(0,Q.jsx)(`span`,{className:`title`,children:d(`accountPool.stickyLimit`)}),(0,Q.jsx)(`span`,{className:`desc`,children:d(`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:s,className:`input mono codex-auto-switch-input`,type:`number`,min:1,max:100,step:1,inputMode:`numeric`,value:r,disabled:a,"aria-label":d(`accountPool.stickyLimitAria`),onChange:e=>l(e.target.value),onBlur:()=>u(),onKeyDown:e=>{e.nativeEvent.isComposing||a||e.key===`Enter`&&(e.preventDefault(),u())}}),(0,Q.jsx)(Ic,{disabled:a,incrementLabel:d(`accountPool.stickyLimitInc`),decrementLabel:d(`accountPool.stickyLimitDec`),onIncrement:()=>{let e=Fc(r,1,1,100);l(e),u(e)},onDecrement:()=>{let e=Fc(r,-1,1,100);l(e),u(e)}})]})})]})]})}function Ku(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:Al(t.accountPoolStrategy),stickyLimit:Ml(t.accountPoolStickyLimit),threshold:n}}function qu({apiBase:e,subscribeLoadObserver:t,readLastActive:n,onStrategyResolved:r,threshold:a}){let o=i(),[s,c]=(0,Z.useState)(El),[l,u]=(0,Z.useState)(1),[d,f]=(0,Z.useState)(`1`),[p,m]=(0,Z.useState)(void 0),[h,g]=(0,Z.useState)(!1),_=(0,Z.useRef)(!1),[v,y]=(0,Z.useState)(!1),b=(0,Z.useRef)(!1),x=(0,Z.useRef)(!1),S=(0,Z.useRef)(0),[C,w]=(0,Z.useState)(!1),[T,E]=(0,Z.useState)(null),D=(0,Z.useCallback)(e=>{let t=Al(e.accountPoolStrategy),n=Ml(e.accountPoolStickyLimit);typeof e.autoSwitchThreshold==`number`&&m(e.autoSwitchThreshold),c(t),r?.(t),u(n),f(String(n)),_.current=!0,g(!0),w(!1),E(null)},[r]),O=(0,Z.useCallback)(e=>{let t=Ku(e);t&&D({accountPoolStrategy:t.strategy,accountPoolStickyLimit:t.stickyLimit,autoSwitchThreshold:t.threshold})},[D]),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(b.current){x.current=!0;return}D(n)}catch{b.current||w(!0)}},[e,D]),A=(0,Z.useCallback)(()=>{x.current&&(x.current=!1,queueMicrotask(()=>{if(b.current){x.current=!0;return}k()}))},[k]);(0,Z.useEffect)(()=>{if(!t)return;let e=t({beginActiveRead:()=>S.current,acceptActiveRead:(e,t)=>{if(t===S.current){if(b.current){x.current=!0;return}O(e)}},rejectActiveRead:()=>{_.current||w(!0)}});return!b.current&&n&&O(n()),e},[t,O,n]),(0,Z.useEffect)(()=>{!n||t||b.current||O(n())},[n,O,t]),(0,Z.useEffect)(()=>{t||k()},[k,t]);let j=(0,Z.useCallback)(async t=>{if(b.current)return;let n=s,i=l;t.strategy!==void 0&&(c(t.strategy),r?.(t.strategy)),t.stickyLimit!==void 0&&(u(t.stickyLimit),f(String(t.stickyLimit))),b.current=!0,y(!0),E(null),S.current+=1;let a=await Bl(e,t);S.current+=1,a.ok?(c(a.strategy),r?.(a.strategy),u(a.stickyLimit),f(String(a.stickyLimit)),_.current=!0,g(!0)):(E(o(`accountPool.strategyUpdateFailed`)),c(n),r?.(n),u(i),f(String(i))),b.current=!1,y(!1),A()},[e,r,A,l,s,o]),M=v||C||!h;return(0,Q.jsxs)(`div`,{className:`card account-pool-strategy-card`,"aria-busy":v||!h&&!C,children:[C&&(0,Q.jsx)(`div`,{className:`card-sub`,role:`alert`,children:o(`accountPool.strategyLoadFailed`)}),C&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm account-pool-strategy-card__retry`,onClick:()=>{k()},children:o(`common.retry`)}),!C&&(0,Q.jsx)(Gu,{codex:!0,strategy:s,threshold:a===void 0?p:a,stickyDraft:d,disabled:M,strategySelectId:`codex-pool-strategy`,stickyInputId:`codex-pool-sticky-limit`,onStrategyChange:e=>{M||e===s||j({strategy:e})},onStickyDraftChange:f,onStickyCommit:e=>{if(M)return;let t=Nl(e??d);if(t===null){f(String(l)),E(o(`accountPool.stickyLimitInvalid`));return}if(t===l){f(String(t));return}j({stickyLimit:t})}}),T&&(0,Q.jsx)(`div`,{role:`alert`,className:`card-sub account-pool-strategy-card__error`,children:T})]})}function Ju({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)(Ue,{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 Yu(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=Kl(e),r=Gl(_.current,v.current,t,b.current);r===`defer`?x.current=Hl(n):r===`apply`&&w(Hl(n))},[w]),A=(0,Z.useCallback)(e=>{h.current||_.current||v.current||(l(!1),C(Hl(Kl(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 Jl(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=Ul(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=ql(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 Xu({value:e,disabled:t=!1,selectId:n,onChange:r}){let a=i(),o=yl(e),s=a(`accountPool.priorityHint`),c=`${n}-hint`,l=_l.map(e=>({value:String(e),label:Cl(a,e)})),u=xl(o)?l:[{value:String(o),label:Cl(a,o)},...l];return(0,Q.jsxs)(`div`,{className:`codex-account-priority`,children:[(0,Q.jsx)(`label`,{className:`codex-account-priority-label`,htmlFor:n,children:a(`accountPool.priority`)}),(0,Q.jsx)(an,{id:n,value:String(o),options:u,disabled:t,label:a(`accountPool.priorityAria`),describedBy:c,title:s,onChange:e=>r(yl(Number.parseInt(e,10)))}),(0,Q.jsx)(`span`,{id:c,className:`sr-only`,children:s})]})}function Zu({value:e}){let t=i(),n=yl(e);return n===0?null:(0,Q.jsx)(`span`,{className:`badge badge-muted`,children:Cl(t,n)})}function Qu({summary:e,busy:t,onToggleAll:n}){let r=i(),a=(0,Z.useId)(),o=e.total>0&&e.enabled===e.total,s=e.enabled>0&&!o;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 ${o?`on`:``}`,"aria-label":r(`codexAuth.creditSpendAria`),"aria-describedby":a,"aria-pressed":s?`mixed`:o,title:r(`codexAuth.creditsAfterLimitHint`),disabled:t||e.total===0,onClick:()=>n(!o),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})}),(0,Q.jsx)(`span`,{id:a,className:`sr-only`,children:r(`codexAuth.creditsAfterLimitHint`)})]})}function $u({accountLabel:e,enabled:t,saving:n,disabled:r,hint:a,onChange:o}){let s=i(),c=(0,Z.useId)(),l=t===!0,u=a??s(`codexAuth.creditsAfterLimitHint`);return(0,Q.jsxs)(`div`,{className:`codex-account-credits`,title:u,"aria-busy":n||void 0,children:[(0,Q.jsx)(`span`,{className:`codex-account-credits__label`,children:s(`codexAuth.creditsAfterLimit`)}),(0,Q.jsx)(`button`,{type:`button`,className:`toggle codex-account-credits__toggle ${l?`on`:``}`,disabled:r||n,"aria-pressed":l,"aria-label":s(`codexAuth.creditsAfterLimitAria`,{email:e}),"aria-describedby":c,onClick:()=>o(!l),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})}),(0,Q.jsx)(`span`,{id:c,className:`sr-only`,children:u})]})}function ed({enabled:e}){let t=i();return e===!0?(0,Q.jsx)(`span`,{className:`badge badge-amber`,title:t(`codexAuth.creditsAfterLimitHint`),children:t(`codexAuth.creditsOn`)}):null}function td({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 nd(e,t){return`${e??``}\0${JSON.stringify(t)}`}var rd={month:`short`,day:`numeric`,year:`numeric`},id={month:`short`,day:`numeric`,year:`numeric`,hour:`2-digit`,minute:`2-digit`},ad=new Map;function od(e,t){let n=nd(e,t),r=ad.get(n);return r||(r=new Intl.DateTimeFormat(e,t),ad.set(n,r)),r}function sd(e,t){let n=new Date(e);return Number.isNaN(n.getTime())?`—`:od(t,rd).format(n)}function cd(e,t){let n=new Date(e);return Number.isNaN(n.getTime())?`—`:od(t,id).format(n)}var ld=new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`,currencyDisplay:`narrowSymbol`,minimumFractionDigits:4,maximumFractionDigits:4});function ud(e,t){return!Number.isFinite(e)||e<0?`—`:`~${ld.format(e)}`}function dd(e,t){return sd(e,t)}function fd(e,t){return cd(e,t)}function pd(e){return Math.max(0,Math.ceil((new Date(e).getTime()-Date.now())/864e5))}function md({index:e,grantedAt:t,expiresAt:n,isNext:r,locale:i,t:a}){let o=pd(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)(le,{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:dd(t,i)})}),(0,Q.jsx)(`span`,{className:s?`credit-urgent`:``,children:a(`codexAuth.creditExpires`,{date:fd(n,i),days:String(o)})})]})]})}function hd({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)(le,{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)(le,{width:12}),r]})}function gd({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 _d({pool:e,creditsVisible:t,loading:n=!1,activeId:r,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,onReauth:y,onEditAlias:b,onRemove:x,onToggleCreditsAfterLimit:S,creditsAfterLimitUpdatingId:C=null,onCopyDoctor:w,doctorCopyOutcomeFor:T}){let E=i(),{locale:O}=D(),k=e=>!e.paused&&r===e.id,A=nl(),[j,M]=(0,Z.useState)(new Set);return(0,Q.jsx)(Q.Fragment,{children:e.map(e=>{let r=t===!0&&e.credits!==void 0,i=e.health?.status,D=e.selectionExcludedReason===`plan_excluded`,P=!!e.needsReauth||Bc(i),F=Hc(i),I=e.health?.reason===`validation_pending`,L=Gc(E,e.health),R=Kc(E,`codex`,e.id,e.health);return(0,Q.jsxs)(`div`,{className:`card ${k(e)?`card-active`:``}`,style:{marginBottom:8},children:[(0,Q.jsxs)(`div`,{className:`card-head`,children:[(0,Q.jsx)(`span`,{className:`dot ${P?`dot-amber`:k(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}),D&&(0,Q.jsx)(`span`,{className:`badge badge-muted`,title:E(`codexAuth.planExcludedHint`,{plan:e.selectionExcludedPlan??e.plan??``}),children:E(`codexAuth.planExcluded`)}),e.paused&&(0,Q.jsx)(`span`,{className:`badge badge-muted`,title:E(`codexAuth.pausedHint`),children:E(`codexAuth.paused`)}),(0,Q.jsx)(Zu,{value:e.priority}),(0,Q.jsx)(ed,{enabled:e.creditsAfterLimit}),e.id===v&&!e.paused&&(0,Q.jsx)(`span`,{className:`badge badge-muted`,children:E(`codexAuth.pinned`)}),(0,Q.jsx)(hd,{t:E,account:e,onClick:()=>c(e)}),L&&(0,Q.jsx)(`span`,{className:zc(i),children:L}),P&&!L&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:E(`codexAuth.needsReauth`)}),k(e)&&!D&&!P&&!F&&!I&&(0,Q.jsx)(`span`,{className:`badge badge-primary`,children:E(a===`direct`?`codexAuth.poolPrepared`:`codexAuth.nextSession`)})]}),!e.paused&&!D&&(!k(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:()=>y(e.id),children:E(`codexAuth.reauthenticate`)}),w&&Uc(i)&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm codex-auth-action-btn`,onClick:()=>w(e.id),children:(0,Q.jsx)(`span`,{"aria-live":`polite`,children:Yc(E,T?.(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?E(`codexAuth.pausedHint`):void 0,"aria-label":e.paused?`${E(`codexAuth.resume`)}. ${E(`codexAuth.pausedHint`)}`:E(`codexAuth.pause`),children:[e.paused?(0,Q.jsx)(X,{width:14}):(0,Q.jsx)(z,{width:14}),(0,Q.jsx)(gd,{t:E,paused:e.paused,saving:d===e.id})]}),(0,Q.jsxs)(`details`,{className:`codex-account-more card-right`,open:j.has(e.id),onToggle:t=>{let n=t.currentTarget.open;M(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":`${E(`codexAuth.moreActions`)} — ${e.email}`,title:E(`codexAuth.moreActions`),children:`⋯`}),(0,Q.jsxs)(`div`,{className:`codex-account-more-body`,children:[(0,Q.jsxs)(`span`,{className:`mono text-caption muted`,children:[E(`prov.accountId`),`: `,Pc(e.id)]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>A.copy(e.id,e.id),children:A.outcomeFor(e.id)===`copied`?E(`startup.copied`):E(`codexAuth.copyId`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void b(e),children:E(`prov.editAlias`)}),S&&(0,Q.jsx)($u,{accountLabel:e.alias??e.email,enabled:e.creditsAfterLimit,saving:C===e.id,disabled:C!==null,onChange:t=>S(e,t)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn-icon btn-icon-danger`,"aria-label":`${E(`common.remove`)} — ${e.email}`,title:`${E(`common.remove`)} — ${e.email}`,onClick:t=>{t.stopPropagation(),x(e.id)},children:(0,Q.jsx)(N,{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:[(yl(e.priority)!==0||j.has(e.id))&&(0,Q.jsx)(Xu,{value:e.priority,selectId:`codex-account-priority-${e.id}`,disabled:m!==null||_!==null,onChange:t=>p(e,t)}),(0,Q.jsx)(Lc,{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:E(`pws.healthCooldownHint`)}),P?(0,Q.jsx)(`div`,{className:`card-sub faint`,children:E(`codexAuth.tokenExpired`)}):!F&&(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsx)(ts,{quota:e.quota,plan:e.plan,threshold:e.autoSwitchThresholdOverride??s,t:E,pending:e.quota==null&&(n||!r),afterWeekly:r&&!n?(0,Q.jsx)(td,{credits:e.credits,t:E,locale:O}):void 0})})]},e.id)})})}function vd({onReauth:e}){let t=i();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)(De,{width:14}),` `,t(`codexAuth.tokenExpired`)]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:e,children:t(`codexAuth.reauthenticate`)})]})}function yd({confirm:e,mainEmail:t,accountModeState:n,switchingId:r,orderBusy:a=!1,threshold:o,onCancel:s,onConfirm:c}){let l=i(),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=ue(e.quota,e.plan),p=o!==void 0&&o>0&&f!==null&&f>=o;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:n===`direct`?l(`codexAuth.preparePoolTitle`):e.id===`__main__`?l(`codexAuth.switchBack`):l(`codexAuth.switchTitle`)}),(0,Q.jsx)(`p`,{className:`modal-desc`,children: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})]}),e.id!==`__main__`&&(0,Q.jsxs)(`div`,{className:`notice-warn`,children:[(0,Q.jsx)(De,{width:14}),` `,l(`codexAuth.cacheWarning`)]}),p&&(0,Q.jsxs)(`div`,{className:`notice-warn`,"data-testid":`codex-switch-threshold-warning`,children:[(0,Q.jsx)(De,{width:14}),` `,l(`codexAuth.switchExceedsThresholdWarning`,{threshold:o})]}),(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||a,onClick:c,children:l(r?`pws.accountSwitching`:n===`direct`?`codexAuth.prepareForPool`:`codexAuth.setAsNext`)})]})]})]})}function bd({resetPopup:e,resetConfirm:t,creditDetails:n,creditDetailsLoading:r,redeeming:i,onClose:a,onShowConfirm:o,onCancelConfirm:s,onRedeem:c}){let{locale:l,t:u}=D(),d=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{let e=d.current;e&&!e.open&&e.showModal()},[]);let f=(0,Z.useCallback)(e=>{e.preventDefault(),a()},[a]);return(0,Q.jsxs)(`dialog`,{ref:d,className:`modal-overlay`,"aria-labelledby":`codex-reset-title`,onCancel:f,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":u(`common.close`),tabIndex:-1,onClick:a}),(0,Q.jsx)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),role:`document`,children:t?(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)(De,{width:22})}),(0,Q.jsx)(`h3`,{id:`codex-reset-title`,children:u(`codexAuth.confirmResetTitle`)}),(0,Q.jsx)(`p`,{className:`modal-desc`,children:u(`codexAuth.confirmResetDesc`,{count:String(e.quota?.resetCredits??0)})}),n&&n[0]&&(0,Q.jsx)(`p`,{className:`faint text-label`,children:u(`codexAuth.confirmWhichCredit`,{date:dd(n[0].granted_at,l)})}),(0,Q.jsx)(`p`,{className:`faint text-label`,children:u(`codexAuth.irreversible`)})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:s,children:u(`codexAuth.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:c,disabled:i,children:u(i?`codexAuth.redeeming`:`codexAuth.useCredit`)})]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`h3`,{id:`codex-reset-title`,children:[(0,Q.jsx)(le,{width:16}),` `,u(`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:u(`codexAuth.resetCreditsAvailable`,{count:String(e.quota?.resetCredits??0)})}),r&&(0,Q.jsx)(`p`,{className:`faint text-label`,children:u(`common.loading`)}),n&&n.length>0&&(0,Q.jsx)(`div`,{className:`credit-list`,children:n.map((e,t)=>(0,Q.jsx)(md,{index:t,grantedAt:e.granted_at,expiresAt:e.expires_at,isNext:t===0,locale:l,t:u},`${e.granted_at}:${e.expires_at}`))}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,style:{marginTop:12,width:`100%`},onClick:o,disabled:i,children:u(`codexAuth.useOneCredit`)}),(0,Q.jsx)(`p`,{className:`card-sub text-caption`,style:{marginTop:8,textAlign:`center`},children:u(`codexAuth.fifoNote`)})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`faint`,children:u(`codexAuth.noResetCredits`)}),(0,Q.jsx)(`p`,{className:`modal-desc`,children:u(`codexAuth.earnCreditsHint`)})]})})]})})]})}function xd({t:e,main:t,isMainActive:n,accountModeState:r,threshold:i,switchActionLabel:a,onSwitch:o,onTogglePause:s,pauseUpdatingId:c,pauseBusy:l,onPriorityChange:u,priorityUpdatingId:d,onAutoSwitchThresholdChange:f,autoSwitchDisabled:p,switchingId:m,pinnedId:h=null,onOpenReset:g,onCopyDoctor:_,doctorCopyOutcomeFor:v,onManageMainHardLock:y,mainReauth:b,onToggleCreditsAfterLimit:x,creditsAfterLimitUpdatingId:S=null,creditsVisible:C,loading:w=!1}){let{locale:T}=D(),E=C===!0&&t?.credits!==void 0,O=e(`codexAuth.codexApp`),k=t?.id??`__main__`,A={id:`__main__`,email:t?.email||O,plan:t?.plan,isMain:!0,paused:t?.paused??!1,priority:t?.priority??0,autoSwitchThresholdOverride:t?.autoSwitchThresholdOverride??null,hasCredential:!0,quota:t?.quota??null,quotaAutoRefresh:t?.quotaAutoRefresh??{fiveHourAvailable:!1,weeklyAvailable:!1,fiveHourEnabled:!1,weeklyEnabled:!1}},j=!!t?.needsReauth||Bc(t?.health?.status),M=Hc(t?.health?.status),N=t?.mainAccountHardLock,P=N?.enabled===!0&&N.state===`blocked`,F=Gc(e,t?.health),I=t?Kc(e,`codex`,k,t.health):null;return(0,Q.jsxs)(`div`,{className:`card ${n&&!P?`card-active`:``}`,style:{marginBottom:12},children:[(0,Q.jsxs)(`div`,{className:`card-head`,children:[(0,Q.jsx)(`span`,{className:`dot ${j||P?`dot-amber`:`dot-green`}`}),(0,Q.jsx)(`strong`,{children:e(`codexAuth.mainAccount`)}),(0,Q.jsxs)(`span`,{className:`card-badges`,children:[t?.plan&&(0,Q.jsx)(`span`,{className:`badge badge-green`,children:t.plan}),t?.paused&&(0,Q.jsx)(`span`,{className:`badge badge-muted`,title:e(`codexAuth.pausedHint`),children:e(`codexAuth.paused`)}),(0,Q.jsx)(Zu,{value:A.priority}),(0,Q.jsx)(ed,{enabled:t?.creditsAfterLimit}),h===`__main__`&&!t?.paused&&(0,Q.jsx)(`span`,{className:`badge badge-muted`,children:e(`codexAuth.pinned`)}),t&&(0,Q.jsx)(hd,{t:e,account:{...t,id:`__main__`},onClick:()=>g({...t,id:`__main__`})}),F&&(0,Q.jsx)(`span`,{className:zc(t?.health?.status),children:F}),j&&!F&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:e(`codexAuth.needsReauth`)}),!t?.paused&&!P&&(0,Q.jsx)(`span`,{className:`badge ${n?`badge-primary`:`badge-muted`}`,children:e(n?r===`direct`?`codexAuth.poolPrepared`:`codexAuth.nextSession`:`codexAuth.current`)})]}),!t?.paused&&!P&&(!n||h!==`__main__`)&&!j&&!M&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm codex-account-switch`,onClick:()=>o(A),children:a}),_&&Uc(t?.health?.status)&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm codex-auth-action-btn`,onClick:()=>_(k),children:(0,Q.jsx)(`span`,{"aria-live":`polite`,children:Yc(e,v?.(k))})}),t&&(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-sm btn-ghost codex-auth-action-btn`,onClick:()=>s(A),disabled:l,title:t.paused?e(`codexAuth.pausedHint`):void 0,"aria-label":t.paused?`${e(`codexAuth.resume`)}. ${e(`codexAuth.pausedHint`)}`:e(`codexAuth.pause`),children:[t.paused?(0,Q.jsx)(X,{width:14}):(0,Q.jsx)(z,{width:14}),(0,Q.jsx)(gd,{t:e,paused:!!t.paused,saving:c===`__main__`})]}),t?.hasCredential&&x&&(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)($u,{accountLabel:t.alias??(t.email||e(`codexAuth.mainAccount`)),enabled:t.creditsAfterLimit,saving:S===`__main__`,disabled:S!==null,hint:e(`codexAuth.creditsAfterLimitMainHint`),onChange:e=>x(A,e)})})]}),(0,Q.jsxs)(`span`,{className:`card-right`,children:[(0,Q.jsx)(we,{width:14}),` `,e(`codexAuth.appLogin`)]})]}),(0,Q.jsxs)(`div`,{className:`codex-account-identity`,children:[(0,Q.jsxs)(`div`,{className:`codex-account-identity-copy`,children:[t?.email||e(`codexAuth.appLogin`),t?.plan?` · ${t.plan}`:``]}),t&&(0,Q.jsxs)(`div`,{className:`codex-account-controls`,children:[(0,Q.jsx)(Xu,{value:A.priority,selectId:`codex-account-priority-${A.id}`,disabled:d!==null||m!==null,onChange:e=>u(A,e)}),(0,Q.jsx)(Lc,{accountLabel:A.email,globalThreshold:i,override:A.autoSwitchThresholdOverride,inputId:`codex-account-auto-switch-${A.id}`,disabled:p,onChange:e=>f(A,e)},A.id)]})]}),N?.enabled&&(0,Q.jsxs)(`div`,{className:`codex-main-hard-lock-status${P?` is-blocked`:``}`,children:[(0,Q.jsx)(`p`,{role:`status`,children:e(P?`codexAuth.mainHardLockBlocked`:N.state===`ready`?`codexAuth.mainHardLockMonitoring`:`codexAuth.mainHardLockUnknown`,Xl(N.thresholds))}),y?(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:y,children:e(`codexAuth.mainHardLockManage`)}):(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:()=>Wt(`codex-set`),children:e(`codexAuth.mainHardLockManage`)})]}),N?.externalUsage&&(0,Q.jsx)(`div`,{className:`codex-main-hard-lock-status is-blocked`,children:(0,Q.jsx)(`p`,{role:`status`,children:e(`codexAuth.mainExternalUsageWarning`)})}),I&&(0,Q.jsx)(`div`,{className:`card-sub faint`,children:I}),M&&(0,Q.jsx)(`div`,{className:`card-sub faint`,children:e(`pws.healthCooldownHint`)}),j?(0,Q.jsxs)(`div`,{className:`card-sub faint`,children:[(0,Q.jsx)(`p`,{role:`status`,children:e(`codexAuth.mainTokenExpired`)}),b&&(b.state.phase===`idle`||b.state.phase===`failed`||b.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:()=>{b.start()},children:e(`codexAuth.mainReauthDevice`)}),b.state.phase===`failed`&&(0,Q.jsxs)(`span`,{className:`badge badge-amber`,children:[e(`codexAuth.mainReauthFailed`),`: `,b.state.code]})]}),b&&b.state.phase===`starting`&&(0,Q.jsx)(`span`,{className:`faint`,children:e(`codexAuth.mainReauthPending`)}),b&&(b.state.phase===`pending`||b.state.phase===`committing`)&&(0,Q.jsxs)(`span`,{className:`codex-main-reauth-pending`,children:[(0,Q.jsx)(al,{hint:{url:b.state.verificationUrl,deviceCode:b.state.deviceCode}}),(0,Q.jsx)(`span`,{className:`faint`,children:e(`codexAuth.mainReauthPending`)}),b.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:()=>{b.cancel()},children:e(`codexAuth.mainReauthCancel`)})]}),b&&b.state.phase===`succeeded`&&(0,Q.jsx)(`span`,{className:`badge badge-primary`,children:e(`codexAuth.mainReauthSucceeded`)})]}):!M&&(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsx)(ts,{quota:t?.quota??null,plan:t?.plan,threshold:A.autoSwitchThresholdOverride??i,t:e,pending:t!=null&&t.quota==null&&(w||!E),afterWeekly:E&&!w?(0,Q.jsx)(td,{credits:t?.credits,t:e,locale:T}):void 0})})]})}function Sd({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)(Cd,{t:e,refreshingQuota:n,pausingExhausted:r,pauseBusy:i,onRefresh:s,onPauseExhausted:c})]})]})}function Cd({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)(Fe,{width:14}),` `,e(t?`codexAuth.refreshingQuota`:`codexAuth.refreshQuota`)]})]})}function wd(e){return(0,Q.jsx)(`div`,{className:`codex-auth-actions-row`,children:(0,Q.jsx)(Cd,{...e})})}function Td({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)(le,{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)(we,{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)(ts,{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)(Le,{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 Ed(e,t){return t===void 0?e(`codexAuth.resetSuccessGeneric`):e(`codexAuth.resetSuccess`,{remaining:String(t)})}async function Dd(e,t,n,r){try{let i=await pn(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:Ed(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 Od({windows:e,ready:t,busy:n,loadError:r,feedback:a,onToggle:o,onRetry:s}){let c=i(),l=e.filter(e=>e.available),u=e.some(e=>e.enabled),d=l.length?l.every(e=>e.enabled):u,f=u&&!d,p=l.length===0&&!u,m=n?c(`common.saving`):r?c(`codexAuth.quotaAutoRefreshLoadFailed`):t?a?.message??(p?c(`codexAuth.quotaAutoRefreshEmpty`):f?c(`codexAuth.quotaAutoRefreshMixed`):``):c(`common.loading`),h=!n&&(r||a?.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:c(`codexAuth.quotaAutoRefresh`)}),(0,Q.jsx)(`div`,{id:`codex-quota-activation-desc`,className:`card-sub`,children:c(`codexAuth.quotaAutoRefreshAllHint`)}),m&&(0,Q.jsx)(`div`,{className:`card-sub${h?` is-error`:``}`,role:h?`alert`:`status`,children:m})]}),(0,Q.jsxs)(`div`,{className:`codex-quota-activation__controls`,children:[h&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:n,onClick:s,children:c(`common.retry`)}),(0,Q.jsx)(`button`,{type:`button`,className:`toggle ${t&&d?`on`:``}`,"aria-label":c(`codexAuth.quotaAutoRefresh`),"aria-describedby":`codex-quota-activation-desc`,"aria-pressed":t?f?`mixed`:d:void 0,disabled:!t||n||p,onClick:()=>o(!d),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})})]})]})}function kd(e){return{enabled:e.filter(e=>e.creditsAfterLimit===!0).length,total:e.length}}function Ad(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 jd(e,t){return e.flatMap(e=>{let n=e.isMain?`__main__`:e.id,r=e.quotaAutoRefresh??$e(e.quota);return[`fiveHour`,`weekly`].map(e=>({id:n,window:e,available:r[e===`fiveHour`?`fiveHourAvailable`:`weeklyAvailable`],enabled:t[n]?.[e]===!0}))})}function Md(e){let t=i(),n=(0,Z.useId)(),r=(0,Z.useRef)(null),a=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{let e=document.activeElement;return a.current?.focus(),()=>{e?.isConnected&&typeof e.focus==`function`&&e.focus()}},[]);let o=e.selection?.status===`pending`,s=e.failed||!e.providerKnown,c=e.loading?t(`prov.modelsNoticeChecking`):s?t(`prov.modelsNoticeFailed`):o?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:c}),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&&(o||s)&&e.onRetry&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>{e.onRetry?.(),a.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:a,onClick:e.onOpenModels,children:t(`prov.modelsNoticeOpen`)})]})]})})}var Nd=`ocx doctor`;function Pd({apiBase:e,accountModeState:t=null,banner:n=null,embedded:r=!1,onActiveNeedsReauthChange:a,controller:o,advancedExtras:s=null,hasMainHardLockSetting:c=!1}){let l=i(),u=Yu(e,{updated:l(`codexAuth.autoSwitchUpdated`),updateFailed:l(`codexAuth.autoSwitchUpdateFailed`),invalid:l(`codexAuth.autoSwitchThresholdInvalid`)}),[d,f]=(0,Z.useState)(null),{beginServerRead:p,acceptServerRead:m,rejectServerRead:h,hydrateServerValue:g}=u,_=eu(e,!o),v=o??_,{accounts:y,activeId:b,loadState:x,refreshFailed:S,switchingId:C,pauseUpdatingId:w,priorityUpdatingId:E,autoSwitchUpdatingId:D,pausingExhausted:O,activePinnedId:k,load:A}=v,j=lu(e,()=>{A()}),M=j.state.phase===`starting`||j.state.phase===`pending`||j.state.phase===`committing`,[N,P]=(0,Z.useState)(null),[F,I]=(0,Z.useState)(!1),[L,R]=(0,Z.useState)(null),[z,B]=(0,Z.useState)(!1),V=(0,Z.useRef)(!1),H=(0,Z.useCallback)(()=>{let e=document.getElementById(`codex-main-hard-lock-setting`);e?.focus(),e?.scrollIntoView({block:`nearest`})},[]);(0,Z.useEffect)(()=>{z&&V.current&&(V.current=!1,H())},[z,H]);let U=()=>{z?H():(V.current=!0,B(!0))},[ee,W]=(0,Z.useState)(null),[G,te]=(0,Z.useState)(null),[ne,K]=(0,Z.useState)(null),re=(0,Z.useRef)(null),[q,J]=(0,Z.useState)(!1),[ie,Y]=(0,Z.useState)(null),[X,ae]=(0,Z.useState)(null),oe=(0,Z.useRef)(0),se=(0,Z.useRef)(null),ce=(0,Z.useRef)(null),[le,ue]=(0,Z.useState)(0),[de,fe]=(0,Z.useState)(e),[pe,me]=(0,Z.useState)(null),he=(0,Z.useRef)(null),ge=X?.apiBase===e&&X.revision===le?X:null,_e=ge?.settings??null,ve=ge?.error??!1,ye=ie===e;de!==e&&(fe(e),ue(e=>e+1),ae(null),Y(null),me(null));let[be,xe]=(0,Z.useState)(null),[Se,Ce]=(0,Z.useState)(!1),[we,Te]=(0,Z.useState)(!1),[Ee,De]=(0,Z.useState)(null),[Oe,ke]=(0,Z.useState)(!1),Ae=nl(),je=(0,Z.useCallback)((e,t=`ok`)=>{re.current&&clearTimeout(re.current),te(e),K(t),re.current=setTimeout(()=>{te(null),K(null),re.current=null},5e3)},[]);(0,Z.useEffect)(()=>()=>{re.current&&clearTimeout(re.current)},[]);let Me=tu(e,A,je,l,{revision:le,onRead:(t,n)=>{let r=oe.current;t.then(t=>{n.aborted||oe.current!==r||(ae({apiBase:e,revision:le,settings:Ad(t),error:!1}),Y(null))}).catch(()=>{n.aborted||oe.current!==r||(ae({apiBase:e,revision:le,settings:null,error:!0}),Y(null))})}}),Ne=(0,Z.useCallback)(e=>{Ae.copy(Nd,e)},[Ae]),{subscribeLoadObserver:Pe,readLastThreshold:Fe}=v;(0,Z.useEffect)(()=>Pe({beginActiveRead:p,acceptActiveRead:m,rejectActiveRead:h}),[Pe,p,m,h]),(0,Z.useEffect)(()=>{let e=Fe();e!==void 0&&g(e)},[Fe,g]),(0,Z.useEffect)(()=>{if(!F&&!M)return;let e=v.pauseRefresh();return()=>v.resumeRefresh(e)},[v,F,M]);let Ie=b&&b!==`__main__`?y.find(e=>e.id===b):null,Re=!Ie?.paused&&Vc(Ie);(0,Z.useEffect)(()=>{a?.(Re)},[Re,a]);let ze=(0,Z.useCallback)(e=>{W(e),I(!0)},[]),Be=(0,Z.useCallback)(()=>{I(!1),W(null)},[]),Ve=(0,Z.useCallback)(e=>{v.syncAfterAccountAdded(),je(l(e.validationPending?`pws.healthLabel.validationPending`:e.catalogRefreshPending?`codexAuth.catalogRefreshPending`:`codexAuth.accountAdded`),e.validationPending||e.catalogRefreshPending?`warn`:`ok`),Be(),R(e.validationPending?null:{catalogRefreshPending:e.catalogRefreshPending})},[Be,v,je,l]),He=async e=>{let n=await v.switchAccount(e);if(!n.ok){if(n.reason===`busy`)return;je(l(`codexAuth.switchFailed`),`err`);return}P(null);let r=n.activeId,i=r&&r!==`__main__`?y.find(e=>e.id===r)?.email??l(`pws.accountOrdinal`,{count:`1`}):l(`codexAuth.mainAccount`);je(l(t===`direct`?`codexAuth.poolPreparedToast`:`codexAuth.switched`,{email:i}))},Ue=async e=>{let t=await $i({message:l(`prov.aliasPrompt`),initialValue:e.alias??``,maxLength:80,validate:e=>Zc(e,l)});if(t===null)return;let n=await v.saveAlias(e.id,t);je(l(n.ok?`prov.aliasSaved`:`prov.aliasSaveFailed`),n.ok?`ok`:`err`)},We=async e=>{let t=!e.paused,n=await v.setAccountPaused(e.id,t);!n.ok&&n.reason===`busy`||(P(t=>t?.id===e.id?null:t),je(l(n.ok?t?`codexAuth.pauseSucceeded`:`codexAuth.resumeSucceeded`:t?`codexAuth.pauseFailed`:`codexAuth.resumeFailed`,{email:e.alias??e.email}),n.ok?`ok`:`err`))},Ge=async e=>{let t=await v.setAllCreditsAfterLimit(e);!t.ok&&t.reason===`busy`||je(l(t.ok?e?`codexAuth.creditsAllOnSucceeded`:`codexAuth.creditsAllOffSucceeded`:`codexAuth.creditsAllUpdateFailed`),t.ok?`ok`:`err`)},Ke=async(e,t)=>{if(t===e.priority)return;let n=await v.setAccountPriority(e.id,t);!n.ok&&n.reason===`busy`||je(l(n.ok?`accountPool.priorityUpdated`:`accountPool.priorityUpdateFailed`,{email:e.alias??e.email}),n.ok?`ok`:`err`)},qe=async(e,t)=>{if(t===e.autoSwitchThresholdOverride)return!0;let n=await v.setAccountAutoSwitchThreshold(e.id,t);return!n.ok&&n.reason===`busy`?!1:(je(l(n.ok?`accountPool.autoSwitchUpdated`:`accountPool.autoSwitchUpdateFailed`,{email:e.alias??e.email}),n.ok?`ok`:`err`),n.ok)},Je=async(e,t)=>{let n=await v.setAccountCreditsAfterLimit(e.id,t);!n.ok&&n.reason===`busy`||je(l(n.ok?t?`codexAuth.creditsOnSucceeded`:`codexAuth.creditsOffSucceeded`:`codexAuth.creditsUpdateFailed`,{email:e.alias??e.email}),n.ok?`ok`:`err`)},Ye=async e=>{let t=y.find(t=>t.id===e)?.email??l(`pws.accountOrdinal`,{count:`1`});if(!await Qi({message:l(`codexAuth.removeConfirm`,{id:t}),confirmLabel:l(`common.remove`),tone:`danger`}))return;let n=await v.removeAccount(e);n.ok?n.catalogRefreshPending&&je(l(`codexAuth.catalogRefreshPending`),`warn`):je(l(`codexAuth.removeFailed`),`err`)},Xe=async()=>{J(!0);try{let e=await A(!0,{validatePending:!0});je(l(e?`codexAuth.quotaRefreshed`:`codexAuth.quotaRefreshFailed`),e?`ok`:`err`)}finally{J(!1)}},Ze=async t=>{let n=se.current;if(ce.current||!n||n.signal.aborted||_e===null||x!==`ready`)return;let r=T(3e4);ce.current=r,oe.current+=1;let i=()=>se.current===n&&!n.signal.aborted,a=jd(y,_e);Y(e),me(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=T(15e3);ce.current=n;try{let r=await fetch(`${e}/api/settings`,{signal:n.signal});if(!r.ok)throw Error(`read`);let s=Ad(await r.json());if(!i())return;o||=a.some(e=>(!t||e.available)&&s[e.id]?.[e.window]===!0!==t),ae({apiBase:e,revision:le,settings:s,error:!1})}catch{if(!i())return;o=!0,ae({apiBase:e,revision:le,settings:null,error:!0})}finally{n.clear()}if(!i())return;he.current=o?{apiBase:e,enabled:t}:null,me({apiBase:e,message:l(o?`codexAuth.quotaAutoRefreshPartial`:`codexAuth.quotaAutoRefreshUpdated`),failed:o})}finally{r.clear(),i()&&(ce.current=null,Y(null))}};(0,Z.useEffect)(()=>{let e=new AbortController;return se.current=e,()=>{e.abort(),ce.current?.controller.abort(),ce.current?.clear(),ce.current=null}},[e,le]);let Qe=async()=>{let e=await v.pauseExhaustedAccounts();!e.ok&&e.reason===`busy`||je(e.ok?e.pausedCount>0?l(`codexAuth.pauseExhaustedSucceeded`,{count:String(e.pausedCount)}):l(`codexAuth.pauseExhaustedNone`):l(`codexAuth.pauseExhaustedFailed`),e.ok?`ok`:`err`)},$e=async t=>{xe(t),Ce(!1),De(null),ke(!0);try{let n=await pn(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());De(e)}}catch{}finally{ke(!1)}},et=async t=>{Te(!0);try{let n=await Dd(e,t,l,A);n.close&&(xe(null),Ce(!1)),n.toast&&je(n.toast,n.ok?`ok`:`err`)}finally{Te(!1)}},tt=y.find(e=>e.isMain),nt=y.filter(e=>!e.isMain),rt=kd([...tt?.hasCredential?[tt]:[],...nt]),it=!tt?.paused&&(!b||b===`__main__`),at=l(t===`direct`?`codexAuth.prepareForPool`:`codexAuth.setAsNext`),ot=w!==null||O,st=u.threshold,ct=!u.hydrated||D!==null,lt=!r;return(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Sd,{t:l,embedded:r,creditsVisible:Me.visible,creditsBusy:Me.busy,onToggleCredits:()=>{Me.toggle()},creditSpendControl:x===`loading`&&y.length===0?void 0:(0,Q.jsx)(Qu,{summary:rt,busy:v.creditsAfterLimitUpdatingId!==null,onToggleAll:e=>{Ge(e)}}),refreshingQuota:q,actionFeedback:G,actionFeedbackTone:ne,pausingExhausted:O,pauseBusy:ot,onRefresh:()=>{Xe()},onPauseExhausted:()=>{Qe()}}),n,!r&&(0,Q.jsx)(wd,{t:l,refreshingQuota:q,pausingExhausted:O,pauseBusy:ot,onRefresh:()=>{Xe()},onPauseExhausted:()=>{Qe()}}),(0,Q.jsx)(Td,{t:l,loadState:x,refreshFailed:S,accountsCount:y.length,onRetry:()=>{A()}}),(x!==`loading`||y.length!==0)&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(xd,{t:l,main:tt,creditsVisible:Me.visible,loading:x===`loading`,isMainActive:it,accountModeState:t,threshold:st,switchActionLabel:at,onSwitch:P,onTogglePause:We,pauseUpdatingId:w,pauseBusy:ot,onPriorityChange:(e,t)=>{Ke(e,t)},priorityUpdatingId:E,onAutoSwitchThresholdChange:qe,autoSwitchDisabled:ct,onToggleCreditsAfterLimit:(e,t)=>{Je(e,t)},creditsAfterLimitUpdatingId:v.creditsAfterLimitUpdatingId,switchingId:C,pinnedId:k,onOpenReset:$e,onCopyDoctor:lt?Ne:void 0,doctorCopyOutcomeFor:lt?Ae.outcomeFor:void 0,onManageMainHardLock:c?U:void 0,mainReauth:j}),(0,Q.jsx)(zu,{apiBase:e,disabled:M,onChanged:()=>A(!1)}),(0,Q.jsxs)(`div`,{className:`section-sep`,children:[(0,Q.jsx)(`span`,{className:`section-label`,children:l(`codexAuth.accountPool`)}),(0,Q.jsx)(`div`,{className:`sep-line`}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-sm btn-ghost`,onClick:()=>I(!0),children:[(0,Q.jsx)(Le,{width:14}),` `,l(`codexAuth.add`)]})]}),Re&&Ie&&(0,Q.jsx)(vd,{onReauth:()=>ze(Ie.id)}),nt.length===0&&(0,Q.jsx)(on,{title:l(`codexAuth.noPool`)}),(0,Q.jsx)(_d,{pool:nt,creditsVisible:Me.visible,loading:x===`loading`,activeId:b,accountModeState:t,switchActionLabel:at,threshold:st,onOpenReset:$e,onSwitch:P,onTogglePause:We,pauseUpdatingId:w,pauseBusy:ot,onPriorityChange:(e,t)=>{Ke(e,t)},priorityUpdatingId:E,onAutoSwitchThresholdChange:qe,autoSwitchDisabled:ct,onToggleCreditsAfterLimit:(e,t)=>{Je(e,t)},creditsAfterLimitUpdatingId:v.creditsAfterLimitUpdatingId,switchingId:C,pinnedId:k,onReauth:ze,onEditAlias:Ue,onRemove:Ye,onCopyDoctor:lt?Ne:void 0,doctorCopyOutcomeFor:lt?Ae.outcomeFor:void 0})]}),(0,Q.jsx)(qu,{apiBase:e,subscribeLoadObserver:v.subscribeLoadObserver,readLastActive:v.readLastActive,onStrategyResolved:f,threshold:u.threshold}),(0,Q.jsxs)(Ju,{t:l,open:z,onToggle:()=>B(e=>!e),children:[(0,Q.jsx)(Od,{windows:jd(y,_e??{}),ready:_e!==null&&x===`ready`,busy:ye,loadError:ve||x===`error`,feedback:pe?.apiBase===e?pe:null,onToggle:e=>{Ze(e)},onRetry:()=>{ve||_e===null||x!==`ready`?(ue(e=>e+1),A()):he.current?.apiBase===e&&Ze(he.current.enabled)}}),d!==null&&(0,Q.jsx)(Hu,{threshold:u.threshold,draft:u.draft,strategy:d,hydrated:u.hydrated,saving:u.saving,loadError:u.loadError,feedback:u.feedback,onDraftChange:u.setDraft,onEditingChange:u.setEditing,onCommit:u.commit,onCancel:u.cancel,onToggle:u.toggle,onRetry:()=>{u.retry(),A()}}),s]}),N&&(0,Q.jsx)(yd,{confirm:N,mainEmail:tt?.email,accountModeState:t,switchingId:C,orderBusy:E!==null,threshold:d&&d!==`round-robin`?st:void 0,onCancel:()=>P(null),onConfirm:()=>{He(N.id===`__main__`?`__main__`:N.id)}}),be&&(0,Q.jsx)(bd,{resetPopup:be,resetConfirm:Se,creditDetails:Ee,creditDetailsLoading:Oe,redeeming:we,onClose:()=>{xe(null),Ce(!1),De(null)},onShowConfirm:()=>Ce(!0),onCancelConfirm:()=>Ce(!1),onRedeem:()=>{et(be.id)}}),F&&(0,Q.jsx)(gl,{apiBase:e,reauthAccountId:ee??void 0,onClose:Be,onAdded:Ve}),L&&(0,Q.jsx)(Md,{provider:`openai`,loading:!1,failed:!1,providerKnown:!0,initialRegistration:!1,catalogRefreshPending:L.catalogRefreshPending,onClose:()=>R(null),onOpenModels:()=>{R(null),Wt(`models`)}})]})}var Fd=`https://opencodex.me/guides/claude-code/#claude-oauth-account-pool-experimental`,Id={"five-hour":`accountPool.quotaWindowFiveHour`,weekly:`accountPool.quotaWindowWeekly`,"max-utilization":`accountPool.quotaWindowMaxUtilization`};function Ld(e,t,n,r){let i=e(Id[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 Rd({apiBase:e,provider:t=`anthropic`,accountCount:n,onThresholdChange:r}){let a=i(),[o,s]=(0,Z.useState)(null),[c,l]=(0,Z.useState)(`80`),[u,d]=(0,Z.useState)(`1`),[f,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(null),[g,_]=(0,Z.useState)(!1),[v,y]=(0,Z.useState)(!1),[b,x]=(0,Z.useState)(!1),[S,C]=(0,Z.useState)(0),[w,T]=(0,Z.useState)(!1),E=(0,Z.useRef)(r),D=(0,Z.useRef)(!0),O=(0,Z.useRef)(e),k=(0,Z.useRef)(t),A=(0,Z.useRef)(null);(0,Z.useLayoutEffect)(()=>(D.current=!0,()=>{D.current=!1,A.current?.abort(),A.current=null}),[]),(0,Z.useLayoutEffect)(()=>{E.current=r,O.current=e,k.current=t},[e,t,r]),(0,Z.useEffect)(()=>{let n=!1,r=new AbortController;return Promise.resolve().then(()=>Ll(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=Ml(e.stickyLimit);s({enabled:e.enabled===!0,threshold:t,strategy:Al(e.strategy),stickyLimit:r,quotaWindow:jl(e.quotaWindow),nativeMessages:e.nativeMessages===!0}),l(String(t)),E.current?.(t),d(String(r)),_(!1),x(!1),h(null),y(!1),T(!1)}).catch(()=>{n||r.signal.aborted||(_(!0),T(!1))}),()=>{n=!0,r.abort()}},[e,t,S]);let j=(0,Z.useCallback)(async n=>{let r=e,i=t;A.current?.abort();let c=new AbortController;A.current=c;let u=()=>D.current&&O.current===r&&k.current===i&&A.current===c&&!c.signal.aborted,f=o;p(!0),h(null),y(!1);try{let e=await zl(r,i,{enabled:n.enabled,threshold:n.threshold,strategy:n.strategy,stickyLimit:n.stickyLimit,quotaWindow:n.quotaWindow,nativeMessages:n.nativeMessages},(e,t)=>fetch(e,t),{signal:c.signal});if(!u())return;if(!e)throw Error(`save`);let t=typeof e.autoSwitchThreshold==`number`?e.autoSwitchThreshold:n.threshold,a=Al(e?.strategy??n.strategy),o=Ml(e?.stickyLimit??n.stickyLimit),f=jl(e?.quotaWindow??n.quotaWindow);s({enabled:e.enabled??n.enabled,threshold:t,strategy:a,stickyLimit:o,quotaWindow:f,nativeMessages:e.nativeMessages===!0}),l(String(t)),E.current?.(t),d(String(o)),y(e.warning===`config_bookkeeping_failed`)}catch(e){if(!u())return;if(e instanceof Rl){s(null),x(!0),_(!1),h(null);return}h(a(`anthropicPool.saveFailed`)),f&&(s(f),l(String(f.threshold)),d(String(f.stickyLimit)))}finally{let e=A.current===c;e&&(A.current=null),e&&D.current&&O.current===r&&k.current===i&&p(!1)}},[e,t,o,a]),M=o?.enabled===!0,N=o?.threshold??80,P=o?.strategy??`quota`,F=o?.stickyLimit??1,I=o?.quotaWindow??`five-hour`,L=o?.nativeMessages??!0,R=P===`round-robin`,z=w||o===null&&!g&&!b,B=z||f||g||b,V=B||!M&&n<2;return(0,Q.jsxs)(`div`,{className:`card anthropic-pool-card`,"aria-busy":z||f,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:a(`anthropicPool.title`)}),(0,Q.jsx)(`div`,{className:`card-sub`,style:{marginTop:4},children:b?a(`anthropicPool.saveStateUnknown`):g?a(`anthropicPool.loadFailed`):z?a(`common.loading`):M?Ld(a,P,N,I):a(`anthropicPool.disabledDesc`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`toggle ${M?`on`:``}`,disabled:V,"aria-pressed":b?void 0:M,"aria-label":a(`anthropicPool.title`),title:a(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:a(`anthropicPool.experimentalWarning`)}),n<2&&(0,Q.jsx)(`div`,{className:`card-sub`,style:{marginTop:8},children:a(`anthropicPool.needTwoAccounts`)}),(0,Q.jsxs)(`details`,{className:`anthropic-pool-card__details`,children:[(0,Q.jsx)(`summary`,{children:a(`anthropicPool.detailsSummary`)}),(0,Q.jsx)(`p`,{children:a(`anthropicPool.detailsEnabling`)}),(0,Q.jsx)(`p`,{children:a(`anthropicPool.detailsFailover`)}),(0,Q.jsx)(`p`,{children:a(`anthropicPool.detailsActivity`)}),(0,Q.jsxs)(`label`,{className:`anthropic-pool-card__native-messages`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:o?L:!1,disabled:B||!o,"aria-label":a(`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:a(`anthropicPool.nativeMessagesLabel`)}),(0,Q.jsx)(`span`,{id:`anthropic-pool-native-messages-help`,className:`card-sub`,children:a(`anthropicPool.nativeMessagesHelp`)})]})]}),(0,Q.jsx)(`p`,{children:(0,Q.jsx)(`a`,{href:Fd,target:`_blank`,rel:`noreferrer`,children:a(`anthropicPool.detailsGuide`)})})]}),M&&o&&(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:a(`anthropicPool.threshold`)}),(0,Q.jsx)(`input`,{className:`input mono`,type:`number`,min:0,max:100,step:1,value:c,disabled:B,"aria-label":a(`anthropicPool.thresholdAria`),onChange:e=>l(e.target.value),onBlur:()=>{let e=Number(c);if(!Number.isInteger(e)||e<0||e>100){l(String(N)),h(a(`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:a(`anthropicPool.thresholdHelp`)})]}),(0,Q.jsx)(Gu,{strategy:P,stickyDraft:u,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:d,onStickyCommit:e=>{let t=Nl(e??u);if(t===null){d(String(F)),h(a(`accountPool.stickyLimitInvalid`));return}if(t===F){d(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:a(`accountPool.quotaWindow`)}),(0,Q.jsx)(an,{id:`anthropic-pool-quota-window`,value:I,options:Tl.map(e=>({value:e,label:a(Id[e])})),disabled:B||R,label:a(`accountPool.quotaWindow`),onChange:e=>{let t=jl(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:a(`accountPool.quotaWindowDesc`)}),(0,Q.jsx)(`div`,{className:`card-sub`,style:{marginTop:4},children:a(R?`accountPool.quotaWindowInert`:`accountPool.quotaWindowHint`)})]})]}),b&&(0,Q.jsxs)(`div`,{role:`alert`,className:`anthropic-pool-card__save-warning`,children:[(0,Q.jsx)(`p`,{children:a(`anthropicPool.saveStateUnknown`)}),g&&(0,Q.jsx)(`p`,{children:a(`anthropicPool.loadFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:w,onClick:()=>{_(!1),T(!0),C(e=>e+1)},children:a(`anthropicPool.reloadSettings`)})]}),v&&(0,Q.jsx)(`div`,{role:`status`,className:`anthropic-pool-card__save-warning`,children:a(`anthropicPool.saveWarning`)}),m&&(0,Q.jsx)(`div`,{role:`alert`,className:`card-sub`,style:{marginTop:8,color:`var(--danger, #c44)`},children:m})]})}function zd({serverDefault:e=!0}){let t=i(),[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),ul(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 Bd(e){return e?.status===`ready`?e.coupons:[]}function Vd(){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 Hd={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 Ud({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)(le,{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)(le,{width:12}),r===null?(0,Q.jsx)(De,{width:11}):r]})}function Wd({coupon:e,index:t,isNext:n,locale:r,t:i}){let a=e.validityEnd?pd(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)(le,{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:dd(e.validityStart,r)})}),a!==null&&(0,Q.jsx)(`span`,{className:a<=7?`credit-urgent`:``,children:i(`grokCoupon.expires`,{date:fd(e.validityEnd,r),days:String(a)})})]})]})}function Gd({accountId:e,accountLabel:t,entry:n,controller:r,onClose:i}){let{locale:a,t:o}=D(),s=(0,Z.useRef)(null),c=(0,Z.useRef)(null),[l,u]=(0,Z.useState)(!1),[d,f]=(0,Z.useState)(!1),[p,m]=(0,Z.useState)(!1),h=r.uncertain[e],[g,_]=(0,Z.useState)(null),v=(0,Z.useRef)(void 0);(0,Z.useEffect)(()=>{let e=s.current;e&&!e.open&&e.showModal()},[]),(0,Z.useEffect)(()=>{l&&c.current?.focus()},[l]);let y=(0,Z.useCallback)(e=>{e.preventDefault(),i()},[i]),b=Bd(n),x=b[0],S=()=>{if(h)return;let e=Vd();if(!e){_({tone:`warn`,key:`grokCoupon.noOperationId`});return}v.current=e,_(null),u(!0)},C=async()=>{if(d||h)return;let t=v.current;if(!x?.tokenId){_({tone:`warn`,key:`grokCoupon.noneAvailable`});return}if(!t){_({tone:`warn`,key:`grokCoupon.noOperationId`});return}f(!0);let n=await r.redeem(e,{tokenId:x.tokenId,operationId:t});if(f(!1),n.ok){v.current=void 0,u(!1),_({tone:`ok`,key:n.replayed?`grokCoupon.redeemReplayed`:`grokCoupon.redeemSuccess`});return}if(n.uncertain||n.code===`aborted`){n.operationId&&(v.current=n.operationId),u(!1),_(null),r.refresh(e);return}n.code===`operation_id_owned_by_another_account`&&(v.current=void 0),_({tone:`warn`,key:Hd[n.code]??`grokCoupon.redeemFailed`})},w=async()=>{!h||p||(m(!0),await r.refresh(e),m(!1))},T=h?Bd(n).some(e=>e.tokenId===h.tokenId):!1,E=String(b.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:o(e.key,{count:E})});return(0,Q.jsxs)(`dialog`,{ref:s,className:`modal-overlay`,"aria-labelledby":`grok-coupon-title`,onCancel:y,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":o(`common.close`),tabIndex:-1,onClick:i}),(0,Q.jsx)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),role:`document`,children:h?(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)(De,{width:22})}),(0,Q.jsx)(`h3`,{id:`grok-coupon-title`,children:o(`grokCoupon.title`)}),(0,Q.jsx)(`p`,{className:`pws-status-warn`,role:`alert`,children:o(`grokCoupon.unknownOutcome`)}),!p&&(0,Q.jsx)(`p`,{className:`faint text-label`,children:o(T?`grokCoupon.unresolved`:`grokCoupon.consumedElsewhere`)})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:i,children:o(`common.close`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>{w()},disabled:p,children:o(p?`grokCoupon.checking`:`grokCoupon.checkResult`)})]})]}):l?(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)(De,{width:22})}),(0,Q.jsx)(`h3`,{id:`grok-coupon-title`,children:o(`grokCoupon.confirmTitle`)}),(0,Q.jsx)(`p`,{className:`modal-desc`,children:o(`grokCoupon.confirmDesc`,{count:E})}),x?.validityEnd&&(0,Q.jsx)(`p`,{className:`faint text-label`,children:o(`grokCoupon.confirmWhich`,{date:dd(x.validityEnd,a)})}),(0,Q.jsx)(`p`,{className:`faint text-label`,children:o(`grokCoupon.irreversible`)}),g&&O(g)]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>u(!1),disabled:d,children:o(`common.cancel`)}),(0,Q.jsx)(`button`,{ref:c,type:`button`,className:`btn btn-primary`,onClick:()=>{C()},disabled:d,children:o(d?`grokCoupon.redeeming`:`grokCoupon.redeem`)})]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`h3`,{id:`grok-coupon-title`,children:[(0,Q.jsx)(le,{width:16}),` `,o(`grokCoupon.title`)]}),(0,Q.jsx)(`div`,{className:`card-sub`,children:t}),(0,Q.jsxs)(`div`,{style:{margin:`16px 0`},children:[n===void 0||n.status===`loading`?(0,Q.jsx)(`p`,{className:`faint text-label`,children:o(`common.loading`)}):n.status===`error`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`faint`,role:`alert`,children:o(n.reason===`auth`?`grokCoupon.loadFailedAuth`:`grokCoupon.loadFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,style:{marginTop:12},onClick:()=>{r.refresh(e)},children:o(`grokCoupon.retry`)})]}):b.length>0?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{style:{marginBottom:12},children:o(`grokCoupon.available`,{count:E})}),(0,Q.jsx)(`div`,{className:`credit-list`,children:b.map((e,t)=>(0,Q.jsx)(Wd,{coupon:e,index:t,isNext:t===0,locale:a,t:o},e.tokenId))}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,style:{marginTop:12,width:`100%`},onClick:S,disabled:d,children:o(`grokCoupon.useOne`)}),(0,Q.jsx)(`p`,{className:`card-sub text-caption`,style:{marginTop:8,textAlign:`center`},children:o(`grokCoupon.fifoNote`)})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`faint`,children:o(`grokCoupon.none`)}),(0,Q.jsx)(`p`,{className:`modal-desc`,children:o(`grokCoupon.desc`)})]}),g&&O(g)]})]})})]})}var Kd=2e4,qd=6e4,Jd=3,Yd={},Xd=[`five_hour`,`seven_day`,`seven_day_overage_included`],Zd=new Set([`unknown_outcome`,`journal_write_failed`,`in_flight`]);function Qd(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function $d(e){return e==null?null:typeof e==`string`?e:void 0}function ef(e){if(!Qd(e))return null;let{id:t,label:n,resetsTotal:r,resetsLeft:i,paused:a,usableNow:o,useRequiresLimit:s}=e,c=$d(e.startsAt),l=$d(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(Qd(e.percentUsed))for(let t of Xd){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:Xd.filter(t=>e.clears.includes(t))}}function tf(e){if(!Qd(e)||typeof e.eligible!=`boolean`||!Array.isArray(e.grants))return null;let t=[];for(let n of e.grants){let e=ef(n);if(!e)return null;t.push(e)}let n=null,r=e.pendingOperation;return Qd(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 nf(e){return e.eligible?e.grants.reduce((e,t)=>e+t.resetsLeft,0):0}function rf(e){if(!(!e.eligible||!e.journalAvailable))return e.grants.find(t=>!t.paused&&t.usableNow&&t.resetsLeft>0&&(!t.useRequiresLimit||e.atLimit))}function af(e){return Qd(e)&&Qd(e.error)&&typeof e.error.code==`string`&&e.error.code!==``?e.error.code:`failed`}function of({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>=Jd&&await new Promise(e=>a.waiting.push(e)),a.active+=1;let o=()=>s.current===r&&c.current.get(n)===i,u=T(Kd);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=Qd(i)&&(i.provider===t||t===`anthropic`&&i.provider===void 0)?tf(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=T(qd);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=af(await o.json().catch(()=>null));return Zd.has(e)?{kind:`unknown`,code:e}:{kind:`refused`,code:e}}let c=await o.json().catch(()=>null);return!Qd(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:Yd,refresh:p,spend:m}}function sf(){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 cf={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`},lf={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 uf({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)(le,{width:12}),`0`]});let r=e.status===`ready`?nf(e.snapshot):null,i=e.status===`ready`&&rf(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)(le,{width:12}),r===null?(0,Q.jsx)(De,{width:11}):r]})}var df={five_hour:`anthropicGrant.windowFiveHour`,seven_day:`anthropicGrant.windowWeekly`,seven_day_overage_included:`anthropicGrant.windowOverage`};function ff({grant:e,snapshot:t,isNext:n,locale:r,t:i}){let a=e.endsAt?pd(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)(le,{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:dd(e.startsAt,r)})}),e.endsAt&&a!==null&&(0,Q.jsx)(`span`,{className:a<=7?`credit-urgent`:``,children:i(`anthropicGrant.expires`,{date:fd(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 pf(e){return e.kind===`settled`?e.replayed&&e.code===`reset`?{tone:`ok`,key:`anthropicGrant.replayed`}:{tone:e.code===`reset`?`ok`:`warn`,key:cf[e.code]??`anthropicGrant.failed`,count:e.resetsLeft===null?`?`:String(e.resetsLeft)}:{tone:`warn`,key:lf[e.code]??`anthropicGrant.failed`}}var mf=new Set([`unknown_outcome_expired`,`operation_identity_mismatch`]);function hf({accountId:e,accountLabel:t,entry:n,controller:r,onClose:i}){let{locale:a,t:o}=D(),s=(0,Z.useRef)(null),c=(0,Z.useRef)(null),[l,u]=(0,Z.useState)(null),[d,f]=(0,Z.useState)(!1),[p,m]=(0,Z.useState)(!1),[h,g]=(0,Z.useState)(null),[_,v]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{let e=s.current;e&&!e.open&&e.showModal()},[]),(0,Z.useEffect)(()=>{l&&c.current?.focus()},[l]);let y=(0,Z.useCallback)(e=>{e.preventDefault(),i()},[i]),b=n?.status===`ready`?n.snapshot:null,x=b?.pendingOperation,S=h??(x?{grantId:x.grantId,operationId:x.operationId}:null),C=b?rf(b):void 0,w=()=>{if(!C||S)return;let e=sf();if(!e){v({tone:`warn`,key:`anthropicGrant.noOperationId`});return}v(null),u({grantId:C.id,operationId:e})},T=async t=>{if(d)return;let n=S!==null&&S.operationId===t.operationId;f(!0);let i=await r.spend(e,t);if(f(!1),u(null),i.kind===`unknown`||i.kind===`refused`&&n&&!mf.has(i.code)){g(t),v(i.kind===`refused`?pf(i):null);return}g(null),v(pf(i)),i.kind===`refused`&&r.refresh(e)},E=async()=>{p||(m(!0),await r.refresh(e),m(!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:o(e.key,{count:e.count??``})}),k=l&&b?b.grants.find(e=>e.id===l.grantId):void 0,A=b?nf(b):0;return(0,Q.jsxs)(`dialog`,{ref:s,className:`modal-overlay`,"aria-labelledby":`anthropic-grant-title`,onCancel:y,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":o(`common.close`),tabIndex:-1,onClick:i}),(0,Q.jsx)(`div`,{className:`modal-card`,onClick:e=>e.stopPropagation(),role:`document`,children:S?(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)(De,{width:22})}),(0,Q.jsx)(`h3`,{id:`anthropic-grant-title`,children:o(`anthropicGrant.title`)}),(0,Q.jsx)(`p`,{className:`pws-status-warn`,role:`alert`,children:o(`anthropicGrant.unknownOutcome`)}),_&&O(_)]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:i,children:o(`common.close`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>{E()},disabled:p||d,children:o(p?`anthropicGrant.checking`:`anthropicGrant.checkResult`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,"data-anthropic-grant-retry":!0,onClick:()=>{T(S)},disabled:d||p,children:o(d?`anthropicGrant.redeeming`:`anthropicGrant.retrySame`)})]})]}):l?(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)(De,{width:22})}),(0,Q.jsx)(`h3`,{id:`anthropic-grant-title`,children:o(`anthropicGrant.confirmTitle`)}),(0,Q.jsx)(`p`,{className:`modal-desc`,children:o(`anthropicGrant.confirmDesc`)}),k&&(0,Q.jsx)(`p`,{className:`faint text-label`,children:o(`anthropicGrant.confirmWhich`,{label:k.label||k.id})}),(0,Q.jsx)(`p`,{className:`faint text-label`,children:o(`anthropicGrant.irreversible`)})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>u(null),disabled:d,children:o(`common.cancel`)}),(0,Q.jsx)(`button`,{ref:c,type:`button`,className:`btn btn-primary`,"data-anthropic-grant-confirm":!0,onClick:()=>{T(l)},disabled:d,children:o(d?`anthropicGrant.redeeming`:`anthropicGrant.redeem`)})]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`h3`,{id:`anthropic-grant-title`,children:[(0,Q.jsx)(le,{width:16}),` `,o(`anthropicGrant.title`)]}),(0,Q.jsx)(`div`,{className:`card-sub`,children:t}),(0,Q.jsxs)(`div`,{style:{margin:`16px 0`},children:[n===void 0||n.status===`loading`?(0,Q.jsx)(`p`,{className:`faint text-label`,children:o(`common.loading`)}):n.status===`error`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`faint`,role:`alert`,children:o(n.reason===`auth`?`anthropicGrant.loadFailedAuth`:`anthropicGrant.loadFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,style:{marginTop:12},onClick:()=>{r.refresh(e)},children:o(`anthropicGrant.retry`)})]}):n.snapshot.eligible?n.snapshot.grants.length>0?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{style:{marginBottom:12},children:o(`anthropicGrant.available`,{count:String(A)})}),(0,Q.jsx)(`div`,{className:`credit-list`,children:n.snapshot.grants.map(e=>(0,Q.jsx)(ff,{grant:e,snapshot:n.snapshot,isNext:e.id===C?.id,locale:a,t:o},e.id))}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,"data-anthropic-grant-use":!0,style:{marginTop:12,width:`100%`},onClick:w,disabled:!C||d,children:o(`anthropicGrant.useOne`)}),(0,Q.jsx)(`p`,{className:`card-sub text-caption`,style:{marginTop:8,textAlign:`center`},children:o(`anthropicGrant.desc`)})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`faint`,children:o(`anthropicGrant.none`)}),(0,Q.jsx)(`p`,{className:`modal-desc`,children:o(`anthropicGrant.desc`)})]}):(0,Q.jsx)(`p`,{className:`faint`,children:o(`anthropicGrant.ineligible`)}),_&&O(_)]})]})})]})}var gf=2e4,_f=3e4,vf=3;function yf(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 bf(e){if(e&&typeof e==`object`){let t=e.error;if(t&&typeof t==`object`){let e=t.code;if(typeof e==`string`&&e!==``)return e}}return`redeem_failed`}function xf(e){if(e&&typeof e==`object`){let t=e.code;if(typeof t==`string`&&t!==``)return t}return null}function Sf(e){if(!e.validityEnd)return 1/0;let t=Date.parse(e.validityEnd);return Number.isNaN(t)?1/0:t}function Cf(e){return e.toSorted((e,t)=>Sf(e)-Sf(t))}function wf({apiBase:e,accountIds:t,enabled:n}){let[r,i]=(0,Z.useState)({}),[a,o]=(0,Z.useState)({}),s=(0,Z.useRef)(new Map),c=(0,Z.useRef)(new Map),l=(0,Z.useRef)(0),u=(0,Z.useRef)(new Map),d=(0,Z.useRef)({active:0,waiting:[]}),f=t.join(`\0`),p=(0,Z.useCallback)(async(t,n)=>{let r=(u.current.get(t)??0)+1;u.current.set(t,r);let a=d.current;a.active>=vf&&await new Promise(e=>a.waiting.push(e)),a.active+=1;let o=()=>l.current===n&&u.current.get(t)===r,s=T(gf);try{let n=await fetch(`${e}/api/grok/reset-coupons?accountId=${encodeURIComponent(t)}`,{signal:s.signal}),r=n.ok?yf(await n.json().catch(()=>null)):null;if(!o())return;i(e=>({...e,[t]:r?{status:`ready`,coupons:Cf(r)}:{status:`error`,reason:n.status===401?`auth`:`upstream`}}))}catch{if(!o())return;i(e=>({...e,[t]:{status:`error`,reason:`upstream`}}))}finally{s.clear(),--a.active,a.waiting.shift()?.()}},[e]);return(0,Z.useEffect)(()=>{if(!n||f===``)return;let e=++l.current;return Promise.resolve().then(()=>{for(let t of f.split(`\0`))p(t,e)}),()=>{l.current+=1}},[n,f,p]),{entries:r,uncertain:a,refresh:(0,Z.useCallback)(async e=>{i(t=>({...t,[e]:{status:`loading`}})),await p(e,l.current)},[p]),redeem:(0,Z.useCallback)(async(t,n)=>{let r=(e,n=`attempt_unresolved`)=>(s.current.set(t,e),o(n=>({...n,[t]:e})),{ok:!1,code:n,replayed:!1,operationId:e.operationId,uncertain:!0}),i=s.current.get(t)??c.current.get(t);if(i)return r(i);c.current.set(t,n);let a=()=>{c.current.get(t)===n&&c.current.delete(t),s.current.get(t)?.operationId===n.operationId&&s.current.delete(t),o(e=>{if(e[t]?.operationId!==n.operationId)return e;let r={...e};return delete r[t],r})},u=T(_f);try{let i=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:u.signal});if(!i.ok){let e=bf(await i.json().catch(()=>null));return[`attempt_unresolved`,`attempt_in_progress`,`attempt_reconcile_failed`,`operation_state_changed`,`redeem_failed`].includes(e)?r(n,e):(a(),{ok:!1,code:e,replayed:!1})}let o=await i.json().catch(()=>null),s=!!(o&&typeof o==`object`&&o.replayed===!0),c=xf(o);return c===null?r(n):(a(),await p(t,l.current),{ok:c===`redeemed`,code:c,replayed:s})}catch{return r(n,`aborted`)}finally{u.clear(),c.current.get(t)===n&&c.current.delete(t)}},[e,p])}}var Tf=new Set([`builder-id`,`google`,`github`]),Ef=new Set([`pending`,`done`,`failed`,`expired`,`cancelled`]);function Df(e){if(!e||typeof e!=`object`)return null;let t=e;return typeof t.flowId!=`string`||!t.flowId||!Tf.has(t.method)||!Ef.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 Of(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 kf(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 Af=new Map;function jf(e,t){let n=JSON.stringify([e,t]),r=Af.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(()=>{Af.get(n)===i&&Af.delete(n)});return Af.set(n,i),i}async function Mf(e,t,n){let r=JSON.stringify([e,t]),i=Af.get(r);return i?(await i,Mf(e,t,n)):n()}var Nf=new Map,Pf=new Map,Ff=new Map,If=(e,t)=>JSON.stringify([e,t]),Lf=e=>new Promise(t=>setTimeout(t,e)),Rf=65536;function zf(e){try{e.body?.cancel().catch(()=>{})}catch{}}function Bf(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){zf(n);return}if(n.status===404){zf(n),c({kind:`missing`});return}if(!n.ok||!n.body){zf(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>Rf){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=Df(d);c(f?{kind:`view`,view:f}:{kind:`retry`})}catch{c({kind:`retry`})}})(),{result:s,cancel:l}}async function Vf(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 Hf(e,t){let n=Ff.get(e)??new Set;return n.add(t),Ff.set(e,n),()=>{n.delete(t),n.size===0&&Ff.delete(e)}}function Uf(e,t,n){let r=If(e,t);if(Pf.has(r))return Pf.get(r);Pf.set(r,n);for(let t of Ff.get(e)??[])t(n);return n}function Wf(e,t,n,r=`status`){return n.flowId!==t||r===`cancel`&&n.state!==`failed`?null:n.state===`done`?Uf(e,t,`added`):n.state===`failed`?Uf(e,t,`failed`):n.state===`expired`||n.state===`cancelled`?Uf(e,t,`ended`):null}function Gf(e,t,n,r){let i=If(e,t),a=Nf.get(i);if(a)return a;let o=Pf.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??Bf(e,t,Math.min(45e3,r));n=void 0;let o=await Vf(a,r);if(Pf.has(i))return Pf.get(i);if(o.kind===`missing`)return Uf(e,t,`ended`);if(o.kind===`view`){let n=Wf(e,t,o.view);if(n)return n}let c=s-Date.now();if(c<=0)break;await Lf(Math.min(2e3,c))}return n?.cancel(),Uf(e,t,`ended`)})().finally(()=>{Nf.delete(i)});return Nf.set(i,c),c}var Kf=(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})}),qf=Symbol(`closed`),Jf=(e,t)=>new Promise(n=>{if(e.closed){n(qf);return}let r=!1,i=t=>{r||(r=!0,e.closedController.signal.removeEventListener(`abort`,a),n(t))},a=()=>i(qf);e.closedController.signal.addEventListener(`abort`,a,{once:!0}),t.then(t=>i(e.closed?qf:t),()=>i(qf))});function Yf(e,t,n=Kf){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&&Gf(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?Df(await r.json().catch(()=>null)):null;s&&Wf(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 Mf(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?Df(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?Df(await n.json().catch(()=>null)):null;i&&Wf(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=Bf(e,a);r.inFlight=c;let l=await Jf(r,c.result);if(l===qf)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 Xf({disabled:e,onCli:t,onMethod:n}){let r=i();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 Zf({apiBase:e,triggerRef:t,addAccount:n,busy:r,onCli:a,onClose:o,onSettled:s,pollDelay:c}){let l=i(),u=(0,Z.useId)(),d=er(!0,t),f=Yf(e,s,c),p=nl(),{state:m}=f,h=m.view,g=h?.verificationUriComplete??h?.verificationUri,_=Of(g),v=()=>{f.close(),o()};return(0,Q.jsxs)(`dialog`,{ref:d,className:`kiro-device-dialog`,"aria-modal":`true`,"aria-labelledby":u,onCancel:e=>{e.preventDefault(),v()},children:[(0,Q.jsx)(`h2`,{id:u,children:l(`kiroLogin.title`)}),m.phase===`idle`&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`muted`,children:l(n?`kiroLogin.addDescription`:`kiroLogin.loginDescription`)}),(0,Q.jsx)(Xf,{disabled:r,onCli:()=>{o(),a(n)},onMethod:e=>{f.start(e)}})]}),m.phase===`starting`&&(0,Q.jsx)(`p`,{role:`status`,"aria-live":`polite`,children:l(`kiroLogin.starting`)}),h&&(m.phase===`pending`||m.phase===`done`||m.phase===`failed`||m.phase===`expired`||m.phase===`ended`)&&(0,Q.jsxs)(Q.Fragment,{children:[h.userCode&&(0,Q.jsxs)(`div`,{className:`kiro-device-code`,children:[(0,Q.jsx)(`span`,{className:`kiro-device-code-value`,children:h.userCode}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>p.copy(h.userCode,h.flowId),children:p.outcomeFor(h.flowId)===`copied`?l(`kiroLogin.copied`):p.outcomeFor(h.flowId)===`unavailable`?l(`kiroLogin.copyUnavailable`):l(`kiroLogin.copyCode`)})]}),g&&(_?(0,Q.jsx)(`a`,{href:_,target:`_blank`,rel:`noopener noreferrer`,children:l(`kiroLogin.openVerification`)}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`kiro-device-destination`,children:g}),(0,Q.jsx)(`p`,{className:`notice-warn`,children:l(`kiroLogin.unexpectedHost`)})]})),h.warning===`duplicate_profile_arn`&&(0,Q.jsx)(`p`,{className:`notice-warn`,children:l(`kiroLogin.duplicate`)}),h.warning===`manual_review_required`&&(0,Q.jsx)(`p`,{className:`notice-warn`,children:l(`kiroLogin.manualReview`)})]}),(0,Q.jsxs)(`p`,{role:`status`,"aria-live":`polite`,children:[m.phase===`pending`&&l(`kiroLogin.pending`),m.phase===`done`&&l(`kiroLogin.done`),m.phase===`expired`&&l(`kiroLogin.expired`),m.phase===`ended`&&l(`kiroLogin.ended`),m.phase===`failed`&&l(m.error===`start`?`kiroLogin.startFailed`:`kiroLogin.failed`)]}),(0,Q.jsxs)(`div`,{className:`kiro-device-actions`,children:[(m.phase===`failed`||m.phase===`expired`||m.phase===`ended`)&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:f.reset,children:l(`kiroLogin.tryAgain`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:v,children:l(`common.cancel`)})]})]})}var Qf=262144,$f=[],ep=[];function tp(e){return!!e.needsReauth||Bc(e.health?.status)}function np({initialState:e,onUpdateProvider:t}){let n=i(),[r,a]=(0,Z.useState)(e),[o,s]=(0,Z.useState)(e),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(``);e!==o&&(s(e),a(e));let f=r===`mixed`,p=async()=>{if(!t||c)return;let e=r===!1;l(!0),d(``);try{let r=await t(`xai`,{xaiResponsesOptIn:e});if(!r.ok){d(r.error??n(`prov.updateFail`));return}a(r.xaiResponsesOptInState??e)}catch{d(n(`prov.networkError`))}finally{l(!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`),f&&(0,Q.jsxs)(`span`,{className:`pwi-auth-optin-mixed`,children:[` `,n(`pws.xaiChatOptInMixed`)]})]}),u&&(0,Q.jsx)(`span`,{className:`pwi-auth-optin-error`,role:`alert`,children:u})]}),(0,Q.jsx)(nn,{on:r===!1,mixed:f,onClick:()=>{p()},disabled:!t||c,label:n(`pws.xaiChatOptIn`)})]})}var rp=new Set([`totalCount`,`importedCount`,`updatedCount`,`failedCount`,`unsupportedCount`,`results`]),ip=new Set([`imported`,`updated`,`failed`,`unsupported`]),ap={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 op(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function sp(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function cp(e){if(!op(e)||Object.keys(e).some(e=>!rp.has(e)))return null;let{totalCount:t,importedCount:n,updatedCount:r,failedCount:i,unsupportedCount:a,results:o}=e;if(!sp(t)||!sp(n)||!sp(r)||!sp(i)||!sp(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(!op(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||!ip.has(n)||!ap[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 lp({item:e,apiBase:t,oauth:n,accounts:r=$f,keys:a=ep,accountLoadState:o=`ready`,switchingAccountId:s=null,pausingAccountId:c=null,busy:l=!1,loginHint:u,authHandlers:d,onCodexActiveNeedsReauthChange:f,codexController:p,onUpdateProvider:m}){let h=i(),[g,_]=(0,Z.useState)(!1),[v,y]=(0,Z.useState)(null),b=(0,Z.useRef)(null),x=(0,Z.useRef)(null),S=t=>{e.name===`kiro`?y({addAccount:t}):d?.onLogin(e.name,t)},[C,w]=(0,Z.useState)(``),[T,E]=(0,Z.useState)(!1),[D,O]=(0,Z.useState)(!1),[k,A]=(0,Z.useState)(`idle`),[j,M]=(0,Z.useState)(null),N=(0,Z.useRef)(null),[P,F]=(0,Z.useState)(``),[I,L]=(0,Z.useState)(!1),[R,z]=(0,Z.useState)(``),[B,V]=(0,Z.useState)(!0),H=JSON.stringify([t,e.name,r.find(e=>e.active)?.id,a.find(e=>e.active)?.id]),[U,ee]=(0,Z.useState)({identity:H,refreshing:!1,result:null}),W=U.identity===H&&U.refreshing,G=U.identity===H?U.result:null,te=(0,Z.useRef)(0);(0,Z.useEffect)(()=>(te.current+=1,()=>{te.current+=1}),[H]);let ne=d?.onRefreshQuota,K=Fs({...e,hasApiKey:e.hasApiKey||a.length>0}),re=K===`oauth-accounts`,q=K===`api-keys`,J=re&&e.name===`xai`&&r.length>0,ie=wf({apiBase:t,accountIds:(0,Z.useMemo)(()=>J?r.filter(e=>!tp(e)).map(e=>e.id):[],[J,r]),enabled:J}),[Y,X]=(0,Z.useState)(null),ae=jc(e.name)&&Mc(e.name,e),oe=re&&ae&&r.length>0,se=(0,Z.useMemo)(()=>oe?r.filter(e=>!tp(e)).map(e=>e.id):[],[oe,r]),ce=of({apiBase:t,provider:jc(e.name)?e.name:`anthropic`,accountIds:se,enabled:oe}),le=`${t}\0${e.name}`,[ue,de]=(0,Z.useState)(null),fe=ue?.scope===le?ue.account:null,pe=e=>{de(e?{scope:le,account:e}:null)},me=async()=>{if(!ne||W)return;let t=++te.current;ee({identity:H,refreshing:!0,result:null});try{let n=await ne(e.name);te.current===t&&ee({identity:H,refreshing:!1,result:{ok:n,text:h(n?`pws.quotaCheckCompleted`:`codexAuth.quotaRefreshFailed`)}})}catch{te.current===t&&ee({identity:H,refreshing:!1,result:{ok:!1,text:h(`codexAuth.quotaRefreshFailed`)}})}};if(K===`codex-accounts`)return(0,Q.jsxs)(`section`,{className:`pwi-section pwi-auth-section`,"aria-label":h(`pws.availableAccounts`),children:[(0,Q.jsx)(`h3`,{className:`pwi-section-title`,children:h(`pws.availableAccounts`)}),(0,Q.jsx)(`div`,{className:`pwi-auth-body`,children:(0,Q.jsx)(Pd,{apiBase:t,embedded:!0,controller:p,onActiveNeedsReauthChange:f})})]});if(!K||!d)return null;let he=u?.provider===e.name?u:null,ge=async()=>{let n=P.trim();if(!(!n||I)){L(!0),z(``);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(()=>({}));V(!1),z(h(`prov.pasteFail`,{error:e.error||r.statusText}));return}F(``),V(!0),z(h(`prov.pasteOk`))}catch{V(!1),z(h(`modal.networkError`))}finally{L(!1)}}},_e=r.length>0||n?.loggedIn===!0,ve=r.find(e=>e.active&&e.needsReauth),ye=!!ve,be=re?r:a,xe=!!ne&&!(be.length>0&&be.every(e=>e.quotaMode===`unsupported`)),Se=async()=>{let t=C.trim();if(t){E(!0);try{await d.onAddApiKey(e.name,t)&&(w(``),_(!1))}finally{E(!1)}}},Ce=async n=>{if(!(!n||D)){O(!0),A(`idle`),M(null);try{if(!n.name.toLowerCase().endsWith(`.json`)||n.size>Qf){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=cp(await i.json().catch(()=>null));if(!a){A(`failed`);return}M(a),A(`complete`);try{await d.onRetryAccounts?.(e.name)}catch{}}catch{A(`failed`)}finally{N.current&&(N.current.value=``),O(!1)}}};return(0,Q.jsxs)(`section`,{className:`pwi-section pwi-auth-section`,"aria-label":h(re?`pws.availableAccounts`:`pws.apiKeys`),children:[(0,Q.jsxs)(`div`,{className:`pwi-auth-head`,children:[(0,Q.jsx)(`h3`,{className:`pwi-section-title`,children:h(re?`pws.availableAccounts`:`pws.apiKeys`)}),(re&&_e||q)&&xe&&(0,Q.jsxs)(`div`,{className:`pwi-auth-head-actions`,children:[G&&(0,Q.jsx)(`span`,{role:`status`,className:G.ok?`pws-status-ok`:`pws-status-warn`,children:G.text}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:W||l||!!s,onClick:()=>{me()},children:[(0,Q.jsx)(Fe,{width:14,height:14,"aria-hidden":`true`}),` `,h(W?`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:m}),re&&(0,Q.jsxs)(Q.Fragment,{children:[ae&&(0,Q.jsx)(Rd,{apiBase:t,provider:jc(e.name)?e.name:`anthropic`,accountCount:r.length,onThresholdChange:t=>{d?.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:h(`pws.cockpitImportDescription`)}),(0,Q.jsx)(`label`,{className:`sr-only`,htmlFor:`cockpit-import-file`,children:h(`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:D,onChange:e=>{Ce(e.currentTarget.files?.[0])}})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:D,onClick:()=>N.current?.click(),children:h(D?`pws.cockpitImporting`:`pws.cockpitImportChooseFile`)}),(0,Q.jsxs)(`div`,{id:`cockpit-import-status`,role:`status`,"aria-live":`polite`,children:[k===`invalid`&&h(`pws.cockpitImportInvalid`),k===`failed`&&h(`pws.cockpitImportFailed`),k===`complete`&&j&&h(`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 ${ye?`pwi-auth-dot--warn`:_e?`pwi-auth-dot--ok`:`pwi-auth-dot--off`}`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`pwi-auth-status-text`,children:_e?r.length>0?h(`pws.loggedInTitle`):n?.email??h(`pws.loggedInTitle`):n?.error||h(`pws.notLoggedInTitle`)}),(0,Q.jsxs)(`span`,{className:`pwi-auth-actions`,children:[ve&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:l,onClick:()=>void d.onReauth(e.name,ve.id),children:h(`pws.reauthenticate`)}),_e?(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void d.onLogout(e.name),children:h(`prov.logout`)}):(0,Q.jsxs)(`button`,{ref:e.name===`kiro`?b:void 0,type:`button`,className:`btn btn-primary btn-sm`,disabled:l||e.name===`kiro`&&!!v,onClick:()=>S(!1),children:[l?(0,Q.jsx)(`span`,{className:`pwi-spin-inline`,"aria-hidden":`true`}):(0,Q.jsx)(we,{style:{width:13,height:13},"aria-hidden":`true`}),h(l?`prov.waitingBrowser`:`prov.login`)]})]})]}),!l&&(0,Q.jsx)(zd,{}),l&&he&&(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:h(`prov.waitingBrowser`)}),(0,Q.jsx)(al,{hint:{url:he.url,deviceCode:he.deviceCode,instructions:he.instructions,browserLaunch:he.browserLaunch},paste:{value:P,busy:I,message:R,ok:B,onChange:F,onSubmit:()=>{ge()}}}),d.onCancelLogin&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void d.onCancelLogin?.(e.name),children:h(`common.cancel`)})]})]}),o===`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`}),h(`pws.accountsLoading`)]}),o===`error`&&(0,Q.jsxs)(`div`,{className:`pwi-auth-state pwi-auth-state--error`,role:`alert`,children:[(0,Q.jsx)(`span`,{children:h(`pws.accountsLoadFailed`)}),d.onRetryAccounts&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void d.onRetryAccounts?.(e.name),children:h(`pws.retryAccounts`)})]}),r.length>0&&(0,Q.jsx)(`ul`,{className:`pwi-auth-list`,children:r.map(t=>{let n=Is(r,t,h),i=s===t.id,a=c===t.id,o=t.health?.status,u=tp(t),f=Hc(o),p=Pc(t.id),m=Gc(h,t.health),g=Kc(h,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&&!u&&!f&&!s&&!c&&d.onSwitchAccount(e.name,t)},"aria-current":t.active?`true`:void 0,"aria-label":`${n}${t.active?` — ${h(`pws.accountCurrent`)}`:``}`,disabled:!!(t.paused||u||f||s||c),children:[(0,Q.jsx)(`span`,{className:`pwi-auth-dot ${u?`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.jsx)(`span`,{className:`pwi-auth-row-label`,children:n}),(0,Q.jsx)(`span`,{className:`pwi-auth-row-secondary`,children:[t.email,`${h(`prov.accountId`)}: ${p}`].filter(Boolean).join(` · `)}),g&&(0,Q.jsx)(`span`,{className:`pwi-auth-row-secondary faint`,children:g}),f&&(0,Q.jsx)(`span`,{className:`pwi-auth-row-secondary faint`,children:h(`pws.healthCooldownHint`)}),t.paused&&(0,Q.jsx)(`span`,{className:`pwi-auth-row-secondary faint`,children:h(`pws.accountPausedHint`)})]}),m&&(0,Q.jsx)(`span`,{className:zc(o),children:m}),u&&!m&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:h(`pws.reauth`)}),kf(t,e.name)&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:h(kf(t,e.name))}),t.paused&&(0,Q.jsx)(`span`,{className:`badge badge-muted`,children:h(`codexAuth.paused`)}),t.active&&!t.paused&&(0,Q.jsx)(`span`,{className:`badge badge-primary`,children:h(`prov.accountActive`)}),i&&(0,Q.jsx)(`span`,{className:`badge badge-muted`,children:h(`pws.accountSwitching`)})]}),typeof t.paused==`boolean`&&d.onPauseAccount&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":`${h(t.paused?`codexAuth.resume`:`codexAuth.pause`)} — ${n}`,title:t.paused?h(`pws.accountPausedHint`):void 0,"aria-busy":a,disabled:l||!!s||!!c,onClick:()=>void d.onPauseAccount(e.name,t,!t.paused),children:h(t.paused?`codexAuth.resume`:`codexAuth.pause`)}),u&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:l||!!s||!!c,onClick:()=>void d.onReauth(e.name,t.id),children:h(`pws.reauthenticate`)}),J&&!u&&(0,Q.jsx)(Ud,{entry:ie.entries[t.id],t:h,onClick:()=>X(t)}),oe&&!u&&(0,Q.jsx)(uf,{entry:ce.entries[t.id],t:h,onClick:()=>pe(t)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void d.onEditAlias(e.name,`oauth`,t.id,t.alias),children:h(`prov.editAlias`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm pwi-auth-row-remove`,"aria-label":`${h(`common.remove`)} — ${n}`,title:`${h(`common.remove`)} — ${n}`,disabled:!!s||!!c,onClick:()=>void d.onRemoveAccount(e.name,t),children:(0,Q.jsx)(ot,{style:{width:13,height:13},"aria-hidden":`true`})})]}),(0,Q.jsxs)(`div`,{className:`pwi-auth-acct-quota`,children:[ae&&t.autoSwitchThresholdOverride!==void 0&&t.autoSwitchThreshold!==void 0&&d.onAccountThreshold&&(0,Q.jsx)(Lc,{accountLabel:n,inputId:`anthropic-threshold-${t.id}`,globalThreshold:t.autoSwitchThreshold,override:t.autoSwitchThresholdOverride,hintText:h(`pws.anthropicAccountThresholdHint`),disabled:l||!!s||!!c,onChange:n=>d.onAccountThreshold(e.name,t,n)}),(0,Q.jsx)(Ls,{quotaMode:t.quotaMode,quota:t.quota,quotaUnavailable:t.quotaUnavailable,quotaPending:t.quotaPending,quotaFailure:t.quotaFailure})]})]},t.id)})}),Y&&(0,Q.jsx)(Gd,{accountId:Y.id,accountLabel:Is(r,Y,h),entry:ie.entries[Y.id],controller:ie,onClose:()=>X(null)}),fe&&(0,Q.jsx)(hf,{accountId:fe.id,accountLabel:Is(r,fe,h),entry:ce.entries[fe.id],controller:ce,onClose:()=>pe(null)},`${t}:${e.name}:${fe.id}`),o===`ready`&&_e&&r.length===0&&(0,Q.jsx)(`div`,{className:`pwi-auth-state pwi-auth-state--empty`,children:h(`pws.noAccounts`)}),_e&&(0,Q.jsxs)(`div`,{className:`pwi-auth-actions`,children:[(0,Q.jsx)(`button`,{ref:e.name===`kiro`?x:void 0,type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>S(!0),disabled:l||!!s||e.name===`kiro`&&!!v,children:h(`pws.addAccount`)}),xe&&(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:W||l||!!s,onClick:()=>{me()},children:[(0,Q.jsx)(Fe,{width:14,height:14,"aria-hidden":`true`}),` `,h(W?`codexAuth.refreshingQuota`:`codexAuth.refreshQuota`)]})]})]}),e.name===`kiro`&&v&&(0,Q.jsx)(Zf,{apiBase:t,triggerRef:v.addAccount?x:b,addAccount:v.addAccount,busy:l,onClose:()=>y(null),onCli:t=>{d.onLogin(e.name,t)},onSettled:d.onNativeLoginSettled}),q&&(0,Q.jsxs)(Q.Fragment,{children:[a.length>0&&(0,Q.jsx)(`ul`,{className:`pwi-auth-list`,children:a.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 d.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,` · `,h(`prov.accountId`),`: `,t.id]})]}),t.active&&(0,Q.jsx)(`span`,{className:`badge badge-primary`,children:h(`prov.accountActive`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void d.onEditAlias(e.name,`api-key`,t.id,t.label),children:h(`prov.editAlias`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm pwi-auth-row-remove`,"aria-label":`${h(`common.remove`)} — ${t.label??t.masked}`,title:`${h(`common.remove`)} — ${t.label??t.masked}`,onClick:()=>void d.onRemoveApiKey(e.name,t),children:(0,Q.jsx)(ot,{style:{width:13,height:13},"aria-hidden":`true`})})]}),(0,Q.jsx)(`div`,{className:`pwi-auth-acct-quota`,children:(0,Q.jsx)(Ls,{quotaMode:t.quotaMode,quota:t.quota,quotaUnavailable:t.quotaUnavailable,quotaPending:t.quotaPending,quotaFailure:t.quotaFailure})})]},t.id))}),g?(0,Q.jsxs)(`div`,{className:`pwi-auth-add-key`,children:[(0,Q.jsx)(`input`,{className:`input`,type:`password`,value:C,onChange:e=>w(e.target.value),placeholder:h(`modal.apiKeyPlaceholder`),autoComplete:`off`,disabled:T}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:()=>void Se(),disabled:T||!C.trim(),children:h(T?`pws.saving`:`pws.addKey`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{_(!1),w(``)},children:h(`common.cancel`)})]}):(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,style:{marginTop:8},onClick:()=>_(!0),children:h(`pws.addKey`)})]})]})]})}function up(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 dp(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 fp(e,t,n){let r=e?.find(e=>e.id===t);return r?.baseUrl?r.baseUrl.trim():n.trim()}var pp=`https://chatgpt.com/backend-api/codex`;function mp(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 hp(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 gp(e){return e?e.adapter!==`openai-responses`||e.authMode!==`forward`||typeof e.baseUrl!=`string`||mp(e.baseUrl)!==pp?`invalid`:e.disabled===!0?`disabled`:`ready`:`absent`}function _p(e){return e.id===`openai`}function vp(e){return e.id===`openai`?e.codexAccountMode===`direct`?`prov.openaiDirectDesc`:`prov.openaiPoolDesc`:null}function yp(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),t}function bp(e,t){return _p(e)?xp(e):{name:t.name.trim(),provider:yp(t)}}function xp(e){if(!e.provider)throw Error(`Missing canonical provider seed for ${e.id}`);return{name:e.id,provider:structuredClone(e.provider)}}var Sp=class extends Error{i18nKey;constructor(e){super(e),this.name=`OpenAiEnableError`,this.i18nKey=e}};async function Cp(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 Sp(`codexAuth.enableOpenaiFailed`)}let r=await n(`${e}/api/provider-presets`);if(!r.ok)throw new Sp(`codexAuth.openaiPresetLoadFailed`);let i=(await r.json()).providers?.find(e=>e.id===`openai`);if(!i?.provider)throw new Sp(`codexAuth.openaiPresetUnavailable`);if(!(await n(`${e}/api/providers`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(xp(i))})).ok)throw new Sp(`codexAuth.enableOpenaiFailed`)}var wp=[`responses`,`chat`,`messages`],Tp=[`responses`,`chat`,`messages`,`other`],Ep=[`responses`,`chat`,`messages`,`other`,`ir`,`responses-internal`],Dp=[`native`,`translated`,`legacy-bridge`,`blocked`],Op=[`preserved`,`degraded`,`unknown`],kp=[`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`],Ap=new Set(wp),jp=new Set(Tp),Mp=new Set(Ep),Np=new Set(Dp),Pp=new Set(Op),Fp=new Set(kp);function Ip(e){return typeof e==`string`&&Ap.has(e)}function Lp(e){return typeof e==`string`&&jp.has(e)}function Rp(e){return typeof e==`string`&&Mp.has(e)}function zp(e){return typeof e==`string`&&Np.has(e)}function Bp(e){return typeof e==`string`&&Pp.has(e)}function Vp(e){return typeof e==`string`&&Fp.has(e)}function Hp(e){switch(e){case`openai-responses`:return`responses`;case`openai-chat`:return`chat`;case`anthropic-messages`:return`messages`;default:return}}function Up(e){switch(e){case`openai-responses`:return`responses`;case`openai-chat`:return`chat`;case`anthropic`:return`messages`;default:return`other`}}var Wp=[`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`],Gp=new Set(Wp);function Kp(e){return typeof e==`string`&&Gp.has(e)}var qp={"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`]},Jp={pathHops:6,reasonCodes:8,featureEffects:24,candidates:16,attempts:16,identifierLength:200},Yp=[`hard-pin`,`operator`,`registry`,`provider-default`];function Xp(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}var Zp=new Set([`passthrough`,`translated`,`degraded`,`unsupported`]);function Qp(e,t,n){return Array.isArray(e)&&e.length<=t&&e.every(n)}function $p(e){return typeof e==`string`&&e.length>0&&e.length<=Jp.identifierLength&&!/[\u0000-\u001f\u007f]/.test(e)}function em(e){return Xp(e)&&Kp(e.feature)&&typeof e.disposition==`string`&&Zp.has(e.disposition)}function tm(e){return Qp(e,Jp.pathHops,Rp)&&e.length>0}function nm(e){return Qp(e,Jp.reasonCodes,Vp)}function rm(e){return Qp(e,Jp.featureEffects,Kp)}function im(e){return Xp(e)&&$p(e.provider)&&$p(e.model)&&$p(e.adapter)&&Lp(e.upstream)&&zp(e.mode)&&(e.mode===`blocked`?Array.isArray(e.requestPath):tm(e.requestPath))&&(e.mode===`blocked`?Array.isArray(e.responsePath):tm(e.responsePath))&&Bp(e.fidelity)&&nm(e.reasonCodes)&&Qp(e.featureEffects,Jp.featureEffects,em)&&rm(e.unknownFeatures)&&typeof e.eligible==`boolean`}function am(e){return Xp(e)&&e.schemaVersion===1&&(e.basis===`preview`||e.basis===`dispatch`)&&typeof e.contractVersion==`string`&&typeof e.policyRevision==`string`&&Ip(e.inbound)&&$p(e.requestedModel)&&(e.routeKind===`direct`||e.routeKind===`combo`||e.routeKind===`policy`||e.routeKind===`unknown`)&&zp(e.mode)&&nm(e.reasonCodes)&&Qp(e.candidates,Jp.candidates,im)&&rm(e.guaranteedFeatures)&&rm(e.partialFeatures)}function om(e){return Xp(e)&&typeof e.ordinal==`number`&&Number.isInteger(e.ordinal)&&e.ordinal>0&&Lp(e.upstream)&&zp(e.mode)&&e.mode!==`blocked`&&tm(e.requestPath)&&(e.responsePath===void 0||tm(e.responsePath))}function sm(e){return!(!Xp(e)||e.v!==1||!Ip(e.inbound)||!zp(e.mode)||e.upstream!==void 0&&!Lp(e.upstream)||!(e.mode===`blocked`?Array.isArray(e.requestPath)&&e.requestPath.length===0&&Array.isArray(e.responsePath)&&e.responsePath.length===0:tm(e.requestPath)&&tm(e.responsePath))||!nm(e.reasonCodes)||typeof e.contractVersion!=`string`||e.featureEffects!==void 0&&!Qp(e.featureEffects,Jp.featureEffects,em)||e.attempts!==void 0&&!Qp(e.attempts,Jp.attempts,om)||e.planMismatch!==void 0&&e.planMismatch!==!0)}function cm(e){if(sm(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 lm=new Set(Yp);function um(e){return typeof e==`string`&&lm.has(e)}function dm(e){return Xp(e)&&$p(e.model)&&$p(e.adapter)&&um(e.source)}function fm(e){return Xp(e)&&$p(e.name)&&$p(e.adapter)&&um(e.adapterSource)&&(e.authMode===null||$p(e.authMode))&&Lp(e.upstream)&&Qp(e.modelOverrides,64,dm)&&(e.modelOverridesTruncated===void 0||e.modelOverridesTruncated===!0)}var pm=32,mm=new Map;function hm(e,t,n){return JSON.stringify([e,t.model,t.inbound,[...new Set(t.features)].sort(),n])}function gm(e,t){for(mm.delete(e),mm.set(e,t);mm.size>pm;){let e=mm.keys().next().value;if(e===void 0)break;mm.delete(e)}}function _m(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function vm(e){if(!_m(e)||e.schemaVersion!==1||typeof e.policyRevision!=`string`||!Array.isArray(e.features)||!e.features.every(Kp)||!_m(e.surfaces))return null;let t={};for(let[n,r]of Object.entries(e.surfaces)){if(!Ip(n)||!_m(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 ym(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=vm(await n.json());if(!r)throw Error(`invalid protocol info`);return r}async function bm(e,t,n){try{let r=await ym(e,n);if(!r)return{kind:`unavailable`};let i=hm(e,t,r.policyRevision),a=mm.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 am(s)?(gm(hm(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 xm(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=_m(i)&&_m(i.error)&&typeof i.error.code==`string`?i.error.code:void 0;return e?{kind:`error`,code:e}:{kind:`error`}}let a=vm(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 Sm(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!_m(i)||i.provider===void 0?{kind:`unavailable`}:!fm(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 Cm={native:`logs.protocol.mode.native`,translated:`logs.protocol.mode.translated`,"legacy-bridge":`logs.protocol.mode.legacyBridge`,blocked:`logs.protocol.mode.blocked`},wm={passthrough:`logs.protocol.disposition.passthrough`,translated:`logs.protocol.disposition.translated`,degraded:`logs.protocol.disposition.degraded`,unsupported:`logs.protocol.disposition.unsupported`},Tm={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`},Em=` → `;function Dm(e,t){return t(Tm[e])}function Om(e,t){return e.map(e=>Dm(e,t)).join(Em)}function km(e,t){let n=Dm(e.inbound,t);if(e.mode===`blocked`)return n;let r=e.upstream??e.requestPath[e.requestPath.length-1];return r?`${n}${Em}${Dm(r,t)}`:n}var Am={"hard-pin":`pws.protocol.source.hardPin`,operator:`pws.protocol.source.operator`,registry:`pws.protocol.source.registry`,"provider-default":`pws.protocol.source.providerDefault`};function jm({adapter:e}){let t=i();return(0,Q.jsxs)(`span`,{className:`ppp-wire`,children:[(0,Q.jsx)(`code`,{children:e}),(0,Q.jsx)(`span`,{className:`muted`,children:Dm(Up(e),t)})]})}function Mm({apiBase:e,providerName:t,savedAdapter:n,draftAdapter:r,refreshKey:a}){let o=i(),s=JSON.stringify([e??``,t,n,a??``]),[c,l]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{if(e===void 0)return;let n=new AbortController;return Sm(e,t,n.signal).then(e=>{n.signal.aborted||l(e.kind===`summary`?{key:s,kind:`summary`,summary:e.summary}:{key:s,kind:e.kind===`unavailable`?`hidden`:`error`})}).catch(()=>{}),()=>n.abort()},[e,t,s]);let u=c?.key===s?c:null;if(e===void 0||!u||u.kind===`hidden`)return null;let d=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:o(`pws.protocol.title`)}),(0,Q.jsx)(`p`,{className:`pwi-settings-hint`,children:o(`pws.protocol.note`)}),u.kind===`error`?(0,Q.jsx)(`p`,{className:`muted small`,role:`status`,children:o(`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:o(`pws.protocol.adapterLabel`)}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(jm,{adapter:u.summary.adapter})})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:o(`pws.protocol.source`)}),(0,Q.jsx)(`dd`,{"data-adapter-source":u.summary.adapterSource,children:o(Am[u.summary.adapterSource])})]}),u.summary.authMode&&(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:o(`pws.authMode`)}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(`code`,{children:u.summary.authMode})})]})]}),d&&(0,Q.jsx)(`p`,{className:`ppp-pending`,role:`status`,children:o(`pws.protocol.pending`,{adapter:d})}),(0,Q.jsx)(`h4`,{children:o(`pws.protocol.overrides`)}),u.summary.modelOverrides.length===0?(0,Q.jsx)(`p`,{className:`muted small`,children:o(`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:o(`pws.protocol.col.model`)}),(0,Q.jsx)(`th`,{scope:`col`,children:o(`pws.protocol.col.wire`)}),(0,Q.jsx)(`th`,{scope:`col`,children:o(`pws.protocol.col.source`)})]})}),(0,Q.jsx)(`tbody`,{children:u.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)(jm,{adapter:e.adapter})}),(0,Q.jsx)(`td`,{"data-adapter-source":e.source,children:o(Am[e.source])})]},e.model))})]}),u.summary.modelOverridesTruncated&&(0,Q.jsx)(`p`,{className:`muted small`,children:o(`pws.protocol.overridesTruncated`,{count:u.summary.modelOverrides.length})})]})]})}var Nm=[`openai-responses`,`openai-chat`,`anthropic`,`google`,`azure-openai`,`cursor`],Pm=[];function Fm(e){return e===`http1.1`||e===`h1`?`http1.1`:`http2`}function Im(e){return e===void 0?``:String(e)}function Lm(e){if(!e.trim())return;let t=Number(e);return Number.isFinite(t)&&t>=1/60?t:void 0}function Rm(e){if(!e.trim())return;let t=Number(e);return Number.isSafeInteger(t)&&t>0?t:void 0}function zm(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,t])}function Bm({item:e,availableModels:t=Pm,apiBase:n,onUpdateProvider:r,onDirtyChange:a,onRegisterSave:o}){let s=i(),c=String(e.authMode??(e.keyOptional?`local`:`key`)),l=me(e.name,e),u=l?e.liveModels!==!1:!1,d=Fm(e.upstreamHttpVersion),[f,p]=(0,Z.useState)(e.adapter),[m,h]=(0,Z.useState)(e.baseUrl),[g,_]=(0,Z.useState)(e.defaultModel??``),[v,y]=(0,Z.useState)(c),[b,x]=(0,Z.useState)(e.apiKeyTransport??`x-api-key`),[S,C]=(0,Z.useState)(e.note??``),[w,E]=(0,Z.useState)(e.allowPrivateNetwork??!1),[D,O]=(0,Z.useState)(u),[k,A]=(0,Z.useState)(d),[j,M]=(0,Z.useState)(!1),[N,P]=(0,Z.useState)(null),[F,L]=(0,Z.useState)(e.codexAccountMode??`pool`),[R,z]=(0,Z.useState)(!1),[B,V]=(0,Z.useState)(null),[H,U]=(0,Z.useState)(),[ee,W]=(0,Z.useState)(n?`loading`:`idle`),[G,te]=(0,Z.useState)(()=>`custom`),[ne,K]=(0,Z.useState)(e.requestPacing?.enabled===!0),[re,q]=(0,Z.useState)(()=>Im(e.requestPacing?.requestsPerMinute)),[J,ie]=(0,Z.useState)(()=>Im(e.requestPacing?.minIntervalMs)),[Y,X]=(0,Z.useState)(()=>Im(e.requestPacing?.maxConcurrentRequests)),[ae,oe]=(0,Z.useState)(()=>({...e.requestPacing?.models??{}})),[se,ce]=(0,Z.useState)(``),[le,ue]=(0,Z.useState)(``),[de,fe]=(0,Z.useState)(``),[pe,he]=(0,Z.useState)(``),[ge,_e]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{p(e.adapter),h(e.baseUrl),_(e.defaultModel??``),y(String(e.authMode??(e.keyOptional?`local`:`key`))),x(e.apiKeyTransport??`x-api-key`),C(e.note??``),E(e.allowPrivateNetwork??!1),O(u),A(d),K(e.requestPacing?.enabled===!0),q(Im(e.requestPacing?.requestsPerMinute)),ie(Im(e.requestPacing?.minIntervalMs)),X(Im(e.requestPacing?.maxConcurrentRequests)),oe({...e.requestPacing?.models??{}}),P(null),V(null),queueMicrotask(()=>te(dp(H,e.baseUrl)))},[e.adapter,e.baseUrl,e.defaultModel,e.authMode,e.apiKeyTransport,e.keyOptional,e.note,e.allowPrivateNetwork,u,d,e.requestPacing,H]),(0,Z.useEffect)(()=>{L(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=>pn(e)).then(e=>{if(t)return;if(!e){U(void 0),W(`error`);return}let n=(e.providers??[]).find(e=>e.id===r)?.baseUrlChoices;U(n),W(`ready`),te(dp(n,i))}).catch(()=>{t||(U(void 0),W(`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=T(1e4);fetch(`${n}/api/provider-request-pacing?name=${encodeURIComponent(e.name)}`,{signal:i.signal}).then(e=>pn(e)).then(e=>{t&&e&&_e(e)}).catch(()=>void 0).finally(()=>{i.clear(),r=!1})};i();let a=ra(i,2e3);return()=>{t=!1,a()}},[n,e.name]);let ve=(0,Z.useMemo)(()=>({enabled:ne,...Lm(re)===void 0?{}:{requestsPerMinute:Lm(re)},...Rm(J)===void 0?{}:{minIntervalMs:Rm(J)},...Rm(Y)===void 0?{}:{maxConcurrentRequests:Rm(Y)},...Object.keys(ae).length>0?{models:ae}:{}}),[Y,J,ne,ae,re]),be=f.trim()!==e.adapter||m.trim()!==e.baseUrl||g.trim()!==(e.defaultModel??``)||v!==String(e.authMode??(e.keyOptional?`local`:`key`))||f.trim()===`anthropic`&&v===`key`&&b!==(e.apiKeyTransport??`x-api-key`)||S.trim()!==(e.note??``)||w!==(e.allowPrivateNetwork??!1)||D!==u||f.trim()===`cursor`&&k!==d,xe=zm(ve)!==zm(e.requestPacing),Se=be||xe;(0,Z.useEffect)(()=>(a?.(Se),()=>a?.(!1)),[Se,a]);let Ce=(0,Z.useMemo)(()=>{let n=new Set(t);return g.trim()&&n.add(g.trim()),e.defaultModel&&n.add(e.defaultModel),[...n].sort((e,t)=>e.localeCompare(t))},[t,g,e.defaultModel]),Te=(0,Z.useMemo)(()=>{let e=[...Nm];return f&&!e.includes(f)&&e.unshift(f),e},[f]),Ee=ye(e.name),De=ee===`ready`&&!!(H&&H.length>0),Oe=f.trim()===`anthropic`&&v===`key`,ke=e.name===`openai`?gp(e):`invalid`,Ae=ke===`ready`||ke===`disabled`,je=Ee&&ee!==`error`,Me=async()=>{if(!r)return P({ok:!1,text:s(`pws.updatesUnavailable`)}),!1;if(R)return!1;let t=De?fp(H,G,m):m.trim();if(!f.trim()||!t)return P({ok:!1,text:s(`pws.adapterBaseRequired`)}),!1;M(!0),P(null);try{if(Y.trim()!==``&&Rm(Y)===void 0)return P({ok:!1,text:s(`pws.pacingCapInvalid`)}),!1;if(ne&&!ve.requestsPerMinute&&!ve.minIntervalMs&&!ve.maxConcurrentRequests&&!ve.models)return P({ok:!1,text:s(`pws.pacingRuleRequired`)}),!1;let n=xe&&!be,i=n?{requestPacing:ve}:{adapter:f.trim(),baseUrl:t,defaultModel:g.trim(),authMode:v,note:S.trim(),allowPrivateNetwork:w,...xe?{requestPacing:ve}:{}};n||(l&&D!==(e.liveModels!==!1)&&(i.liveModels=D),f.trim()===`cursor`&&k!==d&&(i.upstreamHttpVersion=k===`http1.1`?`http1.1`:null),Oe?i.apiKeyTransport=b:e.apiKeyTransport!==void 0&&(i.apiKeyTransport=``));let a=await r(e.name,i);return P(a.ok?{ok:!0,text:s(`pws.settingsSaved`)}:{ok:!1,text:a.error||s(`prov.saveFailed`)}),a.ok}finally{M(!1)}},Ne=(0,Z.useRef)(Me);(0,Z.useEffect)(()=>{Ne.current=Me}),(0,Z.useEffect)(()=>{if(o)return o(()=>Ne.current()),()=>o(null)},[o]);let Pe=async e=>{if(!(R||j||e===F)){if(!r){V({ok:!1,text:s(`pws.updatesUnavailable`)});return}z(!0),V(null);try{let t=await r(`openai`,{codexAccountMode:e});t.ok?(L(e),V({ok:!0,text:s(`pws.accountModeSaved`)})):V({ok:!1,text:t.error||s(`pws.accountModeFailed`)})}catch{V({ok:!1,text:s(`pws.accountModeFailed`)})}finally{z(!1)}}},Fe=async(e,t)=>{if(await Qi({message:s(`pws.accountModeConfirm`)})){await Pe(e);return}t.value=F},Ie=()=>{p(e.adapter),h(e.baseUrl),_(e.defaultModel??``),y(c),x(e.apiKeyTransport??`x-api-key`),C(e.note??``),E(e.allowPrivateNetwork??!1),O(u),A(d),P(null),K(e.requestPacing?.enabled===!0),q(Im(e.requestPacing?.requestsPerMinute)),ie(Im(e.requestPacing?.minIntervalMs)),X(Im(e.requestPacing?.maxConcurrentRequests)),oe({...e.requestPacing?.models??{}}),te(dp(H,e.baseUrl))},Le=(e,t)=>{switch(e){case`token-plan`:return s(`modal.endpoint.tokenPlan`);case`payg`:return s(`modal.endpoint.payAsYouGo`);case`custom`:return s(`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)(we,{style:{width:12,height:12}}),` `,s(`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:s(`modal.adapter`)}),Ee?(0,Q.jsx)(`input`,{className:`input`,value:f,readOnly:!0,disabled:!0}):(0,Q.jsx)(`select`,{className:`input`,value:f,onChange:e=>p(e.target.value),children:Te.map(e=>(0,Q.jsx)(`option`,{value:e,children:e},e))})]}),(0,Q.jsx)(Mm,{apiBase:n,providerName:e.name,savedAdapter:e.adapter,draftAdapter:f.trim(),refreshKey:`${e.baseUrl}|${e.authMode??``}`}),De?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:s(`modal.endpoint`)}),(0,Q.jsx)(`select`,{className:`input`,value:G,onChange:e=>{let t=e.target.value;te(t),h(up(H,t,m))},children:H.map(e=>(0,Q.jsx)(`option`,{value:e.id,children:Le(e.id,e.label)},e.id))})]}),G===`custom`&&(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:s(`modal.baseUrl`)}),(0,Q.jsx)(`input`,{className:`input`,value:m,onChange:e=>h(e.target.value),placeholder:s(`modal.baseUrlPlaceholder`)})]})]}):(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:s(`modal.baseUrl`)}),(0,Q.jsx)(`input`,{className:`input`,value:m,onChange:e=>h(e.target.value),readOnly:je,disabled:je})]}),f.trim()===`cursor`&&(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:s(`pws.cursorTransport`)}),(0,Q.jsxs)(`select`,{className:`input`,value:k,onChange:e=>A(e.target.value),children:[(0,Q.jsx)(`option`,{value:`http2`,children:s(`pws.cursorTransportHttp2`)}),(0,Q.jsx)(`option`,{value:`http1.1`,children:s(`pws.cursorTransportHttp1`)})]}),(0,Q.jsx)(`span`,{className:`pwi-settings-hint`,children:s(`pws.cursorTransportDesc`)})]}),(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:s(`pws.cell.defaultModel`)}),Ce.length>0?(0,Q.jsxs)(`select`,{className:`input`,value:g,onChange:e=>_(e.target.value),children:[(0,Q.jsx)(`option`,{value:``,children:s(`pws.defaultModelNone`)}),Ce.map(e=>(0,Q.jsx)(`option`,{value:e,children:e},e))]}):(0,Q.jsx)(`input`,{className:`input`,value:g,onChange:e=>_(e.target.value),placeholder:s(`pws.optionalPlaceholder`)})]}),(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:s(`pws.authMode`)}),Ee?(0,Q.jsx)(`input`,{className:`input`,value:I(e,s),readOnly:!0,disabled:!0}):(0,Q.jsxs)(`select`,{className:`input`,value:v,onChange:e=>y(e.target.value),children:[(0,Q.jsx)(`option`,{value:`key`,children:s(`modal.badge.apiKey`)}),(0,Q.jsx)(`option`,{value:`forward`,children:s(`pws.auth.chatgptPassthrough`)}),(0,Q.jsx)(`option`,{value:`oauth`,children:s(`modal.badge.oauth`)}),(0,Q.jsx)(`option`,{value:`local`,children:s(`modal.badge.local`)})]})]}),Ae&&(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:s(`codexAuth.accountModeTitle`)}),(0,Q.jsxs)(`select`,{className:`input`,value:F,disabled:R||j,onChange:e=>{let t=e.target.value;t!==F&&Fe(t,e.currentTarget)},children:[(0,Q.jsx)(`option`,{value:`pool`,children:s(`codexAuth.accountModePool`)}),(0,Q.jsx)(`option`,{value:`direct`,children:s(`codexAuth.accountModeDirect`)})]}),(0,Q.jsx)(`span`,{className:`pwi-settings-hint`,children:s(F===`direct`?`codexAuth.accountModeDirectDesc`:`codexAuth.accountModePoolDesc`)}),R&&(0,Q.jsx)(`span`,{className:`muted text-label`,children:s(`pws.accountSwitching`)}),B&&(0,Q.jsx)(`span`,{role:B.ok?`status`:`alert`,className:B.ok?`pwi-settings-mode-msg pwi-settings-mode-msg--ok`:`pwi-settings-mode-msg pwi-settings-mode-msg--err`,children:B.text})]}),Oe&&(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:s(`modal.apiKeyTransport`)}),(0,Q.jsxs)(`select`,{className:`input`,value:b,onChange:e=>x(e.target.value),children:[(0,Q.jsx)(`option`,{value:`x-api-key`,children:s(`modal.apiKeyTransportNative`)}),(0,Q.jsx)(`option`,{value:`bearer`,children:s(`modal.apiKeyTransportBearer`)})]})]}),(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:s(`pws.note`)}),(0,Q.jsx)(`textarea`,{className:`input pwi-settings-textarea`,value:S,onChange:e=>C(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:w,onChange:e=>E(e.target.checked)}),(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:s(`pws.allowPrivateNetwork`)})]}),(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:!l,onChange:e=>O(e.target.checked)}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:s(`pws.liveModels`)}),(0,Q.jsx)(`span`,{className:`muted text-label`,style:{display:`block`,marginTop:2},children:s(`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:s(`pws.pacingTitle`)}),(0,Q.jsx)(`p`,{children:s(`pws.pacingDesc`)})]}),(0,Q.jsxs)(`label`,{className:`pwi-pacing-toggle`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:ne,onChange:e=>K(e.target.checked)}),` `,s(`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:s(`pws.pacingRpm`)}),(0,Q.jsx)(`input`,{className:`input`,type:`number`,min:`0.016667`,step:`any`,value:re,onChange:e=>q(e.target.value),placeholder:`38`})]}),(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:s(`pws.pacingDelay`)}),(0,Q.jsx)(`input`,{className:`input`,type:`number`,min:`1`,step:`1`,value:J,onChange:e=>ie(e.target.value),placeholder:`1600`})]}),(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:s(`pws.pacingConcurrency`)}),(0,Q.jsx)(`input`,{className:`input`,type:`number`,min:`1`,step:`1`,value:Y,onChange:e=>X(e.target.value),placeholder:`8`})]})]}),(0,Q.jsx)(`p`,{className:`pwi-settings-hint`,children:s(`pws.pacingSlowerWins`)}),(0,Q.jsxs)(`div`,{className:`pwi-pacing-status`,"aria-live":`polite`,children:[(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`strong`,{children:ge?.queued??0}),` `,s(`pws.pacingQueued`)]}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsxs)(`strong`,{children:[ge?.nextSlotInMs??0,` ms`]}),` `,s(`pws.pacingNextSlot`)]}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`strong`,{children:ge?.lastModelId??s(`pws.pacingNone`)}),` `,s(`pws.pacingLastModel`)]})]}),(0,Q.jsx)(`h4`,{children:s(`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:s(`pws.pacingModel`)}),(0,Q.jsx)(`input`,{className:`input`,list:`pacing-models-${e.name}`,value:se,onChange:e=>ce(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:s(`pws.pacingRpm`)}),(0,Q.jsx)(`input`,{className:`input`,type:`number`,min:`0.016667`,step:`any`,value:le,onChange:e=>ue(e.target.value)})]}),(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:s(`pws.pacingDelay`)}),(0,Q.jsx)(`input`,{className:`input`,type:`number`,min:`1`,step:`1`,value:de,onChange:e=>fe(e.target.value)})]}),(0,Q.jsxs)(`label`,{className:`pwi-settings-field`,children:[(0,Q.jsx)(`span`,{className:`pwi-settings-label`,children:s(`pws.pacingConcurrency`)}),(0,Q.jsx)(`input`,{className:`input`,type:`number`,min:`1`,step:`1`,value:pe,onChange:e=>he(e.target.value)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{let e=se.trim(),t=Lm(le),n=Rm(de),r=Rm(pe);if(pe.trim()!==``&&r===void 0){P({ok:!1,text:s(`pws.pacingCapInvalid`)});return}!e||t===void 0&&n===void 0&&r===void 0||(oe(i=>({...i,[e]:{...t===void 0?{}:{requestsPerMinute:t},...n===void 0?{}:{minIntervalMs:n},...r===void 0?{}:{maxConcurrentRequests:r}}})),ce(``),ue(``),fe(``),he(``))},children:s(`pws.pacingAdd`)})]}),Object.entries(ae).length>0&&(0,Q.jsx)(`div`,{className:`pwi-pacing-overrides`,children:Object.entries(ae).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} ${s(`pws.pacingRpmUnit`)}`,t.minIntervalMs===void 0?void 0:`${t.minIntervalMs} ms`,t.maxConcurrentRequests===void 0?void 0:`${t.maxConcurrentRequests} ${s(`pws.pacingCapUnit`)}`].filter(e=>e!==void 0).join(` · `)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>oe(t=>Object.fromEntries(Object.entries(t).filter(([t])=>t!==e))),"aria-label":s(`pws.pacingRemoveModel`,{model:e}),children:s(`pws.pacingRemove`)})]},e))})]}),Se&&(0,Q.jsxs)(`div`,{className:`pwi-settings-sticky-bar`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:s(`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:Ie,disabled:j,children:s(`pws.discardSettings`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:()=>void Me(),disabled:j||R,children:s(j?`pws.saving`:`pws.saveSettings`)})]})]}),N&&(0,Q.jsx)(`div`,{role:N.ok?`status`:`alert`,className:N.ok?`pwi-settings-msg pwi-settings-msg--ok`:`pwi-settings-msg pwi-settings-msg--err`,children:N.text})]})}function Vm({providerName:e,defaultProviderName:t,onConfirm:n,onCancel:r}){let a=i();return(0,Q.jsx)(`div`,{className:`dialog-backdrop`,onClick:r,children:(0,Q.jsxs)(`div`,{className:`dialog`,role:`alertdialog`,"aria-label":a(`pws.removeConfirmTitle`),onClick:e=>e.stopPropagation(),children:[(0,Q.jsx)(`h3`,{children:a(`pws.removeConfirmTitle`)}),(0,Q.jsx)(`p`,{children:t?a(`pws.removeDefaultConfirmBody`,{name:e,defaultProvider:t}):a(`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:a(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-danger`,onClick:n,children:a(`pws.removeConfirm`)})]})]})})}function Hm({onSave:e,onDiscard:t,onCancel:n,saving:r=!1}){let a=i();return(0,Q.jsx)(`div`,{className:`dialog-backdrop`,onClick:n,children:(0,Q.jsxs)(`div`,{className:`dialog`,role:`alertdialog`,"aria-label":a(`pws.unsavedLeaveTitle`),onClick:e=>e.stopPropagation(),children:[(0,Q.jsx)(`h3`,{children:a(`pws.unsavedLeaveTitle`)}),(0,Q.jsx)(`p`,{children:a(`pws.unsavedLeaveBody`)}),(0,Q.jsxs)(`div`,{className:`dialog-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:n,children:a(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:t,children:a(`pws.discardSettings`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:e,disabled:r,children:a(r?`pws.saving`:`pws.saveSettings`)})]})]})})}function Um({item:e,preset:t,usageTotals:n,modelUsage:r,quotaReport:a,availableModels:o,hasLiveModels:s,selectedModels:c,modelRows:l,modelRevision:u,modelRowsReady:d,onOpenModels:f,onCreateJevAuto:p,modelsLoading:m,modelsLoadFailed:h,onRetryModels:g,oauthEmail:_,onDeselect:v,apiBase:y,oauth:b,accounts:x,accountLoadState:S,accountsFocusToken:C=0,accountsFocusProvider:w=null,settingsFocusToken:T=0,settingsFocusProvider:E=null,switchingAccountId:D,pausingAccountId:O,keys:k,busyProvider:A,loginHint:j,authHandlers:M,onCodexActiveNeedsReauthChange:N,codexController:P,onUpdateProvider:F,isDefault:I,onRemoveProvider:L,onSetDisabled:R,onSetDefault:z,onRefreshQuota:V}){let H=i(),[ee,W]=(0,Z.useState)(`overview`),[G,te]=(0,Z.useState)(!1),[ne,K]=(0,Z.useState)(null),[re,q]=(0,Z.useState)(!1),J=(0,Z.useRef)(null),[ie,Y]=(0,Z.useState)(0),[X,ae]=(0,Z.useState)(0),oe=(0,Z.useCallback)(e=>{J.current=e},[]),se=e.disabled===!0,ce=(0,Z.useMemo)(()=>U(e),[e]),le=(0,Z.useMemo)(()=>B(e),[e]),ue=(0,Z.useMemo)(()=>Fs(e),[e]),de=ue===`oauth-accounts`?x?.find(e=>e.active):ue===`api-keys`?k?.find(e=>e.active):void 0,pe=w===e.name?C:0,me=JSON.stringify([P?.activeId??``,x?.find(e=>e.active)?.id??``,k?.find(e=>e.active)?.id??``,b?.loggedIn===void 0?``:String(b.loggedIn),b?.needsReauth===void 0?``:String(b.needsReauth),_??``]),he=(0,Z.useMemo)(()=>[{id:`overview`,label:H(`pws.tab.overview`)},{id:`models`,label:H(`pws.tab.models`)},{id:`usage`,label:H(`pws.tab.usage`)},...ue?[{id:`accounts`,label:H(ue===`api-keys`?`pws.apiKeys`:`pws.tab.accounts`)}]:[],{id:`settings`,label:H(`pws.tab.settings`)}],[ue,H]),ge=(0,Z.useCallback)(e=>{if(G&&ee===`settings`&&e!==`settings`){K(e);return}W(e)},[ee,G]);pe!==ie&&!(pe&&!ue)&&(Y(pe),pe&&ue&&(G&&ee===`settings`?K(`accounts`):W(`accounts`)));let ve=E===e.name?T:0;ve!==X&&(ae(ve),ve&&W(`settings`));let ye=(0,Z.useCallback)(()=>{if(G&&ee===`settings`){K(`deselect`);return}v()},[G,ee,v]),be=(0,Z.useCallback)((e,t)=>{let n;if(e.key===`ArrowRight`)n=(t+1)%he.length;else if(e.key===`ArrowLeft`)n=(t-1+he.length)%he.length;else if(e.key===`Home`)n=0;else if(e.key===`End`)n=he.length-1;else return;e.preventDefault(),ge(he[n].id),e.currentTarget.parentElement?.querySelectorAll(`[role="tab"]`)[n]?.focus()},[ge,he]),xe=`pws-tab-${ee}`,Se=`pws-panel-${ee}`;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)(Ue,{className:`pws-detail-back-chevron`,"aria-hidden":`true`}),H(`pws.allProviders`)]})}),(0,Q.jsxs)(`div`,{className:`pws-detail-head-main`,children:[(0,Q.jsx)(fe,{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:[_e(e.name,H),le&&(0,Q.jsx)(`span`,{className:`pwi-rail-badge pwi-rail-badge--local`,children:H(`modal.badge.local`)}),!le&&ce&&(0,Q.jsx)(`span`,{className:`pwi-rail-badge pwi-rail-badge--free`,children:H(`modal.badge.free`)})]})}),(0,Q.jsxs)(`div`,{className:`pws-detail-actions`,children:[!I&&!se&&z&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>z(e.name),children:H(`prov.setDefault`)}),L&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm btn-icon-only`,onClick:()=>L(e.name),"aria-label":H(`pws.removeConfirmTitle`),title:H(`pws.removeConfirmTitle`),children:(0,Q.jsx)(ot,{style:{width:15,height:15},"aria-hidden":`true`})}),R&&(0,Q.jsxs)(`div`,{className:`pws-detail-toggle`,children:[(0,Q.jsx)(`span`,{className:`pws-detail-toggle-label`,children:H(`pws.enabledLabel`)}),(0,Q.jsx)(nn,{on:!se,onClick:()=>R(e.name,!se),disabled:I,label:H(`pws.enabledLabel`)})]})]})]}),(0,Q.jsx)(`div`,{className:`pws-detail-tabs`,role:`tablist`,children:he.map((e,t)=>(0,Q.jsx)(`button`,{type:`button`,role:`tab`,id:`pws-tab-${e.id}`,"aria-controls":`pws-panel-${e.id}`,"aria-selected":ee===e.id,tabIndex:ee===e.id?0:-1,className:`pws-detail-tab${ee===e.id?` pws-detail-tab--active`:``}`,onClick:()=>ge(e.id),onKeyDown:e=>be(e,t),children:e.label},e.id))}),(0,Q.jsxs)(`div`,{className:`pws-detail-panel`,role:`tabpanel`,id:Se,"aria-labelledby":xe,tabIndex:0,children:[ee===`overview`&&(0,Q.jsx)(nc,{item:e,preset:t,apiBase:y,connectionIdentity:me,usageTotals:n,quotaReport:a,currentQuotaReading:de,onRefreshQuota:V,oauthEmail:_,oauth:b,onEditSettings:()=>ge(`settings`),onViewUsage:()=>ge(`usage`),onCreateJevAuto:p,onUpdateProvider:F,reauthBusy:A===e.name,onCancelLogin:M?.onCancelLogin?()=>void M.onCancelLogin?.(e.name):void 0,onReauthenticate:e.activeNeedsReauth?()=>{if(e.authMode===`oauth`){let t=x??[],n=t.find(e=>e.active&&e.needsReauth)??t.find(e=>e.needsReauth);M?.onReauth(e.name,n?.id);return}ge(`accounts`)}:void 0}),ee===`models`&&(0,Q.jsx)(Oc,{item:e,apiBase:y,availableModels:o,hasLiveModels:s,selectedModels:c,modelRows:l,modelRevision:u,modelRowsReady:d,onOpenModels:f,modelsLoading:m,modelsLoadFailed:h,needsReauth:(x??[]).some(e=>e.active&&e.needsReauth)||b?.needsReauth===!0,onRetryModels:g,onOpenAccounts:ue?()=>ge(`accounts`):void 0},e.name),ee===`usage`&&(0,Q.jsx)(Ac,{item:e,usageTotals:n,quotaReport:a,currentQuotaReading:de,quotaIdentity:me,modelUsage:r,...V?{onRefreshQuota:V}:{}}),ee===`accounts`&&(0,Q.jsx)(lp,{item:e,apiBase:y,oauth:b,accounts:x,keys:k,accountLoadState:S,switchingAccountId:D,pausingAccountId:O,busy:A===e.name,loginHint:j,authHandlers:M,onUpdateProvider:F,onCodexActiveNeedsReauthChange:N,codexController:P}),ee===`settings`&&(0,Q.jsx)(Bm,{item:e,apiBase:y,availableModels:o,onUpdateProvider:F,onDirtyChange:te,onRegisterSave:oe},e.name)]}),ne&&(0,Q.jsx)(Hm,{saving:re,onCancel:()=>{re||K(null)},onDiscard:()=>{if(re)return;let e=ne;K(null),te(!1),e===`deselect`?v():W(e)},onSave:()=>{(async()=>{if(!re){q(!0);try{if(!(await J.current?.()??!1))return;let e=ne;K(null),te(!1),e===`deselect`?v():e&&W(e)}finally{q(!1)}}})()}})]})}var Wm=new Set([`anthropic`,`anthropic2`,`google-antigravity`,`meta-muse`]),Gm=new Set([`github-copilot`,`cursor`,`zed`]);function Km(e){let t=e.trim().toLowerCase();return Wm.has(t)?`high`:Gm.has(t)?`elevated`:null}function qm(e){switch(e){case`high`:return`oauthTos.highTitle`;case`elevated`:return`oauthTos.elevatedTitle`;default:return e}}function Jm(e){switch(e){case`high`:return`oauthTos.highBody`;case`elevated`:return`oauthTos.elevatedBody`;default:return e}}function Ym(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:qm(t),body:Jm(t),conditions:null,saferPath:n===`google-antigravity`?`oauthTos.saferPath`:null,acknowledge:`oauthTos.acknowledge`,continue:`oauthTos.continue`}}function Xm(e,t){return t===void 0?e:e.map(e=>({...e,active:e.id===t}))}function Zm(e,t){let n=new Map(t.map(e=>[e.id,e]));return eh(e,t,!1).map(e=>$m(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?Dr(n.get(e.id)?.quotaFailure):void 0}:e)}function Qm(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=eh([t],[e],!0)[0];return{...e,quota:r.quota,quotaPending:r.quotaPending,quotaUnavailable:r.quotaUnavailable,quotaFailure:r.quotaFailure}})}var $m=e=>e.quotaMode===`probe`||e.quotaMode===`passive`;function eh(e,t,n){let r=new Map(t.map(e=>[e.id,e]));return e.map(e=>{let t=$m(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?Dr(e.quotaFailure):void 0}})}function th(e,t){let n=t&&new Map(t.map(e=>[e.id,e.quotaMode]));return e.map(e=>$m(e)&&(!n||n.get(e.id)===e.quotaMode)?{...e,quotaUnavailable:!0,quotaPending:!1,quotaFailure:void 0}:e)}function nh(e,t=!1){let n={};for(let[t,r]of Object.entries(e))Vc(r.accounts.find(e=>e.active)??r.accounts.find(e=>e.id===r.activeAccountId))&&(n[t]=!0);return t&&(n.openai=!0),n}function rh(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)({}),[E,D]=(0,Z.useState)(null),[O,k]=(0,Z.useState)(``),A=(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=A.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=T(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=(A.current[r]??0)+1;A.current[r]=a;let o=(j.current[r]??0)+1;j.current[r]=o;let s=()=>i.current&&L.current&&R.current===t&&A.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=Xm(a.accounts,a.activeAccountId);if(d(t=>c()?{...t,[e]:{activeAccountId:a.activeAccountId??null,accounts:eh(o,t[e]?.accounts??[],!1)}}:t),p(t=>c()?{...t,[e]:`ready`}:t),!o.some($m))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=Xm(t.accounts,t.activeAccountId);return d(n=>u()?c()?{...n,[e]:{activeAccountId:t.activeAccountId===void 0?a.activeAccountId??null:t.activeAccountId,accounts:eh(r,n[e]?.accounts??[],!0)}}:{...n,[e]:{...n[e],accounts:Qm(n[e]?.accounts??[],r)}}:n),!r.some(e=>e.quotaUnavailable===!0)}catch{return u()&&d(t=>u()&&t[e]?{...t,[e]:{...t[e],accounts:th(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:th(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=(A.current[r]??0)+1;A.current[r]=a;let o=(j.current[r]??0)+1;j.current[r]=o;let s=()=>i.current&&L.current&&R.current===t&&A.current[r]===a,c=()=>s()&&j.current[r]===o,l=`${t}/api/providers/keys?name=${encodeURIComponent(e)}`,u=()=>(c()&&w(t=>c()?{...t,[e]:th(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=Xm(a.keys,a.activeId);if(w(t=>c()?{...t,[e]:eh(o,t[e]??[],!1)}:t),!o.some($m))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=Xm(t.keys,t.activeId);return w(t=>s()?{...t,[e]:c()?eh(r,t[e]??[],!0):Qm(t[e]??[],r)}:t),!r.some(e=>e.quotaUnavailable===!0)}catch{return s()&&w(t=>s()?{...t,[e]:th(t[e]??[],o)}:t),!1}};return n?await u():(u(),!0)}catch{return u()}}))).every(Boolean),[t,i,V]),ee=(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=Xm(r.accounts,r.activeAccountId);d(t=>s()?{...t,[e]:{activeAccountId:r.activeAccountId===void 0?i.find(e=>e.active)?.id??null:r.activeAccountId,accounts:Zm(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=Xm(r.keys,r.activeId);w(t=>s()?{...t,[e]:Zm(i,t[e]??[])}:t)}return!0}catch{return!1}}))).every(Boolean)},[i,t,r,V]),W=(e,t)=>{let n=`${t===`oauth`?`oauth`:`key`}:${e}`;return A.current[n]=(A.current[n]??0)+1,j.current[n]=(j.current[n]??0)+1,n},G=async(e,n)=>!i.current||!L.current||R.current!==t?!1:(W(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=W(e,`oauth`),f=Symbol();N.current.set(l,f);let p=()=>i.current&&L.current&&R.current===t&&N.current.get(l)===f,m=Is(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;W(e,`oauth`);let u=o.activeAccountId===void 0?r.id:o.activeAccountId;d(t=>t[e]?{...t,[e]:{...t[e],activeAccountId:u,accounts:Xm(t[e].accounts,u)}}:t),N.current.delete(l);let f=await ee({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()&&(W(e,`oauth`),N.current.delete(l),ee({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}))}},ne=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=W(e,`oauth`),l=Symbol();N.current.set(c,l);let f=()=>i.current&&L.current&&R.current===t&&N.current.get(c)===l,p=Is(u[e]?.accounts??[r],r,n);try{let n=T(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()?(W(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()&&(W(e,`oauth`),N.current.delete(c),ee({provider:e,kind:`oauth`}))}},K=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=W(e,`oauth`),p=Symbol();N.current.set(f,p);let m=()=>i.current&&L.current&&R.current===t&&N.current.get(f)===p,h=Is(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;W(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:Xm(i,s)}}}),N.current.delete(f)}catch{m()&&a(n(o?`codexAuth.pauseFailed`:`codexAuth.resumeFailed`,{email:h}),!1);return}finally{m()&&(W(e,`oauth`),N.current.delete(f),ee({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 ee({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)}}},re=async(e,r)=>{if(r.active||N.current.has(`key:${e}`))return;let o=W(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;W(e,`api-key`);let s=o.activeId===void 0?r.id:o.activeId;w(t=>t[e]?{...t,[e]:Xm(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()&&(W(e,`api-key`),N.current.delete(o),ee({provider:e,kind:`api-key`}))}},q=async(e,r)=>{await Qi({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))},J=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),D(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}},ie=async e=>{await J(e,O)&&k(``)},Y=async(e,r,i,o)=>{let s=await $i({message:n(`prov.aliasPrompt`),initialValue:o??``,maxLength:80,validate:e=>Zc(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=Is(u[e]?.accounts??[r],r,n);if(await Qi({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:E,newKeyValue:O,setAccountSets:d,setAccountLoadStates:p,setSwitchingAccount:_,setOpenAccounts:S,setKeyPools:w,setAddingKeyFor:D,setNewKeyValue:k,fetchAccountSets:H,fetchKeyPools:U,refreshAccountRosters:ee,switchAccount:te,pauseAccount:K,setAccountPoolThreshold:G,setAccountThreshold:ne,switchApiKey:re,removeApiKey:q,addApiKeyValue:J,addApiKey:ie,editCredentialAlias:Y,removeAccount:X,oauthCardProviders:ae,keyCardProviders:oe,activeAccountNeedsReauth:(0,Z.useMemo)(()=>nh(u,l),[u,l])}}var ih=new Set([`hasApiKey`,`hasHeaders`,`xaiResponsesOptInState`,`initialModelSelection`]);function ah(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))ih.has(e)||(n[e]=structuredClone(r));return[e,n]}))}}function oh(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(ah(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(ah(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(ah(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 sh=186e4;function ch(e,t,n){return e?Math.max(n,Math.ceil(sh/t)):n}var lh={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`},uh=e=>lh[e]??e;function dh({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=>jf(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:uh(e),cmd:`ocx sync`}),!0):l(r===`ended`?t(`kiroLogin.ended`):t(`prov.loginError`,{provider:uh(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:uh(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 Mf(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,...ll(),...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:uh(u)}),!1);return}let o=await a.json();if(!n.current||g.current.get(u)!==p)return;let f=dl(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<ch(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 pn(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:uh(u)}):t(`prov.loginError`,{provider:uh(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:uh(u),error:t(`prov.reauthAccountMissing`)}),!1),s(null),v=!0;break}if(e?.needsReauth){l(t(`prov.loginError`,{provider:uh(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:uh(u)}),!1):l(t(`prov.loginOk`,{provider:uh(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:uh(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:uh(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:uh(n)}),!1);return}await Promise.all([f([n]),d(),u(),p(!0)]),m(),l(t(`prov.logoutOk`,{provider:uh(n)}),!0)}catch{l(t(`prov.logoutFail`,{provider:uh(n)}),!1)}},onNativeLoginSettled:S}}async function fh(e,t){try{let t=await e.json();if(typeof t.error==`string`&&t.error.trim())return t.error.trim()}catch{}return t}function ph(e){let t=e.dependentShadowIntercept;return!t||typeof t.model!=`string`||t.enabled!==!0?null:{model:t.model,enabled:!0}}function mh(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 hh({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=ph(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(mh(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 fh(i,t(r?`prov.disableFail`:`prov.enableFail`,{name:n})),!1);return}let a=ph(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 fh(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(mh(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 gh({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 fn(await fetch(`${e}/api/config`));if(r!==c.current)return`superseded`;if(!t)throw Error(`config response missing`);return n(t??null),s&&t&&La(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 fn(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 pn(n)??{loggedIn:!1}:{loggedIn:!1}]}));i(Object.fromEntries(n))}catch{}},[e,r,i]),fetchProviderQuotas:(0,Z.useCallback)(async(e=!1)=>{o(e)},[o])}}function _h({providerId:e,providerLabel:t,onCancel:n,onContinue:r}){let a=i(),o=(0,Z.useId)(),s=(0,Z.useId)(),c=(0,Z.useId)(),l=(0,Z.useRef)(null),u=(0,Z.useRef)(!1),[d,f]=(0,Z.useState)(!1),[p,m]=(0,Z.useState)(!1),h=Km(e);(0,Z.useEffect)(()=>{let e=l.current;e&&!e.open&&e.showModal()},[]);let g=(0,Z.useCallback)(e=>{e.preventDefault(),n()},[n]);if(!h)return null;let _=Ym(e,h);return(0,Q.jsxs)(`dialog`,{ref:l,"aria-labelledby":o,"aria-describedby":_.conditions?`${s} ${c}`:s,className:`modal-overlay`,onCancel:g,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":a(`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:o,children:a(_.title,{provider:t})}),(0,Q.jsxs)(`div`,{id:s,className:`notice-warn`,style:{marginTop:12,display:`flex`,gap:8,alignItems:`flex-start`},children:[(0,Q.jsx)(De,{width:16,height:16,style:{flexShrink:0,marginTop:2},"aria-hidden":`true`}),(0,Q.jsx)(`p`,{className:`modal-desc`,style:{margin:0},children:a(_.body,{provider:t})})]}),_.conditions&&(0,Q.jsx)(`p`,{id:c,className:`modal-desc`,style:{marginTop:12},children:a(_.conditions)}),_.saferPath&&(0,Q.jsx)(`p`,{className:`muted text-label`,style:{marginTop:12},children:a(_.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:d,onChange:e=>f(e.target.checked),style:{marginTop:3},"aria-required":`true`}),(0,Q.jsx)(`span`,{className:`text-label`,children:a(_.acknowledge)})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:n,children:a(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:!d||p,onClick:()=>{!d||u.current||(u.current=!0,m(!0),r())},children:a(_.continue)})]})]})]})}function vh(e,t,n){return!n||e.kind!==`oauth`||t!==e.id?!1:n.provider===e.id}function yh({row:e,status:t,busyProvider:n,loginHint:r,paste:a,onLogin:o,onCancelLogin:s,onLogout:c,onManage:l}){let u=i(),d=n===e.id,f=!!t?.loggedIn,p=f?t?.email??e.statusLabel??u(`modal.accountLoggedIn`):t?.error??e.statusLabel??u(`modal.accountLoggedOut`),m=vh(e,n,r);return(0,Q.jsxs)(`div`,{className:`list-row provider-catalog-account-row${m?` provider-catalog-account-row--waiting`:``}`,children:[(0,Q.jsxs)(`div`,{className:`provider-catalog-account-row-head`,children:[(0,Q.jsx)(fe,{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:p})]}),(0,Q.jsx)(`div`,{className:`provider-catalog-badges`,children:e.kind===`key`?null:e.kind===`codex`?(0,Q.jsxs)(Q.Fragment,{children:[f&&(0,Q.jsx)(`a`,{className:`btn btn-ghost`,href:e.href??`#codex-set`,children:u(`modal.accountManage`)}),o&&(0,Q.jsx)(`button`,{type:`button`,className:f?`btn btn-ghost`:`btn btn-primary`,disabled:d,onClick:()=>{d||o(e.id)},children:u(d?`codexAuth.enablingOpenai`:f?`modal.accountAdd`:`modal.accountLogin`)})]}):f?(0,Q.jsxs)(Q.Fragment,{children:[l&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>l(e.id),children:u(`modal.accountManage`)}),o&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:d,onClick:()=>{d||o(e.id,!0)},children:u(d?`prov.waitingBrowser`:`modal.accountAdd`)}),d&&s&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>s(e.id),children:u(`common.cancel`)}),c&&!d&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>c(e.id),children:u(`modal.accountLogout`)})]}):d?s&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>s(e.id),children:u(`common.cancel`)}):o&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>o(e.id),children:u(`modal.accountLogin`)})})]}),m&&r&&(0,Q.jsx)(al,{hint:{url:r.url,deviceCode:r.deviceCode,instructions:r.instructions,browserLaunch:r.browserLaunch},...a?{paste:{value:a.value,busy:a.busy,message:a.message,ok:a.ok,onChange:a.onChange,onSubmit:()=>a.onSubmit(e.id)}}:{}})]})}var bh=[`accounts`,`free`,`local`,`paid`],xh={accounts:`modal.tab.accounts`,free:`modal.tab.free`,local:`modal.tab.local`,paid:`modal.tab.paid`},Sh={},Ch=[],wh={};function Th({presets:e,usageRank:t=Sh,presetsLoading:n=!1,initialTier:r=`free`,query:a,onQueryChange:o,onSelectPreset:s,onSelectCustom:c,onShowNote:l,accountRows:u=Ch,accountStatus:d=wh,busyProvider:f=null,loginHint:p=null,paste:m,onLogin:h,onCancelLogin:g,onLogout:_,onManage:v}){let y=i(),[b,x]=(0,Z.useState)(r),S=(0,Z.useId)(),C=e=>`${S}-${e}`,w=(0,Z.useRef)(null),T=a.trim().length>0;(0,Z.useEffect)(()=>{w.current&&(w.current.scrollTop=0)},[b,T]);let E=(0,Z.useMemo)(()=>e.filter(e=>e.id!==`custom`),[e]),D=(0,Z.useMemo)(()=>{let e=Object.keys(t).length>0;return E.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)})},[E,t]),O=(0,Z.useMemo)(()=>Us(Zs(D)),[D]),k=O[b],A=(0,Z.useMemo)(()=>T?Js(u,a,f):u,[u,a,T,f]),j=(0,Z.useMemo)(()=>{let e=bh.filter(e=>e!==`accounts`);return T?e.map(e=>({tier:e,rows:qs(Ys(O[e].filter(e=>Ks(e,a)),A),a)})):b===`accounts`?[]:[{tier:b,rows:k}]},[T,b,k,O,a,A]),M=(0,Z.useMemo)(()=>({...Object.fromEntries(j.map(e=>[e.tier,e.rows.length])),accounts:A.length}),[j,A]),N=bh.reduce((e,t)=>e+(M[t]??0),0),P=bh.filter(e=>(M[e]??0)>0),F=T?N:b===`accounts`?A.length:j[0]?.rows.length??0,I=e=>{let t=w.current,n=t?.querySelector(`[data-catalog-group="${e}"]`);!t||!n||(t.scrollTop=n.offsetTop-t.offsetTop,f||n.focus({preventScroll:!0}))},L=e=>{if(e.key!==`ArrowDown`)return;let t=w.current?.querySelector(`button:not(:disabled), a[href]`);t&&(e.preventDefault(),t.focus())},R=(e,t)=>(0,Q.jsxs)(`h4`,{id:C(e),"data-catalog-group":e,className:`provider-catalog-group-head`,tabIndex:-1,children:[(0,Q.jsx)(`span`,{children:y(xh[e])}),(0,Q.jsx)(`span`,{className:`provider-catalog-group-count`,children:t})]}),z=e=>{let t=Ge(e),n=t?(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:y(`modal.badge.subscriptionCli`)}):e.codexAccountMode===`direct`?(0,Q.jsx)(`span`,{className:`badge badge-green`,children:y(`modal.badge.direct`)}):e.codexAccountMode===`pool`?(0,Q.jsx)(`span`,{className:`badge badge-accent`,children:y(`modal.badge.pool`)}):e.auth===`oauth`?(0,Q.jsx)(`span`,{className:`badge badge-accent`,children:y(`modal.badge.oauth`)}):e.auth===`forward`?(0,Q.jsx)(`span`,{className:`badge badge-green`,children:y(`modal.badge.codexLogin`)}):e.auth===`local`?(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:y(`modal.badge.local`)}):e.keyOptional?null:(0,Q.jsx)(`span`,{className:`badge badge-muted`,children:y(`modal.badge.apiKey`)}),r=(e.freeTier||e.keyOptional)&&e.auth===`key`&&!t?(0,Q.jsx)(`span`,{className:`badge badge-green`,children:y(`modal.badge.free`)}):null,i=e.sponsor?(0,Q.jsx)(`span`,{className:`badge badge-accent provider-catalog-sponsor`,title:e.sponsorUrl,children:y(`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:a,onChange:e=>o(e.target.value),onKeyDown:L,placeholder:y(`modal.search`),"aria-label":y(`modal.search`)}),T?(0,Q.jsx)(`div`,{className:`provider-catalog-tabs provider-catalog-tabs--chips`,children:bh.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":C(e)}:{},onClick:()=>I(e),children:[y(xh[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:bh.map(e=>(0,Q.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":b===e,"aria-controls":S,className:`provider-catalog-tab${b===e?` active`:``}`,onClick:()=>x(e),children:y(xh[e])},e))}),!T&&b===`accounts`&&(0,Q.jsx)(`div`,{className:`provider-catalog-accounts-hint muted text-label`,children:y(`modal.accountsHint`)}),(0,Q.jsx)(`div`,{className:`sr-only`,"aria-live":`polite`,"aria-atomic":`true`,children:T?N===0?y(`modal.noMatch`):y(`modal.searchResults`,{count:N,tiers:P.map(e=>y(xh[e])).join(`, `)}):``}),(0,Q.jsxs)(`div`,{className:`provider-catalog-rows`,id:S,ref:w,children:[n&&F===0&&(0,Q.jsx)(`div`,{className:`muted text-control provider-catalog-empty`,children:y(`modal.catalogLoading`)}),(T||b===`accounts`)&&A.length>0&&(0,Q.jsxs)(Z.Fragment,{children:[T&&R(`accounts`,A.length),A.map(e=>(0,Q.jsx)(yh,{row:e,status:d[e.id],busyProvider:f,loginHint:p,...m?{paste:m}:{},...h?{onLogin:h}:{},...g?{onCancelLogin:g}:{},..._?{onLogout:_}:{},...v?{onManage:v}:{}},e.id))]},`accounts`),j.map(e=>e.rows.length===0?null:(0,Q.jsxs)(Z.Fragment,{children:[T&&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:()=>s(e),children:[(0,Q.jsx)(fe,{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)})]}),l&&Ws(e.note)&&(0,Q.jsx)(`button`,{type:`button`,className:`link-btn provider-catalog-note-more`,onClick:()=>l(e),children:y(`modal.noteMore`)})]},e.id))]},e.tier)),!n&&F===0&&(0,Q.jsx)(`div`,{className:`muted text-control provider-catalog-empty`,children:y(`modal.noMatch`)})]}),(0,Q.jsxs)(`div`,{className:`provider-catalog-footer`,children:[(0,Q.jsx)(`div`,{style:{flex:1}}),!T&&b!==`accounts`&&(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:c,children:y(`modal.notListed`)})]})]})}function Eh({providerId:e,label:t,adapter:n,note:r,onClose:a}){let o=i(),s=(0,Z.useId)(),c=(0,Z.useId)(),l=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{let e=l.current,t=document.activeElement;return e&&!e.open&&e.showModal(),()=>{e?.open&&e.close(),t?.isConnected&&t.focus({preventScroll:!0})}},[]);let u=(0,Z.useCallback)(e=>{e.preventDefault(),a()},[a]);return(0,Q.jsxs)(`dialog`,{ref:l,"aria-labelledby":s,"aria-describedby":c,className:`modal-overlay`,onCancel:u,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":o(`common.close`),tabIndex:-1,onClick:a}),(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:s,className:`provider-note-title`,children:[(0,Q.jsx)(fe,{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":o(`common.close`),onClick:a,children:(0,Q.jsx)(N,{})})]}),(0,Q.jsxs)(`div`,{id:c,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:a,children:o(`common.close`)})})]})]})}function Dh({preset:e,oauthSupported:t,oauthBusy:n,oauthMsg:r,oauthMsgTone:a,oauthUrl:o,oauthDeviceCode:s,oauthInstructions:c,oauthBrowserLaunch:l,manualCode:u,manualCodeBusy:d,manualCodeMsg:f,manualCodeOk:p,onRequestLogin:m,onCancelLogin:h,onUseApiKeyInstead:g,onManualCodeChange:_,onSubmitManualCode:v,onBack:y}){let b=i();return(0,Q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:14},children:[(0,Q.jsx)(`div`,{className:`muted text-control`,children:e.note??b(`modal.oauthDefaultNote`)}),t.includes(e.oauthProvider??``)?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>m(e.oauthProvider),disabled:n,style:{width:`100%`,padding:`12px 16px`},children:[(0,Q.jsx)(we,{}),n?b(`modal.waitingBrowser`):b(`modal.logInWith`,{label:e.label})]}),!n&&(0,Q.jsx)(zd,{})]}):(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:b(`modal.oauthComingSoon`,{label:e.label})}),r&&(0,Q.jsx)(`div`,{className:`text-label`,style:{color:a===`warn`?`var(--amber)`:`var(--accent-hover)`},children:r}),n&&(0,Q.jsx)(al,{hint:{url:o,deviceCode:s,instructions:c,browserLaunch:l},paste:{value:u,busy:d,disabled:!e.oauthProvider,message:f,ok:p,onChange:_,onSubmit:()=>{e.oauthProvider&&v(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:g,children:b(`modal.useApiKeyInstead`)}),(0,Q.jsx)(`div`,{style:{flex:1}}),n&&e.oauthProvider&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>h(e.oauthProvider),children:b(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:y,children:b(`modal.back`)})]})]})}function Oh({label:e,children:t}){return(0,Q.jsxs)(`label`,{style:{display:`block`},children:[(0,Q.jsx)(`span`,{className:`field-label`,children:e}),t]})}var kh=[`openai-responses`,`openai-chat`,`anthropic`,`google`,`azure-openai`,`cursor`];function Ah(e){return e&&!kh.includes(e)?[e,...kh]:kh}function jh({preset:e,form:t,endpointChoice:n,error:r,saving:a,dup:o,isCustom:s,isLocal:c,isReservedForward:l,presetDescription:u,onFormChange:d,onEndpointChoiceChange:f,onSubmit:p,onUseOauthLogin:m,onBack:h}){let g=i(),_=Ge(t);return(0,Q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:10},children:[!l&&!s&&!c&&!e.keyOptional&&e.note&&(0,Q.jsxs)(`details`,{className:`setup-guide`,children:[(0,Q.jsx)(`summary`,{children:g(`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:[g(`modal.setupStep1Prefix`),` `,(0,Q.jsx)(`a`,{href:e.dashboardUrl,target:`_blank`,rel:`noreferrer`,children:g(`modal.setupDashboardLink`,{label:e.label})}),` `,g(`modal.setupStep1Suffix`)]}),(0,Q.jsx)(`li`,{children:g(`modal.setupStep2`)}),(0,Q.jsx)(`li`,{children:g(`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:g(`modal.baseUrlPlaceholderHint`)})]}),(0,Q.jsx)(Oh,{label:g(`modal.providerName`),children:(0,Q.jsx)(`input`,{className:`input`,value:t.name,readOnly:l,onChange:e=>d({...t,name:e.target.value}),placeholder:g(`modal.namePlaceholder`)})}),o&&(0,Q.jsx)(`div`,{className:`text-label`,style:{color:`var(--amber)`},children:g(`modal.duplicateWarn`,{name:t.name.trim()})}),!l&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Oh,{label:g(`modal.adapter`),children:(0,Q.jsx)(`select`,{className:`input`,value:t.adapter,onChange:e=>d({...t,adapter:e.target.value}),children:Ah(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)(Oh,{label:g(`modal.endpoint`),children:(0,Q.jsx)(`select`,{className:`input`,value:n,onChange:n=>{let r=n.target.value;f(r),d({...t,baseUrl:up(e.baseUrlChoices,r,t.baseUrl)})},children:e.baseUrlChoices.map(e=>(0,Q.jsx)(`option`,{value:e.id,children:e.id===`token-plan`?g(`modal.endpoint.tokenPlan`):e.id===`payg`?g(`modal.endpoint.payAsYouGo`):e.id===`custom`?g(`modal.endpoint.custom`):e.label},e.id))})}),n===`custom`&&(0,Q.jsx)(Oh,{label:g(`modal.baseUrl`),children:(0,Q.jsx)(`input`,{className:`input`,value:t.baseUrl,onChange:e=>d({...t,baseUrl:e.target.value}),placeholder:g(`modal.baseUrlPlaceholder`)})})]}):(0,Q.jsx)(Oh,{label:g(`modal.baseUrl`),children:(0,Q.jsx)(`input`,{className:`input`,value:t.baseUrl,onChange:e=>d({...t,baseUrl:e.target.value}),placeholder:g(`modal.baseUrlPlaceholder`)})}),!l&&(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=>d({...t,allowPrivateNetwork:e.target.checked})}),(0,Q.jsx)(`span`,{className:`muted text-control`,children:g(`modal.allowPrivateNetwork`)})]}),!l&&(t?.allowPrivateNetwork??!1)&&(0,Q.jsx)(`p`,{className:`muted text-hint`,children:g(`modal.allowPrivateNetworkHint`)})]}),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:u(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:g(`modal.localHint`)}):_?(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:g(`modal.subscriptionCliTitle`)}),(0,Q.jsx)(`div`,{style:{marginTop:4},children:(0,Q.jsx)(C,{k:`modal.subscriptionCliWarning`,cmd:`claude -p`,vars:{apiProvider:te}})})]}):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:g(`modal.freeTierTitle`)}),` — `,e.note??g(`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)(Qe,{style:{width:14,height:14}}),g(`modal.getApiKey`,{label:e.label}),(0,Q.jsx)(Re,{style:{width:13,height:13}})]}),(0,Q.jsx)(Oh,{label:g(`modal.apiKey`),children:(0,Q.jsx)(`input`,{className:`input`,type:`password`,value:t.apiKey,onChange:e=>d({...t,apiKey:e.target.value}),placeholder:g(`modal.apiKeyPlaceholder`)})}),t.adapter===`anthropic`&&t.authMode===`key`&&(0,Q.jsx)(Oh,{label:g(`modal.apiKeyTransport`),children:(0,Q.jsxs)(`select`,{className:`input`,value:t.apiKeyTransport??`x-api-key`,onChange:e=>d({...t,apiKeyTransport:e.target.value===`bearer`?`bearer`:void 0}),children:[(0,Q.jsx)(`option`,{value:`x-api-key`,children:g(`modal.apiKeyTransportNative`)}),(0,Q.jsx)(`option`,{value:`bearer`,children:g(`modal.apiKeyTransportBearer`)})]})})]}),!l&&(0,Q.jsx)(Oh,{label:g(`modal.defaultModel`),children:(0,Q.jsx)(`input`,{className:`input`,value:t.defaultModel,onChange:e=>d({...t,defaultModel:e.target.value}),placeholder:g(`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:p,disabled:a,children:g(a?`modal.adding`:`modal.add`)}),e.auth===`oauth`&&(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:m,children:g(`modal.useOauthLogin`)}),(0,Q.jsx)(`div`,{style:{flex:1}}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:h,children:g(`modal.back`)})]})]})}var Mh=2e3;function Nh({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=>jf(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 Mf(e,c,()=>{if(!(!n.current||!v()))return fetch(`${e}/api/oauth/login`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:c,...ll()})})});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,dl(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<ch(l,Mh,100);i++){if(await new Promise(e=>setTimeout(e,Mh)),!n.current||!v())return;let i=await fetch(`${e}/api/oauth/status?provider=${c}`).catch(()=>null),o=i?await pn(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 Ph(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 Fh(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 Ih({apiBase:e,existingNames:t,onClose:n,onAdded:r,initialTier:a,initialCustom:o=!1,accountRows:s,accountStatus:c,accountBusy:l,accountLoginHint:u=null,onAccountLogin:d,onAccountCancelLogin:f,onAccountLogout:p,onAccountManage:m,onOpen:h}){let g=i(),_=(0,Z.useMemo)(()=>[{id:`custom`,label:g(`modal.customProvider`),adapter:`openai-chat`,baseUrl:``,auth:`key`}],[g]),[v,y]=(0,Z.useReducer)(Fh,o,e=>Ph(e,g(`modal.customProvider`))),b=(0,Z.useRef)(!0),x=(0,Z.useRef)(null),S=(0,Z.useRef)(null),[C,w]=(0,Z.useState)(null),[T,E]=(0,Z.useState)(``),D=Rt(`add-provider-oauth:${e}`,[e],async t=>{let n=await fetch(`${e}/api/oauth/providers`,{signal:t});return n.ok?(await n.json()).providers??[]:[]}),O=Rt(`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=Rt(fr(e),[e],async t=>await dr(await fetch(`${e}/api/usage?range=30d`,{signal:t})),{deadlineMs:6e4}),A=D.data??[],j=O.data??_,M=O.loading,P=Object.fromEntries((k.data?.providers??[]).map(e=>[e.provider,e.requests])),{preset:F,form:I,saving:L,error:R,oauthBusy:z,oauthMsg:B,oauthMsgTone:V,oauthUrl:H,oauthUrlProvider:U,oauthDeviceCode:ee,oauthInstructions:W,oauthBrowserLaunch:G,manualCode:te,manualCodeBusy:ne,manualCodeMsg:K,manualCodeOk:re,endpointChoice:q,oauthTosPending:J}=v;(0,Z.useEffect)(()=>{b.current=!0,x.current=document.activeElement,h?.();let e=S.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()=>{b.current=!1,x.current?.focus()}},[]),(0,Z.useEffect)(()=>{let e=e=>{let t=!J&&!C;if(!(e.key!==`Escape`||!t)){if(T){E(``);return}n()}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n,J,C,T]);let ie=e=>{let t=vp(e);return t?g(t):e.note},Y=e=>{let t=dp(e.baseUrlChoices,e.baseUrl);y({type:`choose-preset`,preset:e,endpointChoice:t,form:{name:e.id===`custom`?``:e.id,adapter:e.adapter,baseUrl:e.baseUrlChoices?.length?up(e.baseUrlChoices,t,e.baseUrl):e.baseUrl,responsesPath:e.responsesPath,authMode:e.auth,apiKey:``,apiKeyTransport:void 0,defaultModel:e.defaultModel??``,allowPrivateNetwork:!1}})},X=async()=>{if(!I)return;let t=F?_p(F):!1,n=F?.baseUrlChoices?.length?fp(F.baseUrlChoices,q,I.baseUrl):I.baseUrl.trim();if(!t&&!I.name.trim()){y({type:`set-error`,error:g(`modal.nameRequired`)});return}if(!t&&!n){y({type:`set-error`,error:g(`modal.baseUrlRequired`)});return}if(!t&&/\{[^}]*\}/.test(n)){y({type:`set-error`,error:g(`modal.baseUrlPlaceholderError`)});return}let i={...I,baseUrl:n},a;try{a=bp(F??{id:`custom`},i)}catch{y({type:`set-error`,error:g(`modal.invalidPreset`)});return}y({type:`set-saving`,saving:!0}),y({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(()=>({}));y({type:`set-error`,error:e.error||g(`modal.failedStatus`,{status:t.status})});return}r(a.name)}catch{y({type:`set-error`,error:g(`modal.networkError`)})}finally{y({type:`set-saving`,saving:!1})}},{cancelLoginOAuth:ae,loginOAuth:oe,submitManualCode:se}=Nh({apiBase:e,t:g,aliveRef:b,onAdded:r}),ce={setOauthBusy:e=>y({type:`set-oauth-busy`,busy:e}),setOauthMsg:e=>y({type:`set-oauth-msg`,msg:e}),setOauthMsgTone:e=>y({type:`set-oauth-tone`,tone:e}),setOauthUrl:(e,t,n,r,i)=>y({type:`set-oauth-url`,url:e,providerId:t,deviceCode:n,instructions:r,browserLaunch:i}),setManualCode:e=>y({type:`set-manual-code`,code:e}),setManualCodeMsg:e=>y({type:`set-manual-code-msg`,msg:e}),setManualCodeOk:e=>y({type:`set-manual-code-msg`,msg:K,ok:e})},le=I?t.includes(I.name.trim())&&I.name.trim()!==``:!1,ue=e=>{if(!z){if(Km(e)){y({type:`set-oauth-tos-pending`,providerId:e});return}oe(e,ce)}},de=e=>{se(e,te,ne,{setManualCodeBusy:e=>y({type:`set-manual-code-busy`,busy:e}),setManualCode:e=>y({type:`set-manual-code`,code:e}),setManualCodeOk:e=>y({type:`set-manual-code-msg`,msg:K,ok:e}),setManualCodeMsg:e=>y({type:`set-manual-code-msg`,msg:e})})},fe=F?.id===`custom`,pe=I?.authMode===`local`,me=F?_p(F):!1;return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-label":g(`modal.add`),className:`modal-overlay`,children:(0,Q.jsxs)(`div`,{ref:S,className:`modal-card`,children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{children:F?g(`modal.addNamed`,{label:F.label}):g(`modal.add`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon`,"aria-label":g(`common.close`),onClick:n,children:(0,Q.jsx)(N,{})})]}),!F&&(0,Q.jsx)(pr,{data:k.data}),F?I&&(F.auth===`oauth`&&I.authMode===`oauth`?(0,Q.jsx)(Dh,{preset:F,oauthSupported:A,oauthBusy:z,oauthMsg:B,oauthMsgTone:V,oauthUrl:U===F.oauthProvider?H:``,oauthDeviceCode:U===F.oauthProvider?ee:``,oauthInstructions:U===F.oauthProvider?W:``,oauthBrowserLaunch:U===F.oauthProvider?G:void 0,manualCode:te,manualCodeBusy:ne,manualCodeMsg:K,manualCodeOk:re,onRequestLogin:ue,onCancelLogin:e=>{ae(e,ce,F.label)},onUseApiKeyInstead:()=>{z&&F.oauthProvider&&ae(F.oauthProvider,ce,F.label),y({type:`use-api-key-instead`,form:{...I,authMode:`key`}})},onManualCodeChange:e=>y({type:`set-manual-code`,code:e}),onSubmitManualCode:e=>{de(e)},onBack:()=>{z&&F.oauthProvider&&ae(F.oauthProvider,ce,F.label),y({type:`back`})}}):(0,Q.jsx)(jh,{preset:F,form:I,endpointChoice:q,error:R,saving:L,dup:le,isCustom:fe,isLocal:pe,isReservedForward:me,presetDescription:ie,onFormChange:e=>y({type:`set-form`,form:e}),onEndpointChoiceChange:e=>y({type:`set-endpoint-choice`,choice:e}),onSubmit:()=>{X()},onUseOauthLogin:()=>y({type:`use-oauth-login`,form:{...I,authMode:`oauth`}}),onBack:()=>y({type:`back`})})):(0,Q.jsx)(Th,{presets:j,usageRank:P,presetsLoading:M,initialTier:a,query:T,onQueryChange:E,onSelectPreset:e=>Y(e),onSelectCustom:()=>Y(_[0]),onShowNote:e=>w(e),accountRows:s,accountStatus:c,busyProvider:l,onLogin:d,onCancelLogin:f,onLogout:p,onManage:m,loginHint:u,paste:{value:te,busy:ne,message:K,ok:re,onChange:e=>y({type:`set-manual-code`,code:e}),onSubmit:e=>{de(e)}}})]})}),J&&(0,Q.jsx)(_h,{providerId:J,providerLabel:F?.label??J,onCancel:()=>y({type:`set-oauth-tos-pending`,providerId:null}),onContinue:()=>{let e=J;e&&(y({type:`set-oauth-tos-pending`,providerId:null}),oe(e,ce))}},J),C?.note&&(0,Q.jsx)(Eh,{providerId:C.id,label:C.label,adapter:C.adapter,note:C.note,onClose:()=>w(null)},C.id)]})}function Lh({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)(Md,{...r}),n&&(0,Q.jsx)(Ih,{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)(gl,{apiBase:e,onClose:S,onAdded:C}),l&&(0,Q.jsx)(Vm,{providerName:l,defaultProviderName:u,onCancel:w,onConfirm:T}),f&&E&&D&&O&&(0,Q.jsx)(Hm,{saving:p??!1,onCancel:E,onDiscard:D,onSave:O}),m&&(0,Q.jsx)(_h,{providerId:m.provider,providerLabel:uh(m.provider),onCancel:k,onContinue:A},`${m.provider}:${m.addAccount?`add`:`login`}`)]})}function Rh(e,t,n){return[...hp(e.providers).map(e=>({id:e,label:_e(e,n),kind:`codex`,href:`#codex-set`})),...t.toSorted((e,t)=>e.localeCompare(t)).map(e=>({id:e,label:uh(e),kind:`oauth`}))]}function zh(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 Bh(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 Vh=new Set([`dashboard`,`startup`,`providers`,`models`,`subagents`,`logs`,`usage`,`storage`,`remote`,`remote-workspace`,`codex-set`,`integrations`,`claude`]);function Hh(e){let t=Ht(Vt(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`:Vh.has(n)?n:`dashboard`}function Uh(e){let t=Vt(e);return $h(t).replaceTo??t}var Wh=[`dashboard/providers`,`dashboard/models`],Gh=[`models/combos`,`models/routing`,`models/compatibility`],Kh=`models/combos/jev-auto`;function qh(e){let t=e?.trim();return t&&t!==`jev`?`${Kh}?${new URLSearchParams({decisionProvider:t})}`:Kh}function Jh(e){let{path:t,query:n}=Ht(Vt(e));if(t!==`models/combos/jev-auto`)return;let r=new URLSearchParams(n).get(`decisionProvider`)?.trim();return r&&r!==`jev`?r:null}var Yh=[`integrations/keys`,`integrations/codex`,`integrations/claude`,`integrations/claude/desktop`,`integrations/grok`,`integrations/cursor`,`integrations/opencode`,`integrations/pi`,`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`],Xh=[`providers`,`models/compatibility`,Kh],Zh=`providers?provider=anthropic&tab=accounts`;function Qh(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`||t===`models`&&(Gh.includes(e)||e===`models/combos/jev-auto`)||t===`dashboard`&&(e===`dashboard/update`||Wh.includes(e))||t===`integrations`&&Yh.includes(e)}function $h(e){let{path:t,query:n}=Ht(e);if(n||t!==e){let e=$h(t);return e.replaceTo===null&&Xh.includes(t)?e:{page:e.page,replaceTo:e.replaceTo??t}}let r=Hh(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:Zh}:e===`claude/settings`?{page:`claude`,replaceTo:`claude/code`}:e===`grok`?{page:`integrations`,replaceTo:`integrations/grok`}:e===`providers/workspace`?{page:`providers`,replaceTo:`providers`}:Qh(e,r)?{page:r,replaceTo:null}:{page:r,replaceTo:r}}var eg=`models/compatibility`,tg=`providers`,ng=200,rg={inbound:``,upstream:``};function ig(e){return e!==void 0&&Ip(e)?e:``}function ag(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?`${eg}?${n}`:eg}function og(e,t){let n=Ht(Uh(e));return n.path===t?new URLSearchParams(n.query):null}function sg(e=window.location.hash){let t=og(e,eg);if(!t)return null;let n=t.get(`inbound`),r=t.get(`upstream`);return{inbound:Ip(n)?n:``,upstream:Ip(r)?r:``}}function cg(e){return`${tg}?${new URLSearchParams({provider:e}).toString()}`}function lg(e){return`${tg}?${new URLSearchParams({provider:e,tab:`accounts`}).toString()}`}function ug(e=window.location.hash){return og(e,`providers`)?.get(`tab`)===`accounts`?`accounts`:`settings`}function dg(e=window.location.hash){let t=og(e,`providers`)?.get(`provider`)?.trim()??``;return t&&t.length<=ng?t:null}function fg(e){Wt(ag(e))}function pg(e){Wt(cg(e))}function mg(e,t=window){let n=lg(e);if(Vt(t.location.hash)===n){t.dispatchEvent(new t.Event(`hashchange`));return}Wt(n,t)}function hg(e,t,n,r){let[i,a]=(0,Z.useState)(()=>({name:dg(),tab:ug(),seq:0})),[o,s]=(0,Z.useState)(null),c=(0,Z.useRef)(t);if((0,Z.useEffect)(()=>{let e=()=>a(e=>({name:dg(),tab:ug(),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=dg();!n||o?.seq!==i.seq||i.name!==n||(t===null?e===n:t!==n)&&Ut(tg)},[o,i,t]),o?.tab===`settings`?{token:o.seq+1,provider:o.provider}:{token:0,provider:null}}function gg(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 _g(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
- `))}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
- `))!==-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 vg({apiBase:e}){let t=i(),n=`ocx.providers.config.v1:${e}`,[r,a]=(0,Z.useState)(()=>Na(n)),[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(``),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(`err`),[m,h]=(0,Z.useState)(0),[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)(null),[O,k]=(0,Z.useState)(null),[A,j]=(0,Z.useState)(!1),[M,N]=(0,Z.useState)(0),[P,F]=(0,Z.useState)(null),[I,L]=(0,Z.useState)({token:0,provider:null}),R=(0,Z.useRef)(!0),z=(0,Z.useRef)(null),B=(0,Z.useRef)(!1),V=(0,Z.useCallback)((e,t=!0,n)=>{l(e),d(t),p(n??(t?`ok`:`err`)),h(e=>e+1)},[]),H=(0,Z.useCallback)(()=>{l(``),d(!1),p(`err`)},[]),U=(0,Z.useCallback)(e=>{if(e.validationPending||e.catalogRefreshPending){l(t(e.validationPending?`pws.healthLabel.validationPending`:`codexAuth.catalogRefreshPending`)),d(!1),p(`warn`),h(e=>e+1);return}V(t(`codexAuth.accountAdded`),!0)},[V,t]);(0,Z.useEffect)(()=>(R.current=!0,()=>{R.current=!1}),[]),(0,Z.useEffect)(()=>{if(!c||!u)return;let e=window.setTimeout(H,4500);return()=>window.clearTimeout(e)},[c,u,m,H]);let ee=(0,Z.useCallback)(e=>{s(!1),D(null),T(e),L(t=>({token:t.token+1,provider:e}))},[]),W=hg(r?Object.keys(r.providers):null,w,T,ee),G=Rt(`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});Rt(fr(e),[e],async t=>await dr(await fetch(`${e}/api/usage?range=30d`,{signal:t})),{deadlineMs:6e4});let{quotaRefresh:te,invalidateProviderQuotas:ne,settleQuotaRefresh:K,beginQuotaRefresh:re}=gg(e),{fetchConfig:q,fetchOauth:J,fetchProviderQuotas:ie}=gh({apiBase:e,t,setConfig:a,setOauthProviders:_,setOauthStatus:y,notify:V,invalidateProviderQuotas:ne,configCacheKey:n}),Y=(0,Z.useCallback)(async()=>{await q()},[q]),X=Bh(e,q),ae=X.open,oe=(0,Z.useCallback)(e=>{ee(e),ae(e,!1)},[ee,ae]),se=eu(e),ce=se.activeNeedsReauth,le=(0,Z.useMemo)(()=>{let e=se.accounts;if(e.length===0&&se.loadState===`loading`)return v;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{...v,openai:{loggedIn:i,...a?{email:a}:{},...ce?{needsReauth:!0}:{}}}},[v,se.accounts,se.loadState,ce]),{accountSets:ue,setAccountSets:de,accountLoadStates:fe,switchingAccounts:pe,pausingAccounts:me,keyPools:ge,fetchAccountSets:_e,fetchKeyPools:ve,refreshAccountRosters:ye,oauthCardProviders:be,keyCardProviders:xe,switchAccount:Se,pauseAccount:Ce,setAccountPoolThreshold:we,setAccountThreshold:Te,switchApiKey:Ee,removeApiKey:De,addApiKeyValue:Oe,editCredentialAlias:ke,removeAccount:Ae,activeAccountNeedsReauth:je}=rh({apiBase:e,t,config:r,oauthStatus:le,aliveRef:R,notify:V,fetchConfig:Y,fetchOauth:J,fetchProviderQuotas:ie,codexActiveNeedsReauth:ce}),Me=(0,Z.useCallback)(e=>e&&!(e.kind===`oauth`?be:xe).includes(e.provider)?Promise.resolve(!0):ye(e),[ye,be,xe]),Ne=_g(e,r!==null,Me),Pe=JSON.stringify([e,be.toSorted(),xe.toSorted()]),Fe=(0,Z.useRef)(null);Rt(`provider-rosters:${Pe}`,[Pe],async e=>Fe.current===Pe?(Ne(),ye(void 0,e)):(Fe.current=Pe,!0),{enabled:r!==null,pollMs:3e4});let{draft:Ie,setDraft:Re,jsonEditorOpen:ze,jsonSaving:Be,jsonLeaveOpen:Ve,saveConfig:He,openJsonEditor:Ue,discardJsonEditor:We,requestCloseJsonEditor:Ge,restoreJsonEditor:Ke,jsonIsDirty:qe,setJsonLeaveOpen:Je}=oh({apiBase:e,config:r,notify:V,fetchConfig:Y,fetchProviderQuotas:ie,onSaved:e=>{e.length&&X.open(e,!0),N(e=>e+1)},t}),Ye=(0,Z.useCallback)(e=>{let t=r?.providers[e],n=t?.authMode,i=t&&he(e,t)?()=>se.load(!0,{validatePending:!0}):n===`oauth`?()=>_e([e],!0):n===`forward`||n===`local`?void 0:()=>ve([e],!0);return re(i)},[r,se,_e,ve,re]),Xe=(0,Z.useCallback)(()=>re(),[re]);(0,Z.useEffect)(()=>{z.current!==e&&(z.current=e,Promise.resolve().then(()=>{Y(),J()}))},[e,Y,J]);let Ze=()=>N(e=>e+1),{cancelLoginOAuth:Qe,loginOAuth:$e,logoutOAuth:et,onNativeLoginSettled:tt}=dh({apiBase:e,t,aliveRef:R,accountSets:ue,setAccountSets:de,setBusy:x,setStatus:l,setLoginInfo:C,setOauthStatus:y,notify:V,fetchConfig:Y,fetchOauth:J,fetchAccountSets:_e,fetchProviderQuotas:ie,bumpModelsRefresh:Ze,onLoginSettled:oe}),nt=(0,Z.useRef)(tt);(0,Z.useEffect)(()=>{nt.current=tt},[tt]),(0,Z.useEffect)(()=>Hf(e,e=>{nt.current(`kiro`,e).catch(()=>{})}),[e]);let{removeProvider:rt,confirmRemoveProvider:it,setProviderDisabled:at,setDefaultProvider:ot,updateProvider:st}=hh({apiBase:e,t,removeBusyRef:B,workspaceSelected:w,setWorkspaceSelected:T,setRemoveConfirmName:k,notify:V,fetchConfig:Y,fetchOauth:J,fetchProviderQuotas:ie,refreshCodexAccount:()=>se.load(!0)}),ct=(e,t=!1,n)=>{if(b!==e){if(Km(e)){F({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`)})}),c?(0,Q.jsx)(rn,{tone:f,onDismiss:H,dismissLabel:t(`common.close`),children:c}):(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=Rh(r,g,t),ut=zh(r,le),dt=e=>r.providers[e]?.authMode===`forward`,ft=async(n,i=!1)=>{if(n===`openai`){if(b===`openai`)return;let n=r.providers.openai,i=gp(n);if(i===`invalid`){V(t(`codexAuth.openaiMissing`),!1);return}if(i===`absent`||i===`disabled`){x(`openai`);try{await Cp(e,i),await Y()}catch(e){e instanceof Sp?V(t(e.i18nKey),!1):V(e instanceof Error?e.message:t(`prov.saveFailed`),!1);return}finally{R.current&&x(e=>e===`openai`?null:e)}}j(!0);return}if(dt(n)){j(!0);return}(r.providers[n]?.authMode===`oauth`||g.includes(n))&&ct(n,i)},pt=e=>{ee(e)},mt={onLogin:ct,onNativeLoginSettled:tt,onCancelLogin:Qe,onLogout:et,onReauth:(e,t)=>ct(e,!0,t),onSwitchAccount:Se,onPauseAccount:Ce,onAccountPoolThreshold:we,onAccountThreshold:Te,onRemoveAccount:Ae,onRetryAccounts:async e=>{await _e([e])},onAddApiKey:Oe,onSwitchApiKey:Ee,onRemoveApiKey:De,onEditAlias:ke,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:()=>s(!0),children:[(0,Q.jsx)(Le,{}),t(`prov.add`)]})})]}),c&&(0,Q.jsx)(rn,{tone:f,onDismiss:H,dismissLabel:t(`common.close`),children:c}),(0,Q.jsx)(Ns,{onRemoveProvider:rt,providers:r.providers,apiBase:e,defaultProvider:r.defaultProvider,selectedName:w,onSelect:T,onAddProvider:e=>{D(e??null),s(!0)},onEditConfig:Ue,jsonEditor:{open:ze,draft:Ie,isDirty:qe,onDraftChange:Re,onSave:()=>He(),onClose:Ge,onRestore:Ke},jsonSaving:Be,modelsRefreshToken:M,onModelsSettled:X.modelsSettled,activeAccountNeedsReauth:je,quotaRefreshEpoch:te.epoch,quotaForceRefresh:te.force,onQuotaRefreshSettled:K,onRefreshAllQuotas:Xe,detail:(t,n)=>{let i=ut[t.name]??v[t.name];return(0,Q.jsx)(Um,{item:t,preset:zs(t,G.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:()=>Wt(`models`),onCreateJevAuto:Nr(t)?()=>Wt(qh(t.name)):void 0,modelsLoading:n.modelsLoading,modelsLoadFailed:n.modelsLoadFailed,onRetryModels:n.onRetryModels,oauthEmail:i?.email,onDeselect:()=>T(null),apiBase:e,oauth:i,accounts:ue[t.name]?.accounts??[],keys:ge[t.name]??[],accountLoadState:fe[t.name]??(t.authMode===`oauth`?`idle`:`ready`),accountsFocusToken:I.token,accountsFocusProvider:I.provider,settingsFocusToken:W.token,settingsFocusProvider:W.provider,switchingAccountId:pe[t.name]?.accountId??null,pausingAccountId:me[t.name]?.accountId??null,busyProvider:b,loginHint:S,authHandlers:mt,onRefreshQuota:()=>Ye(t.name),isDefault:t.name===r.defaultProvider,onRemoveProvider:rt,onSetDisabled:at,onSetDefault:e=>{ot(e)},onUpdateProvider:st,codexController:se},t.name)}}),(0,Q.jsx)(Lh,{apiBase:e,config:r,adding:o,modelsNotice:X.notice?{provider:X.notice.context.provider,initialRegistration:X.notice.context.initialRegistration,catalogRefreshPending:X.notice.context.catalogRefreshPending,loading:X.notice.loading,failed:X.notice.failed,providerKnown:X.notice.context.providers.every(e=>!!r.providers[e]),selection:X.notice.context.providers.length===1?r.providers[X.notice.context.provider]?.initialModelSelection:X.notice.context.providers.some(e=>r.providers[e]?.initialModelSelection?.status===`pending`)?{status:`pending`}:void 0,onClose:X.close,onOpenModels:()=>{X.close(),Wt(`models`)},onRetry:()=>{let e=X.notice.context;X.open(e.providers,e.initialRegistration,e.catalogRefreshPending),Ze()}}:null,addIntent:E,busy:b,addModalAccountRows:lt,accountLoginStatus:ut,accountLoginHint:S,removeConfirmName:O,removeDefaultProvider:O===r.defaultProvider?Object.entries(r.providers).find(([e,t])=>e!==O&&t.disabled!==!0)?.[0]??null:null,codexLoginOpen:A,jsonLeaveOpen:Ve,jsonSaving:Be,oauthTosPending:P,onCloseAdd:()=>{b&&Qe(b),s(!1),D(null)},onAdded:e=>{s(!1),D(null),H(),X.open(e,!r.providers[e]),Y(),J(),ie(!0),Ze()},onAccountLogin:ft,onAccountCancelLogin:e=>{Qe(e)},onAccountLogout:e=>{et(e)},onAccountManage:pt,onOpenAdd:J,onCloseCodexLogin:()=>j(!1),onCodexAdded:e=>{j(!1),U(e),e.validationPending||X.open(`openai`,!r.providers.openai,e.catalogRefreshPending),Y(),J(),ie(!0),Ze()},onCancelRemove:()=>k(null),onConfirmRemove:()=>{it(O)},onCancelJsonLeave:()=>{Be||Je(!1)},onDiscardJson:We,onSaveJson:()=>{He()},onCancelOauthTos:()=>F(null),onContinueOauthTos:()=>{let e=P;e&&(F(null),$e(e.provider,e.addAccount,e.accountId))}})]})}function yg(e){let{t}=D();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:t(`models.staleBanner`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:e.controller.restarting,onClick:()=>{e.controller.restart()},children:e.controller.restarting?t(`dash.codexRestarting`):t(`dash.codexRestart`)})]}):null}function bg(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`&&e.trim().length>0)}function xg(e){return e===null||e===`alphabetical`||e===`provider`||e===`most-used`}function Sg(e){if(typeof e!=`object`||!e)return!1;let t=e;return bg(t.pickerOrder)&&xg(t.pickerOrderMode)}function Cg(e){if(!Sg(e))return!1;let t=e;return bg(t.pickerAvailable)&&(!(`chosen`in t)||Array.isArray(t.chosen)&&t.chosen.every(e=>typeof e==`string`))}function wg(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 Tg(e){let t=e.indexOf(`/`);return t<0?[``,e]:[e.slice(0,t),e.slice(t+1)]}var Eg=(e,t)=>e.localeCompare(t,`en`);function Dg(e,t){let[n,r]=Tg(e),[i,a]=Tg(t);return Eg(n,i)||Eg(r,a)}function Og(e,t,n=[],r=[]){if(e==="default")return null;let i=[...new Set(t)];if(e===`alphabetical`)return i.sort((e,t)=>Eg(Tg(e)[1],Tg(t)[1])||Dg(e,t));if(e===`provider`)return i.sort(Dg);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)||Dg(e,t))}function kg(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=Og(n,e);if(r!==null&&r.length===t.length&&r.every((e,n)=>e===t[n]))return n}return`custom`}function Ag(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 jg(e,t,n){return JSON.stringify([e,t,n.pickerAvailable,n.chosen??null,n.pickerOrder,n.pickerOrderMode])}function Mg(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 Ng(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(!Mg(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=Ag(e.pickerOrder,n,t);return{fixed:o,order:[...new Set([...o,...s,...n])]}}function Pg(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 Fg(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 Ig=`application/x-ocx-picker-order`,Lg=0;function Rg(){let e=++Lg;if(typeof crypto<`u`&&typeof crypto.randomUUID==`function`)try{return`${e}:${crypto.randomUUID()}`}catch{}return`picker-${Date.now().toString(36)}-${e}`}function zg({apiBase:e,active:t,identities:n,onAccepted:r,onBusyChange:a}){let o=i(),[s,c]=(0,Z.useState)(null),[l,u]=(0,Z.useState)([]),[d,f]=(0,Z.useState)(!1),[p,m]=(0,Z.useState)(null),[h,g]=(0,Z.useState)(!1),[_,v]=(0,Z.useState)(``),[y,b]=(0,Z.useState)(null),[x,S]=(0,Z.useState)(null),C=(0,Z.useRef)({generation:0,flight:null,drag:null}),[w,E]=(0,Z.useState)({apiBase:e,active:t,onBusyChange:a}),D=JSON.stringify(n.map(({provider:e,id:t,namespaced:n})=>[e,t,n])),O=(0,Z.useRef)(D);(0,Z.useLayoutEffect)(()=>{O.current=D},[D]);let k=s!==null&&s.identities!==D,A=!t||d||!s||p!==null||k,j=s!==null&&JSON.stringify(l)!==JSON.stringify(s.order),M=(0,Z.useCallback)(()=>{C.current.drag=null,b(null),S(null)},[]);(w.apiBase!==e||w.active!==t||w.onBusyChange!==a)&&(E({apiBase:e,active:t,onBusyChange:a}),c(null),u([]),m(null),g(!1),f(!1));let[N,P]=(0,Z.useState)({disabled:A,snapshot:s,identitySignature:D});(N.disabled!==A||N.snapshot!==s||N.identitySignature!==D)&&(P({disabled:A,snapshot:s,identitySignature:D}),b(null),S(null)),(0,Z.useLayoutEffect)(()=>{let e=C.current;return e.generation++,()=>{e.generation++,e.flight?.controller.abort(),e.flight?.clear(),e.flight=null,e.drag=null,a(!1)}},[e,t,a]),(0,Z.useLayoutEffect)(()=>{C.current.drag=null},[A,s,D]);let F=async i=>{if(!t||C.current.flight||i&&(A||!j))return;let o=C.current.generation,d=T(15e3);C.current.flight=d,f(!0),a(!0),g(!1),M();let p=()=>C.current.generation===o&&C.current.flight===d,h=()=>p()&&!d.signal.aborted&&O.current===D;try{let t=await fetch(`${e}/api/subagent-models`,{signal:d.signal});if(!h())return;let a=await fn(t);if(!h())return;if(!Cg(a))throw Error(`Invalid picker settings`);let f=jg(e,o,a);if(i&&(!s||f!==s.signature||D!==s.identities)){m(`models.pickerOrder.changed`);return}let p=Ng(a,n);if(!p){m(a.pickerOrder.some(e=>!e.includes(`/`))?`models.pickerOrder.nativeLocked`:a.chosen===void 0?`models.pickerOrder.unknownChosen`:`models.pickerOrder.catalogRequired`);return}if(!i){c({...p,signature:f,identities:D}),u(p.order),m(null),v(``);return}let g=await fetch(`${e}/api/subagent-models`,{method:`PUT`,headers:{"Content-Type":`application/json`},signal:d.signal,body:JSON.stringify({pickerOrder:l,pickerOrderMode:null})});if(!h())return;let _=await fn(g);if(!h())return;if(!Sg(_)||!(`ok`in _)||_.ok!==!0)throw Error(`Invalid picker receipt`);u(_.pickerOrder),m(`models.pickerOrder.savedReload`),r({pickerOrder:_.pickerOrder,pickerOrderMode:_.pickerOrderMode,catalogRefresh:`catalogRefresh`in _?_.catalogRefresh:void 0})}catch{p()&&O.current===D&&g(!0)}finally{d.clear(),p()&&(C.current.flight=null,f(!1),a(!1))}},I=(0,Z.useEffectEvent)(async()=>{let e=C.current,n=e.generation;await Promise.resolve(),t&&e.generation===n&&F(!1)});(0,Z.useEffect)(()=>{t&&I()},[e,t,a]);let L=(e,t)=>{A||(u(t),v(o(`models.pickerOrder.position`,{model:e,position:t.indexOf(e)+1,total:t.length})),M())},R=new Set(l),z=new Set(s?.fixed),B=e=>!A&&R.has(e)&&!z.has(e),V=(e,t)=>{!C.current.drag||C.current.drag.id===t||!B(C.current.drag.id)||!B(t)||!e.dataTransfer.types.includes(Ig)||(e.preventDefault(),e.dataTransfer.dropEffect=`move`,S(t))};return(0,Q.jsxs)(`section`,{className:`picker-order-editor`,"aria-label":o(`models.pickerOrder.custom`),"aria-busy":d,children:[(0,Q.jsx)(`p`,{className:`muted text-label`,children:o(`models.pickerOrder.editorHint`)}),(p||k)&&(0,Q.jsx)(`p`,{role:`alert`,children:o(p??`models.pickerOrder.changed`)}),h&&(0,Q.jsx)(`p`,{role:`alert`,children:o(`models.pickerOrder.requestFailed`)}),s&&l.length===0&&(0,Q.jsx)(`p`,{children:o(`models.pickerOrder.empty`)}),(0,Q.jsx)(`ol`,{className:`picker-order-list`,children:l.map((e,t)=>{let n=z.has(e);return(0,Q.jsxs)(`li`,{className:`picker-order-row${y===e?` cwi-target-row--dragging`:``}${x===e?` cwi-target-row--drop`:``}`,onDragOver:t=>V(t,e),onDragLeave:()=>S(null),onDrop:t=>{let n=C.current.drag;n&&n.id!==e&&n.token===t.dataTransfer.getData(Ig)&&B(n.id)&&B(e)&&(t.preventDefault(),L(n.id,Pg(l,n.id,e,s?.fixed??[]))),M()},onDragEnd:M,children:[(0,Q.jsx)(`button`,{type:`button`,className:`cwi-target-grip`,disabled:A||n,draggable:!A&&!n,"aria-label":o(`models.pickerOrder.dragModel`,{model:e}),onDragStart:t=>{if(!B(e)){t.preventDefault();return}let n=Rg();C.current.drag={id:e,token:n},b(e),t.dataTransfer.effectAllowed=`move`,t.dataTransfer.setData(Ig,n)},children:(0,Q.jsx)(Me,{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:o(`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:A||n||t===0||z.has(l[t-1]),"aria-label":o(`models.pickerOrder.upModel`,{model:e}),onClick:()=>L(e,Fg(l,e,-1,s?.fixed??[])),children:(0,Q.jsx)(He,{width:14,height:14,"aria-hidden":`true`})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:A||n||t===l.length-1||z.has(l[t+1]),"aria-label":o(`models.pickerOrder.downModel`,{model:e}),onClick:()=>L(e,Fg(l,e,1,s?.fixed??[])),children:(0,Q.jsx)(Ye,{width:14,height:14,"aria-hidden":`true`})})]})]},e)})}),(0,Q.jsx)(`p`,{role:`status`,"aria-live":`polite`,children:_}),(0,Q.jsxs)(`div`,{className:`row`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:A||!j,onClick:()=>void F(!0),children:o(d?`models.pickerOrder.applying`:`models.pickerOrder.saveDraft`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:!t||d,onClick:()=>void F(!1),children:o(`models.pickerOrder.reloadDraft`)})]})]})}function Bg({apiBase:e,onSaved:t}){let n=i(),[r,a]=(0,Z.useState)(!0),[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)(!0),h=(0,Z.useRef)(!1),g=(0,Z.useRef)(0),_=(0,Z.useCallback)(async()=>{if(h.current)return;let t=++g.current,n=T(15e3);try{let r=await fetch(`${e}/api/settings`,{signal:n.signal});if(!r.ok)throw Error(`load`);let i=await r.json();if(h.current||t!==g.current)return;if(typeof i.fastRows!=`boolean`)throw Error(`shape`);m.current=i.fastRows,a(i.fastRows),s(!0),d(!1)}catch{!h.current&&t===g.current&&d(!0)}finally{n.clear()}},[e]);(0,Z.useEffect)(()=>{let e=window.setTimeout(()=>{_()},0),t=ra(()=>{_()},3e4);return()=>{window.clearTimeout(e),t()}},[_]);let v=(0,Z.useCallback)(async()=>{if(h.current||!o)return;let r=m.current,i=!r;m.current=i,a(i),h.current=!0,l(!0),p(null),g.current+=1;let c=T(15e3);try{let r=await fn(await fetch(`${e}/api/settings`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({fastRows:i}),signal:c.signal}))??{};if(r.ok!==!0||typeof r.fastRows!=`boolean`)throw Error(`unconfirmed`);m.current=r.fastRows,a(r.fastRows),s(!0),d(!1),p(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 o=T(15e3);try{let t=await fetch(`${e}/api/settings`,{signal:o.signal});if(!t.ok)throw Error(`reconcile`);let r=await t.json();if(typeof r.fastRows!=`boolean`)throw Error(`shape`);m.current=r.fastRows,a(r.fastRows),s(!0),d(!1),p(r.fastRows===i?{tone:`warn`,message:n(`models.fastRows.refreshHint`)}:{tone:`err`,message:n(`models.fastRows.updateFailed`)})}catch{m.current=r,a(r),p({tone:`err`,message:n(`models.fastRows.updateFailed`)})}finally{o.clear(),t?.()}}finally{c.clear(),h.current=!1,l(!1)}},[e,o,t,n]),y=u&&!o;return(0,Q.jsxs)(`div`,{className:`card card-row fast-rows-card`,"aria-busy":c||!o&&!y||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:y?`status`:void 0,children:n(y?`models.fastRows.loadFailed`:o?`models.fastRows.desc`:`common.loading`)}),o&&u&&(0,Q.jsx)(`div`,{className:`card-sub faint`,role:`status`,children:n(`models.fastRows.loadFailed`)})]}),(0,Q.jsxs)(`div`,{className:`fast-rows-controls`,children:[u&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{_()},disabled:c,children:n(`common.retry`)}),o&&(0,Q.jsx)(`button`,{type:`button`,className:`toggle ${r?`on`:``}`,onClick:()=>{v()},disabled:c,"aria-pressed":r,"aria-label":n(`models.fastRows.title`),title:n(`models.fastRows.title`),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})})]}),f&&(0,Q.jsx)(`div`,{className:`fast-rows-feedback is-${f.tone}`,role:f.tone===`err`?`alert`:`status`,"aria-atomic":`true`,children:f.message})]})}function Vg({showOrderEditor:e,onSaved:t,...n}){return(0,Q.jsxs)(Q.Fragment,{children:[e&&(0,Q.jsx)(zg,{...n},n.apiBase),(0,Q.jsx)(Bg,{apiBase:n.apiBase,onSaved:t})]})}var Hg={operator:`models.displayNameSourceOperator`,provider:`models.displayNameSourceProvider`,fallback:`models.displayNameSourceFallback`};function Ug({model:e,saving:t,requestError:n,currentNamePending:r=!1,mutationOutcomeUnknown:a=!1,onRetry:o,onEdit:s,onSave:c,onReset:l,onClose:u}){let d=i(),f=(0,Z.useRef)(null),p=(0,Z.useRef)(null),m=(0,Z.useRef)(null),h=(0,Z.useRef)(t),g=(0,Z.useId)(),_=(0,Z.useId)(),v=(0,Z.useId)(),[y,b]=(0,Z.useState)(e),[x,S]=(0,Z.useState)(e.displayNameOverride??``),[C,w]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{let e=f.current;return e&&!e.open&&e.showModal(),p.current?.focus(),()=>{e?.open&&e.close()}},[]),(0,Z.useEffect)(()=>{let e=h.current&&!t&&!!n;h.current=t,e&&(a?m.current?.focus():p.current?.focus())},[n,t,a]),y!==e&&(b(e),S(e.displayNameOverride??``),w(null));let T=C?d(C):null,E=T??n,D=e.displayNameSource?Hg[e.displayNameSource]:`models.displayNameSourceFallback`,O=()=>{t||u()};return(0,Q.jsxs)(`dialog`,{ref:f,className:`modal-overlay`,"aria-labelledby":g,onCancel:e=>{e.preventDefault(),O()},children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":d(`common.close`),tabIndex:-1,disabled:t,onClick:O}),(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(o){o();return}if(a)return;let n=lc(x);w(n),n||c(x.trim())},children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{id:g,children:d(`models.displayNameTitle`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:t,onClick:O,children:d(`common.close`)})]}),(0,Q.jsxs)(`div`,{className:`model-display-name-identity`,children:[(0,Q.jsx)(`span`,{className:`muted text-label`,children:d(`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:d(`models.displayNameCurrent`)}),(0,Q.jsx)(`strong`,{children:r?d(`models.displayNameCurrentUnavailable`):e.displayName??e.namespaced}),!r&&(0,Q.jsx)(`span`,{className:`models-chip muted text-caption`,children:d(D)})]}),(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`${g}-input`,children:d(`models.displayNameField`)}),(0,Q.jsx)(`input`,{ref:p,id:`${g}-input`,className:`input`,value:x,maxLength:129,placeholder:d(`models.displayNamePlaceholder`),"aria-describedby":`${_}${E?` ${v}`:``}`,"aria-invalid":T?!0:void 0,disabled:t||a,onChange:e=>{t||a||(s?.(),S(e.target.value),w(null))}}),(0,Q.jsx)(`p`,{id:_,className:`muted small`,children:d(`models.displayNameHelp`,{model:e.namespaced})}),E&&(0,Q.jsx)(`p`,{id:v,className:`model-display-name-error`,role:`alert`,children:E}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:t||a||!e.displayNameOverride,onClick:()=>{!t&&!a&&l()},children:d(`models.displayNameReset`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:t,onClick:O,children:d(`common.cancel`)}),(0,Q.jsx)(`button`,{ref:m,type:`submit`,className:`btn btn-primary btn-sm`,disabled:t||a&&!o,children:d(t?`common.saving`:o?`common.retry`:`common.save`)})]})]})]})}var Wg=[`input`,`output`,`cacheRead`,`cacheWrite`],Gg={input:`pricing.override.input`,output:`pricing.override.output`,cacheRead:`pricing.override.cacheRead`,cacheWrite:`pricing.override.cacheWrite`},Kg=1e6,qg=6e4,Jg={input:``,output:``,cacheRead:``,cacheWrite:``};function Yg(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Xg(e){return Yg(e)&&Wg.every(t=>typeof e[t]==`number`&&Number.isFinite(e[t])&&e[t]>=0&&e[t]<=Kg)}function Zg({model:e,apiBase:t,onRefresh:n,onClose:r}){let a=i(),o=(0,Z.useId)(),s=(0,Z.useRef)(null),c=(0,Z.useRef)(null),l=(0,Z.useRef)(null),u=(0,Z.useRef)(null),d=(0,Z.useRef)(!1),[f,p]=(0,Z.useState)(`loading`),[m,h]=(0,Z.useState)(Jg),[g,_]=(0,Z.useState)(!1),[v,y]=(0,Z.useState)(null),[b,x]=(0,Z.useState)(!1),S=`${t}/api/providers/${encodeURIComponent(e.provider)}/model-costs`,C=f===`saving`||f===`refreshing`,w=f!==`ready`,E=(0,Z.useCallback)((t=!1)=>{if(u.current)return;let n=T(qg);u.current=n,fetch(S,{signal:n.signal,cache:`no-store`}).then(async r=>{let i=await fn(r);if(n.signal.throwIfAborted(),!Yg(i)||i.provider!==e.provider||!Yg(i.modelCosts))throw Error(`invalid model-costs response`);let a=Object.hasOwn(i.modelCosts,e.id)?i.modelCosts[e.id]:void 0;if(a!==void 0&&!Xg(a))throw Error(`invalid model cost`);u.current===n&&(h(a===void 0?Jg:{input:String(a.input),output:String(a.output),cacheRead:String(a.cacheRead),cacheWrite:String(a.cacheWrite)}),_(a!==void 0),x(t),p(`ready`))}).catch(()=>{u.current===n&&(p(t?`unknown`:`loadFailed`),y(t?`pricing.override.recoveryFailed`:`pricing.override.loadFailed`))}).finally(()=>{n.clear(),u.current===n&&(u.current=null)})},[S,e.id,e.provider]);(0,Z.useEffect)(()=>{let e=s.current;return e&&!e.open&&e.showModal(),E(),()=>{u.current?.controller.abort(),u.current?.clear(),u.current=null,e?.open&&e.close()}},[E]),(0,Z.useEffect)(()=>{f===`ready`?c.current?.focus():(f===`unknown`||f===`loadFailed`||f===`refreshFailed`)&&l.current?.focus()},[f]);let D=async t=>{if(u.current||(t===void 0?f!==`refreshFailed`:f!==`ready`))return;let i=T(qg);u.current=i,p(t===void 0?`refreshing`:`saving`),d.current=!0,y(null);let a=t===void 0;try{if(t!==void 0){let n=await fn(await fetch(S,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({modelId:e.id,cost:t}),signal:i.signal}));i.signal.throwIfAborted();let r=Yg(n)?n.cost:void 0;if(!Yg(n)||n.ok!==!0||n.provider!==e.provider||n.modelId!==e.id||(t===null?r!==null:!Xg(r)||!Wg.every(e=>r[e]===t[e])))throw Error(`invalid model-costs receipt`);if(u.current!==i)return;a=!0,p(`refreshing`)}if(!await n(i.signal))throw Error(`catalog refresh failed`);i.signal.throwIfAborted(),u.current===i&&r()}catch{if(u.current!==i)return;p(a?`refreshFailed`:`unknown`),y(a?`pricing.override.refreshFailed`:`pricing.override.outcomeUnknown`)}finally{i.clear(),u.current===i&&(u.current=null,d.current=!1)}},O=()=>{d.current||r()};return(0,Q.jsxs)(`dialog`,{ref:s,className:`modal-overlay`,"aria-labelledby":`${o}-title`,onCancel:e=>{e.preventDefault(),O()},children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,tabIndex:-1,"aria-label":a(`pricing.override.close`),disabled:C,onClick:O}),(0,Q.jsxs)(`form`,{className:`modal-card model-display-name-dialog`,role:`document`,noValidate:!0,"aria-busy":f===`loading`||C,onClick:e=>e.stopPropagation(),onSubmit:e=>{if(e.preventDefault(),u.current)return;if(f===`unknown`||f===`loadFailed`){p(`loading`),y(null),E(f===`unknown`);return}if(f===`refreshFailed`){D(void 0);return}if(w)return;let t={input:Number(m.input),output:Number(m.output),cacheRead:Number(m.cacheRead),cacheWrite:Number(m.cacheWrite)};if([...e.currentTarget.querySelectorAll(`input`)].some(e=>e.validity.badInput)||!m.input.trim()||!m.output.trim()||!Xg(t)){y(`pricing.override.invalid`),c.current?.focus();return}D(t)},children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{id:`${o}-title`,children:a(`pricing.override.title`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:C,onClick:O,children:a(`pricing.override.close`)})]}),(0,Q.jsxs)(`div`,{className:`model-display-name-identity`,children:[(0,Q.jsx)(`span`,{className:`muted text-label`,children:a(`pricing.override.modelId`)}),(0,Q.jsx)(`code`,{className:`mono text-control`,children:e.namespaced})]}),(0,Q.jsx)(`p`,{id:`${o}-help`,className:`muted small`,children:a(`pricing.override.help`)}),f===`loading`&&(0,Q.jsx)(`p`,{role:`status`,className:`muted small`,children:a(`pricing.override.loading`)}),Wg.map(e=>(0,Q.jsxs)(Z.Fragment,{children:[(0,Q.jsx)(`label`,{className:`field-label`,htmlFor:`${o}-${e}`,children:a(Gg[e])}),(0,Q.jsx)(`input`,{ref:e===`input`?c:void 0,id:`${o}-${e}`,className:`input`,type:`number`,min:0,max:Kg,step:`any`,inputMode:`decimal`,value:m[e],disabled:w,required:e===`input`||e===`output`,"aria-describedby":`${o}-help${v?` ${o}-error`:``}`,"aria-invalid":v===`pricing.override.invalid`||void 0,onChange:t=>{if(w||u.current)return;let n=t.target.value;h(t=>({...t,cacheRead:t.cacheRead||`0`,cacheWrite:t.cacheWrite||`0`,[e]:n})),y(null)}})]},e)),b&&(0,Q.jsx)(`p`,{role:`status`,className:`muted small`,children:a(`pricing.override.recovered`)}),v&&(0,Q.jsx)(`p`,{id:`${o}-error`,className:`model-display-name-error`,role:`alert`,children:a(v)}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:w||!g,onClick:()=>void D(null),children:a(`pricing.override.reset`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:C,onClick:O,children:a(`pricing.override.cancel`)}),(0,Q.jsx)(`button`,{ref:l,type:`submit`,className:`btn btn-primary btn-sm`,disabled:f===`loading`||C,children:a(C?`pricing.override.saving`:f===`unknown`||f===`loadFailed`?`pricing.override.reload`:f===`refreshFailed`?`pricing.override.refresh`:`pricing.override.save`)})]})]})]})}var Qg=[`text`,`image`,`audio`],$g=[`100000`,`128000`,`200000`,`256000`,`352000`,`500000`,`1000000`],e_=6e4;function t_(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function n_(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 r_(e){return e.toSorted().join(`,`)}function i_(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 a_({row:e,apiBase:t,onRefresh:n,onFeedback:r,onClose:a}){let o=i(),s=(0,Z.useId)(),c=(0,Z.useRef)(null),l=(0,Z.useRef)(null),u=(0,Z.useRef)(null),[d]=(0,Z.useState)(()=>n_(e)),[f,p]=(0,Z.useState)(`ready`),[m,h]=(0,Z.useState)(()=>d.contextWindow),[g,_]=(0,Z.useState)(()=>d.contextWindow!==``&&!$g.includes(d.contextWindow)),[v,y]=(0,Z.useState)(()=>[...d.modalities]),[b,x]=(0,Z.useState)(()=>d.reasoning),[S,C]=(0,Z.useState)(()=>[...d.ladder]),[w,E]=(0,Z.useState)(()=>d.defaultEffort),[D,O]=(0,Z.useState)(null),k=f===`saving`||f===`restoring`,A=f===`unknown`||f===`saved-stale`;(0,Z.useEffect)(()=>{let e=c.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)(()=>{A&&l.current?.focus()},[A]);let j=async()=>{let t=T(e_);u.current=t;try{if(!await n(t.signal)||(t.signal.throwIfAborted(),u.current!==t))return;r(!0,o(`models.settingsReloaded`,{model:e.namespaced})),a()}catch{}finally{t.clear(),u.current===t&&(u.current=null)}},M=t=>{if(x(t),!t||S.length>0)return;let n=Array.isArray(e.reasoningEfforts)?e.reasoningEfforts:void 0;C(n&&n.length>0?[...n]:[...uc])},N=(e,t)=>{C(n=>t?[...n,e]:n.filter(t=>t!==e)),!t&&w===e&&E(``)},P=()=>{k||a()},F=async(i,s)=>{let c=T(e_);u.current=c,p(s?`restoring`:`saving`),O(null);let l=!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,...i}),signal:c.signal});if(f.status>=400&&f.status<500)throw d=!0,Error(`model settings rejected`);let p=await fn(f);if(c.signal.throwIfAborted(),!t_(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||!t_(p.catalogRefresh)||![`committed`,`skipped`,`failed`].includes(String(p.catalogRefresh.status)))throw Error(`invalid model-settings receipt`);if(u.current!==c)return;if(l=!0,!p.changed){r(!0,o(s&&!p.hasOverrides?`models.settingsNothingToRestore`:`models.settingsNoChange`,{model:e.namespaced})),a();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(),u.current!==c)return;h?r(!1,o(`models.settingsSavedCodexStale`,{model:e.namespaced})):s?r(!0,o(`models.settingsRestored`,{model:e.namespaced})):r(!0,o(`models.settingsSaved`,{model:e.namespaced})),a()}catch{if(u.current!==c)return;if(d){p(`ready`),O(`models.settingsRejected`);return}p(l?`saved-stale`:`unknown`),O(l?`models.settingsRefreshFailed`:`models.settingsSaveFailed`)}finally{c.clear(),u.current===c&&(u.current=null)}},I=()=>{if(f!==`ready`)return;let e=i_(m);if(e===void 0){O(`models.contextInvalid`);return}let t=d,n={};m.trim()!==t.contextWindow&&(n.contextWindow=e),r_(v)!==r_(t.modalities)&&(n.inputModalities=v.length>0?[...v]:null);let r=b?r_(S):``;(b!==t.reasoning||r!==r_(t.ladder))&&(n.reasoningEfforts=b?[...S]:null);let i=b&&S.includes(w)?w:``;if(i!==t.defaultEffort&&(n.defaultReasoningEffort=i||null),Object.keys(n).length===0){a();return}F(n,!1)},L=async()=>{f===`ready`&&await Qi({message:o(`models.settingsRestoreConfirm`,{model:e.namespaced}),confirmLabel:o(`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=>Qg.includes(e)):[];return(0,Q.jsxs)(`dialog`,{ref:c,className:`modal-overlay`,"aria-labelledby":s+`-title`,onCancel:e=>{e.preventDefault(),P()},children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":o(`common.close`),tabIndex:-1,disabled:k,onClick:P}),(0,Q.jsxs)(`form`,{className:`modal-card model-display-name-dialog`,role:`document`,noValidate:!0,"aria-busy":k,onClick:e=>e.stopPropagation(),onSubmit:e=>{e.preventDefault(),I()},children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{id:s+`-title`,children:o(`models.settingsTitle`,{model:e.namespaced})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:k,onClick:P,children:o(`common.close`)})]}),D&&(0,Q.jsx)($,{tone:f===`saved-stale`?`warn`:`err`,children:o(D)}),(0,Q.jsxs)(`div`,{className:`models-field-stack`,children:[(0,Q.jsxs)(`div`,{className:`text-label models-field`,children:[o(`models.customFieldModelId`),(0,Q.jsx)(`code`,{className:`mono text-control`,children:e.namespaced})]}),(0,Q.jsxs)(`label`,{className:`text-label models-field`,children:[o(`models.customFieldContext`),(0,Q.jsxs)(`div`,{className:`row models-field-row`,children:[(0,Q.jsx)(an,{value:g?hc:m,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:hc,label:o(`models.custom`)}],onChange:e=>{if(e===`custom`){_(!0);return}_(!1),h(e)},disabled:k,label:o(`models.customFieldContext`),portal:!1}),g&&(0,Q.jsx)(`input`,{className:`input`,style:{width:120},inputMode:`numeric`,value:m,onChange:e=>h(e.target.value),disabled:k,placeholder:o(`models.customPlaceholder`),"aria-label":o(`models.customFieldContext`)})]}),e.contextWindowDeclared===void 0&&(0,Q.jsx)(`span`,{className:`muted text-caption`,children:o(`models.settingsContextInherit`,{value:e.contextWindow?String(e.contextWindow):o(`models.settingsContextUnknown`)})})]}),(0,Q.jsxs)(`div`,{className:`text-label models-field`,children:[o(`models.customFieldModalities`),(0,Q.jsx)(`div`,{className:`row models-field-row`,children:Qg.map(e=>(0,Q.jsxs)(`label`,{className:`row models-modality-option`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:v.includes(e),onChange:t=>{let n=t.target.checked;y(t=>{if(!n)return t.filter(t=>t!==e);let r=t.length>0?t:z;return[...new Set([...r,e])]})},disabled:k}),(0,Q.jsx)(`span`,{className:`text-control`,children:e})]},e))}),v.length===0&&(0,Q.jsx)(`span`,{className:`muted text-caption`,children:o(`models.settingsModalitiesInherit`,{modalities:R||o(`models.settingsModalitiesUnknown`)})})]}),(0,Q.jsxs)(`div`,{className:`text-label models-field`,children:[o(`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:b,onChange:e=>M(e.target.checked),disabled:k}),(0,Q.jsx)(`span`,{className:`text-control`,children:o(`models.customFieldReasoningOverride`)})]})}),b&&(0,Q.jsx)(`div`,{className:`row models-field-row`,style:{flexWrap:`wrap`},children:uc.map(e=>(0,Q.jsxs)(`label`,{className:`row models-modality-option`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:S.includes(e),onChange:t=>N(e,t.target.checked),disabled:k}),(0,Q.jsx)(`span`,{className:`text-control`,children:o(`models.reasoningEffort.`+e)})]},e))})]}),b&&(0,Q.jsxs)(`label`,{className:`text-label models-field`,children:[o(`models.settingsDefaultEffort`),(0,Q.jsx)(`div`,{className:`row models-field-row`,children:(0,Q.jsx)(an,{value:w,options:[{value:``,label:`—`},...S.map(e=>({value:e,label:o(`models.reasoningEffort.`+e)}))],onChange:E,disabled:k,label:o(`models.settingsDefaultEffort`),portal:!1})})]})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[A&&(0,Q.jsx)(`button`,{ref:l,type:`button`,className:`btn btn-ghost`,onClick:()=>void j(),children:o(`models.settingsReload`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,title:o(`models.settingsRestoreHint`),disabled:k||A,onClick:()=>void L(),children:o(`models.settingsRestore`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:P,disabled:k,children:o(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`submit`,className:`btn btn-primary`,disabled:k||A,children:o(k?`models.customSaving`:`models.customApply`)})]})]})]})}var o_=[`fresh`,`stale`,`not_running`,`unknown`],s_=[`stopped`,`nothing_running`,`enumeration_unavailable`,`partially_stopped`];function c_(e){return Array.isArray(e)&&e.every(e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0)}function l_(e){if(typeof e!=`object`||!e)return!1;let t=e;if(!(typeof t.success==`boolean`&&typeof t.synced==`boolean`&&typeof t.stateBefore==`string`&&o_.includes(t.stateBefore)&&typeof t.code==`string`&&s_.includes(t.code)&&c_(t.requested)&&c_(t.stopped)&&c_(t.surviving)&&c_(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`||!c_(n.stopped)||!c_(n.surviving)||n.relaunch!==`started`&&n.relaunch!==`skipped`||n.reason!==void 0&&typeof n.reason!=`string`||n.relaunch===`started`&&n.surviving.length>0)return!1}return!0}function u_(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.state==`string`&&o_.includes(t.state)&&typeof t.runningCount==`number`&&Number.isSafeInteger(t.runningCount)&&t.runningCount>=0}var d_={state:null,runningCount:0};async function f_(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 d_;let i=await r.json().catch(()=>null);return u_(i)?{state:i.state,runningCount:i.runningCount}:d_}catch{return d_}}var p_=3e4;function m_(e){return(e instanceof DOMException||e instanceof Error)&&(e.name===`AbortError`||e.name===`TimeoutError`)}async function h_(e,t={}){let{fetchFn:n=fetch,timeoutMs:r=p_,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:m_(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:m_(e)?s():o()}}return l_(l)?{ok:!0,result:l}:{ok:!1,message:o()}}function g_(e){return e===`stopped`||e===`nothing_running`}function __(e,t){let{t:n}=D(),[r,i]=(0,Z.useState)(!1),a=(0,Z.useRef)(!0),o=(0,Z.useRef)(t.onSettled),s=(0,Z.useRef)(t.report),c=(0,Z.useRef)(e),l=(0,Z.useRef)(null);return(0,Z.useEffect)(()=>{o.current=t.onSettled,s.current=t.report},[t.onSettled,t.report]),(0,Z.useEffect)(()=>(c.current=e,()=>{l.current?.abort(),l.current=null}),[e]),(0,Z.useEffect)(()=>(a.current=!0,()=>{a.current=!1,l.current?.abort(),l.current=null}),[]),{restarting:r,restart:(0,Z.useCallback)(async()=>{let t=new AbortController;l.current?.abort(),l.current=t;let r=await Qi({message:n(`dash.codexRestartConfirm`),confirmLabel:n(`dash.codexRestart`),tone:`danger`,signal:t.signal});if(l.current===t&&(l.current=null),!r||!a.current||c.current!==e)return null;i(!0);let u=await h_(e,{formatFailure:e=>n(`dash.codexRestartFailed`,{status:String(e)}),formatUnreachable:()=>n(`dash.codexRestartUnreachable`),formatTimeout:()=>n(`dash.codexRestartTimeout`),formatMalformed:()=>n(`dash.codexRestartMalformed`)});if(a.current&&i(!1),!u.ok)return s.current(u.message,`err`),null;let d=u.result;return d.code===`stopped`?s.current(n(`dash.codexRestartDone`,{count:String(d.stopped.length)}),`ok`):d.code===`nothing_running`?s.current(n(`dash.codexRestartNothing`),`ok`):d.code===`enumeration_unavailable`?s.current(n(`dash.codexRestartUnknown`),`warn`):s.current(n(`dash.codexRestartPartial`,{count:String(d.surviving.length)}),`warn`),a.current&&g_(d.code)&&o.current?.(d.code),d.code},[e,n])}}async function v_(e,t,{apiBase:n,t:r,reloadAliases:i,publishFeedback:a}){let o=await $i({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 y_(e,t,n,{apiBase:r,t:i,reloadAliases:a,publishFeedback:o}){let s=await $i({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 b_={"gpt-5.6-sol":W,"gpt-5.6-terra":We,"gpt-5.6-luna":et,"gpt-daybreak-blue-latest":W,"daybreak-blue-latest":W,"daybreak-red-latest":we},x_={width:14,height:14,flexShrink:0,verticalAlign:`text-bottom`};function S_(e){return e.slice(e.lastIndexOf(`/`)+1)}function C_(e){return b_[e]??b_[S_(e)]??null}function w_(e){let t=C_(e);return t?(0,Z.createElement)(`span`,{className:`model-label`},(0,Z.createElement)(t,{style:x_,"aria-hidden":!0}),e):e}function T_(e,t){return Object.hasOwn(e,t)?e[t]:void 0}var E_=new Set([`absent`,`current`,`stale`,`conflict`,`unsafe`]),D_=new Set([`unparseable`,`not-regular-file`,`foreign-edit`,`unowned-key`,`blocked-container`,`unresolvable-path`]);function O_(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function k_(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function A_(e){if(!O_(e)||e.clientId!==`aside`||!k_(e.profileId)||typeof e.current!=`boolean`||typeof e.enabled!=`boolean`||!E_.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&&!D_.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 j_(e){if(!Array.isArray(e))return null;let t=[];for(let n of e){if(!O_(n)||!k_(n.profileId)||typeof n.ok!=`boolean`||n.state!==void 0&&!E_.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 M_=[`opencode`,`pi`,`omp`,`hermes`,`openclaw`,`kimi`,`gajae`,`dsh`,`mcode`,`zcode`,`commandcode`,`prime`,`aside`,`raycast`,`omo`,`cline`,`kilo`,`droid`];function N_(e){return e.clientId===`kilo`&&!!e.lastOpId&&(e.reason===`candidate-conflict`||e.state===`unsafe`&&!!e.candidateFailurePath&&e.candidateFailurePath!==e.configPath)}var P_=new Set([`not_installed`,`conflict`,`unsafe`,`non_loopback`,`superseded_store`,`drift_requires_confirm`,`snapshot_expired`,`write_failed`]),F_=new Set([`integration_unsafe`,`integration_conflict`,`integration_drift_confirmation_required`,`integration_snapshot_expired`,`integration_mutation_failed`]),I_=new Set([`absent`,`current`,`stale`,`conflict`,`unsafe`]),L_=[`apply`,`overwrite`,`disable`,`restore`],R_=[`add`,`replace`,`remove`,`snapshot`,`ownership`,`journal`],z_=[`none`,`unowned`,`foreign-edit`,`drift`],B_=new Set([`version`,`clientId`,`operation`,`state`,`foreignEdit`,`changes`,`fingerprint`,`canApply`,`willChange`,`refusalReason`,`supersededReason`,`missingStoreDocument`,`profileId`]),V_=new Set([`owned-config-file`,`unestablished-schema`,`missing-store`]),H_=/^[\x20-\x7e]{1,64}$/,U_=new Set([`kind`,`path`]),W_=new Set([`$snapshot`,`$ownership`,`$journal`]),G_=new Set([`provider.opencodex`,`providers.opencodex`,`models.providers.opencodex`,`models.*`,`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`]),K_=256;function q_(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function J_(e,t){return Object.keys(e).every(e=>t.has(e))}function Y_(e){return W_.has(e)||G_.has(e)}function X_(){return new $_(502,{code:`invalid_integration_preview_response`})}function Z_(e){if(!q_(e)||!J_(e,B_)||e.version!==1||!M_.includes(e.clientId)||!L_.includes(e.operation)||!I_.has(String(e.state))||!z_.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>K_||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&&!P_.has(String(e.refusalReason))||e.supersededReason!==void 0&&(e.refusalReason!==`superseded_store`||typeof e.supersededReason!=`string`||!V_.has(e.supersededReason))||e.missingStoreDocument!==void 0&&(e.supersededReason!==`missing-store`||typeof e.missingStoreDocument!=`string`||!H_.test(e.missingStoreDocument)))throw X_();let t=[],n=-1,r=``,i=new Map;for(let a of e.changes){if(!q_(a)||!J_(a,U_)||!R_.includes(a.kind)||typeof a.path!=`string`||!Y_(a.path))throw X_();let e=R_.indexOf(a.kind);if(e<n||e===n&&a.path<=r)throw X_();let o=a.kind,s=i.get(o)??new Set;if(s.has(a.path))throw X_();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 X_();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 Q_(e){return!q_(e)||!P_.has(String(e.reason))?!1:typeof e.error==`string`&&F_.has(String(e.code))&&M_.includes(e.clientId)&&I_.has(String(e.state))&&typeof e.message==`string`}var $_=class extends Error{refusal;status;body;stalePlan;constructor(e,t){let n=Q_(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 ev(e){return e instanceof $_&&e.status===404&&e.body.code===`integration_operation_not_found`}async function tv(e){let t;try{t=await e.json()}catch{return{}}return q_(t)?t.code===`integration_preview_stale`?{code:t.code,plan:Z_(t.plan)}:t:{}}async function nv(e){if(!e.ok)throw new $_(e.status,await tv(e));let t=await pn(e);if(t==null)throw new $_(e.status,{});return t}function rv(e){return e instanceof $_&&e.body.code===`integration_preview_unavailable`}function iv(e){return{operation:e.operation,planFingerprint:e.fingerprint}}function av(e){if(!Number.isSafeInteger(e)||e<0)throw new $_(400,{code:`invalid_aside_profile`});return`/api/client-integrations/aside/profiles/${e}`}function ov(e,t){if(t!==void 0){if(e!==`aside`)throw new $_(400,{code:`invalid_aside_profile`});return av(t)}return e===`aside`?`/api/client-integrations/aside/profiles`:`/api/client-integrations/${encodeURIComponent(e)}`}async function sv(e,t){return nv(await fetch(`${e}/api/client-integrations`,{signal:t}))}async function cv(e,t,n,r){let i=await nv(await fetch(`${e}${ov(t,r)}`,{signal:n}));if(r!==void 0){let e=A_(i);if(!e||e.profileId!==r)throw new $_(502,{code:`invalid_aside_profile_response`});return e}return i}async function lv(e,t,n,r){if(r!==void 0&&t!==`aside`)throw new $_(400,{code:`invalid_aside_profile`});let i=t===`aside`?`${ov(t,r)}/journal`:`/api/client-integrations/journal${t?`?client=${encodeURIComponent(t)}`:``}`,a=await nv(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 $_(502,{code:`invalid_aside_profile_response`});return a}async function uv(e,t,n,r,i,a){let o=i===void 0?`/api/client-integrations/preview`:`${av(i)}/preview`,s={...i===void 0?{clientId:t}:{},operation:n,...t===`droid`&&a!==void 0?{droidReasoningDefaults:a}:{}},c=Z_(await nv(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 X_();return c}async function dv(e,t,n=!1,r,i){let a=i===void 0?`/api/client-integrations/restore/preview`:`${av(i)}/preview`,o=i===void 0?{opId:t,confirmDrift:n}:{operation:`restore`,opId:t,confirmDrift:n},s=Z_(await nv(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 X_();return s}async function fv(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 nv(await fetch(`${e}${ov(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 $_&&e.stalePlan&&(e.stalePlan.clientId!==t||e.stalePlan.operation!==l||e.stalePlan.profileId!==o)?X_():e}let d=u.results===void 0?void 0:j_(u.results);if(t===`aside`&&u.results!==void 0&&(!d||u.ok!==d.every(e=>e.ok)))throw new $_(502,{code:`invalid_aside_profile_response`});if(u.ok!==!0)throw new $_(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 $_(502,{code:`invalid_aside_profile_response`});return{...u,...d?{results:d}:{}}}async function pv(e,t){let{opId:n,confirmDrift:r=!1,signal:i,profileId:a,binding:o}=t,s;try{s=await nv(await fetch(`${e}${a===void 0?`/api/client-integrations/restore`:`${av(a)}/restore`}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({opId:n,confirmDrift:r,...o}),signal:i}))}catch(e){throw e instanceof $_&&e.stalePlan&&(e.stalePlan.operation!==`restore`||e.stalePlan.profileId!==a)?X_():e}if(a!==void 0&&s.profileId!==a)throw new $_(502,{code:`invalid_aside_profile_response`});return s}async function mv(e,t,n,r){let i=await nv(await fetch(`${e}${r===void 0?`/api/client-integrations/journal`:`${av(r)}/journal`}?opId=${encodeURIComponent(t)}`,{method:`DELETE`,signal:n}));if(r!==void 0&&i.profileId!==r)throw new $_(502,{code:`invalid_aside_profile_response`});return i}async function hv(e){try{let t=await e;return t.ok?await pn(t)??null:null}catch{return null}}async function gv(e,t){let n=await hv(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 _v(e,t){let n=await fetch(`${e}/api/keys`,{signal:t});if(!n.ok)throw Error(`/api/keys responded ${n.status}`);let r=await pn(n);if(!r||!Array.isArray(r.keys))throw Error(`/api/keys returned an unexpected body`);return r.keys.length}async function vv(e,t){let n=await hv(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 yv(e,t){let n=await hv(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 bv(e,t){let n=await hv(fetch(`${e}/api/grok`,{signal:t}));return n?{present:n.present===!0,models:Array.isArray(n.models)?n.models:[]}:null}var xv=new Set([`claude`,`grok`,`codex`,`claude-desktop`]),Sv=new Set([`native_integration_refused`,`native_integration_failed`]),Cv=new Set([`not_installed`,`orphaned_marker`,`home_mismatch`,`config_busy`,`write_failed`,`metadata_unreadable`,`cleanup_incomplete`,`desired_state_changed`]);function wv(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Tv(e){return wv(e)?typeof e.error==`string`&&Sv.has(String(e.code))&&xv.has(String(e.clientId))&&Cv.has(String(e.reason))&&typeof e.message==`string`:!1}var Ev=class extends Error{refusal;status;body;constructor(e,t){let n=Tv(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 Dv(e){try{let t=await e;return t.ok?await pn(t)??null:null}catch{return null}}async function Ov(e){try{let t=await e.json();return wv(t)?t:{}}catch{return{}}}async function kv(e){if(!e.ok)throw new Ev(e.status,await Ov(e));let t=await pn(e);if(t==null)throw new Ev(e.status,{});return t}function Av(e,t){return Dv(fetch(`${e}/api/native-integrations`,{signal:t}))}async function jv(e,t,n,r){return kv(await fetch(`${e}/api/native-integrations/${encodeURIComponent(t)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:n}),signal:r}))}var Mv={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 Nv(e){return e instanceof $_?e.refusal:null}function Pv(e){return e instanceof Ev?e.refusal:null}function Fv(e){return e===`conflict`?`integrations.error.conflict`:e===`unsafe`?`integrations.error.unsafe`:e===`non_loopback`?`integrations.error.nonLoopback`:`integrations.error.generic`}var Iv=new Set([`non_loopback`]);function Lv(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 Rv(e,t,n,r){let i=Pv(t);if(i)return Lv(e,i,r);let a=Nv(t);if(!a){if(t instanceof $_&&`results`in t.body&&t.body.results?.length){let n=t.body.results.filter(e=>!e.ok).map(t=>{let n=zv(e,t);return`${e(`integrations.aside.profile`,{id:String(t.profileId)})}: ${n}`});return[e(`integrations.aside.partial`),...n].join(`
6
- `)}let r=Mv[t instanceof $_?String(t.body.code??``):``];return r?e(r):t instanceof Error&&t.message?t.message:n??e(`integrations.error.generic`)}return Bv(e,a)}function zv(e,t){return Bv(e,{clientId:`aside`,message:t.message??t.reason,reason:t.refusalReason??t.reason,snapshotPath:t.snapshotPath,residual:t.residual})}function Bv(e,t){let n=Iv.has(t.reason??``)?e(Fv(t.reason),{client:t.clientId}):t.message||e(Fv(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(Fv(t.reason))} ${n}`:n}var Vv=(e,t,n)=>JSON.stringify([e,t,n]),Hv=new Map;function Uv(e,t){let[n,r]=(0,Z.useState)({apiBase:e,overrides:Hv,pending:!1});n.apiBase!==e&&r({apiBase:e,overrides:Hv,pending:!1});let i=n.apiBase===e?n.overrides:Hv,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=T(6e4);t.bounded=i;try{let a=await bs(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=T(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:Hv,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:Hv);for(let e of i)r.set(Vv(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(Vv(e,t,n))??r}}function Wv({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 Gv({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)(Wv,{})},t))]})}function Kv({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 qv=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 Jv(e,t){return e.length!==0&&e.every(e=>{let n=e.provider.trim(),r=e.model.trim();return!n||!r?!1:!!t.find(e=>e.provider===n&&e.id===r)?.inputModalities?.includes(`image`)})}function Yv(e,t,n,r){if(t===`invalidDecisionTimeout`)return e(`cws.err.invalidDecisionTimeout`,{min:Or,max:kr});if(t===`invalidDecisionProvider`){let t=Ai(n.decisionProvider,r)??`missing`;return e(`cws.err.invalidDecisionProvider`,{name:n.decisionProvider??``,reason:e(Wr[t])})}return e(`cws.err.${t}`)}function Xv(e){return e.filter(e=>!e.disabled&&!e.hiddenFromPicker).sort((e,t)=>e.name.localeCompare(t.name))}function Zv(e,t,n){if(e===``)return;let r=Number(e);if(Number.isFinite(r))return Math.min(n,Math.max(t,r))}function Qv(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 $v(e,t,n){let r=new Set([t]),i=n.find(e=>e.name===t);(t.toLowerCase()===`chatgpt`||Qv(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 ey({value:e,onChange:t,disabled:n}){let r=i();return(0,Q.jsx)(`div`,{className:`cwi-strategy-seg`,role:`radiogroup`,"aria-label":r(`cws.strategy`),children:zr.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(Br[i])},i))})}function ty({id:e,value:t,onChange:n,disabled:r,allowedEfforts:a}){let o=i(),s=a??Rr,c=t!==null&&!s.includes(t);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`select`,{id:e,className:`input`,value:t??``,disabled:r,"aria-label":o(`cws.field.defaultEffort`),onChange:e=>n(e.target.value===``?null:e.target.value),children:[(0,Q.jsx)(`option`,{value:``,children:o(`cws.field.defaultEffortNone`)}),c&&t?(0,Q.jsxs)(`option`,{value:t,children:[t,` (`,o(`cws.field.defaultEffortUnsupportedOption`),`)`]}):null,s.map(e=>(0,Q.jsx)(`option`,{value:e,children:e},e))]}),c?(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`4px 0 0`,color:`var(--danger, #b42318)`},children:o(`cws.field.defaultEffortUnsupported`)}):null]})}function ny({targets:e,models:t,imageInput:n,reasoningEffortMode:r,disabled:a,onChange:o}){let s=i(),c=Jv(e,t),l=c&&n!==`disabled`;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:s(c?`cws.capability.imageInputHint`:`cws.capability.imageInputUnavailable`)})]}),(0,Q.jsx)(nn,{on:l,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)(nn,{on:r===`adaptive`,onClick:()=>{o({reasoningEffortMode:r===`adaptive`?`strict`:`adaptive`})},disabled:a,label:s(`cws.capability.adaptiveEffort`)})]})]})}function ry({targets:e,strategy:t,providers:n,models:r,providerQuotaStates:a,onChange:o}){let s=i(),c=Xv(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((i,_)=>{let v=n.find(e=>e.name===i.provider),y=v&&!c.some(e=>e.name===i.provider)?[...c,v]:c,b=$v(r,i.provider,n),x=i.model&&!b.includes(i.model)?[i.model,...b]:b,S=!i.provider,C=l===_,w=d===_&&l!==null&&l!==_,T=a[i.provider.trim()]??`unknown`,E=r.find(e=>e.provider===i.provider&&e.id===i.model)?.reasoningEfforts,D=E===void 0?void 0:new Set(E),O=D===void 0?void 0:Rr.filter(e=>D.has(e)),k=new Set(O??[]),A=O===void 0?[]:i.reasoningEfforts===void 0?O:i.reasoningEfforts.filter(e=>k.has(e)),j=new Set(A);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`:``,C?`cwi-target-row--dragging`:``,w?`cwi-target-row--drop`:``].filter(Boolean).join(` `),onDragOver:e=>{l!==null&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,d!==_&&f(_))},onDrop:e=>{e.preventDefault(),l!==null&&g(l,_),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(_),e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,String(_))},children:(0,Q.jsx)(Me,{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:_===0,"aria-label":s(`cws.target.moveUp`),onClick:()=>g(_,_-1),children:(0,Q.jsx)(He,{width:14,height:14,"aria-hidden":`true`})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:_===e.length-1,"aria-label":s(`cws.target.moveDown`),onClick:()=>g(_,_+1),children:(0,Q.jsx)(Ye,{width:14,height:14,"aria-hidden":`true`})})]}),(0,Q.jsxs)(`select`,{className:`input`,value:i.provider,"aria-label":s(`cws.target.provider`),onChange:e=>{let t=e.target.value,i=$v(r,t,n)[0]??``;h(_,{provider:t,model:i})},children:[(0,Q.jsx)(`option`,{value:``,children:s(`cws.target.pickProvider`)}),y.map(e=>(0,Q.jsx)(`option`,{value:e.name,children:e.disabled?s(`cws.target.disabled`,{name:_e(e.name,s)}):_e(e.name,s)},e.name))]}),(0,Q.jsxs)(`select`,{className:`input`,value:i.model,disabled:S,"aria-label":s(`cws.target.model`),onChange:e=>h(_,{provider:i.provider,model:e.target.value}),children:[(0,Q.jsx)(`option`,{value:``,children:S?s(`cws.target.pickProviderFirst`):x.length===0?s(`cws.target.noModels`):s(`cws.target.pickModel`)}),x.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:i.weight??1,"aria-label":s(`cws.target.weight`),onChange:e=>{let t=Zv(e.target.value,1,1e4);t!==void 0&&m(_,{weight:t})}}),(0,Q.jsx)(`span`,{className:`cwi-quota-badge cwi-quota-badge--${T}`,"aria-label":s(`cws.quota.${T}`),children:s(`cws.quota.${T}`)}),(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!==_)),"aria-label":s(`common.remove`),children:(0,Q.jsx)(ot,{width:14,height:14})})})]}),t===`jev`&&(0,Q.jsxs)(`div`,{className:`cwi-jev-target-meta`,children:[_===p&&(0,Q.jsx)(`span`,{className:`chip`,children:s(`cws.jev.failOpen`)}),O===void 0?(0,Q.jsx)(`span`,{className:`muted`,children:s(`cws.jev.effortsUnknown`)}):O.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`)}),O.map(e=>{let t=j.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&&A.length===1,onChange:t=>{let n=new Set(A);t.target.checked?n.add(e):n.delete(e),m(_,{reasoningEfforts:O.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:i.modelProfile??``,placeholder:s(`cws.jev.modelProfilePlaceholder`),onChange:e=>m(_,{modelProfile:e.target.value})}),(0,Q.jsx)(`span`,{className:`muted`,children:s(`cws.jev.modelProfileHint`)})]})]})]},i.clientKey??`${i.provider}:${i.model}`)}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,style:{alignSelf:`flex-start`},onClick:()=>o([...e,Jr()]),children:[(0,Q.jsx)(Le,{width:14,height:14}),` `,s(`cws.target.add`)]})]})}var iy=[`typesafe`,`systemone`,`model`],ay={typesafe:`cws.jev.method.typesafe`,systemone:`cws.jev.method.systemone`,model:`cws.jev.method.model`};function oy({idPrefix:e,apiBase:t,combo:n,combos:r,providers:a,models:o,decisionProvider:s,decisionModel:c,decisionTimeoutMs:l,disabled:u,onChange:d}){let f=i(),p=Fr({decisionProvider:s,decisionModel:c}),m=(0,Z.useMemo)(()=>ji(a,s).filter(e=>e.id!==null),[a,s]),h=m.find(e=>e.id===s?.trim()),{id:g,alias:_,model:v}=n,y=(0,Z.useMemo)(()=>Lr(o,a,r,{id:g,alias:_,model:v}),[o,a,r,g,_,v]),[b,x]=(0,Z.useState)(null),S=(0,Z.useRef)(null),C=`${p}\0${s??``}\0${c??``}\0${l??``}`,w=b?.key===C?b.result:null,T=e+`-decision-model-options`;(0,Z.useEffect)(()=>()=>{S.current?.abort(),S.current=null},[C]);let E=e=>{e!==p&&d(e===`typesafe`?{decisionProvider:null,decisionModel:null}:e===`systemone`?{decisionProvider:m.find(e=>!e.issue)?.id??m[0]?.id??``,decisionModel:null}:{decisionProvider:null,decisionModel:y[0]??``})},D=p===`typesafe`||p===`systemone`&&!!h&&!h.issue||p===`model`&&!!c?.trim(),O=async()=>{S.current?.abort();let e=new AbortController;S.current=e;let r=C,i=e=>x({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()}:{},...p===`systemone`&&s?{decisionProvider:s.trim()}:{},...p===`model`&&c?{decisionModel:c.trim()}:{},...l===null?{}:{decisionTimeoutMs:l}})});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{S.current===e&&(S.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:f(`cws.jev.decisionMethod`)}),(0,Q.jsx)(`div`,{className:`segmented`,role:`group`,"aria-label":f(`cws.jev.decisionMethod`),children:iy.map(t=>(0,Q.jsx)(`button`,{type:`button`,id:`${e}-decision-method-${t}`,className:`btn btn-sm ${p===t?`btn-primary`:`btn-ghost`}`,"aria-pressed":p===t,disabled:u,onClick:()=>E(t),children:f(ay[t])},t))}),(0,Q.jsxs)(`p`,{id:`${e}-decision-method-hint`,className:`muted`,style:{fontSize:12,margin:`8px 0 0`,overflowWrap:`anywhere`},children:[p===`typesafe`&&f(`cws.jev.decisionServiceDefaultHint`),p===`systemone`&&m.length===0&&f(`cws.jev.method.systemoneEmpty`)]}),p===`systemone`&&m.length>0&&(0,Q.jsxs)(`div`,{className:`cwi-field`,style:{marginTop:8},children:[(0,Q.jsx)(`label`,{htmlFor:`${e}-decision-provider`,children:f(`cws.jev.decisionService`)}),(0,Q.jsxs)(`select`,{id:`${e}-decision-provider`,className:`input`,value:s?.trim()??``,disabled:u,"aria-describedby":h?.issue?`${e}-decision-provider-hint ${e}-decision-provider-issue`:`${e}-decision-provider-hint`,"aria-invalid":h?.issue?!0:void 0,onChange:e=>d({decisionProvider:e.target.value,decisionModel:null}),children:[!h&&(0,Q.jsx)(`option`,{value:``,disabled:!0,children:`—`}),m.map(e=>(0,Q.jsx)(`option`,{value:e.id,disabled:e.issue!==void 0&&e.id!==h?.id,children:e.issue?`${e.id} (${f(Wr[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:[f(`cws.jev.decisionServiceHint`),h?.baseUrl&&(0,Q.jsxs)(Q.Fragment,{children:[` `,(0,Q.jsx)(`code`,{children:h.baseUrl})]})]}),h?.issue&&(0,Q.jsx)(`p`,{id:`${e}-decision-provider-issue`,className:`muted`,style:{fontSize:12,margin:`4px 0 0`,color:`var(--danger, #b42318)`},children:f(`cws.err.invalidDecisionProvider`,{name:h.id??``,reason:f(Wr[h.issue])})})]}),p===`model`&&(0,Q.jsxs)(`div`,{className:`cwi-field`,style:{marginTop:8},children:[(0,Q.jsx)(`label`,{htmlFor:`${e}-decision-model`,children:f(`cws.jev.decisionModel`)}),(0,Q.jsx)(`input`,{id:`${e}-decision-model`,className:`input mono`,list:T,value:c??``,maxLength:512,spellCheck:!1,autoComplete:`off`,placeholder:`ollama/qwen3:4b`,disabled:u,"aria-describedby":`${e}-decision-model-hint`,onChange:e=>d({decisionModel:e.target.value,decisionProvider:null})}),(0,Q.jsx)(`datalist`,{id:T,children:y.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:f(`cws.jev.decisionModelHint`)})]}),(0,Q.jsxs)(`div`,{className:`cwi-field`,style:{marginTop:8},children:[(0,Q.jsx)(`label`,{htmlFor:`${e}-decision-timeout`,children:f(`cws.jev.decisionTimeout`)}),(0,Q.jsx)(`input`,{id:`${e}-decision-timeout`,className:`input mono`,type:`number`,inputMode:`numeric`,min:Or,max:kr,step:1,placeholder:String(Ar),value:l??``,disabled:u,"aria-describedby":`${e}-decision-timeout-hint`,onChange:e=>{if(e.target.value===``){d({decisionTimeoutMs:null});return}let t=Number(e.target.value);Number.isFinite(t)&&d({decisionTimeoutMs:t})}}),(0,Q.jsx)(`p`,{id:`${e}-decision-timeout-hint`,className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:f(`cws.jev.decisionTimeoutHint`,{default:Ar,min:Or,max:kr})})]}),(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:u||!D||w?.state===`running`,onClick:()=>{O()},children:w?.state===`running`?f(`cws.jev.testing`):f(`cws.jev.test`)}),(0,Q.jsxs)(`span`,{className:`muted`,role:`status`,"aria-live":`polite`,style:{fontSize:12,overflowWrap:`anywhere`},children:[w===null&&f(`cws.jev.testHint`),w?.state===`done`&&(w.ok?f(`cws.jev.testOk`,{ms:w.latencyMs,backend:f(Pr[w.backend]??`cws.jev.backend.unknown`)}):f(`cws.jev.testFailOpen`,{gate:w.gate,ms:w.latencyMs})),w?.state===`error`&&f(`cws.jev.testError`,{error:w.message})]})]})]})}var sy=[];function cy({apiBase:e,combos:t=sy,existingIds:n,existingAliases:r,providerMap:a,providerQuotaStates:o,providers:s,models:c,initialDraft:l,onClose:u,onSubmit:d}){let f=i(),p=(0,Z.useRef)(null),[m,h]=(0,Z.useState)(()=>l?{...l,targets:l.targets.map(e=>({...e}))}:Di()),[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)(()=>Gr(m.targets,b,m.reasoningEffortMode??`strict`),[m.targets,b,m.reasoningEffortMode]),S=xi(m.targets,o,a)===`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=Ei(m,{existingIds:n,existingAliases:r,combos:t,isCreate:!0,providers:a});if(e){y(Yv(f,e,m,a));return}_(!0),y(``);let i=m.id.trim(),o=m.alias?.trim()||null;try{let e=await d({...m,id:i,alias:o,model:ni(i,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)(N,{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:ni(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:ni(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()?ni(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)(ey,{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(Vr[m.strategy])})]}),m.strategy===`jev`&&(0,Q.jsx)(oy,{idPrefix:`cwi-new`,apiBase:e,combo:m,combos:t,providers:s,models:c,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)(ty,{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=Zv(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)(ry,{targets:m.targets,strategy:m.strategy,providers:s,models:c,providerQuotaStates:o,onChange:e=>h(t=>({...t,targets:e}))}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:f(Hr[m.strategy])})]}),(0,Q.jsx)(ny,{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 ly(e){return e===null?`—`:`${Math.round(e*100)}%`}function uy(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 dy({apiBase:e,comboId:t,active:n}){let{t:r,locale:i}=D(),[a,o]=(0,Z.useState)(`30d`),s=(0,Z.useCallback)(async n=>{let r=new URLSearchParams({jev:`1`,comboId:t,range:a}),i=await fetch(`${e}/api/usage?${r}`,{signal:n});if(!i.ok)throw Error(String(i.status));return i.json()},[e,t,a]),c=za(`ocx.jev-stats.v1:${e}:${t}:${a}`,[e,t,a],s,{isEmpty:e=>e.summary.decisions===0,enabled:n,pollMs:3e4,pauseWhenHidden:!0,deadlineMs:6e4}),{state:l}=c,u=l.data;return n?(0,Q.jsxs)(`section`,{className:`jev-stats`,"aria-busy":l.refreshing,children:[(0,Q.jsxs)(`div`,{className:`jev-stats-toolbar`,children:[(0,Q.jsx)(`div`,{className:`segmented jev-stats-ranges`,role:`group`,"aria-label":r(`cws.jev.stats.range`),children:[`7d`,`30d`,`all`].map(e=>(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm ${a===e?`btn-primary`:`btn-ghost`}`,"aria-pressed":a===e,onClick:()=>o(e),children:r(e===`all`?`usage.range.available`:`usage.range.${e}`)},e))}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>c.refresh(),children:r(`cws.jev.stats.refresh`)})]}),l.showSkeleton&&(0,Q.jsx)(Gv,{label:r(`cws.jev.stats.loading`),rows:4}),l.showError&&(0,Q.jsx)($,{tone:`err`,children:r(`cws.jev.stats.loadFailed`)}),u&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(pr,{data:u}),(u.historyTruncated||u.entriesTruncated)&&(0,Q.jsx)($,{tone:`warn`,children:r(`cws.jev.stats.historyIncomplete`)}),u.error&&(0,Q.jsx)($,{tone:`err`,children:r(`cws.jev.stats.loadFailed`)}),u.summary.decisions===0?(0,Q.jsxs)(`div`,{className:`jev-stats-empty`,children:[(0,Q.jsx)(`h3`,{children:r(`cws.jev.stats.emptyTitle`)}),(0,Q.jsx)(`p`,{className:`muted`,children:r(`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:r(`cws.jev.stats.decisions`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:u.summary.decisions.toLocaleString(i)}),(0,Q.jsx)(`div`,{className:`muted text-caption`,children:r(`cws.jev.stats.appliedAndFailOpen`,{applied:u.summary.appliedDecisions,failOpen:u.summary.failOpenDecisions})})]}),(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:r(`cws.jev.stats.modelTokens`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:G(u.summary.modelTotalTokens,i)}),(0,Q.jsx)(`div`,{className:`muted text-caption`,children:r(`cws.jev.stats.measuredAttempts`,{measured:u.summary.measuredModelAttempts,total:u.summary.modelAttempts})})]}),(0,Q.jsxs)(`div`,{className:`stat`,children:[(0,Q.jsx)(`div`,{className:`muted`,children:r(`cws.jev.stats.decisionTokens`)}),(0,Q.jsx)(`div`,{className:`stat-value`,children:G(u.summary.decisionTotalTokens,i)}),(0,Q.jsx)(`div`,{className:`muted text-caption`,children:r(`cws.jev.stats.measuredDecisions`,{measured:u.summary.decisionUsageReported,total:u.summary.decisions})})]})]}),(0,Q.jsxs)(`div`,{className:`jev-stats-facts`,children:[(0,Q.jsx)(`span`,{children:r(`cws.jev.stats.successful`,{count:u.summary.successfulRequests})}),(0,Q.jsx)(`span`,{children:r(u.summary.requestsWithModelFallback===1?`cws.jev.stats.fallbackOne`:`cws.jev.stats.fallbackMany`,{count:u.summary.requestsWithModelFallback})}),(0,Q.jsx)(`span`,{children:r(`cws.jev.stats.averageLatency`,{value:uy(u.summary.averageLatencyMs,i)})}),(0,Q.jsx)(`span`,{children:r(`cws.jev.stats.averageConfidence`,{value:ly(u.summary.averageConfidence)})})]}),(0,Q.jsx)(`div`,{className:`jev-stats-gates`,"aria-label":r(`cws.jev.stats.gates`),children:u.gates.map(e=>(0,Q.jsxs)(`span`,{className:`chip`,children:[e.gate,`: `,e.decisions]},e.gate))}),u.backends&&u.backends.length>0&&(0,Q.jsx)(`div`,{className:`jev-stats-table-wrap`,children:(0,Q.jsxs)(`table`,{className:`jev-stats-table`,"aria-label":r(`cws.jev.stats.backends`),children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:r(`cws.jev.stats.backend`)}),(0,Q.jsx)(`th`,{className:`num`,children:r(`cws.jev.stats.decisions`)}),(0,Q.jsx)(`th`,{className:`num`,children:r(`cws.jev.stats.applied`)}),(0,Q.jsx)(`th`,{className:`num`,children:r(`cws.jev.stats.latency`)})]})}),(0,Q.jsx)(`tbody`,{children:u.backends.map(e=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{children:r(Pr[e.backend]??`cws.jev.backend.unknown`)}),(0,Q.jsx)(`td`,{className:`num mono`,children:e.decisions.toLocaleString(i)}),(0,Q.jsx)(`td`,{className:`num mono`,children:e.applied.toLocaleString(i)}),(0,Q.jsx)(`td`,{className:`num mono`,children:uy(e.averageLatencyMs,i)})]},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:r(`cws.jev.stats.model`)}),(0,Q.jsx)(`th`,{className:`num`,children:r(`cws.jev.stats.picks`)}),(0,Q.jsx)(`th`,{children:r(`cws.jev.stats.efforts`)}),(0,Q.jsx)(`th`,{className:`num`,children:r(`cws.jev.stats.attempts`)}),(0,Q.jsx)(`th`,{className:`num`,children:r(`cws.jev.stats.input`)}),(0,Q.jsx)(`th`,{className:`num`,children:r(`cws.jev.stats.output`)}),(0,Q.jsx)(`th`,{className:`num`,children:r(`cws.jev.stats.reasoning`)}),(0,Q.jsx)(`th`,{className:`num`,children:r(`cws.jev.stats.cacheReadWrite`)}),(0,Q.jsx)(`th`,{className:`num`,children:r(`cws.jev.stats.total`)})]})}),(0,Q.jsx)(`tbody`,{children:u.models.map(e=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{children:e.overflow?(0,Q.jsx)(`div`,{children:r(`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:_e(e.provider,r)})]})}),(0,Q.jsxs)(`td`,{className:`num mono`,children:[e.picks,(0,Q.jsx)(`span`,{className:`jev-stats-cell-note`,children:r(`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??r(`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,` `,r(`cws.jev.stats.measuredShort`)]})]}),(0,Q.jsx)(`td`,{className:`num mono`,children:G(e.inputTokens,i)}),(0,Q.jsx)(`td`,{className:`num mono`,children:G(e.outputTokens,i)}),(0,Q.jsx)(`td`,{className:`num mono`,children:G(e.reasoningTokens,i)}),(0,Q.jsxs)(`td`,{className:`num mono`,children:[G(e.cacheReadTokens,i),` / `,G(e.cacheWriteTokens,i)]}),(0,Q.jsx)(`td`,{className:`num mono`,children:G(e.totalTokens,i)})]},e.overflow?`__jev_stats_overflow__`:`${e.provider}\0${e.model}`))})]})}),(0,Q.jsx)(`p`,{className:`muted text-caption jev-stats-footnote`,children:r(`cws.jev.stats.tokenFootnote`)})]})]})]}):null}var fy={passthrough:`api.plan.disposition.passthrough`,translated:`api.plan.disposition.translated`,degraded:`api.plan.disposition.degraded`,unsupported:`api.plan.disposition.unsupported`},py={passthrough:`badge-green`,translated:`badge-accent`,degraded:`badge-amber`,unsupported:`badge-muted`};function my({effects:e,unknownFeatures:t}){let n=i();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 ${py[e.disposition]}`,children:n(fy[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 hy=[`responses`,`chat`,`messages`],gy={native:`api.plan.mode.native`,translated:`api.plan.mode.translated`,"legacy-bridge":`api.plan.mode.legacyBridge`,blocked:`api.plan.mode.blocked`},_y={native:`badge-green`,translated:`badge-accent`,"legacy-bridge":`badge-amber`,blocked:`badge-muted`},vy={preserved:`api.plan.fidelity.preserved`,degraded:`api.plan.fidelity.degraded`,unknown:`api.plan.fidelity.unknown`},yy={direct:`api.plan.routeKind.direct`,combo:`api.plan.routeKind.combo`,policy:`api.plan.routeKind.policy`,unknown:`api.plan.routeKind.unknown`},by=` → `;function xy({path:e}){let t=i();return e.length>0?(0,Q.jsx)(`code`,{children:e.join(by)}):(0,Q.jsx)(`span`,{className:`muted`,children:t(`api.plan.noPath`)})}function Sy({features:e}){let t=i();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 Cy({plan:e}){let t=i();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 ${_y[e.mode]}`,children:t(gy[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(yy[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)(Sy,{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)(Sy,{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 ${_y[n.mode]}`,children:t(gy[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)(xy,{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)(xy,{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(vy[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)(my,{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:()=>pg(n.provider),children:t(`protocolLinks.providerSettings`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>fg({inbound:e.inbound,upstream:ig(n.upstream)}),children:t(`protocolLinks.labEvidence`)})]})]},`${n.provider}/${n.model}`))})]})}function wy({apiBase:e,models:t,protocolLabel:n}){let r=i(),[a,o]=(0,Z.useState)(``),[s,c]=(0,Z.useState)(`chat`),[l,u]=(0,Z.useState)(()=>new Set),[d,f]=(0,Z.useState)(null),[p,m]=(0,Z.useState)(!1),[h,g]=(0,Z.useState)(!1),[_,v]=(0,Z.useState)(!1),y=(0,Z.useRef)(null);(0,Z.useEffect)(()=>()=>y.current?.abort(),[]);let b=a||t[0]?.id||``,x=(0,Z.useMemo)(()=>Wp.filter(e=>qp[e].includes(s)),[s]),S=e=>{c(e),u(t=>new Set([...t].filter(t=>qp[t].includes(e))))},C=(e,t)=>{u(n=>{let r=new Set(n);return t?r.add(e):r.delete(e),r})},w=async()=>{if(!b||p)return;y.current?.abort();let t=new AbortController;y.current=t,m(!0),g(!1);try{let n=await bm(e,{model:b,inbound:s,features:[...l]},t.signal);if(t.signal.aborted)return;n.kind===`unavailable`?(v(!0),f(null)):n.kind===`error`?g(!0):f(n.plan)}catch{}finally{y.current===t&&m(!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`)}),_?(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:b,onChange:e=>o(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:s,onChange:e=>S(e.target.value),children:hy.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`)}),x.map(e=>(0,Q.jsxs)(`label`,{className:`protocol-plan-feature`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:l.has(e),onChange:t=>C(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:!b||p,onClick:()=>{w()},children:r(p?`api.plan.previewing`:`api.plan.preview`)})}),h&&(0,Q.jsx)(`p`,{className:`awi-delete-error`,role:`alert`,children:r(`api.plan.failed`)}),d&&(0,Q.jsx)(Cy,{plan:d})]})]})}function Ty({apiBase:e,model:t,dirty:n}){let r=i(),[a,o]=(0,Z.useState)(`responses`),[s,c]=(0,Z.useState)(null),[l,u]=(0,Z.useState)(!1),[d,f]=(0,Z.useState)(!1),[p,m]=(0,Z.useState)(!1),h=(0,Z.useRef)(null);(0,Z.useEffect)(()=>()=>h.current?.abort(),[]);let g=(0,Z.useMemo)(()=>Wp.filter(e=>qp[e].includes(a)),[a]),_=async()=>{if(l)return;h.current?.abort();let n=new AbortController;h.current=n,u(!0),f(!1);try{let r=await bm(e,{model:t,inbound:a,features:g},n.signal);if(n.signal.aborted)return;r.kind===`unavailable`?m(!0):r.kind===`error`?f(!0):c(r.plan)}catch{}finally{h.current===n&&u(!1)}};return p?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:a,onChange:e=>{o(e.target.value),c(null)},children:wp.map(e=>(0,Q.jsx)(`option`,{value:e,children:Dm(e,r)},e))})]})}),(0,Q.jsx)(`div`,{children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:l,onClick:()=>{_()},children:r(l?`api.plan.previewing`:`cws.plan.run`)})}),d&&(0,Q.jsx)(`p`,{className:`awi-delete-error`,role:`alert`,children:r(`api.plan.failed`)}),s&&s.inbound===a&&(0,Q.jsx)(Cy,{plan:s})]})}var Ey=[`config`,`about`],Dy=[`config`,`stats`,`about`],Oy=e=>`cws-detail-tab-${e}`,ky=e=>`cws-detail-panel-${e}`,Ay=[];function jy({apiBase:e,baseline:t,combos:n=Ay,isCreate:r=!1,otherIds:a,otherAliases:o,providerMap:s,providerQuotaStates:c,providers:l,models:u,onBack:d,onSaved:f,onRequestRemove:p,onSave:m,onDirtyChange:h}){let g=i(),[_,v]=(0,Z.useState)(`config`),y=!r&&t.strategy===`jev`?Dy:Ey,b=(0,Z.useCallback)((e,t)=>{let n;if(e.key===`ArrowRight`)n=(t+1)%y.length;else if(e.key===`ArrowLeft`)n=(t-1+y.length)%y.length;else if(e.key===`Home`)n=0;else if(e.key===`End`)n=y.length-1;else return;e.preventDefault(),v(y[n]),e.currentTarget.parentElement?.querySelectorAll(`[role="tab"]`)[n]?.focus()},[y]),[x,S]=(0,Z.useState)(t),[C,w]=(0,Z.useState)(!1),[T,E]=(0,Z.useState)(null),[D,O]=(0,Z.useState)(!1),k=!wi(x,t),A=xi(x.targets,c,s)===`exhausted`,j=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])]),M=(0,Z.useMemo)(()=>{let e=new Map;for(let t of u)e.set(`${t.provider}/${t.id}`,t.reasoningEfforts);return e},[u]),N=(0,Z.useMemo)(()=>Gr(x.targets,M,x.reasoningEffortMode??`strict`),[x.targets,M,x.reasoningEffortMode]),P=(0,Z.useCallback)(e=>{let n=e(x);S(n),h(!wi(n,t))},[x,t,h]);(0,Z.useEffect)(()=>{let e=window.setTimeout(()=>{S(t),E(null),v(`config`),h(!1)},0);return()=>window.clearTimeout(e)},[j]);let F=async()=>{try{await navigator.clipboard.writeText(t.model),O(!0),window.setTimeout(()=>O(!1),1200)}catch{}},I=async()=>{let e=Ei(x,{existingIds:a,existingAliases:o,combos:n,isCreate:r,providers:s});if(e){E({ok:!1,text:Yv(g,e,x,s)});return}w(!0);let i=x.id.trim(),c=x.alias?.trim()||null,l=x.displayName?.trim()||null,u={...x,id:i,alias:c,displayName:l,model:ni(i,c),...x.strategy===`jev`?{}:{decisionProvider:null,decisionModel:null,decisionTimeoutMs:null}},d=!r&&i!==t.id?t.id:void 0;try{let e=await m(u,r,d);if(!e.ok){E({ok:!1,text:e.error||g(`cws.saveFailed`)});return}E({ok:!0,text:r?g(`cws.created`,{model:u.model}):g(`cws.saved`)}),f(u)}finally{w(!1)}},L=r?x.id.trim()?ni(x.id,x.alias):g(`cws.addTitle`):t.model;return(0,Q.jsxs)(`div`,{className:`combos-workspace-detail`,children:[(0,Q.jsxs)(`div`,{className:`combos-workspace-detail-head`,children:[d&&(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm pwi-back-overview`,onClick:d,"aria-label":g(`cws.backToAll`),children:[(0,Q.jsx)(Ue,{style:{width:14,height:14,transform:`rotate(180deg)`},"aria-hidden":`true`}),g(`cws.allCombos`)]}),(0,Q.jsx)(`h2`,{className:`combos-workspace-detail-title`,children:L}),!r&&(0,Q.jsx)(`button`,{type:`button`,className:`chip cwi-copy-chip`,onClick:()=>{F()},title:g(`cws.copyModel`),children:g(D?`cws.copied`:`cws.copyModel`)}),(0,Q.jsxs)(`div`,{className:`combos-workspace-detail-actions`,children:[!r&&p&&(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:p,children:[(0,Q.jsx)(ot,{width:14,height:14}),` `,g(`common.remove`)]}),(0,Q.jsx)(`button`,{id:r?`cwi-edit-create`:`cwi-edit-save`,type:`button`,className:`btn btn-primary btn-sm`,disabled:!r&&!k||C||A,onClick:()=>{I()},children:g(C?`common.saving`:r?`cws.create`:`common.save`)})]})]}),T&&(0,Q.jsx)($,{tone:T.ok?`ok`:`err`,children:T.text}),A&&(0,Q.jsx)(`div`,{className:`cwi-quota-banner`,role:`status`,"aria-live":`polite`,children:g(`cws.quota.allExhausted`)}),(0,Q.jsx)(`div`,{className:`segmented combos-workspace-segmented`,role:`tablist`,"aria-label":g(`cws.tabsLabel`),children:y.map((e,t)=>(0,Q.jsx)(`button`,{type:`button`,role:`tab`,id:Oy(e),"aria-selected":_===e,"aria-controls":ky(e),tabIndex:_===e?0:-1,className:`btn btn-sm ${_===e?`btn-primary`:`btn-ghost`}`,onClick:()=>v(e),onKeyDown:e=>b(e,t),children:g(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:ky(`config`),"aria-labelledby":Oy(`config`),hidden:_!==`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:g(`cws.field.id`)}),(0,Q.jsx)(`input`,{id:`cwi-edit-id`,className:`input mono`,value:x.id,disabled:C,onChange:e=>P(t=>({...t,id:e.target.value,model:ni(e.target.value,t.alias)}))}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:r?g(`cws.field.idInternalHint`):g(`cws.field.idHintEdit`,{model:ni(x.id,x.alias)})})]}),(0,Q.jsxs)(`div`,{className:`cwi-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`cwi-edit-alias`,children:g(`cws.field.alias`)}),(0,Q.jsx)(`input`,{id:`cwi-edit-alias`,className:`input mono`,value:x.alias??``,placeholder:ti(x.id.trim()||`…`),disabled:C,onChange:e=>P(t=>ri(t,e.target.value))}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:g(`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:x.nativeAlias,disabled:C,onChange:e=>P(t=>({...t,nativeAlias:e.target.checked}))}),` `,g(`cws.field.nativeAlias`)]}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:g(`cws.field.nativeAliasHint`)})]}),(0,Q.jsxs)(`div`,{className:`cwi-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`cwi-edit-display-name`,children:g(`cws.field.displayName`)}),(0,Q.jsx)(`input`,{id:`cwi-edit-display-name`,className:`input`,value:x.displayName??``,maxLength:128,disabled:C,onChange:e=>P(t=>({...t,displayName:e.target.value||null}))}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:g(`cws.field.displayNameHint`)})]}),(0,Q.jsxs)(`div`,{className:`cwi-field`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:g(`cws.strategy`)}),(0,Q.jsx)(ey,{value:x.strategy,disabled:C,onChange:e=>P(t=>({...t,strategy:e}))}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:g(Vr[x.strategy])})]}),x.strategy===`jev`&&(0,Q.jsx)(oy,{idPrefix:`cwi-edit`,apiBase:e,combo:x,combos:n,providers:l,models:u,decisionProvider:x.decisionProvider??null,decisionModel:x.decisionModel??null,decisionTimeoutMs:x.decisionTimeoutMs??null,disabled:C,onChange:e=>P(t=>({...t,...e}))}),(0,Q.jsxs)(`div`,{className:`cwi-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`cwi-effort`,children:g(`cws.field.defaultEffort`)}),(0,Q.jsx)(ty,{id:`cwi-effort`,value:x.defaultEffort,disabled:C,allowedEfforts:N,onChange:e=>P(t=>({...t,defaultEffort:e}))}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:g(`cws.field.defaultEffortHint`)})]}),x.strategy===`round-robin`&&(0,Q.jsxs)(`div`,{className:`cwi-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`cwi-sticky`,children:g(`cws.field.stickyLimit`)}),(0,Q.jsx)(`input`,{id:`cwi-sticky`,className:`input mono`,type:`number`,min:1,max:100,value:x.stickyLimit,disabled:C,onChange:e=>{let t=Zv(e.target.value,1,100);t!==void 0&&P(e=>({...e,stickyLimit:t}))}})]}),(0,Q.jsxs)(`div`,{className:`cwi-field`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:g(`cws.targets`)}),(0,Q.jsx)(ry,{targets:x.targets,strategy:x.strategy,providers:l,models:u,providerQuotaStates:c,onChange:e=>P(t=>({...t,targets:e}))}),(0,Q.jsx)(`p`,{className:`muted`,style:{fontSize:12,margin:`8px 0 0`},children:g(Hr[x.strategy])})]}),(0,Q.jsx)(ny,{targets:x.targets,models:u,imageInput:x.imageInput??`auto`,reasoningEffortMode:x.reasoningEffortMode??`strict`,disabled:C,onChange:e=>P(t=>({...t,...e}))})]}),!r&&e!==void 0&&(0,Q.jsx)(Ty,{apiBase:e,model:t.model,dirty:k})]}),!r&&t.strategy===`jev`&&(0,Q.jsx)(`div`,{className:`combos-workspace-tab-content`,role:`tabpanel`,id:ky(`stats`),"aria-labelledby":Oy(`stats`),hidden:_!==`stats`,children:(0,Q.jsx)(dy,{apiBase:e??``,comboId:t.id,active:_===`stats`})}),(0,Q.jsx)(`div`,{className:`combos-workspace-tab-content`,role:`tabpanel`,id:ky(`about`),"aria-labelledby":Oy(`about`),hidden:_!==`about`,tabIndex:0,children:(0,Q.jsxs)(`section`,{className:`pwi-section`,children:[(0,Q.jsx)(`h3`,{className:`pwi-section-title`,children:g(`cws.aboutTitle`)}),(0,Q.jsx)(`p`,{className:`muted`,style:{margin:0,maxWidth:`70ch`,overflowWrap:`anywhere`},children:g(`cws.aboutBody`)})]})})]})}function My({model:e,onCancel:t,onConfirm:n}){let r=i(),a=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{let e=a.current;e&&!e.open&&e.showModal()},[]);let o=(0,Z.useCallback)(e=>{e.preventDefault(),t()},[t]);return(0,Q.jsxs)(`dialog`,{ref:a,className:`modal-overlay`,"aria-labelledby":`cwi-remove-title`,onCancel:o,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 Ny({onKeep:e,onDiscard:t}){let n=i(),r=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{let e=r.current;e&&!e.open&&e.showModal()},[]);let a=(0,Z.useCallback)(t=>{t.preventDefault(),e()},[e]);return(0,Q.jsxs)(`dialog`,{ref:r,className:`modal-overlay`,"aria-labelledby":`cwi-unsaved-title`,onCancel:a,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 Py(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 Fy({combos:e,cataloguedComboIds:t,providerMap:n,providerQuotaStates:r,providers:a,onSelect:o,onAdd:s}){let c=i(),l=pi(e),u=Si(e,{cataloguedComboIds:t,providers:n,providerQuotaStates:r}),d=e.flatMap(e=>{let t=Mi(e,a);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:c(`cws.overviewTitle`)}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:s,children:[(0,Q.jsx)(Le,{width:14,height:14}),` `,c(`cws.add`)]})]}),(0,Q.jsx)(`p`,{className:`muted`,style:{marginTop:0,maxWidth:`62ch`},children:c(`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:c(`cws.count.total`)})]}),(0,Q.jsxs)(`div`,{className:`cwi-count-pill`,children:[(0,Q.jsx)(`strong`,{children:l.failover.length}),(0,Q.jsx)(`span`,{children:c(`cws.count.failover`)})]}),(0,Q.jsxs)(`div`,{className:`cwi-count-pill`,children:[(0,Q.jsx)(`strong`,{children:l.roundRobin.length}),(0,Q.jsx)(`span`,{children:c(`cws.count.roundRobin`)})]}),(0,Q.jsxs)(`div`,{className:`cwi-count-pill`,children:[(0,Q.jsx)(`strong`,{children:l.other.length}),(0,Q.jsx)(`span`,{children:c(`cws.count.other`)})]})]}),(0,Q.jsxs)(`section`,{className:`pwi-section`,"aria-label":c(`cws.howTitle`),children:[(0,Q.jsx)(`h3`,{className:`pwi-section-title`,children:c(`cws.howTitle`)}),(0,Q.jsx)(`p`,{className:`muted`,style:{margin:0},children:c(`cws.howBody`)})]}),d.length>0&&(0,Q.jsxs)(`section`,{className:`pwi-section`,"aria-label":c(`cws.jev.decisionServicesTitle`),children:[(0,Q.jsx)(`h3`,{className:`pwi-section-title`,children:c(`cws.jev.decisionServicesTitle`)}),(0,Q.jsx)(`div`,{className:`cwi-attention-list`,children:d.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:()=>o(e.id),children:[(0,Q.jsx)(`code`,{className:`chip`,children:e.model}),t.model?(0,Q.jsxs)(`span`,{children:[c(`cws.jev.method.model`),`: `,(0,Q.jsx)(`code`,{children:t.model})]}):(0,Q.jsx)(`span`,{children:t.provider??c(`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?c(`cws.jev.decisionTimeoutDefaultShort`):c(`cws.jev.decisionTimeoutShort`,{ms:t.timeoutMs})}),(0,Q.jsx)(Ue,{width:14,height:14,style:{marginLeft:`auto`},"aria-hidden":`true`})]},e.id))})]}),u.length>0&&(0,Q.jsxs)(`section`,{className:`pwi-section`,"aria-label":c(`cws.attentionTitle`),children:[(0,Q.jsx)(`h3`,{className:`pwi-section-title`,children:c(`cws.attentionTitle`)}),(0,Q.jsx)(`div`,{className:`cwi-attention-list`,children:u.map(e=>(0,Q.jsxs)(`button`,{type:`button`,className:`cwi-attention-row`,onClick:()=>o(e.id),children:[(0,Q.jsx)(De,{width:14,height:14,"aria-hidden":`true`}),(0,Q.jsx)(`code`,{className:`chip`,children:e.model}),(0,Q.jsx)(`span`,{className:`muted`,children:Py(e.reason,c)}),(0,Q.jsx)(Ue,{width:14,height:14,style:{marginLeft:`auto`},"aria-hidden":`true`})]},`${e.id}:${e.reason}`))})]})]})}function Iy({apiBase:e,combos:t,providerQuotaStates:n,providers:r,models:a,cataloguedComboIds:o,loading:s,onRefresh:c,onSave:l,onRemove:u,onAdd:d,adding:f,addIntent:p,addDecisionProvider:m,onCloseAdd:h,onCreated:g}){let _=i(),v=(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]),[y,b]=(0,Z.useState)(``),[x,S]=(0,Z.useState)(null),[C,w]=(0,Z.useState)(void 0),[T,E]=(0,Z.useState)(null),[D,O]=(0,Z.useState)(null),k=(0,Z.useMemo)(()=>Di(),[]),A=(0,Z.useMemo)(()=>t.some(e=>e.id===`jev-auto`||e.alias===`jev-auto`),[t]),j=(0,Z.useMemo)(()=>new Set(r.filter(e=>!e.disabled&&!e.hiddenFromPicker&&e.adapter!==`jev-decision`).map(e=>e.name)),[r]),M=(0,Z.useMemo)(()=>{if(p!==`jev-auto`)return;let e=r.length===0||Ai(m,v)===null;return ki(a,j,e?m:null)},[m,p,j,a,v,r.length]),N=(0,Z.useMemo)(()=>mi(t,y),[t,y]),P=(0,Z.useMemo)(()=>pi(N),[N]),F=(0,Z.useMemo)(()=>t.flatMap(e=>e.alias?[e.alias]:[]),[t]),I=x&&t.some(e=>e.id===x)?x:null,L=t.find(e=>e.id===I)??null,R=L&&D?.id===L.id?D:L,[z,B]=(0,Z.useState)(!1),V=[],H=[];if(R)for(let e of t)e.id!==R.id&&(V.push(e.id),e.alias&&H.push(e.alias));let U=(0,Z.useCallback)(e=>{if(e!==I){if(!z){S(e),O(null);return}w(e)}},[I,z]),ee=()=>{C!==void 0&&(S(C),O(null),B(!1),w(void 0))},W=()=>w(void 0),G=C!==void 0&&z,te=!s&&t.length===0&&!f;return(0,Q.jsxs)(`div`,{className:`combos-workspace-root`,children:[(0,Q.jsxs)(`aside`,{className:`combos-workspace-rail`,"aria-label":_(`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:_(`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(te){document.getElementById(`cwi-edit-id`)?.focus();return}d()},"aria-label":_(`cws.add`),children:[(0,Q.jsx)(Le,{width:14,height:14}),` `,_(`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:()=>d(`jev-auto`),disabled:A,title:_(A?`cws.jev.exists`:`cws.jev.setupHint`),children:[(0,Q.jsx)(oe,{width:14,height:14}),` `,_(`cws.jev.create`)]}),A&&(0,Q.jsx)(`span`,{className:`muted`,children:_(`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)(q,{className:`cwi-search-icon`,"aria-hidden":`true`}),(0,Q.jsx)(`input`,{className:`input cwi-search-input`,value:y,onChange:e=>b(e.target.value),placeholder:_(`cws.searchPlaceholder`),"aria-label":_(`cws.searchPlaceholder`)})]})}),(0,Q.jsx)(`div`,{className:`combos-workspace-rail-list`,children:N.length===0&&t.length>0?(0,Q.jsx)(`p`,{className:`muted`,style:{padding:`16px`},children:_(`cws.noSearchResults`)}):(0,Q.jsx)(Q.Fragment,{children:[[`failover`,P.failover,`cws.group.failover`],[`round-robin`,P.roundRobin,`cws.group.roundRobin`],[`other`,P.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`}),_(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${I===e.id?` combos-workspace-rail-row--selected`:``}`,onClick:()=>U(e.id),"aria-current":I===e.id?`true`:void 0,children:[(0,Q.jsx)(`span`,{className:`combos-workspace-rail-icon`,"aria-hidden":`true`,children:(0,Q.jsx)(oe,{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?_(`cws.targetCountOne`):_(`cws.targetCount`,{count:e.targets.length})}),(0,Q.jsx)(Ue,{className:`combos-workspace-rail-chevron`,"aria-hidden":`true`})]},e.id))]},e):null)})})]}),(0,Q.jsx)(`div`,{className:`combos-workspace-main`,children:R?(0,Q.jsx)(jy,{apiBase:e,baseline:R,combos:t.filter(e=>e.id!==R.id),otherIds:V,otherAliases:H,providerMap:v,providerQuotaStates:n,providers:r,models:a,onBack:()=>U(null),onSaved:e=>{B(!1),e.id===R.id?O(e):(S(e.id),O(null)),c()},onRequestRemove:()=>E(R.id),onSave:l,onDirtyChange:B},R.id):te?(0,Q.jsx)(jy,{apiBase:e,baseline:k,isCreate:!0,otherIds:[],otherAliases:[],providerMap:v,providerQuotaStates:n,providers:r,models:a,onSaved:e=>{B(!1),S(e.id),O(e),g(e.id)},onSave:l,onDirtyChange:B},`first-combo`):(0,Q.jsx)(Fy,{combos:t,cataloguedComboIds:o,providerMap:v,providerQuotaStates:n,providers:r,onSelect:e=>U(e),onAdd:d})}),f&&(0,Q.jsx)(cy,{apiBase:e,combos:t,existingIds:t.map(e=>e.id),existingAliases:F,providerMap:v,providerQuotaStates:n,providers:r,models:a,initialDraft:M,onClose:h,onSubmit:async e=>{let t=await l(e,!0);return t.ok&&(h(),g(e.id),S(e.id),O(null)),t}},`${p??`blank`}:${M?.decisionProvider??``}`),T&&(0,Q.jsx)(My,{model:t.find(e=>e.id===T)?.model??ti(T),onCancel:()=>E(null),onConfirm:()=>{(async()=>{let e=await u(T);E(null),e.ok&&(I===T&&(S(null),O(null)),c())})()}}),G&&(0,Q.jsx)(Ny,{onKeep:W,onDiscard:ee})]})}function Ly(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e.error;return typeof t==`string`&&t.trim()?t:void 0}function Ry(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&e.success===!0}function zy(e){return Fa(e)?.data??null}function By(e){return Fa(e)?.cachedAt??null}function Vy({apiBase:e,active:t=!0,onCountChange:n}){let r=i(),a=`ocx.combos.workspace.v1:${e}`,o=(0,Z.useMemo)(()=>zy(a),[a]),[s,c]=(0,Z.useState)(o??null),[l,u]=(0,Z.useState)(``),[d,f]=(0,Z.useState)(!1),[p,m]=(0,Z.useState)(()=>Jh(window.location.hash)===void 0?null:`jev-auto`),[h,g]=(0,Z.useState)(()=>Jh(window.location.hash)??null),_=(0,Z.useCallback)(()=>{m(null),g(null),Jh(window.location.hash)!==void 0&&Ut(`models/combos`)},[]),v=(e,t)=>{u(e),f(t)};(0,Z.useEffect)(()=>{if(!l||!d)return;let e=window.setTimeout(()=>{u(``),f(!1)},5e3);return()=>window.clearTimeout(e)},[l,d]);let y=(0,Z.useCallback)(async t=>{let[n,r,i]=await Promise.all([fetch(`${e}/api/combos`,{signal:t}),fetch(`${e}/api/config`,{signal:t}),fetch(`${e}/api/models`,{signal:t})]);if(!n.ok||!r.ok||!i.ok)throw Error(`combo workspace load failed`);let o=await n.json(),s=await r.json(),l=await i.json(),u=Array.isArray(l)?l:Array.isArray(l?.models)?l.models:[],d=fi(o),f=s.providers??{},p=M(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;for(let e of u){if(!e||typeof e!=`object`)continue;let t=e;if(typeof t.provider!=`string`||typeof t.id!=`string`)continue;let n=t.provider.trim(),r=t.id.trim();if(!n||!r)continue;if(n===`combo`){g.add(r);continue}if(t.disabled===!0)continue;let i=Array.isArray(t.reasoningEfforts)?t.reasoningEfforts.filter(e=>typeof e==`string`):void 0,a=Array.isArray(t.inputModalities)?t.inputModalities.flatMap(e=>{let t=typeof e==`string`?e.trim():``;return t?[t]:[]}):void 0;h.push({provider:n,id:r,namespaced:typeof t.namespaced==`string`?t.namespaced:void 0,...i?{reasoningEfforts:i}:{},...a&&a.length>0?{inputModalities:a}:{}})}for(let[e,t]of Object.entries(f)){let n=typeof t.defaultModel==`string`?t.defaultModel.trim():``;!n||t.disabled||h.some(t=>t.provider===e&&t.id===n)||h.push({provider:e,id:n,namespaced:`${e}/${n}`})}let _={combos:d,providers:m,models:h,cataloguedComboIds:[...g]};return Ia(a,_),c(_),_},[e,a]),b=za(a,[e],y,{isEmpty:()=>!1,initialData:o??void 0,initialDataCachedAt:By(a),staleAfterMs:6e4,enabled:t}),{state:x}=b,[S,C]=(0,Z.useState)(()=>Date.now()),w=(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||C(Date.now()),r&&typeof r==`object`&&!Array.isArray(r)?r:{}},[e]),T=za(`ocx.combos.provider-quotas.v1:${e}`,[e],w,{isEmpty:()=>!1,pollMs:6e4,pauseWhenHidden:!0,enabled:t}),E=t&&T.lastAttemptOk?T.data?.reports:void 0,D=bi(E,S),O=yi(E,S);(0,Z.useEffect)(()=>{if(!t)return;let e=()=>C(Date.now()),n=window.setTimeout(e,O===void 0?0:Math.max(0,O-Date.now())),r=ct(()=>{st()||e()});return()=>{window.clearTimeout(n),r()}},[t,e,T.data,T.lastAttemptOk,O]);let k=x.data??s??void 0,A=k?.combos??[];(0,Z.useEffect)(()=>{k&&n?.(A.length)},[A.length,k,n]);let j=k?.providers??[],N=k?.models??[],P=new Set(k?.cataloguedComboIds??[]),F=async(t,n,i)=>{try{let a=await fetch(`${e}/api/combos`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(Ti(t,i?{renameFrom:i}:{}))}),o=a.ok?await a.json():await a.json().catch(()=>null),s=Ly(o);if(!a.ok||s||!Ry(o)){let e=s||r(`cws.saveFailed`);return v(e,!1),{ok:!1,error:e}}return b.refresh(),v(i?r(`cws.renamed`,{from:ti(i),to:t.model}):n?r(`cws.created`,{model:t.model}):r(`cws.saved`),!0),{ok:!0}}catch{let e=r(`cws.saveFailed`);return v(e,!1),{ok:!1,error:e}}},I=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=Ly(i);if(!n.ok||a||!Ry(i)){let e=a||r(`cws.removeFailed`);return v(e,!1),{ok:!1,error:e}}return b.refresh(),v(r(`cws.removed`,{id:t}),!0),{ok:!0}}catch{let e=r(`cws.removeFailed`);return v(e,!1),{ok:!1,error:e}}};if(x.showSkeleton&&!k)return(0,Q.jsx)(Gv,{label:r(`cws.loading`),rows:5});if(x.kind===`failed-cold`&&!k){let e=x.error instanceof Error?x.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:()=>b.refresh(),children:r(`common.retry`)})]})}return(0,Q.jsxs)(`div`,{className:`combos-workspace-shell`,children:[l&&(0,Q.jsx)(`div`,{className:`combos-workspace-shell-banner`,children:(0,Q.jsx)($,{tone:d?`ok`:`err`,children:l})}),x.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":x.refreshing,children:[(0,Q.jsx)(`span`,{className:`sr-only`,role:`status`,"aria-live":`polite`,"aria-atomic":`true`,children:x.refreshing?r(`common.loading`):``}),(0,Q.jsx)(Iy,{apiBase:e,combos:A,providerQuotaStates:D,providers:j,models:N,cataloguedComboIds:P,loading:!1,onRefresh:()=>{b.refresh(),T.refresh()},onSave:F,onRemove:I,onAdd:(e=`blank`)=>m(e),adding:p!==null,addIntent:p??void 0,addDecisionProvider:h,onCloseAdd:_,onCreated:()=>b.refresh()})]})]})}var Hy=0;function Uy(){return Hy+=1,`candidate-${Hy}`}function Wy(e,t){return{provider:e,model:t,key:Uy()}}function Gy(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 Ky(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e,n={requiredSuites:Gy(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 qy={latency:`0.55`,health:`0.25`,cost:`0.1`,quota:`0.1`},Jy={capability:`exclude`,health:`penalize`,quota:`penalize`,cost:`penalize`};function Yy(e){return e===!0?`true`:e===!1?`false`:``}function Xy(e){return e===void 0?``:String(e)}function Zy(e=``,t=``){return{id:``,alias:``,candidates:[Wy(e,t)],require:{minContextWindow:``,minQuotaHeadroom:``,tools:``,imageInput:``,structuredOutput:``,reasoningEffort:``,serviceTier:``,localOnly:``,remoteAllowed:``,encryptedCodexTasks:``},optimize:{...qy},limits:{maxEstimatedCostUsd:``,onUnknownCost:`allow`},unknownEvidence:{...Jy},compatibility:{enabled:!1,requiredSuites:[],minStatus:``,maxEvidenceAgeMs:``,unknownEvidence:`exclude`,degradedEvidence:`penalize`}}}function Qy(e){let t=Ky(e.compatibility);return{id:e.id,alias:e.alias??``,candidates:e.candidates.map(e=>({...e,key:Uy()})),require:{minContextWindow:Xy(e.require.minContextWindow),minQuotaHeadroom:Xy(e.require.minQuotaHeadroom),tools:Yy(e.require.tools),imageInput:Yy(e.require.imageInput),structuredOutput:Yy(e.require.structuredOutput),reasoningEffort:e.require.reasoningEffort??``,serviceTier:e.require.serviceTier??``,localOnly:Yy(e.require.localOnly),remoteAllowed:Yy(e.require.remoteAllowed),encryptedCodexTasks:Yy(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:Xy(e.limits.maxEstimatedCostUsd),onUnknownCost:e.limits.onUnknownCost===`exclude`?`exclude`:`allow`},unknownEvidence:{...e.unknownEvidence},compatibility:{enabled:!!t,requiredSuites:t?.requiredSuites??[],minStatus:t?.minStatus??``,maxEvidenceAgeMs:Xy(t?.maxEvidenceAgeMs),unknownEvidence:t?.unknownEvidence??`exclude`,degradedEvidence:t?.degradedEvidence??`penalize`}}}function $y(e){let t=e.trim();return t?Number(t):void 0}function eb(e){if(e===`true`)return!0;if(e===`false`)return!1}function tb(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}function nb(e,t,n){let r=tb({minContextWindow:$y(e.require.minContextWindow),minQuotaHeadroom:$y(e.require.minQuotaHeadroom),tools:eb(e.require.tools),imageInput:eb(e.require.imageInput),structuredOutput:eb(e.require.structuredOutput),reasoningEffort:e.require.reasoningEffort.trim()||void 0,serviceTier:e.require.serviceTier.trim()||void 0,localOnly:eb(e.require.localOnly),remoteAllowed:eb(e.require.remoteAllowed),encryptedCodexTasks:eb(e.require.encryptedCodexTasks)}),i=$y(e.limits.maxEstimatedCostUsd),a=e.compatibility.enabled?tb({requiredSuites:e.compatibility.requiredSuites,minStatus:e.compatibility.minStatus||void 0,maxEvidenceAgeMs:$y(e.compatibility.maxEvidenceAgeMs),unknownEvidence:e.compatibility.unknownEvidence,degradedEvidence:e.compatibility.degradedEvidence}):void 0,o=tb({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 rb(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 ib(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&e.success===!0}function ab(e,t){return e.filter(e=>e.provider===t)}var ob={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`}},sb=[`tools`,`imageInput`,`structuredOutput`,`localOnly`,`remoteAllowed`,`encryptedCodexTasks`],cb=[`reasoningEffort`,`serviceTier`],lb={minContextWindow:{min:1,max:void 0,step:1},minQuotaHeadroom:{min:0,max:1,step:`any`}},ub=Object.keys(lb),db=[`latency`,`health`,`cost`,`quota`],fb=[`capability`,`health`,`quota`,`cost`],pb=[`allow`,`penalize`,`exclude`],mb=[`allow`,`exclude`];function hb(e){return`${e.evidenceLayer}:${e.suiteId}`}function gb(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function _b(e){let t=new Set,n=[];for(let r of e){if(!gb(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=hb(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 vb(e,t){return e.some(e=>e.suiteId===t.suiteId&&e.evidenceLayer===t.evidenceLayer)}function yb(e,t){return e===void 0?t:`${Math.round(e)}ms`}function bb(e,t){return e==null?t:`${Math.round(e*100)}%`}function xb(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 Sb(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 Cb(e){if(!e||typeof e!=`object`||Array.isArray(e))return[];let t=e.profiles;return Array.isArray(t)?t.filter(e=>gb(e)?typeof e.id==`string`&&typeof e.model==`string`&&typeof e.revision==`string`&&Array.isArray(e.candidates)&&gb(e.require)&&gb(e.optimize)&&gb(e.limits)&&gb(e.unknownEvidence):!1).map(e=>{let t=Ky(`compatibility`in e?e.compatibility:void 0),n={...e};return delete n.compatibility,{...n,alias:e.alias??null,...t?{compatibility:t}:{}}}):[]}function wb(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 Tb(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 Eb({apiBase:e,active:t=!0,onCountChange:n}){let{locale:r,t:i}=D(),a=ob[r],o=i(`routing.unavailable`),[s,c]=(0,Z.useState)([]),[l,u]=(0,Z.useState)(null),[d,f]=(0,Z.useState)([]),[p,m]=(0,Z.useState)({}),[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)(!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)([]),[ee,W]=(0,Z.useState)(!1),G=(0,Z.useRef)(null),te=(0,Z.useRef)(0),ne=(0,Z.useRef)(null),K=(0,Z.useRef)(!0),re=(0,Z.useCallback)(()=>{K.current=!1,ne.current?.abort(),te.current++},[]),q=(0,Z.useRef)(0),J=(0,Z.useCallback)((e,t)=>{w({message:e,ok:t})},[]);(0,Z.useEffect)(()=>{if(!C?.ok)return;let e=window.setTimeout(()=>w(null),5e3);return()=>window.clearTimeout(e)},[C]);let ie=(0,Z.useCallback)(()=>{q.current+=1,L(null),z(``),V(!1)},[]),Y=(0,Z.useCallback)(e=>{G.current=e,b(e),S(e?Qy(e):null),w(null),ie()},[ie]),X=(0,Z.useCallback)(async t=>{if(!K.current)return;ne.current?.abort();let n=new AbortController;ne.current=n;let{signal:r}=n,i=++te.current;v(``);try{let[n,a,o,s,l]=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[d,p,h,_,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([]),l.ok?l.json().catch(()=>null):Promise.resolve(null)]);if(i!==te.current)return;let y=Cb(d),x=G.current,C=Tb(y,x?.id??null,t),w=h.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()]));G.current=C,c(y),b(C),S(C?Qy(C):null),u(p),f(T),m(E),g(wb(_)),v&&Array.isArray(v.scenarios)?(U(_b(v.scenarios)),W(!1)):(U([]),W(!0)),(!x||!C||x.id!==C.id||x.revision!==C.revision)&&ie()}catch(e){if(i!==te.current||r.aborted)return;v(e instanceof Error?e.message:String(e))}finally{ne.current===n&&(ne.current=null)}},[e,ie]);(0,Z.useEffect)(()=>{if(!t){re();return}K.current=!0;let e=window.setTimeout(()=>void X(),0);return()=>{window.clearTimeout(e),re()}},[t,re,X]),(0,Z.useEffect)(()=>{n?.(s.length)},[n,s.length]);let ae=d[0]??``,oe=p[ae]??ab(h,ae)[0]?.id??``,se=()=>{G.current=null,b(null),S(Zy(ae,oe)),w(null),ie()},ce=()=>{if(y){S(Qy(y)),w(null);return}Y(s[0]??null)},le=async()=>{if(!(!x||T)){E(!0),w(null);try{let t=nb(x,y?`update`:`create`,y?.revision),n=await fetch(`${e}/api/routing-profiles`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(t)}),r=await pn(n);if(!n.ok){let e=await n.json().catch(()=>null);J(rb(e)??i(`routing.loadFailed`),!1);return}if(!ib(r)){J(rb(r)??i(`routing.loadFailed`),!1);return}await X(t.id),J(i(`common.ok`),!0)}catch(e){J(e instanceof Error?e.message:i(`routing.loadFailed`),!1)}finally{E(!1)}}},ue=async()=>{if(!(!y||T)&&await Qi({message:i(`routing.removeConfirm`,{id:y.id}),confirmLabel:i(`common.remove`),tone:`danger`})){E(!0),w(null);try{let t=await fetch(`${e}/api/routing-profiles?id=${encodeURIComponent(y.id)}`,{method:`DELETE`}),n=await pn(t);if(!t.ok){let e=await t.json().catch(()=>null);J(rb(e)??i(`routing.loadFailed`),!1);return}if(!ib(n)){J(rb(n)??i(`routing.loadFailed`),!1);return}G.current=null,await X(),J(i(`common.ok`),!0)}catch(e){J(e instanceof Error?e.message:i(`routing.loadFailed`),!1)}finally{E(!1)}}},de=(e,t,n)=>{S(r=>{if(!r)return r;let i=r.candidates.map((r,i)=>i===e?t===`provider`?{...r,provider:n,model:p[n]??ab(h,n)[0]?.id??``}:{...r,model:n}:r);return{...r,candidates:i}})},fe=()=>{S(e=>e&&{...e,candidates:[...e.candidates,Wy(ae,oe)]})},pe=e=>{S(t=>t&&{...t,candidates:t.candidates.filter((t,n)=>n!==e)})},me=async()=>{if(!y)return;let t=++q.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 a=await fetch(`${e}/api/routing-profiles/dry-run`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({profile:y.id,evidence:n})});if(t!==q.current)return;if(!a.ok){let e=await a.json().catch(()=>null);if(t!==q.current)return;z(rb(e)??i(`routing.dryRunError`,{status:a.status}));return}let o=await a.json();if(t!==q.current)return;L(o)}catch(e){if(t!==q.current)return;z(e instanceof Error?e.message:String(e))}finally{t===q.current&&V(!1)}},he=x?.candidates.map(e=>ab(h,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:`+`}),` `,i(`routing.createProfile`)]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void X(),children:i(`common.retry`)})]}),_?(0,Q.jsxs)($,{tone:`err`,children:[i(`routing.loadFailed`),`: `,_]}):null,C?(0,Q.jsx)($,{tone:C.ok?`ok`:`err`,children:C.message}):null,s.length>0?(0,Q.jsx)(`div`,{className:`panel`,style:{display:`flex`,flexDirection:`column`,gap:12},children:s.map(e=>(0,Q.jsx)(`button`,{type:`button`,className:`model-card`,style:{textAlign:`left`,cursor:`pointer`},onClick:()=>Y(e),"aria-pressed":y?.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:[i(`routing.revision`),`: `,e.revision]})]})},e.id))}):null,x?(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:[i(`routing.detail`),`: `,y?.model??(0,Q.jsx)(`code`,{children:`policy/…`})]}),y?(0,Q.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.revision`),`: `,y.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:y!==null,value:x.id,onChange:e=>S(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:x.alias,onChange:e=>S(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:i(`routing.candidates`)}),(0,Q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:10},children:[x.candidates.map((e,t)=>{let n=[...new Set([e.provider,...d])].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:i(`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:x.candidates.length===1,onClick:()=>pe(t),"aria-label":i(`routing.removeCandidate`,{provider:e.provider,model:e.model}),children:i(`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:`+`}),` `,i(`routing.candidate`)]})]})]}),(0,Q.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:i(`routing.require`)}),(0,Q.jsxs)(`div`,{className:`model-grid`,children:[ub.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:lb[e].min,max:lb[e].max,step:lb[e].step,value:x.require[e],onChange:t=>S(n=>n&&{...n,require:{...n.require,[e]:t.target.value}})})]},e)),cb.map(e=>(0,Q.jsxs)(`label`,{className:`field-label`,children:[(0,Q.jsx)(`code`,{children:e}),(0,Q.jsx)(`input`,{className:`input`,value:x.require[e],onChange:t=>S(n=>n&&{...n,require:{...n.require,[e]:t.target.value}})})]},e)),sb.map(e=>(0,Q.jsxs)(`label`,{className:`field-label`,children:[(0,Q.jsx)(`code`,{children:e}),(0,Q.jsxs)(`select`,{className:`input`,value:x.require[e],onChange:t=>S(n=>n&&{...n,require:{...n.require,[e]:t.target.value}}),children:[(0,Q.jsx)(`option`,{value:``,children:i(`routing.none`)}),(0,Q.jsx)(`option`,{value:`true`,children:i(`routing.yes`)}),(0,Q.jsx)(`option`,{value:`false`,children:i(`routing.no`)})]})]},e))]})]}),(0,Q.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:i(`routing.optimize`)}),(0,Q.jsx)(`div`,{className:`model-grid`,children:db.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:x.optimize[e],onChange:t=>S(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:i(`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:x.limits.maxEstimatedCostUsd,onChange:e=>S(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:x.limits.onUnknownCost,onChange:e=>S(t=>t&&{...t,limits:{...t.limits,onUnknownCost:e.target.value}}),children:mb.map(e=>(0,Q.jsx)(`option`,{value:e,children:i(`routing.unknownEvidence.${e}`)},e))})]})]}),(0,Q.jsxs)(`fieldset`,{style:{border:0,padding:0,margin:0},children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:i(`routing.unknownEvidence`)}),(0,Q.jsx)(`div`,{className:`model-grid`,children:fb.map(e=>(0,Q.jsxs)(`label`,{className:`field-label`,children:[(0,Q.jsx)(`code`,{children:e}),(0,Q.jsx)(`select`,{className:`input`,value:x.unknownEvidence[e],onChange:t=>S(n=>n&&{...n,unknownEvidence:{...n.unknownEvidence,[e]:t.target.value}}),children:pb.map(e=>(0,Q.jsx)(`option`,{value:e,children:i(`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:i(`routing.compatibility.title`)}),(0,Q.jsxs)(`label`,{className:`checkbox`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:x.compatibility.enabled,onChange:e=>S(t=>t&&{...t,compatibility:{...t.compatibility,enabled:e.target.checked}})}),i(`routing.compatibility.enabled`)]}),x.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:[i(`routing.compatibility.requiredSuites`),ee?(0,Q.jsx)(`div`,{style:{marginTop:6},children:(0,Q.jsx)($,{tone:`warn`,children:i(`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:vb(x.compatibility.requiredSuites,e),onChange:t=>S(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:[`(`,i(`routing.compatibility.layer.${e.evidenceLayer}`),`)`]})]})]},e.key))}):null]}),(0,Q.jsxs)(`label`,{className:`field-label`,children:[i(`routing.compatibility.minStatus`),(0,Q.jsxs)(`select`,{className:`input`,value:x.compatibility.minStatus,onChange:e=>S(t=>t&&{...t,compatibility:{...t.compatibility,minStatus:e.target.value}}),children:[(0,Q.jsx)(`option`,{value:``,children:i(`routing.none`)}),(0,Q.jsx)(`option`,{value:`PROBED`,children:i(`lab.verdict.PROBED`)}),(0,Q.jsx)(`option`,{value:`VERIFIED`,children:i(`lab.verdict.VERIFIED`)})]})]}),(0,Q.jsxs)(`label`,{className:`field-label`,children:[a.maxEvidenceAgeMs,(0,Q.jsx)(`input`,{className:`input`,type:`number`,min:0,value:x.compatibility.maxEvidenceAgeMs,onChange:e=>S(t=>t&&{...t,compatibility:{...t.compatibility,maxEvidenceAgeMs:e.target.value}})})]}),(0,Q.jsxs)(`label`,{className:`field-label`,children:[a.unknownEvidence,(0,Q.jsx)(`select`,{className:`input`,value:x.compatibility.unknownEvidence,onChange:e=>S(t=>t&&{...t,compatibility:{...t.compatibility,unknownEvidence:e.target.value}}),children:pb.map(e=>(0,Q.jsx)(`option`,{value:e,children:i(`routing.unknownEvidence.${e}`)},e))})]}),(0,Q.jsxs)(`label`,{className:`field-label`,children:[a.degradedEvidence,(0,Q.jsx)(`select`,{className:`input`,value:x.compatibility.degradedEvidence,onChange:e=>S(t=>t&&{...t,compatibility:{...t.compatibility,degradedEvidence:e.target.value}}),children:pb.map(e=>(0,Q.jsx)(`option`,{value:e,children:i(`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:T,children:i(T?`common.saving`:`common.save`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:T,onClick:ce,children:i(`common.cancel`)}),y?(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:T,onClick:()=>void ue(),children:i(`common.remove`)}):null]})]}):null,y&&(0,Q.jsxs)(`div`,{className:`panel`,style:{marginTop:14,display:`flex`,flexDirection:`column`,gap:10},children:[(0,Q.jsx)(`h3`,{children:i(`routing.dryRun`)}),(0,Q.jsxs)(`label`,{className:`field-label`,htmlFor:`routing-context`,children:[i(`routing.dryRunContext`),(0,Q.jsx)(`input`,{id:`routing-context`,className:`input`,type:`number`,min:1,value:O,onChange:e=>{k(e.target.value),ie()}})]}),(0,Q.jsxs)(`label`,{className:`checkbox`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:A,onChange:e=>{j(e.target.checked),ie()}}),i(`routing.dryRunTools`)]}),(0,Q.jsxs)(`label`,{className:`checkbox`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:M,onChange:e=>{N(e.target.checked),ie()}}),i(`routing.dryRunImage`)]}),(0,Q.jsxs)(`label`,{className:`checkbox`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:P,onChange:e=>{F(e.target.checked),ie()}}),i(`routing.dryRunStructured`)]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:!y||B,onClick:()=>void me(),children:i(`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:i(`routing.candidate`)}),(0,Q.jsx)(`th`,{children:i(`routing.eligible`)}),(0,Q.jsx)(`th`,{children:i(`routing.exclusions`)}),(0,Q.jsx)(`th`,{children:i(`routing.costCap`)}),(0,Q.jsx)(`th`,{children:i(`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?` ✓ (${i(`routing.selected`)})`:``]}),(0,Q.jsx)(`td`,{children:e.eligible?i(`routing.yes`):i(`routing.no`)}),(0,Q.jsx)(`td`,{children:e.exclusions.map(e=>Sb(e.code,i)).join(`, `)||i(`routing.none`)}),(0,Q.jsx)(`td`,{children:xb(e.cost?.capOutcome,i,o)}),(0,Q.jsx)(`td`,{children:e.score?e.score.total.toFixed(3):o})]},`${e.provider}/${e.model}`))})]}):null]}),s.length>0&&(0,Q.jsxs)(`div`,{className:`panel`,style:{marginTop:14,display:`flex`,flexDirection:`column`,gap:10},children:[(0,Q.jsx)(`h3`,{children:i(`routing.analytics`)}),l?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`card-badges`,children:[(0,Q.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsTotal`),`: `,l.totalRequests]}),(0,Q.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsSuccessRate`),`: `,bb(l.successRate,o)]}),(0,Q.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsFallbackRate`),`: `,bb(l.fallbackRate,o)]}),(0,Q.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsP50`),`: `,yb(l.durationMs.p50,o)]}),(0,Q.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsP95`),`: `,yb(l.durationMs.p95,o)]}),(0,Q.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsP99`),`: `,yb(l.durationMs.p99,o)]}),(0,Q.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsCooldown`),`: `,l.cooldownTriggeringFailures]}),(0,Q.jsxs)(`span`,{className:`badge badge-muted`,children:[i(`routing.analyticsConfidence`),`: `,l.confidence??o]}),l.historyTruncated?(0,Q.jsx)(`span`,{className:`badge badge-muted`,children:i(`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:i(`routing.candidate`)}),(0,Q.jsx)(`th`,{children:i(`routing.analyticsRequests`)}),(0,Q.jsx)(`th`,{children:i(`routing.analyticsSuccessRate`)}),(0,Q.jsx)(`th`,{children:i(`routing.analyticsP50`)})]})}),(0,Q.jsx)(`tbody`,{children:l.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:bb(e.successRate,o)}),(0,Q.jsx)(`td`,{children:yb(e.p50DurationMs,o)})]},`${e.provider}/${e.model}`))})]})]}):(0,Q.jsx)(`p`,{className:`muted`,children:i(`routing.analyticsEmpty`)})]})]})}var Db=[`protocol_conformance`,`live_route_compatibility`,`task_effectiveness`],Ob=[`UNKNOWN`,`CLAIMED`,`PROBED`,`VERIFIED`,`DEGRADED`,`BLOCKED`,`UNSUPPORTED`],kb=[`present`,`corrupt`,`purged_unavailable`];function Ab(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function jb(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}function Mb(e){return e===null||typeof e==`string`}function Nb(e){return e===void 0||typeof e==`number`&&Number.isFinite(e)}function Pb(e){if(!Ab(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(!Nb(e[t]))return null;return e.projectionSpecVersion!==void 0&&typeof e.projectionSpecVersion!=`string`?null:e}function Fb(e){return!Ab(e)||typeof e.projectionKey!=`string`||e.projectionKey.length===0||typeof e.subjectId!=`string`||e.subjectId.length===0||typeof e.evidenceLayer!=`string`||!Db.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`||!Ob.includes(e.verdict)||typeof e.asOf!=`number`||!Number.isFinite(e.asOf)||!jb(e.scenarioManifestDigests)||!Mb(e.claimSourceDigest)||!jb(e.contributingEventIds)||!jb(e.contradictingEventIds)||!jb(e.notes)?null:e}function Ib(e){return!Ab(e)||!Array.isArray(e.verdicts)?{verdicts:[],hasMore:!1}:{verdicts:e.verdicts.map(Fb).filter(e=>e!==null),hasMore:e.hasMore===!0,nextCursor:typeof e.nextCursor==`string`?e.nextCursor:void 0}}function Lb(e){return!Ab(e)||!Array.isArray(e.subjects)?{subjects:[],hasMore:!1}:{subjects:e.subjects.filter(e=>Ab(e)&&typeof e.subjectId==`string`&&typeof e.subjectKind==`string`),hasMore:e.hasMore===!0,nextCursor:typeof e.nextCursor==`string`?e.nextCursor:void 0}}function Rb(e){return!Ab(e)||!Ab(e.subject)||typeof e.subject.subjectKind!=`string`?null:e.subject}function zb(e){return!Ab(e)||typeof e.eventId!=`string`||typeof e.subjectId!=`string`||typeof e.evidenceLayer!=`string`||!Db.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`||!Mb(e.exclusionReason)?null:e}function Bb(e){return!Ab(e)||!Array.isArray(e.observations)?{observations:[],hasMore:!1}:{observations:e.observations.map(zb).filter(e=>e!==null),hasMore:e.hasMore===!0,nextCursor:typeof e.nextCursor==`string`?e.nextCursor:void 0}}function Vb(e){if(!Ab(e)||!Ab(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`||!Mb(t.exclusionReason)?null:t}function Hb(e){if(!Ab(e)||!Ab(e.artifact))return null;let t=e.artifact;return typeof t.digest!=`string`||typeof t.status!=`string`||!kb.includes(t.status)||!Mb(t.artifactClass)||!Mb(t.mediaType)||t.byteCount!==null&&(typeof t.byteCount!=`number`||!Number.isFinite(t.byteCount))||!Mb(t.lastError)?null:t}function Ub(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 Wb(){return{protocol_conformance:[],live_route_compatibility:[],task_effectiveness:[]}}function Gb(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:Wb()},r.set(t.subjectId,e)),e.byLayer[t.evidenceLayer].push(t)}return[...r.values()].sort((e,t)=>e.subjectId.localeCompare(t.subjectId))}function Kb(e){return e.length<=16?e:`${e.slice(0,8)}.${e.slice(-6)}`}function qb(e,t){return!Number.isFinite(e)||e<=0?`-`:new Date(e).toLocaleString(t)}function Jb(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 Yb(e){if(!e)return{};let t=typeof e.inboundProtocol==`string`?Hp(e.inboundProtocol):void 0,n=typeof e.upstreamProtocol==`string`?Hp(e.upstreamProtocol):void 0;return{...t?{inbound:t}:{},...n?{upstream:n}:{}}}function Xb(e){return e.inbound!==``||e.upstream!==``}function Zb(e,t){return!Xb(t)||!(!e||t.inbound&&e.inbound!==t.inbound||t.upstream&&e.upstream!==t.upstream)}function Qb(e,t,n){return Xb(n)?e.filter(e=>Zb(t.get(e.subjectId),n)):e}function $b(e,t){return Xb(e)?t.some(e=>Db.some(t=>e.byLayer[t].length>0))?`evidence`:`unverified`:`any`}function ex(){let e=i();return t=>t?Dm(t,e):e(`compatProtocol.anyProtocol`)}function tx({value:e,onChange:t}){let n=i(),r=ex(),a=[{value:``,label:n(`lab.filter.all`)},...wp.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)(an,{id:`lab-filter-inbound`,value:e.inbound,options:a,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)(an,{id:`lab-filter-upstream`,value:e.upstream,options:a,onChange:n=>t({...e,upstream:n}),label:n(`compatProtocol.filter.upstream`),portal:!1})]})]})}function nx({filter:e,evidence:t,resolution:n}){let r=i(),a=ex();if(!Xb(e))return null;let o=r(`compatProtocol.pair`,{inbound:a(e.inbound),upstream:a(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:o})}):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 rx=50,ix=200,ax=6,ox=200;async function sx(e,t,n){return fn(await fetch(`${e}${t}`,{signal:n}))}function cx(e,t){let n=new URLSearchParams({limit:String(rx)});for(let[t,r]of Object.entries(e))r&&n.set(t,r);return t&&n.set(`cursor`,t),n.toString()}var lx=class extends Error{};function ux(){return new lx}function dx(e,t,n){if(e.hasMore!==void 0&&typeof e.hasMore!=`boolean`||e.nextCursor!==void 0&&typeof e.nextCursor!=`string`||t&&!n)throw ux()}function fx(e){if(!Ab(e)||!Array.isArray(e.verdicts))throw ux();let t=Ib(e);if(t.verdicts.length!==e.verdicts.length)throw ux();return dx(e,t.hasMore,t.nextCursor),t}function px(e){if(!Ab(e)||!Array.isArray(e.subjects))throw ux();let t=Lb(e);if(t.subjects.length!==e.subjects.length)throw ux();return dx(e,t.hasMore,t.nextCursor),t}function mx(e){if(!Ab(e)||!Array.isArray(e.observations))throw ux();let t=Bb(e);if(t.observations.length!==e.observations.length)throw ux();return dx(e,t.hasMore,t.nextCursor),t}async function hx(e,t){let n=Pb(await sx(e,`/api/lab/status`,t));if(!n)throw ux();return n}async function gx(e,t,n,r){return fx(await sx(e,`/api/lab/verdicts?${cx({layer:t.layer,verdict:t.verdict,subjectId:t.subjectId,suiteId:t.suiteId},n)}`,r))}async function _x(e,t,n){return px(await sx(e,`/api/lab/subjects?${cx({},t)}`,n))}async function vx(e){let t=[],n=new Set,r;for(let i=0;i<ix;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 lx;n.add(a),r=a}return{rows:t,truncated:!0}}async function yx(e,t){return vx(async n=>{let r=await _x(e,n,t);return{rows:r.subjects,hasMore:r.hasMore,nextCursor:r.nextCursor}})}async function bx(e,t,n){let r=Rb(await sx(e,`/api/lab/subjects/${encodeURIComponent(t)}`,n));if(!r)throw ux();return r}async function xx(e,t,n,r){return mx(await sx(e,`/api/lab/observations?${cx({subjectId:t.subjectId,layer:t.layer,suiteId:t.suiteId},n)}`,r))}async function Sx(e,t,n){return vx(async r=>{let i=await xx(e,t,r,n);return{rows:i.observations,hasMore:i.hasMore,nextCursor:i.nextCursor}})}async function Cx(e,t,n){let r=Vb(await sx(e,`/api/lab/events/${encodeURIComponent(t)}`,n));if(!r)throw ux();return r}async function wx(e,t,n){let r=Hb(await sx(e,`/api/lab/artifacts/${encodeURIComponent(t)}`,n));if(!r)throw ux();return r}function Tx(e){if(!Ab(e)||e.verificationStatus!==`not_verification`||!Ab(e.summary))throw ux();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 ux();return{verificationStatus:`not_verification`,summary:t}}async function Ex(e,t,n){return Tx(await sx(e,`/api/lab/production-signals?${cx({subjectId:t})}`,n))}function Dx(e,t){let n=new Set(t);return Object.keys(e).every(e=>n.has(e))}function Ox(e){return typeof e==`string`&&/^[0-9a-f]{64}$/.test(e)}function kx(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function Ax(e){if(!Ab(e)||!Dx(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(!Ab(n)||!Dx(n,[`trustClass`,`status`,`bundleId`,`publisherKeyId`,`activeRecordCount`,`revokedRecordCount`])||n.trustClass!==`community_untrusted_v1`||n.status!==`cryptographically_valid`||!Ox(n.bundleId)||!Ox(n.publisherKeyId)||!kx(n.activeRecordCount)||!kx(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 jx(e,t){let n=Ax(await sx(e,`/api/lab/public/community`,t));if(!n)throw ux();return n}async function Mx(e,t,n){let[r,i]=await Promise.all([hx(e,n),jx(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([gx(e,t,void 0,n),yx(e,n)]);return{status:r,verdicts:a.verdicts,subjects:o.rows,subjectsTruncated:o.truncated,hasMore:a.hasMore,nextCursor:a.nextCursor,community:i}}async function Nx(e,t,n,r){return gx(e,t,n,r)}async function Px(e,t,n,r){let i=e.slice(0,ox),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 Fx(e,t,n){let r=[...new Set([...t.contributingEventIds,...t.contradictingEventIds])],i=Jb(t),a={subjectId:t.subjectId,layer:t.evidenceLayer,suiteId:t.suiteId},[o,s,c,l,u]=await Promise.all([bx(e,t.subjectId,n),Sx(e,a,n),Px(r,ax,n,t=>Cx(e,t,n)),Px(i,ax,n,t=>wx(e,t,n)),Ex(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 Ix=6,Lx=2e3,Rx=`
7
- `,zx=new Map;function Bx(e,t){return JSON.stringify([e,t])}function Vx(e,t){for(zx.set(e,t);zx.size>Lx;){let e=zx.keys().next().value;if(e===void 0)break;zx.delete(e)}}var Hx={pairs:new Map,loading:!1,unresolved:0};function Ux(e,t,n){let[,r]=(0,Z.useState)(0),i=n?t.slice(0,200):[],a=i.filter(t=>!zx.has(Bx(e,t))).join(Rx);if((0,Z.useEffect)(()=>{if(!a)return;let t=new AbortController,n=a.split(Rx);return Promise.all(Array.from({length:Math.min(Ix,n.length)},async()=>{for(let r=n.shift();r!==void 0;r=n.shift())try{let n=await bx(e,r,t.signal);Vx(Bx(e,r),Yb(n))}catch{if(t.signal.aborted)return;Vx(Bx(e,r),null)}})).then(()=>{t.signal.aborted||r(e=>e+1)}),()=>t.abort()},[e,a]),!n)return Hx;let o=new Map,s=Math.max(0,t.length-200);for(let t of i){let n=zx.get(Bx(e,t));n?o.set(t,n):n===null&&(s+=1)}return{pairs:o,loading:a.length>0,unresolved:s}}var Wx={protocol_conformance:`lab.layer.protocol_conformance`,live_route_compatibility:`lab.layer.live_route_compatibility`,task_effectiveness:`lab.layer.task_effectiveness`},Gx={protocol_conformance:`lab.col.protocol`,live_route_compatibility:`lab.col.live`,task_effectiveness:`lab.col.task`},Kx={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`},qx={present:`artifact.present`,corrupt:`artifact.corrupt`,purged_unavailable:`artifact.purged_unavailable`};function Jx(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 Yx({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 Xx({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)(Yx,{verdict:e.verdict,caption:e.suiteId,label:t(Kx[e.verdict]),selected:n===e.projectionKey,onSelect:()=>r(e)},e.projectionKey))})}function Zx({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:qb(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 Qx({community:e,locale:t}){if(!e||e.evidence.length===0)return null;let r=e.evidence.reduce((e,t)=>e+t.activeRecordCount,0),i=e.evidence.reduce((e,t)=>e+t.revokedRecordCount,0);return(0,Q.jsxs)(`section`,{className:`lab-matrix-block`,"data-testid":`lab-community-evidence`,children:[(0,Q.jsx)(`h3`,{className:`lab-matrix-title`,children:n(t,`community.title`)}),(0,Q.jsx)(`p`,{className:`muted`,children:n(t,`community.notLocalVerdict`)}),(0,Q.jsxs)(`dl`,{className:`lab-detail-meta`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:n(t,`community.bundles`)}),(0,Q.jsx)(`dd`,{children:e.evidence.length})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:n(t,`community.activeRecords`)}),(0,Q.jsx)(`dd`,{children:r})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:n(t,`community.revokedRecords`)}),(0,Q.jsx)(`dd`,{children:i})]})]})]})}function $x({verdict:e,detail:t,loading:r,error:i,t:a,locale:o,onClose:s}){let c=new Set([...e.contributingEventIds,...e.contradictingEventIds]).size;return(0,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:Kb(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(Wx[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(Kx[e.verdict])})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`dt`,{children:a(`lab.col.asOf`)}),(0,Q.jsx)(`dd`,{children:qb(e.asOf,o)})]})]}),r&&(0,Q.jsx)(Kv,{busy:!0,children:a(`common.loading`)}),i&&(0,Q.jsx)($,{tone:`err`,children:i}),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:qb(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:qb(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:Kb(e.digest)}),(0,Q.jsx)(`span`,{children:e.artifactClass??`-`}),(0,Q.jsx)(`span`,{children:n(o,qx[e.status])})]},e.digest))})]})]})]})}function eS({apiBase:e,active:t=!0,onCountChange:r}){let{t:i,locale:a}=D(),[o,s]=(0,Z.useState)({layer:``,verdict:``,subjectQuery:``,suiteId:``}),[c,l]=(0,Z.useState)(()=>sg()??rg),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(null),[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(null),[v,y]=(0,Z.useState)(null),[b,x]=(0,Z.useState)(!1),[S,C]=(0,Z.useState)(null),w=(0,Z.useRef)(null),T=(0,Z.useRef)(null),E=(0,Z.useRef)(null),O=(0,Z.useMemo)(()=>Ub(o),[o]),k=JSON.stringify(O),A=(0,Z.useCallback)(t=>Mx(e,O,t),[e,O]),j=za(`lab-matrix:${e}:${k}`,[e,k],A,{isEmpty:e=>e.verdicts.length===0,pollMs:6e4,enabled:t,pauseWhenHidden:!0}),M=(0,Z.useCallback)(()=>{w.current?.abort(),w.current=null,d(null),p(null),h(!1)},[]),N=(0,Z.useCallback)(()=>{E.current=null,T.current?.abort(),T.current=null,_(null),y(null),C(null),x(!1)},[]);(0,Z.useEffect)(()=>{w.current?.abort()},[j.data]),(0,Z.useEffect)(()=>()=>{w.current?.abort(),T.current?.abort()},[]);let P=(0,Z.useCallback)(e=>{N(),M(),s(e)},[N,M]),F=(0,Z.useCallback)(e=>{N(),l(e),t&&Ut(ag(e))},[t,N]);(0,Z.useEffect)(()=>{let e=()=>{let e=sg();e&&l(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=u!==null&&u.baseData===j.data&&u.queryKey===k?u:null,L=f!==null&&f.baseData===j.data&&f.queryKey===k?f.message:null,R=(0,Z.useMemo)(()=>{if(!t||!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)},[t,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?Gb(z,j.data.subjects):[],[z,j.data]),V=Xb(c),H=Ux(e,(0,Z.useMemo)(()=>B.map(e=>e.subjectId),[B]),t&&V),U=(0,Z.useMemo)(()=>Qb(B,H.pairs,c),[c,H.pairs,B]),ee=(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]),W=$b(c,U),G=(0,Z.useCallback)(async()=>{let t=I?.nextCursor??j.data?.nextCursor,n=j.data;if(!t||!n||m)return;w.current?.abort();let r=new AbortController;w.current=r;let a=k;p(null),h(!0);try{let i=await Nx(e,O,t,r.signal);if(r.signal.aborted)return;d(e=>{let t=e?.baseData===n&&e.queryKey===a?e.verdicts:[];return{baseData:n,queryKey:a,verdicts:[...t,...i.verdicts],nextCursor:i.nextCursor,hasMore:i.hasMore}})}catch(e){r.signal.aborted||p({baseData:n,queryKey:a,message:Jx(e,i(`lab.loadFailed`))})}finally{w.current===r&&(w.current=null,h(!1))}},[e,m,O,k,j.data,i,I]),te=(0,Z.useCallback)(async n=>{if(!t)return;T.current?.abort();let r=new AbortController;T.current=r,E.current=n.projectionKey,_(n),y(null),C(null),x(!0);try{let t=await Fx(e,n,r.signal);!r.signal.aborted&&E.current===n.projectionKey&&y(t)}catch(e){!r.signal.aborted&&E.current===n.projectionKey&&C(Jx(e,i(`lab.detailLoadFailed`)))}finally{T.current===r&&(T.current=null,!r.signal.aborted&&E.current===n.projectionKey&&x(!1))}},[t,e,i]),ne=j.refresh,K=(0,Z.useCallback)(()=>{N(),M(),ne({forceLoading:!0})},[N,ne,M]),re=t?g:null,q=I?I.hasMore:j.data?.hasMore??!1,J=[{value:``,label:i(`lab.filter.all`)},...Db.map(e=>({value:e,label:i(Wx[e])}))],ie=[{value:``,label:i(`lab.filter.all`)},...Ob.map(e=>({value:e,label:i(Kx[e])}))],Y=[{value:``,label:i(`lab.filter.all`)},...(j.data?.subjects??[]).map(e=>({value:e.subjectId,label:`${Kb(e.subjectId)} · ${e.subjectKind}`}))];if(j.state.showSkeleton)return(0,Q.jsx)(Gv,{label:i(`lab.loading`),rows:5});let X=j.state.showError?Jx(j.error,i(`lab.loadFailed`)):null,ae=j.data?.status,oe=ae&&!ae.projectionAvailable,se=ae?.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:K,disabled:j.refreshing,children:[(0,Q.jsx)(Fe,{}),i(`lab.refresh`)]})}),j.refreshing&&!j.state.showSkeleton&&(0,Q.jsx)(Kv,{busy:!0,live:!X,children:i(`common.loading`)}),X&&(0,Q.jsx)($,{tone:`err`,children:X}),se&&(0,Q.jsx)($,{tone:`err`,children:i(`lab.projectionIncompatible`)}),oe&&!se&&(0,Q.jsx)(on,{title:i(`lab.projectionUnavailable`)}),oe&&!se&&(0,Q.jsx)(nx,{filter:c,evidence:`unverified`,resolution:{loading:!1,unresolved:0}}),j.data&&(0,Q.jsx)(Qx,{community:j.data.community,locale:a}),j.data&&ae?.projectionAvailable&&!se&&(0,Q.jsxs)(`div`,{className:`lab-layout`,children:[(0,Q.jsxs)(`div`,{className:`lab-main`,children:[(0,Q.jsx)(Zx,{data:j.data,t:i,locale:a}),(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:i(`lab.filter.layer`)}),(0,Q.jsx)(an,{id:`lab-filter-layer`,value:o.layer,options:J,onChange:e=>P(t=>({...t,layer:e})),label:i(`lab.filter.layer`),portal:!1})]}),(0,Q.jsxs)(`div`,{className:`lab-filter-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`lab-filter-verdict`,children:i(`lab.filter.verdict`)}),(0,Q.jsx)(an,{id:`lab-filter-verdict`,value:o.verdict,options:ie,onChange:e=>P(t=>({...t,verdict:e})),label:i(`lab.filter.verdict`),portal:!1})]}),(0,Q.jsxs)(`div`,{className:`lab-filter-field`,children:[(0,Q.jsx)(`label`,{htmlFor:`lab-filter-subject`,children:i(`lab.filter.subject`)}),(0,Q.jsx)(an,{id:`lab-filter-subject`,value:o.subjectQuery,options:Y,onChange:e=>P(t=>({...t,subjectQuery:e})),label:i(`lab.filter.subject`),portal:!1})]}),(0,Q.jsx)(tx,{value:c,onChange:F})]}),(0,Q.jsx)(nx,{filter:c,evidence:W,resolution:H}),U.length===0?(0,Q.jsx)(on,{title:i(`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:i(`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:i(`lab.col.subject`)}),(0,Q.jsx)(`th`,{children:i(`lab.subjectKind`)}),Db.map(e=>(0,Q.jsx)(`th`,{children:i(Gx[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:Kb(e.subjectId)}),(0,Q.jsx)(`td`,{className:`kind`,children:e.subjectKind||n(a,`subjectKindUnknown`)}),Db.map(t=>(0,Q.jsx)(`td`,{children:(0,Q.jsx)(Xx,{rows:e.byLayer[t],t:i,selectedKey:re?.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:i(`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:i(`lab.col.subject`)}),(0,Q.jsx)(`th`,{children:i(`lab.col.layer`)}),(0,Q.jsx)(`th`,{children:i(`lab.col.suite`)}),(0,Q.jsx)(`th`,{children:i(`lab.col.verdict`)}),(0,Q.jsx)(`th`,{children:i(`lab.col.asOf`)})]})}),(0,Q.jsx)(`tbody`,{children:ee.map(e=>{let t=re?.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":n(a,`selectVerdict`,{subject:Kb(e.subjectId)}),onClick:()=>{te(e)},children:Kb(e.subjectId)})}),(0,Q.jsx)(`td`,{children:i(Wx[e.evidenceLayer])}),(0,Q.jsx)(`td`,{className:`mono`,children:e.suiteId}),(0,Q.jsx)(`td`,{children:(0,Q.jsx)(Yx,{verdict:e.verdict,caption:e.suiteId,label:i(Kx[e.verdict])})}),(0,Q.jsx)(`td`,{children:qb(e.asOf,a)})]},e.projectionKey)})})]})})]}),L&&(0,Q.jsx)($,{tone:`err`,children:L}),q&&(0,Q.jsx)(`div`,{className:`lab-load-more`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:m,onClick:()=>{G()},children:i(m?`common.loading`:`lab.loadMore`)})})]})]}),re&&(0,Q.jsx)($x,{verdict:re,detail:v,loading:b,error:S,t:i,locale:a,onClose:N})]})]})}var tS=[`catalog`,`combos`,`routing`,`compatibility`];function nS(e){return e===`catalog`?`models`:`models/${e}`}function rS(e=window.location.hash){let t=Ht(Vt(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 iS(e){Wt(nS(e))}function aS(e){return`models-tab-${e}`}function oS(e){return`models-panel-${e}`}var sS={catalog:`models.tab.catalog`,combos:`models.tab.combos`,routing:`models.tab.routing`,compatibility:`models.tab.compatibility`};function cS({tab:e,onSelect:t,meta:n}){let r=i(),a=(0,Z.useRef)(null);a.current===null&&(a.current=new Map);let o=e=>{t(e),window.requestAnimationFrame(()=>{a.current.get(e)?.focus({preventScroll:!0})})},s=t=>{let n=tS.indexOf(e),r=null;t.key===`ArrowLeft`?r=(n-1+tS.length)%tS.length:t.key===`ArrowRight`?r=(n+1)%tS.length:t.key===`Home`?r=0:t.key===`End`&&(r=tS.length-1),r!==null&&(t.preventDefault(),o(tS[r]))};return(0,Q.jsx)(`div`,{className:`page-tabs`,role:`tablist`,"aria-label":r(`models.tabsLabel`),children:tS.map(t=>{let i=t===e,c=n?.[t];return(0,Q.jsxs)(`button`,{ref:e=>{e?a.current.set(t,e):a.current.delete(t)},type:`button`,role:`tab`,id:aS(t),"aria-selected":i,"aria-controls":oS(t),tabIndex:i?0:-1,className:`page-tab${i?` page-tab--active`:``}`,onClick:()=>o(t),onKeyDown:s,children:[r(sS[t]),c?(0,Q.jsx)(`span`,{className:`section-tab-meta`,children:c}):null]},t)})})}function lS({summary:e,apiBase:t,onSaved:n}){let r=i(),[a,o]=(0,Z.useState)(!1),[s,c]=(0,Z.useState)(null),l=e?.fastOptIn?.enabled;if(s&&l!==s.from&&c(null),!e?.fastOptIn)return null;let u=e.fastOptIn.enabled,d=s&&s.from===u?s.value:u,f=async i=>{if(!(a||i===d)){o(!0);try{await fn(await fetch(`${t}/api/providers?name=${encodeURIComponent(e.name)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({fastEnabled:i})}),r(`models.fastSaveFailed`)),c({value:i,from:u}),n(!0,r(i?`models.fastEnabled`:`models.fastDisabled`))}catch(e){n(!1,e instanceof Error?e.message:r(`models.fastSaveFailed`))}finally{o(!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":d===e,className:`btn btn-sm${d===e?` btn-primary`:` btn-ghost`}`,disabled:a,onClick:()=>void f(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 uS(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 dS({liveModels:e,discovery:t,showFailureBadge:n=!0}){let r=i(),a=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)(xe,{width:15,height:15,"aria-hidden":`true`,style:{flexShrink:0,marginTop:2}}),(0,Q.jsxs)(`span`,{children:[a&&n&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:r(`models.discoveryFailedBadge`)}),` `]}),a?`${ic(r,a)} `:`${r(e?`models.emptyDiscovery`:`models.emptyDiscoveryDisabled`)} `,(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:()=>Wt(`providers`),children:r(`models.openProviderSettings`)})]})]})}function fS(){let e=i();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)(xe,{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:()=>Wt(`providers`),children:e(`models.openProviderSettings`)})]})]})}function pS(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 mS({connected:e,catalogSyncedAt:t}){let{locale:n,t:r}=D(),i=pS(t,n),a=e?[{id:`saved`,chip:r(`models.delivery.chip.savedHub`),title:r(`models.delivery.savedHub.title`),body:r(`models.delivery.savedHub.body`)},{id:`synced`,chip:i?r(`models.delivery.chip.synced`,{time:i}):r(`models.delivery.chip.syncedUnknown`),title:r(`models.delivery.synced.title`),body:i?r(`models.delivery.synced.bodyAt`,{time:i}):r(`models.delivery.synced.bodyUnknown`)}]:[{id:`saved`,chip:r(`models.delivery.chip.saved`),title:r(`models.delivery.saved.title`),body:r(`models.delivery.saved.body`)}];return a.push({id:`loaded`,chip:r(`models.delivery.chip.loaded`),title:r(`models.delivery.loaded.title`),body:r(`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:r(`models.delivery.title`)}),(0,Q.jsx)(`span`,{className:`models-delivery-flow`,children:a.map(e=>e.chip).join(` → `)})]}),(0,Q.jsx)(`ol`,{className:`models-delivery-steps`,children:a.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:r(`models.delivery.hint`)})]})}var hS=`ocx.models.settingsOpen.v1`;function gS(e){return e||(typeof localStorage>`u`?void 0:localStorage)}function _S(e){try{return gS(e)?.getItem(hS)===`1`}catch{return!1}}function vS(e,t){try{gS(t)?.setItem(hS,e?`1`:`0`)}catch{}}var yS={default:`models.pickerOrder.default`,alphabetical:`models.pickerOrder.alphabetical`,provider:`models.pickerOrder.provider`,"most-used":`models.pickerOrder.mostUsed`,custom:`models.pickerOrder.custom`};function bS(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}`)}),t.multiAgentMode===`v2`&&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}),r.push({id:`window`,label:e(`models.contextCapLabel`),value:t.windowOn?yc(t.windowValue):n});let i=yS[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 xS({title:e,attentionLabel:t,summary:n,warn:r,children:i,storage:a}){let[o,s]=(0,Z.useState)(()=>_S(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),vS(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 SS({count:e,label:t}){return e===0?null:(0,Q.jsx)(`span`,{className:`models-chip mono text-caption models-custom-summary`,children:t})}function CS({text:e}){return(0,Q.jsx)(sn,{content:e,side:`top`,maxWidth:360,children:(0,Q.jsxs)(`span`,{className:`models-info-hint`,children:[(0,Q.jsx)(xe,{width:14,height:14,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:e})]})})}var wS={catalog:`models.subtitle`,combos:`models.subtitle.combos`,routing:`models.subtitle.routing`,compatibility:`models.subtitle.compatibility`};function TS(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 ES({apiBase:e,restartEpoch:t=0,connected:n=!1,catalogSyncedAt:r,reportRestart:a}){let[o,s]=(0,Z.useState)(null),c=(0,Z.useRef)(!0);(0,Z.useEffect)(()=>(c.current=!0,()=>{c.current=!1}),[]);let l=(0,Z.useRef)(null),u=(0,Z.useRef)(0),d=(0,Z.useRef)(e),f=(0,Z.useCallback)(()=>{u.current++,l.current?.controller.abort(),l.current?.clear(),l.current=null},[]),p=(0,Z.useCallback)(async()=>{if(!c.current||d.current!==e)return;f();let t=u.current,n=T(15e3);l.current=n;try{let r=await f_(e,{signal:n.signal});if(n.signal.aborted||!c.current||d.current!==e||t!==u.current||l.current!==n)return;s(r.state)}finally{n.clear(),l.current===n&&(l.current=null)}},[e,f]),{restarting:m,restart:h}=__(e,{onSettled:()=>{p()},report:a});(0,Z.useEffect)(()=>(d.current=e,s(null),p(),f),[e,f,p,t]);let[g,_]=(0,Z.useState)(rS),[v,y]=(0,Z.useState)(()=>new Set([rS()])),b=(0,Z.useCallback)(e=>{_(e),y(t=>t.has(e)?t:new Set([...t,e]))},[]);(0,Z.useEffect)(()=>{let e=()=>b(rS());return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[b]);let x=(0,Z.useCallback)(e=>{iS(e),b(e)},[b]),S=g===`catalog`,[C,w]=(0,Z.useState)(null),[E,D]=(0,Z.useState)(null),[O,k]=(0,Z.useState)(null),A=i(),j=`ocx.models.catalog.v1:${e}`,M=(0,Z.useMemo)(()=>Na(j),[j]),[N,P]=(0,Z.useState)(()=>M?.models??[]),[F,I]=(0,Z.useState)(()=>M?.providers??[]),[R,z]=(0,Z.useState)(()=>new Set(M?.disabled??[])),[B,V]=(0,Z.useState)(()=>M?.selectedModels??null),[H,U]=(0,Z.useState)({}),[ee,W]=(0,Z.useState)({}),[G,te]=(0,Z.useState)({}),[ne,K]=(0,Z.useState)(()=>M?.contextCaps??{}),[re,q]=(0,Z.useState)(()=>M?.contextCapValues??{}),[J,ie]=(0,Z.useState)(()=>M?.contextCapValue??35e4),Y=`${j}:picker-order`,X=(0,Z.useMemo)(()=>{let e=Na(Y);return Cg(e)?e:void 0},[Y]),[ae,oe]=(0,Z.useState)(null),[ce,le]=(0,Z.useState)(!1),ue=(0,Z.useRef)(null),de=(0,Z.useRef)(0),fe=za(Y,[e],(0,Z.useCallback)(async t=>{let n=await fn(await fetch(`${e}/api/subagent-models`,{signal:t}));if(!Cg(n))throw Error(`picker settings payload missing`);if(t.aborted)throw Error(`picker settings request aborted`);return La(Y,n),n},[e,Y]),{isEmpty:()=>!1,enabled:S,deadlineMs:15e3,initialData:X}),pe=fe.state.data,me=ae??kg(pe?.pickerAvailable??[],pe?.pickerOrder??[],pe?.pickerOrderMode);(0,Z.useLayoutEffect)(()=>(de.current++,oe(null),le(!1),()=>{de.current++,ue.current?.controller.abort(),ue.current?.clear(),ue.current=null}),[e,S]),(0,Z.useLayoutEffect)(()=>{S&&ae===null&&me===`custom`&&oe(`custom`)},[S,ae,me]);let[he,ge]=(0,Z.useState)(``),[ve,ye]=(0,Z.useState)(!1),[be,Ce]=(0,Z.useState)({}),[we,Te]=(0,Z.useState)({}),Ee=Sc(),[Oe,ke]=(0,Z.useState)(()=>Ee??new Set),Ae=(0,Z.useRef)(Ee===null),[je,Me]=(0,Z.useState)(``),[Pe,Ie]=(0,Z.useState)([]),[Le,Re]=(0,Z.useState)(!1),[ze,Be]=(0,Z.useState)(0),Ve=(0,Z.useCallback)((e,t)=>{Re(e),Me(t),Be(e=>e+1)},[]);(0,Z.useEffect)(()=>{if(!je)return;let e=setTimeout(()=>Me(``),Le?6e3:8e3);return()=>clearTimeout(e)},[je,Le,ze]);let[He,We]=(0,Z.useState)(!1),Ge=(0,Z.useRef)(!1),Ke=(0,Z.useRef)(!1),qe=(0,Z.useRef)(0),Je=(0,Z.useRef)(!1),Ye=Uv(e,{onQueued:()=>{++qe.current,Me(``)},onBusy:e=>{++qe.current,Je.current=!1,Ke.current=e,Ge.current=e,We(e)},onResponse:e=>{let t=ps(e);t!==void 0&&Ie(t)},refresh:e=>gr(!0,e),onSettled:e=>{Re(!e),Me(A(e??`models.applied`))}}),Xe=(e,t,n,r,i)=>Ye.visible(t,n,r,ys(e,t,n,r,i)),[Ze,Qe]=(0,Z.useState)(null),[$e,et]=(0,Z.useState)({}),[tt,nt]=(0,Z.useState)(null),[rt,it]=(0,Z.useState)({providers:{},models:{},defaults:{global:!1,providers:{}}}),[at,ot]=(0,Z.useState)(!1),[st,ct]=(0,Z.useState)(null),[lt,ut]=(0,Z.useState)(!0),[dt,ft]=(0,Z.useState)(!1),[pt,mt]=(0,Z.useState)(``),ht=(0,Z.useRef)(!1),[gt,_t]=(0,Z.useState)(``),[vt,yt]=(0,Z.useState)(!1),[bt,xt]=(0,Z.useState)(!1),[St,Ct]=(0,Z.useState)(null),[wt,Tt]=(0,Z.useState)(!1),[Et,Dt]=(0,Z.useState)(null),[Ot,kt]=(0,Z.useState)(null),At=(0,Z.useRef)(null),[jt,Mt]=(0,Z.useState)(null),[Nt,Pt]=(0,Z.useState)(!1),[Ft,It]=(0,Z.useState)(null),[Lt,Rt]=(0,Z.useState)(null),[zt,Vt]=(0,Z.useState)(!1),Ht=(0,Z.useRef)(null),Ut=(0,Z.useRef)(!1);(0,Z.useEffect)(()=>()=>{Ht.current?.controller.abort(),Ht.current?.clear(),Ht.current=null},[]);let Wt=(0,Z.useRef)(null),Gt=(0,Z.useCallback)(async t=>{let n=await pn(await fetch(`${e}/api/aliases`,{signal:t}));n&&!t?.aborted&&it(n)},[e]);(0,Z.useEffect)(()=>{let e=new AbortController;return Gt(e.signal),()=>e.abort()},[Gt]);let Kt={apiBase:e,t:A,reloadAliases:Gt,publishFeedback:Ve},qt=e=>v_(e,rt.providers[e]??``,Kt),Jt=(e,t)=>y_(e,t,rt.models[e]?.[t]?.alias??``,Kt),Yt=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 Gt()},[Xt,Zt]=(0,Z.useState)(`add`),[Qt,$t]=(0,Z.useState)(``),[en,tn]=(0,Z.useState)(``),[rn,cn]=(0,Z.useState)(``),[ln,un]=(0,Z.useState)(``),[dn,mn]=(0,Z.useState)(``),[hn,vn]=(0,Z.useState)(!1),[yn,bn]=(0,Z.useState)([`text`]),[xn,Sn]=(0,Z.useState)(!1),[Cn,wn]=(0,Z.useState)([]),Tn=(0,Z.useRef)(!1),[En,Dn]=(0,Z.useState)(!1),[On,kn]=(0,Z.useState)(``),[An,jn]=(0,Z.useState)(null),[Mn,Nn]=(0,Z.useState)([]),[Pn,Fn]=(0,Z.useState)(``),[In,Ln]=(0,Z.useState)(``),[Rn,zn]=(0,Z.useState)({}),[Bn,Vn]=(0,Z.useState)({contextWindow:null,modelContextWindows:{}}),[Hn,Un]=(0,Z.useState)(new Set),[Wn,Gn]=(0,Z.useState)(!1),[Kn,Jn]=(0,Z.useState)(!1),[Yn,Xn]=(0,Z.useState)(``),[Zn,Qn]=(0,Z.useState)(null),$n=(0,Z.useRef)(null),[er,tr]=(0,Z.useState)(null),[rr,ar]=(0,Z.useState)(!1),[or,sr]=(0,Z.useState)(null);(0,Z.useEffect)(()=>()=>{$n.current&&clearTimeout($n.current)},[]);let cr=(0,Z.useMemo)(()=>xc(N,R,B??{},A),[N,R,B,A]),lr=(0,Z.useMemo)(()=>{let e=new Set(cr.map(e=>e.value));return qn(N.filter(t=>e.has(t.namespaced)),er?.model,er?.sourceModels)},[N,er?.model,er?.sourceModels,cr]),ur=(0,Z.useCallback)(async()=>{let t=T(15e3);try{let n=await pn(await fetch(`${e}/api/shadow-call-settings`,{signal:t.signal}));n&&tr(n)}catch{}finally{t.clear()}},[e]),dr=(0,Z.useCallback)(async()=>{if(ht.current)return;let t=T(15e3);try{let n=await fetch(`${e}/api/v2`,{signal:t.signal});if(!(n.headers.get(`content-type`)??``).includes(`application/json`)){Qe(null);return}let r=await pn(n);if(!r||typeof r.enabled!=`boolean`){Qe(null);return}Qe({enabled:r.enabled,agentsMaxThreadsConflict:r.agentsMaxThreadsConflict===!0,maxConcurrentThreadsPerSession:typeof r.maxConcurrentThreadsPerSession==`number`?r.maxConcurrentThreadsPerSession:null,multiAgentMode:r.multiAgentMode===`v1`||r.multiAgentMode===`v2`?r.multiAgentMode:`default`,keepNativeChatGptOnV1:r.keepNativeChatGptOnV1===!0})}catch{Qe(null)}finally{t.clear(),ut(!1)}},[e]),fr=(0,Z.useCallback)(async t=>{let n=qe.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}),_s(e,fetch,t)]),[s,c,l]=await Promise.all([fn(r),fn(i),fn(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=bc(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===qe.current&&La(j,p),p},[e,j]),pr=(0,Z.useCallback)(e=>{let t=uS(e.models,e.providers);sr(e=>e!==null&&!t.some(t=>t.provider===e)?null:e),P(e.models),I(e.providers),z(new Set(e.disabled)),V(e.selectedModels),ie(e.contextCapValue),K(e.contextCaps),q(e.contextCapValues??e.contextCaps)},[]),mr=za(j,[e],async e=>{let t=qe.current,n=await fr(e);if(e.aborted)throw Error(`models request aborted`);return!Ke.current&&t===qe.current&&pr(n),n},{isEmpty:()=>!1,pollMs:1e4,initialData:M??void 0,enabled:S,deadlineMs:6e4}),hr=mr.state,gr=(0,Z.useCallback)(async(e=!1,t)=>{if(Je.current&&!e)return!1;Je.current=!0;let n=++qe.current;try{let e=await fr(t??new AbortController().signal);return xs(n,qe.current)?(pr(e),Bt(j,e),fe.refresh(),!0):!1}catch{return!1}finally{xs(n,qe.current)&&(Je.current=!1)}},[pr,j,fr,fe.refresh]),_r=(0,Z.useCallback)(()=>{let e=Wt.current;Dt(null),It(null),Rt(null),Vt(!1),window.setTimeout(()=>{e?.isConnected&&e.focus()},0)},[]),vr=(0,Z.useCallback)(()=>{Ut.current||_r()},[_r]),yr=(0,Z.useCallback)(async t=>{let n=Et;if(!n||Ut.current)return;let r=T(6e4);Ht.current=r,Ut.current=!0,Pt(!0),It(null);let i=Lt?.confirmed===!0&&(t===void 0||t===Lt.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 fn(s,A(`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(A(`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)),Dt({...n,...r}),Vt(r.displayName===void 0)}if(!s.ok)throw Error(c.error||A(`models.displayNameSaveFailed`));o=!0}if(!await gr(!0,r.signal))throw Error(A(`models.loadFail`));r.signal.throwIfAborted(),Ve(!0,A(i?t===null||t===void 0&&Lt?.value===null?`models.displayNameResetDone`:`models.displayNameSaved`:`models.displayNameReloaded`)),_r()}catch(e){if(Ht.current!==r)return;let n=!a||r.signal.aborted;n&&!i&&Vt(!0),Rt(i||n||o?{value:o||n?void 0:t,confirmed:i}:null),It(i?A(`models.displayNameSavedRefreshFailed`):n||o?A(`models.displayNameOutcomeUnknown`):e instanceof Error&&e.message?e.message:A(`models.displayNameSaveFailed`))}finally{r.clear(),Ht.current===r&&(Ht.current=null,Ut.current=!1,Pt(!1))}},[e,Et,Lt,_r,gr,Ve,A]);(0,Z.useEffect)(()=>{if(!S)return;let e=window.setTimeout(()=>{ur(),dr(),Hr(),Ur()},0),t=ra(()=>{ht.current||dr()},1e4);return()=>{window.clearTimeout(e),t()}},[S,ur,dr]);let br=(0,Z.useMemo)(()=>uS(N,F),[N,F]),xr=N.length>0||hr.data!==void 0,Sr=e=>{let t=[...new Set([...e.rows.map(e=>e.id),...e.configuredModels,...Object.keys(e.modelContextWindows??{})])].sort(),n=t[0]??``;jn(e.provider),Nn(t),Fn(n);let r=e.contextWindow?String(e.contextWindow):``,i=Object.fromEntries(Object.entries(e.modelContextWindows??{}).map(([e,t])=>[e,String(t)]));Ln(r),zn(i),Vn({contextWindow:e.contextWindow??null,modelContextWindows:Object.fromEntries(Object.entries(e.modelContextWindows??{}).map(([e,t])=>[e,t]))}),Un(new Set),Gn(!1),Xn(``)},Cr=e=>{Fn(e)},wr=async()=>{if(!An)return;let t=TS(In);if(!br.find(e=>e.provider===An)){Xn(A(`models.contextSaveFailed`));return}if(Wn&&t===void 0){Xn(A(`models.contextInvalid`));return}let n=Object.create(null);for(let e of Hn){let t=TS(T_(Rn,e)??``);if(t===void 0){Xn(A(`models.contextInvalid`));return}t!==(T_(Bn.modelContextWindows,e)??null)&&(n[e]=t)}let r=Wn&&t!==Bn.contextWindow;if(!r&&Object.keys(n).length===0){jn(null),Ve(!0,A(`models.contextUnchanged`));return}Jn(!0),Xn(``);try{let i={};r&&(i.contextWindow=t),Object.keys(n).length>0&&(i.modelContextWindows=n),await fn(await fetch(`${e}/api/providers?name=${encodeURIComponent(An)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(i)}),A(`models.contextSaveFailed`))}catch(e){Xn(e instanceof Error?e.message:A(`models.contextSaveFailed`));return}finally{Jn(!1)}jn(null),Ve(!0,A(`models.contextSaved`)),await gr(!0)};(0,Z.useEffect)(()=>{if(!Ae.current||br.length===0)return;Ae.current=!1;let e=new Set(br.map(e=>e.provider));ke(e),Cc(e)},[br]);let Tr=(0,Z.useMemo)(()=>B?N.filter(e=>Xe(B,e.provider,e.id,e.native===!0,R.has(e.namespaced))).length:0,[R,N,B,Ye.overrides]),Er=(0,Z.useMemo)(()=>({catalog:xr?A(`models.active`,{active:Tr,total:N.length}):void 0,combos:C===null?void 0:String(C),routing:E===null?void 0:String(E),compatibility:O===null?void 0:String(O)}),[xr,C,O,Tr,N.length,E,A]),Dr=async(e,t,n,r)=>{Ge.current&&!Ye.isRunning()||Ye.enqueue(e,t,n,r)},Or=async t=>{We(!0),Ge.current=!0,Me(``);let n=ne[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 fn(r,A(`models.capSaveFailed`));K(e?.caps??{}),q(e?.values??e?.caps??{}),Re(!0),Me(A(`models.capApplied`)),await gr(!0)}catch(e){Re(!1),Me(e instanceof Error?e.message:A(`models.capSaveFailed`))}}catch{Re(!1),Me(A(`models.networkError`))}finally{We(!1),Ge.current=!1}},kr=e=>{ke(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),Cc(n),n})},Ar=e=>{ke(()=>{let t=e?new Set(br.map(e=>e.provider)):new Set;return Cc(t),t})},jr=async t=>{We(!0),Ge.current=!0,Me(``);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 fn(n,A(`models.capSaveFailed`));typeof e?.value==`number`&&Number.isFinite(e.value)&&e.value>0&&ie(e.value),K(e?.caps??{}),q(e?.values??e?.caps??{}),Re(!0),Me(A(`models.capApplied`)),await gr(!0)}catch(e){Re(!1),Me(e instanceof Error?e.message:A(`models.capSaveFailed`))}}catch{Re(!1),Me(A(`models.networkError`))}finally{We(!1),Ge.current=!1}},Mr=(0,Z.useMemo)(()=>{let e=br.filter(e=>!e.native);return e.length>0&&e.every(e=>ne[e.provider]===J)&&Object.keys(ne).every(e=>ne[e]===J)},[br,ne,J]),Nr=e=>{!Number.isSafeInteger(e)||e<=0||jr(Mr?{value:e,setAll:!0}:{value:e})},Pr=(e,t)=>{if(t===`custom`){Ce(t=>({...t,[e]:!0})),Te(t=>({...t,[e]:String(ne[e]??re[e]??J)}));return}Ce(t=>({...t,[e]:!1}));let n=Number(t);Number.isSafeInteger(n)&&n>0&&n!==ne[e]&&jr({provider:e,enabled:!0,value:n})},Fr=e=>{let t=Number((we[e]??``).replace(/[_,\s]/g,``));if(!Number.isSafeInteger(t)||t<=0){Ve(!1,A(`models.capSaveFailed`));return}Ce(t=>({...t,[e]:!1})),jr({provider:e,enabled:!0,value:t})},Ir=e=>{if(e===`custom`){ye(!0),ge(String(J));return}ye(!1);let t=Number(e);Number.isSafeInteger(t)&&t>0&&t!==J&&Nr(t)},Lr=()=>{let e=Number(he.replace(/[_,\s]/g,``));if(!Number.isSafeInteger(e)||e<=0){Ve(!1,A(`models.capSaveFailed`));return}ye(!1),Nr(e)},Rr=()=>{jr({setAll:!Mr})},zr=async t=>{if(!(!er||rr)){ar(!0),tr({...er,...t});try{await fetch(`${e}/api/shadow-call-settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)})}finally{ar(!1)}}},Br=async t=>{if(!(!Ze||ht.current)){ft(!0),ht.current=!0,mt(``),Me(``);try{let n=await fetch(`${e}/api/v2`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});try{let e=await fn(n,A(`models.saveFailed`));if(!e||typeof e.enabled!=`boolean`){Re(!1),Me(A(`models.saveFailed`));return}Qe({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),Me(A(`models.v2Applied`)),mt((e.warnings??[]).join(` `))}catch(e){Re(!1),Me(e instanceof Error?e.message:A(`models.saveFailed`))}}catch{Re(!1),Me(A(`models.networkError`))}finally{ft(!1),ht.current=!1}}},Vr=async e=>{if(!(!Ze||Ze.multiAgentMode===e)){if(e===`v1`){await Br({multiAgentMode:`v1`});return}Ct(e)}},Hr=async()=>{try{let t=T(15e3),n=await pn(await fetch(`${e}/api/model-presets`,{signal:t.signal}));et(n?.providers??{})}catch{et({})}},Ur=async()=>{try{let t=await fetch(`${e}/api/model-discovery`);nt(await pn(t)??null)}catch{nt(null)}},Wr=async(t,n)=>{await pn(await fetch(`${e}/api/model-discovery`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({policy:t,provider:n??null})})),await Promise.all([Ur(),gr()])},Gr=async(t,n,r)=>{if(!(r&&!await Qi({message:A(`models.presetConfirmReplace`,{count:String(r.presetCount)}),tone:`danger`}))&&!Ke.current){Ke.current=!0,ct(t),We(!0),Ge.current=!0;try{let r=T(3e4),i=await fn(await fetch(`${e}/api/model-presets`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({provider:t,mode:n}),signal:r.signal}),A(`models.saveFailed`));if(!i)throw Error(A(`models.saveFailed`));if(i.fallback===`preset-empty`)Ve(!1,A(`models.presetEmpty`,{provider:t}));else{let e=ps(i);e!==void 0&&Ie(e),Ve(!0,n===`all`?A(`models.presetClearedToast`,{provider:t}):A(`models.presetAppliedToast`,{provider:t,count:String(i.selected?.length??0)}))}await Promise.all([Hr(),gr()])}catch(e){Ve(!1,e instanceof Error?e.message:String(e))}finally{ct(null),We(!1),Ge.current=!1,Ke.current=!1}}},Kr=async e=>{!Ze||Ze.keepNativeChatGptOnV1===e||await Br({keepNativeChatGptOnV1:e})},qr=async t=>{if(!(!Ze||ht.current)){if(!Number.isInteger(t)||t<1){Ve(!1,A(`models.v2ThreadsInvalid`));return}if(Ze.maxConcurrentThreadsPerSession!==t){ft(!0),ht.current=!0,mt(``),Me(``);try{let n=await fetch(`${e}/api/v2`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({maxConcurrentThreadsPerSession:t})});try{let e=await fn(n,A(`models.saveFailed`));if(!e||typeof e.enabled!=`boolean`){Re(!1),Me(A(`models.saveFailed`));return}Qe({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),Me(A(`models.v2ThreadsApplied`)),yt(!1)}catch(e){Re(!1),Me(e instanceof Error?e.message:A(`models.saveFailed`))}}catch{Re(!1),Me(A(`models.networkError`))}finally{ft(!1),ht.current=!1}}}},Jr=e=>{if(e===`custom`){yt(!0),_t(String(Ze?.maxConcurrentThreadsPerSession??``));return}yt(!1),qr(Number(e))},Yr=(e,t)=>{$n.current&&clearTimeout($n.current),$n.current=setTimeout(()=>{Qn({namespaced:e,rect:t.getBoundingClientRect()})},300)},Xr=(e,t)=>{$n.current&&clearTimeout($n.current),Qn({namespaced:e,rect:t.getBoundingClientRect()})},Zr=()=>{$n.current&&clearTimeout($n.current),$n.current=setTimeout(()=>Qn(null),120)},Qr=()=>{$n.current&&clearTimeout($n.current)},$r=async(t,n,r,i,a,o)=>{Dn(!0),kn(``);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 fn(s,A(`models.customSaveFailed`)),Tt(!1),Ve(!0,A(`models.customAdded`)),await gr(!0)}catch(e){kn(e instanceof Error?e.message:A(`models.customSaveFailed`))}}catch{kn(A(`models.networkError`))}finally{Dn(!1)}},ei=async(t,n)=>{Dn(!0),kn(``);try{let r=await fetch(`${e}/api/custom-models/${encodeURIComponent(t)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)});try{await fn(r,A(`models.customSaveFailed`)),Tt(!1),Ve(!0,A(`models.customUpdated`)),await gr(!0)}catch(e){kn(e instanceof Error?e.message:A(`models.customSaveFailed`))}}catch{kn(A(`models.networkError`))}finally{Dn(!1)}},ti=async(t,n)=>{if(await Qi({message:A(`models.customDeleteConfirm`,{name:n}),confirmLabel:A(`common.delete`),tone:`danger`}))try{(await fetch(`${e}/api/custom-models/${encodeURIComponent(t)}`,{method:`DELETE`})).ok?(Ve(!0,A(`models.customDeleted`)),await gr(!0)):Ve(!1,A(`models.customSaveFailed`))}catch{Ve(!1,A(`models.networkError`))}},ni=hr.data??M,ri=hr.kind===`failed-cold`?hr.error instanceof Error?hr.error.message:A(`models.loadFail`):null,ii=hr.showSkeleton&&!ni,ai=B??{},oi=t=>{let{provider:n,rows:r,nativeProviderGroup:i,liveModels:a,discovery:o}=t,s=Oe.has(n),c=e=>Xe(ai,n,e.id,e.native===!0,R.has(e.namespaced)),l=ee[n]===!0,u=ac(r),d=sc(l,r),f=oc(r,d),p=f.filter(c).length,m=tt?.recentArrivals[n]??[],h=new Set(m.map(e=>e.id)),g=ne[n]!==void 0,_=ne[n]??re[n]??J,v=t.nativeProviderGroup?pc:dc,y=t.nativeProviderGroup?mc:fc,b=a&&o?.status===`failed`?o:void 0,x=(H[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),k=!D||f.every(c),j=!D||f.every(e=>!c(e)),M=e=>{!D||O||Dr(`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:()=>kr(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)(Ue,{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:se(n)}),rt.providers[n]&&(0,Q.jsx)(`span`,{className:`models-chip mono text-caption`,children:rt.providers[n]}),i&&(0,Q.jsx)(`span`,{className:`models-chip muted mono text-caption`,children:A(`models.nativeGroupLabel`)}),b&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,role:`status`,title:ic(A,b),children:A(`models.discoveryFailedBadge`)}),(0,Q.jsx)(`span`,{className:`muted mono text-label`,children:A(`models.active`,{active:p,total:f.length})}),m.length>0&&(0,Q.jsx)(`span`,{className:`models-chip mono text-caption`,children:A(`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":A(`models.editProviderAlias`),title:A(`models.editProviderAlias`),onClick:()=>void qt(n),children:(0,Q.jsx)(L,{style:{width:14,height:14}})}),(0,Q.jsx)(nn,{on:rt.defaults.providers[n]??rt.defaults.global,onClick:()=>void Yt(!(rt.defaults.providers[n]??rt.defaults.global),n),label:A(`models.useDefaultAliases`),showLabel:!0}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:e=>{e.stopPropagation(),Zt(`add`),$t(n),tn(``),cn(``),un(``),mn(``),vn(!1),bn([`text`]),Sn(!1),wn([]),Tn.current=!1,kn(``),Tt(!0)},"aria-haspopup":`dialog`,children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:`+`}),` `,A(`models.customAdd`)]}),(()=>{let e=$e[n];if(!e)return null;let t=He||st!==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":A(`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:He||t||O,onClick:t=>{t.stopPropagation(),Gr(n,r,r===`preset`&&e.mode===`custom`?e:void 0)},children:A(`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:A(`models.presetMode_custom`)})]}),e.mode===`preset`&&(0,Q.jsx)(`span`,{className:`muted mono text-label`,children:A(`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:A(`models.presetUpdateAvailable`,{version:String(e.availableVersion)})})]})})(),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,disabled:He&&!Ye.pending||k||O,onClick:()=>M(!0),children:A(`models.allOn`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,disabled:He&&!Ye.pending||j||O,onClick:()=>M(!1),children:A(`models.allOff`)}),(0,Q.jsxs)(`div`,{className:`models-cap-cluster`,children:[(0,Q.jsx)(nn,{on:g,onClick:()=>Or(n),disabled:He,label:A(`models.contextCapLabel`),showLabel:!0}),(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(an,{value:be[n]?hc:String(_),options:[...!y.has(_)&&!be[n]?[{value:String(_),label:yc(_)}]:[],...v.map(e=>({value:String(e),label:yc(e)})),{value:hc,label:A(`models.custom`)}],onChange:e=>Pr(n,e),disabled:He||!g,label:A(`models.capValue`,{value:yc(_)}),title:A(`models.contextCapLabel`)}),g&&be[n]&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`input`,{className:`input`,style:{width:120},inputMode:`numeric`,placeholder:A(`models.customPlaceholder`),value:we[n]??``,onChange:e=>Te(t=>({...t,[n]:e.target.value})),onKeyDown:e=>{e.key===`Enter`&&Fr(n)},disabled:He,"aria-label":A(`models.customPlaceholder`)}),(0,Q.jsx)(`button`,{type:`button`,onClick:()=>Fr(n),disabled:He,className:`btn btn-ghost btn-sm`,children:A(`models.customApply`)})]})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:()=>Sr(t),"aria-haspopup":`dialog`,children:A(`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:A(`models.nativeHint`)}),!i&&tt&&(0,Q.jsxs)(`div`,{className:`row models-provider-hint`,children:[(0,Q.jsx)(`span`,{className:`muted text-label`,children:A(`models.newPolicyProvider`)}),(0,Q.jsx)(`div`,{className:`segmented models-segmented`,role:`radiogroup`,"aria-label":A(`models.newPolicyProvider`),children:[`off`,`on`].map(e=>(0,Q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":(tt.providers[n]??`inherit`)===e,className:`btn btn-sm${(tt.providers[n]??`inherit`)===e?` btn-primary`:` btn-ghost`}`,onClick:()=>void Wr(e,n),children:A(`models.newPolicy_${e}`)},e))})]}),!i&&(0,Q.jsx)(lS,{summary:F.find(e=>e.name===n),apiBase:e,onSaved:(e,t)=>{Ve(e,t),e&&gr(!0)}}),r.length===0&&(0,Q.jsx)(dS,{liveModels:a,discovery:o,showFailureBadge:!1}),r.length>0&&b&&(0,Q.jsx)(fS,{}),u&&(0,Q.jsx)(`div`,{className:`row models-provider-hint`,children:(0,Q.jsx)(nn,{on:l,onClick:()=>W(e=>({...e,[n]:!l})),label:A(`models.freeOnly`),showLabel:!0})}),d&&f.length===0&&r.length>0&&(0,Q.jsx)(`p`,{className:`muted text-label`,role:`status`,children:A(`models.noFreeMatch`)}),r.length>30&&(0,Q.jsx)(`input`,{className:`input`,placeholder:A(`models.search`),value:H[n]??``,onChange:e=>U(t=>({...t,[n]:e.target.value})),"aria-label":A(`models.search`)}),T.map(e=>{let t=!c(e);return(0,Q.jsxs)(`div`,{className:`model-row-wrap`,onMouseEnter:t=>Yr(e.namespaced,t.currentTarget),onMouseLeave:Zr,onFocus:t=>Xr(e.namespaced,t.currentTarget),onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||Qn(null)},children:[(0,Q.jsxs)(`div`,{className:`row models-model-row`,children:[(0,Q.jsx)(nn,{on:!t,onClick:()=>void Dr(`models`,n,[{id:e.id,native:e.native===!0}],t),disabled:He&&!Ye.pending||e.initialSelectionPending,label:e.native?e.id:e.namespaced}),e.initialSelectionPending&&(0,Q.jsx)(`span`,{className:`models-chip muted`,role:`status`,children:A(`models.initialSelectionPending`)}),e.quotaInactiveReason===`no_credit`&&(0,Q.jsx)(`span`,{className:`models-chip muted`,role:`status`,title:A(`models.inactiveNoCreditHint`),children:A(`models.inactiveNoCredit`)}),rt.models[n]?.[e.id]&&(0,Q.jsx)(`strong`,{className:`mono text-control`,children:rt.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?w_(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()})]}),rt.models[n]?.[e.id]?.source===`builtin`&&(0,Q.jsx)(`span`,{className:`models-chip muted text-caption`,children:A(`models.aliasAuto`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":A(`models.editModelAlias`),title:A(`models.editModelAlias`),onClick:()=>void Jt(n,e.id),children:(0,Q.jsx)(L,{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":A(`models.displayNameActionLabel`,{model:e.namespaced}),onClick:t=>{Wt.current=t.currentTarget,It(null),Rt(null),Vt(!1),Dt(e)},children:A(`models.displayNameAction`)}),e.custom&&(0,Q.jsx)(`span`,{className:`models-chip muted mono text-caption`,children:A(`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:A(`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":A(`pricing.override.actionLabel`,{model:e.namespaced}),onClick:t=>{At.current=t.currentTarget,kt(e)},children:A(`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":A(`models.settingsTitle`,{model:e.namespaced}),onClick:()=>Mt(e),children:A(`models.customEdit`)}),!e.custom&&h.has(e.id)&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:A(`models.newBadge`)}),e.contextCapped&&(0,Q.jsx)(`span`,{className:`models-chip muted mono text-caption`,children:A(`models.contextCappedValue`,{value:yc(e.contextCap??J)})})]}),Zn?.namespaced===e.namespaced&&(()=>{let n=Zn.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:Qr,onMouseLeave:Zr,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:A(`models.customBadge`)}),(0,Q.jsxs)(`div`,{className:`model-tip-grid`,children:[(0,Q.jsx)(`span`,{className:`model-tip-key`,children:A(`models.tipProvider`)}),(0,Q.jsx)(`span`,{className:`model-tip-val`,children:_e(e.provider,A)}),(e.contextWindow||e.contextCap)&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`model-tip-key`,children:A(`models.tipContext`)}),(0,Q.jsx)(`span`,{className:`model-tip-val`,children:yc(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:A(`models.tipModalities`)}),(0,Q.jsx)(`span`,{className:`model-tip-val`,children:e.inputModalities.join(`, `)})]}),(0,Q.jsx)(`span`,{className:`model-tip-key`,children:A(`models.tipStatus`)}),(0,Q.jsx)(`span`,{className:`model-tip-val`,children:A(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:()=>{Zt(`edit`),$t(e.provider),tn(e.customId),cn(e.id),un(e.displayName??``),mn(e.contextWindow?String(e.contextWindow):``),vn(!1),bn(e.inputModalities??[`text`]),Sn(Array.isArray(e.reasoningEfforts)),wn(e.reasoningEfforts??[]),Tn.current=Array.isArray(e.reasoningEfforts),kn(``),Tt(!0),Qn(null)},children:A(`models.customEdit`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,style:{color:`var(--red)`},onClick:()=>{ti(e.customId,e.displayName??e.id).finally(()=>Qn(null))},children:A(`models.customDelete`)})]})]})})()]},e.namespaced)}),E>0&&(0,Q.jsx)(`button`,{type:`button`,onClick:()=>te(e=>({...e,[n]:w+60})),className:`btn btn-ghost btn-sm models-show-more`,children:A(`models.showMore`,{n:E})})]})]},n)},si=or?br.filter(e=>e.provider===or):br,ci=(e,t=!1)=>{let n={pickerOrder:e.pickerOrder,pickerOrderMode:e.pickerOrderMode,pickerAvailable:[]};Bt(Y,n),La(Y,n),t&&oe(`custom`),fe.refresh();let r=e.catalogRefresh,i=typeof r==`object`&&!!r&&`status`in r&&r.status===`committed`&&`degraded`in r&&r.degraded===!1;Ve(i,A(i?`models.pickerOrder.saved`:`models.pickerOrder.pending`)),p()},li=async()=>{if(ue.current||!pe||fe.state.showError||me===`custom`)return;let t=de.current,n=me,r=pe.pickerAvailable,i=T(15e3);ue.current=i,le(!0);let a=()=>de.current===t&&ue.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 fn(n,A(`models.pickerOrder.usageFailed`));if(!o())return;if(r?.usageIncomplete===!0)throw Error(A(`models.pickerOrder.usageIncomplete`));if(!wg(r?.models))throw Error(A(`models.pickerOrder.usageFailed`));t=r.models}if(!o())return;let a=Og(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 fn(s,A(`models.saveFailed`));if(!Sg(c)||!(`ok`in c)||c.ok!==!0)throw Error(A(`models.saveFailed`));if(!o())return;ci({pickerOrder:c.pickerOrder,pickerOrderMode:c.pickerOrderMode,catalogRefresh:`catalogRefresh`in c?c.catalogRefresh:void 0}),oe(null)}catch(e){a()&&Ve(!1,e instanceof Error?e.message:A(`models.networkError`))}finally{i.clear(),a()&&(ue.current=null,le(!1))}},ui=(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`models-control-top-row`,children:[tt&&(0,Q.jsxs)(`div`,{className:`models-shadow-row row muted text-control`,children:[(0,Q.jsx)(`span`,{className:`models-shadow-label`,children:A(`models.newPolicyGlobal`)}),(0,Q.jsx)(nn,{on:tt.policy===`off`,onClick:()=>void Wr(tt.policy===`off`?`on`:`off`),label:A(`models.newPolicyGlobal`)})]}),(0,Q.jsxs)(`div`,{className:`row`,children:[(0,Q.jsx)(nn,{on:rt.defaults.global,onClick:()=>void Yt(!rt.defaults.global),label:A(`models.useDefaultAliasesGlobal`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>ot(e=>!e),children:A(`models.aliases`)})]}),(0,Q.jsxs)(`div`,{className:`models-shadow-row row muted text-control`,"aria-busy":!er||void 0,children:[(0,Q.jsxs)(`span`,{className:`models-shadow-label`,children:[A(`models.shadowCallIntercept`),` `,(0,Q.jsx)(sn,{content:A(`models.shadowCallInterceptHint`,{models:gn(er?.sourceModels)}),side:`top`,maxWidth:320,children:(0,Q.jsx)(`span`,{style:{cursor:`help`},"aria-label":A(`models.shadowCallInterceptHint`,{models:gn(er?.sourceModels)}),children:`ⓘ`})})]}),(0,Q.jsx)(`code`,{className:`text-caption models-shadow-warning`,style:{opacity:.6},children:A(`models.shadowCallOriginal`,{models:_n(er?.sourceModels)})}),(0,Q.jsx)(nn,{on:er?.enabled??!1,onClick:()=>void zr({enabled:!er?.enabled}),disabled:!er||rr,label:A(`models.shadowCallIntercept`)}),(0,Q.jsx)(`div`,{className:`models-shadow-model-slot`,children:(0,Q.jsx)(an,{value:er?.model??``,options:lr,onChange:e=>{tr(t=>t&&{...t,model:e}),zr({model:e})},disabled:!er||rr||!er.enabled,label:A(`models.shadowCallIntercept`)})})]}),(lt||Ze)&&(0,Q.jsxs)(`div`,{className:`models-v2-mode-row row`,children:[(0,Q.jsx)(`span`,{className:`muted text-control`,children:A(`models.v2Label`)}),(0,Q.jsx)(`div`,{className:`segmented models-segmented`,role:`radiogroup`,"aria-label":A(`models.v2Label`),children:[`v1`,`default`,`v2`].map(e=>(0,Q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":(Ze?.multiAgentMode??`default`)===e,className:`btn btn-sm${(Ze?.multiAgentMode??`default`)===e?` btn-primary`:` btn-ghost`}`,style:{background:(Ze?.multiAgentMode??`default`)===e?void 0:`transparent`,color:(Ze?.multiAgentMode??`default`)===e?void 0:`var(--muted)`},disabled:!Ze||dt,onClick:()=>void Vr(e),children:A(`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:!Ze,onClick:()=>xt(!0),"aria-label":A(`models.v2Label`),"aria-haspopup":`dialog`,children:(0,Q.jsx)(xe,{width:14,height:14,"aria-hidden":`true`})})]}),Ze&&Ze.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:A(`models.keepNativeOnV1`)}),(0,Q.jsx)(nn,{on:Ze.keepNativeChatGptOnV1===!0,onClick:()=>void Kr(!Ze.keepNativeChatGptOnV1),disabled:dt,label:A(`models.keepNativeOnV1`)}),(0,Q.jsx)(sn,{content:A(`models.keepNativeOnV1Hint`),side:`top`,maxWidth:360,children:(0,Q.jsx)(`span`,{className:`models-v2-keep-native-info`,"aria-label":A(`models.keepNativeOnV1Hint`),children:(0,Q.jsx)(xe,{width:13,height:13,"aria-hidden":`true`})})})]})}),St&&(0,Q.jsx)(ir,{reason:`selection`,mode:St,docsUrl:nr(Ze?.multiAgentSurfaceAdvisory)?.docsUrl??`https://opencodex.me/guides/subagent-v1-default/`,busy:dt,onContinue:()=>{let e=St;Ct(null),Br({multiAgentMode:e,multiAgentSurfaceAdvisoryAcknowledged:!0})},onChooseV1:()=>{Ct(null),Ze?.multiAgentMode!==`v1`&&Br({multiAgentMode:`v1`,multiAgentSurfaceAdvisoryAcknowledged:!0})},onDismiss:()=>Ct(null)})]}),Ze&&(Ze.enabled||Ze.agentsMaxThreadsConflict||pt)&&(0,Q.jsxs)(`div`,{className:`models-v2-detail-row row`,children:[Ze.enabled&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`muted text-control`,children:A(`models.v2ThreadsLabel`)}),(0,Q.jsx)(an,{value:vt?`custom`:Ze.maxConcurrentThreadsPerSession!==null&&Ze.maxConcurrentThreadsPerSession!==void 0?_c.has(Ze.maxConcurrentThreadsPerSession)?String(Ze.maxConcurrentThreadsPerSession):`custom`:``,options:[...Ze.maxConcurrentThreadsPerSession===null||Ze.maxConcurrentThreadsPerSession===void 0?[{value:``,label:A(`models.v2ThreadsDefault`)}]:[],...Ze.maxConcurrentThreadsPerSession!==null&&Ze.maxConcurrentThreadsPerSession!==void 0&&!_c.has(Ze.maxConcurrentThreadsPerSession)&&!vt?[{value:`custom`,label:String(Ze.maxConcurrentThreadsPerSession)}]:[],...gc.map(e=>({value:String(e),label:String(e)})),{value:`custom`,label:A(`models.custom`)}],onChange:e=>Jr(e),disabled:dt,label:A(`models.v2ThreadsLabel`)}),vt&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`input`,{className:`input`,style:{width:100},inputMode:`numeric`,value:gt,onChange:e=>_t(e.target.value),onKeyDown:e=>{e.key===`Enter`&&qr(Number(gt.replace(/[_,\s]/g,``)))},disabled:dt,"aria-label":A(`models.v2ThreadsLabel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:dt,onClick:()=>{qr(Number(gt.replace(/[_,\s]/g,``)))},children:A(`models.v2ThreadsApply`)})]})]}),Ze.enabled&&Ze.agentsMaxThreadsConflict&&(0,Q.jsx)(`span`,{className:`mono text-label`,style:{color:`var(--err, #e5484d)`},children:A(`models.v2Conflict`)}),pt&&(0,Q.jsx)(`span`,{className:`muted text-label`,children:pt})]}),(0,Q.jsxs)(`div`,{className:`row models-cap-row`,children:[(0,Q.jsx)(`span`,{className:`muted text-control`,children:A(`models.contextCapLabel`)}),(0,Q.jsx)(an,{value:ve?hc:String(J),options:[...!fc.has(J)&&!ve?[{value:String(J),label:yc(J)}]:[],...dc.map(e=>({value:String(e),label:yc(e)})),{value:hc,label:A(`models.custom`)}],onChange:e=>Ir(e),disabled:He,label:A(`models.contextCapLabel`)}),ve&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`input`,{className:`input`,style:{width:160},inputMode:`numeric`,placeholder:A(`models.customPlaceholder`),value:he,onChange:e=>ge(e.target.value),onKeyDown:e=>{e.key===`Enter`&&Lr()},disabled:He,"aria-label":A(`models.customPlaceholder`)}),(0,Q.jsx)(`button`,{type:`button`,onClick:Lr,disabled:He,className:`btn btn-ghost btn-sm`,children:A(`models.customApply`)})]}),(0,Q.jsx)(nn,{on:Mr,onClick:Rr,disabled:He,label:A(`models.setAll`)}),(0,Q.jsx)(CS,{text:A(`models.setAllHint`,{value:yc(J)})})]}),(0,Q.jsxs)(`div`,{className:`row models-cap-row`,"aria-busy":ce||fe.state.refreshing,children:[(0,Q.jsx)(`span`,{className:`muted text-control`,children:A(`models.pickerOrder.label`)}),(0,Q.jsx)(an,{value:me,options:[{value:`default`,label:A(`models.pickerOrder.default`)},{value:`alphabetical`,label:A(`models.pickerOrder.alphabetical`)},{value:`provider`,label:A(`models.pickerOrder.provider`)},{value:`most-used`,label:A(`models.pickerOrder.mostUsed`)},{value:`custom`,label:A(`models.pickerOrder.custom`)}],onChange:e=>oe(e),disabled:ce||!pe||fe.state.showError,label:A(`models.pickerOrder.label`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void li(),disabled:ce||!pe||fe.state.showError||me===`custom`||me!=="default"&&pe.pickerAvailable.length===0,children:A(ce?`models.pickerOrder.applying`:`models.pickerOrder.apply`)}),fe.state.showError&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{role:`alert`,children:A(`models.pickerOrder.loadFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>fe.refresh(),children:A(`models.pickerOrder.retry`)})]}),(0,Q.jsx)(CS,{text:A(`models.pickerOrder.hint`)})]}),(0,Q.jsx)(Vg,{showOrderEditor:me===`custom`,apiBase:e,active:S,identities:N,onBusyChange:le,onAccepted:e=>ci(e,!0),onSaved:()=>mr.refresh()}),at&&(0,Q.jsxs)(`div`,{className:`card models-aliases-card`,"aria-label":A(`models.aliasesTable`),children:[(0,Q.jsx)(`div`,{className:`row group-head`,children:(0,Q.jsx)(`strong`,{children:A(`models.aliases`)})}),Object.entries(rt.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`?A(`models.aliasAuto`):A(`models.aliasUser`)}),n.stale&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:A(`models.aliasStale`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":A(`models.editModelAlias`),onClick:()=>void Jt(e,t),children:(0,Q.jsx)(L,{style:{width:13,height:13}})})]},`${e}/${t}`)))]})]}),di=N.filter(e=>e.custom).length,fi=(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:()=>Ar(!0),disabled:He,children:[(0,Q.jsx)(Ue,{width:12,height:12,"aria-hidden":`true`}),` `,A(`models.collapseAll`)]}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm text-caption`,onClick:()=>Ar(!1),disabled:He,children:[(0,Q.jsx)(Ue,{width:12,height:12,"aria-hidden":`true`,style:{transform:`rotate(90deg)`}}),` `,A(`models.expandAll`)]}),(0,Q.jsx)(CS,{text:A(`models.orderHint`)}),(0,Q.jsx)(SS,{count:di,label:A(`models.customSummary`,{count:di})})]}),pi=(0,Q.jsx)(Q.Fragment,{children:br.length===0&&(0,Q.jsx)(on,{icon:(0,Q.jsx)(Ne,{}),title:A(`models.noRouted`),children:A(`models.noRoutedHint`)})}),mi=(0,Q.jsxs)(Q.Fragment,{children:[bt&&(0,Q.jsx)(`div`,{className:`modal-overlay`,role:`dialog`,"aria-modal":`true`,"aria-label":A(`models.v2Label`),onClick:()=>xt(!1),onKeyDown:e=>{e.key===`Escape`&&xt(!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:A(`models.v2Label`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>xt(!1),"aria-label":A(`common.close`),children:`×`})]}),(0,Q.jsx)(`div`,{className:`modal-desc leading-relaxed`,style:{whiteSpace:`pre-line`},children:A(`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:A(`models.v2DocsLink`)})}),(0,Q.jsx)(`div`,{className:`modal-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>xt(!1),children:A(`common.ok`)})})]})}),An&&(0,Q.jsx)(`div`,{className:`modal-overlay`,role:`dialog`,"aria-modal":`true`,"aria-label":A(`models.contextSettings`),onClick:()=>{Kn||jn(null)},onKeyDown:e=>{e.key===`Escape`&&!Kn&&jn(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:A(`models.contextSettingsTitle`,{provider:_e(An,A)})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>jn(null),disabled:Kn,"aria-label":A(`common.close`),children:`×`})]}),Yn&&(0,Q.jsx)($,{tone:`err`,children:Yn}),(0,Q.jsx)(`p`,{className:`modal-desc leading-relaxed`,children:A(`models.contextHint`)}),(0,Q.jsxs)(`div`,{className:`models-context-fields`,children:[(0,Q.jsxs)(`label`,{className:`text-label models-field`,children:[A(`models.contextDefault`),(0,Q.jsx)(`input`,{className:`input`,inputMode:`numeric`,value:In,onChange:e=>{Ln(e.target.value),Gn(!0)},disabled:Kn,placeholder:A(`models.contextAutomatic`),autoFocus:!0})]}),Mn.length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`text-label models-field`,children:[A(`models.contextModel`),(0,Q.jsx)(an,{value:Pn,options:Mn.map(e=>({value:e,label:e})),onChange:Cr,disabled:Kn,label:A(`models.contextModel`)})]}),(0,Q.jsxs)(`label`,{className:`text-label models-field`,children:[A(`models.contextModelOverride`),(0,Q.jsx)(`input`,{className:`input`,inputMode:`numeric`,value:T_(Rn,Pn)??``,onChange:e=>{zn(t=>({...t,[Pn]:e.target.value})),Un(e=>new Set(e).add(Pn))},disabled:Kn,placeholder:A(`models.contextAutomatic`)})]})]})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>jn(null),disabled:Kn,children:A(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>void wr(),disabled:Kn,children:A(Kn?`models.customSaving`:`models.customApply`)})]})]})}),wt&&(0,Q.jsx)(`div`,{className:`modal-overlay`,role:`dialog`,"aria-modal":`true`,"aria-label":A(`models.customAdd`),onClick:()=>{En||Tt(!1)},onKeyDown:e=>{e.key===`Escape`&&!En&&Tt(!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:A(Xt===`add`?`models.customAddTitle`:`models.customEditTitle`,{provider:_e(Qt,A)})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>Tt(!1),disabled:En,"aria-label":A(`common.close`),children:`×`})]}),On&&(0,Q.jsx)($,{tone:`err`,children:On}),(0,Q.jsxs)(`div`,{className:`models-field-stack`,children:[(0,Q.jsxs)(`label`,{className:`text-label models-field`,children:[A(`models.customFieldModelId`),(0,Q.jsx)(`input`,{className:`input`,value:rn,onChange:e=>cn(e.target.value),disabled:En,placeholder:A(`models.customFieldModelIdPlaceholder`),autoFocus:!0})]}),(0,Q.jsxs)(`label`,{className:`text-label models-field`,children:[A(`models.customFieldDisplayName`),(0,Q.jsx)(`input`,{className:`input`,value:ln,onChange:e=>un(e.target.value),disabled:En,placeholder:A(`models.customFieldDisplayNamePlaceholder`)})]}),(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)(an,{value:hn?`custom`:dn,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:A(`models.custom`)}],onChange:e=>{if(e===`custom`){vn(!0);return}vn(!1),mn(e)},disabled:En,label:A(`models.customFieldContext`)}),hn&&(0,Q.jsx)(`input`,{className:`input`,style:{width:120},inputMode:`numeric`,value:dn,onChange:e=>mn(e.target.value),disabled:En,placeholder:A(`models.customPlaceholder`),"aria-label":A(`models.customFieldContext`)})]})]}),(0,Q.jsxs)(`div`,{className:`text-label models-field`,children:[A(`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:yn.includes(e),onChange:t=>{bn(n=>t.target.checked?[...n,e]:n.filter(t=>t!==e))},disabled:En}),(0,Q.jsx)(`span`,{className:`text-control`,children:e})]},e))})]}),(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:xn,onChange:e=>{if(Sn(e.target.checked),e.target.checked&&!Tn.current){Tn.current=!0;let e=N.find(e=>e.provider===Qt&&e.id===rn),t=Array.isArray(e?.reasoningEfforts)?e.reasoningEfforts:void 0;wn(t??[...uc])}},disabled:En}),(0,Q.jsx)(`span`,{className:`text-control`,children:A(`models.customFieldReasoningOverride`)})]})}),xn&&(0,Q.jsx)(`div`,{className:`row models-field-row`,style:{flexWrap:`wrap`},children:uc.map(e=>(0,Q.jsxs)(`label`,{className:`row models-modality-option`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:Cn.includes(e),onChange:t=>{wn(n=>t.target.checked?[...n,e]:n.filter(t=>t!==e))},disabled:En}),(0,Q.jsx)(`span`,{className:`text-control`,children:A(`models.reasoningEffort.${e}`)})]},e))})]})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>Tt(!1),disabled:En,children:A(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:En||!rn.trim(),onClick:()=>{let e=rn.trim(),t=ln.trim(),n=TS(dn);if(n===void 0){kn(A(`models.contextInvalid`));return}if(Xt===`add`){let r=xn?Cn:void 0;$r(Qt,e,t||void 0,n??void 0,yn.length>0?yn:void 0,r)}else ei(en,{modelId:e,displayName:t,contextWindow:n,inputModalities:yn,reasoningEfforts:xn?Cn:null})},children:A(En?`models.customSaving`:Xt===`add`?`models.customAddBtn`:`models.customEditBtn`)})]})]})})]}),hi=(0,Q.jsxs)(`div`,{className:`models-workspace-shell`,children:[je&&(0,Q.jsxs)(`div`,{className:`action-toast notice ${Le?`notice-ok`:`notice-err`}`,role:`status`,"aria-live":`polite`,children:[Le?(0,Q.jsx)(Se,{}):(0,Q.jsx)(De,{}),(0,Q.jsx)(`span`,{children:je})]}),hr.showError&&(0,Q.jsx)($,{tone:`err`,children:A(`models.loadFail`)}),Pe.length>0&&(0,Q.jsx)(`div`,{className:`models-integration-warning`,children:(0,Q.jsxs)($,{tone:`warn`,children:[A(`models.integrationRefreshWarning`),(0,Q.jsx)(`ul`,{children:Pe.map(e=>(0,Q.jsxs)(`li`,{children:[e.client,e.profileId===void 0?``:`:${e.profileId}`,`: `,Bv(A,{clientId:e.client,message:e.reason===`integration_mutation_busy`?A(`integrations.error.busy`):e.reason,reason:e.refusalReason,snapshotPath:e.snapshotPath,residual:e.residual})]},`${e.client}:${e.profileId??`all`}`))})]})}),(0,Q.jsx)(xS,{title:A(`models.settingsPanel.title`),attentionLabel:A(`models.settingsPanel.attention`),warn:!!(Ze?.enabled&&Ze.agentsMaxThreadsConflict)||pt!==``||fe.state.showError,summary:bS(A,{multiAgentMode:Ze?.multiAgentMode,v2Threads:Ze?.maxConcurrentThreadsPerSession,keepNativeOnV1:Ze?.keepNativeChatGptOnV1===!0,shadowEnabled:er?.enabled===!0,shadowModel:er?.model,windowOn:Mr,windowValue:J,newModelsOff:tt?.policy===`off`,aliasesOn:rt.defaults.global,pickerMode:kg(pe?.pickerAvailable??[],pe?.pickerOrder??[],pe?.pickerOrderMode)}),children:ui}),(0,Q.jsxs)(`div`,{className:`models-workspace-root`,"aria-busy":Ye.pending||hr.refreshing||void 0,children:[(0,Q.jsxs)(`aside`,{className:`models-workspace-rail`,"aria-label":A(`nav.models`),children:[(0,Q.jsxs)(`div`,{className:`models-workspace-rail-header`,children:[(0,Q.jsx)(`span`,{className:`models-workspace-rail-title`,children:A(`models.workspace.providers`)}),(0,Q.jsx)(`span`,{className:`models-workspace-rail-count`,children:br.length})]}),(0,Q.jsxs)(`div`,{className:`models-workspace-rail-list`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`models-workspace-rail-row${or===null?` models-workspace-rail-row--selected`:``}`,onClick:()=>sr(null),"aria-current":or===null?`true`:void 0,children:[(0,Q.jsx)(`span`,{className:`models-workspace-rail-name`,children:A(`models.workspace.allProviders`)}),(0,Q.jsx)(`span`,{className:`models-workspace-rail-meta`,children:A(`models.active`,{active:Tr,total:N.length})})]}),br.map(e=>{let{provider:t,rows:n}=e,r=n.filter(e=>Xe(ai,t,e.id,e.native===!0,R.has(e.namespaced))).length;return(0,Q.jsxs)(`button`,{type:`button`,className:`models-workspace-rail-row${or===t?` models-workspace-rail-row--selected`:``}`,onClick:()=>sr(t),"aria-current":or===t?`true`:void 0,children:[(0,Q.jsx)(`span`,{className:`models-workspace-rail-name`,children:_e(t,A)}),(0,Q.jsx)(`span`,{className:`models-workspace-rail-meta`,children:A(`models.active`,{active:r,total:n.length})})]},t)})]})]}),(0,Q.jsxs)(`section`,{className:`models-workspace-main`,"aria-label":A(`models.workspace.mainAria`),children:[fi,(0,Q.jsx)(`div`,{className:`models-provider-list`,children:si.map(e=>oi(e))}),br.length===0&&pi]})]}),mi]});return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`page-head`,children:[(0,Q.jsx)(`h2`,{children:A(`nav.models`)}),(0,Q.jsx)(`div`,{className:`page-head-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb`,onClick:()=>{h()},disabled:m,"aria-label":A(m?`dash.codexRestarting`:`dash.codexRestart`),title:A(m?`dash.codexRestarting`:`dash.codexRestart`),children:(0,Q.jsx)(Fe,{})})})]}),(0,Q.jsx)(yg,{state:o,controller:{restarting:m,restart:h}}),(0,Q.jsx)(cS,{tab:g,onSelect:x,meta:Er}),(0,Q.jsx)(`p`,{className:`page-sub`,children:A(wS[g])}),g===`catalog`&&(0,Q.jsx)(mS,{connected:n,catalogSyncedAt:r}),(0,Q.jsx)(`div`,{className:`models-tab-panel`,role:`tabpanel`,id:oS(`catalog`),"aria-labelledby":aS(`catalog`),hidden:g!==`catalog`,children:(0,Q.jsx)(qv,{pageName:A(`models.tab.catalog`),title:A(`errorBoundary.title`),message:A(`errorBoundary.message`),detailsLabel:A(`errorBoundary.details`),reloadLabel:A(`errorBoundary.reload`),children:ii?(0,Q.jsx)(Gv,{label:A(`models.loading`),rows:5}):ri===null?hi:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)($,{tone:`err`,children:ri}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>mr.refresh(),children:A(`common.retry`)})]})})}),(0,Q.jsx)(`div`,{className:`models-tab-panel models-tab-panel--fill`,role:`tabpanel`,id:oS(`combos`),"aria-labelledby":aS(`combos`),hidden:g!==`combos`,children:v.has(`combos`)&&(0,Q.jsx)(qv,{pageName:A(`models.tab.combos`),title:A(`errorBoundary.title`),message:A(`errorBoundary.message`),detailsLabel:A(`errorBoundary.details`),reloadLabel:A(`errorBoundary.reload`),children:(0,Q.jsx)(Vy,{apiBase:e,active:g===`combos`,onCountChange:w})})}),(0,Q.jsx)(`div`,{className:`models-tab-panel`,role:`tabpanel`,id:oS(`routing`),"aria-labelledby":aS(`routing`),hidden:g!==`routing`,children:v.has(`routing`)&&(0,Q.jsx)(qv,{pageName:A(`models.tab.routing`),title:A(`errorBoundary.title`),message:A(`errorBoundary.message`),detailsLabel:A(`errorBoundary.details`),reloadLabel:A(`errorBoundary.reload`),children:(0,Q.jsx)(Eb,{apiBase:e,active:g===`routing`,onCountChange:D})})}),(0,Q.jsx)(`div`,{className:`models-tab-panel`,role:`tabpanel`,id:oS(`compatibility`),"aria-labelledby":aS(`compatibility`),hidden:g!==`compatibility`,children:v.has(`compatibility`)&&(0,Q.jsx)(qv,{pageName:A(`models.tab.compatibility`),title:A(`errorBoundary.title`),message:A(`errorBoundary.message`),detailsLabel:A(`errorBoundary.details`),reloadLabel:A(`errorBoundary.reload`),children:(0,Q.jsx)(eS,{apiBase:e,active:g===`compatibility`,onCountChange:k})})}),Et&&(0,Q.jsx)(Ug,{model:Et,saving:Nt,requestError:Ft,currentNamePending:zt,mutationOutcomeUnknown:Lt?.confirmed===!1,onRetry:Lt?()=>void yr(Lt.value):void 0,onEdit:()=>Rt(null),onSave:e=>void yr(e),onReset:()=>void yr(null),onClose:vr}),Ot&&(0,Q.jsx)(Zg,{model:Ot,apiBase:e,onRefresh:e=>gr(!0,e),onClose:()=>{let e=At.current;kt(null),window.setTimeout(()=>{e?.isConnected&&e.focus()},0)}},`${e}/${Ot.namespaced}`),jt&&(0,Q.jsx)(a_,{row:jt,apiBase:e,onRefresh:e=>gr(!0,e),onFeedback:Ve,onClose:()=>Mt(null)},`${e}/${jt.namespaced}`)]})}function DS(e,t){let n=new Set(t);return[...new Set([...e.filter(e=>n.has(e)),...t])]}function OS({apiBase:e,roster:t}){let n=i(),[r,a]=(0,Z.useState)(null),[o,s]=(0,Z.useState)(``),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(``),[f,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(0),[g,_]=(0,Z.useState)(null),v=c||g?.retry!==m||g.t!==n,y=(0,Z.useRef)(!1),b=(0,Z.useRef)(!1);(0,Z.useEffect)(()=>{b.current=!0,y.current=!0;let t=new AbortController,r=!1;return(async()=>{try{let i=await fn(await fetch(`${e}/api/subagent-models`,{signal:t.signal}),n(`sub.loadFail`));if(r)return;let o={force:i?.force??null,forceAvailable:i?.forceAvailable??[],forceStatus:i?.forceStatus??null};a(o),s(o.force??``),d(``)}catch{r||d(n(`sub.loadFail`))}finally{r||(y.current=!1,_({retry:m,t:n}))}})(),()=>{r=!0,b.current=!1,t.abort()}},[e,m,n]);async function x(t){if(!(!r||v||y.current)){y.current=!0,l(!0),d(``),p(!1);try{let r=await fn(await fetch(`${e}/api/subagent-models`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({force:t})}),n(`sub.saveFailed`));if(!b.current)return;a(e=>e&&{...e,force:r?.force??null,forceStatus:null}),s(r?.force??o),p(!0),h(e=>e+1)}catch{b.current&&d(n(`sub.saveFailed`))}finally{y.current=!1,b.current&&l(!1)}}}let S=DS(t,r?.forceAvailable??[]),C=r?.force??o,w=S.includes(C),T=r?.forceStatus;return(0,Q.jsxs)(`section`,{className:`panel`,children:[(0,Q.jsx)(`h3`,{children:n(`sub.forceTitle`)}),(0,Q.jsx)(nn,{on:!!r?.force,disabled:!r||v||!r.force&&!w,label:n(`sub.forceTitle`),onClick:()=>{x(r?.force?null:o)}}),(0,Q.jsxs)(`label`,{className:`field-label`,children:[n(`sub.forceModel`),(0,Q.jsxs)(`select`,{className:`input`,value:C,disabled:!r||v,onChange:e=>{let t=e.target.value;r?.force?x(t):s(t)},children:[(0,Q.jsx)(`option`,{value:``,disabled:!0,children:n(`sub.forceChoose`)}),C&&!w&&(0,Q.jsx)(`option`,{value:C,disabled:!0,children:C}),S.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&&(!w||T?.targetValid===!1)&&(0,Q.jsx)($,{tone:`warn`,children:n(`sub.forceInvalid`)}),r?.force&&T?.support===`unsupported`&&(0,Q.jsx)($,{tone:`warn`,children:n(`sub.forceOld`)}),r?.force&&(!T||T.support===`unknown`)&&(0,Q.jsx)($,{tone:`warn`,children:n(`sub.forceUnknown`)}),r?.force&&T?.settingsOverride&&(0,Q.jsx)($,{tone:`warn`,children:n(`sub.forceOverride`)}),r?.force&&T?.settingsReadable===!1&&(0,Q.jsx)($,{tone:`warn`,children:n(`sub.forceSettingsUnknown`)}),f&&(0,Q.jsx)($,{tone:`ok`,children:n(`sub.forceSaved`)}),u&&(0,Q.jsxs)($,{tone:`err`,children:[u,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:v,onClick:()=>h(e=>e+1),children:n(`common.retry`)})]})]})}var kS=`section`;function AS(e,t){return[e,kS,t].join(`-`)}function jS(e){return[e,kS,``].join(`-`)}var MS=1200;function NS({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(AS(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(AS(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(AS(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(jS(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(AS(e,t));n&&(c.current=t,l.current!==null&&clearTimeout(l.current),l.current=setTimeout(d,MS),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":AS(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 PS=1500,FS={fast:`integrations.lazycodexRoles.auto.tierFast`,standard:`integrations.lazycodexRoles.auto.tierStandard`,frontier:`integrations.lazycodexRoles.auto.tierFrontier`},IS={glance:`integrations.lazycodexRoles.auto.effortGlance`,measured:`integrations.lazycodexRoles.auto.effortMeasured`,thorough:`integrations.lazycodexRoles.auto.effortThorough`,exhaustive:`integrations.lazycodexRoles.auto.effortExhaustive`};function LS({apiBase:e,model:t,effort:n,available:r,saving:a,onAccept:o}){let s=i(),[c,l]=(0,Z.useState)(``),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(null),[m,h]=(0,Z.useState)(null),g=e=>{let t=r.find(t=>t.namespaced===e);return t?ve(`${t.provider}/${t.model}`,s):e},_=async()=>{d(!0),p(null);try{let t=await fetch(`${e}/api/injection-model/suggest`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({work:c.trim()})});h(await fn(t,s(`sub.suggest.failed`))??null)}catch(e){h(null),p(e instanceof Error&&e.message?e.message:s(`sub.suggest.failed`))}finally{d(!1)}},v=m?.proposal,y=!!v?.proposedModel&&v.proposedModel===t&&(v.proposedEffort??``)===n,b=u?s(`sub.suggest.running`):m?s(`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:b}),(0,Q.jsx)(`label`,{className:`swi-suggest-label`,htmlFor:`swi-suggest-work`,children:s(`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:PS,value:c,placeholder:s(`sub.suggest.placeholder`),onChange:e=>l(e.target.value),disabled:u}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:u||a||c.trim()===``,onClick:()=>void _(),children:s(u?`sub.suggest.running`:`sub.suggest.submit`)})]}),f&&(0,Q.jsx)($,{tone:`err`,children:f}),m&&v&&(0,Q.jsxs)(`section`,{className:`swi-suggest-result`,"aria-label":s(`sub.suggest.title`),children:[(0,Q.jsxs)(`div`,{className:`swi-suggest-head`,children:[v.tier&&v.effortIntent&&(0,Q.jsx)(`span`,{className:`font-semibold`,children:s(`integrations.lazycodexRoles.auto.tierEffort`,{tier:s(FS[v.tier]),effort:s(IS[v.effortIntent])})}),(0,Q.jsx)(`span`,{className:`muted setting-hint`,children:s(`integrations.lazycodexRoles.auto.sizedWith`,{model:m.sizingModel})})]}),m.sizingError&&(0,Q.jsx)($,{tone:`warn`,children:s(`integrations.lazycodexRoles.auto.sizingFailed`,{error:m.sizingError})}),v.status===`unsized`?(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:s(`integrations.lazycodexRoles.auto.unsized`,{reason:v.reason??``})}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`swi-suggest-change`,children:[(0,Q.jsxs)(`span`,{children:[v.model?g(v.model):s(`dash.injectionNone`),v.effort?` · ${v.effort}`:``]}),(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:`→`}),v.proposedModel?(0,Q.jsxs)(`strong`,{children:[g(v.proposedModel),v.proposedEffort?` · ${v.proposedEffort}`:``]}):(0,Q.jsx)(`span`,{className:`muted`,children:s(`integrations.lazycodexRoles.auto.unassigned`,{reason:v.reason??``})})]}),v.rationale&&(0,Q.jsx)(`p`,{children:v.rationale}),v.moveUpIf&&(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:s(`integrations.lazycodexRoles.auto.moveUp`,{text:v.moveUpIf})}),v.moveDownIf&&(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:s(`integrations.lazycodexRoles.auto.moveDown`,{text:v.moveDownIf})})]}),(0,Q.jsxs)(`div`,{className:`swi-suggest-actions`,children:[y?(0,Q.jsx)(`span`,{className:`swi-suggest-done`,children:s(`integrations.lazycodexRoles.auto.alreadySet`)}):v.status===`proposed`&&v.proposedModel&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:a,onClick:()=>o({model:v.proposedModel,effort:v.proposedEffort??null}),children:s(`sub.suggest.accept`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:a,onClick:()=>h(null),children:s(`integrations.lazycodexRoles.auto.discard`)})]})]})]})}function RS({apiBase:e,model:t,effort:n,efforts:r,available:a,guidanceEnabled:o,syncCodexDefaults:s,saving:c,onSave:l,ultraMode:u,ultraSaving:d,onUltraModeSave:f,ultraLoadFailed:p,onUltraModeRetry:m,fallback:h,fallbackPollMs:g,fallbackBusy:_,availableModels:v,onFallbackChange:y,onFallbackPollMsChange:b,onFallbackSave:x}){let S=i(),C=(u.hintText??``).trim().length>0,w=a.some(e=>e.namespaced===t&&(e.provider!==`openai`||e.namespaced!==e.model)),T=u.enabled||u.multiAgentMode!==`v1`&&!(u.multiAgentMode===`v2`&&u.keepNativeChatGptOnV1),E=!p&&u.loaded===!0&&w&&T,D=new Set(v),O=new Set(h),[k,A]=(0,Z.useState)(()=>({pollMs:g,text:String(g)}));Object.is(k.pollMs,g)||A({pollMs:g,text:Number.isFinite(g)?String(g):``});let j=(0,Z.useRef)(null),[M,P]=(0,Z.useState)(!1),[F,I]=(0,Z.useState)(()=>({models:h,rows:h.map((e,t)=>({model:e,id:t})),nextId:h.length})),L=F.rows;if(F.models!==h){let e=[...F.rows],t=F.nextId;L=h.map(n=>{let r=e.findIndex(e=>e.model===n);return r>=0?e.splice(r,1)[0]:{model:n,id:t++}}),I({models:h,rows:L,nextId:t})}let R=(0,Z.useRef)(null);(0,Z.useLayoutEffect)(()=>{let e=R.current;if(!e)return;R.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()},[h]);let z=Number.isInteger(g)&&g>=5e3&&g<=6e5,B=(e,t)=>{let n=[...h],r=e+t;if(_||r<0||r>=n.length)return;[n[e],n[r]]=[n[r],n[e]];let i=[...L];[i[e],i[r]]=[i[r],i[e]],I({...F,models:n,rows:i}),R.current={row:r,action:t===-1?`up`:`down`},y(n)};return(0,Q.jsxs)(`div`,{className:`swi-delegation`,children:[p&&(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:S(`sub.ultraMode`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:S(`sub.ultraModeLoadFail`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:m,children:S(`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:S(`sub.delegation.model`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:S(`sub.delegation.modelHint`)})]}),(0,Q.jsxs)(`div`,{className:`swi-delegation-controls`,children:[(0,Q.jsx)(an,{value:t,options:[{value:``,label:S(`dash.injectionNone`)},...a.map(e=>({value:e.namespaced,label:ve(`${e.provider}/${e.model}`,S)}))],onChange:e=>l({model:e||null,effort:n||null}),disabled:c,label:S(`dash.injectionLabel`),align:`right`}),t&&r.length>0&&(0,Q.jsx)(an,{value:n,options:[{value:``,label:S(`dash.injectionEffortNone`)},...r.map(e=>({value:e,label:e}))],onChange:e=>l({model:t||null,effort:e||null}),disabled:c,label:S(`dash.injectionEffortLabel`),align:`right`}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-expanded":M,onClick:()=>P(e=>!e),children:S(`sub.suggest.button`)})]})]}),M&&(0,Q.jsx)(`div`,{className:`swi-delegation-row`,children:(0,Q.jsx)(LS,{apiBase:e,model:t,effort:n,available:a,saving:c,onAccept:l})}),E&&(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:S(`sub.v2Compatibility.title`)}),(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:S(`sub.v2Compatibility.risk`)}),(0,Q.jsx)(`p`,{className:`muted setting-hint`,children:S(`sub.v2Compatibility.recoveryUnknown`)}),(0,Q.jsx)(`a`,{href:`https://github.com/lidge-jun/opencodex/issues/92`,target:`_blank`,rel:`noreferrer`,children:S(`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:S(`sub.fallbackLabel`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:S(`sub.fallbackHint`)})]}),(0,Q.jsxs)(`div`,{className:`swi-fallback-controls`,ref:j,children:[h.map((e,t)=>(0,Q.jsxs)(`div`,{className:`swi-fallback-row`,children:[(0,Q.jsxs)(`span`,{className:`swi-fallback-model`,children:[t+1,`. `,e,!D.has(e)&&(0,Q.jsx)(`span`,{className:`muted setting-hint`,children:S(`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:()=>B(t,-1),disabled:_||t===0,"aria-label":S(`sub.moveUp`,{m:e}),children:(0,Q.jsx)(He,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon btn-sm`,"data-action":`down`,onClick:()=>B(t,1),disabled:_||t===h.length-1,"aria-label":S(`sub.moveDown`,{m:e}),children:(0,Q.jsx)(Ye,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon btn-sm`,"data-action":`remove`,onClick:()=>{let e=h.filter((e,n)=>n!==t);I({...F,models:e,rows:L.filter((e,n)=>n!==t)}),R.current={row:Math.max(0,Math.min(t,h.length-2)),action:`remove`},y(e)},disabled:_,"aria-label":S(`sub.removeAria`,{m:e}),children:(0,Q.jsx)(N,{})})]})]},L[t].id)),(0,Q.jsx)(an,{value:``,label:S(`sub.fallbackAdd`),options:[{value:``,label:S(`sub.fallbackAdd`)},...v.filter(e=>!O.has(e)).map(e=>({value:e,label:e}))],onChange:e=>{e&&!O.has(e)&&y([...h,e])},disabled:_}),(0,Q.jsxs)(`label`,{className:`setting-hint`,children:[S(`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}),b(r)},disabled:_,"aria-invalid":!z}),` ms`]}),!z&&(0,Q.jsx)(`div`,{className:`setting-hint`,role:`alert`,children:S(`sub.fallbackPollInvalid`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:x,disabled:_||!z,children:S(`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:S(`dash.syncCodexSubagentDefaults`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:S(`dash.syncCodexSubagentDefaultsHint`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`switch ${s?`on`:``}`,onClick:()=>l({syncCodexSubagentDefaults:!s}),disabled:c||!t,"aria-label":S(`dash.syncCodexSubagentDefaults`),"aria-pressed":s,children:(0,Q.jsx)(`span`,{className:`knob`})})]}),(0,Q.jsxs)(`details`,{className:`swi-advanced`,children:[(0,Q.jsx)(`summary`,{className:`muted text-label`,children:S(`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:[S(`models.v2Label`),(0,Q.jsxs)(sn,{content:S(`models.v2Help`),side:`top`,maxWidth:380,children:[(0,Q.jsx)(xe,{width:13,height:13,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:S(`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:S(`models.v2DocsLink`)})})]}),(0,Q.jsx)(`div`,{className:`swi-delegation-controls`,children:(0,Q.jsx)(`div`,{className:`segmented models-segmented`,role:`radiogroup`,"aria-label":S(`models.v2Label`),children:[`v1`,`default`,`v2`].map(e=>(0,Q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":u.multiAgentMode===e,className:`btn btn-sm${u.multiAgentMode===e?` btn-primary`:` btn-ghost`}`,style:{background:u.multiAgentMode===e?void 0:`transparent`,color:u.multiAgentMode===e?void 0:`var(--muted)`},disabled:d||p,onClick:()=>{u.multiAgentMode!==e&&f({multiAgentMode:e})},children:S(`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:S(`dash.multiAgentGuidance`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:S(`dash.multiAgentGuidanceHint`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`switch ${o?`on`:``}`,onClick:()=>l({multiAgentGuidanceEnabled:!o}),disabled:c,"aria-label":S(`dash.multiAgentGuidance`),"aria-pressed":o,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:S(`sub.ultraMode`)}),(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:S(`sub.ultraModeHint`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`switch ${C?`on`:``}`,onClick:()=>{C?f({multiAgentModeHintText:null}):u.recommendation&&f({multiAgentModeHintText:u.recommendation.text})},disabled:c||d||!C&&(!u.multiAgentV2Enabled||!u.recommendation),"aria-label":S(`sub.ultraMode`),"aria-pressed":C,children:(0,Q.jsx)(`span`,{className:`knob`})}),!u.multiAgentV2Enabled&&(0,Q.jsx)(`div`,{className:`muted setting-hint`,children:S(`sub.ultraModeV2Required`)})]}),C&&(0,Q.jsx)(`div`,{className:`swi-delegation-row swi-ultra-mode-editor`,children:(0,Q.jsx)(zS,{initialHint:u.hintText??``,disabled:c||d,onSave:f,preset:u.recommendation?.text??null,labels:{text:S(`sub.ultraModeText`),preset:S(`sub.ultraModePreset`),save:S(`common.save`)}},u.hintText)})]})]})}function zS({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 BS({available:e,fallbackAvailable:t,chosen:n,onToggle:r,onMove:a,fallback:o,fallbackPollMs:s,fallbackBusy:c,onFallbackChange:l,onFallbackPollMsChange:u,onFallbackSave:d,delegation:f}){let p=i(),[m,h]=(0,Z.useState)(``),g=(0,Z.useMemo)(()=>new Set(n),[n]),_=n.length>=5,v=(0,Z.useMemo)(()=>{let t=m.trim().toLowerCase();return e.filter(e=>!t||e.toLowerCase().includes(t))},[e,m]),y=(0,Z.useMemo)(()=>[{id:`featured`,label:p(`sub.featured`),meta:`${n.length}/5`},{id:`models`,label:p(`sub.models`),meta:String(v.length)},{id:`settings`,label:p(`sub.settings`)}],[p,n.length,v.length]);return(0,Q.jsxs)(`div`,{className:`subagents-workspace-shell`,children:[(0,Q.jsx)(NS,{scope:`subagents`,items:y,ariaLabel:p(`sub.sections`)}),(0,Q.jsxs)(`div`,{className:`subagents-workspace-root`,children:[(0,Q.jsxs)(`section`,{id:AS(`subagents`,`featured`),className:`subagents-workspace-section`,"aria-label":p(`sub.featured`),children:[(0,Q.jsxs)(`div`,{className:`swi-featured-head`,children:[(0,Q.jsx)(`h2`,{className:`swi-featured-title`,children:p(`sub.featured`)}),(0,Q.jsxs)(`span`,{className:`swi-featured-count`,children:[n.length,`/`,5]}),(0,Q.jsxs)(sn,{content:(0,Q.jsx)(C,{k:`sub.orderHint`,cmd:`spawn_agent`}),side:`bottom`,maxWidth:380,children:[(0,Q.jsx)(xe,{width:14,height:14,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:p(`sub.orderHintAria`)})]})]}),n.length===0?(0,Q.jsx)(`div`,{className:`swi-featured-empty`,children:p(`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:w_(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:()=>a(t,-1),disabled:t===0,"aria-label":p(`sub.moveUp`,{m:e}),children:(0,Q.jsx)(He,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon btn-sm`,onClick:()=>a(t,1),disabled:t===n.length-1,"aria-label":p(`sub.moveDown`,{m:e}),children:(0,Q.jsx)(Ye,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon btn-sm`,onClick:()=>r(e),"aria-label":p(`sub.removeAria`,{m:e}),style:{color:`var(--red)`},children:(0,Q.jsx)(N,{})})]})]},e))})]}),(0,Q.jsxs)(`section`,{id:AS(`subagents`,`models`),className:`subagents-workspace-section`,"aria-label":p(`sub.models`),children:[(0,Q.jsxs)(`div`,{className:`swi-featured-head`,children:[(0,Q.jsx)(`h2`,{className:`swi-featured-title`,children:p(`sub.models`)}),(0,Q.jsx)(`span`,{className:`swi-featured-count`,children:v.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:m,onChange:e=>h(e.target.value),placeholder:p(`sub.search`),"aria-label":p(`sub.search`)})}),(0,Q.jsx)(`div`,{className:`subagents-workspace-rail-list`,children:v.length===0?(0,Q.jsx)(`span`,{className:`subagents-workspace-rail-empty`,children:p(`sub.noModels`)}):v.map(e=>{let t=g.has(e),i=t?n.indexOf(e)+1:null,a=!t&&_;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)(Ke,{className:`swi-rail-icon`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`subagents-workspace-rail-name`,children:w_(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":p(t?`sub.workspace.removeFromFeatured`:`sub.workspace.addToFeatured`,{m:e}),title:t?p(`sub.workspace.removeFromFeatured`,{m:e}):_?p(`sub.workspace.featuredFull`):p(`sub.workspace.addToFeatured`,{m:e}),children:t?(0,Q.jsx)(Se,{style:{width:14,height:14}}):(0,Q.jsx)(Le,{style:{width:14,height:14}})})]},e)})})]})]}),(0,Q.jsxs)(`section`,{id:AS(`subagents`,`settings`),className:`subagents-workspace-section`,"aria-label":p(`sub.settings`),children:[(0,Q.jsx)(`div`,{className:`swi-featured-head`,children:(0,Q.jsx)(`h2`,{className:`swi-featured-title`,children:p(`sub.settings`)})}),(0,Q.jsx)(RS,{apiBase:f.apiBase,model:f.model,effort:f.effort,efforts:f.efforts,available:f.available,guidanceEnabled:f.guidanceEnabled,syncCodexDefaults:f.syncCodexDefaults,saving:f.saving,onSave:f.onSave,ultraMode:f.ultraMode,ultraSaving:f.ultraSaving,onUltraModeSave:f.onUltraModeSave,ultraLoadFailed:f.ultraLoadFailed,onUltraModeRetry:f.onUltraModeRetry,fallback:o,fallbackPollMs:s,fallbackBusy:c,availableModels:t??e,onFallbackChange:l,onFallbackPollMsChange:u,onFallbackSave:d})]})]})]})}function VS(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=so(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 Sn(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 Sn(n))}catch{}finally{i(!1)}}},[e,_,r])}}var HS={enabled:!1,hintText:null,recommendation:null,multiAgentV2Enabled:!1,multiAgentMode:`default`};function US(e){return Na(e)}function WS({apiBase:e}){let t=i(),n=`ocx.subagents.v1:${e}`,r=US(n),[a,o]=(0,Z.useState)(()=>r?.chosen??[]),[s,c]=(0,Z.useState)(()=>r?.fallback??[]),[l,u]=(0,Z.useState)(()=>r?.pollMs??6e4),[d,f]=(0,Z.useState)(!1),[p,m]=(0,Z.useState)(()=>Array.isArray(r?.fallback)&&Number.isInteger(r?.pollMs)),[h,g]=(0,Z.useState)(()=>r?.fallbackAvailable),[_,v]=(0,Z.useState)(``),[y,b]=(0,Z.useState)(!0),x=(0,Z.useRef)(null),S=(0,Z.useRef)({fallback:r?.fallback,pollMs:r?.pollMs,fallbackAvailable:r?.fallbackAvailable}),C=(0,Z.useRef)(0),w=(0,Z.useRef)(0),T=(0,Z.useRef)(!1),E=(0,Z.useRef)(r),[D,O]=(0,Z.useState)(``),[k,A]=(0,Z.useState)(!1),j=(0,Z.useRef)(!1),M=(0,Z.useRef)(null),N=(0,Z.useRef)(a),P=(0,Z.useCallback)(e=>{N.current=e,o(e)},[]),F=VS(e),[I,L]=(0,Z.useState)(null),R=I?.apiBase===e,z=R?I.mode:HS,[B,V]=(0,Z.useState)(!1),[H,U]=(0,Z.useState)(null),[ee,W]=(0,Z.useState)(!1),G=(0,Z.useRef)(0),te=(0,Z.useRef)(e);(0,Z.useEffect)(()=>{te.current=e,G.current++},[e]);let ne=(0,Z.useCallback)(async n=>{if(te.current!==e)return!1;let r=++G.current,i=await fn(await fetch(`${e}/api/v2`,{signal:n}),t(`sub.ultraModeLoadFail`));if(!i||n?.aborted||r!==G.current||te.current!==e)return!1;W(!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 ne(e.signal)})().catch(()=>{e.signal.aborted||(A(!1),W(!0),O(t(`sub.ultraModeLoadFail`)))}),()=>{e.abort()}},[ne,t]);let K=async n=>{if(B||!R||te.current!==e)return;let r=e;V(!0),O(``);try{if(await fn(await fetch(`${e}/api/v2`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)}),t(`sub.ultraModeSaveFail`)),te.current!==r||!await ne())return;A(!0),O(t(`sub.ultraModeSaved`))}catch(e){if(te.current!==r)return;A(!1),O(e instanceof Error&&e.message?e.message:t(`sub.networkError`))}finally{V(!1)}},re=(0,Z.useCallback)(async()=>{try{if(!await ne())return;A(!1),O(e=>e===t(`sub.ultraModeLoadFail`)?``:e)}catch{A(!1),W(!0),O(t(`sub.ultraModeLoadFail`))}},[ne,t]),q=(0,Z.useCallback)(async()=>{x.current?.abort();let r=new AbortController;x.current=r;let{signal:i}=r,a=C.current;try{let r=await fn(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!==C.current||T.current)return;let o={fallback:r.models,pollMs:r.pollMs,fallbackAvailable:r.available};S.current=o,c(o.fallback),u(o.pollMs),g(o.fallbackAvailable),m(!0),v(``),E.current&&(E.current={...E.current,...o},La(n,E.current))}catch(e){if(i.aborted||a!==C.current||T.current)return;m(!1),v(e instanceof Error&&!(e instanceof SyntaxError)?e.message:t(`sub.loadFail`))}finally{i.aborted||b(!1)}},[e,n,t]);(0,Z.useEffect)(()=>((async()=>{await q()})(),()=>{x.current?.abort()}),[q]);let J=(0,Z.useCallback)(async r=>{let i=w.current,a=await fn(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===w.current&&!j.current,l={...S.current,available:o,chosen:c?(a.chosen??[]).filter(e=>s.has(e)):E.current?.chosen??[]};if(r?.aborted)throw r.reason;return E.current=l,c&&P(l.chosen),La(n,l),l},[e,n,P,t]),ie=za(n,[e],J,{isEmpty:()=>!1,initialData:r??void 0}),{state:Y}=ie,X=ie.refresh,ae=Y.data??r,oe=ae?.available??[],se=async r=>{if(M.current=r,j.current)return;j.current=!0,O(``);let i=null,a=r;for(;M.current;){let r=M.current;M.current=null;try{a=(await fn(await fetch(`${e}/api/subagent-models`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({models:r})}),t(`sub.saveFailed`)))?.applied??r,E.current={...E.current,available:oe,chosen:a},La(n,E.current),i=null}catch(e){i=e}}if(w.current+=1,j.current=!1,i){P(E.current?.chosen??[]),A(!1),O(i instanceof Error&&i.message?i.message:t(`sub.networkError`));return}P(a),A(!0),O(t(`sub.saved`,{n:a.length,cmd:`ocx sync`}))},ce=e=>{w.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(!p||T.current||!Number.isInteger(l)||l<5e3||l>6e5)return;T.current=!0,C.current+=1;let r=e;f(!0),O(``);try{let i=await fn(await fetch(`${e}/api/subagent-model-fallback`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({models:s,pollMs:l})}),t(`sub.fallbackSaveFailed`));if(te.current!==r)return;if(!i||!Array.isArray(i.models)||typeof i.pollMs!=`number`)throw Error(t(`sub.fallbackSaveFailed`));C.current+=1,c(i.models),u(i.pollMs),S.current={...S.current,fallback:i.models,pollMs:i.pollMs};let a={available:oe,chosen:E.current?.chosen??[],...S.current};E.current=a,La(n,a),A(!0),O(t(`sub.fallbackSaved`))}catch(e){A(!1),O(e instanceof Error&&e.message?e.message:t(`sub.networkError`))}finally{T.current=!1,f(!1)}};if(Y.showSkeleton&&!ae)return(0,Q.jsx)(Gv,{label:t(`sub.loading`),rows:4});if(Y.kind===`failed-cold`){let e=Y.error instanceof Error?Y.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`)})}),D&&(0,Q.jsx)($,{tone:k?`ok`:`err`,children:D}),Y.showError&&(0,Q.jsx)($,{tone:`err`,children:t(`sub.loadFail`)}),_&&(0,Q.jsxs)($,{tone:`err`,children:[t(`sub.fallbackLabel`),`: `,t(`sub.loadFail`),_!==t(`sub.loadFail`)&&(0,Q.jsxs)(Q.Fragment,{children:[` `,_]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:y,onClick:()=>{b(!0),q()},children:t(`common.retry`)})]}),(0,Q.jsx)(OS,{apiBase:e,roster:a},e),(0,Q.jsx)(BS,{available:oe,fallbackAvailable:h??[],chosen:a,onToggle:le,onMove:ue,fallback:s,fallbackPollMs:l,fallbackBusy:d||!p,onFallbackChange:e=>{C.current+=1,c(e)},onFallbackPollMsChange:e=>{C.current+=1,u(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}K(t)},ultraLoadFailed:ee,onUltraModeRetry:()=>{re()}}}),H&&H.apiBase===e&&(0,Q.jsx)(ir,{reason:`selection`,mode:H.mode,docsUrl:`https://opencodex.me/guides/subagent-v1-default/`,busy:B,onContinue:()=>{let e=H.mode;U(null),K({multiAgentMode:e,multiAgentSurfaceAdvisoryAcknowledged:!0})},onChooseV1:()=>{U(null),z.multiAgentMode!==`v1`&&K({multiAgentMode:`v1`,multiAgentSurfaceAdvisoryAcknowledged:!0})},onDismiss:()=>U(null)})]})}function GS(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 KS(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 qS(e,t){if(e===void 0)throw Error(`Unexpected undefined${t?`: ${t}`:``}`);return e}var JS=(e,t)=>Math.abs(e-t)<1.01,YS=(e,t,n)=>{let r;return function(...i){e.clearTimeout(r),r=e.setTimeout(()=>t.apply(this,i),n)}},XS,ZS=()=>{if(XS!==void 0)return XS;if(typeof navigator>`u`)return XS=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return XS=!0;let e=navigator.maxTouchPoints;return XS=navigator.platform===`MacIntel`&&e!==void 0&&e>0},QS=e=>{let{offsetWidth:t,offsetHeight:n}=e;return{width:t,height:n}},$S=e=>e,eC=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},tC=(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(QS(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(QS(n))};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return a.observe(n,{box:`border-box`}),()=>{a.unobserve(n)}},nC={passive:!0},rC=typeof window>`u`||`onscrollend`in window,iC=(e,t,n)=>{let r=e.scrollElement;if(!r)return;let i=e.targetWindow;if(!i)return;let a=e.options.useScrollendEvent&&rC,o=0,s=a?null:YS(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,nC),a&&r.addEventListener(`scrollend`,u,nC),()=>{r.removeEventListener(`scroll`,l),a&&r.removeEventListener(`scrollend`,u)}},aC=(e,t)=>iC(e,t,t=>{let{horizontal:n,isRtl:r}=e.options;return n?t.scrollLeft*(r&&-1||1):t.scrollTop}),oC=(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`]},sC=(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})},cC=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:$S,rangeExtractor:eC,onChange:()=>{},measureElement:oC,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=KS(()=>(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,!(!ZS()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};e.addEventListener(`touchstart`,t,nC),e.addEventListener(`touchend`,n,nC),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&&(ZS()&&(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=KS(()=>[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=KS(()=>[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=GS(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=KS(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>e.length===0||t===0?(this.range=null,null):(this.range=dC(e,t,n,r,r===1&&this._flatMeasurements!=null?this._flatMeasurements:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=KS(()=>{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=KS(()=>[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 qS(t[lC(0,t.length-1,r?e=>n[e*2]:e=>qS(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:ZS()&&(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&&JS(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()}},lC=(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 uC(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 dC(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=uC(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=lC(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 fC=typeof document<`u`?Z.useLayoutEffect:Z.useEffect;function pC({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,Gt.flushSync)(i):i()),(o=r.onChange)==null||o.call(r,t,n)}},[l]=Z.useState(()=>{let e=new cC(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),fC(()=>l._didMount(),[]),fC(()=>(o(l),l._willUpdate())),fC(()=>{s(l)}),l}function mC(e){return pC({observeElementRect:tC,observeElementOffset:aC,scrollToFn:sC,...e})}var hC=32;function gC(e){return[...new Uint8Array(e)].map(e=>e.toString(16).padStart(2,`0`)).join(``)}function _C(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<=31||n===127)return!0}return!1}var vC=`codex://threads/`,yC=512;function bC(e){let t=e.trim();if(t.length>yC||t.length<=16||!t.toLowerCase().startsWith(vC))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 xC(e){let t=e.trim(),n=bC(t);return n===t?[n]:[n,t]}async function SC(e){let t=xC(e).filter(e=>e!==``&&!_C(e)&&e.length<=4096);return(await Promise.all(t.map(e=>crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e))))).map(e=>gC(e).slice(0,hC))}function CC(e,t,n){if(!e)return!1;let r=xC(t);return r.some(Boolean)?r.includes(e)?!0:n!==void 0&&n.includes(e):!1}var wC={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.`}}},TC={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 EC(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 DC(e,t){if(e<400)return null;let n=EC(t);return(wC[Math.trunc(e)]??(e<500?TC.client:TC.server))[n]}var OC=[`provider`,`usage`,`injection`];function kC(e){return e>0?`[${new Date(e).toLocaleTimeString()}] `:``}function AC(e){return new Date(e).toLocaleTimeString()}function jC(e,t){return t===`provider`?!!e?.enabled:t===`usage`?!!e?.usage:!!e?.injection}function MC(e,t){return t===`debug`?e.enabled:t===`usage`?e.usage:t===`injection`?e.injection:e.claude}function NC({entries:e}){let{t}=D();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:t(`debug.claudeInbound.title`)}),(0,Q.jsx)(`div`,{className:`muted text-control`,style:{marginBottom:10},children:t(`debug.claudeInbound.sub`)}),e.length===0?(0,Q.jsx)(`div`,{className:`muted text-control`,children:t(`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:t(`debug.claudeInbound.time`)}),(0,Q.jsx)(`th`,{children:t(`debug.claudeInbound.endpoint`)}),(0,Q.jsx)(`th`,{children:t(`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:AC(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??``}`:t(`debug.claudeInbound.none`)}),(0,Q.jsx)(`td`,{className:`mono`,children:e.hasSystem?e.systemTag??`yes`:t(`debug.claudeInbound.none`)})]},e.id))})]})})]})}function PC({debug:e,stream:t,streamEnabled:n,entries:r,scrollContainerRef:i,lineVirtualizer:a}){let{t:o}=D();return e?n?r.length===0?(0,Q.jsxs)(`div`,{className:`empty`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,style:{marginBottom:6},children:o(`debug.noLinesTitle`)}),(0,Q.jsx)(`div`,{className:`muted text-control`,style:{maxWidth:560,marginInline:`auto`},children:o(`debug.noLines.${t}`)})]}):(0,Q.jsx)(`div`,{ref:i,className:`log-detail-json`,style:{maxHeight:`calc(100vh - 280px)`,overflow:`auto`},children:(0,Q.jsx)(`div`,{style:{position:`relative`,height:a.getTotalSize(),width:`100%`},children:a.getVirtualItems().map(e=>(0,Q.jsx)(`div`,{ref:a.measureElement,"data-index":e.index,style:{position:`absolute`,top:0,left:0,width:`100%`,transform:`translateY(${e.start}px)`},children:`${kC(r[e.index].at)}${r[e.index].line}`},e.key))})}):(0,Q.jsxs)(`div`,{className:`empty`,children:[(0,Q.jsx)(`div`,{className:`font-semibold`,style:{marginBottom:6},children:o(`debug.emptyTitle`)}),(0,Q.jsx)(`div`,{className:`muted text-control`,style:{maxWidth:560,marginInline:`auto`},children:o(`debug.empty`)})]}):null}function FC({debug:e,debugBusy:t,stream:n,onSetFlag:r,onReset:i,onStreamChange:a}){let{t:o}=D();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(n=>{let i=MC(e,n);return(0,Q.jsxs)(`div`,{style:{display:`inline-flex`,alignItems:`center`,gap:10,minWidth:220},children:[(0,Q.jsx)(nn,{on:i,disabled:t,label:o(`debug.${n}`),onClick:()=>r(n,!i)}),(0,Q.jsx)(`span`,{className:`text-control`,children:o(`debug.${n}`)})]},n)})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:t,onClick:i,children:o(`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${n===`provider`?` btn-primary`:` btn-ghost`}`,onClick:()=>a(`provider`),children:o(`debug.streamProvider`)}),e.usage&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm${n===`usage`?` btn-primary`:` btn-ghost`}`,onClick:()=>a(`usage`),children:o(`debug.streamUsage`)}),e.injection&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm${n===`injection`?` btn-primary`:` btn-ghost`}`,onClick:()=>a(`injection`),children:o(`debug.streamInjection`)})]})]})}function IC({embedded:e,refreshing:t,streamEnabled:n,follow:r,onRefresh:i,onFollowChange:a}){let{t:o}=D();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:o(`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:t||!n,onClick:i,children:[(0,Q.jsx)(Fe,{}),` `,o(`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:r,onChange:e=>a(e.target.checked)}),o(`debug.follow`)]})]})]}),(0,Q.jsx)(`p`,{className:`page-sub`,children:o(`debug.subtitle`)})]})}function LC(e){return`debug-settings:${e}`}function RC({apiBase:e,embedded:t,active:n=!0}){let{t:r}=D(),i=`ocx.debug.settings.v1:${e}`,a=Na(i),o=LC(e),[s,c]=(0,Z.useState)(!1),[l,u]=(0,Z.useState)(`provider`),[d,f]=(0,Z.useState)([]),[p,m]=(0,Z.useState)(!0),[h,g]=(0,Z.useState)(!1),_=(0,Z.useRef)(0),v=(0,Z.useRef)(0),y=(0,Z.useRef)(0),b=(0,Z.useRef)(null),x=(0,Z.useRef)(null),S=(0,Z.useRef)(null),C=za(o,[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 La(i,r),r},{pollMs:2e3,enabled:n,isEmpty:()=>!1,initialData:a??void 0}),w=C.state,E=C.data??a??null,O=Rt(`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:n&&!!E?.claude}).data??[],k=mC({count:d.length,getScrollElement:()=>x.current,estimateSize:()=>20,overscan:30,getItemKey:e=>d[e].seq}),A=(0,Z.useCallback)(e=>jC(E,e),[E]);(0,Z.useEffect)(()=>{if(!E||A(l))return;let e=OC.find(A);if(!e)return;let t=window.setTimeout(()=>u(e),0);return()=>window.clearTimeout(t)},[E,l,A]);let j=A(l),M=l===`provider`?`${e}/api/debug/logs`:l===`usage`?`${e}/api/debug/usage-logs`:`${e}/api/debug/injection-logs`,N=(0,Z.useCallback)(async(e,t)=>{let n=++y.current;if(!j){n===y.current&&(f([]),_.current=0);return}g(!0);try{let r=new URLSearchParams({limit:`500`});!e&&_.current>0&&r.set(`after`,String(_.current));let i=await fetch(`${M}?${r}`,{signal:t});if(!i.ok||t?.aborted||n!==y.current)return;let a=await i.json();if(t?.aborted||n!==y.current||a.length===0)return;f(t=>(e?a:[...t,...a]).slice(-2e3)),_.current=a[a.length-1].seq}catch{}finally{n===y.current&&g(!1)}},[M,j]);(0,Z.useEffect)(()=>{if(!n)return;let t=`${e}:${l}:${j}`,r=S.current!==t;if(S.current=t,!r&&d.length>0)return;_.current=0;let i=new AbortController,a=window.setTimeout(()=>{r&&f([]),N(!0,i.signal)},0);return()=>{window.clearTimeout(a),y.current+=1,i.abort()}},[n,e,l,j]);let P=(0,Z.useRef)(!1),F=(0,Z.useEffectEvent)(()=>{if(P.current)return;P.current=!0;let e=T(1e4);N(!1,e.signal).finally(()=>{e.clear(),P.current=!1})});(0,Z.useEffect)(()=>{if(!(!n||!p||!j))return ra(()=>F(),1e3)},[n,p,j]),(0,Z.useEffect)(()=>{p&&d.length>0&&k.scrollToIndex(d.length-1,{align:`end`})},[d,p,k]);let I=async t=>{let n=++v.current;c(!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 a=await r.json();if(n!==v.current)return;La(i,a),Bt(o,a)}catch{}},a=(b.current??Promise.resolve()).then(r,r);b.current=a.then(()=>void 0,()=>void 0);try{await a}finally{n===v.current&&c(!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)(IC,{embedded:t,refreshing:h,streamEnabled:j,follow:p,onRefresh:()=>void N(!0),onFollowChange:m}),!E&&w.showError?(0,Q.jsxs)(`div`,{className:`notice notice-err`,role:`alert`,children:[(0,Q.jsx)(`span`,{children:r(`debug.loadFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>C.refresh(),children:r(`common.retry`)})]}):w.showSkeleton&&!E?(0,Q.jsx)(Gv,{label:r(`debug.loading`),rows:3}):E?(0,Q.jsx)(FC,{debug:E,debugBusy:s,stream:l,onSetFlag:(e,t)=>{L(e,t)},onReset:()=>{R()},onStreamChange:u}):null,E&&w.showError&&(0,Q.jsx)($,{tone:`err`,children:r(`debug.loadFailed`)}),E?.claude&&(0,Q.jsx)(NC,{entries:O}),(0,Q.jsx)(PC,{debug:!!E,stream:l,streamEnabled:j,entries:d,scrollContainerRef:x,lineVirtualizer:k})]})}function zC(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 BC=[`all`,`native`,`translated`,`legacy-bridge`,`blocked`,`none`],VC={surface:`all`,model:``,provider:``,status:`all`,timeWindow:`all`,interceptedOnly:!1,conversationId:``};function HC(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 UC(e){return Array.isArray(e.attempts)?e.attempts.filter(e=>typeof e==`object`&&!!e):[]}function WC(e){if(typeof e!=`string`)return;let t=e.trim();return t?t.toLowerCase():void 0}function GC(e,t){if(e===`15m`)return t-9e5;if(e===`1h`)return t-36e5;if(e===`24h`)return t-864e5}function KC(e,t,n=Date.now()){let r=t.model.trim().toLowerCase(),i=t.provider.trim().toLowerCase(),a=t.conversationId.trim(),o=GC(t.timeWindow,n),s=t.protocolMode??`all`;return e.filter(e=>{if(!zC(e,t.surface)||t.interceptedOnly&&typeof e.shadowCallRewrittenFrom!=`string`)return!1;if(s!==`all`){let t=cm(e.protocolTrace)?.mode;if(s===`none`?t!==void 0:t!==s)return!1}if(a&&!CC(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=UC(e);if(r&&![WC(e.model),WC(e.resolvedModel),WC(e.servedModel),...n.map(e=>WC(e.model))].some(e=>e===r)||i&&![WC(e.provider),...n.map(e=>WC(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 qC(e,t){if(typeof t!=`string`)return;let n=t.trim(),r=WC(n);if(!r)return;let i=e.get(r);(i===void 0||n<i)&&e.set(r,n)}function JC(e){let t=new Map,n=new Map;for(let r of e){for(let e of[r.model,r.resolvedModel,r.servedModel,...UC(r).map(e=>e.model)])qC(t,e);for(let e of[r.provider,...UC(r).map(e=>e.provider)])qC(n,e)}return{models:[...t.values()].sort(),providers:[...n.values()].sort()}}var YC=[`all`,`claude`,`codex`,`grok`];function XC(e,t,n){let r=YC.indexOf(t),i=-1;if(e.key===`ArrowRight`||e.key===`ArrowDown`?i=(r+1)%YC.length:e.key===`ArrowLeft`||e.key===`ArrowUp`?i=(r-1+YC.length)%YC.length:e.key===`Home`?i=0:e.key===`End`&&(i=YC.length-1),i<0)return;e.preventDefault();let a=YC[i];n(a),document.getElementById(`logs-surface-${a}`)?.focus()}function ZC({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=>XC(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:_e(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:BC.map(e=>(0,Q.jsx)(`option`,{value:e,children:a(QC(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)(N,{}),` `,a(`logs.filter.reset`)]})]})]})]})}function QC(e){return e===`all`?`logs.filter.protocol.all`:e===`none`?`logs.filter.protocol.none`:Cm[e]}function $C({trace:e,t}){let n=cm(e);if(!n)return null;let r=km(n,t),i=t(Cm[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 ew({trace:e,t}){let n=cm(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:Dm(n.inbound,t)}),(0,Q.jsx)(`span`,{className:`muted`,children:t(`logs.detail.protocol.mode`)}),(0,Q.jsx)(`span`,{children:t(Cm[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:Dm(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:Om(n.requestPath,t)}),(0,Q.jsx)(`span`,{className:`muted`,children:t(`logs.detail.protocol.responsePath`)}),(0,Q.jsx)(`span`,{children:Om(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(wm[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}),`:`,` `,Om(e.requestPath,t),` · `,t(Cm[e.mode])]},e.ordinal))})]})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm protocol-deep-link`,onClick:()=>fg({inbound:n.inbound,upstream:ig(n.upstream)}),children:t(`protocolLinks.labEvidence`)})]}):(0,Q.jsx)(`p`,{className:`log-detail-notes-line muted`,children:t(`logs.detail.protocol.none`)})]})}function tw(e,t){return typeof e==`number`&&Number.isFinite(e)&&e>=0?{generatedAt:e,receivedAt:t}:void 0}function nw(e,t,n){return e?e.generatedAt+Math.max(0,t-e.receivedAt):n}function rw(){return Uh(window.location.hash)===`logs/debug`?`debug`:`logs`}function iw(e){window.location.hash=e===`debug`?`logs/debug`:`logs`}function aw(e){e.key===`ArrowLeft`||e.key===`Home`?(e.preventDefault(),iw(`logs`),document.getElementById(`logs-tab-logs`)?.focus()):(e.key===`ArrowRight`||e.key===`End`)&&(e.preventDefault(),iw(`debug`),document.getElementById(`logs-tab-debug`)?.focus())}function ow(e){return e.servedModel!==void 0&&e.servedModel!==(e.wireModel??e.model)}function sw(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 cw(e,t){return[ow(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}${sw(e.tierOutcome,t)}`:void 0,e.modelSupportsServiceTier===void 0?void 0:`${t(`logs.modelTooltip.supportsTier`)}=${e.modelSupportsServiceTier}`].filter(Boolean).join(` · `)}function lw(e){return e.requestedSpeedLabel||void 0}function uw(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 dw=new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`,currencyDisplay:`narrowSymbol`,minimumFractionDigits:4,maximumFractionDigits:4});function fw(e,t,n,r=!1){if(!Number.isFinite(e)||e<0)return t(`logs.cost.unavailable`);let i=dw.format(e);return t(r?`logs.cost.lowerBound`:`logs.cost.approximate`,{amount:i})}function pw(e,t,n){return!e||e.kind===`unavailable`?t(`logs.cost.unavailable`):fw(e.estimate.cost.total,t,n,e.estimate.priorityLowerBound)}function mw(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 hw(e){return e===`cursor`||e.startsWith(`cursor-`)}function gw(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 _w(e,t){if(!e.usage)return;let n=gw(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(hw(e.provider)?`logs.tokens.noCacheCursorNote`:`logs.tokens.noCacheNote`)),r.join(` · `)}function vw(e){return e===void 0||typeof e==`string`}function yw(e){if(e===void 0)return!0;if(!e||typeof e!=`object`||!vw(e.routeKind)||e.profile!==void 0&&(!e.profile||typeof e.profile!=`object`||!vw(e.profile.id)||!vw(e.profile.revision))||e.selected!==void 0&&(!e.selected||typeof e.selected!=`object`||!vw(e.selected.provider)||!vw(e.selected.model)||!vw(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`||!vw(t.provider)||!vw(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`||!vw(e.code))return!1}}return!0}function bw(e){if(e.routeDecision===void 0||yw(e.routeDecision))return e;let t={...e};return delete t.routeDecision,t}function xw(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 Sw(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 Cw=Object.freeze([`completed`,`failed`,`incomplete`,`aborted`]);Object.freeze(Cw.filter(e=>e!==`aborted`)),Object.freeze([`terminal`,`client_cancel`,`non_stream`,`body_stall`,`body_overflow`]);function ww(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 Tw(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function Ew(e){return Tw(e?.sends)}function Dw(e){return Tw(e?.unresolved)}function Ow(e){return`ocx.logs.list.v1:${e}`}var kw=[];function Aw(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`||!yw(t.routeDecision))return null;return e}function jw(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 Mw(e){let t=jw(e),n=e.usage?.contextTotalTokens;return typeof n==`number`?Math.max(t??0,n)||void 0:t}function Nw(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 Pw(e){if(!(!e.reasoningWireField||e.reasoningWireValue===void 0))return`${e.reasoningWireField}=${e.reasoningWireValue}`}function Fw(e){return ow(e)?(0,Q.jsxs)(Q.Fragment,{children:[w_(e.wireModel??e.model),` → `,w_(e.servedModel)]}):w_(e.servedModel??e.resolvedModel??e.model)}function Iw(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 Lw=2e3,Rw=3e4,zw=4,Bw=3,Vw={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`},Hw={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`},Uw={"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 Ww(e){return Vw[e]}function Gw(e){return Hw[e]}function Kw(e){return Uw[e]??`logs.detail.attempt.recovery.unknown`}function qw(e){return e===`verified`?`logs.detail.verification.verified`:`logs.detail.verification.derived`}var Jw={completed:`logs.detail.outcome.completed`,failed:`logs.detail.outcome.failed`,incomplete:`logs.detail.outcome.incomplete`,aborted:`logs.detail.outcome.aborted`},Yw={"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`},Xw={"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`},Zw={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 Qw(e){return Jw[ww(e)]}function $w(e,t){let n=e.failureCause===void 0?void 0:Yw[e.failureCause],r=e.failureStage===void 0?void 0:Xw[e.failureStage],i=e.resendPermission===void 0?void 0:Zw[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 eT(e){return e>=200&&e<300?`var(--green)`:e>=400?`var(--red)`:`var(--amber)`}function tT(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 nT(e,t,n){let{date:r,time:i}=tT(e,t,n);return`${r} ${i}`}function rT(e){let t=0;for(let n of e){let e=jw(n);e!==void 0&&(t+=e)}return{requests:e.length,totalTokens:t,...mw(e)}}function iT({apiBase:e}){let{t,locale:n}=D(),r=Ow(e),i=Aw(Na(r)),[a,o]=(0,Z.useState)(!0),[s,c]=(0,Z.useState)({error:null,count:0}),[l,u]=(0,Z.useState)(null),[d,f]=(0,Z.useState)(VC),[p,m]=(0,Z.useState)(()=>Date.now()),h=(0,Z.useRef)({key:r,active:!1,request:0}),g=(0,Z.useRef)({key:r,cursor:null,rows:[]});(0,Z.useLayoutEffect)(()=>{let e={key:r,active:!0,request:0};return h.current=e,g.current={key:r,cursor:null,rows:[]},m(Date.now()),()=>{e.active=!1}},[r]);let _=(0,Z.useCallback)(()=>{let e=h.current;return nw(e.key===r?e.anchor:void 0,performance.now(),Date.now())},[r]),v=(0,Z.useRef)(null),y=(0,Z.useRef)({key:r,failures:0,nextAttemptAt:0,error:null}),b=O.find(e=>e.code===n)?.htmlLang,[x,S]=(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()&&S(e.timeZone.trim())}).catch(()=>{}),()=>{n=!0,t.abort()}},[e]);let[C,w]=(0,Z.useState)(rw),[T,E]=(0,Z.useState)(()=>rw()===`debug`);(0,Z.useEffect)(()=>{let e=()=>w(rw());return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[]),(0,Z.useEffect)(()=>{C===`debug`&&E(!0)},[C]);let k=iw,A=(0,Z.useCallback)(async t=>{let n=h.current;if(t.aborted||!n.active||n.key!==r)throw t.reason??new DOMException(`Obsolete log request`,`AbortError`);let i=++n.request,a=()=>!t.aborted&&n.active&&h.current===n&&n.request===i,o=y.current;if(o.key!==r&&(o={key:r,failures:0,nextAttemptAt:0,error:null},y.current=o),o.failures>0&&Date.now()<o.nextAttemptAt)throw o.error;let s=g.current,c=s.key===r?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 i=await e.json(),o=performance.now(),u=xw(i),d=u.rows.map(bw),p=c&&u.cursor&&!u.reset?Sw(s.rows,d):d;if(!a())throw t.reason??new DOMException(`Obsolete log request`,`AbortError`);g.current={key:r,cursor:u.cursor,rows:p};let h=JC(p);f(e=>{let t=e.model.trim().toLowerCase(),n=e.provider.trim().toLowerCase(),r=t?h.models.find(e=>e.trim().toLowerCase()===t)??``:``,i=n?h.providers.find(e=>e.trim().toLowerCase()===n)??``:``;return e.model===r&&e.provider===i?e:{...e,model:r,provider:i}});let _=tw(u.generatedAt,o);return _&&(n.anchor=_),m(nw(n.anchor,o,Date.now())),y.current={key:r,failures:0,nextAttemptAt:0,error:null},La(r,p),p}catch(e){if(!a())throw e;let t=e??Error(`log request failed`),n=o.failures+1,i=Lw*2**Math.min(n,zw);throw y.current={key:r,failures:n,nextAttemptAt:Date.now()+i,error:t},t}},[e,r]),j=za(r,[e],A,{isEmpty:e=>e.length===0,enabled:C===`logs`,pollMs:a?Lw:void 0,initialData:i??void 0}),M=j.state,N=M.data??i??kw,P=j.refresh,F=(0,Z.useCallback)(()=>{y.current={key:r,failures:0,nextAttemptAt:0,error:null},g.current={key:r,cursor:null,rows:[]},P({forceLoading:!0})},[P,r]),I=!j.refreshing&&M.showError;!j.refreshing&&!M.showError&&M.data!==void 0&&s.count!==0?c({error:null,count:0}):I&&s.error!==M.error&&c(e=>({error:M.error,count:e.count+1}));let L=s.count>=Bw||!a&&I,R=l?DC(l.status,n):null,z=d.conversationId.trim();(0,Z.useEffect)(()=>{if(d.timeWindow===`all`||C!==`logs`)return;m(_());let e=window.setInterval(()=>m(_()),Rw);return()=>window.clearInterval(e)},[d.timeWindow,C,_]),(0,Z.useEffect)(()=>{let e=!1;if(!z){f(e=>e.conversationQueryHash===void 0?e:{...e,conversationQueryHash:void 0});return}return SC(z).then(t=>{e||f(e=>e.conversationQueryHash?.join(` `)===t.join(` `)?e:{...e,conversationQueryHash:t})}),()=>{e=!0}},[z]);let B=(0,Z.useMemo)(()=>JC(N),[N]),V=HC(d),H=(0,Z.useMemo)(()=>KC(N,d,p),[N,d,p]),U=z?rT(H):null,ee=mC({count:H.length,getScrollElement:()=>v.current,estimateSize:()=>92,overscan:15,getItemKey:e=>{let t=H[H.length-1-e];return t.requestId??`${t.timestamp}:${t.model}:${t.provider}`}}),W=ee.getVirtualItems(),te=W.length>0?W[0].start:0,ne=W.length>0?ee.getTotalSize()-W[W.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:t(`nav.logs`)}),C===`logs`&&(0,Q.jsxs)(`label`,{className:`muted text-control logs-auto-refresh`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:a,onChange:e=>o(e.target.checked)}),t(`logs.autoRefresh`)]})]}),(0,Q.jsxs)(`div`,{className:`page-tabs`,role:`tablist`,"aria-label":t(`nav.logs`),children:[(0,Q.jsx)(`button`,{type:`button`,role:`tab`,id:`logs-tab-logs`,"aria-selected":C===`logs`,"aria-controls":`logs-panel-logs`,tabIndex:C===`logs`?0:-1,className:`page-tab${C===`logs`?` page-tab--active`:``}`,onClick:()=>k(`logs`),onKeyDown:aw,children:t(`logs.tabLogs`)}),(0,Q.jsx)(`button`,{type:`button`,role:`tab`,id:`logs-tab-debug`,"aria-selected":C===`debug`,"aria-controls":`logs-panel-debug`,tabIndex:C===`debug`?0:-1,className:`page-tab${C===`debug`?` page-tab--active`:``}`,onClick:()=>k(`debug`),onKeyDown:aw,children:t(`logs.tabDebug`)})]}),T&&(0,Q.jsx)(`div`,{role:`tabpanel`,id:`logs-panel-debug`,"aria-labelledby":`logs-tab-debug`,hidden:C!==`debug`,children:(0,Q.jsx)(RC,{apiBase:e,embedded:!0,active:C===`debug`})}),(0,Q.jsxs)(`div`,{role:`tabpanel`,id:`logs-panel-logs`,"aria-labelledby":`logs-tab-logs`,hidden:C!==`logs`,children:[(0,Q.jsx)(ZC,{filters:d,options:B,hasActiveFilters:V,filteredCount:H.length,totalCount:N.length,t,onFilterChange:f,onResetFilters:()=>f(VC)}),U&&(0,Q.jsx)(`div`,{className:`logs-conversation-totals`,children:(0,Q.jsxs)($,{tone:`ok`,children:[t(`logs.conversation.totals`,{requests:U.requests,tokens:G(U.totalTokens,b??n),cost:fw(U.estimatedCostUsd,t,b,U.priorityLowerBound)}),` `,(0,Q.jsxs)(`span`,{className:`muted`,children:[t(`logs.conversation.scope`),U.unpricedRequests+U.unmeteredRequests>0?` ${t(`logs.conversation.excluded`,{unpriced:U.unpricedRequests,unmetered:U.unmeteredRequests})}`:``]})]})}),M.kind===`failed-cold`&&(0,Q.jsxs)($,{tone:`err`,children:[M.error instanceof Error?`${t(`logs.loadError`)} ${M.error.message}`:t(`logs.loadError`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:F,disabled:M.refreshing,children:t(`common.retry`)})]}),L&&N.length>0&&(0,Q.jsxs)($,{tone:`err`,children:[t(`logs.loadError`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:F,disabled:j.refreshing,children:t(`common.retry`)})]}),M.kind===`failed-cold`?null:M.showSkeleton&&N.length===0?(0,Q.jsx)(Gv,{label:t(`common.loading`),rows:6}):H.length===0?(0,Q.jsx)(on,{title:N.length>0&&V?t(`logs.noMatchingRequests`):t(`logs.noRequests`)}):(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsx)(`div`,{ref:v,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:t(`logs.col.time`)}),(0,Q.jsx)(`th`,{className:`num log-col-tokens`,children:t(`logs.col.tokens`)}),(0,Q.jsx)(`th`,{className:`num log-col-rate`,title:t(`logs.metric.tokPerSecTitle`),children:t(`logs.col.tokPerSec`)}),(0,Q.jsx)(`th`,{className:`num log-col-cost`,title:t(`logs.metric.estimatedCostTitle`),children:t(`logs.col.estimatedCost`)}),(0,Q.jsx)(`th`,{className:`log-col-model`,children:t(`logs.col.model`)}),(0,Q.jsx)(`th`,{children:t(`logs.col.effort`)}),(0,Q.jsx)(`th`,{children:t(`logs.col.provider`)}),(0,Q.jsx)(`th`,{children:t(`logs.col.status`)}),(0,Q.jsx)(`th`,{children:t(`logs.col.request`)}),(0,Q.jsx)(`th`,{className:`num log-col-duration`,children:t(`logs.col.duration`)})]})}),(0,Q.jsxs)(`tbody`,{children:[te>0&&(0,Q.jsx)(`tr`,{children:(0,Q.jsx)(`td`,{colSpan:10,className:`logs-virtual-spacer`,style:{height:te}})}),W.map(e=>{let r=H[H.length-1-e.index],i=Pw(r),a=r.displayMetrics?.decodeTokPerSecond,o=uw(a?.kind===`value`?a:{}),s=tT(r.timestamp,b,x);return(0,Q.jsxs)(`tr`,{"data-index":e.index,ref:ee.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:_w(r,t),children:(()=>{let e=Mw(r),{read:i,write:a}=gw(r);return e===void 0?(0,Q.jsx)(`span`,{className:`muted`,children:t(`logs.tokens.${r.usageStatus??`unreported`}`)}):(0,Q.jsxs)(`span`,{className:`logs-stack-end`,children:[(0,Q.jsxs)(`span`,{children:[r.usageStatus===`estimated`?`~`:``,G(e,n)]}),i!==void 0&&i>0&&(0,Q.jsxs)(`span`,{className:`muted text-caption leading-tight`,children:[`c `,G(i,n)]}),a!==void 0&&a>0&&(0,Q.jsxs)(`span`,{className:`muted text-caption leading-tight`,children:[`w `,G(a,n)]}),r.usageStatus===`estimated`&&i===void 0&&a===void 0&&(0,Q.jsx)(`span`,{className:`muted text-caption leading-tight`,children:t(hw(r.provider)?`logs.tokens.noCacheCursor`:`logs.tokens.noCache`)})]})})()}),(0,Q.jsxs)(`td`,{className:`num mono log-col-rate`,children:[Iw(r.displayMetrics?.tokPerSecond,b),a?.kind===`value`&&(0,Q.jsxs)(`span`,{className:`logs-stack-end logs-decode-rate muted`,title:t(o.detail),children:[(0,Q.jsx)(`span`,{children:Iw(a,b)}),(0,Q.jsx)(`span`,{className:`text-caption`,children:t(o.short)})]})]}),(0,Q.jsx)(`td`,{className:`num mono log-col-cost`,children:pw(r.displayMetrics?.cost,t,b)}),(0,Q.jsx)(`td`,{className:`mono log-col-model`,title:cw(r,t),children:(0,Q.jsxs)(`span`,{className:`logs-model-cell`,children:[(0,Q.jsx)(`span`,{children:Fw(r)}),r.shadowCallRewrittenFrom&&(0,Q.jsx)(`span`,{className:`badge badge-muted`,style:{whiteSpace:`nowrap`},title:t(`logs.badge.interceptedHelperTitle`),children:t(`logs.badge.interceptedHelper`,{model:r.shadowCallRewrittenFrom})}),(r.surface===`claude`||r.surface===`claude-desktop`)&&(0,Q.jsx)(`span`,{className:`badge badge-accent`,children:t(`logs.badge.claude`)}),r.surface===`grok`&&(0,Q.jsx)(`span`,{className:`badge badge-accent`,children:t(`logs.badge.grok`)}),lw(r)&&(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:lw(r)}),(0,Q.jsx)($C,{trace:r.protocolTrace,t})]})}),(0,Q.jsx)(`td`,{className:`mono log-reasoning-cell`,title:i,children:Nw(r)}),(0,Q.jsx)(`td`,{className:`muted`,children:_e(r.provider,t)}),(0,Q.jsx)(`td`,{children:(0,Q.jsxs)(`span`,{className:`log-status-cell`,children:[(0,Q.jsx)(`span`,{className:`mono font-semibold`,style:{color:eT(r.status)},children:r.status}),(0,Q.jsx)(`button`,{type:`button`,className:`log-detail-btn`,onClick:()=>u(r),"aria-label":`${t(`logs.details`)}: ${r.requestId??r.status}`,children:t(`logs.details`)})]})}),(0,Q.jsx)(`td`,{className:`muted mono`,children:(0,Q.jsx)(`span`,{className:`log-reqid`,title:r.requestId,children:r.requestId??`-`})}),(0,Q.jsxs)(`td`,{className:`num log-col-duration`,children:[r.durationMs,`ms`]})]},e.key)}),ne>0&&(0,Q.jsx)(`tr`,{children:(0,Q.jsx)(`td`,{colSpan:10,className:`logs-virtual-spacer`,style:{height:ne}})})]})]})})}),l&&(0,Q.jsx)(oT,{detail:l,detailInfo:R,localeCode:n,localeTag:b,serverTimeZone:x,t,onClose:()=>u(null),onFilterConversation:e=>{f(t=>({...t,conversationId:e})),u(null)}})]})]})}function aT(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 oT({detail:e,detailInfo:t,localeCode:n,localeTag:r,serverTimeZone:i,t:a,onClose:o,onFilterConversation:s}){let c=aT(!0),[l,u]=(0,Z.useState)(!1),d=gw(e),f=e.displayMetrics?.cost,p=e.displayMetrics?.decodeTokPerSecond,m=uw(p?.kind===`value`?p:{}),h=Pw(e),g=$w(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:eT(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)(N,{})})]}),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:nT(e.timestamp,r,i)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.outcome.label`)}),(0,Q.jsx)(`span`,{children:a(Qw(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:[Ew(e.spend),Dw(e.spend)>0&&` (${a(`logs.detail.sends.unresolved`)}: ${Dw(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:Fw(e)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.col.provider`)}),(0,Q.jsx)(`span`,{children:_e(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:[Nw(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)(ew,{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:Iw(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:Iw(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(Ww(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(Ww(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:fw(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:fw(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:fw(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:fw(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:fw(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(qw(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(Gw(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(Ww(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=uw(n?.kind===`value`?n:{}),o=Pw(e),s=t?.kind===`value`?t.estimate.price:void 0,c=$w(e,a).cause??e.errorCode??(e.recoveryKinds.length?e.recoveryKinds.map(e=>a(Kw(e))).join(`, `):void 0)??(t?.kind===`unavailable`?a(Ww(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:_e(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:[Nw(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(qw(s.status))]})]})]}),(0,Q.jsxs)(`td`,{className:`num mono`,children:[e.durationMs,`ms`]}),(0,Q.jsxs)(`td`,{className:`num mono`,children:[Iw(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:Iw(n,r)}),(0,Q.jsx)(`span`,{className:`text-caption`,children:a(i.short)})]})]}),(0,Q.jsx)(`td`,{className:`num mono`,children:pw(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?G(e.usage.inputTokens,n):`—`}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.tokens.output`)}),(0,Q.jsx)(`span`,{className:`mono`,children:e.usage?G(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?`—`:G(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?`—`:G(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?`—`:G(e.usage.reasoningOutputTokens,n)}),(0,Q.jsx)(`span`,{className:`muted`,children:a(`logs.detail.totalTokens`)}),(0,Q.jsx)(`span`,{className:`mono`,children:Mw(e)===void 0?`—`:G(Mw(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:G(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 sT(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 cT(e,t){if(!e||!t)return{ok:!1,error:`required`};let n=sT(e),r=sT(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 lT=[`requests`,`tokens`,`cost`,`quota`,`none`],uT=[6,24,72,168],dT=[`line`,`stackedBar`],fT=[`total`,`input`,`output`,`cached`],pT=[`sum`,`average`,`max`],mT=[`model`,`modelAccount`],hT={requests:`usage.companion.menuRequests`,tokens:`usage.companion.menuTokens`,cost:`usage.companion.menuCost`,quota:`usage.companion.menuQuota`,none:`usage.companion.menuNone`},gT={6:`usage.companion.window6`,24:`usage.companion.window24`,72:`usage.companion.window72`,168:`usage.companion.window168`},_T={total:`usage.companion.metricTotal`,input:`usage.companion.metricInput`,output:`usage.companion.metricOutput`,cached:`usage.companion.metricCached`},vT=[[`showToday`,`usage.companion.sectionToday`],[`showChart`,`usage.companion.sectionChart`],[`showModels`,`usage.companion.sectionModels`],[`showCost`,`usage.companion.sectionCost`],[`showAccounts`,`usage.companion.sectionAccounts`]],yT={sum:`usage.companion.aggregationSum`,average:`usage.companion.aggregationAverage`,max:`usage.companion.aggregationMax`},bT={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`]},xT={macos:`usage.companion.osMac`,windows:`usage.companion.osWindows`,linux:`usage.companion.osLinux`};function ST(e,t){return new Intl.DateTimeFormat(t,{hour:`2-digit`,minute:`2-digit`}).format(e)}function CT(e){return e instanceof Error&&e.message?e.message:String(e)}function wT({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(xT).map(r=>(0,Q.jsx)(`button`,{type:`button`,className:`usage-segmented-btn${e===r?` active`:``}`,"aria-pressed":e===r,onClick:()=>t(r),children:n(xT[r])},r))})}function TT({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 ET({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 DT(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 OT({apiBase:e,providers:t,onSettingsLoaded:n}){let{t:r,locale:i}=D(),a=(0,Z.useRef)(null),o=DT(a),[s,c]=(0,Z.useState)(null),[l,u]=(0,Z.useState)(null),[d,f]=(0,Z.useState)(null),[p,m]=(0,Z.useState)([]),[h,g]=(0,Z.useState)(null),[_,v]=(0,Z.useState)(null),[y,b]=(0,Z.useState)(!1),[x,S]=(0,Z.useState)(`idle`),[C,w]=(0,Z.useState)(null),[T,E]=(0,Z.useState)(null),O=(0,Z.useRef)(null),k=(0,Z.useRef)(null),A=(0,Z.useRef)(null),j=(0,Z.useRef)(x),M=(0,Z.useRef)(l),N=(0,Z.useRef)(new Map),[P,F]=(0,Z.useState)(new Map),[I,L]=(0,Z.useState)(()=>{let e=Ka();return e===`unknown`?`macos`:e});(0,Z.useEffect)(()=>{j.current=x},[x]),(0,Z.useEffect)(()=>{M.current=l},[l]);let R=(0,Z.useCallback)(async()=>{g(null);try{let t=await fetch(`${e}/api/companion/settings`);if(!t.ok)throw Error(`${t.status} ${t.statusText}`.trim());let r=await t.json();c(r),w(Date.now()),u(r.settings),k.current=r.settings,n?.(r.settings.menuBarMetric)}catch(e){g(CT(e))}},[e,n]);(0,Z.useEffect)(()=>{if(!o||s)return;let e=setTimeout(()=>void R(),0);return()=>clearTimeout(e)},[R,s,o]),(0,Z.useEffect)(()=>{if(!o)return;let e=setInterval(()=>{j.current!==`saving`&&(M.current&&k.current!==M.current||R())},6e4);return()=>clearInterval(e)},[R,o]);let z=(0,Z.useMemo)(()=>l?Ze(l):null,[l]),B=(0,Z.useCallback)(async()=>{if(!z)return;A.current?.abort();let t=new AbortController;A.current=t,b(!0),v(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=l?be(r,l):r;f(i),m(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||v(CT(e))}finally{t.signal.aborted||b(!1)}},[l,e,z]);(0,Z.useEffect)(()=>{if(!o||!z)return;let e=setTimeout(()=>void B(),250),t=setInterval(()=>void B(),6e4);return()=>{clearTimeout(e),clearInterval(t),A.current?.abort()}},[z,B,o]);let V=(0,Z.useCallback)(e=>{s?.corrupt||(u(t=>t&&{...t,...e}),S(`saving`),E(null))},[s?.corrupt]);(0,Z.useEffect)(()=>{if(!(s?.corrupt||!l||!k.current||k.current===l||x!==`saving`))return O.current&&clearTimeout(O.current),O.current=setTimeout(async()=>{try{let t=ke(l,p),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());c(r),w(Date.now()),u(r.settings),k.current=r.settings,S(`saved`)}catch(e){E(CT(e)),S(`error`)}},300),()=>{O.current&&clearTimeout(O.current)}},[e,p,s?.corrupt,x,l]);let H=(0,Z.useRef)(p);(0,Z.useEffect)(()=>{H.current=p},[p]),(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:ke(t,H.current)}),keepalive:!0}).catch(()=>{})},[e]);let U=(0,Z.useCallback)(async()=>{S(`saving`),E(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(),S(`saved`)}catch(e){E(CT(e)),S(`error`)}},[e,R]),ee=(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){E(CT(e))}},[e]);if(h)return(0,Q.jsxs)(`section`,{ref:a,className:`usage-companion-panel`,children:[(0,Q.jsx)(`p`,{role:`alert`,children:r(`usage.companion.settingsUnavailable`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void R(),children:r(`common.retry`)})]});let W=l;if(!W)return(0,Q.jsx)(`section`,{ref:a,className:`usage-companion-panel`,"aria-busy":`true`,children:(0,Q.jsx)(`div`,{className:`usage-companion-loading`,children:r(`common.loading`)})});let G=t.map(e=>e.provider).filter((e,t,n)=>n.indexOf(e)===t).toSorted(),te=W.models??p,ne=new Set(te),K=Ce(p,P),re=new Set(W.hiddenProviders),q=x===`saved`&&s?.updatedAt?r(`usage.companion.saved`,{time:ST(s.updatedAt,i)}):x===`error`?r(`usage.companion.saveFailed`,{error:T??``}):``;return(0,Q.jsxs)(`section`,{ref:a,className:`usage-companion-panel`,children:[s?.corrupt&&(0,Q.jsxs)(`div`,{className:`usage-companion-save-status is-error`,role:`alert`,children:[(0,Q.jsx)(`span`,{children:r(`usage.companion.corrupt`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void U(),disabled:x===`saving`,children:r(`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:r(`usage.companion.title`)}),(0,Q.jsx)(`p`,{className:`card-sub`,children:r(`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:r(`usage.companion.installGuide`)})]}),(()=>{let e=s?.companion?.lastSeenAt??null,t=e!==null&&C!==null&&C-e<=6e5,n=e===null||C===null?``:Po(e,Fo(r),C),i=Ha(),a=Va()??`2.83.0`,o=bT[I],c=(0,Q.jsxs)(`ol`,{className:`usage-companion-install-steps`,children:[(0,Q.jsxs)(`li`,{children:[r(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:r(`common.github`)})]}),(0,Q.jsx)(`li`,{children:r(o[1])}),(0,Q.jsx)(`li`,{children:r(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:r(`usage.companion.installAnother`)}),(0,Q.jsx)(wT,{value:I,onChange:L,t:r}),c,l]});return i?(0,Q.jsxs)(`div`,{className:`usage-companion-install usage-companion-install--shell`,children:[(0,Q.jsx)(`p`,{children:r(`usage.companion.runningInDesktop`,{version:a})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void ee(),children:r(`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`}),r(s?.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:r(`usage.companion.installTitle`)}),e!==null&&(0,Q.jsx)(`p`,{className:`usage-companion-install-last-seen muted text-caption`,children:r(`usage.companion.lastSeen`,{age:n})}),e===null&&(0,Q.jsx)(`p`,{className:`usage-companion-install-last-seen muted text-caption`,children:r(`usage.companion.notConnected`)}),(0,Q.jsx)(wT,{value:I,onChange:L,t:r}),c,l]})})(),(0,Q.jsx)(ze,{timeline:d,chartStyle:W.chartStyle,hours:W.chartHours,loading:y,error:_,onRetry:()=>void B(),locale:i,t:r}),K.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:r(`usage.companion.modelsOnChart`)}),(0,Q.jsx)(`span`,{className:`usage-companion-models-count text-caption muted`,children:r(`usage.companion.modelsCount`,{selected:te.length,total:p.length})})]}),W.models!==null&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>V({models:null}),disabled:s?.corrupt,children:r(`usage.companion.modelsShowAll`)})]}),(0,Q.jsx)(`div`,{className:`usage-companion-models-list`,children:K.map(e=>{let t=e.models.filter(e=>ne.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)(nn,{on:n,mixed:t>0&&!n,onClick:()=>V({models:tt(W.models,p,e.models.map(e=>e.id),!n)}),disabled:s?.corrupt,label:e.provider,title:e.provider})]}),e.models.map(e=>{let t=ne.has(e.id);return(0,Q.jsxs)(`div`,{className:`usage-companion-model-row${t?``:` is-off`}`,children:[(0,Q.jsx)(nn,{on:t,onClick:()=>V({models:tt(W.models,p,[e.id],!t)}),disabled:s?.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)?rt(e.total):`—`})]},e.id)})]},e.provider)})})]}),(0,Q.jsxs)(`fieldset`,{className:`usage-companion-controls`,disabled:s?.corrupt,children:[(0,Q.jsx)(TT,{label:r(`usage.companion.menuBarShows`),value:W.menuBarMetric,options:lT,optionLabel:e=>r(hT[e]),onChange:e=>V({menuBarMetric:e})}),(0,Q.jsx)(TT,{label:r(`usage.companion.window`),value:W.chartHours,options:uT,optionLabel:e=>r(gT[e]),onChange:e=>V({chartHours:e,bucketMinutes:je(e)})}),(0,Q.jsx)(TT,{label:r(`usage.companion.style`),value:W.chartStyle,options:dT,optionLabel:e=>r(e===`line`?`usage.companion.styleLine`:`usage.companion.styleStacked`),onChange:e=>V({chartStyle:e})}),(0,Q.jsx)(ET,{label:r(`usage.companion.metric`),value:W.tokenMetric,options:fT,optionLabel:e=>r(_T[e]),onChange:e=>V({tokenMetric:e})}),(0,Q.jsx)(ET,{label:r(`usage.companion.groupBy`),value:W.chartGrouping,options:mT,optionLabel:e=>r(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:r(`usage.companion.popoverSections`)}),vT.map(([e,t])=>(0,Q.jsxs)(`div`,{className:`usage-companion-switch`,children:[(0,Q.jsx)(`span`,{children:r(t)}),(0,Q.jsx)(`button`,{type:`button`,className:`toggle ${W[e]?`on`:``}`,"aria-label":r(t),"aria-pressed":W[e],onClick:()=>V({[e]:!W[e]}),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})})]},e))]}),(0,Q.jsxs)(`details`,{className:`usage-companion-advanced`,children:[(0,Q.jsx)(`summary`,{children:r(`usage.companion.advanced`)}),(0,Q.jsxs)(`div`,{className:`usage-companion-advanced-body`,children:[(0,Q.jsx)(ET,{label:r(`usage.companion.aggregation`),value:W.aggregation,options:pT,optionLabel:e=>r(yT[e]),onChange:e=>V({aggregation:e})}),(0,Q.jsxs)(`label`,{className:`usage-companion-control`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:r(`usage.companion.menuText`)}),(0,Q.jsx)(`input`,{value:W.menuBarTemplate??``,onChange:e=>V({menuBarTemplate:e.target.value}),maxLength:200}),(0,Q.jsxs)(`span`,{className:`muted text-caption`,children:[r(`usage.companion.placeholders`),` `,(0,Q.jsx)(`code`,{children:`{requests} {totalTokens} {inputTokens} {outputTokens} {costUsd} {quotaPercent}`})]})]}),G.length>0&&(0,Q.jsxs)(`fieldset`,{className:`usage-companion-check-list`,children:[(0,Q.jsx)(`legend`,{className:`field-label`,children:r(`usage.companion.hideProviders`)}),G.map(e=>(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:re.has(e),onChange:t=>V({hiddenProviders:t.target.checked?[...W.hiddenProviders,e]:W.hiddenProviders.filter(t=>t!==e)})}),` `,(0,Q.jsx)(`span`,{children:e})]},e))]})]})]})]}),(0,Q.jsxs)(`div`,{className:`usage-companion-save-status${x===`error`?` is-error`:``}`,role:x===`error`?`alert`:`status`,children:[q||`\xA0`,x===`error`&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{S(`saving`)},children:r(`common.retry`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void U(),children:r(`usage.companion.reset`)}),(0,Q.jsx)(`p`,{className:`muted text-caption`,children:r(`usage.companion.footer`)})]})}function kT({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=>fn(e)).then(e=>{n.signal.aborted||r(Object.keys(e?.providers??{}).map(e=>({provider:e})))}).catch(()=>{}),()=>n.abort()},[e,t.length]),(0,Q.jsx)(OT,{apiBase:e,providers:t.length>0?t:n})}function AT(){return window.location.hash.replace(/^#\/?/,``)===`usage/companion`?`companion`:`report`}function jT(e){window.location.hash=e===`report`?`usage`:`usage/companion`}function MT(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`;jT(t),document.getElementById(`usage-tab-${t}`)?.focus()}}var NT=class extends Error{};function PT(e){return`${Math.round(e*100)}%`}function FT({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:ud(e.estimatedCostUsd??0,t)}),r>0&&(0,Q.jsxs)(`span`,{className:`muted text-caption usage-cost-note`,children:[` `,i]})]})}function IT(e,t,n){return typeof e==`number`&&Number.isFinite(e)&&e>=0?G(e,t):n}function LT(e,t){return typeof e==`number`&&Number.isFinite(e)?PT(e):t}function RT(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:G(r,t),total:G(e.inputTokens,t)})}function zT(e){return typeof e==`number`&&Number.isFinite(e)&&e>0}function BT(e,t){return zT(e.throughputTokensPerSec)?t(`usage.throughput.title`,{samples:e.throughputSamples??0}):t(`usage.throughput.unmeasured`)}function VT(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 HT(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 UT(e,t){return new Intl.DateTimeFormat(t,{dateStyle:`medium`}).format(new Date(`${e}T12:00:00`))}function WT(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 GT({anchor:e,className:t,children:n}){return(0,Gt.createPortal)((0,Q.jsx)(`div`,{className:`${t} chart-overlay`,role:`tooltip`,style:WT(e),children:n}),document.body)}function KT(e,t,n){return n(`usage.chart.dayDetail`,{date:UT(e.date,t),requests:e.requests,tokens:G(e.totalTokens,t)})}function qT(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 JT(e,t){return e<=0?0:e<=t[0]?1:e<=t[1]?2:e<=t[2]?3:4}function YT(e,t=!1){let n=qT(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:JT(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?JT(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 XT({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 ZT({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:G(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:G(e.cacheReadInputTokens??e.cachedInputTokens,n)}),(e.cacheCreationInputTokens??0)>0&&(0,Q.jsxs)(`div`,{className:`muted text-caption`,children:[r(`usage.card.cacheWriteTokens`),`: `,G(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:PT(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:BT(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:zT(e.throughputTokensPerSec)?e.throughputTokensPerSec.toFixed(1):r(`usage.unavailable`)}),(0,Q.jsx)(`span`,{className:`muted text-caption`,children:BT(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:ud(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 QT({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":KT(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:VT(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:G(e.totalTokens,t)}),(0,Q.jsx)(`span`,{className:`daybar-label muted`,children:o})]},e.date)}),r&&o&&(0,Q.jsxs)(GT,{className:`daybar-tip`,anchor:r.anchor,children:[(0,Q.jsx)(`div`,{className:`daybar-tip-date`,children:UT(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:G(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:VT(e.model,e.provider)}}),(0,Q.jsx)(`span`,{className:`daybar-tip-name`,children:w_(e.model)}),(0,Q.jsx)(`span`,{className:`daybar-tip-val`,children:G(e.totalTokens,t)})]},`${e.provider}/${e.model}`))]})]})}function $T({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)(QT,{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":KT(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)?KT(o.find(e=>e.date===f),r,i):``}),l&&(()=>{let e=o.find(e=>e.date===l.date);return e?.date?(0,Q.jsxs)(GT,{className:`heatmap-tip`,anchor:l.anchor,children:[(0,Q.jsx)(`div`,{className:`heatmap-tip-date`,children:UT(e.date,r)}),(0,Q.jsx)(`div`,{className:`heatmap-tip-val`,children:i(`usage.heatmap.tooltipTokens`,{tokens:G(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 eE({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 tE({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=_e(e.provider,i),n=RT(e,r,i),a=BT(e,i);return(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{className:`mono`,title:e.model,children:w_(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:G(e.totalTokens,r)}),(0,Q.jsx)(`td`,{className:`num`,children:(0,Q.jsx)(FT,{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:G(e.inputTokens,r)}),(0,Q.jsx)(`td`,{className:`num mono`,children:G(e.outputTokens,r)}),(0,Q.jsxs)(`td`,{className:`num mono`,title:a,children:[(0,Q.jsx)(`span`,{className:`usage-hit-rate`,children:zT(e.throughputTokensPerSec)?`${e.throughputTokensPerSec.toFixed(1)} tok/s`:u}),zT(e.throughputTokensPerSec)&&(0,Q.jsx)(`span`,{className:`sr-only`,children:a})]}),(0,Q.jsx)(`td`,{className:`num mono`,children:IT(e.cacheReadInputTokens??e.cachedInputTokens,r,u)}),(0,Q.jsx)(`td`,{className:`num mono`,children:IT(e.cacheCreationInputTokens,r,u)}),(0,Q.jsxs)(`td`,{className:`num mono`,title:n,children:[(0,Q.jsx)(`span`,{className:`usage-hit-rate`,children:LT(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)(eE,{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 nE({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:_e(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:G(e.totalTokens,t)}),(0,Q.jsxs)(`td`,{className:`num mono`,title:BT(e,n),children:[(0,Q.jsx)(`span`,{className:`usage-hit-rate`,children:zT(e.throughputTokensPerSec)?`${e.throughputTokensPerSec.toFixed(1)} tok/s`:i}),zT(e.throughputTokensPerSec)&&(0,Q.jsx)(`span`,{className:`sr-only`,children:BT(e,n)})]}),(0,Q.jsx)(`td`,{className:`num`,children:(0,Q.jsx)(FT,{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)(eE,{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 rE({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)(eE,{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 iE({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)(ZT,{summary:e.summary,activeDays:r,locale:l,t:u}),(0,Q.jsx)($T,{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)(tE,{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)(nE,{providers:s,locale:l,t:u,workspace:!0}):null},{id:`coverage`,label:u(`usage.section.coverage`),meta:e?PT(e.summary.coverageRatio):`—`,body:e?(0,Q.jsx)(rE,{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)(NS,{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)(on,{title:u(`usage.empty`)}):f.map(e=>(0,Q.jsx)(`div`,{id:AS(`usage`,e.id),className:`usw-body usw-section-block`,children:e.body},e.id))})]})})}var aE=new Map;function oE(e,t,n,r,i,a){return`ocx.usage.v2:${e}:${r?`connected`:`standalone`}:${i}:${a??``}:${t}:${n}`}function sE(e,t,n,r,i,a){let o=oE(e,t,n,r,i,a);return aE.get(o)??Na(o)}function cE(e,t,n,r,i,a,o){let s=oE(e,t,n,r,i,a);aE.set(s,o),La(s,o)}function lE({apiBase:e,connected:t=!1,apiKeyId:n}){let{t:r,locale:i}=D(),[a,o]=(0,Z.useState)(AT);(0,Z.useEffect)(()=>{let e=()=>o(AT());return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[]);let[s,c]=(0,Z.useState)(`30d`),[l,u]=(0,Z.useState)(`all`),[d,f]=(0,Z.useState)(`machine`),[p,m]=(0,Z.useState)(``),[h,g]=(0,Z.useState)({since:``,until:``}),[_,v]=(0,Z.useState)(null),[y,b]=(0,Z.useState)(null),[x,S]=(0,Z.useState)(!1),C=_?.since,w=_?.until,T=()=>{v(null),g({since:``,until:``}),b(null)},E=e=>{c(e),T()},O=(0,Z.useCallback)(async r=>{let i=new URLSearchParams({range:s,surface:l});t&&d===`machine`&&n&&i.set(`apiKeyId`,n),C!==void 0&&w!==void 0&&(i.set(`since`,String(C)),i.set(`until`,String(w)));let a=await dr(await fetch(`${e}/api/usage?${i}`,{signal:r}));if(C!==void 0&&(a?.customWindow!==!0||a.since!==C||a.until!==w))throw new NT;return C===void 0&&cE(e,s,l,t,d,n,a),a},[e,n,t,s,d,l,C,w]),k=oE(e,s,l,t,d,n),A=_?JSON.stringify([k,C,w]):k,j=_?null:sE(e,s,l,t,d,n),M=za(A,[e,n,t,s,d,l,C,w],O,{isEmpty:()=>!1,initialData:j??void 0}),{state:N}=M,P=N.data??j??null,F=(0,Z.useMemo)(()=>YT(P?.days??[],!!_),[P?.days,_]),I=(0,Z.useMemo)(()=>HT(P?.days??[]),[P?.days]),L=(0,Z.useMemo)(()=>(P?.days??[]).filter(e=>e.requests>0).length,[P?.days]),R=(0,Z.useMemo)(()=>{let e=p.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,p]),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:r(`usage.title`)}),a===`report`&&(0,Q.jsx)(XT,{surface:l,range:_?null:s,onSurface:u,onRange:E,t:r})]}),(0,Q.jsx)(`div`,{className:`page-tabs`,role:`tablist`,"aria-label":r(`nav.usage`),children:[`report`,`companion`].map(e=>(0,Q.jsx)(`button`,{type:`button`,role:`tab`,id:`usage-tab-${e}`,"aria-selected":a===e,"aria-controls":`usage-panel-${e}`,tabIndex:a===e?0:-1,className:`page-tab${a===e?` page-tab--active`:``}`,onClick:()=>jT(e),onKeyDown:MT,children:r(e===`report`?`usage.workspace.report`:`usage.section.companion`)},e))}),a===`companion`?(0,Q.jsx)(`div`,{role:`tabpanel`,id:`usage-panel-companion`,"aria-labelledby":`usage-tab-companion`,children:(0,Q.jsx)(kT,{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:r(`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${_?` is-active`:``}`,"aria-expanded":x,"aria-controls":x?`usage-range-panel`:void 0,onClick:()=>{x&&b(null),S(!x)},children:[(0,Q.jsx)(`span`,{children:r(`usage.range.custom`)}),(0,Q.jsx)(Ue,{width:12,height:12,"aria-hidden":`true`,className:`usage-range-chevron`})]}),_&&(0,Q.jsx)(`p`,{className:`usage-range-applied muted text-control`,role:`status`,children:(()=>{let e=new Intl.DateTimeFormat(i,{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,fractionalSecondDigits:3,timeZoneName:`short`});return r(`usage.range.applied`,{start:e.format(_.since),end:e.format(_.until)})})()})]}),x&&(0,Q.jsxs)(`form`,{id:`usage-range-panel`,className:`usage-range-panel`,"aria-label":r(`usage.range.custom`),noValidate:!0,onSubmit:e=>{e.preventDefault();let t=cT(h.since,h.until);if(t.ok===!1){b(t.error);return}b(null),v(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:r(`usage.range.start`)}),(0,Q.jsx)(`input`,{className:`input`,type:`datetime-local`,step:`60`,required:!0,value:h.since,"aria-invalid":y!==null,"aria-describedby":y?`usage-range-help usage-range-error`:`usage-range-help`,onChange:e=>{let t=e.currentTarget.value;g(e=>({...e,since:t})),b(null)}})]}),(0,Q.jsxs)(`label`,{className:`usage-range-field`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:r(`usage.range.end`)}),(0,Q.jsx)(`input`,{className:`input`,type:`datetime-local`,step:`60`,required:!0,value:h.until,"aria-invalid":y!==null,"aria-describedby":y?`usage-range-help usage-range-error`:`usage-range-help`,onChange:e=>{let t=e.currentTarget.value;g(e=>({...e,until:t})),b(null)}})]}),(0,Q.jsx)(`button`,{type:`submit`,className:`btn btn-primary btn-sm usage-range-action`,children:r(`usage.range.apply`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm usage-range-action`,onClick:T,children:r(`usage.range.clear`)})]}),(0,Q.jsx)(`p`,{id:`usage-range-help`,className:`muted text-caption`,children:r(`usage.range.help`)}),y&&(0,Q.jsx)(`p`,{id:`usage-range-error`,role:`alert`,className:`notice notice-err`,children:r(`usage.range.${y}`)})]})]}),t&&(0,Q.jsxs)(`div`,{className:`usage-source-row`,children:[(0,Q.jsx)(`span`,{children:r(`usage.source.connected`)}),(0,Q.jsxs)(`div`,{className:`usage-scope-control`,role:`group`,"aria-label":r(`usage.scope.label`),children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm${d===`machine`?` btn-primary`:` btn-ghost`}`,"aria-pressed":d===`machine`,onClick:()=>f(`machine`),children:r(`usage.scope.machine`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm${d===`hub`?` btn-primary`:` btn-ghost`}`,"aria-pressed":d===`hub`,onClick:()=>f(`hub`),children:r(`usage.scope.hub`)})]})]}),N.showSkeleton&&!P?(0,Q.jsx)(Gv,{label:r(`usage.loading`),rows:5}):N.kind===`failed-cold`?(0,Q.jsxs)($,{tone:`err`,children:[N.error instanceof NT?`${r(`usage.loadError`)} ${r(`dash.codexRestartMalformed`)}`:N.error instanceof ur?r(`usage.loadError`):t?r(`usage.hubOffline`):N.error instanceof Error?`${r(`usage.loadError`)} ${N.error.message}`:r(`usage.loadError`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>M.refresh(),children:r(`common.retry`)})]}):(0,Q.jsxs)(Q.Fragment,{children:[N.showError&&(0,Q.jsx)($,{tone:`err`,children:r(t&&!(N.error instanceof ur)?`usage.hubOffline`:`usage.loadError`)}),(0,Q.jsx)(pr,{data:P}),P?.historyTruncated&&(0,Q.jsx)($,{tone:`warn`,children:(()=>{let e=uE(P.snapshotWindowStart),t=uE(P.snapshotWindowEnd);return e!==null&&t!==null?r(`usage.historyTruncatedWindow`,{start:e,end:t}):r(`usage.historyTruncated`)})()}),(0,Q.jsx)(iE,{data:P,heatmap:F,weekBars:I,activeDays:L,filteredModels:R,modelQuery:p,onModelQuery:m,sortedProviders:z,range:_?null:s,locale:i,t:r})]})]})]})}function uE(e){if(typeof e!=`number`||!Number.isFinite(e))return null;let t=new Date(e);return Number.isFinite(t.getTime())?t.toLocaleString():null}function dE(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 fE={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 pE(e,t){return fE[e][t]}var mE={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 hE(e,t){return mE[e][t]}var gE={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 _E(e,t){return gE[e].schema[t]}function vE(e,t){return gE[e].protection[t]}function yE(e,t){return gE[e].mode[t]}var bE={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 xE(e,t){let n=bE[e.key];return n?t(n):e.label}function SE(e,t){return e===void 0?`—`:new Date(e).toLocaleDateString(t)}function CE(e,t,n){return e.rows===void 0?`—`:e.rows===null?n(`storage.rows.unknown`):e.rows.toLocaleString(t)}function wE(e,t){switch(t){case`codex_running`:return hE(e,`error.codex_running`);case`process_enumeration_failed`:return hE(e,`error.process_enumeration_failed`);case`busy`:return hE(e,`error.busy`);case`unsupported_schema`:return hE(e,`error.unsupported_schema`);case`trigger_collision`:return pE(e,`error.trigger_collision`);case`unsafe_path`:return hE(e,`error.unsafe_path`);case`database_error`:return hE(e,`error.database_error`);case`auto_vacuum_not_incremental`:return hE(e,`error.auto_vacuum_not_incremental`);case`integrity_check_failed`:return hE(e,`error.integrity_check_failed`);case`config_write_failed`:return pE(e,`error.config_write_failed`);default:return hE(e,`error.generic`)}}function TE({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:_E(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:pE(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:dE(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:dE(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:dE(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:dE(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:pE(t,`metricsSkippedLarge`).replace(`{threshold}`,dE(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?pE(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:pE(t,`protection`)}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`span`,{className:`muted`,children:(0,Q.jsx)(`code`,{children:vE(t,l.state)})}),(0,Q.jsxs)(`span`,{className:`stw-kv-mono`,children:[(0,Q.jsx)(`code`,{children:yE(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:yE(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:pE(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:pE(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:pE(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:pE(t,`repair`)}),r&&(0,Q.jsx)(`span`,{className:`muted`,role:`status`,children:hE(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:pE(t,`confirmCompact`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:r,onClick:()=>p(!1),children:pE(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:pE(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 EE({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:pE(e,`inspectionUnavailable`)})]})}function DE({report:e,locale:t,apiBase:n=``,logGuardBusy:r=!1,onLogGuardAction:a}){let o=i(),[s,c]=(0,Z.useState)(null),[l,u]=(0,Z.useState)(null),[d,f]=(0,Z.useState)(!1),[p,m]=(0,Z.useState)(null),[h,g]=(0,Z.useState)(null),_=(0,Z.useMemo)(()=>e.buckets.toSorted((e,t)=>t.bytes-e.bytes),[e.buckets]),v=_.find(e=>e.key===s)??null,y=l?.generation===e.generatedAt?l.report:e.codexLogs??null,b=p?.generation===e.generatedAt?p.message:null,x=h?.generation===e.generatedAt?h.summary:null,S=r||d,C=(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]),w=(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":o(`storage.section.buckets`),children:[(0,Q.jsxs)(`div`,{className:`storage-workspace-rail-header`,children:[(0,Q.jsx)(`span`,{className:`storage-workspace-rail-title`,children:o(`storage.section.buckets`)}),(0,Q.jsx)(`span`,{className:`storage-workspace-rail-count`,children:_.length})]}),(0,Q.jsx)(`div`,{className:`storage-workspace-rail-list`,children:_.length===0?(0,Q.jsx)(`span`,{className:`storage-workspace-rail-empty`,children:o(`storage.empty`)}):_.map(e=>(0,Q.jsxs)(`button`,{type:`button`,className:`storage-workspace-rail-row${s===e.key?` storage-workspace-rail-row--selected`:``}`,onClick:()=>c(t=>t===e.key?null:e.key),"aria-current":s===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:xE(e,o)}),(0,Q.jsx)(`span`,{className:`storage-workspace-rail-size`,children:dE(e.bytes,t)})]}),(0,Q.jsxs)(`span`,{className:`storage-workspace-rail-meta`,children:[e.fileCount.toLocaleString(t),` `,o(`storage.col.files`).toLowerCase()]})]},e.key))})]}),(0,Q.jsx)(`section`,{className:`storage-workspace-main`,"aria-label":v?xE(v,o):o(`storage.section.largest`),children:v?(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:()=>c(null),children:[(0,Q.jsx)(Ue,{className:`stw-detail-back-chevron`,"aria-hidden":`true`}),o(`modal.back`)]})}),(0,Q.jsxs)(`div`,{className:`stw-detail-body`,children:[(0,Q.jsx)(`h2`,{className:`stw-detail-title`,children:xE(v,o)}),(0,Q.jsxs)(`dl`,{className:`stw-kv`,children:[(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:o(`storage.col.size`)}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:dE(v.bytes,t)})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:o(`storage.col.files`)}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:v.fileCount.toLocaleString(t)})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:o(`storage.col.oldest`)}),(0,Q.jsx)(`dd`,{children:SE(v.oldest,t)})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:o(`storage.col.newest`)}),(0,Q.jsx)(`dd`,{children:SE(v.newest,t)})]}),(0,Q.jsxs)(`div`,{className:`stw-kv-row`,children:[(0,Q.jsx)(`dt`,{children:o(`storage.col.rows`)}),(0,Q.jsx)(`dd`,{className:`stw-kv-mono`,children:CE(v,t,o)})]})]}),(v.largest?.length??0)>0&&(0,Q.jsxs)(`div`,{className:`stw-section`,children:[(0,Q.jsx)(`h3`,{className:`stw-section-title`,children:o(`storage.section.largest`)}),v.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:dE(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:o(`storage.card.total`)}),(0,Q.jsx)(`div`,{className:`stw-summary-value`,children:dE(e.total.bytes,t)})]}),(0,Q.jsxs)(`div`,{className:`stw-summary-card`,children:[(0,Q.jsx)(`div`,{className:`stw-summary-label`,children:o(`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:o(`storage.card.home`)}),(0,Q.jsx)(`div`,{className:`stw-summary-value mono stw-home-path`,title:e.codexHome,children:e.codexHome})]})]}),y?(0,Q.jsx)(TE,{report:y,locale:t,t:o,busy:S,error:b,compaction:x,onAction:r=>{if(a){a(r);return}if(d)return;let i=e.generatedAt;(async()=>{f(!0),m(null),r.action===`compact`&&g(null);try{let e=r.action===`protect`?`protect`:r.action,a={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}`,a);if(!o.ok){let e=await o.json().catch(()=>({}));m({generation:i,message:wE(t,e.error)});return}if(r.action===`compact`){let e=(await o.json().catch(()=>null))?.report;if(e){let n=dE(e.logicalBytesReclaimed??0,t),r=dE(e.physicalDatabaseBytesReclaimed??0,t),a=e.complete?pE(t,`compactComplete`):pE(t,`compactPartial`),o=e.pagesReclaimed??0,s=!e.complete&&e.stopReason?` (${e.stopReason})`:``;g({generation:i,summary:[`${a}${s}`,`${o.toLocaleString(t)} ${pE(t,`pagesUnit`)}`,`${n} / ${r}`].join(` — `)})}try{let e=await fetch(`${n}/api/storage/codex-logs`);if(e.ok){let t=await e.json();u({generation:i,report:t})}}catch{}return}let s=await o.json();u({generation:i,report:s})}catch{m({generation:i,message:hE(t,`error.generic`)})}finally{f(!1)}})()}}):e.codexLogsError===`inspect_failed`?(0,Q.jsx)(EE,{locale:t,t:o}):null,C.length>0?(0,Q.jsxs)(`div`,{className:`stw-section`,children:[(0,Q.jsx)(`h3`,{className:`stw-section-title`,children:o(`storage.section.largest`)}),C.map(e=>{let n=w.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:xE(n,o)}),(0,Q.jsx)(`span`,{className:`stw-file-size`,children:dE(e.bytes,t)})]},`${e.bucketKey}:${e.path}`)})]}):(0,Q.jsxs)(`p`,{className:`stw-hint`,children:[(0,Q.jsx)(Ae,{style:{width:14,height:14,verticalAlign:`text-bottom`,marginRight:6},"aria-hidden":`true`}),o(`storage.workspace.selectBucket`)]})]})})]})}var OE=1024**3,kE=[10,25,50],AE=(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 jE({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){_(AE(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:dE(a.bytes,t)});h(a.skippedReferencedPaths?.length?`${s} ${n(`storage.cleanup.skippedReferenced`,{count:String(a.skippedReferencedPaths.length)})}`:s),r()}catch(e){_(AE(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:kE.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:dE(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 ME({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=za(`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:dE(a.bytes,t)})),r()}catch(e){p(AE(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)(Kv,{live:!y.showError,children:n(`storage.trash.loading`)}),y.showSkeleton?(0,Q.jsx)(Gv,{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:dE(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:dE(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 NE(e){let{job:t,...n}=e;return n}function PE(e){let t=String(Math.max(0,Math.round(e.trigger.archivedBytesOver/OE*100)/100));return e.target.reduceToBytes===void 0?{policy:NE(e),thresholdGb:t,targetMode:`percent`,percent:String(Math.min(100,Math.max(1,Math.floor(e.target.removeOldestPercent??25)))),reduceGb:`4`}:{policy:NE(e),thresholdGb:t,targetMode:`reduce`,percent:`25`,reduceGb:String(Math.max(0,Math.round(e.target.reduceToBytes/OE*100)/100))}}async function FE(e){await new Promise(t=>window.setTimeout(t,e))}function IE({apiBase:e,locale:t,t:n,onDone:r}){let i=`ocx.storage.cleanup-policy.v1:${e}`,a=Na(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=PE(e);c(t.policy),E(t.thresholdGb),b(t.targetMode),S(t.percent),w(t.reduceGb),o.current=!0,La(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*OE)}}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*OE)},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 FE(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=NE(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:dE(f.freedBytes??0,t)}):n(`storage.policy.doneQuarantine`,{count:String(f.removed??0),size:dE(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)(Ic,{disabled:d||p,incrementLabel:n(`storage.policy.thresholdInc`),decrementLabel:n(`storage.policy.thresholdDec`),onIncrement:()=>{M(),E(Fc(T,.1,0,1e4,.1))},onDecrement:()=>{M(),E(Fc(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)(Ic,{disabled:d||p,incrementLabel:n(`storage.policy.percentInc`),decrementLabel:n(`storage.policy.percentDec`),onIncrement:()=>{M(),S(Fc(x,1,1,100))},onDecrement:()=>{M(),S(Fc(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)(Ic,{disabled:d||p,incrementLabel:n(`storage.policy.reduceInc`),decrementLabel:n(`storage.policy.reduceDec`),onIncrement:()=>{M(),w(Fc(C,.1,0,1e4,.1))},onDecrement:()=>{M(),w(Fc(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:dE(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 LE({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)(IE,{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)(jE,{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)(ME,{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 RE({apiBase:e}){let{t,locale:n}=D(),r=`ocx.storage.report.v1:${e}`,i=Na(r),[a,o]=(0,Z.useState)(null),[s,c]=(0,Z.useState)(0),l=(0,Z.useRef)(!1),[u,d]=(0,Z.useState)({apiBase:e,settled:!1,hasEntries:!1}),f=(0,Z.useCallback)(async n=>{try{let i=await fetch(`${e}/api/storage`,{signal:n});if(!i.ok)throw Error(t(`storage.error`));let a=await i.json();return La(r,a),l.current&&(l.current=!1,o(t(`storage.rescanned`))),a}catch(e){throw l.current&&(l.current=!1,o(t(`storage.error`))),n.aborted?e:Error(t(`storage.error`),{cause:e})}},[e,r,t]),p=za(`storage-report:${e}`,[e],f,{isEmpty:e=>e.total.fileCount===0&&e.error===void 0}),m=p.state,h=m.data??i,g=m.refreshing||m.showSkeleton&&!h,_=p.refresh,v=(0,Z.useCallback)(()=>{o(null),l.current=!0,_(),c(e=>e+1)},[_]),y=(0,Z.useCallback)(t=>{d({apiBase:e,settled:!0,hasEntries:t.length>0})},[e]),b=u.apiBase===e&&u.settled,x=u.apiBase===e&&u.hasEntries,S=h?.error!==void 0,C=!g&&!m.showError&&!S&&h.total.fileCount===0&&b&&!x,w=h?.buckets.find(e=>e.key===`archived_sessions`)?.fileCount??0,T=!!h&&!S,E=T&&(h.total.fileCount>0||!b||x);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`page-head`,children:[(0,Q.jsx)(`h2`,{id:`storage-page-title`,children:t(`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:a??``}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:g,onClick:()=>void v(),children:[(0,Q.jsx)(Fe,{}),` `,t(`storage.refresh`)]})]})]}),(0,Q.jsx)(`p`,{className:`page-sub`,children:t(`storage.subtitle`)}),h&&h.error===void 0&&(0,Q.jsxs)(`p`,{className:`storage-page-meta`,children:[(0,Q.jsx)(`code`,{className:`mono storage-page-meta__home`,title:h.codexHome,children:h.codexHome}),(0,Q.jsx)(`span`,{className:`storage-page-meta__sep`,"aria-hidden":`true`,children:`·`}),(0,Q.jsxs)(`span`,{children:[t(`storage.snapshot.lastScan`),`:`,` `,new Date(h.generatedAt).toLocaleString(n)]})]}),m.showSkeleton&&!h?(0,Q.jsx)(Gv,{label:t(`storage.loading`),rows:5}):m.kind===`failed-cold`&&!h?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`alert alert-err`,role:`alert`,children:m.error instanceof Error?m.error.message:t(`storage.error`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>_(),children:t(`common.retry`)})]}):S?(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsx)(`div`,{className:`alert alert-err`,role:`alert`,children:t(`storage.error`)})}):(0,Q.jsxs)(Q.Fragment,{children:[m.showError&&(0,Q.jsx)(`div`,{className:`alert alert-err`,role:`alert`,children:t(`storage.error`)}),C?(0,Q.jsx)(on,{title:t(`storage.empty`)}):h&&h.total.fileCount>0&&(0,Q.jsx)(DE,{report:h,locale:n,apiBase:e})]}),h&&h.error===void 0&&m.refreshing&&!m.showSkeleton&&(0,Q.jsx)(Kv,{live:!m.showError,children:t(`storage.loading`)}),T&&(0,Q.jsx)(LE,{apiBase:e,locale:n,t,archivedCount:w,showQuarantine:E,trashReloadToken:s,onDone:()=>void v(),onTrashEntriesChange:y})]})}var zE=`/api/codex-auth/features/default-mode-request-user-input`;function BE({apiBase:e}){let t=i(),[n,r]=(0,Z.useState)(!1),[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)(!1),m=(0,Z.useRef)(!1),h=(0,Z.useRef)(0),g=(0,Z.useCallback)(async()=>{if(p.current)return;let t=++h.current,n=T(15e3);try{let i=await fetch(`${e}${zE}`,{signal:n.signal});if(!i.ok)throw Error(`load`);let a=await i.json();if(p.current||t!==h.current)return;m.current=a.enabled===!0,r(m.current),o(!0),u(!1)}catch{!p.current&&t===h.current&&u(!0)}finally{n.clear()}},[e]);(0,Z.useEffect)(()=>{let e=window.setTimeout(()=>{g()},0),t=ra(()=>{g()},3e4);return()=>{window.clearTimeout(e),t()}},[g]);let _=(0,Z.useCallback)(async()=>{if(p.current||!a||l)return;let n=!m.current,i=m.current;m.current=n,r(n),p.current=!0,c(!0),f(null),h.current++;try{let i=await fetch(`${e}${zE}`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({enabled:n})}),a=await fn(i)??{};if(a.ok!==!0)throw Error(String(i.status));m.current=a.enabled===!0,r(m.current),o(!0),f({tone:`ok`,message:t(a.changed===!0?`codexAuth.requestUserInputUpdatedRestart`:`codexAuth.requestUserInputUpdated`)})}catch(e){m.current=i,r(i);let n=e instanceof Error&&e.message&&!/^HTTP \d{3}$/.test(e.message)?e.message:t(`codexAuth.requestUserInputUpdateFailed`);f({tone:`err`,message:n})}finally{p.current=!1,c(!1)}},[e,a,l,t]),v=s||!a||l;return(0,Q.jsxs)(`div`,{className:`card card-row codex-request-user-input-card`,style:{marginTop:16},"aria-busy":s||!a&&!l||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:l?`alert`:void 0,children:t(l?`codexAuth.requestUserInputLoadFailed`:`codexAuth.requestUserInputDesc`)}),(0,Q.jsx)(`code`,{className:`mono codex-request-user-input-config`,children:`[features]
8
- default_mode_request_user_input = true`})]}),(0,Q.jsxs)(`div`,{className:`codex-request-user-input-controls`,children:[l&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{g()},children:t(`common.retry`)}),(0,Q.jsx)(`button`,{type:`button`,className:`toggle ${n?`on`:``}`,onClick:()=>{_()},disabled:v,"aria-pressed":n,"aria-label":t(`codexAuth.requestUserInput`),title:t(`codexAuth.requestUserInput`),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})})]}),d&&(0,Q.jsx)(`div`,{className:`codex-request-user-input-feedback${d.tone===`err`?` is-error`:``}`,role:d.tone===`err`?`alert`:`status`,"aria-atomic":`true`,children:d.message})]})}function VE({apiBase:e}){let t=i(),[n,r]=(0,Z.useState)(!1),[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)(!1),m=(0,Z.useRef)(0),h=(0,Z.useCallback)(async()=>{if(p.current)return;let t=++m.current,n=T(15e3);try{let i=await fetch(`${e}/api/settings`,{signal:n.signal});if(!i.ok)throw Error(`load`);let a=await i.json();if(p.current||t!==m.current)return;r(a.ultraFastTier===!0),o(!0),u(!1)}catch{!p.current&&t===m.current&&u(!0)}finally{n.clear()}},[e]);(0,Z.useEffect)(()=>{let e=window.setTimeout(()=>{h()},0),t=ra(()=>{h()},3e4);return()=>{window.clearTimeout(e),t()}},[h]);let g=(0,Z.useCallback)(async()=>{if(p.current||!a||l)return;let i=!n;p.current=!0,c(!0),f(null),r(i);let o=T(15e3);try{let n=await fetch(`${e}/api/settings`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({ultraFastTier:i}),signal:o.signal});if(!n.ok)throw Error(`save`);let a=await n.json(),s=typeof a.ultraFastTier==`boolean`?a.ultraFastTier:i;r(s),f({tone:`ok`,message:t(s?`codexAuth.ultraFastEnabled`:`codexAuth.ultraFastDisabled`)})}catch{r(!i),f({tone:`err`,message:t(`codexAuth.ultraFastFailed`)})}finally{o.clear(),p.current=!1,c(!1)}},[e,n,a,l,t]),_=s||!a||l;return(0,Q.jsxs)(`div`,{className:`card card-row codex-ultrafast-card`,style:{marginTop:16},"aria-busy":s||!a&&!l||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:l?`alert`:void 0,children:t(l?`codexAuth.ultraFastLoadFailed`:`codexAuth.ultraFastDesc`)})]}),(0,Q.jsxs)(`div`,{className:`codex-ultrafast-controls`,children:[l&&(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.ultraFastTitle`),title:t(`codexAuth.ultraFastTitle`),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})})]}),d&&(0,Q.jsx)(`div`,{className:`codex-ultrafast-feedback${d.tone===`err`?` is-error`:``}`,role:d.tone===`err`?`alert`:`status`,"aria-atomic":`true`,children:d.message})]})}function HE(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`);return t}function UE({pending:e,thresholds:t,onCancel:n,onConfirm:r}){let a=i(),o=(0,Z.useId)(),s=(0,Z.useRef)(null),c=(0,Z.useRef)(null),l=(0,Z.useRef)(null);return(0,Z.useEffect)(()=>{let e=s.current;return e&&!e.open&&e.showModal(),c.current?.focus(),()=>{e?.open&&e.close()}},[]),(0,Q.jsxs)(`dialog`,{ref:s,className:`modal-overlay`,"aria-labelledby":`${o}-title`,"aria-describedby":`${o}-body`,"aria-busy":e||void 0,onCancel:e=>{e.preventDefault(),n()},onKeyDown:t=>{if(t.key!==`Tab`||e)return;let n=t.shiftKey?c.current:l.current,r=t.shiftKey?l.current:c.current;document.activeElement===n&&(t.preventDefault(),r?.focus())},children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,tabIndex:-1,"aria-label":a(`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:`${o}-title`,children:a(`codexAuth.mainHardLockConfirmTitle`,t)}),(0,Q.jsx)(`p`,{id:`${o}-body`,className:`modal-desc`,children:a(`codexAuth.mainHardLockConfirmBody`)}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{ref:c,type:`button`,className:`btn btn-ghost`,disabled:e,onClick:n,children:a(`codexAuth.cancel`)}),(0,Q.jsx)(`button`,{ref:l,type:`button`,className:`btn btn-primary`,disabled:e,onClick:r,children:a(e?`common.saving`:`codexAuth.mainHardLockConfirm`)})]})]})]})}function WE(e){return(0,Q.jsx)(GE,{...e},e.apiBase)}function GE({apiBase:e,onSaved:t}){let n=i(),r=(0,Z.useId)(),[a,o]=(0,Z.useState)(null),[s,c]=(0,Z.useState)(!1),[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=(0,Z.useRef)(!1),b=(0,Z.useRef)(!1),x=(0,Z.useRef)(0),S=(0,Z.useRef)(null),C=(0,Z.useRef)(null),w=(0,Z.useRef)(null),E=(0,Z.useRef)(!1),D=(0,Z.useCallback)(async()=>{if(y.current)return;let t=++x.current;S.current?.abort();let n=T(15e3);S.current=n.controller;try{let r=await fetch(`${e}/api/settings`,{signal:n.signal});if(!r.ok)throw Error(`load`);let i=HE(await r.json());if(!b.current||t!==x.current)return;o(i),c(!1),m(null)}catch{b.current&&t===x.current&&c(!0)}finally{n.clear()}},[e]);(0,Z.useEffect)(()=>{b.current=!0;let e=window.setTimeout(()=>{D()},0),t=ra(()=>{D()},3e4);return()=>{b.current=!1,x.current+=1,S.current?.abort(),window.clearTimeout(e),t()}},[D]),(0,Z.useEffect)(()=>{_||h||!E.current||(C.current&&!C.current.disabled?(C.current.focus(),E.current=!1):w.current?.focus())},[_,h,s,a]);let O=async()=>{let e=!1;try{e=await t()}catch{}b.current&&f(!e)},k=async t=>{if(y.current||!a)return;y.current=!0,x.current+=1,S.current?.abort(),g(!0),u(!1),f(!1),m(null);let n=T(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 a=await i.json();if(!a||typeof a!=`object`||!(`ok`in a)||a.ok!==!0)throw Error(`unconfirmed`);let s=HE(a);r=!0,b.current&&(o(s),c(!1),m(s.codexMainAccountHardLock))}catch{b.current&&(u(!0),c(!0))}finally{n.clear()}r&&await O(),y.current=!1,b.current&&(g(!1),v(!1),r||D())},A=()=>{y.current||v(!1)},j=async()=>{y.current||(y.current=!0,x.current+=1,g(!0),await O(),y.current=!1,b.current&&g(!1))},M=a?.codexMainAccountHardLock,N=Xl(a?.mainAccountHardLock.thresholds);return(0,Q.jsxs)(`section`,{ref:w,id:`codex-main-hard-lock-setting`,tabIndex:-1,className:`card card-row codex-main-hard-lock-setting`,"aria-labelledby":`${r}-title`,"aria-busy":h||!a&&!s||void 0,onBlurCapture:e=>{e.relatedTarget!==null&&!e.currentTarget.contains(e.relatedTarget)&&(E.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`,N)}),(0,Q.jsx)(`div`,{id:`${r}-desc`,className:`card-sub`,children:n(`codexAuth.mainHardLockDesc`,N)})]}),(0,Q.jsx)(`button`,{ref:C,type:`button`,className:`toggle ${M===!0?`on`:``}`,disabled:h||M===void 0||s,"aria-pressed":M,"aria-label":n(`codexAuth.mainHardLockTitle`,N),"aria-describedby":`${r}-desc`,onClick:()=>{y.current||M===void 0||s||(E.current=!0,M?k(!1):v(!0))},children:(0,Q.jsx)(`span`,{className:`toggle-knob`})}),(0,Q.jsxs)(`div`,{className:`codex-main-hard-lock-feedback`,children:[a?.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`)})}),(l||s)&&(0,Q.jsxs)(`p`,{role:`alert`,children:[n(l?`codexAuth.mainHardLockSaveFailed`:`codexAuth.mainHardLockLoadFailed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,disabled:h,onClick:()=>{D()},children:n(`common.retry`)})]}),p!==null&&!d&&(0,Q.jsx)(`p`,{role:`status`,children:n(p?`codexAuth.mainHardLockEnabled`:`codexAuth.mainHardLockDisabled`,N)}),d&&(0,Q.jsxs)(`p`,{role:`status`,children:[n(`codexAuth.mainHardLockRefreshFailed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,disabled:h,onClick:()=>{j()},children:n(`common.retry`)})]})]}),_&&(0,Q.jsx)(UE,{pending:h,thresholds:N,onCancel:A,onConfirm:()=>{k(!0)}})]})}function KE({apiBase:e}){let t=i(),[n,r]=(0,Z.useState)(!1),[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)(!1),m=(0,Z.useRef)(!1),h=(0,Z.useRef)(0),g=(0,Z.useCallback)(async()=>{if(m.current)return;let t=++h.current,n=T(15e3);try{let i=await fetch(`${e}/api/settings`,{signal:n.signal});if(!i.ok)throw Error(`load`);let a=await i.json();if(m.current||t!==h.current)return;if(typeof a.codexAccountPickerEnabled!=`boolean`)throw Error(`shape`);p.current=a.codexAccountPickerEnabled,r(a.codexAccountPickerEnabled),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=ra(()=>{g()},3e4);return()=>{window.clearTimeout(e),t()}},[g]);let _=(0,Z.useCallback)(async()=>{if(m.current||!a)return;let n=p.current,i=!n;p.current=i,r(i),m.current=!0,c(!0),f(null),h.current+=1;try{let n=await fn(await fetch(`${e}/api/settings`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({codexAccountPickerEnabled:i})}))??{};if(n.ok!==!0||typeof n.codexAccountPickerEnabled!=`boolean`)throw Error(`unconfirmed`);p.current=n.codexAccountPickerEnabled,r(n.codexAccountPickerEnabled),o(!0),u(!1),f(n.catalogRefreshPending===!0?{tone:`warn`,message:t(`codexAuth.catalogRefreshPending`)}:{tone:`ok`,message:t(`codexAuth.accountPickerUpdated`)})}catch{p.current=n,r(n),f({tone:`err`,message:t(`codexAuth.accountPickerUpdateFailed`)})}finally{m.current=!1,c(!1)}},[e,a,t]),v=l&&!a;return(0,Q.jsxs)(`div`,{className:`card card-row codex-account-picker-card`,"aria-busy":s||!a&&!v||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:v?`status`:void 0,children:t(v?`codexAuth.accountPickerLoadFailed`:a?n?`codexAuth.accountPickerOnDesc`:`codexAuth.accountPickerOffDesc`:`common.loading`)}),a&&n&&(0,Q.jsx)(`div`,{className:`card-sub faint`,children:t(`codexAuth.accountPickerCompatibility`)}),a&&l&&(0,Q.jsx)(`div`,{className:`card-sub faint`,role:`status`,children:t(`codexAuth.accountPickerRefreshFailed`)})]}),(0,Q.jsxs)(`div`,{className:`codex-account-picker-controls`,children:[l&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>{g()},disabled:s,children:t(`common.retry`)}),a&&(0,Q.jsx)(`button`,{type:`button`,className:`toggle ${n?`on`:``}`,onClick:()=>{_()},disabled:s,"aria-pressed":n,"aria-label":t(`codexAuth.accountPickerTitle`),title:t(`codexAuth.accountPickerTitle`),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})})]}),d&&(0,Q.jsx)(`div`,{className:`codex-account-picker-feedback is-${d.tone}`,role:d.tone===`err`?`alert`:`status`,"aria-atomic":`true`,children:d.message})]})}function qE(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 JE({state:e,busy:t,onEnable:n}){let r=i();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:()=>Wt(`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:()=>Wt(`providers`),children:r(`codexAuth.openProviders`)})]})]})}function YE(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 XE({apiBase:e}){return(0,Q.jsx)(ZE,{apiBase:e},e)}function ZE({apiBase:e}){let t=i(),n=eu(e),{load:r}=n,a=(0,Z.useRef)(!1);(0,Z.useLayoutEffect)(()=>(a.current=!0,()=>{a.current=!1}),[]);let o=(0,Z.useCallback)(()=>a.current?r(!1):Promise.resolve(!1),[r]),s=`ocx.codex-auth.config.v1:${e}`,c=Na(s),[l,u]=(0,Z.useState)(()=>c?.bannerState??null),[d,f]=(0,Z.useState)(()=>c?.accountModeState??null),p=(0,Z.useRef)(null),[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(``),v=(0,Z.useCallback)(async()=>{let t=T(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=gp(YE(r));if(i===`absent`||i===`disabled`||i===`invalid`){u(i);let e=i===`disabled`?`disabled`:`absent`;f(e),La(s,{bannerState:i,accountModeState:e});return}let a=qE(r);u(a),f(a),La(s,{bannerState:a,accountModeState:a})}catch{}finally{t.clear()}},[e,s]);(0,Z.useEffect)(()=>{p.current!==e&&(p.current=e,Promise.resolve().then(()=>{v()}));let t=ra(()=>{v()},3e4);return()=>{t()}},[e,v]);let y=async()=>{h(!0),_(``);try{if(l!==`absent`&&l!==`disabled`)return;await Cp(e,l),await v()}catch(e){e instanceof Sp?_(t(e.i18nKey)):_(e instanceof Error?e.message:t(`prov.saveFailed`))}finally{h(!1)}};return(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsx)(Pd,{apiBase:e,controller:n,hasMainHardLockSetting:!0,accountModeState:d,banner:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(JE,{state:l,busy:m,onEnable:()=>{y()}}),g&&(0,Q.jsx)(`div`,{className:`notice notice-err`,role:`alert`,children:g})]}),advancedExtras:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(KE,{apiBase:e}),(0,Q.jsx)(BE,{apiBase:e}),(0,Q.jsx)(VE,{apiBase:e}),(0,Q.jsx)(WE,{apiBase:e,onSaved:o})]})})})}var QE={"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`},$E={"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`},eD={"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`},tD={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 nD({descriptor:e,toggle:t,bytes:n,transitionOnly:r=!1,busy:a,writesRefused:o,onToggle:s,onSelectBase:c,baseSelection:l,onOpen:u}){let d=i(),f=QE[e.id],p=f?d(f):e.id,m=eD[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:a||o||l?.kind===`external`,onClick:()=>{c(!g)},children:(0,Q.jsx)(`span`,{className:`toggle-knob`})}):e.class===`config-toggle`?(0,Q.jsx)(`button`,{type:`button`,role:`switch`,className:`toggle ${h?`on`:``}`,"aria-checked":h,"aria-label":p,disabled:a||o,onClick:()=>{s(e.id,!h)},children:(0,Q.jsx)(`span`,{className:`toggle-knob`})}):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:()=>Wt(`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 rD({descriptor:e,toggle:t,text:n,busy:r,onToggle:a,onClose:o}){let s=i(),c=(0,Z.useRef)(null),l=`codex-set-layer-dialog-`+e.id;(0,Z.useEffect)(()=>{let e=c.current,t=document.activeElement;return e&&!e.open&&e.showModal(),()=>{e?.open&&e.close(),t&&typeof t.focus==`function`&&t.focus()}},[]);let u=(0,Z.useCallback)(e=>{e.preventDefault(),o()},[o]),d=tD[e.class],f=QE[e.id],p=$E[e.id],m=eD[e.id];return(0,Q.jsxs)(`dialog`,{ref:c,className:`modal-overlay`,"aria-labelledby":l,onCancel:u,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":s(`common.close`),tabIndex:-1,onClick:o}),(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:l,children:f?s(f):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":f?s(f):e.id,disabled:r,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:o,children:s(`common.close`)})]}),(0,Q.jsx)(`p`,{className:`muted small`,children:s(p||`codexSet.dialog.unknownLayer`)}),(0,Q.jsxs)(`div`,{className:`codex-set-layer-dialog__line`,children:[(0,Q.jsx)(`span`,{className:`muted text-label`,children:s(`codexSet.dialog.class`)}),(0,Q.jsx)(`span`,{children:s(d)})]}),e.key&&(0,Q.jsxs)(`div`,{className:`codex-set-layer-dialog__line`,children:[(0,Q.jsx)(`span`,{className:`muted text-label`,children:s(`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:s(`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:s(`codexSet.dialog.fileValue`)}),(0,Q.jsx)(`span`,{children:t.userFileValue===null?s(`codexSet.dialog.absentDefault`,{value:String(t.default)}):s(`codexSet.dialog.setValue`,{value:String(t.userFileValue),fallback:String(t.default)})})]}),e.class===`runtime-conditional`&&m&&(0,Q.jsx)(`p`,{className:`muted small`,children:s(m)}),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:s(`codexSet.dialog.sourceText`)}),(0,Q.jsx)(`span`,{className:`muted small`,children:s(`codexSet.dialog.sourceBytes`,{bytes:n.bytes})})]}),(0,Q.jsx)(`pre`,{className:`api-code codex-set-layer-dialog__text`,children:n.text})]}):(0,Q.jsx)(`p`,{className:`muted small codex-set-layer-dialog__no-text`,children:n?.reason===`empty-source`?s(`codexSet.dialog.emptySource`,{path:n.sourcePath??``}):n?.reason===`not-rendered`?s(`codexSet.dialog.notRendered`):n?.reason===`unmapped`?s(`codexSet.dialog.unmapped`):n?.reason===`not-exposed`?s(`codexSet.dialog.notExposed`):s(`codexSet.dialog.textUnavailable`)})]})]})}function iD({layer:e,index:t,total:n,busy:r,onToggle:a,onEdit:o,onDelete:s,onMove:c}){let l=i();return(0,Q.jsxs)(`li`,{className:`codex-set-prompt__row codex-set-custom__row`,"data-custom-id":e.id,onKeyDown:i=>{!i.altKey||r||(i.key===`ArrowUp`&&t>0?(i.preventDefault(),c(e.id,-1)):i.key===`ArrowDown`&&t<n-1&&(i.preventDefault(),c(e.id,1)))},children:[(0,Q.jsx)(`span`,{className:`codex-set-prompt__pos`,"aria-hidden":`true`,children:t+1}),(0,Q.jsx)(`button`,{type:`button`,className:`link-btn codex-set-prompt__name`,onClick:()=>o(e.id),children:e.title}),(0,Q.jsxs)(`span`,{className:`codex-set-custom__reorder`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":l(`codexSet.custom.moveUp`,{title:e.title}),disabled:t===0||r,onClick:()=>c(e.id,-1),children:`↑`}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":l(`codexSet.custom.moveDown`,{title:e.title}),disabled:t===n-1||r,onClick:()=>c(e.id,1),children:`↓`})]}),(0,Q.jsx)(`button`,{type:`button`,role:`switch`,className:`toggle ${e.enabled?`on`:``}`,"aria-checked":e.enabled,"aria-label":e.title,disabled:r,onClick:()=>a(e.id,!e.enabled),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm codex-set-custom__delete`,"aria-label":l(`codexSet.custom.delete`,{title:e.title}),disabled:r,onClick:()=>s(e.id),children:`×`})]})}var aD=8192,oD=[{rule:`identity`,level:`warn`,messageKey:`codexSet.lint.identity`,pattern:/you\s+are\s+(claude|grok|gemini|gpt-|chatgpt)/gi},{rule:`foreign-tool`,level:`warn`,messageKey:`codexSet.lint.foreignTool`,pattern:/\b(Read|Edit|Write|Bash|Glob|Grep)\s+tool\b/g},{rule:`placeholder`,level:`warn`,messageKey:`codexSet.lint.placeholder`,pattern:/\$\{\{[\s\S]*?\}\}/g},{rule:`apply-patch`,level:`warn`,messageKey:`codexSet.lint.applyPatch`,pattern:/apply_patch\s+(?:is|must|should|means|works)/gi},{rule:`approval-vocab`,level:`warn`,messageKey:`codexSet.lint.approvalVocab`,pattern:/\b(always-approve|ask mode|acceptEdits)\b/gi},{rule:`environment`,level:`warn`,messageKey:`codexSet.lint.environment`,pattern:/\b(your (?:cwd|working directory) is|today's date is|you have no network access|you are running on (?:macos|linux|windows))/gi}];function sD(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 cD(e){let t=[];for(let n of oD){let r=new RegExp(n.pattern.source,n.pattern.flags);for(let i=r.exec(e);i!==null;i=r.exec(e))t.push({level:n.level,rule:n.rule,messageKey:n.messageKey,span:[i.index,i.index+i[0].length]}),i[0].length===0&&(r.lastIndex+=1)}return sD(e)>aD&&t.push({level:`info`,rule:`size`,messageKey:`codexSet.lint.size`}),t.sort((e,t)=>(e.span?.[0]??1/0)-(t.span?.[0]??1/0))}var lD=65536;function uD(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 dD(e){return e.replace(/\r\n/g,`
9
- `).replace(/\r/g,`
10
- `).replace(/\t/g,` `)}function fD(e){let t=0;for(let n of e){let e=n.codePointAt(0);if(n!==`
11
- `&&(e<32||e===127)||e>=55296&&e<=57343)return{position:t};t+=1}return null}function pD(e,t){let n=e.title;if(n.trim().length===0)return{kind:`title-empty`};if(n.length>80)return{kind:`title-too-long`,length:n.length};if(/[\r\n]/.test(n))return{kind:`title-multiline`};let r=dD(e.body),i=uD(r);if(i>65536)return{kind:`body-too-large`,bytes:i};let a=fD(r);if(a)return{kind:`invalid-character`,position:a.position};let o=uD([...t.filter(t=>t.enabled&&t.id!==e.id).map(e=>e.body),...e.enabled?[r]:[]].join(`
12
-
13
- `));return o>131072?{kind:`composed-too-large`,bytes:o}:null}function mD(e){let t=new Set(e.map(e=>e.id));for(;;){let e=``;for(let t=0;t<6;t+=1)e+=`abcdefghijklmnopqrstuvwxyz0123456789`[Math.floor(Math.random()*36)];if(!t.has(e))return e}}function hD(e,t,n){let r=[...e],i=r.findIndex(e=>e.id===t);if(i===-1)return r;let a=i+n;if(a<0||a>=r.length)return r;let[o]=r.splice(i,1);return r.splice(a,0,o),r}function gD({layer:e,seed:t,others:n,busy:r,navigation:a,onSave:o,onClose:s}){let c=i(),l=(0,Z.useRef)(null),[u,d]=(0,Z.useState)(e?.title??t?.title??``),[f,p]=(0,Z.useState)(e?.body??t?.body??``),m=(0,Z.useRef)(new Map),[h,g]=(0,Z.useState)(!1),_=e?.id??null,v=(0,Z.useRef)(_),y=(0,Z.useRef)({title:u,body:f});(0,Z.useEffect)(()=>{y.current={title:u,body:f}},[u,f]),(0,Z.useEffect)(()=>{if(v.current===_)return;v.current!==null&&m.current.set(v.current,y.current),v.current=_;let t=_===null?void 0:m.current.get(_);d(t?.title??e?.title??``),p(t?.body??e?.body??``)},[_,e]),(0,Z.useEffect)(()=>{g([...m.current].some(([e,t])=>{if(e===_)return!1;let r=n.find(t=>t.id===e);return r===void 0||t.title!==r.title||t.body!==r.body}))},[_,n]);let[b,x]=(0,Z.useState)(null),S=`codex-set-custom-dialog`,C=e?.title??t?.title??``,w=e?.body??t?.body??``,T=u!==C||f!==w;(0,Z.useEffect)(()=>{let e=l.current,t=document.activeElement;return e&&!e.open&&e.showModal(),()=>{e?.open&&e.close(),t&&typeof t.focus==`function`&&t.focus()}},[]);let E=(0,Z.useCallback)(()=>{if(T||h){x({kind:`close`});return}s()},[T,h,s]),D=(0,Z.useCallback)(e=>{e.preventDefault(),E()},[E]),O={id:e?.id??null,title:u,body:f,enabled:e?.enabled??!0},k=pD(O,n),A=dD(f),j=A!==f,M=(0,Z.useMemo)(()=>cD(A),[A]),N=uD(A),P=e=>{r||k!==null||e!==_||o({...O,body:A})},F=()=>{if(!(r||k!==null)){if(h){x({kind:`save`,targetId:_});return}P(_)}},I=k?k.kind===`title-empty`?c(`codexSet.custom.titleRequired`):k.kind===`title-too-long`?c(`codexSet.custom.titleTooLong`,{count:k.length,max:80}):k.kind===`title-multiline`?c(`codexSet.custom.titleMultiline`):k.kind===`body-too-large`?c(`codexSet.custom.bodyTooLarge`,{bytes:k.bytes,max:lD}):k.kind===`composed-too-large`?c(`codexSet.custom.composedTooLarge`,{bytes:k.bytes}):c(`codexSet.custom.invalidCharacter`,{position:k.position}):null;return(0,Q.jsxs)(`dialog`,{ref:l,className:`modal-overlay`,"aria-labelledby":S,onCancel:D,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":c(`common.close`),tabIndex:-1,onClick:E}),(0,Q.jsxs)(`div`,{className:`modal-card codex-set-custom-dialog`,onClick:e=>e.stopPropagation(),role:`document`,children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{id:S,children:c(e?`codexSet.custom.editTitle`:`codexSet.custom.newTitle`)}),a&&(0,Q.jsxs)(`span`,{className:`codex-set-custom-dialog__nav`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":c(`codexSet.custom.prevLayer`),disabled:a.position<=1||r||b!==null,onClick:a.onPrev,children:`←`}),(0,Q.jsx)(`span`,{className:`codex-set-custom-dialog__nav-pos`,children:c(`codexSet.custom.navPosition`,{position:a.position,total:a.total})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":c(`codexSet.custom.nextLayer`),disabled:a.position>=a.total||r||b!==null,onClick:a.onNext,children:`→`})]})]}),(0,Q.jsxs)(`label`,{className:`field`,children:[(0,Q.jsx)(`span`,{className:`muted text-label`,children:c(`codexSet.custom.titleLabel`)}),(0,Q.jsx)(`input`,{type:`text`,value:u,maxLength:100,onChange:e=>d(e.target.value)})]}),(0,Q.jsxs)(`label`,{className:`field`,children:[(0,Q.jsx)(`span`,{className:`muted text-label`,children:c(`codexSet.custom.bodyLabel`)}),(0,Q.jsx)(`textarea`,{rows:10,value:f,onChange:e=>p(e.target.value)})]}),(0,Q.jsx)(`p`,{className:`muted small`,children:c(`codexSet.custom.bodySize`,{bytes:N,max:lD})}),j&&(0,Q.jsx)(`p`,{className:`muted small codex-set-custom-dialog__normalized`,children:c(`codexSet.custom.normalized`)}),I&&(0,Q.jsx)(`div`,{className:`notice notice-err`,role:`alert`,children:I}),M.length>0&&(0,Q.jsx)(`ul`,{className:`codex-set-custom-dialog__lint`,children:M.map((e,t)=>(0,Q.jsxs)(`li`,{"data-lint-rule":e.rule,"data-lint-level":e.level,children:[c(e.messageKey),e.span&&(0,Q.jsx)(`code`,{className:`codex-set-custom-dialog__span`,children:A.slice(e.span[0],e.span[1])})]},e.rule+`:`+t))}),b?(0,Q.jsxs)(`div`,{className:`modal-actions codex-set-custom-dialog__discard`,role:`alertdialog`,"aria-labelledby":`codex-set-custom-dialog-discard`,children:[(0,Q.jsx)(`span`,{id:`codex-set-custom-dialog-discard`,className:`muted small`,children:c(b.kind===`save`?`codexSet.custom.discardOthersAndSave`:`codexSet.custom.discardPrompt`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,onClick:()=>x(null),children:c(`codexSet.custom.keepEditing`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-danger btn-sm`,disabled:b.kind===`save`&&(k!==null||r||b.targetId!==_),onClick:()=>b.kind===`save`?P(b.targetId):s(),children:c(b.kind===`save`?`common.save`:`common.discard`)})]}):(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:k!==null||r,onClick:F,children:c(`common.save`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,onClick:E,children:c(`common.cancel`)})]})]})]})}var _D=Object.freeze([{id:`concise`,nameKey:`codexSet.preset.concise.name`,descriptionKey:`codexSet.preset.concise.description`,provenanceKey:`codexSet.preset.concise.provenance`,body:[`Answer directly. Skip preamble, restatement of the question, and summaries of the work about to be done.`,`Prefer a short paragraph over a list, and a list over a table, unless the structure carries real meaning.`,`When the answer is a single fact, give the fact and stop.`].join(`
14
- `)},{id:`plan-first`,nameKey:`codexSet.preset.planFirst.name`,descriptionKey:`codexSet.preset.planFirst.description`,provenanceKey:`codexSet.preset.planFirst.provenance`,body:[`Before changing anything non-trivial, state the plan in two or three sentences: what will change, where, and how it will be verified.`,`If the plan turns out to be wrong mid-way, say so and revise it rather than continuing quietly.`].join(`
15
- `)},{id:`explain-why`,nameKey:`codexSet.preset.explainWhy.name`,descriptionKey:`codexSet.preset.explainWhy.description`,provenanceKey:`codexSet.preset.explainWhy.provenance`,body:[`When a choice had alternatives, name the alternative and why it lost.`,`Explain reasoning where it changes what the reader should do, not as a narration of every step.`,`State uncertainty plainly instead of presenting a guess as a conclusion.`].join(`
16
- `)},{id:`test-first`,nameKey:`codexSet.preset.testFirst.name`,descriptionKey:`codexSet.preset.testFirst.description`,provenanceKey:`codexSet.preset.testFirst.provenance`,body:[`For a behavior change, write the failing test first and show that it fails for the expected reason.`,`A test that passes before the change is not evidence; say so rather than counting it.`].join(`
17
- `)},{id:`korean`,nameKey:`codexSet.preset.korean.name`,descriptionKey:`codexSet.preset.korean.description`,provenanceKey:`codexSet.preset.korean.provenance`,body:[`Reply in Korean regardless of the language of the request, unless explicitly asked for another language.`,`Keep code, identifiers, file paths, and command output unchanged.`,`Write plain Korean: no translationese, one consistent register throughout.`].join(`
18
- `)}]);function vD({onBlank:e,onPreset:t,disabled:n,presets:r=_D}){let a=i(),[o,s]=(0,Z.useState)(!1),c=(0,Z.useRef)(null),l=o&&!n;(0,Z.useEffect)(()=>{if(!l)return;let e=e=>{c.current?.contains(e.target)||s(!1)},t=e=>{e.key===`Escape`&&s(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[l]);let u=e=>{s(!1),e()};return r.length===0?(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm codex-set-custom__add`,disabled:n,onClick:e,children:a(`codexSet.custom.add`)}):(0,Q.jsxs)(`div`,{className:`codex-set-preset`,ref:c,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm codex-set-custom__add`,"aria-expanded":l,disabled:n,onClick:()=>s(e=>!e),children:a(`codexSet.custom.add`)}),l&&(0,Q.jsxs)(`div`,{className:`codex-set-preset__menu`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`codex-set-preset__item`,onClick:()=>u(e),children:(0,Q.jsx)(`span`,{className:`codex-set-preset__name`,children:a(`codexSet.preset.blank`)})}),r.map(e=>(0,Q.jsxs)(`button`,{type:`button`,className:`codex-set-preset__item`,"data-preset-id":e.id,onClick:()=>u(()=>t(e.body,a(e.nameKey))),children:[(0,Q.jsx)(`span`,{className:`codex-set-preset__name`,children:a(e.nameKey)}),(0,Q.jsx)(`span`,{className:`codex-set-preset__desc`,children:a(e.descriptionKey)}),(0,Q.jsx)(`span`,{className:`codex-set-preset__provenance`,children:a(e.provenanceKey)}),(0,Q.jsx)(`span`,{className:`codex-set-preset__preview`,children:e.body})]},e.id))]})]})}var yD=48;function bD({variants:e,selection:t,maxVariants:n,busy:r,onSelect:a,onSave:o,onDelete:s,onClose:c}){let l=i(),u=(0,Z.useRef)(null),d=[{kind:`default`},...e.map(e=>({kind:`variant`,variant:e})),...e.length<n?[{kind:`new`}]:[]],f=t.kind===`variant`?Math.max(0,d.findIndex(e=>e.variant?.id===t.id)):0,[p,m]=(0,Z.useState)(f),h=d[Math.min(p,d.length-1)],[g,_]=(0,Z.useState)(h.variant?.title??``),[v,y]=(0,Z.useState)(h.variant?.body??``),[b,x]=(0,Z.useState)(h.variant?.id??null);(h.variant?.id??null)!==b&&(x(h.variant?.id??null),_(h.variant?.title??``),y(h.variant?.body??``));let S=(0,Z.useCallback)(e=>{m(t=>{let n=t+e;return n<0?d.length-1:n>=d.length?0:n})},[d.length]);(0,Z.useEffect)(()=>{let e=u.current;e&&!e.open&&e.showModal()},[]);let C=(0,Z.useRef)(null),w=e=>{C.current={x:e.clientX,y:e.clientY}},T=e=>{let t=C.current;if(C.current=null,!t||r)return;let n=e.clientX-t.x,i=e.clientY-t.y;Math.abs(n)<yD||Math.abs(n)<=Math.abs(i)||S(n<0?1:-1)},E=e=>{if(r)return;let t=e.target.tagName;t!==`TEXTAREA`&&t!==`INPUT`&&(e.key===`ArrowLeft`&&(e.preventDefault(),S(-1)),e.key===`ArrowRight`&&(e.preventDefault(),S(1)))},D=h.kind==="default"?t.kind==="default":h.kind===`variant`&&t.kind===`variant`&&t.id===h.variant.id,O=t.kind===`external`;return(0,Q.jsx)(`dialog`,{ref:u,className:`modal-overlay codex-set-base-dialog`,"aria-label":l(`codexSet.base.title`),onClose:c,onKeyDown:E,onPointerDown:w,onPointerUp:T,children:(0,Q.jsxs)(`div`,{className:`modal-card`,children:[(0,Q.jsxs)(`div`,{className:`row`,children:[(0,Q.jsx)(`strong`,{children:l(`codexSet.base.title`)}),(0,Q.jsxs)(`span`,{className:`codex-set-base-dialog__nav`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":l(`codexSet.base.prev`),disabled:r||d.length<2,onClick:()=>S(-1),children:`←`}),(0,Q.jsx)(`span`,{className:`codex-set-base-dialog__pos`,"data-slot-kind":h.kind,children:l(`codexSet.base.position`,{position:p+1,total:d.length})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":l(`codexSet.base.next`),disabled:r||d.length<2,onClick:()=>S(1),children:`→`})]})]}),(0,Q.jsx)(`p`,{className:`card-sub`,children:l(`codexSet.base.swipeHint`)}),d.length>1&&(0,Q.jsx)(`div`,{className:`codex-set-base-dialog__dots`,"aria-hidden":`true`,children:d.map((e,t)=>(0,Q.jsx)(`span`,{className:`codex-set-base-dialog__dot${t===p?` active`:``}`},t))}),O&&(0,Q.jsx)(`div`,{className:`notice notice-err`,role:`alert`,children:l(`codexSet.base.externalBlocked`,{path:t.path})}),h.kind==="default"?(0,Q.jsxs)(`div`,{className:`codex-set-base-dialog__default`,children:[(0,Q.jsx)(`strong`,{children:l(`codexSet.base.defaultTitle`)}),(0,Q.jsx)(`p`,{className:`muted small`,children:l(`codexSet.base.defaultBody`)})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`label`,{className:`field`,children:[(0,Q.jsx)(`span`,{children:l(`codexSet.base.variantTitle`)}),(0,Q.jsx)(`input`,{type:`text`,value:g,disabled:r||O,onChange:e=>_(e.target.value)})]}),(0,Q.jsxs)(`label`,{className:`field`,children:[(0,Q.jsx)(`span`,{children:l(`codexSet.base.variantBody`)}),(0,Q.jsx)(`textarea`,{rows:12,value:v,disabled:r||O,onChange:e=>y(e.target.value)})]}),(0,Q.jsx)(`p`,{className:`muted small`,children:l(`codexSet.base.replacesWarning`)})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[h.kind!=="default"&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:r||O||v.trim().length===0,onClick:()=>o({id:h.variant?.id??null,title:g,body:v}),children:l(`common.save`)}),!D&&h.kind!==`new`&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:r||O,onClick:()=>a(h.kind==="default"?{kind:`default`}:{kind:`variant`,id:h.variant.id}),children:l(`codexSet.base.use`)}),D&&(0,Q.jsx)(`span`,{className:`pill`,children:l(`codexSet.base.inUse`)}),h.kind===`variant`&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-danger btn-sm`,disabled:r||O,onClick:()=>s(h.variant.id),children:l(`common.delete`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,onClick:c,children:l(`common.close`)})]})]})})}function xD(e){return`codex-prompt:`+e}var SD={"journal-present":`codexSet.drift.journalPresent`,"projection-stale":`codexSet.drift.projectionStale`,"store-missing":`codexSet.drift.storeMissing`,"owned-malformed":`codexSet.drift.ownedMalformed`};function CD({apiBase:e}){let t=i(),n=xD(e),[r,a]=(0,Z.useState)(``),[o,s]=(0,Z.useState)(null),[c,l]=(0,Z.useState)(null),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(null),[m,h]=(0,Z.useState)(null),[g,_]=(0,Z.useState)(null),[v,y]=(0,Z.useState)(!1),[b,x]=(0,Z.useState)(null),[S,C]=(0,Z.useState)(null),w=(0,Z.useCallback)(()=>{C(null)},[]),T=(0,Z.useCallback)(async t=>{let n=await fetch(e+`/api/codex-prompt`,{signal:t});if(!n.ok)throw Error(String(n.status));return await n.json()},[e]),E=za(n,[e],T,{isEmpty:e=>e.inventory.length===0}),D=E.data,O=E.state,k=async(r,i)=>{if(D){s(r),a(``);try{let o=await fetch(e+`/api/codex-prompt/toggle`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({id:r,enabled:i,revision:D.revision})}),s=await o.json();if(!o.ok||!s.ok||!s.snapshot){if(s.code===`stale_revision`){E.refresh(),a(t(`codexSet.prompt.staleRevision`));return}a(s.message??t(`codexSet.prompt.writeFailed`)),E.refresh();return}Bt(n,s.snapshot),w(),C(null)}catch{a(t(`codexSet.prompt.writeFailed`)),E.refresh()}finally{s(null)}}},A=async(r,i)=>{if(!(!D||o!==null)){s(`base`),a(``);try{let o=await fetch(e+r,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({...i,revision:D.revision})}),s=await o.json();if(!o.ok||!s.ok||!s.snapshot){if(s.code===`stale_revision`){E.refresh(),a(t(`codexSet.prompt.staleRevision`));return}a(s.message??t(`codexSet.prompt.writeFailed`)),E.refresh();return}Bt(n,s.snapshot),w(),C(null)}catch{a(t(`codexSet.prompt.writeFailed`)),E.refresh()}finally{s(null)}}},j=async(r,i)=>{if(!D||o!==null)return!1;s(i),a(``);let c=D.custom;try{let i=await fetch(e+`/api/codex-prompt/custom`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({layers:r,revision:D.revision})}),o=await i.json();return!i.ok||!o.ok||!o.snapshot?o.code===`stale_revision`?(E.refresh(),a(t(`codexSet.prompt.staleRevision`)),!1):(a(o.message??t(`codexSet.prompt.writeFailed`)),Bt(n,{...D,custom:c}),E.refresh(),!1):(Bt(n,o.snapshot),w(),!0)}catch{return a(t(`codexSet.prompt.writeFailed`)),E.refresh(),!1}finally{s(null)}},M=async e=>{if(!D)return;let t=D.custom,n=e.id===null?[...t,{id:mD(t),title:e.title,body:e.body,enabled:!0}]:t.map(t=>t.id===e.id?{...t,title:e.title,body:e.body}:t);await j(n,e.id??`new`)&&d(null)},N=async r=>{if(D){s(`adopt`),a(``);try{let i=await fetch(e+`/api/codex-prompt/adopt`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(r?{confirm:!0,revision:D.revision}:{confirm:!1})}),o=await i.json();if(!i.ok||!o.ok){a(o.message??t(`codexSet.custom.adoptRefused`)),h(null),_(o.code===`adopt_unsupported_form`?{path:o.path,line:o.line,rawLine:o.rawLine}:null);return}if(o.snapshot){Bt(n,o.snapshot),w(),h(null);return}h(o.preview??null)}catch{a(t(`codexSet.prompt.writeFailed`))}finally{s(null)}}},P=async r=>{if(!(!D||D.drift===null)){y(!0),a(``);try{let i=await fetch(e+`/api/codex-prompt/repair`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(r?{confirm:!0,revision:D.revision}:{confirm:!1})}),o=await i.json();if(!i.ok||!o.ok){a(o.message??t(`codexSet.prompt.repairFailed`));return}o.snapshot?Bt(n,o.snapshot):E.refresh(),w()}catch{a(t(`codexSet.prompt.repairFailed`))}finally{y(!1)}}},F=[...D?.inventory??[]].filter(e=>e.class!==`extension-unknown`).sort((e,t)=>(e.order??2**53-1)-(t.order??2**53-1)),I=new Set([`realtime`,`model-switch`]),L=F.filter(e=>!I.has(e.id)),R=F.filter(e=>I.has(e.id)),z=F.find(e=>e.id===c)??null,B=u===null||u===`new`?-1:D?.custom.findIndex(e=>e.id===u)??-1,V=B>=0?D.custom[B]:null,H=u!==null&&u!==`new`&&D!==void 0&&B<0;return(0,Z.useEffect)(()=>{if(S!==null)return;let t=new AbortController,n=!1;return(async()=>{try{let r=await fetch(e+`/api/codex-prompt/text`,{signal:t.signal});if(!r.ok){n||C({ok:!1});return}let i=await r.json();n||C(i)}catch{n||C({ok:!1})}})(),()=>{n=!0,t.abort()}},[S,e]),(0,Q.jsxs)(`div`,{className:`panel codex-set-prompt`,children:[(0,Q.jsx)(`div`,{className:`row`,children:(0,Q.jsx)(`strong`,{children:t(`codexSet.prompt.title`)})}),(0,Q.jsx)(`p`,{className:`card-sub`,children:t(`codexSet.prompt.timing`)}),O.refreshing&&(0,Q.jsx)(Kv,{live:!O.showError,children:t(`common.loading`)}),O.showSkeleton&&(0,Q.jsx)(Gv,{label:t(`common.loading`),rows:5}),D&&!D.readable&&(0,Q.jsx)(`div`,{className:`notice notice-err`,role:`alert`,children:t(`codexSet.prompt.unreadable`)}),O.showError&&(0,Q.jsx)(`div`,{className:`notice notice-err`,role:`alert`,children:t(`codexSet.prompt.loadFailed`)}),(r||H)&&(0,Q.jsx)(`div`,{className:`notice notice-err`,role:`alert`,children:H?t(`codexSet.custom.layerGone`):r}),D?.drift&&(0,Q.jsxs)(`div`,{className:`notice codex-set-prompt__drift`,role:`alert`,"data-drift":D.drift,children:[(0,Q.jsx)(`span`,{children:t(SD[D.drift])}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:v,onClick:()=>{P(!0)},children:t(`codexSet.prompt.repair`)})]}),(0,Q.jsx)(`ul`,{className:`codex-set-prompt__rows`,children:L.map(e=>(0,Q.jsx)(nD,{descriptor:e,toggle:D?.toggles.find(t=>t.id===e.id),bytes:S?.layers?.[e.id]?.bytes??null,busy:o===e.id,writesRefused:D?.readable===!1,onToggle:(e,t)=>{k(e,t)},onSelectBase:e.class===`base`&&D?(t=>{if(t){A(`/api/codex-prompt/base/select`,{kind:`default`});return}let n=D.baseVariants[0];if(!n){l(e.id);return}A(`/api/codex-prompt/base/select`,{kind:`variant`,id:n.id})}):void 0,baseSelection:D?.baseSelection,onOpen:l},e.id))}),R.length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`row codex-set-prompt__group`,children:(0,Q.jsx)(`strong`,{children:t(`codexSet.group.transition`)})}),(0,Q.jsx)(`p`,{className:`muted small`,children:t(`codexSet.group.transitionDesc`)}),(0,Q.jsx)(`ul`,{className:`codex-set-prompt__rows`,children:R.map(e=>(0,Q.jsx)(nD,{descriptor:e,toggle:D?.toggles.find(t=>t.id===e.id),bytes:S?.layers?.[e.id]?.bytes??null,transitionOnly:!0,busy:o===e.id,writesRefused:D?.readable===!1,onToggle:(e,t)=>{k(e,t)},onOpen:l},e.id))})]}),D&&!D.extensionLayersEnumerable&&(0,Q.jsx)(`p`,{className:`muted small codex-set-prompt__extensions`,children:t(`codexSet.prompt.extensionsUnknown`)}),z&&(z.class===`base`&&D?(0,Q.jsx)(bD,{variants:D.baseVariants,selection:D.baseSelection,maxVariants:D.maxBaseVariants,busy:o!==null||!D.readable,onSelect:e=>{A(`/api/codex-prompt/base/select`,e)},onSave:e=>{A(`/api/codex-prompt/base`,e)},onDelete:e=>{A(`/api/codex-prompt/base`,{id:e,delete:!0})},onClose:()=>l(null)}):(0,Q.jsx)(rD,{descriptor:z,toggle:D?.toggles.find(e=>e.id===z.id),text:S?.layers?.[z.id],busy:o!==null,onToggle:(e,t)=>{k(e,t)},onClose:()=>l(null)})),D&&(0,Q.jsxs)(`section`,{className:`codex-set-custom`,children:[(0,Q.jsxs)(`div`,{className:`row`,children:[(0,Q.jsx)(`strong`,{children:t(`codexSet.custom.heading`)}),D.developerInstructionsState===`external`?null:(0,Q.jsx)(vD,{disabled:D.custom.length>=32||o!==null||!D.readable,onBlank:()=>{x(null),d(`new`)},onPreset:(e,t)=>{x({body:e,title:t}),d(`new`)}})]}),D.custom.length>=32&&(0,Q.jsx)(`p`,{className:`muted small`,children:t(`codexSet.custom.limitReached`,{max:32})}),D.developerInstructionsState===`external`&&D.modelInstructionsFile===null&&(0,Q.jsxs)(`div`,{className:`codex-set-custom__adopt`,children:[(0,Q.jsx)(`p`,{className:`muted small`,children:t(`codexSet.custom.notOwned`)}),g&&(0,Q.jsx)(`p`,{className:`muted small codex-set-custom__adopt-refusal`,children:t(`codexSet.custom.adoptUnsupported`,{path:g.path??``,line:g.line??0})}),m?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`pre`,{className:`api-code codex-set-custom__adopt-preview`,children:m.decodedBody}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:o!==null,onClick:()=>{N(!0)},children:t(`codexSet.custom.adoptConfirm`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,onClick:()=>h(null),children:t(`common.cancel`)})]})]}):(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:o!==null,onClick:()=>{N(!1)},children:t(`codexSet.custom.adopt`)})]}),D.modelInstructionsFile!==null&&(0,Q.jsx)(`p`,{className:`muted small codex-set-custom__replaced`,children:t(`codexSet.custom.baseReplaced`,{path:D.modelInstructionsFile})}),(0,Q.jsx)(`ul`,{className:`codex-set-prompt__rows`,children:D.custom.map((e,t)=>(0,Q.jsx)(iD,{layer:e,index:t,total:D.custom.length,busy:o!==null||!D.readable,onToggle:(e,t)=>{j(D.custom.map(n=>n.id===e?{...n,enabled:t}:n),e)},onEdit:d,onDelete:p,onMove:(e,t)=>{j(hD(D.custom,e,t),e)}},e.id))}),f&&(0,Q.jsxs)(`div`,{className:`notice codex-set-custom__confirm`,role:`alertdialog`,"aria-labelledby":`codex-set-delete-confirm`,children:[(0,Q.jsx)(`span`,{id:`codex-set-delete-confirm`,children:t(`codexSet.custom.deleteConfirmNamed`,{title:D.custom.find(e=>e.id===f)?.title??``})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-danger btn-sm`,onClick:()=>{let e=f;p(null),j(D.custom.filter(t=>t.id!==e),e)},children:t(`common.delete`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,onClick:()=>p(null),children:t(`common.cancel`)})]})]}),u&&D&&!H&&(0,Q.jsx)(gD,{layer:u===`new`?null:V,seed:u===`new`?b:null,others:D.custom,busy:o!==null,navigation:B>=0&&D.custom.length>1?{position:B+1,total:D.custom.length,onPrev:()=>{B>0&&d(D.custom[B-1].id)},onNext:()=>{B<D.custom.length-1&&d(D.custom[B+1].id)}}:void 0,onSave:M,onClose:()=>{d(null),x(null)}})]})}function wD(){return window.location.hash.replace(/^#\/?/,``)===`codex-set/prompt`?`prompt`:`multiauth`}function TD(e){window.location.hash=e===`prompt`?`codex-set/prompt`:`codex-set`}function ED(e){e.key===`ArrowLeft`||e.key===`Home`?(e.preventDefault(),TD(`multiauth`),document.getElementById(`codex-set-tab-multiauth`)?.focus()):(e.key===`ArrowRight`||e.key===`End`)&&(e.preventDefault(),TD(`prompt`),document.getElementById(`codex-set-tab-prompt`)?.focus())}function DD({apiBase:e}){let t=i(),[n,r]=(0,Z.useState)(wD),[a,o]=(0,Z.useState)(()=>wD()===`prompt`),[s,c]=(0,Z.useState)(()=>wD()===`multiauth`);(0,Z.useEffect)(()=>{let e=()=>r(wD());return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[]);let l=a||n===`prompt`,u=s||n===`multiauth`;return l!==a&&o(!0),u!==s&&c(!0),(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`page-tabs`,role:`tablist`,"aria-label":t(`nav.codexSet`),children:[(0,Q.jsx)(`button`,{type:`button`,role:`tab`,id:`codex-set-tab-multiauth`,"aria-selected":n===`multiauth`,"aria-controls":`codex-set-panel-multiauth`,tabIndex:n===`multiauth`?0:-1,className:`page-tab${n===`multiauth`?` page-tab--active`:``}`,onClick:()=>TD(`multiauth`),onKeyDown:ED,children:t(`codexSet.tab.multiauth`)}),(0,Q.jsx)(`button`,{type:`button`,role:`tab`,id:`codex-set-tab-prompt`,"aria-selected":n===`prompt`,"aria-controls":`codex-set-panel-prompt`,tabIndex:n===`prompt`?0:-1,className:`page-tab${n===`prompt`?` page-tab--active`:``}`,onClick:()=>TD(`prompt`),onKeyDown:ED,children:t(`codexSet.tab.prompt`)})]}),l&&(0,Q.jsx)(`div`,{role:`tabpanel`,id:`codex-set-panel-prompt`,"aria-labelledby":`codex-set-tab-prompt`,hidden:n!==`prompt`,children:(0,Q.jsx)(CD,{apiBase:e})}),u&&(0,Q.jsx)(`div`,{role:`tabpanel`,id:`codex-set-panel-multiauth`,"aria-labelledby":`codex-set-tab-multiauth`,hidden:n!==`multiauth`,children:(0,Q.jsx)(XE,{apiBase:e})})]})}var OD=[`opencode`,`pi`,`omp`,`hermes`,`openclaw`,`kimi`,`gajae`,`dsh`,`mcode`,`zcode`,`commandcode`,`prime`,`aside`,`raycast`,`omo`,`cline`,`kilo`,`droid`],kD={opencode:`api.clientConfig.clientOpencode`,pi:`api.clientConfig.clientPi`,omp:`api.clientConfig.clientOmp`,hermes:`api.clientConfig.clientHermes`,openclaw:`api.clientConfig.clientOpenclaw`,kimi:`api.clientConfig.clientKimi`,gajae:`api.clientConfig.clientGajae`,dsh:`api.clientConfig.clientDsh`,mcode:`api.clientConfig.clientMcode`,zcode:`api.clientConfig.clientZcode`,commandcode:`api.clientConfig.clientCommandCode`,prime:`api.clientConfig.clientPrime`,aside:`api.clientConfig.clientAside`,raycast:`api.clientConfig.clientRaycast`,omo:`api.clientConfig.clientOmo`,cline:`api.clientConfig.clientCline`,kilo:`api.clientConfig.clientKilo`,droid:`api.clientConfig.clientDroid`},AD={opencode:`/provider-icons/opencode.svg`,pi:`/provider-icons/pi.svg`,omp:`/provider-icons/oh-my-pi.svg`,hermes:`/provider-icons/hermes-agent.svg`,openclaw:`/provider-icons/openclaw.svg`,kimi:`/provider-icons/kimi-color.svg`,gajae:`/provider-icons/gajae-code.svg`,dsh:`/provider-icons/deepseek-harness.svg`,mcode:`/provider-icons/minimax.svg`,zcode:`/provider-icons/zcode.svg`,prime:`/provider-icons/prime-agent.svg`,aside:`/provider-icons/aside.svg`,raycast:`/provider-icons/raycast.svg`,omo:`/provider-icons/omo.svg`,cline:`/provider-icons/cline-color.svg`,commandcode:`/provider-icons/commandcode-color.svg`,kilo:`/provider-icons/kilo.svg`,droid:`/provider-icons/factory-droid.svg`},jD=new Set([`opencode`,`kimi`,`prime`,`aside`,`hermes`]),MD={codex:`/provider-icons/openai.svg`,claude:`/provider-icons/claude-color.svg`,claudeDesktop:`/provider-icons/claude-color.svg`,grok:`/provider-icons/grok.svg`,cursor:`/provider-icons/cursor-color.svg`},ND={...MD,opencode:AD.opencode??null,pi:AD.pi??null,omp:AD.omp??null,hermes:AD.hermes??null,openclaw:AD.openclaw??null,kimi:AD.kimi??null,gajae:AD.gajae??null,dsh:AD.dsh??null,mcode:AD.mcode??null,zcode:AD.zcode??null,prime:AD.prime??null,aside:AD.aside??null,raycast:AD.raycast??null,omo:AD.omo??null,cline:AD.cline??null,commandcode:AD.commandcode??null,kilo:AD.kilo??null,droid:AD.droid??null},PD=[MD.grok],FD=new Set([...[...jD].map(e=>AD[e]).filter(e=>e!==void 0),...PD]);function ID(e){return ND[e]}function LD({src:e,label:t,size:n=20,className:r}){let i=r?`client-mark ${r}`:`client-mark`,a={"--client-mark-size":String(n)+`px`};return e?FD.has(e)?(0,Q.jsx)(`span`,{className:`${i} client-mark--mask`,style:{...a,maskImage:`url(${e})`,WebkitMaskImage:`url(${e})`},"aria-hidden":`true`}):(0,Q.jsx)(`span`,{className:`${i} client-mark--img`,style:a,"aria-hidden":`true`,children:(0,Q.jsx)(`img`,{src:e,alt:``,width:n,height:n})}):(0,Q.jsx)(`span`,{className:`${i} client-mark--monogram`,style:a,"aria-hidden":`true`,children:t.slice(0,1)})}function RD(e){return e?[`responses`,`chat`,`messages`]:[`responses`,`chat`]}function zD(e){let t=e.id.indexOf(`/`),n=typeof e.owned_by==`string`&&e.owned_by.trim()?e.owned_by.trim():void 0,r=e.is_combo===!0?`combo`:t>0?e.id.slice(0,t):n??`openai`,i=t<0&&r===`openai`,a=r!==`openai`&&r!==`combo`;return{id:e.id,displayName:e.id,provider:r,native:i,custom:a}}function BD(e){return e.id}function VD(e,t,n){let r=(0,Z.useRef)(0),i=(0,Z.useRef)(!1),a=(0,Z.useCallback)((e=`pairing`)=>{r.current++,n(e)},[n]),o=(0,Z.useCallback)(()=>{i.current=!1,r.current++},[]);return(0,Z.useLayoutEffect)(()=>(i.current=!0,a(`lifecycle`),o),[e,t,a,o]),(0,Z.useEffect)(()=>{let e=e=>{e.detail?.plane===`shared`&&a(`session`)},t=()=>{st()&&a(`lifecycle`)};window.addEventListener(m,e),window.addEventListener(x,e);let n=ct(t);return()=>{window.removeEventListener(m,e),window.removeEventListener(x,e),n()}},[a]),{generation:r,invalidate:a,current:(0,Z.useCallback)(e=>i.current&&t&&!st()&&r.current===e,[t])}}function HD(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.ambiguous===!0||!(typeof t.requests7d!=`number`||!Number.isFinite(t.requests7d)||typeof t.totalRequests!=`number`||!Number.isFinite(t.totalRequests)||t.lastUsedAt!==void 0&&(typeof t.lastUsedAt!=`string`||Number.isNaN(new Date(t.lastUsedAt).getTime())))}var UD=new Set([`required`,`accepted`,`rejected`]);function WD(e){return Array.isArray(e)&&e.length>0&&e.every(e=>{if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.endpoint==`string`&&UD.has(t.bearer)&&UD.has(t.dedicated)&&UD.has(t.xApiKey)})}var GD=new Set([`fixed`,`api-surfaces`,`claude-code-legacy`,`invalid`]),KD=[`responses`,`chat`,`messages`];function qD(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n={};for(let e of KD){let r=t[e];if(!r||typeof r!=`object`||Array.isArray(r))return;let{enabled:i,source:a}=r;if(typeof i!=`boolean`||!GD.has(a))return;n[e]={enabled:i,source:a}}return n}function JD(e,t){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let n=e,r=new Set([`transcriptionEndpoint`,`dictationStreamEndpoint`,`liveEndpoint`,`realtimeCallsEndpoint`,`transcriptionModel`,`liveModel`,`transcriptionConfigured`,`dictationConfigured`,`liveConfigured`]);if(Object.keys(n).some(e=>!r.has(e)))return!1;try{let e=new URL(t);if(![`http:`,`https:`].includes(e.protocol)||e.username||e.password||e.search||e.hash)return!1;for(let[t,[r,i]]of Object.entries({transcriptionEndpoint:[`/audio/transcriptions`,!1],dictationStreamEndpoint:[`/audio/transcriptions/stream`,!0],liveEndpoint:[`/live`,!0],realtimeCallsEndpoint:[`/realtime/calls`,!1]})){if(typeof n[t]!=`string`)return!1;let a=new URL(n[t]),o=i?e.protocol===`https:`?`wss:`:`ws:`:e.protocol;if(a.protocol!==o||a.username||a.password||a.search||a.hash||(a.protocol=e.protocol,a.origin!==e.origin||a.pathname!==`${e.pathname.replace(/\/$/,``)}${r}`))return!1}return n.transcriptionModel===`gpt-4o-transcribe`&&n.liveModel===`gpt-live-1-codex`&&[n.transcriptionConfigured,n.dictationConfigured,n.liveConfigured].every(e=>typeof e==`boolean`)}catch{return!1}}var YD={baseUrl:`http://127.0.0.1:10100/v1`,responses:`http://127.0.0.1:10100/v1/responses`,chatCompletions:`http://127.0.0.1:10100/v1/chat/completions`,messages:`http://127.0.0.1:10100/v1/messages`,models:`http://127.0.0.1:10100/v1/models`};function XD(e){let t=e||YD.responses,n=t.match(/^(.*)\/v1\/responses\/?$/),r=n?`${n[1]}/v1`:t.replace(/\/responses\/?$/,``);return{baseUrl:r,responses:t,chatCompletions:`${r}/chat/completions`,messages:`${r}/messages`,models:`${r}/models`}}function ZD(e,t){let n=new Date(e);return!e||Number.isNaN(n.getTime())?`—`:n.toLocaleDateString(t)}function QD({url:e}){return(0,Q.jsx)($D,{text:e,hintKey:`api.copyUrlHint`,copiedKey:`api.urlCopied`,className:`api-endpoint-url-btn`,children:(0,Q.jsx)(`code`,{className:`api-code api-code-inline api-endpoint-url`,children:e})})}function $D({text:e,hintKey:t,copiedKey:n,className:r,children:i}){let{t:a}=D(),o=(0,Z.useId)(),s=(0,Z.useRef)(null),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(null),m=(0,Z.useRef)(null),h=c||u;(0,Z.useEffect)(()=>()=>{m.current!==null&&window.clearTimeout(m.current)},[]),(0,Z.useLayoutEffect)(()=>{if(!h)return;let e=()=>{let e=s.current;if(!e)return;let t=e.getBoundingClientRect();p({top:Math.max(8,t.top-8),left:t.left+t.width/2})};return e(),window.addEventListener(`scroll`,e,!0),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`scroll`,e,!0),window.removeEventListener(`resize`,e)}},[h]);let g=()=>l(!0),_=()=>l(!1),v=async()=>{try{await navigator.clipboard.writeText(e),d(!0),m.current!==null&&window.clearTimeout(m.current),m.current=window.setTimeout(()=>d(!1),1500)}catch{d(!1)}},y=h&&f?(0,Gt.createPortal)((0,Q.jsx)(`span`,{id:o,className:`ocx-tooltip-bubble api-copy-tip-fixed`,role:`tooltip`,style:{top:f.top,left:f.left},children:a(u?n:t)}),document.body):null,b={ref:s,className:`ocx-tooltip ${r}`,onMouseEnter:g,onMouseLeave:_,onFocus:g,onBlur:_,onClick:e=>{if(typeof window<`u`&&window.getSelection()?.toString())return;let t=e.target;if(t instanceof HTMLElement&&t!==e.currentTarget){let n=t.getBoundingClientRect();if(t.scrollHeight>t.clientHeight+1&&e.clientX>=n.right-16||t.scrollWidth>t.clientWidth+1&&e.clientY>=n.bottom-16)return}v()},onKeyDown:e=>{e.key===`Escape`&&_()},"aria-label":a(t),"aria-describedby":h?o:void 0};return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`button`,{type:`button`,...b,children:i}),y]})}function eO({text:e}){return(0,Q.jsx)($D,{text:e,hintKey:`api.copyExampleHint`,copiedKey:`api.exampleCopied`,className:`api-example-copy-btn`,children:(0,Q.jsx)(`code`,{className:`api-code api-example-pre`,children:e})})}var tO=`claude/code`,nO={fixed:`api.surface.source.fixed`,"api-surfaces":`api.surface.source.explicit`,"claude-code-legacy":`api.surface.source.inherited`,invalid:`api.surface.source.invalid`},rO=[{id:`responses`,titleKey:`api.responsesEndpoint`,url:e=>e.responses},{id:`chat`,titleKey:`api.chatCompletionsEndpoint`,url:e=>e.chatCompletions},{id:`messages`,titleKey:`api.messagesEndpoint`,url:e=>e.messages}];function iO({apiBase:e,endpoints:t,surfaces:n,onChanged:r}){let{t:i}=D(),[a,o]=(0,Z.useState)(!1),[s,c]=(0,Z.useState)(null),l=async t=>{if(!a){o(!0),c(null);try{let n=await xm(e,{messagesEnabled:!t.enabled});n.kind===`ok`?r():c(n.kind===`unavailable`?`unavailable`:`failed`)}finally{o(!1)}}};return(0,Q.jsx)(`div`,{className:`api-endpoints api-surface-cards`,children:rO.map(e=>{let r=n[e.id],o=r.enabled?i(`api.surface.on`):i(`api.surface.off`);return(0,Q.jsxs)(`div`,{className:`api-surface-card${r.enabled?``:` api-surface-card-off`}`,"data-surface":e.id,children:[(0,Q.jsxs)(`div`,{className:`api-surface-card-head`,children:[(0,Q.jsx)(`span`,{className:`api-surface-card-title`,children:i(e.titleKey)}),e.id===`messages`?(0,Q.jsx)(nn,{on:r.enabled,disabled:a,onClick:()=>{l(r)},label:`${i(`api.surface.messagesToggle`)}: ${o}`}):null,(0,Q.jsx)(`span`,{className:`badge ${r.enabled?`badge-green`:`badge-muted`}`,children:o})]}),(0,Q.jsx)(QD,{url:e.url(t)}),(0,Q.jsx)(`span`,{className:`small ${r.source===`invalid`?`api-surface-invalid`:`muted`}`,children:i(nO[r.source])}),e.id===`messages`?(0,Q.jsxs)(Q.Fragment,{children:[r.enabled?null:(0,Q.jsx)(`span`,{className:`muted small`,children:i(`api.surface.closedNote`)}),r.enabled?(0,Q.jsx)(`span`,{className:`muted small`,children:i(`api.surface.messagesCloseNote`)}):null,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm api-surface-card-link`,onClick:()=>Wt(tO),children:i(`api.surface.openClaude`)}),s?(0,Q.jsx)($,{tone:`err`,children:i(s===`unavailable`?`api.surface.toggleUnavailable`:`api.surface.toggleFailed`)}):null]}):null]},e.id)})})}function aO(e,t){return t(e===`required`?`api.auth.required`:e===`accepted`?`api.auth.accepted`:`api.auth.rejected`)}function oO({endpoints:e,claudeCodeEnabled:t,authMatrix:n,surfaces:r,apiBase:i,onSurfacesChanged:a}){let{t:o}=D(),s=r&&i!==void 0&&a?{surfaces:r,apiBase:i,onChanged:a}:null;return(0,Q.jsxs)(`div`,{className:`panel api-panel`,children:[(0,Q.jsx)(`h3`,{className:`panel-title`,children:o(`api.endpointsTitle`)}),(0,Q.jsxs)(`div`,{className:`api-endpoints`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`muted small`,children:o(`api.baseUrl`)}),(0,Q.jsx)(QD,{url:e.baseUrl})]}),s?null:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`muted small`,children:o(`api.responsesEndpoint`)}),(0,Q.jsx)(QD,{url:e.responses})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`muted small`,children:o(`api.chatCompletionsEndpoint`)}),(0,Q.jsx)(QD,{url:e.chatCompletions})]}),t&&(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`muted small`,children:o(`api.messagesEndpoint`)}),(0,Q.jsx)(QD,{url:e.messages})]})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`muted small`,children:o(`api.modelsEndpoint`)}),(0,Q.jsx)(QD,{url:e.models})]})]}),s?(0,Q.jsx)(iO,{endpoints:e,...s}):null,(0,Q.jsx)(`p`,{className:`muted small`,children:o(`api.endpointNote`)}),(0,Q.jsxs)(`div`,{className:`api-auth-matrix-block`,children:[(0,Q.jsx)(`h4`,{className:`api-auth-matrix-title`,children:o(`api.authTitle`)}),(0,Q.jsx)(`div`,{className:`api-auth-matrix-scroll`,children:(0,Q.jsxs)(`table`,{className:`api-auth-matrix`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:o(`api.auth.endpoint`)}),(0,Q.jsx)(`th`,{children:(0,Q.jsx)(`code`,{children:`Authorization: Bearer`})}),(0,Q.jsx)(`th`,{children:(0,Q.jsx)(`code`,{children:`x-opencodex-api-key`})}),(0,Q.jsx)(`th`,{children:(0,Q.jsx)(`code`,{children:`x-api-key`})})]})}),(0,Q.jsx)(`tbody`,{children:n.map(e=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{children:(0,Q.jsx)(`code`,{children:e.endpoint})}),(0,Q.jsx)(`td`,{children:aO(e.bearer,o)}),(0,Q.jsx)(`td`,{children:aO(e.dedicated,o)}),(0,Q.jsx)(`td`,{children:aO(e.xApiKey,o)})]},e.endpoint))})]})}),(0,Q.jsx)(`p`,{className:`muted small`,children:o(`api.authLoopback`)}),(0,Q.jsx)(`p`,{className:`muted small`,children:o(`api.authBaseUrlNote`)})]})]})}function sO({keys:e,keysLoading:t=!1,keysLoadFailed:n,newName:r,creating:i,newKey:a,copied:o,confirmDelete:s,localeTag:c,showKeyList:l=!0,onNewNameChange:u,onCreate:d,onDismissNewKey:f,onCopyKey:p,onConfirmDelete:m,onCancelDelete:h,onDelete:g}){let{t:_}=D();return(0,Q.jsxs)(Q.Fragment,{children:[a&&(0,Q.jsxs)(`div`,{className:`panel api-panel panel-accent api-newkey-panel`,children:[(0,Q.jsx)(`h3`,{className:`panel-title`,children:_(`api.newKeyTitle`)}),(0,Q.jsx)(`p`,{className:`muted small`,children:_(`api.newKeyNote`)}),(0,Q.jsxs)(`div`,{className:`api-form-row`,children:[(0,Q.jsx)(`code`,{className:`api-code`,style:{flex:1,wordBreak:`break-all`},children:a}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm btn-ghost`,onClick:p,children:o?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Se,{}),` `,_(`api.copied`)]}):_(`api.copy`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm btn-ghost`,style:{alignSelf:`flex-start`},onClick:f,children:_(`api.dismiss`)})]}),(0,Q.jsxs)(`div`,{className:`panel api-panel api-generate-panel`,children:[(0,Q.jsx)(`h3`,{className:`panel-title`,children:_(`api.generateTitle`)}),(0,Q.jsxs)(`div`,{className:`api-form-row`,children:[(0,Q.jsx)(`input`,{id:`api-key-name`,type:`text`,placeholder:_(`api.keyNamePlaceholder`),"aria-label":_(`api.keyNamePlaceholder`),value:r,maxLength:64,onChange:e=>u(e.target.value),className:`input`}),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-primary`,onClick:d,disabled:i,children:[(0,Q.jsx)(Le,{}),` `,_(i?`api.generating`:`api.generate`)]})]})]}),l&&(0,Q.jsxs)(`div`,{className:`panel api-panel`,style:{marginTop:`1rem`},"aria-busy":t,children:[(0,Q.jsx)(`h3`,{className:`panel-title`,children:t?_(`api.activeKeysLoading`):_(`api.activeKeys`,{count:e.length})}),t?(0,Q.jsx)(`div`,{className:`api-active-keys-skeleton`,role:`status`,"aria-label":_(`common.loading`)}):e.length>0?(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:_(`api.colName`)}),(0,Q.jsx)(`th`,{children:_(`api.colKey`)}),(0,Q.jsx)(`th`,{children:_(`api.colCreated`)}),(0,Q.jsx)(`th`,{})]})}),(0,Q.jsx)(`tbody`,{children:e.map(e=>(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{children:e.name}),(0,Q.jsx)(`td`,{children:(0,Q.jsx)(`code`,{children:e.prefix})}),(0,Q.jsx)(`td`,{children:ZD(e.createdAt,c)}),(0,Q.jsx)(`td`,{children:s===e.id?(0,Q.jsxs)(`span`,{className:`api-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm btn-danger`,onClick:()=>g(e.id),children:_(`api.confirm`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm btn-ghost`,onClick:h,children:_(`common.cancel`)})]}):(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm btn-ghost`,"aria-label":_(`api.deleteAria`),onClick:()=>m(e.id),children:(0,Q.jsx)(N,{})})})]},e.id))})]})}):n?(0,Q.jsx)(`p`,{className:`muted`,children:_(`api.keysLoadFailed`)}):(0,Q.jsx)(`p`,{className:`muted`,children:_(`api.noKeys`)})]})]})}function cO({filteredModels:e,modelsLoading:t,modelsRefreshing:n=!1,modelsLoadFailed:r,modelCount:i,hasModelData:a,modelQuery:o,copiedModelId:s,modelTests:c,claudeCodeEnabled:l,onModelQueryChange:u,onCopyModelId:d,onTestModel:f,onRetryModels:p,canTestModels:m,sourceLabel:h,protocolLabel:g}){let{t:_}=D();return(0,Q.jsxs)(`div`,{className:`panel api-panel api-models-panel`,children:[(0,Q.jsxs)(`div`,{className:`api-panel-head`,children:[(0,Q.jsx)(`h3`,{className:`panel-title`,children:_(`api.modelsTitle`)}),(0,Q.jsx)(`span`,{className:`muted mono text-label`,children:_(`api.modelsCount`,{count:e.length})})]}),(0,Q.jsx)(`p`,{className:`muted small`,children:_(`api.modelsSubtitle`)}),(0,Q.jsx)(`input`,{type:`search`,className:`input`,value:o,onChange:e=>u(e.target.value),placeholder:_(`api.modelsSearch`),"aria-label":_(`api.modelsSearch`)}),r&&(0,Q.jsxs)(`div`,{className:`api-models-error`,children:[(0,Q.jsx)(`p`,{className:`muted small`,role:`alert`,children:_(`api.modelsLoadFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:p,children:_(`common.retry`)})]}),n&&!t&&(0,Q.jsx)(`p`,{className:`muted small`,"aria-live":`polite`,children:_(`api.modelsLoading`)}),t?(0,Q.jsx)(Gv,{label:_(`api.modelsLoading`),rows:3}):a?e.length===0?(0,Q.jsx)(`p`,{className:`muted small api-models-empty`,children:i===0?_(`api.modelsEmpty`):_(`api.modelsNoMatch`,{query:o.trim()})}):(0,Q.jsx)(`div`,{className:`api-models-scroll`,children:(0,Q.jsxs)(`table`,{className:`tbl`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:_(`api.colModel`)}),(0,Q.jsx)(`th`,{children:_(`api.colSource`)}),(0,Q.jsx)(`th`,{children:_(`api.colProtocols`)})]})}),(0,Q.jsx)(`tbody`,{children:e.map(e=>{let t=BD(e),n=RD(l);return(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{children:(0,Q.jsxs)(`div`,{className:`api-model-cell`,children:[(0,Q.jsx)(`code`,{children:t}),e.displayName!==e.id&&(0,Q.jsx)(`span`,{className:`muted small`,children:e.displayName})]})}),(0,Q.jsx)(`td`,{children:h(e)}),(0,Q.jsx)(`td`,{children:(0,Q.jsxs)(`div`,{className:`api-model-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm btn-ghost`,onClick:()=>{d(t)},children:_(s===t?`api.modelCopied`:`api.copyModelId`)}),n.map(n=>{let r=c[t]?.[n],i=r?.state??`idle`;return(0,Q.jsxs)(`span`,{className:`api-model-test-chip`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm btn-ghost`,disabled:i===`testing`||!m,title:m?void 0:_(`api.auth.testNeedsFreshKey`),onClick:()=>{f(e,n)},children:_(`api.auth.testProtocol`,{protocol:g(n)})}),i!==`idle`&&(0,Q.jsx)(`span`,{className:`api-test-note api-test-note--${i}`,role:`status`,"aria-live":`polite`,"aria-atomic":`true`,children:i===`testing`?_(`api.testingModel`):i===`ok`?_(`api.testSucceeded`):r?.detail??_(`api.testFailed`)})]},n)})]})})]},t)})})]})}):null]})}function lO({endpoints:e,claudeCodeEnabled:t}){let{t:n}=D(),r=JSON.stringify(n(`api.usageSampleInput`)),i=`curl ${e.chatCompletions} \\
19
- -H "x-opencodex-api-key: ocx_YOUR_KEY_HERE" \\
20
- -H "Content-Type: application/json" \\
21
- -d '{
22
- "model": "gpt-5.6-luna",
23
- "messages": [{"role": "user", "content": ${r}}]
24
- }'`,a=`curl ${e.responses} \\
25
- -H "x-opencodex-api-key: ocx_YOUR_KEY_HERE" \\
26
- -H "Content-Type: application/json" \\
27
- -d '{
28
- "model": "gpt-5.6-luna",
29
- "input": ${r}
30
- }'`,o=`curl ${e.messages} \\
31
- -H "x-opencodex-api-key: ocx_YOUR_KEY_HERE" \\
32
- -H "Content-Type: application/json" \\
33
- -d '{
34
- "model": "claude-sonnet-4-6",
35
- "max_tokens": 64,
36
- "messages": [{"role": "user", "content": ${r}}]
37
- }'`;return(0,Q.jsxs)(`section`,{className:`panel api-panel awi-usage-panel`,children:[(0,Q.jsx)(`h3`,{className:`panel-title`,children:n(`api.workspace.usageExamples`)}),(0,Q.jsxs)(`div`,{className:`awi-usage-panel-body`,children:[(0,Q.jsxs)(`div`,{className:`awi-usage-example`,children:[(0,Q.jsx)(`h4`,{className:`awi-usage-example-title`,children:n(`api.usageChatTitle`)}),(0,Q.jsx)(eO,{text:i})]}),(0,Q.jsxs)(`div`,{className:`awi-usage-example`,children:[(0,Q.jsx)(`h4`,{className:`awi-usage-example-title`,children:n(`api.usageResponsesTitle`)}),(0,Q.jsx)(eO,{text:a})]}),t&&(0,Q.jsxs)(`div`,{className:`awi-usage-example`,children:[(0,Q.jsx)(`h4`,{className:`awi-usage-example-title`,children:n(`api.usageMessagesTitle`)}),(0,Q.jsx)(eO,{text:o})]})]})]})}function uO({client:e,apiBase:t,onOpenDetails:n,onCopy:r,onDownload:a}){let o=i(),[s,c]=(0,Z.useState)(0),l=[t,e,String(s)].join(`|`),[u,d]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{let n=new AbortController,r=!1;return(async()=>{try{let i=await fetch(`${t}/api/client-config?client=${encodeURIComponent(e)}`,{signal:n.signal});if(!i.ok)throw Error(String(i.status));let a=await i.json();if(r)return;d({key:l,data:a,failed:!1})}catch{if(r)return;d({key:l,data:null,failed:!0})}})(),()=>{r=!0,n.abort()}},[t,e,l]);let f=u!==null&&u.key===l?u:null,p=f?.data??null,m=f?.failed??!1,h=f===null,g=o(kD[e]),_=AD[e],v=p?.text??``,y=(0,Z.useCallback)(t=>{p&&n(e,p,v,t.currentTarget)},[e,p,v,n]);return(0,Q.jsxs)(`li`,{className:`awi-clientconfig-row`,children:[(0,Q.jsx)(`span`,{className:`awi-clientconfig-mark`,children:(0,Q.jsx)(LD,{src:_??null,label:g,size:20})}),(0,Q.jsxs)(`span`,{className:`awi-clientconfig-identity`,children:[(0,Q.jsx)(`span`,{className:`awi-clientconfig-name`,children:g}),(0,Q.jsx)(`span`,{className:`muted text-label awi-clientconfig-meta`,children:h?o(`api.clientConfig.loading`):m||!p?(0,Q.jsx)(`span`,{role:`alert`,children:o(`api.clientConfig.rowError`,{client:g})}):o(`api.clientConfig.rowMeta`,{destination:p.destination,count:p.modelCount})})]}),(0,Q.jsx)(`span`,{className:`awi-clientconfig-row-actions`,children:m&&!h?(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>c(e=>e+1),children:o(`common.retry`)}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,"aria-label":o(`api.clientConfig.copyAria`,{client:g}),disabled:!p,onClick:()=>{p&&r(e,v)},children:o(`api.clientConfig.copy`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,"aria-label":o(`api.clientConfig.downloadAria`,{client:g}),disabled:!p,onClick:()=>{p&&a(e,p,v)},children:o(`api.clientConfig.download`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,"aria-label":o(`api.clientConfig.detailsAria`,{client:g}),disabled:!p,onClick:y,children:o(`api.clientConfig.details`)})]})})]})}function dO({client:e,envelope:t,json:n,hasKeys:r,onClose:a,onCopy:o,onDownload:s}){let c=i(),l=(0,Z.useRef)(null),u=`awi-clientconfig-dialog-${e}`;(0,Z.useEffect)(()=>{let e=l.current;return e&&!e.open&&e.showModal(),()=>{e?.open&&e.close()}},[]);let d=(0,Z.useCallback)(e=>{e.preventDefault(),a()},[a]);return(0,Q.jsxs)(`dialog`,{ref:l,className:`modal-overlay`,"aria-labelledby":u,onCancel:d,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":c(`common.close`),tabIndex:-1,onClick:a}),(0,Q.jsxs)(`div`,{className:`modal-card awi-clientconfig-dialog`,onClick:e=>e.stopPropagation(),role:`document`,children:[(0,Q.jsxs)(`div`,{className:`modal-head`,children:[(0,Q.jsx)(`h3`,{id:u,children:c(kD[e])}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:a,children:c(`common.close`)})]}),(0,Q.jsx)(`pre`,{className:`api-code api-example-pre awi-clientconfig-json`,tabIndex:0,role:`group`,"aria-label":c(`api.clientConfig.jsonLabel`,{client:c(kD[e])}),children:n}),(0,Q.jsx)(`p`,{className:`muted small awi-clientconfig-count`,children:c(`api.clientConfig.modelCount`,{count:t.modelCount})}),t.modelsWithoutLimits>0&&(0,Q.jsx)(`p`,{className:`muted small awi-clientconfig-degraded`,children:c(`api.clientConfig.missingLimits`,{count:t.modelsWithoutLimits,total:t.modelCount})}),!r&&e!==`cline`&&t.apiKeyEnv!==``&&(0,Q.jsx)(`p`,{className:`muted small awi-clientconfig-nokey`,children:c(`api.clientConfig.noKeyYet`,{env:t.apiKeyEnv})}),(0,Q.jsxs)(`div`,{className:`awi-clientconfig-line`,children:[(0,Q.jsx)(`span`,{className:`muted text-label`,children:c(`api.clientConfig.destination`)}),(0,Q.jsx)(eO,{text:t.destination})]}),(0,Q.jsxs)(`div`,{className:`awi-clientconfig-line`,children:[e!==`cline`&&t.apiKeyEnv!==``&&(0,Q.jsx)(`span`,{className:`muted text-label`,children:c(`api.clientConfig.envHint`)}),(0,Q.jsx)(eO,{text:t.exportHint})]}),(0,Q.jsx)(`p`,{className:`muted small awi-clientconfig-merge`,children:c(e===`cline`?`api.clientConfig.clineBundle`:`api.clientConfig.mergeWarning`)}),(e===`cline`||t.apiKeyEnv!==``)&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`muted text-label awi-clientconfig-where-title`,children:c(`api.clientConfig.whereDisclosure`)}),(0,Q.jsx)(`p`,{className:`muted small`,children:c(e===`cline`?`integrations.semantics.cline`:`api.clientConfig.whereBody`)})]}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:o,children:c(`api.clientConfig.copy`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,onClick:s,children:c(`api.clientConfig.download`)})]})]})]})}function fO({apiBase:e,baseUrl:t,hasKeys:n}){let r=i(),[a,o]=(0,Z.useState)(null),[s,c]=(0,Z.useState)(``),l=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{if(a!==null)return;let e=l.current;e&&(l.current=null,e.isConnected&&e.focus())},[a]);let u=(0,Z.useCallback)(async(e,t,n)=>{try{await navigator.clipboard.writeText(t),c(n?r(`api.clientConfig.copiedAnnounceClient`,{client:r(kD[e])}):r(`api.clientConfig.copiedAnnounce`))}catch{c(r(`api.clientConfig.copyFailed`))}},[r]),d=(0,Z.useCallback)((e,t,n)=>{let i=URL.createObjectURL(new Blob([n],{type:t.mediaType})),a=document.createElement(`a`);a.href=i,a.download=t.filename,a.click(),URL.revokeObjectURL(i),c(r(e===`cline`?`api.clientConfig.clineDownloaded`:`api.clientConfig.downloadedAnnounce`,{filename:t.filename,destination:t.destination}))},[r]),f=(0,Z.useCallback)(()=>o(null),[]),p=(0,Z.useCallback)((e,t,n,r)=>{l.current=r,o({client:e,envelope:t,json:n})},[]);return(0,Q.jsxs)(`section`,{className:`panel api-panel awi-clientconfig-panel`,children:[(0,Q.jsx)(`div`,{className:`api-panel-head awi-clientconfig-head`,children:(0,Q.jsx)(`h3`,{className:`panel-title`,children:r(`api.clientConfig.title`)})}),(0,Q.jsx)(`ul`,{className:`awi-clientconfig-rows`,"aria-label":r(`api.clientConfig.rowsLabel`),children:OD.map(t=>(0,Q.jsx)(uO,{client:t,apiBase:e,onOpenDetails:p,onCopy:(e,t)=>{u(e,t,!0)},onDownload:d},t))}),(0,Q.jsxs)(`div`,{className:`awi-clientconfig-line`,children:[(0,Q.jsx)(`span`,{className:`muted text-label`,children:r(`api.baseUrl`)}),(0,Q.jsx)(eO,{text:t})]}),(0,Q.jsx)(`div`,{className:`sr-only`,"aria-live":`polite`,"aria-atomic":`true`,children:s}),a&&(0,Q.jsx)(dO,{client:a.client,envelope:a.envelope,json:a.json,hasKeys:n,onClose:f,onCopy:()=>{u(a.client,a.json,!1)},onDownload:()=>d(a.client,a.envelope,a.json)})]})}var pO=/^ocx_pair_[A-Za-z0-9_-]{43}$/,mO=class extends Error{kind;constructor(e){super(`pairing_${e}`),this.kind=e,this.name=`PairingError`}};async function hO(e,t,n,r){r?.throwIfAborted();let i=t.trim();if(!pO.test(i))throw new mO(`invalid-code`);let a=n??((e,t)=>window.fetch(e,t)),o;try{o=await a(e.bootstrapPath,{method:`POST`,signal:r,headers:{"Content-Type":`application/json`,Accept:`text/html`},body:JSON.stringify({grant:i})})}catch(e){throw r?.aborted?e:new mO(`unreachable`)}if(!o.ok){try{await o.body?.cancel()}catch{}throw new mO(o.status===401||o.status===403?`refused`:`request-failed`)}let s;try{s=await o.text()}catch(e){throw r?.aborted?e:new mO(`invalid-response`)}if(r?.throwIfAborted(),!g(`shared`,s))throw new mO(`invalid-response`);return!0}function gO({target:e,onConnected:t,onPairingStart:n,local:r=!1}){let a=i(),[o,s]=(0,Z.useState)(``),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(null),f=(0,Z.useRef)(null);(0,Z.useEffect)(()=>()=>f.current?.abort(),[]);let p=nl(),m=`ocx gui pair --origin "${window.location.origin}"`,h=p.outcomeFor(m);return(0,Q.jsxs)(`section`,{className:`card connect-pairing`,"aria-labelledby":`connect-pairing-title`,children:[(0,Q.jsx)(`h2`,{id:`connect-pairing-title`,children:a(r?`connection.pairing.code`:`connection.pairing.title`)}),(0,Q.jsxs)(`p`,{children:[!r&&(0,Q.jsxs)(Q.Fragment,{children:[a(`connection.pairing.hub`),`: `]}),(0,Q.jsx)(`code`,{children:e.serverOrigin})]}),!r&&(0,Q.jsx)(`p`,{children:a(`connection.pairing.getCode`)}),(0,Q.jsx)(`pre`,{style:{whiteSpace:`pre-wrap`,overflowWrap:`anywhere`},children:(0,Q.jsx)(`code`,{children:m})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>p.copy(m,m),children:a(h===`copied`?`startup.copied`:`startup.copy`)}),h===`unavailable`&&(0,Q.jsx)(`p`,{role:`status`,children:a(`prov.linkCopyUnavailable`)}),!r&&(0,Q.jsx)(`p`,{children:a(`connection.pairing.askOperator`)}),(0,Q.jsx)(`p`,{children:a(`connection.pairing.notApiKey`)}),(0,Q.jsxs)(`form`,{onSubmit:async r=>{if(r.preventDefault(),c)return;n?.(),l(!0),d(null);let i=new AbortController;f.current=i;try{await hO(e,o,void 0,i.signal),i.signal.aborted||t()}catch(e){i.signal.aborted||d(e instanceof mO?e.kind:`unreachable`)}finally{i.signal.aborted||l(!1),f.current===i&&(f.current=null)}},className:`api-form-row`,children:[(0,Q.jsx)(`label`,{htmlFor:`connect-pairing-code`,className:`field-label`,children:a(`connection.pairing.code`)}),(0,Q.jsx)(`input`,{id:`connect-pairing-code`,name:`pairingCode`,value:o,onChange:e=>s(e.currentTarget.value),autoComplete:`off`,spellCheck:!1,disabled:c,className:`input mono`,"aria-invalid":!!u||void 0,"aria-describedby":u?`connect-pairing-error`:void 0}),(0,Q.jsx)(`button`,{type:`submit`,className:`btn btn-primary`,disabled:c||!o.trim(),children:a(c?`connection.pairing.submitting`:`connection.pairing.submit`)}),u&&(0,Q.jsx)(`p`,{id:`connect-pairing-error`,className:`alert alert-err`,role:`alert`,children:a(u===`invalid-code`?`connection.pairing.notApiKey`:u===`unreachable`?`connection.pairing.networkError`:u===`request-failed`?`connection.pairing.requestError`:u===`invalid-response`?`connection.pairing.responseError`:`connection.pairing.error`)})]}),e.transport===`relay`&&(0,Q.jsx)(`p`,{className:`text-muted`,children:a(`connection.pairing.relayWarning`)})]})}function _O({keys:e,keysLoading:t,keysLoadFailed:n,attributionSince:r,usageMetadata:a,localeTag:s,apiBase:c,active:l=!0,onPairingStart:u,busy:d,onSelect:f,onDelete:m,onReveal:h}){let g=i(),[_,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,O]=(0,Z.useState)(null),k=(0,Z.useRef)(null),[A,j]=(0,Z.useState)(null),[M,N]=(0,Z.useState)(!1),[P,F]=(0,Z.useState)(null),[I,L]=(0,Z.useState)(null),R=(0,Z.useRef)(null),z=VD(c,l,(0,Z.useCallback)(e=>{let t=R.current;R.current=null,v({}),b(null),S(null),w(n=>e===`session`?t??n:e===`pairing`?n:null),E(null),O(null),k.current!==null&&window.clearTimeout(k.current),k.current=null},[]));(0,Z.useEffect)(()=>{if(!A)return;let e=window.setTimeout(()=>N(!0),300);return()=>window.clearTimeout(e)},[A]);let B=(0,Z.useRef)(new Set),V=e=>{let t=_[e.id];return t!==void 0&&t.startsWith(e.prefix.replace(/\.\.\.$/,``))?t:void 0},H=d||P!==null,U=o(c).shared,ee=p()&&window.location.protocol===`http:`&&[`127.0.0.1`,`[::1]`].includes(window.location.hostname)&&U.serverOrigin===window.location.origin,W=async e=>{let t=z.generation.current;if(!z.current(t))return;let n=e.id;if(S(null),w(null),V(e)!==void 0){v(({[n]:e,...t})=>t);return}if(!(!h||y)){R.current=n,b(n);try{let e=await h(n);if(!z.current(t)||B.current.has(n))return;e.ok?v(t=>({...t,[n]:e.key})):e.kind===`denied`?(z.invalidate(),u?.(),w(n)):S(n)}catch{z.current(t)&&S(n)}finally{z.current(t)&&(R.current=null,b(null))}}},G=e=>{E(t=>t===e?null:t),O(e)},te=(e,t)=>{let n=z.generation.current;if(!z.current(n))return;O(null);let r;try{r=navigator.clipboard?.writeText?.(t)}catch{r=void 0}if(!r){G(e);return}r.then(()=>{!z.current(n)||B.current.has(e)||(E(e),k.current!==null&&window.clearTimeout(k.current),k.current=window.setTimeout(()=>{E(t=>t===e?null:t),k.current=null},2e3))},()=>{z.current(n)&&G(e)})};(0,Z.useEffect)(()=>()=>{k.current!==null&&window.clearTimeout(k.current)},[]);let ne=async e=>{if(!(!m||!M||P)){F(e),L(null);try{await m(e)?(B.current.add(e),j(null),N(!1),v(({[e]:t,...n})=>n)):L(e)}finally{F(null)}}};return(0,Q.jsxs)(`div`,{className:`panel api-panel awi-keylist-panel`,"aria-busy":t,children:[(0,Q.jsx)(`div`,{className:`api-panel-head`,children:(0,Q.jsx)(`h3`,{className:`panel-title`,children:t?g(`api.activeKeysLoading`):g(`api.activeKeys`,{count:e.length})})}),(0,Q.jsx)(pr,{data:a}),C!==null&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)($,{tone:`warn`,children:g(`api.key.revealDenied`)}),ee&&(0,Q.jsx)(gO,{local:!0,target:U,onPairingStart:()=>{z.invalidate(),u?.()},onConnected:()=>{z.invalidate(),u?.(),w(null)}})]}),t?(0,Q.jsx)(`div`,{className:`api-active-keys-skeleton`,role:`status`,"aria-label":g(`common.loading`)}):e.length===0?(0,Q.jsx)(`p`,{className:`muted small`,children:g(n?`api.keysLoadFailed`:`api.noKeys`)}):(0,Q.jsx)(`div`,{className:`tbl-wrap`,children:(0,Q.jsxs)(`table`,{className:`tbl awi-keylist-table`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{children:g(`api.colName`)}),(0,Q.jsx)(`th`,{children:g(`api.colKey`)}),(0,Q.jsx)(`th`,{children:g(`api.attribution.requests7d`)}),(0,Q.jsx)(`th`,{children:g(`api.attribution.lastUsed`)}),m&&(0,Q.jsx)(`th`,{className:`awi-keylist-actions-col`,children:(0,Q.jsx)(`span`,{className:`sr-only`,children:g(`api.colActions`)})})]})}),(0,Q.jsx)(`tbody`,{children:e.map(e=>{let t=V(e),n=A===e.id;return(0,Q.jsxs)(`tr`,{className:n?`awi-keylist-row is-confirming`:`awi-keylist-row`,children:[(0,Q.jsx)(`td`,{children:(0,Q.jsx)(`button`,{type:`button`,className:`awi-keylist-name`,disabled:H,onClick:()=>f(e.id),children:e.name})}),(0,Q.jsx)(`td`,{className:`awi-keylist-keycell`,children:h?(0,Q.jsxs)(`span`,{className:`awi-keylist-keywrap`,children:[(0,Q.jsx)(`button`,{type:`button`,className:t?`awi-keylist-key is-revealed`:`awi-keylist-key`,"aria-expanded":t!==void 0,"aria-label":g(t?`api.key.hideAria`:`api.key.revealAria`,{name:e.name}),title:g(t?`api.key.hideHint`:`api.key.revealHint`),disabled:y===e.id,onClick:()=>{W(e)},children:(0,Q.jsx)(`code`,{children:t??e.prefix})}),t&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm awi-keylist-copy`,onClick:()=>te(e.id,t),children:T===e.id?g(`api.copied`):g(`api.copy`)}),D===e.id&&(0,Q.jsx)(`span`,{className:`awi-delete-error awi-keylist-inline-error`,role:`alert`,children:g(`api.key.copyFailedShort`)}),x===e.id&&(0,Q.jsx)(`span`,{className:`awi-delete-error awi-keylist-inline-error`,role:`alert`,children:g(`api.key.revealFailed`)})]}):(0,Q.jsx)(`code`,{children:e.prefix})}),(0,Q.jsx)(`td`,{children:r?e.usage.ambiguous?g(`api.attribution.railAmbiguous`):e.usage.requests7d.toLocaleString(s):g(`api.attribution.unavailable`)}),(0,Q.jsx)(`td`,{children:!r||e.usage.ambiguous?`—`:e.usage.lastUsedAt?ZD(e.usage.lastUsedAt,s):g(a?.usageIncomplete?`api.attribution.noRecordedUse`:`api.attribution.neverUsed`)}),m&&(0,Q.jsxs)(`td`,{className:`awi-keylist-actions`,children:[n?(0,Q.jsxs)(`span`,{className:`awi-keylist-confirm`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-danger btn-sm`,"aria-label":g(`api.key.deleteRowAria`,{name:e.name}),disabled:!M||P!==null,onClick:()=>{ne(e.id)},children:P===e.id?g(`api.key.deleting`):g(`api.key.deleteShort`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:P!==null,onClick:()=>{j(null),N(!1),L(null)},children:g(`common.cancel`)})]}):(0,Q.jsx)(`button`,{type:`button`,className:`awi-keylist-delete`,"aria-label":g(`api.key.deleteRowAria`,{name:e.name}),title:g(`api.workspace.deleteKey`),disabled:H,onClick:()=>{L(null),N(!1),j(e.id)},children:(0,Q.jsx)(ot,{width:16,height:16,"aria-hidden":`true`})}),I===e.id&&(0,Q.jsx)(`span`,{className:`awi-delete-error awi-keylist-inline-error`,role:`alert`,children:g(`api.deleteFailed`)})]})]},e.id)})})]})})]})}var vO=class extends Error{code;constructor(e){super(e),this.code=e}},yO=2097152;async function bO(e,t,n,r,i){if(!r.size||r.size>25e6)throw new vO(`size`);if(!n.trim())throw new vO(`auth`);i.throwIfAborted();let a=T(13e4),o=()=>a.controller.abort(i.reason);i.addEventListener(`abort`,o,{once:!0});try{let i=new FormData;i.set(`file`,r),i.set(`model`,t),i.set(`response_format`,`json`);let o=await y(e,{method:`POST`,headers:{"X-OpenCodex-API-Key":n.trim()},body:i,signal:a.signal});if(!o.ok)throw o.body?.cancel().catch(()=>{}),new vO(o.status===401||o.status===403?`auth`:o.status===429?`rateLimit`:o.status===413?`size`:o.status>=500?`unavailable`:`invalid`);let s=o.body?.getReader();if(!s)throw new vO(`protocol`);let c=()=>{s.cancel().catch(()=>{})};a.signal.addEventListener(`abort`,c,{once:!0});let l=``,u=0,d=new TextDecoder;try{for(a.signal.throwIfAborted();;){let e=await s.read();if(a.signal.throwIfAborted(),e.done)break;if(u+=e.value.byteLength,u>yO)throw new vO(`protocol`);l+=d.decode(e.value,{stream:!0})}l+=d.decode()}finally{a.signal.removeEventListener(`abort`,c),s.cancel().catch(()=>{}),s.releaseLock()}let f;try{f=JSON.parse(l)}catch{throw new vO(`protocol`)}if(!f||typeof f!=`object`||typeof f.text!=`string`)throw new vO(`protocol`);return f.text}catch(e){throw i.aborted?i.reason:a.signal.aborted?new vO(`timeout`):e instanceof vO?e:new vO(`network`)}finally{i.removeEventListener(`abort`,o),a.clear()}}function xO(e){let t=new TextEncoder().encode(e.trim());if(!t.length||t.length>4096)throw new vO(`auth`);let n=``;for(let e of t)n+=String.fromCharCode(e);return[`opencodex-audio`,`opencodex-key.${btoa(n).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}`]}var SO={type:`session.update`,session:{instructions:``,audio:{output:{voice:`cove`}},delegation:{type:`client`}}},CO=new Set([`session.started`,`session.updated`,`delegation.created`,`output_audio.delta`]);function wO(e){let t=new URL(e.endpoint);if(![`ws:`,`wss:`].includes(t.protocol)||t.pathname!==`/v1/live`||t.username||t.password||t.search||t.hash)throw new vO(`invalid`);t.searchParams.set(`model`,e.model);let n=new WebSocket(t.href,xO(e.key)),r=!1,i=!1,a,o=setTimeout(()=>c(`failed`,`timeout`),e.readyTimeoutMs??15e3),s=()=>{clearTimeout(o),clearTimeout(a),n.onopen=n.onmessage=n.onerror=n.onclose=null;try{n.readyState===WebSocket.OPEN&&n.send(JSON.stringify({type:`session.close`})),n.close()}catch{}};function c(t,n){r||(r=!0,s(),e.onState(t,n))}return n.onopen=()=>{try{n.send(JSON.stringify(SO))}catch{c(`failed`,`network`)}},n.onmessage=t=>{if(r)return;if(typeof t.data!=`string`||t.data.length>65536){c(`failed`,`protocol`);return}let n;try{n=JSON.parse(t.data)}catch{c(`failed`,`protocol`);return}if(!n||typeof n!=`object`||typeof n.type!=`string`){c(`failed`,`protocol`);return}if(n.type===`error`||n.type===`protocol.error`){c(`failed`,`protocol`);return}if(n.type===`session.started`||n.type===`session.updated`){let t=n.session;if(t?.status===`error`||t?.status===`failed`){c(`failed`,`protocol`);return}if(t?.status===`closed`){c(i?`disconnected`:`failed`,i?void 0:`protocol`);return}!i&&typeof t?.id==`string`&&t.id.trim()&&(i=!0,clearTimeout(o),a=setTimeout(()=>c(`disconnected`),e.maxSessionMs??6e4),e.onState(`connected`))}CO.has(n.type)&&e.onEvent(n.type)},n.onerror=()=>c(`failed`,`network`),n.onclose=e=>c(i&&e.code===1e3?`disconnected`:`failed`,i&&e.code===1e3?void 0:`network`),e.onState(`connecting`),()=>{r||(r=!0,s())}}function TO(e,t,n,r){let i=new URL(e);t&&i.searchParams.set(`model`,n);let a=t?SO:{type:`session.start`,config:{input_audio_format:`pcm16`,sample_rate_hz:48e3,num_channels:1,max_buffer_size_bytes:4194304,max_utterance_duration_ms:3e4,session_ttl_ms:3e5,provider_mode:`streaming_sse`,transcript_delivery_mode:`segment`,vad:{type:`server_vad`,threshold:.5,prefix_padding_ms:300,silence_duration_ms:500}}};return`const key = prompt(${JSON.stringify(r)})?.trim();
38
- if (!key) throw new Error("missing_data_key");
39
- const encoded = btoa(String.fromCharCode(...new TextEncoder().encode(key)))
40
- .replace(/\\+/g, "-").replace(/\\//g, "_").replace(/=+$/, "");
41
- const ws = new WebSocket(${JSON.stringify(i.href)},
42
- ["opencodex-audio", "opencodex-key." + encoded]);
43
- ws.onopen = () => ws.send(JSON.stringify(${JSON.stringify(a)}));
44
- ws.onmessage = ({ data }) => console.log(JSON.parse(data).type);
45
- // After session.started, send your protocol's audio frames.
46
- // Dictation: mono PCM16 at the declared sample_rate_hz (48000 here).
47
- // Live Voice: input_audio.append / output_audio.delta, 24 kHz mono.
48
- const closeSession = () => ws.send(JSON.stringify({ type: "session.close" }));`}function EO(e,t){return[`curl ${JSON.stringify(e)}`,` -H "X-OpenCodex-API-Key: $OPENCODEX_API_KEY"`,` -F "file=@recording.wav" -F "model=${t}"`].join(` \\
49
- `)}function DO({value:e,onChange:t}){let n=i(),r=(0,Z.useId)();return(0,Q.jsxs)(`label`,{className:`audio-api-field`,htmlFor:r,children:[(0,Q.jsx)(`span`,{children:n(`audio.key`)}),(0,Q.jsx)(`input`,{id:r,className:`input`,type:`password`,autoComplete:`off`,spellCheck:!1,maxLength:4096,value:e,onChange:e=>t(e.target.value)})]})}function OO({code:e}){let t=i();return e?(0,Q.jsx)(`p`,{className:`audio-api-error`,role:`alert`,children:t(`audio.error.${e}`)}):null}function kO({audio:e}){let t=i(),[n,r]=(0,Z.useState)(``),[a,o]=(0,Z.useState)(null),[s,c]=(0,Z.useState)(!1),[l,u]=(0,Z.useState)(null),[d,f]=(0,Z.useState)(null),p=(0,Z.useRef)(null),m=(0,Z.useId)(),h=(0,Z.useId)();(0,Z.useEffect)(()=>()=>{p.current?.abort(),p.current=null},[]);let g=()=>{p.current?.abort(),p.current=null,c(!1)},_=async()=>{if(!e?.transcriptionConfigured||!a||!n.trim()||p.current)return;let t=new AbortController;p.current=t,c(!0),f(null),u(null);try{let r=await bO(e.transcriptionEndpoint,e.transcriptionModel,n,a,t.signal);p.current===t&&u(r)}catch(e){p.current===t&&!t.signal.aborted&&f(e instanceof vO?e.code:`network`)}finally{p.current===t&&(p.current=null,c(!1))}};return(0,Q.jsxs)(`section`,{className:`audio-api-section`,"aria-labelledby":h,children:[(0,Q.jsxs)(`header`,{className:`audio-api-head`,children:[(0,Q.jsx)(`h3`,{id:h,children:t(`audio.dictation`)}),(0,Q.jsx)(`span`,{className:`muted small`,children:t(e?.transcriptionConfigured?`audio.configured`:e?`audio.notConfigured`:`audio.unknown`)})]}),e&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`audio-api-endpoints`,children:[(0,Q.jsx)(`code`,{children:e.transcriptionModel}),(0,Q.jsx)(QD,{url:e.transcriptionEndpoint})]}),(0,Q.jsxs)(`form`,{className:`audio-api-form`,onSubmit:e=>{e.preventDefault(),_()},children:[(0,Q.jsx)(DO,{value:n,onChange:e=>{g(),f(null),r(e)}}),(0,Q.jsxs)(`label`,{className:`audio-api-field`,htmlFor:m,children:[(0,Q.jsx)(`span`,{children:t(`audio.file`)}),(0,Q.jsx)(`input`,{id:m,className:`input`,type:`file`,accept:`audio/*,.mp4,.webm`,onChange:e=>{g(),f(null),u(null),o(e.target.files?.[0]??null)}})]}),(0,Q.jsxs)(`div`,{className:`audio-api-actions`,children:[(0,Q.jsxs)(`button`,{className:`btn btn-primary`,type:`submit`,disabled:s||!e.transcriptionConfigured||!a||!n.trim(),children:[(0,Q.jsx)(X,{width:16,height:16,"aria-hidden":`true`}),t(s?`audio.transcribing`:`audio.transcribe`)]}),s&&(0,Q.jsxs)(`button`,{className:`btn`,type:`button`,onClick:g,children:[(0,Q.jsx)(N,{width:16,height:16,"aria-hidden":`true`}),t(`common.cancel`)]})]})]}),(0,Q.jsx)(OO,{code:d}),l!==null&&(0,Q.jsxs)(`div`,{className:`audio-api-result`,"aria-live":`polite`,children:[(0,Q.jsx)(`h4`,{children:t(`audio.transcript`)}),l?(0,Q.jsx)(eO,{text:l}):(0,Q.jsx)(`p`,{className:`muted small`,children:t(`audio.emptyTranscript`)})]}),(0,Q.jsxs)(`details`,{className:`audio-api-examples`,children:[(0,Q.jsx)(`summary`,{children:t(`audio.examples`)}),(0,Q.jsx)(eO,{text:EO(e.transcriptionEndpoint,e.transcriptionModel)}),(0,Q.jsxs)(`div`,{className:`audio-api-head`,children:[(0,Q.jsx)(`h4`,{children:t(`audio.streaming`)}),(0,Q.jsx)(`span`,{className:`muted small`,children:t(e.dictationConfigured?`audio.configured`:`audio.notConfigured`)})]}),(0,Q.jsx)(QD,{url:e.dictationStreamEndpoint}),(0,Q.jsx)(eO,{text:TO(e.dictationStreamEndpoint,!1,e.transcriptionModel,t(`audio.key`))})]})]})]})}function AO({audio:e}){let t=i(),[n,r]=(0,Z.useState)(``),[a,o]=(0,Z.useState)(`idle`),[s,c]=(0,Z.useState)(null),[l,u]=(0,Z.useState)([]),d=(0,Z.useRef)(null),f=(0,Z.useId)();(0,Z.useEffect)(()=>()=>{d.current?.dispose?.(),d.current=null},[]);let p=()=>{d.current&&(d.current?.dispose?.(),d.current=null,o(`disconnected`))},m=()=>{if(!e?.liveConfigured||!n.trim()||d.current)return;c(null),u([]);let t={};d.current=t;try{t.dispose=wO({endpoint:e.liveEndpoint,model:e.liveModel,key:n,onState:(e,n)=>{d.current===t&&(o(e),c(n??null),(e===`failed`||e===`disconnected`)&&(d.current=null))},onEvent:e=>{d.current===t&&u(t=>[...t.slice(-7),e])}})}catch(e){d.current=null,o(`failed`),c(e instanceof vO?e.code:`network`)}},h=a===`connecting`||a===`connected`;return(0,Q.jsxs)(`section`,{className:`audio-api-section`,"aria-labelledby":f,children:[(0,Q.jsxs)(`header`,{className:`audio-api-head`,children:[(0,Q.jsx)(`h3`,{id:f,children:t(`audio.liveVoice`)}),(0,Q.jsx)(`span`,{className:`muted small`,children:t(e?.liveConfigured?`audio.configured`:e?`audio.notConfigured`:`audio.unknown`)})]}),e&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`audio-api-endpoints`,children:[(0,Q.jsx)(`code`,{children:e.liveModel}),(0,Q.jsx)(QD,{url:e.liveEndpoint}),(0,Q.jsx)(QD,{url:e.realtimeCallsEndpoint})]}),(0,Q.jsxs)(`form`,{className:`audio-api-form`,onSubmit:e=>{e.preventDefault(),m()},children:[(0,Q.jsx)(DO,{value:n,onChange:e=>{p(),c(null),u([]),r(e)}}),(0,Q.jsxs)(`div`,{className:`audio-api-actions`,children:[(0,Q.jsxs)(`button`,{className:`btn btn-primary`,type:`submit`,disabled:h||!e.liveConfigured||!n.trim(),children:[(0,Q.jsx)(it,{width:16,height:16,"aria-hidden":`true`}),t(`audio.connect`)]}),h&&(0,Q.jsxs)(`button`,{className:`btn`,type:`button`,onClick:p,children:[(0,Q.jsx)(N,{width:16,height:16,"aria-hidden":`true`}),t(`audio.disconnect`)]}),(0,Q.jsx)(`span`,{className:`audio-api-status`,role:`status`,children:t(`audio.state.${a}`)})]})]}),(0,Q.jsx)(OO,{code:s}),l.length>0&&(0,Q.jsx)(`pre`,{className:`audio-api-events`,"aria-label":t(`audio.events`),children:l.join(`
50
- `)}),(0,Q.jsxs)(`details`,{className:`audio-api-examples`,children:[(0,Q.jsx)(`summary`,{children:t(`audio.examples`)}),(0,Q.jsx)(eO,{text:TO(e.liveEndpoint,!0,e.liveModel,t(`audio.key`))})]})]})]})}function jO({keys:e,apiBase:t,active:n=!0,onPairingStart:r,attributionSince:a,historyTruncated:o,usageMetadata:s,authMatrix:c,keysLoading:l,keysLoadFailed:u,endpoints:d,claudeCodeEnabled:f,surfaces:p,onSurfacesChanged:m,localeTag:h,newName:g,creating:_,newKey:v,copied:y,rotationSecret:b=null,rotationCopied:x=!1,filteredModels:S,planModels:C,modelsLoading:w,modelsRefreshing:T=!1,modelsLoadFailed:E,modelCount:D,hasModelData:O,modelQuery:k,copiedModelId:A,modelTests:j,canTestModels:M,onNewNameChange:N,onCreate:P,onDismissNewKey:F,onCopyKey:I,onDelete:L,onRevealKey:R,onRename:z,onRotationStart:B,onRotationCommit:V,onRotationAbort:H,onCopyRotationSecret:U,onDismissRotationSecret:ee,onModelQueryChange:W,onCopyModelId:G,onTestModel:te,onRetryModels:ne,sourceLabel:K,protocolLabel:re}){let q=i(),[J,ie]=(0,Z.useState)(null),[Y,X]=(0,Z.useState)(!1),[ae,oe]=(0,Z.useState)(!1),[se,ce]=(0,Z.useState)(!1),[le,ue]=(0,Z.useState)(!1),[de,fe]=(0,Z.useState)(``),[pe,me]=(0,Z.useState)(!1),[he,ge]=(0,Z.useState)(!1),[_e,ve]=(0,Z.useState)(!1),[ye,be]=(0,Z.useState)(!1),[xe,Se]=(0,Z.useState)(!1),[Ce,we]=(0,Z.useState)(!1),[Te,Ee]=(0,Z.useState)(null),De=J?e.find(e=>e.id===J)??null:null,Oe=De?b?.id===De.id?b.rotationId:De.pendingRotation?.id:void 0,ke=Oe!==void 0||!!B,Ae=se||pe||ye,je=()=>{let e=b;if(!e)return;let t=navigator.clipboard?.writeText?.(e.key);if(!t){we(!0);return}t.then(()=>{we(!1),Ee(e.rotationId),window.setTimeout(()=>Ee(null),2e3)}).catch(()=>{we(!0)})},Me=async e=>{if(!(!De||ye)){be(!0),Se(!1);try{let t=Oe;(e===`start`?await B?.(De.id)??!1:t&&(await(e===`commit`?V:H)?.(De.id,t)??!1))||Se(!0)}finally{be(!1)}}},Ne=(0,Z.useMemo)(()=>[{id:`keys`,label:q(`api.section.keys`),meta:l?void 0:String(e.length)},{id:`connect`,label:q(`api.section.connect`)},{id:`endpoints`,label:q(`api.section.endpoints`)},{id:`plan`,label:q(`api.section.plan`)},{id:`dictation`,label:q(`audio.dictation`)},{id:`live-voice`,label:q(`audio.liveVoice`)},{id:`models`,label:q(`api.section.models`),meta:String(D)},{id:`examples`,label:q(`api.section.examples`)}],[q,e.length,l,D]),Pe=()=>{X(!1),oe(!1)},Fe=()=>{ie(null),Pe(),ue(!1),ge(!1),ve(!1)};(0,Z.useEffect)(()=>{if(!Y)return;let e=window.setTimeout(()=>oe(!0),300);return()=>window.clearTimeout(e)},[Y]);let Ie=()=>{De&&X(!0)},Le=async()=>{if(!(!De||!ae||se)){ce(!0),ve(!1);try{await L(De.id)?(Pe(),ie(null)):ve(!0)}finally{ce(!1)}}},Re=()=>{De&&(fe(De.name),ge(!1),ue(!0))},ze=async()=>{if(!De||pe)return;let e=de.trim();if(!e||e===De.name){ue(!1);return}me(!0),ge(!1);try{await z(De.id,e)?ue(!1):ge(!0)}finally{me(!1)}};return(0,Q.jsxs)(`div`,{className:`apikeys-workspace-shell`,children:[!De&&(0,Q.jsx)(NS,{scope:`api`,items:Ne,ariaLabel:q(`api.workspace.sections`),mobileReadingLine:108}),(0,Q.jsx)(`div`,{className:`apikeys-workspace-root`,children:(0,Q.jsx)(`section`,{className:`apikeys-workspace-main`,"aria-label":q(`api.workspace.details`),children:De?(0,Q.jsxs)(`div`,{className:`awi-detail`,children:[(0,Q.jsx)(`div`,{className:`awi-detail-toolbar`,children:(0,Q.jsxs)(`button`,{type:`button`,className:`awi-back`,onClick:Fe,disabled:Ae,children:[(0,Q.jsx)(Ue,{className:`awi-back-chevron`,"aria-hidden":`true`}),q(`modal.back`)]})}),(0,Q.jsxs)(`div`,{className:`awi-detail-body`,children:[(0,Q.jsxs)(`div`,{className:`awi-detail-head`,children:[(0,Q.jsx)(`h2`,{className:`awi-detail-title`,children:De.name}),(0,Q.jsx)(`span`,{className:`awi-detail-actions`,children:Y?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-danger btn-sm awi-confirm-delete`,onClick:()=>{Le()},disabled:!ae||se,children:[(0,Q.jsx)(ot,{}),` `,q(se?`api.key.deleting`:`api.confirm`)]},`confirm-delete`),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:Pe,disabled:se,children:q(`common.cancel`)})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:Re,disabled:le,children:q(`api.key.rename`)},`rename`),(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-danger btn-sm`,onClick:Ie,"aria-label":q(`api.deleteAria`),children:[(0,Q.jsx)(ot,{}),` `,q(`api.workspace.deleteKey`)]},`request-delete`)]})})]}),Y&&(0,Q.jsx)(`p`,{className:`muted awi-delete-hint`,children:q(`api.workspace.deleteConfirm`)}),_e&&(0,Q.jsx)(`p`,{className:`awi-delete-error`,role:`alert`,children:q(`api.deleteFailed`)}),le&&(0,Q.jsxs)(`div`,{className:`awi-rename`,children:[(0,Q.jsx)(`label`,{className:`awi-rename-label`,htmlFor:`awi-key-name`,children:q(`api.key.name`)}),(0,Q.jsx)(`input`,{id:`awi-key-name`,className:`input`,type:`text`,value:de,maxLength:64,disabled:pe,onChange:e=>fe(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),ze())}}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,onClick:()=>{ze()},disabled:pe,children:q(pe?`api.key.renaming`:`api.key.saveName`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>ue(!1),disabled:pe,children:q(`common.cancel`)}),he&&(0,Q.jsx)(`p`,{className:`awi-rename-error`,role:`alert`,children:q(`api.key.renameFailed`)})]}),(0,Q.jsxs)(`div`,{className:`awi-section`,children:[(0,Q.jsx)(`h3`,{className:`awi-section-title`,children:q(`api.workspace.keyDetails`)}),(0,Q.jsxs)(`dl`,{className:`awi-kv`,children:[(0,Q.jsxs)(`div`,{className:`awi-kv-row`,children:[(0,Q.jsx)(`dt`,{children:q(`api.workspace.keyPrefix`)}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(`code`,{children:De.prefix})})]}),(0,Q.jsxs)(`div`,{className:`awi-kv-row`,children:[(0,Q.jsx)(`dt`,{children:q(`api.colCreated`)}),(0,Q.jsx)(`dd`,{children:ZD(De.createdAt,h)})]})]})]}),ke&&(0,Q.jsxs)(`div`,{className:`awi-section`,"aria-live":`polite`,children:[(0,Q.jsx)(`h3`,{className:`awi-section-title`,children:q(`api.rotation.title`)}),Oe?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`muted`,children:q(`api.rotation.pending`)}),De.pendingRotation&&(0,Q.jsxs)(`p`,{className:`muted`,children:[q(`api.rotation.expires`),` `,ZD(De.pendingRotation.expiresAt,h)]}),b?.id===De.id&&(0,Q.jsxs)(`div`,{className:`api-key-reveal`,role:`status`,children:[(0,Q.jsx)(`p`,{children:q(`api.rotation.secretOnce`)}),(0,Q.jsx)(`code`,{children:b.key}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,onClick:U??je,children:x||Te===b.rotationId?q(`api.copied`):q(`api.copy`)}),ee&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:ee,children:q(`common.close`)})]}),Ce&&(0,Q.jsx)(`p`,{className:`awi-delete-error`,role:`alert`,children:q(`api.key.copyFailed`)})]}),(V||H)&&(0,Q.jsxs)(`div`,{className:`awi-detail-actions`,children:[V&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:ye,onClick:()=>{Me(`commit`)},children:q(`api.rotation.commit`)}),H&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:ye,onClick:()=>{Me(`abort`)},children:q(`api.rotation.abort`)})]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`muted`,children:q(`api.rotation.description`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:ye,onClick:()=>{Me(`start`)},children:q(ye?`api.rotation.starting`:`api.rotation.start`)})]}),xe&&(0,Q.jsx)(`p`,{className:`awi-delete-error`,role:`alert`,children:q(`api.rotation.failed`)})]}),(0,Q.jsxs)(`div`,{className:`awi-section`,children:[(0,Q.jsx)(`h3`,{className:`awi-section-title`,children:q(`api.attribution.title`)}),(0,Q.jsx)(pr,{data:s}),a?De.usage.ambiguous?(0,Q.jsx)(`p`,{className:`muted`,children:q(`api.attribution.ambiguous`)}):(0,Q.jsxs)(`dl`,{className:`awi-kv`,children:[(0,Q.jsxs)(`div`,{className:`awi-kv-row`,children:[(0,Q.jsx)(`dt`,{children:q(`api.attribution.requests7d`)}),(0,Q.jsx)(`dd`,{children:De.usage.requests7d.toLocaleString(h)})]}),(0,Q.jsxs)(`div`,{className:`awi-kv-row`,children:[(0,Q.jsx)(`dt`,{children:o||s?.usageIncomplete?q(`api.attribution.totalRequestsAvailable`):q(`api.attribution.totalRequests`)}),(0,Q.jsx)(`dd`,{children:De.usage.totalRequests.toLocaleString(h)})]}),(0,Q.jsxs)(`div`,{className:`awi-kv-row`,children:[(0,Q.jsx)(`dt`,{children:q(`api.attribution.lastUsed`)}),(0,Q.jsx)(`dd`,{children:De.usage.lastUsedAt?ZD(De.usage.lastUsedAt,h):q(s?.usageIncomplete?`api.attribution.noRecordedUse`:`api.attribution.neverUsed`)})]}),(0,Q.jsxs)(`div`,{className:`awi-kv-row`,children:[(0,Q.jsx)(`dt`,{children:o||s?.usageIncomplete?q(`api.attribution.sinceAvailable`):q(`api.attribution.since`)}),(0,Q.jsx)(`dd`,{children:ZD(a,h)})]})]}):(0,Q.jsx)(`p`,{className:`muted`,children:q(`api.attribution.unavailableDetail`)})]})]})]}):(0,Q.jsx)(`div`,{className:`awi-overview`,children:(0,Q.jsxs)(`div`,{className:`awi-overview-section`,children:[(0,Q.jsxs)(`div`,{id:AS(`api`,`keys`),className:`awi-section-anchor`,children:[(0,Q.jsx)(sO,{keys:e,keysLoading:l,keysLoadFailed:u,newName:g,creating:_,newKey:v,copied:y,confirmDelete:null,localeTag:h,showKeyList:!1,onNewNameChange:N,onCreate:P,onDismissNewKey:F,onCopyKey:I,onConfirmDelete:()=>{},onCancelDelete:()=>{},onDelete:()=>{}}),(0,Q.jsx)(_O,{keys:e,keysLoading:l,keysLoadFailed:u,attributionSince:a,usageMetadata:s,localeTag:h,apiBase:t,active:n,onPairingStart:r,busy:Ae,onDelete:L,onReveal:R,onSelect:e=>{ie(e),Pe(),ue(!1),ge(!1),ve(!1)}})]}),(0,Q.jsx)(`div`,{id:AS(`api`,`connect`),className:`awi-section-anchor`,children:(0,Q.jsx)(fO,{apiBase:t,baseUrl:d.baseUrl,hasKeys:e.length>0})}),(0,Q.jsx)(`div`,{id:AS(`api`,`endpoints`),className:`awi-section-anchor`,children:(0,Q.jsx)(oO,{endpoints:d,claudeCodeEnabled:f,authMatrix:c,surfaces:p,apiBase:t,onSurfacesChanged:m})}),(0,Q.jsx)(`div`,{id:AS(`api`,`plan`),className:`awi-section-anchor`,children:(0,Q.jsx)(wy,{apiBase:t,models:C??S,protocolLabel:re},t)}),(0,Q.jsx)(`div`,{id:AS(`api`,`dictation`),className:`awi-section-anchor`,children:n&&(0,Q.jsx)(kO,{audio:d.audio},`${t}:${JSON.stringify(d.audio)}`)}),(0,Q.jsx)(`div`,{id:AS(`api`,`live-voice`),className:`awi-section-anchor`,children:n&&(0,Q.jsx)(AO,{audio:d.audio},`${t}:${JSON.stringify(d.audio)}`)}),(0,Q.jsx)(`div`,{id:AS(`api`,`models`),className:`awi-section-anchor`,children:(0,Q.jsx)(cO,{filteredModels:S,modelsLoading:w,modelsRefreshing:T,modelsLoadFailed:E,modelCount:D,hasModelData:O,modelQuery:k,copiedModelId:A,modelTests:j,claudeCodeEnabled:f,onModelQueryChange:W,onCopyModelId:G,onTestModel:te,onRetryModels:ne,canTestModels:M,sourceLabel:K,protocolLabel:re})}),(0,Q.jsx)(`div`,{id:AS(`api`,`examples`),className:`awi-section-anchor`,children:(0,Q.jsx)(lO,{endpoints:d,claudeCodeEnabled:f})})]})})})})]})}var MO=[],NO=15e3;function PO(e){let t=e.replace(/\/$/,``);if(!t)return YD;try{return new URL(t).host?XD(`${t}/v1/responses`):YD}catch{return YD}}function FO(e){if(!e||!WD(e.authMatrix)||!Array.isArray(e.keys)||e.keys.some(e=>!e||!HD(e.usage)||!IO(e.pendingRotation)))return null;if(e.surfaces!==void 0&&!qD(e.surfaces)){let{surfaces:t,...n}=e;e=n}if(e.endpoints?.audio!==void 0&&!JD(e.endpoints.audio,e.endpoints.baseUrl)){let{audio:t,...n}=e.endpoints;return{...e,endpoints:n}}return e}function IO(e){if(e===void 0)return!0;if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;return typeof t.id==`string`&&!!t.id&&typeof t.createdAt==`string`&&!Number.isNaN(Date.parse(t.createdAt))&&typeof t.expiresAt==`string`&&!Number.isNaN(Date.parse(t.expiresAt))}function LO({apiBase:e,active:t=!0}){let{t:n,locale:r}=D(),i=O.find(e=>e.code===r)?.htmlLang,a=`ocx.apikeys.list.v2:${e}`,o=`ocx.apikeys.models.v1:${e}`,s=`api-keys:${e}`,c=`api-models:${e}`,l=Fa(a),u=Fa(o),d=FO(l?.data??null),f=u?.data??null,p=(0,Z.useRef)(e);(0,Z.useLayoutEffect)(()=>{p.current=e},[e]);let[m,h]=(0,Z.useState)(null),[g,v]=(0,Z.useState)(null),[y,b]=(0,Z.useState)(``),[x,S]=(0,Z.useState)(null),[C,w]=(0,Z.useState)({}),[E,k]=(0,Z.useState)(``),[A,j]=(0,Z.useState)(!1),[M,N]=(0,Z.useState)(null),[P,F]=(0,Z.useState)(!1),[I,L]=(0,Z.useState)(null),[R,z]=(0,Z.useState)(!1),B=(0,Z.useRef)(!1),V=VD(e,t,(0,Z.useCallback)(()=>{N(null),F(!1),L(null),z(!1)},[])),H=(0,Z.useCallback)(async t=>{let r=await pn(await fetch(`${e}/api/keys`,{signal:t}));if(!r||!WD(r.authMatrix))throw Error(n(`api.keysLoadFailed`));let i=r.keys??[];if(i.some(e=>!HD(e.usage)||!IO(e.pendingRotation)))throw Error(n(`api.keysLoadFailed`));let o=i,s=XD(r.endpoint??``),c=qD(r.surfaces),l={keys:o,endpoints:{baseUrl:r.baseUrl??s.baseUrl,responses:r.responsesEndpoint??r.endpoint??YD.responses,chatCompletions:r.chatCompletionsEndpoint??s.chatCompletions,messages:r.messagesEndpoint??s.messages,models:r.modelsEndpoint??s.models,...JD(r.audio,r.baseUrl??s.baseUrl)?{audio:r.audio}:{}},claudeCodeEnabled:r.claudeCodeEnabled!==!1,...c?{surfaces:c}:{},...r.attributionSince?{attributionSince:r.attributionSince}:{},...r.historyTruncated===!0?{historyTruncated:!0}:{},...cr(r),authMatrix:r.authMatrix};return t.aborted||Ia(a,l),l},[e,a,n]),U=(0,Z.useCallback)(async t=>{let r=await fetch(`${e}/v1/models`,{signal:t});if(!r.ok)throw Error(n(`api.modelsLoadFailed`));let i=await r.json(),a=Array.isArray(i)?i:typeof i==`object`&&i&&Array.isArray(i.data)?i.data:null;if(!a)throw Error(n(`api.modelsLoadFailed`));let s=a.filter(e=>typeof e==`object`&&!!e&&typeof e.id==`string`).map(e=>zD(e)).sort((e,t)=>BD(e).localeCompare(BD(t)));return Ia(o,s),s},[e,o,n]),ee=za(s,[e],H,{isEmpty:e=>e.keys.length===0,initialData:d??void 0,initialDataCachedAt:l?.cachedAt??null,staleAfterMs:6e4,enabled:t}),W=za(c,[e],U,{isEmpty:e=>e.length===0,initialData:f??void 0,initialDataCachedAt:u?.cachedAt??null,staleAfterMs:6e4,enabled:t}),G=ee.state,te=W.state,ne=G.data??d,K=te.data??f??MO,re=ne?.keys??[],q=ne?.endpoints??PO(e),J=ne?.claudeCodeEnabled??!0,ie=ne?.surfaces,Y=ne?.attributionSince,X=ne?.historyTruncated===!0,ae=ne?.authMatrix??[],oe=ee.refresh,se=W.refresh,ce=(0,Z.useMemo)(()=>{let e=y.trim().toLowerCase();return e?K.filter(t=>BD(t).toLowerCase().includes(e)||t.displayName.toLowerCase().includes(e)||t.provider.toLowerCase().includes(e)):K},[y,K]),le=async t=>{let r=V.generation.current;if(B.current)return!1;B.current=!0,j(!0),v(null),h(null);try{let i=t??E,a=await fetch(`${e}/api/keys`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:i||`default`})});a.ok&&(p.current===e?oe():zt(s));let o=await fn(a,n(`api.createFailed`));return V.current(r)?typeof o?.key!=`string`||o.key.length===0?(v(n(`api.createFailed`)),!1):(N(o.key),k(``),!0):(h(e),!0)}catch{return v(n(`api.createFailed`)),!1}finally{B.current=!1,j(!1)}},ue=async t=>{v(null);let n=T(NO);try{return(await fetch(`${e}/api/keys`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:t}),signal:n.signal})).ok?(oe(),!0):!1}catch{return!1}finally{n.clear()}},de=async t=>{let n=T(NO);try{let r=await fetch(`${e}/api/keys/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:t}),signal:n.signal,cache:`no-store`});if(r.status===401||r.status===403)return{ok:!1,kind:`denied`};if(!r.ok)return{ok:!1,kind:`failed`};let i=await r.json();return typeof i.key==`string`&&i.key?{ok:!0,key:i.key}:{ok:!1,kind:`failed`}}catch{return{ok:!1,kind:`failed`}}finally{n.clear()}},fe=async(t,n)=>{v(null);let r=T(NO);try{return(await fetch(`${e}/api/keys`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:t,name:n}),signal:r.signal})).ok?(oe(),!0):!1}catch{return!1}finally{r.clear()}},pe=async t=>{let r=V.generation.current;v(null),h(null);let i=T(NO);try{let a=await fetch(`${e}/api/keys/rotate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:t}),signal:i.signal});a.ok&&(p.current===e?oe():zt(s));let o=await fn(a,n(`api.rotation.startFailed`));return V.current(r)?!o||typeof o.key!=`string`||!o.key||typeof o.rotationId!=`string`||!o.rotationId?!1:(L({id:t,key:o.key,rotationId:o.rotationId}),!0):(h(e),!0)}catch{return!1}finally{i.clear()}},me=async(t,n,r)=>{v(null);let i=T(NO);try{return(await fetch(`${e}${r===`commit`?`/api/keys/rotate/commit`:`/api/keys/rotate`}`,{method:r===`commit`?`POST`:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:t,rotationId:n}),signal:i.signal})).ok?(L(e=>e?.id===t?null:e),oe(),!0):!1}catch{return!1}finally{i.clear()}},he=async()=>{if(!I)return;let e=V.generation.current;try{if(await navigator.clipboard.writeText(I.key),!V.current(e))return;z(!0),window.setTimeout(()=>{V.current(e)&&z(!1)},2e3)}catch{V.current(e)&&v(n(`api.key.copyFailed`))}},ge=async()=>{if(!M)return;let e=V.generation.current;v(null);try{if(await navigator.clipboard.writeText(M),!V.current(e))return;F(!0),window.setTimeout(()=>{V.current(e)&&F(!1)},2e3)}catch{if(!V.current(e))return;F(!1),v(n(`api.key.copyFailed`))}},ve=async e=>{try{await navigator.clipboard.writeText(e),S(e),window.setTimeout(()=>S(t=>t===e?null:t),2e3)}catch{}},ye=e=>e.native?n(`api.sourceNative`):e.provider===`combo`?n(`api.sourceCombo`):e.custom?n(`api.sourceCustom`):_e(e.provider,n),be=e=>n(e===`responses`?`api.protocolResponses`:e===`messages`?`api.protocolMessages`:`api.protocolChatCompletions`),xe=(e,t)=>e===`responses`?{url:q.responses,body:{model:t,input:`ping`,max_output_tokens:1,stream:!1}}:e===`messages`?{url:q.messages,body:{model:t,max_tokens:1,messages:[{role:`user`,content:`ping`}]}}:{url:q.chatCompletions,body:{model:t,messages:[{role:`user`,content:`ping`}],max_tokens:1,stream:!1}},Se=(e,t,n)=>w(r=>({...r,[e]:{...r[e],[t]:n}})),Ce=async(e,t)=>{if(!M)return;let r=BD(e),i=xe(t,r);Se(r,t,{state:`testing`});try{let e=await fetch(i.url,{method:`POST`,headers:{"Content-Type":`application/json`,"x-opencodex-api-key":M},body:JSON.stringify(i.body)});if(!e.ok){let n=await e.text();Se(r,t,{state:`error`,detail:n.slice(0,160)||String(e.status)});return}Se(r,t,{state:`ok`})}catch(e){Se(r,t,{state:`error`,detail:e instanceof Error?e.message:n(`api.testFailed`)})}},we=n(`api.subtitle`).split(`{authHeader}`);return(0,Q.jsxs)(`section`,{className:`api-page`,"aria-busy":G.refreshing||te.refreshing||void 0,children:[(0,Q.jsx)(`div`,{className:`page-head`,children:(0,Q.jsx)(`h2`,{children:n(`api.title`)})}),(0,Q.jsxs)(`p`,{className:`page-sub`,children:[we[0],(0,Q.jsx)(`code`,{children:`x-opencodex-api-key`}),we[1]]}),m===e&&(0,Q.jsx)($,{tone:`warn`,children:n(`api.key.mutationHidden`)}),g&&(0,Q.jsx)($,{tone:`err`,children:g}),G.showError&&ne&&(0,Q.jsx)($,{tone:`err`,children:n(`api.keysLoadFailed`)}),G.showSkeleton&&!ne?(0,Q.jsx)(Gv,{label:n(`api.activeKeysLoading`),rows:4}):G.kind===`failed-cold`&&!ne?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)($,{tone:`err`,children:G.error instanceof Error?G.error.message:n(`api.keysLoadFailed`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>oe(),children:n(`common.retry`)})]}):(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsx)(jO,{active:t,onPairingStart:()=>V.invalidate(),keys:re,apiBase:e,attributionSince:Y,historyTruncated:X,usageMetadata:cr(ne),authMatrix:ae,keysLoading:!1,keysLoadFailed:G.showError,endpoints:q,claudeCodeEnabled:J,surfaces:ie,onSurfacesChanged:()=>{oe()},localeTag:i,newName:E,creating:A,newKey:M,copied:P,rotationSecret:I,rotationCopied:R,filteredModels:ce,planModels:K,modelsLoading:te.showSkeleton&&!te.data&&!f,modelsRefreshing:te.refreshing&&te.showError&&(te.data!==void 0||f!==null),modelsLoadFailed:te.showError,modelCount:K.length,hasModelData:te.data!==void 0||f!==null,modelQuery:y,copiedModelId:x,modelTests:C,onNewNameChange:k,onCreate:()=>{le()},onDismissNewKey:()=>N(null),onCopyKey:()=>{ge()},onDelete:ue,onRevealKey:de,onRename:fe,..._()?{onRotationStart:pe,onRotationCommit:(e,t)=>me(e,t,`commit`),onRotationAbort:(e,t)=>me(e,t,`abort`),onCopyRotationSecret:()=>{he()},onDismissRotationSecret:()=>L(null)}:{},onModelQueryChange:b,onCopyModelId:e=>{ve(e)},onTestModel:(e,t)=>{Ce(e,t)},onRetryModels:()=>{se({forceLoading:!0})},canTestModels:M!==null,sourceLabel:ye,protocolLabel:be},e)})]})}var RO=[`none`,`live`,`stopped`,`disabled`,`broken`,`foreign`,`local`,`unknown`];function zO(e){return e===void 0?`none`:RO.find(t=>t===e)??`unknown`}function BO(e){return e.sharedProxy===`unknown`?`unknown`:e.sharedProxy===`foreign`?`foreign`:e.sharedProxy===`local`?`local`:!e.desktopFirstParty&&!e.cliFirstParty&&e.sharedProxy!==`none`?`residual`:e.sharedProxy===`disabled`?`disabled`:(e.sharedProxy===`stopped`||e.sharedProxy===`broken`)&&!e.interceptEligible?`routingOff`:e.sharedProxy===`stopped`?`stopped`:e.sharedProxy===`broken`?`broken`:e.sharedProxy===`none`&&e.cliFirstParty?`notApplied`:e.sharedProxy===`live`&&e.desktopFirstParty!==e.cliFirstParty?`shared`:null}function VO(e){switch(e){case`disabled`:return`claude.intercept.reason.disabled`;case`client_role`:return`claude.intercept.reason.client_role`;case`ephemeral_port`:return`claude.intercept.reason.ephemeral_port`;case`port_in_use`:return`claude.intercept.reason.port_in_use`;case`port_mismatch`:return`claude.intercept.reason.port_mismatch`;case`stopped`:return`claude.intercept.reason.stopped`;default:return`claude.intercept.reason.failed`}}var HO=`failed`;function UO({apiBase:e,reason:t,port:n,onStarted:r}){let a=i(),[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(null),u=async()=>{if(!o){s(!0),l(null);try{let t=await fetch(`${e}/api/claude-intercept/start`,{method:`POST`}),n=await t.json();!t.ok||!n.ok?l({reason:n.reason??HO,port:n.port}):r()}catch{l({reason:HO})}finally{s(!1)}}};return(0,Q.jsxs)(`span`,{role:`status`,children:[a(VO(c?.reason??t),{port:c?.port??n??``}),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:o,onClick:()=>void u(),children:a(o?`claude.intercept.starting`:`claude.intercept.start`)})]})}function WO(e){let[t,n]=(0,Z.useState)(!1),r=(0,Z.useRef)(!1);return{pending:t,change:async(t,i,a)=>{if(!r.current){r.current=!0,n(!0);try{i((await jv(e,`claude`,t)).desiredEnabled)}catch(e){a(e)}finally{r.current=!1,n(!1)}}}}}function GO(e,t){let n=(e??[]).map(e=>({value:e,label:w_(e)}));return[{value:``,label:t},...n]}function KO(e){let t=e.autoConnectSupported===!0;return{autoConnectSupported:t,systemEnv:t&&e.systemEnv===!0}}function qO(){if(typeof crypto<`u`&&typeof crypto.randomUUID==`function`)try{return crypto.randomUUID()}catch{}let e=new Uint8Array(16);if(typeof crypto<`u`&&typeof crypto.getRandomValues==`function`)crypto.getRandomValues(e);else for(let t=0;t<16;t++)e[t]=Math.floor(Math.random()*256);e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``);return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}var JO=829800;function YO(e,t=`en`){if(e>=1e6){let n=e/1e6,r=n.toFixed(1).replace(/\.0$/,``);return Number.isInteger(n)||Number(r)*1e6===e?new Intl.NumberFormat(t,{notation:`compact`,compactDisplay:`short`,maximumFractionDigits:+!Number.isInteger(n)}).format(e):`${Math.round(e/1e3)}k`}return`${Math.round(e/1e3)}k`}function XO(e){return e===`200k`?`200k`:`1m`}var ZO=[`ANTHROPIC_MODEL`,`ANTHROPIC_DEFAULT_OPUS_MODEL`,`ANTHROPIC_DEFAULT_SONNET_MODEL`,`ANTHROPIC_DEFAULT_HAIKU_MODEL`,`ANTHROPIC_DEFAULT_FABLE_MODEL`],QO=/\[1m\]$/i,$O={ANTHROPIC_DEFAULT_OPUS_MODEL:`claude-opus-5-5`,ANTHROPIC_DEFAULT_SONNET_MODEL:`claude-sonnet-5`,ANTHROPIC_DEFAULT_FABLE_MODEL:`claude-fable-5-1`};function ek(e){return e.replace(QO,``)}function tk(e,t){let n=e.tierModels?.haiku?.trim()||e.smallFastModel?.trim()||``;return((t===`ANTHROPIC_MODEL`?e.model:t===`ANTHROPIC_DEFAULT_OPUS_MODEL`?e.tierModels?.opus:t===`ANTHROPIC_DEFAULT_SONNET_MODEL`?e.tierModels?.sonnet:t===`ANTHROPIC_DEFAULT_HAIKU_MODEL`?n:t===`ANTHROPIC_DEFAULT_FABLE_MODEL`?e.tierModels?.fable:``)??``).trim()}function nk(e){let t=e.contextAccounting??`1m`,n=e.servedContextAccounting??t;if(t!==`200k`||n===`200k`)return e.effectiveModelEnv;let r=e.model!==void 0||e.smallFastModel!==void 0||e.tierModels!==void 0,i={};for(let t of ZO){let n=e.effectiveModelEnv[t];if(!n)continue;if(!r){if($O[t]===ek(n))continue;i[t]=ek(n);continue}let a=tk(e,t);a&&(i[t]=QO.test(a)?n:ek(n))}return i}function rk(e){let t=`http://127.0.0.1:${e.port}`,n=e.authMode===`auto`?e.markerMode??`subscription`:e.authMode,r=e.contextAccounting??`1m`,i=e.servedContextAccounting??r,a=r!==`200k`&&i!==`200k`&&e.autoContext&&e.maxContextTokens===null,o=nk(e),s=ZO.filter(e=>o[e]).map(e=>`export ${e}=${o[e]}`);return[`export ANTHROPIC_BASE_URL=${t}`,...n===`proxy`?[`export ANTHROPIC_AUTH_TOKEN=opencodex-proxy`]:[`# no ANTHROPIC_AUTH_TOKEN: your claude.ai login (and connectors) stay active`],`export CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1`,...n===`proxy`?['[ -z "${CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST+x}" ] && export CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST=1']:[],...a?[`export CLAUDE_CODE_AUTO_COMPACT_WINDOW=${e.autoCompactWindow??829800}`]:[],...s,`claude`].join(`
51
- `)}function ik(e){return e?e.backend??`auto`:`inherit`}function ak(e,t){if(t===`inherit`)return;let n={...e,backend:t===`auto`?void 0:t};return t!==`anthropic`&&n.anthropicInstance!==void 0&&(n.anthropicInstance=null),n}function ok(e,t){let n={...e};return t===`anthropic`||t===`anthropic2`?n.anthropicInstance=t:n.anthropicInstance!==void 0&&(n.anthropicInstance=null),n}function sk(e,t){return{...e,model:t}}function ck(e){if(!e)return null;let t=(e.model??``).trim();return e.backend?{backend:e.backend,model:t,...e.anthropicInstance===void 0?{}:{anthropicInstance:e.anthropicInstance}}:!t&&e.anthropicInstance===void 0?null:{backend:null,model:t,...e.anthropicInstance===void 0?{}:{anthropicInstance:e.anthropicInstance}}}function lk({label:e,checked:t,onChange:n,disabled:r=!1,describedBy:i}){return(0,Q.jsxs)(`label`,{className:`toggle`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:t,disabled:r,"aria-label":e,"aria-describedby":i,onChange:e=>n(e.target.checked)}),(0,Q.jsx)(`span`,{className:`slider`,"aria-hidden":`true`})]})}function uk({supported:e,checked:t,onChange:n}){let r=i(),a=e?void 0:`claude-system-env-unsupported`;return(0,Q.jsxs)(`div`,{className:`setting-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-label`,children:[(0,Q.jsx)(`span`,{className:`title`,children:r(`claude.systemEnv`)}),e?(0,Q.jsx)(`span`,{className:`desc`,children:r(`claude.systemEnvDesc`)}):(0,Q.jsx)(`span`,{className:`desc`,id:a,children:(0,Q.jsx)(C,{k:`claude.systemEnvUnsupported`,cmd:`ocx claude`})}),e&&t&&(0,Q.jsx)(`span`,{className:`desc`,style:{color:`var(--red)`},children:r(`claude.systemEnvWarn`)})]}),(0,Q.jsx)(lk,{label:r(`claude.systemEnv`),checked:e&&t,disabled:!e,describedBy:a,onChange:n})]})}function dk({value:e,tierHaikuModel:t,options:n,onChange:r}){let a=i(),o=t??e;return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`muted text-label`,style:{margin:`0 0 8px`},children:a(`claude.smallFastModelAccurateHint`)}),(0,Q.jsx)(an,{value:e,options:n,onChange:r,label:a(`claude.smallFastModel`),style:{maxWidth:420}}),o===``&&(0,Q.jsx)(`p`,{className:`notice-warn`,role:`status`,style:{marginTop:8},children:a(`claude.smallFastModelNativeWarning`)})]})}function fk(e,t){return e&&[`claude-json-oauth`,`claude-credentials-file`,`macos-keychain`,`exported-env`].includes(e)?t(`claude.authSource.${e}`):t(`claude.authSource.unknown`)}function pk({state:e,autoCompactOptions:t,availableModels:n,onStateChange:r}){let a=i();return(0,Q.jsxs)(`div`,{className:`card`,style:{overflow:`hidden`},children:[(0,Q.jsxs)(`div`,{className:`setting-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-label`,children:[(0,Q.jsx)(`span`,{className:`title`,children:a(`claude.authMode`)}),(0,Q.jsx)(`span`,{className:`desc`,children:a(`claude.authModeHint`)})]}),(0,Q.jsx)(`div`,{className:`setting-controls`,children:(0,Q.jsx)(an,{value:e.authMode,options:[{value:`auto`,label:a(`claude.authModeAuto`)},{value:`subscription`,label:a(`claude.authModeSubscription`)},{value:`proxy`,label:a(`claude.authModeProxy`)}],onChange:t=>r({...e,authMode:t}),label:a(`claude.authMode`),style:{minWidth:220},align:`right`,portal:!0})})]}),e.authModeOrigin&&(0,Q.jsxs)(`div`,{className:`claude-effective-auth${e.authModeOrigin===`auto-unknown`?` warn`:``}`,role:`status`,children:[(0,Q.jsx)(`span`,{className:`claude-effective-auth-label`,children:a(`claude.effectiveMode.label`)}),(0,Q.jsxs)(`span`,{children:[e.authModeOrigin===`manual`?a(`claude.effectiveMode.manual`,{mode:e.markerMode===`proxy`?a(`claude.authModeProxy`):a(`claude.authModeSubscription`)}):e.authModeOrigin===`auto-present`?a(`claude.effectiveMode.autoPresent`,{source:fk(e.authFoundBy,a)}):e.authModeOrigin===`auto-absent`?a(`claude.effectiveMode.autoAbsent`):a(`claude.effectiveMode.autoUnknown`),e.admissionKeyActive===!0?` ${a(`claude.effectiveMode.admissionKey`)}`:``]})]}),(0,Q.jsx)(uk,{supported:e.autoConnectSupported,checked:e.systemEnv,onChange:t=>r({...e,systemEnv:t})}),(0,Q.jsxs)(`div`,{className:`setting-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-label`,children:[(0,Q.jsx)(`span`,{className:`title`,children:a(`claude.fastMode`)}),(0,Q.jsx)(`span`,{className:`desc`,children:a(`claude.fastModeDesc`)})]}),(0,Q.jsx)(`div`,{className:`setting-controls`,children:(0,Q.jsx)(an,{value:e.fastMode===null?`auto`:e.fastMode?`on`:`off`,options:[{value:`auto`,label:a(`claude.fastAuto`)},{value:`on`,label:a(`claude.fastOn`)},{value:`off`,label:a(`claude.fastOff`)}],onChange:t=>r({...e,fastMode:t===`auto`?null:t===`on`}),label:a(`claude.fastMode`),style:{minWidth:140},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:a(`claude.contextAccounting`)}),(0,Q.jsx)(`span`,{className:`desc`,children:a(`claude.contextAccountingDesc`)})]}),(0,Q.jsx)(`div`,{className:`setting-controls`,children:(0,Q.jsx)(an,{value:e.contextAccounting,options:[{value:`1m`,label:a(`claude.contextAccounting1m`)},{value:`200k`,label:a(`claude.contextAccounting200k`)}],onChange:t=>r({...e,contextAccounting:t===`200k`?`200k`:`1m`}),label:a(`claude.contextAccounting`),style:{minWidth:140},align:`right`,portal:!0})})]}),e.contextAccounting===`1m`&&(0,Q.jsxs)(`div`,{className:`setting-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-label`,children:[(0,Q.jsx)(`span`,{className:`title`,children:a(`claude.autoContext`)}),(0,Q.jsx)(`span`,{className:`desc`,children:a(`claude.autoContextDesc`)}),e.maxContextTokens!==null&&(0,Q.jsx)(`span`,{className:`desc`,style:{color:`var(--muted)`},children:a(`claude.autoContextInert`)})]}),(0,Q.jsx)(lk,{label:a(`claude.autoContext`),checked:e.autoContext,onChange:t=>r({...e,autoContext:t})})]}),e.contextAccounting===`1m`&&e.autoContext&&(0,Q.jsxs)(`div`,{className:`setting-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-label`,children:[(0,Q.jsx)(`span`,{className:`title`,children:a(`claude.autoCompactWindow`)}),(0,Q.jsx)(`span`,{className:`desc`,children:a(`claude.autoCompactWindowDesc`)}),e.autoCompactWindow!==null&&(0,Q.jsx)(`span`,{className:`desc`,style:{color:`var(--red)`},children:a(`claude.autoCompactWindowWarn`)})]}),(0,Q.jsx)(`div`,{className:`setting-controls`,children:(0,Q.jsx)(an,{value:e.autoCompactWindow===null?``:String(e.autoCompactWindow),options:t,onChange:t=>r({...e,autoCompactWindow:t===``?null:Number(t)}),label:a(`claude.autoCompactWindow`),style:{minWidth:130},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:a(`claude.injectAgents`)}),(0,Q.jsx)(`span`,{className:`desc`,children:a(`claude.injectAgentsDesc`)})]}),(0,Q.jsx)(lk,{label:a(`claude.injectAgents`),checked:e.injectAgents,onChange:t=>r({...e,injectAgents:t})})]}),[`webSearchSidecar`,`visionSidecar`].map(t=>{let i=e[t],o=t===`webSearchSidecar`?`claude.webSearchSidecar`:`claude.visionSidecar`,s=t===`webSearchSidecar`?`claude.webSearchSidecarHint`:`claude.visionSidecarHint`,c=`claude-sidecar-models-${t}`,l=i?.backend??e.sidecarPools?.[t]?.backend;return(0,Q.jsxs)(`div`,{className:`setting-row claudecode-sidecar-row`,children:[(0,Q.jsxs)(`div`,{className:`setting-label setting-copy`,children:[(0,Q.jsx)(`span`,{className:`title`,children:a(o)}),(0,Q.jsx)(`span`,{className:`desc`,children:a(s)})]}),(0,Q.jsxs)(`div`,{className:`setting-controls`,children:[(0,Q.jsx)(an,{value:ik(i),options:[{value:`inherit`,label:a(`claude.useMainSetting`)},{value:`auto`,label:a(`dash.backendAuto`)},{value:`openai`,label:a(`dash.backendOpenAI`)},{value:`anthropic`,label:a(`dash.backendAnthropic`)}],onChange:n=>{r({...e,[t]:ak(i,n)})},label:a(`dash.sidecarBackend`),portal:!0}),(0,Q.jsx)(`input`,{className:`input mono`,value:i?.model??``,onChange:n=>{r({...e,[t]:sk(i,n.target.value)})},placeholder:a(`claude.sidecarModelPlaceholder`),disabled:!i,list:i?c:void 0,"aria-label":a(`dash.sidecarModel`),autoComplete:`off`}),i&&(0,Q.jsx)(`datalist`,{id:c,children:n.map(e=>(0,Q.jsx)(`option`,{value:e},e))}),l===`anthropic`&&(0,Q.jsx)(an,{value:i?.anthropicInstance??``,label:a(`sidecar.pool`),options:[{value:``,label:a(`sidecar.poolCurrent`)},{value:`anthropic`,label:a(`sidecar.poolA`)},{value:`anthropic2`,label:a(`sidecar.poolB`)}],onChange:n=>r({...e,[t]:ok(i,n)}),portal:!0}),l===`anthropic`&&i?.anthropicInstance&&e.sidecarPools?.[t]?.parent&&i.anthropicInstance!==e.sidecarPools[t].parent&&(0,Q.jsx)(`span`,{className:`muted setting-hint`,children:a(`sidecar.poolMixed`)})]})]},t)})]})}function mk({manualEnv:e}){let t=i();return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`muted text-label`,style:{margin:`0 0 8px`},children:(0,Q.jsx)(C,{k:`claude.quickstartHint`,cmd:`ocx claude`})}),(0,Q.jsx)(`pre`,{className:`mono card`,style:{padding:`10px 14px`,overflowX:`auto`,margin:0},children:`ocx claude`}),(0,Q.jsxs)(`details`,{style:{margin:`10px 0 0`},children:[(0,Q.jsx)(`summary`,{className:`muted text-label`,style:{cursor:`pointer`,padding:`2px 2px`},children:t(`claude.manualEnv`)}),(0,Q.jsx)(`pre`,{className:`mono card text-label`,style:{padding:`10px 14px`,overflowX:`auto`,margin:`6px 0 0`},children:e})]})]})}function hk({rows:e,onRowsChange:t}){let n=i();return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`muted text-label`,style:{margin:`0 0 8px`},children:n(`claude.modelMapHint`)}),e.length>0&&(0,Q.jsx)(`div`,{className:`stack`,style:{gap:8},children:e.map((r,i)=>(0,Q.jsxs)(`div`,{className:`row`,style:{gap:8},children:[(0,Q.jsx)(`input`,{className:`input mono`,value:r.from,placeholder:n(`claude.mapFrom`),"aria-label":n(`claude.mapFrom`),onChange:n=>t(e.map((e,t)=>t===i?{...e,from:n.target.value}:e)),style:{flex:1}}),(0,Q.jsx)(`span`,{className:`muted`,"aria-hidden":!0,children:`→`}),(0,Q.jsx)(`input`,{className:`input mono`,value:r.to,placeholder:n(`claude.mapTo`),"aria-label":n(`claude.mapTo`),onChange:n=>t(e.map((e,t)=>t===i?{...e,to:n.target.value}:e)),style:{flex:1}}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon btn-sm`,onClick:()=>t(e.filter((e,t)=>t!==i)),"aria-label":n(`claude.removeMapping`),style:{color:`var(--red)`},children:(0,Q.jsx)(N,{})})]},r.id))}),(0,Q.jsx)(`div`,{style:{marginTop:e.length>0?8:0},children:(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>t([...e,{id:qO(),from:``,to:``}]),children:[(0,Q.jsx)(Le,{}),` `,n(`claude.addMapping`)]})})]})}var gk=`etc`;function _k(e){let t=new Map;for(let n of e){let e=/\(([^)]+)\)\s*$/.exec(n.display_name),r=e?e[1]:gk,i=t.get(r);i?i.push(n):t.set(r,[n])}return Array.from(t)}function vk({aliases:e}){let t=i();return(0,Q.jsxs)(`div`,{className:`claude-aliases`,children:[(0,Q.jsx)(`p`,{className:`muted text-label claude-aliases-hint`,children:t(`claude.aliasesHint`)}),e.length===0?(0,Q.jsx)(`div`,{className:`muted text-label`,children:t(`claude.none`)}):(0,Q.jsx)(`div`,{className:`claude-aliases-scroll`,children:_k(e).map(([e,n])=>(0,Q.jsxs)(`div`,{className:`claude-aliases-group`,children:[(0,Q.jsxs)(`div`,{className:`claude-aliases-group-label`,children:[e===gk?t(`claude.aliasProviderOther`):e,(0,Q.jsx)(`span`,{className:`claude-aliases-group-count`,children:n.length})]}),(0,Q.jsx)(`div`,{className:`claude-aliases-chips`,children:n.map(e=>(0,Q.jsxs)(`span`,{className:`claude-aliases-chip`,children:[(0,Q.jsx)(`code`,{className:`claude-aliases-chip-id`,children:e.id}),e.display_name?(0,Q.jsx)(`span`,{className:`claude-aliases-chip-name`,children:e.display_name}):null]},e.id))})]},e))})]})}var yk=[`authMode`,`systemEnv`,`fastMode`,`autoContext`,`autoCompactWindow`,`contextAccounting`,`injectAgents`,`smallFastModel`,`webSearchSidecar`,`visionSidecar`];function bk(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 xk(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,modelMap:bk(t),webSearchSidecar:ck(e.webSearchSidecar),visionSidecar:ck(e.visionSidecar)}}function Sk(e){return JSON.stringify([xk(e.state,e.rows),e.rows.map(e=>[e.from,e.to])])}function Ck(e,t){return Sk(e)!==Sk(t)}function wk(e){return Object.fromEntries(yk.map(t=>[t,e[t]]))}function Tk(e,t){return{...t,...wk(e)}}function Ek(e,t){return{...e,...wk(t)}}function Dk(e,t){return!e||e.adoptNextRead||!e.savePending&&!Ck(e.draft,e.baseline)?{draft:t,baseline:t,adoptNextRead:!1,savePending:e?.savePending}:{draft:{state:Tk(e.draft.state,t.state),rows:e.draft.rows},baseline:t,adoptNextRead:!1,savePending:e.savePending}}function Ok(e,t){return{state:{...e,...wk(t.state)},rows:Object.entries(bk(t.rows)).map(([e,t])=>({id:qO(),from:e,to:t}))}}function kk(e,t){if(!e)return e;let n=Ok(e.baseline.state,t),r=n.rows,i=Sk(e.draft)===Sk(t);return{draft:i?{state:e.draft.state,rows:r}:e.draft,baseline:n,adoptNextRead:i}}function Ak(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:zO(e.sharedProxy),contextAccounting:XO(e.contextAccounting),servedContextAccounting:XO(e.servedContextAccounting??e.contextAccounting)}}var jk=new Map,Mk=e=>jk.get(e)??0,Nk=e=>{jk.set(e,Mk(e)+1)},Pk=Symbol(`claude-code-live`),Fk=new Map;function Ik(e,t,n){for(let r of Fk.get(e)??[])r(t,n)}var Lk={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 Rk({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 zk({apiBase:e,active:t=!0}){let n=i(),{locale:r}=D(),a=O.find(e=>e.code===r)?.htmlLang??`en`,o=`ocx.claude-code.v1:${e}`,s=`claude-code:${e}`,c=(0,Z.useMemo)(()=>Fa(o),[o]),l=(0,Z.useMemo)(()=>c?.data?{...c.data,state:Ak(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}=WO(e),[S,C]=(0,Z.useState)(!1),w=(0,Z.useRef)(!1),T=(0,Z.useCallback)(async t=>{let r=Mk(o),i=await fn(await fetch(`${e}/api/claude-code`,{signal:t}),n(`claude.loadFail`));if(!i)throw Error(n(`claude.loadFail`));let a={state:Ak({...i,authMode:i.authMode===`proxy`||i.authMode===`subscription`?i.authMode:`auto`,...KO(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:qO(),from:e,to:String(t)}))};if(t.aborted)throw Error(`Claude Code request aborted`);return r===Mk(o)?(Ia(o,a),a):{...a,superseded:!0}},[e,o,n]),E=za(s,[e],T,{isEmpty:()=>!1,enabled:t,initialData:l??void 0,initialDataCachedAt:c?.cachedAt??null,staleAfterMs:6e4}),k=E.state,[A,j]=(0,Z.useState)(k.data);if(k.data!==A){j(k.data);let e=k.data;e&&!e.superseded&&d(t=>Dk(t,{state:e.state,rows:e.rows}))}let M=k.data??l,N=u?.draft.state??M?.state??null,P=u?.draft.rows??M?.rows??[],F=u!==null&&Ck(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=Fa(o)?.data;t&&Ia(o,{...t,state:{...t.state,...e}}),Ik(o,{kind:`live`,fields:e},Pk)},[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=>Dk(e,t))}},t=Fk.get(o)??new Set;return t.add(e),Fk.set(o,t),()=>{t.delete(e)}},[o,z]);let B=(0,Z.useMemo)(()=>GO(N?.available,n(`claude.smallFastModelUnsetOption`)),[N?.available,n]),V=(0,Z.useMemo)(()=>{let e=[1e5,2e5,25e4,3e5,35e4,4e5,5e5,6e5,75e4,JO,9e5,1e6].sort((e,t)=>e-t),t=N?.autoCompactWindow??null,r=t!==null&&!e.includes(t)?[...e,t].sort((e,t)=>e-t):e;return[{value:``,label:n(`claude.autoCompactDefault`,{value:YO(JO,a)})},...r.map(e=>({value:String(e),label:YO(e,a)}))]},[N?.autoCompactWindow,n,a]),H=async()=>{N&&(_(``),await x(!N.enabled,e=>{Nk(o),R({enabled:e}),E.refresh()},e=>{y(!1),_(e instanceof Error&&e.message?e.message:n(`claude.networkError`))}))},U=async()=>{if(!N||w.current)return;w.current=!0,C(!0),_(``);let t=!N.cliFirstParty;try{let r=await fetch(`${e}/api/claude-code`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({cliFirstParty:t})});if(!r.ok){let e=await r.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)?n(VO(e.code),{port:e.port??``,bound:e.bound??``,configured:e.configured??``}):n(i))}await fn(r,n(`claude.saveFailed`)),Nk(o),R({cliFirstParty:t}),E.refresh()}catch(e){y(!1),_(e instanceof Error&&e.message?e.message:n(`claude.networkError`))}finally{w.current=!1,C(!1)}},ee=async()=>{if(!N||!u||f)return;let t=u.draft;_(``),h(``),p(!0),d(e=>e&&{...e,savePending:!0}),Nk(o);try{await fn(await fetch(`${e}/api/claude-code`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(xk(t.state,t.rows))}),n(`claude.saveFailed`)),Nk(o);let r=Fa(o)?.data,i=Ok(r?.state??t.state,t);Ia(o,i),Ik(o,{kind:`saved`,copy:i},z),d(e=>kk(e,t)),y(!0),h(``),_(n(`claude.saved`)),E.refresh()}catch(e){d(e=>e&&{...e,savePending:!1}),y(!1),h(e instanceof Error&&e.message?e.message:n(`claude.networkError`))}finally{p(!1)}},W=()=>{_(``),h(``),d(e=>e&&{draft:{state:Ek(e.draft.state,e.baseline.state),rows:e.baseline.rows},baseline:e.baseline,adoptNextRead:!1})};if(k.kind===`disabled`&&!M)return null;if(k.showSkeleton&&!M)return(0,Q.jsx)(Gv,{label:n(`claude.loading`),rows:3});if(k.kind===`failed-cold`){let e=k.error instanceof Error?k.error.message:n(`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:n(`common.retry`)})]})}if(!N)return null;let G=(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:n(`claude.enabledLabel`)}),(0,Q.jsx)(`span`,{className:`desc`,children:n(`claude.subtitle`)})]}),(0,Q.jsx)(nn,{on:N.enabled,onClick:()=>void H(),disabled:b,label:n(`claude.toggleAria`)})]});return(0,Q.jsxs)(`div`,{className:`claudecode-workspace-shell claudecode-doc`,children:[g&&(0,Q.jsx)($,{tone:v?`ok`:`err`,children:g}),k.showError&&(0,Q.jsx)($,{tone:`err`,children:n(`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:n(`claude.firstParty.label`)}),(0,Q.jsx)(`span`,{className:`desc`,children:n(`claude.firstParty.desc`)})]}),(0,Q.jsx)(nn,{on:N.cliFirstParty,onClick:()=>void U(),disabled:S,label:n(`claude.firstParty.aria`)})]})}),!N.interceptRunning&&(0,Q.jsx)(UO,{apiBase:e,reason:N.interceptReason,port:N.interceptFailurePort,onStarted:()=>E.refresh()}),N.cliFirstParty&&(0,Q.jsx)($,{tone:`warn`,children:n(`claude.firstParty.risk`)}),(()=>{let e=BO(N),t=e&&Lk[e];return t?(0,Q.jsx)($,{tone:`warn`,children:n(t)}):null})(),(0,Q.jsx)(Rk,{title:n(`claude.quickstart`),children:(0,Q.jsx)(mk,{manualEnv:rk(N)})}),(0,Q.jsx)(Rk,{title:n(`claude.workspace.settings`),children:(0,Q.jsx)(pk,{state:N,autoCompactOptions:V,availableModels:N.available??[],onStateChange:I})}),(0,Q.jsx)(Rk,{title:n(`claude.smallFastModel`),children:(0,Q.jsx)(dk,{value:N.smallFastModel,tierHaikuModel:N.tierModels?.haiku,options:B,onChange:e=>I({...N,smallFastModel:e})})}),(0,Q.jsx)(Rk,{title:n(`claude.modelMap`),count:P.length,children:(0,Q.jsx)(hk,{rows:P,onRowsChange:L})}),(0,Q.jsx)(Rk,{title:n(`claude.aliases`),count:N.aliases.length,children:(0,Q.jsx)(vk,{aliases:N.aliases})}),(0,Q.jsx)(`div`,{className:`card claudecode-master-card`,children:G}),(0,Q.jsxs)(`div`,{className:`ccw-savebar`,role:`region`,"aria-label":n(`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:n(F?`claude.saveBar.dirty`:`claude.saveBar.clean`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:!F||f,onClick:W,children:n(`claude.saveBar.revert`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:f,onClick:()=>{ee()},children:n(`common.save`)})]})]})}function Bk({apiBase:e,active:t=!0,embedded:n=!1}){let r=i();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)(zk,{apiBase:e,active:t},e)]})}function Vk(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 Hk(e){return new Set(Object.keys(e))}function Uk(e,t){return t!==null&&e===t}function Wk(e){return e||(typeof localStorage>`u`?void 0:localStorage)}function Gk(e){return{read(t){let n=Wk(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=Wk(n);if(r)try{r.setItem(e,JSON.stringify([...t]))}catch{}}}}function Kk(e,t){let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n}function qk(e){return e.label||e.route}function Jk({apiBase:e,bindings:t,suggestions:n,models:r,onSaved:i}){let{t:a}=D(),[o,s]=(0,Z.useState)(``),[c,l]=(0,Z.useState)(``),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(null),m=(0,Z.useMemo)(()=>r.filter(e=>e.available),[r]),h=(0,Z.useMemo)(()=>new Set(Object.keys(t)),[t]),g=(0,Z.useMemo)(()=>n.filter(e=>!h.has(e)),[n,h]),_=(0,Z.useMemo)(()=>Object.entries(t).sort(([e],[t])=>e.localeCompare(t)),[t]),v=o.trim(),y=v.startsWith(`claude-`)&&c!==``&&u===null,b=async(t,n)=>{if(u===null){d(n),p(null);try{let n=await fn(await fetch(`${e}/api/claude-desktop/first-party-bindings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}),a(`claudeDesktop.firstParty.bindings.saveFailed`));if(!n||n.ok!==!0||typeof n.modelBindings!=`object`||n.modelBindings===null)throw Error(a(`claudeDesktop.firstParty.bindings.saveFailed`));s(``),l(``),i(n.modelBindings)}catch(e){p(e instanceof Error?e.message:a(`claudeDesktop.firstParty.bindings.saveFailed`))}finally{d(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:a(`claudeDesktop.firstParty.bindings.title`)}),(0,Q.jsx)(`p`,{className:`claude-bindings-hint`,children:a(`claudeDesktop.firstParty.bindings.hint`)}),f&&(0,Q.jsx)($,{tone:`err`,children:f}),_.length===0?(0,Q.jsx)(`p`,{className:`claude-bindings-empty`,children:a(`claudeDesktop.firstParty.bindings.empty`)}):(0,Q.jsx)(`ul`,{className:`claude-bindings-list`,children:_.map(([e,t])=>{let n=m.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)(Ue,{className:`claude-bindings-arrow`,width:12,height:12,"aria-hidden":`true`}),(0,Q.jsxs)(`select`,{className:`input claude-bindings-select`,"aria-label":a(`claudeDesktop.firstParty.bindings.routeLabel`),value:t,disabled:u!==null,onChange:t=>void b({set:{[e]:t.target.value}},e),children:[!n&&(0,Q.jsx)(`option`,{value:t,children:t}),m.map(e=>(0,Q.jsx)(`option`,{value:e.route,children:qk(e)},e.route))]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm claude-bindings-remove`,"aria-label":a(`claudeDesktop.firstParty.bindings.remove`,{id:e}),disabled:u!==null,onClick:()=>void b({remove:[e]},e),children:(0,Q.jsx)(N,{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":a(`claudeDesktop.firstParty.bindings.pickerLabel`),placeholder:a(`claudeDesktop.firstParty.bindings.pickerPlaceholder`),value:o,disabled:u!==null,onChange:e=>s(e.target.value)}),(0,Q.jsx)(`datalist`,{id:`claude-bindings-suggestions`,children:g.map(e=>(0,Q.jsx)(`option`,{value:e},e))}),(0,Q.jsxs)(`select`,{className:`input claude-bindings-select`,"aria-label":a(`claudeDesktop.firstParty.bindings.routeLabel`),value:c,disabled:u!==null,onChange:e=>l(e.target.value),children:[(0,Q.jsx)(`option`,{value:``,children:a(`claudeDesktop.firstParty.bindings.routePlaceholder`)}),m.map(e=>(0,Q.jsx)(`option`,{value:e.route,children:qk(e)},e.route))]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:!y,onClick:()=>void b({set:{[v]:c}},v),children:a(u!==null&&u===v?`common.saving`:`claudeDesktop.firstParty.bindings.add`)})]})]})}function Yk(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 Xk(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 Zk({apiBase:e,picker:t,onUpdated:n,pickerReason:r,pickerFailurePort:i}){let{t:a}=D(),[o,s]=(0,Z.useState)(null),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(null),f=o??t,p=async()=>{if(!c){l(!0),d(null);try{let t=await fetch(`${e}/api/claude-desktop/picker`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:!f.desired,persist:!0})}),r;if(t.ok)r=await fn(t,a(`claudeDesktop.updateFailed`));else{try{r=await t.json()}catch{throw Error(a(`claudeDesktop.updateFailed`))}if(!r.picker)throw Error(a(VO(r.reason),{port:r.port??``}))}if(!r||r.ok!==!0&&!r.picker||!r.picker||!Yk(r.picker))throw Error(a(`claudeDesktop.updateFailed`));s(r.picker),n?.(r.picker)}catch(e){d(e instanceof Error?e.message:a(`claudeDesktop.updateFailed`))}finally{l(!1)}}};return(0,Q.jsxs)(`section`,{className:`claude-picker`,"aria-labelledby":`claude-picker-title`,children:[!f.listenerReady&&r&&(0,Q.jsx)(`span`,{role:`status`,children:a(VO(r===`port_in_use`&&!i?`failed`:r),{port:i??``})}),!f.listenerReady&&!r&&(0,Q.jsx)(UO,{apiBase:e,onStarted:()=>{s(null),n?.(f)}}),(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:a(`claudeDesktop.picker.title`)}),(0,Q.jsx)(`p`,{className:`claude-picker-hint`,children:a(`claudeDesktop.picker.hint`)})]}),(0,Q.jsx)(`button`,{type:`button`,role:`switch`,className:`toggle ${f.desired?`on`:``}`,"aria-checked":f.desired,"aria-label":a(`claudeDesktop.picker.toggle`),disabled:c,onClick:()=>void p(),children:(0,Q.jsx)(`span`,{className:`toggle-knob`})})]}),u&&(0,Q.jsx)($,{tone:`err`,children:u}),(0,Q.jsxs)(`p`,{className:`claude-picker-state claude-picker-state-${f.reason}`,"aria-live":`polite`,children:[(0,Q.jsx)(`span`,{className:`claude-picker-state-dot`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{children:a(Xk(f.reason))}),f.reason===`trust_pending`&&f.hint&&(0,Q.jsx)(`code`,{children:f.hint})]}),(0,Q.jsx)(`p`,{className:`claude-picker-models`,children:a(`claudeDesktop.picker.models`,{count:f.models})}),(0,Q.jsx)(`p`,{className:`claude-picker-offline-note`,role:`note`,children:a(`claudeDesktop.picker.offlineNote`)})]})}var Qk=[`opus`,`fable`,`sonnet`,`haiku`];function $k(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 eA(e,t){let n=Object.fromEntries(Qk.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 Qk){let i=n[e].toSorted(),a=t.defaults[e];r[e]=a&&i.includes(a)?a:i[0]??null}return r}function tA(e,t,n){return e.filter(e=>(t.assignments[e.route]?.family??`opus`)===n).length}function nA(e,t,n){return e.defaults[n]??t[n]??``}function rA(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 iA(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 aA=Gk(`ocx.claudeDesktop.collapsedFamilies.v2`),oA=[`first-party`,`gateway`];function sA(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 cA(e){if(typeof e!=`object`||!e)return!1;let t=e,n=t.health;if(t.mode!==void 0&&!oA.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&&!sA(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 lA={opus:`claudeDesktop.family.opus`,fable:`claudeDesktop.family.fable`,sonnet:`claudeDesktop.family.sonnet`,haiku:`claudeDesktop.family.haiku`};function uA(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 dA(e){let t={...e.profile.assignments};for(let n of e.models){let e=t[n.route]??n.assignment;t[n.route]={family:Qk.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 fA(e,t){return e&&typeof e==`object`&&`error`in e&&typeof e.error==`string`?e.error:t}var pA=`⁣route⁣`;function mA({route:e,t}){let[n=``,r=``]=t(`claudeDesktop.roles.unavailableOption`,{route:pA}).split(pA);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 hA(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 gA(e){return Fa(e)?.data??null}function _A(e){return Fa(e)?.cachedAt??null}function vA(e){let t=gA(e);return{held:t,data:t?.data??null,profile:t?.profile??null,savedProfile:t?.profile?uA(t.profile):null,destinations:t?.data?Object.fromEntries(t.data.models.map(e=>[e.route,t.profile.assignments[e.route]?.family??`opus`])):{}}}function yA({apiBase:e,active:t=!0}){let{t:n,locale:r}=D(),i=O.find(e=>e.code===r)?.htmlLang,a=`ocx.claude-desktop.v1:${e}`,o=`claude-desktop:${e}`,s=(0,Z.useMemo)(()=>vA(a),[a]),[c,l]=(0,Z.useState)(()=>s.profile),[u,d]=(0,Z.useState)(()=>s.savedProfile),[f,p]=(0,Z.useState)(()=>s.destinations),[m,h]=(0,Z.useState)(null),[g,_]=(0,Z.useState)(``),[v,y]=(0,Z.useState)(null),[b,x]=(0,Z.useState)({}),[S,C]=(0,Z.useState)({}),[w,T]=(0,Z.useState)(()=>aA.read()??new Set(Qk)),[E,k]=(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 r=await fn(await fetch(`${e}/api/claude-desktop`,{signal:t}),n(`claudeDesktop.loadFail`));if(!r||!(`profile`in r)||!(`models`in r))throw Error(fA(r,n(`claudeDesktop.loadFail`)));let i=dA(r),o={data:r,profile:i};if(t.aborted)throw Error(`Claude Desktop request aborted`);if(l(i),d(uA(i)),p(Object.fromEntries(r.models.map(e=>[e.route,i.assignments[e.route]?.family??`opus`]))),aA.read()===null){let e=Object.fromEntries(Qk.map(e=>[e,0]));for(let t of r.models)e[i.assignments[t.route]?.family??`opus`]+=1;T(Hk(e))}return Ia(a,o),o},[e,a,n,p,l,d]),R=za(o,[e],L,{isEmpty:()=>!1,enabled:t,initialData:s.held??void 0,initialDataCachedAt:_A(a),staleAfterMs:6e4}),z=R.state,B=z.data??(s.data&&s.profile?{data:s.data,profile:s.profile}:null),V=B?.data??null,H=c??B?.profile??null,U=u??B?.profile??null,ee=B?Object.fromEntries(B.data.models.map(e=>[e.route,B.profile.assignments[e.route]?.family??`opus`])):{},W=Object.keys(f).length>0?f:ee,G=(0,Z.useMemo)(()=>H!==null&&U!==null&&JSON.stringify(H)!==JSON.stringify(U),[H,U]),te=(0,Z.useMemo)(()=>{let e=Object.fromEntries(Qk.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]),ne=(0,Z.useMemo)(()=>V&&H?eA(V.models,H):{opus:null,fable:null,sonnet:null,haiku:null},[V,H]),K=`ocx.claude-desktop.status.v1:${e}`,re=`claude-desktop-status:${e}`,q=Fa(K),J=q&&cA(q.data)?q.data:null,ie=za(re,[e],async t=>{let n=await pn(await fetch(`${e}/api/claude-desktop/status`,{signal:t}));if(!cA(n))throw Error(`Claude Desktop status unavailable`);return Ia(K,n),n},{isEmpty:()=>!1,pollMs:5e3,enabled:t,initialData:J??void 0}),Y=ie.state,X=Y.data??J,ae=Y.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,r=!1)=>{H&&(!r&&H.assignments[e]?.family===t||(l(n=>n&&$k(n,e,t,r)),p(n=>({...n,[e]:t})),_(n(`claudeDesktop.moved`,{route:e,family:n(lA[t])}))))},be=e=>{let t=Kk(w,e);aA.write(t),T(t)},xe=async t=>{if(!(!H||v)){y(`save`),h(null);try{await fn(await fetch(`${e}/api/claude-desktop`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({profile:H})}),n(`claudeDesktop.saveFailed`)),d(uA(H)),t?(y(`apply`),(await fn(await fetch(`${e}/api/claude-desktop/apply`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({mode:le})}),n(`claudeDesktop.applyFailed`)))?.saved===!1?(h({tone:`warn`,text:n(`claudeDesktop.appliedMarkerUnsaved`)}),_(n(`claudeDesktop.appliedMarkerUnsaved`))):(h({tone:`ok`,text:n(`claudeDesktop.savedApplied`)}),_(n(`claudeDesktop.savedAppliedAnnounce`))),F(null)):(h({tone:`ok`,text:n(`claudeDesktop.saved`)}),_(n(`claudeDesktop.savedAnnounce`))),ie.refresh()}catch(e){let t=e instanceof Error?e.message:n(`claudeDesktop.updateFailed`);h({tone:`err`,text:t}),_(t)}finally{y(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),_(n(`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(n(`claudeDesktop.importExpected`));let r=dA({...V,profile:e});l(r),h({tone:`ok`,text:n(`claudeDesktop.importReady`)}),_(n(`claudeDesktop.importedAnnounce`))}catch(e){let t=e instanceof Error?e.message:n(`claudeDesktop.importInvalid`);h({tone:`err`,text:t}),_(n(`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)(Gv,{label:n(`claudeDesktop.loading`),rows:4});if(z.kind===`failed-cold`){let e=z.error instanceof Error?z.error.message:n(`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:n(`claudeDesktop.retry`)})]})}if(!V||!H)return null;let Te=nA(H,ne,`opus`),Ee=nA(H,ne,`haiku`),De=new Map(V.models.map(e=>[e.route,e])),Oe=(e,t,r)=>{let i=rA(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)(mA,{route:e,t:n}):e})}return r?i.unshift({value:``,label:n(`claudeDesktop.roles.unset`)}):e||i.unshift({value:``,label:n(`claudeDesktop.roles.pick`)}),i},ke=e=>{if(!e)return;let t=De.get(e);return t?.available?t.label:n(`claudeDesktop.roles.unavailableOption`,{route:e})},Ae=iA(V.models,Te||null,Ee||null),je=tA(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:n(`claudeDesktop.subtitle`,{port:V.port})})}),(0,Q.jsxs)(`fieldset`,{className:`claude-mode-picker`,disabled:v!==null||!se,children:[(0,Q.jsx)(`legend`,{children:n(`claudeDesktop.mode.legend`)}),oA.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:[n(e===`first-party`?`claudeDesktop.mode.firstParty`:`claudeDesktop.mode.gateway`),e===`gateway`&&(0,Q.jsx)(`span`,{className:`claude-mode-default`,children:n(`claudeDesktop.mode.defaultBadge`)}),oe&&ce===e&&(0,Q.jsx)(`span`,{className:`claude-mode-current`,children:n(`claudeDesktop.mode.current`)})]}),(0,Q.jsx)(`span`,{className:`claude-mode-hint`,children:n(e===`first-party`?`claudeDesktop.mode.firstPartyHint`:`claudeDesktop.mode.gatewayHint`)})]},e)),le===`first-party`&&(0,Q.jsx)(`p`,{className:`claude-mode-risk`,role:`note`,children:n(`claudeDesktop.mode.firstPartyRisk`)}),ue&&(0,Q.jsx)(`span`,{className:`claude-mode-switch-note`,children:n(`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?n(`claudeDesktop.loadFail`):X?X.desiredEnabled?ce===`gateway`&&X.activeProfile===!1?n(`claudeDesktop.status.notActiveProfile`):X.stale?n(`claudeDesktop.status.stale`):X.applied?n(ce===`first-party`?`claudeDesktop.status.appliedFirstParty`:`claudeDesktop.status.applied`):n(`claudeDesktop.status.notApplied`):n(`claudeDesktop.status.disabled`):n(`claudeDesktop.loading`)}),X?.firstParty&&ce===`first-party`&&X.desiredEnabled&&(0,Q.jsx)(`span`,{className:`claude-status-health`,children:X.firstParty.interceptRunning?n(`claudeDesktop.firstParty.proxyRunning`,{port:X.firstParty.proxyPort}):(0,Q.jsx)(UO,{apiBase:e,reason:X.firstParty.interceptReason,port:X.firstParty.proxyPort,onStarted:()=>ie.refresh()})}),X?.health.lastRequestAt&&(0,Q.jsxs)(`span`,{className:`claude-status-health`,children:[n(`claudeDesktop.health.lastRequest`),`:`,` `,new Date(X.health.lastRequestAt).toLocaleTimeString(i)]}),X&&X.health.requestCount>0&&(0,Q.jsx)(`span`,{className:`claude-status-health`,children:n(`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${G?` active`:``}`,children:n(G?`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:!G||v!==null,onClick:()=>void xe(!1),children:n(v===`save`?`claudeDesktop.saving`:`common.save`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:v!==null,onClick:()=>void xe(!0),children:v===`apply`?n(`claudeDesktop.applying`):v===`save`?n(`claudeDesktop.saving`):X?.desiredEnabled===!1?n(`claudeDesktop.enableApply`):n(ue?`claudeDesktop.switchModeApply`:`claudeDesktop.saveApply`)})]})]})]}),X?.riskWarning&&le!==`first-party`&&(0,Q.jsx)(`p`,{className:`claude-mode-risk`,role:`note`,children:n(`claudeDesktop.mode.firstPartyRisk`)}),(0,Q.jsx)(`div`,{className:`sr-only`,"aria-live":`polite`,"aria-atomic":`true`,children:g}),m&&(0,Q.jsx)($,{tone:m.tone,children:m.text}),z.showError&&(0,Q.jsx)($,{tone:`err`,children:n(`claudeDesktop.loadFail`)}),ae&&X&&(0,Q.jsx)($,{tone:`err`,children:n(`claudeDesktop.loadFail`)}),ce===`first-party`&&X?.firstParty?.picker&&(0,Q.jsx)(Zk,{apiBase:e,picker:X.firstParty.picker,pickerReason:X.firstParty.pickerReason,pickerFailurePort:X.firstParty.pickerFailurePort,onUpdated:()=>void ie.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)(Jk,{apiBase:e,bindings:_e,suggestions:ve,models:V.models,onSaved:e=>{me(e),ie.refresh()}}),V.models.length===0&&(0,Q.jsx)(on,{title:n(`claudeDesktop.emptyTitle`),children:n(`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:n(`claudeDesktop.roles.title`)}),ce===`first-party`&&(0,Q.jsx)(`p`,{className:`claude-desktop-roles-scope`,children:n(`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:n(`claudeDesktop.roles.default`)}),(0,Q.jsx)(`span`,{className:`desc`,children:n(`claudeDesktop.roles.defaultDesc`)})]}),(0,Q.jsx)(`div`,{className:`setting-controls`,children:(0,Q.jsx)(an,{value:Te,options:Oe(Te,Ee,!1),onChange:e=>{e&&ye(e,`opus`,!0)},label:n(`claudeDesktop.roles.default`),title:ke(Te),disabled:v!==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:n(`claudeDesktop.roles.quick`)}),(0,Q.jsx)(`span`,{className:`desc`,children:n(`claudeDesktop.roles.quickDesc`)})]}),(0,Q.jsx)(`div`,{className:`setting-controls`,children:(0,Q.jsx)(an,{value:Ee,options:Oe(Ee,Te,je),onChange:e=>{e&&ye(e,`haiku`,!0)},label:n(`claudeDesktop.roles.quick`),title:ke(Ee),disabled:v!==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:[n(`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:n(`claudeDesktop.importJson`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:Se,children:n(`claudeDesktop.exportJson`)})]})]}),V.models.length>0&&(0,Q.jsx)(`p`,{className:`claude-desktop-list-hint`,children:n(`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=hA(e.contextWindow,n);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:n(`claudeDesktop.defaultBadge`)}),e.route===Ee&&(0,Q.jsx)(`span`,{className:`claude-row-default claude-row-quick`,children:n(`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:n(`claudeDesktop.supports1m`)}),!e.available&&(0,Q.jsx)(`span`,{className:`badge badge-muted`,children:n(`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:n(`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)(Ue,{className:`ocx-chevron`,width:14,height:14,"aria-hidden":`true`,style:{transform:A?`rotate(90deg)`:`none`}}),n(`claudeDesktop.advanced.title`)]}),(0,Q.jsx)(`span`,{className:`claude-desktop-advanced-chips`,children:Qk.map(e=>{let t=te[e].length,r=H.defaults[e],i=ne[e];return(0,Q.jsxs)(`span`,{className:`claude-desktop-advanced-chip`,children:[(0,Q.jsx)(`b`,{children:n(lA[e])}),i?(0,Q.jsx)(`code`,{title:i,children:i}):(0,Q.jsx)(`span`,{children:n(`claudeDesktop.advanced.empty`)}),t>0&&(0,Q.jsx)(`span`,{className:`claude-desktop-advanced-count`,children:t}),t>0&&r===null&&(0,Q.jsx)(`span`,{className:`claude-default-needed`,children:n(`claudeDesktop.chooseDefault`)}),i&&r!==null&&i!==r&&(0,Q.jsx)(`span`,{className:`claude-default-needed`,children:n(`claudeDesktop.temporaryDefault`)})]},e)})})]}),(0,Q.jsx)(`p`,{className:`claude-desktop-advanced-desc`,children:n(`claudeDesktop.advanced.desc`)}),(0,Q.jsx)(`div`,{className:`ocx-group-stack`,"aria-label":n(`claudeDesktop.assignmentsLabel`),children:Qk.map(e=>{let t=te[e],r=Vk(t,b[e]??``,S[e]??6),i=w.has(e),a=ne[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)(Ue,{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:n(lA[e])}),(0,Q.jsx)(`span`,{className:`ocx-group-count`,children:n(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:n(`claudeDesktop.chooseDefault`)}),a&&a!==H.defaults[e]&&(0,Q.jsx)(`span`,{className:`claude-default-needed`,title:a,children:n(`claudeDesktop.temporaryDefault`)})]}),!i&&(0,Q.jsxs)(`div`,{id:`claude-lane-body-${e}`,children:[r.showSearch&&(0,Q.jsx)(`input`,{className:`input claude-lane-search`,type:`search`,placeholder:n(`models.search`),"aria-label":n(`models.search`),value:b[e]??``,onChange:t=>{let n=t.target.value;x(t=>({...t,[e]:n})),C(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:n(`claudeDesktop.laneEmpty`)}):r.noMatch?(0,Q.jsx)(`div`,{className:`claude-lane-empty`,children:n(`claudeDesktop.laneNoMatch`)}):r.shown.map(t=>{let r=H.assignments[t.route],i=hA(t.contextWindow,n),a=W[t.route]??`opus`,o=E[t.route]??Uk(t.route,ne[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:()=>k(e=>({...e,[t.route]:!o})),children:[(0,Q.jsx)(Ue,{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:n(`claudeDesktop.contextUnknown`)}),t.supports1m===!0&&(0,Q.jsx)(`span`,{className:`claude-1m-chip`,children:n(`claudeDesktop.supports1m`)}),t.effortSupported===!1&&(0,Q.jsx)(`span`,{className:`claude-effort-badge off`,children:n(`claudeDesktop.effort.displayOnly`)}),t.effortSupported===!0&&(0,Q.jsx)(`span`,{className:`claude-effort-badge on`,children:n(`claudeDesktop.effort.supported`)}),H.defaults[e]===t.route&&(0,Q.jsx)(`span`,{className:`claude-row-default`,children:n(`claudeDesktop.defaultBadge`)}),(0,Q.jsx)(`span`,{className:`badge ${t.available?`badge-green`:`badge-muted`}`,children:t.available?n(`claudeDesktop.available`):n(`claudeDesktop.unavailable`)})]}),o&&(0,Q.jsxs)(`div`,{className:`claude-model-body`,id:`claude-model-body-${t.route}`,children:[ne[e]===t.route&&H.defaults[e]!==t.route&&(0,Q.jsx)(`span`,{className:`claude-effective-default`,children:n(`claudeDesktop.temporaryDefault`)}),(0,Q.jsxs)(`div`,{className:`claude-field`,children:[(0,Q.jsx)(`span`,{children:n(`claudeDesktop.alias`)}),(0,Q.jsx)(`code`,{className:`claude-alias`,title:r.alias,children:r.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:()=>l(n=>n&&{...n,defaults:{...n.defaults,[e]:t.route}})}),n(`claudeDesktop.useAsDefault`,{family:n(lA[e])})]}),(0,Q.jsxs)(`div`,{className:`claude-move-row`,children:[(0,Q.jsx)(`label`,{htmlFor:`move-${t.route}`,children:n(`claudeDesktop.moveTo`)}),(0,Q.jsx)(`select`,{id:`move-${t.route}`,className:`input`,value:a,disabled:!t.available,onChange:e=>p(n=>({...n,[t.route]:e.target.value})),children:Qk.map(e=>(0,Q.jsx)(`option`,{value:e,children:n(lA[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:n(`claudeDesktop.move`)})]})]})]},t.route)}),r.hidden>0&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm claude-lane-more`,onClick:()=>C(t=>({...t,[e]:(t[e]??6)+6})),children:n(`models.showMore`,{n:r.hidden})})]})]})]},e)})})]})]})}function bA(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 xA=Gk(`ocx.grok.collapsedGroups.v2`),SA=[{id:`native`,tkey:`grok.groupNative`},{id:`routed`,tkey:`grok.groupRouted`}],CA=new Set(SA.map(e=>e.id));function wA(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 TA({apiBase:e,active:t=!0}){let n=i(),r=`ocx.grok.status.v1:${e}`,a=Fa(r),o=a?.data??null,[s,c]=(0,Z.useState)(null),[l,u]=(0,Z.useState)(()=>xA.read()??new Set(CA)),[d,f]=(0,Z.useState)(null),[p,m]=(0,Z.useState)(null),[h,g]=(0,Z.useState)(``),_=(0,Z.useCallback)(async t=>{let i=await fn(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 Ia(r,a),a},[e,r,n]),v=`grok-status:${e}`,y=za(v,[e],_,{isEmpty:()=>!1,initialData:o??void 0,initialDataCachedAt:a?.cachedAt??null,staleAfterMs:6e4,enabled:t}),{state:b}=y,x=y.refresh,S=b.data??o,C=(0,Z.useMemo)(()=>new Set(S?.excluded??[]),[S]),w=s??C,T=(0,Z.useMemo)(()=>s!==null&&(s.size!==C.size||[...s].some(e=>!C.has(e))),[s,C]),E=(0,Z.useMemo)(()=>new Map((S?.models??[]).map(e=>[e.id,e.alias])),[S]),D=e=>{let t=Kk(l,e);xA.write(t),u(t)},O=e=>{let t=e?new Set(SA.map(e=>e.id)):new Set;xA.write(t),u(t)},k=(e,t)=>{c(n=>{let r=new Set(n??C);return t?r.delete(e):r.add(e),r})},A=async t=>{if(!d){f(`save`),m(null);try{await fn(await fetch(`${e}/api/grok/selection`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({excluded:[...w]})}),n(`grok.saveFailed`));let i=[...w];if(S&&Bt(v,{...S,excluded:i}),c(null),t){f(`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?(m({tone:`err`,text:r.message??n(`grok.applySkipped`)}),g(r.message??n(`grok.applySkipped`))):(m({tone:`ok`,text:n(`grok.savedApplied`)}),g(n(`grok.savedApplied`))),await x()}else m({tone:`ok`,text:n(`grok.saved`)}),g(n(`grok.saved`)),S&&Ia(r,{...S,excluded:i})}catch(e){let t=e instanceof Error?e.message:n(`grok.saveFailed`);m({tone:`err`,text:t}),g(t)}finally{f(null)}}};if(b.showSkeleton&&!S)return(0,Q.jsx)(`section`,{className:`grok-page`,children:(0,Q.jsx)(Gv,{label:n(`grok.loading`),rows:4})});if(b.kind===`failed-cold`){let e=b.error instanceof Error?b.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:()=>x(),children:n(`common.retry`)})]})}return(0,Q.jsxs)(`section`,{className:`grok-page`,"aria-busy":b.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:h}),p&&(0,Q.jsx)($,{tone:p.tone,children:p.text}),b.showError&&(0,Q.jsx)($,{tone:`err`,children:n(`grok.loadFail`)}),S&&S.candidates.length>0&&(0,Q.jsxs)(`div`,{className:`claude-profile-bar`,children:[(0,Q.jsx)(`span`,{className:`claude-dirty${T?` active`:``}`,children:n(T?`grok.unsaved`:`grok.upToDate`)}),(0,Q.jsxs)(`div`,{className:`claude-save-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:!T||d!==null,onClick:()=>void A(!1),children:n(d===`save`?`grok.saving`:`common.save`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:!T||d!==null,onClick:()=>void A(!0),children:n(d===`apply`?`grok.applying`:d===`save`?`grok.saving`:`grok.saveApply`)})]})]}),S?.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:S.baseUrl??`—`})]}),(0,Q.jsx)(`p`,{className:`page-sub`,children:(0,Q.jsx)(`code`,{children:S.configPath})})]}):(0,Q.jsxs)(on,{title:n(`grok.notConfiguredTitle`),children:[n(`grok.notConfiguredHint`),(0,Q.jsx)(`br`,{}),(0,Q.jsx)(`code`,{children:S?.configPath})]}),S&&S.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:()=>O(!0),disabled:d!==null,children:[(0,Q.jsx)(Ue,{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:()=>O(!1),disabled:d!==null,children:[(0,Q.jsx)(Ue,{width:12,height:12,"aria-hidden":`true`,style:{transform:`rotate(90deg)`}}),` `,n(`models.expandAll`)]})]}),SA.map(e=>{let t=bA(S.candidates,E,w,e.id);if(t.total===0)return null;let r=l.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:()=>D(e.id),children:[(0,Q.jsx)(Ue,{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)(nn,{on:e.enabled,onClick:()=>k(e.id,!e.enabled),disabled:d!==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:wA(e.contextWindow,n)})]},e.id))})]},e.id)})]})]})}async function EA(e,t){try{let n=await fetch(`${e}/api/native-integrations/cursor`,{signal:t});if(!n.ok)return null;let r=await pn(n);return!r||typeof r!=`object`||!r.gateway||!r.privateInference?null:r}catch{return null}}async function DA(e,t){try{let n=await fetch(`${e}/api/native-integrations/cursor/local-installer`,{signal:t});if(!n.ok)return null;let r=await pn(n);return!r||typeof r!=`object`||typeof r.available!=`boolean`?null:r}catch{return null}}function OA({value:e,label:t}){let n=i(),[r,a]=(0,Z.useState)(!1),o=(0,Z.useRef)(null);(0,Z.useEffect)(()=>()=>{o.current!==null&&window.clearTimeout(o.current)},[]);let s=async()=>{try{await navigator.clipboard.writeText(e),a(!0),o.current!==null&&window.clearTimeout(o.current),o.current=window.setTimeout(()=>a(!1),1500)}catch{a(!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 s(),"aria-label":`${n(`integrations.cursor.copy`)} ${t}`,children:n(r?`integrations.cursor.copied`:`integrations.cursor.copy`)})]})}function kA({labelKey:e,installed:t,path:n,version:r}){let a=i();return(0,Q.jsxs)(`div`,{className:`cursor-detect-row`,"data-installed":t?`true`:`false`,children:[(0,Q.jsx)(`span`,{className:`cursor-detect-name`,children:a(e)}),(0,Q.jsx)(`span`,{className:`badge ${t?`badge-green`:`badge-muted`}`,children:a(t?`integrations.cursor.detected`:`integrations.cursor.notFound`)}),t&&n&&(0,Q.jsxs)(`span`,{className:`cursor-detect-path muted`,children:[r?`${r} · `:``,n]})]})}function AA({apiBase:e}){let t=i(),[n,r]=(0,Z.useState)(`idle`),[a,o]=(0,Z.useState)(null),s=(0,Z.useRef)(null);(0,Z.useEffect)(()=>()=>s.current?.abort(),[]);let c=async()=>{s.current?.abort();let t=new AbortController;s.current=t,r(`checking`);let n=await DA(e,t.signal);t.signal.aborted||(o(n),r(`done`))};return n===`done`&&a?.available&&a.url!==null?(0,Q.jsxs)(`span`,{"data-cursor-installer-hint":!0,children:[t(`integrations.cursor.installerIntro`,{version:a.version??t(`integrations.cursor.unknownVersion`)}),` `,(0,Q.jsx)(`a`,{href:a.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 c(),disabled:n===`checking`,"data-cursor-installer-check":!0,children:t(n===`checking`?`integrations.cursor.installerChecking`:`integrations.cursor.installerCheck`)})]})}function jA({apiBase:e,active:t}){let{t:n,locale:r}=D(),[i,a]=(0,Z.useState)(()=>Date.now()),o=(0,Z.useCallback)(async t=>{let n=await EA(e,t);if(!n)throw Error(`cursor status unavailable`);return a(Date.now()),n},[e]),s=za(`integration-cursor-page:${e}`,[e],o,{isEmpty:()=>!1,enabled:t,pollMs:15e3,pauseWhenHidden:!0}),c=s.state.data??null,l=Fo(n);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:n(`integrations.cursor.title`)}),(0,Q.jsx)(`p`,{children:n(`integrations.cursor.intro`)}),s.state.showError&&(0,Q.jsx)($,{tone:`err`,children:n(`integrations.cursor.unavailable`)}),!c&&!s.state.showError&&(0,Q.jsx)(Gv,{label:n(`integrations.cursor.loading`),rows:4}),c&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`cursor-card`,children:[(0,Q.jsx)(`h4`,{children:n(`integrations.cursor.detection`)}),(0,Q.jsx)(kA,{labelKey:`integrations.cursor.privateInference`,installed:c.privateInference.installed,path:c.privateInference.path,version:c.privateInference.version}),(0,Q.jsx)(kA,{labelKey:`integrations.cursor.regular`,installed:c.regularCursor.installed,path:c.regularCursor.path,version:null}),!c.privateInference.installed&&(0,Q.jsxs)($,{tone:`warn`,children:[n(c.regularCursor.installed?`integrations.cursor.regularOnly`:`integrations.cursor.nothingFound`),` `,(0,Q.jsx)(`a`,{href:c.guideUrl,target:`_blank`,rel:`noreferrer`,"data-cursor-guide":`notice`,children:n(`integrations.cursor.guide`)}),c.regularCursor.installed&&(0,Q.jsxs)(Q.Fragment,{children:[` `,(0,Q.jsx)(`span`,{"data-cursor-installer":!0,children:(0,Q.jsx)(AA,{apiBase:e})})]})]})]}),(0,Q.jsxs)(`div`,{className:`cursor-card`,children:[(0,Q.jsx)(`h4`,{children:n(`integrations.cursor.gateway`)}),(0,Q.jsx)(`p`,{className:`muted`,children:n(`integrations.cursor.gatewayHint`)}),(0,Q.jsx)(OA,{label:n(`integrations.cursor.baseUrl`),value:c.gateway.baseUrl}),c.gateway.apiKeyMode===`placeholder`?(0,Q.jsx)(OA,{label:n(`integrations.cursor.apiKey`),value:c.gateway.placeholder}):(0,Q.jsxs)(`div`,{className:`cursor-gateway-row`,children:[(0,Q.jsx)(`span`,{className:`cursor-gateway-label`,children:n(`integrations.cursor.apiKey`)}),(0,Q.jsx)(`span`,{className:`cursor-gateway-value`,children:n(`integrations.cursor.apiKeyCredential`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>Wt(`integrations/keys`),children:n(`integrations.tab.keys`)})]})]}),(0,Q.jsxs)(`div`,{className:`cursor-card`,"data-seen":c.lastSeen?`true`:`false`,children:[(0,Q.jsx)(`h4`,{children:n(`integrations.cursor.connection`)}),c.lastSeen?(0,Q.jsx)(`p`,{children:(0,Q.jsx)(`span`,{className:`badge ${i-c.lastSeen.at<864e5?`badge-green`:`badge-muted`}`,children:n(`integrations.cursor.seen`,{time:Po(c.lastSeen.at,l,i),ua:c.lastSeen.userAgent})})}):(0,Q.jsx)(`p`,{className:`muted`,children:n(`integrations.cursor.neverSeen`)})]}),(0,Q.jsxs)(`div`,{className:`cursor-card`,children:[(0,Q.jsx)(`h4`,{children:n(`integrations.cursor.models`)}),(0,Q.jsx)(`p`,{className:`muted`,children:c.effortTable.source===`bundle`?n(`integrations.cursor.ladderFromBundle`,{version:c.effortTable.version??n(`integrations.cursor.unknownVersion`)}):n(`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:n(`integrations.cursor.colModel`)}),(0,Q.jsx)(`th`,{children:n(`integrations.cursor.colReasoning`)}),(0,Q.jsx)(`th`,{children:n(`integrations.cursor.colContext`)})]})}),(0,Q.jsx)(`tbody`,{children:c.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:n(`integrations.cursor.noControlTitle`),"aria-label":n(`integrations.cursor.noControlTitle`),children:n(`integrations.cursor.noControl`)}),e.effortRows.length>0?(0,Q.jsx)(`span`,{className:`cursor-effort-rows`,children:n(e.effortRows.length===1?`integrations.cursor.effortRowsOne`:`integrations.cursor.effortRowsMany`,{n:e.effortRows.length})}):(0,Q.jsx)(`span`,{className:`cursor-effort-rows muted`,children:n(`integrations.cursor.effortRowsOff`)})]})}),(0,Q.jsx)(`td`,{children:e.context?`${G(e.context.defaultWindow,r)} · ${G(e.context.longWindow,r)}`:n(`integrations.cursor.singleWindow`)})]},e.id))})]}),c.models.some(e=>e.tableLess)&&(0,Q.jsx)(`p`,{className:`muted`,"data-cursor-tableless-hint":!0,children:n(`integrations.cursor.tableLessHint`)})]}),(0,Q.jsx)(`p`,{children:(0,Q.jsx)(`a`,{href:c.guideUrl,target:`_blank`,rel:`noreferrer`,children:n(`integrations.cursor.guide`)})})]})]})}var MA={"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`},NA={"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 PA({state:e,installed:t,id:n}){let r=i(),a=e===`unknown`||e===`not-installed`||t?e:`not-installed`;return(0,Q.jsx)(`span`,{id:n,className:NA[a],"data-integration-state":a,children:r(MA[a])})}var FA={apply:`integrations.plan.operation.apply`,overwrite:`integrations.plan.operation.overwrite`,disable:`integrations.plan.operation.disable`,restore:`integrations.plan.operation.restore`},IA={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`},LA={none:`integrations.plan.foreign.none`,unowned:`integrations.plan.foreign.unowned`,"foreign-edit":`integrations.plan.foreign.foreignEdit`,drift:`integrations.plan.foreign.drift`},RA={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 zA({plan:e,missingStorePath:t}){let n=i(),r=e.refusalReason?RA[e.refusalReason]:void 0,a=e.supersededReason===`missing-store`?e.missingStoreDocument:void 0,o=a===void 0?n(r??`integrations.plan.refused`):t===void 0?n(`integrations.plan.refusal.missingStore`,{document:a}):n(`integrations.status.missingStore`,{path:t,document:a});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(FA[e.operation])})}),e.foreignEdit!==`none`&&(0,Q.jsx)(`p`,{children:n(LA[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:o}),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(IA[e.kind])}),` `,(0,Q.jsx)(`code`,{children:e.path})]},`${e.kind}:${e.path}`))})]})}function BA({plan:e,plans:t,missingStorePath:n}){let r=i();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)(zA,{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)(zA,{plan:e.plan})]},`${e.clientId}:${e.plan.fingerprint}`))]})}function VA({copyKey:e,vars:t}){let n=i()(e,t),r=t?.path;if(!r||!n.includes(r))return(0,Q.jsx)(`p`,{children:n});let[a,...o]=n.split(r);return(0,Q.jsxs)(`p`,{children:[a,(0,Q.jsx)(`code`,{children:r}),o.join(r)]})}function HA(e){return e.changes.some(e=>e.kind===`snapshot`||e.kind===`journal`)}function UA({copy:e,plan:t=null,plans:n,hasUnboundAction:r=!1,planStale:a=!1,planLoading:o=!1,planFailure:s=null,missingStorePath:c,onConfirm:l,onClose:u}){let d=i(),f=(0,Z.useRef)(null),p=(0,Z.useRef)(null),m=(0,Z.useRef)(null),[h,g]=(0,Z.useState)(!1),[_,v]=(0,Z.useState)(null),[y,b]=(0,Z.useState)(null),x=`integration-consequence-dialog-title`,S=t!==null||o||s!==null||n!==void 0,C=y?.sourceFingerprint===(t?.fingerprint??null)?y.plan:t,w=y?.sourceFingerprint===(t?.fingerprint??null),T=n!==void 0&&!r&&!n.some(e=>e.plan.canApply),E=!S||(C?HA(C):n?.some(e=>HA(e.plan))===!0),D=(0,Z.useCallback)(()=>{h||u()},[u,h]);(0,Z.useEffect)(()=>{let e=f.current,t=document.activeElement;return p.current=t?.tagName===`BUTTON`?t:null,e&&!e.open&&e.showModal(),m.current?.focus(),()=>{e?.open&&e.close(),p.current?.isConnected&&p.current.focus?.()}},[]);let O=(0,Z.useCallback)(e=>{e.preventDefault(),D()},[D]),k=(0,Z.useCallback)(async()=>{if(!h){g(!0),v(null);try{await l(C??void 0)}catch(e){if(e instanceof $_&&e.stalePlan){b({sourceFingerprint:t?.fingerprint??null,plan:e.stalePlan});return}v(e instanceof Error?e.message:d(`integrations.error.generic`))}finally{g(!1)}}},[C,l,h,t?.fingerprint,d]),A=[(0,Q.jsx)(VA,{copyKey:e.changesKey,vars:e.vars},`changes`),(0,Q.jsx)(VA,{copyKey:e.breakageKey,vars:e.vars},`breakage`)];return E&&A.push((0,Q.jsx)(VA,{copyKey:e.undoKey,vars:e.vars},`undo`)),e.sideEffectKey&&A.push((0,Q.jsx)(VA,{copyKey:e.sideEffectKey,vars:e.vars},`side-effect`)),(0,Q.jsxs)(`dialog`,{ref:f,className:`modal-overlay`,"aria-labelledby":x,"aria-busy":h,onCancel:O,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":d(`common.close`),tabIndex:-1,onClick:D}),(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:x,children:d(e.titleKey,e.vars)}),(0,Q.jsx)(`button`,{ref:m,type:`button`,className:`btn btn-ghost btn-sm`,onClick:D,disabled:h,children:d(`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:[o&&(0,Q.jsx)(`p`,{children:d(`integrations.preview.loading`)}),h&&(0,Q.jsx)(`p`,{children:d(`integrations.mutation.pending`)}),(w||a)&&(0,Q.jsx)($,{tone:`err`,children:d(`integrations.preview.stale`)}),s&&(0,Q.jsx)($,{tone:`err`,children:s})]}),(0,Q.jsx)(BA,{plan:C,plans:n,missingStorePath:c}),_&&(0,Q.jsx)($,{tone:`err`,children:_}),(0,Q.jsx)(`div`,{className:`modal-actions`,children:(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>void k(),disabled:h||o||!!s||S&&!C&&n===void 0||T||C?.canApply===!1,children:d(e.confirmKey)})})]})]})}function WA({apiBase:e,row:t,onClose:n,onRestored:r,profileId:a,onReconcile:o}){let s=i(),c=(0,Z.useRef)(null),l=(0,Z.useRef)(null),u=(0,Z.useRef)(null),d=(0,Z.useRef)(!1),f=(0,Z.useRef)(n),p=(0,Z.useRef)(r),m=(0,Z.useRef)(o),h=(0,Z.useRef)(s),g=(0,Z.useRef)(null),_=(0,Z.useRef)(0),[v,y]=(0,Z.useState)(null),[b,x]=(0,Z.useState)(!0),[S,C]=(0,Z.useState)(!1),[w,T]=(0,Z.useState)(!1),[E,D]=(0,Z.useState)(null),[O,k]=(0,Z.useState)(null),A=t.clientId===`aside`?a??t.profileId:void 0,j=v?.plan??null,M=j?.foreignEdit===`drift`;(0,Z.useEffect)(()=>{f.current=n,p.current=r,m.current=o,h.current=s},[n,o,r,s]);let N=(0,Z.useCallback)(()=>{w||(_.current+=1,g.current?.abort(),g.current=null,f.current())},[w]);(0,Z.useEffect)(()=>{let e=c.current,t=document.activeElement;return l.current=t?.tagName===`BUTTON`?t:null,u.current=t?.closest?.(`section, [role='region'], main`)??null,e&&!e.open&&e.showModal(),()=>{e?.open&&e.close();let t=u.current;if(d.current&&t?.isConnected){t.hasAttribute(`tabindex`)||t.setAttribute(`tabindex`,`-1`),t.focus?.();return}let n=l.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=_.current+1;_.current=r,g.current?.abort(),g.current=n,x(!0),D(null),k(null),y(null),C(!1);try{let i=!1,a=await dv(e,t.opId,i,n.signal,A);if(a.refusalReason===`drift_requires_confirm`&&(i=!0,a=await dv(e,t.opId,i,n.signal,A)),n.signal.aborted||r!==_.current)return;y({plan:a,confirmDrift:i})}catch(e){if(n.signal.aborted||r!==_.current)return;if(rv(e)){m.current?.(),f.current();return}D(h.current(`integrations.preview.failed`))}finally{!n.signal.aborted&&r===_.current&&(g.current=null,x(!1))}},[e,t.opId,A]);(0,Z.useEffect)(()=>{let e=window.setTimeout(()=>{P()},0);return()=>{window.clearTimeout(e),_.current+=1,g.current?.abort(),g.current=null}},[P]);let F=(0,Z.useCallback)(e=>{e.preventDefault(),N()},[N]),I=async()=>{if(w||b||!v||!v.plan.canApply)return;let n=v.confirmDrift;T(!0),k(null);try{await pv(e,{opId:t.opId,confirmDrift:n,profileId:A,binding:iv(v.plan)}),d.current=!0,p.current(),f.current()}catch(r){if(t.clientId===`aside`&&m.current?.(),r instanceof $_&&r.stalePlan){let i=r.stalePlan,a=n;T(!1);try{if(i.refusalReason===`drift_requires_confirm`){let n=new AbortController,r=_.current+1;_.current=r,g.current?.abort(),g.current=n,x(!0),a=!0;try{i=await dv(e,t.opId,a,n.signal,A)}finally{!n.signal.aborted&&r===_.current&&(g.current=null,x(!1))}if(n.signal.aborted||r!==_.current)return}}catch(e){if(e instanceof Error&&e.name===`AbortError`)return;if(rv(e)){m.current?.(),f.current();return}D(h.current(`integrations.preview.failed`));return}y({plan:i,confirmDrift:a}),C(!0);return}k(Rv(s,r)),T(!1)}};return(0,Q.jsxs)(`dialog`,{ref:c,className:`modal-overlay`,"aria-labelledby":`integration-restore-title`,"aria-busy":w,onCancel:F,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":s(`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:s(M?`integrations.restore.driftTitle`:`integrations.restore.title`)})}),(0,Q.jsx)(`div`,{className:`modal-desc`,children:s(M?`integrations.restore.driftBody`:`integrations.restore.body`)}),(0,Q.jsxs)(`div`,{role:`status`,"aria-live":`polite`,"aria-atomic":`true`,children:[b&&(0,Q.jsx)(`p`,{children:s(`integrations.preview.loading`)}),w&&(0,Q.jsx)(`p`,{children:s(`integrations.mutation.pending`)}),S&&(0,Q.jsx)($,{tone:`err`,children:s(`integrations.preview.stale`)})]}),(0,Q.jsx)(BA,{plan:j}),E&&(0,Q.jsx)($,{tone:`err`,children:E}),O&&(0,Q.jsx)($,{tone:`err`,children:O}),(0,Q.jsxs)(`div`,{className:`modal-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:N,disabled:w,children:s(`common.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>void I(),disabled:w||b||!j?.canApply||!!E,children:s(w?`integrations.restore.pending`:M?`integrations.restore.confirmDrift`:`integrations.restore.confirm`)})]})]})]})}var GA={opencode:`integrations.tab.opencode`,pi:`integrations.tab.pi`,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`},KA={apply:`integrations.kind.apply`,disable:`integrations.kind.disable`,refresh:`integrations.kind.refresh`,restore:`integrations.kind.restore`,overwrite:`integrations.kind.overwrite`};function qA(e){return e===`current`||e===`stale`}function JA(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 YA(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 XA(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 ZA(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=XA(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 QA(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 $A(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 ej(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=$A(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 tj(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 nj(e){return{id:e.clientId,hash:`integrations/${e.clientId}`,labelKey:GA[e.clientId],state:e.installed?e.state:`not-installed`,installed:e.installed,applied:e.installed&&(qA(e.state)||N_(e)),detail:e.configPath,detailKey:null,detailVars:null,toggle:e.clientId,toggleBlocked:null,togglePath:e.configPath,status:e}}function rj(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=[JA(e.codex,t,e.nativeSettled),ZA(e.claude,n,e.nativeSettled),QA(e.claudeDesktop,e.native?.find(e=>e.clientId===`claude-desktop`),e.nativeSettled),ej(e.grok,r,e.nativeSettled),tj(e.cursor)];for(let t of M_){let n=i.get(t);if(n){a.push(nj(n));continue}e.clientsSettled||a.push({id:t,hash:`integrations/${t}`,labelKey:GA[t],state:`unknown`,installed:!1,applied:!1,detail:null,detailKey:null,detailVars:null,toggle:null,toggleBlocked:null,togglePath:null,status:null})}return{keysRow:YA(e.keyPhase,e.keyCount),rows:a}}function ij(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 aj=6;function oj({row:e,showClient:t,onRestore:n,onDelete:r}){let a=i();return(0,Q.jsxs)(`li`,{className:`integration-history-row`,children:[(0,Q.jsx)(`span`,{className:`integration-history-kind`,children:a(KA[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:a(`integrations.action.snapshotExpired`)}):(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>n(e),children:e.undoable?a(`integrations.action.undo`):a(`integrations.action.restorePoint`)}),e.deletable&&r&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>r(e),"aria-label":a(`integrations.rollback.deleteAria`,{at:new Date(e.at).toLocaleString()}),children:a(`integrations.rollback.delete`)})]})}function sj({rows:e,showClient:t,onRestore:n,onDelete:r}){let a=i(),[o,s]=(0,Z.useState)(aj),[c,...l]=e;if(!c)return null;let u=l.slice(0,o),d=l.length-u.length;return(0,Q.jsxs)(`div`,{className:`integration-history`,children:[(0,Q.jsx)(`ul`,{className:`integration-history-list`,children:(0,Q.jsx)(oj,{row:c,showClient:t,onRestore:n,onDelete:r})}),l.length>0&&(0,Q.jsxs)(`details`,{className:`integration-history-older`,children:[(0,Q.jsx)(`summary`,{children:a(`integrations.rollback.older`)}),(0,Q.jsx)(`ul`,{className:`integration-history-list`,children:u.map(e=>(0,Q.jsx)(oj,{row:e,showClient:t,onRestore:n,onDelete:r},e.opId))}),d>0&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm integration-history-more`,onClick:()=>s(e=>e+aj),children:a(`integrations.rollback.showMore`,{n:String(Math.min(d,aj))})})]})]})}var cj={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`},lj={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`},uj={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`},dj={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`},fj={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`},pj={titleKey:`integrations.bulk.title`,changesKey:`integrations.bulk.body`,breakageKey:`integrations.bulk.breakage`,undoKey:`integrations.bulk.undo`,confirmKey:`integrations.bulk.confirm`};function mj(e){return e.flatMap(e=>e.plan?[{clientId:e.clientId,label:e.label,plan:e.plan}]:[])}function hj(e){return e.state===`current`||e.state===`stale`||N_(e)}function gj({row:e,pending:t,result:n,onOpen:r,onToggle:a,onOverwrite:o}){let s=i(),c=e.detail??(e.detailKey?s(e.detailKey,e.detailVars??void 0):null),l=e.toggleBlocked!==null&&(e.applied||e.toggleBlocked.reason===`orphaned_marker`),u=l&&e.toggleBlocked&&(e.toggle===`claude`||e.toggle===`grok`||e.toggle===`codex`)?Rv(s,new Ev(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,d=e.toggleOn??e.applied,f=e.status!==null&&N_(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)(LD,{src:ID(e.id),label:s(e.labelKey),size:20}),(0,Q.jsx)(`h4`,{children:(0,Q.jsx)(`button`,{type:`button`,className:`integration-card-link`,onClick:r,children:s(e.labelKey)})}),(0,Q.jsx)(PA,{state:e.state,installed:e.installed})]}),c&&(0,Q.jsx)(`p`,{className:e.detail?`integration-path`:`integration-meta`,children:c}),e.status?.reason===`candidate-conflict`&&e.status.conflictPaths?.map(e=>(0,Q.jsx)($,{tone:`err`,children:s(`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&&a&&(0,Q.jsxs)(`div`,{className:`integration-toggle-control`,children:[(0,Q.jsx)(nn,{on:d,onClick:a,disabled:e.state===`unknown`||!e.installed||(e.state===`conflict`||e.state===`unsafe`)&&!f||l||t,label:s(d?`integrations.action.disable`:`integrations.action.apply`)}),u&&(0,Q.jsx)(`p`,{className:`integration-toggle-blocked`,children:u})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:r,tabIndex:-1,children:s(`integrations.action.settings`)}),o&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-danger`,onClick:o,disabled:t,children:s(`integrations.action.overwrite`)})]})]})}function _j({apiBase:e,active:t=!0}){let n=i(),[r,a]=(0,Z.useState)(!1),[o,s]=(0,Z.useState)(null),[c,l]=(0,Z.useState)(null),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)({}),[m,h]=(0,Z.useState)(null),[g,_]=(0,Z.useState)(null),[v,y]=(0,Z.useState)(null),b=(0,Z.useRef)(null),x=(0,Z.useRef)(0),S=(0,Z.useRef)(null),C=(0,Z.useRef)(0),w=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{if(m!==null)return;let e=w.current;e&&(w.current=null,e.isConnected&&e.focus())},[m]),(0,Z.useEffect)(()=>()=>{x.current+=1,C.current+=1,b.current?.abort(),S.current?.abort()},[]);let T=(0,Z.useCallback)(async t=>(await sv(e,t)).clients,[e]),E=(0,Z.useCallback)(async t=>(await lv(e,void 0,t)).operations,[e]),D=(0,Z.useCallback)(t=>gv(e,t),[e]),O=(0,Z.useCallback)(t=>_v(e,t),[e]),k=(0,Z.useCallback)(t=>vv(e,t),[e]),A=(0,Z.useCallback)(t=>yv(e,t),[e]),j=(0,Z.useCallback)(t=>bv(e,t),[e]),M=(0,Z.useCallback)(t=>EA(e,t),[e]),N=(0,Z.useCallback)(async t=>(await Av(e,t))?.clients??null,[e]),P=za(`integration-states:${e}`,[e],T,{isEmpty:e=>e.length===0,enabled:t,sessionCacheKey:`ocx.integrations.states.v1:${e}`}),F=za(`integration-journal-all:${e}`,[e],E,{isEmpty:e=>e.length===0,enabled:t,sessionCacheKey:`ocx.integrations.journal.v1:${e}`}),I=za(`integration-codex:${e}`,[e],D,{isEmpty:e=>e===null,enabled:t,sessionCacheKey:`ocx.integrations.codex.v1:${e}`}),L=za(`integration-keys:${e}`,[e],O,{isEmpty:()=>!1,enabled:t,sessionCacheKey:`ocx.integrations.keys.v1:${e}`}),R=za(`integration-claude:${e}`,[e],k,{isEmpty:e=>e===null,enabled:t,sessionCacheKey:`ocx.integrations.claude.v1:${e}`}),z=za(`integration-claude-desktop:${e}`,[e],A,{isEmpty:e=>e===null,enabled:t,sessionCacheKey:`ocx.integrations.claude-desktop.v1:${e}`}),B=za(`integration-grok:${e}`,[e],j,{isEmpty:e=>e===null,enabled:t,sessionCacheKey:`ocx.integrations.grok.v1:${e}`}),V=za(`integration-cursor:${e}`,[e],M,{isEmpty:e=>e===null,enabled:t,sessionCacheKey:`ocx.integrations.cursor.v1:${e}`}),H=za(`integration-native:${e}`,[e],N,{isEmpty:e=>e===null,enabled:t,sessionCacheKey:`ocx.integrations.native.v1:${e}`}),U=P.state.data??[],ee=F.state.data??[],W=U.filter(hj),G=U.filter(e=>e.installed),te=P.state.data!==void 0,ne=H.state.data??null,K=ne!==null,re=L.state.kind===`cold`||L.state.kind===`retrying-cold`?`checking`:L.state.kind===`failed-cold`||L.state.kind===`failed-with-stale`?`unavailable`:`settled`,{keysRow:q,rows:J}=rj({clients:U,clientsSettled:te,codex:I.state.data??null,keyCount:L.state.data??null,keyPhase:re,claude:R.state.data??null,claudeDesktop:z.state.data??null,grok:B.state.data??null,cursor:V.state.data??null,native:ne,nativeSettled:K}),ie=ij(J),Y=()=>{P.refresh(),F.refresh(),I.refresh(),L.refresh(),R.refresh(),z.refresh(),B.refresh(),H.refresh()},X=async()=>{if(r||v||W.length===0)return;let t=new AbortController,i=C.current+1;C.current=i,S.current?.abort(),S.current=t,y({actions:[],loading:!0,failure:null,stale:!1,failures:[]});try{let r=await Promise.all(W.map(async r=>{let i=J.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 uv(e,r.clientId,`disable`,t.signal);return{clientId:r.clientId,label:i?n(i.labelKey):r.clientId,plan:a}}));if(t.signal.aborted||i!==C.current)return;S.current=null,y({actions:r,loading:!1,failure:null,stale:!1,failures:[]})}catch(e){if(t.signal.aborted||i!==C.current)return;if(S.current=null,rv(e)){y(null),Y();return}y({actions:[],loading:!1,failure:n(`integrations.preview.failed`),stale:!1,failures:[]})}},ae=()=>{C.current+=1,S.current?.abort(),S.current=null,y(null)},oe=async t=>{if(r||t.actions.length===0)return;a(!0),s(null);let i=[...t.failures],o=[];for(let r of t.actions){if(r.plan&&!r.plan.canApply){i.push(`${r.clientId}: ${n(`integrations.plan.refused`)}`);continue}try{await fv(e,r.clientId,{enabled:!1,...r.plan?{binding:iv(r.plan)}:{}})}catch(e){if(r.plan&&e instanceof $_&&e.stalePlan){o.push({...r,plan:e.stalePlan});continue}i.push(`${r.clientId}: ${Rv(n,e)}`)}}if(o.length>0){Y(),a(!1),y({actions:o,loading:!1,failure:null,stale:!0,failures:i}),s(i.length===0?null:{tone:`err`,text:n(`integrations.bulk.partial`,{clients:i.join(`; `)})});return}let c=!1;try{c=(await sv(e)).clients.some(hj)}catch{i.push(n(`integrations.error.stale`))}c&&i.length===0&&i.push(n(`integrations.error.stale`)),Y(),a(!1),y(null),s(i.length===0?{tone:`ok`,text:n(`integrations.bulk.success`)}:{tone:`err`,text:n(`integrations.bulk.partial`,{clients:i.join(`; `)})})},se=ee[0]?.at,[ce,le]=(0,Z.useState)(null),ue=()=>{H.refresh(),I.refresh(),R.refresh(),B.refresh()},de=(e,t)=>{p(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 fv(e,t.status.clientId,{enabled:r,...i?{overwriteConflict:i.operation===`overwrite`,binding:iv(i)}:{}}),Y()}else if(t.toggle===`claude`||t.toggle===`grok`||t.toggle===`codex`||t.toggle===`claude-desktop`){let i=await jv(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 $_&&e.stalePlan)throw e;if(de(t.id,{tone:`err`,text:Rv(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(Rv(n,e,void 0,t.togglePath??void 0),{cause:e})}finally{le(null)}}},pe=async(t,r)=>{if(!t.status||g)return;let i=new AbortController,a=x.current+1;x.current=a,b.current?.abort(),b.current=i,_({row:t,operation:r,plan:null,loading:!0,failure:null});try{let n=await uv(e,t.status.clientId,r,i.signal);if(i.signal.aborted||a!==x.current)return;b.current=null,_({row:t,operation:r,plan:n,loading:!1,failure:null})}catch(e){if(i.signal.aborted||a!==x.current)return;if(b.current=null,rv(e)){_(null),Y();return}_({row:t,operation:r,plan:null,loading:!1,failure:n(`integrations.preview.failed`)})}},me=()=>{x.current+=1,b.current?.abort(),b.current=null,_(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;w.current=n?.tagName===`BUTTON`?n:null,h(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:ie.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:ie.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:ie.stale})]}),ie.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:ie.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||!!v||W.length===0,children:n(`integrations.summary.disableAll`)})]}),(0,Q.jsx)(`h3`,{children:n(`integrations.catalog.title`)}),(0,Q.jsx)(vj,{row:q}),(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`)}),o&&(0,Q.jsx)($,{tone:o.tone,children:o.text}),J.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:J.map(e=>(0,Q.jsx)(gj,{row:e,pending:ce!==null,result:f[e.id]??null,onOpen:()=>Wt(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&&G.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)(Gv,{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`)})]}):ee.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)(sj,{rows:ee,showClient:!0,onRestore:l,onDelete:d}),c&&(0,Q.jsx)(WA,{apiBase:e,row:c,onClose:()=>l(null),onRestored:Y,onReconcile:Y}),u&&(0,Q.jsx)(UA,{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:u.configPath}},onClose:()=>d(null),onConfirm:async()=>{try{await mv(e,u.opId,void 0,u.clientId===`aside`?u.profileId:void 0)}catch(e){if(ev(e)){d(null),await F.refresh();return}throw Error(Rv(n,e),{cause:e})}d(null),await F.refresh()}}),m&&(0,Q.jsx)(UA,{copy:{...m.toggle===`claude-desktop`?uj:m.id===`codex`?lj:cj,vars:{path:m.togglePath??``}},onClose:()=>h(null),onConfirm:async()=>{await fe(m,!1),h(null)}}),g&&g.row.status&&(0,Q.jsx)(UA,{copy:g.operation===`overwrite`?{titleKey:`integrations.dialog.overwrite.title`,changesKey:g.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:g.row.status.configPath}}:g.operation===`disable`?fj:dj,plan:g.plan,planLoading:g.loading,planFailure:g.failure,onClose:me,onConfirm:async e=>{e&&(await fe(g.row,e.operation!==`disable`,e),_(null))}}),v&&(0,Q.jsx)(UA,{copy:pj,plans:mj(v.actions),hasUnboundAction:v.actions.some(e=>e.plan===null),planStale:v.stale,planLoading:v.loading,planFailure:v.failure,onClose:ae,onConfirm:async()=>{await oe(v)}})]})}function vj({row:e}){let t=i(),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:()=>Wt(e.hash),children:t(`integrations.action.manageKeys`)})]})}function yj({install:e}){let t=i();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 bj({reasoning:e,defaults:t,disabled:n,onChange:r,onReview:a}){let o=i(),s=new Map(e.models.map(e=>[e.model,new Set(e.efforts)])),c=Object.entries(t).filter(([e,t])=>!s.get(e)?.has(t)),l=(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:o(`integrations.droidReasoning.title`)}),(0,Q.jsx)(`p`,{className:`page-sub`,children:o(`integrations.droidReasoning.description`)})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:a,disabled:n,children:o(`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),a=[{value:``,label:o(`integrations.droidReasoning.noDefault`)},...!i&&r?[{value:r,label:o(`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)(an,{value:r,options:a,onChange:t=>l(e.model,t),disabled:n,label:o(`integrations.droidReasoning.modelDefault`,{model:e.label})}):(0,Q.jsx)(`span`,{className:`muted text-caption`,children:o(`integrations.droidReasoning.noEfforts`)})]},e.model)})}):(0,Q.jsx)(`p`,{className:`page-sub`,children:o(`integrations.droidReasoning.noModels`)}),c.length>0&&(0,Q.jsxs)(`div`,{className:`droid-reasoning-unsupported`,role:`status`,children:[(0,Q.jsx)(`p`,{children:o(`integrations.droidReasoning.unsupportedTitle`)}),(0,Q.jsx)(`ul`,{children:c.map(([e,t])=>(0,Q.jsxs)(`li`,{children:[(0,Q.jsx)(`code`,{children:e}),` `,o(`integrations.droidReasoning.unsupportedEffort`,{effort:t}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:n,onClick:()=>l(e,``),children:o(`integrations.droidReasoning.clear`)})]},e))})]})]})}function xj(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 Sj={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`},Cj={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`},wj={opencode:`integrations.semantics.opencode`,pi:`integrations.semantics.pi`,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`},Tj={opencode:`integrations.tab.opencode`,pi:`integrations.tab.pi`,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`};function Ej(e){return(0,Q.jsx)(Dj,{...e},JSON.stringify([e.apiBase,e.client,e.profileId]))}function Dj({apiBase:e,client:t,active:n=!0,profileId:r,profileLabel:a}){let o=i(),s=r===void 0?t:`${t}:${r}`,[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(null),[m,h]=(0,Z.useState)(null),[g,_]=(0,Z.useState)(null),[v,y]=(0,Z.useState)(null),b=(0,Z.useRef)(null),x=(0,Z.useRef)(0);(0,Z.useEffect)(()=>()=>{x.current+=1,b.current?.abort()},[]);let S=(0,Z.useCallback)(n=>cv(e,t,n,r),[e,t,r]),C=(0,Z.useCallback)(async n=>(await lv(e,t,n,r)).operations,[e,t,r]),w=za(`integration-state:${e}:${s}`,[e,t,r],S,{isEmpty:()=>!1,enabled:n,sessionCacheKey:`ocx.integrations.state.v1:${e}:${s}`}),T=za(`integration-journal:${e}:${s}`,[e,t,r],C,{isEmpty:e=>e.length===0,enabled:n,sessionCacheKey:`ocx.integrations.client-journal.v1:${e}:${s}`}),E=w.state.data??null,D=E&&(r===void 0||E.profileId===r&&typeof E.enabled==`boolean`)?E:null,O=T.state.data??[],k=()=>{w.refresh(),T.refresh()},A=()=>{d(null),k()},j=async(n,i=t===`droid`&&n!==`disable`&&u?.scopeKey===s?u.values:void 0)=>{if(!D||c||v)return;let a=i===void 0?void 0:{...i},l=new AbortController,d=x.current+1;x.current=d,b.current?.abort(),b.current=l,y({operation:n,plan:null,loading:!0,failure:null});try{let i=await uv(e,t,n,l.signal,r,a);if(l.signal.aborted||d!==x.current)return;b.current=null,y({operation:n,plan:i,loading:!1,failure:null,droidReasoningDefaults:a})}catch(e){if(l.signal.aborted||d!==x.current)return;if(b.current=null,rv(e)){y(null),k();return}y({operation:n,plan:null,loading:!1,failure:o(`integrations.preview.failed`)})}},M=()=>{x.current+=1,b.current?.abort(),b.current=null,y(null)},N=async n=>{if(!(!D||c)){l(!0),p(null);try{await fv(e,t,{enabled:n.operation!==`disable`,overwriteConflict:n.operation===`overwrite`,profileId:r,binding:iv(n),...n.operation!==`disable`&&v?.droidReasoningDefaults!==void 0?{droidReasoningDefaults:v.droidReasoningDefaults}:{}}),y(null),t===`droid`&&d(null)}catch(e){throw k(),e instanceof $_&&e.stalePlan?e:Error(Rv(o,e),{cause:e})}finally{k(),l(!1)}}},P=()=>void j(L?`disable`:`apply`);if(!D)return(0,Q.jsx)(`section`,{className:`integration-client-page`,children:w.state.showError?(0,Q.jsxs)($,{tone:`err`,children:[o(`integrations.error.load`),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:k,disabled:w.state.refreshing,children:o(`common.retry`)})]}):(0,Q.jsx)(`p`,{className:`page-sub`,children:o(`common.loading`)})});let F=N_(D),I=D.state===`current`||D.state===`stale`||F,L=r===void 0?I:D.enabled===!0,R=r!==void 0&&(w.state.showError||w.state.refreshing),z=(!D.installed||(D.state===`conflict`||D.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)(LD,{src:ID(t),label:o(Tj[t]),size:24}),(0,Q.jsx)(`h3`,{children:a??o(Tj[t])}),(0,Q.jsx)(PA,{state:D.state,installed:D.installed,id:`integration-state-${t}${r===void 0?``:`-${r}`}`}),(0,Q.jsx)(nn,{on:L,onClick:P,disabled:z||c||R,label:o(L?`integrations.action.disable`:`integrations.action.apply`)})]}),r!==void 0&&w.state.showError&&(0,Q.jsxs)($,{tone:`err`,children:[o(`integrations.aside.loadError`),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:k,disabled:c||w.state.refreshing,children:o(`common.retry`)})]}),D.state===`stale`&&L&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>void j(`apply`),disabled:c,children:o(`integrations.action.refresh`)}),t===`droid`&&D.droidReasoning&&(0,Q.jsx)(bj,{reasoning:D.droidReasoning,defaults:u?.scopeKey===s?u.values:D.droidReasoning.defaults,disabled:c||v!==null,onChange:e=>d({scopeKey:s,values:e}),onReview:()=>void j(`apply`)}),D.installed&&D.state===`conflict`&&D.reason!==`candidate-conflict`&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-danger`,onClick:()=>void j(`overwrite`),disabled:c,children:o(`integrations.action.overwrite`)}),(0,Q.jsx)(`p`,{className:`page-sub`,children:o(wj[t])}),(0,Q.jsx)(`p`,{className:`integration-path`,children:D.configPath}),D.reason===`candidate-conflict`&&D.conflictPaths?.map(e=>(0,Q.jsx)($,{tone:`err`,children:o(`integrations.status.candidateConflict`,{path:e})},e)),D.raycast&&(0,Q.jsx)(yj,{install:D.raycast}),D.supersededBy&&(0,Q.jsx)($,{tone:`err`,children:D.supersededReason===`missing-store`&&D.missingStoreDocument!==void 0?o(`integrations.status.missingStore`,{path:D.supersededBy,document:D.missingStoreDocument}):o(`integrations.status.supersededStore`,{path:D.supersededBy})}),D.appliedAt&&(0,Q.jsxs)(`p`,{className:`integration-meta`,children:[o(`integrations.status.appliedAt`),`: `,new Date(D.appliedAt).toLocaleString()]}),D.retentionDegraded&&(0,Q.jsx)($,{tone:`err`,children:o(`integrations.retention.degraded`)}),f&&(0,Q.jsx)($,{tone:`err`,children:f}),(0,Q.jsx)(`h4`,{children:o(`integrations.rollback.title`)}),T.state.showSkeleton?(0,Q.jsx)(Gv,{label:o(`integrations.rollback.title`),rows:2}):T.state.kind===`failed-cold`?(0,Q.jsxs)($,{tone:`err`,children:[o(`integrations.rollback.failed`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void T.refresh(),children:o(`common.retry`)})]}):O.length===0?(0,Q.jsx)(`p`,{className:`page-sub`,children:o(`integrations.rollback.empty`)}):(0,Q.jsx)(sj,{rows:O,onRestore:h,onDelete:_}),m&&(0,Q.jsx)(WA,{apiBase:e,row:m,profileId:r,onClose:()=>h(null),onRestored:()=>{t===`droid`?A():k()},onReconcile:k}),g&&(0,Q.jsx)(UA,{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:g.configPath}},onClose:()=>_(null),onConfirm:async()=>{try{await mv(e,g.opId,void 0,r)}catch(e){if(ev(e)){_(null),await T.refresh();return}throw Error(Rv(o,e),{cause:e})}_(null),await T.refresh()}}),v&&(0,Q.jsx)(UA,{copy:v.operation===`overwrite`?xj(D.reason,D.configPath):v.operation===`disable`?Cj:Sj,plan:v.plan,planLoading:v.loading,planFailure:v.failure,missingStorePath:D.supersededReason===`missing-store`?D.supersededBy:void 0,onClose:M,onConfirm:async e=>{e&&await N(e)}})]})}function Oj(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function kj(){throw new $_(502,{code:`invalid_aside_profile_response`})}async function Aj(e,t){let n=await nv(await fetch(`${e}/api/client-integrations/aside/profiles`,{signal:t}));(!Oj(n)||!Array.isArray(n.profiles)||typeof n.allEnabled!=`boolean`)&&kj();let r=n.profiles.map(e=>A_(e)??kj());new Set(r.map(e=>e.profileId)).size!==r.length&&kj();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))&&kj(),{profiles:r,allEnabled:n.allEnabled,enabledCount:i,appliedCount:a,total:r.length,...typeof n.error==`string`?{error:n.error}:{}}}async function jj(e,t){let n=await nv(await fetch(`${e}/api/client-integrations/aside/sync`,{method:`POST`,headers:{"Content-Type":`application/json`},body:`{}`,signal:t}));(!Oj(n)||typeof n.ok!=`boolean`||!Array.isArray(n.results))&&kj(),n.results.some(e=>!Oj(e)||e.client!==`aside`)&&kj();let r=j_(n.results)??kj();return n.ok!==r.every(e=>e.ok)&&kj(),{ok:n.ok,results:r}}var Mj={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`},Nj={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 Pj({apiBase:e,active:t=!0}){let n=i(),[r,a]=(0,Z.useState)(null),[o,s]=(0,Z.useState)(null),c=(0,Z.useRef)(!1),[l,u]=(0,Z.useState)(null),[d,f]=(0,Z.useState)(new Map),[p,m]=(0,Z.useState)(null),h=(0,Z.useRef)(null),g=(0,Z.useRef)(0);(0,Z.useEffect)(()=>()=>{g.current+=1,h.current?.abort()},[]);let _=(0,Z.useCallback)(t=>Aj(e,t),[e]),v=za(`aside-profiles:${e}`,[e],_,{enabled:t,isEmpty:e=>!e.error&&e.profiles.length===0,sessionCacheKey:`ocx.integrations.aside-profiles.v1:${e}`}),y=v.state.data,b=y?.profiles??[],x=v.state.showError||!!y?.error,S=o!==null||v.state.refreshing||p!==null,C=e=>e.name||n(`integrations.aside.profile`,{id:e.profileId}),w=e=>f(t=>{let r=new Map(t);for(let t of e)t.ok?r.delete(t.profileId):r.set(t.profileId,zv(n,t));return r}),T=(e,t)=>{e instanceof $_&&`results`in e.body&&e.body.results?.length?(w(e.body.results),u(n(`integrations.aside.partial`))):t===void 0?u(Rv(n,e)):f(r=>new Map(r).set(t,Rv(n,e)))},E=async(t,r,i)=>{if(!c.current){c.current=!0,s(r??`all`),u(null);try{let n=await fv(e,`aside`,{enabled:t,profileId:r,...i?{binding:iv(i)}:{}});w(n.results??(r===void 0?b.map(e=>e.profileId):[r]).map(e=>({profileId:e,ok:!0})))}catch(e){if(i&&e instanceof $_&&e.stalePlan)throw e;if(T(e,r),i)throw Error(Rv(n,e),{cause:e})}finally{v.refresh(),c.current=!1,s(null)}}},D=async(t,r)=>{if(c.current||p)return;let i=new AbortController,a=g.current+1;g.current=a,h.current?.abort(),h.current=i,m({profile:t,enabled:r,plan:null,loading:!0,failure:null});try{let n=await uv(e,`aside`,r?`apply`:`disable`,i.signal,t.profileId);if(i.signal.aborted||a!==g.current)return;h.current=null,m({profile:t,enabled:r,plan:n,loading:!1,failure:null})}catch(e){if(i.signal.aborted||a!==g.current)return;if(h.current=null,rv(e)){m(null),v.refresh();return}m({profile:t,enabled:r,plan:null,loading:!1,failure:n(`integrations.preview.failed`)})}},O=()=>{g.current+=1,h.current?.abort(),h.current=null,m(null)},k=async()=>{if(!c.current){c.current=!0,s(`sync`),u(null);try{let t=await jj(e);w(t.results),t.ok||u(n(`integrations.aside.partial`))}catch(e){T(e)}finally{v.refresh(),c.current=!1,s(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:()=>{a(null),v.refresh()},children:n(`integrations.aside.back`)}),d.has(r.profileId)&&(0,Q.jsx)($,{tone:`err`,children:(0,Q.jsx)(`span`,{className:`aside-profile-failure`,children:d.get(r.profileId)})}),(0,Q.jsx)(Ej,{apiBase:e,client:`aside`,active:t,profileId:r.profileId,profileLabel:C(r)},r.profileId)]}):(0,Q.jsxs)(`section`,{className:`integration-client-page`,"aria-busy":S,children:[(0,Q.jsxs)(`div`,{className:`integration-client-head`,children:[(0,Q.jsx)(LD,{src:ID(`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)(nn,{on:y?.allEnabled??!1,mixed:!!(y&&y.enabledCount>0&&y.enabledCount<y.total),onClick:()=>void E(!y?.allEnabled),disabled:S||x||b.length===0,label:n(`integrations.aside.all`),showLabel:!0}),(0,Q.jsx)(`span`,{className:`text-caption muted`,children:n(`integrations.aside.applied`,{count:y?.appliedCount??0,total:y?.total??0})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn`,disabled:S||x||!y?.enabledCount,onClick:()=>void k(),children:n(`integrations.aside.syncNow`)})]}),l&&(0,Q.jsx)($,{tone:`err`,children:(0,Q.jsx)(`span`,{className:`aside-profile-failure`,children:l})}),[...d].filter(([e])=>!b.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)),x&&(0,Q.jsxs)($,{tone:`err`,children:[(0,Q.jsx)(`span`,{children:n(`integrations.aside.loadError`)}),y?.error&&(0,Q.jsx)(`span`,{className:`text-caption`,children:y.error}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>v.refresh(),disabled:S,children:n(`common.retry`)})]}),v.state.showSkeleton&&(0,Q.jsx)(Gv,{label:n(`common.loading`),rows:3}),!v.state.showSkeleton&&!x&&y&&b.length===0&&(0,Q.jsx)(`p`,{className:`page-sub`,children:n(`integrations.aside.empty`)}),b.length>0&&(0,Q.jsx)(`div`,{className:`aside-profile-list`,children:b.map(e=>{let t=C(e),r=e.state===`current`||e.state===`stale`,i=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":o===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:()=>a(e),disabled:S||x,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`)})]}),i&&(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}),d.has(e.profileId)&&(0,Q.jsx)($,{tone:`err`,children:(0,Q.jsx)(`span`,{className:`aside-profile-failure`,children:d.get(e.profileId)})})]}),(0,Q.jsxs)(`div`,{className:`aside-profile-controls`,children:[(0,Q.jsx)(PA,{state:e.state,installed:e.installed,id:`aside-profile-state-${e.profileId}`}),i&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:S||x,"aria-label":n(`integrations.aside.retry`,{name:t}),onClick:()=>void D(e,e.enabled),children:n(`common.retry`)}),(0,Q.jsx)(nn,{on:e.enabled,onClick:()=>void D(e,!e.enabled),disabled:S||x||s,label:n(`integrations.aside.toggle`,{name:t})})]})]},e.profileId)})}),p&&(0,Q.jsx)(UA,{copy:p.enabled?Mj:Nj,plan:p.plan,planLoading:p.loading,planFailure:p.failure,onClose:O,onConfirm:async e=>{e&&(await E(p.enabled,p.profile.profileId,e),m(null))}})]})}function Fj(e){return e.proposedModel===e.model&&(e.proposedEffort==null||e.proposedEffort===e.effort)}function Ij({apiBase:e,busy:t,apply:n}){let r=i(),[a,o]=(0,Z.useState)(!1),[s,c]=(0,Z.useState)(!1),[l,u]=(0,Z.useState)(null),[d,f]=(0,Z.useState)(null),[p,m]=(0,Z.useState)({}),[h,g]=(0,Z.useState)(null),_=async()=>{o(!0),u(null),g(null);try{let t=await fn(await fetch(`${e}/api/codex-agent-roles/auto-assign`,{method:`POST`,headers:{"Content-Type":`application/json`},body:`{}`}),r(`integrations.lazycodexRoles.auto.failed`));f(t??null),m({})}catch(e){f(null),u(e instanceof Error&&e.message?e.message:r(`integrations.lazycodexRoles.auto.failed`))}finally{o(!1)}},v=(d?.proposals??[]).filter(e=>e.status===`proposed`&&e.proposedModel&&!p[e.role]&&!Fj(e)),y=async e=>{let t=await n(e.role,e.proposedModel,e.proposedEffort??null);return t&&m(t=>({...t,[e.role]:!0})),t},b=async()=>{c(!0);let e=0,t=v.length;for(let t of v)await y(t)&&(e+=1);g(r(`integrations.lazycodexRoles.auto.appliedCount`,{count:String(e),total:String(t)})),c(!1)},x=a||s||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:x,onClick:()=>void _(),children:r(a?`integrations.lazycodexRoles.auto.running`:`integrations.lazycodexRoles.auto.button`)})]}),l&&(0,Q.jsx)($,{tone:`err`,children:l}),d&&(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:d.sizingModel})}),(0,Q.jsxs)(`div`,{className:`lazycodex-auto-assign-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:x||v.length===0,onClick:()=>void b(),children:r(`integrations.lazycodexRoles.auto.applyAll`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:s,onClick:()=>{f(null),g(null)},children:r(`integrations.lazycodexRoles.auto.discard`)})]})]}),d.sizingError&&(0,Q.jsx)($,{tone:`warn`,children:r(`integrations.lazycodexRoles.auto.sizingFailed`,{error:d.sizingError})}),h&&(0,Q.jsx)($,{tone:`ok`,children:h}),(0,Q.jsx)(`ul`,{className:`lazycodex-auto-assign-list`,children:d.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(FS[e.tier]),effort:r(IS[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`&&(p[e.role]||Fj(e)?(0,Q.jsx)(`span`,{className:`lazycodex-auto-assign-done`,children:p[e.role]?r(`integrations.lazycodexRoles.auto.applied`):r(`integrations.lazycodexRoles.auto.alreadySet`)}):(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-sm`,disabled:x,onClick:()=>void y(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 Lj={absent:`integrations.lazycodexRoles.omoAbsent`,skipped_comments:`integrations.lazycodexRoles.omoComments`,invalid:`integrations.lazycodexRoles.omoInvalid`,write_failed:`integrations.lazycodexRoles.omoFailed`};function Rj({apiBase:e,active:t}){let n=i(),[r,a]=(0,Z.useState)({}),[o,s]=(0,Z.useState)({}),[c,l]=(0,Z.useState)(null),[u,d]=(0,Z.useState)(null),f=(0,Z.useCallback)(async t=>{let r=await fn(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:[]};let i=await fn(await fetch(`${e}/api/subagent-models`,{signal:t}),n(`integrations.lazycodexRoles.loadFailed`));return{detected:!0,roles:r.roles??[],omoJsonc:r.omoJsonc??null,available:i?.available??[]}},[e,n]),p=za(`lazycodex-role-models:${e}`,[e],f,{isEmpty:e=>e.roles.length===0,enabled:t}),m=p.state.data,h=async(t,r,i=null)=>{if(c!==null)return!1;l(t),d(null);try{let o=(await fn(await fetch(`${e}/api/codex-agent-roles/${encodeURIComponent(t)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(i?{model:r,effort:i}:{model:r})}),n(`integrations.lazycodexRoles.saveFailed`,{role:t})))?.omoJsonc?.status,c=o?Lj[o]:void 0;return d(c?{tone:`warn`,text:n(c,{role:t,model:r})}:{tone:`ok`,text:n(`integrations.lazycodexRoles.saved`,{role:t,model:r})}),a(e=>Object.fromEntries(Object.entries(e).filter(([e])=>e!==t))),s(e=>{let{[t]:n,...i}=e;return o===`write_failed`?{...i,[t]:r}:i}),await p.refresh(),!0}catch{return d({tone:`err`,text:n(`integrations.lazycodexRoles.saveFailed`,{role:t})}),!1}finally{l(null)}},g=(e,t)=>{let r=[...new Set([...e.model?[e.model]:[],...m?.available??[]])];return[...t===``?[{value:``,label:n(`integrations.lazycodexRoles.choose`)}]:[],...r.map(e=>({value:e,label:e}))]};return p.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 p.refresh(),children:n(`common.retry`)})]}):m?.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`)}),m.omoJsonc?.state===`comments`&&(0,Q.jsx)($,{tone:`warn`,children:n(`integrations.lazycodexRoles.omoCommentsState`)}),u&&(0,Q.jsx)($,{tone:u.tone,children:u.text}),m.roles.length===0?(0,Q.jsx)(`p`,{className:`page-sub`,children:n(`integrations.lazycodexRoles.empty`)}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Ij,{apiBase:e,busy:c!==null,apply:h}),(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.jsx)(`th`,{children:n(`integrations.lazycodexRoles.model`)})]})}),(0,Q.jsx)(`tbody`,{children:m.roles.map(e=>{let t=r[e.role]??e.model??``,i=t!==``&&t!==e.model,s=!i&&t!==``&&o[e.role]===t;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.model}):(0,Q.jsx)(`span`,{className:`integration-meta`,children:n(`integrations.lazycodexRoles.none`)})}),(0,Q.jsx)(`td`,{children:(0,Q.jsxs)(`div`,{className:`lazycodex-role-models-edit`,children:[(0,Q.jsx)(an,{value:t,options:g(e,t),label:n(`integrations.lazycodexRoles.modelFor`,{role:e.role}),disabled:c!==null,onChange:t=>a(n=>({...n,[e.role]:t}))}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,disabled:!(i||s)||c!==null,onClick:()=>void h(e.role,t),children:c===e.role?n(`common.saving`):n(s?`integrations.lazycodexRoles.retryMirror`:`common.save`)})]})})]},e.role)})})]})})]})]}):null}var zj=[{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:`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:`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`}],Bj=new Set([`opencode`,`pi`,`omp`,`hermes`,`openclaw`,`kimi`,`gajae`,`dsh`,`mcode`,`zcode`,`commandcode`,`prime`,`aside`,`raycast`,`omo`,`cline`,`kilo`,`droid`]);function Vj(e=window.location.hash){let t=Uh(e);return t===`claude/desktop`?`claudeDesktop`:t===`claude`||t.startsWith(`claude/`)?`claude`:zj.find(e=>e.hash===t)?.id??`overview`}function Hj(e){return`integrations-tab-${e}`}function Uj(e){return`integrations-panel-${e}`}function Wj(e){return e===`overview`||e===`keys`?null:ND[e]??null}function Gj({apiBase:e,machineApiBase:t=e,connected:n=!1}){let r=i(),[a,o]=(0,Z.useState)(Vj),[s,c]=(0,Z.useState)(()=>new Set([Vj()])),l=(0,Z.useRef)(null),[u,d]=(0,Z.useState)([]),[f,p]=(0,Z.useState)(!1);l.current===null&&(l.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)&&d(t.selectedClients.filter(e=>typeof e==`string`))}).catch(()=>{}),()=>e.abort()},[n,t]);let m=async()=>{p(!0);try{await fetch(`${t}/api/machine/sync`,{method:`POST`,headers:{"Content-Type":`application/json`},body:`{}`})}finally{p(!1)}},h=e=>{o(e),c(t=>t.has(e)?t:new Set([...t,e]))};(0,Z.useEffect)(()=>{let e=()=>h(Vj());return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[]);let g=(e,t)=>{let n=zj.find(t=>t.id===e);n&&(Wt(n.hash),h(e),t&&window.requestAnimationFrame(()=>{l.current.get(e)?.focus({preventScroll:!0})}))},_=e=>{let t=zj.findIndex(e=>e.id===a),n=null;e.key===`ArrowLeft`?n=(t-1+zj.length)%zj.length:e.key===`ArrowRight`?n=(t+1)%zj.length:e.key===`Home`?n=0:e.key===`End`&&(n=zj.length-1),n!==null&&(e.preventDefault(),g(zj[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:u.length>0?u.join(`, `):r(`connection.clients.none`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:f,onClick:()=>void m(),children:r(f?`connection.clients.syncing`:`connection.clients.sync`)})]}),(0,Q.jsx)(`div`,{className:`page-tabs`,role:`tablist`,"aria-label":r(`integrations.tabsLabel`),children:zj.map(e=>(0,Q.jsxs)(`button`,{ref:t=>{t?l.current.set(e.id,t):l.current.delete(e.id)},type:`button`,role:`tab`,id:Hj(e.id),"aria-selected":a===e.id,"aria-controls":Uj(e.id),tabIndex:a===e.id?0:-1,className:`page-tab${a===e.id?` page-tab--active`:``}`,onClick:()=>g(e.id,!0),onKeyDown:_,children:[Wj(e.id)&&(0,Q.jsx)(LD,{src:Wj(e.id),label:r(e.labelKey),size:14}),r(e.labelKey)]},e.id))}),zj.map(t=>{if(!s.has(t.id))return null;let n=a===t.id;return(0,Q.jsxs)(`div`,{role:`tabpanel`,id:Uj(t.id),"aria-labelledby":Hj(t.id),hidden:!n,children:[t.id===`overview`&&(0,Q.jsx)(_j,{apiBase:e,active:n}),t.id===`keys`&&(0,Q.jsx)(LO,{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:()=>Wt(`startup`),children:r(`integrations.codex.openService`)})]}),t.id===`grok`&&(0,Q.jsx)(TA,{apiBase:e,active:n}),t.id===`claude`&&(0,Q.jsx)(Bk,{apiBase:e,active:n,embedded:!0}),t.id===`claudeDesktop`&&(0,Q.jsx)(`div`,{className:`claude-page claude-page--embedded`,children:(0,Q.jsx)(yA,{apiBase:e,active:n},e)}),t.id===`cursor`&&(0,Q.jsx)(jA,{apiBase:e,active:n}),Bj.has(t.id)&&(t.id===`aside`?(0,Q.jsx)(Pj,{apiBase:e,active:n}):(0,Q.jsx)(Ej,{apiBase:e,client:t.id,active:n})),t.id===`omo`&&(0,Q.jsx)(Rj,{apiBase:e,active:n})]},t.id)})]})}function Kj(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 qj={native:`startup.status.native`,protected:`startup.status.protected`,"at-risk":`startup.status.atRisk`},Jj={native:`startup.summary.native`,protected:`startup.summary.protected`,"at-risk":`startup.summary.atRisk`},Yj={desktop:`startup.protection.desktop`,service:`startup.protection.service`,shim:`startup.protection.shim`,none:`startup.protection.none`};function Xj({ok:e,yes:t,no:n}){return(0,Q.jsx)(`span`,{className:`badge ${e?`badge-green`:`badge-amber`}`,children:e?t:n})}function Zj({failed:e,data:t}){let{t:n}=D(),r=e?`startup-hero--risk`:t.status===`protected`?`startup-hero--safe`:t.status===`at-risk`?`startup-hero--risk`:`startup-hero--native`,i=e||t.status===`at-risk`?De:Se,a=t.routingKind===`opencodex-local`?`startup.routing.proxy`:t.routingKind===`custom-local`?`startup.routing.customLocal`:t.routingKind===`custom-remote`?`startup.routing.customRemote`:t.routingKind===`unknown`?`startup.routing.unknown`:`startup.routing.native`;return(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsxs)(`section`,{className:`panel startup-hero ${r}`,"aria-live":`polite`,children:[(0,Q.jsx)(`div`,{className:`startup-hero-icon`,children:(0,Q.jsx)(i,{})}),(0,Q.jsxs)(`div`,{className:`startup-hero-copy`,children:[(0,Q.jsx)(`span`,{className:`badge ${e||t.status===`at-risk`?`badge-amber`:`badge-green`}`,children:n(e?`startup.status.atRisk`:qj[t.status])}),(0,Q.jsx)(`h3`,{children:n(e?`startup.error`:Jj[t.status])}),(0,Q.jsx)(`p`,{children:e?n(`startup.staleData`):t.status===`at-risk`?n($a(t)):n(`startup.safeDetail`)}),(0,Q.jsxs)(`p`,{className:`muted startup-state-line`,children:[n(a),` · `,n(Yj[t.protection]),` · `,n(t.autostartEnabled?`startup.enabled`:`startup.disabled`)]}),(0,Q.jsx)(`p`,{className:`muted text-label`,children:n(`startup.subtitle`)})]})]})})}function Qj({data:e,failed:t,loading:n=!1,installBusy:r,installResult:i,onInstall:a}){let{t:o}=D(),s=e.serviceSupported&&e.serviceInstalled&&e.serviceStale&&!e.serviceConflict,c=e.shimInstalled&&!e.shimHealthy,l=r!==null||t||n||Qa(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:o(`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:o(`startup.protection.desktop`)}),(0,Q.jsx)(`span`,{children:o(!t&&e.desktop.viable?`startup.desktopHint`:$a(e))})]}),(0,Q.jsx)(`div`,{className:`startup-detail-actions`,children:(0,Q.jsx)(Xj,{ok:!t&&e.desktop.viable,yes:o(`startup.viable`),no:o(`startup.unhealthy`)})})]}),(0,Q.jsxs)(`div`,{className:`startup-detail-row`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`strong`,{children:o(`startup.service`)}),(0,Q.jsx)(`span`,{children:o(`startup.serviceHint`)})]}),(0,Q.jsxs)(`div`,{className:`startup-detail-actions`,children:[(0,Q.jsx)(Xj,{ok:e.serviceViable,yes:o(`startup.viable`),no:o(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":`${o(`startup.service`)} - ${o(`startup.install`)}`,disabled:l,onClick:()=>a(`install-service`),children:o(r===`install-service`?`startup.installing`:`startup.install`)}),s&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,"aria-label":`${o(`startup.service`)} - ${o(`startup.repair`)}`,disabled:l,onClick:()=>a(`install-service`,{repair:!0}),children:o(r===`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:o(`startup.shim`)}),(0,Q.jsx)(`span`,{children:o(`startup.shimHint`)})]}),(0,Q.jsxs)(`div`,{className:`startup-detail-actions`,children:[(0,Q.jsx)(Xj,{ok:e.shimHealthy&&e.autostartEnabled,yes:o(e.shimCoverage===`cli-only`?`startup.cliOnly`:`startup.healthy`),no:o(e.shimInstalled?e.shimHealthy&&!e.autostartEnabled?`startup.installedDisabled`:`startup.stale`:`startup.notInstalled`)}),!e.shimInstalled&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,"aria-label":`${o(`startup.shim`)} - ${o(`startup.install`)}`,disabled:l,onClick:()=>a(`install-shim`),children:o(r===`install-shim`?`startup.installing`:`startup.install`)}),c&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,"aria-label":`${o(`startup.shim`)} - ${o(`startup.repair`)}`,disabled:l,onClick:()=>a(`install-shim`,{repair:!0}),children:o(r===`install-shim`?`startup.repairing`:`startup.repair`)})]})]}),i&&(0,Q.jsx)(`div`,{className:`notice ${i.kind===`success`?`notice-ok`:`notice-warn`} startup-action-notice`,role:`status`,"aria-live":`polite`,children:i.kind===`success`?i.action===`install-service`?o(i.repair?`startup.serviceRepaired`:`startup.serviceInstalled`):o(i.repair?`startup.shimRepaired`:`startup.shimInstalled`):`${o(`startup.installFailed`)} ${i.detail??``}`})]})}function $j({tray:e,trayLoading:t,trayError:n,trayBusy:r,onTrayAction:i}){let{t:a}=D(),o=async()=>{await Qi({message:a(`startup.tray.uninstall`),tone:`danger`})&&i(`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:a(`startup.tray.title`)}),(0,Q.jsx)(j,{})]}),(0,Q.jsx)(`p`,{className:`muted`,children:a(`startup.tray.hint`)}),(0,Q.jsxs)(`div`,{className:`startup-detail-row`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`strong`,{children:a(`startup.tray.login`)}),(0,Q.jsx)(`span`,{children:a(`startup.tray.notProtection`)})]}),t||n||!e?(0,Q.jsx)(`span`,{className:`badge badge-amber`,children:a(t?`startup.tray.loading`:`startup.tray.unavailable`)}):(0,Q.jsx)(Xj,{ok:e.running&&!e.stale,yes:a(`startup.tray.running`),no:a(e.stale?`startup.tray.stale`:e.installed?`startup.tray.stopped`:`startup.tray.notInstalled`)})]}),(0,Q.jsxs)(`div`,{className:`startup-tray-buttons`,children:[!t&&!n&&e&&!e.installed&&!e.stale&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:r,onClick:()=>i(`install`),children:a(`startup.tray.install`)}),!t&&!n&&e?.installed&&!e.stale&&!e.running&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:r,onClick:()=>i(`start`),children:a(`startup.tray.start`)}),!t&&!n&&e?.running&&!e.stale&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:r,onClick:()=>i(`stop`),children:a(`startup.tray.stop`)}),!t&&!n&&e&&(e.installed||e.stale)&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-danger`,disabled:r,onClick:()=>{o()},children:a(`startup.tray.uninstall`)})]}),(n||e?.stale)&&(0,Q.jsx)(`div`,{className:`notice notice-warn startup-tray-error`,role:`alert`,children:a(`startup.tray.error`)})]})}function eM({data:e,copied:t,onCopy:n}){let{t:r}=D(),i=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:r(`startup.recovery`)}),(0,Q.jsx)(K,{})]}),(0,Q.jsxs)(`details`,{className:`startup-recovery-details`,open:e.status!==`protected`,children:[(0,Q.jsx)(`summary`,{className:`muted`,children:r(Qa(e)?`startup.protection.desktop`:`startup.recoveryHint`)}),Qa(e)&&(0,Q.jsx)(`p`,{className:`muted`,children:r($a(e))}),(0,Q.jsxs)(`div`,{className:`startup-command-list`,children:[e.serviceSupported&&!Qa(e)&&(0,Q.jsxs)(`div`,{className:`startup-command-row`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`strong`,{children:r(`startup.command.service`)}),(0,Q.jsx)(`code`,{children:i})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>n(i),children:r(t===i?`startup.copied`:`startup.copy`)})]}),!Qa(e)&&(0,Q.jsxs)(`div`,{className:`startup-command-row`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`strong`,{children:r(`startup.command.shim`)}),(0,Q.jsx)(`code`,{children:e.commands.installShim})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>n(e.commands.installShim),children:t===e.commands.installShim?r(`startup.copied`):r(`startup.copy`)})]}),(0,Q.jsxs)(`div`,{className:`startup-command-row`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`strong`,{children:r(`startup.command.native`)}),(0,Q.jsx)(`code`,{children:e.commands.restoreNative})]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>n(e.commands.restoreNative),children:t===e.commands.restoreNative?r(`startup.copied`):r(`startup.copy`)})]})]}),e.status===`at-risk`&&e.recommendedCommand&&!Qa(e)&&(0,Q.jsxs)(`div`,{className:`notice notice-warn startup-action-notice`,role:`alert`,children:[(0,Q.jsx)(j,{}),` `,r(`startup.recommended`,{cmd:e.recommendedCommand})]})]})]})}var tM=`ocx.startup.page.v1:`;function nM(e,t){let n=t===`win32`?`; `:` && `;return e.join(n)}function rM(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=nM([`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 iM({apiBase:e,machineApiBase:t=e,connected:n=!1}){let{t:r}=D(),i=`${tM}${e}`,a=(0,Z.useMemo)(()=>Na(i),[i]),o=`startup-page:${e}`,[s,c]=(0,Z.useState)(null),[l,u]=(0,Z.useState)(()=>a?.tray??null),[d,f]=(0,Z.useState)(()=>!a?.data),[p,m]=(0,Z.useState)(!1),[h,g]=(0,Z.useState)(!1),[_,v]=(0,Z.useState)(null),[y,b]=(0,Z.useState)(null),[x,S]=(0,Z.useState)(()=>a?.warning??null),[C,w]=(0,Z.useState)(()=>a?.fix??null),[T,E]=(0,Z.useState)(()=>!a?.data),O=(0,Z.useRef)(!!a?.data),k=(0,Z.useRef)(0),[A,j]=(0,Z.useState)(null),[M,N]=(0,Z.useState)(!1);(0,Z.useEffect)(()=>{if(!n)return;let e=new AbortController;return fetch(`${t}/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()},[n,t]);let P=async e=>{N(!0);try{let n=await fetch(`${t}/api/machine/shim`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:e})});if(n.ok){let e=await n.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,a=O.current;a||(f(!0),E(!0));try{let a=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();b(e=>e?.kind===`error`&&(s.status===`native`&&e.forLocalRouting===!0||(e.action===`install-service`?s.serviceViable:s.shimInstalled&&s.shimHealthy))?null:e),O.current=!0;let c=Na(i);La(i,{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(!Kj(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([a,l]).then(([e,a])=>{if(t.aborted||n!==k.current)return;let o=s.platform===`win32`?a.tray:null;if(s.platform===`win32`?(u(o),g(a.error)):(u(null),g(!1)),f(!1),E(!1),e){let t=rM(e.codexRuntime,r,s.platform);S(t.warning),w(t.fix),La(i,{data:s,warning:t.warning,fix:t.fix,tray:o});return}let c=Na(i);La(i,{data:s,warning:c?.warning??null,fix:c?.fix??null,tray:o})}),s}catch(e){throw t.aborted?e:(a||(u(null),g(!0),S(null),w(null)),E(!1),f(!1),e)}},[e,i,r]),I=za(o,[e],F,{isEmpty:()=>!1,initialData:a?.data??void 0}),L=I.state,R=I.refresh,z=L.data??a?.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),c(e),window.setTimeout(()=>c(t=>t===e?null:t),1600)}catch{c(null)}},U=async t=>{m(!0),g(!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(!Kj(r.status))throw Error(`invalid tray action status`);u(r.status),g(!1)}catch{u(null),g(!0)}finally{m(!1)}},ee=async(t,n)=>{v(t),b(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`)}b({kind:`success`,action:t,repair:n?.repair===!0}),R()}catch(e){b({kind:`error`,action:t,repair:n?.repair===!0,detail:e instanceof Error?e.message:String(e),forLocalRouting:z?.localRoutingDependency===!0})}finally{v(null)}};return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`page-head`,children:[(0,Q.jsx)(`h2`,{children:r(`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)(Fe,{}),` `,r(`startup.refresh`)]})})]}),n&&(0,Q.jsxs)(`section`,{className:`notice startup-page-notice`,"aria-label":r(`connection.machine.title`),children:[(0,Q.jsx)(`strong`,{children:r(`connection.machine.title`)}),(0,Q.jsx)(`span`,{children:A?.healthy?r(`connection.machine.shimHealthy`):r(`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:r(`connection.machine.repairShim`)}),A?.installed&&(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,disabled:M,onClick:()=>void P(`uninstall`),children:r(`connection.machine.removeShim`)})]})]}),L.showSkeleton&&!z?(0,Q.jsx)(Gv,{label:r(`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:r(`startup.error`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>R(),children:r(`common.retry`)})]}):z?(0,Q.jsxs)(Q.Fragment,{children:[L.showError&&(0,Q.jsx)($,{tone:`err`,children:r(`startup.error`)}),V&&(0,Q.jsx)(`div`,{className:`notice notice-warn startup-page-notice`,role:`alert`,children:r(`startup.staleData`)}),(T||x)&&(0,Q.jsx)(`div`,{className:`startup-runtime-notice-slot${T&&!x?` startup-runtime-notice-slot--pending`:``}`,"aria-hidden":T&&!x?!0:void 0,children:x&&(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:x}),C&&(0,Q.jsxs)(`div`,{className:`startup-runtime-notice__fix`,children:[(0,Q.jsx)(`code`,{children:C}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void H(C),children:r(s===C?`startup.copied`:`startup.copy`)})]})]})}),(0,Q.jsx)(Zj,{failed:V,data:z}),(0,Q.jsx)(Qj,{data:z,failed:V,loading:B,installBusy:_,installResult:y,onInstall:(e,t)=>{ee(e,t)}}),z.platform===`win32`&&(0,Q.jsx)($j,{tray:l,trayLoading:d,trayError:h,trayBusy:p,onTrayAction:e=>{U(e)}}),(0,Q.jsx)(eM,{data:z,copied:s,onCopy:e=>{H(e)}})]}):null]})}function aM(e){return`'${e.replace(/'/g,`'"'"'`)}'`}function oM(e){return`'${e.replace(/'/g,`''`)}'`}function sM(e,t){return{posix:`printf '%s\\n' ${aM(e)} | ocx remote-workspace pair ${aM(t)} --pairing-code-stdin --root "$PWD" && ocx remote-workspace agent`,powershell:`$pairingCode = ${oM(e)}; $pairingCode | ocx remote-workspace pair ${oM(t)} --pairing-code-stdin --root (Get-Location).Path; if ($LASTEXITCODE -eq 0) { ocx remote-workspace agent }`}}var cM=[`codex`,`claude`,`pi`],lM={codex:`Codex`,claude:`Claude Code`,pi:`Pi`},uM={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`},dM={status:`remote.event.status`,tool:`remote.event.tool`,error:`remote.event.error`};function fM(e){return e===`codex`||e===`claude`||e===`pi`}function pM(e){return e===`read-only`||e===`workspace`}async function mM(e){try{return await navigator.clipboard.writeText(e),!0}catch{return!1}}function hM({apiBase:e,hubOrigin:t}){let n=i(),r=Rt(`remote-workspace:${e}`,[e],async t=>await fn(await fetch(`${e}/api/remote-workspace`,{signal:t,cache:`no-store`}),n(`remote.loadFailed`)),{pollMs:3e3,deadlineMs:1e4}),a=r.data,[o,s]=(0,Z.useState)(``),[c,l]=(0,Z.useState)(``),[u,d]=(0,Z.useState)(`codex`),[f,p]=(0,Z.useState)(`read-only`),[m,h]=(0,Z.useState)(``),[g,_]=(0,Z.useState)(null),[v,y]=(0,Z.useState)(null),[b,x]=(0,Z.useState)({}),[S,C]=(0,Z.useState)(null),[w,T]=(0,Z.useState)(!1),[E,D]=(0,Z.useState)(!1),O=(0,Z.useRef)(null),[k,A]=(0,Z.useState)(null),[j,M]=(0,Z.useState)(null),N=a?.devices??[],P=N.find(e=>e.id===o)??N.find(e=>e.online)??N[0]??null,I=P?.roots.find(e=>e.id===c)??P?.roots[0]??null,L=f===`workspace`&&(P?.capabilities.includes(`workspace.exec`)??!1),R=P&&!P.capabilities.includes(`workspace.exec`)?n(`remote.access.workspaceFilesOnly`):n(`remote.access.workspace`),z=cM.filter(e=>a?.runtimes?.[e]?.available),B=z.includes(u)?u:z[0]??u,V=a?.sessions??[],H=[...V].reverse().find(e=>e.status!==`stopped`),U=(V.find(e=>e.id===m)??(g?.id===m?g:null)??H??g)?.id,ee=V.find(e=>e.id===U),W=g?.id===U?g:null,G=(W&&(!ee||(W.events.at(-1)?.sequence??0)>(ee.events.at(-1)?.sequence??0))?W:ee)??H??g,te=b[G?.id??``]??``,ne=e=>{let t=G?.id;t&&x(n=>({...n,[t]:typeof e==`function`?e(n[t]??``):e}))},re=!!(a&&!r.lastAttemptOk),q=!!(G&&te.trim()&&S===null&&!w&&!E&&!re&&G.status!==`running`&&G.status!==`starting`&&G.status!==`stopped`&&(G.status!==`failed`||G.resumable!==!1)&&!(G.status===`waiting_for_executor`&&!N.find(e=>e.id===G.deviceId)?.online)),J=(0,Z.useMemo)(()=>v?sM(v.code,t):{posix:``,powershell:``},[v,t]),ie=async(t,n,r)=>{let i=await fn(await fetch(`${e}${t}`,n),r);if(i===void 0)throw Error(r);return i},Y=async()=>{C(`pair`),A(null);try{let e=await ie(`/api/remote-workspace/pairing`,{method:`POST`},n(`remote.requestFailed`));y(e),M(null)}catch(e){A({tone:`err`,text:e instanceof Error?e.message:n(`remote.requestFailed`)})}finally{C(null)}},X=async()=>{if(!(!P||!I)){C(`session`),A(null);try{let e=await ie(`/api/remote-workspace/sessions`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({profile:B,deviceId:P.id,rootId:I.id,accessMode:f})},n(`remote.requestFailed`));_(e),h(e.id),A({tone:`ok`,text:n(`remote.sessionStarted`)}),r.refresh()}catch(e){A({tone:`err`,text:e instanceof Error?e.message:n(`remote.requestFailed`)})}finally{C(null)}}},ae=async()=>{if(!G||!q)return;let t=G,i=te;T(!0),A(null);let a;try{let o=await fetch(`${e}/api/remote-workspace/sessions/${t.id}/prompt`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({prompt:i})});a=o.status;let s=await fn(o,n(`remote.requestFailed`));if(!s)throw Error(n(`remote.requestFailed`));ne(e=>e===i?``:e),O.current!==t.id&&_(s),r.refresh()}catch(e){O.current!==t.id&&(A({tone:`err`,text:a!==void 0&&a>=400&&a<500?e instanceof Error?e.message:n(`remote.requestFailed`):n(`remote.submissionUnknown`)}),r.refresh())}finally{T(!1)}},oe=async()=>{if(!G||E)return;let e=G;D(!0);try{await ie(`/api/remote-workspace/sessions/${e.id}`,{method:`DELETE`},n(`remote.requestFailed`)),O.current=e.id,_({...e,status:`stopped`}),r.refresh()}catch(e){A({tone:`err`,text:e instanceof Error?e.message:n(`remote.requestFailed`)})}finally{D(!1)}},se=async e=>{if(await Qi({message:n(`remote.revokeConfirm`,{name:e.name}),confirmLabel:n(`common.remove`),tone:`danger`})){C(`revoke`);try{await ie(`/api/remote-workspace/devices/${e.id}`,{method:`DELETE`},n(`remote.requestFailed`)),o===e.id&&s(``),r.refresh()}catch(e){A({tone:`err`,text:e instanceof Error?e.message:n(`remote.requestFailed`)})}finally{C(null)}}},ce=async(e,t)=>{M(await mM(t)?e:null)};return r.loading&&!a?(0,Q.jsx)(`div`,{className:`alert`,children:n(`remote.loading`)}):r.error&&!a?(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`)})]}):a?.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)(Fe,{}),` `,n(`remote.refresh`)]})]}),re?(0,Q.jsx)($,{tone:`err`,children:n(`remote.loadFailed`)}):null,k?(0,Q.jsx)($,{tone:k.tone,children:k.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)(it,{})}),(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 Y(),disabled:S!==null,children:[(0,Q.jsx)(Le,{}),` `,n(`remote.createPairing`)]}),v?(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:v.code}),(0,Q.jsx)(`div`,{className:`remote-expiry`,children:n(`remote.pairingExpires`,{time:new Date(v.expiresAt).toLocaleTimeString()})}),(0,Q.jsx)(`span`,{className:`field-label`,children:n(`remote.pairingCommandPosix`)}),(0,Q.jsx)(`pre`,{children:(0,Q.jsx)(`code`,{children:J.posix})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void ce(`posix`,J.posix),children:n(j===`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:J.powershell})}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:()=>void ce(`powershell`,J.powershell),children:n(j===`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:N.length})]}),N.length===0?(0,Q.jsx)(`p`,{className:`remote-empty`,children:n(`remote.noDevices`)}):(0,Q.jsx)(`div`,{className:`remote-device-list`,children:N.map(e=>(0,Q.jsxs)(`div`,{className:`remote-device${P?.id===e.id?` selected`:``}`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`remote-device-main`,onClick:()=>{s(e.id),l(e.roots[0]?.id??``)},"aria-pressed":P?.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:S!==null||w||E,onClick:()=>void se(e),children:(0,Q.jsx)(ot,{})})]},e.id))})]})]}),(0,Q.jsxs)(`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)(F,{})]}),(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)(an,{value:P?.id??``,options:N.map(e=>({value:e.id,label:e.name})),onChange:e=>{s(e),l(N.find(t=>t.id===e)?.roots[0]?.id??``)},label:n(`remote.device`),disabled:N.length===0})]}),(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(`span`,{className:`field-label`,children:n(`remote.folder`)}),(0,Q.jsx)(an,{value:I?.id??``,options:(P?.roots??[]).map(e=>({value:e.id,label:e.label})),onChange:l,label:n(`remote.folder`),disabled:!P})]}),(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(`span`,{className:`field-label`,children:n(`remote.runtime`)}),(0,Q.jsx)(an,{value:B,options:cM.map(e=>({value:e,label:a?.runtimes?.[e]?.available?lM[e]:`${lM[e]} · ${n(`remote.unavailable`)}`})),onChange:e=>{fM(e)&&d(e)},label:n(`remote.runtime`)})]}),(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(`span`,{className:`field-label`,children:n(`remote.access`)}),(0,Q.jsx)(an,{value:f,options:[{value:`read-only`,label:n(`remote.access.readOnly`)},{value:`workspace`,label:R}],onChange:e=>{pM(e)&&p(e)},label:n(`remote.access`)})]})]}),P?(0,Q.jsxs)(`div`,{className:`remote-execution-map`,children:[(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`strong`,{children:lM[B]}),n(`remote.runsOnHub`)]}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`strong`,{children:P.name}),n(f===`read-only`?`remote.runsReadOnly`:L?`remote.runsFilesCommands`:`remote.runsFilesOnly`)]})]}):null,f===`workspace`&&!L&&P?(0,Q.jsx)($,{tone:`err`,children:n(`remote.execUnavailable`)}):null,!a?.runtimes?.[B]?.available&&a?.runtimes?.[B]?.reason?(0,Q.jsx)(`p`,{className:`remote-runtime-reason`,children:a.runtimes[B].reason}):null,(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-primary remote-start`,onClick:()=>void X(),disabled:!P?.online||!I||!a?.runtimes?.[B]?.available||S!==null||w||E,children:[(0,Q.jsx)(K,{}),` `,n(`remote.startSession`)]})]}),(0,Q.jsxs)(`section`,{className:`panel remote-console-panel`,children:[(0,Q.jsxs)(`div`,{className:`remote-section-title`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{children:n(`remote.sessions`)}),G?(0,Q.jsxs)(`small`,{children:[lM[G.profile],` · `,G.deviceName,`/`,G.rootLabel,` · `,G.accessMode===`read-only`?n(`remote.access.readOnly`):G.capabilities.includes(`workspace.exec`)?n(`remote.access.workspace`):n(`remote.access.workspaceFilesOnly`)]}):null]}),G?(0,Q.jsx)(`span`,{className:`remote-status remote-status--${G.status}`,children:n(uM[G.status])}):null]}),V.length>1?(0,Q.jsx)(an,{value:G?.id??``,options:V.map(e=>({value:e.id,label:`${lM[e.profile]} · ${e.deviceName}/${e.rootLabel}`})),onChange:h,label:n(`remote.sessions`)}):null,G?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`remote-events`,"aria-live":`polite`,"aria-label":n(`remote.events`),children:G.events.length===0?(0,Q.jsx)(`p`,{className:`remote-empty`,children:n(`remote.noEvents`)}):G.events.map(e=>(0,Q.jsxs)(`div`,{className:`remote-event remote-event--${e.type}`,children:[(0,Q.jsx)(`span`,{children:e.type===`assistant`?lM[G.profile]:n(dM[e.type])}),(0,Q.jsx)(`p`,{children:e.text})]},e.sequence))}),G.status===`failed`&&G.resumable===!1?(0,Q.jsx)($,{tone:`err`,children:n(`remote.notResumable`)}):null,(0,Q.jsxs)(`label`,{className:`remote-composer`,children:[(0,Q.jsx)(`span`,{className:`field-label`,children:n(`remote.prompt`)}),(0,Q.jsx)(`textarea`,{className:`input`,rows:4,value:te,onChange:e=>ne(e.target.value),placeholder:n(`remote.promptPlaceholder`),disabled:G.status===`stopped`||G.status===`failed`&&G.resumable===!1,onKeyDown:e=>{(e.ctrlKey||e.metaKey)&&e.key===`Enter`&&(e.preventDefault(),ae())}})]}),(0,Q.jsxs)(`div`,{className:`remote-console-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>void ae(),disabled:!q,children:n(`remote.send`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-danger`,onClick:()=>void oe(),disabled:E||G.status===`stopped`,children:n(`remote.stop`)})]})]}):(0,Q.jsx)(`p`,{className:`remote-empty remote-empty--console`,children:n(`remote.noSessions`)})]})]})]})]})}var gM=[`pairing_required`,`standalone_required`,`join_port_mismatch`],_M=[`connecting`,`connected`,`reconnecting`,`failed`,`idle`],vM=[`standalone`,`home`,`child`],yM=class extends Error{code;status;hint;constructor(e,t,n=null){super(e),this.name=`LinkApiError`,this.code=e,this.status=t,this.hint=n}},bM=160;function xM(e){return typeof e==`object`&&!!e}function SM(e){return e<32||e>=127&&e<=159||e>=8203&&e<=8207||e>=8234&&e<=8238||e>=8288&&e<=8303||e===65279}function CM(e){if(typeof e!=`string`)return null;let t=Array.from(e,e=>SM(e.codePointAt(0)??0)?` `:e).join(``).replace(/\s+/g,` `).trim();if(!t)return null;let n=Array.from(t);return n.length>bM?`${n.slice(0,159).join(``)}\u2026`:t}function wM(e){return typeof e==`string`&&e.length>0}function TM(e){return typeof e==`string`&&_M.includes(e)}function EM(e){if(!xM(e)||!vM.includes(e.role))throw Error(`invalid status`);let t=e.listener;if(!xM(t)||![`off`,`listening`,`failed`].includes(String(t.state))||t.port!==null&&typeof t.port!=`number`)throw Error(`invalid listener`);if(!Array.isArray(e.links))throw Error(`invalid links`);let n=e.links.map(e=>{if(!xM(e)||!wM(e.id)||!wM(e.alias)||![`hub-initiated`,`client-initiated`].includes(String(e.direction))||!TM(e.state)||!wM(e.since)||e.reason!==null&&typeof e.reason!=`string`||typeof e.tunnelPort!=`number`)throw Error(`invalid link`);return{id:e.id,alias:e.alias,direction:e.direction,state:e.state,since:e.since,reason:e.reason,tunnelPort:e.tunnelPort}}),r=null;if(e.child!==null){if(!xM(e.child)||!wM(e.child.alias)||!TM(e.child.state)||!wM(e.child.since)||e.child.reason!==null&&typeof e.child.reason!=`string`)throw Error(`invalid child`);r={alias:e.child.alias,state:e.child.state,since:e.child.since,reason:e.child.reason}}let i=gM.includes(e.joinDenied)?e.joinDenied:null;return{role:e.role,listener:{state:t.state,port:t.port},links:n,child:r,joinAvailable:e.joinAvailable===!0,joinDenied:i}}async function DM(e){let t;try{t=await e.json()}catch{}if(!e.ok){let n=xM(t)&&xM(t.error)?t.error:null;throw new yM(n&&typeof n.code==`string`?n.code:`unknown`,e.status,CM(n?.hint))}if(t==null)throw new yM(`invalid_body`,e.status);return t}async function OM(e,t,n){return DM(await fetch(`${e}${t}`,{...n,cache:`no-store`}))}async function kM(e,t,n=fetch){try{let r=await n(`${e}/healthz`,{cache:`no-store`,signal:t});if(!r.ok)return null;let i=await r.json();return!xM(i)||i.service!==`opencodex`?null:{role:typeof i.role==`string`?i.role:null,pid:typeof i.pid==`number`?i.pid:null}}catch{return null}}var AM=1e3,jM=5e3,MM=145e3,NM=2e3;function PM(e,t){return new Promise(n=>{let r=setTimeout(i,e);function i(){clearTimeout(r),t.removeEventListener(`abort`,i),n()}t.addEventListener(`abort`,i,{once:!0})})}async function FM(e,t,n,r={}){let i=r.now??Date.now,a=r.sleep??PM,o=i()+MM,s=!1;for(;;){if(n.aborted)return`aborted`;let c=await kM(e,AbortSignal.any([n,AbortSignal.timeout(NM)]),r.fetchImpl);if(n.aborted)return`aborted`;if(c?.role===`client`&&(t===null||c.pid!==t))return`ready`;!s&&i()>=o&&(s=!0,r.onSlow?.()),await a(s?jM:AM,n)}}function IM(){window.location.reload()}var LM={connecting:`remoteLink.status.connecting`,connected:`remoteLink.status.connected`,reconnecting:`remoteLink.status.reconnecting`,failed:`remoteLink.status.failed`,idle:`remoteLink.status.idle`},RM={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_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`},zM={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`},BM={pairing_required:`remoteLink.joinDenied.pairing_required`,standalone_required:`remoteLink.childDisabled`,join_port_mismatch:`remoteLink.error.join_port_mismatch`};function VM(e){return typeof e==`object`&&!!e}function HM(e){return typeof e==`string`&&e.length>0}function UM(e){if(!VM(e)||!Array.isArray(e.candidates))throw Error(`invalid candidates`);return e.candidates.map(e=>{if(!VM(e)||!HM(e.alias)||!HM(e.source))throw Error(`invalid candidate`);return{alias:e.alias,source:e.source}})}function WM(e){if(!VM(e)||!HM(e.alias)||!HM(e.fingerprint)||!HM(e.keyType))throw Error(`invalid probe`);return{alias:e.alias,fingerprint:e.fingerprint,keyType:e.keyType}}function GM(e){if(!VM(e)||!HM(e.alias)||!HM(e.fingerprint)||!HM(e.ocxVersion))throw Error(`invalid confirmation`);return{alias:e.alias,fingerprint:e.fingerprint,ocxVersion:e.ocxVersion}}function KM(e){return e instanceof yM&&e.code in RM?RM[e.code]:`remoteLink.error.generic`}function qM(e){return{key:KM(e),hint:e instanceof yM?e.hint:null}}function JM({error:e}){let t=i();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 YM({apiBase:e,sessionReady:t,workspaceAvailable:n=!1,onOpenWorkspace:r,onChildReady:a=IM,restartWait:s}){let c=i(),[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)(`idle`),[S,w]=(0,Z.useState)([]),[T,E]=(0,Z.useState)(``),[D,O]=(0,Z.useState)(null),[k,A]=(0,Z.useState)(null),[j,M]=(0,Z.useState)(!1),[P,F]=(0,Z.useState)(null),[I,L]=(0,Z.useState)(null),[R,z]=(0,Z.useState)(null),[B,V]=(0,Z.useState)(null),[H,U]=(0,Z.useState)(null),ee=(0,Z.useRef)(null),W=(0,Z.useRef)(null),G=(0,Z.useRef)(null),te=(0,Z.useRef)(null),ne=(0,Z.useRef)([]),K=(0,Z.useRef)(null),re=(0,Z.useRef)(0),q=(0,Z.useRef)(null),J=(0,Z.useRef)(0),ie=(0,Z.useRef)(null),Y=(0,Z.useRef)(!1),[X,ae]=(0,Z.useState)(!1),oe=(0,Z.useCallback)(()=>{q.current?.controller.abort();let e={controller:new AbortController,sequence:++J.current};return q.current=e,e},[]),se=(0,Z.useCallback)(()=>{J.current+=1,q.current?.controller.abort(),q.current=null},[]),ce=e=>q.current?.sequence===e.sequence&&!e.controller.signal.aborted,le=(0,Z.useCallback)(()=>{re.current+=1,K.current?.controller.abort(),K.current=null},[]),ue=(0,Z.useCallback)(async()=>{if(!t||document.visibilityState===`hidden`||Y.current)return;K.current?.controller.abort();let n=new AbortController,r=++re.current;K.current={controller:n,sequence:r};try{let t=EM(await OM(e,`/api/link/status`,{signal:n.signal}));if(n.signal.aborted||re.current!==r)return;h(t),_(null),R?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||re.current!==r)return;_(KM(e))}finally{K.current?.sequence===r&&(K.current=null)}},[e,R,t]),de=(0,Z.useEffectEvent)(()=>{ue()});(0,Z.useEffect)(()=>{if(!t)return;Promise.resolve().then(de);let e=window.setInterval(de,5e3),n=()=>{document.visibilityState===`visible`?de():le()};return document.addEventListener(`visibilitychange`,n),()=>{window.clearInterval(e),document.removeEventListener(`visibilitychange`,n),le()}},[le,t]),(0,Z.useEffect)(()=>{if(l!==`restart-waiting`)return;let t=new AbortController;return FM(e,ie.current,t.signal,{...s,onSlow:()=>ae(!0)}).then(e=>{e===`ready`&&a()}),()=>t.abort()},[e,a,s,l]),(0,Z.useEffect)(()=>{if(!v){let e=W.current?.open;W.current?.close?.(),e&&ee.current?.focus();return}let e=W.current;e&&!e.open&&(typeof e.showModal==`function`?e.showModal():e.setAttribute(`open`,``)),window.setTimeout(()=>e?.querySelector(`input, button`)?.focus(),0)},[v]),(0,Z.useEffect)(()=>{let e=G.current;if(!B){e?.close?.();return}e&&!e.open&&(typeof e.showModal==`function`?e.showModal():e.setAttribute(`open`,``))},[B]);let fe=()=>{se(),y(!1),x(`idle`),w([]),O(null),A(null),M(!1),L(null),z(null),F(null),u(e=>[`failed`,`adding-child`,`confirming-host`,`applying`,`joining`].includes(e)?`adding-child`:e)},pe=p(),me=pe&&m?.joinAvailable===!0,he=m?.joinDenied?BM[m.joinDenied]:`remoteLink.joinDenied.unavailable`,ge=o(e).shared,_e=pe&&window.location.protocol===`http:`&&[`127.0.0.1`,`[::1]`].includes(window.location.hostname)&&ge.serverOrigin===window.location.origin,ve=async()=>{let t=oe();x(`loading`),w([]),L(null),z(null),F(`candidates`),O(null),A(null),M(!1);try{let n=await OM(e,`/api/link/candidates`,{signal:t.controller.signal});if(!ce(t))return;w(UM(n)),x(`ready`)}catch(e){if(!ce(t))return;x(`failed`),L(qM(e))}finally{ce(t)&&F(null)}},ye=async()=>{y(!0),u(`adding-child`),await ve()},be=async(t=T.trim(),n=q.current??oe())=>{let r=t.trim();if(r){b===`failed`&&x(`idle`),F(`probe`),L(null),O(null),A(null),M(!1),z(null),u(`adding-child`);try{let t=await OM(e,`/api/link/probe`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({alias:r}),signal:n.controller.signal});if(!ce(n))return;O(WM(t))}catch(e){if(!ce(n))return;L(qM(e)),z({phase:`probe`,alias:r}),u(`failed`)}finally{ce(n)&&F(null)}}},xe=async()=>{if(!D||!j)return;let t=q.current;if(t){F(`confirm`),L(null);try{let n=await OM(e,`/api/link/confirm-host`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({alias:D.alias,fingerprint:D.fingerprint}),signal:t.controller.signal});if(!ce(t))return;A(GM(n))}catch(e){if(!ce(t))return;L(qM(e))}finally{ce(t)&&F(null)}}},Se=async(t=q.current)=>{let n=k;if(!(!n||!t)){F(`apply`),L(null),z(null),u(`applying`);try{if(await OM(e,`/api/link/apply`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({alias:n.alias}),signal:t.controller.signal}),!ce(t))return;fe(),ue()}catch(e){if(!ce(t))return;L(qM(e)),z({phase:`apply`,alias:n.alias}),u(`failed`)}finally{ce(t)&&F(null)}}},Ce=async(t=k?.alias,n=q.current??oe())=>{let r=t?.trim();if(!(!r||!me)){F(`join`),L(null),z(null),u(`joining`);try{if(ie.current=(await kM(e,n.controller.signal))?.pid??null,!ce(n)||(await OM(e,`/api/link/join`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({alias:r}),signal:n.controller.signal}),!ce(n)))return;Y.current=!0,le(),fe(),ae(!1),u(`restart-waiting`)}catch(e){if(!ce(n))return;L(qM(e)),z({phase:`join`,alias:r}),u(`failed`)}finally{ce(n)&&F(null)}}},we=()=>{if(!R){ue();return}let e=oe();if(R.phase===`probe`){E(R.alias),be(R.alias,e);return}if(R.phase===`join`){Ce(R.alias,e);return}Se(e)},Te=()=>{V(null),U(null),window.setTimeout(()=>te.current?.focus(),0)},Ee=(e,t)=>{let n=t===`Home`?0:t===`End`?1:t===`ArrowRight`||t===`ArrowDown`||t===`ArrowLeft`||t===`ArrowUp`?(e+1)%2:e;n===1&&!me||n!==e&&(ne.current[n]?.focus(),f(n===0?`home`:`child`))},De=async()=>{if(!B)return;let t=B;F(`remove`),U(null);try{await OM(e,`/api/link/${encodeURIComponent(t.row.id)}`,t.force?{method:`DELETE`,headers:{"content-type":`application/json`},body:JSON.stringify({force:!0})}:{method:`DELETE`}),Te(),await ue()}catch(e){!t.force&&e instanceof yM&&e.code===`remote_disconnect_failed`?V({row:t.row,force:!0}):U(KM(e))}finally{F(null)}},Oe=m?.links??[],ke=d===`home`&&(l===`adding-child`||l===`confirming-host`||l===`applying`),Ae=m?.role===`home`||ke?`remoteLink.role.home`:m?.role===`child`?`remoteLink.role.child`:`remoteLink.role.standalone`,je=d===`child`&&!me;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 ue(),disabled:P!==null,children:[(0,Q.jsx)(Fe,{}),c(`link.refresh`)]})]}),n&&(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:r??(()=>{window.location.hash=`remote-workspace`}),children:c(`remoteLink.workspaceMoved.open`)})]}),g&&(0,Q.jsx)($,{tone:`err`,children:(0,Q.jsx)(`span`,{className:`remote-link-error`,children:c(g)})}),Oe.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=>{ne.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(),Ee(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=>{ne.current[1]=e},type:`button`,role:`radio`,tabIndex:me&&d===`child`?0:-1,"aria-checked":d===`child`,"aria-disabled":!me,className:`remote-link-role-card`,onClick:()=>{me&&(f(`child`),ye())},onKeyDown:e=>{me&&[`ArrowRight`,`ArrowDown`,`ArrowLeft`,`ArrowUp`,`Home`,`End`].includes(e.key)&&(e.preventDefault(),Ee(1,e.key))},children:[(0,Q.jsx)(`strong`,{children:c(`link.role.child`)}),(0,Q.jsx)(`span`,{children:c(`link.role.childHint`)})]})]}),!pe&&(0,Q.jsx)($,{tone:`warn`,children:c(`remoteLink.childDisabled`)}),pe&&m!==null&&!m.joinAvailable&&(0,Q.jsx)($,{tone:`warn`,children:c(he)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,disabled:je||m?.role===`child`,onClick:()=>void ye(),children:c(d===`child`?`remoteLink.findHome.action`:`link.continue`)})]}),l===`role-select`&&_e&&m?.joinAvailable===!1&&m.joinDenied===`pairing_required`&&(0,Q.jsx)(gO,{local:!0,target:ge,onConnected:()=>{ue()}}),(l===`connected`||l===`reconnecting`||l===`failed`||l===`restart-waiting`||m?.role===`child`||Oe.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`&&pe?`remoteLink.findHome.title`:`link.children`)}),(0,Q.jsx)(`p`,{className:`remote-link-info`,children:c(l===`restart-waiting`?`remoteLink.restart.waiting`:Ae)})]}),(0,Q.jsxs)(`button`,{ref:ee,type:`button`,className:`btn btn-primary btn-sm`,onClick:()=>void ye(),disabled:P!==null||l===`applying`||l===`joining`||l===`restart-waiting`||m?.role===`child`,children:[(0,Q.jsx)(Le,{}),c(d===`child`&&pe?`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`)}),X&&(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(LM[m.child.state])})})]})})}):Oe.length>0?(0,Q.jsx)(`div`,{className:`remote-link-children`,"aria-live":`polite`,children:Oe.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(LM[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 zM?c(zM[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=>{te.current=t.currentTarget,V({row:e,force:!1})},disabled:P!==null,children:[(0,Q.jsx)(ot,{}),c(`link.disconnect`)]})]},e.id))}):(0,Q.jsx)(`p`,{className:`remote-link-info`,children:c(d===`child`&&pe?`remoteLink.findHome.empty`:`link.noChildren`)}),!v&&(l===`reconnecting`||l===`failed`&&(R!==null&&I?.key!==`remoteLink.error.join_restart_failed`||Oe.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(LM[l===`failed`?`failed`:`reconnecting`])}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-sm`,onClick:we,children:c(`link.retry`)})]}),l===`joining`&&(0,Q.jsx)(`p`,{className:`remote-link-info`,"aria-live":`polite`,children:c(`remoteLink.joining`)}),!v&&I&&(0,Q.jsx)(JM,{error:I})]}),(0,Q.jsxs)(`dialog`,{ref:W,className:`remote-link-sheet`,"aria-labelledby":`remote-link-sheet-title`,onCancel:e=>{e.preventDefault(),fe()},children:[(0,Q.jsxs)(`div`,{className:`remote-link-sheet-head`,children:[(0,Q.jsx)(`h3`,{id:`remote-link-sheet-title`,children:c(d===`child`&&pe?`remoteLink.findHome.title`:`link.sheetTitle`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost btn-icon`,onClick:fe,"aria-label":c(`link.close`),children:(0,Q.jsx)(N,{})})]}),(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`&&pe?`remoteLink.findHome.body`:`link.candidates`)}),b===`loading`&&(0,Q.jsx)(`p`,{className:`remote-link-info`,role:`status`,children:c(`link.loading`)}),b===`failed`&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`remote-link-info`,children:c(`link.discoveryFailed`)}),v&&I&&(0,Q.jsx)(JM,{error:I})]}),b===`ready`&&(S.length>0?(0,Q.jsx)(`div`,{className:`remote-link-candidates`,children:S.map(e=>(0,Q.jsxs)(`button`,{type:`button`,className:`remote-link-candidate`,onClick:()=>E(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
52
- HostName devbox.example.com
53
- User you
54
- 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 ve(),disabled:P!==null,children:c(b===`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:T,onChange:e=>E(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 be(),disabled:!T.trim()||P!==null,children:[(0,Q.jsx)(it,{}),c(P===`probe`?`link.probing`:`link.probe`)]})]}),D&&(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:D.fingerprint})}),(0,Q.jsx)(`span`,{className:`remote-link-info`,children:D.keyType})]}),(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:j,onChange:e=>M(e.target.checked)}),` `,c(`link.confirmFingerprint`)]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>void xe(),disabled:!j||P!==null,children:c(P===`confirm`?`link.confirming`:`link.confirm`)})]}),k&&(0,Q.jsxs)(`div`,{className:`remote-link-panel`,children:[(0,Q.jsx)(`p`,{className:`remote-link-info`,children:c(`link.ocxVersion`,{version:k.ocxVersion})}),d===`child`&&pe&&(0,Q.jsx)($,{tone:`warn`,children:c(`remoteLink.findHome.notice`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>void(d===`child`&&pe?Ce():Se()),disabled:P!==null||d===`child`&&!me,children:c(d===`child`&&pe?P===`join`?`remoteLink.joining`:`remoteLink.findHome.connect`:P===`apply`?`link.applying`:`link.apply`)})]}),v&&b!==`failed`&&I&&(0,Q.jsx)(JM,{error:I}),R&&I?.key!==`remoteLink.error.join_restart_failed`&&(0,Q.jsxs)(`div`,{children:[R.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:we,disabled:P!==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:fe,children:c(`link.cancel`)})})]})]}),(0,Q.jsx)(`dialog`,{ref:G,className:`remote-link-confirm-dialog`,"aria-labelledby":`remote-link-confirm-title`,onCancel:e=>{e.preventDefault(),Te()},children:B&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`h3`,{id:`remote-link-confirm-title`,children:B.force?c(`remoteLink.forceRemove.title`,{alias:B.row.alias}):c(`link.disconnect`)}),(0,Q.jsx)(`p`,{children:B.force?(0,Q.jsx)(C,{k:`remoteLink.forceRemove.body`,cmd:`ocx disconnect`,vars:{alias:B.row.alias}}):c(`link.disconnectConfirm`,{alias:B.row.alias})}),H&&(0,Q.jsx)(`p`,{className:`remote-link-error`,role:`alert`,children:c(H)}),(0,Q.jsxs)(`div`,{className:`remote-link-sheet-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:Te,children:c(`link.cancel`)}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-danger`,onClick:()=>void De(),disabled:P===`remove`,children:B.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`)})]})}function XM(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 ZM=6e4,QM=7,$M=8,eN=.8;function tN(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 nN(e,t){return e.labelKey?t(e.labelKey):e.label??e.id}function rN(e,t){return e===`critical`?t(`quotaSummary.critical`):e===`warn`?t(`quotaSummary.warn`):``}function iN(e){try{return e.matches(`:focus-visible`)}catch{return!0}}function aN(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($M,o-a-$M),c=Math.min(Math.max(i.left,$M),s);r.style.setProperty(`--qs-pop-top`,String(Math.round(i.bottom+QM))),r.style.setProperty(`--qs-pop-left`,String(Math.round(c))),r.style.setProperty(`--qs-pop-gap`,String(Math.round(i.bottom+QM)-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 oN({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,_]),aN(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),mg(e.provider)},{headline:x}=e,S=rN(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=>{iN(e.target)&&(u(!1),o(!0))},onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||o(!1)},children:[(0,Q.jsxs)(`a`,{ref:f,href:`#${lg(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:Ve(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:nN(e,t)}),(0,Q.jsx)(`td`,{className:`quota-summary-row-pct`,children:Ve(e.percent)}),(0,Q.jsx)(`td`,{className:`quota-summary-row-reset`,children:e.resetAt===void 0?`-`:os(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:tN(e.updatedAt,n)})}),(0,Q.jsx)(`a`,{href:`#${lg(e.provider)}`,className:`quota-summary-popover-link`,onPointerDown:e=>{m.current=e.pointerType},onClick:b,children:t(`quotaSummary.openAccounts`)})]})]})]})}var sN={overflow:!1,atStart:!0,atEnd:!0};function cN({rows:e,t,locale:n}){let r=(0,Z.useRef)(null),[i,a]=(0,Z.useState)(sN),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}:sN;a(e=>e.overflow===n.overflow&&e.atStart===n.atStart&&e.atEnd===n.atEnd?e:n)},[]),s=e.map(e=>`${e.provider}:${e.label}:${Ve(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*eN,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)(oN,{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 lN({apiBase:e}){let{t,locale:n}=D(),r=(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:J(r?.reports)}},[e]),i=za(`ocx.quota-summary.provider-quotas.v1:${e}`,[e],r,{isEmpty:e=>Object.keys(e.reports).length===0,pollMs:ZM,pauseWhenHidden:!0}),a=i.data;if(!a)return null;let o=Je(a.reports,e=>_e(e,t));if(o.length===0)return null;let s=!i.lastAttemptOk;return(0,Q.jsxs)(`section`,{className:`quota-summary-bar`,"aria-label":t(`quotaSummary.aria`),ref:XM,children:[(0,Q.jsx)(cN,{rows:o,t,locale:n}),(0,Q.jsx)(`span`,{className:`quota-summary-updated${s?` quota-summary-updated--stale`:``}`,title:s?t(`quotaSummary.refreshFailed`):void 0,children:t(`quotaSummary.updated`,{time:tN(a.fetchedAt,n)})}),(0,Q.jsx)(`span`,{className:`sr-only`,role:`status`,"aria-live":`polite`,children:s?t(`quotaSummary.refreshFailed`):``})]})}var uN=3e5,dN=6e5,fN=`https://github.com/lidge-jun/opencodex`;async function pN(e,t){let n=await fetch(e,{signal:t});return n.ok?await n.json():null}function mN({apiBase:e,onOpenUpdate:t,onOpenTerminalCommand:n}){let r=i(),[a,o]=(0,Z.useState)(!1),[s,c]=(0,Z.useState)(null),l=Rt(`sidebar-star:${e}`,[e],t=>pN(`${e}/api/github/star`,t),{pollMs:uN}),u=Ga(e),d=Rt(`sidebar-update-badge:`+u,[u],e=>pN(u,e),{pollMs:Ha()?6e4:dN}),f=l.data?.state??null,p=s!==null&&s.basedOn===f?s.state:f??`not-starred`,m=l.data?.url??fN,h=p===`starred`,g=d.data,_=g?.updateAvailable===!0,v=g?.latestVersion??null,y=()=>window.open(m,`_blank`,`noopener,noreferrer`),b=async()=>{if(!(h||a)){if(p===`unauthenticated`){y();return}o(!0);try{let t=await fetch(`${e}/api/github/star`,{method:`POST`}),n=t.ok?await t.json():null;if(n?.ok===!0){c({state:`starred`,basedOn:f});return}n?.state&&c({state:n.state,basedOn:f}),y()}catch{y()}finally{o(!1),l.refresh()}}},x=r(h?`sidebar.starred`:p===`unauthenticated`?`sidebar.starUnauthenticated`:`sidebar.star`),S=_&&v?r(`sidebar.updateAvailable`,{version:v}):Ha()?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:m,target:`_blank`,rel:`noreferrer`,children:[(0,Q.jsx)(Oe,{}),` `,r(`common.github`)]}),(0,Q.jsxs)(`div`,{className:`sidebar-github-actions`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb${h?` sidebar-orb--starred`:``}`,onClick:()=>{b()},disabled:a||h,"aria-label":x,"aria-pressed":h,title:x,children:(0,Q.jsx)(V,{"aria-hidden":`true`,...h?{fill:`currentColor`}:{}})}),(0,Q.jsxs)(`button`,{type:`button`,className:`sidebar-orb${_?` sidebar-orb--update`:``}`,onClick:t,"aria-label":S,title:S,children:[(0,Q.jsx)(Te,{"aria-hidden":`true`}),_&&(0,Q.jsx)(`span`,{className:`sidebar-orb-dot`,"aria-hidden":`true`})]}),Ha()&&(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb`,onClick:n,"aria-label":r(`sidebar.terminalCommand`),title:r(`sidebar.terminalCommand`),children:(0,Q.jsx)(K,{"aria-hidden":`true`})})]})]})}var hN=`ocx-desktop-star-onboarding`,gN=`https://github.com/lidge-jun/opencodex`,_N=1200;function vN(){try{return window.localStorage.getItem(hN)!==null}catch{return!0}}function yN(){try{window.localStorage.setItem(hN,`seen`)}catch{}}function bN(e){window.location.assign(e)}function xN({apiBase:e,enabled:t}){let[n,r]=(0,Z.useState)(null),[i,a]=(0,Z.useState)(vN);(0,Z.useEffect)(()=>{if(!t||i||!Ha())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`){yN(),a(!0);return}r(e)}})},_N);return()=>{window.clearTimeout(o),n.abort()}},[e,t,i]);let o=(0,Z.useCallback)(()=>{yN(),a(!0)},[]);return i||!t||!n?null:(0,Q.jsx)(SN,{apiBase:e,status:n,onClose:o})}function SN({apiBase:e,status:t,onClose:n}){let r=i(),a=(0,Z.useId)(),o=(0,Z.useId)(),s=(0,Z.useRef)(null),[c,l]=(0,Z.useState)(`prompt`),u=t.url??gN,d=t.state===`not-starred`;(0,Z.useEffect)(()=>{let e=s.current;e&&!e.open&&e.showModal()},[]);let f=(0,Z.useCallback)(e=>{e.preventDefault(),c!==`starring`&&n()},[n,c]),p=()=>{bN(u),n()},m=async()=>{l(`starring`);try{let t=await fetch(`${e}/api/github/star`,{method:`POST`});if((t.ok?await t.json():null)?.ok===!0){Bt(`sidebar-star:${e}`,{state:`starred`,url:u}),l(`thanks`);return}}catch{}l(`failed`)},h=c===`thanks`,g=c===`failed`;return(0,Q.jsxs)(`dialog`,{ref:s,"aria-labelledby":a,"aria-describedby":o,className:`modal-overlay star-onboarding-overlay`,onCancel:f,children:[(0,Q.jsx)(`button`,{type:`button`,className:`modal-backdrop-dismiss`,"aria-label":r(`common.close`),tabIndex:-1,onClick:()=>{c!==`starring`&&n()}}),(0,Q.jsxs)(`div`,{className:`modal-card star-onboarding`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsx)(`span`,{className:`star-onboarding-mark${h?` star-onboarding-mark--done`:``}`,"aria-hidden":`true`,children:(0,Q.jsx)(V,{...h?{fill:`currentColor`}:{}})}),(0,Q.jsx)(`h3`,{id:a,className:`star-onboarding-title`,children:r(h?`onboarding.star.thanks`:`onboarding.star.title`)}),(0,Q.jsx)(`p`,{id:o,className:`star-onboarding-body`,children:r(h?`onboarding.star.thanksBody`:g?`onboarding.star.failed`:`onboarding.star.body`)}),h?(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:[d&&!g?(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-primary`,disabled:c===`starring`,onClick:()=>{m()},autoFocus:!0,children:[(0,Q.jsx)(V,{"aria-hidden":`true`}),r(c===`starring`?`onboarding.star.starring`:`onboarding.star.cta`)]}):(0,Q.jsxs)(`button`,{type:`button`,className:`btn btn-primary`,onClick:p,autoFocus:!0,children:[(0,Q.jsx)(Oe,{"aria-hidden":`true`}),r(g?`onboarding.star.openPage`:`onboarding.star.cta`)]}),(0,Q.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,disabled:c===`starring`,onClick:n,children:r(`onboarding.star.later`)})]}),(0,Q.jsxs)(`p`,{className:`star-onboarding-hint`,children:[r(d&&!g?`onboarding.star.ghHint`:`onboarding.star.browserHint`),d&&!g&&(0,Q.jsxs)(Q.Fragment,{children:[` `,(0,Q.jsx)(`button`,{type:`button`,className:`star-onboarding-link`,disabled:c===`starring`,onClick:p,children:r(`onboarding.star.openPage`)})]})]})]})]})]})}var CN=[{id:`dashboard`,tkey:`nav.dashboard`,Icon:Be,pages:[`dashboard`]},{id:`connect`,tkey:`nav.connect`,Icon:it,pages:[`integrations`],embedded:[`claude`]},{id:`codex-set`,tkey:`nav.codexSet`,Icon:qe,pages:[`codex-set`]},{id:`providers`,tkey:`nav.providers`,Icon:ie,pages:[`providers`]},{id:`models`,tkey:`nav.models`,Icon:Ne,pages:[`models`]},{id:`subagents`,tkey:`nav.subagents`,Icon:Ke,pages:[`subagents`]},{id:`usage-logs`,tkey:`nav.usageLogs`,Icon:k,pages:[`usage`,`logs`,`storage`]},{id:`remote`,tkey:`nav.remote`,Icon:F,pages:[`remote`,`remote-workspace`]}];function wN(e){return CN.find(t=>t.pages.includes(e)||t.embedded?.includes(e))??null}function TN(e,t){return e.pages.filter(e=>e!==`remote-workspace`||t.remoteWorkspaceAvailable)}function EN({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 DN=[`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 ON(){try{for(let e of DN)localStorage.removeItem(e)}catch{}}function kN(){let[e,t]=(0,Z.useState)(Hh);(0,Z.useEffect)(()=>{ON()},[]);let n=(0,Z.useCallback)(e=>{let n=$h(e);n.replaceTo&&Ut(n.replaceTo),t(n.page)},[]);return(0,Z.useEffect)(()=>{let e=()=>{n(Vt(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=$h(Vt(window.location.hash));n.replaceTo&&Ut(n.replaceTo),n.page!==e&&t(n.page)},[e]),{page:e,setPageState:t,navigateToPage:(e,n)=>{Wt(n?`${e}/${n}`:e),t(e)}}}var AN=15e3,jN=3e3;function MN(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 NN(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 PN(e,t={}){let{fetchFn:n=fetch,timeoutMs:r=AN,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=jN}=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 NN(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:MN(u,l.status,i)}:d?{status:`accepted`}:{status:`unknown`,message:o()}}var FN=`ocx-desktop-zoom`,IN=.5,LN=.1;function RN(e){return e===`macos`||e===`linux`}function zN(e){return Number.isFinite(e)?Math.round(Math.min(Math.max(e,IN),3)*100)/100:1}function BN(e,t){return t===`reset`?1:zN(e+(t===`in`?LN:-.1))}function VN(e){return Math.round(e*100)}function HN(e=typeof localStorage>`u`?void 0:localStorage){try{let t=e?.getItem(FN);return t==null?1:zN(Number(t))}catch{return 1}}function UN(e,t=typeof localStorage>`u`?void 0:localStorage){try{t?.setItem(FN,String(e))}catch{}}function WN(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 GN(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 KN(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 qN=`ocx-sidebar-collapsed`;function JN(e=typeof localStorage>`u`?void 0:localStorage){try{return e?.getItem(qN)===`1`}catch{return!1}}function YN(e){try{localStorage.setItem(qN,e?`1`:`0`)}catch{}}function XN(e){return e instanceof HTMLElement&&(e.isContentEditable||e.closest(`input, textarea, select, [contenteditable]`)!==null)}function ZN({shortcut:e=!1}={}){let[t,n]=(0,Z.useState)(JN),r=(0,Z.useCallback)(()=>n(e=>!e),[]);return(0,Z.useEffect)(()=>{YN(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`)&&(XN(e.target)||(e.preventDefault(),r()))};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[r,e]),{collapsed:t,toggle:r}}function QN({managed:e}){let[t,n]=(0,Z.useState)(HN),r=(0,Z.useCallback)(e=>n(t=>BN(t,e)),[]),i=(0,Z.useRef)(0);return(0,Z.useEffect)(()=>{e&&(KN(t),UN(t))},[e,t]),(0,Z.useEffect)(()=>{if(!e)return;let t=Ka(),n=e=>{let n=WN(e,t);n&&(e.preventDefault(),e.stopImmediatePropagation(),r(n))},a=e=>{if(!e.ctrlKey)return;e.preventDefault(),e.stopImmediatePropagation();let t=GN(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:VN(t),canZoomIn:t<3,canZoomOut:t>IN,step:r}}function $N({percent:e,canZoomIn:t,canZoomOut:n,onStep:r}){let a=i();return(0,Q.jsxs)(`div`,{className:`zoom-control`,role:`group`,"aria-label":a(`zoom.label`),title:a(`zoom.label`),children:[(0,Q.jsx)(`button`,{type:`button`,className:`zoom-control__btn`,disabled:!n,onClick:()=>r(`out`),"aria-label":a(`zoom.out`),title:a(`zoom.out`),children:(0,Q.jsx)(de,{"aria-hidden":!0})}),(0,Q.jsxs)(`button`,{type:`button`,className:`zoom-control__value`,onClick:()=>r(`reset`),"aria-label":a(`zoom.reset`),title:a(`zoom.reset`),children:[e,`%`]}),(0,Q.jsx)(`button`,{type:`button`,className:`zoom-control__btn`,disabled:!t,onClick:()=>r(`in`),"aria-label":a(`zoom.in`),title:a(`zoom.in`),children:(0,Q.jsx)(Le,{"aria-hidden":!0})})]})}var eP=[{mode:`light`,tkey:`theme.light`,Icon:W},{mode:`dark`,tkey:`theme.dark`,Icon:et},{mode:`system`,tkey:`theme.system`,Icon:F}];function tP({theme:e,onChange:t}){let n=i();return(0,Q.jsx)(`div`,{className:`theme-switch`,role:`group`,"aria-label":n(`theme.label`),children:eP.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 nP(e){try{window.__TAURI__?.core?.invoke?.(e).catch(()=>{})}catch{}}var rP=`a, button, input, select, textarea, summary, [role='button'], [role='link'], [contenteditable]`;function iP(e){return e instanceof Element&&e.closest(rP)!==null}function aP(){return{onMouseDown:e=>{e.button!==0||iP(e.target)||nP(`plugin:window|start_dragging`)},onDoubleClick:e=>{iP(e.target)||nP(`plugin:window|toggle_maximize`)}}}function oP(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 sP({collapsed:e,onToggle:t}){let n=i()(e?`nav.expandSidebar`:`nav.collapseSidebar`);return(0,Q.jsx)(`div`,{className:`sidebar-top`,...aP(),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)(pe,{})})})}function cP({children:e}){return(0,Q.jsx)(`div`,{className:`main-top`,...aP(),children:e})}var lP={dashboard:`nav.dashboard`,startup:`nav.startup`,providers:`nav.providers`,models:`nav.models`,subagents:`nav.subagents`,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`},uP=``,dP=o(uP);s(dP),l();var fP=`ocx-theme`;function pP({available:e,apiBase:t,hubOrigin:n,onOpenRemoteLink:r}){let a=i();return e?(0,Q.jsx)(hM,{apiBase:t,hubOrigin:n}):(0,Q.jsxs)(`section`,{className:`panel`,children:[(0,Q.jsx)(`h2`,{children:a(`nav.remoteWorkspace`)}),(0,Q.jsxs)($,{tone:`warn`,children:[a(`link.workspaceUnavailable`),` `,(0,Q.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:r,children:a(`nav.remote`)})]})]})}function mP(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 hP(){let e=localStorage.getItem(fP);return e===`light`||e===`dark`?e:`system`}function gP(){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 _P(){let{page:e,navigateToPage:t}=kN(),[n,r]=(0,Z.useState)(rS);(0,Z.useEffect)(()=>{let e=()=>r(rS());return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[]);let[o,c]=(0,Z.useState)(hP),{locale:l,setLocale:p}=D(),h=i(),[v,y]=(0,Z.useState)(dP),[x,C]=(0,Z.useState)(()=>!_()),[T,E]=(0,Z.useState)(!1),[k,A]=(0,Z.useState)(()=>S(`shared`)),[M,P]=(0,Z.useState)(0),[F,I]=(0,Z.useState)(!1),[L,R]=(0,Z.useState)(!1),[z,B]=(0,Z.useState)(null),[V,H]=(0,Z.useState)(0),U=(0,Z.useCallback)((e,t)=>{B({tone:t,text:e}),H(e=>e+1)},[]);(0,Z.useEffect)(()=>{let e=e=>{e.detail?.plane===`shared`&&!S(`shared`)&&A(!1)};return window.addEventListener(m,e),()=>window.removeEventListener(m,e)},[]),(0,Z.useEffect)(()=>{let e=new AbortController;return b(uP,e.signal).then(async t=>{if(s(t),y(t),t.connected&&!S(`shared`))try{let n=await fetch(t.shared.bootstrapPath,{cache:`no-store`,signal:AbortSignal.any([e.signal,AbortSignal.timeout(5e3)])});n.ok&&g(`shared`,await n.text())}catch{}e.signal.aborted||(A(S(`shared`)),E(!1),C(!0))}).catch(()=>{e.signal.aborted||(E(!0),C(!0))}),()=>e.abort()},[]);let ee=d(`machine`,v),W=d(`shared`,v);(0,Z.useEffect)(()=>{if(!k)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||I(t.available===!0)}).catch(()=>{e.signal.aborted||I(!1)}),()=>e.abort()},[e,k,W]);let G=k&&F,te=wN(e),ne=te?TN(te,{remoteWorkspaceAvailable:G}):[],K=e===`claude`?`integrations`:e,re=e===`remote`&&!k&&f()===`hub`&&u(),[q,J]=(0,Z.useState)(!1),ie=Ha(),{collapsed:Y,toggle:X}=ZN({shortcut:ie}),ae=ie&&Ka()===`macos`,oe=ie&&RN(Ka()),se=QN({managed:oe}),ce=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{if(ae&&ce.current)return oP(ce.current)},[ae]);let le=(0,Z.useRef)(null),ue=(0,Z.useRef)(null),de=(0,Z.useRef)(!1);(0,Z.useEffect)(()=>{let e=()=>J(!1);return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[]),(0,Z.useEffect)(()=>{if(!Ha())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;Za(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(fP)):(e.setAttribute(`data-theme`,o),localStorage.setItem(fP,o))},[o]),(0,Z.useEffect)(()=>{if(z?.tone!==`ok`)return;let e=window.setTimeout(()=>B(null),4500);return()=>window.clearTimeout(e)},[z,V]);let fe=Rt(`app-healthz:${ee}`,[ee,x],async e=>{let t=await fetch(`${ee}/healthz`,{signal:e});return t.ok?mP(await t.json()):null},{pollMs:3e4,enabled:x}),pe=(0,Q.jsx)(tP,{theme:o,onChange:c}),me=fe.data??`2.83.0`,[he,ge]=(0,Z.useState)(!1);(0,Z.useEffect)(()=>{if(!q)return;let e=e=>{e.key===`Escape`&&J(!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}},[q]),(0,Z.useEffect)(()=>{if(q){de.current=!0;let e=setTimeout(()=>ue.current?.focus(),200);return()=>clearTimeout(e)}de.current&&(de.current=!1,le.current?.focus())},[q]),(0,Z.useEffect)(()=>{let e=window.matchMedia(`(min-width: 761px)`),t=()=>{e.matches&&J(!1)};return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let[_e,ve]=(0,Z.useState)(0),{restarting:ye,restart:be}=__(W,{onSettled:()=>ve(e=>e+1),report:U}),xe=async()=>{if(!await Qi({message:h(v.connected?`connection.disconnectConfirm`:`dash.stopConfirm`),confirmLabel:h(v.connected?`connection.disconnect`:`dash.stop`),tone:`danger`}))return;ge(!0);let e=await PN(ee,{formatFailure:e=>h(`dash.stopFailed`,{status:String(e)}),formatStillRunning:()=>h(`dash.stopStillRunning`),formatUnknown:()=>h(`dash.stopUnknown`),mode:v.connected?`client`:`standalone`});e.status!==`accepted`&&(ge(!1),U(e.message,e.status===`rejected`?`err`:`warn`))},Se=async()=>{if(L)return;R(!0);let e=await w(`shared`);R(!1),e?A(!1):U(h(`connection.sessionLogoutFailed`),`err`)},Ce=(0,Q.jsxs)(`button`,{type:`button`,className:`brand brand-home`,onClick:()=>{t(`dashboard`),J(!1)},"aria-label":h(`nav.goHome`),title:h(`nav.goHome`),...e===`dashboard`?{"aria-current":`page`}:{},children:[(0,Q.jsx)(`span`,{className:`brand-logo`,role:`img`,"aria-label":h(`app.logoAria`)}),(0,Q.jsx)(`span`,{className:`name`,children:`opencodex`}),(0,Q.jsxs)(`span`,{className:`ver`,title:me,children:[`v`,me]})]}),we=x&&e!==`startup`&&(!v.connected||k)&&(0,Q.jsx)(qv,{pageName:h(`quotaSummary.aria`),title:h(`errorBoundary.title`),message:h(`errorBoundary.message`),detailsLabel:h(`errorBoundary.details`),reloadLabel:h(`errorBoundary.reload`),children:(0,Q.jsx)(lN,{apiBase:W})},W);return(0,Q.jsxs)(`div`,{ref:ce,className:`app${ie?` app--desktop`:``}${ae?` app--macos`:``}${Y?` app--nav-collapsed`:``}`,children:[(0,Q.jsx)(xN,{apiBase:W,enabled:x&&!v.connected}),z&&(0,Q.jsx)(rn,{tone:z.tone,onDismiss:()=>B(null),dismissLabel:h(`common.close`),children:z.text}),(0,Q.jsxs)(`header`,{className:`mobile-topbar`,inert:q,...ie?aP():{},children:[(0,Q.jsx)(`button`,{ref:le,type:`button`,className:`menu-toggle`,onClick:()=>J(e=>!e),"aria-expanded":q,"aria-controls":`app-sidebar`,"aria-label":h(q?`nav.closeMenu`:`nav.openMenu`),title:h(q?`nav.closeMenu`:`nav.openMenu`),children:(0,Q.jsx)(nt,{})}),Ce,(0,Q.jsxs)(`div`,{className:`mobile-topbar-actions`,children:[v.connected&&k&&(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb`,onClick:()=>{Se()},disabled:L,"aria-label":h(L?`connection.sessionLoggingOut`:`connection.sessionLogout`),title:h(`connection.sessionLogout`),children:(0,Q.jsx)(N,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb sidebar-orb--danger`,onClick:xe,disabled:he,"aria-label":h(v.connected?`connection.disconnect`:`dash.stop`),title:h(v.connected?`connection.disconnect`:`dash.stop`),children:(0,Q.jsx)(j,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb`,onClick:()=>{be()},disabled:ye,"aria-label":h(`dash.codexRestart`),title:h(`dash.codexRestart`),children:(0,Q.jsx)(Fe,{})})]})]}),q&&(0,Q.jsx)(`div`,{className:`drawer-scrim`,onClick:()=>J(!1),"aria-hidden":`true`}),(0,Q.jsx)(sP,{collapsed:Y,onToggle:X}),(0,Q.jsxs)(`aside`,{id:`app-sidebar`,className:`sidebar${q?` open`:``}`,ref:ue,tabIndex:-1,children:[(0,Q.jsxs)(`div`,{className:`drawer-head`,children:[Ce,(0,Q.jsx)(`button`,{type:`button`,className:`menu-toggle drawer-close`,onClick:()=>J(!1),"aria-label":h(`nav.closeMenu`),title:h(`nav.closeMenu`),children:(0,Q.jsx)(N,{})})]}),(0,Q.jsx)(`nav`,{children:CN.map(e=>{let{id:n,tkey:r,Icon:i}=e,a=te?.id===n;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":n,onClick:()=>{t(e.pages[0]),J(!1)},"aria-current":a?`page`:void 0,children:[(0,Q.jsx)(i,{}),` `,h(r)]})},n)})}),(0,Q.jsxs)(`div`,{className:`sidebar-foot`,children:[(0,Q.jsxs)(`div`,{className:`lang-toggle`,children:[(0,Q.jsx)(We,{"aria-hidden":!0}),(0,Q.jsx)(an,{value:l,options:O.map(e=>({value:e.code,label:a(e.code)})),onChange:e=>p(e),label:h(`lang.label`),placement:`right`,portal:!1,style:{flex:1,minWidth:0,width:`100%`}})]}),oe?(0,Q.jsxs)(`div`,{className:`sidebar-display-row`,children:[pe,(0,Q.jsx)($N,{percent:se.percent,canZoomIn:se.canZoomIn,canZoomOut:se.canZoomOut,onStep:se.step})]}):(0,Q.jsxs)(`div`,{className:`sidebar-action-row sidebar-action-row--theme`,children:[(0,Q.jsx)(`span`,{className:`sidebar-action-label`,children:h(`theme.label`)}),pe]}),(0,Q.jsxs)(`div`,{className:`sidebar-action-row`,children:[(0,Q.jsx)(`span`,{className:`sidebar-action-label`,children:h(`dash.actions`)}),(0,Q.jsxs)(`div`,{className:`sidebar-action-orbs`,children:[v.connected&&k&&(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb`,onClick:()=>{Se()},disabled:L,"aria-label":h(L?`connection.sessionLoggingOut`:`connection.sessionLogout`),title:h(`connection.sessionLogout`),children:(0,Q.jsx)(N,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb sidebar-orb--danger`,onClick:xe,disabled:he,"aria-label":h(he?`dash.stopping`:v.connected?`connection.disconnect`:`dash.stop`),title:h(he?`dash.stopping`:v.connected?`connection.disconnect`:`dash.stop`),children:(0,Q.jsx)(j,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`sidebar-orb`,onClick:()=>{be()},disabled:ye,"aria-label":h(ye?`dash.codexRestarting`:`dash.codexRestart`),title:h(ye?`dash.codexRestarting`:`dash.codexRestart`),children:(0,Q.jsx)(Fe,{})})]})]}),(0,Q.jsx)(mN,{apiBase:W,onOpenUpdate:()=>{J(!1),!Ja()&&t(`dashboard`,`update`)},onOpenTerminalCommand:()=>{J(!1),Xa()}})]})]}),(0,Q.jsxs)(`main`,{className:`main`,inert:q,children:[ie?(0,Q.jsx)(cP,{children:we}):we,(0,Q.jsxs)(`div`,{className:`main-inner${e===`models`&&n===`combos`?` main-inner--combos`:``}`,children:[x&&ne.length>1&&(0,Q.jsx)(EN,{items:ne.map(e=>({page:e,label:h(lP[e])})),currentPage:e,onNavigate:t,ariaLabel:h(`nav.sectionNavigation`),onFocusOrphaned:gP}),(0,Q.jsx)(qv,{pageName:h(lP[K]),title:h(`errorBoundary.title`),message:h(`errorBoundary.message`),detailsLabel:h(`errorBoundary.details`),reloadLabel:h(`errorBoundary.reload`),children:x?(0,Q.jsxs)(Q.Fragment,{children:[T&&(0,Q.jsx)(`div`,{className:`alert alert-err`,role:`alert`,children:h(`connection.machineUnavailable`)}),(v.connected&&!k||re)&&(0,Q.jsx)(gO,{target:v.shared,onConnected:()=>{A(!0),P(e=>e+1)}},`${v.shared.serverOrigin}:${v.shared.bootstrapPath}`),e===`dashboard`&&(0,Q.jsx)(ko,{apiBase:W,connected:v.connected,authenticationPending:v.connected&&!k,refreshEpoch:M}),e===`startup`&&(0,Q.jsx)(iM,{apiBase:W,machineApiBase:ee,connected:v.connected}),e===`providers`&&(0,Q.jsx)(vg,{apiBase:W}),e===`models`&&(0,Q.jsx)(ES,{apiBase:W,restartEpoch:_e,connected:v.connected,catalogSyncedAt:v.catalogSyncedAt,reportRestart:U},W),e===`subagents`&&(0,Q.jsx)(WS,{apiBase:W},W),e===`logs`&&(0,Q.jsx)(iT,{apiBase:W}),e===`usage`&&(0,Q.jsx)(lE,{apiBase:W,connected:v.connected,apiKeyId:v.apiKeyId}),e===`storage`&&(0,Q.jsx)(RE,{apiBase:W}),e===`remote`&&!re&&(0,Q.jsx)(YM,{apiBase:W,sessionReady:k,workspaceAvailable:G,onOpenWorkspace:()=>t(`remote-workspace`)}),e===`remote-workspace`&&(0,Q.jsx)(pP,{available:G,apiBase:W,hubOrigin:v.shared.serverOrigin,onOpenRemoteLink:()=>t(`remote`)}),e===`codex-set`&&(0,Q.jsx)(DD,{apiBase:W}),K===`integrations`&&(0,Q.jsx)(Gj,{apiBase:W,machineApiBase:ee,connected:v.connected})]}):(0,Q.jsx)(`div`,{className:`alert`,children:h(`connection.discovering`)})},K)]})]})]})}export{pP as RemoteWorkspaceRoute,_P as default};