private/Initialize-AIToolDefault.ps1

function Initialize-AIToolDefault {
    <#
    .SYNOPSIS
        Initializes the default AI tool configuration.
 
    .DESCRIPTION
        Checks if a default tool is configured. If not, scans for available tools
        and prompts user to install one if none are found.
    #>

    [CmdletBinding()]
    param()

    $defaultTool = Get-PSFConfigValue -FullName 'AITools.DefaultTool' -Fallback $null

    if ($defaultTool) {
        Write-PSFMessage -Level Verbose -Message "Default tool already configured: $defaultTool"
        return
    }

    Write-PSFMessage -Level Verbose -Message "No default tool configured, scanning for available tools..."

    $availableTool = Find-AvailableAITool

    if ($availableTool) {
        Set-PSFConfig -FullName 'AITools.DefaultTool' -Value $availableTool -PassThru | Register-PSFConfig
        Write-PSFMessage -Level Verbose -Message "Detected and set default AI tool: $availableTool"
    } else {
        Write-PSFMessage -Level Verbose -Message "`nNo AI tools detected. Please install one of the following:`n"

        $sortedTools = $script:ToolDefinitions.GetEnumerator() |
            Sort-Object { $_.Value.Priority }

        $index = 1
        foreach ($tool in $sortedTools) {
            $note = if ($tool.Value.Note) { " - $($tool.Value.Note)" } else { "" }
            Write-PSFMessage -Level Verbose -Message "$index. $($tool.Key)$note"
            $index++
        }

        Write-PSFMessage -Level Verbose -Message "`nTo install a tool, run: Install-AITool -Name <ToolName>"
        Write-PSFMessage -Level Verbose -Message "Example: Install-AITool -Name ClaudeCode"
    }
}