@layercode/js-sdk 1.0.21 → 1.0.22

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.
@@ -1,3 +1,18 @@
1
+ /**
2
+ * Interface for LayercodeClient public methods
3
+ */
4
+ interface ILayercodeClient {
5
+ connect(): Promise<void>;
6
+ disconnect(): Promise<void>;
7
+ triggerUserTurnStarted(): Promise<void>;
8
+ triggerUserTurnFinished(): Promise<void>;
9
+ getStream(): MediaStream | null;
10
+ setInputDevice(deviceId: string): Promise<void>;
11
+ readonly status: string;
12
+ readonly userAudioAmplitude: number;
13
+ readonly agentAudioAmplitude: number;
14
+ readonly sessionId: string | null;
15
+ }
1
16
  /**
2
17
  * Interface for LayercodeClient constructor options
3
18
  */
@@ -35,7 +50,7 @@ interface LayercodeClientOptions {
35
50
  * @class LayercodeClient
36
51
  * @classdesc Core client for Layercode audio pipeline that manages audio recording, WebSocket communication, and speech processing.
37
52
  */
38
- declare class LayercodeClient {
53
+ declare class LayercodeClient implements ILayercodeClient {
39
54
  private options;
40
55
  private wavRecorder;
41
56
  private wavPlayer;
@@ -45,11 +60,13 @@ declare class LayercodeClient {
45
60
  private pushToTalkActive;
46
61
  private pushToTalkEnabled;
47
62
  private canInterrupt;
48
- private vadPausedPlayer;
49
63
  private userIsSpeaking;
50
64
  private endUserTurn;
51
65
  private recorderStarted;
52
66
  private readySent;
67
+ private currentTurnText;
68
+ private currentTurnId;
69
+ private audioBuffer;
53
70
  _websocketUrl: string;
54
71
  status: string;
55
72
  userAudioAmplitude: number;
@@ -72,6 +89,7 @@ declare class LayercodeClient {
72
89
  * @private
73
90
  */
74
91
  private _clientResponseAudioReplayFinished;
92
+ private _estimateWordsHeard;
75
93
  private _clientInterruptAssistantReplay;
76
94
  triggerUserTurnStarted(): Promise<void>;
77
95
  triggerUserTurnFinished(): Promise<void>;
@@ -116,3 +134,4 @@ declare class LayercodeClient {
116
134
  setInputDevice(deviceId: string): Promise<void>;
117
135
  }
118
136
  export default LayercodeClient;
137
+ export type { ILayercodeClient, LayercodeClientOptions };
@@ -1,4 +1,4 @@
1
- export type LayercodeMessageType = 'client.audio' | 'trigger.turn.start' | 'trigger.turn.end' | 'trigger.response.audio.replay_finished' | 'vad_events' | 'client.ready' | 'turn.start' | 'turn.end' | 'response.audio' | 'response.data';
1
+ export type LayercodeMessageType = 'client.audio' | 'trigger.turn.start' | 'trigger.turn.end' | 'trigger.response.audio.replay_finished' | 'trigger.response.audio.interrupted' | 'vad_events' | 'client.ready' | 'turn.start' | 'turn.end' | 'response.audio' | 'response.text' | 'response.data';
2
2
  export interface BaseLayercodeMessage {
3
3
  type: LayercodeMessageType;
4
4
  event_id?: string;
@@ -20,9 +20,19 @@ export interface ClientReadyMessage extends BaseLayercodeMessage {
20
20
  }
21
21
  export interface ClientTriggerResponseAudioReplayFinishedMessage extends BaseLayercodeMessage {
22
22
  type: 'trigger.response.audio.replay_finished';
23
- reason: 'completed' | 'interrupted';
23
+ reason: 'completed';
24
24
  last_delta_id_played?: string;
25
25
  }
26
+ export interface ClientTriggerResponseAudioInterruptedMessage extends BaseLayercodeMessage {
27
+ type: 'trigger.response.audio.interrupted';
28
+ playback_offset?: number;
29
+ interruption_context?: {
30
+ turn_id: string;
31
+ estimated_words_heard: number;
32
+ total_words: number;
33
+ text_heard: string;
34
+ };
35
+ }
26
36
  export interface ServerTurnMessage extends BaseLayercodeMessage {
27
37
  type: 'turn.start' | 'turn.end';
28
38
  role: 'user' | 'assistant';
@@ -33,11 +43,16 @@ export interface ServerResponseAudioMessage extends BaseLayercodeMessage {
33
43
  delta_id?: string;
34
44
  turn_id: string;
35
45
  }
46
+ export interface ServerResponseTextMessage extends BaseLayercodeMessage {
47
+ type: 'response.text';
48
+ content: string;
49
+ turn_id: string;
50
+ }
36
51
  export interface ServerResponseDataMessage extends BaseLayercodeMessage {
37
52
  type: 'response.data';
38
53
  content: any;
39
54
  turn_id: string;
40
55
  }
41
- export type ServerMessage = ServerTurnMessage | ServerResponseAudioMessage | ServerResponseDataMessage;
42
- export type ClientMessage = ClientAudioMessage | ClientTriggerTurnMessage | ClientTriggerResponseAudioReplayFinishedMessage | ClientVadEventsMessage | ClientReadyMessage;
56
+ export type ServerMessage = ServerTurnMessage | ServerResponseAudioMessage | ServerResponseTextMessage | ServerResponseDataMessage;
57
+ export type ClientMessage = ClientAudioMessage | ClientTriggerTurnMessage | ClientTriggerResponseAudioReplayFinishedMessage | ClientTriggerResponseAudioInterruptedMessage | ClientVadEventsMessage | ClientReadyMessage;
43
58
  export type LayercodeMessage = ClientMessage | ServerMessage;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "author": "Layercode",
3
3
  "license": "MIT",
4
4
  "name": "@layercode/js-sdk",
5
- "version": "1.0.21",
5
+ "version": "1.0.22",
6
6
  "description": "Layercode JavaScript SDK for browser usage",
7
7
  "type": "module",
8
8
  "main": "dist/layercode-js-sdk.esm.js",