@hivegpt/hiveai-angular 0.0.310 → 0.0.311

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"hivegpt-hiveai-angular.js","sources":["../../../../projects/hivegpt/eventsgpt-angular/src/lib/utils/utils.ts","../../../../projects/hivegpt/eventsgpt-angular/src/environments/environment.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/conversation.service.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/NotificationSocket.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/socket-service.service.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/bot.service.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/chat-drawer/chat-drawer.component.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/chatbot/chatbot.component.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/pipes/safe-html.pipe.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/video-player/video-player.component.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/bot-html-editor/bot-html-editor.component.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/hivegpt.module.ts","../../../../projects/hivegpt/eventsgpt-angular/src/public-api.ts","../../../../projects/hivegpt/eventsgpt-angular/src/hivegpt-hiveai-angular.ts"],"sourcesContent":["const formatHoursAndMinutes = (date: Date) => {\r\n let hours = date.getHours() % 12;\r\n const minutes = date.getMinutes();\r\n const amPm = date.getHours() < 12 ? 'AM' : 'PM';\r\n if(hours === 0) hours = 12;\r\n\r\n const formattedHours = hours < 10 ? `0${hours}` : hours;\r\n const formattedMinutes = minutes < 10 ? `0${minutes}` : minutes;\r\n\r\n return `${formattedHours}:${formattedMinutes} ${amPm}`;\r\n};\r\n\r\nexport const formatNow = (timezone?: string) => {\r\n const now = new Date();\r\n if (timezone) {\r\n const options: any = {\r\n hour12: true,\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n timeZone: timezone,\r\n };\r\n return now.toLocaleString('en-US', options);\r\n }\r\n return formatHoursAndMinutes(now);\r\n};\r\n\r\nexport const formatTimeStamps = (timezone: string, timestamps: any) => {\r\n const date = new Date(timestamps + 'Z');\r\n\r\n const options: any = {\r\n hour12: true,\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n timeZone: timezone,\r\n };\r\n return date.toLocaleString('en-US', options);\r\n};\r\n","\r\n\r\nexport const prod_environment = {\r\n USERS_API: 'https://es-user.social27.com/api',\r\n BASE_URL: 'https://agent-api.hivegpt.ai',\r\n AGENTS_API: 'https://hive-ai.social27.com/api',\r\n API_KEY: 'b621eb3f-0bd2-41d5-a48c-a8f8ab7d38f8',\r\n SocketUrl: 'https://notif-v2-ws.social27.com/'\r\n}\r\n\r\nexport const dev_environment = {\r\n USERS_API: 'https://pre-user.social27.com/api',\r\n BASE_URL: 'https://agent-api.hivegpt.ai',\r\n AGENTS_API: 'https://hive-ai.social27.com/api',\r\n API_KEY: 'b621eb3f-0bd2-41d5-a48c-a8f8ab7d38f8',\r\n SocketUrl: 'https://notif-v2-ws.social27.com/'\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ConversationService {\r\n private storageKey = 'conversationKey';\r\n\r\n constructor() { }\r\n generateKey(): string {\r\n const timestamp = Math.floor(new Date().getTime() / 1000).toString(16);\r\n const randomHex = 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, () => {\r\n return Math.floor(Math.random() * 16).toString(16);\r\n });\r\n return timestamp + randomHex;\r\n }\r\n\r\n getKey(botId: string, resetKey: boolean = false): string {\r\n const storageKey = `conversationKey_${botId}`;\r\n var value = localStorage.getItem(storageKey);\r\n\r\n if (!value || resetKey) {\r\n value = this.generateKey();\r\n localStorage.setItem(storageKey, value);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n private userSepecificNotification: Subject<any> = new Subject<any>();\r\n sendValidatedUserData(message: any) {\r\n //console.log('lgging messages', message, new Date());\\\r\n\r\n this.userSepecificNotification.next(message);\r\n }\r\n getUserSpecificNotification(): Observable<any> {\r\n return this.userSepecificNotification.asObservable();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Socket, SocketIoConfig } from 'ngx-socket-io';\r\nimport { prod_environment } from '../../environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root' // This ensures the service is available across the application\r\n})\r\nexport class NotificationSocket extends Socket {\r\n constructor() {\r\n super(socketConfig);\r\n\r\n // Log connection status\r\n this.on('connect', () => {\r\n console.log('Socket connected');\r\n });\r\n\r\n this.on('disconnect', () => {\r\n console.warn('Socket disconnected');\r\n });\r\n\r\n this.on('connect_error', (err) => {\r\n console.error('Socket connection error:', err);\r\n });\r\n }\r\n}\r\n\r\nconst socketConfig: SocketIoConfig = {\r\n url: prod_environment.SocketUrl,\r\n options: {\r\n transports: ['websocket', 'polling'],\r\n reconnection: true,\r\n autoConnect: true,\r\n upgrade: true,\r\n reconnectionDelay: 1000,\r\n reconnectionDelayMax: 5000,\r\n reconnectionAttempts: Infinity\r\n }\r\n};","import { Injectable } from '@angular/core';\r\n\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { webSocket, WebSocketSubject } from 'rxjs/webSocket';\r\nimport { ConversationService } from './conversation.service';\r\nimport { NotificationSocket } from './NotificationSocket';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SocketService {\r\n public testMessage: string;\r\n private isCommonSocketInitialized = false;\r\n private isUserSpecificSocketInitialized = false;\r\n private isUserSpecificEventReleased = true;\r\n private messageQueue: any[] = [];\r\n private releaseInterval = 1000;\r\n private intervalSetup: boolean = false;\r\n\r\n constructor(\r\n private conversationService: ConversationService,\r\n private notificationSocket: NotificationSocket\r\n ) {\r\n this.startReleasingMessages();\r\n }\r\n\r\n isSocketInitialized(isCommon: boolean) {\r\n return isCommon\r\n ? this.isCommonSocketInitialized\r\n : this.isUserSpecificSocketInitialized &&\r\n !this.isUserSpecificEventReleased;\r\n }\r\n\r\n disconnectSocketConnection() {\r\n this.notificationSocket.disconnect();\r\n }\r\n connectSocketConnection() {\r\n this.notificationSocket.connect();\r\n }\r\n registerUserSpecificHiveSocket(botId: string, conversation_id: string, org_id: string) {\r\n const commonNotification = 'commonNotification';\r\n const groupId = `Hive_AI_Notifs_${botId}_${conversation_id}`;\r\n const groupId_org = `Hive_AI_Notifs_${org_id}`;\r\n\r\n // Remove any pre-existing listeners for commonNotification\r\n // this.notificationSocket.removeAllListeners(commonNotification);\r\n\r\n // Join the group again with updated botId and conversation_id\r\n this.notificationSocket.emit('joinData', { groupId });\r\n this.notificationSocket.emit('joinData', { groupId: groupId_org });\r\n\r\n // Re-register for common notifications\r\n this.notificationSocket.fromEvent(commonNotification).subscribe(\r\n (res) => {\r\n console.log('Received commonNotification:', res);\r\n this.conversationService.sendValidatedUserData(res);\r\n },\r\n (error) => {\r\n console.error('Error receiving commonNotification:', error);\r\n }\r\n );\r\n }\r\n\r\n private startReleasingMessages() {\r\n if (!this.intervalSetup) {\r\n setInterval(() => {\r\n if (this.messageQueue.length > 0) {\r\n const message = this.messageQueue.shift(); // Remove the first message from the queue\r\n // Handle the message here, e.g., send it to the server or process it\r\n console.log('Releasing message from queue:', message);\r\n // this.campaignService.sendValidatedUserData(message);\r\n }\r\n }, this.releaseInterval);\r\n this.intervalSetup = true; // Prevents multiple intervals\r\n }\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { catchError, map } from 'rxjs/operators';\r\n\r\nimport { HttpHeaders } from '@angular/common/http';\r\nimport { Observable, Subject, throwError } from 'rxjs';\r\nimport { AnyRecord } from 'dns';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BotsService {\r\n eventDescription = new Subject();\r\n bot_api = 'https://agent-api.hivegpt.ai/';\r\n constructor(private http: HttpClient) { }\r\n\r\n fetchSpeechAuthorizationToken() {\r\n const apiUrl = `${this.bot_api}speech/issue_token`;\r\n const url = `${apiUrl}`;\r\n return this.http.get(url).pipe(\r\n map((resp: any) => {\r\n return resp.token;\r\n })\r\n );\r\n }\r\n\r\n getWorkflowsByOrgId(orgId: string): Observable<any> {\r\n const apiUrl = `${this.bot_api}workflows`;\r\n const url = `${apiUrl}?org_id=${orgId}`;\r\n return this.http.get(url).pipe(\r\n map((resp: any) => {\r\n return resp;\r\n })\r\n );\r\n }\r\n\r\n getWorkflowExecutionById(executionId: string): Observable<any> {\r\n const apiUrl = `${this.bot_api}workflows/execution/${executionId}`;\r\n return this.http.get(apiUrl).pipe(\r\n map((resp: any) => {\r\n return resp;\r\n })\r\n );\r\n }\r\n}","// import { Platform } from '@angular/cdk/platform';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n Renderer2,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { MatDrawer } from '@angular/material/sidenav';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { of, Subscription } from 'rxjs';\r\nimport { catchError, switchMap } from 'rxjs/operators';\r\nimport { formatNow, formatTimeStamps } from '../../utils/utils';\r\nimport {\r\n dev_environment,\r\n prod_environment,\r\n} from '../../../environments/environment';\r\nimport { ConversationService } from '../conversation.service';\r\nimport { Observable } from 'rxjs';\r\nimport { SocketService } from '../socket-service.service';\r\n\r\nimport { FormBuilder, Validators } from '@angular/forms';\r\nimport * as SpeechSDK from 'microsoft-cognitiveservices-speech-sdk';\r\nimport { BotsService } from '../bot.service';\r\n\r\n@Component({\r\n selector: 'hivegpt-chat-drawer-package',\r\n templateUrl: './chat-drawer.component.html',\r\n styleUrls: ['./chat-drawer.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ChatDrawerComponent implements OnInit, OnChanges {\r\n @ViewChild('chatMain') private chatMain: ElementRef;\r\n @ViewChild('myInput') private myInput: ElementRef;\r\n @ViewChildren('closeplaygroundbutton')\r\n closePlaygroundButtons: QueryList<ElementRef>;\r\n @ViewChild('drawer') drawer!: MatDrawer;\r\n @ViewChild('sourcesDrawer') sourcesDrawer!: MatDrawer;\r\n @ViewChild('editorsDrawer') editorsDrawer!: MatDrawer;\r\n private bodyOverflowClass = 'body-overflow-hidden';\r\n @ViewChild('myTextarea', { static: false })\r\n myTextarea!: ElementRef<HTMLTextAreaElement>; // Reference to the textarea\r\n isCollapsedTrue = false;\r\n @Input() copilotName: string = 'HiveXGPT';\r\n @Input() firstName!: string;\r\n @Input() lastName!: string;\r\n @Input() apiKey!: string;\r\n @Input() bgBubbleAi!: string;\r\n @Input() bgBubbleUser!: string;\r\n @Input() bgGradient!: string[];\r\n @Input() botName!: string;\r\n @Input() botSkills!: string;\r\n @Input() botId!: string;\r\n @Input() orgId!: string;\r\n @Input() closeButtonColor!: string;\r\n @Input() closeButtonbgColor!: string;\r\n @Input() credentials!: [];\r\n @Input() dateTimeColor!: string;\r\n @Input() dateTextColor!: string;\r\n @Input() eventId!: string;\r\n @Input() s27Token!: string;\r\n @Input() eventName!: string;\r\n @Input() botIcon!: string;\r\n @Input() formFieldBgColor!: string;\r\n @Input() formFieldTextColor!: string;\r\n @Input() fullView!: boolean;\r\n @Input() gradientColors!: string[];\r\n @Input() greeting!: string;\r\n @Input() messageTextColorAi!: string;\r\n @Input() messageTextColorUser!: string;\r\n @Input() rules!: string;\r\n @Input() sendButtonColor!: string;\r\n @Input() sendButtonTextColor!: string;\r\n @Input() showClose!: boolean;\r\n @Input() thumbsDownMessages!: string[];\r\n @Input() thumbsUpMessage!: string;\r\n @Input() timezone!: string;\r\n @Input() unknownResponses!: [];\r\n @Input() useOpenAi!: boolean;\r\n @Input() userId!: string;\r\n @Input() isDev!: boolean;\r\n\r\n @Input() againButtonColor!: string[];\r\n @Input() againButtonTextColor!: string[];\r\n @Output() feedbackEvent = new EventEmitter<string>();\r\n @Output() onCloseEvent = new EventEmitter<void>();\r\n @Output() openPage = new EventEmitter<any>();\r\n @Output() sessionActions = new EventEmitter<any>();\r\n @Output() closeBot = new EventEmitter<any>();\r\n @Output() connectWithUser = new EventEmitter<any>();\r\n @Output() scheduleMeeting = new EventEmitter<string>();\r\n @Output() refreshToken = new EventEmitter<any>();\r\n\r\n autogenKey = 'Autogen_eDJTtEU-NB0RtIpzq1w';\r\n addToMyAgendaAction = 'add_to_my_agenda';\r\n myUpcomingSessionAction = 'my_upcomming_session';\r\n connectOrFollowAction = 'connect_or_follow';\r\n aiResponse: string = '';\r\n chatLog: any[] = [];\r\n decoder = new TextDecoder();\r\n feedbackDone: boolean = false;\r\n greetingMsg: string = '';\r\n hasBackdropValue: boolean = false;\r\n input: string = '';\r\n listenerAdded = false;\r\n loading: boolean = false;\r\n mode: string = 'over';\r\n quickPrompts: any[] = [];\r\n thumbsDownMsgIndex = 0;\r\n userName: string = '';\r\n showStartAgain: boolean = false;\r\n isIOSDevice: boolean = false;\r\n showFeedBackIconsIndex: number | null = null;\r\n temperature: number = 1;\r\n speakers = [];\r\n environment: {\r\n USERS_API;\r\n BASE_URL;\r\n AGENTS_API;\r\n };\r\n pendingRequests: any;\r\n myConnections: any;\r\n conversationKey: string;\r\n isFetchDataFor: boolean;\r\n is401: boolean;\r\n msg: any;\r\n chat: any;\r\n isWorkflowOpen: boolean;\r\n orgWorkflows: any;\r\n openWorkflowInput: boolean;\r\n selectedWorkflow: any;\r\n workflowForm: any;\r\n currentWorkflowActionProgress: number = 0;\r\n currentWorkflowAction: string = '';\r\n executingWorkflow: boolean;\r\n workflowExecutionDetails: any;\r\n showWorkflowExecutionDetails: any;\r\n currentWorkflowExecutionDetails: any;\r\n\r\n speechConfig: SpeechSDK.SpeechConfig;\r\n recognizer: SpeechSDK.SpeechRecognizer;\r\n recognizedText: string = '';\r\n authorizationToken: string = '';\r\n region: string = 'westeurope'; // Set your Azure region here\r\n isRecording: boolean;\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private botService: BotsService,\r\n private cdr: ChangeDetectorRef,\r\n private http: HttpClient,\r\n private sanitizer: DomSanitizer,\r\n private elementRef: ElementRef,\r\n private renderer: Renderer2,\r\n private socketService: SocketService,\r\n private conversationService: ConversationService // private platform: Platform\r\n ) {\r\n this.chatMain = new ElementRef(null);\r\n\r\n // if (this.platform.IOS) {\r\n // this.isIOSDevice = true;\r\n // }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.s27Token) {\r\n if (changes.s27Token.currentValue != changes.s27Token.previousValue) {\r\n this.s27Token = changes.s27Token.currentValue;\r\n\r\n console.log('isFetchDataFor: ', this.isFetchDataFor);\r\n console.log('msg: ', this.msg);\r\n console.log('chat: ', this.chat);\r\n if (this.is401) {\r\n if (this.isFetchDataFor) {\r\n this.fetchDataFor(this.msg, this.chat);\r\n } else {\r\n this.fetchData(this.msg);\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (changes.orgId) {\r\n if (\r\n changes.orgId.currentValue != changes.orgId.previousValue &&\r\n changes.orgId.currentValue\r\n ) {\r\n this.initializeSocket();\r\n\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.environment = this.isDev ? dev_environment : prod_environment;\r\n\r\n // this.fetchMyConnections().subscribe();\r\n // this.fetchPendingRequests().subscribe();\r\n\r\n this.changeTemperature(this.temperature);\r\n this.fetchBotConfig().subscribe(\r\n (res) => {\r\n this.cdr.markForCheck();\r\n\r\n this.fetchChatHistory().subscribe(\r\n (response) => {\r\n this.loading = false;\r\n this.mapChatHistory(response);\r\n this.cdr.markForCheck();\r\n },\r\n (err) => {\r\n console.error('Error fetching chat history:', err);\r\n }\r\n );\r\n },\r\n (err) => {\r\n console.error('Error fetching chat history:', err);\r\n }\r\n );\r\n // this.fetchAgents();\r\n // this.fetchEditorContent();\r\n this.cdr.markForCheck();\r\n // this.initializeSocket();\r\n if (!this.checkForCop29BotId()) {\r\n this.botService.fetchSpeechAuthorizationToken().subscribe((token) => {\r\n this.authorizationToken = token;\r\n this.initializeSpeechRecognizer(token);\r\n });\r\n }\r\n }\r\n\r\n private eventSubscription: Subscription;\r\n initializeSocket() {\r\n try {\r\n this.socketService.disconnectSocketConnection();\r\n } catch (error) { }\r\n setTimeout(() => {\r\n this.socketService.connectSocketConnection();\r\n setTimeout(() => {\r\n console.log('YES INIT');\r\n const conversation_id = this.conversationService.getKey(this.botId);\r\n\r\n this.socketService.registerUserSpecificHiveSocket(\r\n this.botId,\r\n conversation_id,\r\n this.orgId\r\n );\r\n setTimeout(() => {\r\n this.listenSockets();\r\n }, 300);\r\n }, 200);\r\n }, 300);\r\n }\r\n\r\n subscriptionNew: any;\r\n socketData: any;\r\n\r\n listenSockets() {\r\n if (this.eventSubscription) {\r\n this.eventSubscription.unsubscribe();\r\n }\r\n console.log('Listen Socket');\r\n this.eventSubscription = this.conversationService\r\n .getUserSpecificNotification()\r\n .subscribe(\r\n (res) => {\r\n console.log('Listen Socket response');\r\n console.log(res);\r\n // Check if OtherFields exists in the response\r\n if (res?.m?.OtherFields?.workflow_id) {\r\n const {\r\n percentage,\r\n output,\r\n action_name,\r\n current_action_name,\r\n workflow_execution_id,\r\n time_stamp,\r\n } = res?.m?.OtherFields;\r\n\r\n this.currentWorkflowActionProgress = percentage;\r\n this.currentWorkflowAction = action_name;\r\n\r\n const actionIndex = this.workflowExecutionDetails.Actions.findIndex(\r\n (a) => a.Name == current_action_name\r\n );\r\n\r\n if (actionIndex !== -1) {\r\n this.workflowExecutionDetails.Actions[actionIndex][\r\n 'Output'\r\n ] = output;\r\n this.workflowExecutionDetails.Actions[actionIndex][\r\n 'InsertTimeStamp'\r\n ] = formatTimeStamps(this.timezone, time_stamp);\r\n } else {\r\n console.error(`Action with name ${action_name} not found`);\r\n }\r\n\r\n this.currentWorkflowExecutionDetails = this.workflowExecutionDetails;\r\n\r\n if (this.currentWorkflowActionProgress == 100) {\r\n this.chatLog[this.chatLog.length - 1][\r\n 'WorkflowExecutionId'\r\n ] = workflow_execution_id;\r\n this.isChatingWithAi = false;\r\n this.executingWorkflow = false;\r\n }\r\n\r\n this.cdr.detectChanges();\r\n } else if (res?.m?.OtherFields) {\r\n const {\r\n conversation_id,\r\n bot_id,\r\n message_id,\r\n answer,\r\n web_results,\r\n search_results,\r\n graphs,\r\n execution_graphs,\r\n suggestions,\r\n } = res?.m?.OtherFields;\r\n console.log('message_id1');\r\n console.log(res?.m?.OtherFields);\r\n var currentChatMessage = this.chatLog.find(\r\n (p) => p._id == message_id\r\n );\r\n console.log(this.chatLog);\r\n if (!currentChatMessage) {\r\n console.log('message_id2');\r\n console.log(message_id);\r\n currentChatMessage = {\r\n _id: message_id,\r\n type: 'ai',\r\n time: formatNow(this.timezone),\r\n };\r\n\r\n this.chatLog.push(currentChatMessage);\r\n\r\n this.showFeedBackIconsIndex = this.chatLog.length - 1;\r\n console.log('message_id3');\r\n console.log(message_id);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n // Handle the fields based on their presence\r\n if (search_results && Array.isArray(search_results)) {\r\n console.log('Online Search Terms:', search_results);\r\n currentChatMessage.searchTerms = search_results;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n if (web_results && Array.isArray(web_results)) {\r\n console.log('Web Results:', web_results);\r\n currentChatMessage.sourcesList = web_results;\r\n currentChatMessage.displayedSources = web_results?.slice(0, 3); // First 3 cards\r\n currentChatMessage.remainingSources = web_results?.slice(3); // Remaining items\r\n this.cdr.detectChanges();\r\n }\r\n\r\n if (answer) {\r\n this.isChatingWithAi = false;\r\n console.log('Answer:', answer);\r\n\r\n currentChatMessage.message = this.processMessageForDisplay(\r\n answer\r\n );\r\n this.cdr.detectChanges();\r\n this.scrollToBottom();\r\n }\r\n\r\n if (graphs && Array.isArray(graphs)) {\r\n console.log('Graphs:', graphs);\r\n currentChatMessage.graphs = graphs;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n if (execution_graphs && Array.isArray(execution_graphs)) {\r\n console.log('Execution Graphs:', execution_graphs);\r\n currentChatMessage.executionGraphs = execution_graphs;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n if (suggestions && Array.isArray(suggestions)) {\r\n console.log('suggestions:', suggestions);\r\n currentChatMessage.relatedListItems = suggestions;\r\n this.cdr.detectChanges();\r\n // Process online search terms as needed\r\n }\r\n\r\n // Add any other fields and their processing here\r\n } else {\r\n console.warn('OtherFields is missing in the response');\r\n }\r\n },\r\n (err) => {\r\n this.eventSubscription.unsubscribe();\r\n console.error('Error in fetching data from socket', err);\r\n }\r\n );\r\n }\r\n\r\n initializeSocketAndListen() { }\r\n handleEvent(data: any, type: string) {\r\n switch (type) {\r\n case 'webresult':\r\n break;\r\n case 'answer':\r\n break;\r\n case 'graph':\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n if (this.eventSubscription) {\r\n this.eventSubscription.unsubscribe();\r\n }\r\n this.socketService.disconnectSocketConnection();\r\n //this.socketService.close();\r\n }\r\n changeTemperature(newTemperature: number) {\r\n if (this.loading) return;\r\n this.temperature = newTemperature;\r\n const wrapper = document.querySelector('.hivegpt-chat-wrapper');\r\n // Remove existing theme classes from body\r\n wrapper?.classList.remove('creative', 'balanced', 'precise');\r\n\r\n switch (newTemperature) {\r\n case 0:\r\n wrapper?.classList.add('creative');\r\n break;\r\n case 1:\r\n wrapper?.classList.add('balanced');\r\n break;\r\n case 2:\r\n wrapper?.classList.add('precise');\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n onStartAgain() {\r\n if (this.loading) return;\r\n this.showStartAgain = false;\r\n this.chatLog = [];\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.greetingMsg,\r\n\r\n time: formatNow(this.timezone),\r\n });\r\n this.archieveMessages().subscribe();\r\n }\r\n\r\n archieveMessages() {\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'x-api-key': this.apiKey,\r\n 'hive-bot-id': this.botId\r\n });\r\n const url = `${this.environment.BASE_URL}/bot/clear-history/${this.botId}/${this.userId}`;\r\n return this.http.post(url, {}, { headers }).pipe(\r\n switchMap((res: any) => {\r\n return of(res);\r\n }),\r\n catchError((error) => {\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n fetchBotConfig() {\r\n this.loading = true;\r\n const headers = new HttpHeaders({\r\n 'x-api-key': this.apiKey,\r\n 'hive-bot-id': this.botId\r\n });\r\n const url = `${this.environment.BASE_URL}/bots?bot_id=${this.botId}`;\r\n return this.http.get(url, { headers }).pipe(\r\n switchMap((res: any) => {\r\n this.botName = res.Name;\r\n this.botIcon = res.Icon;\r\n this.botSkills = res?.Skills;\r\n this.greetingMsg = res.Greeting;\r\n\r\n this.thumbsDownMessages = res?.NegativeResponses?.length\r\n ? res.NegativeResponses\r\n : [\r\n \"We are sorry we've not been able to answer your question.<br/> However, our dedicated support team is happy to help. <span class='feedback-link' style='cursor: pointer; text-decoration: underline; font-weight: 700; color: #17235B;'>Please click here</span> and a human agent will assist you as soon as possible\",\r\n ];\r\n this.quickPrompts = res.QuickPrompts;\r\n this.cdr.markForCheck();\r\n this.loading = false;\r\n return of(res);\r\n }),\r\n catchError((error) => {\r\n console.error('Error fetching chatbot config: ', error);\r\n this.loading = false;\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n fetchChatHistory(): Observable<any> {\r\n this.loading = true;\r\n\r\n this.conversationKey = this.conversationService.getKey(this.botId, false);\r\n const url = `${this.environment.BASE_URL}/conversations/${this.conversationKey}`;\r\n const headers = new HttpHeaders({\r\n accept: 'application/json',\r\n 'x-api-key': this.apiKey,\r\n 'hive-bot-id': this.botId\r\n });\r\n\r\n return this.http\r\n .get(url, { headers })\r\n .pipe(catchError(this.handleError<any>('fetchConversation')));\r\n }\r\n\r\n private handleError<T>(operation = 'operation', result?: T) {\r\n return (error: any): Observable<T> => {\r\n console.error(`${operation} failed: ${error.message}`);\r\n return of(result as T);\r\n };\r\n }\r\n // fetchChatHistory() {\r\n // this.loading = true;\r\n // const headers = new HttpHeaders({\r\n // 'Content-Type': 'application/json',\r\n // 'x-api-key': this.apiKey,\r\n // });\r\n // return this.http\r\n // .get(`${this.environment.BASE_URL}/conversations/${this.conversationKey}`, { headers })\r\n // .pipe(\r\n // switchMap((res: any) => {\r\n // this.loading = false;\r\n // return of(res);\r\n // }),\r\n // catchError((error: any) => {\r\n // console.error('Error fetching chat history: ', error);\r\n // this.loading = false;\r\n // return of(null);\r\n // })\r\n // );\r\n // }\r\n\r\n mapChatHistory(chats: any) {\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.greetingMsg,\r\n time: formatNow(this.timezone),\r\n });\r\n if (chats && chats?.Messages?.length) {\r\n chats?.Messages.forEach((chat: any) => {\r\n if (chat.Type == 'user') {\r\n this.chatLog.push({\r\n type: 'user',\r\n message: this.processMessageForDisplay(chat.Text),\r\n time: formatTimeStamps(this.timezone, chat.InsertTimestamp),\r\n copied: false,\r\n isCollapsedTrue: false,\r\n WorkflowExecutionId: chat.WorkflowExecutionId,\r\n });\r\n }\r\n if (chat.Type == 'ai') {\r\n var sourcesList = chat.WebLinks || [];\r\n var displayedSources = chat.WebLinks.slice(0, 3); // First 3 cards\r\n var remainingSources = chat.WebLinks.slice(3); // Remaining items\r\n\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.processMessageForDisplay(chat.Text),\r\n executionGraphs: chat.ExecutionGraphs,\r\n graphs: chat.Graphs,\r\n searchTerms: chat.SearchTerms,\r\n sourcesList: sourcesList,\r\n displayedSources: displayedSources,\r\n remainingSources: remainingSources,\r\n time: formatTimeStamps(this.timezone, chat.InsertTimestamp),\r\n copied: false,\r\n isCollapsedTrue: false,\r\n });\r\n this.showFeedBackIconsIndex = this.chatLog.length - 1;\r\n }\r\n });\r\n this.showStartAgain = true;\r\n }\r\n this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n processMessage(message: string): SafeHtml {\r\n if (!message || !(message?.length > 0)) {\r\n return '';\r\n }\r\n\r\n // console.log('here is my message')\r\n // console.log(message);\r\n\r\n message = message.trim();\r\n\r\n const markdownLinkRegex = /\\[([^[]+)]\\(([^)]+)\\)/g;\r\n const urlRegex = /(?<!href=\")\\bhttps?:\\/\\/\\S+(?<![.,])/gi;\r\n\r\n if (markdownLinkRegex.test(message)) {\r\n const html = message.replace(\r\n markdownLinkRegex,\r\n '<a href=\"$2\" target=\"_blank\">$1</a>'\r\n );\r\n //console.log('Sanitized message: ', message);\r\n return this.sanitizeHtml(html);\r\n }\r\n\r\n if (urlRegex.test(message)) {\r\n const html = message.replace(\r\n urlRegex,\r\n '<a href=\"$&\" target=\"_blank\">$&</a>'\r\n );\r\n // console.log('Sanitized message: ', message);\r\n return this.sanitizeHtml(html);\r\n }\r\n\r\n message = message.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>');\r\n\r\n message = message.replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>');\r\n // Convert Markdown headers to HTML headers\r\n message = message.replace(/^(#{1,6})\\s+(.*)$/gm, (match, hashes, text) => {\r\n const level = hashes.length;\r\n return `<h${level}>${text}</h${level}>`;\r\n });\r\n\r\n this.cdr.markForCheck();\r\n const sanitizedMessage = this.sanitizeHtml(message);\r\n return sanitizedMessage;\r\n }\r\n\r\n ngAfterViewChecked() {\r\n const feedbackLinks = this.elementRef.nativeElement.querySelectorAll(\r\n '.feedback-link'\r\n );\r\n feedbackLinks.forEach((link: any) => {\r\n link.addEventListener(\r\n 'click',\r\n this.onFeedbackClick.bind(this, 'zendesk')\r\n );\r\n });\r\n // if (this.elementRef.nativeElement.querySelector('.feedback-link')) {\r\n // this.elementRef.nativeElement\r\n // .querySelector('.feedback-link')\r\n // .addEventListener('click', this.onFeedbackClick.bind(this, 'zendesk'));\r\n // }\r\n }\r\n\r\n sanitizeHtml(html: string): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(html);\r\n }\r\n\r\n onFeedbackClick(value: string) {\r\n this.feedbackEvent.emit(value);\r\n }\r\n\r\n onClose() {\r\n this.renderer.removeClass(document.body, this.bodyOverflowClass);\r\n this.onCloseEvent.emit();\r\n }\r\n\r\n sendMessageWithTile(prompt: string) {\r\n this.input = prompt;\r\n this.fetchData();\r\n this.scrollToBottom();\r\n }\r\n isChatingWithAi = false;\r\n fetchData(msg = null) {\r\n this.input = msg || this.input?.trim();\r\n this.msg = this.input;\r\n if (!this.input || this.loading) {\r\n return;\r\n }\r\n\r\n this.chatLog.push({\r\n type: 'user',\r\n message: this.processMessageForDisplay(this.input),\r\n time: formatNow(this.timezone),\r\n copied: false,\r\n isCollapsedTrue: false,\r\n });\r\n\r\n try {\r\n const textarea = this.myInput.nativeElement;\r\n textarea.style.height = 'hidden'; // Reset the height\r\n textarea.style.height = `62px`;\r\n } catch (error) { }\r\n this.cdr.markForCheck();\r\n\r\n this.aiResponse = '';\r\n this.isChatingWithAi = true;\r\n\r\n this.makeAskRequest(this.input, this.agents, this.conversationKey);\r\n }\r\n fetchDataFor(msg, chat) {\r\n const inputMsg = msg?.trim();\r\n if (!inputMsg || this.loading) {\r\n return;\r\n }\r\n try {\r\n chat.relatedListItems = [];\r\n this.cdr.detectChanges();\r\n } catch (error) { }\r\n\r\n this.scrollToBottom();\r\n this.chatLog.push({\r\n type: 'user',\r\n message: this.processMessageForDisplay(inputMsg),\r\n time: formatNow(this.timezone),\r\n copied: false,\r\n isCollapsedTrue: false,\r\n });\r\n\r\n this.cdr.markForCheck();\r\n\r\n this.aiResponse = '';\r\n this.isChatingWithAi = true;\r\n\r\n this.makeAskRequest(inputMsg, this.agents, this.conversationKey, msg, chat);\r\n }\r\n fetchSmallTalk() {\r\n this.loading = true;\r\n this.cdr.markForCheck();\r\n\r\n const url = `${this.environment.BASE_URL}/bot/small-talk/${this.botId}/${this.userId}`;\r\n\r\n this.http\r\n .get<{ smallTalk: string }>(url, {\r\n headers: {\r\n 'x-api-key': this.apiKey,\r\n 'hive-bot-id': this.botId\r\n },\r\n })\r\n .pipe(\r\n catchError((error) => {\r\n console.error('Error while fetching small talk:', error);\r\n\r\n return of(null);\r\n })\r\n )\r\n .subscribe((response) => {\r\n this.loading = false;\r\n this.cdr.markForCheck();\r\n\r\n if (!response) {\r\n return;\r\n }\r\n\r\n if (response && response.smallTalk) {\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.processMessage(response.smallTalk),\r\n time: formatNow(this.timezone),\r\n isFeedbackMsg: true,\r\n });\r\n this.showFeedBackIconsIndex = this.chatLog.length - 2;\r\n // this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n }\r\n });\r\n }\r\n\r\n readAllChunks = (stream: any) => {\r\n const reader = stream.getReader();\r\n const allSuggestions: string[] = [];\r\n\r\n reader.closed.catch((err: any) => {\r\n if (err) {\r\n console.error('Error reading stream: ', err);\r\n }\r\n\r\n this.isChatingWithAi = false;\r\n this.scrollToBottom();\r\n return;\r\n });\r\n\r\n return new ReadableStream({\r\n start: (controller) => {\r\n return this.pump(controller, reader, allSuggestions);\r\n },\r\n });\r\n };\r\n\r\n pump(controller: any, reader: any, allSuggestions: string[]) {\r\n reader.read().then(({ done, value }: any) => {\r\n const lastItem = this.chatLog[this.chatLog.length - 1];\r\n\r\n if (done) {\r\n lastItem.message = this.processMessageForDisplay(lastItem.message);\r\n this.chatLog.pop();\r\n this.chatLog.push(lastItem);\r\n if (allSuggestions?.length) {\r\n this.chatLog.push({\r\n type: 'suggestions',\r\n suggestions: allSuggestions,\r\n });\r\n }\r\n\r\n controller.close();\r\n this.isChatingWithAi = false;\r\n // this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n this.showStartAgain = true;\r\n\r\n // setTimeout(() => {\r\n // this.fetchSmallTalk();\r\n // },1000)\r\n return;\r\n }\r\n\r\n let decodedChunk = this.decoder.decode(value, { stream: true });\r\n this.aiResponse += decodedChunk;\r\n if (lastItem.type === 'ai') {\r\n const suggestionsMatch = this.aiResponse.match(/<sug>(.*?)<\\/sug>/g);\r\n if (suggestionsMatch) {\r\n suggestionsMatch.forEach((match) => {\r\n this.aiResponse = this.aiResponse.replace(match, '');\r\n allSuggestions.push(match?.replace(/<\\/?sug>/g, ''));\r\n });\r\n }\r\n\r\n lastItem.message = this.aiResponse;\r\n this.cdr.markForCheck();\r\n } else {\r\n this.isChatingWithAi = false;\r\n\r\n let aiFormattedData: any;\r\n\r\n try {\r\n console.log('parsing json ');\r\n aiFormattedData = JSON.parse(JSON.parse(this.aiResponse));\r\n } catch (e) {\r\n try {\r\n console.log('parsing json 2');\r\n aiFormattedData = JSON.parse(this.aiResponse);\r\n } catch (e) { }\r\n }\r\n\r\n console.log('parsing json done');\r\n\r\n if (aiFormattedData && aiFormattedData?.section_id?.length > 0) {\r\n if (\r\n aiFormattedData.section_id == 'company_search' ||\r\n aiFormattedData.section_id == 'user_search' ||\r\n aiFormattedData.section_id == 'industry_company_search'\r\n ) {\r\n this.fetchMyConnections().subscribe();\r\n this.fetchPendingRequests().subscribe();\r\n }\r\n\r\n if (aiFormattedData.section_id == this.myUpcomingSessionAction) {\r\n var speakerIds = [];\r\n aiFormattedData.content?.forEach((session) => {\r\n speakerIds = [...speakerIds, ...session.speakers];\r\n });\r\n\r\n if (speakerIds?.length > 0) this.getSpeakersByStaffIds(speakerIds);\r\n }\r\n\r\n if (\r\n aiFormattedData.section_id == this.addToMyAgendaAction &&\r\n aiFormattedData.content?.length > 0\r\n ) {\r\n this.openPage.next({\r\n sectionId: aiFormattedData.section_id,\r\n sessionIds: aiFormattedData.content,\r\n });\r\n }\r\n\r\n if (aiFormattedData.section_id == this.connectOrFollowAction) {\r\n let usersLen = aiFormattedData.content?.length;\r\n if (usersLen > 1) {\r\n this.openPage.next({\r\n sectionId: 'open_networking_drawer',\r\n search: aiFormattedData.content,\r\n });\r\n } else if (usersLen == 1) {\r\n this.openPage.next({\r\n sectionId: aiFormattedData.section_id,\r\n connetUserIds: [aiFormattedData.content[0].userId],\r\n });\r\n }\r\n }\r\n\r\n if (aiFormattedData.is_open_page == 'true') {\r\n this.openPage.next({\r\n sectionId: aiFormattedData.section_id,\r\n search: aiFormattedData.content,\r\n });\r\n\r\n if (this.isMobileBrowser()) {\r\n aiFormattedData.message +=\r\n '\\n\\n' + '<a id=\"closeBotNow\">Click Here</a> to see results.';\r\n }\r\n }\r\n\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: aiFormattedData.message,\r\n action: aiFormattedData,\r\n time: formatNow(this.timezone),\r\n });\r\n\r\n if (this.isMobileBrowser()) {\r\n setTimeout(() => {\r\n this.addCloseBotClickEvent();\r\n }, 500);\r\n }\r\n\r\n this.aiResponse = '';\r\n } else {\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.aiResponse,\r\n time: formatNow(this.timezone),\r\n });\r\n }\r\n\r\n this.showFeedBackIconsIndex = this.chatLog.length - 1;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n this.scrollToBottom();\r\n\r\n // Enqueue the next data chunk into our target stream\r\n controller.enqueue(value);\r\n this.pump(controller, reader, allSuggestions);\r\n });\r\n }\r\n\r\n submitFeedback(flag: boolean, message) {\r\n this.feedbackDone = true;\r\n this.showFeedBackIconsIndex = null;\r\n const conversation_id = this.conversationService.getKey(this.botId);\r\n const url = `${this.environment.AGENTS_API}/Conversation/coPilot/${this.botId}/conversation/${conversation_id}/helpful-response`;\r\n fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'x-api-key': 'Conversation_WIz/qAm+EEmfOkFaUA/weA==',\r\n 'hive-bot-id': this.botId\r\n },\r\n body: JSON.stringify({ isHelpful: flag, messageId: message._id }),\r\n }).then(() => {\r\n if (flag) {\r\n this.chatLog.push({\r\n type: 'ai',\r\n message:\r\n this.thumbsUpMessage ||\r\n `Great. May I assist you with anything else?`,\r\n time: formatNow(this.timezone),\r\n isFeedbackMsg: true,\r\n });\r\n\r\n this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n this.feedbackDone = false;\r\n this.showFeedBackIconsIndex = null;\r\n return;\r\n }\r\n\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.processMessage(\r\n this.thumbsDownMessages[this.thumbsDownMsgIndex]\r\n ),\r\n time: formatNow(this.timezone),\r\n isFeedbackMsg: true,\r\n });\r\n this.thumbsDownMsgIndex =\r\n (this.thumbsDownMsgIndex + 1) % this.thumbsDownMessages.length;\r\n this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n this.feedbackDone = false;\r\n this.showFeedBackIconsIndex = null;\r\n });\r\n }\r\n handleKeydown(event: KeyboardEvent) {\r\n if (event.key === 'Enter' && !event.shiftKey) {\r\n // Prevent default behavior (new line)\r\n event.preventDefault();\r\n // Call your submit function\r\n this.handleSubmit(event);\r\n }\r\n }\r\n handleSubmit(event) {\r\n this.fetchData();\r\n this.scrollToBottom();\r\n\r\n }\r\n\r\n handleUpClick(idx: any) {\r\n if (this.feedbackDone) {\r\n return;\r\n }\r\n\r\n this.submitFeedback(true, this.chatLog[idx]);\r\n this.chatLog[idx].liked = !this.chatLog[idx].liked;\r\n\r\n if (this.chatLog[idx].unliked) {\r\n this.chatLog[idx].unliked = !this.chatLog[idx].unliked;\r\n }\r\n\r\n this.cdr.markForCheck();\r\n }\r\n\r\n handleDownClick(idx: any) {\r\n if (this.feedbackDone) return;\r\n this.submitFeedback(false, this.chatLog[idx]);\r\n this.chatLog[idx].unliked = !this.chatLog[idx].unliked;\r\n if (this.chatLog[idx].liked)\r\n this.chatLog[idx].liked = !this.chatLog[idx].liked;\r\n }\r\n // handleCopyClick(index: any) {\r\n // // Copy the message to the clipboard\r\n // const contentToCopy = this.chatLog[index].message;\r\n // console.log('contentToCopy');\r\n // console.log(contentToCopy);\r\n // navigator.clipboard.writeText(contentToCopy).then(() => {\r\n // // Indicate that the message was copied\r\n // this.chatLog[index].copied = true;\r\n // this.cdr.detectChanges();\r\n // // Reset the copied state after a delay\r\n // setTimeout(() => {\r\n // this.chatLog[index].copied = false;\r\n // this.cdr.detectChanges();\r\n // }, 2000); // Reset after 2 seconds\r\n // });\r\n // }\r\n copyText(id, index) {\r\n // Get the text element\r\n var textElement = document.getElementById(id);\r\n\r\n // Create a temporary textarea element to copy the text\r\n var tempTextArea = document.createElement('textarea');\r\n tempTextArea.value = textElement.innerText;\r\n\r\n // Append the textarea to the body (necessary for the execCommand to work)\r\n document.body.appendChild(tempTextArea);\r\n\r\n // Select the text inside the textarea\r\n tempTextArea.select();\r\n\r\n // Copy the text to the clipboard\r\n document.execCommand('copy');\r\n\r\n // Remove the temporary textarea\r\n document.body.removeChild(tempTextArea);\r\n\r\n // Optionally, you can alert the user or change the button text to indicate the copy was successful\r\n // alert('Text copied to clipboard!');\r\n\r\n this.chatLog[index].copied = true;\r\n this.cdr.detectChanges();\r\n // Reset the copied state after a delay\r\n setTimeout(() => {\r\n this.chatLog[index].copied = false;\r\n this.cdr.detectChanges();\r\n }, 2000); // Reset after 2 seconds\r\n }\r\n handleCopyClick(index: any) {\r\n // Copy the message to the clipboard\r\n const contentToCopy = this.chatLog[index].message;\r\n const resutlt = this.copyText('messageText_' + index, index);\r\n }\r\n\r\n sanitizeHTML(html: string): string {\r\n const doc = new DOMParser().parseFromString(html, 'text/html');\r\n\r\n // Create a new document fragment to hold the simplified content\r\n const fragment = document.createDocumentFragment();\r\n\r\n // Append the children of the body of the parsed document to the fragment\r\n Array.from(doc.body.childNodes).forEach((node) => {\r\n fragment.appendChild(node.cloneNode(true));\r\n });\r\n\r\n // Create a new div element to hold the simplified HTML\r\n const simplifiedDiv = document.createElement('div');\r\n simplifiedDiv.appendChild(fragment);\r\n\r\n // Remove complex tags or attributes as needed\r\n // Example: remove scripts\r\n simplifiedDiv\r\n .querySelectorAll('script')\r\n .forEach((script) => script.remove());\r\n\r\n // Return the simplified HTML as a string\r\n return simplifiedDiv.innerHTML;\r\n }\r\n\r\n currentMessageForEditor: any = '';\r\n currentIndexForEditor: any = -1;\r\n handleEditorClick(index: any) {\r\n if (this.currentIndexForEditor == -1) {\r\n this.currentIndexForEditor = index;\r\n this.currentMessageForEditor = this.sanitizeHTML(\r\n this.chatLog[index].message\r\n );\r\n this.currentMessageForEditor = this.currentMessageForEditor.replace(\r\n 'SafeValue must use [property]=binding:',\r\n ''\r\n );\r\n\r\n this.cdr.detectChanges();\r\n } else {\r\n if (this.currentIndexForEditor == index) {\r\n this.currentMessageForEditor += this.sanitizeHTML(\r\n this.chatLog[index].message\r\n );\r\n this.currentMessageForEditor = this.currentMessageForEditor.replace(\r\n 'SafeValue must use [property]=binding:',\r\n ''\r\n );\r\n this.cdr.detectChanges();\r\n } else {\r\n this.currentIndexForEditor = index;\r\n this.currentMessageForEditor = this.sanitizeHTML(\r\n this.chatLog[index].message\r\n );\r\n this.currentMessageForEditor = this.currentMessageForEditor.replace(\r\n 'SafeValue must use [property]=binding:',\r\n ''\r\n );\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n this.chatLog[index].isEditor = true;\r\n this.cdr.detectChanges();\r\n // Reset the copied state after a delay\r\n setTimeout(() => {\r\n this.chatLog[index].isEditor = false;\r\n this.cdr.detectChanges();\r\n }, 2000); // Reset after 2 seconds\r\n this.editorsDrawer.open();\r\n const button = document.getElementById('botcloseplaygroundbutton');\r\n if (button) {\r\n button.style.display = 'none';\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n scrollToBottom() {\r\n let counter = 0;\r\n const interval = setInterval(() => {\r\n this.chatMain.nativeElement.scrollTop = this.chatMain.nativeElement.scrollHeight;\r\n if (counter++ > 5) clearInterval(interval);\r\n }, 5);\r\n }\r\n\r\n handleAction(action: any) {\r\n console.info('incoming action from the chatbot AI');\r\n console.info(action);\r\n\r\n if (action?.content) {\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n // Check if the drawer is initially open and apply overflow hidden to body if so\r\n if (this.drawer.opened) {\r\n this.setBodyOverflow();\r\n }\r\n\r\n // Listen to changes in the drawer being opened or closed\r\n this.drawer.openedChange.subscribe((opened: boolean) => {\r\n if (opened) {\r\n this.setBodyOverflow();\r\n } else {\r\n this.removeBodyOverflow();\r\n }\r\n });\r\n\r\n this.drawer.openedChange.subscribe((opened) => {\r\n if (opened) {\r\n setTimeout(() => {\r\n if (this.myTextarea && this.myTextarea.nativeElement) {\r\n this.myTextarea.nativeElement.focus(); // Focus on the textarea\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n private setBodyOverflow() {\r\n this.renderer.addClass(document.body, this.bodyOverflowClass);\r\n }\r\n\r\n private removeBodyOverflow() {\r\n this.renderer.removeClass(document.body, this.bodyOverflowClass);\r\n }\r\n\r\n getSpeakersByStaffIds(ids) {\r\n const url = `${this.environment.USERS_API}/events/${this.eventId}/users/get-by-staff-ids`;\r\n fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: 'Bearer ' + 'your_token_here',\r\n },\r\n body: JSON.stringify(ids),\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json(); // Parse the JSON body of the response\r\n } else {\r\n throw new Error('Network response was not ok.');\r\n }\r\n })\r\n .then((data) => {\r\n if (data?.length > 0) {\r\n data.forEach((speaker) => {\r\n this.speakers[speaker.id] = speaker;\r\n });\r\n\r\n this.cdr.markForCheck();\r\n }\r\n })\r\n .catch((err) => {\r\n console.error('Error fetching data:', err);\r\n this.loading = false;\r\n });\r\n }\r\n\r\n performSessionAction(sessionId, action) {\r\n this.sessionActions.next({\r\n sessionId,\r\n action,\r\n });\r\n }\r\n\r\n addCloseBotClickEvent() {\r\n const element = this.elementRef.nativeElement.querySelector('#closeBotNow');\r\n if (element) {\r\n this.renderer.listen(element, 'click', () => {\r\n this.closeBot.next();\r\n });\r\n }\r\n }\r\n\r\n isMobileBrowser() {\r\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\r\n navigator.userAgent\r\n );\r\n }\r\n\r\n connectToUser(userId) {\r\n this.connectWithUser.emit({\r\n connect: !this.canDisconnect(userId),\r\n userId,\r\n });\r\n\r\n setTimeout(() => {\r\n this.fetchMyConnections().subscribe((res) => {\r\n this.cdr.markForCheck();\r\n });\r\n this.fetchPendingRequests().subscribe((res) => {\r\n this.cdr.markForCheck();\r\n });\r\n }, 500);\r\n }\r\n\r\n scheduleMeetingWithUser(user) {\r\n this.scheduleMeeting.emit(user);\r\n }\r\n\r\n canConnect(userId) {\r\n return !(\r\n this.canDisconnect(userId) ||\r\n this.pendingRequests.find((a) => a == userId)\r\n );\r\n }\r\n\r\n canDisconnect(userId) {\r\n return this.myConnections.find((conn) => conn.userId == userId);\r\n }\r\n\r\n fetchPendingRequests() {\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n apiKey: this.autogenKey,\r\n });\r\n return this.http\r\n .get(\r\n `${this.environment.USERS_API}/events/${this.eventId}/connection-requests/autogen/pending-sent-requests?userId=${this.userId}`,\r\n { headers }\r\n )\r\n .pipe(\r\n switchMap((res: any) => {\r\n this.pendingRequests = res;\r\n this.cdr.markForCheck();\r\n return of(res);\r\n }),\r\n catchError((error: any) => {\r\n console.error('Error fetching pending requests: ', error);\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n fetchMyConnections() {\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n apiKey: this.autogenKey,\r\n });\r\n return this.http\r\n .get(\r\n `${this.environment.USERS_API}/events/${this.eventId}/users-connections/autogen?userId=${this.userId}`,\r\n { headers }\r\n )\r\n .pipe(\r\n switchMap((res: any) => {\r\n this.myConnections = res;\r\n this.cdr.markForCheck();\r\n return of(res);\r\n }),\r\n catchError((error: any) => {\r\n console.error('Error fetching pending requests: ', error);\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n isDropdownOpen: boolean = false;\r\n agents: any;\r\n selectedAgents = [];\r\n allSelected = false;\r\n // Toggle the dropdown visibility\r\n toggleDropdown() {\r\n if (!this.agents)\r\n this.fetchAgents();\r\n this.isDropdownOpen = !this.isDropdownOpen;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n onSelectAll(event: Event): void {\r\n this.agents?.forEach((agent) => (agent.selected = false));\r\n this.cdr.detectChanges();\r\n }\r\n\r\n onAgentChange(agent: any): void {\r\n //agent.selected = !agent.selected;\r\n //console.log(agent);\r\n let agentFound = this.agents.filter((p) => p.id == agent.id);\r\n if (agentFound && agentFound.length > 0) {\r\n agentFound[0].selected = !agentFound[0].selected;\r\n this.cdr.detectChanges();\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n areAllSelected(): boolean {\r\n return this.agents?.every((agent) => !agent.selected);\r\n }\r\n\r\n getDropdownHeaderText(): string {\r\n const selectedAgents = this.agents?.filter((agent) => agent.selected);\r\n if (!selectedAgents) {\r\n return 'All Agents';\r\n } else {\r\n if (selectedAgents && selectedAgents?.length === 0) {\r\n return 'All Agents';\r\n } else {\r\n return selectedAgents?.length > 1\r\n ? `${selectedAgents?.length} Agents Selected`\r\n : `${selectedAgents?.length} Agent Selected`;\r\n }\r\n }\r\n }\r\n fetchAgents_http() {\r\n this.loading = true;\r\n const url = `${this.environment.AGENTS_API}/CoPilot/${this.botId}/active-agents`;\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n });\r\n\r\n return this.http.post(url, {}, { headers }).pipe(\r\n switchMap((res: any) => {\r\n if (res) {\r\n this.agents = res.map((agent) => ({\r\n ...agent,\r\n selected: false,\r\n }));\r\n }\r\n this.cdr.markForCheck();\r\n\r\n return of(res);\r\n }),\r\n catchError((error) => {\r\n console.error('Error fetching chatbot config: ', error);\r\n\r\n return of(null);\r\n })\r\n );\r\n }\r\n isDocInEditMode = false;\r\n documentContent: any;\r\n\r\n conversationId: any;\r\n isContentLoaded = false;\r\n\r\n fetchContent_http() {\r\n this.isDocInEditMode = false;\r\n this.isContentLoaded = false;\r\n console.log('API call function');\r\n this.loading = true;\r\n const conversation_id = this.conversationService.getKey(this.botId);\r\n this.conversationId = conversation_id;\r\n const url = `${this.environment.AGENTS_API}/ConversationDocuments?conversationId=${conversation_id}&botId=${this.botId}`;\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n apiKey: 'WIz/qAm+EEmfOkFaUA/weA==',\r\n });\r\n\r\n return this.http.get(url, { headers }).pipe(\r\n switchMap((res: any) => {\r\n if (res) {\r\n this.isDocInEditMode = true;\r\n this.documentContent = res;\r\n console.log('Get API callled success');\r\n this.isContentLoaded = true;\r\n console.log(res);\r\n }\r\n this.cdr.markForCheck();\r\n\r\n return of(res);\r\n }),\r\n catchError((error) => {\r\n console.error('Error fetching chatbot config DJ: ', error);\r\n this.isDocInEditMode = false;\r\n this.isContentLoaded = true;\r\n\r\n if (error?.status == 404) {\r\n console.log('dash');\r\n this.isDocInEditMode = false;\r\n this.isContentLoaded = true;\r\n }\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n fetchAgents() {\r\n this.fetchAgents_http().subscribe();\r\n }\r\n\r\n fetchEditorContent() {\r\n this.fetchContent_http().subscribe();\r\n }\r\n\r\n // events/${eventId}/users-connections\r\n processMessageForDisplay(markdown: string): SafeHtml {\r\n var html = this.prepareHtml(markdown);\r\n\r\n // console.log('After line breaks conversion:', html);\r\n\r\n // Optional: Sanitize the HTML to prevent XSS\r\n const sanitizedHtml = this.sanitizeHtml(html);\r\n\r\n // console.log('Sanitized HTML:', sanitizedHtml);\r\n\r\n return sanitizedHtml;\r\n }\r\n\r\n prepareHtml(markdown: string): string {\r\n if (!markdown || !(markdown.length > 0)) {\r\n console.error('Input Markdown is null or empty');\r\n return '';\r\n }\r\n\r\n // Convert Markdown headers (### or ##) to <strong> for bold headings\r\n let html = markdown.replace(/^(#{1,6})\\s+(.*)$/gm, (match, hashes, text) => {\r\n const level = hashes.length;\r\n if (level === 3) {\r\n return `<h3><strong>${text}</strong></h3>`;\r\n } else if (level === 4) {\r\n return `<h4><strong>${text}</strong></h4>`;\r\n }\r\n return `<strong>${text}</strong>`;\r\n });\r\n\r\n // Convert Markdown code blocks with language to preformatted HTML\r\n html = html.replace(/```(\\w+)?\\n([\\s\\S]*?)```/g, (match, lang, code) => {\r\n const escapedCode = this.escapeHtml(code);\r\n const language = lang || 'plaintext';\r\n\r\n // Create a copy button for the code block\r\n return `\r\n <div class=\"code-container\">\r\n <button id=\"copy-button\" class=\"copy-button\" (click)=\"copyToClipboard('\\`${escapedCode}\\`')\">Copy</button>\r\n <pre class=\"code_block diff\"><code class=\"language-${language}\">${escapedCode}</code></pre>\r\n </div>`;\r\n });\r\n\r\n // Convert inline code (wrapped in `backticks`) to inline <code> tags\r\n html = html.replace(/`([^`]+)`/g, '<code>$1</code>');\r\n\r\n // Convert Markdown bold to HTML <strong>\r\n html = html.replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>');\r\n\r\n // Convert numbered lists\r\n html = html.replace(/^\\d+\\.\\s+(.*)$/gm, '<li>$1</li>');\r\n\r\n // Convert bullet point lists\r\n html = html.replace(/^\\-\\s+(.*)$/gm, '<li>$1</li>');\r\n\r\n // Convert Markdown links to HTML links\r\n html = html.replace(/\\[([^\\]]+)]\\(([^)]+)\\)/g, '<a href=\"$2\" target=\"_blank\">$1</a>');\r\n\r\n // Convert new lines to <br> tags for paragraphs\r\n html = html.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>');\r\n\r\n return html;\r\n }\r\n\r\n // Helper function to escape HTML characters for code blocks\r\n escapeHtml(code: string): string {\r\n return code\r\n .replace(/&/g, '&amp;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\"/g, '&quot;')\r\n .replace(/'/g, '&#039;');\r\n }\r\n\r\n // Function to copy text to clipboard\r\n public copyToClipboard(text: string) {\r\n navigator.clipboard.writeText(text).then(() => {\r\n alert('Code copied to clipboard!');\r\n }, (err) => {\r\n console.error('Could not copy text: ', err);\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n isCollapsed = false;\r\n isCollapsedForGraph = false;\r\n isCollapsedForFGraph = false;\r\n toggleCollapse() {\r\n this.isCollapsed = !this.isCollapsed;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n toggleCollapseGraph() {\r\n this.isCollapsedForGraph = !this.isCollapsedForGraph;\r\n this.cdr.detectChanges();\r\n }\r\n toggleCollapseFGraph() {\r\n this.isCollapsedForFGraph = !this.isCollapsedForFGraph;\r\n this.cdr.detectChanges();\r\n }\r\n // [\r\n // {\r\n // \"title\": \"AI News January 2024: In-Depth and Concise - The AI Track\",\r\n // \"desc\": \"Each month, we compile significant news, trends, and happenings in AI, providing detailed summaries with key points in bullet form for concise yet complete understanding.\",\r\n // \"link\": \"https://theaitrack.com/ai-news-january-2024/\"\r\n // },\r\n // {\r\n // \"title\": \"Top AI News, January 2024 - Everypixel Journal\",\r\n // \"desc\": \"In this monthly roundup, we spotlight the top AI news stories from January, including the OpenAI vs. The New York Times Lawsuit.\",\r\n // \"link\": \"https://journal.everypixel.com/top-ai-news-january-2024\"\r\n // },\r\n // {\r\n // \"title\": \"AI News July 2024: In-Depth and Concise - The AI Track\",\r\n // \"desc\": \"This page features AI News for July 2024, highlighting significant events such as Canva acquiring Leonardo AI.\",\r\n // \"link\": \"https://theaitrack.com/ai-news-july-2024-in-depth-and-concise/\"\r\n // },\r\n // {\r\n // \"title\": \"January news roundup: What's new in the world of AI? - Pluralsight\",\r\n // \"desc\": \"OpenAI’s new GPT store, business-ready ChatGPT plans, and a predicted rise in AI-powered cybercrime.\",\r\n // \"link\": \"https://www.pluralsight.com/resources/blog/data/ai-this-month-january-2024\"\r\n // },\r\n // {\r\n // \"title\": \"AI News August 2024: In-Depth and Concise - The AI Track\",\r\n // \"desc\": \"This page features AI News for August 2024, with highlights such as Nvidia delaying the “Blackwell” B200 AI chips delivery.\",\r\n // \"link\": \"https://theaitrack.com/ai-news-august-2024-in-depth-and-concise-duplicate/\"\r\n // }\r\n // ]\r\n dateTime = { now: new Date().toISOString() };\r\n // Extracts the domain from a URL\r\n getDomainName(url: string): string {\r\n try {\r\n const { hostname } = new URL(url);\r\n return hostname.replace(/^www\\./, ''); // Remove 'www.' if present\r\n } catch {\r\n return 'unknown';\r\n }\r\n }\r\n\r\n // Generates the favicon URL\r\n getFaviconUrl(url: string): string {\r\n const domain = this.getDomainName(url);\r\n return `https://www.google.com/s2/favicons?sz=128&domain=${domain}`;\r\n }\r\n currentSourcesList: any = [];\r\n onCardClick(sources): void {\r\n this.currentSourcesList = sources;\r\n this.cdr.detectChanges();\r\n this.sourcesDrawer.open();\r\n const button = document.getElementById('botcloseplaygroundbutton');\r\n if (button) {\r\n button.style.display = 'none';\r\n }\r\n }\r\n\r\n isShowEditorButton = true;\r\n\r\n openOuterEditor() {\r\n this.fetchEditorContent();\r\n this.editorsDrawer.open();\r\n this.isDrawerOpen = true;\r\n this.isShowEditorButton = false;\r\n this.cdr.detectChanges();\r\n\r\n const button = document.getElementById('botcloseplaygroundbutton');\r\n if (button) {\r\n button.style.display = 'none';\r\n }\r\n }\r\n\r\n onCloseEditor() {\r\n this.editorsDrawer.close();\r\n this.isDrawerOpen = false;\r\n this.isShowEditorButton = true;\r\n this.cdr.detectChanges(); // Trigger change detection if needed\r\n this.onDrawerClosed();\r\n }\r\n\r\n onCloseSource() {\r\n this.sourcesDrawer.close();\r\n this.isDrawerOpen = false;\r\n this.cdr.detectChanges(); // Trigger change detection if needed\r\n this.onDrawerClosed();\r\n }\r\n onDrawerClosed() {\r\n setTimeout(() => {\r\n this.isDrawerOpen = true;\r\n this.cdr.detectChanges(); // Trigger change detection if needed\r\n // Use ngClass to dynamically apply the class\r\n const button = document.getElementById('botcloseplaygroundbutton');\r\n if (button) {\r\n button.style.display = 'block';\r\n }\r\n }, 800);\r\n }\r\n isDrawerOpen = true;\r\n\r\n toggleDrawer(todo) {\r\n this.isDrawerOpen = todo;\r\n this.cdr.detectChanges();\r\n this.updateButtonVisibility();\r\n }\r\n updateButtonVisibility() {\r\n const button = document.getElementById('botcloseplaygroundbutton');\r\n if (button) {\r\n button.style.display = this.isDrawerOpen ? 'block' : 'none';\r\n }\r\n }\r\n openLinkInNewTab(link: string): void {\r\n window.open(link, '_blank');\r\n }\r\n adjustTextareaHeight(event: any): void {\r\n try {\r\n if (event.key === 'Enter' && !event.shiftKey) {\r\n // Prevents a new line from being added\r\n event.preventDefault();\r\n }\r\n } catch (error) {\r\n\r\n }\r\n const textarea = event.target as HTMLTextAreaElement;\r\n textarea.style.height = 'auto'; // Reset the height\r\n textarea.style.height = `${textarea.scrollHeight}px`; // Adjust height to match content\r\n // Ensure the height doesn't exceed the max-height set in CSS\r\n if (textarea.scrollHeight > 150) {\r\n textarea.style.height = `150px`; // Adjust height to match content\r\n textarea.style.overflowY = 'auto'; // Enable scrolling if content exceeds 400px\r\n } else {\r\n textarea.style.overflowY = 'hidden'; // Hide scrollbar if content is within limits\r\n }\r\n }\r\n\r\n toggleWorkflows(value = null) {\r\n\r\n if (!this.checkForCop29BotId()) {\r\n this.botService.getWorkflowsByOrgId(this.orgId).subscribe((res) => {\r\n this.orgWorkflows = res;\r\n this.isWorkflowOpen = value == null ? !this.isWorkflowOpen : value;\r\n\r\n if (!this.isWorkflowOpen) {\r\n this.selectedWorkflow = null;\r\n this.openWorkflowInput = false;\r\n }\r\n\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n }\r\n\r\n initializeForm() {\r\n // Create form controls dynamically based on selectedWorkflow.Trigger.InputSchema\r\n const formControls = {};\r\n if (this.selectedWorkflow?.Trigger?.InputSchema) {\r\n this.selectedWorkflow.Trigger.InputSchema.forEach((input) => {\r\n formControls[input.InputId] = [\r\n input.Value || '',\r\n input.Required ? Validators.required : null,\r\n ];\r\n });\r\n }\r\n\r\n // Initialize the form\r\n this.workflowForm = this.fb.group(formControls);\r\n }\r\n\r\n onWorkflowSelected(workflow) {\r\n this.selectedWorkflow = workflow;\r\n this.initializeForm();\r\n this.isWorkflowOpen = false;\r\n this.openWorkflowInput = true;\r\n }\r\n\r\n onWorkflowSubmit() {\r\n const container = document.getElementById('allChats');\r\n if (this.workflowForm.valid) {\r\n console.log(this.workflowForm.value);\r\n\r\n var input = this.prepareHtml(\r\n this.generateMarkdown(\r\n this.selectedWorkflow.Name,\r\n this.workflowForm.value\r\n )\r\n );\r\n\r\n // update last two chatLog entries, set showWorkflowExecutionLoader = false\r\n try {\r\n this.chatLog[this.chatLog.length - 1][\r\n 'showWorkflowExecutionLoader'\r\n ] = false;\r\n this.chatLog[this.chatLog.length - 2][\r\n 'showWorkflowExecutionLoader'\r\n ] = false;\r\n } catch (error) { }\r\n\r\n this.chatLog.push({\r\n type: 'user',\r\n message: input,\r\n time: formatNow(this.timezone),\r\n copied: false,\r\n isCollapsedTrue: false,\r\n showWorkflowExecutionLoader: true,\r\n });\r\n\r\n console.log(input);\r\n\r\n this.currentWorkflowActionProgress = 0;\r\n this.currentWorkflowAction =\r\n 'Executing ' + this.selectedWorkflow.Actions[0].Name;\r\n this.isChatingWithAi = true;\r\n this.executingWorkflow = true;\r\n this.workflowExecutionDetails = {\r\n Actions: this.selectedWorkflow.Actions,\r\n Inputs: this.workflowForm.value,\r\n workflowInputs: this.workflowForm.value,\r\n WorkflowName: this.selectedWorkflow.Name,\r\n };\r\n this.currentWorkflowExecutionDetails = this.workflowExecutionDetails;\r\n this.scrollToBottom();\r\n\r\n this.cdr.detectChanges();\r\n\r\n // execute the ask endpoint with workflow input\r\n this.makeAskRequest(\r\n input,\r\n this.agents,\r\n this.conversationKey,\r\n '',\r\n null,\r\n this.selectedWorkflow['_id'],\r\n this.workflowForm.value\r\n );\r\n }\r\n }\r\n\r\n makeAskRequest(\r\n inputMsg: string,\r\n agents: any[],\r\n conversationId: string,\r\n msg?: any,\r\n chat?: any,\r\n workflowId?: string,\r\n workflow_inputs?: any\r\n ): void {\r\n var url = `${this.environment.BASE_URL}/ai/ask`;\r\n\r\n var body = {\r\n user_question: inputMsg,\r\n user_id: this.userId,\r\n bot_id: this.botId,\r\n message_id: this.conversationService.generateKey(),\r\n agents: agents?.filter((p) => p.selected).map((p) => p.id) ?? [],\r\n conversation_id: conversationId,\r\n };\r\n\r\n if (workflowId) {\r\n body['workflow_id'] = workflowId;\r\n body['workflow_inputs'] = workflow_inputs;\r\n }\r\n\r\n fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: 'Bearer ' + this.s27Token,\r\n 'x-api-key': this.apiKey,\r\n 'hive-bot-id': this.botId\r\n },\r\n body: JSON.stringify(body),\r\n })\r\n .then((response) => {\r\n if (response.status === 401 || response.status === 403) {\r\n this.is401 = true;\r\n this.refreshToken.emit();\r\n\r\n // If `msg` and `chat` exist, handle them\r\n if (msg && chat) {\r\n this.msg = msg;\r\n this.chat = chat;\r\n this.isFetchDataFor = true;\r\n }\r\n } else {\r\n this.is401 = false;\r\n }\r\n return response.json();\r\n })\r\n .then((data) => {\r\n console.log(data);\r\n // Additional response handling if needed\r\n })\r\n .catch((err) => {\r\n console.error('Error: ', err);\r\n this.isChatingWithAi = false;\r\n });\r\n\r\n this.input = '';\r\n this.selectedWorkflow = null;\r\n this.openWorkflowInput = false;\r\n this.isWorkflowOpen = false;\r\n this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n generateMarkdown(title, obj) {\r\n // Initialize markdown with the title\r\n let markdown = `## ${title}\\n`;\r\n\r\n // Loop through the object and append the field names and values\r\n for (const [key, value] of Object.entries(obj)) {\r\n var key_label =\r\n this.selectedWorkflow.Trigger.InputSchema.find(\r\n (input) => input.InputId === key\r\n )?.Label || key;\r\n markdown += `- **${key_label}**: ${value}\\n`;\r\n }\r\n\r\n return markdown;\r\n }\r\n\r\n showWorkflowHistoryDetails(workflow_id) {\r\n if (!workflow_id) {\r\n this.workflowExecutionDetails = this.currentWorkflowExecutionDetails;\r\n this.showWorkflowExecutionDetails = true;\r\n this.cdr.detectChanges();\r\n return;\r\n }\r\n\r\n this.botService.getWorkflowExecutionById(workflow_id).subscribe((res) => {\r\n if (res && res.Actions && Array.isArray(res.Actions)) {\r\n res.Actions = res.Actions.map((action) => {\r\n if (action.InsertTimeStamp) {\r\n action.InsertTimeStamp = formatTimeStamps(\r\n this.timezone,\r\n action.InsertTimeStamp\r\n );\r\n }\r\n return action;\r\n });\r\n }\r\n\r\n res.InsertTimeStamp = formatTimeStamps(\r\n this.timezone,\r\n res.InsertTimeStamp\r\n );\r\n this.workflowExecutionDetails = res;\r\n this.showWorkflowExecutionDetails = true;\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n closeModal() {\r\n this.showWorkflowExecutionDetails = false;\r\n }\r\n\r\n objectToArray(obj: any): any[] {\r\n return Object.keys(obj).map((key) => ({ key, value: obj[key] }));\r\n }\r\n\r\n startNewConversation() {\r\n this.conversationKey = this.conversationService.getKey(this.botId, true);\r\n this.chatLog = [this.chatLog[0]];\r\n this.isChatingWithAi = false;\r\n setTimeout(() => {\r\n this.initializeSocket();\r\n }, 200);\r\n this.scrollToBottom();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n initializeSpeechRecognizer(token: string) {\r\n this.speechConfig = SpeechSDK.SpeechConfig.fromAuthorizationToken(\r\n token,\r\n this.region\r\n );\r\n const audioConfig = SpeechSDK.AudioConfig.fromDefaultMicrophoneInput();\r\n this.recognizer = new SpeechSDK.SpeechRecognizer(\r\n this.speechConfig,\r\n audioConfig\r\n );\r\n\r\n this.recognizer.recognizing = (s, e) => {\r\n if (e.result.reason === SpeechSDK.ResultReason.RecognizingSpeech) {\r\n this.input = e.result.text;\r\n console.log(`Recognizing: ${e.result.text}`);\r\n this.cdr.markForCheck();\r\n }\r\n };\r\n\r\n this.recognizer.recognized = (s, e) => {\r\n if (e.result.reason === SpeechSDK.ResultReason.RecognizedSpeech) {\r\n this.input = e.result.text;\r\n console.log(`Recognized: ${e.result.text}`);\r\n this.toggleRecording();\r\n this.cdr.markForCheck();\r\n }\r\n };\r\n\r\n this.recognizer.canceled = (s, e) => {\r\n console.error('Canceled: ', e.errorDetails);\r\n };\r\n\r\n this.recognizer.sessionStopped = (s, e) => {\r\n console.log('Session stopped.');\r\n this.recognizer.stopContinuousRecognitionAsync();\r\n this.fetchData();\r\n };\r\n }\r\n\r\n toggleRecording() {\r\n this.isRecording = !this.isRecording;\r\n\r\n if (this.isRecording) {\r\n this.startRecognition();\r\n } else {\r\n this.stopRecognition();\r\n }\r\n }\r\n\r\n startRecognition() {\r\n this.recognizer.startContinuousRecognitionAsync();\r\n }\r\n\r\n stopRecognition() {\r\n this.recognizer.stopContinuousRecognitionAsync();\r\n }\r\n\r\n checkForCop29BotId() {\r\n return this.botId == '66fa3f276c5d71e2717bfea8';\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n@Component({\r\n selector: 'hivegpt-chatbot',\r\n templateUrl: './chatbot.component.html',\r\n styleUrls: ['./chatbot.component.scss'],\r\n})\r\nexport class ChatBotComponent {\r\n @Input() userId!: string;\r\n @Input() apiKey!: string;\r\n @Input() botName!: string;\r\n @Input() botSkills!: string;\r\n @Input() botId!: string;\r\n @Input() closeButtonColor!: string;\r\n @Input() gradientColors!: string[];\r\n @Input() greeting!: string;\r\n @Input() sendButtonColor!: string;\r\n @Input() useOpenAi!: boolean;\r\n @Input() showClose!: boolean;\r\n @Input() bgGradient!: string[];\r\n @Input() sendButtonTextColor!: string;\r\n @Input() fullView!: boolean;\r\n @Input() bgBubbleAi!: string;\r\n @Input() bgBubbleUser!: string;\r\n @Input() closeButtonbgColor!: string;\r\n @Input() messageTextColorAi!: string;\r\n @Input() messageTextColorUser!: string;\r\n @Input() dateTimeColor!: string;\r\n @Input() dateTextColor!: string;\r\n @Input() formFieldBgColor!: string;\r\n @Input() formFieldTextColor!: string;\r\n @Input() thumbsUpMessage!: string;\r\n @Input() thumbsDownMessages!: string[];\r\n @Input() timezone!: string;\r\n @Input() eventName!: string;\r\n @Input() credentials!: [];\r\n @Input() unknownResponses!: [];\r\n @Input() rules!: string;\r\n @Input() eventId!: string;\r\n visible = false;\r\n\r\n toggle() {\r\n this.visible = !this.visible;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'safeHtml',\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n\r\n constructor(private sanitizer: DomSanitizer) {\r\n }\r\n\r\n transform(html): unknown {\r\n return html ? this.sanitizer.bypassSecurityTrustHtml(html) : '';\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { IVideo } from '../../models/video';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-video-player',\r\n templateUrl: './video-player.component.html',\r\n styleUrls: ['./video-player.component.scss'],\r\n})\r\nexport class VideoPlayerComponent\r\n implements OnInit, AfterViewInit {\r\n @Input() currentUserId: string;\r\n @Input() user: any;\r\n @Input() eventId: string;\r\n @Input() videoObj: IVideo;\r\n @Input() isDev: boolean;\r\n myFollowingList: Array<string>;\r\n myPendingSentRequests: Array<string>;\r\n @Input() type: string;\r\n isMuted: boolean = true;\r\n private observer: IntersectionObserver;\r\n isFullscreen: boolean = false;\r\n @ViewChild('video') video: any;\r\n @ViewChild('fullscreenvideo') fullscreenvideo: any;\r\n isFullscreenvideoPlaying: boolean = false;\r\n\r\n @Output() connectWithUser = new EventEmitter<string>();\r\n @Output() scheduleMeeting = new EventEmitter<any>();\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private doc: any,\r\n private el: ElementRef,\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n toggleSound(isMuted = null) {\r\n this.isMuted = isMuted != null ? isMuted : !this.isMuted;\r\n setTimeout(() => {\r\n const video: any = this.doc\r\n .getElementById(this.video.id.toString());\r\n if (video) {\r\n video.muted = this.isMuted;\r\n this.video.isMuted = this.isMuted;\r\n }\r\n\r\n this.cdr.markForCheck();\r\n //this.muteToggle.emit(this.isMuted);\r\n })\r\n}\r\n\r\n togglePlay(playState: boolean, videoEl) {\r\n this.videoObj.isPlaying = !this.videoObj.isPlaying;\r\n setTimeout(() => { \r\n if (playState) { \r\n this.videoObj.isPlaying = true;\r\n videoEl.play();\r\n var pauseBtn = document.getElementById('pause-btn');\r\n pauseBtn.classList.add('hide-pause-btn');\r\n\r\n this.toggleSound(false);\r\n }\r\n else{\r\n this.videoObj.isPlaying = false;\r\n videoEl.pause();\r\n }\r\n this.cdr.markForCheck();\r\n })\r\n }\r\n \r\n ngAfterViewInit() {\r\n if (window.innerWidth <= 576) {\r\n this.observer = new IntersectionObserver(\r\n (entries) => {\r\n if (entries[0].isIntersecting === true) {\r\n this.video.nativeElement.play();\r\n } else {\r\n this.video.nativeElement.pause();\r\n }\r\n },\r\n {\r\n threshold: 0.75,\r\n }\r\n );\r\n\r\n this.observer.observe(this.el.nativeElement as HTMLElement);\r\n }\r\n }\r\n\r\n toggleFullscreen() {\r\n this.isFullscreen = !this.isFullscreen;\r\n if (!this.isFullscreen) {\r\n this.fullscreenvideo.nativeElement.pause();\r\n }\r\n }\r\n\r\n toggleFullscreenPlay() {\r\n this.isFullscreenvideoPlaying = !this.isFullscreenvideoPlaying;\r\n\r\n if (this.isFullscreenvideoPlaying) {\r\n this.fullscreenvideo.nativeElement.play();\r\n } else {\r\n this.fullscreenvideo.nativeElement.pause();\r\n }\r\n }\r\n\r\n followUser(userId) {\r\n this.connectWithUser.emit(userId);\r\n }\r\n\r\n checkPendingSentRequest(userId) {\r\n return this.myPendingSentRequests?.find(a => a == userId);\r\n }\r\n\r\n canUnfollowUser() {\r\n return false;\r\n }\r\n\r\n canFollowUser() {\r\n return true;\r\n }\r\n\r\n getIniNames(firstName, lastName) {\r\n if(!firstName && !lastName) {\r\n return '';\r\n }\r\n \r\n if (firstName && lastName)\r\n return (\r\n firstName.charAt(0).toUpperCase() + lastName.charAt(0).toUpperCase()\r\n );\r\n else return firstName.charAt(0).toUpperCase();\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n Renderer2,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { MatDrawer } from '@angular/material/sidenav';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { of, Subscription } from 'rxjs';\r\nimport { catchError, switchMap } from 'rxjs/operators';\r\nimport { formatNow, formatTimeStamps } from '../../utils/utils';\r\nimport {\r\n dev_environment,\r\n prod_environment,\r\n} from '../../../environments/environment';\r\nimport { ConversationService } from '../conversation.service';\r\nimport { Observable } from 'rxjs';\r\nimport { SocketService } from '../socket-service.service';\r\n\r\n@Component({\r\n selector: 'lib-bot-html-editor',\r\n templateUrl: './bot-html-editor.component.html',\r\n styleUrls: ['./bot-html-editor.component.css'],\r\n})\r\nexport class BotHtmlEditorComponent implements OnInit {\r\n @Input() editorContent: Observable<string>;\r\n @Input() isDocInEditMode: any;\r\n @Input() documentContent: any;\r\n @Input() conversationId: any;\r\n @Input() botId: any;\r\n\r\n documentName: any = 'doc name';\r\n\r\n environment: {\r\n USERS_API;\r\n BASE_URL;\r\n AGENTS_API;\r\n };\r\n\r\n quillConfig = {\r\n toolbar: [\r\n [{ header: '1' }, { header: '2' }, { font: [] }],\r\n [{ list: 'ordered' }, { list: 'bullet' }],\r\n ['bold', 'italic', 'underline'],\r\n ['link'],\r\n ['clean'],\r\n ],\r\n };\r\n constructor(private cdr: ChangeDetectorRef, private http: HttpClient) {}\r\n\r\n ngOnInit(): void {\r\n this.environment = prod_environment;\r\n\r\n setTimeout(() => {\r\n if (this.isDocInEditMode) {\r\n console.log('In Edit mode');\r\n this.filldataInForm();\r\n } else {\r\n console.log('In save mode');\r\n }\r\n }, 2500);\r\n }\r\n\r\n filldataInForm() {\r\n if (this.documentContent) {\r\n this.documentName = this.documentContent?.name;\r\n this.editorContent = this.documentContent?.content;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n saveContent() {\r\n if (!this.isDocInEditMode) {\r\n this.saveContent_http().subscribe();\r\n } else {\r\n this.saveContent_http().subscribe();\r\n }\r\n }\r\n\r\n saveContent_http() {\r\n console.log('API call function');\r\n\r\n const url = `${this.environment.AGENTS_API}/ConversationDocuments?conversationId=${this.conversationId}&botId=${this.botId}`;\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n apiKey: 'WIz/qAm+EEmfOkFaUA/weA==',\r\n });\r\n\r\n let data = {\r\n name: this.documentName,\r\n content: this.editorContent,\r\n };\r\n\r\n return this.http.post(url, data, { headers }).pipe(\r\n switchMap((res: any) => {\r\n if (res) {\r\n // alert('Saved Successfully');\r\n }\r\n this.cdr.markForCheck();\r\n\r\n return of(res);\r\n }),\r\n catchError((error) => {\r\n console.error('Error fetching chatbot config: ', error);\r\n\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n updateContent_http() {\r\n console.log('API call function');\r\n\r\n const url = `${this.environment.AGENTS_API}/ConversationDocuments/rename?conversationId=${this.conversationId}&botId=${this.botId}`;\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n apiKey: 'WIz/qAm+EEmfOkFaUA/weA==',\r\n });\r\n\r\n let data = {\r\n name: this.documentName,\r\n content: this.editorContent,\r\n };\r\n\r\n return this.http.put(url, data, { headers }).pipe(\r\n switchMap((res: any) => {\r\n if (res) {\r\n // alert('Updated Successfully');\r\n }\r\n this.cdr.markForCheck();\r\n\r\n return of(res);\r\n }),\r\n catchError((error) => {\r\n console.error('Error fetching chatbot config: ', error);\r\n\r\n return of(null);\r\n })\r\n );\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { ChatDrawerComponent } from './components/chat-drawer/chat-drawer.component';\r\nimport { ChatBotComponent } from './components/chatbot/chatbot.component';\r\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\r\nimport { VideoPlayerComponent } from './components/video-player/video-player.component';\r\nimport { QuillModule } from 'ngx-quill';\r\nimport { BotHtmlEditorComponent } from './components/bot-html-editor/bot-html-editor.component';\r\n\r\n@NgModule({\r\n declarations: [ChatBotComponent, ChatDrawerComponent, VideoPlayerComponent, SafeHtmlPipe, BotHtmlEditorComponent],\r\n imports: [CommonModule, MatIconModule, MatSidenavModule, FormsModule, QuillModule],\r\n exports: [ChatBotComponent, ChatDrawerComponent, VideoPlayerComponent]\r\n})\r\nexport class HiveGptModule { }\r\n","/*\r\n * Public API Surface of hive-gpt\r\n */\r\n\r\nexport * from './lib/components/chat-drawer/chat-drawer.component';\r\nexport * from './lib/components/chatbot/chatbot.component';\r\nexport * from './lib/hivegpt.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {NotificationSocket as ɵd} from './lib/components/NotificationSocket';\nexport {BotHtmlEditorComponent as ɵg} from './lib/components/bot-html-editor/bot-html-editor.component';\nexport {BotsService as ɵa} from './lib/components/bot.service';\nexport {ConversationService as ɵc} from './lib/components/conversation.service';\nexport {SocketService as ɵb} from './lib/components/socket-service.service';\nexport {VideoPlayerComponent as ɵe} from './lib/components/video-player/video-player.component';\nexport {SafeHtmlPipe as ɵf} from './lib/pipes/safe-html.pipe';"],"names":["SpeechSDK.SpeechConfig","SpeechSDK.AudioConfig","SpeechSDK.SpeechRecognizer","SpeechSDK.ResultReason"],"mappings":"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"}
1
+ {"version":3,"file":"hivegpt-hiveai-angular.js","sources":["../../../../projects/hivegpt/eventsgpt-angular/src/lib/utils/utils.ts","../../../../projects/hivegpt/eventsgpt-angular/src/environments/environment.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/conversation.service.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/NotificationSocket.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/socket-service.service.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/bot.service.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/chat-drawer/chat-drawer.component.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/chatbot/chatbot.component.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/pipes/safe-html.pipe.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/video-player/video-player.component.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/bot-html-editor/bot-html-editor.component.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/hivegpt.module.ts","../../../../projects/hivegpt/eventsgpt-angular/src/public-api.ts","../../../../projects/hivegpt/eventsgpt-angular/src/hivegpt-hiveai-angular.ts"],"sourcesContent":["const formatHoursAndMinutes = (date: Date) => {\r\n let hours = date.getHours() % 12;\r\n const minutes = date.getMinutes();\r\n const amPm = date.getHours() < 12 ? 'AM' : 'PM';\r\n if(hours === 0) hours = 12;\r\n\r\n const formattedHours = hours < 10 ? `0${hours}` : hours;\r\n const formattedMinutes = minutes < 10 ? `0${minutes}` : minutes;\r\n\r\n return `${formattedHours}:${formattedMinutes} ${amPm}`;\r\n};\r\n\r\nexport const formatNow = (timezone?: string) => {\r\n const now = new Date();\r\n if (timezone) {\r\n const options: any = {\r\n hour12: true,\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n timeZone: timezone,\r\n };\r\n return now.toLocaleString('en-US', options);\r\n }\r\n return formatHoursAndMinutes(now);\r\n};\r\n\r\nexport const formatTimeStamps = (timezone: string, timestamps: any) => {\r\n const date = new Date(timestamps + 'Z');\r\n\r\n const options: any = {\r\n hour12: true,\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n timeZone: timezone,\r\n };\r\n return date.toLocaleString('en-US', options);\r\n};\r\n","\r\n\r\nexport const prod_environment = {\r\n USERS_API: 'https://es-user.social27.com/api',\r\n BASE_URL: 'https://agent-api.hivegpt.ai',\r\n AGENTS_API: 'https://hive-ai.social27.com/api',\r\n API_KEY: 'b621eb3f-0bd2-41d5-a48c-a8f8ab7d38f8',\r\n SocketUrl: 'https://notif-v2-ws.social27.com/'\r\n}\r\n\r\nexport const dev_environment = {\r\n USERS_API: 'https://pre-user.social27.com/api',\r\n BASE_URL: 'https://agent-api.hivegpt.ai',\r\n AGENTS_API: 'https://hive-ai.social27.com/api',\r\n API_KEY: 'b621eb3f-0bd2-41d5-a48c-a8f8ab7d38f8',\r\n SocketUrl: 'https://notif-v2-ws.social27.com/'\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ConversationService {\r\n private storageKey = 'conversationKey';\r\n\r\n constructor() { }\r\n generateKey(): string {\r\n const timestamp = Math.floor(new Date().getTime() / 1000).toString(16);\r\n const randomHex = 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, () => {\r\n return Math.floor(Math.random() * 16).toString(16);\r\n });\r\n return timestamp + randomHex;\r\n }\r\n\r\n getKey(botId: string, resetKey: boolean = false): string {\r\n const storageKey = `conversationKey_${botId}`;\r\n var value = localStorage.getItem(storageKey);\r\n\r\n if (!value || resetKey) {\r\n value = this.generateKey();\r\n localStorage.setItem(storageKey, value);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n private userSepecificNotification: Subject<any> = new Subject<any>();\r\n sendValidatedUserData(message: any) {\r\n //console.log('lgging messages', message, new Date());\\\r\n\r\n this.userSepecificNotification.next(message);\r\n }\r\n getUserSpecificNotification(): Observable<any> {\r\n return this.userSepecificNotification.asObservable();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Socket, SocketIoConfig } from 'ngx-socket-io';\r\nimport { prod_environment } from '../../environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root' // This ensures the service is available across the application\r\n})\r\nexport class NotificationSocket extends Socket {\r\n constructor() {\r\n super(socketConfig);\r\n\r\n // Log connection status\r\n this.on('connect', () => {\r\n console.log('Socket connected');\r\n });\r\n\r\n this.on('disconnect', () => {\r\n console.warn('Socket disconnected');\r\n });\r\n\r\n this.on('connect_error', (err) => {\r\n console.error('Socket connection error:', err);\r\n });\r\n }\r\n}\r\n\r\nconst socketConfig: SocketIoConfig = {\r\n url: prod_environment.SocketUrl,\r\n options: {\r\n transports: ['websocket', 'polling'],\r\n reconnection: true,\r\n autoConnect: true,\r\n upgrade: true,\r\n reconnectionDelay: 1000,\r\n reconnectionDelayMax: 5000,\r\n reconnectionAttempts: Infinity\r\n }\r\n};","import { Injectable } from '@angular/core';\r\n\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { webSocket, WebSocketSubject } from 'rxjs/webSocket';\r\nimport { ConversationService } from './conversation.service';\r\nimport { NotificationSocket } from './NotificationSocket';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SocketService {\r\n public testMessage: string;\r\n private isCommonSocketInitialized = false;\r\n private isUserSpecificSocketInitialized = false;\r\n private isUserSpecificEventReleased = true;\r\n private messageQueue: any[] = [];\r\n private releaseInterval = 1000;\r\n private intervalSetup: boolean = false;\r\n\r\n constructor(\r\n private conversationService: ConversationService,\r\n private notificationSocket: NotificationSocket\r\n ) {\r\n this.startReleasingMessages();\r\n }\r\n\r\n isSocketInitialized(isCommon: boolean) {\r\n return isCommon\r\n ? this.isCommonSocketInitialized\r\n : this.isUserSpecificSocketInitialized &&\r\n !this.isUserSpecificEventReleased;\r\n }\r\n\r\n disconnectSocketConnection() {\r\n this.notificationSocket.disconnect();\r\n }\r\n connectSocketConnection() {\r\n this.notificationSocket.connect();\r\n }\r\n registerUserSpecificHiveSocket(botId: string, conversation_id: string, org_id: string) {\r\n const commonNotification = 'commonNotification';\r\n const groupId = `Hive_AI_Notifs_${botId}_${conversation_id}`;\r\n const groupId_org = `Hive_AI_Notifs_${org_id}`;\r\n\r\n // Remove any pre-existing listeners for commonNotification\r\n // this.notificationSocket.removeAllListeners(commonNotification);\r\n\r\n // Join the group again with updated botId and conversation_id\r\n this.notificationSocket.emit('joinData', { groupId });\r\n this.notificationSocket.emit('joinData', { groupId: groupId_org });\r\n\r\n // Re-register for common notifications\r\n this.notificationSocket.fromEvent(commonNotification).subscribe(\r\n (res) => {\r\n console.log('Received commonNotification:', res);\r\n this.conversationService.sendValidatedUserData(res);\r\n },\r\n (error) => {\r\n console.error('Error receiving commonNotification:', error);\r\n }\r\n );\r\n }\r\n\r\n private startReleasingMessages() {\r\n if (!this.intervalSetup) {\r\n setInterval(() => {\r\n if (this.messageQueue.length > 0) {\r\n const message = this.messageQueue.shift(); // Remove the first message from the queue\r\n // Handle the message here, e.g., send it to the server or process it\r\n console.log('Releasing message from queue:', message);\r\n // this.campaignService.sendValidatedUserData(message);\r\n }\r\n }, this.releaseInterval);\r\n this.intervalSetup = true; // Prevents multiple intervals\r\n }\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { catchError, map } from 'rxjs/operators';\r\n\r\nimport { HttpHeaders } from '@angular/common/http';\r\nimport { Observable, Subject, throwError } from 'rxjs';\r\nimport { AnyRecord } from 'dns';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BotsService {\r\n eventDescription = new Subject();\r\n bot_api = 'https://agent-api.hivegpt.ai/';\r\n constructor(private http: HttpClient) { }\r\n\r\n fetchSpeechAuthorizationToken() {\r\n const apiUrl = `${this.bot_api}speech/issue_token`;\r\n const url = `${apiUrl}`;\r\n return this.http.get(url).pipe(\r\n map((resp: any) => {\r\n return resp.token;\r\n })\r\n );\r\n }\r\n\r\n getWorkflowsByOrgId(orgId: string): Observable<any> {\r\n const apiUrl = `${this.bot_api}workflows`;\r\n const url = `${apiUrl}?org_id=${orgId}`;\r\n return this.http.get(url).pipe(\r\n map((resp: any) => {\r\n return resp;\r\n })\r\n );\r\n }\r\n\r\n getWorkflowExecutionById(executionId: string): Observable<any> {\r\n const apiUrl = `${this.bot_api}workflows/execution/${executionId}`;\r\n return this.http.get(apiUrl).pipe(\r\n map((resp: any) => {\r\n return resp;\r\n })\r\n );\r\n }\r\n}","// import { Platform } from '@angular/cdk/platform';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n Renderer2,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { MatDrawer } from '@angular/material/sidenav';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { of, Subscription } from 'rxjs';\r\nimport { catchError, switchMap } from 'rxjs/operators';\r\nimport { formatNow, formatTimeStamps } from '../../utils/utils';\r\nimport {\r\n dev_environment,\r\n prod_environment,\r\n} from '../../../environments/environment';\r\nimport { ConversationService } from '../conversation.service';\r\nimport { Observable } from 'rxjs';\r\nimport { SocketService } from '../socket-service.service';\r\n\r\nimport { FormBuilder, Validators } from '@angular/forms';\r\nimport * as SpeechSDK from 'microsoft-cognitiveservices-speech-sdk';\r\nimport { BotsService } from '../bot.service';\r\n\r\n@Component({\r\n selector: 'hivegpt-chat-drawer-package',\r\n templateUrl: './chat-drawer.component.html',\r\n styleUrls: ['./chat-drawer.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ChatDrawerComponent implements OnInit, OnChanges {\r\n @ViewChild('chatMain') private chatMain: ElementRef;\r\n @ViewChild('myInput') private myInput: ElementRef;\r\n @ViewChildren('closeplaygroundbutton')\r\n closePlaygroundButtons: QueryList<ElementRef>;\r\n @ViewChild('drawer') drawer!: MatDrawer;\r\n @ViewChild('sourcesDrawer') sourcesDrawer!: MatDrawer;\r\n @ViewChild('editorsDrawer') editorsDrawer!: MatDrawer;\r\n private bodyOverflowClass = 'body-overflow-hidden';\r\n @ViewChild('myTextarea', { static: false })\r\n myTextarea!: ElementRef<HTMLTextAreaElement>; // Reference to the textarea\r\n isCollapsedTrue = false;\r\n @Input() copilotName: string = 'HiveXGPT';\r\n @Input() firstName!: string;\r\n @Input() lastName!: string;\r\n @Input() apiKey!: string;\r\n @Input() bgBubbleAi!: string;\r\n @Input() bgBubbleUser!: string;\r\n @Input() bgGradient!: string[];\r\n @Input() botName!: string;\r\n @Input() botSkills!: string;\r\n @Input() botId!: string;\r\n @Input() orgId!: string;\r\n @Input() closeButtonColor!: string;\r\n @Input() closeButtonbgColor!: string;\r\n @Input() credentials!: [];\r\n @Input() dateTimeColor!: string;\r\n @Input() dateTextColor!: string;\r\n @Input() eventId!: string;\r\n @Input() s27Token!: string;\r\n @Input() eventName!: string;\r\n @Input() botIcon!: string;\r\n @Input() formFieldBgColor!: string;\r\n @Input() formFieldTextColor!: string;\r\n @Input() fullView!: boolean;\r\n @Input() gradientColors!: string[];\r\n @Input() greeting!: string;\r\n @Input() messageTextColorAi!: string;\r\n @Input() messageTextColorUser!: string;\r\n @Input() rules!: string;\r\n @Input() sendButtonColor!: string;\r\n @Input() sendButtonTextColor!: string;\r\n @Input() showClose!: boolean;\r\n @Input() thumbsDownMessages!: string[];\r\n @Input() thumbsUpMessage!: string;\r\n @Input() timezone!: string;\r\n @Input() unknownResponses!: [];\r\n @Input() useOpenAi!: boolean;\r\n @Input() userId!: string;\r\n @Input() isDev!: boolean;\r\n\r\n @Input() againButtonColor!: string[];\r\n @Input() againButtonTextColor!: string[];\r\n @Output() feedbackEvent = new EventEmitter<string>();\r\n @Output() onCloseEvent = new EventEmitter<void>();\r\n @Output() openPage = new EventEmitter<any>();\r\n @Output() sessionActions = new EventEmitter<any>();\r\n @Output() closeBot = new EventEmitter<any>();\r\n @Output() connectWithUser = new EventEmitter<any>();\r\n @Output() scheduleMeeting = new EventEmitter<string>();\r\n @Output() refreshToken = new EventEmitter<any>();\r\n\r\n autogenKey = 'Autogen_eDJTtEU-NB0RtIpzq1w';\r\n addToMyAgendaAction = 'add_to_my_agenda';\r\n myUpcomingSessionAction = 'my_upcomming_session';\r\n connectOrFollowAction = 'connect_or_follow';\r\n aiResponse: string = '';\r\n chatLog: any[] = [];\r\n decoder = new TextDecoder();\r\n feedbackDone: boolean = false;\r\n greetingMsg: string = '';\r\n hasBackdropValue: boolean = false;\r\n input: string = '';\r\n listenerAdded = false;\r\n loading: boolean = false;\r\n mode: string = 'over';\r\n quickPrompts: any[] = [];\r\n thumbsDownMsgIndex = 0;\r\n userName: string = '';\r\n showStartAgain: boolean = false;\r\n isIOSDevice: boolean = false;\r\n showFeedBackIconsIndex: number | null = null;\r\n temperature: number = 1;\r\n speakers = [];\r\n environment: {\r\n USERS_API;\r\n BASE_URL;\r\n AGENTS_API;\r\n };\r\n pendingRequests: any;\r\n myConnections: any;\r\n conversationKey: string;\r\n isFetchDataFor: boolean;\r\n is401: boolean;\r\n msg: any;\r\n chat: any;\r\n isWorkflowOpen: boolean;\r\n orgWorkflows: any;\r\n openWorkflowInput: boolean;\r\n selectedWorkflow: any;\r\n workflowForm: any;\r\n currentWorkflowActionProgress: number = 0;\r\n currentWorkflowAction: string = '';\r\n executingWorkflow: boolean;\r\n workflowExecutionDetails: any;\r\n showWorkflowExecutionDetails: any;\r\n currentWorkflowExecutionDetails: any;\r\n\r\n speechConfig: SpeechSDK.SpeechConfig;\r\n recognizer: SpeechSDK.SpeechRecognizer;\r\n recognizedText: string = '';\r\n authorizationToken: string = '';\r\n region: string = 'westeurope'; // Set your Azure region here\r\n isRecording: boolean;\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private botService: BotsService,\r\n private cdr: ChangeDetectorRef,\r\n private http: HttpClient,\r\n private sanitizer: DomSanitizer,\r\n private elementRef: ElementRef,\r\n private renderer: Renderer2,\r\n private socketService: SocketService,\r\n private conversationService: ConversationService // private platform: Platform\r\n ) {\r\n this.chatMain = new ElementRef(null);\r\n\r\n // if (this.platform.IOS) {\r\n // this.isIOSDevice = true;\r\n // }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.s27Token) {\r\n if (changes.s27Token.currentValue != changes.s27Token.previousValue) {\r\n this.s27Token = changes.s27Token.currentValue;\r\n\r\n console.log('isFetchDataFor: ', this.isFetchDataFor);\r\n console.log('msg: ', this.msg);\r\n console.log('chat: ', this.chat);\r\n if (this.is401) {\r\n if (this.isFetchDataFor) {\r\n this.fetchDataFor(this.msg, this.chat);\r\n } else {\r\n this.fetchData(this.msg);\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (changes.orgId) {\r\n if (\r\n changes.orgId.currentValue != changes.orgId.previousValue &&\r\n changes.orgId.currentValue\r\n ) {\r\n this.initializeSocket();\r\n\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.environment = this.isDev ? dev_environment : prod_environment;\r\n\r\n // this.fetchMyConnections().subscribe();\r\n // this.fetchPendingRequests().subscribe();\r\n\r\n this.changeTemperature(this.temperature);\r\n this.fetchBotConfig().subscribe(\r\n (res) => {\r\n this.cdr.markForCheck();\r\n\r\n this.fetchChatHistory().subscribe(\r\n (response) => {\r\n this.loading = false;\r\n this.mapChatHistory(response);\r\n this.cdr.markForCheck();\r\n },\r\n (err) => {\r\n console.error('Error fetching chat history:', err);\r\n }\r\n );\r\n },\r\n (err) => {\r\n console.error('Error fetching chat history:', err);\r\n }\r\n );\r\n // this.fetchAgents();\r\n // this.fetchEditorContent();\r\n this.cdr.markForCheck();\r\n // this.initializeSocket();\r\n if (!this.checkForCop29BotId()) {\r\n this.botService.fetchSpeechAuthorizationToken().subscribe((token) => {\r\n this.authorizationToken = token;\r\n this.initializeSpeechRecognizer(token);\r\n });\r\n }\r\n }\r\n\r\n private eventSubscription: Subscription;\r\n initializeSocket() {\r\n try {\r\n this.socketService.disconnectSocketConnection();\r\n } catch (error) { }\r\n setTimeout(() => {\r\n this.socketService.connectSocketConnection();\r\n setTimeout(() => {\r\n console.log('YES INIT');\r\n const conversation_id = this.conversationService.getKey(this.botId);\r\n\r\n this.socketService.registerUserSpecificHiveSocket(\r\n this.botId,\r\n conversation_id,\r\n this.orgId\r\n );\r\n setTimeout(() => {\r\n this.listenSockets();\r\n }, 300);\r\n }, 200);\r\n }, 300);\r\n }\r\n\r\n subscriptionNew: any;\r\n socketData: any;\r\n\r\n listenSockets() {\r\n if (this.eventSubscription) {\r\n this.eventSubscription.unsubscribe();\r\n }\r\n console.log('Listen Socket');\r\n this.eventSubscription = this.conversationService\r\n .getUserSpecificNotification()\r\n .subscribe(\r\n (res) => {\r\n console.log('Listen Socket response');\r\n console.log(res);\r\n // Check if OtherFields exists in the response\r\n if (res?.m?.OtherFields?.workflow_id) {\r\n const {\r\n percentage,\r\n output,\r\n action_name,\r\n current_action_name,\r\n workflow_execution_id,\r\n time_stamp,\r\n } = res?.m?.OtherFields;\r\n\r\n this.currentWorkflowActionProgress = percentage;\r\n this.currentWorkflowAction = action_name;\r\n\r\n const actionIndex = this.workflowExecutionDetails.Actions.findIndex(\r\n (a) => a.Name == current_action_name\r\n );\r\n\r\n if (actionIndex !== -1) {\r\n this.workflowExecutionDetails.Actions[actionIndex][\r\n 'Output'\r\n ] = output;\r\n this.workflowExecutionDetails.Actions[actionIndex][\r\n 'InsertTimeStamp'\r\n ] = formatTimeStamps(this.timezone, time_stamp);\r\n } else {\r\n console.error(`Action with name ${action_name} not found`);\r\n }\r\n\r\n this.currentWorkflowExecutionDetails = this.workflowExecutionDetails;\r\n\r\n if (this.currentWorkflowActionProgress == 100) {\r\n this.chatLog[this.chatLog.length - 1][\r\n 'WorkflowExecutionId'\r\n ] = workflow_execution_id;\r\n this.isChatingWithAi = false;\r\n this.executingWorkflow = false;\r\n }\r\n\r\n this.cdr.detectChanges();\r\n } else if (res?.m?.OtherFields) {\r\n const {\r\n conversation_id,\r\n bot_id,\r\n message_id,\r\n answer,\r\n web_results,\r\n search_results,\r\n graphs,\r\n execution_graphs,\r\n suggestions,\r\n } = res?.m?.OtherFields;\r\n console.log('message_id1');\r\n console.log(res?.m?.OtherFields);\r\n var currentChatMessage = this.chatLog.find(\r\n (p) => p._id == message_id\r\n );\r\n console.log(this.chatLog);\r\n if (!currentChatMessage) {\r\n console.log('message_id2');\r\n console.log(message_id);\r\n currentChatMessage = {\r\n _id: message_id,\r\n type: 'ai',\r\n time: formatNow(this.timezone),\r\n };\r\n\r\n this.chatLog.push(currentChatMessage);\r\n\r\n this.showFeedBackIconsIndex = this.chatLog.length - 1;\r\n console.log('message_id3');\r\n console.log(message_id);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n // Handle the fields based on their presence\r\n if (search_results && Array.isArray(search_results)) {\r\n console.log('Online Search Terms:', search_results);\r\n currentChatMessage.searchTerms = search_results;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n if (web_results && Array.isArray(web_results)) {\r\n console.log('Web Results:', web_results);\r\n currentChatMessage.sourcesList = web_results;\r\n currentChatMessage.displayedSources = web_results?.slice(0, 3); // First 3 cards\r\n currentChatMessage.remainingSources = web_results?.slice(3); // Remaining items\r\n this.cdr.detectChanges();\r\n }\r\n\r\n if (answer) {\r\n this.isChatingWithAi = false;\r\n console.log('Answer:', answer);\r\n\r\n currentChatMessage.message = this.processMessageForDisplay(\r\n answer\r\n );\r\n this.cdr.detectChanges();\r\n this.scrollToBottom();\r\n }\r\n\r\n if (graphs && Array.isArray(graphs)) {\r\n console.log('Graphs:', graphs);\r\n currentChatMessage.graphs = graphs;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n if (execution_graphs && Array.isArray(execution_graphs)) {\r\n console.log('Execution Graphs:', execution_graphs);\r\n currentChatMessage.executionGraphs = execution_graphs;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n if (suggestions && Array.isArray(suggestions)) {\r\n console.log('suggestions:', suggestions);\r\n currentChatMessage.relatedListItems = suggestions;\r\n this.cdr.detectChanges();\r\n // Process online search terms as needed\r\n }\r\n\r\n // Add any other fields and their processing here\r\n } else {\r\n console.warn('OtherFields is missing in the response');\r\n }\r\n },\r\n (err) => {\r\n this.eventSubscription.unsubscribe();\r\n console.error('Error in fetching data from socket', err);\r\n }\r\n );\r\n }\r\n\r\n initializeSocketAndListen() { }\r\n handleEvent(data: any, type: string) {\r\n switch (type) {\r\n case 'webresult':\r\n break;\r\n case 'answer':\r\n break;\r\n case 'graph':\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n if (this.eventSubscription) {\r\n this.eventSubscription.unsubscribe();\r\n }\r\n this.socketService.disconnectSocketConnection();\r\n //this.socketService.close();\r\n }\r\n changeTemperature(newTemperature: number) {\r\n if (this.loading) return;\r\n this.temperature = newTemperature;\r\n const wrapper = document.querySelector('.hivegpt-chat-wrapper');\r\n // Remove existing theme classes from body\r\n wrapper?.classList.remove('creative', 'balanced', 'precise');\r\n\r\n switch (newTemperature) {\r\n case 0:\r\n wrapper?.classList.add('creative');\r\n break;\r\n case 1:\r\n wrapper?.classList.add('balanced');\r\n break;\r\n case 2:\r\n wrapper?.classList.add('precise');\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n onStartAgain() {\r\n if (this.loading) return;\r\n this.showStartAgain = false;\r\n this.chatLog = [];\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.greetingMsg,\r\n\r\n time: formatNow(this.timezone),\r\n });\r\n this.archieveMessages().subscribe();\r\n }\r\n\r\n archieveMessages() {\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'x-api-key': this.apiKey,\r\n 'hive-bot-id': this.botId\r\n });\r\n const url = `${this.environment.BASE_URL}/bot/clear-history/${this.botId}/${this.userId}`;\r\n return this.http.post(url, {}, { headers }).pipe(\r\n switchMap((res: any) => {\r\n return of(res);\r\n }),\r\n catchError((error) => {\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n fetchBotConfig() {\r\n this.loading = true;\r\n const headers = new HttpHeaders({\r\n 'x-api-key': this.apiKey,\r\n 'hive-bot-id': this.botId\r\n });\r\n const url = `${this.environment.BASE_URL}/bots?bot_id=${this.botId}`;\r\n return this.http.get(url, { headers }).pipe(\r\n switchMap((res: any) => {\r\n this.botName = res.Name;\r\n this.botIcon = res.Icon;\r\n this.botSkills = res?.Skills;\r\n this.greetingMsg = res.Greeting;\r\n\r\n this.thumbsDownMessages = res?.NegativeResponses?.length\r\n ? res.NegativeResponses\r\n : [\r\n \"We are sorry we've not been able to answer your question.<br/> However, our dedicated support team is happy to help. <span class='feedback-link' style='cursor: pointer; text-decoration: underline; font-weight: 700; color: #17235B;'>Please click here</span> and a human agent will assist you as soon as possible\",\r\n ];\r\n this.quickPrompts = res.QuickPrompts;\r\n this.cdr.markForCheck();\r\n this.loading = false;\r\n return of(res);\r\n }),\r\n catchError((error) => {\r\n console.error('Error fetching chatbot config: ', error);\r\n this.loading = false;\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n fetchChatHistory(): Observable<any> {\r\n this.loading = true;\r\n\r\n this.conversationKey = this.conversationService.getKey(this.botId, false);\r\n const url = `${this.environment.BASE_URL}/conversations/${this.conversationKey}`;\r\n const headers = new HttpHeaders({\r\n accept: 'application/json',\r\n 'x-api-key': this.apiKey,\r\n 'hive-bot-id': this.botId\r\n });\r\n\r\n return this.http\r\n .get(url, { headers })\r\n .pipe(catchError(this.handleError<any>('fetchConversation')));\r\n }\r\n\r\n private handleError<T>(operation = 'operation', result?: T) {\r\n return (error: any): Observable<T> => {\r\n console.error(`${operation} failed: ${error.message}`);\r\n return of(result as T);\r\n };\r\n }\r\n // fetchChatHistory() {\r\n // this.loading = true;\r\n // const headers = new HttpHeaders({\r\n // 'Content-Type': 'application/json',\r\n // 'x-api-key': this.apiKey,\r\n // });\r\n // return this.http\r\n // .get(`${this.environment.BASE_URL}/conversations/${this.conversationKey}`, { headers })\r\n // .pipe(\r\n // switchMap((res: any) => {\r\n // this.loading = false;\r\n // return of(res);\r\n // }),\r\n // catchError((error: any) => {\r\n // console.error('Error fetching chat history: ', error);\r\n // this.loading = false;\r\n // return of(null);\r\n // })\r\n // );\r\n // }\r\n\r\n mapChatHistory(chats: any) {\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.greetingMsg,\r\n time: formatNow(this.timezone),\r\n });\r\n if (chats && chats?.Messages?.length) {\r\n chats?.Messages.forEach((chat: any) => {\r\n if (chat.Type == 'user') {\r\n this.chatLog.push({\r\n type: 'user',\r\n message: this.processMessageForDisplay(chat.Text),\r\n time: formatTimeStamps(this.timezone, chat.InsertTimestamp),\r\n copied: false,\r\n isCollapsedTrue: false,\r\n WorkflowExecutionId: chat.WorkflowExecutionId,\r\n });\r\n }\r\n if (chat.Type == 'ai') {\r\n var sourcesList = chat.WebLinks || [];\r\n var displayedSources = chat.WebLinks.slice(0, 3); // First 3 cards\r\n var remainingSources = chat.WebLinks.slice(3); // Remaining items\r\n\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.processMessageForDisplay(chat.Text),\r\n executionGraphs: chat.ExecutionGraphs,\r\n graphs: chat.Graphs,\r\n searchTerms: chat.SearchTerms,\r\n sourcesList: sourcesList,\r\n displayedSources: displayedSources,\r\n remainingSources: remainingSources,\r\n time: formatTimeStamps(this.timezone, chat.InsertTimestamp),\r\n copied: false,\r\n isCollapsedTrue: false,\r\n });\r\n this.showFeedBackIconsIndex = this.chatLog.length - 1;\r\n }\r\n });\r\n this.showStartAgain = true;\r\n }\r\n this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n processMessage(message: string): SafeHtml {\r\n if (!message || !(message?.length > 0)) {\r\n return '';\r\n }\r\n\r\n // console.log('here is my message')\r\n // console.log(message);\r\n\r\n message = message.trim();\r\n\r\n const markdownLinkRegex = /\\[([^[]+)]\\(([^)]+)\\)/g;\r\n const urlRegex = /(?<!href=\")\\bhttps?:\\/\\/\\S+(?<![.,])/gi;\r\n\r\n if (markdownLinkRegex.test(message)) {\r\n const html = message.replace(\r\n markdownLinkRegex,\r\n '<a href=\"$2\" target=\"_blank\">$1</a>'\r\n );\r\n //console.log('Sanitized message: ', message);\r\n return this.sanitizeHtml(html);\r\n }\r\n\r\n if (urlRegex.test(message)) {\r\n const html = message.replace(\r\n urlRegex,\r\n '<a href=\"$&\" target=\"_blank\">$&</a>'\r\n );\r\n // console.log('Sanitized message: ', message);\r\n return this.sanitizeHtml(html);\r\n }\r\n\r\n message = message.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>');\r\n\r\n message = message.replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>');\r\n // Convert Markdown headers to HTML headers\r\n message = message.replace(/^(#{1,6})\\s+(.*)$/gm, (match, hashes, text) => {\r\n const level = hashes.length;\r\n return `<h${level}>${text}</h${level}>`;\r\n });\r\n\r\n this.cdr.markForCheck();\r\n const sanitizedMessage = this.sanitizeHtml(message);\r\n return sanitizedMessage;\r\n }\r\n\r\n ngAfterViewChecked() {\r\n const feedbackLinks = this.elementRef.nativeElement.querySelectorAll(\r\n '.feedback-link'\r\n );\r\n feedbackLinks.forEach((link: any) => {\r\n link.addEventListener(\r\n 'click',\r\n this.onFeedbackClick.bind(this, 'zendesk')\r\n );\r\n });\r\n // if (this.elementRef.nativeElement.querySelector('.feedback-link')) {\r\n // this.elementRef.nativeElement\r\n // .querySelector('.feedback-link')\r\n // .addEventListener('click', this.onFeedbackClick.bind(this, 'zendesk'));\r\n // }\r\n }\r\n\r\n sanitizeHtml(html: string): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(html);\r\n }\r\n\r\n onFeedbackClick(value: string) {\r\n this.feedbackEvent.emit(value);\r\n }\r\n\r\n onClose() {\r\n this.renderer.removeClass(document.body, this.bodyOverflowClass);\r\n this.onCloseEvent.emit();\r\n }\r\n\r\n sendMessageWithTile(prompt: string) {\r\n this.input = prompt;\r\n this.fetchData();\r\n this.scrollToBottom();\r\n }\r\n isChatingWithAi = false;\r\n fetchData(msg = null) {\r\n this.input = msg || this.input?.trim();\r\n this.msg = this.input;\r\n if (!this.input || this.loading) {\r\n return;\r\n }\r\n\r\n this.chatLog.push({\r\n type: 'user',\r\n message: this.processMessageForDisplay(this.input),\r\n time: formatNow(this.timezone),\r\n copied: false,\r\n isCollapsedTrue: false,\r\n });\r\n\r\n try {\r\n const textarea = this.myInput.nativeElement;\r\n textarea.style.height = 'hidden'; // Reset the height\r\n textarea.style.height = `62px`;\r\n } catch (error) { }\r\n this.cdr.markForCheck();\r\n\r\n this.aiResponse = '';\r\n this.isChatingWithAi = true;\r\n\r\n this.makeAskRequest(this.input, this.agents, this.conversationKey);\r\n }\r\n fetchDataFor(msg, chat) {\r\n const inputMsg = msg?.trim();\r\n if (!inputMsg || this.loading) {\r\n return;\r\n }\r\n try {\r\n chat.relatedListItems = [];\r\n this.cdr.detectChanges();\r\n } catch (error) { }\r\n\r\n this.scrollToBottom();\r\n this.chatLog.push({\r\n type: 'user',\r\n message: this.processMessageForDisplay(inputMsg),\r\n time: formatNow(this.timezone),\r\n copied: false,\r\n isCollapsedTrue: false,\r\n });\r\n\r\n this.cdr.markForCheck();\r\n\r\n this.aiResponse = '';\r\n this.isChatingWithAi = true;\r\n\r\n this.makeAskRequest(inputMsg, this.agents, this.conversationKey, msg, chat);\r\n }\r\n fetchSmallTalk() {\r\n this.loading = true;\r\n this.cdr.markForCheck();\r\n\r\n const url = `${this.environment.BASE_URL}/bot/small-talk/${this.botId}/${this.userId}`;\r\n\r\n this.http\r\n .get<{ smallTalk: string }>(url, {\r\n headers: {\r\n 'x-api-key': this.apiKey,\r\n 'hive-bot-id': this.botId\r\n },\r\n })\r\n .pipe(\r\n catchError((error) => {\r\n console.error('Error while fetching small talk:', error);\r\n\r\n return of(null);\r\n })\r\n )\r\n .subscribe((response) => {\r\n this.loading = false;\r\n this.cdr.markForCheck();\r\n\r\n if (!response) {\r\n return;\r\n }\r\n\r\n if (response && response.smallTalk) {\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.processMessage(response.smallTalk),\r\n time: formatNow(this.timezone),\r\n isFeedbackMsg: true,\r\n });\r\n this.showFeedBackIconsIndex = this.chatLog.length - 2;\r\n // this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n }\r\n });\r\n }\r\n\r\n readAllChunks = (stream: any) => {\r\n const reader = stream.getReader();\r\n const allSuggestions: string[] = [];\r\n\r\n reader.closed.catch((err: any) => {\r\n if (err) {\r\n console.error('Error reading stream: ', err);\r\n }\r\n\r\n this.isChatingWithAi = false;\r\n this.scrollToBottom();\r\n return;\r\n });\r\n\r\n return new ReadableStream({\r\n start: (controller) => {\r\n return this.pump(controller, reader, allSuggestions);\r\n },\r\n });\r\n };\r\n\r\n pump(controller: any, reader: any, allSuggestions: string[]) {\r\n reader.read().then(({ done, value }: any) => {\r\n const lastItem = this.chatLog[this.chatLog.length - 1];\r\n\r\n if (done) {\r\n lastItem.message = this.processMessageForDisplay(lastItem.message);\r\n this.chatLog.pop();\r\n this.chatLog.push(lastItem);\r\n if (allSuggestions?.length) {\r\n this.chatLog.push({\r\n type: 'suggestions',\r\n suggestions: allSuggestions,\r\n });\r\n }\r\n\r\n controller.close();\r\n this.isChatingWithAi = false;\r\n // this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n this.showStartAgain = true;\r\n\r\n // setTimeout(() => {\r\n // this.fetchSmallTalk();\r\n // },1000)\r\n return;\r\n }\r\n\r\n let decodedChunk = this.decoder.decode(value, { stream: true });\r\n this.aiResponse += decodedChunk;\r\n if (lastItem.type === 'ai') {\r\n const suggestionsMatch = this.aiResponse.match(/<sug>(.*?)<\\/sug>/g);\r\n if (suggestionsMatch) {\r\n suggestionsMatch.forEach((match) => {\r\n this.aiResponse = this.aiResponse.replace(match, '');\r\n allSuggestions.push(match?.replace(/<\\/?sug>/g, ''));\r\n });\r\n }\r\n\r\n lastItem.message = this.aiResponse;\r\n this.cdr.markForCheck();\r\n } else {\r\n this.isChatingWithAi = false;\r\n\r\n let aiFormattedData: any;\r\n\r\n try {\r\n console.log('parsing json ');\r\n aiFormattedData = JSON.parse(JSON.parse(this.aiResponse));\r\n } catch (e) {\r\n try {\r\n console.log('parsing json 2');\r\n aiFormattedData = JSON.parse(this.aiResponse);\r\n } catch (e) { }\r\n }\r\n\r\n console.log('parsing json done');\r\n\r\n if (aiFormattedData && aiFormattedData?.section_id?.length > 0) {\r\n if (\r\n aiFormattedData.section_id == 'company_search' ||\r\n aiFormattedData.section_id == 'user_search' ||\r\n aiFormattedData.section_id == 'industry_company_search'\r\n ) {\r\n this.fetchMyConnections().subscribe();\r\n this.fetchPendingRequests().subscribe();\r\n }\r\n\r\n if (aiFormattedData.section_id == this.myUpcomingSessionAction) {\r\n var speakerIds = [];\r\n aiFormattedData.content?.forEach((session) => {\r\n speakerIds = [...speakerIds, ...session.speakers];\r\n });\r\n\r\n if (speakerIds?.length > 0) this.getSpeakersByStaffIds(speakerIds);\r\n }\r\n\r\n if (\r\n aiFormattedData.section_id == this.addToMyAgendaAction &&\r\n aiFormattedData.content?.length > 0\r\n ) {\r\n this.openPage.next({\r\n sectionId: aiFormattedData.section_id,\r\n sessionIds: aiFormattedData.content,\r\n });\r\n }\r\n\r\n if (aiFormattedData.section_id == this.connectOrFollowAction) {\r\n let usersLen = aiFormattedData.content?.length;\r\n if (usersLen > 1) {\r\n this.openPage.next({\r\n sectionId: 'open_networking_drawer',\r\n search: aiFormattedData.content,\r\n });\r\n } else if (usersLen == 1) {\r\n this.openPage.next({\r\n sectionId: aiFormattedData.section_id,\r\n connetUserIds: [aiFormattedData.content[0].userId],\r\n });\r\n }\r\n }\r\n\r\n if (aiFormattedData.is_open_page == 'true') {\r\n this.openPage.next({\r\n sectionId: aiFormattedData.section_id,\r\n search: aiFormattedData.content,\r\n });\r\n\r\n if (this.isMobileBrowser()) {\r\n aiFormattedData.message +=\r\n '\\n\\n' + '<a id=\"closeBotNow\">Click Here</a> to see results.';\r\n }\r\n }\r\n\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: aiFormattedData.message,\r\n action: aiFormattedData,\r\n time: formatNow(this.timezone),\r\n });\r\n\r\n if (this.isMobileBrowser()) {\r\n setTimeout(() => {\r\n this.addCloseBotClickEvent();\r\n }, 500);\r\n }\r\n\r\n this.aiResponse = '';\r\n } else {\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.aiResponse,\r\n time: formatNow(this.timezone),\r\n });\r\n }\r\n\r\n this.showFeedBackIconsIndex = this.chatLog.length - 1;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n this.scrollToBottom();\r\n\r\n // Enqueue the next data chunk into our target stream\r\n controller.enqueue(value);\r\n this.pump(controller, reader, allSuggestions);\r\n });\r\n }\r\n\r\n submitFeedback(flag: boolean, message) {\r\n console.log(message);\r\n\r\n this.feedbackDone = true;\r\n this.showFeedBackIconsIndex = null;\r\n const conversation_id = this.conversationService.getKey(this.botId);\r\n const url = `${this.environment.AGENTS_API}/Conversation/coPilot/${this.botId}/conversation/${conversation_id}/helpful-response`;\r\n fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'x-api-key': 'Conversation_WIz/qAm+EEmfOkFaUA/weA==',\r\n 'hive-bot-id': this.botId\r\n },\r\n body: JSON.stringify({ messageId: message._id, isHelpful: flag }),\r\n }).then(() => {\r\n if (flag) {\r\n this.chatLog.push({\r\n type: 'ai',\r\n message:\r\n this.thumbsUpMessage ||\r\n `Great. May I assist you with anything else?`,\r\n time: formatNow(this.timezone),\r\n isFeedbackMsg: true,\r\n });\r\n\r\n this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n this.feedbackDone = false;\r\n this.showFeedBackIconsIndex = null;\r\n return;\r\n }\r\n\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.processMessage(\r\n this.thumbsDownMessages[this.thumbsDownMsgIndex]\r\n ),\r\n time: formatNow(this.timezone),\r\n isFeedbackMsg: true,\r\n });\r\n this.thumbsDownMsgIndex =\r\n (this.thumbsDownMsgIndex + 1) % this.thumbsDownMessages.length;\r\n this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n this.feedbackDone = false;\r\n this.showFeedBackIconsIndex = null;\r\n });\r\n }\r\n handleKeydown(event: KeyboardEvent) {\r\n if (event.key === 'Enter' && !event.shiftKey) {\r\n // Prevent default behavior (new line)\r\n event.preventDefault();\r\n // Call your submit function\r\n this.handleSubmit(event);\r\n }\r\n }\r\n handleSubmit(event) {\r\n this.fetchData();\r\n this.scrollToBottom();\r\n\r\n }\r\n\r\n handleUpClick(idx: any) {\r\n if (this.feedbackDone) {\r\n return;\r\n }\r\n\r\n this.submitFeedback(true, this.chatLog[idx]);\r\n this.chatLog[idx].liked = !this.chatLog[idx].liked;\r\n\r\n if (this.chatLog[idx].unliked) {\r\n this.chatLog[idx].unliked = !this.chatLog[idx].unliked;\r\n }\r\n\r\n this.cdr.markForCheck();\r\n }\r\n\r\n handleDownClick(idx: any) {\r\n if (this.feedbackDone) return;\r\n this.submitFeedback(false, this.chatLog[idx]);\r\n this.chatLog[idx].unliked = !this.chatLog[idx].unliked;\r\n if (this.chatLog[idx].liked)\r\n this.chatLog[idx].liked = !this.chatLog[idx].liked;\r\n }\r\n // handleCopyClick(index: any) {\r\n // // Copy the message to the clipboard\r\n // const contentToCopy = this.chatLog[index].message;\r\n // console.log('contentToCopy');\r\n // console.log(contentToCopy);\r\n // navigator.clipboard.writeText(contentToCopy).then(() => {\r\n // // Indicate that the message was copied\r\n // this.chatLog[index].copied = true;\r\n // this.cdr.detectChanges();\r\n // // Reset the copied state after a delay\r\n // setTimeout(() => {\r\n // this.chatLog[index].copied = false;\r\n // this.cdr.detectChanges();\r\n // }, 2000); // Reset after 2 seconds\r\n // });\r\n // }\r\n copyText(id, index) {\r\n // Get the text element\r\n var textElement = document.getElementById(id);\r\n\r\n // Create a temporary textarea element to copy the text\r\n var tempTextArea = document.createElement('textarea');\r\n tempTextArea.value = textElement.innerText;\r\n\r\n // Append the textarea to the body (necessary for the execCommand to work)\r\n document.body.appendChild(tempTextArea);\r\n\r\n // Select the text inside the textarea\r\n tempTextArea.select();\r\n\r\n // Copy the text to the clipboard\r\n document.execCommand('copy');\r\n\r\n // Remove the temporary textarea\r\n document.body.removeChild(tempTextArea);\r\n\r\n // Optionally, you can alert the user or change the button text to indicate the copy was successful\r\n // alert('Text copied to clipboard!');\r\n\r\n this.chatLog[index].copied = true;\r\n this.cdr.detectChanges();\r\n // Reset the copied state after a delay\r\n setTimeout(() => {\r\n this.chatLog[index].copied = false;\r\n this.cdr.detectChanges();\r\n }, 2000); // Reset after 2 seconds\r\n }\r\n handleCopyClick(index: any) {\r\n // Copy the message to the clipboard\r\n const contentToCopy = this.chatLog[index].message;\r\n const resutlt = this.copyText('messageText_' + index, index);\r\n }\r\n\r\n sanitizeHTML(html: string): string {\r\n const doc = new DOMParser().parseFromString(html, 'text/html');\r\n\r\n // Create a new document fragment to hold the simplified content\r\n const fragment = document.createDocumentFragment();\r\n\r\n // Append the children of the body of the parsed document to the fragment\r\n Array.from(doc.body.childNodes).forEach((node) => {\r\n fragment.appendChild(node.cloneNode(true));\r\n });\r\n\r\n // Create a new div element to hold the simplified HTML\r\n const simplifiedDiv = document.createElement('div');\r\n simplifiedDiv.appendChild(fragment);\r\n\r\n // Remove complex tags or attributes as needed\r\n // Example: remove scripts\r\n simplifiedDiv\r\n .querySelectorAll('script')\r\n .forEach((script) => script.remove());\r\n\r\n // Return the simplified HTML as a string\r\n return simplifiedDiv.innerHTML;\r\n }\r\n\r\n currentMessageForEditor: any = '';\r\n currentIndexForEditor: any = -1;\r\n handleEditorClick(index: any) {\r\n if (this.currentIndexForEditor == -1) {\r\n this.currentIndexForEditor = index;\r\n this.currentMessageForEditor = this.sanitizeHTML(\r\n this.chatLog[index].message\r\n );\r\n this.currentMessageForEditor = this.currentMessageForEditor.replace(\r\n 'SafeValue must use [property]=binding:',\r\n ''\r\n );\r\n\r\n this.cdr.detectChanges();\r\n } else {\r\n if (this.currentIndexForEditor == index) {\r\n this.currentMessageForEditor += this.sanitizeHTML(\r\n this.chatLog[index].message\r\n );\r\n this.currentMessageForEditor = this.currentMessageForEditor.replace(\r\n 'SafeValue must use [property]=binding:',\r\n ''\r\n );\r\n this.cdr.detectChanges();\r\n } else {\r\n this.currentIndexForEditor = index;\r\n this.currentMessageForEditor = this.sanitizeHTML(\r\n this.chatLog[index].message\r\n );\r\n this.currentMessageForEditor = this.currentMessageForEditor.replace(\r\n 'SafeValue must use [property]=binding:',\r\n ''\r\n );\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n this.chatLog[index].isEditor = true;\r\n this.cdr.detectChanges();\r\n // Reset the copied state after a delay\r\n setTimeout(() => {\r\n this.chatLog[index].isEditor = false;\r\n this.cdr.detectChanges();\r\n }, 2000); // Reset after 2 seconds\r\n this.editorsDrawer.open();\r\n const button = document.getElementById('botcloseplaygroundbutton');\r\n if (button) {\r\n button.style.display = 'none';\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n scrollToBottom() {\r\n let counter = 0;\r\n const interval = setInterval(() => {\r\n this.chatMain.nativeElement.scrollTop = this.chatMain.nativeElement.scrollHeight;\r\n if (counter++ > 5) clearInterval(interval);\r\n }, 5);\r\n }\r\n\r\n handleAction(action: any) {\r\n console.info('incoming action from the chatbot AI');\r\n console.info(action);\r\n\r\n if (action?.content) {\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n // Check if the drawer is initially open and apply overflow hidden to body if so\r\n if (this.drawer.opened) {\r\n this.setBodyOverflow();\r\n }\r\n\r\n // Listen to changes in the drawer being opened or closed\r\n this.drawer.openedChange.subscribe((opened: boolean) => {\r\n if (opened) {\r\n this.setBodyOverflow();\r\n } else {\r\n this.removeBodyOverflow();\r\n }\r\n });\r\n\r\n this.drawer.openedChange.subscribe((opened) => {\r\n if (opened) {\r\n setTimeout(() => {\r\n if (this.myTextarea && this.myTextarea.nativeElement) {\r\n this.myTextarea.nativeElement.focus(); // Focus on the textarea\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n private setBodyOverflow() {\r\n this.renderer.addClass(document.body, this.bodyOverflowClass);\r\n }\r\n\r\n private removeBodyOverflow() {\r\n this.renderer.removeClass(document.body, this.bodyOverflowClass);\r\n }\r\n\r\n getSpeakersByStaffIds(ids) {\r\n const url = `${this.environment.USERS_API}/events/${this.eventId}/users/get-by-staff-ids`;\r\n fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: 'Bearer ' + 'your_token_here',\r\n },\r\n body: JSON.stringify(ids),\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json(); // Parse the JSON body of the response\r\n } else {\r\n throw new Error('Network response was not ok.');\r\n }\r\n })\r\n .then((data) => {\r\n if (data?.length > 0) {\r\n data.forEach((speaker) => {\r\n this.speakers[speaker.id] = speaker;\r\n });\r\n\r\n this.cdr.markForCheck();\r\n }\r\n })\r\n .catch((err) => {\r\n console.error('Error fetching data:', err);\r\n this.loading = false;\r\n });\r\n }\r\n\r\n performSessionAction(sessionId, action) {\r\n this.sessionActions.next({\r\n sessionId,\r\n action,\r\n });\r\n }\r\n\r\n addCloseBotClickEvent() {\r\n const element = this.elementRef.nativeElement.querySelector('#closeBotNow');\r\n if (element) {\r\n this.renderer.listen(element, 'click', () => {\r\n this.closeBot.next();\r\n });\r\n }\r\n }\r\n\r\n isMobileBrowser() {\r\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\r\n navigator.userAgent\r\n );\r\n }\r\n\r\n connectToUser(userId) {\r\n this.connectWithUser.emit({\r\n connect: !this.canDisconnect(userId),\r\n userId,\r\n });\r\n\r\n setTimeout(() => {\r\n this.fetchMyConnections().subscribe((res) => {\r\n this.cdr.markForCheck();\r\n });\r\n this.fetchPendingRequests().subscribe((res) => {\r\n this.cdr.markForCheck();\r\n });\r\n }, 500);\r\n }\r\n\r\n scheduleMeetingWithUser(user) {\r\n this.scheduleMeeting.emit(user);\r\n }\r\n\r\n canConnect(userId) {\r\n return !(\r\n this.canDisconnect(userId) ||\r\n this.pendingRequests.find((a) => a == userId)\r\n );\r\n }\r\n\r\n canDisconnect(userId) {\r\n return this.myConnections.find((conn) => conn.userId == userId);\r\n }\r\n\r\n fetchPendingRequests() {\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n apiKey: this.autogenKey,\r\n });\r\n return this.http\r\n .get(\r\n `${this.environment.USERS_API}/events/${this.eventId}/connection-requests/autogen/pending-sent-requests?userId=${this.userId}`,\r\n { headers }\r\n )\r\n .pipe(\r\n switchMap((res: any) => {\r\n this.pendingRequests = res;\r\n this.cdr.markForCheck();\r\n return of(res);\r\n }),\r\n catchError((error: any) => {\r\n console.error('Error fetching pending requests: ', error);\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n fetchMyConnections() {\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n apiKey: this.autogenKey,\r\n });\r\n return this.http\r\n .get(\r\n `${this.environment.USERS_API}/events/${this.eventId}/users-connections/autogen?userId=${this.userId}`,\r\n { headers }\r\n )\r\n .pipe(\r\n switchMap((res: any) => {\r\n this.myConnections = res;\r\n this.cdr.markForCheck();\r\n return of(res);\r\n }),\r\n catchError((error: any) => {\r\n console.error('Error fetching pending requests: ', error);\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n isDropdownOpen: boolean = false;\r\n agents: any;\r\n selectedAgents = [];\r\n allSelected = false;\r\n // Toggle the dropdown visibility\r\n toggleDropdown() {\r\n if (!this.agents)\r\n this.fetchAgents();\r\n this.isDropdownOpen = !this.isDropdownOpen;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n onSelectAll(event: Event): void {\r\n this.agents?.forEach((agent) => (agent.selected = false));\r\n this.cdr.detectChanges();\r\n }\r\n\r\n onAgentChange(agent: any): void {\r\n //agent.selected = !agent.selected;\r\n //console.log(agent);\r\n let agentFound = this.agents.filter((p) => p.id == agent.id);\r\n if (agentFound && agentFound.length > 0) {\r\n agentFound[0].selected = !agentFound[0].selected;\r\n this.cdr.detectChanges();\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n areAllSelected(): boolean {\r\n return this.agents?.every((agent) => !agent.selected);\r\n }\r\n\r\n getDropdownHeaderText(): string {\r\n const selectedAgents = this.agents?.filter((agent) => agent.selected);\r\n if (!selectedAgents) {\r\n return 'All Agents';\r\n } else {\r\n if (selectedAgents && selectedAgents?.length === 0) {\r\n return 'All Agents';\r\n } else {\r\n return selectedAgents?.length > 1\r\n ? `${selectedAgents?.length} Agents Selected`\r\n : `${selectedAgents?.length} Agent Selected`;\r\n }\r\n }\r\n }\r\n fetchAgents_http() {\r\n this.loading = true;\r\n const url = `${this.environment.AGENTS_API}/CoPilot/${this.botId}/active-agents`;\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n });\r\n\r\n return this.http.post(url, {}, { headers }).pipe(\r\n switchMap((res: any) => {\r\n if (res) {\r\n this.agents = res.map((agent) => ({\r\n ...agent,\r\n selected: false,\r\n }));\r\n }\r\n this.cdr.markForCheck();\r\n\r\n return of(res);\r\n }),\r\n catchError((error) => {\r\n console.error('Error fetching chatbot config: ', error);\r\n\r\n return of(null);\r\n })\r\n );\r\n }\r\n isDocInEditMode = false;\r\n documentContent: any;\r\n\r\n conversationId: any;\r\n isContentLoaded = false;\r\n\r\n fetchContent_http() {\r\n this.isDocInEditMode = false;\r\n this.isContentLoaded = false;\r\n console.log('API call function');\r\n this.loading = true;\r\n const conversation_id = this.conversationService.getKey(this.botId);\r\n this.conversationId = conversation_id;\r\n const url = `${this.environment.AGENTS_API}/ConversationDocuments?conversationId=${conversation_id}&botId=${this.botId}`;\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n apiKey: 'WIz/qAm+EEmfOkFaUA/weA==',\r\n });\r\n\r\n return this.http.get(url, { headers }).pipe(\r\n switchMap((res: any) => {\r\n if (res) {\r\n this.isDocInEditMode = true;\r\n this.documentContent = res;\r\n console.log('Get API callled success');\r\n this.isContentLoaded = true;\r\n console.log(res);\r\n }\r\n this.cdr.markForCheck();\r\n\r\n return of(res);\r\n }),\r\n catchError((error) => {\r\n console.error('Error fetching chatbot config DJ: ', error);\r\n this.isDocInEditMode = false;\r\n this.isContentLoaded = true;\r\n\r\n if (error?.status == 404) {\r\n console.log('dash');\r\n this.isDocInEditMode = false;\r\n this.isContentLoaded = true;\r\n }\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n fetchAgents() {\r\n this.fetchAgents_http().subscribe();\r\n }\r\n\r\n fetchEditorContent() {\r\n this.fetchContent_http().subscribe();\r\n }\r\n\r\n // events/${eventId}/users-connections\r\n processMessageForDisplay(markdown: string): SafeHtml {\r\n var html = this.prepareHtml(markdown);\r\n\r\n // console.log('After line breaks conversion:', html);\r\n\r\n // Optional: Sanitize the HTML to prevent XSS\r\n const sanitizedHtml = this.sanitizeHtml(html);\r\n\r\n // console.log('Sanitized HTML:', sanitizedHtml);\r\n\r\n return sanitizedHtml;\r\n }\r\n\r\n prepareHtml(markdown: string): string {\r\n if (!markdown || !(markdown.length > 0)) {\r\n console.error('Input Markdown is null or empty');\r\n return '';\r\n }\r\n\r\n // Convert Markdown headers (### or ##) to <strong> for bold headings\r\n let html = markdown.replace(/^(#{1,6})\\s+(.*)$/gm, (match, hashes, text) => {\r\n const level = hashes.length;\r\n if (level === 3) {\r\n return `<h3><strong>${text}</strong></h3>`;\r\n } else if (level === 4) {\r\n return `<h4><strong>${text}</strong></h4>`;\r\n }\r\n return `<strong>${text}</strong>`;\r\n });\r\n\r\n // Convert Markdown code blocks with language to preformatted HTML\r\n html = html.replace(/```(\\w+)?\\n([\\s\\S]*?)```/g, (match, lang, code) => {\r\n const escapedCode = this.escapeHtml(code);\r\n const language = lang || 'plaintext';\r\n\r\n // Create a copy button for the code block\r\n return `\r\n <div class=\"code-container\">\r\n <button id=\"copy-button\" class=\"copy-button\" (click)=\"copyToClipboard('\\`${escapedCode}\\`')\">Copy</button>\r\n <pre class=\"code_block diff\"><code class=\"language-${language}\">${escapedCode}</code></pre>\r\n </div>`;\r\n });\r\n\r\n // Convert inline code (wrapped in `backticks`) to inline <code> tags\r\n html = html.replace(/`([^`]+)`/g, '<code>$1</code>');\r\n\r\n // Convert Markdown bold to HTML <strong>\r\n html = html.replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>');\r\n\r\n // Convert numbered lists\r\n html = html.replace(/^\\d+\\.\\s+(.*)$/gm, '<li>$1</li>');\r\n\r\n // Convert bullet point lists\r\n html = html.replace(/^\\-\\s+(.*)$/gm, '<li>$1</li>');\r\n\r\n // Convert Markdown links to HTML links\r\n html = html.replace(/\\[([^\\]]+)]\\(([^)]+)\\)/g, '<a href=\"$2\" target=\"_blank\">$1</a>');\r\n\r\n // Convert new lines to <br> tags for paragraphs\r\n html = html.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>');\r\n\r\n return html;\r\n }\r\n\r\n // Helper function to escape HTML characters for code blocks\r\n escapeHtml(code: string): string {\r\n return code\r\n .replace(/&/g, '&amp;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\"/g, '&quot;')\r\n .replace(/'/g, '&#039;');\r\n }\r\n\r\n // Function to copy text to clipboard\r\n public copyToClipboard(text: string) {\r\n navigator.clipboard.writeText(text).then(() => {\r\n alert('Code copied to clipboard!');\r\n }, (err) => {\r\n console.error('Could not copy text: ', err);\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n isCollapsed = false;\r\n isCollapsedForGraph = false;\r\n isCollapsedForFGraph = false;\r\n toggleCollapse() {\r\n this.isCollapsed = !this.isCollapsed;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n toggleCollapseGraph() {\r\n this.isCollapsedForGraph = !this.isCollapsedForGraph;\r\n this.cdr.detectChanges();\r\n }\r\n toggleCollapseFGraph() {\r\n this.isCollapsedForFGraph = !this.isCollapsedForFGraph;\r\n this.cdr.detectChanges();\r\n }\r\n // [\r\n // {\r\n // \"title\": \"AI News January 2024: In-Depth and Concise - The AI Track\",\r\n // \"desc\": \"Each month, we compile significant news, trends, and happenings in AI, providing detailed summaries with key points in bullet form for concise yet complete understanding.\",\r\n // \"link\": \"https://theaitrack.com/ai-news-january-2024/\"\r\n // },\r\n // {\r\n // \"title\": \"Top AI News, January 2024 - Everypixel Journal\",\r\n // \"desc\": \"In this monthly roundup, we spotlight the top AI news stories from January, including the OpenAI vs. The New York Times Lawsuit.\",\r\n // \"link\": \"https://journal.everypixel.com/top-ai-news-january-2024\"\r\n // },\r\n // {\r\n // \"title\": \"AI News July 2024: In-Depth and Concise - The AI Track\",\r\n // \"desc\": \"This page features AI News for July 2024, highlighting significant events such as Canva acquiring Leonardo AI.\",\r\n // \"link\": \"https://theaitrack.com/ai-news-july-2024-in-depth-and-concise/\"\r\n // },\r\n // {\r\n // \"title\": \"January news roundup: What's new in the world of AI? - Pluralsight\",\r\n // \"desc\": \"OpenAI’s new GPT store, business-ready ChatGPT plans, and a predicted rise in AI-powered cybercrime.\",\r\n // \"link\": \"https://www.pluralsight.com/resources/blog/data/ai-this-month-january-2024\"\r\n // },\r\n // {\r\n // \"title\": \"AI News August 2024: In-Depth and Concise - The AI Track\",\r\n // \"desc\": \"This page features AI News for August 2024, with highlights such as Nvidia delaying the “Blackwell” B200 AI chips delivery.\",\r\n // \"link\": \"https://theaitrack.com/ai-news-august-2024-in-depth-and-concise-duplicate/\"\r\n // }\r\n // ]\r\n dateTime = { now: new Date().toISOString() };\r\n // Extracts the domain from a URL\r\n getDomainName(url: string): string {\r\n try {\r\n const { hostname } = new URL(url);\r\n return hostname.replace(/^www\\./, ''); // Remove 'www.' if present\r\n } catch {\r\n return 'unknown';\r\n }\r\n }\r\n\r\n // Generates the favicon URL\r\n getFaviconUrl(url: string): string {\r\n const domain = this.getDomainName(url);\r\n return `https://www.google.com/s2/favicons?sz=128&domain=${domain}`;\r\n }\r\n currentSourcesList: any = [];\r\n onCardClick(sources): void {\r\n this.currentSourcesList = sources;\r\n this.cdr.detectChanges();\r\n this.sourcesDrawer.open();\r\n const button = document.getElementById('botcloseplaygroundbutton');\r\n if (button) {\r\n button.style.display = 'none';\r\n }\r\n }\r\n\r\n isShowEditorButton = true;\r\n\r\n openOuterEditor() {\r\n this.fetchEditorContent();\r\n this.editorsDrawer.open();\r\n this.isDrawerOpen = true;\r\n this.isShowEditorButton = false;\r\n this.cdr.detectChanges();\r\n\r\n const button = document.getElementById('botcloseplaygroundbutton');\r\n if (button) {\r\n button.style.display = 'none';\r\n }\r\n }\r\n\r\n onCloseEditor() {\r\n this.editorsDrawer.close();\r\n this.isDrawerOpen = false;\r\n this.isShowEditorButton = true;\r\n this.cdr.detectChanges(); // Trigger change detection if needed\r\n this.onDrawerClosed();\r\n }\r\n\r\n onCloseSource() {\r\n this.sourcesDrawer.close();\r\n this.isDrawerOpen = false;\r\n this.cdr.detectChanges(); // Trigger change detection if needed\r\n this.onDrawerClosed();\r\n }\r\n onDrawerClosed() {\r\n setTimeout(() => {\r\n this.isDrawerOpen = true;\r\n this.cdr.detectChanges(); // Trigger change detection if needed\r\n // Use ngClass to dynamically apply the class\r\n const button = document.getElementById('botcloseplaygroundbutton');\r\n if (button) {\r\n button.style.display = 'block';\r\n }\r\n }, 800);\r\n }\r\n isDrawerOpen = true;\r\n\r\n toggleDrawer(todo) {\r\n this.isDrawerOpen = todo;\r\n this.cdr.detectChanges();\r\n this.updateButtonVisibility();\r\n }\r\n updateButtonVisibility() {\r\n const button = document.getElementById('botcloseplaygroundbutton');\r\n if (button) {\r\n button.style.display = this.isDrawerOpen ? 'block' : 'none';\r\n }\r\n }\r\n openLinkInNewTab(link: string): void {\r\n window.open(link, '_blank');\r\n }\r\n adjustTextareaHeight(event: any): void {\r\n try {\r\n if (event.key === 'Enter' && !event.shiftKey) {\r\n // Prevents a new line from being added\r\n event.preventDefault();\r\n }\r\n } catch (error) {\r\n\r\n }\r\n const textarea = event.target as HTMLTextAreaElement;\r\n textarea.style.height = 'auto'; // Reset the height\r\n textarea.style.height = `${textarea.scrollHeight}px`; // Adjust height to match content\r\n // Ensure the height doesn't exceed the max-height set in CSS\r\n if (textarea.scrollHeight > 150) {\r\n textarea.style.height = `150px`; // Adjust height to match content\r\n textarea.style.overflowY = 'auto'; // Enable scrolling if content exceeds 400px\r\n } else {\r\n textarea.style.overflowY = 'hidden'; // Hide scrollbar if content is within limits\r\n }\r\n }\r\n\r\n toggleWorkflows(value = null) {\r\n\r\n if (!this.checkForCop29BotId()) {\r\n this.botService.getWorkflowsByOrgId(this.orgId).subscribe((res) => {\r\n this.orgWorkflows = res;\r\n this.isWorkflowOpen = value == null ? !this.isWorkflowOpen : value;\r\n\r\n if (!this.isWorkflowOpen) {\r\n this.selectedWorkflow = null;\r\n this.openWorkflowInput = false;\r\n }\r\n\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n }\r\n\r\n initializeForm() {\r\n // Create form controls dynamically based on selectedWorkflow.Trigger.InputSchema\r\n const formControls = {};\r\n if (this.selectedWorkflow?.Trigger?.InputSchema) {\r\n this.selectedWorkflow.Trigger.InputSchema.forEach((input) => {\r\n formControls[input.InputId] = [\r\n input.Value || '',\r\n input.Required ? Validators.required : null,\r\n ];\r\n });\r\n }\r\n\r\n // Initialize the form\r\n this.workflowForm = this.fb.group(formControls);\r\n }\r\n\r\n onWorkflowSelected(workflow) {\r\n this.selectedWorkflow = workflow;\r\n this.initializeForm();\r\n this.isWorkflowOpen = false;\r\n this.openWorkflowInput = true;\r\n }\r\n\r\n onWorkflowSubmit() {\r\n const container = document.getElementById('allChats');\r\n if (this.workflowForm.valid) {\r\n console.log(this.workflowForm.value);\r\n\r\n var input = this.prepareHtml(\r\n this.generateMarkdown(\r\n this.selectedWorkflow.Name,\r\n this.workflowForm.value\r\n )\r\n );\r\n\r\n // update last two chatLog entries, set showWorkflowExecutionLoader = false\r\n try {\r\n this.chatLog[this.chatLog.length - 1][\r\n 'showWorkflowExecutionLoader'\r\n ] = false;\r\n this.chatLog[this.chatLog.length - 2][\r\n 'showWorkflowExecutionLoader'\r\n ] = false;\r\n } catch (error) { }\r\n\r\n this.chatLog.push({\r\n type: 'user',\r\n message: input,\r\n time: formatNow(this.timezone),\r\n copied: false,\r\n isCollapsedTrue: false,\r\n showWorkflowExecutionLoader: true,\r\n });\r\n\r\n console.log(input);\r\n\r\n this.currentWorkflowActionProgress = 0;\r\n this.currentWorkflowAction =\r\n 'Executing ' + this.selectedWorkflow.Actions[0].Name;\r\n this.isChatingWithAi = true;\r\n this.executingWorkflow = true;\r\n this.workflowExecutionDetails = {\r\n Actions: this.selectedWorkflow.Actions,\r\n Inputs: this.workflowForm.value,\r\n workflowInputs: this.workflowForm.value,\r\n WorkflowName: this.selectedWorkflow.Name,\r\n };\r\n this.currentWorkflowExecutionDetails = this.workflowExecutionDetails;\r\n this.scrollToBottom();\r\n\r\n this.cdr.detectChanges();\r\n\r\n // execute the ask endpoint with workflow input\r\n this.makeAskRequest(\r\n input,\r\n this.agents,\r\n this.conversationKey,\r\n '',\r\n null,\r\n this.selectedWorkflow['_id'],\r\n this.workflowForm.value\r\n );\r\n }\r\n }\r\n\r\n makeAskRequest(\r\n inputMsg: string,\r\n agents: any[],\r\n conversationId: string,\r\n msg?: any,\r\n chat?: any,\r\n workflowId?: string,\r\n workflow_inputs?: any\r\n ): void {\r\n var url = `${this.environment.BASE_URL}/ai/ask`;\r\n\r\n var body = {\r\n user_question: inputMsg,\r\n user_id: this.userId,\r\n bot_id: this.botId,\r\n message_id: this.conversationService.generateKey(),\r\n agents: agents?.filter((p) => p.selected).map((p) => p.id) ?? [],\r\n conversation_id: conversationId,\r\n };\r\n\r\n if (workflowId) {\r\n body['workflow_id'] = workflowId;\r\n body['workflow_inputs'] = workflow_inputs;\r\n }\r\n\r\n fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: 'Bearer ' + this.s27Token,\r\n 'x-api-key': this.apiKey,\r\n 'hive-bot-id': this.botId\r\n },\r\n body: JSON.stringify(body),\r\n })\r\n .then((response) => {\r\n if (response.status === 401 || response.status === 403) {\r\n this.is401 = true;\r\n this.refreshToken.emit();\r\n\r\n // If `msg` and `chat` exist, handle them\r\n if (msg && chat) {\r\n this.msg = msg;\r\n this.chat = chat;\r\n this.isFetchDataFor = true;\r\n }\r\n } else {\r\n this.is401 = false;\r\n }\r\n return response.json();\r\n })\r\n .then((data) => {\r\n console.log(data);\r\n // Additional response handling if needed\r\n })\r\n .catch((err) => {\r\n console.error('Error: ', err);\r\n this.isChatingWithAi = false;\r\n });\r\n\r\n this.input = '';\r\n this.selectedWorkflow = null;\r\n this.openWorkflowInput = false;\r\n this.isWorkflowOpen = false;\r\n this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n generateMarkdown(title, obj) {\r\n // Initialize markdown with the title\r\n let markdown = `## ${title}\\n`;\r\n\r\n // Loop through the object and append the field names and values\r\n for (const [key, value] of Object.entries(obj)) {\r\n var key_label =\r\n this.selectedWorkflow.Trigger.InputSchema.find(\r\n (input) => input.InputId === key\r\n )?.Label || key;\r\n markdown += `- **${key_label}**: ${value}\\n`;\r\n }\r\n\r\n return markdown;\r\n }\r\n\r\n showWorkflowHistoryDetails(workflow_id) {\r\n if (!workflow_id) {\r\n this.workflowExecutionDetails = this.currentWorkflowExecutionDetails;\r\n this.showWorkflowExecutionDetails = true;\r\n this.cdr.detectChanges();\r\n return;\r\n }\r\n\r\n this.botService.getWorkflowExecutionById(workflow_id).subscribe((res) => {\r\n if (res && res.Actions && Array.isArray(res.Actions)) {\r\n res.Actions = res.Actions.map((action) => {\r\n if (action.InsertTimeStamp) {\r\n action.InsertTimeStamp = formatTimeStamps(\r\n this.timezone,\r\n action.InsertTimeStamp\r\n );\r\n }\r\n return action;\r\n });\r\n }\r\n\r\n res.InsertTimeStamp = formatTimeStamps(\r\n this.timezone,\r\n res.InsertTimeStamp\r\n );\r\n this.workflowExecutionDetails = res;\r\n this.showWorkflowExecutionDetails = true;\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n closeModal() {\r\n this.showWorkflowExecutionDetails = false;\r\n }\r\n\r\n objectToArray(obj: any): any[] {\r\n return Object.keys(obj).map((key) => ({ key, value: obj[key] }));\r\n }\r\n\r\n startNewConversation() {\r\n this.conversationKey = this.conversationService.getKey(this.botId, true);\r\n this.chatLog = [this.chatLog[0]];\r\n this.isChatingWithAi = false;\r\n setTimeout(() => {\r\n this.initializeSocket();\r\n }, 200);\r\n this.scrollToBottom();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n initializeSpeechRecognizer(token: string) {\r\n this.speechConfig = SpeechSDK.SpeechConfig.fromAuthorizationToken(\r\n token,\r\n this.region\r\n );\r\n const audioConfig = SpeechSDK.AudioConfig.fromDefaultMicrophoneInput();\r\n this.recognizer = new SpeechSDK.SpeechRecognizer(\r\n this.speechConfig,\r\n audioConfig\r\n );\r\n\r\n this.recognizer.recognizing = (s, e) => {\r\n if (e.result.reason === SpeechSDK.ResultReason.RecognizingSpeech) {\r\n this.input = e.result.text;\r\n console.log(`Recognizing: ${e.result.text}`);\r\n this.cdr.markForCheck();\r\n }\r\n };\r\n\r\n this.recognizer.recognized = (s, e) => {\r\n if (e.result.reason === SpeechSDK.ResultReason.RecognizedSpeech) {\r\n this.input = e.result.text;\r\n console.log(`Recognized: ${e.result.text}`);\r\n this.toggleRecording();\r\n this.cdr.markForCheck();\r\n }\r\n };\r\n\r\n this.recognizer.canceled = (s, e) => {\r\n console.error('Canceled: ', e.errorDetails);\r\n };\r\n\r\n this.recognizer.sessionStopped = (s, e) => {\r\n console.log('Session stopped.');\r\n this.recognizer.stopContinuousRecognitionAsync();\r\n this.fetchData();\r\n };\r\n }\r\n\r\n toggleRecording() {\r\n this.isRecording = !this.isRecording;\r\n\r\n if (this.isRecording) {\r\n this.startRecognition();\r\n } else {\r\n this.stopRecognition();\r\n }\r\n }\r\n\r\n startRecognition() {\r\n this.recognizer.startContinuousRecognitionAsync();\r\n }\r\n\r\n stopRecognition() {\r\n this.recognizer.stopContinuousRecognitionAsync();\r\n }\r\n\r\n checkForCop29BotId() {\r\n return this.botId == '66fa3f276c5d71e2717bfea8';\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n@Component({\r\n selector: 'hivegpt-chatbot',\r\n templateUrl: './chatbot.component.html',\r\n styleUrls: ['./chatbot.component.scss'],\r\n})\r\nexport class ChatBotComponent {\r\n @Input() userId!: string;\r\n @Input() apiKey!: string;\r\n @Input() botName!: string;\r\n @Input() botSkills!: string;\r\n @Input() botId!: string;\r\n @Input() closeButtonColor!: string;\r\n @Input() gradientColors!: string[];\r\n @Input() greeting!: string;\r\n @Input() sendButtonColor!: string;\r\n @Input() useOpenAi!: boolean;\r\n @Input() showClose!: boolean;\r\n @Input() bgGradient!: string[];\r\n @Input() sendButtonTextColor!: string;\r\n @Input() fullView!: boolean;\r\n @Input() bgBubbleAi!: string;\r\n @Input() bgBubbleUser!: string;\r\n @Input() closeButtonbgColor!: string;\r\n @Input() messageTextColorAi!: string;\r\n @Input() messageTextColorUser!: string;\r\n @Input() dateTimeColor!: string;\r\n @Input() dateTextColor!: string;\r\n @Input() formFieldBgColor!: string;\r\n @Input() formFieldTextColor!: string;\r\n @Input() thumbsUpMessage!: string;\r\n @Input() thumbsDownMessages!: string[];\r\n @Input() timezone!: string;\r\n @Input() eventName!: string;\r\n @Input() credentials!: [];\r\n @Input() unknownResponses!: [];\r\n @Input() rules!: string;\r\n @Input() eventId!: string;\r\n visible = false;\r\n\r\n toggle() {\r\n this.visible = !this.visible;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'safeHtml',\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n\r\n constructor(private sanitizer: DomSanitizer) {\r\n }\r\n\r\n transform(html): unknown {\r\n return html ? this.sanitizer.bypassSecurityTrustHtml(html) : '';\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { IVideo } from '../../models/video';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-video-player',\r\n templateUrl: './video-player.component.html',\r\n styleUrls: ['./video-player.component.scss'],\r\n})\r\nexport class VideoPlayerComponent\r\n implements OnInit, AfterViewInit {\r\n @Input() currentUserId: string;\r\n @Input() user: any;\r\n @Input() eventId: string;\r\n @Input() videoObj: IVideo;\r\n @Input() isDev: boolean;\r\n myFollowingList: Array<string>;\r\n myPendingSentRequests: Array<string>;\r\n @Input() type: string;\r\n isMuted: boolean = true;\r\n private observer: IntersectionObserver;\r\n isFullscreen: boolean = false;\r\n @ViewChild('video') video: any;\r\n @ViewChild('fullscreenvideo') fullscreenvideo: any;\r\n isFullscreenvideoPlaying: boolean = false;\r\n\r\n @Output() connectWithUser = new EventEmitter<string>();\r\n @Output() scheduleMeeting = new EventEmitter<any>();\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private doc: any,\r\n private el: ElementRef,\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n toggleSound(isMuted = null) {\r\n this.isMuted = isMuted != null ? isMuted : !this.isMuted;\r\n setTimeout(() => {\r\n const video: any = this.doc\r\n .getElementById(this.video.id.toString());\r\n if (video) {\r\n video.muted = this.isMuted;\r\n this.video.isMuted = this.isMuted;\r\n }\r\n\r\n this.cdr.markForCheck();\r\n //this.muteToggle.emit(this.isMuted);\r\n })\r\n}\r\n\r\n togglePlay(playState: boolean, videoEl) {\r\n this.videoObj.isPlaying = !this.videoObj.isPlaying;\r\n setTimeout(() => { \r\n if (playState) { \r\n this.videoObj.isPlaying = true;\r\n videoEl.play();\r\n var pauseBtn = document.getElementById('pause-btn');\r\n pauseBtn.classList.add('hide-pause-btn');\r\n\r\n this.toggleSound(false);\r\n }\r\n else{\r\n this.videoObj.isPlaying = false;\r\n videoEl.pause();\r\n }\r\n this.cdr.markForCheck();\r\n })\r\n }\r\n \r\n ngAfterViewInit() {\r\n if (window.innerWidth <= 576) {\r\n this.observer = new IntersectionObserver(\r\n (entries) => {\r\n if (entries[0].isIntersecting === true) {\r\n this.video.nativeElement.play();\r\n } else {\r\n this.video.nativeElement.pause();\r\n }\r\n },\r\n {\r\n threshold: 0.75,\r\n }\r\n );\r\n\r\n this.observer.observe(this.el.nativeElement as HTMLElement);\r\n }\r\n }\r\n\r\n toggleFullscreen() {\r\n this.isFullscreen = !this.isFullscreen;\r\n if (!this.isFullscreen) {\r\n this.fullscreenvideo.nativeElement.pause();\r\n }\r\n }\r\n\r\n toggleFullscreenPlay() {\r\n this.isFullscreenvideoPlaying = !this.isFullscreenvideoPlaying;\r\n\r\n if (this.isFullscreenvideoPlaying) {\r\n this.fullscreenvideo.nativeElement.play();\r\n } else {\r\n this.fullscreenvideo.nativeElement.pause();\r\n }\r\n }\r\n\r\n followUser(userId) {\r\n this.connectWithUser.emit(userId);\r\n }\r\n\r\n checkPendingSentRequest(userId) {\r\n return this.myPendingSentRequests?.find(a => a == userId);\r\n }\r\n\r\n canUnfollowUser() {\r\n return false;\r\n }\r\n\r\n canFollowUser() {\r\n return true;\r\n }\r\n\r\n getIniNames(firstName, lastName) {\r\n if(!firstName && !lastName) {\r\n return '';\r\n }\r\n \r\n if (firstName && lastName)\r\n return (\r\n firstName.charAt(0).toUpperCase() + lastName.charAt(0).toUpperCase()\r\n );\r\n else return firstName.charAt(0).toUpperCase();\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n Renderer2,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { MatDrawer } from '@angular/material/sidenav';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { of, Subscription } from 'rxjs';\r\nimport { catchError, switchMap } from 'rxjs/operators';\r\nimport { formatNow, formatTimeStamps } from '../../utils/utils';\r\nimport {\r\n dev_environment,\r\n prod_environment,\r\n} from '../../../environments/environment';\r\nimport { ConversationService } from '../conversation.service';\r\nimport { Observable } from 'rxjs';\r\nimport { SocketService } from '../socket-service.service';\r\n\r\n@Component({\r\n selector: 'lib-bot-html-editor',\r\n templateUrl: './bot-html-editor.component.html',\r\n styleUrls: ['./bot-html-editor.component.css'],\r\n})\r\nexport class BotHtmlEditorComponent implements OnInit {\r\n @Input() editorContent: Observable<string>;\r\n @Input() isDocInEditMode: any;\r\n @Input() documentContent: any;\r\n @Input() conversationId: any;\r\n @Input() botId: any;\r\n\r\n documentName: any = 'doc name';\r\n\r\n environment: {\r\n USERS_API;\r\n BASE_URL;\r\n AGENTS_API;\r\n };\r\n\r\n quillConfig = {\r\n toolbar: [\r\n [{ header: '1' }, { header: '2' }, { font: [] }],\r\n [{ list: 'ordered' }, { list: 'bullet' }],\r\n ['bold', 'italic', 'underline'],\r\n ['link'],\r\n ['clean'],\r\n ],\r\n };\r\n constructor(private cdr: ChangeDetectorRef, private http: HttpClient) {}\r\n\r\n ngOnInit(): void {\r\n this.environment = prod_environment;\r\n\r\n setTimeout(() => {\r\n if (this.isDocInEditMode) {\r\n console.log('In Edit mode');\r\n this.filldataInForm();\r\n } else {\r\n console.log('In save mode');\r\n }\r\n }, 2500);\r\n }\r\n\r\n filldataInForm() {\r\n if (this.documentContent) {\r\n this.documentName = this.documentContent?.name;\r\n this.editorContent = this.documentContent?.content;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n saveContent() {\r\n if (!this.isDocInEditMode) {\r\n this.saveContent_http().subscribe();\r\n } else {\r\n this.saveContent_http().subscribe();\r\n }\r\n }\r\n\r\n saveContent_http() {\r\n console.log('API call function');\r\n\r\n const url = `${this.environment.AGENTS_API}/ConversationDocuments?conversationId=${this.conversationId}&botId=${this.botId}`;\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n apiKey: 'WIz/qAm+EEmfOkFaUA/weA==',\r\n });\r\n\r\n let data = {\r\n name: this.documentName,\r\n content: this.editorContent,\r\n };\r\n\r\n return this.http.post(url, data, { headers }).pipe(\r\n switchMap((res: any) => {\r\n if (res) {\r\n // alert('Saved Successfully');\r\n }\r\n this.cdr.markForCheck();\r\n\r\n return of(res);\r\n }),\r\n catchError((error) => {\r\n console.error('Error fetching chatbot config: ', error);\r\n\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n updateContent_http() {\r\n console.log('API call function');\r\n\r\n const url = `${this.environment.AGENTS_API}/ConversationDocuments/rename?conversationId=${this.conversationId}&botId=${this.botId}`;\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n apiKey: 'WIz/qAm+EEmfOkFaUA/weA==',\r\n });\r\n\r\n let data = {\r\n name: this.documentName,\r\n content: this.editorContent,\r\n };\r\n\r\n return this.http.put(url, data, { headers }).pipe(\r\n switchMap((res: any) => {\r\n if (res) {\r\n // alert('Updated Successfully');\r\n }\r\n this.cdr.markForCheck();\r\n\r\n return of(res);\r\n }),\r\n catchError((error) => {\r\n console.error('Error fetching chatbot config: ', error);\r\n\r\n return of(null);\r\n })\r\n );\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { ChatDrawerComponent } from './components/chat-drawer/chat-drawer.component';\r\nimport { ChatBotComponent } from './components/chatbot/chatbot.component';\r\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\r\nimport { VideoPlayerComponent } from './components/video-player/video-player.component';\r\nimport { QuillModule } from 'ngx-quill';\r\nimport { BotHtmlEditorComponent } from './components/bot-html-editor/bot-html-editor.component';\r\n\r\n@NgModule({\r\n declarations: [ChatBotComponent, ChatDrawerComponent, VideoPlayerComponent, SafeHtmlPipe, BotHtmlEditorComponent],\r\n imports: [CommonModule, MatIconModule, MatSidenavModule, FormsModule, QuillModule],\r\n exports: [ChatBotComponent, ChatDrawerComponent, VideoPlayerComponent]\r\n})\r\nexport class HiveGptModule { }\r\n","/*\r\n * Public API Surface of hive-gpt\r\n */\r\n\r\nexport * from './lib/components/chat-drawer/chat-drawer.component';\r\nexport * from './lib/components/chatbot/chatbot.component';\r\nexport * from './lib/hivegpt.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {NotificationSocket as ɵd} from './lib/components/NotificationSocket';\nexport {BotHtmlEditorComponent as ɵg} from './lib/components/bot-html-editor/bot-html-editor.component';\nexport {BotsService as ɵa} from './lib/components/bot.service';\nexport {ConversationService as ɵc} from './lib/components/conversation.service';\nexport {SocketService as ɵb} from './lib/components/socket-service.service';\nexport {VideoPlayerComponent as ɵe} from './lib/components/video-player/video-player.component';\nexport {SafeHtmlPipe as ɵf} from './lib/pipes/safe-html.pipe';"],"names":["SpeechSDK.SpeechConfig","SpeechSDK.AudioConfig","SpeechSDK.SpeechRecognizer","SpeechSDK.ResultReason"],"mappings":"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"}