@mastra/dynamodb 1.1.3 → 1.2.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 +25 -0
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/index.cjs +13 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +14 -9
- package/dist/index.js.map +1 -1
- package/dist/storage/domains/memory/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts.map +1 -1
- package/package.json +7 -6
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DynamoDBClient, DescribeTableCommand } from '@aws-sdk/client-dynamodb';
|
|
2
2
|
import { DynamoDBDocumentClient } from '@aws-sdk/lib-dynamodb';
|
|
3
3
|
import { MastraError, ErrorCategory, ErrorDomain } from '@mastra/core/error';
|
|
4
|
-
import { BackgroundTasksStorage, createStorageErrorId, MemoryStorage, normalizePerPage, calculatePagination, ScoresStorage, SCORERS_SCHEMA, WorkflowsStorage, MastraCompositeStore, TABLE_BACKGROUND_TASKS, TABLE_SCORERS, TABLE_WORKFLOW_SNAPSHOT, TABLE_RESOURCES, TABLE_MESSAGES, TABLE_THREADS } from '@mastra/core/storage';
|
|
4
|
+
import { BackgroundTasksStorage, createStorageErrorId, MemoryStorage, validateStorageMetadataFilter, normalizePerPage, calculatePagination, storageMessageMatchesMetadataFilter, ScoresStorage, SCORERS_SCHEMA, WorkflowsStorage, MastraCompositeStore, TABLE_BACKGROUND_TASKS, TABLE_SCORERS, TABLE_WORKFLOW_SNAPSHOT, TABLE_RESOURCES, TABLE_MESSAGES, TABLE_THREADS } from '@mastra/core/storage';
|
|
5
5
|
import { Entity, Service } from 'electrodb';
|
|
6
6
|
import { MessageList } from '@mastra/core/agent';
|
|
7
7
|
import { saveScorePayloadSchema } from '@mastra/core/evals';
|
|
@@ -1747,6 +1747,7 @@ var MemoryStorageDynamoDB = class extends MemoryStorage {
|
|
|
1747
1747
|
}
|
|
1748
1748
|
async listMessages(args) {
|
|
1749
1749
|
const { threadId, resourceId, include, filter, perPage: perPageInput, page = 0, orderBy } = args;
|
|
1750
|
+
const metadataFilter = validateStorageMetadataFilter(filter?.metadata);
|
|
1750
1751
|
const threadIds = Array.isArray(threadId) ? threadId : [threadId];
|
|
1751
1752
|
if (threadIds.length === 0 || threadIds.some((id) => !id.trim())) {
|
|
1752
1753
|
throw new MastraError(
|
|
@@ -1836,19 +1837,24 @@ var MemoryStorageDynamoDB = class extends MemoryStorage {
|
|
|
1836
1837
|
let paginatedMessages = [];
|
|
1837
1838
|
let total = 0;
|
|
1838
1839
|
const filteredMessageIds = /* @__PURE__ */ new Set();
|
|
1839
|
-
if (threadIds.length > 1) {
|
|
1840
|
+
if (threadIds.length > 1 || metadataFilter) {
|
|
1840
1841
|
const threadResults = await Promise.all(
|
|
1841
1842
|
threadIds.map(async (tid) => {
|
|
1842
1843
|
const q = applyQueryFilters(
|
|
1843
1844
|
this.service.entities.message.query.byThread({ entity: "message", threadId: tid })
|
|
1844
1845
|
);
|
|
1845
|
-
const countResult = await q.go({ pages: "all", attributes: ["id"] });
|
|
1846
1846
|
const results = await q.go({ pages: "all", order });
|
|
1847
|
-
|
|
1847
|
+
let messages = parseQueryMessages(results.data);
|
|
1848
|
+
if (metadataFilter) {
|
|
1849
|
+
messages = messages.filter(
|
|
1850
|
+
(message) => storageMessageMatchesMetadataFilter(message.content, metadataFilter)
|
|
1851
|
+
);
|
|
1852
|
+
}
|
|
1853
|
+
return { ids: messages.map((message) => message.id), messages };
|
|
1848
1854
|
})
|
|
1849
1855
|
);
|
|
1850
|
-
for (const
|
|
1851
|
-
for (const id of
|
|
1856
|
+
for (const result of threadResults) {
|
|
1857
|
+
for (const id of result.ids) filteredMessageIds.add(id);
|
|
1852
1858
|
}
|
|
1853
1859
|
total = threadResults.reduce((sum, r) => sum + r.ids.length, 0);
|
|
1854
1860
|
const merged = threadResults.flatMap((r) => r.messages);
|
|
@@ -1895,10 +1901,9 @@ var MemoryStorageDynamoDB = class extends MemoryStorage {
|
|
|
1895
1901
|
let finalMessages = list.get.all.db();
|
|
1896
1902
|
finalMessages = this._sortMessages(finalMessages, field, direction);
|
|
1897
1903
|
const returnedFilteredMessageIds = new Set(
|
|
1898
|
-
finalMessages.filter((
|
|
1904
|
+
finalMessages.filter((message) => filteredMessageIds.has(message.id)).map((message) => message.id)
|
|
1899
1905
|
);
|
|
1900
|
-
const
|
|
1901
|
-
const hasMore = perPageInput !== false && !allFilteredMessagesReturned && offset + perPage < total;
|
|
1906
|
+
const hasMore = perPageInput !== false && (metadataFilter || returnedFilteredMessageIds.size < total) && offset + perPage < total;
|
|
1902
1907
|
return {
|
|
1903
1908
|
messages: finalMessages,
|
|
1904
1909
|
total,
|