# frozen_string_literal: true module Jobs class StreamPostHelper < ::Jobs::Base sidekiq_options retry: false def execute(args) return unless post = Post.includes(:topic).find_by(id: args[:post_id]) return unless user = User.find_by(id: args[:user_id]) return unless args[:text] topic = post.topic reply_to = post.reply_to_post return unless user.guardian.can_see?(post) helper_mode = args[:prompt] if helper_mode == DiscourseAi::AiHelper::Assistant::EXPLAIN input = <<~TEXT.strip #{args[:text]} #{post.raw} #{topic.title} #{reply_to ? "#{reply_to.raw}" : nil} TEXT else input = args[:text] end DiscourseAi::AiHelper::Assistant.new.stream_prompt( helper_mode, input, user, "/discourse-ai/ai-helper/stream_suggestion/#{post.id}", custom_prompt: args[:custom_prompt], ) end end end