@absolutejs/voice 0.0.22-beta.65 → 0.0.22-beta.651
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/LICENSE +88 -0
- package/README.md +4550 -1180
- package/dist/angular/index.d.ts +36 -6
- package/dist/angular/index.js +4281 -472
- package/dist/angular/voice-agent-squad-status.service.d.ts +12 -0
- package/dist/angular/voice-call-debugger.service.d.ts +12 -0
- package/dist/angular/voice-call-player.service.d.ts +19 -0
- package/dist/angular/voice-campaign-dialer-proof.service.d.ts +14 -0
- package/dist/angular/voice-controller.service.d.ts +4 -1
- package/dist/angular/voice-cost-dashboard.service.d.ts +15 -0
- package/dist/angular/voice-delivery-runtime.service.d.ts +16 -0
- package/dist/angular/voice-live-agent-console.service.d.ts +16 -0
- package/dist/angular/voice-live-call-viewer.service.d.ts +16 -0
- package/dist/angular/voice-live-ops.service.d.ts +11 -0
- package/dist/angular/voice-ops-action-center.service.d.ts +13 -0
- package/dist/angular/voice-ops-status.service.d.ts +12 -0
- package/dist/angular/voice-platform-coverage.service.d.ts +12 -0
- package/dist/angular/voice-profile-comparison.service.d.ts +12 -0
- package/dist/angular/voice-proof-trends.service.d.ts +12 -0
- package/dist/angular/voice-provider-capabilities.service.d.ts +12 -0
- package/dist/angular/voice-provider-contracts.service.d.ts +12 -0
- package/dist/angular/voice-provider-status.service.d.ts +2 -2
- package/dist/angular/voice-readiness-failures.service.d.ts +13 -0
- package/dist/angular/voice-reconnect-profile-evidence.service.d.ts +12 -0
- package/dist/angular/voice-replay-timeline.service.d.ts +13 -0
- package/dist/angular/voice-routing-status.service.d.ts +1 -1
- package/dist/angular/voice-session-observability.service.d.ts +12 -0
- package/dist/angular/voice-session-snapshot.service.d.ts +13 -0
- package/dist/angular/voice-stream.service.d.ts +5 -1
- package/dist/angular/voice-trace-timeline.service.d.ts +12 -0
- package/dist/angular/voice-turn-latency.service.d.ts +13 -0
- package/dist/angular/voice-turn-quality.service.d.ts +12 -0
- package/dist/angular/voice-widget.service.d.ts +18 -0
- package/dist/angular/voice-workflow-status.service.d.ts +2 -2
- package/dist/client/actions.d.ts +128 -2
- package/dist/client/agentSquadStatus.d.ts +37 -0
- package/dist/client/agentSquadStatusWidget.d.ts +24 -0
- package/dist/client/audioPlayer.d.ts +12 -2
- package/dist/client/bargeInMonitor.d.ts +7 -0
- package/dist/client/browserMedia.d.ts +8 -0
- package/dist/client/browserNoiseSuppression.d.ts +42 -0
- package/dist/client/browserVoiceSupport.d.ts +22 -0
- package/dist/client/callDebugger.d.ts +21 -0
- package/dist/client/callDebuggerWidget.d.ts +30 -0
- package/dist/client/callPlayer.d.ts +41 -0
- package/dist/client/campaignDialerProof.d.ts +25 -0
- package/dist/client/connection.d.ts +10 -4
- package/dist/client/controller.d.ts +1 -1
- package/dist/client/conversationAnalytics.d.ts +30 -0
- package/dist/client/costDashboard.d.ts +27 -0
- package/dist/client/createVoiceStream.d.ts +1 -1
- package/dist/client/deliveryRuntime.d.ts +36 -0
- package/dist/client/deliveryRuntimeWidget.d.ts +37 -0
- package/dist/client/duplex.d.ts +2 -2
- package/dist/client/htmx.d.ts +1 -1
- package/dist/client/htmxAttributes.d.ts +24 -0
- package/dist/client/htmxBootstrap.js +1494 -107
- package/dist/client/htmxDashboardRenderers.d.ts +71 -0
- package/dist/client/index.d.ts +109 -25
- package/dist/client/index.js +10811 -532
- package/dist/client/liveAgentConsole.d.ts +28 -0
- package/dist/client/liveCallViewer.d.ts +42 -0
- package/dist/client/liveOps.d.ts +22 -0
- package/dist/client/liveOpsWidget.d.ts +23 -0
- package/dist/client/liveTurnLatency.d.ts +41 -0
- package/dist/client/microphone.d.ts +5 -4
- package/dist/client/opsActionCenter.d.ts +56 -0
- package/dist/client/opsActionCenterWidget.d.ts +29 -0
- package/dist/client/opsActionHistory.d.ts +21 -0
- package/dist/client/opsActionHistoryWidget.d.ts +11 -0
- package/dist/client/opsStatus.d.ts +21 -0
- package/dist/client/opsStatusWidget.d.ts +10 -10
- package/dist/client/platformCoverage.d.ts +21 -0
- package/dist/client/platformCoverageWidget.d.ts +38 -0
- package/dist/client/profileComparison.d.ts +21 -0
- package/dist/client/profileComparisonWidget.d.ts +41 -0
- package/dist/client/profileSwitchRecommendation.d.ts +21 -0
- package/dist/client/profileSwitchRecommendationWidget.d.ts +12 -0
- package/dist/client/proofTrends.d.ts +21 -0
- package/dist/client/proofTrendsWidget.d.ts +38 -0
- package/dist/client/providerCapabilities.d.ts +21 -0
- package/dist/client/providerCapabilitiesWidget.d.ts +32 -0
- package/dist/client/providerContracts.d.ts +21 -0
- package/dist/client/providerContractsWidget.d.ts +37 -0
- package/dist/client/providerSimulationControls.d.ts +3 -3
- package/dist/client/providerSimulationControlsWidget.d.ts +5 -5
- package/dist/client/providerStatus.d.ts +5 -3
- package/dist/client/providerStatusWidget.d.ts +6 -6
- package/dist/client/reactiveSource.d.ts +8 -0
- package/dist/client/readinessFailures.d.ts +21 -0
- package/dist/client/readinessFailuresWidget.d.ts +42 -0
- package/dist/client/reconnectProfileEvidence.d.ts +21 -0
- package/dist/client/reconnectProfileEvidenceWidget.d.ts +39 -0
- package/dist/client/replayTimeline.d.ts +26 -0
- package/dist/client/routingStatus.d.ts +5 -3
- package/dist/client/routingStatusWidget.d.ts +10 -6
- package/dist/client/sessionObservability.d.ts +21 -0
- package/dist/client/sessionObservabilityWidget.d.ts +31 -0
- package/dist/client/sessionSnapshot.d.ts +23 -0
- package/dist/client/sessionSnapshotWidget.d.ts +33 -0
- package/dist/client/store.d.ts +1 -1
- package/dist/client/timeStretch.d.ts +5 -0
- package/dist/client/traceTimeline.d.ts +21 -0
- package/dist/client/traceTimelineWidget.d.ts +36 -0
- package/dist/client/turnLatency.d.ts +24 -0
- package/dist/client/turnLatencyWidget.d.ts +33 -0
- package/dist/client/turnQuality.d.ts +21 -0
- package/dist/client/turnQualityWidget.d.ts +32 -0
- package/dist/client/voiceWidgetView.d.ts +48 -0
- package/dist/client/workflowStatus.d.ts +5 -3
- package/dist/{agent.d.ts → core/agent.d.ts} +110 -7
- package/dist/core/agentPerformanceReport.d.ts +40 -0
- package/dist/core/agentSquadContract.d.ts +98 -0
- package/dist/core/agentState.d.ts +12 -0
- package/dist/core/agentTools.d.ts +132 -0
- package/dist/core/aiScorecard.d.ts +32 -0
- package/dist/core/aiVoiceModel.d.ts +15 -0
- package/dist/core/amdDetector.d.ts +25 -0
- package/dist/{assistant.d.ts → core/assistant.d.ts} +21 -14
- package/dist/core/assistantExperiment.d.ts +42 -0
- package/dist/{assistantHealth.d.ts → core/assistantHealth.d.ts} +9 -9
- package/dist/{assistantMemory.d.ts → core/assistantMemory.d.ts} +10 -10
- package/dist/core/assistantMode.d.ts +22 -0
- package/dist/{audioConditioning.d.ts → core/audioConditioning.d.ts} +2 -2
- package/dist/core/audit.d.ts +131 -0
- package/dist/core/auditDeliveryRoutes.d.ts +85 -0
- package/dist/core/auditExport.d.ts +34 -0
- package/dist/core/auditRoutes.d.ts +66 -0
- package/dist/core/auditSinks.d.ts +151 -0
- package/dist/core/backchannel.d.ts +25 -0
- package/dist/core/bargeInDetector.d.ts +51 -0
- package/dist/core/bargeInRoutes.d.ts +56 -0
- package/dist/core/bookingFlow.d.ts +43 -0
- package/dist/core/browserCallProfiles.d.ts +120 -0
- package/dist/core/browserMediaRoutes.d.ts +62 -0
- package/dist/core/cachedTTS.d.ts +54 -0
- package/dist/core/calendarAdapter.d.ts +47 -0
- package/dist/core/calendarSlots.d.ts +35 -0
- package/dist/core/callDebugger.d.ts +66 -0
- package/dist/core/callDisposition.d.ts +38 -0
- package/dist/core/callQuota.d.ts +54 -0
- package/dist/core/callScorecard.d.ts +53 -0
- package/dist/core/callerCRMLinker.d.ts +29 -0
- package/dist/core/callerMemory.d.ts +37 -0
- package/dist/core/callingWindow.d.ts +26 -0
- package/dist/core/campaign.d.ts +795 -0
- package/dist/core/campaignControls.d.ts +37 -0
- package/dist/core/campaignDialers.d.ts +111 -0
- package/dist/core/campaignTemplate.d.ts +16 -0
- package/dist/core/competitiveCoverage.d.ts +141 -0
- package/dist/core/conversationSimulator.d.ts +73 -0
- package/dist/{correction.d.ts → core/correction.d.ts} +5 -4
- package/dist/core/costAccounting.d.ts +90 -0
- package/dist/core/costPredictor.d.ts +74 -0
- package/dist/core/crmCallLogger.d.ts +37 -0
- package/dist/core/crmContract.d.ts +70 -0
- package/dist/core/dataControl.d.ts +180 -0
- package/dist/core/debugTiming.d.ts +11 -0
- package/dist/core/defineVoiceAssistant.d.ts +68 -0
- package/dist/core/deliveryRuntime.d.ts +159 -0
- package/dist/core/deliverySinkRoutes.d.ts +117 -0
- package/dist/core/demoReadyRoutes.d.ts +98 -0
- package/dist/{diagnosticsRoutes.d.ts → core/diagnosticsRoutes.d.ts} +2 -2
- package/dist/core/dncRegistry.d.ts +38 -0
- package/dist/core/dtmfCollector.d.ts +37 -0
- package/dist/{evalRoutes.d.ts → core/evalRoutes.d.ts} +26 -20
- package/dist/{fileStore.d.ts → core/fileStore.d.ts} +34 -20
- package/dist/core/guardrails.d.ts +128 -0
- package/dist/{handoff.d.ts → core/handoff.d.ts} +10 -10
- package/dist/{handoffHealth.d.ts → core/handoffHealth.d.ts} +9 -9
- package/dist/core/hardenedFetch.d.ts +1 -0
- package/dist/core/holdAudio.d.ts +23 -0
- package/dist/{htmx.d.ts → core/htmx.d.ts} +2 -2
- package/dist/core/htmxDashboardRoutes.d.ts +250 -0
- package/dist/core/iceServers.d.ts +34 -0
- package/dist/core/incidentBundle.d.ts +119 -0
- package/dist/core/incidentTimeline.d.ts +260 -0
- package/dist/core/ivrPlan.d.ts +40 -0
- package/dist/core/latencySlo.d.ts +56 -0
- package/dist/core/liveCoach.d.ts +43 -0
- package/dist/core/liveLatency.d.ts +78 -0
- package/dist/core/liveOps.d.ts +190 -0
- package/dist/core/llmJudge.d.ts +45 -0
- package/dist/{logger.d.ts → core/logger.d.ts} +1 -2
- package/dist/core/mcpToolset.d.ts +58 -0
- package/dist/core/mediaPipelineRoutes.d.ts +171 -0
- package/dist/core/mediaPipelineSurfaces.d.ts +48 -0
- package/dist/{memoryStore.d.ts → core/memoryStore.d.ts} +1 -1
- package/dist/core/midCallSummary.d.ts +27 -0
- package/dist/{modelAdapters.d.ts → core/modelAdapters.d.ts} +64 -7
- package/dist/core/monitor.d.ts +148 -0
- package/dist/core/multilingualProof.d.ts +77 -0
- package/dist/core/noShowPredictor.d.ts +46 -0
- package/dist/core/numberNormalizer.d.ts +1 -0
- package/dist/core/oauth2TokenSource.d.ts +21 -0
- package/dist/core/observabilityExport.d.ts +501 -0
- package/dist/core/openaiTTS.d.ts +18 -0
- package/dist/core/operationalStatus.d.ts +87 -0
- package/dist/core/operationsRecord.d.ts +371 -0
- package/dist/{ops.d.ts → core/ops.d.ts} +70 -70
- package/dist/core/opsActionAuditRoutes.d.ts +99 -0
- package/dist/{opsConsoleRoutes.d.ts → core/opsConsoleRoutes.d.ts} +11 -8
- package/dist/{opsPresets.d.ts → core/opsPresets.d.ts} +2 -2
- package/dist/core/opsRecovery.d.ts +137 -0
- package/dist/{opsRuntime.d.ts → core/opsRuntime.d.ts} +6 -6
- package/dist/{opsSinks.d.ts → core/opsSinks.d.ts} +19 -19
- package/dist/core/opsStatus.d.ts +76 -0
- package/dist/core/opsStatusRoutes.d.ts +33 -0
- package/dist/{opsWebhook.d.ts → core/opsWebhook.d.ts} +15 -15
- package/dist/core/otelExporter.d.ts +83 -0
- package/dist/core/outcomeContract.d.ts +146 -0
- package/dist/{outcomeRecipes.d.ts → core/outcomeRecipes.d.ts} +4 -4
- package/dist/core/pathway.d.ts +94 -0
- package/dist/core/pathwayCompiler.d.ts +31 -0
- package/dist/core/pathwayGenerator.d.ts +27 -0
- package/dist/core/pathwayRuntime.d.ts +57 -0
- package/dist/core/pathwaySlotCollector.d.ts +29 -0
- package/dist/core/pathwayVisualizer.d.ts +8 -0
- package/dist/core/phoneAgent.d.ts +139 -0
- package/dist/core/phoneAgentProductionSmoke.d.ts +115 -0
- package/dist/core/phoneProvisioning.d.ts +29 -0
- package/dist/core/platformCoverage.d.ts +91 -0
- package/dist/{plugin.d.ts → core/plugin.d.ts} +8 -8
- package/dist/core/postCallAnalysis.d.ts +98 -0
- package/dist/core/postCallSurvey.d.ts +41 -0
- package/dist/{postgresStore.d.ts → core/postgresStore.d.ts} +20 -9
- package/dist/{presets.d.ts → core/presets.d.ts} +3 -3
- package/dist/core/productionReadiness.d.ts +757 -0
- package/dist/core/profileSwitchRecommendation.d.ts +350 -0
- package/dist/core/promptInjectionGuard.d.ts +30 -0
- package/dist/core/proofAssertions.d.ts +32 -0
- package/dist/core/proofPack.d.ts +211 -0
- package/dist/core/proofRunner.d.ts +79 -0
- package/dist/core/proofTrends.d.ts +966 -0
- package/dist/{providerAdapters.d.ts → core/providerAdapters.d.ts} +5 -5
- package/dist/{providerCapabilities.d.ts → core/providerCapabilities.d.ts} +9 -9
- package/dist/core/providerDecisionTraces.d.ts +130 -0
- package/dist/{providerHealth.d.ts → core/providerHealth.d.ts} +15 -5
- package/dist/core/providerOrchestration.d.ts +109 -0
- package/dist/core/providerRouterTraces.d.ts +35 -0
- package/dist/core/providerRoutingContract.d.ts +71 -0
- package/dist/core/providerSlo.d.ts +142 -0
- package/dist/core/providerStackRecommendations.d.ts +188 -0
- package/dist/core/qualityDriftDetector.d.ts +44 -0
- package/dist/{qualityRoutes.d.ts → core/qualityRoutes.d.ts} +7 -7
- package/dist/{queue.d.ts → core/queue.d.ts} +48 -39
- package/dist/core/ragTool.d.ts +52 -0
- package/dist/core/readinessProfiles.d.ts +45 -0
- package/dist/core/realtimeChannel.d.ts +136 -0
- package/dist/core/realtimeProviderContracts.d.ts +133 -0
- package/dist/core/reconnectContract.d.ts +177 -0
- package/dist/core/recordingRedaction.d.ts +47 -0
- package/dist/core/recordingStore.d.ts +60 -0
- package/dist/core/redaction.d.ts +13 -0
- package/dist/core/reminderScheduler.d.ts +43 -0
- package/dist/{resilienceRoutes.d.ts → core/resilienceRoutes.d.ts} +34 -5
- package/dist/core/retention.d.ts +37 -0
- package/dist/core/retryPolicy.d.ts +38 -0
- package/dist/core/routeAuth.d.ts +58 -0
- package/dist/{routing.d.ts → core/routing.d.ts} +2 -2
- package/dist/{runtimeOps.d.ts → core/runtimeOps.d.ts} +3 -3
- package/dist/{s3Store.d.ts → core/s3Store.d.ts} +12 -3
- package/dist/core/scorecardCalibration.d.ts +31 -0
- package/dist/core/scribe.d.ts +50 -0
- package/dist/core/semanticTurn.d.ts +37 -0
- package/dist/{session.d.ts → core/session.d.ts} +1 -1
- package/dist/core/sessionObservability.d.ts +145 -0
- package/dist/{sessionReplay.d.ts → core/sessionReplay.d.ts} +31 -19
- package/dist/core/sessionSnapshot.d.ts +109 -0
- package/dist/core/simulationSuite.d.ts +144 -0
- package/dist/core/sloCalibration.d.ts +185 -0
- package/dist/{sqliteStore.d.ts → core/sqliteStore.d.ts} +20 -9
- package/dist/{store.d.ts → core/store.d.ts} +1 -1
- package/dist/core/supervisorPermissions.d.ts +33 -0
- package/dist/core/supervisorPresence.d.ts +49 -0
- package/dist/core/telephonyMediaRoutes.d.ts +72 -0
- package/dist/core/telephonyOutcome.d.ts +269 -0
- package/dist/{toolContract.d.ts → core/toolContract.d.ts} +46 -15
- package/dist/{toolRuntime.d.ts → core/toolRuntime.d.ts} +4 -4
- package/dist/{trace.d.ts → core/trace.d.ts} +61 -22
- package/dist/core/traceDeliveryRoutes.d.ts +86 -0
- package/dist/core/traceTimeline.d.ts +97 -0
- package/dist/core/transcriptAnnotator.d.ts +41 -0
- package/dist/{turnDetection.d.ts → core/turnDetection.d.ts} +2 -1
- package/dist/core/turnLatency.d.ts +95 -0
- package/dist/core/turnProfiles.d.ts +3 -0
- package/dist/core/turnQuality.d.ts +94 -0
- package/dist/core/types.d.ts +1727 -0
- package/dist/core/vapiAdapter.d.ts +160 -0
- package/dist/core/variableAnalytics.d.ts +47 -0
- package/dist/core/voiceConfiguration.d.ts +8 -0
- package/dist/core/voiceMonitoring.d.ts +444 -0
- package/dist/core/webhookFanout.d.ts +48 -0
- package/dist/core/webhookVerification.d.ts +27 -0
- package/dist/core/whisperChannel.d.ts +50 -0
- package/dist/{workflowContract.d.ts → core/workflowContract.d.ts} +21 -21
- package/dist/core/writeBehindStore.d.ts +41 -0
- package/dist/core/zeroDataRetention.d.ts +31 -0
- package/dist/drizzle/assistantMemory.d.ts +100 -0
- package/dist/drizzle/eval.d.ts +55 -0
- package/dist/drizzle/handoff.d.ts +56 -0
- package/dist/drizzle/incidentBundle.d.ts +55 -0
- package/dist/drizzle/index.d.ts +991 -0
- package/dist/drizzle/index.js +3059 -0
- package/dist/drizzle/observabilityExport.d.ts +55 -0
- package/dist/drizzle/proofTrends.d.ts +114 -0
- package/dist/drizzle/runtimeStorage.d.ts +1183 -0
- package/dist/drizzle/shared.d.ts +69 -0
- package/dist/embed/index.d.ts +38 -0
- package/dist/embed/index.js +1838 -0
- package/dist/embed/voice-widget.js +10 -0
- package/dist/index.d.ts +379 -80
- package/dist/index.js +48148 -8037
- package/dist/internal/evidence.d.ts +10 -0
- package/dist/internal/html.d.ts +6 -0
- package/dist/internal/status.d.ts +7 -0
- package/dist/manifest.d.ts +17 -0
- package/dist/manifest.js +424 -0
- package/dist/manifest.json +427 -0
- package/dist/react/VoiceAgentSquadStatus.d.ts +5 -0
- package/dist/react/VoiceCallDebuggerLaunch.d.ts +6 -0
- package/dist/react/VoiceCallPlayer.d.ts +11 -0
- package/dist/react/VoiceCostDashboard.d.ts +10 -0
- package/dist/react/VoiceDeliveryRuntime.d.ts +7 -0
- package/dist/react/VoiceLiveAgentConsole.d.ts +11 -0
- package/dist/react/VoiceLiveCallViewer.d.ts +9 -0
- package/dist/react/VoiceOpsActionCenter.d.ts +5 -0
- package/dist/react/VoiceOpsStatus.d.ts +1 -1
- package/dist/react/VoicePlatformCoverage.d.ts +6 -0
- package/dist/react/VoiceProfileComparison.d.ts +6 -0
- package/dist/react/VoiceProfileSwitchRecommendation.d.ts +6 -0
- package/dist/react/VoiceProofTrends.d.ts +6 -0
- package/dist/react/VoiceProviderCapabilities.d.ts +6 -0
- package/dist/react/VoiceProviderContracts.d.ts +6 -0
- package/dist/react/VoiceProviderSimulationControls.d.ts +1 -1
- package/dist/react/VoiceProviderStatus.d.ts +1 -1
- package/dist/react/VoiceReadinessFailures.d.ts +6 -0
- package/dist/react/VoiceReconnectProfileEvidence.d.ts +6 -0
- package/dist/react/VoiceReplayTimeline.d.ts +6 -0
- package/dist/react/VoiceRoutingStatus.d.ts +1 -1
- package/dist/react/VoiceSessionObservability.d.ts +6 -0
- package/dist/react/VoiceSessionSnapshot.d.ts +6 -0
- package/dist/react/VoiceTraceTimeline.d.ts +6 -0
- package/dist/react/VoiceTurnLatency.d.ts +6 -0
- package/dist/react/VoiceTurnQuality.d.ts +6 -0
- package/dist/react/VoiceWidget.d.ts +13 -0
- package/dist/react/index.d.ts +80 -11
- package/dist/react/index.js +13610 -1595
- package/dist/react/useVoiceAgentSquadStatus.d.ts +8 -0
- package/dist/react/useVoiceCallDebugger.d.ts +8 -0
- package/dist/react/useVoiceCampaignDialerProof.d.ts +10 -0
- package/dist/react/useVoiceController.d.ts +5 -1
- package/dist/react/useVoiceDeliveryRuntime.d.ts +13 -0
- package/dist/react/useVoiceLiveOps.d.ts +9 -0
- package/dist/react/useVoiceOpsActionCenter.d.ts +11 -0
- package/dist/react/useVoiceOpsStatus.d.ts +8 -0
- package/dist/react/useVoicePlatformCoverage.d.ts +8 -0
- package/dist/react/useVoiceProfileComparison.d.ts +8 -0
- package/dist/react/useVoiceProfileSwitchRecommendation.d.ts +8 -0
- package/dist/react/useVoiceProofTrends.d.ts +8 -0
- package/dist/react/useVoiceProviderCapabilities.d.ts +8 -0
- package/dist/react/useVoiceProviderContracts.d.ts +8 -0
- package/dist/react/useVoiceProviderSimulationControls.d.ts +1 -1
- package/dist/react/useVoiceProviderStatus.d.ts +1 -1
- package/dist/react/useVoiceReadinessFailures.d.ts +8 -0
- package/dist/react/useVoiceReconnectProfileEvidence.d.ts +8 -0
- package/dist/react/useVoiceRoutingStatus.d.ts +1 -1
- package/dist/react/useVoiceSessionObservability.d.ts +8 -0
- package/dist/react/useVoiceSessionSnapshot.d.ts +9 -0
- package/dist/react/useVoiceStream.d.ts +5 -1
- package/dist/react/useVoiceTraceTimeline.d.ts +8 -0
- package/dist/react/useVoiceTurnLatency.d.ts +9 -0
- package/dist/react/useVoiceTurnQuality.d.ts +8 -0
- package/dist/react/useVoiceWorkflowStatus.d.ts +1 -1
- package/dist/svelte/createVoiceAgentSquadStatus.d.ts +9 -0
- package/dist/svelte/createVoiceCallDebugger.d.ts +10 -0
- package/dist/svelte/createVoiceCallPlayer.d.ts +33 -0
- package/dist/svelte/createVoiceCampaignDialerProof.d.ts +9 -0
- package/dist/svelte/createVoiceCostDashboard.d.ts +13 -0
- package/dist/svelte/createVoiceDeliveryRuntime.d.ts +11 -0
- package/dist/svelte/createVoiceLiveAgentConsole.d.ts +23 -0
- package/dist/svelte/createVoiceLiveCallViewer.d.ts +26 -0
- package/dist/svelte/createVoiceLiveOps.d.ts +13 -0
- package/dist/svelte/createVoiceOpsActionCenter.d.ts +10 -0
- package/dist/svelte/createVoiceOpsStatus.d.ts +4 -4
- package/dist/svelte/createVoicePlatformCoverage.d.ts +7 -0
- package/dist/svelte/createVoiceProfileComparison.d.ts +7 -0
- package/dist/svelte/createVoiceProofTrends.d.ts +7 -0
- package/dist/svelte/createVoiceProviderCapabilities.d.ts +10 -0
- package/dist/svelte/createVoiceProviderContracts.d.ts +10 -0
- package/dist/svelte/createVoiceProviderSimulationControls.d.ts +2 -2
- package/dist/svelte/createVoiceProviderStatus.d.ts +2 -2
- package/dist/svelte/createVoiceReadinessFailures.d.ts +7 -0
- package/dist/svelte/createVoiceReconnectProfileEvidence.d.ts +7 -0
- package/dist/svelte/createVoiceReplayTimeline.d.ts +13 -0
- package/dist/svelte/createVoiceRoutingStatus.d.ts +2 -2
- package/dist/svelte/createVoiceSessionObservability.d.ts +10 -0
- package/dist/svelte/createVoiceSessionSnapshot.d.ts +11 -0
- package/dist/svelte/createVoiceStream.d.ts +1 -1
- package/dist/svelte/createVoiceTraceTimeline.d.ts +10 -0
- package/dist/svelte/createVoiceTurnLatency.d.ts +11 -0
- package/dist/svelte/createVoiceTurnQuality.d.ts +10 -0
- package/dist/svelte/createVoiceWidget.d.ts +19 -0
- package/dist/svelte/createVoiceWorkflowStatus.d.ts +2 -2
- package/dist/svelte/index.d.ts +37 -8
- package/dist/svelte/index.js +7249 -1315
- package/dist/telephony/contract.d.ts +61 -0
- package/dist/telephony/matrix.d.ts +97 -0
- package/dist/telephony/plivo.d.ts +303 -0
- package/dist/telephony/response.d.ts +1 -1
- package/dist/telephony/security.d.ts +182 -0
- package/dist/telephony/telnyx.d.ts +291 -0
- package/dist/telephony/twilio.d.ts +153 -15
- package/dist/testing/accuracy.d.ts +18 -1
- package/dist/testing/audioMatrix.d.ts +22 -0
- package/dist/testing/benchmark.d.ts +24 -15
- package/dist/testing/confidenceCalibration.d.ts +19 -0
- package/dist/testing/conformance.d.ts +11 -0
- package/dist/testing/corrected.d.ts +9 -9
- package/dist/testing/criticalFields.d.ts +22 -0
- package/dist/testing/duplex.d.ts +5 -5
- package/dist/testing/fixtures.d.ts +7 -4
- package/dist/testing/index.d.ts +21 -13
- package/dist/testing/index.js +8517 -1053
- package/dist/testing/ioProviderSimulator.d.ts +5 -5
- package/dist/testing/outcomes.d.ts +12 -0
- package/dist/testing/provenance.d.ts +44 -0
- package/dist/testing/providerSimulator.d.ts +5 -5
- package/dist/testing/review.d.ts +8 -8
- package/dist/testing/routingBenchmark.d.ts +16 -0
- package/dist/testing/sessionBenchmark.d.ts +13 -13
- package/dist/testing/statistics.d.ts +30 -0
- package/dist/testing/stt.d.ts +3 -3
- package/dist/testing/telephony.d.ts +27 -2
- package/dist/testing/tts.d.ts +2 -2
- package/dist/vue/VoiceCallDebuggerLaunch.d.ts +72 -0
- package/dist/vue/VoiceCallPlayer.d.ts +40 -0
- package/dist/vue/VoiceCostDashboard.d.ts +57 -0
- package/dist/vue/VoiceDeliveryRuntime.d.ts +34 -0
- package/dist/vue/VoiceLiveAgentConsole.d.ts +50 -0
- package/dist/vue/VoiceLiveCallViewer.d.ts +35 -0
- package/dist/vue/VoiceOpsActionCenter.d.ts +13 -0
- package/dist/vue/VoiceOpsStatus.d.ts +4 -0
- package/dist/vue/VoicePlatformCoverage.d.ts +27 -0
- package/dist/vue/VoiceProofTrends.d.ts +25 -0
- package/dist/vue/VoiceProviderCapabilities.d.ts +55 -0
- package/dist/vue/VoiceProviderContracts.d.ts +25 -0
- package/dist/vue/VoiceProviderSimulationControls.d.ts +3 -3
- package/dist/vue/VoiceProviderStatus.d.ts +4 -0
- package/dist/vue/VoiceReadinessFailures.d.ts +25 -0
- package/dist/vue/VoiceReconnectProfileEvidence.d.ts +25 -0
- package/dist/vue/VoiceReplayTimeline.d.ts +17 -0
- package/dist/vue/VoiceRoutingStatus.d.ts +4 -0
- package/dist/vue/VoiceSessionObservability.d.ts +27 -0
- package/dist/vue/VoiceSessionSnapshot.d.ts +72 -0
- package/dist/vue/VoiceTurnLatency.d.ts +73 -0
- package/dist/vue/VoiceTurnQuality.d.ts +55 -0
- package/dist/vue/VoiceWidget.d.ts +77 -0
- package/dist/vue/index.d.ts +49 -11
- package/dist/vue/index.js +12896 -1700
- package/dist/vue/useVoiceAgentSquadStatus.d.ts +9 -0
- package/dist/vue/useVoiceCallDebugger.d.ts +10 -0
- package/dist/vue/useVoiceCampaignDialerProof.d.ts +11 -0
- package/dist/vue/useVoiceController.d.ts +10 -7
- package/dist/vue/useVoiceDeliveryRuntime.d.ts +13 -0
- package/dist/vue/useVoiceLiveOps.d.ts +9 -0
- package/dist/vue/useVoiceOpsActionCenter.d.ts +11 -0
- package/dist/vue/useVoiceOpsStatus.d.ts +9 -0
- package/dist/vue/useVoicePlatformCoverage.d.ts +9 -0
- package/dist/vue/useVoiceProfileComparison.d.ts +9 -0
- package/dist/vue/useVoiceProofTrends.d.ts +9 -0
- package/dist/vue/useVoiceProviderCapabilities.d.ts +9 -0
- package/dist/vue/useVoiceProviderContracts.d.ts +9 -0
- package/dist/vue/useVoiceProviderSimulationControls.d.ts +2 -2
- package/dist/vue/useVoiceProviderStatus.d.ts +3 -3
- package/dist/vue/useVoiceReadinessFailures.d.ts +959 -0
- package/dist/vue/useVoiceReconnectProfileEvidence.d.ts +9 -0
- package/dist/vue/useVoiceRoutingStatus.d.ts +2 -2
- package/dist/vue/useVoiceSessionObservability.d.ts +9 -0
- package/dist/vue/useVoiceSessionSnapshot.d.ts +10 -0
- package/dist/vue/useVoiceStream.d.ts +10 -6
- package/dist/vue/useVoiceTraceTimeline.d.ts +9 -0
- package/dist/vue/useVoiceTurnLatency.d.ts +10 -0
- package/dist/vue/useVoiceTurnQuality.d.ts +9 -0
- package/dist/vue/useVoiceWorkflowStatus.d.ts +3 -3
- package/package.json +247 -256
- package/dist/angular/voice-app-kit-status.service.d.ts +0 -12
- package/dist/angular/voice-ops-status.component.d.ts +0 -15
- package/dist/appKit.d.ts +0 -94
- package/dist/client/appKitStatus.d.ts +0 -19
- package/dist/react/useVoiceAppKitStatus.d.ts +0 -8
- package/dist/svelte/createVoiceAppKitStatus.d.ts +0 -8
- package/dist/turnProfiles.d.ts +0 -6
- package/dist/types.d.ts +0 -968
- package/dist/vue/useVoiceAppKitStatus.d.ts +0 -9
- package/fixtures/README.md +0 -57
- package/fixtures/manifest.json +0 -199
- package/fixtures/pcm/dialogue-three-clean.pcm +0 -0
- package/fixtures/pcm/dialogue-three-mixed.pcm +0 -0
- package/fixtures/pcm/dialogue-two-clean.pcm +0 -0
- package/fixtures/pcm/dialogue-two-noisy.pcm +0 -0
- package/fixtures/pcm/multiturn-three-mixed.pcm +0 -0
- package/fixtures/pcm/multiturn-two-clean.pcm +0 -0
- package/fixtures/pcm/quietly-alone-clean.pcm +0 -0
- package/fixtures/pcm/rainstorms-noisy.pcm +0 -0
- package/fixtures/pcm/stella-bulgaria-bulgarian20.pcm +0 -0
- package/fixtures/pcm/stella-ghana-english507.pcm +0 -0
- package/fixtures/pcm/stella-india-english37.pcm +0 -0
- package/fixtures/pcm/stella-jamaica-jamaican-creole-english1.pcm +0 -0
- package/fixtures/pcm/stella-liberia-liberian-pidgin-english2.pcm +0 -0
- package/fixtures/pcm/stella-pakistan-english519.pcm +0 -0
- package/fixtures/pcm/stella-sierra-leone-krio5.pcm +0 -0
- package/fixtures/pcm/stella-singapore-english655.pcm +0 -0
- package/fixtures/pcm/traveled-back-route-clean.pcm +0 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type VoiceEvidenceAssertion = {
|
|
2
|
+
ok: boolean;
|
|
3
|
+
issues: string[];
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Throw if an evidence assertion failed, formatting its issues into the error
|
|
7
|
+
* message. Returns the assertion unchanged when it passed, so callers can
|
|
8
|
+
* `return assertVoiceEvidence(label, evaluate(...))`.
|
|
9
|
+
*/
|
|
10
|
+
export declare const assertVoiceEvidence: <A extends VoiceEvidenceAssertion>(failureMessage: string, assertion: A) => A;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shared three-level health status used across voice reports. Severity
|
|
3
|
+
* order is fail > warn > pass.
|
|
4
|
+
*/
|
|
5
|
+
export type VoiceStatus = "fail" | "pass" | "warn";
|
|
6
|
+
/** Reduce a set of statuses to the worst one (fail > warn > pass). */
|
|
7
|
+
export declare const worstVoiceStatus: (statuses: Iterable<VoiceStatus>) => VoiceStatus;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { VoicePluginConfig, VoiceSessionStore } from "./core/types";
|
|
2
|
+
export declare const manifest: Omit<import("@absolutejs/manifest").PackageManifest<VoicePluginConfig, VoiceSessionStore>, "tools" | "contract" | "settings"> & (({
|
|
3
|
+
contract: 1;
|
|
4
|
+
tools?: Record<string, import("@absolutejs/manifest").LegacyManifestTool<VoiceSessionStore>> | undefined;
|
|
5
|
+
} | {
|
|
6
|
+
contract: 2;
|
|
7
|
+
tools?: Record<string, import("@absolutejs/manifest").AuthorizedManifestTool<VoiceSessionStore>> | undefined;
|
|
8
|
+
}) & {
|
|
9
|
+
settings: import("@sinclair/typebox").TObject<{
|
|
10
|
+
backchannelBargeInGuard: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
11
|
+
greeting: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
12
|
+
normalizeNumbers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
13
|
+
path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
14
|
+
preset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"default">, import("@sinclair/typebox").TLiteral<"chat">, import("@sinclair/typebox").TLiteral<"guided-intake">, import("@sinclair/typebox").TLiteral<"dictation">, import("@sinclair/typebox").TLiteral<"noisy-room">, import("@sinclair/typebox").TLiteral<"pstn-balanced">, import("@sinclair/typebox").TLiteral<"pstn-fast">, import("@sinclair/typebox").TLiteral<"reliability">]>>;
|
|
15
|
+
resumeGreeting: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
16
|
+
}>;
|
|
17
|
+
});
|
package/dist/manifest.js
ADDED
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __name = (target, name) => {
|
|
6
|
+
Object.defineProperty(target, "name", {
|
|
7
|
+
value: name,
|
|
8
|
+
enumerable: false,
|
|
9
|
+
configurable: true
|
|
10
|
+
});
|
|
11
|
+
return target;
|
|
12
|
+
};
|
|
13
|
+
var __returnValue = (v) => v;
|
|
14
|
+
function __exportSetter(name, newValue) {
|
|
15
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
16
|
+
}
|
|
17
|
+
var __export = (target, all) => {
|
|
18
|
+
for (var name in all)
|
|
19
|
+
__defProp(target, name, {
|
|
20
|
+
get: all[name],
|
|
21
|
+
enumerable: true,
|
|
22
|
+
configurable: true,
|
|
23
|
+
set: __exportSetter.bind(all, name)
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
|
|
27
|
+
var __typeError = (msg) => {
|
|
28
|
+
throw TypeError(msg);
|
|
29
|
+
};
|
|
30
|
+
var __defNormalProp = (obj, key, value) => (key in obj) ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
31
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
32
|
+
var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
|
|
33
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
34
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
35
|
+
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
36
|
+
var __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol("metadata")] ?? null)];
|
|
37
|
+
var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
38
|
+
var __expectFn = (fn) => fn !== undefined && typeof fn !== "function" ? __typeError("Function expected") : fn;
|
|
39
|
+
var __decoratorContext = (kind, name, done, metadata, fns) => ({
|
|
40
|
+
kind: __decoratorStrings[kind],
|
|
41
|
+
name,
|
|
42
|
+
metadata,
|
|
43
|
+
addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null))
|
|
44
|
+
});
|
|
45
|
+
var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
|
|
46
|
+
var __runInitializers = (array, flags, self, value) => {
|
|
47
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length;i < n; i++)
|
|
48
|
+
flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
|
|
49
|
+
return value;
|
|
50
|
+
};
|
|
51
|
+
var __decorateElement = (array, flags, name, decorators, target, extra) => {
|
|
52
|
+
var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
|
|
53
|
+
var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];
|
|
54
|
+
var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
|
|
55
|
+
var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : {
|
|
56
|
+
get [name]() {
|
|
57
|
+
return __privateGet(this, extra);
|
|
58
|
+
},
|
|
59
|
+
set [name](x) {
|
|
60
|
+
__privateSet(this, extra, x);
|
|
61
|
+
}
|
|
62
|
+
}, name));
|
|
63
|
+
k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name);
|
|
64
|
+
for (var i = decorators.length - 1;i >= 0; i--) {
|
|
65
|
+
ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
|
|
66
|
+
if (k) {
|
|
67
|
+
ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => (name in x) };
|
|
68
|
+
if (k ^ 3)
|
|
69
|
+
access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
|
|
70
|
+
if (k > 2)
|
|
71
|
+
access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
|
|
72
|
+
}
|
|
73
|
+
it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? undefined : { get: desc.get, set: desc.set } : target, ctx);
|
|
74
|
+
done._ = 1;
|
|
75
|
+
if (k ^ 4 || it === undefined)
|
|
76
|
+
__expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
|
|
77
|
+
else if (typeof it !== "object" || it === null)
|
|
78
|
+
__typeError("Object expected");
|
|
79
|
+
else
|
|
80
|
+
__expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
|
|
81
|
+
}
|
|
82
|
+
return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
83
|
+
};
|
|
84
|
+
var __require = import.meta.require;
|
|
85
|
+
|
|
86
|
+
// src/manifest.ts
|
|
87
|
+
import {
|
|
88
|
+
defineImplementation,
|
|
89
|
+
defineManifest,
|
|
90
|
+
toolFactory
|
|
91
|
+
} from "@absolutejs/manifest";
|
|
92
|
+
import { Type } from "@sinclair/typebox";
|
|
93
|
+
var tool = toolFactory();
|
|
94
|
+
var MAX_LIST_LIMIT = 200;
|
|
95
|
+
var MAX_TRANSCRIPT_TURNS = 20;
|
|
96
|
+
var manifest = defineManifest()({
|
|
97
|
+
contract: 2,
|
|
98
|
+
identity: {
|
|
99
|
+
accent: "#f43f5e",
|
|
100
|
+
category: "voice",
|
|
101
|
+
description: "Self-hosted voice assistant runtime for Elysia: browser and phone-call sessions over WebSockets, pluggable speech-to-text (`voice/stt`), text-to-speech (`voice/tts`), and speech-to-speech (`voice/realtime`) vendor adapters, turn detection, barge-in, greetings, reconnect recovery, session stores (`voice/session-store`), traces, evals, and live-monitor surfaces \u2014 the orchestration hosted voice platforms keep behind their dashboards, inside your own server.",
|
|
102
|
+
docsUrl: "https://github.com/absolutejs/voice",
|
|
103
|
+
name: "@absolutejs/voice",
|
|
104
|
+
tagline: "Let people talk to your site and get spoken answers."
|
|
105
|
+
},
|
|
106
|
+
implements: [
|
|
107
|
+
defineImplementation()({
|
|
108
|
+
contract: "voice/session-store",
|
|
109
|
+
factory: "createVoiceMemoryStore",
|
|
110
|
+
from: "@absolutejs/voice",
|
|
111
|
+
title: "In memory (development only \u2014 calls are forgotten on restart)",
|
|
112
|
+
wiring: {
|
|
113
|
+
code: "createVoiceMemoryStore()",
|
|
114
|
+
imports: [
|
|
115
|
+
{ from: "@absolutejs/voice", names: ["createVoiceMemoryStore"] }
|
|
116
|
+
]
|
|
117
|
+
}
|
|
118
|
+
}),
|
|
119
|
+
defineImplementation()({
|
|
120
|
+
contract: "voice/session-store",
|
|
121
|
+
factory: "createVoiceSQLiteSessionStore",
|
|
122
|
+
from: "@absolutejs/voice",
|
|
123
|
+
settings: Type.Object({
|
|
124
|
+
path: Type.String({
|
|
125
|
+
description: "Database file on this machine where call sessions are kept. Created if missing.",
|
|
126
|
+
examples: ["./var/voice-sessions.sqlite"],
|
|
127
|
+
title: "Database file"
|
|
128
|
+
}),
|
|
129
|
+
tableName: Type.Optional(Type.String({
|
|
130
|
+
description: "Table the sessions are stored in.",
|
|
131
|
+
title: "Table name"
|
|
132
|
+
}))
|
|
133
|
+
}),
|
|
134
|
+
title: "SQLite file on this machine",
|
|
135
|
+
wiring: {
|
|
136
|
+
code: "createVoiceSQLiteSessionStore(${settings})",
|
|
137
|
+
imports: [
|
|
138
|
+
{
|
|
139
|
+
from: "@absolutejs/voice",
|
|
140
|
+
names: ["createVoiceSQLiteSessionStore"]
|
|
141
|
+
}
|
|
142
|
+
]
|
|
143
|
+
}
|
|
144
|
+
}),
|
|
145
|
+
defineImplementation()({
|
|
146
|
+
contract: "voice/session-store",
|
|
147
|
+
factory: "createVoicePostgresSessionStore",
|
|
148
|
+
from: "@absolutejs/voice",
|
|
149
|
+
requires: {
|
|
150
|
+
env: [
|
|
151
|
+
{
|
|
152
|
+
description: "Postgres connection string (call sessions are stored here)",
|
|
153
|
+
example: "postgres://user:pass@host/db",
|
|
154
|
+
key: "DATABASE_URL",
|
|
155
|
+
secret: true
|
|
156
|
+
}
|
|
157
|
+
],
|
|
158
|
+
services: [
|
|
159
|
+
{
|
|
160
|
+
description: "Stores call sessions durably",
|
|
161
|
+
id: "postgres"
|
|
162
|
+
}
|
|
163
|
+
]
|
|
164
|
+
},
|
|
165
|
+
settings: Type.Object({
|
|
166
|
+
schemaName: Type.Optional(Type.String({
|
|
167
|
+
description: "Postgres schema the table lives in.",
|
|
168
|
+
title: "Schema name"
|
|
169
|
+
})),
|
|
170
|
+
tableName: Type.Optional(Type.String({
|
|
171
|
+
description: "Table the sessions are stored in.",
|
|
172
|
+
title: "Table name"
|
|
173
|
+
}))
|
|
174
|
+
}),
|
|
175
|
+
title: "Postgres",
|
|
176
|
+
wiring: {
|
|
177
|
+
code: 'createVoicePostgresSessionStore({ connectionString: ${env.DATABASE_URL} ?? "", ...${settings} })',
|
|
178
|
+
imports: [
|
|
179
|
+
{
|
|
180
|
+
from: "@absolutejs/voice",
|
|
181
|
+
names: ["createVoicePostgresSessionStore"]
|
|
182
|
+
}
|
|
183
|
+
]
|
|
184
|
+
}
|
|
185
|
+
}),
|
|
186
|
+
defineImplementation()({
|
|
187
|
+
contract: "voice/session-store",
|
|
188
|
+
factory: "createVoiceFileSessionStore",
|
|
189
|
+
from: "@absolutejs/voice",
|
|
190
|
+
settings: Type.Object({
|
|
191
|
+
directory: Type.String({
|
|
192
|
+
description: "Folder on this machine where each call session is kept as a JSON file. Created if missing.",
|
|
193
|
+
examples: ["./var/voice-sessions"],
|
|
194
|
+
title: "Storage folder"
|
|
195
|
+
})
|
|
196
|
+
}),
|
|
197
|
+
title: "JSON files on this machine",
|
|
198
|
+
wiring: {
|
|
199
|
+
code: "createVoiceFileSessionStore(${settings})",
|
|
200
|
+
imports: [
|
|
201
|
+
{ from: "@absolutejs/voice", names: ["createVoiceFileSessionStore"] }
|
|
202
|
+
]
|
|
203
|
+
}
|
|
204
|
+
})
|
|
205
|
+
],
|
|
206
|
+
requires: {
|
|
207
|
+
peers: [{ name: "elysia", range: ">= 1.4.18", reason: "plugin host" }]
|
|
208
|
+
},
|
|
209
|
+
settings: Type.Object({
|
|
210
|
+
backchannelBargeInGuard: Type.Optional(Type.Boolean({
|
|
211
|
+
description: 'Keep the assistant talking through listening cues like "mm-hm" or "right" instead of treating them as interruptions.',
|
|
212
|
+
title: "Ignore listening cues"
|
|
213
|
+
})),
|
|
214
|
+
greeting: Type.Optional(Type.String({
|
|
215
|
+
description: "Spoken by the assistant the moment a call connects, before the caller says anything.",
|
|
216
|
+
examples: ["Hi! How can I help you today?"],
|
|
217
|
+
title: "Opening greeting"
|
|
218
|
+
})),
|
|
219
|
+
normalizeNumbers: Type.Optional(Type.Boolean({
|
|
220
|
+
description: 'Rewrite spoken numbers to digits in transcripts ("ten million" becomes "10 million") so downstream systems read them consistently.',
|
|
221
|
+
title: "Write numbers as digits"
|
|
222
|
+
})),
|
|
223
|
+
path: Type.Optional(Type.String({
|
|
224
|
+
default: "/voice/realtime",
|
|
225
|
+
description: "The WebSocket route callers connect to.",
|
|
226
|
+
title: "Call route"
|
|
227
|
+
})),
|
|
228
|
+
preset: Type.Optional(Type.Union([
|
|
229
|
+
Type.Literal("default"),
|
|
230
|
+
Type.Literal("chat"),
|
|
231
|
+
Type.Literal("guided-intake"),
|
|
232
|
+
Type.Literal("dictation"),
|
|
233
|
+
Type.Literal("noisy-room"),
|
|
234
|
+
Type.Literal("pstn-balanced"),
|
|
235
|
+
Type.Literal("pstn-fast"),
|
|
236
|
+
Type.Literal("reliability")
|
|
237
|
+
], {
|
|
238
|
+
description: "Tuned bundle of turn-taking and latency defaults for the kind of calls you take \u2014 casual chat, guided intake, dictation, noisy rooms, or phone lines.",
|
|
239
|
+
title: "Conversation preset"
|
|
240
|
+
})),
|
|
241
|
+
resumeGreeting: Type.Optional(Type.String({
|
|
242
|
+
description: "Spoken when a dropped call reconnects, so the caller knows they are back.",
|
|
243
|
+
examples: ["Sorry, we got cut off \u2014 where were we?"],
|
|
244
|
+
title: "Reconnect greeting"
|
|
245
|
+
}))
|
|
246
|
+
}),
|
|
247
|
+
slots: {
|
|
248
|
+
realtime: {
|
|
249
|
+
configPath: "realtime",
|
|
250
|
+
contract: "voice/realtime",
|
|
251
|
+
description: "One speech-to-speech model that listens and talks in a single stream \u2014 an alternative to picking separate speech-to-text and text-to-speech services.",
|
|
252
|
+
known: ["@absolutejs/voice-openai", "@absolutejs/voice-gemini"]
|
|
253
|
+
},
|
|
254
|
+
session: {
|
|
255
|
+
configPath: "session",
|
|
256
|
+
contract: "voice/session-store",
|
|
257
|
+
description: "Where each call's transcript and state is kept while it runs (and after, for review)",
|
|
258
|
+
known: [
|
|
259
|
+
"@absolutejs/voice#memory",
|
|
260
|
+
"@absolutejs/voice#sqlite",
|
|
261
|
+
"@absolutejs/voice#postgres",
|
|
262
|
+
"@absolutejs/voice#file"
|
|
263
|
+
],
|
|
264
|
+
required: true
|
|
265
|
+
},
|
|
266
|
+
stt: {
|
|
267
|
+
configPath: "stt",
|
|
268
|
+
contract: "voice/stt",
|
|
269
|
+
description: "The service that turns the caller's speech into text. Not needed when a speech-to-speech (realtime) adapter is chosen instead.",
|
|
270
|
+
known: [
|
|
271
|
+
"@absolutejs/voice-deepgram",
|
|
272
|
+
"@absolutejs/voice-assemblyai",
|
|
273
|
+
"@absolutejs/voice-gladia",
|
|
274
|
+
"@absolutejs/voice-soniox",
|
|
275
|
+
"@absolutejs/voice-speechmatics",
|
|
276
|
+
"@absolutejs/voice-azure",
|
|
277
|
+
"@absolutejs/voice-google-speech",
|
|
278
|
+
"@absolutejs/voice-openai-whisper"
|
|
279
|
+
]
|
|
280
|
+
},
|
|
281
|
+
tts: {
|
|
282
|
+
configPath: "tts",
|
|
283
|
+
contract: "voice/tts",
|
|
284
|
+
description: "The service that speaks the assistant's replies out loud. Not needed when a speech-to-speech (realtime) adapter is chosen instead.",
|
|
285
|
+
known: [
|
|
286
|
+
"@absolutejs/voice-elevenlabs",
|
|
287
|
+
"@absolutejs/voice-cartesia",
|
|
288
|
+
"@absolutejs/voice-azure",
|
|
289
|
+
"@absolutejs/voice-lmnt",
|
|
290
|
+
"@absolutejs/voice-playht",
|
|
291
|
+
"@absolutejs/voice-rime",
|
|
292
|
+
"@absolutejs/voice-smallest",
|
|
293
|
+
"@absolutejs/voice-neets"
|
|
294
|
+
]
|
|
295
|
+
}
|
|
296
|
+
},
|
|
297
|
+
tools: {
|
|
298
|
+
delete_session: tool.runtime({
|
|
299
|
+
annotations: { destructiveHint: true, idempotentHint: true },
|
|
300
|
+
authorization: {
|
|
301
|
+
approval: "policy",
|
|
302
|
+
audience: "owner",
|
|
303
|
+
effects: ["delete"],
|
|
304
|
+
idempotency: { mode: "resource" },
|
|
305
|
+
requiredScopes: ["voice:sessions:delete"],
|
|
306
|
+
resource: { idField: "id", type: "voice-session" },
|
|
307
|
+
reversible: false
|
|
308
|
+
},
|
|
309
|
+
description: "Delete one call session (its transcript and state) by id. Deleting an unknown id succeeds.",
|
|
310
|
+
input: Type.Object({ id: Type.String({ minLength: 1 }) }),
|
|
311
|
+
handler: async ({ id }, store) => {
|
|
312
|
+
await store.remove(id);
|
|
313
|
+
return `deleted session ${id}`;
|
|
314
|
+
}
|
|
315
|
+
}),
|
|
316
|
+
get_session: tool.runtime({
|
|
317
|
+
annotations: { readOnlyHint: true },
|
|
318
|
+
authorization: {
|
|
319
|
+
approval: "never",
|
|
320
|
+
audience: "owner",
|
|
321
|
+
effects: ["read"],
|
|
322
|
+
requiredScopes: ["voice:sessions:read"],
|
|
323
|
+
resource: { idField: "id", type: "voice-session" }
|
|
324
|
+
},
|
|
325
|
+
description: "Fetch one call session by id: status, timing, and the committed conversation turns (caller text and assistant reply), most recent last.",
|
|
326
|
+
input: Type.Object({
|
|
327
|
+
id: Type.String({ minLength: 1 }),
|
|
328
|
+
maxTurns: Type.Optional(Type.Integer({ maximum: MAX_LIST_LIMIT, minimum: 1 }))
|
|
329
|
+
}),
|
|
330
|
+
handler: async ({ id, maxTurns }, store) => {
|
|
331
|
+
const session = await store.get(id);
|
|
332
|
+
if (session === undefined)
|
|
333
|
+
return `no session with id ${id}`;
|
|
334
|
+
const limit = maxTurns ?? MAX_TRANSCRIPT_TURNS;
|
|
335
|
+
return JSON.stringify({
|
|
336
|
+
createdAt: session.createdAt,
|
|
337
|
+
disposition: session.call?.disposition,
|
|
338
|
+
id: session.id,
|
|
339
|
+
lastActivityAt: session.lastActivityAt,
|
|
340
|
+
status: session.status,
|
|
341
|
+
turnCount: session.turns.length,
|
|
342
|
+
turns: session.turns.slice(-limit).map((turn) => ({
|
|
343
|
+
assistantText: turn.assistantText,
|
|
344
|
+
committedAt: turn.committedAt,
|
|
345
|
+
userText: turn.text
|
|
346
|
+
}))
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
}),
|
|
350
|
+
list_sessions: tool.runtime({
|
|
351
|
+
annotations: { readOnlyHint: true },
|
|
352
|
+
authorization: {
|
|
353
|
+
approval: "never",
|
|
354
|
+
audience: "owner",
|
|
355
|
+
effects: ["read"],
|
|
356
|
+
requiredScopes: ["voice:sessions:read"]
|
|
357
|
+
},
|
|
358
|
+
description: "List call sessions with status, creation time, last activity, and turn count \u2014 most recently active first.",
|
|
359
|
+
input: Type.Object({
|
|
360
|
+
limit: Type.Optional(Type.Integer({ maximum: MAX_LIST_LIMIT, minimum: 1 }))
|
|
361
|
+
}),
|
|
362
|
+
handler: async ({ limit }, store) => {
|
|
363
|
+
const sessions = await store.list();
|
|
364
|
+
return JSON.stringify(sessions.slice(0, limit ?? MAX_LIST_LIMIT));
|
|
365
|
+
}
|
|
366
|
+
})
|
|
367
|
+
},
|
|
368
|
+
wiring: [
|
|
369
|
+
{
|
|
370
|
+
description: "Pick a speech-to-text and a text-to-speech service, choose where call sessions are stored, and write the onTurn handler \u2014 the assistant's brain.",
|
|
371
|
+
id: "default",
|
|
372
|
+
server: {
|
|
373
|
+
code: [
|
|
374
|
+
"// Every call's transcript and state lives in the session store.",
|
|
375
|
+
"const voiceSessions = ${slot.session};",
|
|
376
|
+
"",
|
|
377
|
+
"// Mount with .use(voiceAssistant); callers connect over WebSocket at `path`.",
|
|
378
|
+
"const voiceAssistant = voice({",
|
|
379
|
+
"\tonTurn: async (session, turn) => {",
|
|
380
|
+
"\t\t// TODO: generate the assistant's reply (call your LLM here).",
|
|
381
|
+
'\t\treturn { assistantText: "You said: " + turn.text };',
|
|
382
|
+
"\t},",
|
|
383
|
+
"\tsession: voiceSessions,",
|
|
384
|
+
"\tstt: ${slot.stt},",
|
|
385
|
+
"\ttts: ${slot.tts},",
|
|
386
|
+
"\t...${settings}",
|
|
387
|
+
"});"
|
|
388
|
+
].join(`
|
|
389
|
+
`),
|
|
390
|
+
imports: [{ from: "@absolutejs/voice", names: ["voice"] }],
|
|
391
|
+
placement: "module-scope"
|
|
392
|
+
},
|
|
393
|
+
title: "Voice assistant with separate STT + TTS"
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
description: "Use one speech-to-speech model (OpenAI Realtime, Gemini Live) that listens and talks in a single stream instead of separate STT and TTS services.",
|
|
397
|
+
id: "realtime",
|
|
398
|
+
server: {
|
|
399
|
+
code: [
|
|
400
|
+
"// Every call's transcript and state lives in the session store.",
|
|
401
|
+
"const voiceSessions = ${slot.session};",
|
|
402
|
+
"",
|
|
403
|
+
"// Mount with .use(voiceAssistant); callers connect over WebSocket at `path`.",
|
|
404
|
+
"const voiceAssistant = voice({",
|
|
405
|
+
"\tonTurn: async (session, turn) => {",
|
|
406
|
+
"\t\t// TODO: generate the assistant's reply (call your LLM here).",
|
|
407
|
+
'\t\treturn { assistantText: "You said: " + turn.text };',
|
|
408
|
+
"\t},",
|
|
409
|
+
"\trealtime: ${slot.realtime},",
|
|
410
|
+
"\tsession: voiceSessions,",
|
|
411
|
+
"\t...${settings}",
|
|
412
|
+
"});"
|
|
413
|
+
].join(`
|
|
414
|
+
`),
|
|
415
|
+
imports: [{ from: "@absolutejs/voice", names: ["voice"] }],
|
|
416
|
+
placement: "module-scope"
|
|
417
|
+
},
|
|
418
|
+
title: "Voice assistant with a speech-to-speech model"
|
|
419
|
+
}
|
|
420
|
+
]
|
|
421
|
+
});
|
|
422
|
+
export {
|
|
423
|
+
manifest
|
|
424
|
+
};
|