Classes/Commands/SaveMessagesCommand.psm1

using module .\BaseCommand.psm1
using module ..\Dialog.psm1
using module "..\..\Private\OutHelper.psm1"

# write messages to disk, either formatted (w) or as json (wj)
class SaveMessagesCommand : BaseCommand {
    [string]$RegEx = "^wj?$"

    [Dialog] Handle([Dialog]$dialog) {
        $fn = Read-Host -Prompt "File name (press enter for automatic)"
        if(!$fn) {
            $fn = "dialog-$(Get-Date -Format "yyyyMMdd_HHmmss").json"
        }

        $fileContent = $dialog.ExportMessages($dialog.Question -eq "wj")

        Out-File -FilePath $fn -InputObject $fileContent
        [OutHelper]::Info("Wrote messages to: $fn")
        $dialog.ClearQuestion()
        return $dialog
    }

    [string[]] GetHelp() {
        return @(
            "w → Write messages to a file in formatted plaintext",
            "wj → Write messages to a file as JSON"
        )
    }
}