diff --git a/crates/agent/src/agent_panel.rs b/crates/agent/src/agent_panel.rs index 3af4af029eaeb333895642ca16f2f1143e67ace4..6d6e5c471b54481787511d2d505fd3977b515a9e 100644 --- a/crates/agent/src/agent_panel.rs +++ b/crates/agent/src/agent_panel.rs @@ -2439,9 +2439,6 @@ impl AgentPanel { .occlude() .child(match last_error { ThreadError::PaymentRequired => self.render_payment_required_error(cx), - ThreadError::MaxMonthlySpendReached => { - self.render_max_monthly_spend_reached_error(cx) - } ThreadError::ModelRequestLimitReached { plan } => { self.render_model_request_limit_reached_error(plan, cx) } @@ -2501,56 +2498,6 @@ impl AgentPanel { .into_any() } - fn render_max_monthly_spend_reached_error(&self, cx: &mut Context) -> AnyElement { - const ERROR_MESSAGE: &str = "You have reached your maximum monthly spend. Increase your spend limit to continue using Zed LLMs."; - - v_flex() - .gap_0p5() - .child( - h_flex() - .gap_1p5() - .items_center() - .child(Icon::new(IconName::XCircle).color(Color::Error)) - .child(Label::new("Max Monthly Spend Reached").weight(FontWeight::MEDIUM)), - ) - .child( - div() - .id("error-message") - .max_h_24() - .overflow_y_scroll() - .child(Label::new(ERROR_MESSAGE)), - ) - .child( - h_flex() - .justify_end() - .mt_1() - .gap_1() - .child(self.create_copy_button(ERROR_MESSAGE)) - .child( - Button::new("subscribe", "Update Monthly Spend Limit").on_click( - cx.listener(|this, _, _, cx| { - this.thread.update(cx, |this, _cx| { - this.clear_last_error(); - }); - - cx.open_url(&zed_urls::account_url(cx)); - cx.notify(); - }), - ), - ) - .child(Button::new("dismiss", "Dismiss").on_click(cx.listener( - |this, _, _, cx| { - this.thread.update(cx, |this, _cx| { - this.clear_last_error(); - }); - - cx.notify(); - }, - ))), - ) - .into_any() - } - fn render_model_request_limit_reached_error( &self, plan: Plan, diff --git a/crates/agent/src/thread.rs b/crates/agent/src/thread.rs index 2b6269a053d7c7ee580338d5b547718552bed533..50ef8b256b817bc5b654eb0f656d998003bc14cd 100644 --- a/crates/agent/src/thread.rs +++ b/crates/agent/src/thread.rs @@ -22,9 +22,9 @@ use language_model::{ ConfiguredModel, LanguageModel, LanguageModelCompletionError, LanguageModelCompletionEvent, LanguageModelId, LanguageModelKnownError, LanguageModelRegistry, LanguageModelRequest, LanguageModelRequestMessage, LanguageModelRequestTool, LanguageModelToolResult, - LanguageModelToolResultContent, LanguageModelToolUseId, MaxMonthlySpendReachedError, - MessageContent, ModelRequestLimitReachedError, PaymentRequiredError, RequestUsage, Role, - SelectedModel, StopReason, TokenUsage, + LanguageModelToolResultContent, LanguageModelToolUseId, MessageContent, + ModelRequestLimitReachedError, PaymentRequiredError, RequestUsage, Role, SelectedModel, + StopReason, TokenUsage, }; use postage::stream::Stream as _; use project::Project; @@ -1688,10 +1688,6 @@ impl Thread { if error.is::() { cx.emit(ThreadEvent::ShowError(ThreadError::PaymentRequired)); - } else if error.is::() { - cx.emit(ThreadEvent::ShowError( - ThreadError::MaxMonthlySpendReached, - )); } else if let Some(error) = error.downcast_ref::() { @@ -2706,8 +2702,6 @@ impl Thread { pub enum ThreadError { #[error("Payment required")] PaymentRequired, - #[error("Max monthly spend reached")] - MaxMonthlySpendReached, #[error("Model request limit reached")] ModelRequestLimitReached { plan: Plan }, #[error("Message {header}: {message}")] diff --git a/crates/assistant_context_editor/src/context.rs b/crates/assistant_context_editor/src/context.rs index 047ca89db03cd510f63c92bfeac02ef86931766e..355199e71bd3dae5aace971dad5bc42dc34b9b6e 100644 --- a/crates/assistant_context_editor/src/context.rs +++ b/crates/assistant_context_editor/src/context.rs @@ -21,8 +21,8 @@ use language::{AnchorRangeExt, Bias, Buffer, LanguageRegistry, OffsetRangeExt, P use language_model::{ LanguageModel, LanguageModelCacheConfiguration, LanguageModelCompletionEvent, LanguageModelImage, LanguageModelRegistry, LanguageModelRequest, LanguageModelRequestMessage, - LanguageModelToolUseId, MaxMonthlySpendReachedError, MessageContent, PaymentRequiredError, - Role, StopReason, report_assistant_event, + LanguageModelToolUseId, MessageContent, PaymentRequiredError, Role, StopReason, + report_assistant_event, }; use open_ai::Model as OpenAiModel; use paths::contexts_dir; @@ -447,7 +447,6 @@ impl ContextOperation { pub enum ContextEvent { ShowAssistError(SharedString), ShowPaymentRequiredError, - ShowMaxMonthlySpendReachedError, MessagesEdited, SummaryChanged, SummaryGenerated, @@ -2155,12 +2154,6 @@ impl AssistantContext { metadata.status = MessageStatus::Canceled; }); Some(error.to_string()) - } else if error.is::() { - cx.emit(ContextEvent::ShowMaxMonthlySpendReachedError); - this.update_metadata(assistant_message_id, cx, |metadata| { - metadata.status = MessageStatus::Canceled; - }); - Some(error.to_string()) } else { let error_message = error .chain() diff --git a/crates/assistant_context_editor/src/context_editor.rs b/crates/assistant_context_editor/src/context_editor.rs index 21ec018dc8c4fe9b5d027e362e095f2d783ab1cd..b3c20e77201ea102c83998f71c3df3882b2c7608 100644 --- a/crates/assistant_context_editor/src/context_editor.rs +++ b/crates/assistant_context_editor/src/context_editor.rs @@ -114,7 +114,6 @@ type MessageHeader = MessageMetadata; #[derive(Clone)] enum AssistError { PaymentRequired, - MaxMonthlySpendReached, Message(SharedString), } @@ -732,9 +731,6 @@ impl ContextEditor { ContextEvent::ShowPaymentRequiredError => { self.last_error = Some(AssistError::PaymentRequired); } - ContextEvent::ShowMaxMonthlySpendReachedError => { - self.last_error = Some(AssistError::MaxMonthlySpendReached); - } } } @@ -2107,9 +2103,6 @@ impl ContextEditor { .occlude() .child(match last_error { AssistError::PaymentRequired => self.render_payment_required_error(cx), - AssistError::MaxMonthlySpendReached => { - self.render_max_monthly_spend_reached_error(cx) - } AssistError::Message(error_message) => { self.render_assist_error(error_message, cx) } @@ -2158,48 +2151,6 @@ impl ContextEditor { .into_any() } - fn render_max_monthly_spend_reached_error(&self, cx: &mut Context) -> AnyElement { - const ERROR_MESSAGE: &str = "You have reached your maximum monthly spend. Increase your spend limit to continue using Zed LLMs."; - - v_flex() - .gap_0p5() - .child( - h_flex() - .gap_1p5() - .items_center() - .child(Icon::new(IconName::XCircle).color(Color::Error)) - .child(Label::new("Max Monthly Spend Reached").weight(FontWeight::MEDIUM)), - ) - .child( - div() - .id("error-message") - .max_h_24() - .overflow_y_scroll() - .child(Label::new(ERROR_MESSAGE)), - ) - .child( - h_flex() - .justify_end() - .mt_1() - .child( - Button::new("subscribe", "Update Monthly Spend Limit").on_click( - cx.listener(|this, _, _window, cx| { - this.last_error = None; - cx.open_url(&zed_urls::account_url(cx)); - cx.notify(); - }), - ), - ) - .child(Button::new("dismiss", "Dismiss").on_click(cx.listener( - |this, _, _window, cx| { - this.last_error = None; - cx.notify(); - }, - ))), - ) - .into_any() - } - fn render_assist_error( &self, error_message: &SharedString, diff --git a/crates/language_model/src/model/cloud_model.rs b/crates/language_model/src/model/cloud_model.rs index 0cea0d6966f87e09afa9132afea7857d7e71d8b2..6db45cd561bb267db114a86cf81929dcc11cae3f 100644 --- a/crates/language_model/src/model/cloud_model.rs +++ b/crates/language_model/src/model/cloud_model.rs @@ -133,18 +133,6 @@ impl fmt::Display for PaymentRequiredError { } } -#[derive(Error, Debug)] -pub struct MaxMonthlySpendReachedError; - -impl fmt::Display for MaxMonthlySpendReachedError { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!( - f, - "Maximum spending limit reached for this month. For more usage, increase your spending limit." - ) - } -} - #[derive(Error, Debug)] pub struct ModelRequestLimitReachedError { pub plan: Plan, diff --git a/crates/language_models/src/provider/cloud.rs b/crates/language_models/src/provider/cloud.rs index ffc56c684bbebea7438cafe9daa70a5490218991..2826ef41dcf5e2624cd69ad91989878afab341a9 100644 --- a/crates/language_models/src/provider/cloud.rs +++ b/crates/language_models/src/provider/cloud.rs @@ -20,7 +20,7 @@ use language_model::{ }; use language_model::{ LanguageModelAvailability, LanguageModelCompletionEvent, LanguageModelProvider, LlmApiToken, - MaxMonthlySpendReachedError, PaymentRequiredError, RefreshLlmTokenListener, + PaymentRequiredError, RefreshLlmTokenListener, }; use proto::Plan; use release_channel::AppVersion; @@ -41,9 +41,9 @@ use ui::{TintColor, prelude::*}; use zed_llm_client::{ CLIENT_SUPPORTS_STATUS_MESSAGES_HEADER_NAME, CURRENT_PLAN_HEADER_NAME, CompletionBody, CompletionRequestStatus, CountTokensBody, CountTokensResponse, EXPIRED_LLM_TOKEN_HEADER_NAME, - MAX_LLM_MONTHLY_SPEND_REACHED_HEADER_NAME, MODEL_REQUESTS_RESOURCE_HEADER_VALUE, - SERVER_SUPPORTS_STATUS_MESSAGES_HEADER_NAME, SUBSCRIPTION_LIMIT_RESOURCE_HEADER_NAME, - TOOL_USE_LIMIT_REACHED_HEADER_NAME, ZED_VERSION_HEADER_NAME, + MODEL_REQUESTS_RESOURCE_HEADER_VALUE, SERVER_SUPPORTS_STATUS_MESSAGES_HEADER_NAME, + SUBSCRIPTION_LIMIT_RESOURCE_HEADER_NAME, TOOL_USE_LIMIT_REACHED_HEADER_NAME, + ZED_VERSION_HEADER_NAME, }; use crate::AllLanguageModelSettings; @@ -589,13 +589,6 @@ impl CloudLanguageModel { { retries_remaining -= 1; token = llm_api_token.refresh(&client).await?; - } else if status == StatusCode::FORBIDDEN - && response - .headers() - .get(MAX_LLM_MONTHLY_SPEND_REACHED_HEADER_NAME) - .is_some() - { - return Err(anyhow!(MaxMonthlySpendReachedError)); } else if status == StatusCode::FORBIDDEN && response .headers()