# Info: Local provider dependencies for development and testing workflows (Provisioning)
# Author: Claude Code Agent 7
# Release: 2.0.0
# Date: 2025-09-25
import provisioning

schema FilesystemDependencies:
    """Directory and filesystem dependencies"""
    base_directories_first: bool = True
    required_paths: [str] = ["/tmp", "/var", "/opt"]
    auto_create_dirs: bool = True
    default_permissions: str = "755"
    fs_timeout: int = 30

schema NetworkDependencies:
    """Local network dependencies"""
    docker_networks: bool = True
    host_network_limits: bool = True
    port_conflict_check: bool = True
    local_ranges: [str] = ["127.0.0.0/8", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]
    network_timeout: int = 60

schema ContainerDependencies:
    """Container dependencies (if using containerization)"""
    docker_required: bool = False
    podman_support: bool = True
    runtime_auto_detect: bool = True
    base_images_first: bool = True
    batch_size: int = 5
    startup_timeout: int = 120

schema StorageDependencies:
    """Local storage dependencies"""
    local_paths: bool = True
    prefer_bind_mounts: bool = True
    capacity_validation: bool = True
    temp_cleanup: bool = True
    batch_size: int = 10

schema ResourceLimits:
    """Resource limits (local development constraints)"""
    max_processes: int = 50
    max_memory_mb: int = 4096
    max_disk_gb: int = 20
    max_connections: int = 100
    max_cpu_percent: int = 80

schema DevelopmentFeatures:
    """Development workflow support"""
    hot_reload: bool = True
    debug_mode: bool = True
    service_discovery: bool = True
    config_watching: bool = True
    log_aggregation: bool = True

schema SharedResources:
    """Shared resources (local development)"""
    config_files_shared: bool = True
    cache_shared: bool = True
    logs_shared: bool = True
    database_shared: bool = False
    ssh_keys_inherited: bool = True

schema Lifecycle:
    """Resource lifecycle management"""
    cleanup_on_exit: bool = True
    preserve_data: [str] = ["databases", "logs", "config"]
    temporary: [str] = ["pid_files", "sockets", "temp_dirs"]
    cleanup_order: [str] = ["services", "containers", "volumes", "networks", "temp_directories"]

schema CrossProvider:
    """Cross-provider compatibility"""
    cloud_simulation: bool = True
    cloud_config_compat: bool = True
    cloud_migration: bool = True
    service_mocking: bool = True
    env_parity: bool = True

schema Validation:
    """Local testing and validation"""
    health_checks: bool = True
    port_checks: bool = True
    dependency_checks: bool = True
    resource_validation: bool = True
    config_validation: bool = True
    performance_testing: bool = True

schema Security:
    """Security considerations for local development"""
    environment_isolation: bool = True
    secure_local_comms: bool = False
    access_control_sim: bool = True
    credential_management: bool = True
    security_scanning: bool = False

schema LocalDependencies:
    """
    Local provider dependency management for development workflows
    """
    # Resource creation order (simplified for local development)
    resource_order: [str] = ["directories", "networks", "containers", "volumes", "services"]

    # Configuration sections
    filesystem_dependencies: FilesystemDependencies = FilesystemDependencies {}
    network_dependencies: NetworkDependencies = NetworkDependencies {}
    container_dependencies: ContainerDependencies = ContainerDependencies {}
    storage_dependencies: StorageDependencies = StorageDependencies {}
    resource_limits: ResourceLimits = ResourceLimits {}
    development_features: DevelopmentFeatures = DevelopmentFeatures {}
    shared_resources: SharedResources = SharedResources {}
    lifecycle: Lifecycle = Lifecycle {}
    cross_provider: CrossProvider = CrossProvider {}
    validation: Validation = Validation {}
    security: Security = Security {}

# Default dependency configuration for Local provider
local_dependencies: LocalDependencies = LocalDependencies {}
