diff --git a/assets/keymaps/default-linux.json b/assets/keymaps/default-linux.json index eeb16ee5d6..d5dac80674 100644 --- a/assets/keymaps/default-linux.json +++ b/assets/keymaps/default-linux.json @@ -220,9 +220,9 @@ "ctrl-shift-e": "project_panel::ToggleFocus", "ctrl-g": "search::SelectNextMatch", "ctrl-shift-g": "search::SelectPreviousMatch", - "ctrl-alt-/": "assistant::ToggleModelSelector", + "ctrl-alt-/": "agent::ToggleModelSelector", "ctrl-k h": "assistant::DeployHistory", - "ctrl-k l": "assistant::OpenRulesLibrary", + "ctrl-k l": "agent::OpenRulesLibrary", "new": "assistant::NewChat", "ctrl-t": "assistant::NewChat", "ctrl-n": "assistant::NewChat" @@ -237,7 +237,7 @@ "save": "workspace::Save", "ctrl->": "assistant::QuoteSelection", "ctrl-<": "assistant::InsertIntoEditor", - "ctrl-alt-/": "assistant::ToggleModelSelector", + "ctrl-alt-/": "agent::ToggleModelSelector", "shift-enter": "assistant::Split", "ctrl-r": "assistant::CycleMessageRole", "enter": "assistant::ConfirmCommand", @@ -251,9 +251,9 @@ "ctrl-alt-n": "agent::NewTextThread", "ctrl-shift-h": "agent::OpenHistory", "ctrl-alt-c": "agent::OpenConfiguration", - "ctrl-alt-p": "assistant::OpenRulesLibrary", + "ctrl-alt-p": "agent::OpenRulesLibrary", "ctrl-i": "agent::ToggleProfileSelector", - "ctrl-alt-/": "assistant::ToggleModelSelector", + "ctrl-alt-/": "agent::ToggleModelSelector", "ctrl-shift-a": "agent::ToggleContextPicker", "ctrl-shift-o": "agent::ToggleNavigationMenu", "ctrl-shift-i": "agent::ToggleOptionsMenu", @@ -568,7 +568,7 @@ "ctrl-shift-e": "project_panel::ToggleFocus", "ctrl-shift-b": "outline_panel::ToggleFocus", "ctrl-shift-g": "git_panel::ToggleFocus", - "ctrl-?": "assistant::ToggleFocus", + "ctrl-?": "agent::ToggleFocus", "alt-save": "workspace::SaveAll", "ctrl-alt-s": "workspace::SaveAll", "ctrl-k m": "language_selector::Toggle", diff --git a/assets/keymaps/default-macos.json b/assets/keymaps/default-macos.json index a1c626f2e4..db9b08d62f 100644 --- a/assets/keymaps/default-macos.json +++ b/assets/keymaps/default-macos.json @@ -266,9 +266,9 @@ "cmd-shift-e": "project_panel::ToggleFocus", "cmd-g": "search::SelectNextMatch", "cmd-shift-g": "search::SelectPreviousMatch", - "cmd-alt-/": "assistant::ToggleModelSelector", + "cmd-alt-/": "agent::ToggleModelSelector", "cmd-k h": "assistant::DeployHistory", - "cmd-k l": "assistant::OpenRulesLibrary", + "cmd-k l": "agent::OpenRulesLibrary", "cmd-t": "assistant::NewChat", "cmd-n": "assistant::NewChat" } @@ -282,11 +282,14 @@ "cmd-s": "workspace::Save", "cmd->": "assistant::QuoteSelection", "cmd-<": "assistant::InsertIntoEditor", - "cmd-alt-/": "assistant::ToggleModelSelector", "shift-enter": "assistant::Split", "ctrl-r": "assistant::CycleMessageRole", "enter": "assistant::ConfirmCommand", - "alt-enter": "editor::Newline" + "alt-enter": "editor::Newline", + "cmd-k c": "assistant::CopyCode", + "cmd-g": "search::SelectNextMatch", + "cmd-shift-g": "search::SelectPreviousMatch", + "cmd-k l": "agent::OpenRulesLibrary" } }, { @@ -297,14 +300,15 @@ "cmd-alt-n": "agent::NewTextThread", "cmd-shift-h": "agent::OpenHistory", "cmd-alt-c": "agent::OpenConfiguration", - "cmd-alt-p": "assistant::OpenRulesLibrary", + "cmd-alt-p": "agent::OpenRulesLibrary", "cmd-i": "agent::ToggleProfileSelector", - "cmd-alt-/": "assistant::ToggleModelSelector", + "cmd-alt-/": "agent::ToggleModelSelector", "cmd-shift-a": "agent::ToggleContextPicker", "cmd-shift-o": "agent::ToggleNavigationMenu", "cmd-shift-i": "agent::ToggleOptionsMenu", "shift-escape": "agent::ExpandMessageEditor", - "cmd-alt-e": "agent::RemoveAllContext" + "cmd-alt-e": "agent::RemoveAllContext", + "cmd-shift-e": "project_panel::ToggleFocus" } }, { @@ -635,7 +639,7 @@ "cmd-shift-e": "project_panel::ToggleFocus", "cmd-shift-b": "outline_panel::ToggleFocus", "ctrl-shift-g": "git_panel::ToggleFocus", - "cmd-?": "assistant::ToggleFocus", + "cmd-?": "agent::ToggleFocus", "cmd-alt-s": "workspace::SaveAll", "cmd-k m": "language_selector::Toggle", "escape": "workspace::Unfollow", @@ -774,7 +778,7 @@ "use_key_equivalents": true, "bindings": { "cmd-shift-a": "agent::ToggleContextPicker", - "cmd-alt-/": "assistant::ToggleModelSelector", + "cmd-alt-/": "agent::ToggleModelSelector", "cmd-alt-e": "agent::RemoveAllContext", "ctrl-[": "assistant::CyclePreviousInlineAssist", "ctrl-]": "assistant::CycleNextInlineAssist" diff --git a/assets/settings/default.json b/assets/settings/default.json index 29dae37786..06edea6f89 100644 --- a/assets/settings/default.json +++ b/assets/settings/default.json @@ -632,27 +632,27 @@ // Default width of the notification panel. "default_width": 380 }, - "assistant": { + "agent": { // Version of this setting. "version": "2", - // Whether the assistant is enabled. + // Whether the agent is enabled. "enabled": true, - // Whether to show the assistant panel button in the status bar. + // Whether to show the agent panel button in the status bar. "button": true, - // Where to dock the assistant panel. Can be 'left', 'right' or 'bottom'. + // Where to dock the agent panel. Can be 'left', 'right' or 'bottom'. "dock": "right", - // Default width when the assistant is docked to the left or right. + // Default width when the agent panel is docked to the left or right. "default_width": 640, - // Default height when the assistant is docked to the bottom. + // Default height when the agent panel is docked to the bottom. "default_height": 320, - // The default model to use when creating new chats. + // The default model to use when creating new threads. "default_model": { // The provider to use. "provider": "zed.dev", // The model to use. "model": "claude-3-7-sonnet-latest" }, - // The model to use when applying edits from the assistant. + // The model to use when applying edits from the agent. "editor_model": { // The provider to use. "provider": "zed.dev", @@ -713,7 +713,7 @@ "tools": {} } }, - // Where to show notifications when an agent has either completed + // Where to show notifications when the agent has either completed // its response, or else needs confirmation before it can run a // tool action. // "primary_screen" - Show the notification only on your primary screen (default) @@ -1018,9 +1018,9 @@ // 2. Display predictions inline only when holding a modifier key (alt by default). // "mode": "subtle" "mode": "eager", - // Whether edit predictions are enabled in the assistant panel. + // Whether edit predictions are enabled when editing text threads. // This setting has no effect if globally disabled. - "enabled_in_assistant": true + "enabled_in_text_threads": true }, // Settings specific to journaling "journal": { @@ -1614,7 +1614,7 @@ // } // ] "ssh_connections": [], - // Configures context servers for use in the Assistant. + // Configures context servers for use by the agent. "context_servers": {}, "debugger": { "stepping_granularity": "line", diff --git a/crates/agent/src/agent_diff.rs b/crates/agent/src/agent_diff.rs index 2af9625101..2a70939cf8 100644 --- a/crates/agent/src/agent_diff.rs +++ b/crates/agent/src/agent_diff.rs @@ -219,7 +219,7 @@ impl AgentDiffPane { .thread .read(cx) .summary() - .unwrap_or("Assistant Changes".into()); + .unwrap_or("Agent Changes".into()); if new_title != self.title { self.title = new_title; cx.emit(EditorEvent::TitleChanged); @@ -473,7 +473,7 @@ impl Item for AgentDiffPane { .thread .read(cx) .summary() - .unwrap_or("Assistant Changes".into()); + .unwrap_or("Agent Changes".into()); Label::new(format!("Review: {}", summary)) .color(if params.selected { Color::Default diff --git a/crates/agent/src/buffer_codegen.rs b/crates/agent/src/buffer_codegen.rs index 62c796f44b..11fa641c03 100644 --- a/crates/agent/src/buffer_codegen.rs +++ b/crates/agent/src/buffer_codegen.rs @@ -772,7 +772,7 @@ impl CodegenAlternative { cx: &mut Context, ) { let transaction = self.buffer.update(cx, |buffer, cx| { - // Avoid grouping assistant edits with user edits. + // Avoid grouping agent edits with user edits. buffer.finalize_last_transaction(cx); buffer.start_transaction(cx); buffer.edit(edits, None, cx); @@ -781,7 +781,7 @@ impl CodegenAlternative { if let Some(transaction) = transaction { if let Some(first_transaction) = self.transformation_transaction_id { - // Group all assistant edits into the first transaction. + // Group all agent edits into the first transaction. self.buffer.update(cx, |buffer, cx| { buffer.merge_transactions(transaction, first_transaction, cx) }); diff --git a/crates/agent/src/thread.rs b/crates/agent/src/thread.rs index 85ce89d5a3..7f7870fb0e 100644 --- a/crates/agent/src/thread.rs +++ b/crates/agent/src/thread.rs @@ -998,7 +998,7 @@ impl Thread { for message in &self.messages { text.push_str(match message.role { language_model::Role::User => "User:", - language_model::Role::Assistant => "Assistant:", + language_model::Role::Assistant => "Agent:", language_model::Role::System => "System:", }); text.push('\n'); @@ -2360,7 +2360,7 @@ impl Thread { "## {role}\n", role = match message.role { Role::User => "User", - Role::Assistant => "Assistant", + Role::Assistant => "Agent", Role::System => "System", } )?; diff --git a/crates/assistant_context_editor/src/context_editor.rs b/crates/assistant_context_editor/src/context_editor.rs index 7772d2cc49..e379231d08 100644 --- a/crates/assistant_context_editor/src/context_editor.rs +++ b/crates/assistant_context_editor/src/context_editor.rs @@ -258,7 +258,7 @@ impl ContextEditor { let show_edit_predictions = all_language_settings(None, cx) .edit_predictions - .enabled_in_assistant; + .enabled_in_text_threads; editor.set_show_edit_predictions(Some(show_edit_predictions), window, cx); @@ -333,7 +333,7 @@ impl ContextEditor { self.editor.update(cx, |editor, cx| { let show_edit_predictions = all_language_settings(None, cx) .edit_predictions - .enabled_in_assistant; + .enabled_in_text_threads; editor.set_show_edit_predictions(Some(show_edit_predictions), window, cx); }); @@ -1406,7 +1406,7 @@ impl ContextEditor { None, ), Role::Assistant => { - let base_label = Label::new("Assistant").color(Color::Info); + let base_label = Label::new("Agent").color(Color::Info); let mut spinner = None; let mut note = None; let animated_label = if llm_loading { @@ -1468,7 +1468,7 @@ impl ContextEditor { Tooltip::with_meta( "Toggle message role", None, - "Available roles: You (User), Assistant, System", + "Available roles: You (User), Agent, System", window, cx, ) diff --git a/crates/assistant_settings/src/assistant_settings.rs b/crates/assistant_settings/src/assistant_settings.rs index 74206d437b..4d6ee1eea3 100644 --- a/crates/assistant_settings/src/assistant_settings.rs +++ b/crates/assistant_settings/src/assistant_settings.rs @@ -693,7 +693,7 @@ pub struct LegacyAssistantSettingsContent { } impl Settings for AssistantSettings { - const KEY: Option<&'static str> = Some("assistant"); + const KEY: Option<&'static str> = Some("agent"); const PRESERVED_KEYS: Option<&'static [&'static str]> = Some(&["version"]); @@ -894,12 +894,12 @@ mod tests { #[derive(Debug, Deserialize)] struct AssistantSettingsTest { - assistant: AssistantSettingsContent, + agent: AssistantSettingsContent, } let assistant_settings: AssistantSettingsTest = serde_json_lenient::from_str(&raw_settings_value).unwrap(); - assert!(!assistant_settings.assistant.is_version_outdated()); + assert!(!assistant_settings.agent.is_version_outdated()); } } diff --git a/crates/language/src/language_settings.rs b/crates/language/src/language_settings.rs index ce7019bd85..8fc0042372 100644 --- a/crates/language/src/language_settings.rs +++ b/crates/language/src/language_settings.rs @@ -242,7 +242,7 @@ pub struct EditPredictionSettings { pub copilot: CopilotSettings, /// Whether edit predictions are enabled in the assistant panel. /// This setting has no effect if globally disabled. - pub enabled_in_assistant: bool, + pub enabled_in_text_threads: bool, } impl EditPredictionSettings { @@ -584,7 +584,7 @@ pub struct EditPredictionSettingsContent { /// Whether edit predictions are enabled in the assistant prompt editor. /// This has no effect if globally disabled. #[serde(default = "default_true")] - pub enabled_in_assistant: bool, + pub enabled_in_text_threads: bool, } #[derive(Clone, Debug, Default, Serialize, Deserialize, JsonSchema, PartialEq)] @@ -1216,10 +1216,10 @@ impl settings::Settings for AllLanguageSettings { }) .unwrap_or_default(); - let mut edit_predictions_enabled_in_assistant = default_value + let mut enabled_in_text_threads = default_value .edit_predictions .as_ref() - .map(|settings| settings.enabled_in_assistant) + .map(|settings| settings.enabled_in_text_threads) .unwrap_or(true); let mut file_types: FxHashMap, GlobSet> = FxHashMap::default(); @@ -1245,7 +1245,7 @@ impl settings::Settings for AllLanguageSettings { if let Some(edit_predictions) = user_settings.edit_predictions.as_ref() { edit_predictions_mode = edit_predictions.mode; - edit_predictions_enabled_in_assistant = edit_predictions.enabled_in_assistant; + enabled_in_text_threads = edit_predictions.enabled_in_text_threads; if let Some(disabled_globs) = edit_predictions.disabled_globs.as_ref() { completion_globs.extend(disabled_globs.iter()); @@ -1323,7 +1323,7 @@ impl settings::Settings for AllLanguageSettings { .collect(), mode: edit_predictions_mode, copilot: copilot_settings, - enabled_in_assistant: edit_predictions_enabled_in_assistant, + enabled_in_text_threads, }, defaults, languages, diff --git a/crates/language_model_selector/src/language_model_selector.rs b/crates/language_model_selector/src/language_model_selector.rs index 7ca093e1ea..0bc3060e6b 100644 --- a/crates/language_model_selector/src/language_model_selector.rs +++ b/crates/language_model_selector/src/language_model_selector.rs @@ -15,9 +15,12 @@ use proto::Plan; use ui::{ListItem, ListItemSpacing, PopoverMenu, PopoverMenuHandle, PopoverTrigger, prelude::*}; action_with_deprecated_aliases!( - assistant, + agent, ToggleModelSelector, - ["assistant2::ToggleModelSelector"] + [ + "assistant::ToggleModelSelector", + "assistant2::ToggleModelSelector" + ] ); const TRY_ZED_PRO_URL: &str = "https://zed.dev/pro"; diff --git a/crates/migrator/src/migrations.rs b/crates/migrator/src/migrations.rs index 4aeb869706..875cf62e69 100644 --- a/crates/migrator/src/migrations.rs +++ b/crates/migrator/src/migrations.rs @@ -57,3 +57,9 @@ pub(crate) mod m_2025_04_23 { pub(crate) use settings::SETTINGS_PATTERNS; } + +pub(crate) mod m_2025_05_05 { + mod settings; + + pub(crate) use settings::SETTINGS_PATTERNS; +} diff --git a/crates/migrator/src/migrations/m_2025_05_05/settings.rs b/crates/migrator/src/migrations/m_2025_05_05/settings.rs new file mode 100644 index 0000000000..88c6c338d1 --- /dev/null +++ b/crates/migrator/src/migrations/m_2025_05_05/settings.rs @@ -0,0 +1,41 @@ +use std::ops::Range; +use tree_sitter::{Query, QueryMatch}; + +use crate::{ + MigrationPatterns, patterns::SETTINGS_ASSISTANT_PATTERN, + patterns::SETTINGS_EDIT_PREDICTIONS_ASSISTANT_PATTERN, +}; + +pub const SETTINGS_PATTERNS: MigrationPatterns = &[ + (SETTINGS_ASSISTANT_PATTERN, rename_assistant), + ( + SETTINGS_EDIT_PREDICTIONS_ASSISTANT_PATTERN, + rename_edit_prediction_assistant, + ), +]; + +fn rename_assistant( + _contents: &str, + mat: &QueryMatch, + query: &Query, +) -> Option<(Range, String)> { + let key_capture_ix = query.capture_index_for_name("key")?; + let key_range = mat + .nodes_for_capture_index(key_capture_ix) + .next()? + .byte_range(); + return Some((key_range, "agent".to_string())); +} + +fn rename_edit_prediction_assistant( + _contents: &str, + mat: &QueryMatch, + query: &Query, +) -> Option<(Range, String)> { + let key_capture_ix = query.capture_index_for_name("enabled_in_assistant")?; + let key_range = mat + .nodes_for_capture_index(key_capture_ix) + .next()? + .byte_range(); + return Some((key_range, "enabled_in_text_threads".to_string())); +} diff --git a/crates/migrator/src/migrator.rs b/crates/migrator/src/migrator.rs index c180ea8e48..37af91cd85 100644 --- a/crates/migrator/src/migrator.rs +++ b/crates/migrator/src/migrator.rs @@ -136,6 +136,10 @@ pub fn migrate_settings(text: &str) -> Result> { migrations::m_2025_04_23::SETTINGS_PATTERNS, &SETTINGS_QUERY_2025_04_23, ), + ( + migrations::m_2025_05_05::SETTINGS_PATTERNS, + &SETTINGS_QUERY_2025_05_05, + ), ]; run_migrations(text, migrations) } @@ -222,6 +226,10 @@ define_query!( SETTINGS_QUERY_2025_04_23, migrations::m_2025_04_23::SETTINGS_PATTERNS ); +define_query!( + SETTINGS_QUERY_2025_05_05, + migrations::m_2025_05_05::SETTINGS_PATTERNS +); // custom query static EDIT_PREDICTION_SETTINGS_MIGRATION_QUERY: LazyLock = LazyLock::new(|| { @@ -581,7 +589,7 @@ mod tests { Some( r#" { - "assistant": { + "agent": { "profiles": { "custom": { "name": "Custom", @@ -619,7 +627,7 @@ mod tests { Some( r#" { - "assistant": { + "agent": { "profiles": { "custom": { "name": "Custom", @@ -655,7 +663,24 @@ mod tests { } } "#, - None, + Some( + r#" + { + "agent": { + "profiles": { + "custom": { + "name": "Custom", + "tools": { + "diagnostics": true, + "find_path": true, + "read_file": true + } + } + } + } + } + "#, + ), ) } @@ -679,7 +704,7 @@ mod tests { Some( r#" { - "assistant": { + "agent": { "profiles": { "default": { "tools": { @@ -694,4 +719,28 @@ mod tests { ), ); } + + #[test] + fn test_rename_assistant() { + assert_migrate_settings( + r#"{ + "assistant": { + "foo": "bar" + }, + "edit_predictions": { + "enabled_in_assistant": false, + } + }"#, + Some( + r#"{ + "agent": { + "foo": "bar" + }, + "edit_predictions": { + "enabled_in_text_threads": false, + } + }"#, + ), + ); + } } diff --git a/crates/migrator/src/patterns.rs b/crates/migrator/src/patterns.rs index 0d234eb35f..0cefb90fcf 100644 --- a/crates/migrator/src/patterns.rs +++ b/crates/migrator/src/patterns.rs @@ -7,6 +7,7 @@ pub(crate) use keymap::{ }; pub(crate) use settings::{ - SETTINGS_ASSISTANT_TOOLS_PATTERN, SETTINGS_LANGUAGES_PATTERN, + SETTINGS_ASSISTANT_PATTERN, SETTINGS_ASSISTANT_TOOLS_PATTERN, + SETTINGS_EDIT_PREDICTIONS_ASSISTANT_PATTERN, SETTINGS_LANGUAGES_PATTERN, SETTINGS_NESTED_KEY_VALUE_PATTERN, SETTINGS_ROOT_KEY_VALUE_PATTERN, }; diff --git a/crates/migrator/src/patterns/settings.rs b/crates/migrator/src/patterns/settings.rs index d0744cb238..bad228fbff 100644 --- a/crates/migrator/src/patterns/settings.rs +++ b/crates/migrator/src/patterns/settings.rs @@ -71,3 +71,25 @@ pub const SETTINGS_ASSISTANT_TOOLS_PATTERN: &str = r#"(document (#eq? @profiles "profiles") (#eq? @tools_key "tools") )"#; + +pub const SETTINGS_ASSISTANT_PATTERN: &str = r#"(document + (object + (pair + key: (string (string_content) @key) + ) + ) + (#eq? @key "assistant") +)"#; + +pub const SETTINGS_EDIT_PREDICTIONS_ASSISTANT_PATTERN: &str = r#"(document + (object + (pair + key: (string (string_content) @edit_predictions) + value: (object + (pair key: (string (string_content) @enabled_in_assistant)) + ) + ) + ) + (#eq? @edit_predictions "edit_predictions") + (#eq? @enabled_in_assistant "enabled_in_assistant") +)"#; diff --git a/crates/vim/src/command.rs b/crates/vim/src/command.rs index 736d024fd0..9a30e01515 100644 --- a/crates/vim/src/command.rs +++ b/crates/vim/src/command.rs @@ -876,7 +876,7 @@ fn generate_commands(_: &App) -> Vec { VimCommand::str(("C", "ollab"), "collab_panel::ToggleFocus"), VimCommand::str(("Ch", "at"), "chat_panel::ToggleFocus"), VimCommand::str(("No", "tifications"), "notification_panel::ToggleFocus"), - VimCommand::str(("A", "I"), "assistant::ToggleFocus"), + VimCommand::str(("A", "I"), "agent::ToggleFocus"), VimCommand::str(("G", "it"), "git_panel::ToggleFocus"), VimCommand::new(("noh", "lsearch"), search::buffer_search::Dismiss), VimCommand::new(("$", ""), EndOfDocument), diff --git a/crates/zed_actions/src/lib.rs b/crates/zed_actions/src/lib.rs index 152d098b11..0092554cd0 100644 --- a/crates/zed_actions/src/lib.rs +++ b/crates/zed_actions/src/lib.rs @@ -190,12 +190,16 @@ pub mod agent { } pub mod assistant { - use gpui::{actions, impl_action_with_deprecated_aliases, impl_actions}; + use gpui::{ + action_with_deprecated_aliases, actions, impl_action_with_deprecated_aliases, impl_actions, + }; use schemars::JsonSchema; use serde::Deserialize; use uuid::Uuid; - actions!(assistant, [ToggleFocus, ShowConfiguration]); + action_with_deprecated_aliases!(agent, ToggleFocus, ["assistant::ToggleFocus"]); + + actions!(assistant, [ShowConfiguration]); #[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema)] #[serde(deny_unknown_fields)] @@ -205,9 +209,12 @@ pub mod assistant { } impl_action_with_deprecated_aliases!( - assistant, + agent, OpenRulesLibrary, - ["assistant::DeployPromptLibrary"] + [ + "assistant::OpenRulesLibrary", + "assistant::DeployPromptLibrary" + ] ); #[derive(Clone, Default, Deserialize, PartialEq, JsonSchema)]