Public/Get-CriticalInteraction.ps1
|
# Copyright (c) 2026 Jeffrey Snover. All rights reserved. # Licensed under the MIT License. See LICENSE file in the project root. function Get-CriticalInteraction { <# .SYNOPSIS Enumerates Critical User Interactions (CUIs) from the catalog. .DESCRIPTION Returns structured CUI objects from the built-in catalog. Use filters to narrow by domain, priority level, or test coverage level. .PARAMETER Domain Filter by domain: Taxonomy, Debate, AI, Auth, Admin, Community, Data, Calibration. .PARAMETER Priority Filter by priority level: P0, P1, P2. .PARAMETER Level Filter by test level coverage: API (has API checks), UX (has UX steps), Both (has both API and UX). .EXAMPLE Get-CriticalInteraction Returns all 28 CUIs. .EXAMPLE Get-CriticalInteraction -Priority P0 Returns only P0 (blocking) CUIs. .EXAMPLE Get-CriticalInteraction -Domain Debate -Level API Returns debate CUIs that have API-level tests defined. .LINK Show-AITriadHelp .LINK Show-DebateDiagnostics .LINK Show-DebateHarvest .LINK Convert-DebateToAudio .LINK Get-AITClaim .LINK Test-CriticalInteractions .LINK Get-TopicFrequency #> [CmdletBinding()] param( [Parameter()] [ValidateSet('Taxonomy', 'Debate', 'AI', 'Auth', 'Admin', 'Community', 'Data', 'Calibration')] [string]$Domain, [Parameter()] [ValidateSet('P0', 'P1', 'P2')] [string]$Priority, [Parameter()] [ValidateSet('API', 'UX', 'Both')] [string]$Level ) Set-StrictMode -Version Latest foreach ($Entry in $script:CuiCatalog) { if ($Domain -and $Entry.Domain -ne $Domain) { continue } if ($Priority -and $Entry.Priority -ne $Priority) { continue } $HasApi = $Entry.ApiChecks -gt 0 $HasUx = $Entry.UxSteps -gt 0 if ($Level) { $Skip = $false switch ($Level) { 'API' { if (-not $HasApi) { $Skip = $true } } 'UX' { if (-not $HasUx) { $Skip = $true } } 'Both' { if (-not ($HasApi -and $HasUx)) { $Skip = $true } } } if ($Skip) { continue } } $TestLevel = if ($HasApi -and $HasUx) { 'Both' } elseif ($HasApi) { 'API' } elseif ($HasUx) { 'UX' } else { 'None' } [PSCustomObject]@{ PSTypeName = 'CriticalInteraction' Id = $Entry.Id Domain = $Entry.Domain Priority = $Entry.Priority Title = $Entry.Title Description = $Entry.Description Preconditions = $Entry.Preconditions ApiChecks = [int]$Entry.ApiChecks UxSteps = [int]$Entry.UxSteps HasScreenshot = [bool]$Entry.HasScreenshot Level = $TestLevel } } } |