 c5b7311a8b
			
		
	
	c5b7311a8b
	
	
	
		
			
			Comprehensive documentation for coordination, messaging, discovery, and internal systems. Core Coordination Packages: - pkg/election - Democratic leader election (uptime-based, heartbeat mechanism, SLURP integration) - pkg/coordination - Meta-coordination with dependency detection (4 built-in rules) - coordinator/ - Task orchestration and assignment (AI-powered scoring) - discovery/ - mDNS peer discovery (automatic LAN detection) Messaging & P2P Infrastructure: - pubsub/ - GossipSub messaging (31 message types, role-based topics, HMMM integration) - p2p/ - libp2p networking (DHT modes, connection management, security) Monitoring & Health: - pkg/metrics - Prometheus metrics (80+ metrics across 12 categories) - pkg/health - Health monitoring (4 HTTP endpoints, enhanced checks, graceful degradation) Internal Systems: - internal/licensing - License validation (KACHING integration, cluster leases, fail-closed) - internal/hapui - Human Agent Portal UI (9 commands, HMMM wizard, UCXL browser, decision voting) - internal/backbeat - P2P operation telemetry (6 phases, beat synchronization, health reporting) Documentation Statistics (Phase 3): - 10 packages documented (~18,000 lines) - 31 PubSub message types cataloged - 80+ Prometheus metrics documented - Complete API references with examples - Integration patterns and best practices Key Features Documented: - Election: 5 triggers, candidate scoring (5 weighted components), stability windows - Coordination: AI-powered dependency detection, cross-repo sessions, escalation handling - PubSub: Topic patterns, message envelopes, SHHH redaction, Hypercore logging - Metrics: All metric types with labels, Prometheus scrape config, alert rules - Health: Liveness vs readiness, critical checks, Kubernetes integration - Licensing: Grace periods, circuit breaker, cluster lease management - HAP UI: Interactive terminal commands, HMMM composition wizard, web interface (beta) - BACKBEAT: 6-phase operation tracking, beat budget estimation, drift detection Implementation Status Marked: - ✅ Production: Election, metrics, health, licensing, pubsub, p2p, discovery, coordinator - 🔶 Beta: HAP web interface, BACKBEAT telemetry, advanced coordination - 🔷 Alpha: SLURP election scoring - ⚠️ Experimental: Meta-coordination, AI-powered dependency detection Progress: 22/62 files complete (35%) Next Phase: AI providers, SLURP system, API layer, reasoning engine 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			1249 lines
		
	
	
		
			29 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			1249 lines
		
	
	
		
			29 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # CHORUS Internal Package: hapui
 | |
| 
 | |
| **Package:** `chorus/internal/hapui`
 | |
| **Purpose:** Human Agent Portal (HAP) Terminal Interface for CHORUS
 | |
| **Lines of Code:** 3,985 lines (terminal.go)
 | |
| 
 | |
| ## Overview
 | |
| 
 | |
| The `hapui` package provides a comprehensive interactive terminal interface that allows human operators to participate in the CHORUS P2P agent network on equal footing with autonomous agents. It implements a full-featured command-line interface with support for HMMM reasoning, UCXL context browsing, decision voting, collaborative editing, patch management, and an embedded web bridge.
 | |
| 
 | |
| This package enables humans to:
 | |
| - Communicate with autonomous agents using the same protocols
 | |
| - Participate in distributed decision-making processes
 | |
| - Browse and navigate UCXL-addressed contexts
 | |
| - Collaborate on code and content in real-time
 | |
| - Manage patches with temporal navigation
 | |
| - Access all functionality via terminal or web browser
 | |
| 
 | |
| ## Architecture
 | |
| 
 | |
| ### Core Types
 | |
| 
 | |
| #### TerminalInterface
 | |
| 
 | |
| The main interface for human agent interaction.
 | |
| 
 | |
| ```go
 | |
| type TerminalInterface struct {
 | |
|     runtime              *runtime.SharedRuntime
 | |
|     scanner              *bufio.Scanner
 | |
|     quit                 chan bool
 | |
|     collaborativeSession *CollaborativeSession
 | |
|     hmmmMessageCount     int
 | |
|     webServer            *http.Server
 | |
| }
 | |
| ```
 | |
| 
 | |
| **Responsibilities:**
 | |
| - Command processing and routing
 | |
| - User input/output management
 | |
| - Session lifecycle management
 | |
| - Integration with SharedRuntime
 | |
| - Web server hosting
 | |
| 
 | |
| #### CollaborativeSession
 | |
| 
 | |
| Represents an active collaborative editing session.
 | |
| 
 | |
| ```go
 | |
| type CollaborativeSession struct {
 | |
|     SessionID    string
 | |
|     Owner        string
 | |
|     Participants []string
 | |
|     Status       string
 | |
|     CreatedAt    time.Time
 | |
| }
 | |
| ```
 | |
| 
 | |
| **Use Cases:**
 | |
| - Multi-agent code collaboration
 | |
| - Real-time content editing
 | |
| - Session state tracking
 | |
| - Participant management
 | |
| 
 | |
| #### Decision
 | |
| 
 | |
| Represents a network decision awaiting votes.
 | |
| 
 | |
| ```go
 | |
| type Decision struct {
 | |
|     ID          string                 `json:"id"`
 | |
|     Title       string                 `json:"title"`
 | |
|     Description string                 `json:"description"`
 | |
|     Type        string                 `json:"type"`
 | |
|     Proposer    string                 `json:"proposer"`
 | |
|     ProposerType string                `json:"proposer_type"`
 | |
|     CreatedAt   time.Time              `json:"created_at"`
 | |
|     Deadline    time.Time              `json:"deadline"`
 | |
|     Status      string                 `json:"status"`
 | |
|     Votes       map[string]DecisionVote `json:"votes"`
 | |
|     Metadata    map[string]interface{} `json:"metadata"`
 | |
|     Version     int                    `json:"version"`
 | |
| }
 | |
| ```
 | |
| 
 | |
| **Decision Types:**
 | |
| - `technical` - Architecture, code, infrastructure decisions
 | |
| - `operational` - Process, resource allocation
 | |
| - `policy` - Network rules, governance
 | |
| - `emergency` - Urgent security/stability issues (2-hour deadline)
 | |
