Skip to content

Class: MakaioSessionService

Makaio Framework


Makaio Framework / services-core / MakaioSessionService

Defined in: ../../../packages/services/core/src/session/session-service.ts:50

Framework-core session service for managing makaio sessions.

Registers the minimal, load-bearing session handlers that the framework SDK requires: session.create, session.get, session.list, session.close, session.agent.added, and session.agent.removed.

Host-specific handlers (search, update, resume, archive, purge, analytics, context window, branching) are registered by the host session service which depends on this service.

Storage is fully decoupled via bus — this service calls SessionStorageSubjects.* subjects. Register appropriate storage handlers (memory or drizzle) before creating this service.

SessionLogger is intentionally NOT a dependency here: it persists session lifecycle events consumed only by recovery context assembly, fork, merge, compress, and purge — all host features. Host services declare SessionLogger in their own dependency chain.

import { MakaioBus } from '@makaio/bus-core';
import {
MakaioSessionService,
registerMemorySessionStorage,
} from '@makaio/services-core/session';
// Register storage handlers first
registerMemorySessionStorage(MakaioBus);
// Create and initialise the service
const sessionService = new MakaioSessionService(MakaioBus);
await sessionService.init();
// Now clients can interact via bus
const { sessionId } = await MakaioBus.request(SessionSubjects.create, {});
const { session } = await MakaioBus.request(SessionSubjects.get, { sessionId });
// Cleanup when done
sessionService.destroy();
  • BaseService

new MakaioSessionService(bus?): MakaioSessionService

Defined in: ../../../packages/services/core/src/session/session-service.ts:55

Creates a new MakaioSessionService instance.

IMakaioBus = MakaioBus

The event bus for inter-service communication

MakaioSessionService

BaseService.constructor

protected readonly bus: IMakaioBus

Defined in: ../../../packages/services/base/src/base-service.ts:39

Bus instance used for registering handlers

CapabilityService.bus

get initialized(): boolean

Defined in: ../../../packages/services/base/src/base-service.ts:47

Whether the service has been successfully initialized.

Returns true after init() completes and before destroy() is called.

boolean

true if initialized, false otherwise

BaseService.initialized

protected addCleanup(fn): void

Defined in: ../../../packages/services/base/src/base-service.ts:143

Enqueue an arbitrary cleanup function to be called on destroy().

Use for non-handler resources (timers, external subscriptions, etc.).

() => void | Promise<void>

Function to invoke during teardown

void

BaseService.addCleanup


destroy(): Promise<void>

Defined in: ../../../packages/services/base/src/base-service.ts:89

Destroy the service and unsubscribe all registered handlers.

Calls the optional onDestroy() hook before running cleanups, then resets the initialized flag. Safe to call multiple times (idempotent).

Promise<void>

Promise that resolves after teardown completes

BaseService.destroy


init(): Promise<void>

Defined in: ../../../packages/services/base/src/base-service.ts:57

Initialize the service.

Delegates to onInit() once; subsequent calls are no-ops (idempotent).

Promise<void>

Promise that resolves when initialization is complete

BaseService.init


protected optional onDestroy(): void | Promise<void>

Defined in: ../../../packages/services/base/src/base-service.ts:163

Optional service teardown hook.

Called by destroy() before automatic handler unsubscription. Implement only when there are resources beyond bus handlers to clean up (e.g., stopping trackers, clearing maps, releasing external handles).

void | Promise<void>

BaseService.onDestroy


protected onInit(): Promise<void>

Defined in: ../../../packages/services/core/src/session/session-service.ts:72

Initialize the service.

Registers the six framework-core session bus handlers, then performs startup reconciliation to close any turns that were left active by a prior process crash. Each orphaned turn is closed with status 'error' and a 'process-restart' error message, and a turn.completed event is emitted so the UI can update accordingly.

The reconciliation uses requestOptional so it is silently skipped when no storage:turn.listActive handler is registered (e.g., in unit tests that do not register turn storage).

Promise<void>

BaseService.onInit


protected registerHandler<S>(subject, handler): void

Defined in: ../../../packages/services/base/src/base-service.ts:129

Register a bus handler and enqueue its unsubscribe function for teardown.

Equivalent to this._cleanups.push(this.bus.on(subject, handler)).

S extends SubjectDefinition

S

The subject definition to listen on

HandlerForSubjectDefinition<S>

Handler function for the subject

void

BaseService.registerHandler