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
8 changes: 6 additions & 2 deletions .agents/rules/handlers.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,12 @@ boundary, operating on the `AsyncResult` — not thrown exceptions). Middleware
accumulates context with bounded generics (`TContextOut extends TContextIn`,
amqp-contract's model): `next({ context })` extends what downstream stages and
the implementation see; `next({ input })` substitutes the input (re-validated).
The client has the mirror-image seam: `TypedClient.create({ interceptors })`
wraps start/execute/signalWithStart and handle-level signal/query/update.
The client has **no** mirror-image seam, deliberately: client interceptors were
cut in `533c796` because every client method already answers an `AsyncResult`,
so wrapping a call is composing one — `.tap`, `.flatMap`, `.mapErrCases` at the
call site, no registration and no framework hook to learn. Middleware exists on
the activity side because there is no `AsyncResult` in the caller's hand to
compose: the platform invokes the activity, not the application.

## Workflow Declaration

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,8 @@ partial state, nothing to unwind.
[unthrown](https://github.com/btravstack/unthrown), with a separate `defect`
channel that keeps genuine bugs loud
- **Child workflows** — typed, including across contracts and teams
- **Schedules, cancellation scopes, continue-as-new, activity middleware, client
interceptors** — all contract-aware
- **Schedules, cancellation scopes, continue-as-new, activity middleware** —
all contract-aware
- **Testing utilities** — time-skipping (no Docker) and real-server
(testcontainers) fixtures
- **Nexus** — not implemented; see
Expand Down
Loading