Private/Get-VolumeArgs.ps1

function Get-VolumeArgs {
    [CmdletBinding()]
    param(
        [Parameter()]
        [string[]]$ImageVolumes = @(),

        [Parameter()]
        [string[]]$ProjectVolumes = @()
    )

    $allVolumes = @()
    if ($ImageVolumes.Count -gt 0) {
        $allVolumes += $ImageVolumes
    }
    if ($ProjectVolumes.Count -gt 0) {
        $allVolumes += $ProjectVolumes
    }

    if ($allVolumes.Count -eq 0) {
        return @()
    }

    $dockerArgs = @()

    # Expand environment variables and apply default read-only mode once
    $expandedVolumes = foreach ($vol in $allVolumes) {
        $expanded = [Environment]::ExpandEnvironmentVariables($vol)
        Set-VolumeDefaultMode $expanded
    }

    # Mount each volume
    foreach ($vol in $expandedVolumes) {
        $dockerArgs += '-v'
        $dockerArgs += $vol
    }

    # Pass volume descriptions so the container context file can list them
    $dockerArgs += '-e'
    $dockerArgs += "DCLAUDE_VOLUMES=$($expandedVolumes -join '|')"

    return $dockerArgs
}