@bitkyc08/opencodex 2.80.0 → 2.82.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/README.md +3 -3
- package/bin/ocx.mjs +166 -73
- package/gui/dist/assets/App-Ds_qL7o8.js +54 -0
- package/gui/dist/assets/Tray-BqHF5Trd.js +1 -0
- package/gui/dist/assets/{index-Brk6F3fn.css → index-BAbcj51J.css} +1 -1
- package/gui/dist/assets/index-D3FBCNiP.js +94 -0
- package/gui/dist/assets/quota-summary-DTBC8n7-.js +1 -0
- package/gui/dist/index.html +2 -2
- package/gui/dist/provider-icons/claude-green.svg +1 -0
- package/package.json +3 -2
- package/src/adapters/anthropic-model-contract.ts +8 -2
- package/src/adapters/anthropic.ts +8 -3
- package/src/adapters/codebuddy/mcp-server.ts +2 -25
- package/src/adapters/codebuddy/tool-bridge.ts +1 -7
- package/src/adapters/coding-agent/mcp-server.ts +33 -0
- package/src/adapters/coding-agent/protocol.ts +122 -17
- package/src/adapters/coding-agent/tool-catalog.ts +75 -0
- package/src/adapters/coding-agent/turn.ts +101 -44
- package/src/adapters/cursor/catalog.ts +8 -0
- package/src/adapters/cursor/effort-map.ts +2 -0
- package/src/adapters/devin/live-models.ts +2 -0
- package/src/adapters/kiro-retry.ts +9 -4
- package/src/adapters/openai-chat/messages.ts +7 -6
- package/src/adapters/openai-responses/compaction-search-history.ts +109 -0
- package/src/adapters/openai-responses/passthrough.ts +9 -4
- package/src/adapters/openai-responses/tool-output-recovery.ts +20 -0
- package/src/adapters/physical-send.ts +8 -5
- package/src/adapters/qoder/adapter.ts +41 -6
- package/src/adapters/qoder/scaffold-guard.ts +2 -3
- package/src/adapters/zed.ts +16 -1
- package/src/claude/agents-inject.ts +14 -3
- package/src/claude/context-windows.ts +19 -17
- package/src/claude/desktop-3p.ts +88 -12
- package/src/claude/desktop-profile.ts +2 -1
- package/src/claude/gateway-cache.ts +18 -1
- package/src/claude/inbound-cache-stabilize.ts +4 -9
- package/src/claude/inbound.ts +78 -3
- package/src/claude/intercept/cli-catalog.ts +3 -0
- package/src/claude/intercept/model-bindings.ts +1 -0
- package/src/claude/intercept/picker-ca-persistence.ts +7 -6
- package/src/claude/intercept/picker-listener.ts +71 -4
- package/src/claude/intercept/picker-models.ts +14 -6
- package/src/claude/intercept/settings.ts +3 -0
- package/src/claude/long-context.ts +66 -0
- package/src/claude/model-info.ts +19 -16
- package/src/claude/outbound.ts +94 -9
- package/src/claude/subagent-model.ts +40 -11
- package/src/cli/account-anthropic-threshold.ts +14 -5
- package/src/cli/account-api.ts +3 -1
- package/src/cli/account-extended.ts +13 -9
- package/src/cli/account-policy-dto.ts +1 -1
- package/src/cli/account-policy.ts +13 -4
- package/src/cli/account.ts +3 -3
- package/src/cli/agent.ts +9 -5
- package/src/cli/aside-profile-recovery.ts +33 -0
- package/src/cli/capabilities-accounts.ts +2 -2
- package/src/cli/capabilities-agents-routing.ts +24 -0
- package/src/cli/capabilities-base.ts +5 -5
- package/src/cli/capabilities-integrations.ts +18 -2
- package/src/cli/cli-path-diagnostics.ts +132 -0
- package/src/cli/codex-shim-autorestore.ts +3 -0
- package/src/cli/desktop-runtime-guidance.ts +65 -0
- package/src/cli/dispatch.ts +15 -1
- package/src/cli/doctor.ts +16 -3
- package/src/cli/help.ts +4 -1
- package/src/cli/index.ts +25 -14
- package/src/cli/integration-aside-sync.ts +2 -1
- package/src/cli/integration-plan-dto.ts +1 -0
- package/src/cli/integration-preview.ts +8 -1
- package/src/cli/integrations.ts +48 -6
- package/src/cli/message-args.ts +34 -0
- package/src/cli/message-command.ts +43 -0
- package/src/cli/message-runtime.ts +6 -0
- package/src/cli/observe.ts +3 -1
- package/src/cli/provider.ts +29 -6
- package/src/cli/registry.ts +24 -2
- package/src/cli/resolve.ts +25 -2
- package/src/cli/root.ts +4 -2
- package/src/cli/status.ts +64 -12
- package/src/cli/update-restart-child.ts +4 -2
- package/src/cli/update-restart-home.ts +28 -10
- package/src/cli/update-restart-service-record.ts +116 -0
- package/src/cli/update-restart-supervision.ts +96 -0
- package/src/cli/update-restart.ts +59 -13
- package/src/cli/v2.ts +27 -20
- package/src/cli/version-skew-notice.ts +77 -0
- package/src/clients/config-export/commandcode.ts +131 -0
- package/src/clients/config-export/contracts.ts +12 -0
- package/src/clients/config-export.ts +64 -1
- package/src/clients/lazycodex.ts +1 -1
- package/src/clients/omo-role-models.ts +32 -7
- package/src/codex/auth-api/account-list.ts +11 -3
- package/src/codex/auth-api/account-selection.ts +107 -0
- package/src/codex/auth-api/main-account-probe.ts +25 -8
- package/src/codex/auth-api/pool-mode-gate.ts +33 -9
- package/src/codex/auth-api/pool-quota-probe.ts +15 -1
- package/src/codex/auth-api/routes.ts +11 -49
- package/src/codex/auth-context.ts +20 -1
- package/src/codex/autostart-health.ts +12 -3
- package/src/codex/catalog/auto-review.ts +13 -6
- package/src/codex/catalog/build-entries.ts +33 -7
- package/src/codex/catalog/bundled.ts +155 -26
- package/src/codex/catalog/combo-member.ts +3 -2
- package/src/codex/catalog/control-plane.ts +45 -0
- package/src/codex/catalog/effort.ts +37 -6
- package/src/codex/catalog/gather-capture.ts +10 -3
- package/src/codex/catalog/model-hints.ts +15 -8
- package/src/codex/catalog/model-visibility.ts +3 -1
- package/src/codex/catalog/operator-tiers.ts +38 -0
- package/src/codex/catalog/parsing.ts +2 -1
- package/src/codex/catalog/provider-models.ts +58 -44
- package/src/codex/catalog/retained-sync.ts +7 -5
- package/src/codex/catalog/routed-gather.ts +15 -1
- package/src/codex/catalog-auto-refresh-sources.ts +3 -4
- package/src/codex/catalog-auto-refresh.ts +19 -0
- package/src/codex/catalog.ts +1 -1
- package/src/codex/codex-home-owner.ts +3 -0
- package/src/codex/config-write-lock.ts +333 -0
- package/src/codex/control-plane-models.ts +6 -0
- package/src/codex/convergence.ts +2 -1
- package/src/codex/features.ts +257 -200
- package/src/codex/inject/config-write-section.ts +34 -0
- package/src/codex/inject/multi-agent-v2.ts +14 -6
- package/src/codex/inject/remove.ts +36 -11
- package/src/codex/inject/restore.ts +85 -20
- package/src/codex/inject-coordination.ts +15 -6
- package/src/codex/inject.ts +62 -20
- package/src/codex/journal.ts +62 -17
- package/src/codex/main-account-cache.ts +43 -0
- package/src/codex/paths.ts +2 -0
- package/src/codex/prepared-home.ts +18 -0
- package/src/codex/prompt-journal.ts +25 -12
- package/src/codex/prompt-layers.ts +49 -26
- package/src/codex/prompt-lock-claim.ts +134 -0
- package/src/codex/prompt-lock-evidence.ts +26 -0
- package/src/codex/prompt-lock-io.ts +16 -0
- package/src/codex/prompt-lock-owner.ts +130 -0
- package/src/codex/prompt-lock.ts +84 -53
- package/src/codex/routing/failure-window.ts +146 -0
- package/src/codex/routing/selection.ts +4 -1
- package/src/codex/routing.ts +13 -17
- package/src/codex/runtime.ts +106 -18
- package/src/codex/shim.ts +45 -19
- package/src/combos/jev-decision-contract.ts +25 -2
- package/src/combos/jev-service-exchange.ts +281 -0
- package/src/combos/jev.ts +34 -219
- package/src/combos/types.ts +1 -1
- package/src/config/atomic-write.ts +1 -1
- package/src/config/codex-ws-reuse-setting.ts +10 -0
- package/src/config/diagnostics.ts +27 -16
- package/src/config/live-reconcile.ts +17 -0
- package/src/config/load-degrade.ts +42 -0
- package/src/config/rebase-provenance.ts +11 -0
- package/src/config/schema/anthropic-account-pool.ts +143 -0
- package/src/config/schema/config-schema.ts +11 -1
- package/src/config/schema/leaf-validators.ts +4 -0
- package/src/config.ts +2 -0
- package/src/generated/compatibility-version.json +566 -298
- package/src/generated/model-metadata.ts +7 -6
- package/src/grok/inject.ts +50 -4
- package/src/grok/sync.ts +2 -1
- package/src/images/loop.ts +30 -11
- package/src/integrations/aside-profiles.ts +10 -3
- package/src/integrations/catalog-refresh.ts +19 -3
- package/src/integrations/mutation-plan.ts +7 -0
- package/src/integrations/registry.ts +8 -0
- package/src/integrations/state.ts +9 -2
- package/src/integrations/writer.ts +17 -5
- package/src/lib/bun-path-runtime.d.mts +32 -0
- package/src/lib/bun-path-runtime.mjs +95 -0
- package/src/lib/bun-runtime-preflight.ts +140 -0
- package/src/lib/desktop-cli-handoff.d.mts +20 -0
- package/src/lib/desktop-cli-handoff.mjs +92 -0
- package/src/lib/desktop-cli-record.d.mts +29 -0
- package/src/lib/desktop-cli-record.mjs +102 -0
- package/src/lib/lab-live-route-production.ts +9 -1
- package/src/lib/request-execution-budget.ts +244 -58
- package/src/lib/spend-pool-alias-validation.ts +79 -0
- package/src/lib/spend-pool-continuity.ts +34 -0
- package/src/lib/spend-reservation-ledger.ts +412 -50
- package/src/lib/state-store-registrations.ts +20 -3
- package/src/lib/synced-state-location.ts +46 -6
- package/src/lib/test-home-guard.ts +87 -1
- package/src/lib/translator-budget.ts +17 -4
- package/src/lib/upstream-retry.ts +17 -5
- package/src/lib/windows-atomic-replace.ts +38 -16
- package/src/lib/windows-elevation.ts +6 -0
- package/src/lib/windows-secret-acl.ts +92 -25
- package/src/lib/winsw.ts +2 -3
- package/src/lib/workflow-budget.ts +53 -11
- package/src/messaging/budget.ts +45 -0
- package/src/messaging/discovery.ts +57 -0
- package/src/messaging/envelope.ts +49 -0
- package/src/messaging/input.ts +37 -0
- package/src/messaging/rpc.ts +196 -0
- package/src/messaging/send.ts +58 -0
- package/src/messaging/socket.ts +72 -0
- package/src/messaging/types.ts +29 -0
- package/src/oauth/anthropic-account-refusal.ts +90 -18
- package/src/oauth/anthropic-account-threshold.ts +8 -2
- package/src/oauth/anthropic-continuity.ts +15 -1
- package/src/oauth/anthropic-model-quota.ts +120 -48
- package/src/oauth/anthropic-model-routes.ts +11 -3
- package/src/oauth/anthropic-oauth-definitions.ts +98 -0
- package/src/oauth/anthropic-pool-config.ts +30 -0
- package/src/oauth/anthropic-rate-limit-policy.ts +64 -9
- package/src/oauth/anthropic-routing.ts +1202 -866
- package/src/oauth/anthropic-send-ownership.ts +41 -0
- package/src/oauth/anthropic.ts +4 -1
- package/src/oauth/chatgpt.ts +113 -41
- package/src/oauth/generic-account-failover.ts +3 -1
- package/src/oauth/health.ts +8 -6
- package/src/oauth/index.ts +96 -175
- package/src/oauth/kiro.ts +22 -9
- package/src/oauth/login-cli.ts +2 -0
- package/src/oauth/model-discovery-auth.ts +43 -0
- package/src/oauth/pool-kernel.ts +11 -5
- package/src/oauth/pool-settings-capability.ts +5 -3
- package/src/oauth/store-anthropic-instance.ts +87 -0
- package/src/oauth/store.ts +68 -10
- package/src/oauth/token-guardian.ts +2 -0
- package/src/oauth/types.ts +2 -0
- package/src/protocols/plan-snapshot.ts +5 -0
- package/src/protocols/settings.ts +20 -5
- package/src/providers/anthropic-instance-id.ts +47 -0
- package/src/providers/anthropic-instance.ts +48 -0
- package/src/providers/anthropic-reset-grant-ledger.ts +11 -1
- package/src/providers/azure-model-metadata.ts +115 -0
- package/src/providers/derive.ts +23 -0
- package/src/providers/kiro-models.ts +3 -0
- package/src/providers/label.ts +1 -1
- package/src/providers/model-rename-fields.ts +2 -0
- package/src/providers/quota/account-cache.ts +37 -11
- package/src/providers/quota/anthropic-account-quota.ts +93 -0
- package/src/providers/quota/anthropic-cooldown-recovery.ts +222 -111
- package/src/providers/quota/report-cache.ts +24 -1
- package/src/providers/quota/vendor-probes-key.ts +127 -17
- package/src/providers/quota/vendor-probes-oauth.ts +46 -14
- package/src/providers/quota.ts +23 -33
- package/src/providers/registry/entries-core.ts +35 -30
- package/src/providers/registry/model-ids.ts +1 -0
- package/src/providers/registry/model-seeds.ts +7 -4
- package/src/providers/registry/types.ts +3 -0
- package/src/providers/registry.ts +3 -3
- package/src/responses/reasoning-envelope.ts +29 -1
- package/src/responses/reasoning-replay-cache.ts +17 -1
- package/src/responses/spill-store.ts +20 -3
- package/src/responses/state/metrics.ts +95 -0
- package/src/responses/state/snapshot-codec.ts +6 -0
- package/src/responses/state/spill-failure.ts +12 -0
- package/src/responses/state/spill-queue.ts +13 -5
- package/src/responses/state/unforced-store-false.ts +55 -0
- package/src/responses/state.ts +68 -76
- package/src/responses/task-input.ts +17 -0
- package/src/router.ts +28 -4
- package/src/routing/compatibility/assemble.ts +1 -1
- package/src/routing/quota.ts +7 -3
- package/src/server/auth-cors.ts +5 -0
- package/src/server/background-lifecycle.ts +27 -0
- package/src/server/chat-completions.ts +7 -1
- package/src/server/chat-native.ts +64 -28
- package/src/server/claude-messages.ts +59 -8
- package/src/server/gui-static.ts +38 -4
- package/src/server/inbound-body-admission.ts +1 -0
- package/src/server/index/claude-intercept-lifecycle.ts +3 -1
- package/src/server/index/serve-options.ts +10 -2
- package/src/server/index/spend-ledger-lifecycle.ts +12 -5
- package/src/server/index/startup-warnings.ts +19 -0
- package/src/server/index.ts +5 -2
- package/src/server/inference/context.ts +1 -1
- package/src/server/lifecycle.ts +1 -1
- package/src/server/management/agent-settings-routes.ts +123 -38
- package/src/server/management/anthropic-account-threshold.ts +12 -9
- package/src/server/management/anthropic-pool-settings.ts +72 -0
- package/src/server/management/anthropic-reset-grant-routes.ts +98 -39
- package/src/server/management/codex-agent-role-routes.ts +4 -2
- package/src/server/management/codex-prompt-routes.ts +1 -0
- package/src/server/management/codex-role-auto-assign.ts +13 -2
- package/src/server/management/config-routes.ts +85 -14
- package/src/server/management/context.ts +2 -2
- package/src/server/management/decision-routes.ts +2 -1
- package/src/server/management/integration-routes.ts +25 -2
- package/src/server/management/oauth-account-routes.ts +79 -98
- package/src/server/management/provider-instance-ownership.ts +44 -0
- package/src/server/management/provider-routes.ts +21 -28
- package/src/server/management/route-registry.ts +3 -1
- package/src/server/management/routing-profile-routes.ts +4 -4
- package/src/server/management/shared.ts +3 -3
- package/src/server/management/system-restart.ts +44 -14
- package/src/server/management/system-routes.ts +24 -2
- package/src/server/management/vision-sidecar-options.ts +9 -6
- package/src/server/management/web-search-sidecar-options.ts +51 -2
- package/src/server/management-auth.ts +6 -0
- package/src/server/messages-native-eligibility.ts +3 -2
- package/src/server/messages-native-oauth.ts +91 -45
- package/src/server/messages-native-selector.ts +39 -0
- package/src/server/messages-native.ts +133 -38
- package/src/server/messages-response-headers.ts +14 -0
- package/src/server/request-log-conversation.ts +48 -5
- package/src/server/request-log.ts +36 -2
- package/src/server/responses/adapter-continuation.ts +31 -19
- package/src/server/responses/adapter-dispatch.ts +75 -24
- package/src/server/responses/antigravity-validation-refusal.ts +20 -6
- package/src/server/responses/codex-ws-exchange.ts +17 -2
- package/src/server/responses/codex-ws-pool.ts +100 -13
- package/src/server/responses/codex-ws-wire.ts +9 -0
- package/src/server/responses/combo-requested-effort.ts +3 -1
- package/src/server/responses/compact.ts +25 -8
- package/src/server/responses/compaction-recovery.ts +1 -1
- package/src/server/responses/core-codex-account.ts +22 -1
- package/src/server/responses/core-combo-native.ts +24 -4
- package/src/server/responses/core-combo.ts +38 -25
- package/src/server/responses/core-lifetime.ts +3 -36
- package/src/server/responses/core-normalize.ts +1 -0
- package/src/server/responses/core-options.ts +8 -1
- package/src/server/responses/core-replay.ts +78 -0
- package/src/server/responses/core.ts +3 -3
- package/src/server/responses/fetch-helpers.ts +26 -3
- package/src/server/responses/passthrough-delivery.ts +30 -4
- package/src/server/responses/passthrough-dispatch.ts +39 -9
- package/src/server/responses/request-prepare.ts +41 -5
- package/src/server/responses/request-send-budget.ts +150 -50
- package/src/server/responses/request-spend.ts +325 -33
- package/src/server/responses/request-transport.ts +132 -52
- package/src/server/responses/response-effects.ts +1 -0
- package/src/server/responses/run-turn-execution.ts +13 -3
- package/src/server/responses/sidecar-execution.ts +113 -22
- package/src/server/responses/sidecar-send-budget.ts +58 -0
- package/src/server/responses/ws-upstream.ts +19 -6
- package/src/server/responses-undeclared-tool-guard.ts +5 -1
- package/src/server/startup-health-cache.ts +2 -1
- package/src/server/workflow-refusal.ts +33 -0
- package/src/service/cli.ts +20 -4
- package/src/service/desktop-command-guard.ts +32 -0
- package/src/service/desktop-startup.ts +66 -40
- package/src/service/desktop-supervision.d.mts +26 -0
- package/src/service/desktop-supervision.mjs +140 -0
- package/src/service/managing-cli.ts +1 -0
- package/src/service/orchestration.ts +46 -20
- package/src/service/ownership-mutation-lease.d.mts +1 -1
- package/src/service/ownership-mutation-lease.mjs +5 -7
- package/src/service/repair.ts +25 -9
- package/src/service/state.ts +4 -3
- package/src/service/systemd.ts +17 -8
- package/src/service/windows-ops.ts +61 -22
- package/src/sidecar/anthropic-binding.ts +79 -0
- package/src/sidecar/auth.ts +76 -2
- package/src/storage/policy-job.ts +5 -1
- package/src/storage/policy-worker.ts +3 -1
- package/src/storage/policy.ts +9 -0
- package/src/types/anthropic-account-pool.ts +33 -0
- package/src/types/config.ts +33 -28
- package/src/types/provider.ts +5 -0
- package/src/types/request.ts +5 -0
- package/src/types/tools.ts +7 -0
- package/src/types/wire.ts +1 -0
- package/src/types.ts +4 -0
- package/src/update/index.ts +57 -9
- package/src/update/restart-ownership.ts +10 -3
- package/src/update/runtime-ownership.d.mts +6 -0
- package/src/update/runtime-ownership.mjs +23 -7
- package/src/usage/cost.ts +3 -2
- package/src/usage/expected-prices.ts +66 -14
- package/src/vision/anthropic-describe.ts +16 -3
- package/src/vision/index.ts +3 -0
- package/src/vision/plan.ts +19 -6
- package/src/web-search/alpha-search.ts +7 -1
- package/src/web-search/anthropic-executor.ts +16 -4
- package/src/web-search/index.ts +7 -3
- package/src/web-search/loop.ts +32 -7
- package/src/web-search/passthrough-bridge.ts +4 -1
- package/src/web-search/sidecar-providers.ts +4 -3
- package/gui/dist/assets/App-MbDVfUeC.js +0 -54
- package/gui/dist/assets/Tray-CzkxK82A.js +0 -1
- package/gui/dist/assets/index-UJt6npXk.js +0 -94
- package/gui/dist/assets/quota-summary-DU3sD6Z-.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{O as e,k as t,n,v as r,x as i}from"./index-D3FBCNiP.js";import{J as a,T as o,X as s,_ as c,a as ee,c as l,d as u,f as d,i as f,l as p,m,o as h,p as g,r as te,s as _,u as v,v as y}from"./quota-summary-DTBC8n7-.js";var b=t(e(),1),x=n(),S=2e4,C=e=>e?.usageIncomplete||e?.historyTruncated||e?.entriesTruncated;function w(){let{t:e,locale:t}=i(),[n,w]=(0,b.useState)(null),[T,E]=(0,b.useState)(!1),[D,O]=(0,b.useState)([null,null]),[k,A]=(0,b.useState)(!1),[j,M]=(0,b.useState)([]),[N,P]=(0,b.useState)(!1),[F,I]=(0,b.useState)(null),[L,R]=(0,b.useState)(!1),[z,B]=(0,b.useState)(null),[V,H]=(0,b.useState)(!1),[U,W]=(0,b.useState)(0),[G,K]=(0,b.useState)(null),[q,J]=(0,b.useState)(null),Y=()=>W(e=>e+1),X=(0,b.useRef)(!1),Z=async(t,n,i)=>{K(`${t}:${i}`),J(null);let a=r(S);try{let e=f(t,n,i),r=await fetch(e.path,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e.body),signal:a.signal});if(!r.ok)throw Error(String(r.status));X.current=!0,Y()}catch{K(null),J(e(n===`codex`?`codexAuth.switchFailed`:`prov.accountSwitchFail`))}finally{a.clear()}};(0,b.useEffect)(()=>{document.documentElement.classList.add(`tray-document`);let e=null,t=!1,n=!0,r=!1,i=()=>!document.hidden&&(window.__OPENCODEX_TRAY_VISIBLE__??n),a=async()=>{if(!i()||t)return;t=!0,H(!0);let n=!1,o=new AbortController;e=o;let s=e=>ee(e,o.signal),l=()=>!r&&!o.signal.aborted;try{let e=(async()=>{try{let e=u(await s(`/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 s(e.path);if(e.name===`openai`)try{t.activeCodexAccountId=(await s(`/api/codex-auth/active`)).activeCodexAccountId??`__main__`}catch{}return{name:e.name,switchKind:e.switchKind,accounts:p(t)}}catch{return{name:e.name,switchKind:e.switchKind,accounts:[],unavailable:!0}}}));l()&&(M(t),P(!1),n=!0)}catch{l()&&(M([]),P(!0))}})(),t=(async()=>{let e;try{if(e=(await s(`/api/companion/settings`)).settings,!e||!Array.isArray(e.hiddenProviders)||!(e.models===null||Array.isArray(e.models)))throw Error(`Invalid settings`);l()&&(w(e),E(!1))}catch{l()&&E(!0);return}let t=Promise.allSettled([`/api/usage?range=today`,`/api/usage?range=30d`].map(async t=>{let n=v(await s(t));return h(n,e)})).then(e=>{l()&&(n||=e.some(e=>e.status===`fulfilled`),O(e.map(e=>e.status===`fulfilled`?e.value:null)),A(e.some(e=>e.status===`rejected`)))}),r=(async()=>{if(!e.showChart)return;let t=y(e);try{let n=await s(`/api/usage/timeline?${t}`);l()&&(I(c(n,e)),R(!1))}catch{l()&&(I(null),R(!0))}})();await Promise.allSettled([t,r])})();await Promise.allSettled([e,t])}finally{t=!1,l()&&(H(!1),n&&B(Date.now()),X.current&&(X.current=!1,K(null))),!r&&o.signal.aborted&&i()&&a()}},o=()=>{i()?a():e?.abort()},s=()=>{n=!1,o()},l=()=>{n=!0,o()},d=e=>{let t=e.detail;typeof t==`boolean`&&(window.__OPENCODEX_TRAY_VISIBLE__=t),o()};a();let f=setInterval(()=>void a(),6e4);return document.addEventListener(`visibilitychange`,o),window.addEventListener(`blur`,s),window.addEventListener(`focus`,l),window.addEventListener(`opencodex:tray-visibility`,d),()=>{r=!0,e?.abort(),clearInterval(f),document.documentElement.classList.remove(`tray-document`),document.removeEventListener(`visibilitychange`,o),window.removeEventListener(`blur`,s),window.removeEventListener(`focus`,l),window.removeEventListener(`opencodex:tray-visibility`,d)}},[U]);let Q=e=>_(e)?a(e,t):`—`,$=r=>{let i=r?l(r):void 0,a=i?.cacheReadInputTokens??i?.cachedInputTokens,o=_(a)&&_(i?.inputTokens)&&i.inputTokens>0?`${Math.round(a/i.inputTokens*100)}%`:`—`;return(0,x.jsxs)(`dl`,{children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:e(`usage.card.totalTokens`)}),(0,x.jsx)(`dd`,{children:Q(i?.totalTokens)})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:e(`tray.input`)}),(0,x.jsxs)(`dd`,{children:[Q(i?.inputTokens),` `,(0,x.jsx)(`small`,{title:e(`usage.card.cachedTokens`),children:e(`tray.cached`,{percent:o})})]})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:e(`tray.output`)}),(0,x.jsx)(`dd`,{children:Q(i?.outputTokens)})]}),n?.showCost&&(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{title:e(`logs.metric.estimatedCostTitle`),children:e(`tray.cost`)}),(0,x.jsx)(`dd`,{title:_(i?.requests)&&_(i?.pricedRequests)&&i.pricedRequests<i.requests?e(`usage.cost.unpricedNote`,{count:i.requests-i.pricedRequests}):e(`logs.metric.estimatedCostTitle`),children:_(i?.estimatedCostUsd)?new Intl.NumberFormat(t,{style:`currency`,currency:`USD`,maximumFractionDigits:2}).format(i.estimatedCostUsd)+(_(i.pricedRequests)&&_(i.requests)&&i.pricedRequests<i.requests?`*`:``):`—`})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:e(`usage.card.requests`)}),(0,x.jsx)(`dd`,{children:Q(i?.requests)})]}),_(i?.requests)&&i.requests>0&&_(i.measuredRequests)&&i.measuredRequests<i.requests&&(0,x.jsxs)(`div`,{className:`tray-coverage`,title:e(`usage.coverage.note`),children:[(0,x.jsx)(`dt`,{children:e(`usage.card.coverage`)}),(0,x.jsxs)(`dd`,{children:[Math.round(i.measuredRequests/i.requests*100),`%`]})]})]})},ne=new Set(n?.hiddenProviders??[]);return(0,x.jsxs)(`main`,{className:`tray-page`,children:[(0,x.jsxs)(`header`,{children:[(0,x.jsx)(`strong`,{children:`OpenCodex`}),(0,x.jsx)(`a`,{href:`/?desktop=open#/usage`,"aria-label":e(`sub.settings`),title:e(`sub.settings`),children:`⚙`})]}),T&&(0,x.jsxs)(`p`,{role:`alert`,className:`tray-error`,children:[e(`usage.companion.settingsUnavailable`),` `,(0,x.jsx)(`button`,{onClick:Y,children:e(`common.retry`)})]}),!n&&!T&&(0,x.jsx)(`p`,{role:`status`,children:e(`common.loading`)}),n&&(0,x.jsxs)(`section`,{className:`tray-totals`,children:[n.showToday&&(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`h2`,{children:[e(`tray.today`),C(D[0])&&(0,x.jsx)(`span`,{title:e(`usage.incomplete`),"aria-label":e(`usage.incomplete`),children:` *`})]}),$(D[0]?.summary)]}),(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`h2`,{children:[e(`usage.range.30d`),C(D[1])&&(0,x.jsx)(`span`,{title:e(`usage.incomplete`),"aria-label":e(`usage.incomplete`),children:` *`})]}),$(D[1]?.summary)]})]}),k&&(0,x.jsxs)(`p`,{role:`alert`,className:`tray-error`,children:[e(`usage.loadError`),` `,(0,x.jsx)(`button`,{onClick:Y,children:e(`common.retry`)})]}),n?.showChart&&(0,x.jsx)(`section`,{className:`tray-chart`,children:(0,x.jsx)(m,{timeline:F,chartStyle:n.chartStyle,hours:n.chartHours,loading:!F&&!L,error:L?e(`usage.companion.timelineUnavailable`):null,onRetry:Y,locale:t,t:e})}),n?.showModels&&!!D[0]?.models.length&&(0,x.jsx)(`section`,{className:`tray-models`,"aria-label":e(`usage.section.models`),children:D[0].models.map(t=>(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`span`,{title:`${t.provider}/${t.model}`,children:t.model}),(0,x.jsxs)(`span`,{className:`tray-model-metrics`,children:[(0,x.jsx)(`span`,{title:e(`usage.card.requests`),children:e(`pws.dashboard.requests`,{count:Q(t.requests)})}),(0,x.jsx)(`span`,{title:e(`usage.card.totalTokens`),children:Q(l(t).totalTokens)})]})]},`${t.provider}/${t.model}`))}),(n?.showAccounts??!0)&&(0,x.jsxs)(`section`,{className:`tray-providers`,"aria-label":e(`usage.section.providers`),children:[N&&(0,x.jsxs)(`p`,{role:`alert`,className:`tray-error`,children:[e(`startup.tray.unavailable`),` `,(0,x.jsx)(`button`,{onClick:Y,children:e(`common.retry`)})]}),q&&(0,x.jsx)(`p`,{role:`alert`,className:`tray-error`,children:q}),j.filter(e=>!ne.has(e.name)).map(n=>(0,x.jsxs)(`div`,{className:`tray-provider`,children:[(0,x.jsxs)(`h2`,{children:[(0,x.jsx)(o,{name:n.name,cls:`provider-icon tray-provider-icon`}),s(n.name,e)]}),!n.accounts.length&&(0,x.jsx)(`div`,{className:`tray-missing`,children:e(n.unavailable?`startup.tray.unavailable`:`pws.dashboard.noQuota`)}),n.accounts.map(r=>{let i=n.switchKind,a=G===`${n.name}:${r.id}`;return(0,x.jsxs)(`div`,{className:`tray-account`,children:[(0,x.jsxs)(`div`,{className:`tray-account-name`,children:[(0,x.jsxs)(`span`,{className:`tray-account-label`,title:r.label,children:[r.label,r.exhausted&&(0,x.jsx)(`span`,{className:`tray-exhausted`,title:e(`quota.limitReached`),"aria-label":e(`quota.limitReached`),children:` ⚠`})]}),(0,x.jsxs)(`span`,{className:`tray-account-meta`,children:[a&&(0,x.jsx)(`span`,{role:`status`,children:e(`pws.accountSwitching`)}),!a&&i&&r.switchState===`available`&&(0,x.jsx)(`button`,{type:`button`,className:`tray-use`,disabled:G!==null,onClick:()=>void Z(n.name,i,r.id),title:e(`prov.accountSwitchTitle`),"aria-label":`${e(`prov.accountSwitchTitle`)}: ${r.label}`,children:e(`prov.accountSwitchTitle`)}),r.plan,r.active&&(0,x.jsx)(`span`,{className:`tray-active`,title:e(`prov.activeBadge`),"aria-label":e(`prov.activeBadge`),children:` ✓`})]})]}),r.email&&r.email!==r.label&&(0,x.jsx)(`div`,{className:`tray-account-email`,children:r.email}),!d(r.quota).length&&(0,x.jsx)(`div`,{className:`tray-missing`,children:e(r.unavailable?`startup.tray.unavailable`:`pws.dashboard.noQuota`)}),d(r.quota).map(n=>{let r=`key`in n?e(n.key):n.label,i=g(n.reset,t),a=_(n.percent)?Math.min(100,n.percent):null;return(0,x.jsxs)(`div`,{className:`tray-quota`,children:[(0,x.jsx)(`span`,{title:r,children:r}),(0,x.jsx)(`span`,{children:a===null?`—`:`${Math.round(a)}%`}),(0,x.jsx)(`span`,{className:`tray-bar tray-bar--${te(a??void 0)}`,role:a===null?`img`:`meter`,"aria-label":a===null?`${r}: ${e(`pws.dashboard.noQuota`)}`:r,"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,x.jsx)(`i`,{style:{width:a===null?`0%`:`${a}%`}})}),(0,x.jsx)(`time`,{title:i.exact,children:i.text})]},n.id)})]},r.id)})]},n.name))]}),(0,x.jsxs)(`div`,{className:`tray-refresh`,children:[(0,x.jsx)(`button`,{type:`button`,onClick:Y,disabled:V,children:e(`startup.refresh`)}),(0,x.jsx)(`span`,{role:`status`,children:e(`tray.updated`,{time:z===null?`—`:new Date(z).toLocaleTimeString(t,{hour:`2-digit`,minute:`2-digit`})})})]}),(0,x.jsx)(`footer`,{children:(0,x.jsxs)(`a`,{href:`/?desktop=open#/usage`,children:[e(`nav.dashboard`),` `,(0,x.jsx)(`span`,{"aria-hidden":`true`,children:`↗`})]})})]})}export{w as default};
|