@amaster.ai/pi-memory-mem0 0.1.8 → 0.1.10

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/index.js CHANGED
@@ -1,18 +1,34 @@
1
1
  /**
2
- * pi-memory-mem0 — Explicit semantic memory extension powered by Mem0.
2
+ * pi-memory-mem0 — Semantic memory extension powered by Mem0.
3
3
  *
4
- * Two modes:
4
+ * Backend modes:
5
5
  * - **platform**: Uses Mem0 Cloud API (needs MEM0_API_KEY)
6
- * - **open-source**: Runs locally with SQLite vector store (needs OPENAI_API_KEY or Ollama)
6
+ * - **embedded**: Runs Mem0 OSS in-process
7
+ * - **self-hosted**: Calls a remote Mem0 OSS REST server
8
+ *
9
+ * Memory modes (config "memoryMode"):
10
+ * - **passive**: automatic capture + recall injection only
11
+ * - **active**: LLM-callable mem0_memory tool only
12
+ * - **hybrid** (default): both
13
+ *
14
+ * Passive side: after each conversation turn, user + assistant messages are
15
+ * sent to Mem0 for fact extraction and storage (credentials are redacted
16
+ * first). Recalled memories are injected as a custom message (delivered to
17
+ * the model on the user channel, never the system prompt) and wrapped as
18
+ * untrusted data. Active side: the mem0_memory tool lets the agent search,
19
+ * add, list, and delete memories on its own initiative, under the same
20
+ * redaction and untrusted-data boundaries.
7
21
  *
8
22
  * Configuration via settings.json key "pi-memory-mem0".
9
23
  * Supports ${ENV_VAR:-fallback} in user and agent settings.
10
24
  * Trusted project settings are loaded without environment interpolation.
11
25
  */
12
26
  import { isProjectTrusted, loadPiSettings } from '@amaster.ai/pi-shared/settings';
13
- import { formatRecalledMemory, scopeMemoryUserId } from './privacy.js';
14
- import { createMem0Provider } from './provider.js';
15
- import { createMem0Tools } from './tools.js';
27
+ import { dedupProviderMemories } from './dedup.js';
28
+ import { Prefetch } from './prefetch.js';
29
+ import { formatRecalledMemory, redactMemoryText, scopeMemoryUserId } from './privacy.js';
30
+ import { createMem0Provider, normalizeMem0Mode, normalizeMemoryMode, } from './provider.js';
31
+ import { createMem0MemoryTool } from './tools.js';
16
32
  const SETTINGS_KEY = 'pi-memory-mem0';
17
33
  const STATUS_KEY = 'mem0';
18
34
  function loadConfig(cwd, projectTrusted = false) {
@@ -26,9 +42,11 @@ function loadConfig(cwd, projectTrusted = false) {
26
42
  return {};
27
43
  }
28
44
  }
