From fb6409508b916da0e1daff583f0fcfc7c54505b5 Mon Sep 17 00:00:00 2001 From: Pranav Date: Tue, 29 Apr 2025 15:42:15 -0700 Subject: [PATCH] feat: Allow customizing the responses, flows in Captain (#11385) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Ability to provide custom instructions to captain Screenshot 2025-04-28 at 6 11 43 PM --- .../dashboard/api/captain/assistant.js | 7 + .../components-next/Accordion/Accordion.vue | 39 +++ .../components-next/captain/PageLayout.vue | 19 +- .../captain/assistant/AssistantCard.vue | 7 +- .../captain/assistant/AssistantPlayground.vue | 111 +++++++ .../captain/assistant/MessageList.vue | 91 ++++++ .../assistant/EditAssistantForm.vue | 306 ++++++++++++++++++ .../i18n/locale/en/integrations.json | 48 ++- .../dashboard/captain/assistants/Edit.vue | 71 ++++ .../dashboard/captain/assistants/Index.vue | 6 +- .../dashboard/captain/captain.routes.js | 14 + config/routes.rb | 3 + .../accounts/captain/assistants_controller.rb | 26 +- enterprise/app/helpers/captain/chat_helper.rb | 27 +- .../conversation/response_builder_job.rb | 2 +- ...ox_pending_conversations_resolution_job.rb | 3 +- .../app/policies/captain/assistant_policy.rb | 4 + .../captain/llm/assistant_chat_service.rb | 2 +- .../captain/llm/system_prompts_service.rb | 4 +- .../captain/assistants_controller_spec.rb | 63 ++++ ...nding_conversations_resolution_job_spec.rb | 2 + 21 files changed, 823 insertions(+), 32 deletions(-) create mode 100644 app/javascript/dashboard/components-next/Accordion/Accordion.vue create mode 100644 app/javascript/dashboard/components-next/captain/assistant/AssistantPlayground.vue create mode 100644 app/javascript/dashboard/components-next/captain/assistant/MessageList.vue create mode 100644 app/javascript/dashboard/components-next/captain/pageComponents/assistant/EditAssistantForm.vue create mode 100644 app/javascript/dashboard/routes/dashboard/captain/assistants/Edit.vue diff --git a/app/javascript/dashboard/api/captain/assistant.js b/app/javascript/dashboard/api/captain/assistant.js index ce636e526..157eba74e 100644 --- a/app/javascript/dashboard/api/captain/assistant.js +++ b/app/javascript/dashboard/api/captain/assistant.js @@ -14,6 +14,13 @@ class CaptainAssistant extends ApiClient { }, }); } + + playground({ assistantId, messageContent, messageHistory }) { + return axios.post(`${this.url}/${assistantId}/playground`, { + message_content: messageContent, + message_history: messageHistory, + }); + } } export default new CaptainAssistant(); diff --git a/app/javascript/dashboard/components-next/Accordion/Accordion.vue b/app/javascript/dashboard/components-next/Accordion/Accordion.vue new file mode 100644 index 000000000..f75a2ef25 --- /dev/null +++ b/app/javascript/dashboard/components-next/Accordion/Accordion.vue @@ -0,0 +1,39 @@ + + + diff --git a/app/javascript/dashboard/components-next/captain/PageLayout.vue b/app/javascript/dashboard/components-next/captain/PageLayout.vue index e9fae9ca7..7355ac616 100644 --- a/app/javascript/dashboard/components-next/captain/PageLayout.vue +++ b/app/javascript/dashboard/components-next/captain/PageLayout.vue @@ -2,6 +2,7 @@ import { computed } from 'vue'; import { usePolicy } from 'dashboard/composables/usePolicy'; import Button from 'dashboard/components-next/button/Button.vue'; +import BackButton from 'dashboard/components/widgets/BackButton.vue'; import PaginationFooter from 'dashboard/components-next/pagination/PaginationFooter.vue'; import Spinner from 'dashboard/components-next/spinner/Spinner.vue'; import Policy from 'dashboard/components/policy.vue'; @@ -23,6 +24,10 @@ const props = defineProps({ type: String, default: '', }, + backUrl: { + type: [String, Object], + default: '', + }, buttonPolicy: { type: Array, default: () => [], @@ -39,6 +44,10 @@ const props = defineProps({ type: Boolean, default: false, }, + showKnowMore: { + type: Boolean, + default: true, + }, isEmpty: { type: Boolean, default: false, @@ -73,19 +82,23 @@ const handlePageChange = event => { class="flex items-start lg:items-center justify-between w-full py-6 lg:py-0 lg:h-20 gap-4 lg:gap-2 flex-col lg:flex-row" >
+ {{ headerTitle }} -
+
@@ -104,7 +117,7 @@ const handlePageChange = event => {
-
+
{