@mastra/pg 1.23.0-alpha.7 → 1.23.1-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.
@@ -3,7 +3,7 @@ name: mastra-pg
3
3
  description: Documentation for @mastra/pg. Use when working with @mastra/pg APIs, configuration, or implementation.
4
4
  metadata:
5
5
  package: "@mastra/pg"
6
- version: "1.23.0-alpha.7"
6
+ version: "1.23.1-alpha.0"
7
7
  ---
8
8
 
9
9
  ## When to use
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.23.0-alpha.7",
2
+ "version": "1.23.1-alpha.0",
3
3
  "package": "@mastra/pg",
4
4
  "exports": {},
5
5
  "modules": {}
@@ -650,7 +650,7 @@ Key metadata considerations:
650
650
 
651
651
  ## Deleting vectors
652
652
 
653
- When building RAG applications, you often need to clean up stale vectors when documents are deleted or updated. Mastra provides the `deleteVectors` method that supports deleting vectors by metadata filters, making it straightforward to remove all embeddings associated with a specific document.
653
+ Use `deleteVectors` with a metadata filter to remove embeddings associated with a document. This is useful for cleaning up stale vectors after a document is deleted or updated.
654
654
 
655
655
  ### Delete by Metadata Filter
656
656
 
package/dist/index.cjs CHANGED
@@ -11064,13 +11064,36 @@ var MemoryPG = class MemoryPG extends _mastra_core_storage.MemoryStorage {
11064
11064
  * asked for a page after the last row, because there is then no row to carry the
11065
11065
  * count on.
11066
11066
  */
11067
- async #fetchMessagePage({ selectStatement, tableName, whereClause, orderByStatement, queryParams, perPageInput, perPage, offset }) {
11067
+ async #fetchMessagePage({ selectStatement, tableName, whereClause, orderByStatement, queryParams, perPageInput, perPage, offset, includeTotal = true }) {
11068
+ if (includeTotal === false && perPageInput !== false) {
11069
+ const peekLimit = perPage + 1;
11070
+ const rows = await this.#db.readClient.manyOrNone(`${selectStatement} FROM ${tableName} ${whereClause} ${orderByStatement} LIMIT $${queryParams.length + 1} OFFSET $${queryParams.length + 2}`, [
11071
+ ...queryParams,
11072
+ peekLimit,
11073
+ offset
11074
+ ]) || [];
11075
+ const hasMore = rows.length > perPage;
11076
+ const messages = hasMore ? rows.slice(0, perPage) : rows;
11077
+ return {
11078
+ total: offset + messages.length,
11079
+ messages,
11080
+ hasMore
11081
+ };
11082
+ }
11068
11083
  const limitClause = perPageInput === false ? "" : ` LIMIT $${queryParams.length + 1} OFFSET $${queryParams.length + 2}`;
11069
11084
  const dataParams = perPageInput === false ? queryParams : [
11070
11085
  ...queryParams,
11071
11086
  perPage,
11072
11087
  offset
11073
11088
  ];
11089
+ if (includeTotal === false) {
11090
+ const rows = await this.#db.readClient.manyOrNone(`${selectStatement} FROM ${tableName} ${whereClause} ${orderByStatement}`, dataParams) || [];
11091
+ return {
11092
+ total: rows.length,
11093
+ messages: rows,
11094
+ hasMore: false
11095
+ };
11096
+ }
11074
11097
  const rows = await this.#db.readClient.manyOrNone(`${selectStatement}, (SELECT COUNT(*) FROM ${tableName} ${whereClause}) AS "__total" FROM ${tableName} ${whereClause} ${orderByStatement}${limitClause}`, dataParams) || [];
11075
11098
  if (rows.length > 0) return {
11076
11099
  total: Number(rows[0].__total),
@@ -11087,7 +11110,7 @@ var MemoryPG = class MemoryPG extends _mastra_core_storage.MemoryStorage {
11087
11110
  };
11088
11111
  }
11089
11112
  async listMessages(args) {
11090
- const { threadId, resourceId, include, filter, perPage: perPageInput, page = 0, orderBy } = args;
11113
+ const { threadId, resourceId, include, filter, perPage: perPageInput, page = 0, orderBy, includeTotal = true } = args;
11091
11114
  const threadIds = (Array.isArray(threadId) ? threadId : [threadId]).filter((id) => typeof id === "string");
11092
11115
  if (threadIds.length === 0 || threadIds.some((id) => !id.trim())) throw new _mastra_core_error.MastraError({
11093
11116
  id: (0, _mastra_core_storage.createStorageErrorId)("PG", "LIST_MESSAGES", "INVALID_THREAD_ID"),
@@ -11173,20 +11196,27 @@ var MemoryPG = class MemoryPG extends _mastra_core_storage.MemoryStorage {
11173
11196
  }) : null;
11174
11197
  let total;
11175
11198
  let messages;
11199
+ let peekedHasMore;
11176
11200
  if (metadataFilter) {
11177
11201
  const filteredRows = (await this.#db.readClient.manyOrNone(`${selectStatement} FROM ${tableName} ${whereClause} ${orderByStatement}`, queryParams) || []).filter((row) => (0, _mastra_core_storage.storageMessageMatchesMetadataFilter)(row.content, metadataFilter));
11178
11202
  total = filteredRows.length;
11179
11203
  messages = perPageInput === false ? filteredRows : filteredRows.slice(offset, offset + perPage);
11180
- } else ({total, messages} = await this.#fetchMessagePage({
11181
- selectStatement,
11182
- tableName,
11183
- whereClause,
11184
- orderByStatement,
11185
- queryParams,
11186
- perPageInput,
11187
- perPage,
11188
- offset
11189
- }));
11204
+ } else {
11205
+ const pageResult = await this.#fetchMessagePage({
11206
+ selectStatement,
11207
+ tableName,
11208
+ whereClause,
11209
+ orderByStatement,
11210
+ queryParams,
11211
+ perPageInput,
11212
+ perPage,
11213
+ offset,
11214
+ includeTotal
11215
+ });
11216
+ total = pageResult.total;
11217
+ messages = pageResult.messages;
11218
+ peekedHasMore = pageResult.hasMore;
11219
+ }
11190
11220
  const primaryPageCount = messages.length;
