diff --git a/.changeset/remove-slots-and-harden-types.md b/.changeset/remove-slots-and-harden-types.md deleted file mode 100644 index b4f0f2b..0000000 --- a/.changeset/remove-slots-and-harden-types.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -"@humanlayer/effect-machine": minor ---- - -Remove the deprecated Slot API in favor of Effect services supplied through Layers to `.task()`, `.spawn()`, and `.background()`. - -This release also strengthens the package's type and runtime boundaries: - -- Requirement-growing builder methods are copy-on-write, keeping earlier machine aliases unchanged and truthfully typed. -- Heterogeneous actor registries expose an eventless `ActorHandle`; exact typed spawn results remain `ActorRef`. -- Transition and state-effect registries retain their state/event correlations without chained assertions. -- State-effect contexts expose explicit `$init` and `$enter` lifecycle events. -- Entity machines own their RPC protocol; remote Ask replies are decoded with event-specific schemas and client errors remain typed. -- Persistence writes encode state and events through machine codecs, while loaded records remain `unknown` until full schema decoding. -- Local and entity Ask paths support transforming reply codecs without duplicate decoding or stranded deferred replies. -- Repeated and concurrent `actor.start` callers observe the original startup failure cause. -- Source enforces unsafe, chained, widening, and unnecessary type-assertion rules. Tests remain exempt from unsafe and unnecessary assertion checks. - -Intentional API changes: - -- Remove `Slot`, slot schemas/types/errors, `Machine.make({ slots })`, `ctx.slots`, and slot provision options. -- `toEntity(machine)` returns a machine-owned `MachineEntity`; call `EntityMachine.layer(entity, options?)`. -- Call `makeEntityActorRef(entity, client, entityId)` so the wrapper can decode replies and preserve client errors. -- `system.get`, `system.actors`, system events, and `actor.children` expose `ActorHandle`. -- Transition and spawn-effect introspection expose guarded `matches` / `run` operations instead of erased handlers. -- Legacy compatible constructors without a static tag can use `Machine.tagged(tag, constructor)`. diff --git a/CHANGELOG.md b/CHANGELOG.md index cb7695f..891852e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,30 @@ # @humanlayer/effect-machine +## 0.19.0 + +### Minor Changes + +- [#3](https://github.com/humanlayer/effect-machine/pull/3) [`bb1e377`](https://github.com/humanlayer/effect-machine/commit/bb1e37719535046c4b605436cd0fc89c6143889f) Thanks [@K-Mistele](https://github.com/K-Mistele)! - Remove the deprecated Slot API in favor of Effect services supplied through Layers to `.task()`, `.spawn()`, and `.background()`. + + This release also strengthens the package's type and runtime boundaries: + - Requirement-growing builder methods are copy-on-write, keeping earlier machine aliases unchanged and truthfully typed. + - Heterogeneous actor registries expose an eventless `ActorHandle`; exact typed spawn results remain `ActorRef`. + - Transition and state-effect registries retain their state/event correlations without chained assertions. + - State-effect contexts expose explicit `$init` and `$enter` lifecycle events. + - Entity machines own their RPC protocol; remote Ask replies are decoded with event-specific schemas and client errors remain typed. + - Persistence writes encode state and events through machine codecs, while loaded records remain `unknown` until full schema decoding. + - Local and entity Ask paths support transforming reply codecs without duplicate decoding or stranded deferred replies. + - Repeated and concurrent `actor.start` callers observe the original startup failure cause. + - Source enforces unsafe, chained, widening, and unnecessary type-assertion rules. Tests remain exempt from unsafe and unnecessary assertion checks. + + Intentional API changes: + - Remove `Slot`, slot schemas/types/errors, `Machine.make({ slots })`, `ctx.slots`, and slot provision options. + - `toEntity(machine)` returns a machine-owned `MachineEntity`; call `EntityMachine.layer(entity, options?)`. + - Call `makeEntityActorRef(entity, client, entityId)` so the wrapper can decode replies and preserve client errors. + - `system.get`, `system.actors`, system events, and `actor.children` expose `ActorHandle`. + - Transition and spawn-effect introspection expose guarded `matches` / `run` operations instead of erased handlers. + - Legacy compatible constructors without a static tag can use `Machine.tagged(tag, constructor)`. + ## 0.18.0 ### Minor Changes diff --git a/package.json b/package.json index 31ba05e..d91e97b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@humanlayer/effect-machine", - "version": "0.18.0", + "version": "0.19.0", "repository": { "type": "git", "url": "https://github.com/humanlayer/effect-machine.git"