chore(release): bump version to 1.42.0 (minor) (#10295)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Jack Amadeo <jackamadeo@squareup.com>
This commit is contained in:
committed by
GitHub
parent
be521ff8b2
commit
e6be2e9392
Generated
+6
-6
@@ -4908,7 +4908,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "goose"
|
||||
version = "1.41.0"
|
||||
version = "1.42.0"
|
||||
dependencies = [
|
||||
"agent-client-protocol",
|
||||
"agent-client-protocol-http",
|
||||
@@ -5045,7 +5045,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "goose-acp-macros"
|
||||
version = "1.41.0"
|
||||
version = "1.42.0"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"syn 2.0.118",
|
||||
@@ -5053,7 +5053,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "goose-cli"
|
||||
version = "1.41.0"
|
||||
version = "1.42.0"
|
||||
dependencies = [
|
||||
"anstream",
|
||||
"anyhow",
|
||||
@@ -5157,7 +5157,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "goose-mcp"
|
||||
version = "1.41.0"
|
||||
version = "1.42.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"base64 0.22.1",
|
||||
@@ -5278,7 +5278,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "goose-test"
|
||||
version = "1.41.0"
|
||||
version = "1.42.0"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"serde_json",
|
||||
@@ -5286,7 +5286,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "goose-test-support"
|
||||
version = "1.41.0"
|
||||
version = "1.42.0"
|
||||
dependencies = [
|
||||
"axum",
|
||||
"env-lock",
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ resolver = "2"
|
||||
|
||||
[workspace.package]
|
||||
edition = "2021"
|
||||
version = "1.41.0"
|
||||
version = "1.42.0"
|
||||
rust-version = "1.94.1"
|
||||
authors = ["AAIF <ai-oss-tools@block.xyz>"]
|
||||
license = "Apache-2.0"
|
||||
|
||||
@@ -28,7 +28,7 @@ impl ModelMapping {
|
||||
///
|
||||
/// This avoids network calls by looking up all known models for the provider,
|
||||
/// filtering to text-input + tool-calling models, and sorting by release date.
|
||||
/// The returned names are the canonical short names (e.g. "claude-3.5-sonnet").
|
||||
/// The returned names are the canonical short names (e.g. "claude-sonnet-4.5").
|
||||
///
|
||||
/// TODO: This trades speed for correctness — the canonical registry may not perfectly
|
||||
/// match what the provider API returns (new models not yet in the registry, deprecated
|
||||
@@ -110,8 +110,8 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn cloud_provider_retains_cost() {
|
||||
let canonical = maybe_get_canonical_model("anthropic", "claude-3-5-sonnet-20241022")
|
||||
.expect("claude-3.5-sonnet should resolve");
|
||||
let canonical = maybe_get_canonical_model("anthropic", "claude-sonnet-4-5-20250929")
|
||||
.expect("claude-sonnet-4.5 should resolve");
|
||||
assert!(canonical.cost.input.is_some());
|
||||
assert!(canonical.cost.output.is_some());
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# Canonical Model System
|
||||
|
||||
Provides a unified view of model metadata (pricing, capabilities, context limits) across different LLM providers.
|
||||
Normalizes provider-specific model names (e.g., `claude-3-5-sonnet-20241022`)
|
||||
to canonical IDs (e.g., `anthropic/claude-3.5-sonnet`).
|
||||
Normalizes provider-specific model names (e.g., `claude-sonnet-4-5-20250929`)
|
||||
to canonical IDs (e.g., `anthropic/claude-sonnet-4.5`).
|
||||
|
||||
## Build Canonical Models
|
||||
Fetches latest model metadata from OpenRouter and validates provider mappings:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -52,7 +52,7 @@
|
||||
"env": [
|
||||
"DASHSCOPE_API_KEY"
|
||||
],
|
||||
"model_count": 83
|
||||
"model_count": 84
|
||||
},
|
||||
{
|
||||
"id": "alibaba-coding-plan",
|
||||
@@ -285,7 +285,7 @@
|
||||
"env": [
|
||||
"DIGITALOCEAN_ACCESS_TOKEN"
|
||||
],
|
||||
"model_count": 80
|
||||
"model_count": 82
|
||||
},
|
||||
{
|
||||
"id": "dinference",
|
||||
@@ -362,7 +362,7 @@
|
||||
"env": [
|
||||
"FRIENDLI_TOKEN"
|
||||
],
|
||||
"model_count": 7
|
||||
"model_count": 6
|
||||
},
|
||||
{
|
||||
"id": "frogbot",
|
||||
@@ -384,7 +384,7 @@
|
||||
"env": [
|
||||
"GITHUB_TOKEN"
|
||||
],
|
||||
"model_count": 23
|
||||
"model_count": 25
|
||||
},
|
||||
{
|
||||
"id": "github-models",
|
||||
@@ -439,7 +439,7 @@
|
||||
"env": [
|
||||
"HF_TOKEN"
|
||||
],
|
||||
"model_count": 50
|
||||
"model_count": 51
|
||||
},
|
||||
{
|
||||
"id": "iflowcn",
|
||||
@@ -507,6 +507,17 @@
|
||||
],
|
||||
"model_count": 61
|
||||
},
|
||||
{
|
||||
"id": "kenari",
|
||||
"display_name": "Kenari",
|
||||
"npm": "@ai-sdk/openai-compatible",
|
||||
"api": "https://kenari.id/v1",
|
||||
"doc": "https://kenari.id/docs",
|
||||
"env": [
|
||||
"KENARI_API_KEY"
|
||||
],
|
||||
"model_count": 23
|
||||
},
|
||||
{
|
||||
"id": "kilo",
|
||||
"display_name": "Kilo Gateway",
|
||||
@@ -516,7 +527,7 @@
|
||||
"env": [
|
||||
"KILO_API_KEY"
|
||||
],
|
||||
"model_count": 345
|
||||
"model_count": 346
|
||||
},
|
||||
{
|
||||
"id": "kimi-for-coding",
|
||||
@@ -560,7 +571,7 @@
|
||||
"env": [
|
||||
"LLMGATEWAY_API_KEY"
|
||||
],
|
||||
"model_count": 182
|
||||
"model_count": 180
|
||||
},
|
||||
{
|
||||
"id": "llmtr",
|
||||
@@ -584,6 +595,17 @@
|
||||
],
|
||||
"model_count": 3
|
||||
},
|
||||
{
|
||||
"id": "longcat",
|
||||
"display_name": "LongCat",
|
||||
"npm": "@ai-sdk/openai-compatible",
|
||||
"api": "https://api.longcat.chat/openai",
|
||||
"doc": "https://longcat.chat/platform/docs/",
|
||||
"env": [
|
||||
"LONGCAT_API_KEY"
|
||||
],
|
||||
"model_count": 1
|
||||
},
|
||||
{
|
||||
"id": "lucidquery",
|
||||
"display_name": "LucidQuery",
|
||||
@@ -836,7 +858,7 @@
|
||||
"env": [
|
||||
"OPENCODE_API_KEY"
|
||||
],
|
||||
"model_count": 74
|
||||
"model_count": 75
|
||||
},
|
||||
{
|
||||
"id": "opencode-go",
|
||||
@@ -1058,7 +1080,7 @@
|
||||
"env": [
|
||||
"STEPFUN_API_KEY"
|
||||
],
|
||||
"model_count": 5
|
||||
"model_count": 8
|
||||
},
|
||||
{
|
||||
"id": "stepfun-ai",
|
||||
@@ -1069,18 +1091,18 @@
|
||||
"env": [
|
||||
"STEPFUN_API_KEY"
|
||||
],
|
||||
"model_count": 2
|
||||
"model_count": 8
|
||||
},
|
||||
{
|
||||
"id": "subconscious",
|
||||
"display_name": "Subconscious",
|
||||
"npm": "@ai-sdk/openai-compatible",
|
||||
"npm": "@ai-sdk/anthropic",
|
||||
"api": "https://api.subconscious.dev/v1",
|
||||
"doc": "https://docs.subconscious.dev",
|
||||
"env": [
|
||||
"SUBCONSCIOUS_API_KEY"
|
||||
],
|
||||
"model_count": 1
|
||||
"model_count": 2
|
||||
},
|
||||
{
|
||||
"id": "submodel",
|
||||
@@ -1115,6 +1137,17 @@
|
||||
],
|
||||
"model_count": 8
|
||||
},
|
||||
{
|
||||
"id": "tencent-token-plan",
|
||||
"display_name": "Tencent Token Plan",
|
||||
"npm": "@ai-sdk/openai-compatible",
|
||||
"api": "https://api.lkeap.cloud.tencent.com/plan/v3",
|
||||
"doc": "https://cloud.tencent.com/document/product/1823/130060",
|
||||
"env": [
|
||||
"TENCENT_TOKEN_PLAN_API_KEY"
|
||||
],
|
||||
"model_count": 1
|
||||
},
|
||||
{
|
||||
"id": "tencent-tokenhub",
|
||||
"display_name": "Tencent TokenHub",
|
||||
@@ -1124,7 +1157,7 @@
|
||||
"env": [
|
||||
"TENCENT_TOKENHUB_API_KEY"
|
||||
],
|
||||
"model_count": 1
|
||||
"model_count": 2
|
||||
},
|
||||
{
|
||||
"id": "the-grid-ai",
|
||||
@@ -1148,6 +1181,17 @@
|
||||
],
|
||||
"model_count": 7
|
||||
},
|
||||
{
|
||||
"id": "trustedrouter",
|
||||
"display_name": "TrustedRouter",
|
||||
"npm": "@ai-sdk/openai-compatible",
|
||||
"api": "https://api.trustedrouter.com/v1",
|
||||
"doc": "https://trustedrouter.com/docs",
|
||||
"env": [
|
||||
"TRUSTEDROUTER_API_KEY"
|
||||
],
|
||||
"model_count": 7
|
||||
},
|
||||
{
|
||||
"id": "umans-ai",
|
||||
"display_name": "Umans AI",
|
||||
@@ -1190,7 +1234,7 @@
|
||||
"env": [
|
||||
"VIVGRID_API_KEY"
|
||||
],
|
||||
"model_count": 13
|
||||
"model_count": 14
|
||||
},
|
||||
{
|
||||
"id": "vultr",
|
||||
@@ -1201,7 +1245,7 @@
|
||||
"env": [
|
||||
"VULTR_API_KEY"
|
||||
],
|
||||
"model_count": 7
|
||||
"model_count": 10
|
||||
},
|
||||
{
|
||||
"id": "wafer.ai",
|
||||
@@ -1245,7 +1289,7 @@
|
||||
"env": [
|
||||
"XIAOMI_API_KEY"
|
||||
],
|
||||
"model_count": 8
|
||||
"model_count": 7
|
||||
},
|
||||
{
|
||||
"id": "xiaomi-token-plan-cn",
|
||||
@@ -1256,7 +1300,7 @@
|
||||
"env": [
|
||||
"XIAOMI_API_KEY"
|
||||
],
|
||||
"model_count": 8
|
||||
"model_count": 7
|
||||
},
|
||||
{
|
||||
"id": "xiaomi-token-plan-sgp",
|
||||
@@ -1267,7 +1311,7 @@
|
||||
"env": [
|
||||
"XIAOMI_API_KEY"
|
||||
],
|
||||
"model_count": 8
|
||||
"model_count": 7
|
||||
},
|
||||
{
|
||||
"id": "xpersona",
|
||||
@@ -1278,7 +1322,7 @@
|
||||
"env": [
|
||||
"XPERSONA_API_KEY"
|
||||
],
|
||||
"model_count": 2
|
||||
"model_count": 3
|
||||
},
|
||||
{
|
||||
"id": "zai",
|
||||
@@ -1322,7 +1366,7 @@
|
||||
"env": [
|
||||
"ZENMUX_API_KEY"
|
||||
],
|
||||
"model_count": 112
|
||||
"model_count": 114
|
||||
},
|
||||
{
|
||||
"id": "zhipuai",
|
||||
|
||||
@@ -329,8 +329,8 @@ mod tests {
|
||||
|
||||
// === Direct provider (non-hosting) ===
|
||||
assert_eq!(
|
||||
map_to_canonical_model("anthropic", "claude-3-5-sonnet-20241022", r),
|
||||
Some("anthropic/claude-3.5-sonnet".to_string())
|
||||
map_to_canonical_model("anthropic", "claude-sonnet-4-5-20250929", r),
|
||||
Some("anthropic/claude-sonnet-4.5".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
map_to_canonical_model("openai", "gpt-4o-latest", r),
|
||||
@@ -353,22 +353,22 @@ mod tests {
|
||||
|
||||
// === Anthropic Claude - basic ===
|
||||
assert_eq!(
|
||||
map_to_canonical_model("databricks", "claude-3-5-sonnet", r),
|
||||
Some("anthropic/claude-3.5-sonnet".to_string())
|
||||
map_to_canonical_model("databricks", "claude-sonnet-4-5", r),
|
||||
Some("anthropic/claude-sonnet-4.5".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
map_to_canonical_model("databricks", "claude-3-5-sonnet-20241022", r),
|
||||
Some("anthropic/claude-3.5-sonnet".to_string())
|
||||
map_to_canonical_model("databricks", "claude-sonnet-4-5-20250929", r),
|
||||
Some("anthropic/claude-sonnet-4.5".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
map_to_canonical_model("databricks", "claude-3-5-sonnet-latest", r),
|
||||
Some("anthropic/claude-3.5-sonnet".to_string())
|
||||
map_to_canonical_model("databricks", "claude-sonnet-4-5-latest", r),
|
||||
Some("anthropic/claude-sonnet-4.5".to_string())
|
||||
);
|
||||
|
||||
// 4.x: {version}-{model} → {model}-{version}
|
||||
assert_eq!(
|
||||
map_to_canonical_model("databricks", "claude-4-sonnet", r),
|
||||
Some("anthropic/claude-sonnet-4".to_string())
|
||||
map_to_canonical_model("databricks", "claude-sonnet-4-5", r),
|
||||
Some("anthropic/claude-sonnet-4.5".to_string())
|
||||
);
|
||||
|
||||
// 4.x with minor version + prefix stripping
|
||||
@@ -379,16 +379,16 @@ mod tests {
|
||||
|
||||
// === Claude with platform suffixes ===
|
||||
assert_eq!(
|
||||
map_to_canonical_model("databricks", "claude-4-sonnet-bedrock", r),
|
||||
Some("anthropic/claude-sonnet-4".to_string())
|
||||
map_to_canonical_model("databricks", "claude-sonnet-4-5-bedrock", r),
|
||||
Some("anthropic/claude-sonnet-4.5".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
map_to_canonical_model("databricks", "goose-claude-4-sonnet-bedrock", r),
|
||||
Some("anthropic/claude-sonnet-4".to_string())
|
||||
map_to_canonical_model("databricks", "goose-claude-sonnet-4-5-bedrock", r),
|
||||
Some("anthropic/claude-sonnet-4.5".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
map_to_canonical_model("bedrock", "claude-3-5-sonnet", r),
|
||||
Some("anthropic/claude-3.5-sonnet".to_string())
|
||||
map_to_canonical_model("bedrock", "claude-sonnet-4-5", r),
|
||||
Some("anthropic/claude-sonnet-4.5".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
map_to_canonical_model("aws_bedrock", "global.anthropic.claude-sonnet-5", r),
|
||||
@@ -494,8 +494,8 @@ mod tests {
|
||||
|
||||
// === Provider-prefixed extraction ===
|
||||
assert_eq!(
|
||||
map_to_canonical_model("databricks", "anthropic-claude-3-5-sonnet", r),
|
||||
Some("anthropic/claude-3.5-sonnet".to_string())
|
||||
map_to_canonical_model("databricks", "anthropic-claude-sonnet-4-5", r),
|
||||
Some("anthropic/claude-sonnet-4.5".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
map_to_canonical_model("databricks", "openai-gpt-4o", r),
|
||||
|
||||
@@ -1395,7 +1395,7 @@ mod tests {
|
||||
("ANTHROPIC_PRESERVE_THINKING_CONTEXT", None::<&str>),
|
||||
]);
|
||||
|
||||
let mut config = cfg_with_effort("claude-3-7-sonnet-20250219", "high");
|
||||
let mut config = cfg_with_effort("claude-sonnet-4-5-20250929", "high");
|
||||
config.max_tokens = Some(64000);
|
||||
|
||||
let messages = vec![Message::user().with_text("Hello")];
|
||||
@@ -1417,7 +1417,7 @@ mod tests {
|
||||
("ANTHROPIC_PRESERVE_THINKING_CONTEXT", None::<&str>),
|
||||
]);
|
||||
|
||||
let mut config = cfg_with_effort("claude-3-7-sonnet-20250219", "high");
|
||||
let mut config = cfg_with_effort("claude-sonnet-4-5-20250929", "high");
|
||||
let messages = vec![Message::user().with_text("Hello")];
|
||||
|
||||
// Budget larger than max_tokens is clamped to leave room for a response.
|
||||
@@ -1769,12 +1769,12 @@ mod tests {
|
||||
);
|
||||
// Non-adaptive Claude with effort → enabled
|
||||
assert_eq!(
|
||||
thinking_type(&cfg_with_effort("claude-3-7-sonnet-20250219", "high")),
|
||||
thinking_type(&cfg_with_effort("claude-sonnet-4-5-20250929", "high")),
|
||||
ThinkingType::Enabled
|
||||
);
|
||||
// Non-adaptive Claude with off → disabled
|
||||
assert_eq!(
|
||||
thinking_type(&cfg_with_effort("claude-3-7-sonnet-20250219", "off")),
|
||||
thinking_type(&cfg_with_effort("claude-sonnet-4-5-20250929", "off")),
|
||||
ThinkingType::Disabled
|
||||
);
|
||||
}
|
||||
@@ -1833,7 +1833,7 @@ mod tests {
|
||||
ThinkingType::Disabled
|
||||
);
|
||||
assert_eq!(
|
||||
thinking_type(&cfg_with_effort("claude-3-7-sonnet-20250219", "off")),
|
||||
thinking_type(&cfg_with_effort("claude-sonnet-4-5-20250929", "off")),
|
||||
ThinkingType::Disabled
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1317,7 +1317,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_create_request_enabled_thinking_with_budget() -> anyhow::Result<()> {
|
||||
let mut model_config = ModelConfig::new("databricks-claude-3-7-sonnet");
|
||||
let mut model_config = ModelConfig::new("databricks-claude-sonnet-4.5");
|
||||
model_config.max_tokens = Some(4096);
|
||||
let mut params = std::collections::HashMap::new();
|
||||
params.insert("thinking_effort".to_string(), serde_json::json!("high"));
|
||||
@@ -1342,7 +1342,7 @@ mod tests {
|
||||
("high", 16000),
|
||||
("max", 32000),
|
||||
] {
|
||||
let mut model_config = ModelConfig::new("databricks-claude-3-7-sonnet");
|
||||
let mut model_config = ModelConfig::new("databricks-claude-sonnet-4.5");
|
||||
model_config.max_tokens = Some(4096);
|
||||
let mut params = std::collections::HashMap::new();
|
||||
params.insert("thinking_effort".to_string(), serde_json::json!(effort));
|
||||
@@ -1361,7 +1361,7 @@ mod tests {
|
||||
#[test]
|
||||
fn test_response_to_message_claude_thinking() -> anyhow::Result<()> {
|
||||
let response = json!({
|
||||
"model": "us.anthropic.claude-3-7-sonnet-20250219-v1:0",
|
||||
"model": "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
|
||||
"choices": [{
|
||||
"message": {
|
||||
"role": "assistant",
|
||||
@@ -1409,7 +1409,7 @@ mod tests {
|
||||
#[test]
|
||||
fn test_response_to_message_claude_encrypted_thinking() -> anyhow::Result<()> {
|
||||
let response = json!({
|
||||
"model": "claude-3-7-sonnet-20250219",
|
||||
"model": "claude-sonnet-4-5-20250929",
|
||||
"choices": [{
|
||||
"message": {
|
||||
"role": "assistant",
|
||||
@@ -1554,7 +1554,7 @@ mod tests {
|
||||
#[test]
|
||||
fn test_is_claude_model() {
|
||||
assert!(is_claude_model("databricks-claude-sonnet-4"));
|
||||
assert!(is_claude_model("databricks-claude-3-7-sonnet"));
|
||||
assert!(is_claude_model("databricks-claude-sonnet-4.5"));
|
||||
assert!(is_claude_model("claude-sonnet-4"));
|
||||
assert!(is_claude_model("goose-claude-sonnet"));
|
||||
assert!(!is_claude_model("gpt-4o"));
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "goose-app",
|
||||
"productName": "Goose",
|
||||
"version": "1.41.0",
|
||||
"version": "1.42.0",
|
||||
"description": "Goose App",
|
||||
"engines": {
|
||||
"node": "^24.10.0",
|
||||
|
||||
Reference in New Issue
Block a user