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.
Files changed (78) hide show
  1. package/README.md +615 -0
  2. package/dist/audio/codec.d.ts +44 -0
  3. package/dist/audio/codec.d.ts.map +1 -0
  4. package/dist/audio/codec.js +136 -0
  5. package/dist/audio/codec.js.map +1 -0
  6. package/dist/audio/codec.test.d.ts +2 -0
  7. package/dist/audio/codec.test.d.ts.map +1 -0
  8. package/dist/audio/codec.test.js +155 -0
  9. package/dist/audio/codec.test.js.map +1 -0
  10. package/dist/auth/manager.d.ts +34 -0
  11. package/dist/auth/manager.d.ts.map +1 -0
  12. package/dist/auth/manager.js +122 -0
  13. package/dist/auth/manager.js.map +1 -0
  14. package/dist/auth/manager.test.d.ts +2 -0
  15. package/dist/auth/manager.test.d.ts.map +1 -0
  16. package/dist/auth/manager.test.js +147 -0
  17. package/dist/auth/manager.test.js.map +1 -0
  18. package/dist/client.d.ts +154 -0
  19. package/dist/client.d.ts.map +1 -0
  20. package/dist/client.js +218 -0
  21. package/dist/client.js.map +1 -0
  22. package/dist/index.d.ts +36 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +40 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/minutes/manager.d.ts +43 -0
  27. package/dist/minutes/manager.d.ts.map +1 -0
  28. package/dist/minutes/manager.js +71 -0
  29. package/dist/minutes/manager.js.map +1 -0
  30. package/dist/observability/logger.d.ts +19 -0
  31. package/dist/observability/logger.d.ts.map +1 -0
  32. package/dist/observability/logger.js +70 -0
  33. package/dist/observability/logger.js.map +1 -0
  34. package/dist/observability/metrics.d.ts +53 -0
  35. package/dist/observability/metrics.d.ts.map +1 -0
  36. package/dist/observability/metrics.js +143 -0
  37. package/dist/observability/metrics.js.map +1 -0
  38. package/dist/observability/metrics.test.d.ts +2 -0
  39. package/dist/observability/metrics.test.d.ts.map +1 -0
  40. package/dist/observability/metrics.test.js +122 -0
  41. package/dist/observability/metrics.test.js.map +1 -0
  42. package/dist/pipeline/builder.d.ts +111 -0
  43. package/dist/pipeline/builder.d.ts.map +1 -0
  44. package/dist/pipeline/builder.js +323 -0
  45. package/dist/pipeline/builder.js.map +1 -0
  46. package/dist/session/manager.d.ts +21 -0
  47. package/dist/session/manager.d.ts.map +1 -0
  48. package/dist/session/manager.js +52 -0
  49. package/dist/session/manager.js.map +1 -0
  50. package/dist/streams/audio-stream.d.ts +29 -0
  51. package/dist/streams/audio-stream.d.ts.map +1 -0
  52. package/dist/streams/audio-stream.js +118 -0
  53. package/dist/streams/audio-stream.js.map +1 -0
  54. package/dist/streams/call-events.d.ts +32 -0
  55. package/dist/streams/call-events.d.ts.map +1 -0
  56. package/dist/streams/call-events.js +140 -0
  57. package/dist/streams/call-events.js.map +1 -0
  58. package/dist/streams/tts-stream.d.ts +46 -0
  59. package/dist/streams/tts-stream.d.ts.map +1 -0
  60. package/dist/streams/tts-stream.js +102 -0
  61. package/dist/streams/tts-stream.js.map +1 -0
  62. package/dist/transport/http-client.d.ts +36 -0
  63. package/dist/transport/http-client.d.ts.map +1 -0
  64. package/dist/transport/http-client.js +102 -0
  65. package/dist/transport/http-client.js.map +1 -0
  66. package/dist/transport/http-client.test.d.ts +2 -0
  67. package/dist/transport/http-client.test.d.ts.map +1 -0
  68. package/dist/transport/http-client.test.js +172 -0
  69. package/dist/transport/http-client.test.js.map +1 -0
  70. package/dist/transport/ws-pool.d.ts +34 -0
  71. package/dist/transport/ws-pool.d.ts.map +1 -0
  72. package/dist/transport/ws-pool.js +123 -0
  73. package/dist/transport/ws-pool.js.map +1 -0
  74. package/dist/types/index.d.ts +378 -0
  75. package/dist/types/index.d.ts.map +1 -0
  76. package/dist/types/index.js +25 -0
  77. package/dist/types/index.js.map +1 -0
  78. package/package.json +81 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.test.js","sourceRoot":"","sources":["../../src/auth/manager.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * DVGatewayClient — Main SDK Entry Point
