Documentation
¶
Index ¶
- type EventType
- type HealthStatus
- type LifecycleManager
- type MatchCriteria
- type Registry
- type RegistryEvent
- type ServerConfig
- type ServerEntry
- type ServerHandle
- type ServerState
- type ServerStats
- type ServerStatus
- type ToolEntry
- type ToolEvent
- type ToolEventType
- type ToolMatch
- type ToolRegistry
- type TransportType
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type HealthStatus ¶
type HealthStatus string
const ( HealthUnknown HealthStatus = "unknown" HealthHealthy HealthStatus = "healthy" HealthUnhealthy HealthStatus = "unhealthy" )
type LifecycleManager ¶
type LifecycleManager interface {
Start(ctx context.Context, config ServerConfig) (ServerHandle, error)
Stop(ctx context.Context, id string) error
Kill(ctx context.Context, id string) error
Restart(ctx context.Context, id string) error
Status(ctx context.Context, id string) (ServerStatus, error)
List(ctx context.Context) ([]ServerStatus, error)
}
func NewLifecycleManager ¶
func NewLifecycleManager(logger *slog.Logger) LifecycleManager
type MatchCriteria ¶
type MatchCriteria struct {
Capabilities []string
Transport TransportType
MinHealth HealthStatus
MaxLoad float64
}
type Registry ¶
type Registry interface {
Register(ctx context.Context, entry ServerEntry) error
Unregister(ctx context.Context, id string) error
Update(ctx context.Context, entry ServerEntry) error
Get(ctx context.Context, id string) (*ServerEntry, error)
List(ctx context.Context) ([]*ServerEntry, error)
FindByCapability(ctx context.Context, capability string) ([]*ServerEntry, error)
FindByTransport(ctx context.Context, transport TransportType) ([]*ServerEntry, error)
FindBest(ctx context.Context, criteria MatchCriteria) (*ServerEntry, error)
UpdateHealth(ctx context.Context, id string, health HealthStatus) error
ListUnhealthy(ctx context.Context) ([]*ServerEntry, error)
Save(ctx context.Context) error
Load(ctx context.Context) error
Subscribe(ch chan<- RegistryEvent) func()
}
type RegistryEvent ¶
type RegistryEvent struct {
Type EventType
Server *ServerEntry
Details string
}
type ServerConfig ¶
type ServerEntry ¶
type ServerEntry struct {
ID string
Config *ServerConfig
Address string
Transport TransportType
Capabilities []string
Health HealthStatus
Stats ServerStats
RegisteredAt time.Time
LastSeenAt time.Time
}
type ServerHandle ¶
type ServerHandle struct {
ID string
Config ServerConfig
PID int
}
type ServerState ¶
type ServerState string
const ( StateRunning ServerState = "running" StateStopped ServerState = "stopped" StateError ServerState = "error" StateStarting ServerState = "starting" )
type ServerStats ¶
type ServerStatus ¶
type ToolEvent ¶
type ToolEvent struct {
Type ToolEventType
ServerID string
ToolName string
Tool ToolEntry
}
type ToolEventType ¶
type ToolEventType int
const ( ToolEventRegistered ToolEventType = iota ToolEventUnregistered )
type ToolRegistry ¶
type ToolRegistry interface {
RegisterTool(ctx context.Context, serverID, toolName string) error
UnregisterTool(ctx context.Context, serverID, toolName string) error
GetToolServer(ctx context.Context, toolName string) (string, error)
SearchTools(ctx context.Context, query string) []ToolMatch
ListAllTools(ctx context.Context) []ToolEntry
SubscribeTools(ch chan<- ToolEvent) func()
}
func NewToolRegistry ¶
func NewToolRegistry(logger interface{ Debug(msg string, args ...any) }) ToolRegistry
type TransportType ¶
type TransportType string
const ( TransportStdio TransportType = "stdio" TransportHTTP TransportType = "http" TransportSSE TransportType = "sse" )
Click to show internal directories.
Click to hide internal directories.