@absolutejs/voice 0.0.22-beta.153 → 0.0.22-beta.154

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.
@@ -193,9 +193,217 @@ VoiceOpsStatusService = __decorateElement(_init, 0, "VoiceOpsStatusService", _de
193
193
  __runInitializers(_init, 1, VoiceOpsStatusService);
194
194
  __decoratorMetadata(_init, VoiceOpsStatusService);
195
195
  let _VoiceOpsStatusService = VoiceOpsStatusService;
196
- // src/angular/voice-delivery-runtime.service.ts
196
+ // src/angular/voice-ops-action-center.service.ts
197
197
  import { computed as computed2, Injectable as Injectable2, signal as signal2 } from "@angular/core";
198
198
 
199
+ // src/client/opsActionCenter.ts
200
+ var createVoiceOpsActionCenterActions = (options = {}) => {
201
+ const deliveryRuntimePath = options.deliveryRuntimePath ?? "/api/voice-delivery-runtime";
202
+ const actions = [];
203
+ if (options.includeProductionReadiness !== false) {
204
+ actions.push({
205
+ description: "Refresh the production readiness report.",
206
+ id: "production-readiness",
207
+ label: "Refresh readiness",
208
+ method: "GET",
209
+ path: options.productionReadinessPath ?? "/api/production-readiness"
210
+ });
211
+ }
212
+ if (options.includeDeliveryRuntime !== false) {
213
+ actions.push({
214
+ description: "Drain pending and failed audit/trace deliveries.",
215
+ id: "delivery-runtime.tick",
216
+ label: "Tick delivery workers",
217
+ method: "POST",
218
+ path: `${deliveryRuntimePath.replace(/\/$/, "")}/tick`
219
+ }, {
220
+ description: "Move reviewed dead letters back to live delivery queues.",
221
+ id: "delivery-runtime.requeue-dead-letters",
222
+ label: "Requeue dead letters",
223
+ method: "POST",
224
+ path: `${deliveryRuntimePath.replace(/\/$/, "")}/requeue-dead-letters`
225
+ });
226
+ }
227
+ if (options.includeTurnLatencyProof !== false) {
228
+ actions.push({
229
+ description: "Run the synthetic turn latency proof.",
230
+ id: "turn-latency.proof",
231
+ label: "Run latency proof",
232
+ method: "POST",
233
+ path: options.turnLatencyProofPath ?? "/api/turn-latency/proof"
234
+ });
235
+ }
236
+ if (options.includeProviderSimulation !== false) {
237
+ const pathPrefix = options.providerSimulationPathPrefix ?? "/api/stt-simulate";
238
+ for (const provider of options.providers ?? []) {
239
+ actions.push({
240
+ description: `Simulate ${provider} provider failure.`,
241
+ id: `provider.${provider}.failure`,
242
+ label: `Simulate ${provider} failure`,
243
+ method: "POST",
244
+ path: `${pathPrefix}/failure?provider=${encodeURIComponent(provider)}`
245
+ }, {
246
+ description: `Mark ${provider} provider recovered.`,
247
+ id: `provider.${provider}.recovery`,
248
+ label: `Recover ${provider}`,
249
+ method: "POST",
250
+ path: `${pathPrefix}/recovery?provider=${encodeURIComponent(provider)}`
251
+ });
252
+ }
253
+ }
254
+ return actions;
255
+ };
256
+ var runVoiceOpsAction = async (action, options = {}) => {
257
+ const fetchImpl = options.fetch ?? globalThis.fetch;
258
+ const response = await fetchImpl(action.path, {
259
+ method: action.method ?? "POST"
260
+ });
261
+ const body = await response.json().catch(() => null);
262
+ if (!response.ok) {
263
+ const message = body && typeof body === "object" && "error" in body ? String(body.error) : `Voice ops action "${action.id}" failed: HTTP ${response.status}`;
264
+ throw new Error(message);
265
+ }
266
+ return {
267
+ actionId: action.id,
268
+ body,
269
+ ok: response.ok,
270
+ ranAt: Date.now(),
271
+ status: response.status
272
+ };
273
+ };
274
+ var createVoiceOpsActionCenterStore = (options = {}) => {
275
+ const listeners = new Set;
276
+ let closed = false;
277
+ let timer;
278
+ let snapshot = {
279
+ actions: options.actions ?? createVoiceOpsActionCenterActions(),
280
+ error: null,
281
+ isRunning: false
282
+ };
283
+ const emit = () => {
284
+ for (const listener of listeners) {
285
+ listener();
286
+ }
287
+ };
288
+ const setActions = (actions) => {
289
+ snapshot = { ...snapshot, actions, updatedAt: Date.now() };
290
+ emit();
291
+ };
292
+ const run = async (actionId) => {
293
+ if (closed) {
294
+ return snapshot.lastResult;
295
+ }
296
+ const action = snapshot.actions.find((item) => item.id === actionId);
297
+ if (!action) {
298
+ throw new Error(`Voice ops action "${actionId}" is not configured.`);
299
+ }
300
+ if (action.disabled) {
301
+ throw new Error(`Voice ops action "${actionId}" is disabled.`);
302
+ }
303
+ snapshot = {
304
+ ...snapshot,
305
+ error: null,
306
+ isRunning: true,
307
+ runningActionId: action.id
308
+ };
309
+ emit();
310
+ try {
311
+ const result = await runVoiceOpsAction(action, options);
312
+ snapshot = {
313
+ ...snapshot,
314
+ error: null,
315
+ isRunning: false,
316
+ lastResult: result,
317
+ runningActionId: undefined,
318
+ updatedAt: Date.now()
319
+ };
320
+ emit();
321
+ return result;
322
+ } catch (error) {
323
+ snapshot = {
324
+ ...snapshot,
325
+ error: error instanceof Error ? error.message : String(error),
326
+ isRunning: false,
327
+ runningActionId: undefined
328
+ };
329
+ emit();
330
+ throw error;
331
+ }
332
+ };
333
+ const close = () => {
334
+ closed = true;
335
+ if (timer) {
336
+ clearInterval(timer);
337
+ timer = undefined;
338
+ }
339
+ listeners.clear();
340
+ };
341
+ if (options.intervalMs && options.intervalMs > 0) {
342
+ timer = setInterval(() => {
343
+ emit();
344
+ }, options.intervalMs);
345
+ }
346
+ return {
347
+ close,
348
+ getServerSnapshot: () => snapshot,
349
+ getSnapshot: () => snapshot,
350
+ run,
351
+ setActions,
352
+ subscribe: (listener) => {
353
+ listeners.add(listener);
354
+ return () => {
355
+ listeners.delete(listener);
356
+ };
357
+ }
358
+ };
359
+ };
360
+
361
+ // src/angular/voice-ops-action-center.service.ts
362
+ var _dec = [
363
+ Injectable2({ providedIn: "root" })
364
+ ];
365
+ var _init = __decoratorStart(undefined);
366
+
367
+ class VoiceOpsActionCenterService {
368
+ connect(options = {}) {
369
+ const store = createVoiceOpsActionCenterStore(options);
370
+ const actionsSignal = signal2([]);
371
+ const errorSignal = signal2(null);
372
+ const isRunningSignal = signal2(false);
373
+ const lastResultSignal = signal2(undefined);
374
+ const runningActionIdSignal = signal2(undefined);
375
+ const sync = () => {
376
+ const snapshot = store.getSnapshot();
377
+ actionsSignal.set(snapshot.actions);
378
+ errorSignal.set(snapshot.error);
379
+ isRunningSignal.set(snapshot.isRunning);
380
+ lastResultSignal.set(snapshot.lastResult);
381
+ runningActionIdSignal.set(snapshot.runningActionId);
382
+ };
383
+ const unsubscribe = store.subscribe(sync);
384
+ sync();
385
+ return {
386
+ actions: computed2(() => actionsSignal()),
387
+ close: () => {
388
+ unsubscribe();
389
+ store.close();
390
+ },
391
+ error: computed2(() => errorSignal()),
392
+ isRunning: computed2(() => isRunningSignal()),
393
+ lastResult: computed2(() => lastResultSignal()),
394
+ run: store.run,
395
+ runningActionId: computed2(() => runningActionIdSignal()),
396
+ setActions: store.setActions
397
+ };
398
+ }
399
+ }
400
+ VoiceOpsActionCenterService = __decorateElement(_init, 0, "VoiceOpsActionCenterService", _dec, VoiceOpsActionCenterService);
401
+ __runInitializers(_init, 1, VoiceOpsActionCenterService);
402
+ __decoratorMetadata(_init, VoiceOpsActionCenterService);
403
+ let _VoiceOpsActionCenterService = VoiceOpsActionCenterService;
404
+ // src/angular/voice-delivery-runtime.service.ts
405
+ import { computed as computed3, Injectable as Injectable3, signal as signal3 } from "@angular/core";
406
+
199
407
  // src/client/deliveryRuntime.ts
200
408
  var getDefaultActionPath = (path, action, options) => {
201
409
  if (action === "tick") {
@@ -335,19 +543,19 @@ var createVoiceDeliveryRuntimeStore = (path = "/api/voice-delivery-runtime", opt
335
543
 
336
544
  // src/angular/voice-delivery-runtime.service.ts
337
545
  var _dec = [
338
- Injectable2({ providedIn: "root" })
546
+ Injectable3({ providedIn: "root" })
339
547
  ];
340
548
  var _init = __decoratorStart(undefined);
341
549
 
342
550
  class VoiceDeliveryRuntimeService {
343
551
  connect(path = "/api/voice-delivery-runtime", options = {}) {
344
552
  const store = createVoiceDeliveryRuntimeStore(path, options);
345
- const actionErrorSignal = signal2(null);
346
- const actionStatusSignal = signal2("idle");
347
- const errorSignal = signal2(null);
348
- const isLoadingSignal = signal2(false);
349
- const reportSignal = signal2(undefined);
350
- const updatedAtSignal = signal2(undefined);
553
+ const actionErrorSignal = signal3(null);
554
+ const actionStatusSignal = signal3("idle");
555
+ const errorSignal = signal3(null);
556
+ const isLoadingSignal = signal3(false);
557
+ const reportSignal = signal3(undefined);
558
+ const updatedAtSignal = signal3(undefined);
351
559
  const sync = () => {
352
560
  const snapshot = store.getSnapshot();
353
561
  actionErrorSignal.set(snapshot.actionError);
@@ -367,15 +575,15 @@ class VoiceDeliveryRuntimeService {
367
575
  unsubscribe();
368
576
  store.close();
369
577
  },
370
- error: computed2(() => errorSignal()),
371
- actionError: computed2(() => actionErrorSignal()),
372
- actionStatus: computed2(() => actionStatusSignal()),
373
- isLoading: computed2(() => isLoadingSignal()),
578
+ error: computed3(() => errorSignal()),
579
+ actionError: computed3(() => actionErrorSignal()),
580
+ actionStatus: computed3(() => actionStatusSignal()),
581
+ isLoading: computed3(() => isLoadingSignal()),
374
582
  requeueDeadLetters: store.requeueDeadLetters,
375
583
  refresh: store.refresh,
376
- report: computed2(() => reportSignal()),
584
+ report: computed3(() => reportSignal()),
377
585
  tick: store.tick,
378
- updatedAt: computed2(() => updatedAtSignal())
586
+ updatedAt: computed3(() => updatedAtSignal())
379
587
  };
380
588
  }
381
589
  }
@@ -384,7 +592,7 @@ __runInitializers(_init, 1, VoiceDeliveryRuntimeService);
384
592
  __decoratorMetadata(_init, VoiceDeliveryRuntimeService);
385
593
  let _VoiceDeliveryRuntimeService = VoiceDeliveryRuntimeService;
386
594
  // src/angular/voice-campaign-dialer-proof.service.ts
387
- import { computed as computed3, Injectable as Injectable3, signal as signal3 } from "@angular/core";
595
+ import { computed as computed4, Injectable as Injectable4, signal as signal4 } from "@angular/core";
388
596
 
389
597
  // src/client/campaignDialerProof.ts
390
598
  var fetchVoiceCampaignDialerProofStatus = async (path = "/api/voice/campaigns/dialer-proof", options = {}) => {
@@ -506,18 +714,18 @@ var createVoiceCampaignDialerProofStore = (path = "/api/voice/campaigns/dialer-p
506
714
 
507
715
  // src/angular/voice-campaign-dialer-proof.service.ts
508
716
  var _dec = [
509
- Injectable3({ providedIn: "root" })
717
+ Injectable4({ providedIn: "root" })
510
718
  ];
511
719
  var _init = __decoratorStart(undefined);
512
720
 
513
721
  class VoiceCampaignDialerProofService {
514
722
  connect(path = "/api/voice/campaigns/dialer-proof", options = {}) {
515
723
  const store = createVoiceCampaignDialerProofStore(path, options);
516
- const errorSignal = signal3(null);
517
- const isLoadingSignal = signal3(false);
518
- const reportSignal = signal3(undefined);
519
- const statusSignal = signal3(undefined);
520
- const updatedAtSignal = signal3(undefined);
724
+ const errorSignal = signal4(null);
725
+ const isLoadingSignal = signal4(false);
726
+ const reportSignal = signal4(undefined);
727
+ const statusSignal = signal4(undefined);
728
+ const updatedAtSignal = signal4(undefined);
521
729
  const sync = () => {
522
730
  const snapshot = store.getSnapshot();
523
731
  errorSignal.set(snapshot.error);
@@ -534,13 +742,13 @@ class VoiceCampaignDialerProofService {
534
742
  unsubscribe();
535
743
  store.close();
536
744
  },
537
- error: computed3(() => errorSignal()),
538
- isLoading: computed3(() => isLoadingSignal()),
745
+ error: computed4(() => errorSignal()),
746
+ isLoading: computed4(() => isLoadingSignal()),
539
747
  refresh: store.refresh,
540
- report: computed3(() => reportSignal()),
748
+ report: computed4(() => reportSignal()),
541
749
  runProof: store.runProof,
542
- status: computed3(() => statusSignal()),
543
- updatedAt: computed3(() => updatedAtSignal())
750
+ status: computed4(() => statusSignal()),
751
+ updatedAt: computed4(() => updatedAtSignal())
544
752
  };
545
753
  }
546
754
  }
@@ -549,7 +757,7 @@ __runInitializers(_init, 1, VoiceCampaignDialerProofService);
549
757
  __decoratorMetadata(_init, VoiceCampaignDialerProofService);
550
758
  let _VoiceCampaignDialerProofService = VoiceCampaignDialerProofService;
551
759
  // src/angular/voice-stream.service.ts
552
- import { computed as computed4, Injectable as Injectable4, signal as signal4 } from "@angular/core";
760
+ import { computed as computed5, Injectable as Injectable5, signal as signal5 } from "@angular/core";
553
761
 
554
762
  // src/client/actions.ts
555
763
  var normalizeErrorMessage = (value) => {
@@ -1193,23 +1401,23 @@ var createVoiceStream = (path, options = {}) => {
1193
1401
 
1194
1402
  // src/angular/voice-stream.service.ts
1195
1403
  var _dec = [
1196
- Injectable4({ providedIn: "root" })
1404
+ Injectable5({ providedIn: "root" })
1197
1405
  ];
1198
1406
  var _init = __decoratorStart(undefined);
1199
1407
 
1200
1408
  class VoiceStreamService {
1201
1409
  connect(path, options = {}) {
1202
1410
  const stream = createVoiceStream(path, options);
1203
- const assistantAudioSignal = signal4([]);
1204
- const assistantTextsSignal = signal4([]);
1205
- const callSignal = signal4(null);
1206
- const errorSignal = signal4(null);
1207
- const isConnectedSignal = signal4(false);
1208
- const partialSignal = signal4("");
1209
- const reconnectSignal = signal4(stream.reconnect);
1210
- const sessionIdSignal = signal4(stream.sessionId);
1211
- const statusSignal = signal4(stream.status);
1212
- const turnsSignal = signal4([]);
1411
+ const assistantAudioSignal = signal5([]);
1412
+ const assistantTextsSignal = signal5([]);
1413
+ const callSignal = signal5(null);
1414
+ const errorSignal = signal5(null);
1415
+ const isConnectedSignal = signal5(false);
1416
+ const partialSignal = signal5("");
1417
+ const reconnectSignal = signal5(stream.reconnect);
1418
+ const sessionIdSignal = signal5(stream.sessionId);
1419
+ const statusSignal = signal5(stream.status);
1420
+ const turnsSignal = signal5([]);
1213
1421
  const sync = () => {
1214
1422
  assistantAudioSignal.set([...stream.assistantAudio]);
1215
1423
  assistantTextsSignal.set([...stream.assistantTexts]);
@@ -1225,23 +1433,23 @@ class VoiceStreamService {
1225
1433
  const unsubscribe = stream.subscribe(sync);
1226
1434
  sync();
1227
1435
  return {
1228
- assistantAudio: computed4(() => assistantAudioSignal()),
1229
- assistantTexts: computed4(() => assistantTextsSignal()),
1230
- call: computed4(() => callSignal()),
1436
+ assistantAudio: computed5(() => assistantAudioSignal()),
1437
+ assistantTexts: computed5(() => assistantTextsSignal()),
1438
+ call: computed5(() => callSignal()),
1231
1439
  callControl: (message) => stream.callControl(message),
1232
1440
  close: () => {
1233
1441
  unsubscribe();
1234
1442
  stream.close();
1235
1443
  },
1236
1444
  endTurn: () => stream.endTurn(),
1237
- error: computed4(() => errorSignal()),
1238
- isConnected: computed4(() => isConnectedSignal()),
1239
- partial: computed4(() => partialSignal()),
1240
- reconnect: computed4(() => reconnectSignal()),
1445
+ error: computed5(() => errorSignal()),
1446
+ isConnected: computed5(() => isConnectedSignal()),
1447
+ partial: computed5(() => partialSignal()),
1448
+ reconnect: computed5(() => reconnectSignal()),
1241
1449
  sendAudio: (audio) => stream.sendAudio(audio),
1242
- sessionId: computed4(() => sessionIdSignal()),
1243
- status: computed4(() => statusSignal()),
1244
- turns: computed4(() => turnsSignal())
1450
+ sessionId: computed5(() => sessionIdSignal()),
1451
+ status: computed5(() => statusSignal()),
1452
+ turns: computed5(() => turnsSignal())
1245
1453
  };
1246
1454
  }
1247
1455
  }
@@ -1250,7 +1458,7 @@ __runInitializers(_init, 1, VoiceStreamService);
1250
1458
  __decoratorMetadata(_init, VoiceStreamService);
1251
1459
  let _VoiceStreamService = VoiceStreamService;
1252
1460
  // src/angular/voice-controller.service.ts
1253
- import { computed as computed5, Injectable as Injectable5, signal as signal5 } from "@angular/core";
1461
+ import { computed as computed6, Injectable as Injectable6, signal as signal6 } from "@angular/core";
1254
1462
 
1255
1463
  // src/client/htmx.ts
1256
1464
  var DEFAULT_EVENT_NAME = "voice-refresh";
@@ -1895,24 +2103,24 @@ var createVoiceController = (path, options = {}) => {
1895
2103
 
1896
2104
  // src/angular/voice-controller.service.ts
1897
2105
  var _dec = [
1898
- Injectable5({ providedIn: "root" })
2106
+ Injectable6({ providedIn: "root" })
1899
2107
  ];
1900
2108
  var _init = __decoratorStart(undefined);
1901
2109
 
1902
2110
  class VoiceControllerService {
1903
2111
  connect(path, options = {}) {
1904
2112
  const controller = createVoiceController(path, options);
1905
- const assistantAudioSignal = signal5([]);
1906
- const assistantTextsSignal = signal5([]);
1907
- const errorSignal = signal5(null);
1908
- const isConnectedSignal = signal5(false);
1909
- const isRecordingSignal = signal5(false);
1910
- const partialSignal = signal5("");
1911
- const reconnectSignal = signal5(controller.reconnect);
1912
- const recordingErrorSignal = signal5(null);
1913
- const sessionIdSignal = signal5(controller.sessionId);
1914
- const statusSignal = signal5(controller.status);
1915
- const turnsSignal = signal5([]);
2113
+ const assistantAudioSignal = signal6([]);
2114
+ const assistantTextsSignal = signal6([]);
2115
+ const errorSignal = signal6(null);
2116
+ const isConnectedSignal = signal6(false);
2117
+ const isRecordingSignal = signal6(false);
2118
+ const partialSignal = signal6("");
2119
+ const reconnectSignal = signal6(controller.reconnect);
2120
+ const recordingErrorSignal = signal6(null);
2121
+ const sessionIdSignal = signal6(controller.sessionId);
2122
+ const statusSignal = signal6(controller.status);
2123
+ const turnsSignal = signal6([]);
1916
2124
  const sync = () => {
1917
2125
  assistantAudioSignal.set([...controller.assistantAudio]);
1918
2126
  assistantTextsSignal.set([...controller.assistantTexts]);
@@ -1929,27 +2137,27 @@ class VoiceControllerService {
1929
2137
  const unsubscribe = controller.subscribe(sync);
1930
2138
  sync();
1931
2139
  return {
1932
- assistantAudio: computed5(() => assistantAudioSignal()),
1933
- assistantTexts: computed5(() => assistantTextsSignal()),
2140
+ assistantAudio: computed6(() => assistantAudioSignal()),
2141
+ assistantTexts: computed6(() => assistantTextsSignal()),
1934
2142
  bindHTMX: controller.bindHTMX,
1935
2143
  close: () => {
1936
2144
  unsubscribe();
1937
2145
  controller.close();
1938
2146
  },
1939
2147
  endTurn: () => controller.endTurn(),
1940
- error: computed5(() => errorSignal()),
1941
- isConnected: computed5(() => isConnectedSignal()),
1942
- isRecording: computed5(() => isRecordingSignal()),
1943
- partial: computed5(() => partialSignal()),
1944
- reconnect: computed5(() => reconnectSignal()),
1945
- recordingError: computed5(() => recordingErrorSignal()),
2148
+ error: computed6(() => errorSignal()),
2149
+ isConnected: computed6(() => isConnectedSignal()),
2150
+ isRecording: computed6(() => isRecordingSignal()),
2151
+ partial: computed6(() => partialSignal()),
2152
+ reconnect: computed6(() => reconnectSignal()),
2153
+ recordingError: computed6(() => recordingErrorSignal()),
1946
2154
  sendAudio: (audio) => controller.sendAudio(audio),
1947
- sessionId: computed5(() => sessionIdSignal()),
2155
+ sessionId: computed6(() => sessionIdSignal()),
1948
2156
  startRecording: () => controller.startRecording(),
1949
- status: computed5(() => statusSignal()),
2157
+ status: computed6(() => statusSignal()),
1950
2158
  stopRecording: () => controller.stopRecording(),
1951
2159
  toggleRecording: () => controller.toggleRecording(),
1952
- turns: computed5(() => turnsSignal())
2160
+ turns: computed6(() => turnsSignal())
1953
2161
  };
1954
2162
  }
1955
2163
  }
@@ -1958,7 +2166,7 @@ __runInitializers(_init, 1, VoiceControllerService);
1958
2166
  __decoratorMetadata(_init, VoiceControllerService);
1959
2167
  let _VoiceControllerService = VoiceControllerService;
1960
2168
  // src/angular/voice-provider-capabilities.service.ts
1961
- import { computed as computed6, Injectable as Injectable6, signal as signal6 } from "@angular/core";
2169
+ import { computed as computed7, Injectable as Injectable7, signal as signal7 } from "@angular/core";
1962
2170
 
1963
2171
  // src/client/providerCapabilities.ts
1964
2172
  var fetchVoiceProviderCapabilities = async (path = "/api/provider-capabilities", options = {}) => {
@@ -2041,17 +2249,17 @@ var createVoiceProviderCapabilitiesStore = (path = "/api/provider-capabilities",
2041
2249
 
2042
2250
  // src/angular/voice-provider-capabilities.service.ts
2043
2251
  var _dec = [
2044
- Injectable6({ providedIn: "root" })
2252
+ Injectable7({ providedIn: "root" })
2045
2253
  ];
2046
2254
  var _init = __decoratorStart(undefined);
2047
2255
 
2048
2256
  class VoiceProviderCapabilitiesService {
2049
2257
  connect(path = "/api/provider-capabilities", options = {}) {
2050
2258
  const store = createVoiceProviderCapabilitiesStore(path, options);
2051
- const errorSignal = signal6(null);
2052
- const isLoadingSignal = signal6(false);
2053
- const reportSignal = signal6(undefined);
2054
- const updatedAtSignal = signal6(undefined);
2259
+ const errorSignal = signal7(null);
2260
+ const isLoadingSignal = signal7(false);
2261
+ const reportSignal = signal7(undefined);
2262
+ const updatedAtSignal = signal7(undefined);
2055
2263
  const sync = () => {
2056
2264
  const snapshot = store.getSnapshot();
2057
2265
  errorSignal.set(snapshot.error);
@@ -2067,11 +2275,11 @@ class VoiceProviderCapabilitiesService {
2067
2275
  unsubscribe();
2068
2276
  store.close();
2069
2277
  },
2070
- error: computed6(() => errorSignal()),
2071
- isLoading: computed6(() => isLoadingSignal()),
2278
+ error: computed7(() => errorSignal()),
2279
+ isLoading: computed7(() => isLoadingSignal()),
2072
2280
  refresh: store.refresh,
2073
- report: computed6(() => reportSignal()),
2074
- updatedAt: computed6(() => updatedAtSignal())
2281
+ report: computed7(() => reportSignal()),
2282
+ updatedAt: computed7(() => updatedAtSignal())
2075
2283
  };
2076
2284
  }
2077
2285
  }
@@ -2080,7 +2288,7 @@ __runInitializers(_init, 1, VoiceProviderCapabilitiesService);
2080
2288
  __decoratorMetadata(_init, VoiceProviderCapabilitiesService);
2081
2289
  let _VoiceProviderCapabilitiesService = VoiceProviderCapabilitiesService;
2082
2290
  // src/angular/voice-provider-status.service.ts
2083
- import { computed as computed7, Injectable as Injectable7, signal as signal7 } from "@angular/core";
2291
+ import { computed as computed8, Injectable as Injectable8, signal as signal8 } from "@angular/core";
2084
2292
 
2085
2293
  // src/client/providerStatus.ts
2086
2294
  var fetchVoiceProviderStatus = async (path = "/api/provider-status", options = {}) => {
@@ -2164,17 +2372,17 @@ var createVoiceProviderStatusStore = (path = "/api/provider-status", options = {
2164
2372
 
2165
2373
  // src/angular/voice-provider-status.service.ts
2166
2374
  var _dec = [
2167
- Injectable7({ providedIn: "root" })
2375
+ Injectable8({ providedIn: "root" })
2168
2376
  ];
2169
2377
  var _init = __decoratorStart(undefined);
2170
2378
 
2171
2379
  class VoiceProviderStatusService {
2172
2380
  connect(path = "/api/provider-status", options = {}) {
2173
2381
  const store = createVoiceProviderStatusStore(path, options);
2174
- const errorSignal = signal7(null);
2175
- const isLoadingSignal = signal7(false);
2176
- const providersSignal = signal7([]);
2177
- const updatedAtSignal = signal7(undefined);
2382
+ const errorSignal = signal8(null);
2383
+ const isLoadingSignal = signal8(false);
2384
+ const providersSignal = signal8([]);
2385
+ const updatedAtSignal = signal8(undefined);
2178
2386
  const sync = () => {
2179
2387
  const snapshot = store.getSnapshot();
2180
2388
  errorSignal.set(snapshot.error);
@@ -2190,11 +2398,11 @@ class VoiceProviderStatusService {
2190
2398
  unsubscribe();
2191
2399
  store.close();
2192
2400
  },
2193
- error: computed7(() => errorSignal()),
2194
- isLoading: computed7(() => isLoadingSignal()),
2195
- providers: computed7(() => providersSignal()),
2401
+ error: computed8(() => errorSignal()),
2402
+ isLoading: computed8(() => isLoadingSignal()),
2403
+ providers: computed8(() => providersSignal()),
2196
2404
  refresh: store.refresh,
2197
- updatedAt: computed7(() => updatedAtSignal())
2405
+ updatedAt: computed8(() => updatedAtSignal())
2198
2406
  };
2199
2407
  }
2200
2408
  }
@@ -2203,7 +2411,7 @@ __runInitializers(_init, 1, VoiceProviderStatusService);
2203
2411
  __decoratorMetadata(_init, VoiceProviderStatusService);
2204
2412
  let _VoiceProviderStatusService = VoiceProviderStatusService;
2205
2413
  // src/angular/voice-routing-status.service.ts
2206
- import { Injectable as Injectable8, signal as signal8 } from "@angular/core";
2414
+ import { Injectable as Injectable9, signal as signal9 } from "@angular/core";
2207
2415
 
2208
2416
  // src/client/routingStatus.ts
2209
2417
  var fetchVoiceRoutingStatus = async (path = "/api/routing/latest", options = {}) => {
@@ -2287,17 +2495,17 @@ var createVoiceRoutingStatusStore = (path = "/api/routing/latest", options = {})
2287
2495
 
2288
2496
  // src/angular/voice-routing-status.service.ts
2289
2497
  var _dec = [
2290
- Injectable8({ providedIn: "root" })
2498
+ Injectable9({ providedIn: "root" })
2291
2499
  ];
2292
2500
  var _init = __decoratorStart(undefined);
2293
2501
 
2294
2502
  class VoiceRoutingStatusService {
2295
2503
  connect(path = "/api/routing/latest", options = {}) {
2296
2504
  const store = createVoiceRoutingStatusStore(path, options);
2297
- const decisionSignal = signal8(null);
2298
- const errorSignal = signal8(null);
2299
- const isLoadingSignal = signal8(false);
2300
- const updatedAtSignal = signal8(undefined);
2505
+ const decisionSignal = signal9(null);
2506
+ const errorSignal = signal9(null);
2507
+ const isLoadingSignal = signal9(false);
2508
+ const updatedAtSignal = signal9(undefined);
2301
2509
  const sync = () => {
2302
2510
  const snapshot = store.getSnapshot();
2303
2511
  decisionSignal.set(snapshot.decision);
@@ -2326,7 +2534,7 @@ __runInitializers(_init, 1, VoiceRoutingStatusService);
2326
2534
  __decoratorMetadata(_init, VoiceRoutingStatusService);
2327
2535
  let _VoiceRoutingStatusService = VoiceRoutingStatusService;
2328
2536
  // src/angular/voice-trace-timeline.service.ts
2329
- import { computed as computed8, Injectable as Injectable9, signal as signal9 } from "@angular/core";
2537
+ import { computed as computed9, Injectable as Injectable10, signal as signal10 } from "@angular/core";
2330
2538
 
2331
2539
  // src/client/traceTimeline.ts
2332
2540
  var fetchVoiceTraceTimeline = async (path = "/api/voice-traces", options = {}) => {
@@ -2410,17 +2618,17 @@ var createVoiceTraceTimelineStore = (path = "/api/voice-traces", options = {}) =
2410
2618
 
2411
2619
  // src/angular/voice-trace-timeline.service.ts
2412
2620
  var _dec = [
2413
- Injectable9({ providedIn: "root" })
2621
+ Injectable10({ providedIn: "root" })
2414
2622
  ];
2415
2623
  var _init = __decoratorStart(undefined);
2416
2624
 
2417
2625
  class VoiceTraceTimelineService {
2418
2626
  connect(path = "/api/voice-traces", options = {}) {
2419
2627
  const store = createVoiceTraceTimelineStore(path, options);
2420
- const errorSignal = signal9(null);
2421
- const isLoadingSignal = signal9(false);
2422
- const reportSignal = signal9(null);
2423
- const updatedAtSignal = signal9(undefined);
2628
+ const errorSignal = signal10(null);
2629
+ const isLoadingSignal = signal10(false);
2630
+ const reportSignal = signal10(null);
2631
+ const updatedAtSignal = signal10(undefined);
2424
2632
  const sync = () => {
2425
2633
  const snapshot = store.getSnapshot();
2426
2634
  errorSignal.set(snapshot.error);
@@ -2436,11 +2644,11 @@ class VoiceTraceTimelineService {
2436
2644
  unsubscribe();
2437
2645
  store.close();
2438
2646
  },
2439
- error: computed8(() => errorSignal()),
2440
- isLoading: computed8(() => isLoadingSignal()),
2647
+ error: computed9(() => errorSignal()),
2648
+ isLoading: computed9(() => isLoadingSignal()),
2441
2649
  refresh: store.refresh,
2442
- report: computed8(() => reportSignal()),
2443
- updatedAt: computed8(() => updatedAtSignal())
2650
+ report: computed9(() => reportSignal()),
2651
+ updatedAt: computed9(() => updatedAtSignal())
2444
2652
  };
2445
2653
  }
2446
2654
  }
@@ -2449,7 +2657,7 @@ __runInitializers(_init, 1, VoiceTraceTimelineService);
2449
2657
  __decoratorMetadata(_init, VoiceTraceTimelineService);
2450
2658
  let _VoiceTraceTimelineService = VoiceTraceTimelineService;
2451
2659
  // src/angular/voice-turn-latency.service.ts
2452
- import { computed as computed9, Injectable as Injectable10, signal as signal10 } from "@angular/core";
2660
+ import { computed as computed10, Injectable as Injectable11, signal as signal11 } from "@angular/core";
2453
2661
 
2454
2662
  // src/client/turnLatency.ts
2455
2663
  var fetchVoiceTurnLatency = async (path = "/api/turn-latency", options = {}) => {
@@ -2556,17 +2764,17 @@ var createVoiceTurnLatencyStore = (path = "/api/turn-latency", options = {}) =>
2556
2764
 
2557
2765
  // src/angular/voice-turn-latency.service.ts
2558
2766
  var _dec = [
2559
- Injectable10({ providedIn: "root" })
2767
+ Injectable11({ providedIn: "root" })
2560
2768
  ];
2561
2769
  var _init = __decoratorStart(undefined);
2562
2770
 
2563
2771
  class VoiceTurnLatencyService {
2564
2772
  connect(path = "/api/turn-latency", options = {}) {
2565
2773
  const store = createVoiceTurnLatencyStore(path, options);
2566
- const errorSignal = signal10(null);
2567
- const isLoadingSignal = signal10(false);
2568
- const reportSignal = signal10(undefined);
2569
- const updatedAtSignal = signal10(undefined);
2774
+ const errorSignal = signal11(null);
2775
+ const isLoadingSignal = signal11(false);
2776
+ const reportSignal = signal11(undefined);
2777
+ const updatedAtSignal = signal11(undefined);
2570
2778
  const sync = () => {
2571
2779
  const snapshot = store.getSnapshot();
2572
2780
  errorSignal.set(snapshot.error);
@@ -2582,12 +2790,12 @@ class VoiceTurnLatencyService {
2582
2790
  unsubscribe();
2583
2791
  store.close();
2584
2792
  },
2585
- error: computed9(() => errorSignal()),
2586
- isLoading: computed9(() => isLoadingSignal()),
2793
+ error: computed10(() => errorSignal()),
2794
+ isLoading: computed10(() => isLoadingSignal()),
2587
2795
  refresh: store.refresh,
2588
- report: computed9(() => reportSignal()),
2796
+ report: computed10(() => reportSignal()),
2589
2797
  runProof: store.runProof,
2590
- updatedAt: computed9(() => updatedAtSignal())
2798
+ updatedAt: computed10(() => updatedAtSignal())
2591
2799
  };
2592
2800
  }
2593
2801
  }
@@ -2596,7 +2804,7 @@ __runInitializers(_init, 1, VoiceTurnLatencyService);
2596
2804
  __decoratorMetadata(_init, VoiceTurnLatencyService);
2597
2805
  let _VoiceTurnLatencyService = VoiceTurnLatencyService;
2598
2806
  // src/angular/voice-turn-quality.service.ts
2599
- import { computed as computed10, Injectable as Injectable11, signal as signal11 } from "@angular/core";
2807
+ import { computed as computed11, Injectable as Injectable12, signal as signal12 } from "@angular/core";
2600
2808
 
2601
2809
  // src/client/turnQuality.ts
2602
2810
  var fetchVoiceTurnQuality = async (path = "/api/turn-quality", options = {}) => {
@@ -2679,17 +2887,17 @@ var createVoiceTurnQualityStore = (path = "/api/turn-quality", options = {}) =>
2679
2887
 
2680
2888
  // src/angular/voice-turn-quality.service.ts
2681
2889
  var _dec = [
2682
- Injectable11({ providedIn: "root" })
2890
+ Injectable12({ providedIn: "root" })
2683
2891
  ];
2684
2892
  var _init = __decoratorStart(undefined);
2685
2893
 
2686
2894
  class VoiceTurnQualityService {
2687
2895
  connect(path = "/api/turn-quality", options = {}) {
2688
2896
  const store = createVoiceTurnQualityStore(path, options);
2689
- const errorSignal = signal11(null);
2690
- const isLoadingSignal = signal11(false);
2691
- const reportSignal = signal11(undefined);
2692
- const updatedAtSignal = signal11(undefined);
2897
+ const errorSignal = signal12(null);
2898
+ const isLoadingSignal = signal12(false);
2899
+ const reportSignal = signal12(undefined);
2900
+ const updatedAtSignal = signal12(undefined);
2693
2901
  const sync = () => {
2694
2902
  const snapshot = store.getSnapshot();
2695
2903
  errorSignal.set(snapshot.error);
@@ -2705,11 +2913,11 @@ class VoiceTurnQualityService {
2705
2913
  unsubscribe();
2706
2914
  store.close();
2707
2915
  },
2708
- error: computed10(() => errorSignal()),
2709
- isLoading: computed10(() => isLoadingSignal()),
2916
+ error: computed11(() => errorSignal()),
2917
+ isLoading: computed11(() => isLoadingSignal()),
2710
2918
  refresh: store.refresh,
2711
- report: computed10(() => reportSignal()),
2712
- updatedAt: computed10(() => updatedAtSignal())
2919
+ report: computed11(() => reportSignal()),
2920
+ updatedAt: computed11(() => updatedAtSignal())
2713
2921
  };
2714
2922
  }
2715
2923
  }
@@ -2718,7 +2926,7 @@ __runInitializers(_init, 1, VoiceTurnQualityService);
2718
2926
  __decoratorMetadata(_init, VoiceTurnQualityService);
2719
2927
  let _VoiceTurnQualityService = VoiceTurnQualityService;
2720
2928
  // src/angular/voice-workflow-status.service.ts
2721
- import { computed as computed11, Injectable as Injectable12, signal as signal12 } from "@angular/core";
2929
+ import { computed as computed12, Injectable as Injectable13, signal as signal13 } from "@angular/core";
2722
2930
 
2723
2931
  // src/client/workflowStatus.ts
2724
2932
  var fetchVoiceWorkflowStatus = async (path = "/evals/scenarios/json", options = {}) => {
@@ -2801,17 +3009,17 @@ var createVoiceWorkflowStatusStore = (path = "/evals/scenarios/json", options =
2801
3009
 
2802
3010
  // src/angular/voice-workflow-status.service.ts
2803
3011
  var _dec = [
2804
- Injectable12({ providedIn: "root" })
3012
+ Injectable13({ providedIn: "root" })
2805
3013
  ];
2806
3014
  var _init = __decoratorStart(undefined);
2807
3015
 
2808
3016
  class VoiceWorkflowStatusService {
2809
3017
  connect(path = "/evals/scenarios/json", options = {}) {
2810
3018
  const store = createVoiceWorkflowStatusStore(path, options);
2811
- const errorSignal = signal12(null);
2812
- const isLoadingSignal = signal12(false);
2813
- const reportSignal = signal12(undefined);
2814
- const updatedAtSignal = signal12(undefined);
3019
+ const errorSignal = signal13(null);
3020
+ const isLoadingSignal = signal13(false);
3021
+ const reportSignal = signal13(undefined);
3022
+ const updatedAtSignal = signal13(undefined);
2815
3023
  const sync = () => {
2816
3024
  const snapshot = store.getSnapshot();
2817
3025
  errorSignal.set(snapshot.error);
@@ -2829,11 +3037,11 @@ class VoiceWorkflowStatusService {
2829
3037
  unsubscribe();
2830
3038
  store.close();
2831
3039
  },
2832
- error: computed11(() => errorSignal()),
2833
- isLoading: computed11(() => isLoadingSignal()),
3040
+ error: computed12(() => errorSignal()),
3041
+ isLoading: computed12(() => isLoadingSignal()),
2834
3042
  refresh: store.refresh,
2835
- report: computed11(() => reportSignal()),
2836
- updatedAt: computed11(() => updatedAtSignal())
3043
+ report: computed12(() => reportSignal()),
3044
+ updatedAt: computed12(() => updatedAtSignal())
2837
3045
  };
2838
3046
  }
2839
3047
  }
@@ -2842,7 +3050,7 @@ __runInitializers(_init, 1, VoiceWorkflowStatusService);
2842
3050
  __decoratorMetadata(_init, VoiceWorkflowStatusService);
2843
3051
  let _VoiceWorkflowStatusService = VoiceWorkflowStatusService;
2844
3052
  // src/angular/voice-delivery-runtime.component.ts
2845
- import { Component, Input, signal as signal13 } from "@angular/core";
3053
+ import { Component, Input, signal as signal14 } from "@angular/core";
2846
3054
 
2847
3055
  // src/client/deliveryRuntimeWidget.ts
2848
3056
  var DEFAULT_TITLE = "Voice Delivery Runtime";
@@ -3082,7 +3290,7 @@ class VoiceDeliveryRuntimeComponent {
3082
3290
  }
3083
3291
  cleanup = () => {};
3084
3292
  store;
3085
- model = signal13(createVoiceDeliveryRuntimeViewModel({
3293
+ model = signal14(createVoiceDeliveryRuntimeViewModel({
3086
3294
  actionError: null,
3087
3295
  actionStatus: "idle",
3088
3296
  error: null,
@@ -3139,6 +3347,7 @@ export {
3139
3347
  VoiceProviderStatusService,
3140
3348
  VoiceProviderCapabilitiesService,
3141
3349
  VoiceOpsStatusService,
3350
+ VoiceOpsActionCenterService,
3142
3351
  VoiceDeliveryRuntimeService,
3143
3352
  VoiceDeliveryRuntimeComponent,
3144
3353
  VoiceControllerService,