Skip to content

Class: Turn

Makaio Framework


Makaio Framework / services-core / Turn

Defined in: ../../../packages/services/core/src/session/entities/turn.ts:84

Represents a single turn in a session.

A turn is a semantic bracket: user message(s) → agent response(s). Turn encapsulates state and logic, while SessionOrchestrator handles bus events and emissions.

Design:

  • Immutable identity (turnId, sessionId, agentIds set at creation)
  • Mutable state (messages, completion tracking)
  • State changes return results for orchestrator to act on
  • No bus dependency (testable in isolation)
const turn = new Turn({ sessionId: 'sess1', agentIds: ['agent1', 'agent2'] });
turn.addMessage('msg1');
const change = turn.markAgentCompleted('agent1');
// change.turnComplete === false (agent2 still pending)
const change2 = turn.markAgentCompleted('agent2');
// change2.turnComplete === true, change2.result.success === true

new Turn(config): Turn

Defined in: ../../../packages/services/core/src/session/entities/turn.ts:112

TurnConfig

Turn

readonly sessionId: string

Defined in: ../../../packages/services/core/src/session/entities/turn.ts:89

Session this turn belongs to


readonly startedAt: number

Defined in: ../../../packages/services/core/src/session/entities/turn.ts:95

Timestamp when turn was created


readonly turnId: string

Defined in: ../../../packages/services/core/src/session/entities/turn.ts:86

Unique turn identifier


readonly turnNumber: number

Defined in: ../../../packages/services/core/src/session/entities/turn.ts:92

Monotonic per-session ordinal (1-based).

get agentIds(): readonly string[]

Defined in: ../../../packages/services/core/src/session/entities/turn.ts:132

Agents participating in this turn.

readonly string[]

Immutable array of agent IDs


get completedAgents(): ReadonlySet<string>

Defined in: ../../../packages/services/core/src/session/entities/turn.ts:157

Agents that have completed successfully.

ReadonlySet<string>

Read-only set of completed agent IDs


get erroredAgents(): ReadonlyMap<string, string>

Defined in: ../../../packages/services/core/src/session/entities/turn.ts:165

Agents that errored.

ReadonlyMap<string, string>

Read-only map of agent ID to error message


get initiator(): object

Defined in: ../../../packages/services/core/src/session/entities/turn.ts:141

Origin of this turn for loop prevention and audit. Returned as a defensive copy to avoid external mutation of internal state.

Defensive copy of turn initiator metadata

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

Origin category

optional sourceId?: string

Identifier for the specific origin.

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


get messageIds(): readonly string[]

Defined in: ../../../packages/services/core/src/session/entities/turn.ts:149

Messages sent during this turn.

readonly string[]

Immutable array of message IDs

addMessage(messageId): void

Defined in: ../../../packages/services/core/src/session/entities/turn.ts:177

Add a message to this turn.

string

The message ID to add

void


getContext(): TurnContext

Defined in: ../../../packages/services/core/src/session/entities/turn.ts:241

Get context for agent dispatch. Used when sending messages to agents for context propagation.

TurnContext

Turn context with turnId and current messageId

Error if no messages have been added yet


getContextForMessage(messageId): TurnContext

Defined in: ../../../packages/services/core/src/session/entities/turn.ts:256

Get context for a specific message (for events emitted per-message).

string

The message ID to get context for

TurnContext

Turn context with turnId and the specified messageId


getResult(): TurnResult

Defined in: ../../../packages/services/core/src/session/entities/turn.ts:228

Get the turn result (only meaningful when turn is complete).

TurnResult

Turn result with success status and any errors


hasAgent(agentId): boolean

Defined in: ../../../packages/services/core/src/session/entities/turn.ts:211

Check if an agent is part of this turn.

string

The agent ID to check

boolean

True if agent is participating in this turn


isComplete(): boolean

Defined in: ../../../packages/services/core/src/session/entities/turn.ts:219

Check if the turn is complete (all agents finished).

boolean

True if all agents have completed or errored


markAgentCompleted(agentId): TurnStateChange

Defined in: ../../../packages/services/core/src/session/entities/turn.ts:186

Mark an agent as completed successfully.

string

The agent that completed

TurnStateChange

State change indicating if turn is now complete


markAgentErrored(agentId, error): TurnStateChange

Defined in: ../../../packages/services/core/src/session/entities/turn.ts:197

Mark an agent as errored.

string

The agent that errored

string

Error message

TurnStateChange

State change indicating if turn is now complete