summaryrefslogtreecommitdiff
path: root/Omni/Agent/Worker.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Omni/Agent/Worker.hs')
-rw-r--r--Omni/Agent/Worker.hs15
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