@mastra/voice-google 0.14.1 → 0.14.2-alpha.1

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/LICENSE.md CHANGED
@@ -1,10 +1,12 @@
1
1
  Portions of this software are licensed as follows:
2
2
 
3
- - All content that resides under any directory named "ee/" within this
3
+ - All content that resides under any directory named `ee/` within this
4
4
  repository, including but not limited to:
5
- - `packages/core/src/auth/ee/`
6
- - `packages/server/src/server/auth/ee/`
7
- is licensed under the license defined in `ee/LICENSE`.
5
+ - `@mastra/core/auth/ee`
6
+ - `@mastra/core/agent-builder/ee`
7
+ - `@mastra/editor/ee`
8
+
9
+ is licensed under the license defined in [`ee/LICENSE`](https://github.com/mastra-ai/mastra/blob/main/ee/LICENSE).
8
10
 
9
11
  - All third-party components incorporated into the Mastra Software are
10
12
  licensed under the original license provided by the owner of the
package/README.md CHANGED
@@ -1,8 +1,6 @@
1
1
  # @mastra/voice-google
2
2
 
3
- Google Cloud Voice integration for Mastra, providing both Text-to-Speech (TTS) and Speech-to-Text capabilities.
4
-
5
- > Note: This package replaces the deprecated @mastra/speech-google package, combining both speech synthesis and recognition capabilities.
3
+ Add Google Cloud text-to-speech and speech-to-text to Mastra with configurable voices, languages, audio encoding, streaming, and authentication.
6
4
 
7
5
  ## Installation
8
6
 
@@ -10,48 +8,6 @@ Google Cloud Voice integration for Mastra, providing both Text-to-Speech (TTS) a
10
8
  npm install @mastra/voice-google
11
9
  ```
12
10
 
13
- ## Configuration
14
-
15
- The module supports multiple authentication methods:
16
-
17
- ### Option 1: API Key (Development)
18
-
19
- Use an API key from [Google Cloud Console](https://console.cloud.google.com/apis/credentials):
20
-
21
- ```bash
22
- GOOGLE_API_KEY=your_api_key
23
- ```
24
-
25
- ### Option 2: Service Account (Recommended)
26
-
27
- Use a service account key file:
28
-
29
- ```bash
30
- GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
31
- ```
32
-
33
- ### Option 3: Vertex AI (Recommended for Production)
34
-
35
- Use OAuth authentication with Google Cloud Platform for enterprise deployments:
36
-
37
- ```bash
38
- # Set project ID
39
- GOOGLE_CLOUD_PROJECT=your_project_id
40
-
41
- # Optional: Set location (defaults to us-central1)
42
- GOOGLE_CLOUD_LOCATION=us-central1
43
-
44
- # Authenticate via gcloud CLI
45
- gcloud auth application-default login
46
- ```
47
-
48
- Or use a service account:
49
-
50
- ```bash
51
- GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
52
- GOOGLE_CLOUD_PROJECT=your_project_id
53
- ```
54
-
55
11
  ## Usage
56
12
 
57
13
  ### Standard Usage
@@ -84,167 +40,14 @@ const audioStream = await voice.speak('Hello from Mastra!', {
84
40
  const text = await voice.listen(audioStream);
85
41
  ```
86
42
 
87
- ### Vertex AI Mode
88
-
89
- For enterprise deployments, use Vertex AI mode which provides better integration with Google Cloud infrastructure:
90
-
91
- ```typescript
92
- import { GoogleVoice } from '@mastra/voice-google';
93
-
94
- // Initialize with Vertex AI
95
- const voice = new GoogleVoice({
96
- vertexAI: true,
97
- project: 'your-gcp-project',
98
- location: 'us-central1', // Optional, defaults to 'us-central1'
99
- speaker: 'en-US-Studio-O',
100
- });
101
-
102
- // Works the same as standard mode
103
- const audioStream = await voice.speak('Hello from Vertex AI!');
104
- const text = await voice.listen(audioStream);
105
-
106
- // Check if using Vertex AI
107
- console.log(voice.isUsingVertexAI()); // true
108
- console.log(voice.getProject()); // 'your-gcp-project'
109
- console.log(voice.getLocation()); // 'us-central1'
110
- ```
111
-
112
- ### Vertex AI with Service Account
113
-
114
- ```typescript
115
- import { GoogleVoice } from '@mastra/voice-google';
116
-
117
- const voice = new GoogleVoice({
118
- vertexAI: true,
119
- project: 'your-gcp-project',
120
- location: 'us-central1',
121
- speechModel: {
122
- keyFilename: '/path/to/service-account.json',
123
- },
124
- listeningModel: {
125
- keyFilename: '/path/to/service-account.json',
126
- },
127
- });
128
- ```
129
-
130
- ### Vertex AI with In-Memory Credentials
131
-
132
- ```typescript
133
- import { GoogleVoice } from '@mastra/voice-google';
134
-
135
- const voice = new GoogleVoice({
136
- vertexAI: true,
137
- project: 'your-gcp-project',
138
- speechModel: {
139
- credentials: {
140
- client_email: 'service-account@project.iam.gserviceaccount.com',
141
- private_key: '-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----',
142
- },
143
- },
144
- });
145
- ```
146
-
147
- ## API Reference
148
-
149
- ### Constructor Options
150
-
151
- | Option | Type | Description |
152
- | ---------------- | ------------------- | ------------------------------------------------ |
153
- | `speechModel` | `GoogleModelConfig` | Configuration for TTS |
154
- | `listeningModel` | `GoogleModelConfig` | Configuration for STT |
155
- | `speaker` | `string` | Default voice ID (default: `'en-US-Casual-K'`) |
156
- | `vertexAI` | `boolean` | Enable Vertex AI mode (default: `false`) |
157
- | `project` | `string` | Google Cloud project ID (required for Vertex AI) |
158
- | `location` | `string` | Google Cloud region (default: `'us-central1'`) |
159
-
160
- ### GoogleModelConfig
161
-
162
- | Option | Type | Description |
163
- | ------------- | -------- | ------------------------------------- |
164
- | `apiKey` | `string` | Google Cloud API key |
165
- | `keyFilename` | `string` | Path to service account JSON key file |
166
- | `credentials` | `object` | In-memory service account credentials |
167
-
168
- ### Methods
169
-
170
- #### `speak(input, options?)`
171
-
172
- Converts text to speech.
173
-
174
- - `input`: `string | NodeJS.ReadableStream` - Text to convert
175
- - `options.speaker`: Override default voice
176
- - `options.languageCode`: Language code (e.g., `'en-US'`)
177
- - `options.audioConfig`: Audio encoding options
178
-
179
- Returns: `Promise<NodeJS.ReadableStream>` - Audio stream
180
-
181
- #### `listen(audioStream, options?)`
182
-
183
- Converts speech to text.
184
-
185
- - `audioStream`: `NodeJS.ReadableStream` - Audio to transcribe
186
- - `options.config`: Recognition configuration
187
-
188
- Returns: `Promise<string>` - Transcribed text
189
-
190
- #### `getSpeakers(options?)`
191
-
192
- Lists available voices.
193
-
194
- - `options.languageCode`: Filter by language (default: `'en-US'`)
195
-
196
- Returns: `Promise<Array<{ voiceId: string, languageCodes: string[] }>>`
197
-
198
- #### `isUsingVertexAI()`
199
-
200
- Returns `true` if Vertex AI mode is enabled.
201
-
202
- #### `getProject()`
203
-
204
- Returns the configured Google Cloud project ID.
205
-
206
- #### `getLocation()`
207
-
208
- Returns the configured Google Cloud location/region.
209
-
210
- ## Features
211
-
212
- - Neural Text-to-Speech synthesis
213
- - Speech-to-Text recognition
214
- - Multiple voice options across different languages
215
- - Streaming support for both speech and transcription
216
- - High-quality audio processing
217
- - Natural-sounding voice synthesis
218
- - **Vertex AI support for enterprise deployments**
219
-
220
- ## Required Permissions for Vertex AI
221
-
222
- When using Vertex AI, ensure your service account or user has the appropriate IAM roles and OAuth scopes:
223
-
224
- ### IAM Roles
225
-
226
- **For Text-to-Speech:**
227
-
228
- - `roles/texttospeech.admin` - Text-to-Speech Admin (full access)
229
- - `roles/texttospeech.editor` - Text-to-Speech Editor (create and manage)
230
- - `roles/texttospeech.viewer` - Text-to-Speech Viewer (read-only)
231
-
232
- **For Speech-to-Text:**
233
-
234
- - `roles/speech.client` - Speech-to-Text Client
235
-
236
- ### OAuth Scopes
237
-
238
- **For synchronous Text-to-Speech synthesis:**
43
+ ## Documentation
239
44
 
240
- - `https://www.googleapis.com/auth/cloud-platform` - Full access to Google Cloud Platform services
45
+ - [Google](https://mastra.ai/integrations/voice/google)
241
46
 
242
- **For long-audio Text-to-Speech operations:**
47
+ ## Changelog
243
48
 
244
- - `locations.longAudioSynthesize` - Create long-audio synthesis operations
245
- - `operations.get` - Get operation status
246
- - `operations.list` - List operations
49
+ See the [package changelog](https://github.com/mastra-ai/mastra/blob/main/voice/google/CHANGELOG.md) for version history and release notes.
247
50
 
248
- ## Voice Options
51
+ ## Support
249
52
 
250
- View the complete list using the `getSpeakers()` method or [Google Cloud's documentation](https://cloud.google.com/text-to-speech/docs/voices).
53
+ We have an [open community Discord](https://discord.gg/mastra-ai). Come and say hello and let us know if you have any questions or need any help getting things running.
@@ -1,4 +1,4 @@
1
- import { i as IMastraLogger, u as RegisteredLogger } from "../index-S1lgaKO7.js";
1
+ import { i as IMastraLogger, u as RegisteredLogger } from "../index-Biaf3BmX.js";
2
2
  //#region src/base/MastraBase.d.ts
3
3
  declare class MastraBase {
4
4
  #private;
@@ -0,0 +1,319 @@
1
+ import { Transform } from "stream";
2
+ //#region src/logger/adapter.d.ts
3
+ /**
4
+ * OpenTelemetry-compatible trace correlation fields, injected at the top
5
+ * level of a logger's native record.
6
+ *
7
+ * Field names are part of the platform contract (snake_case, W3C formats):
8
+ * external consumers (e.g. the Studio logs view reading Railway stdout)
9
+ * parse structured log lines and look for exactly these keys.
10
+ */
11
+ interface TraceFields {
12
+ /** 32-char lowercase hex W3C trace id */
13
+ trace_id: string;
14
+ /**
15
+ * 16-char lowercase hex W3C span id.
16
+ *
17
+ * Optional, and omitted rather than emitted empty: the active span may be
18
+ * one observability never exports (an internal span, or one dropped by
19
+ * `excludeSpanTypes`), leaving no span id a consumer could look up. The
20
+ * trace is still addressable in that case, so the line keeps `trace_id` and
21
+ * drops only this field. Consumers must treat `span_id` as possibly absent.
22
+ */
23
+ span_id?: string;
24
+ }
25
+ /**
26
+ * Destination for log records derived from the logger's native record,
27
+ * exported to Mastra observability. Structurally compatible with
28
+ * `LoggerContext` from `@mastra/core/observability`.
29
+ */
30
+ interface AdapterLogSink {
31
+ debug(message: string, data?: Record<string, unknown>): void;
32
+ info(message: string, data?: Record<string, unknown>): void;
33
+ warn(message: string, data?: Record<string, unknown>): void;
34
+ error(message: string, data?: Record<string, unknown>): void;
35
+ }
36
+ interface LoggerAdapterOptions {
37
+ /** Inject trace_id/span_id into the logger's native records. */
38
+ correlation: boolean;
39
+ /** Export records derived from the native record to Mastra observability. */
40
+ export: boolean;
41
+ }
42
+ /**
43
+ * Context handed to an adaptable logger by Mastra when observability is
44
+ * wired up. All members are safe to call on every log call (synchronous,
45
+ * never throw).
46
+ */
47
+ interface LoggerAdapterContext {
48
+ /**
49
+ * Resolve correlation fields for the currently active span, or undefined
50
+ * when no span is active (in which case no trace fields are added).
51
+ */
52
+ resolveTraceFields: () => TraceFields | undefined;
53
+ /**
54
+ * Resolve the observability log sink at call time. Returns the
55
+ * span-correlated sink when a span is active, the global sink otherwise,
56
+ * and undefined when export is disabled or observability is not
57
+ * initialized. Records must still be written to the native destination
58
+ * regardless.
59
+ */
60
+ getLogSink: () => AdapterLogSink | undefined;
61
+ options: LoggerAdapterOptions;
62
+ }
63
+ /**
64
+ * Capability marker a logger implements to opt into native trace
65
+ * correlation and observability export. When a configured logger implements
66
+ * this, Mastra attaches observability directly instead of wrapping the
67
+ * logger in the deprecated `DualLogger`.
68
+ */
69
+ interface AdaptableLogger extends IMastraLogger {
70
+ __attachObservability(ctx: LoggerAdapterContext): void;
71
+ /**
72
+ * Stable identity for the attachment target. Loggers whose adapter context
73
+ * lives in state shared across a root/child family (e.g. PinoLogger's
74
+ * mixin ref cell) return that shared object, so attaching any family
75
+ * member is recognized as re-attaching the whole family. Defaults to the
76
+ * logger instance itself when absent.
77
+ */
78
+ __observabilityAttachmentKey?(): object;
79
+ }
80
+ declare function isAdaptableLogger(logger: IMastraLogger): logger is AdaptableLogger;
81
+ /**
82
+ * Export a tracked exception through the adapter sink, mirroring the
83
+ * DualLogger dual-write shape (`errorId`/`domain`/`category`/`details`/`cause`
84
+ * when present on a MastraError-like value). Never throws into the caller.
85
+ */
86
+ declare function exportTrackedException(ctx: LoggerAdapterContext | undefined, error: Error, metadata?: Record<string, unknown>): void;
87
+ /**
88
+ * Adapt IMastraLogger's variadic args into the structured `data` payload of
89
+ * an exported log record. Extracts the first plain object as data,
90
+ * serializes an Error arg, and collects remaining primitives under `args`
91
+ * so the derived record preserves all context from the native call.
92
+ */
93
+ declare function buildLogRecordData(args: unknown[]): Record<string, unknown> | undefined;
94
+ //#endregion
95
+ //#region src/logger/index.d.ts
96
+ declare const RegisteredLogger: {
97
+ readonly AGENT: 'AGENT';
98
+ readonly OBSERVABILITY: 'OBSERVABILITY';
99
+ readonly AUTH: 'AUTH';
100
+ readonly BROWSER: 'BROWSER';
101
+ readonly NETWORK: 'NETWORK';
102
+ readonly WORKFLOW: 'WORKFLOW';
103
+ readonly LLM: 'LLM';
104
+ readonly TTS: 'TTS';
105
+ readonly VOICE: 'VOICE';
106
+ readonly VECTOR: 'VECTOR';
107
+ readonly BUNDLER: 'BUNDLER';
108
+ readonly DEPLOYER: 'DEPLOYER';
109
+ readonly MEMORY: 'MEMORY';
110
+ readonly STORAGE: 'STORAGE';
111
+ readonly EMBEDDINGS: 'EMBEDDINGS';
112
+ readonly MCP_SERVER: 'MCP_SERVER';
113
+ readonly SERVER_CACHE: 'SERVER_CACHE';
114
+ readonly SERVER: 'SERVER';
115
+ readonly WORKSPACE: 'WORKSPACE';
116
+ readonly CHANNEL: 'CHANNEL';
117
+ };
118
+ type RegisteredLogger = (typeof RegisteredLogger)[keyof typeof RegisteredLogger];
119
+ declare const LogLevel: {
120
+ readonly DEBUG: 'debug';
121
+ readonly INFO: 'info';
122
+ readonly WARN: 'warn';
123
+ readonly ERROR: 'error';
124
+ readonly NONE: 'silent';
125
+ };
126
+ type LogLevel = (typeof LogLevel)[keyof typeof LogLevel];
127
+ interface BaseLogMessage {
128
+ runId?: string;
129
+ msg: string;
130
+ level: LogLevel;
131
+ time: Date;
132
+ pid: number;
133
+ hostname: string;
134
+ name: string;
135
+ }
136
+ declare abstract class LoggerTransport extends Transform {
137
+ constructor(opts?: any);
138
+ listLogsByRunId(_args: {
139
+ runId: string;
140
+ fromDate?: Date;
141
+ toDate?: Date;
142
+ logLevel?: LogLevel;
143
+ filters?: Record<string, any>;
144
+ page?: number;
145
+ perPage?: number;
146
+ }): Promise<{
147
+ logs: BaseLogMessage[];
148
+ total: number;
149
+ page: number;
150
+ perPage: number;
151
+ hasMore: boolean;
152
+ }>;
153
+ listLogs(_args?: {
154
+ fromDate?: Date;
155
+ toDate?: Date;
156
+ logLevel?: LogLevel;
157
+ filters?: Record<string, any>;
158
+ returnPaginationResults?: boolean;
159
+ page?: number;
160
+ perPage?: number;
161
+ }): Promise<{
162
+ logs: BaseLogMessage[];
163
+ total: number;
164
+ page: number;
165
+ perPage: number;
166
+ hasMore: boolean;
167
+ }>;
168
+ }
169
+ declare const createCustomTransport: (stream: Transform, listLogs?: LoggerTransport['listLogs'], listLogsByRunId?: LoggerTransport['listLogsByRunId']) => LoggerTransport;
170
+ interface IMastraLogger {
171
+ debug(message: string, ...args: any[]): void;
172
+ info(message: string, ...args: any[]): void;
173
+ warn(message: string, ...args: any[]): void;
174
+ error(message: string, ...args: any[]): void;
175
+ trackException(error: Error, metadata?: Record<string, unknown>): void;
176
+ getTransports(): Map<string, LoggerTransport>;
177
+ listLogs(_transportId: string, _params?: {
178
+ fromDate?: Date;
179
+ toDate?: Date;
180
+ logLevel?: LogLevel;
181
+ filters?: Record<string, any>;
182
+ page?: number;
183
+ perPage?: number;
184
+ }): Promise<{
185
+ logs: BaseLogMessage[];
186
+ total: number;
187
+ page: number;
188
+ perPage: number;
189
+ hasMore: boolean;
190
+ }>;
191
+ listLogsByRunId(_args: {
192
+ transportId: string;
193
+ runId: string;
194
+ fromDate?: Date;
195
+ toDate?: Date;
196
+ logLevel?: LogLevel;
197
+ filters?: Record<string, any>;
198
+ page?: number;
199
+ perPage?: number;
200
+ }): Promise<{
201
+ logs: BaseLogMessage[];
202
+ total: number;
203
+ page: number;
204
+ perPage: number;
205
+ hasMore: boolean;
206
+ }>;
207
+ }
208
+ declare abstract class MastraLogger implements IMastraLogger {
209
+ protected name: string;
210
+ protected level: LogLevel;
211
+ protected transports: Map<string, LoggerTransport>;
212
+ constructor(options?: {
213
+ name?: string;
214
+ level?: LogLevel;
215
+ transports?: Record<string, LoggerTransport>;
216
+ });
217
+ abstract debug(message: string, ...args: any[]): void;
218
+ abstract info(message: string, ...args: any[]): void;
219
+ abstract warn(message: string, ...args: any[]): void;
220
+ abstract error(message: string, ...args: any[]): void;
221
+ getTransports(): Map<string, LoggerTransport>;
222
+ trackException(_error: Error, _metadata?: Record<string, unknown>): void;
223
+ listLogs(transportId: string, params?: {
224
+ fromDate?: Date;
225
+ toDate?: Date;
226
+ logLevel?: LogLevel;
227
+ filters?: Record<string, any>;
228
+ page?: number;
229
+ perPage?: number;
230
+ }): Promise<{
231
+ logs: BaseLogMessage[];
232
+ total: number;
233
+ page: number;
234
+ perPage: number;
235
+ hasMore: boolean;
236
+ }>;
237
+ listLogsByRunId({ transportId, runId, fromDate, toDate, logLevel, filters, page, perPage }: {
238
+ transportId: string;
239
+ runId: string;
240
+ fromDate?: Date;
241
+ toDate?: Date;
242
+ logLevel?: LogLevel;
243
+ filters?: Record<string, any>;
244
+ page?: number;
245
+ perPage?: number;
246
+ }): Promise<{
247
+ logs: BaseLogMessage[];
248
+ total: number;
249
+ page: number;
250
+ perPage: number;
251
+ hasMore: boolean;
252
+ }>;
253
+ }
254
+ type LogFilterContext = {
255
+ component?: RegisteredLogger;
256
+ level: LogLevel;
257
+ message: string;
258
+ args: unknown[];
259
+ };
260
+ type LogFilter = (ctx: LogFilterContext) => boolean;
261
+ interface ConsoleLoggerOptions {
262
+ name?: string;
263
+ level?: LogLevel;
264
+ component?: RegisteredLogger;
265
+ filter?: LogFilter;
266
+ }
267
+ declare class ConsoleLogger extends MastraLogger {
268
+ #private;
269
+ protected component?: RegisteredLogger;
270
+ protected filter?: LogFilter;
271
+ constructor(options?: ConsoleLoggerOptions);
272
+ /**
273
+ * Adapter hook (see `AdaptableLogger`): enables native trace correlation
274
+ * (trace_id/span_id appended to console output) and observability export
275
+ * derived from the same record. Called by Mastra during setup.
276
+ */
277
+ __attachObservability(ctx: LoggerAdapterContext): void;
278
+ child(componentOrBindings: RegisteredLogger | Record<string, unknown>): ConsoleLogger;
279
+ private shouldLog;
280
+ private prefix;
281
+ debug(message: string, ...args: any[]): void;
282
+ info(message: string, ...args: any[]): void;
283
+ warn(message: string, ...args: any[]): void;
284
+ error(message: string, ...args: any[]): void;
285
+ trackException(error: Error, metadata?: Record<string, unknown>): void;
286
+ listLogs(_transportId: string, _params?: {
287
+ fromDate?: Date;
288
+ toDate?: Date;
289
+ logLevel?: LogLevel;
290
+ filters?: Record<string, any>;
291
+ page?: number;
292
+ perPage?: number;
293
+ }): Promise<{
294
+ logs: never[];
295
+ total: number;
296
+ page: number;
297
+ perPage: number;
298
+ hasMore: boolean;
299
+ }>;
300
+ listLogsByRunId(_args: {
301
+ transportId: string;
302
+ runId: string;
303
+ fromDate?: Date;
304
+ toDate?: Date;
305
+ logLevel?: LogLevel;
306
+ filters?: Record<string, any>;
307
+ page?: number;
308
+ perPage?: number;
309
+ }): Promise<{
310
+ logs: never[];
311
+ total: number;
312
+ page: number;
313
+ perPage: number;
314
+ hasMore: boolean;
315
+ }>;
316
+ }
317
+ //#endregion
318
+ export { buildLogRecordData as _, LogFilter as a, LoggerTransport as c, createCustomTransport as d, AdaptableLogger as f, TraceFields as g, LoggerAdapterOptions as h, IMastraLogger as i, MastraLogger as l, LoggerAdapterContext as m, ConsoleLogger as n, LogFilterContext as o, AdapterLogSink as p, ConsoleLoggerOptions as r, LogLevel as s, BaseLogMessage as t, RegisteredLogger as u, exportTrackedException as v, isAdaptableLogger as y };
319
+ //# sourceMappingURL=index-Biaf3BmX.d.ts.map
@@ -44,6 +44,17 @@ declare const MASTRA_VERSIONS_KEY = "mastra__versions";
44
44
  * that require the same auth as the Mastra server itself.
45
45
  */
46
46
  declare const MASTRA_AUTH_TOKEN_KEY = "mastra__authToken";
47
+ /**
48
+ * Reserved key carrying a delegating agent's `MastraMemory` into a delegated
49
+ * run, so a sub-agent without its own memory can persist that run's transcript
50
+ * without the shared sub-agent instance being modified. The value is
51
+ * `{ agentId, memory }` and only the named agent reads it.
52
+ *
53
+ * Holds a live class instance, so it is deliberately run-scoped: it is excluded
54
+ * from the durable request-context snapshot and is not copied into further
55
+ * nested delegated runs. Internal to delegation — do not set it yourself.
56
+ */
57
+ declare const MASTRA_INHERITED_MEMORY_KEY = "mastra__inheritedMemory";
47
58
  type VersionSelector = {
48
59
  versionId: string;
49
60
  } | {
@@ -60,20 +71,54 @@ declare class RequestContext<Values extends Record<string, any> | unknown = unkn
60
71
  constructor(iterable?: Values extends Record<string, any> ? RecordToTuple<Partial<Values>> : Iterable<readonly [string, unknown]>);
61
72
  /**
62
73
  * set a value with strict typing if `Values` is a Record and the key exists in it.
74
+ *
75
+ * Declared schema keys stay strictly typed. For runtime-only keys that are not part of
76
+ * `Values` (for example reserved middleware keys), use {@link setRaw}.
63
77
  */
64
78
  set<K extends (Values extends Record<string, any> ? keyof Values : string)>(key: K, value: Values extends Record<string, any> ? (K extends keyof Values ? Values[K] : never) : unknown): void;
79
+ /**
80
+ * Set a runtime-only key that is not part of the declared `Values` schema.
81
+ *
82
+ * The runtime store is an open map: schema validation checks declared keys and
83
+ * passes undeclared keys through. Use this when writing infrastructure keys
84
+ * (for example `mastra__resourceId`) or other values that intentionally omit
85
+ * from `requestContextSchema`.
86
+ */
87
+ setRaw(key: string, value: unknown): void;
65
88
  /**
66
89
  * Get a value with its type
90
+ *
91
+ * Declared schema keys stay strictly typed. For runtime-only keys that are not part of
92
+ * `Values` (for example reserved middleware keys), use {@link getRaw}.
67
93
  */
68
94
  get<K extends (Values extends Record<string, any> ? keyof Values : string), R = Values extends Record<string, any> ? (K extends keyof Values ? Values[K] : never) : unknown>(key: K): R;
95
+ /**
96
+ * Get a runtime-only key that is not part of the declared `Values` schema.
97
+ *
98
+ * Returns `unknown` because the schema does not describe these keys — narrow
99
+ * the result at the call site.
100
+ */
101
+ getRaw(key: string): unknown;
69
102
  /**
70
103
  * Check if a key exists in the container
104
+ *
105
+ * Declared schema keys stay strictly typed. For runtime-only keys, use {@link hasRaw}.
71
106
  */
72
107
  has<K extends (Values extends Record<string, any> ? keyof Values : string)>(key: K): boolean;
108
+ /**
109
+ * Check whether a runtime-only key exists in the open map.
110
+ */
111
+ hasRaw(key: string): boolean;
73
112
  /**
74
113
  * Delete a value by key
114
+ *
115
+ * Declared schema keys stay strictly typed. For runtime-only keys, use {@link deleteRaw}.
75
116
  */
76
117
  delete<K extends (Values extends Record<string, any> ? keyof Values : string)>(key: K): boolean;
118
+ /**
119
+ * Delete a runtime-only key from the open map.
120
+ */
121
+ deleteRaw(key: string): boolean;
77
122
  /**
78
123
  * Clear all values from the container
79
124
  */
@@ -170,5 +215,5 @@ declare class RequestContext<Values extends Record<string, any> | unknown = unkn
170
215
  get all(): Values extends Record<string, any> ? Values : Record<string, any>;
171
216
  }
172
217
  //#endregion
173
- export { MASTRA_AUTH_TOKEN_KEY, MASTRA_RESOURCE_ID_KEY, MASTRA_THREAD_ID_KEY, MASTRA_VERSIONS_KEY, RequestContext, VersionOverrides, VersionSelector, mergeVersionOverrides };
218
+ export { MASTRA_AUTH_TOKEN_KEY, MASTRA_INHERITED_MEMORY_KEY, MASTRA_RESOURCE_ID_KEY, MASTRA_THREAD_ID_KEY, MASTRA_VERSIONS_KEY, RequestContext, VersionOverrides, VersionSelector, mergeVersionOverrides };
174
219
  //# sourceMappingURL=index.d.ts.map
@@ -20,7 +20,7 @@ export declare class CompositeVoice extends MastraVoice<unknown, unknown, unknow
20
20
  speak(input: string | NodeJS.ReadableStream, options?: {
21
21
  speaker?: string;
22
22
  } & any): Promise<NodeJS.ReadableStream | void>;
23
- listen(audioStream: NodeJS.ReadableStream, options?: any): Promise<string | void | NodeJS.ReadableStream>;
23
+ listen(audioStream: NodeJS.ReadableStream, options?: any): Promise<void | string | NodeJS.ReadableStream>;
24
24
  getSpeakers(): Promise<{
25
25
  voiceId: string;
26
26
  }[]>;
@@ -3,7 +3,7 @@ name: mastra-voice-google
3
3
  description: Documentation for @mastra/voice-google. Use when working with @mastra/voice-google APIs, configuration, or implementation.
4
4
  metadata:
5
5
  package: "@mastra/voice-google"
6
- version: "0.14.1"
6
+ version: "0.14.2-alpha.1"
7
7
  ---
8
8
 
9
9
  ## When to use
@@ -14,13 +14,13 @@ Use this skill whenever you are working with @mastra/voice-google to obtain the
14
14
 
15
15
  Read the individual reference documents for detailed explanations and code examples.
16
16
 
17
- ### Guides
17
+ ### Integrations
18
18
 
19
- - [Voice in Mastra](references/guides-voice-overview.md) - Overview of voice capabilities in Mastra, including text-to-speech, speech-to-text, and real-time speech-to-speech interactions.
19
+ - [Google](references/integrations-voice-google.md) - Add Google Cloud text-to-speech and speech-to-text to Mastra with configurable voices, languages, audio encoding, streaming, and authentication.
20
20
 
21
- ### Integrations
21
+ ### Reference
22
22
 
23
- - [Google](references/integrations-voice-google.md) - Documentation for the Google Voice implementation, providing text-to-speech and speech-to-text capabilities with support for both API key and Vertex AI authentication.
23
+ - [Voice in Mastra](references/reference-voice-overview.md) - Use Mastra Voice for text-to-speech, speech-to-text, and real-time speech-to-speech interactions through a unified provider interface.
24
24
 
25
25
 
26
26
  Read [assets/SOURCE_MAP.json](assets/SOURCE_MAP.json) for source code references.