Sessions provide per-channel sequencing of messages, ensuring each session is handled one message at a time.
sequenceDiagram
participant Connector
participant SessionManager
participant Session
participant Engine
Connector->>SessionManager: handleMessage(source, message, context)
SessionManager->>Session: enqueue(message)
SessionManager->>Engine: process queue sequentially
Engine-->>SessionManager: done
- Session id defaults to
${source}:${channelId}. - A connector can override with
context.sessionId. - Messages (and files) are queued and processed in order.
- Sessions are written to
.scout/sessions/<cuid2>.jsonlas append-only logs. - Entries include
session_created,incoming,outgoing, andstatesnapshots. incoming/outgoingentries now storefileswhen present.
Session updates are mirrored into the memory plugin (if enabled).
flowchart TD
Incoming[Session incoming] --> Store[SessionStore]
Incoming --> Memory[Memory plugin]
Outgoing[Session outgoing] --> Store
Outgoing --> Memory
SessionMessagestores message, context, and timestamps.SessionContextholds mutable per-session state.FileReferencelinks attachments in the file store.