Public/Get-LLMProviders.ps1

function Get-LLMProviders {
<#
.SYNOPSIS
    List configured providers, default models, and API key status.
#>

    [CmdletBinding()]
    param()
    $c = $script:C; $b = $script:Box
    Write-Host ""; script:Write-Rule -Label 'PROVIDERS' -Color $c.Slate
    foreach ($name in $script:Providers.Keys | Sort-Object) {
        $cfg    = $script:Providers[$name]
        $keySet = -not [string]::IsNullOrWhiteSpace(
            [System.Environment]::GetEnvironmentVariable($cfg.EnvKeyName))
        if (-not $keySet) {
            Write-Warning "$name provider: $($cfg.EnvKeyName) is not set"
        }
        $dot    = if ($keySet) { "$($c.Green)●$($c.Reset)" } else { "$($c.Red)○$($c.Reset)" }
        Write-Host " $dot $($c.Amber)$($name.PadRight(12))$($c.Reset)$($c.Silver)model:$($c.Reset) $($cfg.DefaultModel.PadRight(34))$($c.Silver)env:$($c.Reset) $($cfg.EnvKeyName)"
        [PSCustomObject]@{
            PSTypeName      = 'LLMProviderInfo'
            Provider        = $name
            DefaultModel    = $cfg.DefaultModel
            EnvVariable     = $cfg.EnvKeyName
            KeyConfigured   = $keySet
            AvailableModels = $cfg.Models -join ', '
        }
    }
    Write-Host ""
}