@mastra/voice-modelslab 0.1.0 → 0.1.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/_types/@internal_voice/dist/_types/@internal_ai-sdk-v5/dist/index.d.ts +9043 -0
  3. package/dist/_types/@internal_voice/dist/_types/@internal_core/dist/base/index.d.ts +31 -0
  4. package/dist/_types/@internal_voice/dist/_types/@internal_core/dist/logger/index.d.ts +217 -0
  5. package/dist/_types/@internal_voice/dist/_types/@internal_core/dist/request-context/index.d.ts +145 -0
  6. package/dist/_types/@internal_voice/dist/_types/@internal_core/dist/types/index.d.ts +3 -0
  7. package/dist/_types/@internal_voice/dist/_types/zod/v3/ZodError.d.ts +164 -0
  8. package/dist/_types/@internal_voice/dist/_types/zod/v3/errors.d.ts +5 -0
  9. package/dist/_types/@internal_voice/dist/_types/zod/v3/external.d.ts +6 -0
  10. package/dist/_types/@internal_voice/dist/_types/zod/v3/helpers/enumUtil.d.ts +8 -0
  11. package/dist/_types/@internal_voice/dist/_types/zod/v3/helpers/errorUtil.d.ts +9 -0
  12. package/dist/_types/@internal_voice/dist/_types/zod/v3/helpers/parseUtil.d.ts +78 -0
  13. package/dist/_types/@internal_voice/dist/_types/zod/v3/helpers/partialUtil.d.ts +8 -0
  14. package/dist/_types/@internal_voice/dist/_types/zod/v3/helpers/typeAliases.d.ts +2 -0
  15. package/dist/_types/@internal_voice/dist/_types/zod/v3/helpers/util.d.ts +85 -0
  16. package/dist/_types/@internal_voice/dist/_types/zod/v3/index.d.cts +4 -0
  17. package/dist/_types/@internal_voice/dist/_types/zod/v3/index.d.ts +4 -0
  18. package/dist/_types/@internal_voice/dist/_types/zod/v3/locales/en.d.ts +3 -0
  19. package/dist/_types/@internal_voice/dist/_types/zod/v3/standard-schema.d.ts +102 -0
  20. package/dist/_types/@internal_voice/dist/_types/zod/v3/types.d.ts +1034 -0
  21. package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/checks.d.ts +1 -0
  22. package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/coerce.d.ts +17 -0
  23. package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/compat.d.ts +50 -0
  24. package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/errors.d.ts +30 -0
  25. package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/external.d.ts +16 -0
  26. package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/from-json-schema.d.ts +12 -0
  27. package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/index.d.ts +4 -0
  28. package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/iso.d.ts +22 -0
  29. package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/parse.d.ts +31 -0
  30. package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/schemas.d.ts +767 -0
  31. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/api.d.ts +325 -0
  32. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/checks.d.ts +278 -0
  33. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/core.d.ts +70 -0
  34. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/doc.d.ts +14 -0
  35. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/errors.d.ts +221 -0
  36. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/index.d.ts +16 -0
  37. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/json-schema-generator.d.ts +65 -0
  38. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/json-schema-processors.d.ts +49 -0
  39. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/json-schema.d.ts +88 -0
  40. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/parse.d.ts +49 -0
  41. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/regexes.d.ts +85 -0
  42. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/registries.d.ts +35 -0
  43. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/schemas.d.ts +1184 -0
  44. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/standard-schema.d.ts +126 -0
  45. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/to-json-schema.d.ts +114 -0
  46. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/util.d.ts +200 -0
  47. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/versions.d.ts +5 -0
  48. package/dist/_types/@internal_voice/dist/_types/zod/v4/index.d.cts +3 -0
  49. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/ar.d.ts +4 -0
  50. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/az.d.ts +4 -0
  51. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/be.d.ts +4 -0
  52. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/bg.d.ts +4 -0
  53. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/ca.d.ts +4 -0
  54. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/cs.d.ts +4 -0
  55. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/da.d.ts +4 -0
  56. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/de.d.ts +4 -0
  57. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/el.d.ts +4 -0
  58. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/en.d.ts +4 -0
  59. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/eo.d.ts +4 -0
  60. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/es.d.ts +4 -0
  61. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/fa.d.ts +4 -0
  62. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/fi.d.ts +4 -0
  63. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/fr-CA.d.ts +4 -0
  64. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/fr.d.ts +4 -0
  65. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/he.d.ts +4 -0
  66. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/hr.d.ts +4 -0
  67. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/hu.d.ts +4 -0
  68. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/hy.d.ts +4 -0
  69. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/id.d.ts +4 -0
  70. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/index.d.ts +52 -0
  71. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/is.d.ts +4 -0
  72. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/it.d.ts +4 -0
  73. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/ja.d.ts +4 -0
  74. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/ka.d.ts +4 -0
  75. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/kh.d.ts +5 -0
  76. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/km.d.ts +4 -0
  77. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/ko.d.ts +4 -0
  78. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/lt.d.ts +4 -0
  79. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/mk.d.ts +4 -0
  80. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/ms.d.ts +4 -0
  81. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/nl.d.ts +4 -0
  82. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/no.d.ts +4 -0
  83. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/ota.d.ts +4 -0
  84. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/pl.d.ts +4 -0
  85. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/ps.d.ts +4 -0
  86. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/pt.d.ts +4 -0
  87. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/ro.d.ts +4 -0
  88. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/ru.d.ts +4 -0
  89. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/sl.d.ts +4 -0
  90. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/sv.d.ts +4 -0
  91. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/ta.d.ts +4 -0
  92. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/th.d.ts +4 -0
  93. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/tr.d.ts +4 -0
  94. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/ua.d.ts +5 -0
  95. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/uk.d.ts +4 -0
  96. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/ur.d.ts +4 -0
  97. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/uz.d.ts +4 -0
  98. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/vi.d.ts +4 -0
  99. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/yo.d.ts +4 -0
  100. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/zh-CN.d.ts +4 -0
  101. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/zh-TW.d.ts +4 -0
  102. package/dist/_types/@internal_voice/dist/index.d.ts +16 -0
  103. package/dist/_types/@internal_voice/dist/voice/aisdk/index.d.ts +3 -0
  104. package/dist/_types/@internal_voice/dist/voice/aisdk/speech.d.ts +23 -0
  105. package/dist/_types/@internal_voice/dist/voice/aisdk/transcription.d.ts +22 -0
  106. package/dist/_types/@internal_voice/dist/voice/composite-voice.d.ts +72 -0
  107. package/dist/_types/@internal_voice/dist/voice/default-voice.d.ts +13 -0
  108. package/dist/_types/@internal_voice/dist/voice/index.d.ts +5 -0
  109. package/dist/_types/@internal_voice/dist/voice/voice.d.ts +172 -0
  110. package/dist/index.cjs +262 -2
  111. package/dist/index.cjs.map +1 -1
  112. package/dist/index.d.ts +1 -1
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +261 -1
  115. package/dist/index.js.map +1 -1
  116. package/package.json +10 -14
