Skip to content

Variable: TurnStorageNamespace

Makaio Framework


Makaio Framework / services-core/session/turns/namespace / TurnStorageNamespace

const TurnStorageNamespace: object

Defined in: ../../../packages/services/core/src/session/turns/namespace.ts:11

Extended Turn storage namespace with Drizzle schemas.

The base turn storage namespace lives in ../../turn/namespace.js. This module extends that framework-owned contract with Drizzle ORM schemas for the session-service implementation.

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.

[key: string]: string | number | { byAgent?: Record<string, { cost?: number; inputTokens: number; outputTokens: number; }>; total: { cost?: number; inputTokens: number; outputTokens: number; }; } | { completedAt?: number; error?: string; sessionId: string; startedAt: number; status: "error" | "completed" | "active"; turnId: string; turnNumber: number; usage?: { byAgent?: Record<string, { cost?: … | …; inputTokens: number; outputTokens: number; }>; total: { cost?: number; inputTokens: number; outputTokens: number; }; }; }

readonly domain: "turn"

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

extensions: object

drizzle: object

turns: SQLiteTableWithColumns<{ columns: { completedAt: 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: "completed_at"; notNull: false; tableName: "turns"; }, { }, { }>; error: 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: "error"; notNull: false; tableName: "turns"; }, { }, { 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: "turns"; }, { }, { length: number | undefined; }>; startedAt: 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: "started_at"; notNull: true; tableName: "turns"; }, { }, { }>; status: SQLiteColumn<{ baseColumn: never; columnType: "SQLiteText"; data: "error" | "completed" | "active"; dataType: "string"; driverParam: string; enumValues: ["active", "completed", "error"]; generated: undefined; hasDefault: false; hasRuntimeDefault: false; identity: undefined; isAutoincrement: false; isPrimaryKey: false; name: "status"; notNull: true; tableName: "turns"; }, { }, { length: number | undefined; }>; 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: true; name: "turn_id"; notNull: true; tableName: "turns"; }, { }, { length: number | undefined; }>; turnNumber: 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: "turn_number"; notNull: true; tableName: "turns"; }, { }, { }>; usage: 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: "usage"; notNull: false; tableName: "turns"; }, { }, { length: number | undefined; }>; }; dialect: "sqlite"; name: "turns"; schema: undefined; }>

Turns table schema.

A turn represents a user message and all agent responses to it. Extracted from events to provide explicit turn boundaries.

Design rationale:

  • First-class entity for turn lifecycle tracking
  • Links to session via FK for cascade delete
  • Status tracks completion state for UI progress indication

name: "storage:turn"

subjects: BusSubjects<FlatSubjectDefinitions<"storage:turn", { complete: { request: ZodObject<{ error: ZodOptional<ZodString>; expectedStatus: ZodOptional<ZodEnum<{ active: "active"; completed: "completed"; error: "error"; }>>; status: ZodEnum<{ completed: "completed"; error: "error"; }>; turnId: ZodString; usage: ZodOptional<ZodObject<{ byAgent: ZodOptional<…>; total: ZodObject<…, …>; }, $strip>>; }, $strip>; response: ZodObject<{ transitioned: ZodBoolean; turn: ZodObject<{ completedAt: ZodOptional<ZodNumber>; error: ZodOptional<ZodString>; sessionId: ZodString; startedAt: ZodNumber; status: ZodEnum<{ active: …; completed: …; error: …; }>; turnId: ZodString; turnNumber: ZodNumber; usage: ZodOptional<ZodObject<…, …>>; }, $strip>; }, $strip>; }; create: { request: ZodObject<{ sessionId: ZodString; turnId: ZodOptional<ZodString>; }, $strip>; response: ZodObject<{ turn: ZodObject<{ completedAt: ZodOptional<ZodNumber>; error: ZodOptional<ZodString>; sessionId: ZodString; startedAt: ZodNumber; status: ZodEnum<{ active: …; completed: …; error: …; }>; turnId: ZodString; turnNumber: ZodNumber; usage: ZodOptional<ZodObject<…, …>>; }, $strip>; }, $strip>; }; get: { request: ZodObject<{ turnId: ZodString; }, $strip>; response: ZodObject<{ turn: ZodNullable<ZodObject<{ completedAt: ZodOptional<…>; error: ZodOptional<…>; sessionId: ZodString; startedAt: ZodNumber; status: ZodEnum<…>; turnId: ZodString; turnNumber: ZodNumber; usage: ZodOptional<…>; }, $strip>>; }, $strip>; }; getActive: { request: ZodObject<{ sessionId: ZodString; }, $strip>; response: ZodObject<{ turn: ZodNullable<ZodObject<{ completedAt: ZodOptional<…>; error: ZodOptional<…>; sessionId: ZodString; startedAt: ZodNumber; status: ZodEnum<…>; turnId: ZodString; turnNumber: ZodNumber; usage: ZodOptional<…>; }, $strip>>; }, $strip>; }; getBySession: { request: ZodObject<{ limit: ZodOptional<ZodNumber>; sessionId: ZodString; status: ZodOptional<ZodEnum<{ active: "active"; completed: "completed"; error: "error"; }>>; }, $strip>; response: ZodObject<{ turns: ZodArray<ZodObject<{ completedAt: ZodOptional<…>; error: ZodOptional<…>; sessionId: ZodString; startedAt: ZodNumber; status: ZodEnum<…>; turnId: ZodString; turnNumber: ZodNumber; usage: ZodOptional<…>; }, $strip>>; }, $strip>; }; listActive: { request: ZodObject<{ }, $strip>; response: ZodObject<{ turns: ZodArray<ZodObject<{ completedAt: ZodOptional<…>; error: ZodOptional<…>; sessionId: ZodString; startedAt: ZodNumber; status: ZodEnum<…>; turnId: ZodString; turnNumber: ZodNumber; usage: ZodOptional<…>; }, $strip>>; }, $strip>; }; set: { request: ZodObject<{ turn: ZodObject<{ completedAt: ZodOptional<ZodNumber>; error: ZodOptional<ZodString>; sessionId: ZodString; startedAt: ZodNumber; status: ZodEnum<{ active: …; completed: …; error: …; }>; turnId: ZodString; turnNumber: ZodNumber; usage: ZodOptional<ZodObject<…, …>>; }, $strip>; }, $strip>; response: ZodObject<{ turn: ZodObject<{ completedAt: ZodOptional<ZodNumber>; error: ZodOptional<ZodString>; sessionId: ZodString; startedAt: ZodNumber; status: ZodEnum<{ active: …; completed: …; error: …; }>; turnId: ZodString; turnNumber: ZodNumber; usage: ZodOptional<ZodObject<…, …>>; }, $strip>; }, $strip>; }; }>, "storage:turn">

