dvgateway-adapters 1.7.1 → 1.8.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.
@@ -150,6 +150,25 @@ export interface OpenAIRealtimeAdapterOptions {
150
150
  * Improves transcription accuracy for known languages.
151
151
  */
152
152
  language?: string;
153
+ /**
154
+ * Source language for live translation (BCP-47, e.g. "ko").
155
+ *
156
+ * Only meaningful when `model` is `gpt-realtime-translate`. When both
157
+ * `inputLanguage` and `outputLanguage` are set and `instructions` is left
158
+ * at the default, the adapter synthesizes a translation system prompt
159
+ * ("translate from <in> to <out> faithfully…") so callers don't have to
160
+ * craft one. If `instructions` is provided explicitly, it wins.
161
+ *
162
+ * Has no effect with other realtime models — those treat the field as
163
+ * a no-op (still accepts free-form code so future translate-aware models
164
+ * work without an SDK bump).
165
+ */
166
+ inputLanguage?: string;
167
+ /**
168
+ * Target language for live translation (BCP-47, e.g. "en").
169
+ * Pairs with `inputLanguage`. See `inputLanguage` for behavior.
170
+ */
171
+ outputLanguage?: string;
153
172
  /**
154
173
  * Temperature for response generation (default: 0.8)
155
174
  * Range: 0.6–1.2 (recommended for realtime)
@@ -198,6 +217,18 @@ export interface RealtimeSpeechAdapter {
198
217
  /** Stop the session and release resources */
199
218
  stop(linkedId?: string): Promise<void>;
200
219
  }
