@mastra/mcp-docs-server 1.0.0-beta.11 → 1.0.0-beta.13
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/organized/changelogs/%40mastra%2Fagent-builder.md +12 -12
- package/.docs/organized/changelogs/%40mastra%2Fai-sdk.md +24 -24
- package/.docs/organized/changelogs/%40mastra%2Fclickhouse.md +45 -45
- package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +83 -83
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare-d1.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Fconvex.md +38 -0
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +174 -174
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +27 -27
- package/.docs/organized/changelogs/%40mastra%2Fdynamodb.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Ffastembed.md +6 -0
- package/.docs/organized/changelogs/%40mastra%2Flance.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Flibsql.md +45 -45
- package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +15 -15
- package/.docs/organized/changelogs/%40mastra%2Fmemory.md +13 -13
- package/.docs/organized/changelogs/%40mastra%2Fmongodb.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Fmssql.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Fpg.md +45 -45
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +75 -75
- package/.docs/organized/changelogs/%40mastra%2Freact.md +40 -0
- package/.docs/organized/changelogs/%40mastra%2Fschema-compat.md +6 -0
- package/.docs/organized/changelogs/%40mastra%2Fserver.md +29 -29
- package/.docs/organized/changelogs/%40mastra%2Fupstash.md +39 -39
- package/.docs/organized/changelogs/create-mastra.md +29 -29
- package/.docs/organized/changelogs/mastra.md +35 -35
- package/.docs/organized/code-examples/quick-start.md +0 -4
- package/.docs/organized/code-examples/stock-price-tool.md +21 -2
- package/.docs/raw/agents/agent-approval.mdx +136 -2
- package/.docs/raw/agents/agent-memory.mdx +4 -4
- package/.docs/raw/agents/guardrails.mdx +1 -1
- package/.docs/raw/agents/networks.mdx +1 -1
- package/.docs/raw/agents/overview.mdx +2 -2
- package/.docs/raw/agents/using-tools.mdx +1 -1
- package/.docs/raw/course/01-first-agent/07-creating-your-agent.md +1 -2
- package/.docs/raw/course/01-first-agent/12-connecting-tool-to-agent.md +1 -1
- package/.docs/raw/course/01-first-agent/16-adding-memory-to-agent.md +1 -2
- package/.docs/raw/course/02-agent-tools-mcp/05-updating-your-agent.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/10-updating-agent-instructions-zapier.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/16-updating-agent-instructions-github.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/21-updating-agent-instructions-hackernews.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/27-updating-agent-instructions-filesystem.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/31-enhancing-memory-configuration.md +2 -2
- package/.docs/raw/course/03-agent-memory/04-creating-basic-memory-agent.md +1 -2
- package/.docs/raw/course/03-agent-memory/08-configuring-conversation-history.md +1 -2
- package/.docs/raw/course/03-agent-memory/16-configuring-semantic-recall.md +3 -4
- package/.docs/raw/course/03-agent-memory/21-configuring-working-memory.md +2 -3
- package/.docs/raw/course/03-agent-memory/22-custom-working-memory-templates.md +2 -3
- package/.docs/raw/course/03-agent-memory/25-combining-memory-features.md +1 -2
- package/.docs/raw/course/03-agent-memory/27-creating-learning-assistant.md +2 -3
- package/.docs/raw/course/04-workflows/11-creating-an-ai-agent.md +2 -3
- package/.docs/raw/deployment/cloud-providers.mdx +20 -0
- package/.docs/raw/deployment/{building-mastra.mdx → mastra-server.mdx} +2 -2
- package/.docs/raw/deployment/monorepo.mdx +23 -44
- package/.docs/raw/deployment/overview.mdx +28 -53
- package/.docs/raw/deployment/web-framework.mdx +12 -14
- package/.docs/raw/getting-started/start.mdx +10 -1
- package/.docs/raw/getting-started/studio.mdx +1 -1
- package/.docs/raw/guides/build-your-ui/ai-sdk-ui.mdx +1021 -67
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/aws-lambda.mdx +3 -6
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/azure-app-services.mdx +4 -6
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/cloudflare-deployer.mdx +4 -0
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/digital-ocean.mdx +3 -6
- package/.docs/raw/guides/deployment/index.mdx +32 -0
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/netlify-deployer.mdx +4 -0
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/vercel-deployer.mdx +4 -0
- package/.docs/raw/guides/getting-started/express.mdx +71 -152
- package/.docs/raw/guides/getting-started/hono.mdx +227 -0
- package/.docs/raw/guides/getting-started/next-js.mdx +173 -63
- package/.docs/raw/guides/getting-started/vite-react.mdx +307 -137
- package/.docs/raw/guides/guide/research-assistant.mdx +4 -4
- package/.docs/raw/guides/migrations/upgrade-to-v1/client.mdx +17 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/overview.mdx +6 -0
- package/.docs/raw/index.mdx +1 -1
- package/.docs/raw/{deployment/mastra-cloud → mastra-cloud}/dashboard.mdx +2 -6
- package/.docs/raw/{deployment/mastra-cloud → mastra-cloud}/observability.mdx +1 -5
- package/.docs/raw/{deployment/mastra-cloud → mastra-cloud}/overview.mdx +2 -6
- package/.docs/raw/{deployment/mastra-cloud → mastra-cloud}/setting-up.mdx +3 -6
- package/.docs/raw/memory/overview.mdx +1 -1
- package/.docs/raw/memory/storage/memory-with-libsql.mdx +1 -1
- package/.docs/raw/memory/storage/memory-with-mongodb.mdx +1 -1
- package/.docs/raw/memory/storage/memory-with-pg.mdx +1 -1
- package/.docs/raw/memory/storage/memory-with-upstash.mdx +1 -1
- package/.docs/raw/{server-db/storage.mdx → memory/storage/overview.mdx} +2 -2
- package/.docs/raw/observability/logging.mdx +1 -1
- package/.docs/raw/observability/tracing/exporters/cloud.mdx +1 -1
- package/.docs/raw/observability/tracing/exporters/default.mdx +1 -1
- package/.docs/raw/rag/chunking-and-embedding.mdx +12 -25
- package/.docs/raw/rag/graph-rag.mdx +220 -0
- package/.docs/raw/rag/overview.mdx +1 -2
- package/.docs/raw/rag/retrieval.mdx +13 -29
- package/.docs/raw/rag/vector-databases.mdx +7 -3
- package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +1 -1
- package/.docs/raw/reference/agents/getDefaultOptions.mdx +1 -1
- package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +1 -1
- package/.docs/raw/reference/agents/getInstructions.mdx +1 -1
- package/.docs/raw/reference/agents/getLLM.mdx +1 -1
- package/.docs/raw/reference/agents/getMemory.mdx +1 -1
- package/.docs/raw/reference/agents/getModel.mdx +1 -1
- package/.docs/raw/reference/agents/listScorers.mdx +1 -1
- package/.docs/raw/reference/ai-sdk/chat-route.mdx +1 -1
- package/.docs/raw/reference/ai-sdk/handle-chat-stream.mdx +1 -1
- package/.docs/raw/reference/ai-sdk/handle-network-stream.mdx +1 -1
- package/.docs/raw/reference/ai-sdk/handle-workflow-stream.mdx +1 -1
- package/.docs/raw/reference/ai-sdk/network-route.mdx +1 -1
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-v4-messages.mdx +127 -0
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-v5-messages.mdx +107 -0
- package/.docs/raw/reference/ai-sdk/workflow-route.mdx +1 -1
- package/.docs/raw/reference/auth/auth0.mdx +1 -1
- package/.docs/raw/reference/auth/clerk.mdx +1 -1
- package/.docs/raw/reference/auth/firebase.mdx +1 -1
- package/.docs/raw/reference/auth/jwt.mdx +1 -1
- package/.docs/raw/reference/auth/supabase.mdx +1 -1
- package/.docs/raw/reference/auth/workos.mdx +1 -1
- package/.docs/raw/reference/cli/mastra.mdx +1 -1
- package/.docs/raw/reference/client-js/mastra-client.mdx +1 -1
- package/.docs/raw/reference/client-js/workflows.mdx +20 -0
- package/.docs/raw/reference/core/getServer.mdx +2 -2
- package/.docs/raw/reference/core/getStorage.mdx +1 -1
- package/.docs/raw/reference/core/getStoredAgentById.mdx +1 -1
- package/.docs/raw/reference/core/listStoredAgents.mdx +1 -1
- package/.docs/raw/reference/core/setStorage.mdx +1 -1
- package/.docs/raw/reference/logging/pino-logger.mdx +1 -1
- package/.docs/raw/reference/rag/database-config.mdx +1 -1
- package/.docs/raw/reference/server/create-route.mdx +1 -1
- package/.docs/raw/reference/server/express-adapter.mdx +4 -4
- package/.docs/raw/reference/server/hono-adapter.mdx +4 -4
- package/.docs/raw/reference/server/mastra-server.mdx +2 -2
- package/.docs/raw/reference/server/routes.mdx +28 -1
- package/.docs/raw/reference/streaming/agents/stream.mdx +22 -0
- package/.docs/raw/reference/streaming/workflows/stream.mdx +33 -20
- package/.docs/raw/reference/tools/create-tool.mdx +23 -1
- package/.docs/raw/reference/tools/graph-rag-tool.mdx +3 -3
- package/.docs/raw/reference/tools/vector-query-tool.mdx +3 -3
- package/.docs/raw/reference/workflows/run-methods/startAsync.mdx +143 -0
- package/.docs/raw/reference/workflows/workflow-methods/create-run.mdx +35 -0
- package/.docs/raw/reference/workflows/workflow.mdx +14 -0
- package/.docs/raw/{auth → server/auth}/auth0.mdx +1 -1
- package/.docs/raw/{auth → server/auth}/clerk.mdx +1 -1
- package/.docs/raw/{auth → server/auth}/firebase.mdx +1 -1
- package/.docs/raw/{auth → server/auth}/index.mdx +6 -6
- package/.docs/raw/{auth → server/auth}/jwt.mdx +1 -1
- package/.docs/raw/{auth → server/auth}/supabase.mdx +1 -1
- package/.docs/raw/{auth → server/auth}/workos.mdx +1 -1
- package/.docs/raw/{server-db → server}/custom-adapters.mdx +3 -3
- package/.docs/raw/{server-db → server}/custom-api-routes.mdx +1 -1
- package/.docs/raw/{server-db → server}/mastra-client.mdx +2 -2
- package/.docs/raw/{server-db → server}/mastra-server.mdx +5 -5
- package/.docs/raw/{server-db → server}/middleware.mdx +2 -2
- package/.docs/raw/{server-db → server}/request-context.mdx +3 -3
- package/.docs/raw/{server-db → server}/server-adapters.mdx +6 -6
- package/.docs/raw/tools-mcp/overview.mdx +2 -2
- package/.docs/raw/workflows/error-handling.mdx +162 -1
- package/.docs/raw/workflows/overview.mdx +2 -2
- package/CHANGELOG.md +14 -0
- package/package.json +3 -3
- package/.docs/organized/changelogs/%40internal%2Fai-sdk-v4.md +0 -1
- package/.docs/raw/deployment/cloud-providers/index.mdx +0 -55
- /package/.docs/raw/{deployment/cloud-providers → guides/deployment}/amazon-ec2.mdx +0 -0
|
@@ -3,6 +3,9 @@ title: "Next.js | Frameworks"
|
|
|
3
3
|
description: "Get started with Mastra and Next.js"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
import Tabs from "@theme/Tabs";
|
|
7
|
+
import TabItem from "@theme/TabItem";
|
|
8
|
+
|
|
6
9
|
# Integrate Mastra in your Next.js project
|
|
7
10
|
|
|
8
11
|
In this guide, you'll build a tool-calling AI agent using Mastra, then connect it to Next.js by importing and calling the agent directly from your routes.
|
|
@@ -16,7 +19,8 @@ You'll use [AI SDK UI](https://ai-sdk.dev/docs/ai-sdk-ui/overview) and [AI Eleme
|
|
|
16
19
|
|
|
17
20
|
## Before you begin
|
|
18
21
|
|
|
19
|
-
|
|
22
|
+
- You'll need an API key from a supported [model provider](/models/v1). If you don't have a preference, use [OpenAI](/models/v1/providers/openai).
|
|
23
|
+
- Install Node.js `v22.13.0` or later
|
|
20
24
|
|
|
21
25
|
## Create a new Next.js app (optional)
|
|
22
26
|
|
|
@@ -24,31 +28,80 @@ If you already have a Next.js app, skip to the next step.
|
|
|
24
28
|
|
|
25
29
|
Run the following command to [create a new Next.js app](https://nextjs.org/docs/app/getting-started/installation):
|
|
26
30
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
31
|
+
<Tabs groupId="pm">
|
|
32
|
+
<TabItem value="npm" label="npm">
|
|
33
|
+
|
|
34
|
+
```bash copy
|
|
35
|
+
npx create-next-app@latest my-nextjs-agent --yes --ts --eslint --tailwind --src-dir --app --turbopack --no-react-compiler --no-import-alias
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
</TabItem>
|
|
39
|
+
<TabItem value="pnpm" label="pnpm">
|
|
40
|
+
|
|
41
|
+
```bash copy
|
|
42
|
+
pnpm create next-app@latest my-nextjs-agent --yes --ts --eslint --tailwind --src-dir --app --turbopack --no-react-compiler --no-import-alias
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
</TabItem>
|
|
46
|
+
<TabItem value="yarn" label="yarn">
|
|
47
|
+
|
|
48
|
+
```bash copy
|
|
49
|
+
yarn create next-app@latest my-nextjs-agent --yes --ts --eslint --tailwind --src-dir --app --turbopack --no-react-compiler --no-import-alias
|
|
39
50
|
```
|
|
40
51
|
|
|
52
|
+
</TabItem>
|
|
53
|
+
<TabItem value="bun" label="bun">
|
|
54
|
+
|
|
55
|
+
```bash copy
|
|
56
|
+
bun create next-app@latest my-nextjs-agent --yes --ts --eslint --tailwind --src-dir --app --turbopack --no-react-compiler --no-import-alias
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
</TabItem>
|
|
60
|
+
</Tabs>
|
|
61
|
+
|
|
41
62
|
This creates a project called `my-nextjs-agent`, but you can replace it with any name you want.
|
|
42
63
|
|
|
43
64
|
## Initialize Mastra
|
|
44
|
-
|
|
65
|
+
|
|
66
|
+
`cd` into your Next.js project and run [`mastra init`](/reference/v1/cli/mastra#mastra-init).
|
|
45
67
|
|
|
46
68
|
When prompted, choose a provider (e.g. OpenAI) and enter your key:
|
|
47
69
|
|
|
48
|
-
|
|
70
|
+
<Tabs groupId="pm">
|
|
71
|
+
<TabItem value="npm" label="npm">
|
|
72
|
+
|
|
73
|
+
```bash copy
|
|
49
74
|
cd my-nextjs-agent
|
|
50
75
|
npx --force mastra@beta init
|
|
51
76
|
```
|
|
77
|
+
|
|
78
|
+
</TabItem>
|
|
79
|
+
<TabItem value="pnpm" label="pnpm">
|
|
80
|
+
|
|
81
|
+
```bash copy
|
|
82
|
+
cd my-nextjs-agent
|
|
83
|
+
pnpm dlx mastra@beta init
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
</TabItem>
|
|
87
|
+
<TabItem value="yarn" label="yarn">
|
|
88
|
+
|
|
89
|
+
```bash copy
|
|
90
|
+
cd my-nextjs-agent
|
|
91
|
+
yarn dlx mastra@beta init
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
</TabItem>
|
|
95
|
+
<TabItem value="bun" label="bun">
|
|
96
|
+
|
|
97
|
+
```bash copy
|
|
98
|
+
cd my-nextjs-agent
|
|
99
|
+
bunx mastra@beta init
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
</TabItem>
|
|
103
|
+
</Tabs>
|
|
104
|
+
|
|
52
105
|
This creates a `src/mastra` folder with an example weather agent and the following files:
|
|
53
106
|
|
|
54
107
|
- `index.ts` - Mastra config, including memory
|
|
@@ -57,65 +110,123 @@ This creates a `src/mastra` folder with an example weather agent and the followi
|
|
|
57
110
|
|
|
58
111
|
You'll call `weather-agent.ts` from your Next.js routes in the next steps.
|
|
59
112
|
|
|
113
|
+
## Install AI SDK UI & AI Elements
|
|
60
114
|
|
|
61
|
-
|
|
115
|
+
Install AI SDK UI along with the Mastra adapter:
|
|
62
116
|
|
|
63
|
-
|
|
117
|
+
<Tabs groupId="pm">
|
|
118
|
+
<TabItem value="npm" label="npm">
|
|
64
119
|
|
|
65
|
-
```bash
|
|
66
|
-
npm install
|
|
67
|
-
@mastra/ai-sdk \
|
|
68
|
-
@ai-sdk/react \
|
|
69
|
-
ai
|
|
120
|
+
```bash copy
|
|
121
|
+
npm install @mastra/ai-sdk@beta @ai-sdk/react ai
|
|
70
122
|
```
|
|
71
123
|
|
|
124
|
+
</TabItem>
|
|
125
|
+
<TabItem value="pnpm" label="pnpm">
|
|
126
|
+
|
|
127
|
+
```bash copy
|
|
128
|
+
pnpm add @mastra/ai-sdk@beta @ai-sdk/react ai
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
</TabItem>
|
|
132
|
+
<TabItem value="yarn" label="yarn">
|
|
133
|
+
|
|
134
|
+
```bash copy
|
|
135
|
+
yarn add @mastra/ai-sdk@beta @ai-sdk/react ai
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
</TabItem>
|
|
139
|
+
<TabItem value="bun" label="bun">
|
|
140
|
+
|
|
141
|
+
```bash copy
|
|
142
|
+
bun add @mastra/ai-sdk@beta @ai-sdk/react ai
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
</TabItem>
|
|
146
|
+
</Tabs>
|
|
147
|
+
|
|
72
148
|
Next, initialize AI Elements. When prompted, choose the default options:
|
|
73
149
|
|
|
74
|
-
|
|
150
|
+
<Tabs groupId="pm">
|
|
151
|
+
<TabItem value="npm" label="npm">
|
|
152
|
+
|
|
153
|
+
```bash copy
|
|
75
154
|
npx ai-elements@latest
|
|
76
155
|
```
|
|
77
156
|
|
|
78
|
-
|
|
157
|
+
</TabItem>
|
|
158
|
+
<TabItem value="pnpm" label="pnpm">
|
|
159
|
+
|
|
160
|
+
```bash copy
|
|
161
|
+
pnpm dlx ai-elements@latest
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
</TabItem>
|
|
165
|
+
<TabItem value="yarn" label="yarn">
|
|
79
166
|
|
|
167
|
+
```bash copy
|
|
168
|
+
yarn dlx ai-elements@latest
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
</TabItem>
|
|
172
|
+
<TabItem value="bun" label="bun">
|
|
173
|
+
|
|
174
|
+
```bash copy
|
|
175
|
+
bunx ai-elements@latest
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
</TabItem>
|
|
179
|
+
</Tabs>
|
|
180
|
+
|
|
181
|
+
This downloads the entire AI Elements UI component library into a `@/components/ai-elements` folder.
|
|
80
182
|
|
|
81
183
|
## Create a chat route
|
|
82
184
|
|
|
83
185
|
Create `src/app/api/chat/route.ts`:
|
|
84
186
|
|
|
85
187
|
```ts title="src/app/api/chat/route.ts"
|
|
86
|
-
import {
|
|
87
|
-
import {
|
|
88
|
-
import {
|
|
89
|
-
import {
|
|
90
|
-
import {
|
|
188
|
+
import { handleChatStream } from '@mastra/ai-sdk';
|
|
189
|
+
import { toAISdkV5Messages } from '@mastra/ai-sdk/ui'
|
|
190
|
+
import { createUIMessageStreamResponse } from 'ai';
|
|
191
|
+
import { mastra } from '@/mastra';
|
|
192
|
+
import { NextResponse } from 'next/server';
|
|
91
193
|
|
|
92
|
-
const
|
|
194
|
+
const THREAD_ID = 'example-user-id';
|
|
195
|
+
const RESOURCE_ID = 'weather-chat';
|
|
93
196
|
|
|
94
197
|
export async function POST(req: Request) {
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
198
|
+
const params = await req.json();
|
|
199
|
+
const stream = await handleChatStream({
|
|
200
|
+
mastra,
|
|
201
|
+
agentId: 'weatherAgent',
|
|
202
|
+
params: {
|
|
203
|
+
...params,
|
|
204
|
+
memory: {
|
|
205
|
+
...params.memory,
|
|
206
|
+
thread: THREAD_ID,
|
|
207
|
+
resource: RESOURCE_ID,
|
|
208
|
+
}
|
|
101
209
|
},
|
|
102
210
|
});
|
|
103
|
-
|
|
104
|
-
return createUIMessageStreamResponse({
|
|
105
|
-
stream: toAISdkStream(stream, { from: "agent" }),
|
|
106
|
-
})
|
|
211
|
+
return createUIMessageStreamResponse({ stream });
|
|
107
212
|
}
|
|
108
213
|
|
|
109
214
|
export async function GET() {
|
|
110
|
-
const memory = await weatherAgent.getMemory()
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
215
|
+
const memory = await mastra.getAgent('weatherAgent').getMemory()
|
|
216
|
+
let response = null
|
|
217
|
+
|
|
218
|
+
try {
|
|
219
|
+
response = await memory?.recall({
|
|
220
|
+
threadId: THREAD_ID,
|
|
221
|
+
resourceId: RESOURCE_ID,
|
|
222
|
+
})
|
|
223
|
+
} catch {
|
|
224
|
+
console.log('No previous messages found.')
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
const uiMessages = toAISdkV5Messages(response?.messages || []);
|
|
228
|
+
|
|
229
|
+
return NextResponse.json(uiMessages)
|
|
119
230
|
}
|
|
120
231
|
```
|
|
121
232
|
|
|
@@ -130,7 +241,7 @@ Create `src/app/chat/page.tsx`:
|
|
|
130
241
|
|
|
131
242
|
import '@/app/globals.css';
|
|
132
243
|
import { useEffect, useState } from 'react';
|
|
133
|
-
import { DefaultChatTransport } from 'ai';
|
|
244
|
+
import { DefaultChatTransport, ToolUIPart } from 'ai';
|
|
134
245
|
import { useChat } from '@ai-sdk/react';
|
|
135
246
|
|
|
136
247
|
import {
|
|
@@ -186,9 +297,9 @@ function Chat() {
|
|
|
186
297
|
<div className="flex flex-col h-full">
|
|
187
298
|
<Conversation className="h-full">
|
|
188
299
|
<ConversationContent>
|
|
189
|
-
{messages.map((message
|
|
300
|
+
{messages.map((message) => (
|
|
190
301
|
<div key={message.id}>
|
|
191
|
-
{message.parts?.map((part
|
|
302
|
+
{message.parts?.map((part, i) => {
|
|
192
303
|
if (part.type === 'text') {
|
|
193
304
|
return (
|
|
194
305
|
<Message
|
|
@@ -205,15 +316,15 @@ function Chat() {
|
|
|
205
316
|
return (
|
|
206
317
|
<Tool key={`${message.id}-${i}`}>
|
|
207
318
|
<ToolHeader
|
|
208
|
-
type={part.type}
|
|
209
|
-
state={part.state || 'output-available'}
|
|
319
|
+
type={(part as ToolUIPart).type}
|
|
320
|
+
state={(part as ToolUIPart).state || 'output-available'}
|
|
210
321
|
className="cursor-pointer"
|
|
211
322
|
/>
|
|
212
323
|
<ToolContent>
|
|
213
|
-
<ToolInput input={part
|
|
324
|
+
<ToolInput input={(part as ToolUIPart).input || {}} />
|
|
214
325
|
<ToolOutput
|
|
215
|
-
output={part
|
|
216
|
-
errorText={part
|
|
326
|
+
output={(part as ToolUIPart).output}
|
|
327
|
+
errorText={(part as ToolUIPart).errorText}
|
|
217
328
|
/>
|
|
218
329
|
</ToolContent>
|
|
219
330
|
</Tool>
|
|
@@ -231,7 +342,7 @@ function Chat() {
|
|
|
231
342
|
<PromptInput onSubmit={handleSubmit} className="mt-20">
|
|
232
343
|
<PromptInputBody>
|
|
233
344
|
<PromptInputTextarea
|
|
234
|
-
onChange={(e
|
|
345
|
+
onChange={(e) => setInput(e.target.value)}
|
|
235
346
|
className="md:leading-10"
|
|
236
347
|
value={input}
|
|
237
348
|
placeholder="Type your message..."
|
|
@@ -253,10 +364,9 @@ It renders the response text using the [`<MessageResponse>`](https://ai-sdk.dev/
|
|
|
253
364
|
|
|
254
365
|
|
|
255
366
|
## Test your agent
|
|
256
|
-
1. Run your Next.js app with `npm run dev`
|
|
257
367
|
|
|
368
|
+
1. Run your Next.js app with `npm run dev`
|
|
258
369
|
2. Open the chat at http://localhost:3000/chat
|
|
259
|
-
|
|
260
370
|
3. Try asking about the weather. If your API key is set up correctly, you'll get a response
|
|
261
371
|
|
|
262
372
|
## Next steps
|
|
@@ -269,8 +379,8 @@ From here, you can extend the project with your own tools and logic:
|
|
|
269
379
|
- Give your agent its own [tools](/docs/v1/agents/using-tools)
|
|
270
380
|
- Add human-like [memory](/docs/v1/agents/agent-memory) to your agent
|
|
271
381
|
|
|
272
|
-
When you're ready, read more about how Mastra integrates with AI SDK and Next.js, and how to deploy your agent anywhere, including Vercel:
|
|
382
|
+
When you're ready, read more about how Mastra integrates with AI SDK UI and Next.js, and how to deploy your agent anywhere, including Vercel:
|
|
273
383
|
|
|
274
|
-
- Integrate Mastra with [AI SDK](/guides/v1/build-your-ui/ai-sdk-ui)
|
|
275
|
-
- Deploy your agent to [Vercel](/
|
|
384
|
+
- Integrate Mastra with [AI SDK UI](/guides/v1/build-your-ui/ai-sdk-ui)
|
|
385
|
+
- Deploy your agent to [Vercel](/guides/v1/deployment/vercel-deployer)
|
|
276
386
|
- Deploy your agent [anywhere](/docs/v1/deployment/overview)
|