#!/bin/bash
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
INSTALL_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"

# Load .env
ENV_FILE="$INSTALL_DIR/.codelin/.env"
[ -f "$ENV_FILE" ] && while IFS= read -r line; do
    [[ "$line" =~ ^[[:space:]]*# ]] || [[ -z "${line// }" ]] && continue
    [[ "$line" =~ ^[[:space:]]*([A-Za-z_][A-Za-z0-9_]*)= ]] && export "$line"
done < "$ENV_FILE"
# Set library path
[[ "$OSTYPE" == "darwin"* ]] && export DYLD_LIBRARY_PATH="$INSTALL_DIR/lib:$DYLD_LIBRARY_PATH"
[[ "$OSTYPE" == "linux-gnu"* ]] && export LD_LIBRARY_PATH="$INSTALL_DIR/lib:$LD_LIBRARY_PATH"
# Allow overrides while providing safe defaults aligned with official guidance.
: "${CJ_HEAP_SIZE:=4096MB}"           # Recommended by docs for large projects
: "${CJ_CONTEXT_CACHE_LIMIT:=35}"     # Matches MemoryConfig auto tier for >=512MB
: "${CJ_GC_THRESHOLD:=204800KB}"      # 200MB GC watermark to curb thrash
: "${CJ_HEAP_GROWTH:=0.20}"           # Slightly above default 0.15 for fewer GCs
: "${CJ_HEAP_UTILIZATION:=0.80}"      # Suggested default from docs
: "${CJ_HEAP_DUMP_ON_OOM:=on}"        # Enable heap snapshot on crash for diagnostics

export cjHeapSize="${CJ_HEAP_SIZE}"
export cjGCThreshold="${CJ_GC_THRESHOLD}"
export cjHeapGrowth="${CJ_HEAP_GROWTH}"
export cjHeapUtilization="${CJ_HEAP_UTILIZATION}"
export cjHeapDumpOnOOM="${CJ_HEAP_DUMP_ON_OOM}"
export cjHeapDumpLog="${HEAP_DUMP_DIR}"
export CODELIN_CONTEXT_CACHE_LIMIT="${CJ_CONTEXT_CACHE_LIMIT}"
exec "$INSTALL_DIR/bin/codelinx" "$@"
