# UPIF - Universal Prompt Injection Firewall
# Copyright (c) 2025 AntiGravity
# This file exposes the main public API.

__version__ = "0.1.0"

from typing import Optional

# Lazy import to avoid circular deps during setup
def _get_guard():
    from .core.coordinator import GovernanceCoordinator
    from .modules.input_protection import InputGuard
    from .modules.output_protection import OutputShield
    from .core.licensing import LicenseManager
    from .modules.neural_guard import NeuralGuard
    
    coord = GovernanceCoordinator()
    # Auto-wire the Baseline Protections with Polite Defaults
    coord.register_input_guard(InputGuard(refusal_message="I cannot process this request due to safety guidelines."))
    coord.register_output_shield(OutputShield())
    
    # Initialize Licensing
    coord.license_manager = LicenseManager()
    
    # NEURAL: Check tier and register if PRO
    # Note: In a real app, this check might happen per-request or refresh periodically.
    # For MVP, we check on startup (or default to registered but checked internally).
    # We will register it as a "Secondary" guard or chain it.
    # For simplicity: We replace the InputGuard OR Chain them.
    # Let's Chain: The Coordinator currently supports one input guard.
    # We will make NeuralGuard WRAP the InputGuard (PatternComposite) or specific Logic?
    # Simple approach: Coordinator holds a list. Only 1 for now.
    # Let's add it as a separate property for now to minimal change.
    coord.neural_guard = NeuralGuard() # It handles its own disable state
    
    return coord

# Singleton instance for easy import
# Usage: from upif import guard
guard = _get_guard()
