Variable: SessionEventStorageNamespace
Makaio Framework / services-core/session/session-events/namespace / SessionEventStorageNamespace
Variable: SessionEventStorageNamespace
Section titled “Variable: SessionEventStorageNamespace”
constSessionEventStorageNamespace:object
Defined in: ../../../packages/services/core/src/session/session-events/namespace.ts:28
Session event storage namespace with Drizzle extension.
Bus subjects are defined in @makaio/contracts (source of truth).
This namespace extends the contracts definition with the Drizzle
table schema so handlers can access the sessionEvents table.
Type Declaration
Section titled “Type Declaration”__filterPayload?
Section titled “__filterPayload?”
readonlyoptional__filterPayload?:object
Phantom property for type extraction. Never accessed at runtime.
Enables ExtractFilterPayload<T> to infer the FilterPayload type parameter
without relying on complex nested generic inference.
__filterPayload.event
Section titled “__filterPayload.event”event: {
eventId:string;payload: {adapterId:string;adapterName:string;adapterSessionId:string;agentId:string;cwd?:string;model?:string;role?:"lead"|"member";sessionId:string; };sessionId:string;timestamp:number;type:"agent.added"; } | {eventId:string;payload: {agentIds:string[];content:string| {blocks: {content:string;type:"text"; } | {source: … | …;type:"image"; } | {source: … | …;type:"document"; } | {attachmentType: … | …;displayName?: … | …;fileName:string;filePath:string;source: … | …;type:"attachment"; } | {content:string;metadata?: … | …;type:"reasoning"; } | {args:Record<…, …>;name:string;toolCallId:string;type:"tool_call"; } | {isError?: … | … | …;output:string;toolCallId:string;type:"tool_output"; } | (… | … | … | … | … | … | …)[];role?:"user"|"assistant"|"system"; };messageId:string;origin?:"text"|"voice"|"compact";sessionId:string;source?:"user"|"extension"|"system";turnId:string;turnNumber:number; };sessionId:string;timestamp:number;type:"user_message.sent"; } | {eventId:string;payload: {agentId:string;messageId:string;sessionId:string;turnId:string;turnNumber:number; };sessionId:string;timestamp:number;type:"user_message.acknowledged"; } | {eventId:string;payload: {agentId:string;error?:string;mergedInto?:string;messageId:string;outcome:"error"|"completed"|"superseded"|"merged"|"cancelled"|"rejected";sessionId:string;supersededBy?:string;turnId:string;turnNumber:number; };sessionId:string;timestamp:number;type:"user_message.completed"; } | {eventId:string;payload: {agentIds:string[];initiator?: {source:"user"|"extension"|"system";sourceId?:string; };messageId:string;sessionId:string;turnId:string;turnNumber:number; };sessionId:string;timestamp:number;type:"turn.started"; } | {eventId:string;payload: {error?:string;initiator?: {source:"user"|"extension"|"system";sourceId?:string; };sessionId:string;success:boolean;turnId:string;turnNumber:number; };sessionId:string;timestamp:number;type:"turn.completed"; } | {eventId:string;payload: {messageId:string;role:"user"|"assistant";turnId:string|null; };sessionId:string;timestamp:number;type:"message"; } | {eventId:string;payload: {childSessionId:string;forkPointMessageId?:string;kind:"fork"|"branch"|"aside"|"subagent"|"compress"|"rewrite"|"coordinator";parentSessionId:string; };sessionId:string;timestamp:number;type:"branch.created"; } | {eventId:string;payload: {childSessionId:string;parentSessionId:string;resultJson?:string;resultMessageId?:string; };sessionId:string;timestamp:number;type:"branch.merged"; } | {eventId:string;payload: {compressedMessageIds?:string[];summaryJson:string;tokensAfter?:number;tokensBefore?:number; };sessionId:string;timestamp:number;type:"squash"; } | {eventId:string;payload:Record<string,unknown>;sessionId:string;timestamp:number;type:string; }
Union Members
Section titled “Union Members”Type Literal
Section titled “Type Literal”{ eventId: string; payload: { adapterId: string; adapterName: string; adapterSessionId: string; agentId: string; cwd?: string; model?: string; role?: "lead" | "member"; sessionId: string; }; sessionId: string; timestamp: number; type: "agent.added"; }
eventId
Section titled “eventId”eventId:
string
Stable unique identifier for this event row.
payload
Section titled “payload”payload:
object
payload.adapterId
Section titled “payload.adapterId”adapterId:
string
payload.adapterName
Section titled “payload.adapterName”adapterName:
string
payload.adapterSessionId
Section titled “payload.adapterSessionId”adapterSessionId:
string
payload.agentId
Section titled “payload.agentId”agentId:
string
payload.cwd?
Section titled “payload.cwd?”
optionalcwd?:string
payload.model?
Section titled “payload.model?”
optionalmodel?:string
payload.role?
Section titled “payload.role?”
optionalrole?:"lead"|"member"
payload.sessionId
Section titled “payload.sessionId”sessionId:
string
sessionId
Section titled “sessionId”sessionId:
string
Session the event belongs to.
timestamp
Section titled “timestamp”timestamp:
number
Unix epoch milliseconds when the event was recorded.
type:
"agent.added"
Type Literal
Section titled “Type Literal”{ eventId: string; payload: { agentIds: string[]; content: string | { blocks: { content: string; type: "text"; } | { source: … | …; type: "image"; } | { source: … | …; type: "document"; } | { attachmentType: … | …; displayName?: … | …; fileName: string; filePath: string; source: … | …; type: "attachment"; } | { content: string; metadata?: … | …; type: "reasoning"; } | { args: Record<…, …>; name: string; toolCallId: string; type: "tool_call"; } | { isError?: … | … | …; output: string; toolCallId: string; type: "tool_output"; } | (… | … | … | … | … | … | …)[]; role?: "user" | "assistant" | "system"; }; messageId: string; origin?: "text" | "voice" | "compact"; sessionId: string; source?: "user" | "extension" | "system"; turnId: string; turnNumber: number; }; sessionId: string; timestamp: number; type: "user_message.sent"; }
eventId
Section titled “eventId”eventId:
string
Stable unique identifier for this event row.
payload
Section titled “payload”payload:
object
payload.agentIds
Section titled “payload.agentIds”agentIds:
string[]
Targeted agent IDs
payload.content
Section titled “payload.content”content:
string| {blocks: {content:string;type:"text"; } | {source: … | …;type:"image"; } | {source: … | …;type:"document"; } | {attachmentType: … | …;displayName?: … | …;fileName:string;filePath:string;source: … | …;type:"attachment"; } | {content:string;metadata?: … | …;type:"reasoning"; } | {args:Record<…, …>;name:string;toolCallId:string;type:"tool_call"; } | {isError?: … | … | …;output:string;toolCallId:string;type:"tool_output"; } | (… | … | … | … | … | … | …)[];role?:"user"|"assistant"|"system"; } =MessageInputSchema
Message content
payload.messageId
Section titled “payload.messageId”messageId:
string
User message identifier
payload.origin?
Section titled “payload.origin?”
optionalorigin?:"text"|"voice"|"compact"
Message origin (for example, voice input pipeline)
payload.sessionId
Section titled “payload.sessionId”sessionId:
string
Makaio session ID
payload.source?
Section titled “payload.source?”
optionalsource?:"user"|"extension"|"system"
Request source provenance from session.sendMessage payload
payload.turnId
Section titled “payload.turnId”turnId:
string
Turn identifier (UUID)
payload.turnNumber
Section titled “payload.turnNumber”turnNumber:
number
Monotonic per-session ordinal (1-based).
sessionId
Section titled “sessionId”sessionId:
string
Session the event belongs to.
timestamp
Section titled “timestamp”timestamp:
number
Unix epoch milliseconds when the event was recorded.
type:
"user_message.sent"
Type Literal
Section titled “Type Literal”{ eventId: string; payload: { agentId: string; messageId: string; sessionId: string; turnId: string; turnNumber: number; }; sessionId: string; timestamp: number; type: "user_message.acknowledged"; }
eventId
Section titled “eventId”eventId:
string
Stable unique identifier for this event row.
payload
Section titled “payload”payload:
object
payload.agentId
Section titled “payload.agentId”agentId:
string
Agent that acknowledged
payload.messageId
Section titled “payload.messageId”messageId:
string
User message identifier
payload.sessionId
Section titled “payload.sessionId”sessionId:
string
Makaio session ID
payload.turnId
Section titled “payload.turnId”turnId:
string
Turn identifier (UUID)
payload.turnNumber
Section titled “payload.turnNumber”turnNumber:
number
Monotonic per-session ordinal (1-based).
sessionId
Section titled “sessionId”sessionId:
string
Session the event belongs to.
timestamp
Section titled “timestamp”timestamp:
number
Unix epoch milliseconds when the event was recorded.
type:
"user_message.acknowledged"
Type Literal
Section titled “Type Literal”{ eventId: string; payload: { agentId: string; error?: string; mergedInto?: string; messageId: string; outcome: "error" | "completed" | "superseded" | "merged" | "cancelled" | "rejected"; sessionId: string; supersededBy?: string; turnId: string; turnNumber: number; }; sessionId: string; timestamp: number; type: "user_message.completed"; }
eventId
Section titled “eventId”eventId:
string
Stable unique identifier for this event row.
payload
Section titled “payload”payload:
object
payload.agentId
Section titled “payload.agentId”agentId:
string
Agent that completed processing
payload.error?
Section titled “payload.error?”
optionalerror?:string
Error message when outcome=‘error’
payload.mergedInto?
Section titled “payload.mergedInto?”
optionalmergedInto?:string
Present when outcome=‘merged’: the messageId this was folded into
payload.messageId
Section titled “payload.messageId”messageId:
string
User message identifier
payload.outcome
Section titled “payload.outcome”outcome:
"error"|"completed"|"superseded"|"merged"|"cancelled"|"rejected"=MessageOutcomeSchema
Processing outcome
payload.sessionId
Section titled “payload.sessionId”sessionId:
string
Makaio session ID
payload.supersededBy?
Section titled “payload.supersededBy?”
optionalsupersededBy?:string
Present when outcome=‘superseded’: the messageId that replaced this one
payload.turnId
Section titled “payload.turnId”turnId:
string
Turn identifier (UUID)
payload.turnNumber
Section titled “payload.turnNumber”turnNumber:
number
Monotonic per-session ordinal (1-based).
sessionId
Section titled “sessionId”sessionId:
string
Session the event belongs to.
timestamp
Section titled “timestamp”timestamp:
number
Unix epoch milliseconds when the event was recorded.
type:
"user_message.completed"
Type Literal
Section titled “Type Literal”{ eventId: string; payload: { agentIds: string[]; initiator?: { source: "user" | "extension" | "system"; sourceId?: string; }; messageId: string; sessionId: string; turnId: string; turnNumber: number; }; sessionId: string; timestamp: number; type: "turn.started"; }
eventId
Section titled “eventId”eventId:
string
Stable unique identifier for this event row.
payload
Section titled “payload”payload:
object
payload.agentIds
Section titled “payload.agentIds”agentIds:
string[]
Agents targeted for this turn
payload.initiator?
Section titled “payload.initiator?”
optionalinitiator?:object
Origin of the turn (for loop prevention and audit)
payload.initiator.source
Section titled “payload.initiator.source”source:
"user"|"extension"|"system"
Origin category
payload.initiator.sourceId?
Section titled “payload.initiator.sourceId?”
optionalsourceId?:string
Identifier for the specific origin.
Examples: 'routine:validation', 'loop', 'subagent:xyz'.
payload.messageId
Section titled “payload.messageId”messageId:
string
First message that initiated this turn
payload.sessionId
Section titled “payload.sessionId”sessionId:
string
Makaio session ID
payload.turnId
Section titled “payload.turnId”turnId:
string
Turn identifier (UUID)
payload.turnNumber
Section titled “payload.turnNumber”turnNumber:
number
Monotonic per-session ordinal (1-based).
sessionId
Section titled “sessionId”sessionId:
string
Session the event belongs to.
timestamp
Section titled “timestamp”timestamp:
number
Unix epoch milliseconds when the event was recorded.
type:
"turn.started"
Type Literal
Section titled “Type Literal”{ eventId: string; payload: { error?: string; initiator?: { source: "user" | "extension" | "system"; sourceId?: string; }; sessionId: string; success: boolean; turnId: string; turnNumber: number; }; sessionId: string; timestamp: number; type: "turn.completed"; }
eventId
Section titled “eventId”eventId:
string
Stable unique identifier for this event row.
payload
Section titled “payload”payload:
object
payload.error?
Section titled “payload.error?”
optionalerror?:string
Error message if any agent failed
payload.initiator?
Section titled “payload.initiator?”
optionalinitiator?:object
Origin of the turn (for loop prevention and audit)
payload.initiator.source
Section titled “payload.initiator.source”source:
"user"|"extension"|"system"
Origin category
payload.initiator.sourceId?
Section titled “payload.initiator.sourceId?”
optionalsourceId?:string
Identifier for the specific origin.
Examples: 'routine:validation', 'loop', 'subagent:xyz'.
payload.sessionId
Section titled “payload.sessionId”sessionId:
string
Makaio session ID
payload.success
Section titled “payload.success”success:
boolean
Whether all agents completed successfully
payload.turnId
Section titled “payload.turnId”turnId:
string
Turn identifier (UUID)
payload.turnNumber
Section titled “payload.turnNumber”turnNumber:
number
Monotonic per-session ordinal (1-based).
sessionId
Section titled “sessionId”sessionId:
string
Session the event belongs to.
timestamp
Section titled “timestamp”timestamp:
number
Unix epoch milliseconds when the event was recorded.
type:
"turn.completed"
Type Literal
Section titled “Type Literal”{ eventId: string; payload: { messageId: string; role: "user" | "assistant"; turnId: string | null; }; sessionId: string; timestamp: number; type: "message"; }
eventId
Section titled “eventId”eventId:
string
Stable unique identifier for this event row.
payload
Section titled “payload”payload:
object
payload.messageId
Section titled “payload.messageId”messageId:
string
payload.role
Section titled “payload.role”role:
"user"|"assistant"
payload.turnId
Section titled “payload.turnId”turnId:
string|null
sessionId
Section titled “sessionId”sessionId:
string
Session the event belongs to.
timestamp
Section titled “timestamp”timestamp:
number
Unix epoch milliseconds when the event was recorded.
type:
"message"
Type Literal
Section titled “Type Literal”{ eventId: string; payload: { childSessionId: string; forkPointMessageId?: string; kind: "fork" | "branch" | "aside" | "subagent" | "compress" | "rewrite" | "coordinator"; parentSessionId: string; }; sessionId: string; timestamp: number; type: "branch.created"; }
eventId
Section titled “eventId”eventId:
string
Stable unique identifier for this event row.
payload
Section titled “payload”payload:
object
payload.childSessionId
Section titled “payload.childSessionId”childSessionId:
string
The session that was created
payload.forkPointMessageId?
Section titled “payload.forkPointMessageId?”
optionalforkPointMessageId?:string
Message ID where the branch diverged (last shared message)
payload.kind
Section titled “payload.kind”kind:
"fork"|"branch"|"aside"|"subagent"|"compress"|"rewrite"|"coordinator"=BranchKindSchema
Type of branch
payload.parentSessionId
Section titled “payload.parentSessionId”parentSessionId:
string
The parent session it branched from
sessionId
Section titled “sessionId”sessionId:
string
Session the event belongs to.
timestamp
Section titled “timestamp”timestamp:
number
Unix epoch milliseconds when the event was recorded.
type:
"branch.created"
Type Literal
Section titled “Type Literal”{ eventId: string; payload: { childSessionId: string; parentSessionId: string; resultJson?: string; resultMessageId?: string; }; sessionId: string; timestamp: number; type: "branch.merged"; }
eventId
Section titled “eventId”eventId:
string
Stable unique identifier for this event row.
payload
Section titled “payload”payload:
object
payload.childSessionId
Section titled “payload.childSessionId”childSessionId:
string
The branch session that was merged
payload.parentSessionId
Section titled “payload.parentSessionId”parentSessionId:
string
The parent session it merged into
payload.resultJson?
Section titled “payload.resultJson?”
optionalresultJson?:string
Summary/result injected into parent (JSON string)
payload.resultMessageId?
Section titled “payload.resultMessageId?”
optionalresultMessageId?:string
Message ID of the injected summary in parent session
sessionId
Section titled “sessionId”sessionId:
string
Session the event belongs to.
timestamp
Section titled “timestamp”timestamp:
number
Unix epoch milliseconds when the event was recorded.
type:
"branch.merged"
Type Literal
Section titled “Type Literal”{ eventId: string; payload: { compressedMessageIds?: string[]; summaryJson: string; tokensAfter?: number; tokensBefore?: number; }; sessionId: string; timestamp: number; type: "squash"; }
eventId
Section titled “eventId”eventId:
string
Stable unique identifier for this event row.
payload
Section titled “payload”payload:
object
payload.compressedMessageIds?
Section titled “payload.compressedMessageIds?”
optionalcompressedMessageIds?:string[]
Message IDs that were compressed (for audit)
payload.summaryJson
Section titled “payload.summaryJson”summaryJson:
string
Structured summary JSON that replaces prior context
payload.tokensAfter?
Section titled “payload.tokensAfter?”
optionaltokensAfter?:number
Token count after compression
payload.tokensBefore?
Section titled “payload.tokensBefore?”
optionaltokensBefore?:number
Token count before compression
sessionId
Section titled “sessionId”sessionId:
string
Session the event belongs to.
timestamp
Section titled “timestamp”timestamp:
number
Unix epoch milliseconds when the event was recorded.
type:
"squash"
Type Literal
Section titled “Type Literal”{ eventId: string; payload: Record<string, unknown>; sessionId: string; timestamp: number; type: string; }
eventId
Section titled “eventId”eventId:
string
Stable unique identifier for this event row.
payload
Section titled “payload”payload:
Record<string,unknown>
sessionId
Section titled “sessionId”sessionId:
string
Session the event belongs to.
timestamp
Section titled “timestamp”timestamp:
number
Unix epoch milliseconds when the event was recorded.
type:
string
__filterPayload.eventIds
Section titled “__filterPayload.eventIds”eventIds:
string[]
__filterPayload.limitPerSession
Section titled “__filterPayload.limitPerSession”limitPerSession:
never
__filterPayload.options
Section titled “__filterPayload.options”options:
never
__filterPayload.sessionId
Section titled “__filterPayload.sessionId”sessionId:
string
__filterPayload.sessionIds
Section titled “__filterPayload.sessionIds”sessionIds:
string[]
__filterPayload.types
Section titled “__filterPayload.types”types:
string[]
domain
Section titled “domain”
readonlydomain:"sessionEvent"
Storage domain name (without ‘storage:’ prefix).
extensions
Section titled “extensions”extensions:
object
extensions.drizzle
Section titled “extensions.drizzle”drizzle:
object
extensions.drizzle.sessionEvents
Section titled “extensions.drizzle.sessionEvents”sessionEvents:
SQLiteTableWithColumns<{columns: {adapterId:SQLiteColumn<{baseColumn:never;columnType:"SQLiteText";data:string;dataType:"string";driverParam:string;enumValues: [string,...string[]];generated:undefined;hasDefault:false;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:false;name:"adapter_id";notNull:false;tableName:"session_events"; }, { }, {length:number|undefined; }>;agentId:SQLiteColumn<{baseColumn:never;columnType:"SQLiteText";data:string;dataType:"string";driverParam:string;enumValues: [string,...string[]];generated:undefined;hasDefault:false;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:false;name:"agent_id";notNull:false;tableName:"session_events"; }, { }, {length:number|undefined; }>;contentText:SQLiteColumn<{baseColumn:never;columnType:"SQLiteText";data:string;dataType:"string";driverParam:string;enumValues: [string,...string[]];generated:undefined;hasDefault:false;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:false;name:"content_text";notNull:false;tableName:"session_events"; }, { }, {length:number|undefined; }>;eventId:SQLiteColumn<{baseColumn:never;columnType:"SQLiteText";data:string;dataType:"string";driverParam:string;enumValues: [string,...string[]];generated:undefined;hasDefault:false;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:false;name:"event_id";notNull:true;tableName:"session_events"; }, { }, {length:number|undefined; }>;id:SQLiteColumn<{baseColumn:never;columnType:"SQLiteInteger";data:number;dataType:"number";driverParam:number;enumValues:undefined;generated:undefined;hasDefault:true;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:true;name:"id";notNull:true;tableName:"session_events"; }, { }, { }>;messageId:SQLiteColumn<{baseColumn:never;columnType:"SQLiteText";data:string;dataType:"string";driverParam:string;enumValues: [string,...string[]];generated:undefined;hasDefault:false;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:false;name:"message_id";notNull:false;tableName:"session_events"; }, { }, {length:number|undefined; }>;originatingMessageId:SQLiteColumn<{baseColumn:never;columnType:"SQLiteText";data:string;dataType:"string";driverParam:string;enumValues: [string,...string[]];generated:undefined;hasDefault:false;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:false;name:"originating_message_id";notNull:false;tableName:"session_events"; }, { }, {length:number|undefined; }>;payload:SQLiteColumn<{baseColumn:never;columnType:"SQLiteText";data:string;dataType:"string";driverParam:string;enumValues: [string,...string[]];generated:undefined;hasDefault:false;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:false;name:"payload";notNull:true;tableName:"session_events"; }, { }, {length:number|undefined; }>;sessionId:SQLiteColumn<{baseColumn:never;columnType:"SQLiteText";data:string;dataType:"string";driverParam:string;enumValues: [string,...string[]];generated:undefined;hasDefault:false;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:false;name:"session_id";notNull:true;tableName:"session_events"; }, { }, {length:number|undefined; }>;timestamp:SQLiteColumn<{baseColumn:never;columnType:"SQLiteInteger";data:number;dataType:"number";driverParam:number;enumValues:undefined;generated:undefined;hasDefault:false;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:false;name:"timestamp";notNull:true;tableName:"session_events"; }, { }, { }>;turnId:SQLiteColumn<{baseColumn:never;columnType:"SQLiteText";data:string;dataType:"string";driverParam:string;enumValues: [string,...string[]];generated:undefined;hasDefault:false;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:false;name:"turn_id";notNull:false;tableName:"session_events"; }, { }, {length:number|undefined; }>;type:SQLiteColumn<{baseColumn:never;columnType:"SQLiteText";data:string;dataType:"string";driverParam:string;enumValues: [string,...string[]];generated:undefined;hasDefault:false;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:false;name:"type";notNull:true;tableName:"session_events"; }, { }, {length:number|undefined; }>; };dialect:"sqlite";name:"session_events";schema:undefined; }>
Session events table schema.
Stores immutable, append-only session events for unified history reconstruction. Events are persisted by SessionLogger via storage service.
Event Types:
- Message references (type=‘message’ with messageId FK to messages table)
- Agent lifecycle (agent.added)
- Turn lifecycle (turn.started, turn.completed)
- User message events (user_message.sent/acknowledged/completed)
Design rationale:
- First-class columns for queryable fields (IDs, timestamp, type)
contentTextextracted for FTS5/embeddings (future)payloadstores full JSON for exact API reconstruction
SEAM: The sessionId FK enables cascade delete when sessions are purged.
Future embeddings table can reference eventId for vector search.
name:
"storage:sessionEvent"
subjects
Section titled “subjects”subjects:
BusSubjects<FlatSubjectDefinitions<"storage:sessionEvent", {append: {request:ZodObject<{event:ZodUnion<readonly [ZodDiscriminatedUnion<[…, …, …],"type">,ZodObject<{eventId: …;payload: …;sessionId: …;timestamp: …;type: …; },$strip>]>; },$strip>;response:ZodObject<{success:ZodBoolean; },$strip>; };deleteBySession: {request:ZodObject<{sessionId:ZodString; },$strip>;response:ZodObject<{deletedCount:ZodOptional<ZodNumber>;success:ZodBoolean; },$strip>; };getByIds: {request:ZodObject<{eventIds:ZodArray<ZodString>;sessionId:ZodString; },$strip>;response:ZodObject<{events:ZodArray<ZodUnion<readonly [ZodDiscriminatedUnion<…, …>,ZodObject<…, …>]>>; },$strip>; };getEvents: {request:ZodObject<{options:ZodOptional<ZodObject<{after:ZodOptional<…>;includeReasoning:ZodOptional<…>;limit:ZodOptional<…>;order:ZodOptional<…>;types:ZodOptional<…>; },$strip>>;sessionId:ZodString; },$strip>;response:ZodObject<{events:ZodArray<ZodUnion<readonly [ZodDiscriminatedUnion<…, …>,ZodObject<…, …>]>>;nextCursor:ZodNullable<ZodString>;totalCount:ZodOptional<ZodNumber>; },$strip>; };getEventsBySessions: {request:ZodObject<{limitPerSession:ZodOptional<ZodNumber>;sessionIds:ZodArray<ZodString>;types:ZodArray<ZodString>; },$strip>;response:ZodObject<{eventsBySession:ZodRecord<ZodString,ZodArray<ZodUnion<readonly […, …]>>>; },$strip>; }; }>,"storage:sessionEvent">
scopedBus()
Section titled “scopedBus()”scopedBus(
context?):Promise<ScopedBus<"storage:sessionEvent",SubjectRecordFromSchemaRecord<{append: {request:ZodObject<{event:ZodUnion<readonly [ZodDiscriminatedUnion<…, …>,ZodObject<…, …>]>; },$strip>;response:ZodObject<{success:ZodBoolean; },$strip>; };deleteBySession: {request:ZodObject<{sessionId:ZodString; },$strip>;response:ZodObject<{deletedCount:ZodOptional<ZodNumber>;success:ZodBoolean; },$strip>; };getByIds: {request:ZodObject<{eventIds:ZodArray<ZodString>;sessionId:ZodString; },$strip>;response:ZodObject<{events:ZodArray<ZodUnion<readonly […, …]>>; },$strip>; };getEvents: {request:ZodObject<{options:ZodOptional<ZodObject<{after: …;includeReasoning: …;limit: …;order: …;types: …; },$strip>>;sessionId:ZodString; },$strip>;response:ZodObject<{events:ZodArray<ZodUnion<readonly […, …]>>;nextCursor:ZodNullable<ZodString>;totalCount:ZodOptional<ZodNumber>; },$strip>; };getEventsBySessions: {request:ZodObject<{limitPerSession:ZodOptional<ZodNumber>;sessionIds:ZodArray<ZodString>;types:ZodArray<ZodString>; },$strip>;response:ZodObject<{eventsBySession:ZodRecord<ZodString,ZodArray<ZodUnion<…>>>; },$strip>; }; }>, {event: {eventId:string;payload: {adapterId:string;adapterName:string;adapterSessionId:string;agentId:string;cwd?:string;model?:string;role?:"lead"|"member";sessionId:string; };sessionId:string;timestamp:number;type:"agent.added"; } | {eventId:string;payload: {agentIds:string[];content:string| {blocks: {content: …;type: …; } | {source: …;type: …; } | {source: …;type: …; } | {attachmentType: …;displayName?: …;fileName: …;filePath: …;source: …;type: …; } | {content: …;metadata?: …;type: …; } | {args: …;name: …;toolCallId: …;type: …; } | {isError?: …;output: …;toolCallId: …;type: …; } | …[];role?:"user"|"assistant"|"system"; };messageId:string;origin?:"text"|"voice"|"compact";sessionId:string;source?:"user"|"extension"|"system";turnId:string;turnNumber:number; };sessionId:string;timestamp:number;type:"user_message.sent"; } | {eventId:string;payload: {agentId:string;messageId:string;sessionId:string;turnId:string;turnNumber:number; };sessionId:string;timestamp:number;type:"user_message.acknowledged"; } | {eventId:string;payload: {agentId:string;error?:string;mergedInto?:string;messageId:string;outcome:"error"|"completed"|"superseded"|"merged"|"cancelled"|"rejected";sessionId:string;supersededBy?:string;turnId:string;turnNumber:number; };sessionId:string;timestamp:number;type:"user_message.completed"; } | {eventId:string;payload: {agentIds:string[];initiator?: {source:"user"|"extension"|"system";sourceId?:string; };messageId:string;sessionId:string;turnId:string;turnNumber:number; };sessionId:string;timestamp:number;type:"turn.started"; } | {eventId:string;payload: {error?:string;initiator?: {source:"user"|"extension"|"system";sourceId?:string; };sessionId:string;success:boolean;turnId:string;turnNumber:number; };sessionId:string;timestamp:number;type:"turn.completed"; } | {eventId:string;payload: {messageId:string;role:"user"|"assistant";turnId:string|null; };sessionId:string;timestamp:number;type:"message"; } | {eventId:string;payload: {childSessionId:string;forkPointMessageId?:string;kind:"fork"|"branch"|"aside"|"subagent"|"compress"|"rewrite"|"coordinator";parentSessionId:string; };sessionId:string;timestamp:number;type:"branch.created"; } | {eventId:string;payload: {childSessionId:string;parentSessionId:string;resultJson?:string;resultMessageId?:string; };sessionId:string;timestamp:number;type:"branch.merged"; } | {eventId:string;payload: {compressedMessageIds?:string[];summaryJson:string;tokensAfter?:number;tokensBefore?:number; };sessionId:string;timestamp:number;type:"squash"; } | {eventId:string;payload:Record<string,unknown>;sessionId:string;timestamp:number;type:string; };eventIds:string[];limitPerSession:never;options:never;sessionId:string;sessionIds:string[];types:string[]; }>>
Parameters
Section titled “Parameters”context?
Section titled “context?”Returns
Section titled “Returns”Promise<ScopedBus<"storage:sessionEvent", SubjectRecordFromSchemaRecord<{ append: { request: ZodObject<{ event: ZodUnion<readonly [ZodDiscriminatedUnion<…, …>, ZodObject<…, …>]>; }, $strip>; response: ZodObject<{ success: ZodBoolean; }, $strip>; }; deleteBySession: { request: ZodObject<{ sessionId: ZodString; }, $strip>; response: ZodObject<{ deletedCount: ZodOptional<ZodNumber>; success: ZodBoolean; }, $strip>; }; getByIds: { request: ZodObject<{ eventIds: ZodArray<ZodString>; sessionId: ZodString; }, $strip>; response: ZodObject<{ events: ZodArray<ZodUnion<readonly […, …]>>; }, $strip>; }; getEvents: { request: ZodObject<{ options: ZodOptional<ZodObject<{ after: …; includeReasoning: …; limit: …; order: …; types: …; }, $strip>>; sessionId: ZodString; }, $strip>; response: ZodObject<{ events: ZodArray<ZodUnion<readonly […, …]>>; nextCursor: ZodNullable<ZodString>; totalCount: ZodOptional<ZodNumber>; }, $strip>; }; getEventsBySessions: { request: ZodObject<{ limitPerSession: ZodOptional<ZodNumber>; sessionIds: ZodArray<ZodString>; types: ZodArray<ZodString>; }, $strip>; response: ZodObject<{ eventsBySession: ZodRecord<ZodString, ZodArray<ZodUnion<…>>>; }, $strip>; }; }>, { event: { eventId: string; payload: { adapterId: string; adapterName: string; adapterSessionId: string; agentId: string; cwd?: string; model?: string; role?: "lead" | "member"; sessionId: string; }; sessionId: string; timestamp: number; type: "agent.added"; } | { eventId: string; payload: { agentIds: string[]; content: string | { blocks: { content: …; type: …; } | { source: …; type: …; } | { source: …; type: …; } | { attachmentType: …; displayName?: …; fileName: …; filePath: …; source: …; type: …; } | { content: …; metadata?: …; type: …; } | { args: …; name: …; toolCallId: …; type: …; } | { isError?: …; output: …; toolCallId: …; type: …; } | …[]; role?: "user" | "assistant" | "system"; }; messageId: string; origin?: "text" | "voice" | "compact"; sessionId: string; source?: "user" | "extension" | "system"; turnId: string; turnNumber: number; }; sessionId: string; timestamp: number; type: "user_message.sent"; } | { eventId: string; payload: { agentId: string; messageId: string; sessionId: string; turnId: string; turnNumber: number; }; sessionId: string; timestamp: number; type: "user_message.acknowledged"; } | { eventId: string; payload: { agentId: string; error?: string; mergedInto?: string; messageId: string; outcome: "error" | "completed" | "superseded" | "merged" | "cancelled" | "rejected"; sessionId: string; supersededBy?: string; turnId: string; turnNumber: number; }; sessionId: string; timestamp: number; type: "user_message.completed"; } | { eventId: string; payload: { agentIds: string[]; initiator?: { source: "user" | "extension" | "system"; sourceId?: string; }; messageId: string; sessionId: string; turnId: string; turnNumber: number; }; sessionId: string; timestamp: number; type: "turn.started"; } | { eventId: string; payload: { error?: string; initiator?: { source: "user" | "extension" | "system"; sourceId?: string; }; sessionId: string; success: boolean; turnId: string; turnNumber: number; }; sessionId: string; timestamp: number; type: "turn.completed"; } | { eventId: string; payload: { messageId: string; role: "user" | "assistant"; turnId: string | null; }; sessionId: string; timestamp: number; type: "message"; } | { eventId: string; payload: { childSessionId: string; forkPointMessageId?: string; kind: "fork" | "branch" | "aside" | "subagent" | "compress" | "rewrite" | "coordinator"; parentSessionId: string; }; sessionId: string; timestamp: number; type: "branch.created"; } | { eventId: string; payload: { childSessionId: string; parentSessionId: string; resultJson?: string; resultMessageId?: string; }; sessionId: string; timestamp: number; type: "branch.merged"; } | { eventId: string; payload: { compressedMessageIds?: string[]; summaryJson: string; tokensAfter?: number; tokensBefore?: number; }; sessionId: string; timestamp: number; type: "squash"; } | { eventId: string; payload: Record<string, unknown>; sessionId: string; timestamp: number; type: string; }; eventIds: string[]; limitPerSession: never; options: never; sessionId: string; sessionIds: string[]; types: string[]; }>>
Example
Section titled “Example”import { SessionEventStorageNamespace, SessionEventStorageSubjects } from '@makaio/services-core/session';
// Use bus subjectsconst { events } = await bus.request(SessionEventStorageSubjects.getEvents, { sessionId: '123',});
// Access drizzle schemas for custom queriesconst { sessionEvents } = SessionEventStorageNamespace.extensions.drizzle;