diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,19 @@
 
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 
+## 0.5.0.0 - 2023-03-06
+
+### Changed
+
+ - `SourceHostingSite` was renamed to `Forge`
+
+### Added
+
+ - GitLab endpoints
+ - `onSchedule` information
+ - Various small additions
+
+
 ## 0.4.6.1 - 2022-12-29
 
 Maintenance and tooling update.
diff --git a/hercules-ci-api-agent.cabal b/hercules-ci-api-agent.cabal
--- a/hercules-ci-api-agent.cabal
+++ b/hercules-ci-api-agent.cabal
@@ -1,83 +1,100 @@
-cabal-version: 1.12
+cabal-version:      1.12
+name:               hercules-ci-api-agent
+version:            0.5.0.0
+synopsis:
+  API definition for Hercules CI Agent to talk to hercules-ci.com or Hercules CI Enterprise
 
-name:           hercules-ci-api-agent
-version:        0.4.6.1
-synopsis:       API definition for Hercules CI Agent to talk to hercules-ci.com or Hercules CI Enterprise
-category:       API, CI, Testing, DevOps, Nix
-homepage:       https://github.com/hercules-ci/hercules-ci-agent#readme
-bug-reports:    https://github.com/hercules-ci/hercules-ci-agent/issues
-author:         Hercules CI contributors
-maintainer:     info@hercules-ci.com
-copyright:      2018-2021 Hercules CI
-license:        Apache-2.0
-build-type:     Simple
-extra-source-files:
-    CHANGELOG.md
+category:           API, CI, Testing, DevOps, Nix
+homepage:           https://github.com/hercules-ci/hercules-ci-agent#readme
+bug-reports:        https://github.com/hercules-ci/hercules-ci-agent/issues
+author:             Hercules CI contributors
+maintainer:         info@hercules-ci.com
+copyright:          2018-2021 Hercules CI
+license:            Apache-2.0
+build-type:         Simple
+extra-source-files: CHANGELOG.md
 
 source-repository head
-  type: git
+  type:     git
   location: https://github.com/hercules-ci/hercules-ci
 
 library
   exposed-modules:
