- Add availability broadcasting every 30s showing real working status - Replace constant capability broadcasts with change-based system - Implement persistent capability storage in ~/.config/bzzz/ - Add SimpleTaskTracker for real task status monitoring - Only broadcast capabilities on startup or when models/capabilities change - Add proper Hive API URL configuration and integration - Fix capability change detection with proper comparison logic This eliminates P2P mesh spam and provides accurate node availability. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
118 lines
4.6 KiB
Go
118 lines
4.6 KiB
Go
package hive
|
|
|
|
import "time"
|
|
|
|
// Project represents a project managed by the Hive system
|
|
type Project struct {
|
|
ID int `json:"id"`
|
|
Name string `json:"name"`
|
|
Description string `json:"description"`
|
|
Status string `json:"status"`
|
|
GitURL string `json:"git_url"`
|
|
Owner string `json:"owner"`
|
|
Repository string `json:"repository"`
|
|
Branch string `json:"branch"`
|
|
BzzzEnabled bool `json:"bzzz_enabled"`
|
|
ReadyToClaim bool `json:"ready_to_claim"`
|
|
PrivateRepo bool `json:"private_repo"`
|
|
GitHubTokenRequired bool `json:"github_token_required"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
Metadata map[string]interface{} `json:"metadata,omitempty"`
|
|
}
|
|
|
|
// Task represents a task (GitHub issue) from the Hive system
|
|
type Task struct {
|
|
ID int `json:"id"`
|
|
ProjectID int `json:"project_id"`
|
|
ProjectName string `json:"project_name"`
|
|
GitURL string `json:"git_url"`
|
|
Owner string `json:"owner"`
|
|
Repository string `json:"repository"`
|
|
Branch string `json:"branch"`
|
|
|
|
// GitHub issue fields
|
|
IssueNumber int `json:"issue_number"`
|
|
Title string `json:"title"`
|
|
Description string `json:"description"`
|
|
State string `json:"state"`
|
|
Assignee string `json:"assignee,omitempty"`
|
|
|
|
// Task metadata
|
|
TaskType string `json:"task_type"`
|
|
Priority int `json:"priority"`
|
|
Labels []string `json:"labels"`
|
|
Requirements []string `json:"requirements,omitempty"`
|
|
Deliverables []string `json:"deliverables,omitempty"`
|
|
Context map[string]interface{} `json:"context,omitempty"`
|
|
|
|
// Timestamps
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
// TaskClaim represents a task claim in the Hive system
|
|
type TaskClaim struct {
|
|
ID int `json:"id"`
|
|
ProjectID int `json:"project_id"`
|
|
TaskID int `json:"task_id"`
|
|
AgentID string `json:"agent_id"`
|
|
Status string `json:"status"` // claimed, in_progress, completed, failed
|
|
ClaimedAt time.Time `json:"claimed_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
Results map[string]interface{} `json:"results,omitempty"`
|
|
}
|
|
|
|
// ProjectActivationRequest represents a request to activate/deactivate a project
|
|
type ProjectActivationRequest struct {
|
|
BzzzEnabled bool `json:"bzzz_enabled"`
|
|
ReadyToClaim bool `json:"ready_to_claim"`
|
|
}
|
|
|
|
// ProjectRegistrationRequest represents a request to register a new project
|
|
type ProjectRegistrationRequest struct {
|
|
Name string `json:"name"`
|
|
Description string `json:"description"`
|
|
GitURL string `json:"git_url"`
|
|
PrivateRepo bool `json:"private_repo"`
|
|
BzzzEnabled bool `json:"bzzz_enabled"`
|
|
AutoActivate bool `json:"auto_activate"`
|
|
}
|
|
|
|
// AgentCapability represents an agent's capabilities for task matching
|
|
type AgentCapability struct {
|
|
AgentID string `json:"agent_id"`
|
|
NodeID string `json:"node_id"`
|
|
Capabilities []string `json:"capabilities"`
|
|
Models []string `json:"models"`
|
|
Status string `json:"status"`
|
|
LastSeen time.Time `json:"last_seen"`
|
|
}
|
|
|
|
// CoordinationEvent represents a P2P coordination event
|
|
type CoordinationEvent struct {
|
|
EventID string `json:"event_id"`
|
|
ProjectID int `json:"project_id"`
|
|
TaskID int `json:"task_id"`
|
|
EventType string `json:"event_type"` // task_claimed, plan_proposed, escalated, completed
|
|
AgentID string `json:"agent_id"`
|
|
Message string `json:"message"`
|
|
Context map[string]interface{} `json:"context,omitempty"`
|
|
Timestamp time.Time `json:"timestamp"`
|
|
}
|
|
|
|
// ErrorResponse represents an error response from the Hive API
|
|
type ErrorResponse struct {
|
|
Error string `json:"error"`
|
|
Message string `json:"message"`
|
|
Code string `json:"code,omitempty"`
|
|
}
|
|
|
|
// HealthStatus represents the health status of the Hive system
|
|
type HealthStatus struct {
|
|
Status string `json:"status"`
|
|
Version string `json:"version"`
|
|
Database string `json:"database"`
|
|
Uptime string `json:"uptime"`
|
|
CheckedAt time.Time `json:"checked_at"`
|
|
} |