@absolutejs/voice 0.0.22-beta.537 → 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 (48) 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/drizzle/assistantMemory.d.ts +17 -0
  28. package/dist/drizzle/index.d.ts +17 -0
  29. package/dist/drizzle/index.js +8 -13
  30. package/dist/react/index.js +252 -36
  31. package/dist/svelte/index.js +202 -24
  32. package/dist/vue/VoiceCallDebuggerLaunch.d.ts +4 -0
  33. package/dist/vue/VoiceDeliveryRuntime.d.ts +4 -0
  34. package/dist/vue/VoiceOpsStatus.d.ts +4 -0
  35. package/dist/vue/VoicePlatformCoverage.d.ts +4 -0
  36. package/dist/vue/VoiceProofTrends.d.ts +4 -0
  37. package/dist/vue/VoiceProviderCapabilities.d.ts +4 -0
  38. package/dist/vue/VoiceProviderContracts.d.ts +4 -0
  39. package/dist/vue/VoiceProviderStatus.d.ts +4 -0
  40. package/dist/vue/VoiceReadinessFailures.d.ts +4 -0
  41. package/dist/vue/VoiceReconnectProfileEvidence.d.ts +4 -0
  42. package/dist/vue/VoiceRoutingStatus.d.ts +4 -0
  43. package/dist/vue/VoiceSessionObservability.d.ts +4 -0
  44. package/dist/vue/VoiceSessionSnapshot.d.ts +4 -0
  45. package/dist/vue/VoiceTurnLatency.d.ts +4 -0
  46. package/dist/vue/VoiceTurnQuality.d.ts +4 -0
  47. package/dist/vue/index.js +261 -30
  48. package/package.json +1 -1
@@ -83,6 +83,24 @@ var __decorateElement = (array, flags, name, decorators, target, extra) => {
83
83
  };
84
84
  var __require = import.meta.require;
85
85
 
86
+ // src/client/reactiveSource.ts
87
+ var bindVoiceReactiveSource = (refresh, source) => {
88
+ const cleanup = source?.(refresh);
89
+ return typeof cleanup === "function" ? cleanup : () => {};
90
+ };
91
+ var voiceSseReactiveSource = (topic, options = {}) => (refresh) => {
92
+ const Impl = options.eventSourceImpl ?? (typeof EventSource !== "undefined" ? EventSource : undefined);
93
+ if (!Impl) {
94
+ return () => {};
95
+ }
96
+ const url = `${options.path ?? "/sync"}?topics=${encodeURIComponent(topic)}`;
97
+ const source = new Impl(url, {
98
+ withCredentials: options.withCredentials ?? false
99
+ });
100
+ source.onmessage = () => refresh();
101
+ return () => source.close();
102
+ };
103
+
86
104
  // src/client/campaignDialerProof.ts
87
105
  var createVoiceCampaignDialerProofStore = (path = "/api/voice/campaigns/dialer-proof", options = {}) => {
88
106
  const listeners = new Set;
@@ -157,12 +175,14 @@ var createVoiceCampaignDialerProofStore = (path = "/api/voice/campaigns/dialer-p
157
175
  throw error;
158
176
  }
159
177
  };
178
+ let unbindReactiveSource = () => {};
160
179
  const close = () => {
161
180
  closed = true;
162
181
  if (timer) {
163
182
  clearInterval(timer);
164
183
  timer = undefined;
165
184
  }
185
+ unbindReactiveSource();
166
186
  listeners.clear();
167
187
  };
168
188
  if (options.intervalMs && options.intervalMs > 0) {
@@ -170,6 +190,9 @@ var createVoiceCampaignDialerProofStore = (path = "/api/voice/campaigns/dialer-p
170
190
  refresh().catch(() => {});
171
191
  }, options.intervalMs);
172
192
  }
193
+ if (typeof window !== "undefined" && options.reactiveSource) {
194
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
195
+ }
173
196
  return {
174
197
  close,
175
198
  refresh,
@@ -2500,12 +2523,14 @@ var createVoiceDeliveryRuntimeStore = (path = "/api/voice-delivery-runtime", opt
2500
2523
  throw error;
2501
2524
  }
2502
2525
  };
2526
+ let unbindReactiveSource = () => {};
2503
2527
  const close = () => {
2504
2528
  closed = true;
2505
2529
  if (timer) {
2506
2530
  clearInterval(timer);
2507
2531
  timer = undefined;
2508
2532
  }
2533
+ unbindReactiveSource();
2509
2534
  listeners.clear();
2510
2535
  };
