@voice-kit/core 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/compliance.d.cts +1 -1
- package/dist/compliance.d.ts +1 -1
- package/dist/errors.d.cts +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/index-CkTG6DOa.d.cts +319 -0
- package/dist/index-CkTG6DOa.d.ts +319 -0
- package/dist/index.cjs +280 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -319
- package/dist/index.d.ts +3 -319
- package/dist/index.js +259 -0
- package/dist/index.js.map +1 -1
- package/dist/memory.d.cts +1 -1
- package/dist/memory.d.ts +1 -1
- package/dist/observability.d.cts +1 -1
- package/dist/observability.d.ts +1 -1
- package/dist/stt.d.cts +1 -1
- package/dist/stt.d.ts +1 -1
- package/dist/tts.d.cts +1 -1
- package/dist/tts.d.ts +1 -1
- package/package.json +4 -1
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,284 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
// src/errors/base.ts
|
|
4
|
+
var VoiceKitError = class extends Error {
|
|
5
|
+
code;
|
|
6
|
+
callId;
|
|
7
|
+
provider;
|
|
8
|
+
retryable;
|
|
9
|
+
severity;
|
|
10
|
+
cause;
|
|
11
|
+
constructor(params) {
|
|
12
|
+
super(params.message);
|
|
13
|
+
this.name = this.constructor.name;
|
|
14
|
+
this.code = params.code;
|
|
15
|
+
this.callId = params.callId;
|
|
16
|
+
this.provider = params.provider;
|
|
17
|
+
this.retryable = params.retryable ?? false;
|
|
18
|
+
this.severity = params.severity ?? "medium";
|
|
19
|
+
this.cause = params.cause;
|
|
20
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
21
|
+
}
|
|
22
|
+
toJSON() {
|
|
23
|
+
return {
|
|
24
|
+
name: this.name,
|
|
25
|
+
code: this.code,
|
|
26
|
+
message: this.message,
|
|
27
|
+
callId: this.callId,
|
|
28
|
+
provider: this.provider,
|
|
29
|
+
retryable: this.retryable,
|
|
30
|
+
severity: this.severity
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
// src/errors/agents.errors.ts
|
|
36
|
+
var AgentError = class extends VoiceKitError {
|
|
37
|
+
};
|
|
38
|
+
var TurnTransitionError = class extends AgentError {
|
|
39
|
+
fromState;
|
|
40
|
+
event;
|
|
41
|
+
constructor(fromState, toEvent, callId) {
|
|
42
|
+
super({
|
|
43
|
+
code: "AGENT_INVALID_TURN_TRANSITION",
|
|
44
|
+
message: `Invalid turn transition: state '${fromState}' cannot handle event '${toEvent}'`,
|
|
45
|
+
callId,
|
|
46
|
+
retryable: false,
|
|
47
|
+
severity: "medium"
|
|
48
|
+
});
|
|
49
|
+
this.fromState = fromState;
|
|
50
|
+
this.event = toEvent;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
var AgentHandoffError = class extends AgentError {
|
|
54
|
+
constructor(capability, cause, callId) {
|
|
55
|
+
super({
|
|
56
|
+
code: "AGENT_HANDOFF_FAILED",
|
|
57
|
+
message: `Handoff to '${capability}' agent failed`,
|
|
58
|
+
callId,
|
|
59
|
+
retryable: true,
|
|
60
|
+
severity: "high",
|
|
61
|
+
cause
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// src/errors/compliance.ts
|
|
67
|
+
var ComplianceError = class extends VoiceKitError {
|
|
68
|
+
phoneNumber;
|
|
69
|
+
constructor(params) {
|
|
70
|
+
super({ ...params, provider: "trai" });
|
|
71
|
+
this.phoneNumber = params.phoneNumber;
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
var DNCBlockedError = class extends ComplianceError {
|
|
75
|
+
constructor(phoneNumber, callId) {
|
|
76
|
+
super({
|
|
77
|
+
code: "COMPLIANCE_DNC_BLOCKED",
|
|
78
|
+
message: `Number ${phoneNumber} is on DNC registry \u2014 call blocked`,
|
|
79
|
+
callId,
|
|
80
|
+
phoneNumber,
|
|
81
|
+
retryable: false,
|
|
82
|
+
severity: "low"
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
var CallingHoursError = class extends ComplianceError {
|
|
87
|
+
constructor(phoneNumber, currentTime, callId) {
|
|
88
|
+
super({
|
|
89
|
+
code: "COMPLIANCE_OUTSIDE_CALLING_HOURS",
|
|
90
|
+
message: `Call to ${phoneNumber} blocked \u2014 outside TRAI calling hours (current: ${currentTime} IST)`,
|
|
91
|
+
callId,
|
|
92
|
+
phoneNumber,
|
|
93
|
+
retryable: false,
|
|
94
|
+
severity: "low"
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
var ConsentMissingError = class extends ComplianceError {
|
|
99
|
+
constructor(phoneNumber, callId) {
|
|
100
|
+
super({
|
|
101
|
+
code: "COMPLIANCE_CONSENT_MISSING",
|
|
102
|
+
message: `No valid consent on record for ${phoneNumber}`,
|
|
103
|
+
callId,
|
|
104
|
+
phoneNumber,
|
|
105
|
+
retryable: false,
|
|
106
|
+
severity: "medium"
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
// src/errors/inngest.errors.ts
|
|
112
|
+
var InngestError = class extends VoiceKitError {
|
|
113
|
+
taskName;
|
|
114
|
+
constructor(params) {
|
|
115
|
+
super({
|
|
116
|
+
...params,
|
|
117
|
+
provider: "inngest",
|
|
118
|
+
retryable: true,
|
|
119
|
+
severity: "medium"
|
|
120
|
+
});
|
|
121
|
+
this.taskName = params.taskName;
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
// src/errors/stt.errors.ts
|
|
126
|
+
var STTError = class extends VoiceKitError {
|
|
127
|
+
languageCode;
|
|
128
|
+
constructor(params) {
|
|
129
|
+
super(params);
|
|
130
|
+
this.languageCode = params.languageCode;
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
var STTConnectionError = class extends STTError {
|
|
134
|
+
constructor(provider, cause, callId) {
|
|
135
|
+
super({
|
|
136
|
+
code: "STT_CONNECTION_FAILED",
|
|
137
|
+
message: `Failed to connect to ${provider} STT service`,
|
|
138
|
+
provider,
|
|
139
|
+
callId,
|
|
140
|
+
retryable: true,
|
|
141
|
+
severity: "high",
|
|
142
|
+
cause
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
var STTStreamError = class extends STTError {
|
|
147
|
+
constructor(provider, cause, callId) {
|
|
148
|
+
super({
|
|
149
|
+
code: "STT_STREAM_ERROR",
|
|
150
|
+
message: `STT stream error from ${provider}`,
|
|
151
|
+
provider,
|
|
152
|
+
callId,
|
|
153
|
+
retryable: true,
|
|
154
|
+
severity: "medium",
|
|
155
|
+
cause
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
var STTLanguageNotSupportedError = class extends STTError {
|
|
160
|
+
constructor(provider, language) {
|
|
161
|
+
super({
|
|
162
|
+
code: "STT_LANGUAGE_NOT_SUPPORTED",
|
|
163
|
+
message: `Language '${language}' is not supported by ${provider}`,
|
|
164
|
+
provider,
|
|
165
|
+
retryable: false,
|
|
166
|
+
severity: "low",
|
|
167
|
+
languageCode: language
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
// src/errors/telephony.errors.ts
|
|
173
|
+
var TelephonyError = class extends VoiceKitError {
|
|
174
|
+
to;
|
|
175
|
+
from;
|
|
176
|
+
constructor(params) {
|
|
177
|
+
super(params);
|
|
178
|
+
this.to = params.to;
|
|
179
|
+
this.from = params.from;
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
var CallConnectionError = class extends TelephonyError {
|
|
183
|
+
constructor(provider, to, cause) {
|
|
184
|
+
super({
|
|
185
|
+
code: "CALL_CONNECTION_FAILED",
|
|
186
|
+
message: `Failed to connect call to ${to} via ${provider}`,
|
|
187
|
+
provider,
|
|
188
|
+
to,
|
|
189
|
+
retryable: true,
|
|
190
|
+
severity: "high",
|
|
191
|
+
cause
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
var CallNotFoundError = class extends TelephonyError {
|
|
196
|
+
constructor(callId, provider) {
|
|
197
|
+
super({
|
|
198
|
+
code: "CALL_NOT_FOUND",
|
|
199
|
+
message: `Call '${callId}' not found on ${provider}`,
|
|
200
|
+
callId,
|
|
201
|
+
provider,
|
|
202
|
+
retryable: false,
|
|
203
|
+
severity: "low"
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
var AudioTransportError = class extends TelephonyError {
|
|
208
|
+
constructor(provider, cause, callId) {
|
|
209
|
+
super({
|
|
210
|
+
code: "AUDIO_TRANSPORT_ERROR",
|
|
211
|
+
message: `Audio transport error on ${provider}`,
|
|
212
|
+
provider,
|
|
213
|
+
callId,
|
|
214
|
+
retryable: true,
|
|
215
|
+
severity: "high",
|
|
216
|
+
cause
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
// src/errors/tts.errors.ts
|
|
222
|
+
var TTSError = class extends VoiceKitError {
|
|
223
|
+
};
|
|
224
|
+
var TTSConnectionError = class extends TTSError {
|
|
225
|
+
constructor(provider, cause, callId) {
|
|
226
|
+
super({
|
|
227
|
+
code: "TTS_CONNECTION_FAILED",
|
|
228
|
+
message: `Failed to connect to ${provider} TTS service`,
|
|
229
|
+
provider,
|
|
230
|
+
callId,
|
|
231
|
+
retryable: true,
|
|
232
|
+
severity: "high",
|
|
233
|
+
cause
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
var TTSStreamError = class extends TTSError {
|
|
238
|
+
constructor(provider, cause, callId) {
|
|
239
|
+
super({
|
|
240
|
+
code: "TTS_STREAM_ERROR",
|
|
241
|
+
message: `TTS stream error from ${provider}`,
|
|
242
|
+
provider,
|
|
243
|
+
callId,
|
|
244
|
+
retryable: true,
|
|
245
|
+
severity: "medium",
|
|
246
|
+
cause
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
};
|
|
250
|
+
var TTSVoiceNotFoundError = class extends TTSError {
|
|
251
|
+
constructor(provider, voiceId) {
|
|
252
|
+
super({
|
|
253
|
+
code: "TTS_VOICE_NOT_FOUND",
|
|
254
|
+
message: `Voice '${voiceId}' not found on ${provider}`,
|
|
255
|
+
provider,
|
|
256
|
+
retryable: false,
|
|
257
|
+
severity: "low"
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
exports.AgentError = AgentError;
|
|
263
|
+
exports.AgentHandoffError = AgentHandoffError;
|
|
264
|
+
exports.AudioTransportError = AudioTransportError;
|
|
265
|
+
exports.CallConnectionError = CallConnectionError;
|
|
266
|
+
exports.CallNotFoundError = CallNotFoundError;
|
|
267
|
+
exports.CallingHoursError = CallingHoursError;
|
|
268
|
+
exports.ComplianceError = ComplianceError;
|
|
269
|
+
exports.ConsentMissingError = ConsentMissingError;
|
|
270
|
+
exports.DNCBlockedError = DNCBlockedError;
|
|
271
|
+
exports.InngestError = InngestError;
|
|
272
|
+
exports.STTConnectionError = STTConnectionError;
|
|
273
|
+
exports.STTError = STTError;
|
|
274
|
+
exports.STTLanguageNotSupportedError = STTLanguageNotSupportedError;
|
|
275
|
+
exports.STTStreamError = STTStreamError;
|
|
276
|
+
exports.TTSConnectionError = TTSConnectionError;
|
|
277
|
+
exports.TTSError = TTSError;
|
|
278
|
+
exports.TTSStreamError = TTSStreamError;
|
|
279
|
+
exports.TTSVoiceNotFoundError = TTSVoiceNotFoundError;
|
|
280
|
+
exports.TelephonyError = TelephonyError;
|
|
281
|
+
exports.TurnTransitionError = TurnTransitionError;
|
|
282
|
+
exports.VoiceKitError = VoiceKitError;
|
|
3
283
|
//# sourceMappingURL=index.cjs.map
|
|
4
284
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
|
|
1
|
+
{"version":3,"sources":["../src/errors/base.ts","../src/errors/agents.errors.ts","../src/errors/compliance.ts","../src/errors/inngest.errors.ts","../src/errors/stt.errors.ts","../src/errors/telephony.errors.ts","../src/errors/tts.errors.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["/**\r\n * @voice-kit/core — Typed error hierarchy\r\n *\r\n * All VoiceKit errors extend VoiceKitError. Never throw raw Error.\r\n * Every error carries: code, message, provider, callId, retryable, severity.\r\n */\r\n\r\nimport type { ErrorSeverity } from '../types'\r\n\r\n// ─── Base Error ───────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Base class for all VoiceKit errors. Provides structured context for\r\n * logging, alerting, and programmatic error handling.\r\n *\r\n * @example\r\n * ```ts\r\n * try {\r\n * await stt.transcribeBatch(audio)\r\n * } catch (err) {\r\n * if (err instanceof STTError) {\r\n * console.error(err.code, err.provider, err.retryable)\r\n * }\r\n * }\r\n * ```\r\n */\r\nexport class VoiceKitError extends Error {\r\n readonly code: string\r\n readonly callId?: string\r\n readonly provider?: string\r\n readonly retryable: boolean\r\n readonly severity: ErrorSeverity\r\n override readonly cause?: unknown\r\n\r\n constructor(params: {\r\n code: string\r\n message: string\r\n callId?: string\r\n provider?: string\r\n retryable?: boolean\r\n severity?: ErrorSeverity\r\n cause?: unknown\r\n }) {\r\n super(params.message)\r\n this.name = this.constructor.name\r\n this.code = params.code\r\n this.callId = params.callId\r\n this.provider = params.provider\r\n this.retryable = params.retryable ?? false\r\n this.severity = params.severity ?? 'medium'\r\n this.cause = params.cause\r\n\r\n // Maintains proper prototype chain for `instanceof` in transpiled code\r\n Object.setPrototypeOf(this, new.target.prototype)\r\n }\r\n\r\n toJSON() {\r\n return {\r\n name: this.name,\r\n code: this.code,\r\n message: this.message,\r\n callId: this.callId,\r\n provider: this.provider,\r\n retryable: this.retryable,\r\n severity: this.severity,\r\n }\r\n }\r\n}","\r\n// ─── Agent Errors ─────────────────────────────────────────────────────────────\r\n\r\nimport { VoiceKitError } from \"./base\"\r\n\r\n/**\r\n * Errors from agent orchestration (turn engine, handoff, injection).\r\n */\r\nexport class AgentError extends VoiceKitError { }\r\n\r\nexport class TurnTransitionError extends AgentError {\r\n readonly fromState: string\r\n readonly event: string\r\n\r\n constructor(fromState: string, toEvent: string, callId?: string) {\r\n super({\r\n code: 'AGENT_INVALID_TURN_TRANSITION',\r\n message: `Invalid turn transition: state '${fromState}' cannot handle event '${toEvent}'`,\r\n callId,\r\n retryable: false,\r\n severity: 'medium',\r\n })\r\n this.fromState = fromState\r\n this.event = toEvent\r\n }\r\n}\r\n\r\nexport class AgentHandoffError extends AgentError {\r\n constructor(capability: string, cause?: unknown, callId?: string) {\r\n super({\r\n code: 'AGENT_HANDOFF_FAILED',\r\n message: `Handoff to '${capability}' agent failed`,\r\n callId,\r\n retryable: true,\r\n severity: 'high',\r\n cause,\r\n })\r\n }\r\n}\r\n","\r\n// ─── Compliance Errors ────────────────────────────────────────────────────────\r\n\r\nimport type { ErrorSeverity } from \"../types\"\r\nimport { VoiceKitError } from \"./base\"\r\n\r\n/**\r\n * Errors from compliance checks (TRAI DNC, calling hours, consent).\r\n */\r\nexport class ComplianceError extends VoiceKitError {\r\n readonly phoneNumber?: string\r\n\r\n constructor(params: {\r\n code: string\r\n message: string\r\n callId?: string\r\n phoneNumber?: string\r\n retryable?: boolean\r\n severity?: ErrorSeverity\r\n cause?: unknown\r\n }) {\r\n super({ ...params, provider: 'trai' })\r\n this.phoneNumber = params.phoneNumber\r\n }\r\n}\r\n\r\nexport class DNCBlockedError extends ComplianceError {\r\n constructor(phoneNumber: string, callId?: string) {\r\n super({\r\n code: 'COMPLIANCE_DNC_BLOCKED',\r\n message: `Number ${phoneNumber} is on DNC registry — call blocked`,\r\n callId,\r\n phoneNumber,\r\n retryable: false,\r\n severity: 'low',\r\n })\r\n }\r\n}\r\n\r\nexport class CallingHoursError extends ComplianceError {\r\n constructor(phoneNumber: string, currentTime: string, callId?: string) {\r\n super({\r\n code: 'COMPLIANCE_OUTSIDE_CALLING_HOURS',\r\n message: `Call to ${phoneNumber} blocked — outside TRAI calling hours (current: ${currentTime} IST)`,\r\n callId,\r\n phoneNumber,\r\n retryable: false,\r\n severity: 'low',\r\n })\r\n }\r\n}\r\n\r\nexport class ConsentMissingError extends ComplianceError {\r\n constructor(phoneNumber: string, callId?: string) {\r\n super({\r\n code: 'COMPLIANCE_CONSENT_MISSING',\r\n message: `No valid consent on record for ${phoneNumber}`,\r\n callId,\r\n phoneNumber,\r\n retryable: false,\r\n severity: 'medium',\r\n })\r\n }\r\n}\r\n","\r\n\r\n// ─── Inngest Errors ───────────────────────────────────────────────────────────\r\n\r\nimport { VoiceKitError } from \"./base\"\r\n\r\n/**\r\n * Errors from Inngest background task dispatch.\r\n */\r\nexport class InngestError extends VoiceKitError {\r\n readonly taskName?: string\r\n\r\n constructor(params: {\r\n code: string\r\n message: string\r\n callId?: string\r\n taskName?: string\r\n cause?: unknown\r\n }) {\r\n super({\r\n ...params,\r\n provider: 'inngest',\r\n retryable: true,\r\n severity: 'medium',\r\n })\r\n this.taskName = params.taskName\r\n }\r\n}","\r\n// ─── STT Errors ───────────────────────────────────────────────────────────────\r\n\r\nimport type { ErrorSeverity } from \"../types\"\r\nimport { VoiceKitError } from \"./base\"\r\n\r\n/**\r\n * Errors from speech-to-text providers.\r\n */\r\nexport class STTError extends VoiceKitError {\r\n readonly languageCode?: string\r\n\r\n constructor(params: {\r\n code: string\r\n message: string\r\n callId?: string\r\n provider?: string\r\n retryable?: boolean\r\n severity?: ErrorSeverity\r\n cause?: unknown\r\n languageCode?: string\r\n }) {\r\n super(params)\r\n this.languageCode = params.languageCode\r\n }\r\n}\r\n\r\nexport class STTConnectionError extends STTError {\r\n constructor(provider: string, cause?: unknown, callId?: string) {\r\n super({\r\n code: 'STT_CONNECTION_FAILED',\r\n message: `Failed to connect to ${provider} STT service`,\r\n provider,\r\n callId,\r\n retryable: true,\r\n severity: 'high',\r\n cause,\r\n })\r\n }\r\n}\r\n\r\nexport class STTStreamError extends STTError {\r\n constructor(provider: string, cause?: unknown, callId?: string) {\r\n super({\r\n code: 'STT_STREAM_ERROR',\r\n message: `STT stream error from ${provider}`,\r\n provider,\r\n callId,\r\n retryable: true,\r\n severity: 'medium',\r\n cause,\r\n })\r\n }\r\n}\r\n\r\nexport class STTLanguageNotSupportedError extends STTError {\r\n constructor(provider: string, language: string) {\r\n super({\r\n code: 'STT_LANGUAGE_NOT_SUPPORTED',\r\n message: `Language '${language}' is not supported by ${provider}`,\r\n provider,\r\n retryable: false,\r\n severity: 'low',\r\n languageCode: language,\r\n })\r\n }\r\n}\r\n","\r\n// ─── Telephony Errors ─────────────────────────────────────────────────────────\r\n\r\nimport type { ErrorSeverity } from \"../types\"\r\nimport { VoiceKitError } from \"./base\"\r\n\r\n/**\r\n * Errors from telephony providers.\r\n */\r\nexport class TelephonyError extends VoiceKitError {\r\n readonly to?: string\r\n readonly from?: string\r\n\r\n constructor(params: {\r\n code: string\r\n message: string\r\n callId?: string\r\n provider?: string\r\n retryable?: boolean\r\n severity?: ErrorSeverity\r\n cause?: unknown\r\n to?: string\r\n from?: string\r\n }) {\r\n super(params)\r\n this.to = params.to\r\n this.from = params.from\r\n }\r\n}\r\n\r\nexport class CallConnectionError extends TelephonyError {\r\n constructor(provider: string, to: string, cause?: unknown) {\r\n super({\r\n code: 'CALL_CONNECTION_FAILED',\r\n message: `Failed to connect call to ${to} via ${provider}`,\r\n provider,\r\n to,\r\n retryable: true,\r\n severity: 'high',\r\n cause,\r\n })\r\n }\r\n}\r\n\r\nexport class CallNotFoundError extends TelephonyError {\r\n constructor(callId: string, provider: string) {\r\n super({\r\n code: 'CALL_NOT_FOUND',\r\n message: `Call '${callId}' not found on ${provider}`,\r\n callId,\r\n provider,\r\n retryable: false,\r\n severity: 'low',\r\n })\r\n }\r\n}\r\n\r\nexport class AudioTransportError extends TelephonyError {\r\n constructor(provider: string, cause?: unknown, callId?: string) {\r\n super({\r\n code: 'AUDIO_TRANSPORT_ERROR',\r\n message: `Audio transport error on ${provider}`,\r\n provider,\r\n callId,\r\n retryable: true,\r\n severity: 'high',\r\n cause,\r\n })\r\n }\r\n}\r\n","\r\n// ─── TTS Errors ───────────────────────────────────────────────────────────────\r\n\r\nimport { VoiceKitError } from \"./base\"\r\n\r\n/**\r\n * Errors from text-to-speech providers.\r\n */\r\nexport class TTSError extends VoiceKitError { }\r\n\r\nexport class TTSConnectionError extends TTSError {\r\n constructor(provider: string, cause?: unknown, callId?: string) {\r\n super({\r\n code: 'TTS_CONNECTION_FAILED',\r\n message: `Failed to connect to ${provider} TTS service`,\r\n provider,\r\n callId,\r\n retryable: true,\r\n severity: 'high',\r\n cause,\r\n })\r\n }\r\n}\r\n\r\nexport class TTSStreamError extends TTSError {\r\n constructor(provider: string, cause?: unknown, callId?: string) {\r\n super({\r\n code: 'TTS_STREAM_ERROR',\r\n message: `TTS stream error from ${provider}`,\r\n provider,\r\n callId,\r\n retryable: true,\r\n severity: 'medium',\r\n cause,\r\n })\r\n }\r\n}\r\n\r\nexport class TTSVoiceNotFoundError extends TTSError {\r\n constructor(provider: string, voiceId: string) {\r\n super({\r\n code: 'TTS_VOICE_NOT_FOUND',\r\n message: `Voice '${voiceId}' not found on ${provider}`,\r\n provider,\r\n retryable: false,\r\n severity: 'low',\r\n })\r\n }\r\n}\r\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,319 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* @voice-kit/core — Type definitions
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* A single word with timing information from an STT provider.
|
|
8
|
-
*/
|
|
9
|
-
interface WordTimestamp {
|
|
10
|
-
word: string;
|
|
11
|
-
startMs: number;
|
|
12
|
-
endMs: number;
|
|
13
|
-
confidence: number;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* The result of a speech-to-text transcription, either streaming partial
|
|
17
|
-
* or final. `isFinal` distinguishes the two.
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```ts
|
|
21
|
-
* for await (const result of stt.transcribeStream(audioIterable)) {
|
|
22
|
-
* if (result.isFinal) console.log('Final:', result.transcript)
|
|
23
|
-
* }
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
interface STTResult {
|
|
27
|
-
/** The transcribed text. May be a partial result if `isFinal` is false. */
|
|
28
|
-
transcript: string;
|
|
29
|
-
/** Whether this is the final result for this utterance. */
|
|
30
|
-
isFinal: boolean;
|
|
31
|
-
/** Confidence score from the provider, 0–1. */
|
|
32
|
-
confidence: number;
|
|
33
|
-
/** BCP-47 language tag, e.g. 'hi-IN', 'en-IN'. */
|
|
34
|
-
language: string;
|
|
35
|
-
/** True if a mid-sentence language switch was detected (e.g. Hinglish). */
|
|
36
|
-
languageSwitchDetected: boolean;
|
|
37
|
-
/** Word-level timestamps if supported by the provider. */
|
|
38
|
-
words?: WordTimestamp[];
|
|
39
|
-
/** Time from audio start to this result being emitted, in ms. */
|
|
40
|
-
latencyMs: number;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Configuration for STT provider instantiation.
|
|
44
|
-
*/
|
|
45
|
-
interface STTConfig {
|
|
46
|
-
/** BCP-47 language code. Defaults to 'en-IN'. */
|
|
47
|
-
language?: string;
|
|
48
|
-
/** Additional languages to detect for code-switching. */
|
|
49
|
-
alternateLanguages?: string[];
|
|
50
|
-
/** API key. Falls back to provider-specific env var if omitted. */
|
|
51
|
-
apiKey?: string;
|
|
52
|
-
/** Custom model name. Provider-specific. */
|
|
53
|
-
model?: string;
|
|
54
|
-
/** Enable word-level timestamps. Default false. */
|
|
55
|
-
wordTimestamps?: boolean;
|
|
56
|
-
/** Enable interim / partial results. Default true. */
|
|
57
|
-
interimResults?: boolean;
|
|
58
|
-
/** Deepgram-specific: smart formatting. Default true. */
|
|
59
|
-
smartFormat?: boolean;
|
|
60
|
-
/** Sarvam-specific: region hint. */
|
|
61
|
-
region?: string;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* The STTProvider interface. Obtained via `createSTT()` — never instantiate
|
|
65
|
-
* provider classes directly.
|
|
66
|
-
*
|
|
67
|
-
* @example
|
|
68
|
-
* ```ts
|
|
69
|
-
* const stt = createSTT('deepgram', { language: 'en-IN' })
|
|
70
|
-
* for await (const result of stt.transcribeStream(audioStream)) {
|
|
71
|
-
* console.log(result.transcript)
|
|
72
|
-
* }
|
|
73
|
-
* ```
|
|
74
|
-
*/
|
|
75
|
-
interface STTProvider {
|
|
76
|
-
/** Stream audio in, stream STTResults out. Primary realtime path. */
|
|
77
|
-
transcribeStream(audio: AsyncIterable<Buffer>): AsyncIterable<STTResult>;
|
|
78
|
-
/** Batch transcription for recordings. Returns single final result. */
|
|
79
|
-
transcribeBatch(audio: Buffer): Promise<STTResult>;
|
|
80
|
-
/** Whether this provider supports streaming (all except Whisper). */
|
|
81
|
-
readonly supportsStreaming: boolean;
|
|
82
|
-
/** BCP-47 codes this provider can handle. */
|
|
83
|
-
readonly supportedLanguages: string[];
|
|
84
|
-
/** Human-readable provider name for logging. */
|
|
85
|
-
readonly name: string;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Configuration for TTS provider instantiation.
|
|
89
|
-
*/
|
|
90
|
-
interface TTSConfig {
|
|
91
|
-
/** Voice identifier. Provider-specific. */
|
|
92
|
-
voiceId?: string;
|
|
93
|
-
/** Output sample rate. Defaults to provider native rate. */
|
|
94
|
-
sampleRate?: number;
|
|
95
|
-
/** Speaking speed multiplier. Default 1.0. */
|
|
96
|
-
speed?: number;
|
|
97
|
-
/** Pitch adjustment. Provider-specific. */
|
|
98
|
-
pitch?: number;
|
|
99
|
-
/** API key. Falls back to provider-specific env var if omitted. */
|
|
100
|
-
apiKey?: string;
|
|
101
|
-
/** ElevenLabs-specific: model ID. */
|
|
102
|
-
modelId?: string;
|
|
103
|
-
/** Cartesia-specific: emotion control. */
|
|
104
|
-
emotion?: string;
|
|
105
|
-
/** Sarvam-specific: target language for Indic voices. */
|
|
106
|
-
targetLanguage?: string;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* The TTSProvider interface. Obtained via `createTTS()` — never instantiate
|
|
110
|
-
* provider classes directly.
|
|
111
|
-
*
|
|
112
|
-
* @example
|
|
113
|
-
* ```ts
|
|
114
|
-
* const tts = createTTS('elevenlabs', { voiceId: 'your-voice-id' })
|
|
115
|
-
* for await (const chunk of tts.synthesizeStream('Hello, how can I help?')) {
|
|
116
|
-
* socket.write(chunk)
|
|
117
|
-
* }
|
|
118
|
-
* ```
|
|
119
|
-
*/
|
|
120
|
-
interface TTSProvider {
|
|
121
|
-
/** Stream synthesis — preferred for realtime. First chunk < 300ms. */
|
|
122
|
-
synthesizeStream(text: string, config?: TTSConfig): AsyncIterable<Buffer>;
|
|
123
|
-
/** Synthesize full audio — for pre-recorded prompts or caching. */
|
|
124
|
-
synthesizeFull(text: string, config?: TTSConfig): Promise<Buffer>;
|
|
125
|
-
/** Native output sample rate of this provider in Hz. */
|
|
126
|
-
readonly outputSampleRate: number;
|
|
127
|
-
/** Native output format before any resampling. */
|
|
128
|
-
readonly outputFormat: 'pcm' | 'mulaw' | 'opus' | 'mp3';
|
|
129
|
-
/** Human-readable provider name for logging. */
|
|
130
|
-
readonly name: string;
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* A frame of audio classified by the VAD engine.
|
|
134
|
-
* Developers subscribe to these events — never to raw VAD API.
|
|
135
|
-
*/
|
|
136
|
-
interface VoiceFrame {
|
|
137
|
-
/** Event type. */
|
|
138
|
-
type: 'speech_start' | 'speech_end' | 'speech';
|
|
139
|
-
/** VAD confidence 0–1. */
|
|
140
|
-
confidence: number;
|
|
141
|
-
/** Raw PCM audio bytes for this frame. */
|
|
142
|
-
audioBuffer: Buffer;
|
|
143
|
-
/** Duration of audio in this frame, in ms. */
|
|
144
|
-
durationMs: number;
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Configuration for the VAD engine.
|
|
148
|
-
*/
|
|
149
|
-
interface VADConfig {
|
|
150
|
-
/** Activation threshold 0–1. Default 0.6. */
|
|
151
|
-
threshold?: number;
|
|
152
|
-
/** Consecutive positive frames before speech_start. Default 3. */
|
|
153
|
-
positiveSpeechFrames?: number;
|
|
154
|
-
/** Consecutive negative frames before speech_end. Default 5. */
|
|
155
|
-
negativeSpeechFrames?: number;
|
|
156
|
-
/** Debounce window in ms to prevent rapid flip-flop. Default 150. */
|
|
157
|
-
debounceMs?: number;
|
|
158
|
-
/** Input sample rate. Auto-set by AudioPipeline — do not override. */
|
|
159
|
-
sampleRate?: number;
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Configuration for call memory (LRU-backed sliding window of turns).
|
|
163
|
-
*/
|
|
164
|
-
interface CallMemoryConfig {
|
|
165
|
-
/** Maximum number of turns to retain. Default 20. */
|
|
166
|
-
maxTurns?: number;
|
|
167
|
-
/** Maximum bytes of conversation history to retain. Default 512KB. */
|
|
168
|
-
maxBytes?: number;
|
|
169
|
-
/** TTL for the entire call memory entry in ms. Default 30 minutes. */
|
|
170
|
-
ttlMs?: number;
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* In-process LRU-backed call memory. Obtained via `createCallMemory()`.
|
|
174
|
-
*
|
|
175
|
-
* @example
|
|
176
|
-
* ```ts
|
|
177
|
-
* const memory = createCallMemory({ maxTurns: 20 })
|
|
178
|
-
* memory.addTurn(callId, { role: 'user', content: 'Hello' })
|
|
179
|
-
* const history = memory.getTurns(callId)
|
|
180
|
-
* ```
|
|
181
|
-
*/
|
|
182
|
-
interface CallMemory {
|
|
183
|
-
addTurn(callId: string, message: ai.ModelMessage): void;
|
|
184
|
-
getTurns(callId: string): ai.ModelMessage[];
|
|
185
|
-
clearCall(callId: string): void;
|
|
186
|
-
getTokenEstimate(callId: string): number;
|
|
187
|
-
/** Truncate oldest turns to stay within budget. */
|
|
188
|
-
trimToTokenBudget(callId: string, maxTokens: number): void;
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Type of call for TRAI DND classification.
|
|
192
|
-
*/
|
|
193
|
-
type CallPurpose = 'TRANSACTIONAL' | 'PROMOTIONAL' | 'SERVICE' | 'EMERGENCY';
|
|
194
|
-
/**
|
|
195
|
-
* TRAI DNC check parameters.
|
|
196
|
-
*/
|
|
197
|
-
interface DNCCheckParams {
|
|
198
|
-
/** E.164 format phone number, validated via libphonenumber-js. */
|
|
199
|
-
to: string;
|
|
200
|
-
/** Purpose category for TRAI classification. */
|
|
201
|
-
purpose: CallPurpose;
|
|
202
|
-
/** Scheduled call time. Defaults to now. */
|
|
203
|
-
scheduledAt?: Date;
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Result of a TRAI DNC check.
|
|
207
|
-
*/
|
|
208
|
-
interface DNCCheckResult {
|
|
209
|
-
/** Whether the call is permitted. */
|
|
210
|
-
allowed: boolean;
|
|
211
|
-
/** Human-readable reason if not allowed. */
|
|
212
|
-
reason?: string;
|
|
213
|
-
/** When this result was fetched (from LRU cache). */
|
|
214
|
-
cachedAt?: Date;
|
|
215
|
-
/** Whether result came from local LRU cache. */
|
|
216
|
-
fromCache: boolean;
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Consent record stored for TRAI compliance.
|
|
220
|
-
*/
|
|
221
|
-
interface ConsentRecord {
|
|
222
|
-
phoneNumber: string;
|
|
223
|
-
consentedAt: Date;
|
|
224
|
-
/** Channel through which consent was obtained. */
|
|
225
|
-
channel: 'voice' | 'sms' | 'web' | 'ivr';
|
|
226
|
-
/** Call purpose consent was given for. */
|
|
227
|
-
purpose: CallPurpose;
|
|
228
|
-
/** Optional reference ID (e.g. recording URL). */
|
|
229
|
-
referenceId?: string;
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* TRAI compliance configuration.
|
|
233
|
-
*/
|
|
234
|
-
interface TRAIConfig {
|
|
235
|
-
/** Disable TRAI checks entirely. Default false. */
|
|
236
|
-
disabled?: boolean;
|
|
237
|
-
/** Calling timezone override. Default 'Asia/Kolkata'. */
|
|
238
|
-
timezone?: string;
|
|
239
|
-
/** Override calling hours start (24h). Default 9. */
|
|
240
|
-
callingHoursStart?: number;
|
|
241
|
-
/** Override calling hours end (24h). Default 21. */
|
|
242
|
-
callingHoursEnd?: number;
|
|
243
|
-
/** Custom DNC API endpoint. Default: mock endpoint (must be replaced in production). */
|
|
244
|
-
dncApiEndpoint?: string;
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Aggregated metrics for a completed or in-progress call.
|
|
248
|
-
*/
|
|
249
|
-
interface CallMetricsSummary {
|
|
250
|
-
callId: string;
|
|
251
|
-
sttFirstByteMs: number[];
|
|
252
|
-
ttsFirstByteMs: number[];
|
|
253
|
-
llmFirstTokenMs: number[];
|
|
254
|
-
turnLatencyMs: number[];
|
|
255
|
-
interruptionCount: number;
|
|
256
|
-
interruptionPositions: number[];
|
|
257
|
-
tokenCost: {
|
|
258
|
-
model: string;
|
|
259
|
-
inputTokens: number;
|
|
260
|
-
outputTokens: number;
|
|
261
|
-
estimatedUsdCost: number;
|
|
262
|
-
}[];
|
|
263
|
-
avgTurnLatencyMs: number;
|
|
264
|
-
p95TurnLatencyMs: number;
|
|
265
|
-
}
|
|
266
|
-
/**
|
|
267
|
-
* Error severity level.
|
|
268
|
-
*/
|
|
269
|
-
type ErrorSeverity = 'low' | 'medium' | 'high' | 'critical';
|
|
270
|
-
/**
|
|
271
|
-
* Base error context shared by all VoiceKit errors.
|
|
272
|
-
*/
|
|
273
|
-
interface VoiceKitErrorContext {
|
|
274
|
-
/** Error code for programmatic handling. */
|
|
275
|
-
code: string;
|
|
276
|
-
/** Associated call ID if applicable. */
|
|
277
|
-
callId?: string;
|
|
278
|
-
/** The provider that threw (e.g. 'deepgram', 'elevenlabs'). */
|
|
279
|
-
provider?: string;
|
|
280
|
-
/** Whether this error is safe to retry. */
|
|
281
|
-
retryable: boolean;
|
|
282
|
-
/** Severity for alerting/logging. */
|
|
283
|
-
severity: ErrorSeverity;
|
|
284
|
-
/** Original upstream error if wrapping. */
|
|
285
|
-
cause?: unknown;
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* Create an STT provider instance. This is the ONLY public API for STT.
|
|
289
|
-
* Never instantiate provider classes directly.
|
|
290
|
-
*
|
|
291
|
-
* @example
|
|
292
|
-
* ```ts
|
|
293
|
-
* const stt = createSTT('deepgram', { language: 'hi-IN' })
|
|
294
|
-
* const stt2 = createSTT('sarvam', { language: 'ta-IN' })
|
|
295
|
-
* ```
|
|
296
|
-
*/
|
|
297
|
-
declare function createSTT(provider: 'deepgram' | 'whisper' | 'assemblyai' | 'sarvam', config?: STTConfig): STTProvider;
|
|
298
|
-
/**
|
|
299
|
-
* Create a TTS provider instance. This is the ONLY public API for TTS.
|
|
300
|
-
* Never instantiate provider classes directly.
|
|
301
|
-
*
|
|
302
|
-
* @example
|
|
303
|
-
* ```ts
|
|
304
|
-
* const tts = createTTS('elevenlabs', { voiceId: 'your-voice-id' })
|
|
305
|
-
* const tts2 = createTTS('sarvam', { targetLanguage: 'hi-IN' })
|
|
306
|
-
* ```
|
|
307
|
-
*/
|
|
308
|
-
declare function createTTS(provider: 'elevenlabs' | 'cartesia' | 'sarvam', config?: TTSConfig): TTSProvider;
|
|
309
|
-
/**
|
|
310
|
-
* Create an LRU-backed call memory instance.
|
|
311
|
-
*
|
|
312
|
-
* @example
|
|
313
|
-
* ```ts
|
|
314
|
-
* const memory = createCallMemory({ maxTurns: 20, maxBytes: 512_000 })
|
|
315
|
-
* ```
|
|
316
|
-
*/
|
|
317
|
-
declare function createCallMemory(config?: CallMemoryConfig): CallMemory;
|
|
318
|
-
|
|
319
|
-
export { type CallMemory, type CallMemoryConfig, type CallMetricsSummary, type CallPurpose, type ConsentRecord, type DNCCheckParams, type DNCCheckResult, type ErrorSeverity, type STTConfig, type STTProvider, type STTResult, type TRAIConfig, type TTSConfig, type TTSProvider, type VADConfig, type VoiceFrame, type VoiceKitErrorContext, type WordTimestamp, createCallMemory, createSTT, createTTS };
|
|
1
|
+
export { a as CallMemory, C as CallMemoryConfig, d as CallMetricsSummary, i as CallPurpose, c as ConsentRecord, D as DNCCheckParams, b as DNCCheckResult, E as ErrorSeverity, g as STTConfig, S as STTProvider, h as STTResult, T as TRAIConfig, f as TTSConfig, e as TTSProvider, V as VADConfig, j as VoiceFrame, k as VoiceKitErrorContext, W as WordTimestamp, l as createCallMemory, m as createSTT, n as createTTS } from './index-CkTG6DOa.cjs';
|
|
2
|
+
export { AgentError, AgentHandoffError, AudioTransportError, CallConnectionError, CallNotFoundError, CallingHoursError, ComplianceError, ConsentMissingError, DNCBlockedError, InngestError, STTConnectionError, STTError, STTLanguageNotSupportedError, STTStreamError, TTSConnectionError, TTSError, TTSStreamError, TTSVoiceNotFoundError, TelephonyError, TurnTransitionError, VoiceKitError } from './errors.cjs';
|
|
3
|
+
import 'ai';
|