workflows/default/systems/mcp/tools/decision-list/script.ps1

function Invoke-DecisionList {
    param([hashtable]$Arguments)

    $filterStatus = $Arguments['status']
    $decisionsBaseDir = Join-Path $global:DotbotProjectRoot ".bot\workspace\decisions"
    $allStatuses = @('proposed', 'accepted', 'deprecated', 'superseded')

    if ($filterStatus -and $filterStatus -notin $allStatuses) {
        throw "Invalid status filter '$filterStatus'. Must be one of: $($allStatuses -join ', ')"
    }

    $searchDirs = if ($filterStatus) { @($filterStatus) } else { $allStatuses }

    $decisions = @()
    foreach ($statusDir in $searchDirs) {
        $dirPath = Join-Path $decisionsBaseDir $statusDir
        if (-not (Test-Path $dirPath)) { continue }

        $files = Get-ChildItem -Path $dirPath -Filter "dec-*.json" -File -ErrorAction SilentlyContinue
        foreach ($file in $files) {
            try {
                $dec = Get-Content -Path $file.FullName -Raw | ConvertFrom-Json
                $decisions += @{
                    id = $dec.id
                    title = $dec.title
                    type = $dec.type
                    status = $statusDir
                    date = $dec.date
                    impact = $dec.impact
                    tags = $dec.tags
                    superseded_by = $dec.superseded_by
                    file_path = $file.FullName
                    file_name = $file.Name
                }
            } catch { Write-BotLog -Level Debug -Message "Non-critical operation failed" -Exception $_ }
        }
    }

    $decisions = @($decisions | Sort-Object { $_.id })

    return @{
        success = $true
        count = $decisions.Count
        decisions = $decisions
    }
}