diff options
| author | Ben Sima <ben@bensima.com> | 2025-12-16 08:20:54 -0500 |
|---|---|---|
| committer | Ben Sima <ben@bensima.com> | 2025-12-16 08:20:54 -0500 |
| commit | 122d73ac9d2472f91ed00965d03d1e761da72699 (patch) | |
| tree | f84e21139113cf7d8e4ff2d3f7bf4c81d11e6fd2 /Omni/Ava.hs | |
| parent | a7dcb30c7a465d9fce72b7fc3e605470b2b59814 (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-x | Omni/Ava.hs | 66 |
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 + ] |
