registry

package
v0.7.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 14, 2026 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DiscoverySignature added in v0.2.0

type DiscoverySignature struct {
	Name        string `json:"name"`
	Description string `json:"description"`
}

func NewDiscoverySignature added in v0.2.0

func NewDiscoverySignature(name, description string, fullSchema json.RawMessage) (*DiscoverySignature, error)

type EventType

type EventType int
const (
	EventRegistered EventType = iota
	EventUnregistered
	EventHealthChanged
)

type HealthStatus

type HealthStatus string
const (
	HealthUnknown   HealthStatus = "unknown"
	HealthHealthy   HealthStatus = "healthy"
	HealthUnhealthy HealthStatus = "unhealthy"
)

type LazySchemaCache added in v0.7.0

type LazySchemaCache struct {
	// contains filtered or unexported fields
}

func NewLazySchemaCache added in v0.7.0

func NewLazySchemaCache(ttl time.Duration) *LazySchemaCache

func (*LazySchemaCache) CacheWithTTL added in v0.7.0

func (c *LazySchemaCache) CacheWithTTL(toolName string, schema ToolSchema, ttl time.Duration)

func (*LazySchemaCache) Clear added in v0.7.0

func (c *LazySchemaCache) Clear()

func (*LazySchemaCache) GetFullSchema added in v0.7.0

func (c *LazySchemaCache) GetFullSchema(toolName string) (ToolSchema, bool)

func (*LazySchemaCache) GetStub added in v0.7.0

func (c *LazySchemaCache) GetStub(toolName string) (ToolStub, bool)

func (*LazySchemaCache) Invalidate added in v0.7.0

func (c *LazySchemaCache) Invalidate(toolName string)

func (*LazySchemaCache) SetFullSchema added in v0.7.0

func (c *LazySchemaCache) SetFullSchema(toolName string, schema ToolSchema)

func (*LazySchemaCache) Stats added in v0.7.0

func (c *LazySchemaCache) Stats() (cached int, expired int)

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)
	Close()
}

func NewLifecycleManager

func NewLifecycleManager(logger *slog.Logger) LifecycleManager

type MatchCriteria

type MatchCriteria struct {
	Capabilities []string
	Transport    TransportType
	MinHealth    HealthStatus
	MaxLoad      float64
}

type Namespace added in v0.7.0

type Namespace struct {
	Name           string                `yaml:"name"`
	Description    string                `yaml:"description,omitempty"`
	Servers        []string              `yaml:"servers"`
	Children       map[string]*Namespace `yaml:"children,omitempty"`
	AllowedClients []string              `yaml:"allowed_clients,omitempty"`
}

type NamespaceConfig added in v0.7.0

type NamespaceConfig struct {
	Namespaces map[string]*Namespace `yaml:"namespaces,omitempty"`
}

type NamespaceManager added in v0.7.0

type NamespaceManager interface {
	Load(ctx context.Context, r io.Reader) error
	GetNamespace(ctx context.Context, name string) (*Namespace, error)
	GetToolsForNamespace(ctx context.Context, ns string) ([]string, error)
	CheckAccess(ctx context.Context, ns, clientID string) error
	GetAllNamespaces(ctx context.Context) []*Namespace
	GetServerNamespace(ctx context.Context, serverID string) (string, error)
	GetChildNamespaces(ctx context.Context, parentName string) ([]string, error)
	ListToolsInNamespace(ctx context.Context, nsName string) ([]ToolEntry, error)
}

func NewNamespaceManager added in v0.7.0

func NewNamespaceManager(logger *slog.Logger) NamespaceManager

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()
}

func NewRegistry

func NewRegistry(logger *slog.Logger, persistPath string) Registry

type RegistryConfig added in v0.2.0

type RegistryConfig struct {
	CompactByDefault  bool `yaml:"compact_by_default"`
	MaxSignatureBytes int  `yaml:"max_signature_bytes"`
}

func LoadRegistryConfig added in v0.2.0

func LoadRegistryConfig(r io.Reader) (*RegistryConfig, error)

