llm-simple-0.1.0.1: src/LLM/Agent/Events.hs
module LLM.Agent.Events
( emitEvent,
noEventObserver,
)
where
import Control.Exception (SomeException, try)
import Control.Monad (void)
import LLM.Agent.Types
( EventObserver,
GenerateEvent (..),
GenerateEventDetail,
RuntimeArgs (..),
)
-- | Emit a lifecycle event, attaching 'rtGenerationId' from runtime.
-- Observer exceptions are swallowed so observers cannot abort the loop.
emitEvent :: RuntimeArgs -> GenerateEventDetail -> IO ()
emitEvent rt detail =
void (try (rt.rtOnEvent (GenerateEvent rt.rtGenerationId detail)) :: IO (Either SomeException ()))
noEventObserver :: EventObserver
noEventObserver _ = pure ()