#!/usr/bin/env python3
"""Deep audit of all Telnyx AI assistants, phone numbers, and models."""
import json
import urllib.request
import urllib.error
import sys

API_KEY = "KEY019BE7A3A2D749FCA8681CFF8448A7F0_vTMM1n77CtQxLDT2ra3P1z"

MAIN_ASSISTANT_ID = "assistant-9c42d3ce-e05a-4e34-8083-c91081917637"
GEORGE_ASSISTANT_ID = "assistant-6f6f4ca2-3155-4930-95cb-27f59514af3e"
GEORGE_NUMBER_ORDER = "c6c5e6a4-286d-4df7-ae1f-a17e2e44a7a3"

def telnyx_get(path):
    req = urllib.request.Request(
        f"https://api.telnyx.com/v2/{path}",
        headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
    )
    try:
        with urllib.request.urlopen(req, timeout=15) as r:
            return json.loads(r.read()), r.status
    except urllib.error.HTTPError as e:
        body = e.read() or b"{}"
        return json.loads(body), e.code
    except Exception as ex:
        return {"error": str(ex)}, 0

def section(title):
    print(f"\n{'='*60}")
    print(f"  {title}")
    print('='*60)

# --- 1. ALL ASSISTANTS ---
section("ALL AI ASSISTANTS")
data, status = telnyx_get("ai/assistants?page[size]=50")
print(f"HTTP {status}")
assistants = data.get("data", [])
print(f"Total count: {len(assistants)}")
for a in assistants:
    print(f"\n  ID:    {a.get('id')}")
    print(f"  Name:  {a.get('name')}")
    print(f"  Model: {a.get('model')}")
    instr = a.get('instructions', '')
    print(f"  Instructions ({len(instr)} chars): {instr[:120]}...")
    voice = a.get('voice_settings', {})
    if voice:
        print(f"  Voice: {voice}")
    tel = a.get('telephony_settings', {})
    if tel:
        print(f"  Telephony: {json.dumps(tel)[:200]}")

# --- 2. MAIN ASSISTANT FULL DETAIL ---
section("MAIN ASSISTANT — FULL CONFIG")
data, status = telnyx_get(f"ai/assistants/{MAIN_ASSISTANT_ID}")
print(f"HTTP {status}")
a = data.get("data", data)
print(json.dumps(a, indent=2, default=str))

# --- 3. GEORGE ASSISTANT FULL DETAIL ---
section("GEORGE ASSISTANT — FULL CONFIG")
data, status = telnyx_get(f"ai/assistants/{GEORGE_ASSISTANT_ID}")
print(f"HTTP {status}")
a = data.get("data", data)
print(json.dumps(a, indent=2, default=str))

# --- 4. PHONE NUMBERS ---
section("OWNED PHONE NUMBERS")
data, status = telnyx_get("phone_numbers?page[size]=50")
print(f"HTTP {status}")
numbers = data.get("data", [])
print(f"Total: {len(numbers)}")
for n in numbers:
    print(f"  {n.get('phone_number')} | Status: {n.get('status')} | ID: {n.get('id')}")
    conn = n.get('connection', {}) or {}
    if conn:
        print(f"    Connection: {conn.get('name', '')} ({conn.get('id', '')})")

# --- 5. NUMBER ORDER STATUS ---
section("GEORGE NUMBER ORDER STATUS")
data, status = telnyx_get(f"number_orders/{GEORGE_NUMBER_ORDER}")
print(f"HTTP {status}")
print(json.dumps(data, indent=2, default=str))

# --- 6. AI MODELS ---
section("AVAILABLE AI MODELS")
data, status = telnyx_get("ai/models?page[size]=100")
print(f"HTTP {status}")
models = data.get("data", [])
print(f"Total models: {len(models)}")
for m in models:
    name = m.get("name") or m.get("id", "?")
    ctx = m.get("context_length") or m.get("max_tokens") or ""
    print(f"  {name}  ctx={ctx}")
    pricing = m.get("pricing") or {}
    if pricing:
        print(f"    Pricing: {pricing}")

# --- 7. TTS VOICES ---
section("TTS VOICES")
data, status = telnyx_get("ai/tts/voices?page[size]=100")
print(f"HTTP {status}")
voices = data.get("data", [])
print(f"Total voices: {len(voices)}")
for v in voices:
    vname = v.get("name") or v.get("id", "?")
    lang = v.get("language") or v.get("locale", "")
    gender = v.get("gender", "")
    print(f"  {vname} | {lang} | {gender}")

# --- 8. INTEGRATION SECRETS ---
section("INTEGRATION SECRETS / API KEY REFS")
for path in ["ai/integration_secrets", "integration_secrets"]:
    data, status = telnyx_get(path)
    if status == 200:
        items = data.get("data", [])
        print(f"GET {path}: HTTP {status} — {len(items)} secrets")
        for item in items:
            print(f"  {item.get('identifier')} | type: {item.get('type')}")
        break
    else:
        print(f"GET {path}: HTTP {status}")

# --- 9. MCP SERVERS ---
section("MCP SERVERS")
data, status = telnyx_get("ai/mcp_servers")
print(f"HTTP {status}")
if status == 200:
    mcps = data.get("data", [])
    print(f"Total: {len(mcps)}")
    for m in mcps:
        print(f"  {m.get('name')} | {m.get('url')}")
else:
    print(json.dumps(data, indent=2, default=str)[:300])

print("\n\nDONE.")
sys.stdout.flush()
