Commit Graph

4191 Commits

Author SHA1 Message Date
Luis Pater
68afd0d1b4 feat(codex): support action sources in Claude web search translation
- Extract web search result sources from `action.sources` in item and root payloads in addition to `results`

Closes: #5546
2026-10-05 06:40:32 +08:00
Luis Pater
13da3cee6d Merge pull request #6373 from WizisCool/docs/add-oh-my-cpa-usage-statistics
docs(readme): add Oh-My-CPA to usage statistics
2026-10-05 06:39:29 +08:00
Luis Pater
a4acc9f752 fix(antigravity): treat client disconnect after terminal stream chunk as success
- Track terminal chunks including finish reasons, stop messages, and completion events during streaming
- Commit replay settlements and publish observed usage instead of reporting stream failure when the client disconnects after a terminal chunk

Closes: #6376
v8.0.15
2026-10-05 06:25:53 +08:00
Luis Pater
97dd9eec62 fix(openai): report error on truncated stream missing finish_reason
- Track `finish_reason` presence across initial and streaming response chunks
- Return a terminal bad gateway error instead of `[DONE]` when upstream stream closes prematurely without a finish reason

Closes: #6371
2026-10-05 06:06:14 +08:00
Luis Pater
16d98881d4 feat(codex): preserve URL citations in OpenAI response translation
- Parse and map `url_citation` annotations to OpenAI message and delta annotations for both stream and non-stream responses
- Track emitted text rune offsets to calculate citation start and end indices accurately
- Deduplicate citations across streaming annotation events and message completion updates

Closes: #6361
v8.0.14
2026-10-05 05:35:53 +08:00
Luis Pater
4e4dede481 fix(antigravity): surface backend errors and support multi-line stream payloads
- Buffer and assemble multi-line or split JSON chunks until a valid JSON payload is formed
- Intercept upstream backend error objects during streaming and surface them as terminal errors with appropriate status codes

Closes: #6357
2026-10-05 04:32:35 +08:00
Luis Pater
d31b61cb87 fix(websockets): propagate upstream disconnect errors during session activation
- Track terminal connection errors on websocket session when upstream read loops fail or receive unexpected binary payloads
- Return recorded terminal errors immediately during session activation to prevent callers from blocking indefinitely after upstream disconnects
- Reset terminal error state when configuring new connections

Closes: #6354
2026-10-05 04:05:41 +08:00
Luis Pater
678a92578c feat(claude): preserve OAuth tool aliases across thread continuations
- Add bounded in-memory store to retain Claude OAuth tool alias mappings keyed by message ID
- Restore alias mappings for thread continuation requests omitting tool declarations, returning a request-scoped not found error when state is missing
- Record tool aliases on execution and streaming response completion

Closes: #6346
2026-10-04 23:18:38 +08:00
JUNZE
dfd7c638d6 docs(readme): add Oh-My-CPA to usage statistics 2026-10-04 22:46:44 +08:00
Luis Pater
5c959cb032 fix(claude): mark missing thread state error for client replay
- Treat Claude missing thread state 404 errors as client errors to bypass credential rotation and cooldown
- Inject `thread_not_found` error code into Claude error response details to signal client-side replay
- Support extracting upstream response bodies across error formatting and classification helpers

Closes: #6344
2026-10-04 21:40:10 +08:00
Luis Pater
26e5efbbdf fix(claude): reserve cache breakpoint for thread continuation
- Decrement `maxBlocks` when a `thread` field is present in payload to reserve a cache breakpoint for Anthropic thread continuation

Closes: #6338
2026-10-04 21:00:20 +08:00
Luis Pater
5d890405b5 fix(claude): keep system messages top level for terminal user turns
- Add `claudeMidConversationSystemMessagesAtEnd` to detect consecutive user messages ending the message array
- Append forwarded system blocks to top-level `system` payload instead of inserting mid-conversation message turns when trailing user turns are present

