neuralmemory 1.8.1 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +40 -13
- package/dist/index.js.map +1 -1
- package/dist/tools.d.ts +9 -0
- package/dist/tools.js +41 -0
- package/dist/tools.js.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/src/index.ts +51 -13
- package/src/tools.ts +49 -0
package/README.md
CHANGED
|
@@ -54,7 +54,7 @@ Add to `~/.openclaw/openclaw.json`:
|
|
|
54
54
|
|
|
55
55
|
**v1.7.0+**: The plugin dynamically fetches **all tools** from the MCP server at startup. Whatever version of `neural-memory` you have installed, the plugin automatically exposes every tool it provides — no plugin update needed when new tools are added.
|
|
56
56
|
|
|
57
|
-
With `neural-memory>=2.28.0`, this includes **
|
|
57
|
+
With `neural-memory>=2.28.0`, this includes **44 tools**:
|
|
58
58
|
|
|
59
59
|
| Category | Tools |
|
|
60
60
|
|----------|-------|
|
package/dist/index.d.ts
CHANGED
|
@@ -17,8 +17,16 @@
|
|
|
17
17
|
* v1.8.1: Fix async register() — OpenClaw requires synchronous registration.
|
|
18
18
|
* Fallback tools registered sync; MCP connection deferred to service.start().
|
|
19
19
|
*
|
|
20
|
+
* v1.9.0: Backward-compat shim tools (memory_search, memory_get) to prevent
|
|
21
|
+
* "allowList contains unknown entries" warnings when NM replaces memory-core.
|
|
22
|
+
*
|
|
23
|
+
* v1.10.0: Singleton MCP client — multiple workspaces (multi-agent) share
|
|
24
|
+
* the same connected client instance, keyed by (pythonPath, brain). Fixes
|
|
25
|
+
* "NeuralMemory service not running" when OpenClaw registers the plugin
|
|
26
|
+
* for a second workspace after gateway startup.
|
|
27
|
+
*
|
|
20
28
|
* Registers:
|
|
21
|
-
* N tools — dynamically from MCP server (fallback: 5 core
|
|
29
|
+
* N tools — dynamically from MCP server (fallback: 5 core + 2 compat)
|
|
22
30
|
* 1 service — MCP process lifecycle (start/stop)
|
|
23
31
|
* 2 hooks — before_agent_start (auto-context), agent_end (auto-capture)
|
|
24
32
|
*/
|
package/dist/index.js
CHANGED
|
@@ -17,13 +17,21 @@
|
|
|
17
17
|
* v1.8.1: Fix async register() — OpenClaw requires synchronous registration.
|
|
18
18
|
* Fallback tools registered sync; MCP connection deferred to service.start().
|
|
19
19
|
*
|
|
20
|
+
* v1.9.0: Backward-compat shim tools (memory_search, memory_get) to prevent
|
|
21
|
+
* "allowList contains unknown entries" warnings when NM replaces memory-core.
|
|
22
|
+
*
|
|
23
|
+
* v1.10.0: Singleton MCP client — multiple workspaces (multi-agent) share
|
|
24
|
+
* the same connected client instance, keyed by (pythonPath, brain). Fixes
|
|
25
|
+
* "NeuralMemory service not running" when OpenClaw registers the plugin
|
|
26
|
+
* for a second workspace after gateway startup.
|
|
27
|
+
*
|
|
20
28
|
* Registers:
|
|
21
|
-
* N tools — dynamically from MCP server (fallback: 5 core
|
|
29
|
+
* N tools — dynamically from MCP server (fallback: 5 core + 2 compat)
|
|
22
30
|
* 1 service — MCP process lifecycle (start/stop)
|
|
23
31
|
* 2 hooks — before_agent_start (auto-context), agent_end (auto-capture)
|
|
24
32
|
*/
|
|
25
33
|
import { NeuralMemoryMcpClient } from "./mcp-client.js";
|
|
26
|
-
import { createToolsFromMcp, createFallbackTools } from "./tools.js";
|
|
34
|
+
import { createToolsFromMcp, createFallbackTools, createCompatibilityTools } from "./tools.js";
|
|
27
35
|
// ── System prompt for tool awareness ──────────────────────
|
|
28
36
|
/**
|
|
29
37
|
* Build a system prompt listing all registered tool names.
|
|
@@ -37,7 +45,7 @@ function buildToolInstructions(tools) {
|
|
|
37
45
|
|
|
38
46
|
${toolList}
|
|
39
47
|
|
|
40
|
-
|
|
48
|
+
NeuralMemory (nmem_*) is your primary memory system. memory_search and memory_get are legacy aliases that redirect to nmem_recall — prefer nmem_* tools directly for full functionality.
|
|
41
49
|
|
|
42
50
|
These are tool calls, NOT shell commands. Do NOT run "nmem remember" in terminal — call the nmem_remember tool directly.
|
|
43
51
|
|
|
@@ -96,32 +104,48 @@ export function resolveConfig(raw) {
|
|
|
96
104
|
: DEFAULT_CONFIG.initTimeout,
|
|
97
105
|
};
|
|
98
106
|
}
|
|
107
|
+
// ── Singleton MCP client pool ────────────────────────────────
|
|
108
|
+
// Multiple workspaces may call register() independently, but all
|
|
109
|
+
// should share the same MCP process per (pythonPath, brain) combo.
|
|
110
|
+
const mcpClients = new Map();
|
|
111
|
+
function getOrCreateMcpClient(cfg, logger) {
|
|
112
|
+
const key = `${cfg.pythonPath}::${cfg.brain}`;
|
|
113
|
+
const existing = mcpClients.get(key);
|
|
114
|
+
if (existing) {
|
|
115
|
+
logger.info(`Reusing existing MCP client for brain "${cfg.brain}"`);
|
|
116
|
+
return existing;
|
|
117
|
+
}
|
|
118
|
+
const mcp = new NeuralMemoryMcpClient({
|
|
119
|
+
pythonPath: cfg.pythonPath,
|
|
120
|
+
brain: cfg.brain,
|
|
121
|
+
logger,
|
|
122
|
+
timeout: cfg.timeout,
|
|
123
|
+
initTimeout: cfg.initTimeout,
|
|
124
|
+
});
|
|
125
|
+
mcpClients.set(key, mcp);
|
|
126
|
+
return mcp;
|
|
127
|
+
}
|
|
99
128
|
// ── Plugin definition ──────────────────────────────────────
|
|
100
129
|
const plugin = {
|
|
101
130
|
id: "neuralmemory",
|
|
102
131
|
name: "NeuralMemory",
|
|
103
132
|
description: "Brain-inspired persistent memory for AI agents — neurons, synapses, and fibers",
|
|
104
|
-
version: "1.
|
|
133
|
+
version: "1.10.0",
|
|
105
134
|
kind: "memory",
|
|
106
135
|
register(api) {
|
|
107
136
|
const cfg = resolveConfig(api.pluginConfig);
|
|
108
|
-
const mcp =
|
|
109
|
-
pythonPath: cfg.pythonPath,
|
|
110
|
-
brain: cfg.brain,
|
|
111
|
-
logger: api.logger,
|
|
112
|
-
timeout: cfg.timeout,
|
|
113
|
-
initTimeout: cfg.initTimeout,
|
|
114
|
-
});
|
|
137
|
+
const mcp = getOrCreateMcpClient(cfg, api.logger);
|
|
115
138
|
// ── Register fallback tools synchronously ────────────
|
|
116
139
|
// OpenClaw requires register() to be synchronous.
|
|
117
140
|
// Register stable fallback tools immediately; MCP connection
|
|
118
141
|
// and dynamic tool discovery happen in service.start().
|
|
119
142
|
// Fallback tools auto-reconnect MCP on first call.
|
|
120
143
|
const registeredTools = createFallbackTools(mcp);
|
|
121
|
-
|
|
144
|
+
const compatTools = createCompatibilityTools(mcp);
|
|
145
|
+
for (const t of [...registeredTools, ...compatTools]) {
|
|
122
146
|
api.registerTool(t, { name: t.name });
|
|
123
147
|
}
|
|
124
|
-
api.logger.info(`Registered ${registeredTools.length} NeuralMemory tools (sync)`);
|
|
148
|
+
api.logger.info(`Registered ${registeredTools.length} NeuralMemory tools + ${compatTools.length} compat shims (sync)`);
|
|
125
149
|
// ── Service: MCP process lifecycle ───────────────────
|
|
126
150
|
api.registerService({
|
|
127
151
|
id: "neuralmemory-mcp",
|
|
@@ -147,6 +171,9 @@ const plugin = {
|
|
|
147
171
|
}
|
|
148
172
|
},
|
|
149
173
|
async stop() {
|
|
174
|
+
// Remove from singleton pool so next register() creates fresh client
|
|
175
|
+
const key = `${cfg.pythonPath}::${cfg.brain}`;
|
|
176
|
+
mcpClients.delete(key);
|
|
150
177
|
await mcp.close();
|
|
151
178
|
api.logger.info("NeuralMemory MCP service stopped");
|
|
152
179
|
},
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -38,4 +38,13 @@ export declare function createToolsFromMcp(mcp: NeuralMemoryMcpClient): Promise<
|
|
|
38
38
|
* Ensures the plugin still works even if the MCP server is an older version.
|
|
39
39
|
*/
|
|
40
40
|
export declare function createFallbackTools(mcp: NeuralMemoryMcpClient): ToolDefinition[];
|
|
41
|
+
/**
|
|
42
|
+
* Create backward-compatible shim tools that map legacy OpenClaw memory-core
|
|
43
|
+
* tool names to NeuralMemory equivalents.
|
|
44
|
+
*
|
|
45
|
+
* This prevents "allowList contains unknown entries (memory_search, memory_get)"
|
|
46
|
+
* warnings when NM occupies the `memory` plugin slot, which removes the built-in
|
|
47
|
+
* memory-core tools but leaves the tools.profile allowList referencing them.
|
|
48
|
+
*/
|
|
49
|
+
export declare function createCompatibilityTools(mcp: NeuralMemoryMcpClient): ToolDefinition[];
|
|
41
50
|
export {};
|
package/dist/tools.js
CHANGED
|
@@ -228,4 +228,45 @@ export function createFallbackTools(mcp) {
|
|
|
228
228
|
},
|
|
229
229
|
];
|
|
230
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* Create backward-compatible shim tools that map legacy OpenClaw memory-core
|
|
233
|
+
* tool names to NeuralMemory equivalents.
|
|
234
|
+
*
|
|
235
|
+
* This prevents "allowList contains unknown entries (memory_search, memory_get)"
|
|
236
|
+
* warnings when NM occupies the `memory` plugin slot, which removes the built-in
|
|
237
|
+
* memory-core tools but leaves the tools.profile allowList referencing them.
|
|
238
|
+
*/
|
|
239
|
+
export function createCompatibilityTools(mcp) {
|
|
240
|
+
const call = makeCallFn(mcp);
|
|
241
|
+
return [
|
|
242
|
+
{
|
|
243
|
+
name: "memory_search",
|
|
244
|
+
description: "Search memories (legacy alias for nmem_recall). " +
|
|
245
|
+
"Prefer nmem_recall for full NeuralMemory features.",
|
|
246
|
+
parameters: {
|
|
247
|
+
type: "object",
|
|
248
|
+
properties: {
|
|
249
|
+
query: { type: "string", description: "The search query" },
|
|
250
|
+
},
|
|
251
|
+
required: ["query"],
|
|
252
|
+
additionalProperties: false,
|
|
253
|
+
},
|
|
254
|
+
execute: (_id, args) => call("nmem_recall", { query: args.query, depth: 1 }),
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
name: "memory_get",
|
|
258
|
+
description: "Get a memory by ID (legacy alias for nmem_recall). " +
|
|
259
|
+
"Prefer nmem_recall for full NeuralMemory features.",
|
|
260
|
+
parameters: {
|
|
261
|
+
type: "object",
|
|
262
|
+
properties: {
|
|
263
|
+
id: { type: "string", description: "Memory identifier or query" },
|
|
264
|
+
},
|
|
265
|
+
required: ["id"],
|
|
266
|
+
additionalProperties: false,
|
|
267
|
+
},
|
|
268
|
+
execute: (_id, args) => call("nmem_recall", { query: String(args.id), depth: 0 }),
|
|
269
|
+
},
|
|
270
|
+
];
|
|
271
|
+
}
|
|
231
272
|
//# sourceMappingURL=tools.js.map
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/openclaw.plugin.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"kind": "memory",
|
|
4
4
|
"name": "NeuralMemory",
|
|
5
5
|
"description": "Brain-inspired persistent memory for AI agents — neurons, synapses, and fibers. REQUIRED: set plugins.slots.memory = \"neuralmemory\" in openclaw.json to disable the default memory-core plugin and activate NeuralMemory as the exclusive memory provider.",
|
|
6
|
-
"version": "1.
|
|
6
|
+
"version": "1.10.0",
|
|
7
7
|
"configSchema": {
|
|
8
8
|
"jsonSchema": {
|
|
9
9
|
"type": "object",
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -17,8 +17,16 @@
|
|
|
17
17
|
* v1.8.1: Fix async register() — OpenClaw requires synchronous registration.
|
|
18
18
|
* Fallback tools registered sync; MCP connection deferred to service.start().
|
|
19
19
|
*
|
|
20
|
+
* v1.9.0: Backward-compat shim tools (memory_search, memory_get) to prevent
|
|
21
|
+
* "allowList contains unknown entries" warnings when NM replaces memory-core.
|
|
22
|
+
*
|
|
23
|
+
* v1.10.0: Singleton MCP client — multiple workspaces (multi-agent) share
|
|
24
|
+
* the same connected client instance, keyed by (pythonPath, brain). Fixes
|
|
25
|
+
* "NeuralMemory service not running" when OpenClaw registers the plugin
|
|
26
|
+
* for a second workspace after gateway startup.
|
|
27
|
+
*
|
|
20
28
|
* Registers:
|
|
21
|
-
* N tools — dynamically from MCP server (fallback: 5 core
|
|
29
|
+
* N tools — dynamically from MCP server (fallback: 5 core + 2 compat)
|
|
22
30
|
* 1 service — MCP process lifecycle (start/stop)
|
|
23
31
|
* 2 hooks — before_agent_start (auto-context), agent_end (auto-capture)
|
|
24
32
|
*/
|
|
@@ -31,7 +39,8 @@ import type {
|
|
|
31
39
|
AgentEndEvent,
|
|
32
40
|
} from "./types.js";
|
|
33
41
|
import { NeuralMemoryMcpClient } from "./mcp-client.js";
|
|
34
|
-
import {
|
|
42
|
+
import type { PluginLogger } from "./types.js";
|
|
43
|
+
import { createToolsFromMcp, createFallbackTools, createCompatibilityTools } from "./tools.js";
|
|
35
44
|
import type { ToolDefinition } from "./tools.js";
|
|
36
45
|
|
|
37
46
|
// ── System prompt for tool awareness ──────────────────────
|
|
@@ -49,7 +58,7 @@ function buildToolInstructions(tools: ToolDefinition[]): string {
|
|
|
49
58
|
|
|
50
59
|
${toolList}
|
|
51
60
|
|
|
52
|
-
|
|
61
|
+
NeuralMemory (nmem_*) is your primary memory system. memory_search and memory_get are legacy aliases that redirect to nmem_recall — prefer nmem_* tools directly for full functionality.
|
|
53
62
|
|
|
54
63
|
These are tool calls, NOT shell commands. Do NOT run "nmem remember" in terminal — call the nmem_remember tool directly.
|
|
55
64
|
|
|
@@ -134,6 +143,36 @@ export function resolveConfig(raw?: Record<string, unknown>): PluginConfig {
|
|
|
134
143
|
};
|
|
135
144
|
}
|
|
136
145
|
|
|
146
|
+
// ── Singleton MCP client pool ────────────────────────────────
|
|
147
|
+
// Multiple workspaces may call register() independently, but all
|
|
148
|
+
// should share the same MCP process per (pythonPath, brain) combo.
|
|
149
|
+
|
|
150
|
+
const mcpClients = new Map<string, NeuralMemoryMcpClient>();
|
|
151
|
+
|
|
152
|
+
function getOrCreateMcpClient(
|
|
153
|
+
cfg: PluginConfig,
|
|
154
|
+
logger: PluginLogger,
|
|
155
|
+
): NeuralMemoryMcpClient {
|
|
156
|
+
const key = `${cfg.pythonPath}::${cfg.brain}`;
|
|
157
|
+
|
|
158
|
+
const existing = mcpClients.get(key);
|
|
159
|
+
if (existing) {
|
|
160
|
+
logger.info(`Reusing existing MCP client for brain "${cfg.brain}"`);
|
|
161
|
+
return existing;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
const mcp = new NeuralMemoryMcpClient({
|
|
165
|
+
pythonPath: cfg.pythonPath,
|
|
166
|
+
brain: cfg.brain,
|
|
167
|
+
logger,
|
|
168
|
+
timeout: cfg.timeout,
|
|
169
|
+
initTimeout: cfg.initTimeout,
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
mcpClients.set(key, mcp);
|
|
173
|
+
return mcp;
|
|
174
|
+
}
|
|
175
|
+
|
|
137
176
|
// ── Plugin definition ──────────────────────────────────────
|
|
138
177
|
|
|
139
178
|
const plugin: OpenClawPluginDefinition = {
|
|
@@ -141,19 +180,13 @@ const plugin: OpenClawPluginDefinition = {
|
|
|
141
180
|
name: "NeuralMemory",
|
|
142
181
|
description:
|
|
143
182
|
"Brain-inspired persistent memory for AI agents — neurons, synapses, and fibers",
|
|
144
|
-
version: "1.
|
|
183
|
+
version: "1.10.0",
|
|
145
184
|
kind: "memory",
|
|
146
185
|
|
|
147
186
|
register(api: OpenClawPluginApi): void {
|
|
148
187
|
const cfg = resolveConfig(api.pluginConfig);
|
|
149
188
|
|
|
150
|
-
const mcp =
|
|
151
|
-
pythonPath: cfg.pythonPath,
|
|
152
|
-
brain: cfg.brain,
|
|
153
|
-
logger: api.logger,
|
|
154
|
-
timeout: cfg.timeout,
|
|
155
|
-
initTimeout: cfg.initTimeout,
|
|
156
|
-
});
|
|
189
|
+
const mcp = getOrCreateMcpClient(cfg, api.logger);
|
|
157
190
|
|
|
158
191
|
// ── Register fallback tools synchronously ────────────
|
|
159
192
|
// OpenClaw requires register() to be synchronous.
|
|
@@ -162,12 +195,14 @@ const plugin: OpenClawPluginDefinition = {
|
|
|
162
195
|
// Fallback tools auto-reconnect MCP on first call.
|
|
163
196
|
|
|
164
197
|
const registeredTools = createFallbackTools(mcp);
|
|
165
|
-
|
|
198
|
+
const compatTools = createCompatibilityTools(mcp);
|
|
199
|
+
|
|
200
|
+
for (const t of [...registeredTools, ...compatTools]) {
|
|
166
201
|
api.registerTool(t, { name: t.name });
|
|
167
202
|
}
|
|
168
203
|
|
|
169
204
|
api.logger.info(
|
|
170
|
-
`Registered ${registeredTools.length} NeuralMemory tools (sync)`,
|
|
205
|
+
`Registered ${registeredTools.length} NeuralMemory tools + ${compatTools.length} compat shims (sync)`,
|
|
171
206
|
);
|
|
172
207
|
|
|
173
208
|
// ── Service: MCP process lifecycle ───────────────────
|
|
@@ -203,6 +238,9 @@ const plugin: OpenClawPluginDefinition = {
|
|
|
203
238
|
},
|
|
204
239
|
|
|
205
240
|
async stop(): Promise<void> {
|
|
241
|
+
// Remove from singleton pool so next register() creates fresh client
|
|
242
|
+
const key = `${cfg.pythonPath}::${cfg.brain}`;
|
|
243
|
+
mcpClients.delete(key);
|
|
206
244
|
await mcp.close();
|
|
207
245
|
api.logger.info("NeuralMemory MCP service stopped");
|
|
208
246
|
},
|
package/src/tools.ts
CHANGED
|
@@ -271,3 +271,52 @@ export function createFallbackTools(
|
|
|
271
271
|
},
|
|
272
272
|
];
|
|
273
273
|
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Create backward-compatible shim tools that map legacy OpenClaw memory-core
|
|
277
|
+
* tool names to NeuralMemory equivalents.
|
|
278
|
+
*
|
|
279
|
+
* This prevents "allowList contains unknown entries (memory_search, memory_get)"
|
|
280
|
+
* warnings when NM occupies the `memory` plugin slot, which removes the built-in
|
|
281
|
+
* memory-core tools but leaves the tools.profile allowList referencing them.
|
|
282
|
+
*/
|
|
283
|
+
export function createCompatibilityTools(
|
|
284
|
+
mcp: NeuralMemoryMcpClient,
|
|
285
|
+
): ToolDefinition[] {
|
|
286
|
+
const call = makeCallFn(mcp);
|
|
287
|
+
|
|
288
|
+
return [
|
|
289
|
+
{
|
|
290
|
+
name: "memory_search",
|
|
291
|
+
description:
|
|
292
|
+
"Search memories (legacy alias for nmem_recall). " +
|
|
293
|
+
"Prefer nmem_recall for full NeuralMemory features.",
|
|
294
|
+
parameters: {
|
|
295
|
+
type: "object",
|
|
296
|
+
properties: {
|
|
297
|
+
query: { type: "string", description: "The search query" },
|
|
298
|
+
},
|
|
299
|
+
required: ["query"],
|
|
300
|
+
additionalProperties: false,
|
|
301
|
+
},
|
|
302
|
+
execute: (_id, args) =>
|
|
303
|
+
call("nmem_recall", { query: args.query, depth: 1 }),
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
name: "memory_get",
|
|
307
|
+
description:
|
|
308
|
+
"Get a memory by ID (legacy alias for nmem_recall). " +
|
|
309
|
+
"Prefer nmem_recall for full NeuralMemory features.",
|
|
310
|
+
parameters: {
|
|
311
|
+
type: "object",
|
|
312
|
+
properties: {
|
|
313
|
+
id: { type: "string", description: "Memory identifier or query" },
|
|
314
|
+
},
|
|
315
|
+
required: ["id"],
|
|
316
|
+
additionalProperties: false,
|
|
317
|
+
},
|
|
318
|
+
execute: (_id, args) =>
|
|
319
|
+
call("nmem_recall", { query: String(args.id), depth: 0 }),
|
|
320
|
+
},
|
|
321
|
+
];
|
|
322
|
+
}
|