docs: AG Native bundle reverse engineering analysis — plannerResponse/Whi renderer structure, V8 cache fix, known-issues update
This commit is contained in:
71
scratch_rpc_test.py
Normal file
71
scratch_rpc_test.py
Normal file
@@ -0,0 +1,71 @@
|
||||
"""Test AG SDK RPC to understand what data is available for current session."""
|
||||
import requests, json, sys, io
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
|
||||
|
||||
BASE = "http://127.0.0.1:34332"
|
||||
SESSION = "bdfc07d3-d87e-453a-b785-e38c2e9254e3"
|
||||
|
||||
def rpc(method, args=None):
|
||||
r = requests.post(f"{BASE}/test-rpc", json={"method": method, "args": args or {}})
|
||||
if r.status_code != 200:
|
||||
print(f"❌ {method}: {r.status_code} - {r.text[:200]}")
|
||||
return None
|
||||
try:
|
||||
return r.json()
|
||||
except:
|
||||
print(f"❌ {method}: non-JSON response: {r.text[:200]}")
|
||||
return None
|
||||
|
||||
# 1. Try GetCascadeTrajectorySteps for current session
|
||||
print("=== GetCascadeTrajectorySteps ===")
|
||||
result = rpc("GetCascadeTrajectorySteps", {"cascadeId": SESSION, "verbosity": 1})
|
||||
if result and "steps" in result:
|
||||
steps = result["steps"]
|
||||
print(f" Got {len(steps)} steps")
|
||||
for i, s in enumerate(steps[-5:]):
|
||||
print(f" Step {i}: type={s.get('type','?')} status={s.get('status','?')}")
|
||||
if s.get('plannerResponse'):
|
||||
pr = s['plannerResponse']
|
||||
if isinstance(pr, str):
|
||||
print(f" plannerResponse (str): {pr[:100]}...")
|
||||
elif isinstance(pr, dict):
|
||||
print(f" plannerResponse keys: {list(pr.keys())}")
|
||||
for k, v in pr.items():
|
||||
if isinstance(v, str) and len(v) > 20 and k not in ('thinking', 'thinkingSignature'):
|
||||
print(f" {k}: {v[:100]}...")
|
||||
else:
|
||||
print(" No steps returned")
|
||||
|
||||
# 2. Try GetDiagnostics
|
||||
print("\n=== GetDiagnostics ===")
|
||||
diag = rpc("GetDiagnostics", {})
|
||||
if diag:
|
||||
if isinstance(diag, str):
|
||||
diag = json.loads(diag)
|
||||
recent = diag.get("recentTrajectories", [])
|
||||
print(f" recentTrajectories: {len(recent)}")
|
||||
for rt in recent:
|
||||
sid = rt.get("googleAgentId", "?")
|
||||
if sid.startswith("bdfc"):
|
||||
print(f" ★ Current session: {json.dumps(rt, indent=2)[:500]}")
|
||||
|
||||
# 3. Try GetAllCascadeTrajectories looking for our session
|
||||
print("\n=== GetAllCascadeTrajectories ===")
|
||||
traj = rpc("GetAllCascadeTrajectories", {"limit": 100, "descending": True})
|
||||
if traj and "trajectorySummaries" in traj:
|
||||
summaries = traj["trajectorySummaries"]
|
||||
print(f" Total trajectories: {len(summaries)}")
|
||||
for sid, data in summaries.items():
|
||||
if sid.startswith("bdfc"):
|
||||
print(f" ★ Current session keys: {list(data.keys())}")
|
||||
print(f" status: {data.get('status')}")
|
||||
print(f" stepCount: {data.get('stepCount')}")
|
||||
print(f" latestNotifyUserStep: {json.dumps(data.get('latestNotifyUserStep'), indent=2)[:300] if data.get('latestNotifyUserStep') else 'None'}")
|
||||
print(f" latestTaskBoundaryStep: {json.dumps(data.get('latestTaskBoundaryStep'), indent=2)[:300] if data.get('latestTaskBoundaryStep') else 'None'}")
|
||||
|
||||
# 4. Try other RPC methods that might exist
|
||||
print("\n=== Trying alternative RPCs ===")
|
||||
for method in ["GetCascadeStatus", "GetAgentStatus", "ListCascades", "GetCascadeInfo"]:
|
||||
result = rpc(method, {"cascadeId": SESSION})
|
||||
if result:
|
||||
print(f" {method}: {json.dumps(result)[:200]}")
|
||||
Reference in New Issue
Block a user