Documentation
¶
Index ¶
- type AgentInfo
- type Artifact
- type Capabilities
- type DispatchPolicy
- type HTTPRelayTransport
- type Handler
- type Manager
- func (m *Manager) DispatchPolicy() DispatchPolicy
- func (m *Manager) Get(id string) (NodeInfo, bool)
- func (m *Manager) HandleWireMessage(msg WireMessage) bool
- func (m *Manager) Invoke(req Request) (Response, bool)
- func (m *Manager) List() []NodeInfo
- func (m *Manager) MarkOffline(id string)
- func (m *Manager) PickFor(action string) (NodeInfo, bool)
- func (m *Manager) PickRequest(req Request, mode string) (NodeInfo, bool)
- func (m *Manager) RegisterHandler(nodeID string, h Handler)
- func (m *Manager) RegisterWireSender(nodeID string, sender WireSender)
- func (m *Manager) Remove(id string) bool
- func (m *Manager) SendWireRequest(ctx context.Context, nodeID string, req Request) (Response, error)
- func (m *Manager) SetAuditPath(path string)
- func (m *Manager) SetDispatchPolicy(policy DispatchPolicy)
- func (m *Manager) SetStatePath(path string)
- func (m *Manager) SupportsAction(nodeID, action string) bool
- func (m *Manager) SupportsRequest(nodeID string, req Request) bool
- func (m *Manager) Upsert(info NodeInfo)
- type NodeInfo
- type Request
- type Response
- type Router
- type Transport
- type WebRTCTransport
- func (t *WebRTCTransport) BindSignaler(nodeID string, sender WireSender)
- func (t *WebRTCTransport) HandleSignal(msg WireMessage) error
- func (t *WebRTCTransport) Name() string
- func (t *WebRTCTransport) Send(ctx context.Context, req Request) (Response, error)
- func (t *WebRTCTransport) Snapshot() map[string]interface{}
- func (t *WebRTCTransport) UnbindSignaler(nodeID string)
- type WebsocketP2PTransport
- type WireAck
- type WireMessage
- type WireSender
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AgentInfo ¶
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"`
}
AgentInfo describes an enabled agent exposed by a remote clawgo node.
type Artifact ¶
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"`
}
Artifact describes a file/media payload returned from a node action.
type Capabilities ¶
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"`
}
Capability matrix reported by each node agent.
type DispatchPolicy ¶
type HTTPRelayTransport ¶
HTTPRelayTransport dispatches requests to node-agent endpoints over HTTP.
func (*HTTPRelayTransport) Name ¶
func (s *HTTPRelayTransport) Name() string
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
func DefaultManager ¶
func DefaultManager() *Manager
func NewManager ¶
func NewManager() *Manager
func (*Manager) DispatchPolicy ¶
func (m *Manager) DispatchPolicy() DispatchPolicy
func (*Manager) HandleWireMessage ¶
func (m *Manager) HandleWireMessage(msg WireMessage) bool
func (*Manager) MarkOffline ¶
func (*Manager) PickRequest ¶
func (*Manager) RegisterHandler ¶
func (*Manager) RegisterWireSender ¶
func (m *Manager) RegisterWireSender(nodeID string, sender WireSender)
func (*Manager) SendWireRequest ¶
func (*Manager) SetAuditPath ¶
func (*Manager) SetDispatchPolicy ¶
func (m *Manager) SetDispatchPolicy(policy DispatchPolicy)
func (*Manager) SetStatePath ¶
func (*Manager) SupportsAction ¶
func (*Manager) SupportsRequest ¶
type NodeInfo ¶
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"`
}
NodeInfo is the runtime descriptor for cross-device scheduling.
type Request ¶
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 commands.
type Response ¶
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"`
}
Envelope for node responses.
type Router ¶
type Router struct {
P2P Transport
Relay Transport
Policy DispatchPolicy
}
Router prefers p2p transport and falls back to relay.
type WebRTCTransport ¶
type WebRTCTransport struct {
// contains filtered or unexported fields
}
func NewWebRTCTransport ¶
func NewWebRTCTransport(stunServers []string, extraICEServers ...webrtc.ICEServer) *WebRTCTransport
func (*WebRTCTransport) BindSignaler ¶
func (t *WebRTCTransport) BindSignaler(nodeID string, sender WireSender)
func (*WebRTCTransport) HandleSignal ¶
func (t *WebRTCTransport) HandleSignal(msg WireMessage) error
func (*WebRTCTransport) Name ¶
func (t *WebRTCTransport) Name() string
func (*WebRTCTransport) Snapshot ¶
func (t *WebRTCTransport) Snapshot() map[string]interface{}
func (*WebRTCTransport) UnbindSignaler ¶
func (t *WebRTCTransport) UnbindSignaler(nodeID string)
type WebsocketP2PTransport ¶
type WebsocketP2PTransport struct {
Manager *Manager
}
WebsocketP2PTransport uses the persistent node websocket as a request/response tunnel while the project evolves toward a true peer data channel.
func (*WebsocketP2PTransport) Name ¶
func (s *WebsocketP2PTransport) Name() string
type WireAck ¶
type WireAck struct {
OK bool `json:"ok"`
Type string `json:"type"`
ID string `json:"id,omitempty"`
Error string `json:"error,omitempty"`
}
WireAck is the websocket response envelope for node lifecycle messages.
type WireMessage ¶
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"`
}
WireMessage is the websocket envelope for node lifecycle messages.
type WireSender ¶
type WireSender interface {
Send(msg WireMessage) error
}