From a618939f002fcfa2e4015f9627566365bee7de38 Mon Sep 17 00:00:00 2001 From: kartik-mem0 Date: Wed, 29 Jul 2026 17:01:49 +0530 Subject: [PATCH] chore(n8n): publish under the scoped @mem0/n8n-nodes-mem0 name The unscoped `n8n-nodes-mem0` name is already taken on npm by an unrelated publisher, so the CD workflow could never publish it. Move to the `@mem0` scope, matching `@mem0/pi-agent-plugin` and `@mem0/openclaw-mem0`, and add `publishConfig.access: public` since scoped packages default to restricted. n8n accepts scoped community packages: it strips the scope before enforcing the `n8n-nodes-` prefix, the same shape as n8n's own `@n8n/n8n-nodes-langchain`. Verified end to end on n8n 2.22.6 by installing the packed tarball into the community-packages directory and executing a workflow against node type `@mem0/n8n-nodes-mem0.mem0`. The directory, workflow filenames, and the `n8n-nodes-mem0-v*` tag prefix are unchanged. pnpm-lock.yaml needs no update: the pnpm v9 root importer is anonymous and never recorded the package name. --- AGENTS.md | 4 ++-- docs/integrations/n8n.mdx | 4 ++-- integrations/n8n-nodes-mem0/README.md | 4 ++-- integrations/n8n-nodes-mem0/nodes/Mem0/Mem0.node.json | 2 +- integrations/n8n-nodes-mem0/package.json | 5 ++++- integrations/n8n-nodes-mem0/test/Mem0.node.test.ts | 2 +- 6 files changed, 12 insertions(+), 9 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index f1d88ecac..7f6ba1814 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -27,7 +27,7 @@ This is a **polyglot monorepo** containing Python and TypeScript packages, CLIs, | `integrations/openclaw/` | `@mem0/openclaw-mem0` — OpenClaw plugin for Claude Code / AI editors | | `integrations/pi-agent-plugin/` | `@mem0/pi-agent-plugin` — Pi Agent plugin | | `integrations/vercel-ai-sdk/` | `@mem0/vercel-ai-provider` — Vercel AI SDK memory provider | -| `integrations/n8n-nodes-mem0/` | `n8n-nodes-mem0` — n8n community node; add / search / get / update / delete memories | +| `integrations/n8n-nodes-mem0/` | `@mem0/n8n-nodes-mem0` — n8n community node; add / search / get / update / delete memories | | `server/` | FastAPI REST server for self-hosted Mem0 (Docker: FastAPI + PostgreSQL/pgvector + Neo4j) | | `openmemory/` | Self-hosted memory platform — `api/` (FastAPI + Alembic + MCP server) and `ui/` (Next.js 15 + React 19) | | `skills/` | Claude Code skill definitions. Reference skills (SDK knowledge, always-on): `mem0/`, `mem0-cli/`, `mem0-vercel-ai-sdk/`. Pipeline skills (run on demand): `mem0-integrate/`, `mem0-test-integration/`, `mem0-oss-to-platform/` | @@ -452,7 +452,7 @@ Publishing is routed through a single entry point: **`release.yml` (Release Rout | OpenClaw | `openclaw-cd.yml` | `openclaw-v*` | npm (`@mem0/openclaw-mem0`) | | OpenCode Plugin | `opencode-plugin-cd.yml` | `opencode-v*` | npm (`@mem0/opencode-plugin`) | | Pi Agent Plugin | `pi-agent-plugin-cd.yml` | `pi-agent-v*` | npm (`@mem0/pi-agent-plugin`) | -| n8n Node | `n8n-nodes-mem0-cd.yml` | `n8n-nodes-mem0-v*` | npm (`n8n-nodes-mem0`) | +| n8n Node | `n8n-nodes-mem0-cd.yml` | `n8n-nodes-mem0-v*` | npm (`@mem0/n8n-nodes-mem0`) | - Package CD workflows are `workflow_dispatch`-only (inputs: `tag`, `prerelease`); they check out and build the given tag. Registry trusted-publisher settings stay pinned to each package's own workflow filename. - All publishing uses **OIDC trusted publishing** — no tokens or secrets required. diff --git a/docs/integrations/n8n.mdx b/docs/integrations/n8n.mdx index ac81f56ec..41ddafe8a 100644 --- a/docs/integrations/n8n.mdx +++ b/docs/integrations/n8n.mdx @@ -3,7 +3,7 @@ title: n8n description: "Add long-term memory to n8n workflows and AI Agents with the Mem0 community node, no code required." --- -The [`n8n-nodes-mem0`](https://www.npmjs.com/package/n8n-nodes-mem0) community node brings [Mem0](https://mem0.ai) memory to [n8n](https://n8n.io). Add, search, and manage long-term memories inside any workflow, and use it as a tool for the n8n AI Agent. +The [`@mem0/n8n-nodes-mem0`](https://www.npmjs.com/package/@mem0/n8n-nodes-mem0) community node brings [Mem0](https://mem0.ai) memory to [n8n](https://n8n.io). Add, search, and manage long-term memories inside any workflow, and use it as a tool for the n8n AI Agent. ## Overview @@ -25,7 +25,7 @@ It is marked `usableAsTool`, so the n8n AI Agent (Tools Agent) can call it direc Install it like any n8n community node: 1. In n8n, go to **Settings → Community Nodes → Install**. -2. Enter `n8n-nodes-mem0` and confirm. +2. Enter `@mem0/n8n-nodes-mem0` and confirm. The node then appears in the nodes panel under the AI category. diff --git a/integrations/n8n-nodes-mem0/README.md b/integrations/n8n-nodes-mem0/README.md index 738a3280d..0d4c13e2a 100644 --- a/integrations/n8n-nodes-mem0/README.md +++ b/integrations/n8n-nodes-mem0/README.md @@ -1,4 +1,4 @@ -# n8n-nodes-mem0 +# @mem0/n8n-nodes-mem0 This is an n8n community node that lets you use [Mem0](https://mem0.ai) — the memory layer for AI agents — in your n8n workflows. @@ -10,7 +10,7 @@ Mem0 gives your agents long-term memory: add memories from conversations, then s ## Installation -Follow the [community nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) and install `n8n-nodes-mem0`. +Follow the [community nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) and install `@mem0/n8n-nodes-mem0`. ## Operations diff --git a/integrations/n8n-nodes-mem0/nodes/Mem0/Mem0.node.json b/integrations/n8n-nodes-mem0/nodes/Mem0/Mem0.node.json index 397297395..bd8ee0289 100644 --- a/integrations/n8n-nodes-mem0/nodes/Mem0/Mem0.node.json +++ b/integrations/n8n-nodes-mem0/nodes/Mem0/Mem0.node.json @@ -1,5 +1,5 @@ { - "node": "n8n-nodes-mem0.mem0", + "node": "@mem0/n8n-nodes-mem0.mem0", "nodeVersion": "1.0", "codexVersion": "1.0", "categories": ["AI"], diff --git a/integrations/n8n-nodes-mem0/package.json b/integrations/n8n-nodes-mem0/package.json index f33ded0e0..29fd24632 100644 --- a/integrations/n8n-nodes-mem0/package.json +++ b/integrations/n8n-nodes-mem0/package.json @@ -1,5 +1,5 @@ { - "name": "n8n-nodes-mem0", + "name": "@mem0/n8n-nodes-mem0", "version": "0.1.0", "description": "n8n community node for Mem0 — the memory layer for AI agents. Add, search, get, update, and delete long-term memories.", "keywords": [ @@ -25,6 +25,9 @@ "node": ">=20.15" }, "main": "index.js", + "publishConfig": { + "access": "public" + }, "scripts": { "build": "npx rimraf dist && tsc && gulp build:icons", "dev": "tsc --watch", diff --git a/integrations/n8n-nodes-mem0/test/Mem0.node.test.ts b/integrations/n8n-nodes-mem0/test/Mem0.node.test.ts index 9330c6820..2d1df8363 100644 --- a/integrations/n8n-nodes-mem0/test/Mem0.node.test.ts +++ b/integrations/n8n-nodes-mem0/test/Mem0.node.test.ts @@ -20,7 +20,7 @@ function makeCtx( opts: { continueOnFail?: boolean } = {}, ): any { const requests: any[] = []; - const node = { name: 'Mem0', type: 'n8n-nodes-mem0.mem0', typeVersion: 1 }; + const node = { name: 'Mem0', type: '@mem0/n8n-nodes-mem0.mem0', typeVersion: 1 }; const ctx: any = { getInputData: () => [{ json: {} }], getCredentials: async () => ({ apiKey: 'm0-test', baseUrl: 'https://api.mem0.ai' }),