import { getRequiredEnv, getStdout, type HealthChecker, type HealthCheckInput, HealthCheckOutput, type IEither, type ITraceable, type ServerTrace, TraceUtil, } from '@emprespresso/pengueno'; export const healthCheck: HealthChecker = ( input: ITraceable, ): Promise> => input .flatMap(TraceUtil.withFunctionTrace(healthCheck)) .move(getRequiredEnv('LAMINAR_HOST')) // ensure LAMINAR_HOST is propagated to getStdout for other procedures .map((tEitherEnv) => tEitherEnv.get().flatMapAsync((_hasEnv) => getStdout(tEitherEnv.move(['laminarc', 'show-jobs']))), ) .map(TraceUtil.promiseify((stdout) => stdout.get().moveRight(HealthCheckOutput.YAASSSLAYQUEEN))) .get();