@absolutejs/voice 0.0.22-beta.538 → 0.0.22-beta.539

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 (45) hide show
  1. package/dist/angular/index.js +118 -0
  2. package/dist/client/callDebugger.d.ts +2 -0
  3. package/dist/client/campaignDialerProof.d.ts +2 -0
  4. package/dist/client/deliveryRuntime.d.ts +2 -0
  5. package/dist/client/index.d.ts +2 -0
  6. package/dist/client/index.js +258 -36
  7. package/dist/client/opsActionCenter.d.ts +2 -0
  8. package/dist/client/opsActionHistory.d.ts +2 -0
  9. package/dist/client/opsStatus.d.ts +2 -0
  10. package/dist/client/platformCoverage.d.ts +2 -0
  11. package/dist/client/profileComparison.d.ts +2 -0
  12. package/dist/client/profileSwitchRecommendation.d.ts +2 -0
  13. package/dist/client/proofTrends.d.ts +2 -0
  14. package/dist/client/providerCapabilities.d.ts +2 -0
  15. package/dist/client/providerContracts.d.ts +2 -0
  16. package/dist/client/providerStatus.d.ts +2 -0
  17. package/dist/client/reactiveSource.d.ts +8 -0
  18. package/dist/client/readinessFailures.d.ts +2 -0
  19. package/dist/client/reconnectProfileEvidence.d.ts +2 -0
  20. package/dist/client/routingStatus.d.ts +2 -0
  21. package/dist/client/sessionObservability.d.ts +2 -0
  22. package/dist/client/sessionSnapshot.d.ts +2 -0
  23. package/dist/client/traceTimeline.d.ts +2 -0
  24. package/dist/client/turnLatency.d.ts +2 -0
  25. package/dist/client/turnQuality.d.ts +2 -0
  26. package/dist/client/workflowStatus.d.ts +2 -0
  27. package/dist/react/index.js +252 -36
  28. package/dist/svelte/index.js +202 -24
  29. package/dist/vue/VoiceCallDebuggerLaunch.d.ts +4 -0
  30. package/dist/vue/VoiceDeliveryRuntime.d.ts +4 -0
  31. package/dist/vue/VoiceOpsStatus.d.ts +4 -0
  32. package/dist/vue/VoicePlatformCoverage.d.ts +4 -0
  33. package/dist/vue/VoiceProofTrends.d.ts +4 -0
  34. package/dist/vue/VoiceProviderCapabilities.d.ts +4 -0
  35. package/dist/vue/VoiceProviderContracts.d.ts +4 -0
  36. package/dist/vue/VoiceProviderStatus.d.ts +4 -0
  37. package/dist/vue/VoiceReadinessFailures.d.ts +4 -0
  38. package/dist/vue/VoiceReconnectProfileEvidence.d.ts +4 -0
  39. package/dist/vue/VoiceRoutingStatus.d.ts +4 -0
  40. package/dist/vue/VoiceSessionObservability.d.ts +4 -0
  41. package/dist/vue/VoiceSessionSnapshot.d.ts +4 -0
  42. package/dist/vue/VoiceTurnLatency.d.ts +4 -0
  43. package/dist/vue/VoiceTurnQuality.d.ts +4 -0
  44. package/dist/vue/index.js +261 -30
  45. package/package.json +1 -1
@@ -86,6 +86,24 @@ var __require = import.meta.require;
86
86
  // src/react/useVoiceOpsStatus.tsx
87
87
  import { useEffect, useRef, useSyncExternalStore } from "react";
88
88
 
89
+ // src/client/reactiveSource.ts
90
+ var bindVoiceReactiveSource = (refresh, source) => {
91
+ const cleanup = source?.(refresh);
92
+ return typeof cleanup === "function" ? cleanup : () => {};
93
+ };
94
+ var voiceSseReactiveSource = (topic, options = {}) => (refresh) => {
95
+ const Impl = options.eventSourceImpl ?? (typeof EventSource !== "undefined" ? EventSource : undefined);
96
+ if (!Impl) {
97
+ return () => {};
98
+ }
99
+ const url = `${options.path ?? "/sync"}?topics=${encodeURIComponent(topic)}`;
100
+ const source = new Impl(url, {
101
+ withCredentials: options.withCredentials ?? false
102
+ });
103
+ source.onmessage = () => refresh();
104
+ return () => source.close();
105
+ };
106
+
89
107
  // src/client/opsStatus.ts
90
108
  var createVoiceOpsStatusStore = (path = "/api/voice/ops-status", options = {}) => {
91
109
  const listeners = new Set;
@@ -130,12 +148,14 @@ var createVoiceOpsStatusStore = (path = "/api/voice/ops-status", options = {}) =
130
148
  throw error;
131
149
  }
132
150
  };
151
+ let unbindReactiveSource = () => {};
133
152
  const close = () => {
134
153
  closed = true;
135
154
  if (timer) {
136
155
  clearInterval(timer);
137
156
  timer = undefined;
138
157
  }
158
+ unbindReactiveSource();
139
159
  listeners.clear();
140
160
  };
141
161
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -143,6 +163,9 @@ var createVoiceOpsStatusStore = (path = "/api/voice/ops-status", options = {}) =
143
163
  refresh().catch(() => {});
144
164
  }, options.intervalMs);
145
165
  }
