Skip to content

[Feature] Effect-TS interop helpers (actor <-> Effect adapters) #443

Description

@pathosDev

Demand-driven — parked until there is concrete community pull; scoped here so the design intent is on record.

Rationale

Effect-TS is the other major structured-concurrency ecosystem in TypeScript (with @effect/cluster emerging). Teams mixing both want clean seams instead of ad-hoc glue: run an Effect inside an actor with proper interruption, and expose ask/tell as Effects.

Scope (sketch)

  • askEffect(ref, message) / tellEffect(ref, message) — Effect wrappers with timeout/interruption mapped to ask cancellation.
  • runEffectInActor(effect) — execute an Effect from a handler with structured cancellation tied to the actor lifecycle (stop/restart interrupts the fiber).
  • effect as an optional peer dependency behind subpath "./interop/effect" (dependency policy — core untouched).

Documentation

Interop docs page (EN + DE); JSDoc; CHANGELOG.

Acceptance

  • Round-trip tests ask/tell as Effects; interruption on actor stop verified; no hard dependency added.

Non-goals

Reimplementing @effect/cluster; Effect-based actor DSL.

Relates

Dependency policy #419. Improvement program M8 (demand-driven shelf).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestpriority: lowNice-to-have / niche / demand-driven

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions