Commit Graph

4130 Commits

Author SHA1 Message Date
Luis Pater
3ebee06516 fix(interactions): bridge apply_patch tool calls in responses translation
- Handle apply_patch custom tool call streaming deltas and snapshots for Responses API translation
- Track and resolve step indexes, function call identities, and error states across stream events
- Propagate apply_patch tool input errors and upstream failure states in stream and non-stream responses
2026-10-02 03:49:51 +08:00
Luis Pater
fd48ea6840 Merge pull request #6252 from ggbdpq/fix/xai-grok-client-version-bump
fix(xai): bump pinned grok client version to 1.0.44 for chat-proxy
v8.0.8
2026-10-01 11:31:34 +08:00
ggbdpq
b467a83c0f fix(xai): bump pinned grok client version to 1.0.44 for chat-proxy
xAI raised the minimum accepted x-grok-client-version on
cli-chat-proxy.grok.com, so every xAI OAuth chat request through the CLI
chat-proxy failed with HTTP 426 ("Your Grok CLI version (0.2.120) is
outdated"). /v1/models is not gated, so discovery looked healthy while
inference was dead.

Bump the pin to the current stable Grok CLI version (1.0.44) and record
the observed server floor in the constant's comment. Both
x-grok-client-version and the derived User-Agent ship from this one
constant.

Regression tests lock three things: the pinned version meets the known
server floor (red against 0.2.120), the two identity headers stay
derived from the same constant, and the per-auth `header:*` custom
header override still wins over the pin - the documented operator
escape hatch when xAI ratchets the floor again.

Closes #6249

Generated-by: GLM-5.3-Flash (ZCode)
2026-10-01 06:14:37 +08:00
Luis Pater
97f244b8dd fix(codex): pass target executor to compatibility translation and token counting
- Pass target executor identity during Codex token counting and xAI request translation
- Skip tool integer normalization when target executor is Codex during compatibility translation
- Preserve number types in tool parameter schemas during token counting requests
v8.0.7
2026-10-01 03:06:59 +08:00
Luis Pater
9e71c20d01 fix(codex): handle upstream stream disconnect before first payload as bad gateway
- Return Bad Gateway error when Codex upstream stream closes before emitting any payload
- Allow failover to subsequent credentials on premature stream disconnect before output
- Map HTTP 408 Request Timeout status to server_error in base error response handlers

Closes: #6247
2026-10-01 02:51:19 +08:00
Luis Pater
67cb32b6d3 fix(codex): determine tool integer normalization by target executor identity
- Base tool integer normalization checks strictly on target executor identity rather than protocol
- Add executor-aware translation helpers to pass target executor identity during request translation
- Ensure non-Codex executors normalize tool integer types for Codex clients regardless of protocol
2026-10-01 02:26:02 +08:00
Luis Pater
a8ffd5a843 fix(codex): skip tool parameter integer normalization for codex executor targets
- Skip normalizing tool parameter number types to integer when the target executor is Codex or Codex WebSocket
- Remove tool integer type normalization from schema cleanup in native Codex execution paths to preserve reserved tool schemas
- Apply tool integer type normalization only for non-Codex upstream targets with Codex client User-Agents

Closes: #6244
v8.0.6
2026-10-01 02:04:49 +08:00
Luis Pater
82f8e92b21 fix(executor): support negotiated ALPN protocols in uTLS client
- Select HTTP/2 or HTTP/1.1 transport dynamically based on TLS ALPN negotiation
- Route empty ALPN and HTTP/1.1 requests through a dedicated non-pooled transport reusing the handshaken connection
- Ensure uTLS connections are cleanly closed upon response completion or request failure

Closes: #6223
2026-10-01 00:47:24 +08:00
Luis Pater
e5b5a1cfca fix(kimi): reorder interleaved tool outputs in responses input
- Defer intervening non-tool messages until all batch tool outputs are emitted to keep outputs contiguous
- Apply responses input normalization across standard and streaming executor execution paths

Closes: #6231
v8.0.5
2026-09-30 23:39:28 +08:00
Luis Pater
4b4a444880 fix(claude): normalize boolean subschemas in tool parameter schemas
- Convert `true` boolean subschemas to empty object schemas `{}` for OpenAPI upstream compatibility
- Preserve boolean `false` schemas and boolean `additionalProperties` values

Closes: #6230
2026-09-30 23:20:47 +08:00
Luis Pater
bfa5aed4ea fix(home): defer plugin load marking and preempt failing config on retry
- Defer plugin load marking until status push finalization
- Allow home config worker to dequeue and apply the latest queued payload during retry loops

Closes: #6225
2026-09-30 22:53:57 +08:00
Supra4E8C
097511b81f fix(management): remove deprecated credential quota endpoints from v8 API 2026-09-30 22:52:07 +08:00
Luis Pater
71a5f1f6c5 fix(codex): normalize tool parameter number types to integer for codex clients
- Detect Codex client requests via User-Agent and convert target numeric parameters to integer types
- Support schemas across OpenAI functions, Claude input schema, Gemini declarations, and namespace tools
- Apply normalization during executor payload processing, multi-agent request translation, and WebSocket streaming

Closes: #6237
2026-09-30 22:27:18 +08:00
Luis Pater
f33f04d6c0 fix(codex): convert agent_message in compat mode without multi-agent optimization
- Enable multi-agent input rewriting when model compatibility mode is active, even if `optimize-multi-agent-v2` is disabled
- Ensure `agent_message` items are converted into portable user messages for third-party endpoints under API key configurations

Closes: #6233
2026-09-30 17:57:51 +08:00
Luis Pater
369df975ea fix(claude): map and disambiguate tool names in responses translation
- Map OpenAI Responses tool identities to valid Claude tool names within the 64-character limit
- Resolve naming collisions and truncate long tool names using deterministic SHA-256 hashes
- Maintain bidirectional tool mapping across declarations, tool choices, history, and response decoding

Closes: #6209
2026-09-30 12:33:25 +08:00
Luis Pater
6004ebdfdb fix(claude): fail open on unmapped oauth mcp tool aliases
- Forward unmapped Claude OAuth MCP tool aliases unchanged instead of returning an error
- Log a warning when no request-local tool match is found to prevent stream termination

Closes: #6208
2026-09-30 12:04:58 +08:00
Luis Pater
f1697119f6 fix(interactions): handle failure events in response translators and stream executor
- Translate `response.failed` and `interaction.failed` events across Claude, Gemini, OpenAI Chat, and Responses formats
- Lazily emit `interaction.created` in Devin executor to allow clean HTTP error status propagation on immediate

Closes: #6204
2026-09-30 11:35:55 +08:00
Luis Pater
81756a57e3 fix(auth): track auto-refresh job epochs and bound credential acquisition
- Track auto-refresh jobs with registration epochs to prevent stale or phantom pending states
- Enforce bounded timeouts for Antigravity token refresh and project discovery
- Manage Antigravity credits refresh tasks with epoch validation and lifecycle cancellation

Closes: #6199
2026-09-30 06:57:24 +08:00
Luis Pater
c8a2bfe8f5 feat(models): add gpt-6.1-sol model
- Register GPT-6.1 Sol model configuration with reasoning levels and instructions
2026-09-30 02:26:25 +08:00
Luis Pater
02548d6727 fix(auth): log warnings on auth persistence failures
- Log warning when credential persistence fails during registration, update, or refresh
- Add `auth_id` to log field ordering and quoted fields

Closes: #6197
2026-09-30 02:05:36 +08:00
Luis Pater
b7f321f2a1 feat(api): support request path overrides and image protocols in model execution
- Add `Path` field to model execution requests and plugin interceptor responses
- Propagate custom request paths through execution metadata
- Allow image models during execution when entry or exit protocol is `openai-image`

Closes: #6196
2026-09-29 22:44:33 +08:00
Luis Pater
fbc8e443f0 fix(claude): replay thinking block before tool use after web search result
- Insert the most recent thinking block between assistant web search tool results and subsequent tool use parts
- Prevent upstream rejection when tool use immediately follows server tool results

Closes: #6195
2026-09-29 21:51:04 +08:00
Luis Pater
a0cc065d4d fix(claude): distinguish claude-sonnet-5-5 from sonnet-5 in model checks
- Add `isClaudeSonnet55Model` helper and prevent Sonnet 5 matching on Sonnet 5.5 prefixes
- Include Claude Sonnet 5.5 in progress display checks

Closes: #6193
2026-09-29 21:21:58 +08:00
Luis Pater
cb9a0b5ce8 feat(thinking): support output_config.effort for enabled Claude thinking
- Preserve explicit `output_config.effort` when `thinking.type` is enabled without budget tokens
- Map output config effort to reasoning effort when translating Claude requests to OpenAI

Closes: #6183
2026-09-29 20:04:05 +08:00
Supra4E8C
a270e7b9e5 Merge branch 'sponsor/add-openlux' into dev 2026-09-29 15:44:23 +08:00
Supra4E8C
07c5dc0cda feat(readme): update OpenLux sponsorship links and promotional offer 2026-09-29 15:33:38 +08:00
Supra4E8C
743bbdfc1a feat(readme): update OpenLux sponsorship details and promotional offer 2026-09-29 15:29:54 +08:00
Supra4E8C
775a308f0d test(config): add test for DELETE operation preserving document presence 2026-09-29 15:20:43 +08:00
Luis Pater
93b683cc53 docs(readme): remove CyberPay sponsor 2026-09-29 12:56:02 +08:00
Luis Pater
dace3bb99f docs(agents): mark /v0/management endpoints as deprecated 2026-09-29 12:47:23 +08:00
Luis Pater
9a3b869f60 feat(models): add claude-sonnet-5-5 model
- Register Claude Sonnet 5.5 model configuration with thinking capabilities and context limits
2026-09-29 12:37:22 +08:00
Luis Pater
df2774ca18 feat(oauth): support per-channel model settings overrides
- Add `oauth-settings` configuration to override model capabilities such as `max-context-length`
- Implement sanitization, YAML preservation, and live reload diff detection for OAuth settings
- Apply OAuth model settings during model resolution and Codex model list responses

Closes: #6099
2026-09-29 11:43:51 +08:00
Luis Pater
d33f63f8e3 feat(logging): switch request ID generation to UUIDv7
- Generate UUIDv7 request IDs using crypto random source
- Add `ShortRequestID` helper to truncate IDs to 8 trailing characters in log output and filenames
- Update management log handlers to match log files using short request IDs
v8.0.4
2026-09-29 00:45:52 +08:00
Luis Pater
673e58d55c Merge pull request #6176 from router-for-me/home 2026-09-28 20:47:09 +08:00
hkfires
ac42accc88 fix(openai): use routed home model compatibility options 2026-09-28 20:40:10 +08:00
Luis Pater
e8156ec775 Merge pull request #6175 from magoz/fix/claude-oauth-tool-change-alias
fix(claude): remap MCP aliases in tool_addition/tool_removal blocks
2026-09-28 19:22:35 +08:00
hkfires
d3cd466ddb fix(codex): use resolved compat for multi-agent v2 2026-09-28 19:03:22 +08:00
hkfires
b9971ee3df feat(sdk): add Home credential capabilities and quota APIs
Use Home credential options as authoritative model capability
configuration for compat handling and prompt cache behavior.

Expose quota provider operations through the public plugin host API.
2026-09-28 19:03:21 +08:00
Luis Pater
59baf7314a feat(codex): extract and persist subscription plan type
- Extract `plan_type` from JWT claims and default missing values to `free`
- Include `plan_type` in token data, token storage, auth attributes, and file synthesis
- Ensure `plan_type` is maintained across token refresh flows
- Preserve empty map allocations during auth object cloning
2026-09-28 18:54:03 +08:00
magoz
958eeca719 fix(claude): remap MCP aliases in tool_addition/tool_removal blocks
- Rewrite `tool.name` of mid-conversation `tool_addition`/`tool_removal` blocks with a `tool_reference` to the same MCP alias as `tools[]`
- Rewrite `tool.definition.name` of inline `tool_definition` additions that redefine a declared custom tool
- Apply the same rewrite in the batched-edits and legacy remap paths
- Prevent upstream `references unknown tool` 400s for cloaked requests using mid-conversation tool changes

Closes: #6174
2026-09-28 10:12:12 +00:00
Luis Pater
5d8bb3d9b7 fix(codex): normalize empty function call arguments in responses requests
- Rewrite blank string `arguments` on `function_call` items to `{}` in OpenAI Responses requests
- Prevent upstream rejection of parameter-less tool calls requiring valid JSON arguments

Closes: #6173
2026-09-28 17:56:32 +08:00
Supra4E8C
b87ac8371c feat(readme): add OpenLux sponsorship information and logo 2026-09-28 17:15:43 +08:00
Luis Pater
48686ccc8f feat(config): preserve unknown nested fields as comments during v8 migration
- Traverse nested configuration paths to comment out unrecognized fields during v8 migration
- Remove deprecated Codex `identity-confuse` configuration option and request handling
- Clean up identity confuse mapping logic from Codex HTTP and WebSocket executors
2026-09-28 10:46:32 +08:00
Luis Pater
acdace936f fix(discovery): support bonded interfaces and deduplicate build warnings
- Include `bond` interface prefix in physical LAN interface detection
- Suppress repetitive discovery service spec build failure warnings until error message or configuration changes
v8.0.3
2026-09-28 08:19:03 +08:00
Luis Pater
04f88169ad fix(gemini): preserve thought signatures in interactions translation
- Preserve thought signatures across function calls, thought steps, and trailing empty text parts
- Track pending signatures and model turn context when constructing Gemini request contents
- Support extracting thought steps from response parts with thought signatures during response conversion

Closes: #6150
2026-09-28 07:22:09 +08:00
Luis Pater
0a45f25334 fix(translator): append trailing newlines to SSEEventData frames
- Add trailing blank-line terminator to frames created by `SSEEventData`
- Ensure concatenated SSE frames remain separable downstream

Closes: #6161
2026-09-28 06:49:46 +08:00
Luis Pater
4ad5bba756 fix(openai): prevent false positive namespace prefix matches in responses tools
- Update namespace qualification check to require an exact match or explicit delimiter prefix
- Prevent tools sharing a name prefix with a namespace from skipping qualification

Closes: #6160
2026-09-28 06:31:04 +08:00
Luis Pater
4b99d1d6f8 feat(openai): support quality parameter for xAI image requests
- Parse and pass `quality` in xAI image generation and edit requests
- Extract `quality` field from JSON payloads and multipart form data
- Include `quality` in the upstream xAI image request payload when provided

Closes: #6157
2026-09-28 06:22:38 +08:00
Luis Pater
2c27e61fe7 fix(meta): strip unsupported search_content_types from web search tools
- Add `SanitizeMetaWebSearchTools` to remove `search_content_types` from `web_search` tool definitions
- Support sanitizing nested tools within `namespace` tool definitions
- Apply web search tool sanitization during Meta request preparation

Closes: #6156
2026-09-27 22:54:19 +08:00
Luis Pater
01274e226e feat(config): warn on unrecognized sections during v8 migration
- Emit warnings when unrecognized configuration sections are commented out during v8 migration
- Mirror migration warnings directly to the console when file logging is active
- Provide a hook in the configuration package to customize migration warning dispatching

Closes: #6162
2026-09-27 22:36:35 +08:00