166
+ if (typeof window !== "undefined" && options.reactiveSource) {
167
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
168
+ }
146
169
  return {
147
170
  close,
148
171
  refresh,
@@ -246,11 +269,16 @@ var defineVoiceOpsStatusElement = (tagName = "absolute-voice-ops-status") => {
246
269
  mounted;
247
270
  connectedCallback() {
248
271
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
272
+ const reactiveTopic = this.getAttribute("reactive-topic");
249
273
  this.mounted = mountVoiceOpsStatus(this, this.getAttribute("path") ?? "/api/voice/ops-status", {
250
274
  description: this.getAttribute("description") ?? undefined,
251
275
  includeLinks: this.getAttribute("include-links") !== "false",
252
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
253
- title: this.getAttribute("title") ?? undefined
276
+ title: this.getAttribute("title") ?? undefined,
277
+ ...reactiveTopic ? {
278
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
279
+ path: this.getAttribute("reactive-path") ?? undefined
280
+ })
281
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
254
282
  });
255
283
  }
256
284
  disconnectedCallback() {
@@ -548,12 +576,14 @@ var createVoiceOpsActionCenterStore = (options = {}) => {
548
576
  throw error;
549
577
  }
550
578
  };
579
+ let unbindReactiveSource = () => {};
551
580
  const close = () => {
552
581
  closed = true;
553
582
  if (timer) {
554
583
  clearInterval(timer);
555
584
  timer = undefined;
556
585
  }
586
+ unbindReactiveSource();
557
587
  listeners.clear();
558
588
  };
559
589
  if (options.intervalMs && options.intervalMs > 0) {
@@ -561,6 +591,9 @@ var createVoiceOpsActionCenterStore = (options = {}) => {
561
591
  emit();
562
592
  }, options.intervalMs);
563
593
  }
594
+ if (typeof window !== "undefined" && options.reactiveSource) {
595
+ unbindReactiveSource = bindVoiceReactiveSource(() => emit(), options.reactiveSource);
596
+ }
564
597
  return {
565
598
  close,
566
599
  run,
@@ -835,12 +868,14 @@ var createVoiceDeliveryRuntimeStore = (path = "/api/voice-delivery-runtime", opt
835
868
  throw error;
836
869
  }
837
870
  };
871
+ let unbindReactiveSource = () => {};
838
872
  const close = () => {
839
873
  closed = true;
840
874
  if (timer) {
841
875
  clearInterval(timer);
842
876
  timer = undefined;
843
877
  }
878
+ unbindReactiveSource();
844
879
  listeners.clear();
845
880
  };
846
881
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -848,6 +883,9 @@ var createVoiceDeliveryRuntimeStore = (path = "/api/voice-delivery-runtime", opt
848
883
  refresh().catch(() => {});
849
884
  }, options.intervalMs);
850
885
  }
886
+ if (typeof window !== "undefined" && options.reactiveSource) {
887
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
888
+ }
851
889
  return {
852
890
  close,
853
891
  refresh,
@@ -945,10 +983,15 @@ var defineVoiceDeliveryRuntimeElement = (tagName = "absolute-voice-delivery-runt
945
983
  mounted;
946
984
  connectedCallback() {
947
985
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
986
+ const reactiveTopic = this.getAttribute("reactive-topic");
948
987
  this.mounted = mountVoiceDeliveryRuntime(this, this.getAttribute("path") ?? "/api/voice-delivery-runtime", {
949
988
  description: this.getAttribute("description") ?? undefined,
950
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
951
- title: this.getAttribute("title") ?? undefined
989
+ title: this.getAttribute("title") ?? undefined,
990
+ ...reactiveTopic ? {
991
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
992
+ path: this.getAttribute("reactive-path") ?? undefined
993
+ })
994
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
952
995
  });
953
996
  }
954
997
  disconnectedCallback() {
@@ -1171,12 +1214,14 @@ var createVoicePlatformCoverageStore = (path = "/api/voice/platform-coverage", o
1171
1214
  throw error;
1172
1215
  }
1173
1216
  };
1217
+ let unbindReactiveSource = () => {};
1174
1218
  const close = () => {
1175
1219
  closed = true;
1176
1220
  if (timer) {
1177
1221
  clearInterval(timer);
1178
1222
  timer = undefined;
1179
1223
  }
1224
+ unbindReactiveSource();
1180
1225
  listeners.clear();
1181
1226
  };
1182
1227
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -1184,6 +1229,9 @@ var createVoicePlatformCoverageStore = (path = "/api/voice/platform-coverage", o
1184
1229
  refresh().catch(() => {});
1185
1230
  }, options.intervalMs);
1186
1231
  }
