def build_agent_prompt(artist:, title:, original_lines:, channel_lines:, fandom_lines:, asker:, channel:)
artist_text = artist.to_s.strip
title_text = title.to_s.strip
return AiGuard.rejection_message if AiGuard.system_request?(artist_text)
return AiGuard.rejection_message if AiGuard.system_request?(title_text)
originals = Array(original_lines).map(&:to_s).map(&:strip).reject(&:empty?)
parts = [INSTRUCTION, ""]
if channel_lines.any?
parts << "Recent messages in #{channel} (oldest to newest):"
parts.concat(channel_lines)
parts << ""
end
if fandom_lines.any?
parts << "Fandom / bot personas in this channel (use if relevant):"
parts.concat(fandom_lines)
parts << ""
end
parts << "Original song: #{artist_text} — #{title_text}"
parts << "Original lyrics (#{originals.length} lines):"
parts.concat(originals)
parts << ""
parts << "Write exactly #{originals.length} themed lyric lines for #{asker} in #{channel}."
AiGuard.guard_prompt(parts.join("\n"))
end