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. |