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

Method ClearTaskBlock

internal/task/block_service.go:266–313  ·  view source on GitHub ↗

ClearTaskBlock clears one open task block through the service-owned transition.

(
	ctx context.Context,
	taskID string,
	blockID string,
	note string,
	actor ActorContext,
)

Source from the content-addressed store, hash-verified

264
265// ClearTaskBlock clears one open task block through the service-owned transition.
266func (m *Service) ClearTaskBlock(
267 ctx context.Context,
268 taskID string,
269 blockID string,
270 note string,
271 actor ActorContext,
272) (TaskBlock, error) {
273 if err := requireWriteAuthority(actor); err != nil {
274 return TaskBlock{}, err
275 }
276 normalizedTaskID := strings.TrimSpace(taskID)
277 normalizedBlockID := strings.TrimSpace(blockID)
278 if normalizedTaskID == "" {
279 return TaskBlock{}, fmt.Errorf("%w: task_block.task_id is required", ErrValidation)
280 }
281 if normalizedBlockID == "" {
282 return TaskBlock{}, fmt.Errorf("%w: task_block.id is required", ErrValidation)
283 }
284 normalizedNote := strings.TrimSpace(note)
285 if err := rejectTaskSecretText("task_block.clear_note", normalizedNote); err != nil {
286 return TaskBlock{}, err
287 }
288 if err := m.requireAgentSessionTaskLease(ctx, normalizedTaskID, actor); err != nil {
289 return TaskBlock{}, err
290 }
291
292 cleared, err := m.store.ClearTaskBlock(ctx, ClearTaskBlockMutation{
293 TaskID: normalizedTaskID,
294 BlockID: normalizedBlockID,
295 ClearedBy: actor.Actor,
296 ClearedAt: m.now().UTC(),
297 ClearNote: normalizedNote,
298 })
299 if err != nil {
300 return TaskBlock{}, err
301 }
302 reconciled, err := m.reconcileTaskCascade(ctx, cleared.TaskID)
303 if err != nil {
304 return TaskBlock{}, err
305 }
306 m.recordTaskBlockCleared(ctx, cleared, reconciled, actor)
307 m.dispatchTaskUnblocked(ctx, cleared, reconciled, actor)
308 m.autoEnqueueReadyTaskDetached(ctx, cleared.TaskID, autoEnqueueTrigger{
309 Kind: autoEnqueueTriggerBlockClear,
310 Ref: cleared.ID,
311 }, actor)
312 return cleared, nil
313}
314
315// RecoverTask clears task-level needs_attention escalation through the service-owned transition.
316func (m *Service) RecoverTask(ctx context.Context, id string, note string, actor ActorContext) (*Task, error) {

Callers

nothing calls this directly

Calls 9

reconcileTaskCascadeMethod · 0.95
dispatchTaskUnblockedMethod · 0.95
requireWriteAuthorityFunction · 0.85
rejectTaskSecretTextFunction · 0.85
ClearTaskBlockMethod · 0.65
nowMethod · 0.45

Tested by

no test coverage detected