diff --git a/app/javascript/dashboard/routes/dashboard/captain/assistants/tools/Index.vue b/app/javascript/dashboard/routes/dashboard/captain/assistants/tools/Index.vue index 3510e58..a1084fc 100644 --- a/app/javascript/dashboard/routes/dashboard/captain/assistants/tools/Index.vue +++ b/app/javascript/dashboard/routes/dashboard/captain/assistants/tools/Index.vue @@ -26,6 +26,16 @@ const deleteDialogRef = ref(null); const selectedTool = ref(null); const dialogType = ref(''); +const nativeToolKeys = [ + 'react_to_message', + 'check_availability', + 'update_contact', + 'create_reservation_intent', + 'generate_pix', + 'status_suites', + 'suite_watchdog', +]; + const assistantId = computed(() => route.params.assistantId); const fetchTools = async () => { @@ -153,7 +163,7 @@ onMounted(() => {
@additional_data[:message] } + execution_result = tool.execute(params) + + if execution_result.is_a?(String) + { success: true, body: { message: execution_result } } + else + { success: true, body: execution_result } + end + rescue StandardError => e + { success: false, error: "Scenario Error: #{e.message}" } + end + def execute_http uri = URI(@definition[:url]) http = Net::HTTP.new(uri.host, uri.port) @@ -67,7 +112,7 @@ module Captain return failed_response("Tool Class #{tool_class_name} not found") unless klass - tool_instance = klass.new(@assistant, user: nil, conversation: @conversation) + tool_instance = klass.new(@assistant, user: @contact, conversation: @conversation) # Merge additional data into params if the tool expects them # Typically internal tools take a params hash.