.PHONY: all build clean test proto run-agent run-retriever docker infra-up infra-down lint # Variables PROTO_DIR := pkg/proto GO_OUT := pkg/proto/gen DOCKER_COMPOSE := docker-compose -f deployments/docker/docker-compose.yml # Default target all: proto build # Generate Go code from protobuf definitions proto: @echo "Generating protobuf code..." @mkdir -p $(GO_OUT) protoc --go_out=. --go_opt=paths=source_relative \ --go-grpc_out=. --go-grpc_opt=paths=source_relative \ $(PROTO_DIR)/agent.proto $(PROTO_DIR)/generator.proto $(PROTO_DIR)/retriever.proto protoc --go_out=. --go_opt=paths=source_relative \ --go-grpc_out=. --go-grpc_opt=paths=source_relative \ $(PROTO_DIR)/clara.proto # Build all services build: @echo "Building services..." go build -o bin/agent-server ./cmd/agent-server go build -o bin/retriever-server ./cmd/retriever-server go build -o bin/generator-server ./cmd/generator-server # Clean build artifacts clean: @echo "Cleaning..." rm -rf bin/ rm -rf $(GO_OUT) # Run tests test: @echo "Running tests..." go test -v -race -cover ./... # Run integration tests test-integration: @echo "Running integration tests..." go test -v -tags=integration ./tests/... # Run agent server run-agent: @echo "Starting agent server..." go run ./cmd/agent-server # Run retriever server run-retriever: @echo "Starting retriever server..." go run ./cmd/retriever-server # Run generator server run-generator: @echo "Starting generator server..." go run ./cmd/generator-server # Build Docker images docker: @echo "Building Docker images..." docker build -t amaniquery/agent-server:latest -f deployments/docker/Dockerfile.agent . docker build -t amaniquery/retriever-server:latest -f deployments/docker/Dockerfile.retriever . docker build -t amaniquery/generator-server:latest -f deployments/docker/Dockerfile.generator . # Start infrastructure (Qdrant, Redis, etc.) infra-up: @echo "Starting infrastructure..." $(DOCKER_COMPOSE) up -d qdrant redis # Stop infrastructure infra-down: @echo "Stopping infrastructure..." $(DOCKER_COMPOSE) down # Start all services with Docker Compose up: @echo "Starting all services..." $(DOCKER_COMPOSE) up -d # Stop all services down: @echo "Stopping all services..." $(DOCKER_COMPOSE) down # View logs logs: $(DOCKER_COMPOSE) logs -f # Lint code lint: @echo "Linting..." golangci-lint run ./... # Format code fmt: @echo "Formatting..." go fmt ./... goimports -w . # Download dependencies deps: @echo "Downloading dependencies..." go mod download go mod tidy # Generate mocks for testing mocks: @echo "Generating mocks..." mockgen -source=internal/agent/orchestrator.go -destination=internal/agent/mocks/orchestrator_mock.go mockgen -source=internal/retriever/retriever.go -destination=internal/retriever/mocks/retriever_mock.go # Security scan security: @echo "Running security scan..." gosec ./... trivy fs .