Commit Graph

4092 Commits

Author SHA1 Message Date
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
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
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
Luis Pater
3de5709db1 fix(claude): preserve tool result adjacency for Antigravity requests
- Split function response parts from mixed user turns in Gemini payloads
- Hoist function response turns ahead of intervening text reminders following model calls
- Apply function response turn splitting and adjacent user turn merging for Claude models

Closes: #6129
2026-09-26 21:22:41 +08:00
Luis Pater
b4e5cc019d fix(thinking): log effective effort and baseline for native Responses requests
- Use Codex usage config extraction to log the effective thinking effort
- Include baseline level in logged fields when the top-level mode is configured
- Guard config extraction and logging behind a debug log level check
2026-09-26 15:27:51 +08:00
Luis Pater
12245ad388 fix(thinking): log baseline configuration for native Responses requests
- Handle unchanged native Responses payloads before user-defined model processing
- Extract and log original and processed thinking configuration when present
- Return payload unmodified without rewriting or re-validating
2026-09-26 14:17:20 +08:00
Luis Pater
ed980be34b fix(auth): preserve resolved model capabilities and configuration update support
- Attach resolved execution model info during execution and token counting even when restoring execution models
- Propagate configuration update support to resolved Home dispatch model info
- Track modifications to configuration updates across plugin normalizers in the translation pipeline
- Mark configuration update support for eligible Codex models in the registry
v7.3.18
2026-09-26 13:57:06 +08:00
sususu98
960be012c2 fix(auth): unschedule disabled invalid_grant credentials and apply exponential backoff for enabled invalid_grant (#6123)
- Permanently unschedule credentials that are disabled and encounter invalid_grant to avoid high-frequency refresh loops.
- Preserve expected token refresh behavior for normal disabled credentials without invalid_grant failures.
- Apply exponential backoff starting at 1m up to 30m when enabled credentials encounter invalid_grant to allow CAPTCHA/checkpoint recovery.
- Add regression tests covering disabled invalid_grant unscheduling and exponential backoff retry cycles.
2026-09-25 18:12:49 +08:00
Luis Pater
4332048dda fix(claude): apply cloaking by default for direct Messages OAuth requests
- Remove direct Messages passthrough bypass for unconfirmed OAuth credentials
- Ensure standard cache control handling and CLI fingerprinting apply upstream
- Support detection for Claude Code 2.1.280 title helper payload shape

Closes: #6120
2026-09-25 12:38:18 +08:00
sususu
58461c8f47 fix(auth): unschedule disabled invalid_grant credentials and apply exponential backoff for enabled invalid_grant
- Permanently unschedule credentials that are disabled and encounter invalid_grant to avoid high-frequency refresh loops.
- Preserve expected token refresh behavior for normal disabled credentials without invalid_grant failures.
- Apply exponential backoff starting at 1m up to 30m when enabled credentials encounter invalid_grant to allow CAPTCHA/checkpoint recovery.
- Add regression tests covering disabled invalid_grant unscheduling and exponential backoff retry cycles.
2026-09-25 12:03:43 +08:00
Luis Pater
5530cbd2a5 fix(auth): preserve attributes and path across plugin refreshes
- Merge existing auth attributes and preserve file path metadata across plugin refreshes
- Avoid overwriting existing source and path attributes during auth data conversion
- Retry file stat during atomic replace to prevent premature removal of known auth files

Closes: #6119
2026-09-25 11:55:21 +08:00
Luis Pater
60325f472a fix(devin): ensure swe-1-6-slow is preserved as a builtin model
- Add static and builtin model definition for `devin/swe-1-6-slow`
- Inject builtin models into Devin catalog retrieval, lookup, and dynamic updates

Closes: #6111
2026-09-25 03:32:53 +08:00
Luis Pater
9bdde54b59 fix(meta): fix client id header and preserve subscription metadata
- Fix malformed `X-Client-Id` header and ensure it is applied to upstream requests
- Preserve subscription metadata during OAuth token creation and token refreshes
- Support dynamic retry-after for 404 responses and shorten default Meta 404 cooldown

Closes: #6117
v7.3.17
2026-09-25 03:05:24 +08:00
Luis Pater
1dffddf4ac fix(session): avoid rescanning large payloads during session extraction
- Introduce `sessionObject` to index top-level JSON fields once for session key lookups
- Prevent repeated rescans of large message payloads when probing missing candidate keys
- Support duplicate top-level keys when resolving nested paths

Closes: #6114
2026-09-25 02:06:50 +08:00
Luis Pater
c9a06ba6f2 fix(interceptors): avoid cloning request body for read-only interceptors
- Share request payload reference during session identity enrichment when original request is unset
- Avoid cloning request payload when interceptors do not mutate the body
- Pass request body directly to handler and conductor interceptors

Closes: #6101
2026-09-25 00:34:17 +08:00
Luis Pater
74c1ebd37f fix(registry): keep request context active until response body is read
- Postpone request context cancellation until after reading and closing the response body
- Ensure response body is closed and context is canceled across all error paths

Closes: #6095
2026-09-24 23:50:30 +08:00
Luis Pater
759c57c261 fix(api): immediately close connections on stop and guard state access
- Switch HTTP server stop from graceful shutdown to immediate close to prevent hanging on active requests
- Guard listeners and configuration access with dedicated mutexes
- Instantiate service shutdown context with a fresh timeout deadline upon exit

Closes: #6094
2026-09-24 23:31:51 +08:00
sususu
377747b8b6 fix(registry,cliproxy): set xai owned_by for Devin grok models and align Antigravity web search tests
- Map Devin grok models to xai owned_by in catalog and fetch_devin_models tool
- Update Antigravity fetched capability test to reflect gemini-pro-agent native web search support
- Fix formatting in test fixtures
2026-09-24 22:23:18 +08:00
sususu
c7f358d4d4 fix(executor,auth): support Session_id header in Antigravity replay and remove redundant stream chunk logging 2026-09-24 20:54:05 +08:00
Chén Mù
75f2d018cc Merge pull request #6107 from sususu98/fix/stream-rewrite-log-noise
fix(auth,translator): reduce stream model rewrite log noise and prevent empty parts on unsigned text
2026-09-24 19:14:50 +08:00
sususu
107d7f76c9 fix(translator,auth): avoid synthetic bypass on unsigned text parts and reduce stream rewrite log noise
- In gemini_openai-responses_request.go, do not attach 'skip_thought_signature_validator' to visibleText or thought parts when there is no genuine signature to replay.
- In response_model_rewriter.go, track rewritten model paths per stream to emit a single start debug log and a final summary upon stream completion, avoiding hot-path per-chunk log flooding.
2026-09-24 18:59:13 +08:00
Chén Mù
8222e328c0 Enhance logging and improve thought signature handling (#6106)
* fix(gemini): suppress repeated thoughtSignature sanitizations and improve logging

* fix(executor): enhance logging for antigravity replay context hash rejections and clean up request struct formatting

* fix(executor): enhance context hash rejection logging and improve request index handling
fix(signature): distinguish detected providers in thought signature sanitization logs
fix(translator): update thought signature handling in OpenAI responses conversion
2026-09-24 18:55:40 +08:00
sususu
75b854eb2e fix(translator): sanitize tool names for Claude and inject fallback schema for parameterless tools 2026-09-24 15:44:07 +08:00
sususu98
f7c738dad3 fix(claude): align 2.1.280 fingerprint and thinking visibility (#6096)
* fix(claude): align Opus 5.5 cloak and preserve native CLI hints

* fix(claude): recognize the 2.1.280 Haiku title helper

The native title request now appends server-side fallback, fallback credit,
and cache diagnosis after the structured-output beta. Keep the helper
allowlist exact so this sequence passes through without cloaking.

* fix(claude): align thinking visibility and Messages passthrough

* fix(claude): preserve thinking visibility through compatibility paths

* fix(claude): harden OAuth beta, session alignment, and 2.1.280 helper headers
2026-09-24 15:26:39 +08:00
Luis Pater
dd3b657b5d fix(codex): use resolved base model for routing hint
- Pass resolved `baseModel` directly to `applyCodexRoutingHint` instead of reading model from the upstream body
- Ensure the routing hint header accurately reflects the resolved model across HTTP and WebSocket executions
2026-09-24 13:02:16 +08:00
Luis Pater
0876e7f043 Merge commit 'refs/pull/6090/head' of github.com:router-for-me/CLIProxyAPI into dev 2026-09-24 12:49:55 +08:00
Luis Pater
93cccc6b28 Merge pull request #6092 from router-for-me/xai
Enhance XAI response sanitization and reasoning support
2026-09-24 12:31:07 +08:00