@mastra/vectorize 1.0.0-beta.1 → 1.0.0-beta.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 CHANGED
@@ -1,5 +1,14 @@
1
1
  # @mastra/vectorize
2
2
 
3
+ ## 1.0.0-beta.2
4
+
5
+ ### Patch Changes
6
+
7
+ - Standardize error IDs across all storage and vector stores using centralized helper functions (`createStorageErrorId` and `createVectorErrorId`). This ensures consistent error ID patterns (`MASTRA_STORAGE_{STORE}_{OPERATION}_{STATUS}` and `MASTRA_VECTOR_{STORE}_{OPERATION}_{STATUS}`) across the codebase for better error tracking and debugging. ([#10913](https://github.com/mastra-ai/mastra/pull/10913))
8
+
9
+ - Updated dependencies [[`3076c67`](https://github.com/mastra-ai/mastra/commit/3076c6778b18988ae7d5c4c5c466366974b2d63f), [`85d7ee1`](https://github.com/mastra-ai/mastra/commit/85d7ee18ff4e14d625a8a30ec6656bb49804989b), [`c6c1092`](https://github.com/mastra-ai/mastra/commit/c6c1092f8fbf76109303f69e000e96fd1960c4ce), [`81dc110`](https://github.com/mastra-ai/mastra/commit/81dc11008d147cf5bdc8996ead1aa61dbdebb6fc), [`7aedb74`](https://github.com/mastra-ai/mastra/commit/7aedb74883adf66af38e270e4068fd42e7a37036), [`8f02d80`](https://github.com/mastra-ai/mastra/commit/8f02d800777397e4b45d7f1ad041988a8b0c6630), [`d7aad50`](https://github.com/mastra-ai/mastra/commit/d7aad501ce61646b76b4b511e558ac4eea9884d0), [`ce0a73a`](https://github.com/mastra-ai/mastra/commit/ce0a73abeaa75b10ca38f9e40a255a645d50ebfb), [`a02e542`](https://github.com/mastra-ai/mastra/commit/a02e542d23179bad250b044b17ff023caa61739f), [`a372c64`](https://github.com/mastra-ai/mastra/commit/a372c640ad1fd12e8f0613cebdc682fc156b4d95), [`8846867`](https://github.com/mastra-ai/mastra/commit/8846867ffa9a3746767618e314bebac08eb77d87), [`42a42cf`](https://github.com/mastra-ai/mastra/commit/42a42cf3132b9786feecbb8c13c583dce5b0e198), [`ae08bf0`](https://github.com/mastra-ai/mastra/commit/ae08bf0ebc6a4e4da992b711c4a389c32ba84cf4), [`21735a7`](https://github.com/mastra-ai/mastra/commit/21735a7ef306963554a69a89b44f06c3bcd85141), [`1d877b8`](https://github.com/mastra-ai/mastra/commit/1d877b8d7b536a251c1a7a18db7ddcf4f68d6f8b)]:
10
+ - @mastra/core@1.0.0-beta.7
11
+
3
12
  ## 1.0.0-beta.1
4
13
 
5
14
  ### Patch Changes
package/dist/index.cjs CHANGED
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var error = require('@mastra/core/error');
4
+ var storage = require('@mastra/core/storage');
4
5
  var vector = require('@mastra/core/vector');
5
6
  var Cloudflare = require('cloudflare');
6
7
  var filter = require('@mastra/core/vector/filter');
@@ -102,7 +103,7 @@ var CloudflareVector = class extends vector.MastraVector {
102
103
  } catch (error$1) {
103
104
  throw new error.MastraError(
104
105
  {
105
- id: "STORAGE_VECTORIZE_VECTOR_UPSERT_FAILED",
106
+ id: storage.createVectorErrorId("VECTORIZE", "UPSERT", "FAILED"),
106
107
  domain: error.ErrorDomain.STORAGE,
107
108
  category: error.ErrorCategory.THIRD_PARTY,
108
109
  details: { indexName, vectorCount: vectors?.length }
@@ -133,7 +134,7 @@ var CloudflareVector = class extends vector.MastraVector {
133
134
  }
134
135
  throw new error.MastraError(
135
136
  {
136
- id: "STORAGE_VECTORIZE_VECTOR_CREATE_INDEX_FAILED",
137
+ id: storage.createVectorErrorId("VECTORIZE", "CREATE_INDEX", "FAILED"),
137
138
  domain: error.ErrorDomain.STORAGE,
138
139
  category: error.ErrorCategory.THIRD_PARTY,
139
140
  details: { indexName, dimension, metric }
@@ -170,7 +171,7 @@ var CloudflareVector = class extends vector.MastraVector {
170
171
  } catch (error$1) {
171
172
  throw new error.MastraError(
172
173
  {
173
- id: "STORAGE_VECTORIZE_VECTOR_QUERY_FAILED",
174
+ id: storage.createVectorErrorId("VECTORIZE", "QUERY", "FAILED"),
174
175
  domain: error.ErrorDomain.STORAGE,
175
176
  category: error.ErrorCategory.THIRD_PARTY,
176
177
  details: { indexName, topK }
@@ -188,7 +189,7 @@ var CloudflareVector = class extends vector.MastraVector {
188
189
  } catch (error$1) {
189
190
  throw new error.MastraError(
190
191
  {
191
- id: "STORAGE_VECTORIZE_VECTOR_LIST_INDEXES_FAILED",
192
+ id: storage.createVectorErrorId("VECTORIZE", "LIST_INDEXES", "FAILED"),
192
193
  domain: error.ErrorDomain.STORAGE,
193
194
  category: error.ErrorCategory.THIRD_PARTY
194
195
  },
@@ -220,7 +221,7 @@ var CloudflareVector = class extends vector.MastraVector {
220
221
  } catch (error$1) {
221
222
  throw new error.MastraError(
222
223
  {
223
- id: "STORAGE_VECTORIZE_VECTOR_DESCRIBE_INDEX_FAILED",
224
+ id: storage.createVectorErrorId("VECTORIZE", "DESCRIBE_INDEX", "FAILED"),
224
225
  domain: error.ErrorDomain.STORAGE,
225
226
  category: error.ErrorCategory.THIRD_PARTY,
226
227
  details: { indexName }
@@ -237,7 +238,7 @@ var CloudflareVector = class extends vector.MastraVector {
237
238
  } catch (error$1) {
238
239
  throw new error.MastraError(
239
240
  {
240
- id: "STORAGE_VECTORIZE_VECTOR_DELETE_INDEX_FAILED",
241
+ id: storage.createVectorErrorId("VECTORIZE", "DELETE_INDEX", "FAILED"),
241
242
  domain: error.ErrorDomain.STORAGE,
242
243
  category: error.ErrorCategory.THIRD_PARTY,
243
244
  details: { indexName }
@@ -256,7 +257,7 @@ var CloudflareVector = class extends vector.MastraVector {
256
257
  } catch (error$1) {
257
258
  throw new error.MastraError(
258
259
  {
259
- id: "STORAGE_VECTORIZE_VECTOR_CREATE_METADATA_INDEX_FAILED",
260
+ id: storage.createVectorErrorId("VECTORIZE", "CREATE_METADATA_INDEX", "FAILED"),
260
261
  domain: error.ErrorDomain.STORAGE,
261
262
  category: error.ErrorCategory.THIRD_PARTY,
262
263
  details: { indexName, propertyName, indexType }
@@ -274,7 +275,7 @@ var CloudflareVector = class extends vector.MastraVector {
274
275
  } catch (error$1) {
275
276
  throw new error.MastraError(
276
277
  {
277
- id: "STORAGE_VECTORIZE_VECTOR_DELETE_METADATA_INDEX_FAILED",
278
+ id: storage.createVectorErrorId("VECTORIZE", "DELETE_METADATA_INDEX", "FAILED"),
278
279
  domain: error.ErrorDomain.STORAGE,
279
280
  category: error.ErrorCategory.THIRD_PARTY,
280
281
  details: { indexName, propertyName }
@@ -292,7 +293,7 @@ var CloudflareVector = class extends vector.MastraVector {
292
293
  } catch (error$1) {
293
294
  throw new error.MastraError(
294
295
  {
295
- id: "STORAGE_VECTORIZE_VECTOR_LIST_METADATA_INDEXES_FAILED",
296
+ id: storage.createVectorErrorId("VECTORIZE", "LIST_METADATA_INDEXES", "FAILED"),
296
297
  domain: error.ErrorDomain.STORAGE,
297
298
  category: error.ErrorCategory.THIRD_PARTY,
298
299
  details: { indexName }
@@ -314,7 +315,7 @@ var CloudflareVector = class extends vector.MastraVector {
314
315
  async updateVector({ indexName, id, update }) {
315
316
  if (!id) {
316
317
  throw new error.MastraError({
317
- id: "STORAGE_VECTORIZE_VECTOR_UPDATE_VECTOR_INVALID_ARGS",
318
+ id: storage.createVectorErrorId("VECTORIZE", "UPDATE_VECTOR", "INVALID_ARGS"),
318
319
  domain: error.ErrorDomain.STORAGE,
319
320
  category: error.ErrorCategory.USER,
320
321
  text: "id is required for Vectorize updateVector",
@@ -323,7 +324,7 @@ var CloudflareVector = class extends vector.MastraVector {
323
324
  }
324
325
  if (!update.vector && !update.metadata) {
325
326
  throw new error.MastraError({
326
- id: "STORAGE_VECTORIZE_VECTOR_UPDATE_VECTOR_INVALID_ARGS",
327
+ id: storage.createVectorErrorId("VECTORIZE", "UPDATE_VECTOR", "NO_PAYLOAD"),
327
328
  domain: error.ErrorDomain.STORAGE,
328
329
  category: error.ErrorCategory.USER,
329
330
  text: "No update data provided",
@@ -343,7 +344,7 @@ var CloudflareVector = class extends vector.MastraVector {
343
344
  } catch (error$1) {
344
345
  throw new error.MastraError(
345
346
  {
346
- id: "STORAGE_VECTORIZE_VECTOR_UPDATE_VECTOR_FAILED",
347
+ id: storage.createVectorErrorId("VECTORIZE", "UPDATE_VECTOR", "FAILED"),
347
348
  domain: error.ErrorDomain.STORAGE,
348
349
  category: error.ErrorCategory.THIRD_PARTY,
349
350
  details: {
@@ -371,7 +372,7 @@ var CloudflareVector = class extends vector.MastraVector {
371
372
  } catch (error$1) {
372
373
  throw new error.MastraError(
373
374
  {
374
- id: "STORAGE_VECTORIZE_VECTOR_DELETE_VECTOR_FAILED",
375
+ id: storage.createVectorErrorId("VECTORIZE", "DELETE_VECTOR", "FAILED"),
375
376
  domain: error.ErrorDomain.STORAGE,
376
377
  category: error.ErrorCategory.THIRD_PARTY,
377
378
  details: {
@@ -385,7 +386,7 @@ var CloudflareVector = class extends vector.MastraVector {
385
386
  }
386
387
  async deleteVectors({ indexName, filter, ids }) {
387
388
  throw new error.MastraError({
388
- id: "STORAGE_VECTORIZE_VECTOR_DELETE_VECTORS_NOT_SUPPORTED",
389
+ id: storage.createVectorErrorId("VECTORIZE", "DELETE_VECTORS", "NOT_SUPPORTED"),
389
390
  text: "deleteVectors is not yet implemented for Vectorize vector store",
390
391
  domain: error.ErrorDomain.STORAGE,
391
392
  category: error.ErrorCategory.SYSTEM,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/vector/filter.ts","../src/vector/index.ts","../src/vector/prompt.ts"],"names":["BaseFilterTranslator","MastraVector","Cloudflare","error","MastraError","ErrorDomain","ErrorCategory"],"mappings":"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","file":"index.cjs","sourcesContent":["import { BaseFilterTranslator } from '@mastra/core/vector/filter';\nimport type {\n VectorFilter,\n OperatorSupport,\n OperatorValueMap,\n LogicalOperatorValueMap,\n BlacklistedRootOperators,\n} from '@mastra/core/vector/filter';\n\ntype VectorizeOperatorValueMap = Omit<OperatorValueMap, '$regex' | '$options' | '$exists' | '$elemMatch' | '$all'>;\n\ntype VectorizeLogicalOperatorValueMap = Omit<LogicalOperatorValueMap, '$nor' | '$not' | '$and' | '$or'>;\n\ntype VectorizeBlacklistedRootOperators = BlacklistedRootOperators | '$nor' | '$not' | '$and' | '$or';\n\nexport type VectorizeVectorFilter = VectorFilter<\n keyof VectorizeOperatorValueMap,\n VectorizeOperatorValueMap,\n VectorizeLogicalOperatorValueMap,\n VectorizeBlacklistedRootOperators\n>;\n\nexport class VectorizeFilterTranslator extends BaseFilterTranslator<VectorizeVectorFilter> {\n protected override getSupportedOperators(): OperatorSupport {\n return {\n ...BaseFilterTranslator.DEFAULT_OPERATORS,\n logical: [],\n array: ['$in', '$nin'],\n element: [],\n regex: [],\n custom: [],\n };\n }\n\n translate(filter?: VectorizeVectorFilter): VectorizeVectorFilter {\n if (this.isEmpty(filter)) return filter;\n this.validateFilter(filter);\n return this.translateNode(filter);\n }\n\n private translateNode(node: VectorizeVectorFilter, currentPath: string = ''): any {\n if (this.isRegex(node)) {\n throw new Error('Regex is not supported in Vectorize');\n }\n if (this.isPrimitive(node)) return { $eq: this.normalizeComparisonValue(node) };\n if (Array.isArray(node)) return { $in: this.normalizeArrayValues(node) };\n\n const entries = Object.entries(node as Record<string, any>);\n const firstEntry = entries[0];\n\n // Handle single operator case\n if (entries.length === 1 && firstEntry && this.isOperator(firstEntry[0])) {\n const [operator, value] = firstEntry;\n return { [operator]: this.normalizeComparisonValue(value) };\n }\n\n // Process each entry\n const result: Record<string, any> = {};\n for (const [key, value] of entries) {\n const newPath = currentPath ? `${currentPath}.${key}` : key;\n\n if (this.isOperator(key)) {\n result[key] = this.normalizeComparisonValue(value);\n continue;\n }\n\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n if (Object.keys(value).length === 0) {\n result[newPath] = this.translateNode(value);\n continue;\n }\n\n // Check if the nested object contains operators\n const hasOperators = Object.keys(value).some(k => this.isOperator(k));\n if (hasOperators) {\n result[newPath] = this.translateNode(value);\n } else {\n // For objects without operators, flatten them\n Object.assign(result, this.translateNode(value, newPath));\n }\n } else {\n result[newPath] = this.translateNode(value);\n }\n }\n\n return result;\n }\n}\n","import { MastraError, ErrorDomain, ErrorCategory } from '@mastra/core/error';\nimport { MastraVector } from '@mastra/core/vector';\nimport type {\n QueryResult,\n CreateIndexParams,\n UpsertVectorParams,\n QueryVectorParams,\n DescribeIndexParams,\n DeleteIndexParams,\n DeleteVectorParams,\n UpdateVectorParams,\n IndexStats,\n DeleteVectorsParams,\n} from '@mastra/core/vector';\nimport Cloudflare from 'cloudflare';\n\nimport { VectorizeFilterTranslator } from './filter';\nimport type { VectorizeVectorFilter } from './filter';\n\ntype VectorizeQueryParams = QueryVectorParams<VectorizeVectorFilter>;\n\nexport class CloudflareVector extends MastraVector<VectorizeVectorFilter> {\n client: Cloudflare;\n accountId: string;\n\n constructor({ accountId, apiToken, id }: { accountId: string; apiToken: string } & { id: string }) {\n super({ id });\n this.accountId = accountId;\n\n this.client = new Cloudflare({\n apiToken: apiToken,\n });\n }\n\n get indexSeparator(): string {\n return '-';\n }\n\n async upsert({ indexName, vectors, metadata, ids }: UpsertVectorParams): Promise<string[]> {\n const generatedIds = ids || vectors.map(() => crypto.randomUUID());\n\n // Create NDJSON string - each line is a JSON object\n const ndjson = vectors\n .map((vector, index) =>\n JSON.stringify({\n id: generatedIds[index]!,\n values: vector,\n metadata: metadata?.[index],\n }),\n )\n .join('\\n');\n\n try {\n // Note: __binaryRequest is required for proper NDJSON handling\n await this.client.vectorize.indexes.upsert(\n indexName,\n {\n account_id: this.accountId,\n body: ndjson,\n },\n {\n __binaryRequest: true,\n },\n );\n\n return generatedIds;\n } catch (error) {\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_UPSERT_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName, vectorCount: vectors?.length },\n },\n error,\n );\n }\n }\n\n transformFilter(filter?: VectorizeVectorFilter) {\n const translator = new VectorizeFilterTranslator();\n return translator.translate(filter);\n }\n\n async createIndex({ indexName, dimension, metric = 'cosine' }: CreateIndexParams): Promise<void> {\n try {\n await this.client.vectorize.indexes.create({\n account_id: this.accountId,\n config: {\n dimensions: dimension,\n metric: metric === 'dotproduct' ? 'dot-product' : metric,\n },\n name: indexName,\n });\n } catch (error: any) {\n // Check for 'already exists' error\n const message = error?.errors?.[0]?.message || error?.message;\n if (\n error.status === 409 ||\n (typeof message === 'string' &&\n (message.toLowerCase().includes('already exists') || message.toLowerCase().includes('duplicate')))\n ) {\n // Fetch index info and check dimensions\n await this.validateExistingIndex(indexName, dimension, metric);\n return;\n }\n // For any other errors, propagate\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_CREATE_INDEX_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName, dimension, metric },\n },\n error,\n );\n }\n }\n\n async query({\n indexName,\n queryVector,\n topK = 10,\n filter,\n includeVector = false,\n }: VectorizeQueryParams): Promise<QueryResult[]> {\n try {\n const translatedFilter = this.transformFilter(filter) ?? {};\n const response = await this.client.vectorize.indexes.query(indexName, {\n account_id: this.accountId,\n vector: queryVector,\n returnValues: includeVector,\n returnMetadata: 'all',\n topK,\n filter: translatedFilter,\n });\n\n return (\n response?.matches?.map((match: any) => {\n return {\n id: match.id,\n metadata: match.metadata,\n score: match.score,\n vector: match.values,\n };\n }) || []\n );\n } catch (error) {\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_QUERY_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName, topK },\n },\n error,\n );\n }\n }\n\n async listIndexes(): Promise<string[]> {\n try {\n const res = await this.client.vectorize.indexes.list({\n account_id: this.accountId,\n });\n\n return res?.result?.map(index => index.name!) || [];\n } catch (error) {\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_LIST_INDEXES_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n },\n error,\n );\n }\n }\n\n /**\n * Retrieves statistics about a vector index.\n *\n * @param {string} indexName - The name of the index to describe\n * @returns A promise that resolves to the index statistics including dimension, count and metric\n */\n async describeIndex({ indexName }: DescribeIndexParams): Promise<IndexStats> {\n try {\n const index = await this.client.vectorize.indexes.get(indexName, {\n account_id: this.accountId,\n });\n\n const described = await this.client.vectorize.indexes.info(indexName, {\n account_id: this.accountId,\n });\n\n return {\n dimension: described?.dimensions!,\n // Since vector_count is not available in the response,\n // we might need a separate API call to get the count if needed\n count: described?.vectorCount || 0,\n metric: index?.config?.metric as 'cosine' | 'euclidean' | 'dotproduct',\n };\n } catch (error) {\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_DESCRIBE_INDEX_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName },\n },\n error,\n );\n }\n }\n\n async deleteIndex({ indexName }: DeleteIndexParams): Promise<void> {\n try {\n await this.client.vectorize.indexes.delete(indexName, {\n account_id: this.accountId,\n });\n } catch (error) {\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_DELETE_INDEX_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName },\n },\n error,\n );\n }\n }\n\n async createMetadataIndex(indexName: string, propertyName: string, indexType: 'string' | 'number' | 'boolean') {\n try {\n await this.client.vectorize.indexes.metadataIndex.create(indexName, {\n account_id: this.accountId,\n propertyName,\n indexType,\n });\n } catch (error) {\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_CREATE_METADATA_INDEX_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName, propertyName, indexType },\n },\n error,\n );\n }\n }\n\n async deleteMetadataIndex(indexName: string, propertyName: string) {\n try {\n await this.client.vectorize.indexes.metadataIndex.delete(indexName, {\n account_id: this.accountId,\n propertyName,\n });\n } catch (error) {\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_DELETE_METADATA_INDEX_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName, propertyName },\n },\n error,\n );\n }\n }\n\n async listMetadataIndexes(indexName: string) {\n try {\n const res = await this.client.vectorize.indexes.metadataIndex.list(indexName, {\n account_id: this.accountId,\n });\n\n return res?.metadataIndexes ?? [];\n } catch (error) {\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_LIST_METADATA_INDEXES_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName },\n },\n error,\n );\n }\n }\n\n /**\n * Updates a vector by its ID with the provided vector and/or metadata.\n * @param indexName - The name of the index containing the vector.\n * @param id - The ID of the vector to update.\n * @param update - An object containing the vector and/or metadata to update.\n * @param update.vector - An optional array of numbers representing the new vector.\n * @param update.metadata - An optional record containing the new metadata.\n * @returns A promise that resolves when the update is complete.\n * @throws Will throw an error if no updates are provided or if the update operation fails.\n */\n async updateVector({ indexName, id, update }: UpdateVectorParams): Promise<void> {\n if (!id) {\n throw new MastraError({\n id: 'STORAGE_VECTORIZE_VECTOR_UPDATE_VECTOR_INVALID_ARGS',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.USER,\n text: 'id is required for Vectorize updateVector',\n details: { indexName },\n });\n }\n\n if (!update.vector && !update.metadata) {\n throw new MastraError({\n id: 'STORAGE_VECTORIZE_VECTOR_UPDATE_VECTOR_INVALID_ARGS',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.USER,\n text: 'No update data provided',\n details: { indexName, id },\n });\n }\n\n try {\n const updatePayload: any = {\n ids: [id],\n account_id: this.accountId,\n };\n\n if (update.vector) {\n updatePayload.vectors = [update.vector];\n }\n if (update.metadata) {\n updatePayload.metadata = [update.metadata];\n }\n\n await this.upsert({ indexName: indexName, vectors: updatePayload.vectors, metadata: updatePayload.metadata });\n } catch (error) {\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_UPDATE_VECTOR_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: {\n indexName,\n ...(id && { id }),\n },\n },\n error,\n );\n }\n }\n\n /**\n * Deletes a vector by its ID.\n * @param indexName - The name of the index containing the vector.\n * @param id - The ID of the vector to delete.\n * @returns A promise that resolves when the deletion is complete.\n * @throws Will throw an error if the deletion operation fails.\n */\n async deleteVector({ indexName, id }: DeleteVectorParams): Promise<void> {\n try {\n await this.client.vectorize.indexes.deleteByIds(indexName, {\n ids: [id],\n account_id: this.accountId,\n });\n } catch (error) {\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_DELETE_VECTOR_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: {\n indexName,\n ...(id && { id }),\n },\n },\n error,\n );\n }\n }\n\n async deleteVectors({ indexName, filter, ids }: DeleteVectorsParams): Promise<void> {\n throw new MastraError({\n id: 'STORAGE_VECTORIZE_VECTOR_DELETE_VECTORS_NOT_SUPPORTED',\n text: 'deleteVectors is not yet implemented for Vectorize vector store',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.SYSTEM,\n details: {\n indexName,\n ...(filter && { filter: JSON.stringify(filter) }),\n ...(ids && { idsCount: ids.length }),\n },\n });\n }\n}\n","/**\n * Vector store specific prompt that details supported operators and examples.\n * This prompt helps users construct valid filters for Vectorize.\n */\nexport const VECTORIZE_PROMPT = `When querying Vectorize, you can ONLY use the operators listed below. Any other operators will be rejected.\nImportant: Don't explain how to construct the filter - use the specified operators and fields to search the content and return relevant results.\nIf a user tries to give an explicit operator that is not supported, reject the filter entirely and let them know that the operator is not supported.\n\nBasic Comparison Operators:\n- $eq: Exact match (default when using field: value)\n Example: { \"category\": \"electronics\" }\n- $ne: Not equal\n Example: { \"category\": { \"$ne\": \"electronics\" } }\n- $gt: Greater than\n Example: { \"price\": { \"$gt\": 100 } }\n- $gte: Greater than or equal\n Example: { \"price\": { \"$gte\": 100 } }\n- $lt: Less than\n Example: { \"price\": { \"$lt\": 100 } }\n- $lte: Less than or equal\n Example: { \"price\": { \"$lte\": 100 } }\n\nArray Operators:\n- $in: Match any value in array\n Example: { \"category\": { \"$in\": [\"electronics\", \"books\"] } }\n- $nin: Does not match any value in array\n Example: { \"category\": { \"$nin\": [\"electronics\", \"books\"] } }\n\nLogical Operators:\n- $and: Logical AND (can be implicit or explicit)\n Implicit Example: { \"price\": { \"$gt\": 100 }, \"category\": \"electronics\" }\n Explicit Example: { \"$and\": [{ \"price\": { \"$gt\": 100 } }, { \"category\": \"electronics\" }] }\n- $or: Logical OR\n Example: { \"$or\": [{ \"price\": { \"$lt\": 50 } }, { \"category\": \"books\" }] }\n\nElement Operators:\n- $exists: Check if field exists\n Example: { \"rating\": { \"$exists\": true } }\n- $match: Match text using full-text search\n Example: { \"description\": { \"$match\": \"gaming laptop\" } }\n\nRestrictions:\n- Regex patterns are not supported\n- Only $and and $or logical operators are supported at the top level\n- Empty arrays in $in/$nin will return no results\n- Nested fields are supported using dot notation\n- Multiple conditions on the same field are supported with both implicit and explicit $and\n- At least one key-value pair is required in filter object\n- Empty objects and undefined values are treated as no filter\n- Invalid types in comparison operators will throw errors\n- All non-logical operators must be used within a field condition\n Valid: { \"field\": { \"$gt\": 100 } }\n Valid: { \"$and\": [...] }\n Invalid: { \"$gt\": 100 }\n- Logical operators must contain field conditions, not direct operators\n Valid: { \"$and\": [{ \"field\": { \"$gt\": 100 } }] }\n Invalid: { \"$and\": [{ \"$gt\": 100 }] }\n- Logical operators ($and, $or):\n - Can only be used at top level or nested within other logical operators\n - Can not be used on a field level, or be nested inside a field\n - Can not be used inside an operator\n - Valid: { \"$and\": [{ \"field\": { \"$gt\": 100 } }] }\n - Valid: { \"$or\": [{ \"$and\": [{ \"field\": { \"$gt\": 100 } }] }] }\n - Invalid: { \"field\": { \"$and\": [{ \"$gt\": 100 }] } }\n - Invalid: { \"field\": { \"$or\": [{ \"$gt\": 100 }] } }\n - Invalid: { \"field\": { \"$gt\": { \"$and\": [{...}] } } }\n\nExample Complex Query:\n{\n \"$and\": [\n { \"category\": { \"$in\": [\"electronics\", \"computers\"] } },\n { \"price\": { \"$gte\": 100, \"$lte\": 1000 } },\n { \"description\": { \"$match\": \"gaming laptop\" } },\n { \"rating\": { \"$exists\": true, \"$gt\": 4 } },\n { \"$or\": [\n { \"stock\": { \"$gt\": 0 } },\n { \"preorder\": true }\n ]}\n ]\n}`;\n"]}
1
+ {"version":3,"sources":["../src/vector/filter.ts","../src/vector/index.ts","../src/vector/prompt.ts"],"names":["BaseFilterTranslator","MastraVector","Cloudflare","error","MastraError","createVectorErrorId","ErrorDomain","ErrorCategory"],"mappings":"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","file":"index.cjs","sourcesContent":["import { BaseFilterTranslator } from '@mastra/core/vector/filter';\nimport type {\n VectorFilter,\n OperatorSupport,\n OperatorValueMap,\n LogicalOperatorValueMap,\n BlacklistedRootOperators,\n} from '@mastra/core/vector/filter';\n\ntype VectorizeOperatorValueMap = Omit<OperatorValueMap, '$regex' | '$options' | '$exists' | '$elemMatch' | '$all'>;\n\ntype VectorizeLogicalOperatorValueMap = Omit<LogicalOperatorValueMap, '$nor' | '$not' | '$and' | '$or'>;\n\ntype VectorizeBlacklistedRootOperators = BlacklistedRootOperators | '$nor' | '$not' | '$and' | '$or';\n\nexport type VectorizeVectorFilter = VectorFilter<\n keyof VectorizeOperatorValueMap,\n VectorizeOperatorValueMap,\n VectorizeLogicalOperatorValueMap,\n VectorizeBlacklistedRootOperators\n>;\n\nexport class VectorizeFilterTranslator extends BaseFilterTranslator<VectorizeVectorFilter> {\n protected override getSupportedOperators(): OperatorSupport {\n return {\n ...BaseFilterTranslator.DEFAULT_OPERATORS,\n logical: [],\n array: ['$in', '$nin'],\n element: [],\n regex: [],\n custom: [],\n };\n }\n\n translate(filter?: VectorizeVectorFilter): VectorizeVectorFilter {\n if (this.isEmpty(filter)) return filter;\n this.validateFilter(filter);\n return this.translateNode(filter);\n }\n\n private translateNode(node: VectorizeVectorFilter, currentPath: string = ''): any {\n if (this.isRegex(node)) {\n throw new Error('Regex is not supported in Vectorize');\n }\n if (this.isPrimitive(node)) return { $eq: this.normalizeComparisonValue(node) };\n if (Array.isArray(node)) return { $in: this.normalizeArrayValues(node) };\n\n const entries = Object.entries(node as Record<string, any>);\n const firstEntry = entries[0];\n\n // Handle single operator case\n if (entries.length === 1 && firstEntry && this.isOperator(firstEntry[0])) {\n const [operator, value] = firstEntry;\n return { [operator]: this.normalizeComparisonValue(value) };\n }\n\n // Process each entry\n const result: Record<string, any> = {};\n for (const [key, value] of entries) {\n const newPath = currentPath ? `${currentPath}.${key}` : key;\n\n if (this.isOperator(key)) {\n result[key] = this.normalizeComparisonValue(value);\n continue;\n }\n\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n if (Object.keys(value).length === 0) {\n result[newPath] = this.translateNode(value);\n continue;\n }\n\n // Check if the nested object contains operators\n const hasOperators = Object.keys(value).some(k => this.isOperator(k));\n if (hasOperators) {\n result[newPath] = this.translateNode(value);\n } else {\n // For objects without operators, flatten them\n Object.assign(result, this.translateNode(value, newPath));\n }\n } else {\n result[newPath] = this.translateNode(value);\n }\n }\n\n return result;\n }\n}\n","import { MastraError, ErrorDomain, ErrorCategory } from '@mastra/core/error';\nimport { createVectorErrorId } from '@mastra/core/storage';\nimport { MastraVector } from '@mastra/core/vector';\nimport type {\n QueryResult,\n CreateIndexParams,\n UpsertVectorParams,\n QueryVectorParams,\n DescribeIndexParams,\n DeleteIndexParams,\n DeleteVectorParams,\n UpdateVectorParams,\n IndexStats,\n DeleteVectorsParams,\n} from '@mastra/core/vector';\nimport Cloudflare from 'cloudflare';\n\nimport { VectorizeFilterTranslator } from './filter';\nimport type { VectorizeVectorFilter } from './filter';\n\ntype VectorizeQueryParams = QueryVectorParams<VectorizeVectorFilter>;\n\nexport class CloudflareVector extends MastraVector<VectorizeVectorFilter> {\n client: Cloudflare;\n accountId: string;\n\n constructor({ accountId, apiToken, id }: { accountId: string; apiToken: string } & { id: string }) {\n super({ id });\n this.accountId = accountId;\n\n this.client = new Cloudflare({\n apiToken: apiToken,\n });\n }\n\n get indexSeparator(): string {\n return '-';\n }\n\n async upsert({ indexName, vectors, metadata, ids }: UpsertVectorParams): Promise<string[]> {\n const generatedIds = ids || vectors.map(() => crypto.randomUUID());\n\n // Create NDJSON string - each line is a JSON object\n const ndjson = vectors\n .map((vector, index) =>\n JSON.stringify({\n id: generatedIds[index]!,\n values: vector,\n metadata: metadata?.[index],\n }),\n )\n .join('\\n');\n\n try {\n // Note: __binaryRequest is required for proper NDJSON handling\n await this.client.vectorize.indexes.upsert(\n indexName,\n {\n account_id: this.accountId,\n body: ndjson,\n },\n {\n __binaryRequest: true,\n },\n );\n\n return generatedIds;\n } catch (error) {\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'UPSERT', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName, vectorCount: vectors?.length },\n },\n error,\n );\n }\n }\n\n transformFilter(filter?: VectorizeVectorFilter) {\n const translator = new VectorizeFilterTranslator();\n return translator.translate(filter);\n }\n\n async createIndex({ indexName, dimension, metric = 'cosine' }: CreateIndexParams): Promise<void> {\n try {\n await this.client.vectorize.indexes.create({\n account_id: this.accountId,\n config: {\n dimensions: dimension,\n metric: metric === 'dotproduct' ? 'dot-product' : metric,\n },\n name: indexName,\n });\n } catch (error: any) {\n // Check for 'already exists' error\n const message = error?.errors?.[0]?.message || error?.message;\n if (\n error.status === 409 ||\n (typeof message === 'string' &&\n (message.toLowerCase().includes('already exists') || message.toLowerCase().includes('duplicate')))\n ) {\n // Fetch index info and check dimensions\n await this.validateExistingIndex(indexName, dimension, metric);\n return;\n }\n // For any other errors, propagate\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'CREATE_INDEX', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName, dimension, metric },\n },\n error,\n );\n }\n }\n\n async query({\n indexName,\n queryVector,\n topK = 10,\n filter,\n includeVector = false,\n }: VectorizeQueryParams): Promise<QueryResult[]> {\n try {\n const translatedFilter = this.transformFilter(filter) ?? {};\n const response = await this.client.vectorize.indexes.query(indexName, {\n account_id: this.accountId,\n vector: queryVector,\n returnValues: includeVector,\n returnMetadata: 'all',\n topK,\n filter: translatedFilter,\n });\n\n return (\n response?.matches?.map((match: any) => {\n return {\n id: match.id,\n metadata: match.metadata,\n score: match.score,\n vector: match.values,\n };\n }) || []\n );\n } catch (error) {\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'QUERY', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName, topK },\n },\n error,\n );\n }\n }\n\n async listIndexes(): Promise<string[]> {\n try {\n const res = await this.client.vectorize.indexes.list({\n account_id: this.accountId,\n });\n\n return res?.result?.map(index => index.name!) || [];\n } catch (error) {\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'LIST_INDEXES', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n },\n error,\n );\n }\n }\n\n /**\n * Retrieves statistics about a vector index.\n *\n * @param {string} indexName - The name of the index to describe\n * @returns A promise that resolves to the index statistics including dimension, count and metric\n */\n async describeIndex({ indexName }: DescribeIndexParams): Promise<IndexStats> {\n try {\n const index = await this.client.vectorize.indexes.get(indexName, {\n account_id: this.accountId,\n });\n\n const described = await this.client.vectorize.indexes.info(indexName, {\n account_id: this.accountId,\n });\n\n return {\n dimension: described?.dimensions!,\n // Since vector_count is not available in the response,\n // we might need a separate API call to get the count if needed\n count: described?.vectorCount || 0,\n metric: index?.config?.metric as 'cosine' | 'euclidean' | 'dotproduct',\n };\n } catch (error) {\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'DESCRIBE_INDEX', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName },\n },\n error,\n );\n }\n }\n\n async deleteIndex({ indexName }: DeleteIndexParams): Promise<void> {\n try {\n await this.client.vectorize.indexes.delete(indexName, {\n account_id: this.accountId,\n });\n } catch (error) {\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'DELETE_INDEX', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName },\n },\n error,\n );\n }\n }\n\n async createMetadataIndex(indexName: string, propertyName: string, indexType: 'string' | 'number' | 'boolean') {\n try {\n await this.client.vectorize.indexes.metadataIndex.create(indexName, {\n account_id: this.accountId,\n propertyName,\n indexType,\n });\n } catch (error) {\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'CREATE_METADATA_INDEX', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName, propertyName, indexType },\n },\n error,\n );\n }\n }\n\n async deleteMetadataIndex(indexName: string, propertyName: string) {\n try {\n await this.client.vectorize.indexes.metadataIndex.delete(indexName, {\n account_id: this.accountId,\n propertyName,\n });\n } catch (error) {\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'DELETE_METADATA_INDEX', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName, propertyName },\n },\n error,\n );\n }\n }\n\n async listMetadataIndexes(indexName: string) {\n try {\n const res = await this.client.vectorize.indexes.metadataIndex.list(indexName, {\n account_id: this.accountId,\n });\n\n return res?.metadataIndexes ?? [];\n } catch (error) {\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'LIST_METADATA_INDEXES', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName },\n },\n error,\n );\n }\n }\n\n /**\n * Updates a vector by its ID with the provided vector and/or metadata.\n * @param indexName - The name of the index containing the vector.\n * @param id - The ID of the vector to update.\n * @param update - An object containing the vector and/or metadata to update.\n * @param update.vector - An optional array of numbers representing the new vector.\n * @param update.metadata - An optional record containing the new metadata.\n * @returns A promise that resolves when the update is complete.\n * @throws Will throw an error if no updates are provided or if the update operation fails.\n */\n async updateVector({ indexName, id, update }: UpdateVectorParams): Promise<void> {\n if (!id) {\n throw new MastraError({\n id: createVectorErrorId('VECTORIZE', 'UPDATE_VECTOR', 'INVALID_ARGS'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.USER,\n text: 'id is required for Vectorize updateVector',\n details: { indexName },\n });\n }\n\n if (!update.vector && !update.metadata) {\n throw new MastraError({\n id: createVectorErrorId('VECTORIZE', 'UPDATE_VECTOR', 'NO_PAYLOAD'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.USER,\n text: 'No update data provided',\n details: { indexName, id },\n });\n }\n\n try {\n const updatePayload: any = {\n ids: [id],\n account_id: this.accountId,\n };\n\n if (update.vector) {\n updatePayload.vectors = [update.vector];\n }\n if (update.metadata) {\n updatePayload.metadata = [update.metadata];\n }\n\n await this.upsert({ indexName: indexName, vectors: updatePayload.vectors, metadata: updatePayload.metadata });\n } catch (error) {\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'UPDATE_VECTOR', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: {\n indexName,\n ...(id && { id }),\n },\n },\n error,\n );\n }\n }\n\n /**\n * Deletes a vector by its ID.\n * @param indexName - The name of the index containing the vector.\n * @param id - The ID of the vector to delete.\n * @returns A promise that resolves when the deletion is complete.\n * @throws Will throw an error if the deletion operation fails.\n */\n async deleteVector({ indexName, id }: DeleteVectorParams): Promise<void> {\n try {\n await this.client.vectorize.indexes.deleteByIds(indexName, {\n ids: [id],\n account_id: this.accountId,\n });\n } catch (error) {\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'DELETE_VECTOR', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: {\n indexName,\n ...(id && { id }),\n },\n },\n error,\n );\n }\n }\n\n async deleteVectors({ indexName, filter, ids }: DeleteVectorsParams): Promise<void> {\n throw new MastraError({\n id: createVectorErrorId('VECTORIZE', 'DELETE_VECTORS', 'NOT_SUPPORTED'),\n text: 'deleteVectors is not yet implemented for Vectorize vector store',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.SYSTEM,\n details: {\n indexName,\n ...(filter && { filter: JSON.stringify(filter) }),\n ...(ids && { idsCount: ids.length }),\n },\n });\n }\n}\n","/**\n * Vector store specific prompt that details supported operators and examples.\n * This prompt helps users construct valid filters for Vectorize.\n */\nexport const VECTORIZE_PROMPT = `When querying Vectorize, you can ONLY use the operators listed below. Any other operators will be rejected.\nImportant: Don't explain how to construct the filter - use the specified operators and fields to search the content and return relevant results.\nIf a user tries to give an explicit operator that is not supported, reject the filter entirely and let them know that the operator is not supported.\n\nBasic Comparison Operators:\n- $eq: Exact match (default when using field: value)\n Example: { \"category\": \"electronics\" }\n- $ne: Not equal\n Example: { \"category\": { \"$ne\": \"electronics\" } }\n- $gt: Greater than\n Example: { \"price\": { \"$gt\": 100 } }\n- $gte: Greater than or equal\n Example: { \"price\": { \"$gte\": 100 } }\n- $lt: Less than\n Example: { \"price\": { \"$lt\": 100 } }\n- $lte: Less than or equal\n Example: { \"price\": { \"$lte\": 100 } }\n\nArray Operators:\n- $in: Match any value in array\n Example: { \"category\": { \"$in\": [\"electronics\", \"books\"] } }\n- $nin: Does not match any value in array\n Example: { \"category\": { \"$nin\": [\"electronics\", \"books\"] } }\n\nLogical Operators:\n- $and: Logical AND (can be implicit or explicit)\n Implicit Example: { \"price\": { \"$gt\": 100 }, \"category\": \"electronics\" }\n Explicit Example: { \"$and\": [{ \"price\": { \"$gt\": 100 } }, { \"category\": \"electronics\" }] }\n- $or: Logical OR\n Example: { \"$or\": [{ \"price\": { \"$lt\": 50 } }, { \"category\": \"books\" }] }\n\nElement Operators:\n- $exists: Check if field exists\n Example: { \"rating\": { \"$exists\": true } }\n- $match: Match text using full-text search\n Example: { \"description\": { \"$match\": \"gaming laptop\" } }\n\nRestrictions:\n- Regex patterns are not supported\n- Only $and and $or logical operators are supported at the top level\n- Empty arrays in $in/$nin will return no results\n- Nested fields are supported using dot notation\n- Multiple conditions on the same field are supported with both implicit and explicit $and\n- At least one key-value pair is required in filter object\n- Empty objects and undefined values are treated as no filter\n- Invalid types in comparison operators will throw errors\n- All non-logical operators must be used within a field condition\n Valid: { \"field\": { \"$gt\": 100 } }\n Valid: { \"$and\": [...] }\n Invalid: { \"$gt\": 100 }\n- Logical operators must contain field conditions, not direct operators\n Valid: { \"$and\": [{ \"field\": { \"$gt\": 100 } }] }\n Invalid: { \"$and\": [{ \"$gt\": 100 }] }\n- Logical operators ($and, $or):\n - Can only be used at top level or nested within other logical operators\n - Can not be used on a field level, or be nested inside a field\n - Can not be used inside an operator\n - Valid: { \"$and\": [{ \"field\": { \"$gt\": 100 } }] }\n - Valid: { \"$or\": [{ \"$and\": [{ \"field\": { \"$gt\": 100 } }] }] }\n - Invalid: { \"field\": { \"$and\": [{ \"$gt\": 100 }] } }\n - Invalid: { \"field\": { \"$or\": [{ \"$gt\": 100 }] } }\n - Invalid: { \"field\": { \"$gt\": { \"$and\": [{...}] } } }\n\nExample Complex Query:\n{\n \"$and\": [\n { \"category\": { \"$in\": [\"electronics\", \"computers\"] } },\n { \"price\": { \"$gte\": 100, \"$lte\": 1000 } },\n { \"description\": { \"$match\": \"gaming laptop\" } },\n { \"rating\": { \"$exists\": true, \"$gt\": 4 } },\n { \"$or\": [\n { \"stock\": { \"$gt\": 0 } },\n { \"preorder\": true }\n ]}\n ]\n}`;\n"]}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { MastraError, ErrorCategory, ErrorDomain } from '@mastra/core/error';
2
+ import { createVectorErrorId } from '@mastra/core/storage';
2
3
  import { MastraVector } from '@mastra/core/vector';
3
4
  import Cloudflare from 'cloudflare';
4
5
  import { BaseFilterTranslator } from '@mastra/core/vector/filter';
@@ -96,7 +97,7 @@ var CloudflareVector = class extends MastraVector {
96
97
  } catch (error) {
97
98
  throw new MastraError(
98
99
  {
99
- id: "STORAGE_VECTORIZE_VECTOR_UPSERT_FAILED",
100
+ id: createVectorErrorId("VECTORIZE", "UPSERT", "FAILED"),
100
101
  domain: ErrorDomain.STORAGE,
101
102
  category: ErrorCategory.THIRD_PARTY,
102
103
  details: { indexName, vectorCount: vectors?.length }
@@ -127,7 +128,7 @@ var CloudflareVector = class extends MastraVector {
127
128
  }
128
129
  throw new MastraError(
129
130
  {
130
- id: "STORAGE_VECTORIZE_VECTOR_CREATE_INDEX_FAILED",
131
+ id: createVectorErrorId("VECTORIZE", "CREATE_INDEX", "FAILED"),
131
132
  domain: ErrorDomain.STORAGE,
132
133
  category: ErrorCategory.THIRD_PARTY,
133
134
  details: { indexName, dimension, metric }
@@ -164,7 +165,7 @@ var CloudflareVector = class extends MastraVector {
164
165
  } catch (error) {
165
166
  throw new MastraError(
166
167
  {
167
- id: "STORAGE_VECTORIZE_VECTOR_QUERY_FAILED",
168
+ id: createVectorErrorId("VECTORIZE", "QUERY", "FAILED"),
168
169
  domain: ErrorDomain.STORAGE,
169
170
  category: ErrorCategory.THIRD_PARTY,
170
171
  details: { indexName, topK }
@@ -182,7 +183,7 @@ var CloudflareVector = class extends MastraVector {
182
183
  } catch (error) {
183
184
  throw new MastraError(
184
185
  {
185
- id: "STORAGE_VECTORIZE_VECTOR_LIST_INDEXES_FAILED",
186
+ id: createVectorErrorId("VECTORIZE", "LIST_INDEXES", "FAILED"),
186
187
  domain: ErrorDomain.STORAGE,
187
188
  category: ErrorCategory.THIRD_PARTY
188
189
  },
@@ -214,7 +215,7 @@ var CloudflareVector = class extends MastraVector {
214
215
  } catch (error) {
215
216
  throw new MastraError(
216
217
  {
217
- id: "STORAGE_VECTORIZE_VECTOR_DESCRIBE_INDEX_FAILED",
218
+ id: createVectorErrorId("VECTORIZE", "DESCRIBE_INDEX", "FAILED"),
218
219
  domain: ErrorDomain.STORAGE,
219
220
  category: ErrorCategory.THIRD_PARTY,
220
221
  details: { indexName }
@@ -231,7 +232,7 @@ var CloudflareVector = class extends MastraVector {
231
232
  } catch (error) {
232
233
  throw new MastraError(
233
234
  {
234
- id: "STORAGE_VECTORIZE_VECTOR_DELETE_INDEX_FAILED",
235
+ id: createVectorErrorId("VECTORIZE", "DELETE_INDEX", "FAILED"),
235
236
  domain: ErrorDomain.STORAGE,
236
237
  category: ErrorCategory.THIRD_PARTY,
237
238
  details: { indexName }
@@ -250,7 +251,7 @@ var CloudflareVector = class extends MastraVector {
250
251
  } catch (error) {
251
252
  throw new MastraError(
252
253
  {
253
- id: "STORAGE_VECTORIZE_VECTOR_CREATE_METADATA_INDEX_FAILED",
254
+ id: createVectorErrorId("VECTORIZE", "CREATE_METADATA_INDEX", "FAILED"),
254
255
  domain: ErrorDomain.STORAGE,
255
256
  category: ErrorCategory.THIRD_PARTY,
256
257
  details: { indexName, propertyName, indexType }
@@ -268,7 +269,7 @@ var CloudflareVector = class extends MastraVector {
268
269
  } catch (error) {
269
270
  throw new MastraError(
270
271
  {
271
- id: "STORAGE_VECTORIZE_VECTOR_DELETE_METADATA_INDEX_FAILED",
272
+ id: createVectorErrorId("VECTORIZE", "DELETE_METADATA_INDEX", "FAILED"),
272
273
  domain: ErrorDomain.STORAGE,
273
274
  category: ErrorCategory.THIRD_PARTY,
274
275
  details: { indexName, propertyName }
@@ -286,7 +287,7 @@ var CloudflareVector = class extends MastraVector {
286
287
  } catch (error) {
287
288
  throw new MastraError(
288
289
  {
289
- id: "STORAGE_VECTORIZE_VECTOR_LIST_METADATA_INDEXES_FAILED",
290
+ id: createVectorErrorId("VECTORIZE", "LIST_METADATA_INDEXES", "FAILED"),
290
291
  domain: ErrorDomain.STORAGE,
291
292
  category: ErrorCategory.THIRD_PARTY,
292
293
  details: { indexName }
@@ -308,7 +309,7 @@ var CloudflareVector = class extends MastraVector {
308
309
  async updateVector({ indexName, id, update }) {
309
310
  if (!id) {
310
311
  throw new MastraError({
311
- id: "STORAGE_VECTORIZE_VECTOR_UPDATE_VECTOR_INVALID_ARGS",
312
+ id: createVectorErrorId("VECTORIZE", "UPDATE_VECTOR", "INVALID_ARGS"),
312
313
  domain: ErrorDomain.STORAGE,
313
314
  category: ErrorCategory.USER,
314
315
  text: "id is required for Vectorize updateVector",
@@ -317,7 +318,7 @@ var CloudflareVector = class extends MastraVector {
317
318
  }
318
319
  if (!update.vector && !update.metadata) {
319
320
  throw new MastraError({
320
- id: "STORAGE_VECTORIZE_VECTOR_UPDATE_VECTOR_INVALID_ARGS",
321
+ id: createVectorErrorId("VECTORIZE", "UPDATE_VECTOR", "NO_PAYLOAD"),
321
322
  domain: ErrorDomain.STORAGE,
322
323
  category: ErrorCategory.USER,
323
324
  text: "No update data provided",
@@ -337,7 +338,7 @@ var CloudflareVector = class extends MastraVector {
337
338
  } catch (error) {
338
339
  throw new MastraError(
339
340
  {
340
- id: "STORAGE_VECTORIZE_VECTOR_UPDATE_VECTOR_FAILED",
341
+ id: createVectorErrorId("VECTORIZE", "UPDATE_VECTOR", "FAILED"),
341
342
  domain: ErrorDomain.STORAGE,
342
343
  category: ErrorCategory.THIRD_PARTY,
343
344
  details: {
@@ -365,7 +366,7 @@ var CloudflareVector = class extends MastraVector {
365
366
  } catch (error) {
366
367
  throw new MastraError(
367
368
  {
368
- id: "STORAGE_VECTORIZE_VECTOR_DELETE_VECTOR_FAILED",
369
+ id: createVectorErrorId("VECTORIZE", "DELETE_VECTOR", "FAILED"),
369
370
  domain: ErrorDomain.STORAGE,
370
371
  category: ErrorCategory.THIRD_PARTY,
371
372
  details: {
@@ -379,7 +380,7 @@ var CloudflareVector = class extends MastraVector {
379
380
  }
380
381
  async deleteVectors({ indexName, filter, ids }) {
381
382
  throw new MastraError({
382
- id: "STORAGE_VECTORIZE_VECTOR_DELETE_VECTORS_NOT_SUPPORTED",
383
+ id: createVectorErrorId("VECTORIZE", "DELETE_VECTORS", "NOT_SUPPORTED"),
383
384
  text: "deleteVectors is not yet implemented for Vectorize vector store",
384
385
  domain: ErrorDomain.STORAGE,
385
386
  category: ErrorCategory.SYSTEM,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/vector/filter.ts","../src/vector/index.ts","../src/vector/prompt.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { BaseFilterTranslator } from '@mastra/core/vector/filter';\nimport type {\n VectorFilter,\n OperatorSupport,\n OperatorValueMap,\n LogicalOperatorValueMap,\n BlacklistedRootOperators,\n} from '@mastra/core/vector/filter';\n\ntype VectorizeOperatorValueMap = Omit<OperatorValueMap, '$regex' | '$options' | '$exists' | '$elemMatch' | '$all'>;\n\ntype VectorizeLogicalOperatorValueMap = Omit<LogicalOperatorValueMap, '$nor' | '$not' | '$and' | '$or'>;\n\ntype VectorizeBlacklistedRootOperators = BlacklistedRootOperators | '$nor' | '$not' | '$and' | '$or';\n\nexport type VectorizeVectorFilter = VectorFilter<\n keyof VectorizeOperatorValueMap,\n VectorizeOperatorValueMap,\n VectorizeLogicalOperatorValueMap,\n VectorizeBlacklistedRootOperators\n>;\n\nexport class VectorizeFilterTranslator extends BaseFilterTranslator<VectorizeVectorFilter> {\n protected override getSupportedOperators(): OperatorSupport {\n return {\n ...BaseFilterTranslator.DEFAULT_OPERATORS,\n logical: [],\n array: ['$in', '$nin'],\n element: [],\n regex: [],\n custom: [],\n };\n }\n\n translate(filter?: VectorizeVectorFilter): VectorizeVectorFilter {\n if (this.isEmpty(filter)) return filter;\n this.validateFilter(filter);\n return this.translateNode(filter);\n }\n\n private translateNode(node: VectorizeVectorFilter, currentPath: string = ''): any {\n if (this.isRegex(node)) {\n throw new Error('Regex is not supported in Vectorize');\n }\n if (this.isPrimitive(node)) return { $eq: this.normalizeComparisonValue(node) };\n if (Array.isArray(node)) return { $in: this.normalizeArrayValues(node) };\n\n const entries = Object.entries(node as Record<string, any>);\n const firstEntry = entries[0];\n\n // Handle single operator case\n if (entries.length === 1 && firstEntry && this.isOperator(firstEntry[0])) {\n const [operator, value] = firstEntry;\n return { [operator]: this.normalizeComparisonValue(value) };\n }\n\n // Process each entry\n const result: Record<string, any> = {};\n for (const [key, value] of entries) {\n const newPath = currentPath ? `${currentPath}.${key}` : key;\n\n if (this.isOperator(key)) {\n result[key] = this.normalizeComparisonValue(value);\n continue;\n }\n\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n if (Object.keys(value).length === 0) {\n result[newPath] = this.translateNode(value);\n continue;\n }\n\n // Check if the nested object contains operators\n const hasOperators = Object.keys(value).some(k => this.isOperator(k));\n if (hasOperators) {\n result[newPath] = this.translateNode(value);\n } else {\n // For objects without operators, flatten them\n Object.assign(result, this.translateNode(value, newPath));\n }\n } else {\n result[newPath] = this.translateNode(value);\n }\n }\n\n return result;\n }\n}\n","import { MastraError, ErrorDomain, ErrorCategory } from '@mastra/core/error';\nimport { MastraVector } from '@mastra/core/vector';\nimport type {\n QueryResult,\n CreateIndexParams,\n UpsertVectorParams,\n QueryVectorParams,\n DescribeIndexParams,\n DeleteIndexParams,\n DeleteVectorParams,\n UpdateVectorParams,\n IndexStats,\n DeleteVectorsParams,\n} from '@mastra/core/vector';\nimport Cloudflare from 'cloudflare';\n\nimport { VectorizeFilterTranslator } from './filter';\nimport type { VectorizeVectorFilter } from './filter';\n\ntype VectorizeQueryParams = QueryVectorParams<VectorizeVectorFilter>;\n\nexport class CloudflareVector extends MastraVector<VectorizeVectorFilter> {\n client: Cloudflare;\n accountId: string;\n\n constructor({ accountId, apiToken, id }: { accountId: string; apiToken: string } & { id: string }) {\n super({ id });\n this.accountId = accountId;\n\n this.client = new Cloudflare({\n apiToken: apiToken,\n });\n }\n\n get indexSeparator(): string {\n return '-';\n }\n\n async upsert({ indexName, vectors, metadata, ids }: UpsertVectorParams): Promise<string[]> {\n const generatedIds = ids || vectors.map(() => crypto.randomUUID());\n\n // Create NDJSON string - each line is a JSON object\n const ndjson = vectors\n .map((vector, index) =>\n JSON.stringify({\n id: generatedIds[index]!,\n values: vector,\n metadata: metadata?.[index],\n }),\n )\n .join('\\n');\n\n try {\n // Note: __binaryRequest is required for proper NDJSON handling\n await this.client.vectorize.indexes.upsert(\n indexName,\n {\n account_id: this.accountId,\n body: ndjson,\n },\n {\n __binaryRequest: true,\n },\n );\n\n return generatedIds;\n } catch (error) {\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_UPSERT_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName, vectorCount: vectors?.length },\n },\n error,\n );\n }\n }\n\n transformFilter(filter?: VectorizeVectorFilter) {\n const translator = new VectorizeFilterTranslator();\n return translator.translate(filter);\n }\n\n async createIndex({ indexName, dimension, metric = 'cosine' }: CreateIndexParams): Promise<void> {\n try {\n await this.client.vectorize.indexes.create({\n account_id: this.accountId,\n config: {\n dimensions: dimension,\n metric: metric === 'dotproduct' ? 'dot-product' : metric,\n },\n name: indexName,\n });\n } catch (error: any) {\n // Check for 'already exists' error\n const message = error?.errors?.[0]?.message || error?.message;\n if (\n error.status === 409 ||\n (typeof message === 'string' &&\n (message.toLowerCase().includes('already exists') || message.toLowerCase().includes('duplicate')))\n ) {\n // Fetch index info and check dimensions\n await this.validateExistingIndex(indexName, dimension, metric);\n return;\n }\n // For any other errors, propagate\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_CREATE_INDEX_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName, dimension, metric },\n },\n error,\n );\n }\n }\n\n async query({\n indexName,\n queryVector,\n topK = 10,\n filter,\n includeVector = false,\n }: VectorizeQueryParams): Promise<QueryResult[]> {\n try {\n const translatedFilter = this.transformFilter(filter) ?? {};\n const response = await this.client.vectorize.indexes.query(indexName, {\n account_id: this.accountId,\n vector: queryVector,\n returnValues: includeVector,\n returnMetadata: 'all',\n topK,\n filter: translatedFilter,\n });\n\n return (\n response?.matches?.map((match: any) => {\n return {\n id: match.id,\n metadata: match.metadata,\n score: match.score,\n vector: match.values,\n };\n }) || []\n );\n } catch (error) {\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_QUERY_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName, topK },\n },\n error,\n );\n }\n }\n\n async listIndexes(): Promise<string[]> {\n try {\n const res = await this.client.vectorize.indexes.list({\n account_id: this.accountId,\n });\n\n return res?.result?.map(index => index.name!) || [];\n } catch (error) {\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_LIST_INDEXES_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n },\n error,\n );\n }\n }\n\n /**\n * Retrieves statistics about a vector index.\n *\n * @param {string} indexName - The name of the index to describe\n * @returns A promise that resolves to the index statistics including dimension, count and metric\n */\n async describeIndex({ indexName }: DescribeIndexParams): Promise<IndexStats> {\n try {\n const index = await this.client.vectorize.indexes.get(indexName, {\n account_id: this.accountId,\n });\n\n const described = await this.client.vectorize.indexes.info(indexName, {\n account_id: this.accountId,\n });\n\n return {\n dimension: described?.dimensions!,\n // Since vector_count is not available in the response,\n // we might need a separate API call to get the count if needed\n count: described?.vectorCount || 0,\n metric: index?.config?.metric as 'cosine' | 'euclidean' | 'dotproduct',\n };\n } catch (error) {\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_DESCRIBE_INDEX_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName },\n },\n error,\n );\n }\n }\n\n async deleteIndex({ indexName }: DeleteIndexParams): Promise<void> {\n try {\n await this.client.vectorize.indexes.delete(indexName, {\n account_id: this.accountId,\n });\n } catch (error) {\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_DELETE_INDEX_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName },\n },\n error,\n );\n }\n }\n\n async createMetadataIndex(indexName: string, propertyName: string, indexType: 'string' | 'number' | 'boolean') {\n try {\n await this.client.vectorize.indexes.metadataIndex.create(indexName, {\n account_id: this.accountId,\n propertyName,\n indexType,\n });\n } catch (error) {\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_CREATE_METADATA_INDEX_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName, propertyName, indexType },\n },\n error,\n );\n }\n }\n\n async deleteMetadataIndex(indexName: string, propertyName: string) {\n try {\n await this.client.vectorize.indexes.metadataIndex.delete(indexName, {\n account_id: this.accountId,\n propertyName,\n });\n } catch (error) {\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_DELETE_METADATA_INDEX_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName, propertyName },\n },\n error,\n );\n }\n }\n\n async listMetadataIndexes(indexName: string) {\n try {\n const res = await this.client.vectorize.indexes.metadataIndex.list(indexName, {\n account_id: this.accountId,\n });\n\n return res?.metadataIndexes ?? [];\n } catch (error) {\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_LIST_METADATA_INDEXES_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName },\n },\n error,\n );\n }\n }\n\n /**\n * Updates a vector by its ID with the provided vector and/or metadata.\n * @param indexName - The name of the index containing the vector.\n * @param id - The ID of the vector to update.\n * @param update - An object containing the vector and/or metadata to update.\n * @param update.vector - An optional array of numbers representing the new vector.\n * @param update.metadata - An optional record containing the new metadata.\n * @returns A promise that resolves when the update is complete.\n * @throws Will throw an error if no updates are provided or if the update operation fails.\n */\n async updateVector({ indexName, id, update }: UpdateVectorParams): Promise<void> {\n if (!id) {\n throw new MastraError({\n id: 'STORAGE_VECTORIZE_VECTOR_UPDATE_VECTOR_INVALID_ARGS',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.USER,\n text: 'id is required for Vectorize updateVector',\n details: { indexName },\n });\n }\n\n if (!update.vector && !update.metadata) {\n throw new MastraError({\n id: 'STORAGE_VECTORIZE_VECTOR_UPDATE_VECTOR_INVALID_ARGS',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.USER,\n text: 'No update data provided',\n details: { indexName, id },\n });\n }\n\n try {\n const updatePayload: any = {\n ids: [id],\n account_id: this.accountId,\n };\n\n if (update.vector) {\n updatePayload.vectors = [update.vector];\n }\n if (update.metadata) {\n updatePayload.metadata = [update.metadata];\n }\n\n await this.upsert({ indexName: indexName, vectors: updatePayload.vectors, metadata: updatePayload.metadata });\n } catch (error) {\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_UPDATE_VECTOR_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: {\n indexName,\n ...(id && { id }),\n },\n },\n error,\n );\n }\n }\n\n /**\n * Deletes a vector by its ID.\n * @param indexName - The name of the index containing the vector.\n * @param id - The ID of the vector to delete.\n * @returns A promise that resolves when the deletion is complete.\n * @throws Will throw an error if the deletion operation fails.\n */\n async deleteVector({ indexName, id }: DeleteVectorParams): Promise<void> {\n try {\n await this.client.vectorize.indexes.deleteByIds(indexName, {\n ids: [id],\n account_id: this.accountId,\n });\n } catch (error) {\n throw new MastraError(\n {\n id: 'STORAGE_VECTORIZE_VECTOR_DELETE_VECTOR_FAILED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: {\n indexName,\n ...(id && { id }),\n },\n },\n error,\n );\n }\n }\n\n async deleteVectors({ indexName, filter, ids }: DeleteVectorsParams): Promise<void> {\n throw new MastraError({\n id: 'STORAGE_VECTORIZE_VECTOR_DELETE_VECTORS_NOT_SUPPORTED',\n text: 'deleteVectors is not yet implemented for Vectorize vector store',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.SYSTEM,\n details: {\n indexName,\n ...(filter && { filter: JSON.stringify(filter) }),\n ...(ids && { idsCount: ids.length }),\n },\n });\n }\n}\n","/**\n * Vector store specific prompt that details supported operators and examples.\n * This prompt helps users construct valid filters for Vectorize.\n */\nexport const VECTORIZE_PROMPT = `When querying Vectorize, you can ONLY use the operators listed below. Any other operators will be rejected.\nImportant: Don't explain how to construct the filter - use the specified operators and fields to search the content and return relevant results.\nIf a user tries to give an explicit operator that is not supported, reject the filter entirely and let them know that the operator is not supported.\n\nBasic Comparison Operators:\n- $eq: Exact match (default when using field: value)\n Example: { \"category\": \"electronics\" }\n- $ne: Not equal\n Example: { \"category\": { \"$ne\": \"electronics\" } }\n- $gt: Greater than\n Example: { \"price\": { \"$gt\": 100 } }\n- $gte: Greater than or equal\n Example: { \"price\": { \"$gte\": 100 } }\n- $lt: Less than\n Example: { \"price\": { \"$lt\": 100 } }\n- $lte: Less than or equal\n Example: { \"price\": { \"$lte\": 100 } }\n\nArray Operators:\n- $in: Match any value in array\n Example: { \"category\": { \"$in\": [\"electronics\", \"books\"] } }\n- $nin: Does not match any value in array\n Example: { \"category\": { \"$nin\": [\"electronics\", \"books\"] } }\n\nLogical Operators:\n- $and: Logical AND (can be implicit or explicit)\n Implicit Example: { \"price\": { \"$gt\": 100 }, \"category\": \"electronics\" }\n Explicit Example: { \"$and\": [{ \"price\": { \"$gt\": 100 } }, { \"category\": \"electronics\" }] }\n- $or: Logical OR\n Example: { \"$or\": [{ \"price\": { \"$lt\": 50 } }, { \"category\": \"books\" }] }\n\nElement Operators:\n- $exists: Check if field exists\n Example: { \"rating\": { \"$exists\": true } }\n- $match: Match text using full-text search\n Example: { \"description\": { \"$match\": \"gaming laptop\" } }\n\nRestrictions:\n- Regex patterns are not supported\n- Only $and and $or logical operators are supported at the top level\n- Empty arrays in $in/$nin will return no results\n- Nested fields are supported using dot notation\n- Multiple conditions on the same field are supported with both implicit and explicit $and\n- At least one key-value pair is required in filter object\n- Empty objects and undefined values are treated as no filter\n- Invalid types in comparison operators will throw errors\n- All non-logical operators must be used within a field condition\n Valid: { \"field\": { \"$gt\": 100 } }\n Valid: { \"$and\": [...] }\n Invalid: { \"$gt\": 100 }\n- Logical operators must contain field conditions, not direct operators\n Valid: { \"$and\": [{ \"field\": { \"$gt\": 100 } }] }\n Invalid: { \"$and\": [{ \"$gt\": 100 }] }\n- Logical operators ($and, $or):\n - Can only be used at top level or nested within other logical operators\n - Can not be used on a field level, or be nested inside a field\n - Can not be used inside an operator\n - Valid: { \"$and\": [{ \"field\": { \"$gt\": 100 } }] }\n - Valid: { \"$or\": [{ \"$and\": [{ \"field\": { \"$gt\": 100 } }] }] }\n - Invalid: { \"field\": { \"$and\": [{ \"$gt\": 100 }] } }\n - Invalid: { \"field\": { \"$or\": [{ \"$gt\": 100 }] } }\n - Invalid: { \"field\": { \"$gt\": { \"$and\": [{...}] } } }\n\nExample Complex Query:\n{\n \"$and\": [\n { \"category\": { \"$in\": [\"electronics\", \"computers\"] } },\n { \"price\": { \"$gte\": 100, \"$lte\": 1000 } },\n { \"description\": { \"$match\": \"gaming laptop\" } },\n { \"rating\": { \"$exists\": true, \"$gt\": 4 } },\n { \"$or\": [\n { \"stock\": { \"$gt\": 0 } },\n { \"preorder\": true }\n ]}\n ]\n}`;\n"]}
1
+ {"version":3,"sources":["../src/vector/filter.ts","../src/vector/index.ts","../src/vector/prompt.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { BaseFilterTranslator } from '@mastra/core/vector/filter';\nimport type {\n VectorFilter,\n OperatorSupport,\n OperatorValueMap,\n LogicalOperatorValueMap,\n BlacklistedRootOperators,\n} from '@mastra/core/vector/filter';\n\ntype VectorizeOperatorValueMap = Omit<OperatorValueMap, '$regex' | '$options' | '$exists' | '$elemMatch' | '$all'>;\n\ntype VectorizeLogicalOperatorValueMap = Omit<LogicalOperatorValueMap, '$nor' | '$not' | '$and' | '$or'>;\n\ntype VectorizeBlacklistedRootOperators = BlacklistedRootOperators | '$nor' | '$not' | '$and' | '$or';\n\nexport type VectorizeVectorFilter = VectorFilter<\n keyof VectorizeOperatorValueMap,\n VectorizeOperatorValueMap,\n VectorizeLogicalOperatorValueMap,\n VectorizeBlacklistedRootOperators\n>;\n\nexport class VectorizeFilterTranslator extends BaseFilterTranslator<VectorizeVectorFilter> {\n protected override getSupportedOperators(): OperatorSupport {\n return {\n ...BaseFilterTranslator.DEFAULT_OPERATORS,\n logical: [],\n array: ['$in', '$nin'],\n element: [],\n regex: [],\n custom: [],\n };\n }\n\n translate(filter?: VectorizeVectorFilter): VectorizeVectorFilter {\n if (this.isEmpty(filter)) return filter;\n this.validateFilter(filter);\n return this.translateNode(filter);\n }\n\n private translateNode(node: VectorizeVectorFilter, currentPath: string = ''): any {\n if (this.isRegex(node)) {\n throw new Error('Regex is not supported in Vectorize');\n }\n if (this.isPrimitive(node)) return { $eq: this.normalizeComparisonValue(node) };\n if (Array.isArray(node)) return { $in: this.normalizeArrayValues(node) };\n\n const entries = Object.entries(node as Record<string, any>);\n const firstEntry = entries[0];\n\n // Handle single operator case\n if (entries.length === 1 && firstEntry && this.isOperator(firstEntry[0])) {\n const [operator, value] = firstEntry;\n return { [operator]: this.normalizeComparisonValue(value) };\n }\n\n // Process each entry\n const result: Record<string, any> = {};\n for (const [key, value] of entries) {\n const newPath = currentPath ? `${currentPath}.${key}` : key;\n\n if (this.isOperator(key)) {\n result[key] = this.normalizeComparisonValue(value);\n continue;\n }\n\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n if (Object.keys(value).length === 0) {\n result[newPath] = this.translateNode(value);\n continue;\n }\n\n // Check if the nested object contains operators\n const hasOperators = Object.keys(value).some(k => this.isOperator(k));\n if (hasOperators) {\n result[newPath] = this.translateNode(value);\n } else {\n // For objects without operators, flatten them\n Object.assign(result, this.translateNode(value, newPath));\n }\n } else {\n result[newPath] = this.translateNode(value);\n }\n }\n\n return result;\n }\n}\n","import { MastraError, ErrorDomain, ErrorCategory } from '@mastra/core/error';\nimport { createVectorErrorId } from '@mastra/core/storage';\nimport { MastraVector } from '@mastra/core/vector';\nimport type {\n QueryResult,\n CreateIndexParams,\n UpsertVectorParams,\n QueryVectorParams,\n DescribeIndexParams,\n DeleteIndexParams,\n DeleteVectorParams,\n UpdateVectorParams,\n IndexStats,\n DeleteVectorsParams,\n} from '@mastra/core/vector';\nimport Cloudflare from 'cloudflare';\n\nimport { VectorizeFilterTranslator } from './filter';\nimport type { VectorizeVectorFilter } from './filter';\n\ntype VectorizeQueryParams = QueryVectorParams<VectorizeVectorFilter>;\n\nexport class CloudflareVector extends MastraVector<VectorizeVectorFilter> {\n client: Cloudflare;\n accountId: string;\n\n constructor({ accountId, apiToken, id }: { accountId: string; apiToken: string } & { id: string }) {\n super({ id });\n this.accountId = accountId;\n\n this.client = new Cloudflare({\n apiToken: apiToken,\n });\n }\n\n get indexSeparator(): string {\n return '-';\n }\n\n async upsert({ indexName, vectors, metadata, ids }: UpsertVectorParams): Promise<string[]> {\n const generatedIds = ids || vectors.map(() => crypto.randomUUID());\n\n // Create NDJSON string - each line is a JSON object\n const ndjson = vectors\n .map((vector, index) =>\n JSON.stringify({\n id: generatedIds[index]!,\n values: vector,\n metadata: metadata?.[index],\n }),\n )\n .join('\\n');\n\n try {\n // Note: __binaryRequest is required for proper NDJSON handling\n await this.client.vectorize.indexes.upsert(\n indexName,\n {\n account_id: this.accountId,\n body: ndjson,\n },\n {\n __binaryRequest: true,\n },\n );\n\n return generatedIds;\n } catch (error) {\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'UPSERT', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName, vectorCount: vectors?.length },\n },\n error,\n );\n }\n }\n\n transformFilter(filter?: VectorizeVectorFilter) {\n const translator = new VectorizeFilterTranslator();\n return translator.translate(filter);\n }\n\n async createIndex({ indexName, dimension, metric = 'cosine' }: CreateIndexParams): Promise<void> {\n try {\n await this.client.vectorize.indexes.create({\n account_id: this.accountId,\n config: {\n dimensions: dimension,\n metric: metric === 'dotproduct' ? 'dot-product' : metric,\n },\n name: indexName,\n });\n } catch (error: any) {\n // Check for 'already exists' error\n const message = error?.errors?.[0]?.message || error?.message;\n if (\n error.status === 409 ||\n (typeof message === 'string' &&\n (message.toLowerCase().includes('already exists') || message.toLowerCase().includes('duplicate')))\n ) {\n // Fetch index info and check dimensions\n await this.validateExistingIndex(indexName, dimension, metric);\n return;\n }\n // For any other errors, propagate\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'CREATE_INDEX', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName, dimension, metric },\n },\n error,\n );\n }\n }\n\n async query({\n indexName,\n queryVector,\n topK = 10,\n filter,\n includeVector = false,\n }: VectorizeQueryParams): Promise<QueryResult[]> {\n try {\n const translatedFilter = this.transformFilter(filter) ?? {};\n const response = await this.client.vectorize.indexes.query(indexName, {\n account_id: this.accountId,\n vector: queryVector,\n returnValues: includeVector,\n returnMetadata: 'all',\n topK,\n filter: translatedFilter,\n });\n\n return (\n response?.matches?.map((match: any) => {\n return {\n id: match.id,\n metadata: match.metadata,\n score: match.score,\n vector: match.values,\n };\n }) || []\n );\n } catch (error) {\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'QUERY', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName, topK },\n },\n error,\n );\n }\n }\n\n async listIndexes(): Promise<string[]> {\n try {\n const res = await this.client.vectorize.indexes.list({\n account_id: this.accountId,\n });\n\n return res?.result?.map(index => index.name!) || [];\n } catch (error) {\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'LIST_INDEXES', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n },\n error,\n );\n }\n }\n\n /**\n * Retrieves statistics about a vector index.\n *\n * @param {string} indexName - The name of the index to describe\n * @returns A promise that resolves to the index statistics including dimension, count and metric\n */\n async describeIndex({ indexName }: DescribeIndexParams): Promise<IndexStats> {\n try {\n const index = await this.client.vectorize.indexes.get(indexName, {\n account_id: this.accountId,\n });\n\n const described = await this.client.vectorize.indexes.info(indexName, {\n account_id: this.accountId,\n });\n\n return {\n dimension: described?.dimensions!,\n // Since vector_count is not available in the response,\n // we might need a separate API call to get the count if needed\n count: described?.vectorCount || 0,\n metric: index?.config?.metric as 'cosine' | 'euclidean' | 'dotproduct',\n };\n } catch (error) {\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'DESCRIBE_INDEX', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName },\n },\n error,\n );\n }\n }\n\n async deleteIndex({ indexName }: DeleteIndexParams): Promise<void> {\n try {\n await this.client.vectorize.indexes.delete(indexName, {\n account_id: this.accountId,\n });\n } catch (error) {\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'DELETE_INDEX', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName },\n },\n error,\n );\n }\n }\n\n async createMetadataIndex(indexName: string, propertyName: string, indexType: 'string' | 'number' | 'boolean') {\n try {\n await this.client.vectorize.indexes.metadataIndex.create(indexName, {\n account_id: this.accountId,\n propertyName,\n indexType,\n });\n } catch (error) {\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'CREATE_METADATA_INDEX', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName, propertyName, indexType },\n },\n error,\n );\n }\n }\n\n async deleteMetadataIndex(indexName: string, propertyName: string) {\n try {\n await this.client.vectorize.indexes.metadataIndex.delete(indexName, {\n account_id: this.accountId,\n propertyName,\n });\n } catch (error) {\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'DELETE_METADATA_INDEX', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName, propertyName },\n },\n error,\n );\n }\n }\n\n async listMetadataIndexes(indexName: string) {\n try {\n const res = await this.client.vectorize.indexes.metadataIndex.list(indexName, {\n account_id: this.accountId,\n });\n\n return res?.metadataIndexes ?? [];\n } catch (error) {\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'LIST_METADATA_INDEXES', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: { indexName },\n },\n error,\n );\n }\n }\n\n /**\n * Updates a vector by its ID with the provided vector and/or metadata.\n * @param indexName - The name of the index containing the vector.\n * @param id - The ID of the vector to update.\n * @param update - An object containing the vector and/or metadata to update.\n * @param update.vector - An optional array of numbers representing the new vector.\n * @param update.metadata - An optional record containing the new metadata.\n * @returns A promise that resolves when the update is complete.\n * @throws Will throw an error if no updates are provided or if the update operation fails.\n */\n async updateVector({ indexName, id, update }: UpdateVectorParams): Promise<void> {\n if (!id) {\n throw new MastraError({\n id: createVectorErrorId('VECTORIZE', 'UPDATE_VECTOR', 'INVALID_ARGS'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.USER,\n text: 'id is required for Vectorize updateVector',\n details: { indexName },\n });\n }\n\n if (!update.vector && !update.metadata) {\n throw new MastraError({\n id: createVectorErrorId('VECTORIZE', 'UPDATE_VECTOR', 'NO_PAYLOAD'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.USER,\n text: 'No update data provided',\n details: { indexName, id },\n });\n }\n\n try {\n const updatePayload: any = {\n ids: [id],\n account_id: this.accountId,\n };\n\n if (update.vector) {\n updatePayload.vectors = [update.vector];\n }\n if (update.metadata) {\n updatePayload.metadata = [update.metadata];\n }\n\n await this.upsert({ indexName: indexName, vectors: updatePayload.vectors, metadata: updatePayload.metadata });\n } catch (error) {\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'UPDATE_VECTOR', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: {\n indexName,\n ...(id && { id }),\n },\n },\n error,\n );\n }\n }\n\n /**\n * Deletes a vector by its ID.\n * @param indexName - The name of the index containing the vector.\n * @param id - The ID of the vector to delete.\n * @returns A promise that resolves when the deletion is complete.\n * @throws Will throw an error if the deletion operation fails.\n */\n async deleteVector({ indexName, id }: DeleteVectorParams): Promise<void> {\n try {\n await this.client.vectorize.indexes.deleteByIds(indexName, {\n ids: [id],\n account_id: this.accountId,\n });\n } catch (error) {\n throw new MastraError(\n {\n id: createVectorErrorId('VECTORIZE', 'DELETE_VECTOR', 'FAILED'),\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.THIRD_PARTY,\n details: {\n indexName,\n ...(id && { id }),\n },\n },\n error,\n );\n }\n }\n\n async deleteVectors({ indexName, filter, ids }: DeleteVectorsParams): Promise<void> {\n throw new MastraError({\n id: createVectorErrorId('VECTORIZE', 'DELETE_VECTORS', 'NOT_SUPPORTED'),\n text: 'deleteVectors is not yet implemented for Vectorize vector store',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.SYSTEM,\n details: {\n indexName,\n ...(filter && { filter: JSON.stringify(filter) }),\n ...(ids && { idsCount: ids.length }),\n },\n });\n }\n}\n","/**\n * Vector store specific prompt that details supported operators and examples.\n * This prompt helps users construct valid filters for Vectorize.\n */\nexport const VECTORIZE_PROMPT = `When querying Vectorize, you can ONLY use the operators listed below. Any other operators will be rejected.\nImportant: Don't explain how to construct the filter - use the specified operators and fields to search the content and return relevant results.\nIf a user tries to give an explicit operator that is not supported, reject the filter entirely and let them know that the operator is not supported.\n\nBasic Comparison Operators:\n- $eq: Exact match (default when using field: value)\n Example: { \"category\": \"electronics\" }\n- $ne: Not equal\n Example: { \"category\": { \"$ne\": \"electronics\" } }\n- $gt: Greater than\n Example: { \"price\": { \"$gt\": 100 } }\n- $gte: Greater than or equal\n Example: { \"price\": { \"$gte\": 100 } }\n- $lt: Less than\n Example: { \"price\": { \"$lt\": 100 } }\n- $lte: Less than or equal\n Example: { \"price\": { \"$lte\": 100 } }\n\nArray Operators:\n- $in: Match any value in array\n Example: { \"category\": { \"$in\": [\"electronics\", \"books\"] } }\n- $nin: Does not match any value in array\n Example: { \"category\": { \"$nin\": [\"electronics\", \"books\"] } }\n\nLogical Operators:\n- $and: Logical AND (can be implicit or explicit)\n Implicit Example: { \"price\": { \"$gt\": 100 }, \"category\": \"electronics\" }\n Explicit Example: { \"$and\": [{ \"price\": { \"$gt\": 100 } }, { \"category\": \"electronics\" }] }\n- $or: Logical OR\n Example: { \"$or\": [{ \"price\": { \"$lt\": 50 } }, { \"category\": \"books\" }] }\n\nElement Operators:\n- $exists: Check if field exists\n Example: { \"rating\": { \"$exists\": true } }\n- $match: Match text using full-text search\n Example: { \"description\": { \"$match\": \"gaming laptop\" } }\n\nRestrictions:\n- Regex patterns are not supported\n- Only $and and $or logical operators are supported at the top level\n- Empty arrays in $in/$nin will return no results\n- Nested fields are supported using dot notation\n- Multiple conditions on the same field are supported with both implicit and explicit $and\n- At least one key-value pair is required in filter object\n- Empty objects and undefined values are treated as no filter\n- Invalid types in comparison operators will throw errors\n- All non-logical operators must be used within a field condition\n Valid: { \"field\": { \"$gt\": 100 } }\n Valid: { \"$and\": [...] }\n Invalid: { \"$gt\": 100 }\n- Logical operators must contain field conditions, not direct operators\n Valid: { \"$and\": [{ \"field\": { \"$gt\": 100 } }] }\n Invalid: { \"$and\": [{ \"$gt\": 100 }] }\n- Logical operators ($and, $or):\n - Can only be used at top level or nested within other logical operators\n - Can not be used on a field level, or be nested inside a field\n - Can not be used inside an operator\n - Valid: { \"$and\": [{ \"field\": { \"$gt\": 100 } }] }\n - Valid: { \"$or\": [{ \"$and\": [{ \"field\": { \"$gt\": 100 } }] }] }\n - Invalid: { \"field\": { \"$and\": [{ \"$gt\": 100 }] } }\n - Invalid: { \"field\": { \"$or\": [{ \"$gt\": 100 }] } }\n - Invalid: { \"field\": { \"$gt\": { \"$and\": [{...}] } } }\n\nExample Complex Query:\n{\n \"$and\": [\n { \"category\": { \"$in\": [\"electronics\", \"computers\"] } },\n { \"price\": { \"$gte\": 100, \"$lte\": 1000 } },\n { \"description\": { \"$match\": \"gaming laptop\" } },\n { \"rating\": { \"$exists\": true, \"$gt\": 4 } },\n { \"$or\": [\n { \"stock\": { \"$gt\": 0 } },\n { \"preorder\": true }\n ]}\n ]\n}`;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vector/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,UAAU,MAAM,YAAY,CAAC;AAGpC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEtD,KAAK,oBAAoB,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;AAErE,qBAAa,gBAAiB,SAAQ,YAAY,CAAC,qBAAqB,CAAC;IACvE,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;gBAEN,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE;IASjG,IAAI,cAAc,IAAI,MAAM,CAE3B;IAEK,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAyC1F,eAAe,CAAC,MAAM,CAAC,EAAE,qBAAqB;IAKxC,WAAW,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,MAAiB,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC1F,KAAK,CAAC,EACV,SAAS,EACT,WAAW,EACX,IAAS,EACT,MAAM,EACN,aAAqB,GACtB,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAmC1C,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAmBtC;;;;;OAKG;IACG,aAAa,CAAC,EAAE,SAAS,EAAE,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IA8BtE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB5D,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS;IAoBvG,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAmB3D,mBAAmB,CAAC,SAAS,EAAE,MAAM;IAoB3C;;;;;;;;;OASG;IACG,YAAY,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDhF;;;;;;OAMG;IACG,YAAY,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBlE,aAAa,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAapF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vector/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,UAAU,MAAM,YAAY,CAAC;AAGpC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEtD,KAAK,oBAAoB,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;AAErE,qBAAa,gBAAiB,SAAQ,YAAY,CAAC,qBAAqB,CAAC;IACvE,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;gBAEN,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE;IASjG,IAAI,cAAc,IAAI,MAAM,CAE3B;IAEK,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAyC1F,eAAe,CAAC,MAAM,CAAC,EAAE,qBAAqB;IAKxC,WAAW,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,MAAiB,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC1F,KAAK,CAAC,EACV,SAAS,EACT,WAAW,EACX,IAAS,EACT,MAAM,EACN,aAAqB,GACtB,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAmC1C,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAmBtC;;;;;OAKG;IACG,aAAa,CAAC,EAAE,SAAS,EAAE,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IA8BtE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB5D,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS;IAoBvG,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAmB3D,mBAAmB,CAAC,SAAS,EAAE,MAAM;IAoB3C;;;;;;;;;OASG;IACG,YAAY,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDhF;;;;;;OAMG;IACG,YAAY,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBlE,aAAa,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAapF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/vectorize",
3
- "version": "1.0.0-beta.1",
3
+ "version": "1.0.0-beta.2",
4
4
  "description": "Cloudflare Vectorize store provider for Mastra",
5
5
  "type": "module",
6
6
  "files": [
@@ -36,9 +36,9 @@
36
36
  "tsup": "^8.5.0",
37
37
  "typescript": "^5.8.3",
38
38
  "vitest": "4.0.12",
39
+ "@internal/lint": "0.0.53",
39
40
  "@internal/types-builder": "0.0.28",
40
- "@mastra/core": "1.0.0-beta.5",
41
- "@internal/lint": "0.0.53"
41
+ "@mastra/core": "1.0.0-beta.7"
42
42
  },
43
43
  "peerDependencies": {
44
44
  "@mastra/core": ">=1.0.0-0 <2.0.0-0"