From 8edcb070ed9676b62f68bfb98b8868bcfd79abab Mon Sep 17 00:00:00 2001 From: Viktor Barzin Date: Thu, 21 May 2026 19:33:04 +0000 Subject: [PATCH] feat: scaffold meet_kevin_watcher service + config --- services/meet_kevin_watcher/__init__.py | 0 services/meet_kevin_watcher/config.py | 31 +++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 services/meet_kevin_watcher/__init__.py create mode 100644 services/meet_kevin_watcher/config.py diff --git a/services/meet_kevin_watcher/__init__.py b/services/meet_kevin_watcher/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/services/meet_kevin_watcher/config.py b/services/meet_kevin_watcher/config.py new file mode 100644 index 0000000..7d3dbd5 --- /dev/null +++ b/services/meet_kevin_watcher/config.py @@ -0,0 +1,31 @@ +"""Configuration for the Meet Kevin watcher service.""" + +from shared.config import BaseConfig + + +class MeetKevinWatcherConfig(BaseConfig): + """Meet Kevin watcher settings. + + Extends :class:`BaseConfig` with YouTube channel monitoring, + caption fetching, and LLM analysis settings. All settings can be + overridden via environment variables prefixed with ``TRADING_``. + """ + + # YouTube settings + meet_kevin_channel_id: str = "UCUvvj5lwue7PspotMDjk5UA" + meet_kevin_poll_interval_seconds: int = 10800 + meet_kevin_max_caption_retries: int = 5 + + # LLM analysis settings + meet_kevin_max_llm_retries: int = 3 + meet_kevin_llm_model: str = "claude-sonnet-4-6" + meet_kevin_prompt_version: str = "v1" + meet_kevin_daily_cost_cap_usd: float = 5.0 + + # API credentials + anthropic_api_key: str = "" + + # Runtime settings + meet_kevin_workdir: str = "/tmp/meet_kevin_captions" + otel_service_name: str = "meet-kevin-watcher" + otel_metrics_port: int = 9097