public/Invoke-OctaTaskBrowser.ps1

function Invoke-OctaTaskBrowser {
    <#
        .SYNOPSIS
        Lists scheduled tasks and can enable/disable/run/stop/delete one by TaskPath\TaskName.
        FR-044. Enable/disable reuse the same snapshot + Run Record mechanism as
        Invoke-OctaStartupManager - Undo-OctaRun needs no changes.
    #>

    [CmdletBinding()]
    param(
        [string]$Enable,
        [string]$Disable,
        [string]$Run,
        [string]$Stop,
        [string]$Delete,
        [switch]$Yes
    )

    function Split-OctaTaskFullName {
        param([string]$FullName)
        $lastSlash = $FullName.LastIndexOf('\')
        return @{
            TaskPath = $FullName.Substring(0, $lastSlash + 1)
            TaskName = $FullName.Substring($lastSlash + 1)
        }
    }

    if (-not ($Enable -or $Disable -or $Run -or $Stop -or $Delete)) {
        $tasks = @(Get-ScheduledTask -ErrorAction SilentlyContinue)
        foreach ($t in $tasks) {
            Write-Host ("{0,-10} {1}{2}" -f $t.State, $t.TaskPath, $t.TaskName)
        }
        return $tasks
    }

    if ($Enable -or $Disable) {
        $fullName = if ($Enable) { $Enable } else { $Disable }
        $parts = Split-OctaTaskFullName -FullName $fullName
        $run = New-OctaRunFolder
        $snapshot = Save-OctaActionSnapshot -Action (New-OctaAction -TargetType ScheduledTask -TargetIdentifier "$($parts.TaskPath)|$($parts.TaskName)" -CurrentValue 'n/a' -PlannedValue 'n/a') -RunFolder $run.Path

        if ($Enable) {
            Enable-ScheduledTask -TaskPath $parts.TaskPath -TaskName $parts.TaskName | Out-Null
        }
        else {
            Disable-ScheduledTask -TaskPath $parts.TaskPath -TaskName $parts.TaskName | Out-Null
        }

        Save-OctaRunRecord -RunFolder $run.Path -RunRecord ([pscustomobject]@{
                RunId                      = $run.RunId
                Timestamp                  = (Get-Date).ToString('o')
                CategoriesApplied          = @('task-browser')
                RestorePointStatus         = 'SkippedByUser'
                RestorePointSequenceNumber = $null
                ActionSnapshots            = @($snapshot)
                IrreversibleActionRefs     = @()
                Status                     = 'Completed'
            })
        return [pscustomobject]@{ Status = 'Success'; RunId = $run.RunId }
    }

    if ($Run) {
        $parts = Split-OctaTaskFullName -FullName $Run
        Start-ScheduledTask -TaskPath $parts.TaskPath -TaskName $parts.TaskName
        return [pscustomobject]@{ Status = 'Success'; Message = "Started $Run" }
    }

    if ($Stop) {
        $parts = Split-OctaTaskFullName -FullName $Stop
        Stop-ScheduledTask -TaskPath $parts.TaskPath -TaskName $parts.TaskName
        return [pscustomobject]@{ Status = 'Success'; Message = "Stopped $Stop" }
    }

    if ($Delete) {
        Write-Host "Deleting a scheduled task is irreversible (no snapshot can re-create its definition)."
        if (-not $Yes) {
            $response = Read-Host "Delete $Delete ? (y/N)"
            if ($response -notin @('y', 'Y', 's', 'S')) {
                return [pscustomobject]@{ Status = 'Cancelled' }
            }
        }
        $parts = Split-OctaTaskFullName -FullName $Delete
        Unregister-ScheduledTask -TaskPath $parts.TaskPath -TaskName $parts.TaskName -Confirm:$false
        return [pscustomobject]@{ Status = 'Success'; Message = "Deleted $Delete" }
    }
}