ccgauge 0.4.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +42 -42
  3. package/.next/standalone/.next/app-path-routes-manifest.json +7 -7
  4. package/.next/standalone/.next/build-manifest.json +2 -2
  5. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  6. package/.next/standalone/.next/server/app/api/blocks/route.js +1 -1
  7. package/.next/standalone/.next/server/app/api/blocks/route_client-reference-manifest.js +1 -1
  8. package/.next/standalone/.next/server/app/api/export/usage/route.js +1 -1
  9. package/.next/standalone/.next/server/app/api/export/usage/route.js.nft.json +1 -1
  10. package/.next/standalone/.next/server/app/api/export/usage/route_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/api/pricing/route.js +1 -1
  12. package/.next/standalone/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/api/projects/route.js +1 -1
  14. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/api/scan/route.js +1 -1
  16. package/.next/standalone/.next/server/app/api/scan/route_client-reference-manifest.js +1 -1
  17. package/.next/standalone/.next/server/app/api/sessions/route.js +1 -1
  18. package/.next/standalone/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  19. package/.next/standalone/.next/server/app/api/usage/route.js +1 -1
  20. package/.next/standalone/.next/server/app/api/usage/route_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/models/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/.next/server/app/page.js +2 -2
  23. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  24. package/.next/standalone/.next/server/app/projects/[id]/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app/projects/page.js +1 -1
  26. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  27. package/.next/standalone/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/sessions/page.js +1 -1
  29. package/.next/standalone/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  30. package/.next/standalone/.next/server/app/settings/page.js +2 -2
  31. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  32. package/.next/standalone/.next/server/app/usage/page.js +2 -2
  33. package/.next/standalone/.next/server/app/usage/page_client-reference-manifest.js +1 -1
  34. package/.next/standalone/.next/server/app-paths-manifest.json +7 -7
  35. package/.next/standalone/.next/server/chunks/426.js +9 -4
  36. package/.next/standalone/.next/server/chunks/716.js +1 -1
  37. package/.next/standalone/.next/server/chunks/775.js +1 -1
  38. package/.next/standalone/.next/server/functions-config-manifest.json +3 -3
  39. package/.next/standalone/.next/server/pages/500.html +1 -1
  40. package/.next/standalone/.next/static/chunks/148-557ee562aff993b1.js +1 -0
  41. package/.next/standalone/.next/static/chunks/app/{error-89ee9e078058915d.js → error-3e48784f89c5ae8d.js} +1 -1
  42. package/.next/standalone/.next/static/chunks/app/layout-6c973d790f015707.js +1 -0
  43. package/.next/standalone/.next/static/chunks/app/models/page-dff43b9050382020.js +1 -0
  44. package/.next/standalone/.next/static/chunks/app/page-6d87d7a8aa752100.js +1 -0
  45. package/.next/standalone/.next/static/chunks/app/projects/[id]/page-3f812f0e20137f2b.js +1 -0
  46. package/.next/standalone/.next/static/chunks/app/sessions/[id]/page-3f812f0e20137f2b.js +1 -0
  47. package/.next/standalone/.next/static/chunks/app/settings/{page-334168b522eac1b1.js → page-d1af886a5c22af9b.js} +1 -1
  48. package/.next/standalone/.next/static/chunks/app/usage/page-26297e0641d51da8.js +1 -0
  49. package/.next/standalone/.next/static/css/b07523b7c353538d.css +3 -0
  50. package/.next/standalone/node_modules/next/node_modules/postcss/package.json +0 -0
  51. package/.next/standalone/package.json +15 -4
  52. package/CHANGELOG.md +147 -0
  53. package/README.md +41 -2
  54. package/README.zh-CN.md +39 -2
  55. package/bin/cli.mjs +83 -3
  56. package/dist/mcp/server.mjs +71 -29
  57. package/dist/report/index.mjs +2098 -0
  58. package/package.json +26 -17
  59. package/.next/standalone/.next/static/chunks/454-d0e7d0fa6f643c41.js +0 -1
  60. package/.next/standalone/.next/static/chunks/app/layout-a6e30ba3a7f39737.js +0 -1
  61. package/.next/standalone/.next/static/chunks/app/models/page-e0e1b5979547421a.js +0 -1
  62. package/.next/standalone/.next/static/chunks/app/page-9347dfa20dabb24b.js +0 -1
  63. package/.next/standalone/.next/static/chunks/app/projects/[id]/page-5804875e3dc384df.js +0 -1
  64. package/.next/standalone/.next/static/chunks/app/sessions/[id]/page-5804875e3dc384df.js +0 -1
  65. package/.next/standalone/.next/static/chunks/app/usage/page-7789fec27778df9a.js +0 -1
  66. package/.next/standalone/.next/static/css/c34cd36ce5fc39e2.css +0 -3
  67. /package/.next/standalone/.next/static/{w_l54xHgbhALYXmZcmUxC → ZPycmg0NLiIflO5NXMT75}/_buildManifest.js +0 -0
  68. /package/.next/standalone/.next/static/{w_l54xHgbhALYXmZcmUxC → ZPycmg0NLiIflO5NXMT75}/_ssgManifest.js +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccgauge",
3
- "version": "0.4.0",
3
+ "version": "1.0.0",
4
4
  "description": "Local web dashboard for Claude Code and OpenAI Codex CLI token usage and cost",
5
5
  "keywords": [
6
6
  "claude",
@@ -32,7 +32,15 @@
32
32
  "engines": {
33
33
  "node": ">=20"
34
34
  },
35
- "packageManager": "pnpm@10.30.3",
35
+ "os": [
36
+ "darwin",
37
+ "linux",
38
+ "win32"
39
+ ],
40
+ "cpu": [
41
+ "x64",
42
+ "arm64"
43
+ ],
36
44
  "bin": {
37
45
  "ccgauge": "bin/cli.mjs"
38
46
  },
@@ -40,25 +48,12 @@
40
48
  "bin/cli.mjs",
41
49
  ".next/standalone",
42
50
  "dist/mcp",
51
+ "dist/report",
43
52
  "README.md",
44
53
  "README.zh-CN.md",
45
54
  "CHANGELOG.md",
46
55
  "LICENSE"
47
56
  ],
48
- "scripts": {
49
- "dev": "next dev -p 3737",
50
- "build": "next build && node scripts/build-mcp.mjs && node scripts/postbuild.mjs",
51
- "build:mcp": "node scripts/build-mcp.mjs",
52
- "start": "node bin/cli.mjs",
53
- "start:next": "next start -p 3737",
54
- "lint": "eslint .",
55
- "typecheck": "tsc --noEmit",
56
- "test": "node --experimental-strip-types --no-warnings scripts/test-codex-parser.mjs",
57
- "test:mcp": "node scripts/test-mcp-server.mjs",
58
- "clean": "rm -rf .next node_modules tsconfig.tsbuildinfo",
59
- "screenshots": "node scripts/screenshots.mjs",
60
- "prepack": "pnpm build"
61
- },
62
57
  "dependencies": {
63
58
  "@modelcontextprotocol/sdk": "^1.29.0",
64
59
  "commander": "^13.1.0",
@@ -86,5 +81,19 @@
86
81
  "tailwindcss": "^3.4.17",
87
82
  "typescript": "^5.7.0",
88
83
  "zod": "^3.24.1"
84
+ },
85
+ "scripts": {
86
+ "dev": "next dev -p 3738",
87
+ "build": "next build && node scripts/build-mcp.mjs && node scripts/build-report.mjs && node scripts/postbuild.mjs",
88
+ "build:mcp": "node scripts/build-mcp.mjs",
89
+ "build:report": "node scripts/build-report.mjs",
90
+ "start": "node bin/cli.mjs",
91
+ "start:next": "next start -p 3737",
92
+ "lint": "eslint .",
93
+ "typecheck": "tsc --noEmit",
94
+ "test": "node --experimental-strip-types --no-warnings scripts/test-codex-parser.mjs",
95
+ "test:mcp": "node scripts/test-mcp-server.mjs",
96
+ "clean": "node -e \"for (const p of ['.next','node_modules','tsconfig.tsbuildinfo']) require('node:fs').rmSync(p,{recursive:true,force:true})\"",
97
+ "screenshots": "node scripts/screenshots.mjs"
89
98
  }
