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
1 change: 1 addition & 0 deletions crates/goose-providers/src/declarative.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ pub(crate) mod declarative_providers {
ovhcloud,
perplexity,
routstr,
sakana,
saladcloud,
scaleway,
tanzu,
Expand Down
31 changes: 31 additions & 0 deletions crates/goose-providers/src/declarative/definitions/sakana.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"name": "sakana",
"engine": "openai",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Add Sakana's catalog provider id

Please set catalog_provider_id to sakana for this fixed provider. I checked declarative_inventory_identity, and when an OpenAI-compatible declarative config omits this field it records the inventory provider_family as openai, so the static fugu/fugu-ultra entries are enriched against the OpenAI catalog instead of the existing sakana/* canonical models; desktop model selection then gets reasoning: null from acpListProviderModels and hides thinking controls for these reasoning-capable models.

Useful? React with 👍 / 👎.

"display_name": "Sakana AI",
"description": "Sakana Fugu multi-agent system delivered as one OpenAI-compatible model API",
"api_key_env": "SAKANA_API_KEY",
"base_url": "https://api.sakana.ai/v1",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Route Sakana requests through Responses

With this base_url and no explicit base_path, openai::from_declarative_config derives v1/chat/completions, and should_use_responses_api_for_provider will not switch for fugu/fugu-ultra because they are not OpenAI responses-model names. In Goose sessions that use tools or images, Sakana then runs over Chat Completions even though its model docs recommend /v1/responses for tool use, multimodal input, and reasoning/function-call management (https://console.sakana.ai/models); add a base_path of v1/responses or provider-specific routing so Fugu uses the recommended agent wire shape.

Useful? React with 👍 / 👎.

"models": [
{
"name": "fugu",
"context_limit": 1000000,
"input_token_cost": null,
"output_token_cost": null,
"currency": null,
"supports_cache_control": null
},
{
"name": "fugu-ultra",
"context_limit": 1000000,
"input_token_cost": null,
"output_token_cost": null,
"currency": null,
"supports_cache_control": null
}
],
"headers": null,
"timeout_seconds": null,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Raise the Sakana request timeout

When a user runs fugu-ultra on long or complex tasks, leaving timeout_seconds as null falls back to the declarative OpenAI default of 600 seconds in from_declarative_config, and ApiClient::with_timeout_and_tls applies that as a reqwest request timeout. Sakana's own get-started guide warns that complex fugu-ultra tasks may need increased client-side timeouts and their Codex provider example hardens streams for up to 2h, so this bundled provider can abort valid long-running Fugu turns at 10 minutes unless it sets a much larger timeout.

Useful? React with 👍 / 👎.

"model_doc_link": "https://console.sakana.ai/models",
"preserves_thinking": true,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Map Sakana thinking effort into requests

Setting preserves_thinking only keeps returned thinking blocks in conversation history; it does not send Sakana's reasoning.effort. The OpenAI request builders only attach reasoning fields for model names matched by is_openai_responses_model (o*/gpt-5*) or explicit provider-specific mapping, so GOOSE_THINKING_EFFORT/model-picker choices for fugu and fugu-ultra are silently dropped even though Sakana documents only high and xhigh as supported effort levels for both models.

Useful? React with 👍 / 👎.

"supports_streaming": true
}
Loading