usage-cli 0.29.32__py3-none-any.whl

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 (109) hide show
  1. adapters/__init__.py +5 -0
  2. adapters/agy.py +68 -0
  3. adapters/claude.py +215 -0
  4. adapters/codex.py +209 -0
  5. adapters/rate_limits.py +76 -0
  6. adapters/registry.py +17 -0
  7. adapters/types.py +139 -0
  8. agy_disk_cache.py +135 -0
  9. agy_loader.py +416 -0
  10. agy_quota_probe.py +748 -0
  11. agy_window_keeper.py +185 -0
  12. analyzer/__init__.py +5 -0
  13. analyzer/aggregator.py +139 -0
  14. analyzer/blocks.py +80 -0
  15. analyzer/diagnoser.py +638 -0
  16. analyzer/insights.py +277 -0
  17. analyzer/persona_loader.py +199 -0
  18. analyzer/reporter.py +989 -0
  19. analyzer/subscription.py +108 -0
  20. burn_rate.py +75 -0
  21. cache_quarantine.py +50 -0
  22. codex_disk_cache.py +227 -0
  23. codex_events.py +136 -0
  24. codex_fork_replay.py +111 -0
  25. codex_loader.py +1426 -0
  26. codex_paths.py +20 -0
  27. critter_frames.py +26 -0
  28. discussion_bridge.py +1196 -0
  29. discussion_cli.py +844 -0
  30. discussion_session.py +622 -0
  31. discussion_usage.py +13 -0
  32. discussion_window.py +955 -0
  33. disk_cache_common.py +132 -0
  34. disk_cache_lifecycle.py +39 -0
  35. doctor.py +452 -0
  36. fsevents_watch.py +207 -0
  37. history_disk_cache.py +110 -0
  38. history_loader.py +416 -0
  39. i18n.py +88 -0
  40. jsonl_limits.py +17 -0
  41. jsonl_utils.py +40 -0
  42. login_item.py +154 -0
  43. main.py +387 -0
  44. menubar.py +1201 -0
  45. menubar_actions.py +204 -0
  46. menubar_agy.py +193 -0
  47. menubar_chrome.py +156 -0
  48. menubar_menu.py +169 -0
  49. menubar_notify.py +102 -0
  50. menubar_popover.py +233 -0
  51. menubar_prefs.py +118 -0
  52. menubar_refresh.py +285 -0
  53. menubar_state.py +1200 -0
  54. menubar_title.py +157 -0
  55. menubar_update.py +123 -0
  56. panel_window.py +78 -0
  57. panel_window_state.py +159 -0
  58. panels/__init__.py +186 -0
  59. panels/base.py +83 -0
  60. panels/dynamic_height.py +140 -0
  61. panels/payload.py +178 -0
  62. panels/web_panel.py +513 -0
  63. panels/window_drag.py +56 -0
  64. prefs.py +44 -0
  65. pricing.py +452 -0
  66. project_resolver.py +112 -0
  67. service_status.py +383 -0
  68. session_hooks.py +1154 -0
  69. setup_app.py +171 -0
  70. setup_hook.py +1011 -0
  71. statusline_settings.py +160 -0
  72. talent_market_bridge.py +243 -0
  73. time_utils.py +24 -0
  74. tui.py +288 -0
  75. tui_sprite.py +206 -0
  76. ui/__init__.py +5 -0
  77. ui/html_report.py +923 -0
  78. ui/report_scripts.py +251 -0
  79. ui/report_styles.py +370 -0
  80. ui/tables.py +888 -0
  81. update_checker.py +156 -0
  82. update_gate.py +66 -0
  83. update_release_notes.py +49 -0
  84. usage_cli-0.29.32.data/data/share/usage/i18n.json +2427 -0
  85. usage_cli-0.29.32.dist-info/METADATA +223 -0
  86. usage_cli-0.29.32.dist-info/RECORD +109 -0
  87. usage_cli-0.29.32.dist-info/WHEEL +5 -0
  88. usage_cli-0.29.32.dist-info/entry_points.txt +3 -0
  89. usage_cli-0.29.32.dist-info/licenses/LICENSE +663 -0
  90. usage_cli-0.29.32.dist-info/top_level.txt +80 -0
  91. usage_cli.py +827 -0
  92. usage_client.py +487 -0
  93. usage_diagnosis_snapshot.py +143 -0
  94. usage_dir_sweeper.py +100 -0
  95. usage_lang.py +79 -0
  96. usage_logging.py +75 -0
  97. usage_notifications.py +96 -0
  98. usage_rate.py +97 -0
  99. usage_session_resume.py +913 -0
  100. usage_statusline.py +810 -0
  101. usage_statusline_agy.py +397 -0
  102. usage_statusline_forwarder.py +88 -0
  103. usage_terse_mode.py +223 -0
  104. usage_terse_reminder.py +151 -0
  105. win_login_item.py +53 -0
  106. window_keeper.py +264 -0
  107. windows_watch.py +443 -0
  108. wintray.py +2014 -0
  109. wintray_menu.py +136 -0
