Kritical.UTCM.psm1

# Kritical.UTCM.psm1 — DEPRECATION SHIM (wave .1514).
#
# Kritical.UTCM was renamed to Kritical.UTCM per KRITICAL-BRAND-RENAME-PLAN.md.
# This shim keeps existing `Import-Module Kritical.UTCM` calls working through
# 2027-01-01 by dot-sourcing the same underlying scripts. Downstream consumers
# should transition:
# Install-Module Kritical.UTCM -Scope CurrentUser
# Import-Module Kritical.UTCM
# Set $env:KRIT_DEPRECATION_SUPPRESSED = '1' to silence the one-time WARN.

if ($env:KRIT_DEPRECATION_SUPPRESSED -ne '1') {
    Write-Warning 'Kritical.UTCM is renamed to Kritical.UTCM (wave .1514 brand-rename). Update your Install-Module + Import-Module calls. This shim retires 2027-01-01. Set $env:KRIT_DEPRECATION_SUPPRESSED=1 to silence.'
}

$ErrorActionPreference = 'Stop'

# Soft-load OmniFramework foundation (per Krit.OpenApi 0.1.0 resilience pattern —
# never RequiredModules; prevents PSFramework AppDomain cascade).
$omni = Get-Module -ListAvailable Kritical.PS.OmniFramework | Sort-Object Version -Desc | Select-Object -First 1
if ($omni) {
    try { Import-Module Kritical.PS.OmniFramework -Force -ErrorAction Stop -Global }
    catch { Write-Verbose "[Kritical.UTCM] OmniFramework soft-load skipped: $($_.Exception.Message)" }
}

# Dot-source Private helpers first, then Public functions (recurse to pick up
# Public/<Category>/*.ps1 wrappers emitted by New-KriticalUtcmFromM365DscHelpers).
$Private = @(Get-ChildItem -Path (Join-Path $PSScriptRoot 'Private') -Filter '*.ps1' -Recurse -ErrorAction SilentlyContinue)
$Public  = @(Get-ChildItem -Path (Join-Path $PSScriptRoot 'Public')  -Filter '*.ps1' -Recurse -ErrorAction SilentlyContinue)

foreach ($file in $Private + $Public) {
    try { . $file.FullName }
    catch { Write-Error "[Kritical.UTCM] Failed to dot-source $($file.FullName): $($_.Exception.Message)" }
}

Export-ModuleMember -Function $Public.BaseName