CodeVetter · Repo Unpack · Feature catalog
effect-ts/effect
The user-facing product is a developer API ecosystem spanning execution, data modeling, network services, persistence, and integrations. CLI commands and application endpoints are defined by consumers through typed builders. Distributed entities, workflows, AI tools, and reactive UI state extend the same service model. These eight groups describe the inspected capabilities; they are a bounded catalog rather than an enumeration of every exported API.
- Effect describes typed, lazy programs with retry, interruption, concurrency, and resource management; Stream adds incremental sources, transformation, buffering, timing, and consumption.
- Schema supports validation, decoding, encoding, refinements, transformations, defaults, classes, JSON Schema generation, test-data generation, equivalence, optics, and derived differs.
- HTTP APIs combine schema-backed handlers, middleware, and optional OpenAPI GET output; FetchHttpClient sends ordinary or streaming request bodies, and HttpStaticServer supports files, directory indexes, and conditional SPA fallback.
- RpcGroup composes tagged RPC definitions and handlers; Cluster Entity adds stable entity IDs, shard selection, sharded clients, and handler or mailbox registration.
- CLI consumers receive argument and flag parsing, command trees, scoped global flags, help/error rendering, and an interactive wizard that can optionally execute the constructed command.
- Persistence includes schema-backed key-value storage and multiple SQL drivers, including Cloudflare D1 and Durable Objects SQLite; workflows expose execute, poll, interrupt, resume, and registration with explicit idempotency keys.
- LanguageModel exposes text, structured-object, and streaming generation; Toolkit binds tool schemas to validated handlers; McpServer exposes tools, resources, templates, prompts, completions, and notifications over stdio or HTTP.
- React atom hooks support selected reads, writes, refresh, and Promise/Exit write modes; corresponding Solid and Vue packages exist, and NodeSdk conditionally enables tracing, metrics, and logging when processors or readers are supplied.