From 5e1f4c6ca151a72d28f27f49f4ff9effa6686e15 Mon Sep 17 00:00:00 2001 From: Roman | RyzenAdvanced Date: Wed, 27 May 2026 15:32:55 +0400 Subject: [PATCH] v3.13.5: anti-loop resilience, auto 401 refresh, budget cap 150, cobra PR #17 --- CHANGELOG.md | 23 +++ codex-launcher-gui | 2 +- codex-launcher_3.13.5_all.deb | Bin 0 -> 131538 bytes codex_launcher_lib.py | 2 +- test-antigravity.sh | 306 ++++++++++++++++++++++++++- translate-proxy.py | 379 ++++++++++++++++++++++++++++------ 6 files changed, 635 insertions(+), 77 deletions(-) create mode 100644 codex-launcher_3.13.5_all.deb diff --git a/CHANGELOG.md b/CHANGELOG.md index f8a39b1..fedd780 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,28 @@ # Changelog +## v3.13.5 (2026-05-27) + +**Anti-Loop & Flash Model Resilience, Auto Token Refresh** + +### New Features +- **Cross-session loop tracker**: Keys by user request hash — detects loops even when client creates new sessions per retry. Resets counter on new tasks. +- **Tool-call budget**: 150 calls max per task, warning at 80. Injects directive to stop reading and write, instead of killing the session. +- **File-path read-loop detection**: Same file read 5+ times or 30+ total file reads triggers force-finalize +- **Smart compaction summary**: Directive text when read-loop detected in compacted history +- **Model-aware idle timeout**: Flash/mini/haiku models get 120s timeout instead of 300s +- **Auto 401 token refresh**: On 401 transient, force-refreshes Google OAuth token and retries once +- **`_send_ag_finalize()` helper**: Returns synthetic response for hard terminations +- **Default provider policy**: Unrecognized providers get balanced compaction (128K context, 60 items) +- **Anti-stall self-kill fix**: No longer kills own parent process or process group +- **E2E test suite with real CLI task**: `test-antigravity.sh --task` + +### Bug Fixes +- Fix `_schema` NameError in smart-continue nudge (cobra91 PR #17) +- Fix `_anti_stall_cleanup()` killing own parent/shell wrapper +- Fix task_retry_count counting every turn instead of same-task retries +- Fix tool-call budget cap killing session instead of injecting directive +- Merged cobra91 PR #17: MSIX Desktop launch, button state + ## v3.13.0 (2026-05-27) **Codex Desktop Updater, Antigravity E2E, Profile System Fix** diff --git a/codex-launcher-gui b/codex-launcher-gui index d0a5bfa..3f6b115 100755 --- a/codex-launcher-gui +++ b/codex-launcher-gui @@ -27,7 +27,7 @@ model_catalog_json = "" """ CHANGELOG = [ - ("3.13.0", "2026-05-27", [ + ("3.13.5", "2026-05-27", [ "Codex Desktop Updater: auto-update from ilysenko/codex-desktop-linux", "Fix Antigravity: prod endpoint first, model resolution, OAUTH_PROVIDER derivation", "Fix Codex CLI 0.134.0 profile system: separate .config.toml files", diff --git a/codex-launcher_3.13.5_all.deb b/codex-launcher_3.13.5_all.deb new file mode 100644 index 0000000000000000000000000000000000000000..092db06ea181f62f31d30512ccd80c52b9cb894d GIT binary patch literal 131538 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ʌ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ȳGTj6p2Lue(k4cz=vAFS*;O~Ls)Ysr(f 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 gwAvd(%e93}/dev/null || true +find /home/roman/.local/bin -name "__pycache__" -type d -exec rm -rf {} + 2>/dev/null; true PROXY_PID="" -PROXY_PORT=$TEST_PORT PROXY_API_KEY=$PROXY_API_KEY PROXY_BACKEND=gemini-oauth-antigravity \ - PROXY_TARGET_URL=https://cloudcode-pa.googleapis.com \ - python3 /home/roman/.local/bin/translate-proxy.py >/tmp/antigravity-test-proxy.log 2>&1 & +export PROXY_PORT=$TEST_PORT +export PROXY_API_KEY=$PROXY_API_KEY +export PROXY_BACKEND=gemini-oauth-antigravity +export PROXY_TARGET_URL=https://cloudcode-pa.googleapis.com +python3 /home/roman/.local/bin/translate-proxy.py >/tmp/antigravity-test-proxy.log 2>&1 & PROXY_PID=$! cleanup() { kill $PROXY_PID 2>/dev/null || true; wait $PROXY_PID 2>/dev/null || true; } @@ -171,6 +188,273 @@ print(d.get('error',{}).get('message','')[:120])" 2>/dev/null || echo "unknown") [ "$VERBOSE" = "1" ] && cat /tmp/antigravity-test-proxy.log fi +# ── Test 4: Real Codex CLI Task ──────────────────────────────────── +if [ "$RUN_TASK" = "1" ]; then + echo ""; echo "─── Test 4: Real Codex CLI Task ───" + + if ! command -v codex &>/dev/null; then + log_skip "Codex CLI not found" + else + CLI_VERSION=$(codex --version 2>/dev/null || echo "unknown") + log_info "Codex CLI: $CLI_VERSION" + + TASK_PROMPT='Redesign the
section in site/index.html. Create a bold, innovative Steve Jobs-style design: boxy approach with contrasting boxes (one side white, one black), custom art seamless background that blends the two halves, think out of the box. Use pure CSS + HTML only, no external images. Make it visually stunning with geometric precision. The section is inside the existing page so keep the outer wrapper class vdb-universe with id=vectordb. Do NOT touch anything outside that section.' + + TASK_WORKSPACE="/home/roman/Codex-Launcher-Any-AI-Provider" + + mkdir -p /tmp/antigravity-task-logs + TASK_PROXY_LOG="/tmp/antigravity-task-logs/proxy-$(date +%s).log" + TASK_CLI_LOG="/tmp/antigravity-task-logs/cli-$(date +%s).log" + TASK_MONITOR_LOG="/tmp/antigravity-task-logs/monitor-$(date +%s).log" + + # Set up proxy for CLI task (use the one already running on TEST_PORT) + # Write codex profile + config pointing to our test proxy + CONFIG_DIR="$HOME/.codex" + CONFIG_FILE="$CONFIG_DIR/config.toml" + CONFIG_BACKUP="$CONFIG_DIR/config.toml.task-backup" + + [ -f "$CONFIG_FILE" ] && cp "$CONFIG_FILE" "$CONFIG_BACKUP" + + # Generate model catalog + CATALOG_PATH="$HOME/.cache/codex-proxy/models-Antigravity-Test.json" + python3 -c " +import json +models = ['gemini-3.5-flash-high', 'gemini-3.5-flash-medium', 'gemini-3.5-flash-low', + 'gemini-3.1-pro-high', 'gemini-3.1-pro-low', + 'claude-sonnet-4-6', 'claude-opus-4-6-thinking', 'gpt-oss-120b-medium'] +catalog = [] +for m in models: + catalog.append({ + 'slug': m, 'model': m, 'display_name': m, + 'description': f'Antigravity {m}', 'hidden': False, + 'isDefault': m == 'gemini-3.5-flash-high', + 'shell_type': 'shell_command', 'visibility': 'list', + 'default_reasoning_level': 'medium', + 'supported_reasoning_levels': [ + {'effort': 'low', 'description': 'Fast'}, + {'effort': 'medium', 'description': 'Balanced'}, + {'effort': 'high', 'description': 'Deep'}, + ], + }) +json.dump(catalog, open('$CATALOG_PATH', 'w'), indent=2) +" + + # Write main config + cat > "$CONFIG_FILE" < "$PROFILE_FILE" <> "$TASK_MONITOR_LOG" + break + } + + # Check proxy is alive + if ! kill -0 $PROXY_PID 2>/dev/null; then + echo "[MONITOR] FATAL: Proxy process died" >> "$TASK_MONITOR_LOG" + break + fi + + # Count lines in proxy log + LINE_COUNT=$(wc -l < "$PROXY_LOG" 2>/dev/null || echo 0) + NEW_LINES=$(( LINE_COUNT - PREV_LINE_COUNT )) + PREV_LINE_COUNT=$LINE_COUNT + + # Stall detection: no new log lines for 3 consecutive checks = stalled + if [ "$NEW_LINES" -eq 0 ]; then + STALL_COUNT=$(( STALL_COUNT + 1 )) + if [ "$STALL_COUNT" -ge 18 ]; then + echo "[MONITOR] STALL: No proxy activity for 180s" >> "$TASK_MONITOR_LOG" + fi + else + STALL_COUNT=0 + fi + + # Loop detection: check if same tool call repeats + RECENT=$(tail -50 "$PROXY_LOG" 2>/dev/null | grep "exec_command" | tail -5 | md5sum | cut -c1-8) + if [ -n "$RECENT" ] && [ "$RECENT" = "$LOOP_DETECTOR" ]; then + LOOP_COUNT=$(( LOOP_COUNT + 1 )) + if [ "$LOOP_COUNT" -ge 6 ]; then + echo "[MONITOR] LOOP: Same tool calls repeating ($LOOP_COUNT times)" >> "$TASK_MONITOR_LOG" + fi + else + LOOP_DETECTOR="$RECENT" + LOOP_COUNT=0 + fi + + # Check for error patterns + ERRORS=$(tail -100 "$PROXY_LOG" 2>/dev/null | grep -ciE "error|failed|timeout|500|502|503|429" || echo 0) + if [ "$ERRORS" -gt 10 ]; then + echo "[MONITOR] ERRORS: $ERRORS error lines in last 100 log lines" >> "$TASK_MONITOR_LOG" + fi + + # Check for compaction issues + COMPACT_LINES=$(tail -200 "$PROXY_LOG" 2>/dev/null | grep -c "compacted\|compaction\|trimming" || echo 0) + if [ "$COMPACT_LINES" -gt 20 ]; then + echo "[MONITOR] COMPACTION: Excessive compaction ($COMPACT_LINES events)" >> "$TASK_MONITOR_LOG" + fi + + # Check context item count + HIGH_ITEM=$(tail -200 "$PROXY_LOG" 2>/dev/null | grep -oP '\[\d+\]' | grep -oP '\d+' | sort -rn | head -1 || echo 0) + if [ -n "$HIGH_ITEM" ] && [ "$HIGH_ITEM" -gt 100 ]; then + echo "[MONITOR] CONTEXT: High item count detected: [$HIGH_ITEM]" >> "$TASK_MONITOR_LOG" + fi + + # Log heartbeat + echo "[MONITOR] ${ELAPSED}s elapsed, ${LINE_COUNT} log lines, ${NEW_LINES} new, ${ERRORS} errors" >> "$TASK_MONITOR_LOG" + done + ) & + MONITOR_PID=$! + + # ── Launch Codex CLI with the task ── + log_info "Launching Codex CLI with real task..." + log_info "Task: Redesign vectordb section (boxy black/white approach)" + log_info "Monitor log: $TASK_MONITOR_LOG" + + cd "$TASK_WORKSPACE" + + # Run codex non-interactively with --quiet flag + set +e + codex --profile Antigravity-Test -c "model=gemini-3.5-flash-high" \ + -s danger-full-access -a never \ + -q "$TASK_PROMPT" \ + > "$TASK_CLI_LOG" 2>&1 + CLI_EXIT=$? + set -e + + # Stop monitor + kill $MONITOR_PID 2>/dev/null || true + wait $MONITOR_PID 2>/dev/null || true + + CLI_DURATION=$(wc -l < "$TASK_CLI_LOG" 2>/dev/null || echo 0) + log_info "CLI exited (code $CLI_EXIT, $CLI_DURATION output lines)" + + # ── Analyze results ── + echo ""; echo "─── Test 4a: CLI Task Results ───" + + if [ "$CLI_EXIT" -eq 0 ]; then + log_pass "CLI task completed successfully" + else + log_fail "CLI task failed (exit code $CLI_EXIT)" + echo " Last 10 lines of CLI output:" + tail -10 "$TASK_CLI_LOG" 2>/dev/null | sed 's/^/ /' + fi + + # Check monitor log for anomalies + echo ""; echo "─── Test 4b: Anomaly Analysis ───" + if [ -f "$TASK_MONITOR_LOG" ]; then + ANOMALIES=$(grep -c "\[MONITOR\]" "$TASK_MONITOR_LOG" 2>/dev/null || echo 0) + CRITICAL=$(grep -cE "FATAL|LOOP|TIMEOUT|STALL|ERRORS|COMPACTION|CONTEXT" "$TASK_MONITOR_LOG" 2>/dev/null || echo 0) + log_info "Monitor: $ANOMALIES checks, $CRITICAL anomalies detected" + + if [ "$CRITICAL" -gt 0 ]; then + echo -e " ${RED}ANOMALIES FOUND:${NC}" + grep -E "FATAL|LOOP|TIMEOUT|STALL|ERRORS|COMPACTION|CONTEXT" "$TASK_MONITOR_LOG" | while read line; do + echo -e " ${RED}$line${NC}" + done + log_fail "$CRITICAL anomalies detected during task" + else + log_pass "No anomalies detected during task" + fi + + [ "$VERBOSE" = "1" ] && cat "$TASK_MONITOR_LOG" + else + log_skip "No monitor log produced" + fi + + # Check proxy log for issues + echo ""; echo "─── Test 4c: Proxy Health ───" + if [ -f "/tmp/antigravity-test-proxy.log" ]; then + ERROR_COUNT=$(grep -ciE "error|failed|exception|traceback" /tmp/antigravity-test-proxy.log || echo 0) + TIMEOUT_COUNT=$(grep -ci "timeout\|timed.out" /tmp/antigravity-test-proxy.log || echo 0) + COMPACT_COUNT=$(grep -c "compacted\|compaction" /tmp/antigravity-test-proxy.log || echo 0) + ITEM_COUNT=$(grep -oP '\[\d+\]' /tmp/antigravity-test-proxy.log | grep -oP '\d+' | sort -rn | head -1 || echo 0) + + log_info "Proxy errors: $ERROR_COUNT, timeouts: $TIMEOUT_COUNT, compactions: $COMPACT_COUNT, max context items: $ITEM_COUNT" + + [ "$ERROR_COUNT" -gt 20 ] && log_fail "High error count: $ERROR_COUNT" + [ "$TIMEOUT_COUNT" -gt 5 ] && log_fail "Timeout count: $TIMEOUT_COUNT" + [ "$ITEM_COUNT" -gt 100 ] && log_fail "Context items grew to: $ITEM_COUNT (compaction may be failing)" + [ "$ITEM_COUNT" -le 100 ] && [ "$ITEM_COUNT" -gt 0 ] && log_pass "Context items stayed under 100 (max: $ITEM_COUNT)" + + # Check for repeated identical tool calls (loop detection) + DUPE_CALLS=$(grep "exec_command" /tmp/antigravity-test-proxy.log | sed 's/.*args=//' | sort | uniq -c | sort -rn | head -1 | awk '{print $1}' || echo 0) + if [ "$DUPE_CALLS" -gt 10 ]; then + log_fail "Loop detected: same tool call repeated $DUPE_CALLS times" + else + log_pass "No tool call loops (max repeat: $DUPE_CALLS)" + fi + fi + + # Check if the file was actually modified + echo ""; echo "─── Test 4d: Task Output Quality ───" + if [ -f "$TASK_WORKSPACE/site/index.html" ]; then + VDB_LINES=$(grep -c "vectordb\|vdb-" "$TASK_WORKSPACE/site/index.html" || echo 0) + log_info "vectordb section has $VDB_LINES vdb-related lines" + + # Check for common issues in the output + MALFORMED=$(grep -c "<\|>\|&" "$TASK_WORKSPACE/site/index.html" || echo 0) + [ "$MALFORMED" -gt 100 ] && log_fail "Possible HTML encoding issue: $MALFORMED escaped entities" + + # Check section is still intact + if grep -q 'id="vectordb"' "$TASK_WORKSPACE/site/index.html"; then + log_pass "vectordb section preserved" + else + log_fail "vectordb section missing or corrupted" + fi + fi + + # Restore original config + [ -f "$CONFIG_BACKUP" ] && mv "$CONFIG_BACKUP" "$CONFIG_FILE" + rm -f "$PROFILE_FILE" + + log_info "Config restored" + fi +fi + # ── Summary ─────────────────────────────────────────────────────── echo "" echo "═══════════════════════════════════════════════════════════════" diff --git a/translate-proxy.py b/translate-proxy.py index e84b907..e511ca8 100755 --- a/translate-proxy.py +++ b/translate-proxy.py @@ -380,6 +380,14 @@ _conn_pool_lock = threading.Lock() _conn_pool = {} _STREAM_IDLE_TIMEOUT = 300 + +def _idle_timeout_for_model(model, default=300): + if not model: + return default + m = model.lower() + if "flash" in m or "mini" in m or "haiku" in m: + return 120 + return default _MAX_CONCURRENT_REQUESTS = 3 _request_semaphore = threading.Semaphore(_MAX_CONCURRENT_REQUESTS) @@ -779,6 +787,20 @@ def _refresh_google_token(token_data, token_path): print(f"[oauth] refresh failed: {e}", file=sys.stderr) return token_data.get("access_token", "") +def _force_refresh_google_token(): + token_path = os.path.join(os.path.expanduser("~"), ".cache", "codex-proxy", + "google-antigravity-oauth-token.json" if OAUTH_PROVIDER == "google-antigravity" + else "google-oauth-token.json") + try: + with open(token_path) as f: + token_data = json.load(f) + token_data["expires_at"] = 0 + new_token = _refresh_google_token(token_data, token_path) + return bool(new_token) + except Exception as e: + print(f"[oauth] force refresh failed: {e}", file=sys.stderr) + return False + # ═══════════════════════════════════════════════════════════════════ # Gemini 3 thought signature preservation # ═══════════════════════════════════════════════════════════════════ @@ -846,7 +868,12 @@ _GEMINI_AGENT_GUARDRAIL = ( _LOG_FILE_LOCK = threading.Lock() _ANTIGRAVITY_LOOP_TRACKER = {} _ANTIGRAVITY_LOOP_TRACKER_LOCK = threading.Lock() -def _antigravity_loop_key(session_id): +_ANTIGRAVITY_FILE_TRACKER = {} +_ANTIGRAVITY_MAX_TOOL_CALLS_PER_TASK = 150 +_ANTIGRAVITY_WARN_TOOL_CALLS_PER_TASK = 80 +def _antigravity_loop_key(session_id, user_request_hash=None): + if user_request_hash: + return f"ag:task:{user_request_hash}" return f"ag:{session_id}" def _validate_antigravity_version(version, access_token=None, project_id=None): @@ -4925,7 +4952,7 @@ def _auto_continue_gemini(handler, flush_event, message_id, model, gen_config, g cont_text = "" cont_finish = "" cont_buf = "" - for raw_line in _stream_with_idle_timeout(upstream): + for raw_line in _stream_with_idle_timeout(upstream, _idle_timeout_for_model(model)): line = raw_line.decode(errors="replace") if line.startswith("data: "): cont_buf += line[6:] @@ -5122,7 +5149,20 @@ def _antigravity_normalize_context(input_data, model=""): compaction_summaries.append(msg_item) if n_summarized > 0: - summary_text = f"[Tool history summary: {n_summarized} older tool outputs omitted. {n_tool_calls} prior function calls were made for file inspection/editing.]" + n_read_calls = sum(1 for it in input_data if isinstance(it, dict) and it.get("type") == "function_call" + and it.get("name", "") not in ("write", "apply_diff", "edit_file") + and "write" not in json.dumps(it.get("arguments", {})).lower()) + n_write_calls = n_tool_calls - n_read_calls + if n_read_calls > 10 and n_write_calls == 0: + summary_text = ( + f"[CONTEXT HISTORY: {n_summarized} prior tool calls compacted. " + f"YOU ALREADY READ THE TARGET FILE EXTENSIVELY. " + f"DO NOT READ ANY MORE FILES. " + f"YOU MUST NOW USE THE WRITE TOOL TO APPLY YOUR EDITS DIRECTLY. " + f"DO NOT call exec_command or read_files AGAIN.]" + ) + else: + summary_text = f"[Tool history summary: {n_summarized} older tool outputs omitted. {n_tool_calls} prior function calls were made.]" result.append({"type": "message", "role": "user", "content": [{"type": "input_text", "text": summary_text}]}) # CRITICAL: Add tool CALLS and their corresponding OUTPUTS in PAIRED ORDER @@ -5744,10 +5784,12 @@ class Handler(http.server.BaseHTTPRequestHandler): "latest_user_hash": None, "nudge_injected": False, "latest_user_appended": False, "tool_calls_for_request": 0, "repeated_tool": False, "force_finalize": False, "last_tool": None, "last_tool_count": 0, + "task_retry_count": 0, "total_tool_calls": 0, "first_seen": time.time(), } ag_state = _ANTIGRAVITY_LOOP_TRACKER[ag_key] latest_user = "" + latest_user_hash = None if isinstance(input_data, list): for item in reversed(input_data): if item.get("type") == "message" and item.get("role") == "user": @@ -5760,17 +5802,91 @@ class Handler(http.server.BaseHTTPRequestHandler): if latest_user: latest_norm = " ".join(latest_user.strip().split())[:200] latest_user_hash = hashlib.sha256(latest_norm.encode()).hexdigest()[:16] - if latest_user_hash != ag_state.get("latest_user_hash"): - ag_state["latest_user_hash"] = latest_user_hash - ag_state["nudge_injected"] = False - ag_state["latest_user_appended"] = False - ag_state["tool_calls_for_request"] = 0 - ag_state["repeated_tool"] = False - ag_state["force_finalize"] = False - ag_state["last_tool"] = None - ag_state["last_tool_count"] = 0 + + # Cross-session key: stable across retries for same task + if latest_user_hash: + task_key = _antigravity_loop_key(self._session_id, latest_user_hash) + else: + task_key = ag_key + if task_key != ag_key: + with _ANTIGRAVITY_LOOP_TRACKER_LOCK: + if task_key not in _ANTIGRAVITY_LOOP_TRACKER: + _ANTIGRAVITY_LOOP_TRACKER[task_key] = dict(_ANTIGRAVITY_LOOP_TRACKER.get(ag_key, { + "latest_user_hash": None, "nudge_injected": False, "latest_user_appended": False, + "tool_calls_for_request": 0, "repeated_tool": False, "force_finalize": False, + "last_tool": None, "last_tool_count": 0, + "task_retry_count": 0, "total_tool_calls": 0, "first_seen": time.time(), + })) + ag_state = _ANTIGRAVITY_LOOP_TRACKER[task_key] + ag_key = task_key + + with _ANTIGRAVITY_LOOP_TRACKER_LOCK: + if latest_user_hash and latest_user_hash != ag_state.get("latest_user_hash"): + ag_state["latest_user_hash"] = latest_user_hash + ag_state["nudge_injected"] = False + ag_state["latest_user_appended"] = False + ag_state["tool_calls_for_request"] = 0 + ag_state["repeated_tool"] = False + ag_state["last_tool"] = None + ag_state["last_tool_count"] = 0 + ag_state["task_retry_count"] = 1 + ag_state["total_tool_calls"] = 0 + ag_state["first_seen"] = time.time() + ag_state["force_finalize"] = False + else: + ag_state["task_retry_count"] = ag_state.get("task_retry_count", 0) + 1 + + # Cross-session retry cap — only fires when same task retried many times + if ag_state.get("task_retry_count", 0) >= 15: + ag_state["task_retry_count"] = 0 + ag_state["force_finalize"] = False + return self._send_ag_finalize( + "Task retry limit reached. Breaking out of loop. " + "Try a more specific or smaller request if needed.", + stream=body.get("stream", False)) + if ag_state.get("task_retry_count", 0) >= 8: + ag_state["force_finalize"] = True + + if isinstance(input_data, list): n_tool_calls = sum(1 for it in input_data if isinstance(it, dict) and it.get("type") == "function_call") ag_state["tool_calls_for_request"] = n_tool_calls + cumulative_calls = ag_state.get("total_tool_calls", 0) + n_tool_calls + ag_state["total_tool_calls"] = cumulative_calls + + if cumulative_calls > _ANTIGRAVITY_MAX_TOOL_CALLS_PER_TASK: + print(f"[{getattr(self, '_session_id', '?')}] [antigravity-budget] HARD CAP: {cumulative_calls} calls, injecting force-write directive", file=sys.stderr) + contents.append({"role": "user", "parts": [{"text": + f"CRITICAL BUDGET LIMIT: {cumulative_calls} tool calls made. " + f"YOU MUST STOP NOW. Do NOT call any more tools. " + f"Write your FINAL answer immediately using the information you already have. " + f"If you have file edits, apply them in this response using exec_command with a write command. " + f"DO NOT READ ANY MORE FILES."}]}) + elif cumulative_calls > _ANTIGRAVITY_WARN_TOOL_CALLS_PER_TASK: + contents.append({"role": "user", "parts": [{"text": + f"WARNING: {cumulative_calls} tool calls made. " + f"{_ANTIGRAVITY_MAX_TOOL_CALLS_PER_TASK - cumulative_calls} remaining before forced stop. " + f"STOP READING FILES AND APPLY YOUR EDITS NOW."}]}) + + # CHANGE 2: File-path read-loop detection + if ag_key not in _ANTIGRAVITY_FILE_TRACKER: + _ANTIGRAVITY_FILE_TRACKER[ag_key] = {"last_path": None, "path_counts": {}, "total_reads": 0} + ft = _ANTIGRAVITY_FILE_TRACKER[ag_key] + for item in reversed(input_data): + if isinstance(item, dict) and item.get("type") == "function_call": + args_str = json.dumps(item.get("arguments", {})) + file_match = re.search(r'(/[\w/.-]+\.(?:html|py|js|ts|css|json|md|yaml|yml|xml|txt|sh))', args_str) + if file_match: + detected_path = file_match.group(1) + ft["total_reads"] += 1 + ft["path_counts"][detected_path] = ft["path_counts"].get(detected_path, 0) + 1 + ft["last_path"] = detected_path + if ft["path_counts"][detected_path] >= 5 or ft["total_reads"] > 30: + ag_state["force_finalize"] = True + print(f"[antigravity-loop] FILE READ LOOP: {detected_path} read " + f"{ft['path_counts'][detected_path]}x, total={ft['total_reads']}", + file=sys.stderr) + break + last_tool_key = None for item in reversed(input_data): if isinstance(item, dict) and item.get("type") == "function_call": @@ -5893,6 +6009,23 @@ class Handler(http.server.BaseHTTPRequestHandler): return self.send_json(e.code, {"error": {"type": "upstream_error", "message": _sanitize_err_body(err_body)}}) if err_class in ("auth_permanent", "forbidden", "account_banned", "validation_required"): return self.send_json(e.code, {"error": {"type": "upstream_error", "message": _sanitize_err_body(err_body)}}) + if err_class == "auth_transient": + print(f"[{self._session_id}] [antigravity-v2] 401 transient, force-refreshing token", file=sys.stderr) + try: + _force_refresh_google_token() + access_token = _refresh_oauth_token() + headers["Authorization"] = f"Bearer {access_token}" + new_body_b = json.dumps(wrapped).encode() + retry_req = urllib.request.Request(target, data=new_body_b, headers=headers) + upstream = urllib.request.urlopen(retry_req, timeout=_upstream_timeout(body, stream)) + chosen_ep = ep + with _antigravity_endpoint_lock: + _antigravity_preferred_endpoint = ep + print(f"[{self._session_id}] [antigravity-v2] 401 retry succeeded", file=sys.stderr) + break + except Exception as retry_e: + print(f"[{self._session_id}] [antigravity-v2] 401 retry failed: {retry_e}", file=sys.stderr) + return self.send_json(e.code, {"error": {"type": "upstream_error", "message": _sanitize_err_body(err_body)}}) if err_class == "service_disabled": _is_prod = "cloudcode-pa.googleapis.com" in ep and "sandbox" not in ep if _is_prod: @@ -6449,66 +6582,135 @@ class Handler(http.server.BaseHTTPRequestHandler): if not is_latest_simple: contents.insert(0, {"role": "user", "parts": [{"text": _GEMINI_AGENT_GUARDRAIL}]}) - if OAUTH_PROVIDER == "google-antigravity": - import hashlib - ag_key = _antigravity_loop_key(self._session_id) - with _ANTIGRAVITY_LOOP_TRACKER_LOCK: - if ag_key not in _ANTIGRAVITY_LOOP_TRACKER: - _ANTIGRAVITY_LOOP_TRACKER[ag_key] = { - "latest_user_hash": None, - "nudge_injected": False, - "latest_user_appended": False, - "tool_calls_for_request": 0, - "repeated_tool": False, - "force_finalize": False, - "last_tool": None, - "last_tool_count": 0, - } - ag_state = _ANTIGRAVITY_LOOP_TRACKER[ag_key] + if OAUTH_PROVIDER == "google-antigravity": + import hashlib + ag_key = _antigravity_loop_key(self._session_id) + with _ANTIGRAVITY_LOOP_TRACKER_LOCK: + if ag_key not in _ANTIGRAVITY_LOOP_TRACKER: + _ANTIGRAVITY_LOOP_TRACKER[ag_key] = { + "latest_user_hash": None, + "nudge_injected": False, + "latest_user_appended": False, + "tool_calls_for_request": 0, + "repeated_tool": False, + "force_finalize": False, + "last_tool": None, + "last_tool_count": 0, + "task_retry_count": 0, + "total_tool_calls": 0, + "first_seen": time.time(), + } + ag_state = _ANTIGRAVITY_LOOP_TRACKER[ag_key] - latest_user = "" - latest_user_hash = None - if isinstance(input_data, list): - for item in reversed(input_data): - if item.get("type") == "message" and item.get("role") == "user": - c = item.get("content", "") - if isinstance(c, str): - latest_user = c - elif isinstance(c, list): - latest_user = "\n".join(p.get("text", p.get("input_text", "")) for p in c if isinstance(p, dict)) - break - if latest_user: - latest_norm = " ".join(latest_user.strip().split())[:200] - latest_user_hash = hashlib.sha256(latest_norm.encode()).hexdigest()[:16] - if latest_user_hash != ag_state["latest_user_hash"]: + latest_user = "" + latest_user_hash = None + if isinstance(input_data, list): + for item in reversed(input_data): + if item.get("type") == "message" and item.get("role") == "user": + c = item.get("content", "") + if isinstance(c, str): + latest_user = c + elif isinstance(c, list): + latest_user = "\n".join(p.get("text", p.get("input_text", "")) for p in c if isinstance(p, dict)) + break + if latest_user: + latest_norm = " ".join(latest_user.strip().split())[:200] + latest_user_hash = hashlib.sha256(latest_norm.encode()).hexdigest()[:16] + + if latest_user_hash: + task_key = _antigravity_loop_key(self._session_id, latest_user_hash) + else: + task_key = ag_key + if task_key != ag_key: + with _ANTIGRAVITY_LOOP_TRACKER_LOCK: + if task_key not in _ANTIGRAVITY_LOOP_TRACKER: + _ANTIGRAVITY_LOOP_TRACKER[task_key] = dict(_ANTIGRAVITY_LOOP_TRACKER.get(ag_key, { + "latest_user_hash": None, "nudge_injected": False, + "latest_user_appended": False, "tool_calls_for_request": 0, + "repeated_tool": False, "force_finalize": False, + "last_tool": None, "last_tool_count": 0, + "task_retry_count": 0, "total_tool_calls": 0, "first_seen": time.time(), + })) + ag_state = _ANTIGRAVITY_LOOP_TRACKER[task_key] + ag_key = task_key + + with _ANTIGRAVITY_LOOP_TRACKER_LOCK: + if latest_user_hash and latest_user_hash != ag_state.get("latest_user_hash"): ag_state["latest_user_hash"] = latest_user_hash ag_state["nudge_injected"] = False ag_state["latest_user_appended"] = False ag_state["tool_calls_for_request"] = 0 ag_state["repeated_tool"] = False - ag_state["force_finalize"] = False ag_state["last_tool"] = None ag_state["last_tool_count"] = 0 - - if isinstance(input_data, list): - n_tool_calls = sum(1 for it in input_data if isinstance(it, dict) and it.get("type") == "function_call") - ag_state["tool_calls_for_request"] = n_tool_calls - last_tool_key = None - for item in reversed(input_data): - if isinstance(item, dict) and item.get("type") == "function_call": - fname = item.get("name", "") - args_str = json.dumps(item.get("arguments", {}), sort_keys=True)[:100] - last_tool_key = f"{fname}:{args_str}" - break - if last_tool_key: - if last_tool_key == ag_state["last_tool"]: - ag_state["last_tool_count"] += 1 - if ag_state["last_tool_count"] >= 5: - ag_state["repeated_tool"] = True - ag_state["force_finalize"] = True + ag_state["task_retry_count"] = 1 + ag_state["total_tool_calls"] = 0 + ag_state["first_seen"] = time.time() + ag_state["force_finalize"] = False else: - ag_state["last_tool"] = last_tool_key - ag_state["last_tool_count"] = 1 + ag_state["task_retry_count"] = ag_state.get("task_retry_count", 0) + 1 + + if ag_state.get("task_retry_count", 0) >= 15: + ag_state["task_retry_count"] = 0 + ag_state["force_finalize"] = False + self._send_ag_finalize("Task retry limit reached. Breaking loop.", + stream=body.get("stream", False) if isinstance(body, dict) else False) + return + if ag_state.get("task_retry_count", 0) >= 8: + ag_state["force_finalize"] = True + + if isinstance(input_data, list): + n_tool_calls = sum(1 for it in input_data if isinstance(it, dict) and it.get("type") == "function_call") + ag_state["tool_calls_for_request"] = n_tool_calls + cumulative_calls = ag_state.get("total_tool_calls", 0) + n_tool_calls + ag_state["total_tool_calls"] = cumulative_calls + + if cumulative_calls > _ANTIGRAVITY_MAX_TOOL_CALLS_PER_TASK: + print(f"[antigravity-budget] HARD CAP: {cumulative_calls} calls, injecting force-write", file=sys.stderr) + contents.append({"role": "user", "parts": [{"text": + f"CRITICAL BUDGET LIMIT: {cumulative_calls} tool calls. " + f"STOP ALL TOOL CALLS. Write your FINAL answer now. " + f"Apply any edits using exec_command with a write command in this response."}]}) + elif cumulative_calls > _ANTIGRAVITY_WARN_TOOL_CALLS_PER_TASK: + contents.append({"role": "user", "parts": [{"text": + f"WARNING: {cumulative_calls} tool calls. " + f"{_ANTIGRAVITY_MAX_TOOL_CALLS_PER_TASK - cumulative_calls} remaining. " + f"STOP READING AND WRITE NOW."}]}) + + if ag_key not in _ANTIGRAVITY_FILE_TRACKER: + _ANTIGRAVITY_FILE_TRACKER[ag_key] = {"last_path": None, "path_counts": {}, "total_reads": 0} + ft = _ANTIGRAVITY_FILE_TRACKER[ag_key] + for item in reversed(input_data): + if isinstance(item, dict) and item.get("type") == "function_call": + args_str = json.dumps(item.get("arguments", {})) + file_match = re.search(r'(/[\w/.-]+\.(?:html|py|js|ts|css|json|md|yaml|yml|xml|txt|sh))', args_str) + if file_match: + dp = file_match.group(1) + ft["total_reads"] += 1 + ft["path_counts"][dp] = ft["path_counts"].get(dp, 0) + 1 + ft["last_path"] = dp + if ft["path_counts"][dp] >= 5 or ft["total_reads"] > 30: + ag_state["force_finalize"] = True + print(f"[antigravity-loop] FILE READ LOOP: {dp} read " + f"{ft['path_counts'][dp]}x, total={ft['total_reads']}", file=sys.stderr) + break + + last_tool_key = None + for item in reversed(input_data): + if isinstance(item, dict) and item.get("type") == "function_call": + fname = item.get("name", "") + args_str = json.dumps(item.get("arguments", {}), sort_keys=True)[:100] + last_tool_key = f"{fname}:{args_str}" + break + if last_tool_key: + if last_tool_key == ag_state["last_tool"]: + ag_state["last_tool_count"] += 1 + if ag_state["last_tool_count"] >= 5: + ag_state["repeated_tool"] = True + ag_state["force_finalize"] = True + else: + ag_state["last_tool"] = last_tool_key + ag_state["last_tool_count"] = 1 _EDIT_WORDS = ("change", "fix", "update", "redesign", "rewrite", "modify", "improve", "replace", "edit", "make it", "add", "remove", "delete", "rename", "move", "convert") latest_lower = "" @@ -6671,6 +6873,23 @@ class Handler(http.server.BaseHTTPRequestHandler): return self.send_json(e.code, {"error": {"type": "upstream_error", "message": _sanitize_err_body(err_body)}}) if err_class == "auth_permanent": return self.send_json(e.code, {"error": {"type": "upstream_error", "message": _sanitize_err_body(err_body)}}) + if err_class == "auth_transient": + print(f"[{self._session_id}] {ep.replace('https://','')} 401 transient, force-refreshing token and retrying", file=sys.stderr) + try: + _force_refresh_google_token() + access_token = _refresh_oauth_token() + headers["Authorization"] = f"Bearer {access_token}" + new_body_b = json.dumps(wrapped).encode() + retry_req = urllib.request.Request(target, data=new_body_b, headers=headers) + upstream = urllib.request.urlopen(retry_req, timeout=_upstream_timeout(body, stream)) + chosen_ep = ep + with _antigravity_endpoint_lock: + _antigravity_preferred_endpoint = ep + print(f"[{self._session_id}] 401 retry succeeded after token refresh", file=sys.stderr) + break + except Exception as retry_e: + print(f"[{self._session_id}] 401 retry also failed: {retry_e}", file=sys.stderr) + return self.send_json(e.code, {"error": {"type": "upstream_error", "message": _sanitize_err_body(err_body)}}) if err_class in ("quota_exhausted", "rate_limited"): reset_s = _parse_rate_limit_reset(err_body) if ep == ordered[-1]: @@ -6730,7 +6949,7 @@ class Handler(http.server.BaseHTTPRequestHandler): buf = "" stream_finished = False - for raw_line in _stream_with_idle_timeout(upstream): + for raw_line in _stream_with_idle_timeout(upstream, _idle_timeout_for_model(model)): if tracker and tracker.cancelled.is_set(): print("[gemini-oauth] stream cancelled", file=sys.stderr) break @@ -8144,6 +8363,38 @@ class Handler(http.server.BaseHTTPRequestHandler): except (BrokenPipeError, ConnectionResetError, ConnectionAbortedError): pass + def _send_ag_finalize(self, text, stream=False, is_responses_api=True): + sid = getattr(self, '_session_id', 'fin') + print(f"[{sid}] [antigravity-finalize] Sending finalize response: {text[:80]}...", file=sys.stderr) + resp_id = f"resp_{uuid.uuid4().hex[:12]}" + msg_id = f"msg_{uuid.uuid4().hex[:12]}" + if is_responses_api: + output_obj = [{"type": "message", "id": msg_id, "role": "assistant", + "content": [{"type": "output_text", "text": text}]}] + if stream: + events = [ + f"event: response.created\ndata: {json.dumps({'type':'response.created','response':{'id':resp_id,'object':'response','status':'in_progress'}})}\n\n", + f"event: response.output_item.added\ndata: {json.dumps({'type':'response.output_item.added','output_index':0,'item':{'type':'message','id':msg_id,'role':'assistant','content':[]}})}\n\n", + f"event: response.content_part.added\ndata: {json.dumps({'type':'response.content_part.added','output_index':0,'content_index':0,'part':{'type':'output_text','text':''}})}\n\n", + f"event: response.output_text.delta\ndata: {json.dumps({'type':'response.output_text.delta','output_index':0,'content_index':0,'delta':text})}\n\n", + f"event: response.output_text.done\ndata: {json.dumps({'type':'response.output_text.done','output_index':0,'content_index':0,'text':text})}\n\n", + f"event: response.content_part.done\ndata: {json.dumps({'type':'response.content_part.done','output_index':0,'content_index':0,'part':{'type':'output_text','text':text}})}\n\n", + f"event: response.output_item.done\ndata: {json.dumps({'type':'response.output_item.done','output_index':0,'item':{'type':'message','id':msg_id,'role':'assistant','content':[{'type':'output_text','text':text}]}})}\n\n", + f"event: response.completed\ndata: {json.dumps({'type':'response.completed','response':{'id':resp_id,'object':'response','status':'completed','output':output_obj}})}\n\n", + ] + self.send_response(200) + self.send_header("Content-Type", "text/event-stream") + self.send_header("Cache-Control", "no-cache") + self.send_header("Connection", "keep-alive") + self.end_headers() + for evt in events: + self.wfile.write(evt.encode()) + self.wfile.flush() + else: + self.send_json(200, {"id": resp_id, "object": "response", "status": "completed", + "output": output_obj, "model": "gemini-3-flash"}) + return None + def stream_buffered_events(self, event_iter, flush_interval=0.03, max_bytes=4096, on_event=None): buf = bytearray() last_flush = time.monotonic()