@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,23 @@ 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
+ };
86
103
  // src/client/connection.ts
87
104
  var WS_OPEN = 1;
88
105
  var WS_CLOSED = 3;
@@ -2151,12 +2168,14 @@ var createVoiceOpsStatusStore = (path = "/api/voice/ops-status", options = {}) =
2151
2168
  throw error;
2152
2169
  }
2153
2170
  };
2171
+ let unbindReactiveSource = () => {};
2154
2172
  const close = () => {
2155
2173
  closed = true;
2156
2174
  if (timer) {
2157
2175
  clearInterval(timer);
2158
2176
  timer = undefined;
2159
2177
  }
2178
+ unbindReactiveSource();
2160
2179
  listeners.clear();
2161
2180
  };
2162
2181
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -2164,6 +2183,9 @@ var createVoiceOpsStatusStore = (path = "/api/voice/ops-status", options = {}) =
2164
2183
  refresh().catch(() => {});
2165
2184
  }, options.intervalMs);
2166
2185
  }
2186
+ if (typeof window !== "undefined" && options.reactiveSource) {
2187
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
2188
+ }
2167
2189
  return {
2168
2190
  close,
2169
2191
  refresh,
@@ -2229,12 +2251,14 @@ var createVoicePlatformCoverageStore = (path = "/api/voice/platform-coverage", o
2229
2251
  throw error;
2230
2252
  }
2231
2253
  };
2254
+ let unbindReactiveSource = () => {};
2232
2255
  const close = () => {
2233
2256
  closed = true;
2234
2257
  if (timer) {
2235
2258
  clearInterval(timer);
2236
2259
  timer = undefined;
2237
2260
  }
2261
+ unbindReactiveSource();
2238
2262
  listeners.clear();
2239
2263
  };
2240
2264
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -2242,6 +2266,9 @@ var createVoicePlatformCoverageStore = (path = "/api/voice/platform-coverage", o
2242
2266
  refresh().catch(() => {});
2243
2267
  }, options.intervalMs);
2244
2268
  }
2269
+ if (typeof window !== "undefined" && options.reactiveSource) {
2270
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
2271
+ }
2245
2272
  return {
2246
2273
  close,
2247
2274
  refresh,
@@ -2307,12 +2334,14 @@ var createVoiceProofTrendsStore = (path = "/api/voice/proof-trends", options = {
2307
2334
  throw error;
2308
2335
  }
2309
2336
  };
2337
+ let unbindReactiveSource = () => {};
2310
2338
  const close = () => {
2311
2339
  closed = true;
2312
2340
  if (timer) {
2313
2341
  clearInterval(timer);
2314
2342
  timer = undefined;
2315
2343
  }
2344
+ unbindReactiveSource();
2316
2345
  listeners.clear();
2317
2346
  };
2318
2347
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -2320,6 +2349,9 @@ var createVoiceProofTrendsStore = (path = "/api/voice/proof-trends", options = {
2320
2349
  refresh().catch(() => {});
2321
2350
  }, options.intervalMs);
2322
2351
  }
2352
+ if (typeof window !== "undefined" && options.reactiveSource) {
2353
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
2354
+ }
2323
2355
  return {
2324
2356
  close,
2325
2357
  refresh,
@@ -2381,12 +2413,14 @@ var createVoiceReconnectProfileEvidenceStore = (path = "/api/voice/reconnect-pro
2381
2413
  throw error;
2382
2414
  }
2383
2415
  };
2416
+ let unbindReactiveSource = () => {};
2384
2417
  const close = () => {
2385
2418
  closed = true;
2386
2419
  if (timer) {
2387
2420
  clearInterval(timer);
2388
2421
  timer = undefined;
2389
2422
  }
2423
+ unbindReactiveSource();
2390
2424
  listeners.clear();
2391
2425
  };
2392
2426
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -2394,6 +2428,9 @@ var createVoiceReconnectProfileEvidenceStore = (path = "/api/voice/reconnect-pro
2394
2428
  refresh().catch(() => {});
2395
2429
  }, options.intervalMs);
2396
2430
  }
2431
+ if (typeof window !== "undefined" && options.reactiveSource) {
2432
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
2433
+ }
2397
2434
  return {
2398
2435
  close,
2399
2436
  refresh,
@@ -2472,12 +2509,14 @@ var createVoiceSessionSnapshotStore = (path, options = {}) => {
2472
2509
  type: "application/json"
2473
2510
  });
2474
2511
  };
2512
+ let unbindReactiveSource = () => {};
2475
2513
  const close = () => {
2476
2514
  closed = true;
2477
2515
  if (timer) {
2478
2516
  clearInterval(timer);
2479
2517
  timer = undefined;
2480
2518
  }
2519
+ unbindReactiveSource();
2481
2520
  listeners.clear();
2482
2521
  };
2483
2522
  if (options.intervalMs && options.intervalMs > 0) {
@@ -2485,6 +2524,9 @@ var createVoiceSessionSnapshotStore = (path, options = {}) => {
2485
2524
  refresh().catch(() => {});
2486
2525
  }, options.intervalMs);
2487
2526
  }
2527
+ if (typeof window !== "undefined" && options.reactiveSource) {
2528
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
2529
+ }
2488
2530
  return {
2489
2531
  close,
2490
2532
  download,
@@ -2552,12 +2594,14 @@ var createVoiceSessionObservabilityStore = (path, options = {}) => {
2552
2594
  throw error;
2553
2595
  }
2554
2596
  };
