config/domains/development.psd1

@{
    # ===================================================================
    # DEVELOPMENT - Development Tools and Git Automation
    # ===================================================================
    Development              = @{
        # Git automation
        GitAutomation   = @{
            Enabled           = $true
            DefaultBranch     = 'main'
            AutoCommit        = $false
            AutoPR            = $false
            SignCommits       = $false

            # Commit conventions
            CommitConventions = @{
                Format            = 'conventional'
                SignOff           = $true
                IssueReferences   = $true
                Scopes            = @('core', 'orchestration', 'infrastructure', 'tests', 'config', 'domains', 'ai', 'ui', 'automation')
                MaxSubjectLength  = 72
                MaxBodyLineLength = 100
            }

            # Branch naming
            BranchNaming      = @{
                Pattern   = '{type}/{issue-number}-{description}'
                Types     = @('feature', 'fix', 'docs', 'test', 'refactor', 'chore')
                MaxLength = 63
            }
        }

        # AI assistance
        AIAgenticCoding = @{
            Enabled            = $true
            Provider           = 'auto'
            ValidationRequired = $true
            AutoTestGeneration = $true

            # Code review settings
            CodeReview         = @{
                PSScriptAnalyzer = $true
                DependencyCheck  = $true
                ComplexityCheck  = $true
                SecurityScan     = $true
            }

            # Guardrails
            Guardrails         = @{
                RequireDocumentation = $true
                RequireTests         = $true
                RequireApproval      = $true
                MaxFilesPerCommit    = 10
                MaxLinesPerFile      = 500
                AllowedFileTypes     = @('.ps1', '.psm1', '.psd1', '.json', '.md', '.yml', '.yaml')
                BlockPatterns        = @('password', 'secret', 'key', 'token')
            }
        }

        # Code quality
        CodeQuality     = @{
            EnforceCodingStandards  = $true
            StrictMode              = 'Latest'
            MaxCyclomaticComplexity = 10
            MaxFunctionLength       = 100
            RequireCommentBasedHelp = $true
            RequireTypeDeclarations = $false
        }
    }

    Features = @{
        # Development tools
        Development    = @{
            Node   = @{
                Enabled       = $true  # Enabled by default for Standard+ profiles
                Version       = 'latest-v20.x'
                InstallScript = '0201'
                Platforms     = @('Windows', 'Linux', 'macOS')
                Configuration = @{
                    InstallNpm     = $true
                    InstallYarn    = $true
                    InstallPnpm    = $false
                    GlobalPackages = @('yarn', 'vite', 'nodemon', '@types/node')
                    PackageManager = 'auto'  # auto, winget, chocolatey, apt, yum, brew
                }
                Installer     = @{
                    Windows = 'https://nodejs.org/dist/latest-v20.x/node-v20-x64.msi'
                    Linux   = 'package-manager'
                    macOS   = 'package-manager'
                }
            }
            Python = @{
                Enabled       = $false
                Version       = '3.12+'
                InstallScript = '0206'
                Platforms     = @('Windows', 'Linux', 'macOS')
                Configuration = @{
                    InstallPip       = $true
                    InstallPoetry    = $false
                    CreateVirtualEnv = $true
                    DefaultPackages  = @('pip', 'setuptools', 'wheel')
                }
            }
            VSCode = @{
                Enabled       = $false
                InstallScript = '0210'
                Platforms     = @('Windows', 'Linux', 'macOS')
                Configuration = @{
                    Extensions = @(
                        'ms-vscode.powershell'
                        'ms-azuretools.vscode-docker'
                        'github.copilot'
                        'github.copilot-chat'
                        'ms-python.python'
                        'ms-vscode.vscode-json'
                        'ms-vsliveshare.vsliveshare'
                        'eamodio.gitlens'
                    )
                    Settings   = @{
                        AutoSave     = 'afterDelay'
                        FormatOnSave = $true
                        TabSize      = 4
                    }
                }
            }
            GitHubCLI = @{
                Enabled = $false
                Version = 'latest'
                InstallScript = '0211'
                Platforms = @('Windows', 'Linux', 'macOS')
                Configuration = @{
                    AuthMethod = 'browser'  # browser, token
                    DefaultEditor = 'vim'
                    Protocol = 'https'
                }
            }
            Go = @{
                Enabled = $false
                Version = '1.21+'
                InstallScript = '0212'
                Platforms = @('Windows', 'Linux', 'macOS')
                Configuration = @{
                    GOPATH = '$HOME/go'
                    InstallTools = @('gopls', 'golangci-lint')
                }
            }
            Docker = @{
                Enabled           = $false
                InstallScript     = '0208'
                Platforms         = @('Windows', 'Linux', 'macOS')
                RequiresElevation = $true
                Configuration     = @{
                    StartOnBoot = $true
                    WSL2Backend = $true  # Windows only
                    Resources   = @{
                        Memory = '4GB'
                        CPUs   = 2
                        Disk   = '60GB'
                    }
                }
            }
        }

        # Cloud and DevOps tools
        Cloud          = @{
            GitHubCLI = @{
                Enabled       = $true  # Required for git automation
                InstallScript = '0207'  # Integrated with Git installation
                Platforms     = @('Windows', 'Linux', 'macOS')
                Configuration = @{
                    Authenticate = $false  # Manual auth required
                    Editor       = 'code'
                    GitProtocol  = 'https'
                }
                Installer     = @{
                    Windows = 'https://github.com/cli/cli/releases/download/v2.67.0/gh_2.67.0_windows_amd64.msi'
                    Linux   = 'package-manager'
                    macOS   = 'package-manager'
                }
            }
            AzureCLI  = @{
                Enabled       = $false
                InstallScript = '0212'
                Platforms     = @('Windows', 'Linux', 'macOS')
            }
            AWSCLI    = @{
                Enabled       = $false
                InstallScript = '0213'
                Platforms     = @('Windows', 'Linux', 'macOS')
            }
        }

        # Additional Development Tools
        DevTools       = @{
            Sysinternals = @{
                Enabled       = $false
                InstallScript = '0205'
                Platforms     = @('Windows')
                Description   = 'Windows Sysinternals Suite'
            }
            SevenZip     = @{
                Enabled       = $false
                InstallScript = '0209'
                Platforms     = @('Windows')
                Description   = 'File compression utility'
            }
            VSBuildTools = @{
                Enabled           = $false
                InstallScript     = '0211'
                Platforms         = @('Windows')
                Description       = 'Visual Studio Build Tools'
                RequiresElevation = $true
            }
            Packer       = @{
                Enabled       = $false
                InstallScript = '0214'
                Platforms     = @('Windows', 'Linux', 'macOS')
                Description   = 'HashiCorp Packer for image building'
            }
            Chocolatey   = @{
                Enabled           = $false
                InstallScript     = '0215'
                Platforms         = @('Windows')
                Description       = 'Windows package manager'
                RequiresElevation = $true
            }
            Poetry       = @{
                Enabled       = $false
                InstallScript = '0204'
                Platforms     = @('Windows', 'Linux', 'macOS')
                Description   = 'Python dependency management'
            }
        }
    }
}