90
- }
99
+ }
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[454],{19454:(e,s,t)=>{t.d(s,{CY:()=>d,s9:()=>u,kj:()=>m});var o=t(95155),n=t(12115),i=t(20063);let a={en:{"brand.tagline":"usage dashboard for AI coding CLIs","nav.overview":"Overview","nav.usage":"Usage","nav.sessions":"Sessions","nav.projects":"Projects","nav.models":"Models","nav.settings":"Settings","nav.localBadge":"local","nav.source":"Data source","source.claude":"Claude","source.codex":"Codex","cost.footnote.codex":"Cost shown is the OpenAI API equivalent (subscription plans pay differently).","common.requests":"requests","common.tokens":"tokens","common.cost":"Cost","common.savedViaCache":"Saved {amount} via cache","common.savedTodayViaCache":"Saved {amount} today","common.live":"live","common.allModels":"All","common.allProjects":"All","common.unknown":"(unknown)","common.session":"Session","common.sessions":"sessions","common.projects":"projects","common.req":"req","common.day":"day","common.days":"days","common.activity":"activity","common.fallbackPrice":"fallback price","common.thinking":"thinking","common.lastActivity":"last activity","common.empty.title":"No usage data yet","common.empty.desc":"Open Claude Code, send a message, then refresh.","common.refresh":"Refresh","common.search":"Search…","common.searchPlaceholder":"Search model, project, session, tool…","common.exportCsv":"Export CSV","common.rows":"{count} rows","common.prev":"‹ Prev","common.next":"Next ›","common.first":"\xab","common.last":"\xbb","common.pageOf":"Page {page} of {total}","common.allSessions":"← All sessions","common.allProjectsLink":"← All projects","common.noMatchingRows":"No matching rows","range.label":"Date range","range.today":"Today","range.7d":"7d","range.30d":"30d","range.90d":"90d","range.all":"All","gran.label":"Granularity","gran.hour":"Hour","gran.day":"Day","gran.week":"Week","gran.month":"Month","overview.title":"Overview","overview.subtitle":"{count} requests across {files} files \xb7 scan in {ms}ms","overview.subtitle.empty":"Scanned {dirs} directory(ies). Open Claude Code, send a message, then refresh.","overview.empty.title":"No usage data yet","overview.kpi.tokensToday":"Tokens today","overview.kpi.costToday":"Cost today","overview.kpi.thisMonth":"This month","overview.kpi.cacheHit":"Cache hit rate","overview.kpi.topModel":"Top model","overview.kpi.activeSessions":"Sessions today","overview.kpi.activeSessions.hint":"{count} project(s)","overview.kpi.thisMonth.hint":"{tokens} tokens \xb7 {req} req","overview.kpi.tokensToday.hint":"{count} requests","overview.kpi.topModel.hint":"{pct} of cost this month","overview.kpi.cacheHit.hint":"Saved {amount} today","overview.delta.title":"vs yesterday","overview.delta.firstTime":"NEW","common.loading":"Loading…","common.error.title":"Something went wrong","common.error.desc":"Failed to load this page. Try again.","common.error.retry":"Retry","overview.trend.title":"Token usage trend","overview.trend.desc":"Last 30 days \xb7 stacked by token type","overview.trend.activeDays":"{n} day with activity","overview.trend.activeDays.plural":"{n} days with activity","overview.costByModel.title":"Cost by model","overview.costByModel.desc":"This month, sorted by spend","block.title":"Active 5h block","block.remaining":"remaining","block.elapsed":"{pct}% elapsed","block.tokensSuffix":"tokens","block.spentSoFar":"Spent so far","block.burnPerMin":"Burn / min","block.projectedTotal":"Projected total","block.requests":"Requests","block.empty":"No active block","block.emptyDesc":"Send a message in Claude Code to start one.","chart.legend.input":"Input","chart.legend.output":"Output","chart.legend.cacheRead":"Cache read","chart.legend.cacheWrite":"Cache write","chart.tooltip.total":"Total","chart.tooltip.cost":"Cost","chart.tooltip.requests":"Requests","chart.empty":"No data in this range","chart.empty.short":"No data","usage.title":"Usage","usage.subtitle":"{count} turns in selected range","usage.col.calls":"Calls","usage.col.userMessage":"Prompt","usage.turn.expand":"Expand","usage.turn.collapse":"Collapse","usage.turn.callsCount":"{count} calls","usage.turn.noPrompt":"(no user text)","usage.requests.desc":"One row per turn (user message + tool calls); click ▸ to expand","usage.kpi.totalTokens":"Total tokens","usage.kpi.totalCost":"Total cost","usage.kpi.cacheSaved":"Cache saved","usage.kpi.cacheHit":"Cache hit","usage.trend":"Trend","usage.trend.gran":"Granularity: {gran}","usage.requests.title":"Requests","usage.col.time":"Time","usage.col.model":"Model","usage.col.project":"Project","usage.col.session":"Session","usage.col.input":"Input","usage.col.output":"Output","usage.col.cacheRead":"Cache R","usage.col.cacheWrite":"Cache W","usage.col.cost":"Cost","usage.col.tools":"Tools","usage.col.total":"Total","usage.columns.button":"Columns","usage.columns.title":"Visible columns","usage.columns.reset":"Reset","usage.breakdown.title":"Token breakdown","usage.breakdown.headerTokens":"Tokens","usage.breakdown.headerCost":"Cost","usage.breakdown.total":"Total","usage.breakdown.reasoning":"reasoning","usage.breakdown.reasoningNote":"incl. above","filter.modelLabel":"Model","filter.projectLabel":"Project","filter.modelAll":"Model: All","filter.projectAll":"Project: All","filter.modelSingle":"Model: {value}","filter.projectSingle":"Project: {value}","filter.modelMulti":"Model: {count}","filter.projectMulti":"Project: {count}","filter.clearAll":"Clear all","filter.noOptions":"No options","sessions.title":"Sessions","sessions.subtitle":"{count} sessions \xb7 sorted by most recent activity","sessions.col.session":"Session","sessions.col.project":"Project","sessions.col.models":"Model(s)","sessions.col.requests":"Requests","sessions.col.tokens":"Tokens","sessions.col.cost":"Cost","sessions.col.duration":"Duration","sessions.col.lastActivity":"Last activity","sessions.untitled":"Session {hash}","sessions.empty":"No sessions yet","session.kpi.requests":"Requests","session.kpi.totalTokens":"Total tokens","session.kpi.cost":"Cost","session.kpi.duration":"Duration","session.timeline.title":"Message timeline","session.timeline.desc":"In order; newest at the bottom","session.perMessage.title":"Per-message tokens","session.modelsInSession":"Models in this session","session.modelLine":"{requests} req \xb7 {tokens} tokens","session.token.in":"in","session.token.out":"out","session.token.cacheR":"cache r","session.token.cacheW":"cache w","projects.title":"Projects","projects.subtitle":"{count} projects \xb7 sorted by spend","projects.empty":"No projects yet","projects.stat.sessions":"Sessions","projects.stat.requests":"Requests","projects.stat.tokens":"Tokens","project.activity":"Activity (last 30 days)","project.sessions.title":"Sessions ({count})","models.title":"Models","models.subtitle":"{count} model(s) used in total","models.empty":"No model usage yet","models.share.cost":"Cost share","models.share.tokens":"Tokens share","models.share.cacheHit":"Cache hit","models.field.requests":"Requests","models.field.savedByCache":"Saved by cache","models.field.input1M":"Input / 1M","models.field.output1M":"Output / 1M","models.field.cacheRead1M":"Cache read / 1M","models.field.pctOfTotal":"{pct} of total spend \xb7 {tokens} tokens","models.eachTrend":"Combined trend (last 30 days)","settings.title":"Settings","settings.subtitle":"Data sources, pricing, and behavior","settings.dataSources.title":"Data sources","settings.dataSources.desc":"ccgauge scans these locations for JSONL files","settings.dataSources.active":"active","settings.dataSources.notPresent":"not present","settings.dataSources.envHint":"Override with {env1} or {env2} environment variables (the dashboard appends {appendix}).","settings.rescan":"Rescan now","settings.rescanning":"Rescanning…","settings.scanStats.title":"Scan stats","settings.scanStats.files":"Files scanned","settings.scanStats.records":"Records parsed","settings.scanStats.assistant":"Assistant records (deduped)","settings.scanStats.duration":"Scan duration","settings.pricing.title":"Pricing table","settings.pricing.desc":"USD per 1M tokens \xb7 built-in snapshot, fuzzy match for date-suffixed model names","settings.pricing.col.model":"Model","settings.pricing.col.input":"Input","settings.pricing.col.output":"Output","settings.pricing.col.write5m":"Cache write 5m","settings.pricing.col.write1h":"Cache write 1h","settings.pricing.col.read":"Cache read","settings.preferences.title":"Preferences","settings.preferences.language":"Language","settings.preferences.theme":"Theme","settings.theme.light":"Light","settings.theme.dark":"Dark","settings.theme.system":"System","settings.about.title":"About","settings.about.subtitle":"Version {version} \xb7 MIT licensed","settings.about.line1":"Fully local: data never leaves your machine; no telemetry, no network calls.","settings.about.line2":"Read-only: ccgauge only reads JSONL files, never writes back to ~/.claude.","settings.about.line3":'Cache: scan results are memoized for 5s; click "Rescan" to force a fresh read.',"settings.about.line4":"Stop with Ctrl+C in the terminal that started ccgauge.","settings.indexer.desc":"Background indexer keeps the cache fresh via file watchers.","settings.indexer.lastIndexedAt":"Last indexed","settings.indexer.indexDuration":"Last index time","settings.indexer.watchers":"Active watchers","settings.indexer.loadedFromDisk":"Loaded from disk","settings.indexer.status":"Status","settings.indexer.indexing":"indexing…","settings.indexer.idle":"idle","settings.indexer.recentErrors":"Recent indexer errors","common.yes":"yes","common.no":"no","lang.label":"Language","lang.en":"English","lang.zh":"中文","theme.label":"Theme"},zh:{"brand.tagline":"AI 编程 CLI 的本地用量看板","nav.overview":"概览","nav.usage":"用量","nav.sessions":"会话","nav.projects":"项目","nav.models":"模型","nav.settings":"设置","nav.localBadge":"本地","nav.source":"数据源","source.claude":"Claude","source.codex":"Codex","cost.footnote.codex":"按 OpenAI API 单价折算估值(订阅计划实际计费不同)","common.requests":"次请求","common.tokens":"tokens","common.cost":"花费","common.savedViaCache":"通过缓存节省 {amount}","common.savedTodayViaCache":"今日缓存节省 {amount}","common.live":"进行中","common.allModels":"全部","common.allProjects":"全部","common.unknown":"(未知)","common.session":"会话","common.sessions":"个会话","common.projects":"个项目","common.req":"请求","common.day":"天","common.days":"天","common.activity":"活跃","common.fallbackPrice":"使用兜底单价","common.thinking":"思考","common.lastActivity":"最近活跃","common.empty.title":"暂无用量数据","common.empty.desc":"打开 Claude Code 发送一条消息后刷新本页。","common.refresh":"刷新","common.search":"搜索…","common.searchPlaceholder":"搜索模型 / 项目 / 会话 / 工具…","common.exportCsv":"导出 CSV","common.rows":"{count} 行","common.prev":"‹ 上一页","common.next":"下一页 ›","common.first":"\xab","common.last":"\xbb","common.pageOf":"第 {page} / {total} 页","common.allSessions":"← 返回会话列表","common.allProjectsLink":"← 返回项目列表","common.noMatchingRows":"没有匹配的记录","range.label":"时间范围","range.today":"今天","range.7d":"7 天","range.30d":"30 天","range.90d":"90 天","range.all":"全部","gran.label":"粒度","gran.hour":"小时","gran.day":"天","gran.week":"周","gran.month":"月","overview.title":"概览","overview.subtitle":"{count} 次请求,覆盖 {files} 个文件 \xb7 扫描耗时 {ms}ms","overview.subtitle.empty":"已扫描 {dirs} 个目录。打开 Claude Code 发一条消息后刷新本页。","overview.empty.title":"暂无用量数据","overview.kpi.tokensToday":"今日 tokens","overview.kpi.costToday":"今日花费","overview.kpi.thisMonth":"本月累计","overview.kpi.cacheHit":"缓存命中率","overview.kpi.topModel":"主力模型","overview.kpi.activeSessions":"今日会话","overview.kpi.activeSessions.hint":"涉及 {count} 个项目","overview.kpi.thisMonth.hint":"{tokens} tokens \xb7 {req} 次请求","overview.kpi.tokensToday.hint":"{count} 次请求","overview.kpi.topModel.hint":"本月成本占比 {pct}","overview.kpi.cacheHit.hint":"今日缓存节省 {amount}","overview.delta.title":"相比昨日","overview.delta.firstTime":"首次","common.loading":"加载中…","common.error.title":"出错了","common.error.desc":"加载失败,请重试。","common.error.retry":"重试","overview.trend.title":"Token 用量趋势","overview.trend.desc":"近 30 天 \xb7 按 token 类型堆叠","overview.trend.activeDays":"{n} 天有数据","overview.trend.activeDays.plural":"{n} 天有数据","overview.costByModel.title":"按模型成本分布","overview.costByModel.desc":"本月,按花费排序","block.title":"当前 5h block","block.remaining":"剩余","block.elapsed":"已用 {pct}%","block.tokensSuffix":"tokens","block.spentSoFar":"已花费","block.burnPerMin":"每分钟消耗","block.projectedTotal":"预计总花费","block.requests":"请求数","block.empty":"当前无活跃 block","block.emptyDesc":"在 Claude Code 中发送消息会启动一个新 block。","chart.legend.input":"输入","chart.legend.output":"输出","chart.legend.cacheRead":"缓存读取","chart.legend.cacheWrite":"缓存写入","chart.tooltip.total":"合计","chart.tooltip.cost":"花费","chart.tooltip.requests":"请求数","chart.empty":"区间内无数据","chart.empty.short":"暂无数据","usage.title":"用量明细","usage.subtitle":"当前筛选范围内 {count} 轮对话","usage.kpi.totalTokens":"总 tokens","usage.kpi.totalCost":"总花费","usage.kpi.cacheSaved":"缓存节省","usage.kpi.cacheHit":"缓存命中","usage.trend":"趋势","usage.trend.gran":"粒度:{gran}","usage.requests.title":"对话轮次","usage.requests.desc":"每轮对话一行(用户消息 + 工具调用),点击 ▸ 展开明细","usage.col.calls":"调用","usage.col.userMessage":"提示","usage.turn.expand":"展开","usage.turn.collapse":"收起","usage.turn.callsCount":"{count} 次调用","usage.turn.noPrompt":"(无用户文本)","usage.col.time":"时间","usage.col.model":"模型","usage.col.project":"项目","usage.col.session":"会话","usage.col.input":"输入","usage.col.output":"输出","usage.col.cacheRead":"缓存读","usage.col.cacheWrite":"缓存写","usage.col.cost":"花费","usage.col.tools":"工具","usage.col.total":"总量","usage.columns.button":"列","usage.columns.title":"显示列","usage.columns.reset":"重置","usage.breakdown.title":"总量明细","usage.breakdown.headerTokens":"Token","usage.breakdown.headerCost":"花费","usage.breakdown.total":"合计","usage.breakdown.reasoning":"其中推理","usage.breakdown.reasoningNote":"已含在 output","filter.modelLabel":"模型","filter.projectLabel":"项目","filter.modelAll":"模型:全部","filter.projectAll":"项目:全部","filter.modelSingle":"模型:{value}","filter.projectSingle":"项目:{value}","filter.modelMulti":"模型:{count} 个","filter.projectMulti":"项目:{count} 个","filter.clearAll":"清除筛选","filter.noOptions":"没有可选项","sessions.title":"会话","sessions.subtitle":"共 {count} 个会话 \xb7 按最近活跃排序","sessions.col.session":"会话","sessions.col.project":"项目","sessions.col.models":"模型","sessions.col.requests":"请求数","sessions.col.tokens":"Tokens","sessions.col.cost":"花费","sessions.col.duration":"时长","sessions.col.lastActivity":"最近活跃","sessions.untitled":"会话 {hash}","sessions.empty":"暂无会话","session.kpi.requests":"请求数","session.kpi.totalTokens":"总 tokens","session.kpi.cost":"花费","session.kpi.duration":"时长","session.timeline.title":"消息时间线","session.timeline.desc":"按时间正序,最新的在最下方","session.perMessage.title":"逐条消息 tokens","session.modelsInSession":"本会话使用的模型","session.modelLine":"{requests} 次 \xb7 {tokens} tokens","session.token.in":"输入","session.token.out":"输出","session.token.cacheR":"缓存读","session.token.cacheW":"缓存写","projects.title":"项目","projects.subtitle":"共 {count} 个项目 \xb7 按花费排序","projects.empty":"暂无项目","projects.stat.sessions":"会话","projects.stat.requests":"请求","projects.stat.tokens":"Tokens","project.activity":"活跃情况(近 30 天)","project.sessions.title":"会话({count})","models.title":"模型","models.subtitle":"共使用过 {count} 个模型","models.empty":"暂无模型用量","models.share.cost":"成本占比","models.share.tokens":"Tokens 占比","models.share.cacheHit":"缓存命中","models.field.requests":"请求数","models.field.savedByCache":"缓存节省","models.field.input1M":"输入 / 1M","models.field.output1M":"输出 / 1M","models.field.cacheRead1M":"缓存读 / 1M","models.field.pctOfTotal":"占总花费 {pct} \xb7 {tokens} tokens","models.eachTrend":"整体趋势(近 30 天)","settings.title":"设置","settings.subtitle":"数据源、价格表与行为偏好","settings.dataSources.title":"数据源","settings.dataSources.desc":"ccgauge 会扫描以下路径的 JSONL 文件","settings.dataSources.active":"已启用","settings.dataSources.notPresent":"不存在","settings.dataSources.envHint":"可以通过环境变量 {env1} 或 {env2} 自定义路径(看板会自动追加 {appendix})。","settings.rescan":"立即重新扫描","settings.rescanning":"扫描中…","settings.scanStats.title":"扫描统计","settings.scanStats.files":"扫描文件数","settings.scanStats.records":"解析记录数","settings.scanStats.assistant":"去重后 assistant 记录","settings.scanStats.duration":"扫描耗时","settings.pricing.title":"价格表","settings.pricing.desc":"美元 / 1M tokens \xb7 内置快照,对带日期后缀的模型名做 fuzzy 匹配","settings.pricing.col.model":"模型","settings.pricing.col.input":"输入","settings.pricing.col.output":"输出","settings.pricing.col.write5m":"缓存写入 5 分钟","settings.pricing.col.write1h":"缓存写入 1 小时","settings.pricing.col.read":"缓存读取","settings.preferences.title":"偏好设置","settings.preferences.language":"语言","settings.preferences.theme":"主题","settings.theme.light":"亮色","settings.theme.dark":"暗色","settings.theme.system":"跟随系统","settings.about.title":"关于","settings.about.subtitle":"版本 {version} \xb7 MIT 协议","settings.about.line1":"完全本地:数据从不离开你的机器,没有任何遥测、没有任何网络调用。","settings.about.line2":"只读:ccgauge 只读取 JSONL,绝不会写回 ~/.claude。","settings.about.line3":'缓存:扫描结果会缓存 5 秒;点击"重新扫描"可强制刷新。',"settings.about.line4":"在启动 ccgauge 的终端按 Ctrl+C 即可停止。","settings.indexer.desc":"后台 indexer 通过文件监听增量维护缓存。","settings.indexer.lastIndexedAt":"最近索引时间","settings.indexer.indexDuration":"最近索引耗时","settings.indexer.watchers":"活跃 watcher 数","settings.indexer.loadedFromDisk":"从磁盘恢复","settings.indexer.status":"状态","settings.indexer.indexing":"索引中…","settings.indexer.idle":"空闲","settings.indexer.recentErrors":"最近的索引错误","common.yes":"是","common.no":"否","lang.label":"语言","lang.en":"English","lang.zh":"中文","theme.label":"主题"}},c="ccgauge_locale",r=(0,n.createContext)({locale:"en",setLocale:()=>{},t:e=>e}),l="ccgauge.locale";function d(e){let{initialLocale:s,children:t}=e,d=(0,i.useRouter)();(0,n.useEffect)(()=>{try{let e=localStorage.getItem(l);e&&e!==s&&("en"===e||"zh"===e)&&(document.cookie="".concat(c,"=").concat(e,"; path=/; max-age=").concat(31536e3,"; SameSite=Lax"),d.refresh())}catch(e){}},[]);let u=(0,n.useCallback)(e=>{try{localStorage.setItem(l,e)}catch(e){}document.cookie="".concat(c,"=").concat(e,"; path=/; max-age=").concat(31536e3,"; SameSite=Lax"),d.refresh()},[d]),m=(0,n.useCallback)((e,t)=>(function(e,s,t){var o;let n=null==(o=a[e])?void 0:o[s];if(void 0===n&&(n=a.en[s]),void 0===n&&(n=s),t)for(let[e,s]of Object.entries(t))n=n.replace(RegExp("\\{".concat(e,"\\}"),"g"),String(s));return n})(s,e,t),[s]),g=(0,n.useMemo)(()=>({locale:s,setLocale:u,t:m}),[s,u,m]);return(0,o.jsx)(r.Provider,{value:g,children:t})}function u(){return(0,n.useContext)(r)}function m(){return(0,n.useContext)(r).t}}}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{12112:(e,t,r)=>{"use strict";r.d(t,{Providers:()=>s});var n=r(95155),a=r(19454),i=r(84479);function s(e){let{locale:t,theme:r,children:s}=e;return(0,n.jsx)(a.CY,{initialLocale:t,children:(0,n.jsx)(i.N,{initialTheme:r,children:s})})}},21264:(e,t,r)=>{"use strict";r.d(t,{LanguageSwitcher:()=>o});var n=r(95155),a=r(19454);let i={en:"EN",zh:"中"},s={en:"zh",zh:"en"},c={en:"English",zh:"中文"};function o(){let{locale:e,setLocale:t,t:r}=(0,a.s9)(),o=s[e];return(0,n.jsx)("button",{onClick:()=>t(o),className:"h-7 w-9 inline-flex items-center justify-center rounded-md border border-border bg-bg-surface text-xs font-medium text-text-secondary hover:text-text-primary hover:bg-bg-surface-hi hover:border-border-hi transition-colors",title:"".concat(r("lang.label"),": ").concat(c[e]," → ").concat(c[o]),"aria-label":r("lang.label"),children:i[e]})}},25016:(e,t,r)=>{"use strict";r.d(t,{BC:()=>m,P6:()=>g,PJ:()=>u,R8:()=>d,az:()=>o,cn:()=>i,jh:()=>c,l7:()=>l,r6:()=>h});var n=r(2821),a=r(75889);function i(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,a.QP)((0,n.$)(t))}function s(e,t){var r;return new Intl.NumberFormat("en-US",{maximumFractionDigits:null!=(r=null==t?void 0:t.maxFrac)?r:0}).format(e)}function c(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en";return Number.isFinite(e)?"zh"===t?e>=1e8?(e/1e8).toFixed(2)+"亿":e>=1e4?(e/1e4).toFixed(1)+"万":s(e):e>=1e9?(e/1e9).toFixed(2)+"B":e>=1e6?(e/1e6).toFixed(2)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":s(e):"0"}function o(e,t){var r,n;return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:null!=(r=null==t?void 0:t.minFrac)?r:2,maximumFractionDigits:null!=(n=null==t?void 0:t.maxFrac)?n:2}).format(e)}function l(e){return 0===e?"$0":e<.01?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:4,maximumFractionDigits:6}).format(e):o(e)}function d(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Number.isFinite(e)?"".concat((100*e).toFixed(t),"%"):"0%"}function h(e){let t="string"==typeof e||"number"==typeof e?new Date(e):e;if(Number.isNaN(t.getTime()))return"";let r=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),a=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),s=String(t.getMinutes()).padStart(2,"0"),c=String(t.getSeconds()).padStart(2,"0");return"".concat(r,"-").concat(n,"-").concat(a," ").concat(i,":").concat(s,":").concat(c)}function u(e){if(!e)return"(unknown)";let t=e.replace(/\/+$/,"").split("/");return t[t.length-1]||e}function m(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;return e?e.replace(/-/g,"").slice(0,t):""}let x={mini:"Mini",nano:"Nano",pro:"Pro",turbo:"Turbo",preview:"Preview"};function g(e){if(!e)return"(unknown)";let t=e.replace(/^(vertex_ai|bedrock|anthropic|openai)\//,""),r=t.toLowerCase();if(r.startsWith("gpt-")||/^o\d/.test(r))return r.startsWith("gpt-")?"GPT-"+t.slice(4).split("-").map(e=>{var t;return null!=(t=x[e.toLowerCase()])?t:e}).join(" "):t.toUpperCase();let n=t.replace(/-(\d{8})$/,""),a=(n=n.replace(/^claude-/,"")).split("-");if(a.length>=2){let e=a[0],t=a.slice(1).join(".");return f(e)+" "+t}return f(n.replace(/-/g," "))}function f(e){return e.replace(/\b\w/g,e=>e.toUpperCase())}},41290:()=>{},44703:(e,t,r)=>{"use strict";r.d(t,{ThemeSwitcher:()=>c});var n=r(95155),a=r(84479),i=r(19454);let s={light:"dark",dark:"system",system:"light"};function c(){let{theme:e,resolved:t,setTheme:r}=(0,a.D)(),{t:c}=(0,i.s9)(),l=s[e];return(0,n.jsx)("button",{onClick:()=>r(l),className:"h-7 w-9 inline-flex items-center justify-center rounded-md border border-border bg-bg-surface text-text-secondary hover:text-text-primary hover:bg-bg-surface-hi hover:border-border-hi transition-colors",title:"".concat(c("theme.label"),": ").concat(c("settings.theme.".concat(e))," (").concat(t,") → ").concat(c("settings.theme.".concat(l))),"aria-label":c("theme.label"),children:(0,n.jsx)(o,{theme:e})})}function o(e){let{theme:t}=e;return"light"===t?(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"4"}),(0,n.jsx)("path",{d:"M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"})]}):"dark"===t?(0,n.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0,children:(0,n.jsx)("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"})}):(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"9"}),(0,n.jsx)("path",{d:"M12 3v18"}),(0,n.jsx)("path",{d:"M12 3a9 9 0 0 1 0 18z",fill:"currentColor",stroke:"none"})]})}},57581:(e,t,r)=>{"use strict";r.d(t,{Nav:()=>g});var n=r(95155),a=r(52619),i=r.n(a),s=r(20063),c=r(25016),o=r(19454),l=r(21264),d=r(44703);function h(e){let{className:t,withBackground:r=!0}=e;return(0,n.jsxs)("svg",{viewBox:"0 0 64 64",fill:"none","aria-hidden":!0,className:(0,c.cn)("block",t),children:[r&&(0,n.jsx)("rect",{width:"64",height:"64",rx:"14",className:"fill-brand"}),(0,n.jsx)("path",{d:"M14 41 A18 18 0 0 1 50 41",stroke:"currentColor",strokeOpacity:r?.32:.25,strokeWidth:"4.5",strokeLinecap:"round",className:r?"text-white":""}),(0,n.jsx)("path",{d:"M14 41 A18 18 0 0 1 43.2 25.4",stroke:"currentColor",strokeWidth:"4.5",strokeLinecap:"round",className:r?"text-white":"text-brand"}),(0,n.jsx)("line",{x1:"32",y1:"41",x2:"42",y2:"27",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",className:r?"text-white":"text-brand"}),(0,n.jsx)("circle",{cx:"32",cy:"41",r:"3",className:r?"fill-white":"fill-brand"})]})}var u=r(12115);function m(e){let{available:t,initial:r,providers:a}=e,i=(0,s.useRouter)(),c=(0,s.usePathname)(),l=(0,s.useSearchParams)(),d=(0,o.kj)(),{locale:h}=(0,o.s9)(),[m,x]=(0,u.useTransition)(),g=l.get("source"),[f,p]=(0,u.useState)(null!=g?g:r);return((0,u.useEffect)(()=>{g&&g!==f&&p(g)},[g,f]),t.length<2)?null:(0,n.jsx)("div",{role:"group","aria-label":d("nav.source"),className:"inline-flex items-center rounded-md border border-border bg-bg-surface p-0.5 gap-0.5",title:d("nav.source"),children:a.filter(e=>t.includes(e.id)).map(e=>{let t=e.id===f,r="zh"===h?e.displayZh:e.displayEn;return(0,n.jsxs)("button",{type:"button",onClick:()=>(e=>{var t;if(e===f)return;p(e),t=e,"undefined"!=typeof document&&(document.cookie="".concat("ccgauge_source","=").concat(encodeURIComponent(t),"; path=/; max-age=").concat(31536e3,"; SameSite=Lax"));let r=new URLSearchParams(l.toString());r.set("source",e);let n=/^\/sessions\/[^/]+|^\/projects\/[^/]+/.test(c)?"/".concat(c.split("/")[1],"?").concat(r.toString()):"".concat(c,"?").concat(r.toString());x(()=>{i.push(n)})})(e.id),"aria-pressed":t,disabled:m,className:"px-2.5 h-6 text-xs inline-flex items-center gap-1.5 rounded transition-all ".concat(t?"bg-brand text-white font-semibold shadow-sm ring-1 ring-brand/40":"text-text-tertiary font-medium hover:text-text-primary hover:bg-bg-surface-hi"),children:[(0,n.jsx)("span",{className:"inline-flex items-center justify-center w-3.5 h-3.5 rounded-full text-[9px] font-bold leading-none ".concat(t?"ring-1 ring-white/40":""),style:{background:e.bg,color:e.fg},children:e.shortLabel}),(0,n.jsx)("span",{children:r})]},e.id)})})}let x=[{href:"/",tk:"nav.overview",exact:!0},{href:"/usage",tk:"nav.usage"},{href:"/sessions",tk:"nav.sessions"},{href:"/projects",tk:"nav.projects"},{href:"/models",tk:"nav.models"},{href:"/settings",tk:"nav.settings"}];function g(e){let{availableProviders:t,initialSource:r,providerInfos:a}=e,u=(0,s.usePathname)(),g=(0,o.kj)();return(0,n.jsx)("header",{className:"sticky top-0 z-30 border-b border-border bg-bg-base/80 backdrop-blur",children:(0,n.jsxs)("div",{className:"max-w-7xl mx-auto px-3 sm:px-6 h-14 flex items-center gap-2 sm:gap-4",children:[(0,n.jsxs)(i(),{href:"/",className:"flex items-center gap-2 font-semibold tracking-tight whitespace-nowrap shrink-0","aria-label":"ccgauge home",children:[(0,n.jsx)(h,{className:"w-7 h-7"}),(0,n.jsx)("span",{className:"hidden xs:inline sm:inline",children:"ccgauge"}),(0,n.jsx)("span",{className:"text-xs text-text-tertiary font-normal hidden lg:inline",children:g("brand.tagline")})]}),(0,n.jsx)("nav",{className:"flex-1 min-w-0 flex items-center gap-1 overflow-x-auto scrollbar-thin","aria-label":"Primary",children:x.map(e=>{let t=e.exact?u===e.href:u===e.href||u.startsWith(e.href+"/");return(0,n.jsx)(i(),{href:e.href,prefetch:!1,"aria-current":t?"page":void 0,className:(0,c.cn)("px-2.5 sm:px-3 py-1.5 text-sm rounded-button font-medium transition-colors whitespace-nowrap shrink-0",t?"text-text-primary bg-bg-surface-hi":"text-text-secondary hover:text-text-primary hover:bg-bg-surface"),children:g(e.tk)},e.href)})}),(0,n.jsxs)("div",{className:"flex items-center gap-2 shrink-0",children:[(0,n.jsx)(m,{available:t,initial:r,providers:a}),(0,n.jsx)("span",{className:"pill bg-bg-surface-hi text-text-tertiary text-[10px] uppercase tracking-wide hidden md:inline-flex",children:g("nav.localBadge")}),(0,n.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,n.jsx)(l.LanguageSwitcher,{}),(0,n.jsx)(d.ThemeSwitcher,{})]})]})]})})}},79076:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,41290,23)),Promise.resolve().then(r.bind(r,57581)),Promise.resolve().then(r.bind(r,12112))},84479:(e,t,r)=>{"use strict";r.d(t,{N:()=>d,D:()=>h});var n=r(95155),a=r(12115);let i="ccgauge_theme",s=(0,a.createContext)({theme:"system",resolved:"dark",setTheme:()=>{}}),c="ccgauge.theme";function o(e){return"light"===e?"light":"dark"===e?"dark":window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"}function l(e){if("undefined"==typeof document)return;let t=document.documentElement,r=o(e);t.classList.remove("theme-light","theme-dark"),t.classList.add("light"===r?"theme-light":"theme-dark"),t.setAttribute("data-theme",r)}function d(e){let{initialTheme:t,children:r}=e,[d,h]=(0,a.useState)(t),[u,m]=(0,a.useState)(()=>"system"===t?"dark":t);(0,a.useEffect)(()=>{try{let e=localStorage.getItem(c);if("light"===e||"dark"===e||"system"===e){e!==t&&(document.cookie="".concat(i,"=").concat(e,"; path=/; max-age=").concat(31536e3,"; SameSite=Lax")),h(e);let r=o(e);m(r),l(e)}else{let e=o(t);m(e),l(t)}}catch(e){m(o(t)),l(t)}},[]),(0,a.useEffect)(()=>{if("system"!==d)return;let e=window.matchMedia("(prefers-color-scheme: light)"),t=()=>{m(e.matches?"light":"dark"),l("system")};return e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[d]);let x=(0,a.useCallback)(e=>{try{localStorage.setItem(c,e)}catch(e){}document.cookie="".concat(i,"=").concat(e,"; path=/; max-age=").concat(31536e3,"; SameSite=Lax"),h(e),m(o(e)),l(e)},[]);return(0,n.jsx)(s.Provider,{value:{theme:d,resolved:u,setTheme:x},children:r})}function h(){return(0,a.useContext)(s)}}},e=>{e.O(0,[741,760,619,454,441,255,358],()=>e(e.s=79076)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[329],{25016:(e,t,a)=>{"use strict";a.d(t,{BC:()=>h,P6:()=>p,PJ:()=>m,R8:()=>u,az:()=>l,cn:()=>i,jh:()=>s,l7:()=>o,r6:()=>d});var r=a(2821),n=a(75889);function i(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return(0,n.QP)((0,r.$)(t))}function c(e,t){var a;return new Intl.NumberFormat("en-US",{maximumFractionDigits:null!=(a=null==t?void 0:t.maxFrac)?a:0}).format(e)}function s(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en";return Number.isFinite(e)?"zh"===t?e>=1e8?(e/1e8).toFixed(2)+"亿":e>=1e4?(e/1e4).toFixed(1)+"万":c(e):e>=1e9?(e/1e9).toFixed(2)+"B":e>=1e6?(e/1e6).toFixed(2)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":c(e):"0"}function l(e,t){var a,r;return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:null!=(a=null==t?void 0:t.minFrac)?a:2,maximumFractionDigits:null!=(r=null==t?void 0:t.maxFrac)?r:2}).format(e)}function o(e){return 0===e?"$0":e<.01?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:4,maximumFractionDigits:6}).format(e):l(e)}function u(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Number.isFinite(e)?"".concat((100*e).toFixed(t),"%"):"0%"}function d(e){let t="string"==typeof e||"number"==typeof e?new Date(e):e;if(Number.isNaN(t.getTime()))return"";let a=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),c=String(t.getMinutes()).padStart(2,"0"),s=String(t.getSeconds()).padStart(2,"0");return"".concat(a,"-").concat(r,"-").concat(n," ").concat(i,":").concat(c,":").concat(s)}function m(e){if(!e)return"(unknown)";let t=e.replace(/\/+$/,"").split("/");return t[t.length-1]||e}function h(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;return e?e.replace(/-/g,"").slice(0,t):""}let x={mini:"Mini",nano:"Nano",pro:"Pro",turbo:"Turbo",preview:"Preview"};function p(e){if(!e)return"(unknown)";let t=e.replace(/^(vertex_ai|bedrock|anthropic|openai)\//,""),a=t.toLowerCase();if(a.startsWith("gpt-")||/^o\d/.test(a))return a.startsWith("gpt-")?"GPT-"+t.slice(4).split("-").map(e=>{var t;return null!=(t=x[e.toLowerCase()])?t:e}).join(" "):t.toUpperCase();let r=t.replace(/-(\d{8})$/,""),n=(r=r.replace(/^claude-/,"")).split("-");if(n.length>=2){let e=n[0],t=n.slice(1).join(".");return g(e)+" "+t}return g(r.replace(/-/g," "))}function g(e){return e.replace(/\b\w/g,e=>e.toUpperCase())}},38059:(e,t,a)=>{"use strict";a.d(t,{TokenStackChart:()=>x});var r=a(95155),n=a(26991),i=a(94632),c=a(68425),s=a(47734),l=a(73697),o=a(23508),u=a(26736),d=a(25016),m=a(19454);let h={input:"rgb(var(--chart-input))",output:"rgb(var(--chart-output))",cacheRead:"rgb(var(--chart-cache-read))",cacheCreation:"rgb(var(--chart-cache-create))"};function x(e){let{data:t,height:a="h-72"}=e,x=(0,m.kj)(),{locale:f}=(0,m.s9)();return t.length?(0,r.jsxs)("div",{className:"".concat(a," w-full"),children:[(0,r.jsx)(n.u,{width:"100%",height:"100%",children:(0,r.jsxs)(i.E,{data:t,margin:{top:12,right:8,bottom:4,left:8},children:[(0,r.jsx)(c.d,{stroke:"rgb(var(--chart-grid))",strokeDasharray:"3 3",vertical:!1}),(0,r.jsx)(s.W,{dataKey:"label",tick:{fill:"rgb(var(--chart-axis))",fontSize:11},tickLine:!1,axisLine:{stroke:"rgb(var(--chart-grid))"},interval:"preserveStartEnd",minTickGap:32}),(0,r.jsx)(l.h,{tickFormatter:e=>(0,d.jh)(Number(e),f),tick:{fill:"rgb(var(--chart-axis))",fontSize:11},tickLine:!1,axisLine:{stroke:"rgb(var(--chart-grid))"},width:56}),(0,r.jsx)(o.m,{content:(0,r.jsx)(g,{}),cursor:{fill:"rgb(var(--text-primary) / 0.04)"}}),(0,r.jsx)(u.y,{dataKey:"input",stackId:"a",fill:h.input,isAnimationActive:!1}),(0,r.jsx)(u.y,{dataKey:"cacheCreation",stackId:"a",fill:h.cacheCreation,isAnimationActive:!1}),(0,r.jsx)(u.y,{dataKey:"cacheRead",stackId:"a",fill:h.cacheRead,isAnimationActive:!1}),(0,r.jsx)(u.y,{dataKey:"output",stackId:"a",fill:h.output,radius:[3,3,0,0],isAnimationActive:!1})]})}),(0,r.jsxs)("div",{className:"flex items-center flex-wrap justify-center gap-4 text-xs text-text-secondary mt-2",children:[(0,r.jsx)(p,{color:h.input,label:x("chart.legend.input")}),(0,r.jsx)(p,{color:h.cacheCreation,label:x("chart.legend.cacheWrite")}),(0,r.jsx)(p,{color:h.cacheRead,label:x("chart.legend.cacheRead")}),(0,r.jsx)(p,{color:h.output,label:x("chart.legend.output")})]})]}):(0,r.jsx)("div",{className:"".concat(a," flex items-center justify-center text-text-tertiary text-sm"),children:x("chart.empty")})}function p(e){let{color:t,label:a}=e;return(0,r.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,r.jsx)("span",{className:"w-2.5 h-2.5 rounded-sm",style:{background:t}}),(0,r.jsx)("span",{children:a})]})}function g(e){let t=(0,m.kj)(),{locale:a}=(0,m.s9)();if(!e.active||!e.payload||!e.payload.length)return null;let n=e.payload[0].payload,i=n.input+n.output+n.cacheRead+n.cacheCreation;return(0,r.jsxs)("div",{className:"card border-border-hi shadow-lg p-3 text-xs min-w-[200px]",children:[(0,r.jsx)("div",{className:"font-medium text-text-primary mb-2",children:e.label}),(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)(f,{color:h.input,label:t("chart.legend.input"),value:n.input,locale:a}),(0,r.jsx)(f,{color:h.cacheCreation,label:t("chart.legend.cacheWrite"),value:n.cacheCreation,locale:a}),(0,r.jsx)(f,{color:h.cacheRead,label:t("chart.legend.cacheRead"),value:n.cacheRead,locale:a}),(0,r.jsx)(f,{color:h.output,label:t("chart.legend.output"),value:n.output,locale:a})]}),(0,r.jsxs)("div",{className:"mt-2 pt-2 border-t border-border flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.total")}),(0,r.jsx)("span",{className:"num-mono text-text-primary",children:(0,d.jh)(i,a)})]}),(0,r.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,r.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.cost")}),(0,r.jsx)("span",{className:"num-mono text-brand",children:(0,d.az)(n.cost)})]}),(0,r.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,r.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.requests")}),(0,r.jsx)("span",{className:"num-mono text-text-primary",children:n.requests})]})]})}function f(e){let{color:t,label:a,value:n,locale:i}=e;return(0,r.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,r.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-text-secondary",children:[(0,r.jsx)("span",{className:"w-2 h-2 rounded-sm",style:{background:t}}),a]}),(0,r.jsx)("span",{className:"num-mono text-text-primary",children:(0,d.jh)(n,i)})]})}},85653:(e,t,a)=>{Promise.resolve().then(a.bind(a,38059))}},e=>{e.O(0,[760,930,454,441,255,358],()=>e(e.s=85653)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{8608:(e,t,a)=>{"use strict";a.d(t,{ModelBarChart:()=>i});var r=a(95155),s=a(25016),n=a(19454);let c={opus:"rgb(var(--chart-output))",sonnet:"rgb(var(--chart-input))",haiku:"rgb(var(--chart-cache-read))"};function i(e){let{models:t}=e,a=(0,n.kj)(),{locale:i}=(0,n.s9)();if(!t.length)return(0,r.jsx)("div",{className:"text-sm text-text-tertiary",children:a("chart.empty")});let l=Math.max(...t.map(e=>e.cost),1e-4),o=t.reduce((e,t)=>e+t.cost,0);return(0,r.jsx)("div",{className:"space-y-3",children:t.map(e=>{let t=o>0?e.cost/o:0;return(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsxs)("div",{className:"flex items-baseline justify-between gap-3 text-sm",children:[(0,r.jsx)("span",{className:"font-medium text-text-primary",children:(0,s.P6)(e.model)}),(0,r.jsxs)("span",{className:"text-xs text-text-secondary tabular-nums flex-1 text-right",children:[(0,s.jh)(e.totalTokens,i)," \xb7 ",(0,s.R8)(t)]}),(0,r.jsx)("span",{className:"num-mono text-text-primary min-w-[80px] text-right",children:(0,s.az)(e.cost)})]}),(0,r.jsx)("div",{className:"h-2 w-full bg-bg-surface-hi rounded overflow-hidden",children:(0,r.jsx)("div",{className:"h-full rounded",style:{width:"".concat(e.cost/l*100,"%"),background:function(e){for(let t of Object.keys(c))if(e.toLowerCase().includes(t))return c[t];return"rgb(var(--chart-cache-create))"}(e.model)}})})]},e.model)})})}},15468:(e,t,a)=>{Promise.resolve().then(a.bind(a,25763)),Promise.resolve().then(a.bind(a,8608)),Promise.resolve().then(a.bind(a,38059))},25016:(e,t,a)=>{"use strict";a.d(t,{BC:()=>u,P6:()=>p,PJ:()=>x,R8:()=>d,az:()=>l,cn:()=>n,jh:()=>i,l7:()=>o,r6:()=>m});var r=a(2821),s=a(75889);function n(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return(0,s.QP)((0,r.$)(t))}function c(e,t){var a;return new Intl.NumberFormat("en-US",{maximumFractionDigits:null!=(a=null==t?void 0:t.maxFrac)?a:0}).format(e)}function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en";return Number.isFinite(e)?"zh"===t?e>=1e8?(e/1e8).toFixed(2)+"亿":e>=1e4?(e/1e4).toFixed(1)+"万":c(e):e>=1e9?(e/1e9).toFixed(2)+"B":e>=1e6?(e/1e6).toFixed(2)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":c(e):"0"}function l(e,t){var a,r;return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:null!=(a=null==t?void 0:t.minFrac)?a:2,maximumFractionDigits:null!=(r=null==t?void 0:t.maxFrac)?r:2}).format(e)}function o(e){return 0===e?"$0":e<.01?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:4,maximumFractionDigits:6}).format(e):l(e)}function d(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Number.isFinite(e)?"".concat((100*e).toFixed(t),"%"):"0%"}function m(e){let t="string"==typeof e||"number"==typeof e?new Date(e):e;if(Number.isNaN(t.getTime()))return"";let a=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),n=String(t.getHours()).padStart(2,"0"),c=String(t.getMinutes()).padStart(2,"0"),i=String(t.getSeconds()).padStart(2,"0");return"".concat(a,"-").concat(r,"-").concat(s," ").concat(n,":").concat(c,":").concat(i)}function x(e){if(!e)return"(unknown)";let t=e.replace(/\/+$/,"").split("/");return t[t.length-1]||e}function u(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;return e?e.replace(/-/g,"").slice(0,t):""}let h={mini:"Mini",nano:"Nano",pro:"Pro",turbo:"Turbo",preview:"Preview"};function p(e){if(!e)return"(unknown)";let t=e.replace(/^(vertex_ai|bedrock|anthropic|openai)\//,""),a=t.toLowerCase();if(a.startsWith("gpt-")||/^o\d/.test(a))return a.startsWith("gpt-")?"GPT-"+t.slice(4).split("-").map(e=>{var t;return null!=(t=h[e.toLowerCase()])?t:e}).join(" "):t.toUpperCase();let r=t.replace(/-(\d{8})$/,""),s=(r=r.replace(/^claude-/,"")).split("-");if(s.length>=2){let e=s[0],t=s.slice(1).join(".");return j(e)+" "+t}return j(r.replace(/-/g," "))}function j(e){return e.replace(/\b\w/g,e=>e.toUpperCase())}},25763:(e,t,a)=>{"use strict";a.d(t,{BlockProgress:()=>i});var r=a(95155),s=a(12115),n=a(25016),c=a(19454);function i(e){let{initial:t}=e,a=(0,c.kj)(),{locale:s}=(0,c.s9)(),i=e=>(0,n.jh)(e,s);return t.hasBlock&&t.endTime&&t.startTime?(0,r.jsxs)("div",{className:"card card-pad min-h-[180px]",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("div",{className:"label",children:a("block.title")}),(0,r.jsxs)("span",{className:"pill bg-success/10 text-success border border-success/20",children:[(0,r.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-success mr-1 animate-pulse"}),a("common.live")]})]}),(0,r.jsx)(l,{startTime:t.startTime,endTime:t.endTime,totalTokens:t.totalTokens,remainingLabel:a("block.remaining"),renderElapsed:e=>a("block.elapsed",{pct:e}),tokensSuffix:a("block.tokensSuffix"),fmtTokens:i}),(0,r.jsxs)("div",{className:"mt-4 pt-4 border-t border-border grid grid-cols-2 gap-3 text-xs",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-text-tertiary",children:a("block.spentSoFar")}),(0,r.jsx)("div",{className:"num-mono text-text-primary mt-0.5 text-base",children:(0,n.az)(t.cost)})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-text-tertiary",children:a("block.burnPerMin")}),(0,r.jsx)("div",{className:"num-mono text-text-primary mt-0.5 text-base",children:i(t.burnRatePerMin)})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-text-tertiary",children:a("block.projectedTotal")}),(0,r.jsx)("div",{className:"num-mono text-text-secondary mt-0.5",children:(0,n.az)(t.projectedCost)})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-text-tertiary",children:a("block.requests")}),(0,r.jsx)("div",{className:"num-mono text-text-secondary mt-0.5",children:t.requests})]})]})]}):(0,r.jsxs)("div",{className:"card card-pad min-h-[180px] flex flex-col",children:[(0,r.jsx)("div",{className:"label",children:a("block.title")}),(0,r.jsx)("div",{className:"text-sm text-text-tertiary mt-4",children:a("block.empty")}),(0,r.jsx)("div",{className:"text-xs text-text-tertiary mt-1",children:a("block.emptyDesc")})]})}function l(e){let{startTime:t,endTime:a,totalTokens:n,remainingLabel:c,renderElapsed:i,tokensSuffix:l,fmtTokens:o}=e,[d,m]=(0,s.useState)(()=>Date.now());(0,s.useEffect)(()=>{let e=setInterval(()=>m(Date.now()),1e3);return()=>clearInterval(e)},[]);let x=new Date(t).getTime(),u=new Date(a).getTime(),h=Math.max(0,d-x),p=Math.max(0,u-d),j=Math.min(1,h/(u-x)),f=i((100*j).toFixed(1));return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"mt-3 flex items-baseline gap-2",children:[(0,r.jsx)("div",{className:"num-hero",children:function(e){if(e<=0)return"0s";let t=Math.floor(e/1e3),a=Math.floor(t/3600),r=Math.floor(t%3600/60),s=t%60;return a>0?"".concat(a,"h ").concat(String(r).padStart(2,"0"),"m"):r>0?"".concat(r,"m ").concat(String(s).padStart(2,"0"),"s"):"".concat(s,"s")}(p)}),(0,r.jsx)("div",{className:"text-xs text-text-secondary",children:c})]}),(0,r.jsxs)("div",{className:"mt-3 space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between text-xs text-text-secondary",children:[(0,r.jsx)("span",{children:f}),(0,r.jsxs)("span",{className:"num-mono",children:[o(n)," ",l]})]}),(0,r.jsx)("div",{className:"h-1.5 bg-bg-surface-hi rounded-full overflow-hidden",children:(0,r.jsx)("div",{className:"h-full bg-gradient-to-r from-brand to-brand-hover transition-all",style:{width:"".concat(100*j,"%")},suppressHydrationWarning:!0})})]})]})}},38059:(e,t,a)=>{"use strict";a.d(t,{TokenStackChart:()=>h});var r=a(95155),s=a(26991),n=a(94632),c=a(68425),i=a(47734),l=a(73697),o=a(23508),d=a(26736),m=a(25016),x=a(19454);let u={input:"rgb(var(--chart-input))",output:"rgb(var(--chart-output))",cacheRead:"rgb(var(--chart-cache-read))",cacheCreation:"rgb(var(--chart-cache-create))"};function h(e){let{data:t,height:a="h-72"}=e,h=(0,x.kj)(),{locale:f}=(0,x.s9)();return t.length?(0,r.jsxs)("div",{className:"".concat(a," w-full"),children:[(0,r.jsx)(s.u,{width:"100%",height:"100%",children:(0,r.jsxs)(n.E,{data:t,margin:{top:12,right:8,bottom:4,left:8},children:[(0,r.jsx)(c.d,{stroke:"rgb(var(--chart-grid))",strokeDasharray:"3 3",vertical:!1}),(0,r.jsx)(i.W,{dataKey:"label",tick:{fill:"rgb(var(--chart-axis))",fontSize:11},tickLine:!1,axisLine:{stroke:"rgb(var(--chart-grid))"},interval:"preserveStartEnd",minTickGap:32}),(0,r.jsx)(l.h,{tickFormatter:e=>(0,m.jh)(Number(e),f),tick:{fill:"rgb(var(--chart-axis))",fontSize:11},tickLine:!1,axisLine:{stroke:"rgb(var(--chart-grid))"},width:56}),(0,r.jsx)(o.m,{content:(0,r.jsx)(j,{}),cursor:{fill:"rgb(var(--text-primary) / 0.04)"}}),(0,r.jsx)(d.y,{dataKey:"input",stackId:"a",fill:u.input,isAnimationActive:!1}),(0,r.jsx)(d.y,{dataKey:"cacheCreation",stackId:"a",fill:u.cacheCreation,isAnimationActive:!1}),(0,r.jsx)(d.y,{dataKey:"cacheRead",stackId:"a",fill:u.cacheRead,isAnimationActive:!1}),(0,r.jsx)(d.y,{dataKey:"output",stackId:"a",fill:u.output,radius:[3,3,0,0],isAnimationActive:!1})]})}),(0,r.jsxs)("div",{className:"flex items-center flex-wrap justify-center gap-4 text-xs text-text-secondary mt-2",children:[(0,r.jsx)(p,{color:u.input,label:h("chart.legend.input")}),(0,r.jsx)(p,{color:u.cacheCreation,label:h("chart.legend.cacheWrite")}),(0,r.jsx)(p,{color:u.cacheRead,label:h("chart.legend.cacheRead")}),(0,r.jsx)(p,{color:u.output,label:h("chart.legend.output")})]})]}):(0,r.jsx)("div",{className:"".concat(a," flex items-center justify-center text-text-tertiary text-sm"),children:h("chart.empty")})}function p(e){let{color:t,label:a}=e;return(0,r.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,r.jsx)("span",{className:"w-2.5 h-2.5 rounded-sm",style:{background:t}}),(0,r.jsx)("span",{children:a})]})}function j(e){let t=(0,x.kj)(),{locale:a}=(0,x.s9)();if(!e.active||!e.payload||!e.payload.length)return null;let s=e.payload[0].payload,n=s.input+s.output+s.cacheRead+s.cacheCreation;return(0,r.jsxs)("div",{className:"card border-border-hi shadow-lg p-3 text-xs min-w-[200px]",children:[(0,r.jsx)("div",{className:"font-medium text-text-primary mb-2",children:e.label}),(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)(f,{color:u.input,label:t("chart.legend.input"),value:s.input,locale:a}),(0,r.jsx)(f,{color:u.cacheCreation,label:t("chart.legend.cacheWrite"),value:s.cacheCreation,locale:a}),(0,r.jsx)(f,{color:u.cacheRead,label:t("chart.legend.cacheRead"),value:s.cacheRead,locale:a}),(0,r.jsx)(f,{color:u.output,label:t("chart.legend.output"),value:s.output,locale:a})]}),(0,r.jsxs)("div",{className:"mt-2 pt-2 border-t border-border flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.total")}),(0,r.jsx)("span",{className:"num-mono text-text-primary",children:(0,m.jh)(n,a)})]}),(0,r.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,r.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.cost")}),(0,r.jsx)("span",{className:"num-mono text-brand",children:(0,m.az)(s.cost)})]}),(0,r.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,r.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.requests")}),(0,r.jsx)("span",{className:"num-mono text-text-primary",children:s.requests})]})]})}function f(e){let{color:t,label:a,value:s,locale:n}=e;return(0,r.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,r.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-text-secondary",children:[(0,r.jsx)("span",{className:"w-2 h-2 rounded-sm",style:{background:t}}),a]}),(0,r.jsx)("span",{className:"num-mono text-text-primary",children:(0,m.jh)(s,n)})]})}}},e=>{e.O(0,[760,930,454,441,255,358],()=>e(e.s=15468)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[801,824],{25016:(e,t,a)=>{"use strict";a.d(t,{BC:()=>h,P6:()=>p,PJ:()=>m,R8:()=>u,az:()=>l,cn:()=>i,jh:()=>s,l7:()=>o,r6:()=>d});var r=a(2821),n=a(75889);function i(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return(0,n.QP)((0,r.$)(t))}function c(e,t){var a;return new Intl.NumberFormat("en-US",{maximumFractionDigits:null!=(a=null==t?void 0:t.maxFrac)?a:0}).format(e)}function s(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en";return Number.isFinite(e)?"zh"===t?e>=1e8?(e/1e8).toFixed(2)+"亿":e>=1e4?(e/1e4).toFixed(1)+"万":c(e):e>=1e9?(e/1e9).toFixed(2)+"B":e>=1e6?(e/1e6).toFixed(2)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":c(e):"0"}function l(e,t){var a,r;return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:null!=(a=null==t?void 0:t.minFrac)?a:2,maximumFractionDigits:null!=(r=null==t?void 0:t.maxFrac)?r:2}).format(e)}function o(e){return 0===e?"$0":e<.01?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:4,maximumFractionDigits:6}).format(e):l(e)}function u(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Number.isFinite(e)?"".concat((100*e).toFixed(t),"%"):"0%"}function d(e){let t="string"==typeof e||"number"==typeof e?new Date(e):e;if(Number.isNaN(t.getTime()))return"";let a=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),c=String(t.getMinutes()).padStart(2,"0"),s=String(t.getSeconds()).padStart(2,"0");return"".concat(a,"-").concat(r,"-").concat(n," ").concat(i,":").concat(c,":").concat(s)}function m(e){if(!e)return"(unknown)";let t=e.replace(/\/+$/,"").split("/");return t[t.length-1]||e}function h(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;return e?e.replace(/-/g,"").slice(0,t):""}let x={mini:"Mini",nano:"Nano",pro:"Pro",turbo:"Turbo",preview:"Preview"};function p(e){if(!e)return"(unknown)";let t=e.replace(/^(vertex_ai|bedrock|anthropic|openai)\//,""),a=t.toLowerCase();if(a.startsWith("gpt-")||/^o\d/.test(a))return a.startsWith("gpt-")?"GPT-"+t.slice(4).split("-").map(e=>{var t;return null!=(t=x[e.toLowerCase()])?t:e}).join(" "):t.toUpperCase();let r=t.replace(/-(\d{8})$/,""),n=(r=r.replace(/^claude-/,"")).split("-");if(n.length>=2){let e=n[0],t=n.slice(1).join(".");return g(e)+" "+t}return g(r.replace(/-/g," "))}function g(e){return e.replace(/\b\w/g,e=>e.toUpperCase())}},38059:(e,t,a)=>{"use strict";a.d(t,{TokenStackChart:()=>x});var r=a(95155),n=a(26991),i=a(94632),c=a(68425),s=a(47734),l=a(73697),o=a(23508),u=a(26736),d=a(25016),m=a(19454);let h={input:"rgb(var(--chart-input))",output:"rgb(var(--chart-output))",cacheRead:"rgb(var(--chart-cache-read))",cacheCreation:"rgb(var(--chart-cache-create))"};function x(e){let{data:t,height:a="h-72"}=e,x=(0,m.kj)(),{locale:f}=(0,m.s9)();return t.length?(0,r.jsxs)("div",{className:"".concat(a," w-full"),children:[(0,r.jsx)(n.u,{width:"100%",height:"100%",children:(0,r.jsxs)(i.E,{data:t,margin:{top:12,right:8,bottom:4,left:8},children:[(0,r.jsx)(c.d,{stroke:"rgb(var(--chart-grid))",strokeDasharray:"3 3",vertical:!1}),(0,r.jsx)(s.W,{dataKey:"label",tick:{fill:"rgb(var(--chart-axis))",fontSize:11},tickLine:!1,axisLine:{stroke:"rgb(var(--chart-grid))"},interval:"preserveStartEnd",minTickGap:32}),(0,r.jsx)(l.h,{tickFormatter:e=>(0,d.jh)(Number(e),f),tick:{fill:"rgb(var(--chart-axis))",fontSize:11},tickLine:!1,axisLine:{stroke:"rgb(var(--chart-grid))"},width:56}),(0,r.jsx)(o.m,{content:(0,r.jsx)(g,{}),cursor:{fill:"rgb(var(--text-primary) / 0.04)"}}),(0,r.jsx)(u.y,{dataKey:"input",stackId:"a",fill:h.input,isAnimationActive:!1}),(0,r.jsx)(u.y,{dataKey:"cacheCreation",stackId:"a",fill:h.cacheCreation,isAnimationActive:!1}),(0,r.jsx)(u.y,{dataKey:"cacheRead",stackId:"a",fill:h.cacheRead,isAnimationActive:!1}),(0,r.jsx)(u.y,{dataKey:"output",stackId:"a",fill:h.output,radius:[3,3,0,0],isAnimationActive:!1})]})}),(0,r.jsxs)("div",{className:"flex items-center flex-wrap justify-center gap-4 text-xs text-text-secondary mt-2",children:[(0,r.jsx)(p,{color:h.input,label:x("chart.legend.input")}),(0,r.jsx)(p,{color:h.cacheCreation,label:x("chart.legend.cacheWrite")}),(0,r.jsx)(p,{color:h.cacheRead,label:x("chart.legend.cacheRead")}),(0,r.jsx)(p,{color:h.output,label:x("chart.legend.output")})]})]}):(0,r.jsx)("div",{className:"".concat(a," flex items-center justify-center text-text-tertiary text-sm"),children:x("chart.empty")})}function p(e){let{color:t,label:a}=e;return(0,r.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,r.jsx)("span",{className:"w-2.5 h-2.5 rounded-sm",style:{background:t}}),(0,r.jsx)("span",{children:a})]})}function g(e){let t=(0,m.kj)(),{locale:a}=(0,m.s9)();if(!e.active||!e.payload||!e.payload.length)return null;let n=e.payload[0].payload,i=n.input+n.output+n.cacheRead+n.cacheCreation;return(0,r.jsxs)("div",{className:"card border-border-hi shadow-lg p-3 text-xs min-w-[200px]",children:[(0,r.jsx)("div",{className:"font-medium text-text-primary mb-2",children:e.label}),(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)(f,{color:h.input,label:t("chart.legend.input"),value:n.input,locale:a}),(0,r.jsx)(f,{color:h.cacheCreation,label:t("chart.legend.cacheWrite"),value:n.cacheCreation,locale:a}),(0,r.jsx)(f,{color:h.cacheRead,label:t("chart.legend.cacheRead"),value:n.cacheRead,locale:a}),(0,r.jsx)(f,{color:h.output,label:t("chart.legend.output"),value:n.output,locale:a})]}),(0,r.jsxs)("div",{className:"mt-2 pt-2 border-t border-border flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.total")}),(0,r.jsx)("span",{className:"num-mono text-text-primary",children:(0,d.jh)(i,a)})]}),(0,r.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,r.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.cost")}),(0,r.jsx)("span",{className:"num-mono text-brand",children:(0,d.az)(n.cost)})]}),(0,r.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,r.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.requests")}),(0,r.jsx)("span",{className:"num-mono text-text-primary",children:n.requests})]})]})}function f(e){let{color:t,label:a,value:n,locale:i}=e;return(0,r.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,r.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-text-secondary",children:[(0,r.jsx)("span",{className:"w-2 h-2 rounded-sm",style:{background:t}}),a]}),(0,r.jsx)("span",{className:"num-mono text-text-primary",children:(0,d.jh)(n,i)})]})}},62509:(e,t,a)=>{Promise.resolve().then(a.bind(a,38059)),Promise.resolve().then(a.t.bind(a,52619,23))}},e=>{e.O(0,[760,930,619,454,441,255,358],()=>e(e.s=62509)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[801,824],{25016:(e,t,a)=>{"use strict";a.d(t,{BC:()=>h,P6:()=>p,PJ:()=>m,R8:()=>u,az:()=>l,cn:()=>i,jh:()=>s,l7:()=>o,r6:()=>d});var r=a(2821),n=a(75889);function i(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return(0,n.QP)((0,r.$)(t))}function c(e,t){var a;return new Intl.NumberFormat("en-US",{maximumFractionDigits:null!=(a=null==t?void 0:t.maxFrac)?a:0}).format(e)}function s(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en";return Number.isFinite(e)?"zh"===t?e>=1e8?(e/1e8).toFixed(2)+"亿":e>=1e4?(e/1e4).toFixed(1)+"万":c(e):e>=1e9?(e/1e9).toFixed(2)+"B":e>=1e6?(e/1e6).toFixed(2)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":c(e):"0"}function l(e,t){var a,r;return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:null!=(a=null==t?void 0:t.minFrac)?a:2,maximumFractionDigits:null!=(r=null==t?void 0:t.maxFrac)?r:2}).format(e)}function o(e){return 0===e?"$0":e<.01?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:4,maximumFractionDigits:6}).format(e):l(e)}function u(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Number.isFinite(e)?"".concat((100*e).toFixed(t),"%"):"0%"}function d(e){let t="string"==typeof e||"number"==typeof e?new Date(e):e;if(Number.isNaN(t.getTime()))return"";let a=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),c=String(t.getMinutes()).padStart(2,"0"),s=String(t.getSeconds()).padStart(2,"0");return"".concat(a,"-").concat(r,"-").concat(n," ").concat(i,":").concat(c,":").concat(s)}function m(e){if(!e)return"(unknown)";let t=e.replace(/\/+$/,"").split("/");return t[t.length-1]||e}function h(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;return e?e.replace(/-/g,"").slice(0,t):""}let x={mini:"Mini",nano:"Nano",pro:"Pro",turbo:"Turbo",preview:"Preview"};function p(e){if(!e)return"(unknown)";let t=e.replace(/^(vertex_ai|bedrock|anthropic|openai)\//,""),a=t.toLowerCase();if(a.startsWith("gpt-")||/^o\d/.test(a))return a.startsWith("gpt-")?"GPT-"+t.slice(4).split("-").map(e=>{var t;return null!=(t=x[e.toLowerCase()])?t:e}).join(" "):t.toUpperCase();let r=t.replace(/-(\d{8})$/,""),n=(r=r.replace(/^claude-/,"")).split("-");if(n.length>=2){let e=n[0],t=n.slice(1).join(".");return g(e)+" "+t}return g(r.replace(/-/g," "))}function g(e){return e.replace(/\b\w/g,e=>e.toUpperCase())}},38059:(e,t,a)=>{"use strict";a.d(t,{TokenStackChart:()=>x});var r=a(95155),n=a(26991),i=a(94632),c=a(68425),s=a(47734),l=a(73697),o=a(23508),u=a(26736),d=a(25016),m=a(19454);let h={input:"rgb(var(--chart-input))",output:"rgb(var(--chart-output))",cacheRead:"rgb(var(--chart-cache-read))",cacheCreation:"rgb(var(--chart-cache-create))"};function x(e){let{data:t,height:a="h-72"}=e,x=(0,m.kj)(),{locale:f}=(0,m.s9)();return t.length?(0,r.jsxs)("div",{className:"".concat(a," w-full"),children:[(0,r.jsx)(n.u,{width:"100%",height:"100%",children:(0,r.jsxs)(i.E,{data:t,margin:{top:12,right:8,bottom:4,left:8},children:[(0,r.jsx)(c.d,{stroke:"rgb(var(--chart-grid))",strokeDasharray:"3 3",vertical:!1}),(0,r.jsx)(s.W,{dataKey:"label",tick:{fill:"rgb(var(--chart-axis))",fontSize:11},tickLine:!1,axisLine:{stroke:"rgb(var(--chart-grid))"},interval:"preserveStartEnd",minTickGap:32}),(0,r.jsx)(l.h,{tickFormatter:e=>(0,d.jh)(Number(e),f),tick:{fill:"rgb(var(--chart-axis))",fontSize:11},tickLine:!1,axisLine:{stroke:"rgb(var(--chart-grid))"},width:56}),(0,r.jsx)(o.m,{content:(0,r.jsx)(g,{}),cursor:{fill:"rgb(var(--text-primary) / 0.04)"}}),(0,r.jsx)(u.y,{dataKey:"input",stackId:"a",fill:h.input,isAnimationActive:!1}),(0,r.jsx)(u.y,{dataKey:"cacheCreation",stackId:"a",fill:h.cacheCreation,isAnimationActive:!1}),(0,r.jsx)(u.y,{dataKey:"cacheRead",stackId:"a",fill:h.cacheRead,isAnimationActive:!1}),(0,r.jsx)(u.y,{dataKey:"output",stackId:"a",fill:h.output,radius:[3,3,0,0],isAnimationActive:!1})]})}),(0,r.jsxs)("div",{className:"flex items-center flex-wrap justify-center gap-4 text-xs text-text-secondary mt-2",children:[(0,r.jsx)(p,{color:h.input,label:x("chart.legend.input")}),(0,r.jsx)(p,{color:h.cacheCreation,label:x("chart.legend.cacheWrite")}),(0,r.jsx)(p,{color:h.cacheRead,label:x("chart.legend.cacheRead")}),(0,r.jsx)(p,{color:h.output,label:x("chart.legend.output")})]})]}):(0,r.jsx)("div",{className:"".concat(a," flex items-center justify-center text-text-tertiary text-sm"),children:x("chart.empty")})}function p(e){let{color:t,label:a}=e;return(0,r.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,r.jsx)("span",{className:"w-2.5 h-2.5 rounded-sm",style:{background:t}}),(0,r.jsx)("span",{children:a})]})}function g(e){let t=(0,m.kj)(),{locale:a}=(0,m.s9)();if(!e.active||!e.payload||!e.payload.length)return null;let n=e.payload[0].payload,i=n.input+n.output+n.cacheRead+n.cacheCreation;return(0,r.jsxs)("div",{className:"card border-border-hi shadow-lg p-3 text-xs min-w-[200px]",children:[(0,r.jsx)("div",{className:"font-medium text-text-primary mb-2",children:e.label}),(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)(f,{color:h.input,label:t("chart.legend.input"),value:n.input,locale:a}),(0,r.jsx)(f,{color:h.cacheCreation,label:t("chart.legend.cacheWrite"),value:n.cacheCreation,locale:a}),(0,r.jsx)(f,{color:h.cacheRead,label:t("chart.legend.cacheRead"),value:n.cacheRead,locale:a}),(0,r.jsx)(f,{color:h.output,label:t("chart.legend.output"),value:n.output,locale:a})]}),(0,r.jsxs)("div",{className:"mt-2 pt-2 border-t border-border flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.total")}),(0,r.jsx)("span",{className:"num-mono text-text-primary",children:(0,d.jh)(i,a)})]}),(0,r.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,r.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.cost")}),(0,r.jsx)("span",{className:"num-mono text-brand",children:(0,d.az)(n.cost)})]}),(0,r.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,r.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.requests")}),(0,r.jsx)("span",{className:"num-mono text-text-primary",children:n.requests})]})]})}function f(e){let{color:t,label:a,value:n,locale:i}=e;return(0,r.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,r.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-text-secondary",children:[(0,r.jsx)("span",{className:"w-2 h-2 rounded-sm",style:{background:t}}),a]}),(0,r.jsx)("span",{className:"num-mono text-text-primary",children:(0,d.jh)(n,i)})]})}},62509:(e,t,a)=>{Promise.resolve().then(a.bind(a,38059)),Promise.resolve().then(a.t.bind(a,52619,23))}},e=>{e.O(0,[760,930,619,454,441,255,358],()=>e(e.s=62509)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[430],{1189:(e,t,r)=>{"use strict";r.d(t,{V:()=>o});var a=r(95155),n=r(20063),s=r(12115),l=r(25016),i=r(19454);function o(e){let{paramKey:t,defaultValue:r,options:o,ariaLabel:c}=e,d=(0,n.useRouter)(),u=(0,n.usePathname)(),m=(0,n.useSearchParams)(),x=(0,i.kj)(),h=m.get(t)||r,p=(0,s.useRef)(null);function b(e){let r=new URLSearchParams(m.toString());r.set(t,e),d.push("".concat(u,"?").concat(r.toString()))}return(0,a.jsx)("div",{ref:p,role:"radiogroup","aria-label":c,onKeyDown:function(e){var t,r;if("ArrowLeft"!==e.key&&"ArrowRight"!==e.key)return;e.preventDefault();let a=(o.findIndex(e=>e.value===h)+("ArrowRight"===e.key?1:-1)+o.length)%o.length;b(o[a].value);let n=null==(t=p.current)?void 0:t.querySelectorAll('button[role="radio"]');null==n||null==(r=n[a])||r.focus()},className:"inline-flex rounded-button border border-border bg-bg-surface p-0.5",children:o.map(e=>{let t=h===e.value;return(0,a.jsx)("button",{role:"radio","aria-checked":t,tabIndex:t?0:-1,onClick:()=>b(e.value),className:(0,l.cn)("px-2.5 py-1 text-xs font-medium rounded transition-colors","focus:outline-none focus-visible:ring-2 focus-visible:ring-brand/40",t?"bg-bg-surface-hi text-text-primary":"text-text-secondary hover:text-text-primary"),children:x(e.tk)},e.value)})})}},7152:(e,t,r)=>{"use strict";r.d(t,{RangePicker:()=>i});var a=r(95155),n=r(1189),s=r(19454);let l=[{value:"1d",tk:"range.today"},{value:"7d",tk:"range.7d"},{value:"30d",tk:"range.30d"},{value:"90d",tk:"range.90d"},{value:"all",tk:"range.all"}];function i(e){let{defaultValue:t="7d"}=e,r=(0,s.kj)();return(0,a.jsx)(n.V,{paramKey:"range",defaultValue:t,options:l,ariaLabel:r("range.label")})}},8336:(e,t,r)=>{"use strict";r.d(t,{ModelFilter:()=>i});var a=r(95155),n=r(35850),s=r(25016),l=r(19454);function i(e){let{all:t,selected:r}=e,i=(0,l.kj)();return(0,a.jsx)(n.K,{paramKey:"models",all:t,selected:r,render:s.P6,labelAllKey:"filter.modelAll",labelSingleKey:"filter.modelSingle",labelMultiKey:"filter.modelMulti",ariaLabel:i("filter.modelLabel")})}},14920:(e,t,r)=>{"use strict";r.d(t,{ProjectFilter:()=>i});var a=r(95155),n=r(35850),s=r(25016),l=r(19454);function i(e){let{all:t,selected:r}=e,i=(0,l.kj)();return(0,a.jsx)(n.K,{paramKey:"projects",all:t,selected:r,render:s.PJ,labelAllKey:"filter.projectAll",labelSingleKey:"filter.projectSingle",labelMultiKey:"filter.projectMulti",ariaLabel:i("filter.projectLabel")})}},16633:(e,t,r)=>{"use strict";r.d(t,{GranularityPicker:()=>i});var a=r(95155),n=r(1189),s=r(19454);let l=[{value:"hour",tk:"gran.hour"},{value:"day",tk:"gran.day"},{value:"week",tk:"gran.week"},{value:"month",tk:"gran.month"}];function i(e){let{defaultValue:t="day"}=e,r=(0,s.kj)();return(0,a.jsx)(n.V,{paramKey:"gran",defaultValue:t,options:l,ariaLabel:r("gran.label")})}},20857:(e,t,r)=>{"use strict";r.d(t,{H:()=>l});var a=r(95155),n=r(12115),s=r(25016);function l(e){let{children:t,className:r}=e,l=(0,n.useRef)(null),[i,o]=(0,n.useState)(!1),[c,d]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{let e=l.current;if(!e)return;function t(){if(!e)return;let{scrollLeft:t,scrollWidth:r,clientWidth:a}=e;o(t>4),d(t+a<r-4)}t(),e.addEventListener("scroll",t,{passive:!0});let r=new ResizeObserver(t);return r.observe(e),()=>{e.removeEventListener("scroll",t),r.disconnect()}},[]),(0,a.jsxs)("div",{className:(0,s.cn)("relative",r),children:[(0,a.jsx)("div",{ref:l,className:"overflow-x-auto",children:t}),(0,a.jsx)("div",{"aria-hidden":!0,className:(0,s.cn)("pointer-events-none absolute left-0 top-0 bottom-0 w-8 bg-gradient-to-r from-bg-surface to-transparent transition-opacity duration-150",i?"opacity-100":"opacity-0")}),(0,a.jsx)("div",{"aria-hidden":!0,className:(0,s.cn)("pointer-events-none absolute right-0 top-0 bottom-0 w-8 bg-gradient-to-l from-bg-surface to-transparent transition-opacity duration-150",c?"opacity-100":"opacity-0")})]})}},25016:(e,t,r)=>{"use strict";r.d(t,{BC:()=>x,P6:()=>p,PJ:()=>m,R8:()=>d,az:()=>o,cn:()=>s,jh:()=>i,l7:()=>c,r6:()=>u});var a=r(2821),n=r(75889);function s(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,n.QP)((0,a.$)(t))}function l(e,t){var r;return new Intl.NumberFormat("en-US",{maximumFractionDigits:null!=(r=null==t?void 0:t.maxFrac)?r:0}).format(e)}function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en";return Number.isFinite(e)?"zh"===t?e>=1e8?(e/1e8).toFixed(2)+"亿":e>=1e4?(e/1e4).toFixed(1)+"万":l(e):e>=1e9?(e/1e9).toFixed(2)+"B":e>=1e6?(e/1e6).toFixed(2)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":l(e):"0"}function o(e,t){var r,a;return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:null!=(r=null==t?void 0:t.minFrac)?r:2,maximumFractionDigits:null!=(a=null==t?void 0:t.maxFrac)?a:2}).format(e)}function c(e){return 0===e?"$0":e<.01?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:4,maximumFractionDigits:6}).format(e):o(e)}function d(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Number.isFinite(e)?"".concat((100*e).toFixed(t),"%"):"0%"}function u(e){let t="string"==typeof e||"number"==typeof e?new Date(e):e;if(Number.isNaN(t.getTime()))return"";let r=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),l=String(t.getMinutes()).padStart(2,"0"),i=String(t.getSeconds()).padStart(2,"0");return"".concat(r,"-").concat(a,"-").concat(n," ").concat(s,":").concat(l,":").concat(i)}function m(e){if(!e)return"(unknown)";let t=e.replace(/\/+$/,"").split("/");return t[t.length-1]||e}function x(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;return e?e.replace(/-/g,"").slice(0,t):""}let h={mini:"Mini",nano:"Nano",pro:"Pro",turbo:"Turbo",preview:"Preview"};function p(e){if(!e)return"(unknown)";let t=e.replace(/^(vertex_ai|bedrock|anthropic|openai)\//,""),r=t.toLowerCase();if(r.startsWith("gpt-")||/^o\d/.test(r))return r.startsWith("gpt-")?"GPT-"+t.slice(4).split("-").map(e=>{var t;return null!=(t=h[e.toLowerCase()])?t:e}).join(" "):t.toUpperCase();let a=t.replace(/-(\d{8})$/,""),n=(a=a.replace(/^claude-/,"")).split("-");if(n.length>=2){let e=n[0],t=n.slice(1).join(".");return b(e)+" "+t}return b(a.replace(/-/g," "))}function b(e){return e.replace(/\b\w/g,e=>e.toUpperCase())}},25577:(e,t,r)=>{"use strict";r.d(t,{UsageTable:()=>h});var a=r(95155),n=r(12115),s=r(20063),l=r(25016),i=r(19454),o=r(47650);function c(e){let{children:t,content:r,className:s,panelClassName:i,align:c="left",delay:d=100,maxWidth:u=360}=e,m=(0,n.useRef)(null),x=(0,n.useRef)(null),h=(0,n.useRef)(null),[p,b]=(0,n.useState)(null),[g,f]=(0,n.useState)(!1),[j,y]=(0,n.useState)(!1);function v(){h.current&&(window.clearTimeout(h.current),h.current=null),j||(x.current=window.setTimeout(()=>{let e=function(){let e,t=m.current;if(!t)return null;let r=t.getBoundingClientRect(),a=Math.min(u,window.innerWidth-16),n=window.innerHeight-r.bottom<200?"top":"bottom";return"right"===c?(e=Math.min(r.right,window.innerWidth-8))-a<8&&(e=a+8):(e=Math.max(r.left,8))+a>window.innerWidth-8&&(e=window.innerWidth-a-8),{x:e,y:"bottom"===n?r.bottom+8:r.top-8,placement:n,align:c}}();e&&(b(e),y(!0))},d))}function w(){x.current&&(window.clearTimeout(x.current),x.current=null),h.current=window.setTimeout(()=>y(!1),80)}return(0,n.useEffect)(()=>f(!0),[]),(0,n.useEffect)(()=>()=>{x.current&&window.clearTimeout(x.current),h.current&&window.clearTimeout(h.current)},[]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{ref:m,onMouseEnter:v,onMouseLeave:w,onFocus:v,onBlur:w,className:(0,l.cn)("inline-block",s),children:t}),g&&p&&(0,o.createPortal)((0,a.jsx)("div",{onMouseEnter:()=>{h.current&&(window.clearTimeout(h.current),h.current=null)},onMouseLeave:w,style:{position:"fixed",left:"right"===p.align?void 0:p.x,right:"right"===p.align?window.innerWidth-p.x:void 0,top:"bottom"===p.placement?p.y:void 0,bottom:"top"===p.placement?window.innerHeight-p.y:void 0,maxWidth:u,transform:j?"translateY(0) scale(1)":"bottom"===p.placement?"translateY(-4px) scale(0.98)":"translateY(4px) scale(0.98)",opacity:+!!j,transitionProperty:"opacity, transform",transitionDuration:"120ms",transitionTimingFunction:"cubic-bezier(0.16, 1, 0.3, 1)",transformOrigin:"bottom"===p.placement?"top":"bottom",pointerEvents:j?"auto":"none"},className:(0,l.cn)("z-50 card border-border-hi shadow-xl rounded-button",i),children:r}),document.body)]})}var d=r(20857);let u=[{id:"time",labelKey:"usage.col.time",sortKey:"timestamp",defaultVisible:!0},{id:"prompt",labelKey:"usage.col.userMessage",defaultVisible:!0},{id:"model",labelKey:"usage.col.model",defaultVisible:!0},{id:"project",labelKey:"usage.col.project",defaultVisible:!0},{id:"session",labelKey:"usage.col.session",defaultVisible:!1},{id:"calls",labelKey:"usage.col.calls",align:"right",sortKey:"callCount",defaultVisible:!1},{id:"input",labelKey:"usage.col.input",align:"right",sortKey:"inputTokens",defaultVisible:!1},{id:"output",labelKey:"usage.col.output",align:"right",sortKey:"outputTokens",defaultVisible:!1},{id:"cacheRead",labelKey:"usage.col.cacheRead",align:"right",sortKey:"cacheReadTokens",defaultVisible:!1},{id:"cacheWrite",labelKey:"usage.col.cacheWrite",align:"right",sortKey:"cacheCreationTokens",defaultVisible:!1},{id:"total",labelKey:"usage.col.total",align:"right",sortKey:"totalTokens",defaultVisible:!0},{id:"cost",labelKey:"usage.col.cost",align:"right",sortKey:"cost",defaultVisible:!1},{id:"tools",labelKey:"usage.col.tools",defaultVisible:!1}],m="ccgauge.usage.cols.v2";function x(){return u.reduce((e,t)=>(e[t.id]=t.defaultVisible,e),{})}function h(e){let{rows:t,totalCount:r,page:l,pageCount:o,sort:c,query:h}=e,b=(0,i.kj)(),{locale:f}=(0,i.s9)(),j=(0,s.useRouter)(),y=(0,s.usePathname)(),v=(0,s.useSearchParams)(),[w,N]=(0,n.useState)(new Set),[k,S]=(0,n.useState)(x),[C,K]=(0,n.useState)(!1),[R,T]=(0,n.useState)(h),P=(0,n.useRef)(null),L=(0,n.useRef)(null);function E(e){let t=new URLSearchParams(v.toString());for(let[r,a]of Object.entries(e))void 0===a||""===a?t.delete(r):t.set(r,a);let r=t.toString();j.push(r?"".concat(y,"?").concat(r):y)}function F(e){E({page:e>0?String(e+1):void 0})}(0,n.useEffect)(()=>{S(function(){try{let e=window.localStorage.getItem(m);if(!e)return x();let t=JSON.parse(e),r=x();for(let e of u)"boolean"==typeof t[e.id]&&(r[e.id]=t[e.id]);return r}catch(e){return x()}}())},[]),(0,n.useEffect)(()=>{window.localStorage.setItem(m,JSON.stringify(k))},[k]),(0,n.useEffect)(()=>{T(h)},[h]),(0,n.useEffect)(()=>{function e(e){P.current&&!P.current.contains(e.target)&&K(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),(0,n.useEffect)(()=>()=>{L.current&&(window.clearTimeout(L.current),L.current=null)},[]);let A=u.filter(e=>k[e.id]),D=A.length+1,I=A.length;return(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-3 mb-3 flex-wrap",children:[(0,a.jsx)("input",{value:R,onChange:e=>{var t;T(t=e.target.value),L.current&&window.clearTimeout(L.current),L.current=window.setTimeout(()=>{E({q:t.trim()||void 0,page:void 0})},300)},placeholder:b("common.searchPlaceholder"),className:"px-3 py-1.5 text-sm rounded-button border border-border bg-bg-surface focus:outline-none focus:border-border-hi w-72 placeholder:text-text-tertiary text-text-primary"}),(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("span",{className:"text-xs text-text-tertiary tabular-nums",children:b("common.rows",{count:r.toLocaleString()})}),(0,a.jsxs)("div",{ref:P,className:"relative",children:[(0,a.jsxs)("button",{onClick:()=>K(e=>!e),className:"btn",children:[b("usage.columns.button"),(0,a.jsx)("span",{className:"ml-1 text-text-tertiary tabular-nums",children:I})]}),C&&(0,a.jsxs)("div",{className:"absolute right-0 mt-1 w-56 card border-border-hi shadow-lg p-2 z-30",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between px-1.5 pb-1.5 mb-1 border-b border-border",children:[(0,a.jsx)("span",{className:"text-xs text-text-tertiary uppercase tracking-wide",children:b("usage.columns.title")}),(0,a.jsx)("button",{onClick:()=>S(x()),className:"text-xs text-text-tertiary hover:text-text-primary",children:b("usage.columns.reset")})]}),(0,a.jsx)("div",{className:"max-h-72 overflow-auto",children:u.map(e=>(0,a.jsxs)("label",{className:"flex items-center gap-2 px-1.5 py-1.5 text-sm rounded hover:bg-bg-surface-hi cursor-pointer",children:[(0,a.jsx)("input",{type:"checkbox",checked:!!k[e.id],onChange:t=>S(r=>({...r,[e.id]:t.target.checked})),className:"accent-brand"}),(0,a.jsx)("span",{className:"text-text-secondary",children:b(e.labelKey)})]},e.id))})]})]}),(0,a.jsx)("button",{onClick:function(){let e=new URLSearchParams(v.toString());window.location.href="/api/export/usage?".concat(e.toString())},className:"btn",children:b("common.exportCsv")})]})]}),(0,a.jsx)("div",{className:"card overflow-hidden",children:(0,a.jsx)(d.H,{children:(0,a.jsxs)("table",{className:"w-full text-sm",children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{className:"border-b border-border bg-bg-surface-hi/30",children:[(0,a.jsx)(g,{children:(0,a.jsx)("span",{className:"sr-only",children:"expand"})}),A.map(e=>(0,a.jsx)(g,{align:e.align,sorted:!!e.sortKey&&c.key===e.sortKey,dir:c.dir,onClick:e.sortKey?()=>{var t;let r;return t=e.sortKey,r="desc",void(c.key===t&&(r="asc"===c.dir?"desc":"asc"),E({sort:"timestamp"===t?void 0:t,dir:"desc"===r?void 0:r,page:void 0}))}:void 0,children:b(e.labelKey)},e.id))]})}),(0,a.jsxs)("tbody",{children:[t.map(e=>{let t=w.has(e.turnId),r=e.userText.trim()||b("usage.turn.noPrompt");return(0,a.jsx)(p,{turn:e,isOpen:t,onToggle:()=>{var t;return t=e.turnId,void N(e=>{let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r})},userText:r,expandLabel:b("usage.turn.expand"),collapseLabel:b("usage.turn.collapse"),activeColumns:A,locale:f,t:b},e.turnId)}),0===t.length&&(0,a.jsx)("tr",{children:(0,a.jsx)("td",{colSpan:D,className:"px-3 py-8 text-center text-text-tertiary text-sm",children:b("common.noMatchingRows")})})]})]})})}),o>1&&(0,a.jsxs)("div",{className:"flex items-center justify-between mt-3 text-xs text-text-secondary",children:[(0,a.jsx)("span",{children:b("common.pageOf",{page:l+1,total:o})}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("button",{onClick:()=>F(0),disabled:0===l,className:"btn-ghost disabled:opacity-40",children:b("common.first")}),(0,a.jsx)("button",{onClick:()=>F(l-1),disabled:0===l,className:"btn-ghost disabled:opacity-40",children:b("common.prev")}),(0,a.jsx)("button",{onClick:()=>F(l+1),disabled:l>=o-1,className:"btn-ghost disabled:opacity-40",children:b("common.next")}),(0,a.jsx)("button",{onClick:()=>F(o-1),disabled:l>=o-1,className:"btn-ghost disabled:opacity-40",children:b("common.last")})]})]})]})}function p(e){let{turn:t,isOpen:r,onToggle:n,userText:s,expandLabel:i,collapseLabel:o,activeColumns:d,locale:u,t:m}=e,x=1===t.models.length?(0,l.P6)(t.models[0]):"".concat((0,l.P6)(t.models[0])," +").concat(t.models.length-1),h=t.toolNames.length?t.toolNames.slice(0,3).join(", ")+(t.toolNames.length>3?"…":""):"—";return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("tr",{className:"border-b border-border last:border-b-0 hover:bg-bg-surface-hi/40 cursor-pointer",onClick:n,children:[(0,a.jsx)("td",{className:"px-2 py-2 text-text-tertiary w-6 text-center select-none",children:(0,a.jsx)("span",{title:r?o:i,className:"inline-block w-4",children:r?"▾":"▸"})}),d.map(e=>(0,a.jsx)("td",{className:(0,l.cn)("px-3 py-2","right"===e.align?"text-right":"text-left"),children:function(e,t,r,n,s,i,o){switch(e){case"time":return(0,a.jsx)("span",{className:"num-mono text-text-secondary whitespace-nowrap text-xs",children:(0,l.r6)(t.endTimestamp)});case"prompt":return(0,a.jsx)(c,{maxWidth:460,panelClassName:"p-3 text-sm text-text-secondary leading-relaxed",content:(0,a.jsx)("div",{className:"whitespace-pre-wrap break-words",children:s}),children:(0,a.jsx)("span",{className:"block text-text-secondary truncate max-w-[280px]",children:s})});case"model":return(0,a.jsx)("span",{className:"text-text-primary whitespace-nowrap",children:r});case"project":return(0,a.jsx)("span",{className:"block text-text-secondary truncate max-w-[160px]",title:t.cwd,children:(0,l.PJ)(t.cwd)});case"session":return(0,a.jsx)("span",{className:"num-mono text-text-tertiary text-xs",title:t.sessionId,children:(0,l.BC)(t.sessionId)});case"calls":return(0,a.jsx)("span",{className:"num-mono text-text-secondary",children:t.callCount});case"input":return(0,a.jsx)("span",{className:"num-mono text-text-secondary",children:(0,l.jh)(t.inputTokens,i)});case"output":return(0,a.jsx)("span",{className:"num-mono text-text-secondary",children:(0,l.jh)(t.outputTokens,i)});case"cacheRead":return(0,a.jsx)("span",{className:"num-mono text-success",children:(0,l.jh)(t.cacheReadTokens,i)});case"cacheWrite":return(0,a.jsx)("span",{className:"num-mono text-text-secondary",children:(0,l.jh)(t.cacheCreationTokens,i)});case"total":return(0,a.jsx)(c,{align:"right",maxWidth:300,panelClassName:"p-0 overflow-hidden",content:(0,a.jsx)(b,{row:t,locale:i,t:o}),children:(0,a.jsx)("span",{className:"num-mono text-text-primary font-medium border-b border-dashed border-border hover:border-text-tertiary cursor-help",children:(0,l.jh)(t.totalTokens,i)})});case"cost":return(0,a.jsx)("span",{className:"num-mono text-text-primary font-medium",children:(0,l.l7)(t.cost)});case"tools":return(0,a.jsx)("span",{className:"block text-xs text-text-tertiary truncate max-w-[160px]",title:t.toolNames.join(", "),children:n})}}(e.id,t,x,h,s,u,m)},e.id))]}),r&&t.children.map(e=>(0,a.jsxs)("tr",{className:"border-b border-border last:border-b-0 bg-bg-surface-hi/20 text-text-tertiary",children:[(0,a.jsx)("td",{className:"px-2 py-1.5 w-6"}),d.map(t=>(0,a.jsx)("td",{className:(0,l.cn)("px-3 py-1.5","right"===t.align?"text-right":"text-left"),children:function(e,t,r,n){switch(e){case"time":return(0,a.jsx)("span",{className:"num-mono whitespace-nowrap pl-5 text-xs",children:(0,l.r6)(t.timestamp)});case"prompt":return(0,a.jsx)("span",{className:"text-xs",children:"—"});case"model":return(0,a.jsx)("span",{className:"whitespace-nowrap",children:(0,l.P6)(t.model)});case"project":return(0,a.jsx)("span",{className:"block truncate max-w-[160px]",title:t.cwd,children:(0,l.PJ)(t.cwd)});case"session":return(0,a.jsx)("span",{className:"num-mono text-xs",title:t.sessionId,children:(0,l.BC)(t.sessionId)});case"calls":return(0,a.jsx)("span",{className:"num-mono",children:"1"});case"input":return(0,a.jsx)("span",{className:"num-mono",children:(0,l.jh)(t.inputTokens,r)});case"output":return(0,a.jsx)("span",{className:"num-mono",children:(0,l.jh)(t.outputTokens,r)});case"cacheRead":return(0,a.jsx)("span",{className:"num-mono text-success",children:(0,l.jh)(t.cacheReadTokens,r)});case"cacheWrite":return(0,a.jsx)("span",{className:"num-mono",children:(0,l.jh)(t.cacheCreationTokens,r)});case"total":return(0,a.jsx)(c,{align:"right",maxWidth:300,panelClassName:"p-0 overflow-hidden",content:(0,a.jsx)(b,{row:t,locale:r,t:n}),children:(0,a.jsx)("span",{className:"num-mono border-b border-dashed border-border/60 hover:border-text-tertiary cursor-help",children:(0,l.jh)(t.totalTokens,r)})});case"cost":return(0,a.jsx)("span",{className:"num-mono",children:(0,l.l7)(t.cost)});case"tools":return(0,a.jsx)("span",{className:"block text-xs truncate max-w-[160px]",title:t.toolNames.join(", "),children:t.toolNames.length?t.toolNames.join(", "):"—"})}}(t.id,e,u,m)},t.id))]},e.uuid))]})}function b(e){let{row:t,locale:r,t:s}=e,i=[{key:"input",label:s("usage.col.input"),tokens:t.inputTokens,cost:t.costInput,tone:"text-text-primary",dot:"bg-chart-input"},{key:"output",label:s("usage.col.output"),tokens:t.outputTokens,cost:t.costOutput,tone:"text-text-primary",dot:"bg-chart-output"},{key:"cacheRead",label:s("usage.col.cacheRead"),tokens:t.cacheReadTokens,cost:t.costCacheRead,tone:"text-success",dot:"bg-chart-cache-read"},{key:"cacheWrite",label:s("usage.col.cacheWrite"),tokens:t.cacheCreationTokens,cost:t.costCacheWrite,tone:"text-text-primary",dot:"bg-chart-cache-create"}];return(0,a.jsxs)("div",{className:"text-xs",children:[(0,a.jsx)("div",{className:"px-3 py-2 border-b border-border bg-bg-surface-hi/40 text-text-tertiary uppercase tracking-wide font-medium",children:s("usage.breakdown.title")}),(0,a.jsxs)("div",{className:"px-3 py-2",children:[(0,a.jsxs)("div",{className:"grid grid-cols-[auto_1fr_auto] gap-x-3 gap-y-1.5 items-center",children:[(0,a.jsx)("span",{}),(0,a.jsx)("span",{className:"text-text-tertiary text-[10px] uppercase tracking-wide text-right",children:s("usage.breakdown.headerTokens")}),(0,a.jsx)("span",{className:"text-text-tertiary text-[10px] uppercase tracking-wide text-right",children:s("usage.breakdown.headerCost")}),i.map(e=>(0,a.jsxs)(n.Fragment,{children:[(0,a.jsxs)("span",{className:"inline-flex items-center gap-2 text-text-secondary",children:[(0,a.jsx)("span",{className:(0,l.cn)("w-2 h-2 rounded-sm",e.dot)}),e.label]}),(0,a.jsx)("span",{className:(0,l.cn)("num-mono text-right",e.tone),children:(0,l.jh)(e.tokens,r)}),(0,a.jsx)("span",{className:"num-mono text-right text-text-secondary",children:(0,l.l7)(e.cost)}),"output"===e.key&&t.reasoningTokens>0&&(0,a.jsxs)(n.Fragment,{children:[(0,a.jsxs)("span",{className:"inline-flex items-center gap-2 text-text-tertiary pl-4 text-[11px]",children:[(0,a.jsx)("span",{className:"text-text-tertiary",children:"↳"}),s("usage.breakdown.reasoning")]}),(0,a.jsx)("span",{className:"num-mono text-right text-text-tertiary text-[11px]",children:(0,l.jh)(t.reasoningTokens,r)}),(0,a.jsx)("span",{className:"text-right text-text-tertiary text-[11px]",children:s("usage.breakdown.reasoningNote")})]},"reasoning-detail")]},e.key))]}),(0,a.jsxs)("div",{className:"mt-2 pt-2 border-t border-border grid grid-cols-[auto_1fr_auto] gap-x-3 items-center",children:[(0,a.jsx)("span",{className:"text-text-secondary font-medium",children:s("usage.breakdown.total")}),(0,a.jsx)("span",{className:"num-mono text-right text-text-primary font-medium",children:(0,l.jh)(t.totalTokens,r)}),(0,a.jsx)("span",{className:"num-mono text-right text-text-primary font-medium",children:(0,l.l7)(t.cost)})]})]})]})}function g(e){let{children:t,align:r="left",sorted:n,dir:s,onClick:i}=e;return(0,a.jsx)("th",{className:(0,l.cn)("px-3 py-2 text-xs font-medium text-text-tertiary uppercase tracking-wide whitespace-nowrap","right"===r?"text-right":"text-left",i&&"cursor-pointer hover:text-text-primary select-none"),onClick:i,children:(0,a.jsxs)("span",{className:"inline-flex items-center gap-1",children:[t,n&&(0,a.jsx)("span",{className:"text-[10px]",children:"asc"===s?"▲":"▼"})]})})}},35850:(e,t,r)=>{"use strict";r.d(t,{K:()=>o});var a=r(95155),n=r(20063),s=r(12115),l=r(25016),i=r(19454);function o(e){let t,{paramKey:r,all:o,selected:c,render:d=e=>e,labelAllKey:u,labelSingleKey:m,labelMultiKey:x,ariaLabel:h,searchThreshold:p=6}=e,b=(0,n.useRouter)(),g=(0,n.usePathname)(),f=(0,n.useSearchParams)(),j=(0,i.kj)(),[y,v]=(0,s.useState)(!1),[w,N]=(0,s.useState)(""),[k,S]=(0,s.useState)(0),C=(0,s.useRef)(null),K=(0,s.useRef)(null),R=(0,s.useRef)(null),T=(0,s.useRef)(null),P=(0,s.useId)(),L=(0,s.useId)();(0,s.useEffect)(()=>{if(y)return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)};function e(e){C.current&&!C.current.contains(e.target)&&v(!1)}function t(e){if("Escape"===e.key){var t;v(!1),null==(t=K.current)||t.focus()}}},[y]),(0,s.useEffect)(()=>{y&&o.length>=p&&requestAnimationFrame(()=>{var e;return null==(e=R.current)?void 0:e.focus()}),y||(N(""),S(0))},[y,o.length,p]);let E=(0,s.useMemo)(()=>{let e=w.trim().toLowerCase();return e?o.filter(t=>d(t).toLowerCase().includes(e)||t.toLowerCase().includes(e)):o},[o,w,d]);function F(e){let t=new URLSearchParams(f.toString());0===e.size?t.delete(r):t.set(r,Array.from(e).join(","));let a=t.toString();b.push(a?"".concat(g,"?").concat(a):g)}function A(e){let t=new Set(c);t.has(e)?t.delete(e):t.add(e),F(t)}function D(e){if("ArrowDown"===e.key)e.preventDefault(),S(e=>Math.min(E.length-1,e+1));else if("ArrowUp"===e.key)e.preventDefault(),S(e=>Math.max(0,e-1));else if("Enter"===e.key){e.preventDefault();let t=E[k];t&&A(t)}else"Home"===e.key?(e.preventDefault(),S(0)):"End"===e.key&&(e.preventDefault(),S(E.length-1))}t=0===c.length?j(u):1===c.length?j(m,{value:d(c[0])}):j(x,{count:c.length});let I=o.length>=p;return(0,a.jsxs)("div",{ref:C,className:"relative",children:[(0,a.jsxs)("button",{ref:K,id:P,onClick:()=>v(e=>!e),className:"btn focus:outline-none focus-visible:ring-2 focus-visible:ring-brand/40","aria-haspopup":"listbox","aria-expanded":y,"aria-controls":L,"aria-label":h,children:[t,(0,a.jsx)("span",{className:"text-text-tertiary ml-1","aria-hidden":!0,children:"▾"})]}),y&&(0,a.jsxs)("div",{id:L,role:"listbox","aria-multiselectable":"true","aria-labelledby":P,className:"absolute right-0 mt-1 w-72 card border-border-hi shadow-lg z-20 overflow-hidden",children:[c.length>0&&(0,a.jsxs)("div",{className:"px-2 pt-2 pb-1.5 border-b border-border flex flex-wrap gap-1 items-center",children:[c.slice(0,6).map(e=>(0,a.jsxs)("button",{onClick:()=>A(e),className:"inline-flex items-center gap-1 max-w-[160px] pl-2 pr-1.5 py-0.5 text-[11px] rounded-full bg-brand/10 text-brand border border-brand/20 hover:bg-brand/15","aria-label":"Remove ".concat(d(e)),title:d(e),children:[(0,a.jsx)("span",{className:"truncate",children:d(e)}),(0,a.jsx)("span",{"aria-hidden":!0,className:"text-brand/70",children:"\xd7"})]},e)),c.length>6&&(0,a.jsxs)("span",{className:"text-[11px] text-text-tertiary px-1",children:["+",c.length-6]}),(0,a.jsx)("button",{onClick:function(){F(new Set)},className:"ml-auto text-[11px] text-text-tertiary hover:text-text-primary px-1.5 py-0.5",children:j("filter.clearAll")})]}),I&&(0,a.jsx)("div",{className:"p-2 border-b border-border",children:(0,a.jsx)("input",{ref:R,value:w,onChange:e=>{N(e.target.value),S(0)},onKeyDown:e=>{("ArrowDown"===e.key||"ArrowUp"===e.key||"Enter"===e.key||"Home"===e.key||"End"===e.key)&&D(e)},placeholder:j("common.searchPlaceholder"),className:"w-full px-2 py-1 text-sm rounded border border-border bg-bg-surface focus:outline-none focus:border-border-hi placeholder:text-text-tertiary text-text-primary"})}),(0,a.jsxs)("div",{ref:T,onKeyDown:D,className:"max-h-64 overflow-y-auto p-1 outline-none",tabIndex:-1,children:[0===E.length&&(0,a.jsx)("div",{className:"text-xs text-text-tertiary px-2 py-3 text-center",children:j("filter.noOptions")}),E.map((e,t)=>{let r=c.includes(e),n=t===k;return(0,a.jsxs)("button",{role:"option","aria-selected":r,onMouseEnter:()=>S(t),onClick:()=>A(e),className:(0,l.cn)("w-full text-left text-sm px-2 py-1.5 rounded flex items-center gap-2 transition-colors",n?"bg-bg-surface-hi":"hover:bg-bg-surface-hi",r&&"text-text-primary"),children:[(0,a.jsx)("span",{className:(0,l.cn)("w-3.5 h-3.5 rounded-sm border flex items-center justify-center text-[10px] flex-shrink-0",r?"bg-brand border-brand text-white":"border-border-hi"),"aria-hidden":!0,children:r?"✓":""}),(0,a.jsx)("span",{className:"truncate",children:d(e)})]},e)})]})]})]})}},38059:(e,t,r)=>{"use strict";r.d(t,{TokenStackChart:()=>h});var a=r(95155),n=r(26991),s=r(94632),l=r(68425),i=r(47734),o=r(73697),c=r(23508),d=r(26736),u=r(25016),m=r(19454);let x={input:"rgb(var(--chart-input))",output:"rgb(var(--chart-output))",cacheRead:"rgb(var(--chart-cache-read))",cacheCreation:"rgb(var(--chart-cache-create))"};function h(e){let{data:t,height:r="h-72"}=e,h=(0,m.kj)(),{locale:g}=(0,m.s9)();return t.length?(0,a.jsxs)("div",{className:"".concat(r," w-full"),children:[(0,a.jsx)(n.u,{width:"100%",height:"100%",children:(0,a.jsxs)(s.E,{data:t,margin:{top:12,right:8,bottom:4,left:8},children:[(0,a.jsx)(l.d,{stroke:"rgb(var(--chart-grid))",strokeDasharray:"3 3",vertical:!1}),(0,a.jsx)(i.W,{dataKey:"label",tick:{fill:"rgb(var(--chart-axis))",fontSize:11},tickLine:!1,axisLine:{stroke:"rgb(var(--chart-grid))"},interval:"preserveStartEnd",minTickGap:32}),(0,a.jsx)(o.h,{tickFormatter:e=>(0,u.jh)(Number(e),g),tick:{fill:"rgb(var(--chart-axis))",fontSize:11},tickLine:!1,axisLine:{stroke:"rgb(var(--chart-grid))"},width:56}),(0,a.jsx)(c.m,{content:(0,a.jsx)(b,{}),cursor:{fill:"rgb(var(--text-primary) / 0.04)"}}),(0,a.jsx)(d.y,{dataKey:"input",stackId:"a",fill:x.input,isAnimationActive:!1}),(0,a.jsx)(d.y,{dataKey:"cacheCreation",stackId:"a",fill:x.cacheCreation,isAnimationActive:!1}),(0,a.jsx)(d.y,{dataKey:"cacheRead",stackId:"a",fill:x.cacheRead,isAnimationActive:!1}),(0,a.jsx)(d.y,{dataKey:"output",stackId:"a",fill:x.output,radius:[3,3,0,0],isAnimationActive:!1})]})}),(0,a.jsxs)("div",{className:"flex items-center flex-wrap justify-center gap-4 text-xs text-text-secondary mt-2",children:[(0,a.jsx)(p,{color:x.input,label:h("chart.legend.input")}),(0,a.jsx)(p,{color:x.cacheCreation,label:h("chart.legend.cacheWrite")}),(0,a.jsx)(p,{color:x.cacheRead,label:h("chart.legend.cacheRead")}),(0,a.jsx)(p,{color:x.output,label:h("chart.legend.output")})]})]}):(0,a.jsx)("div",{className:"".concat(r," flex items-center justify-center text-text-tertiary text-sm"),children:h("chart.empty")})}function p(e){let{color:t,label:r}=e;return(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"w-2.5 h-2.5 rounded-sm",style:{background:t}}),(0,a.jsx)("span",{children:r})]})}function b(e){let t=(0,m.kj)(),{locale:r}=(0,m.s9)();if(!e.active||!e.payload||!e.payload.length)return null;let n=e.payload[0].payload,s=n.input+n.output+n.cacheRead+n.cacheCreation;return(0,a.jsxs)("div",{className:"card border-border-hi shadow-lg p-3 text-xs min-w-[200px]",children:[(0,a.jsx)("div",{className:"font-medium text-text-primary mb-2",children:e.label}),(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)(g,{color:x.input,label:t("chart.legend.input"),value:n.input,locale:r}),(0,a.jsx)(g,{color:x.cacheCreation,label:t("chart.legend.cacheWrite"),value:n.cacheCreation,locale:r}),(0,a.jsx)(g,{color:x.cacheRead,label:t("chart.legend.cacheRead"),value:n.cacheRead,locale:r}),(0,a.jsx)(g,{color:x.output,label:t("chart.legend.output"),value:n.output,locale:r})]}),(0,a.jsxs)("div",{className:"mt-2 pt-2 border-t border-border flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.total")}),(0,a.jsx)("span",{className:"num-mono text-text-primary",children:(0,u.jh)(s,r)})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,a.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.cost")}),(0,a.jsx)("span",{className:"num-mono text-brand",children:(0,u.az)(n.cost)})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,a.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.requests")}),(0,a.jsx)("span",{className:"num-mono text-text-primary",children:n.requests})]})]})}function g(e){let{color:t,label:r,value:n,locale:s}=e;return(0,a.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-text-secondary",children:[(0,a.jsx)("span",{className:"w-2 h-2 rounded-sm",style:{background:t}}),r]}),(0,a.jsx)("span",{className:"num-mono text-text-primary",children:(0,u.jh)(n,s)})]})}},52432:(e,t,r)=>{Promise.resolve().then(r.bind(r,38059)),Promise.resolve().then(r.bind(r,16633)),Promise.resolve().then(r.bind(r,8336)),Promise.resolve().then(r.bind(r,14920)),Promise.resolve().then(r.bind(r,7152)),Promise.resolve().then(r.bind(r,25577))}},e=>{e.O(0,[760,930,454,441,255,358],()=>e(e.s=52432)),_N_E=e.O()}]);
@@ -1,3 +0,0 @@
1
- *,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
2
- ! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
3
- */*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-sans),ui-sans-serif,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--font-mono),ui-monospace,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.card{border-radius:12px;border-width:1px;--tw-bg-opacity:1;background-color:rgb(var(--bg-surface)/var(--tw-bg-opacity,1))}.card-pad{padding:1.5rem}.label{font-size:.75rem;line-height:1rem;font-weight:500;text-transform:uppercase;letter-spacing:.025em;--tw-text-opacity:1;color:rgb(var(--text-tertiary)/var(--tw-text-opacity,1))}.num-hero{overflow-wrap:break-word;font-size:1.875rem;line-height:2.25rem;font-weight:600;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);letter-spacing:-.025em;--tw-text-opacity:1;color:rgb(var(--text-primary)/var(--tw-text-opacity,1))}@media (min-width:640px){.num-hero{font-size:2.25rem;line-height:2.5rem}}.num-mid{font-size:1.5rem;line-height:2rem;font-weight:600;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);--tw-text-opacity:1;color:rgb(var(--text-primary)/var(--tw-text-opacity,1))}.num-mono{font-family:var(--font-mono),ui-monospace,monospace;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.pill{display:inline-flex;align-items:center;border-radius:8px;padding:.125rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500}.pill-muted{padding:.125rem .5rem;font-size:.75rem;line-height:1rem;--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(var(--bg-surface-hi)/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(var(--text-secondary)/var(--tw-text-opacity,1))}.btn,.pill-muted{display:inline-flex;align-items:center;border-radius:8px;font-weight:500;border-width:1px;border-color:rgb(var(--border)/var(--tw-border-opacity,1))}.btn{justify-content:center;gap:.375rem;background-color:rgb(var(--bg-surface)/var(--tw-bg-opacity,1));padding:.375rem .75rem;font-size:.875rem;line-height:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn,.btn:hover{--tw-border-opacity:1;--tw-bg-opacity:1}.btn:hover{border-color:rgb(var(--border-hi)/var(--tw-border-opacity,1));background-color:rgb(var(--bg-surface-hi)/var(--tw-bg-opacity,1))}.btn-ghost{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;border-radius:8px;padding:.375rem .75rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(var(--text-secondary)/var(--tw-text-opacity,1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-ghost:hover{--tw-bg-opacity:1;background-color:rgb(var(--bg-surface-hi)/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(var(--text-primary)/var(--tw-text-opacity,1))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.top-0{top:0}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.ml-1{margin-left:.25rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-auto{margin-top:auto}.\!block{display:block!important}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-72{height:18rem}.h-8{height:2rem}.h-full{height:100%}.max-h-48{max-height:12rem}.max-h-64{max-height:16rem}.max-h-72{max-height:18rem}.min-h-\[128px\]{min-height:128px}.min-h-\[180px\]{min-height:180px}.min-h-\[280px\]{min-height:280px}.min-h-screen{min-height:100vh}.w-1\.5{width:.375rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\[120px\]{min-width:120px}.min-w-\[200px\]{min-width:200px}.min-w-\[80px\]{min-width:80px}.max-w-2xl{max-width:42rem}.max-w-7xl{max-width:80rem}.max-w-\[160px\]{max-width:160px}.max-w-\[180px\]{max-width:180px}.max-w-\[280px\]{max-width:280px}.max-w-full{max-width:100%}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[auto_1fr_auto\]{grid-template-columns:auto 1fr auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-y-1\.5{row-gap:.375rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-button{border-radius:8px}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-border{--tw-border-opacity:1;border-color:rgb(var(--border)/var(--tw-border-opacity,1))}.border-border-hi{--tw-border-opacity:1;border-color:rgb(var(--border-hi)/var(--tw-border-opacity,1))}.border-border\/60{border-color:rgb(var(--border)/.6)}.border-brand{--tw-border-opacity:1;border-color:rgb(var(--brand)/var(--tw-border-opacity,1))}.border-brand\/20{border-color:rgb(var(--brand)/.2)}.border-brand\/30{border-color:rgb(var(--brand)/.3)}.border-success\/20{border-color:rgb(var(--success)/.2)}.border-success\/30{border-color:rgb(var(--success)/.3)}.border-warning\/20{border-color:rgb(var(--warning)/.2)}.border-warning\/30{border-color:rgb(var(--warning)/.3)}.bg-bg{--tw-bg-opacity:1;background-color:rgb(var(--bg-base)/var(--tw-bg-opacity,1))}.bg-bg-surface{--tw-bg-opacity:1;background-color:rgb(var(--bg-surface)/var(--tw-bg-opacity,1))}.bg-bg-surface-hi{--tw-bg-opacity:1;background-color:rgb(var(--bg-surface-hi)/var(--tw-bg-opacity,1))}.bg-bg-surface-hi\/20{background-color:rgb(var(--bg-surface-hi)/.2)}.bg-bg-surface-hi\/30{background-color:rgb(var(--bg-surface-hi)/.3)}.bg-bg-surface-hi\/40{background-color:rgb(var(--bg-surface-hi)/.4)}.bg-brand{--tw-bg-opacity:1;background-color:rgb(var(--brand)/var(--tw-bg-opacity,1))}.bg-brand\/10{background-color:rgb(var(--brand)/.1)}.bg-chart-cache-create{--tw-bg-opacity:1;background-color:rgb(var(--chart-cache-create)/var(--tw-bg-opacity,1))}.bg-chart-cache-create\/15{background-color:rgb(var(--chart-cache-create)/.15)}.bg-chart-cache-read{--tw-bg-opacity:1;background-color:rgb(var(--chart-cache-read)/var(--tw-bg-opacity,1))}.bg-chart-input{--tw-bg-opacity:1;background-color:rgb(var(--chart-input)/var(--tw-bg-opacity,1))}.bg-chart-output{--tw-bg-opacity:1;background-color:rgb(var(--chart-output)/var(--tw-bg-opacity,1))}.bg-danger{--tw-bg-opacity:1;background-color:rgb(var(--danger)/var(--tw-bg-opacity,1))}.bg-danger\/10{background-color:rgb(var(--danger)/.1)}.bg-success{--tw-bg-opacity:1;background-color:rgb(var(--success)/var(--tw-bg-opacity,1))}.bg-success\/10{background-color:rgb(var(--success)/.1)}.bg-warning{--tw-bg-opacity:1;background-color:rgb(var(--warning)/var(--tw-bg-opacity,1))}.bg-warning\/10{background-color:rgb(var(--warning)/.1)}.bg-gradient-to-l{background-image:linear-gradient(to left,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-bg-surface{--tw-gradient-from:rgb(var(--bg-surface)/1) var(--tw-gradient-from-position);--tw-gradient-to:rgb(var(--bg-surface)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-brand{--tw-gradient-from:rgb(var(--brand)/1) var(--tw-gradient-from-position);--tw-gradient-to:rgb(var(--brand)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-brand-hover{--tw-gradient-to:rgb(var(--brand-hover)/1) var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.fill-brand{fill:rgb(var(--brand)/1)}.fill-white{fill:#fff}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-1\.5{padding-bottom:.375rem}.pb-3{padding-bottom:.75rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pr-1\.5{padding-right:.375rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.text-brand{--tw-text-opacity:1;color:rgb(var(--brand)/var(--tw-text-opacity,1))}.text-brand\/70{color:rgb(var(--brand)/.7)}.text-chart-cache-create{--tw-text-opacity:1;color:rgb(var(--chart-cache-create)/var(--tw-text-opacity,1))}.text-danger{--tw-text-opacity:1;color:rgb(var(--danger)/var(--tw-text-opacity,1))}.text-success{--tw-text-opacity:1;color:rgb(var(--success)/var(--tw-text-opacity,1))}.text-text-primary{--tw-text-opacity:1;color:rgb(var(--text-primary)/var(--tw-text-opacity,1))}.text-text-secondary{--tw-text-opacity:1;color:rgb(var(--text-secondary)/var(--tw-text-opacity,1))}.text-text-tertiary{--tw-text-opacity:1;color:rgb(var(--text-tertiary)/var(--tw-text-opacity,1))}.text-warning{--tw-text-opacity:1;color:rgb(var(--warning)/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.accent-brand{accent-color:rgb(var(--brand)/1)}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0/0.1),0 4px 6px -4px rgb(0 0 0/0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgb(0 0 0/0.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgb(0 0 0/0.1),0 8px 10px -6px rgb(0 0 0/0.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-brand\/40{--tw-ring-color:rgb(var(--brand)/0.4)}.ring-white\/40{--tw-ring-color:rgb(255 255 255/0.4)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150,.transition-opacity{transition-duration:.15s}.\[ccgauge\:api\]{ccgauge:api}.\[ccgauge\:indexer\]{ccgauge:indexer}.theme-dark,:root{--bg-base:10 10 10;--bg-surface:20 20 20;--bg-surface-hi:28 28 28;--border:38 38 38;--border-hi:64 64 64;--text-primary:250 250 250;--text-secondary:163 163 163;--text-tertiary:115 115 115;--brand:129 140 248;--brand-hover:165 180 252;--success:34 197 94;--warning:250 204 21;--danger:248 113 113;--chart-input:96 165 250;--chart-output:251 146 60;--chart-cache-read:52 211 153;--chart-cache-create:167 139 250;--chart-grid:38 38 38;--chart-axis:115 115 115}.theme-light{--bg-base:255 255 255;--bg-surface:250 250 250;--bg-surface-hi:244 244 245;--border:228 228 231;--border-hi:212 212 216;--text-primary:23 23 23;--text-secondary:82 82 91;--text-tertiary:161 161 170;--brand:79 70 229;--brand-hover:67 56 202;--success:22 163 74;--warning:217 119 6;--danger:220 38 38;--chart-input:37 99 235;--chart-output:234 88 12;--chart-cache-read:22 163 74;--chart-cache-create:124 58 237;--chart-grid:228 228 231;--chart-axis:113 113 122}:root{--font-sans:"Geist Sans","Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;--font-mono:"Geist Mono","JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace}*{border-color:rgb(var(--border))}html{overflow-y:scroll;scrollbar-gutter:stable}body,html{background:rgb(var(--bg-base));color:rgb(var(--text-primary));font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{min-height:100vh}::-moz-selection{background:rgb(var(--brand)/.3);color:rgb(var(--text-primary))}::selection{background:rgb(var(--brand)/.3);color:rgb(var(--text-primary))}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:rgb(var(--border-hi));border-radius:5px}::-webkit-scrollbar-thumb:hover{background:rgb(var(--text-tertiary))}.scrollbar-thin::-webkit-scrollbar{width:4px;height:4px}.scrollbar-thin::-webkit-scrollbar-thumb{background:rgb(var(--border-hi)/.5)}.placeholder\:text-text-tertiary::-moz-placeholder{--tw-text-opacity:1;color:rgb(var(--text-tertiary)/var(--tw-text-opacity,1))}.placeholder\:text-text-tertiary::placeholder{--tw-text-opacity:1;color:rgb(var(--text-tertiary)/var(--tw-text-opacity,1))}.last\:border-b-0:last-child{border-bottom-width:0}.hover\:border-border-hi:hover{--tw-border-opacity:1;border-color:rgb(var(--border-hi)/var(--tw-border-opacity,1))}.hover\:border-text-tertiary:hover{--tw-border-opacity:1;border-color:rgb(var(--text-tertiary)/var(--tw-border-opacity,1))}.hover\:bg-bg-surface:hover{--tw-bg-opacity:1;background-color:rgb(var(--bg-surface)/var(--tw-bg-opacity,1))}.hover\:bg-bg-surface-hi:hover{--tw-bg-opacity:1;background-color:rgb(var(--bg-surface-hi)/var(--tw-bg-opacity,1))}.hover\:bg-bg-surface-hi\/30:hover{background-color:rgb(var(--bg-surface-hi)/.3)}.hover\:bg-bg-surface-hi\/40:hover{background-color:rgb(var(--bg-surface-hi)/.4)}.hover\:bg-brand\/15:hover{background-color:rgb(var(--brand)/.15)}.hover\:text-brand:hover{--tw-text-opacity:1;color:rgb(var(--brand)/var(--tw-text-opacity,1))}.hover\:text-text-primary:hover{--tw-text-opacity:1;color:rgb(var(--text-primary)/var(--tw-text-opacity,1))}.focus\:border-border-hi:focus{--tw-border-opacity:1;border-color:rgb(var(--border-hi)/var(--tw-border-opacity,1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-brand\/40:focus-visible{--tw-ring-color:rgb(var(--brand)/0.4)}.disabled\:opacity-40:disabled{opacity:.4}.group:hover .group-hover\:text-brand{--tw-text-opacity:1;color:rgb(var(--brand)/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\:inline{display:inline}.sm\:flex-row{flex-direction:row}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-4{gap:1rem}.sm\:p-6{padding:1.5rem}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-8{padding-top:2rem;padding-bottom:2rem}.sm\:pt-5{padding-top:1.25rem}}@media (min-width:768px){.md\:inline-flex{display:inline-flex}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:1024px){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:inline{display:inline}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}