# Copyright (c) 2026 Progralink. Licensed under the DevCage License — see LICENSE.
#
# Constants.ps1 — Script-level constants for the DevCage PowerShell launcher.
# Dot-sourced by devcage.ps1. No dependencies.

# ── Language selection ────────────────────────────────────────────
$script:AllLangs = @("java", "php", "go", "rust", "cpp", "python", "javascript", "dotnet")

# ── API key variable names ─────────────────────────────────────────
# Core: passed to docker run for entrypoint (agent lazy-install)
$script:ApiKeyVarsCore = @(
    "ANTHROPIC_API_KEY", "GEMINI_API_KEY", "GOOGLE_API_KEY", "OPENAI_API_KEY",
    "DEEPSEEK_API_KEY", "OPENROUTER_API_KEY", "COPILOT_GITHUB_TOKEN"
)
# Exec: all API keys + git tokens for docker exec (per-session)
$script:ApiKeyVarsExec = @(
    "ANTHROPIC_API_KEY", "GEMINI_API_KEY", "GOOGLE_API_KEY", "OPENAI_API_KEY",
    "DEEPSEEK_API_KEY", "OPENROUTER_API_KEY", "COPILOT_GITHUB_TOKEN",
    "GH_TOKEN", "GITHUB_TOKEN"
)

# ── Blocked volume destinations ───────────────────────────────────
$script:BlockedDestinations = @(
    "/", "/home", "/home/devcage", "/root", "/workspace", "/etc", "/proc", "/sys", "/dev",
    "/bin", "/sbin", "/usr", "/lib", "/lib64", "/tmp", "/var", "/run",
    "/certs", "/cache", "/sandbox-init.d", "/sandbox-crontab.d", "/sandbox-agents.d",
    "/agent-config", "/opt", "/home/linuxbrew"
)

# ── Blocked env var names for project-level .env ─────────────────
$script:EnvBlockedNames = @(
    'PATH', 'LD_PRELOAD', 'LD_LIBRARY_PATH', 'HOME', 'USER', 'SHELL',
    'PIP_REQUIRE_HASHES', 'PIP_BREAK_SYSTEM_PACKAGES', 'BASH_ENV', 'ENV',
    'NODE_OPTIONS', 'PYTHONPATH', 'PYTHONSTARTUP', 'RUBYOPT', 'PERL5OPT',
    'JAVA_TOOL_OPTIONS', 'SDKMAN_DIR', 'DIND_IMAGE', 'DEVCAGE_IMAGE',
    'SSL_CERT_DIR', 'SSL_CERT_FILE', 'CURL_CA_BUNDLE', 'REQUESTS_CA_BUNDLE',
    'NODE_EXTRA_CA_CERTS', 'HTTP_PROXY', 'HTTPS_PROXY', 'ALL_PROXY',
    'NO_PROXY', 'FTP_PROXY', 'TERM'
)
$script:EnvBlockedPrefixes = @(
    'SANDBOX_', 'HOST_', 'AGENT_CONFIG', 'DOCKER_', 'COMPOSE_',
    'DIND_', 'DEVCAGE_', 'GIT_'
)

# ── Interactive command names (use -it; non-interactive uses -i only) ─
$script:InteractiveCommands = @(
    "bash", "sh", "zsh", "fish",
    "claude", "claude-code", "gemini", "codex", "aider", "copilot", "goose",
    "claude-yolo", "gemini-yolo", "codex-yolo", "aider-yolo", "copilot-yolo", "goose-yolo"
)
