@cogitator-ai/voice 0.1.13 → 0.3.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 (63) hide show
  1. package/README.md +128 -84
  2. package/dist/audio.d.ts +7 -0
  3. package/dist/audio.d.ts.map +1 -1
  4. package/dist/audio.js +40 -3
  5. package/dist/audio.js.map +1 -1
  6. package/dist/cogitator-runner.d.ts +34 -0
  7. package/dist/cogitator-runner.d.ts.map +1 -0
  8. package/dist/cogitator-runner.js +28 -0
  9. package/dist/cogitator-runner.js.map +1 -0
  10. package/dist/index.d.ts +6 -5
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +7 -4
  13. package/dist/index.js.map +1 -1
  14. package/dist/pipeline/index.d.ts +2 -2
  15. package/dist/pipeline/index.d.ts.map +1 -1
  16. package/dist/pipeline/index.js.map +1 -1
  17. package/dist/pipeline/pipeline-session.d.ts +20 -2
  18. package/dist/pipeline/pipeline-session.d.ts.map +1 -1
  19. package/dist/pipeline/pipeline-session.js +187 -63
  20. package/dist/pipeline/pipeline-session.js.map +1 -1
  21. package/dist/pipeline/voice-pipeline.d.ts +12 -7
  22. package/dist/pipeline/voice-pipeline.d.ts.map +1 -1
  23. package/dist/pipeline/voice-pipeline.js +14 -4
  24. package/dist/pipeline/voice-pipeline.js.map +1 -1
  25. package/dist/realtime/gemini-realtime.d.ts +15 -3
  26. package/dist/realtime/gemini-realtime.d.ts.map +1 -1
  27. package/dist/realtime/gemini-realtime.js +140 -94
  28. package/dist/realtime/gemini-realtime.js.map +1 -1
  29. package/dist/realtime/openai-realtime.d.ts +10 -1
  30. package/dist/realtime/openai-realtime.d.ts.map +1 -1
  31. package/dist/realtime/openai-realtime.js +140 -69
  32. package/dist/realtime/openai-realtime.js.map +1 -1
  33. package/dist/realtime/realtime-session.d.ts +10 -0
  34. package/dist/realtime/realtime-session.d.ts.map +1 -1
  35. package/dist/realtime/realtime-session.js +60 -7
  36. package/dist/realtime/realtime-session.js.map +1 -1
  37. package/dist/stt/deepgram-stt.d.ts +3 -0
  38. package/dist/stt/deepgram-stt.d.ts.map +1 -1
  39. package/dist/stt/deepgram-stt.js +104 -55
  40. package/dist/stt/deepgram-stt.js.map +1 -1
  41. package/dist/stt/openai-stt.d.ts +5 -0
  42. package/dist/stt/openai-stt.d.ts.map +1 -1
  43. package/dist/stt/openai-stt.js +87 -17
  44. package/dist/stt/openai-stt.js.map +1 -1
  45. package/dist/tools.d.ts +3 -3
  46. package/dist/transport/ws-transport.d.ts +6 -7
  47. package/dist/transport/ws-transport.d.ts.map +1 -1
  48. package/dist/transport/ws-transport.js +58 -20
  49. package/dist/transport/ws-transport.js.map +1 -1
  50. package/dist/tts/elevenlabs-tts.d.ts.map +1 -1
  51. package/dist/tts/elevenlabs-tts.js +26 -16
  52. package/dist/tts/elevenlabs-tts.js.map +1 -1
  53. package/dist/types.d.ts +38 -16
  54. package/dist/types.d.ts.map +1 -1
  55. package/dist/vad/silero-vad.d.ts +14 -1
  56. package/dist/vad/silero-vad.d.ts.map +1 -1
  57. package/dist/vad/silero-vad.js +101 -25
  58. package/dist/vad/silero-vad.js.map +1 -1
  59. package/dist/voice-agent.d.ts +14 -0
  60. package/dist/voice-agent.d.ts.map +1 -1
  61. package/dist/voice-agent.js +112 -23
  62. package/dist/voice-agent.js.map +1 -1
  63. package/package.json +15 -13
@@ -1,125 +1,148 @@
1
1
  import { EventEmitter } from 'node:events';
2
2
  import { WebSocket } from 'ws';
3
- const DEFAULT_MODEL = 'gemini-live-2.5-flash-native-audio';
3
+ const DEFAULT_MODEL = 'gemini-3.8-live';
4
+ const DEFAULT_VOICE = 'Puck';
4
5
  const BASE_URL = 'wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent';
5
6
  const CONNECT_TIMEOUT_MS = 30_000;
7
+ const INPUT_MIME_TYPE = 'audio/pcm;rate=16000';
8
+ function rawDataToString(data) {
9
+ if (Array.isArray(data))
10
+ return Buffer.concat(data).toString();
11
+ if (data instanceof ArrayBuffer)
12
+ return Buffer.from(new Uint8Array(data)).toString();
13
+ return data.toString();
14
+ }
15
+ /**
16
+ * Gemini Live API adapter. Input audio is PCM16 mono at 16kHz,
17
+ * output audio is PCM16 mono at 24kHz.
18
+ */
6
19
  export class GeminiRealtimeAdapter extends EventEmitter {
7
20
  config;
8
21
  model;
9
22
  ws = null;
23
+ connected = false;
24
+ modelTurnActive = false;
10
25
  interrupting = false;
26
+ userTranscript = '';
27
+ assistantTranscript = '';
28
+ assistantText = '';
11
29
  constructor(config) {
12
30
  super();
13
31
  this.config = config;
14
32
  this.model = config.model ?? DEFAULT_MODEL;
15
33
  }
34
+ get isConnected() {
35
+ return this.connected;
36
+ }
16
37
  async connect() {
17
38
  if (this.ws) {
18
39
  throw new Error('Already connected or connecting — call close() first');
19
40
  }
20
- const url = `${BASE_URL}?key=${this.config.apiKey}`;
21
41
  return new Promise((resolve, reject) => {
22
42
  let settled = false;
23
- const settleResolve = () => {
24
- if (settled)
25
- return;
26
- settled = true;
27
- clearTimeout(timer);
28
- resolve();
29
- };
30
- const settleReject = (err) => {
43
+ const settle = (err) => {
31
44
  if (settled)
32
45
  return;
33
46
  settled = true;
34
47
  clearTimeout(timer);
35
- reject(err);
48
+ if (err)
49
+ reject(err);
50
+ else
51
+ resolve();
36
52
  };
37
- const ws = new WebSocket(url);
53
+ const ws = new WebSocket(BASE_URL, {
54
+ headers: { 'x-goog-api-key': this.config.apiKey },
55
+ });
38
56
  this.ws = ws;
39
57
  const timer = setTimeout(() => {
40
- this.ws = null;
58
+ if (this.ws === ws)
59
+ this.ws = null;
41
60
  ws.removeAllListeners();
42
- ws.close();
43
- settleReject(new Error(`Connect timed out after ${CONNECT_TIMEOUT_MS}ms`));
61
+ ws.on('error', () => { });
62
+ ws.terminate();
63
+ settle(new Error(`Connect timed out after ${CONNECT_TIMEOUT_MS}ms`));
44
64
  }, CONNECT_TIMEOUT_MS);
45
65
  ws.on('open', () => {
46
66
  this.sendSetup();
47
67
  });
48
68
  ws.on('message', (data) => {
49
- const buf = Array.isArray(data)
50
- ? Buffer.concat(data)
51
- : data instanceof ArrayBuffer
52
- ? Buffer.from(new Uint8Array(data))
53
- : data;
54
- const raw = buf.toString();
55
69
  let msg;
56
70
  try {
57
- msg = JSON.parse(raw);
71
+ msg = JSON.parse(rawDataToString(data));
58
72
  }
59
73
  catch {
60
74
  this.emit('error', new Error('Failed to parse WebSocket message'));
61
75
  return;
62
76
  }
77
+ if (msg.error) {
78
+ const err = new Error(msg.error.message ?? `Gemini error (code: ${msg.error.code ?? 'unknown'})`);
79
+ if (settled)
80
+ this.emit('error', err);
81
+ else
82
+ settle(err);
83
+ return;
84
+ }
63
85
  if (msg.setupComplete) {
86
+ this.connected = true;
64
87
  this.emit('connected');
65
- settleResolve();
88
+ settle();
66
89
  return;
67
90
  }
68
- if (msg.error) {
69
- const message = msg.error.message ?? `Gemini error (code: ${msg.error.code ?? 'unknown'})`;
70
- const err = new Error(message);
71
- this.emit('error', err);
72
- settleReject(err);
73
- return;
91
+ if (msg.serverContent) {
92
+ this.handleServerContent(msg.serverContent);
93
+ }
94
+ if (msg.toolCall?.functionCalls?.length) {
95
+ void this.handleToolCalls(msg.toolCall.functionCalls);
74
96
  }
75
- this.handleMessage(msg);
76
97
  });
77
98
  ws.on('error', (err) => {
78
- this.emit('error', err);
79
- settleReject(err);
99
+ if (settled)
100
+ this.emit('error', err);
101
+ else
102
+ settle(err);
80
103
  });
81
104
  ws.on('close', (code, reason) => {
82
105
  const reasonStr = reason.toString() || 'connection closed';
83
- this.ws = null;
84
- this.emit('disconnected', code, reasonStr);
85
- settleReject(new Error(`WebSocket closed before connect (code ${code}): ${reasonStr}`));
106
+ if (this.ws === ws)
107
+ this.ws = null;
108
+ const wasConnected = this.connected;
109
+ this.resetTurn();
110
+ this.connected = false;
111
+ settle(new Error(`WebSocket closed before connect (code ${code}): ${reasonStr}`));
112
+ if (wasConnected)
113
+ this.emit('disconnected', code, reasonStr);
86
114
  });
87
115
  });
88
116
  }
89
117
  pushAudio(chunk) {
90
118
  this.send({
91
119
  realtimeInput: {
92
- mediaChunks: [
93
- {
94
- mimeType: 'audio/pcm;rate=16000',
95
- data: chunk.toString('base64'),
96
- },
97
- ],
120
+ audio: { mimeType: INPUT_MIME_TYPE, data: chunk.toString('base64') },
98
121
  },
99
122
  });
100
123
  }
101
124
  sendText(text) {
102
- this.send({
103
- clientContent: {
104
- turns: [{ role: 'user', parts: [{ text }] }],
105
- turnComplete: true,
106
- },
107
- });
125
+ this.send({ realtimeInput: { text } });
108
126
  }
109
127
  /**
110
128
  * Gemini Live barge-in is driven by incoming user audio, not a control message.
111
- * This sets an internal flag that drops inbound model audio until the current
112
- * turn completes (turnComplete), simulating an interruption on the consumer side.
129
+ * While a model turn is in progress this drops the remaining model audio until
130
+ * the turn completes, simulating an interruption on the consumer side.
113
131
  */
114
132
  interrupt() {
115
- this.interrupting = true;
133
+ if (this.modelTurnActive) {
134
+ this.interrupting = true;
135
+ }
116
136
  }
117
137
  close() {
118
138
  const ws = this.ws;
139
+ this.connected = false;
140
+ this.resetTurn();
119
141
  if (!ws)
120
142
  return;
121
143
  this.ws = null;
122
144
  ws.removeAllListeners();
145
+ ws.on('error', () => { });
123
146
  ws.close();
124
147
  }
125
148
  sendSetup() {
@@ -129,17 +152,15 @@ export class GeminiRealtimeAdapter extends EventEmitter {
129
152
  responseModalities: ['AUDIO'],
130
153
  speechConfig: {
131
154
  voiceConfig: {
132
- prebuiltVoiceConfig: {
133
- voiceName: this.config.voice ?? 'Puck',
134
- },
155
+ prebuiltVoiceConfig: { voiceName: this.config.voice ?? DEFAULT_VOICE },
135
156
  },
136
157
  },
137
158
  },
159
+ inputAudioTranscription: {},
160
+ outputAudioTranscription: {},
138
161
  };
139
162
  if (this.config.instructions) {
140
- setup.systemInstruction = {
141
- parts: [{ text: this.config.instructions }],
142
- };
163
+ setup.systemInstruction = { parts: [{ text: this.config.instructions }] };
143
164
  }
144
165
  if (this.config.tools?.length) {
145
166
  setup.tools = [
@@ -154,64 +175,89 @@ export class GeminiRealtimeAdapter extends EventEmitter {
154
175
  }
155
176
  this.send({ setup });
156
177
  }
157
- handleMessage(msg) {
158
- if (msg.error) {
159
- const message = msg.error.message ?? `Gemini error (code: ${msg.error.code ?? 'unknown'})`;
160
- this.emit('error', new Error(message));
161
- return;
178
+ handleServerContent(content) {
179
+ const inputText = content.inputTranscription?.text;
180
+ if (inputText) {
181
+ this.userTranscript += inputText;
162
182
  }
163
- if (msg.serverContent) {
164
- this.handleServerContent(msg.serverContent);
183
+ const outputText = content.outputTranscription?.text;
184
+ const parts = content.modelTurn?.parts ?? [];
185
+ if (parts.length > 0 || outputText) {
186
+ this.modelTurnActive = true;
187
+ this.flushUserTranscript();
165
188
  }
166
- if (msg.toolCall) {
167
- void this.handleToolCalls(msg.toolCall.functionCalls);
189
+ if (outputText) {
190
+ this.assistantTranscript += outputText;
168
191
  }
169
- }
170
- handleServerContent(content) {
171
- if (!this.interrupting && content.modelTurn?.parts) {
172
- for (const part of content.modelTurn.parts) {
173
- if (part.inlineData) {
174
- this.emit('audio', Buffer.from(part.inlineData.data, 'base64'));
175
- }
176
- if (part.text) {
177
- this.emit('transcript', part.text, 'assistant');
178
- }
192
+ for (const part of parts) {
193
+ if (part.thought)
194
+ continue;
195
+ if (part.inlineData?.data && !this.interrupting) {
196
+ this.emit('audio', Buffer.from(part.inlineData.data, 'base64'));
197
+ }
198
+ if (part.text) {
199
+ this.assistantText += part.text;
179
200
  }
180
201
  }
202
+ if (content.interrupted) {
203
+ this.flushAssistantTranscript();
204
+ this.modelTurnActive = false;
205
+ this.interrupting = false;
206
+ this.emit('speech_start');
207
+ }
181
208
  if (content.turnComplete) {
209
+ this.flushUserTranscript();
210
+ this.flushAssistantTranscript();
211
+ this.modelTurnActive = false;
182
212
  this.interrupting = false;
183
213
  this.emit('turn_end');
184
214
  }
185
215
  }
216
+ flushUserTranscript() {
217
+ const text = this.userTranscript.trim();
218
+ this.userTranscript = '';
219
+ if (text)
220
+ this.emit('transcript', text, 'user');
221
+ }
222
+ flushAssistantTranscript() {
223
+ const text = (this.assistantTranscript || this.assistantText).trim();
224
+ this.assistantTranscript = '';
225
+ this.assistantText = '';
226
+ if (text)
227
+ this.emit('transcript', text, 'assistant');
228
+ }
229
+ resetTurn() {
230
+ this.modelTurnActive = false;
231
+ this.interrupting = false;
232
+ this.userTranscript = '';
233
+ this.assistantTranscript = '';
234
+ this.assistantText = '';
235
+ }
186
236
  async handleToolCalls(calls) {
187
- const responses = await Promise.all(calls.map(async (call, index) => {
237
+ const ws = this.ws;
238
+ const functionResponses = await Promise.all(calls.map(async (call, index) => {
188
239
  const id = call.id ?? `${call.name}-${index}`;
189
- this.emit('tool_call', call.name, call.args);
240
+ const args = call.args ?? {};
241
+ this.emit('tool_call', call.name, args);
190
242
  const tool = this.config.tools?.find((t) => t.name === call.name);
191
243
  if (!tool) {
192
- return {
193
- id,
194
- name: call.name,
195
- response: { result: JSON.stringify({ error: `Unknown tool: ${call.name}` }) },
196
- };
244
+ return { id, name: call.name, response: { error: `Unknown tool: ${call.name}` } };
197
245
  }
198
- let result;
199
246
  try {
200
- const output = await tool.execute(call.args);
201
- result = JSON.stringify(output);
247
+ const output = await tool.execute(args);
248
+ return { id, name: call.name, response: { result: output ?? null } };
202
249
  }
203
250
  catch (err) {
204
- result = JSON.stringify({ error: err instanceof Error ? err.message : String(err) });
251
+ return {
252
+ id,
253
+ name: call.name,
254
+ response: { error: err instanceof Error ? err.message : String(err) },
255
+ };
205
256
  }
206
- return {
207
- id,
208
- name: call.name,
209
- response: { result },
210
- };
211
257
  }));
212
- this.send({
213
- toolResponse: { functionResponses: responses },
214
- });
258
+ if (this.ws !== ws)
259
+ return;
260
+ this.send({ toolResponse: { functionResponses } });
215
261
  }
216
262
  send(data) {
217
263
  const ws = this.ws;
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-realtime.js","sourceRoot":"","sources":["../../src/realtime/gemini-realtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gemini-realtime.js","sourceRoot":"","sources":["../../src/realtime/gemini-realtime.ts"],"names":[],"mappings":"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"}
@@ -10,11 +10,18 @@ interface OpenAIRealtimeEvents {
10
10
  turn_end: [];
11
11
  error: [error: Error];
12
12
  }
13
+ /**
14
+ * OpenAI Realtime API (GA interface) adapter. Audio in both directions is
15
+ * PCM16 mono at 24kHz.
16
+ */
13
17
  export declare class OpenAIRealtimeAdapter extends EventEmitter<OpenAIRealtimeEvents> {
14
18
  private readonly config;
15
19
  private readonly model;
16
20
  private ws;
21
+ private connected;
22
+ private responseActive;
17
23
  constructor(config: RealtimeSessionConfig);
24
+ get isConnected(): boolean;
18
25
  connect(): Promise<void>;
19
26
  pushAudio(chunk: Buffer): void;
20
27
  sendText(text: string): void;
@@ -22,7 +29,9 @@ export declare class OpenAIRealtimeAdapter extends EventEmitter<OpenAIRealtimeEv
22
29
  close(): void;
23
30
  private sendSessionUpdate;
24
31
  private handleMessage;
25
- private handleToolCall;
32
+ private handleResponseDone;
33
+ private handleToolCalls;
34
+ private executeToolCall;
26
35
  private send;
27
36
  }
28
37
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"openai-realtime.d.ts","sourceRoot":"","sources":["../../src/realtime/openai-realtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAMzD,UAAU,oBAAoB;IAC5B,SAAS,EAAE,EAAE,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC;IACvD,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,YAAY,EAAE,EAAE,CAAC;IACjB,QAAQ,EAAE,EAAE,CAAC;IACb,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CACvB;AAED,qBAAa,qBAAsB,SAAQ,YAAY,CAAC,oBAAoB,CAAC;IAC3E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,EAAE,CAA0B;gBAExB,MAAM,EAAE,qBAAqB;IAMnC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkE9B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAO9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAY5B,SAAS,IAAI,IAAI;IAIjB,KAAK,IAAI,IAAI;IAQb,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,aAAa;YAyDP,cAAc;IAmC5B,OAAO,CAAC,IAAI;CAMb"}
1
+ {"version":3,"file":"openai-realtime.d.ts","sourceRoot":"","sources":["../../src/realtime/openai-realtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AASzD,UAAU,oBAAoB;IAC5B,SAAS,EAAE,EAAE,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC;IACvD,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,YAAY,EAAE,EAAE,CAAC;IACjB,QAAQ,EAAE,EAAE,CAAC;IACb,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CACvB;AAkBD;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,YAAY,CAAC,oBAAoB,CAAC;IAC3E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,EAAE,qBAAqB;IAMzC,IAAI,WAAW,IAAI,OAAO,CAEzB;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA6D9B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAO9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAY5B,SAAS,IAAI,IAAI;IAKjB,KAAK,IAAI,IAAI;IAWb,OAAO,CAAC,iBAAiB;IAkCzB,OAAO,CAAC,aAAa;IA8DrB,OAAO,CAAC,kBAAkB;YA2BZ,eAAe;YAcf,eAAe;IAkC7B,OAAO,CAAC,IAAI;CAMb"}