Add OpenAI/LiteLLM provider support with settings UI

- Add openai/ provider module with translator, client, convert, request/response translators
- Add shared provider/ types (ConversationMessage, MessageRole, ProviderConfig enum)
- Wire OpenAI-compatible provider dispatch alongside Bedrock in response_stream.rs
- Add ai.openai.* settings (enabled, base_url, api_key, model, models)
- Add OpenAI/LiteLLM settings page with model fetch, picker, and config UI
- Extend model menu items and llms.rs to surface LiteLLM models
- Update WARP.md with OpenAI provider architecture docs
This commit is contained in:
Ryan Ward
2026-06-17 14:14:40 -05:00
parent 59cfd0e2f5
commit 5ea378a38d
32 changed files with 2442 additions and 137 deletions
+8 -2
View File
@@ -270,7 +270,10 @@ async fn test_classify_multiple_sequential_calls() {
("git status", InputCategory::Shell),
("what does this error mean?", InputCategory::AgentPrompt),
("npm install express", InputCategory::Shell),
("refactor this to use async/await", InputCategory::AgentPrompt),
(
"refactor this to use async/await",
InputCategory::AgentPrompt,
),
];
for (input, expected_category) in inputs {
@@ -286,7 +289,10 @@ async fn test_classify_multiple_sequential_calls() {
.await
.expect("classification failed");
println!("\"{input}\" -> {:?} (confidence: {:.2})", result.category, result.confidence);
println!(
"\"{input}\" -> {:?} (confidence: {:.2})",
result.category, result.confidence
);
assert_eq!(
result.category, expected_category,
"expected {expected_category:?} for \"{input}\", got {:?}",