Soumil Rathi
573ca54637
fix: restore _is_sensitive_field and sensitive field redaction in _safe_deepcopy_config
...
The function and associated constants (_SENSITIVE_FIELDS_EXACT,
_SENSITIVE_SUFFIXES) were accidentally dropped during the merge.
Restores telemetry-safe config cloning that redacts API keys,
passwords, and other secrets while preserving runtime auth objects.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 10:53:56 -07:00
Soumil Rathi
59880a6f8f
feat: TS SDK v3 port, graph store removal, client v3 API migration
...
TypeScript SDK v3 pipeline (full parity with Python):
- Single-pass additive extraction with ADDITIVE_EXTRACTION_PROMPT
- Hybrid search (semantic + BM25 + entity boost) with additive scoring
- 8-phase batch pipeline (batch embed, persist, entity linking)
- New utils: scoring.ts, lemmatization.ts (natural), entity_extraction.ts (compromise)
- keywordSearch() on 8 vector stores (3 full: PGVector, Memory, Azure AI Search)
- Message persistence in SQLiteManager (rolling window of 10)
- Entity store as second vector collection
- MAX_BATCH=100 chunking guard on OpenAI/Azure embedBatch
- Updated default LLM model to gpt-4.1-nano-2025-04-14
- compromise + natural added as peer dependencies
Graph store removal (Python + TypeScript):
- Removed Neo4j, Memgraph, Kuzu, Neptune, Apache AGE integrations
- Deleted 18 graph-related files across both SDKs
- Removed GraphStoreFactory, GraphStoreConfig, graph_store config field
- Removed "relations" key from all API responses
- Removed graph optional dependency group from pyproject.toml
- Removed neo4j-driver from TS peerDependencies
- Simplified add/search/delete/reset (no more parallel graph operations)
Client SDK v3 API migration:
- add() endpoint: /v1/memories/ -> /v3/memories/ (async response)
- search() endpoint: /v2/memories/search/ -> /v3/memories/search/
- Removed output_format injection and v1.1 unwrapping logic
- Applied to both Python (sync + async) and TypeScript clients
Review feedback fixes:
- Removed deprecated custom_update_memory_prompt from MemoryConfig
- Added MAX_BATCH=100 chunking to Python + TS embed_batch
- Moved all inline imports to top level in main.py
- Cleaned up GraphStoreError dead code from exceptions.py
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 10:45:40 -07:00
Soumil Rathi
3402c67805
fix: address PR review feedback
...
- Remove deprecated custom_update_memory_prompt from MemoryConfig entirely
- Add MAX_BATCH=100 chunking guard to embed_batch in openai.py and azure_openai.py
- Move all inline imports (mem0.utils.*) to top-level in main.py
- Remove custom_update_memory_prompt from test fixture
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 09:01:07 -07:00
Soumil Rathi
c0343aec1b
Merge remote-tracking branch 'origin/feat/v3-pipeline' into feat/v3-pipeline
...
# Conflicts:
# mem0-ts/src/oss/src/utils/factory.ts
# mem0/vector_stores/milvus.py
# mem0/vector_stores/qdrant.py
2026-04-12 16:30:05 -07:00
Soumil Rathi
b9e26acf4d
merge: integrate main into feat/v3-pipeline + port AsyncMemory to v3
...
Merge 190 commits from main including:
- limit→top_k rename across all vector store APIs
- custom_fact_extraction_prompt→custom_instructions rename
- enable_graph flag removal (use self.graph truthiness)
- US/Pacific→timezone.utc normalization
- 18 Category A bug fixes (partial updates, graph cleanup on delete,
telemetry gating, metadata mutation prevention, filter operator
merging, delete timestamps, actor_id preservation, etc.)
Conflict resolutions:
- openai.py: merged _pass_dimensions_to_api with embed_batch
- milvus.py: merged partial-update logic with BM25 text field
- qdrant.py: took main's enhanced _create_filter, merged BM25
sparse vectors with partial-update endpoints
- test_main.py: adopted main's test structure, removed obsolete
test_custom_prompts, kept hybrid search over-fetch assertion
AsyncMemory v3 port (full parity):
- Rewrote AsyncMemory._add_to_vector_store with the same 8-phase
batch pipeline as sync Memory (single LLM call, batch embed,
hash dedup, batch persist, batch entity linking, message saving)
- All blocking calls wrapped in await asyncio.to_thread()
- Moved _build_session_scope to module level for shared access
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-12 16:26:10 -07:00
Kartik
9d6b79a14e
fix(sdk): removing the enable graph flag and switching from snake case to camel case for client ts sdk ( #4776 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-12 02:40:54 +05:30
Kartik
e44b46ef2e
fix(sdk): removing deprecating param from our sdk and docs changes with it ( #4740 )
2026-04-12 00:34:58 +05:30
Saket Aryan
3882af7450
fix(cli): persistent anonymous telemetry ID + pass source=CLI in all API calls ( #4789 )
cli-node-v0.2.3
cli-v0.2.3
2026-04-11 21:00:05 +05:30
Saket Aryan
d39ebad09f
fix(openclaw): persistent anonymous telemetry ID, flush fix, and email resolution ( #4790 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
openclaw-v1.0.6
2026-04-11 20:57:14 +05:30
Gabriel Stein
9d82e2329d
refactor(telemetry): sample OSS hot-path events at 10% to reduce PostHog volume ( #4771 )
2026-04-11 16:25:38 +05:30
Saket Aryan
398445c691
fix: filters did not support AND, OR and NOT in Qdant and other vector stores ( #4780 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-10 23:43:12 +05:30
szinvas
789cc9d607
docs - replace session_id with run_id ( #4742 )
2026-04-10 20:06:59 +05:30
Jared Diaz
e59e3d5f0c
Add deepseek.ts to src/llms with corresponding unit tests. Updates fa… ( #4613 )
...
Co-authored-by: kartik-mem0 <kartik.labhshetwar@mem0.ai >
2026-04-10 20:06:22 +05:30
Kartik
d926f3697c
fix(docs): eliminate ~222 SEO redirect chains on docs.mem0.ai ( #4768 )
2026-04-10 19:33:45 +05:30
Kartik
c996b0e7fa
docs: removing the changelog.mdx file adn replacing it with new changelog system ( #4750 )
2026-04-10 19:07:43 +05:30
Kartik
78ca85a260
refactor: update OpenClaw plugin config, hook logic, and documentation ( #4764 )
openclaw-v1.0.5
2026-04-09 17:36:05 +05:30
Kartik
88f696a60a
refactor: drop orgId, projectId, enableGraph config options, update CLI prompts, and clean up related code ( #4734 )
2026-04-09 14:57:33 +05:30
Ignazio De Santis
081eca6d8f
fix: guard temp_uuid_mapping lookups against LLM-hallucinated IDs ( fixes #3931 ) ( #4674 )
...
Co-authored-by: kartik-mem0 <kartik.labhshetwar@mem0.ai >
2026-04-08 21:55:52 +05:30
Kartik
2434b9d550
docs: add ChatDev integration guide and update integrations list ( #4751 )
2026-04-08 20:16:04 +05:30
Rakhee Singh
3ffea554bc
fix(azure_openai): forward response_format to Azure OpenAI API ( #4689 )
2026-04-08 19:22:02 +05:30
Rakhee Singh
1ad8a59b0c
fix(deepseek): forward response_format to OpenAI-compatible API ( #4688 )
2026-04-08 19:21:11 +05:30
Saket Aryan
a670333d67
feat: add AGENTS.md for AI coding agent instructions ( #4726 )
2026-04-06 21:32:43 +05:30
Saket Aryan
4c2db3e68b
feat(skills): introduce Mem0 skill graph with dedicated CLI and Vercel AI SDK skills ( #4725 )
2026-04-06 20:41:29 +05:30
Saket Aryan
07f0d4f1e0
fix: use npx npm@latest for OIDC trusted publishing ( #4724 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
cli-v0.2.2
cli-node-v0.2.2
cli-node-v1.0.4
openclaw-v1.0.4
ts-v2.4.6
2026-04-06 17:22:00 +05:30
Saket Aryan
3565404eef
fix: remove npm self-upgrade from CD workflows ( #4723 )
2026-04-06 17:11:28 +05:30
Kartik
144627c4ce
fix(docs): change the position of the openclaw to agnet plugin and fix the integrations overview and sidebar list view ( #4722 )
v1.0.11
2026-04-06 16:57:24 +05:30
Kartik
6984958138
chore: sat release ( #4702 )
2026-04-06 16:55:08 +05:30
Kartik
b13748c446
feat: add import and event commands, refactor CLI, remove baseUrl config, update docs ( #4704 )
2026-04-06 16:54:27 +05:30
Soumil Rathi
90f9e6a550
Fix: use caller-provided timestamp for memory created_at instead of always using datetime.now()
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-04 12:52:43 -07:00
Saket Aryan
4642a1d6e3
feat(cli): validate API key upfront via ping and unify telemetry identity resolution ( #4701 )
2026-04-04 23:03:27 +05:30
Kartik
686d5e987d
fix: openclaw plugin and fix the login section there ( #4696 )
...
Co-authored-by: Saket Aryan <saketaryan2002@gmail.com >
2026-04-04 22:21:46 +05:30
DEVAN CHAUHAN
c55447c1e4
[fix] groq model ( #4700 )
2026-04-04 21:36:17 +05:30
Saket Aryan
ee67602c58
feat(cli): add PostHog telemetry and source tracking to Python & Node CLIs ( #4699 )
2026-04-04 20:47:38 +05:30
Saket Aryan
0daa5d7d03
fix(ci): handle npm prerelease publish across Node.js CD workflows ( #4690 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
openclaw-v1.0.4-beta.0
2026-04-03 21:17:11 +05:30
Kartik
cfb3f58e4a
fix: adding login and fixing the plugin to follow the openclaw plugin standards ( #4686 )
2026-04-03 20:59:23 +05:30
Kartik
66230b3f1f
docs: update integration docs with new SVG icons and links ( #4684 )
2026-04-03 20:54:46 +05:30
Soumil Rathi
a6130c5436
perf: skip ThreadPoolExecutor when graph store is disabled
...
Avoids spawning 2 threads per add() call when graph is not configured.
Fixes thread leakage under high concurrency (was accumulating 3500+ threads
per worker). Calls _add_to_vector_store directly in the current thread.
Applied to both sync Memory and async AsyncMemory classes.
2026-04-03 07:42:32 -07:00
BillionToken
1941cae031
fix(server): add missing psycopg-pool dependency ( #4374 )
...
Co-authored-by: BillionClaw <267901332+BillionClaw@users.noreply.github.com >
2026-04-03 20:04:05 +05:30
Utkarsh
fcbb70ab3b
fix: prevent thread and memory leaks from PostHog telemetry ( #4535 )
...
Co-authored-by: utkarsh240799 <utkarsh240799@users.noreply.github.com >
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
Co-authored-by: kartik-mem0 <kartik.labhshetwar@mem0.ai >
2026-04-03 20:01:04 +05:30
Soumil Rathi
cb64d978fc
perf: batch entity linking — embed, search, insert in bulk instead of per-entity
...
- Replace sequential _upsert_entity() loop with batched pipeline:
1. Global dedup: collect unique entities across all memories
2. Single embed_batch() call for all entity texts
3. Batch search via search_batch() (Qdrant query_batch_points)
4. Batch insert for new entities, individual updates for existing
- Add search_batch() to VectorStoreBase (sequential fallback)
- Add native search_batch() to Qdrant using query_batch_points
- ~6-10x reduction in entity linking network round trips
2026-04-02 19:32:29 -07:00
Soumil Rathi
41532d8850
refactor(oss): trim and update ADDITIVE_EXTRACTION_PROMPT
...
Streamline prompt guidelines and update examples for clarity.
Remove redundant sections and verbose explanations.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-02 12:11:52 -07:00
Chaithanya Kumar
33d2bc495d
fix(openclaw): clear security scanner exfiltration warning ( #4678 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
Co-authored-by: Saket Aryan <saketaryan2002@gmail.com >
openclaw-v1.0.3
2026-04-03 00:34:49 +05:30
Gabriel Stein
c0cae68646
feat(plugin): add Codex plugin support and integration docs ( #4665 )
...
Co-authored-by: Gabriel Stein <gabrielstein416@gmail.com >
2026-04-03 00:18:02 +05:30
Soumil Rathi
9c9b3d54e2
feat(oss): make spaCy an optional dependency
...
Move spacy from core dependencies to optional [nlp] extra.
The system gracefully degrades without spaCy:
- Lemmatization falls back to raw text
- Entity extraction returns empty (no entity boost)
- BM25 keyword search still works on raw text
- Semantic search and additive scoring unaffected
Install with NLP support: pip install mem0ai[nlp]
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-02 11:04:38 -07:00
Soumil Rathi
70c62ea54f
fix: add text_lemmatized to create/update memory + fix keyword search across vector stores
...
- Add text_lemmatized to _create_memory() and _update_memory() (sync + async)
so BM25/keyword search works for all code paths, not just the batch pipeline
- pgvector: add GIN index on text_lemmatized for fast full-text search
- pgvector: add error logging to keyword_search
- milvus: add sparse BM25 field + function to create_col() so keyword_search works
- mongodb: auto-create Atlas Search text index in create_col()
- azure_mysql: add generated column + FULLTEXT index for keyword_search
2026-04-02 10:34:03 -07:00
Soumil Rathi
4534acdfbe
feat(qdrant): implement client-side BM25 sparse vectors via fastembed
...
- Add sparse_vectors_config with 'bm25' named vector to create_col()
- Compute BM25 sparse vectors from text_lemmatized during insert/update
- Use client-side fastembed Qdrant/bm25 encoder instead of server-side inference
- Graceful fallback if fastembed not installed
- Fixes keyword_search() returning None on self-hosted Qdrant
2026-04-02 10:23:17 -07:00
Saket Aryan
3b2f01796e
feat(cli): comprehensive docs, version bump, and purple branding ( #4680 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
cli-node-v0.2.1
cli-v0.2.1
2026-04-02 22:52:00 +05:30
Chaithanya Kumar
9cd3d2cca8
fix(openclaw): remove process.env access to clear security scanner warning ( #4676 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
openclaw-v1.0.2
2026-04-02 21:19:12 +05:30
Saket Aryan
c53f1f126d
docs(openclaw): add v1.0.1 changelog and release notes ( #4675 )
openclaw-v1.0.1
2026-04-02 20:25:49 +05:30
Patel Tirth
0b7615fa87
docs: add api_key parameter to Google AI LLM provider config examples ( #4626 )
2026-04-02 19:37:23 +05:30