1232
+ if (typeof window !== "undefined" && options.reactiveSource) {
1233
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
1234
+ }
1187
1235
  return {
1188
1236
  close,
1189
1237
  refresh,
@@ -1271,11 +1319,17 @@ var defineVoicePlatformCoverageElement = (tagName = "absolute-voice-platform-cov
1271
1319
  customElements.define(tagName, class AbsoluteVoicePlatformCoverageElement extends HTMLElement {
1272
1320
  mounted;
1273
1321
  connectedCallback() {
1322
+ const intervalMs = Number(this.getAttribute("interval-ms") ?? 0) || undefined;
1323
+ const reactiveTopic = this.getAttribute("reactive-topic");
1274
1324
  this.mounted = mountVoicePlatformCoverage(this, this.getAttribute("path") ?? "/api/voice/platform-coverage", {
1275
1325
  description: this.getAttribute("description") ?? undefined,
1276
- intervalMs: Number(this.getAttribute("interval-ms") ?? 0) || undefined,
1277
1326
  limit: Number(this.getAttribute("limit") ?? 0) || undefined,
1278
- title: this.getAttribute("title") ?? undefined
1327
+ title: this.getAttribute("title") ?? undefined,
1328
+ ...reactiveTopic ? {
1329
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
1330
+ path: this.getAttribute("reactive-path") ?? undefined
1331
+ })
1332
+ } : { intervalMs }
1279
1333
  });
1280
1334
  }
1281
1335
  disconnectedCallback() {
@@ -1453,12 +1507,14 @@ var createVoiceProofTrendsStore = (path = "/api/voice/proof-trends", options = {
1453
1507
  throw error;
1454
1508
  }
1455
1509
  };
1510
+ let unbindReactiveSource = () => {};
1456
1511
  const close = () => {
1457
1512
  closed = true;
1458
1513
  if (timer) {
1459
1514
  clearInterval(timer);
1460
1515
  timer = undefined;
1461
1516
  }
1517
+ unbindReactiveSource();
1462
1518
  listeners.clear();
1463
1519
  };
1464
1520
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -1466,6 +1522,9 @@ var createVoiceProofTrendsStore = (path = "/api/voice/proof-trends", options = {
1466
1522
  refresh().catch(() => {});
1467
1523
  }, options.intervalMs);
1468
1524
  }
1525
+ if (typeof window !== "undefined" && options.reactiveSource) {
1526
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
1527
+ }
1469
1528
  return {
1470
1529
  close,
1471
1530
  refresh,
@@ -6222,10 +6281,16 @@ var defineVoiceProofTrendsElement = (tagName = "absolute-voice-proof-trends") =>
6222
6281
  customElements.define(tagName, class AbsoluteVoiceProofTrendsElement extends HTMLElement {
6223
6282
  mounted;
6224
6283
  connectedCallback() {
6284
+ const intervalMs = Number(this.getAttribute("interval-ms") ?? 0) || undefined;
6285
+ const reactiveTopic = this.getAttribute("reactive-topic");
6225
6286
  this.mounted = mountVoiceProofTrends(this, this.getAttribute("path") ?? "/api/voice/proof-trends", {
6226
6287
  description: this.getAttribute("description") ?? undefined,
6227
- intervalMs: Number(this.getAttribute("interval-ms") ?? 0) || undefined,
6228
- title: this.getAttribute("title") ?? undefined
6288
+ title: this.getAttribute("title") ?? undefined,
6289
+ ...reactiveTopic ? {
6290
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
6291
+ path: this.getAttribute("reactive-path") ?? undefined
6292
+ })
6293
+ } : { intervalMs }
6229
6294
  });
6230
6295
  }
6231
6296
  disconnectedCallback() {
@@ -6373,12 +6438,14 @@ var createVoiceReconnectProfileEvidenceStore = (path = "/api/voice/reconnect-pro
6373
6438
  throw error;
6374
6439
  }
6375
6440
  };
6441
+ let unbindReactiveSource = () => {};
6376
6442
  const close = () => {
6377
6443
  closed = true;
6378
6444
  if (timer) {
6379
6445
  clearInterval(timer);
6380
6446
  timer = undefined;
6381
6447
  }
6448
+ unbindReactiveSource();
6382
6449
  listeners.clear();
6383
6450
  };
6384
6451
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -6386,6 +6453,9 @@ var createVoiceReconnectProfileEvidenceStore = (path = "/api/voice/reconnect-pro
6386
6453
  refresh().catch(() => {});
6387
6454
  }, options.intervalMs);
6388
6455
  }
6456
+ if (typeof window !== "undefined" && options.reactiveSource) {
6457
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
6458
+ }
6389
6459
  return {
6390
6460
  close,
6391
6461
  refresh,
@@ -6477,10 +6547,15 @@ var defineVoiceReconnectProfileEvidenceElement = (tagName = "absolute-voice-reco
6477
6547
  mounted;
6478
6548
  connectedCallback() {
6479
6549
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
6550
+ const reactiveTopic = this.getAttribute("reactive-topic");
6480
6551
  this.mounted = mountVoiceReconnectProfileEvidence(this, this.getAttribute("path") ?? "/api/voice/reconnect-profile-evidence", {
6481
6552
  description: this.getAttribute("description") ?? undefined,
6482
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
6483
- title: this.getAttribute("title") ?? undefined
6553
+ title: this.getAttribute("title") ?? undefined,
6554
+ ...reactiveTopic ? {
6555
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
6556
+ path: this.getAttribute("reactive-path") ?? undefined
6557
+ })
6558
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
6484
6559
  });
6485
6560
  }
6486
6561
  disconnectedCallback() {
@@ -6660,12 +6735,14 @@ var createVoiceCallDebuggerStore = (path, options = {}) => {
6660
6735
  throw error;
6661
6736
  }
6662
6737
  };
6738
+ let unbindReactiveSource = () => {};
6663
6739
  const close = () => {
6664
6740
  closed = true;
6665
6741
  if (timer) {
6666
6742
  clearInterval(timer);
6667
6743
  timer = undefined;
6668
6744
  }
6745
+ unbindReactiveSource();
6669
6746
  listeners.clear();
6670
6747
  };
6671
6748
  if (options.intervalMs && options.intervalMs > 0) {
@@ -6673,6 +6750,9 @@ var createVoiceCallDebuggerStore = (path, options = {}) => {
6673
6750
  refresh().catch(() => {});
6674
6751
  }, options.intervalMs);
6675
6752
  }
6753
+ if (typeof window !== "undefined" && options.reactiveSource) {
6754
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
6755
+ }
6676
6756
  return {
6677
6757
  close,
6678
6758
  refresh,
@@ -6756,12 +6836,17 @@ var defineVoiceCallDebuggerLaunchElement = (tagName = "absolute-voice-call-debug
6756
6836
  mounted;
6757
6837
  connectedCallback() {
6758
6838
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 0);
6839
+ const reactiveTopic = this.getAttribute("reactive-topic");
6759
6840
  this.mounted = mountVoiceCallDebuggerLaunch(this, this.getAttribute("path") ?? "/api/voice-call-debugger/latest", {
6760
6841
  description: this.getAttribute("description") ?? undefined,
6761
6842
  href: this.getAttribute("href") ?? undefined,
6762
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 0,
6763
6843
  linkLabel: this.getAttribute("link-label") ?? undefined,
6764
- title: this.getAttribute("title") ?? undefined
6844
+ title: this.getAttribute("title") ?? undefined,
6845
+ ...reactiveTopic ? {
6846
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
6847
+ path: this.getAttribute("reactive-path") ?? undefined
6848
+ })
6849
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 0 }
6765
6850
  });
6766
6851
  }
