@mastra/pg 1.0.0-beta.1 → 1.0.0-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +548 -0
  2. package/README.md +3 -0
  3. package/dist/index.cjs +3239 -2110
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.d.ts +1 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +3232 -2108
  8. package/dist/index.js.map +1 -1
  9. package/dist/shared/config.d.ts +121 -31
  10. package/dist/shared/config.d.ts.map +1 -1
  11. package/dist/storage/client.d.ts +91 -0
  12. package/dist/storage/client.d.ts.map +1 -0
  13. package/dist/storage/db/index.d.ts +170 -0
  14. package/dist/storage/db/index.d.ts.map +1 -0
  15. package/dist/storage/domains/agents/index.d.ts +39 -0
  16. package/dist/storage/domains/agents/index.d.ts.map +1 -0
  17. package/dist/storage/domains/memory/index.d.ts +30 -11
  18. package/dist/storage/domains/memory/index.d.ts.map +1 -1
  19. package/dist/storage/domains/observability/index.d.ts +29 -36
  20. package/dist/storage/domains/observability/index.d.ts.map +1 -1
  21. package/dist/storage/domains/scores/index.d.ts +26 -29
  22. package/dist/storage/domains/scores/index.d.ts.map +1 -1
  23. package/dist/storage/domains/utils.d.ts +1 -5
  24. package/dist/storage/domains/utils.d.ts.map +1 -1
  25. package/dist/storage/domains/workflows/index.d.ts +30 -19
  26. package/dist/storage/domains/workflows/index.d.ts.map +1 -1
  27. package/dist/storage/index.d.ts +51 -195
  28. package/dist/storage/index.d.ts.map +1 -1
  29. package/dist/storage/performance-indexes/performance-test.d.ts +3 -1
  30. package/dist/storage/performance-indexes/performance-test.d.ts.map +1 -1
  31. package/dist/storage/test-utils.d.ts.map +1 -1
  32. package/dist/vector/index.d.ts +42 -6
  33. package/dist/vector/index.d.ts.map +1 -1
  34. package/dist/vector/sql-builder.d.ts +4 -0
  35. package/dist/vector/sql-builder.d.ts.map +1 -1
  36. package/dist/vector/types.d.ts +10 -0
  37. package/dist/vector/types.d.ts.map +1 -1
  38. package/package.json +6 -8
  39. package/dist/storage/domains/operations/index.d.ts +0 -119
  40. package/dist/storage/domains/operations/index.d.ts.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,553 @@
1
1
  # @mastra/pg
2
2
 