| 
 | |
| #### DecisionVote
 | |
| 
 | |
| Represents a single vote on a decision.
 | |
| 
 | |
| ```go
 | |
| type DecisionVote struct {
 | |
|     VoterID    string    `json:"voter_id"`
 | |
|     VoterType  string    `json:"voter_type"`
 | |
|     Vote       string    `json:"vote"` // approve, reject, defer, abstain
 | |
|     Reasoning  string    `json:"reasoning"`
 | |
|     Timestamp  time.Time `json:"timestamp"`
 | |
|     Confidence float64   `json:"confidence"` // 0.0-1.0 confidence in vote
 | |
| }
 | |
| ```
 | |
| 
 | |
| **Vote Options:**
 | |
| - `approve` - Support this decision
 | |
| - `reject` - Oppose this decision
 | |
| - `defer` - Need more information
 | |
| - `abstain` - Acknowledge but not participate
 | |
| 
 | |
| ## Terminal Commands
 | |
| 
 | |
| ### Main Commands
 | |
| 
 | |
| #### help
 | |
| Show available commands and help information.
 | |
| 
 | |
| ```bash
 | |
| hap> help
 | |
| ```
 | |
| 
 | |
| **Output:** Complete list of terminal commands with descriptions.
 | |
| 
 | |
| #### status
 | |
| Display current network and agent status.
 | |
| 
 | |
| ```bash
 | |
| hap> status
 | |
| ```
 | |
| 
 | |
| **Shows:**
 | |
| - Agent ID, role, and type (Human/HAP)
 | |
| - P2P Node ID and connected peer count
 | |
| - Active task count and limits
 | |
| - DHT connection status
 | |
| - BACKBEAT integration status
 | |
| - Last updated timestamp
 | |
| 
 | |
| **Example Output:**
 | |
| ```
 | |
| 📊 HAP Status Report
 | |
| ----------------------------------------
 | |
| Agent ID: human-alice
 | |
| Agent Role: developer
 | |
| Agent Type: Human (HAP)
 | |
| Node ID: 12D3KooWAbc...
 | |
| Connected Peers: 5
 | |
| Active Tasks: 2/10
 | |
| DHT: ✅ Connected
 | |
| BACKBEAT: ✅ Connected
 | |
| ----------------------------------------
 | |
| Last Updated: 14:32:15
 | |
| ```
 | |
| 
 | |
| #### peers
 | |
| List connected P2P peers in the network.
 | |
| 
 | |
| ```bash
 | |
| hap> peers
 | |
| ```
 | |
| 
 | |
| **Shows:**
 | |
| - Total peer count
 | |
| - Connection status
 | |
| - Guidance for peer discovery
 | |
| 
 | |
| #### announce
 | |
| Re-announce human agent presence to the network.
 | |
| 
 | |
| ```bash
 | |
| hap> announce
 | |
| ```
 | |
| 
 | |
| **Broadcasts:**
 | |
| - Agent ID and node ID
 | |
| - Agent type: "human"
 | |
| - Interface: "terminal"
 | |
| - Capabilities: hmmm_reasoning, decision_making, context_browsing, collaborative_editing
 | |
| - Current status: "online"
 | |
| 
 | |
| **Published to:** `CapabilityBcast` topic via PubSub
 | |
| 
 | |
| #### quit / exit
 | |
| Exit the HAP terminal interface.
 | |
| 
 | |
| ```bash
 | |
| hap> quit
 | |
| ```
 | |
| 
 | |
| **Actions:**
 | |
| - Graceful shutdown
 | |
| - Network disconnection
 | |
| - Session cleanup
 | |
| 
 | |
| #### clear / cls
 | |
| Clear the terminal screen and redisplay welcome message.
 | |
| 
 | |
| ```bash
 | |
| hap> clear
 | |
| ```
 | |
| 
 | |
| ### HMMM Commands
 | |
| 
 | |
| **Access:** `hap> hmmm`
 | |
| 
 | |
| The HMMM (Human-Machine-Machine-Machine) command provides a sub-menu for collaborative reasoning messages.
 | |
| 
 | |
| #### HMMM Sub-Commands
 | |
| 
 | |
| ##### new
 | |
| Compose a new reasoning message.
 | |
| 
 | |
| ```bash
 | |
| hmmm> new
 | |
| ```
 | |
| 
 | |
| **Interactive Wizard:**
 | |
| 1. Topic (e.g., engineering, planning, architecture)
 | |
| 2. Issue ID (numeric identifier for the problem)
 | |
| 3. Subject/Title (concise summary)
 | |
| 4. Reasoning content (press Enter twice to finish)
 | |
| 
 | |
| **Message Structure:**
 | |
| - **Topic:** `CHORUS/hmmm/{topic}`
 | |
| - **Type:** `reasoning_start`
 | |
| - **Thread ID:** Auto-generated from topic and issue ID
 | |
| - **Message ID:** Unique identifier with timestamp
 | |
| 
 | |
| **Example Flow:**
 | |
| ```
 | |
| 📝 New HMMM Reasoning Message
 | |
| ----------------------------------------
 | |
| Topic (e.g., engineering, planning, architecture): architecture
 | |
| Issue ID (number for this specific problem): 42
 | |
| Subject/Title: Service mesh migration strategy
 | |
| 
 | |
| Your reasoning (press Enter twice when done):
 | |
| We should migrate to a service mesh architecture to improve
 | |
| observability and resilience. Key considerations:
 | |
| 1. Gradual rollout across services
 | |
| 2. Training for ops team
 | |
| 3. Performance impact assessment
 | |
| 
 | |
| [Enter]
 | |
| [Enter]
 | |
| 
 | |
| ✅ HMMM reasoning message sent to network
 | |
|    Topic: architecture
 | |
|    Issue: #42
 | |
|    Thread: thread-<hash>
 | |
|    Message ID: hap-1234567890-123456
 | |
| ```
 | |
| 
 | |
| ##### reply
 | |
| Reply to an existing HMMM thread.
 | |
| 
 | |
| ```bash
 | |
| hmmm> reply
 | |
| ```
 | |
| 
 | |
| **Interactive Wizard:**
 | |
| 1. Thread ID to reply to
 | |
| 2. Issue ID
 | |
| 3. Reasoning/response content
 | |
