mirror of
https://github.com/openai/codex.git
synced 2026-11-07 08:34:29 +00:00
Add an Amazon Bedrock Runtime provider (#38470)
## What changed - Add the built-in `amazon-bedrock-runtime` provider for regional `bedrock-runtime` OpenAI-compatible endpoints. - Use endpoint-specific SigV4 service configuration while preserving bearer token auth and per-provider AWS profile, region, and transport overrides. - Provide global and US cross-region GPT-5.6 model variants, prefer global routing for fallback and background tasks, and disable unsupported web search. ## Testing - Cover provider configuration and capabilities, endpoint and auth selection, runtime catalog ordering, model fallback, and web search omission. GitOrigin-RevId: d158ab74a5768e1b4c61063365a0c06735313322
This commit is contained in:
1 parent
3711943d11
commit
d5e256ceb2
15 files changed
+643
-55
No files matched your search
@@ -62,3 +62,33 @@ async fn read_amazon_bedrock_provider_capabilities() -> Result<()> {
|
||||
assert_eq!(received, expected);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn read_amazon_bedrock_runtime_provider_capabilities() -> Result<()> {
|
||||
let codex_home = TempDir::new()?;
|
||||
std::fs::write(
|
||||
codex_home.path().join("config.toml"),
|
||||
r#"model_provider = "amazon-bedrock-runtime"
|
||||
"#,
|
||||
)?;
|
||||
let mut mcp = TestAppServer::builder()
|
||||
.with_codex_home(codex_home.path())
|
||||
.build_initialized_with_timeout(DEFAULT_TIMEOUT)
|
||||
.await?;
|
||||
|
||||
let request_id = mcp
|
||||
.send_model_provider_capabilities_read_request(ModelProviderCapabilitiesReadParams {})
|
||||
.await?;
|
||||
let received: ModelProviderCapabilitiesReadResponse =
|
||||
timeout(DEFAULT_TIMEOUT, mcp.read_response(request_id)).await??;
|
||||
|
||||
assert_eq!(
|
||||
received,
|
||||
ModelProviderCapabilitiesReadResponse {
|
||||
namespace_tools: true,
|
||||
image_generation: false,
|
||||
web_search: false,
|
||||
}
|
||||
);
|
||||
Ok(())
|
||||
}
|
||||
@@ -267,6 +267,37 @@ async fn thread_start_provider_model_fallback_uses_bedrock_static_catalog() -> R
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn thread_start_bedrock_runtime_prefers_global_cross_region_models() -> Result<()> {
|
||||
let codex_home = TempDir::new()?;
|
||||
std::fs::write(
|
||||
codex_home.path().join("config.toml"),
|
||||
r#"model_provider = "amazon-bedrock-runtime"
|
||||
"#,
|
||||
)?;
|
||||
let mut mcp = TestAppServer::builder()
|
||||
.with_codex_home(codex_home.path())
|
||||
.build_initialized()
|
||||
.await?;
|
||||
|
||||
for model in ["global.openai.gpt-5.6-sol", "us.openai.gpt-5.6-sol"] {
|
||||
let response =
|
||||
start_thread_with_model(&mut mcp, model, /*allow_provider_model_fallback*/ true)
|
||||
.await?;
|
||||
assert_eq!(response.model, model);
|
||||
}
|
||||
|
||||
let response = start_thread_with_model(
|
||||
&mut mcp,
|
||||
"openai.gpt-5.6-sol",
|
||||
/*allow_provider_model_fallback*/ true,
|
||||
)
|
||||
.await?;
|
||||
assert_eq!(response.model, "global.openai.gpt-5.6-sol");
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn thread_start_provider_model_fallback_ignores_dynamic_catalog() -> Result<()> {
|
||||
let server = create_mock_responses_server_repeating_assistant("Done").await;
|
||||
|
||||
Reference in new issue
Block a user