Skip to content

[pull] main from router-for-me:main#27

Merged
pull[bot] merged 24 commits intoXm798:mainfrom
router-for-me:main
Mar 8, 2026
Merged

[pull] main from router-for-me:main#27
pull[bot] merged 24 commits intoXm798:mainfrom
router-for-me:main

Conversation

@pull
Copy link

@pull pull bot commented Mar 8, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

woqiqishi and others added 24 commits March 6, 2026 00:10
…_-]+$

Add util.SanitizeClaudeToolID() to replace non-conforming characters in
tool_use.id fields across all five response translators (gemini, codex,
openai, antigravity, gemini-cli).

Upstream tool names may contain dots or other special characters
(e.g. "fs.readFile") that violate Claude's ID validation regex.
The sanitizer replaces such characters with underscores and provides
a generated fallback for empty IDs.

Fixes #1872, Fixes #1849

Made-with: Cursor
… TTL change needed

normalizeCacheControlTTL unconditionally re-serializes the entire request
body through json.Unmarshal/json.Marshal even when no TTL normalization
is needed. Go's json.Marshal randomizes map key order and HTML-escapes
<, >, & characters (to \u003c, \u003e, \u0026), producing different raw
bytes on every call.

Anthropic's prompt caching uses byte-prefix matching, so any byte-level
difference causes a cache miss. This means the ~119K system prompt and
tools are re-processed on every request when routed through CPA.

The fix adds a bool return to normalizeTTLForBlock to indicate whether
it actually modified anything, and skips the marshal step in
normalizeCacheControlTTL when no blocks were changed.
SetOAuthSessionError previously sent generic messages to the management
panel (e.g. "Failed to complete Gemini CLI onboarding"), hiding the
actual error returned by Google APIs. The specific error was only
written to the server log via log.Errorf, which is often inaccessible
in headless/Docker deployments.

Include the upstream error in all 8 OAuth error paths so the
management panel shows actionable messages like "no Google Cloud
projects available for this account" instead of a generic failure.
fix: sanitize tool_use.id to comply with Claude API regex ^[a-zA-Z0-9_-]+$
…ion-mainline

fix: preserve original JSON bytes in normalizeCacheControlTTL
…age-preview

feat(registry): add gemini-3.1-flash-image-preview model definition
fix: surface upstream error details in Gemini CLI OAuth onboarding UI
…afety

fix(registry): clone model snapshots and invalidate available-model cache
…ol-thinking

fix(openai-compat): improve pool fallback and preserve adaptive thinking
- Added comprehensive unit tests for `authScheduler` and related components.
- Implemented `authScheduler` with support for Round Robin, Fill First, and custom selector strategies.
- Improved tracking of auth states, cooldowns, and recovery logic in scheduler.
fix(executor): use aiplatform base url for vertex api key calls
fix(translator): pass through adaptive thinking effort
@pull pull bot locked and limited conversation to collaborators Mar 8, 2026
@pull pull bot added the ⤵️ pull label Mar 8, 2026
@pull pull bot merged commit 4f48e52 into Xm798:main Mar 8, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants