Documentation
¶
Index ¶
- func RegisterBuiltInActions(m *HookManager)
- type ActionHandler
- type EventBus
- func (b *EventBus) Publish(ctx *EventContext)
- func (b *EventBus) PublishAsync(ctx *EventContext)
- func (b *EventBus) Shutdown()
- func (b *EventBus) Subscribe(event HookEvent, callback func(*EventContext)) *Subscription
- func (b *EventBus) SubscribeWithFilter(event HookEvent, callback func(*EventContext), filter func(*EventContext) bool) *Subscription
- type EventContext
- type Hook
- type HookAction
- type HookEvent
- type HookManager
- func (m *HookManager) EvaluateCondition(h *Hook, ctx *EventContext) (bool, error)
- func (m *HookManager) GetHook(id string) *Hook
- func (m *HookManager) GetHooks() []*Hook
- func (m *HookManager) GetHooksDir() string
- func (m *HookManager) LoadHooks() error
- func (m *HookManager) RegisterAction(action HookAction, handler ActionHandler)
- func (m *HookManager) StartWatcher() error
- func (m *HookManager) StopWatcher()
- func (m *HookManager) SubscribeToAllEvents()
- type Subscription
- type WebhookHandler
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func RegisterBuiltInActions ¶
func RegisterBuiltInActions(m *HookManager)
RegisterBuiltInActions registers the default action handlers.
Types ¶
type ActionHandler ¶
type ActionHandler func(hook *Hook, ctx *EventContext) error
ActionHandler is a function that executes a hook action.
type EventBus ¶
type EventBus struct {
// contains filtered or unexported fields
}
EventBus manages event distribution to subscribers.
func (*EventBus) Publish ¶
func (b *EventBus) Publish(ctx *EventContext)
Publish distributes an event to all subscribers synchronously.
func (*EventBus) PublishAsync ¶
func (b *EventBus) PublishAsync(ctx *EventContext)
PublishAsync distributes an event asynchronously via the queue.
func (*EventBus) Subscribe ¶
func (b *EventBus) Subscribe(event HookEvent, callback func(*EventContext)) *Subscription
Subscribe registers a callback for a specific event type.
func (*EventBus) SubscribeWithFilter ¶
func (b *EventBus) SubscribeWithFilter(event HookEvent, callback func(*EventContext), filter func(*EventContext) bool) *Subscription
SubscribeWithFilter registers a callback with an optional filter function.
type EventContext ¶
type EventContext struct {
Event HookEvent `json:"event"`
Timestamp time.Time `json:"timestamp"`
Data map[string]interface{} `json:"data"`
Request any `json:"request,omitempty"` // interface{} to avoid import cycle
Provider string `json:"provider,omitempty"`
Model string `json:"model,omitempty"`
Error error `json:"-"`
ErrorMessage string `json:"error,omitempty"`
}
EventContext provides the environment for hook execution.
type Hook ¶
type Hook struct {
ID string `yaml:"id" json:"id"`
Name string `yaml:"name" json:"name"`
Description string `yaml:"description" json:"description"`
Event HookEvent `yaml:"event" json:"event"`
Condition string `yaml:"condition" json:"condition"`
Action HookAction `yaml:"action" json:"action"`
Params map[string]any `yaml:"params" json:"params"`
Enabled bool `yaml:"enabled" json:"enabled"`
// FilePath is the source file (not in YAML)
FilePath string `yaml:"-" json:"-"`
}
Hook represents a single automation rule.
type HookAction ¶
type HookAction string
HookAction defines the action to be performed when a hook is triggered.
const ( ActionRetryWithFallback HookAction = "retry_with_fallback" ActionNotifyWebhook HookAction = "notify_webhook" ActionPreferProvider HookAction = "prefer_provider" ActionLogWarning HookAction = "log_warning" ActionRotateCredential HookAction = "rotate_credential" ActionRestartProvider HookAction = "restart_provider" ActionRunCommand HookAction = "run_command" )
type HookEvent ¶
type HookEvent string
HookEvent defines the type of event that can trigger a hook.
const ( EventRequestReceived HookEvent = "request_received" EventRequestFailed HookEvent = "request_failed" EventQuotaWarning HookEvent = "quota_warning" EventQuotaExceeded HookEvent = "quota_exceeded" EventModelDiscovered HookEvent = "model_discovered" EventHealthCheckFailed HookEvent = "health_check_failed" EventRoutingDecision HookEvent = "routing_decision" )
type HookManager ¶
type HookManager struct {
// contains filtered or unexported fields
}
HookManager manages the lifecycle and execution of automation hooks.
func NewHookManager ¶
func NewHookManager(hooksDir string, eventBus *EventBus) (*HookManager, error)
NewHookManager creates a new hook manager.
func (*HookManager) EvaluateCondition ¶
func (m *HookManager) EvaluateCondition(h *Hook, ctx *EventContext) (bool, error)
EvaluateCondition exposes condition evaluation for testing.
func (*HookManager) GetHook ¶
func (m *HookManager) GetHook(id string) *Hook
GetHook returns a hook by ID.
func (*HookManager) GetHooks ¶
func (m *HookManager) GetHooks() []*Hook
GetHooks returns all loaded hooks flattened.
func (*HookManager) GetHooksDir ¶
func (m *HookManager) GetHooksDir() string
GetHooksDir returns the hooks directory path.
func (*HookManager) LoadHooks ¶
func (m *HookManager) LoadHooks() error
LoadHooks loads all hooks from the hooks directory.
func (*HookManager) RegisterAction ¶
func (m *HookManager) RegisterAction(action HookAction, handler ActionHandler)
RegisterAction registers a handler for a specific action type.
func (*HookManager) StartWatcher ¶
func (m *HookManager) StartWatcher() error
StartWatcher starts a background fsnotify watcher for hot-reloading hooks.
func (*HookManager) StopWatcher ¶
func (m *HookManager) StopWatcher()
StopWatcher stops the file watcher.
func (*HookManager) SubscribeToAllEvents ¶
func (m *HookManager) SubscribeToAllEvents()
subscribeToEvents ensures the manager is subscribed to all relevant events. This is a bit tricky with reloading. Alternative: Subscribe to ALL known events unconditionally at startup.
type Subscription ¶
type Subscription struct {
ID string
Event HookEvent
Callback func(*EventContext)
Filter func(*EventContext) bool
Unsubscribe func()
}
Subscription is a handle for a registered subscriber.
type WebhookHandler ¶
type WebhookHandler struct {
// contains filtered or unexported fields
}
WebhookHandler manages webhook execution with rate limiting.
func NewWebhookHandler ¶
func NewWebhookHandler() *WebhookHandler
func (*WebhookHandler) Handle ¶
func (h *WebhookHandler) Handle(hook *Hook, ctx *EventContext) error