@mastra/mcp-docs-server 1.2.16-alpha.3 → 1.2.16-alpha.4
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/agents/a2a.md +1 -1
- package/.docs/docs/agents/overview.md +2 -0
- package/.docs/docs/agents/processors.md +4 -4
- package/.docs/docs/agents/structured-output.md +1 -1
- package/.docs/docs/agents/using-tools.md +15 -11
- package/.docs/docs/browser/overview.md +22 -3
- package/.docs/docs/capabilities/subagents.md +2 -2
- package/.docs/docs/datasets/running-experiments.md +2 -2
- package/.docs/docs/deployment/overview.md +3 -3
- package/.docs/docs/deployment/sandbox.md +1 -1
- package/.docs/docs/deployment/workers.md +5 -5
- package/.docs/docs/deployment/workflow-runners.md +1 -1
- package/.docs/docs/editor/overview.md +3 -1
- package/.docs/docs/evals/custom-scorers.md +1 -1
- package/.docs/docs/evals/multi-turn.md +1 -1
- package/.docs/docs/evals/overview.md +3 -3
- package/.docs/docs/getting-started/develop.md +1 -1
- package/.docs/docs/harness/agent-controller.md +2 -2
- package/.docs/docs/harness/overview.md +1 -1
- package/.docs/docs/long-running-agents/background-tasks.md +2 -2
- package/.docs/docs/long-running-agents/goals.md +3 -2
- package/.docs/docs/long-running-agents/signals.md +2 -2
- package/.docs/docs/mastra-platform/deploy.md +1 -1
- package/.docs/docs/mastra-platform/github.md +1 -1
- package/.docs/docs/mastra-platform/observability.md +1 -1
- package/.docs/docs/mastra-platform/overview.md +3 -3
- package/.docs/docs/mastra-platform/server.md +2 -2
- package/.docs/docs/mastra-platform/trace-intelligence.md +3 -3
- package/.docs/docs/memory/memory-processors.md +1 -1
- package/.docs/docs/memory/message-history.md +2 -2
- package/.docs/docs/memory/observational-memory.md +13 -13
- package/.docs/docs/memory/semantic-recall.md +1 -1
- package/.docs/docs/memory/working-memory.md +1 -1
- package/.docs/docs/observability/logging.md +1 -1
- package/.docs/docs/observability/metrics/querying.md +1 -1
- package/.docs/docs/observability/tracing/overview.md +3 -3
- package/.docs/docs/server/custom-adapters.md +2 -2
- package/.docs/docs/server/custom-api-routes.md +1 -1
- package/.docs/docs/server/mastra-client.md +1 -1
- package/.docs/docs/server/server-adapters.md +1 -1
- package/.docs/docs/studio/deployment.md +2 -2
- package/.docs/docs/studio/observability.md +1 -1
- package/.docs/docs/studio/overview.md +2 -0
- package/.docs/docs/workflows/dynamic-workflows.md +1 -1
- package/.docs/docs/workflows/scheduled-workflows.md +1 -1
- package/.docs/docs/workflows/suspend-and-resume.md +1 -1
- package/.docs/docs/workspace/overview.md +2 -1
- package/.docs/docs/workspace/search.md +1 -1
- package/.docs/docs/workspace/skills.md +1 -1
- package/.docs/integrations/browsers/agent-browser.md +2 -3
- package/.docs/integrations/browsers/firecrawl.md +0 -1
- package/.docs/integrations/browsers/stagehand.md +2 -3
- package/.docs/models/gateways/openrouter.md +1 -2
- package/.docs/models/index.md +1 -1
- package/.docs/models/providers/kilo.md +6 -7
- package/.docs/models/providers/nano-gpt.md +2 -1
- package/.docs/reference/acp/acp-agent.md +1 -1
- package/.docs/reference/agent-controller/session.md +1 -1
- package/.docs/reference/agents/channels.md +1 -1
- package/.docs/reference/agents/inngest-agent.md +1 -1
- package/.docs/reference/ai-sdk/overview.md +1 -1
- package/.docs/reference/auth/auth0.md +1 -1
- package/.docs/reference/auth/google.md +1 -1
- package/.docs/reference/browser/agent-browser.md +2 -2
- package/.docs/reference/browser/browser-viewer.md +1 -1
- package/.docs/reference/browser/stagehand-browser.md +2 -2
- package/.docs/reference/channels/channel-provider.md +1 -1
- package/.docs/reference/channels/slack-provider.md +1 -1
- package/.docs/reference/cli/mastra.md +5 -5
- package/.docs/reference/code-sdk/mount-agent-controller.md +1 -1
- package/.docs/reference/coding-agent/build-base-prompt.md +2 -1
- package/.docs/reference/configuration.md +3 -3
- package/.docs/reference/core/getAgentById.md +1 -1
- package/.docs/reference/core/getWorkflow.md +2 -2
- package/.docs/reference/core/mastra-class.md +1 -1
- package/.docs/reference/deployer/netlify.md +1 -1
- package/.docs/reference/deployer.md +1 -1
- package/.docs/reference/editor/prompt-blocks.md +1 -1
- package/.docs/reference/editor/tools.md +1 -1
- package/.docs/reference/evals/completeness.md +1 -1
- package/.docs/reference/evals/noise-sensitivity.md +1 -1
- package/.docs/reference/evals/summarization.md +1 -1
- package/.docs/reference/file-based-agents/config.md +1 -1
- package/.docs/reference/file-based-agents/skills.md +5 -5
- package/.docs/reference/file-based-agents/workspace.md +1 -1
- package/.docs/reference/logging/pino-logger.md +1 -1
- package/.docs/reference/memory/observational-memory.md +12 -4
- package/.docs/reference/migrations/upgrade-to-v1/agent.md +3 -3
- package/.docs/reference/migrations/upgrade-to-v1/client.md +1 -1
- package/.docs/reference/migrations/upgrade-to-v1/evals.md +1 -1
- package/.docs/reference/migrations/upgrade-to-v1/mastra.md +1 -1
- package/.docs/reference/migrations/upgrade-to-v1/mcp.md +1 -1
- package/.docs/reference/migrations/upgrade-to-v1/overview.md +1 -1
- package/.docs/reference/migrations/upgrade-to-v1/processors.md +1 -1
- package/.docs/reference/migrations/upgrade-to-v1/storage.md +5 -5
- package/.docs/reference/migrations/upgrade-to-v1/tools.md +1 -1
- package/.docs/reference/observability/tracing/bridges/datadog.md +1 -1
- package/.docs/reference/observability/tracing/bridges/otel.md +1 -1
- package/.docs/reference/observability/tracing/exporters/arize.md +1 -1
- package/.docs/reference/observability/tracing/exporters/cloud-exporter.md +2 -2
- package/.docs/reference/observability/tracing/exporters/mastra-platform-exporter.md +1 -1
- package/.docs/reference/observability/tracing/exporters/otel.md +1 -1
- package/.docs/reference/observability/tracing/exporters/sentry.md +1 -1
- package/.docs/reference/observability/tracing/processors/sensitive-data-filter.md +27 -3
- package/.docs/reference/processors/batch-parts-processor.md +1 -1
- package/.docs/reference/processors/language-detector.md +1 -2
- package/.docs/reference/processors/processor-interface.md +16 -16
- package/.docs/reference/processors/stream-error-retry-processor.md +2 -2
- package/.docs/reference/rag/chunking-and-embedding.md +1 -1
- package/.docs/reference/rag/metadata-filters.md +1 -1
- package/.docs/reference/server/koa-adapter.md +1 -1
- package/.docs/reference/signals/webhook-signal-provider.md +1 -1
- package/.docs/reference/storage/retention.md +1 -1
- package/.docs/reference/tools/bedrock-kb-tool.md +1 -1
- package/.docs/reference/tools/mcp-client.md +3 -3
- package/.docs/reference/tools/mcp-server.md +5 -5
- package/.docs/reference/tools/task-tools.md +1 -1
- package/.docs/reference/tools/vector-query-tool.md +1 -1
- package/.docs/reference/vectors/chroma.md +1 -1
- package/.docs/reference/vectors/convex.md +1 -1
- package/.docs/reference/vectors/couchbase.md +1 -1
- package/.docs/reference/vectors/mongodb.md +2 -2
- package/.docs/reference/vectors/pg.md +1 -1
- package/.docs/reference/vectors/qdrant.md +2 -2
- package/.docs/reference/voice/overview.md +1 -1
- package/.docs/reference/voice/speech-to-speech.md +1 -1
- package/.docs/reference/voice/speech-to-text.md +1 -1
- package/.docs/reference/voice/voice.on.md +1 -1
- package/.docs/reference/voice/voice.updateConfig.md +1 -1
- package/.docs/reference/workspace/local-sandbox.md +1 -1
- package/.docs/reference/workspace/workspace-class.md +1 -1
- package/CHANGELOG.md +7 -0
- package/package.json +4 -4
- package/.docs/docs/browser/recording.md +0 -120
|
@@ -418,7 +418,7 @@ With default settings, the context window doesn't grow unbounded. It oscillates
|
|
|
418
418
|
3. **Repeat**: History grows from \~6k back toward 30k and shrinks again. Each cycle appends to the observation log, which grows much more slowly than raw history.
|
|
419
419
|
4. **Observations reach 40k**: The Reflector creates a smaller log from the current observations and any earlier reflections.
|
|
420
420
|
|
|
421
|
-
In the normal buffered cycle, raw history oscillates between roughly 6k and 30k tokens. The observation log stays around 40k tokens, however long the conversation runs. These are activation thresholds rather than hard caps
|
|
421
|
+
In the normal buffered cycle, raw history oscillates between roughly 6k and 30k tokens. The observation log stays around 40k tokens, however long the conversation runs. These are activation thresholds rather than hard caps, so history can grow past the threshold whenever background buffering doesn't keep pace. Above `blockAfter` (default `1.2`, \~36k tokens) activation is allowed to overshoot the retention target instead of activating fewer chunks. It doesn't drain the buffer, and with the default settings it removes the same amount of history as below the threshold. Reflection falls back to a synchronous run above its own `blockAfter` (\~48k tokens).
|
|
422
422
|
|
|
423
423
|
With [`shareTokenBudget`](https://mastra.ai/reference/memory/observational-memory) enabled, the two budgets pool together. While the observation log is small, message history can expand into the unused observation space (up to \~70k tokens with the defaults) before observation triggers. It then shrinks as observations accumulate.
|
|
424
424
|
|
|
@@ -714,23 +714,23 @@ When message tokens reach the `messageTokens` threshold, buffered chunks activat
|
|
|
714
714
|
|
|
715
715
|
Buffered observations also include continuation hints, a suggested next response and the current task, so the main agent maintains conversational continuity after activation shrinks the context window.
|
|
716
716
|
|
|
717
|
-
If the agent produces messages faster than the Observer can process them,
|
|
717
|
+
If the agent produces messages faster than the Observer can process them, the `blockAfter` safety threshold lets activation overshoot the retention target instead of activating fewer chunks. It never activates more chunks than are needed to reach that target, and with the default settings it changes nothing. A synchronous observation runs when the `messageTokens` threshold is reached and buffered activation didn't happen. Buffered activation usually preserves a minimum remaining context (the smaller of \~1k tokens or the configured retention floor), but a single buffered chunk that covers the whole pending window still activates and can leave less.
|
|
718
718
|
|
|
719
719
|
Reflection works similarly, the Reflector runs in the background when observations reach a fraction of the reflection threshold.
|
|
720
720
|
|
|
721
721
|
### Settings
|
|
722
722
|
|
|
723
|
-
| Setting | Default | What it controls
|
|
724
|
-
| ------------------------------------- | ------- |
|
|
725
|
-
| `observation.bufferTokens` | `0.2` | How often to buffer. `0.2` means every 20% of `messageTokens`. With the default 30k threshold, that's roughly every 6k tokens. Can also be an absolute token count (e.g. `5000`).
|
|
726
|
-
| `observation.bufferActivation` | `0.8` | How aggressively to clear the message window on activation. `0.8` means remove enough messages to keep only 20% of `messageTokens` remaining. Lower values keep more message history.
|
|
727
|
-
| `observation.blockAfter` | `1.2` | Safety net if buffering can't keep up. Values from 1 up to (but not including) 100 multiply `messageTokens`: at `1.2`,
|
|
728
|
-
| `activateAfterIdle` | none | Forces buffered observations to activate after a period of inactivity, even before `observation.messageTokens` is reached. Accepts a numeric millisecond value such as `300_000`, duration strings like `"5m"` or `"1hr"`, or `"auto"` for a provider-aware prompt cache TTL.
|
|
729
|
-
| `activateOnProviderChange` | `false` | Forces buffered observations to activate when the next step uses a different `provider/model` than the one that produced the latest assistant step. Use this when switching providers or models would invalidate prompt cache reuse.
|
|
730
|
-
| `reflection.bufferActivation` | `0.5` | When to start background reflection. `0.5` means reflection begins when observations reach 50% of the `observationTokens` threshold.
|
|
731
|
-
| `reflection.activateAfterIdle` | none | Opts buffered reflections into idle activation. Reflections don't inherit top-level `activateAfterIdle`.
|
|
732
|
-
| `reflection.activateOnProviderChange` | `false` | Opts buffered reflections into provider-change activation. Reflections don't inherit top-level `activateOnProviderChange`.
|
|
733
|
-
| `reflection.blockAfter` | `1.2` | Safety threshold for reflection
|
|
723
|
+
| Setting | Default | What it controls |
|
|
724
|
+
| ------------------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
725
|
+
| `observation.bufferTokens` | `0.2` | How often to buffer. `0.2` means every 20% of `messageTokens`. With the default 30k threshold, that's roughly every 6k tokens. Can also be an absolute token count (e.g. `5000`). |
|
|
726
|
+
| `observation.bufferActivation` | `0.8` | How aggressively to clear the message window on activation. `0.8` means remove enough messages to keep only 20% of `messageTokens` remaining. Lower values keep more message history. |
|
|
727
|
+
| `observation.blockAfter` | `1.2` | Safety net if buffering can't keep up. Values from 1 up to (but not including) 100 multiply `messageTokens`: at `1.2`, the threshold is 36k tokens (1.2 × 30k). Above it, activation may overshoot the retention target instead of activating fewer chunks. Values of 100 or more are absolute token counts (e.g. `50_000`) and must be greater than `messageTokens`. |
|
|
728
|
+
| `activateAfterIdle` | none | Forces buffered observations to activate after a period of inactivity, even before `observation.messageTokens` is reached. Accepts a numeric millisecond value such as `300_000`, duration strings like `"5m"` or `"1hr"`, or `"auto"` for a provider-aware prompt cache TTL. |
|
|
729
|
+
| `activateOnProviderChange` | `false` | Forces buffered observations to activate when the next step uses a different `provider/model` than the one that produced the latest assistant step. Use this when switching providers or models would invalidate prompt cache reuse. |
|
|
730
|
+
| `reflection.bufferActivation` | `0.5` | When to start background reflection. `0.5` means reflection begins when observations reach 50% of the `observationTokens` threshold. |
|
|
731
|
+
| `reflection.activateAfterIdle` | none | Opts buffered reflections into idle activation. Reflections don't inherit top-level `activateAfterIdle`. |
|
|
732
|
+
| `reflection.activateOnProviderChange` | `false` | Opts buffered reflections into provider-change activation. Reflections don't inherit top-level `activateOnProviderChange`. |
|
|
733
|
+
| `reflection.blockAfter` | `1.2` | Safety threshold for reflection. Same value format as observation (absolute values must be greater than `observationTokens`), but above it reflection runs synchronously when no buffered reflection is ready to activate. |
|
|
734
734
|
|
|
735
735
|
If you're relying on prompt caching, set `activateAfterIdle` to `"auto"` or to a specific cache TTL. That way, once a thread has been idle long enough for the cache to expire, the next request can activate buffered observations first and send a smaller compressed context window.
|
|
736
736
|
|
|
@@ -270,7 +270,7 @@ Supported embedding models:
|
|
|
270
270
|
|
|
271
271
|
- **OpenAI**: `text-embedding-3-small`, `text-embedding-3-large`, `text-embedding-ada-002`
|
|
272
272
|
- **Google**: `gemini-embedding-001`
|
|
273
|
-
- **OpenRouter**: Access embedding models from
|
|
273
|
+
- **OpenRouter**: Access embedding models from multiple providers
|
|
274
274
|
|
|
275
275
|
```ts
|
|
276
276
|
import { Agent } from '@mastra/core/agent'
|
|
@@ -213,7 +213,7 @@ const paragraphMemory = new Memory({
|
|
|
213
213
|
|
|
214
214
|
## Structured working memory
|
|
215
215
|
|
|
216
|
-
Working memory can also be defined using a structured schema instead of a Markdown template.
|
|
216
|
+
Working memory can also be defined using a structured schema instead of a Markdown template. A [Standard JSON Schema](https://standardschema.dev/json-schema) ([Zod](https://zod.dev/), [Valibot](https://valibot.dev/), [ArkType](https://arktype.io/), etc.). When using a schema, the agent will see and update working memory as a JSON object matching your schema.
|
|
217
217
|
|
|
218
218
|
**Requirement:** You must specify either `template` or `schema`, but not both.
|
|
219
219
|
|
|
@@ -28,7 +28,7 @@ Visit [PinoLogger](https://mastra.ai/reference/logging/pino-logger) for all avai
|
|
|
28
28
|
|
|
29
29
|
## Logging to observability storage
|
|
30
30
|
|
|
31
|
-
When [observability](https://mastra.ai/docs/observability/overview) is configured, all logger calls are automatically forwarded to your observability storage.
|
|
31
|
+
When [observability](https://mastra.ai/docs/observability/overview) is configured, all logger calls are automatically forwarded to your observability storage. Every `debug`, `info`, `warn`, `error`, and `trackException` call from your application and from Mastra's internal components is stored alongside your traces.
|
|
32
32
|
|
|
33
33
|
No code changes are required. Mastra wraps the configured logger so that it writes to both the original logger (console, file, or custom transport) and the observability system simultaneously.
|
|
34
34
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Querying metrics
|
|
4
4
|
|
|
5
|
-
Mastra exposes the same five OLAP queries (`getMetricAggregate`, `getMetricBreakdown`, `getMetricTimeSeries`, `getMetricPercentiles`, and discovery helpers) through three surfaces: an in-process store accessor
|
|
5
|
+
Mastra exposes the same five OLAP queries (`getMetricAggregate`, `getMetricBreakdown`, `getMetricTimeSeries`, `getMetricPercentiles`, and discovery helpers) through three surfaces: an in-process store accessor and the runtime HTTP API, plus the `mastra api metric` CLI. All three accept the same Zod-validated input shapes, so you can move from a one-off CLI investigation to a programmatic dashboard tool without re-learning the API.
|
|
6
6
|
|
|
7
7
|
**For AI agents:** Run `npx mastra api metric aggregate '{"name":"mastra_agent_duration_ms","aggregation":"avg"}'` to query average agent latency directly instead of writing a temporary script. Querying local metrics requires a running Mastra server with an OLAP-capable observability store; start the local server with `npx mastra dev`, or pass the reachable server's base URL with `--url`. Run `npx mastra api metric aggregate --schema` before constructing a different query. Install Mastra's skill with `npx skills add mastra-ai/skills --skill mastra` for complete API CLI discovery, targeting, schema, authentication, and error-handling guidance.
|
|
8
8
|
|
|
@@ -148,7 +148,7 @@ Per-call `tracingOptions.metadata.environment` always takes precedence, so indiv
|
|
|
148
148
|
|
|
149
149
|
### Automatic metadata from `RequestContext`
|
|
150
150
|
|
|
151
|
-
Instead of manually adding metadata to each span, you can configure Mastra to automatically extract values from RequestContext and attach them as metadata to all spans in a trace. This is useful for consistently tracking user identifiers
|
|
151
|
+
Instead of manually adding metadata to each span, you can configure Mastra to automatically extract values from RequestContext and attach them as metadata to all spans in a trace. This is useful for consistently tracking user identifiers and environment information, along with feature flags or other request-scoped data across your entire trace.
|
|
152
152
|
|
|
153
153
|
#### Configuration-level extraction
|
|
154
154
|
|
|
@@ -365,7 +365,7 @@ You get fine-grained control over which child spans include RequestContext metad
|
|
|
365
365
|
|
|
366
366
|
## Creating child spans
|
|
367
367
|
|
|
368
|
-
Child spans allow you to track fine-grained operations within your workflow steps or tools. They provide visibility into sub-operations like database queries
|
|
368
|
+
Child spans allow you to track fine-grained operations within your workflow steps or tools. They provide visibility into sub-operations like database queries and API calls, as well as file operations or complex calculations. This hierarchical structure helps you identify performance bottlenecks and understand the exact sequence of operations.
|
|
369
369
|
|
|
370
370
|
Create child spans inside a tool call or workflow step to track specific operations:
|
|
371
371
|
|
|
@@ -681,7 +681,7 @@ export const mastra = new Mastra({
|
|
|
681
681
|
|
|
682
682
|
### Use cases
|
|
683
683
|
|
|
684
|
-
**Increasing limits for debugging**:
|
|
684
|
+
**Increasing limits for debugging**: Increase these limits to capture more context for large documents and API responses, as well as other data structures:
|
|
685
685
|
|
|
686
686
|
```ts
|
|
687
687
|
serializationOptions: {
|
|
@@ -176,7 +176,7 @@ async getParams(
|
|
|
176
176
|
|
|
177
177
|
### `sendResponse()`
|
|
178
178
|
|
|
179
|
-
Send the response back to the client based on the route's response type. Mastra routes can return different response types: JSON for most API responses
|
|
179
|
+
Send the response back to the client based on the route's response type. Mastra routes can return different response types: JSON for most API responses and streams for agent generation, plus special types for MCP transports. Your implementation should handle each type appropriately for your framework.
|
|
180
180
|
|
|
181
181
|
```typescript
|
|
182
182
|
async sendResponse(
|
|
@@ -211,7 +211,7 @@ async sendResponse(
|
|
|
211
211
|
|
|
212
212
|
### `stream()`
|
|
213
213
|
|
|
214
|
-
Handle streaming responses for agent generation. When an agent generates a response, it produces a stream of chunks that should be sent to the client as they become available. This method reads from the stream
|
|
214
|
+
Handle streaming responses for agent generation. When an agent generates a response, it produces a stream of chunks that should be sent to the client as they become available. This method reads from the stream and optionally applies redaction to hide sensitive data before writing chunks to the response in the appropriate format (SSE or newline-delimited JSON).
|
|
215
215
|
|
|
216
216
|
```typescript
|
|
217
217
|
async stream(
|
|
@@ -37,7 +37,7 @@ Each route's handler receives the Hono `Context`. Within the handler you can acc
|
|
|
37
37
|
|
|
38
38
|
## Schema validation
|
|
39
39
|
|
|
40
|
-
Use [`createRoute()`](https://mastra.ai/reference/server/create-route) in `apiRoutes` to parse and validate path
|
|
40
|
+
Use [`createRoute()`](https://mastra.ai/reference/server/create-route) in `apiRoutes` to parse and validate path and query parameters, along with request bodies, using Zod. The schemas also infer the handler parameters and generate OpenAPI metadata.
|
|
41
41
|
|
|
42
42
|
```typescript
|
|
43
43
|
import { Mastra } from '@mastra/core'
|
|
@@ -71,7 +71,7 @@ The Mastra Client SDK exposes all resources served by the Mastra Server.
|
|
|
71
71
|
|
|
72
72
|
## Create and run dynamic workflows
|
|
73
73
|
|
|
74
|
-
Use `upsertDynamicWorkflow()` to create or replace a persisted workflow definition. A successful upsert validates the complete definition
|
|
74
|
+
Use `upsertDynamicWorkflow()` to create or replace a persisted workflow definition. A successful upsert validates the complete definition and registers it with the running Mastra instance. The workflow then becomes available through the standard execution API.
|
|
75
75
|
|
|
76
76
|
The following example shows the full lifecycle of a mapping workflow, from creation and inspection through execution and deletion:
|
|
77
77
|
|
|
@@ -480,7 +480,7 @@ With this prefix, Mastra routes become `/api/v2/agents`, `/api/v2/workflows`, et
|
|
|
480
480
|
|
|
481
481
|
## OpenAPI spec
|
|
482
482
|
|
|
483
|
-
Mastra can generate an OpenAPI specification for all registered routes. This is useful for documentation
|
|
483
|
+
Mastra can generate an OpenAPI specification for all registered routes. This is useful for documentation or client generation, including integration with API tools. Enable it by setting the `openapiPath` option:
|
|
484
484
|
|
|
485
485
|
```typescript
|
|
486
486
|
const server = new MastraServer({
|
|
@@ -15,7 +15,7 @@ On this page you'll learn how to deploy Studio on your own infrastructure. As th
|
|
|
15
15
|
|
|
16
16
|
The easiest way to run Studio is the [`mastra studio`](https://mastra.ai/reference/cli/mastra) command.
|
|
17
17
|
|
|
18
|
-
Whereas `mastra dev` runs both Studio and an API for development purposes, the purpose of `mastra studio` is to serve a standalone, static UI that connects to an already-running Mastra server.
|
|
18
|
+
Whereas `mastra dev` runs both Studio and an API for development purposes, the purpose of `mastra studio` is to serve a standalone, static UI that connects to an already-running Mastra server. You can deploy Studio separately from the Mastra server.
|
|
19
19
|
|
|
20
20
|
Open a terminal and install the `mastra` CLI globally:
|
|
21
21
|
|
|
@@ -67,7 +67,7 @@ For hosted Studio on Mastra platform, see [Studio on Mastra platform](https://ma
|
|
|
67
67
|
|
|
68
68
|
## Running a server
|
|
69
69
|
|
|
70
|
-
Running `mastra studio` as a long-running process is no different from running any other Node.js service.
|
|
70
|
+
Running `mastra studio` as a long-running process is no different from running any other Node.js service. The same deployment practices and tools apply here. Use process managers such as PM2 or Docker. Cloud services that support Node.js applications are another option. As with any web service, configure CORS correctly and monitor errors.
|
|
71
71
|
|
|
72
72
|
> **Warning:** Once Studio is connected to your Mastra server, it has full access to your agents, workflows, and tools. Be sure to secure it properly in production (e.g. behind authentication, VPN, etc.) to prevent unauthorized access.
|
|
73
73
|
>
|
|
@@ -106,7 +106,7 @@ To export a trace, select **Download trace JSON** in the trace panel header. Thi
|
|
|
106
106
|
|
|
107
107
|
## Logs
|
|
108
108
|
|
|
109
|
-
Browse internal Mastra logs forwarded to your observability storage. Logs provide full-text search
|
|
109
|
+
Browse internal Mastra logs forwarded to your observability storage. Logs provide full-text search across message content and entity names, including trace IDs. Date presets range from the last 24 hours to 30 days. Multi-select filters cover level and entity type, along with entity name. Selecting a log opens a detail panel showing the full message, structured data, and metadata. If the log is correlated with a trace, you can move through directly to the trace and span timeline.
|
|
110
110
|
|
|
111
111
|
Log forwarding is enabled by default when you configure observability. See [logging](https://mastra.ai/docs/observability/logging) for level configuration, query examples, and customization details.
|
|
112
112
|
|
|
@@ -59,6 +59,8 @@ You can send a follow-up message in the same thread during an agent response str
|
|
|
59
59
|
|
|
60
60
|
Use [Editor](https://mastra.ai/docs/editor/overview) to let non-technical team members iterate on agents and version every change, plus run experiments without redeploying.
|
|
61
61
|
|
|
62
|
+
Use [Agent Builder](https://agent-builder.mastra.ai) to create and manage fully stored agents through a separate browser-based interface.
|
|
63
|
+
|
|
62
64
|
### Workflows
|
|
63
65
|
|
|
64
66
|
Visualize your workflow as a graph and run it step by step with a custom input. During execution, the interface updates in real time to show the active step and the path taken.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
Dynamic workflows are workflow definitions expressed as data instead of code. A definition is a JSON document that describes the workflow's schemas and step graph. Mastra validates the definition and registers it as a runnable workflow, then persists it in storage so it survives process restarts.
|
|
8
8
|
|
|
9
|
-
Because a definition contains no JavaScript closures, anything that
|
|
9
|
+
Because a definition contains no JavaScript closures, anything that produces JSON can author a workflow. Sources include an HTTP client or LLM. A visual editor or your own tooling can also produce the definition. Once registered, a dynamic workflow runs through the same execution API as a code-defined workflow.
|
|
10
10
|
|
|
11
11
|
## When to use dynamic workflows
|
|
12
12
|
|
|
@@ -161,7 +161,7 @@ Deploy targets such as Fly Machines, Railway, Render, AWS ECS, GKE, or your own
|
|
|
161
161
|
|
|
162
162
|
### Serverless platforms
|
|
163
163
|
|
|
164
|
-
Functions-as-a-service platforms such as Vercel, Netlify, AWS Lambda, and Cloudflare Workers shut the process down after each request
|
|
164
|
+
Functions-as-a-service platforms such as Vercel, Netlify, AWS Lambda, and Cloudflare Workers shut the process down after each request, so the tick loop doesn't get a second tick and schedules declared in code don't fire with the built-in scheduler today.
|
|
165
165
|
|
|
166
166
|
On these platforms, use [`@mastra/inngest`](#inngest-workflows) instead. Inngest is serverless-native and holds the cron state for you.
|
|
167
167
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Suspend and resume
|
|
4
4
|
|
|
5
|
-
Workflows can be paused at any step to collect additional data
|
|
5
|
+
Workflows can be paused at any step to collect additional data or wait for API callbacks. Pauses can also throttle costly operations or request [human-in-the-loop](https://mastra.ai/docs/workflows/human-in-the-loop) input. When a workflow is suspended, its current execution state is saved as a snapshot. You can later resume the workflow from a [specific step ID](https://mastra.ai/docs/workflows/snapshots), restoring the exact state captured in that snapshot. [Snapshots](https://mastra.ai/docs/workflows/snapshots) are stored in your configured storage provider and persist across deployments and application restarts.
|
|
6
6
|
|
|
7
7
|
## Pausing a workflow with `suspend()`
|
|
8
8
|
|
|
@@ -412,4 +412,5 @@ External providers may perform additional setup like establishing connections or
|
|
|
412
412
|
- [Skills](https://mastra.ai/docs/workspace/skills)
|
|
413
413
|
- [Search and indexing](https://mastra.ai/docs/workspace/search)
|
|
414
414
|
- [Workspace class reference](https://mastra.ai/reference/workspace/workspace-class)
|
|
415
|
-
- 📹 [Introduction to Mastra Workspaces workshop](https://www.youtube.com/watch?v=QcQLiYlJuNQ)
|
|
415
|
+
- 📹 [Introduction to Mastra Workspaces workshop](https://www.youtube.com/watch?v=QcQLiYlJuNQ)
|
|
416
|
+
- [Mastra Factory](https://factory.mastra.ai) and [Mastra Code](https://code.mastra.ai) are examples of workspace-powered coding agents
|
|
@@ -94,7 +94,7 @@ When the provider supports batching (for example, OpenAI's `embedMany`), pass an
|
|
|
94
94
|
The following example replaces the single-text embedder with a batched one. The embedder function takes an array and returns an array of embeddings in the same order, plus carries two extra properties:
|
|
95
95
|
|
|
96
96
|
- `batch: true`: marks the function as batch-capable. Without this property, Mastra calls it one text at a time.
|
|
97
|
-
- `maxBatchSize`: the largest array the provider accepts in one call. Mastra splits larger requests into chunks of this size and sends them in parallel. Set this to your provider's documented limit
|
|
97
|
+
- `maxBatchSize`: the largest array the provider accepts in one call. Mastra splits larger requests into chunks of this size and sends them in parallel. Set this to your provider's documented limit. For example, OpenAI accepts 2048 and Cohere accepts 96. Voyage accepts 128. Omit it to send every pending text in one request.
|
|
98
98
|
|
|
99
99
|
```typescript
|
|
100
100
|
import { Workspace, LocalFilesystem } from '@mastra/core/workspace'
|
|
@@ -136,7 +136,7 @@ When multiple skill directories contain a skill with the same name, all of them
|
|
|
136
136
|
When the agent activates a skill by name, tie-breaking determines which one is returned:
|
|
137
137
|
|
|
138
138
|
1. **Source-type priority**: local skills take precedence over managed (`.mastra/`) skills, which take precedence over external (`node_modules/`) skills.
|
|
139
|
-
2. **Unresolvable conflicts throw**: if two skills share the same name and the same source type (for example, two local skills both
|
|
139
|
+
2. **Unresolvable conflicts throw**: if two skills share the same name and the same source type (for example, two local skills that both use the name `brand-guidelines`), `get()` throws an error. Rename one or move it to a different source type to resolve the conflict.
|
|
140
140
|
3. **Path escape hatch**: the agent can pass a skill's full path instead of its name to activate a specific skill, bypassing tie-breaking entirely.
|
|
141
141
|
|
|
142
142
|
```typescript
|
|
@@ -88,7 +88,7 @@ AgentBrowser uses accessibility tree refs to identify elements. When an agent ca
|
|
|
88
88
|
|
|
89
89
|
## Recording
|
|
90
90
|
|
|
91
|
-
AgentBrowser can opt into
|
|
91
|
+
AgentBrowser can opt into Beta browser recording tools:
|
|
92
92
|
|
|
93
93
|
```typescript
|
|
94
94
|
const browser = new AgentBrowser({
|
|
@@ -99,12 +99,11 @@ const browser = new AgentBrowser({
|
|
|
99
99
|
})
|
|
100
100
|
```
|
|
101
101
|
|
|
102
|
-
This adds `browser_record` and `browser_record_caption` to the agent's toolset. See [Browser recording (
|
|
102
|
+
This adds `browser_record` and `browser_record_caption` to the agent's toolset. See [Browser recording (Beta)](https://mastra.ai/docs/browser/overview) for details. See [AgentBrowser reference](https://mastra.ai/reference/browser/agent-browser) for all configuration options and tool details.
|
|
103
103
|
|
|
104
104
|
## Related
|
|
105
105
|
|
|
106
106
|
- [Browser overview](https://mastra.ai/docs/browser/overview)
|
|
107
107
|
- [Stagehand](https://mastra.ai/integrations/browsers/stagehand)
|
|
108
108
|
- [Firecrawl](https://mastra.ai/integrations/browsers/firecrawl)
|
|
109
|
-
- [Browser recording (alpha)](https://mastra.ai/docs/browser/recording)
|
|
110
109
|
- [AgentBrowser reference](https://mastra.ai/reference/browser/agent-browser)
|
|
@@ -125,5 +125,4 @@ const browser = new FirecrawlBrowser({
|
|
|
125
125
|
|
|
126
126
|
- [Browser overview](https://mastra.ai/docs/browser/overview)
|
|
127
127
|
- [AgentBrowser](https://mastra.ai/integrations/browsers/agent-browser)
|
|
128
|
-
- [Browser recording (alpha)](https://mastra.ai/docs/browser/recording)
|
|
129
128
|
- [FirecrawlBrowser reference](https://mastra.ai/reference/browser/firecrawl-browser)
|
|
@@ -150,7 +150,7 @@ See [StagehandBrowser reference](https://mastra.ai/reference/browser/stagehand-b
|
|
|
150
150
|
|
|
151
151
|
## Recording
|
|
152
152
|
|
|
153
|
-
Stagehand can opt into
|
|
153
|
+
Stagehand can opt into Beta browser recording tools:
|
|
154
154
|
|
|
155
155
|
```typescript
|
|
156
156
|
const browser = new StagehandBrowser({
|
|
@@ -162,11 +162,10 @@ const browser = new StagehandBrowser({
|
|
|
162
162
|
})
|
|
163
163
|
```
|
|
164
164
|
|
|
165
|
-
This adds `browser_record` and `browser_record_caption` to the agent's toolset. See [Browser recording (
|
|
165
|
+
This adds `browser_record` and `browser_record_caption` to the agent's toolset. See [Browser recording (Beta)](https://mastra.ai/docs/browser/overview) for details.
|
|
166
166
|
|
|
167
167
|
## Related
|
|
168
168
|
|
|
169
169
|
- [Browser overview](https://mastra.ai/docs/browser/overview)
|
|
170
170
|
- [AgentBrowser](https://mastra.ai/integrations/browsers/agent-browser)
|
|
171
|
-
- [Browser recording (alpha)](https://mastra.ai/docs/browser/recording)
|
|
172
171
|
- [StagehandBrowser reference](https://mastra.ai/reference/browser/stagehand-browser)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# OpenRouter
|
|
4
4
|
|
|
5
|
-
OpenRouter aggregates models from multiple providers with enhanced features like rate limiting and failover. Access
|
|
5
|
+
OpenRouter aggregates models from multiple providers with enhanced features like rate limiting and failover. Access 348 models through Mastra's model router.
|
|
6
6
|
|
|
7
7
|
Learn more in the [OpenRouter documentation](https://openrouter.ai/models).
|
|
8
8
|
|
|
@@ -143,7 +143,6 @@ ANTHROPIC_API_KEY=ant-...
|
|
|
143
143
|
| `inclusionai/ling-2.6-1t` |
|
|
144
144
|
| `inclusionai/ling-2.6-flash` |
|
|
145
145
|
| `inclusionai/ling-3.0-flash` |
|
|
146
|
-
| `inclusionai/ling-3.0-tiny:free` |
|
|
147
146
|
| `inclusionai/ring-2.6-1t` |
|
|
148
147
|
| `kwaipilot/kat-coder-air-v2.5` |
|
|
149
148
|
| `kwaipilot/kat-coder-pro-v2` |
|
package/.docs/models/index.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Model Providers
|
|
4
4
|
|
|
5
|
-
Mastra provides a unified interface for working with LLMs across multiple providers, giving you access to
|
|
5
|
+
Mastra provides a unified interface for working with LLMs across multiple providers, giving you access to 5657 models from 171 providers through a single API.
|
|
6
6
|
|
|
7
7
|
## Features
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Kilo Gateway
|
|
4
4
|
|
|
5
|
-
Access
|
|
5
|
+
Access 356 Kilo Gateway models through Mastra's model router. Authentication is handled automatically using the `KILO_API_KEY` environment variable.
|
|
6
6
|
|
|
7
7
|
Learn more in the [Kilo Gateway documentation](https://kilo.ai).
|
|
8
8
|
|
|
@@ -58,7 +58,7 @@ for await (const chunk of stream) {
|
|
|
58
58
|
| `kilo/amazon/nova-micro-v1` | 128K | | | | | | $0.04 | $0.14 |
|
|
59
59
|
| `kilo/amazon/nova-premier-v1` | 1.0M | | | | | | $3 | $13 |
|
|
60
60
|
| `kilo/amazon/nova-pro-v1` | 300K | | | | | | $0.80 | $3 |
|
|
61
|
-
| `kilo/anthracite-org/magnum-v4-72b` |
|
|
61
|
+
| `kilo/anthracite-org/magnum-v4-72b` | 33K | | | | | | $3 | $5 |
|
|
62
62
|
| `kilo/anthropic/claude-3-haiku` | 200K | | | | | | $0.25 | $1 |
|
|
63
63
|
| `kilo/anthropic/claude-fable-5` | 1.0M | | | | | | $10 | $50 |
|
|
64
64
|
| `kilo/anthropic/claude-haiku-4.5` | 200K | | | | | | $1 | $5 |
|
|
@@ -143,7 +143,6 @@ for await (const chunk of stream) {
|
|
|
143
143
|
| `kilo/inclusionai/ling-2.6-1t` | 262K | | | | | | $0.30 | $3 |
|
|
144
144
|
| `kilo/inclusionai/ling-2.6-flash` | 262K | | | | | | $0.10 | $0.30 |
|
|
145
145
|
| `kilo/inclusionai/ling-3.0-flash` | 262K | | | | | | $0.06 | $0.18 |
|
|
146
|
-
| `kilo/inclusionai/ling-3.0-tiny:free` | 262K | | | | | | — | — |
|
|
147
146
|
| `kilo/inclusionai/ring-2.6-1t` | 262K | | | | | | $0.30 | $3 |
|
|
148
147
|
| `kilo/kilo-auto/balanced` | 1.0M | | | | | | $0.33 | $2 |
|
|
149
148
|
| `kilo/kilo-auto/efficient` | 1.0M | | | | | | $0.33 | $2 |
|
|
@@ -217,7 +216,7 @@ for await (const chunk of stream) {
|
|
|
217
216
|
| `kilo/nvidia/nemotron-3-ultra-550b-a55b` | 512K | | | | | | $0.50 | $2 |
|
|
218
217
|
| `kilo/nvidia/nemotron-3-ultra-550b-a55b:free` | 1.0M | | | | | | — | — |
|
|
219
218
|
| `kilo/nvidia/nemotron-3.5-content-safety:free` | 128K | | | | | | — | — |
|
|
220
|
-
| `kilo/nvidia/nemotron-3.5-lightning` | 262K | | | | | | $0.
|
|
219
|
+
| `kilo/nvidia/nemotron-3.5-lightning` | 262K | | | | | | $0.08 | $0.20 |
|
|
221
220
|
| `kilo/nvidia/nemotron-3.5-lightning:free` | 1.0M | | | | | | — | — |
|
|
222
221
|
| `kilo/openai/gpt-3.5-turbo` | 16K | | | | | | $0.50 | $2 |
|
|
223
222
|
| `kilo/openai/gpt-3.5-turbo-0613` | 4K | | | | | | $1 | $2 |
|
|
@@ -315,7 +314,7 @@ for await (const chunk of stream) {
|
|
|
315
314
|
| `kilo/qwen/qwen3-max` | 262K | | | | | | $0.78 | $4 |
|
|
316
315
|
| `kilo/qwen/qwen3-max-thinking` | 262K | | | | | | $0.78 | $4 |
|
|
317
316
|
| `kilo/qwen/qwen3-next-80b-a3b-instruct` | 262K | | | | | | $0.10 | $0.78 |
|
|
318
|
-
| `kilo/qwen/qwen3-next-80b-a3b-thinking` |
|
|
317
|
+
| `kilo/qwen/qwen3-next-80b-a3b-thinking` | 131K | | | | | | $0.15 | $1 |
|
|
319
318
|
| `kilo/qwen/qwen3-vl-235b-a22b-instruct` | 131K | | | | | | $0.26 | $1 |
|
|
320
319
|
| `kilo/qwen/qwen3-vl-235b-a22b-thinking` | 131K | | | | | | $0.40 | $4 |
|
|
321
320
|
| `kilo/qwen/qwen3-vl-30b-a3b-instruct` | 262K | | | | | | $0.13 | $0.52 |
|
|
@@ -384,14 +383,14 @@ for await (const chunk of stream) {
|
|
|
384
383
|
| `kilo/z-ai/glm-4.5` | 131K | | | | | | $0.60 | $2 |
|
|
385
384
|
| `kilo/z-ai/glm-4.5-air` | 131K | | | | | | $0.13 | $0.85 |
|
|
386
385
|
| `kilo/z-ai/glm-4.5v` | 66K | | | | | | $0.60 | $2 |
|
|
387
|
-
| `kilo/z-ai/glm-4.6` |
|
|
386
|
+
| `kilo/z-ai/glm-4.6` | 203K | | | | | | $0.55 | $2 |
|
|
388
387
|
| `kilo/z-ai/glm-4.6v` | 131K | | | | | | $0.30 | $0.90 |
|
|
389
388
|
| `kilo/z-ai/glm-4.7` | 203K | | | | | | $0.60 | $2 |
|
|
390
389
|
| `kilo/z-ai/glm-4.7-flash` | 203K | | | | | | $0.07 | $0.40 |
|
|
391
390
|
| `kilo/z-ai/glm-5` | 205K | | | | | | $1 | $3 |
|
|
392
391
|
| `kilo/z-ai/glm-5-turbo` | 203K | | | | | | $1 | $4 |
|
|
393
392
|
| `kilo/z-ai/glm-5.1` | 203K | | | | | | $1 | $4 |
|
|
394
|
-
| `kilo/z-ai/glm-5.2` |
|
|
393
|
+
| `kilo/z-ai/glm-5.2` | 262K | | | | | | $1 | $4 |
|
|
395
394
|
| `kilo/z-ai/glm-5v-turbo` | 203K | | | | | | $1 | $4 |
|
|
396
395
|
|
|
397
396
|
## Advanced configuration
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# NanoGPT
|
|
4
4
|
|
|
5
|
-
Access
|
|
5
|
+
Access 599 NanoGPT models through Mastra's model router. Authentication is handled automatically using the `NANO_GPT_API_KEY` environment variable.
|
|
6
6
|
|
|
7
7
|
Learn more in the [NanoGPT documentation](https://docs.nano-gpt.com).
|
|
8
8
|
|
|
@@ -547,6 +547,7 @@ for await (const chunk of stream) {
|
|
|
547
547
|
| `nano-gpt/TEE/kimi-k3` | 1.0M | | | | | | $3 | $15 |
|
|
548
548
|
| `nano-gpt/TEE/llama3-3-70b` | 128K | | | | | | $2 | $3 |
|
|
549
549
|
| `nano-gpt/TEE/minimax-m2.5` | 197K | | | | | | $0.20 | $1 |
|
|
550
|
+
| `nano-gpt/TEE/muse-glimmer-30b` | 131K | | | | | | $0.35 | $2 |
|
|
550
551
|
| `nano-gpt/TEE/qwen2.5-vl-72b-instruct` | 66K | | | | | | $0.70 | $0.70 |
|
|
551
552
|
| `nano-gpt/TEE/qwen3.5-122b-a10b` | 262K | | | | | | $0.46 | $4 |
|
|
552
553
|
| `nano-gpt/TEE/qwen3.5-27b` | 262K | | | | | | $0.30 | $2 |
|
|
@@ -98,7 +98,7 @@ export const claudeCodeAgent = new AcpAgent({
|
|
|
98
98
|
|
|
99
99
|
#### `generate(messages, options?)`
|
|
100
100
|
|
|
101
|
-
Sends the prompt to the ACP agent
|
|
101
|
+
Sends the prompt to the ACP agent and buffers text chunks from the response before returning a Mastra subagent generate result.
|
|
102
102
|
|
|
103
103
|
```typescript
|
|
104
104
|
const result = await codeAgent.generate('Inspect the repository and summarize the test setup')
|
|
@@ -249,7 +249,7 @@ const usage = session.getTokenUsage()
|
|
|
249
249
|
|
|
250
250
|
## Identity
|
|
251
251
|
|
|
252
|
-
`session.identity` owns the stable identifiers for the conversation: the resource ID
|
|
252
|
+
`session.identity` owns the stable identifiers for the conversation: the resource ID and session `id`, plus an `ownerId`. The `id` and `ownerId` are stable for the life of the session and don't change when the resource ID is switched. They mirror the `id` and `ownerId` fields on `SessionRecord` in storage.
|
|
253
253
|
|
|
254
254
|
### `session.identity.getId()`
|
|
255
255
|
|
|
@@ -309,7 +309,7 @@ The `ResolveResourceIdContext` passed to the function:
|
|
|
309
309
|
|
|
310
310
|
## Thread ID resolution
|
|
311
311
|
|
|
312
|
-
By default a new channel thread gets a random UUID as its internal Mastra thread id. Pass `resolveThreadId` to pick the id yourself: for example, give the thread the same id as
|
|
312
|
+
By default a new channel thread gets a random UUID as its internal Mastra thread id. Pass `resolveThreadId` to pick the id yourself: for example, give the thread the same id as its session to match the names your app assigns to threads it creates.
|
|
313
313
|
|
|
314
314
|
The hook runs after `resolveResourceId`, so the resolved owner is available on the context. Like `resolveResourceId` it runs only when a new thread is created: reused threads keep their stored id and never call the hook. The returned id must be unique across the memory store. If it already belongs to an existing thread, Mastra logs a warning and uses a generated id instead so the existing thread is never overwritten. Return `ctx.defaultThreadId` to keep the built-in behavior.
|
|
315
315
|
|
|
@@ -121,7 +121,7 @@ Returns: [`Promise<InngestAgentStreamResult>`](#inngestagentstreamresult)
|
|
|
121
121
|
|
|
122
122
|
#### `resume(runId, resumeData, options?)`
|
|
123
123
|
|
|
124
|
-
Resumes a suspended Inngest run, for example after a tool approval. Loads the workflow snapshot from storage
|
|
124
|
+
Resumes a suspended Inngest run, for example after a tool approval. Loads the workflow snapshot from storage and finds the suspended step before sending a resume event to Inngest.
|
|
125
125
|
|
|
126
126
|
```typescript
|
|
127
127
|
const { output, cleanup } = await durableAgent.resume(
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# AI SDK
|
|
4
4
|
|
|
5
|
-
If you're already using the [Vercel AI SDK](https://sdk.vercel.ai) directly and want to add Mastra capabilities like [processors](https://mastra.ai/docs/agents/processors) or [memory](https://mastra.ai/docs/memory/memory-processors) without switching to the full Mastra agent API, [`withMastra()`](https://mastra.ai/reference/ai-sdk/with-mastra) lets you wrap any AI SDK model with these features. This is useful when you want to keep your existing AI SDK code but add input/output processing
|
|
5
|
+
If you're already using the [Vercel AI SDK](https://sdk.vercel.ai) directly and want to add Mastra capabilities like [processors](https://mastra.ai/docs/agents/processors) or [memory](https://mastra.ai/docs/memory/memory-processors) without switching to the full Mastra agent API, [`withMastra()`](https://mastra.ai/reference/ai-sdk/with-mastra) lets you wrap any AI SDK model with these features. This is useful when you want to keep your existing AI SDK code but add input/output processing and conversation persistence, including content filtering.
|
|
6
6
|
|
|
7
7
|
> **Tip:** If you want to use Mastra together with AI SDK UI (e.g. `useChat()`), visit the [AI SDK UI guide](https://mastra.ai/integrations/agentic-ui/ai-sdk-ui).
|
|
8
8
|
|
|
@@ -26,7 +26,7 @@ export const mastra = new Mastra({
|
|
|
26
26
|
|
|
27
27
|
**domain** (`string`): Your Auth0 domain (e.g., your-tenant.auth0.com). This is used to verify JWT tokens issued by your Auth0 tenant. (Default: `process.env.AUTH0_DOMAIN`)
|
|
28
28
|
|
|
29
|
-
**audience** (`string`): Your Auth0 API identifier/audience
|
|
29
|
+
**audience** (`string`): Your Auth0 API identifier/audience, which restricts tokens to your API. (Default: `process.env.AUTH0_AUDIENCE`)
|
|
30
30
|
|
|
31
31
|
**name** (`string`): Custom name for the auth provider instance. (Default: `"auth0"`)
|
|
32
32
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## MastraAuthGoogle class
|
|
6
6
|
|
|
7
|
-
The `MastraAuthGoogle` class provides authentication for Mastra using Google Workspace. It implements an OAuth 2.0 / OIDC login flow with encrypted session cookies
|
|
7
|
+
The `MastraAuthGoogle` class provides authentication for Mastra using Google Workspace. It implements an OAuth 2.0 / OIDC login flow with encrypted session cookies and verifies Google ID tokens. It integrates with the Mastra server through the `auth` option.
|
|
8
8
|
|
|
9
9
|
### Usage example
|
|
10
10
|
|
|
@@ -46,7 +46,7 @@ then interact with elements using their refs (e.g., @e5).`,
|
|
|
46
46
|
|
|
47
47
|
**screencast** (`ScreencastOptions`): Configuration for streaming browser frames to Studio.
|
|
48
48
|
|
|
49
|
-
**recording** (`BrowserRecordingOptions`):
|
|
49
|
+
**recording** (`BrowserRecordingOptions`): Beta option for adding browser recording tools. Provide outputDir to add browser\_record and browser\_record\_caption to the toolset. You can also set maxDurationMs, maxWidth, and maxHeight as defaults for every recording.
|
|
50
50
|
|
|
51
51
|
**excludeTools** (`BrowserToolName[]`): Tool names to exclude from the browser toolset. Use this to disable specific tools for models that do not support certain capabilities, such as vision.
|
|
52
52
|
|
|
@@ -54,7 +54,7 @@ then interact with elements using their refs (e.g., @e5).`,
|
|
|
54
54
|
|
|
55
55
|
`AgentBrowser` provides 16 deterministic tools for browser automation. All tools that interact with elements use refs from the accessibility tree snapshot.
|
|
56
56
|
|
|
57
|
-
When `recording` is configured, `AgentBrowser` also adds the
|
|
57
|
+
When `recording` is configured, `AgentBrowser` also adds the Beta `browser_record` and `browser_record_caption` tools. See [Browser recording (Beta)](https://mastra.ai/docs/browser/overview).
|
|
58
58
|
|
|
59
59
|
### Core tools
|
|
60
60
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# BrowserViewer
|
|
4
4
|
|
|
5
|
-
The `BrowserViewer` class provides browser automation for CLI-based tools. It launches Chrome
|
|
5
|
+
The `BrowserViewer` class provides browser automation for CLI-based tools. It launches Chrome through Playwright and exposes a Chrome DevTools Protocol (CDP) URL. It automatically injects that URL into CLI commands run through workspace tools.
|
|
6
6
|
|
|
7
7
|
Use `BrowserViewer` when your agent drives a browser through a CLI tool like `browser-use`, `agent-browser`, or `browse`. For SDK-based browser automation, use [`AgentBrowser`](https://mastra.ai/reference/browser/agent-browser) or [`StagehandBrowser`](https://mastra.ai/reference/browser/stagehand-browser).
|
|
8
8
|
|
|
@@ -63,7 +63,7 @@ Use stagehand_extract to get data from pages.`,
|
|
|
63
63
|
|
|
64
64
|
**screencast** (`ScreencastOptions`): Configuration for streaming browser frames to Studio.
|
|
65
65
|
|
|
66
|
-
**recording** (`BrowserRecordingOptions`):
|
|
66
|
+
**recording** (`BrowserRecordingOptions`): Beta option for adding browser recording tools. Provide outputDir to add browser\_record and browser\_record\_caption to the toolset. You can also set maxDurationMs, maxWidth, and maxHeight as defaults for every recording.
|
|
67
67
|
|
|
68
68
|
**excludeTools** (`StagehandToolName[]`): Tool names to exclude from the browser toolset. Use this to disable specific tools for models that do not support certain capabilities, such as vision.
|
|
69
69
|
|
|
@@ -71,7 +71,7 @@ Use stagehand_extract to get data from pages.`,
|
|
|
71
71
|
|
|
72
72
|
`StagehandBrowser` provides 7 AI-powered tools for browser automation.
|
|
73
73
|
|
|
74
|
-
When `recording` is configured, `StagehandBrowser` also adds the
|
|
74
|
+
When `recording` is configured, `StagehandBrowser` also adds the Beta `browser_record` and `browser_record_caption` tools. See [Browser recording (Beta)](https://mastra.ai/docs/browser/overview).
|
|
75
75
|
|
|
76
76
|
Core tools:
|
|
77
77
|
|