diff options
Diffstat (limited to 'Omni/Agent/Worker.hs')
| -rw-r--r-- | Omni/Agent/Worker.hs | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/Omni/Agent/Worker.hs b/Omni/Agent/Worker.hs index 2557d70..eef31f4 100644 --- a/Omni/Agent/Worker.hs +++ b/Omni/Agent/Worker.hs @@ -10,6 +10,7 @@ import qualified Data.ByteString.Lazy as BSL import qualified Data.Text as Text import qualified Data.Text.Encoding as TE import qualified Data.Text.IO as TIO +import qualified Data.Time import qualified Omni.Agent.Core as Core import qualified Omni.Agent.Log as AgentLog import qualified Omni.Task.Core as TaskCore @@ -83,12 +84,22 @@ processTask worker task = do TaskCore.updateTaskStatus tid TaskCore.InProgress [] say "[worker] Status -> InProgress" - -- Run Amp + -- Run Amp with timing say "[worker] Starting amp..." - TaskCore.logActivity tid TaskCore.Running Nothing + startTime <- Data.Time.getCurrentTime + activityId <- TaskCore.logActivityWithMetrics tid TaskCore.Running Nothing Nothing (Just startTime) Nothing Nothing Nothing (exitCode, output) <- runAmp repo task + endTime <- Data.Time.getCurrentTime say ("[worker] Amp exited with: " <> tshow exitCode) + -- Capture metrics from agent log (thread URL, credits) + status <- AgentLog.getStatus + let threadUrl = ("https://ampcode.com/threads/" <>) </ AgentLog.statusThread status + let costCents = Just <| floor (AgentLog.statusCredits status * 100) + + -- Update the activity record with metrics + TaskCore.updateActivityMetrics activityId threadUrl (Just endTime) costCents Nothing + case exitCode of Exit.ExitSuccess -> do TaskCore.logActivity tid TaskCore.Reviewing Nothing |
