@absolutejs/voice 0.0.22-beta.9 → 0.0.22-beta.90

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.
Files changed (114) hide show
  1. package/README.md +205 -0
  2. package/dist/agent.d.ts +2 -0
  3. package/dist/angular/index.d.ts +6 -0
  4. package/dist/angular/index.js +833 -43
  5. package/dist/angular/voice-app-kit-status.service.d.ts +12 -0
  6. package/dist/angular/voice-ops-status.component.d.ts +15 -0
  7. package/dist/angular/voice-provider-capabilities.service.d.ts +12 -0
  8. package/dist/angular/voice-provider-status.service.d.ts +12 -0
  9. package/dist/angular/voice-routing-status.service.d.ts +11 -0
  10. package/dist/angular/voice-stream.service.d.ts +2 -0
  11. package/dist/angular/voice-turn-quality.service.d.ts +12 -0
  12. package/dist/angular/voice-workflow-status.service.d.ts +12 -0
  13. package/dist/appKit.d.ts +98 -0
  14. package/dist/assistantHealth.d.ts +81 -0
  15. package/dist/client/actions.d.ts +22 -0
  16. package/dist/client/appKitStatus.d.ts +19 -0
  17. package/dist/client/connection.d.ts +3 -0
  18. package/dist/client/htmxBootstrap.js +44 -2
  19. package/dist/client/index.d.ts +26 -0
  20. package/dist/client/index.js +1290 -2
  21. package/dist/client/opsStatusWidget.d.ts +40 -0
  22. package/dist/client/providerCapabilities.d.ts +19 -0
  23. package/dist/client/providerCapabilitiesWidget.d.ts +32 -0
  24. package/dist/client/providerSimulationControls.d.ts +33 -0
  25. package/dist/client/providerSimulationControlsWidget.d.ts +20 -0
  26. package/dist/client/providerStatus.d.ts +19 -0
  27. package/dist/client/providerStatusWidget.d.ts +32 -0
  28. package/dist/client/routingStatus.d.ts +19 -0
  29. package/dist/client/routingStatusWidget.d.ts +28 -0
  30. package/dist/client/turnQuality.d.ts +19 -0
  31. package/dist/client/turnQualityWidget.d.ts +32 -0
  32. package/dist/client/workflowStatus.d.ts +19 -0
  33. package/dist/diagnosticsRoutes.d.ts +44 -0
  34. package/dist/evalRoutes.d.ts +213 -0
  35. package/dist/handoff.d.ts +54 -0
  36. package/dist/handoffHealth.d.ts +94 -0
  37. package/dist/index.d.ts +62 -7
  38. package/dist/index.js +10382 -2574
  39. package/dist/modelAdapters.d.ts +75 -0
  40. package/dist/openaiTTS.d.ts +18 -0
  41. package/dist/opsConsoleRoutes.d.ts +77 -0
  42. package/dist/opsWebhook.d.ts +126 -0
  43. package/dist/outcomeContract.d.ts +112 -0
  44. package/dist/postgresStore.d.ts +2 -0
  45. package/dist/productionReadiness.d.ts +111 -0
  46. package/dist/providerAdapters.d.ts +48 -0
  47. package/dist/providerCapabilities.d.ts +92 -0
  48. package/dist/providerHealth.d.ts +79 -0
  49. package/dist/qualityRoutes.d.ts +76 -0
  50. package/dist/queue.d.ts +61 -0
  51. package/dist/react/VoiceOpsStatus.d.ts +6 -0
  52. package/dist/react/VoiceProviderCapabilities.d.ts +6 -0
  53. package/dist/react/VoiceProviderSimulationControls.d.ts +5 -0
  54. package/dist/react/VoiceProviderStatus.d.ts +6 -0
  55. package/dist/react/VoiceRoutingStatus.d.ts +6 -0
  56. package/dist/react/VoiceTurnQuality.d.ts +6 -0
  57. package/dist/react/index.d.ts +13 -0
  58. package/dist/react/index.js +1884 -11
  59. package/dist/react/useVoiceAppKitStatus.d.ts +8 -0
  60. package/dist/react/useVoiceController.d.ts +2 -0
  61. package/dist/react/useVoiceProviderCapabilities.d.ts +8 -0
  62. package/dist/react/useVoiceProviderSimulationControls.d.ts +10 -0
  63. package/dist/react/useVoiceProviderStatus.d.ts +8 -0
  64. package/dist/react/useVoiceRoutingStatus.d.ts +8 -0
  65. package/dist/react/useVoiceStream.d.ts +2 -0
  66. package/dist/react/useVoiceTurnQuality.d.ts +8 -0
  67. package/dist/react/useVoiceWorkflowStatus.d.ts +8 -0
  68. package/dist/resilienceRoutes.d.ts +142 -0
  69. package/dist/sessionReplay.d.ts +175 -0
  70. package/dist/sqliteStore.d.ts +2 -0
  71. package/dist/svelte/createVoiceAppKitStatus.d.ts +8 -0
  72. package/dist/svelte/createVoiceOpsStatus.d.ts +9 -0
  73. package/dist/svelte/createVoiceProviderCapabilities.d.ts +10 -0
  74. package/dist/svelte/createVoiceProviderSimulationControls.d.ts +11 -0
  75. package/dist/svelte/createVoiceProviderStatus.d.ts +10 -0
  76. package/dist/svelte/createVoiceRoutingStatus.d.ts +10 -0
  77. package/dist/svelte/createVoiceTurnQuality.d.ts +10 -0
  78. package/dist/svelte/createVoiceWorkflowStatus.d.ts +8 -0
  79. package/dist/svelte/index.d.ts +8 -0
  80. package/dist/svelte/index.js +1330 -3
  81. package/dist/telephony/contract.d.ts +61 -0
  82. package/dist/telephony/matrix.d.ts +97 -0
  83. package/dist/telephony/plivo.d.ts +254 -0
  84. package/dist/telephony/telnyx.d.ts +247 -0
  85. package/dist/telephony/twilio.d.ts +132 -0
  86. package/dist/telephonyOutcome.d.ts +201 -0
  87. package/dist/testing/index.d.ts +2 -0
  88. package/dist/testing/index.js +2543 -14
  89. package/dist/testing/ioProviderSimulator.d.ts +41 -0
  90. package/dist/testing/providerSimulator.d.ts +44 -0
  91. package/dist/toolContract.d.ts +130 -0
  92. package/dist/toolRuntime.d.ts +50 -0
  93. package/dist/trace.d.ts +1 -1
  94. package/dist/traceTimeline.d.ts +93 -0
  95. package/dist/turnQuality.d.ts +94 -0
  96. package/dist/types.d.ts +84 -2
  97. package/dist/vue/VoiceOpsStatus.d.ts +30 -0
  98. package/dist/vue/VoiceProviderCapabilities.d.ts +51 -0
  99. package/dist/vue/VoiceProviderSimulationControls.d.ts +88 -0
  100. package/dist/vue/VoiceProviderStatus.d.ts +51 -0
  101. package/dist/vue/VoiceRoutingStatus.d.ts +51 -0
  102. package/dist/vue/VoiceTurnQuality.d.ts +51 -0
  103. package/dist/vue/index.d.ts +13 -0
  104. package/dist/vue/index.js +1934 -25
  105. package/dist/vue/useVoiceAppKitStatus.d.ts +9 -0
  106. package/dist/vue/useVoiceProviderCapabilities.d.ts +9 -0
  107. package/dist/vue/useVoiceProviderSimulationControls.d.ts +24 -0
  108. package/dist/vue/useVoiceProviderStatus.d.ts +9 -0
  109. package/dist/vue/useVoiceRoutingStatus.d.ts +8 -0
  110. package/dist/vue/useVoiceStream.d.ts +2 -0
  111. package/dist/vue/useVoiceTurnQuality.d.ts +9 -0
  112. package/dist/vue/useVoiceWorkflowStatus.d.ts +9 -0
  113. package/dist/workflowContract.d.ts +91 -0
  114. package/package.json +1 -1
