modular-voice-agent-sdk 2.5.1 → 2.6.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.
Files changed (79) hide show
  1. package/dist/backends/agent/llm.d.ts.map +1 -1
  2. package/dist/backends/agent/llm.js +0 -4
  3. package/dist/backends/agent/llm.js.map +1 -1
  4. package/dist/backends/cloud/llm.d.ts.map +1 -1
  5. package/dist/backends/cloud/llm.js +2 -13
  6. package/dist/backends/cloud/llm.js.map +1 -1
  7. package/dist/backends/native/index.d.ts +4 -2
  8. package/dist/backends/native/index.d.ts.map +1 -1
  9. package/dist/backends/native/index.js +2 -2
  10. package/dist/backends/native/index.js.map +1 -1
  11. package/dist/backends/native/llm.d.ts.map +1 -1
  12. package/dist/backends/native/llm.js +0 -2
  13. package/dist/backends/native/llm.js.map +1 -1
  14. package/dist/backends/native/tts.d.ts +21 -0
  15. package/dist/backends/native/tts.d.ts.map +1 -1
  16. package/dist/backends/native/tts.js +30 -3
  17. package/dist/backends/native/tts.js.map +1 -1
  18. package/dist/backends/transformers/llm.d.ts.map +1 -1
  19. package/dist/backends/transformers/llm.js +0 -2
  20. package/dist/backends/transformers/llm.js.map +1 -1
  21. package/dist/backends/transformers/stt.d.ts.map +1 -1
  22. package/dist/backends/transformers/stt.js +0 -2
  23. package/dist/backends/transformers/stt.js.map +1 -1
  24. package/dist/backends/transformers/tts.d.ts.map +1 -1
  25. package/dist/backends/transformers/tts.js +0 -2
  26. package/dist/backends/transformers/tts.js.map +1 -1
  27. package/dist/cache.d.ts +16 -0
  28. package/dist/cache.d.ts.map +1 -1
  29. package/dist/cache.js +47 -1
  30. package/dist/cache.js.map +1 -1
  31. package/dist/cli.d.ts +2 -0
  32. package/dist/cli.d.ts.map +1 -1
  33. package/dist/cli.js +66 -296
  34. package/dist/cli.js.map +1 -1
  35. package/dist/client/index.d.ts +4 -0
  36. package/dist/client/index.d.ts.map +1 -1
  37. package/dist/client/index.js +2 -0
  38. package/dist/client/index.js.map +1 -1
  39. package/dist/client/transport.d.ts +58 -0
  40. package/dist/client/transport.d.ts.map +1 -0
  41. package/dist/client/transport.js +15 -0
  42. package/dist/client/transport.js.map +1 -0
  43. package/dist/client/transports/http-sse.d.ts +69 -0
  44. package/dist/client/transports/http-sse.d.ts.map +1 -0
  45. package/dist/client/transports/http-sse.js +134 -0
  46. package/dist/client/transports/http-sse.js.map +1 -0
  47. package/dist/client/transports/index.d.ts +4 -0
  48. package/dist/client/transports/index.d.ts.map +1 -0
  49. package/dist/client/transports/index.js +3 -0
  50. package/dist/client/transports/index.js.map +1 -0
  51. package/dist/client/transports/websocket.d.ts +29 -0
  52. package/dist/client/transports/websocket.d.ts.map +1 -0
  53. package/dist/client/transports/websocket.js +79 -0
  54. package/dist/client/transports/websocket.js.map +1 -0
  55. package/dist/client/voice-client.d.ts +38 -14
  56. package/dist/client/voice-client.d.ts.map +1 -1
  57. package/dist/client/voice-client.js +58 -47
  58. package/dist/client/voice-client.js.map +1 -1
  59. package/dist/server/encoding.d.ts +7 -0
  60. package/dist/server/encoding.d.ts.map +1 -1
  61. package/dist/server/encoding.js +56 -0
  62. package/dist/server/encoding.js.map +1 -1
  63. package/dist/server/index.d.ts +1 -1
  64. package/dist/server/index.d.ts.map +1 -1
  65. package/dist/server/index.js +1 -1
  66. package/dist/server/index.js.map +1 -1
  67. package/dist/services/llm-logger.d.ts +4 -43
  68. package/dist/services/llm-logger.d.ts.map +1 -1
  69. package/dist/services/llm-logger.js +24 -121
  70. package/dist/services/llm-logger.js.map +1 -1
  71. package/dist/setup-types.d.ts +22 -0
  72. package/dist/setup-types.d.ts.map +1 -0
  73. package/dist/setup-types.js +6 -0
  74. package/dist/setup-types.js.map +1 -0
  75. package/dist/setup.d.ts +68 -0
  76. package/dist/setup.d.ts.map +1 -0
  77. package/dist/setup.js +324 -0
  78. package/dist/setup.js.map +1 -0
  79. package/package.json +5 -1
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Shared types for model setup and configuration.
3
+ * Used by both the CLI and programmatic setup API.
4
+ */
5
+ export interface ModelConfig {
6
+ url: string;
7
+ filename?: string;
8
+ extract?: boolean;
9
+ directory?: string;
10
+ sha256?: string;
11
+ size?: number;
12
+ }
13
+ export interface SetupConfig {
14
+ models: Record<string, ModelConfig>;
15
+ }
16
+ export interface ModelStatus {
17
+ name: string;
18
+ installed: boolean;
19
+ path: string;
20
+ expectedFilename?: string;
21
+ }
22
+ //# sourceMappingURL=setup-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-types.d.ts","sourceRoot":"","sources":["../src/setup-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Shared types for model setup and configuration.
3
+ * Used by both the CLI and programmatic setup API.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=setup-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-types.js","sourceRoot":"","sources":["../src/setup-types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Programmatic Setup API for modular-voice-agent-sdk
3
+ *
4
+ * Provides the same download/verify/extract functionality as `npx mvas setup`
5
+ * but as importable functions with progress callbacks.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { setup, checkModelsInstalled } from 'modular-voice-agent-sdk/setup';
10
+ *
11
+ * if (!checkModelsInstalled('./models.json')) {
12
+ * await setup('./models.json', {
13
+ * onProgress: (event) => console.log(event.message),
14
+ * });
15
+ * }
16
+ * ```
17
+ */
18
+ import type { SetupConfig } from './setup-types';
19
+ export { checkModelsInstalled, getCacheStatus, getCacheDir, getModelsDir, getBinDir } from './cache';
20
+ export type { ModelConfig, SetupConfig, ModelStatus } from './setup-types';
21
+ export type SetupProgressEventType = 'start' | 'model_start' | 'model_skip' | 'model_downloading' | 'model_resuming' | 'model_extracting' | 'model_verifying' | 'model_verification_failed' | 'model_done' | 'model_failed' | 'complete';
22
+ export interface SetupProgressEvent {
23
+ type: SetupProgressEventType;
24
+ message: string;
25
+ model?: string;
26
+ modelsDir?: string;
27
+ /** Number of models processed so far */
28
+ current?: number;
29
+ /** Total number of models */
30
+ total?: number;
31
+ }
32
+ export interface SetupModelResult {
33
+ name: string;
34
+ success: boolean;
35
+ error?: string;
36
+ skipped?: boolean;
37
+ }
38
+ export interface SetupResult {
39
+ modelsDir: string;
40
+ models: SetupModelResult[];
41
+ succeeded: number;
42
+ failed: number;
43
+ }
44
+ export interface SetupOptions {
45
+ onProgress?: (event: SetupProgressEvent) => void;
46
+ }
47
+ /**
48
+ * Load and validate a setup config from a file path or object.
49
+ */
50
+ export declare function loadConfig(configOrPath: string | SetupConfig): SetupConfig;
51
+ /**
52
+ * Download and set up models defined in a config file or object.
53
+ * This is the programmatic equivalent of `npx mvas setup <config.json>`.
54
+ *
55
+ * @param configOrPath - A SetupConfig object, or a path to a JSON config file
56
+ * @param options - Optional callbacks for progress reporting
57
+ * @returns Result summary with per-model status
58
+ */
59
+ export declare function setup(configOrPath: string | SetupConfig, options?: SetupOptions): Promise<SetupResult>;
60
+ /**
61
+ * Set up native binaries (whisper-cli, llama-completion, sherpa-onnx-offline-tts).
62
+ * Runs the bundled setup-binaries.sh script.
63
+ *
64
+ * @param sdkDir - Path to the SDK package directory (containing scripts/).
65
+ * If not provided, assumes the script is at ../scripts/ relative to this file.
66
+ */
67
+ export declare function setupBinaries(sdkDir?: string): Promise<void>;
68
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACrG,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI3E,MAAM,MAAM,sBAAsB,GAC9B,OAAO,GACP,aAAa,GACb,YAAY,GACZ,mBAAmB,GACnB,gBAAgB,GAChB,kBAAkB,GAClB,iBAAiB,GACjB,2BAA2B,GAC3B,YAAY,GACZ,cAAc,GACd,UAAU,CAAC;AAEf,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAClD;AAmMD;;GAEG;AACH,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,CA2B1E;AAED;;;;;;;GAOG;AACH,wBAAsB,KAAK,CACzB,YAAY,EAAE,MAAM,GAAG,WAAW,EAClC,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC,CAgEtB;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BlE"}
package/dist/setup.js ADDED
@@ -0,0 +1,324 @@
1
+ /**
2
+ * Programmatic Setup API for modular-voice-agent-sdk
3
+ *
4
+ * Provides the same download/verify/extract functionality as `npx mvas setup`
5
+ * but as importable functions with progress callbacks.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { setup, checkModelsInstalled } from 'modular-voice-agent-sdk/setup';
10
+ *
11
+ * if (!checkModelsInstalled('./models.json')) {
12
+ * await setup('./models.json', {
13
+ * onProgress: (event) => console.log(event.message),
14
+ * });
15
+ * }
16
+ * ```
17
+ */
18
+ import { spawn, execSync, spawnSync } from 'child_process';
19
+ import { existsSync, readFileSync, mkdirSync, unlinkSync, statSync, createReadStream } from 'fs';
20
+ import { createHash } from 'crypto';
21
+ import { basename, join } from 'path';
22
+ import { getModelsDir } from './cache';
23
+ // Re-export cache status utilities so consumers only need one import
24
+ export { checkModelsInstalled, getCacheStatus, getCacheDir, getModelsDir, getBinDir } from './cache';
25
+ // ============ Internal Helpers ============
26
+ function formatBytes(bytes) {
27
+ if (bytes < 1024)
28
+ return `${bytes} B`;
29
+ if (bytes < 1024 * 1024)
30
+ return `${(bytes / 1024).toFixed(1)} KB`;
31
+ if (bytes < 1024 * 1024 * 1024)
32
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
33
+ return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)} GB`;
34
+ }
35
+ async function computeSha256(filePath) {
36
+ return new Promise((resolve, reject) => {
37
+ const hash = createHash('sha256');
38
+ const stream = createReadStream(filePath);
39
+ stream.on('data', (data) => hash.update(data));
40
+ stream.on('end', () => resolve(hash.digest('hex')));
41
+ stream.on('error', reject);
42
+ });
43
+ }
44
+ async function verifyFile(filePath, config) {
45
+ if (!existsSync(filePath)) {
46
+ return { valid: false, reason: 'file does not exist' };
47
+ }
48
+ const stats = statSync(filePath);
49
+ if (config.size !== undefined) {
50
+ if (stats.size !== config.size) {
51
+ return {
52
+ valid: false,
53
+ reason: `size mismatch (got ${formatBytes(stats.size)}, expected ${formatBytes(config.size)})`,
54
+ };
55
+ }
56
+ }
57
+ else {
58
+ if (stats.size < 1024 * 1024) {
59
+ return { valid: false, reason: `file too small (${formatBytes(stats.size)})` };
60
+ }
61
+ }
62
+ if (config.sha256) {
63
+ const actualHash = await computeSha256(filePath);
64
+ if (actualHash !== config.sha256.toLowerCase()) {
65
+ return { valid: false, reason: 'checksum mismatch' };
66
+ }
67
+ }
68
+ return { valid: true };
69
+ }
70
+ function downloadWithCurl(url, destPath, silent = false) {
71
+ return new Promise((resolve, reject) => {
72
+ const args = [
73
+ '-L',
74
+ '-C', '-',
75
+ '-f',
76
+ '-o', destPath,
77
+ '--write-out', '\\nHTTP_CODE:%{http_code}\\n',
78
+ ];
79
+ if (!silent) {
80
+ args.splice(3, 0, '--progress-bar');
81
+ }
82
+ else {
83
+ args.splice(3, 0, '--silent', '--show-error');
84
+ }
85
+ args.push(url);
86
+ const child = spawn('curl', args, {
87
+ stdio: ['inherit', silent ? 'pipe' : 'inherit', 'pipe'],
88
+ });
89
+ let stderrData = '';
90
+ child.stderr?.on('data', (data) => {
91
+ stderrData += data.toString();
92
+ });
93
+ child.on('close', (code) => {
94
+ if (code === 0 || code === 33) {
95
+ resolve();
96
+ }
97
+ else if (code === 22) {
98
+ const httpMatch = stderrData.match(/HTTP_CODE:(\d+)/);
99
+ const httpCode = httpMatch ? httpMatch[1] : 'unknown';
100
+ reject(new Error(`HTTP error ${httpCode} - URL may be invalid or not found`));
101
+ }
102
+ else {
103
+ reject(new Error(`curl exited with code ${code}`));
104
+ }
105
+ });
106
+ child.on('error', (err) => {
107
+ reject(new Error(`Failed to run curl: ${err.message}. Make sure curl is installed.`));
108
+ });
109
+ });
110
+ }
111
+ function extractArchive(archivePath, destDir) {
112
+ const ext = archivePath.toLowerCase();
113
+ if (ext.endsWith('.tar.bz2') || ext.endsWith('.tbz2')) {
114
+ execSync(`tar -xjf "${archivePath}" -C "${destDir}"`, { stdio: 'pipe' });
115
+ }
116
+ else if (ext.endsWith('.tar.gz') || ext.endsWith('.tgz')) {
117
+ execSync(`tar -xzf "${archivePath}" -C "${destDir}"`, { stdio: 'pipe' });
118
+ }
119
+ else if (ext.endsWith('.zip')) {
120
+ execSync(`unzip -o "${archivePath}" -d "${destDir}"`, { stdio: 'pipe' });
121
+ }
122
+ else {
123
+ throw new Error(`Unknown archive format: ${archivePath}`);
124
+ }
125
+ }
126
+ // ============ Core Download Logic ============
127
+ async function downloadModel(type, config, modelsDir, emit) {
128
+ const url = config.url;
129
+ const urlFilename = basename(new URL(url).pathname);
130
+ if (config.extract) {
131
+ const archivePath = join(modelsDir, urlFilename);
132
+ const targetDir = config.directory || urlFilename.replace(/\.(tar\.bz2|tar\.gz|tbz2|tgz|zip)$/, '');
133
+ const finalPath = join(modelsDir, targetDir);
134
+ if (existsSync(finalPath)) {
135
+ emit({ type: 'model_skip', message: `Already exists: ${targetDir}`, model: type });
136
+ return { name: type, success: true, skipped: true };
137
+ }
138
+ emit({ type: 'model_downloading', message: `Downloading: ${url}`, model: type });
139
+ if (existsSync(archivePath)) {
140
+ const stats = statSync(archivePath);
141
+ emit({ type: 'model_resuming', message: `Resuming from ${formatBytes(stats.size)}`, model: type });
142
+ }
143
+ await downloadWithCurl(url, archivePath);
144
+ if (config.sha256 || config.size) {
145
+ emit({ type: 'model_verifying', message: 'Verifying download...', model: type });
146
+ const result = await verifyFile(archivePath, config);
147
+ if (!result.valid) {
148
+ emit({ type: 'model_verification_failed', message: `Verification failed: ${result.reason}, retrying...`, model: type });
149
+ unlinkSync(archivePath);
150
+ await downloadWithCurl(url, archivePath);
151
+ }
152
+ }
153
+ emit({ type: 'model_extracting', message: `Extracting to: ${targetDir}`, model: type });
154
+ extractArchive(archivePath, modelsDir);
155
+ try {
156
+ unlinkSync(archivePath);
157
+ }
158
+ catch { /* ignore */ }
159
+ emit({ type: 'model_done', message: `Done: ${type}`, model: type });
160
+ return { name: type, success: true };
161
+ }
162
+ else {
163
+ const filename = config.filename || urlFilename;
164
+ const destPath = join(modelsDir, filename);
165
+ if (existsSync(destPath)) {
166
+ const result = await verifyFile(destPath, config);
167
+ if (result.valid) {
168
+ emit({ type: 'model_skip', message: `Already exists: ${filename}`, model: type });
169
+ return { name: type, success: true, skipped: true };
170
+ }
171
+ emit({ type: 'model_downloading', message: `Existing file invalid (${result.reason}), re-downloading...`, model: type });
172
+ }
173
+ else {
174
+ emit({ type: 'model_downloading', message: `Downloading: ${url}`, model: type });
175
+ }
176
+ if (existsSync(destPath)) {
177
+ const stats = statSync(destPath);
178
+ emit({ type: 'model_resuming', message: `Resuming from ${formatBytes(stats.size)}`, model: type });
179
+ }
180
+ await downloadWithCurl(url, destPath);
181
+ if (config.sha256 || config.size) {
182
+ emit({ type: 'model_verifying', message: 'Verifying download...', model: type });
183
+ const result = await verifyFile(destPath, config);
184
+ if (!result.valid) {
185
+ emit({ type: 'model_verification_failed', message: `Verification failed: ${result.reason}`, model: type });
186
+ return { name: type, success: false, error: `Verification failed: ${result.reason}` };
187
+ }
188
+ }
189
+ emit({ type: 'model_done', message: `Done: ${type}`, model: type });
190
+ return { name: type, success: true };
191
+ }
192
+ }
193
+ // ============ Public API ============
194
+ /**
195
+ * Load and validate a setup config from a file path or object.
196
+ */
197
+ export function loadConfig(configOrPath) {
198
+ let config;
199
+ if (typeof configOrPath === 'string') {
200
+ if (!existsSync(configOrPath)) {
201
+ throw new Error(`Config file not found: ${configOrPath}`);
202
+ }
203
+ const content = readFileSync(configOrPath, 'utf-8');
204
+ try {
205
+ config = JSON.parse(content);
206
+ }
207
+ catch {
208
+ throw new Error(`Invalid JSON in config file: ${configOrPath}`);
209
+ }
210
+ }
211
+ else {
212
+ config = configOrPath;
213
+ }
214
+ if (!config.models || typeof config.models !== 'object') {
215
+ throw new Error('Config must have a "models" object');
216
+ }
217
+ const modelTypes = Object.keys(config.models);
218
+ if (modelTypes.length === 0) {
219
+ throw new Error('No models defined in config');
220
+ }
221
+ return config;
222
+ }
223
+ /**
224
+ * Download and set up models defined in a config file or object.
225
+ * This is the programmatic equivalent of `npx mvas setup <config.json>`.
226
+ *
227
+ * @param configOrPath - A SetupConfig object, or a path to a JSON config file
228
+ * @param options - Optional callbacks for progress reporting
229
+ * @returns Result summary with per-model status
230
+ */
231
+ export async function setup(configOrPath, options) {
232
+ const config = loadConfig(configOrPath);
233
+ const emit = options?.onProgress ?? (() => { });
234
+ const curlCheck = spawnSync('curl', ['--version']);
235
+ if (curlCheck.error) {
236
+ throw new Error('curl is required but not found. Please install curl.');
237
+ }
238
+ const modelsDir = getModelsDir();
239
+ mkdirSync(modelsDir, { recursive: true });
240
+ const modelTypes = Object.keys(config.models);
241
+ emit({
242
+ type: 'start',
243
+ message: `Setting up ${modelTypes.length} model(s)`,
244
+ modelsDir,
245
+ total: modelTypes.length,
246
+ });
247
+ const results = [];
248
+ let succeeded = 0;
249
+ let failed = 0;
250
+ for (let i = 0; i < modelTypes.length; i++) {
251
+ const type = modelTypes[i];
252
+ const modelConfig = config.models[type];
253
+ emit({
254
+ type: 'model_start',
255
+ message: `${type.toUpperCase()} model`,
256
+ model: type,
257
+ current: i + 1,
258
+ total: modelTypes.length,
259
+ });
260
+ try {
261
+ const result = await downloadModel(type, modelConfig, modelsDir, emit);
262
+ results.push(result);
263
+ if (result.success)
264
+ succeeded++;
265
+ else
266
+ failed++;
267
+ }
268
+ catch (err) {
269
+ const errorMsg = err instanceof Error ? err.message : String(err);
270
+ emit({
271
+ type: 'model_failed',
272
+ message: `Failed: ${errorMsg}`,
273
+ model: type,
274
+ current: i + 1,
275
+ total: modelTypes.length,
276
+ });
277
+ results.push({ name: type, success: false, error: errorMsg });
278
+ failed++;
279
+ }
280
+ }
281
+ emit({
282
+ type: 'complete',
283
+ message: `Setup complete: ${succeeded} succeeded, ${failed} failed`,
284
+ modelsDir,
285
+ total: modelTypes.length,
286
+ });
287
+ return { modelsDir, models: results, succeeded, failed };
288
+ }
289
+ /**
290
+ * Set up native binaries (whisper-cli, llama-completion, sherpa-onnx-offline-tts).
291
+ * Runs the bundled setup-binaries.sh script.
292
+ *
293
+ * @param sdkDir - Path to the SDK package directory (containing scripts/).
294
+ * If not provided, assumes the script is at ../scripts/ relative to this file.
295
+ */
296
+ export async function setupBinaries(sdkDir) {
297
+ const scriptsBase = sdkDir ?? join(import.meta.dirname ?? '.', '..');
298
+ const scriptPath = join(scriptsBase, 'scripts', 'setup-binaries.sh');
299
+ const originalScript = join(scriptsBase, 'scripts', 'setup.sh');
300
+ const targetScript = existsSync(scriptPath) ? scriptPath : originalScript;
301
+ if (!existsSync(targetScript)) {
302
+ throw new Error(`Setup script not found at: ${scriptPath}`);
303
+ }
304
+ return new Promise((resolve, reject) => {
305
+ const child = spawn('bash', [targetScript, '--binaries-only'], {
306
+ stdio: 'inherit',
307
+ });
308
+ child.on('error', (err) => {
309
+ if (err.message.includes('ENOENT')) {
310
+ reject(new Error(`bash not found. Please run the setup script manually: bash ${targetScript}`));
311
+ }
312
+ else {
313
+ reject(new Error(`Error running setup: ${err.message}`));
314
+ }
315
+ });
316
+ child.on('close', (code) => {
317
+ if (code !== 0) {
318
+ reject(new Error(`Setup script exited with code ${code}`));
319
+ }
320
+ resolve();
321
+ });
322
+ });
323
+ }
324
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "modular-voice-agent-sdk",
3
- "version": "2.5.1",
3
+ "version": "2.6.2",
4
4
  "description": "Modular isomorphic STT → LLM → TTS pipeline library for AI voice agents and voice assistants",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -30,6 +30,10 @@
30
30
  "./agent": {
31
31
  "import": "./dist/backends/agent/index.js",
32
32
  "types": "./dist/backends/agent/index.d.ts"
33
+ },
34
+ "./setup": {
35
+ "import": "./dist/setup.js",
36
+ "types": "./dist/setup.d.ts"
33
37
  }
34
38
  },
35
39
  "bin": {