package main import ( "fmt" "os" "path/filepath" "chorus/internal/runtime" ) // Build-time variables set by ldflags var ( version = "0.5.0-dev" commitHash = "unknown" buildDate = "unknown" ) func main() { // Early CLI handling: print help/version without requiring env/config for _, a := range os.Args[1:] { switch a { case "--help", "-h", "help": fmt.Printf("%s-agent %s (build: %s, %s)\n\n", runtime.AppName, version, commitHash, buildDate) fmt.Println("Usage:") fmt.Printf(" %s [--help] [--version]\n\n", filepath.Base(os.Args[0])) fmt.Println("CHORUS Autonomous Agent - P2P Task Coordination") fmt.Println() fmt.Println("This binary runs autonomous AI agents that participate in P2P task coordination,") fmt.Println("collaborative reasoning via HMMM, and distributed decision making.") fmt.Println() fmt.Println("Environment (common):") fmt.Println(" CHORUS_LICENSE_ID (required)") fmt.Println(" CHORUS_AGENT_ID (optional; auto-generated if empty)") fmt.Println(" CHORUS_P2P_PORT (default 9000)") fmt.Println(" CHORUS_API_PORT (default 8080)") fmt.Println(" CHORUS_HEALTH_PORT (default 8081)") fmt.Println(" CHORUS_DHT_ENABLED (default true)") fmt.Println(" CHORUS_BOOTSTRAP_PEERS (comma-separated multiaddrs)") fmt.Println(" OLLAMA_ENDPOINT (default http://localhost:11434)") fmt.Println() fmt.Println("Example:") fmt.Println(" CHORUS_LICENSE_ID=dev-123 \\") fmt.Println(" CHORUS_AGENT_ID=chorus-agent-1 \\") fmt.Println(" CHORUS_P2P_PORT=9000 CHORUS_API_PORT=8080 ./chorus-agent") fmt.Println() fmt.Println("Agent Features:") fmt.Println(" - Autonomous task execution") fmt.Println(" - P2P mesh networking") fmt.Println(" - HMMM collaborative reasoning") fmt.Println(" - DHT encrypted storage") fmt.Println(" - UCXL context addressing") fmt.Println(" - Democratic leader election") fmt.Println(" - Health monitoring") return case "--version", "-v": fmt.Printf("%s-agent %s (build: %s, %s)\n", runtime.AppName, version, commitHash, buildDate) return } } // Set dynamic build information runtime.AppVersion = version runtime.AppCommitHash = commitHash runtime.AppBuildDate = buildDate // Initialize shared P2P runtime sharedRuntime, err := runtime.Initialize("agent") if err != nil { fmt.Fprintf(os.Stderr, "❌ Failed to initialize CHORUS agent: %v\n", err) os.Exit(1) } defer sharedRuntime.Cleanup() // Start agent mode with autonomous behaviors if err := sharedRuntime.StartAgentMode(); err != nil { fmt.Fprintf(os.Stderr, "❌ Agent mode failed: %v\n", err) os.Exit(1) } }