@mastra/memory 0.0.2-alpha.0 → 0.0.2-alpha.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"memory.cjs.production.min.js","sources":["../src/cloudflare/kv.ts","../src/cloudflare/index.ts","../src/postgres/index.ts","../src/redis/providers.ts","../src/redis/index.ts"],"sourcesContent":["// Actual Cloudflare KV interface\nexport interface KVNamespace {\n get(key: string): Promise<string | null>;\n get(key: string, type: 'text'): Promise<string | null>;\n get<T>(key: string, type: 'json'): Promise<T | null>;\n put(key: string, value: string | ReadableStream | ArrayBuffer | FormData): Promise<void>;\n delete(key: string): Promise<void>;\n // List is actually on a different interface in real CF workers\n list(options?: { prefix?: string; limit?: number; cursor?: string }): Promise<{\n keys: { name: string }[];\n list_complete: boolean;\n cursor?: string;\n }>;\n}\n\n// Mock implementation for testing\nexport class MockKV implements KVNamespace {\n private store = new Map<string, string>();\n\n async get(key: string): Promise<string | null>;\n async get(key: string, type: 'text'): Promise<string | null>;\n async get<T>(key: string, type: 'json'): Promise<T | null>;\n async get<T>(key: string, type?: 'text' | 'json'): Promise<string | T | null> {\n const value = this.store.get(key);\n if (value === undefined) return null;\n\n if (type === 'json') {\n return JSON.parse(value) as T;\n }\n\n return value;\n }\n\n async put(key: string, value: string | ReadableStream | ArrayBuffer | FormData): Promise<void> {\n if (typeof value !== 'string') {\n throw new Error('MockKV only supports string values for testing');\n }\n this.store.set(key, value);\n }\n\n async delete(key: string): Promise<void> {\n this.store.delete(key);\n }\n\n async list(options?: { prefix?: string; limit?: number; cursor?: string }): Promise<{\n keys: { name: string }[];\n list_complete: boolean;\n cursor?: string;\n }> {\n const allKeys = Array.from(this.store.keys())\n .filter(key => !options?.prefix || key.startsWith(options.prefix))\n .map(name => ({ name }));\n\n const start = options?.cursor ? parseInt(options.cursor) : 0;\n const limit = options?.limit ?? allKeys.length;\n const end = start + limit;\n const keys = allKeys.slice(start, end);\n const list_complete = end >= allKeys.length;\n\n return {\n keys,\n list_complete,\n cursor: list_complete ? undefined : end.toString(),\n };\n }\n}\n\nexport class CloudflareKVProvider {\n private namespace: KVNamespace;\n\n constructor(namespace: KVNamespace) {\n this.namespace = namespace;\n }\n\n async get<T>(key: string): Promise<T | null> {\n return this.namespace.get<T>(key, 'json');\n }\n\n async set(key: string, value: any) {\n await this.namespace.put(key, JSON.stringify(value));\n }\n\n async del(key: string) {\n await this.namespace.delete(key);\n }\n\n async sadd(key: string, value: string) {\n const set = (await this.get<string[]>(key)) || [];\n if (!set.includes(value)) {\n set.push(value);\n await this.set(key, set);\n return 1;\n }\n return 0;\n }\n\n async srem(key: string, value: string) {\n const set = (await this.get<string[]>(key)) || [];\n const index = set.indexOf(value);\n if (index !== -1) {\n set.splice(index, 1);\n await this.set(key, set);\n return 1;\n }\n return 0;\n }\n\n async smembers(key: string): Promise<string[]> {\n return (await this.get<string[]>(key)) || [];\n }\n\n async flushall() {\n let cursor: string | undefined;\n do {\n const result = await this.namespace.list({ cursor });\n await Promise.all(result.keys.map(key => this.namespace.delete(key.name)));\n cursor = result.cursor;\n } while (cursor);\n }\n\n async getWithVersion<T>(key: string): Promise<{ data: T | null; version: number }> {\n const versionKey = `${key}:version`;\n const [data, version] = await Promise.all([this.get<T>(key), this.get<number>(versionKey).then(v => v || 0)]);\n return { data, version };\n }\n\n async setWithVersion<T>(key: string, value: T, expectedVersion: number): Promise<boolean> {\n const versionKey = `${key}:version`;\n const currentVersion = (await this.get<number>(versionKey)) || 0;\n\n if (currentVersion !== expectedVersion) {\n return false;\n }\n\n await Promise.all([this.set(key, value), this.set(versionKey, expectedVersion + 1)]);\n\n return true;\n }\n}\n","import { MastraMemory, MessageType, ThreadType } from '@mastra/core';\n\nimport { CloudflareKVProvider, KVNamespace } from './kv';\n\nexport class CloudflareKVMemory extends MastraMemory {\n private kv: CloudflareKVProvider;\n private threadPrefix = 'thread:';\n private messagePrefix = 'messages:';\n\n constructor(namespace: KVNamespace) {\n super();\n this.kv = new CloudflareKVProvider(namespace);\n }\n\n async getThreadById(threadId: string): Promise<ThreadType | null> {\n const thread = await this.kv.get<ThreadType>(`${this.threadPrefix}${threadId}`);\n if (thread && typeof thread.createdAt === 'string') {\n thread.createdAt = new Date(thread.createdAt);\n thread.updatedAt = new Date(thread.updatedAt);\n }\n return thread;\n }\n\n async saveThread(thread: ThreadType): Promise<ThreadType> {\n thread.updatedAt = new Date();\n await this.kv.set(`${this.threadPrefix}${thread.id}`, thread);\n await this.kv.sadd('threads', thread.id);\n return thread;\n }\n\n private async retryOperation<T>(operation: () => Promise<T>, maxRetries = 5): Promise<T> {\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n try {\n return await operation();\n } catch (error) {\n lastError = error as Error;\n await new Promise(resolve => setTimeout(resolve, Math.random() * 100 * Math.pow(2, attempt)));\n }\n }\n\n throw lastError || new Error(`Operation failed after ${maxRetries} attempts`);\n }\n\n async addMessage(threadId: string, content: string, role: 'user' | 'assistant'): Promise<MessageType> {\n const message: MessageType = {\n id: this.generateId(),\n content,\n role,\n createdAt: new Date(),\n threadId,\n };\n\n await this.retryOperation(async () => {\n const key = `${this.messagePrefix}${threadId}`;\n const existingMessages = (await this.kv.get<MessageType[]>(key)) || [];\n\n const messageMap = new Map<string, MessageType>();\n\n existingMessages.forEach(msg => {\n messageMap.set(msg.id, {\n ...msg,\n createdAt: new Date(msg.createdAt),\n });\n });\n\n messageMap.set(message.id, message);\n\n const updatedMessages = Array.from(messageMap.values());\n updatedMessages.sort((a, b) => {\n const timeCompare = a.createdAt.getTime() - b.createdAt.getTime();\n return timeCompare === 0 ? a.id.localeCompare(b.id) : timeCompare;\n });\n\n await this.kv.set(key, updatedMessages);\n });\n\n return message;\n }\n\n async saveMessages(messages: MessageType[]): Promise<MessageType[]> {\n if (!messages.length) return [];\n\n const messagesByThread = new Map<string, MessageType[]>();\n\n for (const message of messages) {\n const key = `${this.messagePrefix}${message.threadId}`;\n if (!messagesByThread.has(key)) {\n messagesByThread.set(key, []);\n }\n messagesByThread.get(key)!.push({\n ...message,\n createdAt: new Date(message.createdAt),\n });\n }\n\n await Promise.all(\n Array.from(messagesByThread.entries()).map(([key, threadMessages]) =>\n this.retryOperation(async () => {\n let saved = false;\n while (!saved) {\n const { data: existingMessages, version } = await this.kv.getWithVersion<MessageType[]>(key);\n console.log('Read version:', version, 'Messages:', existingMessages?.length || 0);\n\n const messageMap = new Map<string, MessageType>();\n\n (existingMessages || []).forEach(msg => {\n messageMap.set(msg.id, {\n ...msg,\n createdAt: new Date(msg.createdAt),\n });\n });\n\n threadMessages.forEach(msg => {\n messageMap.set(msg.id, msg);\n });\n\n const updatedMessages = Array.from(messageMap.values());\n updatedMessages.sort((a, b) => {\n const timeCompare = a.createdAt.getTime() - b.createdAt.getTime();\n return timeCompare === 0 ? a.id.localeCompare(b.id) : timeCompare;\n });\n\n saved = await this.kv.setWithVersion(key, updatedMessages, version);\n console.log('Save attempt with version:', version, 'Success:', saved);\n\n if (!saved) {\n // If save failed, someone else updated the messages, retry with new version\n await new Promise(resolve => setTimeout(resolve, Math.random() * 50));\n }\n }\n }),\n ),\n );\n\n return messages;\n }\n\n async getMessages(threadId: string): Promise<MessageType[]> {\n const messages = (await this.kv.get<MessageType[]>(`${this.messagePrefix}${threadId}`)) || [];\n return messages.map(msg => ({\n ...msg,\n createdAt: new Date(msg.createdAt),\n }));\n }\n\n async getAllThreadIds(): Promise<string[]> {\n return this.kv.smembers('threads');\n }\n\n async deleteThread(threadId: string): Promise<void> {\n await Promise.all([\n this.kv.del(`${this.threadPrefix}${threadId}`),\n this.kv.del(`${this.messagePrefix}${threadId}`),\n this.kv.srem('threads', threadId),\n ]);\n }\n\n async getThreads(threadIds: string[]): Promise<ThreadType[]> {\n const threads = await Promise.all(threadIds.map(id => this.getThreadById(id)));\n return threads.filter((t): t is ThreadType => t !== null);\n }\n\n async cleanup(): Promise<void> {\n // Flush all data\n await this.kv.flushall();\n }\n}\n","import { MastraMemory, MessageType, ThreadType } from '@mastra/core';\nimport { randomUUID } from 'crypto';\nimport pg from 'pg';\n\nconst { Pool } = pg;\n\nexport class PgMemory extends MastraMemory {\n private pool: pg.Pool;\n\n constructor(connectionString: string) {\n super();\n this.pool = new Pool({ connectionString });\n }\n\n async drop() {\n const client = await this.pool.connect();\n await client.query('DELETE FROM mastra_messages');\n await client.query('DELETE FROM mastra_threads');\n client.release();\n await this.pool.end();\n }\n\n async ensureTablesExist(): Promise<void> {\n const client = await this.pool.connect();\n try {\n // Check if the threads table exists\n const threadsResult = await client.query<{ exists: boolean }>(`\n SELECT EXISTS (\n SELECT 1\n FROM information_schema.tables\n WHERE table_name = 'mastra_threads'\n );\n `);\n\n if (!threadsResult?.rows?.[0]?.exists) {\n await client.query(`\n CREATE TABLE IF NOT EXISTS mastra_threads (\n id UUID PRIMARY KEY,\n title TEXT,\n created_at TIMESTAMP WITH TIME ZONE NOT NULL,\n updated_at TIMESTAMP WITH TIME ZONE NOT NULL,\n metadata JSONB\n );\n `);\n }\n\n // Check if the messages table exists\n const messagesResult = await client.query<{ exists: boolean }>(`\n SELECT EXISTS (\n SELECT 1\n FROM information_schema.tables\n WHERE table_name = 'mastra_messages'\n );\n `);\n\n if (!messagesResult?.rows?.[0]?.exists) {\n await client.query(`\n CREATE TABLE IF NOT EXISTS mastra_messages (\n id UUID PRIMARY KEY,\n content TEXT NOT NULL,\n role VARCHAR(20) NOT NULL,\n created_at TIMESTAMP WITH TIME ZONE NOT NULL,\n thread_id UUID NOT NULL,\n FOREIGN KEY (thread_id) REFERENCES mastra_threads(id)\n );\n `);\n }\n } finally {\n client.release();\n }\n }\n\n async updateThread(id: string, title: string, metadata: Record<string, unknown>): Promise<ThreadType> {\n const client = await this.pool.connect();\n try {\n const result = await client.query<ThreadType>(\n `\n UPDATE mastra_threads\n SET title = $1, metadata = $2, updated_at = NOW()\n WHERE id = $3\n RETURNING *\n `,\n [title, JSON.stringify(metadata), id],\n );\n return result?.rows?.[0]!;\n } finally {\n client.release();\n }\n }\n\n async deleteThread(id: string): Promise<void> {\n const client = await this.pool.connect();\n try {\n await client.query(\n `\n DELETE FROM mastra_messages\n WHERE thread_id = $1\n `,\n [id],\n );\n\n await client.query(\n `\n DELETE FROM mastra_threads\n WHERE id = $1\n `,\n [id],\n );\n } finally {\n client.release();\n }\n }\n\n async deleteMessage(id: string): Promise<void> {\n const client = await this.pool.connect();\n try {\n await client.query(\n `\n DELETE FROM mastra_messages\n WHERE id = $1\n `,\n [id],\n );\n } finally {\n client.release();\n }\n }\n\n async getThreadById(threadId: string): Promise<ThreadType | null> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n try {\n const result = await client.query<ThreadType>(\n `\n SELECT id, title, created_at AS createdAt, updated_at AS updatedAt, metadata\n FROM mastra_threads\n WHERE id = $1\n `,\n [threadId],\n );\n return result.rows[0] || null;\n } finally {\n client.release();\n }\n }\n\n async saveThread(thread: ThreadType): Promise<ThreadType> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n try {\n const { id, title, createdAt, updatedAt, metadata } = thread;\n const result = await client.query<ThreadType>(\n `\n INSERT INTO mastra_threads (id, title, created_at, updated_at, metadata)\n VALUES ($1, $2, $3, $4, $5)\n ON CONFLICT (id) DO UPDATE SET title = $2, updated_at = $4, metadata = $5\n RETURNING id, title, created_at AS createdAt, updated_at AS updatedAt, metadata\n `,\n [id, title, createdAt, updatedAt, JSON.stringify(metadata)],\n );\n return result?.rows?.[0]!;\n } finally {\n client.release();\n }\n }\n\n async saveMessages(messages: MessageType[]): Promise<MessageType[]> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n try {\n await client.query('BEGIN');\n for (const message of messages) {\n const { id, content, role, createdAt, threadId } = message;\n await client.query(\n `\n INSERT INTO mastra_messages (id, content, role, created_at, thread_id)\n VALUES ($1, $2, $3, $4, $5)\n `,\n [id, content, role, createdAt.toISOString(), threadId],\n );\n }\n await client.query('COMMIT');\n return messages;\n } catch (error) {\n await client.query('ROLLBACK');\n throw error;\n } finally {\n client.release();\n }\n }\n\n async getMessages(threadId: string): Promise<MessageType[]> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n try {\n const result = await client.query<MessageType>(\n `\n SELECT \n id, \n content, \n role, \n created_at AS createdAt, \n thread_id AS threadId\n FROM mastra_messages\n WHERE thread_id = $1\n ORDER BY created_at ASC\n `,\n [threadId],\n );\n return result.rows;\n } finally {\n client.release();\n }\n }\n\n async createThread(title?: string, metadata?: Record<string, unknown>): Promise<ThreadType> {\n await this.ensureTablesExist();\n\n const id = randomUUID();\n const now = new Date();\n const thread: ThreadType = {\n id,\n title,\n createdAt: now,\n updatedAt: now,\n metadata,\n };\n return this.saveThread(thread);\n }\n\n async addMessage(threadId: string, content: string, role: 'user' | 'assistant'): Promise<MessageType> {\n await this.ensureTablesExist();\n\n const thread = await this.getThreadById(threadId);\n if (!thread) {\n throw new Error(`Thread with ID ${threadId} does not exist.`);\n }\n\n const id = randomUUID();\n const message: MessageType = {\n id,\n content,\n role,\n createdAt: new Date(),\n threadId,\n };\n\n const [savedMessage] = await this.saveMessages([message]);\n\n return savedMessage!;\n }\n}\n","import { Redis as UpstashRedis } from '@upstash/redis';\nimport { createClient } from 'redis';\n\nimport { RedisClient, RedisPipeline } from './types';\n\n// Helper functions for date handling\nfunction serializeData(data: any): any {\n if (data === null || data === undefined) return data;\n\n if (data instanceof Date) {\n return { __type: 'Date', value: data.toISOString() };\n }\n\n if (Array.isArray(data)) {\n return data.map(item => serializeData(item));\n }\n\n if (typeof data === 'object') {\n return Object.keys(data).reduce((acc, key) => {\n acc[key] = serializeData(data[key]);\n return acc;\n }, {} as any);\n }\n\n return data;\n}\n\nfunction deserializeData(data: any): any {\n if (data === null || data === undefined) return data;\n\n if (typeof data === 'object' && data.__type === 'Date') {\n return new Date(data.value);\n }\n\n if (Array.isArray(data)) {\n return data.map(item => deserializeData(item));\n }\n\n if (typeof data === 'object') {\n return Object.keys(data).reduce((acc, key) => {\n acc[key] = deserializeData(data[key]);\n return acc;\n }, {} as any);\n }\n\n return data;\n}\n\n// Provider for Upstash/Vercel KV\nexport class UpstashProvider implements RedisClient {\n private client: UpstashRedis;\n\n constructor(url: string, token: string) {\n this.client = new UpstashRedis({\n url,\n token,\n });\n }\n async get(key: string) {\n const data = await this.client.get(key);\n return deserializeData(data);\n }\n\n async set(key: string, value: any) {\n return this.client.set(key, serializeData(value));\n }\n async del(key: string) {\n return this.client.del(key);\n }\n async sadd(key: string, value: string) {\n return this.client.sadd(key, value);\n }\n async srem(key: string, value: string) {\n return this.client.srem(key, value);\n }\n async smembers(key: string) {\n return this.client.smembers(key);\n }\n async flushall() {\n return this.client.flushall();\n }\n pipeline() {\n const multi = this.client.multi();\n const pipeline: RedisPipeline = {\n get: (key: string) => {\n multi.get(key);\n return pipeline;\n },\n set: (key: string, value: any) => {\n multi.set(key, JSON.stringify(serializeData(value)));\n return pipeline;\n },\n del: (key: string) => {\n multi.del(key);\n return pipeline;\n },\n srem: (key: string, value: string) => {\n multi.srem(key, value);\n return pipeline;\n },\n exec: async () => {\n const results = await multi.exec();\n return results.map(result => {\n try {\n // For get operations that return string data\n if (typeof result === 'string') {\n return deserializeData(JSON.parse(result));\n }\n // For array results (like from lists/sets)\n if (Array.isArray(result)) {\n return result.map(item => {\n try {\n return typeof item === 'string' ? deserializeData(JSON.parse(item)) : item;\n } catch {\n return item;\n }\n });\n }\n return result;\n } catch {\n return result;\n }\n });\n },\n };\n return pipeline;\n }\n}\n\nexport class LocalRedisProvider implements RedisClient {\n private client: any;\n\n constructor() {\n this.client = createClient({ url: 'redis://localhost:6379' });\n this.client.connect();\n }\n\n async get(key: string) {\n const data = await this.client.get(key);\n return data ? deserializeData(JSON.parse(data)) : null;\n }\n\n async set(key: string, value: any) {\n return this.client.set(key, JSON.stringify(serializeData(value)));\n }\n async del(key: string) {\n return this.client.del(key);\n }\n async sadd(key: string, value: string) {\n return this.client.sAdd(key, value);\n }\n async srem(key: string, value: string) {\n return this.client.sRem(key, value);\n }\n async smembers(key: string) {\n return this.client.sMembers(key);\n }\n async flushall() {\n return this.client.flushAll();\n }\n\n pipeline() {\n const multi = this.client.multi();\n const pipeline: RedisPipeline = {\n get: (key: string) => {\n multi.get(key);\n return pipeline;\n },\n set: (key: string, value: any) => {\n multi.set(key, JSON.stringify(value));\n return pipeline;\n },\n del: (key: string) => {\n multi.del(key);\n return pipeline;\n },\n srem: (key: string, value: string) => {\n multi.sRem(key, value);\n return pipeline;\n },\n exec: async () => {\n return multi.exec();\n },\n };\n return pipeline;\n }\n\n async quit() {\n await this.client.quit();\n }\n}\n","import { MastraMemory, ThreadType, MessageType } from '@mastra/core';\n\nimport { RedisClient } from './types';\n\nexport * from './types';\nexport * from './providers';\n\nexport class RedisMemory extends MastraMemory {\n private redis: RedisClient;\n private threadPrefix = 'thread:';\n private messagePrefix = 'messages:';\n private lockTimeouts: Map<string, NodeJS.Timeout> = new Map();\n\n constructor(redis: RedisClient) {\n super();\n this.redis = redis;\n }\n\n async getThreadById(threadId: string): Promise<ThreadType | null> {\n const thread = await this.redis.get(`${this.threadPrefix}${threadId}`);\n if (thread && typeof thread.createdAt === 'string') {\n thread.createdAt = new Date(thread.createdAt);\n thread.updatedAt = new Date(thread.updatedAt);\n }\n return thread;\n }\n\n async saveThread(thread: ThreadType): Promise<ThreadType> {\n thread.updatedAt = new Date();\n await this.redis.set(`${this.threadPrefix}${thread.id}`, thread);\n await this.redis.sadd('threads', thread.id);\n return thread;\n }\n\n private async withLock<T>(key: string, operation: () => Promise<T>): Promise<T> {\n const lockKey = `lock:${key}`;\n const lockTimeout = 5000;\n let locked = false;\n let timeoutId: NodeJS.Timeout | undefined;\n\n try {\n // Try to acquire lock with retries\n for (let i = 0; i < 3; i++) {\n locked = await this.redis.sadd(lockKey, '1');\n if (locked) break;\n await new Promise(resolve => setTimeout(resolve, Math.random() * 100));\n }\n\n if (!locked) {\n throw new Error('Could not acquire lock');\n }\n\n // Set lock timeout\n timeoutId = setTimeout(async () => {\n try {\n await this.redis.del(lockKey);\n } catch {\n // Ignore errors during cleanup\n }\n this.lockTimeouts.delete(lockKey);\n }, lockTimeout);\n\n this.lockTimeouts.set(lockKey, timeoutId);\n\n // Execute operation\n return await operation();\n } finally {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n this.lockTimeouts.delete(lockKey);\n }\n if (locked) {\n try {\n await this.redis.del(lockKey);\n } catch {\n // Ignore errors during cleanup\n }\n }\n }\n }\n\n // Add cleanup method\n async cleanup(): Promise<void> {\n // Clear all timeouts\n for (const timeout of this.lockTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.lockTimeouts.clear();\n }\n\n async saveMessages(messages: MessageType[]): Promise<MessageType[]> {\n if (!messages.length) return [];\n\n const messagesByThread = messages.reduce(\n (acc, message) => {\n const key = `${this.messagePrefix}${message.threadId}`;\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push({\n ...message,\n createdAt: new Date(message.createdAt),\n });\n return acc;\n },\n {} as Record<string, MessageType[]>,\n );\n\n for (const [key, threadMessages] of Object.entries(messagesByThread)) {\n await this.withLock(key, async () => {\n const existingMessages = (await this.redis.get(key)) || [];\n\n const messageMap = new Map<string, MessageType>();\n\n // Process existing messages\n existingMessages.forEach((msg: MessageType) => {\n messageMap.set(msg.id, {\n ...msg,\n createdAt: new Date(msg.createdAt),\n });\n });\n\n // Add new messages\n threadMessages.forEach(msg => {\n messageMap.set(msg.id, msg);\n });\n\n const updatedMessages = Array.from(messageMap.values());\n updatedMessages.sort((a, b) => {\n const timeCompare = a.createdAt.getTime() - b.createdAt.getTime();\n return timeCompare === 0 ? a.id.localeCompare(b.id) : timeCompare;\n });\n\n await this.redis.set(key, updatedMessages);\n if (threadMessages?.[0]?.threadId) {\n const thread = await this.getThreadById(threadMessages?.[0]?.threadId);\n if (thread) {\n thread.updatedAt = new Date();\n await this.redis.set(`${this.threadPrefix}${thread.id}`, thread);\n }\n }\n });\n }\n\n return messages;\n }\n\n async addMessage(threadId: string, content: string, role: 'user' | 'assistant'): Promise<MessageType> {\n const message: MessageType = {\n id: this.generateId(),\n content,\n role,\n createdAt: new Date(),\n threadId,\n };\n\n await this.saveMessages([message]);\n return message;\n }\n\n async getMessages(threadId: string): Promise<MessageType[]> {\n const messages = (await this.redis.get(`${this.messagePrefix}${threadId}`)) || [];\n return messages.map((msg: MessageType) => ({\n ...msg,\n createdAt: new Date(msg.createdAt),\n }));\n }\n\n async getAllThreadIds(): Promise<string[]> {\n return this.redis.smembers('threads');\n }\n\n async deleteThread(threadId: string): Promise<void> {\n const pipeline = this.redis.pipeline();\n pipeline.del(`${this.threadPrefix}${threadId}`);\n pipeline.del(`${this.messagePrefix}${threadId}`);\n pipeline.srem('threads', threadId);\n await pipeline.exec();\n }\n\n async getThreads(threadIds: string[]): Promise<ThreadType[]> {\n const threads = await Promise.all(threadIds.map(id => this.getThreadById(id)));\n return threads.filter((t): t is ThreadType => t !== null);\n }\n\n protected generateId(): string {\n return crypto.randomUUID();\n }\n}\n"],"names":["CloudflareKVProvider","namespace","this","_proto2","prototype","get","_get2","_asyncToGenerator","_regeneratorRuntime","mark","_callee5","key","wrap","_context5","prev","next","abrupt","stop","_x7","apply","arguments","set","_set","_callee6","value","_context6","put","JSON","stringify","_x8","_x9","del","_del","_callee7","_context7","_x10","sadd","_sadd","_callee8","_context8","t0","sent","includes","push","_x11","_x12","srem","_srem","_callee9","index","_context9","indexOf","splice","_x13","_x14","smembers","_smembers","_callee10","_context10","_x15","flushall","_flushall","_callee11","cursor","result","_this","_context11","list","Promise","all","keys","map","name","getWithVersion","_getWithVersion","_callee12","versionKey","_yield$Promise$all","_context12","then","v","data","version","_x16","setWithVersion","_setWithVersion","_callee13","expectedVersion","_context13","_x17","_x18","_x19","CloudflareKVMemory","_MastraMemory","call","kv","threadPrefix","messagePrefix","_inheritsLoose","_proto","getThreadById","_getThreadById","_callee","threadId","thread","_context","createdAt","Date","updatedAt","_x","saveThread","_saveThread","_callee2","_context2","id","_x2","retryOperation","_retryOperation","_callee3","operation","maxRetries","lastError","_loop","_ret","attempt","_context4","_context3","t1","resolve","setTimeout","Math","random","pow","delegateYield","Error","_x3","_x4","addMessage","_addMessage","content","role","message","_this2","generateId","_callee4","existingMessages","messageMap","updatedMessages","Map","forEach","msg","_extends","Array","from","values","sort","a","b","timeCompare","getTime","localeCompare","_x5","_x6","saveMessages","_saveMessages","messages","messagesByThread","_iterator","_step","_this3","length","_createForOfIteratorHelperLoose","done","has","entries","_ref2","threadMessages","saved","_loop2","_yield$_this3$kv$getW","console","log","getMessages","_getMessages","getAllThreadIds","_getAllThreadIds","deleteThread","_deleteThread","getThreads","_getThreads","threadIds","_this4","filter","t","cleanup","_cleanup","_context14","MastraMemory","Pool","pg","PgMemory","connectionString","pool","drop","_drop","client","connect","query","release","end","ensureTablesExist","_ensureTablesExist","_threadsResult$rows","_messagesResult$rows","threadsResult","messagesResult","rows","exists","finish","updateThread","_updateThread","title","metadata","_result$rows","deleteMessage","_deleteMessage","_result$rows2","toISOString","createThread","_createThread","now","randomUUID","serializeData","__type","isArray","item","Object","reduce","acc","deserializeData","UpstashProvider","url","token","UpstashRedis","_get","pipeline","_exec","multi","exec","results","parse","_unused","_unused2","LocalRedisProvider","createClient","_set2","_del2","_sadd2","sAdd","_srem2","sRem","_smembers2","_callee14","sMembers","_flushall2","_callee15","_context15","flushAll","_exec2","_callee16","_context16","quit","_quit","_callee17","_context17","RedisMemory","redis","lockTimeouts","withLock","_withLock","lockKey","lockTimeout","locked","timeoutId","i","undefined","clearTimeout","clear","_i","_Object$entries","_Object$entries$_i","_threadMessages$","_threadMessages$2","crypto"],"mappings":"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"}
1
+ {"version":3,"file":"memory.cjs.production.min.js","sources":["../src/postgres/index.ts"],"sourcesContent":["import { MastraMemory, MessageType, ThreadType } from '@mastra/core';\nimport { ToolResultPart, CoreToolMessage, ToolInvocation, Message as AiMessage, TextPart } from 'ai';\nimport crypto from 'crypto';\nimport pg from 'pg';\n\nconst { Pool } = pg;\n\nexport class PgMemory extends MastraMemory {\n private pool: pg.Pool;\n private MAX_CONTEXT_TOKENS?: number;\n\n constructor(config: { connectionString: string; maxTokens?: number }) {\n super();\n this.pool = new Pool({ connectionString: config.connectionString });\n this.MAX_CONTEXT_TOKENS = config.maxTokens;\n }\n\n async drop() {\n const client = await this.pool.connect();\n await client.query('DELETE FROM mastra_messages');\n await client.query('DELETE FROM mastra_threads');\n client.release();\n await this.pool.end();\n }\n\n // Simplified token estimation\n private estimateTokens(text: string): number {\n return Math.ceil(text.split(' ').length * 1.3);\n }\n\n private processMessages(messages: MessageType[]): MessageType[] {\n return messages.map(mssg => ({\n ...mssg,\n content: typeof mssg.content === 'string' ? JSON.parse((mssg as MessageType).content as string) : mssg.content,\n }));\n }\n\n private convertToUIMessages(messages: MessageType[]): AiMessage[] {\n function addToolMessageToChat({\n toolMessage,\n messages,\n toolResultContents,\n }: {\n toolMessage: CoreToolMessage;\n messages: Array<AiMessage>;\n toolResultContents: Array<ToolResultPart>;\n }): { chatMessages: Array<AiMessage>; toolResultContents: Array<ToolResultPart> } {\n const chatMessages = messages.map(message => {\n if (message.toolInvocations) {\n return {\n ...message,\n toolInvocations: message.toolInvocations.map(toolInvocation => {\n const toolResult = toolMessage.content.find(tool => tool.toolCallId === toolInvocation.toolCallId);\n\n if (toolResult) {\n return {\n ...toolInvocation,\n state: 'result',\n result: toolResult.result,\n };\n }\n\n return toolInvocation;\n }),\n };\n }\n\n return message;\n }) as Array<AiMessage>;\n\n const resultContents = [...toolResultContents, ...toolMessage.content];\n\n return { chatMessages, toolResultContents: resultContents };\n }\n\n const { chatMessages } = messages.reduce(\n (obj: { chatMessages: Array<AiMessage>; toolResultContents: Array<ToolResultPart> }, message) => {\n if (message.role === 'tool') {\n return addToolMessageToChat({\n toolMessage: message as CoreToolMessage,\n messages: obj.chatMessages,\n toolResultContents: obj.toolResultContents,\n });\n }\n\n let textContent = '';\n let toolInvocations: Array<ToolInvocation> = [];\n\n if (typeof message.content === 'string') {\n textContent = message.content;\n } else if (Array.isArray(message.content)) {\n for (const content of message.content) {\n if (content.type === 'text') {\n textContent += content.text;\n } else if (content.type === 'tool-call') {\n const toolResult = obj.toolResultContents.find(tool => tool.toolCallId === content.toolCallId);\n toolInvocations.push({\n state: toolResult ? 'result' : 'call',\n toolCallId: content.toolCallId,\n toolName: content.toolName,\n args: content.args,\n result: toolResult?.result,\n });\n }\n }\n }\n\n obj.chatMessages.push({\n id: message.id,\n role: message.role as AiMessage['role'],\n content: textContent,\n toolInvocations,\n });\n\n return obj;\n },\n { chatMessages: [], toolResultContents: [] } as {\n chatMessages: Array<AiMessage>;\n toolResultContents: Array<ToolResultPart>;\n },\n );\n\n return chatMessages;\n }\n\n async ensureTablesExist(): Promise<void> {\n const client = await this.pool.connect();\n try {\n // Check if the threads table exists\n const threadsResult = await client.query<{ exists: boolean }>(`\n SELECT EXISTS (\n SELECT 1\n FROM information_schema.tables\n WHERE table_name = 'mastra_threads'\n );\n `);\n\n if (!threadsResult?.rows?.[0]?.exists) {\n await client.query(`\n CREATE TABLE IF NOT EXISTS mastra_threads (\n id UUID PRIMARY KEY,\n resourceid TEXT,\n title TEXT,\n created_at TIMESTAMP WITH TIME ZONE NOT NULL,\n updated_at TIMESTAMP WITH TIME ZONE NOT NULL,\n metadata JSONB\n );\n `);\n }\n\n // Check if the messages table exists\n const messagesResult = await client.query<{ exists: boolean }>(`\n SELECT EXISTS (\n SELECT 1\n FROM information_schema.tables\n WHERE table_name = 'mastra_messages'\n );\n `);\n\n if (!messagesResult?.rows?.[0]?.exists) {\n await client.query(`\n CREATE TABLE IF NOT EXISTS mastra_messages (\n id UUID PRIMARY KEY,\n content TEXT NOT NULL,\n role VARCHAR(20) NOT NULL,\n created_at TIMESTAMP WITH TIME ZONE NOT NULL,\n tool_call_ids TEXT DEFAULT NULL,\n tool_call_args TEXT DEFAULT NULL,\n tool_call_args_expire_at TIMESTAMP WITH TIME ZONE DEFAULT NULL,\n type VARCHAR(20) NOT NULL,\n tokens INTEGER DEFAULT NULL,\n thread_id UUID NOT NULL,\n FOREIGN KEY (thread_id) REFERENCES mastra_threads(id)\n );\n `);\n }\n } finally {\n client.release();\n }\n }\n\n async updateThread(id: string, title: string, metadata: Record<string, unknown>): Promise<ThreadType> {\n const client = await this.pool.connect();\n try {\n const result = await client.query<ThreadType>(\n `\n UPDATE mastra_threads\n SET title = $1, metadata = $2, updated_at = NOW()\n WHERE id = $3\n RETURNING *\n `,\n [title, JSON.stringify(metadata), id],\n );\n return result?.rows?.[0]!;\n } finally {\n client.release();\n }\n }\n\n async deleteThread(id: string): Promise<void> {\n const client = await this.pool.connect();\n try {\n await client.query(\n `\n DELETE FROM mastra_messages\n WHERE thread_id = $1\n `,\n [id],\n );\n\n await client.query(\n `\n DELETE FROM mastra_threads\n WHERE id = $1\n `,\n [id],\n );\n } finally {\n client.release();\n }\n }\n\n async deleteMessage(id: string): Promise<void> {\n const client = await this.pool.connect();\n try {\n await client.query(\n `\n DELETE FROM mastra_messages\n WHERE id = $1\n `,\n [id],\n );\n } finally {\n client.release();\n }\n }\n\n async getThreadById({ threadId }: { threadId: string }): Promise<ThreadType | null> {\n console.log('getThreadById', threadId);\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n try {\n const result = await client.query<ThreadType>(\n `\n SELECT id, title, created_at AS createdAt, updated_at AS updatedAt, resourceid, metadata\n FROM mastra_threads\n WHERE id = $1\n `,\n [threadId],\n );\n\n return result.rows[0] || null;\n } finally {\n client.release();\n }\n }\n\n async getThreadsByResourceId({ resourceid }: { resourceid: string }): Promise<ThreadType[]> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n try {\n const result = await client.query<ThreadType>(\n `\n SELECT id, title, resourceid, created_at AS createdAt, updated_at AS updatedAt, metadata\n FROM mastra_threads\n WHERE resourceid = $1\n `,\n [resourceid],\n );\n return result.rows;\n } finally {\n client.release();\n }\n }\n\n async saveThread({ thread }: { thread: ThreadType }): Promise<ThreadType> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n try {\n const { id, title, createdAt, updatedAt, resourceid, metadata } = thread;\n const result = await client.query<ThreadType>(\n `\n INSERT INTO mastra_threads (id, title, created_at, updated_at, resourceid, metadata)\n VALUES ($1, $2, $3, $4, $5, $6)\n ON CONFLICT (id) DO UPDATE SET title = $2, updated_at = $4, resourceid = $5, metadata = $6\n RETURNING id, title, created_at AS createdAt, updated_at AS updatedAt, resourceid, metadata\n `,\n [id, title, createdAt, updatedAt, resourceid, JSON.stringify(metadata)],\n );\n return result?.rows?.[0]!;\n } finally {\n client.release();\n }\n }\n\n async checkIfValidArgExists({ hashedToolCallArgs }: { hashedToolCallArgs: string }): Promise<boolean> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n\n try {\n const toolArgsResult = await client.query<{ toolCallIds: string; toolCallArgs: string; createdAt: string }>(\n ` SELECT tool_call_ids as toolCallIds, \n tool_call_args as toolCallArgs,\n created_at AS createdAt\n FROM mastra_messages\n WHERE tool_call_args::jsonb @> $1\n AND tool_call_args_expire_at > $2\n ORDER BY created_at ASC\n LIMIT 1`,\n [JSON.stringify([hashedToolCallArgs]), new Date().toISOString()],\n );\n\n return toolArgsResult.rows.length > 0;\n } catch (error) {\n console.log('error checking if valid arg exists====', error);\n return false;\n } finally {\n client.release();\n }\n }\n\n async getCachedToolResult({\n threadId,\n toolArgs,\n toolName,\n }: {\n threadId: string;\n toolArgs: Record<string, unknown>;\n toolName: string;\n }): Promise<ToolResultPart['result'] | null> {\n await this.ensureTablesExist();\n console.log('checking for cached tool result====', JSON.stringify(toolArgs, null, 2));\n\n const client = await this.pool.connect();\n\n try {\n const hashedToolArgs = crypto\n .createHash('sha256')\n .update(JSON.stringify({ args: toolArgs, threadId, toolName }))\n .digest('hex');\n\n console.log('hashedToolArgs====', hashedToolArgs);\n\n const toolArgsResult = await client.query<{ tool_call_ids: string; tool_call_args: string; created_at: string }>(\n `SELECT tool_call_ids, \n tool_call_args,\n created_at\n FROM mastra_messages\n WHERE tool_call_args::jsonb @> $1\n AND tool_call_args_expire_at > $2\n ORDER BY created_at ASC\n LIMIT 1`,\n [JSON.stringify([hashedToolArgs]), new Date().toISOString()],\n );\n\n if (toolArgsResult.rows.length > 0) {\n console.log('toolArgsResult====', JSON.stringify(toolArgsResult.rows[0], null, 2));\n const toolCallArgs = JSON.parse(toolArgsResult.rows[0]?.tool_call_args!) as string[];\n const toolCallIds = JSON.parse(toolArgsResult.rows[0]?.tool_call_ids!) as string[];\n const createdAt = toolArgsResult.rows[0]?.created_at!;\n\n console.log('toolCallArgs====', JSON.stringify(toolCallArgs, null, 2));\n console.log('toolCallIds====', JSON.stringify(toolCallIds, null, 2));\n console.log('createdAt====', createdAt);\n\n const toolCallArgsIndex = toolCallArgs.findIndex(arg => arg === hashedToolArgs);\n const correspondingToolCallId = toolCallIds[toolCallArgsIndex];\n\n console.log('correspondingToolCallId====', { correspondingToolCallId, toolCallArgsIndex });\n\n const toolResult = await client.query<{ content: string }>(\n `SELECT content \n FROM mastra_messages \n WHERE thread_id = $1\n AND tool_call_ids ILIKE $2\n AND type = 'tool-result'\n AND created_at = $3\n LIMIT 1`,\n [threadId, `%${correspondingToolCallId}%`, new Date(createdAt).toISOString()],\n );\n\n console.log('called toolResult');\n\n if (toolResult.rows.length === 0) {\n console.log('no tool result found');\n return null;\n }\n\n const toolResultContent = JSON.parse(toolResult.rows[0]?.content!) as Array<ToolResultPart>;\n const requiredToolResult = toolResultContent.find(part => part.toolCallId === correspondingToolCallId);\n\n console.log('requiredToolResult====', JSON.stringify(requiredToolResult, null, 2));\n\n if (requiredToolResult) {\n return requiredToolResult.result;\n }\n }\n\n return null;\n } catch (error) {\n console.log('error getting cached tool result====', error);\n return null;\n } finally {\n client.release();\n }\n }\n\n async getContextWindow({\n threadId,\n startDate,\n endDate,\n }: {\n threadId: string;\n startDate?: Date;\n endDate?: Date;\n }): Promise<MessageType[]> {\n await this.ensureTablesExist();\n console.log('table exists');\n const client = await this.pool.connect();\n\n try {\n if (this.MAX_CONTEXT_TOKENS) {\n // Get messages with token limit and time filter\n const result = await client.query<MessageType>(\n `WITH RankedMessages AS (\n SELECT *,\n SUM(tokens) OVER (ORDER BY created_at DESC) as running_total\n FROM mastra_messages\n WHERE thread_id = $1\n AND type = 'text'\n ${startDate ? `AND created_at >= '${startDate.toISOString()}'` : ''}\n ${endDate ? `AND created_at <= '${endDate.toISOString()}'` : ''}\n ORDER BY created_at DESC\n )\n SELECT id, \n content, \n role, \n type,\n created_at AS createdAt, \n thread_id AS threadId\n FROM RankedMessages\n WHERE running_total <= $2\n ORDER BY created_at ASC`,\n [threadId, this.MAX_CONTEXT_TOKENS],\n );\n\n console.log('result===', JSON.stringify(result.rows, null, 2));\n\n return this.processMessages(result.rows);\n }\n\n //get all messages\n const result = await client.query<MessageType>(\n `SELECT id, \n content, \n role, \n type,\n created_at AS createdAt, \n thread_id AS threadId\n FROM mastra_messages\n WHERE thread_id = $1\n AND type = 'text'\n ${startDate ? `AND created_at >= '${startDate.toISOString()}'` : ''}\n ${endDate ? `AND created_at <= '${endDate.toISOString()}'` : ''}\n ORDER BY created_at ASC`,\n [threadId],\n );\n\n console.log('result===', JSON.stringify(result.rows, null, 2));\n\n return this.processMessages(result.rows);\n } catch (error) {\n console.log('error getting context window====', error);\n return [];\n } finally {\n client.release();\n }\n }\n\n async saveMessages({ messages }: { messages: MessageType[] }): Promise<MessageType[]> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n try {\n await client.query('BEGIN');\n for (const message of messages) {\n console.log('saving message====', JSON.stringify(message, null, 2));\n const { id, content, role, createdAt, threadId, toolCallIds, toolCallArgs, type, toolNames } = message;\n let tokens = null;\n if (type === 'text') {\n const contentMssg = role === 'assistant' ? (content as Array<TextPart>)[0]?.text || '' : (content as string);\n tokens = this.estimateTokens(contentMssg);\n }\n\n // Hash the toolCallArgs if they exist\n const hashedToolCallArgs = toolCallArgs\n ? toolCallArgs.map((args, index) =>\n crypto\n .createHash('sha256')\n .update(JSON.stringify({ args, threadId, toolName: toolNames?.[index] }))\n .digest('hex'),\n )\n : null;\n\n let validArgExists = false;\n if (hashedToolCallArgs?.length) {\n // Check all args sequentially\n validArgExists = true; // Start true and set to false if any check fails\n for (let i = 0; i < hashedToolCallArgs.length; i++) {\n const isValid = await this.checkIfValidArgExists({\n hashedToolCallArgs: hashedToolCallArgs[i]!,\n });\n if (!isValid) {\n validArgExists = false;\n break;\n }\n }\n }\n\n const toolCallArgsExpireAt = !toolCallArgs\n ? null\n : validArgExists\n ? createdAt\n : new Date(createdAt.getTime() + 5 * 60 * 1000); // 5 minutes\n\n console.log('just before query');\n\n await client.query(\n `\n INSERT INTO mastra_messages (id, content, role, created_at, thread_id, tool_call_ids, tool_call_args, type, tokens, tool_call_args_expire_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)\n `,\n [\n id,\n JSON.stringify(content),\n role,\n createdAt.toISOString(),\n threadId,\n JSON.stringify(toolCallIds),\n JSON.stringify(hashedToolCallArgs),\n type,\n tokens,\n toolCallArgsExpireAt?.toISOString(),\n ],\n );\n }\n console.log('just after query');\n await client.query('COMMIT');\n return messages;\n } catch (error) {\n await client.query('ROLLBACK');\n throw error;\n } finally {\n client.release();\n }\n }\n\n async getMessages({ threadId }: { threadId: string }): Promise<{ messages: MessageType[]; uiMessages: AiMessage[] }> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n try {\n const result = await client.query<MessageType>(\n `\n SELECT \n id, \n content, \n role, \n type,\n created_at AS createdAt, \n thread_id AS threadId\n FROM mastra_messages\n WHERE thread_id = $1\n ORDER BY created_at ASC\n `,\n [threadId],\n );\n\n const messages = this.processMessages(result.rows);\n const uiMessages = this.convertToUIMessages(messages);\n\n return { messages, uiMessages };\n } finally {\n client.release();\n }\n }\n}\n"],"names":["Pool","_MastraMemory","PgMemory","config","_this","call","this","pool","MAX_CONTEXT_TOKENS","connectionString","maxTokens","_proto","prototype","drop","_drop","_asyncToGenerator","_regeneratorRuntime","mark","_callee","client","wrap","_context","prev","next","connect","sent","query","release","end","stop","apply","arguments","estimateTokens","text","Math","ceil","split","length","processMessages","messages","map","mssg","_extends","content","JSON","parse","convertToUIMessages","reduce","obj","message","role","toolMessage","_ref","chatMessages","toolResultContents","toolInvocations","toolInvocation","toolResult","find","tool","toolCallId","state","result","concat","textContent","Array","isArray","_step","_loop","value","type","push","toolName","args","_iterator","_createForOfIteratorHelperLoose","done","id","ensureTablesExist","_ensureTablesExist","_callee2","_threadsResult$rows","_messagesResult$rows","threadsResult","messagesResult","_context2","rows","exists","finish","updateThread","_updateThread","_callee3","title","metadata","_result$rows","_context3","stringify","abrupt","_x","_x2","_x3","deleteThread","_deleteThread","_callee4","_context4","_x4","deleteMessage","_deleteMessage","_callee5","_context5","_x5","getThreadById","_getThreadById","_callee6","_ref2","threadId","_context6","console","log","_x6","getThreadsByResourceId","_getThreadsByResourceId","_callee7","_ref3","resourceid","_context7","_x7","saveThread","_saveThread","_callee8","_ref4","thread","_result$rows2","createdAt","updatedAt","_context8","_x8","checkIfValidArgExists","_checkIfValidArgExists","_callee9","_ref5","hashedToolCallArgs","_context9","Date","toISOString","toolArgsResult","t0","_x9","getCachedToolResult","_getCachedToolResult","_callee10","_ref6","toolArgs","hashedToolArgs","_toolArgsResult$rows$","_toolArgsResult$rows$2","_toolArgsResult$rows$3","_toolResult$rows$","toolCallArgs","toolCallIds","toolCallArgsIndex","correspondingToolCallId","toolResultContent","requiredToolResult","_context10","crypto","createHash","update","digest","tool_call_args","tool_call_ids","created_at","findIndex","arg","part","_x10","getContextWindow","_getContextWindow","_callee11","_ref7","startDate","endDate","_result","_context11","_x11","saveMessages","_saveMessages","_callee12","_ref8","_loop2","_iterator2","_step2","_this2","_context13","toolNames","tokens","_content$","contentMssg","validArgExists","i","toolCallArgsExpireAt","_context12","index","getTime","delegateYield","t1","_x12","getMessages","_getMessages","_callee13","_ref9","uiMessages","_context14","_x13","MastraMemory"],"mappings":"24PAKA,IAAQA,gBAAAA,+BAEcC,GAIpB,SAAAC,EAAYC,GAAwD,IAAAC,EAGvB,OAF3CA,EAAAH,EAAAI,YAAOC,MAJDC,UAAI,EAAAH,EACJI,wBAAkB,EAIxBJ,EAAKG,KAAO,IAAIP,EAAK,CAAES,iBAAkBN,EAAOM,mBAChDL,EAAKI,mBAAqBL,EAAOO,UAAUN,CAC7C,WAACH,KAAAC,yEAAA,IAAAS,EAAAT,EAAAU,UAkiBgB,OAliBhBD,EAEKE,KAAI,WAAA,IAAAC,EAAAC,EAAAC,IAAAC,MAAV,SAAAC,IAAA,IAAAC,EAAA,OAAAH,IAAAI,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,OAAAF,EAAAE,KAAA,EACuBjB,KAAKC,KAAKiB,UAAS,KAAA,EAA5B,OAANL,EAAME,EAAAI,KAAAJ,EAAAE,KAAA,EACNJ,EAAOO,MAAM,+BAA8B,KAAA,EAAA,OAAAL,EAAAE,KAAA,EAC3CJ,EAAOO,MAAM,8BAA6B,KAAA,EAC/B,OAAjBP,EAAOQ,UAAUN,EAAAE,KAAA,GACXjB,KAAKC,KAAKqB,MAAK,KAAA,GAAA,IAAA,MAAA,OAAAP,EAAAQ,OAAA,GAAAX,EAAAZ,KACtB,KANS,OAMT,WANS,OAAAQ,EAAAgB,MAAAxB,KAAAyB,UAAA,EAAA,GAQVpB,EACQqB,eAAA,SAAeC,GACrB,OAAOC,KAAKC,KAA8B,IAAzBF,EAAKG,MAAM,KAAKC,SAClC1B,EAEO2B,gBAAA,SAAgBC,GACtB,OAAOA,EAASC,KAAI,SAAAC,GAAI,OAAAC,KACnBD,EAAI,CACPE,QAAiC,iBAAjBF,EAAKE,QAAuBC,KAAKC,MAAOJ,EAAqBE,SAAqBF,EAAKE,SAAO,KAEjHhC,EAEOmC,oBAAA,SAAoBP,GAqF1B,OA/CyBA,EAASQ,QAChC,SAACC,EAAoFC,GACnF,GAAqB,SAAjBA,EAAQC,KACV,OAvCJC,GAD2BC,EAwCK,CAC1BD,YAAaF,EACbV,SAAUS,EAAIK,aACdC,mBAAoBN,EAAIM,qBA1C9BH,YAEAG,EAAkBF,EAAlBE,mBA+BO,CAAED,aAhCDD,EAARb,SAO8BC,KAAI,SAAAS,GAChC,OAAIA,EAAQM,gBACVb,KACKO,EAAO,CACVM,gBAAiBN,EAAQM,gBAAgBf,KAAI,SAAAgB,GAC3C,IAAMC,EAAaN,EAAYR,QAAQe,MAAK,SAAAC,GAAI,OAAIA,EAAKC,aAAeJ,EAAeI,cAEvF,OAAIH,EACFf,KACKc,EAAc,CACjBK,MAAO,SACPC,OAAQL,EAAWK,SAIhBN,OAKNP,CACT,IAIuBK,sBAFHS,OAAOT,EAAuBH,EAAYR,UAhChE,IAA6BS,EAC3BD,EAEAG,EA4CMU,EAAc,GACdT,EAAyC,GAE7C,GAA+B,iBAApBN,EAAQN,QACjBqB,EAAcf,EAAQN,aACjB,GAAIsB,MAAMC,QAAQjB,EAAQN,SAC/B,IADyC,IACJwB,EADIC,EAAAA,WACF,IAA5BzB,EAAOwB,EAAAE,MAChB,GAAqB,SAAjB1B,EAAQ2B,KACVN,GAAerB,EAAQV,UAClB,GAAqB,cAAjBU,EAAQ2B,KAAsB,CACvC,IAAMb,EAAaT,EAAIM,mBAAmBI,MAAK,SAAAC,GAAI,OAAIA,EAAKC,aAAejB,EAAQiB,cACnFL,EAAgBgB,KAAK,CACnBV,MAAOJ,EAAa,SAAW,OAC/BG,WAAYjB,EAAQiB,WACpBY,SAAU7B,EAAQ6B,SAClBC,KAAM9B,EAAQ8B,KACdX,OAAQL,MAAAA,OAAAA,EAAAA,EAAYK,QAExB,GAZFY,EAAAC,EAAsB1B,EAAQN,WAAOwB,EAAAO,KAAAE,MAAAR,IAuBvC,OAPApB,EAAIK,aAAakB,KAAK,CACpBM,GAAI5B,EAAQ4B,GACZ3B,KAAMD,EAAQC,KACdP,QAASqB,EACTT,gBAAAA,IAGKP,CACT,GACA,CAAEK,aAAc,GAAIC,mBAAoB,KAzClCD,cAgDT1C,EAEKmE,kBAAiB,WAAA,IAAAC,EAAAhE,EAAAC,IAAAC,MAAvB,SAAA+D,IAAA,IAAA7D,EAAA8D,EAAAC,EAAAC,EAAAC,EAAA,OAAApE,IAAAI,MAAA,SAAAiE,GAAA,cAAAA,EAAA/D,KAAA+D,EAAA9D,MAAA,KAAA,EAAA,OAAA8D,EAAA9D,KAAA,EACuBjB,KAAKC,KAAKiB,UAAS,KAAA,EAA5B,OAANL,EAAMkE,EAAA5D,KAAA4D,EAAA/D,KAAA,EAAA+D,EAAA9D,KAAA,EAGkBJ,EAAOO,MAAK,kNAMhC,KAAA,EANW,GAQDuD,OARZE,EAAaE,EAAA5D,OAQK,OAANwD,EAAbE,EAAeG,OAAfL,OAAmBA,EAAnBA,EAAsB,KAAtBA,EAA0BM,OAAM,CAAAF,EAAA9D,KAAA,GAAA,KAAA,CAAA,OAAA8D,EAAA9D,KAAA,GAC7BJ,EAAOO,MAAK,kaASR,KAAA,GAAA,OAAA2D,EAAA9D,KAAA,GAIiBJ,EAAOO,MAAK,mNAMjC,KAAA,GANY,GAQDwD,OARbE,EAAcC,EAAA5D,OAQK,OAANyD,EAAdE,EAAgBE,OAAhBJ,OAAoBA,EAApBA,EAAuB,KAAvBA,EAA2BK,OAAM,CAAAF,EAAA9D,KAAA,GAAA,KAAA,CAAA,OAAA8D,EAAA9D,KAAA,GAC9BJ,EAAOO,MAAK,kwBAcR,KAAA,GAGK,OAHL2D,EAAA/D,KAAA,GAGZH,EAAOQ,UAAU0D,EAAAG,OAAA,IAAA,KAAA,GAAA,IAAA,MAAA,OAAAH,EAAAxD,OAAA,GAAAmD,EAAA1E,KAAA,CAAA,CAAA,EAAA,CAAA,GAAA,KAEpB,KAtDsB,OAsDtB,WAtDsB,OAAAyE,EAAAjD,MAAAxB,KAAAyB,UAAA,CAAA,CAAA,GAAApB,EAwDjB8E,aAAY,WAAA,IAAAC,EAAA3E,EAAAC,IAAAC,MAAlB,SAAA0E,EAAmBd,EAAYe,EAAeC,GAAiC,IAAA1E,EAAA2E,EAAAhC,EAAA,OAAA9C,IAAAI,MAAA,SAAA2E,GAAA,cAAAA,EAAAzE,KAAAyE,EAAAxE,MAAA,KAAA,EAAA,OAAAwE,EAAAxE,KAAA,EACxDjB,KAAKC,KAAKiB,UAAS,KAAA,EAA5B,OAANL,EAAM4E,EAAAtE,KAAAsE,EAAAzE,KAAA,EAAAyE,EAAAxE,KAAA,EAEWJ,EAAOO,MAO1B,2LAAA,CAACkE,EAAOhD,KAAKoD,UAAUH,GAAWhB,IACnC,KAAA,EARW,OAAAkB,EAAAE,OAAA,SASCH,OATPhC,EAAMiC,EAAAtE,OASO,OAANqE,EAANhC,EAAQwB,WAAI,EAAZQ,EAAe,IAAG,KAAA,EAER,OAFQC,EAAAzE,KAAA,EAEzBH,EAAOQ,UAAUoE,EAAAP,OAAA,GAAA,KAAA,GAAA,IAAA,MAAA,OAAAO,EAAAlE,OAAA,GAAA8D,EAAArF,KAAA,CAAA,CAAA,EAAA,CAAA,EAAA,KAEpB,KAhBiB,OAgBjB,SAhBiB4F,EAAAC,EAAAC,GAAA,OAAAV,EAAA5D,MAAAxB,KAAAyB,UAAA,CAAA,CAAA,GAAApB,EAkBZ0F,aAAY,WAAA,IAAAC,EAAAvF,EAAAC,IAAAC,MAAlB,SAAAsF,EAAmB1B,GAAU,IAAA1D,EAAA,OAAAH,IAAAI,MAAA,SAAAoF,GAAA,cAAAA,EAAAlF,KAAAkF,EAAAjF,MAAA,KAAA,EAAA,OAAAiF,EAAAjF,KAAA,EACNjB,KAAKC,KAAKiB,UAAS,KAAA,EAA5B,OAANL,EAAMqF,EAAA/E,KAAA+E,EAAAlF,KAAA,EAAAkF,EAAAjF,KAAA,EAEJJ,EAAOO,8GAKX,CAACmD,IACF,KAAA,EAAA,OAAA2B,EAAAjF,KAAA,EAEKJ,EAAOO,sGAKX,CAACmD,IACF,KAAA,EAEgB,OAFhB2B,EAAAlF,KAAA,EAEDH,EAAOQ,UAAU6E,EAAAhB,OAAA,GAAA,KAAA,GAAA,IAAA,MAAA,OAAAgB,EAAA3E,OAAA,GAAA0E,EAAAjG,KAAA,CAAA,CAAA,EAAA,CAAA,EAAA,KAEpB,KArBiB,OAqBjB,SArBiBmG,GAAA,OAAAH,EAAAxE,MAAAxB,KAAAyB,UAAA,CAAA,CAAA,GAAApB,EAuBZ+F,cAAa,WAAA,IAAAC,EAAA5F,EAAAC,IAAAC,MAAnB,SAAA2F,EAAoB/B,GAAU,IAAA1D,EAAA,OAAAH,IAAAI,MAAA,SAAAyF,GAAA,cAAAA,EAAAvF,KAAAuF,EAAAtF,MAAA,KAAA,EAAA,OAAAsF,EAAAtF,KAAA,EACPjB,KAAKC,KAAKiB,UAAS,KAAA,EAA5B,OAANL,EAAM0F,EAAApF,KAAAoF,EAAAvF,KAAA,EAAAuF,EAAAtF,KAAA,EAEJJ,EAAOO,uGAKX,CAACmD,IACF,KAAA,EAEgB,OAFhBgC,EAAAvF,KAAA,EAEDH,EAAOQ,UAAUkF,EAAArB,OAAA,GAAA,KAAA,EAAA,IAAA,MAAA,OAAAqB,EAAAhF,OAAA,GAAA+E,EAAAtG,KAAA,CAAA,CAAA,EAAA,CAAA,EAAA,IAEpB,KAbkB,OAalB,SAbkBwG,GAAA,OAAAH,EAAA7E,MAAAxB,KAAAyB,UAAA,CAAA,CAAA,GAAApB,EAeboG,cAAa,WAAA,IAAAC,EAAAjG,EAAAC,IAAAC,MAAnB,SAAAgG,EAAAC,GAAA,IAAAC,EAAAhG,EAAA,OAAAH,IAAAI,MAAA,SAAAgG,GAAA,cAAAA,EAAA9F,KAAA8F,EAAA7F,MAAA,KAAA,EACyC,OADnB4F,EAAQD,EAARC,SACpBE,QAAQC,IAAI,gBAAiBH,GAAUC,EAAA7F,KAAA,EACjCjB,KAAKwE,oBAAmB,KAAA,EAAA,OAAAsC,EAAA7F,KAAA,EAETjB,KAAKC,KAAKiB,UAAS,KAAA,EAA5B,OAANL,EAAMiG,EAAA3F,KAAA2F,EAAA9F,KAAA,EAAA8F,EAAA7F,KAAA,GAEWJ,EAAOO,qMAM1B,CAACyF,IACF,KAAA,GAPW,OAAAC,EAAAnB,OASLnC,SATKsD,EAAA3F,KASE6D,KAAK,IAAM,MAAI,KAAA,GAEZ,OAFY8B,EAAA9F,KAAA,GAE7BH,EAAOQ,UAAUyF,EAAA5B,OAAA,IAAA,KAAA,GAAA,IAAA,MAAA,OAAA4B,EAAAvF,OAAA,GAAAoF,EAAA3G,KAAA,CAAA,CAAA,EAAA,CAAA,GAAA,KAEpB,KAnBkB,OAmBlB,SAnBkBiH,GAAA,OAAAP,EAAAlF,MAAAxB,KAAAyB,UAAA,CAAA,CAAA,GAAApB,EAqBb6G,uBAAsB,WAAA,IAAAC,EAAA1G,EAAAC,IAAAC,MAA5B,SAAAyG,EAAAC,GAAA,IAAAC,EAAAzG,EAAA,OAAAH,IAAAI,MAAA,SAAAyG,GAAA,cAAAA,EAAAvG,KAAAuG,EAAAtG,MAAA,KAAA,EAAyC,OAAVqG,EAAUD,EAAVC,WAAUC,EAAAtG,KAAA,EACjCjB,KAAKwE,oBAAmB,KAAA,EAAA,OAAA+C,EAAAtG,KAAA,EAETjB,KAAKC,KAAKiB,UAAS,KAAA,EAA5B,OAANL,EAAM0G,EAAApG,KAAAoG,EAAAvG,KAAA,EAAAuG,EAAAtG,KAAA,EAEWJ,EAAOO,6MAM1B,CAACkG,IACF,KAAA,EAPW,OAAAC,EAAA5B,OAQLnC,SARK+D,EAAApG,KAQE6D,MAAI,KAAA,GAED,OAFCuC,EAAAvG,KAAA,GAElBH,EAAOQ,UAAUkG,EAAArC,OAAA,IAAA,KAAA,GAAA,IAAA,MAAA,OAAAqC,EAAAhG,OAAA,GAAA6F,EAAApH,KAAA,CAAA,CAAA,EAAA,CAAA,GAAA,KAEpB,KAjB2B,OAiB3B,SAjB2BwH,GAAA,OAAAL,EAAA3F,MAAAxB,KAAAyB,UAAA,CAAA,CAAA,GAAApB,EAmBtBoH,WAAU,WAAA,IAAAC,EAAAjH,EAAAC,IAAAC,MAAhB,SAAAgH,EAAAC,GAAA,IAAAC,EAAAhH,EAAAiH,EAAAvD,EAAAe,EAAAyC,EAAAC,EAAAV,EAAA/B,EAAA/B,EAAA,OAAA9C,IAAAI,MAAA,SAAAmH,GAAA,cAAAA,EAAAjH,KAAAiH,EAAAhH,MAAA,KAAA,EAAyB,OAAN4G,EAAMD,EAANC,OAAMI,EAAAhH,KAAA,EACjBjB,KAAKwE,oBAAmB,KAAA,EAAA,OAAAyD,EAAAhH,KAAA,EAETjB,KAAKC,KAAKiB,UAAS,KAAA,EAEuB,OAFzDL,EAAMoH,EAAA9G,KAAA8G,EAAAjH,KAAA,EAEFuD,EAA0DsD,EAA1DtD,GAAIe,EAAsDuC,EAAtDvC,MAAOyC,EAA+CF,EAA/CE,UAAWC,EAAoCH,EAApCG,UAAWV,EAAyBO,EAAzBP,WAAY/B,EAAasC,EAAbtC,SAAQ0C,EAAAhH,KAAA,GACxCJ,EAAOO,MAAK,iYAO/B,CAACmD,EAAIe,EAAOyC,EAAWC,EAAWV,EAAYhF,KAAKoD,UAAUH,KAC9D,KAAA,GARW,OAAA0C,EAAAtC,OAAA,SASCmC,OATPtE,EAAMyE,EAAA9G,OASO,OAAN2G,EAANtE,EAAQwB,WAAI,EAAZ8C,EAAe,IAAG,KAAA,GAER,OAFQG,EAAAjH,KAAA,GAEzBH,EAAOQ,UAAU4G,EAAA/C,OAAA,IAAA,KAAA,GAAA,IAAA,MAAA,OAAA+C,EAAA1G,OAAA,GAAAoG,EAAA3H,KAAA,CAAA,CAAA,EAAA,CAAA,GAAA,KAEpB,KAnBe,OAmBf,SAnBekI,GAAA,OAAAR,EAAAlG,MAAAxB,KAAAyB,UAAA,CAAA,CAAA,GAAApB,EAqBV8H,sBAAqB,WAAA,IAAAC,EAAA3H,EAAAC,IAAAC,MAA3B,SAAA0H,EAAAC,GAAA,IAAAC,EAAA1H,EAAA,OAAAH,IAAAI,MAAA,SAAA0H,GAAA,cAAAA,EAAAxH,KAAAwH,EAAAvH,MAAA,KAAA,EAAgD,OAAlBsH,EAAkBD,EAAlBC,mBAAkBC,EAAAvH,KAAA,EACxCjB,KAAKwE,oBAAmB,KAAA,EAAA,OAAAgE,EAAAvH,KAAA,EAETjB,KAAKC,KAAKiB,UAAS,KAAA,EAA5B,OAANL,EAAM2H,EAAArH,KAAAqH,EAAAxH,KAAA,EAAAwH,EAAAvH,KAAA,EAGmBJ,EAAOO,MAAK,8SASvC,CAACkB,KAAKoD,UAAU,CAAC6C,KAAsB,IAAIE,MAAOC,gBACnD,KAAA,EAVmB,OAAAF,EAAA7C,OAYbgD,SAZaH,EAAArH,KAYE6D,KAAKjD,OAAS,GAAC,KAAA,GAEwB,OAFxByG,EAAAxH,KAAA,GAAAwH,EAAAI,GAAAJ,EAAA,MAAA,GAErCzB,QAAQC,IAAI,yCAAwCwB,EAAAI,IAASJ,EAAA7C,OAAA,UACtD,GAAK,KAAA,GAEK,OAFL6C,EAAAxH,KAAA,GAEZH,EAAOQ,UAAUmH,EAAAtD,OAAA,IAAA,KAAA,GAAA,IAAA,MAAA,OAAAsD,EAAAjH,OAAA,GAAA8G,EAAArI,KAAA,CAAA,CAAA,EAAA,GAAA,GAAA,KAEpB,KAzB0B,OAyB1B,SAzB0B6I,GAAA,OAAAT,EAAA5G,MAAAxB,KAAAyB,UAAA,CAAA,CAAA,GAAApB,EA2BrByI,oBAAmB,WAAA,IAAAC,EAAAtI,EAAAC,IAAAC,MAAzB,SAAAqI,EAAAC,GAAA,IAAApC,EAAAqC,EAAAhF,EAAArD,EAAAsI,EAAAR,EAAAS,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA1B,EAAA2B,EAAAC,EAAAxG,EAAAyG,EAAAC,EAAA,OAAAnJ,IAAAI,MAAA,SAAAgJ,GAAA,cAAAA,EAAA9I,KAAA8I,EAAA7I,MAAA,KAAA,EAGU,OAFR4F,EAAQoC,EAARpC,SACAqC,EAAQD,EAARC,SACAhF,EAAQ+E,EAAR/E,SAAQ4F,EAAA7I,KAAA,EAMFjB,KAAKwE,oBAAmB,KAAA,EACwD,OAAtFuC,QAAQC,IAAI,sCAAuC1E,KAAKoD,UAAUwD,EAAU,KAAM,IAAIY,EAAA7I,KAAA,EAEjEjB,KAAKC,KAAKiB,UAAS,KAAA,EAQY,OAR9CL,EAAMiJ,EAAA3I,KAAA2I,EAAA9I,KAAA,EAGJmI,EAAiBY,EACpBC,WAAW,UACXC,OAAO3H,KAAKoD,UAAU,CAAEvB,KAAM+E,EAAUrC,SAAAA,EAAU3C,SAAAA,KAClDgG,OAAO,OAEVnD,QAAQC,IAAI,qBAAsBmC,GAAgBW,EAAA7I,KAAA,GAErBJ,EAAOO,MAAK,iQASvC,CAACkB,KAAKoD,UAAU,CAACyD,KAAkB,IAAIV,MAAOC,gBAC/C,KAAA,GAVmB,MAAdC,EAAcmB,EAAA3I,MAYD6D,KAAKjD,OAAS,GAAC,CAAA+H,EAAA7I,KAAA,GAAA,KAAA,CAa2D,OAZ3F8F,QAAQC,IAAI,qBAAsB1E,KAAKoD,UAAUiD,EAAe3D,KAAK,GAAI,KAAM,IACzEwE,EAAelH,KAAKC,aAAK6G,EAACT,EAAe3D,KAAK,WAApBoE,EAAwBe,gBAClDV,EAAcnH,KAAKC,aAAK8G,EAACV,EAAe3D,KAAK,WAApBqE,EAAwBe,eACjDrC,EAAkC,OAAzBuB,EAAGX,EAAe3D,KAAK,SAAE,EAAtBsE,EAAwBe,WAE1CtD,QAAQC,IAAI,mBAAoB1E,KAAKoD,UAAU8D,EAAc,KAAM,IACnEzC,QAAQC,IAAI,kBAAmB1E,KAAKoD,UAAU+D,EAAa,KAAM,IACjE1C,QAAQC,IAAI,gBAAiBe,GAEvB2B,EAAoBF,EAAac,WAAU,SAAAC,GAAG,OAAIA,IAAQpB,KAC1DQ,EAA0BF,EAAYC,GAE5C3C,QAAQC,IAAI,8BAA+B,CAAE2C,wBAAAA,EAAyBD,kBAAAA,IAAqBI,EAAA7I,KAAA,GAElEJ,EAAOO,+MAQ9B,CAACyF,MAAc8C,EAAuB,IAAK,IAAIlB,KAAKV,GAAWW,gBAChE,KAAA,GAEgC,GAX3BvF,EAAU2G,EAAA3I,KAWhB4F,QAAQC,IAAI,qBAEmB,IAA3B7D,EAAW6B,KAAKjD,OAAY,CAAA+H,EAAA7I,KAAA,GAAA,KAAA,CACM,OAApC8F,QAAQC,IAAI,wBAAwB8C,EAAAnE,OAAA,SAC7B,MAAI,KAAA,GAMsE,GAH7EiE,EAAoBtH,KAAKC,aAAKgH,EAACpG,EAAW6B,KAAK,WAAhBuE,EAAoBlH,SACnDwH,EAAqBD,EAAkBxG,MAAK,SAAAoH,GAAI,OAAIA,EAAKlH,aAAeqG,KAE9E5C,QAAQC,IAAI,yBAA0B1E,KAAKoD,UAAUmE,EAAoB,KAAM,KAE3EA,EAAkB,CAAAC,EAAA7I,KAAA,GAAA,KAAA,CAAA,OAAA6I,EAAAnE,OACbkE,SAAAA,EAAmBrG,QAAM,KAAA,GAAA,OAAAsG,EAAAnE,OAAA,SAI7B,MAAI,KAAA,GAEgD,OAFhDmE,EAAA9I,KAAA,GAAA8I,EAAAlB,GAAAkB,EAAA,MAAA,GAEX/C,QAAQC,IAAI,uCAAsC8C,EAAAlB,IAASkB,EAAAnE,OAAA,SACpD,MAAI,KAAA,GAEM,OAFNmE,EAAA9I,KAAA,GAEXH,EAAOQ,UAAUyI,EAAA5E,OAAA,IAAA,KAAA,GAAA,IAAA,MAAA,OAAA4E,EAAAvI,OAAA,GAAAyH,EAAAhJ,KAAA,CAAA,CAAA,EAAA,GAAA,GAAA,KAEpB,KApFwB,OAoFxB,SApFwByK,GAAA,OAAA1B,EAAAvH,MAAAxB,KAAAyB,UAAA,CAAA,CAAA,GAAApB,EAsFnBqK,iBAAgB,WAAA,IAAAC,EAAAlK,EAAAC,IAAAC,MAAtB,SAAAiK,EAAAC,GAAA,IAAAhE,EAAAiE,EAAAC,EAAAlK,EAAAmK,EAAAxH,EAAA,OAAA9C,IAAAI,MAAA,SAAAmK,GAAA,cAAAA,EAAAjK,KAAAiK,EAAAhK,MAAA,KAAA,EAGS,OAFP4F,EAAQgE,EAARhE,SACAiE,EAASD,EAATC,UACAC,EAAOF,EAAPE,QAAOE,EAAAhK,KAAA,EAMDjB,KAAKwE,oBAAmB,KAAA,EACF,OAA5BuC,QAAQC,IAAI,gBAAgBiE,EAAAhK,KAAA,EACPjB,KAAKC,KAAKiB,UAAS,KAAA,EAA5B,GAANL,EAAMoK,EAAA9J,KAAA8J,EAAAjK,KAAA,GAGNhB,KAAKE,mBAAkB,CAAA+K,EAAAhK,KAAA,GAAA,KAAA,CAAA,OAAAgK,EAAAhK,KAAA,GAEJJ,EAAOO,MAAK,2PAO1B0J,EAAS,sBAAyBA,EAAUpC,cAAa,IAAM,IAC/DqC,mBAAAA,EAAgCA,sBAAAA,EAAQrC,kBAAmB,IAAE,gWAYlE,CAAC7B,EAAU7G,KAAKE,qBACjB,KAAA,GAE8D,OAvBzDsD,EAAMyH,EAAA9J,KAuBZ4F,QAAQC,IAAI,YAAa1E,KAAKoD,UAAUlC,EAAOwB,KAAM,KAAM,IAAIiG,EAAAtF,OAExD,SAAA3F,KAAKgC,gBAAgBwB,EAAOwB,OAAK,KAAA,GAAA,OAAAiG,EAAAhK,KAAA,GAIrBJ,EAAOO,MAUrB0J,wRAAAA,EAAkCA,sBAAAA,EAAUpC,cAAmB,IAAA,IAC/DqC,iBAAAA,EAAgCA,sBAAAA,EAAQrC,cAAmB,IAAA,IAEhE,uCAAA,CAAC7B,IACF,KAAA,GAE8D,OAhBzDrD,EAAMyH,EAAA9J,KAgBZ4F,QAAQC,IAAI,YAAa1E,KAAKoD,UAAUlC,EAAOwB,KAAM,KAAM,IAAIiG,EAAAtF,OAExD,SAAA3F,KAAKgC,gBAAgBwB,EAAOwB,OAAK,KAAA,GAEe,OAFfiG,EAAAjK,KAAA,GAAAiK,EAAArC,GAAAqC,EAAA,MAAA,GAExClE,QAAQC,IAAI,mCAAkCiE,EAAArC,IAASqC,EAAAtF,OAAA,SAChD,IAAE,KAAA,GAEQ,OAFRsF,EAAAjK,KAAA,GAETH,EAAOQ,UAAU4J,EAAA/F,OAAA,IAAA,KAAA,GAAA,IAAA,MAAA,OAAA+F,EAAA1J,OAAA,GAAAqJ,EAAA5K,KAAA,CAAA,CAAA,EAAA,GAAA,GAAA,KAEpB,KAtEqB,OAsErB,SAtEqBkL,GAAA,OAAAP,EAAAnJ,MAAAxB,KAAAyB,UAAA,CAAA,CAAA,GAAApB,EAwEhB8K,aAAY,WAAA,IAAAC,EAAA3K,EAAAC,IAAAC,MAAlB,SAAA0K,EAAAC,GAAA,IAAArJ,EAAApB,EAAA0K,EAAAC,EAAAC,EAAAC,EAAA1L,KAAA,OAAAU,IAAAI,MAAA,SAAA6K,GAAA,cAAAA,EAAA3K,KAAA2K,EAAA1K,MAAA,KAAA,EAA6B,OAARgB,EAAQqJ,EAARrJ,SAAQ0J,EAAA1K,KAAA,EACrBjB,KAAKwE,oBAAmB,KAAA,EAAA,OAAAmH,EAAA1K,KAAA,EAETjB,KAAKC,KAAKiB,UAAS,KAAA,EAA5B,OAANL,EAAM8K,EAAAxK,KAAAwK,EAAA3K,KAAA,EAAA2K,EAAA1K,KAAA,EAEJJ,EAAOO,MAAM,SAAQ,KAAA,EAAAmK,EAAA7K,IAAAC,eAAA4K,IAAA,IAAA5I,EAAA4B,EAAAlC,EAAAO,EAAAmF,EAAAlB,EAAA4C,EAAAD,EAAAxF,EAAA4H,EAAAC,EAAAC,EAAAC,EAAAxD,EAAAyD,EAAAC,EAAAC,EAAA,OAAAxL,IAAAI,MAAA,SAAAqL,GAAA,cAAAA,EAAAnL,KAAAmL,EAAAlL,MAAA,KAAA,EAoBC,GAnBjB0B,EAAO8I,EAAA1H,MAChBgD,QAAQC,IAAI,qBAAsB1E,KAAKoD,UAAU/C,EAAS,KAAM,IACxD4B,EAAuF5B,EAAvF4B,GAAIlC,EAAmFM,EAAnFN,QAASO,EAA0ED,EAA1EC,KAAMmF,EAAoEpF,EAApEoF,UAAWlB,EAAyDlE,EAAzDkE,SAAU4C,EAA+C9G,EAA/C8G,YAAaD,EAAkC7G,EAAlC6G,aAAoBoC,EAAcjJ,EAAdiJ,UAC7EC,EAAS,KACA,UAF8D7H,EAAoBrB,EAApBqB,QAGnE+H,EAAuB,cAATnJ,UAAwBkJ,EAAAzJ,EAA4B,WAA5ByJ,EAAgCnK,OAAQ,GAAMU,EAC1FwJ,EAASH,EAAKhK,eAAeqK,IAIzBxD,EAAqBiB,EACvBA,EAAatH,KAAI,SAACiC,EAAMiI,GAAK,OAC3BrC,EACGC,WAAW,UACXC,OAAO3H,KAAKoD,UAAU,CAAEvB,KAAAA,EAAM0C,SAAAA,EAAU3C,SAAU0H,MAAAA,OAAAA,EAAAA,EAAYQ,MAC9DlC,OAAO,MAAM,IAElB,KAEA8B,GAAiB,EACC,MAAlBzD,IAAAA,EAAoBxG,OAAM,CAAAoK,EAAAlL,KAAA,GAAA,KAAA,CAE5B+K,GAAiB,EACRC,EAAI,EAAC,KAAA,GAAA,KAAEA,EAAI1D,EAAmBxG,QAAM,CAAAoK,EAAAlL,KAAA,GAAA,KAAA,CAAA,OAAAkL,EAAAlL,KAAA,GACrByK,EAAKvD,sBAAsB,CAC/CI,mBAAoBA,EAAmB0D,KACvC,KAAA,GAFW,GAAAE,EAAAhL,KAGD,CAAAgL,EAAAlL,KAAA,GAAA,KAAA,CACa,OAAvB+K,GAAiB,EAAMG,EAAAxG,OAAA,QAAA,IAAA,KAAA,GALoBsG,IAAGE,EAAAlL,KAAA,GAAA,MAAA,KAAA,GAiBnB,OAN3BiL,EAAwB1C,EAE1BwC,EACEjE,EACA,IAAIU,KAAKV,EAAUsE,UAAY,KAHjC,KAKJtF,QAAQC,IAAI,qBAAqBmF,EAAAlL,KAAA,GAE3BJ,EAAOO,MAAK,8PAKhB,CACEmD,EACAjC,KAAKoD,UAAUrD,GACfO,EACAmF,EAAUW,cACV7B,EACAvE,KAAKoD,UAAU+D,GACfnH,KAAKoD,UAAU6C,GACfvE,EACA6H,EACAK,MAAAA,OAAAA,EAAAA,EAAsBxD,gBAEzB,KAAA,GAAA,IAAA,MAAA,OAAAyD,EAAA5K,OAAA,GAAAgK,EAAA,IAAAC,EAAAnH,EA3DmBpC,GAAQ,KAAA,GAAA,IAAAwJ,EAAAD,KAAAlH,KAAA,CAAAqH,EAAA1K,KAAA,GAAA,KAAA,CAAA,OAAA0K,EAAAW,cAAAf,IAAA,KAAA,IAAA,KAAA,GAAAI,EAAA1K,KAAA,GAAA,MAAA,KAAA,GA6DE,OAAhC8F,QAAQC,IAAI,oBAAoB2E,EAAA1K,KAAA,GAC1BJ,EAAOO,MAAM,UAAS,KAAA,GAAA,OAAAuK,EAAAhG,OAAA,SACrB1D,GAAQ,KAAA,GAAA,OAAA0J,EAAA3K,KAAA,GAAA2K,EAAAY,GAAAZ,EAAA,MAAA,GAAAA,EAAA1K,KAAA,GAETJ,EAAOO,MAAM,YAAW,KAAA,GAAA,MAAAuK,EAAAY,GAAA,KAAA,GAGb,OAHaZ,EAAA3K,KAAA,GAG9BH,EAAOQ,UAAUsK,EAAAzG,OAAA,IAAA,KAAA,GAAA,IAAA,MAAA,OAAAyG,EAAApK,OAAA,GAAA8J,EAAArL,KAAA,CAAA,CAAA,EAAA,GAAA,GAAA,KAEpB,KA5EiB,OA4EjB,SA5EiBwM,GAAA,OAAApB,EAAA5J,MAAAxB,KAAAyB,UAAA,CAAA,CAAA,GAAApB,EA8EZoM,YAAW,WAAA,IAAAC,EAAAjM,EAAAC,IAAAC,MAAjB,SAAAgM,EAAAC,GAAA,IAAA/F,EAAAhG,EAAAoB,EAAA4K,EAAA,OAAAnM,IAAAI,MAAA,SAAAgM,GAAA,cAAAA,EAAA9L,KAAA8L,EAAA7L,MAAA,KAAA,EAA4B,OAAR4F,EAAQ+F,EAAR/F,SAAQiG,EAAA7L,KAAA,EACpBjB,KAAKwE,oBAAmB,KAAA,EAAA,OAAAsI,EAAA7L,KAAA,EAETjB,KAAKC,KAAKiB,UAAS,KAAA,EAA5B,OAANL,EAAMiM,EAAA3L,KAAA2L,EAAA9L,KAAA,EAAA8L,EAAA7L,KAAA,EAEWJ,EAAOO,+WAa1B,CAACyF,IACF,KAAA,EAGoD,OAD/C5E,EAAWjC,KAAKgC,gBAhBV8K,EAAA3L,KAgBiC6D,MACvC6H,EAAa7M,KAAKwC,oBAAoBP,GAAS6K,EAAAnH,OAE9C,SAAA,CAAE1D,SAAAA,EAAU4K,WAAAA,IAAY,KAAA,GAEd,OAFcC,EAAA9L,KAAA,GAE/BH,EAAOQ,UAAUyL,EAAA5H,OAAA,IAAA,KAAA,GAAA,IAAA,MAAA,OAAA4H,EAAAvL,OAAA,GAAAoL,EAAA3M,KAAA,CAAA,CAAA,EAAA,CAAA,GAAA,KAEpB,KA5BgB,OA4BhB,SA5BgB+M,GAAA,OAAAL,EAAAlL,MAAAxB,KAAAyB,UAAA,CAAA,CAAA,GAAA7B,CAAA,EA1iBWoN,EAAYA"}