mastra-browser-core
Version:
The core foundation of the Mastra framework, providing essential components and interfaces for building AI-powered applications.
1 lines • 68.1 kB
Source Map (JSON)
{"version":3,"sources":["../src/vector/pglite/filter.ts","../src/vector/pglite/sql-builder.ts","../src/vector/pglite/index.ts","../src/memory/memory.ts"],"names":["BaseFilterTranslator","result","__name","traverse","conditions","operator","operatorValue","MastraVector","__publicField","PGlite","MemoryFS","vector","isAbsolute","join","resolve","MastraBase","DefaultProxyStorage","deepMerge","messages","chatMessages"],"mappings":"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","file":"chunk-FNEF4E2Y.cjs","sourcesContent":["import { BaseFilterTranslator } from '../filter';\nimport type { FieldCondition, VectorFilter, OperatorSupport } from '../filter';\n\n/**\n * Translates MongoDB-style filters to PGlite compatible filters for use with pgvector.\n */\nexport class PGliteFilterTranslator extends BaseFilterTranslator {\n protected override getSupportedOperators(): OperatorSupport {\n return {\n ...BaseFilterTranslator.DEFAULT_OPERATORS,\n regex: [],\n custom: ['$contains', '$size'],\n };\n }\n\n translate(filter?: VectorFilter): VectorFilter {\n if (this.isEmpty(filter)) {\n return filter;\n }\n this.validateFilter(filter);\n return this.translateNode(filter);\n }\n\n private translateNode(node: VectorFilter | FieldCondition, currentPath: string = ''): any {\n if (this.isRegex(node)) {\n throw new Error('Direct regex pattern format is not supported in PGlite');\n }\n // Helper to wrap result with path if needed\n const withPath = (result: any) => (currentPath ? { [currentPath]: result } : result);\n\n // Handle primitives\n if (this.isPrimitive(node)) {\n return withPath({ $eq: this.normalizeComparisonValue(node) });\n }\n\n // Handle arrays\n if (Array.isArray(node)) {\n return withPath({ $in: this.normalizeArrayValues(node) });\n }\n\n const entries = Object.entries(node as Record<string, any>);\n const result: Record<string, any> = {};\n\n // Process remaining entries\n for (const [key, value] of entries) {\n const newPath = currentPath ? `${currentPath}.${key}` : key;\n\n if (this.isLogicalOperator(key)) {\n result[key] = Array.isArray(value)\n ? value.map((filter: VectorFilter) => this.translateNode(filter))\n : this.translateNode(value);\n } else if (this.isOperator(key)) {\n if (this.isArrayOperator(key) && !Array.isArray(value) && key !== '$elemMatch') {\n result[key] = [value];\n } else if (this.isBasicOperator(key) && Array.isArray(value)) {\n result[key] = JSON.stringify(value);\n } else {\n result[key] = value;\n }\n } else if (typeof value === 'object' && value !== null) {\n // Handle nested objects\n const hasOperators = Object.keys(value).some(k => this.isOperator(k));\n if (hasOperators) {\n result[newPath] = this.translateNode(value);\n } else {\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 type {\n BasicOperator,\n NumericOperator,\n ArrayOperator,\n ElementOperator,\n LogicalOperator,\n RegexOperator,\n VectorFilter,\n} from '../filter';\n\nexport type OperatorType =\n | BasicOperator\n | NumericOperator\n | ArrayOperator\n | ElementOperator\n | LogicalOperator\n | '$contains'\n | Exclude<RegexOperator, '$options'>;\n\ntype FilterOperator = {\n sql: string;\n needsValue: boolean;\n transformValue?: (value: any) => any;\n};\n\ntype OperatorFn = (key: string, value?: any) => FilterOperator;\n\n// Helper functions to create operators\nconst createBasicOperator = (symbol: string) => {\n return (key: string): FilterOperator => ({\n sql: `CASE \n WHEN $1 IS NULL THEN metadata->>'${handleKey(key)}' IS ${symbol === '=' ? '' : 'NOT'} NULL\n ELSE metadata->>'${handleKey(key)}' ${symbol} $1\n END`,\n needsValue: true,\n });\n};\nconst createNumericOperator = (symbol: string) => {\n return (key: string): FilterOperator => ({\n sql: `CAST(metadata->>'${handleKey(key)}' AS NUMERIC) ${symbol} $1`,\n needsValue: true,\n });\n};\n\nconst validateJsonArray = (key: string) =>\n `jsonb_typeof(metadata->'${handleKey(key)}') = 'array'`;\n\n// Define all filter operators\nexport const FILTER_OPERATORS: Record<string, OperatorFn> = {\n $eq: createBasicOperator('='),\n $ne: createBasicOperator('!='),\n $gt: createNumericOperator('>'),\n $gte: createNumericOperator('>='),\n $lt: createNumericOperator('<'),\n $lte: createNumericOperator('<='),\n\n // Array Operators\n $in: (key: string, value: any) => ({\n sql: `metadata->>'${handleKey(key)}' IN (${value.map((_: any, i: number) => `$${i + 1}`).join(',')})`,\n needsValue: true,\n }),\n\n $nin: (key: string, value: any) => ({\n sql: `metadata->>'${handleKey(key)}' NOT IN (${value.map((_: any, i: number) => `$${i + 1}`).join(',')})`,\n needsValue: true,\n }),\n $all: (key: string) => ({\n sql: `metadata->>'${handleKey(key)}' = $1`,\n needsValue: true,\n transformValue: (value: any) => {\n const arrayValue = Array.isArray(value) ? value : [value];\n if (arrayValue.length === 0) {\n return {\n sql: '1 = 0',\n values: [],\n };\n }\n\n return {\n sql: `(\n CASE\n WHEN ${validateJsonArray(key)} THEN\n NOT EXISTS (\n SELECT value \n FROM jsonb_array_elements_text($1::jsonb) \n WHERE value::text NOT IN (\n SELECT value::text \n FROM jsonb_array_elements_text(metadata->'${handleKey(key)}')\n )\n )\n ELSE FALSE\n END\n )`,\n values: [JSON.stringify(arrayValue)],\n };\n },\n }),\n $elemMatch: (key: string) => ({\n sql: `metadata->>'${handleKey(key)}' = $1`,\n needsValue: true,\n transformValue: (value: any) => {\n if (typeof value !== 'object' || Array.isArray(value)) {\n throw new Error('$elemMatch requires an object with conditions');\n }\n\n // For nested object conditions\n const conditions = Object.entries(value).map(([field, fieldValue]) => {\n if (field.startsWith('$')) {\n // Direct operators on array elements ($in, $gt, etc)\n const { sql, values } = buildCondition('elem.value', { [field]: fieldValue }, '');\n // Replace the metadata path with elem.value\n const pattern = /metadata->>'[^']*'/g;\n const elemSql = sql.replace(pattern, 'elem.value');\n return { sql: elemSql, values };\n } else if (typeof fieldValue === 'object' && !Array.isArray(fieldValue)) {\n // Nested field with operators (count: { $gt: 20 })\n const { sql, values } = buildCondition(field, fieldValue, '');\n // Replace the field path with elem.value path\n const pattern = /metadata->>'[^']*'/g;\n const elemSql = sql.replace(pattern, `elem.value->>'${field}'`);\n return { sql: elemSql, values };\n } else {\n // Simple field equality (warehouse: 'A')\n return {\n sql: `elem.value->>'${field}' = $1`,\n values: [fieldValue],\n };\n }\n });\n\n return {\n sql: `(\n CASE\n WHEN ${validateJsonArray(key)} THEN\n EXISTS (\n SELECT 1 \n FROM jsonb_array_elements(metadata->'${handleKey(key)}') as elem\n WHERE ${conditions.map(c => c.sql).join(' AND ')}\n )\n ELSE FALSE\n END\n )`,\n values: conditions.flatMap(c => c.values),\n };\n },\n }),\n\n // Element Operators\n $exists: (key: string) => ({\n sql: `metadata ? '${handleKey(key)}'`,\n needsValue: false,\n }),\n\n // Logical Operators\n $and: (key: string) => ({\n sql: `(${key})`,\n needsValue: false,\n }),\n $or: (key: string) => ({\n sql: `(${key})`,\n needsValue: false,\n }),\n $not: key => ({ sql: `NOT (${key})`, needsValue: false }),\n $nor: (key: string) => ({\n sql: `NOT (${key})`,\n needsValue: false,\n }),\n $size: (key: string) => ({\n sql: `(\n CASE\n WHEN jsonb_typeof(metadata->'${handleKey(key)}') = 'array' THEN \n jsonb_array_length(metadata->'${handleKey(key)}') = $1\n ELSE FALSE\n END\n )`,\n needsValue: true,\n }),\n $contains: (key: string) => ({\n sql: `metadata->>'${handleKey(key)}' = $1`,\n needsValue: true,\n transformValue: (value: any) => {\n // Array containment\n if (Array.isArray(value)) {\n return {\n sql: `(\n SELECT ${validateJsonArray(key)}\n AND EXISTS (\n SELECT 1 \n FROM jsonb_array_elements(metadata->'${handleKey(key)}') as m\n WHERE m.value IN (SELECT value FROM jsonb_array_elements($1::jsonb))\n )\n )`,\n values: [JSON.stringify(value)],\n };\n }\n\n // Nested object traversal\n if (value && typeof value === 'object') {\n const paths: string[] = [];\n const values: any[] = [];\n\n function traverse(obj: any, path: string[] = []) {\n for (const [k, v] of Object.entries(obj)) {\n const currentPath = [...path, k];\n if (v && typeof v === 'object' && !Array.isArray(v)) {\n traverse(v, currentPath);\n } else {\n paths.push(currentPath.join('->'));\n values.push(v);\n }\n }\n }\n\n traverse(value);\n return {\n sql: `(${paths.map((path, i) => `metadata->'${handleKey(key)}'->>'${path}' = $${i + 1}`).join(' AND ')})`,\n values,\n };\n }\n\n return value;\n },\n }),\n};\n\nexport interface FilterResult {\n sql: string;\n values: any[];\n}\n\nexport const handleKey = (key: string) => {\n return key.replace(/\\./g, '->>');\n};\n\nexport function buildFilterQuery(filter: VectorFilter): FilterResult {\n if (!filter) {\n return { sql: '', values: [] };\n }\n\n const values: any[] = [];\n const conditions = Object.entries(filter)\n .map(([key, value]) => {\n const condition = buildCondition(key, value, '');\n values.push(...condition.values);\n return condition.sql;\n })\n .join(' AND ');\n\n return {\n sql: conditions ? `WHERE ${conditions}` : '',\n values,\n };\n}\n\nfunction buildCondition(key: string, value: any, parentPath: string): FilterResult {\n // Handle logical operators ($and/$or)\n if (['$and', '$or', '$not', '$nor'].includes(key)) {\n return handleLogicalOperator(key as '$and' | '$or' | '$not' | '$nor', value, parentPath);\n }\n\n // If condition is not a FilterCondition object, assume it's an equality check\n if (!value || typeof value !== 'object') {\n return {\n sql: `metadata->>'${key}' = $1`,\n values: [value],\n };\n }\n\n // Handle operator conditions\n return handleOperator(key, value);\n}\n\nfunction handleLogicalOperator(\n key: '$and' | '$or' | '$not' | '$nor',\n value: VectorFilter[] | VectorFilter,\n parentPath: string,\n): FilterResult {\n // Handle empty conditions\n if (!value || value.length === 0) {\n switch (key) {\n case '$and':\n case '$nor':\n return { sql: 'true', values: [] };\n case '$or':\n return { sql: 'false', values: [] };\n case '$not':\n throw new Error('$not operator cannot be empty');\n default:\n return { sql: 'true', values: [] };\n }\n }\n\n if (key === '$not') {\n // For top-level $not\n const entries = Object.entries(value);\n const conditions = entries.map(([fieldKey, fieldValue]) => buildCondition(fieldKey, fieldValue, key));\n return {\n sql: `NOT (${conditions.map(c => c.sql).join(' AND ')})`,\n values: conditions.flatMap(c => c.values),\n };\n }\n\n const values: any[] = [];\n const joinOperator = key === '$or' || key === '$nor' ? 'OR' : 'AND';\n const conditions = Array.isArray(value)\n ? value.map(f => {\n const entries = Object.entries(f);\n return entries.map(([k, v]) => buildCondition(k, v, key));\n })\n : [buildCondition(key, value, parentPath)];\n\n const joined = conditions\n .flat()\n .map(c => {\n values.push(...c.values);\n return c.sql;\n })\n .join(` ${joinOperator} `);\n\n return {\n sql: key === '$nor' ? `NOT (${joined})` : `(${joined})`,\n values,\n };\n}\n\nfunction handleOperator(key: string, value: any): FilterResult {\n if (typeof value === 'object' && !Array.isArray(value)) {\n const entries = Object.entries(value);\n const results = entries.map(([operator, operatorValue]) =>\n operator === '$not'\n ? {\n sql: `NOT (${Object.entries(operatorValue as Record<string, any>)\n .map(([op, val]) => processOperator(key, op, val).sql)\n .join(' AND ')})`,\n values: Object.entries(operatorValue as Record<string, any>).flatMap(\n ([op, val]) => processOperator(key, op, val).values,\n ),\n }\n : processOperator(key, operator, operatorValue),\n );\n\n return {\n sql: `(${results.map(r => r.sql).join(' AND ')})`,\n values: results.flatMap(r => r.values),\n };\n }\n\n // Handle single operator\n const [[operator, operatorValue] = []] = Object.entries(value);\n return processOperator(key, operator as string, operatorValue);\n}\n\nconst processOperator = (key: string, operator: string, operatorValue: any): FilterResult => {\n if (!operator.startsWith('$') || !FILTER_OPERATORS[operator]) {\n throw new Error(`Invalid operator: ${operator}`);\n }\n const operatorFn = FILTER_OPERATORS[operator]!;\n const operatorResult = operatorFn(key, operatorValue);\n\n if (!operatorResult.needsValue) {\n return { sql: operatorResult.sql, values: [] };\n }\n\n const transformed = operatorResult.transformValue ? operatorResult.transformValue(operatorValue) : operatorValue;\n\n if (transformed && typeof transformed === 'object' && 'sql' in transformed) {\n return transformed;\n }\n\n return {\n sql: operatorResult.sql,\n values: Array.isArray(transformed) ? transformed : [transformed],\n };\n};\n","import { join, resolve, isAbsolute } from 'path';\nimport { PGlite } from '@electric-sql/pglite';\nimport { MemoryFS } from '@electric-sql/pglite';\nimport { vector } from '@electric-sql/pglite/vector';\n\nimport type { VectorFilter } from '../filter';\nimport { MastraVector } from '../index';\nimport type {\n CreateIndexParams,\n IndexStats,\n QueryVectorParams,\n QueryResult,\n UpsertVectorParams,\n ParamsToArgs,\n QueryVectorArgs,\n} from '../index';\n\nimport { PGliteFilterTranslator } from './filter';\nimport { buildFilterQuery } from './sql-builder';\n\ninterface PGliteQueryParams extends QueryVectorParams {\n minScore?: number;\n}\n\ntype PGliteQueryArgs = [...QueryVectorArgs, number?];\n\nexport class PGliteVector extends MastraVector {\n private client: PGlite | null = null;\n private clientPromise: Promise<PGlite> | null = null;\n\n constructor({\n connectionUrl,\n authToken,\n syncUrl,\n syncInterval,\n }: {\n connectionUrl: string;\n authToken?: string;\n syncUrl?: string;\n syncInterval?: number;\n }) {\n super();\n\n this.clientPromise = this.initClient(connectionUrl);\n }\n\n private async initClient(connectionUrl: string): Promise<PGlite> {\n try {\n const client = await PGlite.create(this.rewriteDbUrl(connectionUrl), {\n fs: new MemoryFS(),\n extensions: {\n vector, // Enable pgvector support\n },\n });\n this.client = client;\n return client;\n } catch (error) {\n this.logger.error(`Error initializing PGlite client: ${error}`);\n throw error;\n }\n }\n\n // If we're in the .mastra/output directory, use the dir outside .mastra dir\n protected rewriteDbUrl(url: string): string {\n if (url.startsWith('file:') && url !== 'file::memory:') {\n const pathPart = url.slice('file:'.length);\n\n if (isAbsolute(pathPart)) {\n return url;\n }\n\n const cwd = process.cwd();\n\n if (cwd.includes('.mastra') && (cwd.endsWith(`output`) || cwd.endsWith(`output/`) || cwd.endsWith(`output\\\\`))) {\n const baseDir = join(cwd, `..`, `..`); // <- .mastra/output/../../\n\n const fullPath = resolve(baseDir, pathPart);\n\n this.logger.debug(\n `Initializing PGlite db with url ${url} with relative file path from inside .mastra/output directory. Rewriting relative file url to \"file:${fullPath}\". This ensures it's outside the .mastra/output directory.`,\n );\n\n return `file:${fullPath}`;\n }\n }\n\n return url;\n }\n\n private async getClient(): Promise<PGlite> {\n if (!this.client && this.clientPromise) {\n this.client = await this.clientPromise;\n }\n if (!this.client) {\n throw new Error('PGlite client not initialized');\n }\n return this.client;\n }\n\n transformFilter(filter?: VectorFilter) {\n const translator = new PGliteFilterTranslator();\n return translator.translate(filter);\n }\n\n async query(...args: ParamsToArgs<PGliteQueryParams> | PGliteQueryArgs): Promise<QueryResult[]> {\n const params = this.normalizeArgs<PGliteQueryParams, PGliteQueryArgs>('query', args, ['minScore']);\n\n try {\n const { indexName, queryVector, topK = 10, filter, includeVector = false, minScore = 0 } = params;\n const client = await this.getClient();\n\n // Convert JavaScript array to vector literal\n const vectorLiteral = `[${queryVector.join(',')}]`;\n\n const translatedFilter = this.transformFilter(filter);\n const { sql: filterQuery, values: filterValues } = buildFilterQuery(translatedFilter);\n \n // Start parameter index where filter values left off\n const scoreParamIndex = filterValues.length + 1;\n const queryParams = [...filterValues, minScore];\n\n const query = `\n WITH vector_scores AS (\n SELECT\n vector_id as id,\n 1 - (embedding <=> '${vectorLiteral}'::vector) as score,\n metadata\n ${includeVector ? ', embedding::float4[] as vector' : ''}\n FROM ${indexName}\n ${filterQuery}\n )\n SELECT *\n FROM vector_scores\n WHERE score > $${scoreParamIndex}\n ORDER BY score DESC\n LIMIT ${topK}`;\n\n const result = await client.query(query, queryParams);\n\n return (result.rows || []).map((row: any) => {\n const { id, score, metadata, vector } = row;\n return {\n id: id as string,\n score: score as number,\n metadata: typeof metadata === 'string' ? JSON.parse(metadata) : metadata,\n ...(includeVector && vector && { vector: vector as number[] }),\n };\n });\n } catch (error) {\n this.logger.error(`Error querying vectors: ${error}`);\n throw error;\n }\n }\n\n async upsert(...args: ParamsToArgs<UpsertVectorParams>): Promise<string[]> {\n const params = this.normalizeArgs<UpsertVectorParams>('upsert', args);\n const { indexName, vectors, metadata, ids } = params;\n const client = await this.getClient();\n\n try {\n const vectorIds = ids || vectors.map(() => crypto.randomUUID());\n \n await client.transaction(async (tx) => {\n for (let i = 0; i < vectors.length; i++) {\n // Use non-null assertion as we know vectors[i] exists within the bounds of the loop\n const vectorLiteral = `[${vectors[i]!.join(',')}]`;\n const metadataJson = JSON.stringify(metadata?.[i] || {});\n \n await tx.query(\n `INSERT INTO ${indexName} (vector_id, embedding, metadata)\n VALUES ($1, $2::vector, $3::jsonb)\n ON CONFLICT(vector_id) DO UPDATE SET\n embedding = $2::vector,\n metadata = $3::jsonb`,\n [vectorIds[i]!, vectorLiteral, metadataJson]\n );\n }\n });\n\n return vectorIds;\n } catch (error) {\n this.logger.error(`Error upserting vectors: ${error}`);\n throw error;\n }\n }\n\n async createIndex(...args: ParamsToArgs<CreateIndexParams>): Promise<void> {\n const params = this.normalizeArgs<CreateIndexParams>('createIndex', args);\n\n const { indexName, dimension, metric = 'cosine' } = params;\n try {\n // Validate inputs\n if (!indexName.match(/^[a-zA-Z_][a-zA-Z0-9_]*$/)) {\n throw new Error('Invalid index name format');\n }\n if (!Number.isInteger(dimension) || dimension <= 0) {\n throw new Error('Dimension must be a positive integer');\n }\n\n const client = await this.getClient();\n\n // Create the table using the pgvector extension\n // PG syntax: vector(dimension) vs SQLite syntax: F32_BLOB(dimension)\n await client.query(`\n CREATE TABLE IF NOT EXISTS ${indexName} (\n id SERIAL PRIMARY KEY,\n vector_id TEXT UNIQUE NOT NULL,\n embedding vector(${dimension}) NOT NULL,\n metadata JSONB DEFAULT '{}'::jsonb\n )\n `);\n\n // Create an appropriate index based on the metric\n // The index operators differ by distance metric\n let operator = '';\n switch (metric) {\n case 'cosine':\n operator = 'vector_cosine_ops';\n break;\n case 'euclidean':\n operator = 'vector_l2_ops';\n break;\n case 'dotproduct':\n operator = 'vector_ip_ops';\n break;\n default:\n operator = 'vector_cosine_ops'; // Default to cosine\n }\n\n // Create a vector index using HNSW (recommended for performa