| 
 | |
| **Use Cases:**
 | |
| - Build on previous reasoning
 | |
| - Add counterpoints
 | |
| - Request clarification
 | |
| - Provide additional context
 | |
| 
 | |
| ##### query
 | |
| Ask the network for reasoning help.
 | |
| 
 | |
| ```bash
 | |
| hmmm> query
 | |
| ```
 | |
| 
 | |
| **Interactive Wizard:**
 | |
| 1. Query topic
 | |
| 2. Issue ID (optional, auto-generated if not provided)
 | |
| 3. Question/problem statement
 | |
| 4. Additional context (optional)
 | |
| 
 | |
| **Message Structure:**
 | |
| - **Topic:** `CHORUS/hmmm/query/{topic}`
 | |
| - **Type:** `reasoning_query`
 | |
| - **Urgency:** normal (default)
 | |
| 
 | |
| **Example:**
 | |
| ```
 | |
| ❓ HMMM Network Query
 | |
| -------------------------
 | |
| Query topic: technical
 | |
| Issue ID: [Enter for new]
 | |
| Your question/problem: How should we handle backpressure in the task queue?
 | |
| 
 | |
| Additional context:
 | |
| Current queue size averages 1000 tasks
 | |
| Agents process 10-50 tasks/minute
 | |
| Peak load reaches 5000+ tasks
 | |
| 
 | |
| [Enter]
 | |
| [Enter]
 | |
| 
 | |
| ✅ HMMM query sent to network
 | |
|    Waiting for agent responses on issue #7834
 | |
|    Thread: thread-<hash>
 | |
|    Message ID: hap-1234567890-123456
 | |
| ```
 | |
| 
 | |
| ##### decide
 | |
| Propose a decision requiring network consensus.
 | |
| 
 | |
| ```bash
 | |
| hmmm> decide
 | |
| ```
 | |
| 
 | |
| **Interactive Wizard:**
 | |
| 1. Decision topic
 | |
| 2. Decision title
 | |
| 3. Decision rationale
 | |
| 4. Voting options (comma-separated, defaults to approve/reject)
 | |
| 
 | |
| **Creates:**
 | |
| - HMMM message with type `decision_proposal`
 | |
| - Decision object in DHT storage
 | |
| - Network announcement
 | |
| - 24-hour voting deadline (default)
 | |
| 
 | |
| ##### help
 | |
| Show detailed HMMM system information.
 | |
| 
 | |
| ```bash
 | |
| hmmm> help
 | |
| ```
 | |
| 
 | |
| **Displays:**
 | |
| - HMMM overview and purpose
 | |
| - Message types explained
 | |
| - Message structure details
 | |
| - Best practices for effective reasoning
 | |
| 
 | |
| ##### back
 | |
| Return to main HAP menu.
 | |
| 
 | |
| ### UCXL Commands
 | |
| 
 | |
| **Access:** `hap> ucxl <address>`
 | |
| 
 | |
| The UCXL command provides context browsing and navigation.
 | |
| 
 | |
| **Address Format:**
 | |
| ```
 | |
| ucxl://agent:role@project:task/path*temporal/
 | |
| ```
 | |
| 
 | |
| **Components:**
 | |
| - `agent` - Agent ID or '*' for wildcard
 | |
| - `role` - Agent role (dev, admin, user, etc.)
 | |
| - `project` - Project identifier
 | |
| - `task` - Task or issue identifier
 | |
| - `path` - Optional resource path
 | |
| - `temporal` - Optional time navigation
 | |
| 
 | |
| **Example:**
 | |
| ```bash
 | |
| hap> ucxl ucxl://alice:dev@webapp:frontend/src/components/
 | |
| ```
 | |
| 
 | |
| **Display:**
 | |
| ```
 | |
| 🔗 UCXL Context Browser
 | |
| --------------------------------------------------
 | |
| 📍 Address: ucxl://alice:dev@webapp:frontend/src/components/
 | |
| 🤖 Agent: alice
 | |
| 🎭 Role: dev
 | |
| 📁 Project: webapp
 | |
| 📝 Task: frontend
 | |
| 📄 Path: src/components/
 | |
| 
 | |
| 📦 Content Found:
 | |
| ------------------------------
 | |
| 📄 Type: directory
 | |
| 👤 Creator: developer
 | |
| 📅 Created: 2025-09-30 10:15:23
 | |
| 📏 Size: 2048 bytes
 | |
| 
 | |
| 📖 Content:
 | |
| [directory listing or file content]
 | |
| ```
 | |
| 
 | |
| #### UCXL Sub-Commands
 | |
| 
 | |
| ##### search
 | |
| Search for related UCXL content.
 | |
| 
 | |
| ```bash
 | |
| ucxl> search
 | |
| ```
 | |
| 
 | |
| **Interactive Wizard:**
 | |
| 1. Search agent (current or custom)
 | |
| 2. Search role (current or custom)
 | |
| 3. Search project (current or custom)
 | |
| 4. Content type filter (optional)
 | |
| 
 | |
| **Returns:** List of matching UCXL addresses with metadata.
 | |
| 
 | |
| ##### related
 | |
| Find content related to the current address.
 | |
| 
 | |
| ```bash
 | |
| ucxl> related
 | |
| ```
 | |
| 
 | |
| **Searches:** Same project and task, different agents/roles
 | |
| 
 | |
| **Use Cases:**
 | |
| - Find parallel work by other agents
 | |
| - Discover related contexts
 | |
| - Understand project structure
 | |
| 
 | |
| ##### history
 | |
| View address version history (stub).
 | |
| 
 | |
| ```bash
 | |
| ucxl> history
 | |
| ```
 | |
| 
 | |
| **Status:** Not yet fully implemented
 | |
| 
 | |
| **Planned Features:**
 | |
| - Temporal version listing
 | |
| - Change tracking
 | |
| - Rollback capabilities
 | |
| 
 | |
| ##### create
 | |
| Create new content at this address.
 | |
| 
 | |
| ```bash
 | |
| ucxl> create
 | |
| ```
 | |
| 
 | |
| **Interactive Wizard:**
 | |
| 1. Content type selection
 | |
| 2. Content input
 | |
| 3. Metadata configuration
 | |
| 4. Storage and announcement
 | |
