summaryrefslogtreecommitdiffstats
path: root/src/config/mod.rs
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-10-08 10:52:44 +0800
committerGitHub <noreply@github.com>2024-10-08 10:52:44 +0800
commitc211d1e43a02266226fb8d04856e703a4e6a625d (patch)
treedd09c7413c1c68aa96d8aaee979c7e49b3977767 /src/config/mod.rs
parent91231e605f34b93d4e8e519e7a169ac61fa088ea (diff)
downloadaichat-c211d1e43a02266226fb8d04856e703a4e6a625d.tar.gz
feat: session persists role name (#914)
Diffstat (limited to 'src/config/mod.rs')
-rw-r--r--src/config/mod.rs14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs
index 291d477..1c669a7 100644
--- a/src/config/mod.rs
+++ b/src/config/mod.rs
@@ -839,10 +839,14 @@ impl Config {
pub fn role_info(&self) -> Result<String> {
if let Some(role) = &self.role {
- Ok(role.export())
- } else {
- bail!("No role")
+ return Ok(role.export());
+ } else if let Some(session) = &self.session {
+ let role = session.to_role();
+ if !role.name().is_empty() {
+ return Ok(role.export());
+ }
}
+ bail!("No role");
}
pub fn exit_role(&mut self) -> Result<()> {
@@ -1089,8 +1093,8 @@ impl Config {
pub fn clear_session_messages(&mut self) -> Result<()> {
if let Some(session) = self.session.as_mut() {
session.clear_messages();
- if let Some(prompt) = self.agent.as_ref().map(|v| v.interpolated_instructions()) {
- session.update_role_prompt(&prompt);
+ if let Some(agent) = self.agent.as_ref() {
+ session.set_agent(agent);
}
} else {
bail!("No session")