@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 CHANGED
@@ -1,11 +1,15 @@
1
1
  # @mastra/lance
2
2
 
3
- ## 0.0.0-vnext-20251104230439
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-vnext-20251104230439
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.getMessages({
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.getMessages({
178
+ // Retrieve messages with pagination and context
179
+ const retrievedMessages = await storage.listMessages({
180
180
  threadId: '123e4567-e89b-12d3-a456-426614174010',
181
- selectBy: [
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(snapshot),
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) {