@mastra/mcp-docs-server 1.1.6 → 1.1.7-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 (64) hide show
  1. package/.docs/course/02-agent-tools-mcp/07-what-is-zapier-mcp.md +10 -1
  2. package/.docs/course/02-agent-tools-mcp/08-getting-zapier-mcp-url.md +14 -9
  3. package/.docs/course/02-agent-tools-mcp/09-updating-mcp-config-zapier.md +13 -1
  4. package/.docs/course/02-agent-tools-mcp/12-troubleshooting-zapier.md +10 -8
  5. package/.docs/course/02-agent-tools-mcp/13-what-is-github-mcp.md +1 -1
  6. package/.docs/course/02-agent-tools-mcp/14-getting-github-mcp-url.md +28 -20
  7. package/.docs/course/02-agent-tools-mcp/15-updating-mcp-config-github.md +18 -2
  8. package/.docs/course/02-agent-tools-mcp/18-troubleshooting-github.md +5 -5
  9. package/.docs/course/02-agent-tools-mcp/20-updating-mcp-config-hackernews.md +11 -1
  10. package/.docs/course/02-agent-tools-mcp/26-updating-mcp-config-filesystem.md +11 -1
  11. package/.docs/course/02-agent-tools-mcp/32-conclusion.md +1 -1
  12. package/.docs/docs/agents/using-tools.md +34 -0
  13. package/.docs/docs/deployment/studio.md +8 -0
  14. package/.docs/docs/memory/observational-memory.md +3 -5
  15. package/.docs/docs/server/auth/better-auth.md +23 -6
  16. package/.docs/docs/workspace/sandbox.md +2 -0
  17. package/.docs/guides/deployment/vercel.md +19 -0
  18. package/.docs/guides/index.md +20 -1
  19. package/.docs/models/gateways/netlify.md +11 -6
  20. package/.docs/models/gateways/openrouter.md +4 -1
  21. package/.docs/models/gateways/vercel.md +13 -3
  22. package/.docs/models/index.md +1 -1
  23. package/.docs/models/providers/aihubmix.md +7 -1
  24. package/.docs/models/providers/anthropic.md +3 -2
  25. package/.docs/models/providers/baseten.md +7 -5
  26. package/.docs/models/providers/chutes.md +2 -1
  27. package/.docs/models/providers/cloudferro-sherlock.md +74 -0
  28. package/.docs/models/providers/evroc.md +83 -0
  29. package/.docs/models/providers/fireworks-ai.md +20 -26
  30. package/.docs/models/providers/firmware.md +2 -1
  31. package/.docs/models/providers/friendli.md +5 -6
  32. package/.docs/models/providers/google.md +3 -1
  33. package/.docs/models/providers/meganova.md +89 -0
  34. package/.docs/models/providers/opencode-go.md +73 -0
  35. package/.docs/models/providers/opencode.md +33 -33
  36. package/.docs/models/providers/perplexity-agent.md +113 -0
  37. package/.docs/models/providers/perplexity.md +2 -1
  38. package/.docs/models/providers/poe.md +2 -1
  39. package/.docs/models/providers/qihang-ai.md +79 -0
  40. package/.docs/models/providers/qiniu-ai.md +146 -0
  41. package/.docs/models/providers/siliconflow-cn.md +5 -1
  42. package/.docs/models/providers/togetherai.md +2 -1
  43. package/.docs/models/providers/zenmux.md +5 -1
  44. package/.docs/models/providers.md +7 -0
  45. package/.docs/reference/agents/network.md +38 -1
  46. package/.docs/reference/ai-sdk/with-mastra.md +5 -1
  47. package/.docs/reference/deployer/vercel.md +28 -3
  48. package/.docs/reference/harness/harness-class.md +58 -6
  49. package/.docs/reference/index.md +1 -1
  50. package/.docs/reference/memory/cloneThread.md +13 -1
  51. package/.docs/reference/memory/observational-memory.md +4 -2
  52. package/.docs/reference/streaming/agents/stream.md +34 -0
  53. package/.docs/reference/tools/create-tool.md +48 -0
  54. package/.docs/reference/workspace/daytona-sandbox.md +580 -0
  55. package/.docs/reference/workspace/s3-filesystem.md +2 -0
  56. package/CHANGELOG.md +8 -0
  57. package/LICENSE.md +15 -0
  58. package/package.json +5 -5
  59. package/.docs/docs/mastra-code/configuration.md +0 -299
  60. package/.docs/docs/mastra-code/customization.md +0 -228
  61. package/.docs/docs/mastra-code/modes.md +0 -104
  62. package/.docs/docs/mastra-code/overview.md +0 -135
  63. package/.docs/docs/mastra-code/tools.md +0 -229
  64. package/.docs/reference/mastra-code/createMastraCode.md +0 -108
