@mastra/cloudflare-d1 1.2.0 → 1.3.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,32 @@
1
1
  # @mastra/cloudflare-d1
2
2
 
3
+ ## 1.3.0-alpha.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Memory list reads now surface database errors instead of silently returning empty results. ([#17910](https://github.com/mastra-ai/mastra/pull/17910))
8
+
9
+ 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.
10
+
11
+ **Behavior change**
12
+
13
+ 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:
14
+
15
+ ```ts
16
+ try {
17
+ const { threads } = await storage.listThreads({ resourceId });
18
+ // ...use threads
19
+ } catch (error) {
20
+ // a real backend failure. Decide whether to retry, surface, or degrade.
21
+ // An empty thread list no longer hides here; it only means "no threads".
22
+ }
23
+ ```
24
+
25
+ ### Patch Changes
26
+
27
+ - 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)]:
28
+ - @mastra/core@1.58.0-alpha.1
29
+
3
30
  ## 1.2.0
4
31
 
5
32
  ### Minor Changes
@@ -3,7 +3,7 @@ name: mastra-cloudflare-d1
3
3
  description: Documentation for @mastra/cloudflare-d1. Use when working with @mastra/cloudflare-d1 APIs, configuration, or implementation.
4
4
  metadata:
5
5
  package: "@mastra/cloudflare-d1"
6
- version: "1.2.0"
6
+ version: "1.3.0-alpha.0"
7
7
  ---
8
8
 
9
9
  ## When to use
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.2.0",
2
+ "version": "1.3.0-alpha.0",
3
3
  "package": "@mastra/cloudflare-d1",
4
4
  "exports": {},
5
5
  "modules": {}
@@ -61,11 +61,11 @@ export const mastra = new Mastra({
61
61
  })
62
62
  ```
63
63
 
64
- > **Note:** When using `import { env } from 'cloudflare:workers'`, `D1Store` must be initialized inline inside `new Mastra({...})` not extracted to a module-level variable. Alternatively, initialize `D1Store` inside the `fetch` handler after `env` is available. See [CloudflareDeployer reference](https://mastra.ai/reference/deployer/cloudflare) for details.
64
+ > **Note:** When using `import { env } from 'cloudflare:workers'`, `D1Store` must be initialized inline inside `new Mastra({...})`: not extracted to a module-level variable. Alternatively, initialize `D1Store` inside the `fetch` handler after `env` is available. See [CloudflareDeployer reference](https://mastra.ai/reference/deployer/cloudflare) for details.
65
65
 
66
66
  ### Using in a Cloudflare Worker without HTTP routes
67
67
 
68
- If you want to call Mastra directly in a Worker for example, to run an agent or trigger a workflow without serving HTTP routes, you don't need `CloudflareDeployer`. Access the D1 binding from the worker's `env` parameter and call Mastra programmatically.
68
+ If you want to call Mastra directly in a Worker (for example, to run an agent or trigger a workflow) without serving HTTP routes, you don't need `CloudflareDeployer`. Access the D1 binding from the worker's `env` parameter and call Mastra programmatically.
69
69
 
70
70
  ```typescript
71
71
  import { D1Store } from '@mastra/cloudflare-d1'
@@ -213,8 +213,8 @@ export default {
213
213
 
214
214
  ### Transactions & Consistency
215
215
 
216
- Cloudflare D1 provides transactional guarantees for single-row operations. This means that multiple operations can be executed as a single, all-or-nothing unit of work.
216
+ Cloudflare D1 provides transactional guarantees for single-row operations. Multiple operations can be executed as a single, all-or-nothing unit of work.
217
217
 
218
218
  ### Table Creation & Migrations
219
219
 
220
- Tables are created automatically when storage is initialized (and can be isolated per environment using the `tablePrefix` option), but advanced schema changes—such as adding columns, changing data types, or modifying indexes—require manual migration and careful planning to avoid data loss.
220
+ Tables are created automatically when storage is initialized (and can be isolated per environment using the `tablePrefix` option), but advanced schema changes require manual migration and careful planning. Examples include adding columns or changing data types and indexes to avoid data loss.
package/dist/index.cjs CHANGED
@@ -1229,13 +1229,7 @@ var MemoryStorageD1 = class extends _mastra_core_storage.MemoryStorage {
1229
1229
  }, error);
1230
1230
  this.logger?.error(mastraError.toString());
1231
1231
  this.logger?.trackException(mastraError);
1232
- return {
1233
- threads: [],
1234
- total: 0,
1235
- page,
1236
- perPage: perPageForResponse,
1237
- hasMore: false
1238
- };
1232
+ throw mastraError;
1239
1233
  }
1240
1234
  }
1241
1235
  async saveThread({ thread }) {
@@ -1661,6 +1655,7 @@ var MemoryStorageD1 = class extends _mastra_core_storage.MemoryStorage {
1661
1655
  hasMore: metadataFilter ? perPageInput !== false && offset + paginatedCount < total : perPageInput !== false && !allThreadMessagesReturned && offset + perPage < total
1662
1656
  };
1663
1657
  } catch (error) {
1658
+ if (error instanceof _mastra_core_error.MastraError && error.category === _mastra_core_error.ErrorCategory.USER) throw error;
1664
1659
  const mastraError = new _mastra_core_error.MastraError({
1665
1660
  id: (0, _mastra_core_storage.createStorageErrorId)("CLOUDFLARE_D1", "LIST_MESSAGES", "FAILED"),
1666
1661
  domain: _mastra_core_error.ErrorDomain.STORAGE,
@@ -1673,13 +1668,7 @@ var MemoryStorageD1 = class extends _mastra_core_storage.MemoryStorage {
1673
1668
  }, error);
1674
1669
  this.logger?.error?.(mastraError.toString());
1675
1670
  this.logger?.trackException?.(mastraError);
1676
- return {
1677
- messages: [],
1678
- total: 0,
1679
- page,
1680
- perPage: perPageForResponse,
1681
- hasMore: false
1682
- };
1671
+ throw mastraError;
1683
1672
  }
1684
1673
  }
1685
1674
  async updateMessages(args) {