summaryrefslogtreecommitdiff
path: root/Omni/Ava.hs
diff options
context:
space:
mode:
authorBen Sima <ben@bensima.com>2025-12-16 08:20:54 -0500
committerBen Sima <ben@bensima.com>2025-12-16 08:20:54 -0500
commit122d73ac9d2472f91ed00965d03d1e761da72699 (patch)
treef84e21139113cf7d8e4ff2d3f7bf4c81d11e6fd2 /Omni/Ava.hs
parenta7dcb30c7a465d9fce72b7fc3e605470b2b59814 (diff)
refactor: Rename Bot to Ava, remove cost guardrail
- Rename Omni/Bot.hs to Omni/Ava.hs - Delete Omni/Bot.scm (unused Guile version) - Remove cost limit (was 10 cents, now 0) - Increase max iterations from 10 to 50
Diffstat (limited to 'Omni/Ava.hs')
-rwxr-xr-xOmni/Ava.hs66
1 files changed, 66 insertions, 0 deletions
diff --git a/Omni/Ava.hs b/Omni/Ava.hs
new file mode 100755
index 0000000..2dfecb1
--- /dev/null
+++ b/Omni/Ava.hs
@@ -0,0 +1,66 @@
+#!/usr/bin/env run.sh
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE QuasiQuotes #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+
+-- | Ava - AI assistant via Telegram.
+--
+-- Usage:
+-- ava # Uses TELEGRAM_BOT_TOKEN env var
+-- ava --token=XXX # Explicit token
+-- ava --model=MODEL # Override LLM model
+--
+-- : out ava
+-- : dep aeson
+-- : dep http-conduit
+-- : dep stm
+module Omni.Ava where
+
+import Alpha
+import qualified Data.Text as Text
+import qualified Omni.Agent.Telegram as Telegram
+import qualified Omni.Cli as Cli
+import qualified Omni.Test as Test
+import qualified System.Console.Docopt as Docopt
+
+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|
+ava - AI assistant via Telegram
+
+Usage:
+ ava [--token=TOKEN] [--model=MODEL]
+ ava test
+ ava (-h | --help)
+
+Options:
+ -h --help Show this help
+ --token=TOKEN Telegram bot token (or use TELEGRAM_BOT_TOKEN env)
+ --model=MODEL LLM model to use [default: anthropic/claude-sonnet-4]
+|]
+
+move :: Cli.Arguments -> IO ()
+move args = do
+ let maybeToken = fmap Text.pack (Cli.getArg args (Cli.longOption "token"))
+ Telegram.startBot maybeToken
+
+test :: Test.Tree
+test =
+ Test.group
+ "Omni.Ava"
+ [ Test.unit "help is non-empty" <| do
+ let usage = str (Docopt.usage help) :: String
+ null usage Test.@=? False
+ ]