6767
6852
  disconnectedCallback() {
@@ -6939,12 +7024,14 @@ var createVoiceSessionSnapshotStore = (path, options = {}) => {
6939
7024
  type: "application/json"
6940
7025
  });
6941
7026
  };
7027
+ let unbindReactiveSource = () => {};
6942
7028
  const close = () => {
6943
7029
  closed = true;
6944
7030
  if (timer) {
6945
7031
  clearInterval(timer);
6946
7032
  timer = undefined;
6947
7033
  }
7034
+ unbindReactiveSource();
6948
7035
  listeners.clear();
6949
7036
  };
6950
7037
  if (options.intervalMs && options.intervalMs > 0) {
@@ -6952,6 +7039,9 @@ var createVoiceSessionSnapshotStore = (path, options = {}) => {
6952
7039
  refresh().catch(() => {});
6953
7040
  }, options.intervalMs);
6954
7041
  }
7042
+ if (typeof window !== "undefined" && options.reactiveSource) {
7043
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
7044
+ }
6955
7045
  return {
6956
7046
  close,
6957
7047
  download,
@@ -7066,12 +7156,17 @@ var defineVoiceSessionSnapshotElement = (tagName = "absolute-voice-session-snaps
7066
7156
  mounted;
7067
7157
  connectedCallback() {
7068
7158
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 0);
7159
+ const reactiveTopic = this.getAttribute("reactive-topic");
7069
7160
  this.mounted = mountVoiceSessionSnapshot(this, this.getAttribute("path") ?? "/api/voice/session-snapshot/session", {
7070
7161
  description: this.getAttribute("description") ?? undefined,
7071
7162
  downloadLabel: this.getAttribute("download-label") ?? undefined,
7072
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 0,
7073
7163
  title: this.getAttribute("title") ?? undefined,
7074
- turnId: this.getAttribute("turn-id") ?? undefined
7164
+ turnId: this.getAttribute("turn-id") ?? undefined,
7165
+ ...reactiveTopic ? {
7166
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
7167
+ path: this.getAttribute("reactive-path") ?? undefined
7168
+ })
7169
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 0 }
7075
7170
  });
7076
7171
  }
7077
7172
  disconnectedCallback() {
@@ -7232,12 +7327,14 @@ var createVoiceSessionObservabilityStore = (path, options = {}) => {
7232
7327
  throw error;
7233
7328
  }
7234
7329
  };
7330
+ let unbindReactiveSource = () => {};
7235
7331
  const close = () => {
7236
7332
  closed = true;
7237
7333
  if (timer) {
7238
7334
  clearInterval(timer);
7239
7335
  timer = undefined;
7240
7336
  }
7337
+ unbindReactiveSource();
7241
7338
  listeners.clear();
7242
7339
  };
7243
7340
  if (options.intervalMs && options.intervalMs > 0) {
@@ -7245,6 +7342,9 @@ var createVoiceSessionObservabilityStore = (path, options = {}) => {
7245
7342
  refresh().catch(() => {});
7246
7343
  }, options.intervalMs);
7247
7344
  }
7345
+ if (typeof window !== "undefined" && options.reactiveSource) {
7346
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
7347
+ }
7248
7348
  return {
7249
7349
  close,
7250
7350
  refresh,
@@ -7300,12 +7400,17 @@ var defineVoiceSessionObservabilityElement = (tagName = "absolute-voice-session-
7300
7400
  mounted;
7301
7401
  connectedCallback() {
7302
7402
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
7403
+ const reactiveTopic = this.getAttribute("reactive-topic");
7303
7404
  const maxTurns = Number(this.getAttribute("max-turns") ?? 3);
7304
7405
  this.mounted = mountVoiceSessionObservability(this, this.getAttribute("path") ?? "/api/voice/session-observability/latest", {
7305
7406
  description: this.getAttribute("description") ?? undefined,
7306
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
7307
7407
  maxTurns: Number.isFinite(maxTurns) ? maxTurns : 3,
7308
- title: this.getAttribute("title") ?? undefined
7408
+ title: this.getAttribute("title") ?? undefined,
7409
+ ...reactiveTopic ? {
7410
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
7411
+ path: this.getAttribute("reactive-path") ?? undefined
7412
+ })
7413
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
7309
7414
  });
7310
7415
  }
7311
7416
  disconnectedCallback() {
@@ -7480,12 +7585,14 @@ var createVoiceProfileComparisonStore = (path = "/api/voice/real-call-profile-hi
7480
7585
  throw error;
7481
7586
  }
7482
7587
  };
7588
+ let unbindReactiveSource = () => {};
7483
7589
  const close = () => {
7484
7590
  closed = true;
7485
7591
  if (timer) {
7486
7592
  clearInterval(timer);
7487
7593
  timer = undefined;
7488
7594
  }
7595
+ unbindReactiveSource();
7489
7596
  listeners.clear();
7490
7597
  };
7491
7598
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -7493,6 +7600,9 @@ var createVoiceProfileComparisonStore = (path = "/api/voice/real-call-profile-hi
7493
7600
  refresh().catch(() => {});
7494
7601
  }, options.intervalMs);