@@ -0,0 +1,580 @@
1
+ # DaytonaSandbox
2
+
3
+ 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.
4
+
5
+ > **Info:** For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npm install @mastra/daytona
11
+ ```
12
+
13
+ Set your Daytona API key in one of three ways:
14
+
15
+ ```bash
16
+ # Shell export
17
+ export DAYTONA_API_KEY=your-api-key
18
+ ```
19
+
20
+ ```bash
21
+ # .env file
22
+ DAYTONA_API_KEY=your-api-key
23
+ ```
24
+
25
+ ```typescript
26
+ // Passed directly as constructor argument
27
+ new DaytonaSandbox({ apiKey: 'your-api-key' })
28
+ ```
29
+
30
+ ## Usage
31
+
32
+ Add a `DaytonaSandbox` to a workspace and assign it to an agent:
33
+
34
+ ```typescript
35
+ import { Agent } from '@mastra/core/agent'
36
+ import { Workspace } from '@mastra/core/workspace'
37
+ import { DaytonaSandbox } from '@mastra/daytona'
38
+
39
+ const sandbox = new DaytonaSandbox({
40
+ language: 'typescript',
41
+ timeout: 120_000,
42
+ })
43
+
44
+ const workspace = new Workspace({ sandbox })
45
+
46
+ const agent = new Agent({
47
+ id: 'code-agent',
48
+ name: 'Code Agent',
49
+ instructions: 'You are a coding assistant working in this workspace.',
50
+ model: 'anthropic/claude-sonnet-4-6',
51
+ workspace,
52
+ })
53
+
54
+ const response = await agent.generate(
55
+ 'Print "Hello, world!" and show the current working directory.',
56
+ )
57
+
58
+ console.log(response.text)
59
+ // I'll run both commands simultaneously!
60
+ //
61
+ // Here are the results:
62
+ //
63
+ // 1. **Hello, world!** — Successfully printed the message.
64
+ // 2. **Current Working Directory** — `/home/daytona`
65
+ //
66
+ // Both commands ran in parallel and completed successfully!
67
+ ```
68
+
69
+ ### With a snapshot
70
+
71
+ Use a pre-built snapshot to skip environment setup time:
72
+
73
+ ```typescript
74
+ const workspace = new Workspace({
75
+ sandbox: new DaytonaSandbox({
76
+ snapshot: 'my-snapshot-id',
77
+ timeout: 60_000,
78
+ }),
79
+ })
80
+ ```
81
+
82
+ ### Custom image with resources
83
+
84
+ Use a custom Docker image with specific resource allocation:
85
+
86
+ ```typescript
87
+ const workspace = new Workspace({
88
+ sandbox: new DaytonaSandbox({
89
+ image: 'node:20-slim',
90
+ resources: { cpu: 2, memory: 4, disk: 6 },
91
+ language: 'typescript',
92
+ }),
93
+ })
94
+ ```
95
+
96
+ ### Ephemeral sandbox
97
+
98
+ For one-shot tasks — sandbox is deleted immediately on stop:
99
+
100
+ ```typescript
101
+ const workspace = new Workspace({
102
+ sandbox: new DaytonaSandbox({
103
+ ephemeral: true,
104
+ language: 'python',
105
+ }),
106
+ })
107
+ ```
108
+
109
+ ### Streaming output
110
+
111
+ Stream command output in real time via `onStdout` and `onStderr` callbacks:
112
+
113
+ ```typescript
114
+ await sandbox.executeCommand('bash', ['-c', 'for i in 1 2 3; do echo "line $i"; sleep 1; done'], {
115
+ onStdout: chunk => process.stdout.write(chunk),
116
+ onStderr: chunk => process.stderr.write(chunk),
117
+ })
118
+ ```
119
+
120
+ Both callbacks are optional and can be used independently.
121
+
122
+ ### Reconnection
123
+
124
+ Reconnect to an existing sandbox by providing the same `id`. The sandbox resumes with its files and state intact:
125
+
126
+ ```typescript
127
+ const sandbox = new DaytonaSandbox({ id: 'my-persistent-sandbox' })
128
+
129
+ // First session
130
+ await sandbox._start()
131
+ await sandbox.executeCommand('sh', ['-c', 'echo "session 1" > /tmp/state.txt'])
132
+ await sandbox._stop()
133
+
134
+ // Later — reconnects to the same sandbox
135
+ const sandbox2 = new DaytonaSandbox({ id: 'my-persistent-sandbox' })
136
+ await sandbox2._start()
137
+ const result = await sandbox2.executeCommand('cat', ['/tmp/state.txt'])
138
+ console.log(result.stdout) // "session 1"
139
+ ```
140
+
141
+ If the sandbox is in a stopped or archived state, it is restarted automatically. If it is in a dead state (destroyed, errored), a fresh sandbox is created instead.
142
+
143
+ ### Filesystem mounting
144
+
145
+ Mount S3 or GCS buckets as local directories inside the sandbox.
146
+
147
+ #### Via workspace mounts config
148
+
149
+ The simplest way — filesystems are mounted automatically when the sandbox starts:
150
+
151
+ ```typescript
152
+ import { Workspace } from '@mastra/core/workspace'
153
+ import { DaytonaSandbox } from '@mastra/daytona'
154
+ import { GCSFilesystem } from '@mastra/gcs'
155
+ import { S3Filesystem } from '@mastra/s3'
156
+
157
+ const workspace = new Workspace({
158
+ mounts: {
159
+ '/s3-data': new S3Filesystem({
160
+ bucket: process.env.S3_BUCKET!,
161
+ region: 'auto',
162
+ accessKeyId: process.env.S3_ACCESS_KEY_ID,
163
+ secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
164
+ endpoint: process.env.S3_ENDPOINT, // e.g. https://<account-id>.r2.cloudflarestorage.com
165
+ }),
166
+ '/gcs-data': new GCSFilesystem({
167
+ bucket: process.env.GCS_BUCKET!,
168
+ projectId: 'my-project-id',
169
+ credentials: JSON.parse(process.env.GCS_SERVICE_ACCOUNT_KEY!),
170
+ }),
171
+ },
172
+ sandbox: new DaytonaSandbox({ language: 'python' }),
173
+ })
174
+ ```
175
+
176
+ When the workspace starts, the filesystems are automatically mounted at the specified paths. Code running in the sandbox can then access files at `/s3-data` and `/gcs-data` as if they were local directories.
177
+
178
+ #### Via sandbox.mount()
179
+
180
+ Mount manually at any point after the sandbox has started:
181
+
182
+ #### S3
183
+
184
+ ```typescript
185
+ import { S3Filesystem } from '@mastra/s3'
186
+
187
+ await sandbox.mount(
188
+ new S3Filesystem({
189
+ bucket: process.env.S3_BUCKET!,
190
+ region: 'us-east-1',
191
+ accessKeyId: process.env.S3_ACCESS_KEY_ID,
192
+ secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
193
+ }),
194
+ '/data',
195
+ )
196
+ ```
197
+
198
+ #### S3-compatible (Cloudflare R2, MinIO)
199
+
200
+ ```typescript
201
+ import { S3Filesystem } from '@mastra/s3'
202
+
203
+ await sandbox.mount(
204
+ new S3Filesystem({
205
+ bucket: process.env.S3_BUCKET!,
206
+ region: 'auto',
207
+ accessKeyId: process.env.S3_ACCESS_KEY_ID,
208
+ secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
209
+ endpoint: process.env.S3_ENDPOINT, // e.g. https://<account-id>.r2.cloudflarestorage.com
210
+ }),
211
+ '/data',
212
+ )
213
+ ```
214
+
215
+ #### GCS
216
+
217
+ ```typescript
218
+ import { GCSFilesystem } from '@mastra/gcs'
219
+
220
+ await sandbox.mount(
221
+ new GCSFilesystem({
222
+ bucket: process.env.GCS_BUCKET!,
223
+ projectId: 'my-project-id',
224
+ credentials: JSON.parse(process.env.GCS_SERVICE_ACCOUNT_KEY!),
225
+ }),
226
+ '/data',
227
+ )
228
+ ```
229
+
230
+ ### Network isolation
231
+
232
+ Restrict outbound network access:
233
+
234
+ ```typescript
235
+ const workspace = new Workspace({
236
+ sandbox: new DaytonaSandbox({
237
+ networkBlockAll: true,
238
+ networkAllowList: '10.0.0.0/8,192.168.0.0/16',
239
+ }),
240
+ })
241
+ ```
242
+
243
+ ## Constructor parameters
244
+
245
+ **id?:** (`string`): Unique identifier for this sandbox instance. (Default: `Auto-generated`)
246
+
247
+ **apiKey?:** (`string`): Daytona API key for authentication. Falls back to DAYTONA\_API\_KEY environment variable.
248
+
249
+ **apiUrl?:** (`string`): Daytona API endpoint. Falls back to DAYTONA\_API\_URL environment variable.
250
+
251
+ **target?:** (`string`): Runner region. Falls back to DAYTONA\_TARGET environment variable.
252
+
253
+ **timeout?:** (`number`): Default execution timeout in milliseconds. (Default: `300000 (5 minutes)`)
254
+
255
+ **language?:** (`'typescript' | 'javascript' | 'python'`): Runtime language for the sandbox. (Default: `'typescript'`)
256
+
257
+ **snapshot?:** (`string`): Pre-built snapshot ID to create the sandbox from. Takes precedence over image.
258
+
259
+ **image?:** (`string`): Docker image for sandbox creation. Triggers image-based creation when set. Can be combined with resources. Ignored when snapshot is set.
260
+
261
+ **resources?:** (`{ cpu?: number; memory?: number; disk?: number }`): Resource allocation for the sandbox (CPU cores, memory in GiB, disk in GiB). Only used when image is set.
262
+
263
+ **env?:** (`Record<string, string>`): Environment variables to set in the sandbox. (Default: `{}`)
264
+
265
+ **labels?:** (`Record<string, string>`): Custom metadata labels. (Default: `{}`)
266
+
267
+ **name?:** (`string`): Sandbox display name. (Default: `Sandbox id`)
268
+
269
+ **user?:** (`string`): OS user to run commands as. (Default: `'daytona'`)
270
+
271
+ **public?:** (`boolean`): Make port previews public. (Default: `false`)
272
+
273
+ **ephemeral?:** (`boolean`): Delete sandbox immediately on stop. (Default: `false`)
274
+
275
+ **autoStopInterval?:** (`number`): Auto-stop interval in minutes. Set to 0 to disable. (Default: `15`)
276
+
277
+ **autoArchiveInterval?:** (`number`): Auto-archive interval in minutes. Set to 0 for the maximum interval (7 days). (Default: `7 days`)
278
+
279
+ **autoDeleteInterval?:** (`number`): Auto-delete interval in minutes. Negative values disable auto-delete. Set to 0 to delete on stop. (Default: `disabled`)
280
+
281
+ **volumes?:** (`Array<{ volumeId: string; mountPath: string }>`): Daytona volumes to attach at sandbox creation time.
282
+
283
+ **networkBlockAll?:** (`boolean`): Block all outbound network access from the sandbox. (Default: `false`)
284
+
285
+ **networkAllowList?:** (`string`): Comma-separated list of allowed CIDR addresses when network access is restricted.
286
+
287
+ ## Properties
288
+
289
+ **id:** (`string`): Sandbox instance identifier.
290
+
291
+ **name:** (`string`): Provider name ('DaytonaSandbox').
292
+
293
+ **provider:** (`string`): Provider identifier ('daytona').
294
+
295
+ **status:** (`ProviderStatus`): 'pending' | 'initializing' | 'ready' | 'stopped' | 'destroyed' | 'error'
296
+
297
+ **instance:** (`Sandbox`): The underlying Daytona Sandbox instance. Throws SandboxNotReadyError if the sandbox has not been started.
298
+
299
+ ## Methods
300
+
301
+ ### `start()`
302
+
303
+ Create and start the Daytona sandbox.
304
+
305
+ ```typescript
306
+ await sandbox.start()
307
+ ```
308
+
309
+ Called automatically on first command execution or by `workspace.init()`.
310
+
311
+ ### `stop()`
312
+
313
+ Stop the sandbox. The sandbox can be restarted later — files and state persist.
314
+
315
+ ```typescript
316
+ await sandbox.stop()
317
+ ```
318
+
319
+ ### `destroy()`
320
+
321
+ Delete the sandbox and clean up all resources.
322
+
323
+ ```typescript
324
+ await sandbox.destroy()
325
+ ```
326
+
327
+ ### `executeCommand(command, args?, options?)`
328
+
329
+ Execute a shell command in the sandbox. Automatically starts the sandbox if not already running, and retries once if the sandbox has timed out.
330
+
331
+ ```typescript
332
+ const result = await sandbox.executeCommand('node', ['-e', 'console.log("Hello!")'])
333
+ const output = await sandbox.executeCommand('pip', ['install', 'requests'], {
334
+ timeout: 60_000,
335
+ cwd: '/workspace',
336
+ })
337
+
338
+ // Stream output in real time
339
+ await sandbox.executeCommand('bash', ['-c', 'for i in 1 2 3; do echo "line $i"; sleep 1; done'], {
340
+ onStdout: chunk => process.stdout.write(chunk),
341
+ onStderr: chunk => process.stderr.write(chunk),
342
+ })
343
+ ```
344
+
345
+ **Parameters:**
346
+
347
+ **command:** (`string`): Command to execute.
348
+
349
+ **args?:** (`string[]`): Command arguments.
350
+
351
+ **options.timeout?:** (`number`): Execution timeout in milliseconds. Overrides the instance default.
352
+
353
+ **options.cwd?:** (`string`): Working directory for the command.
354
+
355
+ **options.env?:** (`Record<string, string>`): Additional environment variables for this command. Merged with instance-level env.
356
+
357
+ **options.onStdout?:** (`(data: string) => void`): Callback for stdout streaming.
358
+
359
+ **options.onStderr?:** (`(data: string) => void`): Callback for stderr streaming.
360
+
361
+ ### `mount(filesystem, mountPath)`
362
+
363
+ Mount a filesystem at a path in the sandbox using FUSE tools (`s3fs` for S3, `gcsfuse` for GCS). FUSE tools are installed automatically if not present.
364
+
365
+ ```typescript
366
+ import { S3Filesystem } from '@mastra/s3'
367
+
368
+ const result = await sandbox.mount(
369
+ new S3Filesystem({
370
+ bucket: process.env.S3_BUCKET!,
371
+ region: 'us-east-1',
372
+ accessKeyId: process.env.S3_ACCESS_KEY_ID,
373
+ secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
374
+ }),
375
+ '/data',
376
+ )
377
+ // { success: true, mountPath: '/data' }
378
+ ```
379
+
380
+ Returns a `MountResult`: `{ success: boolean; mountPath: string; error?: string }`.
381
+
382
+ ### `unmount(mountPath)`
383
+
384
+ Unmount a filesystem from a path in the sandbox.
385
+
386
+ ```typescript
387
+ await sandbox.unmount('/data')
388
+ ```
389
+
390
+ ### `getInfo()`
391
+
392
+ Get sandbox status and resource information.
393
+
394
+ ```typescript
395
+ const info = await sandbox.getInfo()
396
+ // {
397
+ // id: 'daytona-sandbox-abc123',
398
+ // name: 'DaytonaSandbox',
399
+ // provider: 'daytona',
400
+ // status: 'running',
401
+ // createdAt: Date,
402
+ // mounts: [],
403
+ // resources: {
404
+ // cpuCores: 2, // vCPU count from the running sandbox
405
+ // memoryMB: 4096, // converted from GB (×1024)
406
+ // diskMB: 20480, // converted from GiB (×1024)
407
+ // },
408
+ // metadata: {
409
+ // language: 'typescript',
410
+ // ephemeral: false,
411
+ // snapshot: 'my-snapshot-id', // only when snapshot is set
412
+ // image: 'node:20-slim', // only when image is set
413
+ // target: 'us', // only when sandbox is running
414
+ // },
415
+ // }
416
+ ```
417
+
418
+ ### `getInstructions()`
419
+
420
+ Get a description of the sandbox environment. Used in tool descriptions so agents understand the execution context.
421
+
422
+ ```typescript
423
+ // Default (no options)
424
+ new DaytonaSandbox().getInstructions()
425
+ // 'Cloud sandbox with isolated execution (typescript runtime). Default working directory: /home/daytona. Command timeout: 300s. Running as user: daytona.'
426
+
427
+ // All options set
428
+ new DaytonaSandbox({
429
+ language: 'python',
430
+ timeout: 60_000,
431
+ user: 'app',
432
+ volumes: [{ volumeId: 'vol-123', mountPath: '/data' }],
433
+ networkBlockAll: true,
434
+ }).getInstructions()
435
+ // 'Cloud sandbox with isolated execution (python runtime). Default working directory: /home/daytona. Command timeout: 60s. Running as user: app. 1 volume(s) attached. Network access is blocked.'
436
+ ```
437
+
438
+ ## Mounting Cloud Storage
439
+
440
+ Daytona sandboxes can mount S3 or GCS buckets, making cloud storage accessible as local directories inside the sandbox. This is useful for:
441
+
442
+ - Processing large datasets stored in cloud buckets
443
+ - Writing output files directly to cloud storage
444
+ - Sharing data between sandbox sessions
445
+
446
+ For usage examples, see [Filesystem mounting](#filesystem-mounting).
447
+
448
+ Daytona sandboxes use FUSE (Filesystem in Userspace) to mount cloud storage:
449
+
450
+ - **S3/R2**: Mounted via [s3fs-fuse](https://github.com/s3fs-fuse/s3fs-fuse)
451
+ - **GCS**: Mounted via [gcsfuse](https://github.com/GoogleCloudPlatform/gcsfuse)
452
+
453
+ The required FUSE tools are installed automatically at mount time if not already present in the sandbox image.
454
+
455
+ ### S3 environment variables
456
+
457
+ | Variable | Description |
458
+ | ---------------------- | --------------------------------- |
459
+ | `S3_BUCKET` | Bucket name |
460
+ | `S3_REGION` | AWS region or `auto` for R2/MinIO |
461
+ | `S3_ACCESS_KEY_ID` | Access key ID |
462
+ | `S3_SECRET_ACCESS_KEY` | Secret access key |
463
+ | `S3_ENDPOINT` | Endpoint URL (S3-compatible only) |
464
+
465
+ ### GCS environment variables
466
+
467
+ | Variable | Description |
468
+ | ------------------------- | ------------------------------------------------------- |
469
+ | `GCS_BUCKET` | Bucket name |
470
+ | `GCS_SERVICE_ACCOUNT_KEY` | Service account key JSON (full JSON string, not a path) |
471
+
472
+ ### Reducing cold start latency with a snapshot
473
+
474
+ By default, `s3fs` and `gcsfuse` are installed at first mount via `apt`, which adds startup time. To eliminate this, prebake them into a Daytona snapshot and pass the snapshot name via the `snapshot` option.
475
+
476
+ **Option 1: Declarative image build**
477
+
478
+ ```typescript
479
+ import { Daytona, Image } from '@daytonaio/sdk'
480
+
481
+ const template = Image.base('daytonaio/sandbox')
482
+ .runCommands('sudo apt-get update -qq')
483
+ .runCommands('sudo apt-get install -y s3fs')
484
+ // gcsfuse requires the Google Cloud apt repository
485
+ .runCommands(
486
+ 'sudo mkdir -p /etc/apt/keyrings && ' +
487
+ 'curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg -o /tmp/gcsfuse-key.gpg && ' +
488
+ 'sudo gpg --batch --yes --dearmor -o /etc/apt/keyrings/gcsfuse.gpg /tmp/gcsfuse-key.gpg && ' +
489
+ // Use gcsfuse-jammy for Ubuntu, gcsfuse-bookworm for Debian
490
+ 'echo "deb [signed-by=/etc/apt/keyrings/gcsfuse.gpg] https://packages.cloud.google.com/apt gcsfuse-jammy main" | sudo tee /etc/apt/sources.list.d/gcsfuse.list',
491
+ )
492
+ .runCommands('sudo apt-get update -qq && sudo apt-get install -y gcsfuse')
493
+
494
+ const daytona = new Daytona()
495
+
496
+ await daytona.snapshot.create(
497
+ {
498
+ name: 'cloud-fs-mounting',
499
+ image: template,
500
+ },
501
+ { onLogs: console.log },
502
+ )
503
+ ```
504
+
505
+ **Option 2: Dockerfile** — using [`Image.fromDockerfile()`](https://www.daytona.io/docs/typescript-sdk/image#fromdockerfile)
506
+
507
+ ```dockerfile
508
+ FROM daytonaio/sandbox
509
+ RUN sudo apt-get update -qq
510
+ RUN sudo apt-get install -y s3fs
511
+ # Use gcsfuse-jammy for Ubuntu, gcsfuse-bookworm for Debian
512
+ RUN sudo mkdir -p /etc/apt/keyrings && curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg -o /tmp/gcsfuse-key.gpg && sudo gpg --batch --yes --dearmor -o /etc/apt/keyrings/gcsfuse.gpg /tmp/gcsfuse-key.gpg && echo "deb [signed-by=/etc/apt/keyrings/gcsfuse.gpg] https://packages.cloud.google.com/apt gcsfuse-jammy main" | sudo tee /etc/apt/sources.list.d/gcsfuse.list
513
+ RUN sudo apt-get update -qq && sudo apt-get install -y gcsfuse
514
+ ```
515
+
516
+ ```typescript
517
+ import { Daytona, Image } from '@daytonaio/sdk'
518
+
519
+ const daytona = new Daytona()
520
+
521
+ await daytona.snapshot.create(
522
+ {
523
+ name: 'cloud-fs-mounting',
524
+ image: Image.fromDockerfile('./Dockerfile'),
525
+ },
526
+ { onLogs: console.log },
527
+ )
528
+ ```
529
+
530
+ Then use the snapshot name in your sandbox config:
531
+
532
+ ```typescript
533
+ const workspace = new Workspace({
534
+ mounts: {
535
+ '/s3-data': new S3Filesystem({
536
+ /* ... */
537
+ }),
538
+ '/gcs-data': new GCSFilesystem({
539
+ /* ... */
540
+ }),
541
+ },
542
+ sandbox: new DaytonaSandbox({ snapshot: 'cloud-fs-mounting' }),
543
+ })
544
+ ```
545
+
546
+ ## Direct SDK access
547
+
548
+ Access the underlying Daytona `Sandbox` instance for filesystem, git, and other operations not exposed through the `WorkspaceSandbox` interface:
549
+
550
+ ```typescript
551
+ const daytonaSandbox = sandbox.instance
552
+
553
+ // Upload a file
554
+ await daytonaSandbox.fs.uploadFile(Buffer.from('hello'), '/tmp/hello.txt')
555
+
556
+ // Run git operations
557
+ await daytonaSandbox.git.clone('https://github.com/org/repo', '/workspace/repo')
558
+ ```
559
+
560
+ The `instance` getter throws `SandboxNotReadyError` if the sandbox has not been started yet.
561
+
562
+ ## Sandbox creation modes
563
+
564
+ `DaytonaSandbox` selects a creation mode based on the options provided:
565
+
566
+ | Options | Creation mode |
567
+ | ------------------------- | ----------------------------------------------------- |
568
+ | `snapshot` set | Snapshot-based (snapshot takes precedence over image) |
569
+ | `image` set (no snapshot) | Image-based (optionally with `resources`) |
570
+ | Neither set | Default snapshot-based |
571
+
572
+ Resources are only applied when `image` is set. Passing `resources` without `image` has no effect.
573
+
574
+ ## Related
575
+
576
+ - [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox)
577
+ - [LocalSandbox reference](https://mastra.ai/reference/workspace/local-sandbox)
578
+ - [S3Filesystem reference](https://mastra.ai/reference/workspace/s3-filesystem)
579
+ - [GCSFilesystem reference](https://mastra.ai/reference/workspace/gcs-filesystem)
580
+ - [Workspace overview](https://mastra.ai/docs/workspace/overview)
@@ -73,6 +73,8 @@ const filesystem = new S3Filesystem({
73
73
 
74
74
  **secretAccessKey?:** (`string`): AWS secret access key. Optional for public buckets (read-only access).
75
75
 
76
+ **sessionToken?:** (`string`): AWS session token for temporary credentials. Required when using SSO, AssumeRole, container credentials, or any other temporary credential provider.
77
+
76
78
  **endpoint?:** (`string`): Custom endpoint URL for S3-compatible storage (R2, MinIO, etc.)
77
79
 
78
80
  **forcePathStyle?:** (`boolean`): Force path-style URLs instead of virtual-hosted-style. Required for some S3-compatible services like MinIO. Defaults to true when a custom endpoint is provided. (Default: `true (when endpoint is set)`)
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @mastra/mcp-docs-server
2
2
 
3
+ ## 1.1.7-alpha.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`504fc8b`](https://github.com/mastra-ai/mastra/commit/504fc8b9d0ddab717577ad3bf9c95ea4bd5377bd), [`f9c150b`](https://github.com/mastra-ai/mastra/commit/f9c150b7595ad05ad9cc9a11098e2944361e8c22), [`88de7e8`](https://github.com/mastra-ai/mastra/commit/88de7e8dfe4b7e1951a9e441bb33136e705ce24e), [`edee4b3`](https://github.com/mastra-ai/mastra/commit/edee4b37dff0af515fc7cc0e8d71ee39e6a762f0), [`3790c75`](https://github.com/mastra-ai/mastra/commit/3790c7578cc6a47d854eb12d89e6b1912867fe29), [`e7a235b`](https://github.com/mastra-ai/mastra/commit/e7a235be6472e0c870ed6c791ddb17c492dc188b), [`d51d298`](https://github.com/mastra-ai/mastra/commit/d51d298953967aab1f58ec965b644d109214f085), [`6dbeeb9`](https://github.com/mastra-ai/mastra/commit/6dbeeb94a8b1eebb727300d1a98961f882180794), [`d5f0d8d`](https://github.com/mastra-ai/mastra/commit/d5f0d8d6a03e515ddaa9b5da19b7e44b8357b07b), [`09c3b18`](https://github.com/mastra-ai/mastra/commit/09c3b1802ff14e243a8a8baea327440bc8cc2e32), [`b896379`](https://github.com/mastra-ai/mastra/commit/b8963791c6afa79484645fcec596a201f936b9a2), [`85c84eb`](https://github.com/mastra-ai/mastra/commit/85c84ebb78aebfcba9d209c8e152b16d7a00cb71), [`a89272a`](https://github.com/mastra-ai/mastra/commit/a89272a5d71939b9fcd284e6a6dc1dd091a6bdcf), [`ee9c8df`](https://github.com/mastra-ai/mastra/commit/ee9c8df644f19d055af5f496bf4942705f5a47b7), [`77b4a25`](https://github.com/mastra-ai/mastra/commit/77b4a254e51907f8ff3a3ba95596a18e93ae4b35), [`276246e`](https://github.com/mastra-ai/mastra/commit/276246e0b9066a1ea48bbc70df84dbe528daaf99), [`08ecfdb`](https://github.com/mastra-ai/mastra/commit/08ecfdbdad6fb8285deef86a034bdf4a6047cfca), [`d5f628c`](https://github.com/mastra-ai/mastra/commit/d5f628ca86c6f6f3ff1035d52f635df32dd81cab), [`24f7204`](https://github.com/mastra-ai/mastra/commit/24f72046eb35b47c75d36193af4fb817b588720d), [`524c0f3`](https://github.com/mastra-ai/mastra/commit/524c0f3c434c3d9d18f66338dcef383d6161b59c), [`c18a0e9`](https://github.com/mastra-ai/mastra/commit/c18a0e9cef1e4ca004b2963d35e4cfc031971eac), [`4bd21ea`](https://github.com/mastra-ai/mastra/commit/4bd21ea43d44d0a0427414fc047577f9f0aa3bec), [`115a7a4`](https://github.com/mastra-ai/mastra/commit/115a7a47db5e9896fec12ae6507501adb9ec89bf), [`22a48ae`](https://github.com/mastra-ai/mastra/commit/22a48ae2513eb54d8d79dad361fddbca97a155e8), [`3c6ef79`](https://github.com/mastra-ai/mastra/commit/3c6ef798481e00d6d22563be2de98818fd4dd5e0), [`9311c17`](https://github.com/mastra-ai/mastra/commit/9311c17d7a0640d9c4da2e71b814dc67c57c6369), [`7edf78f`](https://github.com/mastra-ai/mastra/commit/7edf78f80422c43e84585f08ba11df0d4d0b73c5), [`1c4221c`](https://github.com/mastra-ai/mastra/commit/1c4221cf6032ec98d0e094d4ee11da3e48490d96), [`d25b9ea`](https://github.com/mastra-ai/mastra/commit/d25b9eabd400167255a97b690ffbc4ee4097ded5), [`fe1ce5c`](https://github.com/mastra-ai/mastra/commit/fe1ce5c9211c03d561606fda95cbfe7df1d9a9b5), [`b03c0e0`](https://github.com/mastra-ai/mastra/commit/b03c0e0389a799523929a458b0509c9e4244d562), [`0a8366b`](https://github.com/mastra-ai/mastra/commit/0a8366b0a692fcdde56c4d526e4cf03c502ae4ac), [`85664e9`](https://github.com/mastra-ai/mastra/commit/85664e9fd857320fbc245e301f764f45f66f32a3), [`bc79650`](https://github.com/mastra-ai/mastra/commit/bc796500c6e0334faa158a96077e3fb332274869), [`9257d01`](https://github.com/mastra-ai/mastra/commit/9257d01d1366d81f84c582fe02b5e200cf9621f4), [`3a3a59e`](https://github.com/mastra-ai/mastra/commit/3a3a59e8ffaa6a985fe3d9a126a3f5ade11a6724), [`3108d4e`](https://github.com/mastra-ai/mastra/commit/3108d4e649c9fddbf03253a6feeb388a5fa9fa5a), [`0c33b2c`](https://github.com/mastra-ai/mastra/commit/0c33b2c9db537f815e1c59e2c898ffce2e395a79), [`191e5bd`](https://github.com/mastra-ai/mastra/commit/191e5bd29b82f5bda35243945790da7bc7b695c2), [`fde104d`](https://github.com/mastra-ai/mastra/commit/fde104da80935d6e0dd24327e86a51011fcb3173), [`f77cd94`](https://github.com/mastra-ai/mastra/commit/f77cd94c44eabed490384e7d19232a865e13214c), [`e8135c7`](https://github.com/mastra-ai/mastra/commit/e8135c7e300dac5040670eec7eab896ac6092e30), [`daca48f`](https://github.com/mastra-ai/mastra/commit/daca48f0fb17b7ae0b62a2ac40cf0e491b2fd0b7), [`257d14f`](https://github.com/mastra-ai/mastra/commit/257d14faca5931f2e4186fc165b6f0b1f915deee), [`352f25d`](https://github.com/mastra-ai/mastra/commit/352f25da316b24cdd5b410fd8dddf6a8b763da2a), [`93477d0`](https://github.com/mastra-ai/mastra/commit/93477d0769b8a13ea5ed73d508d967fb23eaeed9), [`31c78b3`](https://github.com/mastra-ai/mastra/commit/31c78b3eb28f58a8017f1dcc795c33214d87feac), [`0bc0720`](https://github.com/mastra-ai/mastra/commit/0bc07201095791858087cc56f353fcd65e87ab54), [`36516ac`](https://github.com/mastra-ai/mastra/commit/36516aca1021cbeb42e74751b46a2614101f37c8), [`e947652`](https://github.com/mastra-ai/mastra/commit/e9476527fdecb4449e54570e80dfaf8466901254), [`23b43dd`](https://github.com/mastra-ai/mastra/commit/23b43ddd0e3db05dee828c2733faa2496b7b0319), [`3c6ef79`](https://github.com/mastra-ai/mastra/commit/3c6ef798481e00d6d22563be2de98818fd4dd5e0), [`9257d01`](https://github.com/mastra-ai/mastra/commit/9257d01d1366d81f84c582fe02b5e200cf9621f4), [`ec248f6`](https://github.com/mastra-ai/mastra/commit/ec248f6b56e8a037c066c49b2178e2507471d988)]:
8
+ - @mastra/core@1.9.0-alpha.0
9
+ - @mastra/mcp@1.0.3-alpha.0
10
+
3
11
  ## 1.1.6
4
12
 
5
13
  ### Patch Changes
package/LICENSE.md CHANGED
@@ -1,3 +1,18 @@
1
+ Portions of this software are licensed as follows:
2
+
3
+ - All content that resides under any directory named "ee/" within this
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`.
8
+
9
+ - All third-party components incorporated into the Mastra Software are
10
+ licensed under the original license provided by the owner of the
11
+ applicable component.
12
+
13
+ - Content outside of the above-mentioned directories or restrictions is
14
+ available under the "Apache License 2.0" as defined below.
15
+
1
16
  # Apache License 2.0
