mirror of https://github.com/kortix-ai/suna.git
91 lines
2.3 KiB
Python
91 lines
2.3 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
SUNA AGENT INSTALLER
|
||
|
||
Usage:
|
||
python suna_manager.py install # Install for users who don't have Suna
|
||
"""
|
||
|
||
import asyncio
|
||
import argparse
|
||
import sys
|
||
import json
|
||
from pathlib import Path
|
||
|
||
backend_dir = Path(__file__).parent.parent
|
||
sys.path.insert(0, str(backend_dir))
|
||
|
||
from agent.suna import SunaSyncService
|
||
from utils.logger import logger
|
||
|
||
|
||
def print_success(message: str):
|
||
print(f"✅ {message}")
|
||
|
||
def print_error(message: str):
|
||
print(f"❌ {message}")
|
||
|
||
def print_info(message: str):
|
||
print(f"ℹ️ {message}")
|
||
|
||
def print_warning(message: str):
|
||
print(f"⚠️ {message}")
|
||
|
||
|
||
class SunaManagerCLI:
|
||
def __init__(self):
|
||
self.sync_service = SunaSyncService()
|
||
|
||
async def install_command(self):
|
||
print("🚀 Installing Suna for users who don't have it")
|
||
|
||
result = await self.sync_service.install_for_all_missing_users()
|
||
|
||
if result.success:
|
||
if result.synced_count == 0:
|
||
print_success("All users already have Suna agents!")
|
||
else:
|
||
print_success(f"Successfully installed Suna for {result.synced_count} users")
|
||
else:
|
||
print_error("Installation failed!")
|
||
for error in result.errors:
|
||
print(f" 💥 {error}")
|
||
|
||
if result.failed_count > 0:
|
||
print_warning(f"Failed to install for {result.failed_count} users")
|
||
|
||
|
||
|
||
async def main():
|
||
parser = argparse.ArgumentParser(
|
||
description="🌞 Suna Agent Manager - Simple and robust",
|
||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||
epilog=__doc__
|
||
)
|
||
|
||
subparsers = parser.add_subparsers(dest='command', help='Available commands')
|
||
subparsers.add_parser('install', help='📦 Install Suna for users who don\'t have it')
|
||
|
||
args = parser.parse_args()
|
||
|
||
if not args.command:
|
||
parser.print_help()
|
||
return
|
||
|
||
cli = SunaManagerCLI()
|
||
|
||
try:
|
||
if args.command == 'install':
|
||
await cli.install_command()
|
||
else:
|
||
parser.print_help()
|
||
|
||
except KeyboardInterrupt:
|
||
print_warning("Operation cancelled by user")
|
||
except Exception as e:
|
||
print_error(f"Unexpected error: {str(e)}")
|
||
logger.error(f"CLI error: {str(e)}")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
asyncio.run(main()) |