@absolutejs/voice 0.0.22-beta.349 → 0.0.22-beta.350

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.
@@ -4165,6 +4165,42 @@ var buildVoiceRealCallProfileDefaults = (input, options = {}) => {
4165
4165
  }
4166
4166
  };
4167
4167
  };
4168
+ var normalizeProviderRouteCandidate = (provider, role) => {
4169
+ const rolePrefix = `${role}:`;
4170
+ return provider.startsWith(rolePrefix) ? provider.slice(rolePrefix.length) : provider;
4171
+ };
4172
+ var expandProviderRouteCandidates = (provider, role, aliases = {}) => {
4173
+ if (!provider) {
4174
+ return [];
4175
+ }
4176
+ const explicitAlias = aliases[provider];
4177
+ const normalized = normalizeProviderRouteCandidate(provider, role);
4178
+ const normalizedAlias = aliases[normalized];
4179
+ const aliasCandidates = [
4180
+ ...Array.isArray(explicitAlias) ? explicitAlias : explicitAlias ? [explicitAlias] : [],
4181
+ ...Array.isArray(normalizedAlias) ? normalizedAlias : normalizedAlias ? [normalizedAlias] : []
4182
+ ];
4183
+ return [
4184
+ ...aliasCandidates,
4185
+ provider,
4186
+ normalized,
4187
+ ...normalized.split("+").filter(Boolean)
4188
+ ];
4189
+ };
4190
+ var readRealCallProfileDefaultsReport = (input) => ("defaults" in input) ? input.defaults : input;
4191
+ var resolveVoiceRealCallProfileProviderRoute = (options) => {
4192
+ const defaults = readRealCallProfileDefaultsReport(options.defaults);
4193
+ const profile = defaults.profiles.find((item) => item.profileId === options.profileId) ?? defaults.profiles.find((item) => item.status === "pass") ?? defaults.profiles[0];
4194
+ const provider = profile?.providerRoutes[options.role];
4195
+ const available = new Set(options.availableProviders ?? []);
4196
+ const candidates = expandProviderRouteCandidates(provider, options.role, options.providerAliases);
4197
+ for (const candidate of candidates) {
4198
+ if ((options.availableProviders === undefined || available.has(candidate)) && candidate) {
4199
+ return candidate;
4200
+ }
4201
+ }
4202
+ return options.fallbackProvider;
4203
+ };
4168
4204
  var buildVoiceRealCallProfileHistoryReport = (options = {}) => {
4169
4205
  const generatedAt = options.generatedAt ?? (options.now instanceof Date ? options.now.toISOString() : typeof options.now === "number" ? new Date(options.now).toISOString() : typeof options.now === "string" ? new Date(options.now).toISOString() : new Date().toISOString());
4170
4206
  const evidenceReport = options.evidence && options.evidence.length > 0 ? buildVoiceProofTrendReportFromRealCallProfiles({
package/dist/index.d.ts CHANGED
@@ -30,10 +30,10 @@ export { assertVoicePlatformCoverage, buildVoicePlatformCoverageSummary, createV
30
30
  export { assertVoiceCompetitiveCoverage, buildVoiceCompetitiveCoverageReport, createVoiceCompetitiveCoverageRoutes, evaluateVoiceCompetitiveCoverage, renderVoiceCompetitiveCoverageHTML, renderVoiceCompetitiveCoverageMarkdown } from './competitiveCoverage';
31
31
  export type { VoiceCompetitiveCoverageAssertionInput, VoiceCompetitiveCoverageAssertionReport, VoiceCompetitiveCoverageIssue, VoiceCompetitiveCoverageLevel, VoiceCompetitiveCoverageReport, VoiceCompetitiveCoverageReportInput, VoiceCompetitiveCoverageRoutesOptions, VoiceCompetitiveCoverageStatus, VoiceCompetitiveCoverageSummary, VoiceCompetitiveDepthLevel, VoiceCompetitiveEvidence, VoiceCompetitiveSurface } from './competitiveCoverage';
32
32
  export type { VoicePlatformCoverageAssertionInput, VoicePlatformCoverageAssertionReport, VoicePlatformCoverageEvidence, VoicePlatformCoverageRoutesOptions, VoicePlatformCoverageStatus, VoicePlatformCoverageSummary, VoicePlatformCoverageSummaryInput, VoicePlatformCoverageSurface } from './platformCoverage';
33
- export { assertVoiceProofTrendEvidence, buildEmptyVoiceProofTrendReport, buildVoiceProofTrendProfileSummaries, buildVoiceProofTrendRecommendationReport, buildVoiceProofTrendReportFromRealCallProfiles, buildVoiceProofTrendReport, buildVoiceRealCallProfileDefaults, buildVoiceRealCallProfileHistoryReport, createVoiceProofTrendRecommendationRoutes, createVoiceProofTrendRoutes, createVoiceRealCallProfileHistoryRoutes, DEFAULT_VOICE_PROOF_TREND_PROFILE_DEFINITIONS, DEFAULT_VOICE_PROOF_TRENDS_MAX_AGE_MS, evaluateVoiceProofTrendEvidence, formatVoiceProofTrendAge, normalizeVoiceProofTrendReport, readVoiceProofTrendReportFile, renderVoiceProofTrendRecommendationHTML, renderVoiceProofTrendRecommendationMarkdown, renderVoiceRealCallProfileHistoryHTML, renderVoiceRealCallProfileHistoryMarkdown } from './proofTrends';
33
+ export { assertVoiceProofTrendEvidence, buildEmptyVoiceProofTrendReport, buildVoiceProofTrendProfileSummaries, buildVoiceProofTrendRecommendationReport, buildVoiceProofTrendReportFromRealCallProfiles, buildVoiceProofTrendReport, buildVoiceRealCallProfileDefaults, buildVoiceRealCallProfileHistoryReport, createVoiceProofTrendRecommendationRoutes, createVoiceProofTrendRoutes, createVoiceRealCallProfileHistoryRoutes, DEFAULT_VOICE_PROOF_TREND_PROFILE_DEFINITIONS, DEFAULT_VOICE_PROOF_TRENDS_MAX_AGE_MS, evaluateVoiceProofTrendEvidence, formatVoiceProofTrendAge, normalizeVoiceProofTrendReport, readVoiceProofTrendReportFile, renderVoiceProofTrendRecommendationHTML, renderVoiceProofTrendRecommendationMarkdown, renderVoiceRealCallProfileHistoryHTML, renderVoiceRealCallProfileHistoryMarkdown, resolveVoiceRealCallProfileProviderRoute } from './proofTrends';
34
34
  export { buildVoiceProviderDecisionTraceReport, createVoiceProviderDecisionTraceEvent, createVoiceProviderDecisionTraceRoutes, listVoiceProviderDecisionTraces, renderVoiceProviderDecisionTraceHTML, renderVoiceProviderDecisionTraceMarkdown } from './providerDecisionTraces';
35
35
  export type { VoiceProviderDecisionStatus, VoiceProviderDecisionSurfaceReport, VoiceProviderDecisionTrace, VoiceProviderDecisionTraceInput, VoiceProviderDecisionTraceIssue, VoiceProviderDecisionTraceReport, VoiceProviderDecisionTraceReportOptions, VoiceProviderDecisionTraceRoutesOptions } from './providerDecisionTraces';
36
- export type { VoiceProofTrendAssertionInput, VoiceProofTrendAssertionReport, VoiceProofTrendCycle, VoiceProofTrendProfileDefinition, VoiceProofTrendProfileRecommendation, VoiceProofTrendProfileSummaryOptions, VoiceProofTrendProfileSummary, VoiceProofTrendProviderRecommendation, VoiceProofTrendProviderSummary, VoiceProofTrendRecommendation, VoiceProofTrendRecommendationOptions, VoiceProofTrendRecommendationReport, VoiceProofTrendRecommendationRoutesOptions, VoiceProofTrendRecommendationStatus, VoiceProofTrendRecommendationSurface, VoiceProofTrendRealCallProfileEvidence, VoiceProofTrendRealCallProfileReportOptions, VoiceProofTrendReport, VoiceProofTrendReportInput, VoiceProofTrendRoutesOptions, VoiceProofTrendRuntimeChannelSummary, VoiceProofTrendStatus, VoiceProofTrendSummary, VoiceRealCallProfileDefault, VoiceRealCallProfileDefaultsOptions, VoiceRealCallProfileDefaultsReport, VoiceRealCallProfileHistoryOptions, VoiceRealCallProfileHistoryReport, VoiceRealCallProfileHistoryRoutesOptions } from './proofTrends';
36
+ export type { VoiceProofTrendAssertionInput, VoiceProofTrendAssertionReport, VoiceProofTrendCycle, VoiceProofTrendProfileDefinition, VoiceProofTrendProfileRecommendation, VoiceProofTrendProfileSummaryOptions, VoiceProofTrendProfileSummary, VoiceProofTrendProviderRecommendation, VoiceProofTrendProviderSummary, VoiceProofTrendRecommendation, VoiceProofTrendRecommendationOptions, VoiceProofTrendRecommendationReport, VoiceProofTrendRecommendationRoutesOptions, VoiceProofTrendRecommendationStatus, VoiceProofTrendRecommendationSurface, VoiceProofTrendRealCallProfileEvidence, VoiceProofTrendRealCallProfileReportOptions, VoiceProofTrendReport, VoiceProofTrendReportInput, VoiceProofTrendRoutesOptions, VoiceProofTrendRuntimeChannelSummary, VoiceProofTrendStatus, VoiceProofTrendSummary, VoiceRealCallProfileDefault, VoiceRealCallProfileDefaultsOptions, VoiceRealCallProfileDefaultsReport, VoiceRealCallProfileHistoryOptions, VoiceRealCallProfileHistoryReport, VoiceRealCallProfileHistoryRoutesOptions, VoiceRealCallProfileProviderRouteOptions } from './proofTrends';
37
37
  export { assertVoiceSloCalibration, buildVoiceSloCalibrationReport, buildVoiceSloReadinessThresholdReport, createVoiceSloReadinessThresholdOptions, createVoiceSloReadinessThresholdRoutes, createVoiceSloThresholdProfile, createVoiceSloCalibrationRoutes, renderVoiceSloCalibrationMarkdown, renderVoiceSloReadinessThresholdHTML, renderVoiceSloReadinessThresholdMarkdown } from './sloCalibration';
38
38
  export type { VoiceSloCalibrationMetricKey, VoiceSloCalibrationOptions, VoiceSloCalibrationReport, VoiceSloCalibrationRoutesOptions, VoiceSloCalibrationSample, VoiceSloCalibrationStatus, VoiceSloCalibrationThreshold, VoiceSloCalibrationThresholds, VoiceSloReadinessThresholdReport, VoiceSloReadinessThresholdReportOptions, VoiceSloReadinessThresholdOptions, VoiceSloReadinessThresholdRoutesOptions, VoiceSloThresholdProfile } from './sloCalibration';
39
39
  export { assertVoiceLiveOpsControlEvidence, assertVoiceLiveOpsEvidence, buildVoiceLiveOpsControlState, createVoiceLiveOpsController, createVoiceLiveOpsRoutes, createVoiceMemoryLiveOpsControlStore, evaluateVoiceLiveOpsControlEvidence, evaluateVoiceLiveOpsEvidence, getVoiceLiveOpsControlStatus, VOICE_LIVE_OPS_ACTIONS } from './liveOps';
package/dist/index.js CHANGED
@@ -15067,6 +15067,42 @@ var buildVoiceRealCallProfileDefaults = (input, options = {}) => {
15067
15067
  }
15068
15068
  };
15069
15069
  };
15070
+ var normalizeProviderRouteCandidate = (provider, role) => {
15071
+ const rolePrefix = `${role}:`;
15072
+ return provider.startsWith(rolePrefix) ? provider.slice(rolePrefix.length) : provider;
15073
+ };
15074
+ var expandProviderRouteCandidates = (provider, role, aliases = {}) => {
15075
+ if (!provider) {
15076
+ return [];
15077
+ }
15078
+ const explicitAlias = aliases[provider];
15079
+ const normalized = normalizeProviderRouteCandidate(provider, role);
15080
+ const normalizedAlias = aliases[normalized];
15081
+ const aliasCandidates = [
15082
+ ...Array.isArray(explicitAlias) ? explicitAlias : explicitAlias ? [explicitAlias] : [],
15083
+ ...Array.isArray(normalizedAlias) ? normalizedAlias : normalizedAlias ? [normalizedAlias] : []
15084
+ ];
15085
+ return [
15086
+ ...aliasCandidates,
15087
+ provider,
15088
+ normalized,
15089
+ ...normalized.split("+").filter(Boolean)
15090
+ ];
15091
+ };
15092
+ var readRealCallProfileDefaultsReport = (input) => ("defaults" in input) ? input.defaults : input;
15093
+ var resolveVoiceRealCallProfileProviderRoute = (options) => {
15094
+ const defaults = readRealCallProfileDefaultsReport(options.defaults);
15095
+ const profile = defaults.profiles.find((item) => item.profileId === options.profileId) ?? defaults.profiles.find((item) => item.status === "pass") ?? defaults.profiles[0];
15096
+ const provider = profile?.providerRoutes[options.role];
15097
+ const available = new Set(options.availableProviders ?? []);
15098
+ const candidates = expandProviderRouteCandidates(provider, options.role, options.providerAliases);
15099
+ for (const candidate of candidates) {
15100
+ if ((options.availableProviders === undefined || available.has(candidate)) && candidate) {
15101
+ return candidate;
15102
+ }
15103
+ }
15104
+ return options.fallbackProvider;
15105
+ };
15070
15106
  var buildVoiceRealCallProfileHistoryReport = (options = {}) => {
15071
15107
  const generatedAt = options.generatedAt ?? (options.now instanceof Date ? options.now.toISOString() : typeof options.now === "number" ? new Date(options.now).toISOString() : typeof options.now === "string" ? new Date(options.now).toISOString() : new Date().toISOString());
15072
15108
  const evidenceReport = options.evidence && options.evidence.length > 0 ? buildVoiceProofTrendReportFromRealCallProfiles({
@@ -37166,6 +37202,7 @@ export {
37166
37202
  resolveVoiceTelephonyOutcome,
37167
37203
  resolveVoiceSTTRoutingStrategy,
37168
37204
  resolveVoiceRuntimePreset,
37205
+ resolveVoiceRealCallProfileProviderRoute,
37169
37206
  resolveVoiceProviderRoutingPolicyPreset,
37170
37207
  resolveVoiceOutcomeRecipe,
37171
37208
  resolveVoiceOpsTaskPolicy,
@@ -325,6 +325,14 @@ export type VoiceRealCallProfileDefaultsOptions = VoiceProofTrendRecommendationO
325
325
  latencyBudgetHeadroomRatio?: number;
326
326
  requiredProviderRoles?: readonly string[];
327
327
  };
328
+ export type VoiceRealCallProfileProviderRouteOptions<TProvider extends string = string> = {
329
+ availableProviders?: readonly TProvider[];
330
+ defaults: VoiceRealCallProfileDefaultsReport | VoiceRealCallProfileHistoryReport;
331
+ fallbackProvider?: TProvider;
332
+ profileId?: string;
333
+ providerAliases?: Partial<Record<string, TProvider | readonly TProvider[]>>;
334
+ role: string;
335
+ };
328
336
  export type VoiceRealCallProfileHistoryRoutesOptions = Omit<VoiceRealCallProfileHistoryOptions, 'source'> & {
329
337
  headers?: HeadersInit;
330
338
  htmlPath?: false | string;
@@ -365,6 +373,7 @@ export declare const readVoiceProofTrendReportFile: (path: string, options?: {
365
373
  export declare const buildVoiceProofTrendProfileSummaries: (input: VoiceProofTrendReport | readonly VoiceProofTrendReport[], options?: VoiceProofTrendProfileSummaryOptions) => VoiceProofTrendProfileSummary[];
366
374
  export declare const buildVoiceProofTrendReportFromRealCallProfiles: (options: VoiceProofTrendRealCallProfileReportOptions) => VoiceProofTrendReport;
367
375
  export declare const buildVoiceRealCallProfileDefaults: (input: VoiceRealCallProfileHistoryReport | VoiceProofTrendReport, options?: VoiceRealCallProfileDefaultsOptions) => VoiceRealCallProfileDefaultsReport;
376
+ export declare const resolveVoiceRealCallProfileProviderRoute: <TProvider extends string = string>(options: VoiceRealCallProfileProviderRouteOptions<TProvider>) => TProvider | undefined;
368
377
  export declare const buildVoiceRealCallProfileHistoryReport: (options?: VoiceRealCallProfileHistoryOptions) => VoiceRealCallProfileHistoryReport;
369
378
  export declare const evaluateVoiceProofTrendEvidence: (report: VoiceProofTrendReport, input?: VoiceProofTrendAssertionInput) => VoiceProofTrendAssertionReport;
370
379
  export declare const assertVoiceProofTrendEvidence: (report: VoiceProofTrendReport, input?: VoiceProofTrendAssertionInput) => VoiceProofTrendAssertionReport;
@@ -1913,6 +1913,42 @@ var buildVoiceRealCallProfileDefaults = (input, options = {}) => {
1913
1913
  }
1914
1914
  };
1915
1915
  };
1916
+ var normalizeProviderRouteCandidate = (provider, role) => {
1917
+ const rolePrefix = `${role}:`;
1918
+ return provider.startsWith(rolePrefix) ? provider.slice(rolePrefix.length) : provider;
1919
+ };
1920
+ var expandProviderRouteCandidates = (provider, role, aliases = {}) => {
1921
+ if (!provider) {
1922
+ return [];
1923
+ }
1924
+ const explicitAlias = aliases[provider];
1925
+ const normalized = normalizeProviderRouteCandidate(provider, role);
1926
+ const normalizedAlias = aliases[normalized];
1927
+ const aliasCandidates = [
1928
+ ...Array.isArray(explicitAlias) ? explicitAlias : explicitAlias ? [explicitAlias] : [],
1929
+ ...Array.isArray(normalizedAlias) ? normalizedAlias : normalizedAlias ? [normalizedAlias] : []
1930
+ ];
1931
+ return [
1932
+ ...aliasCandidates,
1933
+ provider,
1934
+ normalized,
1935
+ ...normalized.split("+").filter(Boolean)
1936
+ ];
1937
+ };
1938
+ var readRealCallProfileDefaultsReport = (input) => ("defaults" in input) ? input.defaults : input;
1939
+ var resolveVoiceRealCallProfileProviderRoute = (options) => {
1940
+ const defaults = readRealCallProfileDefaultsReport(options.defaults);
1941
+ const profile = defaults.profiles.find((item) => item.profileId === options.profileId) ?? defaults.profiles.find((item) => item.status === "pass") ?? defaults.profiles[0];
1942
+ const provider = profile?.providerRoutes[options.role];
1943
+ const available = new Set(options.availableProviders ?? []);
1944
+ const candidates = expandProviderRouteCandidates(provider, options.role, options.providerAliases);
1945
+ for (const candidate of candidates) {
1946
+ if ((options.availableProviders === undefined || available.has(candidate)) && candidate) {
1947
+ return candidate;
1948
+ }
1949
+ }
1950
+ return options.fallbackProvider;
1951
+ };
1916
1952
  var buildVoiceRealCallProfileHistoryReport = (options = {}) => {
1917
1953
  const generatedAt = options.generatedAt ?? (options.now instanceof Date ? options.now.toISOString() : typeof options.now === "number" ? new Date(options.now).toISOString() : typeof options.now === "string" ? new Date(options.now).toISOString() : new Date().toISOString());
1918
1954
  const evidenceReport = options.evidence && options.evidence.length > 0 ? buildVoiceProofTrendReportFromRealCallProfiles({
package/dist/vue/index.js CHANGED
@@ -1834,6 +1834,42 @@ var buildVoiceRealCallProfileDefaults = (input, options = {}) => {
1834
1834
  }
1835
1835
  };
1836
1836
  };
1837
+ var normalizeProviderRouteCandidate = (provider, role) => {
1838
+ const rolePrefix = `${role}:`;
1839
+ return provider.startsWith(rolePrefix) ? provider.slice(rolePrefix.length) : provider;
1840
+ };
1841
+ var expandProviderRouteCandidates = (provider, role, aliases = {}) => {
1842
+ if (!provider) {
1843
+ return [];
1844
+ }
1845
+ const explicitAlias = aliases[provider];
1846
+ const normalized = normalizeProviderRouteCandidate(provider, role);
1847
+ const normalizedAlias = aliases[normalized];
1848
+ const aliasCandidates = [
1849
+ ...Array.isArray(explicitAlias) ? explicitAlias : explicitAlias ? [explicitAlias] : [],
1850
+ ...Array.isArray(normalizedAlias) ? normalizedAlias : normalizedAlias ? [normalizedAlias] : []
1851
+ ];
1852
+ return [
1853
+ ...aliasCandidates,
1854
+ provider,
1855
+ normalized,
1856
+ ...normalized.split("+").filter(Boolean)
1857
+ ];
1858
+ };
1859
+ var readRealCallProfileDefaultsReport = (input) => ("defaults" in input) ? input.defaults : input;
1860
+ var resolveVoiceRealCallProfileProviderRoute = (options) => {
1861
+ const defaults = readRealCallProfileDefaultsReport(options.defaults);
1862
+ const profile = defaults.profiles.find((item) => item.profileId === options.profileId) ?? defaults.profiles.find((item) => item.status === "pass") ?? defaults.profiles[0];
1863
+ const provider = profile?.providerRoutes[options.role];
1864
+ const available = new Set(options.availableProviders ?? []);
1865
+ const candidates = expandProviderRouteCandidates(provider, options.role, options.providerAliases);
1866
+ for (const candidate of candidates) {
1867
+ if ((options.availableProviders === undefined || available.has(candidate)) && candidate) {
1868
+ return candidate;
1869
+ }
1870
+ }
1871
+ return options.fallbackProvider;
1872
+ };
1837
1873
  var buildVoiceRealCallProfileHistoryReport = (options = {}) => {
1838
1874
  const generatedAt = options.generatedAt ?? (options.now instanceof Date ? options.now.toISOString() : typeof options.now === "number" ? new Date(options.now).toISOString() : typeof options.now === "string" ? new Date(options.now).toISOString() : new Date().toISOString());
1839
1875
  const evidenceReport = options.evidence && options.evidence.length > 0 ? buildVoiceProofTrendReportFromRealCallProfiles({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@absolutejs/voice",
3
- "version": "0.0.22-beta.349",
3
+ "version": "0.0.22-beta.350",
4
4
  "description": "Voice primitives and Elysia plugin for AbsoluteJS",
5
5
  "repository": {
6
6
  "type": "git",