3
+ ## 1.0.0-beta.11
4
+
5
+ ### Minor Changes
6
+
7
+ - Remove pg-promise dependency and use pg.Pool directly ([#11450](https://github.com/mastra-ai/mastra/pull/11450))
8
+
9
+ **BREAKING CHANGE**: This release replaces pg-promise with vanilla node-postgres (`pg`).
10
+
11
+ ### Breaking Changes
12
+ - **Removed `store.pgp`**: The pg-promise library instance is no longer exposed
13
+ - **Config change**: `{ client: pgPromiseDb }` is no longer supported. Use `{ pool: pgPool }` instead
14
+ - **Cloud SQL config**: `max` and `idleTimeoutMillis` must now be passed via `pgPoolOptions`
15
+
16
+ ### New Features
17
+ - **`store.pool`**: Exposes the underlying `pg.Pool` for direct database access or ORM integration (e.g., Drizzle)
18
+ - **`store.db`**: Provides a `DbClient` interface with methods like `one()`, `any()`, `tx()`, etc.
19
+ - **`store.db.connect()`**: Acquire a client for session-level operations
20
+
21
+ ### Migration
22
+
23
+ ```typescript
24
+ // Before (pg-promise)
25
+ import pgPromise from 'pg-promise';
26
+ const pgp = pgPromise();
27
+ const client = pgp(connectionString);
28
+ const store = new PostgresStore({ id: 'my-store', client });
29
+
30
+ // After (pg.Pool)
31
+ import { Pool } from 'pg';
32
+ const pool = new Pool({ connectionString });
33
+ const store = new PostgresStore({ id: 'my-store', pool });
34
+
35
+ // Use store.pool with any library that accepts a pg.Pool
36
+ ```
37
+
38
+ ### Patch Changes
39
+
40
+ - Added `exportSchemas()` function to generate Mastra database schema as SQL DDL without a database connection. ([#11448](https://github.com/mastra-ai/mastra/pull/11448))
41
+
42
+ **What's New**
43
+
44
+ You can now export your Mastra database schema as SQL DDL statements without connecting to a database. This is useful for:
45
+ - Generating migration scripts
46
+ - Reviewing the schema before deployment
47
+ - Creating database schemas in environments where the application doesn't have CREATE privileges
48
+
49
+ **Example**
50
+
51
+ ```typescript
52
+ import { exportSchemas } from '@mastra/pg';
53
+
54
+ // Export schema for default 'public' schema
55
+ const ddl = exportSchemas();
56
+ console.log(ddl);
57
+
58
+ // Export schema for a custom schema
59
+ const customDdl = exportSchemas('my_schema');
60
+ // Creates: CREATE SCHEMA IF NOT EXISTS "my_schema"; and all tables within it
61
+ ```
62
+
63
+ - Updated dependencies [[`e54953e`](https://github.com/mastra-ai/mastra/commit/e54953ed8ce1b28c0d62a19950163039af7834b4), [`7d56d92`](https://github.com/mastra-ai/mastra/commit/7d56d9213886e8353956d7d40df10045fd12b299), [`fdac646`](https://github.com/mastra-ai/mastra/commit/fdac646033a0930a1a4e00d13aa64c40bb7f1e02), [`d07b568`](https://github.com/mastra-ai/mastra/commit/d07b5687819ea8cb1dffa776d0c1765faf4aa1ae), [`68ec97d`](https://github.com/mastra-ai/mastra/commit/68ec97d4c07c6393fcf95c2481fc5d73da99f8c8), [`4aa55b3`](https://github.com/mastra-ai/mastra/commit/4aa55b383cf06043943359ea316572fd969861a7)]:
64
+ - @mastra/core@1.0.0-beta.19
65
+
66
+ ## 1.0.0-beta.10
67
+
68
+ ### Patch Changes
69
+
70
+ - Fix missing timezone columns during PostgreSQL spans table migration ([#11419](https://github.com/mastra-ai/mastra/pull/11419))
71
+
72
+ Fixes issue #11410 where users upgrading to observability beta.7 encountered errors about missing `startedAtZ`, `endedAtZ`, `createdAtZ`, and `updatedAtZ` columns. The migration now properly adds timezone-aware columns for all timestamp fields when upgrading existing databases, ensuring compatibility with the new observability implementation that requires these columns for batch operations.
73
+
74
+ - Add storage composition to MastraStorage ([#11401](https://github.com/mastra-ai/mastra/pull/11401))
75
+
76
+ `MastraStorage` can now compose storage domains from different adapters. Use it when you need different databases for different purposes - for example, PostgreSQL for memory and workflows, but a different database for observability.
77
+
78
+ ```typescript
79
+ import { MastraStorage } from '@mastra/core/storage';
80
+ import { MemoryPG, WorkflowsPG, ScoresPG } from '@mastra/pg';
81
+ import { MemoryLibSQL } from '@mastra/libsql';
82
+
83
+ // Compose domains from different stores
84
+ const storage = new MastraStorage({
85
+ id: 'composite',
86
+ domains: {
87
+ memory: new MemoryLibSQL({ url: 'file:./local.db' }),
88
+ workflows: new WorkflowsPG({ connectionString: process.env.DATABASE_URL }),
89
+ scores: new ScoresPG({ connectionString: process.env.DATABASE_URL }),
90
+ },
91
+ });
92
+ ```
93
+
94
+ **Breaking changes:**
95
+ - `storage.supports` property no longer exists
96
+ - `StorageSupports` type is no longer exported from `@mastra/core/storage`
97
+
98
+ All stores now support the same features. For domain availability, use `getStore()`:
99
+
100
+ ```typescript
101
+ const store = await storage.getStore('memory');
102
+ if (store) {
103
+ // domain is available
104
+ }
105
+ ```
106
+
107
+ - Updated dependencies [[`3d93a15`](https://github.com/mastra-ai/mastra/commit/3d93a15796b158c617461c8b98bede476ebb43e2), [`efe406a`](https://github.com/mastra-ai/mastra/commit/efe406a1353c24993280ebc2ed61dd9f65b84b26), [`119e5c6`](https://github.com/mastra-ai/mastra/commit/119e5c65008f3e5cfca954eefc2eb85e3bf40da4), [`74e504a`](https://github.com/mastra-ai/mastra/commit/74e504a3b584eafd2f198001c6a113bbec589fd3), [`e33fdbd`](https://github.com/mastra-ai/mastra/commit/e33fdbd07b33920d81e823122331b0c0bee0bb59), [`929f69c`](https://github.com/mastra-ai/mastra/commit/929f69c3436fa20dd0f0e2f7ebe8270bd82a1529), [`8a73529`](https://github.com/mastra-ai/mastra/commit/8a73529ca01187f604b1f3019d0a725ac63ae55f)]:
108
+ - @mastra/core@1.0.0-beta.16
109
+
110
+ ## 1.0.0-beta.9
111
+
112
+ ### Minor Changes
113
+
114
+ - Introduce StorageDomain base class for composite storage support ([#11249](https://github.com/mastra-ai/mastra/pull/11249))
115
+
116
+ Storage adapters now use a domain-based architecture where each domain (memory, workflows, scores, observability, agents) extends a `StorageDomain` base class with `init()` and `dangerouslyClearAll()` methods.
117
+
118
+ **Key changes:**
119
+ - Add `StorageDomain` abstract base class that all domain storage classes extend
120
+ - Add `InMemoryDB` class for shared state across in-memory domain implementations
121
+ - All storage domains now implement `dangerouslyClearAll()` for test cleanup
122
+ - Remove `operations` from public `StorageDomains` type (now internal to each adapter)
123
+ - Add flexible client/config patterns - domains accept either an existing database client or config to create one internally
124
+
125
+ **Why this matters:**
126
+
127
+ This enables composite storage where you can use different database adapters per domain:
128
+
129
+ ```typescript
130
+ import { Mastra } from '@mastra/core';
131
+ import { PostgresStore } from '@mastra/pg';
132
+ import { ClickhouseStore } from '@mastra/clickhouse';
133
+
134
+ // Use Postgres for most domains but Clickhouse for observability
135
+ const mastra = new Mastra({
136
+ storage: new PostgresStore({
137
+ connectionString: 'postgres://...',
138
+ }),
139
+ // Future: override specific domains
140
+ // observability: new ClickhouseStore({ ... }).getStore('observability'),
141
+ });
142
+ ```
143
+
144
+ **Standalone domain usage:**
145
+
146
+ Domains can now be used independently with flexible configuration:
147
+
148
+ ```typescript
149
+ import { MemoryLibSQL } from '@mastra/libsql/memory';
150
+
151
+ // Option 1: Pass config to create client internally
152
+ const memory = new MemoryLibSQL({
153
+ url: 'file:./local.db',
154
+ });
155
+
156
+ // Option 2: Pass existing client for shared connections
157
+ import { createClient } from '@libsql/client';
158
+ const client = createClient({ url: 'file:./local.db' });
159
+ const memory = new MemoryLibSQL({ client });
160
+ ```
161
+
162
+ **Breaking changes:**
163
+ - `StorageDomains` type no longer includes `operations` - access via `getStore()` instead
164
+ - Domain base classes now require implementing `dangerouslyClearAll()` method
165
+
166
+ - Refactor storage architecture to use domain-specific stores via `getStore()` pattern ([#11361](https://github.com/mastra-ai/mastra/pull/11361))
167
+
168
+ ### Summary
169
+
170
+ This release introduces a new storage architecture that replaces passthrough methods on `MastraStorage` with domain-specific storage interfaces accessed via `getStore()`. This change reduces code duplication across storage adapters and provides a cleaner, more modular API.
171
+
172
+ ### Migration Guide
173
+
174
+ All direct method calls on storage instances should be updated to use `getStore()`:
175
+
176
+ ```typescript
177
+ // Before
178
+ const thread = await storage.getThreadById({ threadId });
179
+ await storage.persistWorkflowSnapshot({ workflowName, runId, snapshot });
180
+ await storage.createSpan(span);
181
+
182
+ // After
183
+ const memory = await storage.getStore('memory');
184
+ const thread = await memory?.getThreadById({ threadId });
185
+
186
+ const workflows = await storage.getStore('workflows');
187
+ await workflows?.persistWorkflowSnapshot({ workflowName, runId, snapshot });
188
+
189
+ const observability = await storage.getStore('observability');
190
+ await observability?.createSpan(span);
191
+ ```
192
+
193
+ ### Available Domains
194
+ - **`memory`**: Thread and message operations (`getThreadById`, `saveThread`, `saveMessages`, etc.)
195
+ - **`workflows`**: Workflow state persistence (`persistWorkflowSnapshot`, `loadWorkflowSnapshot`, `getWorkflowRunById`, etc.)
196
+ - **`scores`**: Evaluation scores (`saveScore`, `listScoresByScorerId`, etc.)
197
+ - **`observability`**: Tracing and spans (`createSpan`, `updateSpan`, `getTrace`, etc.)
198
+ - **`agents`**: Stored agent configurations (`createAgent`, `getAgentById`, `listAgents`, etc.)
199
+
200
+ ### Breaking Changes
201
+ - Passthrough methods have been removed from `MastraStorage` base class
202
+ - All storage adapters now require accessing domains via `getStore()`
203
+ - The `stores` property on storage instances is now the canonical way to access domain storage
204
+
205
+ ### Internal Changes
206
+ - Each storage adapter now initializes domain-specific stores in its constructor
207
+ - Domain stores share database connections and handle their own table initialization
208
+
209
+ - Unified observability schema with entity-based span identification ([#11132](https://github.com/mastra-ai/mastra/pull/11132))
210
+
211
+ ## What changed
212
+
213
+ Spans now use a unified identification model with `entityId`, `entityType`, and `entityName` instead of separate `agentId`, `toolId`, `workflowId` fields.
214
+
215
+ **Before:**
216
+
217
+ ```typescript
218
+ // Old span structure
219
+ span.agentId; // 'my-agent'
220
+ span.toolId; // undefined
221
+ span.workflowId; // undefined
222
+ ```
223
+
224
+ **After:**
225
+
226
+ ```typescript
227
+ // New span structure
228
+ span.entityType; // EntityType.AGENT
229
+ span.entityId; // 'my-agent'
230
+ span.entityName; // 'My Agent'
231
+ ```
232
+
233
+ ## New `listTraces()` API
234
+
235
+ Query traces with filtering, pagination, and sorting:
236
+
237
+ ```typescript
238
+ const { spans, pagination } = await storage.listTraces({
239
+ filters: {
240
+ entityType: EntityType.AGENT,
241
+ entityId: 'my-agent',
242
+ userId: 'user-123',
243
+ environment: 'production',
244
+ status: TraceStatus.SUCCESS,
245
+ startedAt: { start: new Date('2024-01-01'), end: new Date('2024-01-31') },
246
+ },
247
+ pagination: { page: 0, perPage: 50 },
248
+ orderBy: { field: 'startedAt', direction: 'DESC' },
249
+ });
250
+ ```
251
+
252
+ **Available filters:** date ranges (`startedAt`, `endedAt`), entity (`entityType`, `entityId`, `entityName`), identity (`userId`, `organizationId`), correlation IDs (`runId`, `sessionId`, `threadId`), deployment (`environment`, `source`, `serviceName`), `tags`, `metadata`, and `status`.
253
+
254
+ ## New retrieval methods
255
+ - `getSpan({ traceId, spanId })` - Get a single span
256
+ - `getRootSpan({ traceId })` - Get the root span of a trace
257
+ - `getTrace({ traceId })` - Get all spans for a trace
258
+
259
+ ## Backward compatibility
260
+
261
+ The legacy `getTraces()` method continues to work. When you pass `name: "agent run: my-agent"`, it automatically transforms to `entityId: "my-agent", entityType: AGENT`.
262
+
263
+ ## Migration
264
+
265
+ **Automatic:** SQL-based stores (PostgreSQL, LibSQL, MSSQL) automatically add new columns to existing `spans` tables on initialization. Existing data is preserved with new columns set to `NULL`.
266
+
267
+ **No action required:** Your existing code continues to work. Adopt the new fields and `listTraces()` API at your convenience.
268
+
269
+ ### Patch Changes
270
+
271
+ - Fix severe performance issue with semantic recall on large message tables ([#11365](https://github.com/mastra-ai/mastra/pull/11365))
272
+
273
+ The `_getIncludedMessages` method was using `ROW_NUMBER() OVER (ORDER BY createdAt)` which scanned all messages in a thread to assign row numbers. On tables with 1M+ rows, this caused 5-10 minute query times.
274
+
275
+ Replaced with cursor-based pagination using the existing `(thread_id, createdAt)` index:
276
+
277
+ ```sql
278
+ -- Before: scans entire thread
279
+ ROW_NUMBER() OVER (ORDER BY "createdAt" ASC)
280
+
281
+ -- After: uses index, fetches only needed rows
282
+ WHERE createdAt <= (target) ORDER BY createdAt DESC LIMIT N
283
+ ```
284
+
285
+ Performance improvement: ~49x faster (832ms → 17ms) for typical semantic recall queries.
286
+
287
+ - Added pre-configured client support for all storage adapters. ([#11302](https://github.com/mastra-ai/mastra/pull/11302))
288
+
289
+ **What changed**
290
+
291
+ All storage adapters now accept pre-configured database clients in addition to connection credentials. This allows you to customize client settings (connection pools, timeouts, interceptors) before passing them to Mastra.
292
+
293
+ **Example**
294
+
295
+ ```typescript
296
+ import { createClient } from '@clickhouse/client';
297
+ import { ClickhouseStore } from '@mastra/clickhouse';
298
+
299
+ // Create and configure client with custom settings
300
+ const client = createClient({
301
+ url: 'http://localhost:8123',
302
+ username: 'default',
303
+ password: '',
304
+ request_timeout: 60000,
305
+ });
306
+
307
+ // Pass pre-configured client to store
308
+ const store = new ClickhouseStore({
309
+ id: 'my-store',
310
+ client,
311
+ });
312
+ ```
313
+
314
+ **Additional improvements**
315
+ - Added input validation for required connection parameters (URL, credentials) with clear error messages
316
+
317
+ - Add index configuration options to storage stores ([#11311](https://github.com/mastra-ai/mastra/pull/11311))
318
+
319
+ Storage stores now support two new configuration options for index management:
320
+ - `skipDefaultIndexes`: When `true`, default performance indexes are not created during `init()`. Useful for custom index strategies or reducing initialization time.
321
+ - `indexes`: Array of custom index definitions to create during `init()`. Indexes are routed to the appropriate domain based on table/collection name.
322
+
323
+ ```typescript
324
+ // Skip default indexes and use custom ones
325
+ const store = new PostgresStore({
326
+ connectionString: '...',
327
+ skipDefaultIndexes: true,
328
+ indexes: [{ name: 'threads_type_idx', table: 'mastra_threads', columns: ["metadata->>'type'"] }],
329
+ });
330
+
331
+ // MongoDB equivalent
332
+ const mongoStore = new MongoDBStore({
333
+ url: 'mongodb://...',
334
+ skipDefaultIndexes: true,
335
+ indexes: [{ collection: 'mastra_threads', keys: { 'metadata.type': 1 }, options: { name: 'threads_type_idx' } }],
336
+ });
337
+ ```
338
+
339
+ Domain classes (e.g., `MemoryPG`, `MemoryStorageMongoDB`) also accept these options for standalone usage.
340
+
341
+ - Updated dependencies [[`33a4d2e`](https://github.com/mastra-ai/mastra/commit/33a4d2e4ed8af51f69256232f00c34d6b6b51d48), [`4aaa844`](https://github.com/mastra-ai/mastra/commit/4aaa844a4f19d054490f43638a990cc57bda8d2f), [`4a1a6cb`](https://github.com/mastra-ai/mastra/commit/4a1a6cb3facad54b2bb6780b00ce91d6de1edc08), [`31d13d5`](https://github.com/mastra-ai/mastra/commit/31d13d5fdc2e2380e2e3ee3ec9fb29d2a00f265d), [`4c62166`](https://github.com/mastra-ai/mastra/commit/4c621669f4a29b1f443eca3ba70b814afa286266), [`7bcbf10`](https://github.com/mastra-ai/mastra/commit/7bcbf10133516e03df964b941f9a34e9e4ab4177), [`4353600`](https://github.com/mastra-ai/mastra/commit/43536005a65988a8eede236f69122e7f5a284ba2), [`6986fb0`](https://github.com/mastra-ai/mastra/commit/6986fb064f5db6ecc24aa655e1d26529087b43b3), [`053e979`](https://github.com/mastra-ai/mastra/commit/053e9793b28e970086b0507f7f3b76ea32c1e838), [`e26dc9c`](https://github.com/mastra-ai/mastra/commit/e26dc9c3ccfec54ae3dc3e2b2589f741f9ae60a6), [`55edf73`](https://github.com/mastra-ai/mastra/commit/55edf7302149d6c964fbb7908b43babfc2b52145), [`27c0009`](https://github.com/mastra-ai/mastra/commit/27c0009777a6073d7631b0eb7b481d94e165b5ca), [`dee388d`](https://github.com/mastra-ai/mastra/commit/dee388dde02f2e63c53385ae69252a47ab6825cc), [`3f3fc30`](https://github.com/mastra-ai/mastra/commit/3f3fc3096f24c4a26cffeecfe73085928f72aa63), [`d90ea65`](https://github.com/mastra-ai/mastra/commit/d90ea6536f7aa51c6545a4e9215b55858e98e16d), [`d171e55`](https://github.com/mastra-ai/mastra/commit/d171e559ead9f52ec728d424844c8f7b164c4510), [`10c2735`](https://github.com/mastra-ai/mastra/commit/10c27355edfdad1ee2b826b897df74125eb81fb8), [`1924cf0`](https://github.com/mastra-ai/mastra/commit/1924cf06816e5e4d4d5333065ec0f4bb02a97799), [`b339816`](https://github.com/mastra-ai/mastra/commit/b339816df0984d0243d944ac2655d6ba5f809cde)]:
342
+ - @mastra/core@1.0.0-beta.15
343
+
344
+ ## 1.0.0-beta.8
345
+
346
+ ### Patch Changes
347
+
348
+ - Preserve error details when thrown from workflow steps ([#10992](https://github.com/mastra-ai/mastra/pull/10992))
349
+
350
+ Workflow errors now retain custom properties like `statusCode`, `responseHeaders`, and `cause` chains. This enables error-specific recovery logic in your applications.
351
+
352
+ **Before:**
353
+
354
+ ```typescript
355
+ const result = await workflow.execute({ input });
356
+ if (result.status === 'failed') {
357
+ // Custom error properties were lost
358
+ console.log(result.error); // "Step execution failed" (just a string)
359
+ }
360
+ ```
361
+
362
+ **After:**
363
+
364
+ ```typescript
365
+ const result = await workflow.execute({ input });
366
+ if (result.status === 'failed') {
367
+ // Custom properties are preserved
368
+ console.log(result.error.message); // "Step execution failed"
369
+ console.log(result.error.statusCode); // 429
370
+ console.log(result.error.cause?.name); // "RateLimitError"
371
+ }
372
+ ```
373
+
374
+ **Type change:** `WorkflowState.error` and `WorkflowRunState.error` types changed from `string | Error` to `SerializedError`.
375
+
376
+ Other changes:
377
+ - Added `UpdateWorkflowStateOptions` type for workflow state updates
378
+
379
+ - fix: make getSqlType consistent across storage adapters ([#11112](https://github.com/mastra-ai/mastra/pull/11112))
380
+ - PostgreSQL: use `getSqlType()` in `createTable` instead of `toUpperCase()`
381
+ - LibSQL: use `getSqlType()` in `createTable`, return `JSONB` for jsonb type (matches SQLite 3.45+ support)
382
+ - ClickHouse: use `getSqlType()` in `createTable` instead of `COLUMN_TYPES` constant, add missing types (uuid, float, boolean)
383
+ - Remove unused `getSqlType()` and `getDefaultValue()` from `MastraStorage` base class (all stores use `StoreOperations` versions)
384
+
385
+ - Updated dependencies [[`d5ed981`](https://github.com/mastra-ai/mastra/commit/d5ed981c8701c1b8a27a5f35a9a2f7d9244e695f), [`9650cce`](https://github.com/mastra-ai/mastra/commit/9650cce52a1d917ff9114653398e2a0f5c3ba808), [`932d63d`](https://github.com/mastra-ai/mastra/commit/932d63dd51be9c8bf1e00e3671fe65606c6fb9cd), [`b760b73`](https://github.com/mastra-ai/mastra/commit/b760b731aca7c8a3f041f61d57a7f125ae9cb215), [`695a621`](https://github.com/mastra-ai/mastra/commit/695a621528bdabeb87f83c2277cf2bb084c7f2b4), [`2b459f4`](https://github.com/mastra-ai/mastra/commit/2b459f466fd91688eeb2a44801dc23f7f8a887ab), [`486352b`](https://github.com/mastra-ai/mastra/commit/486352b66c746602b68a95839f830de14c7fb8c0), [`09e4bae`](https://github.com/mastra-ai/mastra/commit/09e4bae18dd5357d2ae078a4a95a2af32168ab08), [`24b76d8`](https://github.com/mastra-ai/mastra/commit/24b76d8e17656269c8ed09a0c038adb9cc2ae95a), [`243a823`](https://github.com/mastra-ai/mastra/commit/243a8239c5906f5c94e4f78b54676793f7510ae3), [`486352b`](https://github.com/mastra-ai/mastra/commit/486352b66c746602b68a95839f830de14c7fb8c0), [`c61fac3`](https://github.com/mastra-ai/mastra/commit/c61fac3add96f0dcce0208c07415279e2537eb62), [`6f14f70`](https://github.com/mastra-ai/mastra/commit/6f14f706ccaaf81b69544b6c1b75ab66a41e5317), [`09e4bae`](https://github.com/mastra-ai/mastra/commit/09e4bae18dd5357d2ae078a4a95a2af32168ab08), [`4524734`](https://github.com/mastra-ai/mastra/commit/45247343e384717a7c8404296275c56201d6470f), [`2a53598`](https://github.com/mastra-ai/mastra/commit/2a53598c6d8cfeb904a7fc74e57e526d751c8fa6), [`c7cd3c7`](https://github.com/mastra-ai/mastra/commit/c7cd3c7a187d7aaf79e2ca139de328bf609a14b4), [`847c212`](https://github.com/mastra-ai/mastra/commit/847c212caba7df0d6f2fc756b494ac3c75c3720d), [`6f941c4`](https://github.com/mastra-ai/mastra/commit/6f941c438ca5f578619788acc7608fc2e23bd176)]:
386
+ - @mastra/core@1.0.0-beta.12
387
+
388
+ ## 1.0.0-beta.7
389
+
390
+ ### Patch Changes
391
+
392
+ - Add delete workflow run API ([#10991](https://github.com/mastra-ai/mastra/pull/10991))
393
+
394
+ ```typescript
395
+ await workflow.deleteWorkflowRunById(runId);
396
+ ```
397
+
398
+ - Add halfvec type support for large dimension embeddings ([#11002](https://github.com/mastra-ai/mastra/pull/11002))
399
+
400
+ Adds `vectorType` option to `createIndex()` for choosing between full precision (`vector`) and half precision (`halfvec`) storage. halfvec uses 2 bytes per dimension instead of 4, enabling indexes on embeddings up to 4000 dimensions.
401
+
402
+ ```typescript
403
+ await pgVector.createIndex({
404
+ indexName: 'large-embeddings',
405
+ dimension: 3072, // text-embedding-3-large
406
+ metric: 'cosine',
407
+ vectorType: 'halfvec',
408
+ });
409
+ ```
410
+
411
+ Requires pgvector >= 0.7.0 for halfvec support. Docker compose files updated to use pgvector 0.8.0.
412
+
413
+ - Updated dependencies [[`edb07e4`](https://github.com/mastra-ai/mastra/commit/edb07e49283e0c28bd094a60e03439bf6ecf0221), [`b7e17d3`](https://github.com/mastra-ai/mastra/commit/b7e17d3f5390bb5a71efc112204413656fcdc18d), [`261473a`](https://github.com/mastra-ai/mastra/commit/261473ac637e633064a22076671e2e02b002214d), [`5d7000f`](https://github.com/mastra-ai/mastra/commit/5d7000f757cd65ea9dc5b05e662fd83dfd44e932), [`4f0331a`](https://github.com/mastra-ai/mastra/commit/4f0331a79bf6eb5ee598a5086e55de4b5a0ada03), [`8a000da`](https://github.com/mastra-ai/mastra/commit/8a000da0c09c679a2312f6b3aa05b2ca78ca7393)]:
414
+ - @mastra/core@1.0.0-beta.10
415
+
416
+ ## 1.0.0-beta.6
417
+
418
+ ### Minor Changes
419
+
420
+ - Add stored agents support ([#10953](https://github.com/mastra-ai/mastra/pull/10953))
421
+
422
+ Agents can now be stored in the database and loaded at runtime. This lets you persist agent configurations and dynamically create executable Agent instances from storage.
423
+
424
+ ```typescript
425
+ import { Mastra } from '@mastra/core';
426
+ import { LibSQLStore } from '@mastra/libsql';
427
+
428
+ const mastra = new Mastra({
429
+ storage: new LibSQLStore({ url: ':memory:' }),
430
+ tools: { myTool },
431
+ scorers: { myScorer },
432
+ });
433
+
434
+ // Create agent in storage via API or directly
435
+ await mastra.getStorage().createAgent({
436
+ agent: {
437
+ id: 'my-agent',
438
+ name: 'My Agent',
439
+ instructions: 'You are helpful',
440
+ model: { provider: 'openai', name: 'gpt-4' },
441
+ tools: { myTool: {} },
442
+ scorers: { myScorer: { sampling: { type: 'ratio', rate: 0.5 } } },
443
+ },
444
+ });
445
+
446
+ // Load and use the agent
447
+ const agent = await mastra.getStoredAgentById('my-agent');
448
+ const response = await agent.generate({ messages: 'Hello!' });
449
+
450
+ // List all stored agents with pagination
451
+ const { agents, total, hasMore } = await mastra.listStoredAgents({
452
+ page: 0,
453
+ perPage: 10,
454
+ });
455
+ ```
456
+
457
+ Also adds a memory registry to Mastra so stored agents can reference memory instances by key.
458
+
459
+ ### Patch Changes
460
+
461
+ - Updated dependencies [[`72df8ae`](https://github.com/mastra-ai/mastra/commit/72df8ae595584cdd7747d5c39ffaca45e4507227), [`9198899`](https://github.com/mastra-ai/mastra/commit/91988995c427b185c33714b7f3be955367911324), [`653e65a`](https://github.com/mastra-ai/mastra/commit/653e65ae1f9502c2958a32f47a5a2df11e612a92), [`c6fd6fe`](https://github.com/mastra-ai/mastra/commit/c6fd6fedd09e9cf8004b03a80925f5e94826ad7e), [`0bed332`](https://github.com/mastra-ai/mastra/commit/0bed332843f627202c6520eaf671771313cd20f3)]:
462
+ - @mastra/core@1.0.0-beta.9
463
+
464
+ ## 1.0.0-beta.5
465
+
466
+ ### Patch Changes
467
+
468
+ - Fix saveScore not persisting ID correctly, breaking getScoreById retrieval ([#10915](https://github.com/mastra-ai/mastra/pull/10915))
469
+
470
+ **What Changed**
471
+ - saveScore now correctly returns scores that can be retrieved with getScoreById
472
+ - Validation errors now include contextual information (scorer, entity, trace details) for easier debugging
473
+
474
+ **Impact**
475
+ Previously, calling getScoreById after saveScore would return null because the generated ID wasn't persisted to the database. This is now fixed across all store implementations, ensuring consistent behavior and data integrity.
476
+
477
+ - PostgresStore was setting `this.stores = {}` in the constructor and only populating it in the async `init()` method. This broke Memory because it checks `storage.stores.memory` synchronously in `getInputProcessors()` before `init()` is called. ([#10943](https://github.com/mastra-ai/mastra/pull/10943))
478
+
479
+ The fix moves domain instance creation to the constructor. This is safe because pg-promise creates database connections lazily when queries are executed.
480
+
481
+ - Updated dependencies [[`0d41fe2`](https://github.com/mastra-ai/mastra/commit/0d41fe245355dfc66d61a0d9c85d9400aac351ff), [`6b3ba91`](https://github.com/mastra-ai/mastra/commit/6b3ba91494cc10394df96782f349a4f7b1e152cc), [`7907fd1`](https://github.com/mastra-ai/mastra/commit/7907fd1c5059813b7b870b81ca71041dc807331b)]:
482
+ - @mastra/core@1.0.0-beta.8
483
+
484
+ ## 1.0.0-beta.4
485
+
486
+ ### Minor Changes
487
+
488
+ - Add `disableInit` option to all storage adapters ([#10851](https://github.com/mastra-ai/mastra/pull/10851))
489
+
490
+ Adds a new `disableInit` config option to all storage providers that allows users to disable automatic table creation/migrations at runtime. This is useful for CI/CD pipelines where you want to run migrations during deployment with elevated credentials, then run the application with `disableInit: true` so it doesn't attempt schema changes at runtime.
491
+
492
+ ```typescript
493
+ // CI/CD script - run migrations
494
+ const storage = new PostgresStore({
495
+ connectionString: DATABASE_URL,
496
+ id: 'pg-storage',
497
+ });
498
+ await storage.init();
499
+
500
+ // Runtime - skip auto-init
501
+ const storage = new PostgresStore({
502
+ connectionString: DATABASE_URL,
503
+ id: 'pg-storage',
504
+ disableInit: true,
505
+ });
506
+ ```
507
+
508
+ ### Patch Changes
509
+
510
+ - Standardize error IDs across all storage and vector stores using centralized helper functions (`createStorageErrorId` and `createVectorErrorId`). This ensures consistent error ID patterns (`MASTRA_STORAGE_{STORE}_{OPERATION}_{STATUS}` and `MASTRA_VECTOR_{STORE}_{OPERATION}_{STATUS}`) across the codebase for better error tracking and debugging. ([#10913](https://github.com/mastra-ai/mastra/pull/10913))
511
+
512
+ - Updated dependencies [[`3076c67`](https://github.com/mastra-ai/mastra/commit/3076c6778b18988ae7d5c4c5c466366974b2d63f), [`85d7ee1`](https://github.com/mastra-ai/mastra/commit/85d7ee18ff4e14d625a8a30ec6656bb49804989b), [`c6c1092`](https://github.com/mastra-ai/mastra/commit/c6c1092f8fbf76109303f69e000e96fd1960c4ce), [`81dc110`](https://github.com/mastra-ai/mastra/commit/81dc11008d147cf5bdc8996ead1aa61dbdebb6fc), [`7aedb74`](https://github.com/mastra-ai/mastra/commit/7aedb74883adf66af38e270e4068fd42e7a37036), [`8f02d80`](https://github.com/mastra-ai/mastra/commit/8f02d800777397e4b45d7f1ad041988a8b0c6630), [`d7aad50`](https://github.com/mastra-ai/mastra/commit/d7aad501ce61646b76b4b511e558ac4eea9884d0), [`ce0a73a`](https://github.com/mastra-ai/mastra/commit/ce0a73abeaa75b10ca38f9e40a255a645d50ebfb), [`a02e542`](https://github.com/mastra-ai/mastra/commit/a02e542d23179bad250b044b17ff023caa61739f), [`a372c64`](https://github.com/mastra-ai/mastra/commit/a372c640ad1fd12e8f0613cebdc682fc156b4d95), [`8846867`](https://github.com/mastra-ai/mastra/commit/8846867ffa9a3746767618e314bebac08eb77d87), [`42a42cf`](https://github.com/mastra-ai/mastra/commit/42a42cf3132b9786feecbb8c13c583dce5b0e198), [`ae08bf0`](https://github.com/mastra-ai/mastra/commit/ae08bf0ebc6a4e4da992b711c4a389c32ba84cf4), [`21735a7`](https://github.com/mastra-ai/mastra/commit/21735a7ef306963554a69a89b44f06c3bcd85141), [`1d877b8`](https://github.com/mastra-ai/mastra/commit/1d877b8d7b536a251c1a7a18db7ddcf4f68d6f8b)]:
513
+ - @mastra/core@1.0.0-beta.7
514
+
515
+ ## 1.0.0-beta.3
516
+
517
+ ### Patch Changes
518
+
519
+ - fix(pg): qualify vector type to fix schema lookup ([#10786](https://github.com/mastra-ai/mastra/pull/10786))
520
+
521
+ - feat(storage): support querying messages from multiple threads ([#10663](https://github.com/mastra-ai/mastra/pull/10663))
522
+ - Fixed TypeScript errors where `threadId: string | string[]` was being passed to places expecting `Scalar` type
523
+ - Added proper multi-thread support for `listMessages` across all adapters when `threadId` is an array
524
+ - Updated `_getIncludedMessages` to look up message threadId by ID (since message IDs are globally unique)
525
+ - **upstash**: Added `msg-idx:{messageId}` index for O(1) message lookups (backwards compatible with fallback to scan for old messages, with automatic backfill)
526
+
527
+ - fix: ensure score responses match saved payloads for Mastra Stores. ([#10557](https://github.com/mastra-ai/mastra/pull/10557))
528
+
529
+ - Unify transformScoreRow functions across storage adapters ([#10648](https://github.com/mastra-ai/mastra/pull/10648))
530
+
531
+ Added a unified `transformScoreRow` function in `@mastra/core/storage` that provides schema-driven row transformation for score data. This eliminates code duplication across 10 storage adapters while maintaining store-specific behavior through configurable options:
532
+ - `preferredTimestampFields`: Preferred source fields for timestamps (PostgreSQL, Cloudflare D1)
533
+ - `convertTimestamps`: Convert timestamp strings to Date objects (MSSQL, MongoDB, ClickHouse)
534
+ - `nullValuePattern`: Skip values matching pattern (ClickHouse's `'_null_'`)
535
+ - `fieldMappings`: Map source column names to schema fields (LibSQL's `additionalLLMContext`)
536
+
537
+ Each store adapter now uses the unified function with appropriate options, reducing ~200 lines of duplicate transformation logic while ensuring consistent behavior across all storage backends.
538
+
539
+ - Updated dependencies [[`ac0d2f4`](https://github.com/mastra-ai/mastra/commit/ac0d2f4ff8831f72c1c66c2be809706d17f65789), [`1a0d3fc`](https://github.com/mastra-ai/mastra/commit/1a0d3fc811482c9c376cdf79ee615c23bae9b2d6), [`85a628b`](https://github.com/mastra-ai/mastra/commit/85a628b1224a8f64cd82ea7f033774bf22df7a7e), [`c237233`](https://github.com/mastra-ai/mastra/commit/c23723399ccedf7f5744b3f40997b79246bfbe64), [`15f9e21`](https://github.com/mastra-ai/mastra/commit/15f9e216177201ea6e3f6d0bfb063fcc0953444f), [`ff94dea`](https://github.com/mastra-ai/mastra/commit/ff94dea935f4e34545c63bcb6c29804732698809), [`5b2ff46`](https://github.com/mastra-ai/mastra/commit/5b2ff4651df70c146523a7fca773f8eb0a2272f8), [`db41688`](https://github.com/mastra-ai/mastra/commit/db4168806d007417e2e60b4f68656dca4e5f40c9), [`5ca599d`](https://github.com/mastra-ai/mastra/commit/5ca599d0bb59a1595f19f58473fcd67cc71cef58), [`bff1145`](https://github.com/mastra-ai/mastra/commit/bff114556b3cbadad9b2768488708f8ad0e91475), [`5c8ca24`](https://github.com/mastra-ai/mastra/commit/5c8ca247094e0cc2cdbd7137822fb47241f86e77), [`e191844`](https://github.com/mastra-ai/mastra/commit/e1918444ca3f80e82feef1dad506cd4ec6e2875f), [`22553f1`](https://github.com/mastra-ai/mastra/commit/22553f11c63ee5e966a9c034a349822249584691), [`7237163`](https://github.com/mastra-ai/mastra/commit/72371635dbf96a87df4b073cc48fc655afbdce3d), [`2500740`](https://github.com/mastra-ai/mastra/commit/2500740ea23da067d6e50ec71c625ab3ce275e64), [`873ecbb`](https://github.com/mastra-ai/mastra/commit/873ecbb517586aa17d2f1e99283755b3ebb2863f), [`4f9bbe5`](https://github.com/mastra-ai/mastra/commit/4f9bbe5968f42c86f4930b8193de3c3c17e5bd36), [`02e51fe`](https://github.com/mastra-ai/mastra/commit/02e51feddb3d4155cfbcc42624fd0d0970d032c0), [`8f3fa3a`](https://github.com/mastra-ai/mastra/commit/8f3fa3a652bb77da092f913ec51ae46e3a7e27dc), [`cd29ad2`](https://github.com/mastra-ai/mastra/commit/cd29ad23a255534e8191f249593849ed29160886), [`bdf4d8c`](https://github.com/mastra-ai/mastra/commit/bdf4d8cdc656d8a2c21d81834bfa3bfa70f56c16), [`854e3da`](https://github.com/mastra-ai/mastra/commit/854e3dad5daac17a91a20986399d3a51f54bf68b), [`ce18d38`](https://github.com/mastra-ai/mastra/commit/ce18d38678c65870350d123955014a8432075fd9), [`cccf9c8`](https://github.com/mastra-ai/mastra/commit/cccf9c8b2d2dfc1a5e63919395b83d78c89682a0), [`61a5705`](https://github.com/mastra-ai/mastra/commit/61a570551278b6743e64243b3ce7d73de915ca8a), [`db70a48`](https://github.com/mastra-ai/mastra/commit/db70a48aeeeeb8e5f92007e8ede52c364ce15287), [`f0fdc14`](https://github.com/mastra-ai/mastra/commit/f0fdc14ee233d619266b3d2bbdeea7d25cfc6d13), [`db18bc9`](https://github.com/mastra-ai/mastra/commit/db18bc9c3825e2c1a0ad9a183cc9935f6691bfa1), [`9b37b56`](https://github.com/mastra-ai/mastra/commit/9b37b565e1f2a76c24f728945cc740c2b09be9da), [`41a23c3`](https://github.com/mastra-ai/mastra/commit/41a23c32f9877d71810f37e24930515df2ff7a0f), [`5d171ad`](https://github.com/mastra-ai/mastra/commit/5d171ad9ef340387276b77c2bb3e83e83332d729), [`f03ae60`](https://github.com/mastra-ai/mastra/commit/f03ae60500fe350c9d828621006cdafe1975fdd8), [`d1e74a0`](https://github.com/mastra-ai/mastra/commit/d1e74a0a293866dece31022047f5dbab65a304d0), [`39e7869`](https://github.com/mastra-ai/mastra/commit/39e7869bc7d0ee391077ce291474d8a84eedccff), [`5761926`](https://github.com/mastra-ai/mastra/commit/57619260c4a2cdd598763abbacd90de594c6bc76), [`c900fdd`](https://github.com/mastra-ai/mastra/commit/c900fdd504c41348efdffb205cfe80d48c38fa33), [`604a79f`](https://github.com/mastra-ai/mastra/commit/604a79fecf276e26a54a3fe01bb94e65315d2e0e), [`887f0b4`](https://github.com/mastra-ai/mastra/commit/887f0b4746cdbd7cb7d6b17ac9f82aeb58037ea5), [`2562143`](https://github.com/mastra-ai/mastra/commit/256214336b4faa78646c9c1776612393790d8784), [`ef11a61`](https://github.com/mastra-ai/mastra/commit/ef11a61920fa0ed08a5b7ceedd192875af119749)]:
540
+ - @mastra/core@1.0.0-beta.6
541
+
542
+ ## 1.0.0-beta.2
543
+
544
+ ### Patch Changes
545
+
546
+ - Add new deleteVectors, updateVector by filter ([#10408](https://github.com/mastra-ai/mastra/pull/10408))
547
+
548
+ - Updated dependencies [[`21a15de`](https://github.com/mastra-ai/mastra/commit/21a15de369fe82aac26bb642ed7be73505475e8b), [`feb7ee4`](https://github.com/mastra-ai/mastra/commit/feb7ee4d09a75edb46c6669a3beaceec78811747), [`b0e2ea5`](https://github.com/mastra-ai/mastra/commit/b0e2ea5b52c40fae438b9e2f7baee6f0f89c5442), [`c456e01`](https://github.com/mastra-ai/mastra/commit/c456e0149e3c176afcefdbd9bb1d2c5917723725), [`ab035c2`](https://github.com/mastra-ai/mastra/commit/ab035c2ef6d8cc7bb25f06f1a38508bd9e6f126b), [`1a46a56`](https://github.com/mastra-ai/mastra/commit/1a46a566f45a3fcbadc1cf36bf86d351f264bfa3), [`3cf540b`](https://github.com/mastra-ai/mastra/commit/3cf540b9fbfea8f4fc8d3a2319a4e6c0b0cbfd52), [`1c6ce51`](https://github.com/mastra-ai/mastra/commit/1c6ce51f875915ab57fd36873623013699a2a65d), [`898a972`](https://github.com/mastra-ai/mastra/commit/898a9727d286c2510d6b702dfd367e6aaf5c6b0f), [`a97003a`](https://github.com/mastra-ai/mastra/commit/a97003aa1cf2f4022a41912324a1e77263b326b8), [`ccc141e`](https://github.com/mastra-ai/mastra/commit/ccc141ed27da0abc3a3fc28e9e5128152e8e37f4), [`fe3b897`](https://github.com/mastra-ai/mastra/commit/fe3b897c2ccbcd2b10e81b099438c7337feddf89), [`00123ba`](https://github.com/mastra-ai/mastra/commit/00123ba96dc9e5cd0b110420ebdba56d8f237b25), [`29c4309`](https://github.com/mastra-ai/mastra/commit/29c4309f818b24304c041bcb4a8f19b5f13f6b62), [`16785ce`](https://github.com/mastra-ai/mastra/commit/16785ced928f6f22638f4488cf8a125d99211799), [`de8239b`](https://github.com/mastra-ai/mastra/commit/de8239bdcb1d8c0cfa06da21f1569912a66bbc8a), [`b5e6cd7`](https://github.com/mastra-ai/mastra/commit/b5e6cd77fc8c8e64e0494c1d06cee3d84e795d1e), [`3759cb0`](https://github.com/mastra-ai/mastra/commit/3759cb064935b5f74c65ac2f52a1145f7352899d), [`651e772`](https://github.com/mastra-ai/mastra/commit/651e772eb1475fb13e126d3fcc01751297a88214), [`b61b93f`](https://github.com/mastra-ai/mastra/commit/b61b93f9e058b11dd2eec169853175d31dbdd567), [`bae33d9`](https://github.com/mastra-ai/mastra/commit/bae33d91a63fbb64d1e80519e1fc1acaed1e9013), [`c0b731f`](https://github.com/mastra-ai/mastra/commit/c0b731fb27d712dc8582e846df5c0332a6a0c5ba), [`43ca8f2`](https://github.com/mastra-ai/mastra/commit/43ca8f2c7334851cc7b4d3d2f037d8784bfbdd5f), [`2ca67cc`](https://github.com/mastra-ai/mastra/commit/2ca67cc3bb1f6a617353fdcab197d9efebe60d6f), [`9e67002`](https://github.com/mastra-ai/mastra/commit/9e67002b52c9be19936c420a489dbee9c5fd6a78), [`35edc49`](https://github.com/mastra-ai/mastra/commit/35edc49ac0556db609189641d6341e76771b81fc)]:
549
+ - @mastra/core@1.0.0-beta.5
550
+
3
551
  ## 1.0.0-beta.1
4
552
 
5
553
  ### Patch Changes
package/README.md CHANGED
@@ -327,6 +327,9 @@ The system automatically detects configuration changes and only rebuilds indexes
327
327
  - `buildIndex({indexName, metric?, indexConfig?})`: Build or rebuild vector index
328
328
  - `upsert({indexName, vectors, metadata?, ids?})`: Add or update vectors
329
329
  - `query({indexName, queryVector, topK?, filter?, includeVector?, minScore?})`: Search for similar vectors
330
+ - `updateVector({ indexName, id?, filter?, update })`: Update a single vector by ID or metadata filter
331
+ - `deleteVector({ indexName, id })`: Delete a single vector by ID
332
+ - `deleteVectors({ indexName, ids?, filter? })`: Delete multiple vectors by IDs or metadata filter
330
333
  - `listIndexes()`: List all vector-enabled tables
331
334
  - `describeIndex(indexName)`: Get table statistics and index configuration
332
335
  - `deleteIndex(indexName)`: Delete a table