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

Method CompleteRun

internal/task/manager.go:2097–2151  ·  view source on GitHub ↗

CompleteRun marks one running task run as completed and reconciles task state.

(
	ctx context.Context,
	runID string,
	result RunResult,
	actor ActorContext,
)

Source from the content-addressed store, hash-verified

2095
2096// CompleteRun marks one running task run as completed and reconciles task state.
2097func (m *Service) CompleteRun(
2098 ctx context.Context,
2099 runID string,
2100 result RunResult,
2101 actor ActorContext,
2102) (*Run, error) {
2103 if err := requireWriteAuthority(actor); err != nil {
2104 return nil, err
2105 }
2106
2107 normalizedResult, err := normalizeRunResult(result)
2108 if err != nil {
2109 return nil, err
2110 }
2111
2112 run, taskRecord, err := m.loadRunWithTask(ctx, runID)
2113 if err != nil {
2114 return nil, err
2115 }
2116 if strings.TrimSpace(run.ClaimTokenHash) != "" {
2117 return nil, fmt.Errorf("%w: task run %q requires token-fenced completion", ErrInvalidClaimToken, run.ID)
2118 }
2119 if err := requireRunTransition(run, TaskRunStatusCompleted); err != nil {
2120 return nil, err
2121 }
2122
2123 run.Status = TaskRunStatusCompleted
2124 run.Result = cloneRawJSON(normalizedResult.Value)
2125 run.Error = ""
2126 run.ClaimToken = ""
2127 run.LeaseUntil = time.Time{}
2128 run.HeartbeatAt = time.Time{}
2129 run.EndedAt = m.now().UTC()
2130 if err := m.stopTerminalRunSession(ctx, run, StopReasonCompleted); err != nil {
2131 return nil, err
2132 }
2133 if err := m.store.UpdateTaskRun(ctx, run); err != nil {
2134 return nil, err
2135 }
2136
2137 reconciledTask, err := m.reconcileTaskCascade(ctx, taskRecord.ID)
2138 if err != nil {
2139 return nil, err
2140 }
2141 if err := m.recordTaskEvent(ctx, run.TaskID, run.ID, taskEventRunCompleted, actor, completedRunPayload{
2142 Status: run.Status,
2143 TaskStatus: reconciledTask.Status,
2144 Result: cloneRawJSON(run.Result),
2145 }); err != nil {
2146 return nil, err
2147 }
2148 m.dispatchTerminalWake(ctx, reconciledTask, run, actor)
2149
2150 return &run, nil
2151}
2152
2153// FailRun marks one starting or running task run as failed and reconciles task state.
2154func (m *Service) FailRun(

Callers

nothing calls this directly

Calls 11

loadRunWithTaskMethod · 0.95
reconcileTaskCascadeMethod · 0.95
recordTaskEventMethod · 0.95
dispatchTerminalWakeMethod · 0.95
requireWriteAuthorityFunction · 0.85
normalizeRunResultFunction · 0.85
requireRunTransitionFunction · 0.85
cloneRawJSONFunction · 0.70
UpdateTaskRunMethod · 0.65
nowMethod · 0.45

Tested by

no test coverage detected