@typeonce/effect-machine 0.3.0 → 0.4.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.
Files changed (149) hide show
  1. package/README.md +203 -16
  2. package/dist/Machine.d.ts +784 -289
  3. package/dist/Machine.d.ts.map +1 -1
  4. package/dist/Machine.js +158 -528
  5. package/dist/Machine.js.map +1 -1
  6. package/dist/internal/machine/activities.d.ts +57 -0
  7. package/dist/internal/machine/activities.d.ts.map +1 -0
  8. package/dist/internal/machine/activities.js +49 -0
  9. package/dist/internal/machine/activities.js.map +1 -0
  10. package/dist/internal/machine/atom.d.ts +69 -0
  11. package/dist/internal/machine/atom.d.ts.map +1 -0
  12. package/dist/{AtomMachine.js → internal/machine/atom.js} +19 -94
  13. package/dist/internal/machine/atom.js.map +1 -0
  14. package/dist/internal/machine/cluster.d.ts +63 -0
  15. package/dist/internal/machine/cluster.d.ts.map +1 -0
  16. package/dist/{ClusterMachine.js → internal/machine/cluster.js} +14 -118
  17. package/dist/internal/machine/cluster.js.map +1 -0
  18. package/dist/internal/machine/command.d.ts +16 -0
  19. package/dist/internal/machine/command.d.ts.map +1 -0
  20. package/dist/internal/machine/command.js +45 -0
  21. package/dist/internal/machine/command.js.map +1 -0
  22. package/dist/internal/machine/commandRuntime.d.ts +13 -0
  23. package/dist/internal/machine/commandRuntime.d.ts.map +1 -0
  24. package/dist/internal/machine/commandRuntime.js +16 -0
  25. package/dist/internal/machine/commandRuntime.js.map +1 -0
  26. package/dist/internal/{machineModel.d.ts → machine/configuration.d.ts} +11 -60
  27. package/dist/internal/machine/configuration.d.ts.map +1 -0
  28. package/dist/internal/{machineModel.js → machine/configuration.js} +249 -544
  29. package/dist/internal/machine/configuration.js.map +1 -0
  30. package/dist/internal/{machineErrors.d.ts → machine/errors.d.ts} +1 -1
  31. package/dist/internal/machine/errors.d.ts.map +1 -0
  32. package/dist/internal/{machineErrors.js → machine/errors.js} +1 -1
  33. package/dist/internal/machine/errors.js.map +1 -0
  34. package/dist/internal/machine/executionPlan.d.ts +49 -0
  35. package/dist/internal/machine/executionPlan.d.ts.map +1 -0
  36. package/dist/internal/machine/executionPlan.js +667 -0
  37. package/dist/internal/machine/executionPlan.js.map +1 -0
  38. package/dist/internal/machine/invocation.d.ts +23 -0
  39. package/dist/internal/machine/invocation.d.ts.map +1 -0
  40. package/dist/internal/machine/invocation.js +77 -0
  41. package/dist/internal/machine/invocation.js.map +1 -0
  42. package/dist/internal/machine/machine.d.ts +183 -0
  43. package/dist/internal/machine/machine.d.ts.map +1 -0
  44. package/dist/internal/machine/machine.js +552 -0
  45. package/dist/internal/machine/machine.js.map +1 -0
  46. package/dist/internal/machine/planner.d.ts +182 -0
  47. package/dist/internal/machine/planner.d.ts.map +1 -0
  48. package/dist/internal/machine/planner.js +1082 -0
  49. package/dist/internal/machine/planner.js.map +1 -0
  50. package/dist/internal/{machineProcess.d.ts → machine/process.d.ts} +10 -4
  51. package/dist/internal/machine/process.d.ts.map +1 -0
  52. package/dist/internal/machine/process.js +446 -0
  53. package/dist/internal/machine/process.js.map +1 -0
  54. package/dist/internal/machine/protocol.d.ts +34 -0
  55. package/dist/internal/machine/protocol.d.ts.map +1 -0
  56. package/dist/internal/machine/protocol.js +182 -0
  57. package/dist/internal/machine/protocol.js.map +1 -0
  58. package/dist/internal/machine/readiness.d.ts +4 -0
  59. package/dist/internal/machine/readiness.d.ts.map +1 -0
  60. package/dist/internal/machine/readiness.js +2 -0
  61. package/dist/internal/machine/readiness.js.map +1 -0
  62. package/dist/internal/{machineRuntime.d.ts → machine/runtime.d.ts} +104 -2
  63. package/dist/internal/machine/runtime.d.ts.map +1 -0
  64. package/dist/internal/machine/runtime.js +1381 -0
  65. package/dist/internal/machine/runtime.js.map +1 -0
  66. package/dist/internal/machine/serialization.d.ts +14 -0
  67. package/dist/internal/machine/serialization.d.ts.map +1 -0
  68. package/dist/internal/machine/serialization.js +338 -0
  69. package/dist/internal/machine/serialization.js.map +1 -0
  70. package/dist/internal/machine/stateDefinition.d.ts +15 -0
  71. package/dist/internal/machine/stateDefinition.d.ts.map +1 -0
  72. package/dist/internal/machine/stateDefinition.js +210 -0
  73. package/dist/internal/machine/stateDefinition.js.map +1 -0
  74. package/dist/internal/machine/symbols.d.ts +3 -0
  75. package/dist/internal/machine/symbols.d.ts.map +1 -0
  76. package/dist/internal/machine/symbols.js +3 -0
  77. package/dist/internal/machine/symbols.js.map +1 -0
  78. package/dist/internal/machine/topology.d.ts +98 -0
  79. package/dist/internal/machine/topology.d.ts.map +1 -0
  80. package/dist/internal/machine/topology.js +347 -0
  81. package/dist/internal/machine/topology.js.map +1 -0
  82. package/dist/internal/testing/machine/arbitrary.d.ts +36 -0
  83. package/dist/internal/testing/machine/arbitrary.d.ts.map +1 -0
  84. package/dist/internal/testing/machine/arbitrary.js +68 -0
  85. package/dist/internal/testing/machine/arbitrary.js.map +1 -0
  86. package/dist/internal/testing/machine/finiteModel.d.ts +322 -0
  87. package/dist/internal/testing/machine/finiteModel.d.ts.map +1 -0
  88. package/dist/internal/testing/machine/finiteModel.js +976 -0
  89. package/dist/internal/testing/machine/finiteModel.js.map +1 -0
  90. package/dist/internal/testing/machine/referenceModel.d.ts +203 -0
  91. package/dist/internal/testing/machine/referenceModel.d.ts.map +1 -0
  92. package/dist/internal/testing/machine/referenceModel.js +1012 -0
  93. package/dist/internal/testing/machine/referenceModel.js.map +1 -0
  94. package/dist/internal/testing/machine/runtime.d.ts +328 -0
  95. package/dist/internal/testing/machine/runtime.d.ts.map +1 -0
  96. package/dist/internal/testing/machine/runtime.js +437 -0
  97. package/dist/internal/testing/machine/runtime.js.map +1 -0
  98. package/dist/internal/testing/machine/verification.d.ts +33 -0
  99. package/dist/internal/testing/machine/verification.d.ts.map +1 -0
  100. package/dist/internal/testing/machine/verification.js +1446 -0
  101. package/dist/internal/testing/machine/verification.js.map +1 -0
  102. package/dist/testing/MachineTest.d.ts +606 -0
  103. package/dist/testing/MachineTest.d.ts.map +1 -0
  104. package/dist/testing/MachineTest.js +102 -0
  105. package/dist/testing/MachineTest.js.map +1 -0
  106. package/dist/testing/index.d.ts +7 -0
  107. package/dist/testing/index.d.ts.map +1 -0
  108. package/dist/testing/index.js +7 -0
  109. package/dist/testing/index.js.map +1 -0
  110. package/dist/{ClusterMachine.d.ts → unstable/cluster/ClusterMachine.d.ts} +19 -27
  111. package/dist/unstable/cluster/ClusterMachine.d.ts.map +1 -0
  112. package/dist/unstable/cluster/ClusterMachine.js +126 -0
  113. package/dist/unstable/cluster/ClusterMachine.js.map +1 -0
  114. package/dist/{cluster.js → unstable/cluster/index.d.ts} +1 -1
  115. package/dist/unstable/cluster/index.d.ts.map +1 -0
  116. package/dist/{cluster.d.ts → unstable/cluster/index.js} +1 -1
  117. package/dist/unstable/cluster/index.js.map +1 -0
  118. package/dist/{AtomMachine.d.ts → unstable/reactivity/AtomMachine.d.ts} +35 -20
  119. package/dist/unstable/reactivity/AtomMachine.d.ts.map +1 -0
  120. package/dist/unstable/reactivity/AtomMachine.js +113 -0
  121. package/dist/unstable/reactivity/AtomMachine.js.map +1 -0
  122. package/dist/{reactivity.js → unstable/reactivity/index.d.ts} +1 -1
  123. package/dist/unstable/reactivity/index.d.ts.map +1 -0
  124. package/dist/{reactivity.d.ts → unstable/reactivity/index.js} +1 -1
  125. package/dist/unstable/reactivity/index.js.map +1 -0
  126. package/docs/agent-guide.md +169 -31
  127. package/package.json +19 -10
  128. package/dist/AtomMachine.d.ts.map +0 -1
  129. package/dist/AtomMachine.js.map +0 -1
  130. package/dist/ClusterMachine.d.ts.map +0 -1
  131. package/dist/ClusterMachine.js.map +0 -1
  132. package/dist/cluster.d.ts.map +0 -1
  133. package/dist/cluster.js.map +0 -1
  134. package/dist/internal/machineErrors.d.ts.map +0 -1
  135. package/dist/internal/machineErrors.js.map +0 -1
  136. package/dist/internal/machineModel.d.ts.map +0 -1
  137. package/dist/internal/machineModel.js.map +0 -1
  138. package/dist/internal/machinePlanner.d.ts +0 -74
  139. package/dist/internal/machinePlanner.d.ts.map +0 -1
  140. package/dist/internal/machinePlanner.js +0 -797
  141. package/dist/internal/machinePlanner.js.map +0 -1
  142. package/dist/internal/machineProcess.d.ts.map +0 -1
  143. package/dist/internal/machineProcess.js +0 -181
  144. package/dist/internal/machineProcess.js.map +0 -1
  145. package/dist/internal/machineRuntime.d.ts.map +0 -1
  146. package/dist/internal/machineRuntime.js +0 -365
  147. package/dist/internal/machineRuntime.js.map +0 -1
  148. package/dist/reactivity.d.ts.map +0 -1
  149. package/dist/reactivity.js.map +0 -1
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Internal machine schema protocol and boundary decoders.
3
+ *
4
+ * @since 4.0.0
5
+ */
6
+ import * as Effect from "effect/Effect";
7
+ import * as Schema from "effect/Schema";
8
+ import type { Machine } from "../../Machine.js";
9
+ import { MachineSchemaDecodeError } from "./errors.js";
10
+ export interface DecodeBoundaryOptions {
11
+ readonly boundary: "input" | "event" | "emit" | "state" | "output" | "history" | "configuration";
12
+ readonly state?: string;
13
+ readonly event?: string;
14
+ }
15
+ export declare const setProtocol: (machine: Machine.Any) => void;
16
+ export declare const copyProtocol: (source: Machine.Any, target: Machine.Any) => void;
17
+ export declare const getEventName: (event: unknown) => string | undefined;
18
+ export declare const decodeBoundary: <A>(machine: Machine.Any, schema: Schema.Top, value: unknown, options: DecodeBoundaryOptions) => Effect.Effect<A, MachineSchemaDecodeError>;
19
+ export declare const decodeBoundarySync: <A>(machine: Machine.Any, schema: Schema.Top, value: unknown, options: DecodeBoundaryOptions) => A;
20
+ /** Constructs an event through one of the machine protocol's own schemas and
21
+ * records the decoded value as trusted by that protocol. Machine clones share
22
+ * the protocol record, while unrelated machines retain independent trust. */
23
+ export declare const makeEvent: <Schema extends Machine.TaggedSchema>(machine: Machine.Any, schema: Schema, input: unknown) => Schema["Type"];
24
+ export declare const decodeInput: <Input extends Schema.Top>(machine: Machine.Any, schema: Input, value: unknown) => Effect.Effect<Input["Type"], MachineSchemaDecodeError>;
25
+ export declare const decodeEvent: <const Events extends ReadonlyArray<Machine.TaggedSchema>>(machine: Machine.Any, event: unknown) => Effect.Effect<Machine.EventOf<Events>, MachineSchemaDecodeError>;
26
+ export declare const decodeEventSync: <const Events extends ReadonlyArray<Machine.TaggedSchema>>(machine: Machine.Any, event: unknown) => Machine.EventOf<Events>;
27
+ export declare const decodeEmit: <const Emits extends ReadonlyArray<Machine.TaggedSchema>>(machine: Machine.Any, event: unknown) => Effect.Effect<Machine.EmitOf<Emits>, MachineSchemaDecodeError>;
28
+ export declare const decodeEmitSync: <const Emits extends ReadonlyArray<Machine.TaggedSchema>>(machine: Machine.Any, event: unknown) => Machine.EmitOf<Emits>;
29
+ export declare const decodeInputSync: <Input extends Schema.Top>(machine: Machine.Any, schema: Input, value: unknown) => Input["Type"];
30
+ export declare const decodeStateValue: (machine: Machine.Any, node: Machine.StateNode, value: unknown) => Effect.Effect<unknown, MachineSchemaDecodeError>;
31
+ export declare const decodeStateValueSync: (machine: Machine.Any, node: Machine.StateNode, value: unknown) => unknown;
32
+ export declare const decodeOutputValue: (machine: Machine.Any, node: Machine.StateNode, value: unknown) => Effect.Effect<unknown, MachineSchemaDecodeError>;
33
+ export declare const decodeOutputValueSync: (machine: Machine.Any, node: Machine.StateNode, value: unknown) => unknown;
34
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/internal/machine/protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Internal machine schema protocol and boundary decoders.
3
+ *
4
+ * @since 4.0.0
5
+ */
6
+ import * as Cause from "effect/Cause";
7
+ import * as Effect from "effect/Effect";
8
+ import { hasProperty } from "effect/Predicate";
9
+ import * as Result from "effect/Result";
10
+ import * as Schema from "effect/Schema";
11
+ import { MachineSchemaDecodeError } from "./errors.js";
12
+ import { getStateNodeSchema, isStateInput } from "./topology.js";
13
+ const boundaryDecoderCache = new WeakMap();
14
+ const boundaryResultDecoderCache = new WeakMap();
15
+ const getBoundaryDecoder = (schema) => {
16
+ const key = schema;
17
+ const cached = boundaryDecoderCache.get(key);
18
+ if (cached !== undefined) {
19
+ return cached;
20
+ }
21
+ const decoder = Schema.decodeUnknownEffect(Schema.toType(schema));
22
+ boundaryDecoderCache.set(key, decoder);
23
+ return decoder;
24
+ };
25
+ const getBoundaryResultDecoder = (schema) => {
26
+ const key = schema;
27
+ const cached = boundaryResultDecoderCache.get(key);
28
+ if (cached !== undefined) {
29
+ return cached;
30
+ }
31
+ const decoder = Schema.decodeUnknownResult(Schema.toType(schema));
32
+ boundaryResultDecoderCache.set(key, decoder);
33
+ return decoder;
34
+ };
35
+ const MachineProtocolTypeId = Symbol.for("effect/Machine/protocol");
36
+ const getProtocolSchemas = (machine) => {
37
+ const protocol = machine[MachineProtocolTypeId];
38
+ if (protocol === undefined) {
39
+ throw new Error("Machine protocol is unavailable");
40
+ }
41
+ return protocol;
42
+ };
43
+ const setProtocolSchemas = (machine, protocol) => {
44
+ Object.defineProperty(machine, MachineProtocolTypeId, {
45
+ value: protocol,
46
+ enumerable: false
47
+ });
48
+ };
49
+ const collectEventConstructors = (schemas) => {
50
+ const constructors = new Set();
51
+ const add = (schema) => {
52
+ const key = schema;
53
+ if (constructors.has(key))
54
+ return;
55
+ constructors.add(key);
56
+ if (!hasProperty(schema, "cases") || typeof schema.cases !== "object" || schema.cases === null)
57
+ return;
58
+ for (const candidate of Object.values(schema.cases)) {
59
+ if (((typeof candidate === "object" && candidate !== null) || typeof candidate === "function") &&
60
+ hasProperty(candidate, "make")) {
61
+ add(candidate);
62
+ }
63
+ }
64
+ };
65
+ for (const schema of schemas)
66
+ add(schema);
67
+ return constructors;
68
+ };
69
+ export const setProtocol = (machine) => {
70
+ const events = [...machine.events, ...machine.internalEvents];
71
+ setProtocolSchemas(machine, {
72
+ event: Schema.Union(events),
73
+ emit: Schema.Union(machine.emits),
74
+ eventConstructors: collectEventConstructors(events),
75
+ trustedEvents: new WeakSet()
76
+ });
77
+ };
78
+ export const copyProtocol = (source, target) => setProtocolSchemas(target, getProtocolSchemas(source));
79
+ export const getEventName = (event) => hasProperty(event, "_tag") ? String(event._tag) : undefined;
80
+ export const decodeBoundary = (machine, schema, value, options) => getBoundaryDecoder(schema)(value).pipe(Effect.mapError((cause) => new MachineSchemaDecodeError({
81
+ machineId: machine.id,
82
+ boundary: options.boundary,
83
+ cause,
84
+ ...(options.state === undefined ? {} : { state: options.state }),
85
+ ...(options.event === undefined ? {} : { event: options.event })
86
+ })));
87
+ export const decodeBoundarySync = (machine, schema, value, options) => {
88
+ const decoded = getBoundaryResultDecoder(schema)(value);
89
+ if (Result.isFailure(decoded)) {
90
+ throw new MachineSchemaDecodeError({
91
+ machineId: machine.id,
92
+ boundary: options.boundary,
93
+ cause: decoded.failure,
94
+ ...(options.state === undefined ? {} : { state: options.state }),
95
+ ...(options.event === undefined ? {} : { event: options.event })
96
+ });
97
+ }
98
+ return decoded.success;
99
+ };
100
+ const makeBoundarySync = (machine, schema, input, options) => {
101
+ try {
102
+ return schema.make(input);
103
+ }
104
+ catch (cause) {
105
+ const issue = cause instanceof Error ? cause.cause : undefined;
106
+ throw new MachineSchemaDecodeError({
107
+ machineId: machine.id,
108
+ boundary: options.boundary,
109
+ cause: Schema.isSchemaError(cause)
110
+ ? cause
111
+ : hasProperty(issue, "~effect/SchemaIssue/Issue")
112
+ ? new Schema.SchemaError(issue)
113
+ : Cause.die(cause),
114
+ ...(options.state === undefined ? {} : { state: options.state }),
115
+ ...(options.event === undefined ? {} : { event: options.event })
116
+ });
117
+ }
118
+ };
119
+ /** Constructs an event through one of the machine protocol's own schemas and
120
+ * records the decoded value as trusted by that protocol. Machine clones share
121
+ * the protocol record, while unrelated machines retain independent trust. */
122
+ export const makeEvent = (machine, schema, input) => {
123
+ const protocol = getProtocolSchemas(machine);
124
+ if (!protocol.eventConstructors.has(schema)) {
125
+ throw new Error("Machine.event expected a schema from the machine event protocol");
126
+ }
127
+ const inputName = getEventName(input);
128
+ const event = makeBoundarySync(machine, schema, input, inputName === undefined ? { boundary: "event" } : { boundary: "event", event: inputName });
129
+ protocol.trustedEvents.add(event);
130
+ return event;
131
+ };
132
+ const isTrustedEvent = (protocol, event) => typeof event === "object" && event !== null && protocol.trustedEvents.has(event);
133
+ export const decodeInput = (machine, schema, value) => decodeBoundary(machine, schema, value, { boundary: "input" });
134
+ export const decodeEvent = (machine, event) => {
135
+ const protocol = getProtocolSchemas(machine);
136
+ if (isTrustedEvent(protocol, event)) {
137
+ return Effect.succeed(event);
138
+ }
139
+ const eventName = getEventName(event);
140
+ return decodeBoundary(machine, protocol.event, event, eventName === undefined ? { boundary: "event" } : { boundary: "event", event: eventName });
141
+ };
142
+ export const decodeEventSync = (machine, event) => {
143
+ const protocol = getProtocolSchemas(machine);
144
+ if (isTrustedEvent(protocol, event)) {
145
+ return event;
146
+ }
147
+ const eventName = getEventName(event);
148
+ return decodeBoundarySync(machine, protocol.event, event, eventName === undefined ? { boundary: "event" } : { boundary: "event", event: eventName });
149
+ };
150
+ export const decodeEmit = (machine, event) => {
151
+ const eventName = getEventName(event);
152
+ return decodeBoundary(machine, getProtocolSchemas(machine).emit, event, eventName === undefined ? { boundary: "emit" } : { boundary: "emit", event: eventName });
153
+ };
154
+ export const decodeEmitSync = (machine, event) => {
155
+ const eventName = getEventName(event);
156
+ return decodeBoundarySync(machine, getProtocolSchemas(machine).emit, event, eventName === undefined ? { boundary: "emit" } : { boundary: "emit", event: eventName });
157
+ };
158
+ export const decodeInputSync = (machine, schema, value) => decodeBoundarySync(machine, schema, value, { boundary: "input" });
159
+ export const decodeStateValue = (machine, node, value) => isStateInput(value)
160
+ ? getStateNodeSchema(node).makeEffect(value.input).pipe(Effect.mapError((cause) => new MachineSchemaDecodeError({
161
+ machineId: machine.id,
162
+ boundary: "state",
163
+ state: node.path,
164
+ cause: new Schema.SchemaError(cause)
165
+ })))
166
+ : decodeBoundary(machine, getStateNodeSchema(node), value, { boundary: "state", state: node.path });
167
+ export const decodeStateValueSync = (machine, node, value) => {
168
+ if (!isStateInput(value)) {
169
+ return decodeBoundarySync(machine, getStateNodeSchema(node), value, { boundary: "state", state: node.path });
170
+ }
171
+ return makeBoundarySync(machine, getStateNodeSchema(node), value.input, {
172
+ boundary: "state",
173
+ state: node.path
174
+ });
175
+ };
176
+ export const decodeOutputValue = (machine, node, value) => node.output === undefined
177
+ ? Effect.succeed(value)
178
+ : decodeBoundary(machine, node.output, value, { boundary: "output", state: node.path });
179
+ export const decodeOutputValueSync = (machine, node, value) => node.output === undefined
180
+ ? value
181
+ : decodeBoundarySync(machine, node.output, value, { boundary: "output", state: node.path });
182
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/internal/machine/protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type * as Machine from "../../Machine.js";
2
+ /** Canonical proof required before a machine can be planned or executed. */
3
+ export type EnsureExecutable<States extends Machine.Machine.StateSchemas, UnhandledStates extends Machine.Machine.StateIdentifier<States>, OutputStates extends Machine.Machine.StateIdentifier<States>> = Machine.Machine.EnsureOutputImplementations<States, OutputStates> & Machine.Machine.EnsureHistoryImplementations<States, UnhandledStates>;
4
+ //# sourceMappingURL=readiness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../../../src/internal/machine/readiness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAEhD,4EAA4E;AAC5E,MAAM,MAAM,gBAAgB,CAC1B,MAAM,SAAS,OAAO,CAAC,OAAO,CAAC,YAAY,EAC3C,eAAe,SAAS,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,EAC/D,YAAY,SAAS,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,IAE1D,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,MAAM,EAAE,YAAY,CAAC,GACjE,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=readiness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readiness.js","sourceRoot":"","sources":["../../../src/internal/machine/readiness.ts"],"names":[],"mappings":""}
@@ -7,14 +7,19 @@ import * as Cause from "effect/Cause";
7
7
  import * as Context from "effect/Context";
