Mem0 ts-v3.1.4

ts-v3.1.4

Mem0 Node SDK (3.1.4)

Added 1
  • Add `referenceDate` and `keywordSearch` to `SearchMemoryOptions` in the TypeScript client
Fixed 4
  • Remove the `/v1/ping/` identity/telemetry call from the request critical path by resolving it in the background through a shared, credentials-keyed promise cache
  • Issue `deleteUsers()` per-entity DELETE requests through the shared fetch-based helper to reuse pooled connections instead of creating fresh TCP/TLS handshakes per entity
  • Prevent `add()` metadata from setting or overwriting a memory's identity scope by running metadata through the same `stripIdentityKeys()` helper as `update()`
  • Fix Redis `search()` and `list()` building an invalid empty RediSearch filter expression when `filters` was an empty object or contained only null/undefined values

New Features:

  • Client: Add referenceDate and keywordSearch to SearchMemoryOptions, keeping the TypeScript client's typed search options in sync with the Platform API (#6696)

Bug Fixes:

  • Client: Take the /v1/ping/ identity/telemetry call off the request critical path. Every method previously did if (this.telemetryId === "") await this.ping();, blocking the first call on each client instance on a network round trip; the ping now resolves in the background through a shared, credentials-keyed promise cache (FIFO-capped at 50 entries), so concurrent clients on the same host/API key share one ping instead of issuing one each, and a failed ping is not cached so the process can retry (#6788)
  • Client: deleteUsers() now issues its per-entity DELETE requests through the shared fetch()-based helper instead of the axios instance, which defaulted to keepAlive: false. Deleting every user, agent, app, and run now reuses pooled connections instead of paying a fresh TCP/TLS handshake per entity (#6788)
  • Memory (OSS): Stop add() metadata from setting or overwriting a memory's identity scope. Metadata now runs through the same stripIdentityKeys() helper as update(), so user_id/agent_id/run_id (snake_case or camelCase) and actor_id passed in metadata can no longer place a memory into a scope the caller didn't request through userId/agentId/runId/filters (#6377)
  • Vector Stores: Fix Redis search() and list() building an invalid, empty RediSearch filter expression when filters was an empty object or contained only null/undefined values. The shared buildRedisFilterExpr() helper now falls back to "*" (match all) instead of joining zero conditions into "" (#6014)
View original

Upgraded? How did it go?

Discussion