@cognee/cognee-openclaw 2026.2.4 → 2026.3.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.
package/README.md CHANGED
@@ -5,7 +5,7 @@ OpenClaw plugin that adds Cognee-backed memory with automatic recall and indexin
5
5
  ## Features
6
6
 
7
7
  - **Auto-recall**: Before each agent run, searches Cognee for relevant memories and injects them as context
8
- - **Auto-index**: On startup and after each agent run, syncs memory markdown files to Cognee (add new, update changed, skip unchanged)
8
+ - **Auto-index**: On startup and after each agent run, syncs memory markdown files to Cognee (add new, update changed, delete removed, skip unchanged)
9
9
  - **CLI commands**: `openclaw cognee index` to manually sync, `openclaw cognee status` to check state
10
10
  - **Configurable**: Search type, max results, score filtering, token limits, and more
11
11
 
@@ -33,13 +33,14 @@ Enable the plugin in your OpenClaw config (`~/.openclaw/config.yaml` or project
33
33
  ```yaml
34
34
  plugins:
35
35
  entries:
36
- memory-cognee:
36
+ cognee-openclaw:
37
37
  enabled: true
38
38
  config:
39
39
  baseUrl: "http://localhost:8000"
40
40
  apiKey: "${COGNEE_API_KEY}"
41
41
  datasetName: "my-project"
42
42
  searchType: "GRAPH_COMPLETION"
43
+ deleteMode: "hard"
43
44
  maxResults: 6
44
45
  autoRecall: true
45
46
  autoIndex: true
@@ -65,18 +66,21 @@ export COGNEE_API_KEY="your-key-here"
65
66
  | `autoRecall` | boolean | `true` | Inject memories before agent runs |
66
67
  | `autoIndex` | boolean | `true` | Sync memory files on startup and after agent runs |
67
68
  | `autoCognify` | boolean | `true` | Run cognify after new memories are added |
69
+ | `deleteMode` | string | `soft` | Delete mode: `soft` removes raw data only, `hard` also removes degree-one graph nodes |
70
+ | `searchPrompt` | string | `""` | System prompt sent to Cognee to guide search query processing |
68
71
  | `requestTimeoutMs` | number | `60000` | HTTP timeout for Cognee requests |
72
+ | `ingestionTimeoutMs` | number | `300000` | HTTP timeout for add/update (ingestion) requests, which are typically slower |
69
73
 
70
74
  ## How It Works
71
75
 
72
- 1. **On startup**: Scans `memory/` directory for markdown files and syncs to Cognee (add new, update changed, skip unchanged)
76
+ 1. **On startup**: Scans `memory/` directory for markdown files and syncs to Cognee (add new, update changed, delete removed, skip unchanged)
73
77
  2. **Before agent start**: Searches Cognee for memories relevant to the prompt and prepends as `<cognee_memories>` context
74
- 3. **After agent end**: Re-scans memory files and syncs any changes the agent made
78
+ 3. **After agent end**: Re-scans memory files and syncs any changes the agent made (including deletions)
75
79
  4. **State tracking**:
76
80
  - `~/.openclaw/memory/cognee/datasets.json` — dataset ID mapping
77
81
  - `~/.openclaw/memory/cognee/sync-index.json` — per-file hash and Cognee data IDs
78
82
 
79
- Memory files detected at: `MEMORY.md`, `memory.md`, or `memory/*.md`
83
+ Memory files detected at: `MEMORY.md` and `memory/**/*.md` (recursive)
80
84
 
81
85
  ## CLI Commands
82
86
 
@@ -103,3 +107,11 @@ For live rebuilds during development:
103
107
  ```bash
104
108
  npm run dev
105
109
  ```
110
+
111
+ ## Testing
112
+
113
+ Run the test suite to verify functionality:
114
+
115
+ ```bash
116
+ npm test
117
+ ```
package/dist/index.d.ts CHANGED
@@ -1,4 +1,135 @@
1
1
  import type { OpenClawPluginApi } from "openclaw/plugin-sdk";
2
+ type CogneeSearchType = "GRAPH_COMPLETION" | "CHUNKS" | "SUMMARIES";
3
+ type CogneeDeleteMode = "soft" | "hard";
4
+ type CogneePluginConfig = {
5
+ baseUrl?: string;
6
+ apiKey?: string;
7
+ username?: string;
8
+ password?: string;
9
+ datasetName?: string;
10
+ searchType?: CogneeSearchType;
11
+ searchPrompt?: string;
12
+ deleteMode?: CogneeDeleteMode;
13
+ maxResults?: number;
14
+ minScore?: number;
15
+ maxTokens?: number;
16
+ autoRecall?: boolean;
17
+ autoIndex?: boolean;
18
+ autoCognify?: boolean;
19
+ requestTimeoutMs?: number;
20
+ ingestionTimeoutMs?: number;
21
+ };
22
+ type CogneeSearchResult = {
23
+ id: string;
24
+ text: string;
25
+ score: number;
26
+ metadata?: Record<string, unknown>;
27
+ };
28
+ type SyncIndex = {
29
+ datasetId?: string;
30
+ datasetName?: string;
31
+ entries: Record<string, {
32
+ hash: string;
33
+ dataId?: string;
34
+ }>;
35
+ };
36
+ type MemoryFile = {
37
+ /** Relative path from workspace root (e.g. "MEMORY.md", "memory/tools.md") */
38
+ path: string;
39
+ /** Absolute path on disk */
40
+ absPath: string;
41
+ /** File content */
42
+ content: string;
43
+ /** SHA-256 hex hash of content */
44
+ hash: string;
45
+ };
46
+ type SyncResult = {
47
+ added: number;
48
+ updated: number;
49
+ skipped: number;
50
+ errors: number;
51
+ deleted: number;
52
+ };
53
+ declare class CogneeClient {
54
+ private readonly baseUrl;
55
+ private readonly apiKey?;
56
+ private readonly username?;
57
+ private readonly password?;
58
+ private readonly timeoutMs;
59
+ private readonly ingestionTimeoutMs;
60
+ private authToken;
61
+ private loginPromise;
62
+ constructor(baseUrl: string, apiKey?: string, username?: string, password?: string, timeoutMs?: number, ingestionTimeoutMs?: number);
63
+ /**
64
+ * Authenticate with Cognee via /api/v1/auth/login.
65
+ * Falls back to default local dev credentials when none are configured.
66
+ */
67
+ login(): Promise<void>;
68
+ /**
69
+ * Ensure the client is authenticated (login once, reuse token).
70
+ */
71
+ ensureAuth(): Promise<void>;
72
+ private buildHeaders;
73
+ private fetchJson;
74
+ add(params: {
75
+ data: string;
76
+ datasetName: string;
77
+ datasetId?: string;
78
+ }): Promise<{
79
+ datasetId: string;
80
+ datasetName: string;
81
+ dataId?: string;
82
+ }>;
83
+ update(params: {
84
+ dataId: string;
85
+ datasetId: string;
86
+ data: string;
87
+ }): Promise<{
88
+ datasetId: string;
89
+ datasetName: string;
90
+ dataId?: string;
91
+ }>;
92
+ /**
93
+ * Query the dataset's data items and find a matching entry by filename.
94
+ * Used as fallback when add/update responses don't include a usable data_id.
95
+ */
96
+ resolveDataIdFromDataset(datasetId: string, fileName: string): Promise<string | undefined>;
97
+ delete(params: {
98
+ dataId: string;
99
+ datasetId: string;
100
+ mode?: CogneeDeleteMode;
101
+ }): Promise<{
102
+ datasetId: string;
103
+ dataId: string;
104
+ deleted: boolean;
105
+ error?: string;
106
+ }>;
107
+ cognify(params?: {
108
+ datasetIds?: string[];
109
+ }): Promise<{
110
+ status?: string;
111
+ }>;
112
+ search(params: {
113
+ queryText: string;
114
+ searchPrompt: string;
115
+ searchType: CogneeSearchType;
116
+ datasetIds: string[];
117
+ maxTokens: number;
118
+ }): Promise<CogneeSearchResult[]>;
119
+ /**
120
+ * Normalize Cognee search response to consistent format.
121
+ * Cognee returns a direct array of strings: ["answer text here"]
122
+ * We convert to: [{ id, text, score }]
123
+ */
124
+ private normalizeSearchResults;
125
+ private extractDataId;
126
+ }
127
+ declare function syncFiles(client: CogneeClient, changedFiles: MemoryFile[], fullFiles: MemoryFile[], syncIndex: SyncIndex, cfg: Required<CogneePluginConfig>, logger: {
128
+ info?: (msg: string) => void;
129
+ warn?: (msg: string) => void;
130
+ }): Promise<SyncResult & {
131
+ datasetId?: string;
132
+ }>;
2
133
  declare const memoryCogneePlugin: {
3
134
  id: string;
4
135
  name: string;
@@ -7,3 +138,5 @@ declare const memoryCogneePlugin: {
7
138
  register(api: OpenClawPluginApi): void;
8
139
  };
9
140
  export default memoryCogneePlugin;
141
+ export { CogneeClient, syncFiles };
142
+ export type { CogneeDeleteMode, CogneePluginConfig, MemoryFile, SyncIndex, SyncResult };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import fs from "node:fs/promises";
1
+ import { promises as fs } from "node:fs";
2
2
  import { createHash } from "node:crypto";
3
3
  import { homedir } from "node:os";
4
4
  import { dirname, join, relative, resolve } from "node:path";
@@ -8,6 +8,8 @@ import { dirname, join, relative, resolve } from "node:path";
8
8
  const DEFAULT_BASE_URL = "http://localhost:8000";
9
9
  const DEFAULT_DATASET_NAME = "openclaw";
10
10
  const DEFAULT_SEARCH_TYPE = "GRAPH_COMPLETION";
11
+ const DEFAULT_SEARCH_PROMPT = "";
12
+ const DEFAULT_DELETE_MODE = "soft";
11
13
  const DEFAULT_MAX_RESULTS = 6;
12
14
  const DEFAULT_MIN_SCORE = 0;
13
15
  const DEFAULT_MAX_TOKENS = 512;
@@ -15,10 +17,13 @@ const DEFAULT_AUTO_RECALL = true;
15
17
  const DEFAULT_AUTO_INDEX = true;
16
18
  const DEFAULT_AUTO_COGNIFY = true;
17
19
  const DEFAULT_REQUEST_TIMEOUT_MS = 60_000;
20
+ const DEFAULT_INGESTION_TIMEOUT_MS = 300_000; // 5 min for add/update (ingestion is slow)
21
+ const MAX_RETRIES = 2;
22
+ const RETRY_BASE_DELAY_MS = 3_000;
18
23
  const STATE_PATH = join(homedir(), ".openclaw", "memory", "cognee", "datasets.json");
19
24
  const SYNC_INDEX_PATH = join(homedir(), ".openclaw", "memory", "cognee", "sync-index.json");
20
25
  /** Glob patterns for memory files, relative to workspace root. */
21
- const MEMORY_FILE_PATTERNS = ["MEMORY.md", "memory.md", "memory"];
26
+ const MEMORY_FILE_PATTERNS = ["MEMORY.md", "memory"];
22
27
  // ---------------------------------------------------------------------------
23
28
  // Helpers
24
29
  // ---------------------------------------------------------------------------
@@ -41,6 +46,8 @@ function resolveConfig(rawConfig) {
41
46
  const baseUrl = raw.baseUrl?.trim() || DEFAULT_BASE_URL;
42
47
  const datasetName = raw.datasetName?.trim() || DEFAULT_DATASET_NAME;
43
48
  const searchType = raw.searchType || DEFAULT_SEARCH_TYPE;
49
+ const searchPrompt = raw.searchPrompt || DEFAULT_SEARCH_PROMPT;
50
+ const deleteMode = raw.deleteMode === "hard" ? "hard" : DEFAULT_DELETE_MODE;
44
51
  const maxResults = typeof raw.maxResults === "number" ? raw.maxResults : DEFAULT_MAX_RESULTS;
45
52
  const minScore = typeof raw.minScore === "number" ? raw.minScore : DEFAULT_MIN_SCORE;
46
53
  const maxTokens = typeof raw.maxTokens === "number" ? raw.maxTokens : DEFAULT_MAX_TOKENS;
@@ -48,14 +55,21 @@ function resolveConfig(rawConfig) {
48
55
  const autoIndex = typeof raw.autoIndex === "boolean" ? raw.autoIndex : DEFAULT_AUTO_INDEX;
49
56
  const autoCognify = typeof raw.autoCognify === "boolean" ? raw.autoCognify : DEFAULT_AUTO_COGNIFY;
50
57
  const requestTimeoutMs = typeof raw.requestTimeoutMs === "number" ? raw.requestTimeoutMs : DEFAULT_REQUEST_TIMEOUT_MS;
58
+ const ingestionTimeoutMs = typeof raw.ingestionTimeoutMs === "number" ? raw.ingestionTimeoutMs : DEFAULT_INGESTION_TIMEOUT_MS;
51
59
  const apiKey = raw.apiKey && raw.apiKey.length > 0
52
60
  ? resolveEnvVars(raw.apiKey)
53
61
  : process.env.COGNEE_API_KEY || "";
62
+ const username = raw.username?.trim() || process.env.COGNEE_USERNAME || "";
63
+ const password = raw.password?.trim() || process.env.COGNEE_PASSWORD || "";
54
64
  return {
55
65
  baseUrl,
56
66
  apiKey,
67
+ username,
68
+ password,
57
69
  datasetName,
58
70
  searchType,
71
+ searchPrompt,
72
+ deleteMode,
59
73
  maxResults,
60
74
  minScore,
61
75
  maxTokens,
@@ -63,6 +77,7 @@ function resolveConfig(rawConfig) {
63
77
  autoIndex,
64
78
  autoCognify,
65
79
  requestTimeoutMs,
80
+ ingestionTimeoutMs,
66
81
  };
67
82
  }
68
83
  // ---------------------------------------------------------------------------
@@ -127,7 +142,6 @@ async function collectMemoryFiles(workspaceDir) {
127
142
  });
128
143
  }
129
144
  else if (stat.isDirectory()) {
130
- // Recursively scan the memory/ directory for .md files
131
145
  const entries = await scanDir(target, workspaceDir);
132
146
  files.push(...entries);
133
147
  }
@@ -136,7 +150,6 @@ async function collectMemoryFiles(workspaceDir) {
136
150
  if (error.code !== "ENOENT") {
137
151
  throw error;
138
152
  }
139
- // File/dir doesn't exist — skip silently
140
153
  }
141
154
  }
142
155
  return files;
@@ -168,53 +181,151 @@ async function scanDir(dir, workspaceDir) {
168
181
  class CogneeClient {
169
182
  baseUrl;
170
183
  apiKey;
184
+ username;
185
+ password;
171
186
  timeoutMs;
172
- constructor(baseUrl, apiKey, timeoutMs = 30_000) {
187
+ ingestionTimeoutMs;
188
+ authToken;
189
+ loginPromise;
190
+ constructor(baseUrl, apiKey, username, password, timeoutMs = 30_000, ingestionTimeoutMs = DEFAULT_INGESTION_TIMEOUT_MS) {
173
191
  this.baseUrl = baseUrl;
174
192
  this.apiKey = apiKey;
193
+ this.username = username;
194
+ this.password = password;
175
195
  this.timeoutMs = timeoutMs;
196
+ this.ingestionTimeoutMs = ingestionTimeoutMs;
176
197
  }
177
- buildHeaders() {
178
- if (!this.apiKey)
179
- return {};
180
- return {
181
- Authorization: `Bearer ${this.apiKey}`,
182
- "X-Api-Key": this.apiKey,
183
- };
184
- }
185
- async fetchJson(path, init, timeoutMs = this.timeoutMs) {
198
+ /**
199
+ * Authenticate with Cognee via /api/v1/auth/login.
200
+ * Falls back to default local dev credentials when none are configured.
201
+ */
202
+ async login() {
203
+ const user = this.username || "default_user@example.com";
204
+ const pass = this.password || "default_password";
186
205
  const controller = new AbortController();
187
- const timeout = setTimeout(() => controller.abort(), timeoutMs);
206
+ const timeout = setTimeout(() => controller.abort(), this.timeoutMs);
188
207
  try {
189
- const response = await fetch(`${this.baseUrl}${path}`, {
190
- ...init,
208
+ const response = await fetch(`${this.baseUrl}/api/v1/auth/login`, {
209
+ method: "POST",
210
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
211
+ body: new URLSearchParams({ username: user, password: pass }),
191
212
  signal: controller.signal,
192
213
  });
193
214
  if (!response.ok) {
194
215
  const errorText = await response.text();
195
- throw new Error(`Cognee request failed (${response.status}): ${errorText}`);
216
+ throw new Error(`Cognee login failed (${response.status}): ${errorText}`);
217
+ }
218
+ const data = (await response.json());
219
+ this.authToken = data.access_token ?? data.token;
220
+ if (!this.authToken) {
221
+ throw new Error("Cognee login succeeded but no token in response");
196
222
  }
197
- return (await response.json());
198
223
  }
199
224
  finally {
200
225
  clearTimeout(timeout);
201
226
  }
202
227
  }
228
+ /**
229
+ * Ensure the client is authenticated (login once, reuse token).
230
+ */
231
+ async ensureAuth() {
232
+ if (this.authToken || this.apiKey)
233
+ return;
234
+ if (!this.loginPromise) {
235
+ this.loginPromise = this.login().catch((err) => {
236
+ this.loginPromise = undefined;
237
+ throw err;
238
+ });
239
+ }
240
+ return this.loginPromise;
241
+ }
242
+ buildHeaders() {
243
+ if (this.apiKey) {
244
+ return {
245
+ Authorization: `Bearer ${this.apiKey}`,
246
+ "X-Api-Key": this.apiKey,
247
+ };
248
+ }
249
+ if (this.authToken) {
250
+ return { Authorization: `Bearer ${this.authToken}` };
251
+ }
252
+ return {};
253
+ }
254
+ async fetchJson(path, init, timeoutMs = this.timeoutMs, retries = MAX_RETRIES) {
255
+ await this.ensureAuth();
256
+ let lastError;
257
+ for (let attempt = 0; attempt <= retries; attempt++) {
258
+ if (attempt > 0) {
259
+ const delay = RETRY_BASE_DELAY_MS * 2 ** (attempt - 1);
260
+ await new Promise((r) => setTimeout(r, delay));
261
+ }
262
+ const controller = new AbortController();
263
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
264
+ try {
265
+ const response = await fetch(`${this.baseUrl}${path}`, {
266
+ ...init,
267
+ headers: { ...this.buildHeaders(), ...init.headers },
268
+ signal: controller.signal,
269
+ });
270
+ // On 401, try re-login once and retry
271
+ if (response.status === 401 && !this.apiKey) {
272
+ clearTimeout(timer);
273
+ this.authToken = undefined;
274
+ this.loginPromise = undefined;
275
+ await this.ensureAuth();
276
+ const retryController = new AbortController();
277
+ const retryTimeout = setTimeout(() => retryController.abort(), timeoutMs);
278
+ try {
279
+ const retryResponse = await fetch(`${this.baseUrl}${path}`, {
280
+ ...init,
281
+ headers: { ...this.buildHeaders(), ...init.headers },
282
+ signal: retryController.signal,
283
+ });
284
+ if (!retryResponse.ok) {
285
+ const errorText = await retryResponse.text();
286
+ throw new Error(`Cognee request failed (${retryResponse.status}): ${errorText}`);
287
+ }
288
+ return (await retryResponse.json());
289
+ }
290
+ finally {
291
+ clearTimeout(retryTimeout);
292
+ }
293
+ }
294
+ if (!response.ok) {
295
+ const errorText = await response.text();
296
+ throw new Error(`Cognee request failed (${response.status}): ${errorText}`);
297
+ }
298
+ return (await response.json());
299
+ }
300
+ catch (error) {
301
+ clearTimeout(timer);
302
+ const isTimeout = error instanceof DOMException ||
303
+ (error instanceof Error && error.name === "AbortError");
304
+ if (isTimeout && attempt < retries) {
305
+ lastError = error;
306
+ continue;
307
+ }
308
+ throw error;
309
+ }
310
+ }
311
+ throw lastError;
312
+ }
203
313
  async add(params) {
204
314
  const formData = new FormData();
205
- formData.append("data", new Blob([params.data], { type: "text/plain" }), "openclaw-memory.txt");
315
+ const hash8 = createHash("sha256").update(params.data).digest("hex").slice(0, 8);
316
+ const fileName = `openclaw-memory-${hash8}.txt`;
317
+ formData.append("data", new Blob([params.data], { type: "text/plain" }), fileName);
206
318
  formData.append("datasetName", params.datasetName);
207
319
  if (params.datasetId) {
208
320
  formData.append("datasetId", params.datasetId);
209
321
  }
210
- const data = await this.fetchJson("/api/v1/add", {
211
- method: "POST",
212
- headers: this.buildHeaders(),
213
- body: formData,
214
- });
215
- const dataId = this.extractDataId(data.data_id ?? data.data_ingestion_info);
322
+ const data = await this.fetchJson("/api/v1/add", { method: "POST", body: formData }, this.ingestionTimeoutMs);
323
+ let dataId = this.extractDataId(data.data_id ?? data.data_ingestion_info);
324
+ if (!dataId && data.dataset_id) {
325
+ dataId = await this.resolveDataIdFromDataset(data.dataset_id, fileName);
326
+ }
216
327
  if (!dataId) {
217
- console.warn("memory-cognee: add response missing data_id", JSON.stringify({
328
+ console.warn("cognee-openclaw: add response missing data_id and dataset lookup failed", JSON.stringify({
218
329
  keys: Object.keys(data),
219
330
  data_id: data.data_id ?? null,
220
331
  data_ingestion_info: data.data_ingestion_info ?? null,
@@ -232,40 +343,80 @@ class CogneeClient {
232
343
  dataset_id: params.datasetId,
233
344
  });
234
345
  const formData = new FormData();
235
- formData.append("data", new Blob([params.data], { type: "text/plain" }), "openclaw-memory.txt");
236
- const data = await this.fetchJson(`/api/v1/update?${query.toString()}`, {
237
- method: "PATCH",
238
- headers: this.buildHeaders(),
239
- body: formData,
240
- });
346
+ const hash8 = createHash("sha256").update(params.data).digest("hex").slice(0, 8);
347
+ const fileName = `openclaw-memory-${hash8}.txt`;
348
+ formData.append("data", new Blob([params.data], { type: "text/plain" }), fileName);
349
+ const data = await this.fetchJson(`/api/v1/update?${query.toString()}`, { method: "PATCH", body: formData }, this.ingestionTimeoutMs);
350
+ let dataId = this.extractDataId(data.data_id ?? data.data_ingestion_info);
351
+ if (!dataId) {
352
+ dataId = await this.resolveDataIdFromDataset(params.datasetId, fileName);
353
+ }
241
354
  return {
242
355
  datasetId: data.dataset_id,
243
356
  datasetName: data.dataset_name,
244
- dataId: this.extractDataId(data.data_id ?? data.data_ingestion_info),
357
+ dataId,
245
358
  };
246
359
  }
360
+ /**
361
+ * Query the dataset's data items and find a matching entry by filename.
362
+ * Used as fallback when add/update responses don't include a usable data_id.
363
+ */
364
+ async resolveDataIdFromDataset(datasetId, fileName) {
365
+ try {
366
+ const items = await this.fetchJson(`/api/v1/datasets/${datasetId}/data`, {
367
+ method: "GET",
368
+ });
369
+ if (!Array.isArray(items))
370
+ return undefined;
371
+ const match = items.find((item) => item.name === fileName.replace(/\.txt$/, ""));
372
+ return match?.id;
373
+ }
374
+ catch {
375
+ return undefined;
376
+ }
377
+ }
378
+ async delete(params) {
379
+ try {
380
+ const query = new URLSearchParams({
381
+ data_id: params.dataId,
382
+ dataset_id: params.datasetId,
383
+ mode: params.mode ?? "soft",
384
+ });
385
+ await this.fetchJson(`/api/v1/delete?${query.toString()}`, {
386
+ method: "DELETE",
387
+ });
388
+ return {
389
+ datasetId: params.datasetId,
390
+ dataId: params.dataId,
391
+ deleted: true,
392
+ };
393
+ }
394
+ catch (error) {
395
+ return {
396
+ datasetId: params.datasetId,
397
+ dataId: params.dataId,
398
+ deleted: false,
399
+ error: error instanceof Error ? error.message : String(error),
400
+ };
401
+ }
402
+ }
247
403
  async cognify(params = {}) {
248
404
  return this.fetchJson("/api/v1/cognify", {
249
405
  method: "POST",
250
- headers: {
251
- "Content-Type": "application/json",
252
- ...this.buildHeaders(),
253
- },
254
- body: JSON.stringify({ datasetIds: params.datasetIds }),
406
+ headers: { "Content-Type": "application/json" },
407
+ body: JSON.stringify({ datasetIds: params.datasetIds, runInBackground: true }),
255
408
  });
256
409
  }
257
410
  async search(params) {
258
411
  const data = await this.fetchJson("/api/v1/search", {
259
412
  method: "POST",
260
- headers: {
261
- "Content-Type": "application/json",
262
- ...this.buildHeaders(),
263
- },
413
+ headers: { "Content-Type": "application/json" },
264
414
  body: JSON.stringify({
265
415
  query: params.queryText,
266
416
  searchType: params.searchType,
267
417
  datasetIds: params.datasetIds,
268
418
  max_tokens: params.maxTokens,
419
+ ...(params.searchPrompt ? { systemPrompt: params.searchPrompt } : {}),
269
420
  }),
270
421
  });
271
422
  return this.normalizeSearchResults(data);
@@ -329,14 +480,15 @@ class CogneeClient {
329
480
  // - Changed file with dataId → update (no re-cognify)
330
481
  // - Changed file without dataId → add + cognify
331
482
  // - Unchanged file → skip
483
+ // - Deleted file (in index, not on disk) → delete + cognify
332
484
  //
333
- // Matches clawdbot cognee-provider.ts syncFiles() (lines 422-513).
485
+ // Based on clawdbot cognee-provider.ts syncFiles(), extended with delete support.
334
486
  // ---------------------------------------------------------------------------
335
- async function syncFiles(client, files, syncIndex, cfg, logger) {
336
- const result = { added: 0, updated: 0, skipped: 0, errors: 0 };
487
+ async function syncFiles(client, changedFiles, fullFiles, syncIndex, cfg, logger) {
488
+ const result = { added: 0, updated: 0, skipped: 0, errors: 0, deleted: 0 };
337
489
  let datasetId = syncIndex.datasetId;
338
490
  let needsCognify = false;
339
- for (const file of files) {
491
+ for (const file of changedFiles) {
340
492
  const existing = syncIndex.entries[file.path];
341
493
  // Skip unchanged files
342
494
  if (existing && existing.hash === file.hash) {
@@ -348,23 +500,27 @@ async function syncFiles(client, files, syncIndex, cfg, logger) {
348
500
  // Changed file with prior dataId → try update first
349
501
  if (existing?.dataId && datasetId) {
350
502
  try {
351
- await client.update({
503
+ const updateResponse = await client.update({
352
504
  dataId: existing.dataId,
353
505
  datasetId,
354
506
  data: dataWithMetadata,
355
507
  });
356
- syncIndex.entries[file.path] = { hash: file.hash, dataId: existing.dataId };
508
+ const newDataId = updateResponse.dataId;
509
+ if (!newDataId) {
510
+ logger.warn?.(`cognee-openclaw: update for ${file.path} succeeded but could not resolve new data_id`);
511
+ }
512
+ syncIndex.entries[file.path] = { hash: file.hash, dataId: newDataId };
357
513
  syncIndex.datasetId = datasetId;
358
514
  syncIndex.datasetName = cfg.datasetName;
359
515
  result.updated++;
360
- logger.info?.(`memory-cognee: updated ${file.path}`);
516
+ logger.info?.(`cognee-openclaw: updated ${file.path}`);
361
517
  continue; // Success, move to next file
362
518
  }
363
519
  catch (updateError) {
364
520
  // If update fails (404/409 - document not found), fall back to add
365
521
  const errorMsg = updateError instanceof Error ? updateError.message : String(updateError);
366
522
  if (errorMsg.includes("404") || errorMsg.includes("409") || errorMsg.includes("not found")) {
367
- logger.info?.(`memory-cognee: update failed for ${file.path}, falling back to add`);
523
+ logger.info?.(`cognee-openclaw: update failed for ${file.path}, falling back to add`);
368
524
  // Clear the stale dataId and fall through to add
369
525
  delete existing.dataId;
370
526
  }
@@ -394,21 +550,49 @@ async function syncFiles(client, files, syncIndex, cfg, logger) {
394
550
  syncIndex.datasetName = cfg.datasetName;
395
551
  needsCognify = true;
396
552
  result.added++;
397
- logger.info?.(`memory-cognee: added ${file.path}`);
553
+ logger.info?.(`cognee-openclaw: added ${file.path}`);
398
554
  }
399
555
  catch (error) {
400
556
  result.errors++;
401
- logger.warn?.(`memory-cognee: failed to sync ${file.path}: ${error instanceof Error ? error.message : String(error)}`);
557
+ logger.warn?.(`cognee-openclaw: failed to sync ${file.path}: ${error instanceof Error ? error.message : String(error)}`);
558
+ }
559
+ }
560
+ // Handle deletions: remove from Cognee any files no longer present
561
+ const currentPaths = new Set(fullFiles.map(f => f.path));
562
+ for (const [path, entry] of Object.entries(syncIndex.entries)) {
563
+ if (!currentPaths.has(path) && entry.dataId && datasetId) {
564
+ const deleteResult = await client.delete({
565
+ dataId: entry.dataId,
566
+ datasetId,
567
+ mode: cfg.deleteMode,
568
+ });
569
+ if (deleteResult.deleted) {
570
+ result.deleted++;
571
+ delete syncIndex.entries[path];
572
+ logger.info?.(`cognee-openclaw: deleted ${path}`);
573
+ }
574
+ else {
575
+ const isNotFound = deleteResult.error && (deleteResult.error.includes("404") || deleteResult.error.includes("409") || deleteResult.error.includes("not found"));
576
+ if (isNotFound) {
577
+ result.deleted++;
578
+ delete syncIndex.entries[path];
579
+ logger.info?.(`cognee-openclaw: deleted ${path} (already removed from Cognee)`);
580
+ }
581
+ else {
582
+ result.errors++;
583
+ logger.warn?.(`cognee-openclaw: failed to delete ${path}${deleteResult.error ? `: ${deleteResult.error}` : ""}`);
584
+ }
585
+ }
402
586
  }
403
587
  }
404
- // Cognify only after adds (not after updates those are already processed)
588
+ // Cognify only after adds (updates re-process inline; hard-deletes clean up graph nodes inline)
405
589
  if (needsCognify && cfg.autoCognify && datasetId) {
406
590
  try {
407
591
  await client.cognify({ datasetIds: [datasetId] });
408
- logger.info?.("memory-cognee: cognify completed");
592
+ logger.info?.("cognee-openclaw: cognify dispatched");
409
593
  }
410
594
  catch (error) {
411
- logger.warn?.(`memory-cognee: cognify failed: ${error instanceof Error ? error.message : String(error)}`);
595
+ logger.warn?.(`cognee-openclaw: cognify failed: ${error instanceof Error ? error.message : String(error)}`);
412
596
  }
413
597
  }
414
598
  // Save sync index to disk
@@ -419,13 +603,13 @@ async function syncFiles(client, files, syncIndex, cfg, logger) {
419
603
  // Plugin registration
420
604
  // ---------------------------------------------------------------------------
421
605
  const memoryCogneePlugin = {
422
- id: "memory-cognee",
606
+ id: "cognee-openclaw",
423
607
  name: "Memory (Cognee)",
424
608
  description: "Cognee-backed memory: indexes workspace memory files, auto-recalls before agent runs",
425
609
  kind: "memory",
426
610
  register(api) {
427
611
  const cfg = resolveConfig(api.pluginConfig);
428
- const client = new CogneeClient(cfg.baseUrl, cfg.apiKey, cfg.requestTimeoutMs);
612
+ const client = new CogneeClient(cfg.baseUrl, cfg.apiKey, cfg.username, cfg.password, cfg.requestTimeoutMs, cfg.ingestionTimeoutMs);
429
613
  let datasetId;
430
614
  let syncIndex = { entries: {} };
431
615
  let syncIndexReady = false;
@@ -437,7 +621,7 @@ const memoryCogneePlugin = {
437
621
  datasetId = state[cfg.datasetName];
438
622
  })
439
623
  .catch((error) => {
440
- api.logger.warn?.(`memory-cognee: failed to load dataset state: ${String(error)}`);
624
+ api.logger.warn?.(`cognee-openclaw: failed to load dataset state: ${String(error)}`);
441
625
  }),
442
626
  loadSyncIndex()
443
627
  .then((state) => {
@@ -448,7 +632,7 @@ const memoryCogneePlugin = {
448
632
  }
449
633
  })
450
634
  .catch((error) => {
451
- api.logger.warn?.(`memory-cognee: failed to load sync index: ${String(error)}`);
635
+ api.logger.warn?.(`cognee-openclaw: failed to load sync index: ${String(error)}`);
452
636
  }),
453
637
  ]);
454
638
  // Helper: run sync with a given workspace dir
@@ -456,11 +640,11 @@ const memoryCogneePlugin = {
456
640
  await stateReady;
457
641
  const files = await collectMemoryFiles(workspaceDir);
458
642
  if (files.length === 0) {
459
- logger.info?.("memory-cognee: no memory files found");
460
- return { added: 0, updated: 0, skipped: 0, errors: 0 };
643
+ logger.info?.("cognee-openclaw: no memory files found");
644
+ return { added: 0, updated: 0, skipped: 0, errors: 0, deleted: 0 };
461
645
  }
462
- logger.info?.(`memory-cognee: found ${files.length} memory file(s), syncing...`);
463
- const result = await syncFiles(client, files, syncIndex, cfg, logger);
646
+ logger.info?.(`cognee-openclaw: found ${files.length} memory file(s), syncing...`);
647
+ const result = await syncFiles(client, files, files, syncIndex, cfg, logger);
464
648
  if (result.datasetId) {
465
649
  datasetId = result.datasetId;
466
650
  }
@@ -477,7 +661,7 @@ const memoryCogneePlugin = {
477
661
  .description("Sync memory files to Cognee (add new, update changed, skip unchanged)")
478
662
  .action(async () => {
479
663
  const result = await runSync(resolvedWorkspaceDir, ctx.logger);
480
- const summary = `Sync complete: ${result.added} added, ${result.updated} updated, ${result.skipped} unchanged, ${result.errors} errors`;
664
+ const summary = `Sync complete: ${result.added} added, ${result.updated} updated, ${result.deleted} deleted, ${result.skipped} unchanged, ${result.errors} errors`;
481
665
  ctx.logger.info?.(summary);
482
666
  console.log(summary);
483
667
  });
@@ -523,10 +707,10 @@ const memoryCogneePlugin = {
523
707
  resolvedWorkspaceDir = ctx.workspaceDir || process.cwd();
524
708
  try {
525
709
  const result = await runSync(resolvedWorkspaceDir, ctx.logger);
526
- ctx.logger.info?.(`memory-cognee: auto-sync complete: ${result.added} added, ${result.updated} updated, ${result.skipped} unchanged`);
710
+ ctx.logger.info?.(`cognee-openclaw: auto-sync complete: ${result.added} added, ${result.updated} updated, ${result.deleted} deleted, ${result.skipped} unchanged`);
527
711
  }
528
712
  catch (error) {
529
- ctx.logger.warn?.(`memory-cognee: auto-sync failed: ${String(error)}`);
713
+ ctx.logger.warn?.(`cognee-openclaw: auto-sync failed: ${String(error)}`);
530
714
  }
531
715
  },
532
716
  });
@@ -539,11 +723,11 @@ const memoryCogneePlugin = {
539
723
  // Wait for state to load (fixes race condition on first agent run)
540
724
  await stateReady;
541
725
  if (!event.prompt || event.prompt.length < 5) {
542
- api.logger.debug?.("memory-cognee: skipping recall (prompt too short)");
726
+ api.logger.debug?.("cognee-openclaw: skipping recall (prompt too short)");
543
727
  return;
544
728
  }
545
729
  if (!datasetId) {
546
- api.logger.debug?.("memory-cognee: skipping recall (no datasetId)");
730
+ api.logger.debug?.("cognee-openclaw: skipping recall (no datasetId)");
547
731
  return;
548
732
  }
549
733
  try {
@@ -551,13 +735,14 @@ const memoryCogneePlugin = {
551
735
  queryText: event.prompt,
552
736
  searchType: cfg.searchType,
553
737
  datasetIds: [datasetId],
738
+ searchPrompt: cfg.searchPrompt,
554
739
  maxTokens: cfg.maxTokens,
555
740
  });
556
741
  const filtered = results
557
742
  .filter((result) => result.score >= cfg.minScore)
558
743
  .slice(0, cfg.maxResults);
559
744
  if (filtered.length === 0) {
560
- api.logger.debug?.("memory-cognee: search returned no results above minScore");
745
+ api.logger.debug?.("cognee-openclaw: search returned no results above minScore");
561
746
  return;
562
747
  }
563
748
  const payload = JSON.stringify(filtered.map((result) => ({
@@ -566,13 +751,13 @@ const memoryCogneePlugin = {
566
751
  text: result.text,
567
752
  metadata: result.metadata,
568
753
  })), null, 2);
569
- api.logger.info?.(`memory-cognee: injecting ${filtered.length} memories for session ${ctx.sessionKey ?? "unknown"}`);
754
+ api.logger.info?.(`cognee-openclaw: injecting ${filtered.length} memories for session ${ctx.sessionKey ?? "unknown"}`);
570
755
  return {
571
756
  prependContext: `<cognee_memories>\nRelevant memories:\n${payload}\n</cognee_memories>`,
572
757
  };
573
758
  }
574
759
  catch (error) {
575
- api.logger.warn?.(`memory-cognee: recall failed: ${String(error)}`);
760
+ api.logger.warn?.(`cognee-openclaw: recall failed: ${String(error)}`);
576
761
  }
577
762
  });
578
763
  }
@@ -585,6 +770,18 @@ const memoryCogneePlugin = {
585
770
  if (!event.success)
586
771
  return;
587
772
  await stateReady;
773
+ // Reload sync index from disk to pick up changes made by CLI or other processes
774
+ try {
775
+ const freshIndex = await loadSyncIndex();
776
+ syncIndex.entries = freshIndex.entries;
777
+ if (freshIndex.datasetId)
778
+ syncIndex.datasetId = freshIndex.datasetId;
779
+ if (freshIndex.datasetName)
780
+ syncIndex.datasetName = freshIndex.datasetName;
781
+ }
782
+ catch {
783
+ // Fall through with existing in-memory index
784
+ }
588
785
  // Need workspace dir to find memory files
589
786
  const workspaceDir = resolvedWorkspaceDir || process.cwd();
590
787
  try {
@@ -594,21 +791,26 @@ const memoryCogneePlugin = {
594
791
  const existing = syncIndex.entries[f.path];
595
792
  return !existing || existing.hash !== f.hash;
596
793
  });
597
- if (changedFiles.length === 0)
794
+ // Check for deletions: files tracked in the sync index but no longer on disk
795
+ const currentPaths = new Set(files.map(f => f.path));
796
+ const hasDeletedFiles = Object.keys(syncIndex.entries).some(p => !currentPaths.has(p));
797
+ if (changedFiles.length === 0 && !hasDeletedFiles)
598
798
  return;
599
- api.logger.info?.(`memory-cognee: detected ${changedFiles.length} changed file(s), syncing...`);
600
- const result = await syncFiles(client, changedFiles, syncIndex, cfg, api.logger);
799
+ api.logger.info?.(`cognee-openclaw: detected ${changedFiles.length} changed file(s)${hasDeletedFiles ? " + deletions" : ""}, syncing...`);
800
+ const result = await syncFiles(client, changedFiles, files, syncIndex, cfg, api.logger);
601
801
  if (result.datasetId) {
602
802
  datasetId = result.datasetId;
603
803
  }
604
- api.logger.info?.(`memory-cognee: post-agent sync: ${result.added} added, ${result.updated} updated`);
804
+ api.logger.info?.(`cognee-openclaw: post-agent sync: ${result.added} added, ${result.updated} updated, ${result.deleted} deleted`);
605
805
  }
606
806
  catch (error) {
607
- api.logger.warn?.(`memory-cognee: post-agent sync failed: ${String(error)}`);
807
+ api.logger.warn?.(`cognee-openclaw: post-agent sync failed: ${String(error)}`);
608
808
  }
609
809
  });
610
810
  }
611
811
  },
612
812
  };
613
813
  export default memoryCogneePlugin;
814
+ // Exports for testing
815
+ export { CogneeClient, syncFiles };
614
816
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  {
2
- "id": "memory-cognee",
2
+ "id": "cognee-openclaw",
3
3
  "name": "Memory (Cognee)",
4
4
  "kind": "memory",
5
5
  "configSchema": {
@@ -14,6 +14,14 @@
14
14
  "type": "string",
15
15
  "description": "Cognee API key (or use ${COGNEE_API_KEY})"
16
16
  },
17
+ "username": {
18
+ "type": "string",
19
+ "description": "Cognee login username (default: default_user@example.com)"
20
+ },
21
+ "password": {
22
+ "type": "string",
23
+ "description": "Cognee login password (default: default_password)"
24
+ },
17
25
  "datasetName": {
18
26
  "type": "string",
19
27
  "description": "Cognee dataset name to store memories in"
@@ -27,6 +35,14 @@
27
35
  ],
28
36
  "description": "Cognee search mode"
29
37
  },
38
+ "deleteMode": {
39
+ "type": "string",
40
+ "enum": [
41
+ "soft",
42
+ "hard"
43
+ ],
44
+ "description": "Cognee delete mode: 'soft' removes raw data only, 'hard' also removes degree-one graph nodes (default: soft)"
45
+ },
30
46
  "maxResults": {
31
47
  "type": "number",
32
48
  "description": "Max recall results to inject (default: 6)"
@@ -54,6 +70,14 @@
54
70
  "requestTimeoutMs": {
55
71
  "type": "number",
56
72
  "description": "HTTP timeout in milliseconds for Cognee requests (default: 60000)"
73
+ },
74
+ "ingestionTimeoutMs": {
75
+ "type": "number",
76
+ "description": "HTTP timeout in milliseconds for add/update (ingestion) requests, which are typically slower (default: 300000 = 5 min)"
77
+ },
78
+ "searchPrompt": {
79
+ "type": "string",
80
+ "description": "System prompt sent to Cognee to guide search query processing (default: '')"
57
81
  }
58
82
  }
59
83
  },
@@ -67,6 +91,15 @@
67
91
  "sensitive": true,
68
92
  "placeholder": "${COGNEE_API_KEY}"
69
93
  },
94
+ "username": {
95
+ "label": "Username",
96
+ "placeholder": "default_user@example.com"
97
+ },
98
+ "password": {
99
+ "label": "Password",
100
+ "sensitive": true,
101
+ "placeholder": "default_password"
102
+ },
70
103
  "datasetName": {
71
104
  "label": "Dataset Name",
72
105
  "placeholder": "openclaw"
@@ -75,6 +108,10 @@
75
108
  "label": "Search Type",
76
109
  "placeholder": "GRAPH_COMPLETION"
77
110
  },
111
+ "deleteMode": {
112
+ "label": "Delete Mode",
113
+ "placeholder": "soft"
114
+ },
78
115
  "maxResults": {
79
116
  "label": "Max Results",
80
117
  "placeholder": "6"
@@ -99,6 +136,10 @@
99
136
  "requestTimeoutMs": {
100
137
  "label": "Request Timeout (ms)",
101
138
  "placeholder": "60000"
139
+ },
140
+ "ingestionTimeoutMs": {
141
+ "label": "Ingestion Timeout (ms)",
142
+ "placeholder": "300000"
102
143
  }
103
144
  }
104
145
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cognee/cognee-openclaw",
3
- "version": "2026.2.4",
3
+ "version": "2026.3.0",
4
4
  "type": "module",
5
5
  "description": "OpenClaw Cognee-backed memory plugin with auto-recall/capture",
6
6
  "main": "dist/index.js",
@@ -19,17 +19,33 @@
19
19
  "build": "tsc",
20
20
  "dev": "tsc --watch",
21
21
  "clean": "rm -rf dist",
22
- "typecheck": "tsc --noEmit"
22
+ "typecheck": "tsc --noEmit",
23
+ "test": "jest"
24
+ },
25
+ "jest": {
26
+ "preset": "ts-jest",
27
+ "testEnvironment": "node",
28
+ "transform": {
29
+ "^.+\\.ts$": [
30
+ "ts-jest",
31
+ {
32
+ "useESM": true
33
+ }
34
+ ]
35
+ }
23
36
  },
24
37
  "peerDependencies": {
25
38
  "openclaw": ">=2026.2.3-1"
26
39
  },
27
40
  "devDependencies": {
41
+ "@types/jest": "^30.0.0",
28
42
  "@types/node": "^20.0.0",
43
+ "jest": "^30.2.0",
29
44
  "openclaw": "2026.2.3-1",
45
+ "ts-jest": "^29.4.6",
30
46
  "typescript": "^5.3.0"
31
47
  },
32
48
  "overrides": {
33
49
  "tar": "7.5.7"
34
50
  }
35
- }
51
+ }