Model providers
OpenAI and DeepSeek share a Responses-based conversation-and-tool runner. Provider adapters handle endpoints, authentication, and request differences.
ResponsesRunner assembles history, instructions, and tools. ResponsesClient
handles HTTP and streamed response validation. Their boundary uses Responses
data contracts.
Configuration and selection
Provider definitions describe endpoints, credentials, and available model IDs. They are persisted on the server; credentials stay out of browser responses. Each thread selects a provider snapshot and model. Updating the catalog takes effect in an existing thread when that definition is selected again.
Change at a step boundary
The current request and its tools finish with captured settings. The next step uses the latest accepted selection. Thread history and identity stay in place; other conversations retain their own selections.
When configurations differ, replay preserves visible text and tool calls/results while omitting foreign provider-private items. Saving provider definitions does not persist conversations.
Implementation: responses.rs.