Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
agentio / agentio / cli.py
Size: Mime:
#!/usr/bin/env python
"""AgentIO CLI entry point"""

import argparse
import sys
import agentio

def main():
    parser = argparse.ArgumentParser(description="AgentIO Trace Collection and Visualization")
    subparsers = parser.add_subparsers(dest="command", help="Commands")
    
    # Serve command
    serve_parser = subparsers.add_parser("serve", help="Run as trace collection server")
    serve_parser.add_argument("--host", default="0.0.0.0", help="Host to bind (default: 0.0.0.0)")
    serve_parser.add_argument("--port", type=int, default=7860, help="Port to bind (default: 7860)")
    serve_parser.add_argument("--db", help="Database path (overrides --project)")
    serve_parser.add_argument("--project", help="Project name to serve (looks for ~/.agentio/{project}.db)")
    serve_parser.add_argument("--token", help="Auth token for API access")
    
    # Export command
    export_parser = subparsers.add_parser("export", help="Export traces to file")
    export_parser.add_argument("output", help="Output file path")
    export_parser.add_argument("--format", choices=["json", "csv", "parquet"], 
                               default="json", help="Export format (default: json)")
    export_parser.add_argument("--project", default="default", help="Project to export (default: default)")
    
    # Show command
    show_parser = subparsers.add_parser("show", help="Launch trace visualization dashboard")
    show_parser.add_argument("--project", default="default", help="Project name")
    
    args = parser.parse_args()
    
    if args.command == "serve":
        agentio.serve(
            host=args.host,
            port=args.port,
            db_path=args.db,
            project=args.project,
            auth_token=args.token
        )
    
    elif args.command == "export":
        agentio.export(
            args.output,
            format=args.format,
            project=args.project
        )
    
    elif args.command == "show":
        agentio.show(project=args.project)
        # Keep running
        try:
            import time
            while True:
                time.sleep(1)
        except KeyboardInterrupt:
            print("\nShutting down...")
    
    else:
        parser.print_help()
        sys.exit(1)

if __name__ == "__main__":
    main()