MachineStore API
Generated reference for the public MachineStore module.
effect-state-machine API / MachineStore
MachineStore
constructors
machineInstanceId()
machineInstanceId(
value):MachineInstanceId
Defined in: packages/core/src/MachineStore.ts:95
Brands a validated or reconstructed machine instance identity.
When to use
Use at trusted persistence and migration boundaries. New application identities should normally
come from deriveMachineInstanceId or a machine definition's instanceId operation.
Parameters
value
string
Returns
Since
0.2.0
dispatchId()
dispatchId(
value):DispatchId
Defined in: packages/core/src/MachineStore.ts:104
Brands a validated or reconstructed dispatch identity.
Parameters
value
string
Returns
Since
0.2.0
entryId()
entryId(
value):EntryId
Defined in: packages/core/src/MachineStore.ts:112
Brands a validated or reconstructed entry identity.
Parameters
value
string
Returns
Since
0.2.0
executionId()
executionId(
value):ExecutionId
Defined in: packages/core/src/MachineStore.ts:120
Brands a validated or reconstructed work execution identity.
Parameters
value
string
Returns
Since
0.2.0
revision()
revision(
value):Revision
Defined in: packages/core/src/MachineStore.ts:128
Brands a validated aggregate revision.
Parameters
value
number
Returns
Since
0.2.0
fence()
fence(
value):Fence
Defined in: packages/core/src/MachineStore.ts:136
Brands a validated claim fence.
Parameters
value
number
Returns
Since
0.2.0
deriveMachineInstanceId()
deriveMachineInstanceId(
definitionId,idempotencyKey):MachineInstanceId
Defined in: packages/core/src/MachineStore.ts:165
Derives a total, versioned machine identity from definition and logical input identity.
Details
Both components use a length-prefixed encoding, so arbitrary Unicode and delimiter-like input remain collision-safe. The same pair always produces the same identity.
Parameters
definitionId
string
idempotencyKey
string
Returns
Since
0.2.0
deriveEntryId()
deriveEntryId(
instanceId,sequence):EntryId
Defined in: packages/core/src/MachineStore.ts:177
Derives a stable entry identity from one machine instance and entry sequence.
Parameters
instanceId
sequence
number
Returns
Since
0.2.0
deriveChildMachineInstanceId()
deriveChildMachineInstanceId(
parentInstanceId,parentEntryId,childName):MachineInstanceId
Defined in: packages/core/src/MachineStore.ts:191
Derives a child runtime identity scoped to its parent instance and owning parent entry.
Details
Re-entering the parent creates a different entry identity and therefore a different child identity, while redelivery within the same entry reconstructs the same child.
Parameters
parentInstanceId
parentEntryId
childName
string
Returns
Since
0.2.0
deriveExecutionId()
deriveExecutionId(
instanceId,entry,ownerPath,invocationName,laneName?):ExecutionId
Defined in: packages/core/src/MachineStore.ts:250
Derives one stable work identity for an invocation lane owned by an entry.
Details
The identity separates instance, entry, owner path, invocation name, and optional lane. It stays stable across retries and redelivery until the owning entry is replaced.
Parameters
instanceId
entry
ownerPath
string
invocationName
string
laneName?
string
Returns
Since
0.2.0
documentMetadata()
documentMetadata(
checkpoint,input?,children?):Pick<MachineDocument,"definition"|"input"|"status"|"runtime"|"timers"|"executions"|"migration">
Defined in: packages/core/src/MachineStore.ts:570
Derives the canonical aggregate envelopes mirrored from one validated runtime checkpoint.
Engine code uses this constructor so adapters never need to interpret machine state. Nested child records may be supplied when planning a complete runtime-tree replacement.
When to use
Use in engine integrations, migrations, and store fixtures that must rebuild the aggregate envelopes corresponding to a validated checkpoint.
Parameters
checkpoint
formatVersion
number = Schema.Number
definitionId
string = Schema.String
persistenceVersion
string = Schema.String
instanceId
string = Schema.String
revision
number = Schema.Number
status
"running" | "completed" | "defected" = ...
state
Json = Schema.Json
rootEntryId
string = Schema.String
regionEntryIds
{[key: string]: string; } = ...
timers
readonly object[] = ...
aggregates
readonly object[] = ...
nextSequence
number = Schema.Number
defect
{ category: ... | ... | ... | ... | ... | ...; name: string; message: string; } | null = ...
input?
Json = null
children?
readonly object[] = []
Returns
Pick<MachineDocument, "definition" | "input" | "status" | "runtime" | "timers" | "executions" | "migration">
Since
0.2.0
makeMemory
constmakeMemory: () =>Effect.Effect<Service>
Defined in: packages/core/src/MachineStore.ts:767
Creates a process-local store whose state lives for the returned service lifetime.
When to use
Use for isolated tests, examples, and custom Layer composition that deliberately accepts process-local persistence.
Gotchas
Every call creates a new empty database. The service uses Effect's clock, so TestClock can
deterministically exercise compare-and-set deadlines.
Returns
Effect.Effect<Service>
See
layerMemory for Layer-based provisioning.
Since
0.2.0
decoding
parseChildMachineInstanceId()
parseChildMachineInstanceId(
value):ChildMachineIdentity|undefined
Defined in: packages/core/src/MachineStore.ts:223
Parses identities produced by deriveChildMachineInstanceId.
Gotchas
Returns undefined for another identity version, malformed length prefixes, or trailing data.
It does not accept arbitrary application-authored strings as child identities.
Parameters
value
string
Returns
ChildMachineIdentity | undefined
Since
0.2.0
errors
MachineStoreError
Defined in: packages/core/src/MachineStore.ts:684
Expected failure from a machine-store adapter boundary.
Details
operation identifies the stable service operation and cause retains diagnostic ancestry for
adapter, Schema, or serialization failures.
Since
0.2.0
Extends
YieldableError<this> &object&Readonly<{operation: ...;message: ...;cause?: ...; }>
Constructors
Constructor
new MachineStoreError(
args):MachineStoreError
Defined in: node_modules/.pnpm/effect@4.0.0-rc.110/node_modules/effect/dist/Data.d.ts:966
Parameters
args
operation
"now" | "load" | "compareAndSet" | "decode" | "encode"
message
string
cause?
unknown
Returns
Inherited from
Data.TaggedError("MachineStoreError")<{ readonly operation: "now" | "load" | "compareAndSet" | "decode" | "encode" readonly message: string readonly cause?: unknown }>.constructor
Properties
operation
readonlyoperation:"now"|"load"|"compareAndSet"|"decode"|"encode"
Defined in: packages/core/src/MachineStore.ts:685
Inherited from
Data.TaggedError("MachineStoreError").operation
cause?
optionalcause?:unknown
Defined in: node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts:24
Inherited from
Data.TaggedError("MachineStoreError").cause
message
message:
string
Defined in: node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1075
Inherited from
Data.TaggedError("MachineStoreError").message
layers
layerMemory
constlayerMemory:Layer.Layer<MachineStore>
Defined in: packages/core/src/MachineStore.ts:823
Layer providing a fresh process-local machine store.
Gotchas
Building the Layer again creates a separate empty database. Share one Layer value across every engine that must load the same machine instances.
See
makeMemory for direct service construction.
Since
0.2.0
models
MachineInstanceId
MachineInstanceId =
string&object
Defined in: packages/core/src/MachineStore.ts:32
Stable identity of one logical machine instance.
Type Declaration
[MachineInstanceIdTypeId]
readonly[MachineInstanceIdTypeId]: typeofMachineInstanceIdTypeId
Since
0.2.0
DispatchId
DispatchId =
string&object
Defined in: packages/core/src/MachineStore.ts:42
Stable identity of one external dispatch attempt.
Type Declaration
[DispatchIdTypeId]
readonly[DispatchIdTypeId]: typeofDispatchIdTypeId
Since
0.2.0
EntryId
EntryId =
string&object
Defined in: packages/core/src/MachineStore.ts:50
Stable identity of one active state entry.
Type Declaration
[EntryIdTypeId]
readonly[EntryIdTypeId]: typeofEntryIdTypeId
Since
0.2.0
ExecutionId
ExecutionId =
string&object
Defined in: packages/core/src/MachineStore.ts:63
Stable identity supplied to one entry-owned work execution.
Gotchas
The engine preserves this identity across at-least-once redelivery, but an external system must honor it to make its own side effect idempotent.
Type Declaration
[ExecutionIdTypeId]
readonly[ExecutionIdTypeId]: typeofExecutionIdTypeId
Since
0.2.0
Revision
Revision =
number&object
Defined in: packages/core/src/MachineStore.ts:71
Monotonic aggregate revision used by compare-and-set.
Type Declaration
[RevisionTypeId]
readonly[RevisionTypeId]: typeofRevisionTypeId
Since
0.2.0
Fence
Fence =
number&object
Defined in: packages/core/src/MachineStore.ts:79
Monotonic claim fence used to reject stale workers.
Type Declaration
[FenceTypeId]
readonly[FenceTypeId]: typeofFenceTypeId
Since
0.2.0
ChildMachineIdentity
Defined in: packages/core/src/MachineStore.ts:206
Persisted ownership decoded from a derived child-machine identity.
Since
0.2.0
Properties
parentInstanceId
readonlyparentInstanceId:MachineInstanceId
Defined in: packages/core/src/MachineStore.ts:207
parentEntryId
readonlyparentEntryId:EntryId
Defined in: packages/core/src/MachineStore.ts:208
childName
readonlychildName:string
Defined in: packages/core/src/MachineStore.ts:209
PersistedValue
PersistedValue =
Json
Defined in: packages/core/src/MachineStore.ts:267
Canonical JSON-compatible value crossing a machine-store boundary.
Since
0.2.0
PersistedTerminalStatus
PersistedTerminalStatus =
Schema.Schema.Type<typeofPersistedTerminalStatus>
Defined in: packages/core/src/MachineStore.ts:275
Persisted lifecycle of a root or nested runtime node.
Since
0.2.0
PersistedRuntimeNode
PersistedRuntimeNode =
Schema.Schema.Type<typeofPersistedRuntimeNode>
Defined in: packages/core/src/MachineStore.ts:296
Root or nested runtime record stored inside one machine aggregate.
Since
0.2.0
PersistedRuntimeTree
PersistedRuntimeTree =
Schema.Schema.Type<typeofPersistedRuntimeTree>
Defined in: packages/core/src/MachineStore.ts:333
Flattened root and nested runtime tree.
Since
0.2.0
PersistedTimer
PersistedTimer =
Schema.Schema.Type<typeofPersistedTimer>
Defined in: packages/core/src/MachineStore.ts:351
Persisted entry-owned timer.
Details
dueAtEpochMillis is resolved from store time when entry commits. Resumption compares that same
absolute deadline instead of restarting the authored duration.
Since
0.2.0
PersistedExecution
PersistedExecution =
Schema.Schema.Type<typeofPersistedExecution>
Defined in: packages/core/src/MachineStore.ts:379
Persisted stable work execution record.
Since
0.2.0
PersistedMigrationState
PersistedMigrationState =
Schema.Schema.Type<typeofPersistedMigrationState>
Defined in: packages/core/src/MachineStore.ts:404
Application-version state exposed to a definition migration.
Since
0.2.0
StoredMachineDelivery
StoredMachineDelivery =
Schema.Schema.Type<typeofStoredMachineDelivery>
Defined in: packages/core/src/MachineStore.ts:424
Stored machine-mailbox delivery.
Since
0.2.0
StoredActivityDelivery
StoredActivityDelivery =
Schema.Schema.Type<typeofStoredActivityDelivery>
Defined in: packages/core/src/MachineStore.ts:447
Stored activity-command delivery.
Since
0.2.0
StoredDispatch
StoredDispatch =
Schema.Schema.Type<typeofStoredDispatch>
Defined in: packages/core/src/MachineStore.ts:470
Stored dispatch idempotency record.
Since
0.2.0
MachineDocument
MachineDocument =
Schema.Schema.Type<typeofMachineDocument>
Defined in: packages/core/src/MachineStore.ts:527
Complete revisioned aggregate for one root machine instance.
Since
0.2.0
CompareAndSetRequest
Defined in: packages/core/src/MachineStore.ts:623
Expected state and replacement document for one atomic compare-and-set write.
Details
An absent expectedRevision means the aggregate must not exist. notAfter, when present, is an
exclusive store-time deadline checked atomically with the revision and replacement.
Since
0.2.0
Properties
instanceId
readonlyinstanceId:MachineInstanceId
Defined in: packages/core/src/MachineStore.ts:624
expectedRevision
readonlyexpectedRevision:Revision|undefined
Defined in: packages/core/src/MachineStore.ts:625
document
readonlydocument:object
Defined in: packages/core/src/MachineStore.ts:626
formatVersion
readonlyformatVersion:2
revision
readonlyrevision:number=Schema.Number
instanceId
readonlyinstanceId:string=Schema.String
definition
readonlydefinition:object
definition.id
readonlyid:string=Schema.String
definition.version
readonlyversion:string=Schema.String
input
readonlyinput:Json=Schema.Json
status
readonlystatus:"running"|"completed"|"defected"|"cancelled"=PersistedTerminalStatus
runtime
readonlyruntime:object=PersistedRuntimeTree
runtime.nodes
readonlynodes: readonlyobject[]
checkpoint
readonlycheckpoint:object=Checkpoint
checkpoint.formatVersion
readonlyformatVersion:number=Schema.Number
checkpoint.definitionId
readonlydefinitionId:string=Schema.String
checkpoint.persistenceVersion
readonlypersistenceVersion:string=Schema.String
checkpoint.instanceId
readonlyinstanceId:string=Schema.String
checkpoint.revision
readonlyrevision:number=Schema.Number
checkpoint.status
readonlystatus:"running"|"completed"|"defected"
checkpoint.state
readonlystate:Json=Schema.Json
checkpoint.rootEntryId
readonlyrootEntryId:string=Schema.String
checkpoint.regionEntryIds
readonlyregionEntryIds:object
Index Signature
[key: string]: string
checkpoint.timers
readonlytimers: readonlyobject[]
checkpoint.aggregates
readonlyaggregates: readonlyobject[]
checkpoint.nextSequence
readonlynextSequence:number=Schema.Number
checkpoint.defect
readonlydefect: {category: ...;name: ...;message: ...; } |null
messages
readonlymessages: readonlyobject[]
timers
readonlytimers: readonlyobject[]
activities
readonlyactivities: readonlyobject[]
dispatches
readonlydispatches: readonlyobject[]
executions
readonlyexecutions: readonlyobject[]
migration
readonlymigration:object=PersistedMigrationState
migration.definitionId
readonlydefinitionId:string=Schema.String
migration.persistenceVersion
readonlypersistenceVersion:string=Schema.String
migration.state
readonlystate:Json=Schema.Json
messageTombstones
readonlymessageTombstones: readonlystring[]
executionTombstones
readonlyexecutionTombstones: readonlystring[]
nestedDocuments
readonlynestedDocuments: readonlyJson[]
nextSequence
readonlynextSequence:number=Schema.Number
tree
readonlytree:object
tree.rootActorId
readonlyrootActorId:string=Schema.String
tree.nextSequence
readonlynextSequence:number=Schema.Number
tree.records
readonlyrecords: readonlyobject[]
notAfter?
readonlyoptionalnotAfter?:number
Defined in: packages/core/src/MachineStore.ts:627
Committed
Defined in: packages/core/src/MachineStore.ts:636
Successful compare-and-set result with the store-assigned revision and observation time.
Since
0.2.0
Properties
_tag
readonly_tag:"Committed"
Defined in: packages/core/src/MachineStore.ts:637
revision
readonlyrevision:Revision
Defined in: packages/core/src/MachineStore.ts:638
observedAt
readonlyobservedAt:number
Defined in: packages/core/src/MachineStore.ts:639
Conflict
Defined in: packages/core/src/MachineStore.ts:648
Compare-and-set result when another writer changed or created the aggregate.
Since
0.2.0
Properties
_tag
readonly_tag:"Conflict"
Defined in: packages/core/src/MachineStore.ts:649
actualRevision
readonlyactualRevision:Revision|undefined
Defined in: packages/core/src/MachineStore.ts:650
observedAt
readonlyobservedAt:number
Defined in: packages/core/src/MachineStore.ts:651
Expired
Defined in: packages/core/src/MachineStore.ts:660
Compare-and-set result when its exclusive store-time deadline has elapsed.
Since
0.2.0
Properties
_tag
readonly_tag:"Expired"
Defined in: packages/core/src/MachineStore.ts:661
observedAt
readonlyobservedAt:number
Defined in: packages/core/src/MachineStore.ts:662
CompareAndSetResult
Defined in: packages/core/src/MachineStore.ts:671
Result of atomically checking revision, optional deadline, and replacement.
Since
0.2.0
schemas
PersistedTerminalStatus
constPersistedTerminalStatus:Literals<readonly ["running","completed","defected","cancelled"]>
Defined in: packages/core/src/MachineStore.ts:275
Schema for the persisted lifecycle of a root or nested runtime node.
Since
0.2.0
PersistedRuntimeNode
constPersistedRuntimeNode:Struct<{key:String;actorId:String;definitionPath:String;parentActorId:NullOr<String>;ownerStateTag:NullOr<String>;invocation:NullOr<String>;ownerPath:String;parentEntryId:NullOr<String>;definitionId:String;persistenceVersion:String;input:Codec<Json,Json,never,never>;state:Codec<Json,Json,never,never>;status:Literals<readonly [..., ..., ..., ...]>;rootEntryId:String;regionEntryIds:$Array<Tuple<...>>; }>
Defined in: packages/core/src/MachineStore.ts:296
Schema for one root or child runtime record in the flattened aggregate tree.
Since
0.2.0
PersistedRuntimeTree
constPersistedRuntimeTree:Struct<{nodes:$Array<Struct<...>>; }>
Defined in: packages/core/src/MachineStore.ts:333
Schema for a flattened runtime tree whose first node is the root record.
Details
The array representation keeps runtime-selected child keys out of prototype-bearing records at the persistence boundary.
Since
0.2.0
PersistedTimer
constPersistedTimer:Struct<{entryId:String;ownerPath:String;name:String;durationMillis:Number;dueAtEpochMillis:Number;messageId:String; }>
Defined in: packages/core/src/MachineStore.ts:351
Schema for a timer duration and authoritative absolute deadline owned by one entry.
Since
0.2.0
PersistedExecution
constPersistedExecution:Struct<{id:String;entryId:String;ownerPath:String;invocation:String;lane:String;status:Literals<readonly [..., ..., ..., ...]>;attempt:Number;fence:Number; }>
Defined in: packages/core/src/MachineStore.ts:379
Schema for stable work identity and its latest aggregate delivery state.
Since
0.2.0
PersistedMigrationState
constPersistedMigrationState:Struct<{definitionId:String;persistenceVersion:String;state:Codec<Json,Json,never,never>; }>
Defined in: packages/core/src/MachineStore.ts:404
Schema for application-version state exposed to a definition migration.
Since
0.2.0
StoredMachineDelivery
constStoredMachineDelivery:Struct<{value:TaggedUnion<{External: ...;Timer: ...;ActivityOutcome: ...;RegionsComplete: ...; }>;sequence:Number;status:Literals<readonly [..., ..., ..., ...]>;claim:NullOr<Struct<...>>;attempt:Number;fence:Number; }>
Defined in: packages/core/src/MachineStore.ts:424
Schema for a machine-mailbox delivery and its claim bookkeeping.
Since
0.2.0
StoredActivityDelivery
constStoredActivityDelivery:Struct<{value:Struct<{deliveryId: ...;instanceId: ...;executionId: ...;entryId: ...;generation: ...;ownerPath: ...;invocation: ...;lane: ...;state: ...;parentState: ...;concurrencyGroup: ...;concurrencyLimit: ...; }>;sequence:Number;status:Literals<readonly [..., ..., ..., ...]>;claim:NullOr<Struct<...>>;attempt:Number;fence:Number; }>
Defined in: packages/core/src/MachineStore.ts:447
Schema for an activity command and its claim bookkeeping.
Since
0.2.0
StoredDispatch
constStoredDispatch:Struct<{idempotencyKey:String;record:Struct<{instanceId: ...;idempotencyKey: ...;payloadFingerprint: ...;status: ...;revision: ...;reason: ...; }>; }>
Defined in: packages/core/src/MachineStore.ts:470
Schema for a caller-keyed dispatch record.
Since
0.2.0
MachineDocument
constMachineDocument:refine<{formatVersion:2;revision:number;instanceId:string;definition: {id:string;version:string; };input:Json;status:"running"|"completed"|"defected"|"cancelled";runtime: {nodes: readonly ...[]; };checkpoint: {formatVersion:number;definitionId:string;persistenceVersion:string;instanceId:string;revision:number;status: ... | ... | ...;state:Json;rootEntryId:string;regionEntryIds: {[key: ...]: ...; };timers: readonly ...[];aggregates: readonly ...[];nextSequence:number;defect: ... | ...; };messages: readonlyobject[];timers: readonlyobject[];activities: readonlyobject[];dispatches: readonlyobject[];executions: readonlyobject[];migration: {definitionId:string;persistenceVersion:string;state:Json; };messageTombstones: readonlystring[];executionTombstones: readonlystring[];nestedDocuments: readonlyJson[];nextSequence:number;tree: {rootActorId:string;nextSequence:number;records: readonly ...[]; }; },Struct<{formatVersion:Literal<...>;revision:Number;instanceId:String;definition:Struct<...>;input:Codec<..., ..., ..., ...>;status:Literals<...>;runtime:Struct<...>;checkpoint:Struct<...>;messages:$Array<...>;timers:$Array<...>;activities:$Array<...>;dispatches:$Array<...>;executions:$Array<...>;migration:Struct<...>;messageTombstones:$Array<...>;executionTombstones:$Array<...>;nestedDocuments:$Array<...>;nextSequence:Number;tree:Struct<...>; }>>
Defined in: packages/core/src/MachineStore.ts:527
Schema for a complete machine aggregate whose tree journal is internally consistent.
Tree sequences are positional and gapless, record identities are unique, and the journal root is derived from the aggregate instance. These checks keep custom adapters from returning a structurally valid document that would make replay ambiguous.
Since
0.2.0
services
Service
Defined in: packages/core/src/MachineStore.ts:707
Minimal aggregate persistence contract consumed by the machine engine.
Details
The store owns authoritative time, loading by instance identity, and atomic whole-document replacement. Mailbox ordering, claims, timers, work, child machines, and migrations remain engine behavior and must not be reimplemented by adapters.
Gotchas
compareAndSet must check expectedRevision, optional notAfter, and replacement as one atomic
operation. A separate time read followed by a write does not safely fence an expired owner.
Since
0.2.0
Properties
now
readonlynow:Effect<number,MachineStoreError>
Defined in: packages/core/src/MachineStore.ts:708
load
readonlyload: (instanceId) =>Effect<Option<{formatVersion: ...;revision: ...;instanceId: ...;definition: ...;input: ...;status: ...;runtime: ...;checkpoint: ...;messages: ...;timers: ...;activities: ...;dispatches: ...;executions: ...;migration: ...;messageTombstones: ...;executionTombstones: ...;nestedDocuments: ...;nextSequence: ...;tree: ...; }>,MachineStoreError>
Defined in: packages/core/src/MachineStore.ts:709
Parameters
instanceId
Returns
Effect<Option<{ formatVersion: ...; revision: ...; instanceId: ...; definition: ...; input: ...; status: ...; runtime: ...; checkpoint: ...; messages: ...; timers: ...; activities: ...; dispatches: ...; executions: ...; migration: ...; messageTombstones: ...; executionTombstones: ...; nestedDocuments: ...; nextSequence: ...; tree: ...; }>, MachineStoreError>
compareAndSet
readonlycompareAndSet: (request) =>Effect<CompareAndSetResult,MachineStoreError>
Defined in: packages/core/src/MachineStore.ts:712
Parameters
request
Returns
Effect<CompareAndSetResult, MachineStoreError>
MachineStore
Defined in: packages/core/src/MachineStore.ts:729
Effect service for revisioned machine aggregate persistence.
When to use
Use as the service tag provided to MachineEngine.layer, either through a bundled adapter or a
custom adapter that passes the primitive store conformance corpus.
See
Service for the atomic adapter contract.
Since
0.2.0
Extends
Shape<"effect-state-machine/MachineStore",Service,this>
Constructors
Constructor
new MachineStore(
_):MachineStore
Defined in: node_modules/.pnpm/effect@4.0.0-rc.110/node_modules/effect/dist/Context.d.ts:115
Parameters
_
never
Returns
Inherited from
Context.Service<MachineStore, Service>()( "effect-state-machine/MachineStore", ).constructor