2511
2536
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -2513,6 +2538,9 @@ var createVoiceDeliveryRuntimeStore = (path = "/api/voice-delivery-runtime", opt
2513
2538
  refresh().catch(() => {});
2514
2539
  }, options.intervalMs);
2515
2540
  }
2541
+ if (typeof window !== "undefined" && options.reactiveSource) {
2542
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
2543
+ }
2516
2544
  return {
2517
2545
  close,
2518
2546
  refresh,
@@ -2610,10 +2638,15 @@ var defineVoiceDeliveryRuntimeElement = (tagName = "absolute-voice-delivery-runt
2610
2638
  mounted;
2611
2639
  connectedCallback() {
2612
2640
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
2641
+ const reactiveTopic = this.getAttribute("reactive-topic");
2613
2642
  this.mounted = mountVoiceDeliveryRuntime(this, this.getAttribute("path") ?? "/api/voice-delivery-runtime", {
2614
2643
  description: this.getAttribute("description") ?? undefined,
2615
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
2616
- title: this.getAttribute("title") ?? undefined
2644
+ title: this.getAttribute("title") ?? undefined,
2645
+ ...reactiveTopic ? {
2646
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
2647
+ path: this.getAttribute("reactive-path") ?? undefined
2648
+ })
2649
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
2617
2650
  });
2618
2651
  }
2619
2652
  disconnectedCallback() {
@@ -2839,12 +2872,14 @@ var createVoiceOpsActionCenterStore = (options = {}) => {
2839
2872
  throw error;
2840
2873
  }
2841
2874
  };
2875
+ let unbindReactiveSource = () => {};
2842
2876
  const close = () => {
2843
2877
  closed = true;
2844
2878
  if (timer) {
2845
2879
  clearInterval(timer);
2846
2880
  timer = undefined;
2847
2881
  }
2882
+ unbindReactiveSource();
2848
2883
  listeners.clear();
2849
2884
  };
2850
2885
  if (options.intervalMs && options.intervalMs > 0) {
@@ -2852,6 +2887,9 @@ var createVoiceOpsActionCenterStore = (options = {}) => {
2852
2887
  emit();
2853
2888
  }, options.intervalMs);
2854
2889
  }
2890
+ if (typeof window !== "undefined" && options.reactiveSource) {
2891
+ unbindReactiveSource = bindVoiceReactiveSource(() => emit(), options.reactiveSource);
2892
+ }
2855
2893
  return {
2856
2894
  close,
2857
2895
  run,
@@ -4589,12 +4627,14 @@ var createVoiceOpsStatusStore = (path = "/api/voice/ops-status", options = {}) =
4589
4627
  throw error;
4590
4628
  }
4591
4629
  };
4630
+ let unbindReactiveSource = () => {};
4592
4631
  const close = () => {
4593
4632
  closed = true;
4594
4633
  if (timer) {
4595
4634
  clearInterval(timer);
4596
4635
  timer = undefined;
4597
4636
  }
4637
+ unbindReactiveSource();
4598
4638
  listeners.clear();
4599
4639
  };
4600
4640
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -4602,6 +4642,9 @@ var createVoiceOpsStatusStore = (path = "/api/voice/ops-status", options = {}) =
4602
4642
  refresh().catch(() => {});
4603
4643
  }, options.intervalMs);
4604
4644
  }
4645
+ if (typeof window !== "undefined" && options.reactiveSource) {
4646
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
4647
+ }
4605
4648
  return {
4606
4649
  close,
4607
4650
  refresh,
@@ -4685,11 +4728,16 @@ var defineVoiceOpsStatusElement = (tagName = "absolute-voice-ops-status") => {
4685
4728
  mounted;
4686
4729
  connectedCallback() {
4687
4730
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
4731
+ const reactiveTopic = this.getAttribute("reactive-topic");
4688
4732
  this.mounted = mountVoiceOpsStatus(this, this.getAttribute("path") ?? "/api/voice/ops-status", {
4689
4733
  description: this.getAttribute("description") ?? undefined,
4690
4734
  includeLinks: this.getAttribute("include-links") !== "false",
4691
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
4692
- title: this.getAttribute("title") ?? undefined
4735
+ title: this.getAttribute("title") ?? undefined,
4736
+ ...reactiveTopic ? {
4737
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
4738
+ path: this.getAttribute("reactive-path") ?? undefined
4739
+ })
4740
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
4693
4741
  });
4694
4742
  }
4695
4743
  disconnectedCallback() {
@@ -4804,12 +4852,14 @@ var createVoicePlatformCoverageStore = (path = "/api/voice/platform-coverage", o
4804
4852
  throw error;
4805
4853
  }
4806
4854
  };
4855
+ let unbindReactiveSource = () => {};
4807
4856
  const close = () => {
4808
4857
  closed = true;
4809
4858
  if (timer) {
4810
4859
  clearInterval(timer);
4811
4860
  timer = undefined;
4812
4861
  }
4862
+ unbindReactiveSource();
4813
4863
  listeners.clear();
4814
4864
  };
4815
4865
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -4817,6 +4867,9 @@ var createVoicePlatformCoverageStore = (path = "/api/voice/platform-coverage", o
4817
4867
  refresh().catch(() => {});
4818
4868
  }, options.intervalMs);
4819
4869
  }
4870
+ if (typeof window !== "undefined" && options.reactiveSource) {
4871
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
4872
+ }
4820
4873
  return {
4821
4874
  close,
4822
4875
  refresh,
@@ -4893,12 +4946,14 @@ var createVoiceProofTrendsStore = (path = "/api/voice/proof-trends", options = {
4893
4946
  throw error;
4894
4947
  }
4895
4948
  };
4949
+ let unbindReactiveSource = () => {};
4896
4950
  const close = () => {
4897
4951
  closed = true;
4898
4952
  if (timer) {
4899
4953
  clearInterval(timer);
4900
4954
  timer = undefined;
4901
4955
  }
4956
+ unbindReactiveSource();
4902
4957
  listeners.clear();
4903
4958
  };
4904
4959
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -4906,6 +4961,9 @@ var createVoiceProofTrendsStore = (path = "/api/voice/proof-trends", options = {
4906
4961
  refresh().catch(() => {});
4907
4962
  }, options.intervalMs);
4908
4963
  }
4964
+ if (typeof window !== "undefined" && options.reactiveSource) {
4965
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
4966
+ }
4909
4967
  return {
4910
4968
  close,
4911
4969
  refresh,
@@ -4978,12 +5036,14 @@ var createVoiceReconnectProfileEvidenceStore = (path = "/api/voice/reconnect-pro
4978
5036
  throw error;
4979
5037
  }
4980
5038
  };
5039
+ let unbindReactiveSource = () => {};
4981
5040
  const close = () => {
4982
5041
  closed = true;
4983
5042
  if (timer) {
4984
5043
  clearInterval(timer);
4985
5044
  timer = undefined;
4986
5045
  }
5046
+ unbindReactiveSource();
4987
5047
  listeners.clear();
4988
5048
  };
4989
5049
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -4991,6 +5051,9 @@ var createVoiceReconnectProfileEvidenceStore = (path = "/api/voice/reconnect-pro
4991
5051
  refresh().catch(() => {});
4992
5052
  }, options.intervalMs);
4993
5053
  }
5054
+ if (typeof window !== "undefined" && options.reactiveSource) {
5055
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
5056
+ }
4994
5057
  return {
4995
5058
  close,
4996
5059
  refresh,
@@ -5063,12 +5126,14 @@ var createVoiceCallDebuggerStore = (path, options = {}) => {
5063
5126
  throw error;
5064
5127
  }
5065
5128
  };
5129
+ let unbindReactiveSource = () => {};
5066
5130
  const close = () => {
5067
5131
  closed = true;
5068
5132
  if (timer) {
5069
5133
  clearInterval(timer);
5070
5134
  timer = undefined;
5071
5135
  }
5136
+ unbindReactiveSource();
5072
5137
  listeners.clear();
5073
5138
  };
5074
5139
  if (options.intervalMs && options.intervalMs > 0) {
@@ -5076,6 +5141,9 @@ var createVoiceCallDebuggerStore = (path, options = {}) => {
5076
5141
  refresh().catch(() => {});
5077
5142
  }, options.intervalMs);
5078
5143
  }
