Skip to content

v0.5.0

Choose a tag to compare

@assareh assareh released this 27 Nov 06:43
· 78 commits to main since this release

What's Changed

Version Management

  • Version is now read from pyproject.toml using importlib.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-limiter package when enabled
  • Configurable tool iterations - MAX_TOOL_ITERATIONS config option (default: 5)
  • Configurable RAG retriever multiplier - retriever_candidate_multiplier in RAGConfig

Code Quality

  • Extracted duplicate tool call handling into _extract_message_and_tool_calls() and _execute_tool_calls() helpers
  • Added BaseTool type 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 click dependency

Full Changelog: v0.4.1...v0.5.0