feat(goose-acp): enable parallel sessions with isolated agent state (#6392)
Signed-off-by: Adrian Cole <adrian@tetrate.io>
This commit is contained in:
@@ -4,7 +4,7 @@ use crate::config::paths::Paths;
|
||||
use crate::providers::utils::LOGS_TO_KEEP;
|
||||
use crate::session::SessionManager;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::fs::{self};
|
||||
use std::fs;
|
||||
use std::io::Cursor;
|
||||
use std::io::Write;
|
||||
use utoipa::ToSchema;
|
||||
@@ -69,7 +69,10 @@ pub fn get_system_info() -> SystemInfo {
|
||||
SystemInfo::collect()
|
||||
}
|
||||
|
||||
pub async fn generate_diagnostics(session_id: &str) -> anyhow::Result<Vec<u8>> {
|
||||
pub async fn generate_diagnostics(
|
||||
session_manager: &SessionManager,
|
||||
session_id: &str,
|
||||
) -> anyhow::Result<Vec<u8>> {
|
||||
let logs_dir = Paths::in_state_dir("logs");
|
||||
let config_dir = Paths::config_dir();
|
||||
let config_path = config_dir.join("config.yaml");
|
||||
@@ -96,7 +99,7 @@ pub async fn generate_diagnostics(session_id: &str) -> anyhow::Result<Vec<u8>> {
|
||||
zip.write_all(&fs::read(&path)?)?;
|
||||
}
|
||||
|
||||
let session_data = SessionManager::export_session(session_id).await?;
|
||||
let session_data = session_manager.export_session(session_id).await?;
|
||||
zip.start_file("session.json", options)?;
|
||||
zip.write_all(session_data.as_bytes())?;
|
||||
|
||||
|
||||
@@ -6,4 +6,6 @@ pub mod session_manager;
|
||||
|
||||
pub use diagnostics::{generate_diagnostics, get_system_info, SystemInfo};
|
||||
pub use extension_data::{EnabledExtensionsState, ExtensionData, ExtensionState, TodoState};
|
||||
pub use session_manager::{Session, SessionInsights, SessionManager, SessionType};
|
||||
pub use session_manager::{
|
||||
Session, SessionInsights, SessionManager, SessionType, SessionUpdateBuilder,
|
||||
};
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user