From e5b97a5e48aadd47b9ee0dfbbeadf9c5cbcdcad1 Mon Sep 17 00:00:00 2001 From: Marshall Bowers Date: Mon, 24 Feb 2025 17:27:26 -0500 Subject: [PATCH] Move `report_assistant_event` into `language_model` crate (#25508) This PR moves the `report_assistant_event` function from the `language_models` crate to the `language_model` crate. This allows us to drop some dependencies on `language_models`. Release Notes: - N/A --- Cargo.lock | 4 ++-- crates/assistant/Cargo.toml | 1 - crates/assistant/src/inline_assistant.rs | 5 ++--- crates/assistant/src/terminal_inline_assistant.rs | 4 ++-- crates/assistant2/src/buffer_codegen.rs | 5 ++--- crates/assistant2/src/inline_assistant.rs | 3 +-- crates/assistant2/src/terminal_codegen.rs | 3 +-- crates/assistant2/src/terminal_inline_assistant.rs | 4 ++-- crates/assistant_context_editor/src/context.rs | 11 ++++------- crates/language_model/Cargo.toml | 2 ++ crates/language_model/src/language_model.rs | 13 ++++++++----- .../logging.rs => language_model/src/telemetry.rs} | 2 +- crates/language_models/Cargo.toml | 1 - crates/language_models/src/language_models.rs | 2 -- crates/language_models/src/provider/anthropic.rs | 2 +- 15 files changed, 28 insertions(+), 34 deletions(-) rename crates/{language_models/src/logging.rs => language_model/src/telemetry.rs} (97%) diff --git a/Cargo.lock b/Cargo.lock index 0e0c09c213..a932282cff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -395,7 +395,6 @@ dependencies = [ "language", "language_model", "language_model_selector", - "language_models", "languages", "log", "lsp", @@ -7014,6 +7013,7 @@ dependencies = [ "anthropic", "anyhow", "base64 0.22.1", + "client", "collections", "futures 0.3.31", "google_ai", @@ -7029,6 +7029,7 @@ dependencies = [ "serde_json", "smol", "strum", + "telemetry_events", "thiserror 1.0.69", "ui", "util", @@ -7081,7 +7082,6 @@ dependencies = [ "settings", "smol", "strum", - "telemetry_events", "theme", "thiserror 1.0.69", "tiktoken-rs", diff --git a/crates/assistant/Cargo.toml b/crates/assistant/Cargo.toml index 1bb7cbc1ae..7df6ff10ac 100644 --- a/crates/assistant/Cargo.toml +++ b/crates/assistant/Cargo.toml @@ -43,7 +43,6 @@ indoc.workspace = true language.workspace = true language_model.workspace = true language_model_selector.workspace = true -language_models.workspace = true log.workspace = true lsp.workspace = true menu.workspace = true diff --git a/crates/assistant/src/inline_assistant.rs b/crates/assistant/src/inline_assistant.rs index eb154ea020..02ae9a2333 100644 --- a/crates/assistant/src/inline_assistant.rs +++ b/crates/assistant/src/inline_assistant.rs @@ -32,11 +32,10 @@ use gpui::{ }; use language::{line_diff, Buffer, IndentKind, Point, Selection, TransactionId}; use language_model::{ - LanguageModel, LanguageModelRegistry, LanguageModelRequest, LanguageModelRequestMessage, - LanguageModelTextStream, Role, + report_assistant_event, LanguageModel, LanguageModelRegistry, LanguageModelRequest, + LanguageModelRequestMessage, LanguageModelTextStream, Role, }; use language_model_selector::{LanguageModelSelector, LanguageModelSelectorPopoverMenu}; -use language_models::report_assistant_event; use multi_buffer::MultiBufferRow; use parking_lot::Mutex; use project::{CodeAction, ProjectTransaction}; diff --git a/crates/assistant/src/terminal_inline_assistant.rs b/crates/assistant/src/terminal_inline_assistant.rs index e8b049371b..87b5f4bbda 100644 --- a/crates/assistant/src/terminal_inline_assistant.rs +++ b/crates/assistant/src/terminal_inline_assistant.rs @@ -16,10 +16,10 @@ use gpui::{ }; use language::Buffer; use language_model::{ - LanguageModelRegistry, LanguageModelRequest, LanguageModelRequestMessage, Role, + report_assistant_event, LanguageModelRegistry, LanguageModelRequest, + LanguageModelRequestMessage, Role, }; use language_model_selector::{LanguageModelSelector, LanguageModelSelectorPopoverMenu}; -use language_models::report_assistant_event; use prompt_library::PromptBuilder; use settings::{update_settings_file, Settings}; use std::{ diff --git a/crates/assistant2/src/buffer_codegen.rs b/crates/assistant2/src/buffer_codegen.rs index 4e62f9549d..a07b288f71 100644 --- a/crates/assistant2/src/buffer_codegen.rs +++ b/crates/assistant2/src/buffer_codegen.rs @@ -9,10 +9,9 @@ use futures::{channel::mpsc, future::LocalBoxFuture, join, SinkExt, Stream, Stre use gpui::{App, AppContext as _, Context, Entity, EventEmitter, Subscription, Task}; use language::{line_diff, Buffer, IndentKind, Point, TransactionId}; use language_model::{ - LanguageModel, LanguageModelRegistry, LanguageModelRequest, LanguageModelRequestMessage, - LanguageModelTextStream, Role, + report_assistant_event, LanguageModel, LanguageModelRegistry, LanguageModelRequest, + LanguageModelRequestMessage, LanguageModelTextStream, Role, }; -use language_models::report_assistant_event; use multi_buffer::MultiBufferRow; use parking_lot::Mutex; use prompt_library::PromptBuilder; diff --git a/crates/assistant2/src/inline_assistant.rs b/crates/assistant2/src/inline_assistant.rs index c307b47cb1..a7f7b1601d 100644 --- a/crates/assistant2/src/inline_assistant.rs +++ b/crates/assistant2/src/inline_assistant.rs @@ -24,8 +24,7 @@ use gpui::{ UpdateGlobal, WeakEntity, Window, }; use language::{Buffer, Point, Selection, TransactionId}; -use language_model::LanguageModelRegistry; -use language_models::report_assistant_event; +use language_model::{report_assistant_event, LanguageModelRegistry}; use multi_buffer::MultiBufferRow; use parking_lot::Mutex; use project::{CodeAction, ProjectTransaction}; diff --git a/crates/assistant2/src/terminal_codegen.rs b/crates/assistant2/src/terminal_codegen.rs index c9b6a54108..5a1873fe55 100644 --- a/crates/assistant2/src/terminal_codegen.rs +++ b/crates/assistant2/src/terminal_codegen.rs @@ -2,8 +2,7 @@ use crate::inline_prompt_editor::CodegenStatus; use client::telemetry::Telemetry; use futures::{channel::mpsc, SinkExt, StreamExt}; use gpui::{App, AppContext as _, Context, Entity, EventEmitter, Task}; -use language_model::{LanguageModelRegistry, LanguageModelRequest}; -use language_models::report_assistant_event; +use language_model::{report_assistant_event, LanguageModelRegistry, LanguageModelRequest}; use std::{sync::Arc, time::Instant}; use telemetry_events::{AssistantEvent, AssistantKind, AssistantPhase}; use terminal::Terminal; diff --git a/crates/assistant2/src/terminal_inline_assistant.rs b/crates/assistant2/src/terminal_inline_assistant.rs index 9abe2cbadb..788ccc9eca 100644 --- a/crates/assistant2/src/terminal_inline_assistant.rs +++ b/crates/assistant2/src/terminal_inline_assistant.rs @@ -13,9 +13,9 @@ use fs::Fs; use gpui::{App, Entity, Focusable, Global, Subscription, UpdateGlobal, WeakEntity}; use language::Buffer; use language_model::{ - LanguageModelRegistry, LanguageModelRequest, LanguageModelRequestMessage, Role, + report_assistant_event, LanguageModelRegistry, LanguageModelRequest, + LanguageModelRequestMessage, Role, }; -use language_models::report_assistant_event; use prompt_library::PromptBuilder; use std::sync::Arc; use telemetry_events::{AssistantEvent, AssistantKind, AssistantPhase}; diff --git a/crates/assistant_context_editor/src/context.rs b/crates/assistant_context_editor/src/context.rs index 7b72c4c04d..0ebdb9049a 100644 --- a/crates/assistant_context_editor/src/context.rs +++ b/crates/assistant_context_editor/src/context.rs @@ -19,14 +19,11 @@ use gpui::{ }; use language::{AnchorRangeExt, Bias, Buffer, LanguageRegistry, OffsetRangeExt, Point, ToOffset}; use language_model::{ - LanguageModel, LanguageModelCacheConfiguration, LanguageModelCompletionEvent, - LanguageModelImage, LanguageModelRegistry, LanguageModelRequest, LanguageModelRequestMessage, - LanguageModelToolUseId, MessageContent, Role, StopReason, -}; -use language_models::{ - provider::cloud::{MaxMonthlySpendReachedError, PaymentRequiredError}, - report_assistant_event, + report_assistant_event, LanguageModel, LanguageModelCacheConfiguration, + LanguageModelCompletionEvent, LanguageModelImage, LanguageModelRegistry, LanguageModelRequest, + LanguageModelRequestMessage, LanguageModelToolUseId, MessageContent, Role, StopReason, }; +use language_models::provider::cloud::{MaxMonthlySpendReachedError, PaymentRequiredError}; use open_ai::Model as OpenAiModel; use paths::contexts_dir; use project::Project; diff --git a/crates/language_model/Cargo.toml b/crates/language_model/Cargo.toml index 091ed524c8..e279c6989b 100644 --- a/crates/language_model/Cargo.toml +++ b/crates/language_model/Cargo.toml @@ -19,6 +19,7 @@ test-support = [] anthropic = { workspace = true, features = ["schemars"] } anyhow.workspace = true base64.workspace = true +client.workspace = true collections.workspace = true futures.workspace = true google_ai = { workspace = true, features = ["schemars"] } @@ -34,6 +35,7 @@ serde.workspace = true serde_json.workspace = true smol.workspace = true strum.workspace = true +telemetry_events.workspace = true thiserror.workspace = true ui.workspace = true util.workspace = true diff --git a/crates/language_model/src/language_model.rs b/crates/language_model/src/language_model.rs index 7b50702a6e..964d3b84e7 100644 --- a/crates/language_model/src/language_model.rs +++ b/crates/language_model/src/language_model.rs @@ -3,6 +3,7 @@ mod rate_limiter; mod registry; mod request; mod role; +mod telemetry; #[cfg(any(test, feature = "test-support"))] pub mod fake_provider; @@ -11,12 +12,7 @@ use anyhow::Result; use futures::FutureExt; use futures::{future::BoxFuture, stream::BoxStream, StreamExt, TryStreamExt as _}; use gpui::{AnyElement, AnyView, App, AsyncApp, SharedString, Task, Window}; -pub use model::*; use proto::Plan; -pub use rate_limiter::*; -pub use registry::*; -pub use request::*; -pub use role::*; use schemars::JsonSchema; use serde::{de::DeserializeOwned, Deserialize, Serialize}; use std::fmt; @@ -24,6 +20,13 @@ use std::{future::Future, sync::Arc}; use thiserror::Error; use ui::IconName; +pub use crate::model::*; +pub use crate::rate_limiter::*; +pub use crate::registry::*; +pub use crate::request::*; +pub use crate::role::*; +pub use crate::telemetry::*; + pub const ZED_CLOUD_PROVIDER_ID: &str = "zed.dev"; pub fn init(cx: &mut App) { diff --git a/crates/language_models/src/logging.rs b/crates/language_model/src/telemetry.rs similarity index 97% rename from crates/language_models/src/logging.rs rename to crates/language_model/src/telemetry.rs index 69fc3dfeec..0454d43c73 100644 --- a/crates/language_models/src/logging.rs +++ b/crates/language_model/src/telemetry.rs @@ -8,7 +8,7 @@ use std::sync::Arc; use telemetry_events::{AssistantEvent, AssistantKind, AssistantPhase}; use util::ResultExt; -use crate::provider::anthropic::PROVIDER_ID as ANTHROPIC_PROVIDER_ID; +pub const ANTHROPIC_PROVIDER_ID: &str = "anthropic"; pub fn report_assistant_event( event: AssistantEvent, diff --git a/crates/language_models/Cargo.toml b/crates/language_models/Cargo.toml index 9a9196ee1f..cc64a2b5c0 100644 --- a/crates/language_models/Cargo.toml +++ b/crates/language_models/Cargo.toml @@ -40,7 +40,6 @@ serde_json.workspace = true settings.workspace = true smol.workspace = true strum.workspace = true -telemetry_events.workspace = true theme.workspace = true thiserror.workspace = true tiktoken-rs.workspace = true diff --git a/crates/language_models/src/language_models.rs b/crates/language_models/src/language_models.rs index 11f9415b59..6a963875e6 100644 --- a/crates/language_models/src/language_models.rs +++ b/crates/language_models/src/language_models.rs @@ -6,7 +6,6 @@ use gpui::{App, Context, Entity}; use language_model::{LanguageModelProviderId, LanguageModelRegistry, ZED_CLOUD_PROVIDER_ID}; use provider::deepseek::DeepSeekLanguageModelProvider; -mod logging; pub mod provider; mod settings; @@ -21,7 +20,6 @@ use crate::provider::mistral::MistralLanguageModelProvider; use crate::provider::ollama::OllamaLanguageModelProvider; use crate::provider::open_ai::OpenAiLanguageModelProvider; pub use crate::settings::*; -pub use logging::report_assistant_event; pub fn init(user_store: Entity, client: Arc, fs: Arc, cx: &mut App) { crate::settings::init(fs, cx); diff --git a/crates/language_models/src/provider/anthropic.rs b/crates/language_models/src/provider/anthropic.rs index c3ec14f46e..3076e4a617 100644 --- a/crates/language_models/src/provider/anthropic.rs +++ b/crates/language_models/src/provider/anthropic.rs @@ -27,7 +27,7 @@ use theme::ThemeSettings; use ui::{prelude::*, Icon, IconName, Tooltip}; use util::{maybe, ResultExt}; -pub const PROVIDER_ID: &str = "anthropic"; +const PROVIDER_ID: &str = language_model::ANTHROPIC_PROVIDER_ID; const PROVIDER_NAME: &str = "Anthropic"; #[derive(Default, Clone, Debug, PartialEq)]