- Introduce `promoteOpenAIResponsesReasoningTextToSummary` to move `reasoning_text` parts from content to summary when the summary is empty.
- Clear `reasoning.content` to comply with Codex schema constraints (`maxItems: 0`).
- Implement safeguards for handling cleartext reasoning, preserving valid encrypted content, and stripping invalid `encrypted_content`.
- Add comprehensive tests to validate behavior for promoting reasoning texts, preserving existing summaries, and ensuring sanitization rules.
Closes: #5825
- Introduce logic to convert orphaned or unpaired `function_call_output` into user text instead of mismatched tool responses.
- Add `buildOpenAIResponsesStandaloneToolOutputTextParts` and `appendStandaloneResponsesToolOutputAsUser` helpers for managing orphaned outputs.
- Update OpenAI, Gemini, and Antigravity translators to ensure unmatched tool outputs are surfaced correctly.
- Add comprehensive test cases for both Gemini and OpenAI translator workflows to validate behavior for orphan function outputs and explicit call IDs.
Closes: #5831
- Introduce `isTransientTransportError` to identify transient transport errors such as TLS handshake, DNS, and connection resets.
- Extend retry logic to handle these errors without enforcing credential cooldown.
- Add new constants, such as `ErrorCodeTransientTransport`, to categorize and manage these errors.
- Refactor `conductor_selection` to distinguish request-retry round errors.
- Add comprehensive tests covering transport retries, cooldown behavior, and transient error handling.
Closes: #5829
- Introduce `sanitizeGeminiInteractionsUnsupportedInputIDs` to remove `id` fields from Gemini interactions `input` and `content` items.
- Update execution logic to apply the sanitization process before upstreaming payloads.
- Add tests to ensure payloads are correctly sanitized and validate `call_id` pairing for Gemini interactions.
Closes: #5828
- Add tests to verify that runtime hooks, auth modifications, and related updates do not block on unrelated operations such as antigravity probes or plugin virtual models.
- Introduce detailed scenarios, e.g., stale disables, batch operations, and conflict handling during concurrent auth updates.
- Refactor locking mechanisms to avoid unnecessary blocking during hooks and model registrations.
Fixed: #5813Closes: #5773
- Add `ForcedProvider` and `AuthID` fields to `HostModelExecutionRequest` and `ModelExecutionRequest`.
- Pin credentials via `WithPinnedAuthID` and forward forced provider options during model execution and streaming.
- Forward forced provider and auth ID from plugin host callbacks to model execution handlers.
Closes: #5814
- Verify observed compaction response replay and retention across subsequent turns.
- Test plugin route overrides, provider auth pinning, and home runtime auth handling during compaction.
Closes: #5811
- Add `Error.Error`, `Error.StatusCode`, `NewError`, and `NewErrorEnvelope` helpers in `sdk/pluginabi`.
- Support extracting and forwarding HTTP status codes in Go plugin executor examples and generator script.
- Document plugin executor error handling and client HTTP status mapping conventions.
Closes: #5809
- Ensure `methodBytes` and `request` are kept alive across dynamic library invocation on Windows to prevent premature garbage collection.
Closes: #5807
Load scan filters without full config normalization, honor --timeout
exactly, stop argv pre-scan at --, restart ads when interface indexes
change, and reject UDP DNS-SD service types.
Extract parseDevinManualPaste for headless and loopback login, return
access_denied (and CSRF mismatches) instead of an unrecognized-format
error, collapse authorization URL query construction, and lock the
headless URL shape plus paste edge cases in tests.
Empty --config now resolves to the working-directory config.yaml, and
link-local fallback hostnames are restricted to DNS-safe labels before
they are printed.
Skip plugin bootstrap for legacy --discover/--discover-json so logrus
cannot prefix JSON stdout, and let CLI/config include lists scan
non-default adapters such as docker0.
- Add `stream-bootstrap-timeout` configuration (defaulting to 0/unlimited, recommended 20s behind reverse proxies) to bound how long early handshake or trickled events may hold response headers.
- Release stream buffering into normal in-stream delivery once the time budget is exhausted on both SSE and WebSocket executors.
- Deliver post-timeout overload and status-bearing errors in-stream rather than triggering credential failover, preventing latency doubling on long reasoning turns.
- Provide thread-safe mock clock test harness and comprehensive unit tests covering timeout release, unlimited default, disabled ceilings, and post-timeout error delivery.
- Convert standalone or orphan tool outputs without matching tool calls into plain user text.
- Synthesize error tool results for dangling tool calls before user turns or assistant prefill checks.
- Enforce tool results to lead user messages and warn on unmapped items or invariant violations.
Closes: #5805
- Introduce `SetStringWithoutHTMLEscape` to prevent escaping of HTML characters (`<`, `>`, `&`) in tool call arguments and argument deltas across translators.
- Handle sequential tool calls in Devin executor that share the same stream index but have distinct tool call IDs.
Advertise _ai-gateway._tcp with API-protocol DNS-SD subtypes, refresh
on address changes, uniquify colliding instance names, and filter
discovery to physical LAN interfaces.
- Normalize responses named and custom tool choices to chat completions function format.
- Resolve namespaced and canonical tool names for tool choice.
Closes: #5794