@mastra/mongodb 1.16.1 → 1.17.0-alpha.0

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,5 +1,50 @@
1
1
  # @mastra/mongodb
2
2
 
3
+ ## 1.17.0-alpha.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Added experiment provenance and grouping support to the LibSQL, MongoDB, MySQL, PostgreSQL, and Spanner storage adapters. These fields remain available for later grouping and filtering. ([#20645](https://github.com/mastra-ai/mastra/pull/20645))
8
+
9
+ ```ts
10
+ import { PostgresStore } from '@mastra/pg';
11
+
12
+ const storage = new PostgresStore({
13
+ id: 'postgres-storage',
14
+ connectionString: process.env.DATABASE_URL!,
15
+ });
16
+
17
+ await dataset.startExperiment({
18
+ task,
19
+ scorers,
20
+ provenance: { source: 'github', sourceVersion: 'abc123' },
21
+ grouping: { experimentSetId: 'benchmark-1', variantId: 'candidate', trialIndex: 0 },
22
+ });
23
+ ```
24
+
25
+ - Memory list reads now surface database errors instead of silently returning empty results. ([#17910](https://github.com/mastra-ai/mastra/pull/17910))
26
+
27
+ Previously, the paginated memory reads (`listThreads`, `listMessages`, `listMessagesByResourceId`, and `listMessagesById`) caught backend failures, logged them, and returned an empty payload like `{ threads: [], total: 0, hasMore: false }`. A transient outage (locked table, dropped connection) was therefore indistinguishable from a genuinely empty result, so an agent reading conversation history during a brief failure would treat it as "no history" and could overwrite real state. These methods now re-throw the failure as a `MastraError`. Validation (USER) errors and genuinely empty results are unchanged.
28
+
29
+ **Behavior change**
30
+
31
+ Callers that previously received an empty result on a backend failure will now receive a thrown `MastraError`. If you call these read methods directly (rather than through an agent, which already surfaces errors), wrap them so a transient outage doesn't crash the caller:
32
+
33
+ ```ts
34
+ try {
35
+ const { threads } = await storage.listThreads({ resourceId });
36
+ // ...use threads
37
+ } catch (error) {
38
+ // a real backend failure. Decide whether to retry, surface, or degrade.
39
+ // An empty thread list no longer hides here; it only means "no threads".
40
+ }
41
+ ```
42
+
43
+ ### Patch Changes
44
+
45
+ - Updated dependencies [[`e7109ee`](https://github.com/mastra-ai/mastra/commit/e7109ee6f731bacc79c885906f3c7dca8d8f013a), [`772c0c8`](https://github.com/mastra-ai/mastra/commit/772c0c897cec383258de2e6178147f8014767c7b), [`578bf2e`](https://github.com/mastra-ai/mastra/commit/578bf2e6a88e9d5b8bf502204e15a95dfbb679ae), [`06b2d87`](https://github.com/mastra-ai/mastra/commit/06b2d87e63bcdd0ed59215c6789692b9b12de376), [`ac01d63`](https://github.com/mastra-ai/mastra/commit/ac01d6355974aec73fdb8781449ed12bac582094), [`a810a05`](https://github.com/mastra-ai/mastra/commit/a810a058f62ad407cfc1701e0be36ae91145d7cf), [`f8da216`](https://github.com/mastra-ai/mastra/commit/f8da21633e7eb0e31c9ce0fc30567870d19416d3), [`6104347`](https://github.com/mastra-ai/mastra/commit/61043473ba6bfd0a25156824e853e13165562e6c), [`45bfb88`](https://github.com/mastra-ai/mastra/commit/45bfb88fd52f1dd3be20e2a38905777c96499c90), [`e3b9307`](https://github.com/mastra-ai/mastra/commit/e3b9307098daefbfae2a52ae2ef51bc9fc701190), [`d6834c5`](https://github.com/mastra-ai/mastra/commit/d6834c5a7866b16734d23900163c2414ed70d791), [`c52d346`](https://github.com/mastra-ai/mastra/commit/c52d3462ec831a5d95926ecd3d3373f5928ad2e5), [`0023e79`](https://github.com/mastra-ai/mastra/commit/0023e7919431078280abd11c89d1edeae35fcc69), [`c2ad51e`](https://github.com/mastra-ai/mastra/commit/c2ad51e2467f901eecba8c9f4a45e22a50bd7c18), [`3dc97ea`](https://github.com/mastra-ai/mastra/commit/3dc97ea415fad353b48a13095fad1835933cc12a), [`3d01cd3`](https://github.com/mastra-ai/mastra/commit/3d01cd387321b6f9c5cac31d487c84bf51b19c78), [`7bf3086`](https://github.com/mastra-ai/mastra/commit/7bf308663f0115ca74ad20554ade740f06640859), [`a8dd139`](https://github.com/mastra-ai/mastra/commit/a8dd1391a9fe9a6632c25809ef236980afa9a020), [`e5786be`](https://github.com/mastra-ai/mastra/commit/e5786be02bb903073082bd9d6da880ebaacc343f), [`2093fbd`](https://github.com/mastra-ai/mastra/commit/2093fbd53bb744bae19ec89f6d73db9a66fbe8a7), [`e7a5da4`](https://github.com/mastra-ai/mastra/commit/e7a5da4ef8e4dd452d2f232961b4e682a85ffe43), [`7b4393d`](https://github.com/mastra-ai/mastra/commit/7b4393d557411fdcf07b0e30e5acaf7cc85154ae)]:
46
+ - @mastra/core@1.58.0-alpha.1
47
+
3
48
  ## 1.16.1
4
49
 
5
50
  ### Patch Changes
@@ -3,7 +3,7 @@ name: mastra-mongodb
3
3
  description: Documentation for @mastra/mongodb. Use when working with @mastra/mongodb APIs, configuration, or implementation.
4
4
  metadata:
5
5
  package: "@mastra/mongodb"
6
- version: "1.16.1"
6
+ version: "1.17.0-alpha.0"
7
7
  ---
8
8
 
9
9
  ## When to use
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.16.1",
2
+ "version": "1.17.0-alpha.0",
3
3
  "package": "@mastra/mongodb",
4
4
  "exports": {},
5
5
  "modules": {}
package/dist/index.cjs CHANGED
@@ -10,7 +10,7 @@ let _mastra_core_agent = require("@mastra/core/agent");
10
10
  let _mastra_core_evals = require("@mastra/core/evals");
11
11
  let _mastra_core_storage_domains_skills = require("@mastra/core/storage/domains/skills");
12
12
  //#region package.json
13
- var version = "1.16.1";
13
+ var version = "1.17.0-alpha.0";
14
14
  //#endregion
15
15
  //#region src/vector/filter.ts
16
16
  /**
@@ -3667,6 +3667,12 @@ function transformExperimentRow(row) {
3667
3667
  name: row.name ?? void 0,
3668
3668
  description: row.description ?? void 0,
3669
3669
  metadata: parseJsonField(row.metadata) ?? void 0,
3670
+ provenance: parseJsonField(row.provenance) ?? null,
3671
+ runnerAttestation: parseJsonField(row.runnerAttestation) ?? null,
3672
+ experimentSetId: row.experimentSetId ?? null,
3673
+ comparisonId: row.comparisonId ?? null,
3674
+ variantId: row.variantId ?? null,
3675
+ trialIndex: row.trialIndex != null ? Number(row.trialIndex) : null,
3670
3676
  datasetId: row.datasetId ?? null,
3671
3677
  datasetVersion: row.datasetVersion != null ? Number(row.datasetVersion) : null,
3672
3678
  organizationId: row.organizationId ?? null,
@@ -3813,6 +3819,15 @@ var MongoDBExperimentsStorage = class MongoDBExperimentsStorage extends _mastra_
3813
3819
  id: 1
3814
3820
  }
3815
3821
  },
3822
+ {
3823
+ collection: _mastra_core_storage.TABLE_EXPERIMENTS,
3824
+ keys: {
3825
+ experimentSetId: 1,
3826
+ comparisonId: 1,
3827
+ variantId: 1,
3828
+ trialIndex: 1
3829
+ }
3830
+ },
3816
3831
  {
3817
3832
  collection: _mastra_core_storage.TABLE_EXPERIMENTS,
3818
3833
  keys: {
@@ -3886,6 +3901,12 @@ var MongoDBExperimentsStorage = class MongoDBExperimentsStorage extends _mastra_
3886
3901
  name: input.name ?? null,
3887
3902
  description: input.description ?? null,
3888
3903
  metadata: input.metadata ?? null,
3904
+ provenance: input.provenance ?? null,
3905
+ runnerAttestation: input.runnerAttestation ?? null,
3906
+ experimentSetId: input.experimentSetId ?? null,
3907
+ comparisonId: input.comparisonId ?? null,
3908
+ variantId: input.variantId ?? null,
3909
+ trialIndex: input.trialIndex ?? null,
3889
3910
  datasetId: input.datasetId ?? null,
3890
3911
  datasetVersion: input.datasetVersion ?? null,
3891
3912
  organizationId: input.organizationId ?? null,
@@ -3905,28 +3926,7 @@ var MongoDBExperimentsStorage = class MongoDBExperimentsStorage extends _mastra_
3905
3926
  };
3906
3927
  try {
3907
3928
  await (await this.getCollection(_mastra_core_storage.TABLE_EXPERIMENTS)).insertOne(doc);
3908
- return {
3909
- id,
3910
- name: input.name,
3911
- description: input.description,
3912
- metadata: input.metadata,
3913
- datasetId: input.datasetId ?? null,
3914
- datasetVersion: input.datasetVersion ?? null,
3915
- organizationId: input.organizationId ?? null,
3916
- projectId: input.projectId ?? null,
3917
- targetType: input.targetType,
3918
- targetId: input.targetId,
3919
- status: "pending",
3920
- totalItems: input.totalItems,
3921
- succeededCount: 0,
3922
- failedCount: 0,
3923
- skippedCount: 0,
3924
- agentVersion: input.agentVersion ?? null,
3925
- startedAt: null,
3926
- completedAt: null,
3927
- createdAt: now,
3928
- updatedAt: now
3929
- };
3929
+ return transformExperimentRow(structuredClone(doc));
3930
3930
  } catch (error) {
3931
3931
  throw new _mastra_core_error.MastraError({
3932
3932
  id: (0, _mastra_core_storage.createStorageErrorId)("MONGODB", "CREATE_EXPERIMENT", "FAILED"),
@@ -3993,6 +3993,10 @@ var MongoDBExperimentsStorage = class MongoDBExperimentsStorage extends _mastra_
3993
3993
  if (args.targetId) filter.targetId = args.targetId;
3994
3994
  if (args.agentVersion) filter.agentVersion = args.agentVersion;
3995
3995
  if (args.status) filter.status = args.status;
3996
+ if (args.experimentSetId !== void 0) filter.experimentSetId = args.experimentSetId;
3997
+ if (args.comparisonId !== void 0) filter.comparisonId = args.comparisonId;
3998
+ if (args.variantId !== void 0) filter.variantId = args.variantId;
3999
+ if (args.trialIndex !== void 0) filter.trialIndex = args.trialIndex;
3996
4000
  if (args.filters) {
3997
4001
  const { organizationId, projectId } = args.filters;
3998
4002
  if (organizationId !== void 0) filter.organizationId = organizationId;
@@ -5564,6 +5568,7 @@ var MemoryStorageMongoDB = class MemoryStorageMongoDB extends _mastra_core_stora
5564
5568
  hasMore
5565
5569
  };
5566
5570
  } catch (error) {
5571
+ if (error instanceof _mastra_core_error.MastraError && error.category === _mastra_core_error.ErrorCategory.USER) throw error;
5567
5572
  const mastraError = new _mastra_core_error.MastraError({
5568
5573
  id: (0, _mastra_core_storage.createStorageErrorId)("MONGODB", "LIST_MESSAGES", "FAILED"),
5569
5574
  domain: _mastra_core_error.ErrorDomain.STORAGE,
@@ -5575,13 +5580,7 @@ var MemoryStorageMongoDB = class MemoryStorageMongoDB extends _mastra_core_stora
5575
5580
  }, error);
5576
5581
  this.logger?.error?.(mastraError.toString());
5577
5582
  this.logger?.trackException?.(mastraError);
5578
- return {
5579
- messages: [],
5580
- total: 0,
5581
- page,
5582
- perPage: perPageForResponse,
5583
- hasMore: false
5584
- };
5583
+ throw mastraError;
5585
5584
  }
5586
5585
  }
5587
5586
  async listMessagesByResourceId(args) {
@@ -5691,6 +5690,7 @@ var MemoryStorageMongoDB = class MemoryStorageMongoDB extends _mastra_core_stora
5691
5690
  hasMore
5692
5691
  };
5693
5692
  } catch (error) {
5693
+ if (error instanceof _mastra_core_error.MastraError && error.category === _mastra_core_error.ErrorCategory.USER) throw error;
5694
5694
  const mastraError = new _mastra_core_error.MastraError({
5695
5695
  id: (0, _mastra_core_storage.createStorageErrorId)("MONGODB", "LIST_MESSAGES_BY_RESOURCE_ID", "FAILED"),
5696
5696
  domain: _mastra_core_error.ErrorDomain.STORAGE,
@@ -5699,13 +5699,7 @@ var MemoryStorageMongoDB = class MemoryStorageMongoDB extends _mastra_core_stora
5699
5699
  }, error);
5700
5700
  this.logger?.error?.(mastraError.toString());
5701
5701
  this.logger?.trackException?.(mastraError);
5702
- return {
5703
- messages: [],
5704
- total: 0,
5705
- page,
5706
- perPage: perPageForResponse,
5707
- hasMore: false
5708
- };
5702
+ throw mastraError;
5709
5703
  }
5710
5704
  }
5711
5705
  async saveMessages({ messages }) {
@@ -5939,7 +5933,8 @@ var MemoryStorageMongoDB = class MemoryStorageMongoDB extends _mastra_core_stora
5939
5933
  hasMore: perPageInput === false ? false : offset + perPage < total
5940
5934
  };
5941
5935
  } catch (error) {
5942
- throw new _mastra_core_error.MastraError({
5936
+ if (error instanceof _mastra_core_error.MastraError && error.category === _mastra_core_error.ErrorCategory.USER) throw error;
5937
+ const mastraError = new _mastra_core_error.MastraError({
5943
5938
  id: (0, _mastra_core_storage.createStorageErrorId)("MONGODB", "LIST_THREADS", "FAILED"),
5944
5939
  domain: _mastra_core_error.ErrorDomain.STORAGE,
5945
5940
  category: _mastra_core_error.ErrorCategory.THIRD_PARTY,
@@ -5948,6 +5943,9 @@ var MemoryStorageMongoDB = class MemoryStorageMongoDB extends _mastra_core_stora
5948
5943
  hasMetadataFilter: !!filter?.metadata
5949
5944
  }
5950
5945
  }, error);
5946
+ this.logger?.error?.(mastraError.toString());
5947
+ this.logger?.trackException?.(mastraError);
5948
+ throw mastraError;
5951
5949
  }
5952
5950
  }
5953
5951
  async saveThread({ thread }) {