DocsAPI referenceUI machinescomposer

composer machine

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

@grassroot/ui-machines/composer

Package

15 exports
View source packages/ui-machines/src/composer/index.ts

Service example

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

Exports

DeclarationView source
ComposerAttachmentRefts
type ComposerAttachmentRef = {
readonly id: string;
readonly type: string;
readonly name?: string;
readonly contentType?: string;
};
Name
Kind
Type
Requirement
contentType
property
string
optional
id
property
string
required
name
property
string
optional
type
property
string
required
Name
contentType
Kind
property
Type
string
Requirement
optional
Name
id
Kind
property
Type
string
Requirement
required
Name
name
Kind
property
Type
string
Requirement
optional
Name
type
Kind
property
Type
string
Requirement
required
DeclarationView source
ComposerCommandts
type ComposerCommand = CommandObject & ({
readonly type: "SEND";
readonly text: string;
readonly attachments: readonly ComposerAttachmentRef[];
readonly quote?: JsonValue;
readonly runConfig?: ComposerRunConfig;
readonly role: ComposerRole;
readonly mode: ComposerMode;
readonly parentId?: string | null;
readonly sourceId?: string | null;
readonly steer: boolean;
} | {
readonly type: "CANCEL_RUN";
} | {
readonly type: "EXIT_EDIT";
});
DeclarationView source
ComposerContextts
type ComposerContext = {
readonly text: string;
readonly mode: ComposerMode;
readonly isSendDisabled: boolean;
readonly queueEnabled: boolean;
readonly quote?: JsonValue;
readonly attachments: readonly ComposerAttachmentRef[];
readonly runConfig?: ComposerRunConfig;
readonly role: ComposerRole;
readonly editingMessageId?: string;
readonly parentId?: string | null;
readonly sourceId?: string | null;
};
Name
Kind
Type
Requirement
attachments
property
readonly ComposerAttachmentRef[]
required
editingMessageId
property
string
optional
isSendDisabled
property
boolean
required
mode
property
ComposerMode
required
parentId
property
string | null
optional
queueEnabled
property
boolean
required
quote
property
JsonValue
optional
role
property
ComposerRole
required
runConfig
property
ComposerRunConfig
optional
sourceId
property
string | null
optional
text
property
string
required
Name
attachments
Kind
property
Type
readonly ComposerAttachmentRef[]
Requirement
required
Name
editingMessageId
Kind
property
Type
string
Requirement
optional
Name
isSendDisabled
Kind
property
Type
boolean
Requirement
required
Name
mode
Kind
property
Type
ComposerMode
Requirement
required
Name
parentId
Kind
property
Type
string | null
Requirement
optional
Name
queueEnabled
Kind
property
Type
boolean
Requirement
required
Name
quote
Kind
property
Type
JsonValue
Requirement
optional
Name
role
Kind
property
Type
ComposerRole
Requirement
required
Name
runConfig
Kind
property
Type
ComposerRunConfig
Requirement
optional
Name
sourceId
Kind
property
Type
string | null
Requirement
optional
Name
text
Kind
property
Type
string
Requirement
required
DeclarationView source
ComposerDiagnosticCodests
export declare const ComposerDiagnosticCodes: readonly DiagnosticCatalogueEntry[];
DeclarationView source
ComposerEventts
type ComposerEvent = {
readonly type: "SET_TEXT";
readonly text: string;
} | {
readonly type: "SET_QUOTE";
readonly quote?: JsonValue;
} | {
readonly type: "BEGIN_EDIT";
readonly messageId: string;
readonly text: string;
readonly parentId?: string | null;
readonly sourceId?: string | null;
} | {
readonly type: "END_EDIT";
} | {
readonly type: "SEND";
readonly steer?: boolean;
} | {
readonly type: "RUN_SETTLED";
} | {
readonly type: "RUN_CANCELLED";
} | {
readonly type: "CANCEL";
} | {
readonly type: "SET_SEND_DISABLED";
readonly disabled: boolean;
} | {
readonly type: "SET_QUEUE_ENABLED";
readonly enabled: boolean;
} | {
readonly type: "RESET";
};
DeclarationView source
ComposerInputts
type ComposerInput = {
readonly text?: string;
readonly defaultText?: string;
readonly mode?: ComposerMode;
readonly defaultMode?: ComposerMode;
readonly isSendDisabled?: boolean;
readonly queueEnabled?: boolean;
readonly canEdit?: boolean;
readonly parentId?: string | null;
readonly sourceId?: string | null;
readonly quote?: JsonValue;
readonly attachments?: readonly ComposerAttachmentRef[];
readonly runConfig?: ComposerRunConfig;
readonly role?: ComposerRole;
};
Name
Kind
Type
Requirement
attachments
property
readonly ComposerAttachmentRef[]
optional
canEdit
property
boolean
optional
defaultMode
property
ComposerMode
optional
defaultText
property
string
optional
isSendDisabled
property
boolean
optional
mode
property
ComposerMode
optional
parentId
property
string | null
optional
queueEnabled
property
boolean
optional
quote
property
JsonValue
optional
role
property
ComposerRole
optional
runConfig
property
ComposerRunConfig
optional
sourceId
property
string | null
optional
text
property
string
optional
Name
attachments
Kind
property
Type
readonly ComposerAttachmentRef[]
Requirement
optional
Name
canEdit
Kind
property
Type
boolean
Requirement
optional
Name
defaultMode
Kind
property
Type
ComposerMode
Requirement
optional
Name
defaultText
Kind
property
Type
string
Requirement
optional
Name
isSendDisabled
Kind
property
Type
boolean
Requirement
optional
Name
mode
Kind
property
Type
ComposerMode
Requirement
optional
Name
parentId
Kind
property
Type
string | null
Requirement
optional
Name
queueEnabled
Kind
property
Type
boolean
Requirement
optional
Name
quote
Kind
property
Type
JsonValue
Requirement
optional
Name
role
Kind
property
Type
ComposerRole
Requirement
optional
Name
runConfig
Kind
property
Type
ComposerRunConfig
Requirement
optional
Name
sourceId
Kind
property
Type
string | null
Requirement
optional
Name
text
Kind
property
Type
string
Requirement
optional
DeclarationView source
composerMachinets
export declare const composerMachine: ComposerMachine;
DeclarationView source
ComposerMachinets
type ComposerMachine = Machine<ComposerInput, ComposerStateValue, ComposerContext, ComposerEvent, ComposerCommand>;
DeclarationView source
ComposerModets
type ComposerMode = "new" | "edit";
DeclarationView source
composerReplaySequencets
export declare const composerReplaySequence: readonly ComposerEvent[];
DeclarationView source
ComposerRolets
type ComposerRole = "user" | "assistant" | "system";
DeclarationView source
ComposerRunConfigts
type ComposerRunConfig = Readonly<Record<string, JsonValue>>;
DeclarationView source
composerSelectorsts
export declare const composerSelectors: {
isEmpty: (snapshot: ComposerSnapshot) => boolean;
isEditing: (snapshot: ComposerSnapshot) => boolean;
canSend: (snapshot: ComposerSnapshot) => boolean;
canCancel: (snapshot: ComposerSnapshot) => boolean;
text: (snapshot: ComposerSnapshot) => string;
mode: (snapshot: ComposerSnapshot) => ComposerMode;
quote: (snapshot: ComposerSnapshot) => unknown;
};
Name
Kind
Type
Requirement
canCancel
property
(snapshot: ComposerSnapshot) => boolean
required
canSend
property
(snapshot: ComposerSnapshot) => boolean
required
isEditing
property
(snapshot: ComposerSnapshot) => boolean
required
isEmpty
property
(snapshot: ComposerSnapshot) => boolean
required
mode
property
(snapshot: ComposerSnapshot) => ComposerMode
required
quote
property
(snapshot: ComposerSnapshot) => unknown
required
text
property
(snapshot: ComposerSnapshot) => string
required
Name
canCancel
Kind
property
Type
(snapshot: ComposerSnapshot) => boolean
Requirement
required
Name
canSend
Kind
property
Type
(snapshot: ComposerSnapshot) => boolean
Requirement
required
Name
isEditing
Kind
property
Type
(snapshot: ComposerSnapshot) => boolean
Requirement
required
Name
isEmpty
Kind
property
Type
(snapshot: ComposerSnapshot) => boolean
Requirement
required
Name
mode
Kind
property
Type
(snapshot: ComposerSnapshot) => ComposerMode
Requirement
required
Name
quote
Kind
property
Type
(snapshot: ComposerSnapshot) => unknown
Requirement
required
Name
text
Kind
property
Type
(snapshot: ComposerSnapshot) => string
Requirement
required
DeclarationView source
ComposerSnapshotts
type ComposerSnapshot = Snapshot<ComposerStateValue, ComposerContext>;
DeclarationView source
ComposerStateValuets
type ComposerStateValue = "empty" | "drafting" | "submitting" | "blocked";