Functions/GenXdev.Coding.PowerShell.Modules/EnsureDefaultGenXdevRefactors.ps1
function EnsureDefaultGenXdevRefactors { <# NAME New-Refactor SYNOPSIS Creates a new refactoring set for code transformation tasks. SYNTAX New-Refactor [-Name] <String> [-PromptKey] <String> [[-Prompt] <String>] [[-SelectionScript] <String>] [[-SelectionPrompt] <String>] [[-LLMQueryType] <String>] [-Model <String>] [-HuggingFaceIdentifier <String>] [-MaxToken <Int32>] [-Cpu <Int32>] [-TTLSeconds <Int32>] [-SelectByFreeRam] [-SelectByFreeGpuRam] [-Temperature <Double>] [-Gpu <Int32>] [-ApiEndpoint <String>] [-ApiKey <String>] [-TimeoutSeconds <Int32>] [-Priority <Int32>] [-ExposedCmdLets <ExposedCmdletDefinition[]>] [-FilesToAdd <FileInfo[]>] [-PreferencesDatabasePath <String>] [-AutoAddModifiedFiles] [-Force] [-SessionOnly] [-ClearSession] [-SkipSession] [-Code] [-VisualStudio] [-KeysToSend <String[]>] [-WhatIf] [-Confirm] [<CommonParameters>] DESCRIPTION Creates and configures a new refactoring definition with specified settings for LLM-based code transformations. The function handles: - Setting up refactoring configuration - Configuring selection criteria and prompts - Managing LLM model settings - Integrating with development environments - Persisting refactor definitions PARAMETERS -Name <String> Unique identifier for the refactoring set. Must be non-empty and unique. Required? true Position? 1 Default value Accept pipeline input? false Aliases Accept wildcard characters? false -PromptKey <String> Key identifying which prompt template to use for refactoring operations. Required? true Position? 2 Default value Accept pipeline input? false Aliases Accept wildcard characters? false -Prompt <String> Optional custom prompt text to override the template specified by PromptKey. Required? false Position? 3 Default value Accept pipeline input? false Aliases Accept wildcard characters? false -SelectionScript <String> PowerShell script defining selection criteria for items to refactor. Required? false Position? 4 Default value Accept pipeline input? false Aliases Accept wildcard characters? false -SelectionPrompt <String> Custom prompt text used by the LLM to guide selection of items for refactoring. Required? false Position? 5 Default value Accept pipeline input? false Aliases Accept wildcard characters? false -LLMQueryType <String> The type of LLM query to perform (SimpleIntelligence, Knowledge, Pictures, etc.). Required? false Position? 6 Default value Coding Accept pipeline input? false Aliases Accept wildcard characters? false -Model <String> Name or identifier of the specific LLM model to use for processing. Required? false Position? named Default value Accept pipeline input? false Aliases Accept wildcard characters? false -HuggingFaceIdentifier <String> Identifier used to retrieve a specific model from LM Studio. Required? false Position? named Default value Accept pipeline input? false Aliases Accept wildcard characters? false -MaxToken <Int32> Maximum tokens allowed in LLM responses. Use -1 for model default. Required? false Position? named Default value 0 Accept pipeline input? false Aliases Accept wildcard characters? false -Cpu <Int32> The number of CPU cores to dedicate to AI operations. Required? false Position? named Default value 0 Accept pipeline input? false Aliases Accept wildcard characters? false -TTLSeconds <Int32> Time-to-live in seconds for API-loaded models. Use -1 for no expiration. Required? false Position? named Default value 0 Accept pipeline input? false Aliases Accept wildcard characters? false -SelectByFreeRam [<SwitchParameter>] Select configuration by available system RAM. Required? false Position? named Default value False Accept pipeline input? false Aliases Accept wildcard characters? false -SelectByFreeGpuRam [<SwitchParameter>] Select configuration by available GPU RAM. Required? false Position? named Default value False Accept pipeline input? false Aliases Accept wildcard characters? false -Temperature <Double> Controls randomness in LLM responses (0.0-1.0). Lower is more deterministic. Required? false Position? named Default value 0.2 Accept pipeline input? false Aliases Accept wildcard characters? false -Gpu <Int32> GPU usage control: -2=Auto, -1=LM Studio default. Required? false Position? named Default value -1 Accept pipeline input? false Aliases Accept wildcard characters? false -ApiEndpoint <String> Custom API endpoint URL for accessing the LLM service. Required? false Position? named Default value Accept pipeline input? false Aliases Accept wildcard characters? false -ApiKey <String> Authentication key required for API access. Required? false Position? named Default value Accept pipeline input? false Aliases Accept wildcard characters? false -TimeoutSeconds <Int32> The timeout in seconds for AI operations. Required? false Position? named Default value 0 Accept pipeline input? false Aliases Accept wildcard characters? false -Priority <Int32> Processing priority for this refactor set (higher numbers = higher priority). Required? false Position? named Default value 0 Accept pipeline input? false Aliases Accept wildcard characters? false -ExposedCmdLets <ExposedCmdletDefinition[]> Array of PowerShell cmdlet definitions to expose as tools to the LLM. Required? false Position? named Default value @() Accept pipeline input? false Aliases Accept wildcard characters? false -FilesToAdd <FileInfo[]> Array of files to initially include in the refactoring set. Required? false Position? named Default value @() Accept pipeline input? false Aliases Accept wildcard characters? false -PreferencesDatabasePath <String> Database path for preference data files. Required? false Position? named Default value Accept pipeline input? false Aliases Accept wildcard characters? false -AutoAddModifiedFiles [<SwitchParameter>] When enabled, automatically adds any modified files to the refactoring queue. Required? false Position? named Default value False Accept pipeline input? false Aliases Accept wildcard characters? false -Force [<SwitchParameter>] Forces LM Studio to restart before initialization. Required? false Position? named Default value False Accept pipeline input? false Aliases Accept wildcard characters? false -SessionOnly [<SwitchParameter>] Use alternative settings stored in session for AI preferences. Required? false Position? named Default value False Accept pipeline input? false Aliases Accept wildcard characters? false -ClearSession [<SwitchParameter>] Clear alternative settings stored in session for AI preferences. Required? false Position? named Default value False Accept pipeline input? false Aliases Accept wildcard characters? false -SkipSession [<SwitchParameter>] Store settings only in persistent preferences without affecting session. Required? false Position? named Default value False Accept pipeline input? false Aliases Accept wildcard characters? false -Code [<SwitchParameter>] Opens files in Visual Studio Code when enabled. Required? false Position? named Default value False Accept pipeline input? false Aliases Accept wildcard characters? false -VisualStudio [<SwitchParameter>] Opens files in Visual Studio when enabled. Required? false Position? named Default value False Accept pipeline input? false Aliases Accept wildcard characters? false -KeysToSend <String[]> Array of keystrokes to send after opening files. Required? false Position? named Default value @() Accept pipeline input? false Aliases Accept wildcard characters? false -WhatIf [<SwitchParameter>] Required? false Position? named Default value Accept pipeline input? false Aliases Accept wildcard characters? false -Confirm [<SwitchParameter>] Required? false Position? named Default value Accept pipeline input? false Aliases Accept wildcard characters? false <CommonParameters> This cmdlet supports the common parameters: Verbose, Debug, ErrorAction, ErrorVariable, WarningAction, WarningVariable, OutBuffer, PipelineVariable, and OutVariable. For more information, see about_CommonParameters (https://go.microsoft.com/fwlink/?LinkID=113216). INPUTS OUTPUTS -------------------------- EXAMPLE 1 -------------------------- PS > New-Refactor -Name "UpdateLogging" -PromptKey "LoggingRefactor" ` -SelectionScript "Get-LoggingMethods" -Priority 1 ` -Model "qwen2.5-14b-instruct" -Code -------------------------- EXAMPLE 2 -------------------------- PS > newrefactor UpdateLogging LoggingRefactor -p "Get-LoggingMethods" -c New-Refactor ` -Name "OnlyDocumentation" ` -PromptKey "OnlyDocumentation" ` -SelectionScript "@(@(l .\modules\genx*\**\functions\*.ps1 -pt) + @(l .\scripts\*.ps1 -pt))" ` -SelectionPrompt "" ` -LLMQueryType "" ` -Priority 0 ` -FilesToAdd @() #> # OnlyDocumentation GenXdev.Coding\Remove-Refactor "OnlyDocumentation" -ErrorAction SilentlyContinue $rootPath = GenXdev.FileSystem\Expand-Path "$PSScriptRoot\..\..\..\..\..\" if (-not (GenXdev.Coding\Get-Refactor -Name "OnlyDocumentation" -ErrorAction SilentlyContinue)) { # Create a refactor definition for recently modified files # This refactor will only include files that have been modified in the last 7 days # and will not prompt the user for any input. $null = GenXdev.Coding\New-Refactor ` -Name "OnlyDocumentation" ` -PromptKey "OnlyDocumentation" ` -SelectionScript "`$n = now; @(@(GenXdev.FileSystem\Find-Item '$rootPath\modules\genx*\**\functions\*.ps1' -pt) + @(l '$rootPath\scripts\*.ps1' -pt)) | where-object { (`$n - `$_.LastWriteTime).TotalDays -lt 7 } | Microsoft.PowerShell.Utility\sort-object -property LastWriteTime" ` -AutoAddModifiedFiles ` -Priority 0 ` -FilesToAdd @(@(@(GenXdev.FileSystem\Find-Item "$rootPath\modules\genx*\**\functions\*.ps1" -pt) + @(GenXdev.FileSystem\Find-Item "$rootPath\scripts\*.ps1" -pt)) | Microsoft.PowerShell.Utility\sort-object -property LastWriteTime -Descending) GenXdev.Coding\Get-Refactor -Name "OnlyDocumentation" } # TooManyParameters GenXdev.Coding\Remove-Refactor "TooManyParameters" -ErrorAction SilentlyContinue $rootPath = GenXdev.FileSystem\Expand-Path "$PSScriptRoot\..\..\..\..\..\" if (-not (GenXdev.Coding\Get-Refactor -Name "TooManyParameters" -ErrorAction SilentlyContinue)) { # Create a refactor definition for recently modified files # This refactor will only include files that have been modified in the last 7 days # and will not prompt the user for any input. $null = GenXdev.Coding\New-Refactor ` -Name "TooManyParameters" ` -PromptKey "TooManyParameters" ` -SelectionScript "`GenXdev.Helpers\Get-GenXDevCmdlets | Microsoft.PowerShell.Core\ForEach-Object { try { `$ci = Microsoft.PowerShell.Core\Get-Command -Name `$_.Name; if (`$ci.Parameters.Count -gt 15) { Microsoft.PowerShell.Management\Get-ChildItem (`$_.ScriptFilePath) } } catch {} } | Microsoft.PowerShell.Utility\sort-object -property LastWriteTime" ` -AutoAddModifiedFiles ` -Priority 0 ` -FilesToAdd @(GenXdev.Helpers\Get-GenXDevCmdlets | Microsoft.PowerShell.Core\ForEach-Object { try { $ci = Microsoft.PowerShell.Core\Get-Command -Name $_.Name; if ($ci.Parameters.Count -gt 15) { Microsoft.PowerShell.Management\Get-ChildItem ($_.ScriptFilePath) } } catch {} }) GenXdev.Coding\Get-Refactor -Name "TooManyParameters" } } |