@mastra/lance 0.0.0-vnext-20251104230439 → 0.0.0-vnext-20251119160359
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/CHANGELOG.md +294 -3
- package/README.md +61 -4
- package/dist/index.cjs +20 -80
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +21 -81
- package/dist/index.js.map +1 -1
- package/dist/storage/domains/memory/index.d.ts +1 -4
- package/dist/storage/domains/memory/index.d.ts.map +1 -1
- package/dist/storage/domains/workflows/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +7 -8
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/vector/index.d.ts +3 -1
- package/dist/vector/index.d.ts.map +1 -1
- package/package.json +13 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
# @mastra/lance
|
|
2
2
|
|
|
3
|
-
## 0.0.0-vnext-
|
|
3
|
+
## 0.0.0-vnext-20251119160359
|
|
4
4
|
|
|
5
5
|
### Major Changes
|
|
6
6
|
|
|
7
7
|
- Moving scorers under the eval domain, api method consistency, prebuilt evals, scorers require ids. ([#9589](https://github.com/mastra-ai/mastra/pull/9589))
|
|
8
8
|
|
|
9
|
+
- Every Mastra primitive (agent, MCPServer, workflow, tool, processor, scorer, and vector) now has a get, list, and add method associated with it. Each primitive also now requires an id to be set. ([#9675](https://github.com/mastra-ai/mastra/pull/9675))
|
|
10
|
+
|
|
11
|
+
Primitives that are added to other primitives are also automatically added to the Mastra instance
|
|
12
|
+
|
|
9
13
|
- Update handlers to use `listWorkflowRuns` instead of `getWorkflowRuns`. Fix type names from `StoragelistThreadsByResourceIdInput/Output` to `StorageListThreadsByResourceIdInput/Output`. ([#9507](https://github.com/mastra-ai/mastra/pull/9507))
|
|
10
14
|
|
|
11
15
|
- **BREAKING:** Remove `getMessagesPaginated()` and add `perPage: false` support ([#9670](https://github.com/mastra-ai/mastra/pull/9670))
|
|
@@ -43,6 +47,293 @@
|
|
|
43
47
|
+ thread.listMessages({ page: 0, perPage: 20 })
|
|
44
48
|
```
|
|
45
49
|
|
|
50
|
+
- # Major Changes ([#9695](https://github.com/mastra-ai/mastra/pull/9695))
|
|
51
|
+
|
|
52
|
+
## Storage Layer
|
|
53
|
+
|
|
54
|
+
### BREAKING: Removed `storage.getMessages()`
|
|
55
|
+
|
|
56
|
+
The `getMessages()` method has been removed from all storage implementations. Use `listMessages()` instead, which provides pagination support.
|
|
57
|
+
|
|
58
|
+
**Migration:**
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
// Before
|
|
62
|
+
const messages = await storage.getMessages({ threadId: 'thread-1' });
|
|
63
|
+
|
|
64
|
+
// After
|
|
65
|
+
const result = await storage.listMessages({
|
|
66
|
+
threadId: 'thread-1',
|
|
67
|
+
page: 0,
|
|
68
|
+
perPage: 50,
|
|
69
|
+
});
|
|
70
|
+
const messages = result.messages; // Access messages array
|
|
71
|
+
console.log(result.total); // Total count
|
|
72
|
+
console.log(result.hasMore); // Whether more pages exist
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Message ordering default
|
|
76
|
+
|
|
77
|
+
`listMessages()` defaults to ASC (oldest first) ordering by `createdAt`, matching the previous `getMessages()` behavior.
|
|
78
|
+
|
|
79
|
+
**To use DESC ordering (newest first):**
|
|
80
|
+
|
|
81
|
+
```typescript
|
|
82
|
+
const result = await storage.listMessages({
|
|
83
|
+
threadId: 'thread-1',
|
|
84
|
+
orderBy: { field: 'createdAt', direction: 'DESC' },
|
|
85
|
+
});
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Client SDK
|
|
89
|
+
|
|
90
|
+
### BREAKING: Renamed `client.getThreadMessages()` → `client.listThreadMessages()`
|
|
91
|
+
|
|
92
|
+
**Migration:**
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
// Before
|
|
96
|
+
const response = await client.getThreadMessages(threadId, { agentId });
|
|
97
|
+
|
|
98
|
+
// After
|
|
99
|
+
const response = await client.listThreadMessages(threadId, { agentId });
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
The response format remains the same.
|
|
103
|
+
|
|
104
|
+
## Type Changes
|
|
105
|
+
|
|
106
|
+
### BREAKING: Removed `StorageGetMessagesArg` type
|
|
107
|
+
|
|
108
|
+
Use `StorageListMessagesInput` instead:
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
// Before
|
|
112
|
+
import type { StorageGetMessagesArg } from '@mastra/core';
|
|
113
|
+
|
|
114
|
+
// After
|
|
115
|
+
import type { StorageListMessagesInput } from '@mastra/core';
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
- Bump minimum required Node.js version to 22.13.0 ([#9706](https://github.com/mastra-ai/mastra/pull/9706))
|
|
119
|
+
|
|
120
|
+
- Add new list methods to storage API: `listMessages`, `listMessagesById`, `listThreadsByResourceId`, and `listWorkflowRuns`. Most methods are currently wrappers around existing methods. Full implementations will be added when migrating away from legacy methods. ([#9489](https://github.com/mastra-ai/mastra/pull/9489))
|
|
121
|
+
|
|
122
|
+
- Rename RuntimeContext to RequestContext ([#9511](https://github.com/mastra-ai/mastra/pull/9511))
|
|
123
|
+
|
|
124
|
+
- Implement listMessages API for replacing previous methods ([#9531](https://github.com/mastra-ai/mastra/pull/9531))
|
|
125
|
+
|
|
126
|
+
- Remove `getThreadsByResourceId` and `getThreadsByResourceIdPaginated` methods from storage interfaces in favor of `listThreadsByResourceId`. The new method uses `offset`/`limit` pagination and a nested `orderBy` object structure (`{ field, direction }`). ([#9536](https://github.com/mastra-ai/mastra/pull/9536))
|
|
127
|
+
|
|
128
|
+
- Remove `getMessagesById` method from storage interfaces in favor of `listMessagesById`. The new method only returns V2-format messages and removes the format parameter, simplifying the API surface. Users should migrate from `getMessagesById({ messageIds, format })` to `listMessagesById({ messageIds })`. ([#9534](https://github.com/mastra-ai/mastra/pull/9534))
|
|
129
|
+
|
|
130
|
+
- **BREAKING CHANGE**: Pagination APIs now use `page`/`perPage` instead of `offset`/`limit` ([#9592](https://github.com/mastra-ai/mastra/pull/9592))
|
|
131
|
+
|
|
132
|
+
All storage and memory pagination APIs have been updated to use `page` (0-indexed) and `perPage` instead of `offset` and `limit`, aligning with standard REST API patterns.
|
|
133
|
+
|
|
134
|
+
**Affected APIs:**
|
|
135
|
+
- `Memory.listThreadsByResourceId()`
|
|
136
|
+
- `Memory.listMessages()`
|
|
137
|
+
- `Storage.listWorkflowRuns()`
|
|
138
|
+
|
|
139
|
+
**Migration:**
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
// Before
|
|
143
|
+
await memory.listThreadsByResourceId({
|
|
144
|
+
resourceId: 'user-123',
|
|
145
|
+
offset: 20,
|
|
146
|
+
limit: 10,
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
// After
|
|
150
|
+
await memory.listThreadsByResourceId({
|
|
151
|
+
resourceId: 'user-123',
|
|
152
|
+
page: 2, // page = Math.floor(offset / limit)
|
|
153
|
+
perPage: 10,
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
// Before
|
|
157
|
+
await memory.listMessages({
|
|
158
|
+
threadId: 'thread-456',
|
|
159
|
+
offset: 20,
|
|
160
|
+
limit: 10,
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
// After
|
|
164
|
+
await memory.listMessages({
|
|
165
|
+
threadId: 'thread-456',
|
|
166
|
+
page: 2,
|
|
167
|
+
perPage: 10,
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
// Before
|
|
171
|
+
await storage.listWorkflowRuns({
|
|
172
|
+
workflowName: 'my-workflow',
|
|
173
|
+
offset: 20,
|
|
174
|
+
limit: 10,
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
// After
|
|
178
|
+
await storage.listWorkflowRuns({
|
|
179
|
+
workflowName: 'my-workflow',
|
|
180
|
+
page: 2,
|
|
181
|
+
perPage: 10,
|
|
182
|
+
});
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**Additional improvements:**
|
|
186
|
+
- Added validation for negative `page` values in all storage implementations
|
|
187
|
+
- Improved `perPage` validation to handle edge cases (negative values, `0`, `false`)
|
|
188
|
+
- Added reusable query parser utilities for consistent validation in handlers
|
|
189
|
+
|
|
190
|
+
- Removed old tracing code based on OpenTelemetry ([#9237](https://github.com/mastra-ai/mastra/pull/9237))
|
|
191
|
+
|
|
192
|
+
- Mark as stable ([`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc))
|
|
193
|
+
|
|
194
|
+
- Renamed `MastraMessageV2` to `MastraDBMessage` ([#9255](https://github.com/mastra-ai/mastra/pull/9255))
|
|
195
|
+
Made the return format of all methods that return db messages consistent. It's always `{ messages: MastraDBMessage[] }` now, and messages can be converted after that using `@mastra/ai-sdk/ui`'s `toAISdkV4/5Messages()` function
|
|
196
|
+
|
|
197
|
+
- Remove legacy evals from Mastra ([#9491](https://github.com/mastra-ai/mastra/pull/9491))
|
|
198
|
+
|
|
199
|
+
### Minor Changes
|
|
200
|
+
|
|
201
|
+
- Update peer dependencies to match core package version bump (1.0.0) ([#9237](https://github.com/mastra-ai/mastra/pull/9237))
|
|
202
|
+
|
|
203
|
+
### Patch Changes
|
|
204
|
+
|
|
205
|
+
- dependencies updates: ([#8693](https://github.com/mastra-ai/mastra/pull/8693))
|
|
206
|
+
- Updated dependency [`@lancedb/lancedb@^0.22.2` ↗︎](https://www.npmjs.com/package/@lancedb/lancedb/v/0.22.2) (from `^0.21.2`, in `dependencies`)
|
|
207
|
+
|
|
208
|
+
- dependencies updates: ([#9921](https://github.com/mastra-ai/mastra/pull/9921))
|
|
209
|
+
- Updated dependency [`@lancedb/lancedb@^0.22.3` ↗︎](https://www.npmjs.com/package/@lancedb/lancedb/v/0.22.3) (from `^0.22.2`, in `dependencies`)
|
|
210
|
+
|
|
211
|
+
- Add restart method to workflow run that allows restarting an active workflow run ([#9750](https://github.com/mastra-ai/mastra/pull/9750))
|
|
212
|
+
Add status filter to `listWorkflowRuns`
|
|
213
|
+
Add automatic restart to restart active workflow runs when server starts
|
|
214
|
+
|
|
215
|
+
- Fix eval filtering to use NULL checks instead of length function for compatibility with LanceDB 0.22.x ([#9191](https://github.com/mastra-ai/mastra/pull/9191))
|
|
216
|
+
|
|
217
|
+
- Updated dependencies [[`2319326`](https://github.com/mastra-ai/mastra/commit/2319326f8c64e503a09bbcf14be2dd65405445e0), [`39c9743`](https://github.com/mastra-ai/mastra/commit/39c97432d084294f8ba85fbf3ef28098ff21459e), [`f743dbb`](https://github.com/mastra-ai/mastra/commit/f743dbb8b40d1627b5c10c0e6fc154f4ebb6e394), [`fec5129`](https://github.com/mastra-ai/mastra/commit/fec5129de7fc64423ea03661a56cef31dc747a0d), [`0491e7c`](https://github.com/mastra-ai/mastra/commit/0491e7c9b714cb0ba22187ee062147ec2dd7c712), [`f6f4903`](https://github.com/mastra-ai/mastra/commit/f6f4903397314f73362061dc5a3e8e7c61ea34aa), [`0e8ed46`](https://github.com/mastra-ai/mastra/commit/0e8ed467c54d6901a6a365f270ec15d6faadb36c), [`6c049d9`](https://github.com/mastra-ai/mastra/commit/6c049d94063fdcbd5b81c4912a2bf82a92c9cc0b), [`910db9e`](https://github.com/mastra-ai/mastra/commit/910db9e0312888495eb5617b567f247d03303814), [`2f897df`](https://github.com/mastra-ai/mastra/commit/2f897df208508f46f51b7625e5dd20c37f93e0e3), [`d629361`](https://github.com/mastra-ai/mastra/commit/d629361a60f6565b5bfb11976fdaf7308af858e2), [`08c31c1`](https://github.com/mastra-ai/mastra/commit/08c31c188ebccd598acaf55e888b6397d01f7eae), [`3443770`](https://github.com/mastra-ai/mastra/commit/3443770662df8eb24c9df3589b2792d78cfcb811), [`f0a07e0`](https://github.com/mastra-ai/mastra/commit/f0a07e0111b3307c5fabfa4094c5c2cfb734fbe6), [`aaa40e7`](https://github.com/mastra-ai/mastra/commit/aaa40e788628b319baa8e889407d11ad626547fa), [`1521d71`](https://github.com/mastra-ai/mastra/commit/1521d716e5daedc74690c983fbd961123c56756b), [`9e1911d`](https://github.com/mastra-ai/mastra/commit/9e1911db2b4db85e0e768c3f15e0d61e319869f6), [`ebac155`](https://github.com/mastra-ai/mastra/commit/ebac15564a590117db7078233f927a7e28a85106), [`dd1c38d`](https://github.com/mastra-ai/mastra/commit/dd1c38d1b75f1b695c27b40d8d9d6ed00d5e0f6f), [`5948e6a`](https://github.com/mastra-ai/mastra/commit/5948e6a5146c83666ba3f294b2be576c82a513fb), [`8940859`](https://github.com/mastra-ai/mastra/commit/89408593658199b4ad67f7b65e888f344e64a442), [`e629310`](https://github.com/mastra-ai/mastra/commit/e629310f1a73fa236d49ec7a1d1cceb6229dc7cc), [`4c6b492`](https://github.com/mastra-ai/mastra/commit/4c6b492c4dd591c6a592520c1f6855d6e936d71f), [`dff01d8`](https://github.com/mastra-ai/mastra/commit/dff01d81ce1f4e4087cfac20fa868e6db138dd14), [`9d819d5`](https://github.com/mastra-ai/mastra/commit/9d819d54b61481639f4008e4694791bddf187edd), [`fd3d338`](https://github.com/mastra-ai/mastra/commit/fd3d338a2c362174ed5b383f1f011ad9fb0302aa), [`71c8d6c`](https://github.com/mastra-ai/mastra/commit/71c8d6c161253207b2b9588bdadb7eed604f7253), [`6179a9b`](https://github.com/mastra-ai/mastra/commit/6179a9ba36ffac326de3cc3c43cdc8028d37c251), [`c30400a`](https://github.com/mastra-ai/mastra/commit/c30400a49b994b1b97256fe785eb6c906fc2b232), [`00f4921`](https://github.com/mastra-ai/mastra/commit/00f4921dd2c91a1e5446799599ef7116a8214a1a), [`ca8041c`](https://github.com/mastra-ai/mastra/commit/ca8041cce0379fda22ed293a565bcb5b6ddca68a), [`7051bf3`](https://github.com/mastra-ai/mastra/commit/7051bf38b3b122a069008f861f7bfc004a6d9f6e), [`a8f1494`](https://github.com/mastra-ai/mastra/commit/a8f1494f4bbdc2770bcf327d4c7d869e332183f1), [`69e0a87`](https://github.com/mastra-ai/mastra/commit/69e0a878896a2da9494945d86e056a5f8f05b851), [`0793497`](https://github.com/mastra-ai/mastra/commit/079349753620c40246ffd673e3f9d7d9820beff3), [`01f8878`](https://github.com/mastra-ai/mastra/commit/01f88783de25e4de048c1c8aace43e26373c6ea5), [`5df9cce`](https://github.com/mastra-ai/mastra/commit/5df9cce1a753438413f64c11eeef8f845745c2a8), [`4c77209`](https://github.com/mastra-ai/mastra/commit/4c77209e6c11678808b365d545845918c40045c8), [`a854ede`](https://github.com/mastra-ai/mastra/commit/a854ede62bf5ac0945a624ac48913dd69c73aabf), [`c576fc0`](https://github.com/mastra-ai/mastra/commit/c576fc0b100b2085afded91a37c97a0ea0ec09c7), [`3defc80`](https://github.com/mastra-ai/mastra/commit/3defc80cf2b88a1b7fc1cc4ddcb91e982a614609), [`16153fe`](https://github.com/mastra-ai/mastra/commit/16153fe7eb13c99401f48e6ca32707c965ee28b9), [`9f4a683`](https://github.com/mastra-ai/mastra/commit/9f4a6833e88b52574665c028fd5508ad5c2f6004), [`bc94344`](https://github.com/mastra-ai/mastra/commit/bc943444a1342d8a662151b7bce1df7dae32f59c), [`57d157f`](https://github.com/mastra-ai/mastra/commit/57d157f0b163a95c3e6c9eae31bdb11d1bfc64f9), [`903f67d`](https://github.com/mastra-ai/mastra/commit/903f67d184504a273893818c02b961f5423a79ad), [`d827d08`](https://github.com/mastra-ai/mastra/commit/d827d0808ffe1f3553a84e975806cc989b9735dd), [`2a90c55`](https://github.com/mastra-ai/mastra/commit/2a90c55a86a9210697d5adaab5ee94584b079adc), [`eb09742`](https://github.com/mastra-ai/mastra/commit/eb09742197f66c4c38154c3beec78313e69760b2), [`23c10a1`](https://github.com/mastra-ai/mastra/commit/23c10a1efdd9a693c405511ab2dc8a1236603162), [`96d35f6`](https://github.com/mastra-ai/mastra/commit/96d35f61376bc2b1bf148648a2c1985bd51bef55), [`5cbe88a`](https://github.com/mastra-ai/mastra/commit/5cbe88aefbd9f933bca669fd371ea36bf939ac6d), [`a1bd7b8`](https://github.com/mastra-ai/mastra/commit/a1bd7b8571db16b94eb01588f451a74758c96d65), [`d78b38d`](https://github.com/mastra-ai/mastra/commit/d78b38d898fce285260d3bbb4befade54331617f), [`0633100`](https://github.com/mastra-ai/mastra/commit/0633100a911ad22f5256471bdf753da21c104742), [`c710c16`](https://github.com/mastra-ai/mastra/commit/c710c1652dccfdc4111c8412bca7a6bb1d48b441), [`354ad0b`](https://github.com/mastra-ai/mastra/commit/354ad0b7b1b8183ac567f236a884fc7ede6d7138), [`cfae733`](https://github.com/mastra-ai/mastra/commit/cfae73394f4920635e6c919c8e95ff9a0788e2e5), [`e3dfda7`](https://github.com/mastra-ai/mastra/commit/e3dfda7b11bf3b8c4bb55637028befb5f387fc74), [`676ccc7`](https://github.com/mastra-ai/mastra/commit/676ccc7fe92468d2d45d39c31a87825c89fd1ea0), [`844ea5d`](https://github.com/mastra-ai/mastra/commit/844ea5dc0c248961e7bf73629ae7dcff503e853c), [`398fde3`](https://github.com/mastra-ai/mastra/commit/398fde3f39e707cda79372cdae8f9870e3b57c8d), [`c10398d`](https://github.com/mastra-ai/mastra/commit/c10398d5b88f1d4af556f4267ff06f1d11e89179), [`f0f8f12`](https://github.com/mastra-ai/mastra/commit/f0f8f125c308f2d0fd36942ef652fd852df7522f), [`0d7618b`](https://github.com/mastra-ai/mastra/commit/0d7618bc650bf2800934b243eca5648f4aeed9c2), [`7b763e5`](https://github.com/mastra-ai/mastra/commit/7b763e52fc3eaf699c2a99f2adf418dd46e4e9a5), [`d36cfbb`](https://github.com/mastra-ai/mastra/commit/d36cfbbb6565ba5f827883cc9bb648eb14befdc1), [`3697853`](https://github.com/mastra-ai/mastra/commit/3697853deeb72017d90e0f38a93c1e29221aeca0), [`b2e45ec`](https://github.com/mastra-ai/mastra/commit/b2e45eca727a8db01a81ba93f1a5219c7183c839), [`d6d49f7`](https://github.com/mastra-ai/mastra/commit/d6d49f7b8714fa19a52ff9c7cf7fb7e73751901e), [`00c2387`](https://github.com/mastra-ai/mastra/commit/00c2387f5f04a365316f851e58666ac43f8c4edf), [`a534e95`](https://github.com/mastra-ai/mastra/commit/a534e9591f83b3cc1ebff99c67edf4cda7bf81d3), [`9d0e7fe`](https://github.com/mastra-ai/mastra/commit/9d0e7feca8ed98de959f53476ee1456073673348), [`53d927c`](https://github.com/mastra-ai/mastra/commit/53d927cc6f03bff33655b7e2b788da445a08731d), [`ad6250d`](https://github.com/mastra-ai/mastra/commit/ad6250dbdaad927e29f74a27b83f6c468b50a705), [`3f2faf2`](https://github.com/mastra-ai/mastra/commit/3f2faf2e2d685d6c053cc5af1bf9fedf267b2ce5), [`22f64bc`](https://github.com/mastra-ai/mastra/commit/22f64bc1d37149480b58bf2fefe35b79a1e3e7d5), [`3a73998`](https://github.com/mastra-ai/mastra/commit/3a73998fa4ebeb7f3dc9301afe78095fc63e7999), [`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc), [`b7959e6`](https://github.com/mastra-ai/mastra/commit/b7959e6e25a46b480f9ea2217c4c6c588c423791), [`bda6370`](https://github.com/mastra-ai/mastra/commit/bda637009360649aaf579919e7873e33553c273e), [`d7acd8e`](https://github.com/mastra-ai/mastra/commit/d7acd8e987b5d7eff4fd98b0906c17c06a2e83d5), [`c7f1f7d`](https://github.com/mastra-ai/mastra/commit/c7f1f7d24f61f247f018cc2d1f33bf63212959a7), [`0bddc6d`](https://github.com/mastra-ai/mastra/commit/0bddc6d8dbd6f6008c0cba2e4960a2da75a55af1), [`735d8c1`](https://github.com/mastra-ai/mastra/commit/735d8c1c0d19fbc09e6f8b66cf41bc7655993838), [`acf322e`](https://github.com/mastra-ai/mastra/commit/acf322e0f1fd0189684cf529d91c694bea918a45), [`e16d553`](https://github.com/mastra-ai/mastra/commit/e16d55338403c7553531cc568125c63d53653dff), [`c942802`](https://github.com/mastra-ai/mastra/commit/c942802a477a925b01859a7b8688d4355715caaa), [`a0c8c1b`](https://github.com/mastra-ai/mastra/commit/a0c8c1b87d4fee252aebda73e8637fbe01d761c9), [`cc34739`](https://github.com/mastra-ai/mastra/commit/cc34739c34b6266a91bea561119240a7acf47887), [`c218bd3`](https://github.com/mastra-ai/mastra/commit/c218bd3759e32423735b04843a09404572631014), [`2c4438b`](https://github.com/mastra-ai/mastra/commit/2c4438b87817ab7eed818c7990fef010475af1a3), [`4d59f58`](https://github.com/mastra-ai/mastra/commit/4d59f58de2d90d6e2810a19d4518e38ddddb9038), [`2b8893c`](https://github.com/mastra-ai/mastra/commit/2b8893cb108ef9acb72ee7835cd625610d2c1a4a), [`8e5c75b`](https://github.com/mastra-ai/mastra/commit/8e5c75bdb1d08a42d45309a4c72def4b6890230f), [`e1bb9c9`](https://github.com/mastra-ai/mastra/commit/e1bb9c94b4eb68b019ae275981be3feb769b5365), [`351a11f`](https://github.com/mastra-ai/mastra/commit/351a11fcaf2ed1008977fa9b9a489fc422e51cd4), [`e59e0d3`](https://github.com/mastra-ai/mastra/commit/e59e0d32afb5fcf2c9f3c00c8f81f6c21d3a63fa), [`465ac05`](https://github.com/mastra-ai/mastra/commit/465ac0526a91d175542091c675181f1a96c98c46), [`fa8409b`](https://github.com/mastra-ai/mastra/commit/fa8409bc39cfd8ba6643b9db5269b90b22e2a2f7), [`e7266a2`](https://github.com/mastra-ai/mastra/commit/e7266a278db02035c97a5e9cd9d1669a6b7a535d), [`173c535`](https://github.com/mastra-ai/mastra/commit/173c535c0645b0da404fe09f003778f0b0d4e019)]:
|
|
218
|
+
- @mastra/core@0.0.0-vnext-20251119160359
|
|
219
|
+
|
|
220
|
+
## 1.0.0-beta.0
|
|
221
|
+
|
|
222
|
+
### Major Changes
|
|
223
|
+
|
|
224
|
+
- Moving scorers under the eval domain, api method consistency, prebuilt evals, scorers require ids. ([#9589](https://github.com/mastra-ai/mastra/pull/9589))
|
|
225
|
+
|
|
226
|
+
- Every Mastra primitive (agent, MCPServer, workflow, tool, processor, scorer, and vector) now has a get, list, and add method associated with it. Each primitive also now requires an id to be set. ([#9675](https://github.com/mastra-ai/mastra/pull/9675))
|
|
227
|
+
|
|
228
|
+
Primitives that are added to other primitives are also automatically added to the Mastra instance
|
|
229
|
+
|
|
230
|
+
- Update handlers to use `listWorkflowRuns` instead of `getWorkflowRuns`. Fix type names from `StoragelistThreadsByResourceIdInput/Output` to `StorageListThreadsByResourceIdInput/Output`. ([#9507](https://github.com/mastra-ai/mastra/pull/9507))
|
|
231
|
+
|
|
232
|
+
- **BREAKING:** Remove `getMessagesPaginated()` and add `perPage: false` support ([#9670](https://github.com/mastra-ai/mastra/pull/9670))
|
|
233
|
+
|
|
234
|
+
Removes deprecated `getMessagesPaginated()` method. The `listMessages()` API and score handlers now support `perPage: false` to fetch all records without pagination limits.
|
|
235
|
+
|
|
236
|
+
**Storage changes:**
|
|
237
|
+
- `StoragePagination.perPage` type changed from `number` to `number | false`
|
|
238
|
+
- All storage implementations support `perPage: false`:
|
|
239
|
+
- Memory: `listMessages()`
|
|
240
|
+
- Scores: `listScoresBySpan()`, `listScoresByRunId()`, `listScoresByExecutionId()`
|
|
241
|
+
- HTTP query parser accepts `"false"` string (e.g., `?perPage=false`)
|
|
242
|
+
|
|
243
|
+
**Memory changes:**
|
|
244
|
+
- `memory.query()` parameter type changed from `StorageGetMessagesArg` to `StorageListMessagesInput`
|
|
245
|
+
- Uses flat parameters (`page`, `perPage`, `include`, `filter`, `vectorSearchString`) instead of `selectBy` object
|
|
246
|
+
|
|
247
|
+
**Stricter validation:**
|
|
248
|
+
- `listMessages()` requires non-empty, non-whitespace `threadId` (throws error instead of returning empty results)
|
|
249
|
+
|
|
250
|
+
**Migration:**
|
|
251
|
+
|
|
252
|
+
```typescript
|
|
253
|
+
// Storage/Memory: Replace getMessagesPaginated with listMessages
|
|
254
|
+
- storage.getMessagesPaginated({ threadId, selectBy: { pagination: { page: 0, perPage: 20 } } })
|
|
255
|
+
+ storage.listMessages({ threadId, page: 0, perPage: 20 })
|
|
256
|
+
+ storage.listMessages({ threadId, page: 0, perPage: false }) // Fetch all
|
|
257
|
+
|
|
258
|
+
// Memory: Replace selectBy with flat parameters
|
|
259
|
+
- memory.query({ threadId, selectBy: { last: 20, include: [...] } })
|
|
260
|
+
+ memory.query({ threadId, perPage: 20, include: [...] })
|
|
261
|
+
|
|
262
|
+
// Client SDK
|
|
263
|
+
- thread.getMessagesPaginated({ selectBy: { pagination: { page: 0 } } })
|
|
264
|
+
+ thread.listMessages({ page: 0, perPage: 20 })
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
- # Major Changes ([#9695](https://github.com/mastra-ai/mastra/pull/9695))
|
|
268
|
+
|
|
269
|
+
## Storage Layer
|
|
270
|
+
|
|
271
|
+
### BREAKING: Removed `storage.getMessages()`
|
|
272
|
+
|
|
273
|
+
The `getMessages()` method has been removed from all storage implementations. Use `listMessages()` instead, which provides pagination support.
|
|
274
|
+
|
|
275
|
+
**Migration:**
|
|
276
|
+
|
|
277
|
+
```typescript
|
|
278
|
+
// Before
|
|
279
|
+
const messages = await storage.getMessages({ threadId: 'thread-1' });
|
|
280
|
+
|
|
281
|
+
// After
|
|
282
|
+
const result = await storage.listMessages({
|
|
283
|
+
threadId: 'thread-1',
|
|
284
|
+
page: 0,
|
|
285
|
+
perPage: 50,
|
|
286
|
+
});
|
|
287
|
+
const messages = result.messages; // Access messages array
|
|
288
|
+
console.log(result.total); // Total count
|
|
289
|
+
console.log(result.hasMore); // Whether more pages exist
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### Message ordering default
|
|
293
|
+
|
|
294
|
+
`listMessages()` defaults to ASC (oldest first) ordering by `createdAt`, matching the previous `getMessages()` behavior.
|
|
295
|
+
|
|
296
|
+
**To use DESC ordering (newest first):**
|
|
297
|
+
|
|
298
|
+
```typescript
|
|
299
|
+
const result = await storage.listMessages({
|
|
300
|
+
threadId: 'thread-1',
|
|
301
|
+
orderBy: { field: 'createdAt', direction: 'DESC' },
|
|
302
|
+
});
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
## Client SDK
|
|
306
|
+
|
|
307
|
+
### BREAKING: Renamed `client.getThreadMessages()` → `client.listThreadMessages()`
|
|
308
|
+
|
|
309
|
+
**Migration:**
|
|
310
|
+
|
|
311
|
+
```typescript
|
|
312
|
+
// Before
|
|
313
|
+
const response = await client.getThreadMessages(threadId, { agentId });
|
|
314
|
+
|
|
315
|
+
// After
|
|
316
|
+
const response = await client.listThreadMessages(threadId, { agentId });
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
The response format remains the same.
|
|
320
|
+
|
|
321
|
+
## Type Changes
|
|
322
|
+
|
|
323
|
+
### BREAKING: Removed `StorageGetMessagesArg` type
|
|
324
|
+
|
|
325
|
+
Use `StorageListMessagesInput` instead:
|
|
326
|
+
|
|
327
|
+
```typescript
|
|
328
|
+
// Before
|
|
329
|
+
import type { StorageGetMessagesArg } from '@mastra/core';
|
|
330
|
+
|
|
331
|
+
// After
|
|
332
|
+
import type { StorageListMessagesInput } from '@mastra/core';
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
- Bump minimum required Node.js version to 22.13.0 ([#9706](https://github.com/mastra-ai/mastra/pull/9706))
|
|
336
|
+
|
|
46
337
|
- Add new list methods to storage API: `listMessages`, `listMessagesById`, `listThreadsByResourceId`, and `listWorkflowRuns`. Most methods are currently wrappers around existing methods. Full implementations will be added when migrating away from legacy methods. ([#9489](https://github.com/mastra-ai/mastra/pull/9489))
|
|
47
338
|
|
|
48
339
|
- Rename RuntimeContext to RequestContext ([#9511](https://github.com/mastra-ai/mastra/pull/9511))
|
|
@@ -133,8 +424,8 @@
|
|
|
133
424
|
|
|
134
425
|
- Fix eval filtering to use NULL checks instead of length function for compatibility with LanceDB 0.22.x ([#9191](https://github.com/mastra-ai/mastra/pull/9191))
|
|
135
426
|
|
|
136
|
-
- Updated dependencies [[`f743dbb`](https://github.com/mastra-ai/mastra/commit/f743dbb8b40d1627b5c10c0e6fc154f4ebb6e394), [`fec5129`](https://github.com/mastra-ai/mastra/commit/fec5129de7fc64423ea03661a56cef31dc747a0d), [`0e8ed46`](https://github.com/mastra-ai/mastra/commit/0e8ed467c54d6901a6a365f270ec15d6faadb36c), [`6c049d9`](https://github.com/mastra-ai/mastra/commit/6c049d94063fdcbd5b81c4912a2bf82a92c9cc0b), [`3443770`](https://github.com/mastra-ai/mastra/commit/3443770662df8eb24c9df3589b2792d78cfcb811), [`f0a07e0`](https://github.com/mastra-ai/mastra/commit/f0a07e0111b3307c5fabfa4094c5c2cfb734fbe6), [`1521d71`](https://github.com/mastra-ai/mastra/commit/1521d716e5daedc74690c983fbd961123c56756b), [`9e1911d`](https://github.com/mastra-ai/mastra/commit/9e1911db2b4db85e0e768c3f15e0d61e319869f6), [`ebac155`](https://github.com/mastra-ai/mastra/commit/ebac15564a590117db7078233f927a7e28a85106), [`5948e6a`](https://github.com/mastra-ai/mastra/commit/5948e6a5146c83666ba3f294b2be576c82a513fb), [`8940859`](https://github.com/mastra-ai/mastra/commit/89408593658199b4ad67f7b65e888f344e64a442), [`e629310`](https://github.com/mastra-ai/mastra/commit/e629310f1a73fa236d49ec7a1d1cceb6229dc7cc), [`4c6b492`](https://github.com/mastra-ai/mastra/commit/4c6b492c4dd591c6a592520c1f6855d6e936d71f), [`dff01d8`](https://github.com/mastra-ai/mastra/commit/dff01d81ce1f4e4087cfac20fa868e6db138dd14), [`9d819d5`](https://github.com/mastra-ai/mastra/commit/9d819d54b61481639f4008e4694791bddf187edd), [`71c8d6c`](https://github.com/mastra-ai/mastra/commit/71c8d6c161253207b2b9588bdadb7eed604f7253), [`6179a9b`](https://github.com/mastra-ai/mastra/commit/6179a9ba36ffac326de3cc3c43cdc8028d37c251), [`00f4921`](https://github.com/mastra-ai/mastra/commit/00f4921dd2c91a1e5446799599ef7116a8214a1a), [`7051bf3`](https://github.com/mastra-ai/mastra/commit/7051bf38b3b122a069008f861f7bfc004a6d9f6e), [`a8f1494`](https://github.com/mastra-ai/mastra/commit/a8f1494f4bbdc2770bcf327d4c7d869e332183f1), [`0793497`](https://github.com/mastra-ai/mastra/commit/079349753620c40246ffd673e3f9d7d9820beff3), [`5df9cce`](https://github.com/mastra-ai/mastra/commit/5df9cce1a753438413f64c11eeef8f845745c2a8), [`a854ede`](https://github.com/mastra-ai/mastra/commit/a854ede62bf5ac0945a624ac48913dd69c73aabf), [`c576fc0`](https://github.com/mastra-ai/mastra/commit/c576fc0b100b2085afded91a37c97a0ea0ec09c7), [`3defc80`](https://github.com/mastra-ai/mastra/commit/3defc80cf2b88a1b7fc1cc4ddcb91e982a614609), [`16153fe`](https://github.com/mastra-ai/mastra/commit/16153fe7eb13c99401f48e6ca32707c965ee28b9), [`9f4a683`](https://github.com/mastra-ai/mastra/commit/9f4a6833e88b52574665c028fd5508ad5c2f6004), [`bc94344`](https://github.com/mastra-ai/mastra/commit/bc943444a1342d8a662151b7bce1df7dae32f59c), [`57d157f`](https://github.com/mastra-ai/mastra/commit/57d157f0b163a95c3e6c9eae31bdb11d1bfc64f9), [`2a90c55`](https://github.com/mastra-ai/mastra/commit/2a90c55a86a9210697d5adaab5ee94584b079adc), [`96d35f6`](https://github.com/mastra-ai/mastra/commit/96d35f61376bc2b1bf148648a2c1985bd51bef55), [`5cbe88a`](https://github.com/mastra-ai/mastra/commit/5cbe88aefbd9f933bca669fd371ea36bf939ac6d), [`a1bd7b8`](https://github.com/mastra-ai/mastra/commit/a1bd7b8571db16b94eb01588f451a74758c96d65), [`d78b38d`](https://github.com/mastra-ai/mastra/commit/d78b38d898fce285260d3bbb4befade54331617f), [`0633100`](https://github.com/mastra-ai/mastra/commit/0633100a911ad22f5256471bdf753da21c104742), [`c710c16`](https://github.com/mastra-ai/mastra/commit/c710c1652dccfdc4111c8412bca7a6bb1d48b441), [`cfae733`](https://github.com/mastra-ai/mastra/commit/cfae73394f4920635e6c919c8e95ff9a0788e2e5), [`e3dfda7`](https://github.com/mastra-ai/mastra/commit/e3dfda7b11bf3b8c4bb55637028befb5f387fc74), [`844ea5d`](https://github.com/mastra-ai/mastra/commit/844ea5dc0c248961e7bf73629ae7dcff503e853c), [`f0f8f12`](https://github.com/mastra-ai/mastra/commit/f0f8f125c308f2d0fd36942ef652fd852df7522f), [`0d7618b`](https://github.com/mastra-ai/mastra/commit/0d7618bc650bf2800934b243eca5648f4aeed9c2), [`7b763e5`](https://github.com/mastra-ai/mastra/commit/7b763e52fc3eaf699c2a99f2adf418dd46e4e9a5), [`d36cfbb`](https://github.com/mastra-ai/mastra/commit/d36cfbbb6565ba5f827883cc9bb648eb14befdc1), [`3697853`](https://github.com/mastra-ai/mastra/commit/3697853deeb72017d90e0f38a93c1e29221aeca0), [`a534e95`](https://github.com/mastra-ai/mastra/commit/a534e9591f83b3cc1ebff99c67edf4cda7bf81d3), [`9d0e7fe`](https://github.com/mastra-ai/mastra/commit/9d0e7feca8ed98de959f53476ee1456073673348), [`53d927c`](https://github.com/mastra-ai/mastra/commit/53d927cc6f03bff33655b7e2b788da445a08731d), [`22f64bc`](https://github.com/mastra-ai/mastra/commit/22f64bc1d37149480b58bf2fefe35b79a1e3e7d5), [`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc), [`bda6370`](https://github.com/mastra-ai/mastra/commit/bda637009360649aaf579919e7873e33553c273e), [`d7acd8e`](https://github.com/mastra-ai/mastra/commit/d7acd8e987b5d7eff4fd98b0906c17c06a2e83d5), [`c7f1f7d`](https://github.com/mastra-ai/mastra/commit/c7f1f7d24f61f247f018cc2d1f33bf63212959a7), [`0bddc6d`](https://github.com/mastra-ai/mastra/commit/0bddc6d8dbd6f6008c0cba2e4960a2da75a55af1), [`735d8c1`](https://github.com/mastra-ai/mastra/commit/735d8c1c0d19fbc09e6f8b66cf41bc7655993838), [`acf322e`](https://github.com/mastra-ai/mastra/commit/acf322e0f1fd0189684cf529d91c694bea918a45), [`c942802`](https://github.com/mastra-ai/mastra/commit/c942802a477a925b01859a7b8688d4355715caaa), [`a0c8c1b`](https://github.com/mastra-ai/mastra/commit/a0c8c1b87d4fee252aebda73e8637fbe01d761c9), [`cc34739`](https://github.com/mastra-ai/mastra/commit/cc34739c34b6266a91bea561119240a7acf47887), [`c218bd3`](https://github.com/mastra-ai/mastra/commit/c218bd3759e32423735b04843a09404572631014), [`2c4438b`](https://github.com/mastra-ai/mastra/commit/2c4438b87817ab7eed818c7990fef010475af1a3), [`2b8893c`](https://github.com/mastra-ai/mastra/commit/2b8893cb108ef9acb72ee7835cd625610d2c1a4a), [`8e5c75b`](https://github.com/mastra-ai/mastra/commit/8e5c75bdb1d08a42d45309a4c72def4b6890230f), [`fa8409b`](https://github.com/mastra-ai/mastra/commit/fa8409bc39cfd8ba6643b9db5269b90b22e2a2f7), [`173c535`](https://github.com/mastra-ai/mastra/commit/173c535c0645b0da404fe09f003778f0b0d4e019)]:
|
|
137
|
-
- @mastra/core@0.0.0
|
|
427
|
+
- Updated dependencies [[`39c9743`](https://github.com/mastra-ai/mastra/commit/39c97432d084294f8ba85fbf3ef28098ff21459e), [`f743dbb`](https://github.com/mastra-ai/mastra/commit/f743dbb8b40d1627b5c10c0e6fc154f4ebb6e394), [`fec5129`](https://github.com/mastra-ai/mastra/commit/fec5129de7fc64423ea03661a56cef31dc747a0d), [`0491e7c`](https://github.com/mastra-ai/mastra/commit/0491e7c9b714cb0ba22187ee062147ec2dd7c712), [`f6f4903`](https://github.com/mastra-ai/mastra/commit/f6f4903397314f73362061dc5a3e8e7c61ea34aa), [`0e8ed46`](https://github.com/mastra-ai/mastra/commit/0e8ed467c54d6901a6a365f270ec15d6faadb36c), [`6c049d9`](https://github.com/mastra-ai/mastra/commit/6c049d94063fdcbd5b81c4912a2bf82a92c9cc0b), [`2f897df`](https://github.com/mastra-ai/mastra/commit/2f897df208508f46f51b7625e5dd20c37f93e0e3), [`3443770`](https://github.com/mastra-ai/mastra/commit/3443770662df8eb24c9df3589b2792d78cfcb811), [`f0a07e0`](https://github.com/mastra-ai/mastra/commit/f0a07e0111b3307c5fabfa4094c5c2cfb734fbe6), [`aaa40e7`](https://github.com/mastra-ai/mastra/commit/aaa40e788628b319baa8e889407d11ad626547fa), [`1521d71`](https://github.com/mastra-ai/mastra/commit/1521d716e5daedc74690c983fbd961123c56756b), [`9e1911d`](https://github.com/mastra-ai/mastra/commit/9e1911db2b4db85e0e768c3f15e0d61e319869f6), [`ebac155`](https://github.com/mastra-ai/mastra/commit/ebac15564a590117db7078233f927a7e28a85106), [`dd1c38d`](https://github.com/mastra-ai/mastra/commit/dd1c38d1b75f1b695c27b40d8d9d6ed00d5e0f6f), [`5948e6a`](https://github.com/mastra-ai/mastra/commit/5948e6a5146c83666ba3f294b2be576c82a513fb), [`8940859`](https://github.com/mastra-ai/mastra/commit/89408593658199b4ad67f7b65e888f344e64a442), [`e629310`](https://github.com/mastra-ai/mastra/commit/e629310f1a73fa236d49ec7a1d1cceb6229dc7cc), [`4c6b492`](https://github.com/mastra-ai/mastra/commit/4c6b492c4dd591c6a592520c1f6855d6e936d71f), [`dff01d8`](https://github.com/mastra-ai/mastra/commit/dff01d81ce1f4e4087cfac20fa868e6db138dd14), [`9d819d5`](https://github.com/mastra-ai/mastra/commit/9d819d54b61481639f4008e4694791bddf187edd), [`71c8d6c`](https://github.com/mastra-ai/mastra/commit/71c8d6c161253207b2b9588bdadb7eed604f7253), [`6179a9b`](https://github.com/mastra-ai/mastra/commit/6179a9ba36ffac326de3cc3c43cdc8028d37c251), [`00f4921`](https://github.com/mastra-ai/mastra/commit/00f4921dd2c91a1e5446799599ef7116a8214a1a), [`ca8041c`](https://github.com/mastra-ai/mastra/commit/ca8041cce0379fda22ed293a565bcb5b6ddca68a), [`7051bf3`](https://github.com/mastra-ai/mastra/commit/7051bf38b3b122a069008f861f7bfc004a6d9f6e), [`a8f1494`](https://github.com/mastra-ai/mastra/commit/a8f1494f4bbdc2770bcf327d4c7d869e332183f1), [`0793497`](https://github.com/mastra-ai/mastra/commit/079349753620c40246ffd673e3f9d7d9820beff3), [`5df9cce`](https://github.com/mastra-ai/mastra/commit/5df9cce1a753438413f64c11eeef8f845745c2a8), [`a854ede`](https://github.com/mastra-ai/mastra/commit/a854ede62bf5ac0945a624ac48913dd69c73aabf), [`c576fc0`](https://github.com/mastra-ai/mastra/commit/c576fc0b100b2085afded91a37c97a0ea0ec09c7), [`3defc80`](https://github.com/mastra-ai/mastra/commit/3defc80cf2b88a1b7fc1cc4ddcb91e982a614609), [`16153fe`](https://github.com/mastra-ai/mastra/commit/16153fe7eb13c99401f48e6ca32707c965ee28b9), [`9f4a683`](https://github.com/mastra-ai/mastra/commit/9f4a6833e88b52574665c028fd5508ad5c2f6004), [`bc94344`](https://github.com/mastra-ai/mastra/commit/bc943444a1342d8a662151b7bce1df7dae32f59c), [`57d157f`](https://github.com/mastra-ai/mastra/commit/57d157f0b163a95c3e6c9eae31bdb11d1bfc64f9), [`903f67d`](https://github.com/mastra-ai/mastra/commit/903f67d184504a273893818c02b961f5423a79ad), [`2a90c55`](https://github.com/mastra-ai/mastra/commit/2a90c55a86a9210697d5adaab5ee94584b079adc), [`eb09742`](https://github.com/mastra-ai/mastra/commit/eb09742197f66c4c38154c3beec78313e69760b2), [`96d35f6`](https://github.com/mastra-ai/mastra/commit/96d35f61376bc2b1bf148648a2c1985bd51bef55), [`5cbe88a`](https://github.com/mastra-ai/mastra/commit/5cbe88aefbd9f933bca669fd371ea36bf939ac6d), [`a1bd7b8`](https://github.com/mastra-ai/mastra/commit/a1bd7b8571db16b94eb01588f451a74758c96d65), [`d78b38d`](https://github.com/mastra-ai/mastra/commit/d78b38d898fce285260d3bbb4befade54331617f), [`0633100`](https://github.com/mastra-ai/mastra/commit/0633100a911ad22f5256471bdf753da21c104742), [`c710c16`](https://github.com/mastra-ai/mastra/commit/c710c1652dccfdc4111c8412bca7a6bb1d48b441), [`354ad0b`](https://github.com/mastra-ai/mastra/commit/354ad0b7b1b8183ac567f236a884fc7ede6d7138), [`cfae733`](https://github.com/mastra-ai/mastra/commit/cfae73394f4920635e6c919c8e95ff9a0788e2e5), [`e3dfda7`](https://github.com/mastra-ai/mastra/commit/e3dfda7b11bf3b8c4bb55637028befb5f387fc74), [`844ea5d`](https://github.com/mastra-ai/mastra/commit/844ea5dc0c248961e7bf73629ae7dcff503e853c), [`398fde3`](https://github.com/mastra-ai/mastra/commit/398fde3f39e707cda79372cdae8f9870e3b57c8d), [`f0f8f12`](https://github.com/mastra-ai/mastra/commit/f0f8f125c308f2d0fd36942ef652fd852df7522f), [`0d7618b`](https://github.com/mastra-ai/mastra/commit/0d7618bc650bf2800934b243eca5648f4aeed9c2), [`7b763e5`](https://github.com/mastra-ai/mastra/commit/7b763e52fc3eaf699c2a99f2adf418dd46e4e9a5), [`d36cfbb`](https://github.com/mastra-ai/mastra/commit/d36cfbbb6565ba5f827883cc9bb648eb14befdc1), [`3697853`](https://github.com/mastra-ai/mastra/commit/3697853deeb72017d90e0f38a93c1e29221aeca0), [`b2e45ec`](https://github.com/mastra-ai/mastra/commit/b2e45eca727a8db01a81ba93f1a5219c7183c839), [`d6d49f7`](https://github.com/mastra-ai/mastra/commit/d6d49f7b8714fa19a52ff9c7cf7fb7e73751901e), [`a534e95`](https://github.com/mastra-ai/mastra/commit/a534e9591f83b3cc1ebff99c67edf4cda7bf81d3), [`9d0e7fe`](https://github.com/mastra-ai/mastra/commit/9d0e7feca8ed98de959f53476ee1456073673348), [`53d927c`](https://github.com/mastra-ai/mastra/commit/53d927cc6f03bff33655b7e2b788da445a08731d), [`3f2faf2`](https://github.com/mastra-ai/mastra/commit/3f2faf2e2d685d6c053cc5af1bf9fedf267b2ce5), [`22f64bc`](https://github.com/mastra-ai/mastra/commit/22f64bc1d37149480b58bf2fefe35b79a1e3e7d5), [`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc), [`b7959e6`](https://github.com/mastra-ai/mastra/commit/b7959e6e25a46b480f9ea2217c4c6c588c423791), [`bda6370`](https://github.com/mastra-ai/mastra/commit/bda637009360649aaf579919e7873e33553c273e), [`d7acd8e`](https://github.com/mastra-ai/mastra/commit/d7acd8e987b5d7eff4fd98b0906c17c06a2e83d5), [`c7f1f7d`](https://github.com/mastra-ai/mastra/commit/c7f1f7d24f61f247f018cc2d1f33bf63212959a7), [`0bddc6d`](https://github.com/mastra-ai/mastra/commit/0bddc6d8dbd6f6008c0cba2e4960a2da75a55af1), [`735d8c1`](https://github.com/mastra-ai/mastra/commit/735d8c1c0d19fbc09e6f8b66cf41bc7655993838), [`acf322e`](https://github.com/mastra-ai/mastra/commit/acf322e0f1fd0189684cf529d91c694bea918a45), [`c942802`](https://github.com/mastra-ai/mastra/commit/c942802a477a925b01859a7b8688d4355715caaa), [`a0c8c1b`](https://github.com/mastra-ai/mastra/commit/a0c8c1b87d4fee252aebda73e8637fbe01d761c9), [`cc34739`](https://github.com/mastra-ai/mastra/commit/cc34739c34b6266a91bea561119240a7acf47887), [`c218bd3`](https://github.com/mastra-ai/mastra/commit/c218bd3759e32423735b04843a09404572631014), [`2c4438b`](https://github.com/mastra-ai/mastra/commit/2c4438b87817ab7eed818c7990fef010475af1a3), [`2b8893c`](https://github.com/mastra-ai/mastra/commit/2b8893cb108ef9acb72ee7835cd625610d2c1a4a), [`8e5c75b`](https://github.com/mastra-ai/mastra/commit/8e5c75bdb1d08a42d45309a4c72def4b6890230f), [`e59e0d3`](https://github.com/mastra-ai/mastra/commit/e59e0d32afb5fcf2c9f3c00c8f81f6c21d3a63fa), [`fa8409b`](https://github.com/mastra-ai/mastra/commit/fa8409bc39cfd8ba6643b9db5269b90b22e2a2f7), [`173c535`](https://github.com/mastra-ai/mastra/commit/173c535c0645b0da404fe09f003778f0b0d4e019)]:
|
|
428
|
+
- @mastra/core@1.0.0-beta.0
|
|
138
429
|
|
|
139
430
|
## 0.3.6
|
|
140
431
|
|
package/README.md
CHANGED
|
@@ -114,7 +114,7 @@ const message = await storage.load({
|
|
|
114
114
|
});
|
|
115
115
|
|
|
116
116
|
// Load messages from a thread
|
|
117
|
-
const messages = await storage.
|
|
117
|
+
const messages = await storage.listMessages({
|
|
118
118
|
threadId: '123e4567-e89b-12d3-a456-426614174001',
|
|
119
119
|
});
|
|
120
120
|
```
|
|
@@ -175,10 +175,12 @@ const messages: MessageType[] = [
|
|
|
175
175
|
// Save messages
|
|
176
176
|
await storage.saveMessages({ messages });
|
|
177
177
|
|
|
178
|
-
// Retrieve messages with context
|
|
179
|
-
const retrievedMessages = await storage.
|
|
178
|
+
// Retrieve messages with pagination and context
|
|
179
|
+
const retrievedMessages = await storage.listMessages({
|
|
180
180
|
threadId: '123e4567-e89b-12d3-a456-426614174010',
|
|
181
|
-
|
|
181
|
+
perPage: 10,
|
|
182
|
+
page: 0,
|
|
183
|
+
include: [
|
|
182
184
|
{
|
|
183
185
|
id: 'msg-001',
|
|
184
186
|
withPreviousMessages: 5, // Include up to 5 messages before this one
|
|
@@ -261,3 +263,58 @@ await storage.clearTable({ tableName: TABLE_MESSAGES });
|
|
|
261
263
|
// Get table schema
|
|
262
264
|
const schema = await storage.getTableSchema(TABLE_MESSAGES);
|
|
263
265
|
```
|
|
266
|
+
|
|
267
|
+
## Storage Methods
|
|
268
|
+
|
|
269
|
+
### Thread Operations
|
|
270
|
+
|
|
271
|
+
- `saveThread({ thread })`: Create or update a thread
|
|
272
|
+
- `getThreadById({ threadId })`: Get a thread by ID
|
|
273
|
+
- `listThreadsByResourceId({ resourceId, offset, limit, orderBy? })`: List paginated threads for a resource
|
|
274
|
+
- `updateThread({ id, title, metadata })`: Update thread title and/or metadata
|
|
275
|
+
- `deleteThread({ threadId })`: Delete a thread and its messages
|
|
276
|
+
|
|
277
|
+
### Message Operations
|
|
278
|
+
|
|
279
|
+
- `saveMessages({ messages })`: Save multiple messages in a transaction
|
|
280
|
+
- `listMessages({ threadId, resourceId?, perPage?, page?, orderBy?, filter?, include? })`: Get messages for a thread with pagination and optional context inclusion
|
|
281
|
+
- `listMessagesById({ messageIds })`: Get specific messages by their IDs
|
|
282
|
+
- `updateMessages({ messages })`: Update existing messages
|
|
283
|
+
|
|
284
|
+
### Resource Operations
|
|
285
|
+
|
|
286
|
+
- `getResourceById({ resourceId })`: Get a resource by ID
|
|
287
|
+
- `saveResource({ resource })`: Create or save a resource
|
|
288
|
+
- `updateResource({ resourceId, workingMemory })`: Update resource working memory
|
|
289
|
+
|
|
290
|
+
### Workflow Operations
|
|
291
|
+
|
|
292
|
+
- `persistWorkflowSnapshot({ workflowName, runId, snapshot })`: Save workflow state
|
|
293
|
+
- `loadWorkflowSnapshot({ workflowName, runId })`: Load workflow state
|
|
294
|
+
- `listWorkflowRuns({ workflowName?, pagination? })`: List workflow runs with pagination
|
|
295
|
+
- `getWorkflowRunById({ runId, workflowName? })`: Get a specific workflow run
|
|
296
|
+
- `updateWorkflowState({ workflowName, runId, state })`: Update workflow state
|
|
297
|
+
- `updateWorkflowResults({ workflowName, runId, results })`: Update workflow results
|
|
298
|
+
|
|
299
|
+
### Evaluation/Scoring Operations
|
|
300
|
+
|
|
301
|
+
- `getScoreById({ id })`: Get a score by ID
|
|
302
|
+
- `saveScore(score)`: Save an evaluation score
|
|
303
|
+
- `listScoresByScorerId({ scorerId, pagination })`: List scores by scorer with pagination
|
|
304
|
+
- `listScoresByRunId({ runId, pagination })`: List scores by run with pagination
|
|
305
|
+
- `listScoresByEntityId({ entityId, entityType, pagination })`: List scores by entity with pagination
|
|
306
|
+
- `listScoresBySpan({ traceId, spanId, pagination })`: List scores by span with pagination
|
|
307
|
+
|
|
308
|
+
### Low-Level Operations
|
|
309
|
+
|
|
310
|
+
- `createTable({ tableName, schema })`: Create a new table with schema
|
|
311
|
+
- `dropTable({ tableName })`: Drop a table
|
|
312
|
+
- `clearTable({ tableName })`: Clear all records from a table
|
|
313
|
+
- `insert({ tableName, record })`: Insert a single record
|
|
314
|
+
- `batchInsert({ tableName, records })`: Insert multiple records
|
|
315
|
+
- `load({ tableName, keys })`: Load a record by keys
|
|
316
|
+
|
|
317
|
+
### Operations Not Currently Supported
|
|
318
|
+
|
|
319
|
+
- `deleteMessages(messageIds)`: Message deletion is not currently supported
|
|
320
|
+
- AI Observability (traces/spans): Not currently supported
|
package/dist/index.cjs
CHANGED
|
@@ -263,66 +263,6 @@ var StoreMemoryLance = class extends storage.MemoryStorage {
|
|
|
263
263
|
})() : message.content
|
|
264
264
|
};
|
|
265
265
|
}
|
|
266
|
-
async getMessages({
|
|
267
|
-
threadId,
|
|
268
|
-
resourceId,
|
|
269
|
-
selectBy,
|
|
270
|
-
threadConfig
|
|
271
|
-
}) {
|
|
272
|
-
try {
|
|
273
|
-
if (!threadId.trim()) throw new Error("threadId must be a non-empty string");
|
|
274
|
-
if (threadConfig) {
|
|
275
|
-
throw new Error("ThreadConfig is not supported by LanceDB storage");
|
|
276
|
-
}
|
|
277
|
-
const limit = storage.resolveMessageLimit({ last: selectBy?.last, defaultLimit: Number.MAX_SAFE_INTEGER });
|
|
278
|
-
const table = await this.client.openTable(storage.TABLE_MESSAGES);
|
|
279
|
-
let allRecords = [];
|
|
280
|
-
if (selectBy?.include && selectBy.include.length > 0) {
|
|
281
|
-
const threadIds = [...new Set(selectBy.include.map((item) => item.threadId))];
|
|
282
|
-
for (const threadId2 of threadIds) {
|
|
283
|
-
const threadQuery = table.query().where(`thread_id = '${threadId2}'`);
|
|
284
|
-
let threadRecords = await threadQuery.toArray();
|
|
285
|
-
allRecords.push(...threadRecords);
|
|
286
|
-
}
|
|
287
|
-
} else {
|
|
288
|
-
let query = table.query().where(`\`thread_id\` = '${threadId}'`);
|
|
289
|
-
allRecords = await query.toArray();
|
|
290
|
-
}
|
|
291
|
-
allRecords.sort((a, b) => {
|
|
292
|
-
const dateA = new Date(a.createdAt).getTime();
|
|
293
|
-
const dateB = new Date(b.createdAt).getTime();
|
|
294
|
-
return dateA - dateB;
|
|
295
|
-
});
|
|
296
|
-
if (selectBy?.include && selectBy.include.length > 0) {
|
|
297
|
-
allRecords = this.processMessagesWithContext(allRecords, selectBy.include);
|
|
298
|
-
}
|
|
299
|
-
if (limit !== Number.MAX_SAFE_INTEGER) {
|
|
300
|
-
allRecords = allRecords.slice(-limit);
|
|
301
|
-
}
|
|
302
|
-
const messages = processResultWithTypeConversion(
|
|
303
|
-
allRecords,
|
|
304
|
-
await getTableSchema({ tableName: storage.TABLE_MESSAGES, client: this.client })
|
|
305
|
-
);
|
|
306
|
-
const list = new agent.MessageList({ threadId, resourceId }).add(
|
|
307
|
-
messages.map(this.normalizeMessage),
|
|
308
|
-
"memory"
|
|
309
|
-
);
|
|
310
|
-
return { messages: list.get.all.db() };
|
|
311
|
-
} catch (error$1) {
|
|
312
|
-
throw new error.MastraError(
|
|
313
|
-
{
|
|
314
|
-
id: "LANCE_STORE_GET_MESSAGES_FAILED",
|
|
315
|
-
domain: error.ErrorDomain.STORAGE,
|
|
316
|
-
category: error.ErrorCategory.THIRD_PARTY,
|
|
317
|
-
details: {
|
|
318
|
-
threadId,
|
|
319
|
-
resourceId: resourceId ?? ""
|
|
320
|
-
}
|
|
321
|
-
},
|
|
322
|
-
error$1
|
|
323
|
-
);
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
266
|
async listMessagesById({ messageIds }) {
|
|
327
267
|
if (messageIds.length === 0) return { messages: [] };
|
|
328
268
|
try {
|
|
@@ -379,7 +319,7 @@ var StoreMemoryLance = class extends storage.MemoryStorage {
|
|
|
379
319
|
new Error("page must be >= 0")
|
|
380
320
|
);
|
|
381
321
|
}
|
|
382
|
-
const { field, direction } = this.parseOrderBy(orderBy);
|
|
322
|
+
const { field, direction } = this.parseOrderBy(orderBy, "ASC");
|
|
383
323
|
const table = await this.client.openTable(storage.TABLE_MESSAGES);
|
|
384
324
|
const conditions = [`thread_id = '${this.escapeSql(threadId)}'`];
|
|
385
325
|
if (resourceId) {
|
|
@@ -1615,11 +1555,13 @@ var StoreWorkflowsLance = class extends storage.WorkflowsStorage {
|
|
|
1615
1555
|
} else {
|
|
1616
1556
|
createdAt = now;
|
|
1617
1557
|
}
|
|
1558
|
+
const { status, value, ...rest } = snapshot;
|
|
1618
1559
|
const record = {
|
|
1619
1560
|
workflow_name: workflowName,
|
|
1620
1561
|
run_id: runId,
|
|
1621
1562
|
resourceId,
|
|
1622
|
-
snapshot: JSON.stringify(
|
|
1563
|
+
snapshot: JSON.stringify({ status, value, ...rest }),
|
|
1564
|
+
// this is to ensure status is always just before value, for when querying the db by status
|
|
1623
1565
|
createdAt,
|
|
1624
1566
|
updatedAt: now
|
|
1625
1567
|
};
|
|
@@ -1689,6 +1631,10 @@ var StoreWorkflowsLance = class extends storage.WorkflowsStorage {
|
|
|
1689
1631
|
if (args?.workflowName) {
|
|
1690
1632
|
conditions.push(`workflow_name = '${args.workflowName.replace(/'/g, "''")}'`);
|
|
1691
1633
|
}
|
|
1634
|
+
if (args?.status) {
|
|
1635
|
+
const escapedStatus = args.status.replace(/\\/g, "\\\\").replace(/'/g, "''").replace(/%/g, "\\%").replace(/_/g, "\\_");
|
|
1636
|
+
conditions.push(`\`snapshot\` LIKE '%"status":"${escapedStatus}","value"%'`);
|
|
1637
|
+
}
|
|
1692
1638
|
if (args?.resourceId) {
|
|
1693
1639
|
conditions.push(`\`resourceId\` = '${args.resourceId}'`);
|
|
1694
1640
|
}
|
|
@@ -1747,6 +1693,8 @@ var LanceStorage = class _LanceStorage extends storage.MastraStorage {
|
|
|
1747
1693
|
lanceClient;
|
|
1748
1694
|
/**
|
|
1749
1695
|
* Creates a new instance of LanceStorage
|
|
1696
|
+
* @param id The unique identifier for this storage instance
|
|
1697
|
+
* @param name The name for this storage instance
|
|
1750
1698
|
* @param uri The URI to connect to LanceDB
|
|
1751
1699
|
* @param options connection options
|
|
1752
1700
|
*
|
|
@@ -1754,21 +1702,21 @@ var LanceStorage = class _LanceStorage extends storage.MastraStorage {
|
|
|
1754
1702
|
*
|
|
1755
1703
|
* Connect to a local database
|
|
1756
1704
|
* ```ts
|
|
1757
|
-
* const store = await LanceStorage.create('/path/to/db');
|
|
1705
|
+
* const store = await LanceStorage.create('my-storage-id', 'MyStorage', '/path/to/db');
|
|
1758
1706
|
* ```
|
|
1759
1707
|
*
|
|
1760
1708
|
* Connect to a LanceDB cloud database
|
|
1761
1709
|
* ```ts
|
|
1762
|
-
* const store = await LanceStorage.create('db://host:port');
|
|
1710
|
+
* const store = await LanceStorage.create('my-storage-id', 'MyStorage', 'db://host:port');
|
|
1763
1711
|
* ```
|
|
1764
1712
|
*
|
|
1765
1713
|
* Connect to a cloud database
|
|
1766
1714
|
* ```ts
|
|
1767
|
-
* const store = await LanceStorage.create('s3://bucket/db', { storageOptions: { timeout: '60s' } });
|
|
1715
|
+
* const store = await LanceStorage.create('my-storage-id', 'MyStorage', 's3://bucket/db', { storageOptions: { timeout: '60s' } });
|
|
1768
1716
|
* ```
|
|
1769
1717
|
*/
|
|
1770
|
-
static async create(name, uri, options) {
|
|
1771
|
-
const instance = new _LanceStorage(name);
|
|
1718
|
+
static async create(id, name, uri, options) {
|
|
1719
|
+
const instance = new _LanceStorage(id, name);
|
|
1772
1720
|
try {
|
|
1773
1721
|
instance.lanceClient = await lancedb.connect(uri, options);
|
|
1774
1722
|
const operations = new StoreOperationsLance({ client: instance.lanceClient });
|
|
@@ -1796,8 +1744,8 @@ var LanceStorage = class _LanceStorage extends storage.MastraStorage {
|
|
|
1796
1744
|
* @internal
|
|
1797
1745
|
* Private constructor to enforce using the create factory method
|
|
1798
1746
|
*/
|
|
1799
|
-
constructor(name) {
|
|
1800
|
-
super({ name });
|
|
1747
|
+
constructor(id, name) {
|
|
1748
|
+
super({ id, name });
|
|
1801
1749
|
const operations = new StoreOperationsLance({ client: this.lanceClient });
|
|
1802
1750
|
this.stores = {
|
|
1803
1751
|
operations: new StoreOperationsLance({ client: this.lanceClient }),
|
|
@@ -1926,14 +1874,6 @@ var LanceStorage = class _LanceStorage extends storage.MastraStorage {
|
|
|
1926
1874
|
});
|
|
1927
1875
|
return Array.from(allIndices).sort((a, b) => a - b).map((index) => records[index]);
|
|
1928
1876
|
}
|
|
1929
|
-
async getMessages({
|
|
1930
|
-
threadId,
|
|
1931
|
-
resourceId,
|
|
1932
|
-
selectBy,
|
|
1933
|
-
threadConfig
|
|
1934
|
-
}) {
|
|
1935
|
-
return this.stores.memory.getMessages({ threadId, resourceId, selectBy, threadConfig });
|
|
1936
|
-
}
|
|
1937
1877
|
async listMessagesById({ messageIds }) {
|
|
1938
1878
|
return this.stores.memory.listMessagesById({ messageIds });
|
|
1939
1879
|
}
|
|
@@ -2361,7 +2301,7 @@ var LanceVectorStore = class _LanceVectorStore extends vector.MastraVector {
|
|
|
2361
2301
|
* ```
|
|
2362
2302
|
*/
|
|
2363
2303
|
static async create(uri, options) {
|
|
2364
|
-
const instance = new _LanceVectorStore();
|
|
2304
|
+
const instance = new _LanceVectorStore(options?.id || crypto.randomUUID());
|
|
2365
2305
|
try {
|
|
2366
2306
|
instance.lanceClient = await lancedb.connect(uri, options);
|
|
2367
2307
|
return instance;
|
|
@@ -2381,8 +2321,8 @@ var LanceVectorStore = class _LanceVectorStore extends vector.MastraVector {
|
|
|
2381
2321
|
* @internal
|
|
2382
2322
|
* Private constructor to enforce using the create factory method
|
|
2383
2323
|
*/
|
|
2384
|
-
constructor() {
|
|
2385
|
-
super();
|
|
2324
|
+
constructor(id) {
|
|
2325
|
+
super({ id });
|
|
2386
2326
|
}
|
|
2387
2327
|
close() {
|
|
2388
2328
|
if (this.lanceClient) {
|