diff options
| author | sigoden <sigoden@gmail.com> | 2024-10-29 15:10:37 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-29 15:10:37 +0800 |
| commit | 0fc967ea3c7f52924165d1d3452f793d15cb9a0f (patch) | |
| tree | 7826157feb662368fdfac834afdd760fa55e2b17 /src | |
| parent | 740f4060f1272063ec89f2b93ed334d3ed1cbfe4 (diff) | |
| download | aichat-0fc967ea3c7f52924165d1d3452f793d15cb9a0f.tar.gz | |
feat: `.info role`/`.exit role` works for session role (#958)
Diffstat (limited to 'src')
| -rw-r--r-- | src/config/mod.rs | 32 | ||||
| -rw-r--r-- | src/config/session.rs | 4 |
2 files changed, 22 insertions, 14 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs index 142f115..b1a1d2e 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -390,13 +390,15 @@ impl Config { } else { flags |= StateFlags::SESSION; } + if session.role_name().is_some() { + flags |= StateFlags::ROLE; + } + } else if self.role.is_some() { + flags |= StateFlags::ROLE; } if self.agent.is_some() { flags |= StateFlags::AGENT; } - if self.role.is_some() { - flags |= StateFlags::ROLE; - } if self.rag.is_some() { flags |= StateFlags::RAG; } @@ -843,22 +845,24 @@ impl Config { } pub fn role_info(&self) -> Result<String> { - if let Some(role) = &self.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()); + if let Some(session) = &self.session { + if session.role_name().is_some() { + let role = session.to_role(); + Ok(role.export()) + } else { + bail!("No session role") } + } else if let Some(role) = &self.role { + Ok(role.export()) + } else { + bail!("No role") } - bail!("No role"); } pub fn exit_role(&mut self) -> Result<()> { - if self.role.is_some() { - if let Some(session) = self.session.as_mut() { - session.clear_role(); - } + if let Some(session) = self.session.as_mut() { + session.clear_role(); + } else if self.role.is_some() { self.role = None; } Ok(()) diff --git a/src/config/session.rs b/src/config/session.rs index 717188b..db75ba7 100644 --- a/src/config/session.rs +++ b/src/config/session.rs @@ -94,6 +94,10 @@ impl Session { &self.name } + pub fn role_name(&self) -> Option<&str> { + self.role_name.as_deref() + } + pub fn dirty(&self) -> bool { self.dirty } |
