@mrc2204/agent-smart-memo 4.1.2 → 5.0.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.
Files changed (57) hide show
  1. package/README.md +317 -135
  2. package/dist/adapters/openclaw/tool-runtime.d.ts +29 -0
  3. package/dist/adapters/openclaw/tool-runtime.d.ts.map +1 -0
  4. package/dist/adapters/openclaw/tool-runtime.js +48 -0
  5. package/dist/adapters/openclaw/tool-runtime.js.map +1 -0
  6. package/dist/core/contracts/adapter-contracts.d.ts +31 -0
  7. package/dist/core/contracts/adapter-contracts.d.ts.map +1 -0
  8. package/dist/core/contracts/adapter-contracts.js +2 -0
  9. package/dist/core/contracts/adapter-contracts.js.map +1 -0
  10. package/dist/core/runtime-boundary.d.ts +23 -0
  11. package/dist/core/runtime-boundary.d.ts.map +1 -0
  12. package/dist/core/runtime-boundary.js +39 -0
  13. package/dist/core/runtime-boundary.js.map +1 -0
  14. package/dist/core/usecases/default-memory-usecase-port.d.ts +21 -0
  15. package/dist/core/usecases/default-memory-usecase-port.d.ts.map +1 -0
  16. package/dist/core/usecases/default-memory-usecase-port.js +263 -0
  17. package/dist/core/usecases/default-memory-usecase-port.js.map +1 -0
  18. package/dist/core/usecases/semantic-memory-usecase.d.ts +52 -0
  19. package/dist/core/usecases/semantic-memory-usecase.d.ts.map +1 -0
  20. package/dist/core/usecases/semantic-memory-usecase.js +136 -0
  21. package/dist/core/usecases/semantic-memory-usecase.js.map +1 -0
  22. package/dist/hooks/tool-context-injector.d.ts +9 -0
  23. package/dist/hooks/tool-context-injector.d.ts.map +1 -0
  24. package/dist/hooks/tool-context-injector.js +55 -0
  25. package/dist/hooks/tool-context-injector.js.map +1 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +30 -10
  28. package/dist/index.js.map +1 -1
  29. package/dist/tools/graph-tools.d.ts +2 -0
  30. package/dist/tools/graph-tools.d.ts.map +1 -1
  31. package/dist/tools/graph-tools.js +126 -177
  32. package/dist/tools/graph-tools.js.map +1 -1
  33. package/dist/tools/semantic-memory-tools.d.ts +8 -0
  34. package/dist/tools/semantic-memory-tools.d.ts.map +1 -0
  35. package/dist/tools/semantic-memory-tools.js +111 -0
  36. package/dist/tools/semantic-memory-tools.js.map +1 -0
  37. package/dist/tools/slot-tools.d.ts +3 -1
  38. package/dist/tools/slot-tools.d.ts.map +1 -1
  39. package/dist/tools/slot-tools.js +82 -156
  40. package/dist/tools/slot-tools.js.map +1 -1
  41. package/package.json +25 -32
  42. package/dist/config.d.ts +0 -62
  43. package/dist/config.d.ts.map +0 -1
  44. package/dist/config.js +0 -102
  45. package/dist/config.js.map +0 -1
  46. package/dist/scripts/reembed-collection.d.ts +0 -2
  47. package/dist/scripts/reembed-collection.d.ts.map +0 -1
  48. package/dist/scripts/reembed-collection.js +0 -165
  49. package/dist/scripts/reembed-collection.js.map +0 -1
  50. package/dist/tools/memory_search.d.ts +0 -89
  51. package/dist/tools/memory_search.d.ts.map +0 -1
  52. package/dist/tools/memory_search.js +0 -188
  53. package/dist/tools/memory_search.js.map +0 -1
  54. package/dist/tools/memory_store.d.ts +0 -65
  55. package/dist/tools/memory_store.d.ts.map +0 -1
  56. package/dist/tools/memory_store.js +0 -196
  57. package/dist/tools/memory_store.js.map +0 -1
