@hivegpt/hiveai-angular 0.0.389 → 0.0.399
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.
- package/README.md +140 -2
- package/bundles/hivegpt-hiveai-angular.umd.js +580 -10
- package/bundles/hivegpt-hiveai-angular.umd.js.map +1 -1
- package/bundles/hivegpt-hiveai-angular.umd.min.js +1 -1
- package/bundles/hivegpt-hiveai-angular.umd.min.js.map +1 -1
- package/environments/environment.d.ts.map +1 -1
- package/esm2015/environments/environment.js +1 -1
- package/esm2015/hivegpt-hiveai-angular.js +1 -1
- package/esm2015/lib/components/NotificationSocket.js +1 -1
- package/esm2015/lib/components/bot-html-editor/bot-html-editor.component.js +1 -1
- package/esm2015/lib/components/bot.service.js +1 -1
- package/esm2015/lib/components/chat-drawer/chat-drawer.component.js +67 -4
- package/esm2015/lib/components/chatbot/chatbot.component.js +6 -3
- package/esm2015/lib/components/conversation.service.js +1 -1
- package/esm2015/lib/components/socket-service.service.js +1 -1
- package/esm2015/lib/components/translations/translation.service.js +1 -1
- package/esm2015/lib/components/video-player/video-player.component.js +1 -1
- package/esm2015/lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.js +100 -0
- package/esm2015/lib/components/voice-agent/services/audio-analyzer.service.js +119 -0
- package/esm2015/lib/components/voice-agent/services/voice-agent.service.js +222 -0
- package/esm2015/lib/components/voice-agent/voice-agent.module.js +25 -0
- package/esm2015/lib/hivegpt.module.js +4 -3
- package/esm2015/lib/models/video.js +1 -1
- package/esm2015/lib/pipes/safe-html.pipe.js +1 -1
- package/esm2015/lib/utils/utils.js +1 -1
- package/esm2015/public-api.js +5 -1
- package/fesm2015/hivegpt-hiveai-angular.js +525 -11
- package/fesm2015/hivegpt-hiveai-angular.js.map +1 -1
- package/hivegpt-hiveai-angular.d.ts.map +1 -1
- package/hivegpt-hiveai-angular.metadata.json +1 -1
- package/lib/components/NotificationSocket.d.ts.map +1 -1
- package/lib/components/bot-html-editor/bot-html-editor.component.d.ts.map +1 -1
- package/lib/components/bot.service.d.ts.map +1 -1
- package/lib/components/chat-drawer/chat-drawer.component.d.ts +19 -1
- package/lib/components/chat-drawer/chat-drawer.component.d.ts.map +1 -1
- package/lib/components/chatbot/chatbot.component.d.ts +3 -0
- package/lib/components/chatbot/chatbot.component.d.ts.map +1 -1
- package/lib/components/conversation.service.d.ts.map +1 -1
- package/lib/components/socket-service.service.d.ts.map +1 -1
- package/lib/components/translations/translation.service.d.ts.map +1 -1
- package/lib/components/video-player/video-player.component.d.ts.map +1 -1
- package/lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.d.ts +32 -0
- package/lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.d.ts.map +1 -0
- package/lib/components/voice-agent/services/audio-analyzer.service.d.ts +23 -0
- package/lib/components/voice-agent/services/audio-analyzer.service.d.ts.map +1 -0
- package/lib/components/voice-agent/services/voice-agent.service.d.ts +41 -0
- package/lib/components/voice-agent/services/voice-agent.service.d.ts.map +1 -0
- package/lib/components/voice-agent/voice-agent.module.d.ts +3 -0
- package/lib/components/voice-agent/voice-agent.module.d.ts.map +1 -0
- package/lib/hivegpt.module.d.ts.map +1 -1
- package/lib/models/video.d.ts.map +1 -1
- package/lib/pipes/safe-html.pipe.d.ts.map +1 -1
- package/lib/utils/utils.d.ts.map +1 -1
- package/package.json +3 -1
- package/public-api.d.ts +4 -0
- package/public-api.d.ts.map +1 -1
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { BehaviorSubject, Subject } from 'rxjs';
|
|
4
|
+
import { PipecatClient, RTVIEvent, } from '@pipecat-ai/client-js';
|
|
5
|
+
import { WebSocketTransport } from '@pipecat-ai/websocket-transport';
|
|
6
|
+
import { AudioAnalyzerService } from './audio-analyzer.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "./audio-analyzer.service";
|
|
9
|
+
export class VoiceAgentService {
|
|
10
|
+
constructor(audioAnalyzer) {
|
|
11
|
+
this.audioAnalyzer = audioAnalyzer;
|
|
12
|
+
this.client = null;
|
|
13
|
+
this.transport = null;
|
|
14
|
+
this.userMediaStream = null;
|
|
15
|
+
this.botAudioElement = null;
|
|
16
|
+
this.callStateSubject = new BehaviorSubject('idle');
|
|
17
|
+
this.statusTextSubject = new BehaviorSubject('');
|
|
18
|
+
this.durationSubject = new BehaviorSubject('00:00');
|
|
19
|
+
this.isMicMutedSubject = new BehaviorSubject(false);
|
|
20
|
+
this.isUserSpeakingSubject = new BehaviorSubject(false);
|
|
21
|
+
this.audioLevelsSubject = new BehaviorSubject([]);
|
|
22
|
+
this.userTranscriptSubject = new Subject();
|
|
23
|
+
this.botTranscriptSubject = new Subject();
|
|
24
|
+
this.callStartTime = 0;
|
|
25
|
+
this.durationInterval = null;
|
|
26
|
+
this.callState$ = this.callStateSubject.asObservable();
|
|
27
|
+
this.statusText$ = this.statusTextSubject.asObservable();
|
|
28
|
+
this.duration$ = this.durationSubject.asObservable();
|
|
29
|
+
this.isMicMuted$ = this.isMicMutedSubject.asObservable();
|
|
30
|
+
this.isUserSpeaking$ = this.isUserSpeakingSubject.asObservable();
|
|
31
|
+
this.audioLevels$ = this.audioLevelsSubject.asObservable();
|
|
32
|
+
this.userTranscript$ = this.userTranscriptSubject.asObservable();
|
|
33
|
+
this.botTranscript$ = this.botTranscriptSubject.asObservable();
|
|
34
|
+
this.audioAnalyzer.audioLevels$.subscribe(levels => {
|
|
35
|
+
this.audioLevelsSubject.next(levels);
|
|
36
|
+
});
|
|
37
|
+
this.audioAnalyzer.isUserSpeaking$.subscribe(isSpeaking => {
|
|
38
|
+
this.isUserSpeakingSubject.next(isSpeaking);
|
|
39
|
+
if (isSpeaking && this.callStateSubject.value === 'connected') {
|
|
40
|
+
this.callStateSubject.next('listening');
|
|
41
|
+
}
|
|
42
|
+
else if (!isSpeaking && this.callStateSubject.value === 'listening') {
|
|
43
|
+
this.callStateSubject.next('connected');
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/** Reset to idle state (e.g. when modal opens so user can click Start Call). */
|
|
48
|
+
resetToIdle() {
|
|
49
|
+
if (this.callStateSubject.value === 'idle')
|
|
50
|
+
return;
|
|
51
|
+
if (this.durationInterval) {
|
|
52
|
+
clearInterval(this.durationInterval);
|
|
53
|
+
this.durationInterval = null;
|
|
54
|
+
}
|
|
55
|
+
this.audioAnalyzer.stop();
|
|
56
|
+
this.client = null;
|
|
57
|
+
this.transport = null;
|
|
58
|
+
if (this.userMediaStream) {
|
|
59
|
+
this.userMediaStream.getTracks().forEach(track => track.stop());
|
|
60
|
+
this.userMediaStream = null;
|
|
61
|
+
}
|
|
62
|
+
if (this.botAudioElement) {
|
|
63
|
+
this.botAudioElement.pause();
|
|
64
|
+
this.botAudioElement.srcObject = null;
|
|
65
|
+
this.botAudioElement = null;
|
|
66
|
+
}
|
|
67
|
+
this.callStateSubject.next('idle');
|
|
68
|
+
this.statusTextSubject.next('');
|
|
69
|
+
this.durationSubject.next('00:00');
|
|
70
|
+
}
|
|
71
|
+
connect(apiUrl, token, botId, conversationId) {
|
|
72
|
+
var _a;
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
if (this.callStateSubject.value !== 'idle') {
|
|
75
|
+
console.warn('Call already in progress');
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
try {
|
|
79
|
+
this.callStateSubject.next('connecting');
|
|
80
|
+
this.statusTextSubject.next('Connecting...');
|
|
81
|
+
const baseUrl = apiUrl.replace(/\/$/, '');
|
|
82
|
+
const connectUrl = `${baseUrl}/ai/ask-voice`;
|
|
83
|
+
const headers = new Headers();
|
|
84
|
+
headers.set('Authorization', `Bearer ${token}`);
|
|
85
|
+
headers.set('Content-Type', 'application/json');
|
|
86
|
+
const startBotParams = {
|
|
87
|
+
endpoint: connectUrl,
|
|
88
|
+
headers,
|
|
89
|
+
requestData: {
|
|
90
|
+
bot_id: botId,
|
|
91
|
+
conversation_id: conversationId,
|
|
92
|
+
voice: 'alloy',
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
this.transport = new WebSocketTransport();
|
|
96
|
+
this.client = new PipecatClient({
|
|
97
|
+
transport: this.transport,
|
|
98
|
+
enableMic: true,
|
|
99
|
+
enableCam: false,
|
|
100
|
+
});
|
|
101
|
+
this.setupEventHandlers();
|
|
102
|
+
this.botAudioElement = new Audio();
|
|
103
|
+
this.botAudioElement.autoplay = true;
|
|
104
|
+
yield this.client.startBotAndConnect(startBotParams);
|
|
105
|
+
const tracks = this.client.tracks();
|
|
106
|
+
if ((_a = tracks === null || tracks === void 0 ? void 0 : tracks.local) === null || _a === void 0 ? void 0 : _a.audio) {
|
|
107
|
+
this.userMediaStream = new MediaStream([tracks.local.audio]);
|
|
108
|
+
this.audioAnalyzer.start(this.userMediaStream);
|
|
109
|
+
}
|
|
110
|
+
this.isMicMutedSubject.next(!this.client.isMicEnabled);
|
|
111
|
+
this.callStateSubject.next('connected');
|
|
112
|
+
this.statusTextSubject.next('Connected');
|
|
113
|
+
this.callStartTime = Date.now();
|
|
114
|
+
this.startDurationTimer();
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
console.error('Error connecting voice agent:', error);
|
|
118
|
+
this.callStateSubject.next('ended');
|
|
119
|
+
yield this.disconnect();
|
|
120
|
+
this.statusTextSubject.next('Connection failed');
|
|
121
|
+
throw error;
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
disconnect() {
|
|
126
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
127
|
+
try {
|
|
128
|
+
if (this.durationInterval) {
|
|
129
|
+
clearInterval(this.durationInterval);
|
|
130
|
+
this.durationInterval = null;
|
|
131
|
+
}
|
|
132
|
+
this.audioAnalyzer.stop();
|
|
133
|
+
if (this.client) {
|
|
134
|
+
yield this.client.disconnect();
|
|
135
|
+
this.client = null;
|
|
136
|
+
}
|
|
137
|
+
this.transport = null;
|
|
138
|
+
if (this.userMediaStream) {
|
|
139
|
+
this.userMediaStream.getTracks().forEach(track => track.stop());
|
|
140
|
+
this.userMediaStream = null;
|
|
141
|
+
}
|
|
142
|
+
if (this.botAudioElement) {
|
|
143
|
+
this.botAudioElement.pause();
|
|
144
|
+
this.botAudioElement.srcObject = null;
|
|
145
|
+
this.botAudioElement = null;
|
|
146
|
+
}
|
|
147
|
+
this.callStateSubject.next('ended');
|
|
148
|
+
this.statusTextSubject.next('Call ended');
|
|
149
|
+
this.durationSubject.next('00:00');
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
console.error('Error disconnecting voice agent:', error);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
toggleMic() {
|
|
157
|
+
if (!this.client)
|
|
158
|
+
return;
|
|
159
|
+
const newState = !this.client.isMicEnabled;
|
|
160
|
+
this.client.enableMic(newState);
|
|
161
|
+
this.isMicMutedSubject.next(!newState);
|
|
162
|
+
}
|
|
163
|
+
setupEventHandlers() {
|
|
164
|
+
if (!this.client)
|
|
165
|
+
return;
|
|
166
|
+
this.client.on(RTVIEvent.BotStartedSpeaking, () => {
|
|
167
|
+
this.callStateSubject.next('talking');
|
|
168
|
+
});
|
|
169
|
+
this.client.on(RTVIEvent.BotStoppedSpeaking, () => {
|
|
170
|
+
if (this.callStateSubject.value === 'talking') {
|
|
171
|
+
this.callStateSubject.next('connected');
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
this.client.on(RTVIEvent.TrackStarted, (track, participant) => {
|
|
175
|
+
if (this.botAudioElement && participant && !participant.local && track.kind === 'audio') {
|
|
176
|
+
const stream = new MediaStream([track]);
|
|
177
|
+
this.botAudioElement.srcObject = stream;
|
|
178
|
+
this.botAudioElement.play().catch(console.error);
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
this.client.on(RTVIEvent.UserTranscript, (data) => {
|
|
182
|
+
var _a;
|
|
183
|
+
this.userTranscriptSubject.next({
|
|
184
|
+
text: data.text,
|
|
185
|
+
final: (_a = data.final) !== null && _a !== void 0 ? _a : false,
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
this.client.on(RTVIEvent.BotTranscript, (data) => {
|
|
189
|
+
if (data === null || data === void 0 ? void 0 : data.text) {
|
|
190
|
+
this.botTranscriptSubject.next(data.text);
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
this.client.on(RTVIEvent.Error, () => {
|
|
194
|
+
this.statusTextSubject.next('Error occurred');
|
|
195
|
+
});
|
|
196
|
+
this.client.on(RTVIEvent.Disconnected, () => {
|
|
197
|
+
this.callStateSubject.next('ended');
|
|
198
|
+
this.statusTextSubject.next('Disconnected');
|
|
199
|
+
this.disconnect();
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
startDurationTimer() {
|
|
203
|
+
this.durationInterval = setInterval(() => {
|
|
204
|
+
if (this.callStartTime > 0) {
|
|
205
|
+
const elapsed = Math.floor((Date.now() - this.callStartTime) / 1000);
|
|
206
|
+
const minutes = Math.floor(elapsed / 60);
|
|
207
|
+
const seconds = elapsed % 60;
|
|
208
|
+
this.durationSubject.next(`${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`);
|
|
209
|
+
}
|
|
210
|
+
}, 1000);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
VoiceAgentService.ɵprov = i0.ɵɵdefineInjectable({ factory: function VoiceAgentService_Factory() { return new VoiceAgentService(i0.ɵɵinject(i1.AudioAnalyzerService)); }, token: VoiceAgentService, providedIn: "root" });
|
|
214
|
+
VoiceAgentService.decorators = [
|
|
215
|
+
{ type: Injectable, args: [{
|
|
216
|
+
providedIn: 'root'
|
|
217
|
+
},] }
|
|
218
|
+
];
|
|
219
|
+
VoiceAgentService.ctorParameters = () => [
|
|
220
|
+
{ type: AudioAnalyzerService }
|
|
221
|
+
];
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtYWdlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvcm9oaXR0aGFrdXIvaGl2ZS1ncHQvSGl2ZUFJLVBhY2thZ2VzL0FuZ3VsYXIvcHJvamVjdHMvaGl2ZWdwdC9ldmVudHNncHQtYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy92b2ljZS1hZ2VudC9zZXJ2aWNlcy92b2ljZS1hZ2VudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFDTCxhQUFhLEVBQ2IsU0FBUyxHQUVWLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQVloRSxNQUFNLE9BQU8saUJBQWlCO0lBbUQ1QixZQUFvQixhQUFtQztRQUFuQyxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFsRC9DLFdBQU0sR0FBeUIsSUFBSSxDQUFDO1FBQ3BDLGNBQVMsR0FBbUQsSUFBSSxDQUFDO1FBQ2pFLG9CQUFlLEdBQXVCLElBQUksQ0FBQztRQUMzQyxvQkFBZSxHQUE0QixJQUFJLENBQUM7UUFFaEQscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQVksTUFBTSxDQUFDLENBQUM7UUFDMUQsc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDcEQsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBUyxPQUFPLENBQUMsQ0FBQztRQUN2RCxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN4RCwwQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMs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QVUsRUFBRSxNQUFNO2FBQ25COzs7WUFYUSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIFBpcGVjYXRDbGllbnQsXG4gIFJUVklFdmVudCxcbiAgQVBJUmVxdWVzdCxcbn0gZnJvbSAnQHBpcGVjYXQtYWkvY2xpZW50LWpzJztcbmltcG9ydCB7IFdlYlNvY2tldFRyYW5zcG9ydCB9IGZyb20gJ0BwaXBlY2F0LWFpL3dlYnNvY2tldC10cmFuc3BvcnQnO1xuaW1wb3J0IHsgQXVkaW9BbmFseXplclNlcnZpY2UgfSBmcm9tICcuL2F1ZGlvLWFuYWx5emVyLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBDYWxsU3RhdGUgPSAnaWRsZScgfCAnY29ubmVjdGluZycgfCAnY29ubmVjdGVkJyB8ICd0YWxraW5nJyB8ICdsaXN0ZW5pbmcnIHwgJ2VuZGVkJztcblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2NyaXB0RGF0YSB7XG4gIHRleHQ6IHN0cmluZztcbiAgZmluYWw6IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFZvaWNlQWdlbnRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjbGllbnQ6IFBpcGVjYXRDbGllbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB0cmFuc3BvcnQ6IEluc3RhbmNlVHlwZTx0eXBlb2YgV2ViU29ja2V0VHJhbnNwb3J0PiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHVzZXJNZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBib3RBdWRpb0VsZW1lbnQ6IEhUTUxBdWRpb0VsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIGNhbGxTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhbGxTdGF0ZT4oJ2lkbGUnKTtcbiAgcHJpdmF0ZSBzdGF0dXNUZXh0U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgZHVyYXRpb25TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcwMDowMCcpO1xuICBwcml2YXRlIGlzTWljTXV0ZWRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgaXNVc2VyU3BlYWtpbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgYXVkaW9MZXZlbHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXJbXT4oW10pO1xuICBwcml2YXRlIHVzZXJUcmFuc2NyaXB0U3ViamVjdCA9IG5ldyBTdWJqZWN0PFRyYW5zY3JpcHREYXRhPigpO1xuICBwcml2YXRlIGJvdFRyYW5zY3JpcHRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIHByaXZhdGUgY2FsbFN0YXJ0VGltZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBkdXJhdGlvbkludGVydmFsOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD4gfCBudWxsID0gbnVsbDtcblxuICBjYWxsU3RhdGUkOiBPYnNlcnZhYmxlPENhbGxTdGF0ZT4gPSB0aGlzLmNhbGxTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIHN0YXR1c1RleHQkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnN0YXR1c1RleHRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBkdXJhdGlvbiQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMuZHVyYXRpb25TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBpc01pY011dGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuaXNNaWNNdXRlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIGlzVXNlclNwZWFraW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuaXNVc2VyU3BlYWtpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBhdWRpb0xldmVscyQ6IE9ic2VydmFibGU8bnVtYmVyW10+ID0gdGhpcy5hdWRpb0xldmVsc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIHVzZXJUcmFuc2NyaXB0JDogT2JzZXJ2YWJsZTxUcmFuc2NyaXB0RGF0YT4gPSB0aGlzLnVzZXJUcmFuc2NyaXB0U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgYm90VHJhbnNjcmlwdCQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMuYm90VHJhbnNjcmlwdFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLyoqIFJlc2V0IHRvIGlkbGUgc3RhdGUgKGUuZy4gd2hlbiBtb2RhbCBvcGVucyBzbyB1c2VyIGNhbiBjbGljayBTdGFydCBDYWxsKS4gKi9cbiAgcmVzZXRUb0lkbGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FsbFN0YXRlU3ViamVjdC52YWx1ZSA9PT0gJ2lkbGUnKSByZXR1cm47XG4gICAgaWYgKHRoaXMuZHVyYXRpb25JbnRlcnZhbCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmR1cmF0aW9uSW50ZXJ2YWwpO1xuICAgICAgdGhpcy5kdXJhdGlvbkludGVydmFsID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5hdWRpb0FuYWx5emVyLnN0b3AoKTtcbiAgICB0aGlzLmNsaWVudCA9IG51bGw7XG4gICAgdGhpcy50cmFuc3BvcnQgPSBudWxsO1xuICAgIGlmICh0aGlzLnVzZXJNZWRpYVN0cmVhbSkge1xuICAgICAgdGhpcy51c2VyTWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgdGhpcy51c2VyTWVkaWFTdHJlYW0gPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5ib3RBdWRpb0VsZW1lbnQpIHtcbiAgICAgIHRoaXMuYm90QXVkaW9FbGVtZW50LnBhdXNlKCk7XG4gICAgICB0aGlzLmJvdEF1ZGlvRWxlbWVudC5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgdGhpcy5ib3RBdWRpb0VsZW1lbnQgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dCgnaWRsZScpO1xuICAgIHRoaXMuc3RhdHVzVGV4dFN1YmplY3QubmV4dCgnJyk7XG4gICAgdGhpcy5kdXJhdGlvblN1YmplY3QubmV4dCgnMDA6MDAnKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXVkaW9BbmFseXplcjogQXVkaW9BbmFseXplclNlcnZpY2UpIHtcbiAgICB0aGlzLmF1ZGlvQW5hbHl6ZXIuYXVkaW9MZXZlbHMkLnN1YnNjcmliZShsZXZlbHMgPT4ge1xuICAgICAgdGhpcy5hdWRpb0xldmVsc1N1YmplY3QubmV4dChsZXZlbHMpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5hdWRpb0FuYWx5emVyLmlzVXNlclNwZWFraW5nJC5zdWJzY3JpYmUoaXNTcGVha2luZyA9PiB7XG4gICAgICB0aGlzLmlzVXNlclNwZWFraW5nU3ViamVjdC5uZXh0KGlzU3BlYWtpbmcpO1xuICAgICAgaWYgKGlzU3BlYWtpbmcgJiYgdGhpcy5jYWxsU3RhdGVTdWJqZWN0LnZhbHVlID09PSAnY29ubmVjdGVkJykge1xuICAgICAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dCgnbGlzdGVuaW5nJyk7XG4gICAgICB9IGVsc2UgaWYgKCFpc1NwZWFraW5nICYmIHRoaXMuY2FsbFN0YXRlU3ViamVjdC52YWx1ZSA9PT0gJ2xpc3RlbmluZycpIHtcbiAgICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoJ2Nvbm5lY3RlZCcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY29ubmVjdChcbiAgICBhcGlVcmw6IHN0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIGJvdElkOiBzdHJpbmcsXG4gICAgY29udmVyc2F0aW9uSWQ6IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5jYWxsU3RhdGVTdWJqZWN0LnZhbHVlICE9PSAnaWRsZScpIHtcbiAgICAgIGNvbnNvbGUud2FybignQ2FsbCBhbHJlYWR5IGluIHByb2dyZXNzJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KCdjb25uZWN0aW5nJyk7XG4gICAgICB0aGlzLnN0YXR1c1RleHRTdWJqZWN0Lm5leHQoJ0Nvbm5lY3RpbmcuLi4nKTtcblxuICAgICAgY29uc3QgYmFzZVVybCA9IGFwaVVybC5yZXBsYWNlKC9cXC8kLywgJycpO1xuICAgICAgY29uc3QgY29ubmVjdFVybCA9IGAke2Jhc2VVcmx9L2FpL2Fzay12b2ljZWA7XG5cbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycygpO1xuICAgICAgaGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCBgQmVhcmVyICR7dG9rZW59YCk7XG4gICAgICBoZWFkZXJzLnNldCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcblxuICAgICAgY29uc3Qgc3RhcnRCb3RQYXJhbXM6IEFQSVJlcXVlc3QgPSB7XG4gICAgICAgIGVuZHBvaW50OiBjb25uZWN0VXJsLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgICByZXF1ZXN0RGF0YToge1xuICAgICAgICAgIGJvdF9pZDogYm90SWQsXG4gICAgICAgICAgY29udmVyc2F0aW9uX2lkOiBjb252ZXJzYXRpb25JZCxcbiAgICAgICAgICB2b2ljZTogJ2FsbG95JyxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMudHJhbnNwb3J0ID0gbmV3IFdlYlNvY2tldFRyYW5zcG9ydCgpO1xuICAgICAgdGhpcy5jbGllbnQgPSBuZXcgUGlwZWNhdENsaWVudCh7XG4gICAgICAgIHRyYW5zcG9ydDogdGhpcy50cmFuc3BvcnQsXG4gICAgICAgIGVuYWJsZU1pYzogdHJ1ZSxcbiAgICAgICAgZW5hYmxlQ2FtOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnNldHVwRXZlbnRIYW5kbGVycygpO1xuXG4gICAgICB0aGlzLmJvdEF1ZGlvRWxlbWVudCA9IG5ldyBBdWRpbygpO1xuICAgICAgdGhpcy5ib3RBdWRpb0VsZW1lbnQuYXV0b3BsYXkgPSB0cnVlO1xuXG4gICAgICBhd2FpdCB0aGlzLmNsaWVudC5zdGFydEJvdEFuZENvbm5lY3Qoc3RhcnRCb3RQYXJhbXMpO1xuXG4gICAgICBjb25zdCB0cmFja3MgPSB0aGlzLmNsaWVudC50cmFja3MoKTtcbiAgICAgIGlmICh0cmFja3M/LmxvY2FsPy5hdWRpbykge1xuICAgICAgICB0aGlzLnVzZXJNZWRpYVN0cmVhbSA9IG5ldyBNZWRpYVN0cmVhbShbdHJhY2tzLmxvY2FsLmF1ZGlvXSk7XG4gICAgICAgIHRoaXMuYXVkaW9BbmFseXplci5zdGFydCh0aGlzLnVzZXJNZWRpYVN0cmVhbSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaXNNaWNNdXRlZFN1YmplY3QubmV4dCghdGhpcy5jbGllbnQuaXNNaWNFbmFibGVkKTtcbiAgICAgIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KCdjb25uZWN0ZWQnKTtcbiAgICAgIHRoaXMuc3RhdHVzVGV4dFN1YmplY3QubmV4dCgnQ29ubmVjdGVkJyk7XG4gICAgICB0aGlzLmNhbGxTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgdGhpcy5zdGFydER1cmF0aW9uVGltZXIoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY29ubmVjdGluZyB2b2ljZSBhZ2VudDonLCBlcnJvcik7XG4gICAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dCgnZW5kZWQnKTtcbiAgICAgIGF3YWl0IHRoaXMuZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5zdGF0dXNUZXh0U3ViamVjdC5uZXh0KCdDb25uZWN0aW9uIGZhaWxlZCcpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGlzY29ubmVjdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuZHVyYXRpb25JbnRlcnZhbCkge1xuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuZHVyYXRpb25JbnRlcnZhbCk7XG4gICAgICAgIHRoaXMuZHVyYXRpb25JbnRlcnZhbCA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYXVkaW9BbmFseXplci5zdG9wKCk7XG5cbiAgICAgIGlmICh0aGlzLmNsaWVudCkge1xuICAgICAgICBhd2FpdCB0aGlzLmNsaWVudC5kaXNjb25uZWN0KCk7XG4gICAgICAgIHRoaXMuY2xpZW50ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdGhpcy50cmFuc3BvcnQgPSBudWxsO1xuXG4gICAgICBpZiAodGhpcy51c2VyTWVkaWFTdHJlYW0pIHtcbiAgICAgICAgdGhpcy51c2VyTWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgICB0aGlzLnVzZXJNZWRpYVN0cmVhbSA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmJvdEF1ZGlvRWxlbWVudCkge1xuICAgICAgICB0aGlzLmJvdEF1ZGlvRWxlbWVudC5wYXVzZSgpO1xuICAgICAgICB0aGlzLmJvdEF1ZGlvRWxlbWVudC5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgICB0aGlzLmJvdEF1ZGlvRWxlbWVudCA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KCdlbmRlZCcpO1xuICAgICAgdGhpcy5zdGF0dXNUZXh0U3ViamVjdC5uZXh0KCdDYWxsIGVuZGVkJyk7XG4gICAgICB0aGlzLmR1cmF0aW9uU3ViamVjdC5uZXh0KCcwMDowMCcpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkaXNjb25uZWN0aW5nIHZvaWNlIGFnZW50OicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVNaWMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNsaWVudCkgcmV0dXJuO1xuICAgIGNvbnN0IG5ld1N0YXRlID0gIXRoaXMuY2xpZW50LmlzTWljRW5hYmxlZDtcbiAgICB0aGlzLmNsaWVudC5lbmFibGVNaWMobmV3U3RhdGUpO1xuICAgIHRoaXMuaXNNaWNNdXRlZFN1YmplY3QubmV4dCghbmV3U3RhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEV2ZW50SGFuZGxlcnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNsaWVudCkgcmV0dXJuO1xuXG4gICAgdGhpcy5jbGllbnQub24oUlRWSUV2ZW50LkJvdFN0YXJ0ZWRTcGVha2luZywgKCkgPT4ge1xuICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoJ3RhbGtpbmcnKTtcbiAgICB9KTtcblxuICAgIHRoaXMuY2xpZW50Lm9uKFJUVklFdmVudC5Cb3RTdG9wcGVkU3BlYWtpbmcsICgpID0+IHtcbiAgICAgIGlmICh0aGlzLmNhbGxTdGF0ZVN1YmplY3QudmFsdWUgPT09ICd0YWxraW5nJykge1xuICAgICAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dCgnY29ubmVjdGVkJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmNsaWVudC5vbihSVFZJRXZlbnQuVHJhY2tTdGFydGVkLCAodHJhY2s6IE1lZGlhU3RyZWFtVHJhY2ssIHBhcnRpY2lwYW50PzogeyBsb2NhbD86IGJvb2xlYW4gfSkgPT4ge1xuICAgICAgaWYgKHRoaXMuYm90QXVkaW9FbGVtZW50ICYmIHBhcnRpY2lwYW50ICYmICFwYXJ0aWNpcGFudC5sb2NhbCAmJiB0cmFjay5raW5kID09PSAnYXVkaW8nKSB7XG4gICAgICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBNZWRpYVN0cmVhbShbdHJhY2tdKTtcbiAgICAgICAgdGhpcy5ib3RBdWRpb0VsZW1lbnQuc3JjT2JqZWN0ID0gc3RyZWFtO1xuICAgICAgICB0aGlzLmJvdEF1ZGlvRWxlbWVudC5wbGF5KCkuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmNsaWVudC5vbihSVFZJRXZlbnQuVXNlclRyYW5zY3JpcHQsIChkYXRhOiB7IHRleHQ6IHN0cmluZzsgZmluYWw/OiBib29sZWFuIH0pID0+IHtcbiAgICAgIHRoaXMudXNlclRyYW5zY3JpcHRTdWJqZWN0Lm5leHQoe1xuICAgICAgICB0ZXh0OiBkYXRhLnRleHQsXG4gICAgICAgIGZpbmFsOiBkYXRhLmZpbmFsID8/IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNsaWVudC5vbihSVFZJRXZlbnQuQm90VHJhbnNjcmlwdCwgKGRhdGE6IHsgdGV4dD86IHN0cmluZyB9KSA9PiB7XG4gICAgICBpZiAoZGF0YT8udGV4dCkge1xuICAgICAgICB0aGlzLmJvdFRyYW5zY3JpcHRTdWJqZWN0Lm5leHQoZGF0YS50ZXh0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2xpZW50Lm9uKFJUVklFdmVudC5FcnJvciwgKCkgPT4ge1xuICAgICAgdGhpcy5zdGF0dXNUZXh0U3ViamVjdC5uZXh0KCdFcnJvciBvY2N1cnJlZCcpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jbGllbnQub24oUlRWSUV2ZW50LkRpc2Nvbm5lY3RlZCwgKCkgPT4ge1xuICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoJ2VuZGVkJyk7XG4gICAgICB0aGlzLnN0YXR1c1RleHRTdWJqZWN0Lm5leHQoJ0Rpc2Nvbm5lY3RlZCcpO1xuICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0RHVyYXRpb25UaW1lcigpOiB2b2lkIHtcbiAgICB0aGlzLmR1cmF0aW9uSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jYWxsU3RhcnRUaW1lID4gMCkge1xuICAgICAgICBjb25zdCBlbGFwc2VkID0gTWF0aC5mbG9vcigoRGF0ZS5ub3coKSAtIHRoaXMuY2FsbFN0YXJ0VGltZSkgLyAxMDAwKTtcbiAgICAgICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoZWxhcHNlZCAvIDYwKTtcbiAgICAgICAgY29uc3Qgc2Vjb25kcyA9IGVsYXBzZWQgJSA2MDtcbiAgICAgICAgdGhpcy5kdXJhdGlvblN1YmplY3QubmV4dChcbiAgICAgICAgICBgJHtTdHJpbmcobWludXRlcykucGFkU3RhcnQoMiwgJzAnKX06JHtTdHJpbmcoc2Vjb25kcykucGFkU3RhcnQoMiwgJzAnKX1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSwgMTAwMCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { VoiceAgentModalComponent } from './components/voice-agent-modal/voice-agent-modal.component';
|
|
4
|
+
import { VoiceAgentService } from './services/voice-agent.service';
|
|
5
|
+
import { AudioAnalyzerService } from './services/audio-analyzer.service';
|
|
6
|
+
export class VoiceAgentModule {
|
|
7
|
+
}
|
|
8
|
+
VoiceAgentModule.decorators = [
|
|
9
|
+
{ type: NgModule, args: [{
|
|
10
|
+
declarations: [
|
|
11
|
+
VoiceAgentModalComponent
|
|
12
|
+
],
|
|
13
|
+
imports: [
|
|
14
|
+
CommonModule
|
|
15
|
+
],
|
|
16
|
+
providers: [
|
|
17
|
+
VoiceAgentService,
|
|
18
|
+
AudioAnalyzerService
|
|
19
|
+
],
|
|
20
|
+
exports: [
|
|
21
|
+
VoiceAgentModalComponent
|
|
22
|
+
]
|
|
23
|
+
},] }
|
|
24
|
+
];
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtYWdlbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9yb2hpdHRoYWt1ci9oaXZlLWdwdC9IaXZlQUktUGFja2FnZXMvQW5ndWxhci9wcm9qZWN0cy9oaXZlZ3B0L2V2ZW50c2dwdC1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3ZvaWNlLWFnZW50L3ZvaWNlLWFnZW50Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQWlCekUsTUFBTSxPQUFPLGdCQUFnQjs7O1lBZjVCLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUU7b0JBQ1osd0JBQXdCO2lCQUN6QjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsWUFBWTtpQkFDYjtnQkFDRCxTQUFTLEVBQUU7b0JBQ1QsaUJBQWlCO29CQUNqQixvQkFBb0I7aUJBQ3JCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCx3QkFBd0I7aUJBQ3pCO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFZvaWNlQWdlbnRNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy92b2ljZS1hZ2VudC1tb2RhbC92b2ljZS1hZ2VudC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVm9pY2VBZ2VudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3ZvaWNlLWFnZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXVkaW9BbmFseXplclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2F1ZGlvLWFuYWx5emVyLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBWb2ljZUFnZW50TW9kYWxDb21wb25lbnRcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZVxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBWb2ljZUFnZW50U2VydmljZSxcbiAgICBBdWRpb0FuYWx5emVyU2VydmljZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgVm9pY2VBZ2VudE1vZGFsQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVm9pY2VBZ2VudE1vZHVsZSB7IH1cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import { NgModule } from '@angular/core';
|
|
3
|
-
import { FormsModule } from '@angular/forms';
|
|
3
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { MatIconModule } from '@angular/material/icon';
|
|
5
5
|
import { MatSidenavModule } from '@angular/material/sidenav';
|
|
6
6
|
import { ChatDrawerComponent } from './components/chat-drawer/chat-drawer.component';
|
|
@@ -9,13 +9,14 @@ import { SafeHtmlPipe } from './pipes/safe-html.pipe';
|
|
|
9
9
|
import { VideoPlayerComponent } from './components/video-player/video-player.component';
|
|
10
10
|
import { QuillModule } from 'ngx-quill';
|
|
11
11
|
import { BotHtmlEditorComponent } from './components/bot-html-editor/bot-html-editor.component';
|
|
12
|
+
import { VoiceAgentModule } from './components/voice-agent/voice-agent.module';
|
|
12
13
|
export class HiveGptModule {
|
|
13
14
|
}
|
|
14
15
|
HiveGptModule.decorators = [
|
|
15
16
|
{ type: NgModule, args: [{
|
|
16
17
|
declarations: [ChatBotComponent, ChatDrawerComponent, VideoPlayerComponent, SafeHtmlPipe, BotHtmlEditorComponent],
|
|
17
|
-
imports: [CommonModule, MatIconModule, MatSidenavModule, FormsModule, QuillModule],
|
|
18
|
+
imports: [CommonModule, MatIconModule, MatSidenavModule, FormsModule, ReactiveFormsModule, QuillModule, VoiceAgentModule],
|
|
18
19
|
exports: [ChatBotComponent, ChatDrawerComponent, VideoPlayerComponent]
|
|
19
20
|
},] }
|
|
20
21
|
];
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl2ZWdwdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL3JvaGl0dGhha3VyL2hpdmUtZ3B0L0hpdmVBSS1QYWNrYWdlcy9Bbmd1bGFyL3Byb2plY3RzL2hpdmVncHQvZXZlbnRzZ3B0LWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsibGliL2hpdmVncHQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDckYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDaEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFPL0UsTUFBTSxPQUFPLGFBQWE7OztZQUx6QixRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixDQUFDO2dCQUNqSCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUM7Z0JBQ3pILE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixDQUFDO2FBQ3ZFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdFNpZGVuYXZNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7IENoYXREcmF3ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2hhdC1kcmF3ZXIvY2hhdC1kcmF3ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENoYXRCb3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2hhdGJvdC9jaGF0Ym90LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTYWZlSHRtbFBpcGUgfSBmcm9tICcuL3BpcGVzL3NhZmUtaHRtbC5waXBlJztcbmltcG9ydCB7IFZpZGVvUGxheWVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3ZpZGVvLXBsYXllci92aWRlby1wbGF5ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFF1aWxsTW9kdWxlIH0gZnJvbSAnbmd4LXF1aWxsJztcbmltcG9ydCB7IEJvdEh0bWxFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYm90LWh0bWwtZWRpdG9yL2JvdC1odG1sLWVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVm9pY2VBZ2VudE1vZHVsZSB9IGZyb20gJy4vY29tcG9uZW50cy92b2ljZS1hZ2VudC92b2ljZS1hZ2VudC5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtDaGF0Qm90Q29tcG9uZW50LCBDaGF0RHJhd2VyQ29tcG9uZW50LCBWaWRlb1BsYXllckNvbXBvbmVudCwgU2FmZUh0bWxQaXBlLCBCb3RIdG1sRWRpdG9yQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0U2lkZW5hdk1vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFF1aWxsTW9kdWxlLCBWb2ljZUFnZW50TW9kdWxlXSxcbiAgZXhwb3J0czogW0NoYXRCb3RDb21wb25lbnQsIENoYXREcmF3ZXJDb21wb25lbnQsIFZpZGVvUGxheWVyQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBIaXZlR3B0TW9kdWxlIHsgfVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW8uanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL3JvaGl0dGhha3VyL2hpdmUtZ3B0L0hpdmVBSS1QYWNrYWdlcy9Bbmd1bGFyL3Byb2plY3RzL2hpdmVncHQvZXZlbnRzZ3B0LWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsibGliL21vZGVscy92aWRlby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJVmlkZW8ge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgdGh1bWJuYWlsOiBzdHJpbmc7XG4gIGlzUGxheWluZzogYm9vbGVhbjtcbiAgdXNlcklkOiBzdHJpbmc7XG4gIGV2ZW50SWQ6IHN0cmluZztcbiAgYW9pSWRzOiBzdHJpbmdbXTtcbiAgaW5zZXJ0VGltZVN0YW1wOiBzdHJpbmc7XG4gIGlzRGVsZXRlZDogYm9vbGVhbjtcbiAgYXBwcm9wcmlhdGU6IEFwcHJvcHJpYXRlW107XG4gIGlzSW50cm9WaWRlbzogYm9vbGVhbjtcbiAgdmlkZW9SYXRpbmc6IFZpZGVvUmF0aW5nW107XG4gIGxpa2VzOiBWaWRlb0xpa2VbXTtcbiAgdnR0VXJsOiBzdHJpbmc7XG4gIHByb2Nlc3NlZFVybHM6IHN0cmluZztcbiAgZHVyYXRpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFZpZGVvUmF0aW5nIHtcbiAgdXNlcklkOiBzdHJpbmc7XG4gIHJhdGVWYWx1ZTogc3RyaW5nO1xuICBpbnNlcnRUaW1lU3RhbXA6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFZpZGVvTGlrZSB7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBpc0xpa2VkOiBib29sZWFuO1xuICBpbnNlcnRUaW1lU3RhbXA6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEFwcHJvcHJpYXRlIHtcbiAgdXNlcklkOiBzdHJpbmc7XG4gIGluc2VydFRpbWVTdGFtcDogc3RyaW5nO1xufVxuIl19
|
|
@@ -16,4 +16,4 @@ SafeHtmlPipe.decorators = [
|
|
|
16
16
|
SafeHtmlPipe.ctorParameters = () => [
|
|
17
17
|
{ type: DomSanitizer }
|
|
18
18
|
];
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS1odG1sLnBpcGUuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL3JvaGl0dGhha3VyL2hpdmUtZ3B0L0hpdmVBSS1QYWNrYWdlcy9Bbmd1bGFyL3Byb2plY3RzL2hpdmVncHQvZXZlbnRzZ3B0LWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsibGliL3BpcGVzL3NhZmUtaHRtbC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUt6RCxNQUFNLE9BQU8sWUFBWTtJQUV2QixZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQzNDLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBSTtRQUNaLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbEUsQ0FBQzs7O1lBVkYsSUFBSSxTQUFDO2dCQUNKLElBQUksRUFBRSxVQUFVO2FBQ2pCOzs7WUFKUSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3NhZmVIdG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgU2FmZUh0bWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge1xuICB9XG5cbiAgdHJhbnNmb3JtKGh0bWwpOiB1bmtub3duIHtcbiAgICByZXR1cm4gaHRtbCA/IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGh0bWwpIDogJyc7XG4gIH1cblxufVxuIl19
|
|
@@ -33,4 +33,4 @@ export const formatTimeStamps = (timezone, timestamps) => {
|
|
|
33
33
|
return date.toLocaleString('en-US', options);
|
|
34
34
|
};
|
|
35
35
|
export { ɵ0 };
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL3JvaGl0dGhha3VyL2hpdmUtZ3B0L0hpdmVBSS1QYWNrYWdlcy9Bbmd1bGFyL3Byb2plY3RzL2hpdmVncHQvZXZlbnRzZ3B0LWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsibGliL3V0aWxzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxJQUFVLEVBQUUsRUFBRTtJQUMzQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNsQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNoRCxJQUFHLEtBQUssS0FBSyxDQUFDO1FBQUUsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUUzQixNQUFNLGNBQWMsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDeEQsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFFaEUsT0FBTyxHQUFHLGNBQWMsSUFBSSxnQkFBZ0IsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUN6RCxDQUFDLENBQUM7O0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsUUFBaUIsRUFBRSxFQUFFO0lBQzdDLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDdkIsSUFBSSxRQUFRLEVBQUU7UUFDWixNQUFNLE9BQU8sR0FBUTtZQUNuQixNQUFNLEVBQUUsSUFBSTtZQUNaLElBQUksRUFBRSxTQUFTO1lBQ2YsTUFBTSxFQUFFLFNBQVM7WUFDakIsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQztRQUNGLE9BQU8sR0FBRyxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDN0M7SUFDRCxPQUFPLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsUUFBZ0IsRUFBRSxVQUFlLEVBQUUsRUFBRTtJQUNwRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFFeEMsTUFBTSxPQUFPLEdBQVE7UUFDbkIsTUFBTSxFQUFFLElBQUk7UUFDWixJQUFJLEVBQUUsU0FBUztRQUNmLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFFBQVEsRUFBRSxRQUFRO0tBQ25CLENBQUM7SUFDRixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGZvcm1hdEhvdXJzQW5kTWludXRlcyA9IChkYXRlOiBEYXRlKSA9PiB7XG4gIGxldCBob3VycyA9IGRhdGUuZ2V0SG91cnMoKSAlIDEyO1xuICBjb25zdCBtaW51dGVzID0gZGF0ZS5nZXRNaW51dGVzKCk7XG4gIGNvbnN0IGFtUG0gPSBkYXRlLmdldEhvdXJzKCkgPCAxMiA/ICdBTScgOiAnUE0nO1xuICBpZihob3VycyA9PT0gMCkgaG91cnMgPSAxMjtcblxuICBjb25zdCBmb3JtYXR0ZWRIb3VycyA9IGhvdXJzIDwgMTAgPyBgMCR7aG91cnN9YCA6IGhvdXJzO1xuICBjb25zdCBmb3JtYXR0ZWRNaW51dGVzID0gbWludXRlcyA8IDEwID8gYDAke21pbnV0ZXN9YCA6IG1pbnV0ZXM7XG5cbiAgcmV0dXJuIGAke2Zvcm1hdHRlZEhvdXJzfToke2Zvcm1hdHRlZE1pbnV0ZXN9ICR7YW1QbX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdE5vdyA9ICh0aW1lem9uZT86IHN0cmluZykgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBpZiAodGltZXpvbmUpIHtcbiAgICBjb25zdCBvcHRpb25zOiBhbnkgPSB7XG4gICAgICBob3VyMTI6IHRydWUsXG4gICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICBtaW51dGU6ICdudW1lcmljJyxcbiAgICAgIHRpbWVab25lOiB0aW1lem9uZSxcbiAgICB9O1xuICAgIHJldHVybiBub3cudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywgb3B0aW9ucyk7XG4gIH1cbiAgcmV0dXJuIGZvcm1hdEhvdXJzQW5kTWludXRlcyhub3cpO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFRpbWVTdGFtcHMgPSAodGltZXpvbmU6IHN0cmluZywgdGltZXN0YW1wczogYW55KSA9PiB7XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXBzICsgJ1onKTtcblxuICBjb25zdCBvcHRpb25zOiBhbnkgPSB7XG4gICAgaG91cjEyOiB0cnVlLFxuICAgIGhvdXI6ICdudW1lcmljJyxcbiAgICBtaW51dGU6ICdudW1lcmljJyxcbiAgICB0aW1lWm9uZTogdGltZXpvbmUsXG4gIH07XG4gIHJldHVybiBkYXRlLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIG9wdGlvbnMpO1xufTtcbiJdfQ==
|
package/esm2015/public-api.js
CHANGED
|
@@ -3,5 +3,9 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export * from './lib/components/chat-drawer/chat-drawer.component';
|
|
5
5
|
export * from './lib/components/chatbot/chatbot.component';
|
|
6
|
+
export * from './lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component';
|
|
7
|
+
export * from './lib/components/voice-agent/services/voice-agent.service';
|
|
8
|
+
export * from './lib/components/voice-agent/services/audio-analyzer.service';
|
|
9
|
+
export * from './lib/components/voice-agent/voice-agent.module';
|
|
6
10
|
export * from './lib/hivegpt.module';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvcm9oaXR0aGFrdXIvaGl2ZS1ncHQvSGl2ZUFJLVBhY2thZ2VzL0FuZ3VsYXIvcHJvamVjdHMvaGl2ZWdwdC9ldmVudHNncHQtYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJwdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsdUZBQXVGLENBQUM7QUFDdEcsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgaGl2ZS1ncHRcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NoYXQtZHJhd2VyL2NoYXQtZHJhd2VyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NoYXRib3QvY2hhdGJvdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy92b2ljZS1hZ2VudC9jb21wb25lbnRzL3ZvaWNlLWFnZW50LW1vZGFsL3ZvaWNlLWFnZW50LW1vZGFsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZvaWNlLWFnZW50L3NlcnZpY2VzL3ZvaWNlLWFnZW50LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy92b2ljZS1hZ2VudC9zZXJ2aWNlcy9hdWRpby1hbmFseXplci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdm9pY2UtYWdlbnQvdm9pY2UtYWdlbnQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2hpdmVncHQubW9kdWxlJztcbiJdfQ==
|