#!/bin/sh
# Neocortex - Cursor IDE Install Adapter (Thin Client)
# Simplified installer for npm tarball mode (targets-stubs only)

# Additive user/global JSON merge for MCP config. Preserves user-defined
# servers and replaces only Neocortex-managed baseline servers.
_merge_cursor_mcp() {
    local stub_file="$1"
    local dest_file="$2"

    if command -v node >/dev/null 2>&1; then
        node "$(dirname "$stub_file")/../lib/mcp-merge.js" json "$stub_file" "$dest_file" mcpServers CURSOR
        return $?
    fi

    echo "[CURSOR] WARN: node not found; leaving existing $dest_file untouched"
    echo "[CURSOR] WARN: Stub available at: $stub_file"
    return 0
}

install_cursor() {
    local source_dir="${1:?SOURCE_DIR required}"
    local dest_dir="${2:?DEST_DIR required}"
    local cursor_target="$source_dir/targets-stubs/cursor"

    if [ ! -d "$cursor_target" ]; then
        echo "[CURSOR] ERROR: Stub directory not found: $cursor_target" >&2
        return 1
    fi

    echo "[CURSOR] Installing Neocortex for Cursor IDE (thin-client mode)..."

    # Create destination directories
    mkdir -p "$dest_dir/.cursor/agents"

    # 1. Copy agent stub
    if [ -f "$cursor_target/agent.md" ]; then
        cp "$cursor_target/agent.md" "$dest_dir/.cursor/agents/neocortex.md"
        echo "[CURSOR] Installed agent stub: .cursor/agents/neocortex.md"
    fi

    # 2. User-level additive merge MCP config (preserves user-configured servers)
    if [ -f "$cursor_target/mcp.json" ]; then
        _merge_cursor_mcp "$cursor_target/mcp.json" "${CURSOR_HOME:-$HOME/.cursor}/mcp.json" || true
    fi

    echo "[CURSOR] Thin-client installation complete!"
    echo "[CURSOR] Content delivered by remote server. Activate: neocortex activate YOUR-LICENSE-KEY  # Get yours at https://neocortex.sh/portal/login"
    return 0
}
