Skip to content

Commit bcf0539

Browse files
author
Mateusz
committed
Fix issues with random model replacement functionality
1 parent f2cae87 commit bcf0539

21 files changed

+895
-135
lines changed

dev/scripts/check_paths.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import os
2+
import sys
3+
from pathlib import Path
4+
5+
PROJECT_ROOT = Path("c:/Users/Mateusz/source/repos/llm-interactive-proxy")
6+
sys.path.insert(0, str(PROJECT_ROOT / "src"))
7+
sys.path.insert(0, str(PROJECT_ROOT))
8+
9+
from src.connectors.gemini_base.credential_providers.sqlite_provider import AntigravitySQLiteCredentialProvider
10+
11+
provider = AntigravitySQLiteCredentialProvider()
12+
print("Searching for candidate paths...")
13+
paths = provider._candidate_state_db_paths()
14+
for p in paths:
15+
exists = p.exists()
16+
print(f"Path: {p}, exists: {exists}")
17+
if exists:
18+
print(f"Attempting to read from {p}...")
19+
try:
20+
val = provider._load_auth_status_from_db(p)
21+
if val:
22+
print(f"Successfully read auth status: {list(val.keys())}")
23+
else:
24+
print("No auth status found in DB.")
25+
except Exception as e:
26+
print(f"Error reading from DB: {e}")
27+

dev/scripts/dump_cbor_entry.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import cbor2
2+
import json
3+
import sys
4+
import zlib
5+
from pathlib import Path
6+
7+
def dump_cbor(path, entry_index):
8+
entries = []
9+
with open(path, "rb") as f:
10+
header = cbor2.load(f)
11+
while True:
12+
try:
13+
entry = cbor2.load(f)
14+
if entry.get("enc") == "zlib":
15+
entry["data"] = zlib.decompress(entry["data"])
16+
del entry["enc"]
17+
entries.append(entry)
18+
except (EOFError, cbor2.CBORDecodeEOF):
19+
break
20+
21+
if entry_index >= len(entries):
22+
print(f"Entry {entry_index} not found. Total entries: {len(entries)}")
23+
return
24+
25+
entry = entries[entry_index]
26+
print(f"Entry {entry_index} Direction: {entry.get('dir')}")
27+
28+
try:
29+
content_bytes = entry.get("data")
30+
if isinstance(content_bytes, bytes):
31+
try:
32+
content = content_bytes.decode("utf-8")
33+
try:
34+
# Try parsing as JSON
35+
content = json.loads(content)
36+
print(json.dumps(content, indent=2))
37+
except:
38+
print(content)
39+
except:
40+
print(f"Hex: {content_bytes.hex()[:100]}...")
41+
else:
42+
print(json.dumps(content_bytes, indent=2))
43+
except Exception as e:
44+
print(f"Error dumping content: {e}")
45+
46+
if __name__ == "__main__":
47+
dump_cbor(sys.argv[1], int(sys.argv[2]))

dev/scripts/exhaustive_probe.py

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
import asyncio
2+
import httpx
3+
import json
4+
import sys
5+
from pathlib import Path
6+
7+
PROJECT_ROOT = Path("c:/Users/Mateusz/source/repos/llm-interactive-proxy")
8+
sys.path.insert(0, str(PROJECT_ROOT / "src"))
9+
sys.path.insert(0, str(PROJECT_ROOT))
10+
11+
from src.connectors.gemini_base.credential_providers.sqlite_provider import AntigravitySQLiteCredentialProvider
12+
13+
async def probe_model(client, base_url, headers, project, model, request_type="agent"):
14+
print(f"\nProbing {model} ({request_type}) on {base_url}...")
15+
stream_url = f"{base_url}/v1internal:streamGenerateContent?alt=sse"
16+
request_body = {
17+
"project": project,
18+
"requestId": f"probe_{int(__import__('time').time()*1000)}",
19+
"request": {
20+
"contents": [{"role": "user", "parts": [{"text": "OK"}]}]
21+
},
22+
"model": model,
23+
"userAgent": "antigravity",
24+
"requestType": request_type,
25+
}
26+
try:
27+
resp = await client.post(stream_url, headers=headers, json=request_body, timeout=10)
28+
print(f"Status: {resp.status_code}")
29+
if resp.status_code == 200:
30+
print("SUCCESS!")
31+
return True
32+
else:
33+
print(f"Error: {resp.text}")
34+
return False
35+
except Exception as e:
36+
print(f"Exception: {e}")
37+
return False
38+
39+
async def main():
40+
provider = AntigravitySQLiteCredentialProvider()
41+
creds = await provider.load()
42+
token = creds.get("access_token")
43+
headers = {
44+
"Authorization": f"Bearer {token}",
45+
"Content-Type": "application/json",
46+
"User-Agent": "antigravity/1.11.5 windows/amd64"
47+
}
48+
49+
prod_url = "https://cloudcode-pa.googleapis.com"
50+
sandbox_url = "https://daily-cloudcode-pa.sandbox.googleapis.com"
51+
52+
async with httpx.AsyncClient() as client:
53+
# Get project from PROD
54+
resp = await client.post(f"{prod_url}/v1internal:loadCodeAssist", headers=headers, json={"metadata":{}})
55+
project = resp.json().get("cloudaicompanionProject", "default")
56+
print(f"Project: {project}")
57+
58+
models = [
59+
"gemini-flash-3-preview",
60+
"gemini-3-flash-preview",
61+
"gemini-3-flash",
62+
"gemini-flash-3",
63+
]
64+
65+
for model in models:
66+
for rtype in ["agent", "chat"]:
67+
await probe_model(client, prod_url, headers, project, model, rtype)
68+
await probe_model(client, sandbox_url, headers, project, model, rtype)
69+
70+
if __name__ == "__main__":
71+
asyncio.run(main())