11191
11221
  if (total === 0 && messages.length === 0 && (!include || include.length === 0)) return {
11192
11222
  messages: [],
@@ -11211,7 +11241,7 @@ var MemoryPG = class MemoryPG extends _mastra_core_storage.MemoryStorage {
11211
11241
  const finalMessages = this._sortMessages(list.get.all.db(), field, direction);
11212
11242
  const threadIdSet = new Set(threadIds);
11213
11243
  const allThreadMessagesReturned = new Set(finalMessages.filter((m) => m.threadId && threadIdSet.has(m.threadId)).map((m) => m.id)).size >= total;
11214
- const hasMore = metadataFilter ? perPageInput !== false && offset + primaryPageCount < total : perPageInput !== false && !allThreadMessagesReturned && offset + perPage < total;
11244
+ const hasMore = peekedHasMore !== void 0 ? peekedHasMore : metadataFilter ? perPageInput !== false && offset + primaryPageCount < total : perPageInput !== false && !allThreadMessagesReturned && offset + perPage < total;
11215
11245
  return {
11216
11246
  messages: finalMessages,
11217
11247
  total,
@@ -11236,7 +11266,7 @@ var MemoryPG = class MemoryPG extends _mastra_core_storage.MemoryStorage {
11236
11266
  }
11237
11267
  }
11238
11268
  async listMessagesByResourceId(args) {
11239
- const { resourceId, include, filter, perPage: perPageInput, page = 0, orderBy } = args;
11269
+ const { resourceId, include, filter, perPage: perPageInput, page = 0, orderBy, includeTotal = true } = args;
11240
11270
  if (!(resourceId !== void 0 && resourceId !== null && resourceId.trim() !== "")) throw new _mastra_core_error.MastraError({
11241
11271
  id: (0, _mastra_core_storage.createStorageErrorId)("PG", "LIST_MESSAGES_BY_RESOURCE_ID", "INVALID_QUERY"),
11242
11272
  domain: _mastra_core_error.ErrorDomain.STORAGE,
@@ -11319,20 +11349,27 @@ var MemoryPG = class MemoryPG extends _mastra_core_storage.MemoryStorage {
11319
11349
  }) : null;
11320
11350
  let total;
11321
11351
  let messages;
11352
+ let peekedHasMore;
11322
11353
  if (metadataFilter) {
11323
11354
  const filteredRows = (await this.#db.readClient.manyOrNone(`${selectStatement} FROM ${tableName} ${whereClause} ${orderByStatement}`, queryParams) || []).filter((row) => (0, _mastra_core_storage.storageMessageMatchesMetadataFilter)(row.content, metadataFilter));
11324
11355
  total = filteredRows.length;
11325
11356
  messages = perPageInput === false ? filteredRows : filteredRows.slice(offset, offset + perPage);
11326
- } else ({total, messages} = await this.#fetchMessagePage({
11327
- selectStatement,
11328
- tableName,
11329
- whereClause,
11330
- orderByStatement,
11331
- queryParams,
11332
- perPageInput,
11333
- perPage,
11334
- offset
11335
- }));
11357
+ } else {
11358
+ const pageResult = await this.#fetchMessagePage({
11359
+ selectStatement,
11360
+ tableName,
11361
+ whereClause,
11362
+ orderByStatement,
11363
+ queryParams,
11364
+ perPageInput,
11365
+ perPage,
11366
+ offset,
11367
+ includeTotal
11368
+ });
11369
+ total = pageResult.total;
11370
+ messages = pageResult.messages;
11371
+ peekedHasMore = pageResult.hasMore;
11372
+ }
11336
11373
  if (total === 0 && messages.length === 0 && (!include || include.length === 0)) return {
11337
11374
  messages: [],
11338
11375
  total: 0,
@@ -11354,7 +11391,7 @@ var MemoryPG = class MemoryPG extends _mastra_core_storage.MemoryStorage {
11354
11391
  const messagesWithParsedContent = messages.map((row) => this.parseRow(row));
11355
11392
  const list = new _mastra_core_agent.MessageList().add(messagesWithParsedContent, "memory");
11356
11393
  const finalMessages = this._sortMessages(list.get.all.db(), field, direction);
11357
- const hasMore = perPageInput !== false && offset + perPage < total;
11394
+ const hasMore = peekedHasMore !== void 0 ? peekedHasMore : perPageInput !== false && offset + perPage < total;
11358
11395
  return {
11359
11396
  messages: finalMessages,
11360
11397
  total,