Ctrl K
ComunidadGuías…

Makefile

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
.PHONY: dev backend frontend desktop desktop-dev install stop mocks test fmt hooks remote-claude remote-agy plugin-deepseek

remote-claude:
	claude --name agentrq-code --autocompact 400k --dangerously-load-development-channels server:agentrq-0ZzhYQG2qtl

remote-agy:
	npx -y @agentrq/acp-gateway@latest --model gemini-3.8-flash-high --agent antigravity-acp

# Default command to start everything in development mode
dev:
	@echo "Starting AgentRQ Development Environment..."
	@make -j 2 backend frontend

# Start the backend server
backend:
	@echo "Starting Backend..."
	-@lsof -ti:3000,3001 | xargs kill -9 2>/dev/null || true
	@set -eu; cd backend/cmd/server; mkdir -p _storage; \
		if [ "$${ENV:-development}" = development ] && [ -z "$${AGENTRQ_AUTH_JWT_SECRET:-}" ]; then \
			if [ ! -s .env.jwt-secret ]; then \
				(umask 077 && openssl rand -base64 32 > .env.jwt-secret); \
			fi; \
			chmod 600 .env.jwt-secret; \
			AGENTRQ_AUTH_JWT_SECRET="$$(cat .env.jwt-secret)"; \
			export AGENTRQ_AUTH_JWT_SECRET; \
		fi; \
		go build -o agentrq_binary main.go; ./agentrq_binary

# Start the frontend dev server
frontend:
	@echo "Waiting for backend on port 3000..."
	@until curl -s http://localhost:3000 > /dev/null; do sleep 1; done
	@echo "Starting Frontend..."
	-@lsof -ti:5173 | xargs kill -9 2>/dev/null || true
	@cd frontend && npm run dev

# Stop all backend and frontend processes
stop:
	@echo "Stopping all AgentRQ processes..."
	-@lsof -ti:3000,3001 | xargs kill -9 2>/dev/null || true
	-@lsof -ti:5173 | xargs kill -9 2>/dev/null || true
	-@pkill -f "go run main.go" || true
	@# Every vite but the Tauri app's (agentrq-desktop's src/tauri/), which `make stop` did not start: `tauri dev`
	@# goes down with it. Its npm and sh wrappers name no package, so only the
	@# node processes are killed, and their wrappers exit after them.
	-@for p in $$(pgrep -f node_modules/.bin/vite); do ps -o args= -p $$p | grep -q src/tauri/ || kill $$p 2>/dev/null; done; true
	-@pkill -f "agentrq_binary" || true
	-@lsof -ti:5174 | xargs kill -9 2>/dev/null || true
	-@pkill -f "desktop/node_modules/electron" || true
	@echo "Cleanup complete."

# Run the desktop app against a local server.
# It expects a backend on :3000 — `make dev` in another terminal gives you one.
# Point it elsewhere with AGENTRQ_SERVER_URL=https://... make desktop-dev
desktop-dev:
	@echo "Starting Desktop App..."
	@cd desktop && npm run dev

# Build installers into desktop/release/. Publishes nothing.
desktop:
	@echo "Building Desktop App..."
	@cd desktop && npm run package

# Install all dependencies for the whole repo
install:
	@echo "Installing Dependencies..."
	@cd backend && go mod download
	@cd frontend && npm install
	@# The desktop renderer is built from frontend/src, so the frontend's
	@# dependencies have to be in place before this.
	@cd desktop && npm install
	@make hooks

# Point git at the tracked hooks in .githooks so every clone shares them
# (.git/hooks itself is not version-controlled).
#
#   pre-commit  formats staged Go files
#   pre-push    refuses a tree that has lost its copyright notice
hooks:
	@git config core.hooksPath .githooks
	@chmod +x .githooks/* 2>/dev/null || true
	@echo "Git hooks installed (core.hooksPath -> .githooks)"

# Format all Go sources. The pre-commit hook formats only staged files; this is
# the whole-tree version for cleaning up in one deliberate pass.
fmt:
	@echo "Formatting Go sources..."
	@gofmt -w backend/

mocks:
	@echo "Generating Mocks..."
	@mkdir -p backend/internal/service/mocks/repository \
		backend/internal/service/mocks/memq \
		backend/internal/service/mocks/smtp \
		backend/internal/service/mocks/idgen \
		backend/internal/service/mocks/scheduler \
		backend/internal/service/mocks/telemetryaggregator \
		backend/internal/service/mocks/image \
		backend/internal/service/mocks/storage \
		backend/internal/service/mocks/auth \
		backend/internal/service/mocks/dbconn \
		backend/internal/service/mocks/pubsub \
		backend/internal/service/mocks/config \
		backend/internal/service/mocks/s3
	@cd backend && \
		mockgen -source=internal/repository/base/repository.go -destination=internal/service/mocks/repository/mock_repository.go -package=repository && \
		mockgen -source=internal/service/memq/memq.go -destination=internal/service/mocks/memq/mock_memq.go -package=memq && \
		mockgen -source=internal/service/smtp/smtp.go -destination=internal/service/mocks/smtp/mock_smtp.go -package=smtp && \
		mockgen -source=internal/service/idgen/idgen.go -destination=internal/service/mocks/idgen/mock_idgen.go -package=idgen && \
		mockgen -source=internal/service/scheduler/scheduler.go -destination=internal/service/mocks/scheduler/mock_scheduler.go -package=scheduler && \
		mockgen -source=internal/service/telemetryaggregator/telemetryaggregator.go -destination=internal/service/mocks/telemetryaggregator/mock_telemetryaggregator.go -package=telemetryaggregator && \
		mockgen -source=internal/service/image/image.go -destination=internal/service/mocks/image/mock_image.go -package=image && \
		mockgen -source=internal/service/storage/storage.go -destination=internal/service/mocks/storage/mock_storage.go -package=storage && \
		mockgen -source=internal/service/auth/auth.go -destination=internal/service/mocks/auth/mock_auth.go -package=auth && \
		mockgen -source=internal/service/auth/jwt.go -destination=internal/service/mocks/auth/mock_jwt.go -package=auth && \
		mockgen -source=internal/repository/dbconn/dbconn.go -destination=internal/service/mocks/dbconn/mock_dbconn.go -package=dbconn && \
		mockgen -source=internal/service/pubsub/pubsub.go -destination=internal/service/mocks/pubsub/mock_pubsub.go -package=pubsub && \
		mockgen -source=internal/service/config/config.go -destination=internal/service/mocks/config/mock_config.go -package=config && \
		mockgen -source=internal/service/s3/s3.go -destination=internal/service/mocks/s3/mock_s3.go -package=s3

test: mocks
	@cd backend && go test ./internal/service/... ./internal/controller/...

# Typecheck, test, and build the DeepSeek Harness plugin bundle.
# Harness packages declare peers that pnpm resolves from a dsh profile, so a
# standalone npm install needs --legacy-peer-deps.
plugin-deepseek:
	@echo "Building @agentrq/dsh-plugin-agentrq..."
	@cd plugins/deepseek-harness && \
		npm install --legacy-peer-deps && \
		npm run typecheck && \
		npm test && \
		npm run build