Skip to content

Chat State

Defined in: chat/state.ts:154

Abort controller with external signal linking. Wraps an AbortController and optionally links an external AbortSignal so aborting either side cancels the operation.

new ChatAbortController(externalSignal?): ChatAbortController

Defined in: chat/state.ts:159

AbortSignal

ChatAbortController

get isAborted(): boolean

Defined in: chat/state.ts:183

Whether the operation has been aborted

boolean

get signal(): AbortSignal

Defined in: chat/state.ts:178

The AbortSignal for this controller

AbortSignal

abort(reason?): void

Defined in: chat/state.ts:191

Abort the operation.

unknown

Optional abort reason

void

dispose(): void

Defined in: chat/state.ts:196

Clean up external signal listener to prevent memory leaks

void


Defined in: chat/state.ts:119

Guards against concurrent send() calls in a chat runtime. acquire() before work, release() after (use try/finally). Throws ChatError(REENTRANCY) if already acquired.

new ChatReentrancyGuard(): ChatReentrancyGuard

ChatReentrancyGuard

get isAcquired(): boolean

Defined in: chat/state.ts:123

Whether the guard is currently held

boolean

acquire(): void

Defined in: chat/state.ts:131

Acquire the guard. Throws if already acquired.

void

ChatError with code REENTRANCY

release(): void

Defined in: chat/state.ts:142

Release the guard. Safe to call even if not acquired.

void


Defined in: chat/state.ts:21

Generic validated state machine. Enforces that every transition is declared in the transition map. Throws ChatError(INVALID_TRANSITION) on illegal moves.

S extends string

new StateMachine<S>(initial, transitions): StateMachine<S>

Defined in: chat/state.ts:24

S

TransitionMap<S>

StateMachine<S>

readonly initial: S

Defined in: chat/state.ts:25

readonly transitions: TransitionMap<S>

Defined in: chat/state.ts:26

get current(): S

Defined in: chat/state.ts:32

Current state

S

canTransition(next): boolean

Defined in: chat/state.ts:41

Check whether transitioning to next is allowed from current state

S

Target state to check

boolean

True if transition is allowed

reset(): void

Defined in: chat/state.ts:61

Reset to initial state

void

transition(next): void

Defined in: chat/state.ts:50

Transition to next state.

S

void

ChatError(INVALID_TRANSITION) if the transition is not allowed

TransitionMap<S> = Readonly<Record<S, readonly S[]>>

Defined in: chat/state.ts:14

Map of allowed transitions: current state → set of valid next states

S extends string

const MESSAGE_TRANSITIONS: TransitionMap<MessageStatus>

Defined in: chat/state.ts:77

Allowed transitions for MessageStatus (pending → streaming → complete, etc.)


const RUNTIME_TRANSITIONS: TransitionMap<RuntimeStatus>

Defined in: chat/state.ts:69

Allowed transitions for RuntimeStatus (idle → streaming/disposed, etc.)


const TOOL_CALL_TRANSITIONS: TransitionMap<ToolCallStatus>

Defined in: chat/state.ts:86

Allowed transitions for ToolCallStatus (pending → running → complete, etc.)

createMessageStateMachine(): StateMachine<MessageStatus>

Defined in: chat/state.ts:103

Create a MessageStatus state machine starting at “pending”

StateMachine<MessageStatus>


createRuntimeStateMachine(): StateMachine<RuntimeStatus>

Defined in: chat/state.ts:98

Create a RuntimeStatus state machine starting at “idle”

StateMachine<RuntimeStatus>


createToolCallStateMachine(): StateMachine<ToolCallStatus>

Defined in: chat/state.ts:108

Create a ToolCallStatus state machine starting at “pending”

StateMachine<ToolCallStatus>