@cogitator-ai/voice 0.1.13 → 0.2.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 +121 -77
- package/dist/audio.d.ts +7 -0
- package/dist/audio.d.ts.map +1 -1
- package/dist/audio.js +40 -3
- package/dist/audio.js.map +1 -1
- package/dist/cogitator-runner.d.ts +34 -0
- package/dist/cogitator-runner.d.ts.map +1 -0
- package/dist/cogitator-runner.js +28 -0
- package/dist/cogitator-runner.js.map +1 -0
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -4
- package/dist/index.js.map +1 -1
- package/dist/pipeline/index.d.ts +2 -2
- package/dist/pipeline/index.d.ts.map +1 -1
- package/dist/pipeline/index.js.map +1 -1
- package/dist/pipeline/pipeline-session.d.ts +20 -2
- package/dist/pipeline/pipeline-session.d.ts.map +1 -1
- package/dist/pipeline/pipeline-session.js +187 -63
- package/dist/pipeline/pipeline-session.js.map +1 -1
- package/dist/pipeline/voice-pipeline.d.ts +12 -7
- package/dist/pipeline/voice-pipeline.d.ts.map +1 -1
- package/dist/pipeline/voice-pipeline.js +14 -4
- package/dist/pipeline/voice-pipeline.js.map +1 -1
- package/dist/realtime/gemini-realtime.d.ts +15 -3
- package/dist/realtime/gemini-realtime.d.ts.map +1 -1
- package/dist/realtime/gemini-realtime.js +140 -94
- package/dist/realtime/gemini-realtime.js.map +1 -1
- package/dist/realtime/openai-realtime.d.ts +10 -1
- package/dist/realtime/openai-realtime.d.ts.map +1 -1
- package/dist/realtime/openai-realtime.js +140 -69
- package/dist/realtime/openai-realtime.js.map +1 -1
- package/dist/realtime/realtime-session.d.ts +10 -0
- package/dist/realtime/realtime-session.d.ts.map +1 -1
- package/dist/realtime/realtime-session.js +60 -7
- package/dist/realtime/realtime-session.js.map +1 -1
- package/dist/stt/deepgram-stt.d.ts +3 -0
- package/dist/stt/deepgram-stt.d.ts.map +1 -1
- package/dist/stt/deepgram-stt.js +104 -55
- package/dist/stt/deepgram-stt.js.map +1 -1
- package/dist/stt/openai-stt.d.ts +5 -0
- package/dist/stt/openai-stt.d.ts.map +1 -1
- package/dist/stt/openai-stt.js +70 -13
- package/dist/stt/openai-stt.js.map +1 -1
- package/dist/tools.d.ts +3 -3
- package/dist/transport/ws-transport.d.ts +6 -7
- package/dist/transport/ws-transport.d.ts.map +1 -1
- package/dist/transport/ws-transport.js +58 -20
- package/dist/transport/ws-transport.js.map +1 -1
- package/dist/tts/elevenlabs-tts.d.ts.map +1 -1
- package/dist/tts/elevenlabs-tts.js +26 -16
- package/dist/tts/elevenlabs-tts.js.map +1 -1
- package/dist/types.d.ts +38 -16
- package/dist/types.d.ts.map +1 -1
- package/dist/vad/silero-vad.d.ts +14 -1
- package/dist/vad/silero-vad.d.ts.map +1 -1
- package/dist/vad/silero-vad.js +101 -25
- package/dist/vad/silero-vad.js.map +1 -1
- package/dist/voice-agent.d.ts +14 -0
- package/dist/voice-agent.d.ts.map +1 -1
- package/dist/voice-agent.js +112 -23
- package/dist/voice-agent.js.map +1 -1
- package/package.json +5 -5
package/dist/voice-agent.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/voice-agent.js
CHANGED
|
@@ -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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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(([
|
|
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
|
-
|
|
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(
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
127
|
-
this.
|
|
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
|
-
|
|
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
|
package/dist/voice-agent.js.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"voice-agent.js","sourceRoot":"","sources":["../src/voice-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,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,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAEnC,SAAS,OAAO,CAAC,GAAY;IAC3B,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAClC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,GAAG,CAAC,MAAM,IAAI,sBAAsB;QAAE,OAAO,OAAO,CAAC;IACzD,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED;;;;;;;GAOG;AACH,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,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACxC,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,MAAM,CAAC,MAAmB;QACxB,IAAI,CAAC,eAAe,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAChD,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,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChE,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,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;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,CAAE,MAA4B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,MAAmB;QAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAiB,EAAE,MAAM,EAAE,CAAC;QAEvC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAEpC,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,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxF,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,WAAW,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QAErE,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,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAEO,oBAAoB,CAAC,KAAmB,EAAE,GAA4B;QAC5E,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,WAAW;gBACd,KAAK,CAAC,eAAe,EAAE,SAAS,EAAE,CAAC;gBACnC,KAAK,CAAC,eAAe,EAAE,SAAS,EAAE,CAAC;gBACnC,MAAM;YAER,KAAK,eAAe;gBAClB,KAAK,CAAC,eAAe,EAAE,QAAQ,EAAE,CAAC;gBAClC,MAAM;YAER,KAAK,MAAM;gBACT,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjE,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC,CAAC;oBACtF,OAAO;gBACT,CAAC;gBACD,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;oBAC1B,KAAK,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAChD,CAAC;gBACD,KAAK,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC1C,MAAM;YAER;gBACE,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,iCAAiC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,KAAmB;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAS,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7E,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,UAAU,EAAE,GAAG,EAAE;YAC1B,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YACjC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxB,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;YACxB,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY;YACxE,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,UAAU,EAAE,GAAG,EAAE;YAC1B,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YACjC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE;YAC1D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBAAE,OAAO;YAChD,KAAK,CAAC,MAAM,CAAC,KAAK,CAChB,iBAAiB,EACjB,WAAW,CAAC,mCAAmC,IAAI,MAAM,MAAM,EAAE,CAAC,CACnE,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBAAE,OAAO;YAChD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACxB,KAAK,CAAC,MAAM,CAAC,KAAK,CAChB,iBAAiB,EACjB,WAAW,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,CACzD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,WAAW,CAAC,GAAU;QAC5B,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,KAAmB;QAC9C,KAAK,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YAC1B,MAAM,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QACtC,CAAC;IACH,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cogitator-ai/voice",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Voice/Realtime agent capabilities for Cogitator",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
"nanoid": "^5.0.4",
|
|
19
19
|
"ws": "^8.18.0",
|
|
20
20
|
"zod": "^4.3.6",
|
|
21
|
-
"@cogitator-ai/types": "0.
|
|
21
|
+
"@cogitator-ai/types": "0.23.0"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
|
-
"
|
|
25
|
-
"
|
|
24
|
+
"@cogitator-ai/core": ">=0.20.0",
|
|
25
|
+
"openai": "^6.0.0"
|
|
26
26
|
},
|
|
27
27
|
"peerDependenciesMeta": {
|
|
28
28
|
"@cogitator-ai/core": {
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
},
|
|
49
49
|
"license": "MIT",
|
|
50
50
|
"scripts": {
|
|
51
|
-
"build": "tsc",
|
|
51
|
+
"build": "tsc && tsx ../../scripts/fix-esm-imports.ts .",
|
|
52
52
|
"dev": "tsc --watch",
|
|
53
53
|
"clean": "rm -rf dist",
|
|
54
54
|
"typecheck": "tsc --noEmit",
|