Skip to repository content

tenant.openagents/omega

No repository description is available.

OpenAgents Git authority 2026-07-28T03:57:40.256Z Public web read
NIP-34 coordinate30617:7649603503856e5148d571eac2766b288a8ff1e9e35d380337a1d2b0015b4f92:omega
MaintainersHidden in public view
References2 branches · 1 tag
Read-only clonegit clone https://openagents.com/git/tenant.openagents/omega.git
Browse files

context.rs

63 lines · 2.1 KB · rust
1use crate::mention_set::Mention;
2use gpui::{AppContext as _, Entity, Task};
3use language_model::{LanguageModelImage, LanguageModelRequestMessage, MessageContent};
4use ui::App;
5use util::ResultExt as _;
6
7use crate::mention_set::MentionSet;
8
9#[derive(Debug, Clone, Default)]
10pub struct LoadedContext {
11    pub text: String,
12    pub images: Vec<LanguageModelImage>,
13}
14
15impl LoadedContext {
16    pub fn add_to_request_message(&self, request_message: &mut LanguageModelRequestMessage) {
17        if !self.text.is_empty() {
18            request_message
19                .content
20                .push(MessageContent::Text(self.text.to_string()));
21        }
22
23        if !self.images.is_empty() {
24            // Some providers only support image parts after an initial text part
25            if request_message.content.is_empty() {
26                request_message
27                    .content
28                    .push(MessageContent::Text("Images attached by user:".to_string()));
29            }
30
31            for image in &self.images {
32                request_message
33                    .content
34                    .push(MessageContent::Image(image.clone()))
35            }
36        }
37    }
38}
39
40/// Loads and formats a collection of contexts.
41pub fn load_context(mention_set: &Entity<MentionSet>, cx: &mut App) -> Task<Option<LoadedContext>> {
42    let task = mention_set.update(cx, |mention_set, cx| mention_set.contents(true, cx));
43    cx.background_spawn(async move {
44        let mentions = task.await.log_err()?;
45        let mut loaded_context = LoadedContext::default();
46        loaded_context
47            .text
48            .push_str("The following items were attached by the user.\n");
49        for (_, (_, mention)) in mentions {
50            match mention {
51                Mention::Text { content, .. } => {
52                    loaded_context.text.push_str(&content);
53                }
54                Mention::Image(mention_image) => loaded_context.images.push(LanguageModelImage {
55                    source: mention_image.data,
56                }),
57                Mention::Link => {}
58            }
59        }
60        Some(loaded_context)
61    })
62}
63
Served at tenant.openagents/omega Member data and write actions are omitted.