agent/pkg/monitor/register.go
Snider 919dcf963f feat: factories return instances — WithService handles registration
Register factories no longer call c.RegisterService() explicitly.
WithService auto-discovers name from package path and registers.
Eliminates double-registration error.

Uses WithOption("name", "core-agent") for Options struct.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-24 20:36:17 +00:00

32 lines
745 B
Go

// SPDX-License-Identifier: EUPL-1.2
package monitor
import (
"dappco.re/go/agent/pkg/messages"
core "dappco.re/go/core"
)
// Register is the service factory for core.WithService.
// Returns the monitor Subsystem — WithService auto-registers it.
//
// core.New(
// core.WithService(monitor.Register),
// )
func Register(c *core.Core) core.Result {
mon := New()
mon.core = c
// Register IPC handler for agent lifecycle events
c.RegisterAction(func(c *core.Core, msg core.Message) core.Result {
switch ev := msg.(type) {
case messages.AgentCompleted:
mon.handleAgentCompleted(ev)
case messages.AgentStarted:
mon.handleAgentStarted(ev)
}
return core.Result{OK: true}
})
return core.Result{Value: mon, OK: true}
}