Skip to content

Commit c3924e2

Browse files
authored
fix(anthropic): support for claude mythos and fable models (#3474)
1 parent 88b024d commit c3924e2

4 files changed

Lines changed: 22 additions & 1 deletion

File tree

crates/forge_app/src/dto/anthropic/response.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ impl From<Model> for forge_domain::Model {
3434
|| value.id.contains("claude-sonnet")
3535
|| value.id.contains("claude-opus")
3636
|| value.id.contains("claude-haiku")
37+
|| value.id.contains("claude-mythos")
38+
|| value.id.contains("claude-fable")
3739
{
3840
vec![
3941
forge_domain::InputModality::Text,
@@ -77,6 +79,11 @@ impl From<Model> for forge_domain::Model {
7779
/// header
7880
/// - Legacy models may have different context lengths
7981
fn get_context_length(model_id: &str) -> Option<u64> {
82+
// Claude Mythos / Fable models (1M context)
83+
if model_id.starts_with("claude-mythos") || model_id.starts_with("claude-fable") {
84+
return Some(1_000_000);
85+
}
86+
8087
// Current models (200K context)
8188
if model_id.starts_with("claude-sonnet-4-5-")
8289
|| model_id.starts_with("claude-haiku-4-5-")

crates/forge_app/src/transformers/model_specific_reasoning.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ impl ModelSpecificReasoning {
3131
|| id.contains("48-opus")
3232
|| id.contains("opus-4-7")
3333
|| id.contains("47-opus")
34+
|| id.contains("mythos")
35+
|| id.contains("fable")
3436
{
3537
// Opus 4.8 shares Opus 4.7's API contract: adaptive thinking only
3638
// (legacy `budget_tokens` returns 400) and non-default sampling

crates/forge_repo/src/provider/anthropic.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,9 @@ fn interleaved_thinking_required(model: Option<&ModelId>) -> bool {
101101
!(id.contains("opus-4-8")
102102
|| id.contains("opus-4-7")
103103
|| id.contains("opus-4-6")
104-
|| id.contains("sonnet-4-6"))
104+
|| id.contains("sonnet-4-6")
105+
|| id.contains("mythos")
106+
|| id.contains("fable"))
105107
}
106108

107109
impl<T: HttpInfra> Anthropic<T> {

crates/forge_repo/src/provider/provider.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -634,6 +634,16 @@
634634
"response_type": "Anthropic",
635635
"url": "https://api.anthropic.com/v1/messages",
636636
"models": [
637+
{
638+
"id": "claude-fable-5",
639+
"name": "Claude Fable 5",
640+
"description": "Most capable widely released model for demanding reasoning and agentic work",
641+
"context_length": 1000000,
642+
"tools_supported": true,
643+
"supports_parallel_tool_calls": true,
644+
"supports_reasoning": true,
645+
"input_modalities": ["text", "image"]
646+
},
637647
{
638648
"id": "claude-opus-4-8",
639649
"name": "Claude Opus 4.8",

0 commit comments

Comments
 (0)