Sobre el proyecto

Okay! es una biblioteca de efectos extensibles para Scala 3 inspirada en las teorías de Rúnar Bjarnason, Oleg Kiselyov y Robert Atkey. Proporciona un marco integral para gestionar efectos secundarios y el flujo de control sin dependencias, admitiendo JVM (JDK 21+), Scala.js y Scala Native desde una única fuente. Arquitectura Central y Capacidades: - Control Delimitado: Implementa una mónada de continuación parametrizada (`Cont`) y una interfaz final tagless para el control delimitado, garantizando la seguridad de la pila para las cadenas de flatMap. - Efectos Extensibles: Soporta codificaciones tanto iniciales (Free) como finales (Church/Eff). Incluye efectos integrados para Reader, Writer (basado en streaming), State (incluyendo typestate), Throws (errores tipados) y Choice (no determinismo/backtracking). - Async Multiplataforma: Proporciona un efecto `Async` universal con capacidades de `spawn`, `par`, `race` y `timeout`. Aprovecha los hilos virtuales (Loom) en la JVM y el bucle de eventos en JS. - Streams de Alto Rendimiento: Implementa streams como codata con múltiples modos de consumo, incluyendo un modo "Staged" para la fusión en tiempo de compilación que supera significativamente a otras bibliotecas del ecosistema en los benchmarks. - Concurrencia: Cuenta con fibras, canales con backpressure y un runtime distribuido (`okay-cluster`) para distribuir fuentes fragmentadas entre trabajadores. Módulos de Capa Superior: - Text: Lexing por streaming, parsing incremental y un esquema unificado para JSON/CBOR/Markdown. - AI/Models: Integración para LLMs, RAG (Retrieval-Augmented Generation) y agentes, incluyendo una implementación completa del Model Context Protocol (MCP). - UI: Un sistema de vista-como-valor que puede renderizarse en terminales, React o hosts de prueba. - Security: Autorización sin dependencias, JWT y flujos de cliente OAuth2. - Wires: Soporte para REST y WebSocket a través de JDK, Jetty o Netty. Interoperabilidad: La biblioteca proporciona puentes para cats, ZIO, kyo, fs2, Kafka, Spark, Flink y JDBC.