agent-usage-all-in-one 0.2.1

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 (46) hide show
  1. package/BUNDLED_DEPENDENCIES.json +9 -0
  2. package/BUNDLED_LICENSES.md +76 -0
  3. package/CODE_OF_CONDUCT.md +11 -0
  4. package/CONTRIBUTING.md +41 -0
  5. package/LICENSE +21 -0
  6. package/README.md +144 -0
  7. package/README.zh-CN.md +128 -0
  8. package/SECURITY.md +26 -0
  9. package/THIRD_PARTY_LICENSES.md +271 -0
  10. package/THIRD_PARTY_NOTICES.md +28 -0
  11. package/dist/cli.js +9170 -0
  12. package/dist/cli.js.map +1 -0
  13. package/dist/web/_app/immutable/assets/2.DZPQZVH3.css +1 -0
  14. package/dist/web/_app/immutable/chunks/6sns41Ww.js +3 -0
  15. package/dist/web/_app/immutable/chunks/Bjy-W4x2.js +81 -0
  16. package/dist/web/_app/immutable/chunks/DM8a3me-.js +1 -0
  17. package/dist/web/_app/immutable/chunks/xihTtKlq.js +1 -0
  18. package/dist/web/_app/immutable/entry/app.B_JvzxA9.js +2 -0
  19. package/dist/web/_app/immutable/entry/start.R2dkufKZ.js +1 -0
  20. package/dist/web/_app/immutable/nodes/0.CXfTLDxk.js +1 -0
  21. package/dist/web/_app/immutable/nodes/1.BwsUxisa.js +1 -0
  22. package/dist/web/_app/immutable/nodes/2.BNUhkRJ5.js +31 -0
  23. package/dist/web/_app/version.json +1 -0
  24. package/dist/web/brand/agent-usage-banner.svg +27 -0
  25. package/dist/web/brand/agent-usage-logo.svg +23 -0
  26. package/dist/web/brands/README.md +32 -0
  27. package/dist/web/brands/claude.svg +4 -0
  28. package/dist/web/brands/grok-dark.svg +4 -0
  29. package/dist/web/brands/grok-light.svg +4 -0
  30. package/dist/web/brands/openai.svg +6 -0
  31. package/dist/web/brands/opencode-dark.svg +1 -0
  32. package/dist/web/brands/opencode-light.svg +1 -0
  33. package/dist/web/brands/opencode.svg +4 -0
  34. package/dist/web/index.html +34 -0
  35. package/docs/open-source.md +38 -0
  36. package/package.json +97 -0
  37. package/static/brand/agent-usage-banner.svg +27 -0
  38. package/static/brand/agent-usage-logo.svg +23 -0
  39. package/static/brands/README.md +32 -0
  40. package/static/brands/claude.svg +4 -0
  41. package/static/brands/grok-dark.svg +4 -0
  42. package/static/brands/grok-light.svg +4 -0
  43. package/static/brands/openai.svg +6 -0
  44. package/static/brands/opencode-dark.svg +1 -0
  45. package/static/brands/opencode-light.svg +1 -0
  46. package/static/brands/opencode.svg +4 -0