| 
 | |
| ##### help
 | |
| Show UCXL help information.
 | |
| 
 | |
| ```bash
 | |
| ucxl> help
 | |
| ```
 | |
| 
 | |
| **Displays:**
 | |
| - Address format specification
 | |
| - Component descriptions
 | |
| - Temporal navigation syntax
 | |
| - Examples
 | |
| 
 | |
| **Temporal Navigation Syntax:**
 | |
| - `*^/` - Latest version
 | |
| - `*~/` - Earliest version
 | |
| - `*@1234/` - Specific timestamp
 | |
| - `*~5/` - 5 versions back
 | |
| - `*^3/` - 3 versions forward
 | |
| 
 | |
| ##### back
 | |
| Return to main menu.
 | |
| 
 | |
| ### Decision Commands
 | |
| 
 | |
| **Access:** `hap> decide <topic>`
 | |
| 
 | |
| The decide command provides distributed decision participation.
 | |
| 
 | |
| #### Decision Sub-Commands
 | |
| 
 | |
| ##### list
 | |
| List all active decisions.
 | |
| 
 | |
| ```bash
 | |
| decision> list
 | |
| ```
 | |
| 
 | |
| **Output:**
 | |
| ```
 | |
| 🗳️ Active Decisions Requiring Your Vote
 | |
| --------------------------------------------------
 | |
| 1. DEC-A1B2C3 | Emergency: Database quarantine
 | |
|    Type: emergency | Proposer: agent-42 (autonomous)
 | |
|    Deadline: 45 minutes | Votes: 4 (75% approval)
 | |
| 
 | |
| 2. DEC-D4E5F6 | Technical: Upgrade to libp2p v0.30
 | |
|    Type: technical | Proposer: alice (human)
 | |
|    Deadline: 6 hours | Votes: 8 (62% approval)
 | |
| 
 | |
| 3. DEC-G7H8I9 | Operational: Task timeout adjustment
 | |
|    Type: operational | Proposer: agent-15 (autonomous)
 | |
|    Deadline: 12 hours | Votes: 3 (33% approval)
 | |
| ```
 | |
| 
 | |
| ##### view
 | |
| View decision details.
 | |
| 
 | |
| ```bash
 | |
| decision> view DEC-A1B2C3
 | |
| ```
 | |
| 
 | |
| **Output:**
 | |
| ```
 | |
| 🔍 Decision Details: DEC-A1B2C3
 | |
| ----------------------------------------
 | |
| 📋 Title: Emergency: Database quarantine
 | |
| 🏷️ Type: Emergency
 | |
| 👤 Proposer: agent-42 (autonomous)
 | |
| 📅 Proposed: 2025-09-30 14:15:30
 | |
| ⏰ Deadline: 2025-09-30 16:00:00 (45 minutes remaining)
 | |
| 
 | |
| 📖 Description:
 | |
|    Database instance db-prod-03 is showing signs of
 | |
|    corruption. Recommend immediate quarantine and failover
 | |
|    to standby instance db-prod-04 to prevent data loss.
 | |
| 
 | |
|    Impact: 2-3 minute service interruption
 | |
|    Risk if delayed: Potential data corruption spread
 | |
| 
 | |
| 🗳️ Current Voting Status (4 total votes):
 | |
|    ✅ Approve: 3 votes
 | |
|    ❌ Reject:  0 votes
 | |
|    ⏸️ Defer:   1 votes
 | |
|    ⚠️ Abstain: 0 votes
 | |
| 
 | |
| 💭 Recent Reasoning:
 | |
|    agent-42 (approve): "Data integrity is critical priority"
 | |
|    agent-15 (approve): "Standby instance is healthy and ready"
 | |
|    alice (defer): "Need more info on corruption extent"
 | |
| 
 | |
| 🎯 Status: 75.0% approval (Passing)
 | |
| 
 | |
| To vote on this decision, use: vote DEC-A1B2C3
 | |
| ```
 | |
| 
 | |
| ##### vote
 | |
| Cast a vote on a decision.
 | |
| 
 | |
| ```bash
 | |
| decision> vote DEC-A1B2C3
 | |
| ```
 | |
| 
 | |
| **Interactive Wizard:**
 | |
| 1. Vote selection (1-4: approve, reject, defer, abstain)
 | |
| 2. Reasoning/justification input (required)
 | |
| 3. Confirmation
 | |
| 
 | |
| **Example:**
 | |
| ```
 | |
| 🗳️ Cast Vote on DEC-A1B2C3
 | |
| ------------------------------
 | |
| Vote Options:
 | |
|   1. ✅ approve  - Support this decision
 | |
|   2. ❌ reject   - Oppose this decision
 | |
|   3. ⏸️ defer    - Need more information
 | |
|   4. ⚠️ abstain  - Acknowledge but not participate
 | |
| 
 | |
| Your vote (1-4): 1
 | |
| You selected: approve
 | |
| 
 | |
| Reasoning/Justification (required for transparency):
 | |
| Explain why you are voting this way (press Enter twice when done):
 | |
| Data integrity is our highest priority. The corruption is confirmed
 | |
| and contained to one instance. Failover plan is sound.
 | |
| 
 | |
| [Enter]
 | |
| [Enter]
 | |
| 
 | |
| 📋 Vote Summary:
 | |
|    Decision: DEC-A1B2C3
 | |
|    Your Vote: approve
 | |
|    Reasoning: Data integrity is our highest priority...
 | |
| 
 | |
| Submit this vote? (y/n): y
 | |
| 
 | |
| 🔄 Submitting vote...
 | |
| ✅ Your approve vote on DEC-A1B2C3 has been recorded
 | |
| 📢 Vote announced via HMMM reasoning network
 | |
| 💌 Vote reasoning published to network for transparency
 | |
| 🔔 Other network members will be notified of your participation
 | |
| ```
 | |
| 
 | |
| **Vote Storage:**
 | |
| - Saved to DHT with decision object
 | |
| - Versioned (decision.Version++)
 | |
| - Broadcast via HMMM on topic `CHORUS/decisions/vote/{decisionID}`
 | |
| 
 | |
| ##### propose
 | |
| Propose a new decision.
 | |
| 
 | |
| ```bash
 | |
| decision> propose
 | |
| ```
 | |