2
17
 
3
18
  Copyright (c) 2025 Kepler Software, Inc.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/mcp-docs-server",
3
- "version": "1.1.6",
3
+ "version": "1.1.7-alpha.0",
4
4
  "description": "MCP server for accessing Mastra.ai documentation, changelogs, and news.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -29,8 +29,8 @@
29
29
  "jsdom": "^26.1.0",
30
30
  "local-pkg": "^1.1.2",
31
31
  "zod": "^3.25.76",
32
- "@mastra/core": "1.8.0",
33
- "@mastra/mcp": "^1.0.2"
32
+ "@mastra/core": "1.9.0-alpha.0",
33
+ "@mastra/mcp": "^1.0.3-alpha.0"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@hono/node-server": "^1.19.9",
@@ -46,9 +46,9 @@
46
46
  "tsx": "^4.21.0",
47
47
  "typescript": "^5.9.3",
48
48
  "vitest": "4.0.18",
49
- "@internal/lint": "0.0.63",
50
49
  "@internal/types-builder": "0.0.38",
51
- "@mastra/core": "1.8.0"
50
+ "@mastra/core": "1.9.0-alpha.0",
51
+ "@internal/lint": "0.0.63"
52
52
  },
53
53
  "homepage": "https://mastra.ai",
54
54
  "repository": {