scopedBus(context?): Promise<ScopedBus<"storage:turn", SubjectRecordFromSchemaRecord<{ complete: { request: ZodObject<{ error: ZodOptional<ZodString>; expectedStatus: ZodOptional<ZodEnum<{ active: …; completed: …; error: …; }>>; status: ZodEnum<{ completed: "completed"; error: "error"; }>; turnId: ZodString; usage: ZodOptional<ZodObject<{ byAgent: …; total: …; }, $strip>>; }, $strip>; response: ZodObject<{ transitioned: ZodBoolean; turn: ZodObject<{ completedAt: ZodOptional<…>; error: ZodOptional<…>; sessionId: ZodString; startedAt: ZodNumber; status: ZodEnum<…>; turnId: ZodString; turnNumber: ZodNumber; usage: ZodOptional<…>; }, $strip>; }, $strip>; }; create: { request: ZodObject<{ sessionId: ZodString; turnId: ZodOptional<ZodString>; }, $strip>; response: ZodObject<{ turn: ZodObject<{ completedAt: ZodOptional<…>; error: ZodOptional<…>; sessionId: ZodString; startedAt: ZodNumber; status: ZodEnum<…>; turnId: ZodString; turnNumber: ZodNumber; usage: ZodOptional<…>; }, $strip>; }, $strip>; }; get: { request: ZodObject<{ turnId: ZodString; }, $strip>; response: ZodObject<{ turn: ZodNullable<ZodObject<{ completedAt: …; error: …; sessionId: …; startedAt: …; status: …; turnId: …; turnNumber: …; usage: …; }, $strip>>; }, $strip>; }; getActive: { request: ZodObject<{ sessionId: ZodString; }, $strip>; response: ZodObject<{ turn: ZodNullable<ZodObject<{ completedAt: …; error: …; sessionId: …; startedAt: …; status: …; turnId: …; turnNumber: …; usage: …; }, $strip>>; }, $strip>; }; getBySession: { request: ZodObject<{ limit: ZodOptional<ZodNumber>; sessionId: ZodString; status: ZodOptional<ZodEnum<{ active: …; completed: …; error: …; }>>; }, $strip>; response: ZodObject<{ turns: ZodArray<ZodObject<{ completedAt: …; error: …; sessionId: …; startedAt: …; status: …; turnId: …; turnNumber: …; usage: …; }, $strip>>; }, $strip>; }; listActive: { request: ZodObject<{ }, $strip>; response: ZodObject<{ turns: ZodArray<ZodObject<{ completedAt: …; error: …; sessionId: …; startedAt: …; status: …; turnId: …; turnNumber: …; usage: …; }, $strip>>; }, $strip>; }; set: { request: ZodObject<{ turn: ZodObject<{ completedAt: ZodOptional<…>; error: ZodOptional<…>; sessionId: ZodString; startedAt: ZodNumber; status: ZodEnum<…>; turnId: ZodString; turnNumber: ZodNumber; usage: ZodOptional<…>; }, $strip>; }, $strip>; response: ZodObject<{ turn: ZodObject<{ completedAt: ZodOptional<…>; error: ZodOptional<…>; sessionId: ZodString; startedAt: ZodNumber; status: ZodEnum<…>; turnId: ZodString; turnNumber: ZodNumber; usage: ZodOptional<…>; }, $strip>; }, $strip>; }; }>, {[key: string]: string | number | { byAgent?: Record<string, { cost?: number; inputTokens: number; outputTokens: number; }>; total: { cost?: number; inputTokens: number; outputTokens: number; }; } | { completedAt?: number; error?: string; sessionId: string; startedAt: number; status: "error" | "completed" | "active"; turnId: string; turnNumber: number; usage?: { byAgent?: Record<string, { cost?: …; inputTokens: …; outputTokens: …; }>; total: { cost?: number; inputTokens: number; outputTokens: number; }; }; }; }>>

