a digital person for bluesky
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()