Skip to content

v2.20.2

Choose a tag to compare

@schmitech schmitech released this 24 Oct 18:37
· 30 commits to main since this release

[2.20.2] - 2026-10-24

Maintenance

  • Admin route cleanup: Consolidated repeated pagination, configuration, adapter lookup, reload-job, and API-key state handling. Adapter operations now avoid repeated directory scans, and independent admin lookups run concurrently. Cost-report API-key labels use targeted, paginated, deduplicated queries while preserving suffix-collision handling. Adapter-reference detection (used by adapter delete) and adapter capability checks (template reload / test-query eligibility) moved out of the route layer into the adapter-config and capabilities modules, removing a duplicated inline check. A spike into the admin YAML editors (adapters/MCP/config.yaml) found the one genuinely shared primitive already shared and the rest genuinely different granularities, so no further unification there. mcp.py's list_mcp_servers now resolves every HTTP-transport server's OAuth status concurrently via asyncio.gather instead of one at a time — and FileTokenStorage's file reads/writes (services/mcp_oauth_token_storage.py) now run via asyncio.to_thread, since without that the gather didn't actually overlap the blocking file I/O each status check does. The remaining Phase 3 items (MCP config write lock granularity, caching resolved adapter capability tuples, config.py section load/parse redundancy) were each left as-is per their own roadmap wording — none has a triggering condition (frequent/bulk writes, measured latency, a tight-loop caller) that has actually occurred. No API behavior changes. docs/roadmap/admin-routes-cleanup.md is now complete.

Bug Fixes

  • Code block chunking: Fixed fenced-code detection for prose containing backticks, tilde fences, and nested or unmatched fences. Streaming chunking also respects longer backtick fences instead of closing them early.