Private/TaskNameCompleter.ps1

# Argument completer for TaskName parameter
Register-ArgumentCompleter -CommandName 'Invoke-Task' -ParameterName 'TaskName' -ScriptBlock {
    param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)
    
    # Get all available tasks
    $tasks = Get-TaskDefinition -ListAvailable -ErrorAction SilentlyContinue
    
    if (-not $tasks) {
        return @()
    }
    
    # Filter tasks based on what user has typed
    $tasks | Where-Object { $_.Name -like "$wordToComplete*" } | ForEach-Object {
        [System.Management.Automation.CompletionResult]::new(
            $_.Name,
            $_.Name,
            'ParameterValue',
            "$($_.Name) - $($_.Tags -join ', ')"
        )
    }
}