7495
7602
  }
7603
+ if (typeof window !== "undefined" && options.reactiveSource) {
7604
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
7605
+ }
7496
7606
  return {
7497
7607
  close,
7498
7608
  refresh,
@@ -7558,10 +7668,15 @@ var defineVoiceProfileComparisonElement = (tagName = "absolute-voice-profile-com
7558
7668
  mounted;
7559
7669
  connectedCallback() {
7560
7670
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
7671
+ const reactiveTopic = this.getAttribute("reactive-topic");
7561
7672
  this.mounted = mountVoiceProfileComparison(this, this.getAttribute("path") ?? "/api/voice/real-call-profile-history", {
7562
7673
  description: this.getAttribute("description") ?? undefined,
7563
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
7564
- title: this.getAttribute("title") ?? undefined
7674
+ title: this.getAttribute("title") ?? undefined,
7675
+ ...reactiveTopic ? {
7676
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
7677
+ path: this.getAttribute("reactive-path") ?? undefined
7678
+ })
7679
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
7565
7680
  });
7566
7681
  }
7567
7682
  disconnectedCallback() {
@@ -7755,12 +7870,14 @@ var createVoiceProfileSwitchRecommendationStore = (path = "/api/voice/profile-sw
7755
7870
  throw error;
7756
7871
  }
7757
7872
  };
7873
+ let unbindReactiveSource = () => {};
7758
7874
  const close = () => {
7759
7875
  closed = true;
7760
7876
  if (timer) {
7761
7877
  clearInterval(timer);
7762
7878
  timer = undefined;
7763
7879
  }
7880
+ unbindReactiveSource();
7764
7881
  listeners.clear();
7765
7882
  };
7766
7883
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -7768,6 +7885,9 @@ var createVoiceProfileSwitchRecommendationStore = (path = "/api/voice/profile-sw
7768
7885
  refresh().catch(() => {});
7769
7886
  }, options.intervalMs);
7770
7887
  }
7888
+ if (typeof window !== "undefined" && options.reactiveSource) {
7889
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
7890
+ }
7771
7891
  return {
7772
7892
  close,
7773
7893
  refresh,
@@ -7802,10 +7922,15 @@ var defineVoiceProfileSwitchRecommendationElement = (tagName = "absolute-voice-p
7802
7922
  mounted;
7803
7923
  connectedCallback() {
7804
7924
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
7925
+ const reactiveTopic = this.getAttribute("reactive-topic");
7805
7926
  this.mounted = mountVoiceProfileSwitchRecommendation(this, this.getAttribute("path") ?? "/api/voice/profile-switch-recommendation", {
7806
7927
  description: this.getAttribute("description") ?? undefined,
7807
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
7808
- title: this.getAttribute("title") ?? undefined
7928
+ title: this.getAttribute("title") ?? undefined,
7929
+ ...reactiveTopic ? {
7930
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
7931
+ path: this.getAttribute("reactive-path") ?? undefined
7932
+ })
7933
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
7809
7934
  });
7810
7935
  }
7811
7936
  disconnectedCallback() {
@@ -7925,12 +8050,14 @@ var createVoiceReadinessFailuresStore = (path = "/api/production-readiness", opt
7925
8050
  throw error;
7926
8051
  }
7927
8052
  };
8053
+ let unbindReactiveSource = () => {};
7928
8054
  const close = () => {
7929
8055
  closed = true;
7930
8056
  if (timer) {
7931
8057
  clearInterval(timer);
7932
8058
  timer = undefined;
7933
8059
  }
8060
+ unbindReactiveSource();
7934
8061
  listeners.clear();
7935
8062
  };
7936
8063
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -7938,6 +8065,9 @@ var createVoiceReadinessFailuresStore = (path = "/api/production-readiness", opt
7938
8065
  refresh().catch(() => {});
7939
8066
  }, options.intervalMs);
7940
8067
  }
