@typeonce/effect-machine 0.2.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 (150) hide show
  1. package/README.md +345 -42
  2. package/dist/Machine.d.ts +1273 -347
  3. package/dist/Machine.d.ts.map +1 -1
  4. package/dist/Machine.js +161 -426
  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} +15 -119
  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} +32 -38
  27. package/dist/internal/machine/configuration.d.ts.map +1 -0
  28. package/dist/internal/machine/configuration.js +965 -0
  29. package/dist/internal/machine/configuration.js.map +1 -0
  30. package/dist/internal/{machineErrors.d.ts → machine/errors.d.ts} +3 -3
  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} +22 -30
  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} +40 -23
  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 +271 -38
  127. package/package.json +23 -13
  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 +0 -766
  138. package/dist/internal/machineModel.js.map +0 -1
  139. package/dist/internal/machinePlanner.d.ts +0 -74
  140. package/dist/internal/machinePlanner.d.ts.map +0 -1
  141. package/dist/internal/machinePlanner.js +0 -621
  142. package/dist/internal/machinePlanner.js.map +0 -1
  143. package/dist/internal/machineProcess.d.ts.map +0 -1
  144. package/dist/internal/machineProcess.js +0 -181
  145. package/dist/internal/machineProcess.js.map +0 -1
  146. package/dist/internal/machineRuntime.d.ts.map +0 -1
  147. package/dist/internal/machineRuntime.js +0 -365
  148. package/dist/internal/machineRuntime.js.map +0 -1
  149. package/dist/reactivity.d.ts.map +0 -1
  150. package/dist/reactivity.js.map +0 -1
@@ -9,57 +9,17 @@ import * as Effect from "effect/Effect";
9
9
  import * as Layer from "effect/Layer";
10
10
  import * as Option from "effect/Option";
11
11
  import * as Schema from "effect/Schema";
12
- import * as Machine from "./Machine.js";
13
- import { Rpc } from "effect/unstable/rpc";
14
12
  import { ClusterError, ClusterSchema, Entity, EntityAddress, MessageStorage, Snowflake } from "effect/unstable/cluster";
15
- /**
16
- * Constructors and types for Cluster machine commit results.
17
- *
18
- * @category models
19
- * @since 4.0.0
20
- */
13
+ import { Rpc } from "effect/unstable/rpc";
14
+ import * as internalMachine from "./machine.js";
21
15
  export const CommitResult = {
22
16
  Committed: () => ({ _tag: "Committed" }),
23
17
  Duplicate: () => ({ _tag: "Duplicate" })
24
18
  };
25
- /**
26
- * Checkpoint persistence service used by Cluster machines.
27
- *
28
- * **When to use**
29
- *
30
- * Use to connect `ClusterMachine` to a durable checkpoint store that can
31
- * atomically deduplicate request ids and replace the current checkpoint.
32
- *
33
- * **Gotchas**
34
- *
35
- * For checkpoint and emitted-message persistence to commit atomically, this
36
- * service must join the transaction opened through the configured
37
- * `MessageStorage`. The reply is persisted after that transaction; storing the
38
- * request id with the checkpoint makes a redelivery recover that reply without
39
- * applying the transition again. A separate transaction or database cannot
40
- * provide checkpoint-and-emission atomicity.
41
- *
42
- * @category services
43
- * @since 4.0.0
44
- */
45
19
  export class Storage extends Context.Service()("effect/cluster/ClusterMachine/Storage") {
46
20
  }
47
- /**
48
- * Successful result returned after a Cluster machine request is committed or
49
- * recognized as a redelivery.
50
- *
51
- * @category models
52
- * @since 4.0.0
53
- */
54
21
  export class Accepted extends Schema.TaggedClass("effect/cluster/ClusterMachine/Accepted")("Accepted", {}) {
55
22
  }
