@voice-kit/core 0.1.0 → 0.1.2

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/index.js CHANGED
@@ -1,3 +1,262 @@
1
+ // src/errors/base.ts
2
+ var VoiceKitError = class extends Error {
3
+ code;
4
+ callId;
5
+ provider;
6
+ retryable;
7
+ severity;
8
+ cause;
9
+ constructor(params) {
10
+ super(params.message);
11
+ this.name = this.constructor.name;
12
+ this.code = params.code;
13
+ this.callId = params.callId;
14
+ this.provider = params.provider;
15
+ this.retryable = params.retryable ?? false;
16
+ this.severity = params.severity ?? "medium";
17
+ this.cause = params.cause;
18
+ Object.setPrototypeOf(this, new.target.prototype);
19
+ }
20
+ toJSON() {
21
+ return {
22
+ name: this.name,
23
+ code: this.code,
24
+ message: this.message,
25
+ callId: this.callId,
26
+ provider: this.provider,
27
+ retryable: this.retryable,
28
+ severity: this.severity
29
+ };
30
+ }
31
+ };
1
32
 
33
+ // src/errors/agents.errors.ts
34
+ var AgentError = class extends VoiceKitError {
35
+ };
36
+ var TurnTransitionError = class extends AgentError {
37
+ fromState;
38
+ event;
39
+ constructor(fromState, toEvent, callId) {
40
+ super({
41
+ code: "AGENT_INVALID_TURN_TRANSITION",
42
+ message: `Invalid turn transition: state '${fromState}' cannot handle event '${toEvent}'`,
43
+ callId,
44
+ retryable: false,
45
+ severity: "medium"
46
+ });
47
+ this.fromState = fromState;
48
+ this.event = toEvent;
49
+ }
50
+ };
51
+ var AgentHandoffError = class extends AgentError {
52
+ constructor(capability, cause, callId) {
53
+ super({
54
+ code: "AGENT_HANDOFF_FAILED",
55
+ message: `Handoff to '${capability}' agent failed`,
56
+ callId,
57
+ retryable: true,
58
+ severity: "high",
59
+ cause
60
+ });
61
+ }
62
+ };
63
+
64
+ // src/errors/compliance.ts
65
+ var ComplianceError = class extends VoiceKitError {
66
+ phoneNumber;
67
+ constructor(params) {
68
+ super({ ...params, provider: "trai" });
69
+ this.phoneNumber = params.phoneNumber;
70
+ }
71
+ };
72
+ var DNCBlockedError = class extends ComplianceError {
73
+ constructor(phoneNumber, callId) {
74
+ super({
75
+ code: "COMPLIANCE_DNC_BLOCKED",
76
+ message: `Number ${phoneNumber} is on DNC registry \u2014 call blocked`,
77
+ callId,
78
+ phoneNumber,
79
+ retryable: false,
80
+ severity: "low"
81
+ });
82
+ }
83
+ };
84
+ var CallingHoursError = class extends ComplianceError {
85
+ constructor(phoneNumber, currentTime, callId) {
86
+ super({
87
+ code: "COMPLIANCE_OUTSIDE_CALLING_HOURS",
88
+ message: `Call to ${phoneNumber} blocked \u2014 outside TRAI calling hours (current: ${currentTime} IST)`,
89
+ callId,
90
+ phoneNumber,
91
+ retryable: false,
92
+ severity: "low"
93
+ });
94
+ }
95
+ };
96
+ var ConsentMissingError = class extends ComplianceError {
97
+ constructor(phoneNumber, callId) {
98
+ super({
99
+ code: "COMPLIANCE_CONSENT_MISSING",
100
+ message: `No valid consent on record for ${phoneNumber}`,
101
+ callId,
102
+ phoneNumber,
103
+ retryable: false,
104
+ severity: "medium"
105
+ });
106
+ }
107
+ };
108
+
109
+ // src/errors/inngest.errors.ts
110
+ var InngestError = class extends VoiceKitError {
111
+ taskName;
112
+ constructor(params) {
113
+ super({
114
+ ...params,
115
+ provider: "inngest",
116
+ retryable: true,
117
+ severity: "medium"
118
+ });
119
+ this.taskName = params.taskName;
120
+ }
121
+ };
122
+
123
+ // src/errors/stt.errors.ts
124
+ var STTError = class extends VoiceKitError {
125
+ languageCode;
126
+ constructor(params) {
127
+ super(params);
128
+ this.languageCode = params.languageCode;
129
+ }
130
+ };
131
+ var STTConnectionError = class extends STTError {
132
+ constructor(provider, cause, callId) {
133
+ super({
134
+ code: "STT_CONNECTION_FAILED",
135
+ message: `Failed to connect to ${provider} STT service`,
136
+ provider,
137
+ callId,
138
+ retryable: true,
139
+ severity: "high",
140
+ cause
141
+ });
142
+ }
143
+ };
144
+ var STTStreamError = class extends STTError {
145
+ constructor(provider, cause, callId) {
146
+ super({
147
+ code: "STT_STREAM_ERROR",
148
+ message: `STT stream error from ${provider}`,
149
+ provider,
150
+ callId,
151
+ retryable: true,
152
+ severity: "medium",
153
+ cause
154
+ });
155
+ }
156
+ };
157
+ var STTLanguageNotSupportedError = class extends STTError {
158
+ constructor(provider, language) {
159
+ super({
160
+ code: "STT_LANGUAGE_NOT_SUPPORTED",
161
+ message: `Language '${language}' is not supported by ${provider}`,
162
+ provider,
163
+ retryable: false,
164
+ severity: "low",
165
+ languageCode: language
166
+ });
167
+ }
168
+ };
169
+
170
+ // src/errors/telephony.errors.ts
171
+ var TelephonyError = class extends VoiceKitError {
172
+ to;
173
+ from;
174
+ constructor(params) {
175
+ super(params);
176
+ this.to = params.to;
177
+ this.from = params.from;
178
+ }
179
+ };
180
+ var CallConnectionError = class extends TelephonyError {
181
+ constructor(provider, to, cause) {
182
+ super({
183
+ code: "CALL_CONNECTION_FAILED",
184
+ message: `Failed to connect call to ${to} via ${provider}`,
185
+ provider,
186
+ to,
187
+ retryable: true,
188
+ severity: "high",
189
+ cause
190
+ });
191
+ }
192
+ };
193
+ var CallNotFoundError = class extends TelephonyError {
194
+ constructor(callId, provider) {
195
+ super({
196
+ code: "CALL_NOT_FOUND",
197
+ message: `Call '${callId}' not found on ${provider}`,
198
+ callId,
199
+ provider,
200
+ retryable: false,
201
+ severity: "low"
202
+ });
203
+ }
204
+ };
205
+ var AudioTransportError = class extends TelephonyError {
206
+ constructor(provider, cause, callId) {
207
+ super({
208
+ code: "AUDIO_TRANSPORT_ERROR",
209
+ message: `Audio transport error on ${provider}`,
210
+ provider,
211
+ callId,
212
+ retryable: true,
213
+ severity: "high",
214
+ cause
215
+ });
216
+ }
217
+ };
218
+
219
+ // src/errors/tts.errors.ts
220
+ var TTSError = class extends VoiceKitError {
221
+ };
222
+ var TTSConnectionError = class extends TTSError {
223
+ constructor(provider, cause, callId) {
224
+ super({
225
+ code: "TTS_CONNECTION_FAILED",
226
+ message: `Failed to connect to ${provider} TTS service`,
227
+ provider,
228
+ callId,
229
+ retryable: true,
230
+ severity: "high",
231
+ cause
232
+ });
233
+ }
234
+ };
235
+ var TTSStreamError = class extends TTSError {
236
+ constructor(provider, cause, callId) {
237
+ super({
238
+ code: "TTS_STREAM_ERROR",
239
+ message: `TTS stream error from ${provider}`,
240
+ provider,
241
+ callId,
242
+ retryable: true,
243
+ severity: "medium",
244
+ cause
245
+ });
246
+ }
247
+ };
248
+ var TTSVoiceNotFoundError = class extends TTSError {
249
+ constructor(provider, voiceId) {
250
+ super({
251
+ code: "TTS_VOICE_NOT_FOUND",
252
+ message: `Voice '${voiceId}' not found on ${provider}`,
253
+ provider,
254
+ retryable: false,
255
+ severity: "low"
256
+ });
257
+ }
258
+ };
259
+
260
+ export { AgentError, AgentHandoffError, AudioTransportError, CallConnectionError, CallNotFoundError, CallingHoursError, ComplianceError, ConsentMissingError, DNCBlockedError, InngestError, STTConnectionError, STTError, STTLanguageNotSupportedError, STTStreamError, TTSConnectionError, TTSError, TTSStreamError, TTSVoiceNotFoundError, TelephonyError, TurnTransitionError, VoiceKitError };
2
261
  //# sourceMappingURL=index.js.map
