Repository navigation
v1.1.0-upstream8.0.7
·
47 commits
to main
since this release
v1.1.0-upstream8.0.7 - 2026-10-01
Summary
- Absorbs upstream
v8.0.7(all five commits) on top of the previousv8.0.5
baseline, including the negotiated-ALPN uTLS transport fix and three Codex
tool-schema / stream-disconnect fixes. - Adds a
flattenmode to the Responses toolslocal-refsschema handling, so
self-referencing$defsfrom clients such as Codex desktop and OpenCode Go no
longer fail with400 Recursive JSON schemas are not currently supported. - Canonicalizes integral float literals in Responses tool-call arguments and
custom tool-call inputs, so strict Codex clients no longer reject
2500.0where an integer is expected. - Fixes several Gemini / Vertex / AI Studio streaming paths on the Responses
surface that returned502, dropped usage, or reported a truncated answer as
completed. - No configuration migration is required: the new
flattenmode is opt-in and
the defaultlocal-refs: "preserve"behavior is unchanged.
Upstream alignment
- Upstream release:
v8.0.7 - Previous baseline:
v8.0.5 - Intake record: absorbed.md
- Ported: the complete
v8.0.5..v8.0.7range, cherry-picked individually with
-x: negotiated ALPN support in the uTLS client (router-for-me#6223), skipping tool
parameter integer normalization for Codex executor targets (router-for-me#6244),
determining that normalization by target executor identity (router-for-me#6244), handling
an upstream Codex stream disconnect before the first payload as a bad gateway
with credential failover (router-for-me#6247), and passing the target executor to
compatibility translation and token counting (router-for-me#6244). - Skipped: none. Every commit in the range was ported;
67cb32b6and
97f244b8revisea8ffd5a8, so all three were taken together.
Breaking changes
- None.
Added
- A new
local-refs: "flatten"value for the Responses tools
responses-tools.routes[].schemablock (config.example.yaml, documented in
docs/responses-tools.md). It replaces only cycle-closing$refs with an
unconstrained schema and keeps acyclic$defsintact, so recursive tool
schemas are accepted by upstreams that reject recursion.preserveand
inlinekeep their current behavior, andpreserveremains the default. - Support for negotiated TLS ALPN protocols in the uTLS client: HTTP/2 and
HTTP/1.1 transports are selected from the handshake, empty-ALPN and HTTP/1.1
requests reuse the handshaken connection over a dedicated non-pooled
transport, and uTLS connections are closed cleanly when a response completes
or fails.
Changed
- Codex token counting and xAI compatibility translation now receive the target
executor identity, so tool parameter schemas keep theirnumbertype for
non-Codex targets while Codex targets keep their reserved schemas strictly
validated. - HTTP 408 Request Timeout from an upstream is mapped to
server_errorin the
base error response handlers.
Fixed
- Responses tool-call arguments and custom tool-call inputs emitted towards
Responses clients now rewrite integral float literals (2500.0->2500).
The rewrite is value-preserving, covers every tool and parameter rather than a
fixed whitelist, and leaves tool schemas untouched. Delta events are
deliberately unchanged because Codex clients parse arguments from the
complete item. - A Codex upstream stream that closes before emitting any payload now returns
502 Bad Gatewayand fails over to the next credential instead of surfacing
a truncated success. - AI Studio relayed streams now synthesize the terminal event on stream end, so
a normally finished Gemini stream no longer answers502 upstream stream closed before a terminal eventon the Responses surface. - Gemini and Vertex streaming no longer emit a synthetic completion when the
upstream read fails or the request is cancelled; the terminal event is
synthesized only on a clean end of stream. - Gemini usage is preserved when the finish reason and
usageMetadataarrive
in separate chunks; cumulative counts are replaced per field rather than
summed. - Gemini
MAX_TOKENStermination is now reported asincompleteon both the
streaming and non-streaming Responses paths, while already finalized messages
and complete function calls staycompleted. OnlySTOPandMAX_TOKENS
are mapped.
Security
- None.
Validation
ops/upstream-intake/verify-absorb.shwas run on this release candidate with
GOTOOLCHAIN=go1.26.4, matching the version both CI workflows pin. It covers
the maintenance tooling tests,gofmtover tracked sources,go vet ./...,
the Responses-tools package tests, the fullgo test ./... -count=1suite,
-raceruns of the concurrency-sensitive packages, and a server build.- Client replay coverage: not performed. No live Codex, Gemini, Vertex or
AI Studio client turn was replayed against this build, so the gate result
covers the automated checks only and does not establish live streaming
behavior. - Cross-platform behavior is covered only by the release workflow's asset build
and checksum verification; no artifact was exercised on a non-macOS platform.
Known issues
- The upstream fix for tool-parameter integer normalization is scoped to Codex
executor targets. The Meta executor still calls the unscope-aware path and
normalizes unconditionally, so a Meta-hosted Muse request can still produce an
integral float literal in a schema-bound position. The response-side
canonicalizer in this release covers the clients that consume those
arguments; the upstream gap is tracked as
router-for-me/CLIProxyAPI#6255. - Gemini
FinishReasonvalues other thanSTOPandMAX_TOKENSare not yet
mapped to a Responses terminal status.
Release assets
CLIProxyAPI_<version>_linux_<arch>.tar.gzis the default Linux build. It supports dynamic library plugins and targets a GLIBC 2.17 baseline.CLIProxyAPI_<version>_linux_<arch>_no-plugin.tar.gzis the portable Linux build for musl-based or older systems such as OpenWrt. It does not support dynamic library plugins.CLIProxyAPI_<version>_freebsd_aarch64_no-plugin.tar.gzis the FreeBSD arm64 build. It is built without CGO and does not support dynamic library plugins.