@anam-ai/js-sdk 1.2.0 → 1.3.0-alpha.1
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/dist/main/AnamClient.d.ts +4 -1
- package/dist/main/AnamClient.d.ts.map +1 -1
- package/dist/main/AnamClient.js +51 -4
- package/dist/main/AnamClient.js.map +1 -1
- package/dist/main/modules/CoreApiRestClient.d.ts +2 -1
- package/dist/main/modules/CoreApiRestClient.d.ts.map +1 -1
- package/dist/main/modules/CoreApiRestClient.js +2 -2
- package/dist/main/modules/CoreApiRestClient.js.map +1 -1
- package/dist/main/types/AnamPublicClientOptions.d.ts +2 -0
- package/dist/main/types/AnamPublicClientOptions.d.ts.map +1 -1
- package/dist/main/types/VoiceDetectionOptions.d.ts +4 -0
- package/dist/main/types/VoiceDetectionOptions.d.ts.map +1 -0
- package/dist/main/types/VoiceDetectionOptions.js +3 -0
- package/dist/main/types/VoiceDetectionOptions.js.map +1 -0
- package/dist/main/types/coreApi/StartSessionOptions.d.ts +5 -0
- package/dist/main/types/coreApi/StartSessionOptions.d.ts.map +1 -0
- package/dist/main/types/coreApi/StartSessionOptions.js +3 -0
- package/dist/main/types/coreApi/StartSessionOptions.js.map +1 -0
- package/dist/module/AnamClient.d.ts +4 -1
- package/dist/module/AnamClient.d.ts.map +1 -1
- package/dist/module/AnamClient.js +51 -4
- package/dist/module/AnamClient.js.map +1 -1
- package/dist/module/modules/CoreApiRestClient.d.ts +2 -1
- package/dist/module/modules/CoreApiRestClient.d.ts.map +1 -1
- package/dist/module/modules/CoreApiRestClient.js +2 -2
- package/dist/module/modules/CoreApiRestClient.js.map +1 -1
- package/dist/module/types/AnamPublicClientOptions.d.ts +2 -0
- package/dist/module/types/AnamPublicClientOptions.d.ts.map +1 -1
- package/dist/module/types/VoiceDetectionOptions.d.ts +4 -0
- package/dist/module/types/VoiceDetectionOptions.d.ts.map +1 -0
- package/dist/module/types/VoiceDetectionOptions.js +2 -0
- package/dist/module/types/VoiceDetectionOptions.js.map +1 -0
- package/dist/module/types/coreApi/StartSessionOptions.d.ts +5 -0
- package/dist/module/types/coreApi/StartSessionOptions.d.ts.map +1 -0
- package/dist/module/types/coreApi/StartSessionOptions.js +2 -0
- package/dist/module/types/coreApi/StartSessionOptions.js.map +1 -0
- package/dist/umd/anam.js +1 -1
- package/package.json +1 -1
|
@@ -4,12 +4,15 @@ export default class AnamClient {
|
|
|
4
4
|
protected sessionToken: string | undefined;
|
|
5
5
|
protected apiKey: string | undefined;
|
|
6
6
|
private personaConfig;
|
|
7
|
+
private clientOptions;
|
|
8
|
+
private inputAudioState;
|
|
7
9
|
private sessionId;
|
|
8
10
|
private streamingClient;
|
|
9
11
|
private apiClient;
|
|
10
12
|
private _isStreaming;
|
|
11
|
-
private inputAudioState;
|
|
12
13
|
constructor(sessionToken: string | undefined, personaConfig: PersonaConfig, options?: AnamClientOptions);
|
|
14
|
+
private validateClientConfig;
|
|
15
|
+
private buildStartSessionOptionsForClient;
|
|
13
16
|
private startSession;
|
|
14
17
|
private startSessionIfNeeded;
|
|
15
18
|
stream(callbacks?: ConnectionCallbacks, userProvidedAudioStream?: MediaStream): Promise<MediaStream[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnamClient.d.ts","sourceRoot":"","sources":["../../src/AnamClient.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,aAAa,EAEd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"AnamClient.d.ts","sourceRoot":"","sources":["../../src/AnamClient.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,aAAa,EAEd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAErC,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,eAAe,CAAuC;IAE9D,OAAO,CAAC,SAAS,CAAuB;IAExC,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,SAAS,CAAoB;IAErC,OAAO,CAAC,YAAY,CAAS;gBAG3B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,aAAa,EAAE,aAAa,EAC5B,OAAO,CAAC,EAAE,iBAAiB;IAuB7B,OAAO,CAAC,oBAAoB;IAqC5B,OAAO,CAAC,iCAAiC;YAY3B,YAAY;YAyDZ,oBAAoB;IAiBrB,MAAM,CACjB,SAAS,GAAE,mBAAwB,EACnC,uBAAuB,CAAC,EAAE,WAAW,GACpC,OAAO,CAAC,WAAW,EAAE,CAAC;IAmCZ,6BAA6B,CACxC,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,SAAS,GAAE,mBAAwB,EACnC,uBAAuB,CAAC,EAAE,WAAW,GACpC,OAAO,CAAC,IAAI,CAAC;IAiBH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1C,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQhC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IASpC,WAAW,IAAI,OAAO;IAItB,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAIpD,gBAAgB,IAAI,aAAa,GAAG,SAAS;IAI7C,kBAAkB,IAAI,eAAe;IAOrC,cAAc,IAAI,eAAe;IAYjC,gBAAgB,IAAI,eAAe;CAW3C"}
|
package/dist/main/AnamClient.js
CHANGED
|
@@ -13,18 +13,62 @@ const CoreApiRestClient_1 = require("./modules/CoreApiRestClient");
|
|
|
13
13
|
const StreamingClient_1 = require("./modules/StreamingClient");
|
|
14
14
|
class AnamClient {
|
|
15
15
|
constructor(sessionToken, personaConfig, options) {
|
|
16
|
+
this.inputAudioState = { isMuted: false };
|
|
16
17
|
this.sessionId = null;
|
|
17
18
|
this.streamingClient = null;
|
|
18
19
|
this._isStreaming = false;
|
|
19
|
-
|
|
20
|
-
if (
|
|
21
|
-
throw new Error(
|
|
20
|
+
const configError = this.validateClientConfig(sessionToken, personaConfig, options);
|
|
21
|
+
if (configError) {
|
|
22
|
+
throw new Error(configError);
|
|
22
23
|
}
|
|
23
24
|
this.sessionToken = sessionToken;
|
|
24
25
|
this.apiKey = options === null || options === void 0 ? void 0 : options.apiKey;
|
|
25
26
|
this.personaConfig = personaConfig;
|
|
27
|
+
this.clientOptions = options;
|
|
26
28
|
this.apiClient = new CoreApiRestClient_1.CoreApiRestClient(sessionToken, options === null || options === void 0 ? void 0 : options.apiKey, options === null || options === void 0 ? void 0 : options.api);
|
|
27
29
|
}
|
|
30
|
+
validateClientConfig(sessionToken, personaConfig, options) {
|
|
31
|
+
// Validate authentication configuration
|
|
32
|
+
if (!sessionToken && !(options === null || options === void 0 ? void 0 : options.apiKey)) {
|
|
33
|
+
return 'Either sessionToken or apiKey must be provided';
|
|
34
|
+
}
|
|
35
|
+
if ((options === null || options === void 0 ? void 0 : options.apiKey) && sessionToken) {
|
|
36
|
+
return 'Only one of sessionToken or apiKey should be used';
|
|
37
|
+
}
|
|
38
|
+
// Validate persona configuration
|
|
39
|
+
if (!personaConfig) {
|
|
40
|
+
return 'Persona configuration must be provided';
|
|
41
|
+
}
|
|
42
|
+
if (personaConfig.personaId === '' || !personaConfig.personaId) {
|
|
43
|
+
return 'Persona ID must be provided in persona configuration';
|
|
44
|
+
}
|
|
45
|
+
// Validate voice detection configuration
|
|
46
|
+
if (options === null || options === void 0 ? void 0 : options.voiceDetection) {
|
|
47
|
+
// End of speech sensitivity must be a number between 0 and 1
|
|
48
|
+
if (options.voiceDetection.endOfSpeechSensitivity !== undefined) {
|
|
49
|
+
if (typeof options.voiceDetection.endOfSpeechSensitivity !== 'number') {
|
|
50
|
+
return 'End of speech sensitivity must be a number';
|
|
51
|
+
}
|
|
52
|
+
if (options.voiceDetection.endOfSpeechSensitivity < 0 ||
|
|
53
|
+
options.voiceDetection.endOfSpeechSensitivity > 1) {
|
|
54
|
+
return 'End of speech sensitivity must be between 0 and 1';
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
buildStartSessionOptionsForClient() {
|
|
61
|
+
var _a;
|
|
62
|
+
const sessionOptions = {};
|
|
63
|
+
if ((_a = this.clientOptions) === null || _a === void 0 ? void 0 : _a.voiceDetection) {
|
|
64
|
+
sessionOptions.voiceDetection = this.clientOptions.voiceDetection;
|
|
65
|
+
}
|
|
66
|
+
// return undefined if no options are set
|
|
67
|
+
if (Object.keys(sessionOptions).length === 0) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
return sessionOptions;
|
|
71
|
+
}
|
|
28
72
|
startSession(userProvidedAudioStream) {
|
|
29
73
|
return __awaiter(this, void 0, void 0, function* () {
|
|
30
74
|
try {
|
|
@@ -32,7 +76,10 @@ class AnamClient {
|
|
|
32
76
|
if (!config) {
|
|
33
77
|
throw new Error('A default persona configuration has not been set and no persona configuration was provided');
|
|
34
78
|
}
|
|
35
|
-
|
|
79
|
+
// build session options from client options
|
|
80
|
+
const sessionOptions = this.buildStartSessionOptionsForClient();
|
|
81
|
+
// start a new session
|
|
82
|
+
const response = yield this.apiClient.startSession(config, sessionOptions);
|
|
36
83
|
const { sessionId, clientConfig, engineHost, engineProtocol, signallingEndpoint, } = response;
|
|
37
84
|
const { heartbeatIntervalSeconds, maxWsReconnectionAttempts, iceServers, } = clientConfig;
|
|
38
85
|
// create a new streaming client
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnamClient.js","sourceRoot":"","sources":["../../src/AnamClient.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,mEAAgE;AAChE,+DAA4D;
|
|
1
|
+
{"version":3,"file":"AnamClient.js","sourceRoot":"","sources":["../../src/AnamClient.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,mEAAgE;AAChE,+DAA4D;AAU5D,MAAqB,UAAU;IAe7B,YACE,YAAgC,EAChC,aAA4B,EAC5B,OAA2B;QAZrB,oBAAe,GAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAEtD,cAAS,GAAkB,IAAI,CAAC;QAEhC,oBAAe,GAA2B,IAAI,CAAC;QAG/C,iBAAY,GAAG,KAAK,CAAC;QAO3B,MAAM,WAAW,GAAuB,IAAI,CAAC,oBAAoB,CAC/D,YAAY,EACZ,aAAa,EACb,OAAO,CACR,CAAC;QACF,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC;QAC9B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAE7B,IAAI,CAAC,SAAS,GAAG,IAAI,qCAAiB,CACpC,YAAY,EACZ,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EACf,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,CACb,CAAC;IACJ,CAAC;IAEO,oBAAoB,CAC1B,YAAgC,EAChC,aAA4B,EAC5B,OAA2B;QAE3B,wCAAwC;QACxC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,EAAE,CAAC;YACtC,OAAO,gDAAgD,CAAC;QAC1D,CAAC;QACD,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,KAAI,YAAY,EAAE,CAAC;YACpC,OAAO,mDAAmD,CAAC;QAC7D,CAAC;QACD,iCAAiC;QACjC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,wCAAwC,CAAC;QAClD,CAAC;QACD,IAAI,aAAa,CAAC,SAAS,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;YAC/D,OAAO,sDAAsD,CAAC;QAChE,CAAC;QACD,yCAAyC;QACzC,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,EAAE,CAAC;YAC5B,6DAA6D;YAC7D,IAAI,OAAO,CAAC,cAAc,CAAC,sBAAsB,KAAK,SAAS,EAAE,CAAC;gBAChE,IAAI,OAAO,OAAO,CAAC,cAAc,CAAC,sBAAsB,KAAK,QAAQ,EAAE,CAAC;oBACtE,OAAO,4CAA4C,CAAC;gBACtD,CAAC;gBACD,IACE,OAAO,CAAC,cAAc,CAAC,sBAAsB,GAAG,CAAC;oBACjD,OAAO,CAAC,cAAc,CAAC,sBAAsB,GAAG,CAAC,EACjD,CAAC;oBACD,OAAO,mDAAmD,CAAC;gBAC7D,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,iCAAiC;;QACvC,MAAM,cAAc,GAAwB,EAAE,CAAC;QAC/C,IAAI,MAAA,IAAI,CAAC,aAAa,0CAAE,cAAc,EAAE,CAAC;YACvC,cAAc,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;QACpE,CAAC;QACD,yCAAyC;QACzC,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7C,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAEa,YAAY,CACxB,uBAAqC;;YAErC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;gBAClC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAC;gBACJ,CAAC;gBACD,4CAA4C;gBAC5C,MAAM,cAAc,GAClB,IAAI,CAAC,iCAAiC,EAAE,CAAC;gBAC3C,sBAAsB;gBACtB,MAAM,QAAQ,GAAyB,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CACtE,MAAM,EACN,cAAc,CACf,CAAC;gBACF,MAAM,EACJ,SAAS,EACT,YAAY,EACZ,UAAU,EACV,cAAc,EACd,kBAAkB,GACnB,GAAG,QAAQ,CAAC;gBACb,MAAM,EACJ,wBAAwB,EACxB,yBAAyB,EACzB,UAAU,GACX,GAAG,YAAY,CAAC;gBACjB,gCAAgC;gBAChC,IAAI,CAAC,eAAe,GAAG,IAAI,iCAAe,CAAC,SAAS,EAAE;oBACpD,MAAM,EAAE;wBACN,OAAO,EAAE,GAAG,cAAc,MAAM,UAAU,EAAE;qBAC7C;oBACD,UAAU,EAAE;wBACV,wBAAwB;wBACxB,yBAAyB;wBACzB,GAAG,EAAE;4BACH,OAAO,EAAE,UAAU;4BACnB,QAAQ,EAAE,cAAc;4BACxB,cAAc,EAAE,kBAAkB;yBACnC;qBACF;oBACD,UAAU;oBACV,UAAU,EAAE;wBACV,eAAe,EAAE,IAAI,CAAC,eAAe;wBACrC,uBAAuB,EAAE,uBAAuB;qBACjD;iBACF,CAAC,CAAC;gBACH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC3B,OAAO,SAAS,CAAC;YACnB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;KAAA;IAEa,oBAAoB,CAAC,uBAAqC;;YACtE,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC7C,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;gBACnD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,IAAI,KAAK,CACb,wDAAwD,CACzD,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC7C,MAAM,IAAI,KAAK,CACb,uGAAuG,CACxG,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;KAAA;IAEY,MAAM;6DACjB,YAAiC,EAAE,EACnC,uBAAqC;YAErC,MAAM,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACvC,CAAC;YACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,EAAE;;gBAC5C,6CAA6C;gBAC7C,MAAM,OAAO,GAAkB,EAAE,CAAC;gBAClC,IAAI,aAAa,GAAG,KAAK,CAAC;gBAC1B,IAAI,aAAa,GAAG,KAAK,CAAC;gBAE1B,MAAA,IAAI,CAAC,eAAe,0CAAE,6BAA6B,CACjD,CAAC,WAAwB,EAAE,EAAE;oBAC3B,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC1B,aAAa,GAAG,IAAI,CAAC;oBACrB,IAAI,aAAa,EAAE,CAAC;wBAClB,OAAO,CAAC,OAAO,CAAC,CAAC;oBACnB,CAAC;gBACH,CAAC,CACF,CAAC;gBACF,MAAA,IAAI,CAAC,eAAe,0CAAE,6BAA6B,CACjD,CAAC,WAAwB,EAAE,EAAE;oBAC3B,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC1B,aAAa,GAAG,IAAI,CAAC;oBACrB,IAAI,aAAa,EAAE,CAAC;wBAClB,OAAO,CAAC,OAAO,CAAC,CAAC;oBACnB,CAAC;gBACH,CAAC,CACF,CAAC;gBACF,kBAAkB;gBAClB,MAAA,IAAI,CAAC,eAAe,0CAAE,eAAe,CAAC,SAAS,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAEY,6BAA6B;6DACxC,cAAsB,EACtB,cAAsB,EACtB,YAAiC,EAAE,EACnC,uBAAqC;YAErC,MAAM,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACvC,CAAC;YACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;YAED,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAC5C,cAAc,EACd,cAAc,CACf,CAAC;YACF,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAClD,CAAC;KAAA;IAEY,IAAI,CAAC,OAAe;;YAC/B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;KAAA;IAEM,eAAe,CAAC,OAAe;QACpC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAEY,aAAa;;YACxB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,CAAC;gBACtC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC5B,CAAC;QACH,CAAC;KAAA;IAEM,WAAW;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAEM,gBAAgB,CAAC,aAA4B;QAClD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAEM,gBAAgB;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAEM,kBAAkB;QACvB,sEAAsE;QACtE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;QACnE,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IACM,cAAc;QACnB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,mCACf,IAAI,CAAC,eAAe,KACvB,OAAO,EAAE,IAAI,GACd,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAEM,gBAAgB;QACrB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,mCACf,IAAI,CAAC,eAAe,KACvB,OAAO,EAAE,KAAK,GACf,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;CACF;AA1SD,6BA0SC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { CoreApiRestClientOptions, PersonaConfig, StartSessionResponse } from '../types';
|
|
2
|
+
import { StartSessionOptions } from '../types/coreApi/StartSessionOptions';
|
|
2
3
|
export declare class CoreApiRestClient {
|
|
3
4
|
protected baseUrl: string;
|
|
4
5
|
protected apiVersion: string;
|
|
5
6
|
protected apiKey: string | null;
|
|
6
7
|
protected sessionToken: string | null;
|
|
7
8
|
constructor(sessionToken?: string, apiKey?: string, options?: CoreApiRestClientOptions);
|
|
8
|
-
startSession(personaConfig: PersonaConfig): Promise<StartSessionResponse>;
|
|
9
|
+
startSession(personaConfig: PersonaConfig, sessionOptions?: StartSessionOptions): Promise<StartSessionResponse>;
|
|
9
10
|
unsafe_getSessionToken(): Promise<string>;
|
|
10
11
|
private getApiUrl;
|
|
11
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoreApiRestClient.d.ts","sourceRoot":"","sources":["../../../src/modules/CoreApiRestClient.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,oBAAoB,EACrB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"CoreApiRestClient.d.ts","sourceRoot":"","sources":["../../../src/modules/CoreApiRestClient.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E,qBAAa,iBAAiB;IAC5B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;gBAGpC,YAAY,CAAC,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,wBAAwB;IAWvB,YAAY,CACvB,aAAa,EAAE,aAAa,EAC5B,cAAc,CAAC,EAAE,mBAAmB,GACnC,OAAO,CAAC,oBAAoB,CAAC;IAoBnB,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAsBtD,OAAO,CAAC,SAAS;CAGlB"}
|
|
@@ -21,7 +21,7 @@ class CoreApiRestClient {
|
|
|
21
21
|
this.baseUrl = (options === null || options === void 0 ? void 0 : options.baseUrl) || constants_1.DEFAULT_API_BASE_URL;
|
|
22
22
|
this.apiVersion = (options === null || options === void 0 ? void 0 : options.apiVersion) || constants_1.DEFAULT_API_VERSION;
|
|
23
23
|
}
|
|
24
|
-
startSession(personaConfig) {
|
|
24
|
+
startSession(personaConfig, sessionOptions) {
|
|
25
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26
26
|
if (!this.sessionToken) {
|
|
27
27
|
this.sessionToken = yield this.unsafe_getSessionToken();
|
|
@@ -33,7 +33,7 @@ class CoreApiRestClient {
|
|
|
33
33
|
'Content-Type': 'application/json',
|
|
34
34
|
Authorization: `Bearer ${this.sessionToken}`,
|
|
35
35
|
},
|
|
36
|
-
body: JSON.stringify({ personaConfig }),
|
|
36
|
+
body: JSON.stringify({ personaConfig, sessionOptions }),
|
|
37
37
|
});
|
|
38
38
|
const data = yield response.json();
|
|
39
39
|
return data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoreApiRestClient.js","sourceRoot":"","sources":["../../../src/modules/CoreApiRestClient.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAA6E;
|
|
1
|
+
{"version":3,"file":"CoreApiRestClient.js","sourceRoot":"","sources":["../../../src/modules/CoreApiRestClient.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAA6E;AAQ7E,MAAa,iBAAiB;IAM5B,YACE,YAAqB,EACrB,MAAe,EACf,OAAkC;QAElC,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,IAAI,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,KAAI,gCAAoB,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,KAAI,+BAAmB,CAAC;IAC/D,CAAC;IAEY,YAAY,CACvB,aAA4B,EAC5B,cAAoC;;YAEpC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvB,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC1D,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,iBAAiB,EAAE;oBACjE,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;wBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,YAAY,EAAE;qBAC7C;oBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC;iBACxD,CAAC,CAAC;gBACH,MAAM,IAAI,GAAyB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACzD,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;KAAA;IAEY,sBAAsB;;YACjC,OAAO,CAAC,IAAI,CACV,sEAAsE,CACvE,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,qBAAqB,EAAE;oBACrE,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;wBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;qBACvC;iBACF,CAAC,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnC,OAAO,IAAI,CAAC,YAAY,CAAC;YAC3B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;KAAA;IAEO,SAAS;QACf,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC7C,CAAC;CACF;AApED,8CAoEC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { CoreApiRestClientOptions } from '../types';
|
|
2
|
+
import { VoiceDetectionOptions } from './VoiceDetectionOptions';
|
|
2
3
|
export interface AnamPublicClientOptions {
|
|
3
4
|
api?: CoreApiRestClientOptions;
|
|
5
|
+
voiceDetection?: VoiceDetectionOptions;
|
|
4
6
|
}
|
|
5
7
|
//# sourceMappingURL=AnamPublicClientOptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnamPublicClientOptions.d.ts","sourceRoot":"","sources":["../../../src/types/AnamPublicClientOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"AnamPublicClientOptions.d.ts","sourceRoot":"","sources":["../../../src/types/AnamPublicClientOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,wBAAwB,CAAC;IAC/B,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceDetectionOptions.d.ts","sourceRoot":"","sources":["../../../src/types/VoiceDetectionOptions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceDetectionOptions.js","sourceRoot":"","sources":["../../../src/types/VoiceDetectionOptions.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StartSessionOptions.d.ts","sourceRoot":"","sources":["../../../../src/types/coreApi/StartSessionOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,WAAW,mBAAmB;IAClC,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StartSessionOptions.js","sourceRoot":"","sources":["../../../../src/types/coreApi/StartSessionOptions.ts"],"names":[],"mappings":""}
|
|
@@ -4,12 +4,15 @@ export default class AnamClient {
|
|
|
4
4
|
protected sessionToken: string | undefined;
|
|
5
5
|
protected apiKey: string | undefined;
|
|
6
6
|
private personaConfig;
|
|
7
|
+
private clientOptions;
|
|
8
|
+
private inputAudioState;
|
|
7
9
|
private sessionId;
|
|
8
10
|
private streamingClient;
|
|
9
11
|
private apiClient;
|
|
10
12
|
private _isStreaming;
|
|
11
|
-
private inputAudioState;
|
|
12
13
|
constructor(sessionToken: string | undefined, personaConfig: PersonaConfig, options?: AnamClientOptions);
|
|
14
|
+
private validateClientConfig;
|
|
15
|
+
private buildStartSessionOptionsForClient;
|
|
13
16
|
private startSession;
|
|
14
17
|
private startSessionIfNeeded;
|
|
15
18
|
stream(callbacks?: ConnectionCallbacks, userProvidedAudioStream?: MediaStream): Promise<MediaStream[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnamClient.d.ts","sourceRoot":"","sources":["../../src/AnamClient.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,aAAa,EAEd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"AnamClient.d.ts","sourceRoot":"","sources":["../../src/AnamClient.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,aAAa,EAEd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAErC,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,eAAe,CAAuC;IAE9D,OAAO,CAAC,SAAS,CAAuB;IAExC,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,SAAS,CAAoB;IAErC,OAAO,CAAC,YAAY,CAAS;gBAG3B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,aAAa,EAAE,aAAa,EAC5B,OAAO,CAAC,EAAE,iBAAiB;IAuB7B,OAAO,CAAC,oBAAoB;IAqC5B,OAAO,CAAC,iCAAiC;YAY3B,YAAY;YAyDZ,oBAAoB;IAiBrB,MAAM,CACjB,SAAS,GAAE,mBAAwB,EACnC,uBAAuB,CAAC,EAAE,WAAW,GACpC,OAAO,CAAC,WAAW,EAAE,CAAC;IAmCZ,6BAA6B,CACxC,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,SAAS,GAAE,mBAAwB,EACnC,uBAAuB,CAAC,EAAE,WAAW,GACpC,OAAO,CAAC,IAAI,CAAC;IAiBH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1C,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQhC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IASpC,WAAW,IAAI,OAAO;IAItB,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAIpD,gBAAgB,IAAI,aAAa,GAAG,SAAS;IAI7C,kBAAkB,IAAI,eAAe;IAOrC,cAAc,IAAI,eAAe;IAYjC,gBAAgB,IAAI,eAAe;CAW3C"}
|
|
@@ -11,18 +11,62 @@ import { CoreApiRestClient } from './modules/CoreApiRestClient';
|
|
|
11
11
|
import { StreamingClient } from './modules/StreamingClient';
|
|
12
12
|
export default class AnamClient {
|
|
13
13
|
constructor(sessionToken, personaConfig, options) {
|
|
14
|
+
this.inputAudioState = { isMuted: false };
|
|
14
15
|
this.sessionId = null;
|
|
15
16
|
this.streamingClient = null;
|
|
16
17
|
this._isStreaming = false;
|
|
17
|
-
|
|
18
|
-
if (
|
|
19
|
-
throw new Error(
|
|
18
|
+
const configError = this.validateClientConfig(sessionToken, personaConfig, options);
|
|
19
|
+
if (configError) {
|
|
20
|
+
throw new Error(configError);
|
|
20
21
|
}
|
|
21
22
|
this.sessionToken = sessionToken;
|
|
22
23
|
this.apiKey = options === null || options === void 0 ? void 0 : options.apiKey;
|
|
23
24
|
this.personaConfig = personaConfig;
|
|
25
|
+
this.clientOptions = options;
|
|
24
26
|
this.apiClient = new CoreApiRestClient(sessionToken, options === null || options === void 0 ? void 0 : options.apiKey, options === null || options === void 0 ? void 0 : options.api);
|
|
25
27
|
}
|
|
28
|
+
validateClientConfig(sessionToken, personaConfig, options) {
|
|
29
|
+
// Validate authentication configuration
|
|
30
|
+
if (!sessionToken && !(options === null || options === void 0 ? void 0 : options.apiKey)) {
|
|
31
|
+
return 'Either sessionToken or apiKey must be provided';
|
|
32
|
+
}
|
|
33
|
+
if ((options === null || options === void 0 ? void 0 : options.apiKey) && sessionToken) {
|
|
34
|
+
return 'Only one of sessionToken or apiKey should be used';
|
|
35
|
+
}
|
|
36
|
+
// Validate persona configuration
|
|
37
|
+
if (!personaConfig) {
|
|
38
|
+
return 'Persona configuration must be provided';
|
|
39
|
+
}
|
|
40
|
+
if (personaConfig.personaId === '' || !personaConfig.personaId) {
|
|
41
|
+
return 'Persona ID must be provided in persona configuration';
|
|
42
|
+
}
|
|
43
|
+
// Validate voice detection configuration
|
|
44
|
+
if (options === null || options === void 0 ? void 0 : options.voiceDetection) {
|
|
45
|
+
// End of speech sensitivity must be a number between 0 and 1
|
|
46
|
+
if (options.voiceDetection.endOfSpeechSensitivity !== undefined) {
|
|
47
|
+
if (typeof options.voiceDetection.endOfSpeechSensitivity !== 'number') {
|
|
48
|
+
return 'End of speech sensitivity must be a number';
|
|
49
|
+
}
|
|
50
|
+
if (options.voiceDetection.endOfSpeechSensitivity < 0 ||
|
|
51
|
+
options.voiceDetection.endOfSpeechSensitivity > 1) {
|
|
52
|
+
return 'End of speech sensitivity must be between 0 and 1';
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
buildStartSessionOptionsForClient() {
|
|
59
|
+
var _a;
|
|
60
|
+
const sessionOptions = {};
|
|
61
|
+
if ((_a = this.clientOptions) === null || _a === void 0 ? void 0 : _a.voiceDetection) {
|
|
62
|
+
sessionOptions.voiceDetection = this.clientOptions.voiceDetection;
|
|
63
|
+
}
|
|
64
|
+
// return undefined if no options are set
|
|
65
|
+
if (Object.keys(sessionOptions).length === 0) {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
return sessionOptions;
|
|
69
|
+
}
|
|
26
70
|
startSession(userProvidedAudioStream) {
|
|
27
71
|
return __awaiter(this, void 0, void 0, function* () {
|
|
28
72
|
try {
|
|
@@ -30,7 +74,10 @@ export default class AnamClient {
|
|
|
30
74
|
if (!config) {
|
|
31
75
|
throw new Error('A default persona configuration has not been set and no persona configuration was provided');
|
|
32
76
|
}
|
|
33
|
-
|
|
77
|
+
// build session options from client options
|
|
78
|
+
const sessionOptions = this.buildStartSessionOptionsForClient();
|
|
79
|
+
// start a new session
|
|
80
|
+
const response = yield this.apiClient.startSession(config, sessionOptions);
|
|
34
81
|
const { sessionId, clientConfig, engineHost, engineProtocol, signallingEndpoint, } = response;
|
|
35
82
|
const { heartbeatIntervalSeconds, maxWsReconnectionAttempts, iceServers, } = clientConfig;
|
|
36
83
|
// create a new streaming client
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnamClient.js","sourceRoot":"","sources":["../../src/AnamClient.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"AnamClient.js","sourceRoot":"","sources":["../../src/AnamClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { CoreApiRestClientOptions, PersonaConfig, StartSessionResponse } from '../types';
|
|
2
|
+
import { StartSessionOptions } from '../types/coreApi/StartSessionOptions';
|
|
2
3
|
export declare class CoreApiRestClient {
|
|
3
4
|
protected baseUrl: string;
|
|
4
5
|
protected apiVersion: string;
|
|
5
6
|
protected apiKey: string | null;
|
|
6
7
|
protected sessionToken: string | null;
|
|
7
8
|
constructor(sessionToken?: string, apiKey?: string, options?: CoreApiRestClientOptions);
|
|
8
|
-
startSession(personaConfig: PersonaConfig): Promise<StartSessionResponse>;
|
|
9
|
+
startSession(personaConfig: PersonaConfig, sessionOptions?: StartSessionOptions): Promise<StartSessionResponse>;
|
|
9
10
|
unsafe_getSessionToken(): Promise<string>;
|
|
10
11
|
private getApiUrl;
|
|
11
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoreApiRestClient.d.ts","sourceRoot":"","sources":["../../../src/modules/CoreApiRestClient.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,oBAAoB,EACrB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"CoreApiRestClient.d.ts","sourceRoot":"","sources":["../../../src/modules/CoreApiRestClient.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E,qBAAa,iBAAiB;IAC5B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;gBAGpC,YAAY,CAAC,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,wBAAwB;IAWvB,YAAY,CACvB,aAAa,EAAE,aAAa,EAC5B,cAAc,CAAC,EAAE,mBAAmB,GACnC,OAAO,CAAC,oBAAoB,CAAC;IAoBnB,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAsBtD,OAAO,CAAC,SAAS;CAGlB"}
|
|
@@ -18,7 +18,7 @@ export class CoreApiRestClient {
|
|
|
18
18
|
this.baseUrl = (options === null || options === void 0 ? void 0 : options.baseUrl) || DEFAULT_API_BASE_URL;
|
|
19
19
|
this.apiVersion = (options === null || options === void 0 ? void 0 : options.apiVersion) || DEFAULT_API_VERSION;
|
|
20
20
|
}
|
|
21
|
-
startSession(personaConfig) {
|
|
21
|
+
startSession(personaConfig, sessionOptions) {
|
|
22
22
|
return __awaiter(this, void 0, void 0, function* () {
|
|
23
23
|
if (!this.sessionToken) {
|
|
24
24
|
this.sessionToken = yield this.unsafe_getSessionToken();
|
|
@@ -30,7 +30,7 @@ export class CoreApiRestClient {
|
|
|
30
30
|
'Content-Type': 'application/json',
|
|
31
31
|
Authorization: `Bearer ${this.sessionToken}`,
|
|
32
32
|
},
|
|
33
|
-
body: JSON.stringify({ personaConfig }),
|
|
33
|
+
body: JSON.stringify({ personaConfig, sessionOptions }),
|
|
34
34
|
});
|
|
35
35
|
const data = yield response.json();
|
|
36
36
|
return data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoreApiRestClient.js","sourceRoot":"","sources":["../../../src/modules/CoreApiRestClient.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"CoreApiRestClient.js","sourceRoot":"","sources":["../../../src/modules/CoreApiRestClient.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAQ7E,MAAM,OAAO,iBAAiB;IAM5B,YACE,YAAqB,EACrB,MAAe,EACf,OAAkC;QAElC,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,IAAI,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,KAAI,oBAAoB,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,KAAI,mBAAmB,CAAC;IAC/D,CAAC;IAEY,YAAY,CACvB,aAA4B,EAC5B,cAAoC;;YAEpC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvB,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC1D,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,iBAAiB,EAAE;oBACjE,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;wBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,YAAY,EAAE;qBAC7C;oBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC;iBACxD,CAAC,CAAC;gBACH,MAAM,IAAI,GAAyB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACzD,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;KAAA;IAEY,sBAAsB;;YACjC,OAAO,CAAC,IAAI,CACV,sEAAsE,CACvE,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,qBAAqB,EAAE;oBACrE,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;wBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;qBACvC;iBACF,CAAC,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnC,OAAO,IAAI,CAAC,YAAY,CAAC;YAC3B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;KAAA;IAEO,SAAS;QACf,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC7C,CAAC;CACF"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { CoreApiRestClientOptions } from '../types';
|
|
2
|
+
import { VoiceDetectionOptions } from './VoiceDetectionOptions';
|
|
2
3
|
export interface AnamPublicClientOptions {
|
|
3
4
|
api?: CoreApiRestClientOptions;
|
|
5
|
+
voiceDetection?: VoiceDetectionOptions;
|
|
4
6
|
}
|
|
5
7
|
//# sourceMappingURL=AnamPublicClientOptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnamPublicClientOptions.d.ts","sourceRoot":"","sources":["../../../src/types/AnamPublicClientOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"AnamPublicClientOptions.d.ts","sourceRoot":"","sources":["../../../src/types/AnamPublicClientOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,wBAAwB,CAAC;IAC/B,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceDetectionOptions.d.ts","sourceRoot":"","sources":["../../../src/types/VoiceDetectionOptions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceDetectionOptions.js","sourceRoot":"","sources":["../../../src/types/VoiceDetectionOptions.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StartSessionOptions.d.ts","sourceRoot":"","sources":["../../../../src/types/coreApi/StartSessionOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,WAAW,mBAAmB;IAClC,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StartSessionOptions.js","sourceRoot":"","sources":["../../../../src/types/coreApi/StartSessionOptions.ts"],"names":[],"mappings":""}
|
package/dist/umd/anam.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.anam=t():e.anam=t()}(self,(()=>(()=>{"use strict";var e={816:function(e,t,n){var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(o,s){function a(e){try{l(i.next(e))}catch(e){s(e)}}function r(e){try{l(i.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,r)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0});const o=n(18),s=n(577);t.default=class{constructor(e,t,n){if(this.sessionId=null,this.streamingClient=null,this._isStreaming=!1,this.inputAudioState={isMuted:!1},!e&&!(null==n?void 0:n.apiKey))throw new Error("Either sessionToken or apiKey must be provided");this.sessionToken=e,this.apiKey=null==n?void 0:n.apiKey,this.personaConfig=t,this.apiClient=new o.CoreApiRestClient(e,null==n?void 0:n.apiKey,null==n?void 0:n.api)}startSession(e){return i(this,void 0,void 0,(function*(){try{const t=this.personaConfig;if(!t)throw new Error("A default persona configuration has not been set and no persona configuration was provided");const n=yield this.apiClient.startSession(t),{sessionId:i,clientConfig:o,engineHost:a,engineProtocol:r,signallingEndpoint:l}=n,{heartbeatIntervalSeconds:c,maxWsReconnectionAttempts:d,iceServers:h}=o;return this.streamingClient=new s.StreamingClient(i,{engine:{baseUrl:`${r}://${a}`},signalling:{heartbeatIntervalSeconds:c,maxWsReconnectionAttempts:d,url:{baseUrl:a,protocol:r,signallingPath:l}},iceServers:h,inputAudio:{inputAudioState:this.inputAudioState,userProvidedMediaStream:e}}),this.sessionId=i,i}catch(e){throw new Error("Failed to start session")}}))}startSessionIfNeeded(e){return i(this,void 0,void 0,(function*(){if(!this.sessionId||!this.streamingClient){try{yield this.startSession(e)}catch(e){throw new Error("StreamToVideoAndAudioElements: Failed to start session")}if(!this.sessionId||!this.streamingClient)throw new Error("StreamToVideoAndAudioElements: session Id or streaming client is not available after starting session")}}))}stream(){return i(this,arguments,void 0,(function*(e={},t){if(yield this.startSessionIfNeeded(t),this._isStreaming)throw new Error("Already streaming");return this._isStreaming=!0,new Promise((t=>{var n,i,o;const s=[];let a=!1,r=!1;null===(n=this.streamingClient)||void 0===n||n.setOnVideoStreamStartCallback((e=>{s.push(e),a=!0,r&&t(s)})),null===(i=this.streamingClient)||void 0===i||i.setOnAudioStreamStartCallback((e=>{s.push(e),r=!0,a&&t(s)})),null===(o=this.streamingClient)||void 0===o||o.startConnection(e)}))}))}streamToVideoAndAudioElements(e,t){return i(this,arguments,void 0,(function*(e,t,n={},i){if(yield this.startSessionIfNeeded(i),this._isStreaming)throw new Error("Already streaming");if(this._isStreaming=!0,!this.streamingClient)throw new Error("Failed to stream: streaming client is not available");this.streamingClient.setMediaStreamTargetsById(e,t),this.streamingClient.startConnection(n)}))}talk(e){return i(this,void 0,void 0,(function*(){if(!this.streamingClient)throw new Error("Failed to send talk command: session is not started. Have you called startSession?");if(!this._isStreaming)throw new Error("Failed to send talk command: not currently streaming. Have you called stream?");yield this.streamingClient.sendTalkCommand(e)}))}sendDataMessage(e){if(!this.streamingClient)throw new Error("Failed to send message: session is not started.");this.streamingClient.sendDataMessage(e)}stopStreaming(){return i(this,void 0,void 0,(function*(){this.streamingClient&&(this.streamingClient.stopConnection(),this.streamingClient=null,this.sessionId=null,this._isStreaming=!1)}))}isStreaming(){return this._isStreaming}setPersonaConfig(e){this.personaConfig=e}getPersonaConfig(){return this.personaConfig}getInputAudioState(){return this.streamingClient&&(this.inputAudioState=this.streamingClient.getInputAudioState()),this.inputAudioState}muteInputAudio(){return this.streamingClient?this.inputAudioState=this.streamingClient.muteInputAudio():this.inputAudioState=Object.assign(Object.assign({},this.inputAudioState),{isMuted:!0}),this.inputAudioState}unmuteInputAudio(){return this.streamingClient?this.inputAudioState=this.streamingClient.unmuteInputAudio():this.inputAudioState=Object.assign(Object.assign({},this.inputAudioState),{isMuted:!1}),this.inputAudioState}}},440:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.unsafe_createClientWithApiKey=t.createClient=void 0;const o=i(n(816));t.createClient=(e,t,n)=>new o.default(e,t,n),t.unsafe_createClientWithApiKey=(e,t,n)=>new o.default(void 0,t,Object.assign(Object.assign({},n),{apiKey:e}))},985:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PUBLIC_MESSAGE_ON_WEBRTC_FAILURE=t.PUBLIC_MESSAGE_ON_SIGNALLING_CLIENT_CONNECTION_FAILURE=t.DEFAULT_API_VERSION=t.DEFAULT_API_BASE_URL=t.DEFAULT_HEADERS=void 0,t.DEFAULT_HEADERS={"Content-Type":"application/json"},t.DEFAULT_API_BASE_URL="https://api.anam.ai",t.DEFAULT_API_VERSION="/v1",t.PUBLIC_MESSAGE_ON_SIGNALLING_CLIENT_CONNECTION_FAILURE="There was a problem connecting to our servers. Please try again.",t.PUBLIC_MESSAGE_ON_WEBRTC_FAILURE="There was an issue connecting to our servers. Please try again."},18:function(e,t,n){var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(o,s){function a(e){try{l(i.next(e))}catch(e){s(e)}}function r(e){try{l(i.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,r)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CoreApiRestClient=void 0;const o=n(985);t.CoreApiRestClient=class{constructor(e,t,n){if(!e&&!t)throw new Error("Either sessionToken or apiKey must be provided");this.sessionToken=e||null,this.apiKey=t||null,this.baseUrl=(null==n?void 0:n.baseUrl)||o.DEFAULT_API_BASE_URL,this.apiVersion=(null==n?void 0:n.apiVersion)||o.DEFAULT_API_VERSION}startSession(e){return i(this,void 0,void 0,(function*(){this.sessionToken||(this.sessionToken=yield this.unsafe_getSessionToken());try{const t=yield fetch(`${this.getApiUrl()}/engine/session`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.sessionToken}`},body:JSON.stringify({personaConfig:e})});return yield t.json()}catch(e){throw new Error("Failed to start session")}}))}unsafe_getSessionToken(){return i(this,void 0,void 0,(function*(){if(console.warn("Using unsecure method. This method should not be used in production."),!this.apiKey)throw new Error("No apiKey provided");try{const e=yield fetch(`${this.getApiUrl()}/auth/session-token`,{method:"GET",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`}});return(yield e.json()).sessionToken}catch(e){throw new Error("Failed to get session token")}}))}getApiUrl(){return`${this.baseUrl}${this.apiVersion}`}}},529:function(e,t){var n=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(o,s){function a(e){try{l(i.next(e))}catch(e){s(e)}}function r(e){try{l(i.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,r)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EngineApiRestClient=void 0,t.EngineApiRestClient=class{constructor(e,t){this.baseUrl=e,this.sessionId=t}sendTalkCommand(e){return n(this,void 0,void 0,(function*(){try{const t=yield fetch(`${this.baseUrl}/talk?session_id=${this.sessionId}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:e})});if(!t.ok)throw new Error(`Failed to send talk command: ${t.status} ${t.statusText}`)}catch(e){throw console.error(e),new Error("EngineApiRestClient - sendTalkCommand: Failed to send talk command")}}))}}},279:function(e,t,n){var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(o,s){function a(e){try{l(i.next(e))}catch(e){s(e)}}function r(e){try{l(i.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,r)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SignallingClient=void 0;const o=n(170);t.SignallingClient=class{constructor(e,t,n,i,o){var s;if(this.stopSignal=!1,this.sendingBuffer=[],this.wsConnectionAttempts=0,this.socket=null,this.heartBeatIntervalRef=null,!e)throw new Error("Signalling Client: sessionId is required");this.sessionId=e,n&&(this.onSignalMessageReceivedCallback=n),i&&(this.onClientConnectedCallback=i),o&&(this.onClientConnectionFailureCallback=o);const{heartbeatIntervalSeconds:a,maxWsReconnectionAttempts:r,url:l}=t;if(this.heartbeatIntervalSeconds=a||5,this.maxWsReconnectionAttempts=r||5,!l.baseUrl)throw new Error("Signalling Client: baseUrl is required");const c=`${l.protocol||"https"}://${l.baseUrl}`;this.url=new URL(c),this.url.protocol="http"===l.protocol?"ws:":"wss:",l.port&&(this.url.port=l.port),this.url.pathname=null!==(s=l.signallingPath)&&void 0!==s?s:"/ws",this.url.searchParams.append("session_id",e)}stop(){this.stopSignal=!0,this.closeSocket()}connect(){return this.socket=new WebSocket(this.url.href),this.socket.onopen=this.onOpen.bind(this),this.socket.onclose=this.onClose.bind(this),this.socket.onerror=this.onError.bind(this),this.socket}sendOffer(e){return i(this,void 0,void 0,(function*(){const t={connectionDescription:e,userUid:this.sessionId},n={actionType:o.SignalMessageAction.OFFER,sessionId:this.sessionId,payload:t};this.sendSignalMessage(n)}))}sendIceCandidate(e){return i(this,void 0,void 0,(function*(){const t={actionType:o.SignalMessageAction.ICE_CANDIDATE,sessionId:this.sessionId,payload:e.toJSON()};this.sendSignalMessage(t)}))}sendSignalMessage(e){var t;if((null===(t=this.socket)||void 0===t?void 0:t.readyState)===WebSocket.OPEN)try{this.socket.send(JSON.stringify(e))}catch(e){console.error("SignallingClient - sendSignalMessage: error sending message",e)}else this.sendingBuffer.push(e)}closeSocket(){this.socket&&(this.socket.close(),this.socket=null),this.heartBeatIntervalRef&&(clearInterval(this.heartBeatIntervalRef),this.heartBeatIntervalRef=null)}onOpen(){return i(this,void 0,void 0,(function*(){if(!this.socket)throw new Error("SignallingClient - onOpen: socket is null");try{this.wsConnectionAttempts=0,this.flushSendingBuffer(),this.socket.onmessage=this.onMessage.bind(this),this.startSendingHeartBeats(),this.onClientConnectedCallback&&(yield this.onClientConnectedCallback())}catch(e){console.error("SignallingClient - onOpen: error in onOpen",e),this.onClientConnectionFailureCallback&&this.onClientConnectionFailureCallback()}}))}onClose(){return i(this,void 0,void 0,(function*(){this.wsConnectionAttempts+=1,this.stopSignal||(this.wsConnectionAttempts<=this.maxWsReconnectionAttempts?(this.socket=null,setTimeout((()=>{this.connect()}),100*this.wsConnectionAttempts)):(this.heartBeatIntervalRef&&(clearInterval(this.heartBeatIntervalRef),this.heartBeatIntervalRef=null),this.onClientConnectionFailureCallback&&this.onClientConnectionFailureCallback()))}))}onError(e){this.stopSignal||console.error("SignallingClient - onError: ",e)}flushSendingBuffer(){const e=[];this.sendingBuffer.length>0&&this.sendingBuffer.forEach((t=>{var n;(null===(n=this.socket)||void 0===n?void 0:n.readyState)===WebSocket.OPEN?this.socket.send(JSON.stringify(t)):e.push(t)})),this.sendingBuffer=e}onMessage(e){return i(this,void 0,void 0,(function*(){const t=JSON.parse(e.data);this.onSignalMessageReceivedCallback&&(yield this.onSignalMessageReceivedCallback(t))}))}startSendingHeartBeats(){if(!this.socket)throw new Error("SignallingClient - startSendingHeartBeats: socket is null");this.heartBeatIntervalRef&&console.warn("SignallingClient - startSendingHeartBeats: heartbeat interval already set");const e=1e3*this.heartbeatIntervalSeconds,t={actionType:o.SignalMessageAction.HEARTBEAT,sessionId:this.sessionId,payload:""},n=JSON.stringify(t);this.heartBeatIntervalRef=setInterval((()=>{var e;this.stopSignal||(null===(e=this.socket)||void 0===e?void 0:e.readyState)===WebSocket.OPEN&&this.socket.send(n)}),e)}}},577:function(e,t,n){var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(o,s){function a(e){try{l(i.next(e))}catch(e){s(e)}}function r(e){try{l(i.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,r)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.StreamingClient=void 0;const o=n(985),s=n(295),a=n(529),r=n(279);t.StreamingClient=class{constructor(e,t){this.peerConnection=null,this.connectionReceivedAnswer=!1,this.remoteIceCandidateBuffer=[],this.inputAudioStream=null,this.dataChannel=null,this.videoElement=null,this.videoStream=null,this.audioElement=null,this.audioStream=null,this.inputAudioState={isMuted:!1};const{inputAudio:n}=t;this.inputAudioState=n.inputAudioState,t.inputAudio.userProvidedMediaStream&&(this.inputAudioStream=t.inputAudio.userProvidedMediaStream),this.iceServers=t.iceServers,this.signallingClient=new r.SignallingClient(e,t.signalling,this.onSignalMessage.bind(this),this.onSignallingClientConnected.bind(this),this.onSignallingClientFailed.bind(this)),this.engineApiRestClient=new a.EngineApiRestClient(t.engine.baseUrl,e)}onInputAudioStateChange(e,t){e.isMuted!==t.isMuted&&(t.isMuted?this.muteAllAudioTracks():this.unmuteAllAudioTracks())}muteAllAudioTracks(){var e;null===(e=this.inputAudioStream)||void 0===e||e.getAudioTracks().forEach((e=>{e.enabled=!1}))}unmuteAllAudioTracks(){var e;null===(e=this.inputAudioStream)||void 0===e||e.getAudioTracks().forEach((e=>{e.enabled=!0}))}muteInputAudio(){const e=this.inputAudioState,t=Object.assign(Object.assign({},this.inputAudioState),{isMuted:!0});return this.inputAudioState=t,this.onInputAudioStateChange(e,t),this.inputAudioState}unmuteInputAudio(){const e=this.inputAudioState,t=Object.assign(Object.assign({},this.inputAudioState),{isMuted:!1});return this.inputAudioState=t,this.onInputAudioStateChange(e,t),this.inputAudioState}getInputAudioState(){return this.inputAudioState}getPeerConnection(){return this.peerConnection}getInputAudioStream(){return this.inputAudioStream}getVideoStream(){return this.videoStream}getAudioStream(){return this.audioStream}setOnVideoStreamStartCallback(e){this.onVideoStreamStartCallback=e}setOnAudioStreamStartCallback(e){this.onAudioStreamStartCallback=e}sendDataMessage(e){this.dataChannel&&"open"===this.dataChannel.readyState&&this.dataChannel.send(e)}setMediaStreamTargetsById(e,t){if(e){const t=document.getElementById(e);if(!t)throw new Error(`StreamingClient: video element with id ${e} not found`);this.videoElement=t}if(t){const e=document.getElementById(t);if(!e)throw new Error(`StreamingClient: audio element with id ${t} not found`);this.audioElement=e}}startConnection(e){try{if(this.peerConnection)return void console.error("StreamingClient - startConnection: peer connection already exists");this.setConnectionCallbacks(e),this.signallingClient.connect()}catch(e){this.handleWebrtcFailure(e)}}stopConnection(){this.shutdown()}sendTalkCommand(e){return i(this,void 0,void 0,(function*(){if(!this.peerConnection)throw new Error("StreamingClient - sendTalkCommand: peer connection is null");yield this.engineApiRestClient.sendTalkCommand(e)}))}setConnectionCallbacks({onReceiveMessageCallback:e,onConnectionEstablishedCallback:t,onConnectionClosedCallback:n,onInputAudioStreamStartCallback:i,onVideoStreamStartCallback:o,onVideoPlayStartedCallback:s,onAudioStreamStartCallback:a}){e&&(this.onReceiveMessageCallback=e),t&&(this.onConnectionEstablishedCallback=t),n&&(this.onConnectionClosedCallback=n),i&&(this.onInputAudioStreamStartCallback=i),o&&(this.onVideoStreamStartCallback=o),s&&(this.onVideoPlayStartedCallback=s),a&&(this.onAudioStreamStartCallback=a)}initPeerConnection(){return i(this,void 0,void 0,(function*(){this.peerConnection=new RTCPeerConnection({iceServers:this.iceServers}),this.peerConnection.onicecandidate=this.onIceCandidate.bind(this),this.peerConnection.oniceconnectionstatechange=this.onIceConnectionStateChange.bind(this),this.peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this),this.peerConnection.addEventListener("track",this.onTrackEventHandler.bind(this)),yield this.setupDataChannels(),this.peerConnection.addTransceiver("video",{direction:"recvonly"}),this.peerConnection.addTransceiver("audio",{direction:"sendrecv"})}))}onSignalMessage(e){return i(this,void 0,void 0,(function*(){if(this.peerConnection)switch(e.actionType){case s.SignalMessageAction.ANSWER:const t=e.payload;yield this.peerConnection.setRemoteDescription(t),this.connectionReceivedAnswer=!0,this.flushRemoteIceCandidateBuffer();break;case s.SignalMessageAction.ICE_CANDIDATE:const n=e.payload,i=new RTCIceCandidate(n);this.connectionReceivedAnswer?yield this.peerConnection.addIceCandidate(i):this.remoteIceCandidateBuffer.push(i);break;case s.SignalMessageAction.END_SESSION:const o=e.payload;this.onConnectionClosedCallback&&this.onConnectionClosedCallback(o),this.shutdown();break;case s.SignalMessageAction.WARNING:const a=e.payload;console.warn("Warning received from server: "+a);break;default:console.error("StreamingClient - onSignalMessage: unknown signal message action type",e)}else console.error("StreamingClient - onSignalMessage: peerConnection is not initialized")}))}onSignallingClientConnected(){return i(this,void 0,void 0,(function*(){if(!this.peerConnection)try{yield this.initPeerConnectionAndSendOffer()}catch(e){console.error("StreamingClient - onSignallingClientConnected: Error initializing peer connection",e),this.handleWebrtcFailure(e)}}))}onSignallingClientFailed(){console.error("StreamingClient - onSignallingClientFailed: signalling client failed"),this.onConnectionClosedCallback&&this.onConnectionClosedCallback(o.PUBLIC_MESSAGE_ON_SIGNALLING_CLIENT_CONNECTION_FAILURE)}flushRemoteIceCandidateBuffer(){this.remoteIceCandidateBuffer.forEach((e=>{var t;null===(t=this.peerConnection)||void 0===t||t.addIceCandidate(e)})),this.remoteIceCandidateBuffer=[]}onIceCandidate(e){e.candidate&&this.signallingClient.sendIceCandidate(e.candidate)}onIceConnectionStateChange(){var e,t;"connected"!==(null===(e=this.peerConnection)||void 0===e?void 0:e.iceConnectionState)&&"completed"!==(null===(t=this.peerConnection)||void 0===t?void 0:t.iceConnectionState)||this.onConnectionEstablishedCallback&&this.onConnectionEstablishedCallback()}onConnectionStateChange(){var e;"closed"===(null===(e=this.peerConnection)||void 0===e?void 0:e.connectionState)&&(console.error("StreamingClient - onConnectionStateChange: Connection closed"),this.handleWebrtcFailure("The connection to our servers was lost. Please try again."))}handleWebrtcFailure(e){console.error("StreamingClient - handleWebrtcFailure: ",e);try{this.stopConnection()}catch(e){console.error("StreamingClient - handleWebrtcFailure: error stopping connection",e)}this.onConnectionClosedCallback&&this.onConnectionClosedCallback(o.PUBLIC_MESSAGE_ON_WEBRTC_FAILURE)}onTrackEventHandler(e){if("video"===e.track.kind){if(this.videoStream=e.streams[0],this.onVideoStreamStartCallback&&this.onVideoStreamStartCallback(this.videoStream),this.videoElement){this.videoElement.srcObject=this.videoStream;const e=this.videoElement.requestVideoFrameCallback((()=>{var t;null===(t=this.videoElement)||void 0===t||t.cancelVideoFrameCallback(e),this.onVideoPlayStartedCallback&&this.onVideoPlayStartedCallback()}))}}else"audio"===e.track.kind&&(this.audioStream=e.streams[0],this.onAudioStreamStartCallback&&this.onAudioStreamStartCallback(this.audioStream),this.audioElement&&(this.audioElement.srcObject=this.audioStream))}setupDataChannels(){return i(this,void 0,void 0,(function*(){if(!this.peerConnection)return void console.error("StreamingClient - setupDataChannels: peer connection is not initialized");if(this.inputAudioStream){if(!this.inputAudioStream.getAudioTracks().length)throw new Error("StreamingClient - setupDataChannels: user provided stream does not have audio tracks")}else this.inputAudioStream=yield navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0}});this.inputAudioState.isMuted&&this.muteAllAudioTracks();const e=this.inputAudioStream.getAudioTracks()[0];this.peerConnection.addTrack(e,this.inputAudioStream),this.onInputAudioStreamStartCallback&&this.onInputAudioStreamStartCallback(this.inputAudioStream);const t=this.peerConnection.createDataChannel("chat",{ordered:!0});t.onopen=()=>{this.dataChannel=null!=t?t:null},t.onclose=()=>{},t.onmessage=e=>{this.onReceiveMessageCallback&&this.onReceiveMessageCallback(JSON.parse(e.data))}}))}initPeerConnectionAndSendOffer(){return i(this,void 0,void 0,(function*(){if(yield this.initPeerConnection(),!this.peerConnection)return void console.error("StreamingClient - initPeerConnectionAndSendOffer: peer connection is not initialized");const e=yield this.peerConnection.createOffer();if(yield this.peerConnection.setLocalDescription(e),!this.peerConnection.localDescription)throw new Error("StreamingClient - initPeerConnectionAndSendOffer: local description is null");yield this.signallingClient.sendOffer(this.peerConnection.localDescription)}))}shutdown(){try{this.inputAudioStream&&this.inputAudioStream.getTracks().forEach((e=>{e.stop()})),this.inputAudioStream=null}catch(e){console.error("StreamingClient - shutdown: error stopping input audio stream",e)}try{this.signallingClient.stop()}catch(e){console.error("StreamingClient - shutdown: error stopping signallilng",e)}try{this.peerConnection&&"closed"!==this.peerConnection.connectionState&&(this.peerConnection.onconnectionstatechange=null,this.peerConnection.close(),this.peerConnection=null)}catch(e){console.error("StreamingClient - shutdown: error closing peer connection",e)}}}},170:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SignalMessageAction=void 0;var i=n(295);Object.defineProperty(t,"SignalMessageAction",{enumerable:!0,get:function(){return i.SignalMessageAction}})},656:(e,t)=>{var n;Object.defineProperty(t,"__esModule",{value:!0}),t.SignalMessageAction=void 0,function(e){e.OFFER="offer",e.ANSWER="answer",e.ICE_CANDIDATE="icecandidate",e.END_SESSION="endsession",e.HEARTBEAT="heartbeat",e.WARNING="warning"}(n||(t.SignalMessageAction=n={}))},295:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SignalMessageAction=void 0;var i=n(656);Object.defineProperty(t,"SignalMessageAction",{enumerable:!0,get:function(){return i.SignalMessageAction}})}},t={};return function n(i){var o=t[i];if(void 0!==o)return o.exports;var s=t[i]={exports:{}};return e[i].call(s.exports,s,s.exports,n),s.exports}(440)})()));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.anam=t():e.anam=t()}(self,(()=>(()=>{"use strict";var e={816:function(e,t,n){var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(o,s){function a(e){try{l(i.next(e))}catch(e){s(e)}}function r(e){try{l(i.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,r)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0});const o=n(18),s=n(577);t.default=class{constructor(e,t,n){this.inputAudioState={isMuted:!1},this.sessionId=null,this.streamingClient=null,this._isStreaming=!1;const i=this.validateClientConfig(e,t,n);if(i)throw new Error(i);this.sessionToken=e,this.apiKey=null==n?void 0:n.apiKey,this.personaConfig=t,this.clientOptions=n,this.apiClient=new o.CoreApiRestClient(e,null==n?void 0:n.apiKey,null==n?void 0:n.api)}validateClientConfig(e,t,n){if(!e&&!(null==n?void 0:n.apiKey))return"Either sessionToken or apiKey must be provided";if((null==n?void 0:n.apiKey)&&e)return"Only one of sessionToken or apiKey should be used";if(!t)return"Persona configuration must be provided";if(""===t.personaId||!t.personaId)return"Persona ID must be provided in persona configuration";if((null==n?void 0:n.voiceDetection)&&void 0!==n.voiceDetection.endOfSpeechSensitivity){if("number"!=typeof n.voiceDetection.endOfSpeechSensitivity)return"End of speech sensitivity must be a number";if(n.voiceDetection.endOfSpeechSensitivity<0||n.voiceDetection.endOfSpeechSensitivity>1)return"End of speech sensitivity must be between 0 and 1"}}buildStartSessionOptionsForClient(){var e;const t={};if((null===(e=this.clientOptions)||void 0===e?void 0:e.voiceDetection)&&(t.voiceDetection=this.clientOptions.voiceDetection),0!==Object.keys(t).length)return t}startSession(e){return i(this,void 0,void 0,(function*(){try{const t=this.personaConfig;if(!t)throw new Error("A default persona configuration has not been set and no persona configuration was provided");const n=this.buildStartSessionOptionsForClient(),i=yield this.apiClient.startSession(t,n),{sessionId:o,clientConfig:a,engineHost:r,engineProtocol:l,signallingEndpoint:c}=i,{heartbeatIntervalSeconds:d,maxWsReconnectionAttempts:h,iceServers:u}=a;return this.streamingClient=new s.StreamingClient(o,{engine:{baseUrl:`${l}://${r}`},signalling:{heartbeatIntervalSeconds:d,maxWsReconnectionAttempts:h,url:{baseUrl:r,protocol:l,signallingPath:c}},iceServers:u,inputAudio:{inputAudioState:this.inputAudioState,userProvidedMediaStream:e}}),this.sessionId=o,o}catch(e){throw new Error("Failed to start session")}}))}startSessionIfNeeded(e){return i(this,void 0,void 0,(function*(){if(!this.sessionId||!this.streamingClient){try{yield this.startSession(e)}catch(e){throw new Error("StreamToVideoAndAudioElements: Failed to start session")}if(!this.sessionId||!this.streamingClient)throw new Error("StreamToVideoAndAudioElements: session Id or streaming client is not available after starting session")}}))}stream(){return i(this,arguments,void 0,(function*(e={},t){if(yield this.startSessionIfNeeded(t),this._isStreaming)throw new Error("Already streaming");return this._isStreaming=!0,new Promise((t=>{var n,i,o;const s=[];let a=!1,r=!1;null===(n=this.streamingClient)||void 0===n||n.setOnVideoStreamStartCallback((e=>{s.push(e),a=!0,r&&t(s)})),null===(i=this.streamingClient)||void 0===i||i.setOnAudioStreamStartCallback((e=>{s.push(e),r=!0,a&&t(s)})),null===(o=this.streamingClient)||void 0===o||o.startConnection(e)}))}))}streamToVideoAndAudioElements(e,t){return i(this,arguments,void 0,(function*(e,t,n={},i){if(yield this.startSessionIfNeeded(i),this._isStreaming)throw new Error("Already streaming");if(this._isStreaming=!0,!this.streamingClient)throw new Error("Failed to stream: streaming client is not available");this.streamingClient.setMediaStreamTargetsById(e,t),this.streamingClient.startConnection(n)}))}talk(e){return i(this,void 0,void 0,(function*(){if(!this.streamingClient)throw new Error("Failed to send talk command: session is not started. Have you called startSession?");if(!this._isStreaming)throw new Error("Failed to send talk command: not currently streaming. Have you called stream?");yield this.streamingClient.sendTalkCommand(e)}))}sendDataMessage(e){if(!this.streamingClient)throw new Error("Failed to send message: session is not started.");this.streamingClient.sendDataMessage(e)}stopStreaming(){return i(this,void 0,void 0,(function*(){this.streamingClient&&(this.streamingClient.stopConnection(),this.streamingClient=null,this.sessionId=null,this._isStreaming=!1)}))}isStreaming(){return this._isStreaming}setPersonaConfig(e){this.personaConfig=e}getPersonaConfig(){return this.personaConfig}getInputAudioState(){return this.streamingClient&&(this.inputAudioState=this.streamingClient.getInputAudioState()),this.inputAudioState}muteInputAudio(){return this.streamingClient?this.inputAudioState=this.streamingClient.muteInputAudio():this.inputAudioState=Object.assign(Object.assign({},this.inputAudioState),{isMuted:!0}),this.inputAudioState}unmuteInputAudio(){return this.streamingClient?this.inputAudioState=this.streamingClient.unmuteInputAudio():this.inputAudioState=Object.assign(Object.assign({},this.inputAudioState),{isMuted:!1}),this.inputAudioState}}},440:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.unsafe_createClientWithApiKey=t.createClient=void 0;const o=i(n(816));t.createClient=(e,t,n)=>new o.default(e,t,n),t.unsafe_createClientWithApiKey=(e,t,n)=>new o.default(void 0,t,Object.assign(Object.assign({},n),{apiKey:e}))},985:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PUBLIC_MESSAGE_ON_WEBRTC_FAILURE=t.PUBLIC_MESSAGE_ON_SIGNALLING_CLIENT_CONNECTION_FAILURE=t.DEFAULT_API_VERSION=t.DEFAULT_API_BASE_URL=t.DEFAULT_HEADERS=void 0,t.DEFAULT_HEADERS={"Content-Type":"application/json"},t.DEFAULT_API_BASE_URL="https://api.anam.ai",t.DEFAULT_API_VERSION="/v1",t.PUBLIC_MESSAGE_ON_SIGNALLING_CLIENT_CONNECTION_FAILURE="There was a problem connecting to our servers. Please try again.",t.PUBLIC_MESSAGE_ON_WEBRTC_FAILURE="There was an issue connecting to our servers. Please try again."},18:function(e,t,n){var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(o,s){function a(e){try{l(i.next(e))}catch(e){s(e)}}function r(e){try{l(i.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,r)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CoreApiRestClient=void 0;const o=n(985);t.CoreApiRestClient=class{constructor(e,t,n){if(!e&&!t)throw new Error("Either sessionToken or apiKey must be provided");this.sessionToken=e||null,this.apiKey=t||null,this.baseUrl=(null==n?void 0:n.baseUrl)||o.DEFAULT_API_BASE_URL,this.apiVersion=(null==n?void 0:n.apiVersion)||o.DEFAULT_API_VERSION}startSession(e,t){return i(this,void 0,void 0,(function*(){this.sessionToken||(this.sessionToken=yield this.unsafe_getSessionToken());try{const n=yield fetch(`${this.getApiUrl()}/engine/session`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.sessionToken}`},body:JSON.stringify({personaConfig:e,sessionOptions:t})});return yield n.json()}catch(e){throw new Error("Failed to start session")}}))}unsafe_getSessionToken(){return i(this,void 0,void 0,(function*(){if(console.warn("Using unsecure method. This method should not be used in production."),!this.apiKey)throw new Error("No apiKey provided");try{const e=yield fetch(`${this.getApiUrl()}/auth/session-token`,{method:"GET",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`}});return(yield e.json()).sessionToken}catch(e){throw new Error("Failed to get session token")}}))}getApiUrl(){return`${this.baseUrl}${this.apiVersion}`}}},529:function(e,t){var n=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(o,s){function a(e){try{l(i.next(e))}catch(e){s(e)}}function r(e){try{l(i.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,r)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EngineApiRestClient=void 0,t.EngineApiRestClient=class{constructor(e,t){this.baseUrl=e,this.sessionId=t}sendTalkCommand(e){return n(this,void 0,void 0,(function*(){try{const t=yield fetch(`${this.baseUrl}/talk?session_id=${this.sessionId}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:e})});if(!t.ok)throw new Error(`Failed to send talk command: ${t.status} ${t.statusText}`)}catch(e){throw console.error(e),new Error("EngineApiRestClient - sendTalkCommand: Failed to send talk command")}}))}}},279:function(e,t,n){var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(o,s){function a(e){try{l(i.next(e))}catch(e){s(e)}}function r(e){try{l(i.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,r)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SignallingClient=void 0;const o=n(170);t.SignallingClient=class{constructor(e,t,n,i,o){var s;if(this.stopSignal=!1,this.sendingBuffer=[],this.wsConnectionAttempts=0,this.socket=null,this.heartBeatIntervalRef=null,!e)throw new Error("Signalling Client: sessionId is required");this.sessionId=e,n&&(this.onSignalMessageReceivedCallback=n),i&&(this.onClientConnectedCallback=i),o&&(this.onClientConnectionFailureCallback=o);const{heartbeatIntervalSeconds:a,maxWsReconnectionAttempts:r,url:l}=t;if(this.heartbeatIntervalSeconds=a||5,this.maxWsReconnectionAttempts=r||5,!l.baseUrl)throw new Error("Signalling Client: baseUrl is required");const c=`${l.protocol||"https"}://${l.baseUrl}`;this.url=new URL(c),this.url.protocol="http"===l.protocol?"ws:":"wss:",l.port&&(this.url.port=l.port),this.url.pathname=null!==(s=l.signallingPath)&&void 0!==s?s:"/ws",this.url.searchParams.append("session_id",e)}stop(){this.stopSignal=!0,this.closeSocket()}connect(){return this.socket=new WebSocket(this.url.href),this.socket.onopen=this.onOpen.bind(this),this.socket.onclose=this.onClose.bind(this),this.socket.onerror=this.onError.bind(this),this.socket}sendOffer(e){return i(this,void 0,void 0,(function*(){const t={connectionDescription:e,userUid:this.sessionId},n={actionType:o.SignalMessageAction.OFFER,sessionId:this.sessionId,payload:t};this.sendSignalMessage(n)}))}sendIceCandidate(e){return i(this,void 0,void 0,(function*(){const t={actionType:o.SignalMessageAction.ICE_CANDIDATE,sessionId:this.sessionId,payload:e.toJSON()};this.sendSignalMessage(t)}))}sendSignalMessage(e){var t;if((null===(t=this.socket)||void 0===t?void 0:t.readyState)===WebSocket.OPEN)try{this.socket.send(JSON.stringify(e))}catch(e){console.error("SignallingClient - sendSignalMessage: error sending message",e)}else this.sendingBuffer.push(e)}closeSocket(){this.socket&&(this.socket.close(),this.socket=null),this.heartBeatIntervalRef&&(clearInterval(this.heartBeatIntervalRef),this.heartBeatIntervalRef=null)}onOpen(){return i(this,void 0,void 0,(function*(){if(!this.socket)throw new Error("SignallingClient - onOpen: socket is null");try{this.wsConnectionAttempts=0,this.flushSendingBuffer(),this.socket.onmessage=this.onMessage.bind(this),this.startSendingHeartBeats(),this.onClientConnectedCallback&&(yield this.onClientConnectedCallback())}catch(e){console.error("SignallingClient - onOpen: error in onOpen",e),this.onClientConnectionFailureCallback&&this.onClientConnectionFailureCallback()}}))}onClose(){return i(this,void 0,void 0,(function*(){this.wsConnectionAttempts+=1,this.stopSignal||(this.wsConnectionAttempts<=this.maxWsReconnectionAttempts?(this.socket=null,setTimeout((()=>{this.connect()}),100*this.wsConnectionAttempts)):(this.heartBeatIntervalRef&&(clearInterval(this.heartBeatIntervalRef),this.heartBeatIntervalRef=null),this.onClientConnectionFailureCallback&&this.onClientConnectionFailureCallback()))}))}onError(e){this.stopSignal||console.error("SignallingClient - onError: ",e)}flushSendingBuffer(){const e=[];this.sendingBuffer.length>0&&this.sendingBuffer.forEach((t=>{var n;(null===(n=this.socket)||void 0===n?void 0:n.readyState)===WebSocket.OPEN?this.socket.send(JSON.stringify(t)):e.push(t)})),this.sendingBuffer=e}onMessage(e){return i(this,void 0,void 0,(function*(){const t=JSON.parse(e.data);this.onSignalMessageReceivedCallback&&(yield this.onSignalMessageReceivedCallback(t))}))}startSendingHeartBeats(){if(!this.socket)throw new Error("SignallingClient - startSendingHeartBeats: socket is null");this.heartBeatIntervalRef&&console.warn("SignallingClient - startSendingHeartBeats: heartbeat interval already set");const e=1e3*this.heartbeatIntervalSeconds,t={actionType:o.SignalMessageAction.HEARTBEAT,sessionId:this.sessionId,payload:""},n=JSON.stringify(t);this.heartBeatIntervalRef=setInterval((()=>{var e;this.stopSignal||(null===(e=this.socket)||void 0===e?void 0:e.readyState)===WebSocket.OPEN&&this.socket.send(n)}),e)}}},577:function(e,t,n){var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(o,s){function a(e){try{l(i.next(e))}catch(e){s(e)}}function r(e){try{l(i.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,r)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.StreamingClient=void 0;const o=n(985),s=n(295),a=n(529),r=n(279);t.StreamingClient=class{constructor(e,t){this.peerConnection=null,this.connectionReceivedAnswer=!1,this.remoteIceCandidateBuffer=[],this.inputAudioStream=null,this.dataChannel=null,this.videoElement=null,this.videoStream=null,this.audioElement=null,this.audioStream=null,this.inputAudioState={isMuted:!1};const{inputAudio:n}=t;this.inputAudioState=n.inputAudioState,t.inputAudio.userProvidedMediaStream&&(this.inputAudioStream=t.inputAudio.userProvidedMediaStream),this.iceServers=t.iceServers,this.signallingClient=new r.SignallingClient(e,t.signalling,this.onSignalMessage.bind(this),this.onSignallingClientConnected.bind(this),this.onSignallingClientFailed.bind(this)),this.engineApiRestClient=new a.EngineApiRestClient(t.engine.baseUrl,e)}onInputAudioStateChange(e,t){e.isMuted!==t.isMuted&&(t.isMuted?this.muteAllAudioTracks():this.unmuteAllAudioTracks())}muteAllAudioTracks(){var e;null===(e=this.inputAudioStream)||void 0===e||e.getAudioTracks().forEach((e=>{e.enabled=!1}))}unmuteAllAudioTracks(){var e;null===(e=this.inputAudioStream)||void 0===e||e.getAudioTracks().forEach((e=>{e.enabled=!0}))}muteInputAudio(){const e=this.inputAudioState,t=Object.assign(Object.assign({},this.inputAudioState),{isMuted:!0});return this.inputAudioState=t,this.onInputAudioStateChange(e,t),this.inputAudioState}unmuteInputAudio(){const e=this.inputAudioState,t=Object.assign(Object.assign({},this.inputAudioState),{isMuted:!1});return this.inputAudioState=t,this.onInputAudioStateChange(e,t),this.inputAudioState}getInputAudioState(){return this.inputAudioState}getPeerConnection(){return this.peerConnection}getInputAudioStream(){return this.inputAudioStream}getVideoStream(){return this.videoStream}getAudioStream(){return this.audioStream}setOnVideoStreamStartCallback(e){this.onVideoStreamStartCallback=e}setOnAudioStreamStartCallback(e){this.onAudioStreamStartCallback=e}sendDataMessage(e){this.dataChannel&&"open"===this.dataChannel.readyState&&this.dataChannel.send(e)}setMediaStreamTargetsById(e,t){if(e){const t=document.getElementById(e);if(!t)throw new Error(`StreamingClient: video element with id ${e} not found`);this.videoElement=t}if(t){const e=document.getElementById(t);if(!e)throw new Error(`StreamingClient: audio element with id ${t} not found`);this.audioElement=e}}startConnection(e){try{if(this.peerConnection)return void console.error("StreamingClient - startConnection: peer connection already exists");this.setConnectionCallbacks(e),this.signallingClient.connect()}catch(e){this.handleWebrtcFailure(e)}}stopConnection(){this.shutdown()}sendTalkCommand(e){return i(this,void 0,void 0,(function*(){if(!this.peerConnection)throw new Error("StreamingClient - sendTalkCommand: peer connection is null");yield this.engineApiRestClient.sendTalkCommand(e)}))}setConnectionCallbacks({onReceiveMessageCallback:e,onConnectionEstablishedCallback:t,onConnectionClosedCallback:n,onInputAudioStreamStartCallback:i,onVideoStreamStartCallback:o,onVideoPlayStartedCallback:s,onAudioStreamStartCallback:a}){e&&(this.onReceiveMessageCallback=e),t&&(this.onConnectionEstablishedCallback=t),n&&(this.onConnectionClosedCallback=n),i&&(this.onInputAudioStreamStartCallback=i),o&&(this.onVideoStreamStartCallback=o),s&&(this.onVideoPlayStartedCallback=s),a&&(this.onAudioStreamStartCallback=a)}initPeerConnection(){return i(this,void 0,void 0,(function*(){this.peerConnection=new RTCPeerConnection({iceServers:this.iceServers}),this.peerConnection.onicecandidate=this.onIceCandidate.bind(this),this.peerConnection.oniceconnectionstatechange=this.onIceConnectionStateChange.bind(this),this.peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this),this.peerConnection.addEventListener("track",this.onTrackEventHandler.bind(this)),yield this.setupDataChannels(),this.peerConnection.addTransceiver("video",{direction:"recvonly"}),this.peerConnection.addTransceiver("audio",{direction:"sendrecv"})}))}onSignalMessage(e){return i(this,void 0,void 0,(function*(){if(this.peerConnection)switch(e.actionType){case s.SignalMessageAction.ANSWER:const t=e.payload;yield this.peerConnection.setRemoteDescription(t),this.connectionReceivedAnswer=!0,this.flushRemoteIceCandidateBuffer();break;case s.SignalMessageAction.ICE_CANDIDATE:const n=e.payload,i=new RTCIceCandidate(n);this.connectionReceivedAnswer?yield this.peerConnection.addIceCandidate(i):this.remoteIceCandidateBuffer.push(i);break;case s.SignalMessageAction.END_SESSION:const o=e.payload;this.onConnectionClosedCallback&&this.onConnectionClosedCallback(o),this.shutdown();break;case s.SignalMessageAction.WARNING:const a=e.payload;console.warn("Warning received from server: "+a);break;default:console.error("StreamingClient - onSignalMessage: unknown signal message action type",e)}else console.error("StreamingClient - onSignalMessage: peerConnection is not initialized")}))}onSignallingClientConnected(){return i(this,void 0,void 0,(function*(){if(!this.peerConnection)try{yield this.initPeerConnectionAndSendOffer()}catch(e){console.error("StreamingClient - onSignallingClientConnected: Error initializing peer connection",e),this.handleWebrtcFailure(e)}}))}onSignallingClientFailed(){console.error("StreamingClient - onSignallingClientFailed: signalling client failed"),this.onConnectionClosedCallback&&this.onConnectionClosedCallback(o.PUBLIC_MESSAGE_ON_SIGNALLING_CLIENT_CONNECTION_FAILURE)}flushRemoteIceCandidateBuffer(){this.remoteIceCandidateBuffer.forEach((e=>{var t;null===(t=this.peerConnection)||void 0===t||t.addIceCandidate(e)})),this.remoteIceCandidateBuffer=[]}onIceCandidate(e){e.candidate&&this.signallingClient.sendIceCandidate(e.candidate)}onIceConnectionStateChange(){var e,t;"connected"!==(null===(e=this.peerConnection)||void 0===e?void 0:e.iceConnectionState)&&"completed"!==(null===(t=this.peerConnection)||void 0===t?void 0:t.iceConnectionState)||this.onConnectionEstablishedCallback&&this.onConnectionEstablishedCallback()}onConnectionStateChange(){var e;"closed"===(null===(e=this.peerConnection)||void 0===e?void 0:e.connectionState)&&(console.error("StreamingClient - onConnectionStateChange: Connection closed"),this.handleWebrtcFailure("The connection to our servers was lost. Please try again."))}handleWebrtcFailure(e){console.error("StreamingClient - handleWebrtcFailure: ",e);try{this.stopConnection()}catch(e){console.error("StreamingClient - handleWebrtcFailure: error stopping connection",e)}this.onConnectionClosedCallback&&this.onConnectionClosedCallback(o.PUBLIC_MESSAGE_ON_WEBRTC_FAILURE)}onTrackEventHandler(e){if("video"===e.track.kind){if(this.videoStream=e.streams[0],this.onVideoStreamStartCallback&&this.onVideoStreamStartCallback(this.videoStream),this.videoElement){this.videoElement.srcObject=this.videoStream;const e=this.videoElement.requestVideoFrameCallback((()=>{var t;null===(t=this.videoElement)||void 0===t||t.cancelVideoFrameCallback(e),this.onVideoPlayStartedCallback&&this.onVideoPlayStartedCallback()}))}}else"audio"===e.track.kind&&(this.audioStream=e.streams[0],this.onAudioStreamStartCallback&&this.onAudioStreamStartCallback(this.audioStream),this.audioElement&&(this.audioElement.srcObject=this.audioStream))}setupDataChannels(){return i(this,void 0,void 0,(function*(){if(!this.peerConnection)return void console.error("StreamingClient - setupDataChannels: peer connection is not initialized");if(this.inputAudioStream){if(!this.inputAudioStream.getAudioTracks().length)throw new Error("StreamingClient - setupDataChannels: user provided stream does not have audio tracks")}else this.inputAudioStream=yield navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0}});this.inputAudioState.isMuted&&this.muteAllAudioTracks();const e=this.inputAudioStream.getAudioTracks()[0];this.peerConnection.addTrack(e,this.inputAudioStream),this.onInputAudioStreamStartCallback&&this.onInputAudioStreamStartCallback(this.inputAudioStream);const t=this.peerConnection.createDataChannel("chat",{ordered:!0});t.onopen=()=>{this.dataChannel=null!=t?t:null},t.onclose=()=>{},t.onmessage=e=>{this.onReceiveMessageCallback&&this.onReceiveMessageCallback(JSON.parse(e.data))}}))}initPeerConnectionAndSendOffer(){return i(this,void 0,void 0,(function*(){if(yield this.initPeerConnection(),!this.peerConnection)return void console.error("StreamingClient - initPeerConnectionAndSendOffer: peer connection is not initialized");const e=yield this.peerConnection.createOffer();if(yield this.peerConnection.setLocalDescription(e),!this.peerConnection.localDescription)throw new Error("StreamingClient - initPeerConnectionAndSendOffer: local description is null");yield this.signallingClient.sendOffer(this.peerConnection.localDescription)}))}shutdown(){try{this.inputAudioStream&&this.inputAudioStream.getTracks().forEach((e=>{e.stop()})),this.inputAudioStream=null}catch(e){console.error("StreamingClient - shutdown: error stopping input audio stream",e)}try{this.signallingClient.stop()}catch(e){console.error("StreamingClient - shutdown: error stopping signallilng",e)}try{this.peerConnection&&"closed"!==this.peerConnection.connectionState&&(this.peerConnection.onconnectionstatechange=null,this.peerConnection.close(),this.peerConnection=null)}catch(e){console.error("StreamingClient - shutdown: error closing peer connection",e)}}}},170:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SignalMessageAction=void 0;var i=n(295);Object.defineProperty(t,"SignalMessageAction",{enumerable:!0,get:function(){return i.SignalMessageAction}})},656:(e,t)=>{var n;Object.defineProperty(t,"__esModule",{value:!0}),t.SignalMessageAction=void 0,function(e){e.OFFER="offer",e.ANSWER="answer",e.ICE_CANDIDATE="icecandidate",e.END_SESSION="endsession",e.HEARTBEAT="heartbeat",e.WARNING="warning"}(n||(t.SignalMessageAction=n={}))},295:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SignalMessageAction=void 0;var i=n(656);Object.defineProperty(t,"SignalMessageAction",{enumerable:!0,get:function(){return i.SignalMessageAction}})}},t={};return function n(i){var o=t[i];if(void 0!==o)return o.exports;var s=t[i]={exports:{}};return e[i].call(s.exports,s,s.exports,n),s.exports}(440)})()));
|