@amaster.ai/pi-memory-mem0 0.1.2-beta.54 → 0.1.2-beta.55
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 +39 -17
- package/dist/dedup.d.ts +1 -1
- package/dist/dedup.js +3 -3
- package/dist/dedup.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -17
- package/dist/index.js.map +1 -1
- package/dist/privacy.d.ts +2 -1
- package/dist/privacy.d.ts.map +1 -1
- package/dist/privacy.js +3 -1
- package/dist/privacy.js.map +1 -1
- package/dist/provider.d.ts +12 -5
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +171 -42
- package/dist/provider.js.map +1 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +24 -17
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +10 -5
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -2,22 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|

|
|
4
4
|
|
|
5
|
-
Explicit semantic memory tools powered by [Mem0](https://mem0.ai), with
|
|
5
|
+
Explicit semantic memory tools powered by [Mem0](https://mem0.ai), with Platform, embedded, and self-hosted modes.
|
|
6
6
|
|
|
7
7
|
## How It Works
|
|
8
8
|
|
|
9
|
-
Memories are saved and recalled through explicit tools. They are project-namespaced, and stored text is not injected into the system prompt.
|
|
9
|
+
Memories are saved and recalled through explicit tools. They are project-namespaced by default, and stored text is not injected into the system prompt. Set `userIdScope: "exact"` when one identity must be shared across projects.
|
|
10
10
|
|
|
11
11
|
Use `mem0_save` and the search/profile tools when memory should be stored or retrieved.
|
|
12
12
|
|
|
13
|
-
##
|
|
13
|
+
## Modes
|
|
14
14
|
|
|
15
15
|
| Mode | Vector Store | Persistence | Dependencies | Use Case |
|
|
16
16
|
|------|-------------|-------------|--------------|----------|
|
|
17
17
|
| `platform` | Mem0 Cloud | Cloud-managed | `MEM0_API_KEY` | Quick start, multi-device sync |
|
|
18
|
-
| `
|
|
18
|
+
| `embedded` | Mem0 OSS vector store | Vector-store managed | LLM + Embedding API | Data privacy, no Mem0 Cloud |
|
|
19
|
+
| `self-hosted` | Mem0 OSS REST server | Server-managed | Server URL, optional API key | Shared infrastructure |
|
|
19
20
|
|
|
20
|
-
## Architecture (
|
|
21
|
+
## Architecture (Embedded Mode)
|
|
21
22
|
|
|
22
23
|
```
|
|
23
24
|
User ←→ Agent ←→ Mem0 OSS Memory
|
|
@@ -50,14 +51,14 @@ in user or agent settings.
|
|
|
50
51
|
}
|
|
51
52
|
```
|
|
52
53
|
|
|
53
|
-
###
|
|
54
|
+
### Embedded Mode (Recommended)
|
|
54
55
|
|
|
55
56
|
Reuses API keys and base URLs from pi's configured model providers — **no extra environment variables needed**.
|
|
56
57
|
|
|
57
58
|
```json
|
|
58
59
|
{
|
|
59
60
|
"pi-memory-mem0": {
|
|
60
|
-
"mode": "
|
|
61
|
+
"mode": "embedded",
|
|
61
62
|
"userId": "${USER}"
|
|
62
63
|
}
|
|
63
64
|
}
|
|
@@ -65,6 +66,24 @@ Reuses API keys and base URLs from pi's configured model providers — **no extr
|
|
|
65
66
|
|
|
66
67
|
Defaults to OpenAI `text-embedding-3-small` (embedding) + `gpt-4.1-nano` (extraction). API keys and base URLs are automatically resolved from pi's model registry.
|
|
67
68
|
|
|
69
|
+
Existing settings with `mode: "open-source"` continue to load as `embedded`, but `open-source` is not part of the supported configuration interface. New settings should use `embedded`.
|
|
70
|
+
|
|
71
|
+
### Self-Hosted Mode
|
|
72
|
+
|
|
73
|
+
Calls the OSS REST server directly. The server uses `/memories` and `/search`, not the Mem0 Platform `/v1` paths.
|
|
74
|
+
|
|
75
|
+
```json
|
|
76
|
+
{
|
|
77
|
+
"pi-memory-mem0": {
|
|
78
|
+
"mode": "self-hosted",
|
|
79
|
+
"baseUrl": "${MEM0_BASE_URL}",
|
|
80
|
+
"apiKey": "${MEM0_API_KEY}",
|
|
81
|
+
"userId": "${PAPERCLIP_COMPANY_ID}",
|
|
82
|
+
"userIdScope": "exact"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
68
87
|
### Custom Provider
|
|
69
88
|
|
|
70
89
|
When your model registry defines a custom provider with `api: "openai-completions"`, you can use it directly:
|
|
@@ -72,7 +91,7 @@ When your model registry defines a custom provider with `api: "openai-completion
|
|
|
72
91
|
```json
|
|
73
92
|
{
|
|
74
93
|
"pi-memory-mem0": {
|
|
75
|
-
"mode": "
|
|
94
|
+
"mode": "embedded",
|
|
76
95
|
"oss": {
|
|
77
96
|
"llm": {
|
|
78
97
|
"provider": "my-provider",
|
|
@@ -97,7 +116,7 @@ The extension automatically:
|
|
|
97
116
|
```json
|
|
98
117
|
{
|
|
99
118
|
"pi-memory-mem0": {
|
|
100
|
-
"mode": "
|
|
119
|
+
"mode": "embedded",
|
|
101
120
|
"userId": "${USER}",
|
|
102
121
|
"oss": {
|
|
103
122
|
"llm": {
|
|
@@ -121,7 +140,7 @@ For production workloads that need a dedicated vector database:
|
|
|
121
140
|
```json
|
|
122
141
|
{
|
|
123
142
|
"pi-memory-mem0": {
|
|
124
|
-
"mode": "
|
|
143
|
+
"mode": "embedded",
|
|
125
144
|
"oss": {
|
|
126
145
|
"vectorStore": {
|
|
127
146
|
"provider": "qdrant",
|
|
@@ -140,10 +159,12 @@ The configured vector store always owns persistence. To request an intentionally
|
|
|
140
159
|
|
|
141
160
|
| Field | Type | Default | Description |
|
|
142
161
|
|-------|------|---------|-------------|
|
|
143
|
-
| `mode` | `"platform"` \| `"
|
|
144
|
-
| `apiKey` | string | — |
|
|
145
|
-
| `baseUrl` | string | `https://api.mem0.ai` |
|
|
162
|
+
| `mode` | `"platform"` \| `"embedded"` \| `"self-hosted"` | `"platform"` | Operating mode |
|
|
163
|
+
| `apiKey` | string | — | Platform or self-hosted API key. Supports `${MEM0_API_KEY}` |
|
|
164
|
+
| `baseUrl` | string | `https://api.mem0.ai` | Platform override; required for self-hosted mode |
|
|
165
|
+
| `requestTimeoutMs` | number | `30000` | Self-hosted request timeout |
|
|
146
166
|
| `userId` | string | `$USER` or `"default-user"` | Memory scoping identifier |
|
|
167
|
+
| `userIdScope` | `"project"` \| `"exact"` | `"project"` | Append the cwd hash or use `userId` verbatim |
|
|
147
168
|
| `topK` | number | `5` | Max recalled memories per turn |
|
|
148
169
|
| `useRegistryKeys` | boolean | `true` | Whether OSS mode resolves keys from pi registry |
|
|
149
170
|
| `oss.llm` | object | OpenAI gpt-4.1-nano | OSS extraction model |
|
|
@@ -158,9 +179,10 @@ The configured vector store always owns persistence. To request an intentionally
|
|
|
158
179
|
| Mode | Vector Data | History |
|
|
159
180
|
|------|-------------|---------|
|
|
160
181
|
| Platform | Mem0 Cloud | Cloud-managed |
|
|
161
|
-
|
|
|
162
|
-
|
|
|
163
|
-
|
|
|
182
|
+
| Embedded (default paths) | `<home>/memories/mem0-vectors.db` | `<home>/memories/mem0-history.db` |
|
|
183
|
+
| Embedded (`memory`, `dbPath: ":memory:"`) | Process-local SQLite; lost on restart | `<home>/memories/mem0-history.db` |
|
|
184
|
+
| Embedded (Qdrant) | Qdrant server | `<home>/memories/mem0-history.db` |
|
|
185
|
+
| Self-hosted | Remote server | Remote server |
|
|
164
186
|
|
|
165
187
|
The `home` directory is resolved via `resolveHome()` from `@amaster.ai/pi-shared/settings` (defaults to `~/.pi/agent`).
|
|
166
188
|
|
|
@@ -179,7 +201,7 @@ This happens transparently — just configure the provider name as it appears in
|
|
|
179
201
|
|
|
180
202
|
## Installation Notes
|
|
181
203
|
|
|
182
|
-
The default
|
|
204
|
+
The default Embedded configuration depends on `better-sqlite3` (native addon, transitive dependency of `mem0ai`) for both the vector store and history. This remains true for `dbPath: ":memory:"`: it changes where SQLite stores pages, not which vector-store implementation is used.
|
|
183
205
|
|
|
184
206
|
**For pi-agent users**: pi-agent's `package.json` includes `better-sqlite3` in `pnpm.onlyBuiltDependencies` — it compiles automatically during `pnpm install`. No extra steps needed.
|
|
185
207
|
|
package/dist/dedup.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Normalizes content, identifies exact duplicates (case-insensitive, whitespace-collapsed),
|
|
5
5
|
* deletes the older entries, and keeps only the most recently updated.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
7
|
+
* All modes use the provider interface. In embedded mode the configured
|
|
8
8
|
* vector store is the source of truth and its IDs remain stable across restarts.
|
|
9
9
|
*/
|
|
10
10
|
import { type ProviderResolver } from './provider.js';
|
package/dist/dedup.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Normalizes content, identifies exact duplicates (case-insensitive, whitespace-collapsed),
|
|
5
5
|
* deletes the older entries, and keeps only the most recently updated.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
7
|
+
* All modes use the provider interface. In embedded mode the configured
|
|
8
8
|
* vector store is the source of truth and its IDs remain stable across restarts.
|
|
9
9
|
*/
|
|
10
10
|
import { createMem0Provider } from './provider.js';
|
|
@@ -14,7 +14,7 @@ export async function dedupMemories(opts) {
|
|
|
14
14
|
config,
|
|
15
15
|
...(resolveProvider ? { resolveProvider } : {}),
|
|
16
16
|
});
|
|
17
|
-
const allMemories = await provider.getAll({ userId });
|
|
17
|
+
const allMemories = await provider.getAll({ userId, ...(signal ? { signal } : {}) });
|
|
18
18
|
if (allMemories.length === 0) {
|
|
19
19
|
return { total: 0, duplicatesRemoved: 0 };
|
|
20
20
|
}
|
|
@@ -24,7 +24,7 @@ export async function dedupMemories(opts) {
|
|
|
24
24
|
if (signal?.aborted)
|
|
25
25
|
break;
|
|
26
26
|
try {
|
|
27
|
-
await provider.delete(id);
|
|
27
|
+
await (signal ? provider.delete(id, { signal }) : provider.delete(id));
|
|
28
28
|
removed++;
|
|
29
29
|
}
|
|
30
30
|
catch {
|
package/dist/dedup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dedup.js","sourceRoot":"","sources":["../src/dedup.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,kBAAkB,EAAyB,MAAM,eAAe,CAAC;AAe1E,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAkB;IACpD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAEzD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC;QACxC,MAAM;QACN,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChD,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"dedup.js","sourceRoot":"","sources":["../src/dedup.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* pi-memory-mem0 — Explicit semantic memory extension powered by Mem0.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Modes:
|
|
5
5
|
* - **platform**: Uses Mem0 Cloud API (needs MEM0_API_KEY)
|
|
6
|
-
* - **
|
|
6
|
+
* - **embedded**: Runs Mem0 OSS in-process
|
|
7
|
+
* - **self-hosted**: Calls a remote Mem0 OSS REST server
|
|
7
8
|
*
|
|
8
9
|
* Configuration via settings.json key "pi-memory-mem0".
|
|
9
10
|
* Supports ${ENV_VAR:-fallback} in user and agent settings.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AA4BpE,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAiH5D"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* pi-memory-mem0 — Explicit semantic memory extension powered by Mem0.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Modes:
|
|
5
5
|
* - **platform**: Uses Mem0 Cloud API (needs MEM0_API_KEY)
|
|
6
|
-
* - **
|
|
6
|
+
* - **embedded**: Runs Mem0 OSS in-process
|
|
7
|
+
* - **self-hosted**: Calls a remote Mem0 OSS REST server
|
|
7
8
|
*
|
|
8
9
|
* Configuration via settings.json key "pi-memory-mem0".
|
|
9
10
|
* Supports ${ENV_VAR:-fallback} in user and agent settings.
|
|
@@ -11,7 +12,7 @@
|
|
|
11
12
|
*/
|
|
12
13
|
import { isProjectTrusted, loadPiSettings } from '@amaster.ai/pi-shared/settings';
|
|
13
14
|
import { formatRecalledMemory, scopeMemoryUserId } from './privacy.js';
|
|
14
|
-
import { createMem0Provider } from './provider.js';
|
|
15
|
+
import { createMem0Provider, normalizeMem0Mode } from './provider.js';
|
|
15
16
|
import { createMem0Tools } from './tools.js';
|
|
16
17
|
const SETTINGS_KEY = 'pi-memory-mem0';
|
|
17
18
|
const STATUS_KEY = 'mem0';
|
|
@@ -26,9 +27,11 @@ function loadConfig(cwd, projectTrusted = false) {
|
|
|
26
27
|
return {};
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
|
-
function resolveUserId(configUserId) {
|
|
30
|
+
function resolveUserId(configUserId, scope = 'project') {
|
|
30
31
|
if (configUserId?.trim())
|
|
31
32
|
return configUserId.trim();
|
|
33
|
+
if (scope === 'exact')
|
|
34
|
+
throw new Error('Mem0 exact userId resolved to an empty value.');
|
|
32
35
|
if (process.env.USER)
|
|
33
36
|
return process.env.USER;
|
|
34
37
|
if (process.env.USERNAME)
|
|
@@ -38,16 +41,17 @@ function resolveUserId(configUserId) {
|
|
|
38
41
|
export default function mem0Extension(pi) {
|
|
39
42
|
let provider;
|
|
40
43
|
let userId = '';
|
|
44
|
+
let activeMode = '';
|
|
41
45
|
pi.on('session_start', async (_event, ctx) => {
|
|
42
46
|
provider = undefined;
|
|
43
47
|
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
48
|
try {
|
|
49
|
+
const mode = normalizeMem0Mode(config.mode);
|
|
50
|
+
if (mode === 'platform' && !config.apiKey?.trim()) {
|
|
51
|
+
ctx.ui.setStatus(STATUS_KEY, 'mem0: disabled (no API key)');
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const resolvedUserId = resolveUserId(config.userId, config.userIdScope);
|
|
51
55
|
provider = await createMem0Provider({
|
|
52
56
|
config,
|
|
53
57
|
resolveProvider: async (providerName) => {
|
|
@@ -71,14 +75,15 @@ export default function mem0Extension(pi) {
|
|
|
71
75
|
return result;
|
|
72
76
|
},
|
|
73
77
|
});
|
|
78
|
+
userId = scopeMemoryUserId(resolvedUserId, ctx.cwd, config.userIdScope);
|
|
79
|
+
activeMode = mode;
|
|
74
80
|
}
|
|
75
81
|
catch (err) {
|
|
76
82
|
ctx.ui.setStatus(STATUS_KEY, 'mem0: init failed');
|
|
77
83
|
ctx.ui.notify(`Mem0 init failed: ${err instanceof Error ? err.message : String(err)}`, 'error');
|
|
78
84
|
return;
|
|
79
85
|
}
|
|
80
|
-
|
|
81
|
-
ctx.ui.setStatus(STATUS_KEY, `mem0: ${mode}`);
|
|
86
|
+
ctx.ui.setStatus(STATUS_KEY, `mem0: ${activeMode}`);
|
|
82
87
|
for (const tool of createMem0Tools(provider, userId)) {
|
|
83
88
|
pi.registerTool(tool);
|
|
84
89
|
}
|
|
@@ -90,14 +95,12 @@ export default function mem0Extension(pi) {
|
|
|
90
95
|
ctx.ui.notify('Mem0 is not active.', 'warning');
|
|
91
96
|
return;
|
|
92
97
|
}
|
|
93
|
-
const config = loadConfig(ctx.cwd, isProjectTrusted(ctx));
|
|
94
|
-
const userId = scopeMemoryUserId(resolveUserId(config.userId), ctx.cwd);
|
|
95
98
|
const parts = args.trim().split(/\s+/).filter(Boolean);
|
|
96
99
|
const subcommand = parts[0]?.toLowerCase() ?? 'status';
|
|
97
100
|
const rest = parts.slice(1).join(' ').trim();
|
|
98
101
|
switch (subcommand) {
|
|
99
102
|
case 'status': {
|
|
100
|
-
ctx.ui.notify(`Mem0: active (mode: ${
|
|
103
|
+
ctx.ui.notify(`Mem0: active (mode: ${activeMode})`, 'info');
|
|
101
104
|
break;
|
|
102
105
|
}
|
|
103
106
|
case 'search': {
|
|
@@ -105,7 +108,11 @@ export default function mem0Extension(pi) {
|
|
|
105
108
|
ctx.ui.notify('Usage: /mem0 search <query>', 'warning');
|
|
106
109
|
break;
|
|
107
110
|
}
|
|
108
|
-
const results = await provider.search(rest, {
|
|
111
|
+
const results = await provider.search(rest, {
|
|
112
|
+
userId,
|
|
113
|
+
topK: 10,
|
|
114
|
+
...(ctx.signal ? { signal: ctx.signal } : {}),
|
|
115
|
+
});
|
|
109
116
|
if (results.length === 0) {
|
|
110
117
|
ctx.ui.notify('No relevant memories found.', 'info');
|
|
111
118
|
}
|
|
@@ -116,7 +123,10 @@ export default function mem0Extension(pi) {
|
|
|
116
123
|
break;
|
|
117
124
|
}
|
|
118
125
|
case 'profile': {
|
|
119
|
-
const all = await provider.getAll({
|
|
126
|
+
const all = await provider.getAll({
|
|
127
|
+
userId,
|
|
128
|
+
...(ctx.signal ? { signal: ctx.signal } : {}),
|
|
129
|
+
});
|
|
120
130
|
if (all.length === 0) {
|
|
121
131
|
ctx.ui.notify('No memories stored yet.', 'info');
|
|
122
132
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/privacy.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
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
|
package/dist/privacy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"privacy.d.ts","sourceRoot":"","sources":["../src/privacy.ts"],"names":[],"mappings":"
|
|
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
|
}
|
package/dist/privacy.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/provider.d.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Mem0 provider abstraction
|
|
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
|
-
* -
|
|
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
|
|
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, Mem0Mode, MemoryItem } from './types.js';
|
|
13
14
|
export interface Mem0Provider {
|
|
14
15
|
add(messages: Array<{
|
|
15
16
|
role: string;
|
|
@@ -18,16 +19,22 @@ export interface Mem0Provider {
|
|
|
18
19
|
userId: string;
|
|
19
20
|
infer?: boolean;
|
|
20
21
|
observedAt?: Date | string;
|
|
22
|
+
signal?: AbortSignal;
|
|
21
23
|
}): Promise<AddResult | null>;
|
|
22
24
|
search(query: string, opts: {
|
|
23
25
|
userId: string;
|
|
24
26
|
topK?: number;
|
|
27
|
+
signal?: AbortSignal;
|
|
25
28
|
}): Promise<MemoryItem[]>;
|
|
26
29
|
getAll(opts: {
|
|
27
30
|
userId: string;
|
|
31
|
+
signal?: AbortSignal;
|
|
28
32
|
}): Promise<MemoryItem[]>;
|
|
29
|
-
delete(memoryId: string
|
|
33
|
+
delete(memoryId: string, opts?: {
|
|
34
|
+
signal?: AbortSignal;
|
|
35
|
+
}): Promise<void>;
|
|
30
36
|
}
|
|
37
|
+
export declare function normalizeMem0Mode(mode: unknown): Mem0Mode;
|
|
31
38
|
/**
|
|
32
39
|
* Format an observedAt value as YYYY-MM-DD for mem0's Observation Date field.
|
|
33
40
|
* mem0's extraction prompt grounds relative times ("yesterday", "last week")
|
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMvF,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,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC1F,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAE7B,MAAM,CACJ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC5D,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAEzB,MAAM,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAE9E,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;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;AAyRD,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;AA4QD,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"}
|
package/dist/provider.js
CHANGED
|
@@ -1,17 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Mem0 provider abstraction
|
|
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
|
-
* -
|
|
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
|
|
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
|
*/
|
|
13
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
12
14
|
import { createRequire } from 'node:module';
|
|
13
15
|
import { join } from 'node:path';
|
|
14
16
|
import { resolveHome } from '@amaster.ai/pi-shared/settings';
|
|
17
|
+
export function normalizeMem0Mode(mode) {
|
|
18
|
+
if (mode === undefined || mode === null)
|
|
19
|
+
return 'platform';
|
|
20
|
+
if (mode === 'open-source')
|
|
21
|
+
return 'embedded';
|
|
22
|
+
if (mode === 'platform' || mode === 'embedded' || mode === 'self-hosted')
|
|
23
|
+
return mode;
|
|
24
|
+
throw new Error(`Unsupported Mem0 mode: ${String(mode)}`);
|
|
25
|
+
}
|
|
15
26
|
// ---------------------------------------------------------------------------
|
|
16
27
|
// Normalizers
|
|
17
28
|
// ---------------------------------------------------------------------------
|
|
@@ -60,14 +71,37 @@ function normalizeResults(raw) {
|
|
|
60
71
|
}
|
|
61
72
|
return [];
|
|
62
73
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
74
|
+
function cancellationReason(signal) {
|
|
75
|
+
return signal.reason instanceof Error ? signal.reason : new Error('Mem0 request cancelled.');
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Stop awaiting SDK promises promptly when Pi cancels the tool call. Platform
|
|
79
|
+
* and direct REST requests also propagate the signal to fetch; the embedded
|
|
80
|
+
* SDK has no AbortSignal hook, so only the caller's wait can be cancelled.
|
|
81
|
+
*/
|
|
82
|
+
function waitWithCancellation(promise, signal) {
|
|
83
|
+
if (!signal)
|
|
84
|
+
return promise;
|
|
85
|
+
if (signal.aborted)
|
|
86
|
+
return Promise.reject(cancellationReason(signal));
|
|
87
|
+
return new Promise((resolve, reject) => {
|
|
88
|
+
const onAbort = () => reject(cancellationReason(signal));
|
|
89
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
90
|
+
promise.then((value) => {
|
|
91
|
+
signal.removeEventListener('abort', onAbort);
|
|
92
|
+
resolve(value);
|
|
93
|
+
}, (error) => {
|
|
94
|
+
signal.removeEventListener('abort', onAbort);
|
|
95
|
+
reject(error);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
}
|
|
66
99
|
class PlatformProvider {
|
|
67
100
|
apiKey;
|
|
68
101
|
baseUrl;
|
|
69
102
|
client;
|
|
70
103
|
initPromise = null;
|
|
104
|
+
requestSignal = new AsyncLocalStorage();
|
|
71
105
|
constructor(apiKey, baseUrl) {
|
|
72
106
|
this.apiKey = apiKey;
|
|
73
107
|
this.baseUrl = baseUrl;
|
|
@@ -85,10 +119,22 @@ class PlatformProvider {
|
|
|
85
119
|
const opts = { apiKey: this.apiKey };
|
|
86
120
|
if (this.baseUrl)
|
|
87
121
|
opts.host = this.baseUrl;
|
|
88
|
-
|
|
122
|
+
// mem0ai does not expose RequestInit on its public methods, but its fetch
|
|
123
|
+
// helper is intentionally an instance method. Add the per-call signal at
|
|
124
|
+
// that boundary; AsyncLocalStorage keeps concurrent requests isolated.
|
|
125
|
+
const client = new MemoryClient(opts);
|
|
126
|
+
const originalFetch = client._fetchWithErrorHandling.bind(client);
|
|
127
|
+
client._fetchWithErrorHandling = (url, init = {}) => {
|
|
128
|
+
const signal = this.requestSignal.getStore();
|
|
129
|
+
return originalFetch(url, signal ? { ...init, signal } : init);
|
|
130
|
+
};
|
|
131
|
+
this.client = client;
|
|
132
|
+
}
|
|
133
|
+
runWithSignal(signal, operation) {
|
|
134
|
+
return signal ? this.requestSignal.run(signal, operation) : operation();
|
|
89
135
|
}
|
|
90
136
|
async add(messages, opts) {
|
|
91
|
-
await this.ensureClient();
|
|
137
|
+
await waitWithCancellation(this.ensureClient(), opts.signal);
|
|
92
138
|
const addOpts = { userId: opts.userId };
|
|
93
139
|
if (opts.infer === false)
|
|
94
140
|
addOpts.infer = false;
|
|
@@ -100,33 +146,109 @@ class PlatformProvider {
|
|
|
100
146
|
if (!Number.isNaN(d.getTime()))
|
|
101
147
|
addOpts.timestamp = d.toISOString();
|
|
102
148
|
}
|
|
103
|
-
|
|
104
|
-
const result = await this.client.add(messages, addOpts);
|
|
149
|
+
const result = await waitWithCancellation(this.runWithSignal(opts.signal, () => this.client.add(messages, addOpts)), opts.signal);
|
|
105
150
|
return result;
|
|
106
151
|
}
|
|
107
152
|
async search(query, opts) {
|
|
108
|
-
await this.ensureClient();
|
|
153
|
+
await waitWithCancellation(this.ensureClient(), opts.signal);
|
|
109
154
|
const searchOpts = {
|
|
110
155
|
filters: { user_id: opts.userId },
|
|
111
156
|
};
|
|
112
157
|
if (opts.topK)
|
|
113
158
|
searchOpts.topK = opts.topK;
|
|
114
|
-
|
|
115
|
-
const results = await this.client.search(query, searchOpts);
|
|
159
|
+
const results = await waitWithCancellation(this.runWithSignal(opts.signal, () => this.client.search(query, searchOpts)), opts.signal);
|
|
116
160
|
return normalizeResults(results);
|
|
117
161
|
}
|
|
118
162
|
async getAll(opts) {
|
|
119
|
-
await this.ensureClient();
|
|
120
|
-
|
|
121
|
-
const results = await this.client.getAll({
|
|
163
|
+
await waitWithCancellation(this.ensureClient(), opts.signal);
|
|
164
|
+
const results = await waitWithCancellation(this.runWithSignal(opts.signal, () => this.client.getAll({
|
|
122
165
|
filters: { user_id: opts.userId },
|
|
123
|
-
});
|
|
166
|
+
})), opts.signal);
|
|
124
167
|
return normalizeResults(results);
|
|
125
168
|
}
|
|
126
|
-
async delete(memoryId) {
|
|
127
|
-
await this.ensureClient();
|
|
128
|
-
|
|
129
|
-
|
|
169
|
+
async delete(memoryId, opts) {
|
|
170
|
+
await waitWithCancellation(this.ensureClient(), opts?.signal);
|
|
171
|
+
await waitWithCancellation(this.runWithSignal(opts?.signal, () => this.client.delete(memoryId)), opts?.signal);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// Self-Hosted Provider
|
|
175
|
+
// ---------------------------------------------------------------------------
|
|
176
|
+
class SelfHostedProvider {
|
|
177
|
+
apiKey;
|
|
178
|
+
requestTimeoutMs;
|
|
179
|
+
baseUrl;
|
|
180
|
+
constructor(baseUrl, apiKey, requestTimeoutMs = 30_000) {
|
|
181
|
+
this.apiKey = apiKey;
|
|
182
|
+
this.requestTimeoutMs = requestTimeoutMs;
|
|
183
|
+
if (!Number.isFinite(requestTimeoutMs) || requestTimeoutMs <= 0) {
|
|
184
|
+
throw new Error('Self-hosted requestTimeoutMs must be a positive number.');
|
|
185
|
+
}
|
|
186
|
+
const url = new URL(baseUrl);
|
|
187
|
+
if (url.protocol !== 'http:' && url.protocol !== 'https:') {
|
|
188
|
+
throw new Error('Self-hosted mode requires an HTTP(S) baseUrl.');
|
|
189
|
+
}
|
|
190
|
+
this.baseUrl = url.toString().replace(/\/$/, '');
|
|
191
|
+
}
|
|
192
|
+
async request(path, init, callerSignal) {
|
|
193
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
194
|
+
if (this.apiKey)
|
|
195
|
+
headers['X-API-Key'] = this.apiKey;
|
|
196
|
+
const timeoutSignal = AbortSignal.timeout(this.requestTimeoutMs);
|
|
197
|
+
const signal = callerSignal ? AbortSignal.any([callerSignal, timeoutSignal]) : timeoutSignal;
|
|
198
|
+
let response;
|
|
199
|
+
try {
|
|
200
|
+
response = await fetch(`${this.baseUrl}${path}`, { ...init, headers, signal });
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
if (callerSignal?.aborted) {
|
|
204
|
+
throw callerSignal.reason instanceof Error
|
|
205
|
+
? callerSignal.reason
|
|
206
|
+
: new Error('Mem0 request cancelled.');
|
|
207
|
+
}
|
|
208
|
+
if (timeoutSignal.aborted)
|
|
209
|
+
throw new Error('Mem0 request timed out.');
|
|
210
|
+
throw new Error('Mem0 request failed.');
|
|
211
|
+
}
|
|
212
|
+
if (!response.ok)
|
|
213
|
+
throw new Error(`Mem0 request failed (${response.status}).`);
|
|
214
|
+
try {
|
|
215
|
+
return await response.json();
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
if (callerSignal?.aborted)
|
|
219
|
+
throw cancellationReason(callerSignal);
|
|
220
|
+
if (timeoutSignal.aborted)
|
|
221
|
+
throw new Error('Mem0 request timed out.');
|
|
222
|
+
throw new Error('Mem0 returned an invalid response.');
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
async add(messages, opts) {
|
|
226
|
+
return (await this.request('/memories', {
|
|
227
|
+
method: 'POST',
|
|
228
|
+
body: JSON.stringify({
|
|
229
|
+
messages,
|
|
230
|
+
user_id: opts.userId,
|
|
231
|
+
...(opts.infer === undefined ? {} : { infer: opts.infer }),
|
|
232
|
+
}),
|
|
233
|
+
}, opts.signal));
|
|
234
|
+
}
|
|
235
|
+
async search(query, opts) {
|
|
236
|
+
const result = await this.request('/search', {
|
|
237
|
+
method: 'POST',
|
|
238
|
+
body: JSON.stringify({
|
|
239
|
+
query,
|
|
240
|
+
filters: { user_id: opts.userId },
|
|
241
|
+
...(opts.topK === undefined ? {} : { top_k: opts.topK }),
|
|
242
|
+
}),
|
|
243
|
+
}, opts.signal);
|
|
244
|
+
return normalizeResults(result);
|
|
245
|
+
}
|
|
246
|
+
async getAll(opts) {
|
|
247
|
+
const result = await this.request(`/memories?user_id=${encodeURIComponent(opts.userId)}`, { method: 'GET' }, opts.signal);
|
|
248
|
+
return normalizeResults(result);
|
|
249
|
+
}
|
|
250
|
+
async delete(memoryId, opts) {
|
|
251
|
+
await this.request(`/memories/${encodeURIComponent(memoryId)}`, { method: 'DELETE' }, opts?.signal);
|
|
130
252
|
}
|
|
131
253
|
}
|
|
132
254
|
/**
|
|
@@ -312,7 +434,7 @@ class OSSProvider {
|
|
|
312
434
|
await mem.getAll({ filters: { user_id: '__warmup__' } });
|
|
313
435
|
}
|
|
314
436
|
async add(messages, opts) {
|
|
315
|
-
await this.ensureMemory();
|
|
437
|
+
await waitWithCancellation(this.ensureMemory(), opts.signal);
|
|
316
438
|
const addOpts = { userId: opts.userId };
|
|
317
439
|
if (opts.infer === false)
|
|
318
440
|
addOpts.infer = false;
|
|
@@ -326,11 +448,12 @@ class OSSProvider {
|
|
|
326
448
|
this.addMutex = new Promise((res) => {
|
|
327
449
|
release = res;
|
|
328
450
|
});
|
|
451
|
+
let operation;
|
|
452
|
+
let restoreLlm;
|
|
329
453
|
try {
|
|
330
|
-
await gate;
|
|
454
|
+
await waitWithCancellation(gate, opts.signal);
|
|
331
455
|
// biome-ignore lint/suspicious/noExplicitAny: mem0ai/oss lacks type definitions
|
|
332
456
|
const mem = this.memory;
|
|
333
|
-
let restoreLlm;
|
|
334
457
|
if (opts.observedAt) {
|
|
335
458
|
const dateStr = formatObservedAt(opts.observedAt);
|
|
336
459
|
const llm = mem.llm;
|
|
@@ -345,53 +468,59 @@ class OSSProvider {
|
|
|
345
468
|
llm.generateResponse = originalGenerate;
|
|
346
469
|
};
|
|
347
470
|
}
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
}
|
|
352
|
-
finally {
|
|
353
|
-
restoreLlm?.();
|
|
354
|
-
}
|
|
471
|
+
operation = Promise.resolve(mem.add(messages, addOpts)).finally(() => restoreLlm?.());
|
|
472
|
+
void operation.then(() => release(undefined), () => release(undefined));
|
|
473
|
+
return await waitWithCancellation(operation, opts.signal);
|
|
355
474
|
}
|
|
356
475
|
finally {
|
|
357
|
-
|
|
476
|
+
if (!operation) {
|
|
477
|
+
restoreLlm?.();
|
|
478
|
+
void gate.then(() => release(undefined), () => release(undefined));
|
|
479
|
+
}
|
|
358
480
|
}
|
|
359
481
|
}
|
|
360
482
|
async search(query, opts) {
|
|
361
|
-
await this.ensureMemory();
|
|
483
|
+
await waitWithCancellation(this.ensureMemory(), opts.signal);
|
|
362
484
|
const searchOpts = {
|
|
363
485
|
filters: { user_id: opts.userId },
|
|
364
486
|
};
|
|
365
487
|
if (opts.topK)
|
|
366
488
|
searchOpts.topK = opts.topK;
|
|
489
|
+
const results = await waitWithCancellation(
|
|
367
490
|
// biome-ignore lint/suspicious/noExplicitAny: mem0ai/oss lacks type definitions
|
|
368
|
-
|
|
491
|
+
this.memory.search(query, searchOpts), opts.signal);
|
|
369
492
|
return normalizeResults(results);
|
|
370
493
|
}
|
|
371
494
|
async getAll(opts) {
|
|
372
|
-
await this.ensureMemory();
|
|
495
|
+
await waitWithCancellation(this.ensureMemory(), opts.signal);
|
|
496
|
+
const results = await waitWithCancellation(
|
|
373
497
|
// biome-ignore lint/suspicious/noExplicitAny: mem0ai/oss lacks type definitions
|
|
374
|
-
|
|
498
|
+
this.memory.getAll({
|
|
375
499
|
filters: { user_id: opts.userId },
|
|
376
|
-
});
|
|
500
|
+
}), opts.signal);
|
|
377
501
|
return normalizeResults(results);
|
|
378
502
|
}
|
|
379
|
-
async delete(memoryId) {
|
|
380
|
-
await this.ensureMemory();
|
|
503
|
+
async delete(memoryId, opts) {
|
|
504
|
+
await waitWithCancellation(this.ensureMemory(), opts?.signal);
|
|
381
505
|
// biome-ignore lint/suspicious/noExplicitAny: mem0ai/oss lacks type definitions
|
|
382
|
-
await this.memory.delete(memoryId);
|
|
506
|
+
await waitWithCancellation(this.memory.delete(memoryId), opts?.signal);
|
|
383
507
|
}
|
|
384
508
|
}
|
|
385
509
|
export async function createMem0Provider(opts) {
|
|
386
510
|
const { config, resolveKey, resolveProvider } = opts;
|
|
387
|
-
const mode = config.mode
|
|
388
|
-
if (mode === '
|
|
511
|
+
const mode = normalizeMem0Mode(config.mode);
|
|
512
|
+
if (mode === 'embedded') {
|
|
389
513
|
const useRegistry = config.useRegistryKeys !== false;
|
|
390
514
|
const provider = new OSSProvider(config.oss, useRegistry ? resolveKey : undefined, useRegistry ? resolveProvider : undefined);
|
|
391
515
|
// biome-ignore lint/suspicious/noExplicitAny: mem0ai/oss lacks type definitions
|
|
392
516
|
await provider.ensureMemory();
|
|
393
517
|
return provider;
|
|
394
518
|
}
|
|
519
|
+
if (mode === 'self-hosted') {
|
|
520
|
+
if (!config.baseUrl?.trim())
|
|
521
|
+
throw new Error('Self-hosted mode requires baseUrl.');
|
|
522
|
+
return new SelfHostedProvider(config.baseUrl.trim(), config.apiKey?.trim() || undefined, config.requestTimeoutMs);
|
|
523
|
+
}
|
|
395
524
|
if (!config.apiKey?.trim()) {
|
|
396
525
|
throw new Error('Platform mode requires apiKey.');
|
|
397
526
|
}
|
package/dist/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,eAAe,EAA8B,MAAM,iCAAiC,CAAC;AAGnG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,CACL,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,CAAC,EAAE,WAAW,EACpB,QAAQ,CAAC,EAAE,OAAO,EAClB,GAAG,CAAC,EAAE,OAAO,GACZ,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;CACtC;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,eAAe,EAA8B,MAAM,iCAAiC,CAAC;AAGnG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,CACL,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,CAAC,EAAE,WAAW,EACpB,QAAQ,CAAC,EAAE,OAAO,EAClB,GAAG,CAAC,EAAE,OAAO,GACZ,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;CACtC;AAsBD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE,CAgGxF"}
|
package/dist/tools.js
CHANGED
|
@@ -17,6 +17,11 @@ function textResult(text) {
|
|
|
17
17
|
details: undefined,
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
|
+
function rethrowIfCancelled(signal) {
|
|
21
|
+
if (signal?.aborted) {
|
|
22
|
+
throw signal.reason instanceof Error ? signal.reason : new Error('Mem0 request cancelled.');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
20
25
|
export function createMem0Tools(provider, userId) {
|
|
21
26
|
const searchTool = {
|
|
22
27
|
name: 'mem0_search',
|
|
@@ -27,13 +32,17 @@ export function createMem0Tools(provider, userId) {
|
|
|
27
32
|
query: Type.String({ description: 'What to search for.' }),
|
|
28
33
|
top_k: Type.Optional(Type.Number({ description: 'Max results (default: 10, max: 50).' })),
|
|
29
34
|
}),
|
|
30
|
-
async execute(_toolCallId, params) {
|
|
35
|
+
async execute(_toolCallId, params, signal) {
|
|
31
36
|
const query = String(params.query ?? '');
|
|
32
37
|
const topK = Math.min(Number(params.top_k) || 10, 50);
|
|
33
38
|
if (!query)
|
|
34
39
|
return textResult(JSON.stringify({ error: 'Query cannot be empty.' }));
|
|
35
40
|
try {
|
|
36
|
-
const results = await provider.search(query, {
|
|
41
|
+
const results = await provider.search(query, {
|
|
42
|
+
userId,
|
|
43
|
+
topK,
|
|
44
|
+
...(signal ? { signal } : {}),
|
|
45
|
+
});
|
|
37
46
|
if (results.length === 0) {
|
|
38
47
|
return textResult(JSON.stringify({ result: 'No relevant memories found.' }));
|
|
39
48
|
}
|
|
@@ -45,10 +54,9 @@ export function createMem0Tools(provider, userId) {
|
|
|
45
54
|
count: results.length,
|
|
46
55
|
}));
|
|
47
56
|
}
|
|
48
|
-
catch
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}));
|
|
57
|
+
catch {
|
|
58
|
+
rethrowIfCancelled(signal);
|
|
59
|
+
throw new Error('Mem0 search failed.');
|
|
52
60
|
}
|
|
53
61
|
},
|
|
54
62
|
};
|
|
@@ -58,9 +66,9 @@ export function createMem0Tools(provider, userId) {
|
|
|
58
66
|
description: 'Retrieve all stored long-term memories about the user.',
|
|
59
67
|
promptSnippet: 'Full dump of all stored user memories.',
|
|
60
68
|
parameters: Type.Object({}),
|
|
61
|
-
async execute() {
|
|
69
|
+
async execute(_toolCallId, _params, signal) {
|
|
62
70
|
try {
|
|
63
|
-
const memories = await provider.getAll({ userId });
|
|
71
|
+
const memories = await provider.getAll({ userId, ...(signal ? { signal } : {}) });
|
|
64
72
|
if (memories.length === 0) {
|
|
65
73
|
return textResult(JSON.stringify({ result: 'No memories stored yet.' }));
|
|
66
74
|
}
|
|
@@ -70,10 +78,9 @@ export function createMem0Tools(provider, userId) {
|
|
|
70
78
|
.map(formatRecalledMemory);
|
|
71
79
|
return textResult(JSON.stringify({ result: lines.join('\n'), count: lines.length }));
|
|
72
80
|
}
|
|
73
|
-
catch
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}));
|
|
81
|
+
catch {
|
|
82
|
+
rethrowIfCancelled(signal);
|
|
83
|
+
throw new Error('Mem0 profile failed.');
|
|
77
84
|
}
|
|
78
85
|
},
|
|
79
86
|
};
|
|
@@ -85,7 +92,7 @@ export function createMem0Tools(provider, userId) {
|
|
|
85
92
|
parameters: Type.Object({
|
|
86
93
|
fact: Type.String({ description: 'The fact to store.' }),
|
|
87
94
|
}),
|
|
88
|
-
async execute(_toolCallId, params) {
|
|
95
|
+
async execute(_toolCallId, params, signal) {
|
|
89
96
|
const fact = String(params.fact ?? '').trim();
|
|
90
97
|
if (!fact)
|
|
91
98
|
return textResult(JSON.stringify({ error: 'Fact cannot be empty.' }));
|
|
@@ -93,13 +100,13 @@ export function createMem0Tools(provider, userId) {
|
|
|
93
100
|
const result = await provider.add([{ role: 'user', content: redactMemoryText(fact) }], {
|
|
94
101
|
userId,
|
|
95
102
|
infer: false,
|
|
103
|
+
...(signal ? { signal } : {}),
|
|
96
104
|
});
|
|
97
105
|
return textResult(JSON.stringify(result ? { result: 'Fact stored.' } : { error: 'Failed to store.' }));
|
|
98
106
|
}
|
|
99
|
-
catch
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}));
|
|
107
|
+
catch {
|
|
108
|
+
rethrowIfCancelled(signal);
|
|
109
|
+
throw new Error('Mem0 save failed.');
|
|
103
110
|
}
|
|
104
111
|
},
|
|
105
112
|
};
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAwB,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACnG,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAkBtE,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS;QAC7B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YACb,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI;SACxC,CAAC;QACJ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IACnB,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAClD,OAAO,EAAE,SAAS;KACnB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAsB,EAAE,MAAc;IACpE,MAAM,UAAU,GAAmB;QACjC,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,MAAM;QACb,WAAW,EACT,oFAAoF;QACtF,aAAa,EAAE,+CAA+C;QAC9D,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;YACtB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;YAC1D,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,qCAAqC,EAAE,CAAC,CAAC;SAC1F,CAAC;QACF,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Configuration types for pi-memory-mem0.
|
|
3
3
|
*/
|
|
4
|
-
export type Mem0Mode = 'platform' | '
|
|
4
|
+
export type Mem0Mode = 'platform' | 'embedded' | 'self-hosted';
|
|
5
|
+
export type MemoryUserIdScope = 'project' | 'exact';
|
|
5
6
|
export interface Mem0ExtensionConfig {
|
|
6
|
-
/**
|
|
7
|
+
/** Mem0 Cloud, in-process OSS, or a remote OSS server. Default: "platform". */
|
|
7
8
|
mode?: Mem0Mode;
|
|
8
|
-
/** Mem0
|
|
9
|
+
/** Mem0 API key. Supports ${MEM0_API_KEY}. */
|
|
9
10
|
apiKey?: string;
|
|
10
|
-
/**
|
|
11
|
+
/** Platform override or required self-hosted OSS server URL. */
|
|
11
12
|
baseUrl?: string;
|
|
13
|
+
/** Remote request timeout in milliseconds. Default: 30000. */
|
|
14
|
+
requestTimeoutMs?: number;
|
|
12
15
|
oss?: {
|
|
13
16
|
embedder?: {
|
|
14
17
|
provider: string;
|
|
@@ -33,10 +36,12 @@ export interface Mem0ExtensionConfig {
|
|
|
33
36
|
};
|
|
34
37
|
/** User identifier for memory scoping. Supports ${USER}. */
|
|
35
38
|
userId?: string;
|
|
39
|
+
/** Append a cwd hash (default) or use userId verbatim. */
|
|
40
|
+
userIdScope?: MemoryUserIdScope;
|
|
36
41
|
/** Max recalled memories per turn. Default: 5 */
|
|
37
42
|
topK?: number;
|
|
38
43
|
/**
|
|
39
|
-
* When true (default),
|
|
44
|
+
* When true (default), embedded mode will attempt to resolve API keys from
|
|
40
45
|
* pi's model registry instead of requiring separate env vars.
|
|
41
46
|
* Falls back to OPENAI_API_KEY / DEEPSEEK_API_KEY env vars if registry lookup fails.
|
|
42
47
|
*/
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC;AAC/D,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAAC;AAEpD,MAAM,WAAW,mBAAmB;IAClC,+EAA+E;IAC/E,IAAI,CAAC,EAAE,QAAQ,CAAC;IAGhB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,GAAG,CAAC,EAAE;QACJ,QAAQ,CAAC,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC;QAClE,GAAG,CAAC,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC;QAC7D,WAAW,CAAC,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC;QACrE,wFAAwF;QACxF,YAAY,CAAC,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC;QACtE,oFAAoF;QACpF,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;IAGF,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amaster.ai/pi-memory-mem0",
|
|
3
|
-
"version": "0.1.2-beta.
|
|
4
|
-
"description": "Explicit Mem0 semantic memory tools for pi — Platform
|
|
3
|
+
"version": "0.1.2-beta.55",
|
|
4
|
+
"description": "Explicit Mem0 semantic memory tools for pi — Platform, embedded, or self-hosted.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package",
|
|
7
7
|
"pi",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
56
|
"mem0ai": "3.0.7",
|
|
57
|
-
"@amaster.ai/pi-shared": "0.1.2-beta.
|
|
57
|
+
"@amaster.ai/pi-shared": "0.1.2-beta.55"
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
60
60
|
"@earendil-works/pi-coding-agent": ">=0.79.1",
|