Closes: #6336
2026-10-04 20:32:07 +08:00
Luis Pater
c997cbb58a feat(httpwire): introduce error-aware response flushing helper
- Add `FlushResponse` to prefer error-aware flushing and unwrap wrapped response writers
- Bypass Gin's void `Flush` while maintaining header accounting via `WriteHeaderNow` to keep transport errors observable

Closes: #6332
2026-10-04 17:33:19 +08:00
Luis Pater
8a01bc022b feat(auth): introduce mutation locking and persistence delta merging
- Add `lockAuthMutation` and `lockAuthMutationContext` with context cancellation support for mutation gates and reload barriers
- Introduce `persistLocked` to unlock manager state during storage I/O and prevent blocking runtime operations
- Implement `mergeAuthSaveDelta` to merge store save changes while preserving concurrent edits

Closes: #6329
2026-10-04 15:14:16 +08:00
Luis Pater
1672be5d25 feat(registry): support custom model catalog sources and dynamic reload
- Add `CatalogSources` configuration to allow overriding general, Codex, and Devin catalog sources via URLs or absolute local file paths
- Centralize model catalog fetch, validation, and scheduled background updates in `catalogUpdater`
- Support dynamic catalog source updates and hot reloading during service runtime
- Update `--local-model` flag to use embedded models as defaults while respecting explicit overrides

Closes: #6319
Closes: #5024
2026-10-04 13:35:09 +08:00
Supra4E8C
8ef43e4df3 fix(readme): remove AxisNow sponsorship details from README files 2026-10-04 13:31:41 +08:00
Luis Pater
33ec5502c3 fix(claude): refine model version parsing for assistant prefill rejection
- Strip provider namespaces and prefix before evaluating model family
- Parse major and minor version numbers dynamically while ignoring snapshot dates
- Correctly identify unsupported assistant prefill models for Fable, Opus 5+, and Sonnet 4.6+

Closes: #5483
2026-10-04 05:50:40 +08:00
Luis Pater
cbc4cd5532 feat(interactions): support antigravity session continuation and model detail lookup
- Add `InteractionsSessionCache` to preserve Antigravity interaction continuations across tool call rounds
- Automatically restore and inject `previous_interaction_id` and `environment_id` in Gemini interactions executor
- Normalize Antigravity tool identity mappings in OpenAI responses translator
- Add `/v1/models/*model` endpoint to support retrieving individual model details

Closes: #5190
2026-10-04 04:23:31 +08:00
Luis Pater
868e137f6c feat(payload): introduce payload finalizer for protobuf and multipart requests
- Add `PayloadFinalizer` to apply configuration rules at the final serialization barrier
- Support decoding, modifying, and re-encoding Devin protobuf business fields
- Add multipart form-data payload normalization to JSON for media payload rules

Closes: #5067
2026-10-04 03:01:34 +08:00
sususu98
38a089ead3 Merge pull request #6330 from sususu98/feat/antigravity-account-model-entitlements
feat(antigravity): refresh per-account model entitlements safely
2026-10-03 22:26:50 +08:00
sususu
ad381435a1 fix(antigravity): coalesce probes and respect plugin model ownership
Check plugin model declarations without executing discovery. Share one per-account refresh worker across registration and periodic triggers, retaining one latest queued snapshot with its publication epoch. Add ownership, coalescing, and stale-publication regression tests.
2026-10-03 21:57:23 +08:00
sususu
9521fe29b2 fix(antigravity): preserve model lifecycle and cooldown state
Invalidate runtime auths before unregistering models to fence concurrent refreshes. Publish cached catalogs through state-preserving conditional replacement and add lifecycle regression tests.
2026-10-03 21:40:13 +08:00
sususu
7e857c375a feat(antigravity): refresh per-account model entitlements safely
Isolate account entitlement caches and add retry backoff, auth-change cancellation, and publication fencing.

Decouple refresh scheduling from startup and config updates, bound native and plugin probe concurrency, and cancel background probes on shutdown.