5144
+ if (typeof window !== "undefined" && options.reactiveSource) {
5145
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
5146
+ }
5079
5147
  return {
5080
5148
  close,
5081
5149
  refresh,
@@ -5159,12 +5227,17 @@ var defineVoiceCallDebuggerLaunchElement = (tagName = "absolute-voice-call-debug
5159
5227
  mounted;
5160
5228
  connectedCallback() {
5161
5229
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 0);
5230
+ const reactiveTopic = this.getAttribute("reactive-topic");
5162
5231
  this.mounted = mountVoiceCallDebuggerLaunch(this, this.getAttribute("path") ?? "/api/voice-call-debugger/latest", {
5163
5232
  description: this.getAttribute("description") ?? undefined,
5164
5233
  href: this.getAttribute("href") ?? undefined,
5165
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 0,
5166
5234
  linkLabel: this.getAttribute("link-label") ?? undefined,
5167
- title: this.getAttribute("title") ?? undefined
5235
+ title: this.getAttribute("title") ?? undefined,
5236
+ ...reactiveTopic ? {
5237
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
5238
+ path: this.getAttribute("reactive-path") ?? undefined
5239
+ })
5240
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 0 }
5168
5241
  });
5169
5242
  }
5170
5243
  disconnectedCallback() {
@@ -5273,12 +5346,14 @@ var createVoiceSessionSnapshotStore = (path, options = {}) => {
5273
5346
  type: "application/json"
5274
5347
  });
5275
5348
  };
5349
+ let unbindReactiveSource = () => {};
5276
5350
  const close = () => {
5277
5351
  closed = true;
5278
5352
  if (timer) {
5279
5353
  clearInterval(timer);
5280
5354
  timer = undefined;
5281
5355
  }
5356
+ unbindReactiveSource();
5282
5357
  listeners.clear();
5283
5358
  };
5284
5359
  if (options.intervalMs && options.intervalMs > 0) {
@@ -5286,6 +5361,9 @@ var createVoiceSessionSnapshotStore = (path, options = {}) => {
5286
5361
  refresh().catch(() => {});
5287
5362
  }, options.intervalMs);
5288
5363
  }
5364
+ if (typeof window !== "undefined" && options.reactiveSource) {
5365
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
5366
+ }
5289
5367
  return {
5290
5368
  close,
5291
5369
  download,
@@ -5400,12 +5478,17 @@ var defineVoiceSessionSnapshotElement = (tagName = "absolute-voice-session-snaps
5400
5478
  mounted;
5401
5479
  connectedCallback() {
5402
5480
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 0);
5481
+ const reactiveTopic = this.getAttribute("reactive-topic");
5403
5482
  this.mounted = mountVoiceSessionSnapshot(this, this.getAttribute("path") ?? "/api/voice/session-snapshot/session", {
5404
5483
  description: this.getAttribute("description") ?? undefined,
5405
5484
  downloadLabel: this.getAttribute("download-label") ?? undefined,
5406
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 0,
5407
5485
  title: this.getAttribute("title") ?? undefined,
5408
- turnId: this.getAttribute("turn-id") ?? undefined
5486
+ turnId: this.getAttribute("turn-id") ?? undefined,
5487
+ ...reactiveTopic ? {
5488
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
5489
+ path: this.getAttribute("reactive-path") ?? undefined
5490
+ })
5491
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 0 }
5409
5492
  });
5410
5493
  }
5411
5494
  disconnectedCallback() {
@@ -5495,12 +5578,14 @@ var createVoiceSessionObservabilityStore = (path, options = {}) => {
5495
5578
  throw error;
5496
5579
  }
5497
5580
  };
5581
+ let unbindReactiveSource = () => {};
5498
5582
  const close = () => {
5499
5583
  closed = true;
5500
5584
  if (timer) {
5501
5585
  clearInterval(timer);
5502
5586
  timer = undefined;
5503
5587
  }
5588
+ unbindReactiveSource();
5504
5589
  listeners.clear();
5505
5590
  };
5506
5591
  if (options.intervalMs && options.intervalMs > 0) {
@@ -5508,6 +5593,9 @@ var createVoiceSessionObservabilityStore = (path, options = {}) => {
5508
5593
  refresh().catch(() => {});
5509
5594
  }, options.intervalMs);
5510
5595
  }