dev/scripts/fetch_models_prod.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import asyncio
2+
import httpx
3+
import json
4+
import sys
5+
from pathlib import Path
6+
7+
PROJECT_ROOT = Path("c:/Users/Mateusz/source/repos/llm-interactive-proxy")
8+
sys.path.insert(0, str(PROJECT_ROOT / "src"))
9+
sys.path.insert(0, str(PROJECT_ROOT))
10+
11+
from src.connectors.gemini_base.credential_providers.sqlite_provider import AntigravitySQLiteCredentialProvider
12+
13+
async def main():
14+
provider = AntigravitySQLiteCredentialProvider()
15+
creds = await provider.load()
16+
token = creds.get("access_token")
17+
headers = {
18+
"Authorization": f"Bearer {token}",
19+
"Content-Type": "application/json",
20+
"User-Agent": "antigravity/1.11.5 windows/amd64"
21+
}
22+
23+
base_url = "https://cloudcode-pa.googleapis.com"
24+
25+
async with httpx.AsyncClient() as client:
26+
print("\nCalling fetchAvailableModels on Production...")
27+
models_url = f"{base_url}/v1internal:fetchAvailableModels"
28+
resp = await client.get(models_url, headers=headers)
29+
print(f"Status: {resp.status_code}")
30+
if resp.status_code == 200:
31+
models_data = resp.json()
32+
models = models_data.get("models", {})
33+
print(f"Found {len(models)} models.")
34+
for name in sorted(models.keys()):
35+
print(f"- {name}")
36+
else:
37+
print(f"Response: {resp.text}")
38+
39+
if __name__ == "__main__":
40+
asyncio.run(main())
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import asyncio
2+
import httpx
3+
import json
4+
import sys
5+
from pathlib import Path
6+
7+
PROJECT_ROOT = Path("c:/Users/Mateusz/source/repos/llm-interactive-proxy")
8+
sys.path.insert(0, str(PROJECT_ROOT / "src"))
9+
sys.path.insert(0, str(PROJECT_ROOT))
10+
11+
from src.connectors.gemini_base.credential_providers.sqlite_provider import AntigravitySQLiteCredentialProvider
12+
13+
async def main():
14+
provider = AntigravitySQLiteCredentialProvider()
15+
creds = await provider.load()
16+
token = creds.get("access_token")
17+
headers = {
18+
"Authorization": f"Bearer {token}",
19+
"Content-Type": "application/json",
20+
"User-Agent": "antigravity/1.11.5 windows/amd64"
21+
}
22+
23+
base_url = "https://daily-cloudcode-pa.sandbox.googleapis.com"
24+
25+
async with httpx.AsyncClient() as client:
26+
print("\nCalling fetchAvailableModels on Sandbox...")
27+
models_url = f"{base_url}/v1internal:fetchAvailableModels"
28+
resp = await client.get(models_url, headers=headers)
29+
print(f"Status: {resp.status_code}")
30+
if resp.status_code == 200:
31+
models_data = resp.json()
32+
models = models_data.get("models", {})
33+
print(f"Found {len(models)} models.")
34+
for name in sorted(models.keys()):
35+
print(f"- {name}")
36+
else:
37+
print(f"Response: {resp.text}")
38+
39+
if __name__ == "__main__":
40+
asyncio.run(main())

