M3: OpenAI chat and responses codecs, provider, registry wiring

Adds both OpenAI codecs — chat completions and the newer responses API — plus the OpenAiProvider and registry wiring, so the same session can run against OpenAI in addition to Anthropic.
This commit is contained in:
2026-07-10 16:19:59 +02:00
parent d4a846f827
commit 607bd88ae3
6 changed files with 1097 additions and 1 deletions
+16 -1
View File
@@ -19,7 +19,7 @@ use harness_core::tool::ToolRegistry;
use harness_core::types::{
Message, MessageId, ModelRef, Part, PartBody, PartId, Session, SessionId,
};
use harness_providers::{AnthropicProvider, ProviderRegistry};
use harness_providers::{AnthropicProvider, OpenAiProvider, ProviderRegistry};
use tokio::task::JoinHandle;
use tokio_util::sync::CancellationToken;
@@ -122,6 +122,21 @@ impl EngineHandle {
{
providers.register(Arc::new(AnthropicProvider::new(key)));
}
if let Some(key) = config
.providers
.get("openai")
.and_then(|p| p.api_key.clone())
{
let provider = match config
.providers
.get("openai")
.and_then(|p| p.base_url.clone())
{
Some(base_url) => OpenAiProvider::with_base_url(key, base_url),
None => OpenAiProvider::new(key),
};
providers.register(Arc::new(provider));
}
let data_dir = dirs::data_dir()
.unwrap_or_else(std::env::temp_dir)