@@ -0,0 +1,55 @@
1
+ import { resolveAgentId } from "../shared/memory-config.js";
2
+ function deriveIdentity(ctx) {
3
+ const sessionKey = typeof ctx?.sessionKey === "string" ? ctx.sessionKey.trim() : "";
4
+ const agentFromCtx = typeof ctx?.agentId === "string" ? ctx.agentId.trim() : "";
5
+ const parts = sessionKey ? sessionKey.split(":") : [];
6
+ const agentFromSession = parts.length >= 2 ? parts[1] : "";
7
+ const userFromSession = parts.length >= 3 ? parts.slice(2).join(":") : "";
8
+ return {
9
+ agentId: resolveAgentId(agentFromCtx || agentFromSession || "assistant"),
10
+ sessionKey: sessionKey || undefined,
11
+ userId: userFromSession || "default",
12
+ };
13
+ }
14
+ function ensureMemoryStoreDefaults(params, agentId) {
15
+ const next = { ...params };
16
+ if (typeof next.namespace !== "string" || next.namespace.trim().length === 0) {
17
+ next.namespace = `agent.${agentId}.working_memory`;
18
+ }
19
+ return next;
20
+ }
21
+ /**
22
+ * Inject runtime agent/session identity into memory tool params.
23
+ *
24
+ * Runtime provides identity in before_tool_call hook context; memory tools previously
25
+ * fell back to assistant when params.agentId was missing.
26
+ */
27
+ export function registerMemoryToolContextInjector(api) {
28
+ api.on("before_tool_call", async (event, ctx) => {
29
+ const toolName = String(event?.toolName || "").trim();
30
+ if (toolName !== "memory_store" && toolName !== "memory_search") {
31
+ return;
32
+ }
33
+ const originalParams = event?.params && typeof event.params === "object"
34
+ ? event.params
35
+ : {};
36
+ const identity = deriveIdentity(ctx || {});
37
+ const merged = {
38
+ ...originalParams,
39
+ agentId: typeof originalParams.agentId === "string" && originalParams.agentId.trim().length > 0
40
+ ? originalParams.agentId
41
+ : identity.agentId,
42
+ sessionId: typeof originalParams.sessionId === "string" && originalParams.sessionId.trim().length > 0
43
+ ? originalParams.sessionId
44
+ : identity.sessionKey,
45
+ userId: typeof originalParams.userId === "string" && originalParams.userId.trim().length > 0
46
+ ? originalParams.userId
47
+ : identity.userId,
48
+ };
49
+ const params = toolName === "memory_store"
50
+ ? ensureMemoryStoreDefaults(merged, identity.agentId)
51
+ : merged;
52
+ return { params };
53
+ });
54
+ }
55
+ //# sourceMappingURL=tool-context-injector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-context-injector.js","sourceRoot":"","sources":["../../src/hooks/tool-context-injector.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AA4K7D,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA0FL,iBAAiB;CA2JhC,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AA6K7D,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA0FL,iBAAiB;CA6KhC,CAAC;AAEF,eAAe,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -17,11 +17,12 @@ import { resolveSlotDbDir } from "./shared/slotdb-path.js";
17
17
  // Tool modules
18
18
  import { registerSlotTools } from "./tools/slot-tools.js";
19
19
  import { registerGraphTools } from "./tools/graph-tools.js";
20
- import { createMemorySearchTool } from "./tools/memory_search.js";
21
- import { createMemoryStoreTool } from "./tools/memory_store.js";
20
+ import { registerSemanticMemoryTools } from "./tools/semantic-memory-tools.js";
21
+ import { SemanticMemoryUseCase } from "./core/usecases/semantic-memory-usecase.js";
22
22
  // Hook modules
23
23
  import { registerAutoRecall } from "./hooks/auto-recall.js";
24
24
  import { registerAutoCapture } from "./hooks/auto-capture.js";
25
+ import { registerMemoryToolContextInjector } from "./hooks/tool-context-injector.js";
25
26
  const CONFIG_KEY_CANDIDATES = [
26
27
  "slotCategories",
27
28
  "qdrantHost",
@@ -310,18 +311,36 @@ const agentMemoPlugin = {
310
311
  console.warn(`[AgentMemo] Failed to write runtime manifest: ${error.message}`);
311
312
  }
312
313
  const dedupe = new DeduplicationService(0.95, console);
314
+ const semanticUseCaseBySlotDbDir = new Map();
315
+ const getSemanticUseCase = (resolvedSlotDbDir) => {
316
+ let uc = semanticUseCaseBySlotDbDir.get(resolvedSlotDbDir);
317
+ if (!uc) {
318
+ uc = new SemanticMemoryUseCase(qdrant, embedding, dedupe);
319
+ semanticUseCaseBySlotDbDir.set(resolvedSlotDbDir, uc);
320
+ }
321
+ return uc;
322
+ };
313
323
  // ----------------------------------------------------------------
314
- // Register Qdrant tools from modules
324
+ // Register tools through shared use-case runtime boundary
315
325
  // ----------------------------------------------------------------
316
- const memorySearchTool = createMemorySearchTool(qdrant, embedding, "shared.project_context");
317
- const memoryStoreTool = createMemoryStoreTool(qdrant, embedding, dedupe, "shared.project_context");
318
- api.registerTool(memorySearchTool);
319
- api.registerTool(memoryStoreTool);
326
+ registerSemanticMemoryTools(api, {
327
+ stateDir,
328
+ slotDbDir,
329
+ semanticUseCaseFactory: (resolvedSlotDbDir) => getSemanticUseCase(resolvedSlotDbDir),
330
+ });
320
331
  // ----------------------------------------------------------------
321
332
  // Register Slot & Graph tools
322
333
  // ----------------------------------------------------------------
323
- registerSlotTools(api, slotCategories, { stateDir, slotDbDir });
324
- registerGraphTools(api, { stateDir, slotDbDir });
334
+ registerSlotTools(api, slotCategories, {
335
+ stateDir,
336
+ slotDbDir,
337
+ semanticUseCaseFactory: (resolvedSlotDbDir) => getSemanticUseCase(resolvedSlotDbDir),
338
+ });
339
+ registerGraphTools(api, {
340
+ stateDir,
341
+ slotDbDir,
342
+ semanticUseCaseFactory: (resolvedSlotDbDir) => getSemanticUseCase(resolvedSlotDbDir),
343
+ });
325
344
  // ----------------------------------------------------------------
326
345
  // Register lifecycle hooks
327
346
  // ----------------------------------------------------------------
@@ -336,9 +355,10 @@ const agentMemoPlugin = {
336
355
  contextWindowMaxTokens,
337
356
  summarizeEveryActions,
338
357
  });
