* feat: Implement model registry and capabilities for multi-provider support
- Added ModelRegistry to manage available models and their capabilities.
- Introduced ModelProvider enum for different LLM providers.
- Created ModelCapabilities dataclass to define model features.
- Implemented methods to load models based on API keys and settings.
- Added utility functions for model management in model_utils.py.
- Updated settings.py to include provider-specific API keys.
- Refactored LLM classes (Anthropic, OpenAI, Google, etc.) to utilize new model registry.
- Enhanced utility functions to handle token limits and model validation.
- Improved code structure and logging for better maintainability.
* feat: Add model selection feature with API integration and UI component
* feat: Add model selection and default model functionality in agent management
* test: Update assertions and formatting in stream processing tests
* refactor(llm): Standardize model identifier to model_id
* fix tests
---------
Co-authored-by: Alex <a@tushynski.me>
* todo tool feature added to tools
* removed configs
* fix: require user_id on TodoListTool, normalize timestamps, add tests
* lint and tests fixes
* refactor: support multiple todos per user/tool by indexing with todo_id
* modified todo_id to use auto-increamenting integer instead of UUID
* test-case fixes
* feat: fix todos
---------
Co-authored-by: Alex <a@tushynski.me>
* Add MongoDB-backed NotesTool with CRUD actions and unit tests
* NotesTool: enforce single note per user, require decoded_token['sub'] user_id, fix tests
* chore: remove accidentally committed results.txt and ignore it
* fix: remove results.txt, enforce single note per user, add tests
* refactor: update NotesTool actions and tests for clarity and consistency
* refactor: update NotesTool docstring for clarity
* refactor: simplify MCPTool docstring and remove redundant import in test_notes_tool
* lint: fix test
* refactor: remove unused import from test_notes_tool.py
---------
Co-authored-by: Alex <a@tushynski.me>