Implement Beat 1: Sequential Thinking Age-Encrypted Wrapper (Skeleton)
This commit completes Beat 1 of the SequentialThinkingForCHORUS implementation, providing a functional plaintext skeleton for the age-encrypted wrapper. ## Deliverables ### 1. Main Wrapper Entry Point - `cmd/seqthink-wrapper/main.go`: HTTP server on :8443 - Configuration loading from environment variables - Graceful shutdown handling - MCP server readiness checking with timeout ### 2. MCP Client Package - `pkg/seqthink/mcpclient/client.go`: HTTP client for MCP server - Communicates with MCP server on localhost:8000 - Health check endpoint - Tool call endpoint with 120s timeout ### 3. Proxy Server Package - `pkg/seqthink/proxy/server.go`: HTTP handlers for wrapper - Health and readiness endpoints - Tool call proxy (plaintext for Beat 1) - SSE endpoint placeholder - Metrics endpoint integration ### 4. Observability Package - `pkg/seqthink/observability/logger.go`: Structured logging with zerolog - `pkg/seqthink/observability/metrics.go`: Prometheus metrics - Counters for requests, errors, decrypt/encrypt failures, policy denials - Request duration histogram ### 5. Docker Infrastructure - `deploy/seqthink/Dockerfile`: Multi-stage build - `deploy/seqthink/entrypoint.sh`: Startup orchestration - `deploy/seqthink/mcp_stub.py`: Minimal MCP server for testing ### 6. Build System Integration - Updated `Makefile` with `build-seqthink` target - Uses GOWORK=off and -mod=mod for clean builds - `docker-seqthink` target for container builds ## Testing Successfully builds with: ``` make build-seqthink ``` Binary successfully starts and waits for MCP server connection. ## Next Steps Beat 2 will add: - Age encryption/decryption (pkg/seqthink/ageio) - Content-Type: application/age enforcement - SSE streaming with encrypted frames - Golden tests for crypto round-trips 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
34
Makefile
34
Makefile
@@ -1,11 +1,12 @@
|
||||
# CHORUS Multi-Binary Makefile
|
||||
# Builds both chorus-agent and chorus-hap binaries
|
||||
# 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
|
||||
VERSION ?= 0.5.5
|
||||
BINARY_NAME_SEQTHINK = seqthink-wrapper
|
||||
VERSION ?= 0.5.28
|
||||
COMMIT_HASH ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
|
||||
BUILD_DATE ?= $(shell date -u '+%Y-%m-%d_%H:%M:%S')
|
||||
|
||||
@@ -49,6 +50,14 @@ build-compat:
|
||||
go build $(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:
|
||||
@@ -103,8 +112,13 @@ 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: docker-agent docker-hap docker-seqthink
|
||||
|
||||
# Help
|
||||
.PHONY: help
|
||||
@@ -112,22 +126,24 @@ help:
|
||||
@echo "CHORUS Multi-Binary Build System"
|
||||
@echo ""
|
||||
@echo "Targets:"
|
||||
@echo " all - Clean and build both binaries (default)"
|
||||
@echo " build - Build both binaries"
|
||||
@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 " test-compile - Test that both binaries compile"
|
||||
@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 both binaries"
|
||||
@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.1.0-dev)"
|
||||
@echo " VERSION - Version string (default: 0.5.28)"
|
||||
@echo " COMMIT_HASH - Git commit hash (auto-detected)"
|
||||
@echo " BUILD_DATE - Build timestamp (auto-generated)"
|
||||
@echo " BUILD_DATE - Build timestamp (auto-generated)"
|
||||
|
||||
Reference in New Issue
Block a user