#!/usr/bin/env -S uv run --script
# /// script
# requires-python = ">=3.11"
# dependencies = [
#     "typer",
#     "httpx",
# ]
# ///
"""
List all agent orchestrator sessions with metadata.
"""

import sys
from pathlib import Path

sys.path.insert(0, str(Path(__file__).parent / "lib"))

import typer

app = typer.Typer(add_completion=False)


@app.command()
def main():
    """
    List all sessions with metadata.

    Displays: session name (session-id: session_id, project-dir: project_dir)

    Examples:
        ao-list-sessions
    """
    from config import get_api_url
    from session_client import SessionClient, SessionClientError
    from utils import debug_log

    # DEBUG LOGGING - Command entry
    debug_log("COMMAND - ao-list-sessions", {
        "cwd": str(Path.cwd()),
        "argv": sys.argv,
    })

    try:
        # Get API URL
        api_url = get_api_url()

        # List sessions via API
        try:
            client = SessionClient(api_url)
            sessions = client.list_sessions()
            if not sessions:
                print("No sessions found")
            else:
                for s in sessions:
                    print(f"{s.get('session_name', 'unknown')} (session-id: {s.get('session_id', 'unknown')}, project-dir: {s.get('project_dir', 'unknown')})")
        except SessionClientError as e:
            print(f"Error: Failed to connect to session manager: {e}", file=sys.stderr)
            raise typer.Exit(1)

    except Exception as e:
        # Handle errors
        print(f"Error: {e}", file=sys.stderr)
        raise typer.Exit(1)


if __name__ == "__main__":
    app()
