@absolutejs/voice 0.0.22-beta.529 → 0.0.22-beta.530

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.
@@ -4074,6 +4074,24 @@ var summarizeVoiceProviderHealth = async (input) => {
4074
4074
  }
4075
4075
  return summaries;
4076
4076
  };
4077
+ var summarizeVoiceProviderHealthByModality = async (events, {
4078
+ llmProviders,
4079
+ sttProviders,
4080
+ ttsProviders
4081
+ }) => {
4082
+ const groups = await Promise.all([
4083
+ summarizeVoiceProviderHealth({ events, providers: llmProviders ?? [] }),
4084
+ summarizeVoiceProviderHealth({
4085
+ events: events.filter((event) => event.payload.kind === "stt"),
4086
+ providers: sttProviders ?? []
4087
+ }),
4088
+ summarizeVoiceProviderHealth({
4089
+ events: events.filter((event) => event.payload.kind === "tts"),
4090
+ providers: ttsProviders ?? []
4091
+ })
4092
+ ]);
4093
+ return groups.flat();
4094
+ };
4077
4095
  var renderVoiceProviderHealthHTML = (providers) => providers.length === 0 ? '<p class="voice-provider-empty">No provider status yet.</p>' : [
4078
4096
  '<div class="voice-provider-health">',
4079
4097
  ...providers.map((provider) => {
package/dist/index.js CHANGED
@@ -8257,6 +8257,24 @@ var summarizeVoiceProviderHealth = async (input) => {
8257
8257
  }
8258
8258
  return summaries;
8259
8259
  };
8260
+ var summarizeVoiceProviderHealthByModality = async (events, {
8261
+ llmProviders,
8262
+ sttProviders,
8263
+ ttsProviders
8264
+ }) => {
8265
+ const groups = await Promise.all([
8266
+ summarizeVoiceProviderHealth({ events, providers: llmProviders ?? [] }),
8267
+ summarizeVoiceProviderHealth({
8268
+ events: events.filter((event) => event.payload.kind === "stt"),
8269
+ providers: sttProviders ?? []
8270
+ }),
8271
+ summarizeVoiceProviderHealth({
8272
+ events: events.filter((event) => event.payload.kind === "tts"),
8273
+ providers: ttsProviders ?? []
8274
+ })
8275
+ ]);
8276
+ return groups.flat();
8277
+ };
8260
8278
  var renderVoiceProviderHealthHTML = (providers) => providers.length === 0 ? '<p class="voice-provider-empty">No provider status yet.</p>' : [
8261
8279
  '<div class="voice-provider-health">',
8262
8280
  ...providers.map((provider) => {
@@ -28268,20 +28286,11 @@ var buildVoiceProductionReadinessReport = async (options, input = {}) => {
28268
28286
  additionalChecks
28269
28287
  ] = await Promise.all([
28270
28288
  time("quality", () => evaluateVoiceQuality({ events: readinessEvents })),
28271
- time("providers", () => Promise.all([
28272
- summarizeVoiceProviderHealth({
28273
- events: readinessEvents,
28274
- providers: options.llmProviders ?? []
28275
- }),
28276
- summarizeVoiceProviderHealth({
28277
- events: readinessEvents.filter((event) => event.payload.kind === "stt"),
28278
- providers: options.sttProviders ?? []
28279
- }),
28280
- summarizeVoiceProviderHealth({
28281
- events: readinessEvents.filter((event) => event.payload.kind === "tts"),
28282
- providers: options.ttsProviders ?? []
28283
- })
28284
- ]).then((groups) => groups.flat())),
28289
+ time("providers", () => summarizeVoiceProviderHealthByModality(readinessEvents, {
28290
+ llmProviders: options.llmProviders,
28291
+ sttProviders: options.sttProviders,
28292
+ ttsProviders: options.ttsProviders
28293
+ })),
28285
28294
  time("sessions", () => summarizeVoiceSessions({ events: readinessEvents, status: "all" })),
28286
28295
  time("handoffs", () => summarizeVoiceHandoffHealth({ events: readinessEvents })),
28287
28296
  time("audit", () => summarizeAuditEvidence(options)),
@@ -29714,20 +29723,11 @@ var countProviderStatuses = (providers) => {
29714
29723
  };
29715
29724
  var buildVoiceOpsConsoleReport = async (options) => {
29716
29725
  const events = await options.store.list();
29717
- const providers = [
29718
- ...await summarizeVoiceProviderHealth({
29719
- events,
29720
- providers: options.llmProviders
29721
- }),
29722
- ...await summarizeVoiceProviderHealth({
29723
- events,
29724
- providers: options.sttProviders
29725
- }),
29726
- ...await summarizeVoiceProviderHealth({
29727
- events,
29728
- providers: options.ttsProviders
29729
- })
29730
- ];
29726
+ const providers = await summarizeVoiceProviderHealthByModality(events, {
29727
+ llmProviders: options.llmProviders,
29728
+ sttProviders: options.sttProviders,
29729
+ ttsProviders: options.ttsProviders
29730
+ });
29731
29731
  const handoffs = await summarizeVoiceHandoffHealth({ events });
29732
29732
  const sessions = await summarizeVoiceSessions({
29733
29733
  events,
@@ -29880,20 +29880,11 @@ var summarizeVoiceOpsStatus = async (options) => {
29880
29880
  total: liveReport.total
29881
29881
  };
29882
29882
  })(),
29883
- !shouldInclude("providers") ? undefined : Promise.all([
29884
- summarizeVoiceProviderHealth({
29885
- events,
29886
- providers: options.llmProviders
29887
- }),
29888
- summarizeVoiceProviderHealth({
29889
- events: events.filter((event) => event.payload.kind === "stt"),
29890
- providers: options.sttProviders
29891
- }),
29892
- summarizeVoiceProviderHealth({
29893
- events: events.filter((event) => event.payload.kind === "tts"),
29894
- providers: options.ttsProviders
29895
- })
29896
- ]).then((groups) => groups.flat()),
29883
+ !shouldInclude("providers") ? undefined : summarizeVoiceProviderHealthByModality(events, {
29884
+ llmProviders: options.llmProviders,
29885
+ sttProviders: options.sttProviders,
29886
+ ttsProviders: options.ttsProviders
29887
+ }),
29897
29888
  !shouldInclude("sessions") ? undefined : summarizeVoiceSessions({
29898
29889
  events
29899
29890
  }),
@@ -34,6 +34,16 @@ export type VoiceProviderHealthRoutesOptions<TProvider extends string = string>
34
34
  path?: string;
35
35
  };
36
36
  export declare const summarizeVoiceProviderHealth: <TProvider extends string = string>(input: StoredVoiceTraceEvent[] | VoiceProviderHealthSummaryOptions<TProvider>) => Promise<VoiceProviderHealthSummary<TProvider>[]>;
37
+ export type VoiceProviderHealthByModalityOptions = {
38
+ llmProviders?: readonly string[];
39
+ sttProviders?: readonly string[];
40
+ ttsProviders?: readonly string[];
41
+ };
42
+ /**
43
+ * Provider-health summary across LLM/STT/TTS, scoping STT and TTS to their
44
+ * respective trace-event kinds. Returns the three groups flattened.
45
+ */
46
+ export declare const summarizeVoiceProviderHealthByModality: (events: StoredVoiceTraceEvent[], { llmProviders, sttProviders, ttsProviders, }: VoiceProviderHealthByModalityOptions) => Promise<VoiceProviderHealthSummary[]>;
37
47
  export declare const renderVoiceProviderHealthHTML: (providers: VoiceProviderHealthSummary[]) => string;
38
48
  export declare const createVoiceProviderHealthJSONHandler: <TProvider extends string = string>(options: VoiceProviderHealthHandlerOptions<TProvider>) => () => Promise<VoiceProviderHealthSummary<TProvider>[]>;
39
49
  export declare const createVoiceProviderHealthHTMLHandler: <TProvider extends string = string>(options: VoiceProviderHealthHTMLHandlerOptions<TProvider>) => () => Promise<Response>;
@@ -1668,6 +1668,24 @@ var summarizeVoiceProviderHealth = async (input) => {
1668
1668
  }
1669
1669
  return summaries;
1670
1670
  };
1671
+ var summarizeVoiceProviderHealthByModality = async (events, {
1672
+ llmProviders,
1673
+ sttProviders,
1674
+ ttsProviders
1675
+ }) => {
1676
+ const groups = await Promise.all([
1677
+ summarizeVoiceProviderHealth({ events, providers: llmProviders ?? [] }),
1678
+ summarizeVoiceProviderHealth({
1679
+ events: events.filter((event) => event.payload.kind === "stt"),
1680
+ providers: sttProviders ?? []
1681
+ }),
1682
+ summarizeVoiceProviderHealth({
1683
+ events: events.filter((event) => event.payload.kind === "tts"),
1684
+ providers: ttsProviders ?? []
1685
+ })
1686
+ ]);
1687
+ return groups.flat();
1688
+ };
1671
1689
  var renderVoiceProviderHealthHTML = (providers) => providers.length === 0 ? '<p class="voice-provider-empty">No provider status yet.</p>' : [
1672
1690
  '<div class="voice-provider-health">',
1673
1691
  ...providers.map((provider) => {
package/dist/vue/index.js CHANGED
@@ -1589,6 +1589,24 @@ var summarizeVoiceProviderHealth = async (input) => {
1589
1589
  }
1590
1590
  return summaries;
1591
1591
  };
1592
+ var summarizeVoiceProviderHealthByModality = async (events, {
1593
+ llmProviders,
1594
+ sttProviders,
1595
+ ttsProviders
1596
+ }) => {
1597
+ const groups = await Promise.all([
1598
+ summarizeVoiceProviderHealth({ events, providers: llmProviders ?? [] }),
1599
+ summarizeVoiceProviderHealth({
1600
+ events: events.filter((event) => event.payload.kind === "stt"),
1601
+ providers: sttProviders ?? []
1602
+ }),
1603
+ summarizeVoiceProviderHealth({
1604
+ events: events.filter((event) => event.payload.kind === "tts"),
1605
+ providers: ttsProviders ?? []
1606
+ })
1607
+ ]);
1608
+ return groups.flat();
1609
+ };
1592
1610
  var renderVoiceProviderHealthHTML = (providers) => providers.length === 0 ? '<p class="voice-provider-empty">No provider status yet.</p>' : [
1593
1611
  '<div class="voice-provider-health">',
1594
1612
  ...providers.map((provider) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@absolutejs/voice",
3
- "version": "0.0.22-beta.529",
3
+ "version": "0.0.22-beta.530",
4
4
  "description": "Voice primitives and Elysia plugin for AbsoluteJS",
5
5
  "repository": {
6
6
  "type": "git",