DocsAPI referenceUI machinesvoice-session

voice-session machine

The public state machine contract for @grassroot/ui-machines/voice-session. The machine owns behaviour; the matching headless layer owns composition.

@grassroot/ui-machines/voice-session

Package

11 exports
View source packages/ui-machines/src/voice-session/index.ts

Service example

voice-session.tsts
import { createService } from "@grassroot/statechart";
import { voiceSessionMachine } from "@grassroot/ui-machines/voice-session";
const service = createService(voiceSessionMachine, { input: {} });
service.start();
service.send({ type: "…" });
service.stop();

Exports

DeclarationView source
VoiceSessionContextts
type VoiceSessionContext = {
readonly isMuted: boolean;
readonly mode: VoiceSessionMode;
readonly endReason?: VoiceSessionEndReason;
readonly error?: unknown;
};
Name
Kind
Type
Requirement
endReason
property
VoiceSessionEndReason
optional
error
property
unknown
optional
isMuted
property
boolean
required
mode
property
VoiceSessionMode
required
Name
endReason
Kind
property
Type
VoiceSessionEndReason
Requirement
optional
Name
error
Kind
property
Type
unknown
Requirement
optional
Name
isMuted
Kind
property
Type
boolean
Requirement
required
Name
mode
Kind
property
Type
VoiceSessionMode
Requirement
required
DeclarationView source
VoiceSessionDiagnosticCodests
export declare const VoiceSessionDiagnosticCodes: readonly DiagnosticCatalogueEntry[];
DeclarationView source
VoiceSessionEndReasonts
type VoiceSessionEndReason = "finished" | "cancelled" | "error";
DeclarationView source
VoiceSessionEventts
type VoiceSessionEvent = {
readonly type: "CONNECTED";
} | {
readonly type: "SET_MUTED";
readonly muted: boolean;
} | {
readonly type: "TOGGLE_MUTED";
} | {
readonly type: "SET_MODE";
readonly mode: VoiceSessionMode;
} | {
readonly type: "ENDED";
readonly reason: VoiceSessionEndReason;
readonly error?: unknown;
} | {
readonly type: "CANCEL";
} | {
readonly type: "RESET";
};
DeclarationView source
VoiceSessionInputts
type VoiceSessionInput = {
readonly isMuted?: boolean;
readonly mode?: VoiceSessionMode;
};
Name
Kind
Type
Requirement
isMuted
property
boolean
optional
mode
property
VoiceSessionMode
optional
Name
isMuted
Kind
property
Type
boolean
Requirement
optional
Name
mode
Kind
property
Type
VoiceSessionMode
Requirement
optional
DeclarationView source
voiceSessionMachinets
export declare const voiceSessionMachine: Machine<VoiceSessionInput, VoiceSessionValue, VoiceSessionContext, VoiceSessionEvent, never>;
DeclarationView source
VoiceSessionModets
type VoiceSessionMode = "listening" | "speaking";
DeclarationView source
voiceSessionReplaySequencets
export declare const voiceSessionReplaySequence: readonly VoiceSessionEvent[];
DeclarationView source
voiceSessionSelectorsts
export declare const voiceSessionSelectors: {
isActive(snapshot: VoiceSessionSnapshot): boolean;
isMuted(snapshot: VoiceSessionSnapshot): boolean;
mode(snapshot: VoiceSessionSnapshot): VoiceSessionMode;
endReason(snapshot: VoiceSessionSnapshot): VoiceSessionEndReason | undefined;
};
Name
Kind
Type
Requirement
endReason
method
(snapshot: VoiceSessionSnapshot) => VoiceSessionEndReason | undefined
required
isActive
method
(snapshot: VoiceSessionSnapshot) => boolean
required
isMuted
method
(snapshot: VoiceSessionSnapshot) => boolean
required
mode
method
(snapshot: VoiceSessionSnapshot) => VoiceSessionMode
required
Name
endReason
Kind
method
Type
(snapshot: VoiceSessionSnapshot) => VoiceSessionEndReason | undefined
Requirement
required
Name
isActive
Kind
method
Type
(snapshot: VoiceSessionSnapshot) => boolean
Requirement
required
Name
isMuted
Kind
method
Type
(snapshot: VoiceSessionSnapshot) => boolean
Requirement
required
Name
mode
Kind
method
Type
(snapshot: VoiceSessionSnapshot) => VoiceSessionMode
Requirement
required
DeclarationView source
VoiceSessionSnapshotts
type VoiceSessionSnapshot = Snapshot<VoiceSessionValue, VoiceSessionContext>;
DeclarationView source
VoiceSessionValuets
type VoiceSessionValue = "starting" | "running" | "ended";