Skip to content

Tachikoma 0.2.0

Latest

Choose a tag to compare

@steipete steipete released this 28 Apr 01:46
· 47 commits to main since this release
v0.2.0
82c7aa0

Added

  • First-class Azure OpenAI provider: deployment-based model case .azureOpenAI, Azure-specific URL/header/query wiring (api-version, api-key or bearer token), env overrides (AZURE_OPENAI_API_KEY, AZURE_OPENAI_BEARER_TOKEN, AZURE_OPENAI_ENDPOINT/RESOURCE, AZURE_OPENAI_API_VERSION), and README guidance.
  • Azure provider unit tests using URLProtocol stubs to verify path, query, and auth header construction.

Changed

  • Added OpenAI's GPT-5.1 family (flagship/mini/nano) throughout the model enums, selectors, provider factories, capability registry, pricing tables, docs, and test suites. GPT aliases (gpt, gpt-5, gpt-4o) now normalize to .openai(.gpt51) so downstream apps inherit the new default seamlessly.
  • Expanded xAI Grok support to the full November 2025 catalog (grok-4-fast-*, grok-code-fast-1, grok-2-*, grok-vision-beta, etc.), updated the CLI shortcuts so grok now maps to grok-4-fast-reasoning, and refreshed selectors, provider parsers, capability tables, and docs snippets to match the official API lineup.
  • Google/Gemini support now targets the Gemini 2.5 family exclusively (gemini-2.5-pro, gemini-2.5-flash, gemini-2.5-flash-lite), with updated model selectors, parsers, docs, and pricing tables; older 1.5/2.0 IDs are no longer recognized.
  • Removed deprecated OpenAI reasoning models (o1, o1-mini, o3, o3-mini) in favour of the GPT-5 family plus o4-mini, updating enums, provider factories, capability tables, prompts, and documentation metadata accordingly.
  • Google/Gemini integration now uses the documented x-goog-api-key header with alt=sse streaming, adds fallbacks for GOOGLE_API_KEY / GOOGLE_APPLICATION_CREDENTIALS, and hardens the SSE decoder so live tests succeed consistently.
  • Pruned Anthropic model support to the Claude 4.x line (Opus 4, Sonnet 4 / 4.5, Haiku 4.5) to match current API availability and reduce maintenance burden.
  • TachikomaConfiguration now loads credentials first and lets environment variables override them so operators can supersede stored settings without editing credentials files.
  • TachikomaConfiguration can optionally override the provider factory so test harnesses can inject mock providers without affecting production defaults, improving hermetic test runs.
  • Implemented OpenRouter, Together, Replicate, and Anthropic-compatible providers on top of the shared helpers so aggregator models no longer throw "not yet implemented" errors and honour custom base URLs/headers.
  • Provider.environmentValue falls back to classic getenv lookups when the modern configuration reader returns no value, ensuring environment overrides succeed on macOS 14 deployments.
  • Provider environment reads now use direct process environment lookups, so test overrides and runtime unsets behave deterministically across SwiftPM/Xcode runs.

Fixed

  • MCP bridge conversions now handle embedded resources and resource links from swift-sdk 0.11, and test helpers no longer swap mock keys for live environment credentials during provider/audio suites.
  • retryWithCancellation now registers token handlers per-attempt and cancels in-flight work, resolving hangs when external cancellation should short-circuit retries.
  • Audio provider tests and helpers consistently force mock mode when exercising stub audio payloads, preventing accidental live API calls that fail to decode fixtures.
  • TestHelpers expose discardable configuration helpers and stricter mock-key detection, reducing compiler warnings and flaky skips.
  • OpenAI transcription timestamp tests no longer hit the live API and succeed reliably under both mock and real key configurations.
  • Google provider API-key resolution no longer treats GOOGLE_APPLICATION_CREDENTIALS file paths as credential strings.
  • Anthropic OAuth login token exchange now uses the correct request format (JSON body + state). Thanks @jonathanglasmeyer.

Testing

  • Added dedicated Grok catalog tests (selector + capability assertions) plus provider factory/e2e coverage so every supported xAI model is exercised in mock suites without hitting the live API.
  • Integration suites now respect real API keys loaded from the environment, covering Anthropic Sonnet 4 tool-calling, OpenAI GPT-5 responses, Grok/Grok vision flows, and Google/Mistral smoke tests.
  • Full INTEGRATION_TESTS=1 swift test runs complete without recorded issues, including agent ergonomics and audio suites.
  • Added provider-level network E2E coverage using local URLProtocol stubs plus new OpenAI Responses API tests (request encoding + streaming) so critical serialization paths are exercised without live traffic.
  • ProviderEndToEndTests now exercise every provider flavor (OpenRouter/Together/Replicate, OpenAI/Anthropic compatible, etc.), pushing overall line coverage above 40% while keeping the suite deterministic via URLProtocol stubs.