| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2026-05-18 | Fix Parasail model pin and Kagi tool guidance | Ben Sima | |
| 2026-05-18 | pin models: parasail-qwen3-235b on Parasail, qwen2.5:14b locally | Ben Sima | |
| 2026-05-18 | feat(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-18 | Add structured logging | Ben Sima | |
| 2026-05-18 | add shell.nix with zulip + yfinance | Ben Sima | |
| 2026-05-18 | feat: implement slopbot Zulip stock ticker bot | Ben 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-18 | init: slopbot scaffold | Ben Sima | |
