@hivegpt/hiveai-angular 0.0.585 → 0.0.586
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/bundles/hivegpt-hiveai-angular.umd.js +653 -251
- 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/esm2015/hivegpt-hiveai-angular.js +6 -4
- package/esm2015/lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.js +24 -17
- package/esm2015/lib/components/voice-agent/services/audio-analyzer.service.js +3 -3
- package/esm2015/lib/components/voice-agent/services/daily-voice-client.service.js +312 -0
- package/esm2015/lib/components/voice-agent/services/voice-agent.service.js +155 -189
- package/esm2015/lib/components/voice-agent/services/websocket-voice-client.service.js +95 -0
- package/esm2015/lib/components/voice-agent/voice-agent.module.js +7 -3
- package/fesm2015/hivegpt-hiveai-angular.js +578 -207
- package/fesm2015/hivegpt-hiveai-angular.js.map +1 -1
- package/hivegpt-hiveai-angular.d.ts +5 -3
- package/hivegpt-hiveai-angular.d.ts.map +1 -1
- package/hivegpt-hiveai-angular.metadata.json +1 -1
- package/lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.d.ts +4 -7
- package/lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.d.ts.map +1 -1
- package/lib/components/voice-agent/services/audio-analyzer.service.d.ts +2 -2
- package/lib/components/voice-agent/services/daily-voice-client.service.d.ts +65 -0
- package/lib/components/voice-agent/services/daily-voice-client.service.d.ts.map +1 -0
- package/lib/components/voice-agent/services/voice-agent.service.d.ts +17 -23
- package/lib/components/voice-agent/services/voice-agent.service.d.ts.map +1 -1
- package/lib/components/voice-agent/services/websocket-voice-client.service.d.ts +49 -0
- package/lib/components/voice-agent/services/websocket-voice-client.service.d.ts.map +1 -0
- package/lib/components/voice-agent/voice-agent.module.d.ts +2 -2
- package/lib/components/voice-agent/voice-agent.module.d.ts.map +1 -1
- package/package.json +1 -1
package/lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.d.ts
CHANGED
|
@@ -30,12 +30,9 @@ export declare class VoiceAgentModalComponent implements OnInit, OnDestroy {
|
|
|
30
30
|
isMicMuted: boolean;
|
|
31
31
|
isUserSpeaking: boolean;
|
|
32
32
|
audioLevels: number[];
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
get isUserActive(): boolean;
|
|
37
|
-
/** True during the brief processing pause between user speech and bot response. */
|
|
38
|
-
get isProcessing(): boolean;
|
|
33
|
+
isSpeaking: boolean;
|
|
34
|
+
/** Track whether call has transitioned out of initial connected state. */
|
|
35
|
+
private hasLeftConnectedOnce;
|
|
39
36
|
private subscriptions;
|
|
40
37
|
ngOnInit(): void;
|
|
41
38
|
ngOnDestroy(): void;
|
|
@@ -49,7 +46,7 @@ export declare class VoiceAgentModalComponent implements OnInit, OnDestroy {
|
|
|
49
46
|
* as tiny dots — matching the audio-waveform reference design.
|
|
50
47
|
*/
|
|
51
48
|
getWaveformHeight(level: number, index: number): number;
|
|
52
|
-
/** Status label for active call
|
|
49
|
+
/** Status label for active call. */
|
|
53
50
|
get statusLabel(): string;
|
|
54
51
|
/** Call Again: reset to idle then start a new call. */
|
|
55
52
|
callAgain(): void;
|
package/lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice-agent-modal.component.d.ts","sourceRoot":"/Users/rohitthakur/hive-gpt/HiveAI-Packages/Angular/projects/hivegpt/eventsgpt-angular/src/","sources":["lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,SAAS,EAAU,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEpG,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAG7E,qBAKa,wBAAyB,YAAW,MAAM,EAAE,SAAS;IAoBvD,iBAAiB,EAAE,iBAAiB;IACpC,aAAa,EAAE,oBAAoB;IAC1C,OAAO,CAAC,QAAQ;IArBR,KAAK,qBAA4B;IAClC,MAAM,EAAG,MAAM,CAAC;IAChB,KAAK,EAAG,MAAM,CAAC;IACf,KAAK,EAAG,MAAM,CAAC;IACf,cAAc,EAAG,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAM;IACpB,UAAU,EAAE,MAAM,CAAM;IACxB,OAAO,EAAE,MAAM,CAAM;IACrB,QAAQ,EAAE,MAAM,CAAM;IACtB,eAAe,EAAE,MAAM,CAAe;IACtC,SAAS,EAAE,MAAM,CAAkB;IACnC,SAAS,EAAE,MAAM,CAAyB;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAM;IAElC,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,eAAe,CAA6B;gBAG3C,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,oBAAoB,EAClC,QAAQ,EAAE,QAAQ;IAG5B,0CAA0C;IAC1C,QAAQ,CAAC,gBAAgB,2GAA2G;IAEpI,SAAS,EAAE,SAAS,CAAU;IAC9B,UAAU,EAAE,MAAM,CAAM;IACxB,QAAQ,EAAE,MAAM,CAAW;IAC3B,UAAU,EAAE,OAAO,CAAS;IAC5B,cAAc,EAAE,OAAO,CAAS;IAChC,WAAW,EAAE,MAAM,EAAE,CAAM;
|
|
1
|
+
{"version":3,"file":"voice-agent-modal.component.d.ts","sourceRoot":"/Users/rohitthakur/hive-gpt/HiveAI-Packages/Angular/projects/hivegpt/eventsgpt-angular/src/","sources":["lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,SAAS,EAAU,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEpG,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAG7E,qBAKa,wBAAyB,YAAW,MAAM,EAAE,SAAS;IAoBvD,iBAAiB,EAAE,iBAAiB;IACpC,aAAa,EAAE,oBAAoB;IAC1C,OAAO,CAAC,QAAQ;IArBR,KAAK,qBAA4B;IAClC,MAAM,EAAG,MAAM,CAAC;IAChB,KAAK,EAAG,MAAM,CAAC;IACf,KAAK,EAAG,MAAM,CAAC;IACf,cAAc,EAAG,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAM;IACpB,UAAU,EAAE,MAAM,CAAM;IACxB,OAAO,EAAE,MAAM,CAAM;IACrB,QAAQ,EAAE,MAAM,CAAM;IACtB,eAAe,EAAE,MAAM,CAAe;IACtC,SAAS,EAAE,MAAM,CAAkB;IACnC,SAAS,EAAE,MAAM,CAAyB;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAM;IAElC,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,eAAe,CAA6B;gBAG3C,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,oBAAoB,EAClC,QAAQ,EAAE,QAAQ;IAG5B,0CAA0C;IAC1C,QAAQ,CAAC,gBAAgB,2GAA2G;IAEpI,SAAS,EAAE,SAAS,CAAU;IAC9B,UAAU,EAAE,MAAM,CAAM;IACxB,QAAQ,EAAE,MAAM,CAAW;IAC3B,UAAU,EAAE,OAAO,CAAS;IAC5B,cAAc,EAAE,OAAO,CAAS;IAChC,WAAW,EAAE,MAAM,EAAE,CAAM;IAC3B,UAAU,EAAE,OAAO,CAAS;IAE5B,0EAA0E;IAC1E,OAAO,CAAC,oBAAoB,CAAkB;IAE9C,OAAO,CAAC,aAAa,CAAsB;IAE3C,QAAQ,IAAI,IAAI;IAqEhB,WAAW,IAAI,IAAI;IAKnB,YAAY,EAAE,OAAO,CAAS;IAExB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB1B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,SAAS,IAAI,IAAI;IAIjB;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAYvD,oCAAoC;IACpC,IAAI,WAAW,IAAI,MAAM,CAQxB;IAED,uDAAuD;IACvD,SAAS,IAAI,IAAI;IAKjB,gDAAgD;IAChD,UAAU,IAAI,IAAI;IAIlB,mFAAmF;IACnF,MAAM,IAAI,IAAI;IAId,OAAO,IAAI,IAAI;CAKhB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
2
|
/**
|
|
3
|
-
* Audio analyzer for waveform visualization
|
|
4
|
-
*
|
|
3
|
+
* Audio analyzer for waveform visualization only.
|
|
4
|
+
* Do NOT use isUserSpeaking$ for call state; speaking state must come from Daily.js.
|
|
5
5
|
*/
|
|
6
6
|
export declare class AudioAnalyzerService {
|
|
7
7
|
private audioContext;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { NgZone } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
/**
|
|
4
|
+
* Daily.js WebRTC client for voice agent audio.
|
|
5
|
+
* Responsibilities:
|
|
6
|
+
* - Create and manage Daily CallObject
|
|
7
|
+
* - Join Daily room using room_url
|
|
8
|
+
* - Handle mic capture + speaker playback
|
|
9
|
+
* - Bot speaking detection via AnalyserNode on remote track (instant)
|
|
10
|
+
* - User speaking detection via active-speaker-change
|
|
11
|
+
* - Expose speaking$ (bot speaking), userSpeaking$ (user speaking), micMuted$
|
|
12
|
+
* - Expose localStream$ for waveform visualization (AudioAnalyzerService)
|
|
13
|
+
*/
|
|
14
|
+
export declare class DailyVoiceClientService {
|
|
15
|
+
private ngZone;
|
|
16
|
+
private callObject;
|
|
17
|
+
private localStream;
|
|
18
|
+
private localSessionId;
|
|
19
|
+
/** Explicit playback of remote (bot) audio; required in some browsers. */
|
|
20
|
+
private remoteAudioElement;
|
|
21
|
+
/** AnalyserNode-based remote audio monitor for instant bot speaking detection. */
|
|
22
|
+
private remoteAudioContext;
|
|
23
|
+
private remoteSpeakingRAF;
|
|
24
|
+
private speakingSubject;
|
|
25
|
+
private userSpeakingSubject;
|
|
26
|
+
private micMutedSubject;
|
|
27
|
+
private localStreamSubject;
|
|
28
|
+
private firstRemoteAudioFrameSubject;
|
|
29
|
+
/** True when bot (remote participant) is the active speaker. */
|
|
30
|
+
speaking$: Observable<boolean>;
|
|
31
|
+
/** True when user (local participant) is the active speaker. */
|
|
32
|
+
userSpeaking$: Observable<boolean>;
|
|
33
|
+
/** True when mic is muted. */
|
|
34
|
+
micMuted$: Observable<boolean>;
|
|
35
|
+
/** Emits local mic stream for waveform visualization. */
|
|
36
|
+
localStream$: Observable<MediaStream | null>;
|
|
37
|
+
/** Emits true once when first remote audio frame starts playing. */
|
|
38
|
+
firstRemoteAudioFrame$: Observable<boolean>;
|
|
39
|
+
constructor(ngZone: NgZone);
|
|
40
|
+
/**
|
|
41
|
+
* Connect to Daily room. Acquires mic first for waveform, then joins with audio.
|
|
42
|
+
* @param roomUrl Daily room URL (from room_created)
|
|
43
|
+
* @param token Optional meeting token
|
|
44
|
+
*/
|
|
45
|
+
connect(roomUrl: string, token?: string): Promise<void>;
|
|
46
|
+
private setupEventHandlers;
|
|
47
|
+
/**
|
|
48
|
+
* Play remote (bot) audio track via a dedicated audio element.
|
|
49
|
+
* Required in many browsers where Daily's internal playback does not output to speakers.
|
|
50
|
+
*/
|
|
51
|
+
private playRemoteTrack;
|
|
52
|
+
/**
|
|
53
|
+
* Monitor remote audio track energy via AnalyserNode.
|
|
54
|
+
* Polls at ~60fps and flips speakingSubject based on actual audio energy.
|
|
55
|
+
*/
|
|
56
|
+
private monitorRemoteAudio;
|
|
57
|
+
private stopRemoteAudioMonitor;
|
|
58
|
+
private stopRemoteAudio;
|
|
59
|
+
/** Set mic muted state. */
|
|
60
|
+
setMuted(muted: boolean): void;
|
|
61
|
+
/** Disconnect and cleanup. */
|
|
62
|
+
disconnect(): Promise<void>;
|
|
63
|
+
private cleanup;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=daily-voice-client.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daily-voice-client.service.d.ts","sourceRoot":"/Users/rohitthakur/hive-gpt/HiveAI-Packages/Angular/projects/hivegpt/eventsgpt-angular/src/","sources":["lib/components/voice-agent/services/daily-voice-client.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAmB,UAAU,EAAE,MAAM,MAAM,CAAC;AAInD;;;;;;;;;;GAUG;AACH,qBAGa,uBAAuB;IAkCtB,OAAO,CAAC,MAAM;IAjC1B,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,cAAc,CAAuB;IAC7C,0EAA0E;IAC1E,OAAO,CAAC,kBAAkB,CAAiC;IAE3D,kFAAkF;IAClF,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,iBAAiB,CAAuB;IAEhD,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,mBAAmB,CAAuC;IAClE,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,kBAAkB,CAAiD;IAC3E,OAAO,CAAC,4BAA4B,CAAuC;IAE3E,gEAAgE;IAChE,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,CAAuC;IAErE,gEAAgE;IAChE,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,CAA2C;IAE7E,8BAA8B;IAC9B,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,CAAuC;IAErE,yDAAyD;IACzD,YAAY,EAAE,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,CACH;IAEzC,oEAAoE;IACpE,sBAAsB,EAAE,UAAU,CAAC,OAAO,CAAC,CACQ;gBAE/B,MAAM,EAAE,MAAM;IAElC;;;;OAIG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmD7D,OAAO,CAAC,kBAAkB;IAuD1B;;;OAGG;IACH,OAAO,CAAC,eAAe;IA0CvB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAoD1B,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,eAAe;IAUvB,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAM9B,8BAA8B;IACxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAajC,OAAO,CAAC,OAAO;CAkBhB"}
|
|
@@ -1,27 +1,30 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { OnDestroy } from '@angular/core';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
3
|
import { PlatformTokenRefreshService } from '../../../services/platform-token-refresh.service';
|
|
4
4
|
import { AudioAnalyzerService } from './audio-analyzer.service';
|
|
5
|
+
import { WebSocketVoiceClientService } from './websocket-voice-client.service';
|
|
6
|
+
import { DailyVoiceClientService } from './daily-voice-client.service';
|
|
5
7
|
export declare type CallState = 'idle' | 'connecting' | 'connected' | 'listening' | 'talking' | 'ended';
|
|
6
8
|
export interface TranscriptData {
|
|
7
9
|
text: string;
|
|
8
10
|
final: boolean;
|
|
9
11
|
}
|
|
10
12
|
/**
|
|
11
|
-
* Voice agent orchestrator
|
|
13
|
+
* Voice agent orchestrator. Coordinates WebSocket (signaling) and Daily.js (WebRTC audio).
|
|
12
14
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
15
|
+
* CRITICAL: This service must NEVER use Socket.IO or ngx-socket-io. Voice flow uses only:
|
|
16
|
+
* - Native WebSocket (WebSocketVoiceClientService) for signaling (room_created, transcripts)
|
|
17
|
+
* - Daily.js (DailyVoiceClientService) for WebRTC audio. Audio does NOT flow over WebSocket.
|
|
18
|
+
*
|
|
19
|
+
* - Maintains callState, statusText, duration, isMicMuted, isUserSpeaking, audioLevels
|
|
20
|
+
* - Uses WebSocket for room_created and transcripts only (no audio)
|
|
21
|
+
* - Uses Daily.js for all audio, mic, and real-time speaking detection
|
|
20
22
|
*/
|
|
21
23
|
export declare class VoiceAgentService implements OnDestroy {
|
|
22
24
|
private audioAnalyzer;
|
|
25
|
+
private wsClient;
|
|
26
|
+
private dailyClient;
|
|
23
27
|
private platformTokenRefresh;
|
|
24
|
-
private ngZone;
|
|
25
28
|
/** `Object` not `object` — ngc metadata collection rejects the `object` type in DI params. */
|
|
26
29
|
private platformId;
|
|
27
30
|
private callStateSubject;
|
|
@@ -34,10 +37,9 @@ export declare class VoiceAgentService implements OnDestroy {
|
|
|
34
37
|
private botTranscriptSubject;
|
|
35
38
|
private callStartTime;
|
|
36
39
|
private durationInterval;
|
|
37
|
-
private pcClient;
|
|
38
|
-
private botAudioElement;
|
|
39
40
|
private subscriptions;
|
|
40
41
|
private destroy$;
|
|
42
|
+
private hasAutoUnmutedAfterFirstAudio;
|
|
41
43
|
callState$: Observable<CallState>;
|
|
42
44
|
statusText$: Observable<string>;
|
|
43
45
|
duration$: Observable<string>;
|
|
@@ -46,23 +48,15 @@ export declare class VoiceAgentService implements OnDestroy {
|
|
|
46
48
|
audioLevels$: Observable<number[]>;
|
|
47
49
|
userTranscript$: Observable<TranscriptData>;
|
|
48
50
|
botTranscript$: Observable<string>;
|
|
49
|
-
constructor(audioAnalyzer: AudioAnalyzerService,
|
|
51
|
+
constructor(audioAnalyzer: AudioAnalyzerService, wsClient: WebSocketVoiceClientService, dailyClient: DailyVoiceClientService, platformTokenRefresh: PlatformTokenRefreshService,
|
|
50
52
|
/** `Object` not `object` — ngc metadata collection rejects the `object` type in DI params. */
|
|
51
53
|
platformId: Object);
|
|
52
54
|
ngOnDestroy(): void;
|
|
53
|
-
/** Reset to idle (e.g. when modal
|
|
55
|
+
/** Reset to idle state (e.g. when modal opens so user can click Start Call). */
|
|
54
56
|
resetToIdle(): void;
|
|
55
57
|
connect(apiUrl: string, token: string, botId: string, conversationId: string, apiKey: string, eventToken: string, eventId: string, eventUrl: string, domainAuthority: string, usersApiUrl?: string): Promise<void>;
|
|
56
|
-
private
|
|
57
|
-
private onPipecatDisconnected;
|
|
58
|
-
private onBotReady;
|
|
59
|
-
private startLocalMicAnalyzer;
|
|
60
|
-
private onBotStartedSpeaking;
|
|
61
|
-
private onBotStoppedSpeaking;
|
|
62
|
-
private setupBotAudioTrack;
|
|
63
|
-
private stopBotAudio;
|
|
58
|
+
private onRoomCreated;
|
|
64
59
|
disconnect(): Promise<void>;
|
|
65
|
-
private cleanupPipecatClient;
|
|
66
60
|
toggleMic(): void;
|
|
67
61
|
private startDurationTimer;
|
|
68
62
|
private stopDurationTimer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice-agent.service.d.ts","sourceRoot":"/Users/rohitthakur/hive-gpt/HiveAI-Packages/Angular/projects/hivegpt/eventsgpt-angular/src/","sources":["lib/components/voice-agent/services/voice-agent.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,
|
|
1
|
+
{"version":3,"file":"voice-agent.service.d.ts","sourceRoot":"/Users/rohitthakur/hive-gpt/HiveAI-Packages/Angular/projects/hivegpt/eventsgpt-angular/src/","sources":["lib/components/voice-agent/services/voice-agent.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,SAAS,EAAe,MAAM,eAAe,CAAC;AAC3E,OAAO,EAGL,UAAU,EAGX,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,oBAAY,SAAS,GACjB,MAAM,GACN,YAAY,GACZ,WAAW,GACX,WAAW,GACX,SAAS,GACT,OAAO,CAAC;AAEZ,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,qBAGa,iBAAkB,YAAW,SAAS;IA6B/C,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,oBAAoB;IAC5B,8FAA8F;IACzE,OAAO,CAAC,UAAU;IAjCzC,OAAO,CAAC,gBAAgB,CAA0C;IAClE,OAAO,CAAC,iBAAiB,CAAmC;IAC5D,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,iBAAiB,CAAuC;IAChE,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,kBAAkB,CAAqC;IAC/D,OAAO,CAAC,qBAAqB,CAAiC;IAC9D,OAAO,CAAC,oBAAoB,CAAyB;IAErD,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,gBAAgB,CAA+C;IAEvE,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,6BAA6B,CAAS;IAE9C,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,CAAwC;IACzE,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,CAAyC;IACxE,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAuC;IACpE,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,CAAyC;IACzE,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,CACQ;IAC5C,YAAY,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAA0C;IAC5E,eAAe,EAAE,UAAU,CAAC,cAAc,CAAC,CACC;IAC5C,cAAc,EAAE,UAAU,CAAC,MAAM,CAAC,CAA4C;gBAGpE,aAAa,EAAE,oBAAoB,EACnC,QAAQ,EAAE,2BAA2B,EACrC,WAAW,EAAE,uBAAuB,EACpC,oBAAoB,EAAE,2BAA2B;IACzD,8FAA8F;IACjE,UAAU,EAAE,MAAM;IAUjD,WAAW,IAAI,IAAI;IAMnB,gFAAgF;IAChF,WAAW,IAAI,IAAI;IAab,OAAO,CACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;YAyGF,aAAa;IAuErB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAajC,SAAS,IAAI,IAAI;IAKjB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,iBAAiB;CAM1B"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
/** WebSocket message types from backend signaling. */
|
|
3
|
+
export interface WsMessageRoomCreated {
|
|
4
|
+
type: 'room_created';
|
|
5
|
+
room_url: string;
|
|
6
|
+
}
|
|
7
|
+
export interface WsMessageUserTranscript {
|
|
8
|
+
type: 'user_transcript';
|
|
9
|
+
text: string;
|
|
10
|
+
final?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface WsMessageBotTranscript {
|
|
13
|
+
type: 'bot_transcript';
|
|
14
|
+
text: string;
|
|
15
|
+
}
|
|
16
|
+
export declare type WsMessage = WsMessageRoomCreated | WsMessageUserTranscript | WsMessageBotTranscript;
|
|
17
|
+
export interface TranscriptData {
|
|
18
|
+
text: string;
|
|
19
|
+
final: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* WebSocket-only client for voice agent signaling.
|
|
23
|
+
* CRITICAL: Uses native WebSocket only. NO Socket.IO, NO ngx-socket-io.
|
|
24
|
+
*
|
|
25
|
+
* Responsibilities:
|
|
26
|
+
* - Connect to ws_url (from POST /ai/ask-voice response)
|
|
27
|
+
* - Parse JSON messages (room_created, user_transcript, bot_transcript)
|
|
28
|
+
* - Emit roomCreated$, userTranscript$, botTranscript$
|
|
29
|
+
* - NO audio logic, NO mic logic. Audio is handled by Daily.js (WebRTC).
|
|
30
|
+
*/
|
|
31
|
+
export declare class WebSocketVoiceClientService {
|
|
32
|
+
private ws;
|
|
33
|
+
private roomCreatedSubject;
|
|
34
|
+
private userTranscriptSubject;
|
|
35
|
+
private botTranscriptSubject;
|
|
36
|
+
/** Emits room_url when backend sends room_created. */
|
|
37
|
+
roomCreated$: Observable<string>;
|
|
38
|
+
/** Emits user transcript updates. */
|
|
39
|
+
userTranscript$: Observable<TranscriptData>;
|
|
40
|
+
/** Emits bot transcript updates. */
|
|
41
|
+
botTranscript$: Observable<string>;
|
|
42
|
+
/** Connect to signaling WebSocket. No audio over this connection. */
|
|
43
|
+
connect(wsUrl: string): void;
|
|
44
|
+
/** Disconnect and cleanup. */
|
|
45
|
+
disconnect(): void;
|
|
46
|
+
/** Whether the WebSocket is open. */
|
|
47
|
+
get isConnected(): boolean;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=websocket-voice-client.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-voice-client.service.d.ts","sourceRoot":"/Users/rohitthakur/hive-gpt/HiveAI-Packages/Angular/projects/hivegpt/eventsgpt-angular/src/","sources":["lib/components/voice-agent/services/websocket-voice-client.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAW,MAAM,MAAM,CAAC;AAE3C,sDAAsD;AACtD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,oBAAY,SAAS,GACjB,oBAAoB,GACpB,uBAAuB,GACvB,sBAAsB,CAAC;AAE3B,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,qBAGa,2BAA2B;IACtC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,kBAAkB,CAAyB;IACnD,OAAO,CAAC,qBAAqB,CAAiC;IAC9D,OAAO,CAAC,oBAAoB,CAAyB;IAErD,sDAAsD;IACtD,YAAY,EAAE,UAAU,CAAC,MAAM,CAAC,CAA0C;IAE1E,qCAAqC;IACrC,eAAe,EAAE,UAAU,CAAC,cAAc,CAAC,CACC;IAE5C,oCAAoC;IACpC,cAAc,EAAE,UAAU,CAAC,MAAM,CAAC,CACS;IAE3C,qEAAqE;IACrE,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IA4C5B,8BAA8B;IAC9B,UAAU,IAAI,IAAI;IAOlB,qCAAqC;IACrC,IAAI,WAAW,IAAI,OAAO,CAEzB;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Voice agent module. Uses
|
|
3
|
-
*
|
|
2
|
+
* Voice agent module. Uses native WebSocket + Daily.js only.
|
|
3
|
+
* Does NOT use Socket.IO or ngx-socket-io.
|
|
4
4
|
*/
|
|
5
5
|
export declare class VoiceAgentModule {
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice-agent.module.d.ts","sourceRoot":"/Users/rohitthakur/hive-gpt/HiveAI-Packages/Angular/projects/hivegpt/eventsgpt-angular/src/","sources":["lib/components/voice-agent/voice-agent.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"voice-agent.module.d.ts","sourceRoot":"/Users/rohitthakur/hive-gpt/HiveAI-Packages/Angular/projects/hivegpt/eventsgpt-angular/src/","sources":["lib/components/voice-agent/voice-agent.module.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,qBAiBa,gBAAgB;CAAI"}
|