Skip to content

Class: MakaioSession

Makaio Framework


Makaio Framework / services-core / MakaioSession

Defined in: ../../../packages/services/core/src/session/entities/makaio-session.ts:42

MakaioSession is the aggregate root for session state.

It owns Turn[] children and emits lifecycle events from within, mirroring the AIAgent pattern. Events are emitted when state changes, not by external orchestration code.

SEAM: This entity is designed to support future buildContext() method for projecting raw history to effective history (transforms, token budgets).

new MakaioSession(config): MakaioSession

Defined in: ../../../packages/services/core/src/session/entities/makaio-session.ts:56

MakaioSessionConfig

MakaioSession

protected readonly bus: IMakaioBus

Defined in: ../../../packages/services/core/src/session/entities/makaio-session.ts:54

Bus for event emission


readonly optional parentSessionId?: string

Defined in: ../../../packages/services/core/src/session/entities/makaio-session.ts:44


readonly sessionId: string

Defined in: ../../../packages/services/core/src/session/entities/makaio-session.ts:43


status: "active" | "closed" | "archived" = 'active'

Defined in: ../../../packages/services/core/src/session/entities/makaio-session.ts:45

get turns(): readonly Turn[]

Defined in: ../../../packages/services/core/src/session/entities/makaio-session.ts:66

Get turns owned by this session (read-only view).

readonly Turn[]

Immutable array of turns

completeTurn(turn): Promise<void>

Defined in: ../../../packages/services/core/src/session/entities/makaio-session.ts:128

Complete a turn and emit turn.completed event.

Turn

The turn to complete

Promise<void>


protected emit<S>(subject, payload): Promise<void>

Defined in: ../../../packages/services/core/src/session/entities/makaio-session.ts:152

Emit an event with sessionId auto-enriched.

Mirrors AIAgent.emitGlobal pattern - entity emits its own events with context automatically included.

S extends SubjectDefinition

S

The subject to emit to

Omit<ExtractSubjectPayload<S>, "sessionId">

The payload (without sessionId - it’s added automatically)

Promise<void>


getActiveTurn(): Turn | undefined

Defined in: ../../../packages/services/core/src/session/entities/makaio-session.ts:113

Get the currently active (incomplete) turn.

Turn | undefined

The active turn, or undefined if no turn is active


startTurn(options): Promise<Turn>

Defined in: ../../../packages/services/core/src/session/entities/makaio-session.ts:80

Start a new turn in this session.

Creates a Turn child entity and emits turn.started event. This is the key pattern: state change + event emission happen together inside the aggregate, not in external orchestration code.

StartTurnOptions

Turn configuration

Promise<Turn>

The created Turn

Error if session is not active (for example closed or archived)