@minns/openclaw-minns 0.3.2 → 0.3.3

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
@@ -1,5 +1,7 @@
1
+ import type { OpenClawPluginApi } from "openclaw/plugin-sdk";
1
2
  declare const _default: {
2
3
  id: string;
3
- register(api: any): void;
4
+ name: string;
5
+ register(api: OpenClawPluginApi): void;
4
6
  };
5
7
  export default _default;
package/dist/index.js CHANGED
@@ -1,9 +1,162 @@
1
+ import { spawn } from "node:child_process";
2
+ import { loadConfig, buildClient } from "./config.js";
3
+ import { dispatch } from "./tools.js";
4
+ const PLUGIN_ID = "openclaw-minns";
5
+ function getPluginConfig(api) {
6
+ return (api.config?.plugins?.entries?.[PLUGIN_ID]?.config ?? {});
7
+ }
8
+ function mask(v) {
9
+ if (!v)
10
+ return "missing";
11
+ if (v.length <= 6)
12
+ return "***";
13
+ return `${v.slice(0, 3)}***${v.slice(-2)}`;
14
+ }
1
15
  export default {
2
- id: "openclaw-minns",
16
+ id: PLUGIN_ID,
17
+ name: "Minns MCP Bridge",
3
18
  register(api) {
4
- // Wire your MCP bridge here using plugin config:
5
- // api.config.plugins?.entries?.minns?.config
6
- // and register tools/services as needed.
7
- }
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);
68
+ api.registerCommand({
69
+ name: "minns",
70
+ description: "Minns MCP bridge controls: status|ping|restart|stop|start",
71
+ acceptsArgs: true,
72
+ handler: async (ctx) => {
73
+ const arg = (ctx.args ?? "").trim().toLowerCase();
74
+ const cfg = getPluginConfig(api);
75
+ const env = cfg.env ?? {};
76
+ if (arg === "ping") {
77
+ return { text: proc ? "pong (mcp running)" : "pong (plugin loaded, mcp stopped)" };
78
+ }
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
+ return {
95
+ text: [
96
+ "openclaw-minns status",
97
+ `running: ${proc ? "yes" : "no"}`,
98
+ `pid: ${proc?.pid ?? "-"}`,
99
+ `starts: ${startCount}`,
100
+ `command: ${cmd} ${cmdArgs.join(" ")}`.trim(),
101
+ `MINNS_BASE_URL: ${env.MINNS_BASE_URL ?? "(not set)"}`,
102
+ `MINNS_API_KEY: ${mask(env.MINNS_API_KEY)}`,
103
+ `lastExit: ${lastExit
104
+ ? `${lastExit.at} (code=${lastExit.code}, signal=${lastExit.signal ?? "none"})`
105
+ : "none"}`,
106
+ "",
107
+ "Use: /minns ping | /minns restart | /minns stop | /minns start",
108
+ ].join("\n"),
109
+ };
110
+ },
111
+ });
112
+ // ------------------------------------------------------------------
113
+ // Hook: inbound message → Minns SDK
114
+ // ------------------------------------------------------------------
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)
124
+ return;
125
+ // Only process DMs (skip group/channel noise)
126
+ const kind = event.peer?.kind ?? "";
127
+ if (kind && kind !== "direct" && kind !== "dm")
128
+ return;
129
+ const agentId = 1; // default plugin agent
130
+ const sessionId = event.timestamp ?? Date.now();
131
+ try {
132
+ // 1. Capture the message as a Context event (enables claim extraction)
133
+ await minnsClient
134
+ .event("openclaw", {
135
+ agentId,
136
+ 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,
152
+ });
153
+ api.logger.debug?.(`[${PLUGIN_ID}] memory recall: ${JSON.stringify(memories)}`);
154
+ }
155
+ catch (err) {
156
+ api.logger.error?.(`[${PLUGIN_ID}] hook error: ${err instanceof Error ? err.message : String(err)}`);
157
+ }
158
+ },
159
+ });
160
+ },
8
161
  };
9
162
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,EAAE,EAAE,gBAAgB;IACpB,QAAQ,CAAC,GAAQ;QACf,iDAAiD;QACjD,6CAA6C;QAC7C,yCAAyC;IAC3C,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@minns/openclaw-minns",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "description": "MCP stdio server integrating Minns EventGraphDB into OpenClaw",
5
5
  "type": "module",
6
6
  "main": "./dist/mcp.js",