@cognee/cognee-openclaw 2026.3.6 → 2026.4.13

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/dist/src/sync.js CHANGED
@@ -2,121 +2,131 @@ import { loadDatasetState, saveDatasetState, saveScopedSyncIndexes, saveSyncInde
2
2
  import { datasetNameForScope, routeFileToScope } from "./scope.js";
3
3
  // ---------------------------------------------------------------------------
4
4
  // Single-scope sync
5
+ //
6
+ // Cognee 1.1.0 uses /remember as the recommended ingest path: one
7
+ // multipart call uploads a batch of files and the server runs add+cognify
8
+ // (and improve) end-to-end, returning per-file data_ids. We use it for new
9
+ // files and keep PATCH /update for changed files (remember has no update
10
+ // counterpart, and the existing 1.1.0 update endpoint already triggers a
11
+ // follow-up cognify internally, so the fan-out is the same).
5
12
  // ---------------------------------------------------------------------------
6
13
  export async function syncFiles(client, changedFiles, fullFiles, syncIndex, cfg, logger, overrideDatasetName) {
7
14
  const result = { added: 0, updated: 0, skipped: 0, errors: 0, deleted: 0 };
8
15
  const dsName = overrideDatasetName || cfg.datasetName;
9
16
  let datasetId = syncIndex.datasetId;
10
- let needsCognify = false;
17
+ // Partition changed files into "needs add" vs "needs update".
18
+ // We process updates per-file (PATCH /update) and batch all adds into a
19
+ // single /remember call at the end of the loop.
20
+ const toAdd = [];
11
21
  for (const file of changedFiles) {
12
22
  const existing = syncIndex.entries[file.path];
13
23
  if (existing && existing.hash === file.hash) {
14
24
  result.skipped++;
15
25
  continue;
16
26
  }
17
- const dataWithMetadata = `# ${file.path}\n\n${file.content}\n\n---\nMetadata: ${JSON.stringify({ path: file.path, source: "memory" })}`;
18
- try {
19
- if (existing?.dataId && datasetId) {
20
- try {
21
- const updateResponse = await client.update({
22
- dataId: existing.dataId,
23
- datasetId,
24
- data: dataWithMetadata,
25
- filePath: file.path,
26
- datasetName: dsName,
27
- });
28
- const newDataId = updateResponse.dataId;
29
- if (!newDataId) {
30
- logger.warn?.(`cognee-openclaw: update for ${file.path} succeeded but could not resolve new data_id`);
31
- }
32
- syncIndex.entries[file.path] = { hash: file.hash, dataId: newDataId };
33
- syncIndex.datasetId = datasetId;
34
- syncIndex.datasetName = dsName;
35
- result.updated++;
36
- logger.info?.(`cognee-openclaw: updated ${file.path} (newDataId=${newDataId})`);
37
- continue;
27
+ if (existing?.dataId && datasetId) {
28
+ const dataWithMetadata = wrapWithMetadata(file);
29
+ try {
30
+ const updateResponse = await client.update({
31
+ dataId: existing.dataId,
32
+ datasetId,
33
+ data: dataWithMetadata,
34
+ filePath: file.path,
35
+ datasetName: dsName,
36
+ });
37
+ const newDataId = updateResponse.dataId;
38
+ if (!newDataId) {
39
+ logger.warn?.(`cognee-openclaw: update for ${file.path} succeeded but could not resolve new data_id`);
40
+ }
41
+ syncIndex.entries[file.path] = { hash: file.hash, dataId: newDataId };
42
+ syncIndex.datasetId = datasetId;
43
+ syncIndex.datasetName = dsName;
44
+ result.updated++;
45
+ logger.info?.(`cognee-openclaw: updated ${file.path} (newDataId=${newDataId})`);
46
+ continue;
47
+ }
48
+ catch (updateError) {
49
+ const errorMsg = updateError instanceof Error ? updateError.message : String(updateError);
50
+ if (errorMsg.includes("404") || errorMsg.includes("409") || errorMsg.includes("not found")) {
51
+ logger.info?.(`cognee-openclaw: update failed for ${file.path}, falling back to remember`);
52
+ // fall through to add path
38
53
  }
39
- catch (updateError) {
40
- const errorMsg = updateError instanceof Error ? updateError.message : String(updateError);
41
- if (errorMsg.includes("404") || errorMsg.includes("409") || errorMsg.includes("not found")) {
42
- logger.info?.(`cognee-openclaw: update failed for ${file.path}, falling back to add`);
43
- delete existing.dataId;
44
- }
45
- else {
46
- throw updateError;
47
- }
54
+ else {
55
+ result.errors++;
56
+ logger.warn?.(`cognee-openclaw: failed to sync ${file.path}: ${errorMsg}`);
57
+ continue;
48
58
  }
49
59
  }
50
- const response = await client.add({
60
+ }
61
+ toAdd.push(file);
62
+ }
63
+ if (toAdd.length > 0) {
64
+ try {
65
+ const rememberResponse = await client.remember({
66
+ files: toAdd.map((f) => ({ filePath: f.path, data: wrapWithMetadata(f) })),
51
67
  datasetName: dsName,
52
68
  datasetId,
53
- data: dataWithMetadata,
54
- filePath: file.path,
55
69
  });
56
- if (response.datasetId && response.datasetId !== datasetId) {
57
- datasetId = response.datasetId;
70
+ if (rememberResponse.datasetId && rememberResponse.datasetId !== datasetId) {
71
+ datasetId = rememberResponse.datasetId;
58
72
  const state = await loadDatasetState();
59
- state[dsName] = response.datasetId;
73
+ state[dsName] = rememberResponse.datasetId;
60
74
  await saveDatasetState(state);
61
75
  }
62
- syncIndex.entries[file.path] = { hash: file.hash, dataId: response.dataId };
76
+ const itemsByPath = new Map();
77
+ for (const item of rememberResponse.items) {
78
+ itemsByPath.set(item.filePath, item.dataId);
79
+ }
80
+ for (const file of toAdd) {
81
+ const dataId = itemsByPath.get(file.path);
82
+ syncIndex.entries[file.path] = { hash: file.hash, dataId };
83
+ result.added++;
84
+ logger.info?.(`cognee-openclaw: remembered ${file.path}${dataId ? ` (dataId=${dataId})` : ""}`);
85
+ }
63
86
  syncIndex.datasetId = datasetId;
64
87
  syncIndex.datasetName = dsName;
65
- needsCognify = true;
66
- result.added++;
67
- logger.info?.(`cognee-openclaw: added ${file.path}`);
68
88
  }
69
89
  catch (error) {
70
- result.errors++;
71
- logger.warn?.(`cognee-openclaw: failed to sync ${file.path}: ${error instanceof Error ? error.message : String(error)}`);
90
+ // One failed batch fails every queued file — surface them all so the
91
+ // caller's error count reflects the actual workload, not just one entry.
92
+ for (const file of toAdd) {
93
+ result.errors++;
94
+ logger.warn?.(`cognee-openclaw: failed to sync ${file.path}: ${error instanceof Error ? error.message : String(error)}`);
95
+ }
72
96
  }
73
97
  }
74
- // Handle deletions
98
+ // Per-item /forget for files that disappeared from the workspace.
99
+ // We pass `dsName` (not the UUID) — see CogneeHttpClient.forget().
75
100
  const currentPaths = new Set(fullFiles.map(f => f.path));
76
101
  for (const [path, entry] of Object.entries(syncIndex.entries)) {
77
102
  if (!currentPaths.has(path) && entry.dataId && datasetId) {
78
- const deleteResult = await client.delete({ dataId: entry.dataId, datasetId, mode: cfg.deleteMode });
79
- if (deleteResult.deleted) {
103
+ const forgetResult = await client.forget({ dataId: entry.dataId, dataset: dsName });
104
+ if (forgetResult.deleted) {
80
105
  result.deleted++;
81
106
  delete syncIndex.entries[path];
82
- logger.info?.(`cognee-openclaw: deleted ${path}`);
107
+ logger.info?.(`cognee-openclaw: forgot ${path}`);
83
108
  }
84
109
  else {
85
- const isNotFound = deleteResult.error && (deleteResult.error.includes("404") || deleteResult.error.includes("409") || deleteResult.error.includes("not found"));
110
+ const isNotFound = forgetResult.error && (forgetResult.error.includes("404") || forgetResult.error.includes("409") || forgetResult.error.includes("not found"));
86
111
  if (isNotFound) {
87
112
  result.deleted++;
88
113
  delete syncIndex.entries[path];
89
- logger.info?.(`cognee-openclaw: deleted ${path} (already removed from Cognee)`);
114
+ logger.info?.(`cognee-openclaw: forgot ${path} (already removed from Cognee)`);
90
115
  }
91
116
  else {
92
117
  result.errors++;
93
- logger.warn?.(`cognee-openclaw: failed to delete ${path}${deleteResult.error ? `: ${deleteResult.error}` : ""}`);
118
+ logger.warn?.(`cognee-openclaw: failed to forget ${path}${forgetResult.error ? `: ${forgetResult.error}` : ""}`);
94
119
  }
95
120
  }
96
121
  }
97
122
  }
98
- // Fix #9: Only trigger memify AFTER polling cognify to completion
99
- if (needsCognify && cfg.autoCognify && datasetId) {
100
- try {
101
- await client.cognify({ datasetIds: [datasetId] });
102
- logger.info?.("cognee-openclaw: cognify dispatched");
103
- if (cfg.autoMemify) {
104
- // Poll for cognify completion before triggering memify
105
- const memifyDatasetId = datasetId;
106
- await waitForCognifyThenMemify(client, memifyDatasetId, logger);
107
- }
108
- }
109
- catch (error) {
110
- logger.warn?.(`cognee-openclaw: cognify failed: ${error instanceof Error ? error.message : String(error)}`);
111
- }
112
- }
113
123
  await saveSyncIndex(syncIndex);
114
124
  return { ...result, datasetId };
115
125
  }
116
126
  // ---------------------------------------------------------------------------
117
127
  // Multi-scope sync
118
128
  // ---------------------------------------------------------------------------
119
- export async function syncFilesScoped(client, changedFiles, fullFiles, scopedIndexes, cfg, logger) {
129
+ export async function syncFilesScoped(client, changedFiles, fullFiles, scopedIndexes, cfg, logger, runtimeAgentId) {
120
130
  const totalResult = { added: 0, updated: 0, skipped: 0, errors: 0, deleted: 0 };
121
131
  const datasetIds = { company: undefined, user: undefined, agent: undefined };
122
132
  // Group changed files by scope
@@ -141,9 +151,15 @@ export async function syncFilesScoped(client, changedFiles, fullFiles, scopedInd
141
151
  ...Object.keys(scopedIndexes),
142
152
  ]);
143
153
  for (const scope of allScopes) {
144
- const dsName = datasetNameForScope(scope, cfg);
154
+ const dsName = datasetNameForScope(scope, cfg, runtimeAgentId);
145
155
  const scopeChanged = changedByScope.get(scope) ?? [];
146
156
  const scopeFull = fullByScope.get(scope) ?? [];
157
+ if (scope === "agent" &&
158
+ runtimeAgentId?.trim() &&
159
+ scopedIndexes.agent &&
160
+ scopedIndexes.agent.datasetName !== dsName) {
161
+ scopedIndexes.agent = { entries: {} };
162
+ }
147
163
  if (!scopedIndexes[scope]) {
148
164
  scopedIndexes[scope] = { entries: {} };
149
165
  }
@@ -165,62 +181,14 @@ export async function syncFilesScoped(client, changedFiles, fullFiles, scopedInd
165
181
  return { ...totalResult, datasetIds };
166
182
  }
167
183
  // ---------------------------------------------------------------------------
168
- // Fix #9: Poll cognify status before triggering memify
184
+ // Helpers
169
185
  // ---------------------------------------------------------------------------
170
- /** Exported so tests can override */
186
+ function wrapWithMetadata(file) {
187
+ return `# ${file.path}\n\n${file.content}\n\n---\nMetadata: ${JSON.stringify({ path: file.path, source: "memory" })}`;
188
+ }
189
+ // Kept for backwards compatibility with downstream consumers that imported
190
+ // these from sync.ts to drive cognify polling. The new /remember path runs
191
+ // cognify+improve server-side, so the openclaw sync flow no longer polls.
171
192
  export let COGNIFY_POLL_INTERVAL_MS = 5_000;
172
- const COGNIFY_POLL_MAX_ATTEMPTS = 60; // 5 min max
173
- /** Allow tests to adjust the poll interval */
174
193
  export function _setPollInterval(ms) { COGNIFY_POLL_INTERVAL_MS = ms; }
175
- async function waitForCognifyThenMemify(client, datasetId, logger) {
176
- for (let attempt = 0; attempt < COGNIFY_POLL_MAX_ATTEMPTS; attempt++) {
177
- // Wait before polling (skip on first attempt to check immediately)
178
- if (attempt > 0) {
179
- await new Promise(r => setTimeout(r, COGNIFY_POLL_INTERVAL_MS));
180
- }
181
- try {
182
- const status = await client.datasetStatus(datasetId);
183
- if (status === "completed" || status === "COMPLETED") {
184
- try {
185
- await client.memify({ datasetIds: [datasetId] });
186
- logger.info?.("cognee-openclaw: memify dispatched after cognify completed");
187
- }
188
- catch (error) {
189
- logger.warn?.(`cognee-openclaw: memify failed: ${error instanceof Error ? error.message : String(error)}`);
190
- }
191
- return;
192
- }
193
- if (status === "failed" || status === "FAILED" || status === "error") {
194
- logger.warn?.(`cognee-openclaw: cognify failed (status: ${status}), skipping memify`);
195
- return;
196
- }
197
- if (status === "unknown") {
198
- // Endpoint exists but doesn't track this operation — fall back to optimistic memify
199
- logger.warn?.("cognee-openclaw: could not poll cognify status, running memify optimistically");
200
- try {
201
- await client.memify({ datasetIds: [datasetId] });
202
- logger.info?.("cognee-openclaw: memify dispatched (optimistic)");
203
- }
204
- catch (error) {
205
- logger.warn?.(`cognee-openclaw: memify failed: ${error instanceof Error ? error.message : String(error)}`);
206
- }
207
- return;
208
- }
209
- // Still running, continue polling
210
- }
211
- catch {
212
- // Status endpoint may not exist or may fail — fall back to fire-and-forget
213
- logger.warn?.("cognee-openclaw: could not poll cognify status, running memify optimistically");
214
- try {
215
- await client.memify({ datasetIds: [datasetId] });
216
- logger.info?.("cognee-openclaw: memify dispatched (optimistic)");
217
- }
218
- catch (error) {
219
- logger.warn?.(`cognee-openclaw: memify failed: ${error instanceof Error ? error.message : String(error)}`);
220
- }
221
- return;
222
- }
223
- }
224
- logger.warn?.("cognee-openclaw: cognify polling timed out, skipping memify");
225
- }
226
194
  //# sourceMappingURL=sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5G,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnE,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAwB,EACxB,YAA0B,EAC1B,SAAuB,EACvB,SAAoB,EACpB,GAAiC,EACjC,MAAsE,EACtE,mBAA4B;IAE5B,MAAM,MAAM,GAAe,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACvF,MAAM,MAAM,GAAG,mBAAmB,IAAI,GAAG,CAAC,WAAW,CAAC;IACtD,IAAI,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;IACpC,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9C,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,SAAS;QACX,CAAC;QAED,MAAM,gBAAgB,GAAG,KAAK,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,OAAO,sBAAsB,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QAExI,IAAI,CAAC;YACH,IAAI,QAAQ,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC;gBAClC,IAAI,CAAC;oBACH,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;wBACzC,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,SAAS;wBACT,IAAI,EAAE,gBAAgB;wBACtB,QAAQ,EAAE,IAAI,CAAC,IAAI;wBACnB,WAAW,EAAE,MAAM;qBACpB,CAAC,CAAC;oBACH,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC;oBACxC,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,MAAM,CAAC,IAAI,EAAE,CAAC,+BAA+B,IAAI,CAAC,IAAI,8CAA8C,CAAC,CAAC;oBACxG,CAAC;oBACD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;oBACtE,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;oBAChC,SAAS,CAAC,WAAW,GAAG,MAAM,CAAC;oBAC/B,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,MAAM,CAAC,IAAI,EAAE,CAAC,4BAA4B,IAAI,CAAC,IAAI,eAAe,SAAS,GAAG,CAAC,CAAC;oBAChF,SAAS;gBACX,CAAC;gBAAC,OAAO,WAAW,EAAE,CAAC;oBACrB,MAAM,QAAQ,GAAG,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;oBAC1F,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC3F,MAAM,CAAC,IAAI,EAAE,CAAC,sCAAsC,IAAI,CAAC,IAAI,uBAAuB,CAAC,CAAC;wBACtF,OAAO,QAAQ,CAAC,MAAM,CAAC;oBACzB,CAAC;yBAAM,CAAC;wBACN,MAAM,WAAW,CAAC;oBACpB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC;gBAChC,WAAW,EAAE,MAAM;gBACnB,SAAS;gBACT,IAAI,EAAE,gBAAgB;gBACtB,QAAQ,EAAE,IAAI,CAAC,IAAI;aACpB,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC3D,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;gBAC/B,MAAM,KAAK,GAAG,MAAM,gBAAgB,EAAE,CAAC;gBACvC,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC;gBACnC,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;YAED,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC5E,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;YAChC,SAAS,CAAC,WAAW,GAAG,MAAM,CAAC;YAC/B,YAAY,GAAG,IAAI,CAAC;YACpB,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,EAAE,CAAC,0BAA0B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,EAAE,CAAC,mCAAmC,IAAI,CAAC,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3H,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;YACzD,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;YACpG,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;gBACzB,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM,CAAC,IAAI,EAAE,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,IAAI,CACvC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CACrH,CAAC;gBACF,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC/B,MAAM,CAAC,IAAI,EAAE,CAAC,4BAA4B,IAAI,gCAAgC,CAAC,CAAC;gBAClF,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,MAAM,EAAE,CAAC;oBAChB,MAAM,CAAC,IAAI,EAAE,CAAC,qCAAqC,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,IAAI,YAAY,IAAI,GAAG,CAAC,WAAW,IAAI,SAAS,EAAE,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAClD,MAAM,CAAC,IAAI,EAAE,CAAC,qCAAqC,CAAC,CAAC;YAErD,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBACnB,uDAAuD;gBACvD,MAAM,eAAe,GAAG,SAAS,CAAC;gBAClC,MAAM,wBAAwB,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,EAAE,CAAC,oCAAoC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9G,CAAC;IACH,CAAC;IAED,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;IAC/B,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAwB,EACxB,YAA0B,EAC1B,SAAuB,EACvB,aAAgC,EAChC,GAAiC,EACjC,MAAsE;IAEtE,MAAM,WAAW,GAAe,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC5F,MAAM,UAAU,GAA4C,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAEtH,+BAA+B;IAC/B,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6B,CAAC;IAC5D,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACnF,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,2BAA2B;IAC3B,MAAM,WAAW,GAAG,IAAI,GAAG,EAA6B,CAAC;IACzD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACnF,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,yCAAyC;IACzC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAc;QACrC,GAAG,cAAc,CAAC,IAAI,EAAE;QACxB,GAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAmB;KACjD,CAAC,CAAC;IAEH,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/C,MAAM,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAE/C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACzC,CAAC;QACD,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAE,CAAC;QAEzC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAExF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,eAAe;YAAE,SAAS;QAE5D,MAAM,CAAC,IAAI,EAAE,CAAC,qBAAqB,KAAK,aAAa,YAAY,CAAC,MAAM,gCAAgC,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE3J,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACjG,WAAW,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;QAClC,WAAW,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;QACtC,WAAW,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;QACtC,WAAW,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;QACpC,WAAW,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;QACtC,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;IACvC,CAAC;IAED,MAAM,qBAAqB,CAAC,aAAa,CAAC,CAAC;IAC3C,OAAO,EAAE,GAAG,WAAW,EAAE,UAAU,EAAE,CAAC;AACxC,CAAC;AAED,8EAA8E;AAC9E,uDAAuD;AACvD,8EAA8E;AAE9E,qCAAqC;AACrC,MAAM,CAAC,IAAI,wBAAwB,GAAG,KAAK,CAAC;AAC5C,MAAM,yBAAyB,GAAG,EAAE,CAAC,CAAC,YAAY;AAElD,8CAA8C;AAC9C,MAAM,UAAU,gBAAgB,CAAC,EAAU,IAAU,wBAAwB,GAAG,EAAE,CAAC,CAAC,CAAC;AAErF,KAAK,UAAU,wBAAwB,CACrC,MAAwB,EACxB,SAAiB,EACjB,MAAsE;IAEtE,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,yBAAyB,EAAE,OAAO,EAAE,EAAE,CAAC;QACrE,mEAAmE;QACnE,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YACrD,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;gBACrD,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;oBACjD,MAAM,CAAC,IAAI,EAAE,CAAC,4DAA4D,CAAC,CAAC;gBAC9E,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,EAAE,CAAC,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC7G,CAAC;gBACD,OAAO;YACT,CAAC;YACD,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACrE,MAAM,CAAC,IAAI,EAAE,CAAC,4CAA4C,MAAM,oBAAoB,CAAC,CAAC;gBACtF,OAAO;YACT,CAAC;YACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,oFAAoF;gBACpF,MAAM,CAAC,IAAI,EAAE,CAAC,+EAA+E,CAAC,CAAC;gBAC/F,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;oBACjD,MAAM,CAAC,IAAI,EAAE,CAAC,iDAAiD,CAAC,CAAC;gBACnE,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,EAAE,CAAC,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC7G,CAAC;gBACD,OAAO;YACT,CAAC;YACD,kCAAkC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,2EAA2E;YAC3E,MAAM,CAAC,IAAI,EAAE,CAAC,+EAA+E,CAAC,CAAC;YAC/F,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBACjD,MAAM,CAAC,IAAI,EAAE,CAAC,iDAAiD,CAAC,CAAC;YACnE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,EAAE,CAAC,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC7G,CAAC;YACD,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,EAAE,CAAC,6DAA6D,CAAC,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,16 @@ export type CogneePluginConfig = {
20
20
  companyDataset?: string;
21
21
  userDatasetPrefix?: string;
22
22
  agentDatasetPrefix?: string;
23
+ /**
24
+ * Template for the per-agent dataset name. Use `{agentId}` as the placeholder.
25
+ * Examples:
26
+ * "{agentId}" → bare agent id ("research", "ebay")
27
+ * "memory-{agentId}" → "memory-research"
28
+ * When set, takes precedence over `agentDatasetPrefix` and the legacy
29
+ * `${datasetName}-agent-{id}` fallback. Multi-agent gateways should set this
30
+ * to align with how their per-agent datasets are named in Cognee.
31
+ */
32
+ agentDatasetTemplate?: string;
23
33
  userId?: string;
24
34
  agentId?: string;
25
35
  recallScopes?: MemoryScope[];
@@ -49,6 +59,25 @@ export type CogneeAddResponse = {
49
59
  data_id?: unknown;
50
60
  data_ingestion_info?: unknown;
51
61
  };
62
+ export type CogneeRememberItem = {
63
+ id?: string;
64
+ name?: string;
65
+ content_hash?: string;
66
+ token_count?: number;
67
+ mime_type?: string;
68
+ data_size?: number;
69
+ };
70
+ export type CogneeRememberResponse = {
71
+ status?: string;
72
+ dataset_id?: string;
73
+ dataset_name?: string;
74
+ pipeline_run_id?: string;
75
+ items_processed?: number;
76
+ elapsed_seconds?: number;
77
+ items?: CogneeRememberItem[];
78
+ content_hash?: string;
79
+ error?: string;
80
+ };
52
81
  export type CogneeSearchResult = {
53
82
  id: string;
54
83
  text: string;
@@ -46,6 +46,10 @@
46
46
  "type": "string",
47
47
  "description": "Prefix for agent-scoped datasets (becomes '{prefix}-{agentId}'). Setting this enables multi-scope mode."
48
48
  },
49
+ "agentDatasetTemplate": {
50
+ "type": "string",
51
+ "description": "Template for the per-agent dataset name with '{agentId}' placeholder (e.g. '{agentId}' for bare id, 'memory-{agentId}' for prefixed). Takes precedence over agentDatasetPrefix when set. Enables multi-scope mode."
52
+ },
49
53
  "userId": {
50
54
  "type": "string",
51
55
  "description": "User identifier for user-scoped memory (or set OPENCLAW_USER_ID env var)"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cognee/cognee-openclaw",
3
- "version": "2026.3.6",
3
+ "version": "2026.4.13",
4
4
  "type": "module",
5
5
  "description": "OpenClaw Cognee-backed memory plugin with auto-recall/capture",
6
6
  "main": "dist/index.js",