VBAF.Public.Get-Examples.ps1

function Get-VBAFExamples {
    <#
    .SYNOPSIS
        Lists available VBAF examples and how to run them.
    
    .DESCRIPTION
        Displays all available example scripts with descriptions and usage instructions.
        Examples demonstrate neural networks, Q-learning, multi-agent systems, and more.
    
    .PARAMETER Category
        Filter examples by category.
        Valid values: 'Core', 'RL', 'Business', 'Art', 'Visualization', 'All'
        Default: 'All'
    
    .PARAMETER ShowPath
        Display full file paths to examples.
    
    .EXAMPLE
        Get-VBAFExamples
        
        Lists all available examples.
    
    .EXAMPLE
        Get-VBAFExamples -Category RL
        
        Shows only reinforcement learning examples.
    
    .EXAMPLE
        Get-VBAFExamples -ShowPath
        
        Displays file paths to examples.
    
    .OUTPUTS
        List of available examples with descriptions.
    
    .NOTES
        Author: Henning
        Part of VBAF Module
    #>

    
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $false)]
        [ValidateSet('Core', 'RL', 'Business', 'Art', 'Visualization', 'All')]
        [string]$Category = 'All',
        
        [Parameter(Mandatory = $false)]
        [switch]$ShowPath
    )
    
    Write-Host "`n - oo00oo - " -ForegroundColor Yellow
    Write-Host " VBAF Examples" -ForegroundColor Cyan
    Write-Host " - oo00oo - `n" -ForegroundColor Yellow
    
    # Define all examples
    $examples = @(
        [PSCustomObject]@{
            Category = 'Core'
            Name = 'XOR Neural Network'
            File = 'VBAF.Core.Example-XOR.ps1'
            Description = 'Train a neural network to solve the XOR problem'
            Command = '. $basePath\VBAF.Core.Example-XOR.ps1'
        },
        [PSCustomObject]@{
            Category = 'Core'
            Name = 'Validation Dashboard'
            File = 'VBAF.Core.Test-ValidationDashboard.ps1'
            Description = 'Visual proof that neural networks and Q-learning work'
            Command = '. $basePath\VBAF.Core.Test-ValidationDashboard.ps1'
        },
        [PSCustomObject]@{
            Category = 'RL'
            Name = 'Castle Q-Learning'
            File = 'VBAF.RL.Example-CastleLearning.ps1'
            Description = 'RL agent learns to generate aesthetic castle sequences'
            Command = '. $basePath\VBAF.RL.Example-CastleLearning.ps1'
        },
        [PSCustomObject]@{
            Category = 'RL'
            Name = 'Q-Learning Grid World'
            File = 'VBAF.RL.Example-GridWorld.ps1'
            Description = 'Simple Q-learning in 10x10 grid environment'
            Command = '. $basePath\VBAF.RL.Example-GridWorld.ps1'
        },
        [PSCustomObject]@{
            Category = 'Business'
            Name = 'Company Learning Test'
            File = 'VBAF.Company.TestLearning.ps1'
            Description = 'Single company agent learns optimal strategy'
            Command = '. $basePath\VBAF.Company.TestLearning.ps1'
        },
        [PSCustomObject]@{
            Category = 'Business'
            Name = 'Multi-Company Market'
            File = 'VBAF.Business.Test.CompanyMarket.ps1'
            Description = '4 companies compete in simulated market'
            Command = '. $basePath\VBAF.Business.Test.CompanyMarket.ps1'
        },
        [PSCustomObject]@{
            Category = 'Business'
            Name = 'Market Dashboard Demo'
            File = 'VBAF.Business.Dashboard-Demo.ps1'
            Description = 'Real-time visualization of market simulation'
            Command = '. $basePath\VBAF.Business.Dashboard-Demo.ps1'
        },
        [PSCustomObject]@{
            Category = 'Art'
            Name = 'Castle Competition'
            File = 'VBAF.Art.CastleCompetition.ps1'
            Description = '3 agents compete for aesthetic space - GRAND FINALE!'
            Command = '. $basePath\VBAF.Art.CastleCompetition.ps1'
        },
        [PSCustomObject]@{
            Category = 'Art'
            Name = 'Show20 Q-Learning Agent'
            File = 'VBAF.Art.Show20-QLearning.ps1'
            Description = 'Original castle generation with Q-learning'
            Command = '. $basePath\VBAF.Art.Show20-QLearning.ps1'
        },
        [PSCustomObject]@{
            Category = 'Visualization'
            Name = 'Learning Dashboard'
            File = 'VBAF.Visualization.Example-Dashboard.ps1'
            Description = 'Real-time learning curve visualization'
            Command = '. $basePath\VBAF.Visualization.Example-Dashboard.ps1'
        }
    )
    
    # Filter by category
    if ($Category -ne 'All') {
        $examples = $examples | Where-Object { $_.Category -eq $Category }
    }
    
    # Group by category
    $grouped = $examples | Group-Object Category
    
    foreach ($group in $grouped) {
        Write-Host " [$($group.Name)]" -ForegroundColor Green
        Write-Host " " + ("=" * 70) -ForegroundColor DarkGray
        
        foreach ($example in $group.Group) {
            Write-Host " • " -NoNewline -ForegroundColor Cyan
            Write-Host $example.Name -ForegroundColor White
            Write-Host " $($example.Description)" -ForegroundColor Gray
            
            if ($ShowPath) {
                Write-Host " File: $($example.File)" -ForegroundColor DarkGray
            }
            
            Write-Host " Run: " -NoNewline -ForegroundColor Yellow
            Write-Host $example.Command -ForegroundColor White
            Write-Host ""
        }
    }
    
    Write-Host " Total Examples: $($examples.Count)" -ForegroundColor Cyan
    Write-Host "`n - oo00oo - `n" -ForegroundColor Yellow
    
    # Return examples for pipeline use
    return $examples
}