# Makefile pour dev container AI + MCP bootstrap

# Variables
PROJECT_DIR := $(shell pwd)
CONTAINER_NAME := ai-dev-container
WORKSPACE := /workspace
MCP_LOG := $(WORKSPACE)/.ai_index/mcp.log

# --- Dev Container Management ---

# Build the container
build:
	docker build -t $(CONTAINER_NAME) .

# Run interactive container with mounted project
run:
	docker run -v $(PROJECT_DIR):$(WORKSPACE) -it --rm $(CONTAINER_NAME)

# Run container with MCP server in background
run-mcp:
	docker run -v $(PROJECT_DIR):$(WORKSPACE) -it --rm $(CONTAINER_NAME) bash

# --- MCP / Index Management ---

# Initialize .ai_index
init-index:
	@echo "[MAKE] Initializing .ai_index..."
	mkdir -p $(PROJECT_DIR)/.ai_index/ast
	mkdir -p $(PROJECT_DIR)/.ai_index/embeddings
	@if [ ! -f $(PROJECT_DIR)/.ai_index/graph.db ]; then \
		sqlite3 $(PROJECT_DIR)/.ai_index/graph.db "VACUUM;"; \
	fi

# Run MCP tool (list imports)
mcp-list:
	@echo "[MAKE] Running MCP list_imports.py..."
	python3 $(PROJECT_DIR)/opt/dev-tools/list_imports.py --project $(WORKSPACE)

# Update embeddings (example)
embeddings:
	@echo "[MAKE] Generating embeddings..."
	python3 $(PROJECT_DIR)/opt/dev-tools/generate_embeddings.py --project $(WORKSPACE)

# Update graph (example)
update-graph:
	@echo "[MAKE] Updating dependency graph..."
	python3 $(PROJECT_DIR)/opt/dev-tools/update_graph.py --project $(WORKSPACE)

# Clean logs and temporary files
clean:
	@echo "[MAKE] Cleaning .ai_index..."
	rm -f $(PROJECT_DIR)/.ai_index/*.log
	rm -rf $(PROJECT_DIR)/.ai_index/ast/*
	rm -rf $(PROJECT_DIR)/.ai_index/embeddings/*

# Restart MCP server inside container
restart-mcp:
	docker exec -it $(CONTAINER_NAME) bash -c "\
		pkill -f mcp-server; \
		/opt/bin/mcp-server --project $(WORKSPACE) > $(MCP_LOG) 2>&1 & \
	"

# --- Bootstrap for new project ---
# Build container, init index
bootstrap: build init-index
	@echo "[MAKE] Bootstrap complete. Run 'make run' to start the container."
