@mastra/mcp-docs-server 1.2.7-alpha.12 → 1.2.7-alpha.3
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/.docs/docs/agent-builder/integrations.md +2 -44
- package/.docs/docs/agent-builder/overview.md +3 -4
- package/.docs/docs/agent-builder/skill-registries.md +3 -1
- package/.docs/docs/agent-controller/overview.md +2 -3
- package/.docs/docs/agent-controller/session.md +3 -1
- package/.docs/docs/agents/a2a.md +1 -2
- package/.docs/docs/agents/channels.md +225 -0
- package/.docs/docs/agents/code-mode.md +1 -1
- package/.docs/docs/agents/file-based-agents.md +297 -0
- package/.docs/docs/agents/guardrails.md +9 -10
- package/.docs/docs/agents/overview.md +4 -4
- package/.docs/docs/agents/skills.md +5 -3
- package/.docs/docs/agents/structured-output.md +1 -1
- package/.docs/docs/agents/supervisor-agents.md +4 -3
- package/.docs/docs/agents/using-tools.md +4 -2
- package/.docs/docs/browser/agent-browser.md +3 -1
- package/.docs/docs/browser/browser-viewer.md +3 -1
- package/.docs/docs/browser/overview.md +1 -2
- package/.docs/docs/browser/stagehand.md +1 -1
- package/.docs/docs/deployment/mastra-server.md +4 -2
- package/.docs/docs/editor/overview.md +6 -2
- package/.docs/docs/editor/prompts.md +1 -1
- package/.docs/docs/editor/tools.md +5 -3
- package/.docs/docs/evals/custom-scorers.md +3 -1
- package/.docs/docs/evals/datasets/overview.md +5 -4
- package/.docs/docs/evals/datasets/running-experiments.md +2 -4
- package/.docs/docs/evals/evals-with-memory.md +3 -1
- package/.docs/docs/evals/gates-and-verdicts.md +3 -1
- package/.docs/docs/evals/overview.md +1 -4
- package/.docs/docs/evals/quick-checks.md +3 -1
- package/.docs/docs/long-running-agents/background-tasks.md +1 -1
- package/.docs/docs/long-running-agents/durable-agents.md +5 -3
- package/.docs/docs/long-running-agents/goals.md +3 -1
- package/.docs/docs/long-running-agents/signal-providers.md +3 -1
- package/.docs/docs/long-running-agents/signals.md +22 -11
- package/.docs/docs/mastra-platform/observability.md +1 -5
- package/.docs/docs/mcp/mcp-apps.md +3 -3
- package/.docs/docs/mcp/overview.md +10 -6
- package/.docs/docs/memory/observational-memory.md +1 -2
- package/.docs/docs/memory/overview.md +4 -6
- package/.docs/docs/memory/semantic-recall.md +1 -1
- package/.docs/docs/memory/working-memory.md +3 -3
- package/.docs/docs/observability/integrations/exporters/mastra-platform.md +3 -1
- package/.docs/docs/observability/logging.md +1 -1
- package/.docs/docs/observability/tracing/overview.md +1 -1
- package/.docs/docs/server/auth/auth0.md +1 -1
- package/.docs/docs/server/auth/better-auth.md +2 -2
- package/.docs/docs/server/auth/clerk.md +1 -1
- package/.docs/docs/server/auth/firebase.md +1 -1
- package/.docs/docs/server/auth/google.md +2 -2
- package/.docs/docs/server/auth/jwt.md +2 -2
- package/.docs/docs/server/auth/okta.md +2 -2
- package/.docs/docs/server/auth/workos.md +1 -1
- package/.docs/docs/server/mastra-client.md +1 -1
- package/.docs/docs/server/mastra-server.md +1 -1
- package/.docs/docs/server/pubsub.md +1 -1
- package/.docs/docs/server/request-context.md +4 -4
- package/.docs/docs/server/server-adapters.md +8 -8
- package/.docs/docs/studio/auth.md +3 -1
- package/.docs/docs/studio/overview.md +1 -1
- package/.docs/docs/voice/livekit.md +3 -100
- package/.docs/docs/workflows/agents-and-tools.md +5 -3
- package/.docs/docs/workflows/control-flow.md +3 -1
- package/.docs/docs/workflows/overview.md +7 -6
- package/.docs/docs/workspace/overview.md +1 -2
- package/.docs/docs/workspace/sandbox.md +0 -2
- package/.docs/guides/build-your-ui/assistant-ui.md +1 -1
- package/.docs/guides/build-your-ui/copilotkit/overview.md +1 -1
- package/.docs/guides/concepts/streaming.md +3 -3
- package/.docs/guides/getting-started/quickstart.md +1 -3
- package/.docs/guides/guide/chef-michel.md +2 -0
- package/.docs/guides/guide/slack-assistant.md +2 -2
- package/.docs/guides/guide/stock-agent.md +2 -0
- package/.docs/models/environment-variables.md +0 -7
- package/.docs/models/gateways/netlify.md +1 -4
- package/.docs/models/gateways/openrouter.md +7 -10
- package/.docs/models/gateways/vercel.md +1 -8
- package/.docs/models/index.md +1 -1
- package/.docs/models/providers/abacus.md +14 -44
- package/.docs/models/providers/google.md +1 -2
- package/.docs/models/providers/llmgateway.md +181 -185
- package/.docs/models/providers/nano-gpt.md +2 -2
- package/.docs/models/providers/neon.md +29 -40
- package/.docs/models/providers/nvidia.md +3 -1
- package/.docs/models/providers/openai.md +1 -6
- package/.docs/models/providers/opencode.md +2 -6
- package/.docs/models/providers/poolside.md +5 -6
- package/.docs/models/providers/routing-run.md +34 -23
- package/.docs/models/providers/the-grid-ai.md +3 -3
- package/.docs/models/providers/wandb.md +14 -21
- package/.docs/models/providers/xai.md +1 -2
- package/.docs/models/providers.md +0 -7
- package/.docs/reference/agents/channels.md +2 -2
- package/.docs/reference/channels/channel-provider.md +1 -1
- package/.docs/reference/channels/slack-provider.md +2 -2
- package/.docs/reference/cli/mastra.md +10 -117
- package/.docs/reference/evals/create-scorer.md +0 -8
- package/.docs/reference/index.md +0 -17
- package/.docs/reference/memory/memory-class.md +1 -1
- package/.docs/reference/memory/serialized-memory-config.md +1 -1
- package/.docs/reference/project-structure.md +1 -1
- package/.docs/reference/pubsub/lease-provider.md +1 -1
- package/.docs/reference/server/express-adapter.md +3 -1
- package/.docs/reference/server/fastify-adapter.md +3 -1
- package/.docs/reference/server/hono-adapter.md +3 -1
- package/.docs/reference/server/koa-adapter.md +3 -1
- package/.docs/reference/server/nestjs-adapter.md +3 -1
- package/.docs/reference/storage/clickhouse.md +0 -32
- package/.docs/reference/storage/composite.md +1 -27
- package/.docs/reference/storage/retention.md +0 -11
- package/.docs/reference/tools/mcp-client.md +0 -22
- package/.docs/reference/tools/mcp-server.md +4 -161
- package/.docs/reference/voice/livekit.md +8 -272
- package/.docs/reference/workspace/agentcore-runtime-sandbox.md +3 -1
- package/.docs/reference/workspace/agentfs-filesystem.md +3 -1
- package/.docs/reference/workspace/apple-container-sandbox.md +3 -1
- package/.docs/reference/workspace/archil-filesystem.md +3 -1
- package/.docs/reference/workspace/azure-blob-filesystem.md +3 -1
- package/.docs/reference/workspace/blaxel-sandbox.md +3 -1
- package/.docs/reference/workspace/daytona-sandbox.md +3 -1
- package/.docs/reference/workspace/docker-sandbox.md +3 -1
- package/.docs/reference/workspace/e2b-sandbox.md +3 -1
- package/.docs/reference/workspace/files-sdk-filesystem.md +3 -1
- package/.docs/reference/workspace/gcs-filesystem.md +3 -1
- package/.docs/reference/workspace/google-drive-filesystem.md +3 -1
- package/.docs/reference/workspace/local-filesystem.md +3 -1
- package/.docs/reference/workspace/local-sandbox.md +3 -1
- package/.docs/reference/workspace/modal-sandbox.md +3 -1
- package/.docs/reference/workspace/railway-sandbox.md +3 -1
- package/.docs/reference/workspace/s3-filesystem.md +3 -1
- package/.docs/reference/workspace/vercel-sandbox.md +7 -5
- package/.docs/reference/workspace/vercel-serverless.md +3 -1
- package/CHANGELOG.md +0 -29
- package/package.json +5 -5
- package/.docs/docs/capabilities/channels/discord.md +0 -98
- package/.docs/docs/capabilities/channels/other-adapters.md +0 -68
- package/.docs/docs/capabilities/channels/overview.md +0 -255
- package/.docs/docs/capabilities/channels/slack.md +0 -225
- package/.docs/docs/capabilities/channels/teams.md +0 -100
- package/.docs/docs/capabilities/channels/telegram.md +0 -98
- package/.docs/docs/capabilities/channels/whatsapp.md +0 -99
- package/.docs/docs/getting-started/file-based-agents.md +0 -116
- package/.docs/models/providers/crossmodel.md +0 -109
- package/.docs/models/providers/empiriolabs.md +0 -106
- package/.docs/models/providers/meta.md +0 -101
- package/.docs/models/providers/model-oracle-ai.md +0 -87
- package/.docs/models/providers/pioneer.md +0 -148
- package/.docs/models/providers/unorouter.md +0 -95
- package/.docs/models/providers/zenifra.md +0 -73
- package/.docs/reference/file-based-agents/config.md +0 -97
- package/.docs/reference/file-based-agents/instructions.md +0 -54
- package/.docs/reference/file-based-agents/logger.md +0 -26
- package/.docs/reference/file-based-agents/memory.md +0 -58
- package/.docs/reference/file-based-agents/observability.md +0 -32
- package/.docs/reference/file-based-agents/processors.md +0 -56
- package/.docs/reference/file-based-agents/scorers.md +0 -54
- package/.docs/reference/file-based-agents/server.md +0 -37
- package/.docs/reference/file-based-agents/skills.md +0 -56
- package/.docs/reference/file-based-agents/storage.md +0 -30
- package/.docs/reference/file-based-agents/studio.md +0 -56
- package/.docs/reference/file-based-agents/subagents.md +0 -123
- package/.docs/reference/file-based-agents/tools.md +0 -63
- package/.docs/reference/file-based-agents/workflows.md +0 -52
- package/.docs/reference/file-based-agents/workspace.md +0 -74
- package/.docs/reference/memory/summarizeConversation.md +0 -99
- package/.docs/reference/memory/summarizeThread.md +0 -93
|
@@ -6,11 +6,10 @@ The `@mastra/livekit` package connects Mastra agents to the LiveKit Agents frame
|
|
|
6
6
|
|
|
7
7
|
See [Using LiveKit with Mastra](https://mastra.ai/docs/voice/livekit) for setup and concepts.
|
|
8
8
|
|
|
9
|
-
The package has
|
|
9
|
+
The package has two entry points, one per process:
|
|
10
10
|
|
|
11
|
-
- `@mastra/livekit`: server-side APIs — [`liveKitConnectionRoute()`](#livekitconnectionroute), [`dispatchVoiceSession()`](#dispatchvoicesession), [`pipeAgentReplyToWriter()`](#pipeagentreplytowriter), [`serializeSessionMetadata()`](#livekitsessionmetadata)
|
|
12
|
-
- `@mastra/livekit/worker`: the worker runtime — [`createLiveKitWorker()`](#createlivekitworker), [`runLiveKitWorker()`](#runlivekitworker), [`chatContextToMessages()`](#chatcontexttomessages)
|
|
13
|
-
- `@mastra/livekit/plugin`: the LLM-component plugin — [`MastraLLM`](#mastrallm) and [`createRemoteAgentReplyGenerator()`](#createremoteagentreplygenerator). Import it in workers that build their own `voice.AgentSession`. `createRemoteAgentReplyGenerator()` is also exported from `@mastra/livekit/worker` because it plugs into `createLiveKitWorker()`'s `generate` option; `MastraLLM` is plugin-only.
|
|
11
|
+
- `@mastra/livekit`: server-side APIs — [`liveKitConnectionRoute()`](#livekitconnectionroute), [`dispatchVoiceSession()`](#dispatchvoicesession), [`pipeAgentReplyToWriter()`](#pipeagentreplytowriter), and [`serializeSessionMetadata()`](#livekitsessionmetadata). Import these from Mastra server code. This entry never loads the LiveKit agents runtime.
|
|
12
|
+
- `@mastra/livekit/worker`: the worker runtime — [`createLiveKitWorker()`](#createlivekitworker), [`runLiveKitWorker()`](#runlivekitworker), and [`chatContextToMessages()`](#chatcontexttomessages). Import it only from the worker entry file.
|
|
14
13
|
|
|
15
14
|
## `createLiveKitWorker()`
|
|
16
15
|
|
|
@@ -50,9 +49,9 @@ if (process.argv[1] === fileURLToPath(import.meta.url)) {
|
|
|
50
49
|
|
|
51
50
|
**generate** (`VoiceReplyGenerator`): Lowest-level escape hatch: supply any reply generator directly (a custom workflow, remote bridge, and so on).
|
|
52
51
|
|
|
53
|
-
**stt** (`STT | string`): Speech-to-text: a LiveKit plugin instance or an inference model string such as 'deepgram/nova-3'.
|
|
52
|
+
**stt** (`STT | string`): Speech-to-text: a LiveKit plugin instance or an inference model string such as 'deepgram/nova-3'.
|
|
54
53
|
|
|
55
|
-
**tts** (`TTS | string`): Text-to-speech: a LiveKit plugin instance or an inference model string such as 'cartesia/sonic-3'.
|
|
54
|
+
**tts** (`TTS | string`): Text-to-speech: a LiveKit plugin instance or an inference model string such as 'cartesia/sonic-3'.
|
|
56
55
|
|
|
57
56
|
**vad** (`VAD | 'silero' | false`): Voice activity detection. 'silero' loads the Silero VAD from @livekit/agents-plugin-silero during prewarm. Pass an instance to bring your own, or false to disable. (Default: `'silero'`)
|
|
58
57
|
|
|
@@ -66,23 +65,9 @@ if (process.argv[1] === fileURLToPath(import.meta.url)) {
|
|
|
66
65
|
|
|
67
66
|
**toolFeedback** (`(toolCall) => string | undefined`): Called when the Mastra agent starts a tool call mid-reply. Return a short phrase to speak while the tool runs.
|
|
68
67
|
|
|
69
|
-
**
|
|
68
|
+
**greeting** (`string`): Static greeting spoken when the session starts.
|
|
70
69
|
|
|
71
|
-
**
|
|
72
|
-
|
|
73
|
-
**configuration.greeting** (`GreetingConfiguration`): The opening greeting and AI disclosure: text (a fixed string or a per-call resolver for per-tenant greetings), allowInterruptions, awaitPlayout, persist, and periodic re-disclosure via repeatEvery and repeatText.
|
|
74
|
-
|
|
75
|
-
**configuration.consentPolicy** (`ConsentConfiguration`): The call's consent policy, as named requirements (starting with summaryStorage). Declarative only — the worker blocks nothing by itself. Capture grants at runtime with createConsentTool and enforce them in your own code; the declared policy surfaces on onCallEnd for cross-checking.
|
|
76
|
-
|
|
77
|
-
**configuration.endCall** (`EndCallConfiguration`): Agent-initiated hang-up: the worker watches each turn for the end-call tool (pair with createEndCallTool), waits for the agent's closing words to play out, then disconnects — running onCallEnd on the way out.
|
|
78
|
-
|
|
79
|
-
**configuration.stt** (`(context: VoiceCallContext) => STT | string | undefined`): Per-call speech-to-text: a resolver invoked once per call (post-connect) with { metadata, requestContext, roomName, ctx }, returning anything the top-level stt option accepts. Return undefined to fall back to the top-level stt. Cache plugin instances across calls — the resolver runs during call setup.
|
|
80
|
-
|
|
81
|
-
**configuration.tts** (`(context: VoiceCallContext) => TTS | string | undefined`): Per-call text-to-speech: a resolver invoked once per call (post-connect) with { metadata, requestContext, roomName, ctx }, returning anything the top-level tts option accepts — one voice or language per tenant. Return undefined to fall back to the top-level tts. Cache plugin instances across calls.
|
|
82
|
-
|
|
83
|
-
**greeting** (`string`): Static greeting spoken when the session starts. Deprecated: prefer configuration.greeting.text.
|
|
84
|
-
|
|
85
|
-
**persistGreeting** (`boolean`): Save the spoken greeting to the memory thread as an assistant message, making the saved thread a faithful call transcript. Only applies when a greeting is set and memory is enabled. Deprecated: prefer configuration.greeting.persist. (Default: `true`)
|
|
70
|
+
**persistGreeting** (`boolean`): Save the spoken greeting to the memory thread as an assistant message, making the saved thread a faithful call transcript. Only applies when a greeting is set and memory is enabled. (Default: `true`)
|
|
86
71
|
|
|
87
72
|
**observability** (`boolean`): Trace each call when the Mastra instance has observability configured. Opens a voice call span per session: every turn's agent run nests under it, LiveKit's STT, TTS, end-of-utterance, VAD, and LLM latency metrics become child spans, and the span closes with a per-model usage roll-up. Pass false to disable. (Default: `true`)
|
|
88
73
|
|
|
@@ -144,256 +129,7 @@ export default createLiveKitWorker({
|
|
|
144
129
|
})
|
|
145
130
|
```
|
|
146
131
|
|
|
147
|
-
Returns: `VoiceTurnMessage[]`, where each entry is `{ role: 'system' | 'user' | 'assistant'; content: string
|
|
148
|
-
|
|
149
|
-
## `MastraLLM`
|
|
150
|
-
|
|
151
|
-
A standard LiveKit LLM plugin (`llm.LLM`) backed by a Mastra agent. Use it when you build the `voice.AgentSession` yourself and want Mastra in the `llm` slot; [`createLiveKitWorker()`](#createlivekitworker) is the managed alternative. See [Use Mastra as the LLM component](https://mastra.ai/docs/voice/livekit) for how to choose.
|
|
152
|
-
|
|
153
|
-
With `remote`, the plugin streams each turn from your Mastra server over HTTP using Server-Sent Events (SSE). The agent loop, tools, and memory run server-side, and interrupting the agent aborts the server-side generation.
|
|
154
|
-
|
|
155
|
-
```typescript
|
|
156
|
-
import { voice } from '@livekit/agents'
|
|
157
|
-
import { MastraLLM } from '@mastra/livekit/plugin'
|
|
158
|
-
|
|
159
|
-
const session = new voice.AgentSession({
|
|
160
|
-
llm: new MastraLLM({
|
|
161
|
-
remote: { baseUrl: process.env.MASTRA_URL!, agentId: 'support' },
|
|
162
|
-
memory: { thread: callId, resource: userId },
|
|
163
|
-
}),
|
|
164
|
-
stt: 'deepgram/nova-3',
|
|
165
|
-
tts: 'cartesia/sonic-3',
|
|
166
|
-
// Required with `memory`: LiveKit enables preemptive generation by default.
|
|
167
|
-
turnHandling: { preemptiveGeneration: { enabled: false } },
|
|
168
|
-
})
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
The plugin reports `provider` as `mastra` and `model` as the agent id, so LiveKit metrics and fallback adapters identify it like any other LLM.
|
|
172
|
-
|
|
173
|
-
### Constructor options
|
|
174
|
-
|
|
175
|
-
Provide exactly one reply source: `remote`, `agent`, or `generate`.
|
|
176
|
-
|
|
177
|
-
**remote** (`RemoteMastraAgentOptions`): Remote Mastra server reached over HTTP. Takes the same connection options as createRemoteAgentReplyGenerator(): baseUrl, agentId, apiPrefix, headers, fetch, timeoutMs, retries, body.
|
|
178
|
-
|
|
179
|
-
**agent** (`Agent`): In-process Mastra agent. Session ownership without a second deployment.
|
|
180
|
-
|
|
181
|
-
**generate** (`VoiceReplyGenerator`): Custom reply source. A generate source owns its own hooks; toolFeedback, onToolCall, and onTurnComplete below only apply to the remote and agent sources.
|
|
182
|
-
|
|
183
|
-
**memory** (`{ thread: string; resource?: string } | false`): Conversation persistence, resolved per call (for example from the SIP caller identity). When set, only messages new since the agent last spoke are sent each turn and Mastra Memory supplies history. When omitted, the full LiveKit chat context is sent every turn. (Default: `false`)
|
|
184
|
-
|
|
185
|
-
**requestContext** (`RequestContext | Record<string, unknown>`): Request context forwarded to generation (tenant, dialed number, and so on).
|
|
186
|
-
|
|
187
|
-
**toolFeedback** (`(toolCall: VoiceToolCall) => string | undefined`): Return a short phrase to speak while a server-side tool runs.
|
|
188
|
-
|
|
189
|
-
**onToolCall** (`(toolCall: VoiceToolCall) => void`): Called as each tool call starts, mid-stream. Pair with runEndCall() to implement your own agent-initiated hang-up flow.
|
|
190
|
-
|
|
191
|
-
**onTurnComplete** (`(ctx: VoiceTurnCompleteContext) => void | Promise<void>`): Called once per turn after the reply finished streaming, off the audio path and not awaited. The context carries the produced reply: text, toolCalls, interrupted, and usage.
|
|
192
|
-
|
|
193
|
-
> **Warning:** Don't combine `memory` with the session's `preemptiveGeneration` option, which LiveKit enables by default in sessions you build yourself. A speculative turn that completes before LiveKit discards it persists a user message and a never-spoken reply to the thread. Set `turnHandling: { preemptiveGeneration: { enabled: false } }` on the session. Stateless mode (no `memory`) works with preemptive generation.
|
|
194
|
-
|
|
195
|
-
### Tools run on the Mastra agent
|
|
196
|
-
|
|
197
|
-
Tools are defined and executed server-side on the Mastra agent. The plugin never forwards LiveKit tool definitions: if the session passes a non-empty `toolCtx`, it logs a one-time warning naming the ignored tools. Every tool must complete server-side — a tool that requires approval or client-side execution fails the turn with a descriptive error instead of hanging the call.
|
|
198
|
-
|
|
199
|
-
Tool activity reaches the worker through `toolFeedback`, `onToolCall`, and `onTurnComplete`.
|
|
200
|
-
|
|
201
|
-
### Instructions
|
|
202
|
-
|
|
203
|
-
LiveKit injects your `voice.Agent`'s `instructions` into the chat context of every request. The plugin drops them: the server-side Mastra agent's own instructions are authoritative. To change the prompt, change the Mastra agent.
|
|
204
|
-
|
|
205
|
-
### Interrupted turns
|
|
206
|
-
|
|
207
|
-
When the user interrupts a reply:
|
|
208
|
-
|
|
209
|
-
1. The plugin cancels the stream. The server aborts generation and persists nothing from that turn.
|
|
210
|
-
2. LiveKit records the part the user actually heard in its chat context, flagged as interrupted.
|
|
211
|
-
3. On the next turn, the plugin re-sends that heard-only fragment, ordered before the new user message, so the memory thread backfills to match the call. Messages carry LiveKit's message ids and the server deduplicates by id, so retries and re-sends stay idempotent.
|
|
212
|
-
|
|
213
|
-
A user who hangs up immediately after interrupting leaves that final fragment unrecorded. When the transcript must capture it, reconcile immediately from the session event; the shared message id means the next turn's re-send upserts instead of duplicating:
|
|
214
|
-
|
|
215
|
-
```typescript
|
|
216
|
-
import { voice } from '@livekit/agents'
|
|
217
|
-
import { MastraClient } from '@mastra/client-js'
|
|
218
|
-
|
|
219
|
-
const client = new MastraClient({ baseUrl: process.env.MASTRA_URL! })
|
|
220
|
-
|
|
221
|
-
session.on(voice.AgentSessionEventTypes.ConversationItemAdded, ({ item }) => {
|
|
222
|
-
if (item.type !== 'message' || item.role !== 'assistant' || !item.interrupted) return
|
|
223
|
-
void client.saveMessageToMemory({
|
|
224
|
-
agentId: 'support',
|
|
225
|
-
messages: [
|
|
226
|
-
{
|
|
227
|
-
id: item.id,
|
|
228
|
-
threadId: callId,
|
|
229
|
-
resourceId: userId,
|
|
230
|
-
role: 'assistant',
|
|
231
|
-
content: item.textContent ?? '',
|
|
232
|
-
type: 'text',
|
|
233
|
-
createdAt: new Date(),
|
|
234
|
-
},
|
|
235
|
-
],
|
|
236
|
-
})
|
|
237
|
-
})
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
### Usage metrics
|
|
241
|
-
|
|
242
|
-
When the server reports token usage for a turn, the plugin feeds it to LiveKit, so the session's `metrics_collected` events carry time-to-first-token, duration, and token counts like any LLM plugin. The same usage object (`promptTokens`, `completionTokens`, `promptCachedTokens`, `totalTokens`) arrives on `onTurnComplete` as `result.usage`.
|
|
243
|
-
|
|
244
|
-
### Errors and timeouts
|
|
245
|
-
|
|
246
|
-
The transport throws LiveKit's `APIError` types (`APIStatusError`, `APIConnectionError`, `APITimeoutError`), so the session's retry policy (`connOptions.maxRetry`) and `FallbackAdapter` failover work unchanged. A turn is never retried after its first token — a voice reply is better failed fast than replayed half-heard.
|
|
247
|
-
|
|
248
|
-
A connect and first-token watchdog uses the session's `connOptions.timeoutMs` (10 seconds by default), so a server that accepts the connection but never streams can't cause indefinite dead air.
|
|
249
|
-
|
|
250
|
-
If the Mastra server goes down mid-call, each reply attempt fails with a typed error after its retries, and LiveKit closes the session after several consecutive failed replies. Restore the server before that budget runs out and the call recovers on the next turn.
|
|
251
|
-
|
|
252
|
-
### Message content
|
|
253
|
-
|
|
254
|
-
Message extraction is text-only: image content is dropped, and audio content is included only through its transcript. Voice pipelines aren't affected, but items you inject into the chat context yourself must carry text.
|
|
255
|
-
|
|
256
|
-
## `createRemoteAgentReplyGenerator()`
|
|
257
|
-
|
|
258
|
-
Builds a reply generator that runs the agent loop on a **remote** Mastra server over HTTP/SSE. `MastraLLM`'s `remote` mode uses it internally. Use it directly through `createLiveKitWorker`'s `generate` option to run the batteries-included worker against a remote server:
|
|
259
|
-
|
|
260
|
-
```typescript
|
|
261
|
-
import { createLiveKitWorker, createRemoteAgentReplyGenerator } from '@mastra/livekit/worker'
|
|
262
|
-
import { mastra } from './index'
|
|
263
|
-
|
|
264
|
-
export default createLiveKitWorker({
|
|
265
|
-
mastra, // local instance for logger and worker config; replies come from the remote server
|
|
266
|
-
generate: createRemoteAgentReplyGenerator({
|
|
267
|
-
baseUrl: process.env.MASTRA_URL!,
|
|
268
|
-
agentId: 'support',
|
|
269
|
-
}),
|
|
270
|
-
memory: ({ metadata, roomName }) => ({ thread: metadata.threadId ?? roomName }),
|
|
271
|
-
stt: 'deepgram/nova-3',
|
|
272
|
-
tts: 'cartesia/sonic-3',
|
|
273
|
-
})
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
On the `generate` path the worker-level `toolFeedback` and `onTurnComplete` options don't apply, and the worker's end-call detection doesn't fire; pass the hooks to the generator instead.
|
|
277
|
-
|
|
278
|
-
Cancelling a turn (barge-in) tears down the HTTP request, which aborts generation on the server. Errors are thrown as LiveKit `APIError` types; `retries` applies to the initial connection only — a turn is never retried after its first chunk.
|
|
279
|
-
|
|
280
|
-
Returns: `VoiceReplyGenerator`.
|
|
281
|
-
|
|
282
|
-
### Options
|
|
283
|
-
|
|
284
|
-
**baseUrl** (`string`): Base URL of the remote Mastra server, for example https\://my-app.example.com.
|
|
285
|
-
|
|
286
|
-
**agentId** (`string`): The agent's registered key or id on the remote Mastra instance.
|
|
287
|
-
|
|
288
|
-
**apiPrefix** (`string`): Path prefix for the Mastra API. (Default: `'/api'`)
|
|
289
|
-
|
|
290
|
-
**headers** (`Record<string, string> | () => Record<string, string> | Promise<Record<string, string>>`): Static headers, or a resolver invoked per turn — for example to mint a fresh authorization token.
|
|
291
|
-
|
|
292
|
-
**fetch** (`typeof fetch`): Injectable fetch implementation for tests or proxies. (Default: `globalThis.fetch`)
|
|
293
|
-
|
|
294
|
-
**timeoutMs** (`number`): Connect and first-token timeout in milliseconds. When used through MastraLLM, defaults to the session's connOptions.timeoutMs instead. (Default: `10000`)
|
|
295
|
-
|
|
296
|
-
**retries** (`number`): Initial-connection retry attempts, before the first chunk only. When used through MastraLLM, the LiveKit session owns retries and this is forced to 0. (Default: `2`)
|
|
297
|
-
|
|
298
|
-
**body** (`Record<string, unknown>`): Extra fields merged into each stream request body.
|
|
299
|
-
|
|
300
|
-
**toolFeedback** (`(toolCall: VoiceToolCall) => string | undefined`): Return a short phrase to speak while a server-side tool runs.
|
|
301
|
-
|
|
302
|
-
**onToolCall** (`(toolCall: VoiceToolCall) => void`): Called as each tool call starts, mid-stream.
|
|
303
|
-
|
|
304
|
-
**onTurnComplete** (`(ctx: VoiceTurnCompleteContext) => void | Promise<void>`): Called once per turn after the reply finished streaming, off the audio path.
|
|
305
|
-
|
|
306
|
-
## `speakGreeting()`
|
|
307
|
-
|
|
308
|
-
Speaks an opening greeting on a session you own, honoring interruption and playout options. Returns the LiveKit `SpeechHandle`, or `undefined` when there's no greeting text. `createLiveKitWorker()` uses it internally for its `greeting` configuration.
|
|
309
|
-
|
|
310
|
-
```typescript
|
|
311
|
-
import { speakGreeting } from '@mastra/livekit/worker'
|
|
312
|
-
|
|
313
|
-
await speakGreeting(session, {
|
|
314
|
-
text: "You've reached support. You're speaking with an AI assistant.",
|
|
315
|
-
allowInterruptions: false,
|
|
316
|
-
awaitPlayout: true,
|
|
317
|
-
})
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
### Parameters
|
|
321
|
-
|
|
322
|
-
**session** (`voice.AgentSession`): The session to speak on.
|
|
323
|
-
|
|
324
|
-
**greeting** (`{ text?: string; allowInterruptions?: boolean; awaitPlayout?: boolean }`): The greeting text and playout options. When awaitPlayout is true, the returned promise resolves after the greeting finished playing (or was interrupted).
|
|
325
|
-
|
|
326
|
-
## `waitForAgentDoneSpeaking()`
|
|
327
|
-
|
|
328
|
-
Resolves once the agent is no longer producing or playing a reply — its state has left `thinking` and `speaking`. Resolves immediately when the agent is already idle, and always resolves within `maxWaitMs` (30 seconds by default) as a safety cap. Use it before tearing a session down so closing words play out instead of being cut off.
|
|
329
|
-
|
|
330
|
-
```typescript
|
|
331
|
-
import { waitForAgentDoneSpeaking } from '@mastra/livekit/worker'
|
|
332
|
-
|
|
333
|
-
await waitForAgentDoneSpeaking(session)
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
## `runEndCall()`
|
|
337
|
-
|
|
338
|
-
Ends the call after the agent asked to: waits for the agent's closing words to finish, speaks an optional final `message` non-interruptibly, then deletes the room (hanging up the caller, SIP included) and shuts the job down, which runs registered shutdown callbacks.
|
|
339
|
-
|
|
340
|
-
Pair it with [`MastraLLM`](#mastrallm)'s `onToolCall` and an [end-call tool](#createendcalltool) on the server-side agent to rebuild agent-initiated hang-up on a session you own:
|
|
341
|
-
|
|
342
|
-
```typescript
|
|
343
|
-
import { MastraLLM } from '@mastra/livekit/plugin'
|
|
344
|
-
import { DEFAULT_END_CALL_TOOL, runEndCall } from '@mastra/livekit/worker'
|
|
345
|
-
|
|
346
|
-
let ending = false
|
|
347
|
-
|
|
348
|
-
const llm = new MastraLLM({
|
|
349
|
-
remote: { baseUrl: process.env.MASTRA_URL!, agentId: 'support' },
|
|
350
|
-
onToolCall: ({ toolName }) => {
|
|
351
|
-
if (toolName !== DEFAULT_END_CALL_TOOL || ending) return
|
|
352
|
-
ending = true
|
|
353
|
-
void runEndCall(session, ctx, {}, console)
|
|
354
|
-
},
|
|
355
|
-
})
|
|
356
|
-
```
|
|
357
|
-
|
|
358
|
-
The exported constants `DEFAULT_END_CALL_TOOL` (`'endCall'`), `DEFAULT_END_CALL_REASON`, and `DEFAULT_END_CALL_MAX_WAIT_MS` (30000) hold the defaults.
|
|
359
|
-
|
|
360
|
-
### Parameters
|
|
361
|
-
|
|
362
|
-
**session** (`voice.AgentSession`): The session whose agent is finishing its closing words.
|
|
363
|
-
|
|
364
|
-
**ctx** (`JobContext`): The LiveKit job context used to delete the room and shut down.
|
|
365
|
-
|
|
366
|
-
**config** (`{ message?: string; reason?: string; maxWaitMs?: number; drainMs?: number }`): Optional final message spoken before hang-up, the shutdown reason to record, the safety cap on waiting for closing words, and the post-playout drain (default 800ms) that lets audio buffered at the caller finish playing before the room is deleted — LiveKit's playout accounting is worker-local, so hanging up the instant it clears clips the goodbye.
|
|
367
|
-
|
|
368
|
-
**logger** (`{ warn: (message: string, ...args: unknown[]) => void }`): Receives warnings when teardown steps fail. Pass your logger or console.
|
|
369
|
-
|
|
370
|
-
## `createEndCallTool()`
|
|
371
|
-
|
|
372
|
-
Builds the Mastra tool an agent calls to end the call itself: say goodbye, then hang up. The tool only signals intent (and runs optional bookkeeping) — the worker owns the actual hang-up. It lives on the server-safe root entry, so add it to agents defined in server code.
|
|
373
|
-
|
|
374
|
-
```typescript
|
|
375
|
-
import { Agent } from '@mastra/core/agent'
|
|
376
|
-
import { createEndCallTool } from '@mastra/livekit'
|
|
377
|
-
|
|
378
|
-
const supportAgent = new Agent({
|
|
379
|
-
id: 'support',
|
|
380
|
-
name: 'Support',
|
|
381
|
-
instructions:
|
|
382
|
-
'Help the caller. When everything is wrapped up, say goodbye and call endCall as your final action.',
|
|
383
|
-
model: 'openai/gpt-5-mini',
|
|
384
|
-
tools: { endCall: createEndCallTool() },
|
|
385
|
-
})
|
|
386
|
-
```
|
|
387
|
-
|
|
388
|
-
With `createLiveKitWorker()`, set `configuration: { endCall: {} }` and the worker watches for the tool and hangs up. On a session you own, rebuild the hang-up with [`runEndCall()`](#runendcall).
|
|
389
|
-
|
|
390
|
-
### Options
|
|
391
|
-
|
|
392
|
-
**id** (`string`): Tool id the agent calls to end the call. Must match the name the worker watches for (the worker's configuration.endCall.tool, or your own onToolCall check). (Default: `'endCall'`)
|
|
393
|
-
|
|
394
|
-
**description** (`string`): Override the description the model sees when deciding to call the tool.
|
|
395
|
-
|
|
396
|
-
**onEndCall** (`(request: { reason?: string; resourceId?: string; threadId?: string }) => void | Promise<void>`): Bookkeeping hook called when the agent invokes the tool — record the reason or mark the call resolved. Runs inside the turn; keep it quick. It does not hang up the call.
|
|
132
|
+
Returns: `VoiceTurnMessage[]`, where each entry is `{ role: 'system' | 'user' | 'assistant'; content: string }`.
|
|
397
133
|
|
|
398
134
|
## `liveKitConnectionRoute()`
|
|
399
135
|
|
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
Executes shell commands in an [AWS Bedrock AgentCore Runtime](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-execute-command.html) session by using `InvokeAgentRuntimeCommand`.
|
|
6
6
|
|
|
7
|
-
Use `AgentCoreRuntimeSandbox` when your agent already runs in AgentCore Runtime and you want Mastra workspace command execution to use the same runtime session.
|
|
7
|
+
Use `AgentCoreRuntimeSandbox` when your agent already runs in AgentCore Runtime and you want Mastra workspace command execution to use the same runtime session.
|
|
8
|
+
|
|
9
|
+
> **Info:** For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
|
|
8
10
|
|
|
9
11
|
> **Warning:** `AgentCoreRuntimeSandbox` only supports one-shot command execution. It doesn't support background process management, stdin, or filesystem mounts. AgentCore Code Interpreter is a separate AWS service and isn't part of this provider.
|
|
10
12
|
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
# AgentFSFilesystem
|
|
4
4
|
|
|
5
|
-
Stores files in a Turso/SQLite database via the [AgentFS](https://github.com/nichochar/agentfs) SDK. Files are persisted across sessions in a local SQLite database, giving agents durable storage without external cloud services.
|
|
5
|
+
Stores files in a Turso/SQLite database via the [AgentFS](https://github.com/nichochar/agentfs) SDK. Files are persisted across sessions in a local SQLite database, giving agents durable storage without external cloud services.
|
|
6
|
+
|
|
7
|
+
> **Info:** For interface details, see [WorkspaceFilesystem Interface](https://mastra.ai/reference/workspace/filesystem).
|
|
6
8
|
|
|
7
9
|
## Installation
|
|
8
10
|
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
# AppleContainerSandbox
|
|
4
4
|
|
|
5
|
-
Executes commands inside local OCI Linux containers through Apple's [`container`](https://github.com/apple/container) CLI. The provider starts a long-lived container and uses `container exec` for workspace commands.
|
|
5
|
+
Executes commands inside local OCI Linux containers through Apple's [`container`](https://github.com/apple/container) CLI. The provider starts a long-lived container and uses `container exec` for workspace commands.
|
|
6
|
+
|
|
7
|
+
> **Info:** For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
|
|
6
8
|
|
|
7
9
|
## Installation
|
|
8
10
|
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
# ArchilFilesystem
|
|
4
4
|
|
|
5
|
-
Stores files on [Archil](https://docs.archil.com) elastic, serverless disks. Combines an S3-compatible object API for fast reads/writes with `exec()` for POSIX shell operations and `grep()` for parallel server-side search.
|
|
5
|
+
Stores files on [Archil](https://docs.archil.com) elastic, serverless disks. Combines an S3-compatible object API for fast reads/writes with `exec()` for POSIX shell operations and `grep()` for parallel server-side search.
|
|
6
|
+
|
|
7
|
+
> **Info:** For interface details, see [WorkspaceFilesystem Interface](https://mastra.ai/reference/workspace/filesystem).
|
|
6
8
|
|
|
7
9
|
## Installation
|
|
8
10
|
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
# AzureBlobFilesystem
|
|
4
4
|
|
|
5
|
-
Stores files in Azure Blob Storage containers.
|
|
5
|
+
Stores files in Azure Blob Storage containers.
|
|
6
|
+
|
|
7
|
+
> **Info:** For interface details, see [WorkspaceFilesystem Interface](https://mastra.ai/reference/workspace/filesystem).
|
|
6
8
|
|
|
7
9
|
## Installation
|
|
8
10
|
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
# BlaxelSandbox
|
|
4
4
|
|
|
5
|
-
Executes commands in isolated [Blaxel](https://blaxel.ai/) cloud sandboxes. Provides secure, isolated code execution environments with support for mounting cloud storage (S3, GCS) via FUSE.
|
|
5
|
+
Executes commands in isolated [Blaxel](https://blaxel.ai/) cloud sandboxes. Provides secure, isolated code execution environments with support for mounting cloud storage (S3, GCS) via FUSE.
|
|
6
|
+
|
|
7
|
+
> **Info:** For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
|
|
6
8
|
|
|
7
9
|
## Installation
|
|
8
10
|
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
# DaytonaSandbox
|
|
4
4
|
|
|
5
|
-
Executes commands in isolated [Daytona](https://www.daytona.io) cloud sandboxes. Supports multiple runtimes, resource configuration, volumes, snapshots, streaming output, sandbox reconnection, filesystem mounting (S3, GCS), and network isolation.
|
|
5
|
+
Executes commands in isolated [Daytona](https://www.daytona.io) cloud sandboxes. Supports multiple runtimes, resource configuration, volumes, snapshots, streaming output, sandbox reconnection, filesystem mounting (S3, GCS), and network isolation.
|
|
6
|
+
|
|
7
|
+
> **Info:** For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
|
|
6
8
|
|
|
7
9
|
## Installation
|
|
8
10
|
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
# DockerSandbox
|
|
4
4
|
|
|
5
|
-
Executes commands inside Docker containers on the local machine. Uses long-lived containers with `docker exec` for command execution. Targets local development, CI/CD, air-gapped deployments, and cost-sensitive scenarios where cloud sandboxes are unnecessary.
|
|
5
|
+
Executes commands inside Docker containers on the local machine. Uses long-lived containers with `docker exec` for command execution. Targets local development, CI/CD, air-gapped deployments, and cost-sensitive scenarios where cloud sandboxes are unnecessary.
|
|
6
|
+
|
|
7
|
+
> **Info:** For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
|
|
6
8
|
|
|
7
9
|
## Installation
|
|
8
10
|
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
# E2BSandbox
|
|
4
4
|
|
|
5
|
-
Executes commands in isolated [E2B](https://e2b.dev) cloud sandboxes. Provides secure, ephemeral environments with support for mounting cloud storage.
|
|
5
|
+
Executes commands in isolated [E2B](https://e2b.dev) cloud sandboxes. Provides secure, ephemeral environments with support for mounting cloud storage.
|
|
6
|
+
|
|
7
|
+
> **Info:** For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
|
|
6
8
|
|
|
7
9
|
## Installation
|
|
8
10
|
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
# FilesSDKFilesystem
|
|
4
4
|
|
|
5
|
-
Stores files in any storage backend supported by [FilesSDK](https://files-sdk.dev) — a unified abstraction over S3, Cloudflare R2, Google Cloud Storage, Azure Blob, Vercel Blob, MinIO, the local filesystem, and more.
|
|
5
|
+
Stores files in any storage backend supported by [FilesSDK](https://files-sdk.dev) — a unified abstraction over S3, Cloudflare R2, Google Cloud Storage, Azure Blob, Vercel Blob, MinIO, the local filesystem, and more.
|
|
6
|
+
|
|
7
|
+
> **Info:** For interface details, see [WorkspaceFilesystem Interface](https://mastra.ai/reference/workspace/filesystem).
|
|
6
8
|
|
|
7
9
|
Use `FilesSDKFilesystem` when you want a single adapter that can target multiple storage backends with the same code. Swap the underlying driver without changing the workspace setup. If you only target one backend and want first-class options for that backend, prefer the dedicated provider (for example [`S3Filesystem`](https://mastra.ai/reference/workspace/s3-filesystem) or [`GCSFilesystem`](https://mastra.ai/reference/workspace/gcs-filesystem)).
|
|
8
10
|
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
# GCSFilesystem
|
|
4
4
|
|
|
5
|
-
Stores files in Google Cloud Storage.
|
|
5
|
+
Stores files in Google Cloud Storage.
|
|
6
|
+
|
|
7
|
+
> **Info:** For interface details, see [WorkspaceFilesystem Interface](https://mastra.ai/reference/workspace/filesystem).
|
|
6
8
|
|
|
7
9
|
## Installation
|
|
8
10
|
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
# GoogleDriveFilesystem
|
|
4
4
|
|
|
5
|
-
Stores files in a single Google Drive folder. Each directory maps to a Drive folder under the configured root, and paths use POSIX semantics (for example `/notes/todo.txt`).
|
|
5
|
+
Stores files in a single Google Drive folder. Each directory maps to a Drive folder under the configured root, and paths use POSIX semantics (for example `/notes/todo.txt`).
|
|
6
|
+
|
|
7
|
+
> **Info:** For interface details, see [WorkspaceFilesystem Interface](https://mastra.ai/reference/workspace/filesystem).
|
|
6
8
|
|
|
7
9
|
## Installation
|
|
8
10
|
|
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
**Added in:** `@mastra/core@1.1.0`
|
|
6
6
|
|
|
7
|
-
Stores files in a directory on the local filesystem.
|
|
7
|
+
Stores files in a directory on the local filesystem.
|
|
8
|
+
|
|
9
|
+
> **Info:** For interface details, see [WorkspaceFilesystem Interface](https://mastra.ai/reference/workspace/filesystem).
|
|
8
10
|
|
|
9
11
|
## Usage
|
|
10
12
|
|
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
**Added in:** `@mastra/core@1.1.0`
|
|
6
6
|
|
|
7
|
-
Executes commands on the local system.
|
|
7
|
+
Executes commands on the local system.
|
|
8
|
+
|
|
9
|
+
> **Info:** For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
|
|
8
10
|
|
|
9
11
|
## Usage
|
|
10
12
|
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
# ModalSandbox
|
|
4
4
|
|
|
5
|
-
Executes commands in isolated [Modal](https://modal.com) cloud sandboxes. Provides secure, ephemeral environments backed by Modal's infrastructure.
|
|
5
|
+
Executes commands in isolated [Modal](https://modal.com) cloud sandboxes. Provides secure, ephemeral environments backed by Modal's infrastructure.
|
|
6
|
+
|
|
7
|
+
> **Info:** For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
|
|
6
8
|
|
|
7
9
|
## Installation
|
|
8
10
|
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
# RailwaySandbox
|
|
4
4
|
|
|
5
|
-
Executes commands in ephemeral, isolated [Railway](https://docs.railway.com/sandboxes) sandboxes. Each sandbox is an isolated Debian Linux VM provisioned on demand through the Railway TypeScript SDK. Supports command execution with streaming output, command timeouts, configurable idle timeout, `ISOLATED`/`PRIVATE` network isolation, custom base images via the Railway template builder, forking a running sandbox, and reattaching to an existing sandbox by ID.
|
|
5
|
+
Executes commands in ephemeral, isolated [Railway](https://docs.railway.com/sandboxes) sandboxes. Each sandbox is an isolated Debian Linux VM provisioned on demand through the Railway TypeScript SDK. Supports command execution with streaming output, command timeouts, configurable idle timeout, `ISOLATED`/`PRIVATE` network isolation, custom base images via the Railway template builder, forking a running sandbox, and reattaching to an existing sandbox by ID.
|
|
6
|
+
|
|
7
|
+
> **Info:** For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
|
|
6
8
|
|
|
7
9
|
## Installation
|
|
8
10
|
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
# S3Filesystem
|
|
4
4
|
|
|
5
|
-
Stores files in Amazon S3 or S3-compatible storage services like Cloudflare R2, MinIO, DigitalOcean Spaces, and Tigris.
|
|
5
|
+
Stores files in Amazon S3 or S3-compatible storage services like Cloudflare R2, MinIO, DigitalOcean Spaces, and Tigris.
|
|
6
|
+
|
|
7
|
+
> **Info:** For interface details, see [WorkspaceFilesystem Interface](https://mastra.ai/reference/workspace/filesystem).
|
|
6
8
|
|
|
7
9
|
## Installation
|
|
8
10
|
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
# VercelSandbox
|
|
4
4
|
|
|
5
|
-
Executes commands inside [Vercel Sandbox](https://vercel.com/docs/vercel-sandbox) which is an ephemeral [Firecracker](https://firecracker-microvm.github.io/) MicroVM running Amazon Linux 2023. Provides a persistent in-session filesystem, `sudo` access, exposed ports, and background processes.
|
|
5
|
+
Executes commands inside [Vercel Sandbox](https://vercel.com/docs/vercel-sandbox) which is an ephemeral [Firecracker](https://firecracker-microvm.github.io/) MicroVM running Amazon Linux 2023. Provides a persistent in-session filesystem, `sudo` access, exposed ports, and background processes.
|
|
6
|
+
|
|
7
|
+
> **Info:** For interface details, see the [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
|
|
6
8
|
|
|
7
9
|
> **Note:** This is distinct from [`VercelServerlessSandbox`](https://mastra.ai/reference/workspace/vercel-serverless), which runs commands as stateless Vercel serverless **Functions**. `VercelSandbox` runs a full Linux MicroVM with a persistent filesystem and long-running processes.
|
|
8
10
|
|
|
@@ -146,7 +148,7 @@ Both callbacks are optional and can be used independently.
|
|
|
146
148
|
|
|
147
149
|
**resources** (`{ vcpus?: number }`): Resource allocation. Each vCPU comes with 2048 MB of memory.
|
|
148
150
|
|
|
149
|
-
**ports** (`number[]`): Ports to expose from the sandbox (up to
|
|
151
|
+
**ports** (`number[]`): Ports to expose from the sandbox (up to 4). Public HTTPS domains are available via getInfo().metadata.domains.
|
|
150
152
|
|
|
151
153
|
**env** (`Record<string, string>`): Default environment variables inherited by all commands. (Default: `{}`)
|
|
152
154
|
|
|
@@ -197,9 +199,9 @@ See the [`SandboxProcessManager` reference](https://mastra.ai/reference/workspac
|
|
|
197
199
|
|
|
198
200
|
## Limits
|
|
199
201
|
|
|
200
|
-
- Up to
|
|
201
|
-
- Up to
|
|
202
|
+
- Up to 8 vCPUs, with 2048 MB of memory per vCPU.
|
|
203
|
+
- Up to 4 exposed ports.
|
|
202
204
|
- The filesystem is ephemeral — persisted only within the session and lost when the sandbox stops.
|
|
203
|
-
- Maximum runtime is plan-dependent (45 minutes on Hobby, up to
|
|
205
|
+
- Maximum runtime is plan-dependent (45 minutes on Hobby, up to 5 hours on Pro/Enterprise), with a default of 5 minutes.
|
|
204
206
|
|
|
205
207
|
See the [Vercel Sandbox documentation](https://vercel.com/docs/vercel-sandbox) for current limits and pricing.
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
# VercelServerlessSandbox
|
|
4
4
|
|
|
5
|
-
Executes commands as [Vercel](https://vercel.com) serverless functions. Provides globally distributed, zero-infrastructure execution with automatic scaling.
|
|
5
|
+
Executes commands as [Vercel](https://vercel.com) serverless functions. Provides globally distributed, zero-infrastructure execution with automatic scaling.
|
|
6
|
+
|
|
7
|
+
> **Info:** For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
|
|
6
8
|
|
|
7
9
|
> **Warning:** VercelServerlessSandbox is stateless. It doesn't provide a persistent filesystem, interactive shell, or long-running background processes. Only `/tmp` is writable, and it's ephemeral between invocations.
|
|
8
10
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,34 +1,5 @@
|
|
|
1
1
|
# @mastra/mcp-docs-server
|
|
2
2
|
|
|
3
|
-
## 1.2.7-alpha.11
|
|
4
|
-
|
|
5
|
-
### Patch Changes
|
|
6
|
-
|
|
7
|
-
- Updated dependencies [[`fb8aea3`](https://github.com/mastra-ai/mastra/commit/fb8aea384291e77311be3a64ee1717320d5c3c73), [`4ce0163`](https://github.com/mastra-ai/mastra/commit/4ce0163dc86e675a86809685c8ce6c49f1aeb87e)]:
|
|
8
|
-
- @mastra/core@1.51.0-alpha.5
|
|
9
|
-
|
|
10
|
-
## 1.2.7-alpha.9
|
|
11
|
-
|
|
12
|
-
### Patch Changes
|
|
13
|
-
|
|
14
|
-
- Updated dependencies [[`a5c6337`](https://github.com/mastra-ai/mastra/commit/a5c6337d23c7686c81a32ce62f550f610543a240), [`eb70da9`](https://github.com/mastra-ai/mastra/commit/eb70da98e1007b18e1463d75121bc07db55f8e09), [`8b97958`](https://github.com/mastra-ai/mastra/commit/8b979589f9aa59ba67cac565949475f2ffeb4ac3), [`8410541`](https://github.com/mastra-ai/mastra/commit/84105412c60ecd3bb33a9838146f59c4b588228f), [`01b338c`](https://github.com/mastra-ai/mastra/commit/01b338c56271f0219606710e3e8b26dee27ac6c2), [`8b7361d`](https://github.com/mastra-ai/mastra/commit/8b7361d35de68b80d05d30a74e0c69e7218fd612), [`85fb642`](https://github.com/mastra-ai/mastra/commit/85fb642f4d112d0da9f39808617397f7e47fe622), [`481c112`](https://github.com/mastra-ai/mastra/commit/481c1125b752489673ec671fcb7ca80f9c86ffb1), [`c43f3a9`](https://github.com/mastra-ai/mastra/commit/c43f3a9d1efde99b38789364ba4d0ba670f430e3), [`c43f3a9`](https://github.com/mastra-ai/mastra/commit/c43f3a9d1efde99b38789364ba4d0ba670f430e3)]:
|
|
15
|
-
- @mastra/core@1.51.0-alpha.4
|
|
16
|
-
- @mastra/mcp@1.14.0-alpha.0
|
|
17
|
-
|
|
18
|
-
## 1.2.7-alpha.7
|
|
19
|
-
|
|
20
|
-
### Patch Changes
|
|
21
|
-
|
|
22
|
-
- Updated dependencies [[`177010f`](https://github.com/mastra-ai/mastra/commit/177010ff096d2e4b28d89803be5b1a4cad2a0d6b), [`54a51e0`](https://github.com/mastra-ai/mastra/commit/54a51e0a484fe1ebad3fb1f7ef5282a075709eb7)]:
|
|
23
|
-
- @mastra/core@1.51.0-alpha.3
|
|
24
|
-
|
|
25
|
-
## 1.2.7-alpha.5
|
|
26
|
-
|
|
27
|
-
### Patch Changes
|
|
28
|
-
|
|
29
|
-
- Updated dependencies [[`e955965`](https://github.com/mastra-ai/mastra/commit/e955965dce575a903e37cf054d28ea99aa48785e), [`860ef7e`](https://github.com/mastra-ai/mastra/commit/860ef7e77d92b63469cbe5857aa1e626197e43e9), [`17e818c`](https://github.com/mastra-ai/mastra/commit/17e818c51a958ba90641b1a959dc38faf8c034e9), [`4451dfe`](https://github.com/mastra-ai/mastra/commit/4451dfe857428e7abcc0261a507a2e186dae6d47), [`1d39058`](https://github.com/mastra-ai/mastra/commit/1d39058e548efd691799985d5c8af2737f1c3bd2)]:
|
|
30
|
-
- @mastra/core@1.51.0-alpha.2
|
|
31
|
-
|
|
32
3
|
## 1.2.7-alpha.2
|
|
33
4
|
|
|
34
5
|
### Patch Changes
|