358
+ registerMemoryToolContextInjector(api);
339
359
  console.log("[AgentMemo] Plugin registered successfully");
340
360
  console.log("[AgentMemo] Tools: memory_search, memory_store, memory_slot_*, memory_graph_*");
341
- console.log("[AgentMemo] Hooks: auto-recall, auto-capture");
361
+ console.log("[AgentMemo] Hooks: auto-recall, auto-capture, tool-context-injector");
342
362
  },
343
363
  };
344
364
  export default agentMemoPlugin;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAqB,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,eAAe;AACf,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAEnF,eAAe;AACf,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AA4BrF,MAAM,qBAAqB,GAA8B;IACvD,gBAAgB;IAChB,YAAY;IACZ,YAAY;IACZ,kBAAkB;IAClB,YAAY;IACZ,WAAW;IACX,UAAU;IACV,cAAc;IACd,cAAc;IACd,YAAY;IACZ,iBAAiB;IACjB,WAAW;IACX,oBAAoB;IACpB,0BAA0B;IAC1B,wBAAwB;IACxB,uBAAuB;CACxB,CAAC;AAEF,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAChE,CAAC,CAAE,KAA6B;QAChC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,eAAe,CAAC,GAA+B;IACtD,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAG,MAAiB;IAC/C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAc,EACd,GAAW,EACX,QAAQ,GAAG,CAAC;IAEZ,MAAM,OAAO,GAAG,IAAI,GAAG,EAAW,CAAC;IAEnC,SAAS,IAAI,CAAC,IAAa,EAAE,KAAa;QACxC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/E,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM,GAAG,GAAG,IAA+B,CAAC;QAE5C,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAK,GAAG,CAAC,GAAG,CAAY,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3E,OAAQ,GAAG,CAAC,GAAG,CAAY,CAAC,IAAI,EAAE,CAAC;QACrC,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACrC,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,mBAAmB,CAAC,SAAkB;IAI7C,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAEjC,MAAM,UAAU,GAAiE;QAC/E,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE;QACrC,EAAE,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;QAC9D,EAAE,MAAM,EAAE,yBAAyB,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE;QAC3E,EAAE,MAAM,EAAE,0BAA0B,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;QAC7E,EAAE,MAAM,EAAE,yBAAyB,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE;QAC3E,EAAE,MAAM,EAAE,4BAA4B,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE;KAClF,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,KAAwB,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;QAClF,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,IAAI,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAoB;YACjD,MAAM,EAAE,sCAAsC;SAC/C,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,mBAAmB,CAC1B,GAAsB,EACtB,QAAgB;IAEhB,MAAM,YAAY,GAAG,QAAQ,CAAE,GAAW,CAAC,YAAY,CAAC,CAAC;IACzD,IAAI,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,MAAM,EAAE,YAA+B,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAC7E,CAAC;IAED,MAAM,iBAAiB,GAAG,QAAQ,CAAE,GAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/F,IAAI,eAAe,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACvC,OAAO;YACL,MAAM,EAAE,iBAAoC;YAC5C,MAAM,EAAE,6CAA6C;SACtD,CAAC;IACJ,CAAC;IAED,OAAO,mBAAmB,CAAE,GAAW,CAAC,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;AAE1F,MAAM,eAAe,GAAG;IACtB,EAAE,EAAE,kBAAkB;IACtB,IAAI,EAAE,kCAAkC;IACxC,WAAW,EAAE,+EAA+E;IAC5F,IAAI,EAAE,QAAiB;IACvB,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,oBAAoB,EAAE,KAAK;QAC3B,UAAU,EAAE;YACV,cAAc,EAAE;gBACd,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,yBAAyB;aACvC;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mCAAmC;aACjD;YACD,sBAAsB,EAAE;gBACtB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wCAAwC;aACtD;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oBAAoB;aAClC;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oBAAoB;aAClC;YACD,gBAAgB,EAAE;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,2CAA2C;aACzD;YACD,gBAAgB,EAAE;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oCAAoC;aAClD;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,sCAAsC;aACpD;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,aAAa;aAC3B;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4BAA4B;aAC1C;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8DAA8D;aAC5E;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;gBACpC,WAAW,EAAE,gFAAgF;aAC9F;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mEAAmE;aACjF;YACD,eAAe,EAAE;gBACf,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,sCAAsC;aACpD;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yHAAyH;aACvI;YACD,kBAAkB,EAAE;gBAClB,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,6BAA6B;aAC3C;YACD,wBAAwB,EAAE;gBACxB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qCAAqC;aACnD;YACD,sBAAsB,EAAE;gBACtB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oEAAoE;aAClF;YACD,qBAAqB,EAAE;gBACrB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,kEAAkE;aAChF;SACF;KACF;IAED,QAAQ,CAAC,GAAsB;QAC7B,mEAAmE;QACnE,gCAAgC;QAChC,sBAAsB;QACtB,0DAA0D;QAC1D,8BAA8B;QAC9B,mEAAmE;QACnE,MAAM,SAAS,GAAI,GAAW,CAAC,MAAM,CAAC;QACtC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;QAExE,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,kBAAkB,CAAC;QACnE,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,WAAW,CAAC;QACpD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC;QAC7C,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,SAAS,CAAC;QAC9D,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAC;QACzD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,0BAA0B,CAAC;QACnE,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,gBAAgB,CAAC;QACvD,MAAM,gBAAgB,GAAG,mBAAmB,CAC1C,MAAM,CAAC,QAAQ,EACf,mBAAmB,CAAC,SAAS,EAAE,UAAU,CAAC,CAC3C,CAAC;QACF,MAAM,QAAQ,GAAG,gBAAgB,IAAI,kBAAkB,CAAC;QACxD,MAAM,oBAAoB,GAAG,CAAC,gBAAgB,CAAC;QAC/C,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,wBAAwB,CAAC;QACrE,MAAM,YAAY,GAChB,MAAM,CAAC,YAAY,KAAK,QAAQ;YAChC,MAAM,CAAC,YAAY,KAAK,QAAQ;YAChC,MAAM,CAAC,YAAY,KAAK,QAAQ;YAC9B,CAAC,CAAC,MAAM,CAAC,YAAY;YACrB,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,sBAAsB,CAAC;QAC/D,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC;QACvD,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,KAAK,KAAK,CAAC,CAAC,eAAe;QAC/E,MAAM,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,IAAI,GAAG,CAAC;QACxE,MAAM,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,IAAI,KAAK,CAAC;QACtE,MAAM,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,IAAI,CAAC,CAAC;QAEhE,sCAAsC;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC;QACnF,MAAM,SAAS,GAAG,gBAAgB,CAAC;YACjC,QAAQ;YACR,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;SAC1B,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CACT,sCAAsC,MAAM,wBAAwB,QAAQ,kBAAkB,oBAAoB,EAAE,CACrH,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,sBAAsB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,aAAa,UAAU,IAAI,UAAU,IAAI,gBAAgB,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,UAAU,UAAU,YAAY,QAAQ,GAAG,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,gBAAgB,YAAY,cAAc,YAAY,IAAI,MAAM,YAAY,UAAU,KAAK,eAAe,IAAI,CAAC,CAAC;QAC5H,OAAO,CAAC,GAAG,CAAC,kBAAkB,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,oBAAoB,sBAAsB,SAAS,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,4BAA4B,qBAAqB,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC;QAE1C,mEAAmE;QACnE,sBAAsB;QACtB,mEAAmE;QACnE,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAEnD,4EAA4E;QAC5E,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC;QAC9D,MAAM,QAAQ,GAAG,WAAW;aACzB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B,MAAM,CAAC,OAAO,CAAC;aACf,MAAM,CAAyB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAC5C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACpE,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5B,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,UAAU,EAAE,CAAC;gBAClD,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;YACxB,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QAET,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;YAC9B,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,gBAAgB;YAC5B,UAAU,EAAE,gBAAgB;YAC5B,iBAAiB,EAAE,QAAQ;SAC5B,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC;YACpC,eAAe,EAAE,YAAY;YAC7B,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,UAAU;YACjB,UAAU,EAAE,eAAe;YAC3B,QAAQ;SACT,CAAC,CAAC;QAEH,SAAS,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAU,EAAE,EAAE;YAC9D,OAAO,CAAC,IAAI,CAAC,8CAA8C,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,kBAAkB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClF,aAAa,CACX,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,kBAAkB,EAAE,uBAAuB,CAAC,EAC1E,IAAI,CAAC,SAAS,CAAC;gBACb,QAAQ,EAAE,kBAAkB;gBAC5B,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;gBAC1B,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACrC,UAAU;gBACV,YAAY;gBACZ,YAAY,EAAE,YAAY,IAAI,MAAM;gBACpC,eAAe;gBACf,gBAAgB;aACjB,EAAE,IAAI,EAAE,CAAC,CAAC,EACX,MAAM,CACP,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,iDAAiD,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,0BAA0B,GAAG,IAAI,GAAG,EAAiC,CAAC;QAC5E,MAAM,kBAAkB,GAAG,CAAC,iBAAyB,EAAyB,EAAE;YAC9E,IAAI,EAAE,GAAG,0BAA0B,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC3D,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,EAAE,GAAG,IAAI,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC1D,0BAA0B,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QAEF,mEAAmE;QACnE,0DAA0D;QAC1D,mEAAmE;QACnE,2BAA2B,CAAC,GAAG,EAAE;YAC/B,QAAQ;YACR,SAAS;YACT,sBAAsB,EAAE,CAAC,iBAAiB,EAAE,EAAE,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;SACrF,CAAC,CAAC;QAEH,mEAAmE;QACnE,8BAA8B;QAC9B,mEAAmE;QACnE,iBAAiB,CAAC,GAAG,EAAE,cAAc,EAAE;YACrC,QAAQ;YACR,SAAS;YACT,sBAAsB,EAAE,CAAC,iBAAiB,EAAE,EAAE,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;SACrF,CAAC,CAAC;QACH,kBAAkB,CAAC,GAAG,EAAE;YACtB,QAAQ;YACR,SAAS;YACT,sBAAsB,EAAE,CAAC,iBAAiB,EAAE,EAAE,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;SACrF,CAAC,CAAC;QAEH,mEAAmE;QACnE,2BAA2B;QAC3B,mEAAmE;QACnE,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QACnD,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;YAC1D,OAAO,EAAE,kBAAkB;YAC3B,aAAa,EAAE,wBAAwB;YACvC,MAAM,EAAE,IAAI;YACZ,UAAU;YACV,SAAS;YACT,QAAQ;YACR,sBAAsB;YACtB,qBAAqB;SACtB,CAAC,CAAC;QACH,iCAAiC,CAAC,GAAG,CAAC,CAAC;QAEvC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC;QAC7F,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;IACrF,CAAC;CACF,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -9,8 +9,10 @@
