MCPcopy Create free account
hub / github.com/compozy/agh / taskStatusFromPolicySnapshot

Function taskStatusFromPolicySnapshot

internal/task/manager.go:2991–3033  ·  view source on GitHub ↗
(
	currentStatus Status,
	unresolvedDependencies bool,
	approvalBlocked bool,
	pausedBlocked bool,
	openBlocks bool,
	needsAttention bool,
	attemptsExhausted bool,
	runs []Run,
)

Source from the content-addressed store, hash-verified

2989}
2990
2991func taskStatusFromPolicySnapshot(
2992 currentStatus Status,
2993 unresolvedDependencies bool,
2994 approvalBlocked bool,
2995 pausedBlocked bool,
2996 openBlocks bool,
2997 needsAttention bool,
2998 attemptsExhausted bool,
2999 runs []Run,
3000) Status {
3001 status := currentStatus.Normalize()
3002 if status == TaskStatusCanceled || status == TaskStatusDraft {
3003 return status
3004 }
3005
3006 runnableBlocked := unresolvedDependencies || approvalBlocked || pausedBlocked || openBlocks
3007 runState := taskRunPolicyState(runs)
3008 if runState.hasActive {
3009 return TaskStatusInProgress
3010 }
3011 if runState.hasLatestTerminal && !runState.hasQueuedOrClaimed {
3012 if terminalStatus, ok := taskStatusFromTerminalRun(runState.latestTerminal, attemptsExhausted); ok {
3013 return terminalStatus
3014 }
3015 }
3016
3017 if isTerminalTaskStatus(status) && !runState.hasQueuedOrClaimed {
3018 return status
3019 }
3020 if needsAttention {
3021 return TaskStatusNeedsAttention
3022 }
3023 if runState.hasQueuedOrClaimed {
3024 if runnableBlocked {
3025 return TaskStatusBlocked
3026 }
3027 return TaskStatusReady
3028 }
3029 if runnableBlocked {
3030 return TaskStatusBlocked
3031 }
3032 return TaskStatusReady
3033}
3034
3035type taskRunPolicySnapshot struct {
3036 hasActive bool

Calls 4

taskRunPolicyStateFunction · 0.85
isTerminalTaskStatusFunction · 0.85
NormalizeMethod · 0.45