Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions codex-rs/app-server/tests/suite/v2/thread_start.rs
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ model = "gpt-5.4-mini"
})
.await?;

assert_eq!(response.model, "openai.gpt-6-sol");
assert_eq!(response.model, "openai.gpt-6.1-sol");
Ok(())
}

Expand Down Expand Up @@ -245,6 +245,7 @@ async fn thread_start_provider_model_fallback_uses_bedrock_static_catalog() -> R
)
.await?;
for model in [
"openai.gpt-6.1-sol",
"openai.gpt-6-sol",
"openai.gpt-6-luna",
"openai.gpt-5.6-sol",
Expand Down Expand Up @@ -273,7 +274,7 @@ async fn thread_start_provider_model_fallback_uses_bedrock_static_catalog() -> R
supported_with_fallback.model,
unsupported_without_fallback.model,
],
vec!["openai.gpt-6-sol", "openai.gpt-5.5", "gpt-5.4-mini"]
vec!["openai.gpt-6.1-sol", "openai.gpt-5.5", "gpt-5.4-mini"]
);
Ok(())
}
Expand All @@ -292,6 +293,8 @@ async fn thread_start_bedrock_runtime_prefers_global_cross_region_models() -> Re
.await?;

for model in [
"global.openai.gpt-6.1-sol",
"us.openai.gpt-6.1-sol",
"global.openai.gpt-6-sol",
"us.openai.gpt-6-sol",
"global.openai.gpt-6-luna",
Expand All @@ -311,7 +314,7 @@ async fn thread_start_bedrock_runtime_prefers_global_cross_region_models() -> Re
/*allow_provider_model_fallback*/ true,
)
.await?;
assert_eq!(response.model, "global.openai.gpt-6-sol");
assert_eq!(response.model, "global.openai.gpt-6.1-sol");