29
- function resolveUserId(configUserId) {
45
+ function resolveUserId(configUserId, scope = 'project') {
30
46
  if (configUserId?.trim())
31
47
  return configUserId.trim();
48
+ if (scope === 'exact')
49
+ throw new Error('Mem0 exact userId resolved to an empty value.');
32
50
  if (process.env.USER)
33
51
  return process.env.USER;
34
52
  if (process.env.USERNAME)
@@ -37,18 +55,36 @@ function resolveUserId(configUserId) {
37
55
  }
38
56
  export default function mem0Extension(pi) {
39
57
  let provider;
58
+ let prefetch;
40
59
  let userId = '';
60
+ let agentId;
61
+ let activeMode = '';
62
+ let activeMemoryMode = '';
63
+ let activeToolEnabled = false;
64
+ let lastUserText = '';
65
+ let pendingWrite = Promise.resolve();
66
+ let sessionEpoch = 0;
41
67
  pi.on('session_start', async (_event, ctx) => {
68
+ // A newer session_start (or shutdown) can run while this handler is still
69
+ // awaiting provider init (embedded init takes seconds). The epoch check
70
+ // after the await keeps the superseded handler from clobbering the live
71
+ // session's provider, prefetch, and tool-enablement state.
72
+ const epoch = ++sessionEpoch;
42
73
  provider = undefined;
74
+ prefetch = undefined;
75
+ agentId = undefined;
76
+ activeToolEnabled = false;
43
77
  const config = loadConfig(ctx.cwd, isProjectTrusted(ctx));
44
- const mode = config.mode ?? 'platform';
45
- // Platform mode requires apiKey; OSS mode requires an LLM provider (env key)
46
- if (mode === 'platform' && !config.apiKey?.trim()) {
47
- ctx.ui.setStatus(STATUS_KEY, 'mem0: disabled (no API key)');
48
- return;
49
- }
50
78
  try {
51
- provider = await createMem0Provider({
79
+ const mode = normalizeMem0Mode(config.mode);
80
+ const memoryMode = normalizeMemoryMode(config.memoryMode);
81
+ if (mode === 'platform' && !config.apiKey?.trim()) {
82
+ ctx.ui.setStatus(STATUS_KEY, 'mem0: disabled (no API key)');
83
+ return;
84
+ }
85
+ const resolvedUserId = resolveUserId(config.userId, config.userIdScope);
86
+ const resolvedAgentId = config.agentId?.trim() || undefined;
87
+ const newProvider = await createMem0Provider({
52
88
  config,
53
89
  resolveProvider: async (providerName) => {
54
90
  const registry = ctx.modelRegistry;
@@ -71,33 +107,122 @@ export default function mem0Extension(pi) {
71
107
  return result;
72
108
  },
73
109
  });
110
+ if (epoch !== sessionEpoch)
111
+ return;
112
+ provider = newProvider;
113
+ userId = scopeMemoryUserId(resolvedUserId, ctx.cwd, config.userIdScope);
114
+ agentId = resolvedAgentId;
115
+ activeMode = mode;
116
+ activeMemoryMode = memoryMode;
117
+ if (memoryMode !== 'active') {
118
+ prefetch = new Prefetch(provider, userId, {
119
+ ...(agentId ? { agentId } : {}),
120
+ topK: config.topK ?? 5,
121
+ });
122
+ }
123
+ if (memoryMode !== 'passive') {
124
+ activeToolEnabled = true;
125
+ pi.registerTool(createMem0MemoryTool({
126
+ getProvider: () => provider,
127
+ getUserId: () => userId,
128
+ getAgentId: () => agentId,
129
+ isEnabled: () => activeToolEnabled,
130
+ topK: config.topK ?? 5,
131
+ }));
132
+ }
74
133
  }
75
134
  catch (err) {
135
+ if (epoch !== sessionEpoch)
136
+ return;
137
+ provider = undefined;
138
+ prefetch = undefined;
139
+ activeToolEnabled = false;
76
140
  ctx.ui.setStatus(STATUS_KEY, 'mem0: init failed');
77
141
  ctx.ui.notify(`Mem0 init failed: ${err instanceof Error ? err.message : String(err)}`, 'error');
78
142
  return;
79
143
  }
80
- userId = scopeMemoryUserId(resolveUserId(config.userId), ctx.cwd);
81
- ctx.ui.setStatus(STATUS_KEY, `mem0: ${mode}`);
82
- for (const tool of createMem0Tools(provider, userId)) {
83
- pi.registerTool(tool);
144
+ ctx.ui.setStatus(STATUS_KEY, `mem0: ${activeMode}/${activeMemoryMode}`);
145
+ });
146
+ pi.on('input', async (event) => {
147
+ if (!prefetch)
148
+ return;
149
+ const text = event.text ?? '';
150
+ if (text) {
151
+ prefetch.queue(redactMemoryText(text));
152
+ lastUserText = text;
84
153
  }
85
154
  });
155
+ pi.on('turn_end', async (event) => {
156
+ if (!provider || !prefetch || !lastUserText)
157
+ return;
158
+ const msg = event.message;
159
+ const text = extractText(msg);
160
+ if (!text || msg.role !== 'assistant')
161
+ return;
162
+ const userText = lastUserText;
163
+ lastUserText = '';
164
+ const activeProvider = provider;
165
+ const activeUserId = userId;
166
+ const activeAgentId = agentId;
167
+ pendingWrite = pendingWrite
168
+ .catch(() => { })
169
+ .then(async () => {
170
+ const result = await activeProvider.add([
171
+ { role: 'user', content: redactMemoryText(userText) },
172
+ { role: 'assistant', content: redactMemoryText(text) },
173
+ ], {
174
+ userId: activeUserId,
175
+ ...(activeAgentId ? { agentId: activeAgentId } : {}),
176
+ });
177
+ // Extraction legitimately finds nothing in many turns, but a totally
178
+ // silent no-op makes a broken pipeline indistinguishable from a quiet
179
+ // one — gate a diagnostic behind DEBUG.
180
+ if (process.env.DEBUG?.includes('pi-memory-mem0') && !result?.results?.length) {
181
+ console.error('[pi-memory-mem0] turn capture stored no memories (extraction empty?)');
182
+ }
183
+ })
184
+ .catch((err) => {
185
+ console.error(`[pi-memory-mem0] failed to store turn: ${err instanceof Error ? err.message : String(err)}`);
186
+ });
187
+ });
188
+ pi.on('before_agent_start', async () => {
189
+ if (!prefetch)
190
+ return;
191
+ const recalled = await prefetch.consume();
192
+ if (!recalled)
193
+ return;
194
+ return {
195
+ message: {
196
+ customType: 'mem0-recall',
197
+ content: recalled,
198
+ display: true,
199
+ },
200
+ };
201
+ });
202
+ pi.on('session_shutdown', async () => {
203
+ sessionEpoch++;
204
+ await pendingWrite;
205
+ provider = undefined;
206
+ prefetch = undefined;
207
+ agentId = undefined;
208
+ activeToolEnabled = false;
209
+ lastUserText = '';
210
+ pendingWrite = Promise.resolve();
211
+ });
86
212
  pi.registerCommand('mem0', {
87
- description: 'Mem0 memory commands. Subcommands: status, search <query>, profile.',
213
+ description: 'Mem0 memory commands. Subcommands: status, search <query>, profile, add <text>, dedup [--apply], delete <id>.',
88
214
  handler: async (args, ctx) => {
89
215
  if (!provider) {
90
216
  ctx.ui.notify('Mem0 is not active.', 'warning');
91
217
  return;
92
218
  }
93
- const config = loadConfig(ctx.cwd, isProjectTrusted(ctx));
94
- const userId = scopeMemoryUserId(resolveUserId(config.userId), ctx.cwd);
219
+ const scope = { userId, ...(agentId ? { agentId } : {}) };
95
220
  const parts = args.trim().split(/\s+/).filter(Boolean);
96
221
  const subcommand = parts[0]?.toLowerCase() ?? 'status';
97
222
  const rest = parts.slice(1).join(' ').trim();
98
223
  switch (subcommand) {
99
224
  case 'status': {
100
- ctx.ui.notify(`Mem0: active (mode: ${config.mode ?? 'platform'})`, 'info');
225
+ ctx.ui.notify(`Mem0: active (mode: ${activeMode}/${activeMemoryMode})`, 'info');
101
226
  break;
102
227
  }
103
228
  case 'search': {
@@ -105,7 +230,11 @@ export default function mem0Extension(pi) {
105
230
  ctx.ui.notify('Usage: /mem0 search <query>', 'warning');
106
231
  break;
107
232
  }
108
- const results = await provider.search(rest, { userId, topK: 10 });
233
+ const results = await provider.search(rest, {
234
+ ...scope,
235
+ topK: 10,
236
+ ...(ctx.signal ? { signal: ctx.signal } : {}),
237
+ });
109
238
  if (results.length === 0) {
110
239
  ctx.ui.notify('No relevant memories found.', 'info');
111
240
  }
@@ -116,7 +245,10 @@ export default function mem0Extension(pi) {
116
245
  break;
117
246
  }
118
247
  case 'profile': {
119
- const all = await provider.getAll({ userId });
248
+ const all = await provider.getAll({
249
+ ...scope,
250
+ ...(ctx.signal ? { signal: ctx.signal } : {}),
251
+ });
120
252
  if (all.length === 0) {
121
253
  ctx.ui.notify('No memories stored yet.', 'info');
122
254
  }
@@ -126,10 +258,100 @@ export default function mem0Extension(pi) {
126
258
  }
127
259
  break;
128
260
  }
261
+ case 'add': {
262
+ if (!rest) {
263
+ ctx.ui.notify('Usage: /mem0 add <text>', 'warning');
264
+ break;
265
+ }
266
+ const result = await provider.add([{ role: 'user', content: redactMemoryText(rest) }], {
267
+ ...scope,
268
+ ...(ctx.signal ? { signal: ctx.signal } : {}),
269
+ });
270
+ const created = result?.results ?? [];
271
+ if (created.length === 0) {
272
+ ctx.ui.notify('No memory was extracted from the provided text.', 'info');
273
+ }
274
+ else {
275
+ const lines = created.map((m, i) => `${i + 1}. ${formatRecalledMemory(m.memory)}`);
276
+ ctx.ui.notify(`Mem0 saved ${created.length}:\n${lines.join('\n')}`, 'info');
277
+ }
278
+ break;
279
+ }
280
+ case 'dedup': {
281
+ if (rest && rest !== '--apply') {
282
+ ctx.ui.notify('Usage: /mem0 dedup [--apply]', 'warning');
283
+ break;
284
+ }
285
+ if (rest !== '--apply') {
286
+ const preview = await dedupProviderMemories(provider, {
287
+ ...scope,
288
+ dryRun: true,
289
+ ...(ctx.signal ? { signal: ctx.signal } : {}),
290
+ });
291
+ if (preview.duplicatesFound === 0) {
292
+ ctx.ui.notify(`Mem0 dedup preview: scanned ${preview.total} memories; no exact duplicates found.`, 'info');
293
+ break;
294
+ }
295
+ const noun = preview.duplicatesFound === 1 ? 'duplicate' : 'duplicates';
296
+ const pronoun = preview.duplicatesFound === 1 ? 'it' : 'them';
297
+ ctx.ui.notify(`Mem0 dedup preview: scanned ${preview.total} memories and found ${preview.duplicatesFound} exact ${noun}. Run /mem0 dedup --apply to remove ${pronoun}.`, 'info');
298
+ break;
299
+ }
300
+ if (!ctx.hasUI) {
301
+ ctx.ui.notify('Mem0 dedup --apply requires an interactive confirmation.', 'warning');
302
+ break;
303
+ }
304
+ let preview;
305
+ let approved = false;
306
+ const result = await dedupProviderMemories(provider, {
307
+ ...scope,
308
+ dryRun: false,
309
+ ...(ctx.signal ? { signal: ctx.signal } : {}),
310
+ approve: async (candidate) => {
311
+ preview = candidate;
312
+ if (candidate.duplicatesFound === 0)
313
+ return false;
314
+ const noun = candidate.duplicatesFound === 1 ? 'duplicate' : 'duplicates';
315
+ approved = await ctx.ui.confirm('Remove exact duplicate memories?', `${candidate.duplicatesFound} ${noun} will be permanently deleted.`);
316
+ return approved;
317
+ },
318
+ });
319
+ if (preview?.duplicatesFound === 0) {
320
+ ctx.ui.notify('Mem0 dedup complete: no exact duplicates found.', 'info');
321
+ break;
322
+ }
323
+ if (!approved) {
324
+ ctx.ui.notify('Mem0 dedup cancelled.', 'info');
325
+ break;
326
+ }
327
+ const removedNoun = result.duplicatesRemoved === 1 ? 'duplicate' : 'duplicates';
328
+ ctx.ui.notify(`Mem0 dedup complete: removed ${result.duplicatesRemoved} ${removedNoun}; ${result.deleteFailures} deletions failed.`, result.deleteFailures ? 'warning' : 'info');
329
+ break;
330
+ }
331
+ case 'delete': {
332
+ if (!rest) {
333
+ ctx.ui.notify('Usage: /mem0 delete <memory-id>', 'warning');
334
+ break;
335
+ }
336
+ await provider.delete(rest, ctx.signal ? { signal: ctx.signal } : {});
337
+ ctx.ui.notify(`Deleted memory ${rest}.`, 'info');
338
+ break;
339
+ }
129
340
  default:
130
- ctx.ui.notify('Unknown subcommand. Available: status, search, profile.', 'warning');
341
+ ctx.ui.notify('Unknown subcommand. Available: status, search, profile, add, dedup, delete.', 'warning');
131
342
  }
132
343
  },
133
344
  });
134
345
  }
346
+ function extractText(msg) {
347
+ if (typeof msg.content === 'string')
348
+ return msg.content;
349
+ if (Array.isArray(msg.content)) {
350
+ return msg.content
351
+ .filter((c) => c.type === 'text' && c.text)
352
+ .map((c) => c.text)
353
+ .join('\n');
354
+ }
355
+ return '';
356
+ }
135
357
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Two-phase semantic prefetch — kicks off a background search on input,
3
+ * consumes the result on before_agent_start with a timeout.
4
+ */
5
+ import type { Mem0Provider } from './provider.js';
6
+ export declare class Prefetch {
7
+ private readonly provider;
8
+ private readonly userId;
9
+ private readonly agentId;
10
+ private readonly topK;
11
+ private pending;
12
+ constructor(provider: Mem0Provider, userId: string, opts: {
13
+ agentId?: string;
14
+ topK: number;
15
+ });
16
+ /** Phase 1: kick off a background search (called on input with user text). */
17
+ queue(query: string): void;
18
+ /** Phase 2: consume the result with a timeout (called on before_agent_start). */
19
+ consume(timeoutMs?: number): Promise<string>;
20
+ }
21
+ //# sourceMappingURL=prefetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prefetch.d.ts","sourceRoot":"","sources":["../src/prefetch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAQlD,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAsC;gBAEzC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAO5F,8EAA8E;IAC9E,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAY1B,iFAAiF;IAC3E,OAAO,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CA6BjD"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Two-phase semantic prefetch — kicks off a background search on input,
3
+ * consumes the result on before_agent_start with a timeout.
4
+ */
5
+ import { truncateHead, truncateLine } from '@earendil-works/pi-coding-agent';
6
+ import { formatRecalledMemory } from './privacy.js';
7
+ /** Recalled entries land in per-turn model context — keep the block small. */
8
+ const MAX_ENTRY_CHARS = 1_000;
9
+ const MAX_BLOCK_BYTES = 8 * 1024;
10
+ const MAX_BLOCK_LINES = 50;
11
+ export class Prefetch {
12
+ provider;
13
+ userId;
14
+ agentId;
15
+ topK;
16
+ pending = null;
17
+ constructor(provider, userId, opts) {
18
+ this.provider = provider;
19
+ this.userId = userId;
20
+ this.agentId = opts.agentId;
21
+ this.topK = opts.topK;
22
+ }
23
+ /** Phase 1: kick off a background search (called on input with user text). */
24
+ queue(query) {
25
+ if (!query.trim())
26
+ return;
27
+ const search = this.provider.search(query, {
28
+ userId: this.userId,
29
+ ...(this.agentId ? { agentId: this.agentId } : {}),
30
+ topK: this.topK,
31
+ });
32
+ // A replaced or never-consumed search must not surface as an unhandled rejection.
33
+ search.catch(() => { });
34
+ this.pending = search;
35
+ }
36
+ /** Phase 2: consume the result with a timeout (called on before_agent_start). */
37
+ async consume(timeoutMs = 3000) {
38
+ if (!this.pending)
39
+ return '';
40
+ const promise = this.pending;
41
+ this.pending = null;
42
+ try {
43
+ const memories = await Promise.race([
44
+ promise,
45
+ new Promise((resolve) => setTimeout(() => resolve([]), timeoutMs)),
46
+ ]);
47
+ if (memories.length === 0)
48
+ return '';
49
+ const lines = memories
50
+ .filter((m) => m.memory?.trim())
51
+ .map((m) => `- ${formatRecalledMemory(truncateLine(m.memory.trim(), MAX_ENTRY_CHARS).text)}`);
52
+ if (lines.length === 0)
53
+ return '';
54
+ return truncateHead(`## Recalled Memories (Mem0)\n${lines.join('\n')}`, {
55
+ maxBytes: MAX_BLOCK_BYTES,
56
+ maxLines: MAX_BLOCK_LINES,
57
+ }).content;
58
+ }
59
+ catch {
60
+ return '';
61
+ }
62
+ }
63
+ }
64
+ //# sourceMappingURL=prefetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prefetch.js","sourceRoot":"","sources":["../src/prefetch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAIpD,8EAA8E;AAC9E,MAAM,eAAe,GAAG,KAAK,CAAC;AAC9B,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC;AACjC,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,MAAM,OAAO,QAAQ;IACF,QAAQ,CAAe;IACvB,MAAM,CAAS;IACf,OAAO,CAAqB;IAC5B,IAAI,CAAS;IACtB,OAAO,GAAiC,IAAI,CAAC;IAErD,YAAY,QAAsB,EAAE,MAAc,EAAE,IAAwC;QAC1F,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YAAE,OAAO;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE;YACzC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;QACH,kFAAkF;QAClF,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI;QAC5B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QAE7B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBAClC,OAAO;gBACP,IAAI,OAAO,CAAe,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;aACjF,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAErC,MAAM,KAAK,GAAG,QAAQ;iBACnB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;iBAC/B,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,CACxF,CAAC;YAEJ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAClC,OAAO,YAAY,CAAC,gCAAgC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;gBACtE,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE,eAAe;aAC1B,CAAC,CAAC,OAAO,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF"}
package/dist/privacy.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- export declare function scopeMemoryUserId(baseUserId: string, cwd: string): string;
1
+ import type { MemoryUserIdScope } from './types.js';
2
+ export declare function scopeMemoryUserId(baseUserId: string, cwd: string, scope?: MemoryUserIdScope): string;
2
3
  export declare function redactMemoryText(text: string): string;
3
4
  export declare function formatRecalledMemory(text: string): string;
4
5
  //# sourceMappingURL=privacy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"privacy.d.ts","sourceRoot":"","sources":["../src/privacy.ts"],"names":[],"mappings":"AAIA,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGzE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWrD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMzD"}
1
+ {"version":3,"file":"privacy.d.ts","sourceRoot":"","sources":["../src/privacy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,iBAA6B,GACnC,MAAM,CAIR;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWrD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMzD"}
package/dist/privacy.js CHANGED
@@ -1,7 +1,9 @@
1
1
  import { createHash } from 'node:crypto';
2
2
  import path from 'node:path';
3
3
  import { scanForThreats } from '@amaster.ai/pi-shared/threat-patterns';
4
- export function scopeMemoryUserId(baseUserId, cwd) {
4
+ export function scopeMemoryUserId(baseUserId, cwd, scope = 'project') {
5
+ if (scope === 'exact')
6
+ return baseUserId;
5
7
  const project = createHash('sha256').update(path.resolve(cwd)).digest('hex').slice(0, 12);
6
8
  return `${baseUserId}:project:${project}`;
7
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"privacy.js","sourceRoot":"","sources":["../src/privacy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAEvE,MAAM,UAAU,iBAAiB,CAAC,UAAkB,EAAE,GAAW;IAC/D,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1F,OAAO,GAAG,UAAU,YAAY,OAAO,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,IAAI;SACR,OAAO,CACN,4EAA4E,EAC5E,YAAY,CACb;SACA,OAAO,CAAC,wCAAwC,EAAE,eAAe,CAAC;SAClE,OAAO,CACN,qEAAqE,EACrE,eAAe,CAChB,CAAC;AACN,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,8BAA8B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC9D,CAAC;IACD,OAAO,2BAA2B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"privacy.js","sourceRoot":"","sources":["../src/privacy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAGvE,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,GAAW,EACX,QAA2B,SAAS;IAEpC,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,UAAU,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1F,OAAO,GAAG,UAAU,YAAY,OAAO,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,IAAI;SACR,OAAO,CACN,4EAA4E,EAC5E,YAAY,CACb;SACA,OAAO,CAAC,wCAAwC,EAAE,eAAe,CAAC;SAClE,OAAO,CACN,qEAAqE,EACrE,eAAe,CAChB,CAAC;AACN,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,8BAA8B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC9D,CAAC;IACD,OAAO,2BAA2B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3D,CAAC"}
@@ -1,33 +1,43 @@
1
1
  /**
2
- * Mem0 provider abstraction — supports both Platform (cloud) and OSS (local SQLite) modes.
2
+ * Mem0 provider abstraction for Platform, embedded, and self-hosted REST modes.
3
3
  *
4
4
  * Uses the `mem0ai` npm SDK which handles:
5
5
  * - Platform mode: REST API calls to api.mem0.ai
6
- * - OSS mode: vector storage + LLM extraction via configured providers
6
+ * - Embedded mode: vector storage + LLM extraction via configured providers
7
+ * - Self-hosted mode: direct HTTP calls to a separately deployed Mem0 server
7
8
  *
8
- * The mem0 OSS `memory` vector store is itself SQLite-backed. This extension
9
+ * The embedded mem0 `memory` vector store is itself SQLite-backed. This extension
9
10
  * configures it with a file under Pi home by default and lets mem0 own persistence
10
11
  * directly.
11
12
  */
12
- import type { AddResult, Mem0ExtensionConfig, MemoryItem } from './types.js';
13
+ import type { AddResult, Mem0ExtensionConfig, Mem0MemoryMode, Mem0Mode, MemoryItem } from './types.js';
14
+ type Mem0ScopeOptions = {
15
+ userId: string;
16
+ agentId?: string;
17
+ signal?: AbortSignal;
18
+ };
19
+ type Mem0AddOptions = Mem0ScopeOptions & {
20
+ infer?: boolean;
21
+ observedAt?: Date | string;
22
+ };
23
+ type Mem0SearchOptions = Mem0ScopeOptions & {
24
+ topK?: number;
25
+ };
13
26
  export interface Mem0Provider {
14
27
  add(messages: Array<{
15
28
  role: string;
16
29
  content: string;
17
- }>, opts: {
18
- userId: string;
19
- infer?: boolean;
20
- observedAt?: Date | string;
21
- }): Promise<AddResult | null>;
22
- search(query: string, opts: {
23
- userId: string;
24
- topK?: number;
25
- }): Promise<MemoryItem[]>;
26
- getAll(opts: {
27
- userId: string;
28
- }): Promise<MemoryItem[]>;
29
- delete(memoryId: string): Promise<void>;
30
+ }>, opts: Mem0AddOptions): Promise<AddResult | null>;
31
+ search(query: string, opts: Mem0SearchOptions): Promise<MemoryItem[]>;
32
+ getAll(opts: Mem0ScopeOptions): Promise<MemoryItem[]>;
33
+ /** Enumerate maintenance groups that may be deduplicated independently. */
34
+ getDedupGroups?(opts: Mem0ScopeOptions): Promise<MemoryItem[][]>;
35
+ delete(memoryId: string, opts?: {
36
+ signal?: AbortSignal;
37
+ }): Promise<void>;
30
38
  }
39
+ export declare function normalizeMem0Mode(mode: unknown): Mem0Mode;
40
+ export declare function normalizeMemoryMode(memoryMode: unknown): Mem0MemoryMode;
31
41
  /**
32
42
  * Format an observedAt value as YYYY-MM-DD for mem0's Observation Date field.
33
43
  * mem0's extraction prompt grounds relative times ("yesterday", "last week")
@@ -68,4 +78,5 @@ export interface CreateProviderOptions {
68
78
  resolveProvider?: ProviderResolver;
69
79
  }
70
80
  export declare function createMem0Provider(opts: CreateProviderOptions): Promise<Mem0Provider>;
81
+ export {};
71
82
  //# sourceMappingURL=provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7E,MAAM,WAAW,YAAY;IAC3B,GAAG,CACD,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,EAClD,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;KAAE,GACpE,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAE7B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAEtF,MAAM,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAExD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAMD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAIzD;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAI/E;AAyGD,uEAAuE;AACvE,MAAM,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAE5E,sDAAsD;AACtD,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,2FAA2F;AAC3F,MAAM,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAC;AAE/F;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOtF;AA4PD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,wGAAwG;IACxG,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,2FAA2F;IAC3F,eAAe,CAAC,EAAE,gBAAgB,CAAC;CACpC;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CAoB3F"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EACV,SAAS,EACT,mBAAmB,EACnB,cAAc,EACd,QAAQ,EACR,UAAU,EACX,MAAM,YAAY,CAAC;AAMpB,KAAK,gBAAgB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AACnF,KAAK,cAAc,GAAG,gBAAgB,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;CAAE,CAAC;AACzF,KAAK,iBAAiB,GAAG,gBAAgB,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAM9D,MAAM,WAAW,YAAY;IAC3B,GAAG,CACD,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,EAClD,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAE7B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAEtE,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAEtD,2EAA2E;IAC3E,cAAc,CAAC,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAEjE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1E;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAKzD;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,OAAO,GAAG,cAAc,CAMvE;AAMD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAIzD;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAI/E;AAmWD,uEAAuE;AACvE,MAAM,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAE5E,sDAAsD;AACtD,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,2FAA2F;AAC3F,MAAM,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAC;AAE/F;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOtF;AAsSD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,wGAAwG;IACxG,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,2FAA2F;IAC3F,eAAe,CAAC,EAAE,gBAAgB,CAAC;CACpC;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CA6B3F"}