Finish long-running agent parity
This commit is contained in:
18
src/app.rs
18
src/app.rs
@@ -97,6 +97,8 @@ pub(crate) struct App {
|
||||
#[cfg(target_os = "macos")]
|
||||
active_compaction: Option<generation::CompactionRequest>,
|
||||
#[cfg(target_os = "macos")]
|
||||
active_tool_check: Option<generation::ToolResultCheck>,
|
||||
#[cfg(target_os = "macos")]
|
||||
agent_tools: Option<(i32, Arc<Mutex<crate::agent::Tools>>)>,
|
||||
#[cfg(target_os = "macos")]
|
||||
active_tools: Option<crate::agent::ActiveTools>,
|
||||
@@ -110,6 +112,7 @@ pub(crate) struct App {
|
||||
pub(super) activity: Option<String>,
|
||||
stop_requested: bool,
|
||||
system_prompt_seen_at: u32,
|
||||
manual_compaction_queued: bool,
|
||||
#[cfg(target_os = "macos")]
|
||||
skip_compaction_once: bool,
|
||||
}
|
||||
@@ -307,6 +310,7 @@ impl App {
|
||||
active_generation: None,
|
||||
#[cfg(target_os = "macos")]
|
||||
active_compaction: None,
|
||||
active_tool_check: None,
|
||||
#[cfg(target_os = "macos")]
|
||||
agent_tools: None,
|
||||
#[cfg(target_os = "macos")]
|
||||
@@ -330,6 +334,7 @@ impl App {
|
||||
activity: None,
|
||||
stop_requested: false,
|
||||
system_prompt_seen_at: 0,
|
||||
manual_compaction_queued: false,
|
||||
#[cfg(target_os = "macos")]
|
||||
skip_compaction_once: false,
|
||||
}
|
||||
@@ -404,6 +409,7 @@ impl App {
|
||||
active_generation: None,
|
||||
#[cfg(target_os = "macos")]
|
||||
active_compaction: None,
|
||||
active_tool_check: None,
|
||||
#[cfg(target_os = "macos")]
|
||||
agent_tools: None,
|
||||
#[cfg(target_os = "macos")]
|
||||
@@ -421,6 +427,7 @@ impl App {
|
||||
activity: None,
|
||||
stop_requested: false,
|
||||
system_prompt_seen_at: 0,
|
||||
manual_compaction_queued: false,
|
||||
#[cfg(target_os = "macos")]
|
||||
skip_compaction_once: false,
|
||||
}
|
||||
@@ -790,6 +797,10 @@ impl App {
|
||||
if let Some(compaction) = &self.active_compaction {
|
||||
compaction.active.cancel.store(true, Ordering::Relaxed);
|
||||
}
|
||||
#[cfg(target_os = "macos")]
|
||||
if let Some(check) = &self.active_tool_check {
|
||||
check.active.cancel.store(true, Ordering::Relaxed);
|
||||
}
|
||||
}
|
||||
Message::GenerationTick => {
|
||||
#[cfg(target_os = "macos")]
|
||||
@@ -945,8 +956,9 @@ impl App {
|
||||
}
|
||||
Message::CompactSession(session_id) => {
|
||||
self.session_menu = None;
|
||||
if self.generating || self.selected_session != Some(session_id) {
|
||||
self.error = Some("Open an idle session before compacting it.".into());
|
||||
if !self.can_compact_session(session_id) {
|
||||
self.error =
|
||||
Some("Open an idle session with new chat before compacting it.".into());
|
||||
} else {
|
||||
#[cfg(target_os = "macos")]
|
||||
if let Err(error) = self.start_compaction(
|
||||
@@ -1617,6 +1629,8 @@ mod tests {
|
||||
user: false,
|
||||
tool: false,
|
||||
system: false,
|
||||
compaction: false,
|
||||
compaction_tail_start: None,
|
||||
reasoning: Some(String::new()),
|
||||
reasoning_complete: false,
|
||||
reasoning_open: true,
|
||||
|
||||
Reference in New Issue
Block a user