@absolutejs/voice 0.0.22-beta.58 → 0.0.22-beta.580
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 +4543 -1181
- package/dist/angular/index.d.ts +36 -5
- package/dist/angular/index.js +4229 -393
- 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 +11 -0
- 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 +5 -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 +4 -3
- 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 +1279 -77
- package/dist/client/htmxDashboardRenderers.d.ts +71 -0
- package/dist/client/index.d.ts +107 -15
- package/dist/client/index.js +10742 -254
- 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 +33 -0
- package/dist/client/providerSimulationControlsWidget.d.ts +20 -0
- package/dist/client/providerStatus.d.ts +5 -3
- package/dist/client/providerStatusWidget.d.ts +32 -0
- 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 +21 -0
- package/dist/client/routingStatusWidget.d.ts +32 -0
- 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} +83 -6
- 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} +14 -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 +24 -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 +76 -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/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/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} +52 -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/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} +2 -2
- 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/core/providerCapabilities.d.ts +92 -0
- 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 +27 -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/core/toolContract.d.ts +161 -0
- package/dist/core/toolRuntime.d.ts +50 -0
- 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} +1 -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/{types.d.ts → core/types.d.ts} +573 -81
- 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/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 +1741 -0
- package/dist/embed/voice-widget.js +10 -0
- package/dist/index.d.ts +373 -74
- package/dist/index.js +46542 -7575
- 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/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 +5 -0
- package/dist/react/VoiceProviderStatus.d.ts +6 -0
- 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 +6 -0
- 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 -6
- package/dist/react/index.js +12960 -323
- 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 +10 -0
- 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 +8 -0
- 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 +11 -0
- package/dist/svelte/createVoiceProviderStatus.d.ts +5 -3
- 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 +10 -0
- 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 -6
- package/dist/svelte/index.js +7083 -753
- 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 +152 -15
- package/dist/testing/accuracy.d.ts +1 -1
- package/dist/testing/benchmark.d.ts +15 -15
- package/dist/testing/corrected.d.ts +9 -9
- package/dist/testing/duplex.d.ts +5 -5
- package/dist/testing/fixtures.d.ts +4 -4
- package/dist/testing/index.d.ts +13 -13
- package/dist/testing/index.js +6818 -957
- package/dist/testing/ioProviderSimulator.d.ts +5 -5
- package/dist/testing/providerSimulator.d.ts +5 -5
- package/dist/testing/review.d.ts +8 -8
- package/dist/testing/sessionBenchmark.d.ts +13 -13
- 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 +88 -0
- package/dist/vue/VoiceProviderStatus.d.ts +55 -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 +55 -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 -6
- package/dist/vue/index.js +12265 -417
- 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 +24 -0
- 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 +8 -0
- 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 +155 -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 -92
- 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/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
|
@@ -1,24 +1,48 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { VoiceOpsDispositionTaskPolicies, VoiceOpsTaskAssignmentRule, VoiceOpsTaskAssignmentRules, VoiceIntegrationWebhookConfig, StoredVoiceIntegrationEvent, StoredVoiceOpsTask, VoiceIntegrationEventStore, VoiceOpsTaskPolicy, VoiceOpsTask, VoiceOpsTaskStore } from
|
|
3
|
-
import type { VoiceIntegrationSink } from
|
|
4
|
-
import type { StoredVoiceCallReviewArtifact, VoiceCallReviewArtifact, VoiceCallReviewStore } from
|
|
5
|
-
import type { VoiceTraceEventStore } from
|
|
1
|
+
import type { MediaWebRTCStatsCollector, MediaWebRTCStatsReport, MediaWebRTCStatsReportInput, MediaWebRTCStreamContinuityInput, MediaWebRTCStreamContinuityReport } from "@absolutejs/media";
|
|
2
|
+
import type { VoiceOpsDispositionTaskPolicies, VoiceOpsTaskAssignmentRule, VoiceOpsTaskAssignmentRules, VoiceIntegrationWebhookConfig, StoredVoiceIntegrationEvent, StoredVoiceOpsTask, VoiceIntegrationEventStore, VoiceOpsTaskPolicy, VoiceOpsTask, VoiceOpsTaskStore } from "./ops";
|
|
3
|
+
import type { VoiceIntegrationSink } from "./opsSinks";
|
|
4
|
+
import type { StoredVoiceCallReviewArtifact, VoiceCallReviewArtifact, VoiceCallReviewStore } from "../testing/review";
|
|
5
|
+
import type { VoiceTraceEventStore } from "./trace";
|
|
6
|
+
import type { VoiceLiveOpsControlState } from "./liveOps";
|
|
7
|
+
import type { VoiceAuditActor, VoiceAuditEventStore } from "./audit";
|
|
8
|
+
import type { VoiceProfileSwitchGuardDecision, VoiceProfileSwitchGuardMode, VoiceProfileSwitchObservedSignals } from "./profileSwitchRecommendation";
|
|
9
|
+
import type { VoiceRealCallProfileDefaultsReport, VoiceRealCallProfileHistoryReport } from "./proofTrends";
|
|
6
10
|
export type AudioFormat = {
|
|
7
|
-
container:
|
|
8
|
-
encoding:
|
|
11
|
+
container: "raw";
|
|
12
|
+
encoding: "alaw" | "mulaw" | "pcm_s16le";
|
|
9
13
|
sampleRateHz: number;
|
|
10
14
|
channels: 1 | 2;
|
|
11
15
|
};
|
|
12
16
|
export type AudioChunk = ArrayBuffer | ArrayBufferView;
|
|
17
|
+
/**
|
|
18
|
+
* Structural contract for an inbound noise suppressor applied before STT.
|
|
19
|
+
* Matches `@absolutejs/media`'s `NoiseSuppressor`, so any media suppressor
|
|
20
|
+
* (`createFFmpegNoiseSuppressor`, `createEnergyGateNoiseSuppressor`, a Krisp
|
|
21
|
+
* adapter, etc.) satisfies it without a hard import.
|
|
22
|
+
*/
|
|
23
|
+
export type VoiceNoiseSuppressor = {
|
|
24
|
+
readonly kind: string;
|
|
25
|
+
process: (input: {
|
|
26
|
+
format: AudioFormat;
|
|
27
|
+
pcm: ArrayBuffer | ArrayBufferView;
|
|
28
|
+
}) => Promise<{
|
|
29
|
+
bytes: Uint8Array;
|
|
30
|
+
format: AudioFormat;
|
|
31
|
+
}> | {
|
|
32
|
+
bytes: Uint8Array;
|
|
33
|
+
format: AudioFormat;
|
|
34
|
+
};
|
|
35
|
+
close?: () => Promise<void> | void;
|
|
36
|
+
};
|
|
13
37
|
export type VoiceLanguageStrategy = {
|
|
14
|
-
mode:
|
|
38
|
+
mode: "auto-detect";
|
|
15
39
|
allowedLanguages?: string[];
|
|
16
40
|
} | {
|
|
17
|
-
mode:
|
|
41
|
+
mode: "fixed";
|
|
18
42
|
primaryLanguage: string;
|
|
19
43
|
secondaryLanguages?: string[];
|
|
20
44
|
} | {
|
|
21
|
-
mode:
|
|
45
|
+
mode: "allow-switching";
|
|
22
46
|
primaryLanguage?: string;
|
|
23
47
|
secondaryLanguages: string[];
|
|
24
48
|
};
|
|
@@ -28,7 +52,7 @@ export type VoicePhraseHint = {
|
|
|
28
52
|
boost?: number;
|
|
29
53
|
metadata?: Record<string, unknown>;
|
|
30
54
|
};
|
|
31
|
-
export type VoiceCorrectionRiskTier =
|
|
55
|
+
export type VoiceCorrectionRiskTier = "safe" | "balanced" | "risky";
|
|
32
56
|
export type VoiceDomainTerm = {
|
|
33
57
|
text: string;
|
|
34
58
|
aliases?: string[];
|
|
@@ -44,12 +68,18 @@ export type VoiceLexiconEntry = {
|
|
|
44
68
|
metadata?: Record<string, unknown>;
|
|
45
69
|
pronunciation?: string;
|
|
46
70
|
};
|
|
71
|
+
export type VoiceTranscriptSentiment = {
|
|
72
|
+
label: "negative" | "neutral" | "positive" | (string & {});
|
|
73
|
+
metadata?: Record<string, unknown>;
|
|
74
|
+
score?: number;
|
|
75
|
+
};
|
|
47
76
|
export type Transcript = {
|
|
48
77
|
id: string;
|
|
49
78
|
text: string;
|
|
50
79
|
isFinal: boolean;
|
|
51
80
|
confidence?: number;
|
|
52
81
|
language?: string;
|
|
82
|
+
sentiment?: VoiceTranscriptSentiment;
|
|
53
83
|
speaker?: string | number;
|
|
54
84
|
startedAtMs?: number;
|
|
55
85
|
endedAtMs?: number;
|
|
@@ -65,7 +95,7 @@ export type VoiceTranscriptQuality = {
|
|
|
65
95
|
fallback?: VoiceFallbackDiagnostics;
|
|
66
96
|
partialTranscriptCount: number;
|
|
67
97
|
selectedTranscriptCount: number;
|
|
68
|
-
source:
|
|
98
|
+
source: "fallback" | "primary";
|
|
69
99
|
};
|
|
70
100
|
export type VoiceTurnCorrectionDiagnostics = {
|
|
71
101
|
attempted: boolean;
|
|
@@ -83,7 +113,7 @@ export type VoiceTurnCostEstimate = {
|
|
|
83
113
|
primaryAudioMs: number;
|
|
84
114
|
totalBillableAudioMs: number;
|
|
85
115
|
};
|
|
86
|
-
export type VoiceFallbackSelectionReason =
|
|
116
|
+
export type VoiceFallbackSelectionReason = "fallback-empty" | "primary-empty" | "word-count-margin" | "confidence-margin" | "word-count-tiebreak" | "kept-primary";
|
|
87
117
|
export type VoiceFallbackDiagnostics = {
|
|
88
118
|
attempted: boolean;
|
|
89
119
|
fallbackConfidence?: number;
|
|
@@ -94,31 +124,31 @@ export type VoiceFallbackDiagnostics = {
|
|
|
94
124
|
primaryWordCount: number;
|
|
95
125
|
selected: boolean;
|
|
96
126
|
selectionReason: VoiceFallbackSelectionReason;
|
|
97
|
-
trigger:
|
|
127
|
+
trigger: "empty-turn" | "low-confidence" | "empty-or-low-confidence" | "always";
|
|
98
128
|
};
|
|
99
129
|
export type VoicePartialEvent = {
|
|
100
|
-
type:
|
|
130
|
+
type: "partial";
|
|
101
131
|
transcript: Transcript;
|
|
102
132
|
receivedAt: number;
|
|
103
133
|
};
|
|
104
134
|
export type VoiceFinalEvent = {
|
|
105
|
-
type:
|
|
135
|
+
type: "final";
|
|
106
136
|
transcript: Transcript;
|
|
107
137
|
receivedAt: number;
|
|
108
138
|
};
|
|
109
139
|
export type VoiceEndOfTurnEvent = {
|
|
110
|
-
type:
|
|
111
|
-
reason:
|
|
140
|
+
type: "endOfTurn";
|
|
141
|
+
reason: "vendor" | "silence" | "manual";
|
|
112
142
|
receivedAt: number;
|
|
113
143
|
};
|
|
114
144
|
export type VoiceErrorEvent = {
|
|
115
|
-
type:
|
|
145
|
+
type: "error";
|
|
116
146
|
error: Error;
|
|
117
147
|
recoverable: boolean;
|
|
118
148
|
code?: string;
|
|
119
149
|
};
|
|
120
150
|
export type VoiceCloseEvent = {
|
|
121
|
-
type:
|
|
151
|
+
type: "close";
|
|
122
152
|
code?: number;
|
|
123
153
|
reason?: string;
|
|
124
154
|
recoverable?: boolean;
|
|
@@ -144,11 +174,11 @@ export type STTAdapterOpenOptions = {
|
|
|
144
174
|
signal?: AbortSignal;
|
|
145
175
|
};
|
|
146
176
|
export type STTAdapter<TOptions extends STTAdapterOpenOptions = STTAdapterOpenOptions> = {
|
|
147
|
-
kind:
|
|
177
|
+
kind: "stt";
|
|
148
178
|
open: (options: TOptions) => Promise<STTAdapterSession> | STTAdapterSession;
|
|
149
179
|
};
|
|
150
180
|
export type TTSAudioEvent = {
|
|
151
|
-
type:
|
|
181
|
+
type: "audio";
|
|
152
182
|
chunk: AudioChunk;
|
|
153
183
|
format: AudioFormat;
|
|
154
184
|
receivedAt: number;
|
|
@@ -161,15 +191,26 @@ export type TTSSessionEventMap = {
|
|
|
161
191
|
export type TTSAdapterSession = {
|
|
162
192
|
on: <K extends keyof TTSSessionEventMap>(event: K, handler: (payload: TTSSessionEventMap[K]) => void | Promise<void>) => () => void;
|
|
163
193
|
send: (text: string) => Promise<void>;
|
|
194
|
+
cancel?: (reason?: string) => Promise<void>;
|
|
164
195
|
close: (reason?: string) => Promise<void>;
|
|
165
196
|
};
|
|
197
|
+
export declare const ttsAdapterSessionCanCancel: (session: TTSAdapterSession) => session is TTSAdapterSession & {
|
|
198
|
+
cancel: (reason?: string) => Promise<void>;
|
|
199
|
+
};
|
|
200
|
+
export type VoiceTTSProsody = {
|
|
201
|
+
emphasis?: number;
|
|
202
|
+
pitch?: number;
|
|
203
|
+
speed?: number;
|
|
204
|
+
style?: string;
|
|
205
|
+
};
|
|
166
206
|
export type TTSAdapterOpenOptions = {
|
|
167
207
|
sessionId: string;
|
|
168
208
|
lexicon?: VoiceLexiconEntry[];
|
|
209
|
+
prosody?: VoiceTTSProsody;
|
|
169
210
|
signal?: AbortSignal;
|
|
170
211
|
};
|
|
171
212
|
export type TTSAdapter<TOptions extends TTSAdapterOpenOptions = TTSAdapterOpenOptions> = {
|
|
172
|
-
kind:
|
|
213
|
+
kind: "tts";
|
|
173
214
|
open: (options: TOptions) => Promise<TTSAdapterSession> | TTSAdapterSession;
|
|
174
215
|
};
|
|
175
216
|
export type RealtimeSessionEventMap = STTSessionEventMap & {
|
|
@@ -185,20 +226,40 @@ export type RealtimeAdapterOpenOptions = {
|
|
|
185
226
|
format: AudioFormat;
|
|
186
227
|
languageStrategy?: VoiceLanguageStrategy;
|
|
187
228
|
lexicon?: VoiceLexiconEntry[];
|
|
229
|
+
modalities?: ReadonlyArray<"audio" | "text">;
|
|
188
230
|
phraseHints?: VoicePhraseHint[];
|
|
231
|
+
promptCacheKey?: string;
|
|
232
|
+
semanticVAD?: import("./assistantMode").VoiceSemanticVADConfig;
|
|
189
233
|
signal?: AbortSignal;
|
|
190
234
|
};
|
|
191
235
|
export type RealtimeAdapter<TOptions extends RealtimeAdapterOpenOptions = RealtimeAdapterOpenOptions> = {
|
|
192
|
-
kind:
|
|
236
|
+
kind: "realtime";
|
|
193
237
|
open: (options: TOptions) => Promise<RealtimeAdapterSession> | RealtimeAdapterSession;
|
|
194
238
|
};
|
|
195
|
-
export type VoiceSessionStatus =
|
|
239
|
+
export type VoiceSessionStatus = "active" | "reconnecting" | "completed" | "failed";
|
|
240
|
+
export type VoiceReconnectClientStatus = "idle" | "reconnecting" | "resumed" | "exhausted";
|
|
241
|
+
export type VoiceReconnectClientState = {
|
|
242
|
+
attempts: number;
|
|
243
|
+
lastDisconnectAt?: number;
|
|
244
|
+
lastResumedAt?: number;
|
|
245
|
+
maxAttempts: number;
|
|
246
|
+
nextAttemptAt?: number;
|
|
247
|
+
status: VoiceReconnectClientStatus;
|
|
248
|
+
};
|
|
249
|
+
export type VoiceTurnCitation = {
|
|
250
|
+
chunkId: string;
|
|
251
|
+
score: number;
|
|
252
|
+
source?: string;
|
|
253
|
+
title?: string;
|
|
254
|
+
};
|
|
196
255
|
export type VoiceTurnRecord<TResult = unknown> = {
|
|
197
256
|
id: string;
|
|
198
257
|
text: string;
|
|
199
258
|
quality?: VoiceTranscriptQuality;
|
|
200
259
|
transcripts: Transcript[];
|
|
201
260
|
assistantText?: string;
|
|
261
|
+
attachments?: import("./agent").VoiceAgentMessageAttachment[];
|
|
262
|
+
citations?: VoiceTurnCitation[];
|
|
202
263
|
committedAt: number;
|
|
203
264
|
result?: TResult;
|
|
204
265
|
};
|
|
@@ -253,10 +314,10 @@ export type VoiceSessionSummary = {
|
|
|
253
314
|
status: VoiceSessionStatus;
|
|
254
315
|
turnCount: number;
|
|
255
316
|
};
|
|
256
|
-
export type VoiceCallDisposition =
|
|
317
|
+
export type VoiceCallDisposition = "completed" | "transferred" | "escalated" | "voicemail" | "no-answer" | "failed" | "silence-timeout" | "closed";
|
|
257
318
|
export type VoiceCallLifecycleEvent = {
|
|
258
319
|
at: number;
|
|
259
|
-
type:
|
|
320
|
+
type: "start" | "end" | "transfer" | "escalation" | "voicemail" | "no-answer";
|
|
260
321
|
disposition?: VoiceCallDisposition;
|
|
261
322
|
metadata?: Record<string, unknown>;
|
|
262
323
|
reason?: string;
|
|
@@ -269,8 +330,8 @@ export type VoiceCallLifecycleState = {
|
|
|
269
330
|
lastEventAt: number;
|
|
270
331
|
startedAt: number;
|
|
271
332
|
};
|
|
272
|
-
export type VoiceHandoffAction =
|
|
273
|
-
export type VoiceHandoffStatus =
|
|
333
|
+
export type VoiceHandoffAction = "escalate" | "no-answer" | "transfer" | "voicemail";
|
|
334
|
+
export type VoiceHandoffStatus = "delivered" | "failed" | "skipped";
|
|
274
335
|
export type VoiceHandoffResult = {
|
|
275
336
|
deliveredAt?: number;
|
|
276
337
|
deliveredTo?: string;
|
|
@@ -278,7 +339,7 @@ export type VoiceHandoffResult = {
|
|
|
278
339
|
metadata?: Record<string, unknown>;
|
|
279
340
|
status: VoiceHandoffStatus;
|
|
280
341
|
};
|
|
281
|
-
export type VoiceHandoffDeliveryQueueStatus = VoiceHandoffStatus |
|
|
342
|
+
export type VoiceHandoffDeliveryQueueStatus = VoiceHandoffStatus | "pending";
|
|
282
343
|
export type StoredVoiceHandoffDelivery<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = {
|
|
283
344
|
action: VoiceHandoffAction;
|
|
284
345
|
context: TContext;
|
|
@@ -326,9 +387,15 @@ export type VoiceHandoffConfig<TContext = unknown, TSession extends VoiceSession
|
|
|
326
387
|
adapters: VoiceHandoffAdapter<TContext, TSession, TResult>[];
|
|
327
388
|
deliveryQueue?: VoiceHandoffDeliveryStore<StoredVoiceHandoffDelivery<TContext, TSession, TResult>>;
|
|
328
389
|
enqueueOnly?: boolean;
|
|
329
|
-
failMode?:
|
|
390
|
+
failMode?: "record" | "throw";
|
|
391
|
+
};
|
|
392
|
+
export type VoiceSessionStore<TSession extends VoiceSessionRecord = VoiceSessionRecord> = {
|
|
393
|
+
get: (id: string) => Promise<TSession | undefined>;
|
|
394
|
+
getOrCreate: (id: string) => Promise<TSession>;
|
|
395
|
+
set: (id: string, value: TSession) => Promise<void>;
|
|
396
|
+
list: () => Promise<VoiceSessionSummary[]>;
|
|
397
|
+
remove: (id: string) => Promise<void>;
|
|
330
398
|
};
|
|
331
|
-
export type VoiceSessionStore<TSession extends VoiceSessionRecord = VoiceSessionRecord> = SessionStore<TSession, VoiceSessionSummary>;
|
|
332
399
|
export type VoiceLogger = {
|
|
333
400
|
debug?: (message: string, meta?: Record<string, unknown>) => void;
|
|
334
401
|
info?: (message: string, meta?: Record<string, unknown>) => void;
|
|
@@ -336,15 +403,15 @@ export type VoiceLogger = {
|
|
|
336
403
|
error?: (message: string, meta?: Record<string, unknown>) => void;
|
|
337
404
|
};
|
|
338
405
|
export type VoiceReconnectConfig = {
|
|
339
|
-
strategy?:
|
|
406
|
+
strategy?: "resume-last-turn" | "restart" | "fail";
|
|
340
407
|
timeout?: number;
|
|
341
408
|
maxAttempts?: number;
|
|
342
409
|
};
|
|
343
|
-
export type VoiceRuntimePreset =
|
|
344
|
-
export type VoiceSTTLifecycle =
|
|
345
|
-
export type VoiceTurnProfile =
|
|
346
|
-
export type VoiceTurnQualityProfile =
|
|
347
|
-
export type VoiceTurnFallbackTrigger =
|
|
410
|
+
export type VoiceRuntimePreset = "default" | "chat" | "guided-intake" | "dictation" | "noisy-room" | "pstn-balanced" | "pstn-fast" | "reliability";
|
|
411
|
+
export type VoiceSTTLifecycle = "continuous" | "turn-scoped";
|
|
412
|
+
export type VoiceTurnProfile = "fast" | "balanced" | "long-form";
|
|
413
|
+
export type VoiceTurnQualityProfile = "general" | "accent-heavy" | "noisy-room" | "short-command";
|
|
414
|
+
export type VoiceTurnFallbackTrigger = "empty-turn" | "low-confidence" | "empty-or-low-confidence" | "always";
|
|
348
415
|
export type VoiceSTTFallbackConfig = {
|
|
349
416
|
adapter: STTAdapter;
|
|
350
417
|
trigger?: VoiceTurnFallbackTrigger;
|
|
@@ -396,12 +463,34 @@ export type VoiceResolvedAudioConditioningConfig = {
|
|
|
396
463
|
export type VoiceSocket = {
|
|
397
464
|
send: (data: string | Uint8Array | ArrayBuffer) => void | Promise<void>;
|
|
398
465
|
close: (code?: number, reason?: string) => void | Promise<void>;
|
|
466
|
+
/**
|
|
467
|
+
* Discard any audio already buffered downstream (e.g. a telephony carrier's
|
|
468
|
+
* outbound media buffer). Called on barge-in so the caller stops hearing the
|
|
469
|
+
* assistant immediately, even when frames have already been flushed to the
|
|
470
|
+
* transport. Optional: transports without a flush concept omit it.
|
|
471
|
+
*/
|
|
472
|
+
clear?: () => void | Promise<void>;
|
|
473
|
+
};
|
|
474
|
+
export type VoiceMonitorRuntimeSessionBinding = {
|
|
475
|
+
deregister: (reason?: string) => void;
|
|
476
|
+
emitAudio: (chunk: Uint8Array | ArrayBuffer, options?: {
|
|
477
|
+
source?: "assistant" | "caller" | (string & {});
|
|
478
|
+
}) => void;
|
|
479
|
+
};
|
|
480
|
+
export type VoiceMonitorRuntimeRegisterInput = {
|
|
481
|
+
handle: VoiceSessionHandle<unknown, VoiceSessionRecord, unknown>;
|
|
482
|
+
metadata?: Record<string, unknown>;
|
|
483
|
+
sessionId: string;
|
|
484
|
+
};
|
|
485
|
+
export type VoiceMonitorRuntimeBinding = {
|
|
486
|
+
registerSession: (input: VoiceMonitorRuntimeRegisterInput) => VoiceMonitorRuntimeSessionBinding;
|
|
399
487
|
};
|
|
400
488
|
export type VoiceSessionHandle<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = {
|
|
401
489
|
id: string;
|
|
402
490
|
connect: (socket: VoiceSocket) => Promise<void>;
|
|
403
491
|
receiveAudio: (audio: AudioChunk) => Promise<void>;
|
|
404
|
-
|
|
492
|
+
attachUserMedia: (attachment: import("./agent").VoiceAgentMessageAttachment) => Promise<void>;
|
|
493
|
+
commitTurn: (reason?: VoiceEndOfTurnEvent["reason"]) => Promise<void>;
|
|
405
494
|
disconnect: (event?: VoiceCloseEvent) => Promise<void>;
|
|
406
495
|
complete: (result?: TResult) => Promise<void>;
|
|
407
496
|
escalate: (input: {
|
|
@@ -423,18 +512,33 @@ export type VoiceSessionHandle<TContext = unknown, TSession extends VoiceSession
|
|
|
423
512
|
reason?: string;
|
|
424
513
|
result?: TResult;
|
|
425
514
|
target: string;
|
|
515
|
+
transferMode?: "cold" | "warm";
|
|
426
516
|
}) => Promise<void>;
|
|
427
517
|
close: (reason?: string) => Promise<void>;
|
|
428
518
|
snapshot: () => Promise<TSession>;
|
|
519
|
+
/**
|
|
520
|
+
* Mutate the live turn-detection config for this session — useful when a
|
|
521
|
+
* tool call wants to dial silenceMs up ("the caller asked for more time")
|
|
522
|
+
* or down. The change takes effect on the NEXT silence-timer schedule, so
|
|
523
|
+
* an in-flight commit isn't cancelled. Returns the merged config so the
|
|
524
|
+
* caller can confirm.
|
|
525
|
+
*/
|
|
526
|
+
setTurnDetection: (patch: Partial<VoiceTurnDetectionConfig>) => Promise<{
|
|
527
|
+
silenceMs: number;
|
|
528
|
+
speechThreshold: number;
|
|
529
|
+
transcriptStabilityMs: number;
|
|
530
|
+
}>;
|
|
429
531
|
};
|
|
430
532
|
export type VoiceRouteResult<TResult = unknown> = {
|
|
431
533
|
complete?: boolean;
|
|
432
534
|
result?: TResult;
|
|
433
535
|
assistantText?: string;
|
|
536
|
+
citations?: ReadonlyArray<VoiceTurnCitation>;
|
|
434
537
|
transfer?: {
|
|
435
538
|
metadata?: Record<string, unknown>;
|
|
436
539
|
reason?: string;
|
|
437
540
|
target: string;
|
|
541
|
+
transferMode?: "cold" | "warm";
|
|
438
542
|
};
|
|
439
543
|
escalate?: {
|
|
440
544
|
metadata?: Record<string, unknown>;
|
|
@@ -475,6 +579,11 @@ export type VoiceLexiconResolver<TContext = unknown> = (input: {
|
|
|
475
579
|
}) => Promise<VoiceLexiconEntry[] | void> | VoiceLexiconEntry[] | void;
|
|
476
580
|
export type VoiceOnTurnObjectHandler<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = (input: {
|
|
477
581
|
context: TContext;
|
|
582
|
+
liveOps?: {
|
|
583
|
+
control: VoiceLiveOpsControlState;
|
|
584
|
+
injectedInstruction?: string;
|
|
585
|
+
};
|
|
586
|
+
onTextDelta?: (delta: string) => void;
|
|
478
587
|
session: TSession;
|
|
479
588
|
turn: VoiceTurnRecord;
|
|
480
589
|
api: VoiceSessionHandle<TContext, TSession, TResult>;
|
|
@@ -559,7 +668,7 @@ export type VoiceRuntimeOpsConfig<TContext = unknown, TSession extends VoiceSess
|
|
|
559
668
|
disposition: VoiceCallDisposition;
|
|
560
669
|
review: StoredVoiceCallReviewArtifact;
|
|
561
670
|
session: TSession;
|
|
562
|
-
}) => Promise<Omit<VoiceOpsTask,
|
|
671
|
+
}) => Promise<Omit<VoiceOpsTask, "id"> | VoiceOpsTask | StoredVoiceOpsTask | null | void> | Omit<VoiceOpsTask, "id"> | VoiceOpsTask | StoredVoiceOpsTask | null | void;
|
|
563
672
|
resolveTaskPolicy?: (input: {
|
|
564
673
|
api: VoiceSessionHandle<TContext, TSession, TResult>;
|
|
565
674
|
context: TContext;
|
|
@@ -596,7 +705,37 @@ export type VoiceRuntimeOpsConfig<TContext = unknown, TSession extends VoiceSess
|
|
|
596
705
|
tasks?: VoiceOpsTaskStore;
|
|
597
706
|
webhook?: VoiceIntegrationWebhookConfig;
|
|
598
707
|
};
|
|
599
|
-
export type
|
|
708
|
+
export type VoiceLiveOpsRuntimeConfig = {
|
|
709
|
+
getControl: (sessionId: string) => Promise<VoiceLiveOpsControlState | null | undefined> | VoiceLiveOpsControlState | null | undefined;
|
|
710
|
+
};
|
|
711
|
+
export type VoiceProfileSwitchGuardResolverInput<TContext = unknown> = {
|
|
712
|
+
context: TContext;
|
|
713
|
+
scenarioId?: string;
|
|
714
|
+
sessionId: string;
|
|
715
|
+
};
|
|
716
|
+
export type VoicePluginProfileSwitchGuardConfig<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = {
|
|
717
|
+
actor?: VoiceAuditActor;
|
|
718
|
+
allowedProfileIds?: string[] | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<string[] | undefined> | string[] | undefined);
|
|
719
|
+
audit?: VoiceAuditEventStore;
|
|
720
|
+
blockedProfileIds?: string[] | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<string[] | undefined> | string[] | undefined);
|
|
721
|
+
currentProfileId?: string | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<string | undefined> | string | undefined);
|
|
722
|
+
defaultProfileId?: string;
|
|
723
|
+
defaults: VoiceRealCallProfileDefaultsReport | VoiceRealCallProfileHistoryReport | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<VoiceRealCallProfileDefaultsReport | VoiceRealCallProfileHistoryReport> | VoiceRealCallProfileDefaultsReport | VoiceRealCallProfileHistoryReport);
|
|
724
|
+
metadata?: Record<string, unknown> | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<Record<string, unknown> | undefined> | Record<string, unknown> | undefined);
|
|
725
|
+
minConfidence?: number | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<number | undefined> | number | undefined);
|
|
726
|
+
maxAutoSwitchesPerSession?: number | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<number | undefined> | number | undefined);
|
|
727
|
+
mode?: VoiceProfileSwitchGuardMode | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<VoiceProfileSwitchGuardMode | undefined> | VoiceProfileSwitchGuardMode | undefined);
|
|
728
|
+
observed?: VoiceProfileSwitchObservedSignals | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<VoiceProfileSwitchObservedSignals | undefined> | VoiceProfileSwitchObservedSignals | undefined);
|
|
729
|
+
onDecision?: (input: {
|
|
730
|
+
context: TContext;
|
|
731
|
+
decision: VoiceProfileSwitchGuardDecision;
|
|
732
|
+
scenarioId?: string;
|
|
733
|
+
sessionId: string;
|
|
734
|
+
}) => Promise<void> | void;
|
|
735
|
+
sessionMetadataKey?: string | false;
|
|
736
|
+
trace?: false | VoiceTraceEventStore;
|
|
737
|
+
};
|
|
738
|
+
export type VoiceNormalizedRouteConfig<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = Omit<VoiceRouteConfig<TContext, TSession, TResult>, "onTurn"> & {
|
|
600
739
|
onTurn: VoiceOnTurnObjectHandler<TContext, TSession, TResult>;
|
|
601
740
|
};
|
|
602
741
|
export type VoiceScenario = {
|
|
@@ -609,133 +748,403 @@ export type VoiceExpectedSpeakerTurn = {
|
|
|
609
748
|
speaker: string;
|
|
610
749
|
text: string;
|
|
611
750
|
};
|
|
751
|
+
/**
|
|
752
|
+
* Configures one of the plugin's optional route surfaces. Pass that surface's
|
|
753
|
+
* options object to mount it, `false` (or omit) to leave it off. Surfaces whose
|
|
754
|
+
* options are entirely optional may also be enabled with `true` for defaults.
|
|
755
|
+
*/
|
|
756
|
+
export type VoiceSurfaceConfig<O> = false | O | (Record<string, never> extends O ? true : never);
|
|
612
757
|
export type VoicePluginConfig<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = {
|
|
613
758
|
costTelemetry?: VoiceCostTelemetryConfig<TContext, TSession, TResult>;
|
|
614
759
|
path: string;
|
|
760
|
+
greeting?: string | ((input: {
|
|
761
|
+
session: TSession;
|
|
762
|
+
}) => string | Promise<string>);
|
|
615
763
|
languageStrategy?: VoiceLanguageStrategy;
|
|
616
764
|
lexicon?: VoiceLexiconEntry[] | VoiceLexiconResolver<TContext>;
|
|
617
765
|
phraseHints?: VoicePhraseHint[] | VoicePhraseHintResolver<TContext>;
|
|
618
766
|
preset?: VoiceRuntimePreset;
|
|
619
|
-
stt
|
|
767
|
+
stt?: STTAdapter;
|
|
620
768
|
sttFallback?: VoiceSTTFallbackConfig;
|
|
621
769
|
sttLifecycle?: VoiceSTTLifecycle;
|
|
770
|
+
realtime?: RealtimeAdapter;
|
|
771
|
+
realtimeInputFormat?: AudioFormat;
|
|
622
772
|
tts?: TTSAdapter;
|
|
623
773
|
session: VoiceSessionStore<NoInfer<TSession>>;
|
|
624
774
|
reconnect?: VoiceReconnectConfig;
|
|
625
775
|
turnDetection?: VoiceTurnDetectionConfig;
|
|
776
|
+
semanticTurnDetector?: import("./semanticTurn").VoiceSemanticTurnDetector;
|
|
777
|
+
bargeInMinPartialWords?: number;
|
|
778
|
+
fillerPhrases?: ReadonlyArray<string>;
|
|
779
|
+
fillerDelayMs?: number;
|
|
780
|
+
fillerFor?: (input: {
|
|
781
|
+
sessionId: string;
|
|
782
|
+
turnId: string;
|
|
783
|
+
userText: string;
|
|
784
|
+
}) => Promise<string | null>;
|
|
785
|
+
fillerForTimeoutMs?: number;
|
|
786
|
+
backchannel?: import("./backchannel").VoiceBackchannelConfig;
|
|
787
|
+
defaultSilentTurnAck?: string;
|
|
788
|
+
routeOnTurnTimeoutMs?: number;
|
|
626
789
|
audioConditioning?: VoiceAudioConditioningConfig;
|
|
790
|
+
noiseSuppressor?: VoiceNoiseSuppressor;
|
|
791
|
+
noiseSuppressorFormat?: AudioFormat;
|
|
627
792
|
logger?: VoiceLogger;
|
|
628
793
|
htmx?: boolean | VoiceHTMXConfig<TSession, NoInfer<TResult>>;
|
|
629
794
|
handoff?: VoiceHandoffConfig<TContext, TSession, TResult>;
|
|
630
795
|
ops?: VoiceRuntimeOpsConfig<TContext, TSession, TResult>;
|
|
796
|
+
liveOps?: VoiceLiveOpsRuntimeConfig;
|
|
797
|
+
monitor?: VoiceMonitorRuntimeBinding;
|
|
798
|
+
profileSwitchGuard?: VoicePluginProfileSwitchGuardConfig<TContext, TSession, TResult>;
|
|
631
799
|
trace?: VoiceTraceEventStore;
|
|
800
|
+
assistantHealth?: VoiceSurfaceConfig<import("./assistantHealth").VoiceAssistantHealthRoutesOptions>;
|
|
801
|
+
auditDelivery?: VoiceSurfaceConfig<import("./auditDeliveryRoutes").VoiceAuditDeliveryRoutesOptions>;
|
|
802
|
+
auditTrail?: VoiceSurfaceConfig<import("./auditRoutes").VoiceAuditTrailRoutesOptions>;
|
|
803
|
+
bargeIn?: VoiceSurfaceConfig<import("./bargeInRoutes").VoiceBargeInRoutesOptions>;
|
|
804
|
+
browserCallProfile?: VoiceSurfaceConfig<import("./browserCallProfiles").VoiceBrowserCallProfileRoutesOptions>;
|
|
805
|
+
browserMedia?: VoiceSurfaceConfig<import("./browserMediaRoutes").VoiceBrowserMediaRoutesOptions>;
|
|
806
|
+
callDebugger?: VoiceSurfaceConfig<import("./callDebugger").VoiceCallDebuggerRoutesOptions>;
|
|
807
|
+
campaign?: VoiceSurfaceConfig<import("./campaign").VoiceCampaignRoutesOptions>;
|
|
808
|
+
competitiveCoverage?: VoiceSurfaceConfig<import("./competitiveCoverage").VoiceCompetitiveCoverageRoutesOptions>;
|
|
809
|
+
dataControl?: VoiceSurfaceConfig<import("./dataControl").VoiceDataControlRoutesOptions>;
|
|
810
|
+
deliveryRuntime?: VoiceSurfaceConfig<import("./deliveryRuntime").VoiceDeliveryRuntimeRoutesOptions>;
|
|
811
|
+
deliverySink?: VoiceSurfaceConfig<import("./deliverySinkRoutes").VoiceDeliverySinkRoutesOptions>;
|
|
812
|
+
demoReady?: VoiceSurfaceConfig<import("./demoReadyRoutes").VoiceDemoReadyRoutesOptions>;
|
|
813
|
+
diagnostics?: VoiceSurfaceConfig<import("./diagnosticsRoutes").VoiceDiagnosticsRoutesOptions>;
|
|
814
|
+
eval?: VoiceSurfaceConfig<import("./evalRoutes").VoiceEvalRoutesOptions>;
|
|
815
|
+
guardrail?: VoiceSurfaceConfig<import("./guardrails").VoiceGuardrailRoutesOptions>;
|
|
816
|
+
handoffHealth?: VoiceSurfaceConfig<import("./handoffHealth").VoiceHandoffHealthRoutesOptions>;
|
|
817
|
+
htmxDashboard?: VoiceSurfaceConfig<import("./htmxDashboardRoutes").VoiceHTMXDashboardRoutesOptions>;
|
|
818
|
+
incidentBundle?: VoiceSurfaceConfig<import("./incidentBundle").VoiceIncidentBundleRoutesOptions>;
|
|
819
|
+
incidentTimeline?: VoiceSurfaceConfig<import("./incidentTimeline").VoiceIncidentTimelineRoutesOptions>;
|
|
820
|
+
liveLatency?: VoiceSurfaceConfig<import("./liveLatency").VoiceLiveLatencyRoutesOptions>;
|
|
821
|
+
liveMonitor?: VoiceSurfaceConfig<import("./monitor").VoiceLiveMonitorRoutesOptions>;
|
|
822
|
+
liveOpsConsole?: VoiceSurfaceConfig<import("./liveOps").VoiceLiveOpsRoutesOptions>;
|
|
823
|
+
mediaPipeline?: VoiceSurfaceConfig<import("./mediaPipelineRoutes").VoiceMediaPipelineRoutesOptions>;
|
|
824
|
+
monitorReport?: VoiceSurfaceConfig<import("./voiceMonitoring").VoiceMonitorRoutesOptions>;
|
|
825
|
+
monitorRunner?: VoiceSurfaceConfig<import("./voiceMonitoring").VoiceMonitorRunnerRoutesOptions>;
|
|
826
|
+
observabilityExport?: VoiceSurfaceConfig<import("./observabilityExport").VoiceObservabilityExportRoutesOptions>;
|
|
827
|
+
observabilityExportReplay?: VoiceSurfaceConfig<import("./observabilityExport").VoiceObservabilityExportReplayRoutesOptions>;
|
|
828
|
+
operationalStatus?: VoiceSurfaceConfig<import("./operationalStatus").VoiceOperationalStatusRoutesOptions>;
|
|
829
|
+
operationsRecord?: VoiceSurfaceConfig<import("./operationsRecord").VoiceOperationsRecordRoutesOptions>;
|
|
830
|
+
opsActionAudit?: VoiceSurfaceConfig<import("./opsActionAuditRoutes").VoiceOpsActionAuditRoutesOptions>;
|
|
831
|
+
opsConsole?: VoiceSurfaceConfig<import("./opsConsoleRoutes").VoiceOpsConsoleRoutesOptions>;
|
|
832
|
+
opsRecovery?: VoiceSurfaceConfig<import("./opsRecovery").VoiceOpsRecoveryRoutesOptions>;
|
|
833
|
+
opsStatus?: VoiceSurfaceConfig<import("./opsStatus").VoiceOpsStatusRoutesOptions>;
|
|
834
|
+
opsWebhookReceiver?: VoiceSurfaceConfig<import("./opsWebhook").VoiceOpsWebhookReceiverRoutesOptions>;
|
|
835
|
+
outcomeContract?: VoiceSurfaceConfig<import("./outcomeContract").VoiceOutcomeContractRoutesOptions>;
|
|
836
|
+
phoneAgentProductionSmoke?: VoiceSurfaceConfig<import("./phoneAgentProductionSmoke").VoicePhoneAgentProductionSmokeRoutesOptions>;
|
|
837
|
+
platformCoverage?: VoiceSurfaceConfig<import("./platformCoverage").VoicePlatformCoverageRoutesOptions>;
|
|
838
|
+
postCallAnalysis?: VoiceSurfaceConfig<import("./postCallAnalysis").VoicePostCallAnalysisRoutesOptions>;
|
|
839
|
+
productionReadiness?: VoiceSurfaceConfig<import("./productionReadiness").VoiceProductionReadinessRoutesOptions>;
|
|
840
|
+
profileSwitchLiveDecision?: VoiceSurfaceConfig<import("./profileSwitchRecommendation").VoiceProfileSwitchLiveDecisionRoutesOptions>;
|
|
841
|
+
profileSwitchPolicyProof?: VoiceSurfaceConfig<import("./profileSwitchRecommendation").VoiceProfileSwitchPolicyProofRoutesOptions>;
|
|
842
|
+
profileSwitchReadiness?: VoiceSurfaceConfig<import("./profileSwitchRecommendation").VoiceProfileSwitchReadinessRoutesOptions>;
|
|
843
|
+
proofPack?: VoiceSurfaceConfig<import("./proofPack").VoiceProofPackRoutesOptions>;
|
|
844
|
+
proofTrend?: VoiceSurfaceConfig<import("./proofTrends").VoiceProofTrendRoutesOptions>;
|
|
845
|
+
proofTrendRecommendation?: VoiceSurfaceConfig<import("./proofTrends").VoiceProofTrendRecommendationRoutesOptions>;
|
|
846
|
+
providerCapability?: VoiceSurfaceConfig<import("./providerCapabilities").VoiceProviderCapabilityRoutesOptions>;
|
|
847
|
+
providerContractMatrix?: VoiceSurfaceConfig<import("./providerStackRecommendations").VoiceProviderContractMatrixRoutesOptions>;
|
|
848
|
+
providerDecisionTrace?: VoiceSurfaceConfig<import("./providerDecisionTraces").VoiceProviderDecisionTraceRoutesOptions>;
|
|
849
|
+
providerHealth?: VoiceSurfaceConfig<import("./providerHealth").VoiceProviderHealthRoutesOptions>;
|
|
850
|
+
providerOrchestration?: VoiceSurfaceConfig<import("./providerOrchestration").VoiceProviderOrchestrationRoutesOptions>;
|
|
851
|
+
providerSlo?: VoiceSurfaceConfig<import("./providerSlo").VoiceProviderSloRoutesOptions>;
|
|
852
|
+
quality?: VoiceSurfaceConfig<import("./qualityRoutes").VoiceQualityRoutesOptions>;
|
|
853
|
+
realCallEvidenceRuntime?: VoiceSurfaceConfig<import("./proofTrends").VoiceRealCallEvidenceRuntimeRoutesOptions>;
|
|
854
|
+
realCallProfileHistory?: VoiceSurfaceConfig<import("./proofTrends").VoiceRealCallProfileHistoryRoutesOptions>;
|
|
855
|
+
realCallProfileRecoveryAction?: VoiceSurfaceConfig<import("./proofTrends").VoiceRealCallProfileRecoveryActionRoutesOptions>;
|
|
856
|
+
realtimeChannel?: VoiceSurfaceConfig<import("./realtimeChannel").VoiceRealtimeChannelRoutesOptions>;
|
|
857
|
+
realtimeProviderContract?: VoiceSurfaceConfig<import("./realtimeProviderContracts").VoiceRealtimeProviderContractRoutesOptions>;
|
|
858
|
+
reconnectContract?: VoiceSurfaceConfig<import("./reconnectContract").VoiceReconnectContractRoutesOptions>;
|
|
859
|
+
reconnectProof?: VoiceSurfaceConfig<import("./reconnectContract").VoiceReconnectProofRoutesOptions>;
|
|
860
|
+
resilience?: VoiceSurfaceConfig<import("./resilienceRoutes").VoiceResilienceRoutesOptions>;
|
|
861
|
+
sessionList?: VoiceSurfaceConfig<import("./sessionReplay").VoiceSessionListRoutesOptions>;
|
|
862
|
+
sessionObservability?: VoiceSurfaceConfig<import("./sessionObservability").VoiceSessionObservabilityRoutesOptions>;
|
|
863
|
+
sessionReplay?: VoiceSurfaceConfig<import("./sessionReplay").VoiceSessionReplayRoutesOptions>;
|
|
864
|
+
sessionSnapshot?: VoiceSurfaceConfig<import("./sessionSnapshot").VoiceSessionSnapshotRoutesOptions>;
|
|
865
|
+
simulationSuite?: VoiceSurfaceConfig<import("./simulationSuite").VoiceSimulationSuiteRoutesOptions>;
|
|
866
|
+
sloCalibration?: VoiceSurfaceConfig<import("./sloCalibration").VoiceSloCalibrationRoutesOptions>;
|
|
867
|
+
sloReadinessThreshold?: VoiceSurfaceConfig<import("./sloCalibration").VoiceSloReadinessThresholdRoutesOptions>;
|
|
868
|
+
telephonyCarrierMatrix?: VoiceSurfaceConfig<import("../telephony/matrix").VoiceTelephonyCarrierMatrixRoutesOptions>;
|
|
869
|
+
telephonyMedia?: VoiceSurfaceConfig<import("./telephonyMediaRoutes").VoiceTelephonyMediaRoutesOptions>;
|
|
870
|
+
telephonyWebhook?: VoiceSurfaceConfig<import("./telephonyOutcome").VoiceTelephonyWebhookRoutesOptions>;
|
|
871
|
+
telephonyWebhookSecurity?: VoiceSurfaceConfig<import("../telephony/security").VoiceTelephonyWebhookSecurityRoutesOptions>;
|
|
872
|
+
toolContract?: VoiceSurfaceConfig<import("./toolContract").VoiceToolContractRoutesOptions>;
|
|
873
|
+
traceDelivery?: VoiceSurfaceConfig<import("./traceDeliveryRoutes").VoiceTraceDeliveryRoutesOptions>;
|
|
874
|
+
traceTimeline?: VoiceSurfaceConfig<import("./traceTimeline").VoiceTraceTimelineRoutesOptions>;
|
|
875
|
+
turnLatency?: VoiceSurfaceConfig<import("./turnLatency").VoiceTurnLatencyRoutesOptions>;
|
|
876
|
+
turnQuality?: VoiceSurfaceConfig<import("./turnQuality").VoiceTurnQualityRoutesOptions>;
|
|
632
877
|
} & VoiceRouteConfig<TContext, TSession, TResult>;
|
|
878
|
+
export type VoiceSessionRecordingConfig = {
|
|
879
|
+
channels?: ReadonlyArray<"assistant" | "user">;
|
|
880
|
+
maxBytesPerChannel?: number;
|
|
881
|
+
store: import("./recordingStore").VoiceRecordingStore;
|
|
882
|
+
userInputFormat?: AudioFormat;
|
|
883
|
+
};
|
|
633
884
|
export type CreateVoiceSessionOptions<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = {
|
|
634
885
|
costTelemetry?: VoiceCostTelemetryConfig<TContext, TSession, TResult>;
|
|
635
886
|
id: string;
|
|
636
887
|
context: TContext;
|
|
637
888
|
socket: VoiceSocket;
|
|
638
|
-
|
|
889
|
+
greeting?: string | ((input: {
|
|
890
|
+
session: TSession;
|
|
891
|
+
}) => string | Promise<string>);
|
|
892
|
+
stt?: STTAdapter;
|
|
893
|
+
realtime?: RealtimeAdapter;
|
|
894
|
+
realtimeInputFormat?: AudioFormat;
|
|
639
895
|
tts?: TTSAdapter;
|
|
640
896
|
languageStrategy?: VoiceLanguageStrategy;
|
|
641
897
|
lexicon?: VoiceLexiconEntry[];
|
|
642
898
|
sttFallback?: VoiceResolvedSTTFallbackConfig;
|
|
643
899
|
store: VoiceSessionStore<TSession>;
|
|
644
900
|
trace?: VoiceTraceEventStore;
|
|
901
|
+
recording?: VoiceSessionRecordingConfig;
|
|
902
|
+
callSilenceTimeoutMs?: number;
|
|
903
|
+
amd?: import("./amdDetector").VoiceAMDDetector<TContext, TSession, TResult>;
|
|
904
|
+
costAccountant?: import("./costAccounting").VoiceCostAccountant;
|
|
905
|
+
costTelephony?: {
|
|
906
|
+
provider?: string;
|
|
907
|
+
};
|
|
908
|
+
redact?: import("./redaction").VoiceTranscriptRedactor;
|
|
909
|
+
semanticTurnDetector?: import("./semanticTurn").VoiceSemanticTurnDetector;
|
|
910
|
+
/**
|
|
911
|
+
* Pre-rendered filler phrases the runtime plays in the gap between
|
|
912
|
+
* user-turn-commit and real assistant audio (typically 800-1500ms). The
|
|
913
|
+
* caller hears something within ~150-300ms of stopping speaking, so the
|
|
914
|
+
* LLM/TTS latency feels like the bot thinking instead of dead air. Boardy's
|
|
915
|
+
* killer UX feature.
|
|
916
|
+
*
|
|
917
|
+
* Behavior:
|
|
918
|
+
* - After a turn commits, a timer fires at `fillerDelayMs` (default
|
|
919
|
+
* 250ms). At that point, if the real assistant audio for this turn
|
|
920
|
+
* hasn't started flowing yet, a random phrase is rendered via the
|
|
921
|
+
* configured `tts` adapter and pushed to the socket.
|
|
922
|
+
* - When the real assistant audio's first chunk arrives, any in-flight
|
|
923
|
+
* filler is cancelled (`cancelActiveTTS` clears the carrier buffer).
|
|
924
|
+
* - Cooldown protects against double-fillers per turn.
|
|
925
|
+
*
|
|
926
|
+
* Set `fillerPhrases: []` (or omit) to disable. Reasonable defaults if
|
|
927
|
+
* you enable: `["Hmm.", "Got it.", "Right.", "Mm-hm.", "Let me think.", "Okay."]`.
|
|
928
|
+
*/
|
|
929
|
+
/**
|
|
930
|
+
* Minimum word count in an STT partial transcript before speech-gated
|
|
931
|
+
* barge-in cancels the in-flight assistant TTS. Default 1 (any non-empty
|
|
932
|
+
* partial triggers barge-in — backwards-compatible).
|
|
933
|
+
*
|
|
934
|
+
* Set to 2 (or higher) on phone routes where the caller's brief
|
|
935
|
+
* acknowledgements ("yeah", "uh-huh", "you", "am i") would otherwise
|
|
936
|
+
* cut the bot off mid-question. Each extra word added typically delays
|
|
937
|
+
* barge-in by ~100-200ms (one extra STT partial cycle) — cheap compared
|
|
938
|
+
* to losing the bot's response.
|
|
939
|
+
*
|
|
940
|
+
* Word splitting is whitespace-based. Punctuation is left attached.
|
|
941
|
+
*/
|
|
942
|
+
bargeInMinPartialWords?: number;
|
|
943
|
+
fillerPhrases?: ReadonlyArray<string>;
|
|
944
|
+
/** Milliseconds after turn-commit before the filler fires. Default 250ms — short enough to feel instant, long enough to skip if the LLM is very fast. */
|
|
945
|
+
fillerDelayMs?: number;
|
|
946
|
+
/**
|
|
947
|
+
* Latency Theater — content-aware filler (Boardy parity move). When
|
|
948
|
+
* defined, the runtime calls `fillerFor({ userText, ... })` in parallel
|
|
949
|
+
* with the main LLM call to generate a brief acknowledgement of what the
|
|
950
|
+
* caller just said ("Freelance CFOs — interesting.", "Yeah, I hear you.").
|
|
951
|
+
* The runtime races the promise against `fillerForTimeoutMs` (default
|
|
952
|
+
* 600ms). If `fillerFor` returns a non-empty string in time, it's spoken
|
|
953
|
+
* INSTEAD of a random `fillerPhrases` entry. On timeout or null return,
|
|
954
|
+
* the runtime falls back to a static random phrase, so a slow / failed
|
|
955
|
+
* acknowledgement call never costs you the filler entirely.
|
|
956
|
+
*
|
|
957
|
+
* Return `null` (or an empty string) to explicitly skip filler for this
|
|
958
|
+
* turn — useful when `userText` is so short ("yes", "no", "okay") that
|
|
959
|
+
* acknowledging it back sounds robotic. Return throws are caught and
|
|
960
|
+
* treated as null.
|
|
961
|
+
*
|
|
962
|
+
* Cost-aware: callers typically wire this to a cheap nano/haiku model
|
|
963
|
+
* (gpt-4.1-nano, claude-haiku-4-5) that returns 2–5 words.
|
|
964
|
+
*/
|
|
965
|
+
fillerFor?: (input: {
|
|
966
|
+
sessionId: string;
|
|
967
|
+
turnId: string;
|
|
968
|
+
userText: string;
|
|
969
|
+
}) => Promise<string | null>;
|
|
970
|
+
/** Ceiling for the `fillerFor` call before we fall back to a static phrase. Default 600ms. */
|
|
971
|
+
fillerForTimeoutMs?: number;
|
|
972
|
+
/**
|
|
973
|
+
* Backchannel cues — short "mm-hm"/"right" acknowledgements played while the
|
|
974
|
+
* CALLER is mid-turn (a long answer) so they feel heard, the way a human
|
|
975
|
+
* listener interjects. Plays on the same non-turn TTS path as fillers, so it
|
|
976
|
+
* never registers as the assistant's turn or trips barge-in. Off unless
|
|
977
|
+
* `enabled` is set. Fires only while the assistant is silent.
|
|
978
|
+
*/
|
|
979
|
+
backchannel?: import("./backchannel").VoiceBackchannelConfig;
|
|
980
|
+
/**
|
|
981
|
+
* Default spoken ack if the model returns ONLY tool calls (no text) and the
|
|
982
|
+
* turn isn't ending. Without this, the caller hears total silence after
|
|
983
|
+
* their turn and assumes the line dropped. Default is "Sorry, one moment."
|
|
984
|
+
* Set to "" to opt out entirely.
|
|
985
|
+
*/
|
|
986
|
+
defaultSilentTurnAck?: string;
|
|
987
|
+
/**
|
|
988
|
+
* Hard timeout on a single `route.onTurn` call. If onTurn hasn't resolved
|
|
989
|
+
* in this many ms, it's rejected with a hard-timeout error which falls
|
|
990
|
+
* through to defaultSilentTurnAck. Default 45s — generous for normal
|
|
991
|
+
* conversational LLM calls (1-3s typical), but catches hangs where the
|
|
992
|
+
* model adapter's own timeout doesn't fire. Set to 0 to disable.
|
|
993
|
+
*/
|
|
994
|
+
routeOnTurnTimeoutMs?: number;
|
|
995
|
+
assistantMode?: import("./assistantMode").VoiceAssistantMode;
|
|
996
|
+
modalities?: ReadonlyArray<"audio" | "text">;
|
|
997
|
+
prosody?: VoiceTTSProsody;
|
|
645
998
|
reconnect: Required<VoiceReconnectConfig>;
|
|
646
999
|
phraseHints?: VoicePhraseHint[];
|
|
1000
|
+
sessionMetadata?: Record<string, unknown>;
|
|
647
1001
|
scenarioId?: string;
|
|
648
1002
|
sttLifecycle: VoiceSTTLifecycle;
|
|
649
1003
|
turnDetection: VoiceResolvedTurnDetectionConfig;
|
|
650
1004
|
audioConditioning?: VoiceResolvedAudioConditioningConfig;
|
|
1005
|
+
noiseSuppressor?: VoiceNoiseSuppressor;
|
|
1006
|
+
noiseSuppressorFormat?: AudioFormat;
|
|
651
1007
|
handoff?: VoiceHandoffConfig<TContext, TSession, TResult>;
|
|
1008
|
+
liveOps?: VoiceLiveOpsRuntimeConfig;
|
|
652
1009
|
route: VoiceNormalizedRouteConfig<TContext, TSession, TResult>;
|
|
653
1010
|
logger?: VoiceLogger;
|
|
654
1011
|
};
|
|
655
1012
|
export type CreateVoiceSession = <TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown>(options: CreateVoiceSessionOptions<TContext, TSession, TResult>) => VoiceSessionHandle<TContext, TSession, TResult>;
|
|
656
1013
|
export type VoiceClientStartMessage = {
|
|
657
|
-
type:
|
|
1014
|
+
type: "start";
|
|
658
1015
|
sessionId?: string;
|
|
659
1016
|
scenarioId?: string;
|
|
660
1017
|
};
|
|
661
1018
|
export type VoiceClientEndTurnMessage = {
|
|
662
|
-
type:
|
|
1019
|
+
type: "end_turn";
|
|
663
1020
|
};
|
|
664
1021
|
export type VoiceClientCloseMessage = {
|
|
665
|
-
type:
|
|
1022
|
+
type: "close";
|
|
666
1023
|
reason?: string;
|
|
667
1024
|
};
|
|
668
1025
|
export type VoiceClientCallControlMessage = {
|
|
669
|
-
type:
|
|
670
|
-
action:
|
|
1026
|
+
type: "call_control";
|
|
1027
|
+
action: "complete" | "escalate" | "no-answer" | "transfer" | "voicemail";
|
|
671
1028
|
metadata?: Record<string, unknown>;
|
|
672
1029
|
reason?: string;
|
|
673
1030
|
target?: string;
|
|
674
1031
|
};
|
|
675
1032
|
export type VoiceClientPingMessage = {
|
|
676
|
-
type:
|
|
1033
|
+
type: "ping";
|
|
677
1034
|
};
|
|
678
1035
|
export type VoiceClientMessage = VoiceClientStartMessage | VoiceClientEndTurnMessage | VoiceClientCloseMessage | VoiceClientCallControlMessage | VoiceClientPingMessage;
|
|
679
1036
|
export type VoiceServerSessionMessage = {
|
|
680
|
-
type:
|
|
1037
|
+
type: "session";
|
|
681
1038
|
sessionId: string;
|
|
682
1039
|
status: VoiceSessionStatus;
|
|
683
1040
|
scenarioId?: string;
|
|
1041
|
+
sessionMetadata?: Record<string, unknown>;
|
|
1042
|
+
};
|
|
1043
|
+
export type VoiceServerReplayMessage<TResult = unknown> = {
|
|
1044
|
+
type: "replay";
|
|
1045
|
+
assistantTexts: string[];
|
|
1046
|
+
call?: VoiceCallLifecycleState;
|
|
1047
|
+
partial: string;
|
|
1048
|
+
scenarioId?: string;
|
|
1049
|
+
sessionId: string;
|
|
1050
|
+
sessionMetadata?: Record<string, unknown>;
|
|
1051
|
+
status: VoiceSessionStatus;
|
|
1052
|
+
turns: VoiceTurnRecord<TResult>[];
|
|
684
1053
|
};
|
|
685
1054
|
export type VoiceServerPartialMessage = {
|
|
686
|
-
type:
|
|
1055
|
+
type: "partial";
|
|
687
1056
|
transcript: Transcript;
|
|
688
1057
|
};
|
|
689
1058
|
export type VoiceServerFinalMessage = {
|
|
690
|
-
type:
|
|
1059
|
+
type: "final";
|
|
691
1060
|
transcript: Transcript;
|
|
692
1061
|
};
|
|
693
1062
|
export type VoiceServerTurnMessage<TResult = unknown> = {
|
|
694
|
-
type:
|
|
1063
|
+
type: "turn";
|
|
695
1064
|
turn: VoiceTurnRecord<TResult>;
|
|
696
1065
|
};
|
|
697
1066
|
export type VoiceServerAssistantMessage = {
|
|
698
|
-
type:
|
|
1067
|
+
type: "assistant";
|
|
699
1068
|
text: string;
|
|
700
1069
|
turnId?: string;
|
|
701
1070
|
};
|
|
1071
|
+
export type VoiceServerAssistantDeltaMessage = {
|
|
1072
|
+
type: "assistant_delta";
|
|
1073
|
+
delta: string;
|
|
1074
|
+
turnId?: string;
|
|
1075
|
+
};
|
|
702
1076
|
export type VoiceServerAudioMessage = {
|
|
703
|
-
type:
|
|
1077
|
+
type: "audio";
|
|
704
1078
|
chunkBase64: string;
|
|
705
1079
|
format: AudioFormat;
|
|
706
1080
|
receivedAt: number;
|
|
707
1081
|
turnId?: string;
|
|
708
1082
|
};
|
|
709
1083
|
export type VoiceServerCompleteMessage = {
|
|
710
|
-
type:
|
|
1084
|
+
type: "complete";
|
|
711
1085
|
sessionId: string;
|
|
712
1086
|
};
|
|
713
1087
|
export type VoiceServerCallLifecycleMessage = {
|
|
714
|
-
type:
|
|
1088
|
+
type: "call_lifecycle";
|
|
715
1089
|
event: VoiceCallLifecycleEvent;
|
|
716
1090
|
sessionId: string;
|
|
717
1091
|
};
|
|
718
1092
|
export type VoiceServerErrorMessage = {
|
|
719
|
-
type:
|
|
1093
|
+
type: "error";
|
|
720
1094
|
message: string;
|
|
721
1095
|
recoverable?: boolean;
|
|
722
1096
|
};
|
|
723
1097
|
export type VoiceServerPongMessage = {
|
|
724
|
-
type:
|
|
1098
|
+
type: "pong";
|
|
1099
|
+
};
|
|
1100
|
+
export type VoiceServerConnectionMessage = {
|
|
1101
|
+
type: "connection";
|
|
1102
|
+
reconnect: VoiceReconnectClientState;
|
|
725
1103
|
};
|
|
726
|
-
export type VoiceServerMessage<TResult = unknown> = VoiceServerSessionMessage | VoiceServerPartialMessage | VoiceServerFinalMessage | VoiceServerTurnMessage<TResult> | VoiceServerAssistantMessage | VoiceServerAudioMessage | VoiceServerCallLifecycleMessage | VoiceServerCompleteMessage | VoiceServerErrorMessage | VoiceServerPongMessage;
|
|
1104
|
+
export type VoiceServerMessage<TResult = unknown> = VoiceServerSessionMessage | VoiceServerReplayMessage<TResult> | VoiceServerPartialMessage | VoiceServerFinalMessage | VoiceServerTurnMessage<TResult> | VoiceServerAssistantMessage | VoiceServerAssistantDeltaMessage | VoiceServerAudioMessage | VoiceServerCallLifecycleMessage | VoiceServerCompleteMessage | VoiceServerErrorMessage | VoiceServerPongMessage | VoiceServerConnectionMessage;
|
|
727
1105
|
export type VoiceConnectionOptions = {
|
|
1106
|
+
browserMedia?: false | VoiceBrowserMediaReporterOptions;
|
|
728
1107
|
protocols?: string[];
|
|
729
1108
|
scenarioId?: string;
|
|
730
1109
|
reconnect?: boolean;
|
|
1110
|
+
reconnectReportPath?: string;
|
|
731
1111
|
maxReconnectAttempts?: number;
|
|
732
1112
|
pingInterval?: number;
|
|
733
1113
|
sessionId?: string;
|
|
734
1114
|
};
|
|
1115
|
+
export type VoiceBrowserMediaReportPayload = {
|
|
1116
|
+
at: number;
|
|
1117
|
+
continuity?: MediaWebRTCStreamContinuityReport;
|
|
1118
|
+
report: MediaWebRTCStatsReport;
|
|
1119
|
+
scenarioId?: string | null;
|
|
1120
|
+
sessionId?: string | null;
|
|
1121
|
+
};
|
|
1122
|
+
export type VoiceBrowserMediaReporterOptions = Omit<MediaWebRTCStatsReportInput, "peerConnection"> & {
|
|
1123
|
+
fetch?: typeof fetch;
|
|
1124
|
+
getPeerConnection?: (() => MediaWebRTCStatsCollector | null | undefined) | (() => Promise<MediaWebRTCStatsCollector | null | undefined>);
|
|
1125
|
+
getScenarioId?: () => string | null | undefined;
|
|
1126
|
+
getSessionId?: () => string | null | undefined;
|
|
1127
|
+
intervalMs?: number;
|
|
1128
|
+
continuity?: false | Omit<MediaWebRTCStreamContinuityInput, "previousStats" | "stats">;
|
|
1129
|
+
onError?: (error: unknown) => void;
|
|
1130
|
+
onReport?: (payload: VoiceBrowserMediaReportPayload) => void;
|
|
1131
|
+
path?: string;
|
|
1132
|
+
peerConnection?: MediaWebRTCStatsCollector;
|
|
1133
|
+
};
|
|
735
1134
|
export type VoiceCaptureOptions = {
|
|
736
1135
|
channelCount?: 1 | 2;
|
|
1136
|
+
onAudio?: (audio: Uint8Array | ArrayBuffer, sendAudio: (audio: Uint8Array | ArrayBuffer) => void) => void;
|
|
737
1137
|
onLevel?: (level: number) => void;
|
|
738
1138
|
sampleRateHz?: number;
|
|
1139
|
+
/**
|
|
1140
|
+
* A pre-acquired microphone MediaStream. When set, capture uses it instead of
|
|
1141
|
+
* calling getUserMedia — so a host that requested permission UP FRONT (before
|
|
1142
|
+
* connecting, so the prompt can't interrupt the assistant's greeting) can hand
|
|
1143
|
+
* the SAME stream in rather than release-and-reacquire (a second getUserMedia
|
|
1144
|
+
* + a track stop can trigger an audio-device change that suspends playback and
|
|
1145
|
+
* cuts the greeting). Capture owns it after handoff and stops it on close.
|
|
1146
|
+
*/
|
|
1147
|
+
stream?: MediaStream;
|
|
739
1148
|
};
|
|
740
1149
|
export type VoiceControllerOptions = {
|
|
741
1150
|
preset?: VoiceRuntimePreset;
|
|
@@ -747,20 +1156,69 @@ export type VoiceBargeInOptions = {
|
|
|
747
1156
|
enabled?: boolean;
|
|
748
1157
|
interruptOnPartial?: boolean;
|
|
749
1158
|
interruptThreshold?: number;
|
|
1159
|
+
monitor?: VoiceBargeInMonitor;
|
|
1160
|
+
};
|
|
1161
|
+
export type VoiceBargeInTriggerReason = "input-level" | "manual-audio" | "manual-interrupt" | "partial-transcript";
|
|
1162
|
+
export type VoiceBargeInMonitorEvent = {
|
|
1163
|
+
at: number;
|
|
1164
|
+
id: string;
|
|
1165
|
+
latencyMs?: number;
|
|
1166
|
+
playbackStopLatencyMs?: number;
|
|
1167
|
+
reason: VoiceBargeInTriggerReason;
|
|
1168
|
+
sessionId?: string | null;
|
|
1169
|
+
status: "requested" | "stopped" | "skipped";
|
|
1170
|
+
thresholdMs?: number;
|
|
1171
|
+
};
|
|
1172
|
+
export type VoiceBargeInMonitorSnapshot = {
|
|
1173
|
+
averageLatencyMs?: number;
|
|
1174
|
+
events: VoiceBargeInMonitorEvent[];
|
|
1175
|
+
failed: number;
|
|
1176
|
+
lastEvent?: VoiceBargeInMonitorEvent;
|
|
1177
|
+
passed: number;
|
|
1178
|
+
status: "empty" | "fail" | "pass" | "warn";
|
|
1179
|
+
thresholdMs: number;
|
|
1180
|
+
total: number;
|
|
1181
|
+
};
|
|
1182
|
+
export type VoiceBargeInMonitor = {
|
|
1183
|
+
getSnapshot: () => VoiceBargeInMonitorSnapshot;
|
|
1184
|
+
recordRequested: (input: {
|
|
1185
|
+
reason: VoiceBargeInTriggerReason;
|
|
1186
|
+
sessionId?: string | null;
|
|
1187
|
+
}) => VoiceBargeInMonitorEvent;
|
|
1188
|
+
recordSkipped: (input: {
|
|
1189
|
+
reason: VoiceBargeInTriggerReason;
|
|
1190
|
+
sessionId?: string | null;
|
|
1191
|
+
}) => VoiceBargeInMonitorEvent;
|
|
1192
|
+
recordStopped: (input: {
|
|
1193
|
+
latencyMs?: number;
|
|
1194
|
+
playbackStopLatencyMs?: number;
|
|
1195
|
+
reason: VoiceBargeInTriggerReason;
|
|
1196
|
+
sessionId?: string | null;
|
|
1197
|
+
}) => VoiceBargeInMonitorEvent;
|
|
1198
|
+
subscribe: (subscriber: () => void) => () => void;
|
|
750
1199
|
};
|
|
751
1200
|
export type VoiceAudioPlayerOptions = {
|
|
752
1201
|
autoStart?: boolean;
|
|
753
1202
|
createAudioContext?: () => AudioContext;
|
|
754
1203
|
lookaheadMs?: number;
|
|
1204
|
+
/**
|
|
1205
|
+
* Playback speed multiplier for the assistant's speech. 1 = normal. Clamped
|
|
1206
|
+
* to [0.5, 2]. Pitch shifts with the rate (Web Audio playbackRate), so keep
|
|
1207
|
+
* UI ranges modest (≈0.85–1.25) to stay natural. Can be changed live via
|
|
1208
|
+
* setPlaybackRate — already-scheduled chunks keep their rate; new chunks
|
|
1209
|
+
* adopt the new one.
|
|
1210
|
+
*/
|
|
1211
|
+
playbackRate?: number;
|
|
1212
|
+
volume?: number;
|
|
755
1213
|
};
|
|
756
1214
|
export type VoiceDuplexControllerOptions = VoiceControllerOptions & {
|
|
757
1215
|
audioPlayer?: VoiceAudioPlayerOptions;
|
|
758
1216
|
bargeIn?: VoiceBargeInOptions;
|
|
759
1217
|
};
|
|
760
|
-
export type VoiceSTTRoutingGoal =
|
|
761
|
-
export type VoiceSTTRoutingCorrectionMode =
|
|
1218
|
+
export type VoiceSTTRoutingGoal = "best" | "low-cost";
|
|
1219
|
+
export type VoiceSTTRoutingCorrectionMode = "generic" | "none" | "risky-turn";
|
|
762
1220
|
export type VoiceSTTRoutingStrategy = {
|
|
763
|
-
benchmarkSessionTarget:
|
|
1221
|
+
benchmarkSessionTarget: "deepgram-corrected" | "deepgram-flux";
|
|
764
1222
|
correctionMode: VoiceSTTRoutingCorrectionMode;
|
|
765
1223
|
goal: VoiceSTTRoutingGoal;
|
|
766
1224
|
notes: string[];
|
|
@@ -774,7 +1232,7 @@ export type VoiceHTMXRenderInput<TResult = unknown, TSession extends VoiceSessio
|
|
|
774
1232
|
result?: TResult;
|
|
775
1233
|
session?: TSession;
|
|
776
1234
|
sessionId?: string;
|
|
777
|
-
status: VoiceSessionStatus |
|
|
1235
|
+
status: VoiceSessionStatus | "idle";
|
|
778
1236
|
turnCount: number;
|
|
779
1237
|
turns: VoiceTurnRecord<TResult>[];
|
|
780
1238
|
};
|
|
@@ -802,12 +1260,15 @@ export type VoiceHTMXOptions<TSession extends VoiceSessionRecord = VoiceSessionR
|
|
|
802
1260
|
export type VoiceHTMXConfig<TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = VoiceHTMXRenderer<TSession, TResult> | VoiceHTMXOptions<TSession, TResult>;
|
|
803
1261
|
export type VoiceStreamState<TResult = unknown> = {
|
|
804
1262
|
call: VoiceCallLifecycleState | null;
|
|
1263
|
+
sessionMetadata: Record<string, unknown> | null;
|
|
805
1264
|
sessionId: string | null;
|
|
806
1265
|
scenarioId: string | null;
|
|
807
|
-
status: VoiceSessionStatus |
|
|
1266
|
+
status: VoiceSessionStatus | "idle";
|
|
1267
|
+
reconnect: VoiceReconnectClientState;
|
|
808
1268
|
partial: string;
|
|
809
1269
|
turns: VoiceTurnRecord<TResult>[];
|
|
810
1270
|
assistantTexts: string[];
|
|
1271
|
+
assistantStreamingText: string;
|
|
811
1272
|
assistantAudio: Array<{
|
|
812
1273
|
chunk: Uint8Array;
|
|
813
1274
|
format: AudioFormat;
|
|
@@ -819,7 +1280,7 @@ export type VoiceStreamState<TResult = unknown> = {
|
|
|
819
1280
|
};
|
|
820
1281
|
export type VoiceStream<TResult = unknown> = {
|
|
821
1282
|
call: VoiceCallLifecycleState | null;
|
|
822
|
-
callControl: (message: Omit<VoiceClientCallControlMessage,
|
|
1283
|
+
callControl: (message: Omit<VoiceClientCallControlMessage, "type">) => void;
|
|
823
1284
|
close: () => void;
|
|
824
1285
|
start: (input?: {
|
|
825
1286
|
scenarioId?: string;
|
|
@@ -831,13 +1292,17 @@ export type VoiceStream<TResult = unknown> = {
|
|
|
831
1292
|
getSnapshot: () => VoiceStreamState<TResult>;
|
|
832
1293
|
isConnected: boolean;
|
|
833
1294
|
partial: string;
|
|
1295
|
+
reconnect: VoiceReconnectClientState;
|
|
834
1296
|
sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
|
|
1297
|
+
simulateDisconnect: () => void;
|
|
835
1298
|
sessionId: string | null;
|
|
1299
|
+
sessionMetadata: Record<string, unknown> | null;
|
|
836
1300
|
scenarioId: string | null;
|
|
837
|
-
status: VoiceSessionStatus |
|
|
1301
|
+
status: VoiceSessionStatus | "idle";
|
|
838
1302
|
subscribe: (subscriber: () => void) => () => void;
|
|
839
1303
|
turns: VoiceTurnRecord<TResult>[];
|
|
840
1304
|
assistantTexts: string[];
|
|
1305
|
+
assistantStreamingText: string;
|
|
841
1306
|
assistantAudio: Array<{
|
|
842
1307
|
chunk: Uint8Array;
|
|
843
1308
|
format: AudioFormat;
|
|
@@ -860,7 +1325,7 @@ export type VoiceAudioPlayerState = {
|
|
|
860
1325
|
queuedChunkCount: number;
|
|
861
1326
|
};
|
|
862
1327
|
export type VoiceAudioPlayerSource = {
|
|
863
|
-
assistantAudio: VoiceStreamState[
|
|
1328
|
+
assistantAudio: VoiceStreamState["assistantAudio"];
|
|
864
1329
|
subscribe: (subscriber: () => void) => () => void;
|
|
865
1330
|
};
|
|
866
1331
|
export type VoiceAudioPlayer = {
|
|
@@ -874,10 +1339,14 @@ export type VoiceAudioPlayer = {
|
|
|
874
1339
|
lastInterruptLatencyMs?: number;
|
|
875
1340
|
lastPlaybackStopLatencyMs?: number;
|
|
876
1341
|
pause: () => Promise<void>;
|
|
1342
|
+
playbackRate: number;
|
|
877
1343
|
processedChunkCount: number;
|
|
878
1344
|
queuedChunkCount: number;
|
|
1345
|
+
setPlaybackRate: (rate: number) => void;
|
|
1346
|
+
setVolume: (volume: number) => void;
|
|
879
1347
|
start: () => Promise<void>;
|
|
880
1348
|
subscribe: (subscriber: () => void) => () => void;
|
|
1349
|
+
volume: number;
|
|
881
1350
|
};
|
|
882
1351
|
export type VoiceBargeInBinding = {
|
|
883
1352
|
close: () => void;
|
|
@@ -887,7 +1356,7 @@ export type VoiceBargeInBinding = {
|
|
|
887
1356
|
export type VoiceController<TResult = unknown> = {
|
|
888
1357
|
bindHTMX: (options: VoiceHTMXBindingOptions) => () => void;
|
|
889
1358
|
call: VoiceCallLifecycleState | null;
|
|
890
|
-
callControl: (message: Omit<VoiceClientCallControlMessage,
|
|
1359
|
+
callControl: (message: Omit<VoiceClientCallControlMessage, "type">) => void;
|
|
891
1360
|
close: () => void;
|
|
892
1361
|
endTurn: () => void;
|
|
893
1362
|
start: (input?: {
|
|
@@ -900,17 +1369,21 @@ export type VoiceController<TResult = unknown> = {
|
|
|
900
1369
|
isConnected: boolean;
|
|
901
1370
|
isRecording: boolean;
|
|
902
1371
|
partial: string;
|
|
1372
|
+
reconnect: VoiceReconnectClientState;
|
|
903
1373
|
recordingError: string | null;
|
|
904
1374
|
sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
|
|
1375
|
+
simulateDisconnect: () => void;
|
|
905
1376
|
sessionId: string | null;
|
|
1377
|
+
sessionMetadata: Record<string, unknown> | null;
|
|
906
1378
|
scenarioId: string | null;
|
|
907
1379
|
startRecording: () => Promise<void>;
|
|
908
|
-
status: VoiceSessionStatus |
|
|
1380
|
+
status: VoiceSessionStatus | "idle";
|
|
909
1381
|
stopRecording: () => void;
|
|
910
1382
|
subscribe: (subscriber: () => void) => () => void;
|
|
911
1383
|
toggleRecording: () => Promise<void>;
|
|
912
1384
|
turns: VoiceTurnRecord<TResult>[];
|
|
913
1385
|
assistantTexts: string[];
|
|
1386
|
+
assistantStreamingText: string;
|
|
914
1387
|
assistantAudio: Array<{
|
|
915
1388
|
chunk: Uint8Array;
|
|
916
1389
|
format: AudioFormat;
|
|
@@ -929,40 +1402,59 @@ export type VoiceHTMXBindingOptions = {
|
|
|
929
1402
|
sessionQueryParam?: string;
|
|
930
1403
|
};
|
|
931
1404
|
export type VoiceStoreAction<TResult = unknown> = {
|
|
932
|
-
type:
|
|
1405
|
+
type: "session";
|
|
933
1406
|
sessionId: string;
|
|
1407
|
+
sessionMetadata?: Record<string, unknown>;
|
|
934
1408
|
scenarioId?: string;
|
|
935
1409
|
status: VoiceSessionStatus;
|
|
936
1410
|
} | {
|
|
937
|
-
type:
|
|
1411
|
+
type: "replay";
|
|
1412
|
+
assistantTexts: string[];
|
|
1413
|
+
call?: VoiceCallLifecycleState;
|
|
1414
|
+
partial: string;
|
|
1415
|
+
scenarioId?: string;
|
|
1416
|
+
sessionId: string;
|
|
1417
|
+
sessionMetadata?: Record<string, unknown>;
|
|
1418
|
+
status: VoiceSessionStatus;
|
|
1419
|
+
turns: VoiceTurnRecord<TResult>[];
|
|
1420
|
+
} | {
|
|
1421
|
+
type: "call_lifecycle";
|
|
938
1422
|
event: VoiceCallLifecycleEvent;
|
|
939
1423
|
sessionId: string;
|
|
940
1424
|
} | {
|
|
941
|
-
type:
|
|
1425
|
+
type: "partial";
|
|
942
1426
|
transcript: Transcript;
|
|
943
1427
|
} | {
|
|
944
|
-
type:
|
|
1428
|
+
type: "final";
|
|
945
1429
|
transcript: Transcript;
|
|
946
1430
|
} | {
|
|
947
|
-
type:
|
|
1431
|
+
type: "turn";
|
|
948
1432
|
turn: VoiceTurnRecord<TResult>;
|
|
949
1433
|
} | {
|
|
950
|
-
type:
|
|
1434
|
+
type: "assistant";
|
|
951
1435
|
text: string;
|
|
1436
|
+
turnId?: string;
|
|
952
1437
|
} | {
|
|
953
|
-
type:
|
|
1438
|
+
type: "assistant_delta";
|
|
1439
|
+
delta: string;
|
|
1440
|
+
turnId?: string;
|
|
1441
|
+
} | {
|
|
1442
|
+
type: "audio";
|
|
954
1443
|
chunk: Uint8Array;
|
|
955
1444
|
format: AudioFormat;
|
|
956
1445
|
receivedAt: number;
|
|
957
1446
|
turnId?: string;
|
|
958
1447
|
} | {
|
|
959
|
-
type:
|
|
1448
|
+
type: "complete";
|
|
960
1449
|
sessionId: string;
|
|
961
1450
|
} | {
|
|
962
|
-
type:
|
|
1451
|
+
type: "error";
|
|
963
1452
|
message: string;
|
|
964
1453
|
} | {
|
|
965
|
-
type:
|
|
1454
|
+
type: "connected";
|
|
1455
|
+
} | {
|
|
1456
|
+
type: "connection";
|
|
1457
|
+
reconnect: VoiceReconnectClientState;
|
|
966
1458
|
} | {
|
|
967
|
-
type:
|
|
1459
|
+
type: "disconnected";
|
|
968
1460
|
};
|