Repository navigation
v0.5.0
What's Changed
Version Management
- Version is now read from
pyproject.tomlusingimportlib.metadata(single source of truth)
Streaming
- True streaming implemented for final response - tokens now arrive as they're generated by the backend
- Tool-call detection iterations still use non-streaming (required to detect tool calls)
Security
- Replaced deprecated MD5 with SHA256 in RAG indexer for URL hashing
- Replaced SHA1 with SHA256 in RAG chunker for chunk IDs
- Note: Existing RAG caches will need to be rebuilt
New Features
- Optional rate limiting - Enable with
RATE_LIMIT_ENABLED=true- Configurable via
RATE_LIMIT_DEFAULT(e.g., "100 per minute") - Supports different storage backends via
RATE_LIMIT_STORAGE_URI - Requires
flask-limiterpackage when enabled
- Configurable via
- Configurable tool iterations -
MAX_TOOL_ITERATIONSconfig option (default: 5) - Configurable RAG retriever multiplier -
retriever_candidate_multiplierin RAGConfig
Code Quality
- Extracted duplicate tool call handling into
_extract_message_and_tool_calls()and_execute_tool_calls()helpers - Added
BaseTooltype hint for tools parameter - Added
Callable[[], None]type hint for init_hook - Added info-level logging for requests, completions, and backend calls
Documentation
- Fixed web search docstring (removed false DuckDuckGo fallback claim)
- Updated CLAUDE.md with new config options
- Updated README.md
Cleanup
- Removed unused
clickdependency
Full Changelog: v0.4.1...v0.5.0