5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'app/controllers/collavre/tasks_controller.rb', line 5
def cancel
task = Task.find(params[:id])
creative = task.creative || Creative.find_by(id: task.trigger_event_payload&.dig("creative", "id"))
unless creative && creative.has_permission?(Current.user, :feedback)
return head :forbidden
end
unless %w[running pending queued pending_approval delegated].include?(task.status)
return head :unprocessable_entity
end
was_delegated = task.status == "delegated"
task.update!(status: "cancelled")
if was_delegated && task.agent
Collavre::Orchestration::ResourceTracker.for(task.agent).release!(task.id)
Collavre::Orchestration::AgentOrchestrator.dequeue_next_for_topic(task.topic_id, task.creative_id)
end
abort_agent_session(task)
head :ok
end
|