Skip to content

Variable: SessionEventStorageNamespace

Makaio Framework


Makaio Framework / services-core/session/session-events/namespace / SessionEventStorageNamespace

const SessionEventStorageNamespace: 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.

readonly optional __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.

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; }

{ 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

Stable unique identifier for this event row.

payload: object

adapterId: string

adapterName: string

adapterSessionId: string

agentId: string

optional cwd?: string

optional model?: string

optional role?: "lead" | "member"

sessionId: string

sessionId: string

Session the event belongs to.

timestamp: number

Unix epoch milliseconds when the event was recorded.

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

Stable unique identifier for this event row.

payload: object

agentIds: string[]

Targeted agent IDs

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

messageId: string

User message identifier

optional origin?: "text" | "voice" | "compact"

Message origin (for example, voice input pipeline)

sessionId: string

Makaio session ID

optional source?: "user" | "extension" | "system"

Request source provenance from session.sendMessage payload

turnId: string

Turn identifier (UUID)

turnNumber: number

Monotonic per-session ordinal (1-based).

sessionId: string

Session the event belongs to.

timestamp: number

Unix epoch milliseconds when the event was recorded.

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

Stable unique identifier for this event row.

payload: object

agentId: string

Agent that acknowledged

messageId: string

User message identifier

sessionId: string

Makaio session ID

turnId: string

Turn identifier (UUID)

turnNumber: number

Monotonic per-session ordinal (1-based).

sessionId: string

Session the event belongs to.

timestamp: number

Unix epoch milliseconds when the event was recorded.

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

Stable unique identifier for this event row.

payload: object

agentId: string

Agent that completed processing

optional error?: string

Error message when outcome=‘error’

optional mergedInto?: string

Present when outcome=‘merged’: the messageId this was folded into

messageId: string

User message identifier

outcome: "error" | "completed" | "superseded" | "merged" | "cancelled" | "rejected" = MessageOutcomeSchema

Processing outcome

sessionId: string

Makaio session ID

optional supersededBy?: string

Present when outcome=‘superseded’: the messageId that replaced this one

turnId: string

Turn identifier (UUID)

turnNumber: number

Monotonic per-session ordinal (1-based).

sessionId: string

Session the event belongs to.

timestamp: number

Unix epoch milliseconds when the event was recorded.

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

Stable unique identifier for this event row.

payload: object

agentIds: string[]

Agents targeted for this turn

optional initiator?: object

Origin of the turn (for loop prevention and audit)

source: "user" | "extension" | "system"

Origin category

optional sourceId?: string

Identifier for the specific origin.

Examples: 'routine:validation', 'loop', 'subagent:xyz'.

messageId: string

First message that initiated this turn

sessionId: string

Makaio session ID

turnId: string

Turn identifier (UUID)

turnNumber: number

Monotonic per-session ordinal (1-based).

sessionId: string

Session the event belongs to.

timestamp: number

Unix epoch milliseconds when the event was recorded.

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

Stable unique identifier for this event row.

payload: object

optional error?: string

Error message if any agent failed

optional initiator?: object

Origin of the turn (for loop prevention and audit)

source: "user" | "extension" | "system"

Origin category

optional sourceId?: string

Identifier for the specific origin.

Examples: 'routine:validation', 'loop', 'subagent:xyz'.

sessionId: string

Makaio session ID

success: boolean

Whether all agents completed successfully

turnId: string

Turn identifier (UUID)

turnNumber: number

Monotonic per-session ordinal (1-based).

sessionId: string

Session the event belongs to.

timestamp: number

Unix epoch milliseconds when the event was recorded.

type: "turn.completed"


{ eventId: string; payload: { messageId: string; role: "user" | "assistant"; turnId: string | null; }; sessionId: string; timestamp: number; type: "message"; }

eventId: string

Stable unique identifier for this event row.

payload: object

messageId: string

role: "user" | "assistant"

turnId: string | null

sessionId: string

Session the event belongs to.

timestamp: number

Unix epoch milliseconds when the event was recorded.

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

Stable unique identifier for this event row.

payload: object

childSessionId: string

The session that was created

optional forkPointMessageId?: string

Message ID where the branch diverged (last shared message)

kind: "fork" | "branch" | "aside" | "subagent" | "compress" | "rewrite" | "coordinator" = BranchKindSchema

Type of branch

parentSessionId: string

The parent session it branched from

sessionId: string

Session the event belongs to.

timestamp: number

Unix epoch milliseconds when the event was recorded.

type: "branch.created"


{ eventId: string; payload: { childSessionId: string; parentSessionId: string; resultJson?: string; resultMessageId?: string; }; sessionId: string; timestamp: number; type: "branch.merged"; }

eventId: string

Stable unique identifier for this event row.

payload: object

childSessionId: string

The branch session that was merged

parentSessionId: string

The parent session it merged into

optional resultJson?: string

Summary/result injected into parent (JSON string)

optional resultMessageId?: string

Message ID of the injected summary in parent session

sessionId: string

Session the event belongs to.

timestamp: number

Unix epoch milliseconds when the event was recorded.

type: "branch.merged"


{ eventId: string; payload: { compressedMessageIds?: string[]; summaryJson: string; tokensAfter?: number; tokensBefore?: number; }; sessionId: string; timestamp: number; type: "squash"; }

eventId: string

Stable unique identifier for this event row.

payload: object

optional compressedMessageIds?: string[]

Message IDs that were compressed (for audit)

summaryJson: string

Structured summary JSON that replaces prior context

optional tokensAfter?: number

Token count after compression

optional tokensBefore?: number

Token count before compression

sessionId: string

Session the event belongs to.

timestamp: number

Unix epoch milliseconds when the event was recorded.

type: "squash"


{ eventId: string; payload: Record<string, unknown>; sessionId: string; timestamp: number; type: string; }

eventId: string

Stable unique identifier for this event row.

payload: Record<string, unknown>

sessionId: string

Session the event belongs to.

timestamp: number

Unix epoch milliseconds when the event was recorded.

type: string

eventIds: string[]

limitPerSession: never

options: never

sessionId: string

sessionIds: string[]

types: string[]

readonly domain: "sessionEvent"

Storage domain name (without ‘storage:’ prefix).

extensions: object

drizzle: object

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)
  • contentText extracted for FTS5/embeddings (future)
  • payload stores 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: 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(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[]; }>>

MakaioBusContext

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[]; }>>

import { SessionEventStorageNamespace, SessionEventStorageSubjects } from '@makaio/services-core/session';
// Use bus subjects
const { events } = await bus.request(SessionEventStorageSubjects.getEvents, {
sessionId: '123',
});
// Access drizzle schemas for custom queries
const { sessionEvents } = SessionEventStorageNamespace.extensions.drizzle;