import { Effect } from "effect"; import { EngineOperationError } from "./engine-spec"; export const operationError = (operation: string, cause: unknown): EngineOperationError => new EngineOperationError({ operation, message: cause instanceof Error ? cause.message : String(cause), }); export const attempt = ( operation: string, evaluate: () => A, ): Effect.Effect => Effect.try({ try: evaluate, catch: (cause) => operationError(operation, cause), });