{"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"]}