File size: 6,227 Bytes
eb60b6b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
start-milvus:
	docker compose -f src/lib/milvus/docker-compose.yaml up -d

stop-milvus:
	docker compose -f src/lib/milvus/docker-compose.yaml down

delete-milvus-volumes:
	docker compose -f src/lib/milvus/docker-compose.yaml down -v --remove-orphans

start-rabbitmq:
	docker compose -f src/lib/rabbitmq/docker-compose.yaml up -d

stop-rabbitmq:
	docker compose -f src/lib/rabbitmq/docker-compose.yaml down

delete-rabbitmq-volumes:
	docker compose -f src/lib/rabbitmq/docker-compose.yaml down -v --remove-orphans

start-redis:
	docker compose -f src/lib/redis/docker-compose.yaml up -d

stop-redis:
	docker compose -f src/lib/redis/docker-compose.yaml down

delete-redis-volumes:
	docker compose -f src/lib/redis/docker-compose.yaml down -v --remove-orphans


start-neo4j:
	docker compose -f src/lib/neo4j/docker-compose.yaml up -d

stop-neo4j:
	docker compose -f src/lib/neo4j/docker-compose.yaml down

delete-neo4j-volumes:
	docker compose -f src/lib/neo4j/docker-compose.yaml down -v --remove-orphans

build-neo4j-extension:
	docker run --rm -v $(PWD)/src/lib/neo4j:/app -w /app maven:3.9-eclipse-temurin-17 mvn compile

package-neo4j-extension:
	docker run --rm -v $(PWD)/src/lib/neo4j:/app -w /app maven:3.9-eclipse-temurin-17 mvn package -DskipTests

start-mongo:
	docker compose -f src/lib/mongo/docker-compose.yaml up -d

stop-mongo:
	docker compose -f src/lib/mongo/docker-compose.yaml down

delete-mongo-volumes:
	docker compose -f src/lib/mongo/docker-compose.yaml down -v --remove-orphans

start-api:
	ENV=development CONSOLE_ENABLED=true poetry run python -m uvicorn src.services.api.app:app --host 0.0.0.0 --port 8000 --access-log --log-level info --reload --reload-dir src

stop-api:
	pkill -f "uvicorn src.services.api.app"

start-mcp:
	ENV=development poetry run python -m uvicorn src.services.mcp.app:app --host 0.0.0.0 --port 8001 --access-log --log-level info --reload --reload-dir src