8068
+ if (typeof window !== "undefined" && options.reactiveSource) {
8069
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
8070
+ }
7941
8071
  return {
7942
8072
  close,
7943
8073
  refresh,
@@ -8012,10 +8142,16 @@ var defineVoiceReadinessFailuresElement = (tagName = "absolute-voice-readiness-f
8012
8142
  customElements.define(tagName, class AbsoluteVoiceReadinessFailuresElement extends HTMLElement {
8013
8143
  mounted;
8014
8144
  connectedCallback() {
8145
+ const intervalMs = Number(this.getAttribute("interval-ms") ?? 0) || undefined;
8146
+ const reactiveTopic = this.getAttribute("reactive-topic");
8015
8147
  this.mounted = mountVoiceReadinessFailures(this, this.getAttribute("path") ?? "/api/production-readiness", {
8016
8148
  description: this.getAttribute("description") ?? undefined,
8017
- intervalMs: Number(this.getAttribute("interval-ms") ?? 0) || undefined,
8018
- title: this.getAttribute("title") ?? undefined
8149
+ title: this.getAttribute("title") ?? undefined,
8150
+ ...reactiveTopic ? {
8151
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
8152
+ path: this.getAttribute("reactive-path") ?? undefined
8153
+ })
8154
+ } : { intervalMs }
8019
8155
  });
8020
8156
  }
8021
8157
  disconnectedCallback() {
@@ -8487,12 +8623,14 @@ var createVoiceProviderCapabilitiesStore = (path = "/api/provider-capabilities",
8487
8623
  throw error;
8488
8624
  }
8489
8625
  };
8626
+ let unbindReactiveSource = () => {};
8490
8627
  const close = () => {
8491
8628
  closed = true;
8492
8629
  if (timer) {
8493
8630
  clearInterval(timer);
8494
8631
  timer = undefined;
8495
8632
  }
8633
+ unbindReactiveSource();
8496
8634
  listeners.clear();
8497
8635
  };
8498
8636
  if (options.intervalMs && options.intervalMs > 0) {
@@ -8500,6 +8638,9 @@ var createVoiceProviderCapabilitiesStore = (path = "/api/provider-capabilities",
8500
8638
  refresh().catch(() => {});
8501
8639
  }, options.intervalMs);
8502
8640
  }
8641
+ if (typeof window !== "undefined" && options.reactiveSource) {
8642
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
8643
+ }
8503
8644
  return {
8504
8645
  close,
8505
8646
  refresh,
@@ -8602,10 +8743,15 @@ var defineVoiceProviderCapabilitiesElement = (tagName = "absolute-voice-provider
8602
8743
  mounted;
8603
8744
  connectedCallback() {
8604
8745
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
8746
+ const reactiveTopic = this.getAttribute("reactive-topic");
8605
8747
  this.mounted = mountVoiceProviderCapabilities(this, this.getAttribute("path") ?? "/api/provider-capabilities", {
8606
8748
  description: this.getAttribute("description") ?? undefined,
8607
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
8608
- title: this.getAttribute("title") ?? undefined
8749
+ title: this.getAttribute("title") ?? undefined,
8750
+ ...reactiveTopic ? {
8751
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
8752
+ path: this.getAttribute("reactive-path") ?? undefined
8753
+ })
8754
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
8609
8755
  });
8610
8756
  }
8611
8757
  disconnectedCallback() {
@@ -8777,12 +8923,14 @@ var createVoiceProviderContractsStore = (path = "/api/provider-contracts", optio
8777
8923
  throw error;
8778
8924
  }
8779
8925
  };
8926
+ let unbindReactiveSource = () => {};
8780
8927
  const close = () => {
8781
8928
  closed = true;
8782
8929
  if (timer) {
8783
8930
  clearInterval(timer);
8784
8931
  timer = undefined;
8785
8932
  }
8933
+ unbindReactiveSource();
8786
8934
  listeners.clear();
8787
8935
  };
8788
8936
  if (options.intervalMs && options.intervalMs > 0) {
@@ -8790,6 +8938,9 @@ var createVoiceProviderContractsStore = (path = "/api/provider-contracts", optio
8790
8938
  refresh().catch(() => {});
8791
8939
  }, options.intervalMs);
8792
8940
  }
8941
+ if (typeof window !== "undefined" && options.reactiveSource) {
8942
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
8943
+ }
8793
8944
  return {
8794
8945
  close,
8795
8946
  refresh,
@@ -8881,10 +9032,15 @@ var defineVoiceProviderContractsElement = (tagName = "absolute-voice-provider-co
8881
9032
  mounted;
8882
9033
  connectedCallback() {
8883
9034
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
9035
+ const reactiveTopic = this.getAttribute("reactive-topic");
8884
9036
  this.mounted = mountVoiceProviderContracts(this, this.getAttribute("path") ?? "/api/provider-contracts", {
8885
9037
  description: this.getAttribute("description") ?? undefined,
8886
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
8887
- title: this.getAttribute("title") ?? undefined
9038
+ title: this.getAttribute("title") ?? undefined,
9039
+ ...reactiveTopic ? {
9040
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
9041
+ path: this.getAttribute("reactive-path") ?? undefined
9042
+ })
9043
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
8888
9044
  });
8889
9045
  }
8890
9046
  disconnectedCallback() {
@@ -9078,12 +9234,14 @@ var createVoiceProviderStatusStore = (path = "/api/provider-status", options = {
9078
9234
  throw error;
9079
9235
  }
9080
9236
  };
9237
+ let unbindReactiveSource = () => {};
9081
9238
  const close = () => {
9082
9239
  closed = true;
9083
9240
  if (timer) {
9084
9241
  clearInterval(timer);
9085
9242
  timer = undefined;
9086
9243
  }
9244
+ unbindReactiveSource();
9087
9245
  listeners.clear();
9088
9246
  };
9089
9247
  if (options.intervalMs && options.intervalMs > 0) {
@@ -9091,6 +9249,9 @@ var createVoiceProviderStatusStore = (path = "/api/provider-status", options = {
9091
9249
  refresh().catch(() => {});
9092
9250
  }, options.intervalMs);
9093
9251
  }
9252
+ if (typeof window !== "undefined" && options.reactiveSource) {
9253
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
9254
+ }
9094
9255
  return {
9095
9256
  close,
9096
9257
  refresh,
@@ -9194,10 +9355,15 @@ var defineVoiceProviderStatusElement = (tagName = "absolute-voice-provider-statu
9194
9355
  mounted;
9195
9356
  connectedCallback() {
9196
9357
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
9358
+ const reactiveTopic = this.getAttribute("reactive-topic");
9197
9359
  this.mounted = mountVoiceProviderStatus(this, this.getAttribute("path") ?? "/api/provider-status", {
9198
9360
  description: this.getAttribute("description") ?? undefined,
9199
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
9200
- title: this.getAttribute("title") ?? undefined
9361
+ title: this.getAttribute("title") ?? undefined,
9362
+ ...reactiveTopic ? {
9363
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
9364
+ path: this.getAttribute("reactive-path") ?? undefined
9365
+ })
9366
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
9201
9367
  });
9202
9368
  }
9203
9369
  disconnectedCallback() {
@@ -9374,12 +9540,14 @@ var createVoiceRoutingStatusStore = (path = "/api/routing/latest", options = {})
9374
9540
  throw error;
9375
9541
  }
9376
9542
  };
9543
+ let unbindReactiveSource = () => {};
9377
9544
  const close = () => {
9378
9545
  closed = true;
9379
9546
  if (timer) {
9380
9547
  clearInterval(timer);
9381
9548
  timer = undefined;
9382
9549
  }
9550
+ unbindReactiveSource();
9383
9551
  listeners.clear();
9384
9552
  };
9385
9553
  if (options.intervalMs && options.intervalMs > 0) {
@@ -9387,6 +9555,9 @@ var createVoiceRoutingStatusStore = (path = "/api/routing/latest", options = {})
9387
9555
  refresh().catch(() => {});
9388
9556
  }, options.intervalMs);
9389
9557
  }
9558
+ if (typeof window !== "undefined" && options.reactiveSource) {
9559
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
9560
+ }
9390
9561
  return {
9391
9562
  close,
9392
9563
  refresh,
@@ -9515,10 +9686,15 @@ var defineVoiceRoutingStatusElement = (tagName = "absolute-voice-routing-status"
9515
9686
  mounted;
9516
9687
  connectedCallback() {
9517
9688
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
9689
+ const reactiveTopic = this.getAttribute("reactive-topic");
9518
9690
  this.mounted = mountVoiceRoutingStatus(this, this.getAttribute("path") ?? "/api/routing/latest", {
9519
9691
  description: this.getAttribute("description") ?? undefined,
9520
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
9521
- title: this.getAttribute("title") ?? undefined
9692
+ title: this.getAttribute("title") ?? undefined,
9693
+ ...reactiveTopic ? {
9694
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
9695
+ path: this.getAttribute("reactive-path") ?? undefined
9696
+ })
9697
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
9522
9698
  });
9523
9699
  }
9524
9700
  disconnectedCallback() {
@@ -9667,12 +9843,14 @@ var createVoiceTraceTimelineStore = (path = "/api/voice-traces", options = {}) =
9667
9843
  throw error;
9668
9844
  }
9669
9845
  };
9846
+ let unbindReactiveSource = () => {};
9670
9847
  const close = () => {
9671
9848
  closed = true;
9672
9849
  if (timer) {
9673
9850
  clearInterval(timer);
9674
9851
  timer = undefined;
9675
9852
  }
9853
+ unbindReactiveSource();
9676
9854
  listeners.clear();
9677
9855
  };
9678
9856
  if (options.intervalMs && options.intervalMs > 0) {
@@ -9680,6 +9858,9 @@ var createVoiceTraceTimelineStore = (path = "/api/voice-traces", options = {}) =
9680
9858
  refresh().catch(() => {});
9681
9859
  }, options.intervalMs);