5596
+ if (typeof window !== "undefined" && options.reactiveSource) {
5597
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
5598
+ }
5511
5599
  return {
5512
5600
  close,
5513
5601
  refresh,
@@ -5563,12 +5651,17 @@ var defineVoiceSessionObservabilityElement = (tagName = "absolute-voice-session-
5563
5651
  mounted;
5564
5652
  connectedCallback() {
5565
5653
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
5654
+ const reactiveTopic = this.getAttribute("reactive-topic");
5566
5655
  const maxTurns = Number(this.getAttribute("max-turns") ?? 3);
5567
5656
  this.mounted = mountVoiceSessionObservability(this, this.getAttribute("path") ?? "/api/voice/session-observability/latest", {
5568
5657
  description: this.getAttribute("description") ?? undefined,
5569
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
5570
5658
  maxTurns: Number.isFinite(maxTurns) ? maxTurns : 3,
5571
- title: this.getAttribute("title") ?? undefined
5659
+ title: this.getAttribute("title") ?? undefined,
5660
+ ...reactiveTopic ? {
5661
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
5662
+ path: this.getAttribute("reactive-path") ?? undefined
5663
+ })
5664
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
5572
5665
  });
5573
5666
  }
5574
5667
  disconnectedCallback() {
@@ -5659,12 +5752,14 @@ var createVoiceProfileComparisonStore = (path = "/api/voice/real-call-profile-hi
5659
5752
  throw error;
5660
5753
  }
5661
5754
  };
5755
+ let unbindReactiveSource = () => {};
5662
5756
  const close = () => {
5663
5757
  closed = true;
5664
5758
  if (timer) {
5665
5759
  clearInterval(timer);
5666
5760
  timer = undefined;
5667
5761
  }
5762
+ unbindReactiveSource();
5668
5763
  listeners.clear();
5669
5764
  };
5670
5765
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -5672,6 +5767,9 @@ var createVoiceProfileComparisonStore = (path = "/api/voice/real-call-profile-hi
5672
5767
  refresh().catch(() => {});
5673
5768
  }, options.intervalMs);
5674
5769
  }
5770
+ if (typeof window !== "undefined" && options.reactiveSource) {
5771
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
5772
+ }
5675
5773
  return {
5676
5774
  close,
5677
5775
  refresh,
@@ -5744,12 +5842,14 @@ var createVoiceReadinessFailuresStore = (path = "/api/production-readiness", opt
5744
5842
  throw error;
5745
5843
  }
5746
5844
  };
5845
+ let unbindReactiveSource = () => {};
5747
5846
  const close = () => {
5748
5847
  closed = true;
5749
5848
  if (timer) {
5750
5849
  clearInterval(timer);
5751
5850
  timer = undefined;
5752
5851
  }
5852
+ unbindReactiveSource();
5753
5853
  listeners.clear();
5754
5854
  };
5755
5855
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -5757,6 +5857,9 @@ var createVoiceReadinessFailuresStore = (path = "/api/production-readiness", opt
5757
5857
  refresh().catch(() => {});
5758
5858
  }, options.intervalMs);
5759
5859
  }
5860
+ if (typeof window !== "undefined" && options.reactiveSource) {
5861
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
5862
+ }
5760
5863
  return {
5761
5864
  close,
5762
5865
  refresh,
@@ -6018,12 +6121,14 @@ var createVoiceProviderCapabilitiesStore = (path = "/api/provider-capabilities",
6018
6121
  throw error;
6019
6122
  }
6020
6123
  };
6124
+ let unbindReactiveSource = () => {};
6021
6125
  const close = () => {
6022
6126
  closed = true;
6023
6127
  if (timer) {
6024
6128
  clearInterval(timer);
6025
6129
  timer = undefined;
6026
6130
  }
6131
+ unbindReactiveSource();
6027
6132
  listeners.clear();
6028
6133
  };
6029
6134
  if (options.intervalMs && options.intervalMs > 0) {
@@ -6031,6 +6136,9 @@ var createVoiceProviderCapabilitiesStore = (path = "/api/provider-capabilities",
6031
6136
  refresh().catch(() => {});
6032
6137
  }, options.intervalMs);
6033
6138
  }
6139
+ if (typeof window !== "undefined" && options.reactiveSource) {
6140
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
6141
+ }
6034
6142
  return {
6035
6143
  close,
6036
6144
  refresh,
@@ -6116,10 +6224,15 @@ var defineVoiceProviderCapabilitiesElement = (tagName = "absolute-voice-provider
6116
6224
  mounted;
6117
6225
  connectedCallback() {
6118
6226
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
6227
+ const reactiveTopic = this.getAttribute("reactive-topic");
6119
6228
  this.mounted = mountVoiceProviderCapabilities(this, this.getAttribute("path") ?? "/api/provider-capabilities", {
6120
6229
  description: this.getAttribute("description") ?? undefined,
6121
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
6122
- title: this.getAttribute("title") ?? undefined
6230
+ title: this.getAttribute("title") ?? undefined,
6231
+ ...reactiveTopic ? {
6232
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
6233
+ path: this.getAttribute("reactive-path") ?? undefined
6234
+ })
6235
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
6123
6236
  });
6124
6237
  }
6125
6238
  disconnectedCallback() {
@@ -6218,12 +6331,14 @@ var createVoiceProviderContractsStore = (path = "/api/provider-contracts", optio
6218
6331
  throw error;
6219
6332
  }
6220
6333
  };
6334
+ let unbindReactiveSource = () => {};
6221
6335
  const close = () => {
6222
6336
  closed = true;
6223
6337
  if (timer) {
6224
6338
  clearInterval(timer);
6225
6339
  timer = undefined;
6226
6340
  }
6341
+ unbindReactiveSource();
6227
6342
  listeners.clear();
6228
6343
  };
6229
6344
  if (options.intervalMs && options.intervalMs > 0) {
@@ -6231,6 +6346,9 @@ var createVoiceProviderContractsStore = (path = "/api/provider-contracts", optio
6231
6346
  refresh().catch(() => {});
6232
6347
  }, options.intervalMs);
6233
6348
  }
