Commit Graph

4116 Commits

Author SHA1 Message Date
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
Luis Pater
5756d76ef3 fix(pluginhost): preserve disabled state in host auth callbacks
- Parse `disabled` field from auth file metadata when listing and registering auth files
- Update auth entry status to disabled when `disabled` flag is set to true
- Generalize boolean parsing helper to support common boolean metadata fields

Closes: #6153
2026-09-27 22:09:13 +08:00
Luis Pater
4a2c81864f fix(config): preserve unknown legacy sections as comments during v8 migration
- Retain obsolete and unknown root sections as comments instead of dropping them during v8 migration
- Defer removal of deprecated legacy blocks so they can be preserved as comments during layout normalization
v8.0.2
2026-09-27 20:17:03 +08:00
Luis Pater
6c385e6069 fix(config): drop obsolete legacy keys during v8 migration
- Remove obsolete `home` and `enable-gemini-cli-endpoint` root keys when migrating configuration to version 8
v8.0.1
2026-09-27 19:57:28 +08:00
Luis Pater
31f4cfab3f feat: migrate CLIProxyAPI to version 8 v8.0.0 2026-09-27 14:42:26 +08:00
Luis Pater
40d4b1a454 Merge pull request #6154 from router-for-me/v8
Add V8 configuration API and OAuth routes
2026-09-27 14:31:40 +08:00
hkfires
b1a33b80dc docs: prune obsolete management notes 2026-09-27 14:22:32 +08:00
hkfires
9a0502c87e feat(api): use query params for v8 oauth routes 2026-09-27 14:16:28 +08:00
hkfires
d9922f0589 feat(config): add v8 configuration API
Introduce the v8 management configuration tree with migration-aware reads and
writes, grouped upstream API-key providers, and independent v8 operational
routes.

Preserve legacy configuration compatibility while ensuring successful v8 writes
migrate layouts, redact JSON TURN secrets, and keep OAuth-only provider
settings from affecting API-key credentials.
2026-09-27 14:16:27 +08:00
Luis Pater
ef9e71201e feat(tui): support remote management base URL for client mode
- Add `base-url` to `remote-management` configuration and `-management-base-url` command-line flag
- Resolve management API base URL with priority given to CLI flag over config file
- Update TUI client and app initialization to support custom remote HTTP/HTTPS endpoints
- Include `remote-management.base-url` in configuration diff watcher checks

Closes: #6144
v7.3.20
2026-09-27 10:53:35 +08:00
Luis Pater
6dea3dfa13 fix(antigravity): extract and apply reasoning summary config for OpenAI responses
- Use `ExtractSummaryConfig` to parse summary configuration from OpenAI response payloads
- Default to enabled auto summaries when reasoning effort is set without explicit summary visibility
- Apply the resolved summary configuration directly to Antigravity translations

Closes: #6143
v7.3.19
2026-09-27 02:35:18 +08:00
Luis Pater
fc2c98d1ca feat(runtime): enhance Devin model aggregation and UID normalization
- Implement `splitDevinUID` for consistent UID splitting and effort extraction.
- Update model aggregation to handle thinking levels and merge variants.
- Refine display name cleaning logic to remove redundant suffixes.
- Adjust Devin catalog integration to exclude exposed thinking variants.
- Normalize and sort thinking levels with an extended rank scheme.

Closes: #6141
2026-09-27 02:03:55 +08:00
Luis Pater
be4b28f165 feat(codex): support service tier in OpenAI request translation
- Parse and normalize `service_tier` from incoming OpenAI chat completion requests
- Map `fast` and `priority` to `priority`, and preserve `ultrafast`
- Omit absent, default, or unsupported service tier values

Closes: #6138
2026-09-26 23:22:17 +08:00
Luis Pater
3b2882b72e fix(codex): strip non-standard multi-agent metadata for compat models
- Pass compat mode flag to multi-agent v2 input rewriting
- Proactively remove `author`, `recipient`, and internal passthrough metadata for compat models
- Allow stripping non-standard metadata even when multi-agent v2 optimization is disabled

Closes: #6136
2026-09-26 22:51:47 +08:00
Luis Pater
6cd86fb272 feat(auth): support terminal rejection in plugin scheduler
- Add reject flags and reason fields to `SchedulerPickResponse` with snake_case JSON unmarshaling support
- Terminate candidate selection with an auth error when scheduler rejection is flagged
- Normalize rejection response with default error code and reason in the plugin host

Closes: #6130
2026-09-26 21:50:02 +08:00