8
8
  import * as Effect from "effect/Effect";
9
9
  import * as Option from "effect/Option";
10
+ import * as Queue from "effect/Queue";
10
11
  import * as Scope from "effect/Scope";
11
12
  import * as Stream from "effect/Stream";
12
- import { ChildAlreadyExistsError, StoppedError } from "./machineErrors.js";
13
+ import { ChildAlreadyExistsError, StoppedError } from "./errors.js";
13
14
  type ChildDescriptor = {
14
15
  readonly id: string;
15
16
  readonly machine: object;
16
17
  };
17
18
  type ChildSelector = string | ChildDescriptor;
19
+ /** @internal */
20
+ export declare const activeSnapshotObserver: unique symbol;
21
+ /** @internal */
22
+ export declare const sendParentOverride: unique symbol;
18
23
  export type RuntimeSnapshot<State, Error = never, Output = never> = {
19
24
  readonly status: "active";
20
25
  readonly state: State;
@@ -98,11 +103,79 @@ export interface ProcessScope<Event> {
98
103
  }
99
104
  export interface ProcessContext<State, Event> extends ProcessScope<Event> {
100
105
  readonly receive: Effect.Effect<Event>;
106
+ /** @internal */
107
+ readonly mailbox?: Queue.Dequeue<Event>;
108
+ /** @internal */
109
+ readonly poll?: Effect.Effect<Option.Option<Event>>;
101
110
  readonly state: Effect.Effect<State>;
102
111
  readonly setState: (state: State) => Effect.Effect<void>;
103
112
  readonly updateState: <E, R>(f: (state: State) => Effect.Effect<State, E, R>) => Effect.Effect<void, E, R>;
113
+ /** Present only when a compiled statechart is forced through the generic runtime. @internal */
114
+ readonly ownedChildren?: OwnedChildRuntime;
115
+ }
116
+ /**
117
+ * Owner-local execution context for compiled statecharts.
118
+ *
119
+ * Unlike `ProcessContext`, synchronous mailbox and state operations do not
120
+ * introduce an Effect boundary. The compiled drain still returns an Effect so
121
+ * actor commands, invokes, observation callbacks, interruption, and the Effect
122
+ * scheduler remain explicit at their actual boundaries.
123
+ *
124
+ * @internal
125
+ */
126
+ export interface CompiledProcessContext<State, Event> {
127
+ readonly scope: ProcessScope<Event>;
128
+ readonly ownedChildren: OwnedChildRuntime;
129
+ readonly poll: () => Option.Option<Event>;
130
+ readonly state: () => State;
131
+ readonly commit: (state: State) => Effect.Effect<void> | undefined;
132
+ /**
133
+ * Publishes the current synchronous segment before continuing with work that
134
+ * may suspend, run user effects, or make the committed state observable.
135
+ */
136
+ readonly runAfterChanges: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
137
+ executionState: unknown;
138
+ }
139
+ type CompiledProcessInitial<State, Output> = {
140
+ readonly state: State;
141
+ readonly done: false;
142
+ readonly output: undefined;
143
+ } | {
144
+ readonly state: State;
145
+ readonly done: true;
146
+ readonly output: Output;
147
+ } | {
148
+ readonly state: State;
149
+ readonly done: boolean;
150
+ readonly output: Output | undefined;
151
+ readonly executionState: unknown;
152
+ };
153
+ export type CompiledProcessDrain<State, Event, Error, Requirements, Output> = {
154
+ readonly _tag: "Process";
155
+ readonly run: (context: ProcessContext<State, Event>) => Effect.Effect<Option.Option<Output>, Error, Requirements>;
156
+ } | {
157
+ readonly _tag: "Owned";
158
+ readonly run: (context: CompiledProcessContext<State, Event>) => Effect.Effect<Option.Option<Output>, Error, Requirements>;
159
+ };
160
+ /**
161
+ * The complete capability descriptor consumed by the compact process runtime.
162
+ * Generic process logic omits this field entirely.
163
+ *
164
+ * @internal
165
+ */
166
+ export interface CompiledProcessExecution<State, Event, Error, Requirements, Output, InitialError> {
167
+ readonly _tag: "Compiled";
168
+ readonly childless: boolean;
169
+ readonly initial?: (scope: ProcessScope<Event>) => Effect.Effect<CompiledProcessInitial<State, Output>, InitialError, Requirements>;
170
+ readonly initialSync?: (scope: ProcessScope<Event>) => CompiledProcessInitial<State, Output>;
171
+ readonly drain: CompiledProcessDrain<State, Event, Error, Requirements, Output>;
104
172
  }
173
+ export type ProcessExecution<State, Event, Error, Requirements, Output, InitialError> = {
174
+ readonly _tag: "Childless";
175
+ } | CompiledProcessExecution<State, Event, Error, Requirements, Output, InitialError>;
105
176
  export interface ProcessLogic<State, Event, out Error = never, out Requirements = never, out Output = never, out InitialError = never> {
177
+ /** @internal */
178
+ readonly execution?: ProcessExecution<State, Event, Error, Requirements, Output, InitialError>;
106
179
  initial(scope: ProcessScope<Event>): Effect.Effect<State, InitialError, Requirements>;
107
180
  run(context: ProcessContext<State, Event>): Effect.Effect<Output, Error, Requirements>;
108
181
  }
@@ -111,6 +184,11 @@ export interface ProcessSpawn {
111
184
  <ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError = never>(logic: ProcessLogic<ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError>, options: {
112
185
  readonly id: string;
113
186
  readonly descriptor?: ChildDescriptor;
187
+ readonly onOutcome?: (outcome: RuntimeOutcome<ChildState, ChildError, ChildOutput>) => Effect.Effect<void>;
188
+ readonly [activeSnapshotObserver]?: (snapshot: Extract<RuntimeSnapshot<ChildState, ChildError, ChildOutput>, {
189
+ readonly status: "active";
190
+ }>) => Effect.Effect<void>;
191
+ readonly [sendParentOverride]?: (event: unknown) => Effect.Effect<void, StoppedError>;
114
192
  }): Effect.Effect<MachineRef<ChildState, ChildEvent, ChildError, ChildOutput>, ChildAlreadyExistsError | ChildInitialError, Exclude<ChildRequirements, Scope.Scope>>;
115
193
  }
116
194
  declare const MachineRuntime_base: Context.ServiceClass<MachineRuntime, "effect/Machine/MachineRuntime", ProcessScope<any>>;
@@ -118,8 +196,32 @@ export declare class MachineRuntime extends MachineRuntime_base {
118
196
  }
119
197
  export declare const provideMachineRuntime: <A, E, R, Event>(effect: Effect.Effect<A, E, R>, scope: ProcessScope<Event>) => Effect.Effect<A, E, Exclude<R, MachineRuntime>>;
120
198
  export declare const watch: <State, Event, Error = never, Output = never>(ref: MachineRef<State, Event, Error, Output>) => Stream.Stream<RuntimeOutcome<State, Error, Output>>;
199
+ /** @internal */
200
+ export interface OwnedChildSpawnOptions {
201
+ readonly key: string;
202
+ readonly path: string;
203
+ readonly id: string;
204
+ readonly duplicateId: string;
205
+ readonly descriptor?: ChildDescriptor;
206
+ readonly onOutcome: (isCurrent: () => boolean, outcome: RuntimeOutcome<any, any, any>) => Effect.Effect<void>;
207
+ readonly onSnapshot?: (isCurrent: () => boolean, snapshot: Extract<RuntimeSnapshot<any, any, any>, {
208
+ readonly status: "active";
209
+ }>) => Effect.Effect<void>;
210
+ readonly sendParent: (isCurrent: () => boolean, event: unknown) => Effect.Effect<void, StoppedError>;
211
+ }
212
+ /** @internal */
213
+ export interface OwnedChildRuntime {
214
+ readonly spawn: (makeLogic: () => ProcessLogic<any, any, any, any, any, any>, options: OwnedChildSpawnOptions) => Effect.Effect<void, any, any>;
215
+ readonly stopAll: () => Effect.Effect<void>;
216
+ readonly stopPaths: (paths: ReadonlyArray<string>) => Effect.Effect<void> | undefined;
217
+ }
218
+ export type ProcessRuntimeStrategy = "generic" | "compiled" | "auto";
219
+ /** @internal Test-only startup strategy selection. */
220
+ export declare const startProcessWithStrategyForTesting: <State, Event, Error = never, Requirements = never, Output = never, InitialError = never>(logic: ProcessLogic<State, Event, Error, Requirements, Output, InitialError>, strategy: ProcessRuntimeStrategy, options?: {
221
+ readonly id?: string;
222
+ }) => Effect.Effect<MachineRef<State, Event, Error, Output>, InitialError, Requirements>;
121
223
  export declare const startProcess: <State, Event, Error = never, Requirements = never, Output = never, InitialError = never>(logic: ProcessLogic<State, Event, Error, Requirements, Output, InitialError>, options?: {
122
224
  readonly id?: string;
123
225
  }) => Effect.Effect<MachineRef<State, Event, Error, Output>, InitialError, Requirements>;
124
226
  export {};
125
- //# sourceMappingURL=machineRuntime.d.ts.map
227
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/internal/machine/runtime.ts"],"names":[],"mappings":"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"}