6349
+ if (typeof window !== "undefined" && options.reactiveSource) {
6350
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
6351
+ }
6234
6352
  return {
6235
6353
  close,
6236
6354
  refresh,
@@ -6305,10 +6423,15 @@ var defineVoiceProviderContractsElement = (tagName = "absolute-voice-provider-co
6305
6423
  mounted;
6306
6424
  connectedCallback() {
6307
6425
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
6426
+ const reactiveTopic = this.getAttribute("reactive-topic");
6308
6427
  this.mounted = mountVoiceProviderContracts(this, this.getAttribute("path") ?? "/api/provider-contracts", {
6309
6428
  description: this.getAttribute("description") ?? undefined,
6310
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
6311
- title: this.getAttribute("title") ?? undefined
6429
+ title: this.getAttribute("title") ?? undefined,
6430
+ ...reactiveTopic ? {
6431
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
6432
+ path: this.getAttribute("reactive-path") ?? undefined
6433
+ })
6434
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
6312
6435
  });
6313
6436
  }
6314
6437
  disconnectedCallback() {
@@ -6415,12 +6538,14 @@ var createVoiceProviderStatusStore = (path = "/api/provider-status", options = {
6415
6538
  throw error;
6416
6539
  }
6417
6540
  };
6541
+ let unbindReactiveSource = () => {};
6418
6542
  const close = () => {
6419
6543
  closed = true;
6420
6544
  if (timer) {
6421
6545
  clearInterval(timer);
6422
6546
  timer = undefined;
6423
6547
  }
6548
+ unbindReactiveSource();
6424
6549
  listeners.clear();
6425
6550
  };
6426
6551
  if (options.intervalMs && options.intervalMs > 0) {
@@ -6428,6 +6553,9 @@ var createVoiceProviderStatusStore = (path = "/api/provider-status", options = {
6428
6553
  refresh().catch(() => {});
6429
6554
  }, options.intervalMs);
6430
6555
  }
6556
+ if (typeof window !== "undefined" && options.reactiveSource) {
6557
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
6558
+ }
6431
6559
  return {
6432
6560
  close,
6433
6561
  refresh,
@@ -6514,10 +6642,15 @@ var defineVoiceProviderStatusElement = (tagName = "absolute-voice-provider-statu
6514
6642
  mounted;
6515
6643
  connectedCallback() {
6516
6644
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
6645
+ const reactiveTopic = this.getAttribute("reactive-topic");
6517
6646
  this.mounted = mountVoiceProviderStatus(this, this.getAttribute("path") ?? "/api/provider-status", {
6518
6647
  description: this.getAttribute("description") ?? undefined,
6519
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
6520
- title: this.getAttribute("title") ?? undefined
6648
+ title: this.getAttribute("title") ?? undefined,
6649
+ ...reactiveTopic ? {
6650
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
6651
+ path: this.getAttribute("reactive-path") ?? undefined
6652
+ })
6653
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
6521
6654
  });
6522
6655
  }
6523
6656
  disconnectedCallback() {
@@ -6621,12 +6754,14 @@ var createVoiceRoutingStatusStore = (path = "/api/routing/latest", options = {})
6621
6754
  throw error;
6622
6755
  }
6623
6756
  };
6757
+ let unbindReactiveSource = () => {};
6624
6758
  const close = () => {
6625
6759
  closed = true;
6626
6760
  if (timer) {
6627
6761
  clearInterval(timer);
6628
6762
  timer = undefined;
6629
6763
  }
6764
+ unbindReactiveSource();
6630
6765
  listeners.clear();
6631
6766
  };
6632
6767
  if (options.intervalMs && options.intervalMs > 0) {
@@ -6634,6 +6769,9 @@ var createVoiceRoutingStatusStore = (path = "/api/routing/latest", options = {})
6634
6769
  refresh().catch(() => {});
6635
6770
  }, options.intervalMs);
6636
6771
  }
