feat: Add support for persistent copilot threads and messages (#11489)

The agents can see the previous conversations with the copilot if needed
with this change. We would have to cleanup the data after a while. For
now, that is not considered.

This PR adds:
- A new model for copilot_threads (intentionally named thread instead of
conversation to avoid confusion), copilot_messages
- Add the controller to fetch previous threads and messages.
This commit is contained in:
Pranav
2025-05-15 17:37:04 -07:00
committed by GitHub
parent a4c7b73888
commit 4f4ef0389b
16 changed files with 278 additions and 2 deletions

View File

@@ -0,0 +1,25 @@
class Api::V1::Accounts::Captain::CopilotMessagesController < Api::V1::Accounts::BaseController
before_action :current_account
before_action -> { check_authorization(Captain::Assistant) }
before_action :set_copilot_thread
def index
@copilot_messages = @copilot_thread
.copilot_messages
.order(created_at: :asc)
.page(permitted_params[:page] || 1)
.per(1000)
end
private
def set_copilot_thread
@copilot_thread = Current.account.copilot_threads.find_by!(
uuid: params[:copilot_thread_id], user_id: Current.user.id
)
end
def permitted_params
params.permit(:page)
end
end

View File

@@ -0,0 +1,19 @@
class Api::V1::Accounts::Captain::CopilotThreadsController < Api::V1::Accounts::BaseController
before_action :current_account
before_action -> { check_authorization(Captain::Assistant) }
def index
@copilot_threads = Current.account.copilot_threads
.where(user_id: Current.user.id)
.includes(:user)
.order(created_at: :desc)
.page(permitted_params[:page] || 1)
.per(5)
end
private
def permitted_params
params.permit(:page)
end
end