diff --git a/Cargo.lock b/Cargo.lock index 1921eb4b689b3b389d77953125a44625f3f71a34..9292fedc4c057fa08b8a6344cbcf583450b6c1c8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -343,7 +343,6 @@ dependencies = [ "chrono", "client", "cloud_api_types", - "cloud_llm_client", "collections", "command_palette_hooks", "component", @@ -864,7 +863,6 @@ dependencies = [ "chrono", "client", "clock", - "cloud_llm_client", "collections", "context_server", "fs", @@ -7367,7 +7365,6 @@ dependencies = [ "askpass", "buffer_diff", "call", - "cloud_llm_client", "collections", "component", "ctor", diff --git a/crates/agent/src/edit_agent.rs b/crates/agent/src/edit_agent.rs index 829e28903e77e02d461284017c7e9a3d183efad4..6e6cf9735a922695bf089bdcc78798fb086ad364 100644 --- a/crates/agent/src/edit_agent.rs +++ b/crates/agent/src/edit_agent.rs @@ -8,7 +8,6 @@ pub mod streaming_fuzzy_matcher; use crate::{Template, Templates}; use action_log::ActionLog; use anyhow::Result; -use cloud_llm_client::CompletionIntent; use create_file_parser::{CreateFileParser, CreateFileParserEvent}; pub use edit_parser::EditFormat; use edit_parser::{EditParser, EditParserEvent, EditParserMetrics}; @@ -21,8 +20,8 @@ use futures::{ use gpui::{AppContext, AsyncApp, Entity, Task}; use language::{Anchor, Buffer, BufferSnapshot, LineIndent, Point, TextBufferSnapshot}; use language_model::{ - LanguageModel, LanguageModelCompletionError, LanguageModelRequest, LanguageModelRequestMessage, - LanguageModelToolChoice, MessageContent, Role, + CompletionIntent, LanguageModel, LanguageModelCompletionError, LanguageModelRequest, + LanguageModelRequestMessage, LanguageModelToolChoice, MessageContent, Role, }; use project::{AgentLocation, Project}; use reindent::{IndentDelta, Reindenter}; diff --git a/crates/agent/src/tests/mod.rs b/crates/agent/src/tests/mod.rs index 4e53568aefaa8973b86fbfe505279a1836e55556..036a6f1030c43b16d51f864a1d0176891e90b772 100644 --- a/crates/agent/src/tests/mod.rs +++ b/crates/agent/src/tests/mod.rs @@ -7,7 +7,6 @@ use agent_client_protocol::{self as acp}; use agent_settings::AgentProfileId; use anyhow::Result; use client::{Client, UserStore}; -use cloud_llm_client::CompletionIntent; use collections::IndexMap; use context_server::{ContextServer, ContextServerCommand, ContextServerId}; use feature_flags::FeatureFlagAppExt as _; @@ -26,8 +25,8 @@ use gpui::{ }; use indoc::indoc; use language_model::{ - LanguageModel, LanguageModelCompletionError, LanguageModelCompletionEvent, LanguageModelId, - LanguageModelProviderName, LanguageModelRegistry, LanguageModelRequest, + CompletionIntent, LanguageModel, LanguageModelCompletionError, LanguageModelCompletionEvent, + LanguageModelId, LanguageModelProviderName, LanguageModelRegistry, LanguageModelRequest, LanguageModelRequestMessage, LanguageModelToolResult, LanguageModelToolSchemaFormat, LanguageModelToolUse, MessageContent, Role, StopReason, TokenUsage, fake_provider::FakeLanguageModel, diff --git a/crates/agent/src/thread.rs b/crates/agent/src/thread.rs index 2c40532295434e7df8db1332d2895b638f90490d..f7c55d4e49618a9642203513413de1c447ae28cf 100644 --- a/crates/agent/src/thread.rs +++ b/crates/agent/src/thread.rs @@ -20,7 +20,6 @@ use anyhow::{Context as _, Result, anyhow}; use chrono::{DateTime, Utc}; use client::UserStore; use cloud_api_types::Plan; -use cloud_llm_client::CompletionIntent; use collections::{HashMap, HashSet, IndexMap}; use fs::Fs; use futures::stream; @@ -35,12 +34,12 @@ use gpui::{ }; use heck::ToSnakeCase as _; use language_model::{ - LanguageModel, LanguageModelCompletionError, LanguageModelCompletionEvent, LanguageModelId, - LanguageModelImage, LanguageModelProviderId, LanguageModelRegistry, LanguageModelRequest, - LanguageModelRequestMessage, LanguageModelRequestTool, LanguageModelToolResult, - LanguageModelToolResultContent, LanguageModelToolSchemaFormat, LanguageModelToolUse, - LanguageModelToolUseId, Role, SelectedModel, Speed, StopReason, TokenUsage, - ZED_CLOUD_PROVIDER_ID, + CompletionIntent, LanguageModel, LanguageModelCompletionError, LanguageModelCompletionEvent, + LanguageModelId, LanguageModelImage, LanguageModelProviderId, LanguageModelRegistry, + LanguageModelRequest, LanguageModelRequestMessage, LanguageModelRequestTool, + LanguageModelToolResult, LanguageModelToolResultContent, LanguageModelToolSchemaFormat, + LanguageModelToolUse, LanguageModelToolUseId, Role, SelectedModel, Speed, StopReason, + TokenUsage, ZED_CLOUD_PROVIDER_ID, }; use project::Project; use prompt_store::ProjectContext; diff --git a/crates/agent/src/tools/edit_file_tool.rs b/crates/agent/src/tools/edit_file_tool.rs index b0da850399c1fc8c871c7559685abccd4251cd40..763efd6724a719b90af93843f203ef8c1c3976bb 100644 --- a/crates/agent/src/tools/edit_file_tool.rs +++ b/crates/agent/src/tools/edit_file_tool.rs @@ -8,14 +8,13 @@ use crate::{ use acp_thread::Diff; use agent_client_protocol::{self as acp, ToolCallLocation, ToolCallUpdateFields}; use anyhow::{Context as _, Result}; -use cloud_llm_client::CompletionIntent; use collections::HashSet; use futures::{FutureExt as _, StreamExt as _}; use gpui::{App, AppContext, AsyncApp, Entity, Task, WeakEntity}; use indoc::formatdoc; use language::language_settings::{self, FormatOnSave}; use language::{LanguageRegistry, ToPoint}; -use language_model::LanguageModelToolResultContent; +use language_model::{CompletionIntent, LanguageModelToolResultContent}; use project::lsp_store::{FormatTrigger, LspFormatTarget}; use project::{Project, ProjectPath}; use schemars::JsonSchema; diff --git a/crates/agent_ui/Cargo.toml b/crates/agent_ui/Cargo.toml index 662d983e544389d22821fcf14ae28293e81e7d91..245a5f5472b47db5660216d6d9147b89d865e61f 100644 --- a/crates/agent_ui/Cargo.toml +++ b/crates/agent_ui/Cargo.toml @@ -44,7 +44,6 @@ buffer_diff.workspace = true chrono.workspace = true client.workspace = true cloud_api_types.workspace = true -cloud_llm_client.workspace = true collections.workspace = true command_palette_hooks.workspace = true component.workspace = true diff --git a/crates/agent_ui/src/buffer_codegen.rs b/crates/agent_ui/src/buffer_codegen.rs index 4f7bf084b7e96a14e6ecaafb04adfdbb6712e574..9857dd8a4752e567b6c22ee0fb5932c79a15d82a 100644 --- a/crates/agent_ui/src/buffer_codegen.rs +++ b/crates/agent_ui/src/buffer_codegen.rs @@ -1,9 +1,6 @@ use crate::{context::LoadedContext, inline_prompt_editor::CodegenStatus}; use agent_settings::AgentSettings; use anyhow::{Context as _, Result}; -use uuid::Uuid; - -use cloud_llm_client::CompletionIntent; use collections::HashSet; use editor::{Anchor, AnchorRangeExt, MultiBuffer, MultiBufferSnapshot, ToOffset as _, ToPoint}; use futures::{ @@ -16,7 +13,7 @@ use futures::{ use gpui::{App, AppContext as _, AsyncApp, Context, Entity, EventEmitter, Subscription, Task}; use language::{Buffer, IndentKind, LanguageName, Point, TransactionId, line_diff}; use language_model::{ - LanguageModel, LanguageModelCompletionError, LanguageModelCompletionEvent, + CompletionIntent, LanguageModel, LanguageModelCompletionError, LanguageModelCompletionEvent, LanguageModelRegistry, LanguageModelRequest, LanguageModelRequestMessage, LanguageModelRequestTool, LanguageModelTextStream, LanguageModelToolChoice, LanguageModelToolUse, Role, TokenUsage, @@ -40,6 +37,7 @@ use std::{ time::Instant, }; use streaming_diff::{CharOperation, LineDiff, LineOperation, StreamingDiff}; +use uuid::Uuid; /// Use this tool when you cannot or should not make a rewrite. This includes: /// - The user's request is unclear, ambiguous, or nonsensical diff --git a/crates/agent_ui/src/terminal_inline_assistant.rs b/crates/agent_ui/src/terminal_inline_assistant.rs index 281edc838c959ee47216811812ebb53f0467f3c0..d8bcabf276e76c4701894d2830af88171072fe49 100644 --- a/crates/agent_ui/src/terminal_inline_assistant.rs +++ b/crates/agent_ui/src/terminal_inline_assistant.rs @@ -10,15 +10,14 @@ use agent::ThreadStore; use agent_settings::AgentSettings; use anyhow::{Context as _, Result}; -use cloud_llm_client::CompletionIntent; use collections::{HashMap, VecDeque}; use editor::{MultiBuffer, actions::SelectAll}; use fs::Fs; use gpui::{App, Entity, Focusable, Global, Subscription, Task, UpdateGlobal, WeakEntity}; use language::Buffer; use language_model::{ - ConfiguredModel, LanguageModelRegistry, LanguageModelRequest, LanguageModelRequestMessage, - Role, report_anthropic_event, + CompletionIntent, ConfiguredModel, LanguageModelRegistry, LanguageModelRequest, + LanguageModelRequestMessage, Role, report_anthropic_event, }; use project::Project; use prompt_store::{PromptBuilder, PromptStore}; diff --git a/crates/assistant_text_thread/Cargo.toml b/crates/assistant_text_thread/Cargo.toml index bbb5cf4778efd5d74b880b7350a71e72562f4d70..195fa34f4f0379248a189ee59fcf779d18bc09c9 100644 --- a/crates/assistant_text_thread/Cargo.toml +++ b/crates/assistant_text_thread/Cargo.toml @@ -21,7 +21,6 @@ assistant_slash_command.workspace = true chrono.workspace = true client.workspace = true clock.workspace = true -cloud_llm_client.workspace = true collections.workspace = true context_server.workspace = true fs.workspace = true diff --git a/crates/assistant_text_thread/src/text_thread.rs b/crates/assistant_text_thread/src/text_thread.rs index 7df6b32e59733086b70ce4dccaa40bbc9cbccf32..8b2fdc6187af9e525e07c54d3cbd08f32261f734 100644 --- a/crates/assistant_text_thread/src/text_thread.rs +++ b/crates/assistant_text_thread/src/text_thread.rs @@ -6,7 +6,6 @@ use assistant_slash_command::{ }; use client::{self, proto}; use clock::ReplicaId; -use cloud_llm_client::CompletionIntent; use collections::{HashMap, HashSet}; use fs::{Fs, RenameOptions}; @@ -18,9 +17,9 @@ use gpui::{ use itertools::Itertools as _; use language::{AnchorRangeExt, Bias, Buffer, LanguageRegistry, OffsetRangeExt, Point, ToOffset}; use language_model::{ - AnthropicCompletionType, AnthropicEventData, AnthropicEventType, LanguageModel, - LanguageModelCacheConfiguration, LanguageModelCompletionEvent, LanguageModelImage, - LanguageModelRegistry, LanguageModelRequest, LanguageModelRequestMessage, + AnthropicCompletionType, AnthropicEventData, AnthropicEventType, CompletionIntent, + LanguageModel, LanguageModelCacheConfiguration, LanguageModelCompletionEvent, + LanguageModelImage, LanguageModelRegistry, LanguageModelRequest, LanguageModelRequestMessage, LanguageModelToolUseId, MessageContent, PaymentRequiredError, Role, StopReason, report_anthropic_event, }; diff --git a/crates/cloud_llm_client/src/cloud_llm_client.rs b/crates/cloud_llm_client/src/cloud_llm_client.rs index da66b1a87463cbd0d67cfc1240f32209d37b6446..35eb3f2b80dd400558b1f027781f5b8cf63bb6cb 100644 --- a/crates/cloud_llm_client/src/cloud_llm_client.rs +++ b/crates/cloud_llm_client/src/cloud_llm_client.rs @@ -193,29 +193,12 @@ pub enum EditPredictionRejectReason { Rejected, } -#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy, Serialize, Deserialize)] -#[serde(rename_all = "snake_case")] -pub enum CompletionIntent { - UserPrompt, - Subagent, - ToolResults, - ThreadSummarization, - ThreadContextSummarization, - CreateFile, - EditFile, - InlineAssist, - TerminalInlineAssist, - GenerateGitCommitMessage, -} - #[derive(Debug, Serialize, Deserialize)] pub struct CompletionBody { #[serde(skip_serializing_if = "Option::is_none", default)] pub thread_id: Option, #[serde(skip_serializing_if = "Option::is_none", default)] pub prompt_id: Option, - #[serde(skip_serializing_if = "Option::is_none", default)] - pub intent: Option, pub provider: LanguageModelProvider, pub model: String, pub provider_request: serde_json::Value, diff --git a/crates/git_ui/Cargo.toml b/crates/git_ui/Cargo.toml index 464a71489e2a0ed9118ca672299c9b7310855668..2525edd357143fe0514bd671953d171466ec9aa5 100644 --- a/crates/git_ui/Cargo.toml +++ b/crates/git_ui/Cargo.toml @@ -21,7 +21,6 @@ anyhow.workspace = true askpass.workspace = true buffer_diff.workspace = true call.workspace = true -cloud_llm_client.workspace = true collections.workspace = true component.workspace = true db.workspace = true diff --git a/crates/git_ui/src/git_panel.rs b/crates/git_ui/src/git_panel.rs index 6c6b4de1e9a4ac6e7a7f6028d49c2f7b86c4f6b3..77d05f52f7b799bfdbb4b081e3ca2368de6fd45f 100644 --- a/crates/git_ui/src/git_panel.rs +++ b/crates/git_ui/src/git_panel.rs @@ -12,7 +12,6 @@ use crate::{ use agent_settings::AgentSettings; use anyhow::Context as _; use askpass::AskPassDelegate; -use cloud_llm_client::CompletionIntent; use collections::{BTreeMap, HashMap, HashSet}; use db::kvp::KeyValueStore; use editor::{ @@ -45,7 +44,8 @@ use gpui::{ use itertools::Itertools; use language::{Buffer, File}; use language_model::{ - ConfiguredModel, LanguageModelRegistry, LanguageModelRequest, LanguageModelRequestMessage, Role, + CompletionIntent, ConfiguredModel, LanguageModelRegistry, LanguageModelRequest, + LanguageModelRequestMessage, Role, }; use menu; use multi_buffer::ExcerptInfo; diff --git a/crates/language_model/src/request.rs b/crates/language_model/src/request.rs index 3e8408f8334a52c2c807f991535cbbbd79800c4b..9a5e96078cd4d952185261c79032c5c5fdf30060 100644 --- a/crates/language_model/src/request.rs +++ b/crates/language_model/src/request.rs @@ -3,7 +3,6 @@ use std::sync::Arc; use anyhow::Result; use base64::write::EncoderWriter; -use cloud_llm_client::CompletionIntent; use gpui::{ App, AppContext as _, DevicePixels, Image, ImageFormat, ObjectFit, SharedString, Size, Task, point, px, size, @@ -443,6 +442,21 @@ pub enum LanguageModelToolChoice { None, } +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum CompletionIntent { + UserPrompt, + Subagent, + ToolResults, + ThreadSummarization, + ThreadContextSummarization, + CreateFile, + EditFile, + InlineAssist, + TerminalInlineAssist, + GenerateGitCommitMessage, +} + #[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq)] pub struct LanguageModelRequest { pub thread_id: Option, diff --git a/crates/language_models/src/provider/cloud.rs b/crates/language_models/src/provider/cloud.rs index 1e68ad1971410445c8df731b6d7bae4243074cfe..161ee6e9abd5283dfbe10c4e7c9dc5597fc4b5b9 100644 --- a/crates/language_models/src/provider/cloud.rs +++ b/crates/language_models/src/provider/cloud.rs @@ -769,7 +769,6 @@ impl LanguageModel for CloudLanguageModel { > { let thread_id = request.thread_id.clone(); let prompt_id = request.prompt_id.clone(); - let intent = request.intent; let app_version = Some(cx.update(|cx| AppVersion::global(cx))); let user_store = self.user_store.clone(); let organization_id = cx.update(|cx| { @@ -822,7 +821,6 @@ impl LanguageModel for CloudLanguageModel { CompletionBody { thread_id, prompt_id, - intent, provider: cloud_llm_client::LanguageModelProvider::Anthropic, model: request.model.clone(), provider_request: serde_json::to_value(&request) @@ -881,7 +879,6 @@ impl LanguageModel for CloudLanguageModel { CompletionBody { thread_id, prompt_id, - intent, provider: cloud_llm_client::LanguageModelProvider::OpenAi, model: request.model.clone(), provider_request: serde_json::to_value(&request) @@ -923,7 +920,6 @@ impl LanguageModel for CloudLanguageModel { CompletionBody { thread_id, prompt_id, - intent, provider: cloud_llm_client::LanguageModelProvider::XAi, model: request.model.clone(), provider_request: serde_json::to_value(&request) @@ -958,7 +954,6 @@ impl LanguageModel for CloudLanguageModel { CompletionBody { thread_id, prompt_id, - intent, provider: cloud_llm_client::LanguageModelProvider::Google, model: request.model.model_id.clone(), provider_request: serde_json::to_value(&request) diff --git a/crates/language_models/src/provider/copilot_chat.rs b/crates/language_models/src/provider/copilot_chat.rs index 65a7611d8f287528e5c426e01eb5e593d2620167..a2d39e1945e2791d9d5c998cc717a07498ebc157 100644 --- a/crates/language_models/src/provider/copilot_chat.rs +++ b/crates/language_models/src/provider/copilot_chat.rs @@ -4,7 +4,6 @@ use std::sync::Arc; use anthropic::AnthropicModelMode; use anyhow::{Result, anyhow}; -use cloud_llm_client::CompletionIntent; use collections::HashMap; use copilot::{GlobalCopilotAuth, Status}; use copilot_chat::responses as copilot_responses; @@ -21,7 +20,7 @@ use gpui::{AnyView, App, AsyncApp, Entity, Subscription, Task}; use http_client::StatusCode; use language::language_settings::all_language_settings; use language_model::{ - AuthenticateError, IconOrSvg, LanguageModel, LanguageModelCompletionError, + AuthenticateError, CompletionIntent, IconOrSvg, LanguageModel, LanguageModelCompletionError, LanguageModelCompletionEvent, LanguageModelCostInfo, LanguageModelEffortLevel, LanguageModelId, LanguageModelName, LanguageModelProvider, LanguageModelProviderId, LanguageModelProviderName, LanguageModelProviderState, LanguageModelRequest, LanguageModelRequestMessage,