A-gent-0.11.0.20: src/Agent/IO/Restricted.hs
{-# OPTIONS_GHC -Wall #-}
{-# 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
-- * Environment
, getEnvVar
-- * LLM (Config)
, llmPathCWD
-- * LLM (Chat)
, llmChatAPI, llmChatKey
, llmChatWeb
-- * LLM (Repo)
, llmRepoDir
, llmRepoBrs
, llmRepoGet
, llmRepoLab
, llmRepoCmp
, llmRepoRem
, llmRepoAdd
, llmRepoReq, llmRepoTug, llmRepoDel
-- * LLM (Code)
, llmCodeDir
, llmCodeMsk
, llmCodeIns, llmCodeExa
, llmCodeSeq, llmCodeGet
, llmCodePut
, llmCodeAPI, llmCodeKey
, llmCodeWeb
-- * LLM (Plan)
, llmPlanDir
, llmPlanMsk
, llmPlanSeq, llmPlanGet
, llmPlanAPI, llmPlanKey
, llmPlanWeb
-- * LLM (Spec)
, llmSpecLib, llmSpecDep, llmSpecMod, llmSpecFun, llmSpecOto
, llmSpecRun
-- * LLM (Hone)
, llmHoneDir
, llmHoneMsk
, llmHoneSeq, llmHoneGet
, llmHonePut
, llmHoneSOM, llmHoneKey
, llmHoneWeb
)
where
--------------------------------------------------------------------------------
import Internal.RIO
( RIO
, getEnvVar
, llmChatAPI
, llmChatKey
, llmChatWeb
, llmCodeAPI
, llmCodeDir
, llmCodeExa
, llmCodeGet
, llmCodeIns
, llmCodeKey
, llmCodeMsk
, llmCodePut
, llmCodeSeq
, llmCodeWeb
, llmHoneDir
, llmHoneGet
, llmHoneKey
, llmHoneMsk
, llmHonePut
, llmHoneSOM
, llmHoneSeq
, llmHoneWeb
, llmPathCWD
, llmPlanAPI
, llmPlanDir
, llmPlanGet
, llmPlanKey
, llmPlanMsk
, llmPlanSeq
, llmPlanWeb
, llmRepoAdd
, llmRepoBrs
, llmRepoCmp
, llmRepoDel
, llmRepoDir
, llmRepoGet
, llmRepoLab
, llmRepoRem
, llmRepoReq
, llmRepoTug
, llmSpecDep
, llmSpecFun
, llmSpecLib
, llmSpecMod
, llmSpecOto
, llmSpecRun
)