@hivegpt/hiveai-angular 0.0.428 → 0.0.430

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/components/translations/translation.service.ts","../../../../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/voice-agent/services/audio-analyzer.service.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/voice-agent/services/websocket-voice-client.service.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/voice-agent/services/daily-voice-client.service.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/voice-agent/services/voice-agent.service.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/voice-agent/voice-modal-tokens.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.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/components/voice-agent/voice-agent.module.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":["import { Injectable, Inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TranslationService {\n private eventId: string | null = null;\n\n setEventId(id: string) {\n this.eventId = id;\n }\n\n getTranslation(key: string): string {\n console.log('eventId', this.eventId);\n // let lang = String(this.getLang(this.eventId)).replace(/^\"|\"$/g, '');\n const lang = (\n localStorage.getItem('defaultLanguage-' + this.eventId) || 'en'\n ).replace(/^\"|\"$/g, '');\n\n const entry = this.translationsData.find((item) => item.Key === key);\n\n if (!entry) {\n return key; // fallback\n }\n\n return entry.Translations[lang] || entry.DefaultValue || key;\n }\n\n private getLang(eventId?: string | null): string {\n const suffix = eventId ? `-${eventId}` : '';\n const storageKey = `defaultLanguage${suffix}`;\n\n return localStorage.getItem(storageKey) || 'en';\n }\n\n private translationsData: any[] = [\n { \n Key: \"Copy\",\n DefaultValue: \"Copy\",\n Translations: {\n en: \"Copy\",\n fr: \"Copier\",\n it: \"Copia\",\n es: \"Copiar\",\n de: \"Kopieren\",\n \"pt-br\": \"Copiar\",\n ar: \"نسخ\",\n zh: \"复制\",\n ru: \"Копировать\"\n }\n}\n,\n {\n \n Key: \"May I assist you with anything else\",\n DefaultValue: \"Great. May I assist you with anything else?\",\n Translations: {\n en: \"Great. May I assist you with anything else?\",\n fr: \"Parfait. Puis-je vous aider avec autre chose ?\",\n it: \"Perfetto. Posso aiutarti con qualcos'altro?\",\n es: \"Genial. ¿Puedo ayudarte con algo más?\",\n de: \"Super. Kann ich Ihnen noch bei etwas anderem helfen?\",\n \"pt-br\": \"Ótimo. Posso ajudar com mais alguma coisa?\",\n ar: \"رائع. هل يمكنني مساعدتك في أي شيء آخر؟\",\n zh: \"太好了。还有什么我可以帮您的吗?\",\n ru: \"Отлично. Могу ли я помочь вам с чем-то ещё?\"\n }\n},\n {\n Key: \"We are sorry we've not been able to answer your question\",\n DefaultValue: \"We are sorry we've not been able to answer your question. However, our dedicated support team is happy to help. Please <a href=\\\"mailto:support@social27.com\\\">click here</a> and a human agent will assist you as soon as possible.\",\n Translations: {\n en: \"We are sorry we've not been able to answer your question. However, our dedicated support team is happy to help. Please <a href=\\\"mailto:support@social27.com\\\">click here</a> and a human agent will assist you as soon as possible.\",\n fr: \"Nous sommes désolés de ne pas avoir pu répondre à votre question. Cependant, notre équipe d'assistance se fera un plaisir de vous aider. Veuillez <a href=\\\"mailto:support@social27.com\\\">cliquer ici</a> et un agent humain vous assistera dès que possible.\",\n it: \"Ci dispiace di non essere riusciti a rispondere alla tua domanda. Tuttavia, il nostro team di supporto dedicato sarà lieto di aiutarti. Ti preghiamo di <a href=\\\"mailto:support@social27.com\\\">fare clic qui</a> e un operatore umano ti assisterà al più presto.\",\n es: \"Lamentamos no haber podido responder a tu pregunta. Sin embargo, nuestro equipo de soporte estará encantado de ayudarte. Por favor, <a href=\\\"mailto:support@social27.com\\\">haz clic aquí</a> y un agente humano te asistirá lo antes posible.\",\n de: \"Es tut uns leid, dass wir Ihre Frage nicht beantworten konnten. Unser engagiertes Support-Team hilft Ihnen jedoch gerne weiter. Bitte <a href=\\\"mailto:support@social27.com\\\">klicken Sie hier</a>, und ein menschlicher Mitarbeiter wird Ihnen so bald wie möglich helfen.\",\n \"pt-br\": \"Lamentamos não ter conseguido responder à sua pergunta. No entanto, nossa equipe de suporte dedicada ficará feliz em ajudar. Por favor, <a href=\\\"mailto:support@social27.com\\\">clique aqui</a> e um agente humano o ajudará o mais rápido possível.\",\n ar: \"نأسف لعدم تمكننا من الإجابة على سؤالك. ومع ذلك، يسعد فريق الدعم المخصص لدينا بمساعدتك. يرجى <a href=\\\"mailto:support@social27.com\\\">النقر هنا</a> وسيساعدك أحد الوكلاء البشريين في أقرب وقت ممكن.\",\n zh: \"很抱歉我们未能回答您的问题。不过,我们的专属支持团队很乐意为您提供帮助。请<a href=\\\"mailto:support@social27.com\\\">点击这里</a>,人工客服将尽快为您提供协助。\",\n ru: \"К сожалению, мы не смогли ответить на ваш вопрос. Однако наша служба поддержки с радостью вам поможет. Пожалуйста, <a href=\\\"mailto:support@social27.com\\\">нажмите здесь</a>, и наш оператор свяжется с вами как можно скорее.\"\n }\n},\n {\n Key: 'Ask anything',\n DefaultValue: 'Ask anything',\n Translations: {\n en: 'Ask anything',\n fr: 'Demandez ce que vous voulez',\n it: 'Chiedi qualsiasi cosa',\n es: 'Pregunta lo que quieras',\n de: 'Frag alles',\n 'pt-br': 'Pergunte qualquer coisa',\n ar: 'اسأل أي شيء',\n zh: '随便问',\n ru: 'Спросите что угодно',\n },\n },\n {\n Key: 'Assistant',\n DefaultValue: 'Assistant',\n Translations: {\n en: 'Assistant',\n fr: 'Assistant',\n it: 'Assistente',\n es: 'Asistente',\n de: 'Assistent',\n 'pt-br': 'Assistente',\n ar: 'مساعد',\n zh: '助手',\n ru: 'Ассистент',\n },\n },\n {\n Key: 'Your personal or company information is kept private and secure within this chat.',\n DefaultValue:\n 'Your personal or company information is kept private and secure within this chat.',\n Translations: {\n en: 'Your personal or company information is kept private and secure within this chat.',\n fr: 'Vos informations personnelles ou celles de votre entreprise sont conservées privées et sécurisées dans cette conversation.',\n it: \"Le tue informazioni personali o aziendali sono mantenute private e sicure all'interno di questa chat.\",\n es: 'Tu información personal o de la empresa se mantiene privada y segura dentro de este chat.',\n de: 'Ihre persönlichen oder geschäftlichen Informationen bleiben in diesem Chat privat und sicher.',\n 'pt-br':\n 'Suas informações pessoais ou da empresa são mantidas privadas e seguras dentro deste chat.',\n ar: 'تظل معلوماتك الشخصية أو معلومات شركتك خاصة وآمنة داخل هذه المحادثة.',\n zh: '您的个人或公司信息在此聊天中保持私密和安全。',\n ru: 'Ваша личная или корпоративная информация остается конфиденциальной и защищенной в этом чате.',\n },\n },\n {\n Key: 'Send message',\n DefaultValue: 'Send message',\n Translations: {\n en: 'Send message',\n fr: 'Envoyer un message',\n it: 'Invia messaggio',\n es: 'Enviar mensaje',\n de: 'Nachricht senden',\n 'pt-br': 'Enviar mensagem',\n ar: 'إرسال رسالة',\n zh: '发送消息',\n ru: 'Отправить сообщение',\n },\n },\n {\n Key: 'Platform GPT',\n DefaultValue: 'Platform GPT',\n Translations: {\n en: 'Platform GPT',\n fr: 'Plateforme GPT',\n it: 'Piattaforma GPT',\n es: 'Plataforma GPT',\n de: 'Plattform GPT',\n 'pt-br': 'Plataforma GPT',\n ar: 'منصة GPT',\n zh: '平台 GPT',\n ru: 'Платформа GPT',\n },\n },\n {\n Key: 'New Chat',\n DefaultValue: 'New Chat',\n Translations: {\n en: 'New Chat',\n fr: 'Nouvelle conversation',\n it: 'Nuova chat',\n es: 'Nuevo chat',\n de: 'Neuer Chat',\n 'pt-br': 'Novo chat',\n ar: 'محادثة جديدة',\n zh: '新聊天',\n ru: 'Новый чат',\n },\n },\n {\n Key: 'You',\n DefaultValue: 'You',\n Translations: {\n en: 'You',\n fr: 'Vous',\n it: 'Tu',\n es: 'Tú',\n de: 'Du',\n 'pt-br': 'Você',\n ar: 'أنت',\n zh: '您',\n ru: 'Вы',\n },\n },\n {\n Key: 'Write your message',\n DefaultValue: 'Write your message',\n Translations: {\n en: 'Write your message',\n fr: 'Écrivez votre message',\n it: 'Scrivi il tuo messaggio',\n es: 'Escribe tu mensaje',\n de: 'Schreiben Sie Ihre Nachricht',\n 'pt-br': 'Escreva sua mensagem',\n ar: 'اكتب رسالتك',\n zh: '写下您的消息',\n ru: 'Напишите ваше сообщение',\n },\n },\n {\n Key: 'Send',\n DefaultValue: 'Send',\n Translations: {\n en: 'Send',\n fr: 'Envoyer',\n it: 'Invia',\n es: 'Enviar',\n de: 'Senden',\n 'pt-br': 'Enviar',\n ar: 'إرسال',\n zh: '发送',\n ru: 'Отправить',\n },\n },\n \n {\n Key: 'Call Interface',\n DefaultValue: 'Call Interface',\n Translations: {\n en: 'Call Interface',\n fr: \"Interface d'appel\",\n it: 'Interfaccia chiamata',\n es: 'Interfaz de llamada',\n de: 'Anrufoberfläche',\n 'pt-br': 'Interface de chamada',\n ar: 'واجهة الاتصال',\n zh: '呼叫界面',\n ru: 'Интерфейс звонка',\n },\n },\n {\n Key: 'Close',\n DefaultValue: 'Close',\n Translations: {\n en: 'Close',\n fr: 'Fermer',\n it: 'Chiudi',\n es: 'Cerrar',\n de: 'Schließen',\n 'pt-br': 'Fechar',\n ar: 'إغلاق',\n zh: '关闭',\n ru: 'Закрыть',\n },\n },\n ];\n}\n","const formatHoursAndMinutes = (date: Date) => {\n let hours = date.getHours() % 12;\n const minutes = date.getMinutes();\n const amPm = date.getHours() < 12 ? 'AM' : 'PM';\n if(hours === 0) hours = 12;\n\n const formattedHours = hours < 10 ? `0${hours}` : hours;\n const formattedMinutes = minutes < 10 ? `0${minutes}` : minutes;\n\n return `${formattedHours}:${formattedMinutes} ${amPm}`;\n};\n\nexport const formatNow = (timezone?: string) => {\n const now = new Date();\n if (timezone) {\n const options: any = {\n hour12: true,\n hour: 'numeric',\n minute: 'numeric',\n timeZone: timezone,\n };\n return now.toLocaleString('en-US', options);\n }\n return formatHoursAndMinutes(now);\n};\n\nexport const formatTimeStamps = (timezone: string, timestamps: any) => {\n const date = new Date(timestamps + 'Z');\n\n const options: any = {\n hour12: true,\n hour: 'numeric',\n minute: 'numeric',\n timeZone: timezone,\n };\n return date.toLocaleString('en-US', options);\n};\n","\n\nexport const prod_environment = {\n USERS_API: 'https://es-user.social27.com/api',\n BASE_URL: 'https://agent-api.hivegpt.ai',\n AGENTS_API: 'https://hive-ai.social27.com/api',\n API_KEY: '82595783-dc9c-4513-8204-709818d51be3',\n SocketUrl: 'https://notif-v2-ws.social27.com/'\n}\n\n\nexport const dev_environment = {\n USERS_API: 'https://pre-user.social27.com/api',\n BASE_URL: 'https://pre-agent-api.hivegpt.ai',\n AGENTS_API: 'https://hive-pre-ai.social27.com/api',\n API_KEY: '66d59244c50b8fb597a101t1',\n SocketUrl: 'https://notif-ws-staging.social27.com/',\n};\n\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConversationService {\n private conversationStorageKeyPrefix = 'conversationKey_';\n private sessionStorageKeyPrefix = 'sessionKey_';\n\n private userSpecificNotification: Subject<any> = new Subject<any>();\n\n constructor() { }\n\n generateKey(): string {\n const timestamp = Math.floor(new Date().getTime() / 1000).toString(16);\n const randomHex = 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, () => {\n return Math.floor(Math.random() * 16).toString(16);\n });\n return timestamp + randomHex;\n }\n\n getKey(botId: string, resetKey: boolean = false): string {\n const storageKey = `${this.conversationStorageKeyPrefix}${botId}`;\n let value = localStorage.getItem(storageKey);\n\n if (!value || resetKey) {\n value = this.generateKey();\n localStorage.setItem(storageKey, value);\n }\n\n return value;\n }\n\n getSessionKey(sessionId: string, resetKey: boolean = false): string {\n const storageKey = `${this.sessionStorageKeyPrefix}${sessionId}`;\n let value = localStorage.getItem(storageKey);\n\n if (!value || resetKey) {\n value = this.generateKey();\n localStorage.setItem(storageKey, value);\n }\n\n return value;\n }\n\n sendValidatedUserData(message: any) {\n this.userSpecificNotification.next(message);\n }\n\n getUserSpecificNotification(): Observable<any> {\n return this.userSpecificNotification.asObservable();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Socket, SocketIoConfig } from 'ngx-socket-io';\nimport { prod_environment } from '../../environments/environment';\n\n@Injectable({\n providedIn: 'root' // This ensures the service is available across the application\n})\nexport class NotificationSocket extends Socket {\n constructor() {\n super(socketConfig);\n\n // Log connection status\n this.on('connect', () => {\n console.log('Socket connected');\n });\n\n this.on('disconnect', () => {\n console.warn('Socket disconnected');\n });\n\n this.on('connect_error', (err) => {\n console.error('Socket connection error:', err);\n });\n }\n}\n\nconst socketConfig: SocketIoConfig = {\n url: prod_environment.SocketUrl,\n options: {\n transports: ['websocket', 'polling'],\n reconnection: true,\n autoConnect: true,\n upgrade: true,\n reconnectionDelay: 1000,\n reconnectionDelayMax: 5000,\n reconnectionAttempts: Infinity\n }\n};","import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\nimport { webSocket, WebSocketSubject } from 'rxjs/webSocket';\nimport { ConversationService } from './conversation.service';\nimport { NotificationSocket } from './NotificationSocket';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SocketService {\n public testMessage: string;\n private isCommonSocketInitialized = false;\n private isUserSpecificSocketInitialized = false;\n private isUserSpecificEventReleased = true;\n private messageQueue: any[] = [];\n private releaseInterval = 1000;\n private intervalSetup: boolean = false;\n\n constructor(\n private conversationService: ConversationService,\n private notificationSocket: NotificationSocket\n ) {\n this.startReleasingMessages();\n }\n\n isSocketInitialized(isCommon: boolean) {\n return isCommon\n ? this.isCommonSocketInitialized\n : this.isUserSpecificSocketInitialized &&\n !this.isUserSpecificEventReleased;\n }\n\n disconnectSocketConnection() {\n this.notificationSocket.disconnect();\n }\n connectSocketConnection() {\n this.notificationSocket.connect();\n }\n registerUserSpecificHiveSocket(botId: string, conversation_id: string, org_id: string) {\n const commonNotification = 'commonNotification';\n const groupId = `Hive_AI_Notifs_${botId}_${conversation_id}`;\n const groupId_org = `Hive_AI_Notifs_${org_id}`;\n\n // Remove any pre-existing listeners for commonNotification\n // this.notificationSocket.removeAllListeners(commonNotification);\n\n // Join the group again with updated botId and conversation_id\n this.notificationSocket.emit('joinData', { groupId });\n this.notificationSocket.emit('joinData', { groupId: groupId_org });\n\n // Re-register for common notifications\n this.notificationSocket.fromEvent(commonNotification).subscribe(\n (res) => {\n console.log('Received commonNotification:', res);\n this.conversationService.sendValidatedUserData(res);\n },\n (error) => {\n console.error('Error receiving commonNotification:', error);\n }\n );\n }\n\n private startReleasingMessages() {\n if (!this.intervalSetup) {\n setInterval(() => {\n if (this.messageQueue.length > 0) {\n const message = this.messageQueue.shift(); // Remove the first message from the queue\n // Handle the message here, e.g., send it to the server or process it\n console.log('Releasing message from queue:', message);\n // this.campaignService.sendValidatedUserData(message);\n }\n }, this.releaseInterval);\n this.intervalSetup = true; // Prevents multiple intervals\n }\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { HttpHeaders } from '@angular/common/http';\nimport { Observable, Subject, throwError } from 'rxjs';\nimport { AnyRecord } from 'dns';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BotsService {\n eventDescription = new Subject();\n bot_api = 'https://agent-api.hivegpt.ai/';\n constructor(private http: HttpClient) { }\n\n fetchSpeechAuthorizationToken(botId, apiKey, domain) {\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n 'hive-bot-id': botId,\n 'domain-authority': domain\n });\n\n const apiUrl = `${this.bot_api}speech/issue_token`;\n const url = `${apiUrl}`;\n return this.http.get(url, { headers }).pipe(\n map((resp: any) => {\n return resp.token;\n })\n );\n }\n\n getWorkflowsByOrgId(orgId: string): Observable<any> {\n const apiUrl = `${this.bot_api}workflows`;\n const url = `${apiUrl}?org_id=${orgId}`;\n return this.http.get(url).pipe(\n map((resp: any) => {\n return resp;\n })\n );\n }\n\n getWorkflowExecutionById(executionId: string): Observable<any> {\n const apiUrl = `${this.bot_api}workflows/execution/${executionId}`;\n return this.http.get(apiUrl).pipe(\n map((resp: any) => {\n return resp;\n })\n );\n }\n}","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * Audio analyzer for waveform visualization only.\n * Do NOT use isUserSpeaking$ for call state; speaking state must come from Daily.js.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class AudioAnalyzerService {\n private audioContext: AudioContext | null = null;\n private analyserNode: AnalyserNode | null = null;\n private dataArray: Uint8Array | null = null;\n private animationFrameId: number | null = null;\n private isRunning = false;\n\n private audioLevelsSubject = new BehaviorSubject<number[]>([]);\n private isUserSpeakingSubject = new BehaviorSubject<boolean>(false);\n\n // Adaptive noise floor detection\n private noiseFloor = 0;\n private noiseFloorSamples: number[] = [];\n private readonly NOISE_FLOOR_SAMPLE_COUNT = 30;\n private readonly SPEAKING_THRESHOLD_MULTIPLIER = 2.5;\n private readonly WAVEFORM_BAR_COUNT = 40;\n\n audioLevels$: Observable<number[]> = this.audioLevelsSubject.asObservable();\n isUserSpeaking$: Observable<boolean> = this.isUserSpeakingSubject.asObservable();\n\n start(stream: MediaStream): void {\n if (this.isRunning) {\n this.stop();\n }\n\n try {\n this.audioContext = new (window.AudioContext || (window as any).webkitAudioContext)();\n const source = this.audioContext.createMediaStreamSource(stream);\n \n this.analyserNode = this.audioContext.createAnalyser();\n this.analyserNode.fftSize = 2048;\n this.analyserNode.smoothingTimeConstant = 0.8;\n \n const bufferLength = this.analyserNode.frequencyBinCount;\n this.dataArray = new Uint8Array(bufferLength);\n \n source.connect(this.analyserNode);\n \n this.isRunning = true;\n this.noiseFloorSamples = [];\n this.noiseFloor = 0;\n \n this.analyze();\n } catch (error) {\n console.error('Error starting audio analyzer:', error);\n this.stop();\n }\n }\n\n stop(): void {\n this.isRunning = false;\n \n if (this.animationFrameId !== null) {\n cancelAnimationFrame(this.animationFrameId);\n this.animationFrameId = null;\n }\n\n if (this.analyserNode) {\n this.analyserNode.disconnect();\n this.analyserNode = null;\n }\n\n if (this.audioContext && this.audioContext.state !== 'closed') {\n this.audioContext.close().catch(console.error);\n this.audioContext = null;\n }\n\n this.dataArray = null;\n this.audioLevelsSubject.next([]);\n this.isUserSpeakingSubject.next(false);\n }\n\n private analyze(): void {\n if (!this.isRunning || !this.analyserNode || !this.dataArray) {\n return;\n }\n\n this.analyserNode.getByteTimeDomainData(this.dataArray);\n \n // Calculate RMS (Root Mean Square) volume\n const rms = this.calculateRMS(this.dataArray);\n \n // Learn noise floor during initial samples\n if (this.noiseFloorSamples.length < this.NOISE_FLOOR_SAMPLE_COUNT) {\n this.noiseFloorSamples.push(rms);\n if (this.noiseFloorSamples.length === this.NOISE_FLOOR_SAMPLE_COUNT) {\n // Calculate average noise floor\n const sum = this.noiseFloorSamples.reduce((a, b) => a + b, 0);\n this.noiseFloor = sum / this.NOISE_FLOOR_SAMPLE_COUNT;\n }\n } else {\n // Update noise floor adaptively (moving average)\n this.noiseFloor = this.noiseFloor * 0.99 + rms * 0.01;\n }\n\n // Detect if user is speaking\n const threshold = this.noiseFloor * this.SPEAKING_THRESHOLD_MULTIPLIER;\n const isSpeaking = rms > threshold;\n this.isUserSpeakingSubject.next(isSpeaking);\n\n // Generate waveform bars\n const bars = this.generateWaveformBars(this.dataArray);\n this.audioLevelsSubject.next(bars);\n\n this.animationFrameId = requestAnimationFrame(() => this.analyze());\n }\n\n private calculateRMS(data: Uint8Array): number {\n let sum = 0;\n for (let i = 0; i < data.length; i++) {\n const normalized = (data[i] - 128) / 128;\n sum += normalized * normalized;\n }\n return Math.sqrt(sum / data.length);\n }\n\n private generateWaveformBars(data: Uint8Array): number[] {\n const bars: number[] = [];\n const step = Math.floor(data.length / this.WAVEFORM_BAR_COUNT);\n \n for (let i = 0; i < this.WAVEFORM_BAR_COUNT; i++) {\n const index = i * step;\n const value = data[index];\n // Normalize to 0-100\n const normalized = Math.abs((value - 128) / 128) * 100;\n bars.push(Math.min(100, Math.max(0, normalized)));\n }\n \n return bars;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n/** WebSocket message types from backend signaling. */\nexport interface WsMessageRoomCreated {\n type: 'room_created';\n room_url: string;\n}\n\nexport interface WsMessageUserTranscript {\n type: 'user_transcript';\n text: string;\n final?: boolean;\n}\n\nexport interface WsMessageBotTranscript {\n type: 'bot_transcript';\n text: string;\n}\n\nexport type WsMessage =\n | WsMessageRoomCreated\n | WsMessageUserTranscript\n | WsMessageBotTranscript;\n\nexport interface TranscriptData {\n text: string;\n final: boolean;\n}\n\n/**\n * WebSocket-only client for voice agent signaling.\n * CRITICAL: Uses native WebSocket only. NO Socket.IO, NO ngx-socket-io.\n *\n * Responsibilities:\n * - Connect to ws_url (from POST /ai/ask-voice response)\n * - Parse JSON messages (room_created, user_transcript, bot_transcript)\n * - Emit roomCreated$, userTranscript$, botTranscript$\n * - NO audio logic, NO mic logic. Audio is handled by Daily.js (WebRTC).\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class WebSocketVoiceClientService {\n private ws: WebSocket | null = null;\n private roomCreatedSubject = new Subject<string>();\n private userTranscriptSubject = new Subject<TranscriptData>();\n private botTranscriptSubject = new Subject<string>();\n\n /** Emits room_url when backend sends room_created. */\n roomCreated$: Observable<string> = this.roomCreatedSubject.asObservable();\n\n /** Emits user transcript updates. */\n userTranscript$: Observable<TranscriptData> =\n this.userTranscriptSubject.asObservable();\n\n /** Emits bot transcript updates. */\n botTranscript$: Observable<string> =\n this.botTranscriptSubject.asObservable();\n\n /** Connect to signaling WebSocket. No audio over this connection. */\n connect(wsUrl: string): void {\n if (this.ws?.readyState === WebSocket.OPEN) {\n return;\n }\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n\n try {\n this.ws = new WebSocket(wsUrl);\n this.ws.onmessage = (event: MessageEvent) => {\n try {\n const msg = JSON.parse(event.data) as Record<string, unknown>;\n if (msg?.type === 'room_created') {\n const roomUrl = (msg.room_url ?? msg.roomUrl) as string | undefined;\n if (typeof roomUrl === 'string') {\n this.roomCreatedSubject.next(roomUrl);\n }\n } else if (msg?.type === 'user_transcript' && typeof msg.text === 'string') {\n this.userTranscriptSubject.next({\n text: msg.text,\n final: msg.final === true,\n });\n } else if (msg?.type === 'bot_transcript' && typeof msg.text === 'string') {\n this.botTranscriptSubject.next(msg.text);\n }\n } catch {\n // Ignore non-JSON or unknown messages\n }\n };\n this.ws.onerror = () => {\n this.disconnect();\n };\n this.ws.onclose = () => {\n this.ws = null;\n };\n } catch (err) {\n console.error('WebSocketVoiceClient: connect failed', err);\n this.ws = null;\n throw err;\n }\n }\n\n /** Disconnect and cleanup. */\n disconnect(): void {\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n\n /** Whether the WebSocket is open. */\n get isConnected(): boolean {\n return this.ws?.readyState === WebSocket.OPEN;\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport Daily from '@daily-co/daily-js';\nimport type { DailyCall, DailyParticipant } from '@daily-co/daily-js';\n\n/**\n * Daily.js WebRTC client for voice agent audio.\n * Responsibilities:\n * - Create and manage Daily CallObject\n * - Join Daily room using room_url\n * - Handle mic capture + speaker playback\n * - Provide real-time speaking detection via active-speaker-change (primary)\n * and track-started/track-stopped (fallback for immediate feedback)\n * - Expose speaking$ (bot speaking), userSpeaking$ (user speaking), micMuted$\n * - Expose localStream$ for waveform visualization (AudioAnalyzerService)\n *\n * Speaking state flips immediately when agent audio starts playing.\n * If user speaks while bot is talking, state switches to listening.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DailyVoiceClientService {\n private callObject: DailyCall | null = null;\n private localStream: MediaStream | null = null;\n private localSessionId: string | null = null;\n\n private speakingSubject = new BehaviorSubject<boolean>(false);\n private userSpeakingSubject = new BehaviorSubject<boolean>(false);\n private micMutedSubject = new BehaviorSubject<boolean>(false);\n private localStreamSubject = new BehaviorSubject<MediaStream | null>(null);\n\n /** True when bot (remote participant) is the active speaker. */\n speaking$: Observable<boolean> = this.speakingSubject.asObservable();\n\n /** True when user (local participant) is the active speaker. */\n userSpeaking$: Observable<boolean> = this.userSpeakingSubject.asObservable();\n\n /** True when mic is muted. */\n micMuted$: Observable<boolean> = this.micMutedSubject.asObservable();\n\n /** Emits local mic stream for waveform visualization. */\n localStream$: Observable<MediaStream | null> =\n this.localStreamSubject.asObservable();\n\n constructor(private ngZone: NgZone) {}\n\n /**\n * Connect to Daily room. Acquires mic first for waveform, then joins with audio.\n * @param roomUrl Daily room URL (from room_created)\n * @param token Optional meeting token\n */\n async connect(roomUrl: string, token?: string): Promise<void> {\n if (this.callObject) {\n await this.disconnect();\n }\n\n try {\n // Get mic stream for both Daily and waveform (single capture)\n const stream = await navigator.mediaDevices.getUserMedia({ audio: true });\n const audioTrack = stream.getAudioTracks()[0];\n if (!audioTrack) {\n stream.getTracks().forEach((t) => t.stop());\n throw new Error('No audio track');\n }\n\n this.localStream = stream;\n this.localStreamSubject.next(stream);\n\n // Create audio-only call object\n // videoSource: false = no camera, audioSource = our mic track\n const callObject = Daily.createCallObject({\n videoSource: false,\n audioSource: audioTrack,\n });\n\n this.callObject = callObject;\n\n this.setupEventHandlers(callObject);\n\n // Join room; Daily handles playback of remote (bot) audio automatically\n await callObject.join({ url: roomUrl, token });\n\n const participants = callObject.participants();\n if (participants?.local) {\n this.localSessionId = participants.local.session_id;\n }\n\n // Initial mute state: Daily starts with audio on\n this.micMutedSubject.next(!callObject.localAudio());\n } catch (err) {\n this.cleanup();\n throw err;\n }\n }\n\n private setupEventHandlers(call: DailyCall): void {\n // active-speaker-change: primary source for real-time speaking detection.\n // Emits when the loudest participant changes; bot speaking = remote is active.\n call.on('active-speaker-change', (event: { activeSpeaker?: { peerId?: string } }) => {\n this.ngZone.run(() => {\n const peerId = event?.activeSpeaker?.peerId;\n if (!peerId || !this.localSessionId) {\n this.speakingSubject.next(false);\n this.userSpeakingSubject.next(false);\n return;\n }\n const isLocal = peerId === this.localSessionId;\n this.userSpeakingSubject.next(isLocal);\n this.speakingSubject.next(!isLocal);\n });\n });\n\n // track-started / track-stopped: fallback for immediate feedback when\n // remote (bot) audio track starts or stops. Ensures talking indicator\n // flips as soon as agent audio begins, without waiting for active-speaker-change.\n call.on('track-started', (event: { participant?: DailyParticipant | null; type?: string; track?: MediaStreamTrack }) => {\n this.ngZone.run(() => {\n const p = event?.participant;\n const type = event?.type ?? event?.track?.kind;\n if (p && !p.local && type === 'audio') {\n this.speakingSubject.next(true);\n }\n });\n });\n\n call.on('track-stopped', (event: { participant?: DailyParticipant | null; type?: string; track?: MediaStreamTrack }) => {\n this.ngZone.run(() => {\n const p = event?.participant;\n const type = event?.type ?? event?.track?.kind;\n if (p && !p.local && type === 'audio') {\n this.speakingSubject.next(false);\n }\n });\n });\n\n call.on('left-meeting', () => {\n this.ngZone.run(() => this.cleanup());\n });\n\n call.on('error', (event?: { errorMsg?: string }) => {\n this.ngZone.run(() => {\n console.error('DailyVoiceClient: Daily error', event?.errorMsg ?? event);\n this.cleanup();\n });\n });\n }\n\n /** Set mic muted state. */\n setMuted(muted: boolean): void {\n if (!this.callObject) return;\n this.callObject.setLocalAudio(!muted);\n this.micMutedSubject.next(muted);\n }\n\n /** Disconnect and cleanup. */\n async disconnect(): Promise<void> {\n if (!this.callObject) {\n this.cleanup();\n return;\n }\n try {\n await this.callObject.leave();\n } catch (e) {\n // ignore\n }\n this.cleanup();\n }\n\n private cleanup(): void {\n if (this.callObject) {\n this.callObject.destroy().catch(() => {});\n this.callObject = null;\n }\n if (this.localStream) {\n this.localStream.getTracks().forEach((t) => t.stop());\n this.localStream = null;\n }\n this.localSessionId = null;\n this.speakingSubject.next(false);\n this.userSpeakingSubject.next(false);\n this.localStreamSubject.next(null);\n // Keep last micMuted state; will reset on next connect\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable, Subject, Subscription } from 'rxjs';\nimport { filter, take, takeUntil } from 'rxjs/operators';\nimport { AudioAnalyzerService } from './audio-analyzer.service';\nimport { WebSocketVoiceClientService } from './websocket-voice-client.service';\nimport { DailyVoiceClientService } from './daily-voice-client.service';\n\nexport type CallState =\n | 'idle'\n | 'connecting'\n | 'connected'\n | 'listening'\n | 'talking'\n | 'ended';\n\nexport interface TranscriptData {\n text: string;\n final: boolean;\n}\n\n/**\n * Voice agent orchestrator. Coordinates WebSocket (signaling) and Daily.js (WebRTC audio).\n *\n * CRITICAL: This service must NEVER use Socket.IO or ngx-socket-io. Voice flow uses only:\n * - Native WebSocket (WebSocketVoiceClientService) for signaling (room_created, transcripts)\n * - Daily.js (DailyVoiceClientService) for WebRTC audio. Audio does NOT flow over WebSocket.\n *\n * - Maintains callState, statusText, duration, isMicMuted, isUserSpeaking, audioLevels\n * - Uses WebSocket for room_created and transcripts only (no audio)\n * - Uses Daily.js for all audio, mic, and real-time speaking detection\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class VoiceAgentService implements OnDestroy {\n private callStateSubject = new BehaviorSubject<CallState>('idle');\n private statusTextSubject = new BehaviorSubject<string>('');\n private durationSubject = new BehaviorSubject<string>('00:00');\n private isMicMutedSubject = new BehaviorSubject<boolean>(false);\n private isUserSpeakingSubject = new BehaviorSubject<boolean>(false);\n private audioLevelsSubject = new BehaviorSubject<number[]>([]);\n private userTranscriptSubject = new Subject<TranscriptData>();\n private botTranscriptSubject = new Subject<string>();\n\n private callStartTime = 0;\n private durationInterval: ReturnType<typeof setInterval> | null = null;\n\n private subscriptions = new Subscription();\n private destroy$ = new Subject<void>();\n\n callState$: Observable<CallState> = this.callStateSubject.asObservable();\n statusText$: Observable<string> = this.statusTextSubject.asObservable();\n duration$: Observable<string> = this.durationSubject.asObservable();\n isMicMuted$: Observable<boolean> = this.isMicMutedSubject.asObservable();\n isUserSpeaking$: Observable<boolean> = this.isUserSpeakingSubject.asObservable();\n audioLevels$: Observable<number[]> = this.audioLevelsSubject.asObservable();\n userTranscript$: Observable<TranscriptData> =\n this.userTranscriptSubject.asObservable();\n botTranscript$: Observable<string> = this.botTranscriptSubject.asObservable();\n\n constructor(\n private audioAnalyzer: AudioAnalyzerService,\n private wsClient: WebSocketVoiceClientService,\n private dailyClient: DailyVoiceClientService\n ) {\n // Waveform visualization only - do NOT use for speaking state\n this.subscriptions.add(\n this.audioAnalyzer.audioLevels$.subscribe((levels) =>\n this.audioLevelsSubject.next(levels)\n )\n );\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.subscriptions.unsubscribe();\n this.disconnect();\n }\n\n /** Reset to idle state (e.g. when modal opens so user can click Start Call). */\n resetToIdle(): void {\n if (this.callStateSubject.value === 'idle') return;\n this.stopDurationTimer();\n this.audioAnalyzer.stop();\n this.wsClient.disconnect();\n // Fire-and-forget: Daily disconnect is async; connect() will await if needed\n void this.dailyClient.disconnect();\n this.callStateSubject.next('idle');\n this.statusTextSubject.next('');\n this.durationSubject.next('0:00');\n }\n\n async connect(\n apiUrl: string,\n token: string,\n botId: string,\n conversationId: string,\n apiKey: string,\n eventToken: string,\n eventUrl: string,\n domainAuthority: string\n ): Promise<void> {\n if (this.callStateSubject.value !== 'idle') {\n console.warn('Call already in progress');\n return;\n }\n\n try {\n this.callStateSubject.next('connecting');\n this.statusTextSubject.next('Connecting...');\n\n const baseUrl = apiUrl.replace(/\\/$/, '');\n const postUrl = `${baseUrl}/ai/ask-voice`;\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n 'domain-authority': domainAuthority,\n 'eventtoken': eventToken,\n 'eventurl': eventUrl,\n 'hive-bot-id': botId,\n 'x-api-key': apiKey,\n };\n\n // POST to get ws_url for signaling\n const res = await fetch(postUrl, {\n method: 'POST',\n headers,\n body: JSON.stringify({\n bot_id: botId,\n conversation_id: conversationId,\n voice: 'alloy',\n }),\n });\n\n if (!res.ok) {\n throw new Error(`HTTP ${res.status}`);\n }\n\n const json = await res.json();\n // Use only WebSocket URL. Do NOT use any Socket.IO URL (e.g. socket_io_url).\n const wsUrl = json?.ws_url ?? json?.rn_ws_url;\n if (!wsUrl || typeof wsUrl !== 'string') {\n throw new Error('No ws_url in response');\n }\n\n // Subscribe to room_created BEFORE connecting to avoid race\n this.wsClient.roomCreated$\n .pipe(take(1), takeUntil(this.destroy$))\n .subscribe(async (roomUrl) => {\n try {\n await this.onRoomCreated(roomUrl);\n } catch (err) {\n console.error('Daily join failed:', err);\n this.callStateSubject.next('ended');\n this.statusTextSubject.next('Connection failed');\n await this.disconnect();\n throw err;\n }\n });\n\n // Forward transcripts from WebSocket\n this.subscriptions.add(\n this.wsClient.userTranscript$\n .pipe(takeUntil(this.destroy$))\n .subscribe((t) => this.userTranscriptSubject.next(t))\n );\n this.subscriptions.add(\n this.wsClient.botTranscript$\n .pipe(takeUntil(this.destroy$))\n .subscribe((t) => this.botTranscriptSubject.next(t))\n );\n\n // Connect signaling WebSocket (no audio over WS)\n this.wsClient.connect(wsUrl);\n } catch (error) {\n console.error('Error connecting voice agent:', error);\n this.callStateSubject.next('ended');\n await this.disconnect();\n this.statusTextSubject.next('Connection failed');\n throw error;\n }\n }\n\n private async onRoomCreated(roomUrl: string): Promise<void> {\n // Connect Daily.js for WebRTC audio\n await this.dailyClient.connect(roomUrl);\n\n // Waveform: use local mic stream from Daily client\n this.dailyClient.localStream$\n .pipe(filter((s): s is MediaStream => s != null), take(1))\n .subscribe((stream) => {\n this.audioAnalyzer.start(stream);\n });\n\n // Speaking state from Daily only (NOT from AudioAnalyzer).\n // User speaking overrides bot talking: if user speaks while bot talks, state = listening.\n this.subscriptions.add(\n this.dailyClient.userSpeaking$.subscribe((s) =>\n this.isUserSpeakingSubject.next(s)\n )\n );\n this.subscriptions.add(\n combineLatest([\n this.dailyClient.speaking$,\n this.dailyClient.userSpeaking$,\n ]).subscribe(([bot, user]) => {\n if (user) {\n this.callStateSubject.next('listening');\n } else if (bot) {\n this.callStateSubject.next('talking');\n } else if (\n this.callStateSubject.value === 'talking' ||\n this.callStateSubject.value === 'listening'\n ) {\n this.callStateSubject.next('connected');\n }\n })\n );\n\n this.subscriptions.add(\n this.dailyClient.micMuted$.subscribe((muted) =>\n this.isMicMutedSubject.next(muted)\n )\n );\n\n this.callStateSubject.next('connected');\n this.statusTextSubject.next('Connected');\n this.callStartTime = Date.now();\n this.startDurationTimer();\n }\n\n async disconnect(): Promise<void> {\n this.stopDurationTimer();\n this.audioAnalyzer.stop();\n\n // Daily first, then WebSocket\n await this.dailyClient.disconnect();\n this.wsClient.disconnect();\n\n this.callStateSubject.next('ended');\n this.statusTextSubject.next('Call Ended');\n }\n\n toggleMic(): void {\n const current = this.isMicMutedSubject.value;\n this.dailyClient.setMuted(!current);\n }\n\n private startDurationTimer(): void {\n const updateDuration = () => {\n if (this.callStartTime > 0) {\n const elapsed = Math.floor((Date.now() - this.callStartTime) / 1000);\n const minutes = Math.floor(elapsed / 60);\n const seconds = elapsed % 60;\n this.durationSubject.next(\n `${minutes}:${String(seconds).padStart(2, '0')}`\n );\n }\n };\n updateDuration();\n this.durationInterval = setInterval(updateDuration, 1000);\n }\n\n private stopDurationTimer(): void {\n if (this.durationInterval) {\n clearInterval(this.durationInterval);\n this.durationInterval = null;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface VoiceModalConfig {\n apiUrl: string;\n token: string;\n botId: string;\n conversationId: string;\n apiKey: string;\n eventToken: string;\n eventUrl: string;\n domainAuthority: string;\n agentName: string;\n agentRole: string;\n agentAvatar?: string;\n}\n\nexport const VOICE_MODAL_CONFIG = new InjectionToken<VoiceModalConfig>('VOICE_MODAL_CONFIG');\nexport const VOICE_MODAL_CLOSE_CALLBACK = new InjectionToken<() => void>('VOICE_MODAL_CLOSE_CALLBACK');\n","import { Component, Input, OnInit, OnDestroy, Output, EventEmitter, Injector } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { VoiceAgentService, CallState } from '../../services/voice-agent.service';\nimport { AudioAnalyzerService } from '../../services/audio-analyzer.service';\nimport { VOICE_MODAL_CONFIG, VOICE_MODAL_CLOSE_CALLBACK, VoiceModalConfig } from '../../voice-modal-tokens';\n\n@Component({\n selector: 'hivegpt-voice-agent-modal',\n templateUrl: './voice-agent-modal.component.html',\n styleUrls: ['./voice-agent-modal.component.scss']\n})\nexport class VoiceAgentModalComponent implements OnInit, OnDestroy {\n @Output() close = new EventEmitter<void>();\n @Input() apiUrl!: string;\n @Input() token!: string;\n @Input() botId!: string;\n @Input() conversationId!: string;\n @Input() apiKey: string = '';\n @Input() eventToken: string = '';\n @Input() eventUrl: string = '';\n @Input() domainAuthority: string = 'prod-lite';\n @Input() agentName: string = 'AI Assistant';\n @Input() agentRole: string = 'AI Agent Specialist';\n @Input() agentAvatar?: string;\n\n private injectedConfig: VoiceModalConfig | null = null;\n private onCloseCallback: (() => void) | null = null;\n\n constructor(\n public voiceAgentService: VoiceAgentService,\n public audioAnalyzer: AudioAnalyzerService,\n private injector: Injector\n ) {}\n\n /** Hardcoded voice agent avatar (Nia). */\n readonly displayAvatarUrl = 'https://www.jotform.com/uploads/mehmetkarakasli/form_files/1564593667676a8e85f23758.86945537_icon.png';\n\n callState: CallState = 'idle';\n statusText: string = '';\n duration: string = '00:00';\n isMicMuted: boolean = false;\n isUserSpeaking: boolean = false;\n audioLevels: number[] = [];\n isSpeaking: boolean = false;\n\n /** Once user or bot has spoken, show \"Ready\" instead of \"Connected\" when idle in call. */\n private hasLeftConnectedOnce: boolean = false;\n\n private subscriptions: Subscription[] = [];\n\n ngOnInit(): void {\n // When opened via Overlay, config is provided by injection\n this.injectedConfig = this.injector.get(VOICE_MODAL_CONFIG, null);\n this.onCloseCallback = this.injector.get(VOICE_MODAL_CLOSE_CALLBACK, null);\n if (this.injectedConfig) {\n this.apiUrl = this.injectedConfig.apiUrl;\n this.token = this.injectedConfig.token;\n this.botId = this.injectedConfig.botId;\n this.conversationId = this.injectedConfig.conversationId;\n this.apiKey = this.injectedConfig.apiKey ?? '';\n this.eventToken = this.injectedConfig.eventToken ?? '';\n this.eventUrl = this.injectedConfig.eventUrl ?? '';\n this.domainAuthority = this.injectedConfig.domainAuthority ?? 'prod-lite';\n this.agentName = this.injectedConfig.agentName ?? this.agentName;\n this.agentRole = this.injectedConfig.agentRole ?? this.agentRole;\n this.agentAvatar = this.injectedConfig.agentAvatar;\n }\n\n // Subscribe to observables\n this.subscriptions.push(\n this.voiceAgentService.callState$.subscribe(state => {\n this.callState = state;\n this.isSpeaking = state === 'talking';\n if (state === 'listening' || state === 'talking') {\n this.hasLeftConnectedOnce = true;\n }\n if (state === 'idle' || state === 'ended') {\n this.hasLeftConnectedOnce = false;\n }\n })\n );\n\n this.subscriptions.push(\n this.voiceAgentService.statusText$.subscribe(text => {\n this.statusText = text;\n })\n );\n\n this.subscriptions.push(\n this.voiceAgentService.duration$.subscribe(duration => {\n this.duration = duration;\n })\n );\n\n this.subscriptions.push(\n this.voiceAgentService.isMicMuted$.subscribe(muted => {\n this.isMicMuted = muted;\n })\n );\n\n this.subscriptions.push(\n this.voiceAgentService.isUserSpeaking$.subscribe(speaking => {\n this.isUserSpeaking = speaking;\n })\n );\n\n this.subscriptions.push(\n this.voiceAgentService.audioLevels$.subscribe(levels => {\n this.audioLevels = levels;\n })\n );\n\n // Modal opens in idle state; user clicks \"Start Call\" to connect (no auto-connect).\n this.voiceAgentService.resetToIdle();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.disconnect();\n }\n\n isConnecting: boolean = false;\n\n async startCall(): Promise<void> {\n if (this.isConnecting || (this.callState !== 'idle' && this.callState !== 'ended')) return;\n this.isConnecting = true;\n try {\n await this.voiceAgentService.connect(\n this.apiUrl,\n this.token,\n this.botId,\n this.conversationId,\n this.apiKey,\n this.eventToken,\n this.eventUrl,\n this.domainAuthority\n );\n } catch (error) {\n console.error('Failed to connect voice agent:', error);\n } finally {\n this.isConnecting = false;\n }\n }\n\n async disconnect(): Promise<void> {\n await this.voiceAgentService.disconnect();\n }\n\n toggleMic(): void {\n this.voiceAgentService.toggleMic();\n }\n\n /** Map audio level (0–100) to waveform bar height in px (3–20). */\n getWaveformHeight(level: number): number {\n const n = Math.min(100, Math.max(0, level ?? 0));\n return 3 + (n / 100) * 17;\n }\n\n /** Status label for active call. \"Connected\" only once; then \"Ready\" when idle in call. */\n get statusLabel(): string {\n if (this.callState === 'connecting') return this.statusText || 'Connecting...';\n if (this.callState === 'talking') return 'Talking...';\n if (this.callState === 'listening') return 'Listening';\n if (this.callState === 'connected') {\n return this.hasLeftConnectedOnce ? 'Listening' : 'Connected';\n }\n return this.statusText || '';\n }\n\n /** Call Again: reset to idle then start a new call. */\n callAgain(): void {\n this.voiceAgentService.resetToIdle();\n this.startCall();\n }\n\n /** Back to Chat: close modal and disconnect. */\n backToChat(): void {\n this.endCall();\n }\n\n /** End call but keep modal open to show Call Ended + Call Again / Back to Chat. */\n hangUp(): void {\n this.disconnect();\n }\n\n endCall(): void {\n this.disconnect();\n this.onCloseCallback?.();\n this.close.emit();\n }\n}\n","// import { Platform } from '@angular/cdk/platform';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { TranslationService } from '../translations/translation.service';\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Injector,\n Input,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n ViewContainerRef,\n} from '@angular/core';\nimport { MatDrawer } from '@angular/material/sidenav';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { of, Subscription } from 'rxjs';\nimport { catchError, switchMap } from 'rxjs/operators';\nimport { formatNow, formatTimeStamps } from '../../utils/utils';\nimport {\n dev_environment,\n prod_environment,\n} from '../../../environments/environment';\nimport { ConversationService } from '../conversation.service';\nimport { Observable } from 'rxjs';\nimport { SocketService } from '../socket-service.service';\n\nimport { FormBuilder, Validators } from '@angular/forms';\nimport * as SpeechSDK from 'microsoft-cognitiveservices-speech-sdk';\nimport { BotsService } from '../bot.service';\nimport * as marked from 'marked'; // Import marked\nimport { VoiceAgentService } from '../voice-agent/services/voice-agent.service';\nimport { VoiceAgentModalComponent } from '../voice-agent/components/voice-agent-modal/voice-agent-modal.component';\nimport {\n VOICE_MODAL_CONFIG,\n VOICE_MODAL_CLOSE_CALLBACK,\n VoiceModalConfig,\n} from '../voice-agent/voice-modal-tokens';\n\n@Component({\n selector: 'hivegpt-chat-drawer-package',\n templateUrl: './chat-drawer.component.html',\n styleUrls: ['./chat-drawer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChatDrawerComponent implements OnInit, OnChanges {\n @ViewChild('chatMain') private chatMain: ElementRef;\n @ViewChild('myInput', { static: false })\n myInput!: ElementRef<HTMLTextAreaElement>; // Reference to the textarea\n @ViewChildren('closeplaygroundbutton')\n closePlaygroundButtons: QueryList<ElementRef>;\n @ViewChild('drawer') drawer!: MatDrawer;\n @ViewChild('sourcesDrawer') sourcesDrawer!: MatDrawer;\n @ViewChild('editorsDrawer') editorsDrawer!: MatDrawer;\n private bodyOverflowClass = 'body-overflow-hidden';\n isCollapsedTrue = false;\n @Input() copilotName: string = 'HiveXGPT';\n @Input() firstName!: string;\n @Input() lastName!: string;\n @Input() apiKey!: string;\n @Input() bgBubbleAi!: string;\n @Input() bgBubbleUser!: string;\n @Input() bgGradient!: string[];\n @Input() botName!: string;\n @Input() botSkills!: string;\n @Input() botId!: string;\n @Input() orgId!: string;\n @Input() closeButtonColor!: string;\n @Input() closeButtonbgColor!: string;\n @Input() credentials!: [];\n @Input() dateTimeColor!: string;\n @Input() dateTextColor!: string;\n @Input() eventId!: string;\n @Input() eventUrl!: string;\n @Input() eventToken!: string;\n @Input() workspaceToken!: string;\n @Input() s27Token!: string;\n @Input() eventName!: string;\n @Input() botIcon!: string;\n @Input() formFieldBgColor!: string;\n @Input() formFieldTextColor!: string;\n @Input() fullView!: boolean;\n @Input() gradientColors!: string[];\n @Input() greeting!: string;\n @Input() messageTextColorAi!: string;\n @Input() messageTextColorUser!: string;\n @Input() rules!: string;\n @Input() sendButtonColor!: string;\n @Input() sendButtonTextColor!: string;\n @Input() showClose!: boolean;\n @Input() thumbsDownMessages!: string[];\n @Input() thumbsUpMessage!: string;\n @Input() timezone!: string;\n @Input() unknownResponses!: [];\n @Input() useOpenAi!: boolean;\n @Input() userId!: string;\n @Input() isDev!: boolean;\n\n @Input() againButtonColor!: string[];\n @Input() againButtonTextColor!: string[];\n @Output() feedbackEvent = new EventEmitter<string>();\n @Output() onCloseEvent = new EventEmitter<void>();\n @Output() openPage = new EventEmitter<any>();\n @Output() sessionActions = new EventEmitter<any>();\n @Output() closeBot = new EventEmitter<any>();\n @Output() connectWithUser = new EventEmitter<any>();\n @Output() scheduleMeeting = new EventEmitter<string>();\n @Output() refreshToken = new EventEmitter<any>();\n @Output() openSupport = new EventEmitter<any>();\n\n autogenKey = 'Autogen_eDJTtEU-NB0RtIpzq1w';\n addToMyAgendaAction = 'add_to_my_agenda';\n myUpcomingSessionAction = 'my_upcomming_session';\n connectOrFollowAction = 'connect_or_follow';\n aiResponse: string = '';\n chatLog: any[] = [];\n decoder = new TextDecoder();\n feedbackDone: boolean = false;\n greetingMsg: string = '';\n hasBackdropValue: boolean = false;\n input: string = '';\n listenerAdded = false;\n loading: boolean = false;\n mode: string = 'over';\n quickPrompts: any[] = [];\n thumbsDownMsgIndex = 0;\n userName: string = '';\n showStartAgain: boolean = false;\n isIOSDevice: boolean = false;\n showFeedBackIconsIndex: number | null = null;\n temperature: number = 1;\n speakers = [];\n environment: {\n USERS_API;\n BASE_URL;\n AGENTS_API;\n };\n pendingRequests: any;\n myConnections: any;\n conversationKey: string;\n conSessionKey: string = '';\n isFetchDataFor: boolean;\n is401: boolean;\n msg: any;\n chat: any;\n isWorkflowOpen: boolean;\n orgWorkflows: any;\n openWorkflowInput: boolean;\n selectedWorkflow: any;\n workflowForm: any;\n currentWorkflowActionProgress: number = 0;\n currentWorkflowAction: string = '';\n executingWorkflow: boolean;\n workflowExecutionDetails: any;\n showWorkflowExecutionDetails: any;\n currentWorkflowExecutionDetails: any;\n\n speechConfig: SpeechSDK.SpeechConfig;\n recognizer: SpeechSDK.SpeechRecognizer;\n recognizedText: string = '';\n authorizationToken: string = '';\n region: string = 'westeurope'; // Set your Azure region here\n isRecording: boolean;\n isVoiceModalOpen: boolean = false;\n private voiceModalOverlayRef: OverlayRef | null = null;\n private voiceTranscriptSubscriptions: Subscription[] = [];\n\n constructor(\n private fb: FormBuilder,\n private botService: BotsService,\n private cdr: ChangeDetectorRef,\n private http: HttpClient,\n private sanitizer: DomSanitizer,\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private socketService: SocketService,\n private conversationService: ConversationService, // private platform: Platform\n private translationService: TranslationService,\n private voiceAgentService: VoiceAgentService,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private injector: Injector\n ) {\n this.chatMain = new ElementRef(null);\n\n // if (this.platform.IOS) {\n // this.isIOSDevice = true;\n // }\n }\n getTranslation(key: string) {\n return this.translationService.getTranslation(key);\n }\n ngOnChanges(changes: SimpleChanges): void {\n // Handle eventId changes to update translation service\n if (changes.eventId && changes.eventId.currentValue) {\n this.translationService.setEventId(changes.eventId.currentValue);\n }\n\n if (changes.s27Token) {\n if (changes.s27Token.currentValue != changes.s27Token.previousValue) {\n this.s27Token = changes.s27Token.currentValue;\n\n console.log('isFetchDataFor: ', this.isFetchDataFor);\n console.log('msg: ', this.msg);\n console.log('chat: ', this.chat);\n if (this.is401) {\n if (this.isFetchDataFor) {\n this.fetchDataFor(this.msg, this.chat);\n } else {\n this.fetchData(this.msg);\n }\n }\n }\n }\n\n // Do NOT call initializeSocket() here. Socket.IO is for chat only; we defer\n // until the user actually uses chat (send message or start new conversation)\n // so that voice-only usage never triggers Socket.IO (avoids v2/v3 mismatch error).\n if (changes.orgId && changes.orgId.currentValue != changes.orgId.previousValue) {\n this.chatSocketInitialized = false;\n }\n }\n\n domainAuthorityValue: any = 'prod-lite';\n\n ngOnInit(): void {\n // Set the eventId in translation service to get the correct language from localStorage\n if (this.eventId) {\n this.translationService.setEventId(this.eventId);\n }\n\n this.environment = this.isDev ? dev_environment : prod_environment;\n\n const domain = window.location.hostname;\n\n // Determine the header value based on the domain\n\n if (domain.includes('pre-app.social27.com')) {\n this.domainAuthorityValue = 'pre-prod-lite';\n } else if (domain.includes('app.social27.com')) {\n this.domainAuthorityValue = 'prod-lite';\n } else if (domain.includes('hivegpt.io')) {\n this.domainAuthorityValue = 'hivegpt';\n }\n\n // this.fetchMyConnections().subscribe();\n // this.fetchPendingRequests().subscribe();\n\n this.changeTemperature(this.temperature);\n this.fetchBotConfig().subscribe(\n (res) => {\n this.cdr.markForCheck();\n\n this.fetchChatHistory().subscribe(\n (response) => {\n this.loading = false;\n this.mapChatHistory(response);\n this.cdr.markForCheck();\n },\n (err) => {\n console.error('Error fetching chat history:', err);\n }\n );\n },\n (err) => {\n console.error('Error fetching chat history:', err);\n }\n );\n // this.fetchAgents();\n // this.fetchEditorContent();\n this.cdr.markForCheck();\n // this.initializeSocket();\n this.botService\n .fetchSpeechAuthorizationToken(\n this.botId,\n this.apiKey,\n this.domainAuthorityValue\n )\n .subscribe((token) => {\n this.authorizationToken = token;\n this.initializeSpeechRecognizer(token);\n });\n }\n\n private eventSubscription: Subscription;\n /** True after Socket has been initialized for chat (avoids connecting on voice-only usage). */\n private chatSocketInitialized = false;\n\n /**\n * Call before chat actions so Socket.IO is used only for chat, not for voice.\n * Voice agent uses native WebSocket + Daily.js only; Socket.IO must not run during voice flow.\n */\n private ensureChatSocket(): void {\n if (this.chatSocketInitialized || !this.orgId) return;\n this.chatSocketInitialized = true;\n this.initializeSocket();\n }\n\n initializeSocket() {\n try {\n this.socketService.disconnectSocketConnection();\n } catch (error) {}\n setTimeout(() => {\n this.socketService.connectSocketConnection();\n setTimeout(() => {\n console.log('YES INIT');\n const conversation_id = this.conversationService.getKey(this.botId);\n\n this.socketService.registerUserSpecificHiveSocket(\n this.botId,\n conversation_id,\n this.orgId\n );\n setTimeout(() => {\n this.listenSockets();\n }, 300);\n }, 200);\n }, 300);\n }\n\n subscriptionNew: any;\n socketData: any;\n\n listenSockets() {\n if (this.eventSubscription) {\n this.eventSubscription.unsubscribe();\n }\n console.log('Listen Socket');\n this.eventSubscription = this.conversationService\n .getUserSpecificNotification()\n .subscribe(\n (res) => {\n console.log('Listen Socket response');\n console.log(res);\n // Check if OtherFields exists in the response\n if (res?.m?.OtherFields?.workflow_id) {\n const {\n percentage,\n output,\n action_name,\n current_action_name,\n workflow_execution_id,\n time_stamp,\n } = res?.m?.OtherFields;\n\n this.currentWorkflowActionProgress = percentage;\n this.currentWorkflowAction = action_name;\n\n const actionIndex = this.workflowExecutionDetails.Actions.findIndex(\n (a) => a.Name == current_action_name\n );\n\n if (actionIndex !== -1) {\n this.workflowExecutionDetails.Actions[actionIndex]['Output'] =\n output;\n this.workflowExecutionDetails.Actions[actionIndex][\n 'InsertTimeStamp'\n ] = formatTimeStamps(this.timezone, time_stamp);\n } else {\n console.error(`Action with name ${action_name} not found`);\n }\n\n this.currentWorkflowExecutionDetails =\n this.workflowExecutionDetails;\n\n if (this.currentWorkflowActionProgress == 100) {\n this.chatLog[this.chatLog.length - 1]['WorkflowExecutionId'] =\n workflow_execution_id;\n this.isChatingWithAi = false;\n this.executingWorkflow = false;\n this.focusOnTextarea();\n }\n\n this.cdr.detectChanges();\n } else if (res?.m?.OtherFields) {\n const {\n conversation_id,\n bot_id,\n message_id,\n answer,\n web_results,\n search_results,\n graphs,\n execution_graphs,\n suggestions,\n } = res?.m?.OtherFields;\n console.log('message_id1');\n console.log(res?.m?.OtherFields);\n var currentChatMessage = this.chatLog.find(\n (p) => p._id == message_id\n );\n console.log(this.chatLog);\n if (!currentChatMessage) {\n console.log('message_id2');\n console.log(message_id);\n currentChatMessage = {\n _id: message_id,\n type: 'ai',\n time: formatNow(this.timezone),\n };\n\n this.chatLog.push(currentChatMessage);\n\n this.showFeedBackIconsIndex = this.chatLog.length - 1;\n console.log('message_id3');\n console.log(message_id);\n this.cdr.detectChanges();\n }\n\n // Handle the fields based on their presence\n if (search_results && Array.isArray(search_results)) {\n console.log('Online Search Terms:', search_results);\n currentChatMessage.searchTerms = search_results;\n this.cdr.detectChanges();\n }\n\n if (web_results && Array.isArray(web_results)) {\n console.log('Web Results:', web_results);\n currentChatMessage.sourcesList = web_results;\n currentChatMessage.displayedSources = web_results?.slice(0, 3); // First 3 cards\n currentChatMessage.remainingSources = web_results?.slice(3); // Remaining items\n this.cdr.detectChanges();\n }\n\n if (answer) {\n this.isChatingWithAi = false;\n console.log('Answer:', answer);\n\n currentChatMessage.message =\n this.processMessageForDisplay(answer);\n this.cdr.detectChanges();\n this.scrollToBottom();\n this.focusOnTextarea();\n }\n\n if (graphs && Array.isArray(graphs)) {\n console.log('Graphs:', graphs);\n currentChatMessage.graphs = graphs;\n this.cdr.detectChanges();\n }\n\n if (execution_graphs && Array.isArray(execution_graphs)) {\n console.log('Execution Graphs:', execution_graphs);\n currentChatMessage.executionGraphs = execution_graphs;\n this.cdr.detectChanges();\n }\n\n if (suggestions && Array.isArray(suggestions)) {\n console.log('suggestions:', suggestions);\n currentChatMessage.relatedListItems = suggestions;\n this.cdr.detectChanges();\n // Process online search terms as needed\n }\n\n // Add any other fields and their processing here\n } else {\n console.warn('OtherFields is missing in the response');\n }\n },\n (err) => {\n this.eventSubscription.unsubscribe();\n console.error('Error in fetching data from socket', err);\n }\n );\n }\n\n initializeSocketAndListen() {}\n handleEvent(data: any, type: string) {\n switch (type) {\n case 'webresult':\n break;\n case 'answer':\n break;\n case 'graph':\n break;\n default:\n break;\n }\n }\n ngOnDestroy(): void {\n if (this.eventSubscription) {\n this.eventSubscription.unsubscribe();\n }\n this.voiceTranscriptSubscriptions.forEach(sub => sub.unsubscribe());\n this.socketService.disconnectSocketConnection();\n //this.socketService.close();\n }\n changeTemperature(newTemperature: number) {\n if (this.loading) return;\n this.temperature = newTemperature;\n const wrapper = document.querySelector('.hivegpt-chat-wrapper');\n // Remove existing theme classes from body\n wrapper?.classList.remove('creative', 'balanced', 'precise');\n\n switch (newTemperature) {\n case 0:\n wrapper?.classList.add('creative');\n break;\n case 1:\n wrapper?.classList.add('balanced');\n break;\n case 2:\n wrapper?.classList.add('precise');\n break;\n default:\n break;\n }\n }\n\n onStartAgain() {\n if (this.loading) return;\n this.showStartAgain = false;\n this.chatLog = [];\n this.chatLog.push({\n type: 'ai',\n message: this.greetingMsg,\n\n time: formatNow(this.timezone),\n });\n this.archieveMessages().subscribe();\n }\n\n archieveMessages() {\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n 'x-api-key': this.apiKey,\n 'hive-bot-id': this.botId,\n 'domain-authority': this.domainAuthorityValue,\n });\n const url = `${this.environment.BASE_URL}/bot/clear-history/${this.botId}/${this.userId}`;\n return this.http.post(url, { headers }).pipe(\n switchMap((res: any) => {\n return of(res);\n }),\n catchError((error) => {\n return of(null);\n })\n );\n }\n\n triggerSupport() {\n this.openSupport.emit();\n }\n fetchBotConfig() {\n this.loading = true;\n const headers = new HttpHeaders({\n 'x-api-key': this.apiKey,\n 'hive-bot-id': this.botId,\n 'domain-authority': this.domainAuthorityValue,\n });\n const url = `${this.environment.BASE_URL}/bots?bot_id=${this.botId}`;\n return this.http.get(url, { headers }).pipe(\n switchMap((res: any) => {\n this.botName = this.getTranslation(res.Name);\n this.botIcon = res.Icon;\n this.botSkills = res?.Skills;\n this.greetingMsg = res.Greeting;\n\n this.thumbsDownMessages = res?.NegativeResponses?.length\n ? res.NegativeResponses\n : [\n this.getTranslation(\n `We are sorry we've not been able to answer your question`\n ),\n ];\n this.quickPrompts = res.QuickPrompts;\n this.cdr.markForCheck();\n this.loading = false;\n return of(res);\n }),\n catchError((error) => {\n console.error('Error fetching chatbot config: ', error);\n this.loading = false;\n return of(null);\n })\n );\n }\n\n fetchChatHistory(): Observable<any> {\n this.loading = true;\n\n this.conversationKey = this.conversationService.getKey(this.botId, false);\n this.conSessionKey = this.conversationService.getSessionKey(\n this.botId,\n false\n );\n const url = `${this.environment.BASE_URL}/conversations/${this.conversationKey}?session_id=${this.conSessionKey}`;\n const headers = new HttpHeaders({\n accept: 'application/json',\n 'x-api-key': this.apiKey,\n 'hive-bot-id': this.botId,\n 'domain-authority': this.domainAuthorityValue,\n });\n\n return this.http\n .get(url, { headers })\n .pipe(catchError(this.handleError<any>('fetchConversation')));\n }\n\n private handleError<T>(operation = 'operation', result?: T) {\n return (error: any): Observable<T> => {\n console.error(`${operation} failed: ${error.message}`);\n return of(result as T);\n };\n }\n // fetchChatHistory() {\n // this.loading = true;\n // const headers = new HttpHeaders({\n // 'Content-Type': 'application/json',\n // 'x-api-key': this.apiKey,\n // });\n // return this.http\n // .get(`${this.environment.BASE_URL}/conversations/${this.conversationKey}`, { headers })\n // .pipe(\n // switchMap((res: any) => {\n // this.loading = false;\n // return of(res);\n // }),\n // catchError((error: any) => {\n // console.error('Error fetching chat history: ', error);\n // this.loading = false;\n // return of(null);\n // })\n // );\n // }\n\n mapChatHistory(chats: any) {\n this.chatLog.push({\n type: 'ai',\n message: this.greetingMsg,\n time: formatNow(this.timezone),\n });\n if (chats && chats?.Messages?.length) {\n chats?.Messages.forEach((chat: any) => {\n if (chat.Type == 'user') {\n this.chatLog.push({\n type: 'user',\n message: this.processMessageForDisplay(chat.Text),\n time: formatTimeStamps(this.timezone, chat.InsertTimestamp),\n copied: false,\n isCollapsedTrue: false,\n WorkflowExecutionId: chat.WorkflowExecutionId,\n _id: chat._id,\n });\n }\n if (chat.Type == 'ai') {\n var sourcesList = chat.WebLinks || [];\n var displayedSources = chat.WebLinks.slice(0, 3); // First 3 cards\n var remainingSources = chat.WebLinks.slice(3); // Remaining items\n\n this.chatLog.push({\n type: 'ai',\n message: this.processMessageForDisplay(chat.Text),\n executionGraphs: chat.ExecutionGraphs,\n graphs: chat.Graphs,\n searchTerms: chat.SearchTerms,\n sourcesList: sourcesList,\n displayedSources: displayedSources,\n remainingSources: remainingSources,\n time: formatTimeStamps(this.timezone, chat.InsertTimestamp),\n copied: false,\n isCollapsedTrue: false,\n _id: chat._id,\n });\n this.showFeedBackIconsIndex = this.chatLog.length - 1;\n }\n });\n this.showStartAgain = true;\n }\n this.scrollToBottom();\n this.cdr.markForCheck();\n }\n\n processMessage(message: string): SafeHtml {\n if (!message || !(message?.length > 0)) {\n return '';\n }\n\n // console.log('here is my message')\n // console.log(message);\n\n message = message.trim();\n\n const markdownLinkRegex = /\\[([^[]+)]\\(([^)]+)\\)/g;\n const urlRegex = /(?<!href=\")\\bhttps?:\\/\\/\\S+(?<![.,])/gi;\n\n if (markdownLinkRegex.test(message)) {\n const html = message.replace(\n markdownLinkRegex,\n '<a href=\"$2\" target=\"_blank\">$1</a>'\n );\n //console.log('Sanitized message: ', message);\n return this.sanitizeHtml(html);\n }\n\n if (urlRegex.test(message)) {\n const html = message.replace(\n urlRegex,\n '<a href=\"$&\" target=\"_blank\">$&</a>'\n );\n // console.log('Sanitized message: ', message);\n return this.sanitizeHtml(html);\n }\n\n message = message.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>');\n\n message = message.replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>');\n // Convert Markdown headers to HTML headers\n message = message.replace(/^(#{1,6})\\s+(.*)$/gm, (match, hashes, text) => {\n const level = hashes.length;\n return `<h${level}>${text}</h${level}>`;\n });\n\n this.cdr.markForCheck();\n const sanitizedMessage = this.sanitizeHtml(message);\n return sanitizedMessage;\n }\n\n ngAfterViewChecked() {\n const feedbackLinks =\n this.elementRef.nativeElement.querySelectorAll('.feedback-link');\n feedbackLinks.forEach((link: any) => {\n link.addEventListener(\n 'click',\n this.onFeedbackClick.bind(this, 'zendesk')\n );\n });\n // if (this.elementRef.nativeElement.querySelector('.feedback-link')) {\n // this.elementRef.nativeElement\n // .querySelector('.feedback-link')\n // .addEventListener('click', this.onFeedbackClick.bind(this, 'zendesk'));\n // }\n }\n\n sanitizeHtml(html: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n\n onFeedbackClick(value: string) {\n this.feedbackEvent.emit(value);\n }\n\n onClose() {\n this.renderer.removeClass(document.body, this.bodyOverflowClass);\n this.onCloseEvent.emit();\n }\n\n sendMessageWithTile(prompt: string) {\n this.input = prompt;\n this.fetchData();\n this.scrollToBottom();\n }\n isChatingWithAi = false;\n fetchData(msg = null) {\n this.input = msg || this.input?.trim();\n this.msg = this.input;\n if (!this.input || this.loading) {\n return;\n }\n this.ensureChatSocket();\n\n this.chatLog.push({\n type: 'user',\n message: this.processMessageForDisplay(this.input),\n time: formatNow(this.timezone),\n copied: false,\n isCollapsedTrue: false,\n });\n\n try {\n const textarea = this.myInput.nativeElement;\n textarea.style.height = 'hidden'; // Reset the height\n textarea.style.height = `62px`;\n } catch (error) {}\n this.cdr.markForCheck();\n\n this.aiResponse = '';\n this.isChatingWithAi = true;\n\n this.makeAskRequest(this.input, this.agents, this.conversationKey);\n }\n fetchDataFor(msg, chat) {\n const inputMsg = msg?.trim();\n if (!inputMsg || this.loading) {\n return;\n }\n this.ensureChatSocket();\n try {\n chat.relatedListItems = [];\n this.cdr.detectChanges();\n } catch (error) {}\n\n this.scrollToBottom();\n this.chatLog.push({\n type: 'user',\n message: this.processMessageForDisplay(inputMsg),\n time: formatNow(this.timezone),\n copied: false,\n isCollapsedTrue: false,\n });\n\n this.cdr.markForCheck();\n\n this.aiResponse = '';\n this.isChatingWithAi = true;\n\n this.makeAskRequest(inputMsg, this.agents, this.conversationKey, msg, chat);\n }\n fetchSmallTalk() {\n this.loading = true;\n this.cdr.markForCheck();\n\n const url = `${this.environment.BASE_URL}/bot/small-talk/${this.botId}/${this.userId}`;\n\n this.http\n .get<{ smallTalk: string }>(url, {\n headers: {\n 'x-api-key': this.apiKey,\n 'hive-bot-id': this.botId,\n 'domain-authority': this.domainAuthorityValue,\n },\n })\n .pipe(\n catchError((error) => {\n console.error('Error while fetching small talk:', error);\n\n return of(null);\n })\n )\n .subscribe((response) => {\n this.loading = false;\n this.cdr.markForCheck();\n\n if (!response) {\n return;\n }\n\n if (response && response.smallTalk) {\n this.chatLog.push({\n type: 'ai',\n message: this.processMessage(response.smallTalk),\n time: formatNow(this.timezone),\n isFeedbackMsg: true,\n });\n this.showFeedBackIconsIndex = this.chatLog.length - 2;\n // this.scrollToBottom();\n this.cdr.markForCheck();\n }\n });\n }\n\n readAllChunks = (stream: any) => {\n const reader = stream.getReader();\n const allSuggestions: string[] = [];\n\n reader.closed.catch((err: any) => {\n if (err) {\n console.error('Error reading stream: ', err);\n }\n\n this.isChatingWithAi = false;\n this.scrollToBottom();\n return;\n });\n\n return new ReadableStream({\n start: (controller) => {\n return this.pump(controller, reader, allSuggestions);\n },\n });\n };\n\n pump(controller: any, reader: any, allSuggestions: string[]) {\n reader.read().then(({ done, value }: any) => {\n const lastItem = this.chatLog[this.chatLog.length - 1];\n\n if (done) {\n lastItem.message = this.processMessageForDisplay(lastItem.message);\n this.chatLog.pop();\n this.chatLog.push(lastItem);\n if (allSuggestions?.length) {\n this.chatLog.push({\n type: 'suggestions',\n suggestions: allSuggestions,\n });\n }\n\n controller.close();\n this.isChatingWithAi = false;\n // this.scrollToBottom();\n this.cdr.markForCheck();\n this.showStartAgain = true;\n\n // setTimeout(() => {\n // this.fetchSmallTalk();\n // },1000)\n return;\n }\n\n let decodedChunk = this.decoder.decode(value, { stream: true });\n this.aiResponse += decodedChunk;\n if (lastItem.type === 'ai') {\n const suggestionsMatch = this.aiResponse.match(/<sug>(.*?)<\\/sug>/g);\n if (suggestionsMatch) {\n suggestionsMatch.forEach((match) => {\n this.aiResponse = this.aiResponse.replace(match, '');\n allSuggestions.push(match?.replace(/<\\/?sug>/g, ''));\n });\n }\n\n lastItem.message = this.aiResponse;\n this.cdr.markForCheck();\n } else {\n this.isChatingWithAi = false;\n\n let aiFormattedData: any;\n\n try {\n console.log('parsing json ');\n aiFormattedData = JSON.parse(JSON.parse(this.aiResponse));\n } catch (e) {\n try {\n console.log('parsing json 2');\n aiFormattedData = JSON.parse(this.aiResponse);\n } catch (e) {}\n }\n\n console.log('parsing json done');\n\n if (aiFormattedData && aiFormattedData?.section_id?.length > 0) {\n if (\n aiFormattedData.section_id == 'company_search' ||\n aiFormattedData.section_id == 'user_search' ||\n aiFormattedData.section_id == 'industry_company_search'\n ) {\n this.fetchMyConnections().subscribe();\n this.fetchPendingRequests().subscribe();\n }\n\n if (aiFormattedData.section_id == this.myUpcomingSessionAction) {\n var speakerIds = [];\n aiFormattedData.content?.forEach((session) => {\n speakerIds = [...speakerIds, ...session.speakers];\n });\n\n if (speakerIds?.length > 0) this.getSpeakersByStaffIds(speakerIds);\n }\n\n if (\n aiFormattedData.section_id == this.addToMyAgendaAction &&\n aiFormattedData.content?.length > 0\n ) {\n this.openPage.next({\n sectionId: aiFormattedData.section_id,\n sessionIds: aiFormattedData.content,\n });\n }\n\n if (aiFormattedData.section_id == this.connectOrFollowAction) {\n let usersLen = aiFormattedData.content?.length;\n if (usersLen > 1) {\n this.openPage.next({\n sectionId: 'open_networking_drawer',\n search: aiFormattedData.content,\n });\n } else if (usersLen == 1) {\n this.openPage.next({\n sectionId: aiFormattedData.section_id,\n connetUserIds: [aiFormattedData.content[0].userId],\n });\n }\n }\n\n if (aiFormattedData.is_open_page == 'true') {\n this.openPage.next({\n sectionId: aiFormattedData.section_id,\n search: aiFormattedData.content,\n });\n\n if (this.isMobileBrowser()) {\n aiFormattedData.message +=\n '\\n\\n' + '<a id=\"closeBotNow\">Click Here</a> to see results.';\n }\n }\n\n this.chatLog.push({\n type: 'ai',\n message: aiFormattedData.message,\n action: aiFormattedData,\n time: formatNow(this.timezone),\n });\n\n if (this.isMobileBrowser()) {\n setTimeout(() => {\n this.addCloseBotClickEvent();\n }, 500);\n }\n\n this.aiResponse = '';\n } else {\n this.chatLog.push({\n type: 'ai',\n message: this.aiResponse,\n time: formatNow(this.timezone),\n });\n }\n\n this.showFeedBackIconsIndex = this.chatLog.length - 1;\n this.cdr.markForCheck();\n }\n\n this.scrollToBottom();\n\n // Enqueue the next data chunk into our target stream\n controller.enqueue(value);\n this.pump(controller, reader, allSuggestions);\n });\n }\n\n submitFeedback(flag: boolean, message) {\n console.log(message);\n\n this.feedbackDone = true;\n this.showFeedBackIconsIndex = null;\n const conversation_id = this.conversationService.getKey(this.botId);\n const url = `${this.environment.AGENTS_API}/Conversation/coPilot/${this.botId}/conversation/${conversation_id}/helpful-response`;\n fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n apiKey: 'Conversation_WIz/qAm+EEmfOkFaUA/weA==',\n 'hive-bot-id': this.botId,\n 'domain-authority': this.domainAuthorityValue,\n },\n body: JSON.stringify({ messageId: message._id, isHelpful: flag }),\n }).then(() => {\n if (flag) {\n this.chatLog.push({\n type: 'ai',\n message:\n this.thumbsUpMessage ||\n this.getTranslation('May I assist you with anything else'),\n time: formatNow(this.timezone),\n isFeedbackMsg: true,\n });\n\n this.scrollToBottom();\n this.cdr.markForCheck();\n this.feedbackDone = false;\n this.showFeedBackIconsIndex = null;\n return;\n }\n\n this.chatLog.push({\n type: 'ai',\n message: this.processMessage(\n this.thumbsDownMessages[this.thumbsDownMsgIndex]\n ),\n time: formatNow(this.timezone),\n isFeedbackMsg: true,\n });\n this.thumbsDownMsgIndex =\n (this.thumbsDownMsgIndex + 1) % this.thumbsDownMessages.length;\n this.scrollToBottom();\n this.cdr.markForCheck();\n setTimeout(() => {\n const supportLink = document.getElementById('supportLink88');\n if (supportLink) {\n supportLink.addEventListener('click', this.triggerSupport.bind(this));\n }\n }, 200);\n this.feedbackDone = false;\n this.showFeedBackIconsIndex = null;\n });\n }\n handleKeydown(event: KeyboardEvent) {\n if (event.key === 'Enter' && !event.shiftKey) {\n // Prevent default behavior (new line)\n event.preventDefault();\n // Call your submit function\n this.handleSubmit(event);\n }\n }\n handleSubmit(event) {\n this.fetchData();\n this.scrollToBottom();\n }\n\n handleUpClick(idx: any) {\n if (this.feedbackDone) {\n return;\n }\n\n this.submitFeedback(true, this.chatLog[idx]);\n this.chatLog[idx].liked = !this.chatLog[idx].liked;\n\n if (this.chatLog[idx].unliked) {\n this.chatLog[idx].unliked = !this.chatLog[idx].unliked;\n }\n\n this.cdr.markForCheck();\n }\n\n handleDownClick(idx: any) {\n if (this.feedbackDone) return;\n this.submitFeedback(false, this.chatLog[idx]);\n this.chatLog[idx].unliked = !this.chatLog[idx].unliked;\n if (this.chatLog[idx].liked)\n this.chatLog[idx].liked = !this.chatLog[idx].liked;\n }\n // handleCopyClick(index: any) {\n // // Copy the message to the clipboard\n // const contentToCopy = this.chatLog[index].message;\n // console.log('contentToCopy');\n // console.log(contentToCopy);\n // navigator.clipboard.writeText(contentToCopy).then(() => {\n // // Indicate that the message was copied\n // this.chatLog[index].copied = true;\n // this.cdr.detectChanges();\n // // Reset the copied state after a delay\n // setTimeout(() => {\n // this.chatLog[index].copied = false;\n // this.cdr.detectChanges();\n // }, 2000); // Reset after 2 seconds\n // });\n // }\n copyText(id, index) {\n // Get the text element\n var textElement = document.getElementById(id);\n\n // Create a temporary textarea element to copy the text\n var tempTextArea = document.createElement('textarea');\n tempTextArea.value = textElement.innerText;\n\n // Append the textarea to the body (necessary for the execCommand to work)\n document.body.appendChild(tempTextArea);\n\n // Select the text inside the textarea\n tempTextArea.select();\n\n // Copy the text to the clipboard\n document.execCommand('copy');\n\n // Remove the temporary textarea\n document.body.removeChild(tempTextArea);\n\n // Optionally, you can alert the user or change the button text to indicate the copy was successful\n // alert('Text copied to clipboard!');\n\n this.chatLog[index].copied = true;\n this.cdr.detectChanges();\n // Reset the copied state after a delay\n setTimeout(() => {\n this.chatLog[index].copied = false;\n this.cdr.detectChanges();\n }, 2000); // Reset after 2 seconds\n }\n handleCopyClick(index: any) {\n // Copy the message to the clipboard\n const contentToCopy = this.chatLog[index].message;\n const resutlt = this.copyText('messageText_' + index, index);\n }\n\n sanitizeHTML(html: string): string {\n const doc = new DOMParser().parseFromString(html, 'text/html');\n\n // Create a new document fragment to hold the simplified content\n const fragment = document.createDocumentFragment();\n\n // Append the children of the body of the parsed document to the fragment\n Array.from(doc.body.childNodes).forEach((node) => {\n fragment.appendChild(node.cloneNode(true));\n });\n\n // Create a new div element to hold the simplified HTML\n const simplifiedDiv = document.createElement('div');\n simplifiedDiv.appendChild(fragment);\n\n // Remove complex tags or attributes as needed\n // Example: remove scripts\n simplifiedDiv\n .querySelectorAll('script')\n .forEach((script) => script.remove());\n\n // Return the simplified HTML as a string\n return simplifiedDiv.innerHTML;\n }\n\n currentMessageForEditor: any = '';\n currentIndexForEditor: any = -1;\n handleEditorClick(index: any) {\n if (this.currentIndexForEditor == -1) {\n this.currentIndexForEditor = index;\n this.currentMessageForEditor = this.sanitizeHTML(\n this.chatLog[index].message\n );\n this.currentMessageForEditor = this.currentMessageForEditor.replace(\n 'SafeValue must use [property]=binding:',\n ''\n );\n\n this.cdr.detectChanges();\n } else {\n if (this.currentIndexForEditor == index) {\n this.currentMessageForEditor += this.sanitizeHTML(\n this.chatLog[index].message\n );\n this.currentMessageForEditor = this.currentMessageForEditor.replace(\n 'SafeValue must use [property]=binding:',\n ''\n );\n this.cdr.detectChanges();\n } else {\n this.currentIndexForEditor = index;\n this.currentMessageForEditor = this.sanitizeHTML(\n this.chatLog[index].message\n );\n this.currentMessageForEditor = this.currentMessageForEditor.replace(\n 'SafeValue must use [property]=binding:',\n ''\n );\n this.cdr.detectChanges();\n }\n }\n this.chatLog[index].isEditor = true;\n this.cdr.detectChanges();\n // Reset the copied state after a delay\n setTimeout(() => {\n this.chatLog[index].isEditor = false;\n this.cdr.detectChanges();\n }, 2000); // Reset after 2 seconds\n this.editorsDrawer.open();\n const button = document.getElementById('botcloseplaygroundbutton');\n if (button) {\n button.style.display = 'none';\n }\n this.cdr.detectChanges();\n }\n scrollToBottom() {\n let counter = 0;\n const interval = setInterval(() => {\n this.chatMain.nativeElement.scrollTop =\n this.chatMain.nativeElement.scrollHeight;\n if (counter++ > 5) clearInterval(interval);\n }, 5);\n }\n\n focusOnTextarea() {\n setTimeout(() => {\n if (this.myInput && this.myInput.nativeElement) {\n this.myInput.nativeElement.focus();\n }\n }, 100);\n }\n\n handleAction(action: any) {\n console.info('incoming action from the chatbot AI');\n console.info(action);\n\n if (action?.content) {\n }\n }\n\n ngAfterViewInit() {\n // Check if the drawer is initially open and apply overflow hidden to body if so\n if (this.drawer.opened) {\n this.setBodyOverflow();\n }\n\n // Listen to changes in the drawer being opened or closed\n this.drawer.openedChange.subscribe((opened: boolean) => {\n if (opened) {\n this.setBodyOverflow();\n } else {\n this.removeBodyOverflow();\n }\n });\n\n this.drawer.openedChange.subscribe((opened) => {\n if (opened) {\n setTimeout(() => {\n if (this.myInput && this.myInput.nativeElement) {\n this.myInput.nativeElement.focus(); // Focus on the textarea\n }\n });\n }\n });\n }\n\n private setBodyOverflow() {\n this.renderer.addClass(document.body, this.bodyOverflowClass);\n }\n\n private removeBodyOverflow() {\n this.renderer.removeClass(document.body, this.bodyOverflowClass);\n }\n\n getSpeakersByStaffIds(ids) {\n const url = `${this.environment.USERS_API}/events/${this.eventId}/users/get-by-staff-ids`;\n fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: 'Bearer ' + 'your_token_here',\n },\n body: JSON.stringify(ids),\n })\n .then((response) => {\n if (response.ok) {\n return response.json(); // Parse the JSON body of the response\n } else {\n throw new Error('Network response was not ok.');\n }\n })\n .then((data) => {\n if (data?.length > 0) {\n data.forEach((speaker) => {\n this.speakers[speaker.id] = speaker;\n });\n\n this.cdr.markForCheck();\n }\n })\n .catch((err) => {\n console.error('Error fetching data:', err);\n this.loading = false;\n });\n }\n\n performSessionAction(sessionId, action) {\n this.sessionActions.next({\n sessionId,\n action,\n });\n }\n\n addCloseBotClickEvent() {\n const element = this.elementRef.nativeElement.querySelector('#closeBotNow');\n if (element) {\n this.renderer.listen(element, 'click', () => {\n this.closeBot.next();\n });\n }\n }\n\n isMobileBrowser() {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n }\n\n connectToUser(userId) {\n this.connectWithUser.emit({\n connect: !this.canDisconnect(userId),\n userId,\n });\n\n setTimeout(() => {\n this.fetchMyConnections().subscribe((res) => {\n this.cdr.markForCheck();\n });\n this.fetchPendingRequests().subscribe((res) => {\n this.cdr.markForCheck();\n });\n }, 500);\n }\n\n scheduleMeetingWithUser(user) {\n this.scheduleMeeting.emit(user);\n }\n\n canConnect(userId) {\n return !(\n this.canDisconnect(userId) ||\n this.pendingRequests.find((a) => a == userId)\n );\n }\n\n canDisconnect(userId) {\n return this.myConnections.find((conn) => conn.userId == userId);\n }\n\n fetchPendingRequests() {\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n apiKey: this.autogenKey,\n });\n return this.http\n .get(\n `${this.environment.USERS_API}/events/${this.eventId}/connection-requests/autogen/pending-sent-requests?userId=${this.userId}`,\n { headers }\n )\n .pipe(\n switchMap((res: any) => {\n this.pendingRequests = res;\n this.cdr.markForCheck();\n return of(res);\n }),\n catchError((error: any) => {\n console.error('Error fetching pending requests: ', error);\n return of(null);\n })\n );\n }\n\n fetchMyConnections() {\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n apiKey: this.autogenKey,\n });\n return this.http\n .get(\n `${this.environment.USERS_API}/events/${this.eventId}/users-connections/autogen?userId=${this.userId}`,\n { headers }\n )\n .pipe(\n switchMap((res: any) => {\n this.myConnections = res;\n this.cdr.markForCheck();\n return of(res);\n }),\n catchError((error: any) => {\n console.error('Error fetching pending requests: ', error);\n return of(null);\n })\n );\n }\n\n isDropdownOpen: boolean = false;\n agents: any;\n selectedAgents = [];\n allSelected = false;\n // Toggle the dropdown visibility\n toggleDropdown() {\n if (!this.agents) this.fetchAgents();\n this.isDropdownOpen = !this.isDropdownOpen;\n this.cdr.detectChanges();\n }\n\n onSelectAll(event: Event): void {\n this.agents?.forEach((agent) => (agent.selected = false));\n this.cdr.detectChanges();\n }\n\n onAgentChange(agent: any): void {\n //agent.selected = !agent.selected;\n //console.log(agent);\n let agentFound = this.agents.filter((p) => p.id == agent.id);\n if (agentFound && agentFound.length > 0) {\n agentFound[0].selected = !agentFound[0].selected;\n this.cdr.detectChanges();\n }\n this.cdr.detectChanges();\n }\n\n areAllSelected(): boolean {\n return this.agents?.every((agent) => !agent.selected);\n }\n\n getDropdownHeaderText(): string {\n const selectedAgents = this.agents?.filter((agent) => agent.selected);\n if (!selectedAgents) {\n return 'All Agents';\n } else {\n if (selectedAgents && selectedAgents?.length === 0) {\n return 'All Agents';\n } else {\n return selectedAgents?.length > 1\n ? `${selectedAgents?.length} Agents Selected`\n : `${selectedAgents?.length} Agent Selected`;\n }\n }\n }\n fetchAgents_http() {\n this.loading = true;\n const url = `${this.environment.AGENTS_API}/CoPilot/${this.botId}/active-agents`;\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n });\n\n return this.http.post(url, {}, { headers }).pipe(\n switchMap((res: any) => {\n if (res) {\n this.agents = res.map((agent) => ({\n ...agent,\n selected: false,\n }));\n }\n this.cdr.markForCheck();\n\n return of(res);\n }),\n catchError((error) => {\n console.error('Error fetching chatbot config: ', error);\n\n return of(null);\n })\n );\n }\n isDocInEditMode = false;\n documentContent: any;\n\n conversationId: any;\n isContentLoaded = false;\n\n fetchContent_http() {\n this.isDocInEditMode = false;\n this.isContentLoaded = false;\n console.log('API call function');\n this.loading = true;\n const conversation_id = this.conversationService.getKey(this.botId);\n this.conversationId = conversation_id;\n const url = `${this.environment.AGENTS_API}/ConversationDocuments?conversationId=${conversation_id}&botId=${this.botId}`;\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n apiKey: 'WIz/qAm+EEmfOkFaUA/weA==',\n 'domain-authority': this.domainAuthorityValue,\n });\n\n return this.http.get(url, { headers }).pipe(\n switchMap((res: any) => {\n if (res) {\n this.isDocInEditMode = true;\n this.documentContent = res;\n console.log('Get API callled success');\n this.isContentLoaded = true;\n console.log(res);\n }\n this.cdr.markForCheck();\n\n return of(res);\n }),\n catchError((error) => {\n console.error('Error fetching chatbot config DJ: ', error);\n this.isDocInEditMode = false;\n this.isContentLoaded = true;\n\n if (error?.status == 404) {\n console.log('dash');\n this.isDocInEditMode = false;\n this.isContentLoaded = true;\n }\n return of(null);\n })\n );\n }\n\n fetchAgents() {\n this.fetchAgents_http().subscribe();\n }\n\n fetchEditorContent() {\n this.fetchContent_http().subscribe();\n }\n\n // events/${eventId}/users-connections\n processMessageForDisplay(markdown: string): SafeHtml {\n try {\n // Create a custom renderer to modify <a> tags\n const renderer = new marked.Renderer();\n\n // Customize anchor tags to include target=\"_blank\"\n renderer.link = (href: string, title: string, text: string) => {\n return `<a href=\"${href}\" title=\"${\n title || ''\n }\" target=\"_blank\">${text}</a>`;\n };\n\n // Parse the markdown content to HTML using marked with the custom renderer\n const markdownContent = marked.parse(markdown, { renderer: renderer });\n\n // Sanitize the parsed HTML using Angular's DomSanitizer\n const sanitizedHtml =\n this.sanitizer.bypassSecurityTrustHtml(markdownContent);\n\n // Return the safe HTML content for display\n return sanitizedHtml;\n } catch (error) {\n console.error('Error processing markdown:', error);\n return ''; // Return an empty string or handle the error appropriately\n }\n }\n\n prepareHtml(markdown: string): string {\n if (!markdown || !(markdown.length > 0)) {\n console.error('Input Markdown is null or empty');\n return '';\n }\n\n // Convert Markdown headers (### or ##) to <strong> for bold headings\n let html = markdown.replace(\n /^(#{1,6})\\s+(.*)$/gm,\n (match, hashes, text) => {\n const level = hashes.length;\n if (level === 3) {\n return `<h3><strong>${text}</strong></h3>`;\n } else if (level === 4) {\n return `<h4><strong>${text}</strong></h4>`;\n }\n return `<strong>${text}</strong>`;\n }\n );\n\n // Convert Markdown code blocks with language to preformatted HTML\n html = html.replace(/```(\\w+)?\\n([\\s\\S]*?)```/g, (match, lang, code) => {\n const escapedCode = this.escapeHtml(code);\n const language = lang || 'plaintext';\n\n // Create a copy button for the code block\n return `\n <div class=\"code-container\">\n <button id=\"copy-button\" class=\"copy-button\" (click)=\"copyToClipboard('\\`${escapedCode}\\`')\">${this.getTranslation(\n 'Copy'\n )}</button>\n <pre class=\"code_block diff\"><code class=\"language-${language}\">${escapedCode}</code></pre>\n </div>`;\n });\n\n // Convert inline code (wrapped in `backticks`) to inline <code> tags\n html = html.replace(/`([^`]+)`/g, '<code>$1</code>');\n\n // Convert Markdown bold to HTML <strong>\n html = html.replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>');\n\n // Convert numbered lists\n html = html.replace(/^\\d+\\.\\s+(.*)$/gm, '<li>$1</li>');\n\n // Convert bullet point lists\n html = html.replace(/^\\-\\s+(.*)$/gm, '<li>$1</li>');\n\n // Convert Markdown links to HTML links\n html = html.replace(\n /\\[([^\\]]+)]\\(([^)]+)\\)/g,\n '<a href=\"$2\" target=\"_blank\">$1</a>'\n );\n\n // Convert new lines to <br> tags for paragraphs\n html = html.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>');\n\n return html;\n }\n\n // Helper function to escape HTML characters for code blocks\n escapeHtml(code: string): string {\n return code\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#039;');\n }\n\n // Function to copy text to clipboard\n public copyToClipboard(text: string) {\n navigator.clipboard.writeText(text).then(\n () => {\n alert('Code copied to clipboard!');\n },\n (err) => {\n console.error('Could not copy text: ', err);\n }\n );\n }\n\n isCollapsed = false;\n isCollapsedForGraph = false;\n isCollapsedForFGraph = false;\n toggleCollapse() {\n this.isCollapsed = !this.isCollapsed;\n this.cdr.detectChanges();\n }\n\n toggleCollapseGraph() {\n this.isCollapsedForGraph = !this.isCollapsedForGraph;\n this.cdr.detectChanges();\n }\n toggleCollapseFGraph() {\n this.isCollapsedForFGraph = !this.isCollapsedForFGraph;\n this.cdr.detectChanges();\n }\n // [\n // {\n // \"title\": \"AI News January 2024: In-Depth and Concise - The AI Track\",\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.\",\n // \"link\": \"https://theaitrack.com/ai-news-january-2024/\"\n // },\n // {\n // \"title\": \"Top AI News, January 2024 - Everypixel Journal\",\n // \"desc\": \"In this monthly roundup, we spotlight the top AI news stories from January, including the OpenAI vs. The New York Times Lawsuit.\",\n // \"link\": \"https://journal.everypixel.com/top-ai-news-january-2024\"\n // },\n // {\n // \"title\": \"AI News July 2024: In-Depth and Concise - The AI Track\",\n // \"desc\": \"This page features AI News for July 2024, highlighting significant events such as Canva acquiring Leonardo AI.\",\n // \"link\": \"https://theaitrack.com/ai-news-july-2024-in-depth-and-concise/\"\n // },\n // {\n // \"title\": \"January news roundup: What's new in the world of AI? - Pluralsight\",\n // \"desc\": \"OpenAI’s new GPT store, business-ready ChatGPT plans, and a predicted rise in AI-powered cybercrime.\",\n // \"link\": \"https://www.pluralsight.com/resources/blog/data/ai-this-month-january-2024\"\n // },\n // {\n // \"title\": \"AI News August 2024: In-Depth and Concise - The AI Track\",\n // \"desc\": \"This page features AI News for August 2024, with highlights such as Nvidia delaying the “Blackwell” B200 AI chips delivery.\",\n // \"link\": \"https://theaitrack.com/ai-news-august-2024-in-depth-and-concise-duplicate/\"\n // }\n // ]\n dateTime = { now: new Date().toISOString() };\n // Extracts the domain from a URL\n getDomainName(url: string): string {\n try {\n const { hostname } = new URL(url);\n return hostname.replace(/^www\\./, ''); // Remove 'www.' if present\n } catch {\n return 'unknown';\n }\n }\n\n // Generates the favicon URL\n getFaviconUrl(url: string): string {\n const domain = this.getDomainName(url);\n return `https://www.google.com/s2/favicons?sz=128&domain=${domain}`;\n }\n currentSourcesList: any = [];\n onCardClick(sources): void {\n this.currentSourcesList = sources;\n this.cdr.detectChanges();\n this.sourcesDrawer.open();\n const button = document.getElementById('botcloseplaygroundbutton');\n if (button) {\n button.style.display = 'none';\n }\n }\n\n isShowEditorButton = true;\n\n openOuterEditor() {\n this.fetchEditorContent();\n this.editorsDrawer.open();\n this.isDrawerOpen = true;\n this.isShowEditorButton = false;\n this.cdr.detectChanges();\n\n const button = document.getElementById('botcloseplaygroundbutton');\n if (button) {\n button.style.display = 'none';\n }\n }\n\n onCloseEditor() {\n this.editorsDrawer.close();\n this.isDrawerOpen = false;\n this.isShowEditorButton = true;\n this.cdr.detectChanges(); // Trigger change detection if needed\n this.onDrawerClosed();\n }\n\n onCloseSource() {\n this.sourcesDrawer.close();\n this.isDrawerOpen = false;\n this.cdr.detectChanges(); // Trigger change detection if needed\n this.onDrawerClosed();\n }\n onDrawerClosed() {\n setTimeout(() => {\n this.isDrawerOpen = true;\n this.cdr.detectChanges(); // Trigger change detection if needed\n // Use ngClass to dynamically apply the class\n const button = document.getElementById('botcloseplaygroundbutton');\n if (button) {\n button.style.display = 'block';\n }\n }, 800);\n }\n isDrawerOpen = true;\n\n toggleDrawer(todo) {\n this.isDrawerOpen = todo;\n this.cdr.detectChanges();\n this.updateButtonVisibility();\n }\n updateButtonVisibility() {\n const button = document.getElementById('botcloseplaygroundbutton');\n if (button) {\n button.style.display = this.isDrawerOpen ? 'block' : 'none';\n }\n }\n openLinkInNewTab(link: string): void {\n window.open(link, '_blank');\n }\n adjustTextareaHeight(event: any): void {\n try {\n if (event.key === 'Enter' && !event.shiftKey) {\n // Prevents a new line from being added\n event.preventDefault();\n }\n } catch (error) {}\n const textarea = event.target as HTMLTextAreaElement;\n textarea.style.height = 'auto'; // Reset the height\n textarea.style.height = `${textarea.scrollHeight}px`; // Adjust height to match content\n // Ensure the height doesn't exceed the max-height set in CSS\n if (textarea.scrollHeight > 150) {\n textarea.style.height = `150px`; // Adjust height to match content\n textarea.style.overflowY = 'auto'; // Enable scrolling if content exceeds 400px\n } else {\n textarea.style.overflowY = 'hidden'; // Hide scrollbar if content is within limits\n }\n }\n\n toggleWorkflows(value = null) {\n if (!this.checkForCop29BotId()) {\n this.botService.getWorkflowsByOrgId(this.orgId).subscribe((res) => {\n this.orgWorkflows = res;\n this.isWorkflowOpen = value == null ? !this.isWorkflowOpen : value;\n\n if (!this.isWorkflowOpen) {\n this.selectedWorkflow = null;\n this.openWorkflowInput = false;\n }\n\n this.cdr.detectChanges();\n });\n }\n }\n\n initializeForm() {\n // Create form controls dynamically based on selectedWorkflow.Trigger.InputSchema\n const formControls = {};\n if (this.selectedWorkflow?.Trigger?.InputSchema) {\n this.selectedWorkflow.Trigger.InputSchema.forEach((input) => {\n formControls[input.InputId] = [\n input.Value || '',\n input.Required ? Validators.required : null,\n ];\n });\n }\n\n // Initialize the form\n this.workflowForm = this.fb.group(formControls);\n }\n\n onWorkflowSelected(workflow) {\n this.selectedWorkflow = workflow;\n this.initializeForm();\n this.isWorkflowOpen = false;\n this.openWorkflowInput = true;\n }\n\n onWorkflowSubmit() {\n const container = document.getElementById('allChats');\n if (this.workflowForm.valid) {\n console.log(this.workflowForm.value);\n\n var input = this.prepareHtml(\n this.generateMarkdown(\n this.selectedWorkflow.Name,\n this.workflowForm.value\n )\n );\n\n // update last two chatLog entries, set showWorkflowExecutionLoader = false\n try {\n this.chatLog[this.chatLog.length - 1]['showWorkflowExecutionLoader'] =\n false;\n this.chatLog[this.chatLog.length - 2]['showWorkflowExecutionLoader'] =\n false;\n } catch (error) {}\n\n this.chatLog.push({\n type: 'user',\n message: input,\n time: formatNow(this.timezone),\n copied: false,\n isCollapsedTrue: false,\n showWorkflowExecutionLoader: true,\n });\n\n console.log(input);\n\n this.currentWorkflowActionProgress = 0;\n this.currentWorkflowAction =\n 'Executing ' + this.selectedWorkflow.Actions[0].Name;\n this.isChatingWithAi = true;\n this.executingWorkflow = true;\n this.workflowExecutionDetails = {\n Actions: this.selectedWorkflow.Actions,\n Inputs: this.workflowForm.value,\n workflowInputs: this.workflowForm.value,\n WorkflowName: this.selectedWorkflow.Name,\n };\n this.currentWorkflowExecutionDetails = this.workflowExecutionDetails;\n this.scrollToBottom();\n\n this.cdr.detectChanges();\n\n // execute the ask endpoint with workflow input\n this.makeAskRequest(\n input,\n this.agents,\n this.conversationKey,\n '',\n null,\n this.selectedWorkflow['_id'],\n this.workflowForm.value\n );\n }\n }\n\n makeAskRequest(\n inputMsg: string,\n agents: any[],\n conversationId: string,\n msg?: any,\n chat?: any,\n workflowId?: string,\n workflow_inputs?: any\n ): void {\n var url = `${this.environment.BASE_URL}/ai/ask`;\n\n var body = {\n user_question: inputMsg,\n user_id: this.userId,\n bot_id: this.botId,\n message_id: this.conversationService.generateKey(),\n session_id: this.conSessionKey,\n agents: agents?.filter((p) => p.selected).map((p) => p.id) ?? [],\n conversation_id: conversationId,\n first_name: this.firstName,\n last_name: this.lastName,\n };\n\n if (workflowId) {\n body['workflow_id'] = workflowId;\n body['workflow_inputs'] = workflow_inputs;\n }\n\n const headers: any = {\n 'Content-Type': 'application/json',\n Authorization: 'Bearer ' + this.s27Token,\n 'x-api-key': this.apiKey,\n 'hive-bot-id': this.botId,\n 'domain-authority': this.domainAuthorityValue,\n eventUrl: this.eventUrl,\n eventToken: this.eventToken,\n };\n\n if (this.workspaceToken) {\n headers['workspaceToken'] = this.workspaceToken;\n }\n\n fetch(url, {\n method: 'POST',\n headers: headers,\n body: JSON.stringify(body),\n })\n .then((response) => {\n if (response.status === 401 || response.status === 403) {\n this.is401 = true;\n this.refreshToken.emit();\n\n // If `msg` and `chat` exist, handle them\n if (msg && chat) {\n this.msg = msg;\n this.chat = chat;\n this.isFetchDataFor = true;\n }\n } else {\n this.is401 = false;\n }\n return response.json();\n })\n .then((data) => {\n console.log(data);\n // Additional response handling if needed\n })\n .catch((err) => {\n console.error('Error: ', err);\n this.isChatingWithAi = false;\n });\n\n this.input = '';\n this.selectedWorkflow = null;\n this.openWorkflowInput = false;\n this.isWorkflowOpen = false;\n this.scrollToBottom();\n this.cdr.markForCheck();\n }\n\n makeAskRequestold(\n inputMsg: string,\n agents: any[],\n conversationId: string,\n msg?: any,\n chat?: any,\n workflowId?: string,\n workflow_inputs?: any\n ): void {\n const url = `${this.environment.BASE_URL}/ai/ask`;\n\n const body: any = {\n user_question: inputMsg,\n user_id: this.userId,\n bot_id: this.botId,\n message_id: this.conversationService.generateKey(),\n agents: agents?.filter((p) => p.selected).map((p) => p.id) ?? [],\n conversation_id: conversationId,\n first_name: this.firstName,\n last_name: this.lastName,\n };\n\n if (workflowId) {\n body['workflow_id'] = workflowId;\n body['workflow_inputs'] = workflow_inputs;\n }\n\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n 'x-api-key': this.apiKey,\n 'hive-bot-id': this.botId,\n 'domain-authority': this.domainAuthorityValue,\n });\n\n this.http.post(url, body, { headers }).subscribe({\n next: (data) => {\n console.log(data);\n // Additional response handling if needed\n },\n error: (err) => {\n console.error('Error: ', err);\n this.isChatingWithAi = false;\n },\n });\n\n this.input = '';\n this.selectedWorkflow = null;\n this.openWorkflowInput = false;\n this.isWorkflowOpen = false;\n this.scrollToBottom();\n this.cdr.markForCheck();\n }\n\n generateMarkdown(title, obj) {\n // Initialize markdown with the title\n let markdown = `## ${title}\\n`;\n\n // Loop through the object and append the field names and values\n for (const [key, value] of Object.entries(obj)) {\n var key_label =\n this.selectedWorkflow.Trigger.InputSchema.find(\n (input) => input.InputId === key\n )?.Label || key;\n markdown += `- **${key_label}**: ${value}\\n`;\n }\n\n return markdown;\n }\n\n showWorkflowHistoryDetails(workflow_id) {\n if (!workflow_id) {\n this.workflowExecutionDetails = this.currentWorkflowExecutionDetails;\n this.showWorkflowExecutionDetails = true;\n this.cdr.detectChanges();\n return;\n }\n\n this.botService.getWorkflowExecutionById(workflow_id).subscribe((res) => {\n if (res && res.Actions && Array.isArray(res.Actions)) {\n res.Actions = res.Actions.map((action) => {\n if (action.InsertTimeStamp) {\n action.InsertTimeStamp = formatTimeStamps(\n this.timezone,\n action.InsertTimeStamp\n );\n }\n return action;\n });\n }\n\n res.InsertTimeStamp = formatTimeStamps(\n this.timezone,\n res.InsertTimeStamp\n );\n this.workflowExecutionDetails = res;\n this.showWorkflowExecutionDetails = true;\n this.cdr.detectChanges();\n });\n }\n\n closeModal() {\n this.showWorkflowExecutionDetails = false;\n }\n\n objectToArray(obj: any): any[] {\n return Object.keys(obj).map((key) => ({ key, value: obj[key] }));\n }\n\n startNewConversation() {\n this.conversationKey = this.conversationService.getKey(this.botId, true);\n this.chatLog = [this.chatLog[0]];\n this.isChatingWithAi = false;\n this.chatSocketInitialized = false;\n setTimeout(() => {\n this.ensureChatSocket();\n }, 200);\n this.scrollToBottom();\n this.cdr.detectChanges();\n }\n\n initializeSpeechRecognizer(token: string) {\n this.speechConfig = SpeechSDK.SpeechConfig.fromAuthorizationToken(\n token,\n this.region\n );\n const audioConfig = SpeechSDK.AudioConfig.fromDefaultMicrophoneInput();\n this.recognizer = new SpeechSDK.SpeechRecognizer(\n this.speechConfig,\n audioConfig\n );\n\n this.recognizer.recognizing = (s, e) => {\n if (e.result.reason === SpeechSDK.ResultReason.RecognizingSpeech) {\n this.input = e.result.text;\n console.log(`Recognizing: ${e.result.text}`);\n this.cdr.markForCheck();\n }\n };\n\n this.recognizer.recognized = (s, e) => {\n if (e.result.reason === SpeechSDK.ResultReason.RecognizedSpeech) {\n this.input = e.result.text;\n console.log(`Recognized: ${e.result.text}`);\n this.toggleRecording();\n this.cdr.markForCheck();\n }\n };\n\n this.recognizer.canceled = (s, e) => {\n console.error('Canceled: ', e.errorDetails);\n };\n\n this.recognizer.sessionStopped = (s, e) => {\n console.log('Session stopped.');\n this.recognizer.stopContinuousRecognitionAsync();\n this.fetchData();\n };\n }\n\n toggleRecording() {\n this.isRecording = !this.isRecording;\n\n if (this.isRecording) {\n this.startRecognition();\n } else {\n this.stopRecognition();\n }\n }\n\n startRecognition() {\n this.recognizer.startContinuousRecognitionAsync();\n }\n\n stopRecognition() {\n this.recognizer.stopContinuousRecognitionAsync();\n }\n\n checkForCop29BotId() {\n return (\n this.botId == '66fa3f276c5d71e2717bfea8' ||\n this.botId == '671633545652dd78efec848d'\n );\n }\n\n getLatestTime(time): string {\n if (time) {\n return time;\n }\n return new Date().toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n }); // returns current time in 'shortTime' format\n }\n\n /** Used by the voice modal when opened from this drawer. */\n voiceModalConversationId: string = '';\n\n openVoiceModal(): void {\n const conversationId = this.conversationKey ?? this.conversationService.getKey(this.botId, false) ?? '';\n this.voiceModalConversationId = conversationId;\n this.setupVoiceTranscripts();\n\n // Close existing overlay if any\n if (this.voiceModalOverlayRef) {\n this.voiceModalOverlayRef.detach();\n this.voiceModalOverlayRef.dispose();\n this.voiceModalOverlayRef = null;\n }\n\n const config: VoiceModalConfig = {\n apiUrl: this.environment?.BASE_URL ?? '',\n token: this.s27Token ?? '',\n botId: this.botId ?? '',\n conversationId,\n apiKey: this.apiKey ?? '',\n eventToken: this.eventToken ?? '',\n eventUrl: this.eventUrl ?? '',\n domainAuthority: this.domainAuthorityValue ?? 'prod-lite',\n agentName: this.botName || 'AI Assistant',\n agentRole: this.botSkills || 'AI Agent Specialist',\n agentAvatar: this.botIcon,\n };\n\n const closeCallback = () => {\n if (this.voiceModalOverlayRef) {\n this.voiceModalOverlayRef.detach();\n this.voiceModalOverlayRef.dispose();\n this.voiceModalOverlayRef = null;\n }\n this.closeVoiceModal();\n };\n\n const injector = Injector.create([\n { provide: VOICE_MODAL_CONFIG, useValue: config },\n { provide: VOICE_MODAL_CLOSE_CALLBACK, useValue: closeCallback },\n ], this.injector);\n\n const overlayRef = this.overlay.create({\n hasBackdrop: false,\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay.position().global().bottom('0').right('0').left('0').top('0'),\n });\n\n const portal = new ComponentPortal(\n VoiceAgentModalComponent,\n this.viewContainerRef,\n injector\n );\n overlayRef.attach(portal);\n this.voiceModalOverlayRef = overlayRef;\n this.cdr.markForCheck();\n }\n\n closeVoiceModal(): void {\n if (this.voiceModalOverlayRef) {\n this.voiceModalOverlayRef.detach();\n this.voiceModalOverlayRef.dispose();\n this.voiceModalOverlayRef = null;\n }\n this.isVoiceModalOpen = false;\n this.voiceAgentService.disconnect();\n this.cdr.markForCheck();\n }\n\n private setupVoiceTranscripts(): void {\n // Clear existing subscriptions\n this.voiceTranscriptSubscriptions.forEach(sub => sub.unsubscribe());\n this.voiceTranscriptSubscriptions = [];\n\n // Subscribe to user transcripts\n const userSub = this.voiceAgentService.userTranscript$.subscribe(transcript => {\n if (transcript.final && transcript.text.trim()) {\n // Add user message to chat\n this.chatLog.push({\n type: 'user',\n message: this.processMessageForDisplay(transcript.text),\n time: formatNow(this.timezone),\n copied: false,\n isCollapsedTrue: false,\n });\n this.cdr.markForCheck();\n this.scrollToBottom();\n }\n });\n\n // Subscribe to bot transcripts\n const botSub = this.voiceAgentService.botTranscript$.subscribe(transcript => {\n if (transcript && transcript.trim()) {\n // Check if last message is from bot, update it, otherwise add new\n const lastMessage = this.chatLog[this.chatLog.length - 1];\n if (lastMessage && lastMessage.type === 'ai') {\n lastMessage.message = this.processMessageForDisplay(transcript);\n } else {\n this.chatLog.push({\n type: 'ai',\n message: this.processMessageForDisplay(transcript),\n time: formatNow(this.timezone),\n copied: false,\n isCollapsedTrue: false,\n });\n this.showFeedBackIconsIndex = this.chatLog.length - 1;\n }\n this.cdr.markForCheck();\n this.scrollToBottom();\n }\n });\n\n this.voiceTranscriptSubscriptions.push(userSub, botSub);\n }\n}\n\nexport { VoiceModalConfig } from '../voice-agent/voice-modal-tokens';\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'hivegpt-chatbot',\n templateUrl: './chatbot.component.html',\n styleUrls: ['./chatbot.component.scss'],\n})\nexport class ChatBotComponent {\n @Input() userId!: string;\n @Input() apiKey!: string;\n @Input() botName!: string;\n @Input() botSkills!: string;\n @Input() botId!: string;\n @Input() closeButtonColor!: string;\n @Input() gradientColors!: string[];\n @Input() greeting!: string;\n @Input() sendButtonColor!: string;\n @Input() useOpenAi!: boolean;\n @Input() showClose!: boolean;\n @Input() bgGradient!: string[];\n @Input() sendButtonTextColor!: string;\n @Input() fullView!: boolean;\n @Input() bgBubbleAi!: string;\n @Input() bgBubbleUser!: string;\n @Input() closeButtonbgColor!: string;\n @Input() messageTextColorAi!: string;\n @Input() messageTextColorUser!: string;\n @Input() dateTimeColor!: string;\n @Input() dateTextColor!: string;\n @Input() formFieldBgColor!: string;\n @Input() formFieldTextColor!: string;\n @Input() thumbsUpMessage!: string;\n @Input() thumbsDownMessages!: string[];\n @Input() timezone!: string;\n @Input() eventName!: string;\n @Input() credentials!: [];\n @Input() unknownResponses!: [];\n @Input() rules!: string;\n @Input() eventId!: string;\n @Input() s27Token!: string;\n @Input() workspaceToken!: string;\n @Input() isDev!: boolean;\n visible = false;\n\n toggle() {\n this.visible = !this.visible;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VoiceAgentModalComponent } from './components/voice-agent-modal/voice-agent-modal.component';\nimport { VoiceAgentService } from './services/voice-agent.service';\nimport { AudioAnalyzerService } from './services/audio-analyzer.service';\nimport { WebSocketVoiceClientService } from './services/websocket-voice-client.service';\nimport { DailyVoiceClientService } from './services/daily-voice-client.service';\n\n/**\n * Voice agent module. Uses native WebSocket + Daily.js only.\n * Does NOT use Socket.IO or ngx-socket-io.\n */\n@NgModule({\n declarations: [\n VoiceAgentModalComponent\n ],\n imports: [\n CommonModule\n ],\n providers: [\n VoiceAgentService,\n AudioAnalyzerService,\n WebSocketVoiceClientService,\n DailyVoiceClientService\n ],\n exports: [\n VoiceAgentModalComponent\n ]\n})\nexport class VoiceAgentModule { }\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml',\n})\nexport class SafeHtmlPipe implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) {\n }\n\n transform(html): unknown {\n return html ? this.sanitizer.bypassSecurityTrustHtml(html) : '';\n }\n\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { IVideo } from '../../models/video';\nimport { DOCUMENT } from '@angular/common';\n\n@Component({\n selector: 'app-video-player',\n templateUrl: './video-player.component.html',\n styleUrls: ['./video-player.component.scss'],\n})\nexport class VideoPlayerComponent\n implements OnInit, AfterViewInit {\n @Input() currentUserId: string;\n @Input() user: any;\n @Input() eventId: string;\n @Input() videoObj: IVideo;\n @Input() isDev: boolean;\n myFollowingList: Array<string>;\n myPendingSentRequests: Array<string>;\n @Input() type: string;\n isMuted: boolean = true;\n private observer: IntersectionObserver;\n isFullscreen: boolean = false;\n @ViewChild('video') video: any;\n @ViewChild('fullscreenvideo') fullscreenvideo: any;\n isFullscreenvideoPlaying: boolean = false;\n\n @Output() connectWithUser = new EventEmitter<string>();\n @Output() scheduleMeeting = new EventEmitter<any>();\n\n constructor(\n @Inject(DOCUMENT) private doc: any,\n private el: ElementRef,\n private cdr: ChangeDetectorRef\n ) {\n }\n\n ngOnInit(): void {\n }\n\n toggleSound(isMuted = null) {\n this.isMuted = isMuted != null ? isMuted : !this.isMuted;\n setTimeout(() => {\n const video: any = this.doc\n .getElementById(this.video.id.toString());\n if (video) {\n video.muted = this.isMuted;\n this.video.isMuted = this.isMuted;\n }\n\n this.cdr.markForCheck();\n //this.muteToggle.emit(this.isMuted);\n })\n}\n\n togglePlay(playState: boolean, videoEl) {\n this.videoObj.isPlaying = !this.videoObj.isPlaying;\n setTimeout(() => { \n if (playState) { \n this.videoObj.isPlaying = true;\n videoEl.play();\n var pauseBtn = document.getElementById('pause-btn');\n pauseBtn.classList.add('hide-pause-btn');\n\n this.toggleSound(false);\n }\n else{\n this.videoObj.isPlaying = false;\n videoEl.pause();\n }\n this.cdr.markForCheck();\n })\n }\n \n ngAfterViewInit() {\n if (window.innerWidth <= 576) {\n this.observer = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting === true) {\n this.video.nativeElement.play();\n } else {\n this.video.nativeElement.pause();\n }\n },\n {\n threshold: 0.75,\n }\n );\n\n this.observer.observe(this.el.nativeElement as HTMLElement);\n }\n }\n\n toggleFullscreen() {\n this.isFullscreen = !this.isFullscreen;\n if (!this.isFullscreen) {\n this.fullscreenvideo.nativeElement.pause();\n }\n }\n\n toggleFullscreenPlay() {\n this.isFullscreenvideoPlaying = !this.isFullscreenvideoPlaying;\n\n if (this.isFullscreenvideoPlaying) {\n this.fullscreenvideo.nativeElement.play();\n } else {\n this.fullscreenvideo.nativeElement.pause();\n }\n }\n\n followUser(userId) {\n this.connectWithUser.emit(userId);\n }\n\n checkPendingSentRequest(userId) {\n return this.myPendingSentRequests?.find(a => a == userId);\n }\n\n canUnfollowUser() {\n return false;\n }\n\n canFollowUser() {\n return true;\n }\n\n getIniNames(firstName, lastName) {\n if(!firstName && !lastName) {\n return '';\n }\n \n if (firstName && lastName)\n return (\n firstName.charAt(0).toUpperCase() + lastName.charAt(0).toUpperCase()\n );\n else return firstName.charAt(0).toUpperCase();\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { MatDrawer } from '@angular/material/sidenav';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { of, Subscription } from 'rxjs';\nimport { catchError, switchMap } from 'rxjs/operators';\nimport { formatNow, formatTimeStamps } from '../../utils/utils';\nimport {\n dev_environment,\n prod_environment,\n} from '../../../environments/environment';\nimport { ConversationService } from '../conversation.service';\nimport { Observable } from 'rxjs';\nimport { SocketService } from '../socket-service.service';\n\n@Component({\n selector: 'lib-bot-html-editor',\n templateUrl: './bot-html-editor.component.html',\n styleUrls: ['./bot-html-editor.component.css'],\n})\nexport class BotHtmlEditorComponent implements OnInit {\n @Input() editorContent: Observable<string>;\n @Input() isDocInEditMode: any;\n @Input() documentContent: any;\n @Input() conversationId: any;\n @Input() botId: any;\n\n documentName: any = 'doc name';\n\n environment: {\n USERS_API;\n BASE_URL;\n AGENTS_API;\n };\n\n quillConfig = {\n toolbar: [\n [{ header: '1' }, { header: '2' }, { font: [] }],\n [{ list: 'ordered' }, { list: 'bullet' }],\n ['bold', 'italic', 'underline'],\n ['link'],\n ['clean'],\n ],\n };\n constructor(private cdr: ChangeDetectorRef, private http: HttpClient) {}\n\n ngOnInit(): void {\n this.environment = prod_environment;\n\n setTimeout(() => {\n if (this.isDocInEditMode) {\n console.log('In Edit mode');\n this.filldataInForm();\n } else {\n console.log('In save mode');\n }\n }, 2500);\n }\n\n filldataInForm() {\n if (this.documentContent) {\n this.documentName = this.documentContent?.name;\n this.editorContent = this.documentContent?.content;\n this.cdr.detectChanges();\n }\n }\n\n saveContent() {\n if (!this.isDocInEditMode) {\n this.saveContent_http().subscribe();\n } else {\n this.saveContent_http().subscribe();\n }\n }\n\n saveContent_http() {\n console.log('API call function');\n\n const url = `${this.environment.AGENTS_API}/ConversationDocuments?conversationId=${this.conversationId}&botId=${this.botId}`;\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n apiKey: 'WIz/qAm+EEmfOkFaUA/weA==',\n });\n\n let data = {\n name: this.documentName,\n content: this.editorContent,\n };\n\n return this.http.post(url, data, { headers }).pipe(\n switchMap((res: any) => {\n if (res) {\n // alert('Saved Successfully');\n }\n this.cdr.markForCheck();\n\n return of(res);\n }),\n catchError((error) => {\n console.error('Error fetching chatbot config: ', error);\n\n return of(null);\n })\n );\n }\n\n updateContent_http() {\n console.log('API call function');\n\n const url = `${this.environment.AGENTS_API}/ConversationDocuments/rename?conversationId=${this.conversationId}&botId=${this.botId}`;\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n apiKey: 'WIz/qAm+EEmfOkFaUA/weA==',\n });\n\n let data = {\n name: this.documentName,\n content: this.editorContent,\n };\n\n return this.http.put(url, data, { headers }).pipe(\n switchMap((res: any) => {\n if (res) {\n // alert('Updated Successfully');\n }\n this.cdr.markForCheck();\n\n return of(res);\n }),\n catchError((error) => {\n console.error('Error fetching chatbot config: ', error);\n\n return of(null);\n })\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { ChatDrawerComponent } from './components/chat-drawer/chat-drawer.component';\nimport { ChatBotComponent } from './components/chatbot/chatbot.component';\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\nimport { VideoPlayerComponent } from './components/video-player/video-player.component';\nimport { QuillModule } from 'ngx-quill';\nimport { BotHtmlEditorComponent } from './components/bot-html-editor/bot-html-editor.component';\nimport { VoiceAgentModule } from './components/voice-agent/voice-agent.module';\n\n@NgModule({\n declarations: [ChatBotComponent, ChatDrawerComponent, VideoPlayerComponent, SafeHtmlPipe, BotHtmlEditorComponent],\n imports: [CommonModule, OverlayModule, MatIconModule, MatSidenavModule, FormsModule, ReactiveFormsModule, QuillModule, VoiceAgentModule],\n exports: [ChatBotComponent, ChatDrawerComponent, VideoPlayerComponent]\n})\nexport class HiveGptModule { }\n","/*\n * Public API Surface of hive-gpt\n */\n\nexport * from './lib/components/chat-drawer/chat-drawer.component';\nexport * from './lib/components/chatbot/chatbot.component';\nexport * from './lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component';\nexport * from './lib/components/voice-agent/services/voice-agent.service';\nexport * from './lib/components/voice-agent/services/audio-analyzer.service';\nexport * from './lib/components/voice-agent/voice-agent.module';\nexport * from './lib/components/voice-agent/voice-modal-tokens';\nexport * from './lib/hivegpt.module';\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 ɵj} 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 {TranslationService as ɵe} from './lib/components/translations/translation.service';\nexport {VideoPlayerComponent as ɵh} from './lib/components/video-player/video-player.component';\nexport {DailyVoiceClientService as ɵg} from './lib/components/voice-agent/services/daily-voice-client.service';\nexport {WebSocketVoiceClientService as ɵf} from './lib/components/voice-agent/services/websocket-voice-client.service';\nexport {SafeHtmlPipe as ɵi} from './lib/pipes/safe-html.pipe';"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hivegpt-hiveai-angular.js","sources":["../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/translations/translation.service.ts","../../../../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/voice-agent/services/audio-analyzer.service.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/voice-agent/services/websocket-voice-client.service.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/voice-agent/services/daily-voice-client.service.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/voice-agent/services/voice-agent.service.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/voice-agent/voice-modal-tokens.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.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/components/voice-agent/voice-agent.module.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":["import { Injectable, Inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TranslationService {\n private eventId: string | null = null;\n\n setEventId(id: string) {\n this.eventId = id;\n }\n\n getTranslation(key: string): string {\n console.log('eventId', this.eventId);\n // let lang = String(this.getLang(this.eventId)).replace(/^\"|\"$/g, '');\n const lang = (\n localStorage.getItem('defaultLanguage-' + this.eventId) || 'en'\n ).replace(/^\"|\"$/g, '');\n\n const entry = this.translationsData.find((item) => item.Key === key);\n\n if (!entry) {\n return key; // fallback\n }\n\n return entry.Translations[lang] || entry.DefaultValue || key;\n }\n\n private getLang(eventId?: string | null): string {\n const suffix = eventId ? `-${eventId}` : '';\n const storageKey = `defaultLanguage${suffix}`;\n\n return localStorage.getItem(storageKey) || 'en';\n }\n\n private translationsData: any[] = [\n { \n Key: \"Copy\",\n DefaultValue: \"Copy\",\n Translations: {\n en: \"Copy\",\n fr: \"Copier\",\n it: \"Copia\",\n es: \"Copiar\",\n de: \"Kopieren\",\n \"pt-br\": \"Copiar\",\n ar: \"نسخ\",\n zh: \"复制\",\n ru: \"Копировать\"\n }\n}\n,\n {\n \n Key: \"May I assist you with anything else\",\n DefaultValue: \"Great. May I assist you with anything else?\",\n Translations: {\n en: \"Great. May I assist you with anything else?\",\n fr: \"Parfait. Puis-je vous aider avec autre chose ?\",\n it: \"Perfetto. Posso aiutarti con qualcos'altro?\",\n es: \"Genial. ¿Puedo ayudarte con algo más?\",\n de: \"Super. Kann ich Ihnen noch bei etwas anderem helfen?\",\n \"pt-br\": \"Ótimo. Posso ajudar com mais alguma coisa?\",\n ar: \"رائع. هل يمكنني مساعدتك في أي شيء آخر؟\",\n zh: \"太好了。还有什么我可以帮您的吗?\",\n ru: \"Отлично. Могу ли я помочь вам с чем-то ещё?\"\n }\n},\n {\n Key: \"We are sorry we've not been able to answer your question\",\n DefaultValue: \"We are sorry we've not been able to answer your question. However, our dedicated support team is happy to help. Please <a href=\\\"mailto:support@social27.com\\\">click here</a> and a human agent will assist you as soon as possible.\",\n Translations: {\n en: \"We are sorry we've not been able to answer your question. However, our dedicated support team is happy to help. Please <a href=\\\"mailto:support@social27.com\\\">click here</a> and a human agent will assist you as soon as possible.\",\n fr: \"Nous sommes désolés de ne pas avoir pu répondre à votre question. Cependant, notre équipe d'assistance se fera un plaisir de vous aider. Veuillez <a href=\\\"mailto:support@social27.com\\\">cliquer ici</a> et un agent humain vous assistera dès que possible.\",\n it: \"Ci dispiace di non essere riusciti a rispondere alla tua domanda. Tuttavia, il nostro team di supporto dedicato sarà lieto di aiutarti. Ti preghiamo di <a href=\\\"mailto:support@social27.com\\\">fare clic qui</a> e un operatore umano ti assisterà al più presto.\",\n es: \"Lamentamos no haber podido responder a tu pregunta. Sin embargo, nuestro equipo de soporte estará encantado de ayudarte. Por favor, <a href=\\\"mailto:support@social27.com\\\">haz clic aquí</a> y un agente humano te asistirá lo antes posible.\",\n de: \"Es tut uns leid, dass wir Ihre Frage nicht beantworten konnten. Unser engagiertes Support-Team hilft Ihnen jedoch gerne weiter. Bitte <a href=\\\"mailto:support@social27.com\\\">klicken Sie hier</a>, und ein menschlicher Mitarbeiter wird Ihnen so bald wie möglich helfen.\",\n \"pt-br\": \"Lamentamos não ter conseguido responder à sua pergunta. No entanto, nossa equipe de suporte dedicada ficará feliz em ajudar. Por favor, <a href=\\\"mailto:support@social27.com\\\">clique aqui</a> e um agente humano o ajudará o mais rápido possível.\",\n ar: \"نأسف لعدم تمكننا من الإجابة على سؤالك. ومع ذلك، يسعد فريق الدعم المخصص لدينا بمساعدتك. يرجى <a href=\\\"mailto:support@social27.com\\\">النقر هنا</a> وسيساعدك أحد الوكلاء البشريين في أقرب وقت ممكن.\",\n zh: \"很抱歉我们未能回答您的问题。不过,我们的专属支持团队很乐意为您提供帮助。请<a href=\\\"mailto:support@social27.com\\\">点击这里</a>,人工客服将尽快为您提供协助。\",\n ru: \"К сожалению, мы не смогли ответить на ваш вопрос. Однако наша служба поддержки с радостью вам поможет. Пожалуйста, <a href=\\\"mailto:support@social27.com\\\">нажмите здесь</a>, и наш оператор свяжется с вами как можно скорее.\"\n }\n},\n {\n Key: 'Ask anything',\n DefaultValue: 'Ask anything',\n Translations: {\n en: 'Ask anything',\n fr: 'Demandez ce que vous voulez',\n it: 'Chiedi qualsiasi cosa',\n es: 'Pregunta lo que quieras',\n de: 'Frag alles',\n 'pt-br': 'Pergunte qualquer coisa',\n ar: 'اسأل أي شيء',\n zh: '随便问',\n ru: 'Спросите что угодно',\n },\n },\n {\n Key: 'Assistant',\n DefaultValue: 'Assistant',\n Translations: {\n en: 'Assistant',\n fr: 'Assistant',\n it: 'Assistente',\n es: 'Asistente',\n de: 'Assistent',\n 'pt-br': 'Assistente',\n ar: 'مساعد',\n zh: '助手',\n ru: 'Ассистент',\n },\n },\n {\n Key: 'Your personal or company information is kept private and secure within this chat.',\n DefaultValue:\n 'Your personal or company information is kept private and secure within this chat.',\n Translations: {\n en: 'Your personal or company information is kept private and secure within this chat.',\n fr: 'Vos informations personnelles ou celles de votre entreprise sont conservées privées et sécurisées dans cette conversation.',\n it: \"Le tue informazioni personali o aziendali sono mantenute private e sicure all'interno di questa chat.\",\n es: 'Tu información personal o de la empresa se mantiene privada y segura dentro de este chat.',\n de: 'Ihre persönlichen oder geschäftlichen Informationen bleiben in diesem Chat privat und sicher.',\n 'pt-br':\n 'Suas informações pessoais ou da empresa são mantidas privadas e seguras dentro deste chat.',\n ar: 'تظل معلوماتك الشخصية أو معلومات شركتك خاصة وآمنة داخل هذه المحادثة.',\n zh: '您的个人或公司信息在此聊天中保持私密和安全。',\n ru: 'Ваша личная или корпоративная информация остается конфиденциальной и защищенной в этом чате.',\n },\n },\n {\n Key: 'Send message',\n DefaultValue: 'Send message',\n Translations: {\n en: 'Send message',\n fr: 'Envoyer un message',\n it: 'Invia messaggio',\n es: 'Enviar mensaje',\n de: 'Nachricht senden',\n 'pt-br': 'Enviar mensagem',\n ar: 'إرسال رسالة',\n zh: '发送消息',\n ru: 'Отправить сообщение',\n },\n },\n {\n Key: 'Platform GPT',\n DefaultValue: 'Platform GPT',\n Translations: {\n en: 'Platform GPT',\n fr: 'Plateforme GPT',\n it: 'Piattaforma GPT',\n es: 'Plataforma GPT',\n de: 'Plattform GPT',\n 'pt-br': 'Plataforma GPT',\n ar: 'منصة GPT',\n zh: '平台 GPT',\n ru: 'Платформа GPT',\n },\n },\n {\n Key: 'New Chat',\n DefaultValue: 'New Chat',\n Translations: {\n en: 'New Chat',\n fr: 'Nouvelle conversation',\n it: 'Nuova chat',\n es: 'Nuevo chat',\n de: 'Neuer Chat',\n 'pt-br': 'Novo chat',\n ar: 'محادثة جديدة',\n zh: '新聊天',\n ru: 'Новый чат',\n },\n },\n {\n Key: 'You',\n DefaultValue: 'You',\n Translations: {\n en: 'You',\n fr: 'Vous',\n it: 'Tu',\n es: 'Tú',\n de: 'Du',\n 'pt-br': 'Você',\n ar: 'أنت',\n zh: '您',\n ru: 'Вы',\n },\n },\n {\n Key: 'Write your message',\n DefaultValue: 'Write your message',\n Translations: {\n en: 'Write your message',\n fr: 'Écrivez votre message',\n it: 'Scrivi il tuo messaggio',\n es: 'Escribe tu mensaje',\n de: 'Schreiben Sie Ihre Nachricht',\n 'pt-br': 'Escreva sua mensagem',\n ar: 'اكتب رسالتك',\n zh: '写下您的消息',\n ru: 'Напишите ваше сообщение',\n },\n },\n {\n Key: 'Send',\n DefaultValue: 'Send',\n Translations: {\n en: 'Send',\n fr: 'Envoyer',\n it: 'Invia',\n es: 'Enviar',\n de: 'Senden',\n 'pt-br': 'Enviar',\n ar: 'إرسال',\n zh: '发送',\n ru: 'Отправить',\n },\n },\n \n {\n Key: 'Call Interface',\n DefaultValue: 'Call Interface',\n Translations: {\n en: 'Call Interface',\n fr: \"Interface d'appel\",\n it: 'Interfaccia chiamata',\n es: 'Interfaz de llamada',\n de: 'Anrufoberfläche',\n 'pt-br': 'Interface de chamada',\n ar: 'واجهة الاتصال',\n zh: '呼叫界面',\n ru: 'Интерфейс звонка',\n },\n },\n {\n Key: 'Close',\n DefaultValue: 'Close',\n Translations: {\n en: 'Close',\n fr: 'Fermer',\n it: 'Chiudi',\n es: 'Cerrar',\n de: 'Schließen',\n 'pt-br': 'Fechar',\n ar: 'إغلاق',\n zh: '关闭',\n ru: 'Закрыть',\n },\n },\n ];\n}\n","const formatHoursAndMinutes = (date: Date) => {\n let hours = date.getHours() % 12;\n const minutes = date.getMinutes();\n const amPm = date.getHours() < 12 ? 'AM' : 'PM';\n if(hours === 0) hours = 12;\n\n const formattedHours = hours < 10 ? `0${hours}` : hours;\n const formattedMinutes = minutes < 10 ? `0${minutes}` : minutes;\n\n return `${formattedHours}:${formattedMinutes} ${amPm}`;\n};\n\nexport const formatNow = (timezone?: string) => {\n const now = new Date();\n if (timezone) {\n const options: any = {\n hour12: true,\n hour: 'numeric',\n minute: 'numeric',\n timeZone: timezone,\n };\n return now.toLocaleString('en-US', options);\n }\n return formatHoursAndMinutes(now);\n};\n\nexport const formatTimeStamps = (timezone: string, timestamps: any) => {\n const date = new Date(timestamps + 'Z');\n\n const options: any = {\n hour12: true,\n hour: 'numeric',\n minute: 'numeric',\n timeZone: timezone,\n };\n return date.toLocaleString('en-US', options);\n};\n","\n\nexport const prod_environment = {\n USERS_API: 'https://es-user.social27.com/api',\n BASE_URL: 'https://agent-api.hivegpt.ai',\n AGENTS_API: 'https://hive-ai.social27.com/api',\n API_KEY: '82595783-dc9c-4513-8204-709818d51be3',\n SocketUrl: 'https://notif-v2-ws.social27.com/'\n}\n\n\nexport const dev_environment = {\n USERS_API: 'https://pre-user.social27.com/api',\n BASE_URL: 'https://pre-agent-api.hivegpt.ai',\n AGENTS_API: 'https://hive-pre-ai.social27.com/api',\n API_KEY: '66d59244c50b8fb597a101t1',\n SocketUrl: 'https://notif-ws-staging.social27.com/',\n};\n\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConversationService {\n private conversationStorageKeyPrefix = 'conversationKey_';\n private sessionStorageKeyPrefix = 'sessionKey_';\n\n private userSpecificNotification: Subject<any> = new Subject<any>();\n\n constructor() { }\n\n generateKey(): string {\n const timestamp = Math.floor(new Date().getTime() / 1000).toString(16);\n const randomHex = 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, () => {\n return Math.floor(Math.random() * 16).toString(16);\n });\n return timestamp + randomHex;\n }\n\n getKey(botId: string, resetKey: boolean = false): string {\n const storageKey = `${this.conversationStorageKeyPrefix}${botId}`;\n let value = localStorage.getItem(storageKey);\n\n if (!value || resetKey) {\n value = this.generateKey();\n localStorage.setItem(storageKey, value);\n }\n\n return value;\n }\n\n getSessionKey(sessionId: string, resetKey: boolean = false): string {\n const storageKey = `${this.sessionStorageKeyPrefix}${sessionId}`;\n let value = localStorage.getItem(storageKey);\n\n if (!value || resetKey) {\n value = this.generateKey();\n localStorage.setItem(storageKey, value);\n }\n\n return value;\n }\n\n sendValidatedUserData(message: any) {\n this.userSpecificNotification.next(message);\n }\n\n getUserSpecificNotification(): Observable<any> {\n return this.userSpecificNotification.asObservable();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Socket, SocketIoConfig } from 'ngx-socket-io';\nimport { prod_environment } from '../../environments/environment';\n\n@Injectable({\n providedIn: 'root' // This ensures the service is available across the application\n})\nexport class NotificationSocket extends Socket {\n constructor() {\n super(socketConfig);\n\n // Log connection status\n this.on('connect', () => {\n console.log('Socket connected');\n });\n\n this.on('disconnect', () => {\n console.warn('Socket disconnected');\n });\n\n this.on('connect_error', (err) => {\n console.error('Socket connection error:', err);\n });\n }\n}\n\nconst socketConfig: SocketIoConfig = {\n url: prod_environment.SocketUrl,\n options: {\n transports: ['websocket', 'polling'],\n reconnection: true,\n autoConnect: true,\n upgrade: true,\n reconnectionDelay: 1000,\n reconnectionDelayMax: 5000,\n reconnectionAttempts: Infinity\n }\n};","import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\nimport { webSocket, WebSocketSubject } from 'rxjs/webSocket';\nimport { ConversationService } from './conversation.service';\nimport { NotificationSocket } from './NotificationSocket';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SocketService {\n public testMessage: string;\n private isCommonSocketInitialized = false;\n private isUserSpecificSocketInitialized = false;\n private isUserSpecificEventReleased = true;\n private messageQueue: any[] = [];\n private releaseInterval = 1000;\n private intervalSetup: boolean = false;\n\n constructor(\n private conversationService: ConversationService,\n private notificationSocket: NotificationSocket\n ) {\n this.startReleasingMessages();\n }\n\n isSocketInitialized(isCommon: boolean) {\n return isCommon\n ? this.isCommonSocketInitialized\n : this.isUserSpecificSocketInitialized &&\n !this.isUserSpecificEventReleased;\n }\n\n disconnectSocketConnection() {\n this.notificationSocket.disconnect();\n }\n connectSocketConnection() {\n this.notificationSocket.connect();\n }\n registerUserSpecificHiveSocket(botId: string, conversation_id: string, org_id: string) {\n const commonNotification = 'commonNotification';\n const groupId = `Hive_AI_Notifs_${botId}_${conversation_id}`;\n const groupId_org = `Hive_AI_Notifs_${org_id}`;\n\n // Remove any pre-existing listeners for commonNotification\n // this.notificationSocket.removeAllListeners(commonNotification);\n\n // Join the group again with updated botId and conversation_id\n this.notificationSocket.emit('joinData', { groupId });\n this.notificationSocket.emit('joinData', { groupId: groupId_org });\n\n // Re-register for common notifications\n this.notificationSocket.fromEvent(commonNotification).subscribe(\n (res) => {\n console.log('Received commonNotification:', res);\n this.conversationService.sendValidatedUserData(res);\n },\n (error) => {\n console.error('Error receiving commonNotification:', error);\n }\n );\n }\n\n private startReleasingMessages() {\n if (!this.intervalSetup) {\n setInterval(() => {\n if (this.messageQueue.length > 0) {\n const message = this.messageQueue.shift(); // Remove the first message from the queue\n // Handle the message here, e.g., send it to the server or process it\n console.log('Releasing message from queue:', message);\n // this.campaignService.sendValidatedUserData(message);\n }\n }, this.releaseInterval);\n this.intervalSetup = true; // Prevents multiple intervals\n }\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { HttpHeaders } from '@angular/common/http';\nimport { Observable, Subject, throwError } from 'rxjs';\nimport { AnyRecord } from 'dns';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BotsService {\n eventDescription = new Subject();\n bot_api = 'https://agent-api.hivegpt.ai/';\n constructor(private http: HttpClient) { }\n\n fetchSpeechAuthorizationToken(botId, apiKey, domain) {\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n 'hive-bot-id': botId,\n 'domain-authority': domain\n });\n\n const apiUrl = `${this.bot_api}speech/issue_token`;\n const url = `${apiUrl}`;\n return this.http.get(url, { headers }).pipe(\n map((resp: any) => {\n return resp.token;\n })\n );\n }\n\n getWorkflowsByOrgId(orgId: string): Observable<any> {\n const apiUrl = `${this.bot_api}workflows`;\n const url = `${apiUrl}?org_id=${orgId}`;\n return this.http.get(url).pipe(\n map((resp: any) => {\n return resp;\n })\n );\n }\n\n getWorkflowExecutionById(executionId: string): Observable<any> {\n const apiUrl = `${this.bot_api}workflows/execution/${executionId}`;\n return this.http.get(apiUrl).pipe(\n map((resp: any) => {\n return resp;\n })\n );\n }\n}","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * Audio analyzer for waveform visualization only.\n * Do NOT use isUserSpeaking$ for call state; speaking state must come from Daily.js.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class AudioAnalyzerService {\n private audioContext: AudioContext | null = null;\n private analyserNode: AnalyserNode | null = null;\n private dataArray: Uint8Array | null = null;\n private animationFrameId: number | null = null;\n private isRunning = false;\n\n private audioLevelsSubject = new BehaviorSubject<number[]>([]);\n private isUserSpeakingSubject = new BehaviorSubject<boolean>(false);\n\n // Adaptive noise floor detection\n private noiseFloor = 0;\n private noiseFloorSamples: number[] = [];\n private readonly NOISE_FLOOR_SAMPLE_COUNT = 30;\n private readonly SPEAKING_THRESHOLD_MULTIPLIER = 2.5;\n private readonly WAVEFORM_BAR_COUNT = 40;\n\n audioLevels$: Observable<number[]> = this.audioLevelsSubject.asObservable();\n isUserSpeaking$: Observable<boolean> = this.isUserSpeakingSubject.asObservable();\n\n start(stream: MediaStream): void {\n if (this.isRunning) {\n this.stop();\n }\n\n try {\n this.audioContext = new (window.AudioContext || (window as any).webkitAudioContext)();\n const source = this.audioContext.createMediaStreamSource(stream);\n \n this.analyserNode = this.audioContext.createAnalyser();\n this.analyserNode.fftSize = 2048;\n this.analyserNode.smoothingTimeConstant = 0.8;\n \n const bufferLength = this.analyserNode.frequencyBinCount;\n this.dataArray = new Uint8Array(bufferLength);\n \n source.connect(this.analyserNode);\n \n this.isRunning = true;\n this.noiseFloorSamples = [];\n this.noiseFloor = 0;\n \n this.analyze();\n } catch (error) {\n console.error('Error starting audio analyzer:', error);\n this.stop();\n }\n }\n\n stop(): void {\n this.isRunning = false;\n \n if (this.animationFrameId !== null) {\n cancelAnimationFrame(this.animationFrameId);\n this.animationFrameId = null;\n }\n\n if (this.analyserNode) {\n this.analyserNode.disconnect();\n this.analyserNode = null;\n }\n\n if (this.audioContext && this.audioContext.state !== 'closed') {\n this.audioContext.close().catch(console.error);\n this.audioContext = null;\n }\n\n this.dataArray = null;\n this.audioLevelsSubject.next([]);\n this.isUserSpeakingSubject.next(false);\n }\n\n private analyze(): void {\n if (!this.isRunning || !this.analyserNode || !this.dataArray) {\n return;\n }\n\n this.analyserNode.getByteTimeDomainData(this.dataArray);\n \n // Calculate RMS (Root Mean Square) volume\n const rms = this.calculateRMS(this.dataArray);\n \n // Learn noise floor during initial samples\n if (this.noiseFloorSamples.length < this.NOISE_FLOOR_SAMPLE_COUNT) {\n this.noiseFloorSamples.push(rms);\n if (this.noiseFloorSamples.length === this.NOISE_FLOOR_SAMPLE_COUNT) {\n // Calculate average noise floor\n const sum = this.noiseFloorSamples.reduce((a, b) => a + b, 0);\n this.noiseFloor = sum / this.NOISE_FLOOR_SAMPLE_COUNT;\n }\n } else {\n // Update noise floor adaptively (moving average)\n this.noiseFloor = this.noiseFloor * 0.99 + rms * 0.01;\n }\n\n // Detect if user is speaking\n const threshold = this.noiseFloor * this.SPEAKING_THRESHOLD_MULTIPLIER;\n const isSpeaking = rms > threshold;\n this.isUserSpeakingSubject.next(isSpeaking);\n\n // Generate waveform bars\n const bars = this.generateWaveformBars(this.dataArray);\n this.audioLevelsSubject.next(bars);\n\n this.animationFrameId = requestAnimationFrame(() => this.analyze());\n }\n\n private calculateRMS(data: Uint8Array): number {\n let sum = 0;\n for (let i = 0; i < data.length; i++) {\n const normalized = (data[i] - 128) / 128;\n sum += normalized * normalized;\n }\n return Math.sqrt(sum / data.length);\n }\n\n private generateWaveformBars(data: Uint8Array): number[] {\n const bars: number[] = [];\n const step = Math.floor(data.length / this.WAVEFORM_BAR_COUNT);\n \n for (let i = 0; i < this.WAVEFORM_BAR_COUNT; i++) {\n const index = i * step;\n const value = data[index];\n // Normalize to 0-100\n const normalized = Math.abs((value - 128) / 128) * 100;\n bars.push(Math.min(100, Math.max(0, normalized)));\n }\n \n return bars;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n/** WebSocket message types from backend signaling. */\nexport interface WsMessageRoomCreated {\n type: 'room_created';\n room_url: string;\n}\n\nexport interface WsMessageUserTranscript {\n type: 'user_transcript';\n text: string;\n final?: boolean;\n}\n\nexport interface WsMessageBotTranscript {\n type: 'bot_transcript';\n text: string;\n}\n\nexport type WsMessage =\n | WsMessageRoomCreated\n | WsMessageUserTranscript\n | WsMessageBotTranscript;\n\nexport interface TranscriptData {\n text: string;\n final: boolean;\n}\n\n/**\n * WebSocket-only client for voice agent signaling.\n * CRITICAL: Uses native WebSocket only. NO Socket.IO, NO ngx-socket-io.\n *\n * Responsibilities:\n * - Connect to ws_url (from POST /ai/ask-voice response)\n * - Parse JSON messages (room_created, user_transcript, bot_transcript)\n * - Emit roomCreated$, userTranscript$, botTranscript$\n * - NO audio logic, NO mic logic. Audio is handled by Daily.js (WebRTC).\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class WebSocketVoiceClientService {\n private ws: WebSocket | null = null;\n private roomCreatedSubject = new Subject<string>();\n private userTranscriptSubject = new Subject<TranscriptData>();\n private botTranscriptSubject = new Subject<string>();\n\n /** Emits room_url when backend sends room_created. */\n roomCreated$: Observable<string> = this.roomCreatedSubject.asObservable();\n\n /** Emits user transcript updates. */\n userTranscript$: Observable<TranscriptData> =\n this.userTranscriptSubject.asObservable();\n\n /** Emits bot transcript updates. */\n botTranscript$: Observable<string> =\n this.botTranscriptSubject.asObservable();\n\n /** Connect to signaling WebSocket. No audio over this connection. */\n connect(wsUrl: string): void {\n if (this.ws?.readyState === WebSocket.OPEN) {\n return;\n }\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n\n try {\n this.ws = new WebSocket(wsUrl);\n this.ws.onmessage = (event: MessageEvent) => {\n try {\n const msg = JSON.parse(event.data) as Record<string, unknown>;\n if (msg?.type === 'room_created') {\n const roomUrl = (msg.room_url ?? msg.roomUrl) as string | undefined;\n if (typeof roomUrl === 'string') {\n this.roomCreatedSubject.next(roomUrl);\n }\n } else if (msg?.type === 'user_transcript' && typeof msg.text === 'string') {\n this.userTranscriptSubject.next({\n text: msg.text,\n final: msg.final === true,\n });\n } else if (msg?.type === 'bot_transcript' && typeof msg.text === 'string') {\n this.botTranscriptSubject.next(msg.text);\n }\n } catch {\n // Ignore non-JSON or unknown messages\n }\n };\n this.ws.onerror = () => {\n this.disconnect();\n };\n this.ws.onclose = () => {\n this.ws = null;\n };\n } catch (err) {\n console.error('WebSocketVoiceClient: connect failed', err);\n this.ws = null;\n throw err;\n }\n }\n\n /** Disconnect and cleanup. */\n disconnect(): void {\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n\n /** Whether the WebSocket is open. */\n get isConnected(): boolean {\n return this.ws?.readyState === WebSocket.OPEN;\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport Daily from '@daily-co/daily-js';\nimport type { DailyCall, DailyParticipant } from '@daily-co/daily-js';\n\n/**\n * Daily.js WebRTC client for voice agent audio.\n * Responsibilities:\n * - Create and manage Daily CallObject\n * - Join Daily room using room_url\n * - Handle mic capture + speaker playback\n * - Provide real-time speaking detection via active-speaker-change (primary)\n * and track-started/track-stopped (fallback for immediate feedback)\n * - Expose speaking$ (bot speaking), userSpeaking$ (user speaking), micMuted$\n * - Expose localStream$ for waveform visualization (AudioAnalyzerService)\n *\n * Speaking state flips immediately when agent audio starts playing.\n * If user speaks while bot is talking, state switches to listening.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DailyVoiceClientService {\n private callObject: DailyCall | null = null;\n private localStream: MediaStream | null = null;\n private localSessionId: string | null = null;\n\n private speakingSubject = new BehaviorSubject<boolean>(false);\n private userSpeakingSubject = new BehaviorSubject<boolean>(false);\n private micMutedSubject = new BehaviorSubject<boolean>(false);\n private localStreamSubject = new BehaviorSubject<MediaStream | null>(null);\n\n /** True when bot (remote participant) is the active speaker. */\n speaking$: Observable<boolean> = this.speakingSubject.asObservable();\n\n /** True when user (local participant) is the active speaker. */\n userSpeaking$: Observable<boolean> = this.userSpeakingSubject.asObservable();\n\n /** True when mic is muted. */\n micMuted$: Observable<boolean> = this.micMutedSubject.asObservable();\n\n /** Emits local mic stream for waveform visualization. */\n localStream$: Observable<MediaStream | null> =\n this.localStreamSubject.asObservable();\n\n constructor(private ngZone: NgZone) {}\n\n /**\n * Connect to Daily room. Acquires mic first for waveform, then joins with audio.\n * @param roomUrl Daily room URL (from room_created)\n * @param token Optional meeting token\n */\n async connect(roomUrl: string, token?: string): Promise<void> {\n if (this.callObject) {\n await this.disconnect();\n }\n\n try {\n // Get mic stream for both Daily and waveform (single capture)\n const stream = await navigator.mediaDevices.getUserMedia({ audio: true });\n const audioTrack = stream.getAudioTracks()[0];\n if (!audioTrack) {\n stream.getTracks().forEach((t) => t.stop());\n throw new Error('No audio track');\n }\n\n this.localStream = stream;\n this.localStreamSubject.next(stream);\n\n // Create audio-only call object\n // videoSource: false = no camera, audioSource = our mic track\n const callObject = Daily.createCallObject({\n videoSource: false,\n audioSource: audioTrack,\n });\n\n this.callObject = callObject;\n\n this.setupEventHandlers(callObject);\n\n // Join room; Daily handles playback of remote (bot) audio automatically.\n // Only pass token when it's a non-empty string (Daily rejects undefined/non-string).\n const joinOptions: { url: string; token?: string } = { url: roomUrl };\n if (typeof token === 'string' && token.trim() !== '') {\n joinOptions.token = token;\n }\n await callObject.join(joinOptions);\n\n const participants = callObject.participants();\n if (participants?.local) {\n this.localSessionId = participants.local.session_id;\n }\n\n // Initial mute state: Daily starts with audio on\n this.micMutedSubject.next(!callObject.localAudio());\n } catch (err) {\n this.cleanup();\n throw err;\n }\n }\n\n private setupEventHandlers(call: DailyCall): void {\n // active-speaker-change: primary source for real-time speaking detection.\n // Emits when the loudest participant changes; bot speaking = remote is active.\n call.on('active-speaker-change', (event: { activeSpeaker?: { peerId?: string } }) => {\n this.ngZone.run(() => {\n const peerId = event?.activeSpeaker?.peerId;\n if (!peerId || !this.localSessionId) {\n this.speakingSubject.next(false);\n this.userSpeakingSubject.next(false);\n return;\n }\n const isLocal = peerId === this.localSessionId;\n this.userSpeakingSubject.next(isLocal);\n this.speakingSubject.next(!isLocal);\n });\n });\n\n // track-started / track-stopped: fallback for immediate feedback when\n // remote (bot) audio track starts or stops. Ensures talking indicator\n // flips as soon as agent audio begins, without waiting for active-speaker-change.\n call.on('track-started', (event: { participant?: DailyParticipant | null; type?: string; track?: MediaStreamTrack }) => {\n this.ngZone.run(() => {\n const p = event?.participant;\n const type = event?.type ?? event?.track?.kind;\n if (p && !p.local && type === 'audio') {\n this.speakingSubject.next(true);\n }\n });\n });\n\n call.on('track-stopped', (event: { participant?: DailyParticipant | null; type?: string; track?: MediaStreamTrack }) => {\n this.ngZone.run(() => {\n const p = event?.participant;\n const type = event?.type ?? event?.track?.kind;\n if (p && !p.local && type === 'audio') {\n this.speakingSubject.next(false);\n }\n });\n });\n\n call.on('left-meeting', () => {\n this.ngZone.run(() => this.cleanup());\n });\n\n call.on('error', (event?: { errorMsg?: string }) => {\n this.ngZone.run(() => {\n console.error('DailyVoiceClient: Daily error', event?.errorMsg ?? event);\n this.cleanup();\n });\n });\n }\n\n /** Set mic muted state. */\n setMuted(muted: boolean): void {\n if (!this.callObject) return;\n this.callObject.setLocalAudio(!muted);\n this.micMutedSubject.next(muted);\n }\n\n /** Disconnect and cleanup. */\n async disconnect(): Promise<void> {\n if (!this.callObject) {\n this.cleanup();\n return;\n }\n try {\n await this.callObject.leave();\n } catch (e) {\n // ignore\n }\n this.cleanup();\n }\n\n private cleanup(): void {\n if (this.callObject) {\n this.callObject.destroy().catch(() => {});\n this.callObject = null;\n }\n if (this.localStream) {\n this.localStream.getTracks().forEach((t) => t.stop());\n this.localStream = null;\n }\n this.localSessionId = null;\n this.speakingSubject.next(false);\n this.userSpeakingSubject.next(false);\n this.localStreamSubject.next(null);\n // Keep last micMuted state; will reset on next connect\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable, Subject, Subscription } from 'rxjs';\nimport { filter, take, takeUntil } from 'rxjs/operators';\nimport { AudioAnalyzerService } from './audio-analyzer.service';\nimport { WebSocketVoiceClientService } from './websocket-voice-client.service';\nimport { DailyVoiceClientService } from './daily-voice-client.service';\n\nexport type CallState =\n | 'idle'\n | 'connecting'\n | 'connected'\n | 'listening'\n | 'talking'\n | 'ended';\n\nexport interface TranscriptData {\n text: string;\n final: boolean;\n}\n\n/**\n * Voice agent orchestrator. Coordinates WebSocket (signaling) and Daily.js (WebRTC audio).\n *\n * CRITICAL: This service must NEVER use Socket.IO or ngx-socket-io. Voice flow uses only:\n * - Native WebSocket (WebSocketVoiceClientService) for signaling (room_created, transcripts)\n * - Daily.js (DailyVoiceClientService) for WebRTC audio. Audio does NOT flow over WebSocket.\n *\n * - Maintains callState, statusText, duration, isMicMuted, isUserSpeaking, audioLevels\n * - Uses WebSocket for room_created and transcripts only (no audio)\n * - Uses Daily.js for all audio, mic, and real-time speaking detection\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class VoiceAgentService implements OnDestroy {\n private callStateSubject = new BehaviorSubject<CallState>('idle');\n private statusTextSubject = new BehaviorSubject<string>('');\n private durationSubject = new BehaviorSubject<string>('00:00');\n private isMicMutedSubject = new BehaviorSubject<boolean>(false);\n private isUserSpeakingSubject = new BehaviorSubject<boolean>(false);\n private audioLevelsSubject = new BehaviorSubject<number[]>([]);\n private userTranscriptSubject = new Subject<TranscriptData>();\n private botTranscriptSubject = new Subject<string>();\n\n private callStartTime = 0;\n private durationInterval: ReturnType<typeof setInterval> | null = null;\n\n private subscriptions = new Subscription();\n private destroy$ = new Subject<void>();\n\n callState$: Observable<CallState> = this.callStateSubject.asObservable();\n statusText$: Observable<string> = this.statusTextSubject.asObservable();\n duration$: Observable<string> = this.durationSubject.asObservable();\n isMicMuted$: Observable<boolean> = this.isMicMutedSubject.asObservable();\n isUserSpeaking$: Observable<boolean> = this.isUserSpeakingSubject.asObservable();\n audioLevels$: Observable<number[]> = this.audioLevelsSubject.asObservable();\n userTranscript$: Observable<TranscriptData> =\n this.userTranscriptSubject.asObservable();\n botTranscript$: Observable<string> = this.botTranscriptSubject.asObservable();\n\n constructor(\n private audioAnalyzer: AudioAnalyzerService,\n private wsClient: WebSocketVoiceClientService,\n private dailyClient: DailyVoiceClientService\n ) {\n // Waveform visualization only - do NOT use for speaking state\n this.subscriptions.add(\n this.audioAnalyzer.audioLevels$.subscribe((levels) =>\n this.audioLevelsSubject.next(levels)\n )\n );\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.subscriptions.unsubscribe();\n this.disconnect();\n }\n\n /** Reset to idle state (e.g. when modal opens so user can click Start Call). */\n resetToIdle(): void {\n if (this.callStateSubject.value === 'idle') return;\n this.stopDurationTimer();\n this.audioAnalyzer.stop();\n this.wsClient.disconnect();\n // Fire-and-forget: Daily disconnect is async; connect() will await if needed\n void this.dailyClient.disconnect();\n this.callStateSubject.next('idle');\n this.statusTextSubject.next('');\n this.durationSubject.next('0:00');\n }\n\n async connect(\n apiUrl: string,\n token: string,\n botId: string,\n conversationId: string,\n apiKey: string,\n eventToken: string,\n eventUrl: string,\n domainAuthority: string\n ): Promise<void> {\n if (this.callStateSubject.value !== 'idle') {\n console.warn('Call already in progress');\n return;\n }\n\n try {\n this.callStateSubject.next('connecting');\n this.statusTextSubject.next('Connecting...');\n\n const baseUrl = apiUrl.replace(/\\/$/, '');\n const postUrl = `https://48c6-2405-201-5c02-991e-d91c-8adf-399c-abdc.ngrok-free.app/ai/ask-voice`;\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n 'domain-authority': domainAuthority,\n 'eventtoken': eventToken,\n 'eventurl': eventUrl,\n 'hive-bot-id': botId,\n 'x-api-key': apiKey,\n };\n\n // POST to get ws_url for signaling\n const res = await fetch(postUrl, {\n method: 'POST',\n headers,\n body: JSON.stringify({\n bot_id: botId,\n conversation_id: conversationId,\n voice: 'alloy',\n }),\n });\n\n if (!res.ok) {\n throw new Error(`HTTP ${res.status}`);\n }\n\n const json = await res.json();\n // Use only WebSocket URL. Do NOT use any Socket.IO URL (e.g. socket_io_url).\n const wsUrl = json?.rn_ws_url;\n if (!wsUrl || typeof wsUrl !== 'string') {\n throw new Error('No ws_url in response');\n }\n\n // Subscribe to room_created BEFORE connecting to avoid race\n this.wsClient.roomCreated$\n .pipe(take(1), takeUntil(this.destroy$))\n .subscribe(async (roomUrl) => {\n try {\n await this.onRoomCreated(roomUrl);\n } catch (err) {\n console.error('Daily join failed:', err);\n this.callStateSubject.next('ended');\n this.statusTextSubject.next('Connection failed');\n await this.disconnect();\n throw err;\n }\n });\n\n // Forward transcripts from WebSocket\n this.subscriptions.add(\n this.wsClient.userTranscript$\n .pipe(takeUntil(this.destroy$))\n .subscribe((t) => this.userTranscriptSubject.next(t))\n );\n this.subscriptions.add(\n this.wsClient.botTranscript$\n .pipe(takeUntil(this.destroy$))\n .subscribe((t) => this.botTranscriptSubject.next(t))\n );\n\n // Connect signaling WebSocket (no audio over WS)\n this.wsClient.connect(wsUrl);\n } catch (error) {\n console.error('Error connecting voice agent:', error);\n this.callStateSubject.next('ended');\n await this.disconnect();\n this.statusTextSubject.next('Connection failed');\n throw error;\n }\n }\n\n private async onRoomCreated(roomUrl: string): Promise<void> {\n // Connect Daily.js for WebRTC audio\n await this.dailyClient.connect(roomUrl);\n\n // Waveform: use local mic stream from Daily client\n this.dailyClient.localStream$\n .pipe(filter((s): s is MediaStream => s != null), take(1))\n .subscribe((stream) => {\n this.audioAnalyzer.start(stream);\n });\n\n // Speaking state from Daily only (NOT from AudioAnalyzer).\n // User speaking overrides bot talking: if user speaks while bot talks, state = listening.\n this.subscriptions.add(\n this.dailyClient.userSpeaking$.subscribe((s) =>\n this.isUserSpeakingSubject.next(s)\n )\n );\n this.subscriptions.add(\n combineLatest([\n this.dailyClient.speaking$,\n this.dailyClient.userSpeaking$,\n ]).subscribe(([bot, user]) => {\n if (user) {\n this.callStateSubject.next('listening');\n } else if (bot) {\n this.callStateSubject.next('talking');\n } else if (\n this.callStateSubject.value === 'talking' ||\n this.callStateSubject.value === 'listening'\n ) {\n this.callStateSubject.next('connected');\n }\n })\n );\n\n this.subscriptions.add(\n this.dailyClient.micMuted$.subscribe((muted) =>\n this.isMicMutedSubject.next(muted)\n )\n );\n\n this.callStateSubject.next('connected');\n this.statusTextSubject.next('Connected');\n this.callStartTime = Date.now();\n this.startDurationTimer();\n }\n\n async disconnect(): Promise<void> {\n this.stopDurationTimer();\n this.audioAnalyzer.stop();\n\n // Daily first, then WebSocket\n await this.dailyClient.disconnect();\n this.wsClient.disconnect();\n\n this.callStateSubject.next('ended');\n this.statusTextSubject.next('Call Ended');\n }\n\n toggleMic(): void {\n const current = this.isMicMutedSubject.value;\n this.dailyClient.setMuted(!current);\n }\n\n private startDurationTimer(): void {\n const updateDuration = () => {\n if (this.callStartTime > 0) {\n const elapsed = Math.floor((Date.now() - this.callStartTime) / 1000);\n const minutes = Math.floor(elapsed / 60);\n const seconds = elapsed % 60;\n this.durationSubject.next(\n `${minutes}:${String(seconds).padStart(2, '0')}`\n );\n }\n };\n updateDuration();\n this.durationInterval = setInterval(updateDuration, 1000);\n }\n\n private stopDurationTimer(): void {\n if (this.durationInterval) {\n clearInterval(this.durationInterval);\n this.durationInterval = null;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface VoiceModalConfig {\n apiUrl: string;\n token: string;\n botId: string;\n conversationId: string;\n apiKey: string;\n eventToken: string;\n eventUrl: string;\n domainAuthority: string;\n agentName: string;\n agentRole: string;\n agentAvatar?: string;\n}\n\nexport const VOICE_MODAL_CONFIG = new InjectionToken<VoiceModalConfig>('VOICE_MODAL_CONFIG');\nexport const VOICE_MODAL_CLOSE_CALLBACK = new InjectionToken<() => void>('VOICE_MODAL_CLOSE_CALLBACK');\n","import { Component, Input, OnInit, OnDestroy, Output, EventEmitter, Injector } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { VoiceAgentService, CallState } from '../../services/voice-agent.service';\nimport { AudioAnalyzerService } from '../../services/audio-analyzer.service';\nimport { VOICE_MODAL_CONFIG, VOICE_MODAL_CLOSE_CALLBACK, VoiceModalConfig } from '../../voice-modal-tokens';\n\n@Component({\n selector: 'hivegpt-voice-agent-modal',\n templateUrl: './voice-agent-modal.component.html',\n styleUrls: ['./voice-agent-modal.component.scss']\n})\nexport class VoiceAgentModalComponent implements OnInit, OnDestroy {\n @Output() close = new EventEmitter<void>();\n @Input() apiUrl!: string;\n @Input() token!: string;\n @Input() botId!: string;\n @Input() conversationId!: string;\n @Input() apiKey: string = '';\n @Input() eventToken: string = '';\n @Input() eventUrl: string = '';\n @Input() domainAuthority: string = 'prod-lite';\n @Input() agentName: string = 'AI Assistant';\n @Input() agentRole: string = 'AI Agent Specialist';\n @Input() agentAvatar?: string;\n\n private injectedConfig: VoiceModalConfig | null = null;\n private onCloseCallback: (() => void) | null = null;\n\n constructor(\n public voiceAgentService: VoiceAgentService,\n public audioAnalyzer: AudioAnalyzerService,\n private injector: Injector\n ) {}\n\n /** Hardcoded voice agent avatar (Nia). */\n readonly displayAvatarUrl = 'https://www.jotform.com/uploads/mehmetkarakasli/form_files/1564593667676a8e85f23758.86945537_icon.png';\n\n callState: CallState = 'idle';\n statusText: string = '';\n duration: string = '00:00';\n isMicMuted: boolean = false;\n isUserSpeaking: boolean = false;\n audioLevels: number[] = [];\n isSpeaking: boolean = false;\n\n /** Once user or bot has spoken, show \"Ready\" instead of \"Connected\" when idle in call. */\n private hasLeftConnectedOnce: boolean = false;\n\n private subscriptions: Subscription[] = [];\n\n ngOnInit(): void {\n // When opened via Overlay, config is provided by injection\n this.injectedConfig = this.injector.get(VOICE_MODAL_CONFIG, null);\n this.onCloseCallback = this.injector.get(VOICE_MODAL_CLOSE_CALLBACK, null);\n if (this.injectedConfig) {\n this.apiUrl = this.injectedConfig.apiUrl;\n this.token = this.injectedConfig.token;\n this.botId = this.injectedConfig.botId;\n this.conversationId = this.injectedConfig.conversationId;\n this.apiKey = this.injectedConfig.apiKey ?? '';\n this.eventToken = this.injectedConfig.eventToken ?? '';\n this.eventUrl = this.injectedConfig.eventUrl ?? '';\n this.domainAuthority = this.injectedConfig.domainAuthority ?? 'prod-lite';\n this.agentName = this.injectedConfig.agentName ?? this.agentName;\n this.agentRole = this.injectedConfig.agentRole ?? this.agentRole;\n this.agentAvatar = this.injectedConfig.agentAvatar;\n }\n\n // Subscribe to observables\n this.subscriptions.push(\n this.voiceAgentService.callState$.subscribe(state => {\n this.callState = state;\n this.isSpeaking = state === 'talking';\n if (state === 'listening' || state === 'talking') {\n this.hasLeftConnectedOnce = true;\n }\n if (state === 'idle' || state === 'ended') {\n this.hasLeftConnectedOnce = false;\n }\n })\n );\n\n this.subscriptions.push(\n this.voiceAgentService.statusText$.subscribe(text => {\n this.statusText = text;\n })\n );\n\n this.subscriptions.push(\n this.voiceAgentService.duration$.subscribe(duration => {\n this.duration = duration;\n })\n );\n\n this.subscriptions.push(\n this.voiceAgentService.isMicMuted$.subscribe(muted => {\n this.isMicMuted = muted;\n })\n );\n\n this.subscriptions.push(\n this.voiceAgentService.isUserSpeaking$.subscribe(speaking => {\n this.isUserSpeaking = speaking;\n })\n );\n\n this.subscriptions.push(\n this.voiceAgentService.audioLevels$.subscribe(levels => {\n this.audioLevels = levels;\n })\n );\n\n // Modal opens in idle state; user clicks \"Start Call\" to connect (no auto-connect).\n this.voiceAgentService.resetToIdle();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.disconnect();\n }\n\n isConnecting: boolean = false;\n\n async startCall(): Promise<void> {\n if (this.isConnecting || (this.callState !== 'idle' && this.callState !== 'ended')) return;\n this.isConnecting = true;\n try {\n await this.voiceAgentService.connect(\n this.apiUrl,\n this.token,\n this.botId,\n this.conversationId,\n this.apiKey,\n this.eventToken,\n this.eventUrl,\n this.domainAuthority\n );\n } catch (error) {\n console.error('Failed to connect voice agent:', error);\n } finally {\n this.isConnecting = false;\n }\n }\n\n async disconnect(): Promise<void> {\n await this.voiceAgentService.disconnect();\n }\n\n toggleMic(): void {\n this.voiceAgentService.toggleMic();\n }\n\n /** Map audio level (0–100) to waveform bar height in px (3–20). */\n getWaveformHeight(level: number): number {\n const n = Math.min(100, Math.max(0, level ?? 0));\n return 3 + (n / 100) * 17;\n }\n\n /** Status label for active call. \"Connected\" only once; then \"Ready\" when idle in call. */\n get statusLabel(): string {\n if (this.callState === 'connecting') return this.statusText || 'Connecting...';\n if (this.callState === 'talking') return 'Talking...';\n if (this.callState === 'listening') return 'Listening';\n if (this.callState === 'connected') {\n return this.hasLeftConnectedOnce ? 'Listening' : 'Connected';\n }\n return this.statusText || '';\n }\n\n /** Call Again: reset to idle then start a new call. */\n callAgain(): void {\n this.voiceAgentService.resetToIdle();\n this.startCall();\n }\n\n /** Back to Chat: close modal and disconnect. */\n backToChat(): void {\n this.endCall();\n }\n\n /** End call but keep modal open to show Call Ended + Call Again / Back to Chat. */\n hangUp(): void {\n this.disconnect();\n }\n\n endCall(): void {\n this.disconnect();\n this.onCloseCallback?.();\n this.close.emit();\n }\n}\n","// import { Platform } from '@angular/cdk/platform';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { TranslationService } from '../translations/translation.service';\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Injector,\n Input,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n ViewContainerRef,\n} from '@angular/core';\nimport { MatDrawer } from '@angular/material/sidenav';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { of, Subscription } from 'rxjs';\nimport { catchError, switchMap } from 'rxjs/operators';\nimport { formatNow, formatTimeStamps } from '../../utils/utils';\nimport {\n dev_environment,\n prod_environment,\n} from '../../../environments/environment';\nimport { ConversationService } from '../conversation.service';\nimport { Observable } from 'rxjs';\nimport { SocketService } from '../socket-service.service';\n\nimport { FormBuilder, Validators } from '@angular/forms';\nimport * as SpeechSDK from 'microsoft-cognitiveservices-speech-sdk';\nimport { BotsService } from '../bot.service';\nimport * as marked from 'marked'; // Import marked\nimport { VoiceAgentService } from '../voice-agent/services/voice-agent.service';\nimport { VoiceAgentModalComponent } from '../voice-agent/components/voice-agent-modal/voice-agent-modal.component';\nimport {\n VOICE_MODAL_CONFIG,\n VOICE_MODAL_CLOSE_CALLBACK,\n VoiceModalConfig,\n} from '../voice-agent/voice-modal-tokens';\n\n@Component({\n selector: 'hivegpt-chat-drawer-package',\n templateUrl: './chat-drawer.component.html',\n styleUrls: ['./chat-drawer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChatDrawerComponent implements OnInit, OnChanges {\n @ViewChild('chatMain') private chatMain: ElementRef;\n @ViewChild('myInput', { static: false })\n myInput!: ElementRef<HTMLTextAreaElement>; // Reference to the textarea\n @ViewChildren('closeplaygroundbutton')\n closePlaygroundButtons: QueryList<ElementRef>;\n @ViewChild('drawer') drawer!: MatDrawer;\n @ViewChild('sourcesDrawer') sourcesDrawer!: MatDrawer;\n @ViewChild('editorsDrawer') editorsDrawer!: MatDrawer;\n private bodyOverflowClass = 'body-overflow-hidden';\n isCollapsedTrue = false;\n @Input() copilotName: string = 'HiveXGPT';\n @Input() firstName!: string;\n @Input() lastName!: string;\n @Input() apiKey!: string;\n @Input() bgBubbleAi!: string;\n @Input() bgBubbleUser!: string;\n @Input() bgGradient!: string[];\n @Input() botName!: string;\n @Input() botSkills!: string;\n @Input() botId!: string;\n @Input() orgId!: string;\n @Input() closeButtonColor!: string;\n @Input() closeButtonbgColor!: string;\n @Input() credentials!: [];\n @Input() dateTimeColor!: string;\n @Input() dateTextColor!: string;\n @Input() eventId!: string;\n @Input() eventUrl!: string;\n @Input() eventToken!: string;\n @Input() workspaceToken!: string;\n @Input() s27Token!: string;\n @Input() eventName!: string;\n @Input() botIcon!: string;\n @Input() formFieldBgColor!: string;\n @Input() formFieldTextColor!: string;\n @Input() fullView!: boolean;\n @Input() gradientColors!: string[];\n @Input() greeting!: string;\n @Input() messageTextColorAi!: string;\n @Input() messageTextColorUser!: string;\n @Input() rules!: string;\n @Input() sendButtonColor!: string;\n @Input() sendButtonTextColor!: string;\n @Input() showClose!: boolean;\n @Input() thumbsDownMessages!: string[];\n @Input() thumbsUpMessage!: string;\n @Input() timezone!: string;\n @Input() unknownResponses!: [];\n @Input() useOpenAi!: boolean;\n @Input() userId!: string;\n @Input() isDev!: boolean;\n\n @Input() againButtonColor!: string[];\n @Input() againButtonTextColor!: string[];\n @Output() feedbackEvent = new EventEmitter<string>();\n @Output() onCloseEvent = new EventEmitter<void>();\n @Output() openPage = new EventEmitter<any>();\n @Output() sessionActions = new EventEmitter<any>();\n @Output() closeBot = new EventEmitter<any>();\n @Output() connectWithUser = new EventEmitter<any>();\n @Output() scheduleMeeting = new EventEmitter<string>();\n @Output() refreshToken = new EventEmitter<any>();\n @Output() openSupport = new EventEmitter<any>();\n\n autogenKey = 'Autogen_eDJTtEU-NB0RtIpzq1w';\n addToMyAgendaAction = 'add_to_my_agenda';\n myUpcomingSessionAction = 'my_upcomming_session';\n connectOrFollowAction = 'connect_or_follow';\n aiResponse: string = '';\n chatLog: any[] = [];\n decoder = new TextDecoder();\n feedbackDone: boolean = false;\n greetingMsg: string = '';\n hasBackdropValue: boolean = false;\n input: string = '';\n listenerAdded = false;\n loading: boolean = false;\n mode: string = 'over';\n quickPrompts: any[] = [];\n thumbsDownMsgIndex = 0;\n userName: string = '';\n showStartAgain: boolean = false;\n isIOSDevice: boolean = false;\n showFeedBackIconsIndex: number | null = null;\n temperature: number = 1;\n speakers = [];\n environment: {\n USERS_API;\n BASE_URL;\n AGENTS_API;\n };\n pendingRequests: any;\n myConnections: any;\n conversationKey: string;\n conSessionKey: string = '';\n isFetchDataFor: boolean;\n is401: boolean;\n msg: any;\n chat: any;\n isWorkflowOpen: boolean;\n orgWorkflows: any;\n openWorkflowInput: boolean;\n selectedWorkflow: any;\n workflowForm: any;\n currentWorkflowActionProgress: number = 0;\n currentWorkflowAction: string = '';\n executingWorkflow: boolean;\n workflowExecutionDetails: any;\n showWorkflowExecutionDetails: any;\n currentWorkflowExecutionDetails: any;\n\n speechConfig: SpeechSDK.SpeechConfig;\n recognizer: SpeechSDK.SpeechRecognizer;\n recognizedText: string = '';\n authorizationToken: string = '';\n region: string = 'westeurope'; // Set your Azure region here\n isRecording: boolean;\n isVoiceModalOpen: boolean = false;\n private voiceModalOverlayRef: OverlayRef | null = null;\n private voiceTranscriptSubscriptions: Subscription[] = [];\n\n constructor(\n private fb: FormBuilder,\n private botService: BotsService,\n private cdr: ChangeDetectorRef,\n private http: HttpClient,\n private sanitizer: DomSanitizer,\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private socketService: SocketService,\n private conversationService: ConversationService, // private platform: Platform\n private translationService: TranslationService,\n private voiceAgentService: VoiceAgentService,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private injector: Injector\n ) {\n this.chatMain = new ElementRef(null);\n\n // if (this.platform.IOS) {\n // this.isIOSDevice = true;\n // }\n }\n getTranslation(key: string) {\n return this.translationService.getTranslation(key);\n }\n ngOnChanges(changes: SimpleChanges): void {\n // Handle eventId changes to update translation service\n if (changes.eventId && changes.eventId.currentValue) {\n this.translationService.setEventId(changes.eventId.currentValue);\n }\n\n if (changes.s27Token) {\n if (changes.s27Token.currentValue != changes.s27Token.previousValue) {\n this.s27Token = changes.s27Token.currentValue;\n\n console.log('isFetchDataFor: ', this.isFetchDataFor);\n console.log('msg: ', this.msg);\n console.log('chat: ', this.chat);\n if (this.is401) {\n if (this.isFetchDataFor) {\n this.fetchDataFor(this.msg, this.chat);\n } else {\n this.fetchData(this.msg);\n }\n }\n }\n }\n\n // Do NOT call initializeSocket() here. Socket.IO is for chat only; we defer\n // until the user actually uses chat (send message or start new conversation)\n // so that voice-only usage never triggers Socket.IO (avoids v2/v3 mismatch error).\n if (changes.orgId && changes.orgId.currentValue != changes.orgId.previousValue) {\n this.chatSocketInitialized = false;\n }\n }\n\n domainAuthorityValue: any = 'prod-lite';\n\n ngOnInit(): void {\n // Set the eventId in translation service to get the correct language from localStorage\n if (this.eventId) {\n this.translationService.setEventId(this.eventId);\n }\n\n this.environment = this.isDev ? dev_environment : prod_environment;\n\n const domain = window.location.hostname;\n\n // Determine the header value based on the domain\n\n if (domain.includes('pre-app.social27.com')) {\n this.domainAuthorityValue = 'pre-prod-lite';\n } else if (domain.includes('app.social27.com')) {\n this.domainAuthorityValue = 'prod-lite';\n } else if (domain.includes('hivegpt.io')) {\n this.domainAuthorityValue = 'hivegpt';\n }\n\n // this.fetchMyConnections().subscribe();\n // this.fetchPendingRequests().subscribe();\n\n this.changeTemperature(this.temperature);\n this.fetchBotConfig().subscribe(\n (res) => {\n this.cdr.markForCheck();\n\n this.fetchChatHistory().subscribe(\n (response) => {\n this.loading = false;\n this.mapChatHistory(response);\n this.cdr.markForCheck();\n },\n (err) => {\n console.error('Error fetching chat history:', err);\n }\n );\n },\n (err) => {\n console.error('Error fetching chat history:', err);\n }\n );\n // this.fetchAgents();\n // this.fetchEditorContent();\n this.cdr.markForCheck();\n // this.initializeSocket();\n this.botService\n .fetchSpeechAuthorizationToken(\n this.botId,\n this.apiKey,\n this.domainAuthorityValue\n )\n .subscribe((token) => {\n this.authorizationToken = token;\n this.initializeSpeechRecognizer(token);\n });\n }\n\n private eventSubscription: Subscription;\n /** True after Socket has been initialized for chat (avoids connecting on voice-only usage). */\n private chatSocketInitialized = false;\n\n /**\n * Call before chat actions so Socket.IO is used only for chat, not for voice.\n * Voice agent uses native WebSocket + Daily.js only; Socket.IO must not run during voice flow.\n */\n private ensureChatSocket(): void {\n if (this.chatSocketInitialized || !this.orgId) return;\n this.chatSocketInitialized = true;\n this.initializeSocket();\n }\n\n initializeSocket() {\n try {\n this.socketService.disconnectSocketConnection();\n } catch (error) {}\n setTimeout(() => {\n this.socketService.connectSocketConnection();\n setTimeout(() => {\n console.log('YES INIT');\n const conversation_id = this.conversationService.getKey(this.botId);\n\n this.socketService.registerUserSpecificHiveSocket(\n this.botId,\n conversation_id,\n this.orgId\n );\n setTimeout(() => {\n this.listenSockets();\n }, 300);\n }, 200);\n }, 300);\n }\n\n subscriptionNew: any;\n socketData: any;\n\n listenSockets() {\n if (this.eventSubscription) {\n this.eventSubscription.unsubscribe();\n }\n console.log('Listen Socket');\n this.eventSubscription = this.conversationService\n .getUserSpecificNotification()\n .subscribe(\n (res) => {\n console.log('Listen Socket response');\n console.log(res);\n // Check if OtherFields exists in the response\n if (res?.m?.OtherFields?.workflow_id) {\n const {\n percentage,\n output,\n action_name,\n current_action_name,\n workflow_execution_id,\n time_stamp,\n } = res?.m?.OtherFields;\n\n this.currentWorkflowActionProgress = percentage;\n this.currentWorkflowAction = action_name;\n\n const actionIndex = this.workflowExecutionDetails.Actions.findIndex(\n (a) => a.Name == current_action_name\n );\n\n if (actionIndex !== -1) {\n this.workflowExecutionDetails.Actions[actionIndex]['Output'] =\n output;\n this.workflowExecutionDetails.Actions[actionIndex][\n 'InsertTimeStamp'\n ] = formatTimeStamps(this.timezone, time_stamp);\n } else {\n console.error(`Action with name ${action_name} not found`);\n }\n\n this.currentWorkflowExecutionDetails =\n this.workflowExecutionDetails;\n\n if (this.currentWorkflowActionProgress == 100) {\n this.chatLog[this.chatLog.length - 1]['WorkflowExecutionId'] =\n workflow_execution_id;\n this.isChatingWithAi = false;\n this.executingWorkflow = false;\n this.focusOnTextarea();\n }\n\n this.cdr.detectChanges();\n } else if (res?.m?.OtherFields) {\n const {\n conversation_id,\n bot_id,\n message_id,\n answer,\n web_results,\n search_results,\n graphs,\n execution_graphs,\n suggestions,\n } = res?.m?.OtherFields;\n console.log('message_id1');\n console.log(res?.m?.OtherFields);\n var currentChatMessage = this.chatLog.find(\n (p) => p._id == message_id\n );\n console.log(this.chatLog);\n if (!currentChatMessage) {\n console.log('message_id2');\n console.log(message_id);\n currentChatMessage = {\n _id: message_id,\n type: 'ai',\n time: formatNow(this.timezone),\n };\n\n this.chatLog.push(currentChatMessage);\n\n this.showFeedBackIconsIndex = this.chatLog.length - 1;\n console.log('message_id3');\n console.log(message_id);\n this.cdr.detectChanges();\n }\n\n // Handle the fields based on their presence\n if (search_results && Array.isArray(search_results)) {\n console.log('Online Search Terms:', search_results);\n currentChatMessage.searchTerms = search_results;\n this.cdr.detectChanges();\n }\n\n if (web_results && Array.isArray(web_results)) {\n console.log('Web Results:', web_results);\n currentChatMessage.sourcesList = web_results;\n currentChatMessage.displayedSources = web_results?.slice(0, 3); // First 3 cards\n currentChatMessage.remainingSources = web_results?.slice(3); // Remaining items\n this.cdr.detectChanges();\n }\n\n if (answer) {\n this.isChatingWithAi = false;\n console.log('Answer:', answer);\n\n currentChatMessage.message =\n this.processMessageForDisplay(answer);\n this.cdr.detectChanges();\n this.scrollToBottom();\n this.focusOnTextarea();\n }\n\n if (graphs && Array.isArray(graphs)) {\n console.log('Graphs:', graphs);\n currentChatMessage.graphs = graphs;\n this.cdr.detectChanges();\n }\n\n if (execution_graphs && Array.isArray(execution_graphs)) {\n console.log('Execution Graphs:', execution_graphs);\n currentChatMessage.executionGraphs = execution_graphs;\n this.cdr.detectChanges();\n }\n\n if (suggestions && Array.isArray(suggestions)) {\n console.log('suggestions:', suggestions);\n currentChatMessage.relatedListItems = suggestions;\n this.cdr.detectChanges();\n // Process online search terms as needed\n }\n\n // Add any other fields and their processing here\n } else {\n console.warn('OtherFields is missing in the response');\n }\n },\n (err) => {\n this.eventSubscription.unsubscribe();\n console.error('Error in fetching data from socket', err);\n }\n );\n }\n\n initializeSocketAndListen() {}\n handleEvent(data: any, type: string) {\n switch (type) {\n case 'webresult':\n break;\n case 'answer':\n break;\n case 'graph':\n break;\n default:\n break;\n }\n }\n ngOnDestroy(): void {\n if (this.eventSubscription) {\n this.eventSubscription.unsubscribe();\n }\n this.voiceTranscriptSubscriptions.forEach(sub => sub.unsubscribe());\n this.socketService.disconnectSocketConnection();\n //this.socketService.close();\n }\n changeTemperature(newTemperature: number) {\n if (this.loading) return;\n this.temperature = newTemperature;\n const wrapper = document.querySelector('.hivegpt-chat-wrapper');\n // Remove existing theme classes from body\n wrapper?.classList.remove('creative', 'balanced', 'precise');\n\n switch (newTemperature) {\n case 0:\n wrapper?.classList.add('creative');\n break;\n case 1:\n wrapper?.classList.add('balanced');\n break;\n case 2:\n wrapper?.classList.add('precise');\n break;\n default:\n break;\n }\n }\n\n onStartAgain() {\n if (this.loading) return;\n this.showStartAgain = false;\n this.chatLog = [];\n this.chatLog.push({\n type: 'ai',\n message: this.greetingMsg,\n\n time: formatNow(this.timezone),\n });\n this.archieveMessages().subscribe();\n }\n\n archieveMessages() {\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n 'x-api-key': this.apiKey,\n 'hive-bot-id': this.botId,\n 'domain-authority': this.domainAuthorityValue,\n });\n const url = `${this.environment.BASE_URL}/bot/clear-history/${this.botId}/${this.userId}`;\n return this.http.post(url, { headers }).pipe(\n switchMap((res: any) => {\n return of(res);\n }),\n catchError((error) => {\n return of(null);\n })\n );\n }\n\n triggerSupport() {\n this.openSupport.emit();\n }\n fetchBotConfig() {\n this.loading = true;\n const headers = new HttpHeaders({\n 'x-api-key': this.apiKey,\n 'hive-bot-id': this.botId,\n 'domain-authority': this.domainAuthorityValue,\n });\n const url = `${this.environment.BASE_URL}/bots?bot_id=${this.botId}`;\n return this.http.get(url, { headers }).pipe(\n switchMap((res: any) => {\n this.botName = this.getTranslation(res.Name);\n this.botIcon = res.Icon;\n this.botSkills = res?.Skills;\n this.greetingMsg = res.Greeting;\n\n this.thumbsDownMessages = res?.NegativeResponses?.length\n ? res.NegativeResponses\n : [\n this.getTranslation(\n `We are sorry we've not been able to answer your question`\n ),\n ];\n this.quickPrompts = res.QuickPrompts;\n this.cdr.markForCheck();\n this.loading = false;\n return of(res);\n }),\n catchError((error) => {\n console.error('Error fetching chatbot config: ', error);\n this.loading = false;\n return of(null);\n })\n );\n }\n\n fetchChatHistory(): Observable<any> {\n this.loading = true;\n\n this.conversationKey = this.conversationService.getKey(this.botId, false);\n this.conSessionKey = this.conversationService.getSessionKey(\n this.botId,\n false\n );\n const url = `${this.environment.BASE_URL}/conversations/${this.conversationKey}?session_id=${this.conSessionKey}`;\n const headers = new HttpHeaders({\n accept: 'application/json',\n 'x-api-key': this.apiKey,\n 'hive-bot-id': this.botId,\n 'domain-authority': this.domainAuthorityValue,\n });\n\n return this.http\n .get(url, { headers })\n .pipe(catchError(this.handleError<any>('fetchConversation')));\n }\n\n private handleError<T>(operation = 'operation', result?: T) {\n return (error: any): Observable<T> => {\n console.error(`${operation} failed: ${error.message}`);\n return of(result as T);\n };\n }\n // fetchChatHistory() {\n // this.loading = true;\n // const headers = new HttpHeaders({\n // 'Content-Type': 'application/json',\n // 'x-api-key': this.apiKey,\n // });\n // return this.http\n // .get(`${this.environment.BASE_URL}/conversations/${this.conversationKey}`, { headers })\n // .pipe(\n // switchMap((res: any) => {\n // this.loading = false;\n // return of(res);\n // }),\n // catchError((error: any) => {\n // console.error('Error fetching chat history: ', error);\n // this.loading = false;\n // return of(null);\n // })\n // );\n // }\n\n mapChatHistory(chats: any) {\n this.chatLog.push({\n type: 'ai',\n message: this.greetingMsg,\n time: formatNow(this.timezone),\n });\n if (chats && chats?.Messages?.length) {\n chats?.Messages.forEach((chat: any) => {\n if (chat.Type == 'user') {\n this.chatLog.push({\n type: 'user',\n message: this.processMessageForDisplay(chat.Text),\n time: formatTimeStamps(this.timezone, chat.InsertTimestamp),\n copied: false,\n isCollapsedTrue: false,\n WorkflowExecutionId: chat.WorkflowExecutionId,\n _id: chat._id,\n });\n }\n if (chat.Type == 'ai') {\n var sourcesList = chat.WebLinks || [];\n var displayedSources = chat.WebLinks.slice(0, 3); // First 3 cards\n var remainingSources = chat.WebLinks.slice(3); // Remaining items\n\n this.chatLog.push({\n type: 'ai',\n message: this.processMessageForDisplay(chat.Text),\n executionGraphs: chat.ExecutionGraphs,\n graphs: chat.Graphs,\n searchTerms: chat.SearchTerms,\n sourcesList: sourcesList,\n displayedSources: displayedSources,\n remainingSources: remainingSources,\n time: formatTimeStamps(this.timezone, chat.InsertTimestamp),\n copied: false,\n isCollapsedTrue: false,\n _id: chat._id,\n });\n this.showFeedBackIconsIndex = this.chatLog.length - 1;\n }\n });\n this.showStartAgain = true;\n }\n this.scrollToBottom();\n this.cdr.markForCheck();\n }\n\n processMessage(message: string): SafeHtml {\n if (!message || !(message?.length > 0)) {\n return '';\n }\n\n // console.log('here is my message')\n // console.log(message);\n\n message = message.trim();\n\n const markdownLinkRegex = /\\[([^[]+)]\\(([^)]+)\\)/g;\n const urlRegex = /(?<!href=\")\\bhttps?:\\/\\/\\S+(?<![.,])/gi;\n\n if (markdownLinkRegex.test(message)) {\n const html = message.replace(\n markdownLinkRegex,\n '<a href=\"$2\" target=\"_blank\">$1</a>'\n );\n //console.log('Sanitized message: ', message);\n return this.sanitizeHtml(html);\n }\n\n if (urlRegex.test(message)) {\n const html = message.replace(\n urlRegex,\n '<a href=\"$&\" target=\"_blank\">$&</a>'\n );\n // console.log('Sanitized message: ', message);\n return this.sanitizeHtml(html);\n }\n\n message = message.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>');\n\n message = message.replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>');\n // Convert Markdown headers to HTML headers\n message = message.replace(/^(#{1,6})\\s+(.*)$/gm, (match, hashes, text) => {\n const level = hashes.length;\n return `<h${level}>${text}</h${level}>`;\n });\n\n this.cdr.markForCheck();\n const sanitizedMessage = this.sanitizeHtml(message);\n return sanitizedMessage;\n }\n\n ngAfterViewChecked() {\n const feedbackLinks =\n this.elementRef.nativeElement.querySelectorAll('.feedback-link');\n feedbackLinks.forEach((link: any) => {\n link.addEventListener(\n 'click',\n this.onFeedbackClick.bind(this, 'zendesk')\n );\n });\n // if (this.elementRef.nativeElement.querySelector('.feedback-link')) {\n // this.elementRef.nativeElement\n // .querySelector('.feedback-link')\n // .addEventListener('click', this.onFeedbackClick.bind(this, 'zendesk'));\n // }\n }\n\n sanitizeHtml(html: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n\n onFeedbackClick(value: string) {\n this.feedbackEvent.emit(value);\n }\n\n onClose() {\n this.renderer.removeClass(document.body, this.bodyOverflowClass);\n this.onCloseEvent.emit();\n }\n\n sendMessageWithTile(prompt: string) {\n this.input = prompt;\n this.fetchData();\n this.scrollToBottom();\n }\n isChatingWithAi = false;\n fetchData(msg = null) {\n this.input = msg || this.input?.trim();\n this.msg = this.input;\n if (!this.input || this.loading) {\n return;\n }\n this.ensureChatSocket();\n\n this.chatLog.push({\n type: 'user',\n message: this.processMessageForDisplay(this.input),\n time: formatNow(this.timezone),\n copied: false,\n isCollapsedTrue: false,\n });\n\n try {\n const textarea = this.myInput.nativeElement;\n textarea.style.height = 'hidden'; // Reset the height\n textarea.style.height = `62px`;\n } catch (error) {}\n this.cdr.markForCheck();\n\n this.aiResponse = '';\n this.isChatingWithAi = true;\n\n this.makeAskRequest(this.input, this.agents, this.conversationKey);\n }\n fetchDataFor(msg, chat) {\n const inputMsg = msg?.trim();\n if (!inputMsg || this.loading) {\n return;\n }\n this.ensureChatSocket();\n try {\n chat.relatedListItems = [];\n this.cdr.detectChanges();\n } catch (error) {}\n\n this.scrollToBottom();\n this.chatLog.push({\n type: 'user',\n message: this.processMessageForDisplay(inputMsg),\n time: formatNow(this.timezone),\n copied: false,\n isCollapsedTrue: false,\n });\n\n this.cdr.markForCheck();\n\n this.aiResponse = '';\n this.isChatingWithAi = true;\n\n this.makeAskRequest(inputMsg, this.agents, this.conversationKey, msg, chat);\n }\n fetchSmallTalk() {\n this.loading = true;\n this.cdr.markForCheck();\n\n const url = `${this.environment.BASE_URL}/bot/small-talk/${this.botId}/${this.userId}`;\n\n this.http\n .get<{ smallTalk: string }>(url, {\n headers: {\n 'x-api-key': this.apiKey,\n 'hive-bot-id': this.botId,\n 'domain-authority': this.domainAuthorityValue,\n },\n })\n .pipe(\n catchError((error) => {\n console.error('Error while fetching small talk:', error);\n\n return of(null);\n })\n )\n .subscribe((response) => {\n this.loading = false;\n this.cdr.markForCheck();\n\n if (!response) {\n return;\n }\n\n if (response && response.smallTalk) {\n this.chatLog.push({\n type: 'ai',\n message: this.processMessage(response.smallTalk),\n time: formatNow(this.timezone),\n isFeedbackMsg: true,\n });\n this.showFeedBackIconsIndex = this.chatLog.length - 2;\n // this.scrollToBottom();\n this.cdr.markForCheck();\n }\n });\n }\n\n readAllChunks = (stream: any) => {\n const reader = stream.getReader();\n const allSuggestions: string[] = [];\n\n reader.closed.catch((err: any) => {\n if (err) {\n console.error('Error reading stream: ', err);\n }\n\n this.isChatingWithAi = false;\n this.scrollToBottom();\n return;\n });\n\n return new ReadableStream({\n start: (controller) => {\n return this.pump(controller, reader, allSuggestions);\n },\n });\n };\n\n pump(controller: any, reader: any, allSuggestions: string[]) {\n reader.read().then(({ done, value }: any) => {\n const lastItem = this.chatLog[this.chatLog.length - 1];\n\n if (done) {\n lastItem.message = this.processMessageForDisplay(lastItem.message);\n this.chatLog.pop();\n this.chatLog.push(lastItem);\n if (allSuggestions?.length) {\n this.chatLog.push({\n type: 'suggestions',\n suggestions: allSuggestions,\n });\n }\n\n controller.close();\n this.isChatingWithAi = false;\n // this.scrollToBottom();\n this.cdr.markForCheck();\n this.showStartAgain = true;\n\n // setTimeout(() => {\n // this.fetchSmallTalk();\n // },1000)\n return;\n }\n\n let decodedChunk = this.decoder.decode(value, { stream: true });\n this.aiResponse += decodedChunk;\n if (lastItem.type === 'ai') {\n const suggestionsMatch = this.aiResponse.match(/<sug>(.*?)<\\/sug>/g);\n if (suggestionsMatch) {\n suggestionsMatch.forEach((match) => {\n this.aiResponse = this.aiResponse.replace(match, '');\n allSuggestions.push(match?.replace(/<\\/?sug>/g, ''));\n });\n }\n\n lastItem.message = this.aiResponse;\n this.cdr.markForCheck();\n } else {\n this.isChatingWithAi = false;\n\n let aiFormattedData: any;\n\n try {\n console.log('parsing json ');\n aiFormattedData = JSON.parse(JSON.parse(this.aiResponse));\n } catch (e) {\n try {\n console.log('parsing json 2');\n aiFormattedData = JSON.parse(this.aiResponse);\n } catch (e) {}\n }\n\n console.log('parsing json done');\n\n if (aiFormattedData && aiFormattedData?.section_id?.length > 0) {\n if (\n aiFormattedData.section_id == 'company_search' ||\n aiFormattedData.section_id == 'user_search' ||\n aiFormattedData.section_id == 'industry_company_search'\n ) {\n this.fetchMyConnections().subscribe();\n this.fetchPendingRequests().subscribe();\n }\n\n if (aiFormattedData.section_id == this.myUpcomingSessionAction) {\n var speakerIds = [];\n aiFormattedData.content?.forEach((session) => {\n speakerIds = [...speakerIds, ...session.speakers];\n });\n\n if (speakerIds?.length > 0) this.getSpeakersByStaffIds(speakerIds);\n }\n\n if (\n aiFormattedData.section_id == this.addToMyAgendaAction &&\n aiFormattedData.content?.length > 0\n ) {\n this.openPage.next({\n sectionId: aiFormattedData.section_id,\n sessionIds: aiFormattedData.content,\n });\n }\n\n if (aiFormattedData.section_id == this.connectOrFollowAction) {\n let usersLen = aiFormattedData.content?.length;\n if (usersLen > 1) {\n this.openPage.next({\n sectionId: 'open_networking_drawer',\n search: aiFormattedData.content,\n });\n } else if (usersLen == 1) {\n this.openPage.next({\n sectionId: aiFormattedData.section_id,\n connetUserIds: [aiFormattedData.content[0].userId],\n });\n }\n }\n\n if (aiFormattedData.is_open_page == 'true') {\n this.openPage.next({\n sectionId: aiFormattedData.section_id,\n search: aiFormattedData.content,\n });\n\n if (this.isMobileBrowser()) {\n aiFormattedData.message +=\n '\\n\\n' + '<a id=\"closeBotNow\">Click Here</a> to see results.';\n }\n }\n\n this.chatLog.push({\n type: 'ai',\n message: aiFormattedData.message,\n action: aiFormattedData,\n time: formatNow(this.timezone),\n });\n\n if (this.isMobileBrowser()) {\n setTimeout(() => {\n this.addCloseBotClickEvent();\n }, 500);\n }\n\n this.aiResponse = '';\n } else {\n this.chatLog.push({\n type: 'ai',\n message: this.aiResponse,\n time: formatNow(this.timezone),\n });\n }\n\n this.showFeedBackIconsIndex = this.chatLog.length - 1;\n this.cdr.markForCheck();\n }\n\n this.scrollToBottom();\n\n // Enqueue the next data chunk into our target stream\n controller.enqueue(value);\n this.pump(controller, reader, allSuggestions);\n });\n }\n\n submitFeedback(flag: boolean, message) {\n console.log(message);\n\n this.feedbackDone = true;\n this.showFeedBackIconsIndex = null;\n const conversation_id = this.conversationService.getKey(this.botId);\n const url = `${this.environment.AGENTS_API}/Conversation/coPilot/${this.botId}/conversation/${conversation_id}/helpful-response`;\n fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n apiKey: 'Conversation_WIz/qAm+EEmfOkFaUA/weA==',\n 'hive-bot-id': this.botId,\n 'domain-authority': this.domainAuthorityValue,\n },\n body: JSON.stringify({ messageId: message._id, isHelpful: flag }),\n }).then(() => {\n if (flag) {\n this.chatLog.push({\n type: 'ai',\n message:\n this.thumbsUpMessage ||\n this.getTranslation('May I assist you with anything else'),\n time: formatNow(this.timezone),\n isFeedbackMsg: true,\n });\n\n this.scrollToBottom();\n this.cdr.markForCheck();\n this.feedbackDone = false;\n this.showFeedBackIconsIndex = null;\n return;\n }\n\n this.chatLog.push({\n type: 'ai',\n message: this.processMessage(\n this.thumbsDownMessages[this.thumbsDownMsgIndex]\n ),\n time: formatNow(this.timezone),\n isFeedbackMsg: true,\n });\n this.thumbsDownMsgIndex =\n (this.thumbsDownMsgIndex + 1) % this.thumbsDownMessages.length;\n this.scrollToBottom();\n this.cdr.markForCheck();\n setTimeout(() => {\n const supportLink = document.getElementById('supportLink88');\n if (supportLink) {\n supportLink.addEventListener('click', this.triggerSupport.bind(this));\n }\n }, 200);\n this.feedbackDone = false;\n this.showFeedBackIconsIndex = null;\n });\n }\n handleKeydown(event: KeyboardEvent) {\n if (event.key === 'Enter' && !event.shiftKey) {\n // Prevent default behavior (new line)\n event.preventDefault();\n // Call your submit function\n this.handleSubmit(event);\n }\n }\n handleSubmit(event) {\n this.fetchData();\n this.scrollToBottom();\n }\n\n handleUpClick(idx: any) {\n if (this.feedbackDone) {\n return;\n }\n\n this.submitFeedback(true, this.chatLog[idx]);\n this.chatLog[idx].liked = !this.chatLog[idx].liked;\n\n if (this.chatLog[idx].unliked) {\n this.chatLog[idx].unliked = !this.chatLog[idx].unliked;\n }\n\n this.cdr.markForCheck();\n }\n\n handleDownClick(idx: any) {\n if (this.feedbackDone) return;\n this.submitFeedback(false, this.chatLog[idx]);\n this.chatLog[idx].unliked = !this.chatLog[idx].unliked;\n if (this.chatLog[idx].liked)\n this.chatLog[idx].liked = !this.chatLog[idx].liked;\n }\n // handleCopyClick(index: any) {\n // // Copy the message to the clipboard\n // const contentToCopy = this.chatLog[index].message;\n // console.log('contentToCopy');\n // console.log(contentToCopy);\n // navigator.clipboard.writeText(contentToCopy).then(() => {\n // // Indicate that the message was copied\n // this.chatLog[index].copied = true;\n // this.cdr.detectChanges();\n // // Reset the copied state after a delay\n // setTimeout(() => {\n // this.chatLog[index].copied = false;\n // this.cdr.detectChanges();\n // }, 2000); // Reset after 2 seconds\n // });\n // }\n copyText(id, index) {\n // Get the text element\n var textElement = document.getElementById(id);\n\n // Create a temporary textarea element to copy the text\n var tempTextArea = document.createElement('textarea');\n tempTextArea.value = textElement.innerText;\n\n // Append the textarea to the body (necessary for the execCommand to work)\n document.body.appendChild(tempTextArea);\n\n // Select the text inside the textarea\n tempTextArea.select();\n\n // Copy the text to the clipboard\n document.execCommand('copy');\n\n // Remove the temporary textarea\n document.body.removeChild(tempTextArea);\n\n // Optionally, you can alert the user or change the button text to indicate the copy was successful\n // alert('Text copied to clipboard!');\n\n this.chatLog[index].copied = true;\n this.cdr.detectChanges();\n // Reset the copied state after a delay\n setTimeout(() => {\n this.chatLog[index].copied = false;\n this.cdr.detectChanges();\n }, 2000); // Reset after 2 seconds\n }\n handleCopyClick(index: any) {\n // Copy the message to the clipboard\n const contentToCopy = this.chatLog[index].message;\n const resutlt = this.copyText('messageText_' + index, index);\n }\n\n sanitizeHTML(html: string): string {\n const doc = new DOMParser().parseFromString(html, 'text/html');\n\n // Create a new document fragment to hold the simplified content\n const fragment = document.createDocumentFragment();\n\n // Append the children of the body of the parsed document to the fragment\n Array.from(doc.body.childNodes).forEach((node) => {\n fragment.appendChild(node.cloneNode(true));\n });\n\n // Create a new div element to hold the simplified HTML\n const simplifiedDiv = document.createElement('div');\n simplifiedDiv.appendChild(fragment);\n\n // Remove complex tags or attributes as needed\n // Example: remove scripts\n simplifiedDiv\n .querySelectorAll('script')\n .forEach((script) => script.remove());\n\n // Return the simplified HTML as a string\n return simplifiedDiv.innerHTML;\n }\n\n currentMessageForEditor: any = '';\n currentIndexForEditor: any = -1;\n handleEditorClick(index: any) {\n if (this.currentIndexForEditor == -1) {\n this.currentIndexForEditor = index;\n this.currentMessageForEditor = this.sanitizeHTML(\n this.chatLog[index].message\n );\n this.currentMessageForEditor = this.currentMessageForEditor.replace(\n 'SafeValue must use [property]=binding:',\n ''\n );\n\n this.cdr.detectChanges();\n } else {\n if (this.currentIndexForEditor == index) {\n this.currentMessageForEditor += this.sanitizeHTML(\n this.chatLog[index].message\n );\n this.currentMessageForEditor = this.currentMessageForEditor.replace(\n 'SafeValue must use [property]=binding:',\n ''\n );\n this.cdr.detectChanges();\n } else {\n this.currentIndexForEditor = index;\n this.currentMessageForEditor = this.sanitizeHTML(\n this.chatLog[index].message\n );\n this.currentMessageForEditor = this.currentMessageForEditor.replace(\n 'SafeValue must use [property]=binding:',\n ''\n );\n this.cdr.detectChanges();\n }\n }\n this.chatLog[index].isEditor = true;\n this.cdr.detectChanges();\n // Reset the copied state after a delay\n setTimeout(() => {\n this.chatLog[index].isEditor = false;\n this.cdr.detectChanges();\n }, 2000); // Reset after 2 seconds\n this.editorsDrawer.open();\n const button = document.getElementById('botcloseplaygroundbutton');\n if (button) {\n button.style.display = 'none';\n }\n this.cdr.detectChanges();\n }\n scrollToBottom() {\n let counter = 0;\n const interval = setInterval(() => {\n this.chatMain.nativeElement.scrollTop =\n this.chatMain.nativeElement.scrollHeight;\n if (counter++ > 5) clearInterval(interval);\n }, 5);\n }\n\n focusOnTextarea() {\n setTimeout(() => {\n if (this.myInput && this.myInput.nativeElement) {\n this.myInput.nativeElement.focus();\n }\n }, 100);\n }\n\n handleAction(action: any) {\n console.info('incoming action from the chatbot AI');\n console.info(action);\n\n if (action?.content) {\n }\n }\n\n ngAfterViewInit() {\n // Check if the drawer is initially open and apply overflow hidden to body if so\n if (this.drawer.opened) {\n this.setBodyOverflow();\n }\n\n // Listen to changes in the drawer being opened or closed\n this.drawer.openedChange.subscribe((opened: boolean) => {\n if (opened) {\n this.setBodyOverflow();\n } else {\n this.removeBodyOverflow();\n }\n });\n\n this.drawer.openedChange.subscribe((opened) => {\n if (opened) {\n setTimeout(() => {\n if (this.myInput && this.myInput.nativeElement) {\n this.myInput.nativeElement.focus(); // Focus on the textarea\n }\n });\n }\n });\n }\n\n private setBodyOverflow() {\n this.renderer.addClass(document.body, this.bodyOverflowClass);\n }\n\n private removeBodyOverflow() {\n this.renderer.removeClass(document.body, this.bodyOverflowClass);\n }\n\n getSpeakersByStaffIds(ids) {\n const url = `${this.environment.USERS_API}/events/${this.eventId}/users/get-by-staff-ids`;\n fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: 'Bearer ' + 'your_token_here',\n },\n body: JSON.stringify(ids),\n })\n .then((response) => {\n if (response.ok) {\n return response.json(); // Parse the JSON body of the response\n } else {\n throw new Error('Network response was not ok.');\n }\n })\n .then((data) => {\n if (data?.length > 0) {\n data.forEach((speaker) => {\n this.speakers[speaker.id] = speaker;\n });\n\n this.cdr.markForCheck();\n }\n })\n .catch((err) => {\n console.error('Error fetching data:', err);\n this.loading = false;\n });\n }\n\n performSessionAction(sessionId, action) {\n this.sessionActions.next({\n sessionId,\n action,\n });\n }\n\n addCloseBotClickEvent() {\n const element = this.elementRef.nativeElement.querySelector('#closeBotNow');\n if (element) {\n this.renderer.listen(element, 'click', () => {\n this.closeBot.next();\n });\n }\n }\n\n isMobileBrowser() {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n }\n\n connectToUser(userId) {\n this.connectWithUser.emit({\n connect: !this.canDisconnect(userId),\n userId,\n });\n\n setTimeout(() => {\n this.fetchMyConnections().subscribe((res) => {\n this.cdr.markForCheck();\n });\n this.fetchPendingRequests().subscribe((res) => {\n this.cdr.markForCheck();\n });\n }, 500);\n }\n\n scheduleMeetingWithUser(user) {\n this.scheduleMeeting.emit(user);\n }\n\n canConnect(userId) {\n return !(\n this.canDisconnect(userId) ||\n this.pendingRequests.find((a) => a == userId)\n );\n }\n\n canDisconnect(userId) {\n return this.myConnections.find((conn) => conn.userId == userId);\n }\n\n fetchPendingRequests() {\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n apiKey: this.autogenKey,\n });\n return this.http\n .get(\n `${this.environment.USERS_API}/events/${this.eventId}/connection-requests/autogen/pending-sent-requests?userId=${this.userId}`,\n { headers }\n )\n .pipe(\n switchMap((res: any) => {\n this.pendingRequests = res;\n this.cdr.markForCheck();\n return of(res);\n }),\n catchError((error: any) => {\n console.error('Error fetching pending requests: ', error);\n return of(null);\n })\n );\n }\n\n fetchMyConnections() {\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n apiKey: this.autogenKey,\n });\n return this.http\n .get(\n `${this.environment.USERS_API}/events/${this.eventId}/users-connections/autogen?userId=${this.userId}`,\n { headers }\n )\n .pipe(\n switchMap((res: any) => {\n this.myConnections = res;\n this.cdr.markForCheck();\n return of(res);\n }),\n catchError((error: any) => {\n console.error('Error fetching pending requests: ', error);\n return of(null);\n })\n );\n }\n\n isDropdownOpen: boolean = false;\n agents: any;\n selectedAgents = [];\n allSelected = false;\n // Toggle the dropdown visibility\n toggleDropdown() {\n if (!this.agents) this.fetchAgents();\n this.isDropdownOpen = !this.isDropdownOpen;\n this.cdr.detectChanges();\n }\n\n onSelectAll(event: Event): void {\n this.agents?.forEach((agent) => (agent.selected = false));\n this.cdr.detectChanges();\n }\n\n onAgentChange(agent: any): void {\n //agent.selected = !agent.selected;\n //console.log(agent);\n let agentFound = this.agents.filter((p) => p.id == agent.id);\n if (agentFound && agentFound.length > 0) {\n agentFound[0].selected = !agentFound[0].selected;\n this.cdr.detectChanges();\n }\n this.cdr.detectChanges();\n }\n\n areAllSelected(): boolean {\n return this.agents?.every((agent) => !agent.selected);\n }\n\n getDropdownHeaderText(): string {\n const selectedAgents = this.agents?.filter((agent) => agent.selected);\n if (!selectedAgents) {\n return 'All Agents';\n } else {\n if (selectedAgents && selectedAgents?.length === 0) {\n return 'All Agents';\n } else {\n return selectedAgents?.length > 1\n ? `${selectedAgents?.length} Agents Selected`\n : `${selectedAgents?.length} Agent Selected`;\n }\n }\n }\n fetchAgents_http() {\n this.loading = true;\n const url = `${this.environment.AGENTS_API}/CoPilot/${this.botId}/active-agents`;\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n });\n\n return this.http.post(url, {}, { headers }).pipe(\n switchMap((res: any) => {\n if (res) {\n this.agents = res.map((agent) => ({\n ...agent,\n selected: false,\n }));\n }\n this.cdr.markForCheck();\n\n return of(res);\n }),\n catchError((error) => {\n console.error('Error fetching chatbot config: ', error);\n\n return of(null);\n })\n );\n }\n isDocInEditMode = false;\n documentContent: any;\n\n conversationId: any;\n isContentLoaded = false;\n\n fetchContent_http() {\n this.isDocInEditMode = false;\n this.isContentLoaded = false;\n console.log('API call function');\n this.loading = true;\n const conversation_id = this.conversationService.getKey(this.botId);\n this.conversationId = conversation_id;\n const url = `${this.environment.AGENTS_API}/ConversationDocuments?conversationId=${conversation_id}&botId=${this.botId}`;\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n apiKey: 'WIz/qAm+EEmfOkFaUA/weA==',\n 'domain-authority': this.domainAuthorityValue,\n });\n\n return this.http.get(url, { headers }).pipe(\n switchMap((res: any) => {\n if (res) {\n this.isDocInEditMode = true;\n this.documentContent = res;\n console.log('Get API callled success');\n this.isContentLoaded = true;\n console.log(res);\n }\n this.cdr.markForCheck();\n\n return of(res);\n }),\n catchError((error) => {\n console.error('Error fetching chatbot config DJ: ', error);\n this.isDocInEditMode = false;\n this.isContentLoaded = true;\n\n if (error?.status == 404) {\n console.log('dash');\n this.isDocInEditMode = false;\n this.isContentLoaded = true;\n }\n return of(null);\n })\n );\n }\n\n fetchAgents() {\n this.fetchAgents_http().subscribe();\n }\n\n fetchEditorContent() {\n this.fetchContent_http().subscribe();\n }\n\n // events/${eventId}/users-connections\n processMessageForDisplay(markdown: string): SafeHtml {\n try {\n // Create a custom renderer to modify <a> tags\n const renderer = new marked.Renderer();\n\n // Customize anchor tags to include target=\"_blank\"\n renderer.link = (href: string, title: string, text: string) => {\n return `<a href=\"${href}\" title=\"${\n title || ''\n }\" target=\"_blank\">${text}</a>`;\n };\n\n // Parse the markdown content to HTML using marked with the custom renderer\n const markdownContent = marked.parse(markdown, { renderer: renderer });\n\n // Sanitize the parsed HTML using Angular's DomSanitizer\n const sanitizedHtml =\n this.sanitizer.bypassSecurityTrustHtml(markdownContent);\n\n // Return the safe HTML content for display\n return sanitizedHtml;\n } catch (error) {\n console.error('Error processing markdown:', error);\n return ''; // Return an empty string or handle the error appropriately\n }\n }\n\n prepareHtml(markdown: string): string {\n if (!markdown || !(markdown.length > 0)) {\n console.error('Input Markdown is null or empty');\n return '';\n }\n\n // Convert Markdown headers (### or ##) to <strong> for bold headings\n let html = markdown.replace(\n /^(#{1,6})\\s+(.*)$/gm,\n (match, hashes, text) => {\n const level = hashes.length;\n if (level === 3) {\n return `<h3><strong>${text}</strong></h3>`;\n } else if (level === 4) {\n return `<h4><strong>${text}</strong></h4>`;\n }\n return `<strong>${text}</strong>`;\n }\n );\n\n // Convert Markdown code blocks with language to preformatted HTML\n html = html.replace(/```(\\w+)?\\n([\\s\\S]*?)```/g, (match, lang, code) => {\n const escapedCode = this.escapeHtml(code);\n const language = lang || 'plaintext';\n\n // Create a copy button for the code block\n return `\n <div class=\"code-container\">\n <button id=\"copy-button\" class=\"copy-button\" (click)=\"copyToClipboard('\\`${escapedCode}\\`')\">${this.getTranslation(\n 'Copy'\n )}</button>\n <pre class=\"code_block diff\"><code class=\"language-${language}\">${escapedCode}</code></pre>\n </div>`;\n });\n\n // Convert inline code (wrapped in `backticks`) to inline <code> tags\n html = html.replace(/`([^`]+)`/g, '<code>$1</code>');\n\n // Convert Markdown bold to HTML <strong>\n html = html.replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>');\n\n // Convert numbered lists\n html = html.replace(/^\\d+\\.\\s+(.*)$/gm, '<li>$1</li>');\n\n // Convert bullet point lists\n html = html.replace(/^\\-\\s+(.*)$/gm, '<li>$1</li>');\n\n // Convert Markdown links to HTML links\n html = html.replace(\n /\\[([^\\]]+)]\\(([^)]+)\\)/g,\n '<a href=\"$2\" target=\"_blank\">$1</a>'\n );\n\n // Convert new lines to <br> tags for paragraphs\n html = html.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>');\n\n return html;\n }\n\n // Helper function to escape HTML characters for code blocks\n escapeHtml(code: string): string {\n return code\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#039;');\n }\n\n // Function to copy text to clipboard\n public copyToClipboard(text: string) {\n navigator.clipboard.writeText(text).then(\n () => {\n alert('Code copied to clipboard!');\n },\n (err) => {\n console.error('Could not copy text: ', err);\n }\n );\n }\n\n isCollapsed = false;\n isCollapsedForGraph = false;\n isCollapsedForFGraph = false;\n toggleCollapse() {\n this.isCollapsed = !this.isCollapsed;\n this.cdr.detectChanges();\n }\n\n toggleCollapseGraph() {\n this.isCollapsedForGraph = !this.isCollapsedForGraph;\n this.cdr.detectChanges();\n }\n toggleCollapseFGraph() {\n this.isCollapsedForFGraph = !this.isCollapsedForFGraph;\n this.cdr.detectChanges();\n }\n // [\n // {\n // \"title\": \"AI News January 2024: In-Depth and Concise - The AI Track\",\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.\",\n // \"link\": \"https://theaitrack.com/ai-news-january-2024/\"\n // },\n // {\n // \"title\": \"Top AI News, January 2024 - Everypixel Journal\",\n // \"desc\": \"In this monthly roundup, we spotlight the top AI news stories from January, including the OpenAI vs. The New York Times Lawsuit.\",\n // \"link\": \"https://journal.everypixel.com/top-ai-news-january-2024\"\n // },\n // {\n // \"title\": \"AI News July 2024: In-Depth and Concise - The AI Track\",\n // \"desc\": \"This page features AI News for July 2024, highlighting significant events such as Canva acquiring Leonardo AI.\",\n // \"link\": \"https://theaitrack.com/ai-news-july-2024-in-depth-and-concise/\"\n // },\n // {\n // \"title\": \"January news roundup: What's new in the world of AI? - Pluralsight\",\n // \"desc\": \"OpenAI’s new GPT store, business-ready ChatGPT plans, and a predicted rise in AI-powered cybercrime.\",\n // \"link\": \"https://www.pluralsight.com/resources/blog/data/ai-this-month-january-2024\"\n // },\n // {\n // \"title\": \"AI News August 2024: In-Depth and Concise - The AI Track\",\n // \"desc\": \"This page features AI News for August 2024, with highlights such as Nvidia delaying the “Blackwell” B200 AI chips delivery.\",\n // \"link\": \"https://theaitrack.com/ai-news-august-2024-in-depth-and-concise-duplicate/\"\n // }\n // ]\n dateTime = { now: new Date().toISOString() };\n // Extracts the domain from a URL\n getDomainName(url: string): string {\n try {\n const { hostname } = new URL(url);\n return hostname.replace(/^www\\./, ''); // Remove 'www.' if present\n } catch {\n return 'unknown';\n }\n }\n\n // Generates the favicon URL\n getFaviconUrl(url: string): string {\n const domain = this.getDomainName(url);\n return `https://www.google.com/s2/favicons?sz=128&domain=${domain}`;\n }\n currentSourcesList: any = [];\n onCardClick(sources): void {\n this.currentSourcesList = sources;\n this.cdr.detectChanges();\n this.sourcesDrawer.open();\n const button = document.getElementById('botcloseplaygroundbutton');\n if (button) {\n button.style.display = 'none';\n }\n }\n\n isShowEditorButton = true;\n\n openOuterEditor() {\n this.fetchEditorContent();\n this.editorsDrawer.open();\n this.isDrawerOpen = true;\n this.isShowEditorButton = false;\n this.cdr.detectChanges();\n\n const button = document.getElementById('botcloseplaygroundbutton');\n if (button) {\n button.style.display = 'none';\n }\n }\n\n onCloseEditor() {\n this.editorsDrawer.close();\n this.isDrawerOpen = false;\n this.isShowEditorButton = true;\n this.cdr.detectChanges(); // Trigger change detection if needed\n this.onDrawerClosed();\n }\n\n onCloseSource() {\n this.sourcesDrawer.close();\n this.isDrawerOpen = false;\n this.cdr.detectChanges(); // Trigger change detection if needed\n this.onDrawerClosed();\n }\n onDrawerClosed() {\n setTimeout(() => {\n this.isDrawerOpen = true;\n this.cdr.detectChanges(); // Trigger change detection if needed\n // Use ngClass to dynamically apply the class\n const button = document.getElementById('botcloseplaygroundbutton');\n if (button) {\n button.style.display = 'block';\n }\n }, 800);\n }\n isDrawerOpen = true;\n\n toggleDrawer(todo) {\n this.isDrawerOpen = todo;\n this.cdr.detectChanges();\n this.updateButtonVisibility();\n }\n updateButtonVisibility() {\n const button = document.getElementById('botcloseplaygroundbutton');\n if (button) {\n button.style.display = this.isDrawerOpen ? 'block' : 'none';\n }\n }\n openLinkInNewTab(link: string): void {\n window.open(link, '_blank');\n }\n adjustTextareaHeight(event: any): void {\n try {\n if (event.key === 'Enter' && !event.shiftKey) {\n // Prevents a new line from being added\n event.preventDefault();\n }\n } catch (error) {}\n const textarea = event.target as HTMLTextAreaElement;\n textarea.style.height = 'auto'; // Reset the height\n textarea.style.height = `${textarea.scrollHeight}px`; // Adjust height to match content\n // Ensure the height doesn't exceed the max-height set in CSS\n if (textarea.scrollHeight > 150) {\n textarea.style.height = `150px`; // Adjust height to match content\n textarea.style.overflowY = 'auto'; // Enable scrolling if content exceeds 400px\n } else {\n textarea.style.overflowY = 'hidden'; // Hide scrollbar if content is within limits\n }\n }\n\n toggleWorkflows(value = null) {\n if (!this.checkForCop29BotId()) {\n this.botService.getWorkflowsByOrgId(this.orgId).subscribe((res) => {\n this.orgWorkflows = res;\n this.isWorkflowOpen = value == null ? !this.isWorkflowOpen : value;\n\n if (!this.isWorkflowOpen) {\n this.selectedWorkflow = null;\n this.openWorkflowInput = false;\n }\n\n this.cdr.detectChanges();\n });\n }\n }\n\n initializeForm() {\n // Create form controls dynamically based on selectedWorkflow.Trigger.InputSchema\n const formControls = {};\n if (this.selectedWorkflow?.Trigger?.InputSchema) {\n this.selectedWorkflow.Trigger.InputSchema.forEach((input) => {\n formControls[input.InputId] = [\n input.Value || '',\n input.Required ? Validators.required : null,\n ];\n });\n }\n\n // Initialize the form\n this.workflowForm = this.fb.group(formControls);\n }\n\n onWorkflowSelected(workflow) {\n this.selectedWorkflow = workflow;\n this.initializeForm();\n this.isWorkflowOpen = false;\n this.openWorkflowInput = true;\n }\n\n onWorkflowSubmit() {\n const container = document.getElementById('allChats');\n if (this.workflowForm.valid) {\n console.log(this.workflowForm.value);\n\n var input = this.prepareHtml(\n this.generateMarkdown(\n this.selectedWorkflow.Name,\n this.workflowForm.value\n )\n );\n\n // update last two chatLog entries, set showWorkflowExecutionLoader = false\n try {\n this.chatLog[this.chatLog.length - 1]['showWorkflowExecutionLoader'] =\n false;\n this.chatLog[this.chatLog.length - 2]['showWorkflowExecutionLoader'] =\n false;\n } catch (error) {}\n\n this.chatLog.push({\n type: 'user',\n message: input,\n time: formatNow(this.timezone),\n copied: false,\n isCollapsedTrue: false,\n showWorkflowExecutionLoader: true,\n });\n\n console.log(input);\n\n this.currentWorkflowActionProgress = 0;\n this.currentWorkflowAction =\n 'Executing ' + this.selectedWorkflow.Actions[0].Name;\n this.isChatingWithAi = true;\n this.executingWorkflow = true;\n this.workflowExecutionDetails = {\n Actions: this.selectedWorkflow.Actions,\n Inputs: this.workflowForm.value,\n workflowInputs: this.workflowForm.value,\n WorkflowName: this.selectedWorkflow.Name,\n };\n this.currentWorkflowExecutionDetails = this.workflowExecutionDetails;\n this.scrollToBottom();\n\n this.cdr.detectChanges();\n\n // execute the ask endpoint with workflow input\n this.makeAskRequest(\n input,\n this.agents,\n this.conversationKey,\n '',\n null,\n this.selectedWorkflow['_id'],\n this.workflowForm.value\n );\n }\n }\n\n makeAskRequest(\n inputMsg: string,\n agents: any[],\n conversationId: string,\n msg?: any,\n chat?: any,\n workflowId?: string,\n workflow_inputs?: any\n ): void {\n var url = `${this.environment.BASE_URL}/ai/ask`;\n\n var body = {\n user_question: inputMsg,\n user_id: this.userId,\n bot_id: this.botId,\n message_id: this.conversationService.generateKey(),\n session_id: this.conSessionKey,\n agents: agents?.filter((p) => p.selected).map((p) => p.id) ?? [],\n conversation_id: conversationId,\n first_name: this.firstName,\n last_name: this.lastName,\n };\n\n if (workflowId) {\n body['workflow_id'] = workflowId;\n body['workflow_inputs'] = workflow_inputs;\n }\n\n const headers: any = {\n 'Content-Type': 'application/json',\n Authorization: 'Bearer ' + this.s27Token,\n 'x-api-key': this.apiKey,\n 'hive-bot-id': this.botId,\n 'domain-authority': this.domainAuthorityValue,\n eventUrl: this.eventUrl,\n eventToken: this.eventToken,\n };\n\n if (this.workspaceToken) {\n headers['workspaceToken'] = this.workspaceToken;\n }\n\n fetch(url, {\n method: 'POST',\n headers: headers,\n body: JSON.stringify(body),\n })\n .then((response) => {\n if (response.status === 401 || response.status === 403) {\n this.is401 = true;\n this.refreshToken.emit();\n\n // If `msg` and `chat` exist, handle them\n if (msg && chat) {\n this.msg = msg;\n this.chat = chat;\n this.isFetchDataFor = true;\n }\n } else {\n this.is401 = false;\n }\n return response.json();\n })\n .then((data) => {\n console.log(data);\n // Additional response handling if needed\n })\n .catch((err) => {\n console.error('Error: ', err);\n this.isChatingWithAi = false;\n });\n\n this.input = '';\n this.selectedWorkflow = null;\n this.openWorkflowInput = false;\n this.isWorkflowOpen = false;\n this.scrollToBottom();\n this.cdr.markForCheck();\n }\n\n makeAskRequestold(\n inputMsg: string,\n agents: any[],\n conversationId: string,\n msg?: any,\n chat?: any,\n workflowId?: string,\n workflow_inputs?: any\n ): void {\n const url = `${this.environment.BASE_URL}/ai/ask`;\n\n const body: any = {\n user_question: inputMsg,\n user_id: this.userId,\n bot_id: this.botId,\n message_id: this.conversationService.generateKey(),\n agents: agents?.filter((p) => p.selected).map((p) => p.id) ?? [],\n conversation_id: conversationId,\n first_name: this.firstName,\n last_name: this.lastName,\n };\n\n if (workflowId) {\n body['workflow_id'] = workflowId;\n body['workflow_inputs'] = workflow_inputs;\n }\n\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n 'x-api-key': this.apiKey,\n 'hive-bot-id': this.botId,\n 'domain-authority': this.domainAuthorityValue,\n });\n\n this.http.post(url, body, { headers }).subscribe({\n next: (data) => {\n console.log(data);\n // Additional response handling if needed\n },\n error: (err) => {\n console.error('Error: ', err);\n this.isChatingWithAi = false;\n },\n });\n\n this.input = '';\n this.selectedWorkflow = null;\n this.openWorkflowInput = false;\n this.isWorkflowOpen = false;\n this.scrollToBottom();\n this.cdr.markForCheck();\n }\n\n generateMarkdown(title, obj) {\n // Initialize markdown with the title\n let markdown = `## ${title}\\n`;\n\n // Loop through the object and append the field names and values\n for (const [key, value] of Object.entries(obj)) {\n var key_label =\n this.selectedWorkflow.Trigger.InputSchema.find(\n (input) => input.InputId === key\n )?.Label || key;\n markdown += `- **${key_label}**: ${value}\\n`;\n }\n\n return markdown;\n }\n\n showWorkflowHistoryDetails(workflow_id) {\n if (!workflow_id) {\n this.workflowExecutionDetails = this.currentWorkflowExecutionDetails;\n this.showWorkflowExecutionDetails = true;\n this.cdr.detectChanges();\n return;\n }\n\n this.botService.getWorkflowExecutionById(workflow_id).subscribe((res) => {\n if (res && res.Actions && Array.isArray(res.Actions)) {\n res.Actions = res.Actions.map((action) => {\n if (action.InsertTimeStamp) {\n action.InsertTimeStamp = formatTimeStamps(\n this.timezone,\n action.InsertTimeStamp\n );\n }\n return action;\n });\n }\n\n res.InsertTimeStamp = formatTimeStamps(\n this.timezone,\n res.InsertTimeStamp\n );\n this.workflowExecutionDetails = res;\n this.showWorkflowExecutionDetails = true;\n this.cdr.detectChanges();\n });\n }\n\n closeModal() {\n this.showWorkflowExecutionDetails = false;\n }\n\n objectToArray(obj: any): any[] {\n return Object.keys(obj).map((key) => ({ key, value: obj[key] }));\n }\n\n startNewConversation() {\n this.conversationKey = this.conversationService.getKey(this.botId, true);\n this.chatLog = [this.chatLog[0]];\n this.isChatingWithAi = false;\n this.chatSocketInitialized = false;\n setTimeout(() => {\n this.ensureChatSocket();\n }, 200);\n this.scrollToBottom();\n this.cdr.detectChanges();\n }\n\n initializeSpeechRecognizer(token: string) {\n this.speechConfig = SpeechSDK.SpeechConfig.fromAuthorizationToken(\n token,\n this.region\n );\n const audioConfig = SpeechSDK.AudioConfig.fromDefaultMicrophoneInput();\n this.recognizer = new SpeechSDK.SpeechRecognizer(\n this.speechConfig,\n audioConfig\n );\n\n this.recognizer.recognizing = (s, e) => {\n if (e.result.reason === SpeechSDK.ResultReason.RecognizingSpeech) {\n this.input = e.result.text;\n console.log(`Recognizing: ${e.result.text}`);\n this.cdr.markForCheck();\n }\n };\n\n this.recognizer.recognized = (s, e) => {\n if (e.result.reason === SpeechSDK.ResultReason.RecognizedSpeech) {\n this.input = e.result.text;\n console.log(`Recognized: ${e.result.text}`);\n this.toggleRecording();\n this.cdr.markForCheck();\n }\n };\n\n this.recognizer.canceled = (s, e) => {\n console.error('Canceled: ', e.errorDetails);\n };\n\n this.recognizer.sessionStopped = (s, e) => {\n console.log('Session stopped.');\n this.recognizer.stopContinuousRecognitionAsync();\n this.fetchData();\n };\n }\n\n toggleRecording() {\n this.isRecording = !this.isRecording;\n\n if (this.isRecording) {\n this.startRecognition();\n } else {\n this.stopRecognition();\n }\n }\n\n startRecognition() {\n this.recognizer.startContinuousRecognitionAsync();\n }\n\n stopRecognition() {\n this.recognizer.stopContinuousRecognitionAsync();\n }\n\n checkForCop29BotId() {\n return (\n this.botId == '66fa3f276c5d71e2717bfea8' ||\n this.botId == '671633545652dd78efec848d'\n );\n }\n\n getLatestTime(time): string {\n if (time) {\n return time;\n }\n return new Date().toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n }); // returns current time in 'shortTime' format\n }\n\n /** Used by the voice modal when opened from this drawer. */\n voiceModalConversationId: string = '';\n\n openVoiceModal(): void {\n const conversationId = this.conversationKey ?? this.conversationService.getKey(this.botId, false) ?? '';\n this.voiceModalConversationId = conversationId;\n this.setupVoiceTranscripts();\n\n // Close existing overlay if any\n if (this.voiceModalOverlayRef) {\n this.voiceModalOverlayRef.detach();\n this.voiceModalOverlayRef.dispose();\n this.voiceModalOverlayRef = null;\n }\n\n const config: VoiceModalConfig = {\n apiUrl: this.environment?.BASE_URL ?? '',\n token: this.s27Token ?? '',\n botId: this.botId ?? '',\n conversationId,\n apiKey: this.apiKey ?? '',\n eventToken: this.eventToken ?? '',\n eventUrl: this.eventUrl ?? '',\n domainAuthority: this.domainAuthorityValue ?? 'prod-lite',\n agentName: this.botName || 'AI Assistant',\n agentRole: this.botSkills || 'AI Agent Specialist',\n agentAvatar: this.botIcon,\n };\n\n const closeCallback = () => {\n if (this.voiceModalOverlayRef) {\n this.voiceModalOverlayRef.detach();\n this.voiceModalOverlayRef.dispose();\n this.voiceModalOverlayRef = null;\n }\n this.closeVoiceModal();\n };\n\n const injector = Injector.create([\n { provide: VOICE_MODAL_CONFIG, useValue: config },\n { provide: VOICE_MODAL_CLOSE_CALLBACK, useValue: closeCallback },\n ], this.injector);\n\n const overlayRef = this.overlay.create({\n hasBackdrop: false,\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay.position().global().bottom('0').right('0').left('0').top('0'),\n });\n\n const portal = new ComponentPortal(\n VoiceAgentModalComponent,\n this.viewContainerRef,\n injector\n );\n overlayRef.attach(portal);\n this.voiceModalOverlayRef = overlayRef;\n this.cdr.markForCheck();\n }\n\n closeVoiceModal(): void {\n if (this.voiceModalOverlayRef) {\n this.voiceModalOverlayRef.detach();\n this.voiceModalOverlayRef.dispose();\n this.voiceModalOverlayRef = null;\n }\n this.isVoiceModalOpen = false;\n this.voiceAgentService.disconnect();\n this.cdr.markForCheck();\n }\n\n private setupVoiceTranscripts(): void {\n // Clear existing subscriptions\n this.voiceTranscriptSubscriptions.forEach(sub => sub.unsubscribe());\n this.voiceTranscriptSubscriptions = [];\n\n // Subscribe to user transcripts\n const userSub = this.voiceAgentService.userTranscript$.subscribe(transcript => {\n if (transcript.final && transcript.text.trim()) {\n // Add user message to chat\n this.chatLog.push({\n type: 'user',\n message: this.processMessageForDisplay(transcript.text),\n time: formatNow(this.timezone),\n copied: false,\n isCollapsedTrue: false,\n });\n this.cdr.markForCheck();\n this.scrollToBottom();\n }\n });\n\n // Subscribe to bot transcripts\n const botSub = this.voiceAgentService.botTranscript$.subscribe(transcript => {\n if (transcript && transcript.trim()) {\n // Check if last message is from bot, update it, otherwise add new\n const lastMessage = this.chatLog[this.chatLog.length - 1];\n if (lastMessage && lastMessage.type === 'ai') {\n lastMessage.message = this.processMessageForDisplay(transcript);\n } else {\n this.chatLog.push({\n type: 'ai',\n message: this.processMessageForDisplay(transcript),\n time: formatNow(this.timezone),\n copied: false,\n isCollapsedTrue: false,\n });\n this.showFeedBackIconsIndex = this.chatLog.length - 1;\n }\n this.cdr.markForCheck();\n this.scrollToBottom();\n }\n });\n\n this.voiceTranscriptSubscriptions.push(userSub, botSub);\n }\n}\n\nexport { VoiceModalConfig } from '../voice-agent/voice-modal-tokens';\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'hivegpt-chatbot',\n templateUrl: './chatbot.component.html',\n styleUrls: ['./chatbot.component.scss'],\n})\nexport class ChatBotComponent {\n @Input() userId!: string;\n @Input() apiKey!: string;\n @Input() botName!: string;\n @Input() botSkills!: string;\n @Input() botId!: string;\n @Input() closeButtonColor!: string;\n @Input() gradientColors!: string[];\n @Input() greeting!: string;\n @Input() sendButtonColor!: string;\n @Input() useOpenAi!: boolean;\n @Input() showClose!: boolean;\n @Input() bgGradient!: string[];\n @Input() sendButtonTextColor!: string;\n @Input() fullView!: boolean;\n @Input() bgBubbleAi!: string;\n @Input() bgBubbleUser!: string;\n @Input() closeButtonbgColor!: string;\n @Input() messageTextColorAi!: string;\n @Input() messageTextColorUser!: string;\n @Input() dateTimeColor!: string;\n @Input() dateTextColor!: string;\n @Input() formFieldBgColor!: string;\n @Input() formFieldTextColor!: string;\n @Input() thumbsUpMessage!: string;\n @Input() thumbsDownMessages!: string[];\n @Input() timezone!: string;\n @Input() eventName!: string;\n @Input() credentials!: [];\n @Input() unknownResponses!: [];\n @Input() rules!: string;\n @Input() eventId!: string;\n @Input() s27Token!: string;\n @Input() workspaceToken!: string;\n @Input() isDev!: boolean;\n visible = false;\n\n toggle() {\n this.visible = !this.visible;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VoiceAgentModalComponent } from './components/voice-agent-modal/voice-agent-modal.component';\nimport { VoiceAgentService } from './services/voice-agent.service';\nimport { AudioAnalyzerService } from './services/audio-analyzer.service';\nimport { WebSocketVoiceClientService } from './services/websocket-voice-client.service';\nimport { DailyVoiceClientService } from './services/daily-voice-client.service';\n\n/**\n * Voice agent module. Uses native WebSocket + Daily.js only.\n * Does NOT use Socket.IO or ngx-socket-io.\n */\n@NgModule({\n declarations: [\n VoiceAgentModalComponent\n ],\n imports: [\n CommonModule\n ],\n providers: [\n VoiceAgentService,\n AudioAnalyzerService,\n WebSocketVoiceClientService,\n DailyVoiceClientService\n ],\n exports: [\n VoiceAgentModalComponent\n ]\n})\nexport class VoiceAgentModule { }\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml',\n})\nexport class SafeHtmlPipe implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) {\n }\n\n transform(html): unknown {\n return html ? this.sanitizer.bypassSecurityTrustHtml(html) : '';\n }\n\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { IVideo } from '../../models/video';\nimport { DOCUMENT } from '@angular/common';\n\n@Component({\n selector: 'app-video-player',\n templateUrl: './video-player.component.html',\n styleUrls: ['./video-player.component.scss'],\n})\nexport class VideoPlayerComponent\n implements OnInit, AfterViewInit {\n @Input() currentUserId: string;\n @Input() user: any;\n @Input() eventId: string;\n @Input() videoObj: IVideo;\n @Input() isDev: boolean;\n myFollowingList: Array<string>;\n myPendingSentRequests: Array<string>;\n @Input() type: string;\n isMuted: boolean = true;\n private observer: IntersectionObserver;\n isFullscreen: boolean = false;\n @ViewChild('video') video: any;\n @ViewChild('fullscreenvideo') fullscreenvideo: any;\n isFullscreenvideoPlaying: boolean = false;\n\n @Output() connectWithUser = new EventEmitter<string>();\n @Output() scheduleMeeting = new EventEmitter<any>();\n\n constructor(\n @Inject(DOCUMENT) private doc: any,\n private el: ElementRef,\n private cdr: ChangeDetectorRef\n ) {\n }\n\n ngOnInit(): void {\n }\n\n toggleSound(isMuted = null) {\n this.isMuted = isMuted != null ? isMuted : !this.isMuted;\n setTimeout(() => {\n const video: any = this.doc\n .getElementById(this.video.id.toString());\n if (video) {\n video.muted = this.isMuted;\n this.video.isMuted = this.isMuted;\n }\n\n this.cdr.markForCheck();\n //this.muteToggle.emit(this.isMuted);\n })\n}\n\n togglePlay(playState: boolean, videoEl) {\n this.videoObj.isPlaying = !this.videoObj.isPlaying;\n setTimeout(() => { \n if (playState) { \n this.videoObj.isPlaying = true;\n videoEl.play();\n var pauseBtn = document.getElementById('pause-btn');\n pauseBtn.classList.add('hide-pause-btn');\n\n this.toggleSound(false);\n }\n else{\n this.videoObj.isPlaying = false;\n videoEl.pause();\n }\n this.cdr.markForCheck();\n })\n }\n \n ngAfterViewInit() {\n if (window.innerWidth <= 576) {\n this.observer = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting === true) {\n this.video.nativeElement.play();\n } else {\n this.video.nativeElement.pause();\n }\n },\n {\n threshold: 0.75,\n }\n );\n\n this.observer.observe(this.el.nativeElement as HTMLElement);\n }\n }\n\n toggleFullscreen() {\n this.isFullscreen = !this.isFullscreen;\n if (!this.isFullscreen) {\n this.fullscreenvideo.nativeElement.pause();\n }\n }\n\n toggleFullscreenPlay() {\n this.isFullscreenvideoPlaying = !this.isFullscreenvideoPlaying;\n\n if (this.isFullscreenvideoPlaying) {\n this.fullscreenvideo.nativeElement.play();\n } else {\n this.fullscreenvideo.nativeElement.pause();\n }\n }\n\n followUser(userId) {\n this.connectWithUser.emit(userId);\n }\n\n checkPendingSentRequest(userId) {\n return this.myPendingSentRequests?.find(a => a == userId);\n }\n\n canUnfollowUser() {\n return false;\n }\n\n canFollowUser() {\n return true;\n }\n\n getIniNames(firstName, lastName) {\n if(!firstName && !lastName) {\n return '';\n }\n \n if (firstName && lastName)\n return (\n firstName.charAt(0).toUpperCase() + lastName.charAt(0).toUpperCase()\n );\n else return firstName.charAt(0).toUpperCase();\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { MatDrawer } from '@angular/material/sidenav';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { of, Subscription } from 'rxjs';\nimport { catchError, switchMap } from 'rxjs/operators';\nimport { formatNow, formatTimeStamps } from '../../utils/utils';\nimport {\n dev_environment,\n prod_environment,\n} from '../../../environments/environment';\nimport { ConversationService } from '../conversation.service';\nimport { Observable } from 'rxjs';\nimport { SocketService } from '../socket-service.service';\n\n@Component({\n selector: 'lib-bot-html-editor',\n templateUrl: './bot-html-editor.component.html',\n styleUrls: ['./bot-html-editor.component.css'],\n})\nexport class BotHtmlEditorComponent implements OnInit {\n @Input() editorContent: Observable<string>;\n @Input() isDocInEditMode: any;\n @Input() documentContent: any;\n @Input() conversationId: any;\n @Input() botId: any;\n\n documentName: any = 'doc name';\n\n environment: {\n USERS_API;\n BASE_URL;\n AGENTS_API;\n };\n\n quillConfig = {\n toolbar: [\n [{ header: '1' }, { header: '2' }, { font: [] }],\n [{ list: 'ordered' }, { list: 'bullet' }],\n ['bold', 'italic', 'underline'],\n ['link'],\n ['clean'],\n ],\n };\n constructor(private cdr: ChangeDetectorRef, private http: HttpClient) {}\n\n ngOnInit(): void {\n this.environment = prod_environment;\n\n setTimeout(() => {\n if (this.isDocInEditMode) {\n console.log('In Edit mode');\n this.filldataInForm();\n } else {\n console.log('In save mode');\n }\n }, 2500);\n }\n\n filldataInForm() {\n if (this.documentContent) {\n this.documentName = this.documentContent?.name;\n this.editorContent = this.documentContent?.content;\n this.cdr.detectChanges();\n }\n }\n\n saveContent() {\n if (!this.isDocInEditMode) {\n this.saveContent_http().subscribe();\n } else {\n this.saveContent_http().subscribe();\n }\n }\n\n saveContent_http() {\n console.log('API call function');\n\n const url = `${this.environment.AGENTS_API}/ConversationDocuments?conversationId=${this.conversationId}&botId=${this.botId}`;\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n apiKey: 'WIz/qAm+EEmfOkFaUA/weA==',\n });\n\n let data = {\n name: this.documentName,\n content: this.editorContent,\n };\n\n return this.http.post(url, data, { headers }).pipe(\n switchMap((res: any) => {\n if (res) {\n // alert('Saved Successfully');\n }\n this.cdr.markForCheck();\n\n return of(res);\n }),\n catchError((error) => {\n console.error('Error fetching chatbot config: ', error);\n\n return of(null);\n })\n );\n }\n\n updateContent_http() {\n console.log('API call function');\n\n const url = `${this.environment.AGENTS_API}/ConversationDocuments/rename?conversationId=${this.conversationId}&botId=${this.botId}`;\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n apiKey: 'WIz/qAm+EEmfOkFaUA/weA==',\n });\n\n let data = {\n name: this.documentName,\n content: this.editorContent,\n };\n\n return this.http.put(url, data, { headers }).pipe(\n switchMap((res: any) => {\n if (res) {\n // alert('Updated Successfully');\n }\n this.cdr.markForCheck();\n\n return of(res);\n }),\n catchError((error) => {\n console.error('Error fetching chatbot config: ', error);\n\n return of(null);\n })\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { ChatDrawerComponent } from './components/chat-drawer/chat-drawer.component';\nimport { ChatBotComponent } from './components/chatbot/chatbot.component';\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\nimport { VideoPlayerComponent } from './components/video-player/video-player.component';\nimport { QuillModule } from 'ngx-quill';\nimport { BotHtmlEditorComponent } from './components/bot-html-editor/bot-html-editor.component';\nimport { VoiceAgentModule } from './components/voice-agent/voice-agent.module';\n\n@NgModule({\n declarations: [ChatBotComponent, ChatDrawerComponent, VideoPlayerComponent, SafeHtmlPipe, BotHtmlEditorComponent],\n imports: [CommonModule, OverlayModule, MatIconModule, MatSidenavModule, FormsModule, ReactiveFormsModule, QuillModule, VoiceAgentModule],\n exports: [ChatBotComponent, ChatDrawerComponent, VideoPlayerComponent]\n})\nexport class HiveGptModule { }\n","/*\n * Public API Surface of hive-gpt\n */\n\nexport * from './lib/components/chat-drawer/chat-drawer.component';\nexport * from './lib/components/chatbot/chatbot.component';\nexport * from './lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component';\nexport * from './lib/components/voice-agent/services/voice-agent.service';\nexport * from './lib/components/voice-agent/services/audio-analyzer.service';\nexport * from './lib/components/voice-agent/voice-agent.module';\nexport * from './lib/components/voice-agent/voice-modal-tokens';\nexport * from './lib/hivegpt.module';\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 ɵj} 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 {TranslationService as ɵe} from './lib/components/translations/translation.service';\nexport {VideoPlayerComponent as ɵh} from './lib/components/video-player/video-player.component';\nexport {DailyVoiceClientService as ɵg} from './lib/components/voice-agent/services/daily-voice-client.service';\nexport {WebSocketVoiceClientService as ɵf} from './lib/components/voice-agent/services/websocket-voice-client.service';\nexport {SafeHtmlPipe as ɵi} from './lib/pipes/safe-html.pipe';"],"names":[],"mappings":"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"}