What problem does it solve?
Incrementally migrating Promise-based modules to Effect services without breaking existing callers, while making the dependency graph explicit in service and layer design.
Core Features & Use Cases
- Service Interface Extraction: Convert module methods to
Effect.Effect types while keeping signatures aligned with the original Promise API.
- Layer-Driven Dependency Wiring: Build
Layer.effect implementations that capture real requirements via yield*, then compose a defaultLayer for the normal runtime path.
- Runtime Bridge for Backward Compatibility: Provide temporary async facades via
ManagedRuntime and a shared memoMap, then prune once all Effect callers yield the service directly.
- Call-Site Migration Rules: Replace
Effect.promise(() => facade()) with direct yield* Service usage and update error handling from defect-catching to typed channel errors.
- Pattern Transformations: Migrate
Promise.all fan-out to Effect.forEach with explicit concurrency control.
Quick Start
Run the effect-incremental-migration skill to convert your module’s Promise-based functions into a Context Service plus Layer wiring, keeping temporary async facades only until your internal Effect callers yield the service directly.