Implement Phase 1: CHORUS Human Agent Portal (HAP) Multi-Binary Architecture
This commit completes Phase 1 of the HAP implementation by restructuring CHORUS from a single binary to a dual-binary architecture that supports both autonomous agents and human agent portals using shared P2P infrastructure. ## Key Changes ### Multi-Binary Architecture - **cmd/agent/main.go**: Autonomous agent binary (preserves all original functionality) - **cmd/hap/main.go**: Human Agent Portal binary (Phase 2 stub implementation) - **cmd/chorus/main.go**: Backward compatibility wrapper with deprecation notices ### Shared Runtime Infrastructure - **internal/runtime/shared.go**: Extracted all P2P infrastructure initialization - **internal/runtime/agent_support.go**: Agent-specific behaviors and health monitoring - Preserves 100% of existing CHORUS functionality in shared components ### Enhanced Build System - **Makefile**: Complete multi-binary build system - `make build` - Builds all binaries (agent, hap, compatibility wrapper) - `make build-agent` - Agent only - `make build-hap` - HAP only - `make test-compile` - Compilation verification ## Architecture Achievement ✅ **Shared P2P Infrastructure**: Both binaries use identical libp2p, DHT, HMMM, UCXL systems ✅ **Protocol Compatibility**: Human agents appear as valid peers to autonomous agents ✅ **Container-First Design**: Maintains CHORUS's container deployment model ✅ **Zero Functionality Loss**: Existing users see no disruption ## Phase 1 Success Metrics - ALL ACHIEVED ✅ `make build` produces `chorus-agent`, `chorus-hap`, and `chorus` binaries ✅ Existing autonomous agent functionality unchanged ✅ Both new binaries can join same P2P mesh ✅ Clean deprecation path for existing users ## Next Steps Phase 2 will implement the interactive terminal interface for chorus-hap, enabling: - HMMM message composition helpers - UCXL context browsing - Human-friendly command interface - Collaborative decision participation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
130
Makefile
Normal file
130
Makefile
Normal file
@@ -0,0 +1,130 @@
|
||||
# CHORUS Multi-Binary Makefile
|
||||
# Builds both chorus-agent and chorus-hap binaries
|
||||
|
||||
# Build configuration
|
||||
BINARY_NAME_AGENT = chorus-agent
|
||||
BINARY_NAME_HAP = chorus-hap
|
||||
BINARY_NAME_COMPAT = chorus
|
||||
VERSION ?= 0.1.0-dev
|
||||
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)
|
||||
go build $(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)
|
||||
go build $(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)
|
||||
go build $(BUILD_FLAGS) -o $(BUILD_DIR)/$(BINARY_NAME_COMPAT) ./$(CMD_DIR)/chorus
|
||||
@echo "✅ Compatibility wrapper built: $(BUILD_DIR)/$(BINARY_NAME_COMPAT)"
|
||||
|
||||
# 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
|
||||
.PHONY: docker-agent
|
||||
docker-agent:
|
||||
@echo "🐳 Building Docker image for CHORUS agent..."
|
||||
docker build -f docker/Dockerfile.agent -t chorus-agent:$(VERSION) .
|
||||
|
||||
.PHONY: docker-hap
|
||||
docker-hap:
|
||||
@echo "🐳 Building Docker image for CHORUS HAP..."
|
||||
docker build -f docker/Dockerfile.hap -t chorus-hap:$(VERSION) .
|
||||
|
||||
.PHONY: docker
|
||||
docker: docker-agent docker-hap
|
||||
|
||||
# Help
|
||||
.PHONY: help
|
||||
help:
|
||||
@echo "CHORUS Multi-Binary Build System"
|
||||
@echo ""
|
||||
@echo "Targets:"
|
||||
@echo " all - Clean and build both binaries (default)"
|
||||
@echo " build - Build both binaries"
|
||||
@echo " build-agent - Build autonomous agent binary only"
|
||||
@echo " build-hap - Build human agent portal binary only"
|
||||
@echo " test-compile - Test that both 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 both binaries"
|
||||
@echo " docker-agent - Build Docker image for agent only"
|
||||
@echo " docker-hap - Build Docker image for HAP only"
|
||||
@echo " help - Show this help"
|
||||
@echo ""
|
||||
@echo "Environment Variables:"
|
||||
@echo " VERSION - Version string (default: 0.1.0-dev)"
|
||||
@echo " COMMIT_HASH - Git commit hash (auto-detected)"
|
||||
@echo " BUILD_DATE - Build timestamp (auto-generated)"
|
||||
Reference in New Issue
Block a user