@@ -0,0 +1,31 @@
1
+ import{B as e,C as t,D as n,E as r,F as i,G as a,H as o,I as s,J as c,M as l,N as u,O as d,P as f,Q as p,S as m,T as h,U as g,V as _,W as v,Z as y,b,c as x,d as S,et as C,f as w,h as T,j as E,k as D,l as O,m as k,n as A,o as j,p as M,q as N,r as P,s as ee,tt as F,u as I,v as L,w as R,x as z,y as B,z as te}from"../chunks/6sns41Ww.js";import"../chunks/xihTtKlq.js";C();function V(e,t){let n=`${e} ${t}`.toLowerCase();return/missing|binary|not[ -]?installed/.test(n)?`missing-binary`:/not[ -]?configured|credential.*missing|key.*missing/.test(n)?`not-configured`:/unauthori[sz]ed|permission|forbidden|\b401\b|\b403\b/.test(n)?`unauthorized`:/unsupported|capability/.test(n)?`unsupported`:/schema|shape|parse/.test(n)?`schema-mismatch`:/rate[ -]?limit|\b429\b/.test(n)?`rate-limited`:/timeout|timed out/.test(n)?`timeout`:/stale/.test(n)?`stale`:`unavailable`}var H=new Set([`stale`,`timeout`,`unavailable`]),U=new Set([...H,`rate-limited`]);function ne(e){return e!==null&&U.has(e)}function W(e){return e?V(e,``):null}function G(e,t){return`${e}:${t}`}function re(e,t,n,r){return!r&&(t===`stale`||t===`unavailable`)?[`${e}:freshness:${t}:${n??`unknown`}`]:[]}function ie(e,t,n){let r=W(t);return r&&H.has(r)?[`${e}:health:${r}:${n??`unknown`}`]:[]}function ae(e,t){let n=new Set((t?.connectors??[]).filter(e=>e.category===`rate-limited`&&e.billingDomainId===null).map(e=>e.providerId)),r=new Set((t?.connectors??[]).filter(e=>e.category===`rate-limited`&&e.billingDomainId!==null).map(e=>G(e.providerId,e.billingDomainId??``)));for(let t of e.providers){W(t.health.errorCode)===`rate-limited`&&(t.summaryBillingDomainId?r.add(G(t.id,t.summaryBillingDomainId)):n.add(t.id));for(let e of t.billingDomains)e.health&&W(e.health.errorCode)===`rate-limited`&&r.add(G(t.id,e.id))}let i=e.providers.flatMap(e=>{let t=n.has(e.id)||(e.summaryBillingDomainId?r.has(G(e.id,e.summaryBillingDomainId)):!1),i=[...re(`provider:${e.id}`,e.freshness.status,e.freshness.lastSuccessAt,t)];t||i.push(...ie(`provider:${e.id}`,e.health.errorCode,e.freshness.lastSuccessAt));let a=e.billingDomains.flatMap(t=>{let i=t.freshness??e.freshness,a=t.health??e.health,o=n.has(e.id)||r.has(G(e.id,t.id))||W(a.errorCode)===`rate-limited`;return[...re(`domain:${e.id}:${t.id}`,i.status,i.lastSuccessAt,o),...o?[]:ie(`domain:${e.id}:${t.id}`,a.errorCode,i.lastSuccessAt)]});return[...i,...a]}),a=(t?.connectors??[]).filter(e=>e.category!==null&&H.has(e.category)&&!n.has(e.providerId)&&!(e.billingDomainId&&r.has(G(e.providerId,e.billingDomainId)))).map(e=>`diagnostic:${e.id}:${e.billingDomainId??`provider`}:${e.category}:${e.lastSuccessAt??`unknown`}`),o=[...new Set([...i,...a])].sort();return o.length>0?o.join(`|`):null}function K(e){let t=null,n=null,r=!1;return{schedule(i,a,o){if(r)return;let s=ae(i,a);if(!s){n=null,t&&clearTimeout(t),t=null;return}o||t||s===n||(n=s,t=setTimeout(()=>{t=null,!r&&e()},0))},dispose(){r=!0,t&&clearTimeout(t),t=null}}}var oe={en:{eyebrow:`LOCAL USAGE CENTER`,title:`Agent Usage`,bannerAlt:`Agent Usage — one local view for quota, tokens, and equivalent API cost`,metaDescription:`A private local dashboard for coding-agent quota, token, and cost usage.`,subtitle:`Quota, tokens, and freshness in one private local view.`,mainViews:`Main views`,agentUsageTab:`Agent usage`,tokenModelCostsTab:`Tokens & model costs`,refresh:`Refresh`,refreshing:`Refreshing…`,settings:`Settings`,closeSettings:`Close settings`,settingsSubtitle:`Connections, automation, diagnostics, and local data controls.`,reviewInSettings:`Review in settings`,connectorsUnavailable:`Connection settings are unavailable.`,monitoringUnavailable:`Monitoring settings are unavailable.`,diagnosticsUnavailable:`Diagnostics are unavailable.`,retentionUnavailable:`Retention data is unavailable.`,privacyActionUnavailable:`The local data action could not be completed.`,refreshUnavailable:`Refresh failed. Existing usage is still shown.`,loading:`Loading provider usage…`,loadingAgentUsage:`Loading cached agent usage…`,loadingModelCosts:`Loading cached token and model cost data…`,updatingAgentUsage:`Updating agent usage in the background. Cached data remains available.`,updatingModelCosts:`Updating token and model cost calculations in the background. Cached results remain available.`,error:`Usage data could not be loaded.`,updatedNow:`Updated just now`,updated:`Updated`,unavailable:`Never updated`,quota:`Quota windows`,tokens:`Tokens`,total:`Total`,input:`Input`,output:`Output`,reasoning:`Reasoning`,cacheRead:`Cache read`,cacheWrite:`Cache write`,classified:`Classified`,unclassified:`Unclassified`,semantics:`Semantics`,includedInOutput:`Included in output`,includedInInput:`Included in input`,separateCategory:`Separate`,timePrecision:`Precision`,precisionEvent:`Event`,precisionHour:`Hour`,precisionDay:`Day`,precisionBillingPeriod:`Billing period`,precisionUnknown:`Unknown`,aggregationTemporality:`Aggregation`,temporalityDelta:`Delta`,temporalityCumulative:`Cumulative`,temporalityUnknown:`Unknown`,used:`used`,resets:`Resets`,source:`Source`,scope:`Scope`,plan:`Plan`,accountWide:`Account-wide`,localOnly:`This Mac only`,limit:`Limit`,fallback:`Use balance`,unknown:`Unknown`,noProviders:`No providers have reported usage yet.`,providersLabel:`Providers`,billingDomainTabs:`billing domains`,connections:`Connections`,connectionsSubtitle:`Discover local clients, review access, and connect each provider independently.`,connect:`Connect`,skip:`Skip`,retry:`Retry`,experimental:`Experimental`,stable:`Stable`,officialClient:`Official client`,managedSecret:`Agent Usage Keychain`,noCredential:`No credential required`,installed:`Installed`,notInstalled:`Not installed`,notChecked:`Not checked`,discovered:`Ready to connect`,connected:`Connected`,manageConnection:`Manage connection`,connectionSetup:`Connection setup`,skipped:`Skipped`,connectionError:`Discovery failed`,coverageLabel:`Expected coverage`,managementKey:`Management API key`,replaceCredential:`Replace credential`,tokenBreakdown:`Token breakdown`,billing:`Billing`,actualCost:`Actual cost`,prepaid:`Prepaid balance`,spendingLimit:`Spending limit`,currentInvoice:`Current invoice`,invoices:`Invoices`,history:`History`,recordedTokens:`Recorded tokens`,apiRetailEquivalent:`API retail equivalent`,providerReportedEstimate:`Provider-reported estimate`,classificationCoverage:`Classification coverage`,pricingCoverage:`Pricing coverage`,unpricedTokens:`unpriced Tokens`,latestData:`Latest observed data`,generatedAt:`Summary generated`,noObservations:`No token observations in this window`,notAvailable:`Unavailable`,domainContributions:`Token contributions by billing domain`,separateFromHeadline:`Separate domain · not included in headline`,headlineShareNotApplicable:`Not applicable to headline`,topModels:`Top models`,topDays:`Top days`,nativeAmount:`Native`,comparison:`Comparison`,rateUnavailable:`Rate unavailable`,unknownAmount:`Unknown amount`,priceVersion:`Price version`,exchangeRate:`Exchange rate`,tokenMoneyWorkbench:`Tokens & model costs`,workbenchSubtitle:`Token consumption and API-equivalent cost by model for the selected time range.`,usage:`Usage`,cost:`Cost`,model:`Model`,day:`Day`,breakdown:`Breakdown`,apiRateEstimate:`API rate estimate`,usageTotals:`Totals`,costTrend:`Cost over time`,tokenTrend:`Tokens over time`,displayCurrency:`Display currency`,trendMetric:`Trend metric`,recordedTokenTrend:`Recorded Token trend`,retailEquivalentTrend:`API retail equivalent trend`,trendData:`Trend data`,trendSummary:`Selected window and Provider series, including gaps and time precision`,interval:`Interval`,providerEvidence:`Provider evidence`,gap:`Gap`,amountCoverage:`Amount coverage`,conversionEvidence:`Conversion evidence`,noConversionNeeded:`Native currency; no conversion required`,modelRankingSubtitle:`Known models stay separate by Provider and billing domain. Select a row to audit its evidence.`,sortByTokens:`Sort by recorded Tokens`,sortByRetailEquivalent:`Sort by API retail equivalent`,tokenShare:`Token share`,costShare:`Cost share`,retailShare:`Retail share`,unclassifiedUsage:`Unclassified usage`,modelDetail:`Model detail`,closeModelDetail:`Close model detail`,recordedTotal:`Recorded total`,sourceReportedTotal:`Source-reported total`,totalDerivation:`Total derivation`,priceLineItems:`Price line items`,priceEffective:`Price effective`,modelTrend:`Model trend`,calculatedAt:`Calculated`,noPriceEvidence:`No eligible retail price evidence`,mostConstrained:`Most constrained`,recommendation:`Recommended agent`,remaining:`remaining`,predictedExhaustion:`Predicted exhaustion`,lastsUntilReset:`Expected to last until reset`,exhaustsBeforeReset:`Expected to exhaust before reset`,readOnlyAdvice:`Advice only · never switches agents`,highestSafeCapacity:`Highest safe capacity among fresh providers`,forecastSupports:`Forecast lasts through the next reset`,samples:`samples`,monitoring:`Monitoring`,backgroundCollection:`Collect every 5 minutes`,notifications:`Local notifications`,startAtLogin:`Start at login`,monitoringSubtitle:`Opt-in local controls; provider backoff is always respected.`,diagnostics:`Diagnostics`,diagnosticsSubtitle:`Connector and billing-domain health with actionable recovery.`,healthy:`Healthy`,providerDegraded:`Provider data is degraded`,providerRecovery:`Run doctor, check this provider connection, and refresh.`,coverageComplete:`Complete`,coveragePartial:`Partial`,coverageUnavailable:`Unavailable`,authorityOfficialAccount:`Official account`,authorityOfficialClient:`Official client`,authorityLocalObservation:`Local observation`,authorityEstimate:`Estimate`,authorityUnavailable:`Unavailable`,authorityMixed:`Mixed sources`,confidenceHigh:`High confidence`,confidenceMedium:`Medium confidence`,costActual:`Actual`,costSubscription:`Subscription`,costReportedEstimate:`Reported estimate`,costRetailEquivalent:`API retail equivalent`,costLegacyUnknown:`Legacy purpose unknown`,enabled:`Enabled`,disabled:`Disabled`,onboardingEyebrow:`ONBOARDING`,automationEyebrow:`LOCAL AUTOMATION`,healthEyebrow:`LOCAL HEALTH`,privacyEyebrow:`LOCAL PRIVACY`,codexPermission:`Read quota and usage through the installed official Codex client.`,claudePermission:`Read opt-in telemetry and usage exposed by the official Claude client.`,openCodePermission:`Read account quota and local exports through official OpenCode surfaces.`,grokPermission:`Read opt-in Grok Build telemetry and official client billing capability.`,xaiPermission:`Store a dedicated management key for official xAI billing data.`,diagnosticMissingBinary:`Missing binary`,diagnosticNotConfigured:`Not configured`,diagnosticUnauthorized:`Unauthorized`,diagnosticUnsupported:`Unsupported`,diagnosticSchemaMismatch:`Schema mismatch`,diagnosticRateLimited:`Rate limited`,diagnosticTimeout:`Timeout`,diagnosticStale:`Automatic refresh pending`,diagnosticUnavailable:`Unavailable`,recoveryMissingBinary:`Install the official client, then retry discovery.`,recoveryNotConfigured:`Connect this provider in onboarding, then refresh.`,recoveryUnauthorized:`Sign in again or replace the credential, then refresh.`,recoveryUnsupported:`Upgrade the official client or disable this unsupported capability.`,recoverySchemaMismatch:`Upgrade Agent Usage or the official client, then retry.`,recoveryRateLimited:`Wait for the provider backoff, then retry.`,recoveryTimeout:`Check the client process and network, then retry.`,recoveryStale:`Agent Usage will retry this connector automatically.`,recoveryUnavailable:`Run doctor, check the connector, and retry refresh.`,privacy:`Privacy & data`,privacySubtitle:`Exports omit account identifiers and secrets. Raw data stays local.`,retentionDays:`day raw retention`,rawObservations:`raw observations`,dailyAggregates:`daily aggregates`,exportJson:`Export JSON`,exportCsv:`Export CSV`,includeAccountIdentifiers:`Include available account identifiers`,deleteProductSecrets:`Also delete product Keychain entries`,clearData:`Clear local usage`,clearing:`Clearing…`,clearConfirmation:`Clear all local usage history? Official-client credentials are preserved.`,hardRebuild:`Hard rebuild all data`,hardRebuilding:`Hard rebuild running…`,hardRebuildWarning:`High-cost operation: ignores scan and pricing caches. It can take a long time, but the dashboard remains usable.`,hardRebuildConfirmation:`Hard rebuild all local usage and cost data? This ignores caches, is resource-intensive, and may take a long time.`},"zh-CN":{eyebrow:`本地用量中心`,title:`Agent Usage`,bannerAlt:`Agent Usage——在一个本地视图中查看额度、Token 和 API 对等费用`,metaDescription:`在本地私密查看编程 Agent 的额度、Token 和费用用量。`,subtitle:`在一个私密的本地视图中查看额度、Token 与数据新鲜度。`,mainViews:`主要视图`,agentUsageTab:`Agent 用量`,tokenModelCostsTab:`Token 与模型费用`,refresh:`刷新`,refreshing:`刷新中…`,settings:`设置`,closeSettings:`关闭设置`,settingsSubtitle:`连接、自动化、诊断与本地数据控制。`,reviewInSettings:`在设置中查看`,connectorsUnavailable:`连接设置暂不可用。`,monitoringUnavailable:`监控设置暂不可用。`,diagnosticsUnavailable:`诊断信息暂不可用。`,retentionUnavailable:`保留策略数据暂不可用。`,privacyActionUnavailable:`无法完成本地数据操作。`,refreshUnavailable:`刷新失败,继续显示已有用量。`,loading:`正在加载 provider 用量…`,loadingAgentUsage:`正在加载已缓存的 Agent 用量…`,loadingModelCosts:`正在加载已缓存的 Token 与模型费用…`,updatingAgentUsage:`正在后台更新 Agent 用量,已缓存的数据仍可查看。`,updatingModelCosts:`正在后台更新 Token 与模型费用,已缓存的结果仍可查看。`,error:`无法加载用量数据。`,updatedNow:`刚刚更新`,updated:`更新于`,unavailable:`从未更新`,quota:`额度窗口`,tokens:`Token`,total:`总计`,input:`输入`,output:`输出`,reasoning:`推理`,cacheRead:`缓存读取`,cacheWrite:`缓存写入`,classified:`已分类`,unclassified:`未分类`,semantics:`Token 语义`,includedInOutput:`包含在输出中`,includedInInput:`包含在输入中`,separateCategory:`独立计算`,timePrecision:`时间精度`,precisionEvent:`事件级`,precisionHour:`小时级`,precisionDay:`日级`,precisionBillingPeriod:`账单周期级`,precisionUnknown:`未知`,aggregationTemporality:`聚合方式`,temporalityDelta:`增量`,temporalityCumulative:`累计`,temporalityUnknown:`未知`,used:`已使用`,resets:`刷新于`,source:`来源`,scope:`范围`,plan:`计划`,accountWide:`账户全局`,localOnly:`仅此 Mac`,limit:`额度`,fallback:`超额使用余额`,unknown:`未知`,noProviders:`尚无 provider 上报用量。`,providersLabel:`Provider`,billingDomainTabs:`计费域`,connections:`连接`,connectionsSubtitle:`发现本地客户端、检查访问权限,并独立连接每个 provider。`,connect:`连接`,skip:`跳过`,retry:`重试`,experimental:`实验性`,stable:`稳定`,officialClient:`官方客户端`,managedSecret:`Agent Usage 钥匙串`,noCredential:`无需凭据`,installed:`已安装`,notInstalled:`未安装`,notChecked:`尚未检查`,discovered:`可以连接`,connected:`已连接`,manageConnection:`管理连接`,connectionSetup:`连接设置`,skipped:`已跳过`,connectionError:`发现失败`,coverageLabel:`预期覆盖`,managementKey:`Management API 密钥`,replaceCredential:`替换凭据`,tokenBreakdown:`Token 分类明细`,billing:`计费`,actualCost:`实际费用`,prepaid:`预付余额`,spendingLimit:`消费上限`,currentInvoice:`当前账单`,invoices:`历史账单`,history:`历史`,recordedTokens:`已记录 Token`,apiRetailEquivalent:`API 等价零售价`,providerReportedEstimate:`客户端报告估算`,classificationCoverage:`分类覆盖率`,pricingCoverage:`定价覆盖率`,unpricedTokens:`未定价 Token`,latestData:`最新观测数据`,generatedAt:`摘要生成时间`,noObservations:`当前时间范围内没有 Token 观测`,notAvailable:`不可用`,domainContributions:`按计费域划分的 Token 贡献`,separateFromHeadline:`独立计费域 · 不计入摘要总量`,headlineShareNotApplicable:`不适用于摘要占比`,topModels:`模型排行`,topDays:`日期排行`,nativeAmount:`原币`,comparison:`对比币种`,rateUnavailable:`汇率不可用`,unknownAmount:`金额未知`,priceVersion:`价格版本`,exchangeRate:`汇率`,tokenMoneyWorkbench:`Token 与模型费用`,workbenchSubtitle:`按所选时间范围查看各模型的 Token 消耗与 API 对等费用。`,usage:`用量`,cost:`费用`,model:`模型`,day:`日期`,breakdown:`明细`,apiRateEstimate:`按 API 价格估算`,usageTotals:`汇总`,costTrend:`费用趋势`,tokenTrend:`Token 趋势`,displayCurrency:`显示币种`,trendMetric:`趋势指标`,recordedTokenTrend:`已记录 Token 趋势`,retailEquivalentTrend:`API 等价零售价趋势`,trendData:`趋势数据`,trendSummary:`选中时间范围与 Provider 序列,包含数据缺口和时间精度`,interval:`区间`,providerEvidence:`Provider 证据`,gap:`数据缺口`,amountCoverage:`金额覆盖率`,conversionEvidence:`换算证据`,noConversionNeeded:`原币显示,无需换算`,modelRankingSubtitle:`已知模型按 Provider 与计费域分开;选择一行可审计完整证据。`,sortByTokens:`按已记录 Token 排序`,sortByRetailEquivalent:`按 API 等价零售价排序`,tokenShare:`Token 占比`,costShare:`费用占比`,retailShare:`零售价占比`,unclassifiedUsage:`未分类用量`,modelDetail:`模型详情`,closeModelDetail:`关闭模型详情`,recordedTotal:`已记录总量`,sourceReportedTotal:`来源报告总量`,totalDerivation:`总量推导`,priceLineItems:`价格行项目`,priceEffective:`价格生效`,modelTrend:`模型趋势`,calculatedAt:`计算时间`,noPriceEvidence:`没有符合条件的零售价格证据`,mostConstrained:`最紧张额度`,recommendation:`推荐使用`,remaining:`剩余`,predictedExhaustion:`预计耗尽`,lastsUntilReset:`预计可坚持到刷新`,exhaustsBeforeReset:`预计会在刷新前耗尽`,readOnlyAdvice:`仅提供建议 · 永不自动切换 agent`,highestSafeCapacity:`新鲜数据中安全余量最高`,forecastSupports:`预测可坚持到下一次刷新`,samples:`个样本`,monitoring:`持续监控`,backgroundCollection:`每 5 分钟采集`,notifications:`本机通知`,startAtLogin:`登录时启动`,monitoringSubtitle:`本地显式控制;始终遵守 provider 退避。`,diagnostics:`诊断与恢复`,diagnosticsSubtitle:`连接器与计费域健康状态,以及可执行的恢复建议。`,healthy:`健康`,providerDegraded:`Provider 数据已降级`,providerRecovery:`运行 doctor、检查该 provider 连接,然后刷新。`,coverageComplete:`完整`,coveragePartial:`部分`,coverageUnavailable:`不可用`,authorityOfficialAccount:`官方账户`,authorityOfficialClient:`官方客户端`,authorityLocalObservation:`本机观测`,authorityEstimate:`估算`,authorityUnavailable:`不可用`,authorityMixed:`混合来源`,confidenceHigh:`高置信度`,confidenceMedium:`中等置信度`,costActual:`实际费用`,costSubscription:`订阅费用`,costReportedEstimate:`来源报告估算`,costRetailEquivalent:`API 等价零售价`,costLegacyUnknown:`旧数据用途未知`,enabled:`已启用`,disabled:`已停用`,onboardingEyebrow:`连接引导`,automationEyebrow:`本地自动化`,healthEyebrow:`本地健康状态`,privacyEyebrow:`本地隐私`,codexPermission:`通过已安装的官方 Codex 客户端读取额度与用量。`,claudePermission:`读取用户主动开启的 telemetry 与官方 Claude 客户端提供的用量。`,openCodePermission:`通过 OpenCode 官方入口读取账户额度与本机导出。`,grokPermission:`读取用户主动开启的 Grok Build telemetry 与官方客户端计费能力。`,xaiPermission:`保存独立 Management key,用于读取官方 xAI 计费数据。`,diagnosticMissingBinary:`缺少客户端`,diagnosticNotConfigured:`尚未配置`,diagnosticUnauthorized:`授权失效`,diagnosticUnsupported:`能力不支持`,diagnosticSchemaMismatch:`数据格式不兼容`,diagnosticRateLimited:`请求受限`,diagnosticTimeout:`请求超时`,diagnosticStale:`等待自动刷新`,diagnosticUnavailable:`不可用`,recoveryMissingBinary:`安装官方客户端,然后重新发现。`,recoveryNotConfigured:`在连接引导中连接该 provider,然后刷新。`,recoveryUnauthorized:`重新登录或替换凭据,然后刷新。`,recoveryUnsupported:`升级官方客户端,或停用当前不支持的能力。`,recoverySchemaMismatch:`升级 Agent Usage 或官方客户端,然后重试。`,recoveryRateLimited:`等待 provider 退避结束,然后重试。`,recoveryTimeout:`检查客户端进程与网络,然后重试。`,recoveryStale:`Agent Usage 将自动重试该连接。`,recoveryUnavailable:`运行 doctor、检查 connector,然后重试刷新。`,privacy:`隐私与数据`,privacySubtitle:`导出会移除账户标识与密钥;原始数据只保存在本机。`,retentionDays:`天原始数据保留期`,rawObservations:`条原始记录`,dailyAggregates:`条每日聚合`,exportJson:`导出 JSON`,exportCsv:`导出 CSV`,includeAccountIdentifiers:`导出可得的账户标识`,deleteProductSecrets:`同时删除产品 Keychain 条目`,clearData:`清除本地用量`,clearing:`清除中…`,clearConfirmation:`清除全部本地用量历史?官方客户端凭据会保留。`,hardRebuild:`硬重算全部数据`,hardRebuilding:`硬重算进行中…`,hardRebuildWarning:`高代价操作:忽略扫描与定价缓存,可能等待很久,但不会阻塞页面使用。`,hardRebuildConfirmation:`确定硬重算全部本地用量与费用数据吗?该操作会忽略缓存、消耗较多资源,并且可能需要等待很长时间。`}};function se(e){return e.toLowerCase().startsWith(`zh`)?`zh-CN`:`en`}function q(e,t){return oe[e][t]}var ce=R(`<link rel="icon" href="/brand/agent-usage-logo.svg"/> <meta name="description"/>`,1),le=R(`<div class="state section-loading svelte-1uha8ag" aria-live="polite"> </div>`),ue=R(`<div class="state error svelte-1uha8ag" role="alert"> </div>`),de=R(`<div class="inline-error svelte-1uha8ag" role="status"> </div>`),fe=R(`<div class="state compact svelte-1uha8ag"> </div>`),pe=R(`<p class="module-progress svelte-1uha8ag" role="status"> </p>`),me=R(`<picture class="provider-logo svelte-1uha8ag"><source media="(prefers-color-scheme: light)"/> <source media="(prefers-color-scheme: dark)"/> <img alt="" class="svelte-1uha8ag"/></picture>`),he=R(`<button type="button" role="tab" class="svelte-1uha8ag"> </button>`),ge=R(`<div class="domain-tabs svelte-1uha8ag" role="tablist"></div>`),_e=R(`<div class="connected-summary svelte-1uha8ag"><span class="svelte-1uha8ag"><strong> </strong> <small class="svelte-1uha8ag"> </small></span> <button class="svelte-1uha8ag"> </button></div>`),ve=R(`<small class="svelte-1uha8ag"> </small>`),ye=R(`<label class="secret-field svelte-1uha8ag"><span> </span> <input type="password" autocomplete="off" class="svelte-1uha8ag"/></label>`),be=R(`<button class="primary-action svelte-1uha8ag"> </button>`),xe=R(`<button class="svelte-1uha8ag"> </button>`),Se=R(`<details open=""><summary class="svelte-1uha8ag"><span class="svelte-1uha8ag"><strong class="svelte-1uha8ag"> </strong> <!></span> </summary> <div class="inline-connection-body svelte-1uha8ag"><p class="permission svelte-1uha8ag"> </p> <div class="connection-meta svelte-1uha8ag"><span> </span> <span> </span></div> <div class="coverage-list svelte-1uha8ag"><span> </span> <strong class="svelte-1uha8ag"> </strong></div> <!> <div class="connection-actions svelte-1uha8ag"><!> <!> <!></div></div></details>`),Ce=R(`<div class="quota-row svelte-1uha8ag"><div class="quota-copy svelte-1uha8ag"><strong class="svelte-1uha8ag"> </strong> <span class="svelte-1uha8ag"> </span></div> <div role="progressbar" aria-valuemin="0" aria-valuemax="100"><span class="svelte-1uha8ag"></span></div> <span hidden=""> </span> <div class="quota-meta svelte-1uha8ag"><span> </span></div></div>`),we=R(`<p class="svelte-1uha8ag"><strong> </strong> <span class="svelte-1uha8ag"> </span> <small class="svelte-1uha8ag"> </small></p>`),Te=R(`<div class="forecast-list svelte-1uha8ag"></div>`),Ee=R(`<!> <div class="section-label svelte-1uha8ag"> </div> <div class="quotas"></div> <!>`,1),De=R(`<article class="provider-card svelte-1uha8ag"><div class="provider-heading svelte-1uha8ag"><div class="svelte-1uha8ag"><!> <div><h2 class="svelte-1uha8ag"> </h2> <p class="freshness svelte-1uha8ag"><span class="svelte-1uha8ag"></span> </p></div></div> <div class="coverage svelte-1uha8ag"> </div></div> <!> <!></article>`),Oe=R(`<div id="agent-usage-panel" data-testid="agent-usage-panel" role="tabpanel" aria-labelledby="agent-usage-tab"><!> <section class="providers svelte-1uha8ag"></section></div>`),ke=R(`<button type="button" class="svelte-1uha8ag"> </button>`),Ae=R(`<picture class="usage-provider-logo svelte-1uha8ag"><source media="(prefers-color-scheme: light)"/> <source media="(prefers-color-scheme: dark)"/> <img alt="" class="svelte-1uha8ag"/></picture>`),je=R(`<i class="svelte-1uha8ag"></i>`),Me=R(`<li class="svelte-1uha8ag"><span class="provider-usage-identity svelte-1uha8ag"><!> <span class="svelte-1uha8ag"><strong class="svelte-1uha8ag"> </strong> <small class="svelte-1uha8ag"> </small> <small class="svelte-1uha8ag"> </small></span></span> <span class="provider-usage-value svelte-1uha8ag"><strong class="svelte-1uha8ag"> </strong> <small class="svelte-1uha8ag"> </small></span></li>`),Ne=h(`<path class="trend-area svelte-1uha8ag"></path>`),Pe=h(`<path class="trend-line svelte-1uha8ag"></path>`),Fe=h(`<circle class="trend-point svelte-1uha8ag" r="4"></circle>`),Ie=h(`<!><!>`,1),Le=R(`<span class="svelte-1uha8ag"><i class="svelte-1uha8ag"></i> <!> <!></span>`),Re=R(`<tr><td> </td><td> </td></tr>`),ze=R(`<picture class="ranking-logo svelte-1uha8ag"><source media="(prefers-color-scheme: light)"/> <source media="(prefers-color-scheme: dark)"/> <img alt="" class="svelte-1uha8ag"/></picture>`),Be=R(`<li><button type="button" data-testid="model-ranking-row" class="svelte-1uha8ag"><span class="ranking-identity svelte-1uha8ag"><!> <span class="svelte-1uha8ag"><strong class="svelte-1uha8ag"> </strong> <small class="svelte-1uha8ag"> </small> <!> <small class="svelte-1uha8ag"> </small> <small class="svelte-1uha8ag"> </small></span></span> <span class="ranking-value svelte-1uha8ag"><strong class="svelte-1uha8ag"> </strong></span> <span class="ranking-value svelte-1uha8ag"><strong class="svelte-1uha8ag"> </strong></span> <span class="ranking-value svelte-1uha8ag"><strong class="svelte-1uha8ag"> </strong></span></button></li>`),Ve=R(`<span class="svelte-1uha8ag"> <!> <b class="svelte-1uha8ag"> </b> <small class="svelte-1uha8ag"> </small> <small class="svelte-1uha8ag"> </small></span>`),He=R(`<div class="unclassified-usage svelte-1uha8ag"><strong class="svelte-1uha8ag"> </strong> <!></div>`),Ue=R(`<ol class="ranking-list svelte-1uha8ag"></ol> <!>`,1),We=R(`<li data-testid="day-breakdown-row" class="svelte-1uha8ag"><span class="day-identity svelte-1uha8ag"><strong> </strong> <small class="svelte-1uha8ag"> </small> <small class="svelte-1uha8ag"> </small></span> <span class="svelte-1uha8ag"> </span> <span class="svelte-1uha8ag"> </span> <span class="svelte-1uha8ag"> </span></li>`),Ge=R(`<ol class="day-breakdown-list svelte-1uha8ag"></ol>`),Ke=R(`<section class="token-money-workbench svelte-1uha8ag" data-testid="token-money-workbench" aria-labelledby="token-money-workbench-heading"><div class="usage-toolbar svelte-1uha8ag"><div><h2 id="token-money-workbench-heading" class="svelte-1uha8ag"> </h2> <p class="svelte-1uha8ag"><strong class="svelte-1uha8ag"> </strong><span class="svelte-1uha8ag">/</span> </p></div> <div class="workbench-controls svelte-1uha8ag"><div class="segmented-control svelte-1uha8ag" role="group"><button type="button" class="svelte-1uha8ag"> </button> <button type="button" class="svelte-1uha8ag"> </button></div> <div class="history-toolbar svelte-1uha8ag"></div> <div class="segmented-control svelte-1uha8ag" role="group"></div></div></div> <div class="usage-overview-grid svelte-1uha8ag"><section class="usage-summary svelte-1uha8ag"><div class="usage-headline svelte-1uha8ag" data-testid="usage-headline"><strong class="svelte-1uha8ag"> </strong> <span data-testid="trend-mode" class="svelte-1uha8ag"> </span> <!></div> <ol class="provider-usage-list svelte-1uha8ag" data-testid="usage-provider-summary"></ol></section> <article class="workbench-trend svelte-1uha8ag"><div class="trend-heading svelte-1uha8ag"><div class="svelte-1uha8ag"><span class="svelte-1uha8ag"> </span> <strong class="svelte-1uha8ag"> </strong></div></div> <div class="trend-chart svelte-1uha8ag" data-testid="usage-trend-chart" aria-hidden="true"><div class="trend-y-axis svelte-1uha8ag"><span class="svelte-1uha8ag"> </span> <span class="svelte-1uha8ag"> </span> <span class="svelte-1uha8ag"> </span></div> <svg viewBox="0 0 1000 250" preserveAspectRatio="none" class="svelte-1uha8ag"><line x1="0" y1="30" x2="1000" y2="30" class="svelte-1uha8ag"></line><line x1="0" y1="128" x2="1000" y2="128" class="svelte-1uha8ag"></line><line x1="0" y1="226" x2="1000" y2="226" class="svelte-1uha8ag"></line><!></svg> <div class="trend-x-axis svelte-1uha8ag"><span class="svelte-1uha8ag"> </span> <span class="svelte-1uha8ag"> </span> <span class="svelte-1uha8ag"> </span></div></div> <div class="trend-legend svelte-1uha8ag" aria-hidden="true"></div> <div class="trend-data svelte-1uha8ag"><table><thead><tr><th> </th><th> </th></tr></thead><tbody></tbody></table></div></article></div> <section class="usage-totals svelte-1uha8ag" data-testid="usage-totals" aria-labelledby="usage-totals-heading"><h3 id="usage-totals-heading" class="svelte-1uha8ag"> </h3> <dl class="svelte-1uha8ag"><div class="svelte-1uha8ag"><dt class="svelte-1uha8ag"> </dt> <dd class="svelte-1uha8ag"> </dd></div> <div class="svelte-1uha8ag"><dt class="svelte-1uha8ag"> </dt> <dd class="svelte-1uha8ag"> </dd></div> <div class="svelte-1uha8ag"><dt class="svelte-1uha8ag"> </dt> <dd class="svelte-1uha8ag"> </dd></div> <div class="svelte-1uha8ag"><dt class="svelte-1uha8ag"> </dt> <dd class="svelte-1uha8ag"> </dd></div> <div class="svelte-1uha8ag"><dt class="svelte-1uha8ag"> </dt> <dd class="svelte-1uha8ag"> </dd></div> <div class="svelte-1uha8ag"><dt class="svelte-1uha8ag"> </dt> <dd class="svelte-1uha8ag"> </dd></div></dl> <small class="usage-totals-evidence svelte-1uha8ag"> </small></section> <section class="model-ranking svelte-1uha8ag" data-testid="usage-breakdown" aria-labelledby="model-ranking-heading"><div class="ranking-heading svelte-1uha8ag"><div><h3 id="model-ranking-heading" class="svelte-1uha8ag"> </h3></div> <div class="segmented-control svelte-1uha8ag" role="group"><button type="button" class="svelte-1uha8ag"> </button> <button type="button" class="svelte-1uha8ag"> </button></div></div> <div class="breakdown-header svelte-1uha8ag" aria-hidden="true"><span class="svelte-1uha8ag"> </span> <span class="svelte-1uha8ag"> </span> <span class="svelte-1uha8ag"> </span> <span class="svelte-1uha8ag"> </span></div> <!></section></section>`),qe=R(`<div id="token-model-costs-panel" data-testid="token-model-costs-panel" role="tabpanel" aria-labelledby="token-model-costs-tab"><!> <!></div>`),Je=R(`<!> <!> <!>`,1),Ye=R(`<p class="settings-error svelte-1uha8ag" role="status"> </p>`),Xe=R(`<article tabindex="-1"><div class="settings-connector-title svelte-1uha8ag"><strong> </strong> <span class="svelte-1uha8ag"> </span></div> <p class="svelte-1uha8ag"> </p> <small class="svelte-1uha8ag"> </small> <!> <div class="connection-actions svelte-1uha8ag"><!> <!> <!> <!></div></article>`),Ze=R(`<div class="monitoring-controls svelte-1uha8ag"><label class="svelte-1uha8ag"><input type="checkbox"/> </label> <label class="svelte-1uha8ag"><input type="checkbox"/> </label> <label class="svelte-1uha8ag"><input type="checkbox"/> </label></div>`),Qe=R(`<p class="svelte-1uha8ag"> </p>`),$e=R(`<code class="svelte-1uha8ag"> </code>`),et=R(`<article tabindex="-1"><div class="svelte-1uha8ag"><strong> </strong> <span class="svelte-1uha8ag"> </span></div> <small class="svelte-1uha8ag"> </small> <!> <!></article>`),tt=R(`<div class="diagnostics-grid svelte-1uha8ag"></div>`),nt=R(`<div class="settings-backdrop svelte-1uha8ag" role="presentation"><div class="settings-drawer svelte-1uha8ag" role="dialog" aria-modal="true" aria-labelledby="settings-heading" tabindex="-1"><div class="settings-header svelte-1uha8ag"><div class="svelte-1uha8ag"><p class="eyebrow svelte-1uha8ag"> </p> <h2 id="settings-heading" class="svelte-1uha8ag"> </h2> <p class="svelte-1uha8ag"> </p></div> <button class="settings-close svelte-1uha8ag">×</button></div> <div class="settings-content svelte-1uha8ag"><section aria-labelledby="settings-connections-heading" class="svelte-1uha8ag"><div class="settings-section-heading svelte-1uha8ag"><h2 id="settings-connections-heading" class="svelte-1uha8ag"> </h2> <p class="svelte-1uha8ag"> </p></div> <!> <div class="settings-connections svelte-1uha8ag"></div></section> <section class="monitoring-section svelte-1uha8ag" aria-labelledby="monitoring-heading"><div class="settings-section-heading svelte-1uha8ag"><h2 id="monitoring-heading" class="svelte-1uha8ag"> </h2> <p class="svelte-1uha8ag"> </p></div> <!> <!></section> <section class="diagnostics-section svelte-1uha8ag" aria-labelledby="diagnostics-heading"><div class="settings-section-heading svelte-1uha8ag"><h2 id="diagnostics-heading" class="svelte-1uha8ag"> </h2> <p class="svelte-1uha8ag"> </p></div> <!> <!></section> <section class="privacy-section svelte-1uha8ag" aria-labelledby="privacy-heading"><div class="settings-section-heading svelte-1uha8ag"><h2 id="privacy-heading" class="svelte-1uha8ag"> </h2> <p class="svelte-1uha8ag"> </p></div> <!> <!> <div class="privacy-actions svelte-1uha8ag"><button class="svelte-1uha8ag"> </button> <button class="svelte-1uha8ag"> </button> <label class="svelte-1uha8ag"><input type="checkbox"/> </label> <label class="svelte-1uha8ag"><input type="checkbox"/> </label> <button class="danger-action svelte-1uha8ag"> </button> <small class="svelte-1uha8ag"> </small> <button class="danger-action svelte-1uha8ag"> </button></div></section></div></div></div>`),rt=R(`<article class="svelte-1uha8ag"><strong> </strong> <span class="svelte-1uha8ag"> </span> <small class="svelte-1uha8ag"> </small> <small class="svelte-1uha8ag"> </small> <small class="svelte-1uha8ag"> </small> <small class="svelte-1uha8ag"> </small> <small class="svelte-1uha8ag"> </small> <small class="svelte-1uha8ag"> </small> <small class="svelte-1uha8ag"> </small></article>`),it=R(`<p class="model-evidence-empty svelte-1uha8ag"> </p>`),at=R(`<p class="svelte-1uha8ag"> <small class="svelte-1uha8ag"> </small></p>`),ot=R(`<article class="model-price-evidence svelte-1uha8ag"><div class="svelte-1uha8ag"><strong> </strong> <span class="svelte-1uha8ag"> </span></div> <!> <!> <!></article>`),st=R(`<td colspan="3" class="svelte-1uha8ag"> </td>`),ct=R(`<br/> `,1),lt=R(`<td class="svelte-1uha8ag"> </td> <td class="svelte-1uha8ag"> </td> <td class="svelte-1uha8ag"> <!></td>`,1),ut=R(`<tr><td class="svelte-1uha8ag"> </td><!></tr>`),dt=R(`<div class="model-detail-backdrop svelte-1uha8ag" role="presentation"><div class="model-detail-drawer svelte-1uha8ag" role="dialog" aria-modal="true" tabindex="-1"><div class="model-detail-header svelte-1uha8ag"><div><p class="eyebrow svelte-1uha8ag"> </p> <!> <h2 class="svelte-1uha8ag"> </h2></div> <button class="svelte-1uha8ag">×</button></div> <div class="model-detail-content svelte-1uha8ag"><div class="model-detail-summary svelte-1uha8ag"><span class="svelte-1uha8ag"> <b class="svelte-1uha8ag"> </b></span> <span class="svelte-1uha8ag"> <b class="svelte-1uha8ag"> <!></b></span> <span class="svelte-1uha8ag"> <b class="svelte-1uha8ag"> </b></span> <span class="svelte-1uha8ag"> <b class="svelte-1uha8ag"> </b></span></div> <p class="model-detail-evidence svelte-1uha8ag"> </p> <dl class="model-token-breakdown svelte-1uha8ag"><div class="svelte-1uha8ag"><dt class="svelte-1uha8ag"> </dt> <dd class="svelte-1uha8ag"> </dd></div> <div class="svelte-1uha8ag"><dt class="svelte-1uha8ag"> </dt> <dd class="svelte-1uha8ag"> </dd></div> <div class="svelte-1uha8ag"><dt class="svelte-1uha8ag"> </dt> <dd class="svelte-1uha8ag"> </dd></div> <div class="svelte-1uha8ag"><dt class="svelte-1uha8ag"> </dt> <dd class="svelte-1uha8ag"> </dd></div> <div class="svelte-1uha8ag"><dt class="svelte-1uha8ag"> </dt> <dd class="svelte-1uha8ag"> </dd></div></dl> <section aria-labelledby="model-observations-heading" class="svelte-1uha8ag"><h3 id="model-observations-heading" class="svelte-1uha8ag"> </h3> <div class="model-observations svelte-1uha8ag"></div></section> <section aria-labelledby="model-pricing-heading" class="svelte-1uha8ag"><h3 id="model-pricing-heading" class="svelte-1uha8ag"> </h3> <!></section> <section aria-labelledby="model-trend-heading" class="svelte-1uha8ag"><h3 id="model-trend-heading" class="svelte-1uha8ag"> </h3> <table class="model-trend-table svelte-1uha8ag"><thead><tr><th class="svelte-1uha8ag"> </th><th class="svelte-1uha8ag"> </th><th class="svelte-1uha8ag"> </th><th class="svelte-1uha8ag"> </th></tr></thead><tbody></tbody></table></section></div></div></div>`),ft=R(`<main class="shell svelte-1uha8ag"><header class="product-header svelte-1uha8ag"><img class="product-logo svelte-1uha8ag" src="/brand/agent-usage-logo.svg"/> <h1 class="visually-hidden svelte-1uha8ag"> </h1> <div class="header-actions svelte-1uha8ag"><button class="settings-toggle svelte-1uha8ag"> </button> <button class="locale-toggle svelte-1uha8ag"> </button> <button class="refresh svelte-1uha8ag"><span aria-hidden="true">↻</span> </button></div></header> <div class="dashboard-tabs svelte-1uha8ag" role="tablist"><button id="agent-usage-tab" type="button" role="tab" aria-controls="agent-usage-panel" class="svelte-1uha8ag"> </button> <button id="token-model-costs-tab" type="button" role="tab" aria-controls="token-model-costs-panel" class="svelte-1uha8ag"> </button></div> <!></main> <!> <!>`,1);function pt(h,C){p(C,!1);let R=v(`en`),V=v(),H=v(null),U=v(!0),W=v(!1),G=v(!1),re=v(!1),ie=v(!1),ae=v(!1),oe=v(!1),pt=v(!1),mt=v(!1),ht=v([]),J=v(null),Y=v({}),gt=v({}),_t=v(`agents`),vt=v(`7d`),yt=v(`CNY`),X=v(`retail-equivalent`),bt=v(`model`),xt=v(null),St=null,Ct=v(null),wt=`UTC`,Tt=v(null),Et=v(null),Dt=v(null),Ot=v(!1),kt=v(!1),At=v(!1),jt=v(!1),Mt=v(!1),Nt=v(null),Pt=null,Ft=v(!1),It=v(null),Lt=v(null),Rt=null,zt=v(null),Bt=v(),Vt=!1,Ht=K(()=>Kt());P(async()=>{a(R,se(navigator.language)),document.documentElement.lang=D(R),wt=Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`,a(vt,Pn()),a(yt,Fn()),await Promise.all([Wt(),Yt(),Xt(),Qt(),$t()]),D(Et)||await Zt(),en();let e=new URL(window.location.href).searchParams.get(`settings`);e&&await cn(e,!1)}),A(()=>{Vt=!0,Pt&&clearInterval(Pt),Ht.dispose()});function Z(e){return q(D(R),e)}function Ut(){a(R,D(R)===`en`?`zh-CN`:`en`),document.documentElement.lang=D(R)}async function Wt(){try{let e=new URLSearchParams({window:D(vt),timeZone:wt,currency:D(yt)}),t=await fetch(`/api/overview?${e}`);if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();if(Vt)return;a(H,n),a(G,!1),Jt()}catch{a(G,!0)}finally{Vt||a(U,!1)}}async function Gt(){await qt(`manual`)}async function Kt(){await qt(`automatic`)}async function qt(e){a(W,!0);try{let t=await fetch(e===`automatic`?`/api/refresh?mode=automatic`:`/api/refresh`,{method:`POST`});if(!t.ok)throw Error(`HTTP ${t.status}`);await Promise.all([Wt(),Zt()]),a(re,!1)}catch{a(re,!0)}finally{Vt||(a(W,!1),Jt())}}function Jt(){Vt||!D(H)||Ht.schedule(D(H),D(Et),D(W))}async function Yt(){try{let e=await fetch(`/api/connectors`);if(!e.ok)throw Error(`HTTP ${e.status}`);a(ht,await e.json()),a(ie,!1)}catch{a(ie,!0)}}async function Xt(){try{let e=await fetch(`/api/monitoring`);if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.json();a(Tt,t.settings),a(ae,!1)}catch{a(ae,!0)}}async function Zt(){try{let e=await fetch(`/api/doctor`);if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.json();if(Vt)return;a(Et,t),a(oe,!1),Jt()}catch{a(oe,!0)}}async function Qt(){try{let e=await fetch(`/api/retention`);if(!e.ok)throw Error(`HTTP ${e.status}`);a(Dt,await e.json()),a(pt,!1)}catch{a(pt,!0)}}async function $t(){try{let e=await fetch(`/api/processing`);if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.json(),n=D(Nt);a(Nt,t),t.modules.discovery.state===`running`&&Yt(),t.modules.usage.state===`running`&&Wt(),n?.modules.discovery.state!==`ready`&&t.modules.discovery.state===`ready`&&Yt(),(n?.modules.usage.state!==`ready`&&t.modules.usage.state===`ready`||n?.modules.pricing.state!==`ready`&&t.modules.pricing.state===`ready`)&&Wt(),n?.modules.retention.state!==`ready`&&t.modules.retention.state===`ready`&&Qt(),a(jt,t.hardRebuild&&Object.values(t.modules).some(e=>e.state===`pending`||e.state===`running`)),Pt&&Object.values(t.modules).every(e=>e.state===`ready`||e.state===`failed`)&&(clearInterval(Pt),Pt=null)}catch{}}function en(){Pt||D(Nt)&&Object.values(D(Nt).modules).every(e=>e.state===`ready`||e.state===`failed`)||(Pt=setInterval(()=>void $t(),1e3))}async function tn(){if(window.confirm(Z(`hardRebuildConfirmation`))){a(jt,!0);try{let e=await fetch(`/api/rebuild`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({confirmExpensiveOperation:!0})});if(e.status!==202)throw Error(`HTTP ${e.status}`);await $t(),en(),a(mt,!1)}catch{a(jt,!1),a(mt,!0)}}}function nn(e){return`/api/export?${new URLSearchParams({format:e,window:D(vt),timeZone:wt,currency:D(yt),includeAccountIdentifiers:String(D(kt))})}`}async function rn(e){try{let t=await fetch(nn(e));if(!t.ok)throw Error(`HTTP ${t.status}`);let n=URL.createObjectURL(await t.blob()),r=document.createElement(`a`);r.href=n,r.download=`agent-usage-${D(vt)}.${e}`,r.click(),URL.revokeObjectURL(n),a(mt,!1)}catch{a(mt,!0)}}async function an(){if(window.confirm(Z(`clearConfirmation`))){a(At,!0);try{let e=await fetch(`/api/data`,{method:`DELETE`,headers:{"content-type":`application/json`},body:JSON.stringify({deleteProductSecrets:D(Ot)})});if(!e.ok)throw Error(`HTTP ${e.status}`);a(Ot,!1),await Promise.all([Wt(),Yt(),Zt(),Qt()]),a(mt,!1)}catch{a(mt,!0)}finally{a(At,!1)}}}async function on(e){try{let t=await fetch(`/api/monitoring/settings`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify(e)});if(!t.ok)throw Error(`HTTP ${t.status}`);a(Tt,await t.json()),a(ae,!1)}catch{a(ae,!0)}}async function sn(e,t){a(J,e);try{let n=await fetch(`/api/connectors/${encodeURIComponent(e)}/action`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({action:t,...t===`connect`&&D(Y)[e]?{secret:D(Y)[e]}:{}})});if(!n.ok)throw Error(`HTTP ${n.status}`);await n.json(),a(Y,{...D(Y),[e]:``}),await Promise.all([Yt(),Wt(),Zt()])}catch{a(ie,!0)}finally{a(J,null)}}async function cn(e=null,t=!0){if(!D(Ft)){let e=document.activeElement;Rt=e instanceof HTMLElement&&e!==document.body?e:null}if(a(Ft,!0),a(It,e),t){let t=new URL(window.location.href);e?t.searchParams.set(`settings`,e):t.searchParams.set(`settings`,`root`),window.history.replaceState(null,``,t)}await E(),((e?[...document.querySelectorAll(`[data-settings-target]`)].find(t=>t.dataset.settingsTarget===e):null)??D(zt))?.focus()}async function ln(){let e=Rt;a(Ft,!1),a(It,null),Rt=null;let t=new URL(window.location.href);t.searchParams.delete(`settings`),window.history.replaceState(null,``,t),await E(),(e?.isConnected?e:D(Lt))?.focus()}function un(e){let t=D(xt)?D(Ct):D(Ft)?D(zt):null;e.key===`Tab`&&t?dn(e,t):D(xt)&&e.key===`Escape`?ar():D(Ft)&&e.key===`Escape`&&ln()}function dn(e,t){let n=[...t.querySelectorAll(`a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), summary, [tabindex]:not([tabindex="-1"])`)].filter(e=>!e.hidden&&e.getAttribute(`aria-hidden`)!==`true`);if(n.length===0){e.preventDefault(),t.focus();return}let r=n[0],i=n.at(-1),a=document.activeElement;e.shiftKey&&(a===t||a===r||!t.contains(a))?(e.preventDefault(),i.focus()):!e.shiftKey&&a===i&&(e.preventDefault(),r.focus())}function fn(e){if(![`ArrowLeft`,`ArrowRight`,`Home`,`End`].includes(e.key))return;let t=[...e.currentTarget.parentElement.querySelectorAll(`[role="tab"]`)],n=t.indexOf(e.currentTarget),r=e.key===`Home`?0:e.key===`End`?t.length-1:(n+(e.key===`ArrowRight`?1:-1)+t.length)%t.length;e.preventDefault(),t[r]?.focus(),t[r]?.click()}function pn(e){return Z({"not-checked":`notChecked`,"not-installed":`notInstalled`,discovered:`discovered`,connected:`connected`,skipped:`skipped`,error:`connectionError`}[e])}function mn(e){return Z(e===`official-client`?`officialClient`:e===`agent-usage`?`managedSecret`:`noCredential`)}function hn(e){let t={codex:`codexPermission`,"claude-code":`claudePermission`,"opencode-go":`openCodePermission`,grok:`grokPermission`,"xai-api":`xaiPermission`}[e.id];return t?Z(t):e.permissionDescription}function gn(e){return e.status===`healthy`?Z(`healthy`):e.category?Z({"missing-binary":`diagnosticMissingBinary`,"not-configured":`diagnosticNotConfigured`,unauthorized:`diagnosticUnauthorized`,unsupported:`diagnosticUnsupported`,"schema-mismatch":`diagnosticSchemaMismatch`,"rate-limited":`diagnosticRateLimited`,timeout:`diagnosticTimeout`,stale:`diagnosticStale`,unavailable:`diagnosticUnavailable`}[e.category]):Z(`diagnosticUnavailable`)}function _n(e){return!e.recovery||D(R)===`en`?e.recovery:e.category?Z({"missing-binary":`recoveryMissingBinary`,"not-configured":`recoveryNotConfigured`,unauthorized:`recoveryUnauthorized`,unsupported:`recoveryUnsupported`,"schema-mismatch":`recoverySchemaMismatch`,"rate-limited":`recoveryRateLimited`,timeout:`recoveryTimeout`,stale:`recoveryStale`,unavailable:`recoveryUnavailable`}[e.category]):Z(`recoveryUnavailable`)}function Q(e){return new Intl.NumberFormat(D(R)).format(e)}function vn(e){return Math.abs(e)<1e4?Q(e):new Intl.NumberFormat(D(R),{compactDisplay:`short`,maximumFractionDigits:1,notation:`compact`}).format(e)}function yn(e){return`${Q(e)} ${Z(`tokens`)}`}function bn(e){return e===null?Z(`notAvailable`):new Intl.NumberFormat(D(R),{style:`percent`,maximumFractionDigits:1}).format(e)}function $(e){return e?new Intl.DateTimeFormat(D(R),{hour:`2-digit`,minute:`2-digit`,month:`short`,day:`numeric`}).format(new Date(e)):`—`}function xn(e){if(!e)return`—`;let t=new Date(e).getTime()-Date.now(),n=Math.abs(t),[r,i]=n>=864e5?[864e5,`day`]:n>=36e5?[36e5,`hour`]:n>=6e4?[6e4,`minute`]:[1e3,`second`];return new Intl.RelativeTimeFormat(D(R),{numeric:`auto`}).format(Math.round(t/r),i)}function Sn(e){return Z({"official-account":`authorityOfficialAccount`,"official-client":`authorityOfficialClient`,"local-observation":`authorityLocalObservation`,estimate:`authorityEstimate`,unavailable:`authorityUnavailable`,mixed:`authorityMixed`}[e])}function Cn(e){return Z({complete:`coverageComplete`,partial:`coveragePartial`,unavailable:`coverageUnavailable`}[e])}function wn(e){return Z({event:`precisionEvent`,hour:`precisionHour`,day:`precisionDay`,"billing-period":`precisionBillingPeriod`,unknown:`precisionUnknown`}[e])}function Tn(e){return Z(e===`account-wide`?`accountWide`:e===`this-mac`?`localOnly`:`unknown`)}function En(e){return Z(e===`delta`?`temporalityDelta`:e===`cumulative`?`temporalityCumulative`:`temporalityUnknown`)}function Dn(e){let t=e.reasoning===`included-in-output`?Z(`includedInOutput`):Z(`separateCategory`),n=e.cacheRead===`included-in-input`?Z(`includedInInput`):Z(`separateCategory`),r=e.cacheWrite===`included-in-input`?Z(`includedInInput`):Z(`separateCategory`);return`${Z(`reasoning`)}: ${t} · ${Z(`cacheRead`)}: ${n} · ${Z(`cacheWrite`)}: ${r}`}function On(e){return Z({quota:`quota`,tokens:`tokens`,"actual-cost":`actualCost`,history:`history`}[e])}function kn(e){return Z(e===`high`?`confidenceHigh`:`confidenceMedium`)}function An(e,t){let n=e.billingDomains??[];return n.find(e=>e.id===t)??n[0]??{id:`combined`,displayName:e.displayName,freshness:e.freshness,health:e.health,coverage:e.coverage,quotaBuckets:e.quotaBuckets,tokenTotals:e.tokenTotals,tokenEvidence:e.tokenEvidence,tokenAuthority:e.tokenAuthority,costs:[],balances:[],invoices:[],history:jn(e.tokenTotals,[],e.tokenAuthority,e.tokenEvidence),forecasts:[],forecastCoverage:e.forecastCoverage}}function jn(e,t,n,r=Un()){return{window:D(vt),start:``,end:``,timeZone:wt,tokenTotals:e,tokenEvidence:r,models:[],unclassified:{tokenTotals:Hn(),tokenEvidence:Un(),authorities:[],lastObservedAt:null},days:[],intervals:[],costs:t.map(e=>({kind:e.kind,currency:e.currency,amount:e.amount,convertedAmount:null,comparisonCurrency:`CNY`,conversionUnavailableReason:e.amount===null?`unknown-native-amount`:`missing-rate`,priceSnapshots:e.priceSnapshot?[e.priceSnapshot]:[],authorities:[e.authority],observedAt:e.observedAt})),exchangeRates:[],authorities:n===`mixed`?void 0:n?[n]:[],lastObservedAt:null}}async function Mn(e){a(vt,e);try{localStorage.setItem(`agent-usage:history-window`,e)}catch{}a(Mt,!0),await Wt(),a(Mt,!1)}async function Nn(e){if(D(yt)!==e){a(yt,e);try{localStorage.setItem(`agent-usage:comparison-currency`,e)}catch{}a(Mt,!0),await Wt(),a(Mt,!1)}}function Pn(){try{let e=localStorage.getItem(`agent-usage:history-window`);return e===`24h`||e===`7d`||e===`30d`?e:`7d`}catch{return`7d`}}function Fn(){try{let e=localStorage.getItem(`agent-usage:comparison-currency`);return e===`USD`||e===`CNY`?e:`CNY`}catch{return`CNY`}}function In(e,t){a(gt,{...D(gt),[e]:t})}function Ln(e,t,n){return e.find(e=>e.target.provider.id===t&&e.target.billingDomain.id===n)}function Rn(e){return{codex:{dark:`/brands/openai.svg`,light:`/brands/openai.svg`},"claude-code":{dark:`/brands/claude.svg`,light:`/brands/claude.svg`},"opencode-go":{dark:`/brands/opencode-dark.svg`,light:`/brands/opencode-light.svg`},grok:{dark:`/brands/grok-light.svg`,light:`/brands/grok-dark.svg`}}[e]??null}function zn(e,t){let n=e.providers.map(e=>({...e,billingDomains:[...e.billingDomains]}));for(let e of t){let{provider:t,billingDomain:r}=e.target,i=n.find(e=>e.id===t.id);i||(i=Bn(t.id,t.displayName),n.push(i)),i.billingDomains.some(e=>e.id===r.id)||i.billingDomains.push(Vn(r.id,r.displayName))}let r={codex:0,"claude-code":1,"opencode-go":2,grok:3};return n.sort((e,t)=>(r[e.id]??100)-(r[t.id]??100)||e.displayName.localeCompare(t.displayName))}function Bn(e,t){return{id:e,displayName:t,summaryBillingDomainId:null,freshness:{status:`unavailable`,lastSuccessAt:null},health:{status:`healthy`,errorCode:null,message:null,recovery:null},coverage:{quota:`unavailable`,tokens:`unavailable`,actualCost:`unavailable`,history:`unavailable`},quotaBuckets:[],tokenTotals:Hn(),tokenEvidence:Un(),tokenAuthority:null,billingDomains:[],forecasts:[],forecastCoverage:`insufficient`}}function Vn(e,t){let n=Hn();return{id:e,displayName:t,freshness:{status:`unavailable`,lastSuccessAt:null},health:{status:`healthy`,errorCode:null,message:null,recovery:null},coverage:{quota:`unavailable`,tokens:`unavailable`,actualCost:`unavailable`,history:`unavailable`},quotaBuckets:[],tokenTotals:n,tokenEvidence:Un(),tokenAuthority:null,costs:[],balances:[],invoices:[],history:jn(n,[],null),forecasts:[],forecastCoverage:`insufficient`}}function Hn(){return{total:0,input:0,output:0,reasoning:0,cacheRead:0,cacheWrite:0}}function Un(){return{recordedTokens:0,sourceReportedTokens:0,sourceReportedObservationCount:0,observationCount:0,unclassifiedTokens:0,classifiedTokens:0,classificationCoverage:null,totalDerivations:[],timePrecisions:[],usageScopes:[],aggregationTemporalities:[]}}function Wn(e,t){return e===null?`—`:new Intl.NumberFormat(D(R),{style:`currency`,currency:t,minimumFractionDigits:2,maximumFractionDigits:Math.abs(e)>0&&Math.abs(e)<.01?8:2}).format(e)}function Gn(e){a(X,e)}function Kn(e){let t=new Intl.DateTimeFormat(D(R),{month:`short`,day:`numeric`,timeZone:e.timeZone});return`${t.format(new Date(e.start))} – ${t.format(new Date(e.end))}`}function qn(e,t){let n=e.trend.buckets.flatMap(e=>e.segments.flatMap(e=>t===`tokens`?[e.recordedTokens]:[e.retailEquivalent.amount,e.reportedEstimate?.amount??null].filter(e=>e!==null)));return n.length>0?Math.max(...n):null}function Jn(e,t){let n=e.trend.buckets,r=Math.max(1,qn(e,t)??0);return Qn(e,t).map(e=>{let i=`${e.providerId}:${e.billingDomainId}:${e.costPurpose??`tokens`}`,a=[],o=[];for(let[i,s]of n.entries()){let c=s.segments.find(t=>t.providerId===e.providerId&&t.billingDomainId===e.billingDomainId),l=c?t===`tokens`?c.recordedTokens:e.costPurpose===`reported-estimate`?c.reportedEstimate?.amount??null:c.retailEquivalent.amount:null;if(s.gap||l===null){o.length>0&&a.push(o),o=[];continue}o.push({x:n.length<=1?500:i/(n.length-1)*1e3,y:226-l/r*196,value:l,label:s.label})}return o.length>0&&a.push(o),{...e,key:i,runs:a}})}function Yn(e){return e.map((e,t)=>`${t===0?`M`:`L`} ${e.x} ${e.y}`).join(` `)}function Xn(e){return e.length<2?``:`M ${e[0].x} 226 ${e.map(e=>`L ${e.x} ${e.y}`).join(` `)} L ${e.at(-1)?.x??0} 226 Z`}function Zn(e,t,n){return e===null?Z(`notAvailable`):n===`tokens`?`${vn(e)} ${Z(`tokens`)}`:Wn(e,t)}function Qn(e,t){let n=e.trend.buckets.flatMap(e=>e.segments),r=t===`tokens`?n.map(e=>({...e,costPurpose:null})):n.flatMap(e=>[...e.retailEquivalent.amount===null?[]:[{...e,costPurpose:`retail-equivalent`}],...e.reportedEstimate?.amount==null?[]:[{...e,costPurpose:`reported-estimate`}]]);return[...new Map(r.map(e=>[`${e.providerId}:${e.billingDomainId}:${e.costPurpose??`tokens`}`,e])).values()]}function $n(e,t){let n={codex:`#78a7ff`,"claude-code":`#d69b73`,"opencode-go":`#73d4b2`,"grok:grok-build-subscription":`#b28cff`,"grok:xai-api":`#f07f9a`};return n[`${e}:${t}`]??n[e]??`#9aa5b8`}function er(e,t){let n=t===`tokens`?`${Q(e.recordedTokens)} ${Z(`tokens`)}`:[...e.retailEquivalent.amount===null?[]:[`${Z(`apiRetailEquivalent`)}: ${Wn(e.retailEquivalent.amount,e.retailEquivalent.currency)}`],...e.reportedEstimate?.amount==null?[]:[`${Z(`providerReportedEstimate`)}: ${Wn(e.reportedEstimate.amount,e.reportedEstimate.currency)}`]].join(`; `)||Z(`notAvailable`),r=e.timePrecisions.map(wn).join(` + `)||Z(`unknown`),i=e.authorities&&e.authorities.length>0?e.authorities.map(Sn).join(` + `):Sn(`unavailable`),a=e.includedInHeadline===!1?` · ${Z(`separateFromHeadline`)}`:``;return`${e.providerDisplayName} · ${e.billingDomainDisplayName}${a}: ${n} · ${Z(`timePrecision`)}: ${r} · ${Z(`source`)}: ${i} · ${$(e.lastObservedAt??null)}`}function tr(e){let t=e.providers.flatMap(e=>e.billingDomains.filter(t=>t.id===e.summaryBillingDomainId).map(e=>e.history));return{authorities:[...new Set(t.flatMap(e=>e.authorities??[]))].sort(),lastObservedAt:t.flatMap(e=>e.lastObservedAt?[e.lastObservedAt]:[]).sort((e,t)=>t.localeCompare(e))[0]??null}}function nr(e){return e&&e.length>0?e.map(Sn).join(` + `):Sn(`unavailable`)}function rr(e,t){return(t===`tokens`?e.modelRanking.byTokens:e.modelRanking.byCost).flatMap(t=>{let n=e.modelRanking.entries.find(e=>e.id===t);return n?[n]:[]})}async function ir(e,t){a(xt,e),St=t,await E(),D(Ct)?.focus()}async function ar(){a(xt,null),await E(),St?.focus()}function or(e){return Z({input:`input`,output:`output`,reasoning:`reasoning`,"cache-read":`cacheRead`,"cache-write":`cacheWrite`}[e]??`unknown`)}f(()=>D(R),()=>{a(V,q(D(R),`metaDescription`))}),f(()=>(D(H),D(xt)),()=>{a(Bt,D(H)?.workbench?.modelRanking.entries.find(e=>e.id===D(xt))??null)}),i(),j();var sr=t();T(`1uha8ag`,e=>{var t=ce(),n=g(o(t),2);s(()=>I(n,`content`,D(V))),u(()=>{te.title=`Agent Usage`}),m(e,t)}),n(`keydown`,e,un);var cr=o(sr);B(cr,()=>D(R),e=>{var i=ft(),u=o(i),f=_(u),p=_(f),h=g(p,2),v=_(h,!0);F(h);var y=g(h,2),C=_(y),T=_(C,!0);F(C),ee(C,e=>a(Lt,e),()=>D(Lt));var E=g(C,2),A=_(E,!0);F(E);var j=g(E,2),P=_(j);let B;var te=g(P);F(j),F(y),F(f);var V=g(f,2),K=_(V),se=_(K,!0);F(K);var q=g(K,2),ce=_(q,!0);F(q),F(V);var xt=g(V,2),St=e=>{var t=le(),n=_(t,!0);F(t),s(e=>z(n,e),[()=>(D(_t),l(()=>D(_t)===`agents`?Z(`loadingAgentUsage`):Z(`loadingModelCosts`)))]),m(e,t)},wt=e=>{var t=ue(),n=_(t,!0);F(t),s(e=>z(n,e),[()=>l(()=>Z(`error`))]),m(e,t)},Pt=e=>{let i=N(()=>(D(H),l(()=>tr(D(H)))));var u=Je(),f=o(u),p=e=>{var t=de(),n=_(t,!0);F(t),s(e=>z(n,e),[()=>l(()=>Z(`refreshUnavailable`))]),m(e,t)};b(f,e=>{D(re)&&e(p)});var h=g(f,2),v=e=>{var t=fe(),n=_(t,!0);F(t),s(e=>z(n,e),[()=>l(()=>Z(`noProviders`))]),m(e,t)};b(h,e=>{D(H),l(()=>D(H).providers.length===0)&&e(v)});var y=g(h,2),x=e=>{var r=Oe(),i=_(r),c=e=>{var t=pe(),n=_(t,!0);F(t),s(e=>z(n,e),[()=>l(()=>Z(`updatingAgentUsage`))]),m(e,t)};b(i,e=>{D(Nt),l(()=>D(Nt)?.modules.usage.state===`running`)&&e(c)});var u=g(i,2);L(u,5,()=>(D(H),D(ht),l(()=>zn(D(H),D(ht)))),e=>e.id,(e,r)=>{let i=N(()=>(D(r),l(()=>Rn(D(r).id)))),c=N(()=>(D(r),D(gt),l(()=>An(D(r),D(gt)[D(r).id])))),u=N(()=>(d(D(c)),D(r),l(()=>D(c).freshness??D(r).freshness))),f=N(()=>(d(D(c)),D(r),l(()=>D(c).coverage??D(r).coverage)));var p=De(),h=_(p),v=_(h),y=_(v),x=e=>{var t=me(),n=_(t),a=g(n,2),o=g(a,2);F(t),s(()=>{I(t,`data-provider-logo`,(D(r),l(()=>D(r).id))),I(n,`srcset`,(d(D(i)),l(()=>D(i).light))),I(a,`srcset`,(d(D(i)),l(()=>D(i).dark))),I(o,`src`,(d(D(i)),l(()=>D(i).dark)))}),m(e,t)};b(y,e=>{D(i)&&e(x)});var S=g(y,2),C=_(S),T=_(C,!0);F(C);var E=g(C,2),A=g(_(E));F(E),F(S),F(v);var j=g(v,2),P=_(j,!0);F(j),F(h);var ee=g(h,2),R=e=>{var t=ge();L(t,5,()=>(D(r),l(()=>D(r).billingDomains)),e=>e.id,(e,t)=>{let i=N(()=>(d(D(c)),D(t),l(()=>D(c).id===D(t).id)));var a=he(),o=_(a,!0);F(a),s(()=>{I(a,`aria-selected`,D(i)),I(a,`tabindex`,D(i)?0:-1),z(o,(D(t),l(()=>D(t).displayName)))}),n(`click`,a,()=>In(D(r).id,D(t).id)),n(`keydown`,a,fn),m(e,a)}),F(t),s(e=>I(t,`aria-label`,e),[()=>(D(r),l(()=>`${D(r).displayName} ${Z(`billingDomainTabs`)}`))]),m(e,t)};b(ee,e=>{D(r),l(()=>(D(r).billingDomains?.length??0)>1)&&e(R)});var B=g(ee,2);L(B,1,()=>[D(c)],e=>e.id,(e,i)=>{let c=N(()=>(D(ht),D(r),D(i),l(()=>Ln(D(ht),D(r).id,D(i).id))));var u=Ee(),f=o(u),p=e=>{var r=t(),i=o(r),u=e=>{var t=_e(),r=_(t),i=_(r),a=_(i,!0);F(i);var o=g(i,2),u=_(o,!0);F(o),F(r);var f=g(r,2),p=_(f,!0);F(f),F(t),s((e,n)=>{I(t,`data-testid`,(d(D(c)),l(()=>`connector-${D(c).id}`))),z(a,e),z(u,(d(D(c)),l(()=>D(c).target.billingDomain.displayName))),z(p,n)},[()=>(d(D(c)),l(()=>pn(D(c).state))),()=>l(()=>Z(`manageConnection`))]),n(`click`,f,()=>cn(`connector:${D(c).id}`)),m(e,t)},f=e=>{var t=Se();let r;var i=_(t),o=_(i),u=_(o),f=_(u,!0);F(u);var p=g(u,2),h=e=>{var t=ve(),n=_(t,!0);F(t),s(e=>z(n,e),[()=>l(()=>Z(`experimental`))]),m(e,t)};b(p,e=>{d(D(c)),l(()=>D(c).experimental)&&e(h)}),F(o);var v=g(o);F(i);var y=g(i,2),x=_(y),S=_(x,!0);F(x);var C=g(x,2),T=_(C),E=_(T,!0);F(T);var A=g(T,2),j=_(A,!0);F(A),F(C);var M=g(C,2),N=_(M),P=_(N,!0);F(N);var ee=g(N,2),L=_(ee,!0);F(ee),F(M);var R=g(M,2),B=e=>{var t=ye(),r=_(t),i=_(r,!0);F(r);var o=g(r,2);O(o),F(t),s((e,t)=>{z(i,e),I(o,`aria-label`,t),w(o,(D(Y),d(D(c)),l(()=>D(Y)[D(c).id]??``)))},[()=>l(()=>Z(`managementKey`)),()=>(d(D(c)),l(()=>`${D(c).displayName} ${Z(`managementKey`)}`))]),n(`input`,o,e=>a(Y,{...D(Y),[D(c).id]:e.currentTarget.value})),m(e,t)};b(R,e=>{d(D(c)),l(()=>D(c).credentialOwner===`agent-usage`)&&e(B)});var te=g(R,2),V=_(te),H=e=>{var t=be(),r=_(t,!0);F(t),s(e=>{t.disabled=(d(D(c)),D(J),D(Y),l(()=>!D(c).installed||D(J)===D(c).id||D(c).credentialOwner===`agent-usage`&&!D(Y)[D(c).id])),z(r,e)},[()=>l(()=>Z(`connect`))]),n(`click`,t,()=>sn(D(c).id,`connect`)),m(e,t)};b(V,e=>{d(D(c)),l(()=>D(c).state===`discovered`||D(c).state===`skipped`)&&e(H)});var U=g(V,2),ne=e=>{var t=xe(),r=_(t,!0);F(t),s(e=>{t.disabled=(D(J),d(D(c)),l(()=>D(J)===D(c).id)),z(r,e)},[()=>l(()=>Z(`retry`))]),n(`click`,t,()=>sn(D(c).id,`retry`)),m(e,t)};b(U,e=>{d(D(c)),l(()=>D(c).state===`error`||D(c).state===`not-installed`)&&e(ne)});var W=g(U,2),G=e=>{var t=xe(),r=_(t,!0);F(t),s(e=>{t.disabled=(D(J),d(D(c)),l(()=>D(J)===D(c).id)),z(r,e)},[()=>l(()=>Z(`skip`))]),n(`click`,t,()=>sn(D(c).id,`skip`)),m(e,t)};b(W,e=>{d(D(c)),l(()=>D(c).state!==`skipped`)&&e(G)}),F(te),F(y),F(t),s((e,n,i,a,o,s,u)=>{r=k(t,1,`inline-connection svelte-1uha8ag`,null,r,{"connection-pending":D(J)===D(c).id}),I(t,`data-testid`,(d(D(c)),l(()=>`connector-${D(c).id}`))),I(t,`aria-busy`,(D(J),d(D(c)),l(()=>D(J)===D(c).id))),z(f,e),z(v,` ${n??``}`),z(S,i),z(E,a),z(j,o),z(P,s),z(L,u)},[()=>(d(D(c)),l(()=>pn(D(c).state))),()=>l(()=>Z(`connectionSetup`)),()=>(d(D(c)),l(()=>hn(D(c)))),()=>(d(D(c)),l(()=>D(c).installed?Z(`installed`):Z(`notInstalled`))),()=>(d(D(c)),l(()=>mn(D(c).credentialOwner))),()=>l(()=>Z(`coverageLabel`)),()=>(d(D(c)),l(()=>D(c).expectedCoverage.map(On).join(` · `)))]),m(e,t)};b(i,e=>{d(D(c)),l(()=>D(c).state===`connected`)?e(u):e(f,-1)}),m(e,r)};b(f,e=>{D(c)&&e(p)});var h=g(f,2),v=_(h,!0);F(h);var y=g(h,2);L(y,5,()=>(D(i),l(()=>D(i).quotaBuckets)),e=>e.id,(e,t)=>{var n=Ce(),a=_(n),o=_(a),c=_(o,!0);F(o);var u=g(o,2),d=_(u);F(u),F(a);var f=g(a,2);let p;var h=_(f);F(f);var v=g(f,2),y=_(v);F(v);var b=g(v,2),x=_(b),S=_(x);F(x),F(b),F(n),s((e,n,a,o,s,u,m,g,_)=>{z(c,(D(t),l(()=>D(t).label))),z(d,`${D(t),l(()=>D(t).usedPercent??`—`)??``}% ${e??``}`),p=k(f,1,`progress svelte-1uha8ag`,null,p,{"progress-warning":(D(t).usedPercent??0)>=70&&(D(t).usedPercent??0)<90,"progress-critical":(D(t).usedPercent??0)>=90}),I(f,`aria-label`,(D(t),l(()=>D(t).label))),I(f,`aria-valuenow`,(D(t),l(()=>D(t).usedPercent??void 0))),I(f,`aria-valuetext`,n),I(f,`aria-describedby`,(D(r),D(i),D(t),l(()=>`quota-evidence-${D(r).id}-${D(i).id}-${D(t).id}`))),M(h,a),I(v,`id`,(D(r),D(i),D(t),l(()=>`quota-evidence-${D(r).id}-${D(i).id}-${D(t).id}`))),z(y,`${o??``}: ${s??``} ·
2
+ ${u??``}`),z(S,`${m??``}
3
+ ${g??``} · ${_??``}`)},[()=>l(()=>Z(`used`)),()=>(D(t),l(()=>D(t).usedPercent===null?Z(`notAvailable`):`${Q(D(t).usedPercent)}% ${Z(`used`)}`)),()=>(D(t),l(()=>`width: ${Math.min(100,Math.max(0,D(t).usedPercent??0))}%`)),()=>l(()=>Z(`source`)),()=>(D(t),l(()=>Sn(D(t).authority))),()=>(D(t),D(i),D(r),l(()=>$(D(t).observedAt??D(i).freshness?.lastSuccessAt??D(r).freshness.lastSuccessAt))),()=>l(()=>Z(`resets`)),()=>(D(t),l(()=>$(D(t).resetsAt))),()=>(D(t),l(()=>xn(D(t).resetsAt)))]),m(e,n)}),F(y);var x=g(y,2),S=e=>{var t=Te();L(t,5,()=>(D(i),l(()=>D(i).forecasts)),e=>e.bucketId,(e,t)=>{var n=we(),r=_(n),i=_(r,!0);F(r);var a=g(r,2),o=_(a,!0);F(a);var c=g(a,2),u=_(c);F(c),F(n),s((e,n,r,a,s,c,d)=>{z(i,(D(t),l(()=>D(t).label))),z(o,e),z(u,`${n??``} · ${D(t),l(()=>D(t).evidence.samples)??``}
4
+ ${r??``} ·
5
+ ${a??``}
6
+ ${s??``}
7
+ · ${c??``} · ${d??``}`)},[()=>(D(t),l(()=>D(t).willLastUntilReset?Z(`lastsUntilReset`):Z(`exhaustsBeforeReset`))),()=>(D(t),l(()=>kn(D(t).confidence))),()=>l(()=>Z(`samples`)),()=>l(()=>Z(`predictedExhaustion`)),()=>(D(t),l(()=>$(D(t).predictedExhaustionAt))),()=>l(()=>Sn(`estimate`)),()=>(D(t),l(()=>$(D(t).evidence.windowEnd)))]),m(e,n)}),F(t),m(e,t)};b(x,e=>{D(i),l(()=>(D(i).forecasts?.length??0)>0)&&e(S)}),s(e=>z(v,e),[()=>l(()=>Z(`quota`))]),m(e,u)}),F(p),s((e,t,n)=>{I(C,`data-provider-logo`,(d(D(i)),D(r),l(()=>D(i)?void 0:D(r).id))),z(T,(D(r),l(()=>D(r).displayName))),I(E,`data-status`,(d(D(u)),l(()=>D(u).status===`unavailable`?`unavailable`:`available`))),z(A,` ${e??``}
8
+ ${t??``}`),z(P,n)},[()=>(d(D(u)),l(()=>D(u).status===`fresh`?Z(`updatedNow`):D(u).lastSuccessAt?Z(`updated`):Z(`unavailable`))),()=>(d(D(u)),l(()=>D(u).lastSuccessAt?` · ${$(D(u).lastSuccessAt)}`:``)),()=>(d(D(f)),l(()=>Cn(D(f).quota)))]),m(e,p)}),F(u),F(r),s(e=>I(u,`aria-label`,e),[()=>l(()=>Z(`providersLabel`))]),m(e,r)},S=e=>{var u=qe(),f=_(u),p=e=>{var t=pe(),n=_(t,!0);F(t),s(e=>z(n,e),[()=>l(()=>Z(`updatingModelCosts`))]),m(e,t)};b(f,e=>{D(Nt),D(Mt),l(()=>D(Nt)?.modules.pricing.state===`running`||D(Mt))&&e(p)});var h=g(f,2),v=e=>{let u=N(()=>(D(H),l(()=>D(H).workbench))),f=N(()=>(d(D(u)),D(X),l(()=>Jn(D(u),D(X))))),p=N(()=>(d(D(u)),D(X),l(()=>qn(D(u),D(X)))));var h=Ke(),v=_(h),y=_(v),x=_(y),S=_(x,!0);F(x);var C=g(x,2),w=_(C),T=_(w,!0);F(w);var E=g(w,2,!0);F(C),F(y);var O=g(y,2),k=_(O),A=_(k),j=_(A,!0);F(A);var P=g(A,2),ee=_(P,!0);F(P),F(k);var R=g(k,2);L(R,4,()=>[`24h`,`7d`,`30d`],e=>e,(e,t)=>{var r=ke(),i=_(r,!0);F(r),s(()=>{I(r,`aria-pressed`,D(vt)===t),z(i,t)}),n(`click`,r,()=>Mn(t)),m(e,r)}),F(R);var B=g(R,2);L(B,4,()=>[`CNY`,`USD`],e=>e,(e,t)=>{var r=ke(),i=_(r,!0);F(r),s(()=>{I(r,`aria-pressed`,D(yt)===t),z(i,t)}),n(`click`,r,()=>Nn(t)),m(e,r)}),F(B),F(O),F(v);var te=g(v,2),V=_(te),U=_(V),ne=_(U),W=_(ne,!0);F(ne);var G=g(ne,2),re=_(G,!0);F(G);var ie=g(G,2),ae=e=>{var t=ve(),n=_(t);F(t),s((e,t,r,i,a)=>z(n,`${e??``} · ${t??``}
9
+ ${r??``} ·
10
+ ${i??``} ·
11
+ ${a??``}`),[()=>l(()=>Z(`apiRateEstimate`)),()=>l(()=>Z(`pricingCoverage`)),()=>(d(D(u)),l(()=>bn(D(u).costs.retailEquivalent.pricingCoverage))),()=>(d(D(u)),l(()=>nr(D(u).costs.retailEquivalent.authorities))),()=>(d(D(u)),l(()=>$(D(u).costs.retailEquivalent.observedAt)))]),m(e,t)},K=e=>{var t=ve(),n=_(t);F(t),s((e,t)=>z(n,`${e??``} ·
12
+ ${t??``}`),[()=>(d(D(i)),l(()=>nr(D(i).authorities))),()=>(d(D(i)),l(()=>$(D(i).lastObservedAt)))]),m(e,t)};b(ie,e=>{D(X)===`retail-equivalent`?e(ae):e(K,-1)}),F(U);var oe=g(U,2);L(oe,5,()=>(d(D(u)),l(()=>D(u).providerSummary)),e=>`${e.providerId}:${e.billingDomainId}`,(e,t)=>{let n=N(()=>(D(t),l(()=>Rn(D(t).providerId)))),r=N(()=>(D(X),D(t),l(()=>D(X)===`tokens`?D(t).recordedTokens:D(t).retailEquivalent.amount))),i=N(()=>(D(X),D(t),l(()=>D(X)===`tokens`?D(t).tokenShare:D(t).retailShare))),a=N(()=>(D(X),D(t),l(()=>D(X)===`tokens`?D(t).authorities:D(t).retailEquivalent.authorities))),o=N(()=>(D(X),D(t),l(()=>D(X)===`tokens`?D(t).lastObservedAt:D(t).retailEquivalent.observedAt)));var c=Me(),f=_(c),p=_(f),h=e=>{var r=Ae(),i=_(r),a=g(i,2),o=g(a,2);F(r),s(()=>{I(r,`data-provider-logo`,(D(t),l(()=>D(t).providerId))),I(i,`srcset`,(d(D(n)),l(()=>D(n).light))),I(a,`srcset`,(d(D(n)),l(()=>D(n).dark))),I(o,`src`,(d(D(n)),l(()=>D(n).dark)))}),m(e,r)},v=e=>{var n=je();s(e=>M(n,e),[()=>(D(t),l(()=>`background: ${$n(D(t).providerId,D(t).billingDomainId)}`))]),m(e,n)};b(p,e=>{D(n)?e(h):e(v,-1)});var y=g(p,2),x=_(y),S=_(x,!0);F(x);var C=g(x,2),w=_(C,!0);F(C);var T=g(C,2),E=_(T);F(T),F(y),F(f);var O=g(f,2),k=_(O),A=_(k,!0);F(k);var j=g(k,2),P=_(j,!0);F(j),F(O),F(c),s((e,n,r,i)=>{z(S,(D(t),l(()=>D(t).providerDisplayName))),z(w,(D(t),l(()=>D(t).billingDomainDisplayName))),z(E,`${e??``} ·
13
+ ${n??``}`),z(A,r),z(P,i)},[()=>(d(D(a)),l(()=>nr(D(a)))),()=>(d(D(o)),l(()=>$(D(o)))),()=>(d(D(r)),d(D(u)),D(X),l(()=>Zn(D(r),D(u).comparisonCurrency,D(X)))),()=>(D(t),d(D(i)),l(()=>D(t).includedInHeadline===!1?Z(`separateFromHeadline`):bn(D(i))))]),m(e,c)}),F(oe),F(V);var se=g(V,2),q=_(se),ce=_(q),le=_(ce),ue=_(le,!0);F(le);var de=g(le,2),fe=_(de,!0);F(de),F(ce),F(q);var pe=g(q,2),me=_(pe),he=_(me),ge=_(he,!0);F(he);var _e=g(he,2),ye=_(_e,!0);F(_e);var be=g(_e,2),xe=_(be,!0);F(be),F(me);var Se=g(me,2),Ce=g(_(Se),3);L(Ce,1,()=>D(f),e=>e.key,(e,n)=>{var r=t(),i=o(r);L(i,3,()=>(D(n),l(()=>D(n).runs)),(e,t)=>`${D(n).key}:${t}`,(e,t)=>{var r=Ie(),i=o(r),a=e=>{var r=Ne();s((e,t)=>{I(r,`data-cost-purpose`,(D(n),l(()=>D(n).costPurpose??void 0))),I(r,`d`,e),M(r,t)},[()=>(D(t),l(()=>Xn(D(t)))),()=>(D(n),l(()=>`fill: ${$n(D(n).providerId,D(n).billingDomainId)}`))]),m(e,r)},u=c(()=>(D(t),D(n),l(()=>Xn(D(t))&&D(n).costPurpose!==`reported-estimate`)));b(i,e=>{D(u)&&e(a)});var d=g(i),f=e=>{var r=Pe();s((e,t)=>{I(r,`data-cost-purpose`,(D(n),l(()=>D(n).costPurpose??void 0))),I(r,`d`,e),M(r,t)},[()=>(D(t),l(()=>Yn(D(t)))),()=>(D(n),l(()=>`stroke: ${$n(D(n).providerId,D(n).billingDomainId)}; ${D(n).costPurpose===`reported-estimate`?`stroke-dasharray: 10 7`:``}`))]),m(e,r)},p=e=>{var r=Fe();s(e=>{I(r,`data-cost-purpose`,(D(n),l(()=>D(n).costPurpose??void 0))),I(r,`cx`,(D(t),l(()=>D(t)[0].x))),I(r,`cy`,(D(t),l(()=>D(t)[0].y))),M(r,e)},[()=>(D(n),l(()=>D(n).costPurpose===`reported-estimate`?`fill: transparent; stroke: ${$n(D(n).providerId,D(n).billingDomainId)}; stroke-width: 2`:`fill: ${$n(D(n).providerId,D(n).billingDomainId)}`))]),m(e,r)};b(d,e=>{D(t),l(()=>D(t).length>1)?e(f):(D(t),l(()=>D(t)[0])&&e(p,1))}),m(e,r)}),m(e,r)}),F(Se);var we=g(Se,2),Te=_(we),Ee=_(Te,!0);F(Te);var De=g(Te,2),Oe=_(De,!0);F(De);var qe=g(De,2),Je=_(qe,!0);F(qe),F(we),F(pe);var Ye=g(pe,2);L(Ye,5,()=>D(f),e=>e.key,(e,t)=>{var n=Le(),i=_(n),a=g(i),o=g(a),c=e=>{var n=r();s(e=>z(n,`· ${e??``}`),[()=>(D(t),l(()=>D(t).costPurpose===`reported-estimate`?Z(`providerReportedEstimate`):Z(`apiRetailEquivalent`)))]),m(e,n)};b(o,e=>{D(t),l(()=>D(t).costPurpose)&&e(c)});var u=g(o,2),d=e=>{var t=r();s(e=>z(t,`· ${e??``}`),[()=>l(()=>Z(`separateFromHeadline`))]),m(e,t)};b(u,e=>{D(t),l(()=>D(t).includedInHeadline===!1)&&e(d)}),F(n),s(e=>{M(i,e),z(a,` ${D(t),l(()=>D(t).providerDisplayName)??``} · ${D(t),l(()=>D(t).billingDomainDisplayName)??``} `)},[()=>(D(t),l(()=>D(t).costPurpose===`reported-estimate`?`background: repeating-linear-gradient(90deg, ${$n(D(t).providerId,D(t).billingDomainId)} 0 5px, transparent 5px 9px)`:`background: ${$n(D(t).providerId,D(t).billingDomainId)}`))]),m(e,n)}),F(Ye);var Xe=g(Ye,2),Ze=_(Xe),Qe=_(Ze),$e=_(Qe),et=_($e),tt=_(et,!0);F(et);var nt=g(et),rt=_(nt,!0);F(nt),F($e),F(Qe);var it=g(Qe);L(it,5,()=>(d(D(u)),l(()=>D(u).trend.buckets)),e=>e.start,(e,t)=>{var n=Re(),r=_(n),i=_(r,!0);F(r);var a=g(r),o=_(a,!0);F(a),F(n),s(e=>{z(i,(D(t),l(()=>D(t).label))),z(o,e)},[()=>(D(t),D(X),l(()=>D(t).gap?Z(`gap`):D(t).segments.map(e=>er(e,D(X))).join(`; `)))]),m(e,n)}),F(it),F(Ze),F(Xe),F(se),F(te);var at=g(te,2),ot=_(at),st=_(ot,!0);F(ot);var ct=g(ot,2),lt=_(ct),ut=_(lt),dt=_(ut,!0);F(ut);var ft=g(ut,2),pt=_(ft,!0);F(ft),F(lt);var mt=g(lt,2),ht=_(mt),J=_(ht,!0);F(ht);var Y=g(ht,2),gt=_(Y,!0);F(Y),F(mt);var _t=g(mt,2),xt=_(_t),St=_(xt,!0);F(xt);var Ct=g(xt,2),wt=_(Ct,!0);F(Ct),F(_t);var Tt=g(_t,2),Et=_(Tt),Dt=_(Et,!0);F(Et);var Ot=g(Et,2),kt=_(Ot,!0);F(Ot),F(Tt);var At=g(Tt,2),jt=_(At),Mt=_(jt,!0);F(jt);var Nt=g(jt,2),Pt=_(Nt,!0);F(Nt),F(At);var Ft=g(At,2),It=_(Ft),Lt=_(It,!0);F(It);var Rt=g(It,2),zt=_(Rt,!0);F(Rt),F(Ft),F(ct);var Bt=g(ct,2),Vt=_(Bt);F(Bt),F(at);var Ht=g(at,2),Ut=_(Ht),Wt=_(Ut),Gt=_(Wt),Kt=_(Gt,!0);F(Gt),F(Wt);var qt=g(Wt,2),Jt=_(qt),Yt=_(Jt,!0);F(Jt);var Xt=g(Jt,2),Zt=_(Xt,!0);F(Xt),F(qt),F(Ut);var Qt=g(Ut,2),$t=_(Qt),en=_($t,!0);F($t);var tn=g($t,2),nn=_(tn,!0);F(tn);var rn=g(tn,2),an=_(rn,!0);F(rn);var on=g(rn,2),sn=_(on,!0);F(on),F(Qt);var cn=g(Qt,2),ln=e=>{var t=Ue(),i=o(t);L(i,5,()=>(d(D(u)),D(X),l(()=>rr(D(u),D(X)))),e=>e.id,(e,t)=>{let r=N(()=>(D(t),l(()=>Rn(D(t).providerId)))),i=N(()=>(D(t),l(()=>D(t).retailEquivalent.amount===null?D(t).reportedEstimate??D(t).retailEquivalent:D(t).retailEquivalent))),a=N(()=>(D(t),l(()=>D(t).retailEquivalent.amount===null&&D(t).reportedEstimate?.amount!=null)));var o=Be(),c=_(o),u=_(c),f=_(u),p=e=>{var n=ze(),i=_(n),a=g(i,2),o=g(a,2);F(n),s(()=>{I(n,`data-provider-logo`,(D(t),l(()=>D(t).providerId))),I(i,`srcset`,(d(D(r)),l(()=>D(r).light))),I(a,`srcset`,(d(D(r)),l(()=>D(r).dark))),I(o,`src`,(d(D(r)),l(()=>D(r).dark)))}),m(e,n)};b(f,e=>{D(r)&&e(p)});var h=g(f,2),v=_(h),y=_(v,!0);F(v);var x=g(v,2),S=_(x);F(x);var C=g(x,2),w=e=>{var t=ve(),n=_(t,!0);F(t),s(e=>z(n,e),[()=>l(()=>Z(`separateFromHeadline`))]),m(e,t)};b(C,e=>{D(t),l(()=>D(t).includedInHeadline===!1)&&e(w)});var T=g(C,2),E=_(T);F(T);var O=g(T,2),k=_(O);F(O),F(h),F(u);var A=g(u,2),j=_(A),M=_(j,!0);F(j),F(A);var P=g(A,2),ee=_(P),L=_(ee,!0);F(ee),F(P);var R=g(P,2),B=_(R),te=_(B,!0);F(B),F(R),F(c),F(o),s((e,n,r,i,a,o,s,c,u,d)=>{z(y,(D(t),l(()=>D(t).model))),z(S,`${D(t),l(()=>D(t).providerDisplayName)??``} · ${D(t),l(()=>D(t).billingDomainDisplayName)??``}`),z(E,`${e??``}: ${n??``} ·
14
+ ${r??``}`),z(k,`${i??``}: ${a??``} · ${o??``}`),z(M,s),z(L,c),I(B,`aria-label`,u),z(te,d)},[()=>l(()=>Z(`tokens`)),()=>(D(t),l(()=>nr(D(t).authorities))),()=>(D(t),l(()=>$(D(t).lastObservedAt))),()=>(d(D(a)),l(()=>D(a)?Z(`providerReportedEstimate`):Z(`apiRetailEquivalent`))),()=>(d(D(i)),l(()=>nr(D(i).authorities))),()=>(d(D(i)),l(()=>$(D(i).observedAt))),()=>(d(D(i)),l(()=>D(i).amount===null?Z(`notAvailable`):Wn(D(i).amount,D(i).comparisonCurrency))),()=>(D(t),D(X),d(D(a)),l(()=>D(t).includedInHeadline===!1?Z(`headlineShareNotApplicable`):bn(D(X)===`tokens`?D(t).tokenShare:D(a)?D(t).reportedShare:D(t).retailShare))),()=>(D(t),l(()=>yn(D(t).tokenTotals.total))),()=>(D(t),l(()=>vn(D(t).tokenTotals.total)))]),n(`click`,c,e=>ir(D(t).id,e.currentTarget)),n(`keydown`,c,e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),ir(D(t).id,e.currentTarget))}),m(e,o)}),F(i);var a=g(i,2),c=e=>{var t=He(),n=_(t),i=_(n,!0);F(n);var a=g(n,2);L(a,1,()=>(d(D(u)),l(()=>D(u).modelRanking.unclassified)),e=>`${e.providerId}:${e.billingDomainId}`,(e,t)=>{var n=Ve(),i=_(n),a=g(i),o=e=>{var t=r();s(e=>z(t,`· ${e??``}`),[()=>l(()=>Z(`separateFromHeadline`))]),m(e,t)};b(a,e=>{D(t),l(()=>D(t).includedInHeadline===!1)&&e(o)});var c=g(a,2),u=_(c);F(c);var d=g(c,2),f=_(d,!0);F(d);var p=g(d,2),h=_(p);F(p),F(n),s((e,n,r,a,o,s)=>{z(i,`${D(t),l(()=>D(t).providerDisplayName)??``} · ${D(t),l(()=>D(t).billingDomainDisplayName)??``} `),I(c,`aria-label`,e),z(u,`${n??``} ${r??``}`),z(f,a),z(h,`${o??``} ·
15
+ ${s??``}`)},[()=>(D(t),l(()=>yn(D(t).tokenTotals.total))),()=>(D(t),l(()=>vn(D(t).tokenTotals.total))),()=>l(()=>Z(`tokens`)),()=>(D(t),l(()=>D(t).includedInHeadline===!1?Z(`headlineShareNotApplicable`):bn(D(t).tokenShare))),()=>(D(t),l(()=>nr(D(t).authorities))),()=>(D(t),l(()=>$(D(t).lastObservedAt)))]),m(e,n)}),F(t),s(e=>z(i,e),[()=>l(()=>Z(`unclassifiedUsage`))]),m(e,t)};b(a,e=>{d(D(u)),l(()=>D(u).modelRanking.unclassified.length>0)&&e(c)}),m(e,t)},un=e=>{var t=Ge();L(t,5,()=>(d(D(u)),D(X),l(()=>[...D(u).dayBreakdown].filter(e=>D(X)===`tokens`?!e.gap:!e.gap||e.retailEquivalent.records>0).reverse())),e=>e.start,(e,t)=>{var n=We(),r=_(n),i=_(r),a=_(i,!0);F(i);var o=g(i,2),c=_(o);F(o);var f=g(o,2),p=_(f);F(f),F(r);var h=g(r,2),v=_(h,!0);F(h);var y=g(h,2),b=_(y,!0);F(y);var x=g(y,2),S=_(x,!0);F(x),F(n),s((e,n,r,i,o,s,u,d,f)=>{z(a,(D(t),l(()=>D(t).label))),z(c,`${e??``}: ${n??``} ·
16
+ ${r??``}`),z(p,`${i??``}: ${o??``} · ${s??``}`),z(v,u),z(b,d),z(S,f)},[()=>l(()=>Z(`tokens`)),()=>(D(t),l(()=>nr(D(t).authorities))),()=>(D(t),l(()=>$(D(t).lastObservedAt))),()=>l(()=>Z(`cost`)),()=>(D(t),l(()=>nr(D(t).retailEquivalent.authorities))),()=>(D(t),l(()=>$(D(t).retailEquivalent.observedAt))),()=>(D(t),d(D(u)),l(()=>Wn(D(t).retailEquivalent.amount,D(u).comparisonCurrency))),()=>(D(X),D(t),l(()=>bn(D(X)===`tokens`?D(t).tokenShare:D(t).retailShare))),()=>(D(t),l(()=>D(t).recordedTokens===null?Z(`notAvailable`):vn(D(t).recordedTokens)))]),m(e,n)}),F(t),m(e,t)};b(cn,e=>{D(bt)===`model`?e(ln):e(un,-1)}),F(Ht),F(h),s((e,t,n,r,i,a,o,s,c,f,p,m,h,g,_,v,y,b,x,C,w,O,M,N,F,L,te,H,U,G,ie,ae,K,oe,se,q,ce,le,de,pe,me,he,_e,ve,be,Se,Ce)=>{z(S,e),z(T,t),z(E,n),I(k,`aria-label`,r),I(A,`aria-pressed`,D(X)===`retail-equivalent`),z(j,i),I(P,`aria-pressed`,D(X)===`tokens`),z(ee,a),I(R,`aria-label`,o),I(B,`aria-label`,s),I(V,`aria-label`,c),I(ne,`aria-label`,f),z(W,p),z(re,m),z(ue,h),z(fe,g),z(ge,_),z(ye,v),z(xe,y),z(Ee,(d(D(u)),l(()=>D(u).trend.buckets[0]?.label??`—`))),z(Oe,b),z(Je,x),I(Ze,`aria-label`,C),z(tt,w),z(rt,O),z(st,M),z(dt,N),z(pt,F),z(J,L),z(gt,te),z(St,H),z(wt,U),z(Dt,G),z(kt,ie),z(Mt,ae),z(Pt,K),z(Lt,oe),z(zt,se),z(Vt,`${q??``}
17
+ ${ce??``} ·
18
+ ${le??``} ·
19
+ ${de??``}`),z(Kt,pe),I(qt,`aria-label`,me),I(Jt,`aria-pressed`,D(bt)===`model`),z(Yt,he),I(Xt,`aria-pressed`,D(bt)===`day`),z(Zt,_e),z(en,ve),z(nn,be),z(an,Se),z(sn,Ce)},[()=>l(()=>Z(`tokenMoneyWorkbench`)),()=>l(()=>Z(`usage`)),()=>(d(D(u)),l(()=>Kn(D(u)))),()=>l(()=>Z(`trendMetric`)),()=>l(()=>Z(`cost`)),()=>l(()=>Z(`tokens`)),()=>l(()=>Z(`history`)),()=>l(()=>Z(`displayCurrency`)),()=>l(()=>Z(`usage`)),()=>(D(X),d(D(u)),l(()=>D(X)===`tokens`?D(u).recordedTokens===null?Z(`notAvailable`):yn(D(u).recordedTokens):Wn(D(u).costs.retailEquivalent.amount,D(u).comparisonCurrency))),()=>(D(X),d(D(u)),l(()=>D(X)===`tokens`?D(u).recordedTokens===null?Z(`notAvailable`):vn(D(u).recordedTokens):Wn(D(u).costs.retailEquivalent.amount,D(u).comparisonCurrency))),()=>(D(X),l(()=>D(X)===`tokens`?Z(`recordedTokens`):Z(`apiRetailEquivalent`))),()=>(D(X),l(()=>D(X)===`tokens`?Z(`tokenTrend`):Z(`costTrend`))),()=>(d(D(u)),l(()=>Kn(D(u)))),()=>(d(D(p)),d(D(u)),D(X),l(()=>Zn(D(p),D(u).comparisonCurrency,D(X)))),()=>(d(D(p)),d(D(u)),D(X),l(()=>Zn(D(p)===null?null:D(p)/2,D(u).comparisonCurrency,D(X)))),()=>(d(D(u)),D(X),l(()=>Zn(0,D(u).comparisonCurrency,D(X)))),()=>(d(D(u)),l(()=>D(u).trend.buckets[Math.floor(D(u).trend.buckets.length/2)]?.label??`—`)),()=>(d(D(u)),l(()=>D(u).trend.buckets.at(-1)?.label??`—`)),()=>(D(vt),d(D(u)),l(()=>`${Z(`trendData`)} · ${D(vt)} · ${D(u).timeZone} · ${D(u).trend.granularity===`hour`?Z(`precisionHour`):Z(`precisionDay`)} · ${Z(`trendSummary`)}`)),()=>l(()=>Z(`interval`)),()=>l(()=>Z(`providerEvidence`)),()=>l(()=>Z(`usageTotals`)),()=>l(()=>Z(`recordedTokens`)),()=>(d(D(u)),l(()=>D(u).recordedTokens===null?Z(`notAvailable`):vn(D(u).recordedTokens))),()=>l(()=>Z(`input`)),()=>(d(D(u)),l(()=>D(u).tokenBreakdown.status===`available`?vn(D(u).tokenBreakdown.tokenTotals.input):Z(`notAvailable`))),()=>l(()=>Z(`output`)),()=>(d(D(u)),l(()=>D(u).tokenBreakdown.status===`available`?vn(D(u).tokenBreakdown.tokenTotals.output):Z(`notAvailable`))),()=>l(()=>Z(`reasoning`)),()=>(d(D(u)),l(()=>D(u).tokenBreakdown.status===`available`?vn(D(u).tokenBreakdown.tokenTotals.reasoning):Z(`notAvailable`))),()=>l(()=>Z(`cacheRead`)),()=>(d(D(u)),l(()=>D(u).tokenBreakdown.status===`available`?vn(D(u).tokenBreakdown.tokenTotals.cacheRead):Z(`notAvailable`))),()=>l(()=>Z(`cacheWrite`)),()=>(d(D(u)),l(()=>D(u).tokenBreakdown.status===`available`?vn(D(u).tokenBreakdown.tokenTotals.cacheWrite):Z(`notAvailable`))),()=>l(()=>Z(`classificationCoverage`)),()=>(d(D(u)),l(()=>bn(D(u).tokenBreakdown.classificationCoverage))),()=>(d(D(u)),l(()=>nr(D(u).tokenBreakdown.authorities))),()=>(d(D(u)),l(()=>$(D(u).tokenBreakdown.lastObservedAt))),()=>l(()=>Z(`breakdown`)),()=>l(()=>Z(`breakdown`)),()=>l(()=>Z(`model`)),()=>l(()=>Z(`day`)),()=>(D(bt),l(()=>D(bt)===`model`?Z(`model`):Z(`day`))),()=>l(()=>Z(`cost`)),()=>(D(X),D(bt),l(()=>D(X)===`tokens`?Z(`tokenShare`):D(bt)===`model`?Z(`costShare`):Z(`retailShare`))),()=>l(()=>Z(`tokens`))]),n(`click`,A,()=>Gn(`retail-equivalent`)),n(`click`,P,()=>Gn(`tokens`)),n(`click`,Jt,()=>a(bt,`model`)),n(`click`,Xt,()=>a(bt,`day`)),m(e,h)};b(h,e=>{D(H),l(()=>D(H).workbench)&&e(v)}),F(u),m(e,u)};b(y,e=>{D(_t)===`agents`?e(x):e(S,-1)}),m(e,u)};b(xt,e=>{D(U)?e(St):D(G)&&!D(H)?e(wt,1):D(H)&&e(Pt,2)}),F(u);var Rt=g(u,2),Vt=e=>{var t=nt(),r=_(t),i=_(r),o=_(i),u=_(o),f=_(u,!0);F(u);var p=g(u,2),h=_(p,!0);F(p);var v=g(p,2),y=_(v,!0);F(v),F(o);var C=g(o,2);F(i);var T=g(i,2),E=_(T),A=_(E),j=_(A),M=_(j,!0);F(j);var N=g(j,2),P=_(N,!0);F(N),F(A);var R=g(A,2),B=e=>{var t=Ye(),n=_(t,!0);F(t),s(e=>z(n,e),[()=>l(()=>Z(`connectorsUnavailable`))]),m(e,t)};b(R,e=>{D(ie)&&e(B)});var te=g(R,2);L(te,5,()=>D(ht),e=>e.id,(e,t)=>{var r=Xe();let i;var o=_(r),c=_(o),u=_(c,!0);F(c);var d=g(c,2),f=_(d,!0);F(d),F(o);var p=g(o,2),h=_(p,!0);F(p);var v=g(p,2),y=_(v);F(v);var x=g(v,2),S=e=>{var r=ye(),i=_(r),o=_(i,!0);F(i);var c=g(i,2);O(c),F(r),s((e,n)=>{z(o,e),I(c,`aria-label`,n),w(c,(D(Y),D(t),l(()=>D(Y)[D(t).id]??``)))},[()=>l(()=>Z(`managementKey`)),()=>(D(t),l(()=>`${D(t).displayName} ${Z(`managementKey`)}`))]),n(`input`,c,e=>a(Y,{...D(Y),[D(t).id]:e.currentTarget.value})),m(e,r)};b(x,e=>{D(t),l(()=>D(t).credentialOwner===`agent-usage`)&&e(S)});var C=g(x,2),T=_(C),E=e=>{var r=be(),i=_(r,!0);F(r),s(e=>{r.disabled=(D(J),D(t),D(Y),l(()=>D(J)===D(t).id||!D(Y)[D(t).id])),z(i,e)},[()=>l(()=>Z(`replaceCredential`))]),n(`click`,r,()=>sn(D(t).id,`connect`)),m(e,r)};b(T,e=>{D(t),l(()=>D(t).state===`connected`&&D(t).credentialOwner===`agent-usage`)&&e(E)});var A=g(T,2),j=e=>{var r=be(),i=_(r,!0);F(r),s(e=>{r.disabled=(D(t),D(J),D(Y),l(()=>!D(t).installed||D(J)===D(t).id||D(t).credentialOwner===`agent-usage`&&!D(Y)[D(t).id])),z(i,e)},[()=>l(()=>Z(`connect`))]),n(`click`,r,()=>sn(D(t).id,`connect`)),m(e,r)};b(A,e=>{D(t),l(()=>D(t).state===`discovered`||D(t).state===`skipped`)&&e(j)});var M=g(A,2),N=e=>{var r=xe(),i=_(r,!0);F(r),s(e=>{r.disabled=(D(J),D(t),l(()=>D(J)===D(t).id)),z(i,e)},[()=>l(()=>Z(`retry`))]),n(`click`,r,()=>sn(D(t).id,`retry`)),m(e,r)};b(M,e=>{D(t),l(()=>D(t).state===`error`||D(t).state===`not-installed`||D(t).state===`connected`)&&e(N)});var P=g(M,2),ee=e=>{var r=xe(),i=_(r,!0);F(r),s(e=>{r.disabled=(D(J),D(t),l(()=>D(J)===D(t).id)),z(i,e)},[()=>l(()=>Z(`skip`))]),n(`click`,r,()=>sn(D(t).id,`skip`)),m(e,r)};b(P,e=>{D(t),l(()=>D(t).state!==`skipped`)&&e(ee)}),F(C),F(r),s((e,n,a)=>{I(r,`data-settings-target`,(D(t),l(()=>`connector:${D(t).id}`))),I(r,`data-testid`,(D(t),l(()=>`settings-connector-${D(t).id}`))),i=k(r,1,`svelte-1uha8ag`,null,i,{"settings-target-active":D(It)===`connector:${D(t).id}`}),z(u,(D(t),l(()=>D(t).displayName))),z(f,e),z(h,n),z(y,`${a??``} · ${D(t),l(()=>D(t).target.billingDomain.displayName)??``}`)},[()=>(D(t),l(()=>pn(D(t).state))),()=>(D(t),l(()=>hn(D(t)))),()=>(D(t),l(()=>mn(D(t).credentialOwner)))]),m(e,r)}),F(te),F(E);var V=g(E,2),H=_(V),U=_(H),W=_(U,!0);F(U);var G=g(U,2),re=_(G,!0);F(G),F(H);var K=g(H,2),se=e=>{var t=Ye(),n=_(t,!0);F(t),s(e=>z(n,e),[()=>l(()=>Z(`monitoringUnavailable`))]),m(e,t)};b(K,e=>{D(ae)&&e(se)});var q=g(K,2),ce=e=>{var t=Ze(),r=_(t),i=_(r);O(i);var a=g(i);F(r);var o=g(r,2),c=_(o);O(c);var u=g(c);F(o);var d=g(o,2),f=_(d);O(f);var p=g(f);F(d),F(t),s((e,t,n)=>{S(i,(D(Tt),l(()=>D(Tt).backgroundCollectionEnabled))),z(a,` ${e??``}`),S(c,(D(Tt),l(()=>D(Tt).notificationsEnabled))),z(u,` ${t??``}`),S(f,(D(Tt),l(()=>D(Tt).startAtLogin))),z(p,` ${n??``}`)},[()=>l(()=>Z(`backgroundCollection`)),()=>l(()=>Z(`notifications`)),()=>l(()=>Z(`startAtLogin`))]),n(`change`,i,e=>on({backgroundCollectionEnabled:e.currentTarget.checked})),n(`change`,c,e=>on({notificationsEnabled:e.currentTarget.checked})),n(`change`,f,e=>on({startAtLogin:e.currentTarget.checked})),m(e,t)};b(q,e=>{D(Tt)&&e(ce)}),F(V);var le=g(V,2),ue=_(le),de=_(ue),fe=_(de,!0);F(de);var pe=g(de,2),me=_(pe,!0);F(pe),F(ue);var he=g(ue,2),ge=e=>{var t=Ye(),n=_(t,!0);F(t),s(e=>z(n,e),[()=>l(()=>Z(`diagnosticsUnavailable`))]),m(e,t)};b(he,e=>{D(oe)&&e(ge)});var _e=g(he,2),Se=e=>{var t=tt();L(t,5,()=>(D(Et),d(ne),l(()=>D(Et).connectors.filter(e=>!ne(e.category)))),e=>e.id,(e,t)=>{var n=et();let r;var i=_(n),a=_(i),o=_(a,!0);F(a);var u=g(a,2),d=_(u,!0);F(u),F(i);var f=g(i,2),p=_(f,!0);F(f);var h=g(f,2),v=e=>{var n=Qe(),r=_(n,!0);F(n),s(e=>z(r,e),[()=>(D(t),l(()=>D(t).affectedCoverage.map(On).join(` · `)))]),m(e,n)};b(h,e=>{D(t),l(()=>D(t).affectedCoverage.length>0)&&e(v)});var y=g(h,2),x=e=>{var n=$e(),r=_(n,!0);F(n),s(e=>z(r,e),[()=>(D(t),l(()=>_n(D(t))))]),m(e,n)},S=c(()=>(D(t),l(()=>_n(D(t)))));b(y,e=>{D(S)&&e(x)}),F(n),s((e,i)=>{I(n,`data-settings-target`,(D(t),l(()=>`diagnostic:${D(t).id}`))),I(n,`data-testid`,(D(t),l(()=>`settings-diagnostic-${D(t).id}`))),r=k(n,1,`svelte-1uha8ag`,null,r,{"diagnostic-degraded":D(t).status===`degraded`,"settings-target-active":D(It)===`diagnostic:${D(t).id}`}),z(o,(D(t),l(()=>D(t).id))),z(d,e),z(p,i)},[()=>(D(t),l(()=>gn(D(t)))),()=>(D(t),l(()=>D(t).billingDomainId??Z(`unknown`)))]),m(e,n)}),F(t),m(e,t)};b(_e,e=>{D(Et)&&e(Se)}),F(le);var Ce=g(le,2),we=_(Ce),Te=_(we),Ee=_(Te,!0);F(Te);var De=g(Te,2),Oe=_(De,!0);F(De),F(we);var ke=g(we,2),Ae=e=>{var t=Ye(),n=_(t,!0);F(t),s(e=>z(n,e),[()=>l(()=>Z(`retentionUnavailable`))]),m(e,t)},je=e=>{var t=ve(),n=_(t);F(t),s((e,t,r)=>z(n,`${D(Dt),l(()=>D(Dt).rawRetentionDays)??``}
20
+ ${e??``} · ${D(Dt),l(()=>D(Dt).rawObservations)??``}
21
+ ${t??``} · ${D(Dt),l(()=>D(Dt).dailyAggregates)??``}
22
+ ${r??``}`),[()=>l(()=>Z(`retentionDays`)),()=>l(()=>Z(`rawObservations`)),()=>l(()=>Z(`dailyAggregates`))]),m(e,t)};b(ke,e=>{D(pt)?e(Ae):D(Dt)&&e(je,1)});var Me=g(ke,2),Ne=e=>{var t=Ye(),n=_(t,!0);F(t),s(e=>z(n,e),[()=>l(()=>Z(`privacyActionUnavailable`))]),m(e,t)};b(Me,e=>{D(mt)&&e(Ne)});var Pe=g(Me,2),Fe=_(Pe),Ie=_(Fe,!0);F(Fe);var Le=g(Fe,2),Re=_(Le,!0);F(Le);var ze=g(Le,2),Be=_(ze);O(Be);var Ve=g(Be);F(ze);var He=g(ze,2),Ue=_(He);O(Ue);var We=g(Ue);F(He);var Ge=g(He,2),Ke=_(Ge,!0);F(Ge);var qe=g(Ge,2),Je=_(qe,!0);F(qe);var rt=g(qe,2),it=_(rt,!0);F(rt),F(Pe),F(Ce),F(T),F(r),ee(r,e=>a(zt,e),()=>D(zt)),F(t),s((e,t,n,r,i,a,o,s,c,l,u,d,p,m,g,_,v,b,x)=>{z(f,e),z(h,t),z(y,n),I(C,`aria-label`,r),z(M,i),z(P,a),z(W,o),z(re,s),z(fe,c),z(me,l),z(Ee,u),z(Oe,d),z(Ie,p),z(Re,m),z(Ve,` ${g??``}`),z(We,` ${_??``}`),Ge.disabled=D(jt),z(Ke,v),z(Je,b),rt.disabled=D(At),z(it,x)},[()=>l(()=>Z(`settings`)),()=>l(()=>Z(`settings`)),()=>l(()=>Z(`settingsSubtitle`)),()=>l(()=>Z(`closeSettings`)),()=>l(()=>Z(`connections`)),()=>l(()=>Z(`connectionsSubtitle`)),()=>l(()=>Z(`monitoring`)),()=>l(()=>Z(`monitoringSubtitle`)),()=>l(()=>Z(`diagnostics`)),()=>l(()=>Z(`diagnosticsSubtitle`)),()=>l(()=>Z(`privacy`)),()=>l(()=>Z(`privacySubtitle`)),()=>l(()=>Z(`exportJson`)),()=>l(()=>Z(`exportCsv`)),()=>l(()=>Z(`includeAccountIdentifiers`)),()=>l(()=>Z(`deleteProductSecrets`)),()=>(D(jt),l(()=>D(jt)?Z(`hardRebuilding`):Z(`hardRebuild`))),()=>l(()=>Z(`hardRebuildWarning`)),()=>(D(At),l(()=>D(At)?Z(`clearing`):Z(`clearData`)))]),n(`click`,C,ln),n(`click`,Fe,()=>rn(`json`)),n(`click`,Le,()=>rn(`csv`)),x(Be,()=>D(kt),e=>a(kt,e)),x(Ue,()=>D(Ot),e=>a(Ot,e)),n(`click`,Ge,tn),n(`click`,rt,an),m(e,t)};b(Rt,e=>{D(Ft)&&e(Vt)});var Ht=g(Rt,2),Wt=e=>{let i=N(()=>D(Bt));var c=dt(),u=_(c),f=_(u),p=_(f),h=_(p),v=_(h);F(h);var y=g(h,2),x=e=>{var t=Qe(),n=_(t,!0);F(t),s(e=>z(n,e),[()=>l(()=>Z(`separateFromHeadline`))]),m(e,t)};b(y,e=>{d(D(i)),l(()=>D(i).includedInHeadline===!1)&&e(x)});var S=g(y,2),C=_(S);F(S),F(p);var w=g(p,2);F(f);var T=g(f,2),E=_(T),O=_(E),k=_(O),A=g(k),j=_(A,!0);F(A),F(O);var M=g(O,2),P=_(M),R=g(P),B=_(R),te=g(B),V=e=>{var t=r();s(e=>z(t,`· ${e??``}`),[()=>l(()=>Z(`coveragePartial`))]),m(e,t)};b(te,e=>{d(D(i)),l(()=>D(i).tokenEvidence.sourceReportedObservationCount>0&&D(i).tokenEvidence.sourceReportedObservationCount<D(i).tokenEvidence.observationCount)&&e(V)}),F(R),F(M);var H=g(M,2),U=_(H),ne=g(U),W=_(ne,!0);F(ne),F(H);var G=g(H,2),re=_(G),ie=g(re),ae=_(ie,!0);F(ie),F(G),F(E);var K=g(E,2),oe=_(K);F(K);var se=g(K,2),q=_(se),ce=_(q),le=_(ce,!0);F(ce);var ue=g(ce,2),de=_(ue,!0);F(ue),F(q);var fe=g(q,2),pe=_(fe),me=_(pe,!0);F(pe);var he=g(pe,2),ge=_(he,!0);F(he),F(fe);var _e=g(fe,2),ye=_(_e),be=_(ye,!0);F(ye);var xe=g(ye,2),Se=_(xe,!0);F(xe),F(_e);var Ce=g(_e,2),we=_(Ce),Te=_(we,!0);F(we);var Ee=g(we,2),De=_(Ee,!0);F(Ee),F(Ce);var Oe=g(Ce,2),ke=_(Oe),Ae=_(ke,!0);F(ke);var je=g(ke,2),Me=_(je,!0);F(je),F(Oe),F(se);var Ne=g(se,2),Pe=_(Ne),Fe=_(Pe,!0);F(Pe);var Ie=g(Pe,2);L(Ie,5,()=>(d(D(i)),l(()=>D(i).observations)),e=>e.id,(e,t)=>{var n=rt(),r=_(n),i=_(r);F(r);var a=g(r,2),o=_(a,!0);F(a);var c=g(a,2),u=_(c);F(c);var d=g(c,2),f=_(d);F(d);var p=g(d,2),h=_(p);F(p);var v=g(p,2),y=_(v);F(v);var b=g(v,2),x=_(b);F(b);var S=g(b,2),C=_(S);F(S);var w=g(S,2),T=_(w);F(w),F(n),s((e,t,n,r,a,s,c,l,d,p,m,g,_,v,b,S,w)=>{z(i,`${e??``} ·
23
+ ${t??``}`),z(o,n),z(u,`${r??``} ${a??``}`),z(f,`${s??``}
24
+ ${c??``}`),z(h,`${l??``} ${d??``}`),z(y,`${p??``} ${m??``}`),z(x,`${g??``} ${_??``}`),z(C,`${v??``}
25
+ ${b??``}`),z(T,`${S??``} · ${w??``}`)},[()=>(D(t),l(()=>Sn(D(t).authority))),()=>(D(t),l(()=>wn(D(t).timePrecision))),()=>(D(t),l(()=>$(D(t).observedAt))),()=>l(()=>Z(`scope`)),()=>(D(t),l(()=>Tn(D(t).usageScope))),()=>l(()=>Z(`aggregationTemporality`)),()=>(D(t),l(()=>En(D(t).aggregationTemporality))),()=>l(()=>Z(`recordedTotal`)),()=>(D(t),l(()=>Q(D(t).recordedTokens))),()=>l(()=>Z(`classified`)),()=>(D(t),l(()=>Q(D(t).classifiedTokens))),()=>l(()=>Z(`unclassified`)),()=>(D(t),l(()=>Q(D(t).unclassifiedTokens))),()=>l(()=>Z(`sourceReportedTotal`)),()=>(D(t),l(()=>D(t).sourceReportedTotalTokens===null?Z(`notAvailable`):Q(D(t).sourceReportedTotalTokens))),()=>l(()=>Z(`semantics`)),()=>(D(t),l(()=>Dn(D(t).tokenSemantics)))]),m(e,n)}),F(Ie),F(Ne);var Le=g(Ne,2),Re=_(Le),ze=_(Re,!0);F(Re);var Be=g(Re,2),Ve=e=>{var t=it(),n=_(t,!0);F(t),s(e=>z(n,e),[()=>l(()=>Z(`noPriceEvidence`))]),m(e,t)},He=e=>{var n=t(),r=o(n);L(r,1,()=>(d(D(i)),l(()=>D(i).priceEvidence)),e=>e.id,(e,t)=>{var n=ot(),r=_(n),i=_(r),a=_(i,!0);F(i);var o=g(i,2),c=_(o);F(o),F(r);var u=g(r,2);L(u,1,()=>(D(t),l(()=>D(t).lineItems)),e=>`${D(t).id}:${e.tokenKind}`,(e,n)=>{var r=at(),i=_(r),a=g(i),o=_(a);F(a),F(r),s((e,t,n,r)=>{z(i,`${e??``} · ${t??``} ·
26
+ ${n??``} `),z(o,`${r??``} / 1M`)},[()=>(D(n),l(()=>or(D(n).tokenKind))),()=>(D(n),l(()=>Q(D(n).tokens))),()=>(D(n),D(t),l(()=>Wn(D(n).amount,D(t).currency))),()=>(D(n),D(t),l(()=>Wn(D(n).ratePerMillion,D(t).currency)))]),m(e,r)});var d=g(u,2),f=e=>{var n=ve(),r=_(n);F(n),s((e,n)=>z(r,`${D(t),l(()=>D(t).priceSnapshot.version)??``} · ${D(t),l(()=>D(t).priceSnapshot.source)??``} ·
27
+ ${e??``}
28
+ ${n??``}`),[()=>l(()=>Z(`priceEffective`)),()=>(D(t),l(()=>$(D(t).priceSnapshot.effectiveAt)))]),m(e,n)};b(d,e=>{D(t),l(()=>D(t).priceSnapshot)&&e(f)});var p=g(d,2),h=e=>{var n=ve(),r=_(n);F(n),s((e,t)=>z(r,`${e??``}: ${t??``}`),[()=>l(()=>Z(`calculatedAt`)),()=>(D(t),l(()=>$(D(t).calculatedAt)))]),m(e,n)};b(p,e=>{D(t),l(()=>D(t).calculatedAt)&&e(h)}),F(n),s((e,t,n,r)=>{z(a,e),z(c,`${t??``} · ${n??``} · ${r??``}`)},[()=>(D(t),l(()=>Wn(D(t).amount,D(t).currency))),()=>(D(t),l(()=>D(t).kind===`reported-estimate`?Z(`providerReportedEstimate`):Z(`apiRetailEquivalent`))),()=>(D(t),l(()=>Sn(D(t).authority))),()=>(D(t),l(()=>$(D(t).observedAt??null)))]),m(e,n)}),m(e,n)};b(Be,e=>{d(D(i)),l(()=>D(i).priceEvidence.length===0)?e(Ve):e(He,-1)}),F(Le);var Ue=g(Le,2),We=_(Ue),Ge=_(We,!0);F(We);var Ke=g(We,2),qe=_(Ke),Je=_(qe),Ye=_(Je),Xe=_(Ye,!0);F(Ye);var Ze=g(Ye),$e=_(Ze,!0);F(Ze);var et=g(Ze),tt=_(et,!0);F(et);var nt=g(et),ft=_(nt,!0);F(nt),F(Je),F(qe);var pt=g(qe);L(pt,5,()=>(d(D(i)),l(()=>D(i).trend)),e=>e.start,(e,t)=>{let n=N(()=>(D(t),l(()=>D(t).retailEquivalent.status===`available`?D(t).retailEquivalent:D(t).reportedEstimate??D(t).retailEquivalent))),r=N(()=>(D(t),l(()=>D(t).retailEquivalent.status!==`available`&&D(t).reportedEstimate?.status===`available`)));var i=ut(),a=_(i),c=_(a,!0);F(a);var u=g(a),f=e=>{var t=st(),n=_(t,!0);F(t),s(e=>z(n,e),[()=>l(()=>Z(`gap`))]),m(e,t)},p=e=>{var i=lt(),a=o(i),c=_(a,!0);F(a);var u=g(a,2),f=_(u,!0);F(u);var p=g(u,2),h=_(p),v=g(h),y=e=>{var t=ct(),i=g(o(t));s((e,t,n)=>z(i,`${e??``} · ${t??``} ·
29
+ ${n??``}`),[()=>(d(D(r)),l(()=>D(r)?Z(`providerReportedEstimate`):Z(`apiRetailEquivalent`))),()=>(d(D(n)),l(()=>nr(D(n).authorities))),()=>(d(D(n)),l(()=>$(D(n).observedAt??null)))]),m(e,t)};b(v,e=>{d(D(n)),l(()=>D(n).status===`available`)&&e(y)}),F(p),s((e,t,n,r)=>{z(c,e),z(f,t),z(h,`${n??``} ·
30
+ ${r??``} `)},[()=>(D(t),l(()=>Q(D(t).tokenTotals.total))),()=>(d(D(n)),l(()=>D(n).status===`available`?Wn(D(n).amount,D(n).comparisonCurrency):Z(`notAvailable`))),()=>(D(t),l(()=>nr(D(t).authorities))),()=>(D(t),l(()=>$(D(t).lastObservedAt??null)))]),m(e,i)};b(u,e=>{D(t),l(()=>D(t).gap)?e(f):e(p,-1)}),F(i),s(()=>z(c,(D(t),l(()=>D(t).label)))),m(e,i)}),F(pt),F(Ke),F(Ue),F(T),F(u),ee(u,e=>a(Ct,e),()=>D(Ct)),F(c),s((e,t,n,r,a,o,s,c,f,p,m,h,g,_,y,b,x,S,T,E,O,A,M,N,ee,F,L,R,te,V,H,ne)=>{I(u,`aria-label`,e),z(v,`${d(D(i)),l(()=>D(i).providerDisplayName)??``} · ${d(D(i)),l(()=>D(i).billingDomainDisplayName)??``}`),z(C,`${t??``}: ${d(D(i)),l(()=>D(i).model)??``}`),I(w,`aria-label`,n),z(k,`${r??``} `),z(j,a),z(P,`${o??``} `),z(B,`${s??``} `),z(U,`${c??``} `),z(W,f),z(re,`${p??``} `),z(ae,m),z(oe,`${h??``}: ${g??``} ·
31
+ ${_??``}`),z(le,y),z(de,b),z(me,x),z(ge,S),z(be,T),z(Se,E),z(Te,O),z(De,A),z(Ae,M),z(Me,N),z(Fe,ee),z(ze,F),z(Ge,L),I(Ke,`aria-label`,R),z(Xe,te),z($e,V),z(tt,H),z(ft,ne)},[()=>(d(D(i)),l(()=>`${Z(`modelDetail`)}: ${D(i).model}`)),()=>l(()=>Z(`modelDetail`)),()=>l(()=>Z(`closeModelDetail`)),()=>l(()=>Z(`recordedTotal`)),()=>(d(D(i)),l(()=>Q(D(i).tokenTotals.total))),()=>l(()=>Z(`sourceReportedTotal`)),()=>(d(D(i)),l(()=>D(i).tokenEvidence.sourceReportedObservationCount===0?Z(`notAvailable`):Q(D(i).tokenEvidence.sourceReportedTokens))),()=>l(()=>Z(`totalDerivation`)),()=>(d(D(i)),l(()=>D(i).tokenEvidence.totalDerivations.join(` + `)||Z(`unknown`))),()=>l(()=>Z(`pricingCoverage`)),()=>(d(D(i)),l(()=>bn(D(i).retailEquivalent.pricingCoverage))),()=>l(()=>Z(`source`)),()=>(d(D(i)),l(()=>nr(D(i).authorities))),()=>(d(D(i)),l(()=>$(D(i).lastObservedAt))),()=>l(()=>Z(`input`)),()=>(d(D(i)),l(()=>Q(D(i).tokenTotals.input))),()=>l(()=>Z(`output`)),()=>(d(D(i)),l(()=>Q(D(i).tokenTotals.output))),()=>l(()=>Z(`reasoning`)),()=>(d(D(i)),l(()=>Q(D(i).tokenTotals.reasoning))),()=>l(()=>Z(`cacheRead`)),()=>(d(D(i)),l(()=>Q(D(i).tokenTotals.cacheRead))),()=>l(()=>Z(`cacheWrite`)),()=>(d(D(i)),l(()=>Q(D(i).tokenTotals.cacheWrite))),()=>l(()=>Z(`providerEvidence`)),()=>l(()=>Z(`priceLineItems`)),()=>l(()=>Z(`modelTrend`)),()=>l(()=>Z(`modelTrend`)),()=>l(()=>Z(`interval`)),()=>l(()=>Z(`tokens`)),()=>l(()=>Z(`cost`)),()=>l(()=>Z(`providerEvidence`))]),n(`click`,w,ar),m(e,c)};b(Ht,e=>{D(Bt)&&e(Wt)}),s((e,t,n,r,i,a,o)=>{u.inert=D(Ft)||D(Bt)!==null,I(p,`alt`,e),z(v,t),z(T,n),z(A,D(R)===`en`?`中文`:`EN`),j.disabled=D(W),B=k(P,1,`svelte-1uha8ag`,null,B,{spin:D(W)}),z(te,` ${r??``}`),I(V,`aria-label`,i),I(K,`aria-selected`,D(_t)===`agents`),I(K,`tabindex`,D(_t)===`agents`?0:-1),z(se,a),I(q,`aria-selected`,D(_t)===`models`),I(q,`tabindex`,D(_t)===`models`?0:-1),z(ce,o)},[()=>l(()=>Z(`bannerAlt`)),()=>l(()=>Z(`title`)),()=>l(()=>Z(`settings`)),()=>(D(W),l(()=>D(W)?Z(`refreshing`):Z(`refresh`))),()=>l(()=>Z(`mainViews`)),()=>l(()=>Z(`agentUsageTab`)),()=>l(()=>Z(`tokenModelCostsTab`))]),n(`click`,C,()=>cn()),n(`click`,E,Ut),n(`click`,j,Gt),n(`click`,K,()=>a(_t,`agents`)),n(`keydown`,K,fn),n(`click`,q,()=>a(_t,`models`)),n(`keydown`,q,fn),m(e,i)}),m(h,sr),y()}export{pt as component};
@@ -0,0 +1 @@
1
+ {"version":"1787930424343"}
@@ -0,0 +1,27 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1600 420" role="img" aria-labelledby="title desc">
2
+ <title id="title">Agent Usage</title>
3
+ <desc id="desc">Agent Usage with Codex, Claude Code, OpenCode Go, Grok, and room for more agents.</desc>
4
+ <defs>
5
+ <linearGradient id="background" x1="40" y1="10" x2="1560" y2="410" gradientUnits="userSpaceOnUse"><stop stop-color="#111a34"/><stop offset=".58" stop-color="#090e1a"/><stop offset="1" stop-color="#111b2f"/></linearGradient>
6
+ <radialGradient id="glow" cx="0" cy="0" r="1" gradientTransform="translate(1280 115) rotate(145) scale(520 350)" gradientUnits="userSpaceOnUse"><stop stop-color="#7184ff" stop-opacity=".28"/><stop offset="1" stop-color="#7184ff" stop-opacity="0"/></radialGradient>
7
+ <linearGradient id="meter" x1="42" y1="94" x2="88" y2="34" gradientUnits="userSpaceOnUse"><stop stop-color="#7c8dff"/><stop offset="1" stop-color="#69e4c6"/></linearGradient>
8
+ <filter id="shadow" x="-20%" y="-20%" width="140%" height="160%"><feDropShadow dx="0" dy="18" stdDeviation="18" flood-color="#02050c" flood-opacity=".34"/></filter>
9
+ </defs>
10
+ <rect width="1600" height="420" rx="36" fill="url(#background)"/><rect width="1600" height="420" rx="36" fill="url(#glow)"/>
11
+ <g opacity=".12" stroke="#8492bb"><path d="M0 330H1600M0 250H1600M0 170H1600M0 90H1600"/><path d="M1040 0V420M1180 0V420M1320 0V420M1460 0V420"/></g>
12
+ <g transform="translate(86 102)">
13
+ <rect width="104" height="104" rx="26" fill="#172347" stroke="#8190c4" stroke-opacity=".45"/><circle cx="52" cy="52" r="36" fill="none" stroke="#7180ad" stroke-opacity=".5" stroke-width="2.5" stroke-dasharray="6 7"/>
14
+ <circle cx="52" cy="16" r="5.5" fill="#f19a6b"/><circle cx="88" cy="52" r="5.5" fill="#8d9cff"/><circle cx="52" cy="88" r="5.5" fill="#71d8b8"/><circle cx="16" cy="52" r="5.5" fill="#e4e8f3"/>
15
+ <rect x="32" y="58" width="8" height="22" rx="4" fill="url(#meter)" opacity=".72"/><rect x="48" y="44" width="8" height="36" rx="4" fill="url(#meter)" opacity=".88"/><rect x="64" y="30" width="8" height="50" rx="4" fill="url(#meter)"/>
16
+ </g>
17
+ <text x="222" y="164" fill="#f4f6ff" font-family="Inter,ui-sans-serif,system-ui,sans-serif" font-size="68" font-weight="700" letter-spacing="-3">Agent Usage</text>
18
+ <text x="90" y="256" fill="#9ca8bf" font-family="Inter,ui-sans-serif,system-ui,sans-serif" font-size="23" font-weight="500">Quota · tokens · equivalent API cost</text>
19
+ <path d="M630 210H1510" stroke="#7786b7" stroke-opacity=".34" stroke-width="2" stroke-dasharray="7 10"/>
20
+ <g id="supported-agents" filter="url(#shadow)" font-family="Inter,ui-sans-serif,system-ui,sans-serif" font-size="16" font-weight="650" text-anchor="middle">
21
+ <g transform="translate(650 115)"><rect width="160" height="190" rx="24" fill="#131a29" stroke="#34415f"/><circle cx="80" cy="76" r="48" fill="#f5f5f3"/><image data-provider-asset="openai.svg" href="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNzIxIiBoZWlnaHQ9IjcyMSIgdmlld0JveD0iMCAwIDcyMSA3MjEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj4KICAgIDxwYXRoIGQ9Ik0zMDQuMjQ2IDI5NC42MTF2LTQ1LjU4M2MwLTMuODM5IDEuNDQxLTYuNzE5IDQuNzk4LTguNjM2bDkxLjY0OC01Mi43OGMxMi40NzUtNy4xOTcgMjcuMzUtMTAuNTU0IDQyLjcwMi0xMC41NTQgNTcuNTc3IDAgOTQuMDQ2IDQ0LjYyNCA5NC4wNDYgOTIuMTI0IDAgMy4zNTggMCA3LjE5Ny0uNDgxIDExLjAzNmwtOTUuMDA1LTU1LjY2Yy01Ljc1Ny0zLjM1Ny0xMS41MTctMy4zNTctMTcuMjc0IDBsLTEyMC40MzQgNzAuMDUzWk01MTguMjQ1IDQ3Mi4xNDVWMzYzLjIyNGMwLTYuNzE5LTIuODgxLTExLjUxNy04LjYzNy0xNC44NzVsLTEyMC40MzQtNzAuMDUzIDM5LjM0NS0yMi41NTNjMy4zNTgtMS45MTcgNi4yMzgtMS45MTcgOS41OTYgMGw5MS42NDcgNTIuNzhjMjYuMzkyIDE1LjM1NiA0NC4xNDMgNDcuOTgyIDQ0LjE0MyA3OS42NDggMCAzNi40NjUtMjEuNTkgNzAuMDU0LTU1LjY2IDgzLjk3di4wMDRaTTI3NS45MzcgMzc2LjE4MmwtMzkuMzQ1LTIzLjAzYy0zLjM1Ny0xLjkxNy00Ljc5OC00Ljc5OC00Ljc5OC04LjYzN1YyMzguOTU2YzAtNTEuMzM5IDM5LjM0NS05MC4yMDcgOTIuNjA2LTkwLjIwNyAyMC4xNTUgMCAzOC44NjQgNi43MTkgNTQuNzAyIDE4LjcxNGwtOTQuNTI0IDU0LjcwMWMtNS43NTYgMy4zNTctOC42MzYgOC4xNTUtOC42MzYgMTQuODc1djEzOS4xNDdsLS4wMDUtLjAwNFpNMzYwLjYyNiA0MjUuMTIybC01Ni4zOC0zMS42Njd2LTY3LjE3Mmw1Ni4zOC0zMS42NjcgNTYuMzc2IDMxLjY2N3Y2Ny4xNzJsLTU2LjM3NiAzMS42NjdaTTM5Ni44NTIgNTcwLjk4OWMtMjAuMTU0IDAtMzguODYzLTYuNzE5LTU0LjcwMS0xOC43MTNsOTQuNTIzLTU0LjcwMmM1Ljc1Ny0zLjM1NyA4LjYzNy04LjE1NSA4LjYzNy0xNC44NzVWMzQzLjU1MmwzOS44MjcgMjMuMDNjMy4zNTcgMS45MTcgNC43OTggNC43OTcgNC43OTggOC42Mzd2MTA1LjU1OWMwIDUxLjMzOS0zOS44MjcgOTAuMjA3LTkzLjA4NCA5MC4yMDd2LjAwNFpNMjgzLjEzNCA0NjMuOTlsLTkxLjY0OC01Mi43NzljLTI2LjM5Mi0xNS4zNTctNDQuMTQzLTQ3Ljk4Mi00NC4xNDMtNzkuNjQ5IDAtMzYuOTQ2IDIyLjA3Mi03MC4wNTMgNTYuMTM3LTgzLjk2OXYxMDkuMzk4YzAgNi43MTkgMi44ODEgMTEuNTE3IDguNjM3IDE0Ljg3NWwxMTkuOTU3IDY5LjU3MS0zOS4zNDUgMjIuNTUzYy0zLjM1NyAxLjkxNy02LjIzOCAxLjkxNy05LjU5NSAwWk0yNzcuODU5IDU0Mi42OGMtNTQuMjIgMC05NC4wNDYtNDAuNzg1LTk0LjA0Ni05MS4xNjYgMC0zLjgzOS40ODEtNy42NzguOTU4LTExLjUxN2w5NC41MjQgNTQuNzAxYzUuNzU2IDMuMzU4IDExLjUxNyAzLjM1OCAxNy4yNzMgMGwxMjAuNDM0LTY5LjU3MXY0NS41ODNjMCAzLjgzOS0xLjQ0IDYuNzE5LTQuNzk4IDguNjM2bC05MS42NDcgNTIuNzhjLTEyLjQ3NiA3LjE5Ny0yNy4zNTEgMTAuNTU0LTQyLjcwMyAxMC41NTRoLjAwNVpNMzk2Ljg1MiA1OTkuNzc2YzU4LjA1OSAwIDEwNi41MTgtNDEuMjYzIDExNy41NTgtOTUuOTY0IDUzLjczOS0xMy45MTYgODguMjg2LTY0LjI5NyA4OC4yODYtMTE1LjYzNiAwLTMzLjU4OS0xNC4zOTMtNjYuMjE0LTQwLjMwNC04OS43MjYgMi4zOTktMTAuMDc3IDMuODM5LTIwLjE1NCAzLjgzOS0zMC4yMjYgMC02OC42MTMtNTUuNjYtMTE5Ljk1Ny0xMTkuOTU3LTExOS45NTctMTIuOTUyIDAtMjUuNDI4IDEuOTE3LTM3LjkwNCA2LjIzOC0yMS41OTUtMjEuMTEzLTUxLjM0NC0zNC41NDctODMuOTctMzQuNTQ3LTU4LjA1OCAwLTEwNi41MTcgNDEuMjYyLTExNy41NTcgOTUuOTYzLTUzLjczOSAxMy45MTYtODguMjg2IDY0LjI5Ny04OC4yODYgMTE1LjYzNiAwIDMzLjU4OSAxNC4zOTMgNjYuMjE0IDQwLjMwNCA4OS43MjYtMi4zOTkgMTAuMDc3LTMuODM5IDIwLjE1NC0zLjgzOSAzMC4yMjcgMCA2OC42MTMgNTUuNjYgMTE5Ljk1NiAxMTkuOTU2IDExOS45NTYgMTIuOTUzIDAgMjUuNDI5LTEuOTE3IDM3LjkwNS02LjIzOCAyMS41OSAyMS4xMTMgNTEuMzM5IDM0LjU0OCA4My45NjkgMzQuNTQ4WiIgZmlsbD0iY3VycmVudENvbG9yIi8+CiAgPC9nPgogIDxkZWZzPjxjbGlwUGF0aCBpZD0iYSI+PHJlY3Qgd2lkdGg9IjcyMSIgaGVpZ2h0PSI3MjEiLz48L2NsaXBQYXRoPjwvZGVmcz4KPC9zdmc+Cg==" x="46" y="42" width="68" height="68"/><text x="80" y="157" fill="#edf0f7">Codex</text></g>
22
+ <g transform="translate(828 115)"><rect width="160" height="190" rx="24" fill="#131a29" stroke="#34415f"/><image data-provider-asset="claude.svg" href="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDEyOCAxMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHJlY3Qgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiIGZpbGw9IiNEOTc3NTciLz4KICA8cGF0aCBkPSJtMzUuMDE2IDc5LjY5NCAxOC40MTYtMTAuMzI3LjMwNC0uOTA1LS4zMDQtLjUwM2gtLjkxbC0zLjA4Ny0uMTg4LTEwLjUyMy0uMjgyLTkuMTA4LS4zNzUtOC44NTQtLjQ3LTIuMjI2LS40NjktMi4wNzQtMi43Ny4yMDItMS4zNjEgMS44NzItMS4yNjcgMi42ODIuMjM0IDE1LjE4NyAxLjQwOCA5LjU2Mi45ODZoMS41MThsLjIwMi0uNjEtLjUwNi0uMzc2LS40MDQtLjM3NS0xOS4xNzYtMTIuODE1LTUuMjExLTMuODAyLTIuNzgzLTEuOTI1LTEuNDE2LTEuNzgzLS42MDctMy45NDMgMi41My0yLjgxNyAzLjQ0LjIzNS44Ni4yMzQgMTAuOTI5IDguNDUgOS43MTQgNy4xMzYgMS40MTcgMS4xNzMuNTctLjM4NS4wODctLjI3Mi0uNjU4LTEuMDgtMTAuODc4LTE5LjI0NS0yLjUzLTQuMDM3LS42NTctMi4zOTRjLS4yNTUtMS4wMDUtLjQwNS0xLjgzNi0uNDA1LTIuODY0bDIuODg0LTMuOTQzIDEuNjE5LS41MTYgMy44OTYuNTE2IDEuNjE5IDEuNDA5IDYuMzI0IDE0LjIyMyA2LjA3MSAxMS44MjkgMS43NzEgMy41Mi45NjEgMy4yNC4zNTUuOTg1aC42MDd2LS41NjNsMi45MzQtMjUuMzQ4LjMwNC0yLjk1NyAxLjQ2Ny0zLjU2OCAyLjkzNC0xLjkyNCAyLjI3NyAxLjA4IDEuODcyIDIuNjc1LS4yNTMgMS43MzctMy4yODkgMTguNTQyLTEuNDE3IDcuNjA0aC44MWwuOTYxLS45ODYgMTAuMjcxLTEzLjE0MyAyLjgzMy0zLjE5MiAzLjM0LTMuNTIgMi4xMjQtMS42OWg0LjA0OGwyLjkzNCA0LjQxMi0xLjMxNSA0LjU1NC03LjU4OSA5LjcxNi00LjkzMyA2LjYxLTMuMDYxIDUuMzE0LjI3NS40MzguNzM3LS4wNjMgMjQuMzM2LTQuNjk0IDcuMTg0LTEuMjIgMy4yMzggMS41MDIuMzU0IDEuNTQ5LTEuMjY1IDMuMTQ1LTcuNjkgMS44NzgtMjIuNDE3IDQuOTg4LS4xNDguMTIuMTc1LjI2IDYuMDQ4LjU0NyAyLjU4LjE0MWg2LjMyNGwxMS43ODguODkyIDMuMDg2IDIuMDE4IDEuODIyIDIuNDg4LS4zMDQgMS45MjUtNC43NTYgMi4zOTQtNi4zNzQtMS41MDItMTQuOTI1LTMuNTY4LTUuMTEtMS4yNjdoLS43MDh2LjQyMmw0LjI1IDQuMTc4IDE3LjYwNyAxNi4xNDguNTA2IDIuMjUzLTEuMjY1IDEuNzg0LTEuMzE1LS4xODgtOC42MDEtNi40NzgtMTAuODI3LTkuMjQ3aC0uNTA2di42NTdsMS43MiAyLjUzNSA5LjE1OCAxMy43NTMuNDU1IDQuMjI1LS42NTggMS4zNjEtMi4zNzguODQ1LTIuNTgtLjQ2OS01LjQxNC03LjU1OC01LjUxNC04LjQ0OS00LjQ1My03LjYwNC0uNTM3LjMzOS0yLjY1IDI4LjI5NC0xLjIxNCAxLjQ1Ni0yLjgzMyAxLjA3OS0yLjM3OC0xLjc4NC0xLjI2NS0yLjkxIDQuOTk3LTI2LjY2Mi42OC0yLjQ3OC0uMDYtLjE2Ni0uNTQzLjA5Mi0xNC4wOTIgMTkuMTY5LTYuNzI5IDcuMTgyLTEuNjE5LjY1Ny0yLjc4My0xLjQ1NS4yNTMtMi41ODIgMS41NjgtMi4zIDE0LjkyNS0xOS4xOTkgMy42MTktNC4yMy0uMDM1LS42MTItLjItLjAxNy0yNC43MzUgMTYuMTI1LTQuNDAyLjU2My0xLjkyMi0xLjc4NC4yNTMtMi45MS45MS0uOTM5IDcuNDM4LTUuMTE2WiIgZmlsbD0iI0ZBRjlGNSIvPgo8L3N2Zz4K" x="32" y="28" width="96" height="96"/><text x="80" y="157" fill="#edf0f7">Claude Code</text></g>
23
+ <g transform="translate(1006 115)"><rect width="160" height="190" rx="24" fill="#131a29" stroke="#34415f"/><rect x="32" y="28" width="96" height="96" rx="16" fill="#f5f5f3"/><image data-provider-asset="opencode-light.svg" href="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDMwMCAzMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzAsIDApIj48ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTQwMV84NjI3NCkiPjxtYXNrIGlkPSJtYXNrMF8xNDAxXzg2Mjc0IiBzdHlsZT0ibWFzay10eXBlOmx1bWluYW5jZSIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeD0iMCIgeT0iMCIgd2lkdGg9IjI0MCIgaGVpZ2h0PSIzMDAiPjxwYXRoIGQ9Ik0yNDAgMEgwVjMwMEgyNDBWMFoiIGZpbGw9IndoaXRlIi8+PC9tYXNrPjxnIG1hc2s9InVybCgjbWFzazBfMTQwMV84NjI3NCkiPjxwYXRoIGQ9Ik0xODAgMjQwSDYwVjEyMEgxODBWMjQwWiIgZmlsbD0iI0NGQ0VDRCIvPjxwYXRoIGQ9Ik0xODAgNjBINjBWMjQwSDE4MFY2MFpNMjQwIDMwMEgwVjBIMjQwVjMwMFoiIGZpbGw9IiMyMTFFMUUiLz48L2c+PC9nPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImNsaXAwXzE0MDFfODYyNzQiPjxyZWN0IHdpZHRoPSIyNDAiIGhlaWdodD0iMzAwIiBmaWxsPSJ3aGl0ZSIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPgo=" x="37" y="33" width="86" height="86"/><text x="80" y="157" fill="#edf0f7">OpenCode Go</text></g>
24
+ <g transform="translate(1184 115)"><rect width="160" height="190" rx="24" fill="#131a29" stroke="#34415f"/><circle cx="80" cy="76" r="48" fill="#0a0a0a"/><image data-provider-asset="grok-light.svg" href="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMzk1LjQ3OSA2MzMuODI4TDczNS45MSAzODEuMTA1Qzc1Mi41OTkgMzY4LjcxNSA3NzYuNDU0IDM3My41NDggNzg0LjQwNiAzOTIuNzkyQzgyNi4yNiA0OTQuMjg1IDgwNy41NjEgNjE2LjI1MyA3MjQuMjg4IDY5OS45OTZDNjQxLjAxNiA3ODMuNzM5IDUyNS4xNTEgODAyLjEwNCA0MTkuMjQ3IDc2MC4yNzdMMzAzLjU1NiA4MTQuMTQzQzQ2OS40OSA5MjguMjAyIDY3MC45ODcgODk5Ljk5NSA3OTYuOTAxIDc3My4yODJDODk2Ljc3NiA2NzIuODQzIDkyNy43MDggNTM1LjkzNyA4OTguNzg1IDQxMi40NzZMODk5LjA0NyA0MTIuNzM5Qzg1Ny4xMDUgMjMxLjM3IDkwOS4zNTggMTU4Ljg3NCAxMDE2LjQgMTAuNjMyNkMxMDE4LjkzIDcuMTE3NzEgMTAyMS40NyAzLjYwMjc5IDEwMjQgMEw4ODMuMTQ0IDE0MS42NTFWMTQxLjIxMkwzOTUuMzkyIDYzMy45MTYiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0zMjUuMjI2IDY5NS4yNTFDMjA2LjEyOCA1ODAuODQgMjI2LjY2MiA0MDMuNzc2IDMyOC4yODUgMzAxLjY2OEM0MDMuNDMxIDIyNi4wOTcgNTI2LjU0OSAxOTUuMjU0IDYzNC4wMjYgMjQwLjU5Nkw3NDkuNDU0IDE4Ni45OTRDNzI4LjY1NyAxNzEuODggNzAyLjAwNyAxNTUuNjIzIDY3MS40MjQgMTQ0LjJDNTMzLjE5IDg2Ljk5NDIgMzY3LjY5MyAxMTUuNDY1IDI1NS4zMjMgMjI4LjM4MkMxNDcuMjM0IDMzNy4wODEgMTEzLjI0NCA1MDQuMjE1IDE3MS42MTMgNjQ2LjgzM0MyMTUuMjE2IDc1My40MjMgMTQzLjczOSA4MjguODE4IDcxLjczODUgOTA0LjkxNkM0Ni4yMjM3IDkzMS44OTMgMjAuNjIxNiA5NTguODcgMCA5ODcuNDI5TDMyNS4xMzkgNjk1LjMzOSIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==" x="47" y="43" width="66" height="66"/><text x="80" y="157" fill="#edf0f7">Grok</text></g>
25
+ <g id="future-providers" transform="translate(1362 115)"><rect width="148" height="190" rx="24" fill="#111827" fill-opacity=".62" stroke="#7281b3" stroke-opacity=".65" stroke-width="2" stroke-dasharray="8 9"/><circle cx="74" cy="76" r="46" fill="none" stroke="#7281b3" stroke-opacity=".6" stroke-width="2" stroke-dasharray="5 7"/><path d="M74 55V97M53 76H95" stroke="#8ea0dd" stroke-width="6" stroke-linecap="round"/><circle cx="62" cy="154" r="3.5" fill="#7184ff"/><circle cx="74" cy="154" r="3.5" fill="#69e4c6"/><circle cx="86" cy="154" r="3.5" fill="#f19a6b"/></g>
26
+ </g>
27
+ </svg>
@@ -0,0 +1,23 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-labelledby="title desc">
2
+ <title id="title">Agent Usage logo</title>
3
+ <desc id="desc">Four agent nodes orbit a rising usage meter.</desc>
4
+ <defs>
5
+ <linearGradient id="bg" x1="12" y1="8" x2="116" y2="120" gradientUnits="userSpaceOnUse">
6
+ <stop stop-color="#18264d"/>
7
+ <stop offset="1" stop-color="#090d18"/>
8
+ </linearGradient>
9
+ <linearGradient id="meter" x1="42" y1="94" x2="88" y2="34" gradientUnits="userSpaceOnUse">
10
+ <stop stop-color="#7c8dff"/>
11
+ <stop offset="1" stop-color="#69e4c6"/>
12
+ </linearGradient>
13
+ </defs>
14
+ <rect x="4" y="4" width="120" height="120" rx="30" fill="url(#bg)"/>
15
+ <circle cx="64" cy="64" r="43" fill="none" stroke="#7180ad" stroke-opacity=".38" stroke-width="3" stroke-dasharray="7 8"/>
16
+ <circle cx="64" cy="21" r="7" fill="#f19a6b"/>
17
+ <circle cx="107" cy="64" r="7" fill="#8d9cff"/>
18
+ <circle cx="64" cy="107" r="7" fill="#71d8b8"/>
19
+ <circle cx="21" cy="64" r="7" fill="#e4e8f3"/>
20
+ <rect x="39" y="70" width="10" height="24" rx="5" fill="url(#meter)" opacity=".72"/>
21
+ <rect x="59" y="53" width="10" height="41" rx="5" fill="url(#meter)" opacity=".88"/>
22
+ <rect x="79" y="34" width="10" height="60" rx="5" fill="url(#meter)"/>
23
+ </svg>
@@ -0,0 +1,32 @@
1
+ # Provider brand assets
2
+
3
+ Reviewed Provider SVGs are bundled locally so the dashboard never makes runtime
4
+ logo requests. A Provider without a reviewed product-specific mark uses plain text.
5
+
6
+ | Provider surface | Local asset and SHA-256 | Official source | Theme selection |
7
+ | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------- |
8
+ | Codex | `openai.svg` — `5979341866925ebb8f663d457ddeda9a4dcaf7603da8a1b529ca948d71601c1d` | `OpenAI-black-monoblossom.svg` from the official [OpenAI Design guidelines](https://openai.com/brand/) logo pack | One official monochrome asset in both themes; no runtime recoloring |
9
+ | Claude Code | `claude.svg` — `3a808e859d6b8b1e81698ab2c85257e4c7eaa6834e926bb0a519c6d0b2eb7828` | `ClaudeIcon-Square.svg` from the [Anthropic Newsroom](https://www.anthropic.com/news) press kit | One fixed-color square asset in both themes |
10
+ | OpenCode Go | `opencode-light.svg` — `4e3c99fad0454b986101eec58843bc63481b1f6569db7779f8c0a49815bef9ad`; `opencode-dark.svg` — `dc77a89df840a7f1665ec6638a89af2a5246a16cd1eb48bb7fa0f326782139b0` | Current square variants from the official [OpenCode brand page](https://opencode.ai/brand) | `prefers-color-scheme` selects the reviewed light/dark pair |
11
+ | Grok / xAI API | `grok-dark.svg` — `a127a7cd42b0450f7d3827a331b0730aab49fd99c3fe920d172475b9ffc83992`; `grok-light.svg` — `b20648e2f111d7fbc91f58b22d1e76e9885b68a163cb5a1010f7f11bf5840491` | `Grok_Logomark_Dark.svg` and `Grok_Logomark_Light.svg` from the official [SpaceXAI brand package](https://data.x.ai/logos/xAI_Grok_Assets.zip), linked by the [SpaceXAI Brand Guidelines](https://x.ai/legal/brand-guidelines) | The official black mark is used on light surfaces and the white mark on dark surfaces |
12
+
13
+ `opencode.svg` is an earlier official dark asset retained only for compatibility
14
+ with already-built clients; new UI surfaces use the audited pair above. If any
15
+ image fails to load, the UI falls back to the plain Provider name and never
16
+ invents a letter avatar or imitation mark.
17
+
18
+ All marks identify their external Providers only. They are not the Agent Usage
19
+ product mark and must not imply sponsorship or endorsement. Assets must preserve
20
+ their aspect ratio and must not be traced, recolored, decorated, or incorporated
21
+ into the Agent Usage orbit-and-meter logo. Compatibility surfaces such as Provider
22
+ cards and the README banner may display the exact audited bytes only when each mark
23
+ remains visually separated and names its Provider. The self-contained README banner
24
+ uses byte-identical `data:` copies guarded against drift by `brand-assets.test.ts`.
25
+ Review the linked trademark guidance before shipping a replacement.
26
+
27
+ The official SpaceXAI download endpoint returned HTTP 403 during the audited
28
+ retrieval. The exact archive was therefore obtained from the public mirror attached
29
+ to [Simple Icons issue #13853](https://github.com/simple-icons/simple-icons/issues/13853),
30
+ whose report links the same official package. The audited ZIP SHA-256 is
31
+ `f41a93923a85047b4b5a9571b7ec73339f562c3e58acd096e25584ab0ae2a1fb`;
32
+ the two bundled SVGs preserve the supplied path geometry and fills unchanged.
@@ -0,0 +1,4 @@
1
+ <svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="128" height="128" fill="#D97757"/>
3
+ <path d="m35.016 79.694 18.416-10.327.304-.905-.304-.503h-.91l-3.087-.188-10.523-.282-9.108-.375-8.854-.47-2.226-.469-2.074-2.77.202-1.361 1.872-1.267 2.682.234 15.187 1.408 9.562.986h1.518l.202-.61-.506-.376-.404-.375-19.176-12.815-5.211-3.802-2.783-1.925-1.416-1.783-.607-3.943 2.53-2.817 3.44.235.86.234 10.929 8.45 9.714 7.136 1.417 1.173.57-.385.087-.272-.658-1.08-10.878-19.245-2.53-4.037-.657-2.394c-.255-1.005-.405-1.836-.405-2.864l2.884-3.943 1.619-.516 3.896.516 1.619 1.409 6.324 14.223 6.071 11.829 1.771 3.52.961 3.24.355.985h.607v-.563l2.934-25.348.304-2.957 1.467-3.568 2.934-1.924 2.277 1.08 1.872 2.675-.253 1.737-3.289 18.542-1.417 7.604h.81l.961-.986 10.271-13.143 2.833-3.192 3.34-3.52 2.124-1.69h4.048l2.934 4.412-1.315 4.554-7.589 9.716-4.933 6.61-3.061 5.314.275.438.737-.063 24.336-4.694 7.184-1.22 3.238 1.502.354 1.549-1.265 3.145-7.69 1.878-22.417 4.988-.148.12.175.26 6.048.547 2.58.141h6.324l11.788.892 3.086 2.018 1.822 2.488-.304 1.925-4.756 2.394-6.374-1.502-14.925-3.568-5.11-1.267h-.708v.422l4.25 4.178 17.607 16.148.506 2.253-1.265 1.784-1.315-.188-8.601-6.478-10.827-9.247h-.506v.657l1.72 2.535 9.158 13.753.455 4.225-.658 1.361-2.378.845-2.58-.469-5.414-7.558-5.514-8.449-4.453-7.604-.537.339-2.65 28.294-1.214 1.456-2.833 1.079-2.378-1.784-1.265-2.91 4.997-26.662.68-2.478-.06-.166-.543.092-14.092 19.169-6.729 7.182-1.619.657-2.783-1.455.253-2.582 1.568-2.3 14.925-19.199 3.619-4.23-.035-.612-.2-.017-24.735 16.125-4.402.563-1.922-1.784.253-2.91.91-.939 7.438-5.116Z" fill="#FAF9F5"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M395.479 633.828L735.91 381.105C752.599 368.715 776.454 373.548 784.406 392.792C826.26 494.285 807.561 616.253 724.288 699.996C641.016 783.739 525.151 802.104 419.247 760.277L303.556 814.143C469.49 928.202 670.987 899.995 796.901 773.282C896.776 672.843 927.708 535.937 898.785 412.476L899.047 412.739C857.105 231.37 909.358 158.874 1016.4 10.6326C1018.93 7.11771 1021.47 3.60279 1024 0L883.144 141.651V141.212L395.392 633.916" fill="#0A0A0A"/>
3
+ <path d="M325.226 695.251C206.128 580.84 226.662 403.776 328.285 301.668C403.431 226.097 526.549 195.254 634.026 240.596L749.454 186.994C728.657 171.88 702.007 155.623 671.424 144.2C533.19 86.9942 367.693 115.465 255.323 228.382C147.234 337.081 113.244 504.215 171.613 646.833C215.216 753.423 143.739 828.818 71.7385 904.916C46.2237 931.893 20.6216 958.87 0 987.429L325.139 695.339" fill="#0A0A0A"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M395.479 633.828L735.91 381.105C752.599 368.715 776.454 373.548 784.406 392.792C826.26 494.285 807.561 616.253 724.288 699.996C641.016 783.739 525.151 802.104 419.247 760.277L303.556 814.143C469.49 928.202 670.987 899.995 796.901 773.282C896.776 672.843 927.708 535.937 898.785 412.476L899.047 412.739C857.105 231.37 909.358 158.874 1016.4 10.6326C1018.93 7.11771 1021.47 3.60279 1024 0L883.144 141.651V141.212L395.392 633.916" fill="white"/>
3
+ <path d="M325.226 695.251C206.128 580.84 226.662 403.776 328.285 301.668C403.431 226.097 526.549 195.254 634.026 240.596L749.454 186.994C728.657 171.88 702.007 155.623 671.424 144.2C533.19 86.9942 367.693 115.465 255.323 228.382C147.234 337.081 113.244 504.215 171.613 646.833C215.216 753.423 143.739 828.818 71.7385 904.916C46.2237 931.893 20.6216 958.87 0 987.429L325.139 695.339" fill="white"/>
4
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg width="721" height="721" viewBox="0 0 721 721" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#a)">
3
+ <path d="M304.246 294.611v-45.583c0-3.839 1.441-6.719 4.798-8.636l91.648-52.78c12.475-7.197 27.35-10.554 42.702-10.554 57.577 0 94.046 44.624 94.046 92.124 0 3.358 0 7.197-.481 11.036l-95.005-55.66c-5.757-3.357-11.517-3.357-17.274 0l-120.434 70.053ZM518.245 472.145V363.224c0-6.719-2.881-11.517-8.637-14.875l-120.434-70.053 39.345-22.553c3.358-1.917 6.238-1.917 9.596 0l91.647 52.78c26.392 15.356 44.143 47.982 44.143 79.648 0 36.465-21.59 70.054-55.66 83.97v.004ZM275.937 376.182l-39.345-23.03c-3.357-1.917-4.798-4.798-4.798-8.637V238.956c0-51.339 39.345-90.207 92.606-90.207 20.155 0 38.864 6.719 54.702 18.714l-94.524 54.701c-5.756 3.357-8.636 8.155-8.636 14.875v139.147l-.005-.004ZM360.626 425.122l-56.38-31.667v-67.172l56.38-31.667 56.376 31.667v67.172l-56.376 31.667ZM396.852 570.989c-20.154 0-38.863-6.719-54.701-18.713l94.523-54.702c5.757-3.357 8.637-8.155 8.637-14.875V343.552l39.827 23.03c3.357 1.917 4.798 4.797 4.798 8.637v105.559c0 51.339-39.827 90.207-93.084 90.207v.004ZM283.134 463.99l-91.648-52.779c-26.392-15.357-44.143-47.982-44.143-79.649 0-36.946 22.072-70.053 56.137-83.969v109.398c0 6.719 2.881 11.517 8.637 14.875l119.957 69.571-39.345 22.553c-3.357 1.917-6.238 1.917-9.595 0ZM277.859 542.68c-54.22 0-94.046-40.785-94.046-91.166 0-3.839.481-7.678.958-11.517l94.524 54.701c5.756 3.358 11.517 3.358 17.273 0l120.434-69.571v45.583c0 3.839-1.44 6.719-4.798 8.636l-91.647 52.78c-12.476 7.197-27.351 10.554-42.703 10.554h.005ZM396.852 599.776c58.059 0 106.518-41.263 117.558-95.964 53.739-13.916 88.286-64.297 88.286-115.636 0-33.589-14.393-66.214-40.304-89.726 2.399-10.077 3.839-20.154 3.839-30.226 0-68.613-55.66-119.957-119.957-119.957-12.952 0-25.428 1.917-37.904 6.238-21.595-21.113-51.344-34.547-83.97-34.547-58.058 0-106.517 41.262-117.557 95.963-53.739 13.916-88.286 64.297-88.286 115.636 0 33.589 14.393 66.214 40.304 89.726-2.399 10.077-3.839 20.154-3.839 30.227 0 68.613 55.66 119.956 119.956 119.956 12.953 0 25.429-1.917 37.905-6.238 21.59 21.113 51.339 34.548 83.969 34.548Z" fill="currentColor"/>
4
+ </g>
5
+ <defs><clipPath id="a"><rect width="721" height="721"/></clipPath></defs>
6
+ </svg>
@@ -0,0 +1 @@
1
+ <svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg"><g transform="translate(30, 0)"><g clip-path="url(#clip0_1401_86283)"><mask id="mask0_1401_86283" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="240" height="300"><path d="M240 0H0V300H240V0Z" fill="white"/></mask><g mask="url(#mask0_1401_86283)"><path d="M180 240H60V120H180V240Z" fill="#4B4646"/><path d="M180 60H60V240H180V60ZM240 300H0V0H240V300Z" fill="#F1ECEC"/></g></g></g><defs><clipPath id="clip0_1401_86283"><rect width="240" height="300" fill="white"/></clipPath></defs></svg>
@@ -0,0 +1 @@
1
+ <svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg"><g transform="translate(30, 0)"><g clip-path="url(#clip0_1401_86274)"><mask id="mask0_1401_86274" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="240" height="300"><path d="M240 0H0V300H240V0Z" fill="white"/></mask><g mask="url(#mask0_1401_86274)"><path d="M180 240H60V120H180V240Z" fill="#CFCECD"/><path d="M180 60H60V240H180V60ZM240 300H0V0H240V300Z" fill="#211E1E"/></g></g></g><defs><clipPath id="clip0_1401_86274"><rect width="240" height="300" fill="white"/></clipPath></defs></svg>
@@ -0,0 +1,4 @@
1
+ <svg width="240" height="300" viewBox="0 0 240 300" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M180 240H60V120h120v120Z" fill="#4B4646"/>
3
+ <path d="M180 60H60v180h120V60Zm60 240H0V0h240v300Z" fill="#F1ECEC"/>
4
+ </svg>
@@ -0,0 +1,34 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <link href="/_app/immutable/entry/start.R2dkufKZ.js" rel="modulepreload">
7
+ <link href="/_app/immutable/chunks/DM8a3me-.js" rel="modulepreload">
8
+ <link href="/_app/immutable/chunks/6sns41Ww.js" rel="modulepreload">
9
+ <link href="/_app/immutable/entry/app.B_JvzxA9.js" rel="modulepreload">
10
+ <link href="/_app/immutable/chunks/xihTtKlq.js" rel="modulepreload">
11
+ <link href="/_app/immutable/nodes/0.CXfTLDxk.js" rel="modulepreload">
12
+
13
+ </head>
14
+ <body data-sveltekit-preload-data="hover">
15
+ <div style="display: contents">
16
+ <script>
17
+ {
18
+ __sveltekit_1ruse40 = {
19
+ base: ""
20
+ };
21
+
22
+ const element = document.currentScript.parentElement;
23
+
24
+ Promise.all([
25
+ import("/_app/immutable/entry/start.R2dkufKZ.js"),
26
+ import("/_app/immutable/entry/app.B_JvzxA9.js")
27
+ ]).then(([kit, app]) => {
28
+ kit.start(app, element);
29
+ });
30
+ }
31
+ </script>
32
+ </div>
33
+ </body>
34
+ </html>
@@ -0,0 +1,38 @@
1
+ # Open-source and attribution guide
2
+
3
+ Agent Usage is released under the MIT License. Source code, tests, documentation,
4
+ and the original Agent Usage logo/banner are covered by that license unless a
5
+ file or notice states otherwise.
6
+
7
+ ## Adapted source
8
+
9
+ The local transcript parsing and reconciliation approach was adapted from T3
10
+ Code under MIT. Its copyright and license text are preserved in
11
+ `THIRD_PARTY_NOTICES.md`.
12
+
13
+ ## Dependencies
14
+
15
+ `THIRD_PARTY_LICENSES.md` is generated from the exact pnpm lockfile and lists
16
+ every production and development dependency, version, declared license, and
17
+ project link. `BUNDLED_LICENSES.md` carries the complete license and copyright
18
+ texts for dependency code bundled into the browser distribution. Dependencies
19
+ installed separately retain their license texts in their own packages. Both
20
+ generated reports are checked by CI whenever dependencies change. The reviewed
21
+ bundle set is generated as `BUNDLED_DEPENDENCIES.json` directly from Vite's
22
+ client module graph, so a newly bundled npm package cannot bypass the full-text
23
+ license check by being omitted from a hand-maintained list.
24
+
25
+ ## Provider marks
26
+
27
+ OpenAI, Claude, OpenCode, Grok, xAI, and their marks belong to their respective
28
+ owners. Bundled Provider marks identify integrations only and do not imply
29
+ endorsement. Their official sources, checksums, theme rules, and fallback policy
30
+ are documented in `static/brands/README.md`. The Agent Usage orbit-and-meter
31
+ mark is original and does not incorporate those Provider marks.
32
+
33
+ ## Release provenance
34
+
35
+ Changesets controls semantic versions and changelogs. GitHub Actions runs the
36
+ quality gate and publishes with npm provenance. Release artifacts include the
37
+ MIT license, this dependency report, security policy, product brand assets, and
38
+ the project-level third-party notices.