@ubundi/openclaw-cortex 2.4.1 → 2.6.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 (36) hide show
  1. package/README.md +34 -21
  2. package/dist/cortex/client.d.ts +38 -0
  3. package/dist/cortex/client.d.ts.map +1 -1
  4. package/dist/cortex/client.js +3 -0
  5. package/dist/cortex/client.js.map +1 -1
  6. package/dist/features/recall/formatter.d.ts.map +1 -1
  7. package/dist/features/recall/formatter.js +48 -6
  8. package/dist/features/recall/formatter.js.map +1 -1
  9. package/dist/features/recall/handler.d.ts.map +1 -1
  10. package/dist/features/recall/handler.js +13 -2
  11. package/dist/features/recall/handler.js.map +1 -1
  12. package/dist/internal/agent-instructions.d.ts +8 -1
  13. package/dist/internal/agent-instructions.d.ts.map +1 -1
  14. package/dist/internal/agent-instructions.js +38 -10
  15. package/dist/internal/agent-instructions.js.map +1 -1
  16. package/dist/plugin/cli.d.ts.map +1 -1
  17. package/dist/plugin/cli.js +6 -5
  18. package/dist/plugin/cli.js.map +1 -1
  19. package/dist/plugin/config.d.ts +10 -0
  20. package/dist/plugin/config.d.ts.map +1 -1
  21. package/dist/plugin/config.js +2 -0
  22. package/dist/plugin/config.js.map +1 -1
  23. package/dist/plugin/index.d.ts +4 -0
  24. package/dist/plugin/index.d.ts.map +1 -1
  25. package/dist/plugin/index.js +18 -5
  26. package/dist/plugin/index.js.map +1 -1
  27. package/dist/plugin/search-query.d.ts +3 -1
  28. package/dist/plugin/search-query.d.ts.map +1 -1
  29. package/dist/plugin/search-query.js +14 -0
  30. package/dist/plugin/search-query.js.map +1 -1
  31. package/dist/plugin/tools.d.ts +2 -0
  32. package/dist/plugin/tools.d.ts.map +1 -1
  33. package/dist/plugin/tools.js +249 -17
  34. package/dist/plugin/tools.js.map +1 -1
  35. package/openclaw.plugin.json +23 -2
  36. package/package.json +1 -1
@@ -1,10 +1,103 @@
1
1
  import { formatMemories } from "../features/recall/formatter.js";
