[agent/codex:gpt-5.4-mini] Read docs/RFC.md fully. Find ONE feature described in the sp... #44

Merged
Virgil merged 1 commit from main into dev 2026-04-03 21:30:16 +00:00
2 changed files with 41 additions and 0 deletions

View file

@ -165,6 +165,16 @@ func (service *Service) RegisterActions(registrar ActionRegistrar) {
}
}
// NewServiceWithRegistrar builds a DNS service and registers its actions in one step.
//
// service := dns.NewServiceWithRegistrar(dns.ServiceOptions{}, registrar)
// // registrar now exposes dns.resolve, dns.resolve.txt, dns.resolve.all, dns.reverse, dns.serve, dns.health, dns.discover
func NewServiceWithRegistrar(options ServiceOptions, registrar ActionRegistrar) *Service {
service := NewService(options)
service.RegisterActions(registrar)
return service
}
// HandleAction executes a DNS action by name.
//
// payload, ok, err := service.HandleAction(ActionResolve, map[string]any{

View file

@ -1566,6 +1566,37 @@ func TestServiceRegisterActionsPublishesAllActionsInOrder(t *testing.T) {
}
}
func TestNewServiceWithRegistrarBuildsAndRegistersInOneStep(t *testing.T) {
registrar := &actionRecorder{}
service := NewServiceWithRegistrar(ServiceOptions{
Records: map[string]NameRecords{
"gateway.charon.lthn": {
A: []string{"10.10.10.10"},
},
},
}, registrar)
if service == nil {
t.Fatal("expected service to be built")
}
if len(registrar.names) != len(service.ActionNames()) {
t.Fatalf("expected helper to register all actions, got %#v", registrar.names)
}
payload, ok, err := registrar.handlers[ActionResolve](map[string]any{"name": "gateway.charon.lthn"})
if err != nil {
t.Fatalf("unexpected registered handler error: %v", err)
}
if !ok {
t.Fatal("expected registered handler to resolve")
}
result, ok := payload.(ResolveAddressResult)
if !ok || len(result.Addresses) != 1 || result.Addresses[0] != "10.10.10.10" {
t.Fatalf("unexpected registered handler payload: %#v", payload)
}
}
func TestServiceActionDefinitionsHaveInvokers(t *testing.T) {
service := NewService(ServiceOptions{
Records: map[string]NameRecords{