dev/scripts/more_probes.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import asyncio
2+
import httpx
3+
import json
4+
import sys
5+
from pathlib import Path
6+
7+
PROJECT_ROOT = Path("c:/Users/Mateusz/source/repos/llm-interactive-proxy")
8+
sys.path.insert(0, str(PROJECT_ROOT / "src"))
9+
sys.path.insert(0, str(PROJECT_ROOT))
10+
11+
from src.connectors.gemini_base.credential_providers.sqlite_provider import AntigravitySQLiteCredentialProvider
12+
13+
async def main():
14+
provider = AntigravitySQLiteCredentialProvider()
15+
creds = await provider.load()
16+
token = creds.get("access_token")
17+
headers = {
18+
"Authorization": f"Bearer {token}",
19+
"Content-Type": "application/json",
20+
"User-Agent": "antigravity/1.11.5 windows/amd64"
21+
}
22+
23+
base_url = "https://daily-cloudcode-pa.sandbox.googleapis.com"
24+
25+
async with httpx.AsyncClient() as client:
26+
project = "wide-smoke-45xn8"
27+
models = [
28+
"gemini-3-pro",
29+
"gemini-3-pro-high",
30+
"gemini-3-pro-low",
31+
"gemini-3-flash",
32+
"gemini-4-pro",
33+
"gemini-4-flash",
34+
]
35+
36+
for model in models:
37+
print(f"\nProbing {model} on {base_url}...")
38+
stream_url = f"{base_url}/v1internal:streamGenerateContent?alt=sse"
39+
request_body = {
40+
"project": project,
41+
"requestId": f"probe_{int(__import__('time').time()*1000)}",
42+
"request": {
43+
"contents": [{"role": "user", "parts": [{"text": "OK"}]}]
44+
},
45+
"model": model,
46+
"userAgent": "antigravity",
47+
"requestType": "chat",
48+
}
49+
resp = await client.post(stream_url, headers=headers, json=request_body, timeout=10)
50+
print(f"Status: {resp.status_code}")
51+
if resp.status_code == 200:
52+
print("SUCCESS!")
53+
else:
54+
print(f"Response: {resp.text}")
55+
56+
if __name__ == "__main__":
57+
asyncio.run(main())

dev/scripts/probe_antigravity_oauth.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from pathlib import Path
2222
from typing import Any
2323

24-
PROJECT_ROOT = Path(__file__).resolve().parents[1]
24+
PROJECT_ROOT = Path(__file__).resolve().parents[2]
2525
if str(PROJECT_ROOT) not in sys.path:
2626
sys.path.insert(0, str(PROJECT_ROOT))
2727

@@ -36,7 +36,7 @@
3636
from src.core.interfaces.translation_service_interface import ITranslationService
3737
from src.core.services.translation_service import TranslationService
3838

39-
logging.basicConfig(level=logging.INFO, format="%(levelname)s %(message)s")
39+
logging.basicConfig(level=logging.DEBUG, format="%(levelname)s %(message)s")
4040
logger = logging.getLogger("probe_antigravity_oauth")
4141

4242

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import asyncio
2+
import httpx
3+
import json
4+
import sys
5+
from pathlib import Path
6+
7+
PROJECT_ROOT = Path("c:/Users/Mateusz/source/repos/llm-interactive-proxy")
8+
sys.path.insert(0, str(PROJECT_ROOT / "src"))
9+
sys.path.insert(0, str(PROJECT_ROOT))
10+
11+
from src.connectors.gemini_base.credential_providers.sqlite_provider import AntigravitySQLiteCredentialProvider
12+
13+
async def main():
14+
provider = AntigravitySQLiteCredentialProvider()
15+
creds = await provider.load()
16+
token = creds.get("access_token")
17+
headers = {
18+
"Authorization": f"Bearer {token}",
19+
"Content-Type": "application/json",
20+
"User-Agent": "antigravity/1.11.5 windows/amd64"
21+
}
22+
23+
base_url = "https://cloudcode-pa.googleapis.com"
24+
25+
async with httpx.AsyncClient() as client:
26+
# 1. Try with 'default' project
27+
project = "default"
28+
model = "gemini-flash-3-preview"
29+
print(f"\nProbing {model} on {base_url} with project: {project}")
30+
stream_url = f"{base_url}/v1internal:streamGenerateContent?alt=sse"
31+
request_body = {
32+
"project": project,
33+
"requestId": f"req_def_{int(__import__('time').time()*1000)}",
34+
"request": {
35+
"contents": [{"role": "user", "parts": [{"text": "OK"}]}]
36+
},
37+
"model": model,
38+
"userAgent": "antigravity",
39+
"requestType": "chat",
40+
}
41+
resp = await client.post(stream_url, headers=headers, json=request_body, timeout=10)
42+
print(f"Status: {resp.status_code}")
43+
print(f"Response: {resp.text}")
44+
45+
if __name__ == "__main__":
46+
asyncio.run(main())

0 commit comments

Comments
 (0)