#!/usr/bin/env python3
"""
Direct orchestrator test script - bypasses HTTP/auth layer
"""
import asyncio
import sys
sys.path.insert(0, '/mnt/data-disk1/archie-main-integration/apps/api/src')
sys.path.insert(0, '/mnt/data-disk1/archie-main-integration')

from api.services.orchestrator import OrchestratorService
from auth.models.user_context import UserContext, UserRole

async def test_orchestrator():
    """Test orchestrator directly"""

    # Create test user context
    user_context = UserContext(
        user_id="test-user-123",
        firm_id="test-firm-456",
        email="test@example.com",
        role=UserRole.CLIENT,
        permissions=["*"]
    )

    # Initialize orchestrator
    print("Initializing orchestrator...")
    orchestrator = OrchestratorService()

    # Test query
    query = "What is the weather today?"
    print(f"\nSending query: {query}")
    print("=" * 60)

    try:
        # Stream results
        async for event in orchestrator.stream_query(
            query=query,
            user_context=user_context,
            conversation_id=None,
            context={}
        ):
            print(f"\nEvent Type: {event.get('type', 'unknown')}")
            if event.get('type') == 'error':
                print(f"  Error: {event.get('error')}")
            elif event.get('type') == 'status':
                print(f"  Status: {event.get('status')}")
            elif event.get('type') == 'thinking':
                print(f"  Agent: {event.get('agent')}")
                print(f"  Thought: {event.get('thought')}")
            elif event.get('type') == 'token':
                print(f"  Token: {event.get('content', '')}", end='', flush=True)
            elif event.get('type') == 'result':
                print(f"\n  Final Answer: {event.get('answer')}")
                print(f"  Confidence: {event.get('confidence')}")
            else:
                print(f"  Data: {event}")
    except Exception as e:
        print(f"\nError occurred: {e}")
        import traceback
        traceback.print_exc()

    print("\n" + "=" * 60)
    print("Test complete!")

if __name__ == "__main__":
    asyncio.run(test_orchestrator())