@@ -0,0 +1,223 @@
1
+ Metadata-Version: 2.4
2
+ Name: usage-cli
3
+ Version: 0.29.32
4
+ Summary: usage — 在 macOS menu bar 與 Windows 系統匣顯示 Claude Code、Codex、Antigravity 用量的小工具(也提供終端機 TUI)
5
+ License-Expression: AGPL-3.0-only
6
+ Requires-Python: >=3.13
7
+ Description-Content-Type: text/markdown
8
+ License-File: LICENSE
9
+ Requires-Dist: pyobjc-framework-Cocoa>=11.0; sys_platform == "darwin"
10
+ Requires-Dist: pyobjc-framework-Quartz>=11.0; sys_platform == "darwin"
11
+ Requires-Dist: pyobjc-framework-UserNotifications>=11.0; sys_platform == "darwin"
12
+ Requires-Dist: pyobjc-framework-WebKit>=11.0; sys_platform == "darwin"
13
+ Requires-Dist: rich<16.0.0,>=15.0.0
14
+ Provides-Extra: windows
15
+ Requires-Dist: pystray>=0.19.5; sys_platform == "win32" and extra == "windows"
16
+ Requires-Dist: pillow>=11.0.0; sys_platform == "win32" and extra == "windows"
17
+ Requires-Dist: pywebview>=5.4; sys_platform == "win32" and extra == "windows"
18
+ Requires-Dist: windows-toasts>=1.3.1; sys_platform == "win32" and extra == "windows"
19
+ Dynamic: license-file
20
+
21
+ <p align="center">
22
+ <img src="docs/readme-logo.png" alt="usage logo" width="128">
23
+ </p>
24
+
25
+ # usage
26
+
27
+ ### Quota visibility for Claude Code, Codex, and Antigravity, built into the macOS menu bar and Windows system tray.
28
+
29
+ Running out of quota mid-session is expensive — especially during a long refactor or debugging run that depends on Claude Code. `usage` surfaces 5-hour and weekly limits *before* you hit the wall, and keeps them visible the whole time. There's no command to run and no page to open; the answer is just there, where you already look.
30
+
31
+ [繁體中文](README.zh-TW.md) · [简体中文](README.zh-CN.md) · English · [日本語](README.ja.md) · [한국어](README.ko.md) &nbsp;|&nbsp; [Discussions](https://github.com/aqua5230/usage/discussions) &nbsp;|&nbsp; [Landing page](https://aqua5230.github.io/usage/)
32
+
33
+ [![GitHub stars](https://img.shields.io/github/stars/aqua5230/usage?style=flat)](https://github.com/aqua5230/usage/stargazers)
34
+ [![CI](https://github.com/aqua5230/usage/actions/workflows/check.yml/badge.svg)](https://github.com/aqua5230/usage/actions/workflows/check.yml)
35
+ [![Latest Release](https://img.shields.io/github/v/release/aqua5230/usage)](https://github.com/aqua5230/usage/releases/latest)
36
+ [![Python](https://img.shields.io/badge/python-3.13-blue.svg)](https://www.python.org/)
37
+ [![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Windows-lightgrey.svg)](https://github.com/aqua5230/usage/releases/latest)
38
+ [![License: AGPL-3.0](https://img.shields.io/badge/license-AGPL--3.0-blue.svg)](LICENSE)
39
+ [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/13538/badge)](https://www.bestpractices.dev/projects/13538)
40
+
41
+ <p align="center">
42
+ <img src="docs/showcase.en.png" alt="usage — Claude Code, Codex, and Antigravity quota pinned to the macOS menu bar" width="820">
43
+ </p>
44
+
45
+ Claude Code and Codex numbers are read passively from log files already on your machine, so **watching your quota never calls Anthropic or OpenAI's LLM APIs** and never costs you a token. Antigravity is the one exception: its quota comes from Google's official quota endpoint using the sign-in the Antigravity CLI already stores locally — a metadata call that doesn't consume your model quota either.
46
+
47
+ ## Quick Start
48
+
49
+ ```bash
50
+ brew install --cask aqua5230/usage/usage
51
+ ```
52
+
53
+ It lands in your Applications folder automatically. Right-click **Open** once to pass Gatekeeper, then click the menu bar icon. Prefer a direct download or want the full setup flow? See [Install](#install) below.
54
+
55
+ **Jump to:** [What You Get](#what-you-get) · [Privacy](#privacy--data-sources) · [Requirements](#requirements) · [Install](#install) · [Status Line](#first-launch-set-up-the-status-line) · [Windows](#windows-support) · [Themes](#theme-gallery) · [Troubleshooting](#troubleshooting) · [Comparison](#comparison) · [Not a Fit?](#when-usage-isnt-the-right-fit) · [Development](#development)
56
+
57
+ ## What You Get
58
+
59
+ ### Live Visibility
60
+
61
+ - **Always-on Monitor:** Your quota lives in the menu bar, color-coded from green to red. Click when you want the full session, weekly, and per-project breakdown.
62
+ - **Antigravity Support:** Antigravity (Gemini) session and weekly quota show up as a third card in every theme except World Cup 2026, which stays a two-team HUD. Numbers come straight from the official quota API, using the sign-in the Antigravity CLI already keeps on your machine — refreshed every few minutes, with live reset countdowns.
63
+ - **Service Status Alerts:** An orange-red banner appears when Claude Code, Claude API, or Codex API has an outage or degraded performance, read from their public Statuspage.io pages — never an LLM usage API. Antigravity isn't covered; it has no public status page.
64
+ - **Context Nudges & Notifications:** When your context window hits 70%, the status line nudges you to `/clear` or `/compact` to prevent token waste. You can also opt-in to system notifications for quota limits and recoveries.
65
+ - **Hide Sections:** Only use one or two of the tools? Hide the Claude Code, Codex, or Antigravity section from the menu bar and panels completely with a single click.
66
+
67
+ ### Workflow Helpers
68
+
69
+ - **Progress Concierge:** Open a new Claude Code session and `usage` hands your last progress straight to the AI, including your last request, uncommitted changes, and unfinished todos. No `/resume`, no recap. Fully local, off by default.
70
+ - **Token Saver:** A menu-bar toggle asks Claude Code and Codex to answer more tersely, saving output tokens while keeping code and error messages byte-exact. A light reminder keeps long conversations from drifting back to verbose — in an A/B test on real sessions, late replies stayed ~40% shorter instead of drifting 84% longer.
71
+ - **Terminal Integration:** `usage status --json` hands your Claude Code and Codex quota to any tool that can run a command — Starship, tmux, or your own scripts. Reads the same local files as the menu bar, no network call. [Ready-made snippets](docs/DEVELOPMENT.md#quota-status-for-other-tools-usage-status).
72
+ - **Token-waste Health Check:** A daily background diagnosis scans your logs for waste, including repeated file reads, polluter directories, and noisy Bash output. If it finds issues, a one-line heads-up appears; say "show me" and the AI walks you through fixes.
73
+
74
+ ### AI Teamwork
75
+
76
+ - **AI Talent Market:** Bring a ready-made AI team into Claude Code. Browse and install curated subagent personas into `~/.claude/agents/` instantly. Runs fully locally via the bundled CLI.
77
+ - **AI Council:** Open a dedicated window and run a multi-round discussion between Claude Code, Codex, and Antigravity — pick participants, models, and a debate style, with a token estimate up front. Steer it between rounds, see who dissents in the consensus tally, and let it stop early once everyone agrees. Seats can wear AI Talent Market personas and reference real files via an optional read-only folder.
78
+ - **AI Update Daily:** Opens a daily-updated public [page](https://aqua5230.github.io/ai-updates/) covering Claude Code, Codex, and Antigravity, with the full history kept. Reviewed items get a plain-language summary in all five UI languages; unreviewed ones show the original source text.
79
+
80
+ ### Reporting & Insight
81
+
82
+ - **Deep HTML Reports:** Shareable HTML reports of daily and weekly token trends, project rankings, and cost — including a Year in Review with a contribution heatmap and "Wrapped" summary. A "What you worked on" section lists the names Claude Code gave your recent conversations, so the numbers arrive with context. Export as .html, .csv, or .png, fully offline, with optional project-name masking that covers those titles too.
83
+
84
+ ### Experience & Customization
85
+
86
+ - **13 Visual Themes:** Switch between panel styles including Classic, Matrix, Windows 95, Newspaper, Cloud Observation, Midnight Aquarium, Prism Arcade, Black Hole, World Cup 2026, Lepidoptera (blueprint), Stained Glass, Origami, and Catppuccin (official palette, all four flavors).
87
+ - **Place the Panel Anywhere:** The panel is no longer pinned under the menu bar icon. Drag it from any empty spot to wherever you want it, and it reopens there next time. It stays put when another app takes focus — a second click on the menu bar icon, or Escape, closes it.
88
+ - **Drag to Reorder:** Grab any quota card and drag it up or down to swap the order — the arrangement is shared across every theme with quota cards (all except World Cup 2026) and survives restarts.
89
+ - **Spirit Companions:** A small animated white silhouette lives beside your usage percentages — a phoenix for Claude, a dragon for Codex, a lion for Antigravity. Each accelerates dynamically as its own tool's token burn rate climbs.
90
+ - **Automatic Localization:** UI text is available in Traditional Chinese, Simplified Chinese, English, Japanese, and Korean, automatically matching your system settings.
91
+
92
+ ## Privacy & Data Sources
93
+
94
+ - Claude Code and Codex numbers are read **only from local log files** on your machine; reading them **never calls Anthropic or OpenAI's LLM APIs**.
95
+ - Antigravity quota requires network access, and only if you use it: quota is fetched from Google's official quota endpoint using the OAuth credential the Antigravity CLI already stored after sign-in — read from macOS Keychain, Windows Credential Manager, or a local token file depending on CLI version. `usage` reads that credential without writing it back and keeps any refreshed access token in memory only; the call itself only reads quota metadata and never consumes your model quota.
96
+ - Background network activity: the Antigravity quota/token endpoints above, public Claude and Codex status pages to flag outages, a public model-pricing table to estimate cost (falls back to built-in prices offline), and occasionally checking GitHub for a new version. Claude Code and Codex log contents are never uploaded.
97
+
98
+ ## Requirements
99
+
100
+ - macOS 12 (Monterey) or newer, or Windows 10/11
101
+ - Claude Code, Codex, or Antigravity has been used at least once (so local usage data exists).
102
+ - (Source runs only) Python 3.13.
103
+
104
+ ## Install
105
+
106
+ ### 1. Homebrew (Recommended)
107
+
108
+ Installing via Homebrew means a single `brew upgrade --cask usage` keeps it current.
109
+
110
+ ```bash
111
+ brew install --cask aqua5230/usage/usage
112
+ ```
113
+
114
+ *(First launch: right-click `usage.app` in Finder → **Open** to pass Gatekeeper).*
115
+
116
+ ### 2. Download for macOS
117
+
118
+ 1. Download the latest `usage.app.zip` from the [GitHub Releases page](https://github.com/aqua5230/usage/releases/latest).
119
+ 2. Unzip it and drag `usage.app` into your Applications folder.
120
+ 3. First launch: in Finder, right-click `usage.app` → **Open** → confirm Open.
121
+
122
+ ### 3. uvx (zero install, any OS)
123
+
124
+ Run `uvx usage-cli` to open the terminal interface directly. uv automatically prepares Python 3.13, so no separate Python installation is needed.
125
+
126
+ For a persistent command, run `uv tool install usage-cli`, then use `usage` (for example, `usage status --json`). This installation path provides the CLI only, not the menu bar app.
127
+
128
+ ## First Launch: Set Up the Status Line
129
+
130
+ If you've used Codex, `usage` picks up its history automatically. For Claude Code, click the **"Set Up Status Line"** button in the app popover to install the sync hook.
131
+ Restart the relevant tool afterward (on macOS, fully Cmd+Q Claude Code and re-open it; on Windows, restart your terminal or start a new session).
132
+
133
+ The same button also sets up a status line for the Antigravity CLI when it is installed on your machine, and does nothing at all when it isn't. Any status line you configured there yourself is backed up first and restored when you turn the switch off.
134
+
135
+ Once set up, the bottom of the Claude Code window will show a status line like this:
136
+
137
+ <p align="center">
138
+ <img src="docs/statusline.en.gif" alt="Claude Code statusLine display (English)" width="900">
139
+ </p>
140
+
141
+ ## Windows Support
142
+
143
+ Windows has the full core experience: the system-tray UI, Claude Code status-line hook, and Codex history parsing all work natively. Download `usage-windows.zip` from the [latest GitHub Release](https://github.com/aqua5230/usage/releases/latest), unzip it, then run `usage.exe`—no installer is needed. The tray UI requires Microsoft Edge WebView2 Runtime, which is normally included with Windows 10 and 11.
144
+
145
+ The system-tray icon updates with your Claude quota percentage; its tooltip summarizes the Claude and Codex windows. Left-click opens the same 13 quota themes available on macOS (Classic plus the other twelve) in WebView2. Right-click provides Reset Panel Position and Quit; panel switching, refresh, launch at login, and update checks are in the panel menu.
146
+
147
+ Windows differences: the panel opens at the bottom-right of the working area rather than next to the tray icon; update prompts use a system Yes/No dialog; and the AI Talent Market and AI Council panels are macOS-only.
148
+
149
+ ### Code signing policy
150
+
151
+ Free code signing provided by [SignPath.io](https://about.signpath.io/), certificate by [SignPath Foundation](https://signpath.org/).
152
+
153
+ Team roles:
154
+
155
+ - Committers and reviewers: [aqua5230](https://github.com/aqua5230)
156
+ - Approvers: [aqua5230](https://github.com/aqua5230)
157
+
158
+ Privacy policy: this program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it. See [Privacy & Data Sources](#privacy--data-sources) for the network calls `usage` makes on your behalf and how to avoid them.
159
+
160
+ ## Theme Gallery
161
+
162
+ Switch between **13 visual themes** directly from the UI:
163
+
164
+ <p align="center">
165
+ <img src="docs/classic.en.png" width="32%" alt="Classic theme" />
166
+ <img src="docs/matrix.en.png" width="32%" alt="Matrix theme" />
167
+ <img src="docs/win95.en.png" width="32%" alt="Windows 95 theme" />
168
+ <img src="docs/newspaper.en.png" width="32%" alt="Newspaper theme" />
169
+ <img src="docs/cloud_observation.en.png" width="32%" alt="Cloud Observation theme" />
170
+ <img src="docs/aquarium.en.png" width="32%" alt="Midnight Aquarium theme" />
171
+ <img src="docs/prism_arcade.en.png" width="32%" alt="Prism Arcade theme" />
172
+ <img src="docs/black_hole.en.png" width="32%" alt="Black Hole theme" />
173
+ <img src="docs/world_cup.en.png" width="32%" alt="World Cup HUD theme" />
174
+ <img src="docs/lepidoptera.en.png" width="32%" alt="Lepidoptera theme" />
175
+ </p>
176
+
177
+ ## Troubleshooting
178
+
179
+ If the menu bar shows `--`, it's usually not broken — there's just no local data yet.
180
+
181
+ | Symptom | Likely cause | Fix |
182
+ |---------|--------------|-----|
183
+ | Menu bar shows `--` | No data yet, or Claude Code hook not refreshed | Run one Codex conversation. For Claude Code, click "Set Up Status Line" (from source: `python3 main.py --setup`) |
184
+ | `ImportError` from `main.py` inside `usage.app` | The bundled `main.py` needs the bundle's own interpreter and cannot be run by hand | Don't run that copy. Click "Set Up Status Line" in the app, or clone the repo to run from source |
185
+ | Accidentally hit "Quit" | Process terminated | Relaunch `usage.app` from Spotlight or Applications. (`launchctl start com.lollapalooza.usage` only works if you enabled Launch at Login.) |
186
+ | Status says "N minutes stale" | Claude Code isn't running | Open Claude Code and let it run |
187
+ | Codex section is empty | No Codex history found | Run a Codex conversation to generate logs |
188
+ | Today's cost shows $0.00 | Model pricing missing | Delete `~/.usage/pricing_cache.json` or check `USAGE_DEBUG=1` |
189
+ | Antigravity card is missing | Antigravity CLI not installed or not signed in | Install and sign in to the Antigravity CLI; the card appears automatically once a background quota fetch succeeds |
190
+ | App won't open | macOS Gatekeeper blocked it | Right-click `usage.app` in Finder → Open |
191
+
192
+ ## Comparison
193
+
194
+ | Feature | usage | ccusage | TokenTracker |
195
+ |---------|:-----:|:-------:|:------------:|
196
+ | Always on screen | ✅ | — | ✅ |
197
+ | macOS menu bar & Windows system tray | ✅ | — | macOS only |
198
+ | Claude Code & Codex usage | ✅ | Claude only | ✅ |
199
+ | Antigravity (Gemini) usage | ✅ | — | — |
200
+ | Claude Code & Codex service-status alerts | ✅ | — | — |
201
+ | HTML deep reports & UI | ✅ | ✅ | — |
202
+ | AI Talent Market | macOS only | — | — |
203
+ | AI Council | macOS only | — | — |
204
+ | AI Update Daily | ✅ | — | — |
205
+ | Progress Concierge & Token Saver | ✅ | — | — |
206
+ | Token-waste Health Check | ✅ | — | — |
207
+ | No LLM API calls to read quota | ✅ | ✅ | ✅ |
208
+ | Open-source license | AGPL-3.0 | MIT | — |
209
+
210
+ ## When usage Isn't the Right Fit
211
+
212
+ - You only live in the terminal and don't want another menu bar icon running in the background — a one-off CLI check fits better.
213
+ - You don't use Claude Code, Codex, or Antigravity — there's no local usage data for `usage` to read.
214
+ - You're on Linux — only macOS and Windows are supported today.
215
+
216
+ ## Development
217
+
218
+ Building from source, configuring custom agents, or running the terminal TUI? See the **[development docs](docs/DEVELOPMENT.md)**.
219
+
220
+ ## License
221
+
222
+ Licensed under AGPL-3.0-only (see [LICENSE](LICENSE)). If you fork or redistribute a modified version, please credit the original author and link back to:
223
+ https://github.com/aqua5230/usage
@@ -0,0 +1,109 @@
1
+ agy_disk_cache.py,sha256=L54gvp4lv9VSAk5M2CImIpRDB1y22jcm3dU1eivxmmc,4639
2
+ agy_loader.py,sha256=yDl7M8jlj3zt_g2LdRhp2TESE6SOpOTbcXQkqwqXEKM,13339
3
+ agy_quota_probe.py,sha256=hYEYuPhJQMax-CmJMaBm8boajmdNh0eHEqwy1KeavV4,25849
4
+ agy_window_keeper.py,sha256=6teCfQPhZN6JOA4ec5kPQFBlsvSe_GHVqICqhFCXfAg,5687
5
+ burn_rate.py,sha256=FgKPis1L9BpXmPibeupR8NylChJCHdQxHcstIDgYtlA,2499
6
+ cache_quarantine.py,sha256=qQPyAS7suJdePdEZNR96-qtdfGJyq2uDjcEIJX0Jq_8,1639
7
+ codex_disk_cache.py,sha256=Tz-4raxOVpiHQJljWwqt9VcG5FibmT2fCqhdkLZ_IUE,8707
8
+ codex_events.py,sha256=hnYdqXVmuxYh7OOEBI9sGL0LschCJF2ksEo5B06fHTY,3915
9
+ codex_fork_replay.py,sha256=i8a5p4n28OyEy-ONtvohajDrW6q8nshz3ORtUkw9cb4,3834
10
+ codex_loader.py,sha256=J3V9a-zSUu1B7qv2xfff2-LhVAq6_t0fAP7SJ5pnft8,51224
11
+ codex_paths.py,sha256=Rsz1Tk0HTJaNOh76RmiKSdsq8kfl5CdEFcj1EQ_lhck,637
12
+ critter_frames.py,sha256=WQk1LX-VkLlQuR1289COSVERWqktDK8jwlEpF4AVQgE,916
13
+ discussion_bridge.py,sha256=J5mXCylGy38twBAoAQYxCaBjHgQEqWji8NepXLIoAGg,42440
14
+ discussion_cli.py,sha256=KuVkj7nMkKC44dR-BLGeErbhFhPXVzRoPqXPVTr_b38,29129
15
+ discussion_session.py,sha256=Pdu1Kk0_2bhFkCdMcdA5aTtuNmnAT_VLFUoEnVkhgFM,22748
16
+ discussion_usage.py,sha256=lrB2_sKo-lXK6cgd-Lf7YvASEcT-KHPDQ9P2pghS5sY,305
17
+ discussion_window.py,sha256=oY4O07k5gjjjjNbu3t3wkpOJRUYCC9udERZdftZ2qOo,37124
18
+ disk_cache_common.py,sha256=UxzOrw_B0dnGwBq9oj1Cwo56XZcvccB3vUT2wyhtduE,3974
19
+ disk_cache_lifecycle.py,sha256=UbjpbO_Mp1ipDHf3uHIOTIC082xvOXrgaTmSGW85ZfY,1085
20
+ doctor.py,sha256=wM-NXhpBlGnyA8sZJKgIgc2k51sWO3nR3zJYfPyQyi4,14376
21
+ fsevents_watch.py,sha256=vxqL4outwZy4_2Ed7XGYHPEnmaPlt-bL-PThi6KYRBE,7033
22
+ history_disk_cache.py,sha256=gGrQuD69iRPKdkLkbZLibZSc9lEQrO821ytN0HUiYg8,3718
23
+ history_loader.py,sha256=ty-zUBgHP06CVydwGEmp5MnZXRaHuWdqNdIvr62sr6I,12692
24
+ i18n.py,sha256=Z9q-XrH-bmnp8Ak4PImKoLUQnTkfi4wbUXZyTSFcq1M,3421
25
+ jsonl_limits.py,sha256=76j9ikF4Rd-zGSFHubmpV32eUQ6zhtHsPp9l-zo9dmo,543
26
+ jsonl_utils.py,sha256=HHwdVqac1B9G3mCE1MNIbd3IIUUYGzj_qwWztEnbsxc,1110
27
+ login_item.py,sha256=bTbr7eY7eNeh88TIKadbZYMHv_X8T_-DJ0sQCf4_IjU,4708
28
+ main.py,sha256=oeBH0FcYfxt9bXwGmJmwmGojvPHy3Hx31LiFyAglH6M,12405
29
+ menubar.py,sha256=w0hi1NizLL_koq2ZcGutOTJSm18Mv6_SNK813iR1CB0,45927
30
+ menubar_actions.py,sha256=Y-XdfvjgWvdvEbiDeNSI2ZtFQCeKqKtkBhX1VG3HVLM,6670
31
+ menubar_agy.py,sha256=ipvK4IYHaWwXlwX2_GZdhIHO5HSfO6_o9KxwrOklKK0,5800
32
+ menubar_chrome.py,sha256=N-FbCrre64NG3rpJpMFJANWXKQmvm5LRXGGRcNj0RMQ,5283
33
+ menubar_menu.py,sha256=IbDR_Oibz0qDY_VIao0rehDGPMs-hLr6GilDpFNpvzY,6151
34
+ menubar_notify.py,sha256=DzogAMMRw1Ue-nBrQ4d8ybeKIc5zAL2tlusOdGgHhI4,3043
35
+ menubar_popover.py,sha256=XXXktqV1a8J1Iq3eR98Enio3TS7xiZBBcuRHKG4QTQo,9476
36
+ menubar_prefs.py,sha256=fv_N7ZMZMoJQB7wxND3nd2AK6QmoYYIFScU_shGQam0,4311
37
+ menubar_refresh.py,sha256=tO8kKsscsL_WBGW6zUqL2uZFJbl-gkDDOTNlsHC4KH8,11547
38
+ menubar_state.py,sha256=Dy98NA0VZSGw3mj1ticVWPpNK9IU_rOnE_qUJTG1ttM,41216
39
+ menubar_title.py,sha256=JJy7jd3CzlRbKe8mRnabo9XMKDVAmz0RDbhRXY-VGN8,6790
40
+ menubar_update.py,sha256=mf6XCIQOppaXzzqEgNtQIlYkYz-MBYoKl3Huitzc7fI,3455
41
+ panel_window.py,sha256=8dilr8fW_UKCsaonfagygHCCgpb97g3mCMSafsSj2Rc,2529
42
+ panel_window_state.py,sha256=PboHkRerdl6DvwNlUmNMN43EhkNfkjDO3_En2TNTPWg,5027
43
+ prefs.py,sha256=LnJGJT17HOfCHju7Wqu6JrbiIDrXjjk4fGtPgr7AhwE,1605
44
+ pricing.py,sha256=G6jWrk5sNqIFhIDfrfivVBsJ_jYJfnQZYD9np4IpQs0,14867
45
+ project_resolver.py,sha256=2W9PPB9pj7SQLyM-9Vq5pbqjBFs5JgccMSfPOvMlVV0,3979
46
+ service_status.py,sha256=Qyt0MaQCRlU63e1UXnaKCh2ixXMS7WJRYwRSWPJd_BA,14689
47
+ session_hooks.py,sha256=hhutff1OqDnA4oWxC3ETEFMD8CR1kCsVg3wTKIAd5DI,40761
48
+ setup_app.py,sha256=y0qhP7G2YuJdnQfmNvj0qeLQ0ATf-RTrhW2CUl0ZKtQ,5785
49
+ setup_hook.py,sha256=6CBlCJMVemqa8N4UGSZ0ODTzOc3GCPmVekhfhcC27RI,35738
50
+ statusline_settings.py,sha256=54XDPBm0AeAAINHZ27vGTnt11JwMzIY8-sc9gIC1CT8,5005
51
+ talent_market_bridge.py,sha256=CU0fHhDamDIiRF-hGF1vh8vC8lagNOMY9Nwh21lVfrY,8116
52
+ time_utils.py,sha256=aGRJioBHdThvvuFn1f21DuVtKR9KBTi3DYAL7JT1W8M,666
53
+ tui.py,sha256=FAVPud8QNj4RnTsjQqNvM619zYz1oNAp_7oC-drz1q8,8991
54
+ tui_sprite.py,sha256=jxnUxCZAjvxN3NK28micu46fqRnp09YP99zAlraV5Nc,5714
55
+ update_checker.py,sha256=tgAwczfX9gj2kaI7OgCKDutsa3AFGxS7b-On64Aerz4,4972
56
+ update_gate.py,sha256=ZWslnaMDQTi8WO6HUptsWm00QmO75TXNvXAoSQxnH04,2205
57
+ update_release_notes.py,sha256=3M03Zxn4ZQvrpIpz2fbCoavcmuxiYu96epCGwwdbqHI,1734
58
+ usage_cli.py,sha256=BMyrYxkBazfxNB5PRL-_LA0loa8g0Ewoo6e5D0-Bblg,27968
59
+ usage_client.py,sha256=jWOAyW57KoR3qWZXe7_2_ekYSO3dPqOApla0pxcrp6E,16311
60
+ usage_diagnosis_snapshot.py,sha256=tIxIscc1GHes6p6HO2NkxGq5v12eKLiyVQov-pA_iys,4462
61
+ usage_dir_sweeper.py,sha256=5TjfFH-1MNb5GKCGjjtslsaXCG-2UbdHTmGXz4Em9pc,3706
62
+ usage_lang.py,sha256=-P5BgHkgHO1kM4aJyTE-feIzNbJH2jZ1zUSVEzoupaI,2497
63
+ usage_logging.py,sha256=uHIf5aJsRrKZUPCxKI45i3ju0v7_mwstqabVqzOZYN8,2636
64
+ usage_notifications.py,sha256=OZDN-X_2Y9qlc1Mpb8PpKrpYVAtsePSHMOqRULtCVnQ,3212
65
+ usage_rate.py,sha256=LEJ7YFUsZApYdrptQNHs_w5TwEgplWvApcUVqQZhmE8,2942
66
+ usage_session_resume.py,sha256=SCuNEps0gSehvFojbw5Ie1A_tMrfSVWO60IBFJyM0IE,36149
67
+ usage_statusline.py,sha256=VH4g74AeNrzgiVD4lvwQavTKnu8sXzbWI7dDaK6hTFk,27328
68
+ usage_statusline_agy.py,sha256=Uc-pLahubldTuvG55wEmQVd9-LXC58uBuEcKQ7KG3ZA,12064
69
+ usage_statusline_forwarder.py,sha256=ZzrU3zGOZqPZUZRD0Lg_NuXgnrPnuYynYiZxlhno0PI,2558
70
+ usage_terse_mode.py,sha256=3OKM5j7rjrCvg8fD68yDH5Od1aBP8sMGtpR06EhtSms,14205
71
+ usage_terse_reminder.py,sha256=yL4q_FMJxb1K1F9g_2W3FXgJi1yyKtSGVcFcX31JN8Q,5559
72
+ win_login_item.py,sha256=SPpwLgIrOWwCRSJyC9meP8EhPhzjyFJHUhAGfQuuxas,1321
73
+ window_keeper.py,sha256=Rai0wNUDh5yfePAVBPL2upla7bEVnTc2ThwXk433J-w,9636
74
+ windows_watch.py,sha256=wvZVYzxJN8j0-d-tdOW5yJ1bcinMHTD7yxwIEGpJYsM,15843
75
+ wintray.py,sha256=5ESDffNCnagvEV79cEEaWglIERWh9PRSYrWto3pcuQQ,77236
76
+ wintray_menu.py,sha256=Faz7OqZZZf_Hrg7v4ErC134zmmeGWy7jwl3ibrSFMOs,4381
77
+ adapters/__init__.py,sha256=_LdhRTDtlfPuWCxXcZISyQHm86sb6K-NNLMrLXs8bII,271
78
+ adapters/agy.py,sha256=hr1AI5iGJKsKkeE9NzB9F9rBMVb1ukTkvUpyt2QCg8w,2217
79
+ adapters/claude.py,sha256=horaOlLNrX5J2vkkddRbRRjoGwelXLM4Uyy09McUyMM,6647
80
+ adapters/codex.py,sha256=foYggjHToinK2RHv75z67XVCBG8MjDkkFP2Be2UbH6I,6877
81
+ adapters/rate_limits.py,sha256=hhQb8m479fTRv218CJcxMYhgr5JYOH0X6zvLJoVarVk,2480
82
+ adapters/registry.py,sha256=SLtl821s0rXKOVyTVnMm3PVqjwfXZ_gVC4DLkopz4e8,565
83
+ adapters/types.py,sha256=4mZiYk61ZVleYwDcvgpBfTxVJTH_a8_Tj5QTe7CdhC0,3244
84
+ analyzer/__init__.py,sha256=_LdhRTDtlfPuWCxXcZISyQHm86sb6K-NNLMrLXs8bII,271
85
+ analyzer/aggregator.py,sha256=YDTj5edY78YV--xXvbvDeKrOQg8_9a32v9L8lkar_Rs,5321
86
+ analyzer/blocks.py,sha256=UPMej0nqtV0btKXqTxLNc8BU5tSwes-7bcqT_eJjjtI,2941
87
+ analyzer/diagnoser.py,sha256=wWt7bXSTpS1PnHGUioG61HJ1eLNWoTg6v48VsTdVbyo,20731
88
+ analyzer/insights.py,sha256=duacehy00z7zMOrjVBX4_XwoatEcXQWFWpX4xnueMj0,8231
89
+ analyzer/persona_loader.py,sha256=RCnNpbI5sXUCcwErd6Mq0nqjd_s3eDRbhfXaUm0ox08,6323
90
+ analyzer/reporter.py,sha256=SQ2ux5m33JG5Tk1WuevGwd2RlosbwrI9O9Ss62zgImQ,31902
91
+ analyzer/subscription.py,sha256=JvUqBqtB3CFPjcINP00y7qHx5LIu44gapXsQdZRKIW0,3621
92
+ panels/__init__.py,sha256=f0sMw3ZUKzmWe4sMl2mO6I3p_rOR4BzYo3S5IzlhNK8,5899
93
+ panels/base.py,sha256=lXDKi_m5ffzhDs-zBcyuubOkNn9LAgHAwU0txPvZg7s,2745
94
+ panels/dynamic_height.py,sha256=OMwExoyFGd9q7rlW1I1CaplH6tpIu50cTjIJViRbcU8,5475
95
+ panels/payload.py,sha256=Ch-1cQ8Fy0XNjgZjYm_su5rslgZUuaQk9ZOyq4Gg7PY,5640
96
+ panels/web_panel.py,sha256=16BWkL3ul-R7KxT50hBkHa0o3mgsOjvgvMHXma8BL6Q,19245
97
+ panels/window_drag.py,sha256=a86iAOMEDK6AIuJr1TeGQDjP7MsN3Y0Qd5A6RKI6I5A,1776
98
+ ui/__init__.py,sha256=_LdhRTDtlfPuWCxXcZISyQHm86sb6K-NNLMrLXs8bII,271
99
+ ui/html_report.py,sha256=PkHYjBMh2QwqZJDjcZtrnSWPu1WLXjYUz3pByTZ2guY,36644
100
+ ui/report_scripts.py,sha256=WgP-7S7Yj8RNcv_hI0cgisD5MfvulNRe4QseBi0SG_U,29054
101
+ ui/report_styles.py,sha256=n2AMat1zEzX9fYE7rEZsCBka0Xg2b_PWmlSmQ2iZ93U,28245
102
+ ui/tables.py,sha256=ykteAgaoh--57BzLjTIppsTbAmRXoQx4k5iC2NTIPVY,32909
103
+ usage_cli-0.29.32.data/data/share/usage/i18n.json,sha256=gRthjWrnz1uUVtlcsT5qI0PvmLwvQp_GTF-DquQRQ9o,181642
104
+ usage_cli-0.29.32.dist-info/licenses/LICENSE,sha256=GbPiL4Am4oP7rnqY-G84xpiYOGUGqVZiqnKFBDDWRFo,34586
105
+ usage_cli-0.29.32.dist-info/METADATA,sha256=V_aPh01b1btn7SetlQZhg64FcSy374An_adK9nLboiU,17101
106
+ usage_cli-0.29.32.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
107
+ usage_cli-0.29.32.dist-info/entry_points.txt,sha256=9lSkmKBSXLL30xY7A393j4oqspnoTUNTSHpakty9uDE,68
108
+ usage_cli-0.29.32.dist-info/top_level.txt,sha256=JZIDXcOn6pFQnsF12XmfkOguauXexpFSBe-ggzEiIQs,1137
109
+ usage_cli-0.29.32.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ usage = usage_cli:main
3
+ usage-cli = usage_cli:main