2
- import { coerceSearchMode, prepareSearchQuery } from "./search-query.js";
2
+ import { coerceSearchMode, filterSearchResults, prepareSearchQuery } from "./search-query.js";
3
+ const FORGET_QUERY_LIMIT = 10;
4
+ const FORGET_QUERY_MIN_CONFIDENCE = 0.5;
5
+ function coerceSearchScope(input) {
6
+ switch (input) {
7
+ case "session":
8
+ case "long-term":
9
+ case "all":
10
+ return input;
11
+ default:
12
+ return "all";
13
+ }
14
+ }
15
+ function normalizeSessionKey(value) {
16
+ if (typeof value !== "string")
17
+ return undefined;
18
+ const trimmed = value.trim();
19
+ return trimmed.length > 0 ? trimmed : undefined;
20
+ }
21
+ function getSearchSessionIds(deps) {
22
+ const activeSessionKey = normalizeSessionKey(deps.getActiveSessionKey?.());
23
+ if (activeSessionKey)
24
+ return [activeSessionKey];
25
+ const toolSessionId = normalizeSessionKey(deps.sessionId);
26
+ return toolSessionId ? [toolSessionId] : [];
27
+ }
28
+ function getLongTermExcludedSessionIds(deps) {
29
+ const sessionIds = new Set();
30
+ const activeSessionKey = normalizeSessionKey(deps.getActiveSessionKey?.());
31
+ if (activeSessionKey)
32
+ sessionIds.add(activeSessionKey);
33
+ return sessionIds;
34
+ }
35
+ function getMemoryDisplayScore(memory) {
36
+ return memory.relevance ?? memory.confidence;
37
+ }
38
+ function sortMemoriesByDisplayScore(memories) {
39
+ return [...memories].sort((a, b) => getMemoryDisplayScore(b) - getMemoryDisplayScore(a));
40
+ }
41
+ function formatForgetMatches(memories) {
42
+ const previews = memories.slice(0, 3).map((memory) => `- [${memory.confidence.toFixed(2)}] ${memory.content}`);
43
+ return previews.length > 0 ? `Matching memories:\n${previews.join("\n")}` : "";
44
+ }
45
+ function collectEntityNames(memories) {
46
+ const entities = new Set();
47
+ for (const memory of memories) {
48
+ for (const entity of memory.entities ?? []) {
49
+ const trimmed = entity.trim();
50
+ if (trimmed)
51
+ entities.add(trimmed);
52
+ }
53
+ }
54
+ return [...entities];
55
+ }
56
+ function extractRelatedEntityNames(node) {
57
+ const entities = new Set();
58
+ for (const entity of node.entities ?? []) {
59
+ const trimmed = entity.trim();
60
+ if (trimmed)
61
+ entities.add(trimmed);
62
+ }
63
+ for (const relatedNode of node.related_nodes ?? []) {
64
+ if (relatedNode.type !== "ENTITY")
65
+ continue;
66
+ const label = typeof relatedNode.content === "string" && relatedNode.content.trim().length > 0
67
+ ? relatedNode.content.trim()
68
+ : typeof relatedNode.name === "string" && relatedNode.name.trim().length > 0
69
+ ? relatedNode.name.trim()
70
+ : relatedNode.node_id;
71
+ if (label)
72
+ entities.add(label);
73
+ }
74
+ return [...entities];
75
+ }
76
+ function formatNodeDetail(node) {
77
+ const lines = [
78
+ `ID: ${node.node_id}`,
79
+ `Type: ${node.type}`,
80
+ ];
81
+ if (typeof node.confidence === "number") {
82
+ lines.push(`Confidence: ${node.confidence.toFixed(2)}`);
83
+ }
84
+ const relatedEntities = extractRelatedEntityNames(node);
85
+ if (relatedEntities.length > 0) {
86
+ lines.push(`Related entities: ${relatedEntities.join(", ")}`);
87
+ }
88
+ if (node.created_at) {
89
+ lines.push(`Created: ${node.created_at}`);
90
+ }
91
+ if (node.updated_at) {
92
+ lines.push(`Updated: ${node.updated_at}`);
93
+ }
94
+ return `${lines.join("\n")}\n\n${node.content}`;
95
+ }
3
96
  export function buildSearchMemoryTool(deps) {
4
97
  const { client, config, logger, getUserId, userIdReady, sessionStats, persistStats, auditLoggerProxy, } = deps;
5
98
  return {
6
99
  name: "cortex_search_memory",
7
- description: "Search long-term memory for facts, preferences, and past context. Use when you need to recall something the user mentioned before or retrieve stored knowledge. Use 'mode' to narrow results to a specific category.",
100
+ description: "Search long-term memory for facts, preferences, and past context. Use when you need to recall something the user mentioned before or retrieve stored knowledge. Use 'mode' to narrow results to a specific category and 'scope' to focus on the current session versus older memories.",
8
101
  parameters: {
9
102
  type: "object",
10
103
  properties: {
@@ -22,6 +115,12 @@ export function buildSearchMemoryTool(deps) {
22
115
  enum: ["all", "decisions", "preferences", "facts", "recent"],
23
116
  description: "Filter memories by category. 'all' returns everything (default), 'decisions' returns architectural/design choices, 'preferences' returns user likes/settings, 'facts' returns durable knowledge, 'recent' prioritizes recency over relevance.",
24
117
  },
118
+ scope: {
119
+ type: "string",
120
+ enum: ["all", "session", "long-term"],
121
+ description: "Search across all memories (default), only the current session, or only long-term memories from other sessions.",
122
+ default: "all",
123
+ },
25
124
  },
26
125
  required: ["query"],
27
126
  },
@@ -29,10 +128,14 @@ export function buildSearchMemoryTool(deps) {
29
128
  const query = String(params.query ?? "");
30
129
  const limit = Math.min(Math.max(Number(params.limit) || 10, 1), 50);
31
130
  const mode = coerceSearchMode(typeof params.mode === "string" ? params.mode : undefined);
131
+ const scope = coerceSearchScope(params.scope);
132
+ const initialRecallLimit = scope === "long-term"
133
+ ? Math.min(50, Math.max(limit, Math.ceil(limit * 2)))
134
+ : limit;
32
135
  await userIdReady;
33
136
  const userId = getUserId();
34
137
  const prepared = prepareSearchQuery(query, mode);
35
- logger.debug?.(`Cortex search: "${prepared.effectiveQuery.slice(0, 80)}" (limit=${limit}, mode=${prepared.mode})`);
138
+ logger.debug?.(`Cortex search: "${prepared.effectiveQuery.slice(0, 80)}" (limit=${limit}, mode=${prepared.mode}, scope=${scope})`);
36
139
  sessionStats.searches++;
37
140
  persistStats(sessionStats);
38
141
  void auditLoggerProxy.log({
@@ -43,29 +146,61 @@ export function buildSearchMemoryTool(deps) {
43
146
  userId,
44
147
  });
45
148
  try {
46
- const doRecall = async (attempt = 0) => {
149
+ const doRecall = async (recallLimit, sessionFilter, attempt = 0) => {
47
150
  try {
48
151
  return await client.recall(prepared.effectiveQuery, config.toolTimeoutMs, {
49
- limit,
152
+ limit: recallLimit,
50
153
  userId: userId,
51
154
  queryType: prepared.queryType,
52
155
  memoryType: prepared.memoryType,
156
+ ...(sessionFilter ? { sessionFilter } : {}),
53
157
  });
54
158
  }
55
159
  catch (err) {
56
160
  if (attempt < 1 && /50[23]/.test(String(err))) {
57
161
  await new Promise((r) => setTimeout(r, 1500));
58
- return doRecall(attempt + 1);
162
+ return doRecall(recallLimit, sessionFilter, attempt + 1);
59
163
  }
60
164
  throw err;
61
165
  }
62
166
  };
63
- const response = await doRecall();
64
- if (!response.memories?.length) {
167
+ let scopedMemories;
168
+ if (scope === "session") {
169
+ const sessionIds = getSearchSessionIds(deps);
170
+ const responses = await Promise.all(sessionIds.map((sessionFilter) => doRecall(limit, sessionFilter)));
171
+ const combinedMemories = responses.flatMap((response) => response.memories ?? []);
172
+ scopedMemories = responses.length > 1
173
+ ? sortMemoriesByDisplayScore(combinedMemories)
174
+ : combinedMemories;
175
+ }
176
+ else if (scope === "long-term") {
177
+ const excludedSessionIds = getLongTermExcludedSessionIds(deps);
178
+ let expandedRecallLimit = initialRecallLimit;
179
+ let response = await doRecall(expandedRecallLimit);
180
+ scopedMemories = excludedSessionIds.size > 0
181
+ ? (response.memories ?? []).filter((memory) => !excludedSessionIds.has(memory.session_id ?? ""))
182
+ : (response.memories ?? []);
183
+ while (excludedSessionIds.size > 0 &&
184
+ scopedMemories.length < limit &&
185
+ expandedRecallLimit < 50 &&
186
+ (response.memories?.length ?? 0) >= expandedRecallLimit) {
187
+ expandedRecallLimit = Math.min(50, Math.max(expandedRecallLimit + limit, Math.ceil(expandedRecallLimit * 1.5)));
188
+ logger.debug?.(`Cortex search: expanding long-term scope fetch to ${expandedRecallLimit} results`);
189
+ response = await doRecall(expandedRecallLimit);
190
+ scopedMemories = (response.memories ?? []).filter((memory) => !excludedSessionIds.has(memory.session_id ?? ""));
191
+ }
192
+ }
193
+ else {
194
+ const response = await doRecall(initialRecallLimit);
195
+ scopedMemories = response.memories ?? [];
196
+ }
197
+ const filteredMemories = filterSearchResults(scopedMemories, prepared.mode)
198
+ .slice(0, Math.min(limit, config.recallTopK));
199
+ if (!filteredMemories.length) {
65
200
  return { content: [{ type: "text", text: "No memories found matching that query." }] };
66
201
  }
67
- logger.debug?.(`Cortex search returned ${response.memories.length} memories`);
68
- const formatted = formatMemories(response.memories, config.recallTopK);
202
+ logger.debug?.(`Cortex search returned ${filteredMemories.length} memories after filtering`);
203
+ const formatted = formatMemories(filteredMemories, config.recallTopK);
69
204
  return { content: [{ type: "text", text: formatted }] };
70
205
  }
71
206
  catch (err) {
@@ -76,7 +211,7 @@ export function buildSearchMemoryTool(deps) {
76
211
  };
77
212
  }
78
213
  export function buildSaveMemoryTool(deps) {
79
- const { client, config, logger, getUserId, userIdReady, sessionId, sessionStats, persistStats, auditLoggerProxy, knowledgeState, recentSaves, } = deps;
214
+ const { client, config, logger, getUserId, getActiveSessionKey, userIdReady, sessionId, sessionStats, persistStats, auditLoggerProxy, knowledgeState, recentSaves, } = deps;
80
215
  return {
81
216
  name: "cortex_save_memory",
82
217
  description: "Explicitly save a fact, preference, or piece of information to long-term memory. Use when the user asks you to remember something specific. Provide type and importance to help organize memories for better retrieval.",
@@ -114,6 +249,7 @@ export function buildSaveMemoryTool(deps) {
114
249
  const checkNovelty = params.checkNovelty === true;
115
250
  await userIdReady;
116
251
  const userId = getUserId();
252
+ const effectiveSessionId = normalizeSessionKey(getActiveSessionKey?.()) ?? sessionId;
117
253
  if (!userId) {
118
254
  logger.warn("Cortex save: missing user_id");
119
255
  return { content: [{ type: "text", text: "Failed to save memory: Cortex ingest requires user_id." }] };
@@ -163,13 +299,13 @@ export function buildSaveMemoryTool(deps) {
163
299
  method: "POST",
164
300
  endpoint: "/v1/remember",
165
301
  payload: enrichedText,
166
- sessionId,
302
+ sessionId: effectiveSessionId,
167
303
  userId,
168
304
  });
169
305
  try {
170
306
  const now = new Date();
171
307
  const referenceDate = now.toISOString().slice(0, 10);
172
- await client.remember(enrichedText, sessionId, config.toolTimeoutMs, referenceDate, userId, "openclaw", "OpenClaw");
308
+ await client.remember(enrichedText, effectiveSessionId, config.toolTimeoutMs, referenceDate, userId, "openclaw", "OpenClaw");
173
309
  if (knowledgeState) {
174
310
  knowledgeState.hasMemories = true;
175
311
  }
@@ -188,7 +324,7 @@ export function buildSaveMemoryTool(deps) {
188
324
  logger.warn(`Cortex save failed, falling back to async ingest: ${String(err)}`);
189
325
  try {
190
326
  const referenceDate = new Date().toISOString();
191
- const job = await client.submitIngest(enrichedText, sessionId, referenceDate, userId, "openclaw", "OpenClaw");
327
+ const job = await client.submitIngest(enrichedText, effectiveSessionId, referenceDate, userId, "openclaw", "OpenClaw");
192
328
  if (knowledgeState) {
193
329
  knowledgeState.hasMemories = true;
194
330
  }
@@ -214,7 +350,7 @@ export function buildForgetMemoryTool(deps) {
214
350
  const { client, config, logger, getUserId, userIdReady, auditLoggerProxy, } = deps;
215
351
  return {
216
352
  name: "cortex_forget",
217
- description: "Selectively remove memories from long-term storage. Use when the user says something is wrong, outdated, or should be forgotten. Target by entity name (a person, project, or concept) or by session ID.",
353
+ description: "Selectively remove memories from long-term storage. Use when the user says something is wrong, outdated, or should be forgotten. Target by entity name or by session ID; use 'query' to identify candidate memories and entities before deleting anything.",
218
354
  parameters: {
219
355
  type: "object",
220
356
  properties: {
@@ -226,19 +362,75 @@ export function buildForgetMemoryTool(deps) {
226
362
  type: "string",
227
363
  description: "Session ID whose memories should be removed. Removes all memories from that session.",
228
364
  },
365
+ query: {
366
+ type: "string",
367
+ description: "Search for related memories first and surface candidate entities or sessions to confirm before forgetting.",
368
+ },
229
369
  },
230
370
  },
231
371
  async execute(_id, params) {
232
372
  const entity = typeof params.entity === "string" ? params.entity.trim() : undefined;
233
373
  const session = typeof params.session === "string" ? params.session.trim() : undefined;
234
- if (!entity && !session) {
374
+ const query = typeof params.query === "string" ? params.query.trim() : undefined;
375
+ if (!entity && !session && !query) {
235
376
  return {
236
- content: [{ type: "text", text: "Please specify either an 'entity' name or a 'session' ID to forget." }],
377
+ content: [{ type: "text", text: "Please specify an 'entity', a 'session', or a 'query' to forget." }],
237
378
  };
238
379
  }
239
380
  await userIdReady;
240
381
  const userId = getUserId();
241
382
  const results = [];
383
+ if (query) {
384
+ void auditLoggerProxy.log({
385
+ feature: "tool-forget-memory",
386
+ method: "POST",
387
+ endpoint: "/v1/recall",
388
+ payload: query,
389
+ userId,
390
+ });
391
+ try {
392
+ const response = await client.recall(query, config.toolTimeoutMs, {
393
+ limit: FORGET_QUERY_LIMIT,
394
+ userId,
395
+ });
396
+ const matchedMemories = response.memories ?? [];
397
+ const highConfidenceMemories = matchedMemories.filter((memory) => memory.confidence >= FORGET_QUERY_MIN_CONFIDENCE);
398
+ const entityNames = collectEntityNames(highConfidenceMemories);
399
+ if (entityNames.length === 0) {
400
+ if (matchedMemories.length === 0) {
401
+ results.push(`No memories found matching "${query}".`);
402
+ }
403
+ else {
404
+ const prefix = highConfidenceMemories.length === 0
405
+ ? `Matched ${matchedMemories.length} memor${matchedMemories.length === 1 ? "y" : "ies"}, but none met the confidence threshold of ${FORGET_QUERY_MIN_CONFIDENCE.toFixed(2)}.`
406
+ : `Found ${highConfidenceMemories.length} high-confidence memor${highConfidenceMemories.length === 1 ? "y" : "ies"}, but none included named entities to forget.`;
407
+ const previewBlock = formatForgetMatches(highConfidenceMemories.length > 0 ? highConfidenceMemories : matchedMemories);
408
+ results.push([
409
+ prefix,
410
+ previewBlock,
411
+ "No memories were deleted. Confirm the exact 'entity' or 'session' with the user before forgetting.",
412
+ ]
413
+ .filter(Boolean)
414
+ .join("\n"));
415
+ }
416
+ }
417
+ else {
418
+ const previewBlock = formatForgetMatches(highConfidenceMemories);
419
+ results.push([
420
+ `Found ${highConfidenceMemories.length} matching memories.`,
421
+ previewBlock,
422
+ `Candidate entities: ${entityNames.join(", ")}.`,
423
+ "No memories were deleted from the query matches. Confirm the exact 'entity' or 'session' with the user before forgetting.",
424
+ ]
425
+ .filter(Boolean)
426
+ .join("\n"));
427
+ }
428
+ }
429
+ catch (err) {
430
+ logger.warn(`Cortex forget query failed: ${String(err)}`);
431
+ results.push(`Failed to search memories for query "${query}": ${String(err)}`);
432
+ }
433
+ }
242
434
  if (entity) {
243
435
  void auditLoggerProxy.log({
244
436
  feature: "tool-forget-memory",
@@ -279,4 +471,44 @@ export function buildForgetMemoryTool(deps) {
279
471
  },
280
472
  };
281
473
  }
474
+ export function buildGetMemoryTool(deps) {
475
+ const { client, config, logger, getUserId, userIdReady, auditLoggerProxy, } = deps;
476
+ return {
477
+ name: "cortex_get_memory",
478
+ description: "Fetch a specific memory by its node ID when you already know the exact memory identifier.",
479
+ parameters: {
480
+ type: "object",
481
+ properties: {
482
+ id: {
483
+ type: "string",
484
+ description: "The Cortex node ID of the memory to retrieve.",
485
+ },
486
+ },
487
+ required: ["id"],
488
+ },
489
+ async execute(_id, params) {
490
+ const memoryId = typeof params.id === "string" ? params.id.trim() : "";
491
+ if (!memoryId) {
492
+ return { content: [{ type: "text", text: "Please provide a memory 'id' to retrieve." }] };
493
+ }
494
+ await userIdReady;
495
+ const userId = getUserId();
496
+ void auditLoggerProxy.log({
497
+ feature: "tool-get-memory",
498
+ method: "GET",
499
+ endpoint: `/v1/nodes/${memoryId}`,
500
+ payload: memoryId,
501
+ userId,
502
+ });
503
+ try {
504
+ const response = await client.getNode(memoryId, config.toolTimeoutMs);
505
+ return { content: [{ type: "text", text: formatNodeDetail(response) }] };
506
+ }
507
+ catch (err) {
508
+ logger.warn(`Cortex get memory failed: ${String(err)}`);
509
+ return { content: [{ type: "text", text: `Failed to fetch memory "${memoryId}": ${String(err)}` }] };
510
+ }
511
+ },
512
+ };
513
+ }
282
514
  //# sourceMappingURL=tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/plugin/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/plugin/tools.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "id": "openclaw-cortex",
3
3
  "name": "Cortex Memory",
4
- "description": "Long-term memory powered by Cortex — Auto-Recall, Auto-Capture, and agent memory tools",
5
- "version": "2.4.1",
4
+ "description": "Long-term memory powered by Cortex — Auto-Recall, Auto-Capture, agent memory tools, and deduplication",
5
+ "version": "2.6.0",
6
6
  "configSchema": {
7
7
  "type": "object",
8
8
  "properties": {
@@ -98,6 +98,17 @@
98
98
  "type": "string",
99
99
  "description": "Session namespace to isolate memory per workspace/project. Auto-derived from workspace directory if not set.",
100
100
  "default": "openclaw"
101
+ },
102
+ "captureInstructions": {
103
+ "type": "string",
104
+ "description": "Optional custom guidance appended to AGENTS.md describing what kinds of information should be proactively saved to Cortex."
105
+ },
106
+ "captureCategories": {
107
+ "type": "array",
108
+ "description": "Optional list of categories the agent should pay extra attention to when deciding what to save to memory.",
109
+ "items": {
110
+ "type": "string"
111
+ }
101
112
  }
102
113
  }
103
114
  },
@@ -175,6 +186,16 @@
175
186
  "label": "Namespace",
176
187
  "advanced": true,
177
188
  "helpText": "Isolates memory per workspace. Auto-derived from workspace directory if left empty."
189
+ },
190
+ "captureInstructions": {
191
+ "label": "Capture Instructions",
192
+ "advanced": true,
193
+ "helpText": "Appends custom save guidance to the injected Cortex section in AGENTS.md so the agent knows what to prioritize."
194
+ },
195
+ "captureCategories": {
196
+ "label": "Capture Categories",
197
+ "advanced": true,
198
+ "helpText": "Highlights categories the agent should especially watch for when deciding what to save to memory."
178
199
  }
179
200
  }
180
201
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ubundi/openclaw-cortex",
3
- "version": "2.4.1",
3
+ "version": "2.6.0",
4
4
  "description": "OpenClaw plugin for Cortex memory — Auto-Recall, Auto-Capture, and agent memory tools",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",