"""Core constants and small pure-Python helpers. Nothing in this package performs I/O — only constants, mappings, and deterministic utility functions safe to import from anywhere. """ from .constants import ( CYBER_SECURITY_TOPICS, MODULE_TOPIC_MAP, TOPIC_KEYWORDS, FALLBACK_HTML, HELP_TEXT, WEB_EXPLOIT_MODULES, CERT_REQUIRED_COMPLETIONS, CERT_VERIFY_BASE_URL, ) from .config import ( SUPABASE_URL, SUPABASE_ANON_KEY, SUPABASE_EDGE_URL, GROQ_API_KEY, GROQ_API_URL, GROQ_MODEL, MISTRAL_API_KEY, MISTRAL_MODEL, MISTRAL_API_URL, CHALLENGE_FILES_BUCKET, ) from .text import parse_json_safe from .security import ( normalize_vuln_key, normalize_str, ip_matches, ioc_matches, timestamp_close, ) from .module_router import challenge_type_for_module __all__ = [ # constants "CYBER_SECURITY_TOPICS", "MODULE_TOPIC_MAP", "TOPIC_KEYWORDS", "FALLBACK_HTML", "HELP_TEXT", "WEB_EXPLOIT_MODULES", "CERT_REQUIRED_COMPLETIONS", "CERT_VERIFY_BASE_URL", # config "SUPABASE_URL", "SUPABASE_ANON_KEY", "SUPABASE_EDGE_URL", "GROQ_API_KEY", "GROQ_API_URL", "GROQ_MODEL", "MISTRAL_API_KEY", "MISTRAL_MODEL", "MISTRAL_API_URL", "CHALLENGE_FILES_BUCKET", # helpers "parse_json_safe", "normalize_vuln_key", "normalize_str", "ip_matches", "ioc_matches", "timestamp_close", "challenge_type_for_module", ]