@hivegpt/hiveai-angular 0.0.581 → 0.0.582

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.
Files changed (25) hide show
  1. package/bundles/hivegpt-hiveai-angular.umd.js +285 -503
  2. package/bundles/hivegpt-hiveai-angular.umd.js.map +1 -1
  3. package/bundles/hivegpt-hiveai-angular.umd.min.js +1 -1
  4. package/bundles/hivegpt-hiveai-angular.umd.min.js.map +1 -1
  5. package/esm2015/hivegpt-hiveai-angular.js +4 -5
  6. package/esm2015/lib/components/voice-agent/services/audio-analyzer.service.js +3 -3
  7. package/esm2015/lib/components/voice-agent/services/voice-agent.service.js +118 -85
  8. package/esm2015/lib/components/voice-agent/services/websocket-voice-client.service.js +114 -46
  9. package/esm2015/lib/components/voice-agent/voice-agent.module.js +3 -5
  10. package/fesm2015/hivegpt-hiveai-angular.js +223 -422
  11. package/fesm2015/hivegpt-hiveai-angular.js.map +1 -1
  12. package/hivegpt-hiveai-angular.d.ts +3 -4
  13. package/hivegpt-hiveai-angular.d.ts.map +1 -1
  14. package/hivegpt-hiveai-angular.metadata.json +1 -1
  15. package/lib/components/voice-agent/services/audio-analyzer.service.d.ts +2 -2
  16. package/lib/components/voice-agent/services/voice-agent.service.d.ts +11 -13
  17. package/lib/components/voice-agent/services/voice-agent.service.d.ts.map +1 -1
  18. package/lib/components/voice-agent/services/websocket-voice-client.service.d.ts +23 -20
  19. package/lib/components/voice-agent/services/websocket-voice-client.service.d.ts.map +1 -1
  20. package/lib/components/voice-agent/voice-agent.module.d.ts +1 -1
  21. package/lib/components/voice-agent/voice-agent.module.d.ts.map +1 -1
  22. package/package.json +1 -1
  23. package/esm2015/lib/components/voice-agent/services/daily-voice-client.service.js +0 -305
  24. package/lib/components/voice-agent/services/daily-voice-client.service.d.ts +0 -62
  25. package/lib/components/voice-agent/services/daily-voice-client.service.d.ts.map +0 -1
@@ -1,70 +1,83 @@
1
- import { Injectable } from '@angular/core';
1
+ import { Injectable, NgZone } from '@angular/core';
2
2
  import { Subject } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
4
  /**
5
- * WebSocket-only client for voice agent signaling.
5
+ * Native WebSocket client for voice session (signaling, transcripts, speaking hints).
6
6
  * CRITICAL: Uses native WebSocket only. NO Socket.IO, NO ngx-socket-io.
7
7
  *
8
- * Responsibilities:
9
- * - Connect to ws_url (from POST /ai/ask-voice response)
10
- * - Parse JSON messages (room_created, user_transcript, bot_transcript)
11
- * - Emit roomCreated$, userTranscript$, botTranscript$
12
- * - NO audio logic, NO mic logic. Audio is handled by Daily.js (WebRTC).
8
+ * Connects to `ws_url` from `POST {baseUrl}/ai/ask-voice-socket`.
9
+ * Parses JSON messages for transcripts and optional assistant/user speaking flags.
13
10
  */