6772
+ if (typeof window !== "undefined" && options.reactiveSource) {
6773
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
6774
+ }
6637
6775
  return {
6638
6776
  close,
6639
6777
  refresh,
@@ -6745,10 +6883,15 @@ var defineVoiceRoutingStatusElement = (tagName = "absolute-voice-routing-status"
6745
6883
  mounted;
6746
6884
  connectedCallback() {
6747
6885
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
6886
+ const reactiveTopic = this.getAttribute("reactive-topic");
6748
6887
  this.mounted = mountVoiceRoutingStatus(this, this.getAttribute("path") ?? "/api/routing/latest", {
6749
6888
  description: this.getAttribute("description") ?? undefined,
6750
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
6751
- title: this.getAttribute("title") ?? undefined
6889
+ title: this.getAttribute("title") ?? undefined,
6890
+ ...reactiveTopic ? {
6891
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
6892
+ path: this.getAttribute("reactive-path") ?? undefined
6893
+ })
6894
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
6752
6895
  });
6753
6896
  }
6754
6897
  disconnectedCallback() {
@@ -6850,12 +6993,14 @@ var createVoiceTraceTimelineStore = (path = "/api/voice-traces", options = {}) =
6850
6993
  throw error;
6851
6994
  }
6852
6995
  };
6996
+ let unbindReactiveSource = () => {};
6853
6997
  const close = () => {
6854
6998
  closed = true;
6855
6999
  if (timer) {
6856
7000
  clearInterval(timer);
6857
7001
  timer = undefined;
6858
7002
  }
7003
+ unbindReactiveSource();
6859
7004
  listeners.clear();
6860
7005
  };
6861
7006
  if (options.intervalMs && options.intervalMs > 0) {
@@ -6863,6 +7008,9 @@ var createVoiceTraceTimelineStore = (path = "/api/voice-traces", options = {}) =
6863
7008
  refresh().catch(() => {});
6864
7009
  }, options.intervalMs);
6865
7010
  }
7011
+ if (typeof window !== "undefined" && options.reactiveSource) {
7012
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
7013
+ }
6866
7014
  return {
6867
7015
  close,
6868
7016
  refresh,
@@ -6921,15 +7069,20 @@ var defineVoiceTraceTimelineElement = (tagName = "absolute-voice-trace-timeline"
6921
7069
  mounted;
6922
7070
  connectedCallback() {
6923
7071
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
7072
+ const reactiveTopic = this.getAttribute("reactive-topic");
6924
7073
  const limit = Number(this.getAttribute("limit") ?? 3);
6925
7074
  this.mounted = mountVoiceTraceTimeline(this, this.getAttribute("path") ?? "/api/voice-traces", {
6926
7075
  description: this.getAttribute("description") ?? undefined,
6927
7076
  detailBasePath: this.getAttribute("detail-base-path") ?? undefined,
6928
7077
  incidentBundleBasePath: this.getAttribute("incident-bundle-base-path") ?? undefined,
6929
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
6930
7078
  limit: Number.isFinite(limit) ? limit : 3,
6931
7079
  operationsRecordBasePath: this.getAttribute("operations-record-base-path") ?? undefined,
6932
- title: this.getAttribute("title") ?? undefined
7080
+ title: this.getAttribute("title") ?? undefined,
7081
+ ...reactiveTopic ? {
7082
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
7083
+ path: this.getAttribute("reactive-path") ?? undefined
7084
+ })
7085
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
6933
7086
  });
6934
7087
  }
6935
7088
  disconnectedCallback() {
@@ -7227,12 +7380,14 @@ var createVoiceTurnLatencyStore = (path = "/api/turn-latency", options = {}) =>
7227
7380
  throw error;
7228
7381
  }
7229
7382
  };
7383
+ let unbindReactiveSource = () => {};
7230
7384
  const close = () => {
7231
7385
  closed = true;
7232
7386
  if (timer) {
7233
7387
  clearInterval(timer);
7234
7388
  timer = undefined;
7235
7389
  }
7390
+ unbindReactiveSource();
7236
7391
  listeners.clear();
7237
7392
  };
