@typeonce/effect-machine 0.6.1 → 0.8.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 (56) hide show
  1. package/README.md +25 -3
  2. package/dist/Machine.d.ts +181 -144
  3. package/dist/Machine.d.ts.map +1 -1
  4. package/dist/Machine.js +3 -1
  5. package/dist/Machine.js.map +1 -1
  6. package/dist/internal/machine/atom.d.ts +13 -2
  7. package/dist/internal/machine/atom.d.ts.map +1 -1
  8. package/dist/internal/machine/atom.js +6 -3
  9. package/dist/internal/machine/atom.js.map +1 -1
  10. package/dist/internal/machine/configuration.d.ts.map +1 -1
  11. package/dist/internal/machine/configuration.js +103 -20
  12. package/dist/internal/machine/configuration.js.map +1 -1
  13. package/dist/internal/machine/executionPlan.d.ts.map +1 -1
  14. package/dist/internal/machine/executionPlan.js +6 -0
  15. package/dist/internal/machine/executionPlan.js.map +1 -1
  16. package/dist/internal/machine/invocation.js +1 -1
  17. package/dist/internal/machine/invocation.js.map +1 -1
  18. package/dist/internal/machine/machine.d.ts.map +1 -1
  19. package/dist/internal/machine/machine.js +23 -17
  20. package/dist/internal/machine/machine.js.map +1 -1
  21. package/dist/internal/machine/planner.d.ts +10 -0
  22. package/dist/internal/machine/planner.d.ts.map +1 -1
  23. package/dist/internal/machine/planner.js +45 -35
  24. package/dist/internal/machine/planner.js.map +1 -1
  25. package/dist/internal/machine/serialization.d.ts.map +1 -1
  26. package/dist/internal/machine/serialization.js +53 -21
  27. package/dist/internal/machine/serialization.js.map +1 -1
  28. package/dist/internal/machine/stateDefinition.d.ts +4 -4
  29. package/dist/internal/machine/stateDefinition.d.ts.map +1 -1
  30. package/dist/internal/machine/stateDefinition.js +18 -11
  31. package/dist/internal/machine/stateDefinition.js.map +1 -1
  32. package/dist/internal/machine/topology.d.ts +5 -5
  33. package/dist/internal/machine/topology.d.ts.map +1 -1
  34. package/dist/internal/machine/topology.js +16 -13
  35. package/dist/internal/machine/topology.js.map +1 -1
  36. package/dist/internal/testing/machine/verification.d.ts.map +1 -1
  37. package/dist/internal/testing/machine/verification.js +10 -3
  38. package/dist/internal/testing/machine/verification.js.map +1 -1
  39. package/dist/unstable/reactivity/AtomMachine.d.ts +34 -2
  40. package/dist/unstable/reactivity/AtomMachine.d.ts.map +1 -1
  41. package/dist/unstable/reactivity/AtomMachine.js +23 -0
  42. package/dist/unstable/reactivity/AtomMachine.js.map +1 -1
  43. package/docs/agent-guide.md +70 -28
  44. package/package.json +2 -2
  45. package/src/Machine.ts +420 -309
  46. package/src/internal/machine/atom.ts +61 -6
  47. package/src/internal/machine/configuration.ts +102 -23
  48. package/src/internal/machine/executionPlan.ts +6 -0
  49. package/src/internal/machine/invocation.ts +1 -1
  50. package/src/internal/machine/machine.ts +93 -62
  51. package/src/internal/machine/planner.ts +49 -38
  52. package/src/internal/machine/serialization.ts +56 -31
  53. package/src/internal/machine/stateDefinition.ts +22 -11
  54. package/src/internal/machine/topology.ts +21 -18
  55. package/src/internal/testing/machine/verification.ts +13 -3
  56. package/src/unstable/reactivity/AtomMachine.ts +56 -2
package/README.md CHANGED
@@ -94,6 +94,27 @@ defaults, refinements, and tagged-class identity are therefore preserved, and
94
94
  decode failures remain typed machine failures. Pass a value directly only when
95
95
  it is already decoded, such as a value returned by `Machine.retag`.
96
96
 
97
+ Omit `schema` when a state represents control flow but owns no data:
98
+
99
+ ```ts
100
+ const States = Machine.defineStates({
101
+ Form: {
102
+ initial: "Editing",
103
+ states: {
104
+ Editing: {},
105
+ Saving
106
+ }
107
+ }
108
+ })
109
+
110
+ States.initial.Form.from((form) => form.Editing.from())
111
+ ```
112
+
113
+ Schema-less states remain active, targetable, matchable, and visible through
114
+ `getSnapshot`, but have no value to read. Their builders expose only `.from`,
115
+ their handler `state` is `undefined`, and `get` / `getWithParents` accept only
116
+ schema-backed paths. Add a schema later if the state starts owning data.
117
+
97
118
  Put data on the narrowest state where it is valid. If sibling phases share
98
119
  data, put it on their compound parent.
99
120
 
@@ -204,9 +225,10 @@ Binding a shared runtime once is the canonical form for service-backed
204
225
  applications. Service-free machines can use `AtomMachine.make(Counter)`.
205
226
 
206
227
  The bridge exposes `ref`, `snapshot`, `state`, fail-aware `result`, writable
207
- `send` and `stop` atoms, and `child(descriptor)`. Use `AtomMachine.select` and
208
- `AtomMachine.matches` for typed, equality-aware derivations. React applications
209
- using `@effect/atom-react` need a `RegistryProvider`.
228
+ `send` and `stop` atoms, and `child(descriptor)`. Use `AtomMachine.select`,
229
+ `AtomMachine.selectSnapshot`, and `AtomMachine.matches` for typed,
230
+ equality-aware derivations. React applications using `@effect/atom-react` need
231
+ a `RegistryProvider`.
210
232
 
211
233
  ## Persistence
212
234