3
+ *
4
+ * Wires together all internal components and exposes a clean,
5
+ * type-safe public API for integrating with the DVGateway.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const gw = new DVGatewayClient({
10
+ * baseUrl: 'https://gateway.example.com',
11
+ * auth: { type: 'apiKey', apiKey: process.env.DV_API_KEY! },
12
+ * });
13
+ *
14
+ * // High-level: 5-line AI voice bot
15
+ * await gw.pipeline()
16
+ * .stt(new DeepgramAdapter({ apiKey: '...' }))
17
+ * .llm(new AnthropicAdapter({ apiKey: '...' }))
18
+ * .tts(new ElevenLabsAdapter({ apiKey: '...' }))
19
+ * .start();
20
+ * ```
21
+ */
22
+ import { PipelineBuilder } from './pipeline/builder.js';
23
+ import { PipelineMetrics } from './observability/metrics.js';
24
+ import type { DVGatewayOptions, CallSession, CallEvent, AudioChunk, TranscriptResult, StreamDir, TtsAdapter, Unsubscribe } from './types/index.js';
25
+ export declare class DVGatewayClient {
26
+ private readonly auth;
27
+ private readonly wsPool;
28
+ private readonly http;
29
+ private readonly callEvents;
30
+ private readonly ttsInjector;
31
+ private readonly sessions;
32
+ private readonly minutes;
33
+ readonly metrics: PipelineMetrics;
34
+ private readonly logger;
35
+ constructor(opts: DVGatewayOptions);
36
+ /**
37
+ * Create a fluent AI voice pipeline.
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * await gw.pipeline()
42
+ * .stt(new DeepgramAdapter({ apiKey: '...' }))
43
+ * .llm(new AnthropicAdapter({ apiKey: '...' }))
44
+ * .tts(new ElevenLabsAdapter({ apiKey: '...' }))
45
+ * .onNewCall((s) => console.log('Call:', s.linkedId))
46
+ * .start();
47
+ * ```
48
+ */
49
+ pipeline(): PipelineBuilder;
50
+ /**
51
+ * Subscribe to real-time audio from a call.
52
+ * Returns an AsyncIterable that yields AudioChunk (Float32, 16kHz).
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * for await (const chunk of gw.streamAudio('abc123')) {
57
+ * // chunk.samples: Float32Array [-1.0, 1.0]
58
+ * // 640 bytes = 320 samples = 20ms per chunk
59
+ * }
60
+ * ```
61
+ */
62
+ streamAudio(linkedId: string, opts?: {
63
+ dir?: StreamDir;
64
+ }): AsyncIterable<AudioChunk> & {
65
+ unsubscribe: () => void;
66
+ };
67
+ /**
68
+ * Inject synthesized speech into an active call.
69
+ * audioChunks should be 16kHz, 16-bit PCM (slin16) audio.
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * const ttsAdapter = new ElevenLabsAdapter({ apiKey: '...' });
74
+ * await gw.injectTts('abc123', ttsAdapter.synthesize('Hello!'));
75
+ * ```
76
+ */
77
+ injectTts(linkedId: string, audioChunks: AsyncIterable<Buffer>): Promise<void>;
78
+ /**
79
+ * Broadcast synthesized speech to all conference participants.
80
+ */
81
+ broadcastTts(confId: string, audioChunks: AsyncIterable<Buffer>): Promise<void>;
82
+ /**
83
+ * Convenience: synthesize text and inject it directly.
84
+ * Requires a TtsAdapter instance.
85
+ *
86
+ * Tip: Pass a CachedTtsAdapter to avoid redundant API calls
87
+ * for repeated announcements (e.g. IVR greetings).
88
+ *
89
+ * @example
90
+ * ```typescript
91
+ * import { CachedTtsAdapter, ElevenLabsAdapter } from 'dvgateway-adapters';
92
+ *
93
+ * const tts = new CachedTtsAdapter(
94
+ * new ElevenLabsAdapter({ apiKey: '...' }),
95
+ * { provider: 'elevenlabs', cacheDir: './tts-cache' },
96
+ * );
97
+ * await tts.warmup([{ text: '안녕하세요' }]);
98
+ * await gw.say(linkedId, '안녕하세요', tts); // cache hit — no API call
99
+ * ```
100
+ */
101
+ say(linkedId: string, text: string, tts: TtsAdapter): Promise<void>;
102
+ /**
103
+ * Broadcast synthesized speech to a conference.
104
+ * Pass a CachedTtsAdapter for zero-cost repeated broadcasts.
105
+ *
106
+ * @example
107
+ * ```typescript
108
+ * await gw.broadcastSay(confId, '회의를 시작합니다.', cachedTts);
109
+ * ```
110
+ */
111
+ broadcastSay(confId: string, text: string, tts: TtsAdapter): Promise<void>;
112
+ /**
113
+ * Subscribe to all call lifecycle events.
114
+ * Returns an unsubscribe function.
115
+ *
116
+ * @example
117
+ * ```typescript
118
+ * const unsub = gw.onCallEvent((event) => {
119
+ * if (event.type === 'call:new') console.log(event.session.linkedId);
120
+ * });
121
+ * // Later: unsub();
122
+ * ```
123
+ */
124
+ onCallEvent(handler: (event: CallEvent) => void | Promise<void>): Unsubscribe;
125
+ /** Subscribe to a specific call event type */
126
+ on<T extends CallEvent>(type: T['type'], handler: (event: T) => void | Promise<void>): Unsubscribe;
127
+ /** List all currently active call sessions */
128
+ listSessions(): Promise<CallSession[]>;
129
+ /** List active call sessions filtered by tenant ID */
130
+ listSessionsByTenant(tenantId: string): Promise<CallSession[]>;
131
+ /** Update metadata on a session (e.g. customer ID, ticket number) */
132
+ updateSessionMeta(linkedId: string, meta: Record<string, string>): Promise<void>;
133
+ /**
134
+ * Submit an STT transcript result to the gateway's minutes store.
135
+ * Typically called from an STT adapter's onTranscript callback.
136
+ */
137
+ submitTranscript(confId: string, result: TranscriptResult): Promise<void>;
138
+ /**
139
+ * Download conference minutes in JSON or plain-text format.
140
+ */
141
+ downloadMinutes(confId: string, format?: 'json' | 'txt'): Promise<string>;
142
+ /**
143
+ * Returns a function that auto-submits final transcripts to minutes.
144
+ * Attach to sttAdapter.onTranscript().
145
+ */
146
+ autoSubmitTranscripts(confId: string): (result: TranscriptResult) => Promise<void>;
147
+ /**
148
+ * Gracefully close all WebSocket connections and release resources.
149
+ * Call this when your application is shutting down.
150
+ */
151
+ close(): void;
152
+ private normalizeBaseUrl;
153
+ }
154
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js ADDED
@@ -0,0 +1,218 @@
1
+ /**
2
+ * DVGatewayClient — Main SDK Entry Point
3
+ *
4
+ * Wires together all internal components and exposes a clean,
5
+ * type-safe public API for integrating with the DVGateway.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const gw = new DVGatewayClient({
10
+ * baseUrl: 'https://gateway.example.com',
11
+ * auth: { type: 'apiKey', apiKey: process.env.DV_API_KEY! },
12
+ * });
13
+ *
14
+ * // High-level: 5-line AI voice bot
15
+ * await gw.pipeline()
16
+ * .stt(new DeepgramAdapter({ apiKey: '...' }))
17
+ * .llm(new AnthropicAdapter({ apiKey: '...' }))
18
+ * .tts(new ElevenLabsAdapter({ apiKey: '...' }))
19
+ * .start();
20
+ * ```
21
+ */
22
+ import { AuthManager } from './auth/manager.js';
23
+ import { WsPool } from './transport/ws-pool.js';
24
+ import { HttpClient } from './transport/http-client.js';
25
+ import { CallEventStream } from './streams/call-events.js';
26
+ import { createAudioStream } from './streams/audio-stream.js';
27
+ import { TtsInjector } from './streams/tts-stream.js';
28
+ import { SessionManager } from './session/manager.js';
29
+ import { MinutesManager } from './minutes/manager.js';
30
+ import { PipelineBuilder } from './pipeline/builder.js';
31
+ import { PipelineMetrics } from './observability/metrics.js';
32
+ import { createLogger } from './observability/logger.js';
33
+ export class DVGatewayClient {
34
+ auth;
35
+ wsPool;
36
+ http;
37
+ callEvents;
38
+ ttsInjector;
39
+ sessions;
40
+ minutes;
41
+ metrics;
42
+ logger;
43
+ constructor(opts) {
44
+ // Enforce TLS in production
45
+ const baseUrl = this.normalizeBaseUrl(opts);
46
+ this.logger = opts.logger ?? createLogger({ level: 'info', redactPii: opts.security?.maskPii !== false });
47
+ this.auth = new AuthManager(opts.auth, baseUrl, this.logger);
48
+ this.wsPool = new WsPool(this.auth, opts.reconnect ?? {}, this.logger);
49
+ this.http = new HttpClient(this.auth, opts.timeout ?? 30_000, this.logger, opts.tenantId);
50
+ this.callEvents = new CallEventStream(this.wsPool, this.logger);
51
+ this.ttsInjector = new TtsInjector(this.wsPool, this.http, this.logger);
52
+ this.sessions = new SessionManager(this.http, this.logger);
53
+ this.minutes = new MinutesManager(this.http, this.logger);
54
+ this.metrics = new PipelineMetrics(this.logger);
55
+ }
56
+ // ─── High-Level: Pipeline Builder ──────────────────────────────────────
57
+ /**
58
+ * Create a fluent AI voice pipeline.
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * await gw.pipeline()
63
+ * .stt(new DeepgramAdapter({ apiKey: '...' }))
64
+ * .llm(new AnthropicAdapter({ apiKey: '...' }))
65
+ * .tts(new ElevenLabsAdapter({ apiKey: '...' }))
66
+ * .onNewCall((s) => console.log('Call:', s.linkedId))
67
+ * .start();
68
+ * ```
69
+ */
70
+ pipeline() {
71
+ return new PipelineBuilder(this.wsPool, this.callEvents, this.ttsInjector, this.logger);
72
+ }
73
+ // ─── Mid-Level: Audio Streaming ─────────────────────────────────────────
74
+ /**
75
+ * Subscribe to real-time audio from a call.
76
+ * Returns an AsyncIterable that yields AudioChunk (Float32, 16kHz).
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * for await (const chunk of gw.streamAudio('abc123')) {
81
+ * // chunk.samples: Float32Array [-1.0, 1.0]
82
+ * // 640 bytes = 320 samples = 20ms per chunk
83
+ * }
84
+ * ```
85
+ */
86
+ streamAudio(linkedId, opts = {}) {
87
+ return createAudioStream(this.wsPool, linkedId, this.logger, opts);
88
+ }
89
+ // ─── Mid-Level: TTS Injection ───────────────────────────────────────────
90
+ /**
91
+ * Inject synthesized speech into an active call.
92
+ * audioChunks should be 16kHz, 16-bit PCM (slin16) audio.
93
+ *
94
+ * @example
95
+ * ```typescript
96
+ * const ttsAdapter = new ElevenLabsAdapter({ apiKey: '...' });
97
+ * await gw.injectTts('abc123', ttsAdapter.synthesize('Hello!'));
98
+ * ```
99
+ */
100
+ async injectTts(linkedId, audioChunks) {
101
+ return this.ttsInjector.injectStreaming(linkedId, audioChunks);
102
+ }
103
+ /**
104
+ * Broadcast synthesized speech to all conference participants.
105
+ */
106
+ async broadcastTts(confId, audioChunks) {
107
+ return this.ttsInjector.broadcastToConference(confId, audioChunks);
108
+ }
109
+ /**
110
+ * Convenience: synthesize text and inject it directly.
111
+ * Requires a TtsAdapter instance.
112
+ *
113
+ * Tip: Pass a CachedTtsAdapter to avoid redundant API calls
114
+ * for repeated announcements (e.g. IVR greetings).
115
+ *
116
+ * @example
117
+ * ```typescript
118
+ * import { CachedTtsAdapter, ElevenLabsAdapter } from 'dvgateway-adapters';
119
+ *
120
+ * const tts = new CachedTtsAdapter(
121
+ * new ElevenLabsAdapter({ apiKey: '...' }),
122
+ * { provider: 'elevenlabs', cacheDir: './tts-cache' },
123
+ * );
124
+ * await tts.warmup([{ text: '안녕하세요' }]);
125
+ * await gw.say(linkedId, '안녕하세요', tts); // cache hit — no API call
126
+ * ```
127
+ */
128
+ async say(linkedId, text, tts) {
129
+ return this.ttsInjector.injectStreaming(linkedId, tts.synthesize(text));
130
+ }
131
+ /**
132
+ * Broadcast synthesized speech to a conference.
133
+ * Pass a CachedTtsAdapter for zero-cost repeated broadcasts.
134
+ *
135
+ * @example
136
+ * ```typescript
137
+ * await gw.broadcastSay(confId, '회의를 시작합니다.', cachedTts);
138
+ * ```
139
+ */
140
+ async broadcastSay(confId, text, tts) {
141
+ return this.ttsInjector.broadcastToConference(confId, tts.synthesize(text));
142
+ }
143
+ // ─── Mid-Level: Call Events ─────────────────────────────────────────────
144
+ /**
145
+ * Subscribe to all call lifecycle events.
146
+ * Returns an unsubscribe function.
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * const unsub = gw.onCallEvent((event) => {
151
+ * if (event.type === 'call:new') console.log(event.session.linkedId);
152
+ * });
153
+ * // Later: unsub();
154
+ * ```
155
+ */
156
+ onCallEvent(handler) {
157
+ return this.callEvents.on(handler);
158
+ }
159
+ /** Subscribe to a specific call event type */
160
+ on(type, handler) {
161
+ return this.callEvents.onType(type, handler);
162
+ }
163
+ // ─── Session Management ─────────────────────────────────────────────────
164
+ /** List all currently active call sessions */
165
+ async listSessions() {
166
+ return this.sessions.listSessions();
167
+ }
168
+ /** List active call sessions filtered by tenant ID */
169
+ async listSessionsByTenant(tenantId) {
170
+ return this.sessions.listSessionsByTenant(tenantId);
171
+ }
172
+ /** Update metadata on a session (e.g. customer ID, ticket number) */
173
+ async updateSessionMeta(linkedId, meta) {
174
+ return this.sessions.updateMetadata(linkedId, meta);
175
+ }
176
+ // ─── Minutes / Transcripts ──────────────────────────────────────────────
177
+ /**
178
+ * Submit an STT transcript result to the gateway's minutes store.
179
+ * Typically called from an STT adapter's onTranscript callback.
180
+ */
181
+ async submitTranscript(confId, result) {
182
+ return this.minutes.submitTranscript(confId, result);
183
+ }
184
+ /**
185
+ * Download conference minutes in JSON or plain-text format.
186
+ */
187
+ async downloadMinutes(confId, format = 'txt') {
188
+ return this.minutes.downloadMinutes(confId, format);
189
+ }
190
+ /**
191
+ * Returns a function that auto-submits final transcripts to minutes.
192
+ * Attach to sttAdapter.onTranscript().
193
+ */
194
+ autoSubmitTranscripts(confId) {
195
+ return this.minutes.createAutoSubmitter(confId);
196
+ }
197
+ // ─── Lifecycle ──────────────────────────────────────────────────────────
198
+ /**
199
+ * Gracefully close all WebSocket connections and release resources.
200
+ * Call this when your application is shutting down.
201
+ */
202
+ close() {
203
+ this.wsPool.closeAll();
204
+ this.logger.info({}, 'DVGatewayClient closed');
205
+ }
206
+ // ─── Private helpers ────────────────────────────────────────────────────
207
+ normalizeBaseUrl(opts) {
208
+ let url = opts.baseUrl.replace(/\/$/, '');
209
+ if (opts.security?.forceTls !== false) {
210
+ if (url.startsWith('http://')) {
211
+ this.logger.warn({ url }, 'DVGateway: upgrading http:// to https:// (set security.forceTls=false to suppress)');
212
+ url = url.replace('http://', 'https://');
213
+ }
214
+ }
215
+ return url;
216
+ }
217
+ }
218
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * DVGateway SDK
3
+ *
4
+ * Real-time voice AI integration for DVGateway media gateway.
5
+ *
6
+ * Quick start:
7
+ *
8
+ * import { DVGatewayClient } from 'dvgateway-sdk';
9
+ * import { DeepgramAdapter } from 'dvgateway-adapters/stt';
10
+ * import { AnthropicAdapter } from 'dvgateway-adapters/llm';
11
+ * import { ElevenLabsAdapter } from 'dvgateway-adapters/tts';
12
+ *
13
+ * const gw = new DVGatewayClient({
14
+ * baseUrl: 'https://gateway.example.com',
15
+ * auth: { type: 'apiKey', apiKey: process.env.DV_API_KEY! },
16
+ * });
17
+ *
18
+ * await gw.pipeline()
19
+ * .stt(new DeepgramAdapter({ apiKey: process.env.DEEPGRAM_KEY!, language: 'ko' }))
20
+ * .llm(new AnthropicAdapter({ apiKey: process.env.ANTHROPIC_KEY!, model: 'claude-opus-4-6' }))
21
+ * .tts(new ElevenLabsAdapter({ apiKey: process.env.ELEVENLABS_KEY! }))
22
+ * .start();
23
+ *
24
+ * DVGateway port reference:
25
+ * :8080 — API server (AI clients connect here)
26
+ * :8081 — Dashboard (monitoring UI)
27
+ * :8092 — Media server (Asterisk ExternalMedia WebSocket, default GW_MEDIA_ADDR)
28
+ * :8088 — Asterisk ARI HTTP API (Asterisk's own port, not DVGateway's)
29
+ */
30
+ export { DVGatewayClient } from './client.js';
31
+ export type { ApiKeyAuth, JwtAuth, Auth, DVGatewayOptions, ReconnectOptions, SecurityOptions, MtlsOptions, CallSession, ConferenceSession, ConferenceParticipant, StreamDir, CallEvent, CallNewEvent, CallEndedEvent, ConfJoinEvent, ConfLeaveEvent, ConfEndedEvent, CallEventType, AudioChunk, RawAudioChunk, SttAdapter, TtsAdapter, LlmAdapter, TranscriptResult, TranscriptWord, SentimentResult, TtsOptions, VoiceInfo, HumanVoiceOptions, SttOptions, Message, LlmOptions, PipelineOptions, PipelineEventHandlers, MinutesDownloadOptions, Logger, Unsubscribe, Result, } from './types/index.js';
32
+ export { HUMAN_VOICE_DEFAULTS_KO, HUMAN_VOICE_DEFAULTS_EN, } from './types/index.js';
33
+ export { slin16ToFloat32, float32ToSlin16, ulawToSlin16, slin16ToUlaw, resample, calculateRms, detectVoiceActivity, } from './audio/codec.js';
34
+ export { createLogger, defaultLogger } from './observability/logger.js';
35
+ export { PipelineMetrics, Histogram, Counter } from './observability/metrics.js';
36
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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,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,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,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 ADDED
@@ -0,0 +1,40 @@
1
+ /**
2
+ * DVGateway SDK
3
+ *
4
+ * Real-time voice AI integration for DVGateway media gateway.
5
+ *
6
+ * Quick start:
7
+ *
8
+ * import { DVGatewayClient } from 'dvgateway-sdk';
9
+ * import { DeepgramAdapter } from 'dvgateway-adapters/stt';
10
+ * import { AnthropicAdapter } from 'dvgateway-adapters/llm';
11
+ * import { ElevenLabsAdapter } from 'dvgateway-adapters/tts';
12
+ *
13
+ * const gw = new DVGatewayClient({
14
+ * baseUrl: 'https://gateway.example.com',
15
+ * auth: { type: 'apiKey', apiKey: process.env.DV_API_KEY! },
16
+ * });
17
+ *
18
+ * await gw.pipeline()
19
+ * .stt(new DeepgramAdapter({ apiKey: process.env.DEEPGRAM_KEY!, language: 'ko' }))
20
+ * .llm(new AnthropicAdapter({ apiKey: process.env.ANTHROPIC_KEY!, model: 'claude-opus-4-6' }))
21
+ * .tts(new ElevenLabsAdapter({ apiKey: process.env.ELEVENLABS_KEY! }))
22
+ * .start();
23
+ *
24
+ * DVGateway port reference:
25
+ * :8080 — API server (AI clients connect here)
26
+ * :8081 — Dashboard (monitoring UI)
27
+ * :8092 — Media server (Asterisk ExternalMedia WebSocket, default GW_MEDIA_ADDR)
28
+ * :8088 — Asterisk ARI HTTP API (Asterisk's own port, not DVGateway's)
29
+ */
30
+ // Main client
31
+ export { DVGatewayClient } from './client.js';
32
+ // Human voice presets
33
+ export { HUMAN_VOICE_DEFAULTS_KO, HUMAN_VOICE_DEFAULTS_EN, } from './types/index.js';
34
+ // Audio codec utilities (for custom adapter authors)
35
+ export { slin16ToFloat32, float32ToSlin16, ulawToSlin16, slin16ToUlaw, resample, calculateRms, detectVoiceActivity, } from './audio/codec.js';
36
+ // Logger factory
37
+ export { createLogger, defaultLogger } from './observability/logger.js';
38
+ // Metrics
39
+ export { PipelineMetrics, Histogram, Counter } from './observability/metrics.js';
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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;AA+D9C,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,43 @@
1
+ /**
2
+ * Minutes Manager
3
+ *
4
+ * Submits STT transcripts to the gateway's minutes store and
5
+ * downloads completed conference minutes in JSON or TXT format.
6
+ *
7
+ * REST API:
8
+ * POST /api/v1/minutes/{confId}/transcript — Submit utterance
9
+ * GET /api/v1/minutes/{confId}/download — Download minutes
10
+ */
11
+ import type { TranscriptResult, Logger } from '../types/index.js';
12
+ import type { HttpClient } from '../transport/http-client.js';
13
+ export interface MinutesEntry {
14
+ linkedId: string;
15
+ speaker?: string;
16
+ text: string;
17
+ isFinal: boolean;
18
+ timestampMs: number;
19
+ }
20
+ export declare class MinutesManager {
21
+ private readonly http;
22
+ private readonly logger;
23
+ constructor(http: HttpClient, logger: Logger);
24
+ /**
25
+ * Submit an STT transcript result to the gateway's minutes store.
26
+ * Only final transcripts are typically stored, but partials are accepted.
27
+ */
28
+ submitTranscript(confId: string, result: TranscriptResult): Promise<void>;
29
+ /**
30
+ * Download the minutes for a completed (or in-progress) conference.
31
+ *
32
+ * @param confId - Conference identifier
33
+ * @param format - 'json' (structured) or 'txt' (human-readable)
34
+ * @returns Minutes content as a string
35
+ */
36
+ downloadMinutes(confId: string, format?: 'json' | 'txt'): Promise<string>;
37
+ /**
38
+ * Convenience: submit final transcripts automatically.
39
+ * Attach to an STT adapter's onTranscript callback.
40
+ */
41
+ createAutoSubmitter(confId: string): (result: TranscriptResult) => Promise<void>;
42
+ }
43
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/minutes/manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM;IAK5C;;;OAGG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB/E;;;;;;OAMG;IACG,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,MAAM,GAAG,KAAa,GAC7B,OAAO,CAAC,MAAM,CAAC;IAiBlB;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC;CAUjF"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Minutes Manager
3
+ *
4
+ * Submits STT transcripts to the gateway's minutes store and
5
+ * downloads completed conference minutes in JSON or TXT format.
6
+ *
7
+ * REST API:
8
+ * POST /api/v1/minutes/{confId}/transcript — Submit utterance
9
+ * GET /api/v1/minutes/{confId}/download — Download minutes
10
+ */
11
+ export class MinutesManager {
12
+ http;
13
+ logger;
14
+ constructor(http, logger) {
15
+ this.http = http;
16
+ this.logger = logger;
17
+ }
18
+ /**
19
+ * Submit an STT transcript result to the gateway's minutes store.
20
+ * Only final transcripts are typically stored, but partials are accepted.
21
+ */
22
+ async submitTranscript(confId, result) {
23
+ const response = await this.http.post(`/api/v1/minutes/${encodeURIComponent(confId)}/transcript`, {
24
+ linkedId: result.linkedId,
25
+ text: result.text,
26
+ isFinal: result.isFinal,
27
+ speaker: result.speaker,
28
+ confidence: result.confidence,
29
+ timestampMs: result.timestampMs,
30
+ sentiment: result.sentiment?.sentiment,
31
+ sentimentScore: result.sentiment?.sentimentScore,
32
+ });
33
+ if (response.status !== 200 && response.status !== 201 && response.status !== 204) {
34
+ throw new Error(`Failed to submit transcript: HTTP ${response.status}`);
35
+ }
36
+ }
37
+ /**
38
+ * Download the minutes for a completed (or in-progress) conference.
39
+ *
40
+ * @param confId - Conference identifier
41
+ * @param format - 'json' (structured) or 'txt' (human-readable)
42
+ * @returns Minutes content as a string
43
+ */
44
+ async downloadMinutes(confId, format = 'txt') {
45
+ const response = await this.http.get(`/api/v1/minutes/${encodeURIComponent(confId)}/download`, { headers: { Accept: format === 'json' ? 'application/json' : 'text/plain' } });
46
+ if (response.status !== 200) {
47
+ throw new Error(`Failed to download minutes: HTTP ${response.status}`);
48
+ }
49
+ if (format === 'json' && typeof response.data === 'object') {
50
+ return JSON.stringify(response.data, null, 2);
51
+ }
52
+ return String(response.data);
53
+ }
54
+ /**
55
+ * Convenience: submit final transcripts automatically.
56
+ * Attach to an STT adapter's onTranscript callback.
57
+ */
58
+ createAutoSubmitter(confId) {
59
+ return async (result) => {
60
+ if (!result.isFinal)
61
+ return; // Only store finals
62
+ try {
63
+ await this.submitTranscript(confId, result);
64
+ }
65
+ catch (err) {
66
+ this.logger.warn({ confId, err }, 'Failed to auto-submit transcript to minutes');
67
+ }
68
+ };
69
+ }
70
+ }
71
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/minutes/manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAaH,MAAM,OAAO,cAAc;IACR,IAAI,CAAa;IACjB,MAAM,CAAS;IAEhC,YAAY,IAAgB,EAAE,MAAc;QAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,gBAAgB,CAAC,MAAc,EAAE,MAAwB;QAC7D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CACnC,mBAAmB,kBAAkB,CAAC,MAAM,CAAC,aAAa,EAC1D;YACE,QAAQ,EAAS,MAAM,CAAC,QAAQ;YAChC,IAAI,EAAa,MAAM,CAAC,IAAI;YAC5B,OAAO,EAAU,MAAM,CAAC,OAAO;YAC/B,OAAO,EAAU,MAAM,CAAC,OAAO;YAC/B,UAAU,EAAO,MAAM,CAAC,UAAU;YAClC,WAAW,EAAM,MAAM,CAAC,WAAW;YACnC,SAAS,EAAQ,MAAM,CAAC,SAAS,EAAE,SAAS;YAC5C,cAAc,EAAG,MAAM,CAAC,SAAS,EAAE,cAAc;SAClD,CACF,CAAC;QAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAClF,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,eAAe,CACnB,MAAc,EACd,SAAyB,KAAK;QAE9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAClC,mBAAmB,kBAAkB,CAAC,MAAM,CAAC,WAAW,EACxD,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,CAC/E,CAAC;QAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,oCAAoC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3D,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,MAAc;QAChC,OAAO,KAAK,EAAE,MAAwB,EAAE,EAAE;YACxC,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO,CAAC,oBAAoB;YACjD,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC9C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,6CAA6C,CAAC,CAAC;YACnF,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Structured JSON logger with PII redaction support.
3
+ * Implements the Logger interface — swap to any log library (pino, winston) as needed.
4
+ */
5
+ import type { Logger } from '../types/index.js';
6
+ type LogLevel = 'debug' | 'info' | 'warn' | 'error';
7
+ export interface CreateLoggerOptions {
8
+ /** Minimum log level (default: 'info') */
9
+ level?: LogLevel;
10
+ /** Whether to redact PII from log output (default: true) */
11
+ redactPii?: boolean;
12
+ /** Additional fixed context merged into every log entry */
13
+ baseContext?: Record<string, unknown>;
14
+ }
15
+ export declare function createLogger(opts?: CreateLoggerOptions): Logger;
16
+ /** Default singleton logger */
17
+ export declare const defaultLogger: Logger;
18
+ export {};
19
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/observability/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAgChD,KAAK,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AASpD,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,wBAAgB,YAAY,CAAC,IAAI,GAAE,mBAAwB,GAAG,MAAM,CA6BnE;AAED,+BAA+B;AAC/B,eAAO,MAAM,aAAa,QAAmD,CAAC"}