7238
7393
  if (options.intervalMs && options.intervalMs > 0) {
@@ -7240,6 +7395,9 @@ var createVoiceTurnLatencyStore = (path = "/api/turn-latency", options = {}) =>
7240
7395
  refresh().catch(() => {});
7241
7396
  }, options.intervalMs);
7242
7397
  }
7398
+ if (typeof window !== "undefined" && options.reactiveSource) {
7399
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
7400
+ }
7243
7401
  return {
7244
7402
  close,
7245
7403
  refresh,
@@ -7308,12 +7466,17 @@ var defineVoiceTurnLatencyElement = (tagName = "absolute-voice-turn-latency") =>
7308
7466
  mounted;
7309
7467
  connectedCallback() {
7310
7468
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
7469
+ const reactiveTopic = this.getAttribute("reactive-topic");
7311
7470
  this.mounted = mountVoiceTurnLatency(this, this.getAttribute("path") ?? "/api/turn-latency", {
7312
7471
  description: this.getAttribute("description") ?? undefined,
7313
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
7314
7472
  proofLabel: this.getAttribute("proof-label") ?? undefined,
7315
7473
  proofPath: this.getAttribute("proof-path") ?? undefined,
7316
- title: this.getAttribute("title") ?? undefined
7474
+ title: this.getAttribute("title") ?? undefined,
7475
+ ...reactiveTopic ? {
7476
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
7477
+ path: this.getAttribute("reactive-path") ?? undefined
7478
+ })
7479
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
7317
7480
  });
7318
7481
  }
7319
7482
  disconnectedCallback() {
@@ -7423,12 +7586,14 @@ var createVoiceTurnQualityStore = (path = "/api/turn-quality", options = {}) =>
7423
7586
  throw error;
7424
7587
  }
7425
7588
  };
7589
+ let unbindReactiveSource = () => {};
7426
7590
  const close = () => {
7427
7591
  closed = true;
7428
7592
  if (timer) {
7429
7593
  clearInterval(timer);
7430
7594
  timer = undefined;
7431
7595
  }
7596
+ unbindReactiveSource();
7432
7597
  listeners.clear();
7433
7598
  };
7434
7599
  if (options.intervalMs && options.intervalMs > 0) {
@@ -7436,6 +7601,9 @@ var createVoiceTurnQualityStore = (path = "/api/turn-quality", options = {}) =>
7436
7601
  refresh().catch(() => {});
7437
7602
  }, options.intervalMs);
7438
7603
  }
7604
+ if (typeof window !== "undefined" && options.reactiveSource) {
7605
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
7606
+ }
7439
7607
  return {
7440
7608
  close,
7441
7609
  refresh,
@@ -7522,10 +7690,15 @@ var defineVoiceTurnQualityElement = (tagName = "absolute-voice-turn-quality") =>
7522
7690
  mounted;
7523
7691
  connectedCallback() {
7524
7692
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
7693
+ const reactiveTopic = this.getAttribute("reactive-topic");
7525
7694
  this.mounted = mountVoiceTurnQuality(this, this.getAttribute("path") ?? "/api/turn-quality", {
7526
7695
  description: this.getAttribute("description") ?? undefined,
7527
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
7528
- title: this.getAttribute("title") ?? undefined
7696
+ title: this.getAttribute("title") ?? undefined,
7697
+ ...reactiveTopic ? {
7698
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
7699
+ path: this.getAttribute("reactive-path") ?? undefined
7700
+ })
7701
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
7529
7702
  });
7530
7703
  }
7531
7704
  disconnectedCallback() {
@@ -7628,12 +7801,14 @@ var createVoiceWorkflowStatusStore = (path = "/evals/scenarios/json", options =
7628
7801
  throw error;
7629
7802
  }
7630
7803
  };
7804
+ let unbindReactiveSource = () => {};
7631
7805
  const close = () => {
7632
7806
  closed = true;
7633
7807
  if (timer) {
7634
7808
  clearInterval(timer);
7635
7809
  timer = undefined;
7636
7810
  }
7811
+ unbindReactiveSource();
7637
7812
  listeners.clear();
7638
7813
  };
7639
7814
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -7641,6 +7816,9 @@ var createVoiceWorkflowStatusStore = (path = "/evals/scenarios/json", options =
7641
7816
  refresh().catch(() => {});
7642
7817
  }, options.intervalMs);
7643
7818
  }
7819
+ if (typeof window !== "undefined" && options.reactiveSource) {
7820
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
7821
+ }
7644
7822
  return {
7645
7823
  close,
7646
7824
  refresh,