-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | REST client to the gym-http-api project
--   
--   This library provides a REST client to the gym open-source library.
--   gym-http-api itself provides a <a>python-based REST</a> server to the
--   gym open-source library, allowing development in languages other than
--   python.
--   
--   Note that the <a>openai/gym-http-api</a> is a monorepo of all
--   language-clients. This hackage library tracks
--   <a>stites/gym-http-api</a> which is the actively-maintained haskell
--   fork.
@package gym-http-api
@version 0.1.0.1


-- | Aeson-based data types to be returned by <a>OpenAI.Gym.API</a>
module OpenAI.Gym.Data

-- | Classic Control Environments
data GymEnv

-- | Balance a pole on a cart (for a short time).
CartPoleV0 :: GymEnv

-- | Balance a pole on a cart.
CartPoleV1 :: GymEnv

-- | Swing up a two-link robot.
AcrobotV1 :: GymEnv

-- | Drive up a big hill.
MountainCarV0 :: GymEnv

-- | Drive up a big hill with continuous control.
MountainCarContinuousV0 :: GymEnv

-- | Swing up a pendulum.
PendulumV0 :: GymEnv

-- | Swing up a pendulum.
FrozenLakeV0 :: GymEnv

-- | Maximize score in the game Pong, with RAM as input
PongRamV0 :: GymEnv

-- | Maximize score in the game Pong
PongV0 :: GymEnv

-- | a short identifier (such as '3c657dbc') for the created environment
--   instance. The instance_id is used in future API calls to identify the
--   environment to be manipulated.
newtype InstID
InstID :: Text -> InstID
[getInstID] :: InstID -> Text

-- | a mapping of instance_id to env_id (e.g. {'3c657dbc': 'CartPole-v0'})
--   for every env on the server
newtype Environment
Environment :: HashMap Text Text -> Environment
[all_envs] :: Environment -> HashMap Text Text

-- | The agent's observation of the current environment
newtype Observation
Observation :: Value -> Observation
[getObservation] :: Observation -> Value

-- | An action to take in the environment and whether or not to render that
--   change
data Step
Step :: !Value -> !Bool -> Step
[action] :: Step -> !Value
[render] :: Step -> !Bool

-- | The result of taking a step in an environment
data Outcome
Outcome :: !Value -> !Double -> !Bool -> !Object -> Outcome

-- | agent's observation of the current environment
[observation] :: Outcome -> !Value

-- | amount of reward returned after previous action
[reward] :: Outcome -> !Double

-- | whether the episode has ended
[done] :: Outcome -> !Bool

-- | a dict containing auxiliary diagnostic information
[info] :: Outcome -> !Object

-- | A dict containing auxiliary diagnostic information
newtype Info
Info :: Object -> Info
[getInfo] :: Info -> Object

-- | An action to take in the environment
newtype Action
Action :: Value -> Action
[getAction] :: Action -> Value

-- | Parameters used to start a monitoring session.
data Monitor
Monitor :: !Text -> !Bool -> !Bool -> !Bool -> Monitor

-- | directory to use for monitoring
[directory] :: Monitor -> !Text

-- | Clear out existing training data from this directory (by deleting
--   every file prefixed with "openaigym.") (default=False)
[force] :: Monitor -> !Bool

-- | Retain the training data already in this directory, which will be
--   merged with our new data. (default=False)
[resume] :: Monitor -> !Bool

-- | video_callable parameter from the native env.monitor.start function
[video_callable] :: Monitor -> !Bool

-- | Parameters used to upload a monitored session to OpenAI's servers
data Config
Config :: !Text -> !Text -> !Text -> Config

-- | A directory containing the results of a training run.
[training_dir] :: Config -> !Text

-- | An arbitrary string indicating the paricular version of the algorithm
--   (including choices of parameters) you are running. (default=None)
[algorithm_id] :: Config -> !Text

