fix(n8n): escape ids in URLs, add agent/run filters, run tests in CI
Three review findings on the Mem0 n8n node: - Memory IDs and event IDs were interpolated raw into request paths, so a value containing / or .. could reach a different endpoint than intended. Wrap all four sites in encodeURIComponent. - Search and Get Many could only filter by user_id, leaving agent- and run-scoped memories unreachable from the node. Both now accept User ID, Agent ID, and Run ID. Multiple ids combine with OR because Mem0 indexes entities separately and an AND across them matches nothing. User ID is no longer marked required; the node still fails with a clear message when all three are empty, rather than letting the API return a raw 400. - n8n-nodes-mem0-checks.yml ran lint and build but never the jest suite, so the tests could rot unnoticed. Add a test job matching the layout of pi-agent-plugin-checks.yml. Tests cover flat single-entity filters, the OR combination, agent-only listing, the empty-entity guard on both operations, and id escaping in the get/delete/poll URLs. Docs and README document the new fields and the OR semantics.
This commit is contained in:
@@ -55,11 +55,23 @@ Extraction is asynchronous. **Wait for Completion** (on by default) polls the ev
|
||||
|
||||
### Search
|
||||
|
||||
Semantic search over stored memories. Provide a **Query**, a **User ID** (required, the API needs an entity filter), and an optional **Limit**.
|
||||
Semantic search over stored memories. Provide a **Query**, at least one entity id, and an optional **Limit**.
|
||||
|
||||
### Get Many
|
||||
|
||||
Lists memories for a **User ID**. Turn on **Return All** to page through every memory automatically; leave it off to fetch a single **Page**. **Page Size** applies either way.
|
||||
Lists stored memories for the entity ids you supply. Turn on **Return All** to page through every memory automatically; leave it off to fetch a single **Page**. **Page Size** applies either way.
|
||||
|
||||
### Entity filters on Search and Get Many
|
||||
|
||||
Both operations take **User ID**, **Agent ID**, and **Run ID**. At least one is required (the API rejects a query with no entity scope), and the node fails with a clear message before making the call if you leave all three empty.
|
||||
|
||||
Supply several and they are combined with **OR**, so the result set is the union of the three scopes:
|
||||
|
||||
```json
|
||||
{ "OR": [{ "user_id": "alice" }, { "agent_id": "support-bot" }] }
|
||||
```
|
||||
|
||||
This is deliberate. Mem0 indexes each entity separately, so an `AND` across `user_id` and `agent_id` matches nothing even when a memory was written with both. To narrow rather than widen, run one operation per entity id.
|
||||
|
||||
### Get / Update / Delete
|
||||
|
||||
|
||||
Reference in New Issue
Block a user