load all previous messages if --resume is passed (#2424)
This commit is contained in:
committed by
GitHub
parent
72f966e4fc
commit
a8d4bd0415
@@ -203,6 +203,14 @@ enum Command {
|
|||||||
)]
|
)]
|
||||||
resume: bool,
|
resume: bool,
|
||||||
|
|
||||||
|
/// Show message history when resuming
|
||||||
|
#[arg(
|
||||||
|
long,
|
||||||
|
help = "Show previous messages when resuming a session",
|
||||||
|
requires = "resume"
|
||||||
|
)]
|
||||||
|
history: bool,
|
||||||
|
|
||||||
/// Enable debug output mode
|
/// Enable debug output mode
|
||||||
#[arg(
|
#[arg(
|
||||||
long,
|
long,
|
||||||
@@ -413,6 +421,7 @@ pub async fn cli() -> Result<()> {
|
|||||||
command,
|
command,
|
||||||
identifier,
|
identifier,
|
||||||
resume,
|
resume,
|
||||||
|
history,
|
||||||
debug,
|
debug,
|
||||||
extensions,
|
extensions,
|
||||||
remote_extensions,
|
remote_extensions,
|
||||||
@@ -448,6 +457,12 @@ pub async fn cli() -> Result<()> {
|
|||||||
session.session_file().file_stem().and_then(|s| s.to_str()),
|
session.session_file().file_stem().and_then(|s| s.to_str()),
|
||||||
None,
|
None,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
|
// Render previous messages if resuming a session and history flag is set
|
||||||
|
if resume && history {
|
||||||
|
session.render_message_history();
|
||||||
|
}
|
||||||
|
|
||||||
let _ = session.interactive(None).await;
|
let _ = session.interactive(None).await;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -899,6 +899,31 @@ impl Session {
|
|||||||
self.messages.clone()
|
self.messages.clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Render all past messages from the session history
|
||||||
|
pub fn render_message_history(&self) {
|
||||||
|
if self.messages.is_empty() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Print session restored message
|
||||||
|
println!(
|
||||||
|
"\n{} {} messages loaded into context.",
|
||||||
|
console::style("Session restored:").green().bold(),
|
||||||
|
console::style(self.messages.len()).green()
|
||||||
|
);
|
||||||
|
|
||||||
|
// Render each message
|
||||||
|
for message in &self.messages {
|
||||||
|
output::render_message(message, self.debug);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add a visual separator after restored messages
|
||||||
|
println!(
|
||||||
|
"\n{}\n",
|
||||||
|
console::style("──────── New Messages ────────").dim()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/// Get the session metadata
|
/// Get the session metadata
|
||||||
pub fn get_metadata(&self) -> Result<session::SessionMetadata> {
|
pub fn get_metadata(&self) -> Result<session::SessionMetadata> {
|
||||||
if !self.session_file.exists() {
|
if !self.session_file.exists() {
|
||||||
|
|||||||
Reference in New Issue
Block a user