2597
+ let unbindReactiveSource = () => {};
2555
2598
  const close = () => {
2556
2599
  closed = true;
2557
2600
  if (timer) {
2558
2601
  clearInterval(timer);
2559
2602
  timer = undefined;
2560
2603
  }
2604
+ unbindReactiveSource();
2561
2605
  listeners.clear();
2562
2606
  };
2563
2607
  if (options.intervalMs && options.intervalMs > 0) {
@@ -2565,6 +2609,9 @@ var createVoiceSessionObservabilityStore = (path, options = {}) => {
2565
2609
  refresh().catch(() => {});
2566
2610
  }, options.intervalMs);
2567
2611
  }
2612
+ if (typeof window !== "undefined" && options.reactiveSource) {
2613
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
2614
+ }
2568
2615
  return {
2569
2616
  close,
2570
2617
  refresh,
@@ -2626,12 +2673,14 @@ var createVoiceCallDebuggerStore = (path, options = {}) => {
2626
2673
  throw error;
2627
2674
  }
2628
2675
  };
2676
+ let unbindReactiveSource = () => {};
2629
2677
  const close = () => {
2630
2678
  closed = true;
2631
2679
  if (timer) {
2632
2680
  clearInterval(timer);
2633
2681
  timer = undefined;
2634
2682
  }
2683
+ unbindReactiveSource();
2635
2684
  listeners.clear();
2636
2685
  };
2637
2686
  if (options.intervalMs && options.intervalMs > 0) {
@@ -2639,6 +2688,9 @@ var createVoiceCallDebuggerStore = (path, options = {}) => {
2639
2688
  refresh().catch(() => {});
2640
2689
  }, options.intervalMs);
2641
2690
  }
2691
+ if (typeof window !== "undefined" && options.reactiveSource) {
2692
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
2693
+ }
2642
2694
  return {
2643
2695
  close,
2644
2696
  refresh,
@@ -2724,12 +2776,17 @@ var defineVoiceCallDebuggerLaunchElement = (tagName = "absolute-voice-call-debug
2724
2776
  mounted;
2725
2777
  connectedCallback() {
2726
2778
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 0);
2779
+ const reactiveTopic = this.getAttribute("reactive-topic");
2727
2780
  this.mounted = mountVoiceCallDebuggerLaunch(this, this.getAttribute("path") ?? "/api/voice-call-debugger/latest", {
2728
2781
  description: this.getAttribute("description") ?? undefined,
2729
2782
  href: this.getAttribute("href") ?? undefined,
2730
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 0,
2731
2783
  linkLabel: this.getAttribute("link-label") ?? undefined,
2732
- title: this.getAttribute("title") ?? undefined
2784
+ title: this.getAttribute("title") ?? undefined,
2785
+ ...reactiveTopic ? {
2786
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
2787
+ path: this.getAttribute("reactive-path") ?? undefined
2788
+ })
2789
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 0 }
2733
2790
  });
2734
2791
  }
2735
2792
  disconnectedCallback() {
@@ -2862,12 +2919,17 @@ var defineVoiceSessionSnapshotElement = (tagName = "absolute-voice-session-snaps
2862
2919
  mounted;
2863
2920
  connectedCallback() {
2864
2921
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 0);
2922
+ const reactiveTopic = this.getAttribute("reactive-topic");
2865
2923
  this.mounted = mountVoiceSessionSnapshot(this, this.getAttribute("path") ?? "/api/voice/session-snapshot/session", {
2866
2924
  description: this.getAttribute("description") ?? undefined,
2867
2925
  downloadLabel: this.getAttribute("download-label") ?? undefined,
2868
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 0,
2869
2926
  title: this.getAttribute("title") ?? undefined,
2870
- turnId: this.getAttribute("turn-id") ?? undefined
2927
+ turnId: this.getAttribute("turn-id") ?? undefined,
2928
+ ...reactiveTopic ? {
2929
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
2930
+ path: this.getAttribute("reactive-path") ?? undefined
2931
+ })
2932
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 0 }
2871
2933
  });
2872
2934
  }
2873
2935
  disconnectedCallback() {
@@ -2935,12 +2997,17 @@ var defineVoiceSessionObservabilityElement = (tagName = "absolute-voice-session-
2935
2997
  mounted;
2936
2998
  connectedCallback() {
2937
2999
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
3000
+ const reactiveTopic = this.getAttribute("reactive-topic");
2938
3001
  const maxTurns = Number(this.getAttribute("max-turns") ?? 3);
2939
3002
  this.mounted = mountVoiceSessionObservability(this, this.getAttribute("path") ?? "/api/voice/session-observability/latest", {
2940
3003
  description: this.getAttribute("description") ?? undefined,
2941
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
2942
3004
  maxTurns: Number.isFinite(maxTurns) ? maxTurns : 3,
2943
- title: this.getAttribute("title") ?? undefined
3005
+ title: this.getAttribute("title") ?? undefined,
3006
+ ...reactiveTopic ? {
3007
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
3008
+ path: this.getAttribute("reactive-path") ?? undefined
3009
+ })
3010
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
2944
3011
  });
2945
3012
  }
2946
3013
  disconnectedCallback() {
@@ -3021,12 +3088,14 @@ var createVoiceProfileComparisonStore = (path = "/api/voice/real-call-profile-hi
3021
3088
  throw error;
3022
3089
  }
3023
3090
  };
3091
+ let unbindReactiveSource = () => {};
3024
3092
  const close = () => {
3025
3093
  closed = true;
3026
3094
  if (timer) {
3027
3095
  clearInterval(timer);
3028
3096
  timer = undefined;
3029
3097
  }
3098
+ unbindReactiveSource();
3030
3099
  listeners.clear();
3031
3100
  };
3032
3101
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -3034,6 +3103,9 @@ var createVoiceProfileComparisonStore = (path = "/api/voice/real-call-profile-hi
3034
3103
  refresh().catch(() => {});
3035
3104
  }, options.intervalMs);
