functions/Actions/WaitForInput/Invoke-AzureFailureWaitForInput.ps1

function Invoke-AzureFailureWaitForInput {
    [CmdletBinding(SupportsShouldProcess = $true)]
    param (
        [Parameter(Mandatory = $true)]
        [string] $Step,

        [Parameter(Mandatory = $true)]
        [string] $Branch,

        [Parameter(Mandatory = $false)]
        [bool] $RequireResumeOnRestore = $false,

        [string] $ActionName = "urn:csci:microsoft:chaosStudio:waitForInput/1.0"
    )

    Write-PSFMessage -Level Host -Message "Step ($Step), Branch ($Branch): Waiting for user input to continue..."
    Write-PSFMessage -Level Host -Message "Type 'resume' and press Enter to continue the experiment."

    $actionTriggerTime = Get-Date
    $actionStatus = "InProgress"

    $paramUpdateAzureFailureTrace = @{
        ResourceId        = "WaitForInput"
        Step              = $Step
        Branch            = $Branch
        Action            = $ActionName
        ActionStatus      = $actionStatus
        ActionTriggerTime = $actionTriggerTime
        ActionMessage     = "Waiting for user input"
        TargetDetails     = @{
            RequireResumeOnRestore = $RequireResumeOnRestore
        }
    }
    Update-AzureFailureTrace @paramUpdateAzureFailureTrace

    if ($PSCmdlet.ShouldProcess("Experiment", "Wait for user input")) {
        $userInput = ""
        while ($userInput -ne "resume") {
            $userInput = Read-Host "Enter 'resume' to continue"
            if ($userInput -ne "resume") {
                Write-PSFMessage -Level Warning -Message "Invalid input. Please type 'resume' to continue."
            }
        }
        Write-PSFMessage -Level Host -Message "Resuming experiment execution..."
        $actionStatus = "Success"
    }
    else {
        Write-PSFMessage -Level Host -Message "WhatIf: Would wait for user to type 'resume' to continue."
        $actionStatus = "WhatIf"
    }

    $actionCompleteTime = Get-Date

    $paramUpdateAzureFailureTrace = @{
        ResourceId         = "WaitForInput"
        Step               = $Step
        Branch             = $Branch
        Action             = $ActionName
        ActionStatus       = $actionStatus
        ActionCompleteTime = $actionCompleteTime
    }
    Update-AzureFailureTrace @paramUpdateAzureFailureTrace
}