@anam-ai/js-sdk 4.8.0-alpha.sam.1 → 4.8.0-alpha.sam.2
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/types/events/internal/InternalEvent.d.ts +1 -1
- package/dist/main/types/events/internal/InternalEvent.d.ts.map +1 -1
- package/dist/main/types/events/internal/InternalEvent.js +1 -1
- package/dist/main/types/events/internal/InternalEvent.js.map +1 -1
- package/dist/main/types/events/internal/InternalEventCallbacks.d.ts +2 -1
- package/dist/main/types/events/internal/InternalEventCallbacks.d.ts.map +1 -1
- package/dist/main/types/events/public/EventCallbacks.d.ts +3 -1
- package/dist/main/types/events/public/EventCallbacks.d.ts.map +1 -1
- package/dist/module/AnamClient.d.ts +65 -0
- package/dist/module/AnamClient.d.ts.map +1 -0
- package/dist/module/AnamClient.js +462 -0
- package/dist/module/AnamClient.js.map +1 -0
- package/dist/module/index.d.ts +26 -0
- package/dist/module/index.d.ts.map +1 -0
- package/dist/module/index.js +27 -0
- package/dist/module/index.js.map +1 -0
- package/dist/module/lib/ClientError.d.ts +19 -0
- package/dist/module/lib/ClientError.d.ts.map +1 -0
- package/dist/module/lib/ClientError.js +30 -0
- package/dist/module/lib/ClientError.js.map +1 -0
- package/dist/module/lib/ClientMetrics.d.ts +59 -0
- package/dist/module/lib/ClientMetrics.d.ts.map +1 -0
- package/dist/module/lib/ClientMetrics.js +305 -0
- package/dist/module/lib/ClientMetrics.js.map +1 -0
- package/dist/module/lib/constants.d.ts +10 -0
- package/dist/module/lib/constants.d.ts.map +1 -0
- package/dist/module/lib/constants.js +11 -0
- package/dist/module/lib/constants.js.map +1 -0
- package/dist/module/lib/correlationId.d.ts +2 -0
- package/dist/module/lib/correlationId.d.ts.map +1 -0
- package/dist/module/lib/correlationId.js +9 -0
- package/dist/module/lib/correlationId.js.map +1 -0
- package/dist/module/lib/validateApiGatewayConfig.d.ts +8 -0
- package/dist/module/lib/validateApiGatewayConfig.d.ts.map +1 -0
- package/dist/module/lib/validateApiGatewayConfig.js +31 -0
- package/dist/module/lib/validateApiGatewayConfig.js.map +1 -0
- package/dist/module/lib/version.d.ts +3 -0
- package/dist/module/lib/version.d.ts.map +1 -0
- package/dist/module/lib/version.js +3 -0
- package/dist/module/lib/version.js.map +1 -0
- package/dist/module/modules/CoreApiRestClient.d.ts +18 -0
- package/dist/module/modules/CoreApiRestClient.d.ts.map +1 -0
- package/dist/module/modules/CoreApiRestClient.js +149 -0
- package/dist/module/modules/CoreApiRestClient.js.map +1 -0
- package/dist/module/modules/EngineApiRestClient.d.ts +9 -0
- package/dist/module/modules/EngineApiRestClient.d.ts.map +1 -0
- package/dist/module/modules/EngineApiRestClient.js +56 -0
- package/dist/module/modules/EngineApiRestClient.js.map +1 -0
- package/dist/module/modules/InternalEventEmitter.d.ts +9 -0
- package/dist/module/modules/InternalEventEmitter.d.ts.map +1 -0
- package/dist/module/modules/InternalEventEmitter.js +24 -0
- package/dist/module/modules/InternalEventEmitter.js.map +1 -0
- package/dist/module/modules/MessageHistoryClient.d.ts +13 -0
- package/dist/module/modules/MessageHistoryClient.d.ts.map +1 -0
- package/dist/module/modules/MessageHistoryClient.js +66 -0
- package/dist/module/modules/MessageHistoryClient.js.map +1 -0
- package/dist/module/modules/PublicEventEmitter.d.ts +9 -0
- package/dist/module/modules/PublicEventEmitter.d.ts.map +1 -0
- package/dist/module/modules/PublicEventEmitter.js +33 -0
- package/dist/module/modules/PublicEventEmitter.js.map +1 -0
- package/dist/module/modules/SignallingClient.d.ts +34 -0
- package/dist/module/modules/SignallingClient.d.ts.map +1 -0
- package/dist/module/modules/SignallingClient.js +251 -0
- package/dist/module/modules/SignallingClient.js.map +1 -0
- package/dist/module/modules/StreamingClient.d.ts +81 -0
- package/dist/module/modules/StreamingClient.d.ts.map +1 -0
- package/dist/module/modules/StreamingClient.js +706 -0
- package/dist/module/modules/StreamingClient.js.map +1 -0
- package/dist/module/modules/ThoughtHistoryClient.d.ts +10 -0
- package/dist/module/modules/ThoughtHistoryClient.d.ts.map +1 -0
- package/dist/module/modules/ThoughtHistoryClient.js +30 -0
- package/dist/module/modules/ThoughtHistoryClient.js.map +1 -0
- package/dist/module/modules/ToolCallManager.d.ts +8 -0
- package/dist/module/modules/ToolCallManager.d.ts.map +1 -0
- package/dist/module/modules/ToolCallManager.js +17 -0
- package/dist/module/modules/ToolCallManager.js.map +1 -0
- package/dist/module/modules/index.d.ts +10 -0
- package/dist/module/modules/index.d.ts.map +1 -0
- package/dist/module/modules/index.js +10 -0
- package/dist/module/modules/index.js.map +1 -0
- package/dist/module/types/AgentAudioInputStream.d.ts +28 -0
- package/dist/module/types/AgentAudioInputStream.d.ts.map +1 -0
- package/dist/module/types/AgentAudioInputStream.js +50 -0
- package/dist/module/types/AgentAudioInputStream.js.map +1 -0
- package/dist/module/types/AnamClientOptions.d.ts +4 -0
- package/dist/module/types/AnamClientOptions.d.ts.map +1 -0
- package/dist/module/types/AnamClientOptions.js +2 -0
- package/dist/module/types/AnamClientOptions.js.map +1 -0
- package/dist/module/types/AnamInternalClientOptions.d.ts +4 -0
- package/dist/module/types/AnamInternalClientOptions.d.ts.map +1 -0
- package/dist/module/types/AnamInternalClientOptions.js +2 -0
- package/dist/module/types/AnamInternalClientOptions.js.map +1 -0
- package/dist/module/types/AnamPublicClientOptions.d.ts +20 -0
- package/dist/module/types/AnamPublicClientOptions.d.ts.map +1 -0
- package/dist/module/types/AnamPublicClientOptions.js +2 -0
- package/dist/module/types/AnamPublicClientOptions.js.map +1 -0
- package/dist/module/types/ApiGatewayConfig.d.ts +45 -0
- package/dist/module/types/ApiGatewayConfig.d.ts.map +1 -0
- package/dist/module/types/ApiGatewayConfig.js +2 -0
- package/dist/module/types/ApiGatewayConfig.js.map +1 -0
- package/dist/module/types/InputAudioState.d.ts +11 -0
- package/dist/module/types/InputAudioState.d.ts.map +1 -0
- package/dist/module/types/InputAudioState.js +8 -0
- package/dist/module/types/InputAudioState.js.map +1 -0
- package/dist/module/types/PersonaConfig.d.ts +13 -0
- package/dist/module/types/PersonaConfig.d.ts.map +1 -0
- package/dist/module/types/PersonaConfig.js +4 -0
- package/dist/module/types/PersonaConfig.js.map +1 -0
- package/dist/module/types/TalkMessageStream.d.ts +18 -0
- package/dist/module/types/TalkMessageStream.d.ts.map +1 -0
- package/dist/module/types/TalkMessageStream.js +89 -0
- package/dist/module/types/TalkMessageStream.js.map +1 -0
- package/dist/module/types/TalkMessageStreamState.d.ts +7 -0
- package/dist/module/types/TalkMessageStreamState.d.ts.map +1 -0
- package/dist/module/types/TalkMessageStreamState.js +8 -0
- package/dist/module/types/TalkMessageStreamState.js.map +1 -0
- 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/ApiOptions.d.ts +7 -0
- package/dist/module/types/coreApi/ApiOptions.d.ts.map +1 -0
- package/dist/module/types/coreApi/ApiOptions.js +2 -0
- package/dist/module/types/coreApi/ApiOptions.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/module/types/coreApi/StartSessionResponse.d.ts +13 -0
- package/dist/module/types/coreApi/StartSessionResponse.d.ts.map +1 -0
- package/dist/module/types/coreApi/StartSessionResponse.js +2 -0
- package/dist/module/types/coreApi/StartSessionResponse.js.map +1 -0
- package/dist/module/types/coreApi/index.d.ts +5 -0
- package/dist/module/types/coreApi/index.d.ts.map +1 -0
- package/dist/module/types/coreApi/index.js +2 -0
- package/dist/module/types/coreApi/index.js.map +1 -0
- package/dist/module/types/engineApi/EngineApiRestClientOptions.d.ts +4 -0
- package/dist/module/types/engineApi/EngineApiRestClientOptions.d.ts.map +1 -0
- package/dist/module/types/engineApi/EngineApiRestClientOptions.js +2 -0
- package/dist/module/types/engineApi/EngineApiRestClientOptions.js.map +1 -0
- package/dist/module/types/engineApi/index.d.ts +1 -0
- package/dist/module/types/engineApi/index.d.ts.map +1 -0
- package/dist/module/types/engineApi/index.js +2 -0
- package/dist/module/types/engineApi/index.js.map +1 -0
- package/dist/module/types/events/EventCallback.d.ts +2 -0
- package/dist/module/types/events/EventCallback.d.ts.map +1 -0
- package/dist/module/types/events/EventCallback.js +2 -0
- package/dist/module/types/events/EventCallback.js.map +1 -0
- package/dist/module/types/events/index.d.ts +7 -0
- package/dist/module/types/events/index.d.ts.map +1 -0
- package/dist/module/types/events/index.js +4 -0
- package/dist/module/types/events/index.js.map +1 -0
- package/dist/module/types/events/internal/InternalEvent.d.ts +8 -0
- package/dist/module/types/events/internal/InternalEvent.d.ts.map +1 -0
- package/dist/module/types/events/internal/InternalEvent.js +9 -0
- package/dist/module/types/events/internal/InternalEvent.js.map +1 -0
- package/dist/module/types/events/internal/InternalEventCallbacks.d.ts +9 -0
- package/dist/module/types/events/internal/InternalEventCallbacks.d.ts.map +1 -0
- package/dist/module/types/events/internal/InternalEventCallbacks.js +2 -0
- package/dist/module/types/events/internal/InternalEventCallbacks.js.map +1 -0
- package/dist/module/types/events/public/AnamEvent.d.ts +21 -0
- package/dist/module/types/events/public/AnamEvent.d.ts.map +1 -0
- package/dist/module/types/events/public/AnamEvent.js +22 -0
- package/dist/module/types/events/public/AnamEvent.js.map +1 -0
- package/dist/module/types/events/public/ConnectionClosedCodes.d.ts +8 -0
- package/dist/module/types/events/public/ConnectionClosedCodes.d.ts.map +1 -0
- package/dist/module/types/events/public/ConnectionClosedCodes.js +9 -0
- package/dist/module/types/events/public/ConnectionClosedCodes.js.map +1 -0
- package/dist/module/types/events/public/EventCallbacks.d.ts +23 -0
- package/dist/module/types/events/public/EventCallbacks.d.ts.map +1 -0
- package/dist/module/types/events/public/EventCallbacks.js +2 -0
- package/dist/module/types/events/public/EventCallbacks.js.map +1 -0
- package/dist/module/types/index.d.ts +18 -0
- package/dist/module/types/index.d.ts.map +1 -0
- package/dist/module/types/index.js +9 -0
- package/dist/module/types/index.js.map +1 -0
- package/dist/module/types/messageHistory/Message.d.ts +8 -0
- package/dist/module/types/messageHistory/Message.d.ts.map +1 -0
- package/dist/module/types/messageHistory/Message.js +2 -0
- package/dist/module/types/messageHistory/Message.js.map +1 -0
- package/dist/module/types/messageHistory/MessageRole.d.ts +5 -0
- package/dist/module/types/messageHistory/MessageRole.d.ts.map +1 -0
- package/dist/module/types/messageHistory/MessageRole.js +6 -0
- package/dist/module/types/messageHistory/MessageRole.js.map +1 -0
- package/dist/module/types/messageHistory/MessageStreamEvent.d.ts +9 -0
- package/dist/module/types/messageHistory/MessageStreamEvent.d.ts.map +1 -0
- package/dist/module/types/messageHistory/MessageStreamEvent.js +2 -0
- package/dist/module/types/messageHistory/MessageStreamEvent.js.map +1 -0
- package/dist/module/types/messageHistory/Thought.d.ts +5 -0
- package/dist/module/types/messageHistory/Thought.d.ts.map +1 -0
- package/dist/module/types/messageHistory/Thought.js +2 -0
- package/dist/module/types/messageHistory/Thought.js.map +1 -0
- package/dist/module/types/messageHistory/ThoughtStreamEvent.d.ts +6 -0
- package/dist/module/types/messageHistory/ThoughtStreamEvent.d.ts.map +1 -0
- package/dist/module/types/messageHistory/ThoughtStreamEvent.js +2 -0
- package/dist/module/types/messageHistory/ThoughtStreamEvent.js.map +1 -0
- package/dist/module/types/messageHistory/index.d.ts +6 -0
- package/dist/module/types/messageHistory/index.d.ts.map +1 -0
- package/dist/module/types/messageHistory/index.js +2 -0
- package/dist/module/types/messageHistory/index.js.map +1 -0
- package/dist/module/types/signalling/AgentAudioInputConfig.d.ts +9 -0
- package/dist/module/types/signalling/AgentAudioInputConfig.d.ts.map +1 -0
- package/dist/module/types/signalling/AgentAudioInputConfig.js +2 -0
- package/dist/module/types/signalling/AgentAudioInputConfig.js.map +1 -0
- package/dist/module/types/signalling/AgentAudioInputPayload.d.ts +13 -0
- package/dist/module/types/signalling/AgentAudioInputPayload.d.ts.map +1 -0
- package/dist/module/types/signalling/AgentAudioInputPayload.js +2 -0
- package/dist/module/types/signalling/AgentAudioInputPayload.js.map +1 -0
- package/dist/module/types/signalling/SignalMessage.d.ts +19 -0
- package/dist/module/types/signalling/SignalMessage.d.ts.map +1 -0
- package/dist/module/types/signalling/SignalMessage.js +15 -0
- package/dist/module/types/signalling/SignalMessage.js.map +1 -0
- package/dist/module/types/signalling/SignallingClientOptions.d.ts +12 -0
- package/dist/module/types/signalling/SignallingClientOptions.d.ts.map +1 -0
- package/dist/module/types/signalling/SignallingClientOptions.js +2 -0
- package/dist/module/types/signalling/SignallingClientOptions.js.map +1 -0
- package/dist/module/types/signalling/TalkMessageStreamPayload.d.ts +7 -0
- package/dist/module/types/signalling/TalkMessageStreamPayload.d.ts.map +1 -0
- package/dist/module/types/signalling/TalkMessageStreamPayload.js +2 -0
- package/dist/module/types/signalling/TalkMessageStreamPayload.js.map +1 -0
- package/dist/module/types/signalling/TalkStreamInterruptedSignalMessage.d.ts +5 -0
- package/dist/module/types/signalling/TalkStreamInterruptedSignalMessage.d.ts.map +1 -0
- package/dist/module/types/signalling/TalkStreamInterruptedSignalMessage.js +7 -0
- package/dist/module/types/signalling/TalkStreamInterruptedSignalMessage.js.map +1 -0
- package/dist/module/types/signalling/index.d.ts +6 -0
- package/dist/module/types/signalling/index.d.ts.map +1 -0
- package/dist/module/types/signalling/index.js +2 -0
- package/dist/module/types/signalling/index.js.map +1 -0
- package/dist/module/types/streaming/ClientToolEvent.d.ts +10 -0
- package/dist/module/types/streaming/ClientToolEvent.d.ts.map +1 -0
- package/dist/module/types/streaming/ClientToolEvent.js +2 -0
- package/dist/module/types/streaming/ClientToolEvent.js.map +1 -0
- package/dist/module/types/streaming/DataChannelMessage.d.ts +6 -0
- package/dist/module/types/streaming/DataChannelMessage.d.ts.map +1 -0
- package/dist/module/types/streaming/DataChannelMessage.js +7 -0
- package/dist/module/types/streaming/DataChannelMessage.js.map +1 -0
- package/dist/module/types/streaming/InputAudioOptions.d.ts +8 -0
- package/dist/module/types/streaming/InputAudioOptions.d.ts.map +1 -0
- package/dist/module/types/streaming/InputAudioOptions.js +2 -0
- package/dist/module/types/streaming/InputAudioOptions.js.map +1 -0
- package/dist/module/types/streaming/StreamingClientOptions.d.ts +16 -0
- package/dist/module/types/streaming/StreamingClientOptions.d.ts.map +1 -0
- package/dist/module/types/streaming/StreamingClientOptions.js +2 -0
- package/dist/module/types/streaming/StreamingClientOptions.js.map +1 -0
- package/dist/module/types/streaming/WebRtcClientToolEvent.d.ts +11 -0
- package/dist/module/types/streaming/WebRtcClientToolEvent.d.ts.map +1 -0
- package/dist/module/types/streaming/WebRtcClientToolEvent.js +2 -0
- package/dist/module/types/streaming/WebRtcClientToolEvent.js.map +1 -0
- package/dist/module/types/streaming/WebRtcReasoningTextMessageEvent.d.ts +8 -0
- package/dist/module/types/streaming/WebRtcReasoningTextMessageEvent.d.ts.map +1 -0
- package/dist/module/types/streaming/WebRtcReasoningTextMessageEvent.js +2 -0
- package/dist/module/types/streaming/WebRtcReasoningTextMessageEvent.js.map +1 -0
- package/dist/module/types/streaming/WebRtcTextMessageEvent.d.ts +9 -0
- package/dist/module/types/streaming/WebRtcTextMessageEvent.d.ts.map +1 -0
- package/dist/module/types/streaming/WebRtcTextMessageEvent.js +2 -0
- package/dist/module/types/streaming/WebRtcTextMessageEvent.js.map +1 -0
- package/dist/module/types/streaming/index.d.ts +8 -0
- package/dist/module/types/streaming/index.d.ts.map +1 -0
- package/dist/module/types/streaming/index.js +2 -0
- package/dist/module/types/streaming/index.js.map +1 -0
- package/dist/umd/anam.js +2 -0
- package/dist/umd/anam.js.LICENSE.txt +8 -0
- package/package.json +1 -1
|
@@ -3,6 +3,6 @@ export declare enum InternalEvent {
|
|
|
3
3
|
SIGNAL_MESSAGE_RECEIVED = "SIGNAL_MESSAGE_RECEIVED",
|
|
4
4
|
WEBRTC_CHAT_MESSAGE_RECEIVED = "WEBRTC_CHAT_MESSAGE_RECEIVED",
|
|
5
5
|
WEBRTC_CLIENT_TOOL_EVENT_RECEIVED = "WEBRTC_CLIENT_TOOL_EVENT_RECEIVED",
|
|
6
|
-
|
|
6
|
+
WEBRTC_REASONING_TEXT_MESSAGE_RECEIVED = "WEBRTC_REASONING_TEXT_MESSAGE_RECEIVED"
|
|
7
7
|
}
|
|
8
8
|
//# sourceMappingURL=InternalEvent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternalEvent.d.ts","sourceRoot":"","sources":["../../../../../src/types/events/internal/InternalEvent.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IACvB,eAAe,oBAAoB;IACnC,uBAAuB,4BAA4B;IACnD,4BAA4B,iCAAiC;IAC7D,iCAAiC,sCAAsC;IACvE
|
|
1
|
+
{"version":3,"file":"InternalEvent.d.ts","sourceRoot":"","sources":["../../../../../src/types/events/internal/InternalEvent.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IACvB,eAAe,oBAAoB;IACnC,uBAAuB,4BAA4B;IACnD,4BAA4B,iCAAiC;IAC7D,iCAAiC,sCAAsC;IACvE,sCAAsC,2CAA2C;CAClF"}
|
|
@@ -7,6 +7,6 @@ var InternalEvent;
|
|
|
7
7
|
InternalEvent["SIGNAL_MESSAGE_RECEIVED"] = "SIGNAL_MESSAGE_RECEIVED";
|
|
8
8
|
InternalEvent["WEBRTC_CHAT_MESSAGE_RECEIVED"] = "WEBRTC_CHAT_MESSAGE_RECEIVED";
|
|
9
9
|
InternalEvent["WEBRTC_CLIENT_TOOL_EVENT_RECEIVED"] = "WEBRTC_CLIENT_TOOL_EVENT_RECEIVED";
|
|
10
|
-
InternalEvent["
|
|
10
|
+
InternalEvent["WEBRTC_REASONING_TEXT_MESSAGE_RECEIVED"] = "WEBRTC_REASONING_TEXT_MESSAGE_RECEIVED";
|
|
11
11
|
})(InternalEvent || (exports.InternalEvent = InternalEvent = {}));
|
|
12
12
|
//# sourceMappingURL=InternalEvent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternalEvent.js","sourceRoot":"","sources":["../../../../../src/types/events/internal/InternalEvent.ts"],"names":[],"mappings":";;;AAAA,IAAY,aAMX;AAND,WAAY,aAAa;IACvB,oDAAmC,CAAA;IACnC,oEAAmD,CAAA;IACnD,8EAA6D,CAAA;IAC7D,wFAAuE,CAAA;IACvE,
|
|
1
|
+
{"version":3,"file":"InternalEvent.js","sourceRoot":"","sources":["../../../../../src/types/events/internal/InternalEvent.ts"],"names":[],"mappings":";;;AAAA,IAAY,aAMX;AAND,WAAY,aAAa;IACvB,oDAAmC,CAAA;IACnC,oEAAmD,CAAA;IACnD,8EAA6D,CAAA;IAC7D,wFAAuE,CAAA;IACvE,kGAAiF,CAAA;AACnF,CAAC,EANW,aAAa,6BAAb,aAAa,QAMxB"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { InternalEvent, SignalMessage, WebRtcTextMessageEvent, WebRtcClientToolEvent } from '../../index';
|
|
1
|
+
import { InternalEvent, SignalMessage, WebRtcTextMessageEvent, WebRtcClientToolEvent, WebRtcReasoningTextMessageEvent } from '../../index';
|
|
2
2
|
export type InternalEventCallbacks = {
|
|
3
3
|
[InternalEvent.WEB_SOCKET_OPEN]: () => void;
|
|
4
4
|
[InternalEvent.SIGNAL_MESSAGE_RECEIVED]: (signalMessage: SignalMessage) => void;
|
|
5
5
|
[InternalEvent.WEBRTC_CHAT_MESSAGE_RECEIVED]: (message: WebRtcTextMessageEvent) => void;
|
|
6
6
|
[InternalEvent.WEBRTC_CLIENT_TOOL_EVENT_RECEIVED]: (webRtcToolEvent: WebRtcClientToolEvent) => void;
|
|
7
|
+
[InternalEvent.WEBRTC_REASONING_TEXT_MESSAGE_RECEIVED]: (message: WebRtcReasoningTextMessageEvent) => void;
|
|
7
8
|
};
|
|
8
9
|
//# sourceMappingURL=InternalEventCallbacks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternalEventCallbacks.d.ts","sourceRoot":"","sources":["../../../../../src/types/events/internal/InternalEventCallbacks.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"InternalEventCallbacks.d.ts","sourceRoot":"","sources":["../../../../../src/types/events/internal/InternalEventCallbacks.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,qBAAqB,EACrB,+BAA+B,EAChC,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,sBAAsB,GAAG;IACnC,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5C,CAAC,aAAa,CAAC,uBAAuB,CAAC,EAAE,CACvC,aAAa,EAAE,aAAa,KACzB,IAAI,CAAC;IACV,CAAC,aAAa,CAAC,4BAA4B,CAAC,EAAE,CAC5C,OAAO,EAAE,sBAAsB,KAC5B,IAAI,CAAC;IACV,CAAC,aAAa,CAAC,iCAAiC,CAAC,EAAE,CACjD,eAAe,EAAE,qBAAqB,KACnC,IAAI,CAAC;IACV,CAAC,aAAa,CAAC,sCAAsC,CAAC,EAAE,CACtD,OAAO,EAAE,+BAA+B,KACrC,IAAI,CAAC;CACX,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ConnectionClosedCode } from './ConnectionClosedCodes';
|
|
2
|
-
import { Message, MessageStreamEvent, AnamEvent, ClientToolEvent } from '../../index';
|
|
2
|
+
import { Message, MessageStreamEvent, AnamEvent, ClientToolEvent, Thought, ThoughtStreamEvent } from '../../index';
|
|
3
3
|
export type EventCallbacks = {
|
|
4
4
|
[AnamEvent.MESSAGE_HISTORY_UPDATED]: (messages: Message[]) => void;
|
|
5
5
|
[AnamEvent.MESSAGE_STREAM_EVENT_RECEIVED]: (messageEvent: MessageStreamEvent) => void;
|
|
@@ -17,5 +17,7 @@ export type EventCallbacks = {
|
|
|
17
17
|
[AnamEvent.MIC_PERMISSION_DENIED]: (error: string) => void;
|
|
18
18
|
[AnamEvent.INPUT_AUDIO_DEVICE_CHANGED]: (deviceId: string) => void;
|
|
19
19
|
[AnamEvent.CLIENT_TOOL_EVENT_RECEIVED]: (clientToolEvent: ClientToolEvent) => void;
|
|
20
|
+
[AnamEvent.THOUGHT_HISTORY_UPDATED]: (thoughtMessages: Thought[]) => void;
|
|
21
|
+
[AnamEvent.THOUGHT_STREAM_EVENT_RECEIVED]: (thoughtEvent: ThoughtStreamEvent) => void;
|
|
20
22
|
};
|
|
21
23
|
//# sourceMappingURL=EventCallbacks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventCallbacks.d.ts","sourceRoot":"","sources":["../../../../../src/types/events/public/EventCallbacks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,SAAS,EACT,eAAe,
|
|
1
|
+
{"version":3,"file":"EventCallbacks.d.ts","sourceRoot":"","sources":["../../../../../src/types/events/public/EventCallbacks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,SAAS,EACT,eAAe,EACf,OAAO,EACP,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnE,CAAC,SAAS,CAAC,6BAA6B,CAAC,EAAE,CACzC,YAAY,EAAE,kBAAkB,KAC7B,IAAI,CAAC;IACV,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/C,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAC7B,MAAM,EAAE,oBAAoB,EAC5B,OAAO,CAAC,EAAE,MAAM,KACb,IAAI,CAAC;IACV,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;IAC3E,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;IACrE,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3C,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;IACrE,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/C,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/C,CAAC,SAAS,CAAC,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,CACtC,eAAe,EAAE,eAAe,KAC7B,IAAI,CAAC;IACV,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAE,CAAC,eAAe,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC1E,CAAC,SAAS,CAAC,6BAA6B,CAAC,EAAE,CACzC,YAAY,EAAE,kBAAkB,KAC7B,IAAI,CAAC;CACX,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { AnamClientOptions, AnamEvent, AgentAudioInputConfig, EventCallbacks, InputAudioState, PersonaConfig } from './types';
|
|
2
|
+
import { AgentAudioInputStream } from './types/AgentAudioInputStream';
|
|
3
|
+
import { TalkMessageStream } from './types/TalkMessageStream';
|
|
4
|
+
export default class AnamClient {
|
|
5
|
+
private publicEventEmitter;
|
|
6
|
+
private internalEventEmitter;
|
|
7
|
+
private readonly messageHistoryClient;
|
|
8
|
+
private readonly thoughtHistoryClient;
|
|
9
|
+
private personaConfig;
|
|
10
|
+
private clientOptions;
|
|
11
|
+
private inputAudioState;
|
|
12
|
+
private sessionId;
|
|
13
|
+
private organizationId;
|
|
14
|
+
private streamingClient;
|
|
15
|
+
private apiClient;
|
|
16
|
+
private _isStreaming;
|
|
17
|
+
constructor(sessionToken: string | undefined, personaConfig?: PersonaConfig, options?: AnamClientOptions);
|
|
18
|
+
private decodeJwt;
|
|
19
|
+
private validateClientConfig;
|
|
20
|
+
private buildStartSessionOptionsForClient;
|
|
21
|
+
private startSession;
|
|
22
|
+
private startSessionIfNeeded;
|
|
23
|
+
stream(userProvidedAudioStream?: MediaStream): Promise<MediaStream[]>;
|
|
24
|
+
/**
|
|
25
|
+
* @deprecated This method is deprecated. Please use streamToVideoElement instead.
|
|
26
|
+
*/
|
|
27
|
+
streamToVideoAndAudioElements(videoElementId: string, audioElementId: string, userProvidedAudioStream?: MediaStream): Promise<void>;
|
|
28
|
+
streamToVideoElement(videoElementId: string, userProvidedAudioStream?: MediaStream): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Send a talk command to make the persona speak the provided content.
|
|
31
|
+
* @param content - The text content for the persona to speak
|
|
32
|
+
* @throws Error if session is not started or not currently streaming
|
|
33
|
+
*/
|
|
34
|
+
talk(content: string): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Send a raw data message through the WebRTC data channel.
|
|
37
|
+
* @param message - The message string to send through the data channel
|
|
38
|
+
* @throws Error if session is not started
|
|
39
|
+
*/
|
|
40
|
+
sendDataMessage(message: string): void;
|
|
41
|
+
/**
|
|
42
|
+
* Send a user text message in the active streaming session.
|
|
43
|
+
* @param content - The text message content to send
|
|
44
|
+
* @throws Error if not currently streaming or session is not started
|
|
45
|
+
*/
|
|
46
|
+
sendUserMessage(content: string): void;
|
|
47
|
+
interruptPersona(): void;
|
|
48
|
+
stopStreaming(): Promise<void>;
|
|
49
|
+
isStreaming(): boolean;
|
|
50
|
+
setPersonaConfig(personaConfig: PersonaConfig): void;
|
|
51
|
+
getPersonaConfig(): PersonaConfig | undefined;
|
|
52
|
+
getInputAudioState(): InputAudioState;
|
|
53
|
+
muteInputAudio(): InputAudioState;
|
|
54
|
+
unmuteInputAudio(): InputAudioState;
|
|
55
|
+
changeAudioInputDevice(deviceId: string): Promise<void>;
|
|
56
|
+
createTalkMessageStream(correlationId?: string): TalkMessageStream;
|
|
57
|
+
createAgentAudioInputStream(config: AgentAudioInputConfig): AgentAudioInputStream;
|
|
58
|
+
/**
|
|
59
|
+
* Event handling
|
|
60
|
+
*/
|
|
61
|
+
addListener<K extends AnamEvent>(event: K, callback: EventCallbacks[K]): void;
|
|
62
|
+
removeListener<K extends AnamEvent>(event: K, callback: EventCallbacks[K]): void;
|
|
63
|
+
getActiveSessionId(): string | null;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=AnamClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnamClient.d.ts","sourceRoot":"","sources":["../../src/AnamClient.ts"],"names":[],"mappings":"AAsBA,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,qBAAqB,EAGrB,cAAc,EACd,eAAe,EACf,aAAa,EAGd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,oBAAoB,CAAuB;IAEnD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAuB;IAC5D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAuB;IAE5D,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,eAAe,CAGrB;IAEF,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,cAAc,CAAuB;IAE7C,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,SAAS,CAAoB;IAErC,OAAO,CAAC,YAAY,CAAS;gBAG3B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,aAAa,CAAC,EAAE,aAAa,EAC7B,OAAO,CAAC,EAAE,iBAAiB;IAsD7B,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,oBAAoB;IAgE5B,OAAO,CAAC,iCAAiC;YAY3B,YAAY;YA2FZ,oBAAoB;IAiBrB,MAAM,CACjB,uBAAuB,CAAC,EAAE,WAAW,GACpC,OAAO,CAAC,WAAW,EAAE,CAAC;IAoDzB;;OAEG;IACU,6BAA6B,CACxC,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,uBAAuB,CAAC,EAAE,WAAW,GACpC,OAAO,CAAC,IAAI,CAAC;IAOH,oBAAoB,CAC/B,cAAc,EAAE,MAAM,EACtB,uBAAuB,CAAC,EAAE,WAAW,GACpC,OAAO,CAAC,IAAI,CAAC;IA8ChB;;;;OAIG;IACU,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAejD;;;;OAIG;IACI,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQ7C;;;;OAIG;IACI,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAwBtC,gBAAgB,IAAI,IAAI;IAqBlB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBpC,WAAW,IAAI,OAAO;IAItB,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAIpD,gBAAgB,IAAI,aAAa,GAAG,SAAS;IAI7C,kBAAkB,IAAI,eAAe;IAYrC,cAAc,IAAI,eAAe;IAiBjC,gBAAgB,IAAI,eAAe;IAiB7B,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB7D,uBAAuB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,iBAAiB;IAelE,2BAA2B,CAChC,MAAM,EAAE,qBAAqB,GAC5B,qBAAqB;IASxB;;OAEG;IACI,WAAW,CAAC,CAAC,SAAS,SAAS,EACpC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAC1B,IAAI;IAIA,cAAc,CAAC,CAAC,SAAS,SAAS,EACvC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAC1B,IAAI;IAIA,kBAAkB,IAAI,MAAM,GAAG,IAAI;CAG3C"}
|
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { Buffer } from 'buffer';
|
|
11
|
+
import { ClientError, ErrorCode } from './lib/ClientError';
|
|
12
|
+
import { ClientMetricMeasurement, DEFAULT_ANAM_API_VERSION, DEFAULT_ANAM_METRICS_BASE_URL, sendClientMetric, setClientMetricsApiGateway, setClientMetricsBaseUrl, setClientMetricsDisabled, setMetricsContext, } from './lib/ClientMetrics';
|
|
13
|
+
import { generateCorrelationId } from './lib/correlationId';
|
|
14
|
+
import { validateApiGatewayConfig } from './lib/validateApiGatewayConfig';
|
|
15
|
+
import { CoreApiRestClient, InternalEventEmitter, MessageHistoryClient, PublicEventEmitter, StreamingClient, ThoughtHistoryClient, } from './modules';
|
|
16
|
+
import { AnamEvent, AudioPermissionState, ConnectionClosedCode, } from './types';
|
|
17
|
+
export default class AnamClient {
|
|
18
|
+
constructor(sessionToken, personaConfig, options) {
|
|
19
|
+
var _a, _b, _c, _d, _e;
|
|
20
|
+
this.inputAudioState = {
|
|
21
|
+
isMuted: false,
|
|
22
|
+
permissionState: AudioPermissionState.NOT_REQUESTED,
|
|
23
|
+
};
|
|
24
|
+
this.sessionId = null;
|
|
25
|
+
this.organizationId = null;
|
|
26
|
+
this.streamingClient = null;
|
|
27
|
+
this._isStreaming = false;
|
|
28
|
+
const configError = this.validateClientConfig(sessionToken, personaConfig, options);
|
|
29
|
+
if (configError) {
|
|
30
|
+
throw new ClientError(configError, ErrorCode.CLIENT_ERROR_CODE_CONFIGURATION_ERROR, 400);
|
|
31
|
+
}
|
|
32
|
+
this.personaConfig = personaConfig;
|
|
33
|
+
this.clientOptions = options;
|
|
34
|
+
if (((_a = options === null || options === void 0 ? void 0 : options.api) === null || _a === void 0 ? void 0 : _a.baseUrl) || ((_b = options === null || options === void 0 ? void 0 : options.api) === null || _b === void 0 ? void 0 : _b.apiVersion)) {
|
|
35
|
+
setClientMetricsBaseUrl(options.api.baseUrl || DEFAULT_ANAM_METRICS_BASE_URL, options.api.apiVersion || DEFAULT_ANAM_API_VERSION);
|
|
36
|
+
}
|
|
37
|
+
// Pass API Gateway config to metrics module so metrics are routed through the gateway
|
|
38
|
+
if ((_d = (_c = options === null || options === void 0 ? void 0 : options.api) === null || _c === void 0 ? void 0 : _c.apiGateway) === null || _d === void 0 ? void 0 : _d.enabled) {
|
|
39
|
+
setClientMetricsApiGateway(options.api.apiGateway);
|
|
40
|
+
}
|
|
41
|
+
// Allow disabling client metrics telemetry
|
|
42
|
+
if ((_e = options === null || options === void 0 ? void 0 : options.metrics) === null || _e === void 0 ? void 0 : _e.disableClientMetrics) {
|
|
43
|
+
setClientMetricsDisabled(true);
|
|
44
|
+
}
|
|
45
|
+
this.publicEventEmitter = new PublicEventEmitter();
|
|
46
|
+
this.internalEventEmitter = new InternalEventEmitter();
|
|
47
|
+
this.apiClient = new CoreApiRestClient(sessionToken, options === null || options === void 0 ? void 0 : options.apiKey, options === null || options === void 0 ? void 0 : options.api);
|
|
48
|
+
this.messageHistoryClient = new MessageHistoryClient(this.publicEventEmitter, this.internalEventEmitter);
|
|
49
|
+
this.thoughtHistoryClient = new ThoughtHistoryClient(this.publicEventEmitter, this.internalEventEmitter);
|
|
50
|
+
}
|
|
51
|
+
decodeJwt(token) {
|
|
52
|
+
try {
|
|
53
|
+
const base64Payload = token.split('.')[1];
|
|
54
|
+
const payloadString = Buffer.from(base64Payload, 'base64').toString('utf8');
|
|
55
|
+
const payload = JSON.parse(payloadString);
|
|
56
|
+
return payload;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
throw new Error('Invalid session token format');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
validateClientConfig(sessionToken, personaConfig, options) {
|
|
63
|
+
var _a, _b;
|
|
64
|
+
// Validate authentication configuration
|
|
65
|
+
if (!sessionToken && !(options === null || options === void 0 ? void 0 : options.apiKey)) {
|
|
66
|
+
return 'Either sessionToken or apiKey must be provided';
|
|
67
|
+
}
|
|
68
|
+
if ((options === null || options === void 0 ? void 0 : options.apiKey) && sessionToken) {
|
|
69
|
+
return 'Only one of sessionToken or apiKey should be used';
|
|
70
|
+
}
|
|
71
|
+
// Validate gateway configuration
|
|
72
|
+
const apiGatewayError = validateApiGatewayConfig((_a = options === null || options === void 0 ? void 0 : options.api) === null || _a === void 0 ? void 0 : _a.apiGateway);
|
|
73
|
+
if (apiGatewayError) {
|
|
74
|
+
return apiGatewayError;
|
|
75
|
+
}
|
|
76
|
+
// Validate persona configuration based on session token
|
|
77
|
+
if (sessionToken) {
|
|
78
|
+
const decodedToken = this.decodeJwt(sessionToken);
|
|
79
|
+
this.organizationId = decodedToken.accountId;
|
|
80
|
+
setMetricsContext({
|
|
81
|
+
organizationId: this.organizationId,
|
|
82
|
+
});
|
|
83
|
+
const tokenType = (_b = decodedToken.type) === null || _b === void 0 ? void 0 : _b.toLowerCase();
|
|
84
|
+
if (tokenType === 'legacy') {
|
|
85
|
+
return 'Legacy session tokens are no longer supported. Please define your persona when creating your session token. See https://docs.anam.ai/resources/migrating-legacy for more information.';
|
|
86
|
+
}
|
|
87
|
+
else if (tokenType === 'ephemeral' || tokenType === 'stateful') {
|
|
88
|
+
if (personaConfig) {
|
|
89
|
+
return 'This session token already contains a persona configuration. Please remove the personaConfig parameter.';
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
// No session token (using apiKey)
|
|
95
|
+
if (!personaConfig) {
|
|
96
|
+
return 'Missing persona config. Persona configuration must be provided when using apiKey';
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Validate voice detection configuration
|
|
100
|
+
if (options === null || options === void 0 ? void 0 : options.voiceDetection) {
|
|
101
|
+
if (options.disableInputAudio) {
|
|
102
|
+
return 'Voice detection is disabled because input audio is disabled. Please set disableInputAudio to false to enable voice detection.';
|
|
103
|
+
}
|
|
104
|
+
// End of speech sensitivity must be a number between 0 and 1
|
|
105
|
+
if (options.voiceDetection.endOfSpeechSensitivity !== undefined) {
|
|
106
|
+
if (typeof options.voiceDetection.endOfSpeechSensitivity !== 'number') {
|
|
107
|
+
return 'End of speech sensitivity must be a number';
|
|
108
|
+
}
|
|
109
|
+
if (options.voiceDetection.endOfSpeechSensitivity < 0 ||
|
|
110
|
+
options.voiceDetection.endOfSpeechSensitivity > 1) {
|
|
111
|
+
return 'End of speech sensitivity must be between 0 and 1';
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
buildStartSessionOptionsForClient() {
|
|
118
|
+
var _a;
|
|
119
|
+
const sessionOptions = {};
|
|
120
|
+
if ((_a = this.clientOptions) === null || _a === void 0 ? void 0 : _a.voiceDetection) {
|
|
121
|
+
sessionOptions.voiceDetection = this.clientOptions.voiceDetection;
|
|
122
|
+
}
|
|
123
|
+
// return undefined if no options are set
|
|
124
|
+
if (Object.keys(sessionOptions).length === 0) {
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
return sessionOptions;
|
|
128
|
+
}
|
|
129
|
+
startSession(userProvidedAudioStream) {
|
|
130
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
131
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
132
|
+
const config = this.personaConfig;
|
|
133
|
+
// build session options from client options
|
|
134
|
+
const sessionOptions = this.buildStartSessionOptionsForClient();
|
|
135
|
+
// start a new session
|
|
136
|
+
const response = yield this.apiClient.startSession(config, sessionOptions);
|
|
137
|
+
const { sessionId, clientConfig, engineHost, engineProtocol, signallingEndpoint, } = response;
|
|
138
|
+
const { heartbeatIntervalSeconds, maxWsReconnectionAttempts, iceServers: defaultIceServers, } = clientConfig;
|
|
139
|
+
this.sessionId = sessionId;
|
|
140
|
+
setMetricsContext({
|
|
141
|
+
sessionId: this.sessionId,
|
|
142
|
+
});
|
|
143
|
+
// Use custom ICE servers if provided, otherwise use server-provided ICE servers
|
|
144
|
+
const iceServers = ((_a = this.clientOptions) === null || _a === void 0 ? void 0 : _a.iceServers)
|
|
145
|
+
? this.clientOptions.iceServers
|
|
146
|
+
: defaultIceServers;
|
|
147
|
+
try {
|
|
148
|
+
this.streamingClient = new StreamingClient(sessionId, {
|
|
149
|
+
engine: {
|
|
150
|
+
baseUrl: `${engineProtocol}://${engineHost}`,
|
|
151
|
+
},
|
|
152
|
+
signalling: {
|
|
153
|
+
heartbeatIntervalSeconds,
|
|
154
|
+
maxWsReconnectionAttempts,
|
|
155
|
+
url: {
|
|
156
|
+
baseUrl: engineHost,
|
|
157
|
+
protocol: engineProtocol,
|
|
158
|
+
signallingPath: signallingEndpoint,
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
iceServers,
|
|
162
|
+
inputAudio: {
|
|
163
|
+
inputAudioState: this.inputAudioState,
|
|
164
|
+
userProvidedMediaStream: ((_b = this.clientOptions) === null || _b === void 0 ? void 0 : _b.disableInputAudio)
|
|
165
|
+
? undefined
|
|
166
|
+
: userProvidedAudioStream,
|
|
167
|
+
audioDeviceId: (_c = this.clientOptions) === null || _c === void 0 ? void 0 : _c.audioDeviceId,
|
|
168
|
+
disableInputAudio: (_d = this.clientOptions) === null || _d === void 0 ? void 0 : _d.disableInputAudio,
|
|
169
|
+
},
|
|
170
|
+
apiGateway: (_f = (_e = this.clientOptions) === null || _e === void 0 ? void 0 : _e.api) === null || _f === void 0 ? void 0 : _f.apiGateway,
|
|
171
|
+
metrics: {
|
|
172
|
+
showPeerConnectionStatsReport: (_j = (_h = (_g = this.clientOptions) === null || _g === void 0 ? void 0 : _g.metrics) === null || _h === void 0 ? void 0 : _h.showPeerConnectionStatsReport) !== null && _j !== void 0 ? _j : false,
|
|
173
|
+
peerConnectionStatsReportOutputFormat: (_m = (_l = (_k = this.clientOptions) === null || _k === void 0 ? void 0 : _k.metrics) === null || _l === void 0 ? void 0 : _l.peerConnectionStatsReportOutputFormat) !== null && _m !== void 0 ? _m : 'console',
|
|
174
|
+
},
|
|
175
|
+
}, this.publicEventEmitter, this.internalEventEmitter);
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
setMetricsContext({
|
|
179
|
+
sessionId: null,
|
|
180
|
+
});
|
|
181
|
+
throw new ClientError('Failed to initialize streaming client', ErrorCode.CLIENT_ERROR_CODE_SERVER_ERROR, 500, {
|
|
182
|
+
cause: error instanceof Error ? error.message : String(error),
|
|
183
|
+
sessionId,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
return sessionId;
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
startSessionIfNeeded(userProvidedAudioStream) {
|
|
190
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
191
|
+
if (!this.sessionId || !this.streamingClient) {
|
|
192
|
+
yield this.startSession(userProvidedAudioStream);
|
|
193
|
+
if (!this.sessionId || !this.streamingClient) {
|
|
194
|
+
throw new ClientError('Session ID or streaming client is not available after starting session', ErrorCode.CLIENT_ERROR_CODE_SERVER_ERROR, 500, {
|
|
195
|
+
cause: 'Failed to initialize session properly',
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
stream(userProvidedAudioStream) {
|
|
202
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
203
|
+
var _a;
|
|
204
|
+
if (this._isStreaming) {
|
|
205
|
+
throw new Error('Already streaming');
|
|
206
|
+
}
|
|
207
|
+
// generate a new ID here to track the attempt
|
|
208
|
+
const attemptCorrelationId = generateCorrelationId();
|
|
209
|
+
setMetricsContext({
|
|
210
|
+
attemptCorrelationId,
|
|
211
|
+
sessionId: null, // reset sessionId
|
|
212
|
+
});
|
|
213
|
+
sendClientMetric(ClientMetricMeasurement.CLIENT_METRIC_MEASUREMENT_SESSION_ATTEMPT, '1');
|
|
214
|
+
if (((_a = this.clientOptions) === null || _a === void 0 ? void 0 : _a.disableInputAudio) && userProvidedAudioStream) {
|
|
215
|
+
console.warn('AnamClient:Input audio is disabled. User provided audio stream will be ignored.');
|
|
216
|
+
}
|
|
217
|
+
yield this.startSessionIfNeeded(userProvidedAudioStream);
|
|
218
|
+
this._isStreaming = true;
|
|
219
|
+
return new Promise((resolve) => {
|
|
220
|
+
var _a;
|
|
221
|
+
// set stream callbacks to capture the stream
|
|
222
|
+
const streams = [];
|
|
223
|
+
let videoReceived = false;
|
|
224
|
+
let audioReceived = false;
|
|
225
|
+
this.publicEventEmitter.addListener(AnamEvent.VIDEO_STREAM_STARTED, (videoStream) => {
|
|
226
|
+
streams.push(videoStream);
|
|
227
|
+
videoReceived = true;
|
|
228
|
+
if (audioReceived) {
|
|
229
|
+
resolve(streams);
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
this.publicEventEmitter.addListener(AnamEvent.AUDIO_STREAM_STARTED, (audioStream) => {
|
|
233
|
+
streams.push(audioStream);
|
|
234
|
+
audioReceived = true;
|
|
235
|
+
if (videoReceived) {
|
|
236
|
+
resolve(streams);
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
// start streaming
|
|
240
|
+
(_a = this.streamingClient) === null || _a === void 0 ? void 0 : _a.startConnection();
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* @deprecated This method is deprecated. Please use streamToVideoElement instead.
|
|
246
|
+
*/
|
|
247
|
+
streamToVideoAndAudioElements(videoElementId, audioElementId, userProvidedAudioStream) {
|
|
248
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
249
|
+
console.warn('AnamClient: streamToVideoAndAudioElements is deprecated. To avoid possible audio issues, please use streamToVideoElement instead.');
|
|
250
|
+
yield this.streamToVideoElement(videoElementId, userProvidedAudioStream);
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
streamToVideoElement(videoElementId, userProvidedAudioStream) {
|
|
254
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
255
|
+
var _a;
|
|
256
|
+
// generate a new ID here to track the attempt
|
|
257
|
+
const attemptCorrelationId = generateCorrelationId();
|
|
258
|
+
setMetricsContext({
|
|
259
|
+
attemptCorrelationId,
|
|
260
|
+
sessionId: null, // reset sessionId
|
|
261
|
+
});
|
|
262
|
+
sendClientMetric(ClientMetricMeasurement.CLIENT_METRIC_MEASUREMENT_SESSION_ATTEMPT, '1');
|
|
263
|
+
if (((_a = this.clientOptions) === null || _a === void 0 ? void 0 : _a.disableInputAudio) && userProvidedAudioStream) {
|
|
264
|
+
console.warn('AnamClient:Input audio is disabled. User provided audio stream will be ignored.');
|
|
265
|
+
}
|
|
266
|
+
try {
|
|
267
|
+
yield this.startSessionIfNeeded(userProvidedAudioStream);
|
|
268
|
+
}
|
|
269
|
+
catch (error) {
|
|
270
|
+
if (error instanceof ClientError) {
|
|
271
|
+
throw error;
|
|
272
|
+
}
|
|
273
|
+
throw new ClientError('Failed to start session', ErrorCode.CLIENT_ERROR_CODE_SERVER_ERROR, 500, {
|
|
274
|
+
cause: error instanceof Error ? error.message : String(error),
|
|
275
|
+
sessionId: this.sessionId,
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
if (this._isStreaming) {
|
|
279
|
+
throw new Error('Already streaming');
|
|
280
|
+
}
|
|
281
|
+
this._isStreaming = true;
|
|
282
|
+
if (!this.streamingClient) {
|
|
283
|
+
throw new Error('Failed to stream: streaming client is not available');
|
|
284
|
+
}
|
|
285
|
+
this.streamingClient.setMediaStreamTargetById(videoElementId);
|
|
286
|
+
this.streamingClient.startConnection();
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Send a talk command to make the persona speak the provided content.
|
|
291
|
+
* @param content - The text content for the persona to speak
|
|
292
|
+
* @throws Error if session is not started or not currently streaming
|
|
293
|
+
*/
|
|
294
|
+
talk(content) {
|
|
295
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
296
|
+
if (!this.streamingClient) {
|
|
297
|
+
throw new Error('Failed to send talk command: session is not started. Have you called startSession?');
|
|
298
|
+
}
|
|
299
|
+
if (!this._isStreaming) {
|
|
300
|
+
throw new Error('Failed to send talk command: not currently streaming. Have you called stream?');
|
|
301
|
+
}
|
|
302
|
+
yield this.streamingClient.sendTalkCommand(content);
|
|
303
|
+
return;
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Send a raw data message through the WebRTC data channel.
|
|
308
|
+
* @param message - The message string to send through the data channel
|
|
309
|
+
* @throws Error if session is not started
|
|
310
|
+
*/
|
|
311
|
+
sendDataMessage(message) {
|
|
312
|
+
if (this.streamingClient) {
|
|
313
|
+
this.streamingClient.sendDataMessage(message);
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
throw new Error('Failed to send message: session is not started.');
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Send a user text message in the active streaming session.
|
|
321
|
+
* @param content - The text message content to send
|
|
322
|
+
* @throws Error if not currently streaming or session is not started
|
|
323
|
+
*/
|
|
324
|
+
sendUserMessage(content) {
|
|
325
|
+
if (!this._isStreaming) {
|
|
326
|
+
console.warn('AnamClient: Not currently streaming. User message will not be sent.');
|
|
327
|
+
throw new Error('Failed to send user message: not currently streaming');
|
|
328
|
+
}
|
|
329
|
+
const sessionId = this.getActiveSessionId();
|
|
330
|
+
if (!sessionId) {
|
|
331
|
+
throw new Error('Failed to send user message: no active session');
|
|
332
|
+
}
|
|
333
|
+
const currentTimestamp = new Date().toISOString().replace('Z', '');
|
|
334
|
+
const body = JSON.stringify({
|
|
335
|
+
content,
|
|
336
|
+
timestamp: currentTimestamp,
|
|
337
|
+
session_id: sessionId,
|
|
338
|
+
message_type: 'speech',
|
|
339
|
+
});
|
|
340
|
+
this.sendDataMessage(body);
|
|
341
|
+
}
|
|
342
|
+
interruptPersona() {
|
|
343
|
+
if (!this._isStreaming) {
|
|
344
|
+
throw new Error('Failed to send interrupt command: not currently streaming');
|
|
345
|
+
}
|
|
346
|
+
const sessionId = this.getActiveSessionId();
|
|
347
|
+
if (!sessionId) {
|
|
348
|
+
throw new Error('Failed to send interrupt command: no active session');
|
|
349
|
+
}
|
|
350
|
+
const body = JSON.stringify({
|
|
351
|
+
message_type: 'interrupt',
|
|
352
|
+
session_id: sessionId,
|
|
353
|
+
timestamp: new Date().toISOString(), // removing Z not needed
|
|
354
|
+
});
|
|
355
|
+
this.sendDataMessage(body);
|
|
356
|
+
}
|
|
357
|
+
stopStreaming() {
|
|
358
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
359
|
+
if (this.streamingClient) {
|
|
360
|
+
this.publicEventEmitter.emit(AnamEvent.CONNECTION_CLOSED, ConnectionClosedCode.NORMAL);
|
|
361
|
+
yield this.streamingClient.stopConnection();
|
|
362
|
+
this.streamingClient = null;
|
|
363
|
+
this.sessionId = null;
|
|
364
|
+
setMetricsContext({
|
|
365
|
+
attemptCorrelationId: null,
|
|
366
|
+
sessionId: null,
|
|
367
|
+
organizationId: this.organizationId,
|
|
368
|
+
});
|
|
369
|
+
this._isStreaming = false;
|
|
370
|
+
}
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
isStreaming() {
|
|
374
|
+
return this._isStreaming;
|
|
375
|
+
}
|
|
376
|
+
setPersonaConfig(personaConfig) {
|
|
377
|
+
this.personaConfig = personaConfig;
|
|
378
|
+
}
|
|
379
|
+
getPersonaConfig() {
|
|
380
|
+
return this.personaConfig;
|
|
381
|
+
}
|
|
382
|
+
getInputAudioState() {
|
|
383
|
+
var _a;
|
|
384
|
+
if ((_a = this.clientOptions) === null || _a === void 0 ? void 0 : _a.disableInputAudio) {
|
|
385
|
+
console.warn('AnamClient: Audio state will not be used because input audio is disabled.');
|
|
386
|
+
}
|
|
387
|
+
// if streaming client is available, make sure our state is up to date
|
|
388
|
+
if (this.streamingClient) {
|
|
389
|
+
this.inputAudioState = this.streamingClient.getInputAudioState();
|
|
390
|
+
}
|
|
391
|
+
return this.inputAudioState;
|
|
392
|
+
}
|
|
393
|
+
muteInputAudio() {
|
|
394
|
+
var _a, _b;
|
|
395
|
+
if ((_a = this.clientOptions) === null || _a === void 0 ? void 0 : _a.disableInputAudio) {
|
|
396
|
+
console.warn('AnamClient: Input audio is disabled. Muting input audio will have no effect.');
|
|
397
|
+
}
|
|
398
|
+
if (this.streamingClient && !((_b = this.clientOptions) === null || _b === void 0 ? void 0 : _b.disableInputAudio)) {
|
|
399
|
+
this.inputAudioState = this.streamingClient.muteInputAudio();
|
|
400
|
+
}
|
|
401
|
+
else {
|
|
402
|
+
this.inputAudioState = Object.assign(Object.assign({}, this.inputAudioState), { isMuted: true });
|
|
403
|
+
}
|
|
404
|
+
return this.inputAudioState;
|
|
405
|
+
}
|
|
406
|
+
unmuteInputAudio() {
|
|
407
|
+
var _a, _b;
|
|
408
|
+
if ((_a = this.clientOptions) === null || _a === void 0 ? void 0 : _a.disableInputAudio) {
|
|
409
|
+
console.warn('AnamClient: Input audio is disabled. Unmuting input audio will have no effect.');
|
|
410
|
+
}
|
|
411
|
+
if (this.streamingClient && !((_b = this.clientOptions) === null || _b === void 0 ? void 0 : _b.disableInputAudio)) {
|
|
412
|
+
this.inputAudioState = this.streamingClient.unmuteInputAudio();
|
|
413
|
+
}
|
|
414
|
+
else {
|
|
415
|
+
this.inputAudioState = Object.assign(Object.assign({}, this.inputAudioState), { isMuted: false });
|
|
416
|
+
}
|
|
417
|
+
return this.inputAudioState;
|
|
418
|
+
}
|
|
419
|
+
changeAudioInputDevice(deviceId) {
|
|
420
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
421
|
+
var _a;
|
|
422
|
+
if ((_a = this.clientOptions) === null || _a === void 0 ? void 0 : _a.disableInputAudio) {
|
|
423
|
+
throw new Error('AnamClient: Cannot change audio input device because input audio is disabled.');
|
|
424
|
+
}
|
|
425
|
+
if (!this._isStreaming) {
|
|
426
|
+
throw new Error('AnamClient: Cannot change audio input device while not streaming. Start streaming first.');
|
|
427
|
+
}
|
|
428
|
+
if (!this.streamingClient) {
|
|
429
|
+
throw new Error('AnamClient: Cannot change audio input device because streaming client is not available. Start streaming first.');
|
|
430
|
+
}
|
|
431
|
+
yield this.streamingClient.changeAudioInputDevice(deviceId);
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
createTalkMessageStream(correlationId) {
|
|
435
|
+
if (!this.streamingClient) {
|
|
436
|
+
throw new Error('Failed to start talk message stream: session is not started.');
|
|
437
|
+
}
|
|
438
|
+
if (correlationId && correlationId.trim() === '') {
|
|
439
|
+
throw new Error('Failed to start talk message stream: correlationId is empty');
|
|
440
|
+
}
|
|
441
|
+
return this.streamingClient.startTalkMessageStream(correlationId);
|
|
442
|
+
}
|
|
443
|
+
createAgentAudioInputStream(config) {
|
|
444
|
+
if (!this.streamingClient) {
|
|
445
|
+
throw new Error('Failed to create agent audio input stream: session is not started.');
|
|
446
|
+
}
|
|
447
|
+
return this.streamingClient.createAgentAudioInputStream(config);
|
|
448
|
+
}
|
|
449
|
+
/**
|
|
450
|
+
* Event handling
|
|
451
|
+
*/
|
|
452
|
+
addListener(event, callback) {
|
|
453
|
+
this.publicEventEmitter.addListener(event, callback);
|
|
454
|
+
}
|
|
455
|
+
removeListener(event, callback) {
|
|
456
|
+
this.publicEventEmitter.removeListener(event, callback);
|
|
457
|
+
}
|
|
458
|
+
getActiveSessionId() {
|
|
459
|
+
return this.sessionId;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
//# sourceMappingURL=AnamClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnamClient.js","sourceRoot":"","sources":["../../src/AnamClient.ts"],"names":[],"mappings":"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"}
|