diff --git a/.agents/skills/lib.sh b/.agents/skills/lib.sh index 3846d99..f2e23c1 100644 --- a/.agents/skills/lib.sh +++ b/.agents/skills/lib.sh @@ -1217,13 +1217,61 @@ provision_isolation() { for f in antigravity-oauth-token installation_id settings.json; 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/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 if [ "$(uname)" = "Darwin" ]; then mkdir -p "$root/Library" if [ -d "$HOME/Library/Keychains" ]; then ln -sfn "$HOME/Library/Keychains" "$root/Library/Keychains" 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 + if [ -f "$HOME/Library/Preferences/$plist" ]; then + ln -sfn "$HOME/Library/Preferences/$plist" "$root/Library/Preferences/$plist" + seeded="$seeded,Library/Preferences/$plist" + fi + done + 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" + 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" + fi + else + # On Linux/Unix, seed XDG config and local data dirs for Antigravity settings/TOS + 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" + seeded="${seeded:+$seeded,}.config/Antigravity" + elif [ -d "$xdg_config/antigravity" ]; then + mkdir -p "$root/.config" + ln -sfn "$xdg_config/antigravity" "$root/.config/antigravity" + 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" + 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" + seeded="${seeded:+$seeded,}.local/share/antigravity" + fi fi ;; hermes) @@ -1572,18 +1620,24 @@ send_keys_safe() { _sks_herdr send-keys -t "$sess" C-m return 0 fi - sleep 0.5 - local pane_content was_popup=0 - pane_content=$(_pane_capture "$sess") - if printf '%s\n' "$pane_content" | grep -Eq "Pasted text|paste again to expand"; then - was_popup=1 - # Strip ALL whitespace before matching — the rendered pane soft-wraps long - # lines at the terminal width (and some TUIs add indentation on the - # continuation line too), which can split/reformat the marker across two - # visual lines and make a literal grep miss it even though the paste landed. - elif ! printf '%s' "$pane_content" | tr -d '[:space:]' | grep -Fq "$marker_norm"; then - echo "send_keys_safe: paste not visible ($sess)" >&2 - return 3 + local was_popup=0 + if [[ "$sess" =~ "cline" ]] || [[ "$sess" =~ "claude" ]]; then + # Skip strict paste check due to scrollout false-positives, proceed to C-m loop + true + else + sleep 0.5 + local pane_content + pane_content=$(_pane_capture "$sess") + if printf '%s\n' "$pane_content" | grep -Eq "Pasted text|paste again to expand"; then + was_popup=1 + # Strip ALL whitespace before matching — the rendered pane soft-wraps long + # lines at the terminal width (and some TUIs add indentation on the + # continuation line too), which can split/reformat the marker across two + # visual lines and make a literal grep miss it even though the paste landed. + elif ! printf '%s' "$pane_content" | tr -d '[:space:]' | grep -Fq "$marker_norm"; then + echo "send_keys_safe: paste not visible ($sess)" >&2 + return 3 + fi fi for try in 1 2 3; do