3036
3105
  }
3106
+ if (typeof window !== "undefined" && options.reactiveSource) {
3107
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
3108
+ }
3037
3109
  return {
3038
3110
  close,
3039
3111
  refresh,
@@ -3095,12 +3167,14 @@ var createVoiceProfileSwitchRecommendationStore = (path = "/api/voice/profile-sw
3095
3167
  throw error;
3096
3168
  }
3097
3169
  };
3170
+ let unbindReactiveSource = () => {};
3098
3171
  const close = () => {
3099
3172
  closed = true;
3100
3173
  if (timer) {
3101
3174
  clearInterval(timer);
3102
3175
  timer = undefined;
3103
3176
  }
3177
+ unbindReactiveSource();
3104
3178
  listeners.clear();
3105
3179
  };
3106
3180
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -3108,6 +3182,9 @@ var createVoiceProfileSwitchRecommendationStore = (path = "/api/voice/profile-sw
3108
3182
  refresh().catch(() => {});
3109
3183
  }, options.intervalMs);
3110
3184
  }
3185
+ if (typeof window !== "undefined" && options.reactiveSource) {
3186
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
3187
+ }
3111
3188
  return {
3112
3189
  close,
3113
3190
  refresh,
@@ -3169,12 +3246,14 @@ var createVoiceReadinessFailuresStore = (path = "/api/production-readiness", opt
3169
3246
  throw error;
3170
3247
  }
3171
3248
  };
3249
+ let unbindReactiveSource = () => {};
3172
3250
  const close = () => {
3173
3251
  closed = true;
3174
3252
  if (timer) {
3175
3253
  clearInterval(timer);
3176
3254
  timer = undefined;
3177
3255
  }
3256
+ unbindReactiveSource();
3178
3257
  listeners.clear();
3179
3258
  };
3180
3259
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -3182,6 +3261,9 @@ var createVoiceReadinessFailuresStore = (path = "/api/production-readiness", opt
3182
3261
  refresh().catch(() => {});
3183
3262
  }, options.intervalMs);
3184
3263
  }
3264
+ if (typeof window !== "undefined" && options.reactiveSource) {
3265
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
3266
+ }
3185
3267
  return {
3186
3268
  close,
3187
3269
  refresh,
@@ -3348,12 +3430,14 @@ var createVoiceOpsActionCenterStore = (options = {}) => {
3348
3430
  throw error;
3349
3431
  }
3350
3432
  };
3433
+ let unbindReactiveSource = () => {};
3351
3434
  const close = () => {
3352
3435
  closed = true;
3353
3436
  if (timer) {
3354
3437
  clearInterval(timer);
3355
3438
  timer = undefined;
3356
3439
  }
3440
+ unbindReactiveSource();
3357
3441
  listeners.clear();
3358
3442
  };
3359
3443
  if (options.intervalMs && options.intervalMs > 0) {
@@ -3361,6 +3445,9 @@ var createVoiceOpsActionCenterStore = (options = {}) => {
3361
3445
  emit();
3362
3446
  }, options.intervalMs);
3363
3447
  }
3448
+ if (typeof window !== "undefined" && options.reactiveSource) {
3449
+ unbindReactiveSource = bindVoiceReactiveSource(() => emit(), options.reactiveSource);
3450
+ }
3364
3451
  return {
3365
3452
  close,
3366
3453
  run,
@@ -3518,12 +3605,14 @@ var createVoiceOpsActionHistoryStore = (path = "/api/voice/ops-actions/history",
3518
3605
  throw error;
3519
3606
  }
3520
3607
  };
3608
+ let unbindReactiveSource = () => {};
3521
3609
  const close = () => {
3522
3610
  closed = true;
3523
3611
  if (timer) {
3524
3612
  clearInterval(timer);
3525
3613
  timer = undefined;
3526
3614
  }
3615
+ unbindReactiveSource();
3527
3616
  listeners.clear();
3528
3617
  };
3529
3618
  if (options.intervalMs && options.intervalMs > 0) {
@@ -3531,6 +3620,9 @@ var createVoiceOpsActionHistoryStore = (path = "/api/voice/ops-actions/history",
3531
3620
  refresh().catch(() => {});
3532
3621
  }, options.intervalMs);
3533
3622
  }
3623
+ if (typeof window !== "undefined" && options.reactiveSource) {
3624
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
3625
+ }
3534
3626
  return {
3535
3627
  close,
3536
3628
  refresh,
@@ -3636,12 +3728,14 @@ var createVoiceDeliveryRuntimeStore = (path = "/api/voice-delivery-runtime", opt
3636
3728
  throw error;
3637
3729
  }
3638
3730
  };
