{-# 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 Internal.LLM.Action
  ( Action (..)
  , TextToFile
  )
where

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

import qualified Internal.LLM      as INT

import qualified Agent.LLM.Message as MSG

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

type TextToFile = String -> [(FilePath, [INT.FileLine])]

data Action
  = None
  | Branch !String !INT.Files
  | Exit
  | File !INT.File
  | Help
  | Hist !(Bool, Bool)
  | Message !MSG.Message
  | Mode  !Char !String
  | Paths !INT.FilePaths
  | Pile
  | Prompt !String
  | Ruck !String
  | Template !TextToFile ![INT.File] ![INT.File] ![INT.File]
  | UnknownCmd !String
  | Wipe