diff --git a/crates/plannotator-tui-hosts/src/antigravity.rs b/crates/plannotator-tui-hosts/src/antigravity.rs index 4ae81a0..cf38900 100644 --- a/crates/plannotator-tui-hosts/src/antigravity.rs +++ b/crates/plannotator-tui-hosts/src/antigravity.rs @@ -1,5 +1,5 @@ //! Antigravity CLI (`agy`): one directory per conversation under the app data directory -//! (`$ANTIGRAVITY_CLI_HOME`, default `~/.gemini/antigravity-cli`), its steps in +//! (`$ANTIGRAVITY_CLI_HOME` or `$ANTIGRAVITY_APP_DATA_DIR`, default `~/.gemini/antigravity-cli`), its steps in //! `brain//.system_generated/logs/transcript_full.jsonl`. //! //! Each line is one step: `USER_INPUT` steps carry the prompt in `content`, `PLANNER_RESPONSE` diff --git a/crates/plannotator-tui-hosts/src/lib.rs b/crates/plannotator-tui-hosts/src/lib.rs index 9f01635..bc39ee2 100644 --- a/crates/plannotator-tui-hosts/src/lib.rs +++ b/crates/plannotator-tui-hosts/src/lib.rs @@ -41,7 +41,7 @@ pub enum Host { /// reports it as `cmd`. CommandCode, /// Antigravity CLI: `/brain//.../transcript_full.jsonl`, the - /// app data directory `~/.gemini/antigravity-cli` unless `ANTIGRAVITY_CLI_HOME` moves it; + /// app data directory `~/.gemini/antigravity-cli` unless `ANTIGRAVITY_CLI_HOME` or `ANTIGRAVITY_APP_DATA_DIR` moves it; /// Herdr reports it as `agy` with the conversation id. Antigravity, } diff --git a/crates/plannotator-tui/src/last/roots.rs b/crates/plannotator-tui/src/last/roots.rs index 5f03223..d00c2c6 100644 --- a/crates/plannotator-tui/src/last/roots.rs +++ b/crates/plannotator-tui/src/last/roots.rs @@ -36,7 +36,9 @@ impl Roots { codex_home: path("CODEX_HOME").unwrap_or_else(|| home.join(".codex")), copilot_home: path("COPILOT_HOME").unwrap_or_else(|| home.join(".copilot")), factory_config: path("FACTORY_CONFIG_DIR").unwrap_or_else(|| home.join(".factory")), + // agy 1.2.7 reads ANTIGRAVITY_APP_DATA_DIR; ANTIGRAVITY_CLI_HOME is the name reported in #70. antigravity_home: path("ANTIGRAVITY_CLI_HOME") + .or_else(|| path("ANTIGRAVITY_APP_DATA_DIR")) .unwrap_or_else(|| home.join(antigravity::DEFAULT_APP_DATA_DIR)), pi_session_dir: path("PI_CODING_AGENT_SESSION_DIR"), pi_agent_dir: path("PI_CODING_AGENT_DIR"), @@ -108,6 +110,14 @@ mod tests { use super::*; + #[test] + fn antigravity_app_data_dir_is_honoured() { + let roots = Roots::from_lookup(PathBuf::from("home"), |key| { + (key == "ANTIGRAVITY_APP_DATA_DIR").then(|| OsString::from("root/agy app")) + }); + assert_eq!(roots.antigravity_home, PathBuf::from("root/agy app")); + } + #[test] fn every_documented_root_override_is_honoured() { let values: HashMap<&str, OsString> = [ diff --git a/docs/decisions.md b/docs/decisions.md index bc83288..850d95c 100644 --- a/docs/decisions.md +++ b/docs/decisions.md @@ -380,7 +380,7 @@ when it runs its own Herdr integration; that id is looked up as `.jsonl`, sl first. **Antigravity CLI** (2026-10-27, herdr-annotate#70). `agy` keeps one directory per -conversation in its app data directory (`$ANTIGRAVITY_CLI_HOME`, else +conversation in its app data directory (`$ANTIGRAVITY_CLI_HOME` or `$ANTIGRAVITY_APP_DATA_DIR`, else `~/.gemini/antigravity-cli`, `%USERPROFILE%` on Windows): `brain//.system_generated/logs/transcript_full.jsonl`, one step per line. `transcript.jsonl` beside it truncates long `content` and is never read. A reply is a