commits
- Move FEED_PRESETS dictionary inside function body
- Tools must be completely self-contained with no external dependencies
- Update Pydantic schema to use hardcoded list instead of dynamic reference
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix agent export to save JSON properly instead of binary
- Add agent_archive/ for timestamped backups (git ignored)
- Update agents/void.af to track current state in git
- Add user block attachment/detachment around agent calls
- Extract handles from nested thread data automatically
- Add named feed presets (discover, ai-for-grownups, atmosphere, home)
- Update feed tool to support feed_name parameter with presets
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Export void agent state to timestamped .af files on startup
- Create agents/ directory with void_latest.af symlink
- Automatically stage agent exports in git
- Export includes all agent configuration, memory blocks, and tools
馃 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Parse mentions (@handle) and resolve to DIDs
- Parse URLs and create link facets
- Use proper atproto models for facets
- Matches functionality in post creation tool
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Rename post_to_bluesky to create_new_bluesky_post for clarity
- Change parameter from single string to List[str] for thread support
- Add thread creation logic with proper AT Protocol reply structure
- Enhance validation to reject empty lists and oversized posts
- Update tool registration and exports across codebase
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add debug logging configuration with separate INFO level for main logger
- Create queue/errors directory for non-retryable failures
- Enhance error handling to distinguish between retryable (524) and non-retryable (413) errors
- Add detailed logging throughout process_mention for better debugging
- Log agent details including tools on initialization
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add specific handling for Cloudflare 524 timeout errors to keep
notifications in the queue for retry instead of removing them.
This prevents losing notifications during temporary service
interruptions.
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Document that all errors in tools must be thrown as exceptions
rather than returned as strings. This ensures proper error
propagation and handling by the Letta framework.
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Update register_tools.py to import functions and schemas directly
from their respective modules instead of the now-removed functions.py.
This aligns with the new modular tool organization.
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Tools are now defined directly in their respective module files
(search.py, post.py, feed.py, blocks.py) rather than being
centralized in functions.py. This improves code organization
and maintainability.
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Convert SearchBlueskyTool, PostToBlueskyTool, and GetBlueskyFeedTool
from BaseTool classes to standalone functions. This simplifies the
tool architecture and aligns with the updated tool registration system.
Also update error handling to throw exceptions instead of returning
error strings, following the new coding principles.
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Remove the UpdateUserBlocksArgs import and export as part of removing
the update_user_blocks functionality.
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
The update_user_blocks function and its associated UpdateUserBlocksArgs
class have been removed as requested.
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Renamed AttachUserBlockArgs and DetachUserBlockArgs to AttachUserBlocksArgs and DetachUserBlocksArgs in register_tools.py.
- Updated the TOOL_CONFIGS to reflect the new argument class names.
This change improves clarity and maintains uniformity across the codebase.
- Renamed AttachUserBlockArgs and DetachUserBlockArgs to AttachUserBlocksArgs and DetachUserBlocksArgs for uniformity.
- Updated corresponding tool classes to reflect the new naming conventions.
This change enhances clarity and maintains consistency across the codebase.
Eliminates duplicate tool implementations in favor of modular tools/ directory structure for better maintainability.
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add .gitignore for env files, cache, and session files
- Fix void capitalization in README for consistency
- Add 300 character limit validation to posting tool
- Create attach_user_block.py utility for memory management
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix agent export to save JSON properly instead of binary
- Add agent_archive/ for timestamped backups (git ignored)
- Update agents/void.af to track current state in git
- Add user block attachment/detachment around agent calls
- Extract handles from nested thread data automatically
- Add named feed presets (discover, ai-for-grownups, atmosphere, home)
- Update feed tool to support feed_name parameter with presets
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Rename post_to_bluesky to create_new_bluesky_post for clarity
- Change parameter from single string to List[str] for thread support
- Add thread creation logic with proper AT Protocol reply structure
- Enhance validation to reject empty lists and oversized posts
- Update tool registration and exports across codebase
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add debug logging configuration with separate INFO level for main logger
- Create queue/errors directory for non-retryable failures
- Enhance error handling to distinguish between retryable (524) and non-retryable (413) errors
- Add detailed logging throughout process_mention for better debugging
- Log agent details including tools on initialization
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Tools are now defined directly in their respective module files
(search.py, post.py, feed.py, blocks.py) rather than being
centralized in functions.py. This improves code organization
and maintainability.
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Convert SearchBlueskyTool, PostToBlueskyTool, and GetBlueskyFeedTool
from BaseTool classes to standalone functions. This simplifies the
tool architecture and aligns with the updated tool registration system.
Also update error handling to throw exceptions instead of returning
error strings, following the new coding principles.
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add .gitignore for env files, cache, and session files
- Fix void capitalization in README for consistency
- Add 300 character limit validation to posting tool
- Create attach_user_block.py utility for memory management
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>