| 1 | # frozen_string_literal: true |
| 2 | |
| 3 | # One message in a CloudSession. Roles mirror the OpenAI chat contract the client |
| 4 | # already speaks (user / assistant / system). |
| 5 | class CloudMessage < ApplicationRecord |
| 6 | ROLES = %w[user assistant system].freeze |
| 7 | |
| 8 | belongs_to :cloud_session |
| 9 | |
| 10 | validates :role, presence: true, inclusion: { in: ROLES } |
| 11 | validates :content, length: { maximum: 200_000 } |
| 12 | end |