@absolutejs/voice 0.0.22-beta.143 → 0.0.22-beta.145
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/deliverySinkRoutes.d.ts +30 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +78 -14
- package/package.json +1 -1
|
@@ -9,6 +9,29 @@ export type VoiceDeliverySinkDescriptor = {
|
|
|
9
9
|
id: string;
|
|
10
10
|
kind: VoiceDeliverySinkKind;
|
|
11
11
|
label: string;
|
|
12
|
+
mode?: string;
|
|
13
|
+
target?: string;
|
|
14
|
+
};
|
|
15
|
+
export type VoiceDeliverySinkDescriptorInput = {
|
|
16
|
+
description?: string;
|
|
17
|
+
href?: string;
|
|
18
|
+
id?: string;
|
|
19
|
+
kind: VoiceDeliverySinkKind;
|
|
20
|
+
label?: string;
|
|
21
|
+
mode?: string;
|
|
22
|
+
target?: string;
|
|
23
|
+
};
|
|
24
|
+
export type VoiceDeliverySinkPairOptions = {
|
|
25
|
+
auditHref?: string;
|
|
26
|
+
auditId?: string;
|
|
27
|
+
auditLabel?: string;
|
|
28
|
+
description?: string;
|
|
29
|
+
kind: VoiceDeliverySinkKind;
|
|
30
|
+
mode?: string;
|
|
31
|
+
target?: string;
|
|
32
|
+
traceHref?: string;
|
|
33
|
+
traceId?: string;
|
|
34
|
+
traceLabel?: string;
|
|
12
35
|
};
|
|
13
36
|
export type VoiceDeliverySinkReport = {
|
|
14
37
|
auditDeliveries?: VoiceTraceDeliverySinkSurface<VoiceAuditSinkDeliveryQueueSummary>;
|
|
@@ -41,6 +64,13 @@ export type VoiceDeliverySinkRoutesOptions = {
|
|
|
41
64
|
store: VoiceTraceSinkDeliveryStore;
|
|
42
65
|
};
|
|
43
66
|
};
|
|
67
|
+
export declare const createVoiceDeliverySinkDescriptor: (input: VoiceDeliverySinkDescriptorInput) => VoiceDeliverySinkDescriptor;
|
|
68
|
+
export declare const createVoiceFileDeliverySink: (input?: Omit<VoiceDeliverySinkDescriptorInput, "kind">) => VoiceDeliverySinkDescriptor;
|
|
69
|
+
export declare const createVoiceWebhookDeliverySink: (input?: Omit<VoiceDeliverySinkDescriptorInput, "kind">) => VoiceDeliverySinkDescriptor;
|
|
70
|
+
export declare const createVoiceS3DeliverySink: (input?: Omit<VoiceDeliverySinkDescriptorInput, "kind">) => VoiceDeliverySinkDescriptor;
|
|
71
|
+
export declare const createVoicePostgresDeliverySink: (input?: Omit<VoiceDeliverySinkDescriptorInput, "kind">) => VoiceDeliverySinkDescriptor;
|
|
72
|
+
export declare const createVoiceSQLiteDeliverySink: (input?: Omit<VoiceDeliverySinkDescriptorInput, "kind">) => VoiceDeliverySinkDescriptor;
|
|
73
|
+
export declare const createVoiceDeliverySinkPair: (options: VoiceDeliverySinkPairOptions) => VoiceDeliverySinkDescriptor[];
|
|
44
74
|
export declare const buildVoiceDeliverySinkReport: (options: VoiceDeliverySinkRoutesOptions) => Promise<VoiceDeliverySinkReport>;
|
|
45
75
|
export declare const renderVoiceDeliverySinkHTML: (report: VoiceDeliverySinkReport, options?: {
|
|
46
76
|
title?: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -12,11 +12,11 @@ export { createVoiceBargeInRoutes, renderVoiceBargeInHTML, summarizeVoiceBargeIn
|
|
|
12
12
|
export { createVoiceReconnectContractRoutes, renderVoiceReconnectContractHTML, summarizeVoiceReconnectContractSnapshots, runVoiceReconnectContract } from './reconnectContract';
|
|
13
13
|
export { buildVoiceDiagnosticsMarkdown, createVoiceDiagnosticsRoutes, resolveVoiceDiagnosticsTraceFilter } from './diagnosticsRoutes';
|
|
14
14
|
export { buildVoiceDemoReadyReport, createVoiceDemoReadyRoutes, renderVoiceDemoReadyHTML } from './demoReadyRoutes';
|
|
15
|
-
export { buildVoiceDeliverySinkReport, createVoiceDeliverySinkRoutes, renderVoiceDeliverySinkHTML } from './deliverySinkRoutes';
|
|
15
|
+
export { buildVoiceDeliverySinkReport, createVoiceDeliverySinkDescriptor, createVoiceDeliverySinkPair, createVoiceDeliverySinkRoutes, createVoiceFileDeliverySink, createVoicePostgresDeliverySink, createVoiceS3DeliverySink, createVoiceSQLiteDeliverySink, createVoiceWebhookDeliverySink, renderVoiceDeliverySinkHTML } from './deliverySinkRoutes';
|
|
16
16
|
export { applyVoiceDataRetentionPolicy, buildVoiceDataRetentionPlan } from './dataControl';
|
|
17
17
|
export type { VoiceDataRetentionPolicy, VoiceDataRetentionReport, VoiceDataRetentionScope, VoiceDataRetentionScopeReport, VoiceDataRetentionStores } from './dataControl';
|
|
18
18
|
export type { VoiceDemoReadyReport, VoiceDemoReadyRoutesOptions, VoiceDemoReadySection, VoiceDemoReadyStatus } from './demoReadyRoutes';
|
|
19
|
-
export type { VoiceDeliverySinkDescriptor, VoiceDeliverySinkKind, VoiceDeliverySinkReport, VoiceDeliverySinkRoutesOptions, VoiceTraceDeliverySinkSurface } from './deliverySinkRoutes';
|
|
19
|
+
export type { VoiceDeliverySinkDescriptor, VoiceDeliverySinkDescriptorInput, VoiceDeliverySinkKind, VoiceDeliverySinkPairOptions, VoiceDeliverySinkReport, VoiceDeliverySinkRoutesOptions, VoiceTraceDeliverySinkSurface } from './deliverySinkRoutes';
|
|
20
20
|
export { compareVoiceEvalBaseline, createVoiceFileEvalBaselineStore, createVoiceFileScenarioFixtureStore, createVoiceEvalRoutes, renderVoiceEvalBaselineHTML, renderVoiceEvalHTML, renderVoiceScenarioEvalHTML, renderVoiceScenarioFixtureEvalHTML, runVoiceScenarioEvals, runVoiceScenarioFixtureEvals, runVoiceSessionEvals } from './evalRoutes';
|
|
21
21
|
export { createVoiceSimulationSuiteRoutes, renderVoiceSimulationSuiteHTML, runVoiceSimulationSuite } from './simulationSuite';
|
|
22
22
|
export { createVoiceWorkflowContract, createVoiceWorkflowContractHandler, createVoiceWorkflowContractPreset, createVoiceWorkflowScenario, recordVoiceWorkflowContractTrace, validateVoiceWorkflowRouteResult } from './workflowContract';
|
package/dist/index.js
CHANGED
|
@@ -11348,6 +11348,56 @@ var rollupDeliverySinkStatus = (report) => {
|
|
|
11348
11348
|
];
|
|
11349
11349
|
return statuses.includes("fail") ? "fail" : statuses.includes("warn") ? "warn" : "pass";
|
|
11350
11350
|
};
|
|
11351
|
+
var deliverySinkLabel = (kind) => `${String(kind).replaceAll(/[-_]+/g, " ")} sink`;
|
|
11352
|
+
var createVoiceDeliverySinkDescriptor = (input) => ({
|
|
11353
|
+
description: input.description,
|
|
11354
|
+
href: input.href,
|
|
11355
|
+
id: input.id ?? `${input.kind}-sink`,
|
|
11356
|
+
kind: input.kind,
|
|
11357
|
+
label: input.label ?? deliverySinkLabel(input.kind),
|
|
11358
|
+
mode: input.mode,
|
|
11359
|
+
target: input.target
|
|
11360
|
+
});
|
|
11361
|
+
var createVoiceFileDeliverySink = (input = {}) => createVoiceDeliverySinkDescriptor({
|
|
11362
|
+
...input,
|
|
11363
|
+
kind: "file"
|
|
11364
|
+
});
|
|
11365
|
+
var createVoiceWebhookDeliverySink = (input = {}) => createVoiceDeliverySinkDescriptor({
|
|
11366
|
+
...input,
|
|
11367
|
+
kind: "webhook"
|
|
11368
|
+
});
|
|
11369
|
+
var createVoiceS3DeliverySink = (input = {}) => createVoiceDeliverySinkDescriptor({
|
|
11370
|
+
...input,
|
|
11371
|
+
kind: "s3"
|
|
11372
|
+
});
|
|
11373
|
+
var createVoicePostgresDeliverySink = (input = {}) => createVoiceDeliverySinkDescriptor({
|
|
11374
|
+
...input,
|
|
11375
|
+
kind: "postgres"
|
|
11376
|
+
});
|
|
11377
|
+
var createVoiceSQLiteDeliverySink = (input = {}) => createVoiceDeliverySinkDescriptor({
|
|
11378
|
+
...input,
|
|
11379
|
+
kind: "sqlite"
|
|
11380
|
+
});
|
|
11381
|
+
var createVoiceDeliverySinkPair = (options) => [
|
|
11382
|
+
createVoiceDeliverySinkDescriptor({
|
|
11383
|
+
description: options.description,
|
|
11384
|
+
href: options.auditHref,
|
|
11385
|
+
id: options.auditId ?? `${options.kind}-audit-sink`,
|
|
11386
|
+
kind: options.kind,
|
|
11387
|
+
label: options.auditLabel ?? `${deliverySinkLabel(options.kind)} audit`,
|
|
11388
|
+
mode: options.mode,
|
|
11389
|
+
target: options.target
|
|
11390
|
+
}),
|
|
11391
|
+
createVoiceDeliverySinkDescriptor({
|
|
11392
|
+
description: options.description,
|
|
11393
|
+
href: options.traceHref,
|
|
11394
|
+
id: options.traceId ?? `${options.kind}-trace-sink`,
|
|
11395
|
+
kind: options.kind,
|
|
11396
|
+
label: options.traceLabel ?? `${deliverySinkLabel(options.kind)} trace`,
|
|
11397
|
+
mode: options.mode,
|
|
11398
|
+
target: options.target
|
|
11399
|
+
})
|
|
11400
|
+
];
|
|
11351
11401
|
var buildVoiceDeliverySinkReport = async (options) => {
|
|
11352
11402
|
const [auditSummary, traceSummary] = await Promise.all([
|
|
11353
11403
|
options.auditDeliveries ? Promise.resolve(options.auditDeliveries.store.list()).then((deliveries) => summarizeVoiceAuditSinkDeliveries(deliveries)) : undefined,
|
|
@@ -11382,11 +11432,14 @@ var renderSurfaceCard = (surface) => {
|
|
|
11382
11432
|
};
|
|
11383
11433
|
var renderVoiceDeliverySinkHTML = (report, options = {}) => {
|
|
11384
11434
|
const title = options.title ?? "AbsoluteJS Voice Delivery Sinks";
|
|
11385
|
-
const sinks = report.sinks.length ? report.sinks.map((sink) => `<article><span>${escapeHtml14(sink.kind)}</span><strong style="font-size:1.5rem">${escapeHtml14(sink.label)}</strong>${sink.description ? `<p class="muted">${escapeHtml14(sink.description)}</p>` : ""}${sink.href ? `<p><a href="${escapeHtml14(sink.href)}">Open sink</a></p>` : ""}</article>`).join("") : '<article><span>Sink</span><strong style="font-size:1.5rem">Not described</strong><p class="muted">Pass sink descriptors to document your file, webhook, S3, SQLite, or Postgres targets.</p></article>';
|
|
11435
|
+
const sinks = report.sinks.length ? report.sinks.map((sink) => `<article><span>${escapeHtml14(sink.kind)}</span><strong style="font-size:1.5rem">${escapeHtml14(sink.label)}</strong>${sink.description ? `<p class="muted">${escapeHtml14(sink.description)}</p>` : ""}${sink.mode ? `<p class="muted">Mode: ${escapeHtml14(sink.mode)}</p>` : ""}${sink.target ? `<p class="muted">Target: <code>${escapeHtml14(sink.target)}</code></p>` : ""}${sink.href ? `<p><a href="${escapeHtml14(sink.href)}">Open sink</a></p>` : ""}</article>`).join("") : '<article><span>Sink</span><strong style="font-size:1.5rem">Not described</strong><p class="muted">Pass sink descriptors to document your file, webhook, S3, SQLite, or Postgres targets.</p></article>';
|
|
11386
11436
|
return `<!doctype html><html lang="en"><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>${escapeHtml14(title)}</title><style>body{background:#11120d;color:#fbf7e8;font-family:ui-sans-serif,system-ui,sans-serif;margin:0}main{max-width:1120px;margin:auto;padding:32px}a{color:#fde68a;text-decoration:none}.hero{background:linear-gradient(135deg,rgba(253,230,138,.2),rgba(34,197,94,.14));border:1px solid #3a3420;border-radius:30px;margin-bottom:18px;padding:28px}.eyebrow{color:#fde68a;font-weight:900;letter-spacing:.12em;text-transform:uppercase}h1{font-size:clamp(2.4rem,6vw,4.8rem);line-height:.9;margin:.2rem 0 1rem}.status{border:1px solid #575030;border-radius:999px;display:inline-flex;font-weight:900;padding:8px 12px}.status.pass{border-color:rgba(34,197,94,.65)}.status.warn{border-color:rgba(245,158,11,.65)}.status.fail{border-color:rgba(239,68,68,.75)}.muted{color:#b8b093}.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin:18px 0}article,.card{background:#191a13;border:1px solid #33311f;border-radius:22px;padding:18px}article span{color:#b8b093;display:block;font-weight:800}article strong{display:block;font-size:2.4rem;margin-top:8px}pre{background:#0c0d09;border:1px solid #33311f;border-radius:18px;color:#fef3c7;overflow:auto;padding:16px}code{color:#fef3c7}</style></head><body><main><p><a href="/production-readiness">Production readiness</a></p><section class="hero"><p class="eyebrow">Composable sink primitive</p><h1>${escapeHtml14(title)}</h1><p class="muted">Delivery queues prove audit and trace exports without owning your infrastructure. Swap file, webhook, S3, SQLite, or Postgres sinks behind the same readiness surface.</p><p class="status ${escapeHtml14(report.status)}">Overall: ${escapeHtml14(report.status.toUpperCase())}</p><p class="muted">Checked ${escapeHtml14(new Date(report.checkedAt).toLocaleString())}</p></section><section class="grid">${renderSurfaceCard(report.auditDeliveries)}${renderSurfaceCard(report.traceDeliveries)}${sinks}</section><section class="card"><h2>Primitive shape</h2><p class="muted">Mount delivery sink routes beside audit and trace delivery queues. Production readiness can consume the same stores for pass/fail evidence.</p><pre>createVoiceDeliverySinkRoutes({
|
|
11387
11437
|
auditDeliveries: { store: runtimeStorage.auditDeliveries },
|
|
11388
11438
|
traceDeliveries: { store: runtimeStorage.traceDeliveries },
|
|
11389
|
-
sinks:
|
|
11439
|
+
sinks: createVoiceDeliverySinkPair({
|
|
11440
|
+
kind: "file",
|
|
11441
|
+
target: "file://.voice-runtime/voice-demo"
|
|
11442
|
+
})
|
|
11390
11443
|
})</pre></section></main></body></html>`;
|
|
11391
11444
|
};
|
|
11392
11445
|
var createVoiceDeliverySinkRoutes = (options) => {
|
|
@@ -20288,15 +20341,16 @@ var buildVoiceOpsConsoleReport = async (options) => {
|
|
|
20288
20341
|
const trace = summarizeVoiceTrace(events);
|
|
20289
20342
|
const deliverySinkOptions = options.deliverySinks || undefined;
|
|
20290
20343
|
const deliverySinks = deliverySinkOptions ? await buildVoiceDeliverySinkReport(deliverySinkOptions) : undefined;
|
|
20291
|
-
const
|
|
20292
|
-
|
|
20344
|
+
const baseLinks = options.links ?? DEFAULT_LINKS;
|
|
20345
|
+
const links = deliverySinks && !baseLinks.some((link) => link.href === (deliverySinkOptions?.htmlPath ?? "/delivery-sinks") || link.statusHref === (deliverySinkOptions?.path ?? "/api/voice-delivery-sinks")) ? [
|
|
20346
|
+
...baseLinks,
|
|
20293
20347
|
{
|
|
20294
20348
|
description: "Configured audit and trace delivery sinks with queue health.",
|
|
20295
20349
|
href: deliverySinkOptions?.htmlPath === false ? deliverySinkOptions.path ?? "/api/voice-delivery-sinks" : deliverySinkOptions?.htmlPath ?? "/delivery-sinks",
|
|
20296
20350
|
label: "Delivery Sinks",
|
|
20297
20351
|
statusHref: deliverySinkOptions?.path ?? "/api/voice-delivery-sinks"
|
|
20298
20352
|
}
|
|
20299
|
-
] :
|
|
20353
|
+
] : baseLinks;
|
|
20300
20354
|
return {
|
|
20301
20355
|
checkedAt: Date.now(),
|
|
20302
20356
|
deliverySinks,
|
|
@@ -20499,17 +20553,20 @@ var summarizeVoiceOpsStatus = async (options) => {
|
|
|
20499
20553
|
};
|
|
20500
20554
|
statuses.push(status);
|
|
20501
20555
|
}
|
|
20556
|
+
const baseLinks = options.links ?? DEFAULT_LINKS2;
|
|
20557
|
+
const deliverySinkOptions = options.deliverySinks || undefined;
|
|
20558
|
+
const links = deliverySinkOptions && !baseLinks.some((link) => link.href === (deliverySinkOptions.htmlPath ?? "/delivery-sinks") || link.statusHref === (deliverySinkOptions.path ?? "/api/voice-delivery-sinks")) ? [
|
|
20559
|
+
...baseLinks,
|
|
20560
|
+
{
|
|
20561
|
+
description: "Audit and trace delivery sink health.",
|
|
20562
|
+
href: deliverySinkOptions.htmlPath === false ? deliverySinkOptions.path ?? "/api/voice-delivery-sinks" : deliverySinkOptions.htmlPath ?? "/delivery-sinks",
|
|
20563
|
+
label: "Delivery Sinks",
|
|
20564
|
+
statusHref: deliverySinkOptions.path ?? "/api/voice-delivery-sinks"
|
|
20565
|
+
}
|
|
20566
|
+
] : baseLinks;
|
|
20502
20567
|
return {
|
|
20503
20568
|
checkedAt: Date.now(),
|
|
20504
|
-
links
|
|
20505
|
-
...DEFAULT_LINKS2,
|
|
20506
|
-
{
|
|
20507
|
-
description: "Audit and trace delivery sink health.",
|
|
20508
|
-
href: options.deliverySinks.htmlPath === false ? options.deliverySinks.path ?? "/api/voice-delivery-sinks" : options.deliverySinks.htmlPath ?? "/delivery-sinks",
|
|
20509
|
-
label: "Delivery Sinks",
|
|
20510
|
-
statusHref: options.deliverySinks.path ?? "/api/voice-delivery-sinks"
|
|
20511
|
-
}
|
|
20512
|
-
] : DEFAULT_LINKS2),
|
|
20569
|
+
links,
|
|
20513
20570
|
status: statuses.includes("fail") ? "fail" : "pass",
|
|
20514
20571
|
surfaces,
|
|
20515
20572
|
...countStatus(statuses)
|
|
@@ -23058,6 +23115,7 @@ export {
|
|
|
23058
23115
|
createVoiceWebhookHandoffAdapter,
|
|
23059
23116
|
createVoiceWebhookDeliveryWorkerLoop,
|
|
23060
23117
|
createVoiceWebhookDeliveryWorker,
|
|
23118
|
+
createVoiceWebhookDeliverySink,
|
|
23061
23119
|
createVoiceTwilioRedirectHandoffAdapter,
|
|
23062
23120
|
createVoiceTwilioCampaignDialer,
|
|
23063
23121
|
createVoiceTurnQualityRoutes,
|
|
@@ -23115,10 +23173,12 @@ export {
|
|
|
23115
23173
|
createVoiceSQLiteReviewStore,
|
|
23116
23174
|
createVoiceSQLiteIntegrationEventStore,
|
|
23117
23175
|
createVoiceSQLiteExternalObjectMapStore,
|
|
23176
|
+
createVoiceSQLiteDeliverySink,
|
|
23118
23177
|
createVoiceSQLiteCampaignStore,
|
|
23119
23178
|
createVoiceSQLiteAuditSinkDeliveryStore,
|
|
23120
23179
|
createVoiceSQLiteAuditEventStore,
|
|
23121
23180
|
createVoiceS3ReviewStore,
|
|
23181
|
+
createVoiceS3DeliverySink,
|
|
23122
23182
|
createVoiceRoutingDecisionSummary,
|
|
23123
23183
|
createVoiceReviewSavedEvent,
|
|
23124
23184
|
createVoiceResilienceRoutes,
|
|
@@ -23144,6 +23204,7 @@ export {
|
|
|
23144
23204
|
createVoicePostgresReviewStore,
|
|
23145
23205
|
createVoicePostgresIntegrationEventStore,
|
|
23146
23206
|
createVoicePostgresExternalObjectMapStore,
|
|
23207
|
+
createVoicePostgresDeliverySink,
|
|
23147
23208
|
createVoicePostgresCampaignStore,
|
|
23148
23209
|
createVoicePostgresAuditSinkDeliveryStore,
|
|
23149
23210
|
createVoicePostgresAuditEventStore,
|
|
@@ -23200,6 +23261,7 @@ export {
|
|
|
23200
23261
|
createVoiceFileIntegrationEventStore,
|
|
23201
23262
|
createVoiceFileExternalObjectMapStore,
|
|
23202
23263
|
createVoiceFileEvalBaselineStore,
|
|
23264
|
+
createVoiceFileDeliverySink,
|
|
23203
23265
|
createVoiceFileCampaignStore,
|
|
23204
23266
|
createVoiceFileAuditSinkDeliveryStore,
|
|
23205
23267
|
createVoiceFileAuditEventStore,
|
|
@@ -23211,6 +23273,8 @@ export {
|
|
|
23211
23273
|
createVoiceDiagnosticsRoutes,
|
|
23212
23274
|
createVoiceDemoReadyRoutes,
|
|
23213
23275
|
createVoiceDeliverySinkRoutes,
|
|
23276
|
+
createVoiceDeliverySinkPair,
|
|
23277
|
+
createVoiceDeliverySinkDescriptor,
|
|
23214
23278
|
createVoiceCampaignWorkerLoop,
|
|
23215
23279
|
createVoiceCampaignWorker,
|
|
23216
23280
|
createVoiceCampaignTelephonyOutcomeHandler,
|