| 
 | |
| **Interactive Wizard:**
 | |
| 1. Decision type (1-4: technical, operational, policy, emergency)
 | |
| 2. Title (concise summary)
 | |
| 3. Detailed rationale
 | |
| 4. Custom voting options (optional, defaults to approve/reject/defer/abstain)
 | |
| 5. Voting deadline (hours, default: 24, emergency: 2)
 | |
| 
 | |
| **Example:**
 | |
| ```
 | |
| 📝 Propose New Network Decision
 | |
| -----------------------------------
 | |
| Decision Types:
 | |
|   1. technical    - Architecture, code, infrastructure
 | |
|   2. operational  - Process, resource allocation
 | |
|   3. policy       - Network rules, governance
 | |
|   4. emergency    - Urgent security/stability issue
 | |
| 
 | |
| Decision type (1-4): 1
 | |
| Decision title (concise summary): Adopt gRPC for inter-agent communication
 | |
| 
 | |
| Detailed rationale (press Enter twice when done):
 | |
| Current JSON-over-HTTP adds latency and parsing overhead.
 | |
| gRPC with Protocol Buffers would provide:
 | |
| - Type-safe communication
 | |
| - Bidirectional streaming
 | |
| - Better performance
 | |
| - Native load balancing
 | |
| 
 | |
| [Enter]
 | |
| [Enter]
 | |
| 
 | |
| Custom voting options (comma-separated, or press Enter for default): [Enter]
 | |
| Voting deadline in hours (default: 24): [Enter]
 | |
| 
 | |
| 📋 Decision Proposal Summary:
 | |
|    Type: technical
 | |
|    Title: Adopt gRPC for inter-agent communication
 | |
|    Options: approve, reject, defer, abstain
 | |
|    Deadline: 24h from now
 | |
|    Rationale:
 | |
|    Current JSON-over-HTTP adds latency...
 | |
| 
 | |
| Submit this decision proposal? (y/n): y
 | |
| 
 | |
| 🔄 Creating decision proposal...
 | |
| ✅ Decision DEC-J1K2L3 proposed successfully
 | |
| 📢 Decision announced to all network members
 | |
| ⏰ Voting closes in 24h
 | |
| 🗳️ Network members can now cast their votes
 | |
| ```
 | |
| 
 | |
| **Decision Creation:**
 | |
| - Generates unique ID: `DEC-{randomID}`
 | |
| - Stores in DHT
 | |
| - Announces via HMMM on topic `CHORUS/decisions/proposal/{type}`
 | |
| - Sets appropriate priority metadata
 | |
| 
 | |
| ##### status
 | |
| Show decision system status.
 | |
| 
 | |
| ```bash
 | |
| decision> status
 | |
| ```
 | |
| 
 | |
| **Mock Status (development):**
 | |
| ```
 | |
| 📊 Decision System Status
 | |
| ------------------------------
 | |
| 🗳️  Active Decisions: 3
 | |
| ⏰ Urgent Decisions: 1 (emergency timeout)
 | |
| 👥 Network Members: 12 (8 active, 4 idle)
 | |
| 📊 Participation Rate: 67% (last 7 days)
 | |
| ✅ Consensus Success Rate: 89%
 | |
| ⚖️  Decision Types:
 | |
|      Technical: 45%, Operational: 30%
 | |
|      Policy: 20%, Emergency: 5%
 | |
| 
 | |
| 🔔 Recent Activity:
 | |
|    • DEC-003: Emergency quarantine decision (45m left)
 | |
|    • DEC-002: Task timeout adjustment (6h 30m left)
 | |
|    • DEC-001: libp2p upgrade (2h 15m left)
 | |
|    • DEC-055: Completed - Storage encryption (✅ approved)
 | |
| ```
 | |
| 
 | |
| ##### help
 | |
| Show decision help information.
 | |
| 
 | |
| ##### back
 | |
| Return to main menu.
 | |
| 
 | |
| ### Patch Commands
 | |
| 
 | |
| **Access:** `hap> patch`
 | |
| 
 | |
| The patch command provides patch creation, review, and submission.
 | |
| 
 | |
| #### Patch Sub-Commands
 | |
| 
 | |
| ##### create
 | |
| Create a new patch.
 | |
| 
 | |
| **Interactive Wizard:**
 | |
| 1. Patch type (context, code, config, docs)
 | |
