From c3ab8403df5e5ed99e6769dcdc152408d57026a7 Mon Sep 17 00:00:00 2001 From: Omni Worker Date: Fri, 21 Nov 2025 05:14:53 -0500 Subject: feat: implement Omni.Agent.Worker loop logic Amp-Thread-ID: https://ampcode.com/threads/T-4f2905ef-a042-4880-b146-f6809ce83751 Co-authored-by: Amp --- Omni/Agent.hs | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Omni/Agent.hs (limited to 'Omni/Agent.hs') diff --git a/Omni/Agent.hs b/Omni/Agent.hs new file mode 100644 index 0000000..7a31d40 --- /dev/null +++ b/Omni/Agent.hs @@ -0,0 +1,62 @@ +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE QuasiQuotes #-} +{-# LANGUAGE LambdaCase #-} +{-# LANGUAGE NoImplicitPrelude #-} + +-- : out agent +-- : dep temporary +module Omni.Agent where + +import Alpha +import qualified Data.Text as Text +import qualified Omni.Cli as Cli +import qualified Omni.Agent.Core as Core +import qualified Omni.Agent.Worker as Worker +import qualified Omni.Test as Test + +main :: IO () +main = Cli.main plan + +plan :: Cli.Plan () +plan = + Cli.Plan + { Cli.help = help + , Cli.move = move + , Cli.test = test + , Cli.tidy = \_ -> pure () + } + +help :: Cli.Docopt +help = [Cli.docopt| +agent + +Usage: + agent start [--path=] + agent test + agent --help + +Options: + --path= Path to the worker directory [default: .] + --help Show this help +|] + +move :: Cli.Arguments -> IO () +move args + | args `Cli.has` Cli.command "start" = do + name <- Cli.getArg args (Cli.argument "name") |> \case + Just n -> pure (Text.pack n) + Nothing -> panic "Name required" + let path = Cli.getArgWithDefault args "." (Cli.longOption "path") + + let worker = Core.Worker + { Core.workerName = name + , Core.workerPid = Nothing + , Core.workerStatus = Core.Idle + , Core.workerPath = path + } + + Worker.start worker + | otherwise = putStrLn (Cli.usage help) + +test :: Test.Tree +test = Test.group "Omni.Agent" [] -- cgit v1.2.3