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.
This commit is contained in:
@@ -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/openclaw/` | `@mem0/openclaw-mem0` — OpenClaw plugin for Claude Code / AI editors |
|
||||||
| `integrations/pi-agent-plugin/` | `@mem0/pi-agent-plugin` — Pi Agent plugin |
|
| `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/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) |
|
| `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) |
|
| `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/` |
|
| `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`) |
|
| OpenClaw | `openclaw-cd.yml` | `openclaw-v*` | npm (`@mem0/openclaw-mem0`) |
|
||||||
| OpenCode Plugin | `opencode-plugin-cd.yml` | `opencode-v*` | npm (`@mem0/opencode-plugin`) |
|
| 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`) |
|
| 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.
|
- 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.
|
- All publishing uses **OIDC trusted publishing** — no tokens or secrets required.
|
||||||
|
|||||||
@@ -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."
|
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
|
## 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:
|
Install it like any n8n community node:
|
||||||
|
|
||||||
1. In n8n, go to **Settings → Community Nodes → Install**.
|
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.
|
The node then appears in the nodes panel under the AI category.
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
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
|
## 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
|
## Operations
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"node": "n8n-nodes-mem0.mem0",
|
"node": "@mem0/n8n-nodes-mem0.mem0",
|
||||||
"nodeVersion": "1.0",
|
"nodeVersion": "1.0",
|
||||||
"codexVersion": "1.0",
|
"codexVersion": "1.0",
|
||||||
"categories": ["AI"],
|
"categories": ["AI"],
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "n8n-nodes-mem0",
|
"name": "@mem0/n8n-nodes-mem0",
|
||||||
"version": "0.1.0",
|
"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.",
|
"description": "n8n community node for Mem0 — the memory layer for AI agents. Add, search, get, update, and delete long-term memories.",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
@@ -25,6 +25,9 @@
|
|||||||
"node": ">=20.15"
|
"node": ">=20.15"
|
||||||
},
|
},
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "npx rimraf dist && tsc && gulp build:icons",
|
"build": "npx rimraf dist && tsc && gulp build:icons",
|
||||||
"dev": "tsc --watch",
|
"dev": "tsc --watch",
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ function makeCtx(
|
|||||||
opts: { continueOnFail?: boolean } = {},
|
opts: { continueOnFail?: boolean } = {},
|
||||||
): any {
|
): any {
|
||||||
const requests: 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 = {
|
const ctx: any = {
|
||||||
getInputData: () => [{ json: {} }],
|
getInputData: () => [{ json: {} }],
|
||||||
getCredentials: async () => ({ apiKey: 'm0-test', baseUrl: 'https://api.mem0.ai' }),
|
getCredentials: async () => ({ apiKey: 'm0-test', baseUrl: 'https://api.mem0.ai' }),
|
||||||
|
|||||||
Reference in New Issue
Block a user