-      Hercules.API.Agent.Build
-      Hercules.API.Agent.Build.BuildEvent
-      Hercules.API.Agent.Build.BuildEvent.Pushed
-      Hercules.API.Agent.Build.BuildEvent.OutputInfo
-      Hercules.API.Agent.Build.BuildTask
-      Hercules.API.Agent.Effect.EffectTask
-      Hercules.API.Agent.Evaluate
-      Hercules.API.Agent.Evaluate.DerivationStatus
-      Hercules.API.Agent.Evaluate.EvaluateEvent
-      Hercules.API.Agent.Evaluate.EvaluateEvent.AttributeErrorEvent
-      Hercules.API.Agent.Evaluate.EvaluateEvent.AttributeEvent
-      Hercules.API.Agent.Evaluate.EvaluateEvent.AttributeEffectEvent
-      Hercules.API.Agent.Evaluate.EvaluateEvent.AttributeIFDEvent
-      Hercules.API.Agent.Evaluate.EvaluateEvent.BuildRequest
-      Hercules.API.Agent.Evaluate.EvaluateEvent.BuildRequired
-      Hercules.API.Agent.Evaluate.EvaluateEvent.DerivationInfo
-      Hercules.API.Agent.Evaluate.EvaluateEvent.InputDeclaration
-      Hercules.API.Agent.Evaluate.EvaluateEvent.JobConfig
-      Hercules.API.Agent.Evaluate.EvaluateEvent.Message
-      Hercules.API.Agent.Evaluate.EvaluateEvent.OnPushHandlerEvent
-      Hercules.API.Agent.Evaluate.EvaluateEvent.OnScheduleHandlerEvent
-      Hercules.API.Agent.Evaluate.EvaluateEvent.PushedAll
-      Hercules.API.Agent.Evaluate.EvaluateTask
-      Hercules.API.Agent.Evaluate.EvaluateTask.OnPush
-      Hercules.API.Agent.Evaluate.EvaluateTask.OnSchedule
-      Hercules.API.Agent.Evaluate.ImmutableInput
-      Hercules.API.Agent.Evaluate.ImmutableGitInput
-      Hercules.API.Agent.LifeCycle
-      Hercules.API.Agent.LifeCycle.AgentInfo
-      Hercules.API.Agent.LifeCycle.CreateAgentSession
-      Hercules.API.Agent.LifeCycle.CreateAgentSession_V2
-      Hercules.API.Agent.LifeCycle.ServiceInfo
-      Hercules.API.Agent.LifeCycle.StartInfo
-      Hercules.API.Agent.Socket.Frame
-      Hercules.API.Agent.Socket.AgentPayload
-      Hercules.API.Agent.Socket.ServicePayload
-      Hercules.API.Agent.State
-      Hercules.API.Agent.Tasks
-      Hercules.API.Agent
-      Hercules.API.Logs
-      Hercules.API.Logs.LogEntry
-      Hercules.API.Logs.LogHello
-      Hercules.API.Logs.LogMessage
-      Hercules.API.TaskStatus
-      Hercules.API.Task
-      Hercules.Formats.CachixCache
-      Hercules.Formats.Common
-      Hercules.Formats.NixCache
-      Hercules.Formats.Secret
-  hs-source-dirs:
-      src
-  default-extensions: DeriveGeneric DeriveTraversable DisambiguateRecordFields FlexibleContexts InstanceSigs LambdaCase MultiParamTypeClasses NoImplicitPrelude OverloadedStrings RankNTypes TupleSections TypeApplications TypeOperators
-  ghc-options: -Wall -fwarn-tabs -fwarn-unused-imports -fwarn-missing-signatures -fwarn-name-shadowing -fwarn-incomplete-patterns
+    Hercules.API.Agent
+    Hercules.API.Agent.Build
+    Hercules.API.Agent.Build.BuildEvent
+    Hercules.API.Agent.Build.BuildEvent.OutputInfo
+    Hercules.API.Agent.Build.BuildEvent.Pushed
+    Hercules.API.Agent.Build.BuildTask
+    Hercules.API.Agent.Effect.EffectTask
+    Hercules.API.Agent.Evaluate
+    Hercules.API.Agent.Evaluate.DerivationStatus
+    Hercules.API.Agent.Evaluate.EvaluateEvent
+    Hercules.API.Agent.Evaluate.EvaluateEvent.AttributeEffectEvent
+    Hercules.API.Agent.Evaluate.EvaluateEvent.AttributeErrorEvent
+    Hercules.API.Agent.Evaluate.EvaluateEvent.AttributeEvent
+    Hercules.API.Agent.Evaluate.EvaluateEvent.AttributeIFDEvent
+    Hercules.API.Agent.Evaluate.EvaluateEvent.BuildRequest
+    Hercules.API.Agent.Evaluate.EvaluateEvent.BuildRequired
+    Hercules.API.Agent.Evaluate.EvaluateEvent.DerivationInfo
+    Hercules.API.Agent.Evaluate.EvaluateEvent.InputDeclaration
+    Hercules.API.Agent.Evaluate.EvaluateEvent.JobConfig
+    Hercules.API.Agent.Evaluate.EvaluateEvent.Message
+    Hercules.API.Agent.Evaluate.EvaluateEvent.OnPushHandlerEvent
+    Hercules.API.Agent.Evaluate.EvaluateEvent.OnScheduleHandlerEvent
+    Hercules.API.Agent.Evaluate.EvaluateEvent.PushedAll
+    Hercules.API.Agent.Evaluate.EvaluateTask
+    Hercules.API.Agent.Evaluate.EvaluateTask.OnPush
+    Hercules.API.Agent.Evaluate.EvaluateTask.OnSchedule
+    Hercules.API.Agent.Evaluate.ImmutableGitInput
+    Hercules.API.Agent.Evaluate.ImmutableInput
+    Hercules.API.Agent.LifeCycle
+    Hercules.API.Agent.LifeCycle.AgentInfo
+    Hercules.API.Agent.LifeCycle.CreateAgentSession
+    Hercules.API.Agent.LifeCycle.CreateAgentSession_V2
+    Hercules.API.Agent.LifeCycle.ServiceInfo
+    Hercules.API.Agent.LifeCycle.StartInfo
+    Hercules.API.Agent.Socket.AgentPayload
+    Hercules.API.Agent.Socket.Frame
+    Hercules.API.Agent.Socket.ServicePayload
+    Hercules.API.Agent.State
+    Hercules.API.Agent.Tasks
+    Hercules.API.Logs
+    Hercules.API.Logs.LogEntry
+    Hercules.API.Logs.LogHello
+    Hercules.API.Logs.LogMessage
+    Hercules.API.Task
+    Hercules.API.TaskStatus
+    Hercules.Formats.CachixCache
+    Hercules.Formats.Common
+    Hercules.Formats.NixCache
+    Hercules.Formats.Secret
+
+  hs-source-dirs:     src
+  default-extensions:
+    NoImplicitPrelude
+    DeriveGeneric
+    DeriveTraversable
+    DisambiguateRecordFields
+    FlexibleContexts
+    InstanceSigs
+    LambdaCase
+    MultiParamTypeClasses
+    OverloadedStrings
+    RankNTypes
+    TupleSections
+    TypeApplications
+    TypeOperators
+
+  ghc-options:
+    -Wall -fwarn-tabs -fwarn-unused-imports -fwarn-missing-signatures
+    -fwarn-name-shadowing -fwarn-incomplete-patterns
+
   build-depends:
