Variable: TurnStorageNamespace
Makaio Framework / services-core/session/turns/namespace / TurnStorageNamespace
Variable: TurnStorageNamespace
Section titled “Variable: TurnStorageNamespace”
constTurnStorageNamespace: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.
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.
Index Signature
Section titled “Index Signature”[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; }; }; }
domain
Section titled “domain”
readonlydomain:"turn"
Storage domain name (without ‘storage:’ prefix).
extensions
Section titled “extensions”extensions:
object
extensions.drizzle
Section titled “extensions.drizzle”drizzle:
object
extensions.drizzle.turns
Section titled “extensions.drizzle.turns”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
Section titled “subjects”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()
Section titled “scopedBus()”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; }; }; }; }>>
Parameters
Section titled “Parameters”context?
Section titled “context?”Returns
Section titled “Returns”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; }; }; }; }>>