import os import logging import asyncio import db import collector import summarizer # Configure logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logger = logging.getLogger(__name__) async def main(): """Main service loop""" logger.info("Starting Claude Code Tracker service") # Initialize database await db.init_db() logger.info("Database initialized") # Create data directory if it doesn't exist data_dir = os.path.dirname(db.DB_PATH) os.makedirs(data_dir, exist_ok=True) # Start collection and summarization tasks tasks = [ asyncio.create_task(collector.collect_conversations()), asyncio.create_task(summarizer.summarize_daily()) ] logger.info("Service started - collection and summarization tasks running") try: await asyncio.gather(*tasks) except KeyboardInterrupt: logger.info("Shutting down...") for task in tasks: task.cancel() await asyncio.gather(*tasks, return_exceptions=True) if __name__ == "__main__": asyncio.run(main())