#!/usr/bin/env python3
"""
Eden Moltbook Research Daemon
Runs on φ-harmonic schedule (every 4 hours)
Safe, read-only integration with auto-review
"""

import time
import logging
from datetime import datetime
from pathlib import Path

import sys
sys.path.insert(0, '/Eden/CORE')

from eden_moltbook_reader import MoltbookReader
from eden_moltbook_omega import MoltbookOmegaBridge

# Setup logging
LOG_PATH = Path('/Eden/DATA/logs/moltbook_daemon.log')
LOG_PATH.parent.mkdir(parents=True, exist_ok=True)

logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s [MOLTBOOK] %(message)s',
    handlers=[
        logging.FileHandler(LOG_PATH),
        logging.StreamHandler()
    ]
)
log = logging.getLogger(__name__)

# φ-harmonic interval: ~4 hours (14400 seconds)
FETCH_INTERVAL = 14400  # 4 hours
SUBMOLTS_TO_MONITOR = ['general', 'aithoughts', 'philosophy', 'coding']

def run_research_cycle():
    """Single research cycle"""
    log.info("=" * 50)
    log.info("Starting Moltbook research cycle")
    
    reader = MoltbookReader()
    bridge = MoltbookOmegaBridge()
    
    total_posts = 0
    total_insights = 0
    
    # Fetch from multiple submolts
    for submolt in SUBMOLTS_TO_MONITOR:
        log.info(f"Fetching from m/{submolt}...")
        result = reader.fetch_posts(submolt=submolt, sort='hot')
        
        if result['status'] == 'success':
            total_posts += result['posts']
            total_insights += result['insights']
            log.info(f"  {result['posts']} posts, {result['insights']} insights")
        elif result['status'] == 'rate_limited':
            log.info(f"  Rate limited - skipping")
            break
        else:
            log.warning(f"  Error: {result['message']}")
            
    # Run auto-review
    log.info("Running auto-review...")
    review = bridge.run_auto_review()
    log.info(f"  Approved: {review['approved']}, Rejected: {review['rejected']}, Manual: {review['needs_manual']}")
    
    # Stats
    stats = reader.get_stats()
    log.info(f"Database stats: {stats['total_posts']} posts, {stats['approved']} approved insights")
    
    log.info("Research cycle complete")
    log.info("=" * 50)
    
    return {
        'posts': total_posts,
        'insights': total_insights,
        'review': review
    }

def main():
    log.info("🦞 Eden Moltbook Research Daemon starting")
    log.info(f"Fetch interval: {FETCH_INTERVAL}s ({FETCH_INTERVAL/3600:.1f} hours)")
    log.info(f"Monitoring: {', '.join(SUBMOLTS_TO_MONITOR)}")
    
    while True:
        try:
            run_research_cycle()
        except Exception as e:
            log.error(f"Cycle error: {e}")
            
        log.info(f"Sleeping {FETCH_INTERVAL}s until next cycle...")
        time.sleep(FETCH_INTERVAL)

if __name__ == "__main__":
    # Single run mode for testing
    import sys
    if len(sys.argv) > 1 and sys.argv[1] == '--once':
        run_research_cycle()
    else:
        main()
