internal/approvalgate/hold_settlement.go
Rama main · réplica de lectura del repositorio original.
package approvalgate
import (
"strings"
"github.com/yeomyeonggeori/blueprotocol/agentcontract"
"github.com/yeomyeonggeori/blueprotocol/holdrecord"
"github.com/yeomyeonggeori/blueprotocol/taskstate"
)
func SettleLatest(taskRunStore taskstate.TaskRunStore, taskRunID string, decision string, source string) {
if strings.TrimSpace(taskRunID) == "" {
return
}
pendingHold, isPending := holdrecord.LatestHold(holdrecord.Holds(taskRunStore.ListTaskEvent(taskRunID)), holdrecord.StatePending)
if !isPending {
return
}
holdrecord.Decide(taskRunStore, taskRunID, pendingHold.ID, decision, source)
}
func SettleSignal(taskRunStore taskstate.TaskRunStore, taskRunID string, approvalSignal *agentcontract.ApprovalSignal, source string) {
if approvalSignal == nil {
return
}
if !agentcontract.IsApprovalSignalName(string(*approvalSignal)) {
return
}
SettleLatest(taskRunStore, taskRunID, string(*approvalSignal), source)
}