56
- /**
57
- * Schema for reasons a Cluster machine request can be rejected without
58
- * advancing its checkpoint.
59
- *
60
- * @category models
61
- * @since 4.0.0
62
- */
63
23
  export const RejectionReason = Schema.Literals([
64
24
  "MachineIdMismatch",
65
25
  "VersionMismatch",
@@ -69,24 +29,11 @@ export const RejectionReason = Schema.Literals([
69
29
  "PersistenceFailure",
70
30
  "EmissionFailure"
71
31
  ]);
72
- /**
73
- * Rejected Cluster machine request. Transaction-participating durable storage
74
- * leaves the previous checkpoint in place and suppresses emitted events.
75
- *
76
- * @category models
77
- * @since 4.0.0
78
- */
79
32
  export class Rejected extends Schema.TaggedClass("effect/cluster/ClusterMachine/Rejected")("Rejected", {
80
33
  reason: RejectionReason,
81
34
  message: Schema.String
82
35
  }) {
83
36
  }
84
- /**
85
- * Schema for Cluster machine request outcomes.
86
- *
87
- * @category schemas
88
- * @since 4.0.0
89
- */
90
37
  export const SendResult = Schema.Union([Accepted, Rejected]);
91
38
  const hasInvokes = (machine) => Reflect.ownKeys(machine.handlers).some((key) => machine.handlers[key]?.invoke !== undefined);
92
39
  const reject = (reason, message) => new Rejected({ reason, message });
@@ -100,28 +47,12 @@ const rejectionFromCause = (cause) => {
100
47
  if (Option.isSome(error) && error.value instanceof Rejected) {
101
48
  return error.value;
102
49
  }
103
- if (Option.isSome(error) && error.value instanceof Machine.ProcessLocalError) {
50
+ if (Option.isSome(error) && error.value instanceof internalMachine.ProcessLocalError) {
104
51
  return reject("UnsupportedProcessLocal", `${error.value.operation} is process-local and is not supported`);
105
52
  }
106
53
  return reject("TransitionFailure", messageFromCause(cause));
107
54
  };
108
55
  const addressKey = (address) => `${address.entityType}\u0000${address.entityId}`;
109
- /**
110
- * Creates an in-memory Cluster machine checkpoint store.
111
- *
112
- * **When to use**
113
- *
114
- * Use when you test or run a local process that does not require checkpoints
115
- * to survive a restart.
116
- *
117
- * **Gotchas**
118
- *
119
- * This store is not durable and does not provide rollback with the in-memory
120
- * `MessageStorage` transaction marker.
121
- *
122
- * @category constructors
123
- * @since 4.0.0
124
- */
125
56
  export const makeMemory = Effect.sync(() => {
126
57
  const entries = new Map();
127
58
  return Storage.of({
@@ -152,40 +83,7 @@ export const makeMemory = Effect.sync(() => {
152
83
  })
153
84
  });
154
85
  });
155
- /**
156
- * Layer providing the in-memory Cluster machine checkpoint store.
157
- *
158
- * @category layers
159
- * @since 4.0.0
160
- */
161
86
  export const layerMemory = Layer.effect(Storage, makeMemory);
162
- /**
163
- * Creates a persisted Cluster entity adapter for a machine.
164
- *
165
- * **When to use**
166
- *
167
- * Use when each Cluster entity id should own one durable machine snapshot and
168
- * accept schema-validated machine events through a persisted `send` RPC.
169
- *
170
- * **Details**
171
- *
172
- * A missing checkpoint runs initial planning before the first event. Existing
173
- * checkpoints are identity-checked, version-checked, decoded, and resumed
174
- * without rerunning initial entry behavior. Final checkpoints accept later
175
- * requests as no-ops. The stable bridge identity is `machine.id` when present,
176
- * otherwise the Cluster entity type.
177
- *
178
- * **Gotchas**
179
- *
180
- * Invoked processes, spawned children, action-time `runtime.raise`, timers,
181
- * subscriptions, and other process-local state are not durable and are
182
- * rejected. Planning-time raised events remain part of the current macrostep.
183
- * Arbitrary action effects may run again after a crash before checkpoint
184
- * commit, so the bridge does not provide exactly-once external effects.
185
- *
186
- * @category constructors
187
- * @since 4.0.0
188
- */
189
87
  export const make = (type, machine, options, ...input) => {
190
88
  const eventSchema = Schema.Union(machine.events);
191
89
  const rpc = Rpc.make("send", {
@@ -216,30 +114,28 @@ export const make = (type, machine, options, ...input) => {
216
114
  if (checkpoint.version !== options.version) {
217
115
  return yield* fail("VersionMismatch", `Expected version ${options.version}, received ${checkpoint.version}`);
218
116
  }
219
- current = yield* Machine.decodeSnapshot(machine, checkpoint.snapshot).pipe(Effect.mapError((error) => reject("InvalidCheckpoint", String(error.cause))));
117
+ current = yield* internalMachine.decodeSnapshot(machine, checkpoint.snapshot).pipe(Effect.mapError((error) => reject("InvalidCheckpoint", String(error.cause))));
220
118
  }
221
119
  else if (loaded.processed) {
222
120
  return yield* fail("InvalidCheckpoint", "The request was recorded without a checkpoint");
223
121
  }
224
- const runtime = {
225
- raise: () => Effect.die(new Machine.ProcessLocalError({ operation: "runtime.raise" })),
226
- sendParent: (event) => Effect.sync(() => {
227
- emitted.push(event);
228
- })
229
- };
230
122
  if (current === undefined) {
231
- const initial = yield* Machine.planInitial(machine, ...input);
232
- yield* Machine.runActions(initial.actions, runtime);
123
+ const initial = yield* internalMachine.planInitial(machine, ...input);
124
+ if (initial.commands.length > 0) {
125
+ return yield* fail("UnsupportedProcessLocal", "Machine actor commands require a managed local process");
126
+ }
233
127
  current = initial.state;
234
128
  emitted.push(...initial.emittedEvents);
235
129
  }
236
- if (!Machine.isFinal(machine, current)) {
237
- const planned = yield* Machine.plan(machine, current, request.payload);
238
- yield* Machine.runActions(planned.actions, runtime);
130
+ if (!internalMachine.isFinal(machine, current)) {
131
+ const planned = yield* internalMachine.plan(machine, current, request.payload);
132
+ if (planned.commands.length > 0) {
133
+ return yield* fail("UnsupportedProcessLocal", "Machine actor commands require a managed local process");
134
+ }
239
135
  current = planned.next;
240
136
  emitted.push(...planned.emittedEvents);
241
137
  }
242
- const encoded = yield* Machine.encodeSnapshot(machine, current);
138
+ const encoded = yield* internalMachine.encodeSnapshot(machine, current);
243
139
  if (emitted.length > 0 && layerOptions?.enqueue === undefined) {
244
140
  return yield* fail("EmissionFailure", "No durable enqueue handler was configured");
245
141
  }
@@ -277,4 +173,4 @@ export const make = (type, machine, options, ...input) => {
277
173
  toLayer
278
174
  };
279
175
  };
280
- //# sourceMappingURL=ClusterMachine.js.map
176
+ //# sourceMappingURL=cluster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cluster.js","sourceRoot":"","sources":["../../../src/internal/machine/cluster.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Internal machine command collection.
3
+ *
4
+ * @since 4.0.0
5
+ */
6
+ import type { Command, Enqueue, Machine } from "../../Machine.js";
7
+ export type RuntimeCommand = Command;
8
+ export interface Collected<Event> {
9
+ readonly enqueue: Enqueue<Event, unknown>;
10
+ readonly commands: Array<RuntimeCommand>;
11
+ readonly raisedEvents: Array<Event>;
12
+ readonly emittedEvents: Array<unknown>;
13
+ }
14
+ export declare const getTargetBuilder: (machine: Machine.Any, path: string) => any;
15
+ export declare const makeCollector: <Event>(machine: Machine.Any) => Collected<Event>;
16
+ //# sourceMappingURL=command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/internal/machine/command.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAGjE,MAAM,MAAM,cAAc,GAAG,OAAO,CAAA;AAEpC,MAAM,WAAW,SAAS,CAAC,KAAK;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACzC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;IACxC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IACnC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;CACvC;AAID,eAAO,MAAM,gBAAgB,GAAI,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,MAAM,KAAG,GAYrE,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,KAAK,EAAE,SAAS,OAAO,CAAC,GAAG,KAAG,SAAS,CAAC,KAAK,CAuB1E,CAAA"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Internal machine command collection.
3
+ *
4
+ * @since 4.0.0
5
+ */
6
+ import { decodeEmitSync, decodeEventSync } from "./protocol.js";
7
+ const targetBuilderCache = new WeakMap();
8
+ export const getTargetBuilder = (machine, path) => {
9
+ let byPath = targetBuilderCache.get(machine);
10
+ if (byPath === undefined) {
11
+ byPath = new Map();
12
+ targetBuilderCache.set(machine, byPath);
13
+ }
14
+ if (byPath.has(path)) {
15
+ return byPath.get(path);
16
+ }
17
+ const builder = machine.makeTargetBuilder(path);
18
+ byPath.set(path, builder);
19
+ return builder;
20
+ };
21
+ export const makeCollector = (machine) => {
22
+ const commands = [];
23
+ const raisedEvents = [];
24
+ const emittedEvents = [];
25
+ return {
26
+ commands,
27
+ raisedEvents,
28
+ emittedEvents,
29
+ enqueue: {
30
+ raise: (event) => {
31
+ raisedEvents.push(decodeEventSync(machine, event));
32
+ },
33
+ emit: (event) => {
34
+ emittedEvents.push(decodeEmitSync(machine, event));
35
+ },
36
+ sendTo: (child, event) => {
37
+ commands.push({ _tag: "SendTo", child: child, event });
38
+ },
39
+ stop: (child) => {
40
+ commands.push({ _tag: "Stop", child: child });
41
+ }
42
+ }
43
+ };
44
+ };
45
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/internal/machine/command.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAW/D,MAAM,kBAAkB,GAAG,IAAI,OAAO,EAAgC,CAAA;AAEtE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAoB,EAAE,IAAY,EAAO,EAAE;IAC1E,IAAI,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,GAAG,IAAI,GAAG,EAAE,CAAA;QAClB,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACzC,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAW,CAAC,CAAA;IACtD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACzB,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAQ,OAAoB,EAAoB,EAAE;IAC7E,MAAM,QAAQ,GAA0B,EAAE,CAAA;IAC1C,MAAM,YAAY,GAAiB,EAAE,CAAA;IACrC,MAAM,aAAa,GAAmB,EAAE,CAAA;IACxC,OAAO;QACL,QAAQ;QACR,YAAY;QACZ,aAAa;QACb,OAAO,EAAE;YACP,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;gBACf,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAU,CAAC,CAAA;YAC7D,CAAC;YACD,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;gBACd,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;YACpD,CAAC;YACD,MAAM,EAAE,CAAC,KAAc,EAAE,KAAc,EAAE,EAAE;gBACzC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAY,EAAE,KAAK,EAAE,CAAC,CAAA;YAC/D,CAAC;YACD,IAAI,EAAE,CAAC,KAAc,EAAE,EAAE;gBACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAY,EAAE,CAAC,CAAA;YACtD,CAAC;SACF;KACF,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Internal process-side machine command execution.
3
+ *
4
+ * @since 4.0.0
5
+ */
6
+ import * as Effect from "effect/Effect";
7
+ import type { Machine, Runtime } from "../../Machine.js";
8
+ import type { RuntimeCommand } from "./command.js";
9
+ import type { ProcessScope } from "./runtime.js";
10
+ export declare const makeLiveRuntime: <Events, Emits>(machine: Machine.Any, scope: ProcessScope<Events>) => Runtime<Events, Emits>;
11
+ export declare const runCommands: <Event>(commands: Iterable<RuntimeCommand>, scope: ProcessScope<Event>) => Effect.Effect<void, import("./errors.js").StoppedError, never>;
12
+ export declare const runEmittedEvents: <Events, Emits>(events: Iterable<Emits>, runtime: Runtime<Events, Emits>) => Effect.Effect<void, import("./errors.js").MachineSchemaDecodeError | import("./errors.js").StoppedError, never>;
13
+ //# sourceMappingURL=commandRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandRuntime.d.ts","sourceRoot":"","sources":["../../../src/internal/machine/commandRuntime.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,eAAO,MAAM,eAAe,GAAI,MAAM,EAAE,KAAK,EAC3C,SAAS,OAAO,CAAC,GAAG,EACpB,OAAO,YAAY,CAAC,MAAM,CAAC,KAC1B,OAAO,CAAC,MAAM,EAAE,KAAK,CAStB,CAAA;AAEF,eAAO,MAAM,WAAW,GAAI,KAAK,EAC/B,UAAU,QAAQ,CAAC,cAAc,CAAC,EAClC,OAAO,YAAY,CAAC,KAAK,CAAC,mEAKuC,CAAA;AAEnE,eAAO,MAAM,gBAAgB,GAAI,MAAM,EAAE,KAAK,EAC5C,QAAQ,QAAQ,CAAC,KAAK,CAAC,EACvB,SAAS,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,oHAK9B,CAAA"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Internal process-side machine command execution.
3
+ *
4
+ * @since 4.0.0
5
+ */
6
+ import * as Effect from "effect/Effect";
7
+ import { decodeEmit, decodeEvent } from "./protocol.js";
8
+ export const makeLiveRuntime = (machine, scope) => ({
9
+ raise: (event) => decodeEvent(machine, event).pipe(Effect.flatMap((event) => scope.self.send(event))),
10
+ sendParent: (event) => decodeEmit(machine, event).pipe(Effect.flatMap((event) => scope.sendParent(event)))
11
+ });
12
+ export const runCommands = (commands, scope) => Effect.forEach(commands, (command) => command._tag === "SendTo"
13
+ ? scope.sendTo(command.child, command.event)
14
+ : scope.stopChild(command.child), { discard: true });
15
+ export const runEmittedEvents = (events, runtime) => Effect.all(Array.from(events, (event) => runtime.sendParent(event)), { discard: true });
16
+ //# sourceMappingURL=commandRuntime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandRuntime.js","sourceRoot":"","sources":["../../../src/internal/machine/commandRuntime.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGvD,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,OAAoB,EACpB,KAA2B,EACH,EAAE,CAAC,CAAC;IAC5B,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CAC9B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC,CAC5D;IACH,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CACpB,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CAC7B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CACnD;CACJ,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,QAAkC,EAClC,KAA0B,EAC1B,EAAE,CACF,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CACnC,OAAO,CAAC,IAAI,KAAK,QAAQ;IACvB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAc,EAAE,OAAO,CAAC,KAAK,CAAC;IACrD,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAc,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AAEnE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,MAAuB,EACvB,OAA+B,EAC/B,EAAE,CACF,MAAM,CAAC,GAAG,CACR,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EACxD,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAA"}
@@ -1,55 +1,31 @@
1
1
  /**
2
- * Internal machine representation helpers.
2
+ * Internal active-configuration, history, and completion helpers.
3
3
  *
4
4
  * @since 4.0.0
5
5
  */
6
6
  import * as Effect from "effect/Effect";
7
- import * as Option from "effect/Option";
8
- import * as Schema from "effect/Schema";
9
- import type { Machine } from "../Machine.js";
10
- import { MachineSchemaDecodeError, MachineSchemaEncodeError } from "./machineErrors.js";
11
- export declare const TargetTypeId = "~effect/Machine/Target";
12
- export declare const getStateNodeDefinition: (path: string, definition: Machine.TaggedSchema | Machine.StateNodeConfig) => {
13
- readonly schema: Machine.TaggedSchema;
14
- readonly output: Schema.Top | undefined;
15
- readonly type: "atomic" | "compound" | "parallel" | "final";
16
- readonly initial: string | undefined;
17
- readonly states: Machine.StateTree | undefined;
18
- };
19
- export declare const compileStateNodes: (states: Machine.StateSchemas) => Machine.StateNodes;
20
- export declare const makeTarget: <const States extends Machine.StateSchemas, const StateId extends Machine.StateIdentifier<States>>(path: StateId, value: Machine.StateByIdentifier<States, StateId>, options?: {
21
- readonly values?: Partial<{ readonly [AncestorStateId in Machine.StateIdentifier<States>]: Machine.StateByIdentifier<States, AncestorStateId>; }>;
22
- }) => Machine.Target<States, StateId>;
23
- export declare const isTarget: (u: unknown) => u is Machine.Target<any, any>;
24
- export declare const isSnapshot: (u: unknown) => u is Machine.AtomicSnapshot<string, unknown>;
25
- export declare const getSnapshotByPath: (snapshot: Machine.AtomicSnapshot<string, unknown>, path: string, parents?: Record<string, unknown>) => Option.Option<Machine.AtomicSnapshot<string, unknown>>;
7
+ import type { Machine } from "../../Machine.js";
8
+ import { MachineSchemaDecodeError } from "./errors.js";
9
+ export interface HistoryRecord {
10
+ readonly mode: "shallow" | "deep";
11
+ readonly parent: string;
12
+ readonly active: ReadonlySet<string>;
13
+ readonly values: ReadonlyMap<string, unknown>;
14
+ }
15
+ export declare const validateHistoryRecordControl: (machine: Machine.Any, record: HistoryRecord) => void;
26
16
  export interface ActiveConfiguration {
27
17
  readonly active: ReadonlySet<string>;
28
18
  readonly values: ReadonlyMap<string, unknown>;
29
19
  readonly outputs: ReadonlyMap<string, unknown>;
20
+ readonly history: ReadonlyMap<string, HistoryRecord>;
30
21
  }
31
22
  export interface FinalCompletion {
32
23
  readonly path: string;
33
24
  readonly output: unknown;
34
25
  }
35
- export interface DecodeBoundaryOptions {
36
- readonly boundary: "input" | "event" | "emit" | "state" | "output" | "configuration";
37
- readonly state?: string;
38
- readonly event?: string;
39
- }
40
26
  interface CompletionResult extends FinalCompletion {
41
27
  readonly isNew: boolean;
42
28
  }
43
- export declare const setProtocol: (machine: Machine.Any) => void;
44
- export declare const copyProtocol: (source: Machine.Any, target: Machine.Any) => void;
45
- export declare const getEventName: (event: unknown) => string | undefined;
46
- export declare const decodeBoundary: <A>(machine: Machine.Any, schema: Schema.Top, value: unknown, options: DecodeBoundaryOptions) => Effect.Effect<A, MachineSchemaDecodeError>;
47
- export declare const decodeInput: <Input extends Schema.Top>(machine: Machine.Any, schema: Input, value: unknown) => Effect.Effect<Input["Type"], MachineSchemaDecodeError>;
48
- export declare const decodeEvent: <const Events extends ReadonlyArray<Machine.TaggedSchema>>(machine: Machine.Any, event: unknown) => Effect.Effect<Machine.EventOf<Events>, MachineSchemaDecodeError>;
49
- export declare const decodeEmit: <const Emits extends ReadonlyArray<Machine.TaggedSchema>>(machine: Machine.Any, event: unknown) => Effect.Effect<Machine.EmitOf<Emits>, MachineSchemaDecodeError>;
50
- export declare const decodeStateValue: (machine: Machine.Any, node: Machine.StateNode, value: unknown) => Effect.Effect<unknown, MachineSchemaDecodeError>;
51
- export declare const decodeOutputValue: (machine: Machine.Any, node: Machine.StateNode, value: unknown) => Effect.Effect<unknown, MachineSchemaDecodeError>;
52
- export declare const getNode: (machine: Machine.Any, path: string) => Machine.StateNode;
53
29
  export declare const hasOwn: (u: object, key: string) => boolean;
54
30
  export declare const isDescendantOf: (path: string, ancestor: string) => boolean;
55
31
  export declare const isPathInSubtree: (path: string, ancestor: string) => boolean;
@@ -67,13 +43,29 @@ export declare const getParentValue: (machine: Machine.Any, configuration: Activ
67
43
  export declare const getInitialEntryPaths: (machine: Machine.Any, configuration: ActiveConfiguration) => ReadonlyArray<string>;
68
44
  export declare const snapshotFromPath: <const States extends Machine.StateSchemas>(machine: Machine.Any, configuration: ActiveConfiguration, path: string) => Machine.SnapshotByIdentifier<States, Machine.StateIdentifier<States>>;
69
45
  export declare const snapshotFromConfiguration: <const States extends Machine.StateSchemas>(machine: Machine.Any, configuration: ActiveConfiguration) => Machine.Snapshot<States>;
46
+ /** Creates a targetable subtree snapshot while carrying machine-level history
47
+ * metadata on that subtree root. This is used when a nested history target
48
+ * must preserve active ancestors and unaffected parallel regions. */
49
+ export declare const snapshotFromConfigurationAtPath: <const States extends Machine.StateSchemas>(machine: Machine.Any, configuration: ActiveConfiguration, path: string) => Machine.SnapshotByIdentifier<States, Machine.StateIdentifier<States>>;
70
50
  export declare const configurationFromSnapshot: (machine: Machine.Any, snapshot: Machine.AtomicSnapshot<string, unknown>) => ActiveConfiguration;
71
51
  export declare const normalizeConfiguration: <const States extends Machine.StateSchemas>(machine: Machine.Any, state: Machine.Snapshot<States>) => ActiveConfiguration;
52
+ export declare const normalizeConfigurationSync: <const States extends Machine.StateSchemas>(machine: Machine.Any, state: Machine.Snapshot<States>) => ActiveConfiguration;
72
53
  export declare const configurationFromSnapshotEffect: (machine: Machine.Any, snapshot: Machine.AtomicSnapshot<string, unknown>) => Effect.Effect<ActiveConfiguration, MachineSchemaDecodeError, never>;
73
54
  export declare const normalizeConfigurationEffect: <const States extends Machine.StateSchemas>(machine: Machine.Any, state: Machine.Snapshot<States>) => Effect.Effect<ActiveConfiguration, MachineSchemaDecodeError>;
74
55
  export declare const validateInitialConfiguration: (machine: Machine.Any, configuration: ActiveConfiguration) => void;
56
+ /** Capture every history register whose owning parent exits in this microstep.
57
+ * The control record is deliberately independent from effects/actions: it is
58
+ * part of the logical snapshot and is therefore preserved by pure planning. */
59
+ export declare const captureHistory: (machine: Machine.Any, current: ActiveConfiguration, next: ActiveConfiguration, exitPaths: ReadonlyArray<string>) => ActiveConfiguration;
60
+ export declare const getHistoryRecord: (configuration: ActiveConfiguration, path: string) => HistoryRecord | undefined;
61
+ /** Builds the remembered portion of a configuration. Shallow records are
62
+ * intentionally incomplete below their direct child; the planner completes
63
+ * them by invoking only the required typed initializers. */
64
+ export declare const configurationFromHistoryRecord: (machine: Machine.Any, current: ActiveConfiguration, record: HistoryRecord) => ActiveConfiguration;
75
65
  export declare const configurationFromTargetPathEffect: (machine: Machine.Any, current: ActiveConfiguration, path: string, value: unknown, providedValues: Readonly<Record<string, unknown>> | undefined) => Effect.Effect<ActiveConfiguration, MachineSchemaDecodeError, never>;
66
+ export declare const configurationFromTargetSnapshotEffect: (machine: Machine.Any, current: ActiveConfiguration, snapshot: Machine.AtomicSnapshot<string, unknown>, providedValues: Readonly<Record<string, unknown>> | undefined) => Effect.Effect<ActiveConfiguration, MachineSchemaDecodeError, never>;
76
67
  export declare const normalizeTargetConfigurationEffect: <const States extends Machine.StateSchemas>(machine: Machine.Any, current: ActiveConfiguration, target: Machine.Snapshot<States> | Machine.Target<States, Machine.StateIdentifier<States>>) => Effect.Effect<ActiveConfiguration, MachineSchemaDecodeError>;
68
+ export declare const normalizeTargetConfigurationSync: <const States extends Machine.StateSchemas>(machine: Machine.Any, current: ActiveConfiguration, target: Machine.Snapshot<States> | Machine.Target<States, Machine.StateIdentifier<States>>) => ActiveConfiguration;
77
69
  export declare const getStateConfigByPath: (machine: Machine.Any, path: string) => Machine.AnyStateConfig | undefined;
78
70
  export declare const getActiveChildPath: (machine: Machine.Any, configuration: ActiveConfiguration, path: string) => string | undefined;
79
71
  export declare const isDirectFinalPath: (machine: Machine.Any, path: string) => boolean;
@@ -87,7 +79,9 @@ export declare const completeConfigurationEffect: <const Events extends Readonly
87
79
  readonly configuration: ActiveConfiguration;
88
80
  readonly completions: ReadonlyArray<FinalCompletion>;
89
81
  }, MachineSchemaDecodeError>;
90
- export declare const encodeSnapshot: (machine: Machine.Any, snapshot: Machine.Snapshot<any>) => Effect.Effect<Machine.EncodedSnapshot, MachineSchemaEncodeError, unknown>;
91
- export declare const decodeSnapshot: (machine: Machine.Any, encoded: unknown) => Effect.Effect<Machine.Snapshot<any>, MachineSchemaDecodeError, unknown>;
82
+ export declare const completeConfigurationSync: <const Events extends ReadonlyArray<Machine.TaggedSchema>>(machine: Machine.Any, configuration: ActiveConfiguration, event: Machine.LifecycleEvent<Events>) => {
83
+ readonly configuration: ActiveConfiguration;
84
+ readonly completions: ReadonlyArray<FinalCompletion>;
85
+ };
92
86
  export {};
93
- //# sourceMappingURL=machineModel.d.ts.map
87
+ //# sourceMappingURL=configuration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../../../src/internal/machine/configuration.ts"],"names":[],"mappings":"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"}