3731
+ let unbindReactiveSource = () => {};
3639
3732
  const close = () => {
3640
3733
  closed = true;
3641
3734
  if (timer) {
3642
3735
  clearInterval(timer);
3643
3736
  timer = undefined;
3644
3737
  }
3738
+ unbindReactiveSource();
3645
3739
  listeners.clear();
3646
3740
  };
3647
3741
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -3649,6 +3743,9 @@ var createVoiceDeliveryRuntimeStore = (path = "/api/voice-delivery-runtime", opt
3649
3743
  refresh().catch(() => {});
3650
3744
  }, options.intervalMs);
3651
3745
  }
3746
+ if (typeof window !== "undefined" && options.reactiveSource) {
3747
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
3748
+ }
3652
3749
  return {
3653
3750
  close,
3654
3751
  refresh,
@@ -3749,11 +3846,16 @@ var defineVoiceOpsStatusElement = (tagName = "absolute-voice-ops-status") => {
3749
3846
  mounted;
3750
3847
  connectedCallback() {
3751
3848
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
3849
+ const reactiveTopic = this.getAttribute("reactive-topic");
3752
3850
  this.mounted = mountVoiceOpsStatus(this, this.getAttribute("path") ?? "/api/voice/ops-status", {
3753
3851
  description: this.getAttribute("description") ?? undefined,
3754
3852
  includeLinks: this.getAttribute("include-links") !== "false",
3755
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
3756
- title: this.getAttribute("title") ?? undefined
3853
+ title: this.getAttribute("title") ?? undefined,
3854
+ ...reactiveTopic ? {
3855
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
3856
+ path: this.getAttribute("reactive-path") ?? undefined
3857
+ })
3858
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
3757
3859
  });
3758
3860
  }
3759
3861
  disconnectedCallback() {
@@ -3859,11 +3961,17 @@ var defineVoicePlatformCoverageElement = (tagName = "absolute-voice-platform-cov
3859
3961
  customElements.define(tagName, class AbsoluteVoicePlatformCoverageElement extends HTMLElement {
3860
3962
  mounted;
3861
3963
  connectedCallback() {
3964
+ const intervalMs = Number(this.getAttribute("interval-ms") ?? 0) || undefined;
3965
+ const reactiveTopic = this.getAttribute("reactive-topic");
3862
3966
  this.mounted = mountVoicePlatformCoverage(this, this.getAttribute("path") ?? "/api/voice/platform-coverage", {
3863
3967
  description: this.getAttribute("description") ?? undefined,
3864
- intervalMs: Number(this.getAttribute("interval-ms") ?? 0) || undefined,
3865
3968
  limit: Number(this.getAttribute("limit") ?? 0) || undefined,
3866
- title: this.getAttribute("title") ?? undefined
3969
+ title: this.getAttribute("title") ?? undefined,
3970
+ ...reactiveTopic ? {
3971
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
3972
+ path: this.getAttribute("reactive-path") ?? undefined
3973
+ })
3974
+ } : { intervalMs }
3867
3975
  });
3868
3976
  }
3869
3977
  disconnectedCallback() {
@@ -8628,10 +8736,16 @@ var defineVoiceProofTrendsElement = (tagName = "absolute-voice-proof-trends") =>
8628
8736
  customElements.define(tagName, class AbsoluteVoiceProofTrendsElement extends HTMLElement {
8629
8737
  mounted;
8630
8738
  connectedCallback() {
8739
+ const intervalMs = Number(this.getAttribute("interval-ms") ?? 0) || undefined;
8740
+ const reactiveTopic = this.getAttribute("reactive-topic");
8631
8741
  this.mounted = mountVoiceProofTrends(this, this.getAttribute("path") ?? "/api/voice/proof-trends", {
8632
8742
  description: this.getAttribute("description") ?? undefined,
8633
- intervalMs: Number(this.getAttribute("interval-ms") ?? 0) || undefined,
8634
- title: this.getAttribute("title") ?? undefined
8743
+ title: this.getAttribute("title") ?? undefined,
8744
+ ...reactiveTopic ? {
8745
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
8746
+ path: this.getAttribute("reactive-path") ?? undefined
8747
+ })
8748
+ } : { intervalMs }
8635
8749
  });
8636
8750
  }
8637
8751
  disconnectedCallback() {
@@ -8744,10 +8858,15 @@ var defineVoiceReconnectProfileEvidenceElement = (tagName = "absolute-voice-reco
8744
8858
  mounted;
8745
8859
  connectedCallback() {
8746
8860
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
8861
+ const reactiveTopic = this.getAttribute("reactive-topic");
8747
8862
  this.mounted = mountVoiceReconnectProfileEvidence(this, this.getAttribute("path") ?? "/api/voice/reconnect-profile-evidence", {
8748
8863
  description: this.getAttribute("description") ?? undefined,
8749
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
8750
- title: this.getAttribute("title") ?? undefined
8864
+ title: this.getAttribute("title") ?? undefined,
8865
+ ...reactiveTopic ? {
8866
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
8867
+ path: this.getAttribute("reactive-path") ?? undefined
8868
+ })
8869
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
8751
8870
  });
8752
8871
  }
8753
8872
  disconnectedCallback() {
@@ -8836,10 +8955,15 @@ var defineVoiceProfileComparisonElement = (tagName = "absolute-voice-profile-com
8836
8955
  mounted;
8837
8956
  connectedCallback() {
8838
8957
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
8958
+ const reactiveTopic = this.getAttribute("reactive-topic");
8839
8959
  this.mounted = mountVoiceProfileComparison(this, this.getAttribute("path") ?? "/api/voice/real-call-profile-history", {
8840
8960
  description: this.getAttribute("description") ?? undefined,
8841
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
8842
- title: this.getAttribute("title") ?? undefined
8961
+ title: this.getAttribute("title") ?? undefined,
8962
+ ...reactiveTopic ? {
8963
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
8964
+ path: this.getAttribute("reactive-path") ?? undefined
8965
+ })
8966
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
8843
8967
  });
8844
8968
  }
8845
8969
  disconnectedCallback() {
@@ -8900,10 +9024,15 @@ var defineVoiceProfileSwitchRecommendationElement = (tagName = "absolute-voice-p
8900
9024
  mounted;
8901
9025
  connectedCallback() {
8902
9026
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
9027
+ const reactiveTopic = this.getAttribute("reactive-topic");
8903
9028
  this.mounted = mountVoiceProfileSwitchRecommendation(this, this.getAttribute("path") ?? "/api/voice/profile-switch-recommendation", {
8904
9029
  description: this.getAttribute("description") ?? undefined,
8905
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
8906
- title: this.getAttribute("title") ?? undefined
9030
+ title: this.getAttribute("title") ?? undefined,
9031
+ ...reactiveTopic ? {
9032
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
9033
+ path: this.getAttribute("reactive-path") ?? undefined
9034
+ })
9035
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
8907
9036
  });
8908
9037
  }
8909
9038
  disconnectedCallback() {
@@ -9002,10 +9131,16 @@ var defineVoiceReadinessFailuresElement = (tagName = "absolute-voice-readiness-f
9002
9131
  customElements.define(tagName, class AbsoluteVoiceReadinessFailuresElement extends HTMLElement {
9003
9132
  mounted;
9004
9133
  connectedCallback() {
9134
+ const intervalMs = Number(this.getAttribute("interval-ms") ?? 0) || undefined;
9135
+ const reactiveTopic = this.getAttribute("reactive-topic");
9005
9136
  this.mounted = mountVoiceReadinessFailures(this, this.getAttribute("path") ?? "/api/production-readiness", {
9006
9137
  description: this.getAttribute("description") ?? undefined,
9007
- intervalMs: Number(this.getAttribute("interval-ms") ?? 0) || undefined,
9008
- title: this.getAttribute("title") ?? undefined
9138
+ title: this.getAttribute("title") ?? undefined,
9139
+ ...reactiveTopic ? {
9140
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
9141
+ path: this.getAttribute("reactive-path") ?? undefined
9142
+ })
9143
+ } : { intervalMs }
9009
9144
  });
9010
9145
  }
9011
9146
  disconnectedCallback() {
@@ -9866,10 +10001,15 @@ var defineVoiceDeliveryRuntimeElement = (tagName = "absolute-voice-delivery-runt
9866
10001
  mounted;
9867
10002
  connectedCallback() {
9868
10003
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
10004
+ const reactiveTopic = this.getAttribute("reactive-topic");
9869
10005
  this.mounted = mountVoiceDeliveryRuntime(this, this.getAttribute("path") ?? "/api/voice-delivery-runtime", {
9870
10006
  description: this.getAttribute("description") ?? undefined,
9871
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
9872
- title: this.getAttribute("title") ?? undefined
10007
+ title: this.getAttribute("title") ?? undefined,
10008
+ ...reactiveTopic ? {
10009
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
10010
+ path: this.getAttribute("reactive-path") ?? undefined
10011
+ })
10012
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
9873
10013
  });
9874
10014
  }
9875
10015
  disconnectedCallback() {
@@ -9980,12 +10120,14 @@ var createVoiceRoutingStatusStore = (path = "/api/routing/latest", options = {})
9980
10120
  throw error;
9981
10121
  }
9982
10122
  };
10123
+ let unbindReactiveSource = () => {};
9983
10124
  const close = () => {
9984
10125
  closed = true;
9985
10126
  if (timer) {
9986
10127
  clearInterval(timer);
9987
10128
  timer = undefined;
9988
10129
  }
10130
+ unbindReactiveSource();
9989
10131
  listeners.clear();
9990
10132
  };
9991
10133
  if (options.intervalMs && options.intervalMs > 0) {
@@ -9993,6 +10135,9 @@ var createVoiceRoutingStatusStore = (path = "/api/routing/latest", options = {})
9993
10135
  refresh().catch(() => {});
9994
10136
  }, options.intervalMs);
9995
10137
  }
10138
+ if (typeof window !== "undefined" && options.reactiveSource) {
10139
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
10140
+ }
9996
10141
  return {
9997
10142
  close,
9998
10143
  refresh,
@@ -10103,10 +10248,15 @@ var defineVoiceRoutingStatusElement = (tagName = "absolute-voice-routing-status"
10103
10248
  mounted;
10104
10249
  connectedCallback() {
10105
10250
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
10251
+ const reactiveTopic = this.getAttribute("reactive-topic");
10106
10252
  this.mounted = mountVoiceRoutingStatus(this, this.getAttribute("path") ?? "/api/routing/latest", {
10107
10253
  description: this.getAttribute("description") ?? undefined,
10108
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
10109
- title: this.getAttribute("title") ?? undefined
10254
+ title: this.getAttribute("title") ?? undefined,
10255
+ ...reactiveTopic ? {
10256
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
10257
+ path: this.getAttribute("reactive-path") ?? undefined
10258
+ })
10259
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
10110
10260
  });
10111
10261
  }
10112
10262
  disconnectedCallback() {
@@ -10198,12 +10348,14 @@ var createVoiceProviderStatusStore = (path = "/api/provider-status", options = {
10198
10348
  throw error;
10199
10349
  }
10200
10350
  };
10351
+ let unbindReactiveSource = () => {};
10201
10352
  const close = () => {
10202
10353
  closed = true;
10203
10354
  if (timer) {
10204
10355
  clearInterval(timer);
10205
10356
  timer = undefined;
10206
10357
  }
10358
+ unbindReactiveSource();
10207
10359
  listeners.clear();
10208
10360
  };
10209
10361
  if (options.intervalMs && options.intervalMs > 0) {
@@ -10211,6 +10363,9 @@ var createVoiceProviderStatusStore = (path = "/api/provider-status", options = {
10211
10363
  refresh().catch(() => {});
10212
10364
  }, options.intervalMs);
10213
10365
  }
10366
+ if (typeof window !== "undefined" && options.reactiveSource) {
10367
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
10368
+ }
10214
10369
  return {
10215
10370
  close,
10216
10371
  refresh,
@@ -10276,12 +10431,14 @@ var createVoiceProviderCapabilitiesStore = (path = "/api/provider-capabilities",
10276
10431
  throw error;
10277
10432
  }
10278
10433
  };
10434
+ let unbindReactiveSource = () => {};
10279
10435
  const close = () => {
10280
10436
  closed = true;
10281
10437
  if (timer) {
10282
10438
  clearInterval(timer);
10283
10439
  timer = undefined;
10284
10440
  }
10441
+ unbindReactiveSource();
10285
10442
  listeners.clear();
10286
10443
  };
10287
10444
  if (options.intervalMs && options.intervalMs > 0) {
@@ -10289,6 +10446,9 @@ var createVoiceProviderCapabilitiesStore = (path = "/api/provider-capabilities",
10289
10446
  refresh().catch(() => {});
10290
10447
  }, options.intervalMs);
10291
10448
  }
10449
+ if (typeof window !== "undefined" && options.reactiveSource) {
10450
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
10451
+ }
10292
10452
  return {
10293
10453
  close,
10294
10454
  refresh,
@@ -10350,12 +10510,14 @@ var createVoiceProviderContractsStore = (path = "/api/provider-contracts", optio
10350
10510
  throw error;
10351
10511
  }
10352
10512
  };
10513
+ let unbindReactiveSource = () => {};
10353
10514
  const close = () => {
10354
10515
  closed = true;
10355
10516
  if (timer) {
10356
10517
  clearInterval(timer);
10357
10518
  timer = undefined;
10358
10519
  }
10520
+ unbindReactiveSource();
10359
10521
  listeners.clear();
10360
10522
  };
10361
10523
  if (options.intervalMs && options.intervalMs > 0) {
@@ -10363,6 +10525,9 @@ var createVoiceProviderContractsStore = (path = "/api/provider-contracts", optio
10363
10525
  refresh().catch(() => {});
10364
10526
  }, options.intervalMs);
10365
10527
  }
10528
+ if (typeof window !== "undefined" && options.reactiveSource) {
10529
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
10530
+ }
10366
10531
  return {
10367
10532
  close,
10368
10533
  refresh,
@@ -10428,12 +10593,14 @@ var createVoiceTurnQualityStore = (path = "/api/turn-quality", options = {}) =>
10428
10593
  throw error;
10429
10594
  }
10430
10595
  };
10596
+ let unbindReactiveSource = () => {};
10431
10597
  const close = () => {
10432
10598
  closed = true;
10433
10599
  if (timer) {
10434
10600
  clearInterval(timer);
10435
10601
  timer = undefined;
10436
10602
  }
10603
+ unbindReactiveSource();
10437
10604
  listeners.clear();
10438
10605
  };
10439
10606
  if (options.intervalMs && options.intervalMs > 0) {
@@ -10441,6 +10608,9 @@ var createVoiceTurnQualityStore = (path = "/api/turn-quality", options = {}) =>
10441
10608
  refresh().catch(() => {});
10442
10609
  }, options.intervalMs);
10443
10610
  }
10611
+ if (typeof window !== "undefined" && options.reactiveSource) {
10612
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
10613
+ }
10444
10614
  return {
10445
10615
  close,
10446
10616
  refresh,
@@ -10521,12 +10691,14 @@ var createVoiceTurnLatencyStore = (path = "/api/turn-latency", options = {}) =>
10521
10691
  throw error;
10522
10692
  }
10523
10693
  };
10694
+ let unbindReactiveSource = () => {};
10524
10695
  const close = () => {
10525
10696
  closed = true;
10526
10697
  if (timer) {
10527
10698
  clearInterval(timer);
10528
10699
  timer = undefined;
10529
10700
  }
10701
+ unbindReactiveSource();
10530
10702
  listeners.clear();
10531
10703
  };
10532
10704
  if (options.intervalMs && options.intervalMs > 0) {
@@ -10534,6 +10706,9 @@ var createVoiceTurnLatencyStore = (path = "/api/turn-latency", options = {}) =>
10534
10706
  refresh().catch(() => {});
10535
10707
  }, options.intervalMs);
10536
10708
  }
10709
+ if (typeof window !== "undefined" && options.reactiveSource) {
10710
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
10711
+ }
10537
10712
  return {
10538
10713
  close,
10539
10714
  refresh,
@@ -10638,12 +10813,14 @@ var createVoiceCampaignDialerProofStore = (path = "/api/voice/campaigns/dialer-p
10638
10813
  throw error;
10639
10814
  }
10640
10815
  };
10816
+ let unbindReactiveSource = () => {};
10641
10817
  const close = () => {
10642
10818
  closed = true;
10643
10819
  if (timer) {
10644
10820
  clearInterval(timer);
10645
10821
  timer = undefined;
10646
10822
  }
10823
+ unbindReactiveSource();
10647
10824
  listeners.clear();
10648
10825
  };
10649
10826
  if (options.intervalMs && options.intervalMs > 0) {
@@ -10651,6 +10828,9 @@ var createVoiceCampaignDialerProofStore = (path = "/api/voice/campaigns/dialer-p
10651
10828
  refresh().catch(() => {});
10652
10829
  }, options.intervalMs);
10653
10830
  }
