@unboundcx/sdk 4.1.0 → 4.1.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unboundcx/sdk",
3
- "version": "4.1.0",
3
+ "version": "4.1.2",
4
4
  "description": "Official JavaScript SDK for the Unbound API - A comprehensive toolkit for integrating with Unbound's communication, AI, and data management services",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -154,6 +154,14 @@ class LiveQueryHandle {
154
154
  this.subscriptionId = ack.subscriptionId;
155
155
  this.mode = ack.mode;
156
156
  this.seq = 0;
157
+ // Re-resolve the manager at registration time: if a concurrent
158
+ // unsubscribe drained the manager while this subscribe was in flight,
159
+ // destroy() stripped its socket listeners and dropped it from
160
+ // socketManagers - registering onto that dead instance would leave this
161
+ // handle deaf (server sub alive, frames arriving at the socket, nothing
162
+ // listening). getSocketManager() returns a fresh, listening manager in
163
+ // that case.
164
+ this.manager = getSocketManager(this.socket);
157
165
  this.manager.register(this);
158
166
  this._setState('active');
159
167
  return ack;
package/services/video.js CHANGED
@@ -1043,6 +1043,24 @@ export class VideoService {
1043
1043
  return result;
1044
1044
  }
1045
1045
 
1046
+ /**
1047
+ * Get live presence for a video room (current participants, grouped by
1048
+ * waiting-room state)
1049
+ * @param {string} roomId - The video room ID
1050
+ * @returns {Promise} Live presence info
1051
+ */
1052
+ async getLivePresence(roomId) {
1053
+ this.sdk.validateParams(
1054
+ { roomId },
1055
+ {
1056
+ roomId: { type: 'string', required: true },
1057
+ },
1058
+ );
1059
+
1060
+ const result = await this.sdk._fetch(`/video/${roomId}/livePresence`, 'GET');
1061
+ return result;
1062
+ }
1063
+
1046
1064
  /**
1047
1065
  * Get the AI-generated summary for a video room's transcript
1048
1066
  * @param {string} roomId - The video room ID
package/services/voice.js CHANGED
@@ -22,9 +22,9 @@ export class VoiceService {
22
22
  return result;
23
23
  }
24
24
 
25
- async call({ to, from, destination, app, timeout, customHeaders }) {
25
+ async call({ to, from, destination, app, timeout, customHeaders, statusWebhook }) {
26
26
  this.sdk.validateParams(
27
- { to, from, destination, app, timeout, customHeaders },
27
+ { to, from, destination, app, timeout, customHeaders, statusWebhook },
28
28
  {
29
29
  to: { type: 'string', required: true },
30
30
  from: { type: 'string', required: true },
@@ -32,6 +32,10 @@ export class VoiceService {
32
32
  app: { type: 'object', required: false },
33
33
  timeout: { type: 'number', required: false },
34
34
  customHeaders: { type: 'object', required: false },
35
+ // { url, static } — internal endpoint that receives call progress
36
+ // events (trying/ringing/answered/failed) with `static` fields
37
+ // merged into each POST body
38
+ statusWebhook: { type: 'object', required: false },
35
39
  },
36
40
  );
37
41
 
@@ -43,6 +47,7 @@ export class VoiceService {
43
47
  app,
44
48
  timeout,
45
49
  customHeaders,
50
+ statusWebhook,
46
51
  },
47
52
  };
48
53