summaryrefslogtreecommitdiff
path: root/Omni/Agent.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Omni/Agent.hs')
-rw-r--r--Omni/Agent.hs55
1 files changed, 55 insertions, 0 deletions
diff --git a/Omni/Agent.hs b/Omni/Agent.hs
new file mode 100644
index 0000000..0bae0b5
--- /dev/null
+++ b/Omni/Agent.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+
+-- | Agent system entry point and combined test runner.
+--
+-- This module provides the main entry point for the agent system
+-- and re-exports core types from sub-modules.
+--
+-- : out omni-agent
+-- : dep aeson
+module Omni.Agent
+ ( -- * Engine
+ module Omni.Agent.Engine,
+
+ -- * Tools
+ module Omni.Agent.Tools,
+
+ -- * Core
+ module Omni.Agent.Core,
+
+ -- * Test
+ main,
+ test,
+ )
+where
+
+import Alpha
+import Omni.Agent.Core
+import Omni.Agent.Engine hiding (main, test)
+import qualified Omni.Agent.Engine as Engine
+import Omni.Agent.Tools hiding (ToolResult, main, test)
+import qualified Omni.Agent.Tools as Tools
+import qualified Omni.Test as Test
+
+main :: IO ()
+main = Test.run test
+
+test :: Test.Tree
+test =
+ Test.group
+ "Omni.Agent"
+ [ Engine.test,
+ Tools.test,
+ Test.unit "Core types are re-exported" <| do
+ let status = Idle :: WorkerStatus
+ status Test.@=? status,
+ Test.unit "Engine and Tools integrate correctly" <| do
+ let tools = Tools.allTools
+ length tools Test.@=? 5
+ let config =
+ Engine.defaultAgentConfig
+ { Engine.agentTools = tools
+ }
+ Engine.agentMaxIterations config Test.@=? 10
+ ]