pub struct SessionSummary {
pub provider: String,
pub title: String,
pub status: u32,
pub activity: Option<String>,
pub project: Option<ProjectInfo>,
pub working_directory: Option<Uri>,
pub annotations: Option<AnnotationsSummary>,
pub resource: Uri,
pub created_at: String,
pub modified_at: String,
pub changes: Option<ChangesSummary>,
pub meta: Option<JsonObject>,
}Expand description
Lightweight catalog entry summarizing one session. Surfaced via
{@link RootChannelCommands.listSessions | root/listSessions} and
root/sessionAdded/root/sessionSummaryChanged notifications.
Aggregation across chats. Once a session contains more than one chat,
several SessionSummary fields are derived from the underlying
{@link SessionState.chats | chat catalog}. Producers SHOULD follow these
rules so clients that only consume the session summary (e.g. a session
list) still see meaningful state:
status: take the activity bits (Idle/InProgress/InputNeeded/Error— bits 0–4) from the {@link SessionState.defaultChat | default chat} when present, else from the most recently modified chat. PromoteInputNeededwhenever any chat in the session needs input, and promoteErrorwhenever any chat is in an error state — both override the default-chat bits. The orthogonal flag bits (IsRead,IsArchived) remain session-scoped.activity: mirror the activity string of the default chat, or of the chat currently driving the promoted status bits when a non-default chat wins (e.g. the chat that raisedInputNeeded).modifiedAt: the max of all chats’modifiedAt.workingDirectory: the session-level default. Individual chats MAY override via {@link ChatSummary.workingDirectory}; aggregating these up is meaningless and SHOULD NOT be attempted.changes: optional roll-up across all chats. Producers MAY sum the per-chat changeset stats or report the most expensive chat’s stats — whichever is cheaper for the host to compute.
Sessions with a single chat trivially satisfy all of the above (the chat’s values pass through unchanged). The rules only matter once a session carries multiple chats.
Fields§
§provider: StringAgent provider ID
title: StringSession title
status: u32Current session status
activity: Option<String>Human-readable description of what the session is currently doing
project: Option<ProjectInfo>Server-owned project for this session
working_directory: Option<Uri>The default working directory URI for this session. Individual chats
MAY override via {@link ChatSummary.workingDirectory | their own
workingDirectory}; this field acts as the fallback for any chat that
does not.
annotations: Option<AnnotationsSummary>Lightweight summary of this session’s inline annotations channel
(ahp-session:/<uuid>/annotations). Surfaced so badge UI can render
annotation / entry counts without subscribing. Absent when the session
does not expose an annotations channel.
resource: UriSession URI
created_at: StringCreation timestamp (ISO 8601, e.g. "2025-03-10T18:42:03.123Z")
modified_at: StringLast modification timestamp (ISO 8601, e.g. "2025-03-10T18:42:03.123Z")
changes: Option<ChangesSummary>Aggregate summary of file changes associated with this session. Servers may populate this to give clients a quick at-a-glance view of the session’s footprint (e.g., for list rendering) without requiring the client to subscribe to a changeset.
meta: Option<JsonObject>Lightweight server-defined metadata clients may use for the session presentation. The protocol does not interpret these values; producers SHOULD keep the payload small because summaries appear in session lists and session notifications.
Trait Implementations§
Source§impl Clone for SessionSummary
impl Clone for SessionSummary
Source§fn clone(&self) -> SessionSummary
fn clone(&self) -> SessionSummary
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SessionSummary
impl Debug for SessionSummary
Source§impl<'de> Deserialize<'de> for SessionSummary
impl<'de> Deserialize<'de> for SessionSummary
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for SessionSummary
impl PartialEq for SessionSummary
Source§fn eq(&self, other: &SessionSummary) -> bool
fn eq(&self, other: &SessionSummary) -> bool
self and other values to be equal, and is used by ==.