diff options
Diffstat (limited to 'src/config/mod.rs')
| -rw-r--r-- | src/config/mod.rs | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs index cb510ef..41e449a 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -583,7 +583,8 @@ impl Config { } pub fn use_prompt(&mut self, prompt: &str) -> Result<()> { - let role = Role::new(TEMP_ROLE_NAME, prompt); + let mut role = Role::new(TEMP_ROLE_NAME, prompt); + role.set_model(&self.model); self.use_role_obj(role) } @@ -705,9 +706,8 @@ impl Config { pub fn exit_session(&mut self) -> Result<()> { if let Some(mut session) = self.session.take() { - let is_repl = self.working_mode == WorkingMode::Repl; let sessions_dir = self.sessions_dir()?; - session.exit(&sessions_dir, is_repl)?; + session.exit(&sessions_dir, self.working_mode.is_repl())?; self.last_message = None; } Ok(()) @@ -723,7 +723,7 @@ impl Config { }; let session_path = self.session_file(&name)?; if let Some(session) = self.session.as_mut() { - session.save(&session_path)?; + session.save(&session_path, self.working_mode.is_repl())?; } Ok(()) } @@ -933,8 +933,8 @@ impl Config { } pub fn exit_bot(&mut self) -> Result<()> { + self.exit_session()?; if self.bot.take().is_some() { - self.exit_session()?; self.rag.take(); self.last_message = None; } @@ -1420,6 +1420,12 @@ pub enum WorkingMode { Serve, } +impl WorkingMode { + pub fn is_repl(&self) -> bool { + *self == WorkingMode::Repl + } +} + bitflags::bitflags! { #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub struct StateFlags: u32 { |
