@mastra/mssql 1.6.0 → 1.7.0-alpha.1
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 +36 -0
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/index.cjs +24 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +24 -20
- package/dist/index.js.map +1 -1
- package/dist/storage/domains/memory/index.d.ts +7 -0
- package/dist/storage/domains/memory/index.d.ts.map +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# @mastra/mssql
|
|
2
2
|
|
|
3
|
+
## 1.7.0-alpha.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Fixed resource-scoped message includes across storage adapters so included context cannot cross resource boundaries. ([#20984](https://github.com/mastra-ai/mastra/pull/20984))
|
|
8
|
+
|
|
9
|
+
- Updated dependencies [[`6445eba`](https://github.com/mastra-ai/mastra/commit/6445eba6020abac681aba1cc9289f446cb400cbe), [`df31eb0`](https://github.com/mastra-ai/mastra/commit/df31eb0c7087d782a0d9346e467f9a4af4b0eef6), [`fcd0667`](https://github.com/mastra-ai/mastra/commit/fcd0667a4e378be35c9a1b1eb19cce78fbfd7282), [`bab06b1`](https://github.com/mastra-ai/mastra/commit/bab06b18923873a584bdfc71a6b4ec7fb4727fb7)]:
|
|
10
|
+
- @mastra/core@1.58.0-alpha.5
|
|
11
|
+
|
|
12
|
+
## 1.7.0-alpha.0
|
|
13
|
+
|
|
14
|
+
### Minor Changes
|
|
15
|
+
|
|
16
|
+
- Memory list reads now surface database errors instead of silently returning empty results. ([#17910](https://github.com/mastra-ai/mastra/pull/17910))
|
|
17
|
+
|
|
18
|
+
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.
|
|
19
|
+
|
|
20
|
+
**Behavior change**
|
|
21
|
+
|
|
22
|
+
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:
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
try {
|
|
26
|
+
const { threads } = await storage.listThreads({ resourceId });
|
|
27
|
+
// ...use threads
|
|
28
|
+
} catch (error) {
|
|
29
|
+
// a real backend failure. Decide whether to retry, surface, or degrade.
|
|
30
|
+
// An empty thread list no longer hides here; it only means "no threads".
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Patch Changes
|
|
35
|
+
|
|
36
|
+
- 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)]:
|
|
37
|
+
- @mastra/core@1.58.0-alpha.1
|
|
38
|
+
|
|
3
39
|
## 1.6.0
|
|
4
40
|
|
|
5
41
|
### Minor Changes
|
package/dist/docs/SKILL.md
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -2364,13 +2364,7 @@ var MemoryMSSQL = class MemoryMSSQL extends _mastra_core_storage.MemoryStorage {
|
|
|
2364
2364
|
}, error);
|
|
2365
2365
|
this.logger?.error?.(mastraError.toString());
|
|
2366
2366
|
this.logger?.trackException?.(mastraError);
|
|
2367
|
-
|
|
2368
|
-
threads: [],
|
|
2369
|
-
total: 0,
|
|
2370
|
-
page,
|
|
2371
|
-
perPage: perPageForResponse,
|
|
2372
|
-
hasMore: false
|
|
2373
|
-
};
|
|
2367
|
+
throw mastraError;
|
|
2374
2368
|
}
|
|
2375
2369
|
}
|
|
2376
2370
|
async saveThread({ thread }) {
|
|
@@ -2517,7 +2511,14 @@ var MemoryMSSQL = class MemoryMSSQL extends _mastra_core_storage.MemoryStorage {
|
|
|
2517
2511
|
return diff !== 0 ? diff : a.id.localeCompare(b.id);
|
|
2518
2512
|
});
|
|
2519
2513
|
}
|
|
2520
|
-
|
|
2514
|
+
/**
|
|
2515
|
+
* Fetches the messages named by `include` together with their surrounding context.
|
|
2516
|
+
*
|
|
2517
|
+
* @param include - Message ids to pin, each with an optional before/after window.
|
|
2518
|
+
* @param resourceId - When set, restricts both the pinned messages and their context
|
|
2519
|
+
* to that resource so an id from another resource returns nothing.
|
|
2520
|
+
*/
|
|
2521
|
+
async _getIncludedMessages({ include, resourceId }) {
|
|
2521
2522
|
if (!include || include.length === 0) return null;
|
|
2522
2523
|
const unionQueries = [];
|
|
2523
2524
|
const paramValues = [];
|
|
@@ -2527,6 +2528,7 @@ var MemoryMSSQL = class MemoryMSSQL extends _mastra_core_storage.MemoryStorage {
|
|
|
2527
2528
|
indexName: _mastra_core_storage.TABLE_MESSAGES,
|
|
2528
2529
|
schemaName: getSchemaName(this.schema)
|
|
2529
2530
|
});
|
|
2531
|
+
const resourceCondition = resourceId ? ` AND [resourceId] = @presource` : "";
|
|
2530
2532
|
for (const inc of include) {
|
|
2531
2533
|
const { id, withPreviousMessages = 0, withNextMessages = 0 } = inc;
|
|
2532
2534
|
const pId = `@p${paramIdx}`;
|
|
@@ -2545,7 +2547,7 @@ var MemoryMSSQL = class MemoryMSSQL extends _mastra_core_storage.MemoryStorage {
|
|
|
2545
2547
|
FROM (
|
|
2546
2548
|
SELECT *, ROW_NUMBER() OVER (ORDER BY [createdAt] ASC) as row_num
|
|
2547
2549
|
FROM ${tableName}
|
|
2548
|
-
WHERE [thread_id] = (SELECT thread_id FROM ${tableName} WHERE id = ${pId})
|
|
2550
|
+
WHERE [thread_id] = (SELECT thread_id FROM ${tableName} WHERE id = ${pId}${resourceCondition})${resourceCondition}
|
|
2549
2551
|
) AS m
|
|
2550
2552
|
WHERE m.id = ${pId}
|
|
2551
2553
|
OR EXISTS (
|
|
@@ -2553,7 +2555,7 @@ var MemoryMSSQL = class MemoryMSSQL extends _mastra_core_storage.MemoryStorage {
|
|
|
2553
2555
|
FROM (
|
|
2554
2556
|
SELECT *, ROW_NUMBER() OVER (ORDER BY [createdAt] ASC) as row_num
|
|
2555
2557
|
FROM ${tableName}
|
|
2556
|
-
WHERE [thread_id] = (SELECT thread_id FROM ${tableName} WHERE id = ${pId})
|
|
2558
|
+
WHERE [thread_id] = (SELECT thread_id FROM ${tableName} WHERE id = ${pId}${resourceCondition})${resourceCondition}
|
|
2557
2559
|
) AS target
|
|
2558
2560
|
WHERE target.id = ${pId}
|
|
2559
2561
|
AND (
|
|
@@ -2577,6 +2579,7 @@ var MemoryMSSQL = class MemoryMSSQL extends _mastra_core_storage.MemoryStorage {
|
|
|
2577
2579
|
`;
|
|
2578
2580
|
const req = this.pool.request();
|
|
2579
2581
|
for (let i = 0; i < paramValues.length; ++i) req.input(paramNames[i], paramValues[i]);
|
|
2582
|
+
if (resourceId) req.input("presource", resourceId);
|
|
2580
2583
|
const includedRows = (await req.query(finalQuery)).recordset || [];
|
|
2581
2584
|
const seen = /* @__PURE__ */ new Set();
|
|
2582
2585
|
return includedRows.filter((row) => {
|
|
@@ -2624,7 +2627,7 @@ var MemoryMSSQL = class MemoryMSSQL extends _mastra_core_storage.MemoryStorage {
|
|
|
2624
2627
|
}, error);
|
|
2625
2628
|
this.logger?.error?.(mastraError.toString());
|
|
2626
2629
|
this.logger?.trackException?.(mastraError);
|
|
2627
|
-
|
|
2630
|
+
throw mastraError;
|
|
2628
2631
|
}
|
|
2629
2632
|
}
|
|
2630
2633
|
async listMessages(args) {
|
|
@@ -2676,7 +2679,10 @@ var MemoryMSSQL = class MemoryMSSQL extends _mastra_core_storage.MemoryStorage {
|
|
|
2676
2679
|
hasMore: false
|
|
2677
2680
|
};
|
|
2678
2681
|
if (perPage === 0 && include && include.length > 0) {
|
|
2679
|
-
const includeMessages = await this._getIncludedMessages({
|
|
2682
|
+
const includeMessages = await this._getIncludedMessages({
|
|
2683
|
+
include,
|
|
2684
|
+
resourceId
|
|
2685
|
+
});
|
|
2680
2686
|
const messages = this._parseAndFormatMessages(includeMessages ?? [], "v2");
|
|
2681
2687
|
return {
|
|
2682
2688
|
messages: this._sortMessages(messages, field, direction),
|
|
@@ -2713,7 +2719,10 @@ var MemoryMSSQL = class MemoryMSSQL extends _mastra_core_storage.MemoryStorage {
|
|
|
2713
2719
|
};
|
|
2714
2720
|
if (include?.length) {
|
|
2715
2721
|
const messageIds = new Set(messages.map((m) => m.id));
|
|
2716
|
-
(await this._getIncludedMessages({
|
|
2722
|
+
(await this._getIncludedMessages({
|
|
2723
|
+
include,
|
|
2724
|
+
resourceId
|
|
2725
|
+
}))?.forEach((msg) => {
|
|
2717
2726
|
if (!messageIds.has(msg.id)) {
|
|
2718
2727
|
messages.push(msg);
|
|
2719
2728
|
messageIds.add(msg.id);
|
|
@@ -2743,6 +2752,7 @@ var MemoryMSSQL = class MemoryMSSQL extends _mastra_core_storage.MemoryStorage {
|
|
|
2743
2752
|
hasMore: metadataFilter ? perPageInput !== false && offset + primaryPageCount < total : perPageInput !== false && returnedThreadMessageCount < total && offset + perPage < total
|
|
2744
2753
|
};
|
|
2745
2754
|
} catch (error) {
|
|
2755
|
+
if (error instanceof _mastra_core_error.MastraError && error.category === _mastra_core_error.ErrorCategory.USER) throw error;
|
|
2746
2756
|
const mastraError = new _mastra_core_error.MastraError({
|
|
2747
2757
|
id: (0, _mastra_core_storage.createStorageErrorId)("MSSQL", "LIST_MESSAGES", "FAILED"),
|
|
2748
2758
|
domain: _mastra_core_error.ErrorDomain.STORAGE,
|
|
@@ -2754,13 +2764,7 @@ var MemoryMSSQL = class MemoryMSSQL extends _mastra_core_storage.MemoryStorage {
|
|
|
2754
2764
|
}, error);
|
|
2755
2765
|
this.logger?.error?.(mastraError.toString());
|
|
2756
2766
|
this.logger?.trackException?.(mastraError);
|
|
2757
|
-
|
|
2758
|
-
messages: [],
|
|
2759
|
-
total: 0,
|
|
2760
|
-
page,
|
|
2761
|
-
perPage: perPageForResponse,
|
|
2762
|
-
hasMore: false
|
|
2763
|
-
};
|
|
2767
|
+
throw mastraError;
|
|
2764
2768
|
}
|
|
2765
2769
|
}
|
|
2766
2770
|
async saveMessages({ messages }) {
|