-      aeson >= 2
-    , base >=4.7 && <5
-    , bytestring
+      aeson                   >=2
+    , base                    >=4.7    && <5
     , base64-bytestring-type
+    , bytestring
     , containers
     , cookie
     , deepseq
@@ -89,7 +106,7 @@
     , lens
     , lens-aeson
     , memory
-    , servant >=0.14.1
+    , servant                 >=0.14.1
     , servant-auth
     , string-conv
     , swagger2
@@ -98,24 +115,43 @@
     , unordered-containers
     , uuid
     , vector
-  default-language: Haskell2010
 
+  default-language:   Haskell2010
+
 test-suite hercules-api-agent-unit-tests
-  type: exitcode-stdio-1.0
-  main-is: Main.hs
+  type:               exitcode-stdio-1.0
+  main-is:            Main.hs
   other-modules:
-      Spec
-      AesonSupport
-      Hercules.API.Agent.Effect.EffectTaskSpec
-      Hercules.API.Agent.Evaluate.EvaluateEvent.AttributeEffectEventSpec
-      Hercules.API.Agent.Evaluate.EvaluateEvent.DerivationInfoSpec
-      Hercules.API.Agent.LifeCycle.AgentInfoSpec
-      Hercules.Formats.CachixCacheSpec
-      Hercules.Formats.SecretSpec
-  hs-source-dirs:
-      test
-  default-extensions: DeriveGeneric DeriveTraversable DisambiguateRecordFields FlexibleContexts InstanceSigs LambdaCase MultiParamTypeClasses NoImplicitPrelude OverloadedStrings RankNTypes TupleSections TypeApplications TypeOperators
-  ghc-options: -Wall -fwarn-tabs -fwarn-unused-imports -fwarn-missing-signatures -fwarn-name-shadowing -fwarn-incomplete-patterns -threaded -rtsopts -with-rtsopts=-N
+    AesonSupport
+    Hercules.API.Agent.Effect.EffectTaskSpec
+    Hercules.API.Agent.Evaluate.EvaluateEvent.AttributeEffectEventSpec
+    Hercules.API.Agent.Evaluate.EvaluateEvent.DerivationInfoSpec
+    Hercules.API.Agent.LifeCycle.AgentInfoSpec
+    Hercules.Formats.CachixCacheSpec
+    Hercules.Formats.SecretSpec
+    Spec
+
+  hs-source-dirs:     test
+  default-extensions:
+    NoImplicitPrelude
+    DeriveGeneric
+    DeriveTraversable
+    DisambiguateRecordFields
+    FlexibleContexts
+    InstanceSigs
+    LambdaCase
+    MultiParamTypeClasses
+    OverloadedStrings
+    RankNTypes
+    TupleSections
+    TypeApplications
+    TypeOperators
+
+  ghc-options:
+    -Wall -fwarn-tabs -fwarn-unused-imports -fwarn-missing-signatures
+    -fwarn-name-shadowing -fwarn-incomplete-patterns -threaded -rtsopts
+    -with-rtsopts=-N
+
   build-depends:
       aeson
     , base
