Update Agent panel to work with CloudUserStore
(#35436)
This PR updates the Agent panel to work with the `CloudUserStore` instead of the `UserStore`, reducing its reliance on being connected to Collab to function. Release Notes: - N/A --------- Co-authored-by: Richard Feldman <oss@rtfeldman.com>
This commit is contained in:
parent
09b93caa9b
commit
72d354de6c
16 changed files with 212 additions and 108 deletions
|
@ -8,6 +8,7 @@ use agent_settings::{AgentProfileId, CompletionMode};
|
|||
use anyhow::{Context as _, Result, anyhow};
|
||||
use assistant_tool::{Tool, ToolId, ToolWorkingSet};
|
||||
use chrono::{DateTime, Utc};
|
||||
use client::CloudUserStore;
|
||||
use collections::HashMap;
|
||||
use context_server::ContextServerId;
|
||||
use futures::{
|
||||
|
@ -104,6 +105,7 @@ pub type TextThreadStore = assistant_context::ContextStore;
|
|||
|
||||
pub struct ThreadStore {
|
||||
project: Entity<Project>,
|
||||
cloud_user_store: Entity<CloudUserStore>,
|
||||
tools: Entity<ToolWorkingSet>,
|
||||
prompt_builder: Arc<PromptBuilder>,
|
||||
prompt_store: Option<Entity<PromptStore>>,
|
||||
|
@ -124,6 +126,7 @@ impl EventEmitter<RulesLoadingError> for ThreadStore {}
|
|||
impl ThreadStore {
|
||||
pub fn load(
|
||||
project: Entity<Project>,
|
||||
cloud_user_store: Entity<CloudUserStore>,
|
||||
tools: Entity<ToolWorkingSet>,
|
||||
prompt_store: Option<Entity<PromptStore>>,
|
||||
prompt_builder: Arc<PromptBuilder>,
|
||||
|
@ -133,8 +136,14 @@ impl ThreadStore {
|
|||
let (thread_store, ready_rx) = cx.update(|cx| {
|
||||
let mut option_ready_rx = None;
|
||||
let thread_store = cx.new(|cx| {
|
||||
let (thread_store, ready_rx) =
|
||||
Self::new(project, tools, prompt_builder, prompt_store, cx);
|
||||
let (thread_store, ready_rx) = Self::new(
|
||||
project,
|
||||
cloud_user_store,
|
||||
tools,
|
||||
prompt_builder,
|
||||
prompt_store,
|
||||
cx,
|
||||
);
|
||||
option_ready_rx = Some(ready_rx);
|
||||
thread_store
|
||||
});
|
||||
|
@ -147,6 +156,7 @@ impl ThreadStore {
|
|||
|
||||
fn new(
|
||||
project: Entity<Project>,
|
||||
cloud_user_store: Entity<CloudUserStore>,
|
||||
tools: Entity<ToolWorkingSet>,
|
||||
prompt_builder: Arc<PromptBuilder>,
|
||||
prompt_store: Option<Entity<PromptStore>>,
|
||||
|
@ -190,6 +200,7 @@ impl ThreadStore {
|
|||
|
||||
let this = Self {
|
||||
project,
|
||||
cloud_user_store,
|
||||
tools,
|
||||
prompt_builder,
|
||||
prompt_store,
|
||||
|
@ -407,6 +418,7 @@ impl ThreadStore {
|
|||
cx.new(|cx| {
|
||||
Thread::new(
|
||||
self.project.clone(),
|
||||
self.cloud_user_store.clone(),
|
||||
self.tools.clone(),
|
||||
self.prompt_builder.clone(),
|
||||
self.project_context.clone(),
|
||||
|
@ -425,6 +437,7 @@ impl ThreadStore {
|
|||
ThreadId::new(),
|
||||
serialized,
|
||||
self.project.clone(),
|
||||
self.cloud_user_store.clone(),
|
||||
self.tools.clone(),
|
||||
self.prompt_builder.clone(),
|
||||
self.project_context.clone(),
|
||||
|
@ -456,6 +469,7 @@ impl ThreadStore {
|
|||
id.clone(),
|
||||
thread,
|
||||
this.project.clone(),
|
||||
this.cloud_user_store.clone(),
|
||||
this.tools.clone(),
|
||||
this.prompt_builder.clone(),
|
||||
this.project_context.clone(),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue