hub

package
v0.97.8 Latest Latest
Warning

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

Go to latest
Published: Jul 20, 2026 License: GPL-3.0 Imports: 11 Imported by: 0

Documentation

Overview

Package hub provides hub lifecycle management and automatic binding.

Index

Constants

This section is empty.

Variables

View Source
var Default = NewRegistry()

Functions

func LogDiscovered

func LogDiscovered()

LogDiscovered reads the homelab registry and logs discovered capabilities that are not yet registered in the hub. It does not perform automatic binding, which requires provider configuration to be set up first.

Types

type AppHealth

type AppHealth struct {
	Name   string               `json:"name"`
	Status homelab.AppStatus    `json:"status"`
	Health homelab.HealthStatus `json:"health"`
}

type Binding

type Binding struct {
	Capability CapabilityType `json:"capability"`
	App        string         `json:"app"`
	Healthy    bool           `json:"healthy"`
}

Binding is a projection of a registered capability for hub APIs.

type CapabilityHealth

type CapabilityHealth struct {
	Type        CapabilityType `json:"capability"`
	App         string         `json:"app"`
	Status      HealthStatus   `json:"status"`
	Description string         `json:"description,omitempty"`
}

type CapabilityType

type CapabilityType string

CapabilityType identifies a registered capability. For provider-backed capabilities this equals the provider ID (e.g. "karakeep").

const (
	CapKarakeep     CapabilityType = "karakeep"
	CapMiniflux     CapabilityType = "miniflux"
	CapKanboard     CapabilityType = "kanboard"
	CapTrilium      CapabilityType = "trilium"
	CapMemos        CapabilityType = "memos"
	CapFireflyiii   CapabilityType = "fireflyiii"
	CapTransmission CapabilityType = "transmission"
	CapNocodb       CapabilityType = "nocodb"
	CapGitea        CapabilityType = "gitea"
	CapGithub       CapabilityType = "github"
	CapDevops       CapabilityType = "devops"
	CapExample      CapabilityType = "example"
	CapNotify       CapabilityType = "notify"
	CapAgent        CapabilityType = "agent"
	CapClip         CapabilityType = "clip"
)

type Checker

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

func NewChecker

func NewChecker(registry *Registry) *Checker

func (*Checker) Check

func (c *Checker) Check(ctx context.Context) *HealthResult

func (*Checker) CheckCapability

func (c *Checker) CheckCapability(_ context.Context, capType CapabilityType) (*CapabilityHealth, error)

type Descriptor

type Descriptor struct {
	Type        CapabilityType `json:"type"`
	App         string         `json:"app"`
	Description string         `json:"description,omitzero"`
	Operations  []Operation    `json:"operations,omitzero"`
	Events      []EventDef     `json:"events,omitzero"`
	Instance    any            `json:"-"`
	Healthy     bool           `json:"healthy"`
}

Descriptor is the hub metadata for a registered capability.

type DiscoveredBinding

type DiscoveredBinding struct {
	Capability CapabilityType
	App        string
	Endpoint   *homelab.EndpointInfo
	Auth       *homelab.AuthInfo
	Bound      bool
}

DiscoveredBinding represents a capability that has been discovered but not yet registered in the hub as a full-capability descriptor.

func AutoBind

func AutoBind() []DiscoveredBinding

AutoBind reads the homelab registry and returns a list of discovered bindings together with their registration status in the hub.

type EndpointHealthChecker

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

EndpointHealthChecker probes HTTP endpoints discovered on homelab apps to determine their health status.

func NewEndpointHealthChecker

func NewEndpointHealthChecker(timeout time.Duration) *EndpointHealthChecker

NewEndpointHealthChecker creates a health checker with the given HTTP request timeout.

func (*EndpointHealthChecker) Check

func (c *EndpointHealthChecker) Check(ctx context.Context, healthURL string) (HealthStatus, error)

Check probes a single health URL and returns whether the endpoint is healthy.

func (*EndpointHealthChecker) CheckCapabilities

func (c *EndpointHealthChecker) CheckCapabilities(ctx context.Context, registry *Registry) []CapabilityHealth

CheckCapabilities probes all discovered endpoint health URLs across all homelab apps and builds CapabilityHealth entries. Capabilities that are already registered in the hub registry are skipped to avoid duplicates.

type EventDef

type EventDef struct {
	Name        string `json:"name"`
	Description string `json:"description,omitzero"`
}

EventDef describes an event that a capability emits.

type HealthResult

type HealthResult struct {
	Status      HealthStatus       `json:"status"`
	Timestamp   time.Time          `json:"timestamp"`
	Details     []CapabilityHealth `json:"details,omitempty"`
	AppStatuses []AppHealth        `json:"app_statuses,omitempty"`
}

type HealthStatus

type HealthStatus string
const (
	HealthHealthy   HealthStatus = "healthy"
	HealthDegraded  HealthStatus = "degraded"
	HealthUnhealthy HealthStatus = "unhealthy"
)

type Operation

type Operation struct {
	Name        string     `json:"name"`
	Description string     `json:"description,omitzero"`
	Input       []ParamDef `json:"input,omitzero"`
	Output      []ParamDef `json:"output,omitzero"`
	Scopes      []string   `json:"scopes,omitzero"`
}

Operation describes a capability operation for discovery and auth scopes.

type ParamDef

type ParamDef struct {
	Name        string `json:"name"`
	Type        string `json:"type"`
	Description string `json:"description,omitzero"`
	Required    bool   `json:"required,omitzero"`
}

ParamDef describes a parameter for an operation.

type Registry

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

func NewRegistry

func NewRegistry() *Registry

func (*Registry) Bindings

func (r *Registry) Bindings() []Binding

Bindings returns all registered capability bindings sorted by type.

func (*Registry) Get

func (r *Registry) Get(capability CapabilityType) (Descriptor, bool)

func (*Registry) List

func (r *Registry) List() []Descriptor

func (*Registry) Register

func (r *Registry) Register(desc Descriptor) error

func (*Registry) Unregister

func (r *Registry) Unregister(capType CapabilityType)

Unregister removes a capability descriptor from the hub registry.

Jump to

Keyboard shortcuts

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