fix(lib): resolve root causes of login prompt in claude and TOS/theme onboarding in agy

This commit is contained in:
2026-07-22 23:44:49 +09:00
parent 8f7f4ed868
commit c65b194d88
4 changed files with 284 additions and 17 deletions
+35 -17
View File
@@ -1184,9 +1184,15 @@ provision_isolation() {
case "$agent" in
claude)
if [ -e "$HOME/.claude.json" ]; then ln -sfn "$HOME/.claude.json" "$root/.claude.json"; seeded=".claude.json"; fi
ln -sfn "$HOME/.claude/.credentials.json" "$root/.credentials.json"; seeded="${seeded:+$seeded,}.credentials.json"
if [ -e "$HOME/.claude/settings.json" ]; then ln -sfn "$HOME/.claude/settings.json" "$root/settings.json"; seeded="$seeded,settings.json"; fi
if [ -d "$HOME/.claude/plugins" ]; then ln -sfn "$HOME/.claude/plugins" "$root/plugins"; seeded="$seeded,plugins"; fi
if [ -e "$HOME/.claude/.credentials.json" ]; then ln -sfn "$HOME/.claude/.credentials.json" "$root/.credentials.json"; seeded="${seeded:+$seeded,}.credentials.json"; fi
if [ -e "$HOME/.claude/settings.json" ]; then
if [ ! -e "$root/settings.json" ]; then cp -a "$HOME/.claude/settings.json" "$root/settings.json"; fi
seeded="${seeded:+$seeded,}settings.json"
fi
if [ -d "$HOME/.claude/plugins" ]; then ln -sfn "$HOME/.claude/plugins" "$root/plugins"; seeded="${seeded:+$seeded,}plugins"; fi
if [ -d "$HOME/.claude/session-env" ]; then ln -sfn "$HOME/.claude/session-env" "$root/session-env"; seeded="${seeded:+$seeded,}session-env"; fi
if [ -d "$HOME/.claude/sessions" ]; then ln -sfn "$HOME/.claude/sessions" "$root/sessions"; seeded="${seeded:+$seeded,}sessions"; fi
if [ -d "$HOME/.claude/cache" ]; then ln -sfn "$HOME/.claude/cache" "$root/cache"; seeded="${seeded:+$seeded,}cache"; fi
;;
cline)
# CLI 가 --data-dir <root> 를 읽을 때 최상위 루트 하위에서 설정을 찾으므로 다이렉트 맵핑
@@ -1214,19 +1220,23 @@ provision_isolation() {
for f in oauth_creds.json google_accounts.json installation_id settings.json state.json; do
if [ -e "$HOME/.gemini/$f" ]; then ln -sfn "$HOME/.gemini/$f" "$root/.gemini/$f"; seeded="${seeded:+$seeded,}.gemini/$f"; fi
done
for f in antigravity-oauth-token installation_id settings.json; do
for f in antigravity-oauth-token installation_id settings.json conversation_summaries.db jetski_state.pbtxt; do
if [ -e "$HOME/.gemini/antigravity-cli/$f" ]; then ln -sfn "$HOME/.gemini/antigravity-cli/$f" "$root/.gemini/antigravity-cli/$f"; seeded="${seeded:+$seeded,}.gemini/antigravity-cli/$f"; fi
done
if [ -d "$HOME/.gemini/antigravity" ]; then
ln -sfn "$HOME/.gemini/antigravity" "$root/.gemini/antigravity"
seeded="${seeded:+$seeded,}.gemini/antigravity"
fi
if [ -d "$HOME/.gemini/antigravity-ide" ]; then
if [ ! -d "$root/.gemini/antigravity-ide" ]; then cp -a "$HOME/.gemini/antigravity-ide" "$root/.gemini/antigravity-ide"; fi
seeded="${seeded:+$seeded,}.gemini/antigravity-ide"
fi
if [ -d "$HOME/.gemini/config" ]; then
ln -sfn "$HOME/.gemini/config" "$root/.gemini/config"
seeded="${seeded:+$seeded,}.gemini/config"
fi
# On macOS, seed ~/Library/Keychains to allow isolated agy to query Keychain Access credentials
# Also seed Preferences and Application Support for Antigravity settings/TOS
# Also seed Preferences and Application Support for Antigravity settings/TOS/Theme (using cp -a for write isolation)
if [ "$(uname)" = "Darwin" ]; then
mkdir -p "$root/Library"
if [ -d "$HOME/Library/Keychains" ]; then
@@ -1234,42 +1244,50 @@ provision_isolation() {
seeded="${seeded:+$seeded,}Library/Keychains"
fi
mkdir -p "$root/Library/Preferences"
for plist in com.google.antigravity.plist com.google.GeminiMacOS.plist com.google.GeminiMacOS.shareddata.plist; do
for plist in com.google.antigravity.plist com.google.antigravity-ide.plist com.google.GeminiMacOS.plist com.google.GeminiMacOS.shareddata.plist com.google.GeminiMacOS.launcher.plist; do
if [ -f "$HOME/Library/Preferences/$plist" ]; then
ln -sfn "$HOME/Library/Preferences/$plist" "$root/Library/Preferences/$plist"
seeded="$seeded,Library/Preferences/$plist"
if [ ! -f "$root/Library/Preferences/$plist" ]; then cp -a "$HOME/Library/Preferences/$plist" "$root/Library/Preferences/$plist"; fi
seeded="${seeded:+$seeded,}Library/Preferences/$plist"
fi
done
mkdir -p "$root/Library/Application Support"
if [ -d "$HOME/Library/Application Support/Antigravity" ]; then
mkdir -p "$root/Library/Application Support"
ln -sfn "$HOME/Library/Application Support/Antigravity" "$root/Library/Application Support/Antigravity"
seeded="$seeded,Library/Application Support/Antigravity"
if [ ! -d "$root/Library/Application Support/Antigravity" ]; then cp -a "$HOME/Library/Application Support/Antigravity" "$root/Library/Application Support/Antigravity"; fi
seeded="${seeded:+$seeded,}Library/Application Support/Antigravity"
fi
if [ -d "$HOME/Library/Application Support/Antigravity IDE" ]; then
if [ ! -d "$root/Library/Application Support/Antigravity IDE" ]; then cp -a "$HOME/Library/Application Support/Antigravity IDE" "$root/Library/Application Support/Antigravity IDE"; fi
seeded="${seeded:+$seeded,}Library/Application Support/Antigravity IDE"
fi
if [ -d "$HOME/Library/Application Support/com.google.GeminiMacOS" ]; then
if [ ! -d "$root/Library/Application Support/com.google.GeminiMacOS" ]; then cp -a "$HOME/Library/Application Support/com.google.GeminiMacOS" "$root/Library/Application Support/com.google.GeminiMacOS"; fi
seeded="${seeded:+$seeded,}Library/Application Support/com.google.GeminiMacOS"
fi
if [ -d "$HOME/Library/Group Containers/group.com.google.gemini" ]; then
mkdir -p "$root/Library/Group Containers"
ln -sfn "$HOME/Library/Group Containers/group.com.google.gemini" "$root/Library/Group Containers/group.com.google.gemini"
seeded="$seeded,Library/Group Containers/group.com.google.gemini"
seeded="${seeded:+$seeded,}Library/Group Containers/group.com.google.gemini"
fi
else
# On Linux/Unix, seed XDG config and local data dirs for Antigravity settings/TOS
# On Linux/Unix, seed XDG config and local data dirs for Antigravity settings/TOS (using cp -a for write isolation)
local xdg_config="${XDG_CONFIG_HOME:-$HOME/.config}"
local xdg_data="${XDG_DATA_HOME:-$HOME/.local/share}"
if [ -d "$xdg_config/Antigravity" ]; then
mkdir -p "$root/.config"
ln -sfn "$xdg_config/Antigravity" "$root/.config/Antigravity"
if [ ! -d "$root/.config/Antigravity" ]; then cp -a "$xdg_config/Antigravity" "$root/.config/Antigravity"; fi
seeded="${seeded:+$seeded,}.config/Antigravity"
elif [ -d "$xdg_config/antigravity" ]; then
mkdir -p "$root/.config"
ln -sfn "$xdg_config/antigravity" "$root/.config/antigravity"
if [ ! -d "$root/.config/antigravity" ]; then cp -a "$xdg_config/antigravity" "$root/.config/antigravity"; fi
seeded="${seeded:+$seeded,}.config/antigravity"
fi
if [ -d "$xdg_data/Antigravity" ]; then
mkdir -p "$root/.local/share"
ln -sfn "$xdg_data/Antigravity" "$root/.local/share/Antigravity"
if [ ! -d "$root/.local/share/Antigravity" ]; then cp -a "$xdg_data/Antigravity" "$root/.local/share/Antigravity"; fi
seeded="${seeded:+$seeded,}.local/share/Antigravity"
elif [ -d "$xdg_data/antigravity" ]; then
mkdir -p "$root/.local/share"
ln -sfn "$xdg_data/antigravity" "$root/.local/share/antigravity"
if [ ! -d "$root/.local/share/antigravity" ]; then cp -a "$xdg_data/antigravity" "$root/.local/share/antigravity"; fi
seeded="${seeded:+$seeded,}.local/share/antigravity"
fi
fi