-- | Your OpenAI API key
[api_key] :: Config -> !Text
instance GHC.Show.Show OpenAI.Gym.Data.Config
instance GHC.Classes.Eq OpenAI.Gym.Data.Config
instance GHC.Generics.Generic OpenAI.Gym.Data.Config
instance GHC.Show.Show OpenAI.Gym.Data.Monitor
instance GHC.Classes.Eq OpenAI.Gym.Data.Monitor
instance GHC.Generics.Generic OpenAI.Gym.Data.Monitor
instance GHC.Generics.Generic OpenAI.Gym.Data.Action
instance GHC.Show.Show OpenAI.Gym.Data.Action
instance GHC.Classes.Eq OpenAI.Gym.Data.Action
instance GHC.Generics.Generic OpenAI.Gym.Data.Info
instance GHC.Show.Show OpenAI.Gym.Data.Info
instance GHC.Classes.Eq OpenAI.Gym.Data.Info
instance GHC.Generics.Generic OpenAI.Gym.Data.Outcome
instance GHC.Show.Show OpenAI.Gym.Data.Outcome
instance GHC.Classes.Eq OpenAI.Gym.Data.Outcome
instance GHC.Show.Show OpenAI.Gym.Data.Step
instance GHC.Generics.Generic OpenAI.Gym.Data.Step
instance GHC.Classes.Eq OpenAI.Gym.Data.Step
instance GHC.Generics.Generic OpenAI.Gym.Data.Observation
instance GHC.Show.Show OpenAI.Gym.Data.Observation
instance GHC.Classes.Eq OpenAI.Gym.Data.Observation
instance GHC.Generics.Generic OpenAI.Gym.Data.Environment
instance GHC.Show.Show OpenAI.Gym.Data.Environment
instance GHC.Classes.Eq OpenAI.Gym.Data.Environment
instance GHC.Generics.Generic OpenAI.Gym.Data.InstID
instance GHC.Show.Show OpenAI.Gym.Data.InstID
instance GHC.Classes.Eq OpenAI.Gym.Data.InstID
instance GHC.Classes.Ord OpenAI.Gym.Data.GymEnv
instance GHC.Enum.Enum OpenAI.Gym.Data.GymEnv
instance GHC.Classes.Eq OpenAI.Gym.Data.GymEnv
instance Data.Aeson.Types.ToJSON.ToJSON OpenAI.Gym.Data.Config
instance Data.Aeson.Types.ToJSON.ToJSON OpenAI.Gym.Data.Monitor
instance Data.Aeson.Types.ToJSON.ToJSON OpenAI.Gym.Data.Action
instance Data.Aeson.Types.FromJSON.FromJSON OpenAI.Gym.Data.Action
instance Data.Aeson.Types.ToJSON.ToJSON OpenAI.Gym.Data.Info
instance Data.Aeson.Types.FromJSON.FromJSON OpenAI.Gym.Data.Info
instance Data.Aeson.Types.ToJSON.ToJSON OpenAI.Gym.Data.Outcome
instance Data.Aeson.Types.FromJSON.FromJSON OpenAI.Gym.Data.Outcome
instance Data.Aeson.Types.ToJSON.ToJSON OpenAI.Gym.Data.Step
instance Data.Aeson.Types.ToJSON.ToJSON OpenAI.Gym.Data.Observation
instance Data.Aeson.Types.FromJSON.FromJSON OpenAI.Gym.Data.Observation
instance Data.Aeson.Types.ToJSON.ToJSON OpenAI.Gym.Data.Environment
instance Data.Aeson.Types.FromJSON.FromJSON OpenAI.Gym.Data.Environment
instance Web.Internal.HttpApiData.ToHttpApiData OpenAI.Gym.Data.InstID
instance Data.Aeson.Types.ToJSON.ToJSON OpenAI.Gym.Data.InstID
instance Data.Aeson.Types.FromJSON.FromJSON OpenAI.Gym.Data.InstID
instance GHC.Show.Show OpenAI.Gym.Data.GymEnv
instance Data.Aeson.Types.ToJSON.ToJSON OpenAI.Gym.Data.GymEnv


-- | Servant-client functions to interact with the flask server from
--   <a>openai/gym-http-api</a>.
module OpenAI.Gym.API

-- | Create an instance of the specified environment (<tt>POST
--   /v1/envs/</tt>)
envCreate :: GymEnv -> ClientM InstID

-- | List all environments running on the server (<tt>GET /v1/envs/</tt>)
envListAll :: ClientM Environment

-- | Reset the state of the environment and return an initial observation.
--   (<tt>POST /v1/envs/<a>instance_id</a>/reset/</tt>)
envReset :: InstID -> ClientM Observation

-- | Step though an environment using an action. (<tt>POST
--   /v1/envs/<a>instance_id</a>/step/</tt>)
envStep :: InstID -> Step -> ClientM Outcome

-- | Get information (name and dimensions/bounds) of the env's action_space
--   (<tt>GET /v1/envs/<a>instance_id</a>/action_space/</tt>)
envActionSpaceInfo :: InstID -> ClientM Info

-- | Sample randomly from the env's action_space (<tt>GET
--   /v1/envs/<a>instance_id</a>/action_space/sample</tt>)
envActionSpaceSample :: InstID -> ClientM Action

-- | Check to see if a value is valid in the env's action_space (<tt>GET
--   /v1/envs/<a>instance_id</a>/action_space/contains/<a>x</a></tt>)
envActionSpaceContains :: InstID -> Int -> ClientM Object

-- | Get information (name and dimensions/bounds) of the env's
--   observation_space (<tt>GET
--   /v1/envs/<a>instance_id</a>/observation_space/</tt>)
envObservationSpaceInfo :: InstID -> ClientM Info

-- | Start monitoring (<tt>POST
--   /v1/envs/<a>instance_id</a>/monitor/start/</tt>)
envMonitorStart :: InstID -> Monitor -> ClientM ()

-- | Flush all monitor data to disk (<tt>POST
--   /v1/envs/<a>instance_id</a>/monitor/close/</tt>)
envMonitorClose :: InstID -> ClientM ()

-- | Stop the environment (<tt>POST
--   /v1/envs/<a>instance_id</a>/close/</tt>)
envClose :: InstID -> ClientM ()

-- | Upload results to OpenAI's servers (<tt>POST /v1/upload/</tt>)
upload :: Config -> ClientM ()

-- | Request a server shutdown (<tt>POST /v1/shutdown/</tt>)
shutdownServer :: ClientM ()

-- | Proxy type for the full servant-client representation of the gym http
--   api.
gymAPI :: Proxy GymAPI
instance Servant.API.ContentTypes.MimeUnrender Servant.HTML.Lucid.HTML ()


-- | re-exports of <tt>OpenAI.Gym.API</tt> and <tt>OpenAI.Gym.Data</tt>
module OpenAI.Gym
