dvgateway-sdk 1.0.0
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/README.md +615 -0
- package/dist/audio/codec.d.ts +44 -0
- package/dist/audio/codec.d.ts.map +1 -0
- package/dist/audio/codec.js +136 -0
- package/dist/audio/codec.js.map +1 -0
- package/dist/audio/codec.test.d.ts +2 -0
- package/dist/audio/codec.test.d.ts.map +1 -0
- package/dist/audio/codec.test.js +155 -0
- package/dist/audio/codec.test.js.map +1 -0
- package/dist/auth/manager.d.ts +34 -0
- package/dist/auth/manager.d.ts.map +1 -0
- package/dist/auth/manager.js +122 -0
- package/dist/auth/manager.js.map +1 -0
- package/dist/auth/manager.test.d.ts +2 -0
- package/dist/auth/manager.test.d.ts.map +1 -0
- package/dist/auth/manager.test.js +147 -0
- package/dist/auth/manager.test.js.map +1 -0
- package/dist/client.d.ts +154 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +218 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/minutes/manager.d.ts +43 -0
- package/dist/minutes/manager.d.ts.map +1 -0
- package/dist/minutes/manager.js +71 -0
- package/dist/minutes/manager.js.map +1 -0
- package/dist/observability/logger.d.ts +19 -0
- package/dist/observability/logger.d.ts.map +1 -0
- package/dist/observability/logger.js +70 -0
- package/dist/observability/logger.js.map +1 -0
- package/dist/observability/metrics.d.ts +53 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/metrics.js +143 -0
- package/dist/observability/metrics.js.map +1 -0
- package/dist/observability/metrics.test.d.ts +2 -0
- package/dist/observability/metrics.test.d.ts.map +1 -0
- package/dist/observability/metrics.test.js +122 -0
- package/dist/observability/metrics.test.js.map +1 -0
- package/dist/pipeline/builder.d.ts +111 -0
- package/dist/pipeline/builder.d.ts.map +1 -0
- package/dist/pipeline/builder.js +323 -0
- package/dist/pipeline/builder.js.map +1 -0
- package/dist/session/manager.d.ts +21 -0
- package/dist/session/manager.d.ts.map +1 -0
- package/dist/session/manager.js +52 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/streams/audio-stream.d.ts +29 -0
- package/dist/streams/audio-stream.d.ts.map +1 -0
- package/dist/streams/audio-stream.js +118 -0
- package/dist/streams/audio-stream.js.map +1 -0
- package/dist/streams/call-events.d.ts +32 -0
- package/dist/streams/call-events.d.ts.map +1 -0
- package/dist/streams/call-events.js +140 -0
- package/dist/streams/call-events.js.map +1 -0
- package/dist/streams/tts-stream.d.ts +46 -0
- package/dist/streams/tts-stream.d.ts.map +1 -0
- package/dist/streams/tts-stream.js +102 -0
- package/dist/streams/tts-stream.js.map +1 -0
- package/dist/transport/http-client.d.ts +36 -0
- package/dist/transport/http-client.d.ts.map +1 -0
- package/dist/transport/http-client.js +102 -0
- package/dist/transport/http-client.js.map +1 -0
- package/dist/transport/http-client.test.d.ts +2 -0
- package/dist/transport/http-client.test.d.ts.map +1 -0
- package/dist/transport/http-client.test.js +172 -0
- package/dist/transport/http-client.test.js.map +1 -0
- package/dist/transport/ws-pool.d.ts +34 -0
- package/dist/transport/ws-pool.d.ts.map +1 -0
- package/dist/transport/ws-pool.js +123 -0
- package/dist/transport/ws-pool.js.map +1 -0
- package/dist/types/index.d.ts +378 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +25 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebSocket Connection Pool
|
|
3
|
+
*
|
|
4
|
+
* Manages WebSocket connections with:
|
|
5
|
+
* - Automatic reconnection (exponential backoff with jitter)
|
|
6
|
+
* - Active subscription restoration after reconnect
|
|
7
|
+
* - Proper cleanup on close
|
|
8
|
+
*/
|
|
9
|
+
import { EventEmitter } from 'events';
|
|
10
|
+
import type { ReconnectOptions, Logger } from '../types/index.js';
|
|
11
|
+
import type { AuthManager } from '../auth/manager.js';
|
|
12
|
+
export interface WsSubscription {
|
|
13
|
+
readonly id: string;
|
|
14
|
+
readonly path: string;
|
|
15
|
+
readonly params: Record<string, string>;
|
|
16
|
+
readonly onMessage: (data: Buffer) => void;
|
|
17
|
+
readonly onClose?: () => void;
|
|
18
|
+
}
|
|
19
|
+
export declare class WsPool extends EventEmitter {
|
|
20
|
+
private readonly auth;
|
|
21
|
+
private readonly reconnect;
|
|
22
|
+
private readonly logger;
|
|
23
|
+
private readonly connections;
|
|
24
|
+
constructor(auth: AuthManager, reconnect: ReconnectOptions, logger: Logger);
|
|
25
|
+
/** Open a managed WebSocket connection for a subscription */
|
|
26
|
+
subscribe(sub: WsSubscription): Promise<void>;
|
|
27
|
+
/** Close a specific subscription */
|
|
28
|
+
unsubscribe(id: string): void;
|
|
29
|
+
/** Close all connections */
|
|
30
|
+
closeAll(): void;
|
|
31
|
+
private connect;
|
|
32
|
+
private scheduleReconnect;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=ws-pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-pool.d.ts","sourceRoot":"","sources":["../../src/transport/ws-pool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B;AAUD,qBAAa,MAAO,SAAQ,YAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwC;gBAExD,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM;IAc1E,6DAA6D;IACvD,SAAS,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnD,oCAAoC;IACpC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAa7B,4BAA4B;IAC5B,QAAQ,IAAI,IAAI;YAMF,OAAO;IA+CrB,OAAO,CAAC,iBAAiB;CA+B1B"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebSocket Connection Pool
|
|
3
|
+
*
|
|
4
|
+
* Manages WebSocket connections with:
|
|
5
|
+
* - Automatic reconnection (exponential backoff with jitter)
|
|
6
|
+
* - Active subscription restoration after reconnect
|
|
7
|
+
* - Proper cleanup on close
|
|
8
|
+
*/
|
|
9
|
+
import { EventEmitter } from 'events';
|
|
10
|
+
import WebSocket from 'ws';
|
|
11
|
+
export class WsPool extends EventEmitter {
|
|
12
|
+
auth;
|
|
13
|
+
reconnect;
|
|
14
|
+
logger;
|
|
15
|
+
connections = new Map();
|
|
16
|
+
constructor(auth, reconnect, logger) {
|
|
17
|
+
super();
|
|
18
|
+
this.auth = auth;
|
|
19
|
+
this.logger = logger;
|
|
20
|
+
this.reconnect = {
|
|
21
|
+
maxAttempts: reconnect.maxAttempts ?? 10,
|
|
22
|
+
initialDelayMs: reconnect.initialDelayMs ?? 2000,
|
|
23
|
+
maxDelayMs: reconnect.maxDelayMs ?? 30_000,
|
|
24
|
+
backoffMultiplier: reconnect.backoffMultiplier ?? 2.0,
|
|
25
|
+
onReconnect: reconnect.onReconnect ?? (() => undefined),
|
|
26
|
+
onMaxAttemptsReached: reconnect.onMaxAttemptsReached ?? (() => undefined),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** Open a managed WebSocket connection for a subscription */
|
|
30
|
+
async subscribe(sub) {
|
|
31
|
+
const conn = {
|
|
32
|
+
ws: null,
|
|
33
|
+
subscription: sub,
|
|
34
|
+
reconnectAttempts: 0,
|
|
35
|
+
closed: false,
|
|
36
|
+
reconnectTimer: null,
|
|
37
|
+
};
|
|
38
|
+
this.connections.set(sub.id, conn);
|
|
39
|
+
await this.connect(conn);
|
|
40
|
+
}
|
|
41
|
+
/** Close a specific subscription */
|
|
42
|
+
unsubscribe(id) {
|
|
43
|
+
const conn = this.connections.get(id);
|
|
44
|
+
if (!conn)
|
|
45
|
+
return;
|
|
46
|
+
conn.closed = true;
|
|
47
|
+
if (conn.reconnectTimer)
|
|
48
|
+
clearTimeout(conn.reconnectTimer);
|
|
49
|
+
if (conn.ws) {
|
|
50
|
+
conn.ws.removeAllListeners();
|
|
51
|
+
conn.ws.close(1000, 'unsubscribed');
|
|
52
|
+
}
|
|
53
|
+
this.connections.delete(id);
|
|
54
|
+
this.logger.debug({ id }, 'WebSocket subscription closed');
|
|
55
|
+
}
|
|
56
|
+
/** Close all connections */
|
|
57
|
+
closeAll() {
|
|
58
|
+
for (const id of this.connections.keys()) {
|
|
59
|
+
this.unsubscribe(id);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async connect(conn) {
|
|
63
|
+
if (conn.closed)
|
|
64
|
+
return;
|
|
65
|
+
let url;
|
|
66
|
+
try {
|
|
67
|
+
url = await this.auth.buildWsUrl(conn.subscription.path, conn.subscription.params);
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
this.logger.error({ err, id: conn.subscription.id }, 'Failed to build WebSocket URL');
|
|
71
|
+
this.scheduleReconnect(conn);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
this.logger.debug({ id: conn.subscription.id, path: conn.subscription.path }, 'Opening WebSocket');
|
|
75
|
+
const ws = new WebSocket(url, {
|
|
76
|
+
handshakeTimeout: 10_000,
|
|
77
|
+
});
|
|
78
|
+
conn.ws = ws;
|
|
79
|
+
ws.on('open', () => {
|
|
80
|
+
conn.reconnectAttempts = 0;
|
|
81
|
+
this.logger.debug({ id: conn.subscription.id }, 'WebSocket connected');
|
|
82
|
+
this.emit('connected', conn.subscription.id);
|
|
83
|
+
});
|
|
84
|
+
ws.on('message', (data) => {
|
|
85
|
+
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
86
|
+
conn.subscription.onMessage(buf);
|
|
87
|
+
});
|
|
88
|
+
ws.on('close', (code, reason) => {
|
|
89
|
+
if (conn.closed)
|
|
90
|
+
return;
|
|
91
|
+
this.logger.warn({ id: conn.subscription.id, code, reason: reason.toString() }, 'WebSocket closed unexpectedly');
|
|
92
|
+
conn.subscription.onClose?.();
|
|
93
|
+
this.scheduleReconnect(conn);
|
|
94
|
+
});
|
|
95
|
+
ws.on('error', (err) => {
|
|
96
|
+
this.logger.error({ id: conn.subscription.id, err }, 'WebSocket error');
|
|
97
|
+
// 'error' always precedes 'close', so reconnect is handled in 'close' handler
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
scheduleReconnect(conn) {
|
|
101
|
+
if (conn.closed)
|
|
102
|
+
return;
|
|
103
|
+
if (conn.reconnectAttempts >= this.reconnect.maxAttempts) {
|
|
104
|
+
this.logger.error({ id: conn.subscription.id, attempts: conn.reconnectAttempts }, 'Max reconnect attempts reached');
|
|
105
|
+
this.reconnect.onMaxAttemptsReached();
|
|
106
|
+
this.emit('maxAttemptsReached', conn.subscription.id);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const jitter = Math.random() * 0.3; // ±30% jitter
|
|
110
|
+
const base = this.reconnect.initialDelayMs *
|
|
111
|
+
Math.pow(this.reconnect.backoffMultiplier, conn.reconnectAttempts);
|
|
112
|
+
const delay = Math.min(base * (1 + jitter), this.reconnect.maxDelayMs);
|
|
113
|
+
conn.reconnectAttempts++;
|
|
114
|
+
this.logger.info({ id: conn.subscription.id, attempt: conn.reconnectAttempts, delayMs: Math.round(delay) }, 'Scheduling WebSocket reconnect');
|
|
115
|
+
conn.reconnectTimer = setTimeout(() => {
|
|
116
|
+
conn.reconnectTimer = null;
|
|
117
|
+
this.reconnect.onReconnect(conn.reconnectAttempts);
|
|
118
|
+
this.emit('reconnecting', conn.subscription.id, conn.reconnectAttempts);
|
|
119
|
+
void this.connect(conn);
|
|
120
|
+
}, delay);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=ws-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-pool.js","sourceRoot":"","sources":["../../src/transport/ws-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DVGateway SDK — Public Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Core types for interacting with the DVGateway real-time voice media gateway.
|
|
5
|
+
* All adapters and pipeline components are built on these interfaces.
|
|
6
|
+
*/
|
|
7
|
+
export interface ApiKeyAuth {
|
|
8
|
+
readonly type: 'apiKey';
|
|
9
|
+
readonly apiKey: string;
|
|
10
|
+
}
|
|
11
|
+
export interface JwtAuth {
|
|
12
|
+
readonly type: 'jwt';
|
|
13
|
+
readonly token: string;
|
|
14
|
+
}
|
|
15
|
+
export type Auth = ApiKeyAuth | JwtAuth;
|
|
16
|
+
export interface ReconnectOptions {
|
|
17
|
+
/** Maximum number of reconnection attempts (default: 10) */
|
|
18
|
+
maxAttempts?: number;
|
|
19
|
+
/** Initial delay in ms (default: 2000) */
|
|
20
|
+
initialDelayMs?: number;
|
|
21
|
+
/** Maximum delay cap in ms (default: 30000) */
|
|
22
|
+
maxDelayMs?: number;
|
|
23
|
+
/** Backoff multiplier (default: 2.0) */
|
|
24
|
+
backoffMultiplier?: number;
|
|
25
|
+
/** Called on each successful reconnect */
|
|
26
|
+
onReconnect?: (attempt: number) => void;
|
|
27
|
+
/** Called when all attempts are exhausted */
|
|
28
|
+
onMaxAttemptsReached?: () => void;
|
|
29
|
+
}
|
|
30
|
+
export interface MtlsOptions {
|
|
31
|
+
cert: Buffer;
|
|
32
|
+
key: Buffer;
|
|
33
|
+
ca?: Buffer;
|
|
34
|
+
}
|
|
35
|
+
export interface SecurityOptions {
|
|
36
|
+
/** Automatically mask PII (phone numbers, names) in logs (default: true) */
|
|
37
|
+
maskPii?: boolean;
|
|
38
|
+
/** mTLS client certificate for enterprise environments */
|
|
39
|
+
mtls?: MtlsOptions;
|
|
40
|
+
/** Force TLS upgrade: ws:// → wss://, http:// → https:// (default: true) */
|
|
41
|
+
forceTls?: boolean;
|
|
42
|
+
}
|
|
43
|
+
export interface DVGatewayOptions {
|
|
44
|
+
/** Gateway server base URL (e.g. "https://gateway.example.com") */
|
|
45
|
+
readonly baseUrl: string;
|
|
46
|
+
/** Authentication credentials */
|
|
47
|
+
readonly auth: Auth;
|
|
48
|
+
/**
|
|
49
|
+
* Tenant identifier for multi-tenant deployments.
|
|
50
|
+
* When set, all API calls and event subscriptions are scoped to this tenant.
|
|
51
|
+
* Sent as X-Tenant-ID header on every request.
|
|
52
|
+
*/
|
|
53
|
+
tenantId?: string;
|
|
54
|
+
/** WebSocket/HTTP request timeout in ms (default: 30000) */
|
|
55
|
+
timeout?: number;
|
|
56
|
+
/** Reconnection strategy */
|
|
57
|
+
reconnect?: ReconnectOptions;
|
|
58
|
+
/** Security options */
|
|
59
|
+
security?: SecurityOptions;
|
|
60
|
+
/** Custom logger (defaults to structured JSON logger) */
|
|
61
|
+
logger?: Logger;
|
|
62
|
+
}
|
|
63
|
+
/** Audio direction for a call stream */
|
|
64
|
+
export type StreamDir = 'both' | 'in' | 'out';
|
|
65
|
+
/** A 1:1 call session */
|
|
66
|
+
export interface CallSession {
|
|
67
|
+
readonly linkedId: string;
|
|
68
|
+
readonly confId?: string | undefined;
|
|
69
|
+
readonly dir: StreamDir;
|
|
70
|
+
readonly caller?: string | undefined;
|
|
71
|
+
readonly callee?: string | undefined;
|
|
72
|
+
readonly startedAt: Date;
|
|
73
|
+
readonly streamUrl: string;
|
|
74
|
+
readonly tenantId?: string | undefined;
|
|
75
|
+
metadata?: Record<string, string> | undefined;
|
|
76
|
+
}
|
|
77
|
+
/** A conference (ConfBridge) session */
|
|
78
|
+
export interface ConferenceSession {
|
|
79
|
+
readonly confId: string;
|
|
80
|
+
readonly tenantId?: string;
|
|
81
|
+
readonly participants: ReadonlyArray<ConferenceParticipant>;
|
|
82
|
+
readonly startedAt: Date;
|
|
83
|
+
metadata?: Record<string, string>;
|
|
84
|
+
}
|
|
85
|
+
export interface ConferenceParticipant {
|
|
86
|
+
readonly linkedId: string;
|
|
87
|
+
readonly caller?: string;
|
|
88
|
+
readonly joinedAt: Date;
|
|
89
|
+
}
|
|
90
|
+
export interface CallNewEvent {
|
|
91
|
+
readonly type: 'call:new';
|
|
92
|
+
readonly session: CallSession;
|
|
93
|
+
readonly tenantId?: string | undefined;
|
|
94
|
+
readonly timestamp: Date;
|
|
95
|
+
}
|
|
96
|
+
export interface CallEndedEvent {
|
|
97
|
+
readonly type: 'call:ended';
|
|
98
|
+
readonly linkedId: string;
|
|
99
|
+
readonly durationSec: number;
|
|
100
|
+
readonly timestamp: Date;
|
|
101
|
+
}
|
|
102
|
+
export interface ConfJoinEvent {
|
|
103
|
+
readonly type: 'conf:join';
|
|
104
|
+
readonly linkedId: string;
|
|
105
|
+
readonly confId: string;
|
|
106
|
+
readonly caller?: string | undefined;
|
|
107
|
+
readonly timestamp: Date;
|
|
108
|
+
}
|
|
109
|
+
export interface ConfLeaveEvent {
|
|
110
|
+
readonly type: 'conf:leave';
|
|
111
|
+
readonly linkedId: string;
|
|
112
|
+
readonly confId: string;
|
|
113
|
+
readonly timestamp: Date;
|
|
114
|
+
}
|
|
115
|
+
export interface ConfEndedEvent {
|
|
116
|
+
readonly type: 'conf:ended';
|
|
117
|
+
readonly confId: string;
|
|
118
|
+
readonly timestamp: Date;
|
|
119
|
+
}
|
|
120
|
+
export type CallEvent = CallNewEvent | CallEndedEvent | ConfJoinEvent | ConfLeaveEvent | ConfEndedEvent;
|
|
121
|
+
export type CallEventType = CallEvent['type'];
|
|
122
|
+
/** Raw audio frame as received from the gateway (slin16 PCM) */
|
|
123
|
+
export interface RawAudioChunk {
|
|
124
|
+
readonly linkedId: string;
|
|
125
|
+
readonly dir: 'in' | 'out' | 'mixed';
|
|
126
|
+
/** Raw 16-bit little-endian PCM bytes (640 bytes = 20ms at 16kHz) */
|
|
127
|
+
readonly raw: Buffer;
|
|
128
|
+
readonly timestampMs: number;
|
|
129
|
+
}
|
|
130
|
+
/** Normalized audio frame for AI adapters */
|
|
131
|
+
export interface AudioChunk {
|
|
132
|
+
readonly linkedId: string;
|
|
133
|
+
readonly dir: 'in' | 'out' | 'mixed';
|
|
134
|
+
/** Normalized PCM samples in [-1.0, 1.0] */
|
|
135
|
+
readonly samples: Float32Array;
|
|
136
|
+
readonly sampleRate: 16000;
|
|
137
|
+
readonly durationMs: number;
|
|
138
|
+
readonly timestampMs: number;
|
|
139
|
+
}
|
|
140
|
+
/** Sentiment analysis result from STT provider */
|
|
141
|
+
export interface SentimentResult {
|
|
142
|
+
/** Segment-level sentiment: positive, neutral, or negative */
|
|
143
|
+
readonly sentiment: 'positive' | 'neutral' | 'negative';
|
|
144
|
+
/** Sentiment confidence score (0.0–1.0) */
|
|
145
|
+
readonly sentimentScore: number;
|
|
146
|
+
}
|
|
147
|
+
export interface TranscriptResult {
|
|
148
|
+
readonly linkedId: string;
|
|
149
|
+
readonly text: string;
|
|
150
|
+
readonly isFinal: boolean;
|
|
151
|
+
readonly speaker?: 'agent' | 'customer' | string;
|
|
152
|
+
readonly confidence?: number;
|
|
153
|
+
readonly language?: string;
|
|
154
|
+
readonly words?: TranscriptWord[];
|
|
155
|
+
readonly timestampMs: number;
|
|
156
|
+
/**
|
|
157
|
+
* Sentiment analysis result for this transcript segment.
|
|
158
|
+
* Only present when sentiment analysis is enabled on the STT adapter
|
|
159
|
+
* (e.g. Deepgram with `sentiment: true`).
|
|
160
|
+
*/
|
|
161
|
+
readonly sentiment?: SentimentResult;
|
|
162
|
+
}
|
|
163
|
+
export interface TranscriptWord {
|
|
164
|
+
readonly word: string;
|
|
165
|
+
readonly startMs: number;
|
|
166
|
+
readonly endMs: number;
|
|
167
|
+
readonly confidence?: number;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Human-like voice optimization options.
|
|
171
|
+
*
|
|
172
|
+
* Controls how natural and human-like the synthesized speech sounds.
|
|
173
|
+
* Each TTS provider maps these options to its own API parameters:
|
|
174
|
+
*
|
|
175
|
+
* - **ElevenLabs**: stability ↓, style ↑, multilingual model selection
|
|
176
|
+
* - **OpenAI gpt-4o-mini-tts**: voiceInstructions with natural speech directives
|
|
177
|
+
*
|
|
178
|
+
* Default preset is optimized for Korean (ko-KR) natural conversational speech.
|
|
179
|
+
*/
|
|
180
|
+
export interface HumanVoiceOptions {
|
|
181
|
+
/**
|
|
182
|
+
* Enable natural pauses between sentences and clauses (default: true).
|
|
183
|
+
* Adds realistic breathing pauses at punctuation and clause boundaries.
|
|
184
|
+
*/
|
|
185
|
+
naturalPauses?: boolean;
|
|
186
|
+
/**
|
|
187
|
+
* Include subtle breathing sounds between phrases (default: true).
|
|
188
|
+
* Makes speech sound less robotic by adding natural breath intake sounds.
|
|
189
|
+
*/
|
|
190
|
+
breathingSounds?: boolean;
|
|
191
|
+
/**
|
|
192
|
+
* Allow filler words in speech (default: true).
|
|
193
|
+
* Korean: 음, 어, 그, 저 / English: um, uh, well, you know
|
|
194
|
+
* Works best with gpt-4o-mini-tts (via voiceInstructions).
|
|
195
|
+
*/
|
|
196
|
+
fillerWords?: boolean;
|
|
197
|
+
/**
|
|
198
|
+
* Natural exclamations and interjections (default: true).
|
|
199
|
+
* Korean: 아, 네, 맞아요 / English: oh, right, I see
|
|
200
|
+
*/
|
|
201
|
+
exclamations?: boolean;
|
|
202
|
+
/**
|
|
203
|
+
* Emotional expressiveness range (0.0–1.0, default: 0.6).
|
|
204
|
+
* 0.0 = flat/monotone, 1.0 = highly expressive.
|
|
205
|
+
* ElevenLabs: maps to `style` parameter.
|
|
206
|
+
* OpenAI: included in voiceInstructions directive.
|
|
207
|
+
*/
|
|
208
|
+
emotionalRange?: number;
|
|
209
|
+
/**
|
|
210
|
+
* Speech variation / naturalness (0.0–1.0, default: 0.7).
|
|
211
|
+
* Controls how much the voice varies in tone, pace, and rhythm.
|
|
212
|
+
* Higher values sound more natural but less consistent.
|
|
213
|
+
* ElevenLabs: maps inversely to `stability` (variation = 1 - stability).
|
|
214
|
+
*/
|
|
215
|
+
speechVariation?: number;
|
|
216
|
+
}
|
|
217
|
+
/** Default HumanVoiceOptions optimized for Korean conversational speech */
|
|
218
|
+
export declare const HUMAN_VOICE_DEFAULTS_KO: Required<HumanVoiceOptions>;
|
|
219
|
+
/** HumanVoiceOptions optimized for English conversational speech */
|
|
220
|
+
export declare const HUMAN_VOICE_DEFAULTS_EN: Required<HumanVoiceOptions>;
|
|
221
|
+
/** Voice metadata returned from voice fetch/clone APIs */
|
|
222
|
+
export interface VoiceInfo {
|
|
223
|
+
readonly id: string;
|
|
224
|
+
readonly label: string;
|
|
225
|
+
}
|
|
226
|
+
export interface TtsOptions {
|
|
227
|
+
/** Voice ID or name (provider-specific) */
|
|
228
|
+
voiceId?: string;
|
|
229
|
+
/** Speaking rate multiplier (0.5–2.0) */
|
|
230
|
+
speed?: number;
|
|
231
|
+
/** Pitch adjustment */
|
|
232
|
+
pitch?: number;
|
|
233
|
+
/** Language code (e.g. "ko-KR", "en-US") */
|
|
234
|
+
language?: string;
|
|
235
|
+
/**
|
|
236
|
+
* Human-like voice optimization options.
|
|
237
|
+
* When set, the TTS adapter applies provider-specific settings
|
|
238
|
+
* to produce more natural, human-sounding speech.
|
|
239
|
+
* Default: Korean-optimized preset (HUMAN_VOICE_DEFAULTS_KO)
|
|
240
|
+
*/
|
|
241
|
+
humanVoice?: HumanVoiceOptions;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* STT (Speech-to-Text) options passed to SttAdapter.startStream().
|
|
245
|
+
* Provider-agnostic options that all STT adapters should support.
|
|
246
|
+
*/
|
|
247
|
+
export interface SttOptions {
|
|
248
|
+
/** Language code (e.g. "ko", "en-US", "multi") */
|
|
249
|
+
language?: string;
|
|
250
|
+
/** Enable speaker diarization — identifies who is speaking */
|
|
251
|
+
diarize?: boolean;
|
|
252
|
+
/**
|
|
253
|
+
* VAD (Voice Activity Detection) sensitivity.
|
|
254
|
+
* Controls how aggressively silence is detected for utterance boundaries.
|
|
255
|
+
*/
|
|
256
|
+
vadSensitivity?: 'low' | 'medium' | 'high';
|
|
257
|
+
/**
|
|
258
|
+
* Endpointing — silence duration (ms) to trigger utterance end.
|
|
259
|
+
* Lower values = faster turn detection, higher values = more tolerance for pauses.
|
|
260
|
+
*/
|
|
261
|
+
endpointingMs?: number;
|
|
262
|
+
/**
|
|
263
|
+
* Utterance end — time (ms) of silence to mark utterance as final.
|
|
264
|
+
* Korean-tuned default: 800ms (avoids premature cuts on sentence-final particles).
|
|
265
|
+
*/
|
|
266
|
+
utteranceEndMs?: number;
|
|
267
|
+
/** Emit partial (interim) transcripts in addition to final results */
|
|
268
|
+
interimResults?: boolean;
|
|
269
|
+
/**
|
|
270
|
+
* Smart formatting — auto-format numbers, dates, punctuation.
|
|
271
|
+
* Optimized for the selected language.
|
|
272
|
+
*/
|
|
273
|
+
smartFormat?: boolean;
|
|
274
|
+
/**
|
|
275
|
+
* Domain-specific keywords to boost recognition accuracy.
|
|
276
|
+
* E.g. ["DVGateway", "Anthropic", "AI"]
|
|
277
|
+
*/
|
|
278
|
+
keywords?: string[];
|
|
279
|
+
/** Add punctuation to transcripts */
|
|
280
|
+
punctuate?: boolean;
|
|
281
|
+
/** Redact profane words */
|
|
282
|
+
profanityFilter?: boolean;
|
|
283
|
+
/**
|
|
284
|
+
* Enable sentiment analysis on each transcript segment.
|
|
285
|
+
* Returns positive/neutral/negative classification with confidence score.
|
|
286
|
+
* Supported providers: Deepgram (Nova-3).
|
|
287
|
+
*/
|
|
288
|
+
sentiment?: boolean;
|
|
289
|
+
}
|
|
290
|
+
export interface Message {
|
|
291
|
+
readonly role: 'system' | 'user' | 'assistant';
|
|
292
|
+
readonly content: string;
|
|
293
|
+
}
|
|
294
|
+
export interface LlmOptions {
|
|
295
|
+
/** Override default model */
|
|
296
|
+
model?: string;
|
|
297
|
+
/** Override system prompt */
|
|
298
|
+
systemPrompt?: string;
|
|
299
|
+
/** Max tokens to generate */
|
|
300
|
+
maxTokens?: number;
|
|
301
|
+
/** Temperature (0.0–1.0) */
|
|
302
|
+
temperature?: number;
|
|
303
|
+
}
|
|
304
|
+
/** Speech-to-Text adapter interface */
|
|
305
|
+
export interface SttAdapter {
|
|
306
|
+
/**
|
|
307
|
+
* Begin streaming audio for transcription.
|
|
308
|
+
* @param linkedId - The call session identifier
|
|
309
|
+
* @param audioStream - Async iterable of normalized audio chunks
|
|
310
|
+
*/
|
|
311
|
+
startStream(linkedId: string, audioStream: AsyncIterable<AudioChunk>): Promise<void>;
|
|
312
|
+
/**
|
|
313
|
+
* Register a handler for transcription results.
|
|
314
|
+
* Called for both partial (isFinal=false) and final (isFinal=true) results.
|
|
315
|
+
*/
|
|
316
|
+
onTranscript(handler: (result: TranscriptResult) => void): void;
|
|
317
|
+
/** Stop the stream and release resources */
|
|
318
|
+
stop(): Promise<void>;
|
|
319
|
+
}
|
|
320
|
+
/** Text-to-Speech adapter interface */
|
|
321
|
+
export interface TtsAdapter {
|
|
322
|
+
/**
|
|
323
|
+
* Synthesize text to speech.
|
|
324
|
+
* Returns an async iterable of 16kHz 16-bit PCM audio chunks.
|
|
325
|
+
*/
|
|
326
|
+
synthesize(text: string, options?: TtsOptions): AsyncIterable<Buffer>;
|
|
327
|
+
}
|
|
328
|
+
/** Large Language Model adapter interface */
|
|
329
|
+
export interface LlmAdapter {
|
|
330
|
+
/**
|
|
331
|
+
* Generate a streaming chat completion.
|
|
332
|
+
* Returns an async iterable of text tokens.
|
|
333
|
+
*/
|
|
334
|
+
chat(messages: Message[], options?: LlmOptions): AsyncIterable<string>;
|
|
335
|
+
}
|
|
336
|
+
export interface PipelineOptions {
|
|
337
|
+
/** Only process audio in this direction (default: "both") */
|
|
338
|
+
dir?: StreamDir;
|
|
339
|
+
/** Minimum silence duration (ms) before treating as end-of-utterance (default: 500) */
|
|
340
|
+
endOfUtteranceSilenceMs?: number;
|
|
341
|
+
/** Whether to submit transcripts to minutes (default: true for conferences) */
|
|
342
|
+
submitToMinutes?: boolean;
|
|
343
|
+
}
|
|
344
|
+
export interface PipelineEventHandlers {
|
|
345
|
+
onNewCall?: (session: CallSession) => void | Promise<void>;
|
|
346
|
+
onCallEnded?: (linkedId: string, durationSec: number) => void | Promise<void>;
|
|
347
|
+
onTranscript?: (result: TranscriptResult, session: CallSession) => void | Promise<void>;
|
|
348
|
+
onError?: (err: Error, linkedId?: string) => void | Promise<void>;
|
|
349
|
+
}
|
|
350
|
+
export interface MinutesDownloadOptions {
|
|
351
|
+
format: 'json' | 'txt';
|
|
352
|
+
}
|
|
353
|
+
export interface MinutesEntry {
|
|
354
|
+
readonly linkedId: string;
|
|
355
|
+
readonly speaker?: string;
|
|
356
|
+
readonly text: string;
|
|
357
|
+
readonly isFinal: boolean;
|
|
358
|
+
readonly timestampMs: number;
|
|
359
|
+
readonly sentiment?: string;
|
|
360
|
+
readonly sentimentScore?: number;
|
|
361
|
+
}
|
|
362
|
+
export interface Logger {
|
|
363
|
+
debug(ctx: Record<string, unknown>, msg: string): void;
|
|
364
|
+
info(ctx: Record<string, unknown>, msg: string): void;
|
|
365
|
+
warn(ctx: Record<string, unknown>, msg: string): void;
|
|
366
|
+
error(ctx: Record<string, unknown>, msg: string): void;
|
|
367
|
+
}
|
|
368
|
+
/** Function to unsubscribe from an event listener */
|
|
369
|
+
export type Unsubscribe = () => void;
|
|
370
|
+
/** Typed result type for error handling without exceptions */
|
|
371
|
+
export type Result<T, E extends Error = Error> = {
|
|
372
|
+
readonly ok: true;
|
|
373
|
+
readonly value: T;
|
|
374
|
+
} | {
|
|
375
|
+
readonly ok: false;
|
|
376
|
+
readonly error: E;
|
|
377
|
+
};
|
|
378
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DVGateway SDK — Public Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Core types for interacting with the DVGateway real-time voice media gateway.
|
|
5
|
+
* All adapters and pipeline components are built on these interfaces.
|
|
6
|
+
*/
|
|
7
|
+
/** Default HumanVoiceOptions optimized for Korean conversational speech */
|
|
8
|
+
export const HUMAN_VOICE_DEFAULTS_KO = {
|
|
9
|
+
naturalPauses: true,
|
|
10
|
+
breathingSounds: true,
|
|
11
|
+
fillerWords: true,
|
|
12
|
+
exclamations: true,
|
|
13
|
+
emotionalRange: 0.6,
|
|
14
|
+
speechVariation: 0.7,
|
|
15
|
+
};
|
|
16
|
+
/** HumanVoiceOptions optimized for English conversational speech */
|
|
17
|
+
export const HUMAN_VOICE_DEFAULTS_EN = {
|
|
18
|
+
naturalPauses: true,
|
|
19
|
+
breathingSounds: true,
|
|
20
|
+
fillerWords: false,
|
|
21
|
+
exclamations: true,
|
|
22
|
+
emotionalRange: 0.5,
|
|
23
|
+
speechVariation: 0.6,
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmQH,2EAA2E;AAC3E,MAAM,CAAC,MAAM,uBAAuB,GAAgC;IAClE,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,IAAI;IACrB,WAAW,EAAE,IAAI;IACjB,YAAY,EAAE,IAAI;IAClB,cAAc,EAAE,GAAG;IACnB,eAAe,EAAE,GAAG;CACZ,CAAC;AAEX,oEAAoE;AACpE,MAAM,CAAC,MAAM,uBAAuB,GAAgC;IAClE,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,IAAI;IACrB,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,IAAI;IAClB,cAAc,EAAE,GAAG;IACnB,eAAe,EAAE,GAAG;CACZ,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dvgateway-sdk",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "DVGateway SDK — Real-time voice AI integration for the DVGateway media gateway",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md",
|
|
17
|
+
"LICENSE"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc",
|
|
21
|
+
"dev": "tsc --watch",
|
|
22
|
+
"test": "jest",
|
|
23
|
+
"lint": "eslint src --ext .ts",
|
|
24
|
+
"typecheck": "tsc --noEmit",
|
|
25
|
+
"prepublishOnly": "npm run build"
|
|
26
|
+
},
|
|
27
|
+
"keywords": [
|
|
28
|
+
"dvgateway",
|
|
29
|
+
"voice-ai",
|
|
30
|
+
"sip",
|
|
31
|
+
"asterisk",
|
|
32
|
+
"realtime",
|
|
33
|
+
"speech-to-text",
|
|
34
|
+
"text-to-speech",
|
|
35
|
+
"llm",
|
|
36
|
+
"webrtc",
|
|
37
|
+
"sdk"
|
|
38
|
+
],
|
|
39
|
+
"author": {
|
|
40
|
+
"name": "OLSSOO Inc.",
|
|
41
|
+
"email": "dev@olssoo.com",
|
|
42
|
+
"url": "https://github.com/OLSSOO-Inc"
|
|
43
|
+
},
|
|
44
|
+
"repository": {
|
|
45
|
+
"type": "git",
|
|
46
|
+
"url": "https://github.com/OLSSOO-Inc/AI-Ready-Real-Time-Voice-Media-Gateway.git",
|
|
47
|
+
"directory": "packages/dvgateway-sdk"
|
|
48
|
+
},
|
|
49
|
+
"homepage": "https://github.com/OLSSOO-Inc/dvgateway-releases",
|
|
50
|
+
"bugs": {
|
|
51
|
+
"url": "https://github.com/OLSSOO-Inc/AI-Ready-Real-Time-Voice-Media-Gateway/issues"
|
|
52
|
+
},
|
|
53
|
+
"publishConfig": {
|
|
54
|
+
"access": "public"
|
|
55
|
+
},
|
|
56
|
+
"license": "MIT",
|
|
57
|
+
"engines": {
|
|
58
|
+
"node": ">=20.0.0"
|
|
59
|
+
},
|
|
60
|
+
"dependencies": {
|
|
61
|
+
"uuid": "^9.0.0",
|
|
62
|
+
"ws": "^8.17.0"
|
|
63
|
+
},
|
|
64
|
+
"devDependencies": {
|
|
65
|
+
"@types/jest": "^30.0.0",
|
|
66
|
+
"@types/node": "^20.0.0",
|
|
67
|
+
"@types/uuid": "^9.0.0",
|
|
68
|
+
"@types/ws": "^8.5.10",
|
|
69
|
+
"jest": "^30.3.0",
|
|
70
|
+
"ts-jest": "^29.4.6",
|
|
71
|
+
"typescript": "^5.4.0"
|
|
72
|
+
},
|
|
73
|
+
"peerDependencies": {
|
|
74
|
+
"@opentelemetry/api": ">=1.7.0"
|
|
75
|
+
},
|
|
76
|
+
"peerDependenciesMeta": {
|
|
77
|
+
"@opentelemetry/api": {
|
|
78
|
+
"optional": true
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|