Preserve cooldown state and projection generation watermarks during conditional model replacement, with regression coverage.
2026-10-03 21:26:41 +08:00
Luis Pater
61a70dc687 feat(claude): adapt native messages JSON to SSE for non-stream translation
- Add `ClaudeMessagesJSONToSSE` adapter to convert native Claude message JSON payloads into synthetic SSE events
- Support non-stream Claude JSON responses in OpenAI chat completions and responses translators
- Preserve authoritative model from native responses in OpenAI responses format

Closes: #4815
2026-10-03 20:40:16 +08:00
Luis Pater
91c934f68b feat(responses): support local shell tool translation
- Map local shell tool declarations and tool choice to synthetic function calls
- Normalize shell call and output history items into chat completion tool messages
- Convert upstream tool calls back to `shell_call` output items in stream and non-stream responses
- Validate shell action arguments and handle invalid input errors

Closes: #4812
2026-10-03 20:21:28 +08:00
sususu98
0594a632d9 Merge pull request #6318 from router-for-me/feat/antigravity-caqs-signature-replay
feat(antigravity): support Claude 5.5 CAQS thinking signature replay
2026-10-03 17:42:56 +08:00
sususu
174248ca71 fix(antigravity): reject ambiguous CAQS signature wrappers 2026-10-03 17:40:47 +08:00
sususu
9b9c2bdf54 feat(antigravity): support Claude 5.5 CAQS thinking signature replay 2026-10-03 17:31:27 +08:00
sususu
8a945b3fb8 fix(antigravity): restore Claude 4.6 model definitions 2026-10-03 17:24:51 +08:00
Luis Pater
d7914afded fix(codex): expand integer field normalization mappings for tools
- Add integer field paths for memories, history, notes, web, and collaboration tool schemas
- Support nested property paths and union types in parameter schema normalization

Closes: #6255
v8.0.13
2026-10-03 17:01:12 +08:00
Luis Pater
2c1dcc7c8b fix(claude): include web search sources in codex request when search tool is present
- Include `web_search_call.action.sources` in Codex request `include` field when Claude web search tools are detected

Closes: #6312
2026-10-03 16:25:14 +08:00
Luis Pater
a3b77566ad fix(codex): publish main usage before image tool usage in execute
- Publish primary model usage prior to image tool usage during response execution

Closes: #6311
2026-10-03 16:14:51 +08:00
Luis Pater
ed4d972ef0 fix(responses): complete reasoning summary stream lifecycle events
- Emit `response.reasoning_summary_part.added` event on reasoning item initialization
- Include `item_id` and `summary_index` in reasoning summary text delta events
- Emit summary text done and part done events upon thought step completion
- Consolidate reasoning summaries into a single completed summary block

Closes #6309
2026-10-03 16:05:49 +08:00
Luis Pater
ea8ffd5f92 fix(devin): stream content early and defer thought stop for late signatures
- Allow early content streaming for OpenAI formats while preserving ordering behind queued tools
- Defer thought step termination and accumulate signature fragments for OpenAI Responses format
- Flush deferred reasoning step stops when closing open stream steps

Closes: #6306
2026-10-03 15:53:39 +08:00
Luis Pater
d4692663be fix(auth): snapshot auth before unlocking during registration and update
- Snapshot scheduler auth copy while holding mutex lock to prevent concurrent mutation race with `MarkResult`

Closes: #6300
2026-10-03 15:16:34 +08:00
Luis Pater
42d484f9a2 fix(claude): map request timeout status to timeout_error
- Map `http.StatusRequestTimeout` (408) to Claude `timeout_error` response type

Closes: #6298
2026-10-03 15:03:44 +08:00
sususu
6b037f614c fix(antigravity): use actual Claude 5.5 high model IDs 2026-10-03 14:41:09 +08:00
sususu
c575291ad3 fix(antigravity): align Claude 5.5 token limits with upstream catalog 2026-10-03 14:22:45 +08:00
sususu
e3abd9ae8e fix(antigravity): replace retired Claude 4.6 models with 5.5 2026-10-03 14:21:39 +08:00
Luis Pater
5dbce4f3fb perf(claude): prefilter JSON payloads before diagnostic walks
- Add ASCII pre-filter to skip expensive gjson traversals for title helper and 1h TTL checks
- Check raw bytes for target keywords before initiating full JSON walks
- Fall back to full inspection when printable ASCII Unicode escapes are detected

