dvgateway-sdk 1.4.3 → 1.4.5

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/client.d.ts CHANGED
@@ -22,6 +22,7 @@
22
22
  import { type AudioStreamHandle, type PipelineType } from './streams/audio-stream.js';
23
23
  import { PipelineBuilder } from './pipeline/builder.js';
24
24
  import { PipelineMetrics } from './observability/metrics.js';
25
+ import { type SimulateOptions, type SimulatedCall } from './simulator/simulator.js';
25
26
  import type { DVGatewayOptions, CallSession, CallEvent, TTSCompleteEvent, TranscriptResult, StreamDir, TtsAdapter, Unsubscribe } from './types/index.js';
26
27
  export declare class DVGatewayClient {
27
28
  private readonly auth;
@@ -48,6 +49,51 @@ export declare class DVGatewayClient {
48
49
  * ```
49
50
  */
50
51
  pipeline(): PipelineBuilder;
52
+ /**
53
+ * Simulate an inbound call from a local audio file — no gateway, no
54
+ * PBX, no phone number required. The existing pipeline runs unchanged
55
+ * (same `pipeline().stt().llm().tts().start()`) and the simulator
56
+ * acts as a loopback gateway: it fires a synthetic `call:new` event,
57
+ * streams the audio file frame-by-frame into the pipeline, captures
58
+ * the bot's injected TTS reply into an in-memory buffer, then fires
59
+ * `call:ended` after a grace period.
60
+ *
61
+ * This is the recommended way to:
62
+ * - run SDK examples in the docs "Try it" widgets,
63
+ * - write unit tests for voice-bot logic,
64
+ * - onboard developers before their gateway and DID are provisioned.
65
+ *
66
+ * The audio file must be 16 kHz mono 16-bit PCM — either a WAV or a
67
+ * raw slin16 capture. Convert arbitrary assets with:
68
+ *
69
+ * `ffmpeg -i input.mp3 -ar 16000 -ac 1 -sample_fmt s16 caller.wav`
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * const gw = new DVGatewayClient({
74
+ * baseUrl: 'http://localhost:8080',
75
+ * auth: { type: 'apiKey', apiKey: 'simulation' },
76
+ * });
77
+ *
78
+ * // Start the pipeline (non-awaited — runs until gw.close()).
79
+ * void gw.pipeline().stt(stt).llm(llm).tts(tts).start();
80
+ *
81
+ * // Drive a fake call.
82
+ * const call = await gw.simulate({
83
+ * audioFile: './samples/customer-inquiry.wav',
84
+ * caller: '+82-10-1234-5678',
85
+ * });
86
+ * await call.waitForEnd();
87
+ * await call.saveTts('./samples/bot-reply.wav');
88
+ *
89
+ * gw.close();
90
+ * ```
91
+ *
92
+ * @param opts Simulation parameters — audio file path is required.
93
+ * @returns A handle exposing `waitForEnd()`, `saveTts(path)`,
94
+ * `capturedTtsBytes()`, and `stop()`.
95
+ */
96
+ simulate(opts: SimulateOptions): Promise<SimulatedCall>;
51
97
  /**
52
98
  * Subscribe to real-time audio from a call.
53
99
  * Returns an AsyncIterable that yields AudioChunk (Float32, 16kHz).
@@ -208,15 +254,99 @@ export declare class DVGatewayClient {
208
254
  number?: string;
209
255
  applyChanges?: boolean;
210
256
  }): Promise<unknown>;
211
- /** Get early media config for an extension */
257
+ /**
258
+ * Reserved "extension" value that addresses the tenant-wide **default**
259
+ * Early Media profile. Passing this to `getEarlyMedia` / `setEarlyMedia`
260
+ * reads or writes the fallback profile that the dialplan plays when a
261
+ * DID has no explicit per-DID configuration.
262
+ *
263
+ * Dialplan fallback order:
264
+ * 1. Per-DID profile (`earlymedia/{DID}/enabled == "yes"`)
265
+ * 2. This default profile (`earlymedia/_default/enabled == "yes"`)
266
+ * 3. Skip Early Media entirely
267
+ *
268
+ * The leading underscore guarantees no collision with real phone numbers
269
+ * (digits only by convention). Backend stores to:
270
+ * - AstDB: `/{tenantId}/earlymedia/_default/{enabled,source,tts_*,audio_url}`
271
+ * - File: `/var/spool/asterisk/{tenantId}/pa/_default/pamsg.wav`
272
+ *
273
+ * @see DVGatewayClient.setEarlyMediaDefault, DVGatewayClient.getEarlyMediaDefault
274
+ */
275
+ static readonly EARLY_MEDIA_DEFAULT_EXT = "_default";
276
+ /**
277
+ * Get Early Media config for an extension.
278
+ *
279
+ * Pass the phone number (digits only) for per-DID config, or the special
280
+ * string `"_default"` — exposed as
281
+ * `DVGatewayClient.EARLY_MEDIA_DEFAULT_EXT` — to read the tenant-wide
282
+ * fallback profile. The returned object has the same shape either way:
283
+ * `{enabled, source, audioUrl, ttsText, ttsProvider, ttsVoice, localPath,
284
+ * fileExists}`. Fields that are not configured return empty strings;
285
+ * `fileExists` reflects whether the converted WAV is on disk.
286
+ *
287
+ * @example per-DID lookup
288
+ * ```typescript
289
+ * const cfg = await gw.getEarlyMedia('07045144801');
290
+ * console.log(cfg.enabled, cfg.source, cfg.ttsText);
291
+ * ```
292
+ *
293
+ * @example tenant-wide default
294
+ * ```typescript
295
+ * const def = await gw.getEarlyMedia(DVGatewayClient.EARLY_MEDIA_DEFAULT_EXT);
296
+ * // equivalent to: gw.getEarlyMediaDefault()
297
+ * ```
298
+ */
212
299
  getEarlyMedia(extension: string, tenantId?: string): Promise<unknown>;
213
- /** Set early media config for an extension.
300
+ /**
301
+ * Set Early Media config for an extension.
214
302
  *
215
- * Two source modes (mutually exclusive):
216
- * - audioUrl: download remote file and convert to Asterisk-compatible WAV
217
- * - tts: synthesize text via cloud TTS provider (uses dashboard tenant API keys)
303
+ * Two source modes (mutually exclusive within one call):
304
+ * - `audioUrl`: gateway downloads the remote file and converts it once
305
+ * to an 8 kHz mono WAV via FFmpeg. The file is NOT re-downloaded on
306
+ * every call — so changing the upstream URL requires re-invoking this
307
+ * method.
308
+ * - `tts`: gateway invokes the tenant's primary Cloud TTS provider
309
+ * (resolved from the dashboard API-keys config) and saves the
310
+ * synthesized PCM as an 8 kHz WAV. `provider` / `voice` overrides
311
+ * are optional.
218
312
  *
219
- * Both modes save to the same path (pamsg.wav). */
313
+ * Both modes target the same on-disk path:
314
+ * `/var/spool/asterisk/{tenantId}/pa/{extension}/pamsg.wav`
315
+ *
316
+ * Passing `extension = "_default"` (or
317
+ * `DVGatewayClient.EARLY_MEDIA_DEFAULT_EXT`) writes the tenant-wide
318
+ * default profile. The dialplan `[dvgateway-pa-noa]` context falls back
319
+ * to this profile whenever an incoming DID has no explicit per-DID
320
+ * configuration, so one default greeting automatically applies to every
321
+ * unconfigured line.
322
+ *
323
+ * To disable a profile without deleting its data, send
324
+ * `{enabled: "no"}`. To regenerate a TTS asset after changing voice,
325
+ * re-send the full `tts` object.
326
+ *
327
+ * @example TTS default that every inbound call hears
328
+ * ```typescript
329
+ * await gw.setEarlyMedia(
330
+ * DVGatewayClient.EARLY_MEDIA_DEFAULT_EXT,
331
+ * {
332
+ * enabled: 'yes',
333
+ * tts: {
334
+ * text: '안녕하세요, 잠시만 기다려 주세요.',
335
+ * provider: 'openai', // optional
336
+ * voice: 'nova', // optional
337
+ * },
338
+ * },
339
+ * );
340
+ * ```
341
+ *
342
+ * @example Per-DID override that wins over the default
343
+ * ```typescript
344
+ * await gw.setEarlyMedia('07045144801', {
345
+ * enabled: 'yes',
346
+ * audioUrl: 'https://cdn.example.com/vip-greeting.mp3',
347
+ * });
348
+ * ```
349
+ */
220
350
  setEarlyMedia(extension: string, params: {
221
351
  enabled?: string;
222
352
  audioUrl?: string;
@@ -226,6 +356,38 @@ export declare class DVGatewayClient {
226
356
  voice?: string;
227
357
  };
228
358
  }, tenantId?: string): Promise<unknown>;
359
+ /**
360
+ * Convenience wrapper around `getEarlyMedia` that always targets the
361
+ * tenant-wide default profile. Equivalent to
362
+ * `getEarlyMedia(DVGatewayClient.EARLY_MEDIA_DEFAULT_EXT, tenantId)`.
363
+ */
364
+ getEarlyMediaDefault(tenantId?: string): Promise<unknown>;
365
+ /**
366
+ * Convenience wrapper around `setEarlyMedia` that always targets the
367
+ * tenant-wide default profile. Equivalent to
368
+ * `setEarlyMedia(DVGatewayClient.EARLY_MEDIA_DEFAULT_EXT, params, tenantId)`.
369
+ *
370
+ * @example
371
+ * ```typescript
372
+ * // One default greeting for every unconfigured DID
373
+ * await gw.setEarlyMediaDefault({
374
+ * enabled: 'yes',
375
+ * tts: { text: '고객센터 상담원 연결 중입니다.' },
376
+ * });
377
+ *
378
+ * // Disable the default (per-DID entries are unaffected)
379
+ * await gw.setEarlyMediaDefault({ enabled: 'no' });
380
+ * ```
381
+ */
382
+ setEarlyMediaDefault(params: {
383
+ enabled?: string;
384
+ audioUrl?: string;
385
+ tts?: {
386
+ text: string;
387
+ provider?: string;
388
+ voice?: string;
389
+ };
390
+ }, tenantId?: string): Promise<unknown>;
229
391
  /** List all campaigns */
230
392
  listCampaigns(): Promise<unknown>;
231
393
  /** Create a new campaign (scheduled, bulk, or recurring) */
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -30,6 +30,7 @@ import { MinutesManager } from './minutes/manager.js';
30
30
  import { PipelineBuilder } from './pipeline/builder.js';
31
31
  import { PipelineMetrics } from './observability/metrics.js';
32
32
  import { createLogger } from './observability/logger.js';
33
+ import { createSimulatedCall, } from './simulator/simulator.js';
33
34
  export class DVGatewayClient {
34
35
  auth;
35
36
  wsPool;
@@ -70,6 +71,54 @@ export class DVGatewayClient {
70
71
  pipeline() {
71
72
  return new PipelineBuilder(this.wsPool, this.callEvents, this.ttsInjector, this.logger);
72
73
  }
74
+ // ─── Simulation (no gateway / no phone required) ────────────────────────
75
+ /**
76
+ * Simulate an inbound call from a local audio file — no gateway, no
77
+ * PBX, no phone number required. The existing pipeline runs unchanged
78
+ * (same `pipeline().stt().llm().tts().start()`) and the simulator
79
+ * acts as a loopback gateway: it fires a synthetic `call:new` event,
80
+ * streams the audio file frame-by-frame into the pipeline, captures
81
+ * the bot's injected TTS reply into an in-memory buffer, then fires
82
+ * `call:ended` after a grace period.
83
+ *
84
+ * This is the recommended way to:
85
+ * - run SDK examples in the docs "Try it" widgets,
86
+ * - write unit tests for voice-bot logic,
87
+ * - onboard developers before their gateway and DID are provisioned.
88
+ *
89
+ * The audio file must be 16 kHz mono 16-bit PCM — either a WAV or a
90
+ * raw slin16 capture. Convert arbitrary assets with:
91
+ *
92
+ * `ffmpeg -i input.mp3 -ar 16000 -ac 1 -sample_fmt s16 caller.wav`
93
+ *
94
+ * @example
95
+ * ```typescript
96
+ * const gw = new DVGatewayClient({
97
+ * baseUrl: 'http://localhost:8080',
98
+ * auth: { type: 'apiKey', apiKey: 'simulation' },
99
+ * });
100
+ *
101
+ * // Start the pipeline (non-awaited — runs until gw.close()).
102
+ * void gw.pipeline().stt(stt).llm(llm).tts(tts).start();
103
+ *
104
+ * // Drive a fake call.
105
+ * const call = await gw.simulate({
106
+ * audioFile: './samples/customer-inquiry.wav',
107
+ * caller: '+82-10-1234-5678',
108
+ * });
109
+ * await call.waitForEnd();
110
+ * await call.saveTts('./samples/bot-reply.wav');
111
+ *
112
+ * gw.close();
113
+ * ```
114
+ *
115
+ * @param opts Simulation parameters — audio file path is required.
116
+ * @returns A handle exposing `waitForEnd()`, `saveTts(path)`,
117
+ * `capturedTtsBytes()`, and `stop()`.
118
+ */
119
+ async simulate(opts) {
120
+ return createSimulatedCall({ wsPool: this.wsPool, logger: this.logger }, opts);
121
+ }
73
122
  // ─── Mid-Level: Audio Streaming ─────────────────────────────────────────
74
123
  /**
75
124
  * Subscribe to real-time audio from a call.
@@ -276,24 +325,136 @@ export class DVGatewayClient {
276
325
  return res.data;
277
326
  }
278
327
  // ─── Early Media ────────────────────────────────────────────────────
279
- /** Get early media config for an extension */
328
+ /**
329
+ * Reserved "extension" value that addresses the tenant-wide **default**
330
+ * Early Media profile. Passing this to `getEarlyMedia` / `setEarlyMedia`
331
+ * reads or writes the fallback profile that the dialplan plays when a
332
+ * DID has no explicit per-DID configuration.
333
+ *
334
+ * Dialplan fallback order:
335
+ * 1. Per-DID profile (`earlymedia/{DID}/enabled == "yes"`)
336
+ * 2. This default profile (`earlymedia/_default/enabled == "yes"`)
337
+ * 3. Skip Early Media entirely
338
+ *
339
+ * The leading underscore guarantees no collision with real phone numbers
340
+ * (digits only by convention). Backend stores to:
341
+ * - AstDB: `/{tenantId}/earlymedia/_default/{enabled,source,tts_*,audio_url}`
342
+ * - File: `/var/spool/asterisk/{tenantId}/pa/_default/pamsg.wav`
343
+ *
344
+ * @see DVGatewayClient.setEarlyMediaDefault, DVGatewayClient.getEarlyMediaDefault
345
+ */
346
+ static EARLY_MEDIA_DEFAULT_EXT = '_default';
347
+ /**
348
+ * Get Early Media config for an extension.
349
+ *
350
+ * Pass the phone number (digits only) for per-DID config, or the special
351
+ * string `"_default"` — exposed as
352
+ * `DVGatewayClient.EARLY_MEDIA_DEFAULT_EXT` — to read the tenant-wide
353
+ * fallback profile. The returned object has the same shape either way:
354
+ * `{enabled, source, audioUrl, ttsText, ttsProvider, ttsVoice, localPath,
355
+ * fileExists}`. Fields that are not configured return empty strings;
356
+ * `fileExists` reflects whether the converted WAV is on disk.
357
+ *
358
+ * @example per-DID lookup
359
+ * ```typescript
360
+ * const cfg = await gw.getEarlyMedia('07045144801');
361
+ * console.log(cfg.enabled, cfg.source, cfg.ttsText);
362
+ * ```
363
+ *
364
+ * @example tenant-wide default
365
+ * ```typescript
366
+ * const def = await gw.getEarlyMedia(DVGatewayClient.EARLY_MEDIA_DEFAULT_EXT);
367
+ * // equivalent to: gw.getEarlyMediaDefault()
368
+ * ```
369
+ */
280
370
  async getEarlyMedia(extension, tenantId) {
281
371
  const query = tenantId ? `?tenantId=${encodeURIComponent(tenantId)}` : '';
282
372
  const res = await this.http.get(`/api/v1/earlymedia/${encodeURIComponent(extension)}${query}`);
283
373
  return res.data;
284
374
  }
285
- /** Set early media config for an extension.
375
+ /**
376
+ * Set Early Media config for an extension.
377
+ *
378
+ * Two source modes (mutually exclusive within one call):
379
+ * - `audioUrl`: gateway downloads the remote file and converts it once
380
+ * to an 8 kHz mono WAV via FFmpeg. The file is NOT re-downloaded on
381
+ * every call — so changing the upstream URL requires re-invoking this
382
+ * method.
383
+ * - `tts`: gateway invokes the tenant's primary Cloud TTS provider
384
+ * (resolved from the dashboard API-keys config) and saves the
385
+ * synthesized PCM as an 8 kHz WAV. `provider` / `voice` overrides
386
+ * are optional.
387
+ *
388
+ * Both modes target the same on-disk path:
389
+ * `/var/spool/asterisk/{tenantId}/pa/{extension}/pamsg.wav`
390
+ *
391
+ * Passing `extension = "_default"` (or
392
+ * `DVGatewayClient.EARLY_MEDIA_DEFAULT_EXT`) writes the tenant-wide
393
+ * default profile. The dialplan `[dvgateway-pa-noa]` context falls back
394
+ * to this profile whenever an incoming DID has no explicit per-DID
395
+ * configuration, so one default greeting automatically applies to every
396
+ * unconfigured line.
286
397
  *
287
- * Two source modes (mutually exclusive):
288
- * - audioUrl: download remote file and convert to Asterisk-compatible WAV
289
- * - tts: synthesize text via cloud TTS provider (uses dashboard tenant API keys)
398
+ * To disable a profile without deleting its data, send
399
+ * `{enabled: "no"}`. To regenerate a TTS asset after changing voice,
400
+ * re-send the full `tts` object.
290
401
  *
291
- * Both modes save to the same path (pamsg.wav). */
402
+ * @example TTS default that every inbound call hears
403
+ * ```typescript
404
+ * await gw.setEarlyMedia(
405
+ * DVGatewayClient.EARLY_MEDIA_DEFAULT_EXT,
406
+ * {
407
+ * enabled: 'yes',
408
+ * tts: {
409
+ * text: '안녕하세요, 잠시만 기다려 주세요.',
410
+ * provider: 'openai', // optional
411
+ * voice: 'nova', // optional
412
+ * },
413
+ * },
414
+ * );
415
+ * ```
416
+ *
417
+ * @example Per-DID override that wins over the default
418
+ * ```typescript
419
+ * await gw.setEarlyMedia('07045144801', {
420
+ * enabled: 'yes',
421
+ * audioUrl: 'https://cdn.example.com/vip-greeting.mp3',
422
+ * });
423
+ * ```
424
+ */
292
425
  async setEarlyMedia(extension, params, tenantId) {
293
426
  const query = tenantId ? `?tenantId=${encodeURIComponent(tenantId)}` : '';
294
427
  const res = await this.http.put(`/api/v1/earlymedia/${encodeURIComponent(extension)}${query}`, params);
295
428
  return res.data;
296
429
  }
430
+ /**
431
+ * Convenience wrapper around `getEarlyMedia` that always targets the
432
+ * tenant-wide default profile. Equivalent to
433
+ * `getEarlyMedia(DVGatewayClient.EARLY_MEDIA_DEFAULT_EXT, tenantId)`.
434
+ */
435
+ async getEarlyMediaDefault(tenantId) {
436
+ return this.getEarlyMedia(DVGatewayClient.EARLY_MEDIA_DEFAULT_EXT, tenantId);
437
+ }
438
+ /**
439
+ * Convenience wrapper around `setEarlyMedia` that always targets the
440
+ * tenant-wide default profile. Equivalent to
441
+ * `setEarlyMedia(DVGatewayClient.EARLY_MEDIA_DEFAULT_EXT, params, tenantId)`.
442
+ *
443
+ * @example
444
+ * ```typescript
445
+ * // One default greeting for every unconfigured DID
446
+ * await gw.setEarlyMediaDefault({
447
+ * enabled: 'yes',
448
+ * tts: { text: '고객센터 상담원 연결 중입니다.' },
449
+ * });
450
+ *
451
+ * // Disable the default (per-DID entries are unaffected)
452
+ * await gw.setEarlyMediaDefault({ enabled: 'no' });
453
+ * ```
454
+ */
455
+ async setEarlyMediaDefault(params, tenantId) {
456
+ return this.setEarlyMedia(DVGatewayClient.EARLY_MEDIA_DEFAULT_EXT, params, tenantId);
457
+ }
297
458
  // ─── Outbound Campaigns ─────────────────────────────────────────────
298
459
  /** List all campaigns */
299
460
  async listCampaigns() {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -29,6 +29,7 @@
29
29
  */
30
30
  export { DVGatewayClient } from './client.js';
31
31
  export type { PipelineType, AudioStreamOptions } from './streams/audio-stream.js';
32
+ export type { SimulateOptions, SimulatedCall } from './simulator/simulator.js';
32
33
  export type { ApiKeyAuth, JwtAuth, Auth, DVGatewayOptions, ReconnectOptions, SecurityOptions, MtlsOptions, CallSession, ConferenceSession, ConferenceParticipant, StreamDir, CallEvent, CallNewEvent, CallEndedEvent, ConfJoinEvent, ConfLeaveEvent, ConfEndedEvent, TTSCompleteEvent, CallEventType, AudioChunk, RawAudioChunk, SttAdapter, TtsAdapter, LlmAdapter, TranscriptResult, TranscriptWord, SentimentResult, TtsOptions, VoiceInfo, HumanVoiceOptions, SttOptions, Message, LlmOptions, PipelineOptions, PipelineEventHandlers, HookContext, BeforeChatHook, AfterChatHook, HistoryOptions, PipelineConfig, MinutesDownloadOptions, Logger, Unsubscribe, Result, } from './types/index.js';
33
34
  export { HUMAN_VOICE_DEFAULTS_KO, HUMAN_VOICE_DEFAULTS_EN, } from './types/index.js';
34
35
  export { slin16ToFloat32, float32ToSlin16, ulawToSlin16, slin16ToUlaw, resample, calculateRms, detectVoiceActivity, } from './audio/codec.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGlF,YAAY,EAEV,UAAU,EACV,OAAO,EACP,IAAI,EAGJ,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,WAAW,EAGX,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,SAAS,EAGT,SAAS,EACT,YAAY,EACZ,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,aAAa,EAGb,UAAU,EACV,aAAa,EAGb,UAAU,EACV,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,OAAO,EACP,UAAU,EAGV,eAAe,EACf,qBAAqB,EAGrB,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,EAGd,sBAAsB,EAGtB,MAAM,EAGN,WAAW,EACX,MAAM,GACP,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAGxE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGlF,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG/E,YAAY,EAEV,UAAU,EACV,OAAO,EACP,IAAI,EAGJ,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,WAAW,EAGX,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,SAAS,EAGT,SAAS,EACT,YAAY,EACZ,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,aAAa,EAGb,UAAU,EACV,aAAa,EAGb,UAAU,EACV,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,OAAO,EACP,UAAU,EAGV,eAAe,EACf,qBAAqB,EAGrB,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,EAGd,sBAAsB,EAGtB,MAAM,EAGN,WAAW,EACX,MAAM,GACP,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAGxE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,cAAc;AACd,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA0E9C,sBAAsB;AACtB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAE1B,qDAAqD;AACrD,OAAO,EACL,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,iBAAiB;AACjB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAExE,UAAU;AACV,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,cAAc;AACd,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA6E9C,sBAAsB;AACtB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAE1B,qDAAqD;AACrD,OAAO,EACL,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,iBAAiB;AACjB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAExE,UAAU;AACV,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,71 @@
1
+ import type { WsPool } from '../transport/ws-pool.js';
2
+ import type { CallSession, Logger } from '../types/index.js';
3
+ import { SIMULATOR_SAMPLE_RATE } from './wav.js';
4
+ /** Options passed to `DVGatewayClient.simulate()`. */
5
+ export interface SimulateOptions {
6
+ /**
7
+ * Path to the caller's audio. Accepts:
8
+ * - 16 kHz mono 16-bit PCM WAV (standard), or
9
+ * - raw slin16 PCM (no header).
10
+ *
11
+ * Convert arbitrary sources with:
12
+ * `ffmpeg -i input.mp3 -ar 16000 -ac 1 -sample_fmt s16 caller.wav`
13
+ */
14
+ readonly audioFile: string;
15
+ /** Unique call identifier. Auto-generated if omitted. */
16
+ readonly linkedId?: string;
17
+ /** Synthetic CallerID number shown to the pipeline. */
18
+ readonly caller?: string;
19
+ /** Synthetic CallerID name. */
20
+ readonly callerName?: string;
21
+ /** Dialled extension shown to the pipeline. */
22
+ readonly callee?: string;
23
+ /** DID main number. */
24
+ readonly did?: string;
25
+ /** Tenant identifier — propagated into the synthetic call:new event. */
26
+ readonly tenantId?: string;
27
+ /**
28
+ * Pace playback at 20 ms/frame (default, mimics a real call). Set to
29
+ * `false` to flush all frames as fast as possible — useful in CI
30
+ * where wall-clock time matters more than fidelity.
31
+ */
32
+ readonly realtime?: boolean;
33
+ /**
34
+ * Delay between end-of-caller-audio and the synthetic `call:ended`
35
+ * event. Gives the pipeline time to finish its last TTS response
36
+ * before the call is "hung up". Default: 5 seconds.
37
+ */
38
+ readonly hangupDelayMs?: number;
39
+ /** Optional hook: invoked for every captured TTS frame. */
40
+ readonly onTts?: (chunk: Buffer) => void;
41
+ }
42
+ /**
43
+ * Handle returned from `simulate()`. Lets the caller wait for the
44
+ * simulated call to finish, retrieve the bot's spoken reply, or stop
45
+ * the simulation early.
46
+ */
47
+ export interface SimulatedCall {
48
+ readonly linkedId: string;
49
+ readonly session: CallSession;
50
+ /** Resolves once the caller audio has drained and the hangup fires. */
51
+ waitForEnd(): Promise<void>;
52
+ /** Terminate early — emits `call:ended` and releases routes. */
53
+ stop(): Promise<void>;
54
+ /** Return the concatenated captured-TTS PCM (slin16). */
55
+ capturedTtsBytes(): Buffer;
56
+ /** Write captured TTS as a 16 kHz mono WAV to disk. */
57
+ saveTts(outputPath: string): Promise<void>;
58
+ }
59
+ /** Construction context — not part of the public API. */
60
+ export interface SimulatorContext {
61
+ readonly wsPool: WsPool;
62
+ readonly logger: Logger;
63
+ }
64
+ /**
65
+ * Core factory — used by `DVGatewayClient.simulate()`. Returns a
66
+ * SimulatedCall that has already registered its WS routes; the pipeline
67
+ * will start pulling from them as soon as it subscribes.
68
+ */
69
+ export declare function createSimulatedCall(ctx: SimulatorContext, opts: SimulateOptions): Promise<SimulatedCall>;
70
+ export { SIMULATOR_SAMPLE_RATE };
71
+ //# sourceMappingURL=simulator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulator.d.ts","sourceRoot":"","sources":["../../src/simulator/simulator.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,MAAM,EAAmD,MAAM,yBAAyB,CAAC;AACvG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAkC,MAAM,UAAU,CAAC;AAMjF,sDAAsD;AACtD,MAAM,WAAW,eAAe;IAC9B;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,uDAAuD;IACvD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,+BAA+B;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,uEAAuE;IACvE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,gEAAgE;IAChE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,yDAAyD;IACzD,gBAAgB,IAAI,MAAM,CAAC;IAC3B,uDAAuD;IACvD,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAsBD;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,aAAa,CAAC,CA2ExB;AAkLD,OAAO,EAAE,qBAAqB,EAAE,CAAC"}