@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.
- package/gui/dist/assets/App-CZtqiGcw.js +56 -0
- package/gui/dist/assets/Tray-C9TGtwad.js +1 -0
- package/gui/dist/assets/{index-BAbcj51J.css → index-BB6uK6tU.css} +1 -1
- package/gui/dist/assets/index-CTm4l-HQ.js +94 -0
- package/gui/dist/assets/{quota-summary-DiJO6sYY.js → quota-summary-BbEeRfPY.js} +1 -1
- package/gui/dist/index.html +2 -2
- package/package.json +2 -2
- package/src/adapters/coding-agent/protocol.ts +15 -8
- package/src/adapters/ollama-native.ts +29 -1
- package/src/adapters/openai-chat/messages.ts +8 -4
- package/src/adapters/openai-responses/empty-assistant.ts +32 -0
- package/src/adapters/openai-responses/passthrough.ts +3 -0
- package/src/adapters/openai-responses/request-strips.ts +10 -2
- package/src/adapters/qoder/adapter.ts +16 -14
- package/src/bridge/errors.ts +19 -0
- package/src/bridge.ts +1 -1
- package/src/claude/context-windows.ts +54 -1
- package/src/claude/intercept/connect-proxy.ts +10 -3
- package/src/claude/intercept/picker-ca-persistence.ts +3 -1
- package/src/claude/intercept/picker-listener.ts +49 -1
- package/src/claude/intercept/settings-no-proxy.ts +146 -0
- package/src/claude/intercept/settings.ts +101 -9
- package/src/cli/account-api.ts +65 -0
- package/src/cli/account-auth.ts +26 -2
- package/src/cli/account.ts +41 -5
- package/src/cli/capabilities-access-remote.ts +8 -0
- package/src/cli/capabilities-base.ts +13 -1
- package/src/cli/catalog-command-result.ts +2 -1
- package/src/cli/claude.ts +15 -6
- package/src/cli/config-command.ts +8 -2
- package/src/cli/debug.ts +8 -0
- package/src/cli/dispatch.ts +16 -3
- package/src/cli/export-command.ts +14 -1
- package/src/cli/hub-disable.ts +99 -0
- package/src/cli/hub.ts +4 -2
- package/src/cli/index.ts +13 -4
- package/src/cli/link-child.ts +104 -0
- package/src/cli/link-enrollment.ts +96 -0
- package/src/cli/link.ts +39 -24
- package/src/cli/observe-stream.ts +6 -1
- package/src/cli/observe.ts +10 -2
- package/src/cli/provider.ts +12 -0
- package/src/cli/registry.ts +5 -4
- package/src/cli/runtime-api.ts +27 -2
- package/src/cli/status.ts +104 -20
- package/src/client/connect.ts +39 -4
- package/src/client/hub-client.ts +14 -7
- package/src/client/hub-state.ts +25 -14
- package/src/client/link-home.ts +248 -0
- package/src/client/link-management-relay.ts +61 -0
- package/src/client/link-relay.ts +6 -1
- package/src/client/link-status.ts +14 -0
- package/src/client/machine-api.ts +14 -7
- package/src/client/machine-listener.ts +29 -4
- package/src/clients/config-export.ts +46 -16
- package/src/clients/omo-role-models.ts +6 -3
- package/src/codex/agent-role-models.ts +26 -8
- package/src/codex/auth-api/account-list.ts +17 -2
- package/src/codex/auth-api/account-selection.ts +17 -7
- package/src/codex/auth-api/routes.ts +5 -1
- package/src/codex/autostart-health.ts +3 -1
- package/src/codex/catalog/bundled.ts +5 -1
- package/src/codex/catalog/effort.ts +2 -2
- package/src/codex/catalog/metadata.ts +4 -2
- package/src/codex/catalog/native-models.ts +16 -2
- package/src/codex/native-profile-startup.ts +4 -1
- package/src/codex/prompt-journal.ts +20 -2
- package/src/codex/prompt-layers/encoding.ts +49 -0
- package/src/codex/prompt-layers/import-source.ts +30 -0
- package/src/codex/prompt-layers/toml-edit.ts +269 -37
- package/src/codex/prompt-layers/toml-read.ts +52 -4
- package/src/codex/prompt-layers.ts +383 -20
- package/src/codex/prompt-lock-claim.ts +13 -3
- package/src/codex/prompt-lock-evidence.ts +3 -3
- package/src/codex/prompt-lock-owner.ts +14 -6
- package/src/codex/prompt-text-probe.ts +34 -5
- package/src/codex/quota.ts +13 -6
- package/src/codex/role-auto-assign.ts +2 -5
- package/src/codex/routing/active-account.ts +21 -0
- package/src/codex/routing.ts +1 -1
- package/src/codex/runtime.ts +196 -8
- package/src/codex/shim-overlay.ts +8 -4
- package/src/codex/shim.ts +1 -1
- package/src/combos/failover.ts +3 -0
- package/src/config/api-key-reconcile.ts +34 -0
- package/src/config/diagnostics.ts +16 -0
- package/src/config/feature-flags.ts +5 -0
- package/src/config/live-reconcile.ts +43 -29
- package/src/config/live-topology.ts +29 -0
- package/src/config/load-degrade.ts +2 -1
- package/src/config/paths.ts +3 -0
- package/src/config/salvage.ts +3 -1
- package/src/config/schema/config-schema.ts +2 -0
- package/src/generated/compatibility-version.json +311 -171
- package/src/grok/grpc-web.ts +23 -1
- package/src/grok/reset-coupon-ledger.ts +75 -5
- package/src/grok/reset-coupons.ts +4 -2
- package/src/integrations/mutation-plan.ts +13 -7
- package/src/integrations/registry.ts +45 -11
- package/src/integrations/state.ts +19 -7
- package/src/integrations/target.ts +42 -5
- package/src/integrations/writer.ts +14 -6
- package/src/lib/app-owned-memory-stores.ts +4 -0
- package/src/lib/app-owned-memory.ts +11 -0
- package/src/lib/json-byte-size.ts +31 -0
- package/src/lib/optional-shutdown-hooks.ts +35 -0
- package/src/lib/outbound-credential-registry.ts +210 -0
- package/src/lib/passive-read.ts +35 -0
- package/src/lib/shadow-call.ts +44 -5
- package/src/link/codex-settings.ts +155 -0
- package/src/link/management-routes.ts +89 -0
- package/src/link/remote-probe.ts +38 -0
- package/src/link/ssh-argv.ts +26 -5
- package/src/link/ssh-runner.ts +58 -27
- package/src/link/status-projection.ts +22 -4
- package/src/link/supervisor.ts +144 -49
- package/src/link/tunnel-state.ts +11 -4
- package/src/oauth/anthropic-continuity.ts +4 -3
- package/src/oauth/anthropic-identity.ts +13 -2
- package/src/oauth/anthropic-model-quota.ts +13 -1
- package/src/oauth/anthropic-routing.ts +230 -23
- package/src/oauth/anthropic.ts +18 -4
- package/src/oauth/google-antigravity.ts +24 -7
- package/src/oauth/index.ts +24 -15
- package/src/oauth/kiro-account-identity.ts +106 -0
- package/src/oauth/kiro.ts +48 -5
- package/src/oauth/plan.ts +29 -0
- package/src/oauth/store.ts +40 -3
- package/src/oauth/types.ts +2 -0
- package/src/plugins/loader.ts +11 -0
- package/src/providers/anthropic-billing-ownership.ts +74 -0
- package/src/providers/anthropic-billing-recovery.ts +31 -0
- package/src/providers/anthropic-billing-refusal.ts +55 -0
- package/src/providers/anthropic-reset-admission.ts +62 -0
- package/src/providers/anthropic-reset-grant-ledger.ts +28 -6
- package/src/providers/api-key-resolve.ts +17 -2
- package/src/providers/key-failover.ts +52 -5
- package/src/providers/model-rename-startup.ts +5 -3
- package/src/providers/quota/account-cache.ts +11 -0
- package/src/providers/quota/anthropic-account-quota.ts +4 -2
- package/src/providers/quota/report-cache.ts +14 -0
- package/src/providers/quota/vendor-probes-oauth.ts +3 -3
- package/src/providers/quota.ts +4 -1
- package/src/providers/registry/entries-core.ts +14 -14
- package/src/providers/registry/entries-extended.ts +0 -1
- package/src/providers/registry/model-seeds.ts +17 -0
- package/src/providers/request-pacing.ts +9 -0
- package/src/providers/stale-no-vision-seed-migration.ts +72 -0
- package/src/responses/compaction.ts +14 -0
- package/src/responses/parser.ts +7 -1
- package/src/server/auth-cors.ts +42 -0
- package/src/server/configured-credentials.ts +194 -0
- package/src/server/index/link-management.ts +58 -0
- package/src/server/index/optional-listeners.ts +5 -1
- package/src/server/index/serve-options.ts +13 -0
- package/src/server/lifecycle.ts +2 -1
- package/src/server/management/agent-settings-routes.ts +28 -10
- package/src/server/management/anthropic-reset-grant-routes.ts +17 -1
- package/src/server/management/codex-agent-role-routes.ts +19 -6
- package/src/server/management/codex-prompt-routes.ts +136 -5
- package/src/server/management/codex-role-auto-assign.ts +1 -1
- package/src/server/management/grok-coupon-routes.ts +78 -27
- package/src/server/management/link-enrollment.ts +192 -0
- package/src/server/management/link-route-state.ts +185 -0
- package/src/server/management/link-routes.ts +82 -402
- package/src/server/management/model-rows.ts +3 -1
- package/src/server/management/provider-overwrite-carry.ts +10 -0
- package/src/server/management/provider-routes.ts +1 -0
- package/src/server/management/route-registry.ts +5 -3
- package/src/server/management/shared.ts +3 -0
- package/src/server/management-api.ts +3 -1
- package/src/server/messages-native.ts +68 -42
- package/src/server/relay-eager.ts +2 -0
- package/src/server/request-log-filter.ts +6 -1
- package/src/server/request-log-terminal-status.ts +63 -6
- package/src/server/responses/adapter-dispatch.ts +232 -79
- package/src/server/responses/code-mode-collab-surface.ts +205 -0
- package/src/server/responses/codex-ws-exchange.ts +147 -6
- package/src/server/responses/codex-ws-wire.ts +203 -0
- package/src/server/responses/collaboration.ts +36 -7
- package/src/server/responses/compact.ts +126 -48
- package/src/server/responses/context-overflow.ts +13 -1
- package/src/server/responses/core-codex-account.ts +105 -1
- package/src/server/responses/core-combo-failure.ts +14 -0
- package/src/server/responses/core-combo.ts +7 -2
- package/src/server/responses/core-errors.ts +29 -1
- package/src/server/responses/core-options.ts +2 -0
- package/src/server/responses/deferred-collab-surface.ts +158 -0
- package/src/server/responses/deferred-send-reporter.ts +25 -0
- package/src/server/responses/fetch-helpers.ts +12 -1
- package/src/server/responses/passthrough-delivery.ts +4 -1
- package/src/server/responses/passthrough-dispatch.ts +15 -4
- package/src/server/responses/request-prepare.ts +6 -4
- package/src/server/responses/request-transport.ts +6 -8
- package/src/server/responses/sidecar-execution.ts +11 -2
- package/src/server/responses/ws-upstream.ts +9 -1
- package/src/server/startup-action-control.ts +22 -2
- package/src/server/startup-health-cache.ts +4 -0
- package/src/server/system-env-shell.ts +7 -2
- package/src/server/system-env.ts +11 -1
- package/src/service/cli.ts +5 -1
- package/src/service/desktop-startup.ts +147 -34
- package/src/service/desktop-supervision.d.mts +27 -1
- package/src/service/desktop-supervision.mjs +111 -5
- package/src/service/health-sentinel-launch.ts +176 -0
- package/src/service/health-sentinel-main.ts +447 -0
- package/src/service/health-sentinel-policy.ts +241 -0
- package/src/service/health-sentinel-probe.ts +54 -0
- package/src/service/health-sentinel-windows.ts +87 -0
- package/src/service/linux-linger.ts +20 -0
- package/src/types/config.ts +5 -0
- package/src/usage/expected-prices.ts +4 -0
- package/src/usage/log.ts +19 -1
- package/gui/dist/assets/App-Ba8uG696.js +0 -54
- package/gui/dist/assets/Tray-IImbNPRy.js +0 -1
- package/gui/dist/assets/index-BHRZdJuv.js +0 -94
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as e,C as t,j as n,m as r,n as i,o as a,p as o,s,u as c,y as l}from"./index-CTm4l-HQ.js";import{J as u,T as d,X as f,_ as ee,a as p,c as m,d as h,f as g,i as te,l as ne,m as re,o as ie,p as ae,r as oe,s as _,u as v,v as y}from"./quota-summary-BbEeRfPY.js";var b=n(e(),1),x={discover:r,configure:s,hasSharedSession:()=>c(`shared`),bootstrapShared:e=>a(`shared`,e)},S=()=>new DOMException(`Tray target resolution cancelled`,`AbortError`);async function C(e,t=``,n=x){if(e.aborted)throw S();let r=await n.discover(t,e);if(e.aborted||(n.configure(r),r.connected&&!n.hasSharedSession()&&await n.bootstrapShared(e),e.aborted))throw S();return o(`shared`,r)}var w=i(),T=2e4,E=e=>e?.usageIncomplete||e?.historyTruncated||e?.entriesTruncated;function D({resolveApiBase:e=C}={}){let{t:n,locale:r}=t(),[i,a]=(0,b.useState)(null),[o,s]=(0,b.useState)(!1),[c,x]=(0,b.useState)(null),[S,D]=(0,b.useState)(!1),[O,k]=(0,b.useState)([null,null]),[A,j]=(0,b.useState)(!1),[se,M]=(0,b.useState)([]),[ce,N]=(0,b.useState)(!1),[P,F]=(0,b.useState)(null),[I,L]=(0,b.useState)(!1),[R,z]=(0,b.useState)(null),[B,V]=(0,b.useState)(!1),[H,U]=(0,b.useState)(0),[W,G]=(0,b.useState)(null),[K,q]=(0,b.useState)(null),J=()=>{s(!1),U(e=>e+1)},Y=(0,b.useRef)(!1),X=(0,b.useRef)(null),Z=(0,b.useRef)(!0);(0,b.useEffect)(()=>(Z.current=!0,document.documentElement.classList.add(`tray-document`),()=>{Z.current=!1,X.current?.abort(),document.documentElement.classList.remove(`tray-document`)}),[]),(0,b.useEffect)(()=>{if(i!==null)return;let t=new AbortController;return e(t.signal).then(e=>{t.signal.aborted||a(e)},()=>{t.signal.aborted||s(!0)}),()=>t.abort()},[H,i,e]);let le=async(e,t,r)=>{if(i===null)return;G(`${e}:${r}`),q(null);let a=l(T);X.current=a.controller;try{let n=te(e,t,r),o=await fetch(`${i}${n.path}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n.body),signal:a.signal});if(!o.ok)throw Error(String(o.status));if(!Z.current)return;Y.current=!0,J()}catch{if(!Z.current)return;G(null),q(n(t===`codex`?`codexAuth.switchFailed`:`prov.accountSwitchFail`))}finally{a.clear(),X.current===a.controller&&(X.current=null)}};(0,b.useEffect)(()=>{if(i===null)return;let e=null,t=!1,n=!0,r=!1,a=()=>!document.hidden&&(window.__OPENCODEX_TRAY_VISIBLE__??n),o=async()=>{if(!a()||t)return;t=!0,V(!0);let n=!1,s=new AbortController;e=s;let c=e=>p(`${i}${e}`,s.signal),l=()=>!r&&!s.signal.aborted;try{let e=(async()=>{try{let e=h(await c(`/api/config`)),t=await Promise.all(e.map(async e=>{if(!e.path)return{name:e.name,switchKind:e.switchKind,accounts:[]};try{let t=await c(e.path);if(e.name===`openai`)try{t.activeCodexAccountId=(await c(`/api/codex-auth/active`)).activeCodexAccountId??`__main__`}catch{}return{name:e.name,switchKind:e.switchKind,accounts:ne(t)}}catch{return{name:e.name,switchKind:e.switchKind,accounts:[],unavailable:!0}}}));l()&&(M(t),N(!1),n=!0)}catch{l()&&(M([]),N(!0))}})(),t=(async()=>{let e;try{if(e=(await c(`/api/companion/settings`)).settings,!e||!Array.isArray(e.hiddenProviders)||!(e.models===null||Array.isArray(e.models)))throw Error(`Invalid settings`);l()&&(x(e),D(!1))}catch{l()&&D(!0);return}let t=Promise.allSettled([`/api/usage?range=today`,`/api/usage?range=30d`].map(async t=>{let n=v(await c(t));return ie(n,e)})).then(e=>{l()&&(n||=e.some(e=>e.status===`fulfilled`),k(e.map(e=>e.status===`fulfilled`?e.value:null)),j(e.some(e=>e.status===`rejected`)))}),r=(async()=>{if(!e.showChart)return;let t=y(e);try{let n=await c(`/api/usage/timeline?${t}`);l()&&(F(ee(n,e)),L(!1))}catch{l()&&(F(null),L(!0))}})();await Promise.allSettled([t,r])})();await Promise.allSettled([e,t])}finally{t=!1,l()&&(V(!1),n&&z(Date.now()),Y.current&&(Y.current=!1,G(null))),!r&&s.signal.aborted&&a()&&o()}},s=()=>{a()?o():e?.abort()},c=()=>{n=!1,s()},l=()=>{n=!0,s()},u=e=>{let t=e.detail;typeof t==`boolean`&&(window.__OPENCODEX_TRAY_VISIBLE__=t),s()};o();let d=setInterval(()=>void o(),6e4);return document.addEventListener(`visibilitychange`,s),window.addEventListener(`blur`,c),window.addEventListener(`focus`,l),window.addEventListener(`opencodex:tray-visibility`,u),()=>{r=!0,e?.abort(),clearInterval(d),document.removeEventListener(`visibilitychange`,s),window.removeEventListener(`blur`,c),window.removeEventListener(`focus`,l),window.removeEventListener(`opencodex:tray-visibility`,u)}},[H,i]);let Q=e=>_(e)?u(e,r):`—`,$=e=>{let t=e?m(e):void 0,i=t?.cacheReadInputTokens??t?.cachedInputTokens,a=_(i)&&_(t?.inputTokens)&&t.inputTokens>0?`${Math.round(i/t.inputTokens*100)}%`:`—`;return(0,w.jsxs)(`dl`,{children:[(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`dt`,{children:n(`usage.card.totalTokens`)}),(0,w.jsx)(`dd`,{children:Q(t?.totalTokens)})]}),(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`dt`,{children:n(`tray.input`)}),(0,w.jsxs)(`dd`,{children:[Q(t?.inputTokens),` `,(0,w.jsx)(`small`,{title:n(`usage.card.cachedTokens`),children:n(`tray.cached`,{percent:a})})]})]}),(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`dt`,{children:n(`tray.output`)}),(0,w.jsx)(`dd`,{children:Q(t?.outputTokens)})]}),c?.showCost&&(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`dt`,{title:n(`logs.metric.estimatedCostTitle`),children:n(`tray.cost`)}),(0,w.jsx)(`dd`,{title:_(t?.requests)&&_(t?.pricedRequests)&&t.pricedRequests<t.requests?n(`usage.cost.unpricedNote`,{count:t.requests-t.pricedRequests}):n(`logs.metric.estimatedCostTitle`),children:_(t?.estimatedCostUsd)?new Intl.NumberFormat(r,{style:`currency`,currency:`USD`,maximumFractionDigits:2}).format(t.estimatedCostUsd)+(_(t.pricedRequests)&&_(t.requests)&&t.pricedRequests<t.requests?`*`:``):`—`})]}),(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`dt`,{children:n(`usage.card.requests`)}),(0,w.jsx)(`dd`,{children:Q(t?.requests)})]}),_(t?.requests)&&t.requests>0&&_(t.measuredRequests)&&t.measuredRequests<t.requests&&(0,w.jsxs)(`div`,{className:`tray-coverage`,title:n(`usage.coverage.note`),children:[(0,w.jsx)(`dt`,{children:n(`usage.card.coverage`)}),(0,w.jsxs)(`dd`,{children:[Math.round(t.measuredRequests/t.requests*100),`%`]})]})]})},ue=new Set(c?.hiddenProviders??[]);return(0,w.jsxs)(`main`,{className:`tray-page`,children:[(0,w.jsxs)(`header`,{children:[(0,w.jsx)(`strong`,{children:`OpenCodex`}),(0,w.jsx)(`a`,{href:`/?desktop=open#/usage`,"aria-label":n(`sub.settings`),title:n(`sub.settings`),children:`⚙`})]}),o&&(0,w.jsxs)(`p`,{role:`alert`,className:`tray-error`,children:[n(`startup.tray.unavailable`),` `,(0,w.jsx)(`button`,{onClick:J,children:n(`common.retry`)})]}),S&&(0,w.jsxs)(`p`,{role:`alert`,className:`tray-error`,children:[n(`usage.companion.settingsUnavailable`),` `,(0,w.jsx)(`button`,{onClick:J,children:n(`common.retry`)})]}),!c&&!S&&!o&&(0,w.jsx)(`p`,{role:`status`,children:n(`common.loading`)}),c&&(0,w.jsxs)(`section`,{className:`tray-totals`,children:[c.showToday&&(0,w.jsxs)(`div`,{children:[(0,w.jsxs)(`h2`,{children:[n(`tray.today`),E(O[0])&&(0,w.jsx)(`span`,{title:n(`usage.incomplete`),"aria-label":n(`usage.incomplete`),children:` *`})]}),$(O[0]?.summary)]}),(0,w.jsxs)(`div`,{children:[(0,w.jsxs)(`h2`,{children:[n(`usage.range.30d`),E(O[1])&&(0,w.jsx)(`span`,{title:n(`usage.incomplete`),"aria-label":n(`usage.incomplete`),children:` *`})]}),$(O[1]?.summary)]})]}),A&&(0,w.jsxs)(`p`,{role:`alert`,className:`tray-error`,children:[n(`usage.loadError`),` `,(0,w.jsx)(`button`,{onClick:J,children:n(`common.retry`)})]}),c?.showChart&&(0,w.jsx)(`section`,{className:`tray-chart`,children:(0,w.jsx)(re,{timeline:P,chartStyle:c.chartStyle,hours:c.chartHours,loading:!P&&!I,error:I?n(`usage.companion.timelineUnavailable`):null,onRetry:J,locale:r,t:n})}),c?.showModels&&!!O[0]?.models.length&&(0,w.jsx)(`section`,{className:`tray-models`,"aria-label":n(`usage.section.models`),children:O[0].models.map(e=>(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`span`,{title:`${e.provider}/${e.model}`,children:e.model}),(0,w.jsxs)(`span`,{className:`tray-model-metrics`,children:[(0,w.jsx)(`span`,{title:n(`usage.card.requests`),children:n(`pws.dashboard.requests`,{count:Q(e.requests)})}),(0,w.jsx)(`span`,{title:n(`usage.card.totalTokens`),children:Q(m(e).totalTokens)})]})]},`${e.provider}/${e.model}`))}),(c?.showAccounts??!0)&&(0,w.jsxs)(`section`,{className:`tray-providers`,"aria-label":n(`usage.section.providers`),children:[ce&&(0,w.jsxs)(`p`,{role:`alert`,className:`tray-error`,children:[n(`startup.tray.unavailable`),` `,(0,w.jsx)(`button`,{onClick:J,children:n(`common.retry`)})]}),K&&(0,w.jsx)(`p`,{role:`alert`,className:`tray-error`,children:K}),se.filter(e=>!ue.has(e.name)).map(e=>(0,w.jsxs)(`div`,{className:`tray-provider`,children:[(0,w.jsxs)(`h2`,{children:[(0,w.jsx)(d,{name:e.name,cls:`provider-icon tray-provider-icon`}),f(e.name,n)]}),!e.accounts.length&&(0,w.jsx)(`div`,{className:`tray-missing`,children:n(e.unavailable?`startup.tray.unavailable`:`pws.dashboard.noQuota`)}),e.accounts.map(t=>{let i=e.switchKind,a=W===`${e.name}:${t.id}`;return(0,w.jsxs)(`div`,{className:`tray-account`,children:[(0,w.jsxs)(`div`,{className:`tray-account-name`,children:[(0,w.jsxs)(`span`,{className:`tray-account-label`,title:t.label,children:[t.label,t.exhausted&&(0,w.jsx)(`span`,{className:`tray-exhausted`,title:n(`quota.limitReached`),"aria-label":n(`quota.limitReached`),children:` ⚠`})]}),(0,w.jsxs)(`span`,{className:`tray-account-meta`,children:[a&&(0,w.jsx)(`span`,{role:`status`,children:n(`pws.accountSwitching`)}),!a&&i&&t.switchState===`available`&&(0,w.jsx)(`button`,{type:`button`,className:`tray-use`,disabled:W!==null,onClick:()=>void le(e.name,i,t.id),title:n(`prov.accountSwitchTitle`),"aria-label":`${n(`prov.accountSwitchTitle`)}: ${t.label}`,children:n(`prov.accountSwitchTitle`)}),t.plan,t.active&&(0,w.jsx)(`span`,{className:`tray-active`,title:n(`prov.activeBadge`),"aria-label":n(`prov.activeBadge`),children:` ✓`})]})]}),t.email&&t.email!==t.label&&(0,w.jsx)(`div`,{className:`tray-account-email`,children:t.email}),!g(t.quota).length&&(0,w.jsx)(`div`,{className:`tray-missing`,children:n(t.unavailable?`startup.tray.unavailable`:`pws.dashboard.noQuota`)}),g(t.quota).map(e=>{let t=`key`in e?n(e.key):e.label,i=ae(e.reset,r),a=_(e.percent)?Math.min(100,e.percent):null;return(0,w.jsxs)(`div`,{className:`tray-quota`,children:[(0,w.jsx)(`span`,{title:t,children:t}),(0,w.jsx)(`span`,{children:a===null?`—`:`${Math.round(a)}%`}),(0,w.jsx)(`span`,{className:`tray-bar tray-bar--${oe(a??void 0)}`,role:a===null?`img`:`meter`,"aria-label":a===null?`${t}: ${n(`pws.dashboard.noQuota`)}`:t,"aria-valuemin":a===null?void 0:0,"aria-valuemax":a===null?void 0:100,"aria-valuenow":a??void 0,"aria-valuetext":a===null?void 0:`${Math.round(a)}%`,children:(0,w.jsx)(`i`,{style:{width:a===null?`0%`:`${a}%`}})}),(0,w.jsx)(`time`,{title:i.exact,children:i.text})]},e.id)})]},t.id)})]},e.name))]}),(0,w.jsxs)(`div`,{className:`tray-refresh`,children:[(0,w.jsx)(`button`,{type:`button`,onClick:J,disabled:B,children:n(`startup.refresh`)}),(0,w.jsx)(`span`,{role:`status`,children:n(`tray.updated`,{time:R===null?`—`:new Date(R).toLocaleTimeString(r,{hour:`2-digit`,minute:`2-digit`})})})]}),(0,w.jsx)(`footer`,{children:(0,w.jsxs)(`a`,{href:`/?desktop=open#/usage`,children:[n(`nav.dashboard`),` `,(0,w.jsx)(`span`,{"aria-hidden":`true`,children:`↗`})]})})]})}export{D as default};
|