Ok(())
}
Expand Down
1 change: 1 addition & 0 deletions codex-rs/model-provider-info/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ const AMAZON_BEDROCK_RUNTIME_PROVIDER_NAME: &str = "Amazon Bedrock Runtime";
pub const AMAZON_BEDROCK_RUNTIME_PROVIDER_ID: &str = "amazon-bedrock-runtime";
pub const AMAZON_BEDROCK_GPT_5_5_MODEL_ID: &str = "openai.gpt-5.5";
pub const AMAZON_BEDROCK_GPT_5_6_SOL_MODEL_ID: &str = "openai.gpt-5.6-sol";
pub const AMAZON_BEDROCK_GPT_6_1_SOL_MODEL_ID: &str = "openai.gpt-6.1-sol";
pub const AMAZON_BEDROCK_GPT_6_SOL_MODEL_ID: &str = "openai.gpt-6-sol";
pub const AMAZON_BEDROCK_GPT_6_LUNA_MODEL_ID: &str = "openai.gpt-6-luna";
pub const AMAZON_BEDROCK_GPT_6_ASTRA_MODEL_ID: &str = "openai.gpt-6-astra";
Expand Down
51 changes: 36 additions & 15 deletions codex-rs/model-provider/src/amazon_bedrock/catalog.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ use codex_model_provider_info::AMAZON_BEDROCK_GPT_5_5_MODEL_ID;
use codex_model_provider_info::AMAZON_BEDROCK_GPT_5_6_LUNA_MODEL_ID;
use codex_model_provider_info::AMAZON_BEDROCK_GPT_5_6_SOL_MODEL_ID;
use codex_model_provider_info::AMAZON_BEDROCK_GPT_5_6_TERRA_MODEL_ID;
use codex_model_provider_info::AMAZON_BEDROCK_GPT_6_1_SOL_MODEL_ID;
use codex_model_provider_info::AMAZON_BEDROCK_GPT_6_ASTRA_MODEL_ID;
use codex_model_provider_info::AMAZON_BEDROCK_GPT_6_LUNA_MODEL_ID;
use codex_model_provider_info::AMAZON_BEDROCK_GPT_6_SOL_MODEL_ID;
Expand All @@ -17,6 +18,7 @@ const GPT_5_BEDROCK_CONTEXT_WINDOW: i64 = 272_000;
const GPT_5_6_SOL_OPENAI_MODEL_ID: &str = "gpt-5.6-sol";
const GPT_5_6_TERRA_OPENAI_MODEL_ID: &str = "gpt-5.6-terra";
const GPT_5_6_LUNA_OPENAI_MODEL_ID: &str = "gpt-5.6-luna";
const GPT_6_1_SOL_OPENAI_MODEL_ID: &str = "gpt-6.1-sol";
const GPT_6_SOL_OPENAI_MODEL_ID: &str = "gpt-6-sol";
const GPT_6_LUNA_OPENAI_MODEL_ID: &str = "gpt-6-luna";
const GPT_6_ASTRA_OPENAI_MODEL_ID: &str = "gpt-6-astra";
Expand All @@ -26,9 +28,9 @@ pub(crate) fn static_model_catalog() -> ModelsResponse {
normalize_bedrock_catalog(ModelsResponse {
models: vec![
bedrock_model(
bundled_openai_model(GPT_6_SOL_OPENAI_MODEL_ID),
AMAZON_BEDROCK_GPT_6_SOL_MODEL_ID,
"GPT-6 Sol",
bundled_openai_model(GPT_6_1_SOL_OPENAI_MODEL_ID),
AMAZON_BEDROCK_GPT_6_1_SOL_MODEL_ID,
"GPT-6.1 Sol",
/*priority*/ 0,
),
bedrock_model(
Expand All @@ -37,35 +39,41 @@ pub(crate) fn static_model_catalog() -> ModelsResponse {
"GPT-6-Astra",
/*priority*/ 1,
),
bedrock_model(
bundled_openai_model(GPT_6_SOL_OPENAI_MODEL_ID),
AMAZON_BEDROCK_GPT_6_SOL_MODEL_ID,
"GPT-6 Sol",
/*priority*/ 2,
),
bedrock_model(
bundled_openai_model(GPT_6_LUNA_OPENAI_MODEL_ID),
AMAZON_BEDROCK_GPT_6_LUNA_MODEL_ID,
"GPT-6 Luna",
/*priority*/ 2,
/*priority*/ 3,
),
bedrock_model(
bundled_openai_model(GPT_5_6_SOL_OPENAI_MODEL_ID),
AMAZON_BEDROCK_GPT_5_6_SOL_MODEL_ID,
"GPT-5.6 Sol",
/*priority*/ 3,
/*priority*/ 4,
),
bedrock_model(
bundled_openai_model(GPT_5_6_TERRA_OPENAI_MODEL_ID),
AMAZON_BEDROCK_GPT_5_6_TERRA_MODEL_ID,
"GPT-5.6 Terra",
/*priority*/ 4,
/*priority*/ 5,
),
bedrock_model(
bundled_openai_model(GPT_5_6_LUNA_OPENAI_MODEL_ID),
AMAZON_BEDROCK_GPT_5_6_LUNA_MODEL_ID,
"GPT-5.6 Luna",
/*priority*/ 5,
/*priority*/ 6,
),
gpt_5_bedrock_model(
GPT_5_5_OPENAI_MODEL_ID,
AMAZON_BEDROCK_GPT_5_5_MODEL_ID,
"GPT-5.5",
/*priority*/ 6,
/*priority*/ 7,
),
],
})
Expand Down Expand Up @@ -161,8 +169,9 @@ mod tests {
.map(|model| model.slug.as_str())
.collect::<Vec<_>>(),
vec![
AMAZON_BEDROCK_GPT_6_SOL_MODEL_ID,
AMAZON_BEDROCK_GPT_6_1_SOL_MODEL_ID,
AMAZON_BEDROCK_GPT_6_ASTRA_MODEL_ID,
AMAZON_BEDROCK_GPT_6_SOL_MODEL_ID,
AMAZON_BEDROCK_GPT_6_LUNA_MODEL_ID,
AMAZON_BEDROCK_GPT_5_6_SOL_MODEL_ID,
AMAZON_BEDROCK_GPT_5_6_TERRA_MODEL_ID,
Expand All @@ -189,7 +198,7 @@ mod tests {
.collect::<Vec<_>>(),
vec![
(
AMAZON_BEDROCK_GPT_6_SOL_MODEL_ID,
AMAZON_BEDROCK_GPT_6_1_SOL_MODEL_ID,
Some(GPT_5_BEDROCK_CONTEXT_WINDOW),
Some(872_000),
WebSearchToolType::Text,
Expand All @@ -200,6 +209,12 @@ mod tests {
Some(872_000),
WebSearchToolType::Text,
),
(
AMAZON_BEDROCK_GPT_6_SOL_MODEL_ID,
Some(GPT_5_BEDROCK_CONTEXT_WINDOW),
Some(872_000),
WebSearchToolType::Text,
),
(
AMAZON_BEDROCK_GPT_6_LUNA_MODEL_ID,
Some(GPT_5_BEDROCK_CONTEXT_WINDOW),
Expand Down Expand Up @@ -277,35 +292,41 @@ mod tests {
let catalog = static_model_catalog();

for (mut expected, slug, display_name, priority) in [
(
bundled_openai_model(GPT_6_1_SOL_OPENAI_MODEL_ID),
AMAZON_BEDROCK_GPT_6_1_SOL_MODEL_ID,
"GPT-6.1 Sol",
0,
),
(
bundled_openai_model(GPT_6_SOL_OPENAI_MODEL_ID),
AMAZON_BEDROCK_GPT_6_SOL_MODEL_ID,
"GPT-6 Sol",
0,
2,
),
(
bundled_openai_model(GPT_6_LUNA_OPENAI_MODEL_ID),
AMAZON_BEDROCK_GPT_6_LUNA_MODEL_ID,
"GPT-6 Luna",
2,
3,
),
(
bundled_openai_model(GPT_5_6_SOL_OPENAI_MODEL_ID),
AMAZON_BEDROCK_GPT_5_6_SOL_MODEL_ID,
"GPT-5.6 Sol",
3,
4,
),
(
bundled_openai_model(GPT_5_6_TERRA_OPENAI_MODEL_ID),
AMAZON_BEDROCK_GPT_5_6_TERRA_MODEL_ID,
"GPT-5.6 Terra",
4,
5,
),
(
bundled_openai_model(GPT_5_6_LUNA_OPENAI_MODEL_ID),
AMAZON_BEDROCK_GPT_5_6_LUNA_MODEL_ID,
"GPT-5.6 Luna",
5,
6,
),
(
bundled_openai_model(GPT_6_ASTRA_OPENAI_MODEL_ID),
Expand Down
2 changes: 2 additions & 0 deletions codex-rs/model-provider/src/amazon_bedrock/runtime_catalog.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use codex_model_provider_info::AMAZON_BEDROCK_GPT_5_6_LUNA_MODEL_ID;
use codex_model_provider_info::AMAZON_BEDROCK_GPT_5_6_SOL_MODEL_ID;
use codex_model_provider_info::AMAZON_BEDROCK_GPT_5_6_TERRA_MODEL_ID;
use codex_model_provider_info::AMAZON_BEDROCK_GPT_6_1_SOL_MODEL_ID;
use codex_model_provider_info::AMAZON_BEDROCK_GPT_6_ASTRA_MODEL_ID;
use codex_model_provider_info::AMAZON_BEDROCK_GPT_6_LUNA_MODEL_ID;
use codex_model_provider_info::AMAZON_BEDROCK_GPT_6_SOL_MODEL_ID;
Expand All @@ -21,6 +22,7 @@ pub(super) fn static_runtime_model_catalog() -> ModelsResponse {
AMAZON_BEDROCK_GPT_5_6_SOL_MODEL_ID
| AMAZON_BEDROCK_GPT_5_6_TERRA_MODEL_ID
| AMAZON_BEDROCK_GPT_5_6_LUNA_MODEL_ID
| AMAZON_BEDROCK_GPT_6_1_SOL_MODEL_ID
| AMAZON_BEDROCK_GPT_6_ASTRA_MODEL_ID
| AMAZON_BEDROCK_GPT_6_SOL_MODEL_ID
| AMAZON_BEDROCK_GPT_6_LUNA_MODEL_ID
Expand Down
40 changes: 27 additions & 13 deletions codex-rs/model-provider/src/amazon_bedrock/runtime_catalog_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,25 +18,27 @@ fn runtime_catalog_includes_supported_cross_region_models_in_priority_order() {
))
.collect::<Vec<_>>(),
vec![
("global.openai.gpt-6-sol", "GPT-6 Sol (Global)", 0),
("global.openai.gpt-6.1-sol", "GPT-6.1 Sol (Global)", 0),
("global.openai.gpt-6-astra", "GPT-6-Astra (Global)", 1),
("global.openai.gpt-6-luna", "GPT-6 Luna (Global)", 2),
("global.openai.gpt-5.6-sol", "GPT-5.6 Sol (Global)", 3),
("global.openai.gpt-5.6-terra", "GPT-5.6 Terra (Global)", 4),
("global.openai.gpt-5.6-luna", "GPT-5.6 Luna (Global)", 5),
("us.openai.gpt-6-sol", "GPT-6 Sol (US cross-region)", 6),
("us.openai.gpt-6-astra", "GPT-6-Astra (US cross-region)", 7),
("us.openai.gpt-6-luna", "GPT-6 Luna (US cross-region)", 8),
("us.openai.gpt-5.6-sol", "GPT-5.6 Sol (US cross-region)", 9),
("global.openai.gpt-6-sol", "GPT-6 Sol (Global)", 2),
("global.openai.gpt-6-luna", "GPT-6 Luna (Global)", 3),
("global.openai.gpt-5.6-sol", "GPT-5.6 Sol (Global)", 4),
("global.openai.gpt-5.6-terra", "GPT-5.6 Terra (Global)", 5),
("global.openai.gpt-5.6-luna", "GPT-5.6 Luna (Global)", 6),
("us.openai.gpt-6.1-sol", "GPT-6.1 Sol (US cross-region)", 7),
("us.openai.gpt-6-astra", "GPT-6-Astra (US cross-region)", 8),
("us.openai.gpt-6-sol", "GPT-6 Sol (US cross-region)", 9),
("us.openai.gpt-6-luna", "GPT-6 Luna (US cross-region)", 10),
("us.openai.gpt-5.6-sol", "GPT-5.6 Sol (US cross-region)", 11),
(
"us.openai.gpt-5.6-terra",
"GPT-5.6 Terra (US cross-region)",
10
12
),
(
"us.openai.gpt-5.6-luna",
"GPT-5.6 Luna (US cross-region)",
11
13
),
]
);
Expand All @@ -59,7 +61,7 @@ fn runtime_catalog_disables_web_search_without_overriding_review_models() {
.collect::<Vec<_>>(),
vec![
(
"global.openai.gpt-6-sol",
"global.openai.gpt-6.1-sol",
None,
false,
Some(MultiAgentVersion::V1),
Expand All @@ -70,6 +72,12 @@ fn runtime_catalog_disables_web_search_without_overriding_review_models() {
false,
Some(MultiAgentVersion::V1),
),
(
"global.openai.gpt-6-sol",
None,
false,
Some(MultiAgentVersion::V1),
),
(
"global.openai.gpt-6-luna",
None,
Expand All @@ -95,7 +103,7 @@ fn runtime_catalog_disables_web_search_without_overriding_review_models() {
Some(MultiAgentVersion::V1),
),
(
"us.openai.gpt-6-sol",
"us.openai.gpt-6.1-sol",
None,
false,
Some(MultiAgentVersion::V1),
Expand All @@ -106,6 +114,12 @@ fn runtime_catalog_disables_web_search_without_overriding_review_models() {
false,
Some(MultiAgentVersion::V1),
),
(
"us.openai.gpt-6-sol",
None,
false,
Some(MultiAgentVersion::V1),
),
(
"us.openai.gpt-6-luna",
None,
Expand Down
9 changes: 6 additions & 3 deletions codex-rs/model-provider/src/provider.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1277,6 +1277,7 @@ printf '%s\n' '{"AccessKeyId":"exported","SecretAccessKey":"secret"}'
.await;
assert_eq!(uncached_catalog, catalog);
for slug in [
"openai.gpt-6.1-sol",
"openai.gpt-6-sol",
"openai.gpt-6-luna",
"openai.gpt-5.6-sol",
Expand Down Expand Up @@ -1307,8 +1308,9 @@ printf '%s\n' '{"AccessKeyId":"exported","SecretAccessKey":"secret"}'
assert_eq!(
models,
vec![
("openai.gpt-6-sol", "GPT-6 Sol"),
("openai.gpt-6.1-sol", "GPT-6.1 Sol"),
("openai.gpt-6-astra", "GPT-6-Astra"),
("openai.gpt-6-sol", "GPT-6 Sol"),
("openai.gpt-6-luna", "GPT-6 Luna"),
("openai.gpt-5.6-sol", "GPT-5.6 Sol"),
("openai.gpt-5.6-terra", "GPT-5.6 Terra"),
Expand All @@ -1329,8 +1331,9 @@ printf '%s\n' '{"AccessKeyId":"exported","SecretAccessKey":"secret"}'
.map(|preset| preset.model.as_str())
.collect::<Vec<_>>(),
vec![
"openai.gpt-6-sol",
"openai.gpt-6.1-sol",
"openai.gpt-6-astra",
"openai.gpt-6-sol",
"openai.gpt-6-luna",
"openai.gpt-5.6-sol",
"openai.gpt-5.6-terra",
Expand All @@ -1344,7 +1347,7 @@ printf '%s\n' '{"AccessKeyId":"exported","SecretAccessKey":"secret"}'
.find(|preset| preset.is_default)
.expect("Bedrock catalog should have a default model");

assert_eq!(default_model.model, "openai.gpt-6-sol");
assert_eq!(default_model.model, "openai.gpt-6.1-sol");
}

#[tokio::test]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@ expression: "render_bottom_popup(&chat, 100)"
Select Model and Effort


› 1. GPT-6 Sol (current) Previous generation workhorse model.
2. GPT-6-Astra Frontier intelligence for the most demanding work.
3. GPT-6 Luna Fast and affordable model for easier tasks.
4. GPT-5.6 Sol Older generation workhorse model.
5. GPT-5.6 Terra Older balanced model for straightforward work.
6. GPT-5.6 Luna Older fast and efficient model.
7. GPT-5.5 Legacy coding model.
› 1. GPT-6.1 Sol (current) Latest workhorse model for coding and everyday work.
2. GPT-6-Astra Frontier intelligence for the most demanding work.
3. GPT-6 Sol Previous generation workhorse model.
4. GPT-6 Luna Fast and affordable model for easier tasks.
5. GPT-5.6 Sol Older generation workhorse model.
6. GPT-5.6 Terra Older balanced model for straightforward work.
7. GPT-5.6 Luna Older fast and efficient model.
8. GPT-5.5 Legacy coding model.

enter select · esc back
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ expression: "render_bottom_popup(&chat, 100)"
Select Model and Effort


› 1. GPT-6 Sol (Global) (current) Previous generation workhorse model.
› 1. GPT-6.1 Sol (Global) (current) Latest workhorse model for coding and everyday work.
2. GPT-6-Astra (Global) Frontier intelligence for the most demanding work.
3. GPT-6 Luna (Global) Fast and affordable model for easier tasks.
4. GPT-5.6 Sol (Global) Older generation workhorse model.
5. GPT-5.6 Terra (Global) Older balanced model for straightforward work.
6. GPT-5.6 Luna (Global) Older fast and efficient model.
7. GPT-6 Sol (US cross-region) Previous generation workhorse model.
8. GPT-6-Astra (US cross-region) Frontier intelligence for the most demanding work.
3. GPT-6 Sol (Global) Previous generation workhorse model.
4. GPT-6 Luna (Global) Fast and affordable model for easier tasks.
5. GPT-5.6 Sol (Global) Older generation workhorse model.
6. GPT-5.6 Terra (Global) Older balanced model for straightforward work.
7. GPT-5.6 Luna (Global) Older fast and efficient model.
8. GPT-6.1 Sol (US cross-region) Latest workhorse model for coding and everyday work.
↓
enter select · esc back
Loading
Loading