14
11
  export class WebSocketVoiceClientService {
15
- constructor() {
12
+ constructor(ngZone) {
13
+ this.ngZone = ngZone;
16
14
  this.ws = null;
17
- this.roomCreatedSubject = new Subject();
15
+ /** True when {@link disconnect} initiated the close (not counted as remote close). */
16
+ this.closeInitiatedByClient = false;
17
+ this.openedSubject = new Subject();
18
+ this.remoteCloseSubject = new Subject();
18
19
  this.userTranscriptSubject = new Subject();
19
20
  this.botTranscriptSubject = new Subject();
20
- /** Emits room_url when backend sends room_created. */
21
- this.roomCreated$ = this.roomCreatedSubject.asObservable();
22
- /** Emits user transcript updates. */
21
+ this.assistantSpeakingSubject = new Subject();
22
+ this.serverUserSpeakingSubject = new Subject();
23
+ /** Fires once each time the WebSocket reaches OPEN. */
24
+ this.opened$ = this.openedSubject.asObservable();
25
+ /** Fires when the socket closes without a client-initiated {@link disconnect}. */
26
+ this.remoteClose$ = this.remoteCloseSubject.asObservable();
23
27
  this.userTranscript$ = this.userTranscriptSubject.asObservable();
24
- /** Emits bot transcript updates. */
25
28
  this.botTranscript$ = this.botTranscriptSubject.asObservable();
29
+ /** Assistant/bot speaking, when the server sends explicit events (see {@link handleJsonMessage}). */
30
+ this.assistantSpeaking$ = this.assistantSpeakingSubject.asObservable();
31
+ /** User speaking from server-side VAD, if provided. */
32
+ this.serverUserSpeaking$ = this.serverUserSpeakingSubject.asObservable();
26
33
  }
27
- /** Connect to signaling WebSocket. No audio over this connection. */
28
34
  connect(wsUrl) {
29
35
  var _a;
30
36
  if (((_a = this.ws) === null || _a === void 0 ? void 0 : _a.readyState) === WebSocket.OPEN) {
31
37
  return;
32
38
  }
33
39
  if (this.ws) {
40
+ this.closeInitiatedByClient = true;
34
41
  this.ws.close();
35
- this.ws = null;
36
42
  }
37
43
  try {
38
- this.ws = new WebSocket(wsUrl);
39
- this.ws.onmessage = (event) => {
40
- var _a;
44
+ const socket = new WebSocket(wsUrl);
45
+ this.ws = socket;
46
+ socket.onopen = () => {
47
+ if (this.ws !== socket)
48
+ return;
49
+ this.ngZone.run(() => this.openedSubject.next());
50
+ };
51
+ socket.onmessage = (event) => {
52
+ if (this.ws !== socket)
53
+ return;
54
+ if (typeof event.data !== 'string') {
55
+ return;
56
+ }
41
57
  try {
42
58
  const msg = JSON.parse(event.data);
43
- if ((msg === null || msg === void 0 ? void 0 : msg.type) === 'room_created') {
44
- const roomUrl = ((_a = msg.room_url) !== null && _a !== void 0 ? _a : msg.roomUrl);
45
- if (typeof roomUrl === 'string') {
46
- this.roomCreatedSubject.next(roomUrl);
47
- }
48
- }
49
- else if ((msg === null || msg === void 0 ? void 0 : msg.type) === 'user_transcript' && typeof msg.text === 'string') {
50
- this.userTranscriptSubject.next({
51
- text: msg.text,
52
- final: msg.final === true,
53
- });
54
- }
55
- else if ((msg === null || msg === void 0 ? void 0 : msg.type) === 'bot_transcript' && typeof msg.text === 'string') {
56
- this.botTranscriptSubject.next(msg.text);
57
- }
59
+ this.ngZone.run(() => this.handleJsonMessage(msg));
58
60
  }
59
- catch (_b) {
60
- // Ignore non-JSON or unknown messages
61
+ catch (_a) {
62
+ // Ignore non-JSON
61
63
  }
62
64
  };
63
- this.ws.onerror = () => {
64
- this.disconnect();
65
+ socket.onerror = () => {
66
+ this.ngZone.run(() => {
67
+ if (this.ws === socket && socket.readyState !== WebSocket.CLOSED) {
68
+ socket.close();
69
+ }
70
+ });
65
71
  };
66
- this.ws.onclose = () => {
67
- this.ws = null;
72
+ socket.onclose = () => {
73
+ if (this.ws === socket) {
74
+ this.ws = null;
75
+ }
76
+ const client = this.closeInitiatedByClient;
77
+ this.closeInitiatedByClient = false;
78
+ if (!client) {
79
+ this.ngZone.run(() => this.remoteCloseSubject.next());
80
+ }
68
81
  };
69
82
  }
70
83
  catch (err) {
@@ -73,23 +86,78 @@ export class WebSocketVoiceClientService {
73
86
  throw err;
74
87
  }
75
88
  }
76
- /** Disconnect and cleanup. */
89
+ handleJsonMessage(msg) {
90
+ const type = msg.type;
91
+ const typeStr = typeof type === 'string' ? type : '';
92
+ if (typeStr === 'session_ready' || typeStr === 'connected' || typeStr === 'voice_session_started') {
93
+ return;
94
+ }
95
+ if (typeStr === 'assistant_speaking' ||
96
+ typeStr === 'bot_speaking') {
97
+ if (msg.active === true || msg.speaking === true) {
98
+ this.assistantSpeakingSubject.next(true);
99
+ }
100
+ else if (msg.active === false || msg.speaking === false) {
101
+ this.assistantSpeakingSubject.next(false);
102
+ }
103
+ return;
104
+ }
105
+ if (typeStr === 'user_speaking') {
106
+ if (msg.active === true || msg.speaking === true) {
107
+ this.serverUserSpeakingSubject.next(true);
108
+ }
109
+ else if (msg.active === false || msg.speaking === false) {
110
+ this.serverUserSpeakingSubject.next(false);
111
+ }
112
+ return;
113
+ }
114
+ if (typeStr === 'input_audio_buffer.speech_started') {
115
+ this.serverUserSpeakingSubject.next(true);
116
+ return;
117
+ }
118
+ if (typeStr === 'input_audio_buffer.speech_stopped') {
119
+ this.serverUserSpeakingSubject.next(false);
120
+ return;
121
+ }
122
+ if (typeStr === 'response.audio.delta') {
123
+ this.assistantSpeakingSubject.next(true);
124
+ return;
125
+ }
126
+ if (typeStr === 'response.audio.done' ||
127
+ typeStr === 'response.output_audio.done') {
128
+ this.assistantSpeakingSubject.next(false);
129
+ return;
130
+ }
131
+ if (typeStr === 'user_transcript' && typeof msg.text === 'string') {
132
+ this.userTranscriptSubject.next({
133
+ text: msg.text,
134
+ final: msg.final === true,
135
+ });
136
+ return;
137
+ }
138
+ if (typeStr === 'bot_transcript' && typeof msg.text === 'string') {
139
+ this.botTranscriptSubject.next(msg.text);
140
+ }
141
+ }
77
142
  disconnect() {
78
- if (this.ws) {
79
- this.ws.close();
80
- this.ws = null;
143
+ if (!this.ws) {
144
+ return;
81
145
  }
146
+ this.closeInitiatedByClient = true;
147
+ this.ws.close();
82
148
  }
83
- /** Whether the WebSocket is open. */
84
149
  get isConnected() {
85
150
  var _a;
86
151
  return ((_a = this.ws) === null || _a === void 0 ? void 0 : _a.readyState) === WebSocket.OPEN;
87
152
  }
88
153
  }
89
- WebSocketVoiceClientService.ɵprov = i0.ɵɵdefineInjectable({ factory: function WebSocketVoiceClientService_Factory() { return new WebSocketVoiceClientService(); }, token: WebSocketVoiceClientService, providedIn: "root" });
154
+ WebSocketVoiceClientService.ɵprov = i0.ɵɵdefineInjectable({ factory: function WebSocketVoiceClientService_Factory() { return new WebSocketVoiceClientService(i0.ɵɵinject(i0.NgZone)); }, token: WebSocketVoiceClientService, providedIn: "root" });
90
155
  WebSocketVoiceClientService.decorators = [
91
156
  { type: Injectable, args: [{
92
157
  providedIn: 'root',
93
158
  },] }
94
159
  ];
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LXZvaWNlLWNsaWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9yb2hpdHRoYWt1ci9oaXZlLWdwdC9IaXZlQUktUGFja2FnZXMvQW5ndWxhci9wcm9qZWN0cy9oaXZlZ3B0L2V2ZW50c2dwdC1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3ZvaWNlLWFnZW50L3NlcnZpY2VzL3dlYnNvY2tldC12b2ljZS1jbGllbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBNkIzQzs7Ozs7Ozs7O0dBU0c7QUFJSCxNQUFNLE9BQU8sMkJBQTJCO0lBSHhDO1FBSVUsT0FBRSxHQUFxQixJQUFJLENBQUM7UUFDNUIsdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUMzQywwQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFBa0IsQ0FBQztRQUN0RCx5QkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRXJELHNEQUFzRDtRQUN0RCxpQkFBWSxHQUF1QixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFMUUscUNBQXFDO1FBQ3JDLG9CQUFlLEdBQ2IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTVDLG9DQUFvQztRQUNwQyxtQkFBYyxHQUNaLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztLQTJENUM7SUF6REMscUVBQXFFO0lBQ3JFLE9BQU8sQ0FBQyxLQUFhOztRQUNuQixJQUFJLENBQUEsTUFBQSxJQUFJLENBQUMsRUFBRSwwQ0FBRSxVQUFVLE1BQUssU0FBUyxDQUFDLElBQUksRUFBRTtZQUMxQyxPQUFPO1NBQ1I7UUFDRCxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDO1NBQ2hCO1FBRUQsSUFBSTtZQUNGLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFtQixFQUFFLEVBQUU7O2dCQUMxQyxJQUFJO29CQUNGLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBNEIsQ0FBQztvQkFDOUQsSUFBSSxDQUFBLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxJQUFJLE1BQUssY0FBYyxFQUFFO3dCQUNoQyxNQUFNLE9BQU8sR0FBRyxDQUFDLE1BQUEsR0FBRyxDQUFDLFFBQVEsbUNBQUksR0FBRyxDQUFDLE9BQU8sQ0FBdUIsQ0FBQzt3QkFDcEUsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7NEJBQy9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7eUJBQ3ZDO3FCQUNGO3lCQUFNLElBQUksQ0FBQSxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsSUFBSSxNQUFLLGlCQUFpQixJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7d0JBQzFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7NEJBQzlCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTs0QkFDZCxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssS0FBSyxJQUFJO3lCQUMxQixDQUFDLENBQUM7cUJBQ0o7eUJBQU0sSUFBSSxDQUFBLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxJQUFJLE1BQUssZ0JBQWdCLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTt3QkFDekUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQzFDO2lCQUNGO2dCQUFDLFdBQU07b0JBQ04sc0NBQXNDO2lCQUN2QztZQUNILENBQUMsQ0FBQztZQUNGLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRTtnQkFDckIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLENBQUMsQ0FBQztZQUNGLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRTtnQkFDckIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDakIsQ0FBQyxDQUFDO1NBQ0g7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDZixNQUFNLEdBQUcsQ0FBQztTQUNYO0lBQ0gsQ0FBQztJQUVELDhCQUE4QjtJQUM5QixVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztTQUNoQjtJQUNILENBQUM7SUFFRCxxQ0FBcUM7SUFDckMsSUFBSSxXQUFXOztRQUNiLE9BQU8sQ0FBQSxNQUFBLElBQUksQ0FBQyxFQUFFLDBDQUFFLFVBQVUsTUFBSyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQ2hELENBQUM7Ozs7WUE1RUYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG4vKiogV2ViU29ja2V0IG1lc3NhZ2UgdHlwZXMgZnJvbSBiYWNrZW5kIHNpZ25hbGluZy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV3NNZXNzYWdlUm9vbUNyZWF0ZWQge1xuICB0eXBlOiAncm9vbV9jcmVhdGVkJztcbiAgcm9vbV91cmw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXc01lc3NhZ2VVc2VyVHJhbnNjcmlwdCB7XG4gIHR5cGU6ICd1c2VyX3RyYW5zY3JpcHQnO1xuICB0ZXh0OiBzdHJpbmc7XG4gIGZpbmFsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXc01lc3NhZ2VCb3RUcmFuc2NyaXB0IHtcbiAgdHlwZTogJ2JvdF90cmFuc2NyaXB0JztcbiAgdGV4dDogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBXc01lc3NhZ2UgPVxuICB8IFdzTWVzc2FnZVJvb21DcmVhdGVkXG4gIHwgV3NNZXNzYWdlVXNlclRyYW5zY3JpcHRcbiAgfCBXc01lc3NhZ2VCb3RUcmFuc2NyaXB0O1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zY3JpcHREYXRhIHtcbiAgdGV4dDogc3RyaW5nO1xuICBmaW5hbDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBXZWJTb2NrZXQtb25seSBjbGllbnQgZm9yIHZvaWNlIGFnZW50IHNpZ25hbGluZy5cbiAqIENSSVRJQ0FMOiBVc2VzIG5hdGl2ZSBXZWJTb2NrZXQgb25seS4gTk8gU29ja2V0LklPLCBOTyBuZ3gtc29ja2V0LWlvLlxuICpcbiAqIFJlc3BvbnNpYmlsaXRpZXM6XG4gKiAtIENvbm5lY3QgdG8gd3NfdXJsIChmcm9tIFBPU1QgL2FpL2Fzay12b2ljZSByZXNwb25zZSlcbiAqIC0gUGFyc2UgSlNPTiBtZXNzYWdlcyAocm9vbV9jcmVhdGVkLCB1c2VyX3RyYW5zY3JpcHQsIGJvdF90cmFuc2NyaXB0KVxuICogLSBFbWl0IHJvb21DcmVhdGVkJCwgdXNlclRyYW5zY3JpcHQkLCBib3RUcmFuc2NyaXB0JFxuICogLSBOTyBhdWRpbyBsb2dpYywgTk8gbWljIGxvZ2ljLiBBdWRpbyBpcyBoYW5kbGVkIGJ5IERhaWx5LmpzIChXZWJSVEMpLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV2ViU29ja2V0Vm9pY2VDbGllbnRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSB3czogV2ViU29ja2V0IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcm9vbUNyZWF0ZWRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIHVzZXJUcmFuc2NyaXB0U3ViamVjdCA9IG5ldyBTdWJqZWN0PFRyYW5zY3JpcHREYXRhPigpO1xuICBwcml2YXRlIGJvdFRyYW5zY3JpcHRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIC8qKiBFbWl0cyByb29tX3VybCB3aGVuIGJhY2tlbmQgc2VuZHMgcm9vbV9jcmVhdGVkLiAqL1xuICByb29tQ3JlYXRlZCQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMucm9vbUNyZWF0ZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIC8qKiBFbWl0cyB1c2VyIHRyYW5zY3JpcHQgdXBkYXRlcy4gKi9cbiAgdXNlclRyYW5zY3JpcHQkOiBPYnNlcnZhYmxlPFRyYW5zY3JpcHREYXRhPiA9XG4gICAgdGhpcy51c2VyVHJhbnNjcmlwdFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLyoqIEVtaXRzIGJvdCB0cmFuc2NyaXB0IHVwZGF0ZXMuICovXG4gIGJvdFRyYW5zY3JpcHQkOiBPYnNlcnZhYmxlPHN0cmluZz4gPVxuICAgIHRoaXMuYm90VHJhbnNjcmlwdFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLyoqIENvbm5lY3QgdG8gc2lnbmFsaW5nIFdlYlNvY2tldC4gTm8gYXVkaW8gb3ZlciB0aGlzIGNvbm5lY3Rpb24uICovXG4gIGNvbm5lY3Qod3NVcmw6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLndzPy5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy53cykge1xuICAgICAgdGhpcy53cy5jbG9zZSgpO1xuICAgICAgdGhpcy53cyA9IG51bGw7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMud3MgPSBuZXcgV2ViU29ja2V0KHdzVXJsKTtcbiAgICAgIHRoaXMud3Mub25tZXNzYWdlID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBtc2cgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgICAgIGlmIChtc2c/LnR5cGUgPT09ICdyb29tX2NyZWF0ZWQnKSB7XG4gICAgICAgICAgICBjb25zdCByb29tVXJsID0gKG1zZy5yb29tX3VybCA/PyBtc2cucm9vbVVybCkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByb29tVXJsID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICB0aGlzLnJvb21DcmVhdGVkU3ViamVjdC5uZXh0KHJvb21VcmwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAobXNnPy50eXBlID09PSAndXNlcl90cmFuc2NyaXB0JyAmJiB0eXBlb2YgbXNnLnRleHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLnVzZXJUcmFuc2NyaXB0U3ViamVjdC5uZXh0KHtcbiAgICAgICAgICAgICAgdGV4dDogbXNnLnRleHQsXG4gICAgICAgICAgICAgIGZpbmFsOiBtc2cuZmluYWwgPT09IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG1zZz8udHlwZSA9PT0gJ2JvdF90cmFuc2NyaXB0JyAmJiB0eXBlb2YgbXNnLnRleHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLmJvdFRyYW5zY3JpcHRTdWJqZWN0Lm5leHQobXNnLnRleHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gSWdub3JlIG5vbi1KU09OIG9yIHVua25vd24gbWVzc2FnZXNcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMud3Mub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgICB9O1xuICAgICAgdGhpcy53cy5vbmNsb3NlID0gKCkgPT4ge1xuICAgICAgICB0aGlzLndzID0gbnVsbDtcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdXZWJTb2NrZXRWb2ljZUNsaWVudDogY29ubmVjdCBmYWlsZWQnLCBlcnIpO1xuICAgICAgdGhpcy53cyA9IG51bGw7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgLyoqIERpc2Nvbm5lY3QgYW5kIGNsZWFudXAuICovXG4gIGRpc2Nvbm5lY3QoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMud3MpIHtcbiAgICAgIHRoaXMud3MuY2xvc2UoKTtcbiAgICAgIHRoaXMud3MgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBXZWJTb2NrZXQgaXMgb3Blbi4gKi9cbiAgZ2V0IGlzQ29ubmVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLndzPy5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTjtcbiAgfVxufVxuIl19
160
+ WebSocketVoiceClientService.ctorParameters = () => [
161
+ { type: NgZone }
162
+ ];
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LXZvaWNlLWNsaWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9yb2hpdHRoYWt1ci9oaXZlLWdwdC9IaXZlQUktUGFja2FnZXMvQW5ndWxhci9wcm9qZWN0cy9oaXZlZ3B0L2V2ZW50c2dwdC1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3ZvaWNlLWFnZW50L3NlcnZpY2VzL3dlYnNvY2tldC12b2ljZS1jbGllbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQXVCM0M7Ozs7OztHQU1HO0FBSUgsTUFBTSxPQUFPLDJCQUEyQjtJQWdDdEMsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUEvQjFCLE9BQUUsR0FBcUIsSUFBSSxDQUFDO1FBQ3BDLHNGQUFzRjtRQUM5RSwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFFL0Isa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3BDLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDekMsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBQWtCLENBQUM7UUFDdEQseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUM3Qyw2QkFBd0IsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQ2xELDhCQUF5QixHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFFM0QsdURBQXVEO1FBQ3ZELFlBQU8sR0FBcUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUU5RCxrRkFBa0Y7UUFDbEYsaUJBQVksR0FBcUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXhFLG9CQUFlLEdBQ2IsSUFBSSxDQUFD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QUcsSUFBSSxDQUFDO1FBQ25DLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQUksV0FBVzs7UUFDYixPQUFPLENBQUEsTUFBQSxJQUFJLENBQUMsRUFBRSwwQ0FBRSxVQUFVLE1BQUssU0FBUyxDQUFDLElBQUksQ0FBQztJQUNoRCxDQUFDOzs7O1lBaktGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBakNvQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbi8qKiBXZWJTb2NrZXQgbWVzc2FnZSB0eXBlcyBmcm9tIGJhY2tlbmQgKHZvaWNlIHNlc3Npb24gb3ZlciBhIHNpbmdsZSBXUykuICovXG5leHBvcnQgaW50ZXJmYWNlIFdzTWVzc2FnZVVzZXJUcmFuc2NyaXB0IHtcbiAgdHlwZTogJ3VzZXJfdHJhbnNjcmlwdCc7XG4gIHRleHQ6IHN0cmluZztcbiAgZmluYWw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdzTWVzc2FnZUJvdFRyYW5zY3JpcHQge1xuICB0eXBlOiAnYm90X3RyYW5zY3JpcHQnO1xuICB0ZXh0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFdzTWVzc2FnZSA9XG4gIHwgV3NNZXNzYWdlVXNlclRyYW5zY3JpcHRcbiAgfCBXc01lc3NhZ2VCb3RUcmFuc2NyaXB0O1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zY3JpcHREYXRhIHtcbiAgdGV4dDogc3RyaW5nO1xuICBmaW5hbDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBOYXRpdmUgV2ViU29ja2V0IGNsaWVudCBmb3Igdm9pY2Ugc2Vzc2lvbiAoc2lnbmFsaW5nLCB0cmFuc2NyaXB0cywgc3BlYWtpbmcgaGludHMpLlxuICogQ1JJVElDQUw6IFVzZXMgbmF0aXZlIFdlYlNvY2tldCBvbmx5LiBOTyBTb2NrZXQuSU8sIE5PIG5neC1zb2NrZXQtaW8uXG4gKlxuICogQ29ubmVjdHMgdG8gYHdzX3VybGAgZnJvbSBgUE9TVCB7YmFzZVVybH0vYWkvYXNrLXZvaWNlLXNvY2tldGAuXG4gKiBQYXJzZXMgSlNPTiBtZXNzYWdlcyBmb3IgdHJhbnNjcmlwdHMgYW5kIG9wdGlvbmFsIGFzc2lzdGFudC91c2VyIHNwZWFraW5nIGZsYWdzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV2ViU29ja2V0Vm9pY2VDbGllbnRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSB3czogV2ViU29ja2V0IHwgbnVsbCA9IG51bGw7XG4gIC8qKiBUcnVlIHdoZW4ge0BsaW5rIGRpc2Nvbm5lY3R9IGluaXRpYXRlZCB0aGUgY2xvc2UgKG5vdCBjb3VudGVkIGFzIHJlbW90ZSBjbG9zZSkuICovXG4gIHByaXZhdGUgY2xvc2VJbml0aWF0ZWRCeUNsaWVudCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgb3BlbmVkU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVtb3RlQ2xvc2VTdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSB1c2VyVHJhbnNjcmlwdFN1YmplY3QgPSBuZXcgU3ViamVjdDxUcmFuc2NyaXB0RGF0YT4oKTtcbiAgcHJpdmF0ZSBib3RUcmFuc2NyaXB0U3ViamVjdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBhc3Npc3RhbnRTcGVha2luZ1N1YmplY3QgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwcml2YXRlIHNlcnZlclVzZXJTcGVha2luZ1N1YmplY3QgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIC8qKiBGaXJlcyBvbmNlIGVhY2ggdGltZSB0aGUgV2ViU29ja2V0IHJlYWNoZXMgT1BFTi4gKi9cbiAgb3BlbmVkJDogT2JzZXJ2YWJsZTx2b2lkPiA9IHRoaXMub3BlbmVkU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAvKiogRmlyZXMgd2hlbiB0aGUgc29ja2V0IGNsb3NlcyB3aXRob3V0IGEgY2xpZW50LWluaXRpYXRlZCB7QGxpbmsgZGlzY29ubmVjdH0uICovXG4gIHJlbW90ZUNsb3NlJDogT2JzZXJ2YWJsZTx2b2lkPiA9IHRoaXMucmVtb3RlQ2xvc2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHVzZXJUcmFuc2NyaXB0JDogT2JzZXJ2YWJsZTxUcmFuc2NyaXB0RGF0YT4gPVxuICAgIHRoaXMudXNlclRyYW5zY3JpcHRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGJvdFRyYW5zY3JpcHQkOiBPYnNlcnZhYmxlPHN0cmluZz4gPVxuICAgIHRoaXMuYm90VHJhbnNjcmlwdFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLyoqIEFzc2lzdGFudC9ib3Qgc3BlYWtpbmcsIHdoZW4gdGhlIHNlcnZlciBzZW5kcyBleHBsaWNpdCBldmVudHMgKHNlZSB7QGxpbmsgaGFuZGxlSnNvbk1lc3NhZ2V9KS4gKi9cbiAgYXNzaXN0YW50U3BlYWtpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID1cbiAgICB0aGlzLmFzc2lzdGFudFNwZWFraW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAvKiogVXNlciBzcGVha2luZyBmcm9tIHNlcnZlci1zaWRlIFZBRCwgaWYgcHJvdmlkZWQuICovXG4gIHNlcnZlclVzZXJTcGVha2luZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPVxuICAgIHRoaXMuc2VydmVyVXNlclNwZWFraW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nWm9uZTogTmdab25lKSB7fVxuXG4gIGNvbm5lY3Qod3NVcmw6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLndzPy5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy53cykge1xuICAgICAgdGhpcy5jbG9zZUluaXRpYXRlZEJ5Q2xpZW50ID0gdHJ1ZTtcbiAgICAgIHRoaXMud3MuY2xvc2UoKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc29ja2V0ID0gbmV3IFdlYlNvY2tldCh3c1VybCk7XG4gICAgICB0aGlzLndzID0gc29ja2V0O1xuICAgICAgc29ja2V0Lm9ub3BlbiA9ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMud3MgIT09IHNvY2tldCkgcmV0dXJuO1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5vcGVuZWRTdWJqZWN0Lm5leHQoKSk7XG4gICAgICB9O1xuICAgICAgc29ja2V0Lm9ubWVzc2FnZSA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLndzICE9PSBzb2NrZXQpIHJldHVybjtcbiAgICAgICAgaWYgKHR5cGVvZiBldmVudC5kYXRhICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IG1zZyA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuaGFuZGxlSnNvbk1lc3NhZ2UobXNnKSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIElnbm9yZSBub24tSlNPTlxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgc29ja2V0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMud3MgPT09IHNvY2tldCAmJiBzb2NrZXQucmVhZHlTdGF0ZSAhPT0gV2ViU29ja2V0LkNMT1NFRCkge1xuICAgICAgICAgICAgc29ja2V0LmNsb3NlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICBzb2NrZXQub25jbG9zZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMud3MgPT09IHNvY2tldCkge1xuICAgICAgICAgIHRoaXMud3MgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IHRoaXMuY2xvc2VJbml0aWF0ZWRCeUNsaWVudDtcbiAgICAgICAgdGhpcy5jbG9zZUluaXRpYXRlZEJ5Q2xpZW50ID0gZmFsc2U7XG4gICAgICAgIGlmICghY2xpZW50KSB7XG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucmVtb3RlQ2xvc2VTdWJqZWN0Lm5leHQoKSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdXZWJTb2NrZXRWb2ljZUNsaWVudDogY29ubmVjdCBmYWlsZWQnLCBlcnIpO1xuICAgICAgdGhpcy53cyA9IG51bGw7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVKc29uTWVzc2FnZShtc2c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgY29uc3QgdHlwZSA9IG1zZy50eXBlO1xuICAgIGNvbnN0IHR5cGVTdHIgPSB0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycgPyB0eXBlIDogJyc7XG5cbiAgICBpZiAodHlwZVN0ciA9PT0gJ3Nlc3Npb25fcmVhZHknIHx8IHR5cGVTdHIgPT09ICdjb25uZWN0ZWQnIHx8IHR5cGVTdHIgPT09ICd2b2ljZV9zZXNzaW9uX3N0YXJ0ZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdHlwZVN0ciA9PT0gJ2Fzc2lzdGFudF9zcGVha2luZycgfHxcbiAgICAgIHR5cGVTdHIgPT09ICdib3Rfc3BlYWtpbmcnXG4gICAgKSB7XG4gICAgICBpZiAobXNnLmFjdGl2ZSA9PT0gdHJ1ZSB8fCBtc2cuc3BlYWtpbmcgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5hc3Npc3RhbnRTcGVha2luZ1N1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgIH0gZWxzZSBpZiAobXNnLmFjdGl2ZSA9PT0gZmFsc2UgfHwgbXNnLnNwZWFraW5nID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLmFzc2lzdGFudFNwZWFraW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodHlwZVN0ciA9PT0gJ3VzZXJfc3BlYWtpbmcnKSB7XG4gICAgICBpZiAobXNnLmFjdGl2ZSA9PT0gdHJ1ZSB8fCBtc2cuc3BlYWtpbmcgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5zZXJ2ZXJVc2VyU3BlYWtpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICB9IGVsc2UgaWYgKG1zZy5hY3RpdmUgPT09IGZhbHNlIHx8IG1zZy5zcGVha2luZyA9PT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5zZXJ2ZXJVc2VyU3BlYWtpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0eXBlU3RyID09PSAnaW5wdXRfYXVkaW9fYnVmZmVyLnNwZWVjaF9zdGFydGVkJykge1xuICAgICAgdGhpcy5zZXJ2ZXJVc2VyU3BlYWtpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlU3RyID09PSAnaW5wdXRfYXVkaW9fYnVmZmVyLnNwZWVjaF9zdG9wcGVkJykge1xuICAgICAgdGhpcy5zZXJ2ZXJVc2VyU3BlYWtpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0eXBlU3RyID09PSAncmVzcG9uc2UuYXVkaW8uZGVsdGEnKSB7XG4gICAgICB0aGlzLmFzc2lzdGFudFNwZWFraW5nU3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0eXBlU3RyID09PSAncmVzcG9uc2UuYXVkaW8uZG9uZScgfHxcbiAgICAgIHR5cGVTdHIgPT09ICdyZXNwb25zZS5vdXRwdXRfYXVkaW8uZG9uZSdcbiAgICApIHtcbiAgICAgIHRoaXMuYXNzaXN0YW50U3BlYWtpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0eXBlU3RyID09PSAndXNlcl90cmFuc2NyaXB0JyAmJiB0eXBlb2YgbXNnLnRleHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLnVzZXJUcmFuc2NyaXB0U3ViamVjdC5uZXh0KHtcbiAgICAgICAgdGV4dDogbXNnLnRleHQsXG4gICAgICAgIGZpbmFsOiBtc2cuZmluYWwgPT09IHRydWUsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHR5cGVTdHIgPT09ICdib3RfdHJhbnNjcmlwdCcgJiYgdHlwZW9mIG1zZy50ZXh0ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5ib3RUcmFuc2NyaXB0U3ViamVjdC5uZXh0KG1zZy50ZXh0KTtcbiAgICB9XG4gIH1cblxuICBkaXNjb25uZWN0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy53cykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsb3NlSW5pdGlhdGVkQnlDbGllbnQgPSB0cnVlO1xuICAgIHRoaXMud3MuY2xvc2UoKTtcbiAgfVxuXG4gIGdldCBpc0Nvbm5lY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy53cz8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU47XG4gIH1cbn1cbiJdfQ==
@@ -4,9 +4,8 @@ import { VoiceAgentModalComponent } from './components/voice-agent-modal/voice-a
4
4
  import { VoiceAgentService } from './services/voice-agent.service';
5
5
  import { AudioAnalyzerService } from './services/audio-analyzer.service';
6
6
  import { WebSocketVoiceClientService } from './services/websocket-voice-client.service';
7
- import { DailyVoiceClientService } from './services/daily-voice-client.service';
8
7
  /**
9
- * Voice agent module. Uses native WebSocket + Daily.js only.
8
+ * Voice agent module. Uses native WebSocket for the voice session.
10
9
  * Does NOT use Socket.IO or ngx-socket-io.
11
10
  */
12
11
  export class VoiceAgentModule {
@@ -22,12 +21,11 @@ VoiceAgentModule.decorators = [
22
21
  providers: [
23
22
  VoiceAgentService,
24
23
  AudioAnalyzerService,
25
- WebSocketVoiceClientService,
26
- DailyVoiceClientService
24
+ WebSocketVoiceClientService
27
25
  ],
28
26
  exports: [
29
27
  VoiceAgentModalComponent
30
28
  ]
31
29
  },] }
32
30
  ];
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtYWdlbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9yb2hpdHRoYWt1ci9oaXZlLWdwdC9IaXZlQUktUGFja2FnZXMvQW5ndWxhci9wcm9qZWN0cy9oaXZlZ3B0L2V2ZW50c2dwdC1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3ZvaWNlLWFnZW50L3ZvaWNlLWFnZW50Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN4RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUVoRjs7O0dBR0c7QUFrQkgsTUFBTSxPQUFPLGdCQUFnQjs7O1lBakI1QixRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFO29CQUNaLHdCQUF3QjtpQkFDekI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLFlBQVk7aUJBQ2I7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULGlCQUFpQjtvQkFDakIsb0JBQW9CO29CQUNwQiwyQkFBMkI7b0JBQzNCLHVCQUF1QjtpQkFDeEI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLHdCQUF3QjtpQkFDekI7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVm9pY2VBZ2VudE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3ZvaWNlLWFnZW50LW1vZGFsL3ZvaWNlLWFnZW50LW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWb2ljZUFnZW50U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdm9pY2UtYWdlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBdWRpb0FuYWx5emVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXVkaW8tYW5hbHl6ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBXZWJTb2NrZXRWb2ljZUNsaWVudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3dlYnNvY2tldC12b2ljZS1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQgeyBEYWlseVZvaWNlQ2xpZW50U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZGFpbHktdm9pY2UtY2xpZW50LnNlcnZpY2UnO1xuXG4vKipcbiAqIFZvaWNlIGFnZW50IG1vZHVsZS4gVXNlcyBuYXRpdmUgV2ViU29ja2V0ICsgRGFpbHkuanMgb25seS5cbiAqIERvZXMgTk9UIHVzZSBTb2NrZXQuSU8gb3Igbmd4LXNvY2tldC1pby5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgVm9pY2VBZ2VudE1vZGFsQ29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGVcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgVm9pY2VBZ2VudFNlcnZpY2UsXG4gICAgQXVkaW9BbmFseXplclNlcnZpY2UsXG4gICAgV2ViU29ja2V0Vm9pY2VDbGllbnRTZXJ2aWNlLFxuICAgIERhaWx5Vm9pY2VDbGllbnRTZXJ2aWNlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBWb2ljZUFnZW50TW9kYWxDb21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBWb2ljZUFnZW50TW9kdWxlIHsgfVxuIl19
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtYWdlbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9yb2hpdHRoYWt1ci9oaXZlLWdwdC9IaXZlQUktUGFja2FnZXMvQW5ndWxhci9wcm9qZWN0cy9oaXZlZ3B0L2V2ZW50c2dwdC1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3ZvaWNlLWFnZW50L3ZvaWNlLWFnZW50Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUV4Rjs7O0dBR0c7QUFpQkgsTUFBTSxPQUFPLGdCQUFnQjs7O1lBaEI1QixRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFO29CQUNaLHdCQUF3QjtpQkFDekI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLFlBQVk7aUJBQ2I7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULGlCQUFpQjtvQkFDakIsb0JBQW9CO29CQUNwQiwyQkFBMkI7aUJBQzVCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCx3QkFBd0I7aUJBQ3pCO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFZvaWNlQWdlbnRNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy92b2ljZS1hZ2VudC1tb2RhbC92b2ljZS1hZ2VudC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVm9pY2VBZ2VudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3ZvaWNlLWFnZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXVkaW9BbmFseXplclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2F1ZGlvLWFuYWx5emVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2ViU29ja2V0Vm9pY2VDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy93ZWJzb2NrZXQtdm9pY2UtY2xpZW50LnNlcnZpY2UnO1xuXG4vKipcbiAqIFZvaWNlIGFnZW50IG1vZHVsZS4gVXNlcyBuYXRpdmUgV2ViU29ja2V0IGZvciB0aGUgdm9pY2Ugc2Vzc2lvbi5cbiAqIERvZXMgTk9UIHVzZSBTb2NrZXQuSU8gb3Igbmd4LXNvY2tldC1pby5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgVm9pY2VBZ2VudE1vZGFsQ29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGVcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgVm9pY2VBZ2VudFNlcnZpY2UsXG4gICAgQXVkaW9BbmFseXplclNlcnZpY2UsXG4gICAgV2ViU29ja2V0Vm9pY2VDbGllbnRTZXJ2aWNlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBWb2ljZUFnZW50TW9kYWxDb21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBWb2ljZUFnZW50TW9kdWxlIHsgfVxuIl19