Files
lovdata-chat/Makefile
Torbjørn Lindahl 9683cf280b fix: add SSE streaming proxy and robust make try startup
The SSE proxy was buffering the entire response body with a 30s read
timeout, causing 504s on the OpenCode /global/event stream. Add a
streaming path that detects SSE requests (by Accept header or /event
path) and returns a StreamingResponse with no read timeout.

Also fix the make try target to poll the health endpoint for Docker
readiness and wait for the container to reach running status before
opening the browser.
2026-02-16 00:38:57 +01:00

59 lines
1.8 KiB
Makefile

.PHONY: build run clean up down session try logs
IMAGE_NAME := opencode
IMAGE_TAG := latest
MCP_SERVER := http://localhost:8080
build:
docker build --build-arg MCP_SERVER=$(MCP_SERVER) -t $(IMAGE_NAME):$(IMAGE_TAG) .
run:
docker run -it --rm $(IMAGE_NAME):$(IMAGE_TAG) bash
clean:
docker rmi $(IMAGE_NAME):$(IMAGE_TAG) || true
# Start the full stack (session-manager, docker-daemon, caddy)
up:
docker-compose up -d --build
@echo "Stack started. Create a session with: make session"
# Stop the stack
down:
docker-compose down
# View logs
logs:
docker-compose logs -f session-manager
# Create a new session and display its info
session:
@echo "Creating new session..."
@curl -s -X POST http://localhost:8080/api/sessions | jq .
# Try the web interface - starts stack, creates a session and opens it
try: up
@echo "Waiting for services to be ready (Docker daemon can take ~30s)..."
@for i in $$(seq 1 60); do \
STATUS=$$(curl -sf http://localhost:8080/api/health 2>/dev/null | jq -r '.docker // false') && \
[ "$$STATUS" = "true" ] && break; \
printf '.'; \
sleep 1; \
done
@echo ""
@echo "Creating session..."
@SESSION_ID=$$(curl -s -X POST http://localhost:8080/api/sessions | jq -r '.session_id') && \
echo "Session $$SESSION_ID created, waiting for container to start..." && \
for i in $$(seq 1 30); do \
S=$$(curl -sf http://localhost:8080/api/sessions/$$SESSION_ID 2>/dev/null | jq -r '.status // "unknown"') && \
[ "$$S" = "running" ] && break; \
[ "$$S" = "error" ] && echo "Container failed to start" && exit 1; \
printf '.'; \
sleep 1; \
done && \
echo "" && \
echo "Opening http://localhost:8080/session/$$SESSION_ID" && \
(xdg-open "http://localhost:8080/session/$$SESSION_ID" 2>/dev/null || \
open "http://localhost:8080/session/$$SESSION_ID" 2>/dev/null || \
echo "Visit: http://localhost:8080/session/$$SESSION_ID")