EasyTCM.psm1

# EasyTCM Module Loader
# Dot-sources all private and public functions

$Private = @(Get-ChildItem -Path "$PSScriptRoot\Private\*.ps1" -ErrorAction SilentlyContinue)
$Public  = @(Get-ChildItem -Path "$PSScriptRoot\Public\*.ps1" -ErrorAction SilentlyContinue)

foreach ($file in @($Private + $Public)) {
    try {
        . $file.FullName
    }
    catch {
        Write-Error "Failed to import function $($file.FullName): $_"
    }
}

# Module-level constants
$script:TCM_BASE_URL      = 'https://graph.microsoft.com/beta/admin/configurationManagement'
$script:TCM_APP_ID        = '03b07b79-c5bc-4b5e-9bfa-13acf4a99998'
$script:TCM_GRAPH_SCOPES  = @(
    'ConfigurationMonitoring.Read.All'
    'ConfigurationMonitoring.ReadWrite.All'
)

# File-based cache for Compare-TCMBaseline results (survives module reimports)
$script:CompareBaselineCachePath = Join-Path ([System.IO.Path]::GetTempPath()) 'EasyTCM-CompareBaselineCache.json'