Skip to content

feat(antigravity): add support for Antigravity IDE storage on Windows#612

Open
Battiatus wants to merge 1 commit into
getagentseal:mainfrom
Battiatus:feat/antigravity-ide-timestamps
Open

feat(antigravity): add support for Antigravity IDE storage on Windows#612
Battiatus wants to merge 1 commit into
getagentseal:mainfrom
Battiatus:feat/antigravity-ide-timestamps

Conversation

@Battiatus

@Battiatus Battiatus commented Jul 3, 2026

Copy link
Copy Markdown

Summary

  • Adds support for detecting Antigravity IDE usage on Windows from VSCode-style storage
  • Extends provider to scan %APPDATA%\Antigravity IDE\User\globalStorage\state.vscdb
  • Improves path classification to distinguish IDE vs CLI sessions
  • Handles missing per-call timestamps by using file mtime as fallback source

Resolves: CodeBurn reporting zero usage when Antigravity IDE is actively used

Issue id: #411 (comment)

Changes

  • antigravity.ts: Add APPDATA IDE storage root; refine antigravityAppDataDirFromSourcePath() to classify IDE dirs; add stampFallbackTimestamp() helper for missing timestamps across all emission paths; bump CACHE_VERSION to 4
  • session-cache.ts: Update parser fingerprint to worktree-project-grouping-v5
  • main.ts: Clarify CLI install message that IDE sessions are auto-detected
  • docs: Clarify that state.vscdb stores trajectory metadata only
  • tests: Add helper withTempAntigravityHome(); add coverage for IDE path detection and timestamp fallback

Test Plan

  • All 27 antigravity provider tests pass
  • TypeScript compilation clean (tsc)
  • Manual: Run `npx tsx src/cli.ts` today with Antigravity IDE usage and verify sessions are detected without --provider flag
  • Manual: Run `npx tsx src/cli.ts` a second time and verify cache hit (no reparse)

CodeBurn previously only detected Antigravity CLI usage (.pb files under
.gemini/antigravity/). Antigravity IDE on Windows stores session state in
VSCode-style storage at %APPDATA%\Antigravity IDE\User\globalStorage\state.vscdb,
which was not detected.

Add support for reading Antigravity IDE sessions from the VSCode-style storage:
- Extend CONVERSATION_ROOTS to include APPDATA Antigravity IDE path
- Refine path classification to properly identify IDE vs CLI sessions
- Handle missing per-call timestamps by stamping file mtime as fallback
- Bump CACHE_VERSION to 4 for cache invalidation

Fixes: CodeBurn reports zero usage when Antigravity IDE is actively used.
@Battiatus Battiatus marked this pull request as draft July 3, 2026 13:45
@Battiatus Battiatus marked this pull request as ready for review July 3, 2026 13:47

@ozymandiashh ozymandiashh left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this — the underlying problem it targets (SQLite gen_metadata calls with no per-call timestamp being silently dropped by the date-range filters) is real and worth fixing. A few things to resolve before it can merge:

1. Scope/title is stale vs main. Antigravity IDE discovery already landed in #418 (35a8518): ~/.gemini/antigravity-ide/conversations (+ implicit) are in CONVERSATION_ROOTS on main today. This PR does not add a new storage root, so "add support for Antigravity IDE storage" / "previously only detected Antigravity CLI" no longer describe the change. Please retitle to what it actually does (timestamp fallback + path classification).

2. The new APPDATA classifier branch is unreachable. antigravityAppDataDirFromSourcePath's if (lower.includes('/antigravity ide/')) (src/providers/antigravity.ts:471) can't fire in normal operation: discoverAntigravitySessionSources only walks the ~/.gemini/... roots, so no discovered source.path is ever an APPDATA path — and your own doc note says the %APPDATA%\...\state.vscdb DB holds trajectory metadata, "not token usage". As written it is dead code. Either wire APPDATA discovery for real, or drop the branch.

3. If kept, that classifier misroutes a real case. It is a broad substring match checked after the .gemini/antigravity-{ide,cli}/ cases, so a base-app path under a folder literally named "Antigravity IDE" — e.g. C:\Users\Antigravity IDE\.gemini\antigravity\conversations\x.db — classifies as antigravity-ide, and detectServer then targets the wrong server. Guard the base path first: if (lower.includes('/.gemini/antigravity/')) return 'antigravity' before the APPDATA line. No test covers this; the added test only checks the .gemini/antigravity-cli/ precedence case.

4. mtime-as-timestamp misattributes cost across date ranges. stampFallbackTimestamp assigns the same new Date(s.mtimeMs) to every timeless call and persists it into the cache. Consequences: (a) an entire multi-turn session's cost buckets onto the day the .db was last written, so today/week/month views are wrong for older sessions; (b) any later file rewrite shifts all historical calls forward to the new mtime. Antigravity already exposes real per-entry times (RPC chatStartMetadata.createdAt, and the state.vscdb trajectory metadata you documented), so prefer those over a shared file mtime. At minimum, don't persist a synthesized mtime into the cache, so a re-write can't retro-date history.

CI is green and types are clean, so none of this is blocking on CI — but 2-4 are correctness issues. Happy to re-review once addressed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants