@typeonce/effect-machine 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +167 -28
- package/dist/Machine.d.ts +491 -283
- package/dist/Machine.d.ts.map +1 -1
- package/dist/Machine.js +74 -76
- package/dist/Machine.js.map +1 -1
- package/dist/internal/machine/atom.d.ts +7 -3
- package/dist/internal/machine/atom.d.ts.map +1 -1
- package/dist/internal/machine/atom.js +42 -6
- package/dist/internal/machine/atom.js.map +1 -1
- package/dist/internal/machine/cluster.d.ts.map +1 -1
- package/dist/internal/machine/cluster.js +2 -1
- package/dist/internal/machine/cluster.js.map +1 -1
- package/dist/internal/machine/command.js +2 -2
- package/dist/internal/machine/command.js.map +1 -1
- package/dist/internal/machine/commandRuntime.d.ts.map +1 -1
- package/dist/internal/machine/commandRuntime.js +6 -3
- package/dist/internal/machine/commandRuntime.js.map +1 -1
- package/dist/internal/machine/configuration.d.ts +8 -1
- package/dist/internal/machine/configuration.d.ts.map +1 -1
- package/dist/internal/machine/configuration.js +9 -4
- package/dist/internal/machine/configuration.js.map +1 -1
- package/dist/internal/machine/errors.d.ts +1 -1
- package/dist/internal/machine/errors.d.ts.map +1 -1
- package/dist/internal/machine/executionPlan.d.ts +3 -3
- package/dist/internal/machine/executionPlan.d.ts.map +1 -1
- package/dist/internal/machine/executionPlan.js +50 -25
- package/dist/internal/machine/executionPlan.js.map +1 -1
- package/dist/internal/machine/invocation.d.ts.map +1 -1
- package/dist/internal/machine/invocation.js +3 -2
- package/dist/internal/machine/invocation.js.map +1 -1
- package/dist/internal/machine/machine.d.ts +15 -19
- package/dist/internal/machine/machine.d.ts.map +1 -1
- package/dist/internal/machine/machine.js +16 -10
- package/dist/internal/machine/machine.js.map +1 -1
- package/dist/internal/machine/planner.d.ts +2 -1
- package/dist/internal/machine/planner.d.ts.map +1 -1
- package/dist/internal/machine/planner.js +61 -24
- package/dist/internal/machine/planner.js.map +1 -1
- package/dist/internal/machine/process.d.ts +3 -0
- package/dist/internal/machine/process.d.ts.map +1 -1
- package/dist/internal/machine/process.js +11 -8
- package/dist/internal/machine/process.js.map +1 -1
- package/dist/internal/machine/protocol.d.ts +7 -13
- package/dist/internal/machine/protocol.d.ts.map +1 -1
- package/dist/internal/machine/protocol.js +128 -50
- package/dist/internal/machine/protocol.js.map +1 -1
- package/dist/internal/machine/runtime.d.ts +22 -2
- package/dist/internal/machine/runtime.d.ts.map +1 -1
- package/dist/internal/machine/runtime.js +138 -10
- package/dist/internal/machine/runtime.js.map +1 -1
- package/dist/internal/machine/topology.d.ts +7 -0
- package/dist/internal/machine/topology.d.ts.map +1 -1
- package/dist/internal/machine/topology.js +6 -0
- package/dist/internal/machine/topology.js.map +1 -1
- package/dist/internal/testing/machine/finiteModel.js +1 -1
- package/dist/internal/testing/machine/finiteModel.js.map +1 -1
- package/dist/internal/testing/machine/runtime.d.ts.map +1 -1
- package/dist/internal/testing/machine/runtime.js +2 -1
- package/dist/internal/testing/machine/runtime.js.map +1 -1
- package/dist/internal/testing/machine/verification.d.ts.map +1 -1
- package/dist/internal/testing/machine/verification.js +5 -3
- package/dist/internal/testing/machine/verification.js.map +1 -1
- package/dist/testing/MachineTest.d.ts +7 -7
- package/dist/testing/MachineTest.js +7 -7
- package/dist/unstable/cluster/ClusterMachine.d.ts +1 -1
- package/dist/unstable/cluster/ClusterMachine.js +1 -1
- package/dist/unstable/reactivity/AtomMachine.d.ts +27 -8
- package/dist/unstable/reactivity/AtomMachine.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomMachine.js +20 -3
- package/dist/unstable/reactivity/AtomMachine.js.map +1 -1
- package/docs/agent-guide.md +191 -54
- package/package.json +1 -1
- package/src/Machine.ts +1220 -360
- package/src/internal/machine/atom.ts +76 -53
- package/src/internal/machine/cluster.ts +2 -1
- package/src/internal/machine/command.ts +2 -2
- package/src/internal/machine/commandRuntime.ts +9 -4
- package/src/internal/machine/configuration.ts +23 -5
- package/src/internal/machine/errors.ts +1 -1
- package/src/internal/machine/executionPlan.ts +74 -29
- package/src/internal/machine/invocation.ts +3 -2
- package/src/internal/machine/machine.ts +74 -49
- package/src/internal/machine/planner.ts +68 -24
- package/src/internal/machine/process.ts +75 -8
- package/src/internal/machine/protocol.ts +207 -68
- package/src/internal/machine/runtime.ts +266 -11
- package/src/internal/machine/topology.ts +15 -0
- package/src/internal/testing/machine/finiteModel.ts +1 -1
- package/src/internal/testing/machine/runtime.ts +2 -1
- package/src/internal/testing/machine/verification.ts +5 -3
- package/src/testing/MachineTest.ts +7 -7
- package/src/unstable/cluster/ClusterMachine.ts +1 -1
- package/src/unstable/reactivity/AtomMachine.ts +44 -10
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import type * as Option from "effect/Option"
|
|
8
8
|
import type * as Schema from "effect/Schema"
|
|
9
9
|
import type * as Scope from "effect/Scope"
|
|
10
|
+
import type * as Stream from "effect/Stream"
|
|
10
11
|
import type { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity"
|
|
11
12
|
import * as internal from "../../internal/machine/atom.js"
|
|
12
13
|
import type { ChildNotActiveError, NotReadyError } from "../../internal/machine/atom.js"
|
|
@@ -89,14 +90,14 @@ type MachineStartError<InitialE, E, InitialR, R, RuntimeError = never> =
|
|
|
89
90
|
* @category models
|
|
90
91
|
* @since 0.4.0
|
|
91
92
|
*/
|
|
92
|
-
export interface MachineAtom<State, Event, Error = never, Output = never, StartError = never> {
|
|
93
|
+
export interface MachineAtom<State, Event, Error = never, Output = never, StartError = never, Emitted = never> {
|
|
93
94
|
/**
|
|
94
95
|
* Atom containing the running machine handle once startup succeeds.
|
|
95
96
|
*
|
|
96
97
|
* @since 0.4.0
|
|
97
98
|
*/
|
|
98
99
|
readonly ref: Atom.Atom<
|
|
99
|
-
AsyncResult.AsyncResult<Machine.MachineRef<State, Event, Error, Output>, StartError>
|
|
100
|
+
AsyncResult.AsyncResult<Machine.MachineRef<State, Event, Error, Output, Emitted>, StartError>
|
|
100
101
|
>
|
|
101
102
|
|
|
102
103
|
/**
|
|
@@ -163,6 +164,34 @@ type RefState<Ref> = Ref extends Machine.MachineRef<infer State, any, any, any>
|
|
|
163
164
|
type RefError<Ref> = Ref extends Machine.MachineRef<any, any, infer Error, any> ? Error : never
|
|
164
165
|
|
|
165
166
|
type RefOutput<Ref> = Ref extends Machine.MachineRef<any, any, any, infer Output> ? Output : never
|
|
167
|
+
type RefEmitted<Ref> = Ref extends Machine.MachineRef<any, any, any, any, infer Emitted> ? Emitted : never
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Observes ephemeral notifications from the running machine owned by a machine
|
|
171
|
+
* atom. When this stream activates a fresh bridge, it subscribes before machine
|
|
172
|
+
* initialization and observes initial-entry emissions. It never replays
|
|
173
|
+
* emissions from a machine that was already running.
|
|
174
|
+
*
|
|
175
|
+
* @category getters
|
|
176
|
+
* @since 0.10.0
|
|
177
|
+
*/
|
|
178
|
+
export const emissions: <State, Event, Error, Output, StartError, Emitted>(
|
|
179
|
+
self: MachineAtom<State, Event, Error, Output, StartError, Emitted>
|
|
180
|
+
) => Stream.Stream<Emitted, StartError, AtomRegistry.AtomRegistry> = internal.emissions
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Observes emissions from each active instance selected by a child bridge.
|
|
184
|
+
*
|
|
185
|
+
* @category getters
|
|
186
|
+
* @since 0.10.0
|
|
187
|
+
*/
|
|
188
|
+
export const childEmissions: <Child extends Machine.ChildMachine.Any, StartError>(
|
|
189
|
+
self: ChildMachineAtom<Child, StartError>
|
|
190
|
+
) => Stream.Stream<
|
|
191
|
+
RefEmitted<Machine.ChildMachine.Ref<Child>>,
|
|
192
|
+
StartError,
|
|
193
|
+
AtomRegistry.AtomRegistry
|
|
194
|
+
> = internal.childEmissions
|
|
166
195
|
|
|
167
196
|
/**
|
|
168
197
|
* Reactive access to one invoked child machine selected by its descriptor.
|
|
@@ -328,7 +357,7 @@ type ChildState<Child extends Machine.ChildMachine.Any> = RefState<Machine.Child
|
|
|
328
357
|
* const States = Machine.defineStates({ Count })
|
|
329
358
|
* const machine = Machine.make({
|
|
330
359
|
* states: States.states,
|
|
331
|
-
* events:
|
|
360
|
+
* events: Machine.events(),
|
|
332
361
|
* initial: () => States.initial.Count(new Count({ value: 0 }))
|
|
333
362
|
* }).handle({ Count: {} })
|
|
334
363
|
* const machineAtom = AtomMachine.make(machine)
|
|
@@ -439,7 +468,7 @@ export const selectSnapshotChild: <
|
|
|
439
468
|
* const States = Machine.defineStates({ Idle })
|
|
440
469
|
* const machine = Machine.make({
|
|
441
470
|
* states: States.states,
|
|
442
|
-
* events:
|
|
471
|
+
* events: Machine.events(),
|
|
443
472
|
* initial: () => States.initial.Idle.from()
|
|
444
473
|
* }).handle({ Idle: {} })
|
|
445
474
|
* const machineAtom = AtomMachine.make(machine)
|
|
@@ -546,7 +575,8 @@ type MachineAtomOf<M extends Machine.Machine.Any, RuntimeError> = MachineAtom<
|
|
|
546
575
|
Machine.Machine.InitialServices<M>,
|
|
547
576
|
Machine.Machine.Services<M>,
|
|
548
577
|
RuntimeError
|
|
549
|
-
|
|
578
|
+
>,
|
|
579
|
+
Machine.Machine.EmittedEvent<M>
|
|
550
580
|
>
|
|
551
581
|
|
|
552
582
|
type ResumedMachineAtomOf<M extends Machine.Machine.Any, RuntimeError> = MachineAtom<
|
|
@@ -554,7 +584,8 @@ type ResumedMachineAtomOf<M extends Machine.Machine.Any, RuntimeError> = Machine
|
|
|
554
584
|
Machine.Machine.EventInput<Machine.Machine.InputEvent<M>>,
|
|
555
585
|
MachineRuntimeError<Machine.Machine.Error<M>, Machine.Machine.Services<M>>,
|
|
556
586
|
Machine.Machine.Output<M>,
|
|
557
|
-
Machine.MachineSchemaDecodeError | RuntimeError
|
|
587
|
+
Machine.MachineSchemaDecodeError | RuntimeError,
|
|
588
|
+
Machine.Machine.EmittedEvent<M>
|
|
558
589
|
>
|
|
559
590
|
|
|
560
591
|
/**
|
|
@@ -607,7 +638,7 @@ export interface Bound<Services, RuntimeError = never> {
|
|
|
607
638
|
* const States = Machine.defineStates({ Idle })
|
|
608
639
|
* const machine = Machine.make({
|
|
609
640
|
* states: States.states,
|
|
610
|
-
* events:
|
|
641
|
+
* events: Machine.events(),
|
|
611
642
|
* initial: () => States.initial.Idle.from()
|
|
612
643
|
* }).handle({ Idle: {} })
|
|
613
644
|
*
|
|
@@ -631,7 +662,8 @@ export const make: {
|
|
|
631
662
|
FinalStates extends Machine.Machine.StateIdentifier<States> = never,
|
|
632
663
|
Output = never,
|
|
633
664
|
OutputStates extends Machine.Machine.StateIdentifier<States> = never,
|
|
634
|
-
InputEvents extends ReadonlyArray<Machine.Machine.TaggedSchema> = Events
|
|
665
|
+
InputEvents extends ReadonlyArray<Machine.Machine.TaggedSchema> = Events,
|
|
666
|
+
ParentEvents extends ReadonlyArray<Machine.Machine.TaggedSchema> = readonly []
|
|
635
667
|
>(
|
|
636
668
|
machine:
|
|
637
669
|
& Machine.Machine<
|
|
@@ -647,7 +679,8 @@ export const make: {
|
|
|
647
679
|
Output,
|
|
648
680
|
Emits,
|
|
649
681
|
OutputStates,
|
|
650
|
-
InputEvents
|
|
682
|
+
InputEvents,
|
|
683
|
+
ParentEvents
|
|
651
684
|
>
|
|
652
685
|
& EnsureNoExternalRequirements<
|
|
653
686
|
MachineRequirements<
|
|
@@ -664,7 +697,8 @@ export const make: {
|
|
|
664
697
|
Machine.Machine.EventInputOf<InputEvents>,
|
|
665
698
|
MachineRuntimeError<E, R>,
|
|
666
699
|
Output,
|
|
667
|
-
MachineStartError<InitialE, E, InitialR, R
|
|
700
|
+
MachineStartError<InitialE, E, InitialR, R>,
|
|
701
|
+
Machine.Machine.EmittedEventOf<Emits>
|
|
668
702
|
>
|
|
669
703
|
} = internal.make
|
|
670
704
|
|