MakaioBusContext

Promise<ScopedBus<"storage:turn", SubjectRecordFromSchemaRecord<{ complete: { request: ZodObject<{ error: ZodOptional<ZodString>; expectedStatus: ZodOptional<ZodEnum<{ active: …; completed: …; error: …; }>>; status: ZodEnum<{ completed: "completed"; error: "error"; }>; turnId: ZodString; usage: ZodOptional<ZodObject<{ byAgent: …; total: …; }, $strip>>; }, $strip>; response: ZodObject<{ transitioned: ZodBoolean; turn: ZodObject<{ completedAt: ZodOptional<…>; error: ZodOptional<…>; sessionId: ZodString; startedAt: ZodNumber; status: ZodEnum<…>; turnId: ZodString; turnNumber: ZodNumber; usage: ZodOptional<…>; }, $strip>; }, $strip>; }; create: { request: ZodObject<{ sessionId: ZodString; turnId: ZodOptional<ZodString>; }, $strip>; response: ZodObject<{ turn: ZodObject<{ completedAt: ZodOptional<…>; error: ZodOptional<…>; sessionId: ZodString; startedAt: ZodNumber; status: ZodEnum<…>; turnId: ZodString; turnNumber: ZodNumber; usage: ZodOptional<…>; }, $strip>; }, $strip>; }; get: { request: ZodObject<{ turnId: ZodString; }, $strip>; response: ZodObject<{ turn: ZodNullable<ZodObject<{ completedAt: …; error: …; sessionId: …; startedAt: …; status: …; turnId: …; turnNumber: …; usage: …; }, $strip>>; }, $strip>; }; getActive: { request: ZodObject<{ sessionId: ZodString; }, $strip>; response: ZodObject<{ turn: ZodNullable<ZodObject<{ completedAt: …; error: …; sessionId: …; startedAt: …; status: …; turnId: …; turnNumber: …; usage: …; }, $strip>>; }, $strip>; }; getBySession: { request: ZodObject<{ limit: ZodOptional<ZodNumber>; sessionId: ZodString; status: ZodOptional<ZodEnum<{ active: …; completed: …; error: …; }>>; }, $strip>; response: ZodObject<{ turns: ZodArray<ZodObject<{ completedAt: …; error: …; sessionId: …; startedAt: …; status: …; turnId: …; turnNumber: …; usage: …; }, $strip>>; }, $strip>; }; listActive: { request: ZodObject<{ }, $strip>; response: ZodObject<{ turns: ZodArray<ZodObject<{ completedAt: …; error: …; sessionId: …; startedAt: …; status: …; turnId: …; turnNumber: …; usage: …; }, $strip>>; }, $strip>; }; set: { request: ZodObject<{ turn: ZodObject<{ completedAt: ZodOptional<…>; error: ZodOptional<…>; sessionId: ZodString; startedAt: ZodNumber; status: ZodEnum<…>; turnId: ZodString; turnNumber: ZodNumber; usage: ZodOptional<…>; }, $strip>; }, $strip>; response: ZodObject<{ turn: ZodObject<{ completedAt: ZodOptional<…>; error: ZodOptional<…>; sessionId: ZodString; startedAt: ZodNumber; status: ZodEnum<…>; turnId: ZodString; turnNumber: ZodNumber; usage: ZodOptional<…>; }, $strip>; }, $strip>; }; }>, {[key: string]: string | number | { byAgent?: Record<string, { cost?: number; inputTokens: number; outputTokens: number; }>; total: { cost?: number; inputTokens: number; outputTokens: number; }; } | { completedAt?: number; error?: string; sessionId: string; startedAt: number; status: "error" | "completed" | "active"; turnId: string; turnNumber: number; usage?: { byAgent?: Record<string, { cost?: …; inputTokens: …; outputTokens: …; }>; total: { cost?: number; inputTokens: number; outputTokens: number; }; }; }; }>>