@absolutejs/voice 0.0.22-beta.444 → 0.0.22-beta.446

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.
@@ -2519,6 +2519,7 @@ var NOOP_CONNECTION = {
2519
2519
  getSessionId: () => "",
2520
2520
  send: noop,
2521
2521
  sendAudio: noop,
2522
+ simulateDisconnect: noop,
2522
2523
  start: () => {},
2523
2524
  subscribe: noopUnsubscribe
2524
2525
  };
@@ -2743,6 +2744,11 @@ var createVoiceConnection = (path, options = {}) => {
2743
2744
  state.isConnected = false;
2744
2745
  listeners.clear();
2745
2746
  };
2747
+ const simulateDisconnect = () => {
2748
+ if (state.ws?.readyState === WS_OPEN) {
2749
+ state.ws.close(4000, "absolutejs-voice-reconnect-proof");
2750
+ }
2751
+ };
2746
2752
  const subscribe = (callback) => {
2747
2753
  listeners.add(callback);
2748
2754
  return () => {
@@ -2759,6 +2765,7 @@ var createVoiceConnection = (path, options = {}) => {
2759
2765
  getSessionId: () => state.sessionId,
2760
2766
  send,
2761
2767
  sendAudio,
2768
+ simulateDisconnect,
2762
2769
  start,
2763
2770
  subscribe
2764
2771
  };
@@ -3042,6 +3049,9 @@ var createVoiceStream = (path, options = {}) => {
3042
3049
  sendAudio(audio) {
3043
3050
  connection.sendAudio(audio);
3044
3051
  },
3052
+ simulateDisconnect() {
3053
+ connection.simulateDisconnect();
3054
+ },
3045
3055
  subscribe(subscriber) {
3046
3056
  subscribers.add(subscriber);
3047
3057
  return () => {
@@ -3101,6 +3111,7 @@ class VoiceStreamService {
3101
3111
  partial: computed12(() => partialSignal()),
3102
3112
  reconnect: computed12(() => reconnectSignal()),
3103
3113
  sendAudio: (audio) => stream.sendAudio(audio),
3114
+ simulateDisconnect: () => stream.simulateDisconnect(),
3104
3115
  sessionId: computed12(() => sessionIdSignal()),
3105
3116
  sessionMetadata: computed12(() => sessionMetadataSignal()),
3106
3117
  status: computed12(() => statusSignal()),
@@ -3719,6 +3730,7 @@ var createVoiceController = (path, options = {}) => {
3719
3730
  return state.reconnect;
3720
3731
  },
3721
3732
  sendAudio: (audio) => stream.sendAudio(audio),
3733
+ simulateDisconnect: () => stream.simulateDisconnect(),
3722
3734
  get sessionId() {
3723
3735
  return state.sessionId;
3724
3736
  },
@@ -3812,6 +3824,7 @@ class VoiceControllerService {
3812
3824
  reconnect: computed13(() => reconnectSignal()),
3813
3825
  recordingError: computed13(() => recordingErrorSignal()),
3814
3826
  sendAudio: (audio) => controller.sendAudio(audio),
3827
+ simulateDisconnect: () => controller.simulateDisconnect(),
3815
3828
  sessionId: computed13(() => sessionIdSignal()),
3816
3829
  startRecording: () => controller.startRecording(),
3817
3830
  status: computed13(() => statusSignal()),
@@ -18,6 +18,7 @@ export declare class VoiceControllerService {
18
18
  reconnect: import("@angular/core").Signal<import("..").VoiceReconnectClientState>;
19
19
  recordingError: import("@angular/core").Signal<string | null>;
20
20
  sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
21
+ simulateDisconnect: () => void;
21
22
  sessionId: import("@angular/core").Signal<string | null>;
22
23
  startRecording: () => Promise<void>;
23
24
  status: import("@angular/core").Signal<import("..").VoiceSessionStatus | "idle">;
@@ -17,6 +17,7 @@ export declare class VoiceStreamService {
17
17
  partial: import("@angular/core").Signal<string>;
18
18
  reconnect: import("@angular/core").Signal<import("..").VoiceReconnectClientState>;
19
19
  sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
20
+ simulateDisconnect: () => void;
20
21
  sessionId: import("@angular/core").Signal<string | null>;
21
22
  sessionMetadata: import("@angular/core").Signal<Record<string, unknown> | null>;
22
23
  status: import("@angular/core").Signal<import("..").VoiceSessionStatus | "idle">;
@@ -14,6 +14,7 @@ type VoiceConnectionHandle = {
14
14
  getSessionId: () => string;
15
15
  send: (message: VoiceClientMessage) => void;
16
16
  sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
17
+ simulateDisconnect: () => void;
17
18
  subscribe: (callback: (message: VoiceServerMessage) => void) => () => void;
18
19
  };
19
20
  export declare const createVoiceConnection: (path: string, options?: VoiceConnectionOptions) => VoiceConnectionHandle;
@@ -489,6 +489,7 @@ var NOOP_CONNECTION = {
489
489
  getSessionId: () => "",
490
490
  send: noop,
491
491
  sendAudio: noop,
492
+ simulateDisconnect: noop,
492
493
  start: () => {},
493
494
  subscribe: noopUnsubscribe
494
495
  };
@@ -713,6 +714,11 @@ var createVoiceConnection = (path, options = {}) => {
713
714
  state.isConnected = false;
714
715
  listeners.clear();
715
716
  };
717
+ const simulateDisconnect = () => {
718
+ if (state.ws?.readyState === WS_OPEN) {
719
+ state.ws.close(4000, "absolutejs-voice-reconnect-proof");
720
+ }
721
+ };
716
722
  const subscribe = (callback) => {
717
723
  listeners.add(callback);
718
724
  return () => {
@@ -729,6 +735,7 @@ var createVoiceConnection = (path, options = {}) => {
729
735
  getSessionId: () => state.sessionId,
730
736
  send,
731
737
  sendAudio,
738
+ simulateDisconnect,
732
739
  start,
733
740
  subscribe
734
741
  };
@@ -1012,6 +1019,9 @@ var createVoiceStream = (path, options = {}) => {
1012
1019
  sendAudio(audio) {
1013
1020
  connection.sendAudio(audio);
1014
1021
  },
1022
+ simulateDisconnect() {
1023
+ connection.simulateDisconnect();
1024
+ },
1015
1025
  subscribe(subscriber) {
1016
1026
  subscribers.add(subscriber);
1017
1027
  return () => {
@@ -1446,6 +1456,7 @@ var createVoiceController = (path, options = {}) => {
1446
1456
  return state.reconnect;
1447
1457
  },
1448
1458
  sendAudio: (audio) => stream.sendAudio(audio),
1459
+ simulateDisconnect: () => stream.simulateDisconnect(),
1449
1460
  get sessionId() {
1450
1461
  return state.sessionId;
1451
1462
  },
@@ -89,6 +89,7 @@ var NOOP_CONNECTION = {
89
89
  getSessionId: () => "",
90
90
  send: noop,
91
91
  sendAudio: noop,
92
+ simulateDisconnect: noop,
92
93
  start: () => {},
93
94
  subscribe: noopUnsubscribe
94
95
  };
@@ -313,6 +314,11 @@ var createVoiceConnection = (path, options = {}) => {
313
314
  state.isConnected = false;
314
315
  listeners.clear();
315
316
  };
317
+ const simulateDisconnect = () => {
318
+ if (state.ws?.readyState === WS_OPEN) {
319
+ state.ws.close(4000, "absolutejs-voice-reconnect-proof");
320
+ }
321
+ };
316
322
  const subscribe = (callback) => {
317
323
  listeners.add(callback);
318
324
  return () => {
@@ -329,6 +335,7 @@ var createVoiceConnection = (path, options = {}) => {
329
335
  getSessionId: () => state.sessionId,
330
336
  send,
331
337
  sendAudio,
338
+ simulateDisconnect,
332
339
  start,
333
340
  subscribe
334
341
  };
@@ -1796,6 +1803,9 @@ var createVoiceStream = (path, options = {}) => {
1796
1803
  sendAudio(audio) {
1797
1804
  connection.sendAudio(audio);
1798
1805
  },
1806
+ simulateDisconnect() {
1807
+ connection.simulateDisconnect();
1808
+ },
1799
1809
  subscribe(subscriber) {
1800
1810
  subscribers.add(subscriber);
1801
1811
  return () => {
@@ -2408,6 +2418,7 @@ var createVoiceController = (path, options = {}) => {
2408
2418
  return state.reconnect;
2409
2419
  },
2410
2420
  sendAudio: (audio) => stream.sendAudio(audio),
2421
+ simulateDisconnect: () => stream.simulateDisconnect(),
2411
2422
  get sessionId() {
2412
2423
  return state.sessionId;
2413
2424
  },
package/dist/index.js CHANGED
@@ -11781,6 +11781,8 @@ var getSessionsFromStore = async (store) => {
11781
11781
  };
11782
11782
  var createVoiceReconnectProofRoutes = (options = {}) => {
11783
11783
  const path = options.path ?? "/api/voice/reconnect-proof";
11784
+ const collectedSnapshots = [];
11785
+ const maxCollectedSnapshots = options.maxCollectedSnapshots ?? 500;
11784
11786
  const buildReport = async () => buildVoiceReconnectProofReport({
11785
11787
  completedSessionCount: options.getCompletedSessionCount ? await options.getCompletedSessionCount() : undefined,
11786
11788
  maxAttempts: options.maxAttempts,
@@ -11788,7 +11790,10 @@ var createVoiceReconnectProofRoutes = (options = {}) => {
11788
11790
  requireReplayProtection: options.requireReplayProtection,
11789
11791
  requireResumeAfterReconnect: options.requireResumeAfterReconnect,
11790
11792
  sessions: options.getSessions ? await options.getSessions() : options.store ? await getSessionsFromStore(options.store) : undefined,
11791
- snapshots: options.getSnapshots ? await options.getSnapshots() : undefined
11793
+ snapshots: [
11794
+ ...collectedSnapshots,
11795
+ ...options.getSnapshots ? await options.getSnapshots() : []
11796
+ ]
11792
11797
  });
11793
11798
  const respond = async () => new Response(JSON.stringify(await buildReport()), {
11794
11799
  headers: {
@@ -11796,9 +11801,25 @@ var createVoiceReconnectProofRoutes = (options = {}) => {
11796
11801
  ...options.headers
11797
11802
  }
11798
11803
  });
11804
+ const collectSnapshot = (body) => {
11805
+ if (!isReconnectPayload(body)) {
11806
+ return;
11807
+ }
11808
+ collectedSnapshots.push({
11809
+ at: body.at,
11810
+ reconnect: body.reconnect,
11811
+ turnIds: Array.isArray(body.turnIds) ? body.turnIds.filter((turnId) => typeof turnId === "string") : undefined
11812
+ });
11813
+ if (collectedSnapshots.length > maxCollectedSnapshots) {
11814
+ collectedSnapshots.splice(0, collectedSnapshots.length - maxCollectedSnapshots);
11815
+ }
11816
+ };
11799
11817
  return new Elysia9({
11800
11818
  name: options.name ?? "absolutejs-voice-reconnect-proof"
11801
- }).get(path, respond).post(path, respond);
11819
+ }).get(path, respond).post(path, async ({ body }) => {
11820
+ collectSnapshot(body);
11821
+ return respond();
11822
+ });
11802
11823
  };
11803
11824
  var renderVoiceReconnectContractHTML = (report) => {
11804
11825
  const issues = report.issues.map((issue) => `<li class="${escapeHtml12(issue.severity)}"><strong>${escapeHtml12(issue.code)}</strong>: ${escapeHtml12(issue.message)}</li>`).join("");
@@ -10640,6 +10640,7 @@ var NOOP_CONNECTION = {
10640
10640
  getSessionId: () => "",
10641
10641
  send: noop,
10642
10642
  sendAudio: noop,
10643
+ simulateDisconnect: noop,
10643
10644
  start: () => {},
10644
10645
  subscribe: noopUnsubscribe
10645
10646
  };
@@ -10864,6 +10865,11 @@ var createVoiceConnection = (path, options = {}) => {
10864
10865
  state.isConnected = false;
10865
10866
  listeners.clear();
10866
10867
  };
10868
+ const simulateDisconnect = () => {
10869
+ if (state.ws?.readyState === WS_OPEN) {
10870
+ state.ws.close(4000, "absolutejs-voice-reconnect-proof");
10871
+ }
10872
+ };
10867
10873
  const subscribe = (callback) => {
10868
10874
  listeners.add(callback);
10869
10875
  return () => {
@@ -10880,6 +10886,7 @@ var createVoiceConnection = (path, options = {}) => {
10880
10886
  getSessionId: () => state.sessionId,
10881
10887
  send,
10882
10888
  sendAudio,
10889
+ simulateDisconnect,
10883
10890
  start,
10884
10891
  subscribe
10885
10892
  };
@@ -11163,6 +11170,9 @@ var createVoiceStream = (path, options = {}) => {
11163
11170
  sendAudio(audio) {
11164
11171
  connection.sendAudio(audio);
11165
11172
  },
11173
+ simulateDisconnect() {
11174
+ connection.simulateDisconnect();
11175
+ },
11166
11176
  subscribe(subscriber) {
11167
11177
  subscribers.add(subscriber);
11168
11178
  return () => {
@@ -11203,7 +11213,8 @@ var useVoiceStream = (path, options = {}) => {
11203
11213
  callControl: (message) => stream.callControl(message),
11204
11214
  close: () => stream.close(),
11205
11215
  endTurn: () => stream.endTurn(),
11206
- sendAudio: (audio) => stream.sendAudio(audio)
11216
+ sendAudio: (audio) => stream.sendAudio(audio),
11217
+ simulateDisconnect: () => stream.simulateDisconnect()
11207
11218
  };
11208
11219
  };
11209
11220
  // src/react/useVoiceController.tsx
@@ -11813,6 +11824,7 @@ var createVoiceController = (path, options = {}) => {
11813
11824
  return state.reconnect;
11814
11825
  },
11815
11826
  sendAudio: (audio) => stream.sendAudio(audio),
11827
+ simulateDisconnect: () => stream.simulateDisconnect(),
11816
11828
  get sessionId() {
11817
11829
  return state.sessionId;
11818
11830
  },
@@ -11889,6 +11901,7 @@ var useVoiceController = (path, options = {}) => {
11889
11901
  close: () => controller.close(),
11890
11902
  endTurn: () => controller.endTurn(),
11891
11903
  sendAudio: (audio) => controller.sendAudio(audio),
11904
+ simulateDisconnect: () => controller.simulateDisconnect(),
11892
11905
  startRecording: () => controller.startRecording(),
11893
11906
  stopRecording: () => controller.stopRecording(),
11894
11907
  toggleRecording: () => controller.toggleRecording()
@@ -5,6 +5,7 @@ export declare const useVoiceController: <TResult = unknown>(path: string, optio
5
5
  close: () => void;
6
6
  endTurn: () => void;
7
7
  sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
8
+ simulateDisconnect: () => void;
8
9
  startRecording: () => Promise<void>;
9
10
  stopRecording: () => void;
10
11
  toggleRecording: () => Promise<void>;
@@ -4,6 +4,7 @@ export declare const useVoiceStream: <TResult = unknown>(path: string, options?:
4
4
  close: () => void;
5
5
  endTurn: () => void;
6
6
  sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
7
+ simulateDisconnect: () => void;
7
8
  call: import("..").VoiceCallLifecycleState | null;
8
9
  sessionMetadata: Record<string, unknown> | null;
9
10
  sessionId: string | null;
@@ -60,6 +60,7 @@ export type VoiceReconnectProofRoutesOptions = Omit<VoiceReconnectProofOptions,
60
60
  getSessions?: () => readonly VoiceSessionRecord[] | Promise<readonly VoiceSessionRecord[]>;
61
61
  getSnapshots?: () => readonly VoiceReconnectContractSnapshot[] | Promise<readonly VoiceReconnectContractSnapshot[]>;
62
62
  headers?: HeadersInit;
63
+ maxCollectedSnapshots?: number;
63
64
  name?: string;
64
65
  path?: string;
65
66
  store?: VoiceSessionStore;
@@ -4760,6 +4760,7 @@ var NOOP_CONNECTION = {
4760
4760
  getSessionId: () => "",
4761
4761
  send: noop,
4762
4762
  sendAudio: noop,
4763
+ simulateDisconnect: noop,
4763
4764
  start: () => {},
4764
4765
  subscribe: noopUnsubscribe
4765
4766
  };
@@ -4984,6 +4985,11 @@ var createVoiceConnection = (path, options = {}) => {
4984
4985
  state.isConnected = false;
4985
4986
  listeners.clear();
4986
4987
  };
4988
+ const simulateDisconnect = () => {
4989
+ if (state.ws?.readyState === WS_OPEN) {
4990
+ state.ws.close(4000, "absolutejs-voice-reconnect-proof");
4991
+ }
4992
+ };
4987
4993
  const subscribe = (callback) => {
4988
4994
  listeners.add(callback);
4989
4995
  return () => {
@@ -5000,6 +5006,7 @@ var createVoiceConnection = (path, options = {}) => {
5000
5006
  getSessionId: () => state.sessionId,
5001
5007
  send,
5002
5008
  sendAudio,
5009
+ simulateDisconnect,
5003
5010
  start,
5004
5011
  subscribe
5005
5012
  };
@@ -5283,6 +5290,9 @@ var createVoiceStream = (path, options = {}) => {
5283
5290
  sendAudio(audio) {
5284
5291
  connection.sendAudio(audio);
5285
5292
  },
5293
+ simulateDisconnect() {
5294
+ connection.simulateDisconnect();
5295
+ },
5286
5296
  subscribe(subscriber) {
5287
5297
  subscribers.add(subscriber);
5288
5298
  return () => {
@@ -7199,6 +7209,7 @@ var createVoiceController = (path, options = {}) => {
7199
7209
  return state.reconnect;
7200
7210
  },
7201
7211
  sendAudio: (audio) => stream.sendAudio(audio),
7212
+ simulateDisconnect: () => stream.simulateDisconnect(),
7202
7213
  get sessionId() {
7203
7214
  return state.sessionId;
7204
7215
  },
@@ -2913,6 +2913,7 @@ var NOOP_CONNECTION = {
2913
2913
  getSessionId: () => "",
2914
2914
  send: noop,
2915
2915
  sendAudio: noop,
2916
+ simulateDisconnect: noop,
2916
2917
  start: () => {},
2917
2918
  subscribe: noopUnsubscribe
2918
2919
  };
@@ -3137,6 +3138,11 @@ var createVoiceConnection = (path, options = {}) => {
3137
3138
  state.isConnected = false;
3138
3139
  listeners.clear();
3139
3140
  };
3141
+ const simulateDisconnect = () => {
3142
+ if (state.ws?.readyState === WS_OPEN) {
3143
+ state.ws.close(4000, "absolutejs-voice-reconnect-proof");
3144
+ }
3145
+ };
3140
3146
  const subscribe = (callback) => {
3141
3147
  listeners.add(callback);
3142
3148
  return () => {
@@ -3153,6 +3159,7 @@ var createVoiceConnection = (path, options = {}) => {
3153
3159
  getSessionId: () => state.sessionId,
3154
3160
  send,
3155
3161
  sendAudio,
3162
+ simulateDisconnect,
3156
3163
  start,
3157
3164
  subscribe
3158
3165
  };
@@ -3436,6 +3443,9 @@ var createVoiceStream = (path, options = {}) => {
3436
3443
  sendAudio(audio) {
3437
3444
  connection.sendAudio(audio);
3438
3445
  },
3446
+ simulateDisconnect() {
3447
+ connection.simulateDisconnect();
3448
+ },
3439
3449
  subscribe(subscriber) {
3440
3450
  subscribers.add(subscriber);
3441
3451
  return () => {
@@ -3907,6 +3917,7 @@ var createVoiceController = (path, options = {}) => {
3907
3917
  return state.reconnect;
3908
3918
  },
3909
3919
  sendAudio: (audio) => stream.sendAudio(audio),
3920
+ simulateDisconnect: () => stream.simulateDisconnect(),
3910
3921
  get sessionId() {
3911
3922
  return state.sessionId;
3912
3923
  },
package/dist/types.d.ts CHANGED
@@ -969,6 +969,7 @@ export type VoiceStream<TResult = unknown> = {
969
969
  partial: string;
970
970
  reconnect: VoiceReconnectClientState;
971
971
  sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
972
+ simulateDisconnect: () => void;
972
973
  sessionId: string | null;
973
974
  sessionMetadata: Record<string, unknown> | null;
974
975
  scenarioId: string | null;
@@ -1041,6 +1042,7 @@ export type VoiceController<TResult = unknown> = {
1041
1042
  reconnect: VoiceReconnectClientState;
1042
1043
  recordingError: string | null;
1043
1044
  sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
1045
+ simulateDisconnect: () => void;
1044
1046
  sessionId: string | null;
1045
1047
  sessionMetadata: Record<string, unknown> | null;
1046
1048
  scenarioId: string | null;
package/dist/vue/index.js CHANGED
@@ -10035,6 +10035,7 @@ var NOOP_CONNECTION = {
10035
10035
  getSessionId: () => "",
10036
10036
  send: noop,
10037
10037
  sendAudio: noop,
10038
+ simulateDisconnect: noop,
10038
10039
  start: () => {},
10039
10040
  subscribe: noopUnsubscribe
10040
10041
  };
@@ -10259,6 +10260,11 @@ var createVoiceConnection = (path, options = {}) => {
10259
10260
  state.isConnected = false;
10260
10261
  listeners.clear();
10261
10262
  };
10263
+ const simulateDisconnect = () => {
10264
+ if (state.ws?.readyState === WS_OPEN) {
10265
+ state.ws.close(4000, "absolutejs-voice-reconnect-proof");
10266
+ }
10267
+ };
10262
10268
  const subscribe = (callback) => {
10263
10269
  listeners.add(callback);
10264
10270
  return () => {
@@ -10275,6 +10281,7 @@ var createVoiceConnection = (path, options = {}) => {
10275
10281
  getSessionId: () => state.sessionId,
10276
10282
  send,
10277
10283
  sendAudio,
10284
+ simulateDisconnect,
10278
10285
  start,
10279
10286
  subscribe
10280
10287
  };
@@ -10558,6 +10565,9 @@ var createVoiceStream = (path, options = {}) => {
10558
10565
  sendAudio(audio) {
10559
10566
  connection.sendAudio(audio);
10560
10567
  },
10568
+ simulateDisconnect() {
10569
+ connection.simulateDisconnect();
10570
+ },
10561
10571
  subscribe(subscriber) {
10562
10572
  subscribers.add(subscriber);
10563
10573
  return () => {
@@ -10613,6 +10623,7 @@ function useVoiceStream(path, options = {}) {
10613
10623
  partial,
10614
10624
  reconnect,
10615
10625
  sendAudio: (audio) => stream.sendAudio(audio),
10626
+ simulateDisconnect: () => stream.simulateDisconnect(),
10616
10627
  sessionId,
10617
10628
  sessionMetadata,
10618
10629
  status,
@@ -11226,6 +11237,7 @@ var createVoiceController = (path, options = {}) => {
11226
11237
  return state.reconnect;
11227
11238
  },
11228
11239
  sendAudio: (audio) => stream.sendAudio(audio),
11240
+ simulateDisconnect: () => stream.simulateDisconnect(),
11229
11241
  get sessionId() {
11230
11242
  return state.sessionId;
11231
11243
  },
@@ -11315,6 +11327,7 @@ function useVoiceController(path, options = {}) {
11315
11327
  reconnect,
11316
11328
  recordingError,
11317
11329
  sendAudio: (audio) => controller.sendAudio(audio),
11330
+ simulateDisconnect: () => controller.simulateDisconnect(),
11318
11331
  sessionId,
11319
11332
  startRecording: () => controller.startRecording(),
11320
11333
  status,
@@ -22,6 +22,7 @@ export declare function useVoiceController<TResult = unknown>(path: string, opti
22
22
  reconnect: import("vue").ShallowRef<import("..").VoiceReconnectClientState, import("..").VoiceReconnectClientState>;
23
23
  recordingError: import("vue").Ref<string | null, string | null>;
24
24
  sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
25
+ simulateDisconnect: () => void;
25
26
  sessionId: import("vue").Ref<string | null, string | null>;
26
27
  startRecording: () => Promise<void>;
27
28
  status: import("vue").Ref<import("..").VoiceSessionStatus | "idle", import("..").VoiceSessionStatus | "idle">;
@@ -21,6 +21,7 @@ export declare function useVoiceStream<TResult = unknown>(path: string, options?
21
21
  partial: import("vue").Ref<string, string>;
22
22
  reconnect: import("vue").ShallowRef<import("..").VoiceReconnectClientState, import("..").VoiceReconnectClientState>;
23
23
  sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
24
+ simulateDisconnect: () => void;
24
25
  sessionId: import("vue").Ref<string | null, string | null>;
25
26
  sessionMetadata: import("vue").ShallowRef<Record<string, unknown> | null, Record<string, unknown> | null>;
26
27
  status: import("vue").Ref<import("..").VoiceSessionStatus | "idle", import("..").VoiceSessionStatus | "idle">;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@absolutejs/voice",
3
- "version": "0.0.22-beta.444",
3
+ "version": "0.0.22-beta.446",
4
4
  "description": "Voice primitives and Elysia plugin for AbsoluteJS",
5
5
  "repository": {
6
6
  "type": "git",