neotoma 0.4.2 → 0.4.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/README.md CHANGED
@@ -220,6 +220,35 @@ Neotoma exposes state via MCP. Local storage only in preview. Local built-in aut
220
220
 
221
221
  **Representative actions:** `store`, `retrieve_entities`, `retrieve_entity_snapshot`, `merge_entities`, `list_observations`, `create_relationship`, `list_relationships`, `list_timeline_events`, `retrieve_graph_neighborhood`. Full list: [MCP spec](docs/specs/MCP_SPEC.md).
222
222
 
223
+ ### OpenClaw native plugin
224
+
225
+ Neotoma ships as a native OpenClaw plugin with `kind: "memory"`, so it can fill the dedicated memory slot. All 30+ MCP tools are registered as agent tools.
226
+
227
+ ```bash
228
+ openclaw plugins install neotoma
229
+ ```
230
+
231
+ Then assign it to the memory slot in your OpenClaw config:
232
+
233
+ ```json5
234
+ {
235
+ plugins: {
236
+ slots: { memory: "neotoma" },
237
+ entries: {
238
+ neotoma: {
239
+ enabled: true,
240
+ config: {
241
+ dataDir: "~/.local/share/neotoma",
242
+ environment: "production"
243
+ }
244
+ }
245
+ }
246
+ }
247
+ }
248
+ ```
249
+
250
+ Verify installation: `openclaw plugins inspect neotoma` shows `Format: native`, `Kind: memory`, and all registered tool contracts.
251
+
223
252
  ## Common questions
224
253
 
225
254
  **Platform memory (Claude, ChatGPT) is good enough — why add another tool?**