func (*RegistryConfig) Validate added in v0.2.0

func (c *RegistryConfig) Validate() error

type RegistryEvent

type RegistryEvent struct {
	Type    EventType
	Server  *ServerEntry
	Details string
}

type SchemaCache added in v0.2.0

type SchemaCache interface {
	Get(key string) (json.RawMessage, bool)
	Set(key string, schema json.RawMessage)
	Delete(key string)
	Clear()
}

func NewLRUSchemaCache added in v0.2.0

func NewLRUSchemaCache(maxSize int, maxAge time.Duration, onEvict func(key string, schema json.RawMessage)) SchemaCache

type SchemaCacheManager added in v0.2.0

type SchemaCacheManager struct {
	// contains filtered or unexported fields
}

func NewSchemaCacheManager added in v0.2.0

func NewSchemaCacheManager(serverName string, maxSize int, maxAge time.Duration, logger interface{ Debug(msg string, args ...any) }) *SchemaCacheManager

func (*SchemaCacheManager) GetFullSchema added in v0.2.0

func (m *SchemaCacheManager) GetFullSchema(ctx context.Context, toolName string) (json.RawMessage, error)

func (*SchemaCacheManager) Invalidate added in v0.2.0

func (m *SchemaCacheManager) Invalidate(toolName string)

func (*SchemaCacheManager) InvalidateAll added in v0.2.0

func (m *SchemaCacheManager) InvalidateAll()

func (*SchemaCacheManager) SetFullSchema added in v0.2.0

func (m *SchemaCacheManager) SetFullSchema(ctx context.Context, toolName string, schema json.RawMessage)

type ServerConfig

type ServerConfig struct {
	ID      string
	Name    string
	Command []string
	Env     []string
	Dir     string
	Port    int
}

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 ServerStats struct {
	RequestCount int64
	ErrorCount   int64
	AvgLatencyMs float64
	Load         float64
}

type ServerStatus

type ServerStatus struct {
	ID         string
	State      ServerState
	Uptime     time.Duration
	MemoryMB   float64
	CPUPercent float64
	ExitCode   int
	Error      string
}

type Tool added in v0.2.0

type Tool struct {
	Signature  DiscoverySignature `json:"signature"`
	FullSchema json.RawMessage    `json:"full_schema,omitempty"`
	ServerID   string             `json:"server_id"`
}

type ToolEntry

type ToolEntry struct {
	Name      string
	Namespace string
	ServerID  string
}

type ToolEvent

type ToolEvent struct {
	Type     ToolEventType
	ServerID string
	ToolName string
	Tool     ToolEntry
}

type ToolEventType

type ToolEventType int
const (
	ToolEventRegistered ToolEventType = iota
	ToolEventUnregistered
)

type ToolMatch

type ToolMatch struct {
	Tool    ToolEntry
	Score   float64
	MatchOn string
}

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 ToolSchema added in v0.7.0

type ToolSchema struct {
	Name        string          `json:"name"`
	Description string          `json:"description"`
	InputSchema json.RawMessage `json:"inputSchema"`
	ServerID    string          `json:"serverId"`
}

type ToolSchemaRegistry added in v0.2.0

type ToolSchemaRegistry interface {
	RegisterTool(ctx context.Context, tool Tool) error
	UnregisterTool(ctx context.Context, serverID, toolName string) error
	GetDiscoverySignatures() []DiscoverySignature
	GetFullSchema(ctx context.Context, toolName string) (json.RawMessage, error)
	RefreshManifest(ctx context.Context) error
}

func NewToolSchemaRegistry added in v0.2.0

func NewToolSchemaRegistry() ToolSchemaRegistry

type ToolStub added in v0.7.0

type ToolStub struct {
	Name        string `json:"name"`
	Description string `json:"description"`
	Category    string `json:"category,omitempty"`
}

type TransportType

type TransportType string
const (
	TransportStdio TransportType = "stdio"
	TransportHTTP  TransportType = "http"
	TransportSSE   TransportType = "sse"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL