@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,10 +1,19 @@
1
1
  import { EventEmitter } from 'node:events';
2
+ import type http from 'node:http';
2
3
  import type { VoiceAgentConfig } from './types.js';
3
4
  interface VoiceAgentEvents {
4
5
  session_start: [sessionId: string];
5
6
  session_end: [sessionId: string];
6
7
  error: [error: Error];
7
8
  }
9
+ /**
10
+ * Serves voice sessions over WebSocket.
11
+ *
12
+ * Client -> server: binary frames carry PCM16 audio; JSON text frames carry control
13
+ * messages `{ type: 'interrupt' }`, `{ type: 'end_of_speech' }` and `{ type: 'text', text }`.
14
+ * Server -> client: binary audio frames and JSON events (`transcript`, `agent_response`,
15
+ * `speech_start`, `speech_end`, `turn_end`).
16
+ */
8
17
  export declare class VoiceAgent extends EventEmitter<VoiceAgentEvents> {
9
18
  private readonly config;
10
19
  private transport;
@@ -14,11 +23,16 @@ export declare class VoiceAgent extends EventEmitter<VoiceAgentEvents> {
14
23
  get port(): number | undefined;
15
24
  get activeSessions(): number;
16
25
  listen(port: number): Promise<void>;
26
+ /** Serve voice sessions on an existing HTTP server (shares its port). */
27
+ attach(server: http.Server): void;
17
28
  close(): Promise<void>;
29
+ private createTransport;
18
30
  private validateConfig;
19
31
  private handleConnection;
32
+ private handleControlMessage;
20
33
  private setupPipelineSession;
21
34
  private setupRealtimeSession;
35
+ private reportError;
22
36
  private cleanupSession;
23
37
  }
24
38
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"voice-agent.d.ts","sourceRoot":"","sources":["../src/voice-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAYnD,UAAU,gBAAgB;IACxB,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACnC,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CACvB;AAED,qBAAa,UAAW,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,QAAQ,CAA8B;gBAElC,MAAM,EAAE,gBAAgB;IAepC,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAEK,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,oBAAoB;IAiC5B,OAAO,CAAC,oBAAoB;YAkCd,cAAc;CAQ7B"}
1
+ {"version":3,"file":"voice-agent.d.ts","sourceRoot":"","sources":["../src/voice-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAYnD,UAAU,gBAAgB;IACxB,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACnC,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CACvB;AAeD;;;;;;;GAOG;AACH,qBAAa,UAAW,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,QAAQ,CAA8B;gBAElC,MAAM,EAAE,gBAAgB;IAepC,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAEK,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzC,yEAAyE;IACzE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI;IAI3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,oBAAoB;IAqC5B,OAAO,CAAC,oBAAoB;IAsD5B,OAAO,CAAC,WAAW;YAML,cAAc;CAM7B"}
@@ -2,6 +2,25 @@ import { EventEmitter } from 'node:events';
2
2
  import { WebSocketTransport } from './transport/ws-transport.js';
3
3
  import { VoicePipeline } from './pipeline/voice-pipeline.js';
4
4
  import { RealtimeSession } from './realtime/realtime-session.js';
5
+ const WS_INTERNAL_ERROR = 1011;
6
+ const MAX_CLOSE_REASON_BYTES = 120;
7
+ function toError(err) {
8
+ return err instanceof Error ? err : new Error(String(err));
9
+ }
10
+ function closeReason(message) {
11
+ const buf = Buffer.from(message);
12
+ if (buf.length <= MAX_CLOSE_REASON_BYTES)
13
+ return message;
14
+ return buf.subarray(0, MAX_CLOSE_REASON_BYTES).toString().replace(/�+$/, '');
15
+ }
16
+ /**
17
+ * Serves voice sessions over WebSocket.
18
+ *
19
+ * Client -> server: binary frames carry PCM16 audio; JSON text frames carry control
20
+ * messages `{ type: 'interrupt' }`, `{ type: 'end_of_speech' }` and `{ type: 'text', text }`.
21
+ * Server -> client: binary audio frames and JSON events (`transcript`, `agent_response`,
22
+ * `speech_start`, `speech_end`, `turn_end`).
23
+ */
5
24
  export class VoiceAgent extends EventEmitter {
6
25
  config;
7
26
  transport = null;
@@ -27,18 +46,41 @@ export class VoiceAgent extends EventEmitter {
27
46
  return this.sessions.size;
28
47
  }
29
48
  async listen(port) {
30
- this.transport = new WebSocketTransport(this.config.transport);
31
- this.transport.on('connection', (client) => this.handleConnection(client));
32
- await this.transport.listen(port);
49
+ const transport = this.createTransport();
50
+ try {
51
+ await transport.listen(port);
52
+ }
53
+ catch (err) {
54
+ this.transport = null;
55
+ await transport.close().catch(() => { });
56
+ throw err;
57
+ }
58
+ }
59
+ /** Serve voice sessions on an existing HTTP server (shares its port). */
60
+ attach(server) {
61
+ this.createTransport().attachToServer(server);
33
62
  }
34
63
  async close() {
35
64
  const entries = [...this.sessions.entries()];
36
65
  this.sessions.clear();
37
- await Promise.allSettled(entries.map(([id, entry]) => this.cleanupSession(id, entry)));
66
+ await Promise.allSettled(entries.map(([, entry]) => this.cleanupSession(entry)));
67
+ for (const [id] of entries) {
68
+ this.emit('session_end', id);
69
+ }
38
70
  if (this.transport) {
39
- await this.transport.close();
71
+ const transport = this.transport;
40
72
  this.transport = null;
73
+ await transport.close();
74
+ }
75
+ }
76
+ createTransport() {
77
+ if (this.transport) {
78
+ throw new Error('VoiceAgent is already listening — call close() first');
41
79
  }
80
+ const transport = new WebSocketTransport(this.config.transport);
81
+ transport.on('connection', (client) => this.handleConnection(client));
82
+ this.transport = transport;
83
+ return transport;
42
84
  }
43
85
  validateConfig(config) {
44
86
  if (config.mode === 'pipeline') {
@@ -53,30 +95,57 @@ export class VoiceAgent extends EventEmitter {
53
95
  if (!config.realtimeApiKey)
54
96
  throw new Error('realtimeApiKey is required for realtime mode');
55
97
  }
98
+ else {
99
+ throw new Error(`Unknown mode: ${String(config.mode)}`);
100
+ }
56
101
  }
57
102
  handleConnection(client) {
58
103
  const sessionId = client.id;
59
104
  const entry = { client };
60
- if (this.config.mode === 'pipeline') {
61
- this.setupPipelineSession(entry);
62
- }
63
- else {
64
- this.setupRealtimeSession(entry);
65
- }
66
105
  this.sessions.set(sessionId, entry);
67
- this.emit('session_start', sessionId);
68
106
  client.on('close', () => {
69
107
  if (!this.sessions.delete(sessionId))
70
108
  return;
71
- void this.cleanupSession(sessionId, entry);
109
+ void this.cleanupSession(entry).catch((err) => this.reportError(toError(err)));
72
110
  this.emit('session_end', sessionId);
73
111
  });
74
112
  client.on('error', (err) => {
75
- this.emit('error', err);
113
+ this.reportError(err);
76
114
  });
115
+ client.on('message', (msg) => this.handleControlMessage(entry, msg));
116
+ if (this.config.mode === 'pipeline') {
117
+ this.setupPipelineSession(entry);
118
+ }
119
+ else {
120
+ this.setupRealtimeSession(entry);
121
+ }
122
+ this.emit('session_start', sessionId);
123
+ }
124
+ handleControlMessage(entry, msg) {
125
+ switch (msg.type) {
126
+ case 'interrupt':
127
+ entry.pipelineSession?.interrupt();
128
+ entry.realtimeSession?.interrupt();
129
+ break;
130
+ case 'end_of_speech':
131
+ entry.pipelineSession?.endAudio();
132
+ break;
133
+ case 'text':
134
+ if (typeof msg.text !== 'string' || msg.text.trim().length === 0) {
135
+ this.reportError(new Error('Control message "text" requires a non-empty text field'));
136
+ return;
137
+ }
138
+ if (entry.pipelineSession) {
139
+ void entry.pipelineSession.sendText(msg.text);
140
+ }
141
+ entry.realtimeSession?.sendText(msg.text);
142
+ break;
143
+ default:
144
+ this.reportError(new Error(`Unknown control message type: ${String(msg.type)}`));
145
+ }
77
146
  }
78
147
  setupPipelineSession(entry) {
79
- const session = this.pipeline.createSession();
148
+ const session = this.pipeline.createSession({ sessionId: entry.client.id });
80
149
  entry.pipelineSession = session;
81
150
  entry.client.on('audio', (chunk) => {
82
151
  session.pushAudio(chunk);
@@ -96,8 +165,11 @@ export class VoiceAgent extends EventEmitter {
96
165
  session.on('speech_end', () => {
97
166
  entry.client.sendMessage({ type: 'speech_end' });
98
167
  });
168
+ session.on('turn_end', () => {
169
+ entry.client.sendMessage({ type: 'turn_end' });
170
+ });
99
171
  session.on('error', (err) => {
100
- this.emit('error', err);
172
+ this.reportError(err);
101
173
  });
102
174
  }
103
175
  setupRealtimeSession(entry) {
@@ -106,6 +178,8 @@ export class VoiceAgent extends EventEmitter {
106
178
  apiKey: this.config.realtimeApiKey,
107
179
  model: this.config.realtimeModel,
108
180
  voice: this.config.voice,
181
+ instructions: this.config.instructions ?? this.config.agent.instructions,
182
+ tools: this.config.tools,
109
183
  });
110
184
  entry.realtimeSession = session;
111
185
  entry.client.on('audio', (chunk) => {
@@ -120,20 +194,35 @@ export class VoiceAgent extends EventEmitter {
120
194
  session.on('speech_start', () => {
121
195
  entry.client.sendMessage({ type: 'speech_start' });
122
196
  });
197
+ session.on('turn_end', () => {
198
+ entry.client.sendMessage({ type: 'turn_end' });
199
+ });
123
200
  session.on('error', (err) => {
124
- this.emit('error', err);
201
+ this.reportError(err);
202
+ });
203
+ session.on('disconnected', (code, reason) => {
204
+ if (!this.sessions.has(entry.client.id))
205
+ return;
206
+ entry.client.close(WS_INTERNAL_ERROR, closeReason(`Realtime provider disconnected (${code}): ${reason}`));
125
207
  });
126
- void session.connect().catch((err) => {
127
- this.emit('error', err instanceof Error ? err : new Error(String(err)));
208
+ session.connect().catch((err) => {
209
+ if (!this.sessions.has(entry.client.id))
210
+ return;
211
+ const error = toError(err);
212
+ this.reportError(error);
213
+ entry.client.close(WS_INTERNAL_ERROR, closeReason(`Realtime connect failed: ${error.message}`));
128
214
  });
129
215
  }
130
- async cleanupSession(_id, entry) {
216
+ reportError(err) {
217
+ if (this.listenerCount('error') > 0) {
218
+ this.emit('error', err);
219
+ }
220
+ }
221
+ async cleanupSession(entry) {
222
+ entry.realtimeSession?.close();
131
223
  if (entry.pipelineSession) {
132
224
  await entry.pipelineSession.close();
133
225
  }
134
- if (entry.realtimeSession) {
135
- entry.realtimeSession.close();
136
- }
137
226
  }
138
227
  }
139
228
  //# sourceMappingURL=voice-agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"voice-agent.js","sourceRoot":"","sources":["../src/voice-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,kBAAkB,EAAe,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAcjE,MAAM,OAAO,UAAW,SAAQ,YAA8B;IAC3C,MAAM,CAAmB;IAClC,SAAS,GAA8B,IAAI,CAAC;IACnC,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;IACpD,QAAQ,GAAyB,IAAI,CAAC;IAE9C,YAAY,MAAwB;QAClC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC;gBAChC,GAAG,EAAE,MAAM,CAAC,GAAI;gBAChB,GAAG,EAAE,MAAM,CAAC,GAAI;gBAChB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;IAC9B,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3E,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEtB,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAEvF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,MAAwB;QAC7C,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACtE,IAAI,CAAC,MAAM,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACxE,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,gBAAgB;gBAC1B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACpE,IAAI,CAAC,MAAM,CAAC,cAAc;gBAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,MAAmB;QAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC;QAE5B,MAAM,KAAK,GAAiB,EAAE,MAAM,EAAE,CAAC;QAEvC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACpC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAEtC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;gBAAE,OAAO;YAC7C,KAAK,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,KAAmB;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAS,CAAC,aAAa,EAAE,CAAC;QAC/C,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC;QAEhC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE;YACpC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,IAAY,EAAE,OAAgB,EAAE,EAAE;YAC1D,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAY,EAAE,EAAE;YAC5C,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;YAC9B,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;YAC5B,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YACjC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,KAAmB;QAC9C,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC;YAClC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAiB;YACvC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,cAAe;YACnC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;YAChC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;SACzB,CAAC,CAAC;QACH,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC;QAEhC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE;YACpC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,IAAY,EAAE,IAA0B,EAAE,EAAE;YACpE,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;YAC9B,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YACjC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,KAAmB;QAC3D,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YAC1B,MAAM,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QACtC,CAAC;QACD,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YAC1B,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"voice-agent.js","sourceRoot":"","sources":["../src/voice-agent.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cogitator-ai/voice",
3
- "version": "0.1.13",
3
+ "version": "0.3.0",
4
4
  "description": "Voice/Realtime agent capabilities for Cogitator",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -14,15 +14,18 @@
14
14
  "files": [
15
15
  "dist"
16
16
  ],
17
+ "engines": {
18
+ "node": ">=22.12.0"
19
+ },
17
20
  "dependencies": {
18
- "nanoid": "^5.0.4",
19
- "ws": "^8.18.0",
20
- "zod": "^4.3.6",
21
- "@cogitator-ai/types": "0.22.3"
21
+ "@cogitator-ai/types": "0.24.0",
22
+ "nanoid": "^6.0.1",
23
+ "ws": "^8.22.0",
24
+ "zod": "^4.6.5"
22
25
  },
23
26
  "peerDependencies": {
24
- "openai": "^6.0.0",
25
- "@cogitator-ai/core": "0.19.4"
27
+ "@cogitator-ai/core": ">=0.21.0",
28
+ "openai": "^6.0.0 || ^7.0.0"
26
29
  },
27
30
  "peerDependenciesMeta": {
28
31
  "@cogitator-ai/core": {
@@ -33,9 +36,9 @@
33
36
  }
34
37
  },
35
38
  "devDependencies": {
36
- "@types/ws": "^8.5.0",
37
- "typescript": "^5.7.2",
38
- "vitest": "^4.0.18"
39
+ "@types/ws": "^8.18.2",
40
+ "typescript": "^6.0.3",
41
+ "vitest": "^5.0.3"
39
42
  },
40
43
  "repository": {
41
44
  "type": "git",
@@ -43,12 +46,11 @@
43
46
  "directory": "packages/voice"
44
47
  },
45
48
  "publishConfig": {
46
- "access": "public",
47
- "registry": "https://npm.pkg.github.com"
49
+ "access": "public"
48
50
  },
49
51
  "license": "MIT",
50
52
  "scripts": {
51
- "build": "tsc",
53
+ "build": "tsc && tsx ../../scripts/fix-esm-imports.ts .",
52
54
  "dev": "tsc --watch",
53
55
  "clean": "rm -rf dist",
54
56
  "typecheck": "tsc --noEmit",