summaryrefslogtreecommitdiff
path: root/main.py
AgeCommit message (Collapse)Author
2026-05-18Fix Parasail model pin and Kagi tool guidanceBen Sima
2026-05-18pin models: parasail-qwen3-235b on Parasail, qwen2.5:14b locallyBen Sima
2026-05-18feat(slopbot): add LLM @mention with agentic Kagi tool calling (t-937)Ben Sima
- Detect @**slop** mentions via MENTION_RE regex - Agentic loop (MAX_ITER=5): LLM decides when to call kagi_search - Routing: Parasail primary (model discovery), Ollama qwen2.5:3b fallback - kagi_search tool: hits Kagi API, returns top-3 snippet results - Tickers appended to LLM reply when @mention includes $TICKER - Logging: mention detected, tool calls, Kagi result count, backend used, response - shell.nix: added openai + requests packages - requirements.txt: openai>=1.0.0, requests>=2.28.0
2026-05-18Add structured loggingBen Sima
2026-05-18feat: implement slopbot Zulip stock ticker botBen Sima
- Adds main.py: single-file bot using raw zulip event loop - Matches $TICKER patterns via TICKER_RE = re.compile(r'$([A-Z]{1,5})') - fetch_price() uses yf.Ticker(ticker).fast_info['lastPrice'] - Returns '$TICKER: $123.45' on success - Returns '$TICKER: unavailable (msg)' on exception - handle_event() ignores non-message events, skips bot's own messages, deduplicates tickers, replies to same stream + topic - Module-level client + call_on_each_event per spec
2026-05-18init: slopbot scaffoldBen Sima