From 7579e40bd3670964e03efbdb2d5c1001c4477e9a Mon Sep 17 00:00:00 2001 From: Clawdio Date: Tue, 24 Mar 2026 22:19:42 +0000 Subject: [PATCH 1/2] fix: setup wizard crashes when skipping LLM provider When user selects option 4 (Skip) in the auth phase, selected_provider stays None. The model phase then crashes with 'provider not selected'. Now gracefully skips model selection with a message instead of crashing. --- engine/crates/fx-cli/src/commands/setup.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/engine/crates/fx-cli/src/commands/setup.rs b/engine/crates/fx-cli/src/commands/setup.rs index c932d546..ad9fd6b4 100644 --- a/engine/crates/fx-cli/src/commands/setup.rs +++ b/engine/crates/fx-cli/src/commands/setup.rs @@ -328,12 +328,14 @@ impl SetupWizard { } async fn run_model_phase(&mut self) -> anyhow::Result<()> { + let Some(provider) = self.selected_provider.clone() else { + println!("Step 2: Model Selection"); + println!(" ⏭ Skipped (no provider configured yet)"); + println!(); + return Ok(()); + }; println!("Step 2: Model Selection"); println!(" Fetching available models..."); - let provider = self - .selected_provider - .clone() - .context("provider not selected")?; let models = self.available_models(&provider).await?; print_models(&provider, &models); println!(" (press Enter to skip)"); From 4958f2332e4a1438b0ba49aae3079f087400f40b Mon Sep 17 00:00:00 2001 From: Clawdio Date: Tue, 24 Mar 2026 22:49:35 +0000 Subject: [PATCH 2/2] fix: skip model validation when no model/provider configured --- engine/crates/fx-cli/src/commands/setup.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/engine/crates/fx-cli/src/commands/setup.rs b/engine/crates/fx-cli/src/commands/setup.rs index ad9fd6b4..32859771 100644 --- a/engine/crates/fx-cli/src/commands/setup.rs +++ b/engine/crates/fx-cli/src/commands/setup.rs @@ -570,10 +570,10 @@ impl SetupWizard { } async fn validate_model_connection(&self) -> anyhow::Result<()> { - let model = self - .default_model - .as_deref() - .context("model not selected")?; + let Some(model) = self.default_model.as_deref() else { + println!(" ⏭ Skipped (no model configured yet)"); + return Ok(()); + }; let mut router = build_router(&self.auth_manager).map_err(|error| anyhow!(error.to_string()))?; router