9682
9860
  }
9861
+ if (typeof window !== "undefined" && options.reactiveSource) {
9862
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
9863
+ }
9683
9864
  return {
9684
9865
  close,
9685
9866
  refresh,
@@ -9738,15 +9919,20 @@ var defineVoiceTraceTimelineElement = (tagName = "absolute-voice-trace-timeline"
9738
9919
  mounted;
9739
9920
  connectedCallback() {
9740
9921
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
9922
+ const reactiveTopic = this.getAttribute("reactive-topic");
9741
9923
  const limit = Number(this.getAttribute("limit") ?? 3);
9742
9924
  this.mounted = mountVoiceTraceTimeline(this, this.getAttribute("path") ?? "/api/voice-traces", {
9743
9925
  description: this.getAttribute("description") ?? undefined,
9744
9926
  detailBasePath: this.getAttribute("detail-base-path") ?? undefined,
9745
9927
  incidentBundleBasePath: this.getAttribute("incident-bundle-base-path") ?? undefined,
9746
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
9747
9928
  limit: Number.isFinite(limit) ? limit : 3,
9748
9929
  operationsRecordBasePath: this.getAttribute("operations-record-base-path") ?? undefined,
9749
- title: this.getAttribute("title") ?? undefined
9930
+ title: this.getAttribute("title") ?? undefined,
9931
+ ...reactiveTopic ? {
9932
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
9933
+ path: this.getAttribute("reactive-path") ?? undefined
9934
+ })
9935
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
9750
9936
  });
9751
9937
  }
9752
9938
  disconnectedCallback() {
@@ -10220,12 +10406,14 @@ var createVoiceTurnLatencyStore = (path = "/api/turn-latency", options = {}) =>
10220
10406
  throw error;
10221
10407
  }
10222
10408
  };
10409
+ let unbindReactiveSource = () => {};
10223
10410
  const close = () => {
10224
10411
  closed = true;
10225
10412
  if (timer) {
10226
10413
  clearInterval(timer);
10227
10414
  timer = undefined;
10228
10415
  }
10416
+ unbindReactiveSource();
10229
10417
  listeners.clear();
10230
10418
  };