package/dist/index.cjs CHANGED
@@ -1,7 +1,267 @@
1
1
  'use strict';
2
2
 
3
3
  var stream = require('stream');
4
- var voice = require('@mastra/core/voice');
4
+
5
+ // src/index.ts
6
+
7
+ // ../../packages/_internal-core/dist/chunk-HDURQPU2.js
8
+ var RegisteredLogger = {
9
+ LLM: "LLM"};
10
+ var LogLevel = {
11
+ DEBUG: "debug",
12
+ INFO: "info",
13
+ WARN: "warn",
14
+ ERROR: "error"};
15
+ var MastraLogger = class {
16
+ name;
17
+ level;
18
+ transports;
19
+ constructor(options = {}) {
20
+ this.name = options.name || "Mastra";
21
+ this.level = options.level || LogLevel.ERROR;
22
+ this.transports = new Map(Object.entries(options.transports || {}));
23
+ }
24
+ getTransports() {
25
+ return this.transports;
26
+ }
27
+ trackException(_error, _metadata) {
28
+ }
29
+ async listLogs(transportId, params) {
30
+ if (!transportId || !this.transports.has(transportId)) {
31
+ return { logs: [], total: 0, page: params?.page ?? 1, perPage: params?.perPage ?? 100, hasMore: false };
32
+ }
33
+ return this.transports.get(transportId).listLogs?.(params) ?? {
34
+ logs: [],
35
+ total: 0,
36
+ page: params?.page ?? 1,
37
+ perPage: params?.perPage ?? 100,
38
+ hasMore: false
39
+ };
40
+ }
41
+ async listLogsByRunId({
42
+ transportId,
43
+ runId,
44
+ fromDate,
45
+ toDate,
46
+ logLevel,
47
+ filters,
48
+ page,
49
+ perPage
50
+ }) {
51
+ if (!transportId || !this.transports.has(transportId) || !runId) {
52
+ return { logs: [], total: 0, page: page ?? 1, perPage: perPage ?? 100, hasMore: false };
53
+ }
54
+ return this.transports.get(transportId).listLogsByRunId?.({ runId, fromDate, toDate, logLevel, filters, page, perPage }) ?? {
55
+ logs: [],
56
+ total: 0,
57
+ page: page ?? 1,
58
+ perPage: perPage ?? 100,
59
+ hasMore: false
60
+ };
61
+ }
62
+ };
63
+ var ConsoleLogger = class _ConsoleLogger extends MastraLogger {
64
+ component;
65
+ filter;
66
+ constructor(options = {}) {
67
+ super(options);
68
+ this.component = options.component;
69
+ this.filter = options.filter;
70
+ }
71
+ child(componentOrBindings) {
72
+ const component = typeof componentOrBindings === "string" ? componentOrBindings : componentOrBindings?.component ?? this.component;
73
+ return new _ConsoleLogger({
74
+ name: this.name,
75
+ level: this.level,
76
+ component,
77
+ filter: this.filter
78
+ });
79
+ }
80
+ shouldLog(level, message, args) {
81
+ if (!this.filter) return true;
82
+ try {
83
+ return this.filter({ component: this.component, level, message, args });
84
+ } catch (e) {
85
+ console.error(`[Logger] Filter error for component=${this.component} level=${level}:`, e);
86
+ return true;
87
+ }
88
+ }
89
+ prefix() {
90
+ return this.component ? `[${this.component}] ` : "";
91
+ }
92
+ debug(message, ...args) {
93
+ if (this.level === LogLevel.DEBUG && this.shouldLog(LogLevel.DEBUG, message, args)) {
94
+ console.info(`${this.prefix()}${message}`, ...args);
95
+ }
96
+ }
97
+ info(message, ...args) {
98
+ if ((this.level === LogLevel.INFO || this.level === LogLevel.DEBUG) && this.shouldLog(LogLevel.INFO, message, args)) {
99
+ console.info(`${this.prefix()}${message}`, ...args);
100
+ }
101
+ }
102
+ warn(message, ...args) {
103
+ if ((this.level === LogLevel.WARN || this.level === LogLevel.INFO || this.level === LogLevel.DEBUG) && this.shouldLog(LogLevel.WARN, message, args)) {
104
+ console.info(`${this.prefix()}${message}`, ...args);
105
+ }
106
+ }
107
+ error(message, ...args) {
108
+ if ((this.level === LogLevel.ERROR || this.level === LogLevel.WARN || this.level === LogLevel.INFO || this.level === LogLevel.DEBUG) && this.shouldLog(LogLevel.ERROR, message, args)) {
109
+ console.error(`${this.prefix()}${message}`, ...args);
110
+ }
111
+ }
112
+ async listLogs(_transportId, _params) {
113
+ return { logs: [], total: 0, page: _params?.page ?? 1, perPage: _params?.perPage ?? 100, hasMore: false };
114
+ }
115
+ async listLogsByRunId(_args) {
116
+ return { logs: [], total: 0, page: _args.page ?? 1, perPage: _args.perPage ?? 100, hasMore: false };
117
+ }
118
+ };
119
+
120
+ // ../../packages/_internal-core/dist/base/index.js
121
+ var MastraBase = class {
122
+ component = RegisteredLogger.LLM;
123
+ logger;
124
+ name;
125
+ #rawConfig;
126
+ constructor({
127
+ component,
128
+ name,
129
+ rawConfig
130
+ }) {
131
+ this.component = component || RegisteredLogger.LLM;
132
+ this.name = name;
133
+ this.#rawConfig = rawConfig;
134
+ this.logger = new ConsoleLogger({ name: `${this.component} - ${this.name}` });
135
+ }
136
+ /**
137
+ * Returns the raw storage configuration this primitive was created from,
138
+ * or undefined if it was created from code.
139
+ */
140
+ toRawConfig() {
141
+ return this.#rawConfig;
142
+ }
143
+ /**
144
+ * Sets the raw storage configuration for this primitive.
145
+ * @internal
146
+ */
147
+ __setRawConfig(rawConfig) {
148
+ this.#rawConfig = rawConfig;
149
+ }
150
+ /**
151
+ * Set the logger for the agent
152
+ * @param logger
153
+ */
154
+ __setLogger(logger) {
155
+ this.logger = "child" in logger && typeof logger.child === "function" ? logger.child({ component: this.component }) : logger;
156
+ }
157
+ };
158
+
159
+ // ../../packages/_internals/voice/dist/chunk-NWNKSBZV.js
160
+ var MastraVoice = class extends MastraBase {
161
+ listeningModel;
162
+ speechModel;
163
+ speaker;
164
+ realtimeConfig;
165
+ constructor({ listeningModel, speechModel, speaker, realtimeConfig, name } = {}) {
166
+ super({
167
+ component: "VOICE",
168
+ name
169
+ });
170
+ this.listeningModel = listeningModel;
171
+ this.speechModel = speechModel;
172
+ this.speaker = speaker;
173
+ this.realtimeConfig = realtimeConfig;
174
+ }
175
+ /**
176
+ * Custom serialization for tracing/observability spans.
177
+ * Excludes `apiKey` from listeningModel / speechModel / realtimeConfig
178
+ * and any provider-specific state held by subclasses. Subclasses that
179
+ * need to expose additional non-sensitive fields can override.
180
+ */
181
+ serializeForSpan() {
182
+ return {
183
+ component: "VOICE",
184
+ name: this.name,
185
+ speaker: this.speaker,
186
+ listeningModel: this.listeningModel ? { name: this.listeningModel.name } : void 0,
187
+ speechModel: this.speechModel ? { name: this.speechModel.name } : void 0,
188
+ realtimeModel: this.realtimeConfig?.model
189
+ };
190
+ }
191
+ updateConfig(_options) {
192
+ this.logger.debug("updateConfig not implemented by this voice provider");
193
+ }
194
+ /**
195
+ * Initializes a WebSocket or WebRTC connection for real-time communication
196
+ * @returns Promise that resolves when the connection is established
197
+ */
198
+ async connect(_options) {
199
+ this.logger.debug("connect not implemented by this voice provider");
200
+ }
201
+ /**
202
+ * Relay audio data to the voice provider for real-time processing
203
+ * @param audioData Audio data to relay
204
+ */
205
+ async send(_audioData) {
206
+ this.logger.debug("relay not implemented by this voice provider");
207
+ }
208
+ /**
209
+ * Trigger voice providers to respond
210
+ */
211
+ async answer(_options) {
212
+ this.logger.debug("answer not implemented by this voice provider");
213
+ }
214
+ /**
215
+ * Equip the voice provider with instructions
216
+ * @param instructions Instructions to add
217
+ */
218
+ addInstructions(_instructions) {
219
+ }
220
+ /**
221
+ * Equip the voice provider with tools
222
+ * @param tools Array of tools to add
223
+ */
224
+ addTools(_tools) {
225
+ }
226
+ /**
227
+ * Disconnect from the WebSocket or WebRTC connection
228
+ */
229
+ close() {
230
+ this.logger.debug("close not implemented by this voice provider");
231
+ }
232
+ /**
233
+ * Register an event listener
234
+ * @param event Event name (e.g., 'speaking', 'writing', 'error')
235
+ * @param callback Callback function that receives event data
236
+ */
237
+ on(_event, _callback) {
238
+ this.logger.debug("on not implemented by this voice provider");
239
+ }
240
+ /**
241
+ * Remove an event listener
242
+ * @param event Event name (e.g., 'speaking', 'writing', 'error')
243
+ * @param callback Callback function to remove
244
+ */
245
+ off(_event, _callback) {
246
+ this.logger.debug("off not implemented by this voice provider");
247
+ }
248
+ /**
249
+ * Get available speakers/voices
250
+ * @returns Array of available voice IDs and their metadata
251
+ */
252
+ getSpeakers() {
253
+ this.logger.debug("getSpeakers not implemented by this voice provider");
254
+ return Promise.resolve([]);
255
+ }
256
+ /**
257
+ * Get available speakers/voices
258
+ * @returns Array of available voice IDs and their metadata
259
+ */
260
+ getListener() {
261
+ this.logger.debug("getListener not implemented by this voice provider");
262
+ return Promise.resolve({ enabled: false });
263
+ }
264
+ };
5
265
 
