@absolutejs/voice 0.0.22-beta.497 → 0.0.22-beta.499

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.
@@ -59,7 +59,7 @@ export type VoiceAssistantExperimentOptions<TContext = unknown, TSession extends
59
59
  }) => VoiceAssistantVariant<TContext, TSession, TResult> | string | void;
60
60
  variants: Array<VoiceAssistantVariant<TContext, TSession, TResult>>;
61
61
  };
62
- type VoiceAssistantAgentSource<TContext, TSession extends VoiceSessionRecord, TResult> = {
62
+ export type VoiceAssistantAgentSource<TContext, TSession extends VoiceSessionRecord, TResult> = {
63
63
  agent: VoiceAgent<TContext, TSession, TResult>;
64
64
  agents?: never;
65
65
  defaultAgentId?: never;
@@ -140,4 +140,3 @@ export declare const summarizeVoiceAssistantRuns: (input: StoredVoiceTraceEvent[
140
140
  events?: StoredVoiceTraceEvent[];
141
141
  store?: VoiceTraceEventStore;
142
142
  }) => Promise<VoiceAssistantRunsSummary>;
143
- export {};
@@ -0,0 +1,54 @@
1
+ export type VoiceCallQuotaTier = {
2
+ burstAllowance?: number;
3
+ customerId: string;
4
+ monthlyMinutes?: number;
5
+ reservedConcurrent: number;
6
+ };
7
+ export type VoiceCallReservation = {
8
+ callId: string;
9
+ customerId: string;
10
+ release: () => Promise<void> | void;
11
+ reservedAt: number;
12
+ };
13
+ export type VoiceCallQuotaRejection = {
14
+ customerId: string;
15
+ reason: "concurrency-exceeded" | "customer-not-found" | "monthly-minutes-exceeded";
16
+ retryAfterMs?: number;
17
+ };
18
+ export type VoiceCallQuotaResult = {
19
+ ok: false;
20
+ rejection: VoiceCallQuotaRejection;
21
+ } | {
22
+ ok: true;
23
+ reservation: VoiceCallReservation;
24
+ };
25
+ export type VoiceCallQuota = {
26
+ describe: (customerId: string) => Promise<undefined | {
27
+ activeCalls: number;
28
+ burstAllowance: number;
29
+ monthlyMinutesUsed: number;
30
+ reservedConcurrent: number;
31
+ tier: VoiceCallQuotaTier;
32
+ }> | (undefined | {
33
+ activeCalls: number;
34
+ burstAllowance: number;
35
+ monthlyMinutesUsed: number;
36
+ reservedConcurrent: number;
37
+ tier: VoiceCallQuotaTier;
38
+ });
39
+ recordMinutes: (input: {
40
+ callId?: string;
41
+ customerId: string;
42
+ minutes: number;
43
+ }) => Promise<void> | void;
44
+ reserve: (input: {
45
+ callId: string;
46
+ customerId: string;
47
+ }) => Promise<VoiceCallQuotaResult> | VoiceCallQuotaResult;
48
+ };
49
+ export type CreateInMemoryVoiceCallQuotaOptions = {
50
+ /** When provided, treat any customer not in the map as denied with 'customer-not-found'. */
51
+ strict?: boolean;
52
+ tiers: VoiceCallQuotaTier[];
53
+ };
54
+ export declare const createInMemoryVoiceCallQuota: (options: CreateInMemoryVoiceCallQuotaOptions) => VoiceCallQuota;
@@ -0,0 +1,27 @@
1
+ import type { StoredVoiceTraceEvent } from "../trace";
2
+ export type VoiceCostDashboardBucket = {
3
+ bucketKey: string;
4
+ callCount: number;
5
+ llmUsd: number;
6
+ sttUsd: number;
7
+ telephonyMinutes: number;
8
+ telephonyUsd: number;
9
+ totalUsd: number;
10
+ ttsUsd: number;
11
+ };
12
+ export type VoiceCostDashboardReport = {
13
+ buckets: VoiceCostDashboardBucket[];
14
+ generatedAt: number;
15
+ grandTotal: VoiceCostDashboardBucket;
16
+ windowEndMs: number;
17
+ windowStartMs: number;
18
+ };
19
+ export type VoiceCostDashboardOptions = {
20
+ bucketBy?: "day" | "hour" | "month";
21
+ events: ReadonlyArray<StoredVoiceTraceEvent>;
22
+ /** Inclusive bucket start filter, epoch ms. */
23
+ fromMs?: number;
24
+ /** Inclusive bucket end filter, epoch ms. */
25
+ toMs?: number;
26
+ };
27
+ export declare const buildVoiceCostDashboardReport: (options: VoiceCostDashboardOptions) => VoiceCostDashboardReport;
@@ -0,0 +1,42 @@
1
+ import type { VoiceAgentUIState } from "../agentState";
2
+ export type LiveCallEventKind = "agent_audio" | "agent_text" | "lifecycle" | "transcript" | "tool";
3
+ export type LiveCallTimelineEvent = {
4
+ at: number;
5
+ detail?: string;
6
+ kind: LiveCallEventKind;
7
+ title: string;
8
+ };
9
+ export type LiveCallViewState = {
10
+ agentState: VoiceAgentUIState;
11
+ callDurationMs: number;
12
+ events: LiveCallTimelineEvent[];
13
+ isConnected: boolean;
14
+ isLiveListening: boolean;
15
+ lastAssistantAt?: number;
16
+ lastTranscriptAt?: number;
17
+ partialTranscript: string;
18
+ sessionId: string;
19
+ };
20
+ export type CreateLiveCallViewerOptions = {
21
+ bufferLimit?: number;
22
+ sessionId: string;
23
+ startedAt?: number;
24
+ };
25
+ export type LiveCallViewer = {
26
+ applyControl: (control: {
27
+ reason?: string;
28
+ type: string;
29
+ }) => void;
30
+ applyEvent: (event: LiveCallTimelineEvent) => void;
31
+ applyMonitorEvent: (event: {
32
+ payload: Record<string, unknown>;
33
+ type: string;
34
+ }) => void;
35
+ getState: () => LiveCallViewState;
36
+ noteAgentAudio: (at?: number) => void;
37
+ notePartial: (text: string, at?: number) => void;
38
+ noteTranscript: (text: string, at?: number) => void;
39
+ reset: (sessionId: string, startedAt?: number) => void;
40
+ subscribe: (subscriber: () => void) => () => void;
41
+ };
42
+ export declare const createLiveCallViewer: (options: CreateLiveCallViewerOptions) => LiveCallViewer;
@@ -0,0 +1,26 @@
1
+ import type { VoiceCallReviewArtifact } from "../testing/review";
2
+ export type ReplayTimelineEvent = {
3
+ at: number;
4
+ category: "agent" | "lifecycle" | "tool" | "user";
5
+ detail?: string;
6
+ durationMs?: number;
7
+ label: string;
8
+ };
9
+ export type ReplayTimelineReport = {
10
+ duration: number;
11
+ events: ReplayTimelineEvent[];
12
+ metadata: {
13
+ artifactId: string;
14
+ title: string;
15
+ };
16
+ startedAt: number;
17
+ summary: {
18
+ agentTurns: number;
19
+ toolCalls: number;
20
+ userTurns: number;
21
+ };
22
+ };
23
+ export type ReplayTimelineInput = {
24
+ artifact: VoiceCallReviewArtifact;
25
+ };
26
+ export declare const buildReplayTimelineReport: (input: ReplayTimelineInput) => ReplayTimelineReport;
@@ -0,0 +1,68 @@
1
+ import { type VoiceAssistant, type VoiceAssistantAgentSource, type VoiceAssistantGuardrails, type VoiceAssistantMemoryLifecycle } from "./assistant";
2
+ import type { AudioFormat, CreateVoiceSessionOptions, RealtimeAdapter, STTAdapter, TTSAdapter, VoiceLanguageStrategy, VoiceLexiconEntry, VoicePhraseHint, VoiceReconnectConfig, VoiceResolvedSTTFallbackConfig, VoiceResolvedAudioConditioningConfig, VoiceRouteConfig, VoiceSessionRecord, VoiceSessionRecordingConfig, VoiceSessionStore, VoiceSocket, VoiceSTTLifecycle, VoiceTTSProsody, VoiceTurnDetectionConfig } from "./types";
3
+ import type { VoiceAssistantMemoryOptions } from "./assistantMemory";
4
+ import type { VoiceAgentTool } from "./agent";
5
+ import type { VoiceAMDDetector } from "./amdDetector";
6
+ import type { VoiceCostAccountant } from "./costAccounting";
7
+ import type { VoiceTraceEventStore } from "./trace";
8
+ import type { VoiceTranscriptRedactor } from "./redaction";
9
+ import type { VoiceSemanticTurnDetector } from "./semanticTurn";
10
+ import type { VoiceAssistantMode } from "./assistantMode";
11
+ import type { VoiceRuntimeOpsConfig } from "./types";
12
+ export type VoiceAssistantVoiceConfig = {
13
+ prosody?: VoiceTTSProsody;
14
+ realtime?: RealtimeAdapter;
15
+ realtimeInputFormat?: AudioFormat;
16
+ stt?: STTAdapter;
17
+ sttFallback?: VoiceResolvedSTTFallbackConfig;
18
+ tts?: TTSAdapter;
19
+ };
20
+ export type VoiceAssistantObservabilityConfig = {
21
+ costAccountant?: VoiceCostAccountant;
22
+ costTelephony?: {
23
+ provider?: string;
24
+ };
25
+ recording?: VoiceSessionRecordingConfig;
26
+ trace?: VoiceTraceEventStore;
27
+ };
28
+ export type VoiceAssistantDefinition<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = {
29
+ agent: VoiceAssistantAgentSource<TContext, TSession, TResult>;
30
+ amd?: VoiceAMDDetector<TContext, TSession, TResult>;
31
+ assistantMode?: VoiceAssistantMode;
32
+ audioConditioning?: VoiceResolvedAudioConditioningConfig;
33
+ callSilenceTimeoutMs?: number;
34
+ guardrails?: VoiceAssistantGuardrails<TContext, TSession, TResult>;
35
+ id: string;
36
+ languageStrategy?: VoiceLanguageStrategy;
37
+ lexicon?: VoiceLexiconEntry[];
38
+ memory?: VoiceAssistantMemoryOptions<TContext, TSession>;
39
+ memoryLifecycle?: VoiceAssistantMemoryLifecycle<TContext, TSession, TResult>;
40
+ metadata?: Record<string, unknown>;
41
+ modalities?: ReadonlyArray<"audio" | "text">;
42
+ ops?: VoiceRuntimeOpsConfig<TContext, TSession, TResult>;
43
+ observability?: VoiceAssistantObservabilityConfig;
44
+ phraseHints?: VoicePhraseHint[];
45
+ redact?: VoiceTranscriptRedactor;
46
+ route?: Partial<VoiceRouteConfig<TContext, TSession, TResult>>;
47
+ semanticTurnDetector?: VoiceSemanticTurnDetector;
48
+ tools?: ReadonlyArray<VoiceAgentTool<TContext, TSession, Record<string, unknown>, unknown, TResult>>;
49
+ turnDetection?: VoiceTurnDetectionConfig;
50
+ voice: VoiceAssistantVoiceConfig;
51
+ };
52
+ export type VoiceAssistantSessionInput<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord> = {
53
+ context: TContext;
54
+ id: string;
55
+ reconnect?: Partial<VoiceReconnectConfig>;
56
+ scenarioId?: string;
57
+ sessionMetadata?: Record<string, unknown>;
58
+ socket: VoiceSocket;
59
+ sttLifecycle?: VoiceSTTLifecycle;
60
+ store: VoiceSessionStore<TSession>;
61
+ };
62
+ export type DefinedVoiceAssistant<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = {
63
+ assistant: VoiceAssistant<TContext, TSession, TResult>;
64
+ definition: VoiceAssistantDefinition<TContext, TSession, TResult>;
65
+ id: string;
66
+ toSessionOptions: (input: VoiceAssistantSessionInput<TContext, TSession>) => CreateVoiceSessionOptions<TContext, TSession, TResult>;
67
+ };
68
+ export declare const defineVoiceAssistant: <TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown>(definition: VoiceAssistantDefinition<TContext, TSession, TResult>) => DefinedVoiceAssistant<TContext, TSession, TResult>;
package/dist/index.d.ts CHANGED
@@ -75,6 +75,8 @@ export { createVoiceAIJudgeCompletion, createVoiceLLMJudge, } from "./llmJudge";
75
75
  export type { CreateVoiceAIJudgeCompletionOptions, CreateVoiceLLMJudgeOptions, VoiceLLMJudge, VoiceLLMJudgeCompletion, VoiceLLMJudgeCriterionVerdict, VoiceLLMJudgeInput, VoiceLLMJudgeRubric, VoiceLLMJudgeRubricCriterion, VoiceLLMJudgeVerdict, } from "./llmJudge";
76
76
  export { DEFAULT_VOICE_REDACTION_PATTERNS, createVoiceTranscriptRedactor, redactVoiceTranscript, } from "./redaction";
77
77
  export type { CreateVoiceTranscriptRedactorOptions, VoiceRedactionPattern, VoiceTranscriptRedactor, } from "./redaction";
78
+ export { deriveVoiceRecordingRedactionRanges } from "./recordingRedaction";
79
+ export type { DeriveVoiceRecordingRedactionRangesInput, VoiceRecordingRedactionRange, } from "./recordingRedaction";
78
80
  export { DEFAULT_VOICE_PRICE_BOOK, createVoiceCostAccountant, } from "./costAccounting";
79
81
  export type { CreateVoiceCostAccountantOptions, VoiceCostAccountant, VoiceCostBreakdown, VoiceCostLLMRecord, VoiceCostSTTRecord, VoiceCostTTSRecord, VoiceCostTelephonyRecord, VoicePriceBook, VoiceProviderRates, } from "./costAccounting";
80
82
  export { describeVoiceAssistantMode, resolveVoiceAssistantMode, } from "./assistantMode";
@@ -102,6 +104,20 @@ export type { MonologueAMDDetectorOptions, VoiceAMDDetector, VoiceAMDDetectorInp
102
104
  export { createVoiceRAGTool, extractVoiceRAGCitations } from "./ragTool";
103
105
  export type { VoiceRAGCitationSummary, VoiceRAGCollectionLike, VoiceRAGQueryResult, VoiceRAGSearchInput, VoiceRAGToolArgs, VoiceRAGToolOptions, VoiceRAGToolResult, } from "./ragTool";
104
106
  export { createVoiceApiRequestTool, createVoiceDTMFTool, createVoiceEndCallTool, createVoiceTransferCallTool, createVoiceVoicemailDetectionTool, } from "./agentTools";
107
+ export { defineVoiceAssistant } from "./defineVoiceAssistant";
108
+ export type { DefinedVoiceAssistant, VoiceAssistantDefinition, VoiceAssistantObservabilityConfig, VoiceAssistantSessionInput, VoiceAssistantVoiceConfig, } from "./defineVoiceAssistant";
109
+ export { createInMemoryVoiceCallQuota } from "./callQuota";
110
+ export type { CreateInMemoryVoiceCallQuotaOptions, VoiceCallQuota, VoiceCallQuotaRejection, VoiceCallQuotaResult, VoiceCallQuotaTier, VoiceCallReservation, } from "./callQuota";
111
+ export { createVoiceBearerAuthVerifier, createVoiceHMACAuthVerifier, createVoiceRouteAuth, } from "./routeAuth";
112
+ export type { VoiceRouteAuthDecision, VoiceRouteAuthInput, VoiceRouteAuthOptions, VoiceRouteAuthVerifier, } from "./routeAuth";
113
+ export { buildVoiceCostDashboardReport } from "./client/costDashboard";
114
+ export type { VoiceCostDashboardBucket, VoiceCostDashboardOptions, VoiceCostDashboardReport, } from "./client/costDashboard";
115
+ export { createLiveCallViewer } from "./client/liveCallViewer";
116
+ export type { CreateLiveCallViewerOptions, LiveCallEventKind, LiveCallTimelineEvent, LiveCallViewState, LiveCallViewer, } from "./client/liveCallViewer";
117
+ export { buildReplayTimelineReport } from "./client/replayTimeline";
118
+ export type { ReplayTimelineEvent, ReplayTimelineInput, ReplayTimelineReport, } from "./client/replayTimeline";
119
+ export { createVoiceRetentionScheduler, purgeVoiceRetentionStore, } from "./retention";
120
+ export type { CreateVoiceRetentionSchedulerOptions, VoicePurgeReport, VoiceRetentionPolicyOptions, VoiceRetentionScheduler, VoiceRetentionStore, } from "./retention";
105
121
  export { fromVapiAssistantConfig } from "./vapiAdapter";
106
122
  export type { VapiAssistantConfig, VapiAssistantConfigModel, VapiAssistantConfigTool, VapiAssistantConfigTranscriber, VapiAssistantConfigTransferDestination, VapiAssistantConfigVoice, VapiAssistantMessage, VoiceFromVapiAssistantOptions, VoiceFromVapiAssistantResult, VoiceFromVapiCustomToolFactory, VoiceFromVapiCustomToolInput, VoiceFromVapiDTMFFactory, VoiceFromVapiKnowledgeBase, VoiceFromVapiModelFactory, VoiceFromVapiModelFactoryInput, VoiceFromVapiRouteHints, VoiceFromVapiUnsupportedReason, } from "./vapiAdapter";
107
123
  export type { VoiceApiRequestToolArgs, VoiceApiRequestToolFetch, VoiceApiRequestToolHttpMethod, VoiceApiRequestToolOptions, VoiceApiRequestToolResult, VoiceDTMFToolArgs, VoiceDTMFToolOptions, VoiceDTMFToolResult, VoiceEndCallToolArgs, VoiceEndCallToolOptions, VoiceEndCallToolResult, VoiceTransferCallToolArgs, VoiceTransferCallToolDestination, VoiceTransferCallToolOptions, VoiceTransferCallToolResult, VoiceVoicemailDetectionToolArgs, VoiceVoicemailDetectionToolOptions, VoiceVoicemailDetectionToolResult, } from "./agentTools";
@@ -116,8 +132,8 @@ export { assertVoiceOutcomeContractEvidence, createVoiceOutcomeContractHTMLHandl
116
132
  export { applyVoiceTelephonyOutcome, assertVoiceTelephonyWebhookNormalizationEvidence, createMemoryVoiceTelephonyWebhookIdempotencyStore, createVoiceTelephonyOutcomePolicy, createVoiceTelephonyWebhookHandler, createVoiceTelephonyWebhookRoutes, evaluateVoiceTelephonyWebhookNormalizationEvidence, parseVoiceTelephonyWebhookEvent, resolveVoiceTelephonyOutcome, signVoiceTwilioWebhook, verifyVoiceTwilioWebhookSignature, voiceTelephonyOutcomeToRouteResult, } from "./telephonyOutcome";
117
133
  export { assertVoicePhoneCallControlEvidence, assertVoicePhoneAssistantEvidence, createVoicePhoneAgent, evaluateVoicePhoneCallControlEvidence, evaluateVoicePhoneAssistantEvidence, } from "./phoneAgent";
118
134
  export { createStoredVoiceCallReviewArtifact, createStoredVoiceExternalObjectMap, createStoredVoiceIntegrationEvent, createStoredVoiceOpsTask, createVoiceFileIncidentBundleStore, createVoiceFileExternalObjectMapStore, createVoiceFileAssistantMemoryStore, createVoiceFileAuditEventStore, createVoiceFileAuditSinkDeliveryStore, createVoiceFileCampaignStore, createVoiceFileIntegrationEventStore, createVoiceFileRecordingStore, createVoiceFileReviewStore, createVoiceFileRuntimeStorage, createVoiceFileSessionStore, createVoiceFileTaskStore, createVoiceFileTraceSinkDeliveryStore, createVoiceFileTraceEventStore, } from "./fileStore";
119
- export { computePcmDurationMs, createVoiceMemoryRecordingStore, encodePcmAsWav, } from "./recordingStore";
120
- export type { StoredVoiceRecordingArtifact, VoiceRecordingArtifact, VoiceRecordingChannel, VoiceRecordingStore, } from "./recordingStore";
135
+ export { computePcmDurationMs, createVoiceMemoryRecordingStore, createVoiceWavRecordingEncoder, encodePcmAsWav, encodeStereoWav, interleaveStereoPcm, } from "./recordingStore";
136
+ export type { EncodeStereoWavInput, InterleavePcmInput, StoredVoiceRecordingArtifact, VoiceRecordingArtifact, VoiceRecordingChannel, VoiceRecordingEncoder, VoiceRecordingEncoderInput, VoiceRecordingEncoderResult, VoiceRecordingStore, } from "./recordingStore";
121
137
  export { createVoiceAssistantMemoryHandle, createVoiceAssistantMemoryRecord, createVoiceMemoryAssistantMemoryStore, resolveVoiceAssistantMemoryNamespace, } from "./assistantMemory";
122
138
  export { createAnthropicVoiceAssistantModel, createGeminiVoiceAssistantModel, createJSONVoiceAssistantModel, createOpenAIVoiceAssistantModel, createVoiceProviderOrchestrationProfile, resolveVoiceProviderRoutingPolicyPreset, createVoiceProviderRouter, } from "./modelAdapters";
123
139
  export { createOpenAIVoiceTTS } from "./openaiTTS";