mirror of
https://github.com/YspCoder/clawgo.git
synced 2026-04-13 04:27:28 +08:00
99 lines
3.7 KiB
Go
99 lines
3.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"`
|
|
}
|
|
|
|
// AgentInfo describes an enabled agent exposed by a remote clawgo node.
|
|
type AgentInfo struct {
|
|
ID string `json:"id"`
|
|
DisplayName string `json:"display_name,omitempty"`
|
|
Role string `json:"role,omitempty"`
|
|
Type string `json:"type,omitempty"`
|
|
Transport string `json:"transport,omitempty"`
|
|
ParentAgentID string `json:"parent_agent_id,omitempty"`
|
|
}
|
|
|
|
// Artifact describes a file/media payload returned from a node action.
|
|
type Artifact struct {
|
|
ID string `json:"id,omitempty"`
|
|
Name string `json:"name,omitempty"`
|
|
Kind string `json:"kind,omitempty"`
|
|
MIMEType string `json:"mime_type,omitempty"`
|
|
Storage string `json:"storage,omitempty"`
|
|
Path string `json:"path,omitempty"`
|
|
URL string `json:"url,omitempty"`
|
|
ContentText string `json:"content_text,omitempty"`
|
|
ContentB64 string `json:"content_base64,omitempty"`
|
|
SizeBytes int64 `json:"size_bytes,omitempty"`
|
|
SourcePath string `json:"source_path,omitempty"`
|
|
}
|
|
|
|
// NodeInfo is the runtime descriptor for cross-device scheduling.
|
|
type NodeInfo struct {
|
|
ID string `json:"id"`
|
|
Name string `json:"name,omitempty"`
|
|
Tags []string `json:"tags,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"`
|
|
Agents []AgentInfo `json:"agents,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"`
|
|
}
|
|
|
|
// WireMessage is the websocket envelope for node lifecycle messages.
|
|
type WireMessage struct {
|
|
Type string `json:"type"`
|
|
ID string `json:"id,omitempty"`
|
|
From string `json:"from,omitempty"`
|
|
To string `json:"to,omitempty"`
|
|
Session string `json:"session,omitempty"`
|
|
Node *NodeInfo `json:"node,omitempty"`
|
|
Request *Request `json:"request,omitempty"`
|
|
Response *Response `json:"response,omitempty"`
|
|
Payload map[string]interface{} `json:"payload,omitempty"`
|
|
}
|
|
|
|
// WireAck is the websocket response envelope for node lifecycle messages.
|
|
type WireAck struct {
|
|
OK bool `json:"ok"`
|
|
Type string `json:"type"`
|
|
ID string `json:"id,omitempty"`
|
|
Error string `json:"error,omitempty"`
|
|
}
|