@@ -132,10 +168,10 @@
     , lens
     , memory
     , network-uri
+    , profunctors
     , QuickCheck
     , quickcheck-classes
-    , profunctors
-    , servant >=0.14.1
+    , servant                >=0.14.1
     , servant-auth
     , string-conv
     , swagger2
@@ -143,4 +179,5 @@
     , time
     , uuid
     , vector
-  default-language: Haskell2010
+
+  default-language:   Haskell2010
diff --git a/src/Hercules/API/Agent/Evaluate/EvaluateEvent/AttributeEffectEvent.hs b/src/Hercules/API/Agent/Evaluate/EvaluateEvent/AttributeEffectEvent.hs
--- a/src/Hercules/API/Agent/Evaluate/EvaluateEvent/AttributeEffectEvent.hs
+++ b/src/Hercules/API/Agent/Evaluate/EvaluateEvent/AttributeEffectEvent.hs
@@ -5,6 +5,7 @@
 
 import Hercules.API.Prelude
 
+-- | An effect was found in an attribute
 data AttributeEffectEvent = AttributeEffectEvent
   { expressionPath :: [Text],
     derivationPath :: Text,
diff --git a/src/Hercules/API/Agent/Evaluate/EvaluateEvent/OnPushHandlerEvent.hs b/src/Hercules/API/Agent/Evaluate/EvaluateEvent/OnPushHandlerEvent.hs
--- a/src/Hercules/API/Agent/Evaluate/EvaluateEvent/OnPushHandlerEvent.hs
+++ b/src/Hercules/API/Agent/Evaluate/EvaluateEvent/OnPushHandlerEvent.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE ConstraintKinds #-}
 {-# LANGUAGE DeriveAnyClass #-}
 
 module Hercules.API.Agent.Evaluate.EvaluateEvent.OnPushHandlerEvent where
diff --git a/src/Hercules/API/Agent/Evaluate/EvaluateTask.hs b/src/Hercules/API/Agent/Evaluate/EvaluateTask.hs
--- a/src/Hercules/API/Agent/Evaluate/EvaluateTask.hs
+++ b/src/Hercules/API/Agent/Evaluate/EvaluateTask.hs
@@ -1,11 +1,11 @@
 {-# LANGUAGE DeriveAnyClass #-}
-{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE StandaloneDeriving #-}
 
 module Hercules.API.Agent.Evaluate.EvaluateTask where
 
 import Data.Aeson (Value)
-import Hercules.API.Agent.Evaluate.EvaluateTask.OnPush (OnPush)
-import Hercules.API.Agent.Evaluate.EvaluateTask.OnSchedule (OnSchedule)
+import qualified Hercules.API.Agent.Evaluate.EvaluateTask.OnPush as OnPush
+import qualified Hercules.API.Agent.Evaluate.EvaluateTask.OnSchedule as OnSchedule
 import Hercules.API.Agent.Evaluate.ImmutableInput (ImmutableInput)
 import Hercules.API.Prelude
 import Hercules.API.Task (Task)
@@ -39,8 +39,8 @@
 
 data Selector
   = ConfigOrLegacy
-  | OnPush OnPush
-  | OnSchedule OnSchedule
+  | OnPush OnPush.OnPush
+  | OnSchedule OnSchedule.OnSchedule
   deriving (Generic, Show, Eq, NFData, ToJSON, FromJSON)
 
 type Identifier = Text