@@ -69,9 +69,133 @@ var __decorateElement = (array, flags, name, decorators, target, extra) => {
69
69
  return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
70
70
  };
71
71
 
72
- // src/angular/voice-stream.service.ts
72
+ // src/angular/voice-app-kit-status.service.ts
73
73
  import { computed, Injectable, signal } from "@angular/core";
74
74
 
75
+ // src/client/appKitStatus.ts
76
+ var fetchVoiceAppKitStatus = async (path = "/app-kit/status", options = {}) => {
77
+ const fetchImpl = options.fetch ?? globalThis.fetch;
78
+ const response = await fetchImpl(path);
79
+ if (!response.ok) {
80
+ throw new Error(`Voice app kit status failed: HTTP ${response.status}`);
81
+ }
82
+ return await response.json();
83
+ };
84
+ var createVoiceAppKitStatusStore = (path = "/app-kit/status", options = {}) => {
85
+ const listeners = new Set;
86
+ let closed = false;
87
+ let timer;
88
+ let snapshot = {
89
+ error: null,
90
+ isLoading: false
91
+ };
92
+ const emit = () => {
93
+ for (const listener of listeners) {
94
+ listener();
95
+ }
96
+ };
97
+ const refresh = async () => {
98
+ if (closed) {
99
+ return snapshot.report;
100
+ }
101
+ snapshot = {
102
+ ...snapshot,
103
+ error: null,
104
+ isLoading: true
105
+ };
106
+ emit();
107
+ try {
108
+ const report = await fetchVoiceAppKitStatus(path, options);
109
+ snapshot = {
110
+ error: null,
111
+ isLoading: false,
112
+ report,
113
+ updatedAt: Date.now()
114
+ };
115
+ emit();
116
+ return report;
117
+ } catch (error) {
118
+ snapshot = {
119
+ ...snapshot,
120
+ error: error instanceof Error ? error.message : String(error),
121
+ isLoading: false
122
+ };
123
+ emit();
124
+ throw error;
125
+ }
126
+ };
127
+ const close = () => {
128
+ closed = true;
129
+ if (timer) {
130
+ clearInterval(timer);
131
+ timer = undefined;
132
+ }
133
+ listeners.clear();
134
+ };
135
+ if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
136
+ timer = setInterval(() => {
137
+ refresh().catch(() => {});
138
+ }, options.intervalMs);
139
+ }
140
+ return {
141
+ close,
142
+ getServerSnapshot: () => snapshot,
143
+ getSnapshot: () => snapshot,
144
+ refresh,
145
+ subscribe: (listener) => {
146
+ listeners.add(listener);
147
+ return () => {
148
+ listeners.delete(listener);
149
+ };
150
+ }
151
+ };
152
+ };
153
+
154
+ // src/angular/voice-app-kit-status.service.ts
155
+ var _dec = [
156
+ Injectable({ providedIn: "root" })
157
+ ];
158
+ var _init = __decoratorStart(undefined);
159
+
160
+ class VoiceAppKitStatusService {
161
+ connect(path = "/app-kit/status", options = {}) {
162
+ const store = createVoiceAppKitStatusStore(path, options);
163
+ const errorSignal = signal(null);
164
+ const isLoadingSignal = signal(false);
165
+ const reportSignal = signal(undefined);
166
+ const updatedAtSignal = signal(undefined);
167
+ const sync = () => {
168
+ const snapshot = store.getSnapshot();
169
+ errorSignal.set(snapshot.error);
170
+ isLoadingSignal.set(snapshot.isLoading);
171
+ reportSignal.set(snapshot.report);
172
+ updatedAtSignal.set(snapshot.updatedAt);
173
+ };
174
+ const unsubscribe = store.subscribe(sync);
175
+ sync();
176
+ if (typeof window !== "undefined") {
177
+ store.refresh().catch(() => {});
178
+ }
179
+ return {
180
+ close: () => {
181
+ unsubscribe();
182
+ store.close();
183
+ },
184
+ error: computed(() => errorSignal()),
185
+ isLoading: computed(() => isLoadingSignal()),
186
+ refresh: store.refresh,
187
+ report: computed(() => reportSignal()),
188
+ updatedAt: computed(() => updatedAtSignal())
189
+ };
190
+ }
191
+ }
192
+ VoiceAppKitStatusService = __decorateElement(_init, 0, "VoiceAppKitStatusService", _dec, VoiceAppKitStatusService);
193
+ __runInitializers(_init, 1, VoiceAppKitStatusService);
194
+ __decoratorMetadata(_init, VoiceAppKitStatusService);
195
+ let _VoiceAppKitStatusService = VoiceAppKitStatusService;
196
+ // src/angular/voice-stream.service.ts
197
+ import { computed as computed2, Injectable as Injectable2, signal as signal2 } from "@angular/core";
198
+
75
199
  // src/client/actions.ts
