sigoden/aichat · error
No session role
Error message
No session role
What it means
Raised by role_info() when a session is active but the session has no role name set (session.role_name() returns None). The export of a session-derived role is impossible without an assigned role, so the function bails instead of exporting an empty configuration.
Solutions
- Set a role on the session before requesting role information
- Use the default/global role info instead by exiting the session
- Initialize the session with an explicit role
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at src/config/mod.rs:898 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of sigoden/aichat@82976d349a (2026-09-09).
Data as JSON: /api/errors/21e45cdb731f09f0.
Report an issue: GitHub.
Appendix: source
Thrown at src/config/mod.rs:898
if self.agent.is_some() {
bail!("Cannot perform this operation because you are using a agent")
}
if let Some(session) = self.session.as_mut() {
session.guard_empty()?;
session.set_role(role);
} else {
self.role = Some(role);
}
Ok(())
}
pub fn role_info(&self) -> Result<String> {
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")
}
}
pub fn exit_role(&mut self) -> Result<()> {
if let Some(session) = self.session.as_mut() {
session.guard_empty()?;
session.clear_role();
} else if self.role.is_some() {
self.role = None;
}
Ok(())
}
View on GitHub (pinned to 82976d349a)