MCP_BRIDGE_DIR := mcp-stdio-http-bridge
MCP_BRIDGE_VERSION := $(shell grep '^version = ' $(MCP_BRIDGE_DIR)/Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/')
MCP_BRIDGE_TAG := mcp-bridge-v$(MCP_BRIDGE_VERSION)
MCP_BRIDGE_TOOLCHAIN := $(shell grep 'channel = ' $(MCP_BRIDGE_DIR)/rust-toolchain.toml | sed 's/.*"\(.*\)"/\1/')

build-mcp-bridge:
	cd $(MCP_BRIDGE_DIR) && cargo build --release

install-mcp-bridge-targets:
	rustup target add x86_64-apple-darwin --toolchain $(MCP_BRIDGE_TOOLCHAIN)

build-mcp-bridge-x86: install-mcp-bridge-targets
	cd $(MCP_BRIDGE_DIR) && cargo build --release --target x86_64-apple-darwin

build-mcp-bridge-all: build-mcp-bridge build-mcp-bridge-x86

push-mcp-bridge-packages: build-mcp-bridge-all
	@mkdir -p $(MCP_BRIDGE_DIR)/dist && \
	cp $(MCP_BRIDGE_DIR)/target/release/mcp-stdio-http-bridge $(MCP_BRIDGE_DIR)/dist/mcp-stdio-http-bridge-aarch64-apple-darwin && \
	cp $(MCP_BRIDGE_DIR)/target/x86_64-apple-darwin/release/mcp-stdio-http-bridge $(MCP_BRIDGE_DIR)/dist/mcp-stdio-http-bridge-x86_64-apple-darwin && \
	gh release create $(MCP_BRIDGE_TAG) \
		$(MCP_BRIDGE_DIR)/dist/mcp-stdio-http-bridge-aarch64-apple-darwin \
		$(MCP_BRIDGE_DIR)/dist/mcp-stdio-http-bridge-x86_64-apple-darwin \
		--title "MCP stdio-http bridge $(MCP_BRIDGE_VERSION)" \
		--notes "Binary builds for macOS (Apple Silicon and Intel)."

start-nginx:
	docker compose -f src/services/webserver/docker-compose.yaml up -d --force-recreate

stop-mcp:
	pkill -f "uvicorn src.services.mcp.app"

DEBUG_ENVS := LANGCHAIN_DEBUG="true" LANGCHAIN_VERBOSE="true" DEBUG="true"

start-all:
	@if [ "$(filter debug,$(MAKECMDGOALS))" = "debug" ] || [ "$$DEBUG" = "true" ]; then \
		echo "DEBUG mode enabled"; \
		$(MAKE) start-milvus DEBUG=true & \
		$(MAKE) start-rabbitmq DEBUG=true & \
		$(MAKE) start-redis DEBUG=true & \
		$(MAKE) start-neo4j DEBUG=true & \
		$(MAKE) start-mongo DEBUG=true & \
		$(MAKE) start-mcp DEBUG=true & \
		ENV="development" $(MAKE) start-api DEBUG=true & \
		bash -c "export $(DEBUG_ENVS) ENV="development" && poetry run celery -A src.workers.app worker --loglevel=info --pool=threads"; \
	else \
		$(MAKE) start-milvus & \
		$(MAKE) start-rabbitmq & \
		$(MAKE) start-redis & \
		$(MAKE) start-neo4j & \
		$(MAKE) start-mongo & \
		$(MAKE) start-mcp & \
		ENV="development" $(MAKE) start-api & \
		ENV="development" poetry run celery -A src.workers.app worker --loglevel=info --pool=threads; \
	fi

debug:
	@:

stop-all:
	make stop-milvus
	make stop-rabbitmq
	make stop-redis
	make stop-neo4j
	make stop-mongo
	make stop-api
	make stop-mcp
	pkill -f celery

clear-all-volumes:
	make delete-milvus-volumes
	make delete-rabbitmq-volumes
	make delete-redis-volumes
	make delete-neo4j-volumes
	make delete-mongo-volumes

VERSION := $(shell grep '^version = ' pyproject.toml | sed 's/version = "\(.*\)"/\1/')
container-build:
	docker build --no-cache --platform linux/amd64 -t ghcr.io/lumen-labs/brainapi:v$(VERSION) ./
	docker tag ghcr.io/lumen-labs/brainapi:v$(VERSION) ghcr.io/lumen-labs/brainapi:latest

container-push:
	docker push ghcr.io/lumen-labs/brainapi:v$(VERSION)
	docker push ghcr.io/lumen-labs/brainapi:latest

container-release:
	BUILD_DATE=$$(date -u +'%Y-%m-%dT%H:%M:%SZ')
	BUILD_SHA=$$(git rev-parse HEAD || echo "unknown")
	CACHE_BUST=$$(date +%s)
	docker build --no-cache \
		--build-arg BUILD_DATE="$$BUILD_DATE" \
		--build-arg BUILD_SHA="$$BUILD_SHA" \
		--build-arg CACHE_BUST="$$CACHE_BUST" \
		--platform linux/amd64 \
		--label org.opencontainers.image.source="https://github.com/lumen-labs/brainapi2" \
		-t ghcr.io/lumen-labs/brainapi:v$(VERSION) ./
	docker tag ghcr.io/lumen-labs/brainapi:v$(VERSION) ghcr.io/lumen-labs/brainapi:latest
	git tag -s v$(VERSION) -m "Release v$(VERSION)"
	docker push ghcr.io/lumen-labs/brainapi:v$(VERSION)
	docker push ghcr.io/lumen-labs/brainapi:latest
	git push origin v$(VERSION)


v-patch:
	poetry version patch

v-minor:
	poetry version minor

v-major:
	poetry version major

install-base:
	poetry install

install-extras:
	poetry run python scripts/install_extras.py

install-extras-all:
	poetry run python scripts/install_extras.py --all

check-extras:
	poetry run python scripts/install_extras.py --check

build-console:
	cd console && npm install && npm run build

start-console-dev:
	cd console && npm install && npm run dev