Repository navigation
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Advanced Run ID: 📥 CommitsReviewing files that changed from the base of the PR and between 3ac77234b6bee157ebbb739aa30df6e74ba148ea and 03bce76. 📒 Files selected for processing (6)
🚧 Files skipped from review as they are similar to previous changes (1)
Included review availability: Your plan provides up to 10 included reviews per hour; 8 remain after this review. 📝 WalkthroughWalkthroughThe change adds direct Antigravity usage fetching through the Priority: ➖ Normal Merge Risk: ⚪ Minimal · up to This change switches Antigravity usage reporting from mirroring Gemini quota data to reading native quota data directly from the 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
Full details: Description checkExplanation The description explains the implementation, behavior, motivation, and validation, but it omits most required template sections. It does not include an issue link, visual proof or an explicit N/A explanation, testing checkboxes and platform details, AI disclosure, review section, boundary confirmation, notes, or the checklist. Resolution Update the description to use the repository template. Add a valid
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Advanced
Run ID: e3792a05-6083-42e2-923f-e91208f7bad9
📥 Commits
Reviewing files that changed from the base of the PR and between c9ae17f and 3ac77234b6bee157ebbb739aa30df6e74ba148ea.
📒 Files selected for processing (20)
src/main/rate-limits/antigravity-usage-fetcher.test.tssrc/main/rate-limits/antigravity-usage-fetcher.tssrc/main/rate-limits/antigravity-usage-mirror.test.tssrc/main/rate-limits/antigravity-usage-mirror.tssrc/main/rate-limits/service-antigravity-usage.test.tssrc/main/rate-limits/service/service-full-cycle-application.tssrc/main/rate-limits/service/service-full-cycle-preparation.tssrc/renderer/src/components/status-bar/StatusBarProviderSegment.test.tsxsrc/renderer/src/components/status-bar/StatusBarProviderSegment.tsxsrc/renderer/src/components/status-bar/UsageRosterPanel.test.tsxsrc/renderer/src/components/status-bar/UsageRosterPanel.tsxsrc/renderer/src/components/status-bar/antigravity-compact-metrics.tsxsrc/renderer/src/components/status-bar/antigravity-usage-format.tssrc/renderer/src/components/status-bar/status-bar-provider-visibility.test.tssrc/renderer/src/components/status-bar/status-bar-provider-visibility.tssrc/renderer/src/components/status-bar/tooltip.test.tssrc/renderer/src/components/status-bar/tooltip.tsxsrc/renderer/src/components/status-bar/usage-section-selection.tssrc/renderer/src/components/status-bar/use-status-bar-controller.tssrc/shared/rate-limit-types.ts
💤 Files with no reviewable changes (2)
- src/main/rate-limits/antigravity-usage-mirror.ts
- src/main/rate-limits/antigravity-usage-mirror.test.ts
Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.
There was a problem hiding this comment.
ℹ️ No critical issues — one real defect in the timeout classification, and the test that should catch it asserts a shape production never produces.
Reviewed changes
- Native Antigravity fetcher — new
fetchAntigravityRateLimitsshells out toagy --print /usage --output-format jsonviaexecFileCaptureToTermination(fixed argv, no shell, AbortSignal, 10s deadline, 1 MiB cap), parses provider groups/buckets, and classifies failures. - Mirror removed —
antigravity-usage-mirror.tsand its tests are deleted; Antigravity becomes its ownPromise.allSettledslot, applied throughapplyStalePolicyso buckets participate in stale retention. - Visibility decoupled from Gemini —
status-bar-provider-visibility.tsnow treatsantigravityUsageConfigured(checked status item + detectedagyCLI) as the durable signal, no longer requiring the Gemini OAuth opt-in. - Renderer — grouped verbose/compact Antigravity rendering, per-group tightest-window selection (session-first ties), native
5h/wk/source-window labels, and a sharedusage-section-selectionhelper. - Shared types — optional
RateLimitWindow.windowLabelandRateLimitBucket.id/groupName/groupDescription(additive, wire-safe).
DeepSeek Flash (free via Pullfrog for OSS) | 𝕏
3ac7723 to
03bce76
Compare
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
- Timeout classification fixed —
classifyAgyFailurenow also matcheskilled === true/signal === 'SIGTERM', so a real deadline kill fromexecFileCaptureToTerminationreaches the timeout-specific copy instead of the generic read-failure message. The regression test now rejects with the production shape ({ code: null, killed: true, signal: 'SIGTERM' }), matching the establishedgit-username.ts#isExecTimeoutErrorpredicate. Cancellation stays distinct: aborts are rethrown before classification. - Bucket sorting extracted and applied uniformly —
UsageRosterPanelverbose rendering and thetooltip.tsxprovider flyout now route Antigravity groups throughsortAntigravityBucketsinstead of ad-hoc.sort((a, b) => windowMinutes - …), so unknown windows (windowMinutes <= 0, e.g. a futuredailywindow) render after known 5h/weekly windows, with duration-ascending then name tie-breaks. Non-Antigravity ordering is unchanged. - Coverage added — new tests assert the unknown-window-after-known ordering in
UsageRosterPaneldetailed mode, theSession < Weekly < dailyordering plus native labels in the provider flyout, and non-Antigravity ordering preservation.
Verified against runProcess / execFileCaptureToTermination that a deadline kill resolves timedOut: true with signal: 'SIGTERM' and code: null, so the new predicate is reachable. Focused tests pass (3 files, 71 tests).
DeepSeek Flash (free via Pullfrog for OSS) | 𝕏
|
I reproduced a concrete version-compatibility issue with the exact Tested on macOS arm64 using official release binaries, with archive SHA-256 verification, automatic updates disabled, and executable versions/hashes checked unchanged before and after each run:
The 1.1.10 response reported This matches the official 1.1.11 release notes, which introduce direct handling of read-only slash commands in print mode without an agent turn or quota spend. The supported versions returned matching remaining fractions for all four buckets after the old-version probe; reset timestamps for the unused Claude/GPT pool advanced, so the complete outputs were not identical. Could we gate this path on Agy >=1.1.11 before invoking This was a standalone CLI test with a 60-second harness deadline, not an Orca E2E run. The PR's 10-second timeout may stop the process sooner, but it does not establish that an unsupported CLI cannot start an agent turn before being stopped. This concern is specific to older versions; the tested supported versions reported zero turns and tokens. |
|
I exercised the fetcher from this PR's current diff (head This machine uses an API-key configuration. The real command {"conversation_id":"","status":"SUCCESS","response":"","duration_seconds":0,"num_turns":0,"usage":{"input_tokens":0,"output_tokens":0,"thinking_tokens":0,"cache_read_tokens":0,"total_tokens":0},"command":{"name":"usage","data":{"groups":[]}}}Your fetcher correctly reports Scope of this verification: the candidate fetcher and empty-group parser path, run from the current Orca worktree. I have not verified populated OAuth quota groups or the full PR's rendered quota UI, so this is evidence for this edge case, not a merge approval. Text generation on this machine currently fails 401 |
|
I took over the native quota implementation in draft #21654, preserving credit for #20797 and adding the pre-invocation version guard requested in its review. Agy 1.1.10, the 1.1.11 prerelease, and unknown version output never receive ELI5: Orca asks Antigravity for its own quota numbers instead of copying Gemini's meter. No returned numbers means “usage unavailable,” not “0% used.” Verified the guarded production fetcher and actual Refresh → Antigravity usage panel against installed agy 1.2.7 on macOS. This machine returns empty quota groups. The PR includes that live screenshot and a separately labeled populated renderer fixture. 201 focused tests, full typecheck, and changed-code quality pass. Live populated OAuth quota, Windows/WSL/SSH, and paired-runtime behavior remain unverified; no auth changes or repeated old-version inference probe were made. The account login/card work remains open. |
|
Rebased this onto current main and added the missing piece from @abruption's review: a pre-check that gates |
|
sure can close, I'll pick it up |

Summary
agy --print /usage --output-format jsoninstead of mirroring Gemini quota state.Behavior
% used/% left+ reset countdown.5h/wk; provider flyouts use localizedSession/Weekly.Implementation
execFileCaptureToTerminationthrough Orca's sharedrunProcess/resolveSpawnpath with fixed argv, no shell interpolation, AbortSignal handling, bounded output/deadline, and process-tree termination.Validation