Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 0 additions & 26 deletions .changeset/remove-slots-and-harden-types.md

This file was deleted.

25 changes: 25 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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<State, Event>`.
- 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
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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"
Expand Down