3
262
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
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.js","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/memory.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { CallMemoryConfig, CallMemory } from './index.cjs';
1
+ import { C as CallMemoryConfig, a as CallMemory } from './index-D3KfRXMP.cjs';
2
2
  import 'ai';
3
3
 
4
4
  /**
package/dist/memory.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { CallMemoryConfig, CallMemory } from './index.js';
1
+ import { C as CallMemoryConfig, a as CallMemory } from './index-D3KfRXMP.js';
2
2
  import 'ai';
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { CallMetricsSummary } from './index.cjs';
1
+ import { d as CallMetricsSummary } from './index-D3KfRXMP.cjs';
2
2
  import 'ai';
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { CallMetricsSummary } from './index.js';
1
+ import { d as CallMetricsSummary } from './index-D3KfRXMP.js';
2
2
  import 'ai';
3
3
 
4
4
  /**
package/dist/stt.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { STTProvider, STTConfig, STTResult } from './index.cjs';
1
+ import { S as STTProvider, h as STTConfig, i as STTResult } from './index-D3KfRXMP.cjs';
2
2
  import { EventEmitter } from 'node:events';
3
3
  import 'ai';
4
4
 
package/dist/stt.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { STTProvider, STTConfig, STTResult } from './index.js';
1
+ import { S as STTProvider, h as STTConfig, i as STTResult } from './index-D3KfRXMP.js';
2
2
  import { EventEmitter } from 'node:events';
3
3
  import 'ai';
4
4
 
@@ -0,0 +1,80 @@
1
+ import { E as ErrorSeverity } from './index-D3KfRXMP.cjs';
2
+
3
+ /**
4
+ * @voice-kit/core — Typed error hierarchy
5
+ *
6
+ * All VoiceKit errors extend VoiceKitError. Never throw raw Error.
7
+ * Every error carries: code, message, provider, callId, retryable, severity.
8
+ */
9
+
10
+ /**
11
+ * Base class for all VoiceKit errors. Provides structured context for
12
+ * logging, alerting, and programmatic error handling.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * try {
17
+ * await stt.transcribeBatch(audio)
18
+ * } catch (err) {
19
+ * if (err instanceof STTError) {
20
+ * console.error(err.code, err.provider, err.retryable)
21
+ * }
22
+ * }
23
+ * ```
24
+ */
25
+ declare class VoiceKitError extends Error {
26
+ readonly code: string;
27
+ readonly callId?: string;
28
+ readonly provider?: string;
29
+ readonly retryable: boolean;
30
+ readonly severity: ErrorSeverity;
31
+ readonly cause?: unknown;
32
+ constructor(params: {
33
+ code: string;
34
+ message: string;
35
+ callId?: string;
36
+ provider?: string;
37
+ retryable?: boolean;
38
+ severity?: ErrorSeverity;
39
+ cause?: unknown;
40
+ });
41
+ toJSON(): {
42
+ name: string;
43
+ code: string;
44
+ message: string;
45
+ callId: string | undefined;
46
+ provider: string | undefined;
47
+ retryable: boolean;
48
+ severity: ErrorSeverity;
49
+ };
50
+ }
51
+
52
+ /**
53
+ * Errors from telephony providers.
54
+ */
55
+ declare class TelephonyError extends VoiceKitError {
56
+ readonly to?: string;
57
+ readonly from?: string;
58
+ constructor(params: {
59
+ code: string;
60
+ message: string;
61
+ callId?: string;
62
+ provider?: string;
63
+ retryable?: boolean;
64
+ severity?: ErrorSeverity;
65
+ cause?: unknown;
66
+ to?: string;
67
+ from?: string;
68
+ });
69
+ }
70
+ declare class CallConnectionError extends TelephonyError {
71
+ constructor(provider: string, to: string, cause?: unknown);
72
+ }
73
+ declare class CallNotFoundError extends TelephonyError {
74
+ constructor(callId: string, provider: string);
75
+ }
76
+ declare class AudioTransportError extends TelephonyError {
77
+ constructor(provider: string, cause?: unknown, callId?: string);
78
+ }
79
+
80
+ export { AudioTransportError as A, CallConnectionError as C, TelephonyError as T, VoiceKitError as V, CallNotFoundError as a };
@@ -0,0 +1,80 @@
1
+ import { E as ErrorSeverity } from './index-D3KfRXMP.js';
2
+
3
+ /**
4
+ * @voice-kit/core — Typed error hierarchy
5
+ *
6
+ * All VoiceKit errors extend VoiceKitError. Never throw raw Error.
7
+ * Every error carries: code, message, provider, callId, retryable, severity.
8
+ */
9
+
10
+ /**
11
+ * Base class for all VoiceKit errors. Provides structured context for
12
+ * logging, alerting, and programmatic error handling.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * try {
17
+ * await stt.transcribeBatch(audio)
18
+ * } catch (err) {
19
+ * if (err instanceof STTError) {
20
+ * console.error(err.code, err.provider, err.retryable)
21
+ * }
22
+ * }
23
+ * ```
24
+ */
25
+ declare class VoiceKitError extends Error {
26
+ readonly code: string;
27
+ readonly callId?: string;
28
+ readonly provider?: string;
29
+ readonly retryable: boolean;
30
+ readonly severity: ErrorSeverity;
31
+ readonly cause?: unknown;
32
+ constructor(params: {
33
+ code: string;
34
+ message: string;
35
+ callId?: string;
36
+ provider?: string;
37
+ retryable?: boolean;
38
+ severity?: ErrorSeverity;
39
+ cause?: unknown;
40
+ });
41
+ toJSON(): {
42
+ name: string;
43
+ code: string;
44
+ message: string;
45
+ callId: string | undefined;
46
+ provider: string | undefined;
47
+ retryable: boolean;
48
+ severity: ErrorSeverity;
49
+ };
50
+ }
51
+
52
+ /**
53
+ * Errors from telephony providers.
54
+ */
55
+ declare class TelephonyError extends VoiceKitError {
56
+ readonly to?: string;
57
+ readonly from?: string;
58
+ constructor(params: {
59
+ code: string;
60
+ message: string;
61
+ callId?: string;
62
+ provider?: string;
63
+ retryable?: boolean;
64
+ severity?: ErrorSeverity;
65
+ cause?: unknown;
66
+ to?: string;
67
+ from?: string;
68
+ });
69
+ }
70
+ declare class CallConnectionError extends TelephonyError {
71
+ constructor(provider: string, to: string, cause?: unknown);
72
+ }
73
+ declare class CallNotFoundError extends TelephonyError {
74
+ constructor(callId: string, provider: string);
75
+ }
76
+ declare class AudioTransportError extends TelephonyError {
77
+ constructor(provider: string, cause?: unknown, callId?: string);
78
+ }
79
+
80
+ export { AudioTransportError as A, CallConnectionError as C, TelephonyError as T, VoiceKitError as V, CallNotFoundError as a };
package/dist/tts.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { TTSProvider, TTSConfig } from './index.cjs';
1
+ import { e as TTSProvider, f as TTSConfig } from './index-D3KfRXMP.cjs';
2
2
  import 'ai';
3
3
 
4
4
  /**
package/dist/tts.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { TTSProvider, TTSConfig } from './index.js';
1
+ import { e as TTSProvider, f as TTSConfig } from './index-D3KfRXMP.js';
2
2
  import 'ai';
3
3
 
4
4
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voice-kit/core",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Core STT, TTS, audio, codecs, VAD, transports for @voice-kit",
5
5
  "type": "module",
6
6
  "author": {
@@ -8,12 +8,20 @@
8
8
  },
9
9
  "packageManager": "bun@1.3.10",
10
10
  "license": "MIT",
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
11
14
  "exports": {
12
15
  ".": {
13
16
  "types": "./dist/index.d.ts",
14
17
  "import": "./dist/index.js",
15
18
  "require": "./dist/index.cjs"
16
19
  },
20
+ "./audio": {
21
+ "types": "./dist/audio/index.d.ts",
22
+ "import": "./dist/audio/index.js",
23
+ "require": "./dist/audio/index.cjs"
24
+ },
17
25
  "./compliance": {
18
26
  "types": "./dist/compliance/index.d.ts",
19
27
  "import": "./dist/compliance/index.js",