| 2. Base UCXL address (what you're modifying)
 | |
| 3. Patch title
 | |
| 4. Patch description
 | |
| 5. Content changes
 | |
| 
 | |
| **Patch Types:**
 | |
| - **context** - UCXL context content changes
 | |
| - **code** - Traditional diff-based code changes
 | |
| - **config** - Configuration changes
 | |
| - **docs** - Documentation updates
 | |
| 
 | |
| **Example:**
 | |
| ```
 | |
| 📝 Create New Patch
 | |
| -------------------------
 | |
| Patch Types:
 | |
|   1. context      - UCXL context content changes
 | |
|   2. code         - Traditional code diff
 | |
|   3. config       - Configuration changes
 | |
|   4. docs         - Documentation updates
 | |
| 
 | |
| Patch type (1-4): 2
 | |
| Base UCXL address (what you're modifying): ucxl://alice:dev@webapp:bug-123/src/main.go
 | |
| Patch title: Fix nil pointer dereference in request handler
 | |
| 
 | |
| 📖 Fetching current content...
 | |
| 📄 Current Content:
 | |
| [shows current file content]
 | |
| 
 | |
| [Content editing workflow continues...]
 | |
| ```
 | |
| 
 | |
| ##### diff
 | |
| Review changes with temporal comparison (stub).
 | |
| 
 | |
| ##### submit
 | |
| Submit patch for peer review via HMMM network.
 | |
| 
 | |
| **Workflow:**
 | |
| 1. Validate patch completeness
 | |
| 2. Generate patch ID
 | |
| 3. Store in DHT
 | |
| 4. Announce via HMMM on `CHORUS/patches/submit` topic
 | |
| 5. Notify network members
 | |
| 
 | |
| ##### list
 | |
| List active patches (stub).
 | |
| 
 | |
| ##### review
 | |
| Participate in patch review process (stub).
 | |
| 
 | |
| ##### status
 | |
| Show patch system status (stub).
 | |
| 
 | |
| ##### help
 | |
| Show patch help information.
 | |
| 
 | |
| **Displays:**
 | |
| - Patch types explained
 | |
| - Temporal navigation syntax
 | |
| - Workflow stages
 | |
| - Integration points (HMMM, UCXL, DHT, Decision System)
 | |
| 
 | |
| ##### back
 | |
| Return to main menu.
 | |
| 
 | |
| ### Collaborative Editing Commands
 | |
| 
 | |
| **Access:** `hap> collab`
 | |
| 
 | |
| The collab command provides collaborative session management (stub implementation).
 | |
| 
 | |
| #### Collab Sub-Commands
 | |
| 
 | |
| ##### start
 | |
| Start a new collaborative session.
 | |
| 
 | |
| ##### join
 | |
| Join an existing session.
 | |
| 
 | |
| ##### list
 | |
| List active collaborative sessions.
 | |
| 
 | |
| ##### status
 | |
| Show collaborative session status.
 | |
| 
 | |
| ##### leave
 | |
| Leave current session.
 | |
| 
 | |
| ##### help
 | |
| Show collaborative editing help.
 | |
| 
 | |
| ##### back
 | |
| Return to main menu.
 | |
| 
 | |
| ### Web Bridge Commands
 | |
| 
 | |
| **Access:** `hap> web`
 | |
| 
 | |
| Start the HAP web bridge for browser access.
 | |
| 
 | |
| **Features:**
 | |
| - HTTP server on port 8090
 | |
| - HTML interface for all HAP features
 | |
| - REST API endpoints
 | |
| - WebSocket support for real-time updates (stub)
 | |
| 
 | |
| **Endpoints:**
 | |
| 
 | |
| **Static UI:**
 | |
| - `/` - Home dashboard
 | |
| - `/status` - Agent status
 | |
| - `/decisions` - Decision list
 | |
| - `/decisions/{id}` - Decision details
 | |
| - `/collab` - Collaborative editing (stub)
 | |
| - `/patches` - Patch management (stub)
 | |
| - `/hmmm` - HMMM messages (stub)
 | |
| 
 | |
| **API:**
 | |
| - `/api/status` - JSON status
 | |
| - `/api/decisions` - JSON decision list
 | |
| - `/api/decisions/vote` - POST vote submission
 | |
| - `/api/decisions/propose` - POST decision proposal (stub)
 | |
| - `/api/collab/sessions` - JSON session list (stub)
 | |
| - `/api/hmmm/send` - POST HMMM message (stub)
 | |
| 
 | |
| **WebSocket:**
 | |
| - `/ws` - Real-time updates (stub)
 | |
| 
 | |
| **Example:**
 | |
| ```bash
 | |
| hap> web
 | |
| ```
 | |
| 
 | |
| **Output:**
 | |
| ```
 | |
| 🌐 Starting HAP Web Bridge
 | |
| ------------------------------
 | |
| 🔌 Starting web server on port 8090
 | |
| ✅ Web interface available at: http://localhost:8090
 | |
| 📱 Browser HAP interface ready
 | |
| 🔗 API endpoints available at: /api/*
 | |
| ⚡ Real-time updates via WebSocket: /ws
 | |
| 
 | |
| 💡 Press Enter to return to terminal...
 | |
| ```
 | |
| 
 | |
| **Web Interface Features:**
 | |
| - Dashboard with quick access cards
 | |
| - Decision voting interface with JavaScript
 | |
| - Real-time status updates
 | |
| - Responsive design
 | |
| - Dark mode support (status page)
 | |
| 
 | |
| ## Integration Points
 | |
| 
 | |
| ### SharedRuntime Integration
 | |
| 
 | |
| The TerminalInterface depends on `runtime.SharedRuntime` for:
 | |
| - **Config:** Agent ID, role, configuration
 | |
| - **Node:** P2P node ID, peer connections
 | |
| - **TaskTracker:** Active task monitoring
 | |
| - **DHTNode:** Distributed storage access
 | |
| - **BackbeatIntegration:** Timing system status
 | |
| - **PubSub:** Message publishing
 | |
| - **EncryptedStorage:** UCXL content retrieval
 | |
| - **Logger:** Logging interface
 | |
| 
 | |
| ### HMMM Integration
 | |
| 
 | |
| HMMM messages are published using:
 | |
| ```go
 | |
| router := hmmm.NewRouter(t.runtime.PubSub)
 | |
| router.Publish(ctx, message)
 | |
| ```
 | |
| 
 | |
| **Message Structure:**
 | |
| ```go
 | |
| hmmm.Message{
 | |
|     Topic:     "CHORUS/hmmm/{category}",
 | |
|     Type:      "reasoning_start|reasoning_reply|reasoning_query|decision_proposal",
 | |
|     Payload:   map[string]interface{}{...},
 | |
|     Version:   "1.0",
 | |
|     IssueID:   issueID,
 | |
|     ThreadID:  threadID,
 | |
|     MsgID:     msgID,
 | |
|     NodeID:    nodeID,
 | |
|     HopCount:  0,
 | |
|     Timestamp: time.Now().Unix(),
 | |
|     Message:   "Human-readable summary",
 | |
| }
 | |
| ```
 | |
| 
 | |
| ### UCXL Integration
 | |
| 
 | |
| UCXL addresses are parsed and resolved using:
 | |
| ```go
 | |
| parsed, err := ucxl.ParseUCXLAddress(address)
 | |
| content, metadata, err := t.runtime.EncryptedStorage.RetrieveUCXLContent(address)
 | |
| ```
 | |
| 
 | |
| ### Decision Storage
 | |
| 
 | |
| Decisions are stored in DHT using the storage interface:
 | |
| ```go
 | |
| func (t *TerminalInterface) saveDecision(decision *Decision) error
 | |
| func (t *TerminalInterface) getDecisionByID(decisionID string) (*Decision, error)
 | |
| func (t *TerminalInterface) getActiveDecisions() ([]Decision, error)
 | |
| ```
 | |
| 
 | |
| ### PubSub Topics
 | |
| 
 | |
| **Published Topics:**
 | |
| - `CapabilityBcast` - Agent presence announcements
 | |
| - `CHORUS/hmmm/{topic}` - HMMM reasoning messages
 | |
| - `CHORUS/hmmm/query/{topic}` - HMMM queries
 | |
| - `CHORUS/hmmm/decision/{topic}` - Decision proposals
 | |
| - `CHORUS/decisions/vote/{decisionID}` - Vote announcements
 | |
| - `CHORUS/decisions/proposal/{type}` - Decision proposals
 | |
| - `CHORUS/patches/submit` - Patch submissions
 | |
| - `CHORUS/collab/{event}` - Collaborative events
 | |
| 
 | |
| ## User Experience Features
 | |
| 
 | |
| ### Interactive Wizards
 | |
| 
 | |
| All complex operations use multi-step interactive wizards:
 | |
| - Clear prompts with examples
 | |
| - Input validation
 | |
| - Confirmation steps
 | |
| - Progress feedback
 | |
| - Error handling with guidance
 | |
| 
 | |
| ### Visual Feedback
 | |
| 
 | |
| Rich terminal output with:
 | |
| - Emoji indicators (✅ ❌ 🔄 📊 🗳️ etc.)
 | |
| - Color support (via ANSI codes in web interface)
 | |
| - Progress indicators
 | |
| - Status summaries
 | |
| - Formatted tables and lists
 | |
| 
 | |
| ### Help System
 | |
| 
 | |
| Comprehensive help at every level:
 | |
| - Main help menu
 | |
| - Sub-command help
 | |
| - Inline examples
 | |
| - Best practices
 | |
| - Troubleshooting guidance
 | |
| 
 | |
| ### Error Handling
 | |
| 
 | |
| User-friendly error messages:
 | |
| - Clear problem description
 | |
| - Suggested solutions
 | |
| - Alternative actions
 | |
| - Non-blocking errors with warnings
 | |
| 
 | |
| ## Web Interface
 | |
| 
 | |
| ### Home Dashboard
 | |
| 
 | |
| Provides quick access to all HAP features with cards:
 | |
| - Decision Management
 | |
| - Collaborative Editing
 | |
| - Patch Management
 | |
| - HMMM Network
 | |
| - Network Status
 | |
| - Live Updates
 | |
| 
 | |
| ### Decision Voting Interface
 | |
| 
 | |
| Full-featured web UI for decisions:
 | |
| - Decision list with vote counts
 | |
| - Inline voting with prompts
 | |
| - JavaScript-based vote submission
 | |
| - Real-time status updates
 | |
| - Color-coded vote indicators
 | |
| 
 | |
| ### API Design
 | |
| 
 | |
| RESTful JSON API:
 | |
| - Standard HTTP methods
 | |
| - JSON request/response
 | |
| - Error handling with HTTP status codes
 | |
| - Authentication ready (not yet implemented)
 | |
| 
 | |
| ### Real-time Updates
 | |
| 
 | |
| WebSocket endpoint for:
 | |
| - Decision updates
 | |
| - Vote notifications
 | |
| - Collaborative session events
 | |
| - Network status changes
 | |
| 
 | |
| **Status:** Stub implementation, connection established but no event streaming yet.
 | |
| 
 | |
| ## Development Status
 | |
| 
 | |
| ### Fully Implemented
 | |
| 
 | |
| - ✅ Terminal command processing
 | |
| - ✅ HMMM message composition (all types)
 | |
| - ✅ UCXL address parsing and browsing
 | |
| - ✅ Decision voting and proposal
 | |
| - ✅ Status reporting
 | |
| - ✅ Peer listing
 | |
| - ✅ Web bridge with basic UI
 | |
| - ✅ Decision voting API
 | |
| - ✅ Agent presence announcements
 | |
| 
 | |
| ### Partially Implemented
 | |
| 
 | |
| - ⚠️ UCXL content retrieval (depends on storage backend)
 | |
| - ⚠️ Decision storage (DHT integration)
 | |
| - ⚠️ Patch creation (wizard complete, submission pending)
 | |
| - ⚠️ Web decision proposal API
 | |
| - ⚠️ WebSocket real-time updates
 | |
| 
 | |
| ### Stub / TODO
 | |
| 
 | |
| - 🔜 Collaborative editing sessions
 | |
| - 🔜 Patch review workflow
 | |
| - 🔜 UCXL history tracking
 | |
| - 🔜 Web HMMM message interface
 | |
| - 🔜 Web collaborative editing interface
 | |
| - 🔜 Web patch management interface
 | |
| - 🔜 Authentication and authorization
 | |
| - 🔜 Session persistence
 | |
| 
 | |
| ## Best Practices
 | |
| 
 | |
| ### For Developers
 | |
| 
 | |
| **Adding New Commands:**
 | |
| 1. Add case to `commandLoop()` switch statement
 | |
| 2. Implement handler function `handle{Command}Command()`
 | |
| 3. Add help text to `printHelp()`
 | |
| 4. Document in this file
 | |
| 
 | |
| **Adding Web Endpoints:**
 | |
| 1. Add route in `startWebBridge()`
 | |
| 2. Implement handler function `web{Feature}()` or `api{Feature}()`
 | |
| 3. Follow existing HTML/JSON patterns
 | |
| 4. Add API documentation
 | |
| 
 | |
| **Error Handling:**
 | |
| ```go
 | |
| if err != nil {
 | |
|     fmt.Printf("❌ Operation failed: %v\n", err)
 | |
|     fmt.Println("💡 Try: [suggestion]")
 | |
|     return
 | |
| }
 | |
| ```
 | |
| 
 | |
| **User Feedback:**
 | |
| ```go
 | |
| fmt.Println("🔄 Processing...")
 | |
| // operation
 | |
| fmt.Println("✅ Operation successful")
 | |
| ```
 | |
| 
 | |
| ### For Users
 | |
| 
 | |
| **Effective HMMM Usage:**
 | |
| - Be specific and clear in reasoning
 | |
| - Include relevant context and background
 | |
| - Ask follow-up questions to guide discussion
 | |
| - Build on previous messages in threads
 | |
| - Avoid vague or overly broad statements
 | |
| 
 | |
| **Decision Voting:**
 | |
| - Always provide detailed reasoning
 | |
| - Consider impact on all network members
 | |
| - Vote promptly on urgent decisions
 | |
| - Use defer when more information is needed
 | |
| - Abstain when lacking relevant expertise
 | |
| 
 | |
| **UCXL Navigation:**
 | |
| - Use wildcards (*) for broad searches
 | |
| - Use temporal navigation to track changes
 | |
| - Include full context in addresses
 | |
| - Follow project naming conventions
 | |
| 
 | |
| ## Security Considerations
 | |
| 
 | |
| ### Current Implementation
 | |
| 
 | |
| - No authentication required (trusted network assumption)
 | |
| - No authorization checks
 | |
| - No input sanitization (trusted users)
 | |
| - No rate limiting
 | |
| - No session security
 | |
| 
 | |
| ### Future Enhancements
 | |
| 
 | |
| - Agent identity verification
 | |
| - Role-based access control
 | |
| - Input validation and sanitization
 | |
| - Rate limiting on votes and proposals
 | |
| - Encrypted web sessions
 | |
| - Audit logging
 | |
| 
 | |
| ## Testing
 | |
| 
 | |
| ### Manual Testing
 | |
| 
 | |
| Start HAP and exercise all commands:
 | |
| ```bash
 | |
| make build-hap
 | |
| ./build/chorus-hap
 | |
| ```
 | |
| 
 | |
| Test each command category:
 | |
| - status, peers, announce
 | |
| - hmmm (new, reply, query, decide)
 | |
| - ucxl (search, related, history, create)
 | |
| - decide (list, view, vote, propose)
 | |
| - patch (create, submit)
 | |
| - collab (start, join, list)
 | |
| - web (access all endpoints)
 | |
| 
 | |
| ### Integration Testing
 | |
| 
 | |
| Test with multiple agents:
 | |
| 1. Start autonomous agents
 | |
| 2. Start HAP
 | |
| 3. Verify presence announcement
 | |
| 4. Send HMMM messages
 | |
| 5. Propose and vote on decisions
 | |
| 6. Monitor network activity
 | |
| 
 | |
| ### Web Interface Testing
 | |
| 
 | |
| Test browser functionality:
 | |
| 1. Start web bridge: `hap> web`
 | |
| 2. Open http://localhost:8090
 | |
| 3. Test decision voting
 | |
| 4. Verify WebSocket connection
 | |
| 5. Test API endpoints with curl
 | |
| 
 | |
| ## Performance Considerations
 | |
| 
 | |
| ### Resource Usage
 | |
| 
 | |
| - **Memory:** Minimal, single-threaded scanner
 | |
| - **CPU:** Low, blocking I/O on user input
 | |
| - **Network:** Burst traffic on message sends
 | |
| - **Storage:** DHT operations on demand
 | |
| 
 | |
| ### Scalability
 | |
| 
 | |
| - Supports hundreds of concurrent agents
 | |
| - DHT lookups may slow with large decision sets
 | |
| - Web server limited by single Go routine per connection
 | |
| - WebSocket scaling depends on implementation
 | |
| 
 | |
| ## Troubleshooting
 | |
| 
 | |
| ### Common Issues
 | |
| 
 | |
| **"Failed to announce human agent presence"**
 | |
| - Check PubSub connection
 | |
| - Verify network connectivity
 | |
| - Ensure runtime is initialized
 | |
| 
 | |
| **"Storage system not available"**
 | |
| - DHT not configured
 | |
| - EncryptedStorage not initialized
 | |
| - Network partition
 | |
| 
 | |
| **"Decision not found"**
 | |
| - Decision not yet propagated
 | |
| - DHT lookup failure
 | |
| - Invalid decision ID
 | |
| 
 | |
| **"Web server error"**
 | |
| - Port 8090 already in use
 | |
| - Permission denied (use port >1024)
 | |
| - Network interface not available
 | |
| 
 | |
| ### Debug Mode
 | |
| 
 | |
| Enable verbose logging in SharedRuntime:
 | |
| ```go
 | |
| runtime.Logger.SetLevel(slog.LevelDebug)
 | |
| ```
 | |
| 
 | |
| Monitor network traffic:
 | |
| ```bash
 | |
| # Watch HMMM messages
 | |
| # Watch decision announcements
 | |
| # Check peer connections
 | |
| ```
 | |
| 
 | |
| ## Future Enhancements
 | |
| 
 | |
| ### Phase 2 (Planned)
 | |
| 
 | |
| - Full collaborative editing implementation
 | |
| - Complete patch review workflow
 | |
| - UCXL history with temporal navigation
 | |
| - Enhanced web interface with real-time updates
 | |
| - Mobile-responsive design improvements
 | |
| 
 | |
| ### Phase 3 (Future)
 | |
| 
 | |
| - Rich text editor in web interface
 | |
| - Visual diff tools
 | |
| - Decision analytics dashboard
 | |
| - Agent reputation system
 | |
| - Notification system (email, webhooks)
 | |
| - Plugin architecture for custom commands
 | |
| 
 | |
| ## Related Documentation
 | |
| 
 | |
| - `/docs/comprehensive/internal/runtime.md` - SharedRuntime integration
 | |
| - `/docs/comprehensive/pkg/hmmm.md` - HMMM protocol details
 | |
| - `/docs/comprehensive/pkg/ucxl.md` - UCXL addressing system
 | |
| - `/docs/comprehensive/pkg/storage.md` - DHT storage backend
 | |
| - `/docs/comprehensive/pkg/p2p.md` - P2P networking layer
 | |
| 
 | |
| ## Summary
 | |
| 
 | |
| The `hapui` package is the primary interface for human participation in the CHORUS network. It provides:
 | |
| 
 | |
| - **3,985 lines** of comprehensive terminal interface
 | |
| - **9 main command categories** with rich sub-menus
 | |
| - **HMMM integration** for collaborative reasoning
 | |
| - **UCXL browsing** for context navigation
 | |
| - **Decision voting** with transparency and reasoning
 | |
| - **Patch management** with temporal navigation
 | |
| - **Web bridge** for browser-based access
 | |
| - **RESTful API** for external integrations
 | |
| 
 | |
| The interface treats humans as first-class network members, providing the same capabilities as autonomous agents while adding human-friendly wizards, help systems, and visual feedback.
 | |
| 
 | |
| **Current Status:** Production-ready for terminal interface, web interface in active development with core features functional and advanced features planned for upcoming phases. |