@@ -0,0 +1,45 @@
1
+ /**
2
+ * OpenClaw native plugin entry point for Neotoma.
3
+ *
4
+ * Registers all Neotoma MCP tools as OpenClaw agent tools so that
5
+ * `openclaw plugins install neotoma` makes Neotoma's structured memory
6
+ * available in any OpenClaw session.
7
+ *
8
+ * The plugin declares `kind: "memory"` in its manifest, meaning users
9
+ * can assign it to the memory slot via `plugins.slots.memory = "neotoma"`.
10
+ */
11
+ interface NeotomaPluginConfig {
12
+ dataDir?: string;
13
+ environment?: string;
14
+ openaiApiKey?: string;
15
+ encryptionEnabled?: boolean;
16
+ }
17
+ interface PluginApi {
18
+ config?: NeotomaPluginConfig;
19
+ registerTool(def: {
20
+ name: string;
21
+ description: string;
22
+ parameters: Record<string, unknown>;
23
+ execute(id: string, params: Record<string, unknown>): Promise<{
24
+ content: Array<{
25
+ type: string;
26
+ text: string;
27
+ }>;
28
+ }>;
29
+ }): void;
30
+ }
31
+ /**
32
+ * Plugin entry object conforming to the OpenClaw plugin interface.
33
+ *
34
+ * When loaded by OpenClaw, the host wraps this with `definePluginEntry`
35
+ * from `openclaw/plugin-sdk/plugin-entry`. The export shape (id, name,
36
+ * description, register) satisfies the native plugin contract.
37
+ */
38
+ declare const neotomaPlugin: {
39
+ id: string;
40
+ name: string;
41
+ description: string;
42
+ register(api: PluginApi): void;
43
+ };
44
+ export default neotomaPlugin;
45
+ //# sourceMappingURL=openclaw_entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclaw_entry.d.ts","sourceRoot":"","sources":["../src/openclaw_entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,UAAU,mBAAmB;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAiCD,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,YAAY,CAAC,GAAG,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;YAC5D,OAAO,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;SAChD,CAAC,CAAC;KACJ,GAAG,IAAI,CAAC;CACV;AAED;;;;;;GAMG;AACH,QAAA,MAAM,aAAa;;;;kBAMH,SAAS;CAmBxB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * OpenClaw native plugin entry point for Neotoma.
3
+ *
4
+ * Registers all Neotoma MCP tools as OpenClaw agent tools so that
5
+ * `openclaw plugins install neotoma` makes Neotoma's structured memory
6
+ * available in any OpenClaw session.
7
+ *
8
+ * The plugin declares `kind: "memory"` in its manifest, meaning users
9
+ * can assign it to the memory slot via `plugins.slots.memory = "neotoma"`.
10
+ */
11
+ import { buildToolDefinitions } from "./tool_definitions.js";
12
+ import { initDatabase } from "./db.js";
13
+ import { NeotomaServer } from "./server.js";
14
+ let serverInstance = null;
15
+ let initPromise = null;
16
+ function applyConfig(cfg) {
17
+ if (cfg.dataDir) {
18
+ process.env.NEOTOMA_DATA_DIR = cfg.dataDir;
19
+ }
20
+ if (cfg.environment) {
21
+ process.env.NEOTOMA_ENV = cfg.environment;
22
+ }
23
+ if (cfg.openaiApiKey) {
24
+ process.env.OPENAI_API_KEY = cfg.openaiApiKey;
25
+ }
26
+ if (cfg.encryptionEnabled !== undefined) {
27
+ process.env.NEOTOMA_ENCRYPTION_ENABLED = cfg.encryptionEnabled ? "true" : "false";
28
+ }
29
+ process.env.NEOTOMA_ACTIONS_DISABLE_AUTOSTART = "1";
30
+ }
31
+ async function ensureServer(cfg) {
32
+ if (serverInstance)
33
+ return serverInstance;
34
+ if (initPromise)
35
+ return initPromise;
36
+ initPromise = (async () => {
37
+ applyConfig(cfg);
38
+ await initDatabase();
39
+ const server = new NeotomaServer();
40
+ serverInstance = server;
41
+ return server;
42
+ })();
43
+ return initPromise;
44
+ }
45
+ /**
46
+ * Plugin entry object conforming to the OpenClaw plugin interface.
47
+ *
48
+ * When loaded by OpenClaw, the host wraps this with `definePluginEntry`
49
+ * from `openclaw/plugin-sdk/plugin-entry`. The export shape (id, name,
50
+ * description, register) satisfies the native plugin contract.
51
+ */
52
+ const neotomaPlugin = {
53
+ id: "neotoma",
54
+ name: "Neotoma",
55
+ description: "Structured personal data memory with append-only observations, schema evolution, and provenance tracking",
56
+ register(api) {
57
+ const pluginConfig = api.config ?? {};
58
+ const tools = buildToolDefinitions();
59
+ for (const tool of tools) {
60
+ api.registerTool({
61
+ name: tool.name,
62
+ description: tool.description,
63
+ parameters: tool.inputSchema,
64
+ async execute(_id, params) {
65
+ const server = await ensureServer(pluginConfig);
66
+ const { ensureLocalDevUser } = await import("./services/local_auth.js");
67
+ const localUser = ensureLocalDevUser();
68
+ return server.executeToolForCli(tool.name, params, localUser.id);
69
+ },
70
+ });
71
+ }
72
+ },
73
+ };
74
+ export default neotomaPlugin;
75
+ //# sourceMappingURL=openclaw_entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclaw_entry.js","sourceRoot":"","sources":["../src/openclaw_entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,IAAI,cAAc,GAAyB,IAAI,CAAC;AAChD,IAAI,WAAW,GAAkC,IAAI,CAAC;AAStD,SAAS,WAAW,CAAC,GAAwB;IAC3C,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAAC;IAC7C,CAAC;IACD,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IAC5C,CAAC;IACD,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,YAAY,CAAC;IAChD,CAAC;IACD,IAAI,GAAG,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IACpF,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,iCAAiC,GAAG,GAAG,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,GAAwB;IAClD,IAAI,cAAc;QAAE,OAAO,cAAc,CAAC;IAC1C,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IAEpC,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;QACxB,WAAW,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,YAAY,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QACnC,cAAc,GAAG,MAAM,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,WAAW,CAAC;AACrB,CAAC;AAcD;;;;;;GAMG;AACH,MAAM,aAAa,GAAG;IACpB,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,SAAS;IACf,WAAW,EACT,0GAA0G;IAE5G,QAAQ,CAAC,GAAc;QACrB,MAAM,YAAY,GAAwB,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,oBAAoB,EAAE,CAAC;QAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,GAAG,CAAC,YAAY,CAAC;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,IAAI,CAAC,WAAW;gBAE5B,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAA+B;oBACxD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;oBAChD,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;oBACxE,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;oBACvC,OAAO,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;gBACnE,CAAC;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}