@@ -1195,17 +1195,94 @@ install_agents_antigravity() {
11951195 return 1
11961196 fi
11971197 fi
1198+ if [[ " ${DRY_RUN:- false} " = " true" ]]; then
1199+ log_info " dry-run: install: install agy-locked launchers and prime settings (target_user)"
1200+ else
1201+ if ! run_as_target_shell << 'INSTALL_AGENTS_ANTIGRAVITY '
1202+ # acfs-summary: install agy-locked launchers and prime settings
1203+ target_bin="${ACFS_BIN_DIR:-$HOME/.local/bin}"
1204+ source_file=""
1205+ for candidate in \
1206+ "${ACFS_LIB_DIR:-$HOME/.acfs/scripts/lib}/agy_locked.py" \
1207+ "$HOME/.acfs/scripts/lib/agy_locked.py"; do
1208+ if [[ -f "$candidate" ]]; then
1209+ source_file="$candidate"
1210+ break
1211+ fi
1212+ done
1213+
1214+ if [[ -z "$source_file" ]]; then
1215+ echo "agents.antigravity: agy locked launcher asset not found" >&2
1216+ exit 1
1217+ fi
1218+
1219+ mkdir -p "$target_bin"
1220+ install -m 0755 "$source_file" "$target_bin/agy-locked"
1221+ install -m 0755 "$source_file" "$target_bin/gmi"
1222+
1223+ if "$target_bin/agy-locked" --acfs-prime-settings; then
1224+ echo "agents.antigravity: agy locked settings and dcg hook primed" >&2
1225+ else
1226+ echo "agents.antigravity: warning: settings will be primed on first agy launch" >&2
1227+ fi
1228+ INSTALL_AGENTS_ANTIGRAVITY
1229+ then
1230+ log_error " agents.antigravity: install command failed: install agy-locked launchers and prime settings"
1231+ return 1
1232+ fi
1233+ fi
11981234
11991235 # Verify
12001236 if [[ " ${DRY_RUN:- false} " = " true" ]]; then
1201- log_info " dry-run: verify: \"\$ target_bin/agy \" --version || \"\$ target_bin/agy \" --help (target_user)"
1237+ log_info " dry-run: verify: verify agy-locked launchers and pinned settings (target_user)"
12021238 else
12031239 if ! run_as_target_shell << 'INSTALL_AGENTS_ANTIGRAVITY '
1240+ # acfs-summary: verify agy-locked launchers and pinned settings
12041241target_bin="${ACFS_BIN_DIR:-$HOME/.local/bin}"
1205- "$target_bin/agy" --version || "$target_bin/agy" --help
1242+ test -x "$target_bin/agy"
1243+ test -x "$target_bin/agy-locked"
1244+ test -x "$target_bin/gmi"
1245+ python3 - <<'PY'
1246+ import json
1247+ import pathlib
1248+ import sys
1249+
1250+ settings_path = pathlib.Path.home() / ".gemini" / "antigravity-cli" / "settings.json"
1251+ hook_path = pathlib.Path.home() / ".gemini" / "config" / "hooks" / "dcg-antigravity-hook.py"
1252+ try:
1253+ settings = json.loads(settings_path.read_text(encoding="utf-8"))
1254+ except Exception as exc:
1255+ print(f"invalid or missing Antigravity settings: {settings_path}: {exc}", file=sys.stderr)
1256+ raise SystemExit(1)
1257+
1258+ expected = {
1259+ "model": "Gemini 3.1 Pro (High)",
1260+ "toolPermission": "always-proceed",
1261+ "artifactReviewPolicy": "always-proceed",
1262+ "enableTelemetry": False,
1263+ "enableTerminalSandbox": False,
1264+ "allowNonWorkspaceAccess": True,
1265+ "notifications": False,
1266+ "showTips": False,
1267+ "showFeedbackSurvey": False,
1268+ "useG1Credits": False,
1269+ "verbosity": "high",
1270+ "runningLightSpeed": "medium",
1271+ "colorScheme": "terminal",
1272+ "editor": "auto",
1273+ "altScreenMode": "never",
1274+ }
1275+ for key, value in expected.items():
1276+ if settings.get(key) != value:
1277+ print(f"Antigravity setting {key} is {settings.get(key)!r}, expected {value!r}", file=sys.stderr)
1278+ raise SystemExit(1)
1279+ if not hook_path.is_file():
1280+ print(f"Antigravity dcg hook is missing: {hook_path}", file=sys.stderr)
1281+ raise SystemExit(1)
1282+ PY
12061283INSTALL_AGENTS_ANTIGRAVITY
12071284 then
1208- log_error " agents.antigravity: verify failed: \"\$ target_bin/agy \" --version || \"\$ target_bin/agy \" --help "
1285+ log_error " agents.antigravity: verify failed: verify agy-locked launchers and pinned settings "
12091286 return 1
12101287 fi
12111288 fi
0 commit comments