76
200
  var normalizeErrorMessage = (value) => {
77
201
  if (typeof value === "string" && value.trim()) {
@@ -120,6 +244,12 @@ var serverMessageToAction = (message) => {
120
244
  sessionId: message.sessionId,
121
245
  type: "complete"
122
246
  };
247
+ case "call_lifecycle":
248
+ return {
249
+ event: message.event,
250
+ sessionId: message.sessionId,
251
+ type: "call_lifecycle"
252
+ };
123
253
  case "error":
124
254
  return {
125
255
  message: normalizeErrorMessage(message.message),
@@ -163,7 +293,7 @@ var DEFAULT_SCENARIO_QUERY_PARAM = "scenarioId";
163
293
  var noop = () => {};
164
294
  var noopUnsubscribe = () => noop;
165
295
  var NOOP_CONNECTION = {
166
- start: () => {},
296
+ callControl: noop,
167
297
  close: noop,
168
298
  endTurn: noop,
169
299
  getReadyState: () => WS_CLOSED,
@@ -171,6 +301,7 @@ var NOOP_CONNECTION = {
171
301
  getSessionId: () => "",
172
302
  send: noop,
173
303
  sendAudio: noop,
304
+ start: () => {},
174
305
  subscribe: noopUnsubscribe
175
306
  };
176
307
  var createSessionId = () => crypto.randomUUID();
@@ -192,6 +323,7 @@ var isVoiceServerMessage = (value) => {
192
323
  switch (value.type) {
193
324
  case "audio":
194
325
  case "assistant":
326
+ case "call_lifecycle":
195
327
  case "complete":
196
328
  case "error":
197
329
  case "final":
@@ -332,6 +464,12 @@ var createVoiceConnection = (path, options = {}) => {
332
464
  const endTurn = () => {
333
465
  send({ type: "end_turn" });
334
466
  };
467
+ const callControl = (message) => {
468
+ send({
469
+ ...message,
470
+ type: "call_control"
471
+ });
472
+ };
335
473
  const close = () => {
336
474
  clearTimers();
337
475
  if (state.ws) {
@@ -349,7 +487,7 @@ var createVoiceConnection = (path, options = {}) => {
349
487
  };
350
488
  connect();
351
489
  return {
352
- start,
490
+ callControl,
353
491
  close,
354
492
  endTurn,
355
493
  getReadyState: () => state.ws?.readyState ?? WS_CLOSED,
@@ -357,6 +495,7 @@ var createVoiceConnection = (path, options = {}) => {
357
495
  getSessionId: () => state.sessionId,
358
496
  send,
359
497
  sendAudio,
498
+ start,
360
499
  subscribe
361
500
  };
362
501
  };
@@ -365,6 +504,7 @@ var createVoiceConnection = (path, options = {}) => {
365
504
  var createInitialState = () => ({
366
505
  assistantAudio: [],
367
506
  assistantTexts: [],
507
+ call: null,
368
508
  error: null,
369
509
  isConnected: false,
370
510
  scenarioId: null,
@@ -408,6 +548,20 @@ var createVoiceStreamStore = () => {
408
548
  status: "completed"
409
549
  };
410
550
  break;
551
+ case "call_lifecycle":
552
+ state = {
553
+ ...state,
554
+ call: {
555
+ ...state.call,
556
+ disposition: action.event.type === "end" ? action.event.disposition : state.call?.disposition,
557
+ endedAt: action.event.type === "end" ? action.event.at : state.call?.endedAt,
558
+ events: [...state.call?.events ?? [], action.event],
559
+ lastEventAt: action.event.at,
560
+ startedAt: state.call?.startedAt ?? action.event.at
561
+ },
562
+ sessionId: action.sessionId
563
+ };
564
+ break;
411
565
  case "connected":
412
566
  state = {
413
567
  ...state,
@@ -494,6 +648,9 @@ var createVoiceStream = (path, options = {}) => {
494
648
  }
495
649
  });
496
650
  return {
651
+ callControl(message) {
652
+ connection.callControl(message);
653
+ },
497
654
  close() {
498
655
  unsubscribeConnection();
499
656
  connection.close();
@@ -537,6 +694,9 @@ var createVoiceStream = (path, options = {}) => {
537
694
  get assistantAudio() {
538
695
  return store.getSnapshot().assistantAudio;
539
696
  },
697
+ get call() {
698
+ return store.getSnapshot().call;
699
+ },
540
700
  sendAudio(audio) {
541
701
  connection.sendAudio(audio);
542
702
  },
@@ -551,24 +711,26 @@ var createVoiceStream = (path, options = {}) => {
551
711
 
552
712
  // src/angular/voice-stream.service.ts
553
713
  var _dec = [
554
- Injectable({ providedIn: "root" })
714
+ Injectable2({ providedIn: "root" })
555
715
  ];
556
716
  var _init = __decoratorStart(undefined);
557
717
 
558
718
  class VoiceStreamService {
559
719
  connect(path, options = {}) {
560
720
  const stream = createVoiceStream(path, options);
561
- const assistantAudioSignal = signal([]);
562
- const assistantTextsSignal = signal([]);
563
- const errorSignal = signal(null);
564
- const isConnectedSignal = signal(false);
565
- const partialSignal = signal("");
566
- const sessionIdSignal = signal(stream.sessionId);
567
- const statusSignal = signal(stream.status);
568
- const turnsSignal = signal([]);
721
+ const assistantAudioSignal = signal2([]);
722
+ const assistantTextsSignal = signal2([]);
723
+ const callSignal = signal2(null);
724
+ const errorSignal = signal2(null);
725
+ const isConnectedSignal = signal2(false);
726
+ const partialSignal = signal2("");
727
+ const sessionIdSignal = signal2(stream.sessionId);
728
+ const statusSignal = signal2(stream.status);
729
+ const turnsSignal = signal2([]);
569
730
  const sync = () => {
570
731
  assistantAudioSignal.set([...stream.assistantAudio]);
571
732
  assistantTextsSignal.set([...stream.assistantTexts]);
733
+ callSignal.set(stream.call);
572
734
  errorSignal.set(stream.error);
573
735
  isConnectedSignal.set(stream.isConnected);
574
736
  partialSignal.set(stream.partial);
@@ -579,20 +741,22 @@ class VoiceStreamService {
579
741
  const unsubscribe = stream.subscribe(sync);
580
742
  sync();
581
743
  return {
582
- assistantAudio: computed(() => assistantAudioSignal()),
583
- assistantTexts: computed(() => assistantTextsSignal()),
744
+ assistantAudio: computed2(() => assistantAudioSignal()),
745
+ assistantTexts: computed2(() => assistantTextsSignal()),
746
+ call: computed2(() => callSignal()),
747
+ callControl: (message) => stream.callControl(message),
584
748
  close: () => {
585
749
  unsubscribe();
586
750
  stream.close();
587
751
  },
588
752
  endTurn: () => stream.endTurn(),
589
- error: computed(() => errorSignal()),
590
- isConnected: computed(() => isConnectedSignal()),
591
- partial: computed(() => partialSignal()),
753
+ error: computed2(() => errorSignal()),
754
+ isConnected: computed2(() => isConnectedSignal()),
755
+ partial: computed2(() => partialSignal()),
592
756
  sendAudio: (audio) => stream.sendAudio(audio),
593
- sessionId: computed(() => sessionIdSignal()),
594
- status: computed(() => statusSignal()),
595
- turns: computed(() => turnsSignal())
757
+ sessionId: computed2(() => sessionIdSignal()),
758
+ status: computed2(() => statusSignal()),
759
+ turns: computed2(() => turnsSignal())
596
760
  };
597
761
  }
598
762
  }
@@ -601,7 +765,7 @@ __runInitializers(_init, 1, VoiceStreamService);
601
765
  __decoratorMetadata(_init, VoiceStreamService);
602
766
  let _VoiceStreamService = VoiceStreamService;
603
767
  // src/angular/voice-controller.service.ts
604
- import { computed as computed2, Injectable as Injectable2, signal as signal2 } from "@angular/core";
768
+ import { computed as computed3, Injectable as Injectable3, signal as signal3 } from "@angular/core";
605
769
 
606
770
  // src/client/htmx.ts
607
771
  var DEFAULT_EVENT_NAME = "voice-refresh";
@@ -1065,6 +1229,7 @@ var resolveVoiceRuntimePreset = (name = "default") => {
1065
1229
  var createInitialState2 = (stream) => ({
1066
1230
  assistantAudio: [...stream.assistantAudio],
1067
1231
  assistantTexts: [...stream.assistantTexts],
1232
+ call: stream.call,
1068
1233
  error: stream.error,
1069
1234
  isConnected: stream.isConnected,
1070
1235
  isRecording: false,
@@ -1094,6 +1259,7 @@ var createVoiceController = (path, options = {}) => {
1094
1259
  ...state,
1095
1260
  assistantAudio: [...stream.assistantAudio],
1096
1261
  assistantTexts: [...stream.assistantTexts],
1262
+ call: stream.call,
1097
1263
  error: stream.error,
1098
1264
  isConnected: stream.isConnected,
1099
1265
  partial: stream.partial,
@@ -1171,6 +1337,7 @@ var createVoiceController = (path, options = {}) => {
1171
1337
  bindHTMX(bindingOptions) {
1172
1338
  return bindVoiceHTMX(stream, bindingOptions);
1173
1339
  },
1340
+ callControl: (message) => stream.callControl(message),
1174
1341
  close,
1175
1342
  endTurn: () => stream.endTurn(),
1176
1343
  get error() {
@@ -1223,29 +1390,32 @@ var createVoiceController = (path, options = {}) => {
1223
1390
  },
1224
1391
  get assistantAudio() {
1225
1392
  return state.assistantAudio;
1393
+ },
1394
+ get call() {
1395
+ return state.call;
1226
1396
  }
1227
1397
  };
1228
1398
  };
1229
1399
 
1230
1400
  // src/angular/voice-controller.service.ts
1231
1401
  var _dec = [
1232
- Injectable2({ providedIn: "root" })
1402
+ Injectable3({ providedIn: "root" })
1233
1403
  ];
1234
1404
  var _init = __decoratorStart(undefined);
1235
1405
 
1236
1406
  class VoiceControllerService {
1237
1407
  connect(path, options = {}) {
1238
1408
  const controller = createVoiceController(path, options);
1239
- const assistantAudioSignal = signal2([]);
1240
- const assistantTextsSignal = signal2([]);
1241
- const errorSignal = signal2(null);
1242
- const isConnectedSignal = signal2(false);
1243
- const isRecordingSignal = signal2(false);
1244
- const partialSignal = signal2("");
1245
- const recordingErrorSignal = signal2(null);
1246
- const sessionIdSignal = signal2(controller.sessionId);
1247
- const statusSignal = signal2(controller.status);
1248
- const turnsSignal = signal2([]);
1409
+ const assistantAudioSignal = signal3([]);
1410
+ const assistantTextsSignal = signal3([]);
1411
+ const errorSignal = signal3(null);
1412
+ const isConnectedSignal = signal3(false);
1413
+ const isRecordingSignal = signal3(false);
1414
+ const partialSignal = signal3("");
1415
+ const recordingErrorSignal = signal3(null);
1416
+ const sessionIdSignal = signal3(controller.sessionId);
1417
+ const statusSignal = signal3(controller.status);
1418
+ const turnsSignal = signal3([]);
1249
1419
  const sync = () => {
1250
1420
  assistantAudioSignal.set([...controller.assistantAudio]);
1251
1421
  assistantTextsSignal.set([...controller.assistantTexts]);
@@ -1261,26 +1431,26 @@ class VoiceControllerService {
1261
1431
  const unsubscribe = controller.subscribe(sync);
1262
1432
  sync();
1263
1433
  return {
1264
- assistantAudio: computed2(() => assistantAudioSignal()),
1265
- assistantTexts: computed2(() => assistantTextsSignal()),
1434
+ assistantAudio: computed3(() => assistantAudioSignal()),
1435
+ assistantTexts: computed3(() => assistantTextsSignal()),
1266
1436
  bindHTMX: controller.bindHTMX,
1267
1437
  close: () => {
1268
1438
  unsubscribe();
1269
1439
  controller.close();
1270
1440
  },
1271
1441
  endTurn: () => controller.endTurn(),
1272
- error: computed2(() => errorSignal()),
1273
- isConnected: computed2(() => isConnectedSignal()),
1274
- isRecording: computed2(() => isRecordingSignal()),
1275
- partial: computed2(() => partialSignal()),
1276
- recordingError: computed2(() => recordingErrorSignal()),
1442
+ error: computed3(() => errorSignal()),
1443
+ isConnected: computed3(() => isConnectedSignal()),
1444
+ isRecording: computed3(() => isRecordingSignal()),
1445
+ partial: computed3(() => partialSignal()),
1446
+ recordingError: computed3(() => recordingErrorSignal()),
1277
1447
  sendAudio: (audio) => controller.sendAudio(audio),
1278
- sessionId: computed2(() => sessionIdSignal()),
1448
+ sessionId: computed3(() => sessionIdSignal()),
1279
1449
  startRecording: () => controller.startRecording(),
1280
- status: computed2(() => statusSignal()),
1450
+ status: computed3(() => statusSignal()),
1281
1451
  stopRecording: () => controller.stopRecording(),
1282
1452
  toggleRecording: () => controller.toggleRecording(),
1283
- turns: computed2(() => turnsSignal())
1453
+ turns: computed3(() => turnsSignal())
1284
1454
  };
1285
1455
  }
1286
1456
  }
@@ -1288,7 +1458,627 @@ VoiceControllerService = __decorateElement(_init, 0, "VoiceControllerService", _
1288
1458
  __runInitializers(_init, 1, VoiceControllerService);
1289
1459
  __decoratorMetadata(_init, VoiceControllerService);
1290
1460
  let _VoiceControllerService = VoiceControllerService;
1461
+ // src/angular/voice-provider-capabilities.service.ts
1462
+ import { computed as computed4, Injectable as Injectable4, signal as signal4 } from "@angular/core";
1463
+
1464
+ // src/client/providerCapabilities.ts
1465
+ var fetchVoiceProviderCapabilities = async (path = "/api/provider-capabilities", options = {}) => {
1466
+ const fetchImpl = options.fetch ?? globalThis.fetch;
1467
+ const response = await fetchImpl(path);
1468
+ if (!response.ok) {
1469
+ throw new Error(`Voice provider capabilities failed: HTTP ${response.status}`);
1470
+ }
1471
+ return await response.json();
1472
+ };
1473
+ var createVoiceProviderCapabilitiesStore = (path = "/api/provider-capabilities", options = {}) => {
1474
+ const listeners = new Set;
1475
+ let closed = false;
1476
+ let timer;
1477
+ let snapshot = {
1478
+ error: null,
1479
+ isLoading: false
1480
+ };
1481
+ const emit = () => {
1482
+ for (const listener of listeners) {
1483
+ listener();
1484
+ }
1485
+ };
1486
+ const refresh = async () => {
1487
+ if (closed) {
1488
+ return snapshot.report;
1489
+ }
1490
+ snapshot = {
1491
+ ...snapshot,
1492
+ error: null,
1493
+ isLoading: true
1494
+ };
1495
+ emit();
1496
+ try {
1497
+ const report = await fetchVoiceProviderCapabilities(path, options);
1498
+ snapshot = {
1499
+ error: null,
1500
+ isLoading: false,
1501
+ report,
1502
+ updatedAt: Date.now()
1503
+ };
1504
+ emit();
1505
+ return report;
1506
+ } catch (error) {
1507
+ snapshot = {
1508
+ ...snapshot,
1509
+ error: error instanceof Error ? error.message : String(error),
1510
+ isLoading: false
1511
+ };
1512
+ emit();
1513
+ throw error;
1514
+ }
1515
+ };
1516
+ const close = () => {
1517
+ closed = true;
1518
+ if (timer) {
1519
+ clearInterval(timer);
1520
+ timer = undefined;
1521
+ }
1522
+ listeners.clear();
1523
+ };
1524
+ if (options.intervalMs && options.intervalMs > 0) {
1525
+ timer = setInterval(() => {
1526
+ refresh().catch(() => {});
1527
+ }, options.intervalMs);
1528
+ }
1529
+ return {
1530
+ close,
1531
+ getServerSnapshot: () => snapshot,
1532
+ getSnapshot: () => snapshot,
1533
+ refresh,
1534
+ subscribe: (listener) => {
1535
+ listeners.add(listener);
1536
+ return () => {
1537
+ listeners.delete(listener);
1538
+ };
1539
+ }
1540
+ };
1541
+ };
1542
+
1543
+ // src/angular/voice-provider-capabilities.service.ts
1544
+ var _dec = [
1545
+ Injectable4({ providedIn: "root" })
1546
+ ];
1547
+ var _init = __decoratorStart(undefined);
1548
+
1549
+ class VoiceProviderCapabilitiesService {
1550
+ connect(path = "/api/provider-capabilities", options = {}) {
1551
+ const store = createVoiceProviderCapabilitiesStore(path, options);
1552
+ const errorSignal = signal4(null);
1553
+ const isLoadingSignal = signal4(false);
1554
+ const reportSignal = signal4(undefined);
1555
+ const updatedAtSignal = signal4(undefined);
1556
+ const sync = () => {
1557
+ const snapshot = store.getSnapshot();
1558
+ errorSignal.set(snapshot.error);
1559
+ isLoadingSignal.set(snapshot.isLoading);
1560
+ reportSignal.set(snapshot.report);
1561
+ updatedAtSignal.set(snapshot.updatedAt);
1562
+ };
1563
+ const unsubscribe = store.subscribe(sync);
1564
+ sync();
1565
+ store.refresh().catch(() => {});
1566
+ return {
1567
+ close: () => {
1568
+ unsubscribe();
1569
+ store.close();
1570
+ },
1571
+ error: computed4(() => errorSignal()),
1572
+ isLoading: computed4(() => isLoadingSignal()),
1573
+ refresh: store.refresh,
1574
+ report: computed4(() => reportSignal()),
1575
+ updatedAt: computed4(() => updatedAtSignal())
1576
+ };
1577
+ }
1578
+ }
1579
+ VoiceProviderCapabilitiesService = __decorateElement(_init, 0, "VoiceProviderCapabilitiesService", _dec, VoiceProviderCapabilitiesService);
1580
+ __runInitializers(_init, 1, VoiceProviderCapabilitiesService);
1581
+ __decoratorMetadata(_init, VoiceProviderCapabilitiesService);
1582
+ let _VoiceProviderCapabilitiesService = VoiceProviderCapabilitiesService;
1583
+ // src/angular/voice-provider-status.service.ts
1584
+ import { computed as computed5, Injectable as Injectable5, signal as signal5 } from "@angular/core";
1585
+
1586
+ // src/client/providerStatus.ts
1587
+ var fetchVoiceProviderStatus = async (path = "/api/provider-status", options = {}) => {
1588
+ const fetchImpl = options.fetch ?? globalThis.fetch;
1589
+ const response = await fetchImpl(path);
1590
+ if (!response.ok) {
1591
+ throw new Error(`Voice provider status failed: HTTP ${response.status}`);
1592
+ }
1593
+ return await response.json();
1594
+ };
1595
+ var createVoiceProviderStatusStore = (path = "/api/provider-status", options = {}) => {
1596
+ const listeners = new Set;
1597
+ let closed = false;
1598
+ let timer;
1599
+ let snapshot = {
1600
+ error: null,
1601
+ isLoading: false,
1602
+ providers: []
1603
+ };
1604
+ const emit = () => {
1605
+ for (const listener of listeners) {
1606
+ listener();
1607
+ }
1608
+ };
1609
+ const refresh = async () => {
1610
+ if (closed) {
1611
+ return snapshot.providers;
1612
+ }
1613
+ snapshot = {
1614
+ ...snapshot,
1615
+ error: null,
1616
+ isLoading: true
1617
+ };
1618
+ emit();
1619
+ try {
1620
+ const providers = await fetchVoiceProviderStatus(path, options);
1621
+ snapshot = {
1622
+ error: null,
1623
+ isLoading: false,
1624
+ providers,
1625
+ updatedAt: Date.now()
1626
+ };
1627
+ emit();
1628
+ return providers;
1629
+ } catch (error) {
1630
+ snapshot = {
1631
+ ...snapshot,
1632
+ error: error instanceof Error ? error.message : String(error),
1633
+ isLoading: false
1634
+ };
1635
+ emit();
1636
+ throw error;
1637
+ }
1638
+ };
1639
+ const close = () => {
1640
+ closed = true;
1641
+ if (timer) {
1642
+ clearInterval(timer);
1643
+ timer = undefined;
1644
+ }
1645
+ listeners.clear();
1646
+ };
1647
+ if (options.intervalMs && options.intervalMs > 0) {
1648
+ timer = setInterval(() => {
1649
+ refresh().catch(() => {});
1650
+ }, options.intervalMs);
1651
+ }
1652
+ return {
1653
+ close,
1654
+ getServerSnapshot: () => snapshot,
1655
+ getSnapshot: () => snapshot,
1656
+ refresh,
1657
+ subscribe: (listener) => {
1658
+ listeners.add(listener);
1659
+ return () => {
1660
+ listeners.delete(listener);
1661
+ };
1662
+ }
1663
+ };
1664
+ };
1665
+
1666
+ // src/angular/voice-provider-status.service.ts
1667
+ var _dec = [
1668
+ Injectable5({ providedIn: "root" })
1669
+ ];
1670
+ var _init = __decoratorStart(undefined);
1671
+
1672
+ class VoiceProviderStatusService {
1673
+ connect(path = "/api/provider-status", options = {}) {
1674
+ const store = createVoiceProviderStatusStore(path, options);
1675
+ const errorSignal = signal5(null);
1676
+ const isLoadingSignal = signal5(false);
1677
+ const providersSignal = signal5([]);
1678
+ const updatedAtSignal = signal5(undefined);
1679
+ const sync = () => {
1680
+ const snapshot = store.getSnapshot();
1681
+ errorSignal.set(snapshot.error);
1682
+ isLoadingSignal.set(snapshot.isLoading);
1683
+ providersSignal.set([...snapshot.providers]);
1684
+ updatedAtSignal.set(snapshot.updatedAt);
1685
+ };
1686
+ const unsubscribe = store.subscribe(sync);
1687
+ sync();
1688
+ store.refresh().catch(() => {});
1689
+ return {
1690
+ close: () => {
1691
+ unsubscribe();
1692
+ store.close();
1693
+ },
1694
+ error: computed5(() => errorSignal()),
1695
+ isLoading: computed5(() => isLoadingSignal()),
1696
+ providers: computed5(() => providersSignal()),
1697
+ refresh: store.refresh,
1698
+ updatedAt: computed5(() => updatedAtSignal())
1699
+ };
1700
+ }
1701
+ }
1702
+ VoiceProviderStatusService = __decorateElement(_init, 0, "VoiceProviderStatusService", _dec, VoiceProviderStatusService);
1703
+ __runInitializers(_init, 1, VoiceProviderStatusService);
1704
+ __decoratorMetadata(_init, VoiceProviderStatusService);
1705
+ let _VoiceProviderStatusService = VoiceProviderStatusService;
1706
+ // src/angular/voice-routing-status.service.ts
1707
+ import { Injectable as Injectable6, signal as signal6 } from "@angular/core";
1708
+
1709
+ // src/client/routingStatus.ts
1710
+ var fetchVoiceRoutingStatus = async (path = "/api/routing/latest", options = {}) => {
1711
+ const fetchImpl = options.fetch ?? globalThis.fetch;
1712
+ const response = await fetchImpl(path);
1713
+ if (!response.ok) {
1714
+ throw new Error(`Voice routing status failed: HTTP ${response.status}`);
1715
+ }
1716
+ return await response.json();
1717
+ };
1718
+ var createVoiceRoutingStatusStore = (path = "/api/routing/latest", options = {}) => {
1719
+ const listeners = new Set;
1720
+ let closed = false;
1721
+ let timer;
1722
+ let snapshot = {
1723
+ decision: null,
1724
+ error: null,
1725
+ isLoading: false
1726
+ };
1727
+ const emit = () => {
1728
+ for (const listener of listeners) {
1729
+ listener();
1730
+ }
1731
+ };
1732
+ const refresh = async () => {
1733
+ if (closed) {
1734
+ return snapshot.decision;
1735
+ }
1736
+ snapshot = {
1737
+ ...snapshot,
1738
+ error: null,
1739
+ isLoading: true
1740
+ };
1741
+ emit();
1742
+ try {
1743
+ const decision = await fetchVoiceRoutingStatus(path, options);
1744
+ snapshot = {
1745
+ decision,
1746
+ error: null,
1747
+ isLoading: false,
1748
+ updatedAt: Date.now()
1749
+ };
1750
+ emit();
1751
+ return decision;
1752
+ } catch (error) {
1753
+ snapshot = {
1754
+ ...snapshot,
1755
+ error: error instanceof Error ? error.message : String(error),
1756
+ isLoading: false
1757
+ };
1758
+ emit();
1759
+ throw error;
1760
+ }
1761
+ };
1762
+ const close = () => {
1763
+ closed = true;
1764
+ if (timer) {
1765
+ clearInterval(timer);
1766
+ timer = undefined;
1767
+ }
1768
+ listeners.clear();
1769
+ };
1770
+ if (options.intervalMs && options.intervalMs > 0) {
1771
+ timer = setInterval(() => {
1772
+ refresh().catch(() => {});
1773
+ }, options.intervalMs);
1774
+ }
1775
+ return {
1776
+ close,
1777
+ getServerSnapshot: () => snapshot,
1778
+ getSnapshot: () => snapshot,
1779
+ refresh,
1780
+ subscribe: (listener) => {
1781
+ listeners.add(listener);
1782
+ return () => {
1783
+ listeners.delete(listener);
1784
+ };
1785
+ }
1786
+ };
1787
+ };
1788
+
1789
+ // src/angular/voice-routing-status.service.ts
1790
+ var _dec = [
1791
+ Injectable6({ providedIn: "root" })
1792
+ ];
1793
+ var _init = __decoratorStart(undefined);
1794
+
1795
+ class VoiceRoutingStatusService {
1796
+ connect(path = "/api/routing/latest", options = {}) {
1797
+ const store = createVoiceRoutingStatusStore(path, options);
1798
+ const decisionSignal = signal6(null);
1799
+ const errorSignal = signal6(null);
1800
+ const isLoadingSignal = signal6(false);
1801
+ const updatedAtSignal = signal6(undefined);
1802
+ const sync = () => {
1803
+ const snapshot = store.getSnapshot();
1804
+ decisionSignal.set(snapshot.decision);
1805
+ errorSignal.set(snapshot.error);
1806
+ isLoadingSignal.set(snapshot.isLoading);
1807
+ updatedAtSignal.set(snapshot.updatedAt);
1808
+ };
1809
+ const unsubscribe = store.subscribe(sync);
1810
+ sync();
1811
+ store.refresh().catch(() => {});
1812
+ return {
1813
+ close: () => {
1814
+ unsubscribe();
1815
+ store.close();
1816
+ },
1817
+ decision: decisionSignal.asReadonly(),
1818
+ error: errorSignal.asReadonly(),
1819
+ isLoading: isLoadingSignal.asReadonly(),
1820
+ refresh: store.refresh,
1821
+ updatedAt: updatedAtSignal.asReadonly()
1822
+ };
1823
+ }
1824
+ }
1825
+ VoiceRoutingStatusService = __decorateElement(_init, 0, "VoiceRoutingStatusService", _dec, VoiceRoutingStatusService);
1826
+ __runInitializers(_init, 1, VoiceRoutingStatusService);
1827
+ __decoratorMetadata(_init, VoiceRoutingStatusService);
1828
+ let _VoiceRoutingStatusService = VoiceRoutingStatusService;
1829
+ // src/angular/voice-turn-quality.service.ts
1830
+ import { computed as computed6, Injectable as Injectable7, signal as signal7 } from "@angular/core";
1831
+
1832
+ // src/client/turnQuality.ts
1833
+ var fetchVoiceTurnQuality = async (path = "/api/turn-quality", options = {}) => {
1834
+ const fetchImpl = options.fetch ?? globalThis.fetch;
1835
+ const response = await fetchImpl(path);
1836
+ if (!response.ok) {
1837
+ throw new Error(`Voice turn quality failed: HTTP ${response.status}`);
1838
+ }
1839
+ return await response.json();
1840
+ };
1841
+ var createVoiceTurnQualityStore = (path = "/api/turn-quality", options = {}) => {
1842
+ const listeners = new Set;
1843
+ let closed = false;
1844
+ let timer;
1845
+ let snapshot = {
1846
+ error: null,
1847
+ isLoading: false
1848
+ };
1849
+ const emit = () => {
1850
+ for (const listener of listeners) {
1851
+ listener();
1852
+ }
1853
+ };
1854
+ const refresh = async () => {
1855
+ if (closed) {
1856
+ return snapshot.report;
1857
+ }
1858
+ snapshot = {
1859
+ ...snapshot,
1860
+ error: null,
1861
+ isLoading: true
1862
+ };
1863
+ emit();
1864
+ try {
1865
+ const report = await fetchVoiceTurnQuality(path, options);
1866
+ snapshot = {
1867
+ error: null,
1868
+ isLoading: false,
1869
+ report,
1870
+ updatedAt: Date.now()
1871
+ };
1872
+ emit();
1873
+ return report;
1874
+ } catch (error) {
1875
+ snapshot = {
1876
+ ...snapshot,
1877
+ error: error instanceof Error ? error.message : String(error),
1878
+ isLoading: false
1879
+ };
1880
+ emit();
1881
+ throw error;
1882
+ }
1883
+ };
1884
+ const close = () => {
1885
+ closed = true;
1886
+ if (timer) {
1887
+ clearInterval(timer);
1888
+ timer = undefined;
1889
+ }
1890
+ listeners.clear();
1891
+ };
1892
+ if (options.intervalMs && options.intervalMs > 0) {
1893
+ timer = setInterval(() => {
1894
+ refresh().catch(() => {});
1895
+ }, options.intervalMs);
1896
+ }
1897
+ return {
1898
+ close,
1899
+ getServerSnapshot: () => snapshot,
1900
+ getSnapshot: () => snapshot,
1901
+ refresh,
1902
+ subscribe: (listener) => {
1903
+ listeners.add(listener);
1904
+ return () => {
1905
+ listeners.delete(listener);
1906
+ };
1907
+ }
1908
+ };
1909
+ };
1910
+
1911
+ // src/angular/voice-turn-quality.service.ts
1912
+ var _dec = [
1913
+ Injectable7({ providedIn: "root" })
1914
+ ];
1915
+ var _init = __decoratorStart(undefined);
1916
+
1917
+ class VoiceTurnQualityService {
1918
+ connect(path = "/api/turn-quality", options = {}) {
1919
+ const store = createVoiceTurnQualityStore(path, options);
1920
+ const errorSignal = signal7(null);
1921
+ const isLoadingSignal = signal7(false);
1922
+ const reportSignal = signal7(undefined);
1923
+ const updatedAtSignal = signal7(undefined);
1924
+ const sync = () => {
1925
+ const snapshot = store.getSnapshot();
1926
+ errorSignal.set(snapshot.error);
1927
+ isLoadingSignal.set(snapshot.isLoading);
1928
+ reportSignal.set(snapshot.report);
1929
+ updatedAtSignal.set(snapshot.updatedAt);
1930
+ };
1931
+ const unsubscribe = store.subscribe(sync);
1932
+ sync();
1933
+ store.refresh().catch(() => {});
1934
+ return {
1935
+ close: () => {
1936
+ unsubscribe();
1937
+ store.close();
1938
+ },
1939
+ error: computed6(() => errorSignal()),
1940
+ isLoading: computed6(() => isLoadingSignal()),
1941
+ refresh: store.refresh,
1942
+ report: computed6(() => reportSignal()),
1943
+ updatedAt: computed6(() => updatedAtSignal())
1944
+ };
1945
+ }
1946
+ }
1947
+ VoiceTurnQualityService = __decorateElement(_init, 0, "VoiceTurnQualityService", _dec, VoiceTurnQualityService);
1948
+ __runInitializers(_init, 1, VoiceTurnQualityService);
1949
+ __decoratorMetadata(_init, VoiceTurnQualityService);
1950
+ let _VoiceTurnQualityService = VoiceTurnQualityService;
1951
+ // src/angular/voice-workflow-status.service.ts
1952
+ import { computed as computed7, Injectable as Injectable8, signal as signal8 } from "@angular/core";
1953
+
1954
+ // src/client/workflowStatus.ts
1955
+ var fetchVoiceWorkflowStatus = async (path = "/evals/scenarios/json", options = {}) => {
1956
+ const fetchImpl = options.fetch ?? globalThis.fetch;
1957
+ const response = await fetchImpl(path);
1958
+ if (!response.ok) {
1959
+ throw new Error(`Voice workflow status failed: HTTP ${response.status}`);
1960
+ }
1961
+ return await response.json();
1962
+ };
1963
+ var createVoiceWorkflowStatusStore = (path = "/evals/scenarios/json", options = {}) => {
1964
+ const listeners = new Set;
1965
+ let closed = false;
1966
+ let timer;
1967
+ let snapshot = {
1968
+ error: null,
1969
+ isLoading: false
1970
+ };
1971
+ const emit = () => {
1972
+ for (const listener of listeners) {
1973
+ listener();
1974
+ }
1975
+ };
1976
+ const refresh = async () => {
1977
+ if (closed) {
1978
+ return snapshot.report;
1979
+ }
1980
+ snapshot = {
1981
+ ...snapshot,
1982
+ error: null,
1983
+ isLoading: true
1984
+ };
1985
+ emit();
1986
+ try {
1987
+ const report = await fetchVoiceWorkflowStatus(path, options);
1988
+ snapshot = {
1989
+ error: null,
1990
+ isLoading: false,
1991
+ report,
1992
+ updatedAt: Date.now()
1993
+ };
1994
+ emit();
1995
+ return report;
1996
+ } catch (error) {
1997
+ snapshot = {
1998
+ ...snapshot,
1999
+ error: error instanceof Error ? error.message : String(error),
2000
+ isLoading: false
2001
+ };
2002
+ emit();
2003
+ throw error;
2004
+ }
2005
+ };
2006
+ const close = () => {
2007
+ closed = true;
2008
+ if (timer) {
2009
+ clearInterval(timer);
2010
+ timer = undefined;
2011
+ }
2012
+ listeners.clear();
2013
+ };
2014
+ if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
2015
+ timer = setInterval(() => {
2016
+ refresh().catch(() => {});
2017
+ }, options.intervalMs);
2018
+ }
2019
+ return {
2020
+ close,
2021
+ getServerSnapshot: () => snapshot,
2022
+ getSnapshot: () => snapshot,
2023
+ refresh,
2024
+ subscribe: (listener) => {
2025
+ listeners.add(listener);
2026
+ return () => {
2027
+ listeners.delete(listener);
2028
+ };
2029
+ }
2030
+ };
2031
+ };
2032
+
2033
+ // src/angular/voice-workflow-status.service.ts
2034
+ var _dec = [
2035
+ Injectable8({ providedIn: "root" })
2036
+ ];
2037
+ var _init = __decoratorStart(undefined);
2038
+
2039
+ class VoiceWorkflowStatusService {
2040
+ connect(path = "/evals/scenarios/json", options = {}) {
2041
+ const store = createVoiceWorkflowStatusStore(path, options);
2042
+ const errorSignal = signal8(null);
2043
+ const isLoadingSignal = signal8(false);
2044
+ const reportSignal = signal8(undefined);
2045
+ const updatedAtSignal = signal8(undefined);
2046
+ const sync = () => {
2047
+ const snapshot = store.getSnapshot();
2048
+ errorSignal.set(snapshot.error);
2049
+ isLoadingSignal.set(snapshot.isLoading);
2050
+ reportSignal.set(snapshot.report);
2051
+ updatedAtSignal.set(snapshot.updatedAt);
2052
+ };
2053
+ const unsubscribe = store.subscribe(sync);
2054
+ sync();
2055
+ if (typeof window !== "undefined") {
2056
+ store.refresh().catch(() => {});
2057
+ }
2058
+ return {
2059
+ close: () => {
2060
+ unsubscribe();
2061
+ store.close();
2062
+ },
2063
+ error: computed7(() => errorSignal()),
2064
+ isLoading: computed7(() => isLoadingSignal()),
2065
+ refresh: store.refresh,
2066
+ report: computed7(() => reportSignal()),
2067
+ updatedAt: computed7(() => updatedAtSignal())
2068
+ };
2069
+ }
2070
+ }
2071
+ VoiceWorkflowStatusService = __decorateElement(_init, 0, "VoiceWorkflowStatusService", _dec, VoiceWorkflowStatusService);
2072
+ __runInitializers(_init, 1, VoiceWorkflowStatusService);
2073
+ __decoratorMetadata(_init, VoiceWorkflowStatusService);
2074
+ let _VoiceWorkflowStatusService = VoiceWorkflowStatusService;
1291
2075
  export {
2076
+ VoiceWorkflowStatusService,
2077
+ VoiceTurnQualityService,
1292
2078
  VoiceStreamService,
1293
- VoiceControllerService
2079
+ VoiceRoutingStatusService,
2080
+ VoiceProviderStatusService,
2081
+ VoiceProviderCapabilitiesService,
2082
+ VoiceControllerService,
2083
+ VoiceAppKitStatusService
1294
2084
  };