#!/usr/bin/env python3 """ Show the current capabilities of both agents. """ import os from letta_client import Letta def show_agent_capabilities(): """Display the capabilities of both agents.""" client = Letta(api_key=os.environ["LETTA_API_KEY"]) # v1.0: token → api_key print("šŸ¤– LETTA AGENT CAPABILITIES") print("=" * 50) # Profile Researcher Agent (v1.0: list returns page object) researchers_page = client.agents.list(name="profile-researcher") researchers = researchers_page.items if hasattr(researchers_page, 'items') else researchers_page if researchers: researcher = researchers[0] print(f"\nšŸ“Š PROFILE RESEARCHER AGENT") print(f" ID: {researcher.id}") print(f" Name: {researcher.name}") researcher_tools_page = client.agents.tools.list(agent_id=researcher.id) researcher_tools = researcher_tools_page.items if hasattr(researcher_tools_page, 'items') else researcher_tools_page print(f" Tools ({len(researcher_tools)}):") for tool in researcher_tools: print(f" - {tool.name}") researcher_blocks_page = client.agents.blocks.list(agent_id=researcher.id) researcher_blocks = researcher_blocks_page.items if hasattr(researcher_blocks_page, 'items') else researcher_blocks_page print(f" Memory Blocks ({len(researcher_blocks)}):") for block in researcher_blocks: print(f" - {block.label}") # Void Agent (v1.0: list returns page object) voids_page = client.agents.list(name="void") voids = voids_page.items if hasattr(voids_page, 'items') else voids_page if voids: void = voids[0] print(f"\n🌌 VOID AGENT") print(f" ID: {void.id}") print(f" Name: {void.name}") void_tools_page = client.agents.tools.list(agent_id=void.id) void_tools = void_tools_page.items if hasattr(void_tools_page, 'items') else void_tools_page print(f" Tools ({len(void_tools)}):") for tool in void_tools: print(f" - {tool.name}") void_blocks_page = client.agents.blocks.list(agent_id=void.id) void_blocks = void_blocks_page.items if hasattr(void_blocks_page, 'items') else void_blocks_page print(f" Memory Blocks ({len(void_blocks)}):") for block in void_blocks: print(f" - {block.label}") print(f"\nšŸ”„ WORKFLOW") print(f" 1. Profile Researcher: attach_user_block → research_bluesky_profile → update_user_block → detach_user_block") print(f" 2. Void Agent: Can attach/detach same user blocks for personalized interactions") print(f" 3. Shared Memory: Both agents can access the same user-specific blocks") print(f"\nšŸ’” USAGE EXAMPLES") print(f" Profile Researcher: 'Research @cameron.pfiffer.org and store findings'") print(f" Void Agent: 'Attach user block for cameron.pfiffer.org before responding'") if __name__ == "__main__": show_agent_capabilities()