diff options
| author | sigoden <sigoden@gmail.com> | 2024-10-08 10:52:44 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-08 10:52:44 +0800 |
| commit | c211d1e43a02266226fb8d04856e703a4e6a625d (patch) | |
| tree | dd09c7413c1c68aa96d8aaee979c7e49b3977767 /src/config/mod.rs | |
| parent | 91231e605f34b93d4e8e519e7a169ac61fa088ea (diff) | |
| download | aichat-c211d1e43a02266226fb8d04856e703a4e6a625d.tar.gz | |
feat: session persists role name (#914)
Diffstat (limited to 'src/config/mod.rs')
| -rw-r--r-- | src/config/mod.rs | 14 |
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") |
