@mastra/cloudflare-d1 1.0.2-alpha.0 → 1.0.3-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 +22 -0
- package/dist/docs/SKILL.md +2 -2
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/reference-storage-cloudflare-d1.md +2 -2
- package/dist/index.cjs +21 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +21 -15
- package/dist/index.js.map +1 -1
- package/dist/storage/domains/memory/index.d.ts.map +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# @mastra/cloudflare-d1
|
|
2
2
|
|
|
3
|
+
## 1.0.3-alpha.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Fixed D1 listMessages returning empty results when using semantic recall with perPage=0 and many include targets, by batching UNION ALL queries to avoid SQLite's compound SELECT limit ([#14117](https://github.com/mastra-ai/mastra/pull/14117))
|
|
8
|
+
|
|
9
|
+
- Updated dependencies [[`cddf895`](https://github.com/mastra-ai/mastra/commit/cddf895532b8ee7f9fa814136ec672f53d37a9ba), [`aede3cc`](https://github.com/mastra-ai/mastra/commit/aede3cc2a83b54bbd9e9a54c8aedcd1708b2ef87), [`c4c7dad`](https://github.com/mastra-ai/mastra/commit/c4c7dadfe2e4584f079f6c24bfabdb8c4981827f), [`45c3112`](https://github.com/mastra-ai/mastra/commit/45c31122666a0cc56b94727099fcb1871ed1b3f6), [`5e7c287`](https://github.com/mastra-ai/mastra/commit/5e7c28701f2bce795dd5c811e4c3060bf2ea2242), [`7e17d3f`](https://github.com/mastra-ai/mastra/commit/7e17d3f656fdda2aad47c4beb8c491636d70820c)]:
|
|
10
|
+
- @mastra/core@1.12.0-alpha.0
|
|
11
|
+
|
|
12
|
+
## 1.0.2
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- Added resilient column handling to insert and update operations. Unknown columns in records are now silently dropped instead of causing SQL errors, ensuring forward compatibility when newer domain packages add fields that haven't been migrated yet. ([#14021](https://github.com/mastra-ai/mastra/pull/14021))
|
|
17
|
+
|
|
18
|
+
For example, calling `db.insert({ tableName, record: { id: '1', title: 'Hello', futureField: 'value' } })` will silently ignore `futureField` if it doesn't exist in the database table, rather than throwing. The same applies to `update` — unknown fields in the data payload are dropped before building the SQL statement.
|
|
19
|
+
|
|
20
|
+
- Fixed slow semantic recall in the libsql, Cloudflare D1, and ClickHouse storage adapters. Recall performance no longer degrades as threads grow larger. (Fixes #11702) ([#14022](https://github.com/mastra-ai/mastra/pull/14022))
|
|
21
|
+
|
|
22
|
+
- Updated dependencies [[`4f71b43`](https://github.com/mastra-ai/mastra/commit/4f71b436a4a6b8839842d8da47b57b84509af56c), [`a070277`](https://github.com/mastra-ai/mastra/commit/a07027766ce195ba74d0783116d894cbab25d44c), [`b628b91`](https://github.com/mastra-ai/mastra/commit/b628b9128b372c0f54214d902b07279f03443900), [`332c014`](https://github.com/mastra-ai/mastra/commit/332c014e076b81edf7fe45b58205882726415e90), [`6b63153`](https://github.com/mastra-ai/mastra/commit/6b63153878ea841c0f4ce632ba66bb33e57e9c1b), [`4246e34`](https://github.com/mastra-ai/mastra/commit/4246e34cec9c26636d0965942268e6d07c346671), [`b8837ee`](https://github.com/mastra-ai/mastra/commit/b8837ee77e2e84197609762bfabd8b3da326d30c), [`866cc2c`](https://github.com/mastra-ai/mastra/commit/866cc2cb1f0e3b314afab5194f69477fada745d1), [`5d950f7`](https://github.com/mastra-ai/mastra/commit/5d950f7bf426a215a1808f0abef7de5c8336ba1c), [`28c85b1`](https://github.com/mastra-ai/mastra/commit/28c85b184fc32b40f7f160483c982da6d388ecbd), [`e9a08fb`](https://github.com/mastra-ai/mastra/commit/e9a08fbef1ada7e50e961e2f54f55e8c10b4a45c), [`1d0a8a8`](https://github.com/mastra-ai/mastra/commit/1d0a8a8acf33203d5744fc429b090ad8598aa8ed), [`631ffd8`](https://github.com/mastra-ai/mastra/commit/631ffd82fed108648b448b28e6a90e38c5f53bf5), [`6bcbf8a`](https://github.com/mastra-ai/mastra/commit/6bcbf8a6774d5a53b21d61db8a45ce2593ca1616), [`aae2295`](https://github.com/mastra-ai/mastra/commit/aae2295838a2d329ad6640829e87934790ffe5b8), [`aa61f29`](https://github.com/mastra-ai/mastra/commit/aa61f29ff8095ce46a4ae16e46c4d8c79b2b685b), [`7ff3714`](https://github.com/mastra-ai/mastra/commit/7ff37148515439bb3be009a60e02c3e363299760), [`18c3a90`](https://github.com/mastra-ai/mastra/commit/18c3a90c9e48cf69500e308affeb8eba5860b2af), [`41d79a1`](https://github.com/mastra-ai/mastra/commit/41d79a14bd8cb6de1e2565fd0a04786bae2f211b), [`f35487b`](https://github.com/mastra-ai/mastra/commit/f35487bb2d46c636e22aa71d90025613ae38235a), [`6dc2192`](https://github.com/mastra-ai/mastra/commit/6dc21921aef0f0efab15cd0805fa3d18f277a76f), [`eeb3a3f`](https://github.com/mastra-ai/mastra/commit/eeb3a3f43aca10cf49479eed2a84b7d9ecea02ba), [`e673376`](https://github.com/mastra-ai/mastra/commit/e6733763ad1321aa7e5ae15096b9c2104f93b1f3), [`05f8d90`](https://github.com/mastra-ai/mastra/commit/05f8d9009290ce6aa03428b3add635268615db85), [`b2204c9`](https://github.com/mastra-ai/mastra/commit/b2204c98a42848bbfb6f0440f005dc2b6354f1cd), [`a1bf1e3`](https://github.com/mastra-ai/mastra/commit/a1bf1e385ed4c0ef6f11b56c5887442970d127f2), [`b6f647a`](https://github.com/mastra-ai/mastra/commit/b6f647ae2388e091f366581595feb957e37d5b40), [`0c57b8b`](https://github.com/mastra-ai/mastra/commit/0c57b8b0a69a97b5a4ae3f79be6c610f29f3cf7b), [`b081f27`](https://github.com/mastra-ai/mastra/commit/b081f272cf411716e1d6bd72ceac4bcee2657b19), [`4b8da97`](https://github.com/mastra-ai/mastra/commit/4b8da97a5ce306e97869df6c39535d9069e563db), [`0c09eac`](https://github.com/mastra-ai/mastra/commit/0c09eacb1926f64cfdc9ae5c6d63385cf8c9f72c), [`6b9b93d`](https://github.com/mastra-ai/mastra/commit/6b9b93d6f459d1ba6e36f163abf62a085ddb3d64), [`31b6067`](https://github.com/mastra-ai/mastra/commit/31b6067d0cc3ab10e1b29c36147f3b5266bc714a), [`797ac42`](https://github.com/mastra-ai/mastra/commit/797ac4276de231ad2d694d9aeca75980f6cd0419), [`0bc289e`](https://github.com/mastra-ai/mastra/commit/0bc289e2d476bf46c5b91c21969e8d0c6864691c), [`9b75a06`](https://github.com/mastra-ai/mastra/commit/9b75a06e53ebb0b950ba7c1e83a0142047185f46), [`4c3a1b1`](https://github.com/mastra-ai/mastra/commit/4c3a1b122ea083e003d71092f30f3b31680b01c0), [`256df35`](https://github.com/mastra-ai/mastra/commit/256df3571d62beb3ad4971faa432927cc140e603), [`85cc3b3`](https://github.com/mastra-ai/mastra/commit/85cc3b3b6f32ae4b083c26498f50d5b250ba944b), [`97ea28c`](https://github.com/mastra-ai/mastra/commit/97ea28c746e9e4147d56047bbb1c4a92417a3fec), [`d567299`](https://github.com/mastra-ai/mastra/commit/d567299cf81e02bd9d5221d4bc05967d6c224161), [`716ffe6`](https://github.com/mastra-ai/mastra/commit/716ffe68bed81f7c2690bc8581b9e140f7bf1c3d), [`8296332`](https://github.com/mastra-ai/mastra/commit/8296332de21c16e3dfc3d0b2d615720a6dc88f2f), [`4df2116`](https://github.com/mastra-ai/mastra/commit/4df211619dd922c047d396ca41cd7027c8c4c8e7), [`2219c1a`](https://github.com/mastra-ai/mastra/commit/2219c1acbd21da116da877f0036ffb985a9dd5a3), [`17c4145`](https://github.com/mastra-ai/mastra/commit/17c4145166099354545582335b5252bdfdfd908b)]:
|
|
23
|
+
- @mastra/core@1.11.0
|
|
24
|
+
|
|
3
25
|
## 1.0.2-alpha.0
|
|
4
26
|
|
|
5
27
|
### Patch Changes
|
package/dist/docs/SKILL.md
CHANGED
|
@@ -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.0.
|
|
6
|
+
version: "1.0.3-alpha.0"
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
## When to use
|
|
@@ -16,7 +16,7 @@ Read the individual reference documents for detailed explanations and code examp
|
|
|
16
16
|
|
|
17
17
|
### Reference
|
|
18
18
|
|
|
19
|
-
- [Reference: Cloudflare D1
|
|
19
|
+
- [Reference: Cloudflare D1 storage](references/reference-storage-cloudflare-d1.md) - Documentation for the Cloudflare D1 SQL storage implementation in Mastra.
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
Read [assets/SOURCE_MAP.json](assets/SOURCE_MAP.json) for source code references.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Cloudflare D1
|
|
1
|
+
# Cloudflare D1 storage
|
|
2
2
|
|
|
3
3
|
The Cloudflare D1 storage implementation provides a serverless SQL database solution using Cloudflare D1, supporting relational operations and transactional consistency.
|
|
4
4
|
|
|
@@ -139,7 +139,7 @@ Or in `wrangler.jsonc`:
|
|
|
139
139
|
|
|
140
140
|
**tablePrefix** (`string`): Optional prefix for all table names (useful for environment isolation)
|
|
141
141
|
|
|
142
|
-
## Additional
|
|
142
|
+
## Additional notes
|
|
143
143
|
|
|
144
144
|
### Schema Management
|
|
145
145
|
|
package/dist/index.cjs
CHANGED
|
@@ -1209,12 +1209,28 @@ var MemoryStorageD1 = class extends storage.MemoryStorage {
|
|
|
1209
1209
|
const targetMap = new Map(
|
|
1210
1210
|
targetResult.map((r) => [r.id, { threadId: r.thread_id, createdAt: r.createdAt }])
|
|
1211
1211
|
);
|
|
1212
|
+
const MAX_UNION_TERMS = 5;
|
|
1212
1213
|
const unionQueries = [];
|
|
1213
|
-
const
|
|
1214
|
+
const unionParams = [];
|
|
1215
|
+
const allMessages = [];
|
|
1216
|
+
const flushBatch = async () => {
|
|
1217
|
+
if (unionQueries.length === 0) return;
|
|
1218
|
+
const sql = unionQueries.length === 1 ? unionQueries[0] : `${unionQueries.join(" UNION ALL ")} ORDER BY createdAt ASC, id ASC`;
|
|
1219
|
+
const result = await this.#db.executeQuery({ sql, params: unionParams });
|
|
1220
|
+
if (Array.isArray(result)) {
|
|
1221
|
+
allMessages.push(...result);
|
|
1222
|
+
}
|
|
1223
|
+
unionQueries.length = 0;
|
|
1224
|
+
unionParams.length = 0;
|
|
1225
|
+
};
|
|
1214
1226
|
for (const inc of include) {
|
|
1215
1227
|
const { id, withPreviousMessages = 0, withNextMessages = 0 } = inc;
|
|
1216
1228
|
const target = targetMap.get(id);
|
|
1217
1229
|
if (!target) continue;
|
|
1230
|
+
const termsNeeded = withNextMessages > 0 ? 2 : 1;
|
|
1231
|
+
if (unionQueries.length + termsNeeded > MAX_UNION_TERMS) {
|
|
1232
|
+
await flushBatch();
|
|
1233
|
+
}
|
|
1218
1234
|
unionQueries.push(`SELECT * FROM (
|
|
1219
1235
|
SELECT id, content, role, type, createdAt, thread_id AS threadId, resourceId
|
|
1220
1236
|
FROM ${tableName}
|
|
@@ -1223,7 +1239,7 @@ var MemoryStorageD1 = class extends storage.MemoryStorage {
|
|
|
1223
1239
|
ORDER BY createdAt DESC, id DESC
|
|
1224
1240
|
LIMIT ?
|
|
1225
1241
|
)`);
|
|
1226
|
-
|
|
1242
|
+
unionParams.push(target.threadId, target.createdAt, withPreviousMessages + 1);
|
|
1227
1243
|
if (withNextMessages > 0) {
|
|
1228
1244
|
unionQueries.push(`SELECT * FROM (
|
|
1229
1245
|
SELECT id, content, role, type, createdAt, thread_id AS threadId, resourceId
|
|
@@ -1233,22 +1249,12 @@ var MemoryStorageD1 = class extends storage.MemoryStorage {
|
|
|
1233
1249
|
ORDER BY createdAt ASC, id ASC
|
|
1234
1250
|
LIMIT ?
|
|
1235
1251
|
)`);
|
|
1236
|
-
|
|
1252
|
+
unionParams.push(target.threadId, target.createdAt, withNextMessages);
|
|
1237
1253
|
}
|
|
1238
1254
|
}
|
|
1239
|
-
|
|
1240
|
-
let finalQuery;
|
|
1241
|
-
if (unionQueries.length === 1) {
|
|
1242
|
-
finalQuery = unionQueries[0];
|
|
1243
|
-
} else {
|
|
1244
|
-
finalQuery = `${unionQueries.join(" UNION ALL ")} ORDER BY createdAt ASC, id ASC`;
|
|
1245
|
-
}
|
|
1246
|
-
const messages = await this.#db.executeQuery({ sql: finalQuery, params });
|
|
1247
|
-
if (!Array.isArray(messages)) {
|
|
1248
|
-
return [];
|
|
1249
|
-
}
|
|
1255
|
+
await flushBatch();
|
|
1250
1256
|
const seen = /* @__PURE__ */ new Set();
|
|
1251
|
-
const processedMessages =
|
|
1257
|
+
const processedMessages = allMessages.filter((message) => {
|
|
1252
1258
|
const id = message.id;
|
|
1253
1259
|
if (seen.has(id)) return false;
|
|
1254
1260
|
seen.add(id);
|