@mastra/redis 1.4.0-alpha.0 → 1.4.0-alpha.2
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 +28 -0
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/index.cjs +26 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +26 -5
- package/dist/index.js.map +1 -1
- package/dist/storage/domains/memory/index.d.ts +9 -2
- package/dist/storage/domains/memory/index.d.ts.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# @mastra/redis
|
|
2
2
|
|
|
3
|
+
## 1.4.0-alpha.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Fixed generated thread titles being clobbered during a turn ([#21041](https://github.com/mastra-ai/mastra/pull/21041))
|
|
8
|
+
|
|
9
|
+
`updateThread` required both `title` and `metadata`, so callers that only needed to
|
|
10
|
+
change metadata (message persistence, working memory, observational memory, channel
|
|
11
|
+
subscriptions) had to read the thread and pass its title back. When title generation
|
|
12
|
+
finished between that read and the write, the freshly generated title was overwritten
|
|
13
|
+
with the stale one.
|
|
14
|
+
|
|
15
|
+
`title` and `metadata` are now independently optional: omitting one leaves that column
|
|
16
|
+
untouched. Callers that only change metadata no longer send a title, and message
|
|
17
|
+
persistence no longer rewrites a thread row it just read.
|
|
18
|
+
|
|
19
|
+
- Updated dependencies [[`1c75e32`](https://github.com/mastra-ai/mastra/commit/1c75e32f7fc0b9fb6f548b4407feaec8a1440212), [`c47165c`](https://github.com/mastra-ai/mastra/commit/c47165c983c87594c6952f1fd2fa51a90205034c), [`e08e789`](https://github.com/mastra-ai/mastra/commit/e08e789c1bf4cd2fe46363f7a4728536ceccc9bd), [`35cc901`](https://github.com/mastra-ai/mastra/commit/35cc90102cf834a84827acaf9eee0b6d6d1e2a3b), [`a8b4cf0`](https://github.com/mastra-ai/mastra/commit/a8b4cf02823cffebc4751a53337dfacf097c1ae1), [`f33264f`](https://github.com/mastra-ai/mastra/commit/f33264f517ae603279afd5c4251e2b40f6dd3618), [`689f2c4`](https://github.com/mastra-ai/mastra/commit/689f2c4b6c0835fe455702b01d21daa8abcd9331), [`eeae63e`](https://github.com/mastra-ai/mastra/commit/eeae63e7fbe8e1f237adc69bca6e2ac13c5ca907), [`4c186a0`](https://github.com/mastra-ai/mastra/commit/4c186a017275f45e6ed4c09de0f89550e2d09e8c), [`b0fa077`](https://github.com/mastra-ai/mastra/commit/b0fa077bcbc9b08551846fe372a0d3d15b71ed72)]:
|
|
20
|
+
- @mastra/core@1.58.0-alpha.8
|
|
21
|
+
|
|
22
|
+
## 1.4.0-alpha.1
|
|
23
|
+
|
|
24
|
+
### Patch Changes
|
|
25
|
+
|
|
26
|
+
- Fixed resource-scoped message includes across storage adapters so included context cannot cross resource boundaries. ([#20984](https://github.com/mastra-ai/mastra/pull/20984))
|
|
27
|
+
|
|
28
|
+
- 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)]:
|
|
29
|
+
- @mastra/core@1.58.0-alpha.5
|
|
30
|
+
|
|
3
31
|
## 1.4.0-alpha.0
|
|
4
32
|
|
|
5
33
|
### Minor Changes
|
package/dist/docs/SKILL.md
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -311,7 +311,7 @@ var StoreMemoryRedis = class extends _mastra_core_storage.MemoryStorage {
|
|
|
311
311
|
});
|
|
312
312
|
const updatedThread = {
|
|
313
313
|
...thread,
|
|
314
|
-
title,
|
|
314
|
+
title: title ?? thread.title,
|
|
315
315
|
metadata: {
|
|
316
316
|
...thread.metadata,
|
|
317
317
|
...metadata
|
|
@@ -432,16 +432,36 @@ var StoreMemoryRedis = class extends _mastra_core_storage.MemoryStorage {
|
|
|
432
432
|
if (message.threadId) await this.client.set(getMessageIndexKey(messageId), message.threadId);
|
|
433
433
|
return message.threadId || null;
|
|
434
434
|
}
|
|
435
|
-
|
|
435
|
+
/**
|
|
436
|
+
* Fetches the messages named by `include` together with their surrounding context.
|
|
437
|
+
*
|
|
438
|
+
* @param include - Message ids to pin, each with an optional before/after window.
|
|
439
|
+
* @param resourceId - When set, drops any pinned or context message owned by another
|
|
440
|
+
* resource so an id from another resource returns nothing.
|
|
441
|
+
*/
|
|
442
|
+
async getIncludedMessages(include, resourceId) {
|
|
436
443
|
if (!include?.length) return [];
|
|
437
444
|
const messageIds = /* @__PURE__ */ new Set();
|
|
438
445
|
const messageIdToThreadIds = {};
|
|
439
446
|
for (const item of include) {
|
|
440
447
|
const itemThreadId = await this.getThreadIdForMessage(item.id);
|
|
441
448
|
if (!itemThreadId) continue;
|
|
449
|
+
const itemThreadMessagesKey = getThreadMessagesKey(itemThreadId);
|
|
450
|
+
if (resourceId !== void 0) {
|
|
451
|
+
const threadMessageIds = await this.client.zRange(itemThreadMessagesKey, 0, -1);
|
|
452
|
+
const threadMessages = (await this.client.mGet(threadMessageIds.map((id) => getMessageKey(itemThreadId, id)))).filter((data) => data !== null).map((data) => JSON.parse(data)).filter((message) => message.resourceId === resourceId);
|
|
453
|
+
const targetIndex = threadMessages.findIndex((message) => message.id === item.id);
|
|
454
|
+
if (targetIndex === -1) continue;
|
|
455
|
+
const start = Math.max(0, targetIndex - (item.withPreviousMessages ?? 0));
|
|
456
|
+
const end = Math.min(threadMessages.length, targetIndex + (item.withNextMessages ?? 0) + 1);
|
|
457
|
+
for (const message of threadMessages.slice(start, end)) {
|
|
458
|
+
messageIds.add(message.id);
|
|
459
|
+
messageIdToThreadIds[message.id] = itemThreadId;
|
|
460
|
+
}
|
|
461
|
+
continue;
|
|
462
|
+
}
|
|
442
463
|
messageIds.add(item.id);
|
|
443
464
|
messageIdToThreadIds[item.id] = itemThreadId;
|
|
444
|
-
const itemThreadMessagesKey = getThreadMessagesKey(itemThreadId);
|
|
445
465
|
const rank = await this.client.zRank(itemThreadMessagesKey, item.id);
|
|
446
466
|
if (rank === null) continue;
|
|
447
467
|
if (item.withPreviousMessages) {
|
|
@@ -458,7 +478,8 @@ var StoreMemoryRedis = class extends _mastra_core_storage.MemoryStorage {
|
|
|
458
478
|
}
|
|
459
479
|
if (messageIds.size === 0) return [];
|
|
460
480
|
const keysToFetch = Array.from(messageIds).map((id) => getMessageKey(messageIdToThreadIds[id], id));
|
|
461
|
-
|
|
481
|
+
const includedMessages = (await this.client.mGet(keysToFetch)).filter((data) => data !== null).map((data) => JSON.parse(data));
|
|
482
|
+
return resourceId ? includedMessages.filter((message) => message.resourceId === resourceId) : includedMessages;
|
|
462
483
|
}
|
|
463
484
|
parseStoredMessage(storedMessage) {
|
|
464
485
|
const defaultMessageContent = {
|
|
@@ -562,7 +583,7 @@ var StoreMemoryRedis = class extends _mastra_core_storage.MemoryStorage {
|
|
|
562
583
|
hasMore: false
|
|
563
584
|
};
|
|
564
585
|
let includedMessages = [];
|
|
565
|
-
if (include && include.length > 0) includedMessages = (await this.getIncludedMessages(include)).map(this.parseStoredMessage);
|
|
586
|
+
if (include && include.length > 0) includedMessages = (await this.getIncludedMessages(include, resourceId)).map(this.parseStoredMessage);
|
|
566
587
|
if (perPage === 0 && include && include.length > 0) return {
|
|
567
588
|
messages: new _mastra_core_agent.MessageList().add(includedMessages, "memory").get.all.db().sort((a, b) => {
|
|
568
589
|
const aValue = getFieldValue(a);
|