{-# 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

--------------------------------------------------------------------------------

module Agent.LLM.Action
  ( Action
  , TextToFile
    -- * LLM (Internal)
  , File, FilePaths, Root
    -- * Methods
  , none
  , exit
  , file
  , paths
  , root
  , template
  , text
  )
where

--------------------------------------------------------------------------------

import           Internal.LLM        ( File, FilePaths, Root )
import qualified Internal.LLM        as INT
import           Internal.LLM.Action ( Action, TextToFile )
import qualified Internal.LLM.Action as ACT

import qualified Agent.LLM.Message   as MSG

--------------------------------------------------------------------------------

none :: Action
none :: Action
none =
  Action
ACT.None

exit :: Action
exit :: Action
exit =
  Action
ACT.Exit

file :: File -> Action
file :: File -> Action
file =
  File -> Action
ACT.File

paths :: FilePaths -> Action
paths :: FilePaths -> Action
paths =
  FilePaths -> Action
ACT.Paths

root :: Root -> Action
root :: Root -> Action
root (INT.Root FilePath
afp) =
  FilePaths -> Action
ACT.Paths (FilePaths -> Action) -> FilePaths -> Action
forall a b. (a -> b) -> a -> b
$ [FilePath] -> FilePaths
INT.FilePaths [FilePath
afp]

template
  :: TextToFile
  -> [File]
  -> [File]
  -> [File]
  -> Action
template :: TextToFile -> [File] -> [File] -> [File] -> Action
template =
  TextToFile -> [File] -> [File] -> [File] -> Action
ACT.Template

text :: String -> Action
text :: FilePath -> Action
text =
  Message -> Action
ACT.Message (Message -> Action) -> (FilePath -> Message) -> FilePath -> Action
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FilePath -> Message
MSG.Text