agent/pkg/agentic/pid.go
Virgil aee6452688 fix(ax): remove leftover narrative comments
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 05:49:11 +00:00

73 lines
1.3 KiB
Go

// SPDX-License-Identifier: EUPL-1.2
package agentic
import (
core "dappco.re/go/core"
"dappco.re/go/core/process"
)
// alive := agentic.ProcessAlive(c, proc.ID, proc.Info().PID)
// alive := agentic.ProcessAlive(c, "", 12345)
func ProcessAlive(c *core.Core, processID string, pid int) bool {
service, ok := lookupProcessService(c)
if !ok {
return false
}
if processID != "" {
if proc, err := service.Get(processID); err == nil {
return proc.IsRunning()
}
}
if pid <= 0 {
return false
}
for _, proc := range service.Running() {
if proc.Info().PID == pid {
return true
}
}
return false
}
// terminated := agentic.ProcessTerminate(c, proc.ID, proc.Info().PID)
func ProcessTerminate(c *core.Core, processID string, pid int) bool {
service, ok := lookupProcessService(c)
if !ok {
return false
}
if processID != "" {
if err := service.Kill(processID); err == nil {
return true
}
}
if pid <= 0 {
return false
}
for _, proc := range service.Running() {
if proc.Info().PID == pid {
return service.Kill(proc.ID) == nil
}
}
return false
}
func lookupProcessService(c *core.Core) (*process.Service, bool) {
if c == nil {
return nil, false
}
result := c.Service("process")
if !result.OK {
return nil, false
}
service, ok := result.Value.(*process.Service)
return service, ok
}