- Update web search to use ddgs package (renamed from duckduckgo_search)
- Add ddgs>=9.0.0 to dependencies in pyproject.toml
- Fix cron tool to handle recurring jobs with duration limits
- When both every_seconds and in_seconds are provided, create multiple
one-time jobs instead of ignoring every_seconds
- Fixes issue where 'remind me every X for Y duration' only created
a single reminder instead of multiple recurring reminders
- Comprehensive security configuration guide for nanobot
- Production deployment security checklist
- Channel access control configuration
- API key and credential management
- Workspace and file system security settings
- Document security restrictions and best practices
- Provide production deployment checklist
- Include tool-specific security rules
- Reference implementation files for security checks
- Clarify when NOT to use message tool (simple acknowledgments, normal conversation)
- Add guidance for natural conversational responses
- Update cron tool documentation with better examples
- Improve scheduled tasks documentation in AGENTS.md
- Add auto-start functionality to cron service when jobs are added
if service is not running and event loop is available
- Add 'reminder' field to CronPayload to distinguish between
simple reminders (send message directly) and tasks (execute via agent)
- Update cron tool to accept 'reminder' parameter
- Fix callback logic to check reminder field: reminders send directly,
tasks are processed through agent
- Ensures both 'remind me to X' and 'schedule a task to do X' work correctly
- Added support for PDF file extraction using pdftotext, with error handling for extraction failures.
- Updated tool description to clarify usage and file type support.
- Improved error messages for binary and non-UTF-8 encoded files.
- Updated ExecTool description to emphasize the importance of using read_file for reading files before executing commands.
- Enhanced logging in agent loop for better debugging
- Added workaround for litellm's os.getcwd() issue when directory is deleted
- Improved tool result logging and iteration tracking
- Merged latest 166 commits from origin/main
- Resolved conflicts in .gitignore, commands.py, schema.py, providers/__init__.py, and registry.py
- Kept both local providers (Ollama, AirLLM) and new providers from main
- Preserved transformers 4.39.3 compatibility fixes
- Combined error handling improvements with new features
- Add DuckDuckGo search fallback when Brave API key is not available
- Web search now works without requiring an API key
- Falls back to DuckDuckGo if BRAVE_API_KEY is not set
- Maintains backward compatibility with Brave API when key is provided
- Improve error handling in agent CLI command
- Better exception handling with traceback display
- Prevents crashes from showing incomplete error messages
- Improves debugging experience
- Fix RoPE scaling compatibility: automatically convert unsupported 'llama3' type to 'linear' for local models
- Patch LlamaSdpaAttention to filter out position_embeddings argument that AirLLM passes but transformers 4.39.3 doesn't accept
- Add better error handling with specific guidance for compatibility issues
- Fix config file modification for local models with unsupported rope_scaling types
- Improve error messages to help diagnose transformers version compatibility issues
These fixes allow nanobot to work with transformers 4.39.3 and AirLLM.
- Remove Qwen/DashScope provider and all Qwen-specific code
- Remove gateway providers (OpenRouter, AiHubMix)
- Remove cloud providers (Anthropic, OpenAI, Gemini, Zhipu, Moonshot, MiniMax, Groq)
- Update default model from Platypus to llama3.2
- Remove Platypus references throughout codebase
- Add AirLLM provider support with local model path support
- Update setup scripts to only show Llama models
- Clean up provider registry and config schema