Make async (#5126)

Co-authored-by: Douwe Osinga <douwe@squareup.com>
This commit is contained in:
Douwe Osinga
2025-10-10 19:31:50 -04:00
committed by GitHub
parent 69a7b7fe5a
commit 1015064367
43 changed files with 343 additions and 480 deletions
+1 -1
View File
@@ -117,7 +117,7 @@ impl GooseAcpAgent {
toolshim_model: None,
fast_model: None,
};
let provider = create(&provider_name, model_config)?;
let provider = create(&provider_name, model_config).await?;
// Create a shared agent instance
let agent = Agent::new();
+7 -7
View File
@@ -258,7 +258,7 @@ async fn handle_oauth_configuration(
// Create a temporary provider instance to handle OAuth
let temp_model = ModelConfig::new("temp")?;
match create(provider_name, temp_model) {
match create(provider_name, temp_model).await {
Ok(provider) => match provider.configure_oauth().await {
Ok(_) => {
let _ = cliclack::log::success("OAuth authentication completed successfully!");
@@ -420,7 +420,7 @@ pub async fn configure_provider_dialog() -> Result<bool, Box<dyn Error>> {
let config = Config::global();
// Get all available providers and their metadata
let available_providers = providers();
let available_providers = providers().await;
// Create selection items from provider metadata
let provider_items: Vec<(&String, &str, &str)> = available_providers
@@ -550,7 +550,7 @@ pub async fn configure_provider_dialog() -> Result<bool, Box<dyn Error>> {
spin.start("Attempting to fetch supported models...");
let models_res = {
let temp_model_config = ModelConfig::new(&provider_meta.default_model)?;
let temp_provider = create(provider_name, temp_model_config)?;
let temp_provider = create(provider_name, temp_model_config).await?;
temp_provider.fetch_supported_models().await
};
spin.stop(style("Model fetch complete").green());
@@ -586,7 +586,7 @@ pub async fn configure_provider_dialog() -> Result<bool, Box<dyn Error>> {
.with_toolshim(toolshim_enabled)
.with_toolshim_model(std::env::var("GOOSE_TOOLSHIM_OLLAMA_MODEL").ok());
let provider = create(provider_name, model_config)?;
let provider = create(provider_name, model_config).await?;
let messages =
vec![Message::user().with_text("What is the weather like in San Francisco today?")];
@@ -1419,7 +1419,7 @@ pub async fn configure_tool_permissions_dialog() -> Result<(), Box<dyn Error>> {
// Create the agent
let agent = Agent::new();
let new_provider = create(&provider_name, model_config)?;
let new_provider = create(&provider_name, model_config).await?;
agent.update_provider(new_provider).await?;
if let Some(config) = get_extension_by_name(&selected_extension_name) {
agent
@@ -1688,7 +1688,7 @@ pub async fn handle_openrouter_auth() -> Result<(), Box<dyn Error>> {
}
};
match create("openrouter", model_config) {
match create("openrouter", model_config).await {
Ok(provider) => {
// Simple test request
let test_result = provider
@@ -1787,7 +1787,7 @@ pub async fn handle_tetrate_auth() -> Result<(), Box<dyn Error>> {
}
};
match create("tetrate", model_config) {
match create("tetrate", model_config).await {
Ok(provider) => {
// Simple test request
let test_result = provider
+1 -2
View File
@@ -137,7 +137,6 @@ pub async fn handle_web(
// Setup logging
crate::logging::setup_logging(Some("goose-web"), None)?;
// Load config and create agent just like the CLI does
let config = goose::config::Config::global();
let provider_name: String = match config.get_param("GOOSE_PROVIDER") {
@@ -160,7 +159,7 @@ pub async fn handle_web(
// Create the agent
let agent = Agent::new();
let provider = goose::providers::create(&provider_name, model_config)?;
let provider = goose::providers::create(&provider_name, model_config).await?;
agent.update_provider(provider).await?;
// Load and enable extensions from config
@@ -180,7 +180,7 @@ where
let original_env = setup_environment(config)?;
let inner_provider = create(&factory_name, ModelConfig::new(config.model_name)?)?;
let inner_provider = create(&factory_name, ModelConfig::new(config.model_name)?).await?;
let test_provider = Arc::new(TestProvider::new_recording(inner_provider, &file_path));
(
+1 -1
View File
@@ -242,7 +242,7 @@ pub async fn build_session(session_config: SessionBuilderConfig) -> CliSession {
agent.add_final_output_tool(final_output_response).await;
}
let new_provider = match create(&provider_name, model_config) {
let new_provider = match create(&provider_name, model_config).await {
Ok(provider) => provider,
Err(e) => {
output::render_error(&format!(
+4 -4
View File
@@ -474,7 +474,7 @@ impl CliSession {
RunMode::Plan => {
let mut plan_messages = self.messages.clone();
plan_messages.push(Message::user().with_text(&content));
let reasoner = get_reasoner()?;
let reasoner = get_reasoner().await?;
self.plan_with_reasoner_model(plan_messages, reasoner)
.await?;
}
@@ -581,7 +581,7 @@ impl CliSession {
let mut plan_messages = self.messages.clone();
plan_messages.push(Message::user().with_text(&message_text));
let reasoner = get_reasoner()?;
let reasoner = get_reasoner().await?;
self.plan_with_reasoner_model(plan_messages, reasoner)
.await?;
}
@@ -1632,7 +1632,7 @@ impl CliSession {
}
}
fn get_reasoner() -> Result<Arc<dyn Provider>, anyhow::Error> {
async fn get_reasoner() -> Result<Arc<dyn Provider>, anyhow::Error> {
use goose::model::ModelConfig;
use goose::providers::create;
@@ -1660,7 +1660,7 @@ fn get_reasoner() -> Result<Arc<dyn Provider>, anyhow::Error> {
let model_config =
ModelConfig::new_with_context_env(model, Some("GOOSE_PLANNER_CONTEXT_LIMIT"))?;
let reasoner = create(&provider, model_config)?;
let reasoner = create(&provider, model_config).await?;
Ok(reasoner)
}