( ctx context.Context, run Run, taskRecord Task, actor ActorContext, )
| 2285 | } |
| 2286 | |
| 2287 | func (m *Service) dispatchTaskRunPreClaim( |
| 2288 | ctx context.Context, |
| 2289 | run Run, |
| 2290 | taskRecord Task, |
| 2291 | actor ActorContext, |
| 2292 | ) error { |
| 2293 | contextPayload := m.taskRunHookContext(run, taskRecord, actor) |
| 2294 | payload := hookspkg.TaskRunPreClaimPayload{ |
| 2295 | PayloadBase: hookspkg.PayloadBase{ |
| 2296 | Event: hookspkg.HookTaskRunPreClaim, |
| 2297 | Timestamp: m.now().UTC(), |
| 2298 | }, |
| 2299 | TaskRunContext: contextPayload, |
| 2300 | Criteria: hookspkg.TaskRunClaimCriteria{ |
| 2301 | WorkspaceID: contextPayload.WorkspaceID, |
| 2302 | ClaimerSessionID: taskRunHookClaimerSessionID(run, actor), |
| 2303 | AgentName: contextPayload.AgentName, |
| 2304 | RequiredCapabilities: append([]string(nil), run.RequiredCapabilities...), |
| 2305 | PriorityMin: taskPriorityMin(taskRecord.Priority), |
| 2306 | CoordinationChannelID: contextPayload.CoordinationChannelID, |
| 2307 | }, |
| 2308 | } |
| 2309 | result, err := m.taskHooks.DispatchTaskRunPreClaim(ctx, payload) |
| 2310 | if err != nil { |
| 2311 | return err |
| 2312 | } |
| 2313 | if result.Denied { |
| 2314 | reason := strings.TrimSpace(result.DenyReason) |
| 2315 | if reason == "" { |
| 2316 | reason = "task run claim denied by hook" |
| 2317 | } |
| 2318 | return fmt.Errorf("%w: %s", ErrPermissionDenied, reason) |
| 2319 | } |
| 2320 | return nil |
| 2321 | } |
| 2322 | |
| 2323 | func (m *Service) dispatchTaskRunPostClaim( |
| 2324 | ctx context.Context, |
no test coverage detected