10831
+ if (typeof window !== "undefined" && options.reactiveSource) {
10832
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
10833
+ }
10654
10834
  return {
10655
10835
  close,
10656
10836
  refresh,
@@ -10726,12 +10906,14 @@ var createVoiceTraceTimelineStore = (path = "/api/voice-traces", options = {}) =
10726
10906
  throw error;
10727
10907
  }
10728
10908
  };
10909
+ let unbindReactiveSource = () => {};
10729
10910
  const close = () => {
10730
10911
  closed = true;
10731
10912
  if (timer) {
10732
10913
  clearInterval(timer);
10733
10914
  timer = undefined;
10734
10915
  }
10916
+ unbindReactiveSource();
10735
10917
  listeners.clear();
10736
10918
  };
10737
10919
  if (options.intervalMs && options.intervalMs > 0) {
@@ -10739,6 +10921,9 @@ var createVoiceTraceTimelineStore = (path = "/api/voice-traces", options = {}) =
10739
10921
  refresh().catch(() => {});
10740
10922
  }, options.intervalMs);
10741
10923
  }
10924
+ if (typeof window !== "undefined" && options.reactiveSource) {
10925
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
10926
+ }
10742
10927
  return {
10743
10928
  close,
10744
10929
  refresh,
@@ -11070,10 +11255,15 @@ var defineVoiceProviderStatusElement = (tagName = "absolute-voice-provider-statu
11070
11255
  mounted;
11071
11256
  connectedCallback() {
11072
11257
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
11258
+ const reactiveTopic = this.getAttribute("reactive-topic");
11073
11259
  this.mounted = mountVoiceProviderStatus(this, this.getAttribute("path") ?? "/api/provider-status", {
11074
11260
  description: this.getAttribute("description") ?? undefined,
11075
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
11076
- title: this.getAttribute("title") ?? undefined
11261
+ title: this.getAttribute("title") ?? undefined,
11262
+ ...reactiveTopic ? {
11263
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
11264
+ path: this.getAttribute("reactive-path") ?? undefined
11265
+ })
11266
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
11077
11267
  });
11078
11268
  }
11079
11269
  disconnectedCallback() {
@@ -11185,10 +11375,15 @@ var defineVoiceProviderCapabilitiesElement = (tagName = "absolute-voice-provider
11185
11375
  mounted;
11186
11376
  connectedCallback() {
11187
11377
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
11378
+ const reactiveTopic = this.getAttribute("reactive-topic");
11188
11379
  this.mounted = mountVoiceProviderCapabilities(this, this.getAttribute("path") ?? "/api/provider-capabilities", {
11189
11380
  description: this.getAttribute("description") ?? undefined,
11190
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
11191
- title: this.getAttribute("title") ?? undefined
11381
+ title: this.getAttribute("title") ?? undefined,
11382
+ ...reactiveTopic ? {
11383
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
11384
+ path: this.getAttribute("reactive-path") ?? undefined
11385
+ })
11386
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
11192
11387
  });
11193
11388
  }
11194
11389
  disconnectedCallback() {
@@ -11289,10 +11484,15 @@ var defineVoiceProviderContractsElement = (tagName = "absolute-voice-provider-co
11289
11484
  mounted;
11290
11485
  connectedCallback() {
11291
11486
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
11487
+ const reactiveTopic = this.getAttribute("reactive-topic");
11292
11488
  this.mounted = mountVoiceProviderContracts(this, this.getAttribute("path") ?? "/api/provider-contracts", {
11293
11489
  description: this.getAttribute("description") ?? undefined,
11294
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
11295
- title: this.getAttribute("title") ?? undefined
11490
+ title: this.getAttribute("title") ?? undefined,
11491
+ ...reactiveTopic ? {
11492
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
11493
+ path: this.getAttribute("reactive-path") ?? undefined
11494
+ })
11495
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
11296
11496
  });
11297
11497
  }
11298
11498
  disconnectedCallback() {
@@ -11406,10 +11606,15 @@ var defineVoiceTurnQualityElement = (tagName = "absolute-voice-turn-quality") =>
11406
11606
  mounted;
11407
11607
  connectedCallback() {
11408
11608
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
11609
+ const reactiveTopic = this.getAttribute("reactive-topic");
11409
11610
  this.mounted = mountVoiceTurnQuality(this, this.getAttribute("path") ?? "/api/turn-quality", {
11410
11611
  description: this.getAttribute("description") ?? undefined,
11411
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
11412
- title: this.getAttribute("title") ?? undefined
11612
+ title: this.getAttribute("title") ?? undefined,
11613
+ ...reactiveTopic ? {
11614
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
11615
+ path: this.getAttribute("reactive-path") ?? undefined
11616
+ })
11617
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
11413
11618
  });
11414
11619
  }
11415
11620
  disconnectedCallback() {
@@ -11495,12 +11700,17 @@ var defineVoiceTurnLatencyElement = (tagName = "absolute-voice-turn-latency") =>
11495
11700
  mounted;
11496
11701
  connectedCallback() {
11497
11702
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
11703
+ const reactiveTopic = this.getAttribute("reactive-topic");
11498
11704
  this.mounted = mountVoiceTurnLatency(this, this.getAttribute("path") ?? "/api/turn-latency", {
11499
11705
  description: this.getAttribute("description") ?? undefined,
11500
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
11501
11706
  proofLabel: this.getAttribute("proof-label") ?? undefined,
11502
11707
  proofPath: this.getAttribute("proof-path") ?? undefined,
11503
- title: this.getAttribute("title") ?? undefined
11708
+ title: this.getAttribute("title") ?? undefined,
11709
+ ...reactiveTopic ? {
11710
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
11711
+ path: this.getAttribute("reactive-path") ?? undefined
11712
+ })
11713
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
11504
11714
  });
11505
11715
  }
11506
11716
  disconnectedCallback() {
@@ -11592,15 +11802,20 @@ var defineVoiceTraceTimelineElement = (tagName = "absolute-voice-trace-timeline"
11592
11802
  mounted;
11593
11803
  connectedCallback() {
11594
11804
  const intervalMs = Number(this.getAttribute("interval-ms") ?? 5000);
11805
+ const reactiveTopic = this.getAttribute("reactive-topic");
11595
11806
  const limit = Number(this.getAttribute("limit") ?? 3);
11596
11807
  this.mounted = mountVoiceTraceTimeline(this, this.getAttribute("path") ?? "/api/voice-traces", {
11597
11808
  description: this.getAttribute("description") ?? undefined,
11598
11809
  detailBasePath: this.getAttribute("detail-base-path") ?? undefined,
11599
11810
  incidentBundleBasePath: this.getAttribute("incident-bundle-base-path") ?? undefined,
11600
- intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000,
11601
11811
  limit: Number.isFinite(limit) ? limit : 3,
11602
11812
  operationsRecordBasePath: this.getAttribute("operations-record-base-path") ?? undefined,
11603
- title: this.getAttribute("title") ?? undefined
11813
+ title: this.getAttribute("title") ?? undefined,
11814
+ ...reactiveTopic ? {
11815
+ reactiveSource: voiceSseReactiveSource(reactiveTopic, {
11816
+ path: this.getAttribute("reactive-path") ?? undefined
11817
+ })
11818
+ } : { intervalMs: Number.isFinite(intervalMs) ? intervalMs : 5000 }
11604
11819
  });
11605
11820
  }
11606
11821
  disconnectedCallback() {
@@ -11786,12 +12001,14 @@ var createVoiceWorkflowStatusStore = (path = "/evals/scenarios/json", options =
11786
12001
  throw error;
11787
12002
  }
11788
12003
  };
12004
+ let unbindReactiveSource = () => {};
11789
12005
  const close = () => {
11790
12006
  closed = true;
11791
12007
  if (timer) {
11792
12008
  clearInterval(timer);
11793
12009
  timer = undefined;
11794
12010
  }
12011
+ unbindReactiveSource();
11795
12012
  listeners.clear();
11796
12013
  };
11797
12014
  if (typeof window !== "undefined" && options.intervalMs && options.intervalMs > 0) {
@@ -11799,6 +12016,9 @@ var createVoiceWorkflowStatusStore = (path = "/evals/scenarios/json", options =
11799
12016
  refresh().catch(() => {});
11800
12017
  }, options.intervalMs);
11801
12018
  }
12019
+ if (typeof window !== "undefined" && options.reactiveSource) {
12020
+ unbindReactiveSource = bindVoiceReactiveSource(() => void refresh().catch(() => {}), options.reactiveSource);
12021
+ }
11802
12022
  return {
11803
12023
  close,
11804
12024
  refresh,
@@ -11821,6 +12041,7 @@ var fetchVoiceWorkflowStatus = async (path = "/evals/scenarios/json", options =
11821
12041
  return await response.json();
11822
12042
  };
11823
12043
  export {
12044
+ voiceSseReactiveSource,
11824
12045
  runVoiceTurnLatencyProof,
11825
12046
  runVoiceOpsAction,
11826
12047
  runVoiceDeliveryRuntimeAction,
@@ -11994,6 +12215,7 @@ export {
11994
12215
  createVoiceAgentSquadStatusStore,
11995
12216
  createMicrophoneCapture,
11996
12217
  buildVoiceAgentSquadStatusReport,
12218
+ bindVoiceReactiveSource,
11997
12219
  bindVoiceProviderSimulationControls,
11998
12220
  bindVoiceHTMX,
11999
12221
  bindVoiceBargeIn