Closes: #6291
2026-10-03 10:48:07 +08:00
Luis Pater
2044a01f42 fix(codex): preserve web search sources in responses request include
- Retain `web_search_call.action.sources` alongside `reasoning.encrypted_content` in Codex request include field
- Avoid payload re-encoding when include array is already normalized

Closes: #6251
v8.0.12
2026-10-03 04:03:55 +08:00
Luis Pater
e6f6f26ad5 fix(claude): handle pause_turn stop reason in responses translation
- Map Claude `pause_turn` stop reason to incomplete status with null incomplete details
- Switch stop reason evaluation to normalized lowercase matching

Closes: #6250
2026-10-03 03:30:53 +08:00
Luis Pater
c163bae4bc fix(auth): preserve terminal unauthorized state and prevent unsafe refresh retry
- Avoid retrying Claude token refresh on ambiguous transport or decoding errors to protect single-use tokens
- Block selection and unschedule refresh for credentials when both access token is rejected and refresh encounters `invalid_grant`
- Prevent in-flight request completions or cooldown clears from reviving terminal unauthorized credentials
- Allow manual force refresh to bypass terminal unauthorized checks

Closes: #6288
2026-10-03 03:19:06 +08:00
Luis Pater
0fb50a18c3 feat(management): inject auth indexes into v8 api-keys config
- Synthesize and populate live `auth_index` attributes into V8 `api-keys` responses
- Strip transient `auth_index` and `auth-index` fields from incoming update payloads and root nodes before persistence
- Ensure `auth_index` keys are omitted during V8 config transformations

Closes: #6287
2026-10-03 02:32:15 +08:00
Luis Pater
6d57ac9087 fix(claude): pin session date in cloaked reminder to prevent prompt cache invalidation
- Pin local date to continuity context on the first request of a session
- Reuse pinned session date during cloaked date injection across execute and stream flows
- Prevent midnight calendar date flips from invalidating conversation prompt cache prefixes

Closes: #6282
2026-10-03 00:28:35 +08:00
Luis Pater
d306f2c56d fix(codex): retain template freeform apply_patch capability by default
- Retain `freeform` apply_patch tool type for native template models when `enable-apply-patch` is false
- Update client configuration documentation for `client.codex.enable-apply-patch`

Closes: #6286
2026-10-03 00:01:42 +08:00
Luis Pater
8348923a17 feat(pluginhost): add host routing reset cooldown callback
- Add `MethodHostRoutingResetCooldown` RPC callback to plugin ABI and host dispatcher
- Introduce `HostRoutingResetCooldownRequest` and `HostRoutingResetCooldownResponse` in plugin API
- Reset credential quota and cooldown routing state in memory without persisting to token files

Closes: #6274
2026-10-02 23:32:32 +08:00
Luis Pater
e2bff0107b Merge pull request #6285 from sususu98/feat/antigravity-connection-debug-trace
feat(antigravity): trace upstream connection reuse in debug logs
v8.0.11
2026-10-02 22:42:50 +08:00
hkfires
3be5fa44f9 fix(config): support historical v8 aliases
Accept historical v8 config paths and request bodies while saving the
latest canonical layout. Preserve comments on scalar updates and keep v0
saves from migrating legacy-only files unnecessarily.
2026-10-02 22:36:37 +08:00
hkfires
52d5507dd3 feat(config): add shared upstream provider settings
Move shared Codex, Claude, and xAI provider options under upstream so
they apply consistently to OAuth and API-key credentials. Migrate
historical OAuth paths, preserve OAuth-only header scope, and expose the
new upstream management API path.
2026-10-02 22:36:35 +08:00