Metro.AI.psm1
#Requires -Version 7.0 # Initialize the module-level context variable $script:MetroContext = $null # Import Classes $classFiles = Get-ChildItem -Path "$PSScriptRoot/Classes/*.ps1" -ErrorAction SilentlyContinue foreach ($file in $classFiles) { Write-Verbose "Loading class: $($file.BaseName)" . $file.FullName } # Import Private Functions $allPrivateFiles = Get-ChildItem -Path "$PSScriptRoot/Private/*.ps1" -ErrorAction SilentlyContinue foreach ($file in $allPrivateFiles) { if ($privateFunctionOrder -notcontains $file.BaseName) { Write-Verbose "Loading additional private function: $($file.BaseName)" . $file.FullName } } # Import Public Functions $publicFiles = Get-ChildItem -Path "$PSScriptRoot/Public/*.ps1" -ErrorAction SilentlyContinue foreach ($file in $publicFiles) { Write-Verbose "Loading public function: $($file.BaseName)" . $file.FullName } # Module initialization - try to load cached context $cachedContext = Get-MetroAIContextCache if ($cachedContext) { $script:MetroContext = $cachedContext Write-Host "Metro AI context auto-loaded from cache: $($cachedContext.ApiType) API at $($cachedContext.Endpoint)" -ForegroundColor Green } # Export all public functions and aliases $publicFunctionNames = $publicFiles | ForEach-Object { $_.BaseName } Export-ModuleMember -Function $publicFunctionNames # Export aliases defined in the manifest $aliasesToExport = @( 'Get-MetroAIAgent', 'Get-MetroAIAssistant', 'Set-MetroAIAgent', 'Set-MetroAIAssistant', 'New-MetroAIAgent', 'New-MetroAIAssistant', 'Remove-MetroAIAgent', 'Remove-MetroAIAssistant' ) Export-ModuleMember -Alias $aliasesToExport |