@ubundi/openclaw-cortex 2.5.0 → 2.7.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.
@@ -1,10 +1,103 @@
1
1
  import { formatMemories } from "../features/recall/formatter.js";
2
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,25 +146,56 @@ 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
- const filteredMemories = filterSearchResults(response.memories ?? [], prepared.mode);
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));
65
199
  if (!filteredMemories.length) {
66
200
  return { content: [{ type: "text", text: "No memories found matching that query." }] };
67
201
  }
@@ -77,7 +211,7 @@ export function buildSearchMemoryTool(deps) {
77
211
  };
78
212
  }
79
213
  export function buildSaveMemoryTool(deps) {
80
- 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;
81
215
  return {
82
216
  name: "cortex_save_memory",
83
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.",
@@ -115,6 +249,7 @@ export function buildSaveMemoryTool(deps) {
115
249
  const checkNovelty = params.checkNovelty === true;
116
250
  await userIdReady;
117
251
  const userId = getUserId();
252
+ const effectiveSessionId = normalizeSessionKey(getActiveSessionKey?.()) ?? sessionId;
118
253
  if (!userId) {
119
254
  logger.warn("Cortex save: missing user_id");
120
255
  return { content: [{ type: "text", text: "Failed to save memory: Cortex ingest requires user_id." }] };
@@ -164,13 +299,13 @@ export function buildSaveMemoryTool(deps) {
164
299
  method: "POST",
165
300
  endpoint: "/v1/remember",
166
301
  payload: enrichedText,
167
- sessionId,
302
+ sessionId: effectiveSessionId,
168
303
  userId,
169
304
  });
170
305
  try {
171
306
  const now = new Date();
172
307
  const referenceDate = now.toISOString().slice(0, 10);
173
- await client.remember(enrichedText, sessionId, config.toolTimeoutMs, referenceDate, userId, "openclaw", "OpenClaw");
308
+ await client.remember(enrichedText, effectiveSessionId, config.toolTimeoutMs, referenceDate, userId, "openclaw", "OpenClaw");
174
309
  if (knowledgeState) {
175
310
  knowledgeState.hasMemories = true;
176
311
  }
@@ -189,7 +324,7 @@ export function buildSaveMemoryTool(deps) {
189
324
  logger.warn(`Cortex save failed, falling back to async ingest: ${String(err)}`);
190
325
  try {
191
326
  const referenceDate = new Date().toISOString();
192
- const job = await client.submitIngest(enrichedText, sessionId, referenceDate, userId, "openclaw", "OpenClaw");
327
+ const job = await client.submitIngest(enrichedText, effectiveSessionId, referenceDate, userId, "openclaw", "OpenClaw");
193
328
  if (knowledgeState) {
194
329
  knowledgeState.hasMemories = true;
195
330
  }
@@ -215,7 +350,7 @@ export function buildForgetMemoryTool(deps) {
215
350
  const { client, config, logger, getUserId, userIdReady, auditLoggerProxy, } = deps;
216
351
  return {
217
352
  name: "cortex_forget",
218
- 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.",
219
354
  parameters: {
220
355
  type: "object",
221
356
  properties: {
@@ -227,19 +362,75 @@ export function buildForgetMemoryTool(deps) {
227
362
  type: "string",
228
363
  description: "Session ID whose memories should be removed. Removes all memories from that session.",
229
364
  },
365
+ query: {
366
+ type: "string",
367
+ description: "Search for related memories first and surface candidate entities or sessions to confirm before forgetting.",
368
+ },
230
369
  },
231
370
  },
232
371
  async execute(_id, params) {
233
372
  const entity = typeof params.entity === "string" ? params.entity.trim() : undefined;
234
373
  const session = typeof params.session === "string" ? params.session.trim() : undefined;
235
- if (!entity && !session) {
374
+ const query = typeof params.query === "string" ? params.query.trim() : undefined;
375
+ if (!entity && !session && !query) {
236
376
  return {
237
- 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." }],
238
378
  };
239
379
  }
240
380
  await userIdReady;
241
381
  const userId = getUserId();
242
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
+ }
243
434
  if (entity) {
244
435
  void auditLoggerProxy.log({
245
436
  feature: "tool-forget-memory",
@@ -280,4 +471,44 @@ export function buildForgetMemoryTool(deps) {
280
471
  },
281
472
  };
282
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
+ }
283
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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"}
@@ -2,10 +2,14 @@
2
2
  "id": "openclaw-cortex",
3
3
  "name": "Cortex Memory",
4
4
  "description": "Long-term memory powered by Cortex — Auto-Recall, Auto-Capture, agent memory tools, and deduplication",
5
- "version": "2.5.0",
5
+ "version": "2.7.0",
6
6
  "configSchema": {
7
7
  "type": "object",
8
8
  "properties": {
9
+ "apiKey": {
10
+ "type": "string",
11
+ "description": "Cortex API key. Required for the plugin to function. Can also be set via the CORTEX_API_KEY environment variable."
12
+ },
9
13
  "baseUrl": {
10
14
  "type": "string",
11
15
  "description": "Cortex API base URL",
@@ -98,10 +102,25 @@
98
102
  "type": "string",
99
103
  "description": "Session namespace to isolate memory per workspace/project. Auto-derived from workspace directory if not set.",
100
104
  "default": "openclaw"
105
+ },
106
+ "captureInstructions": {
107
+ "type": "string",
108
+ "description": "Optional custom guidance appended to AGENTS.md describing what kinds of information should be proactively saved to Cortex."
109
+ },
110
+ "captureCategories": {
111
+ "type": "array",
112
+ "description": "Optional list of categories the agent should pay extra attention to when deciding what to save to memory.",
113
+ "items": {
114
+ "type": "string"
115
+ }
101
116
  }
102
117
  }
103
118
  },
104
119
  "uiHints": {
120
+ "apiKey": {
121
+ "label": "API Key",
122
+ "helpText": "Your Cortex API key. Can also be provided via the CORTEX_API_KEY environment variable."
123
+ },
105
124
  "baseUrl": {
106
125
  "label": "Base URL",
107
126
  "advanced": true
@@ -175,6 +194,16 @@
175
194
  "label": "Namespace",
176
195
  "advanced": true,
177
196
  "helpText": "Isolates memory per workspace. Auto-derived from workspace directory if left empty."
197
+ },
198
+ "captureInstructions": {
199
+ "label": "Capture Instructions",
200
+ "advanced": true,
201
+ "helpText": "Appends custom save guidance to the injected Cortex section in AGENTS.md so the agent knows what to prioritize."
202
+ },
203
+ "captureCategories": {
204
+ "label": "Capture Categories",
205
+ "advanced": true,
206
+ "helpText": "Highlights categories the agent should especially watch for when deciding what to save to memory."
178
207
  }
179
208
  }
180
209
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ubundi/openclaw-cortex",
3
- "version": "2.5.0",
3
+ "version": "2.7.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",