9
9
  * - memory_graph_search: Search entities + traverse graph
10
10
  */
11
11
  import type { OpenClawPluginApi } from "openclaw/plugin-sdk";
12
+ import type { SemanticMemoryUseCase } from "../core/usecases/semantic-memory-usecase.js";
12
13
  export declare function registerGraphTools(api: OpenClawPluginApi, options?: {
13
14
  stateDir?: string;
14
15
  slotDbDir?: string;
16
+ semanticUseCaseFactory?: (slotDbDir: string) => SemanticMemoryUseCase | undefined;
15
17
  }): void;
16
18
  //# sourceMappingURL=graph-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graph-tools.d.ts","sourceRoot":"","sources":["../../src/tools/graph-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAwD7D,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,iBAAiB,EACtB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAClD,IAAI,CAkXN"}
1
+ {"version":3,"file":"graph-tools.d.ts","sourceRoot":"","sources":["../../src/tools/graph-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAQ7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AAMzF,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,iBAAiB,EACtB,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,qBAAqB,GAAG,SAAS,CAAC;CACnF,GACA,IAAI,CAwWN"}
@@ -8,57 +8,15 @@
8
8
  * - memory_graph_rel_remove: Delete relationship
9
9
  * - memory_graph_search: Search entities + traverse graph
10
10
  */
11
- import { SlotDB } from "../db/slot-db.js";
12
- import { resolveSlotDbDir } from "../shared/slotdb-path.js";
13
- // Singleton DB instances keyed by resolved slotDbDir
14
- const dbInstances = new Map();
15
- let runtimeConfig = {
16
- stateDir: process.env.OPENCLAW_STATE_DIR || `${process.env.HOME}/.openclaw`,
17
- slotDbDir: resolveSlotDbDir({
18
- stateDir: process.env.OPENCLAW_STATE_DIR || `${process.env.HOME}/.openclaw`,
19
- env: process.env,
20
- homeDir: process.env.HOME,
21
- }),
22
- };
23
- function getSlotDB(slotDbDir) {
24
- let db = dbInstances.get(slotDbDir);
25
- if (!db) {
26
- db = new SlotDB(runtimeConfig.stateDir, { slotDbDir });
27
- dbInstances.set(slotDbDir, db);
28
- }
29
- return db;
30
- }
31
- function resolveSlotDbDirFromContext(ctx) {
32
- const stateDir = ctx?.stateDir || runtimeConfig.stateDir;
33
- const configSlotDbDir = ctx?.pluginConfig?.slotDbDir || ctx?.config?.slotDbDir;
34
- return resolveSlotDbDir({
35
- stateDir,
36
- slotDbDir: configSlotDbDir,
37
- env: process.env,
38
- homeDir: process.env.HOME,
39
- });
40
- }
41
- function extractScope(sessionKey) {
42
- const parts = sessionKey.split(":");
43
- const agentId = parts.length >= 2 ? parts[1] : "main";
44
- const userId = parts.length >= 3 ? parts.slice(2).join(":") : "default";
45
- return { userId, agentId };
46
- }
11
+ import { configureOpenClawRuntime, createOpenClawResult, getMemoryUseCasePortForContext, getSessionKey, parseOpenClawSessionIdentity, } from "../adapters/openclaw/tool-runtime.js";
47
12
  function createResult(text, isError = false) {
48
- return {
49
- content: [{ type: "text", text }],
50
- details: { toolResult: { text } },
51
- isError,
52
- };
13
+ return createOpenClawResult(text, isError);
53
14
  }
54
15
  export function registerGraphTools(api, options) {
55
- runtimeConfig = {
56
- stateDir: options?.stateDir || runtimeConfig.stateDir,
57
- slotDbDir: options?.slotDbDir || runtimeConfig.slotDbDir,
58
- };
59
- // ===========================================================================
16
+ configureOpenClawRuntime(options);
17
+ // ==========================================================================
60
18
  // Tool 1: memory_graph_entity_get
61
- // ===========================================================================
19
+ // ==========================================================================
62
20
  api.registerTool({
63
21
  name: "memory_graph_entity_get",
64
22
  label: "Graph Entity Get",
@@ -73,53 +31,49 @@ export function registerGraphTools(api, options) {
73
31
  },
74
32
  async execute(_id, params, ctx) {
75
33
  try {
76
- const slotDbDir = resolveSlotDbDirFromContext(ctx);
77
- const sessionKey = ctx?.sessionKey || "agent:main:default";
78
- const { userId, agentId } = extractScope(sessionKey);
79
- const db = getSlotDB(slotDbDir);
80
- // If ID provided, get single entity
81
- if (params.id) {
82
- const entity = db.graph.getEntity(userId, agentId, params.id);
83
- if (!entity) {
84
- return createResult(`Entity with ID "${params.id}" not found.`);
85
- }
86
- return createResult(JSON.stringify({
87
- id: entity.id,
88
- name: entity.name,
89
- type: entity.type,
90
- properties: entity.properties,
91
- created_at: entity.created_at,
92
- updated_at: entity.updated_at,
93
- }, null, 2));
94
- }
95
- // Otherwise list with filters
96
- const filter = {};
97
- if (params.type)
98
- filter.type = params.type;
99
- if (params.name)
100
- filter.name = params.name;
101
- const entities = db.graph.listEntities(userId, agentId, Object.keys(filter).length > 0 ? filter : undefined);
102
- if (entities.length === 0) {
34
+ const sessionKey = getSessionKey(ctx);
35
+ const { userId, agentId } = parseOpenClawSessionIdentity(sessionKey);
36
+ const useCasePort = getMemoryUseCasePortForContext(ctx);
37
+ const data = await useCasePort.run("graph.entity.get", {
38
+ context: { userId, agentId },
39
+ payload: params,
40
+ meta: {
41
+ source: "openclaw",
42
+ toolName: "memory_graph_entity_get",
43
+ requestId: _id,
44
+ },
45
+ });
46
+ if (!data || (Array.isArray(data) && data.length === 0)) {
103
47
  return createResult(params.type || params.name
104
48
  ? `No entities found${params.type ? ` with type "${params.type}"` : ""}${params.name ? ` matching name "${params.name}"` : ""}.`
105
49
  : "No entities stored yet. Use memory_graph_entity_set to create entities.");
106
50
  }
107
- const summary = entities.map((e) => ({
51
+ if (!Array.isArray(data)) {
52
+ return createResult(JSON.stringify({
53
+ id: data.id,
54
+ name: data.name,
55
+ type: data.type,
56
+ properties: data.properties,
57
+ created_at: data.created_at,
58
+ updated_at: data.updated_at,
59
+ }, null, 2));
60
+ }
61
+ const summary = data.map((e) => ({
108
62
  id: e.id,
109
63
  name: e.name,
110
64
  type: e.type,
111
- properties: Object.keys(e.properties).length > 0 ? e.properties : undefined,
65
+ properties: Object.keys(e.properties || {}).length > 0 ? e.properties : undefined,
112
66
  }));
113
- return createResult(`📦 Found ${entities.length} entity(s):\n\n${JSON.stringify(summary, null, 2)}`);
67
+ return createResult(`📦 Found ${data.length} entity(s):\n\n${JSON.stringify(summary, null, 2)}`);
114
68
  }
115
69
  catch (error) {
116
70
  return createResult(`Error: ${error instanceof Error ? error.message : String(error)}`, true);
117
71
  }
118
72
  },
119
73
  });
120
- // ===========================================================================
74
+ // ==========================================================================
121
75
  // Tool 2: memory_graph_entity_set
122
- // ===========================================================================
76
+ // ==========================================================================
123
77
  api.registerTool({
124
78
  name: "memory_graph_entity_set",
125
79
  label: "Graph Entity Set",
@@ -139,41 +93,31 @@ export function registerGraphTools(api, options) {
139
93
  },
140
94
  async execute(_id, params, ctx) {
141
95
  try {
142
- const slotDbDir = resolveSlotDbDirFromContext(ctx);
143
- const sessionKey = ctx?.sessionKey || "agent:main:default";
144
- const { userId, agentId } = extractScope(sessionKey);
145
- const db = getSlotDB(slotDbDir);
146
- let entity;
96
+ const sessionKey = getSessionKey(ctx);
97
+ const { userId, agentId } = parseOpenClawSessionIdentity(sessionKey);
98
+ const useCasePort = getMemoryUseCasePortForContext(ctx);
99
+ const entity = await useCasePort.run("graph.entity.set", {
100
+ context: { userId, agentId },
101
+ payload: params,
102
+ meta: {
103
+ source: "openclaw",
104
+ toolName: "memory_graph_entity_set",
105
+ requestId: _id,
106
+ },
107
+ });
147
108
  if (params.id) {
148
- // Update existing
149
- entity = db.graph.updateEntity(userId, agentId, params.id, {
150
- name: params.name,
151
- type: params.type,
152
- properties: params.properties,
153
- });
154
- if (!entity) {
155
- return createResult(`Entity with ID "${params.id}" not found.`, true);
156
- }
157
109
  return createResult(`✏️ Entity updated:\n${JSON.stringify({ id: entity.id, name: entity.name, type: entity.type, properties: entity.properties }, null, 2)}`);
158
110
  }
159
- else {
160
- // Create new
161
- entity = db.graph.createEntity(userId, agentId, {
162
- name: params.name,
163
- type: params.type,
164
- properties: params.properties,
165
- });
166
- return createResult(`✅ Entity created:\n${JSON.stringify({ id: entity.id, name: entity.name, type: entity.type, properties: entity.properties }, null, 2)}`);
167
- }
111
+ return createResult(`✅ Entity created:\n${JSON.stringify({ id: entity.id, name: entity.name, type: entity.type, properties: entity.properties }, null, 2)}`);
168
112
  }
169
113
  catch (error) {
170
114
  return createResult(`Error: ${error instanceof Error ? error.message : String(error)}`, true);
171
115
  }
172
116
  },
173
117
  });
174
- // ===========================================================================
118
+ // ==========================================================================
175
119
  // Tool 3: memory_graph_rel_add
176
- // ===========================================================================
120
+ // ==========================================================================
177
121
  api.registerTool({
178
122
  name: "memory_graph_rel_add",
179
123
  label: "Graph Relationship Add",
@@ -194,32 +138,34 @@ export function registerGraphTools(api, options) {
194
138
  },
195
139
  async execute(_id, params, ctx) {
196
140
  try {
197
- const slotDbDir = resolveSlotDbDirFromContext(ctx);
198
- const sessionKey = ctx?.sessionKey || "agent:main:default";
199
- const { userId, agentId } = extractScope(sessionKey);
200
- const db = getSlotDB(slotDbDir);
201
- // Verify entities exist
202
- const source = db.graph.getEntity(userId, agentId, params.source_id);
203
- const target = db.graph.getEntity(userId, agentId, params.target_id);
204
- if (!source) {
205
- return createResult(`Source entity "${params.source_id}" not found.`, true);
206
- }
207
- if (!target) {
208
- return createResult(`Target entity "${params.target_id}" not found.`, true);
209
- }
210
- const rel = db.graph.createRelationship(userId, agentId, {
211
- source_entity_id: params.source_id,
212
- target_entity_id: params.target_id,
213
- relation_type: params.relation_type,
214
- weight: params.weight,
215
- properties: params.properties,
141
+ const sessionKey = getSessionKey(ctx);
142
+ const { userId, agentId } = parseOpenClawSessionIdentity(sessionKey);
143
+ const useCasePort = getMemoryUseCasePortForContext(ctx);
144
+ const rel = await useCasePort.run("graph.rel.add", {
145
+ context: { userId, agentId },
146
+ payload: params,
147
+ meta: {
148
+ source: "openclaw",
149
+ toolName: "memory_graph_rel_add",
150
+ requestId: _id,
151
+ },
152
+ });
153
+ const source = await useCasePort.run("graph.entity.get", {
154
+ context: { userId, agentId },
155
+ payload: { id: params.source_id },
156
+ meta: { source: "openclaw", toolName: "memory_graph_rel_add", requestId: _id },
157
+ });
158
+ const target = await useCasePort.run("graph.entity.get", {
159
+ context: { userId, agentId },
160
+ payload: { id: params.target_id },
161
+ meta: { source: "openclaw", toolName: "memory_graph_rel_add", requestId: _id },
216
162
  });
217
163
  return createResult(`🔗 Relationship created:\n` +
218
- `${source.name} --[${params.relation_type}]--> ${target.name}\n\n` +
164
+ `${source?.name || params.source_id} --[${params.relation_type}]--> ${target?.name || params.target_id}\n\n` +
219
165
  JSON.stringify({
220
166
  id: rel.id,
221
- source: source.name,
222
- target: target.name,
167
+ source: source?.name || params.source_id,
168
+ target: target?.name || params.target_id,
223
169
  relation_type: rel.relation_type,
224
170
  weight: rel.weight,
225
171
  properties: rel.properties,
@@ -230,9 +176,9 @@ export function registerGraphTools(api, options) {
230
176
  }
231
177
  },
232
178
  });
233
- // ===========================================================================
179
+ // ==========================================================================
234
180
  // Tool 4: memory_graph_rel_remove
235
- // ===========================================================================
181
+ // ==========================================================================
236
182
  api.registerTool({
237
183
  name: "memory_graph_rel_remove",
238
184
  label: "Graph Relationship Remove",
@@ -248,46 +194,38 @@ export function registerGraphTools(api, options) {
248
194
  },
249
195
  async execute(_id, params, ctx) {
250
196
  try {
251
- const slotDbDir = resolveSlotDbDirFromContext(ctx);
252
- const sessionKey = ctx?.sessionKey || "agent:main:default";
253
- const { userId, agentId } = extractScope(sessionKey);
254
- const db = getSlotDB(slotDbDir);
197
+ const sessionKey = getSessionKey(ctx);
198
+ const { userId, agentId } = parseOpenClawSessionIdentity(sessionKey);
199
+ const useCasePort = getMemoryUseCasePortForContext(ctx);
200
+ const result = await useCasePort.run("graph.rel.remove", {
201
+ context: { userId, agentId },
202
+ payload: params,
203
+ meta: {
204
+ source: "openclaw",
205
+ toolName: "memory_graph_rel_remove",
206
+ requestId: _id,
207
+ },
208
+ });
255
209
  if (params.id) {
256
- // Delete by ID
257
- const deleted = db.graph.deleteRelationship(userId, agentId, params.id);
258
- if (deleted) {
259
- return createResult(`✅ Relationship "${params.id}" deleted.`);
260
- }
261
- else {
262
- return createResult(`Relationship "${params.id}" not found.`);
263
- }
210
+ return createResult(result.deleted
211
+ ? `✅ Relationship "${params.id}" deleted.`
212
+ : `Relationship "${params.id}" not found.`);
264
213
  }
265
- // Need source + target + relation_type
266
214
  if (!params.source_id || !params.target_id || !params.relation_type) {
267
215
  return createResult("Error: Either provide 'id' or provide 'source_id', 'target_id', and 'relation_type'.", true);
268
216
  }
269
- // Find relationship by source/target/type
270
- const rels = db.graph.getRelationships(userId, agentId, params.source_id, "outgoing");
271
- const rel = rels.find((r) => r.target_entity_id === params.target_id && r.relation_type === params.relation_type);
272
- if (!rel) {
273
- return createResult(`Relationship not found: ${params.source_id} --[${params.relation_type}]--> ${params.target_id}`);
274
- }
275
- const deleted = db.graph.deleteRelationship(userId, agentId, rel.id);
276
- if (deleted) {
277
- return createResult(`✅ Relationship deleted: ${params.source_id} --[${params.relation_type}]--> ${params.target_id}`);
278
- }
279
- else {
280
- return createResult("Failed to delete relationship.");
281
- }
217
+ return createResult(result.deleted
218
+ ? `✅ Relationship deleted: ${params.source_id} --[${params.relation_type}]--> ${params.target_id}`
219
+ : `Relationship not found: ${params.source_id} --[${params.relation_type}]--> ${params.target_id}`);
282
220
  }
283
221
  catch (error) {
284
222
  return createResult(`Error: ${error instanceof Error ? error.message : String(error)}`, true);
285
223
  }
286
224
  },
287
225
  });
288
- // ===========================================================================
226
+ // ==========================================================================
289
227
  // Tool 5: memory_graph_search
290
- // ===========================================================================
228
+ // ==========================================================================
291
229
  api.registerTool({
292
230
  name: "memory_graph_search",
293
231
  label: "Graph Search",
@@ -303,33 +241,44 @@ export function registerGraphTools(api, options) {
303
241
  },
304
242
  async execute(_id, params, ctx) {
305
243
  try {
306
- const slotDbDir = resolveSlotDbDirFromContext(ctx);
307
- const sessionKey = ctx?.sessionKey || "agent:main:default";
308
- const { userId, agentId } = extractScope(sessionKey);
309
- const db = getSlotDB(slotDbDir);
310
- // Get starting entity
311
- const startEntity = db.graph.getEntity(userId, agentId, params.entity_id);
244
+ const sessionKey = getSessionKey(ctx);
245
+ const { userId, agentId } = parseOpenClawSessionIdentity(sessionKey);
246
+ const useCasePort = getMemoryUseCasePortForContext(ctx);
247
+ const startEntity = await useCasePort.run("graph.entity.get", {
248
+ context: { userId, agentId },
249
+ payload: { id: params.entity_id },
250
+ meta: {
251
+ source: "openclaw",
252
+ toolName: "memory_graph_search",
253
+ requestId: _id,
254
+ },
255
+ });
312
256
  if (!startEntity) {
313
257
  return createResult(`Entity "${params.entity_id}" not found.`, true);
314
258
  }
315
- const depth = Math.min(Math.max(params.depth || 2, 1), 3); // Clamp 1-3
316
- // Traverse graph
317
- const result = db.graph.traverseGraph(userId, agentId, params.entity_id, depth);
318
- // Filter by relation type if specified
319
- let relationships = result.relationships;
320
- if (params.relation_type) {
321
- relationships = relationships.filter((r) => r.relation_type === params.relation_type);
322
- }
323
- // Build readable output
259
+ const depth = Math.min(Math.max(params.depth || 2, 1), 3);
260
+ const traversed = await useCasePort.run("graph.search", {
261
+ context: { userId, agentId },
262
+ payload: {
263
+ entity_id: params.entity_id,
264
+ depth,
265
+ relation_type: params.relation_type,
266
+ },
267
+ meta: {
268
+ source: "openclaw",
269
+ toolName: "memory_graph_search",
270
+ requestId: _id,
271
+ },
272
+ });
324
273
  let output = `🕸️ Graph Traversal from "${startEntity.name}" (depth: ${depth})\n\n`;
325
- output += `📦 Entities (${result.entities.length}):\n`;
326
- result.entities.forEach((e) => {
274
+ output += `📦 Entities (${traversed.entities.length}):\n`;
275
+ traversed.entities.forEach((e) => {
327
276
  output += ` • ${e.name} (${e.type})${e.id === params.entity_id ? " [START]" : ""}\n`;
328
277
  });
329
- output += `\n🔗 Relationships (${relationships.length}):\n`;
330
- relationships.forEach((r) => {
331
- const source = result.entities.find((e) => e.id === r.source_entity_id);
332
- const target = result.entities.find((e) => e.id === r.target_entity_id);
278
+ output += `\n🔗 Relationships (${traversed.relationships.length}):\n`;
279
+ traversed.relationships.forEach((r) => {
280
+ const source = traversed.entities.find((e) => e.id === r.source_entity_id);
281
+ const target = traversed.entities.find((e) => e.id === r.target_entity_id);
333
282
  output += ` ${source?.name || "?"} --[${r.relation_type}]--> ${target?.name || "?"}`;
334
283
  if (r.weight !== 1.0)
335
284
  output += ` (weight: ${r.weight})`;