@absolutejs/voice 0.0.22-beta.39 → 0.0.22-beta.40
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.
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -3
- package/dist/qualityRoutes.d.ts +8 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -41,7 +41,7 @@ export type { VoiceDiagnosticsRoutesOptions } from './diagnosticsRoutes';
|
|
|
41
41
|
export type { VoiceSessionListHTMLHandlerOptions, VoiceSessionListItem, VoiceSessionListOptions, VoiceSessionListRoutesOptions, VoiceSessionListStatus, VoiceSessionReplay, VoiceSessionReplayHTMLHandlerOptions, VoiceSessionReplayOptions, VoiceSessionReplayRoutesOptions, VoiceSessionReplayTurn } from './sessionReplay';
|
|
42
42
|
export type { AnthropicVoiceAssistantModelOptions, GeminiVoiceAssistantModelOptions, OpenAIVoiceAssistantModelOptions, VoiceProviderRouterEvent, VoiceProviderRouterFallbackMode, VoiceProviderRouterHealthOptions, VoiceProviderRouterOptions, VoiceProviderRouterPolicy, VoiceProviderRouterProviderHealth, VoiceProviderRouterProviderProfile, VoiceJSONAssistantModelHandler, VoiceJSONAssistantModelOptions } from './modelAdapters';
|
|
43
43
|
export type { VoiceProviderHealthStatus, VoiceProviderHealthSummary, VoiceProviderHealthSummaryOptions } from './providerHealth';
|
|
44
|
-
export type { VoiceQualityMetric, VoiceQualityReport, VoiceQualityRoutesOptions, VoiceQualityStatus, VoiceQualityThresholds } from './qualityRoutes';
|
|
44
|
+
export type { VoiceQualityLink, VoiceQualityMetric, VoiceQualityReport, VoiceQualityRoutesOptions, VoiceQualityStatus, VoiceQualityThresholds } from './qualityRoutes';
|
|
45
45
|
export type { VoiceResilienceIOSimulator, VoiceResilienceLink, VoiceResiliencePageData, VoiceResilienceRoutesOptions, VoiceResilienceSimulationProvider, VoiceRoutingEvent, VoiceRoutingEventKind } from './resilienceRoutes';
|
|
46
46
|
export type { VoiceIOProviderRouterEvent, VoiceSTTProviderRouterOptions, VoiceTTSProviderRouterOptions } from './providerAdapters';
|
|
47
47
|
export type { VoiceAgent, VoiceAgentMessage, VoiceAgentMessageRole, VoiceAgentModel, VoiceAgentModelInput, VoiceAgentModelOutput, VoiceAgentOptions, VoiceAgentRunResult, VoiceAgentSquadOptions, VoiceAgentTool, VoiceAgentToolCall, VoiceAgentToolResult } from './agent';
|
package/dist/index.js
CHANGED
|
@@ -9304,9 +9304,10 @@ var evaluateVoiceQuality = async (input) => {
|
|
|
9304
9304
|
var escapeHtml9 = (value) => value.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll('"', """).replaceAll("'", "'");
|
|
9305
9305
|
var formatMetricValue = (metric) => metric.unit === "rate" ? `${(metric.actual * 100).toFixed(2)}%` : metric.unit === "ms" ? `${Math.round(metric.actual)}ms` : String(metric.actual);
|
|
9306
9306
|
var formatThreshold = (metric) => metric.unit === "rate" ? `${(metric.threshold * 100).toFixed(2)}%` : metric.unit === "ms" ? `${Math.round(metric.threshold)}ms` : String(metric.threshold);
|
|
9307
|
-
var renderVoiceQualityHTML = (report) => {
|
|
9307
|
+
var renderVoiceQualityHTML = (report, options = {}) => {
|
|
9308
9308
|
const rows = Object.entries(report.metrics).map(([key, metric]) => `<tr class="${metric.pass ? "pass" : "fail"}"><td>${escapeHtml9(metric.label)}</td><td>${escapeHtml9(formatMetricValue(metric))}</td><td>${escapeHtml9(formatThreshold(metric))}</td><td>${metric.pass ? "pass" : "fail"}</td><td><code>${escapeHtml9(key)}</code></td></tr>`).join("");
|
|
9309
|
-
|
|
9309
|
+
const links = options.links?.length ? `<nav>${options.links.map((link) => `<a href="${escapeHtml9(link.href)}">${escapeHtml9(link.label)}</a>`).join("")}</nav>` : "";
|
|
9310
|
+
return `<!doctype html><html lang="en"><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>AbsoluteJS Voice Quality</title><style>body{font-family:ui-sans-serif,system-ui,sans-serif;margin:2rem;background:#f8f7f2;color:#181713}main{max-width:1100px;margin:auto}nav{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 1.25rem}nav a{background:#181713;border-radius:999px;color:white;padding:.35rem .7rem;text-decoration:none}.status{border-radius:999px;display:inline-flex;padding:.35rem .75rem;font-weight:800}.status.pass{background:#dcfce7;color:#166534}.status.fail{background:#fee2e2;color:#991b1b}table{border-collapse:collapse;width:100%;background:white;margin-top:1rem}td,th{border-bottom:1px solid #eee;padding:.75rem;text-align:left}.pass td{border-left:4px solid #16a34a}.fail td{border-left:4px solid #dc2626}code{background:#f3f4f6;padding:.15rem .3rem;border-radius:.3rem}</style></head><body><main>${links}<h1>Voice quality gates</h1><p class="status ${report.status}">${report.status}</p><p>${report.eventCount} event(s) checked.</p><table><thead><tr><th>Metric</th><th>Actual</th><th>Threshold</th><th>Status</th><th>Key</th></tr></thead><tbody>${rows}</tbody></table></main></body></html>`;
|
|
9310
9311
|
};
|
|
9311
9312
|
var createVoiceQualityRoutes = (options) => {
|
|
9312
9313
|
const path = options.path ?? "/quality";
|
|
@@ -9320,7 +9321,7 @@ var createVoiceQualityRoutes = (options) => {
|
|
|
9320
9321
|
});
|
|
9321
9322
|
routes.get(path, async () => {
|
|
9322
9323
|
const report = await getReport();
|
|
9323
|
-
return new Response(renderVoiceQualityHTML(report), {
|
|
9324
|
+
return new Response(renderVoiceQualityHTML(report, { links: options.links }), {
|
|
9324
9325
|
headers: {
|
|
9325
9326
|
"Content-Type": "text/html; charset=utf-8",
|
|
9326
9327
|
...options.headers
|
package/dist/qualityRoutes.d.ts
CHANGED
|
@@ -25,9 +25,14 @@ export type VoiceQualityReport = {
|
|
|
25
25
|
status: VoiceQualityStatus;
|
|
26
26
|
thresholds: Required<VoiceQualityThresholds>;
|
|
27
27
|
};
|
|
28
|
+
export type VoiceQualityLink = {
|
|
29
|
+
href: string;
|
|
30
|
+
label: string;
|
|
31
|
+
};
|
|
28
32
|
export type VoiceQualityRoutesOptions = {
|
|
29
33
|
events?: StoredVoiceTraceEvent[];
|
|
30
34
|
headers?: HeadersInit;
|
|
35
|
+
links?: VoiceQualityLink[];
|
|
31
36
|
name?: string;
|
|
32
37
|
path?: string;
|
|
33
38
|
store?: VoiceTraceEventStore;
|
|
@@ -38,7 +43,9 @@ export declare const evaluateVoiceQuality: (input: {
|
|
|
38
43
|
store?: VoiceTraceEventStore;
|
|
39
44
|
thresholds?: VoiceQualityThresholds;
|
|
40
45
|
}) => Promise<VoiceQualityReport>;
|
|
41
|
-
export declare const renderVoiceQualityHTML: (report: VoiceQualityReport
|
|
46
|
+
export declare const renderVoiceQualityHTML: (report: VoiceQualityReport, options?: {
|
|
47
|
+
links?: VoiceQualityLink[];
|
|
48
|
+
}) => string;
|
|
42
49
|
export declare const createVoiceQualityRoutes: (options: VoiceQualityRoutesOptions) => Elysia<"", {
|
|
43
50
|
decorator: {};
|
|
44
51
|
store: {};
|