@unctad-ai/voice-agent-server 1.0.0 → 1.0.2
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/dist/createChatHandler.d.ts.map +1 -1
- package/dist/createChatHandler.js +26 -5
- package/dist/createChatHandler.js.map +1 -1
- package/dist/createPersonaRoutes.d.ts +11 -0
- package/dist/createPersonaRoutes.d.ts.map +1 -0
- package/dist/createPersonaRoutes.js +221 -0
- package/dist/createPersonaRoutes.js.map +1 -0
- package/dist/createSttHandler.d.ts.map +1 -1
- package/dist/createSttHandler.js +2 -5
- package/dist/createSttHandler.js.map +1 -1
- package/dist/createTtsHandler.d.ts +3 -0
- package/dist/createTtsHandler.d.ts.map +1 -1
- package/dist/createTtsHandler.js +28 -63
- package/dist/createTtsHandler.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -1
- package/dist/index.js.map +1 -1
- package/dist/personaStore.d.ts +33 -0
- package/dist/personaStore.d.ts.map +1 -0
- package/dist/personaStore.js +74 -0
- package/dist/personaStore.js.map +1 -0
- package/dist/systemPrompt.js +2 -2
- package/dist/systemPrompt.js.map +1 -1
- package/package.json +5 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createChatHandler.d.ts","sourceRoot":"","sources":["../src/createChatHandler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMjD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"createChatHandler.d.ts","sourceRoot":"","sources":["../src/createChatHandler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMjD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAsE7G"}
|
|
@@ -12,16 +12,34 @@ export function createChatHandler(options) {
|
|
|
12
12
|
: serverTools;
|
|
13
13
|
return async function chatHandler(req, res) {
|
|
14
14
|
try {
|
|
15
|
-
const { messages, clientState } = req.body;
|
|
15
|
+
const { messages, clientState, maxHistoryMessages } = req.body;
|
|
16
16
|
if (!messages || !Array.isArray(messages) || messages.length === 0) {
|
|
17
17
|
res.status(400).json({ error: 'messages array is required' });
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
|
-
//
|
|
20
|
+
// Keep only the last N messages to prevent unbounded context growth.
|
|
21
|
+
const limit = Math.max(4, Math.min(maxHistoryMessages ?? 20, 40));
|
|
22
|
+
const trimmed = messages.length > limit
|
|
23
|
+
? messages.slice(-limit)
|
|
24
|
+
: messages;
|
|
21
25
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
22
|
-
const modelMessages = await convertToModelMessages(
|
|
26
|
+
const modelMessages = await convertToModelMessages(trimmed);
|
|
27
|
+
// Log conversation for debugging
|
|
28
|
+
const lastMsg = trimmed[trimmed.length - 1];
|
|
29
|
+
let preview = '';
|
|
30
|
+
if (lastMsg) {
|
|
31
|
+
const c = lastMsg.content;
|
|
32
|
+
if (typeof c === 'string')
|
|
33
|
+
preview = c.slice(0, 120);
|
|
34
|
+
else if (Array.isArray(c))
|
|
35
|
+
preview = c.map((p) => p.text ?? p.type ?? '').join(' ').slice(0, 120);
|
|
36
|
+
else
|
|
37
|
+
preview = JSON.stringify(lastMsg).slice(0, 200);
|
|
38
|
+
}
|
|
39
|
+
console.log(`[chat] ${trimmed.length} msgs (role=${lastMsg?.role}) | last: "${preview}"`);
|
|
40
|
+
const model = groqModel || 'openai/gpt-oss-120b';
|
|
23
41
|
const result = streamText({
|
|
24
|
-
model: groq(
|
|
42
|
+
model: groq(model),
|
|
25
43
|
system: buildSystemPrompt(config, clientState),
|
|
26
44
|
messages: modelMessages,
|
|
27
45
|
tools: { ...allServerTools, ...clientTools },
|
|
@@ -31,7 +49,10 @@ export function createChatHandler(options) {
|
|
|
31
49
|
result.pipeUIMessageStreamToResponse(res);
|
|
32
50
|
// Consume the full text promise to catch async stream errors that would
|
|
33
51
|
// otherwise crash the Node process as unhandled rejections.
|
|
34
|
-
Promise.resolve(result.text).
|
|
52
|
+
Promise.resolve(result.text).then((text) => {
|
|
53
|
+
const reply = text.slice(0, 150);
|
|
54
|
+
console.log(`[chat] reply: "${reply}"`);
|
|
55
|
+
}).catch((err) => {
|
|
35
56
|
const msg = err instanceof Error ? err.message : String(err);
|
|
36
57
|
console.error('Stream error:', msg);
|
|
37
58
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createChatHandler.js","sourceRoot":"","sources":["../src/createChatHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AASvD,MAAM,UAAU,iBAAiB,CAAC,OAA2B;IAC3D,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAClD,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAChD,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAEhE,mDAAmD;IACnD,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB;QAC5C,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,GAAI,MAAM,CAAC,gBAAyE,EAAE;QAC1G,CAAC,CAAC,WAAW,CAAC;IAEhB,OAAO,KAAK,UAAU,WAAW,CAAC,GAAY,EAAE,GAAa;QAC3D,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"createChatHandler.js","sourceRoot":"","sources":["../src/createChatHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Router } from 'express';
|
|
2
|
+
import { PersonaStore } from './personaStore.js';
|
|
3
|
+
export interface PersonaRoutesOptions {
|
|
4
|
+
personaDir: string;
|
|
5
|
+
ttsUpstreamUrl?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function createPersonaRoutes(options: PersonaRoutesOptions): {
|
|
8
|
+
router: Router;
|
|
9
|
+
store: PersonaStore;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=createPersonaRoutes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createPersonaRoutes.d.ts","sourceRoot":"","sources":["../src/createPersonaRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAKjC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAsN1G"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { Router } from 'express';
|
|
2
|
+
import multer from 'multer';
|
|
3
|
+
import sharp from 'sharp';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import fs from 'node:fs';
|
|
6
|
+
import { PersonaStore } from './personaStore.js';
|
|
7
|
+
export function createPersonaRoutes(options) {
|
|
8
|
+
const router = Router();
|
|
9
|
+
const store = new PersonaStore(options.personaDir);
|
|
10
|
+
const upload = multer({ limits: { fileSize: 10 * 1024 * 1024 } });
|
|
11
|
+
// GET /persona — avatar inlined as data URI to avoid auth issues with <img src>
|
|
12
|
+
router.get('/persona', (_req, res) => {
|
|
13
|
+
const data = store.get();
|
|
14
|
+
res.json({
|
|
15
|
+
copilotName: data.copilotName,
|
|
16
|
+
avatarUrl: getAvatarDataUri(),
|
|
17
|
+
activeVoiceId: data.activeVoiceId,
|
|
18
|
+
voices: data.voices.map(v => ({ id: v.id, name: v.name, filename: v.filename })),
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
// Helper: read avatar as data URI
|
|
22
|
+
function getAvatarDataUri() {
|
|
23
|
+
const avatarPath = store.getAvatarPath();
|
|
24
|
+
if (avatarPath && fs.existsSync(avatarPath)) {
|
|
25
|
+
const mime = avatarPath.endsWith('.webp') ? 'image/webp' : 'image/png';
|
|
26
|
+
return `data:${mime};base64,${fs.readFileSync(avatarPath).toString('base64')}`;
|
|
27
|
+
}
|
|
28
|
+
return '';
|
|
29
|
+
}
|
|
30
|
+
// PUT /persona
|
|
31
|
+
router.put('/persona', async (req, res) => {
|
|
32
|
+
try {
|
|
33
|
+
const { copilotName, activeVoiceId } = req.body;
|
|
34
|
+
const updated = await store.update({ copilotName, activeVoiceId });
|
|
35
|
+
res.json({
|
|
36
|
+
copilotName: updated.copilotName,
|
|
37
|
+
avatarUrl: getAvatarDataUri(),
|
|
38
|
+
activeVoiceId: updated.activeVoiceId,
|
|
39
|
+
voices: updated.voices.map(v => ({ id: v.id, name: v.name, filename: v.filename })),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
res.status(500).json({ error: 'Failed to update persona' });
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
// POST /avatar (2MB limit)
|
|
47
|
+
const avatarUpload = multer({ limits: { fileSize: 2 * 1024 * 1024 } });
|
|
48
|
+
router.post('/avatar', avatarUpload.single('image'), async (req, res) => {
|
|
49
|
+
try {
|
|
50
|
+
if (!req.file) {
|
|
51
|
+
res.status(400).json({ error: 'No image file provided' });
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const allowed = ['image/png', 'image/jpeg', 'image/webp'];
|
|
55
|
+
if (!allowed.includes(req.file.mimetype)) {
|
|
56
|
+
res.status(400).json({ error: 'Image must be PNG, JPG, or WebP' });
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const outPath = path.join(options.personaDir, 'avatar.webp');
|
|
60
|
+
await sharp(req.file.buffer)
|
|
61
|
+
.resize(128, 128, { fit: 'cover' })
|
|
62
|
+
.webp({ quality: 80 })
|
|
63
|
+
.toFile(outPath);
|
|
64
|
+
await store.setAvatar('avatar.webp');
|
|
65
|
+
res.json({ avatarUrl: getAvatarDataUri() });
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
console.error('[Persona] avatar upload error:', err);
|
|
69
|
+
res.status(500).json({ error: 'Failed to process avatar' });
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
// GET /avatar
|
|
73
|
+
router.get('/avatar', (req, res) => {
|
|
74
|
+
const avatarPath = store.getAvatarPath();
|
|
75
|
+
if (!avatarPath) {
|
|
76
|
+
res.status(404).json({ error: 'No avatar set' });
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
res.setHeader('Cache-Control', 'public, max-age=31536000, immutable');
|
|
80
|
+
res.sendFile(path.resolve(avatarPath));
|
|
81
|
+
});
|
|
82
|
+
// GET /voices
|
|
83
|
+
router.get('/voices', (req, res) => {
|
|
84
|
+
const data = store.get();
|
|
85
|
+
res.json({
|
|
86
|
+
voices: data.voices.map(v => ({ id: v.id, name: v.name, filename: v.filename })),
|
|
87
|
+
activeVoiceId: data.activeVoiceId,
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
// POST /voices
|
|
91
|
+
router.post('/voices', upload.single('audio'), async (req, res) => {
|
|
92
|
+
try {
|
|
93
|
+
if (!req.file) {
|
|
94
|
+
res.status(400).json({ error: 'No audio file provided' });
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const name = req.body.name;
|
|
98
|
+
if (!name || typeof name !== 'string') {
|
|
99
|
+
res.status(400).json({ error: 'Voice name is required' });
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const data = store.get();
|
|
103
|
+
if (data.voices.length >= 10) {
|
|
104
|
+
res.status(409).json({ error: 'Maximum 10 voices allowed' });
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const buf = req.file.buffer;
|
|
108
|
+
if (buf.length >= 44) {
|
|
109
|
+
const sampleRate = buf.readUInt32LE(24);
|
|
110
|
+
const bitsPerSample = buf.readUInt16LE(34);
|
|
111
|
+
const channels = buf.readUInt16LE(22);
|
|
112
|
+
const dataSize = buf.readUInt32LE(40);
|
|
113
|
+
if (sampleRate > 0 && bitsPerSample > 0 && channels > 0) {
|
|
114
|
+
const durationSec = dataSize / (sampleRate * channels * (bitsPerSample / 8));
|
|
115
|
+
if (durationSec > 30) {
|
|
116
|
+
res.status(400).json({ error: `Voice sample too long (${Math.round(durationSec)}s). Maximum is 30 seconds.` });
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const id = name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '') + '-' + Date.now();
|
|
122
|
+
const filename = `${id}.wav`;
|
|
123
|
+
const wavPath = path.join(store.getVoicesDir(), filename);
|
|
124
|
+
fs.writeFileSync(wavPath, req.file.buffer);
|
|
125
|
+
if (options.ttsUpstreamUrl) {
|
|
126
|
+
const form = new FormData();
|
|
127
|
+
form.append('voice_id', id);
|
|
128
|
+
form.append('audio', new Blob([new Uint8Array(req.file.buffer)]), filename);
|
|
129
|
+
const ttsRes = await fetch(`${options.ttsUpstreamUrl}/voices`, {
|
|
130
|
+
method: 'POST',
|
|
131
|
+
body: form,
|
|
132
|
+
});
|
|
133
|
+
if (!ttsRes.ok) {
|
|
134
|
+
fs.unlinkSync(wavPath);
|
|
135
|
+
const err = await ttsRes.text();
|
|
136
|
+
res.status(502).json({ error: `TTS voice caching failed: ${err}` });
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
await store.addVoice({ id, name, filename });
|
|
141
|
+
res.json({ id, name, filename, status: 'cached' });
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
console.error('[Persona] voice upload error:', err);
|
|
145
|
+
res.status(500).json({ error: 'Failed to upload voice' });
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
// DELETE /voices/:id
|
|
149
|
+
router.delete('/voices/:id', async (req, res) => {
|
|
150
|
+
try {
|
|
151
|
+
const { id } = req.params;
|
|
152
|
+
const data = store.get();
|
|
153
|
+
const voice = data.voices.find(v => v.id === id);
|
|
154
|
+
if (!voice) {
|
|
155
|
+
res.status(404).json({ error: 'Voice not found' });
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
if (options.ttsUpstreamUrl) {
|
|
159
|
+
await fetch(`${options.ttsUpstreamUrl}/voices/${id}`, { method: 'DELETE' }).catch(() => { });
|
|
160
|
+
}
|
|
161
|
+
const wavPath = path.join(store.getVoicesDir(), voice.filename);
|
|
162
|
+
if (fs.existsSync(wavPath))
|
|
163
|
+
fs.unlinkSync(wavPath);
|
|
164
|
+
await store.removeVoice(id);
|
|
165
|
+
res.status(204).end();
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
console.error('[Persona] voice delete error:', err);
|
|
169
|
+
res.status(500).json({ error: 'Failed to delete voice' });
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
// POST /voices/:id/preview
|
|
173
|
+
router.post('/voices/:id/preview', async (req, res) => {
|
|
174
|
+
try {
|
|
175
|
+
const { id } = req.params;
|
|
176
|
+
const { text } = req.body;
|
|
177
|
+
if (!text) {
|
|
178
|
+
res.status(400).json({ error: 'Text is required' });
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
if (!options.ttsUpstreamUrl) {
|
|
182
|
+
res.status(501).json({ error: 'TTS upstream not configured' });
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
const form = new URLSearchParams();
|
|
186
|
+
form.append('text', text);
|
|
187
|
+
form.append('voice', id);
|
|
188
|
+
const ttsRes = await fetch(`${options.ttsUpstreamUrl}/tts-pipeline`, {
|
|
189
|
+
method: 'POST',
|
|
190
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
191
|
+
body: form.toString(),
|
|
192
|
+
});
|
|
193
|
+
if (!ttsRes.ok) {
|
|
194
|
+
res.status(502).json({ error: 'TTS preview failed' });
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
res.setHeader('Content-Type', 'audio/wav');
|
|
198
|
+
const reader = ttsRes.body?.getReader();
|
|
199
|
+
if (!reader) {
|
|
200
|
+
res.status(500).end();
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
while (true) {
|
|
204
|
+
const { done, value } = await reader.read();
|
|
205
|
+
if (done)
|
|
206
|
+
break;
|
|
207
|
+
res.write(value);
|
|
208
|
+
}
|
|
209
|
+
res.end();
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
212
|
+
console.error('[Persona] voice preview error:', err);
|
|
213
|
+
if (!res.headersSent)
|
|
214
|
+
res.status(500).json({ error: 'Preview failed' });
|
|
215
|
+
else
|
|
216
|
+
res.end();
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
return { router, store };
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=createPersonaRoutes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createPersonaRoutes.js","sourceRoot":"","sources":["../src/createPersonaRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOjD,MAAM,UAAU,mBAAmB,CAAC,OAA6B;IAC/D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;IAElE,gFAAgF;IAChF,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACzB,GAAG,CAAC,IAAI,CAAC;YACP,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,gBAAgB,EAAE;YAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;SACjF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,kCAAkC;IAClC,SAAS,gBAAgB;QACvB,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QACzC,IAAI,UAAU,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;YACvE,OAAO,QAAQ,IAAI,WAAW,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjF,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,eAAe;IACf,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YAChD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;YACnE,GAAG,CAAC,IAAI,CAAC;gBACP,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,SAAS,EAAE,gBAAgB,EAAE;gBAC7B,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;aACpF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,2BAA2B;IAC3B,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;IACvE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACtE,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;gBAC1D,OAAO;YACT,CAAC;YACD,MAAM,OAAO,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;YAC1D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,CAAC;gBACnE,OAAO;YACT,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YAC7D,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;iBACzB,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;iBAClC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;iBACrB,MAAM,CAAC,OAAO,CAAC,CAAC;YACnB,MAAM,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YACrC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;YACrD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,cAAc;IACd,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACjC,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QACD,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,qCAAqC,CAAC,CAAC;QACtE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,cAAc;IACd,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACzB,GAAG,CAAC,IAAI,CAAC;YACP,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChF,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,eAAe;IACf,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAChE,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;gBAC1D,OAAO;YACT,CAAC;YACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;gBAC1D,OAAO;YACT,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBAC7B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC;gBAC7D,OAAO;YACT,CAAC;YACD,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;YAC5B,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBACrB,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBACxC,MAAM,aAAa,GAAG,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBAC3C,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBACtC,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBACtC,IAAI,UAAU,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;oBACxD,MAAM,WAAW,GAAG,QAAQ,GAAG,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC7E,IAAI,WAAW,GAAG,EAAE,EAAE,CAAC;wBACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,4BAA4B,EAAE,CAAC,CAAC;wBAC/G,OAAO;oBACT,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACnG,MAAM,QAAQ,GAAG,GAAG,EAAE,MAAM,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC1D,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE3C,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAC5E,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,cAAc,SAAS,EAAE;oBAC7D,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,IAAI;iBACX,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;oBACf,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;oBACvB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;oBAChC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,6BAA6B,GAAG,EAAE,EAAE,CAAC,CAAC;oBACpE,OAAO;gBACT,CAAC;YACH,CAAC;YAED,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;YACpD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,qBAAqB;IACrB,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9C,IAAI,CAAC;YACH,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBACnD,OAAO;YACT,CAAC;YACD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;gBAC3B,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,cAAc,WAAW,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC9F,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YAChE,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC5B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;YACpD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,2BAA2B;IAC3B,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACpD,IAAI,CAAC;YACH,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBACpD,OAAO;YACT,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;gBAC5B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,cAAc,eAAe,EAAE;gBACnE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;gBAChE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;aACtB,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YACD,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAAC,OAAO;YAAC,CAAC;YAC/C,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,IAAI;oBAAE,MAAM;gBAChB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;YACD,GAAG,CAAC,GAAG,EAAE,CAAC;QACZ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;YACrD,IAAI,CAAC,GAAG,CAAC,WAAW;gBAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;;gBACnE,GAAG,CAAC,GAAG,EAAE,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSttHandler.d.ts","sourceRoot":"","sources":["../src/createSttHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAUD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"createSttHandler.d.ts","sourceRoot":"","sources":["../src/createSttHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAUD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CA+InE"}
|
package/dist/createSttHandler.js
CHANGED
|
@@ -91,13 +91,10 @@ export function createSttHandler(options) {
|
|
|
91
91
|
if (sttProvider === 'kyutai') {
|
|
92
92
|
try {
|
|
93
93
|
response = await transcribeWithKyutai(req.file.buffer);
|
|
94
|
-
if (!response.text)
|
|
95
|
-
throw new Error('empty transcription');
|
|
96
94
|
}
|
|
97
95
|
catch (err) {
|
|
98
|
-
console.warn('[STT] Kyutai
|
|
99
|
-
|
|
100
|
-
response = await transcribeWithGroq(req.file.buffer);
|
|
96
|
+
console.warn('[STT] Kyutai error:', err.message);
|
|
97
|
+
response = { text: '', language: 'en', noSpeechProb: 1, avgLogprob: 0 };
|
|
101
98
|
}
|
|
102
99
|
}
|
|
103
100
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSttHandler.js","sourceRoot":"","sources":["../src/createSttHandler.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"createSttHandler.js","sourceRoot":"","sources":["../src/createSttHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,9 @@ export interface TtsHandlerOptions {
|
|
|
8
8
|
resembleApiKey?: string;
|
|
9
9
|
resembleModel?: string;
|
|
10
10
|
resembleVoiceUuid?: string;
|
|
11
|
+
getActiveVoiceId?: () => string;
|
|
12
|
+
/** When true, fall back to pocket-tts then Resemble if primary TTS fails. Default: false */
|
|
13
|
+
ttsFallback?: boolean;
|
|
11
14
|
}
|
|
12
15
|
export declare function createTtsHandler(options: TtsHandlerOptions): Router;
|
|
13
16
|
//# sourceMappingURL=createTtsHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createTtsHandler.d.ts","sourceRoot":"","sources":["../src/createTtsHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"createTtsHandler.d.ts","sourceRoot":"","sources":["../src/createTtsHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;IAChC,4FAA4F;IAC5F,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAuLD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAmMnE"}
|
package/dist/createTtsHandler.js
CHANGED
|
@@ -76,6 +76,8 @@ async function synthesizeWithQwen3TTS(text, url, signal, opts) {
|
|
|
76
76
|
formData.append('text', text);
|
|
77
77
|
if (opts?.temperature != null)
|
|
78
78
|
formData.append('temperature', String(opts.temperature));
|
|
79
|
+
if (opts?.voice)
|
|
80
|
+
formData.append('voice', opts.voice);
|
|
79
81
|
// Uses /tts-pipeline for token-level streaming: audio chunks yielded as codec
|
|
80
82
|
// tokens are generated. TTFA ~200ms with two-phase emission + Hann crossfade.
|
|
81
83
|
// 50s timeout: accounts for GPU lock wait (up to 15s) + generation (up to 25s).
|
|
@@ -150,6 +152,8 @@ export function createTtsHandler(options) {
|
|
|
150
152
|
const resembleApiKey = options.resembleApiKey || '';
|
|
151
153
|
const resembleModel = options.resembleModel || '';
|
|
152
154
|
const resembleVoiceUuid = options.resembleVoiceUuid || '';
|
|
155
|
+
const getActiveVoiceId = options.getActiveVoiceId;
|
|
156
|
+
const ttsFallback = options.ttsFallback ?? false;
|
|
153
157
|
// Helper to call Resemble with options closure
|
|
154
158
|
function callResemble(text, signal) {
|
|
155
159
|
return synthesizeWithResemble(text, resembleApiKey, resembleModel, resembleVoiceUuid, signal);
|
|
@@ -199,90 +203,51 @@ export function createTtsHandler(options) {
|
|
|
199
203
|
}
|
|
200
204
|
}
|
|
201
205
|
const sanitized = sanitizeForTTS(text, maxWords);
|
|
206
|
+
const voiceId = getActiveVoiceId?.() || '';
|
|
202
207
|
console.debug('[TTS] provider:', ttsProvider);
|
|
203
208
|
console.debug('[TTS] raw:', JSON.stringify(text));
|
|
204
209
|
console.debug('[TTS] sanitized:', JSON.stringify(sanitized));
|
|
210
|
+
if (voiceId)
|
|
211
|
+
console.debug('[TTS] voice:', voiceId);
|
|
205
212
|
const ttsStartTime = performance.now();
|
|
206
213
|
let response;
|
|
207
214
|
if (ttsProvider === 'qwen3-tts') {
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
if (signal.aborted)
|
|
215
|
-
throw err; // Don't fallback if globally aborted
|
|
216
|
-
console.warn('[TTS] qwen3-tts failed, falling back to pocket-tts:', err);
|
|
217
|
-
try {
|
|
218
|
-
response = await synthesizeWithPocketTTS(sanitized, pocketTtsUrl, signal);
|
|
219
|
-
if (!response.ok)
|
|
220
|
-
throw new Error(`pocket-tts ${response.status}`);
|
|
221
|
-
}
|
|
222
|
-
catch (err2) {
|
|
223
|
-
if (signal.aborted)
|
|
224
|
-
throw err2;
|
|
225
|
-
console.warn('[TTS] pocket-tts failed, falling back to Resemble:', err2);
|
|
215
|
+
response = await synthesizeWithQwen3TTS(sanitized, qwen3TtsUrl, signal, { temperature, voice: voiceId });
|
|
216
|
+
if (!response.ok && ttsFallback) {
|
|
217
|
+
console.warn('[TTS] qwen3-tts failed, falling back to pocket-tts');
|
|
218
|
+
response = await synthesizeWithPocketTTS(sanitized, pocketTtsUrl, signal);
|
|
219
|
+
if (!response.ok) {
|
|
220
|
+
console.warn('[TTS] pocket-tts failed, falling back to Resemble');
|
|
226
221
|
response = await callResemble(sanitized, signal);
|
|
227
222
|
}
|
|
228
223
|
}
|
|
229
224
|
}
|
|
230
225
|
else if (ttsProvider === 'chatterbox-turbo') {
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
if (signal.aborted)
|
|
238
|
-
throw err;
|
|
239
|
-
console.warn('[TTS] chatterbox-turbo failed, falling back to pocket-tts:', err);
|
|
240
|
-
try {
|
|
241
|
-
response = await synthesizeWithPocketTTS(sanitized, pocketTtsUrl, signal);
|
|
242
|
-
if (!response.ok)
|
|
243
|
-
throw new Error(`pocket-tts ${response.status}`);
|
|
244
|
-
}
|
|
245
|
-
catch (err2) {
|
|
246
|
-
if (signal.aborted)
|
|
247
|
-
throw err2;
|
|
248
|
-
console.warn('[TTS] pocket-tts failed, falling back to Resemble:', err2);
|
|
226
|
+
response = await synthesizeWithChatterboxTurbo(sanitized, chatterboxTurboUrl, signal);
|
|
227
|
+
if (!response.ok && ttsFallback) {
|
|
228
|
+
console.warn('[TTS] chatterbox-turbo failed, falling back to pocket-tts');
|
|
229
|
+
response = await synthesizeWithPocketTTS(sanitized, pocketTtsUrl, signal);
|
|
230
|
+
if (!response.ok) {
|
|
231
|
+
console.warn('[TTS] pocket-tts failed, falling back to Resemble');
|
|
249
232
|
response = await callResemble(sanitized, signal);
|
|
250
233
|
}
|
|
251
234
|
}
|
|
252
235
|
}
|
|
253
236
|
else if (ttsProvider === 'cosyvoice') {
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
if (signal.aborted)
|
|
261
|
-
throw err;
|
|
262
|
-
console.warn('[TTS] cosyvoice failed, falling back to pocket-tts:', err);
|
|
263
|
-
try {
|
|
264
|
-
response = await synthesizeWithPocketTTS(sanitized, pocketTtsUrl, signal);
|
|
265
|
-
if (!response.ok)
|
|
266
|
-
throw new Error(`pocket-tts ${response.status}`);
|
|
267
|
-
}
|
|
268
|
-
catch (err2) {
|
|
269
|
-
if (signal.aborted)
|
|
270
|
-
throw err2;
|
|
271
|
-
console.warn('[TTS] pocket-tts failed, falling back to Resemble:', err2);
|
|
237
|
+
response = await synthesizeWithCosyVoice(sanitized, cosyVoiceTtsUrl, signal);
|
|
238
|
+
if (!response.ok && ttsFallback) {
|
|
239
|
+
console.warn('[TTS] cosyvoice failed, falling back to pocket-tts');
|
|
240
|
+
response = await synthesizeWithPocketTTS(sanitized, pocketTtsUrl, signal);
|
|
241
|
+
if (!response.ok) {
|
|
242
|
+
console.warn('[TTS] pocket-tts failed, falling back to Resemble');
|
|
272
243
|
response = await callResemble(sanitized, signal);
|
|
273
244
|
}
|
|
274
245
|
}
|
|
275
246
|
}
|
|
276
247
|
else if (ttsProvider === 'pocket-tts') {
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
throw new Error(`pocket-tts ${response.status}`);
|
|
281
|
-
}
|
|
282
|
-
catch (err) {
|
|
283
|
-
if (signal.aborted)
|
|
284
|
-
throw err;
|
|
285
|
-
console.warn('[TTS] pocket-tts failed, falling back to Resemble:', err);
|
|
248
|
+
response = await synthesizeWithPocketTTS(sanitized, pocketTtsUrl, signal);
|
|
249
|
+
if (!response.ok && ttsFallback) {
|
|
250
|
+
console.warn('[TTS] pocket-tts failed, falling back to Resemble');
|
|
286
251
|
response = await callResemble(sanitized, signal);
|
|
287
252
|
}
|
|
288
253
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createTtsHandler.js","sourceRoot":"","sources":["../src/createTtsHandler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createTtsHandler.js","sourceRoot":"","sources":["../src/createTtsHandler.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,15 +14,20 @@ export interface VoiceServerOptions {
|
|
|
14
14
|
resembleApiKey?: string;
|
|
15
15
|
resembleModel?: string;
|
|
16
16
|
resembleVoiceUuid?: string;
|
|
17
|
+
personaDir?: string;
|
|
18
|
+
/** When true, fall back to alternate TTS providers if primary fails. Default: false */
|
|
19
|
+
ttsFallback?: boolean;
|
|
17
20
|
}
|
|
18
21
|
export declare function createVoiceRoutes(options: VoiceServerOptions): {
|
|
19
22
|
chat: (req: import('express').Request, res: import('express').Response) => Promise<void>;
|
|
20
23
|
stt: Router;
|
|
21
24
|
tts: Router;
|
|
25
|
+
persona?: Router;
|
|
22
26
|
};
|
|
23
27
|
export { createChatHandler } from './createChatHandler.js';
|
|
24
28
|
export { createSttHandler } from './createSttHandler.js';
|
|
25
29
|
export { createTtsHandler } from './createTtsHandler.js';
|
|
30
|
+
export { createPersonaRoutes } from './createPersonaRoutes.js';
|
|
26
31
|
export { buildSystemPrompt } from './systemPrompt.js';
|
|
27
32
|
export { createBuiltinTools } from './builtinTools.js';
|
|
28
33
|
export { buildSynonymMap, fuzzySearch } from './builtinTools.js';
|
|
@@ -30,4 +35,5 @@ export type { ClientState } from './systemPrompt.js';
|
|
|
30
35
|
export type { ChatHandlerOptions } from './createChatHandler.js';
|
|
31
36
|
export type { SttHandlerOptions } from './createSttHandler.js';
|
|
32
37
|
export type { TtsHandlerOptions } from './createTtsHandler.js';
|
|
38
|
+
export type { PersonaRoutesOptions } from './createPersonaRoutes.js';
|
|
33
39
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAMtC,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uFAAuF;IACvF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG;IAC9D,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,SAAS,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzF,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAmBA;AAED,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACjE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,16 +1,29 @@
|
|
|
1
1
|
import { createChatHandler } from './createChatHandler.js';
|
|
2
2
|
import { createSttHandler } from './createSttHandler.js';
|
|
3
3
|
import { createTtsHandler } from './createTtsHandler.js';
|
|
4
|
+
import { createPersonaRoutes } from './createPersonaRoutes.js';
|
|
4
5
|
export function createVoiceRoutes(options) {
|
|
6
|
+
let personaRouter;
|
|
7
|
+
let getActiveVoiceId;
|
|
8
|
+
if (options.personaDir) {
|
|
9
|
+
const { router, store } = createPersonaRoutes({
|
|
10
|
+
personaDir: options.personaDir,
|
|
11
|
+
ttsUpstreamUrl: options.qwen3TtsUrl,
|
|
12
|
+
});
|
|
13
|
+
personaRouter = router;
|
|
14
|
+
getActiveVoiceId = () => store.getActiveVoiceId();
|
|
15
|
+
}
|
|
5
16
|
return {
|
|
6
17
|
chat: createChatHandler(options),
|
|
7
18
|
stt: createSttHandler(options),
|
|
8
|
-
tts: createTtsHandler(options),
|
|
19
|
+
tts: createTtsHandler({ ...options, getActiveVoiceId }),
|
|
20
|
+
persona: personaRouter,
|
|
9
21
|
};
|
|
10
22
|
}
|
|
11
23
|
export { createChatHandler } from './createChatHandler.js';
|
|
12
24
|
export { createSttHandler } from './createSttHandler.js';
|
|
13
25
|
export { createTtsHandler } from './createTtsHandler.js';
|
|
26
|
+
export { createPersonaRoutes } from './createPersonaRoutes.js';
|
|
14
27
|
export { buildSystemPrompt } from './systemPrompt.js';
|
|
15
28
|
export { createBuiltinTools } from './builtinTools.js';
|
|
16
29
|
export { buildSynonymMap, fuzzySearch } from './builtinTools.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAqB/D,MAAM,UAAU,iBAAiB,CAAC,OAA2B;IAM3D,IAAI,aAAiC,CAAC;IACtC,IAAI,gBAA4C,CAAC;IAEjD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,mBAAmB,CAAC;YAC5C,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,cAAc,EAAE,OAAO,CAAC,WAAW;SACpC,CAAC,CAAC;QACH,aAAa,GAAG,MAAM,CAAC;QACvB,gBAAgB,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;IACpD,CAAC;IAED,OAAO;QACL,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;QAChC,GAAG,EAAE,gBAAgB,CAAC,OAAO,CAAC;QAC9B,GAAG,EAAE,gBAAgB,CAAC,EAAE,GAAG,OAAO,EAAE,gBAAgB,EAAE,CAAC;QACvD,OAAO,EAAE,aAAa;KACvB,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface StoredPersona {
|
|
2
|
+
copilotName: string;
|
|
3
|
+
avatarFilename: string;
|
|
4
|
+
activeVoiceId: string;
|
|
5
|
+
voices: {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
filename: string;
|
|
9
|
+
cachedAt: string;
|
|
10
|
+
}[];
|
|
11
|
+
}
|
|
12
|
+
export declare class PersonaStore {
|
|
13
|
+
private personaDir;
|
|
14
|
+
private data;
|
|
15
|
+
private filePath;
|
|
16
|
+
private writeQueue;
|
|
17
|
+
constructor(personaDir: string);
|
|
18
|
+
private load;
|
|
19
|
+
private save;
|
|
20
|
+
get(): StoredPersona;
|
|
21
|
+
update(partial: Partial<Pick<StoredPersona, 'copilotName' | 'activeVoiceId'>>): Promise<StoredPersona>;
|
|
22
|
+
setAvatar(filename: string): Promise<void>;
|
|
23
|
+
addVoice(entry: {
|
|
24
|
+
id: string;
|
|
25
|
+
name: string;
|
|
26
|
+
filename: string;
|
|
27
|
+
}): Promise<void>;
|
|
28
|
+
removeVoice(id: string): Promise<void>;
|
|
29
|
+
getVoicesDir(): string;
|
|
30
|
+
getAvatarPath(): string | null;
|
|
31
|
+
getActiveVoiceId(): string;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=personaStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personaStore.d.ts","sourceRoot":"","sources":["../src/personaStore.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5E;AASD,qBAAa,YAAY;IAKX,OAAO,CAAC,UAAU;IAJ9B,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAoC;gBAElC,UAAU,EAAE,MAAM;IAMtC,OAAO,CAAC,IAAI;YASE,IAAI;IAOlB,GAAG,IAAI,aAAa;IAId,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,GAAG,eAAe,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IAOtG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1C,QAAQ,CAAC,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9E,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5C,YAAY,IAAI,MAAM;IAItB,aAAa,IAAI,MAAM,GAAG,IAAI;IAM9B,gBAAgB,IAAI,MAAM;CAG3B"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
const DEFAULT_PERSONA = {
|
|
4
|
+
copilotName: '',
|
|
5
|
+
avatarFilename: '',
|
|
6
|
+
activeVoiceId: '',
|
|
7
|
+
voices: [],
|
|
8
|
+
};
|
|
9
|
+
export class PersonaStore {
|
|
10
|
+
personaDir;
|
|
11
|
+
data;
|
|
12
|
+
filePath;
|
|
13
|
+
writeQueue = Promise.resolve();
|
|
14
|
+
constructor(personaDir) {
|
|
15
|
+
this.personaDir = personaDir;
|
|
16
|
+
fs.mkdirSync(path.join(personaDir, 'voices'), { recursive: true });
|
|
17
|
+
this.filePath = path.join(personaDir, 'persona.json');
|
|
18
|
+
this.data = this.load();
|
|
19
|
+
}
|
|
20
|
+
load() {
|
|
21
|
+
try {
|
|
22
|
+
const raw = fs.readFileSync(this.filePath, 'utf-8');
|
|
23
|
+
return { ...DEFAULT_PERSONA, ...JSON.parse(raw) };
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return { ...DEFAULT_PERSONA };
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async save() {
|
|
30
|
+
this.writeQueue = this.writeQueue.then(() => fs.promises.writeFile(this.filePath, JSON.stringify(this.data, null, 2)));
|
|
31
|
+
await this.writeQueue;
|
|
32
|
+
}
|
|
33
|
+
get() {
|
|
34
|
+
return { ...this.data };
|
|
35
|
+
}
|
|
36
|
+
async update(partial) {
|
|
37
|
+
if (partial.copilotName !== undefined)
|
|
38
|
+
this.data.copilotName = partial.copilotName;
|
|
39
|
+
if (partial.activeVoiceId !== undefined)
|
|
40
|
+
this.data.activeVoiceId = partial.activeVoiceId;
|
|
41
|
+
await this.save();
|
|
42
|
+
return this.get();
|
|
43
|
+
}
|
|
44
|
+
async setAvatar(filename) {
|
|
45
|
+
this.data.avatarFilename = filename;
|
|
46
|
+
await this.save();
|
|
47
|
+
}
|
|
48
|
+
async addVoice(entry) {
|
|
49
|
+
this.data.voices.push({ ...entry, cachedAt: new Date().toISOString() });
|
|
50
|
+
if (!this.data.activeVoiceId)
|
|
51
|
+
this.data.activeVoiceId = entry.id;
|
|
52
|
+
await this.save();
|
|
53
|
+
}
|
|
54
|
+
async removeVoice(id) {
|
|
55
|
+
this.data.voices = this.data.voices.filter(v => v.id !== id);
|
|
56
|
+
if (this.data.activeVoiceId === id) {
|
|
57
|
+
this.data.activeVoiceId = this.data.voices[0]?.id ?? '';
|
|
58
|
+
}
|
|
59
|
+
await this.save();
|
|
60
|
+
}
|
|
61
|
+
getVoicesDir() {
|
|
62
|
+
return path.join(this.personaDir, 'voices');
|
|
63
|
+
}
|
|
64
|
+
getAvatarPath() {
|
|
65
|
+
if (!this.data.avatarFilename)
|
|
66
|
+
return null;
|
|
67
|
+
const p = path.join(this.personaDir, this.data.avatarFilename);
|
|
68
|
+
return fs.existsSync(p) ? p : null;
|
|
69
|
+
}
|
|
70
|
+
getActiveVoiceId() {
|
|
71
|
+
return this.data.activeVoiceId;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=personaStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personaStore.js","sourceRoot":"","sources":["../src/personaStore.ts"],"names":[],"mappings":"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"}
|
package/dist/systemPrompt.js
CHANGED
|
@@ -5,7 +5,7 @@ const BASE_RULES = `RULES:
|
|
|
5
5
|
4. Never fabricate information. Never say you lack a capability your tools provide.
|
|
6
6
|
5. Say exactly [SILENT] if the speaker is not addressing you — side conversations, background noise, or filler words. When unsure, choose [SILENT].
|
|
7
7
|
|
|
8
|
-
TONE: Sound like a warm, knowledgeable human — not a machine reading a script.
|
|
8
|
+
TONE: Sound like a warm, knowledgeable human — not a machine reading a script. Jump straight to the answer most of the time. Only occasionally use a brief opener like "Sure" or "Great question" — never the same one twice in a row. Vary your phrasing naturally.
|
|
9
9
|
|
|
10
10
|
PROACTIVE NAVIGATION: When the user asks about a service, call searchServices first. Then call BOTH viewService (to show the page) AND getServiceDetails (to get data you can speak about) — do not call one without the other. When the user wants to APPLY, call startApplication instead of viewService.
|
|
11
11
|
|
|
@@ -17,7 +17,7 @@ PAGE TYPES:
|
|
|
17
17
|
|
|
18
18
|
FORMS: When on a /dashboard/* page, ALWAYS call getFormSchema to see what fields are actually visible — NEVER guess or fabricate form content. The schema is the single source of truth for what the user sees. Ask conversationally for a few details at a time — never dump all field names at once. Batch-fill with fillFormFields once you have the information. When getFormSchema returns sections, guide the user through the FIRST section only. More sections appear automatically as the user answers questions — call getFormSchema again after every fillFormFields to see newly visible fields. NEVER say a form is complete or suggest submitting without calling getFormSchema first to verify no unfilled fields remain.
|
|
19
19
|
|
|
20
|
-
GOODBYE:
|
|
20
|
+
GOODBYE: Only end the session when the user explicitly says goodbye, "bye", "that is all", or clearly indicates they are done. Do NOT end the session for "thank you", "thanks", or polite acknowledgments — those are conversational, not farewells. When ending, respond with a warm farewell and append [END_SESSION]. Example: "Happy to help, goodbye! [END_SESSION]"`;
|
|
21
21
|
export function buildSystemPrompt(config, clientState) {
|
|
22
22
|
// Identity layer — from config
|
|
23
23
|
let prompt = `You are ${config.copilotName}, a friendly voice assistant for ${config.siteTitle}. ${config.systemPromptIntro} Your name is ${config.copilotName}.\n\n`;
|
package/dist/systemPrompt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systemPrompt.js","sourceRoot":"","sources":["../src/systemPrompt.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"systemPrompt.js","sourceRoot":"","sources":["../src/systemPrompt.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;2WAmBwV,CAAC;AAE5W,MAAM,UAAU,iBAAiB,CAAC,MAAkB,EAAE,WAAyB;IAC7E,+BAA+B;IAC/B,IAAI,MAAM,GAAG,WAAW,MAAM,CAAC,WAAW,oCAAoC,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,iBAAiB,iBAAiB,MAAM,CAAC,WAAW,OAAO,CAAC;IAEtK,mCAAmC;IACnC,MAAM,IAAI,UAAU,CAAC;IAErB,kDAAkD;IAClD,IAAI,CAAC,WAAW;QAAE,OAAO,MAAM,CAAC;IAEhC,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,qBAAqB,WAAW,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IACD,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,WAAW,CAAC,cAAc,CAAC;QACrC,MAAM,IAAI,sBAAsB,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,QAAQ,0CAA0C,CAAC;IACnG,CAAC;IACD,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;QAC3B,MAAM,IAAI,yBAAyB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;IAC9E,CAAC;IACD,IAAI,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,2CAA2C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;IAC/F,CAAC;IACD,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC;QACjC,MAAM,IAAI,aAAa,CAAC,CAAC,UAAU,cAAc,CAAC,CAAC,MAAM,CAAC,MAAM,sDAAsD,CAAC;IACzH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unctad-ai/voice-agent-server",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -17,7 +17,9 @@
|
|
|
17
17
|
"directory": "packages/server"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"
|
|
20
|
+
"multer": "^2.1.1",
|
|
21
|
+
"sharp": "^0.34.5",
|
|
22
|
+
"@unctad-ai/voice-agent-core": "1.0.2"
|
|
21
23
|
},
|
|
22
24
|
"peerDependencies": {
|
|
23
25
|
"@ai-sdk/groq": "^3.0.0",
|
|
@@ -28,11 +30,10 @@
|
|
|
28
30
|
"devDependencies": {
|
|
29
31
|
"@ai-sdk/groq": "^3.0.24",
|
|
30
32
|
"@types/express": "^5.0.6",
|
|
31
|
-
"@types/multer": "^2.
|
|
33
|
+
"@types/multer": "^2.1.0",
|
|
32
34
|
"ai": "^6.0.112",
|
|
33
35
|
"express": "^5.2.1",
|
|
34
36
|
"groq-sdk": "^0.37.0",
|
|
35
|
-
"multer": "^2.1.1",
|
|
36
37
|
"typescript": "^5.9.3",
|
|
37
38
|
"zod": "^4.3.6"
|
|
38
39
|
},
|