# mise tool configuration
# https://mise.jdx.dev/

[tools]
# Python 3.11 is required for embedded FreeCAD mode - FreeCAD bundles libpython3.11
# Using a different Python version causes ABI incompatibility crashes
python = "3.11"
# Pin tool versions for reproducible CI builds
# Update these periodically with: mise upgrade
uv = "0.9"              # uv package manager
just = "1.43"           # task runner
pre-commit = "4.5"      # pre-commit hooks
github-cli = "2.74"     # GitHub CLI for PR/issue management

# Security and code quality tools
trivy = "0.62"          # container vulnerability scanner
gitleaks = "8.30"       # secrets scanner
actionlint = "1.7"      # GitHub Actions linter
# Note: hadolint and shellcheck are managed by their pre-commit repos
# (hadolint-py and shellcheck-py auto-download binaries)

# Markdown tools
markdownlint-cli2 = "0.20"  # markdown linter

[env]
# FreeCAD connection mode:
#   "xmlrpc"   - XML-RPC protocol (recommended, works on all platforms)
#   "socket"   - JSON-RPC socket protocol (alternative)
#   "embedded" - In-process FreeCAD (Linux only, crashes on macOS/Windows)
FREECAD_MODE = "xmlrpc"

# Path to FreeCAD's lib directory (for embedded mode only)
# macOS: "/Applications/FreeCAD.app/Contents/Resources/lib"
# Linux: "/usr/lib/freecad/lib"
# Windows: "C:/Program Files/FreeCAD/lib"
# FREECAD_PATH = ""

# Connection settings (for xmlrpc and socket modes)
FREECAD_SOCKET_HOST = "localhost"
FREECAD_SOCKET_PORT = "9876"
FREECAD_XMLRPC_PORT = "9875"

# Execution limits
FREECAD_TIMEOUT_MS = "30000"
FREECAD_MAX_OUTPUT_SIZE = "1000000"

[settings]
experimental = true
