Files
clawgo/pkg/nodes/types.go

51 lines
1.7 KiB
Go

package nodes
import "time"
// Capability matrix reported by each node agent.
type Capabilities struct {
Run bool `json:"run"`
Invoke bool `json:"invoke"`
Model bool `json:"model"`
Camera bool `json:"camera"`
Screen bool `json:"screen"`
Location bool `json:"location"`
Canvas bool `json:"canvas"`
}
// NodeInfo is the runtime descriptor for cross-device scheduling.
type NodeInfo struct {
ID string `json:"id"`
Name string `json:"name,omitempty"`
OS string `json:"os,omitempty"`
Arch string `json:"arch,omitempty"`
Version string `json:"version,omitempty"`
Endpoint string `json:"endpoint,omitempty"`
Token string `json:"token,omitempty"`
Capabilities Capabilities `json:"capabilities"`
Actions []string `json:"actions,omitempty"`
Models []string `json:"models,omitempty"`
RegisteredAt time.Time `json:"registered_at,omitempty"`
LastSeenAt time.Time `json:"last_seen_at"`
Online bool `json:"online"`
}
// Envelope for node commands.
type Request struct {
Action string `json:"action"`
Node string `json:"node,omitempty"`
Task string `json:"task,omitempty"`
Model string `json:"model,omitempty"`
Args map[string]interface{} `json:"args,omitempty"`
}
// Envelope for node responses.
type Response struct {
OK bool `json:"ok"`
Code string `json:"code,omitempty"`
Error string `json:"error,omitempty"`
Node string `json:"node,omitempty"`
Action string `json:"action,omitempty"`
Payload map[string]interface{} `json:"payload,omitempty"`
}