10231
10419
  if (options.intervalMs && options.intervalMs > 0) {
@@ -10233,6 +10421,9 @@ var createVoiceTurnLatencyStore = (path = "/api/turn-latency", options = {}) =>
10233
10421
  refresh().catch(() => {});
10234
10422
  }, options.intervalMs);
10235
10423
  }
10424
+ if (typeof window !== "undefined" && options.reactiveSource) {
10425
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
10426
+ }
10236
10427
  return {
10237
10428
  close,
10238
10429
  refresh,
@@ -10319,12 +10510,17 @@ var defineVoiceTurnLatencyElement = (tagName = "absolute-voice-turn-latency") =>
10319
10510
  mounted;
10320
10511
  connectedCallback() {
10321
10512
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
10513
+ const reactiveTopic = this.getAttribute("reactive-topic");
10322
10514
  this.mounted = mountVoiceTurnLatency(this, this.getAttribute("path") ?? "/api/turn-latency", {
10323
10515
  description: this.getAttribute("description") ?? undefined,
10324
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
10325
10516
  proofLabel: this.getAttribute("proof-label") ?? undefined,
10326
10517
  proofPath: this.getAttribute("proof-path") ?? undefined,
10327
- title: this.getAttribute("title") ?? undefined
10518
+ title: this.getAttribute("title") ?? undefined,
10519
+ ...reactiveTopic ? {
10520
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
10521
+ path: this.getAttribute("reactive-path") ?? undefined
10522
+ })
10523
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
10328
10524
  });
10329
10525
  }
10330
10526
  disconnectedCallback() {
@@ -10512,12 +10708,14 @@ var createVoiceTurnQualityStore = (path = "/api/turn-quality", options = {}) =>
10512
10708
  throw error;
10513
10709
  }
10514
10710
  };
10711
+ let unbindReactiveSource = () => {};
10515
10712
  const close = () => {
10516
10713
  closed = true;
10517
10714
  if (timer) {
10518
10715
  clearInterval(timer);
10519
10716
  timer = undefined;
10520
10717
  }
10718
+ unbindReactiveSource();
10521
10719
  listeners.clear();
10522
10720
  };
10523
10721
  if (options.intervalMs && options.intervalMs > 0) {
@@ -10525,6 +10723,9 @@ var createVoiceTurnQualityStore = (path = "/api/turn-quality", options = {}) =>
10525
10723
  refresh().catch(() => {});
10526
10724
  }, options.intervalMs);
10527
10725
  }
10726
+ if (typeof window !== "undefined" && options.reactiveSource) {
10727
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
10728
+ }
10528
10729
  return {
10529
10730
  close,
10530
10731
  refresh,
@@ -10628,10 +10829,15 @@ var defineVoiceTurnQualityElement = (tagName = "absolute-voice-turn-quality") =>
10628
10829
  mounted;
10629
10830
  connectedCallback() {
10630
10831
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
10832
+ const reactiveTopic = this.getAttribute("reactive-topic");
10631
10833
  this.mounted = mountVoiceTurnQuality(this, this.getAttribute("path") ?? "/api/turn-quality", {
10632
10834
  description: this.getAttribute("description") ?? undefined,
10633
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
10634
- title: this.getAttribute("title") ?? undefined
10835
+ title: this.getAttribute("title") ?? undefined,
10836
+ ...reactiveTopic ? {
10837
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
10838
+ path: this.getAttribute("reactive-path") ?? undefined
10839
+ })
10840
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
10635
10841
  });
10636
10842
  }
10637
10843
  disconnectedCallback() {
@@ -10939,12 +11145,14 @@ var createVoiceCampaignDialerProofStore = (path = "/api/voice/campaigns/dialer-p
10939
11145
  throw error;
10940
11146
  }
10941
11147
  };
11148
+ let unbindReactiveSource = () => {};
10942
11149
  const close = () => {
10943
11150
  closed = true;
10944
11151
  if (timer) {
10945
11152
  clearInterval(timer);
10946
11153
  timer = undefined;
10947
11154
  }
11155
+ unbindReactiveSource();
10948
11156
  listeners.clear();
10949
11157
  };
10950
11158
  if (options.intervalMs && options.intervalMs > 0) {
@@ -10952,6 +11160,9 @@ var createVoiceCampaignDialerProofStore = (path = "/api/voice/campaigns/dialer-p
10952
11160
  refresh().catch(() => {});
10953
11161
  }, options.intervalMs);
10954
11162
  }
11163
+ if (typeof window !== "undefined" && options.reactiveSource) {
11164
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
11165
+ }
10955
11166
  return {
10956
11167
  close,
10957
11168
  refresh,
@@ -14061,12 +14272,14 @@ var createVoiceWorkflowStatusStore = (path = "/evals/scenarios/json", options =
14061
14272
  throw error;
14062
14273
  }
14063
14274
  };
14275
+ let unbindReactiveSource = () => {};
14064
14276
  const close = () => {
14065
14277
  closed = true;
14066
14278
  if (timer) {
14067
14279
  clearInterval(timer);
14068
14280
  timer = undefined;
14069
14281
  }
14282
+ unbindReactiveSource();
14070
14283
  listeners.clear();
14071
14284
  };
14072
14285
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -14074,6 +14287,9 @@ var createVoiceWorkflowStatusStore = (path = "/evals/scenarios/json", options =
14074
14287
  refresh().catch(() => {});
14075
14288
  }, options.intervalMs);
14076
14289
  }
14290
+ if (typeof window !== "undefined" && options.reactiveSource) {
14291
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
14292
+ }
14077
14293
  return {
14078
14294
  close,
14079
14295
  refresh,