6
266
  // src/index.ts
7
267
  var MODELSLAB_TTS_URL = "https://modelslab.com/api/v6/voice/text_to_speech";
@@ -27,7 +287,7 @@ var OPENAI_VOICE_MAP = {
27
287
  async function sleep(ms) {
28
288
  return new Promise((resolve) => setTimeout(resolve, ms));
29
289
  }
30
- var ModelsLabVoice = class extends voice.MastraVoice {
290
+ var ModelsLabVoice = class extends MastraVoice {
31
291
  apiKey;
32
292
  constructor({
33
293
  speechModel,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["MastraVoice","Readable"],"mappings":"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","file":"index.cjs","sourcesContent":["import { Readable } from 'node:stream';\n\nimport { MastraVoice } from '@mastra/core/voice';\n\nconst MODELSLAB_TTS_URL = 'https://modelslab.com/api/v6/voice/text_to_speech';\nconst MODELSLAB_TTS_FETCH_URL = 'https://modelslab.com/api/v6/voice/fetch/';\nconst POLL_INTERVAL_MS = 5000;\nconst POLL_TIMEOUT_MS = 300_000;\n\ntype ModelsLabModel = 'default';\n\nexport type ModelsLabVoiceId =\n | '1' // Neutral\n | '2' // Male\n | '3' // Warm\n | '4' // Deep Male\n | '5' // Female\n | '6'; // Clear Female\n\nexport const MODELSLAB_VOICES: { voiceId: ModelsLabVoiceId; name: string; language: string; gender: string }[] = [\n { voiceId: '1', name: 'Neutral', language: 'en', gender: 'neutral' },\n { voiceId: '2', name: 'Male', language: 'en', gender: 'male' },\n { voiceId: '3', name: 'Warm', language: 'en', gender: 'male' },\n { voiceId: '4', name: 'Deep Male', language: 'en', gender: 'male' },\n { voiceId: '5', name: 'Female', language: 'en', gender: 'female' },\n { voiceId: '6', name: 'Clear Female', language: 'en', gender: 'female' },\n];\n\n// OpenAI voice → ModelsLab voice_id mapping\nconst OPENAI_VOICE_MAP: Record<string, ModelsLabVoiceId> = {\n alloy: '1',\n echo: '2',\n fable: '3',\n onyx: '4',\n nova: '5',\n shimmer: '6',\n};\n\ninterface ModelsLabVoiceConfig {\n name?: ModelsLabModel;\n apiKey?: string;\n}\n\ninterface TtsApiResponse {\n status: 'success' | 'processing' | 'error';\n output?: string;\n request_id?: string | number;\n eta?: number;\n message?: string;\n}\n\nasync function sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\n/**\n * ModelsLab voice provider for Mastra.\n *\n * Uses ModelsLab's TTS API with key-in-body authentication and async polling.\n * API docs: https://docs.modelslab.com\n *\n * @example\n * ```ts\n * const voice = new ModelsLabVoice({\n * speechModel: { apiKey: process.env.MODELSLAB_API_KEY },\n * speaker: '5', // Female voice\n * });\n *\n * const stream = await voice.speak('Hello, world!');\n * ```\n */\nexport class ModelsLabVoice extends MastraVoice {\n private apiKey: string;\n\n constructor({\n speechModel,\n speaker,\n }: {\n speechModel?: ModelsLabVoiceConfig;\n speaker?: ModelsLabVoiceId | string;\n } = {}) {\n const apiKey = speechModel?.apiKey ?? process.env.MODELSLAB_API_KEY;\n\n super({\n speechModel: {\n name: speechModel?.name ?? 'default',\n apiKey,\n },\n speaker: speaker ?? '1',\n });\n\n if (!apiKey) {\n throw new Error('MODELSLAB_API_KEY is not set');\n }\n\n this.apiKey = apiKey;\n }\n\n /**\n * Returns available ModelsLab voices.\n */\n async getSpeakers(): Promise<{ voiceId: string; name: string; language: string; gender: string }[]> {\n return MODELSLAB_VOICES;\n }\n\n /**\n * Converts text to speech using the ModelsLab TTS API.\n *\n * ModelsLab returns an audio URL (not a stream). This method:\n * 1. POSTs to the TTS endpoint\n * 2. If processing, polls until the audio URL is ready\n * 3. Downloads the audio and returns a Readable stream\n *\n * @param input - Text to convert to speech\n * @param options - Optional parameters\n * @param options.speaker - ModelsLab voice ID (1–10) or OpenAI voice name (alloy, echo, etc.)\n * @param options.language - Language code (default: 'english')\n * @param options.speed - Speech speed (0.5–2.0, default: 1.0)\n * @returns A Promise resolving to a Readable audio stream\n */\n async speak(\n input: string | NodeJS.ReadableStream,\n options?: {\n speaker?: ModelsLabVoiceId | string;\n language?: string;\n speed?: number;\n [key: string]: unknown;\n },\n ): Promise<NodeJS.ReadableStream> {\n const text = typeof input === 'string' ? input : await this.streamToString(input);\n\n // Resolve voice_id: accept numeric ID or OpenAI-style voice name\n const rawSpeaker = options?.speaker ?? this.speaker ?? '1';\n const voiceId = OPENAI_VOICE_MAP[rawSpeaker] ?? rawSpeaker;\n\n const body = {\n key: this.apiKey,\n prompt: text,\n language: options?.language ?? 'english',\n voice_id: parseInt(voiceId, 10) || 1,\n speed: options?.speed ?? 1.0,\n };\n\n const initResp = await fetch(MODELSLAB_TTS_URL, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n });\n\n if (!initResp.ok) {\n throw new Error(`ModelsLab TTS failed: ${initResp.status} ${initResp.statusText}`);\n }\n\n let data = (await initResp.json()) as TtsApiResponse;\n\n if (data.status === 'error') {\n throw new Error(`ModelsLab TTS error: ${data.message ?? 'Unknown error'}`);\n }\n\n if (data.status === 'processing') {\n const requestId = String(data.request_id ?? '');\n if (!requestId) {\n throw new Error('ModelsLab TTS returned processing status without request_id');\n }\n data = await this.pollUntilReady(requestId);\n }\n\n const audioUrl = data.output;\n if (!audioUrl) {\n throw new Error('ModelsLab TTS returned no audio URL');\n }\n\n // Download audio and return as Readable stream\n const audioResp = await fetch(audioUrl);\n if (!audioResp.ok) {\n throw new Error(`Failed to download ModelsLab audio: ${audioResp.status}`);\n }\n\n const audioBuffer = await audioResp.arrayBuffer();\n const readable = new Readable();\n readable.push(Buffer.from(audioBuffer));\n readable.push(null);\n\n return readable;\n }\n\n /**\n * ModelsLab does not provide speech-to-text. Throws NotImplemented.\n */\n async listen(_input: NodeJS.ReadableStream, _options?: Record<string, unknown>): Promise<string> {\n throw new Error(\n 'ModelsLab does not support speech-to-text. Use a different provider for listening (e.g., @mastra/voice-deepgram).',\n );\n }\n\n private async pollUntilReady(requestId: string): Promise<TtsApiResponse> {\n const fetchUrl = `${MODELSLAB_TTS_FETCH_URL}${requestId}`;\n const deadline = Date.now() + POLL_TIMEOUT_MS;\n\n while (Date.now() < deadline) {\n await sleep(POLL_INTERVAL_MS);\n\n const resp = await fetch(fetchUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ key: this.apiKey }),\n });\n\n if (!resp.ok) {\n throw new Error(`ModelsLab TTS poll failed: ${resp.status}`);\n }\n\n const data = (await resp.json()) as TtsApiResponse;\n\n if (data.status === 'error') {\n throw new Error(`ModelsLab TTS failed: ${data.message ?? 'Unknown error'}`);\n }\n\n if (data.status === 'success') {\n return data;\n }\n // status === 'processing' → keep polling\n }\n\n throw new Error(`ModelsLab TTS timed out after ${POLL_TIMEOUT_MS / 1000}s (request_id=${requestId})`);\n }\n\n private async streamToString(stream: NodeJS.ReadableStream): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n if (typeof chunk === 'string') {\n chunks.push(Buffer.from(chunk));\n } else {\n chunks.push(chunk as Buffer);\n }\n }\n return Buffer.concat(chunks).toString('utf-8');\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../packages/_internal-core/src/logger/index.ts","../../../packages/_internal-core/src/base/MastraBase.ts","../../../packages/_internals/voice/src/voice/voice.ts","../src/index.ts"],"names":["Readable"],"mappings":"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","file":"index.cjs","sourcesContent":["import { Transform } from 'node:stream';\n\nexport const RegisteredLogger = {\n AGENT: 'AGENT',\n OBSERVABILITY: 'OBSERVABILITY',\n AUTH: 'AUTH',\n BROWSER: 'BROWSER',\n NETWORK: 'NETWORK',\n WORKFLOW: 'WORKFLOW',\n LLM: 'LLM',\n TTS: 'TTS',\n VOICE: 'VOICE',\n VECTOR: 'VECTOR',\n BUNDLER: 'BUNDLER',\n DEPLOYER: 'DEPLOYER',\n MEMORY: 'MEMORY',\n STORAGE: 'STORAGE',\n EMBEDDINGS: 'EMBEDDINGS',\n MCP_SERVER: 'MCP_SERVER',\n SERVER_CACHE: 'SERVER_CACHE',\n SERVER: 'SERVER',\n WORKSPACE: 'WORKSPACE',\n CHANNEL: 'CHANNEL',\n} as const;\n\nexport type RegisteredLogger = (typeof RegisteredLogger)[keyof typeof RegisteredLogger];\n\nexport const LogLevel = {\n DEBUG: 'debug',\n INFO: 'info',\n WARN: 'warn',\n ERROR: 'error',\n NONE: 'silent',\n} as const;\n\nexport type LogLevel = (typeof LogLevel)[keyof typeof LogLevel];\n\nexport interface BaseLogMessage {\n runId?: string;\n msg: string;\n level: LogLevel;\n time: Date;\n pid: number;\n hostname: string;\n name: string;\n}\n\nexport abstract class LoggerTransport extends Transform {\n constructor(opts: any = {}) {\n super({ ...opts, objectMode: true });\n }\n\n async listLogsByRunId(_args: {\n runId: string;\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n }): Promise<{\n logs: BaseLogMessage[];\n total: number;\n page: number;\n perPage: number;\n hasMore: boolean;\n }> {\n return { logs: [], total: 0, page: _args?.page ?? 1, perPage: _args?.perPage ?? 100, hasMore: false };\n }\n\n async listLogs(_args?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n returnPaginationResults?: boolean;\n page?: number;\n perPage?: number;\n }): Promise<{\n logs: BaseLogMessage[];\n total: number;\n page: number;\n perPage: number;\n hasMore: boolean;\n }> {\n return { logs: [], total: 0, page: _args?.page ?? 1, perPage: _args?.perPage ?? 100, hasMore: false };\n }\n}\n\nexport const createCustomTransport = (\n stream: Transform,\n listLogs?: LoggerTransport['listLogs'],\n listLogsByRunId?: LoggerTransport['listLogsByRunId'],\n) => {\n let transport = stream as LoggerTransport;\n if (listLogs) {\n transport.listLogs = listLogs;\n }\n if (listLogsByRunId) {\n transport.listLogsByRunId = listLogsByRunId;\n }\n return transport as LoggerTransport;\n};\n\nexport interface IMastraLogger {\n debug(message: string, ...args: any[]): void;\n info(message: string, ...args: any[]): void;\n warn(message: string, ...args: any[]): void;\n error(message: string, ...args: any[]): void;\n trackException(error: Error, metadata?: Record<string, unknown>): void;\n\n getTransports(): Map<string, LoggerTransport>;\n listLogs(\n _transportId: string,\n _params?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n },\n ): Promise<{ logs: BaseLogMessage[]; total: number; page: number; perPage: number; hasMore: boolean }>;\n listLogsByRunId(_args: {\n transportId: string;\n runId: string;\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n }): Promise<{ logs: BaseLogMessage[]; total: number; page: number; perPage: number; hasMore: boolean }>;\n}\n\nexport abstract class MastraLogger implements IMastraLogger {\n protected name: string;\n protected level: LogLevel;\n protected transports: Map<string, LoggerTransport>;\n\n constructor(\n options: {\n name?: string;\n level?: LogLevel;\n transports?: Record<string, LoggerTransport>;\n } = {},\n ) {\n this.name = options.name || 'Mastra';\n this.level = options.level || LogLevel.ERROR;\n this.transports = new Map(Object.entries(options.transports || {}));\n }\n\n abstract debug(message: string, ...args: any[]): void;\n abstract info(message: string, ...args: any[]): void;\n abstract warn(message: string, ...args: any[]): void;\n abstract error(message: string, ...args: any[]): void;\n\n getTransports() {\n return this.transports;\n }\n\n trackException(_error: Error, _metadata?: Record<string, unknown>) {}\n\n async listLogs(\n transportId: string,\n params?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n },\n ) {\n if (!transportId || !this.transports.has(transportId)) {\n return { logs: [], total: 0, page: params?.page ?? 1, perPage: params?.perPage ?? 100, hasMore: false };\n }\n\n return (\n this.transports.get(transportId)!.listLogs?.(params) ?? {\n logs: [],\n total: 0,\n page: params?.page ?? 1,\n perPage: params?.perPage ?? 100,\n hasMore: false,\n }\n );\n }\n\n async listLogsByRunId({\n transportId,\n runId,\n fromDate,\n toDate,\n logLevel,\n filters,\n page,\n perPage,\n }: {\n transportId: string;\n runId: string;\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n }) {\n if (!transportId || !this.transports.has(transportId) || !runId) {\n return { logs: [], total: 0, page: page ?? 1, perPage: perPage ?? 100, hasMore: false };\n }\n\n return (\n this.transports\n .get(transportId)!\n .listLogsByRunId?.({ runId, fromDate, toDate, logLevel, filters, page, perPage }) ?? {\n logs: [],\n total: 0,\n page: page ?? 1,\n perPage: perPage ?? 100,\n hasMore: false,\n }\n );\n }\n}\n\nexport type LogFilterContext = {\n component?: RegisteredLogger;\n level: LogLevel;\n message: string;\n args: unknown[];\n};\n\nexport type LogFilter = (ctx: LogFilterContext) => boolean;\n\nexport interface ConsoleLoggerOptions {\n name?: string;\n level?: LogLevel;\n component?: RegisteredLogger;\n filter?: LogFilter;\n}\n\nexport class ConsoleLogger extends MastraLogger {\n protected component?: RegisteredLogger;\n protected filter?: LogFilter;\n\n constructor(options: ConsoleLoggerOptions = {}) {\n super(options);\n this.component = options.component;\n this.filter = options.filter;\n }\n\n child(componentOrBindings: RegisteredLogger | Record<string, unknown>): ConsoleLogger {\n const component =\n typeof componentOrBindings === 'string'\n ? componentOrBindings\n : ((componentOrBindings?.component as RegisteredLogger) ?? this.component);\n return new ConsoleLogger({\n name: this.name,\n level: this.level,\n component,\n filter: this.filter,\n });\n }\n\n private shouldLog(level: LogLevel, message: string, args: unknown[]): boolean {\n if (!this.filter) return true;\n try {\n return this.filter({ component: this.component, level, message, args });\n } catch (e) {\n console.error(`[Logger] Filter error for component=${this.component} level=${level}:`, e);\n return true;\n }\n }\n\n private prefix(): string {\n return this.component ? `[${this.component}] ` : '';\n }\n\n debug(message: string, ...args: any[]): void {\n if (this.level === LogLevel.DEBUG && this.shouldLog(LogLevel.DEBUG, message, args)) {\n console.info(`${this.prefix()}${message}`, ...args);\n }\n }\n\n info(message: string, ...args: any[]): void {\n if (\n (this.level === LogLevel.INFO || this.level === LogLevel.DEBUG) &&\n this.shouldLog(LogLevel.INFO, message, args)\n ) {\n console.info(`${this.prefix()}${message}`, ...args);\n }\n }\n\n warn(message: string, ...args: any[]): void {\n if (\n (this.level === LogLevel.WARN || this.level === LogLevel.INFO || this.level === LogLevel.DEBUG) &&\n this.shouldLog(LogLevel.WARN, message, args)\n ) {\n console.info(`${this.prefix()}${message}`, ...args);\n }\n }\n\n error(message: string, ...args: any[]): void {\n if (\n (this.level === LogLevel.ERROR ||\n this.level === LogLevel.WARN ||\n this.level === LogLevel.INFO ||\n this.level === LogLevel.DEBUG) &&\n this.shouldLog(LogLevel.ERROR, message, args)\n ) {\n console.error(`${this.prefix()}${message}`, ...args);\n }\n }\n\n async listLogs(\n _transportId: string,\n _params?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n },\n ) {\n return { logs: [], total: 0, page: _params?.page ?? 1, perPage: _params?.perPage ?? 100, hasMore: false };\n }\n\n async listLogsByRunId(_args: {\n transportId: string;\n runId: string;\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n }) {\n return { logs: [], total: 0, page: _args.page ?? 1, perPage: _args.perPage ?? 100, hasMore: false };\n }\n}\n","import type { IMastraLogger } from '../logger';\nimport { ConsoleLogger, RegisteredLogger } from '../logger';\n\nexport class MastraBase {\n component: RegisteredLogger = RegisteredLogger.LLM;\n protected logger: IMastraLogger;\n name?: string;\n #rawConfig?: Record<string, unknown>;\n\n constructor({\n component,\n name,\n rawConfig,\n }: {\n component?: RegisteredLogger;\n name?: string;\n rawConfig?: Record<string, unknown>;\n }) {\n this.component = component || RegisteredLogger.LLM;\n this.name = name;\n this.#rawConfig = rawConfig;\n this.logger = new ConsoleLogger({ name: `${this.component} - ${this.name}` });\n }\n\n /**\n * Returns the raw storage configuration this primitive was created from,\n * or undefined if it was created from code.\n */\n toRawConfig(): Record<string, unknown> | undefined {\n return this.#rawConfig;\n }\n\n /**\n * Sets the raw storage configuration for this primitive.\n * @internal\n */\n __setRawConfig(rawConfig: Record<string, unknown>): void {\n this.#rawConfig = rawConfig;\n }\n\n /**\n * Set the logger for the agent\n * @param logger\n */\n __setLogger(logger: IMastraLogger) {\n this.logger =\n 'child' in logger && typeof (logger as any).child === 'function'\n ? (logger as any).child({ component: this.component })\n : logger;\n }\n}\n","import { MastraBase } from '@internal/core/base';\nimport type { ToolsInput } from '@internal/core/types';\n\nexport type VoiceEventType = 'speaking' | 'writing' | 'error' | string;\n\nexport interface VoiceEventMap {\n speaker: NodeJS.ReadableStream;\n speaking: { audio?: string };\n writing: { text: string; role: 'assistant' | 'user' };\n error: { message: string; code?: string; details?: unknown };\n [key: string]: unknown;\n}\n\ninterface BuiltInModelConfig {\n name: string;\n apiKey?: string;\n}\n\nexport interface VoiceConfig<T = unknown> {\n listeningModel?: BuiltInModelConfig;\n speechModel?: BuiltInModelConfig;\n speaker?: string;\n name?: string;\n realtimeConfig?: {\n model?: string;\n apiKey?: string;\n options?: T;\n };\n}\n\nexport interface VoiceSpanConfig {\n component: 'VOICE';\n name?: string;\n speaker?: string;\n listeningModel?: { name: string };\n speechModel?: { name: string };\n realtimeModel?: string;\n}\n\nexport interface IMastraVoice<\n TSpeakOptions = unknown,\n TListenOptions = unknown,\n TTools extends ToolsInput = ToolsInput,\n TEventArgs extends VoiceEventMap = VoiceEventMap,\n TSpeakerMetadata = unknown,\n> {\n serializeForSpan(): VoiceSpanConfig;\n speak(\n input: string | NodeJS.ReadableStream,\n options?: {\n speaker?: string;\n } & TSpeakOptions,\n ): Promise<NodeJS.ReadableStream | void>;\n listen(\n audioStream: NodeJS.ReadableStream | unknown,\n options?: TListenOptions,\n ): Promise<string | NodeJS.ReadableStream | void>;\n updateConfig(options: Record<string, unknown>): void;\n connect(options?: Record<string, unknown>): Promise<void>;\n send(audioData: NodeJS.ReadableStream | Int16Array): Promise<void>;\n answer(options?: Record<string, unknown>): Promise<void>;\n addInstructions(instructions?: string): void;\n addTools(tools: TTools): void;\n close(): void;\n on<E extends VoiceEventType>(\n event: E,\n callback: (data: E extends keyof TEventArgs ? TEventArgs[E] : unknown) => void,\n ): void;\n off<E extends VoiceEventType>(\n event: E,\n callback: (data: E extends keyof TEventArgs ? TEventArgs[E] : unknown) => void,\n ): void;\n getSpeakers(): Promise<\n Array<\n {\n voiceId: string;\n } & TSpeakerMetadata\n >\n >;\n getListener(): Promise<{ enabled: boolean }>;\n}\n\nexport abstract class MastraVoice<\n TOptions = unknown,\n TSpeakOptions = unknown,\n TListenOptions = unknown,\n TTools extends ToolsInput = ToolsInput,\n TEventArgs extends VoiceEventMap = VoiceEventMap,\n TSpeakerMetadata = unknown,\n>\n extends MastraBase\n implements IMastraVoice<TSpeakOptions, TListenOptions, TTools, TEventArgs, TSpeakerMetadata>\n{\n protected listeningModel?: BuiltInModelConfig;\n protected speechModel?: BuiltInModelConfig;\n protected speaker?: string;\n protected realtimeConfig?: {\n model?: string;\n apiKey?: string;\n options?: TOptions;\n };\n\n constructor({ listeningModel, speechModel, speaker, realtimeConfig, name }: VoiceConfig<TOptions> = {}) {\n super({\n component: 'VOICE',\n name,\n });\n this.listeningModel = listeningModel;\n this.speechModel = speechModel;\n this.speaker = speaker;\n this.realtimeConfig = realtimeConfig;\n }\n\n /**\n * Custom serialization for tracing/observability spans.\n * Excludes `apiKey` from listeningModel / speechModel / realtimeConfig\n * and any provider-specific state held by subclasses. Subclasses that\n * need to expose additional non-sensitive fields can override.\n */\n serializeForSpan(): VoiceSpanConfig {\n return {\n component: 'VOICE',\n name: this.name,\n speaker: this.speaker,\n listeningModel: this.listeningModel ? { name: this.listeningModel.name } : undefined,\n speechModel: this.speechModel ? { name: this.speechModel.name } : undefined,\n realtimeModel: this.realtimeConfig?.model,\n };\n }\n\n /**\n * Convert text to speech\n * @param input Text or text stream to convert to speech\n * @param options Speech options including speaker and provider-specific options\n * @returns Audio stream\n */\n /**\n * Convert text to speech\n * @param input Text or text stream to convert to speech\n * @param options Speech options including speaker and provider-specific options\n * @returns Audio stream or void if in chat mode\n */\n abstract speak(\n input: string | NodeJS.ReadableStream,\n options?: {\n speaker?: string;\n } & TSpeakOptions,\n ): Promise<NodeJS.ReadableStream | void>;\n\n /**\n * Convert speech to text\n * @param audioStream Audio stream to transcribe\n * @param options Provider-specific transcription options\n * @returns Text or text stream\n */\n /**\n * Convert speech to text\n * @param audioStream Audio stream to transcribe\n * @param options Provider-specific transcription options\n * @returns Text, text stream, or void if in chat mode\n */\n abstract listen(\n audioStream: NodeJS.ReadableStream | unknown, // Allow other audio input types for OpenAI realtime API\n options?: TListenOptions,\n ): Promise<string | NodeJS.ReadableStream | void>;\n\n updateConfig(_options: Record<string, unknown>): void {\n this.logger.debug('updateConfig not implemented by this voice provider');\n }\n\n /**\n * Initializes a WebSocket or WebRTC connection for real-time communication\n * @returns Promise that resolves when the connection is established\n */\n async connect(_options?: Record<string, unknown>): Promise<void> {\n // Default implementation - voice providers can override if they support this feature\n this.logger.debug('connect not implemented by this voice provider');\n }\n\n /**\n * Relay audio data to the voice provider for real-time processing\n * @param audioData Audio data to relay\n */\n async send(_audioData: NodeJS.ReadableStream | Int16Array): Promise<void> {\n // Default implementation - voice providers can override if they support this feature\n this.logger.debug('relay not implemented by this voice provider');\n }\n\n /**\n * Trigger voice providers to respond\n */\n async answer(_options?: Record<string, unknown>): Promise<void> {\n this.logger.debug('answer not implemented by this voice provider');\n }\n\n /**\n * Equip the voice provider with instructions\n * @param instructions Instructions to add\n */\n addInstructions(_instructions?: string): void {\n // Default implementation - voice providers can override if they support this feature\n }\n\n /**\n * Equip the voice provider with tools\n * @param tools Array of tools to add\n */\n addTools(_tools: TTools): void {\n // Default implementation - voice providers can override if they support this feature\n }\n\n /**\n * Disconnect from the WebSocket or WebRTC connection\n */\n close(): void {\n // Default implementation - voice providers can override if they support this feature\n this.logger.debug('close not implemented by this voice provider');\n }\n\n /**\n * Register an event listener\n * @param event Event name (e.g., 'speaking', 'writing', 'error')\n * @param callback Callback function that receives event data\n */\n on<E extends VoiceEventType>(\n _event: E,\n _callback: (data: E extends keyof TEventArgs ? TEventArgs[E] : unknown) => void,\n ): void {\n // Default implementation - voice providers can override if they support this feature\n this.logger.debug('on not implemented by this voice provider');\n }\n\n /**\n * Remove an event listener\n * @param event Event name (e.g., 'speaking', 'writing', 'error')\n * @param callback Callback function to remove\n */\n off<E extends VoiceEventType>(\n _event: E,\n _callback: (data: E extends keyof TEventArgs ? TEventArgs[E] : unknown) => void,\n ): void {\n // Default implementation - voice providers can override if they support this feature\n this.logger.debug('off not implemented by this voice provider');\n }\n\n /**\n * Get available speakers/voices\n * @returns Array of available voice IDs and their metadata\n */\n getSpeakers(): Promise<\n Array<\n {\n voiceId: string;\n } & TSpeakerMetadata\n >\n > {\n // Default implementation - voice providers can override if they support this feature\n this.logger.debug('getSpeakers not implemented by this voice provider');\n return Promise.resolve([]);\n }\n\n /**\n * Get available speakers/voices\n * @returns Array of available voice IDs and their metadata\n */\n getListener(): Promise<{ enabled: boolean }> {\n // Default implementation - voice providers can override if they support this feature\n this.logger.debug('getListener not implemented by this voice provider');\n return Promise.resolve({ enabled: false });\n }\n}\n","import { Readable } from 'node:stream';\n\nimport { MastraVoice } from '@internal/voice';\n\nconst MODELSLAB_TTS_URL = 'https://modelslab.com/api/v6/voice/text_to_speech';\nconst MODELSLAB_TTS_FETCH_URL = 'https://modelslab.com/api/v6/voice/fetch/';\nconst POLL_INTERVAL_MS = 5000;\nconst POLL_TIMEOUT_MS = 300_000;\n\ntype ModelsLabModel = 'default';\n\nexport type ModelsLabVoiceId =\n | '1' // Neutral\n | '2' // Male\n | '3' // Warm\n | '4' // Deep Male\n | '5' // Female\n | '6'; // Clear Female\n\nexport const MODELSLAB_VOICES: { voiceId: ModelsLabVoiceId; name: string; language: string; gender: string }[] = [\n { voiceId: '1', name: 'Neutral', language: 'en', gender: 'neutral' },\n { voiceId: '2', name: 'Male', language: 'en', gender: 'male' },\n { voiceId: '3', name: 'Warm', language: 'en', gender: 'male' },\n { voiceId: '4', name: 'Deep Male', language: 'en', gender: 'male' },\n { voiceId: '5', name: 'Female', language: 'en', gender: 'female' },\n { voiceId: '6', name: 'Clear Female', language: 'en', gender: 'female' },\n];\n\n// OpenAI voice → ModelsLab voice_id mapping\nconst OPENAI_VOICE_MAP: Record<string, ModelsLabVoiceId> = {\n alloy: '1',\n echo: '2',\n fable: '3',\n onyx: '4',\n nova: '5',\n shimmer: '6',\n};\n\ninterface ModelsLabVoiceConfig {\n name?: ModelsLabModel;\n apiKey?: string;\n}\n\ninterface TtsApiResponse {\n status: 'success' | 'processing' | 'error';\n output?: string;\n request_id?: string | number;\n eta?: number;\n message?: string;\n}\n\nasync function sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\n/**\n * ModelsLab voice provider for Mastra.\n *\n * Uses ModelsLab's TTS API with key-in-body authentication and async polling.\n * API docs: https://docs.modelslab.com\n *\n * @example\n * ```ts\n * const voice = new ModelsLabVoice({\n * speechModel: { apiKey: process.env.MODELSLAB_API_KEY },\n * speaker: '5', // Female voice\n * });\n *\n * const stream = await voice.speak('Hello, world!');\n * ```\n */\nexport class ModelsLabVoice extends MastraVoice {\n private apiKey: string;\n\n constructor({\n speechModel,\n speaker,\n }: {\n speechModel?: ModelsLabVoiceConfig;\n speaker?: ModelsLabVoiceId | string;\n } = {}) {\n const apiKey = speechModel?.apiKey ?? process.env.MODELSLAB_API_KEY;\n\n super({\n speechModel: {\n name: speechModel?.name ?? 'default',\n apiKey,\n },\n speaker: speaker ?? '1',\n });\n\n if (!apiKey) {\n throw new Error('MODELSLAB_API_KEY is not set');\n }\n\n this.apiKey = apiKey;\n }\n\n /**\n * Returns available ModelsLab voices.\n */\n async getSpeakers(): Promise<{ voiceId: string; name: string; language: string; gender: string }[]> {\n return MODELSLAB_VOICES;\n }\n\n /**\n * Converts text to speech using the ModelsLab TTS API.\n *\n * ModelsLab returns an audio URL (not a stream). This method:\n * 1. POSTs to the TTS endpoint\n * 2. If processing, polls until the audio URL is ready\n * 3. Downloads the audio and returns a Readable stream\n *\n * @param input - Text to convert to speech\n * @param options - Optional parameters\n * @param options.speaker - ModelsLab voice ID (1–10) or OpenAI voice name (alloy, echo, etc.)\n * @param options.language - Language code (default: 'english')\n * @param options.speed - Speech speed (0.5–2.0, default: 1.0)\n * @returns A Promise resolving to a Readable audio stream\n */\n async speak(\n input: string | NodeJS.ReadableStream,\n options?: {\n speaker?: ModelsLabVoiceId | string;\n language?: string;\n speed?: number;\n [key: string]: unknown;\n },\n ): Promise<NodeJS.ReadableStream> {\n const text = typeof input === 'string' ? input : await this.streamToString(input);\n\n // Resolve voice_id: accept numeric ID or OpenAI-style voice name\n const rawSpeaker = options?.speaker ?? this.speaker ?? '1';\n const voiceId = OPENAI_VOICE_MAP[rawSpeaker] ?? rawSpeaker;\n\n const body = {\n key: this.apiKey,\n prompt: text,\n language: options?.language ?? 'english',\n voice_id: parseInt(voiceId, 10) || 1,\n speed: options?.speed ?? 1.0,\n };\n\n const initResp = await fetch(MODELSLAB_TTS_URL, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n });\n\n if (!initResp.ok) {\n throw new Error(`ModelsLab TTS failed: ${initResp.status} ${initResp.statusText}`);\n }\n\n let data = (await initResp.json()) as TtsApiResponse;\n\n if (data.status === 'error') {\n throw new Error(`ModelsLab TTS error: ${data.message ?? 'Unknown error'}`);\n }\n\n if (data.status === 'processing') {\n const requestId = String(data.request_id ?? '');\n if (!requestId) {\n throw new Error('ModelsLab TTS returned processing status without request_id');\n }\n data = await this.pollUntilReady(requestId);\n }\n\n const audioUrl = data.output;\n if (!audioUrl) {\n throw new Error('ModelsLab TTS returned no audio URL');\n }\n\n // Download audio and return as Readable stream\n const audioResp = await fetch(audioUrl);\n if (!audioResp.ok) {\n throw new Error(`Failed to download ModelsLab audio: ${audioResp.status}`);\n }\n\n const audioBuffer = await audioResp.arrayBuffer();\n const readable = new Readable();\n readable.push(Buffer.from(audioBuffer));\n readable.push(null);\n\n return readable;\n }\n\n /**\n * ModelsLab does not provide speech-to-text. Throws NotImplemented.\n */\n async listen(_input: NodeJS.ReadableStream, _options?: Record<string, unknown>): Promise<string> {\n throw new Error(\n 'ModelsLab does not support speech-to-text. Use a different provider for listening (e.g., @mastra/voice-deepgram).',\n );\n }\n\n private async pollUntilReady(requestId: string): Promise<TtsApiResponse> {\n const fetchUrl = `${MODELSLAB_TTS_FETCH_URL}${requestId}`;\n const deadline = Date.now() + POLL_TIMEOUT_MS;\n\n while (Date.now() < deadline) {\n await sleep(POLL_INTERVAL_MS);\n\n const resp = await fetch(fetchUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ key: this.apiKey }),\n });\n\n if (!resp.ok) {\n throw new Error(`ModelsLab TTS poll failed: ${resp.status}`);\n }\n\n const data = (await resp.json()) as TtsApiResponse;\n\n if (data.status === 'error') {\n throw new Error(`ModelsLab TTS failed: ${data.message ?? 'Unknown error'}`);\n }\n\n if (data.status === 'success') {\n return data;\n }\n // status === 'processing' → keep polling\n }\n\n throw new Error(`ModelsLab TTS timed out after ${POLL_TIMEOUT_MS / 1000}s (request_id=${requestId})`);\n }\n\n private async streamToString(stream: NodeJS.ReadableStream): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n if (typeof chunk === 'string') {\n chunks.push(Buffer.from(chunk));\n } else {\n chunks.push(chunk as Buffer);\n }\n }\n return Buffer.concat(chunks).toString('utf-8');\n }\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { MastraVoice } from '@mastra/core/voice';
1
+ import { MastraVoice } from './_types/@internal_voice/dist/index.d.ts';
2
2
  type ModelsLabModel = 'default';
3
3
  export type ModelsLabVoiceId = '1' | '2' | '3' | '4' | '5' | '6';
4
4
  export declare const MODELSLAB_VOICES: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOjD,KAAK,cAAc,GAAG,SAAS,CAAC;AAEhC,MAAM,MAAM,gBAAgB,GACxB,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,CAAC;AAER,eAAO,MAAM,gBAAgB,EAAE;IAAE,OAAO,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAO3G,CAAC;AAYF,UAAU,oBAAoB;IAC5B,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAcD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,OAAO,CAAC,MAAM,CAAS;gBAEX,EACV,WAAW,EACX,OAAO,GACR,GAAE;QACD,WAAW,CAAC,EAAE,oBAAoB,CAAC;QACnC,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;KAChC;IAkBN;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAInG;;;;;;;;;;;;;;OAcG;IACG,KAAK,CACT,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,cAAc,EACrC,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,GACA,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;IA0DjC;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;YAMlF,cAAc;YAgCd,cAAc;CAW7B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAO9C,KAAK,cAAc,GAAG,SAAS,CAAC;AAEhC,MAAM,MAAM,gBAAgB,GACxB,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,CAAC;AAER,eAAO,MAAM,gBAAgB,EAAE;IAAE,OAAO,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAO3G,CAAC;AAYF,UAAU,oBAAoB;IAC5B,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAcD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,OAAO,CAAC,MAAM,CAAS;gBAEX,EACV,WAAW,EACX,OAAO,GACR,GAAE;QACD,WAAW,CAAC,EAAE,oBAAoB,CAAC;QACnC,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;KAChC;IAkBN;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAInG;;;;;;;;;;;;;;OAcG;IACG,KAAK,CACT,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,cAAc,EACrC,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,GACA,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;IA0DjC;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;YAMlF,cAAc;YAgCd,cAAc;CAW7B"}