From 5c70f8391f42a2d8dff25b214c183285a9c184ae Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Mon, 17 Nov 2025 22:23:14 -0800 Subject: [PATCH] Fix panic when using sweep AI without token env var (#42940) Release Notes: - N/A --- crates/sweep_ai/src/sweep_ai.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/crates/sweep_ai/src/sweep_ai.rs b/crates/sweep_ai/src/sweep_ai.rs index e8a2522c0b34896ad09fd8a8d346e2ba31c9a1e7..c5c0fe31dd8ff530a685b5074b28dac945e97c1c 100644 --- a/crates/sweep_ai/src/sweep_ai.rs +++ b/crates/sweep_ai/src/sweep_ai.rs @@ -84,6 +84,7 @@ impl Display for EditPredictionId { pub struct SweepAi { projects: HashMap, debug_info: Arc, + api_token: Option, } struct SweepAiProject { @@ -113,6 +114,7 @@ impl SweepAi { fn new(cx: &mut Context) -> Self { Self { + api_token: std::env::var("SWEEP_AI_TOKEN").ok(), projects: HashMap::default(), debug_info: format!( "Zed v{version} ({sha}) - OS: {os} - Zed v{version}", @@ -237,6 +239,9 @@ impl SweepAi { ) -> Task>> { let snapshot = active_buffer.read(cx).snapshot(); let debug_info = self.debug_info.clone(); + let Some(api_token) = self.api_token.clone() else { + return Task::ready(Ok(None)); + }; let full_path: Arc = snapshot .file() .map(|file| file.full_path(cx)) @@ -339,10 +344,7 @@ impl SweepAi { let request = http_client::Request::builder() .uri(SWEEP_API_URL) .header("Content-Type", "application/json") - .header( - "Authorization", - format!("Bearer {}", std::env::var("SWEEP_TOKEN").unwrap()), - ) + .header("Authorization", format!("Bearer {}", api_token)) .header("Connection", "keep-alive") .header("Content-Encoding", "br") .method(Method::POST) @@ -579,9 +581,9 @@ impl edit_prediction::EditPredictionProvider for SweepAiEditPredictionProvider { &self, _buffer: &Entity, _cursor_position: language::Anchor, - _cx: &App, + cx: &App, ) -> bool { - true + self.sweep_ai.read(cx).api_token.is_some() } fn is_refreshing(&self) -> bool {