Skip to content

v0.2.0

Choose a tag to compare

@Oaklight Oaklight released this 17 Mar 20:19
· 1584 commits to master since this release

Added

  • LLM-Rosetta Gateway: REST gateway application for cross-provider HTTP proxying
  • CLI entry point (llm-rosetta-gateway) and package structure for the gateway
  • Gateway config auto-discovery at ./config.jsonc, ~/.config/llm-rosetta-gateway/config.jsonc, ~/.llm-rosetta-gateway/config.jsonc
  • --edit / -e flag to open config file in $EDITOR (falls back to nano/vi/vim)
  • --version / -V flag showing current version
  • ASCII art startup banner with --no-banner to suppress
  • add provider <name> subcommand for adding provider entries to config (with --api-key, --base-url flags or interactive prompts; known providers auto-fill defaults)
  • add model <name> subcommand for adding model routing entries (with --provider flag or interactive prompt)
  • init subcommand to create a template config.jsonc at the XDG default location
  • Gateway providers module (providers.py): centralized provider definitions with auth-header builders, URL templates, default base URLs, and API key env-var names
  • API key rotation: round-robin KeyRing for comma-separated API keys per provider
  • Proxy support: global server.proxy and per-provider proxy config for HTTP/SOCKS proxies; CLI --proxy flag overrides config
  • Model listing endpoints: GET /v1/models (compatible with both OpenAI and Anthropic SDKs) and GET /v1beta/models (Google GenAI SDK format) — enables client.models.list() across all three SDKs (#54)
  • Standalone API test scripts (llm_api_simple_tests/): 20 test scripts (5 per provider) using official SDKs directly, covering simple query, multi-round chat, image, function calling, and comprehensive scenarios
  • Makefile test-integration and test-gateway targets

Changed

  • Bumped minimum Python to 3.10+; migrated to stdlib typing (removed typing_extensions)
  • Applied ruff formatter across the entire codebase
  • Updated Makefile with lint, test, and build targets
  • Added ty (type checker) configuration
  • Configured ruff lint rules (E, F, UP) in pyproject.toml; ignore UP007 (Union syntax) and E501 (line length)
  • Modernized typing imports across src/, tests/, examples/, and scripts/

Fixed

  • Streaming crash with Anthropic provider when usage tokens are null — TypeError: NoneType + int in all converters
  • Gateway provider base_url validation — fail early with clear error on config typos
  • Added socksio to gateway dependencies for SOCKS proxy support
  • Resolved all ty type checker diagnostics in src/ (31 → 0) and tests/ (1506 → 0)
  • Resolved all ruff lint violations in src/ and tests/
  • Google thought_signature preservation through gateway round-trips (#51)
  • OpenAI Responses converter now handles all 3 input formats: bare string, shorthand list, and structured list
  • Special characters in model names for Google GenAI routes (#53)
  • Streaming SSE events crash in gateway mode (#52)
  • Serialize dict tool_result content to JSON for Anthropic API