@absolutejs/voice 0.0.22-beta.235 → 0.0.22-beta.237
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/README.md +20 -0
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -924,6 +924,26 @@ Use operations records instead of hosted call logs. A proof failure should link
|
|
|
924
924
|
|
|
925
925
|
Use simulation and contracts before live traffic. The simulation suite, tool contracts, outcome contracts, provider routing contracts, phone-agent smoke contracts, and production-readiness gates turn dashboard-only confidence into code-owned deploy evidence.
|
|
926
926
|
|
|
927
|
+
### Vapi Migration Checklist
|
|
928
|
+
|
|
929
|
+
Use this checklist when a buyer asks whether AbsoluteJS Voice covers the practical Vapi surface area without becoming a hosted platform:
|
|
930
|
+
|
|
931
|
+
| Vapi evaluation question | AbsoluteJS proof to show |
|
|
932
|
+
| --- | --- |
|
|
933
|
+
| Can I make a web voice assistant? | Framework page using `voice(...)`, then `/traces` and `/production-readiness` |
|
|
934
|
+
| Can I make phone calls? | `/phone-agent`, `/api/voice/phone/setup`, carrier matrix, and phone smoke proof |
|
|
935
|
+
| Can I use multiple assistants? | `createVoiceAgentSquad(...)`, `/agent-squad-contract`, current-specialist framework helpers, and handoff traces |
|
|
936
|
+
| Can I call tools/functions? | Tool definitions, `/tool-contracts`, audit events, integration events, and operations records |
|
|
937
|
+
| Can I debug a bad call? | `/voice-operations/:sessionId`, session replay, trace timeline, incident Markdown, delivery attempts, and provider decisions |
|
|
938
|
+
| Can I monitor production health? | `/production-readiness`, `/ops-recovery`, `/api/production-readiness/gate`, provider SLOs, and delivery runtime proof |
|
|
939
|
+
| Can I test before live traffic? | `/voice/simulations`, scenario fixtures, tool contracts, outcome contracts, provider routing contracts, and eval baselines |
|
|
940
|
+
| Can I run outbound campaigns? | `createVoiceCampaignRoutes(...)`, campaign readiness proof, carrier dry-run proof, retry/quiet-hours/rate-limit evidence |
|
|
941
|
+
| Can operators intervene? | Live-ops routes, action-center helpers, pause/resume/takeover runtime controls, and operator action audit history |
|
|
942
|
+
| Can I own compliance evidence? | `/data-control`, redacted audit export, retention dry-run/apply routes, provider-key recommendations, and customer-owned storage |
|
|
943
|
+
| Can I export logs to my infrastructure? | `/voice/observability-export`, delivery receipts, artifact index, replay proof, S3/SQLite/Postgres/file/webhook destinations |
|
|
944
|
+
|
|
945
|
+
The migration path should start by replacing hosted-dashboard concepts with mounted primitives and proof routes. Do not start by copying a hosted dashboard. Start with the voice route, operations record, readiness gate, provider contracts, and customer-owned observability export; then add campaigns, live-ops, or compliance controls only when the app needs those surfaces.
|
|
946
|
+
|
|
927
947
|
## Install
|
|
928
948
|
|
|
929
949
|
```bash
|
package/dist/index.js
CHANGED
|
@@ -23518,7 +23518,7 @@ var resolveVoiceObservabilityExportReplayReport = async (input) => {
|
|
|
23518
23518
|
var renderVoiceObservabilityExportReplayHTML = (report, options = {}) => {
|
|
23519
23519
|
const title = options.title ?? "Voice Observability Export Replay";
|
|
23520
23520
|
const issues = report.issues.map((issue) => `<tr><td>${escapeObservabilityReplayHtml(issue.severity)}</td><td>${escapeObservabilityReplayHtml(issue.label)}</td><td>${escapeObservabilityReplayHtml(issue.value ?? "")}</td><td>${escapeObservabilityReplayHtml(issue.detail ?? "")}</td></tr>`).join("") || '<tr><td colspan="4">No replay issues.</td></tr>';
|
|
23521
|
-
const records = Object.entries(report.records).map(([kind, result]) => `<tr><td>${escapeObservabilityReplayHtml(kind)}</td><td>${escapeObservabilityReplayHtml(result
|
|
23521
|
+
const records = Object.entries(report.records).map(([kind, result]) => `<tr><td>${escapeObservabilityReplayHtml(kind)}</td><td>${escapeObservabilityReplayHtml(result ? result.ok ? "valid" : "invalid" : "not present")}</td><td>${escapeObservabilityReplayHtml(result?.issues.length ?? 0)}</td><td>${escapeObservabilityReplayHtml(result?.schema ? `${result.schema.id ?? "missing"}@${result.schema.version ?? "missing"}` : "not present")}</td></tr>`).join("");
|
|
23522
23522
|
return `<!doctype html><html lang="en"><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>${escapeObservabilityReplayHtml(title)}</title><style>body{background:#0d1117;color:#f8fafc;font-family:ui-sans-serif,system-ui,sans-serif;margin:0}main{margin:auto;max-width:1060px;padding:32px}.hero{background:linear-gradient(135deg,rgba(34,197,94,.16),rgba(14,165,233,.12));border:1px solid #263241;border-radius:26px;margin-bottom:18px;padding:28px}.eyebrow{color:#67e8f9;font-size:.78rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase}h1{font-size:clamp(2.1rem,5vw,4.2rem);line-height:.95;margin:.2rem 0 1rem}.status{border:1px solid #334155;border-radius:999px;display:inline-flex;font-weight:800;padding:8px 12px;text-transform:uppercase}.pass{color:#86efac}.warn{color:#fde68a}.fail{color:#fca5a5}.metrics{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));margin:18px 0}.metrics article,table,.primitive{background:#151b23;border:1px solid #263241;border-radius:18px}.metrics article,.primitive{padding:16px}.metrics span{color:#a8b0b8}.metrics strong{display:block;font-size:2rem;margin-top:.25rem}.primitive{margin:0 0 18px}.primitive p{color:#cbd5e1;line-height:1.55}table{border-collapse:collapse;margin-bottom:18px;overflow:hidden;width:100%}td,th{border-bottom:1px solid #263241;padding:12px;text-align:left}code{color:#bfdbfe}@media(max-width:760px){main{padding:20px}}</style></head><body><main><section class="hero"><p class="eyebrow">Customer-owned observability proof</p><h1>${escapeObservabilityReplayHtml(title)}</h1><p>This page reads back a delivered observability export and validates the manifest, artifact index, delivery evidence, and schema contract from storage you own.</p><p class="status ${escapeObservabilityReplayHtml(report.status)}">Status: ${escapeObservabilityReplayHtml(report.status)}</p><section class="metrics"><article><span>Artifacts</span><strong>${report.summary.artifacts}</strong></article><article><span>Delivery destinations</span><strong>${report.summary.deliveryDestinations}</strong></article><article><span>Validation issues</span><strong>${report.summary.validationIssues}</strong></article><article><span>Failed artifacts</span><strong>${report.summary.failedArtifacts}</strong></article></section></section><section class="primitive"><p class="eyebrow">Primitive</p><p><code>createVoiceObservabilityExportReplayRoutes(...)</code> gives self-hosted apps a readable replay proof and a JSON report for CI, release gates, SIEM ingestion, or customer evidence packets.</p></section><h2>Records</h2><table><thead><tr><th>Record</th><th>Status</th><th>Issues</th><th>Schema</th></tr></thead><tbody>${records}</tbody></table><h2>Issues</h2><table><thead><tr><th>Severity</th><th>Label</th><th>Value</th><th>Detail</th></tr></thead><tbody>${issues}</tbody></table><p>Checked at ${escapeObservabilityReplayHtml(new Date(report.checkedAt).toISOString())}</p></main></body></html>`;
|
|
23523
23523
|
};
|
|
23524
23524
|
var createVoiceObservabilityExportReplayRoutes = (options) => {
|