mem0ai 2.1.15 → 2.1.16-patch.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.
package/dist/index.d.mts CHANGED
@@ -164,7 +164,6 @@ interface ClientOptions {
164
164
  projectName?: string;
165
165
  organizationId?: string;
166
166
  projectId?: string;
167
- isExtension?: boolean;
168
167
  }
169
168
  declare class MemoryClient {
170
169
  apiKey: string;
@@ -176,7 +175,6 @@ declare class MemoryClient {
176
175
  headers: Record<string, string>;
177
176
  client: any;
178
177
  telemetryId: string;
179
- isExtension: boolean;
180
178
  _validateApiKey(): any;
181
179
  _validateOrgProject(): void;
182
180
  constructor(options: ClientOptions);
package/dist/index.d.ts CHANGED
@@ -164,7 +164,6 @@ interface ClientOptions {
164
164
  projectName?: string;
165
165
  organizationId?: string;
166
166
  projectId?: string;
167
- isExtension?: boolean;
168
167
  }
169
168
  declare class MemoryClient {
170
169
  apiKey: string;
@@ -176,7 +175,6 @@ declare class MemoryClient {
176
175
  headers: Record<string, string>;
177
176
  client: any;
178
177
  telemetryId: string;
179
- isExtension: boolean;
180
178
  _validateApiKey(): any;
181
179
  _validateOrgProject(): void;
182
180
  constructor(options: ClientOptions);
package/dist/index.js CHANGED
@@ -39,7 +39,7 @@ module.exports = __toCommonJS(index_exports);
39
39
  var import_axios = __toESM(require("axios"));
40
40
 
41
41
  // src/client/telemetry.ts
42
- var version = "2.1.12";
42
+ var version = "2.1.16";
43
43
  var MEM0_TELEMETRY = true;
44
44
  var _a;
45
45
  try {
@@ -150,7 +150,6 @@ var MemoryClient = class {
150
150
  this.projectName = options.projectName || null;
151
151
  this.organizationId = options.organizationId || null;
152
152
  this.projectId = options.projectId || null;
153
- this.isExtension = options.isExtension || false;
154
153
  this.headers = {
155
154
  Authorization: `Token ${this.apiKey}`,
156
155
  "Content-Type": "application/json"
@@ -195,16 +194,13 @@ var MemoryClient = class {
195
194
  });
196
195
  }
197
196
  async _fetchWithErrorHandling(url, options) {
198
- const headers = {
199
- ...options.headers,
200
- Authorization: `Token ${this.apiKey}`
201
- };
202
- if (!this.isExtension) {
203
- headers["mem0-user-id"] = this.telemetryId;
204
- }
205
197
  const response = await fetch(url, {
206
198
  ...options,
207
- headers
199
+ headers: {
200
+ ...options.headers,
201
+ Authorization: `Token ${this.apiKey}`,
202
+ "Mem0-User-ID": this.telemetryId
203
+ }
208
204
  });
209
205
  if (!response.ok) {
210
206
  const errorData = await response.text();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/client/index.ts","../src/client/mem0.ts","../src/client/telemetry.ts"],"sourcesContent":["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","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} 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 isExtension?: boolean;\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 isExtension: boolean;\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 this.isExtension = options.isExtension || false;\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 headers = {\n ...options.headers,\n Authorization: `Token ${this.apiKey}`,\n };\n if (!this.isExtension) {\n headers[\"mem0-user-id\"] = this.telemetryId;\n }\n const response = await fetch(url, {\n ...options,\n headers,\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(\n messages: string | Array<Message>,\n options: MemoryOptions,\n ): object {\n const payload: any = {};\n if (typeof messages === \"string\") {\n payload.messages = [{ role: \"user\", content: messages }];\n } else if (Array.isArray(messages)) {\n payload.messages = messages;\n }\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 const response = await fetch(`${this.host}/v1/ping/`, {\n headers: {\n Authorization: `Token ${this.apiKey}`,\n },\n });\n\n const data = await response.json();\n\n if (data.status !== \"ok\") {\n throw new Error(\"API Key is invalid\");\n }\n\n const { org_id, project_id, user_email } = data;\n\n this.organizationId = org_id || null;\n this.projectId = project_id || null;\n this.telemetryId = user_email || \"\";\n }\n\n async add(\n messages: string | 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();\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(memoryId: string, message: string): Promise<Array<Memory>> {\n if (this.telemetryId === \"\") await this.ping();\n this._validateOrgProject();\n const payload = {\n text: message,\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 async deleteUser(\n entityId: string,\n entity: { type: string } = { type: \"user\" },\n ): Promise<{ message: string }> {\n if (this.telemetryId === \"\") await this.ping();\n this._captureEvent(\"delete_user\", []);\n const response = await this._fetchWithErrorHandling(\n `${this.host}/v1/entities/${entity.type}/${entityId}/`,\n {\n method: \"DELETE\",\n headers: this.headers,\n },\n );\n return response;\n }\n\n async deleteUsers(): Promise<{ message: string }> {\n if (this.telemetryId === \"\") await this.ping();\n this._validateOrgProject();\n this._captureEvent(\"delete_users\", []);\n const entities = await this.users();\n\n for (const entity of entities.results) {\n let 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 await this.client.delete(`/v1/entities/${entity.type}/${entity.id}/`, {\n params: options,\n });\n }\n return { message: \"All users, agents, and sessions deleted.\" };\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\nexport { MemoryClient };\n","// @ts-nocheck\nimport type { TelemetryClient, TelemetryOptions } from \"./telemetry.types\";\n\nlet version = \"2.1.12\";\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"],"mappings":"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","names":["axios"]}
1
+ {"version":3,"sources":["../src/client/index.ts","../src/client/mem0.ts","../src/client/telemetry.ts"],"sourcesContent":["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","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} 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(\n messages: string | Array<Message>,\n options: MemoryOptions,\n ): object {\n const payload: any = {};\n if (typeof messages === \"string\") {\n payload.messages = [{ role: \"user\", content: messages }];\n } else if (Array.isArray(messages)) {\n payload.messages = messages;\n }\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 const response = await fetch(`${this.host}/v1/ping/`, {\n headers: {\n Authorization: `Token ${this.apiKey}`,\n },\n });\n\n const data = await response.json();\n\n if (data.status !== \"ok\") {\n throw new Error(\"API Key is invalid\");\n }\n\n const { org_id, project_id, user_email } = data;\n\n this.organizationId = org_id || null;\n this.projectId = project_id || null;\n this.telemetryId = user_email || \"\";\n }\n\n async add(\n messages: string | 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();\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(memoryId: string, message: string): Promise<Array<Memory>> {\n if (this.telemetryId === \"\") await this.ping();\n this._validateOrgProject();\n const payload = {\n text: message,\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 async deleteUser(\n entityId: string,\n entity: { type: string } = { type: \"user\" },\n ): Promise<{ message: string }> {\n if (this.telemetryId === \"\") await this.ping();\n this._captureEvent(\"delete_user\", []);\n const response = await this._fetchWithErrorHandling(\n `${this.host}/v1/entities/${entity.type}/${entityId}/`,\n {\n method: \"DELETE\",\n headers: this.headers,\n },\n );\n return response;\n }\n\n async deleteUsers(): Promise<{ message: string }> {\n if (this.telemetryId === \"\") await this.ping();\n this._validateOrgProject();\n this._captureEvent(\"delete_users\", []);\n const entities = await this.users();\n\n for (const entity of entities.results) {\n let 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 await this.client.delete(`/v1/entities/${entity.type}/${entity.id}/`, {\n params: options,\n });\n }\n return { message: \"All users, agents, and sessions deleted.\" };\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\nexport { MemoryClient };\n","// @ts-nocheck\nimport type { TelemetryClient, TelemetryOptions } from \"./telemetry.types\";\n\nlet version = \"2.1.16\";\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"],"mappings":"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","names":["axios"]}
package/dist/index.mjs CHANGED
@@ -2,7 +2,7 @@
2
2
  import axios from "axios";
3
3
 
4
4
  // src/client/telemetry.ts
5
- var version = "2.1.12";
5
+ var version = "2.1.16";
6
6
  var MEM0_TELEMETRY = true;
7
7
  var _a;
8
8
  try {
@@ -113,7 +113,6 @@ var MemoryClient = class {
113
113
  this.projectName = options.projectName || null;
114
114
  this.organizationId = options.organizationId || null;
115
115
  this.projectId = options.projectId || null;
116
- this.isExtension = options.isExtension || false;
117
116
  this.headers = {
118
117
  Authorization: `Token ${this.apiKey}`,
119
118
  "Content-Type": "application/json"
@@ -158,16 +157,13 @@ var MemoryClient = class {
158
157
  });
159
158
  }
160
159
  async _fetchWithErrorHandling(url, options) {
161
- const headers = {
162
- ...options.headers,
163
- Authorization: `Token ${this.apiKey}`
164
- };
165
- if (!this.isExtension) {
166
- headers["mem0-user-id"] = this.telemetryId;
167
- }
168
160
  const response = await fetch(url, {
169
161
  ...options,
170
- headers
162
+ headers: {
163
+ ...options.headers,
164
+ Authorization: `Token ${this.apiKey}`,
165
+ "Mem0-User-ID": this.telemetryId
166
+ }
171
167
  });
172
168
  if (!response.ok) {
173
169
  const errorData = await response.text();
@@ -1 +1 @@
1
- {"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} 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 isExtension?: boolean;\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 isExtension: boolean;\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 this.isExtension = options.isExtension || false;\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 headers = {\n ...options.headers,\n Authorization: `Token ${this.apiKey}`,\n };\n if (!this.isExtension) {\n headers[\"mem0-user-id\"] = this.telemetryId;\n }\n const response = await fetch(url, {\n ...options,\n headers,\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(\n messages: string | Array<Message>,\n options: MemoryOptions,\n ): object {\n const payload: any = {};\n if (typeof messages === \"string\") {\n payload.messages = [{ role: \"user\", content: messages }];\n } else if (Array.isArray(messages)) {\n payload.messages = messages;\n }\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 const response = await fetch(`${this.host}/v1/ping/`, {\n headers: {\n Authorization: `Token ${this.apiKey}`,\n },\n });\n\n const data = await response.json();\n\n if (data.status !== \"ok\") {\n throw new Error(\"API Key is invalid\");\n }\n\n const { org_id, project_id, user_email } = data;\n\n this.organizationId = org_id || null;\n this.projectId = project_id || null;\n this.telemetryId = user_email || \"\";\n }\n\n async add(\n messages: string | 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();\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(memoryId: string, message: string): Promise<Array<Memory>> {\n if (this.telemetryId === \"\") await this.ping();\n this._validateOrgProject();\n const payload = {\n text: message,\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 async deleteUser(\n entityId: string,\n entity: { type: string } = { type: \"user\" },\n ): Promise<{ message: string }> {\n if (this.telemetryId === \"\") await this.ping();\n this._captureEvent(\"delete_user\", []);\n const response = await this._fetchWithErrorHandling(\n `${this.host}/v1/entities/${entity.type}/${entityId}/`,\n {\n method: \"DELETE\",\n headers: this.headers,\n },\n );\n return response;\n }\n\n async deleteUsers(): Promise<{ message: string }> {\n if (this.telemetryId === \"\") await this.ping();\n this._validateOrgProject();\n this._captureEvent(\"delete_users\", []);\n const entities = await this.users();\n\n for (const entity of entities.results) {\n let 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 await this.client.delete(`/v1/entities/${entity.type}/${entity.id}/`, {\n params: options,\n });\n }\n return { message: \"All users, agents, and sessions deleted.\" };\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\nexport { MemoryClient };\n","// @ts-nocheck\nimport type { TelemetryClient, TelemetryOptions } from \"./telemetry.types\";\n\nlet version = \"2.1.12\";\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":[]}
1
+ {"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} 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(\n messages: string | Array<Message>,\n options: MemoryOptions,\n ): object {\n const payload: any = {};\n if (typeof messages === \"string\") {\n payload.messages = [{ role: \"user\", content: messages }];\n } else if (Array.isArray(messages)) {\n payload.messages = messages;\n }\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 const response = await fetch(`${this.host}/v1/ping/`, {\n headers: {\n Authorization: `Token ${this.apiKey}`,\n },\n });\n\n const data = await response.json();\n\n if (data.status !== \"ok\") {\n throw new Error(\"API Key is invalid\");\n }\n\n const { org_id, project_id, user_email } = data;\n\n this.organizationId = org_id || null;\n this.projectId = project_id || null;\n this.telemetryId = user_email || \"\";\n }\n\n async add(\n messages: string | 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();\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(memoryId: string, message: string): Promise<Array<Memory>> {\n if (this.telemetryId === \"\") await this.ping();\n this._validateOrgProject();\n const payload = {\n text: message,\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 async deleteUser(\n entityId: string,\n entity: { type: string } = { type: \"user\" },\n ): Promise<{ message: string }> {\n if (this.telemetryId === \"\") await this.ping();\n this._captureEvent(\"delete_user\", []);\n const response = await this._fetchWithErrorHandling(\n `${this.host}/v1/entities/${entity.type}/${entityId}/`,\n {\n method: \"DELETE\",\n headers: this.headers,\n },\n );\n return response;\n }\n\n async deleteUsers(): Promise<{ message: string }> {\n if (this.telemetryId === \"\") await this.ping();\n this._validateOrgProject();\n this._captureEvent(\"delete_users\", []);\n const entities = await this.users();\n\n for (const entity of entities.results) {\n let 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 await this.client.delete(`/v1/entities/${entity.type}/${entity.id}/`, {\n params: options,\n });\n }\n return { message: \"All users, agents, and sessions deleted.\" };\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\nexport { MemoryClient };\n","// @ts-nocheck\nimport type { TelemetryClient, TelemetryOptions } from \"./telemetry.types\";\n\nlet version = \"2.1.16\";\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":[]}
@@ -35,6 +35,7 @@ interface LLMConfig {
35
35
  config?: Record<string, any>;
36
36
  apiKey?: string;
37
37
  model?: string;
38
+ modelProperties?: Record<string, any>;
38
39
  }
39
40
  interface Neo4jConfig {
40
41
  url: string;
@@ -153,24 +154,29 @@ declare const MemoryConfigSchema: z.ZodObject<{
153
154
  config: z.ZodObject<{
154
155
  apiKey: z.ZodString;
155
156
  model: z.ZodOptional<z.ZodString>;
157
+ modelProperties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
156
158
  }, "strip", z.ZodTypeAny, {
157
159
  apiKey: string;
158
160
  model?: string | undefined;
161
+ modelProperties?: Record<string, any> | undefined;
159
162
  }, {
160
163
  apiKey: string;
161
164
  model?: string | undefined;
165
+ modelProperties?: Record<string, any> | undefined;
162
166
  }>;
163
167
  }, "strip", z.ZodTypeAny, {
164
168
  provider: string;
165
169
  config: {
166
170
  apiKey: string;
167
171
  model?: string | undefined;
172
+ modelProperties?: Record<string, any> | undefined;
168
173
  };
169
174
  }, {
170
175
  provider: string;
171
176
  config: {
172
177
  apiKey: string;
173
178
  model?: string | undefined;
179
+ modelProperties?: Record<string, any> | undefined;
174
180
  };
175
181
  }>;
176
182
  historyDbPath: z.ZodOptional<z.ZodString>;
@@ -260,6 +266,7 @@ declare const MemoryConfigSchema: z.ZodObject<{
260
266
  config: {
261
267
  apiKey: string;
262
268
  model?: string | undefined;
269
+ modelProperties?: Record<string, any> | undefined;
263
270
  };
264
271
  };
265
272
  version?: string | undefined;
@@ -306,6 +313,7 @@ declare const MemoryConfigSchema: z.ZodObject<{
306
313
  config: {
307
314
  apiKey: string;
308
315
  model?: string | undefined;
316
+ modelProperties?: Record<string, any> | undefined;
309
317
  };
310
318
  };
311
319
  version?: string | undefined;
@@ -501,6 +509,17 @@ declare class OllamaLLM implements LLM {
501
509
  private ensureModelExists;
502
510
  }
503
511
 
512
+ declare class MistralLLM implements LLM {
513
+ private client;
514
+ private model;
515
+ constructor(config: LLMConfig);
516
+ private contentToString;
517
+ generateResponse(messages: Message[], responseFormat?: {
518
+ type: string;
519
+ }, tools?: any[]): Promise<string | LLMResponse>;
520
+ generateChat(messages: Message[]): Promise<LLMResponse>;
521
+ }
522
+
504
523
  interface VectorStore {
505
524
  insert(vectors: number[][], ids: string[], payloads: Record<string, any>[]): Promise<void>;
506
525
  search(query: number[], limit?: number, filters?: SearchFilters): Promise<VectorStoreResult[]>;
@@ -615,4 +634,4 @@ declare class HistoryManagerFactory {
615
634
  static create(provider: string, config: HistoryStoreConfig): HistoryManager;
616
635
  }
617
636
 
618
- export { type AddMemoryOptions, AnthropicLLM, type DeleteAllMemoryOptions, type Embedder, EmbedderFactory, type EmbeddingConfig, type Entity, type GetAllMemoryOptions, GoogleEmbedder, GoogleLLM, type GraphStoreConfig, GroqLLM, HistoryManagerFactory, type HistoryStoreConfig, type LLM, type LLMConfig, LLMFactory, type LLMResponse, Memory, type MemoryConfig, MemoryConfigSchema, type MemoryItem, MemoryVectorStore, type Message, type MultiModalMessages, type Neo4jConfig, OllamaEmbedder, OllamaLLM, OpenAIEmbedder, OpenAILLM, OpenAIStructuredLLM, Qdrant, RedisDB, type SearchFilters, type SearchMemoryOptions, type SearchResult, type VectorStore, type VectorStoreConfig, VectorStoreFactory, type VectorStoreResult };
637
+ export { type AddMemoryOptions, AnthropicLLM, type DeleteAllMemoryOptions, type Embedder, EmbedderFactory, type EmbeddingConfig, type Entity, type GetAllMemoryOptions, GoogleEmbedder, GoogleLLM, type GraphStoreConfig, GroqLLM, HistoryManagerFactory, type HistoryStoreConfig, type LLM, type LLMConfig, LLMFactory, type LLMResponse, Memory, type MemoryConfig, MemoryConfigSchema, type MemoryItem, MemoryVectorStore, type Message, MistralLLM, type MultiModalMessages, type Neo4jConfig, OllamaEmbedder, OllamaLLM, OpenAIEmbedder, OpenAILLM, OpenAIStructuredLLM, Qdrant, RedisDB, type SearchFilters, type SearchMemoryOptions, type SearchResult, type VectorStore, type VectorStoreConfig, VectorStoreFactory, type VectorStoreResult };