Files
CHORUS/Makefile
anthonyrawlins 007aeb149a Replace all Printf logging with structured zerolog in runtime files
Migrates CHORUS logging to 100% structured JSON format with ISO 8601 timestamps
for all runtime-critical subsystems.

Files modified:
- internal/runtime/shared.go: SimpleTaskTracker task completion logging
- api/http_server.go: HTTP server, council opportunity, and status logging
- pubsub/pubsub.go: PubSub initialization, topic management, and message handlers
- discovery/mdns.go: mDNS peer discovery and connection logging

All Printf calls replaced with structured zerolog logging using:
- .Info() for informational messages
- .Warn() for warnings and errors
- .Debug() for verbose debug output
- Structured fields: peer_id, topic_name, council_id, etc.

Version bumped to 0.5.40

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-19 17:04:27 +11:00

150 lines
5.0 KiB
Makefile

# CHORUS Multi-Binary Makefile
# Builds chorus-agent, chorus-hap, and seqthink-wrapper binaries
# Build configuration
BINARY_NAME_AGENT = chorus-agent
BINARY_NAME_HAP = chorus-hap
BINARY_NAME_COMPAT = chorus
BINARY_NAME_SEQTHINK = seqthink-wrapper
VERSION ?= 0.5.40
COMMIT_HASH ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
BUILD_DATE ?= $(shell date -u '+%Y-%m-%d_%H:%M:%S')
# Go build flags
LDFLAGS = -ldflags "-X main.version=$(VERSION) -X main.commitHash=$(COMMIT_HASH) -X main.buildDate=$(BUILD_DATE)"
BUILD_FLAGS = -v $(LDFLAGS)
# Directories
BUILD_DIR = build
CMD_DIR = cmd
# Default target
.PHONY: all
all: clean build
# Build all binaries (including compatibility wrapper)
.PHONY: build
build: build-agent build-hap build-compat
# Build autonomous agent binary
.PHONY: build-agent
build-agent:
@echo "🤖 Building CHORUS autonomous agent..."
@mkdir -p $(BUILD_DIR)
GOWORK=off go build -mod=mod $(BUILD_FLAGS) -o $(BUILD_DIR)/$(BINARY_NAME_AGENT) ./$(CMD_DIR)/agent
@echo "✅ Agent binary built: $(BUILD_DIR)/$(BINARY_NAME_AGENT)"
# Build human agent portal binary
.PHONY: build-hap
build-hap:
@echo "👤 Building CHORUS human agent portal..."
@mkdir -p $(BUILD_DIR)
GOWORK=off go build -mod=mod $(BUILD_FLAGS) -o $(BUILD_DIR)/$(BINARY_NAME_HAP) ./$(CMD_DIR)/hap
@echo "✅ HAP binary built: $(BUILD_DIR)/$(BINARY_NAME_HAP)"
# Build compatibility wrapper (deprecated)
.PHONY: build-compat
build-compat:
@echo "⚠️ Building CHORUS compatibility wrapper (deprecated)..."
@mkdir -p $(BUILD_DIR)
GOWORK=off go build -mod=mod $(BUILD_FLAGS) -o $(BUILD_DIR)/$(BINARY_NAME_COMPAT) ./$(CMD_DIR)/chorus
@echo "✅ Compatibility wrapper built: $(BUILD_DIR)/$(BINARY_NAME_COMPAT)"
# Build Sequential Thinking age-encrypted wrapper
.PHONY: build-seqthink
build-seqthink:
@echo "🔐 Building Sequential Thinking wrapper..."
@mkdir -p $(BUILD_DIR)
GOWORK=off go build -mod=mod $(BUILD_FLAGS) -o $(BUILD_DIR)/$(BINARY_NAME_SEQTHINK) ./$(CMD_DIR)/seqthink-wrapper
@echo "✅ SeqThink wrapper built: $(BUILD_DIR)/$(BINARY_NAME_SEQTHINK)"
# Test compilation without building
.PHONY: test-compile
test-compile:
@echo "🔍 Testing compilation of both binaries..."
go build -o /dev/null ./$(CMD_DIR)/agent
go build -o /dev/null ./$(CMD_DIR)/hap
@echo "✅ Both binaries compile successfully"
# Run tests
.PHONY: test
test:
@echo "🧪 Running tests..."
go test -v ./...
# Clean build artifacts
.PHONY: clean
clean:
@echo "🧹 Cleaning build artifacts..."
rm -rf $(BUILD_DIR)
@echo "✅ Clean complete"
# Install both binaries to GOPATH/bin
.PHONY: install
install: build
@echo "📦 Installing binaries to GOPATH/bin..."
cp $(BUILD_DIR)/$(BINARY_NAME_AGENT) $(shell go env GOPATH)/bin/
cp $(BUILD_DIR)/$(BINARY_NAME_HAP) $(shell go env GOPATH)/bin/
@echo "✅ Binaries installed"
# Development helpers
.PHONY: run-agent
run-agent: build-agent
@echo "🚀 Running CHORUS agent..."
./$(BUILD_DIR)/$(BINARY_NAME_AGENT)
.PHONY: run-hap
run-hap: build-hap
@echo "🚀 Running CHORUS HAP..."
./$(BUILD_DIR)/$(BINARY_NAME_HAP)
# Docker builds
# NOTE: Always use Dockerfile.ubuntu for production builds!
# Dockerfile.simple.DEPRECATED uses Alpine which is incompatible with glibc-linked binaries
.PHONY: docker-agent
docker-agent:
@echo "🐳 Building Docker image for CHORUS agent..."
docker build -f Dockerfile.ubuntu -t chorus-agent:$(VERSION) .
@echo "⚠️ IMPORTANT: Production images MUST use Dockerfile.ubuntu (glibc compatibility)"
.PHONY: docker-hap
docker-hap:
@echo "🐳 Building Docker image for CHORUS HAP..."
docker build -f docker/Dockerfile.hap -t chorus-hap:$(VERSION) .
.PHONY: docker-seqthink
docker-seqthink:
@echo "🔐 Building Docker image for Sequential Thinking wrapper..."
docker build -f deploy/seqthink/Dockerfile -t seqthink-wrapper:$(VERSION) .
.PHONY: docker
docker: docker-agent docker-hap docker-seqthink
# Help
.PHONY: help
help:
@echo "CHORUS Multi-Binary Build System"
@echo ""
@echo "Targets:"
@echo " all - Clean and build all binaries (default)"
@echo " build - Build all binaries"
@echo " build-agent - Build autonomous agent binary only"
@echo " build-hap - Build human agent portal binary only"
@echo " build-seqthink - Build Sequential Thinking wrapper only"
@echo " test-compile - Test that binaries compile"
@echo " test - Run tests"
@echo " clean - Remove build artifacts"
@echo " install - Install binaries to GOPATH/bin"
@echo " run-agent - Build and run agent"
@echo " run-hap - Build and run HAP"
@echo " docker - Build Docker images for all binaries"
@echo " docker-agent - Build Docker image for agent only"
@echo " docker-hap - Build Docker image for HAP only"
@echo " docker-seqthink - Build Docker image for SeqThink wrapper only"
@echo " help - Show this help"
@echo ""
@echo "Environment Variables:"
@echo " VERSION - Version string (default: 0.5.28)"
@echo " COMMIT_HASH - Git commit hash (auto-detected)"
@echo " BUILD_DATE - Build timestamp (auto-generated)"