1use gpui::{Subscription, Task, WeakModel};
2use language::Buffer;
3
4use crate::{LanguageModelRequestMessage, Role};
5
6pub struct RecentBuffersContext {
7 pub enabled: bool,
8 pub buffers: Vec<RecentBuffer>,
9 pub message: String,
10 pub pending_message: Option<Task<()>>,
11}
12
13pub struct RecentBuffer {
14 pub buffer: WeakModel<Buffer>,
15 pub _subscription: Subscription,
16}
17
18impl Default for RecentBuffersContext {
19 fn default() -> Self {
20 Self {
21 enabled: true,
22 buffers: Vec::new(),
23 message: String::new(),
24 pending_message: None,
25 }
26 }
27}
28
29impl RecentBuffersContext {
30 /// Returns the [`RecentBuffersContext`] as a message to the language model.
31 pub fn to_message(&self) -> Option<LanguageModelRequestMessage> {
32 self.enabled.then(|| LanguageModelRequestMessage {
33 role: Role::System,
34 content: self.message.clone(),
35 })
36 }
37}