A-gent-0.11.0.8: src/Agent/IO/Restricted.hs
{-# OPTIONS_GHC -Wall -Werror #-}
{-# LANGUAGE NoGeneralizedNewtypeDeriving #-}
{-# LANGUAGE Safe #-}
--------------------------------------------------------------------------------
-- |
-- Copyright : (c) 2026 SPISE MISU ApS
-- License : SSPL-1.0 OR AGPL-3.0-only
-- Maintainer : SPISE MISU <mail+hackage@spisemisu.com>
-- Stability : experimental
--
-- Safe {H}askell
--
-- https://simonmar.github.io/bib/safe-haskell-2012_abstract.html
--
-- (David Terei, David Mazières, Simon Marlow, Simon Peyton Jones) Haskell ’12:
-- Proceedings of the Fifth ACM SIGPLAN Symposium on Haskell, Copenhagen,
-- Denmark, ACM, 2012
--
-- Though Haskell is predominantly type-safe, implementations contain a few
-- loopholes through which code can bypass typing and module encapsulation. This
-- paper presents Safe Haskell, a language extension that closes these
-- loopholes. Safe Haskell makes it possible to confine and safely execute
-- untrusted, possibly malicious code. By strictly enforcing types, Safe Haskell
-- allows a variety of different policies from API sandboxing to
-- information-flow control to be implemented easily as monads. Safe Haskell is
-- aimed to be as unobtrusive as possible. It enforces properties that
-- programmers tend to meet already by convention. We describe the design of
-- Safe Haskell and an implementation (currently shipping with GHC) that infers
-- safety for code that lies in a safe subset of the language. We use Safe
-- Haskell to implement an online Haskell interpreter that can securely execute
-- arbitrary untrusted code with no overhead. The use of Safe Haskell greatly
-- simplifies this task and allows the use of a large body of existing code and
-- tools.
--------------------------------------------------------------------------------
module Agent.IO.Restricted
( RIO
-- , run
-- * Environment
, getEnvVar
-- * LLM (Config)
, llmPathCWD
-- * LLM (Chat)
, llmChatKey, llmChatAPI
, llmChatWeb
-- * LLM (Code)
, llmCodeDir
, llmCodeMsk
, llmCodeSeq, llmCodeGet
-- * LLM (Plan)
, llmPlanDir
, llmPlanMsk
, llmPlanSeq, llmPlanGet
, llmPlanKey, llmPlanAPI
, llmPlanWeb
)
where
--------------------------------------------------------------------------------
import Internal.RIO ( RIO )
import Internal.RIO ( getEnvVar )
import Internal.RIO
( llmChatAPI
, llmChatKey
, llmChatWeb
, llmCodeDir
, llmCodeGet
, llmCodeMsk
, llmCodeSeq
, llmPathCWD
, llmPlanAPI
, llmPlanDir
, llmPlanGet
, llmPlanKey
, llmPlanMsk
, llmPlanSeq
, llmPlanWeb
)