assistant: Restructure ambient context in preparation for adding more (#11822)

Marshall Bowers created

This PR restructures the ambient context in the `assistant` crate to
make it more amenable to adding more kinds of ambient context.

Release Notes:

- N/A

Change summary

crates/assistant/src/ambient_context.rs                |  8 +++
crates/assistant/src/ambient_context/recent_buffers.rs | 25 ++++++++++
crates/assistant/src/assistant.rs                      |  1 
crates/assistant/src/assistant_panel.rs                | 29 -----------
4 files changed, 35 insertions(+), 28 deletions(-)

Detailed changes

crates/assistant/src/ambient_context/recent_buffers.rs 🔗

@@ -0,0 +1,25 @@
+use gpui::{Subscription, Task, WeakModel};
+use language::Buffer;
+
+pub struct RecentBuffersContext {
+    pub enabled: bool,
+    pub buffers: Vec<RecentBuffer>,
+    pub message: String,
+    pub pending_message: Option<Task<()>>,
+}
+
+pub struct RecentBuffer {
+    pub buffer: WeakModel<Buffer>,
+    pub _subscription: Subscription,
+}
+
+impl Default for RecentBuffersContext {
+    fn default() -> Self {
+        Self {
+            enabled: true,
+            buffers: Vec::new(),
+            message: String::new(),
+            pending_message: None,
+        }
+    }
+}

crates/assistant/src/assistant_panel.rs 🔗

@@ -1,3 +1,4 @@
+use crate::ambient_context::{AmbientContext, RecentBuffer};
 use crate::{
     assistant_settings::{AssistantDockPosition, AssistantSettings, ZedDotDevModel},
     codegen::{self, Codegen, CodegenKind},
@@ -1367,34 +1368,6 @@ pub struct Conversation {
     telemetry: Option<Arc<Telemetry>>,
 }
 
-#[derive(Default)]
-struct AmbientContext {
-    recent_buffers: RecentBuffersContext,
-}
-
-struct RecentBuffersContext {
-    enabled: bool,
-    buffers: Vec<RecentBuffer>,
-    message: String,
-    pending_message: Option<Task<()>>,
-}
-
-struct RecentBuffer {
-    buffer: WeakModel<Buffer>,
-    _subscription: Subscription,
-}
-
-impl Default for RecentBuffersContext {
-    fn default() -> Self {
-        Self {
-            enabled: true,
-            buffers: Vec::new(),
-            message: String::new(),
-            pending_message: None,
-        }
-    }
-}
-
 impl EventEmitter<ConversationEvent> for Conversation {}
 
 impl Conversation {