@emdashcodes/mem0-claude-code
Version:
The Memory Layer For Your AI Apps - Fork with Claude Code LLM provider support
1 lines • 42.3 kB
Source Map (JSON)
{"version":3,"sources":["../src/client/mem0.ts","../src/client/telemetry.ts","../src/client/index.ts"],"sourcesContent":["import axios from \"axios\";\nimport {\n AllUsers,\n ProjectOptions,\n Memory,\n MemoryHistory,\n MemoryOptions,\n MemoryUpdateBody,\n ProjectResponse,\n PromptUpdatePayload,\n SearchOptions,\n Webhook,\n WebhookPayload,\n Message,\n FeedbackPayload,\n CreateMemoryExportPayload,\n GetMemoryExportPayload,\n} from \"./mem0.types\";\nimport { captureClientEvent, generateHash } from \"./telemetry\";\n\nclass APIError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"APIError\";\n }\n}\n\ninterface ClientOptions {\n apiKey: string;\n host?: string;\n organizationName?: string;\n projectName?: string;\n organizationId?: string;\n projectId?: string;\n}\n\nexport default class MemoryClient {\n apiKey: string;\n host: string;\n organizationName: string | null;\n projectName: string | null;\n organizationId: string | number | null;\n projectId: string | number | null;\n headers: Record<string, string>;\n client: any;\n telemetryId: string;\n\n _validateApiKey(): any {\n if (!this.apiKey) {\n throw new Error(\"Mem0 API key is required\");\n }\n if (typeof this.apiKey !== \"string\") {\n throw new Error(\"Mem0 API key must be a string\");\n }\n if (this.apiKey.trim() === \"\") {\n throw new Error(\"Mem0 API key cannot be empty\");\n }\n }\n\n _validateOrgProject(): void {\n // Check for organizationName/projectName pair\n if (\n (this.organizationName === null && this.projectName !== null) ||\n (this.organizationName !== null && this.projectName === null)\n ) {\n console.warn(\n \"Warning: Both organizationName and projectName must be provided together when using either. This will be removed from version 1.0.40. Note that organizationName/projectName are being deprecated in favor of organizationId/projectId.\",\n );\n }\n\n // Check for organizationId/projectId pair\n if (\n (this.organizationId === null && this.projectId !== null) ||\n (this.organizationId !== null && this.projectId === null)\n ) {\n console.warn(\n \"Warning: Both organizationId and projectId must be provided together when using either. This will be removed from version 1.0.40.\",\n );\n }\n }\n\n constructor(options: ClientOptions) {\n this.apiKey = options.apiKey;\n this.host = options.host || \"https://api.mem0.ai\";\n this.organizationName = options.organizationName || null;\n this.projectName = options.projectName || null;\n this.organizationId = options.organizationId || null;\n this.projectId = options.projectId || null;\n\n this.headers = {\n Authorization: `Token ${this.apiKey}`,\n \"Content-Type\": \"application/json\",\n };\n\n this.client = axios.create({\n baseURL: this.host,\n headers: { Authorization: `Token ${this.apiKey}` },\n timeout: 60000,\n });\n\n this._validateApiKey();\n\n // Initialize with a temporary ID that will be updated\n this.telemetryId = \"\";\n\n // Initialize the client\n this._initializeClient();\n }\n\n private async _initializeClient() {\n try {\n // Generate telemetry ID\n await this.ping();\n\n if (!this.telemetryId) {\n this.telemetryId = generateHash(this.apiKey);\n }\n\n this._validateOrgProject();\n\n // Capture initialization event\n captureClientEvent(\"init\", this, {\n api_version: \"v1\",\n client_type: \"MemoryClient\",\n }).catch((error: any) => {\n console.error(\"Failed to capture event:\", error);\n });\n } catch (error: any) {\n console.error(\"Failed to initialize client:\", error);\n await captureClientEvent(\"init_error\", this, {\n error: error?.message || \"Unknown error\",\n stack: error?.stack || \"No stack trace\",\n });\n }\n }\n\n private _captureEvent(methodName: string, args: any[]) {\n captureClientEvent(methodName, this, {\n success: true,\n args_count: args.length,\n keys: args.length > 0 ? args[0] : [],\n }).catch((error: any) => {\n console.error(\"Failed to capture event:\", error);\n });\n }\n\n async _fetchWithErrorHandling(url: string, options: any): Promise<any> {\n const response = await fetch(url, {\n ...options,\n headers: {\n ...options.headers,\n Authorization: `Token ${this.apiKey}`,\n \"Mem0-User-ID\": this.telemetryId,\n },\n });\n if (!response.ok) {\n const errorData = await response.text();\n throw new APIError(`API request failed: ${errorData}`);\n }\n const jsonResponse = await response.json();\n return jsonResponse;\n }\n\n _preparePayload(messages: Array<Message>, options: MemoryOptions): object {\n const payload: any = {};\n payload.messages = messages;\n return { ...payload, ...options };\n }\n\n _prepareParams(options: MemoryOptions): object {\n return Object.fromEntries(\n Object.entries(options).filter(([_, v]) => v != null),\n );\n }\n\n async ping(): Promise<void> {\n try {\n const response = await this._fetchWithErrorHandling(\n `${this.host}/v1/ping/`,\n {\n method: \"GET\",\n headers: {\n Authorization: `Token ${this.apiKey}`,\n },\n },\n );\n\n if (!response || typeof response !== \"object\") {\n throw new APIError(\"Invalid response format from ping endpoint\");\n }\n\n if (response.status !== \"ok\") {\n throw new APIError(response.message || \"API Key is invalid\");\n }\n\n const { org_id, project_id, user_email } = response;\n\n // Only update if values are actually present\n if (org_id && !this.organizationId) this.organizationId = org_id;\n if (project_id && !this.projectId) this.projectId = project_id;\n if (user_email) this.telemetryId = user_email;\n } catch (error: any) {\n // Convert generic errors to APIError with meaningful messages\n if (error instanceof APIError) {\n throw error;\n } else {\n throw new APIError(\n `Failed to ping server: ${error.message || \"Unknown error\"}`,\n );\n }\n }\n }\n\n async add(\n messages: Array<Message>,\n options: MemoryOptions = {},\n ): Promise<Array<Memory>> {\n if (this.telemetryId === \"\") await this.ping();\n this._validateOrgProject();\n if (this.organizationName != null && this.projectName != null) {\n options.org_name = this.organizationName;\n options.project_name = this.projectName;\n }\n\n if (this.organizationId != null && this.projectId != null) {\n options.org_id = this.organizationId;\n options.project_id = this.projectId;\n\n if (options.org_name) delete options.org_name;\n if (options.project_name) delete options.project_name;\n }\n\n if (options.api_version) {\n options.version = options.api_version.toString() || \"v2\";\n }\n\n const payload = this._preparePayload(messages, options);\n\n // get payload keys whose value is not null or undefined\n const payloadKeys = Object.keys(payload);\n this._captureEvent(\"add\", [payloadKeys]);\n\n const response = await this._fetchWithErrorHandling(\n `${this.host}/v1/memories/`,\n {\n method: \"POST\",\n headers: this.headers,\n body: JSON.stringify(payload),\n },\n );\n return response;\n }\n\n async update(\n memoryId: string,\n { text, metadata }: { text?: string; metadata?: Record<string, any> },\n ): Promise<Array<Memory>> {\n if (text === undefined && metadata === undefined) {\n throw new Error(\"Either text or metadata must be provided for update.\");\n }\n\n if (this.telemetryId === \"\") await this.ping();\n this._validateOrgProject();\n const payload = {\n text: text,\n metadata: metadata,\n };\n\n const payloadKeys = Object.keys(payload);\n this._captureEvent(\"update\", [payloadKeys]);\n\n const response = await this._fetchWithErrorHandling(\n `${this.host}/v1/memories/${memoryId}/`,\n {\n method: \"PUT\",\n headers: this.headers,\n body: JSON.stringify(payload),\n },\n );\n return response;\n }\n\n async get(memoryId: string): Promise<Memory> {\n if (this.telemetryId === \"\") await this.ping();\n this._captureEvent(\"get\", []);\n return this._fetchWithErrorHandling(\n `${this.host}/v1/memories/${memoryId}/`,\n {\n headers: this.headers,\n },\n );\n }\n\n async getAll(options?: SearchOptions): Promise<Array<Memory>> {\n if (this.telemetryId === \"\") await this.ping();\n this._validateOrgProject();\n const payloadKeys = Object.keys(options || {});\n this._captureEvent(\"get_all\", [payloadKeys]);\n const { api_version, page, page_size, ...otherOptions } = options!;\n if (this.organizationName != null && this.projectName != null) {\n otherOptions.org_name = this.organizationName;\n otherOptions.project_name = this.projectName;\n }\n\n let appendedParams = \"\";\n let paginated_response = false;\n\n if (page && page_size) {\n appendedParams += `page=${page}&page_size=${page_size}`;\n paginated_response = true;\n }\n\n if (this.organizationId != null && this.projectId != null) {\n otherOptions.org_id = this.organizationId;\n otherOptions.project_id = this.projectId;\n\n if (otherOptions.org_name) delete otherOptions.org_name;\n if (otherOptions.project_name) delete otherOptions.project_name;\n }\n\n if (api_version === \"v2\") {\n let url = paginated_response\n ? `${this.host}/v2/memories/?${appendedParams}`\n : `${this.host}/v2/memories/`;\n return this._fetchWithErrorHandling(url, {\n method: \"POST\",\n headers: this.headers,\n body: JSON.stringify(otherOptions),\n });\n } else {\n // @ts-ignore\n const params = new URLSearchParams(this._prepareParams(otherOptions));\n const url = paginated_response\n ? `${this.host}/v1/memories/?${params}&${appendedParams}`\n : `${this.host}/v1/memories/?${params}`;\n return this._fetchWithErrorHandling(url, {\n headers: this.headers,\n });\n }\n }\n\n async search(query: string, options?: SearchOptions): Promise<Array<Memory>> {\n if (this.telemetryId === \"\") await this.ping();\n this._validateOrgProject();\n const payloadKeys = Object.keys(options || {});\n this._captureEvent(\"search\", [payloadKeys]);\n const { api_version, ...otherOptions } = options!;\n const payload = { query, ...otherOptions };\n if (this.organizationName != null && this.projectName != null) {\n payload.org_name = this.organizationName;\n payload.project_name = this.projectName;\n }\n\n if (this.organizationId != null && this.projectId != null) {\n payload.org_id = this.organizationId;\n payload.project_id = this.projectId;\n\n if (payload.org_name) delete payload.org_name;\n if (payload.project_name) delete payload.project_name;\n }\n const endpoint =\n api_version === \"v2\" ? \"/v2/memories/search/\" : \"/v1/memories/search/\";\n const response = await this._fetchWithErrorHandling(\n `${this.host}${endpoint}`,\n {\n method: \"POST\",\n headers: this.headers,\n body: JSON.stringify(payload),\n },\n );\n return response;\n }\n\n async delete(memoryId: string): Promise<{ message: string }> {\n if (this.telemetryId === \"\") await this.ping();\n this._captureEvent(\"delete\", []);\n return this._fetchWithErrorHandling(\n `${this.host}/v1/memories/${memoryId}/`,\n {\n method: \"DELETE\",\n headers: this.headers,\n },\n );\n }\n\n async deleteAll(options: MemoryOptions = {}): Promise<{ message: string }> {\n if (this.telemetryId === \"\") await this.ping();\n this._validateOrgProject();\n const payloadKeys = Object.keys(options || {});\n this._captureEvent(\"delete_all\", [payloadKeys]);\n if (this.organizationName != null && this.projectName != null) {\n options.org_name = this.organizationName;\n options.project_name = this.projectName;\n }\n\n if (this.organizationId != null && this.projectId != null) {\n options.org_id = this.organizationId;\n options.project_id = this.projectId;\n\n if (options.org_name) delete options.org_name;\n if (options.project_name) delete options.project_name;\n }\n // @ts-ignore\n const params = new URLSearchParams(this._prepareParams(options));\n const response = await this._fetchWithErrorHandling(\n `${this.host}/v1/memories/?${params}`,\n {\n method: \"DELETE\",\n headers: this.headers,\n },\n );\n return response;\n }\n\n async history(memoryId: string): Promise<Array<MemoryHistory>> {\n if (this.telemetryId === \"\") await this.ping();\n this._captureEvent(\"history\", []);\n const response = await this._fetchWithErrorHandling(\n `${this.host}/v1/memories/${memoryId}/history/`,\n {\n headers: this.headers,\n },\n );\n return response;\n }\n\n async users(): Promise<AllUsers> {\n if (this.telemetryId === \"\") await this.ping();\n this._validateOrgProject();\n this._captureEvent(\"users\", []);\n const options: MemoryOptions = {};\n if (this.organizationName != null && this.projectName != null) {\n options.org_name = this.organizationName;\n options.project_name = this.projectName;\n }\n\n if (this.organizationId != null && this.projectId != null) {\n options.org_id = this.organizationId;\n options.project_id = this.projectId;\n\n if (options.org_name) delete options.org_name;\n if (options.project_name) delete options.project_name;\n }\n // @ts-ignore\n const params = new URLSearchParams(options);\n const response = await this._fetchWithErrorHandling(\n `${this.host}/v1/entities/?${params}`,\n {\n headers: this.headers,\n },\n );\n return response;\n }\n\n /**\n * @deprecated The method should not be used, use `deleteUsers` instead. This will be removed in version 2.2.0.\n */\n async deleteUser(data: {\n entity_id: number;\n entity_type: string;\n }): Promise<{ message: string }> {\n if (this.telemetryId === \"\") await this.ping();\n this._captureEvent(\"delete_user\", []);\n if (!data.entity_type) {\n data.entity_type = \"user\";\n }\n const response = await this._fetchWithErrorHandling(\n `${this.host}/v1/entities/${data.entity_type}/${data.entity_id}/`,\n {\n method: \"DELETE\",\n headers: this.headers,\n },\n );\n return response;\n }\n\n async deleteUsers(\n params: {\n user_id?: string;\n agent_id?: string;\n app_id?: string;\n run_id?: string;\n } = {},\n ): Promise<{ message: string }> {\n if (this.telemetryId === \"\") await this.ping();\n this._validateOrgProject();\n\n let to_delete: Array<{ type: string; name: string }> = [];\n const { user_id, agent_id, app_id, run_id } = params;\n\n if (user_id) {\n to_delete = [{ type: \"user\", name: user_id }];\n } else if (agent_id) {\n to_delete = [{ type: \"agent\", name: agent_id }];\n } else if (app_id) {\n to_delete = [{ type: \"app\", name: app_id }];\n } else if (run_id) {\n to_delete = [{ type: \"run\", name: run_id }];\n } else {\n const entities = await this.users();\n to_delete = entities.results.map((entity) => ({\n type: entity.type,\n name: entity.name,\n }));\n }\n\n if (to_delete.length === 0) {\n throw new Error(\"No entities to delete\");\n }\n\n const requestOptions: MemoryOptions = {};\n if (this.organizationName != null && this.projectName != null) {\n requestOptions.org_name = this.organizationName;\n requestOptions.project_name = this.projectName;\n }\n\n if (this.organizationId != null && this.projectId != null) {\n requestOptions.org_id = this.organizationId;\n requestOptions.project_id = this.projectId;\n\n if (requestOptions.org_name) delete requestOptions.org_name;\n if (requestOptions.project_name) delete requestOptions.project_name;\n }\n\n // Delete each entity and handle errors\n for (const entity of to_delete) {\n try {\n await this.client.delete(\n `/v2/entities/${entity.type}/${entity.name}/`,\n {\n params: requestOptions,\n },\n );\n } catch (error: any) {\n throw new APIError(\n `Failed to delete ${entity.type} ${entity.name}: ${error.message}`,\n );\n }\n }\n\n this._captureEvent(\"delete_users\", [\n {\n user_id: user_id,\n agent_id: agent_id,\n app_id: app_id,\n run_id: run_id,\n sync_type: \"sync\",\n },\n ]);\n\n return {\n message:\n user_id || agent_id || app_id || run_id\n ? \"Entity deleted successfully.\"\n : \"All users, agents, apps and runs deleted.\",\n };\n }\n\n async batchUpdate(memories: Array<MemoryUpdateBody>): Promise<string> {\n if (this.telemetryId === \"\") await this.ping();\n this._captureEvent(\"batch_update\", []);\n const memoriesBody = memories.map((memory) => ({\n memory_id: memory.memoryId,\n text: memory.text,\n }));\n const response = await this._fetchWithErrorHandling(\n `${this.host}/v1/batch/`,\n {\n method: \"PUT\",\n headers: this.headers,\n body: JSON.stringify({ memories: memoriesBody }),\n },\n );\n return response;\n }\n\n async batchDelete(memories: Array<string>): Promise<string> {\n if (this.telemetryId === \"\") await this.ping();\n this._captureEvent(\"batch_delete\", []);\n const memoriesBody = memories.map((memory) => ({\n memory_id: memory,\n }));\n const response = await this._fetchWithErrorHandling(\n `${this.host}/v1/batch/`,\n {\n method: \"DELETE\",\n headers: this.headers,\n body: JSON.stringify({ memories: memoriesBody }),\n },\n );\n return response;\n }\n\n async getProject(options: ProjectOptions): Promise<ProjectResponse> {\n if (this.telemetryId === \"\") await this.ping();\n this._validateOrgProject();\n const payloadKeys = Object.keys(options || {});\n this._captureEvent(\"get_project\", [payloadKeys]);\n const { fields } = options;\n\n if (!(this.organizationId && this.projectId)) {\n throw new Error(\n \"organizationId and projectId must be set to access instructions or categories\",\n );\n }\n\n const params = new URLSearchParams();\n fields?.forEach((field) => params.append(\"fields\", field));\n\n const response = await this._fetchWithErrorHandling(\n `${this.host}/api/v1/orgs/organizations/${this.organizationId}/projects/${this.projectId}/?${params.toString()}`,\n {\n headers: this.headers,\n },\n );\n return response;\n }\n\n async updateProject(\n prompts: PromptUpdatePayload,\n ): Promise<Record<string, any>> {\n if (this.telemetryId === \"\") await this.ping();\n this._validateOrgProject();\n this._captureEvent(\"update_project\", []);\n if (!(this.organizationId && this.projectId)) {\n throw new Error(\n \"organizationId and projectId must be set to update instructions or categories\",\n );\n }\n\n const response = await this._fetchWithErrorHandling(\n `${this.host}/api/v1/orgs/organizations/${this.organizationId}/projects/${this.projectId}/`,\n {\n method: \"PATCH\",\n headers: this.headers,\n body: JSON.stringify(prompts),\n },\n );\n return response;\n }\n\n // WebHooks\n async getWebhooks(data?: { projectId?: string }): Promise<Array<Webhook>> {\n if (this.telemetryId === \"\") await this.ping();\n this._captureEvent(\"get_webhooks\", []);\n const project_id = data?.projectId || this.projectId;\n const response = await this._fetchWithErrorHandling(\n `${this.host}/api/v1/webhooks/projects/${project_id}/`,\n {\n headers: this.headers,\n },\n );\n return response;\n }\n\n async createWebhook(webhook: WebhookPayload): Promise<Webhook> {\n if (this.telemetryId === \"\") await this.ping();\n this._captureEvent(\"create_webhook\", []);\n const response = await this._fetchWithErrorHandling(\n `${this.host}/api/v1/webhooks/projects/${this.projectId}/`,\n {\n method: \"POST\",\n headers: this.headers,\n body: JSON.stringify(webhook),\n },\n );\n return response;\n }\n\n async updateWebhook(webhook: WebhookPayload): Promise<{ message: string }> {\n if (this.telemetryId === \"\") await this.ping();\n this._captureEvent(\"update_webhook\", []);\n const project_id = webhook.projectId || this.projectId;\n const response = await this._fetchWithErrorHandling(\n `${this.host}/api/v1/webhooks/${webhook.webhookId}/`,\n {\n method: \"PUT\",\n headers: this.headers,\n body: JSON.stringify({\n ...webhook,\n projectId: project_id,\n }),\n },\n );\n return response;\n }\n\n async deleteWebhook(data: {\n webhookId: string;\n }): Promise<{ message: string }> {\n if (this.telemetryId === \"\") await this.ping();\n this._captureEvent(\"delete_webhook\", []);\n const webhook_id = data.webhookId || data;\n const response = await this._fetchWithErrorHandling(\n `${this.host}/api/v1/webhooks/${webhook_id}/`,\n {\n method: \"DELETE\",\n headers: this.headers,\n },\n );\n return response;\n }\n\n async feedback(data: FeedbackPayload): Promise<{ message: string }> {\n if (this.telemetryId === \"\") await this.ping();\n const payloadKeys = Object.keys(data || {});\n this._captureEvent(\"feedback\", [payloadKeys]);\n const response = await this._fetchWithErrorHandling(\n `${this.host}/v1/feedback/`,\n {\n method: \"POST\",\n headers: this.headers,\n body: JSON.stringify(data),\n },\n );\n return response;\n }\n\n async createMemoryExport(\n data: CreateMemoryExportPayload,\n ): Promise<{ message: string; id: string }> {\n if (this.telemetryId === \"\") await this.ping();\n this._captureEvent(\"create_memory_export\", []);\n\n // Return if missing filters or schema\n if (!data.filters || !data.schema) {\n throw new Error(\"Missing filters or schema\");\n }\n\n // Add Org and Project ID\n data.org_id = this.organizationId?.toString() || null;\n data.project_id = this.projectId?.toString() || null;\n\n const response = await this._fetchWithErrorHandling(\n `${this.host}/v1/exports/`,\n {\n method: \"POST\",\n headers: this.headers,\n body: JSON.stringify(data),\n },\n );\n\n return response;\n }\n\n async getMemoryExport(\n data: GetMemoryExportPayload,\n ): Promise<{ message: string; id: string }> {\n if (this.telemetryId === \"\") await this.ping();\n this._captureEvent(\"get_memory_export\", []);\n\n if (!data.memory_export_id && !data.filters) {\n throw new Error(\"Missing memory_export_id or filters\");\n }\n\n data.org_id = this.organizationId?.toString() || \"\";\n data.project_id = this.projectId?.toString() || \"\";\n\n const response = await this._fetchWithErrorHandling(\n `${this.host}/v1/exports/get/`,\n {\n method: \"POST\",\n headers: this.headers,\n body: JSON.stringify(data),\n },\n );\n return response;\n }\n}\n\nexport { MemoryClient };\n","// @ts-nocheck\nimport type { TelemetryClient, TelemetryOptions } from \"./telemetry.types\";\n\nlet version = \"2.1.36\";\n\n// Safely check for process.env in different environments\nlet MEM0_TELEMETRY = true;\ntry {\n MEM0_TELEMETRY = process?.env?.MEM0_TELEMETRY === \"false\" ? false : true;\n} catch (error) {}\nconst POSTHOG_API_KEY = \"phc_hgJkUVJFYtmaJqrvf6CYN67TIQ8yhXAkWzUn9AMU4yX\";\nconst POSTHOG_HOST = \"https://us.i.posthog.com/i/v0/e/\";\n\n// Simple hash function using random strings\nfunction generateHash(input: string): string {\n const randomStr =\n Math.random().toString(36).substring(2, 15) +\n Math.random().toString(36).substring(2, 15);\n return randomStr;\n}\n\nclass UnifiedTelemetry implements TelemetryClient {\n private apiKey: string;\n private host: string;\n\n constructor(projectApiKey: string, host: string) {\n this.apiKey = projectApiKey;\n this.host = host;\n }\n\n async captureEvent(distinctId: string, eventName: string, properties = {}) {\n if (!MEM0_TELEMETRY) return;\n\n const eventProperties = {\n client_version: version,\n timestamp: new Date().toISOString(),\n ...properties,\n $process_person_profile: false,\n $lib: \"posthog-node\",\n };\n\n const payload = {\n api_key: this.apiKey,\n distinct_id: distinctId,\n event: eventName,\n properties: eventProperties,\n };\n\n try {\n const response = await fetch(this.host, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(payload),\n });\n\n if (!response.ok) {\n console.error(\"Telemetry event capture failed:\", await response.text());\n }\n } catch (error) {\n console.error(\"Telemetry event capture failed:\", error);\n }\n }\n\n async shutdown() {\n // No shutdown needed for direct API calls\n }\n}\n\nconst telemetry = new UnifiedTelemetry(POSTHOG_API_KEY, POSTHOG_HOST);\n\nasync function captureClientEvent(\n eventName: string,\n instance: any,\n additionalData = {},\n) {\n if (!instance.telemetryId) {\n console.warn(\"No telemetry ID found for instance\");\n return;\n }\n\n const eventData = {\n function: `${instance.constructor.name}`,\n method: eventName,\n api_host: instance.host,\n timestamp: new Date().toISOString(),\n client_version: version,\n keys: additionalData?.keys || [],\n ...additionalData,\n };\n\n await telemetry.captureEvent(\n instance.telemetryId,\n `client.${eventName}`,\n eventData,\n );\n}\n\nexport { telemetry, captureClientEvent, generateHash };\n","import { MemoryClient } from \"./mem0\";\nimport type * as MemoryTypes from \"./mem0.types\";\n\n// Re-export all types from mem0.types\nexport type {\n MemoryOptions,\n ProjectOptions,\n Memory,\n MemoryHistory,\n MemoryUpdateBody,\n ProjectResponse,\n PromptUpdatePayload,\n SearchOptions,\n Webhook,\n WebhookPayload,\n Messages,\n Message,\n AllUsers,\n User,\n FeedbackPayload,\n Feedback,\n} from \"./mem0.types\";\n\n// Export the main client\nexport { MemoryClient };\nexport default MemoryClient;\n"],"mappings":"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","names":["_a"]}