220
+ export declare function languageName(code: string): string;
221
+ /**
222
+ * Build a translation system prompt for `gpt-realtime-translate`.
223
+ *
224
+ * Mirrors the structure recommended by OpenAI's Realtime translation guide:
225
+ * keep pace with the speaker, translate faithfully without commentary,
226
+ * preserve names and numbers, and only emit the translated speech.
227
+ *
228
+ * Exported so callers can preview / override the prompt without running a
229
+ * session, and so unit tests can assert on its structure.
230
+ */
231
+ export declare function buildTranslateInstructions(inputLang: string, outputLang: string): string;
201
232
  export declare class OpenAIRealtimeAdapter implements RealtimeSpeechAdapter {
202
233
  private readonly opts;
203
234
  private readonly tools;
@@ -248,6 +279,16 @@ export declare class OpenAIRealtimeAdapter implements RealtimeSpeechAdapter {
248
279
  submitToolResult(linkedId: string, callId: string, result: unknown): void;
249
280
  startSession(linkedId: string, audioIn: AsyncIterable<AudioChunk>): Promise<void>;
250
281
  stop(linkedId?: string): Promise<void>;
282
+ /**
283
+ * Resolve the system instructions sent in `session.update`.
284
+ *
285
+ * For `gpt-realtime-translate` with both languages set and the caller
286
+ * leaving `instructions` at the SDK default, synthesize a translation
287
+ * prompt from the OpenAI Realtime translation guide. Otherwise return the
288
+ * caller's instructions verbatim — explicit caller instructions always
289
+ * win, including for the translate model.
290
+ */
291
+ private resolveInstructions;
251
292
  private connectRealtime;
252
293
  private pipeAudioIn;
253
294
  private handleServerEvent;
@@ -1 +1 @@
1
- {"version":3,"file":"openai-realtime.d.ts","sourceRoot":"","sources":["../../src/realtime/openai-realtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai-realtime.d.ts","sourceRoot":"","sources":["../../src/realtime/openai-realtime.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,49 @@ const OPENAI_SAMPLE_RATE = 24000; // OpenAI Realtime uses 24kHz
53
53
  const DV_SAMPLE_RATE = 16000; // DVGateway uses 16kHz
54
54
  const INPUT_CHUNK_MS = 20; // 20ms audio frames
55
55
  const INPUT_SAMPLES_24K = Math.round(OPENAI_SAMPLE_RATE * INPUT_CHUNK_MS / 1000); // 480 samples
56
+ const DEFAULT_INSTRUCTIONS = 'You are a helpful voice assistant. Keep answers concise and conversational.';
57
+ /** BCP-47 → human-readable name used in the translate prompt. */
58
+ const LANGUAGE_NAMES = {
59
+ ko: 'Korean',
60
+ en: 'English',
61
+ ja: 'Japanese',
62
+ zh: 'Chinese',
63
+ es: 'Spanish',
64
+ fr: 'French',
65
+ de: 'German',
66
+ it: 'Italian',
67
+ pt: 'Portuguese',
68
+ ru: 'Russian',
69
+ vi: 'Vietnamese',
70
+ id: 'Indonesian',
71
+ th: 'Thai',
72
+ };
73
+ export function languageName(code) {
74
+ if (!code)
75
+ return code;
76
+ return LANGUAGE_NAMES[code.toLowerCase()] ?? code;
77
+ }
78
+ /**
79
+ * Build a translation system prompt for `gpt-realtime-translate`.
80
+ *
81
+ * Mirrors the structure recommended by OpenAI's Realtime translation guide:
82
+ * keep pace with the speaker, translate faithfully without commentary,
83
+ * preserve names and numbers, and only emit the translated speech.
84
+ *
85
+ * Exported so callers can preview / override the prompt without running a
86
+ * session, and so unit tests can assert on its structure.
87
+ */
88
+ export function buildTranslateInstructions(inputLang, outputLang) {
89
+ const inName = languageName(inputLang);
90
+ const outName = languageName(outputLang);
91
+ return [
92
+ `You are a real-time interpreter. Translate the speaker's ${inName} speech into ${outName} as it arrives.`,
93
+ `Speak only the ${outName} translation — do not echo the original, do not add commentary, do not greet, do not answer questions directed at the speaker.`,
94
+ 'Preserve proper nouns, numbers, dates, units, and figures exactly.',
95
+ 'Match the speaker\'s tone (formal vs. casual) and emotional register.',
96
+ 'Keep pace with the speaker; favor short faithful renderings over long paraphrases.',
97
+ ].join(' ');
98
+ }
56
99
  export class OpenAIRealtimeAdapter {
57
100
  opts;
58
101
  tools;
@@ -71,11 +114,13 @@ export class OpenAIRealtimeAdapter {
71
114
  this.opts = {
72
115
  model: opts.model ?? 'gpt-4o-realtime-preview',
73
116
  voice: opts.voice ?? 'alloy',
74
- instructions: opts.instructions ?? 'You are a helpful voice assistant. Keep answers concise and conversational.',
117
+ instructions: opts.instructions ?? DEFAULT_INSTRUCTIONS,
75
118
  turnDetection: opts.turnDetection ?? {},
76
119
  inputTranscription: opts.inputTranscription ?? true,
77
120
  inputTranscriptionModel: opts.inputTranscriptionModel ?? 'whisper-1',
78
121
  language: opts.language ?? '',
122
+ inputLanguage: opts.inputLanguage ?? '',
123
+ outputLanguage: opts.outputLanguage ?? '',
79
124
  temperature: opts.temperature ?? 0.8,
80
125
  maxResponseTokens: opts.maxResponseTokens ?? 'inf',
81
126
  apiKey: opts.apiKey,
@@ -152,7 +197,7 @@ export class OpenAIRealtimeAdapter {
152
197
  const session = {
153
198
  modalities: ['audio', 'text'],
154
199
  voice: this.opts.voice,
155
- instructions: this.opts.instructions,
200
+ instructions: this.resolveInstructions(),
156
201
  input_audio_format: 'pcm16',
157
202
  output_audio_format: 'pcm16',
158
203
  temperature: this.opts.temperature,
@@ -205,6 +250,24 @@ export class OpenAIRealtimeAdapter {
205
250
  }
206
251
  }
207
252
  // ── Private helpers ─────────────────────────────────────────────────────
253
+ /**
254
+ * Resolve the system instructions sent in `session.update`.
255
+ *
256
+ * For `gpt-realtime-translate` with both languages set and the caller
257
+ * leaving `instructions` at the SDK default, synthesize a translation
258
+ * prompt from the OpenAI Realtime translation guide. Otherwise return the
259
+ * caller's instructions verbatim — explicit caller instructions always
260
+ * win, including for the translate model.
261
+ */
262
+ resolveInstructions() {
263
+ const isTranslateModel = this.opts.model === 'gpt-realtime-translate';
264
+ const callerLeftDefault = this.opts.instructions === DEFAULT_INSTRUCTIONS;
265
+ const hasLangPair = !!this.opts.inputLanguage && !!this.opts.outputLanguage;
266
+ if (isTranslateModel && callerLeftDefault && hasLangPair) {
267
+ return buildTranslateInstructions(this.opts.inputLanguage, this.opts.outputLanguage);
268
+ }
269
+ return this.opts.instructions;
270
+ }
208
271
  async connectRealtime(linkedId) {
209
272
  const url = `${REALTIME_API_URL}?model=${encodeURIComponent(this.opts.model)}`;
210
273
  const ws = new WebSocket(url, {
@@ -1 +1 @@
1
- {"version":3,"file":"openai-realtime.js","sourceRoot":"","sources":["../../src/realtime/openai-realtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai-realtime.js","sourceRoot":"","sources":["../../src/realtime/openai-realtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=openai-realtime.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-realtime.test.d.ts","sourceRoot":"","sources":["../../src/realtime/openai-realtime.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Unit tests for OpenAIRealtimeAdapter's translation prompt helpers and
3
+ * the resolveInstructions decision tree. These run without a live
4
+ * WebSocket — they exercise pure functions and constructor wiring.
5
+ */
6
+ import { OpenAIRealtimeAdapter, buildTranslateInstructions, languageName, } from './openai-realtime.js';
7
+ describe('languageName', () => {
8
+ it('maps known BCP-47 codes to English names', () => {
9
+ expect(languageName('ko')).toBe('Korean');
10
+ expect(languageName('en')).toBe('English');
11
+ expect(languageName('ja')).toBe('Japanese');
12
+ expect(languageName('zh')).toBe('Chinese');
13
+ });
14
+ it('is case-insensitive on the BCP-47 code', () => {
15
+ expect(languageName('KO')).toBe('Korean');
16
+ expect(languageName('En')).toBe('English');
17
+ });
18
+ it('passes through unknown codes verbatim so future languages still work', () => {
19
+ expect(languageName('xx')).toBe('xx');
20
+ expect(languageName('ko-KR')).toBe('ko-KR');
21
+ });
22
+ it('returns empty string unchanged', () => {
23
+ expect(languageName('')).toBe('');
24
+ });
25
+ });
26
+ describe('buildTranslateInstructions', () => {
27
+ it('names both source and target languages in the prompt', () => {
28
+ const prompt = buildTranslateInstructions('ko', 'en');
29
+ expect(prompt).toContain('Korean');
30
+ expect(prompt).toContain('English');
31
+ });
32
+ it('tells the model to emit only the translation (no echo, no commentary)', () => {
33
+ const prompt = buildTranslateInstructions('ko', 'en');
34
+ expect(prompt).toMatch(/do not echo/i);
35
+ expect(prompt).toMatch(/do not add commentary/i);
36
+ });
37
+ it('tells the model to preserve proper nouns, numbers, units', () => {
38
+ const prompt = buildTranslateInstructions('en', 'ko');
39
+ expect(prompt).toMatch(/proper nouns/i);
40
+ expect(prompt).toMatch(/numbers/i);
41
+ });
42
+ it('tells the model to keep pace with the speaker', () => {
43
+ const prompt = buildTranslateInstructions('en', 'ja');
44
+ expect(prompt).toMatch(/keep pace/i);
45
+ });
46
+ it('uses raw codes when the language is not in the lookup table', () => {
47
+ const prompt = buildTranslateInstructions('xx', 'yy');
48
+ expect(prompt).toContain('xx');
49
+ expect(prompt).toContain('yy');
50
+ });
51
+ });
52
+ describe('OpenAIRealtimeAdapter — resolveInstructions decision tree', () => {
53
+ // We assert against the private `resolveInstructions` via a structural
54
+ // cast — mirroring the pattern used in gemini-live.test.ts for private
55
+ // adapter state. This keeps the surface area small (the helper stays
56
+ // private) while still letting tests pin the decision logic.
57
+ function call(adapter) {
58
+ const fn = adapter.resolveInstructions;
59
+ return fn.call(adapter);
60
+ }
61
+ it('returns SDK default instructions when no language pair, no override, default model', () => {
62
+ const adapter = new OpenAIRealtimeAdapter({ apiKey: 'k' });
63
+ expect(call(adapter)).toMatch(/helpful voice assistant/i);
64
+ });
65
+ it('returns caller-supplied instructions verbatim (default model)', () => {
66
+ const adapter = new OpenAIRealtimeAdapter({
67
+ apiKey: 'k',
68
+ instructions: 'You are Norman the friendly bilingual receptionist.',
69
+ });
70
+ expect(call(adapter)).toBe('You are Norman the friendly bilingual receptionist.');
71
+ });
72
+ it('synthesizes a translate prompt when model=translate + language pair + default instructions', () => {
73
+ const adapter = new OpenAIRealtimeAdapter({
74
+ apiKey: 'k',
75
+ model: 'gpt-realtime-translate',
76
+ inputLanguage: 'ko',
77
+ outputLanguage: 'en',
78
+ });
79
+ const out = call(adapter);
80
+ expect(out).toMatch(/real-time interpreter/i);
81
+ expect(out).toContain('Korean');
82
+ expect(out).toContain('English');
83
+ });
84
+ it('respects caller instructions even on the translate model', () => {
85
+ const adapter = new OpenAIRealtimeAdapter({
86
+ apiKey: 'k',
87
+ model: 'gpt-realtime-translate',
88
+ inputLanguage: 'ko',
89
+ outputLanguage: 'en',
90
+ instructions: 'Custom translator prompt with domain glossary.',
91
+ });
92
+ expect(call(adapter)).toBe('Custom translator prompt with domain glossary.');
93
+ });
94
+ it('does NOT auto-synthesize when only one language is set (incomplete pair)', () => {
95
+ const adapter = new OpenAIRealtimeAdapter({
96
+ apiKey: 'k',
97
+ model: 'gpt-realtime-translate',
98
+ inputLanguage: 'ko',
99
+ });
100
+ // Falls back to the SDK default — no half-baked translate prompt.
101
+ expect(call(adapter)).toMatch(/helpful voice assistant/i);
102
+ });
103
+ it('does NOT auto-synthesize when model is not the translate variant', () => {
104
+ const adapter = new OpenAIRealtimeAdapter({
105
+ apiKey: 'k',
106
+ model: 'gpt-realtime-2',
107
+ inputLanguage: 'ko',
108
+ outputLanguage: 'en',
109
+ });
110
+ // gpt-realtime-2 is a conversational model — translation prompt
111
+ // would just confuse it. Keep the SDK default unless the caller
112
+ // crafts their own prompt.
113
+ expect(call(adapter)).toMatch(/helpful voice assistant/i);
114
+ });
115
+ });
116
+ //# sourceMappingURL=openai-realtime.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-realtime.test.js","sourceRoot":"","sources":["../../src/realtime/openai-realtime.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dvgateway-adapters",
3
- "version": "1.7.1",
3
+ "version": "1.8.0",
4
4
  "description": "AI service adapters for DVGateway SDK (Deepgram, ElevenLabs, Anthropic, OpenAI, OpenAI Realtime)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -77,7 +77,7 @@
77
77
  "dependencies": {
78
78
  "@anthropic-ai/sdk": "^0.39.0",
79
79
  "openai": "^4.85.0",
80
- "ws": "^8.18.0"
80
+ "ws": "^8.21.0"
81
81
  },
82
82
  "devDependencies": {
83
83
  "@types/jest": "^30.0.0",