@mastra/lance 1.5.2 → 1.6.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/README.md CHANGED
@@ -26,7 +26,7 @@ await vectorStore.createIndex({
26
26
  ## Documentation
27
27
 
28
28
  - [LanceDB integration guide](https://mastra.ai/integrations/databases/lancedb)
29
- - [Lance vector reference](https://mastra.ai/reference/vectors/lance)
29
+ - [Lance vector reference](https://mastra.ai/integrations/vectors/lance)
30
30
 
31
31
  ## Changelog
32
32
 
@@ -3,7 +3,7 @@ name: mastra-lance
3
3
  description: Documentation for @mastra/lance. Use when working with @mastra/lance APIs, configuration, or implementation.
4
4
  metadata:
5
5
  package: "@mastra/lance"
6
- version: "1.5.2"
6
+ version: "1.6.0-alpha.0"
7
7
  ---
8
8
 
9
9
  ## When to use
@@ -17,11 +17,11 @@ Read the individual reference documents for detailed explanations and code examp
17
17
  ### Integrations
18
18
 
19
19
  - [LanceDB](references/integrations-databases-lancedb.md) - Use LanceDB for Mastra application storage and vector operations, configure tables and initialization, and account for its observability limitations.
20
+ - [Lance](references/integrations-vectors-lance.md) - Store embeddings in LanceDB through Mastra's LanceVectorStore with embedded similarity search for local, S3, and managed cloud deployments.
20
21
 
21
22
  ### Reference
22
23
 
23
24
  - [Storing embeddings in a vector database](references/reference-rag-vector-databases.md) - After generating embeddings, you need to store them in a database that supports vector similarity search.
24
- - [Reference: Lance vector store](references/reference-vectors-lance.md) - The LanceVectorStore class provides vector search using LanceDB, an embedded vector database built on the Lance columnar format.
25
25
 
26
26
 
27
27
  Read [assets/SOURCE_MAP.json](assets/SOURCE_MAP.json) for source code references.
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.5.2",
2
+ "version": "1.6.0-alpha.0",
3
3
  "package": "@mastra/lance",
4
4
  "exports": {},
5
5
  "modules": {}
@@ -12,7 +12,7 @@ The LanceVectorStore uses a factory pattern for creation. You should use the sta
12
12
 
13
13
  **uri** (`string`): Path to LanceDB database or URI for cloud deployments
14
14
 
15
- **options** (`ConnectionOptions`): Additional connection options for LanceDB
15
+ **options** (`ConnectionOptions & { id?: string }`): Additional connection options for LanceDB. Pass id to name the store; otherwise a random UUID is used.
16
16
 
17
17
  ## Constructor examples
18
18
 
@@ -35,7 +35,7 @@ MongoDB Vector Search is a good solution for teams who want to consolidate vecto
35
35
 
36
36
  ### Using VoyageAI with MongoDB
37
37
 
38
- MongoDB works directly with VoyageAI's embedding models, which are optimized for retrieval tasks. For complete examples and specialized models, see the [VoyageAI embeddings documentation](https://mastra.ai/models/embeddings) and [MongoDB vector reference](https://mastra.ai/reference/vectors/mongodb).
38
+ MongoDB works directly with VoyageAI's embedding models, which are optimized for retrieval tasks. For complete examples and specialized models, see the [VoyageAI embeddings documentation](https://mastra.ai/models/embeddings) and [MongoDB vector reference](https://mastra.ai/integrations/vectors/mongodb).
39
39
 
40
40
  ### Hybrid Search (Vector + Full-Text)
41
41
 
@@ -52,7 +52,7 @@ const results = await store.hybridQuery({
52
52
  })
53
53
  ```
54
54
 
55
- See the [MongoDB vector reference](https://mastra.ai/reference/vectors/mongodb) for details on `createSearchIndex()`, `textQuery()`, and `hybridQuery()`.
55
+ See the [MongoDB vector reference](https://mastra.ai/integrations/vectors/mongodb) for details on `createSearchIndex()`, `textQuery()`, and `hybridQuery()`.
56
56
 
57
57
  ### Automated Embedding
58
58
 
@@ -75,7 +75,7 @@ const results = await store.query({
75
75
  })
76
76
  ```
77
77
 
78
- Automated Embedding is a MongoDB Preview feature and needs a deployment where it's available. See the [MongoDB vector reference](https://mastra.ai/reference/vectors/mongodb) for the supported options and requirements.
78
+ Automated Embedding is a MongoDB Preview feature and needs a deployment where it's available. See the [MongoDB vector reference](https://mastra.ai/integrations/vectors/mongodb) for the supported options and requirements.
79
79
 
80
80
  **PgVector**:
81
81
 
package/dist/index.cjs CHANGED
@@ -465,7 +465,9 @@ function toRecord(task) {
465
465
  suspendedAt: task.suspendedAt ?? /* @__PURE__ */ new Date(0),
466
466
  completedAt: task.completedAt ?? /* @__PURE__ */ new Date(0),
467
467
  ownerId: task.ownerId ?? null,
468
- leaseExpiresAt: task.leaseExpiresAt ?? null
468
+ leaseExpiresAt: task.leaseExpiresAt ?? null,
469
+ expiresAt: task.expiresAt ?? null,
470
+ metadata: serializeJson(task.metadata) ?? null
469
471
  };
470
472
  }
471
473
  function fromRecord(row) {
@@ -482,6 +484,7 @@ function fromRecord(row) {
482
484
  const suspendedAt = row.suspendedAt instanceof Date ? row.suspendedAt : row.suspendedAt ? new Date(row.suspendedAt) : void 0;
483
485
  const completedAt = row.completedAt instanceof Date ? row.completedAt : row.completedAt ? new Date(row.completedAt) : void 0;
484
486
  const leaseExpiresAt = row.leaseExpiresAt instanceof Date ? row.leaseExpiresAt : row.leaseExpiresAt ? new Date(row.leaseExpiresAt) : void 0;
487
+ const expiresAt = row.expiresAt instanceof Date ? row.expiresAt : row.expiresAt ? new Date(row.expiresAt) : void 0;
485
488
  return {
486
489
  id: String(row.id),
487
490
  status: String(row.status),
@@ -503,13 +506,16 @@ function fromRecord(row) {
503
506
  suspendedAt: suspendedAt && suspendedAt.getTime() > 0 ? suspendedAt : void 0,
504
507
  completedAt: completedAt && completedAt.getTime() > 0 ? completedAt : void 0,
505
508
  ownerId: row.ownerId != null && row.ownerId !== "" ? String(row.ownerId) : void 0,
506
- leaseExpiresAt
509
+ leaseExpiresAt,
510
+ expiresAt,
511
+ metadata: parseJson(row.metadata)
507
512
  };
508
513
  }
509
514
  function escapeStr(val) {
510
515
  return val.replace(/'/g, "''");
511
516
  }
512
517
  var StoreBackgroundTasksLance = class extends _mastra_core_storage.BackgroundTasksStorage {
518
+ supportsTaskExpiry = true;
513
519
  client;
514
520
  #db;
515
521
  constructor(config) {
@@ -530,7 +536,9 @@ var StoreBackgroundTasksLance = class extends _mastra_core_storage.BackgroundTas
530
536
  "suspend_payload",
531
537
  "suspendedAt",
532
538
  "ownerId",
533
- "leaseExpiresAt"
539
+ "leaseExpiresAt",
540
+ "expiresAt",
541
+ "metadata"
534
542
  ]
535
543
  });
536
544
  }
@@ -552,11 +560,14 @@ var StoreBackgroundTasksLance = class extends _mastra_core_storage.BackgroundTas
552
560
  if ("completedAt" in update) values.completedAt = update.completedAt?.getTime() ?? 0;
553
561
  if ("ownerId" in update) values.ownerId = update.ownerId ?? null;
554
562
  if ("leaseExpiresAt" in update) values.leaseExpiresAt = update.leaseExpiresAt?.getTime() ?? null;
563
+ if ("expiresAt" in update) values.expiresAt = update.expiresAt?.getTime() ?? null;
564
+ if ("metadata" in update) values.metadata = serializeJson(update.metadata) ?? null;
555
565
  if (Object.keys(values).length === 0) return false;
556
566
  const conditions = [`id = '${escapeStr(taskId)}'`];
557
567
  if (options?.expectedStatus) conditions.push(`status = '${escapeStr(options.expectedStatus)}'`);
558
568
  if (options?.expectedOwnerId !== void 0) conditions.push(options.expectedOwnerId === null ? "ownerId IS NULL" : `ownerId = '${escapeStr(options.expectedOwnerId)}'`);
559
569
  if (options?.expectedLeaseExpiresAt !== void 0) conditions.push(options.expectedLeaseExpiresAt === null ? "leaseExpiresAt IS NULL" : `leaseExpiresAt = ${options.expectedLeaseExpiresAt.getTime()}`);
570
+ if (options?.expectedSuspendedAt !== void 0) conditions.push(options.expectedSuspendedAt === null ? "(suspendedAt IS NULL OR suspendedAt = 0)" : `suspendedAt = ${options.expectedSuspendedAt.getTime()}`);
560
571
  return (await (await this.client.openTable(_mastra_core_storage.TABLE_BACKGROUND_TASKS)).update({
561
572
  where: conditions.join(" AND "),
562
573
  values
@@ -588,6 +599,7 @@ var StoreBackgroundTasksLance = class extends _mastra_core_storage.BackgroundTas
588
599
  let query = table.query();
589
600
  if (conditions.length > 0) query = query.where(conditions.join(" AND "));
590
601
  let tasks = (await query.toArray()).map(fromRecord);
602
+ if (filter.hasExpiresAt !== void 0) tasks = tasks.filter((t) => t.expiresAt != null === filter.hasExpiresAt);
591
603
  const dateCol = filter.dateFilterBy ?? "createdAt";
592
604
  if (filter.fromDate) tasks = tasks.filter((t) => {
593
605
  const val = t[dateCol];