a digital person for bluesky
1#!/usr/bin/env python3 2""" 3Direct chat with a specific group ID (bypassing the search logic). 4""" 5 6import os 7import sys 8from dotenv import load_dotenv 9from letta_client import Letta 10from rich.console import Console 11from rich.prompt import Prompt 12from rich.panel import Panel 13 14# Add parent directory to path for imports 15sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 16from config_loader import get_config 17 18load_dotenv() 19 20def main(): 21 console = Console() 22 23 if len(sys.argv) != 2: 24 console.print("[red]Usage: python organon/chat_direct.py <group_id>[/red]") 25 console.print("[dim]Example: python organon/chat_direct.py group-0bf1c6[/dim]") 26 sys.exit(1) 27 28 group_id = sys.argv[1] 29 30 try: 31 # Initialize configuration and client 32 config = get_config() 33 34 client = Letta( 35 base_url=config.get('letta.base_url', os.environ.get('LETTA_BASE_URL')), 36 token=config.get('letta.api_key', os.environ.get('LETTA_API_KEY')), 37 timeout=config.get('letta.timeout', 30) 38 ) 39 40 # Test if we can access the group 41 try: 42 group = client.groups.retrieve(group_id=group_id) 43 console.print(f"[green]✅ Connected to group: {group_id}[/green]") 44 except Exception as e: 45 console.print(f"[red]❌ Cannot access group {group_id}: {e}[/red]") 46 sys.exit(1) 47 48 console.print(Panel.fit( 49 "[bold green]Direct Organon Group Chat[/bold green]\n" 50 f"Group ID: {group_id}\n" 51 "Type 'exit' or 'quit' to leave", 52 title="🧠 Direct Chat" 53 )) 54 55 while True: 56 user_input = Prompt.ask("\n[bold green]You[/bold green]") 57 58 if user_input.lower() in ['exit', 'quit', 'q']: 59 console.print("[yellow]Goodbye![/yellow]") 60 break 61 elif not user_input.strip(): 62 continue 63 64 console.print("[dim]Sending to group...[/dim]") 65 66 try: 67 response = client.groups.messages.send( 68 group_id=group_id, 69 message=user_input 70 ) 71 72 console.print("\n[bold]Group Response:[/bold]") 73 if hasattr(response, 'messages') and response.messages: 74 for message in response.messages: 75 content = str(message) 76 if hasattr(message, 'text'): 77 content = message.text 78 elif hasattr(message, 'content'): 79 content = message.content 80 81 console.print(Panel(content, border_style="blue")) 82 else: 83 console.print("[yellow]No response received[/yellow]") 84 85 except Exception as e: 86 console.print(f"[red]Error: {e}[/red]") 87 88 except Exception as e: 89 console.print(f"[red]Error: {e}[/red]") 90 sys.exit(1) 91 92if __name__ == "__main__": 93 main()