a digital person for bluesky
at 42e4d0055155dada2db9c31df06a3238decf3328 72 lines 2.4 kB view raw
1#!/usr/bin/env python3 2""" 3Add block management tools to the main void agent so it can also manage user blocks. 4""" 5 6import os 7import logging 8from letta_client import Letta 9from create_profile_researcher import create_block_management_tools 10 11# Configure logging 12logging.basicConfig( 13 level=logging.INFO, 14 format="%(asctime)s - %(name)s - %(levelname)s - %(message)s" 15) 16logger = logging.getLogger("add_block_tools") 17 18def add_block_tools_to_void(): 19 """Add block management tools to the void agent.""" 20 21 # Create client 22 client = Letta(token=os.environ["LETTA_API_KEY"]) 23 24 logger.info("Adding block management tools to void agent...") 25 26 # Create the block management tools 27 attach_tool, detach_tool, update_tool = create_block_management_tools(client) 28 29 # Find the void agent 30 agents = client.agents.list(name="void") 31 if not agents: 32 print("❌ Void agent not found") 33 return 34 35 void_agent = agents[0] 36 37 # Get current tools 38 current_tools = client.agents.tools.list(agent_id=void_agent.id) 39 tool_names = [tool.name for tool in current_tools] 40 41 # Add new tools if not already present 42 new_tools = [] 43 for tool, name in [(attach_tool, "attach_user_block"), (detach_tool, "detach_user_block"), (update_tool, "update_user_block")]: 44 if name not in tool_names: 45 client.agents.tools.attach(agent_id=void_agent.id, tool_id=tool.id) 46 new_tools.append(name) 47 logger.info(f"Added tool {name} to void agent") 48 else: 49 logger.info(f"Tool {name} already attached to void agent") 50 51 if new_tools: 52 print(f"✅ Added {len(new_tools)} block management tools to void agent:") 53 for tool_name in new_tools: 54 print(f" - {tool_name}") 55 else: 56 print("✅ All block management tools already present on void agent") 57 58 print(f"\nVoid agent can now:") 59 print(f" - attach_user_block: Create and attach user memory blocks") 60 print(f" - update_user_block: Update user memory with new information") 61 print(f" - detach_user_block: Clean up memory when done with user") 62 63def main(): 64 """Main function.""" 65 try: 66 add_block_tools_to_void() 67 except Exception as e: 68 logger.error(f"Error: {e}") 69 print(f"❌ Error: {e}") 70 71if __name__ == "__main__": 72 main()