fix(agentic): keep process actions registered
Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
parent
9a8aa2bfac
commit
8c2884cc6f
2 changed files with 40 additions and 14 deletions
|
|
@ -19,21 +19,28 @@ func ProcessRegister(c *core.Core) core.Result {
|
|||
if c == nil {
|
||||
return core.Result{Value: core.E("agentic.ProcessRegister", "core is required", nil), OK: false}
|
||||
}
|
||||
if result := c.Service("process"); result.OK {
|
||||
return core.Result{OK: true}
|
||||
}
|
||||
|
||||
factory := process.NewService(process.Options{})
|
||||
instance, err := factory(c)
|
||||
if err != nil {
|
||||
return core.Result{Value: core.E("agentic.ProcessRegister", "create process service", err), OK: false}
|
||||
}
|
||||
service, ok := instance.(*process.Service)
|
||||
if !ok {
|
||||
return core.Result{Value: core.E("agentic.ProcessRegister", "unexpected process service type", nil), OK: false}
|
||||
}
|
||||
if registerResult := c.RegisterService("process", service); !registerResult.OK {
|
||||
return registerResult
|
||||
var service *process.Service
|
||||
if result := c.Service("process"); result.OK {
|
||||
existing, ok := result.Value.(*process.Service)
|
||||
if !ok || existing == nil {
|
||||
return core.Result{Value: core.E("agentic.ProcessRegister", "unexpected process service type", nil), OK: false}
|
||||
}
|
||||
service = existing
|
||||
} else {
|
||||
factory := process.NewService(process.Options{})
|
||||
instance, err := factory(c)
|
||||
if err != nil {
|
||||
return core.Result{Value: core.E("agentic.ProcessRegister", "create process service", err), OK: false}
|
||||
}
|
||||
created, ok := instance.(*process.Service)
|
||||
if !ok {
|
||||
return core.Result{Value: core.E("agentic.ProcessRegister", "unexpected process service type", nil), OK: false}
|
||||
}
|
||||
service = created
|
||||
if registerResult := c.RegisterService("process", service); !registerResult.OK {
|
||||
return registerResult
|
||||
}
|
||||
}
|
||||
|
||||
handlers := &processActionHandlers{service: service}
|
||||
|
|
|
|||
|
|
@ -38,6 +38,25 @@ func TestProcessRegister_ProcessRegister_Ugly_DoubleRegister(t *testing.T) {
|
|||
assert.True(t, r2.OK, "second ProcessRegister call should not fail")
|
||||
}
|
||||
|
||||
func TestProcessRegister_ProcessRegister_Ugly_PreRegisteredService(t *testing.T) {
|
||||
t.Setenv("CORE_WORKSPACE", t.TempDir())
|
||||
|
||||
c := core.New()
|
||||
factory := process.NewService(process.Options{})
|
||||
instance, err := factory(c)
|
||||
require.NoError(t, err)
|
||||
|
||||
service, ok := instance.(*process.Service)
|
||||
require.True(t, ok)
|
||||
require.True(t, c.RegisterService("process", service).OK)
|
||||
|
||||
result := ProcessRegister(c)
|
||||
require.True(t, result.OK)
|
||||
assert.True(t, c.Action("process.run").Exists(), "existing process service should still register actions")
|
||||
assert.True(t, c.Action("process.start").Exists(), "existing process service should still register actions")
|
||||
assert.True(t, c.Action("process.kill").Exists(), "existing process service should still register actions")
|
||||
}
|
||||
|
||||
func TestProcessRegister_HandleRun_Good(t *testing.T) {
|
||||
t.Setenv("CORE_WORKSPACE", t.TempDir())
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue