@minns/openclaw-minns 0.3.3 → 0.5.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/dist/index.d.ts CHANGED
@@ -2,6 +2,8 @@ import type { OpenClawPluginApi } from "openclaw/plugin-sdk";
2
2
  declare const _default: {
3
3
  id: string;
4
4
  name: string;
5
+ description: string;
6
+ kind: "memory";
5
7
  register(api: OpenClawPluginApi): void;
6
8
  };
7
9
  export default _default;
package/dist/index.js CHANGED
@@ -1,9 +1,24 @@
1
- import { spawn } from "node:child_process";
2
1
  import { loadConfig, buildClient } from "./config.js";
3
- import { dispatch } from "./tools.js";
2
+ import { dispatch, TOOL_DEFS, registry, DEFAULT_MEMORY_SPEC } from "./tools.js";
3
+ import { buildSidecarInstruction, extractIntentAndResponse, } from "minns-sdk";
4
4
  const PLUGIN_ID = "openclaw-minns";
5
+ /** Safely extract a trimmed string from an unknown value. */
6
+ function toStr(v) {
7
+ return typeof v === "string" ? v.trim() : "";
8
+ }
9
+ /** Truncate to a max length. */
10
+ function clip(v, n = 2000) {
11
+ const s = typeof v === "string" ? v : JSON.stringify(v ?? "");
12
+ return s.length > n ? `${s.slice(0, n)}…` : s;
13
+ }
5
14
  function getPluginConfig(api) {
6
- return (api.config?.plugins?.entries?.[PLUGIN_ID]?.config ?? {});
15
+ const raw = (api.pluginConfig ?? api.config?.plugins?.entries?.[PLUGIN_ID]?.config ?? {});
16
+ return {
17
+ env: raw.env && typeof raw.env === "object" ? raw.env : undefined,
18
+ autoRecall: raw.autoRecall !== false,
19
+ autoCapture: raw.autoCapture !== false,
20
+ topK: typeof raw.topK === "number" ? raw.topK : 5,
21
+ };
7
22
  }
8
23
  function mask(v) {
9
24
  if (!v)
@@ -15,146 +30,295 @@ function mask(v) {
15
30
  export default {
16
31
  id: PLUGIN_ID,
17
32
  name: "Minns MCP Bridge",
33
+ description: "EventGraphDB memory backend — semantic memory, strategies, and claim extraction",
34
+ kind: "memory",
18
35
  register(api) {
19
- let proc = null;
20
- let startCount = 0;
21
- let lastExit = null;
22
- const stop = () => {
23
- if (!proc)
24
- return;
25
- try {
26
- proc.kill("SIGTERM");
27
- }
28
- catch { }
29
- proc = null;
30
- };
31
- const start = () => {
32
- if (proc)
33
- return; // already running
34
- const cfg = getPluginConfig(api);
35
- const command = cfg.command?.trim() || "openclaw-minns-mcp";
36
- const args = Array.isArray(cfg.args) ? cfg.args : [];
37
- const env = {
38
- ...process.env,
39
- ...(cfg.env ?? {}),
40
- };
41
- proc = spawn(command, args, {
42
- env,
43
- stdio: ["pipe", "pipe", "pipe"],
44
- });
45
- startCount += 1;
46
- api.logger.info?.(`[${PLUGIN_ID}] started: ${command} ${args.join(" ")}`.trim());
47
- proc.stdout.on("data", (d) => {
48
- api.logger.debug?.(`[${PLUGIN_ID}] stdout: ${String(d).trim()}`);
49
- });
50
- proc.stderr.on("data", (d) => {
51
- api.logger.warn?.(`[${PLUGIN_ID}] stderr: ${String(d).trim()}`);
52
- });
53
- proc.on("exit", (code, signal) => {
54
- lastExit = { code, signal, at: new Date().toISOString() };
55
- api.logger.warn?.(`[${PLUGIN_ID}] exited code=${code} signal=${signal ?? "none"}`);
56
- proc = null;
57
- });
58
- proc.on("error", (err) => {
59
- api.logger.error?.(`[${PLUGIN_ID}] process error: ${err instanceof Error ? err.message : String(err)}`);
60
- });
61
- };
62
- // start on plugin load
63
- start();
64
- // graceful shutdown on process exit
65
- const shutdown = () => stop();
66
- process.once("SIGINT", shutdown);
67
- process.once("SIGTERM", shutdown);
36
+ const cfg = getPluginConfig(api);
37
+ // ------------------------------------------------------------------
38
+ // Minns SDK client (in-process, no subprocess needed)
39
+ // ------------------------------------------------------------------
40
+ const minnsCfg = loadConfig();
41
+ const minnsClient = buildClient(minnsCfg);
42
+ const OBS_AGENT_ID = 1;
43
+ api.logger.info(`[${PLUGIN_ID}] registered (autoRecall: ${cfg.autoRecall}, autoCapture: ${cfg.autoCapture}, topK: ${cfg.topK})`);
44
+ // ------------------------------------------------------------------
45
+ // Slash command: /minns
46
+ // ------------------------------------------------------------------
68
47
  api.registerCommand({
69
48
  name: "minns",
70
- description: "Minns MCP bridge controls: status|ping|restart|stop|start",
49
+ description: "Minns memory plugin: status|ping|health",
71
50
  acceptsArgs: true,
72
51
  handler: async (ctx) => {
73
- const arg = (ctx.args ?? "").trim().toLowerCase();
74
- const cfg = getPluginConfig(api);
52
+ const arg = toStr(ctx.args).toLowerCase();
75
53
  const env = cfg.env ?? {};
76
- if (arg === "ping") {
77
- return { text: proc ? "pong (mcp running)" : "pong (plugin loaded, mcp stopped)" };
54
+ if (arg === "ping")
55
+ return { text: "pong" };
56
+ if (arg === "health") {
57
+ try {
58
+ const result = await dispatch(minnsClient, "health.check", {});
59
+ return { text: JSON.stringify(result, null, 2) };
60
+ }
61
+ catch (err) {
62
+ return { text: `health check failed: ${err instanceof Error ? err.message : String(err)}` };
63
+ }
78
64
  }
79
- if (arg === "restart") {
80
- stop();
81
- start();
82
- return { text: "Minns MCP restarted" };
83
- }
84
- if (arg === "stop") {
85
- stop();
86
- return { text: "Minns MCP stopped." };
87
- }
88
- if (arg === "start") {
89
- start();
90
- return { text: proc ? "Minns MCP running" : "Minns MCP failed to start" };
91
- }
92
- const cmd = cfg.command?.trim() || "openclaw-minns-mcp";
93
- const cmdArgs = Array.isArray(cfg.args) ? cfg.args : [];
94
65
  return {
95
66
  text: [
96
67
  "openclaw-minns status",
97
- `running: ${proc ? "yes" : "no"}`,
98
- `pid: ${proc?.pid ?? "-"}`,
99
- `starts: ${startCount}`,
100
- `command: ${cmd} ${cmdArgs.join(" ")}`.trim(),
101
68
  `MINNS_BASE_URL: ${env.MINNS_BASE_URL ?? "(not set)"}`,
102
69
  `MINNS_API_KEY: ${mask(env.MINNS_API_KEY)}`,
103
- `lastExit: ${lastExit
104
- ? `${lastExit.at} (code=${lastExit.code}, signal=${lastExit.signal ?? "none"})`
105
- : "none"}`,
70
+ `autoRecall: ${cfg.autoRecall}, autoCapture: ${cfg.autoCapture}, topK: ${cfg.topK}`,
106
71
  "",
107
- "Use: /minns ping | /minns restart | /minns stop | /minns start",
72
+ "Use: /minns ping | /minns health",
108
73
  ].join("\n"),
109
74
  };
110
75
  },
111
76
  });
112
77
  // ------------------------------------------------------------------
113
- // Hook: inbound message Minns SDK
78
+ // Register tools (callable by agent directly, in-process)
114
79
  // ------------------------------------------------------------------
115
- const minnsCfg = loadConfig();
116
- const minnsClient = buildClient(minnsCfg);
117
- api.registerHook({
118
- id: "minns-inbound",
119
- description: "Send inbound DM messages to Minns for memory & claim extraction",
120
- events: ["message.received"],
121
- async handler(event) {
122
- const text = (event.text ?? "").trim();
123
- if (!text)
80
+ for (const toolDef of TOOL_DEFS) {
81
+ api.registerTool({
82
+ name: toolDef.name,
83
+ label: toolDef.name.replace(".", " ").replace(/\b\w/g, (c) => c.toUpperCase()),
84
+ description: toolDef.description,
85
+ parameters: toolDef.inputSchema,
86
+ async execute(_toolCallId, params) {
87
+ try {
88
+ const result = await dispatch(minnsClient, toolDef.name, params);
89
+ return {
90
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
91
+ };
92
+ }
93
+ catch (err) {
94
+ return {
95
+ content: [{ type: "text", text: `${toolDef.name} failed: ${err instanceof Error ? err.message : String(err)}` }],
96
+ details: { error: String(err) },
97
+ };
98
+ }
99
+ },
100
+ }, { name: toolDef.name });
101
+ }
102
+ // ------------------------------------------------------------------
103
+ // Auto-recall + sidecar: inject memories AND intent instruction
104
+ // ------------------------------------------------------------------
105
+ // Track last user message per session for intent parsing in agent_end
106
+ let lastUserMessage = "";
107
+ const resolveSpec = (goals) => registry.resolve("memory", goals) ?? DEFAULT_MEMORY_SPEC;
108
+ if (cfg.autoRecall) {
109
+ api.on("before_agent_start", async (event, _ctx) => {
110
+ const prompt = toStr(event.prompt);
111
+ if (prompt.length < 5)
112
+ return;
113
+ lastUserMessage = prompt;
114
+ const parts = [];
115
+ try {
116
+ const memories = await dispatch(minnsClient, "memory.search", {
117
+ query: prompt,
118
+ limit: cfg.topK,
119
+ agent_id: OBS_AGENT_ID,
120
+ });
121
+ if (Array.isArray(memories) && memories.length > 0) {
122
+ const memoryBlock = memories
123
+ .map((m) => `- ${toStr(m.summary || m.takeaway || "")}`)
124
+ .filter((line) => line.length > 2)
125
+ .join("\n");
126
+ if (memoryBlock) {
127
+ parts.push(`<relevant-memories>\nThe following memories may be relevant:\n${memoryBlock}\n</relevant-memories>`);
128
+ api.logger.info(`[${PLUGIN_ID}] injecting ${memories.length} memories`);
129
+ }
130
+ }
131
+ }
132
+ catch (err) {
133
+ api.logger.warn(`[${PLUGIN_ID}] memory recall failed: ${err instanceof Error ? err.message : String(err)}`);
134
+ }
135
+ try {
136
+ const spec = resolveSpec();
137
+ const sidecarInstruction = buildSidecarInstruction(spec);
138
+ parts.push(`<intent-sidecar>\n${sidecarInstruction}\n</intent-sidecar>`);
139
+ }
140
+ catch (err) {
141
+ api.logger.warn(`[${PLUGIN_ID}] sidecar instruction failed: ${err instanceof Error ? err.message : String(err)}`);
142
+ }
143
+ if (parts.length === 0)
124
144
  return;
125
- // Only process DMs (skip group/channel noise)
126
- const kind = event.peer?.kind ?? "";
127
- if (kind && kind !== "direct" && kind !== "dm")
145
+ return { systemContext: parts.join("\n\n") };
146
+ });
147
+ }
148
+ // ------------------------------------------------------------------
149
+ // Auto-capture: parse intent sidecar + store with correct semantics
150
+ // ------------------------------------------------------------------
151
+ if (cfg.autoCapture) {
152
+ api.on("agent_end", async (event, ctx) => {
153
+ if (!event.success || !event.messages || event.messages.length === 0)
128
154
  return;
129
- const agentId = 1; // default plugin agent
130
- const sessionId = event.timestamp ?? Date.now();
155
+ const sessionKey = toStr(ctx.sessionKey);
156
+ const sessionId = sessionKey ? parseInt(sessionKey, 10) || Date.now() : Date.now();
131
157
  try {
132
- // 1. Capture the message as a Context event (enables claim extraction)
133
- await minnsClient
134
- .event("openclaw", {
135
- agentId,
158
+ let assistantOutput = "";
159
+ const recent = event.messages.slice(-10);
160
+ for (let i = recent.length - 1; i >= 0; i--) {
161
+ const msg = recent[i];
162
+ if (!msg || typeof msg !== "object")
163
+ continue;
164
+ if (msg.role !== "assistant")
165
+ continue;
166
+ const content = msg.content;
167
+ if (typeof content === "string") {
168
+ assistantOutput = content;
169
+ }
170
+ else if (Array.isArray(content)) {
171
+ for (const block of content) {
172
+ if (block && typeof block === "object" && block.type === "text") {
173
+ assistantOutput += (assistantOutput ? "\n" : "") + toStr(block.text);
174
+ }
175
+ }
176
+ }
177
+ break;
178
+ }
179
+ if (!assistantOutput)
180
+ return;
181
+ const spec = resolveSpec();
182
+ const { intent: parsedIntent, assistantResponse } = extractIntentAndResponse(assistantOutput, lastUserMessage, spec, {
183
+ onTelemetry: (data) => {
184
+ api.logger.debug(`[${PLUGIN_ID}] intent parse: ${JSON.stringify(data)}`);
185
+ },
186
+ });
187
+ api.logger.info(`[${PLUGIN_ID}] parsed intent="${parsedIntent.intent}" semantic=${parsedIntent.enable_semantic} claims=${parsedIntent.claims_hint?.length ?? 0}`);
188
+ const contextText = clip(assistantResponse || assistantOutput);
189
+ const ev = minnsClient.event("openclaw", {
190
+ agentId: OBS_AGENT_ID,
136
191
  sessionId,
137
- enableSemantic: true,
138
- })
139
- .context(text, "dm_message")
140
- .state({
141
- channel: event.channel,
142
- sender_id: event.senderId,
143
- peer_kind: kind,
144
- })
145
- .send();
146
- api.logger.debug?.(`[${PLUGIN_ID}] ingested message from ${event.senderId ?? "unknown"}`);
147
- // 2. Search for relevant memories to provide context back
148
- const memories = await dispatch(minnsClient, "memory.search", {
149
- query: text,
150
- limit: 5,
151
- agent_id: agentId,
192
+ enableSemantic: parsedIntent.enable_semantic,
152
193
  });
153
- api.logger.debug?.(`[${PLUGIN_ID}] memory recall: ${JSON.stringify(memories)}`);
194
+ ev.context(contextText, parsedIntent.intent);
195
+ const statePayload = {
196
+ session_key: sessionKey,
197
+ intent: parsedIntent.intent,
198
+ slots: parsedIntent.slots,
199
+ confidence: parsedIntent.confidence,
200
+ };
201
+ if (parsedIntent.claims_hint && parsedIntent.claims_hint.length > 0) {
202
+ statePayload.claims_hint = parsedIntent.claims_hint;
203
+ }
204
+ if (parsedIntent.goal_updates && parsedIntent.goal_updates.length > 0) {
205
+ statePayload.goal_updates = parsedIntent.goal_updates;
206
+ for (const gu of parsedIntent.goal_updates) {
207
+ const priority = typeof gu.priority === "number" ? Math.round(gu.priority * 5) : 3;
208
+ const progress = typeof gu.progress === "number" ? gu.progress : 0;
209
+ ev.goal(gu.goal, priority, progress);
210
+ }
211
+ }
212
+ ev.state(statePayload);
213
+ await ev.enqueue();
214
+ api.logger.info(`[${PLUGIN_ID}] captured turn (intent=${parsedIntent.intent}, semantic=${parsedIntent.enable_semantic})`);
154
215
  }
155
216
  catch (err) {
156
- api.logger.error?.(`[${PLUGIN_ID}] hook error: ${err instanceof Error ? err.message : String(err)}`);
217
+ api.logger.warn(`[${PLUGIN_ID}] auto-capture failed: ${err instanceof Error ? err.message : String(err)}`);
157
218
  }
219
+ });
220
+ }
221
+ // ------------------------------------------------------------------
222
+ // Observability hooks (non-blocking via enqueue)
223
+ // ------------------------------------------------------------------
224
+ api.on("message_received", async (event, ctx) => {
225
+ try {
226
+ const text = toStr(event.content);
227
+ if (!text)
228
+ return;
229
+ const meta = (event.metadata ?? {});
230
+ const chatType = toStr(meta.chatType);
231
+ if (chatType === "group" || chatType === "channel")
232
+ return;
233
+ await minnsClient
234
+ .event("openclaw", { agentId: OBS_AGENT_ID, sessionId: Date.now(), enableSemantic: true })
235
+ .context(clip(text), "message_received")
236
+ .state({
237
+ from: event.from,
238
+ channel_id: ctx.channelId,
239
+ account_id: ctx.accountId,
240
+ conversation_id: ctx.conversationId,
241
+ })
242
+ .enqueue();
243
+ }
244
+ catch (err) {
245
+ api.logger.error(`[${PLUGIN_ID}] message_received error: ${err instanceof Error ? err.message : String(err)}`);
246
+ }
247
+ });
248
+ api.on("after_tool_call", async (event, ctx) => {
249
+ try {
250
+ await minnsClient
251
+ .event("openclaw", { agentId: OBS_AGENT_ID, sessionId: Date.now(), enableSemantic: false })
252
+ .action(toStr(event.toolName) || "unknown_tool", {
253
+ params: event.params ?? {},
254
+ result_preview: clip(event.result, 1200),
255
+ })
256
+ .outcome({ duration_ms: event.durationMs, error: event.error })
257
+ .state({ agent_id: ctx.agentId, session_key: ctx.sessionKey })
258
+ .enqueue();
259
+ }
260
+ catch (err) {
261
+ api.logger.error(`[${PLUGIN_ID}] after_tool_call error: ${err instanceof Error ? err.message : String(err)}`);
262
+ }
263
+ });
264
+ // ------------------------------------------------------------------
265
+ // CLI subcommands
266
+ // ------------------------------------------------------------------
267
+ api.registerCli(({ program }) => {
268
+ const minns = program.command("minns").description("Minns memory plugin commands");
269
+ minns
270
+ .command("search")
271
+ .description("Search memories")
272
+ .argument("<query>", "Search query")
273
+ .option("--limit <n>", "Max results", String(cfg.topK))
274
+ .action(async (query, opts) => {
275
+ try {
276
+ const result = await dispatch(minnsClient, "memory.search", {
277
+ query,
278
+ limit: parseInt(opts.limit, 10),
279
+ agent_id: OBS_AGENT_ID,
280
+ });
281
+ console.log(JSON.stringify(result, null, 2));
282
+ }
283
+ catch (err) {
284
+ console.error(`Search failed: ${String(err)}`);
285
+ }
286
+ });
287
+ minns
288
+ .command("stats")
289
+ .description("Show system statistics")
290
+ .action(async () => {
291
+ try {
292
+ const result = await dispatch(minnsClient, "stats.get", {});
293
+ console.log(JSON.stringify(result, null, 2));
294
+ }
295
+ catch (err) {
296
+ console.error(`Stats failed: ${String(err)}`);
297
+ }
298
+ });
299
+ minns
300
+ .command("health")
301
+ .description("Check EventGraphDB health")
302
+ .action(async () => {
303
+ try {
304
+ const result = await dispatch(minnsClient, "health.check", {});
305
+ console.log(JSON.stringify(result, null, 2));
306
+ }
307
+ catch (err) {
308
+ console.error(`Health check failed: ${String(err)}`);
309
+ }
310
+ });
311
+ }, { commands: ["minns"] });
312
+ // ------------------------------------------------------------------
313
+ // Lifecycle service
314
+ // ------------------------------------------------------------------
315
+ api.registerService({
316
+ id: PLUGIN_ID,
317
+ start: () => {
318
+ api.logger.info(`[${PLUGIN_ID}] service started`);
319
+ },
320
+ stop: () => {
321
+ api.logger.info(`[${PLUGIN_ID}] service stopped`);
158
322
  },
159
323
  });
160
324
  },
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAuC,MAAM,oBAAoB,CAAC;AAEhF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,SAAS,GAAG,gBAAgB,CAAC;AAQnC,SAAS,eAAe,CAAC,GAAsB;IAC7C,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,EAAE,CAAiB,CAAC;AACnF,CAAC;AAED,SAAS,IAAI,CAAC,CAAU;IACtB,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAChC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7C,CAAC;AAED,eAAe;IACb,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,kBAAkB;IAExB,QAAQ,CAAC,GAAsB;QAC7B,IAAI,IAAI,GAA0C,IAAI,CAAC;QACvD,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,QAAQ,GAA8E,IAAI,CAAC;QAE/F,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,IAAI,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YACV,IAAI,GAAG,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,IAAI,IAAI;gBAAE,OAAO,CAAC,kBAAkB;YAEpC,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,oBAAoB,CAAC;YAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,MAAM,GAAG,GAAG;gBACV,GAAG,OAAO,CAAC,GAAG;gBACd,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;aACnB,CAAC;YAEF,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;gBAC1B,GAAG;gBACH,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAChC,CAAC,CAAC;YAEH,UAAU,IAAI,CAAC,CAAC;YAChB,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,SAAS,cAAc,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAEjF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;gBAC3B,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,SAAS,aAAa,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;gBAC3B,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,SAAS,aAAa,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;gBAC/B,QAAQ,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC1D,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,SAAS,iBAAiB,IAAI,WAAW,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;gBACnF,IAAI,GAAG,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACvB,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,SAAS,oBAAoB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1G,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,uBAAuB;QACvB,KAAK,EAAE,CAAC;QAER,oCAAoC;QACpC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAElC,GAAG,CAAC,eAAe,CAAC;YAClB,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,2DAA2D;YACxE,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBACrB,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAClD,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;gBACjC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;gBAE1B,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;oBACnB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,mCAAmC,EAAE,CAAC;gBACrF,CAAC;gBAED,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACtB,IAAI,EAAE,CAAC;oBACP,KAAK,EAAE,CAAC;oBACR,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;gBACzC,CAAC;gBAED,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;oBACnB,IAAI,EAAE,CAAC;oBACP,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC;gBACxC,CAAC;gBAED,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;oBACpB,KAAK,EAAE,CAAC;oBACR,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,2BAA2B,EAAE,CAAC;gBAC5E,CAAC;gBAED,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,oBAAoB,CAAC;gBACxD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAExD,OAAO;oBACL,IAAI,EAAE;wBACJ,uBAAuB;wBACvB,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;wBACjC,QAAQ,IAAI,EAAE,GAAG,IAAI,GAAG,EAAE;wBAC1B,WAAW,UAAU,EAAE;wBACvB,YAAY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;wBAC7C,mBAAmB,GAAG,CAAC,cAAc,IAAI,WAAW,EAAE;wBACtD,kBAAkB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;wBAC3C,aACE,QAAQ;4BACN,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,UAAU,QAAQ,CAAC,IAAI,YAAY,QAAQ,CAAC,MAAM,IAAI,MAAM,GAAG;4BAC/E,CAAC,CAAC,MACN,EAAE;wBACF,EAAE;wBACF,gEAAgE;qBACjE,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;QAEH,qEAAqE;QACrE,oCAAoC;QACpC,qEAAqE;QAErE,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QAE1C,GAAG,CAAC,YAAY,CAAC;YACf,EAAE,EAAE,eAAe;YACnB,WAAW,EAAE,iEAAiE;YAC9E,MAAM,EAAE,CAAC,kBAAkB,CAAC;YAE5B,KAAK,CAAC,OAAO,CAAC,KAAgB;gBAC5B,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBACvC,IAAI,CAAC,IAAI;oBAAE,OAAO;gBAElB,8CAA8C;gBAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;gBACpC,IAAI,IAAI,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;oBAAE,OAAO;gBAEvD,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,uBAAuB;gBAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBAEhD,IAAI,CAAC;oBACH,uEAAuE;oBACvE,MAAM,WAAW;yBACd,KAAK,CAAC,UAAU,EAAE;wBACjB,OAAO;wBACP,SAAS;wBACT,cAAc,EAAE,IAAI;qBACrB,CAAC;yBACD,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC;yBAC3B,KAAK,CAAC;wBACL,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,SAAS,EAAE,KAAK,CAAC,QAAQ;wBACzB,SAAS,EAAE,IAAI;qBAChB,CAAC;yBACD,IAAI,EAAE,CAAC;oBAEV,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,SAAS,2BAA2B,KAAK,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC,CAAC;oBAE1F,0DAA0D;oBAC1D,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,eAAe,EAAE;wBAC5D,KAAK,EAAE,IAAI;wBACX,KAAK,EAAE,CAAC;wBACR,QAAQ,EAAE,OAAO;qBAClB,CAAC,CAAC;oBAEH,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,SAAS,oBAAoB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAClF,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAChB,IAAI,SAAS,iBAAiB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACjF,CAAC;gBACJ,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,27 @@
1
1
  {
2
2
  "id": "openclaw-minns",
3
3
  "name": "Minns MCP Bridge",
4
- "description": "Registers Minns MCP stdio bridge for OpenClaw",
4
+ "description": "EventGraphDB memory backend semantic memory, strategies, and claim extraction",
5
+ "kind": "memory",
5
6
  "configSchema": {
6
7
  "type": "object",
7
8
  "additionalProperties": false,
8
9
  "properties": {
9
- "command": { "type": "string", "default": "openclaw-minns-mcp" },
10
10
  "env": {
11
11
  "type": "object",
12
12
  "additionalProperties": { "type": "string" }
13
- }
13
+ },
14
+ "autoRecall": { "type": "boolean", "default": true },
15
+ "autoCapture": { "type": "boolean", "default": true },
16
+ "topK": { "type": "number", "default": 5 }
14
17
  }
15
18
  },
16
19
  "uiHints": {
17
- "command": { "label": "MCP Command" },
18
20
  "env.MINNS_BASE_URL": { "label": "Minns Base URL" },
19
21
  "env.MINNS_API_KEY": { "label": "Minns API Key", "sensitive": true },
20
- "env.MINNS_DEBUG": { "label": "Minns Debug" }
22
+ "env.MINNS_DEBUG": { "label": "Minns Debug" },
23
+ "autoRecall": { "label": "Auto-recall memories before agent turns" },
24
+ "autoCapture": { "label": "Auto-capture conversations after agent turns" },
25
+ "topK": { "label": "Max memories to inject" }
21
26
  }
22
27
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@minns/openclaw-minns",
3
- "version": "0.3.3",
3
+ "version": "0.5.0",
4
4
  "description": "MCP stdio server integrating Minns EventGraphDB into OpenClaw",
5
5
  "type": "module",
6
6
  "main": "./dist/mcp.js",