diff options
| author | Ben Sima <ben@bensima.com> | 2025-12-19 21:54:54 -0500 |
|---|---|---|
| committer | Ben Sima <ben@bensima.com> | 2025-12-19 21:54:54 -0500 |
| commit | fcb8629182fa1552e4a840ccd4ec0aa2b8042cc0 (patch) | |
| tree | e389479cf9349fbdab107da739bceef11cf8e7ee /Omni/Ava.hs | |
| parent | e856c766584ed933bed0b79c7ef47b6d98b0fb7e (diff) | |
feat(ava): add tool trace viewer mini-app
- Add SQLite storage for tool traces (Omni/Ava/Trace.hs)
- Add web server to serve trace viewer (Omni/Ava/Web.hs)
- Add HTML/CSS/JS trace viewer UI (Omni/Ava/Web/trace.html)
- Integrate trace storage into Engine.hs tool execution callback
- Add trace links to Telegram responses when AVA_WEB_URL is set
- Configure Tailscale Funnel for public access
- Fix pre-push hook variable scope bug
- Add direnv, bash, nix to Ava service PATH
- Add mustache dep to Ava.hs for template rendering
Epic: t-272
Diffstat (limited to 'Omni/Ava.hs')
| -rwxr-xr-x | Omni/Ava.hs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/Omni/Ava.hs b/Omni/Ava.hs index 3640fc2..6058425 100755 --- a/Omni/Ava.hs +++ b/Omni/Ava.hs @@ -14,22 +14,29 @@ -- : out ava -- : dep aeson -- : dep http-conduit +-- : dep http-types +-- : dep mustache -- : dep stm -- : dep time -- : dep uuid +-- : dep wai +-- : dep warp module Omni.Ava where import Alpha +import qualified Control.Concurrent as Concurrent import qualified Data.Aeson as Aeson import qualified Data.Text as Text import qualified Data.Text.IO as TextIO import qualified Data.Time as Time import qualified Omni.Agent.AuditLog as AuditLog import qualified Omni.Agent.Telegram as Telegram +import qualified Omni.Ava.Web as Web import qualified Omni.Cli as Cli import qualified Omni.Test as Test import qualified System.Console.Docopt as Docopt import qualified System.Directory as Dir +import qualified System.Environment as Environment import qualified System.IO as IO main :: IO () @@ -70,6 +77,10 @@ move args = do if args `Cli.has` Cli.command "logs" then showLogs args else do + webPort <- Environment.lookupEnv "AVA_WEB_PORT" /> maybe Web.defaultPort (fromMaybe Web.defaultPort <. readMaybe) + dataRoot <- Environment.getEnv "AVA_DATA_ROOT" + let dbPath = dataRoot <> "/ava.db" + _ <- Concurrent.forkIO <| Web.startWebServer webPort dbPath let maybeToken = fmap Text.pack (Cli.getArg args (Cli.longOption "token")) Telegram.startBot maybeToken |
