@amaster.ai/pi-memory-mem0 0.1.2-beta.29 → 0.1.2-beta.31
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 +80 -60
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +49 -16
- package/dist/index.js.map +1 -1
- package/dist/provider.d.ts +45 -2
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +205 -15
- package/dist/provider.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/sync.d.ts +0 -16
- package/dist/sync.d.ts.map +0 -1
- package/dist/sync.js +0 -40
- package/dist/sync.js.map +0 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|

|
|
4
4
|
|
|
5
|
-
Passive semantic memory extension powered by [Mem0](https://mem0.ai) — supports both Platform (cloud) and Open-Source (local
|
|
5
|
+
Passive semantic memory extension powered by [Mem0](https://mem0.ai) — supports both Platform (cloud) and Open-Source (local) modes.
|
|
6
6
|
|
|
7
7
|
## How It Works
|
|
8
8
|
|
|
@@ -12,10 +12,23 @@ After each conversation turn, user + assistant messages are automatically sent t
|
|
|
12
12
|
|
|
13
13
|
## Two Modes
|
|
14
14
|
|
|
15
|
-
| Mode |
|
|
16
|
-
|
|
17
|
-
| `platform` | Mem0 Cloud | `MEM0_API_KEY` | Quick start, multi-device sync |
|
|
18
|
-
| `open-source` |
|
|
15
|
+
| Mode | Vector Store | Persistence | Dependencies | Use Case |
|
|
16
|
+
|------|-------------|-------------|--------------|----------|
|
|
17
|
+
| `platform` | Mem0 Cloud | Cloud-managed | `MEM0_API_KEY` | Quick start, multi-device sync |
|
|
18
|
+
| `open-source` | In-memory | SQLite snapshot | LLM + Embedding API | Data privacy, no external services |
|
|
19
|
+
|
|
20
|
+
## Architecture (Open-Source Mode)
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
User ←→ Agent ←→ Mem0 Memory (in-memory vector search)
|
|
24
|
+
↕
|
|
25
|
+
SQLite Snapshot Store (disk persistence)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
- **Vector search**: `mem0ai` OSS `MemoryVectorStore` (in-memory cosine similarity)
|
|
29
|
+
- **LLM extraction**: Configured provider extracts facts from conversations
|
|
30
|
+
- **Persistence**: After each `add()`, all memories are asynchronously snapshotted to SQLite. On restart, memories are restored from the snapshot.
|
|
31
|
+
- **Provider mapping**: Custom providers are automatically mapped to mem0-compatible providers (e.g. `openai`) via the pi model registry's `api` field.
|
|
19
32
|
|
|
20
33
|
## Quick Start
|
|
21
34
|
|
|
@@ -33,7 +46,7 @@ After each conversation turn, user + assistant messages are automatically sent t
|
|
|
33
46
|
|
|
34
47
|
### Open-Source Mode (Recommended)
|
|
35
48
|
|
|
36
|
-
Reuses API keys from pi's configured model providers
|
|
49
|
+
Reuses API keys and base URLs from pi's configured model providers — **no extra environment variables needed**.
|
|
37
50
|
|
|
38
51
|
```json
|
|
39
52
|
{
|
|
@@ -44,29 +57,35 @@ Reuses API keys from pi's configured model providers by default — **no extra e
|
|
|
44
57
|
}
|
|
45
58
|
```
|
|
46
59
|
|
|
47
|
-
Defaults to OpenAI `text-embedding-3-small` (embedding) + `gpt-4.1-nano` (extraction). API keys are automatically resolved from pi's model registry.
|
|
60
|
+
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.
|
|
61
|
+
|
|
62
|
+
### Custom Provider
|
|
48
63
|
|
|
49
|
-
|
|
64
|
+
When your model registry defines a custom provider with `api: "openai-completions"`, you can use it directly:
|
|
50
65
|
|
|
51
66
|
```json
|
|
52
67
|
{
|
|
53
68
|
"pi-memory-mem0": {
|
|
54
69
|
"mode": "open-source",
|
|
55
|
-
"userId": "${USER}",
|
|
56
70
|
"oss": {
|
|
57
71
|
"llm": {
|
|
58
|
-
"provider": "
|
|
59
|
-
"config": { "model": "deepseek-
|
|
72
|
+
"provider": "my-provider",
|
|
73
|
+
"config": { "model": "deepseek-v4-pro" }
|
|
60
74
|
},
|
|
61
75
|
"embedder": {
|
|
62
|
-
"provider": "
|
|
63
|
-
"config": { "model": "text-embedding-
|
|
76
|
+
"provider": "my-provider",
|
|
77
|
+
"config": { "model": "text-embedding-v4" }
|
|
64
78
|
}
|
|
65
79
|
}
|
|
66
80
|
}
|
|
67
81
|
}
|
|
68
82
|
```
|
|
69
83
|
|
|
84
|
+
The extension automatically:
|
|
85
|
+
1. Resolves API key from the model registry
|
|
86
|
+
2. Injects `baseUrl` from the registry
|
|
87
|
+
3. Maps `api: "openai-completions"` → mem0 provider `"openai"`
|
|
88
|
+
|
|
70
89
|
### Fully Local (Ollama)
|
|
71
90
|
|
|
72
91
|
```json
|
|
@@ -89,6 +108,28 @@ Defaults to OpenAI `text-embedding-3-small` (embedding) + `gpt-4.1-nano` (extrac
|
|
|
89
108
|
}
|
|
90
109
|
```
|
|
91
110
|
|
|
111
|
+
### External Vector Store (e.g. Qdrant)
|
|
112
|
+
|
|
113
|
+
For production workloads that need a dedicated vector database:
|
|
114
|
+
|
|
115
|
+
```json
|
|
116
|
+
{
|
|
117
|
+
"pi-memory-mem0": {
|
|
118
|
+
"mode": "open-source",
|
|
119
|
+
"oss": {
|
|
120
|
+
"vectorStore": {
|
|
121
|
+
"provider": "qdrant",
|
|
122
|
+
"config": { "url": "http://localhost:6333" }
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Supported vector store providers: `memory` (default), `qdrant`, `redis`, `pgvector`, `supabase`.
|
|
130
|
+
|
|
131
|
+
When using an external vector store, the SQLite snapshot is not needed (the vector store handles its own persistence).
|
|
132
|
+
|
|
92
133
|
## Configuration Reference
|
|
93
134
|
|
|
94
135
|
| Field | Type | Default | Description |
|
|
@@ -101,71 +142,50 @@ Defaults to OpenAI `text-embedding-3-small` (embedding) + `gpt-4.1-nano` (extrac
|
|
|
101
142
|
| `useRegistryKeys` | boolean | `true` | Whether OSS mode resolves keys from pi registry |
|
|
102
143
|
| `oss.llm` | object | OpenAI gpt-4.1-nano | OSS extraction model |
|
|
103
144
|
| `oss.embedder` | object | OpenAI text-embedding-3-small | OSS embedding model |
|
|
104
|
-
| `oss.vectorStore` | object |
|
|
105
|
-
| `oss.
|
|
145
|
+
| `oss.vectorStore` | object | `memory` (in-memory) | Custom vector store config |
|
|
146
|
+
| `oss.snapshotDbPath` | string | `<home>/memories/mem0-snapshot.db` | SQLite snapshot file path |
|
|
147
|
+
| `oss.disableHistory` | boolean | `false` | Disable mem0 operation history |
|
|
106
148
|
|
|
107
|
-
##
|
|
149
|
+
## Data Storage
|
|
108
150
|
|
|
109
|
-
|
|
151
|
+
| Mode | Vector Data | Snapshot | History |
|
|
152
|
+
|------|-------------|----------|---------|
|
|
153
|
+
| Platform | Mem0 Cloud | N/A | Cloud-managed |
|
|
154
|
+
| Open-Source (default) | In-memory | `<home>/memories/mem0-snapshot.db` | `~/.mem0/history.db` |
|
|
155
|
+
| Open-Source (qdrant) | Qdrant server | Not used | `~/.mem0/history.db` |
|
|
110
156
|
|
|
111
|
-
|
|
157
|
+
The `home` directory is resolved by the host application and passed via `CreateProviderOptions.homeDir`.
|
|
112
158
|
|
|
113
|
-
|
|
159
|
+
## Provider Mapping
|
|
114
160
|
|
|
115
|
-
|
|
116
|
-
{
|
|
117
|
-
"pnpm": {
|
|
118
|
-
"onlyBuiltDependencies": ["better-sqlite3"]
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
```
|
|
161
|
+
When a provider name doesn't match mem0's built-in list, the extension uses the model registry's `api` field to map it:
|
|
122
162
|
|
|
123
|
-
|
|
163
|
+
| Registry `api` field | Mapped to mem0 provider |
|
|
164
|
+
|---------------------|------------------------|
|
|
165
|
+
| `openai-completions`, `openai-responses` | `openai` |
|
|
166
|
+
| `anthropic-messages` | `anthropic` |
|
|
167
|
+
| `azure-*` | `azure_openai` |
|
|
168
|
+
| `google-*`, `gemini-*` | `gemini` |
|
|
124
169
|
|
|
125
|
-
|
|
170
|
+
This happens transparently — just configure the provider name as it appears in your `models.json`.
|
|
126
171
|
|
|
127
|
-
##
|
|
128
|
-
|
|
129
|
-
| Mode | Location |
|
|
130
|
-
|------|----------|
|
|
131
|
-
| Platform | Mem0 Cloud (api.mem0.ai) |
|
|
132
|
-
| Open-Source | `~/.pi/agent/memories/mem0.db` (SQLite, alongside pi-memory's MEMORY.md/USER.md) |
|
|
133
|
-
|
|
134
|
-
Customizable via `oss.vectorStore.config.dbPath`. The `PI_AGENT_HOME` environment variable changes the default directory.
|
|
135
|
-
|
|
136
|
-
## API Key Resolution (OSS Mode)
|
|
137
|
-
|
|
138
|
-
LLM and Embedder API keys are **resolved independently**, in this order:
|
|
139
|
-
|
|
140
|
-
1. Explicit config in `oss.llm.config.apiKey` / `oss.embedder.config.apiKey`
|
|
141
|
-
2. Pi model registry key for the corresponding provider (when `useRegistryKeys: true`)
|
|
142
|
-
3. Environment variables (`OPENAI_API_KEY`, `DEEPSEEK_API_KEY`, etc. — read by mem0 SDK internally)
|
|
172
|
+
## Installation Notes
|
|
143
173
|
|
|
144
|
-
|
|
174
|
+
Open-Source mode depends on `better-sqlite3` (native addon, transitive dependency of `mem0ai`) for history and snapshot persistence.
|
|
145
175
|
|
|
146
|
-
|
|
176
|
+
**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.
|
|
147
177
|
|
|
148
|
-
If your
|
|
178
|
+
**For standalone users**: If your project's pnpm config blocks build scripts, add to your root `package.json`:
|
|
149
179
|
|
|
150
180
|
```json
|
|
151
181
|
{
|
|
152
|
-
"
|
|
153
|
-
"
|
|
154
|
-
"oss": {
|
|
155
|
-
"llm": {
|
|
156
|
-
"provider": "openai",
|
|
157
|
-
"config": { "model": "deepseek-v4", "baseUrl": "https://credits.amaster.ai/v1" }
|
|
158
|
-
},
|
|
159
|
-
"embedder": {
|
|
160
|
-
"provider": "openai",
|
|
161
|
-
"config": { "model": "text-embedding-3-small", "baseUrl": "https://credits.amaster.ai/v1" }
|
|
162
|
-
}
|
|
163
|
-
}
|
|
182
|
+
"pnpm": {
|
|
183
|
+
"onlyBuiltDependencies": ["better-sqlite3"]
|
|
164
184
|
}
|
|
165
185
|
}
|
|
166
186
|
```
|
|
167
187
|
|
|
168
|
-
|
|
188
|
+
**Graceful degradation**: If `better-sqlite3` fails to load (e.g. Node version mismatch in Electron), the extension still works — history and snapshot are automatically disabled, running in pure in-memory mode.
|
|
169
189
|
|
|
170
190
|
## Tools
|
|
171
191
|
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AA0BpE,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAwK5D"}
|
package/dist/index.js
CHANGED
|
@@ -8,10 +8,9 @@
|
|
|
8
8
|
* Configuration via settings.json key "pi-memory-mem0".
|
|
9
9
|
* Supports ${ENV_VAR:-fallback} in all string values.
|
|
10
10
|
*/
|
|
11
|
-
import { loadPiSettings } from '@amaster.ai/pi-shared/settings';
|
|
11
|
+
import { loadPiSettings, resolveHome } from '@amaster.ai/pi-shared/settings';
|
|
12
12
|
import { Prefetch } from './prefetch.js';
|
|
13
13
|
import { createMem0Provider } from './provider.js';
|
|
14
|
-
import { TurnSync } from './sync.js';
|
|
15
14
|
import { createMem0Tools } from './tools.js';
|
|
16
15
|
const SETTINGS_KEY = 'pi-memory-mem0';
|
|
17
16
|
const STATUS_KEY = 'mem0';
|
|
@@ -36,8 +35,10 @@ function resolveUserId(configUserId) {
|
|
|
36
35
|
}
|
|
37
36
|
export default function mem0Extension(pi) {
|
|
38
37
|
let provider;
|
|
39
|
-
let sync;
|
|
40
38
|
let prefetch;
|
|
39
|
+
let userId = '';
|
|
40
|
+
let lastUserText = '';
|
|
41
|
+
let syncing = false;
|
|
41
42
|
pi.on('session_start', async (_event, ctx) => {
|
|
42
43
|
const config = loadConfig(ctx.cwd);
|
|
43
44
|
const mode = config.mode ?? 'platform';
|
|
@@ -49,12 +50,26 @@ export default function mem0Extension(pi) {
|
|
|
49
50
|
try {
|
|
50
51
|
provider = await createMem0Provider({
|
|
51
52
|
config,
|
|
52
|
-
|
|
53
|
+
homeDir: resolveHome(),
|
|
54
|
+
resolveProvider: async (providerName) => {
|
|
53
55
|
const registry = ctx.modelRegistry;
|
|
54
|
-
if (registry.getApiKeyForProvider)
|
|
55
|
-
return
|
|
56
|
+
if (!registry.getApiKeyForProvider)
|
|
57
|
+
return undefined;
|
|
58
|
+
let model;
|
|
59
|
+
if (registry.getAll) {
|
|
60
|
+
model = registry.getAll().find((m) => m.provider === providerName);
|
|
56
61
|
}
|
|
57
|
-
|
|
62
|
+
const apiKey = await registry.getApiKeyForProvider(providerName);
|
|
63
|
+
if (!apiKey && !model)
|
|
64
|
+
return undefined;
|
|
65
|
+
const result = {};
|
|
66
|
+
if (apiKey)
|
|
67
|
+
result.apiKey = apiKey;
|
|
68
|
+
if (model?.baseUrl)
|
|
69
|
+
result.baseUrl = model.baseUrl;
|
|
70
|
+
if (model?.api)
|
|
71
|
+
result.api = model.api;
|
|
72
|
+
return result;
|
|
58
73
|
},
|
|
59
74
|
});
|
|
60
75
|
}
|
|
@@ -63,8 +78,7 @@ export default function mem0Extension(pi) {
|
|
|
63
78
|
ctx.ui.notify(`Mem0 init failed: ${err instanceof Error ? err.message : String(err)}`, 'error');
|
|
64
79
|
return;
|
|
65
80
|
}
|
|
66
|
-
|
|
67
|
-
sync = new TurnSync(provider, userId);
|
|
81
|
+
userId = resolveUserId(config.userId);
|
|
68
82
|
prefetch = new Prefetch(provider, userId, {
|
|
69
83
|
topK: config.topK ?? 5,
|
|
70
84
|
});
|
|
@@ -73,18 +87,36 @@ export default function mem0Extension(pi) {
|
|
|
73
87
|
pi.registerTool(tool);
|
|
74
88
|
}
|
|
75
89
|
});
|
|
90
|
+
pi.on('input', async (event) => {
|
|
91
|
+
if (!prefetch)
|
|
92
|
+
return;
|
|
93
|
+
const text = event.text ?? '';
|
|
94
|
+
if (text) {
|
|
95
|
+
prefetch.queue(text);
|
|
96
|
+
lastUserText = text;
|
|
97
|
+
}
|
|
98
|
+
});
|
|
76
99
|
pi.on('turn_end', async (event) => {
|
|
77
|
-
if (!
|
|
100
|
+
if (!provider || !lastUserText)
|
|
78
101
|
return;
|
|
79
102
|
const msg = event.message;
|
|
80
103
|
const text = extractText(msg);
|
|
81
|
-
if (!text)
|
|
104
|
+
if (!text || msg.role !== 'assistant')
|
|
82
105
|
return;
|
|
83
|
-
if (
|
|
84
|
-
|
|
106
|
+
if (!syncing) {
|
|
107
|
+
syncing = true;
|
|
108
|
+
const userText = lastUserText;
|
|
109
|
+
lastUserText = '';
|
|
110
|
+
provider
|
|
111
|
+
.add([
|
|
112
|
+
{ role: 'user', content: userText },
|
|
113
|
+
{ role: 'assistant', content: text },
|
|
114
|
+
], { userId })
|
|
115
|
+
.catch(() => { })
|
|
116
|
+
.finally(() => {
|
|
117
|
+
syncing = false;
|
|
118
|
+
});
|
|
85
119
|
}
|
|
86
|
-
// Buffer messages for paired sync
|
|
87
|
-
sync.onMessage(msg.role ?? '', text);
|
|
88
120
|
});
|
|
89
121
|
pi.on('before_agent_start', async (event) => {
|
|
90
122
|
if (!prefetch)
|
|
@@ -98,8 +130,9 @@ export default function mem0Extension(pi) {
|
|
|
98
130
|
});
|
|
99
131
|
pi.on('session_shutdown', async () => {
|
|
100
132
|
provider = undefined;
|
|
101
|
-
sync = undefined;
|
|
102
133
|
prefetch = undefined;
|
|
134
|
+
lastUserText = '';
|
|
135
|
+
syncing = false;
|
|
103
136
|
});
|
|
104
137
|
pi.registerCommand('mem0', {
|
|
105
138
|
description: 'Mem0 memory commands. Subcommands: status, search <query>, profile.',
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/provider.d.ts
CHANGED
|
@@ -3,7 +3,11 @@
|
|
|
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:
|
|
6
|
+
* - OSS mode: in-memory vector store + LLM extraction via configured provider
|
|
7
|
+
*
|
|
8
|
+
* In OSS mode, a SQLite snapshot layer persists memories to disk so they survive
|
|
9
|
+
* process restarts. On init, memories are restored from SQLite into the in-memory
|
|
10
|
+
* vector store. After each add(), a full snapshot is asynchronously written back.
|
|
7
11
|
*/
|
|
8
12
|
import type { AddResult, Mem0ExtensionConfig, MemoryItem } from './types.js';
|
|
9
13
|
export interface Mem0Provider {
|
|
@@ -22,12 +26,51 @@ export interface Mem0Provider {
|
|
|
22
26
|
userId: string;
|
|
23
27
|
}): Promise<MemoryItem[]>;
|
|
24
28
|
}
|
|
29
|
+
export declare class SqliteSnapshotStore {
|
|
30
|
+
private db;
|
|
31
|
+
constructor(dbPath: string);
|
|
32
|
+
loadAll(userId: string): Array<{
|
|
33
|
+
id: string;
|
|
34
|
+
memory: string;
|
|
35
|
+
created_at?: string;
|
|
36
|
+
updated_at?: string;
|
|
37
|
+
}>;
|
|
38
|
+
loadAllUsers(): Array<{
|
|
39
|
+
userId: string;
|
|
40
|
+
items: Array<{
|
|
41
|
+
id: string;
|
|
42
|
+
memory: string;
|
|
43
|
+
}>;
|
|
44
|
+
}>;
|
|
45
|
+
replaceAll(userId: string, items: MemoryItem[]): void;
|
|
46
|
+
close(): void;
|
|
47
|
+
static tryCreate(dbPath: string): SqliteSnapshotStore | null;
|
|
48
|
+
}
|
|
25
49
|
/** Optional key resolver — pulls API keys from pi's model registry. */
|
|
26
50
|
export type KeyResolver = (provider: string) => Promise<string | undefined>;
|
|
51
|
+
/** Resolved provider info from the model registry. */
|
|
52
|
+
export interface ResolvedProviderInfo {
|
|
53
|
+
apiKey?: string;
|
|
54
|
+
baseUrl?: string;
|
|
55
|
+
/** API type from model registry, e.g. "openai-completions", "anthropic-messages" */
|
|
56
|
+
api?: string;
|
|
57
|
+
}
|
|
58
|
+
/** Full provider resolver — returns key, baseUrl, and api type from the model registry. */
|
|
59
|
+
export type ProviderResolver = (provider: string) => Promise<ResolvedProviderInfo | undefined>;
|
|
60
|
+
/**
|
|
61
|
+
* Maps a pi model registry `api` field to a mem0-compatible provider name.
|
|
62
|
+
* mem0ai supports: openai, ollama, lmstudio, google/gemini, azure_openai, langchain (embedder)
|
|
63
|
+
* openai, anthropic, groq, ollama, lmstudio, google/gemini, azure_openai, mistral, deepseek, langchain (llm)
|
|
64
|
+
*/
|
|
65
|
+
export declare function mapApiToMem0Provider(api: string | undefined, fallback: string): string;
|
|
27
66
|
export interface CreateProviderOptions {
|
|
28
67
|
config: Mem0ExtensionConfig;
|
|
29
|
-
/** Resolve API key from pi model registry by provider name. */
|
|
68
|
+
/** Resolve API key from pi model registry by provider name. @deprecated Use resolveProvider instead. */
|
|
30
69
|
resolveKey?: KeyResolver;
|
|
70
|
+
/** Full provider resolver — returns key, baseUrl, and api type from the model registry. */
|
|
71
|
+
resolveProvider?: ProviderResolver;
|
|
72
|
+
/** Home directory for default snapshot db path. Falls back to ~/.amaster */
|
|
73
|
+
homeDir?: string;
|
|
31
74
|
}
|
|
32
75
|
export declare function createMem0Provider(opts: CreateProviderOptions): Promise<Mem0Provider>;
|
|
33
76
|
//# sourceMappingURL=provider.d.ts.map
|
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;;;;;;;;;;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,CAAA;KAAE,GACxC,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;CACzD;AAyGD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,EAAE,CAAiB;gBAEf,MAAM,EAAE,MAAM;IAmB1B,OAAO,CACL,MAAM,EAAE,MAAM,GACb,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAMlF,YAAY,IAAI,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IAgBvF,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI;IAcrD,KAAK,IAAI,IAAI;IAQb,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;CAO7D;AAMD,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;AA0MD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,wGAAwG;IACxG,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,2FAA2F;IAC3F,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CAuB3F"}
|
package/dist/provider.js
CHANGED
|
@@ -3,10 +3,15 @@
|
|
|
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:
|
|
6
|
+
* - OSS mode: in-memory vector store + LLM extraction via configured provider
|
|
7
|
+
*
|
|
8
|
+
* In OSS mode, a SQLite snapshot layer persists memories to disk so they survive
|
|
9
|
+
* process restarts. On init, memories are restored from SQLite into the in-memory
|
|
10
|
+
* vector store. After each add(), a full snapshot is asynchronously written back.
|
|
7
11
|
*/
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
12
|
+
import { mkdirSync } from 'node:fs';
|
|
13
|
+
import { createRequire } from 'node:module';
|
|
14
|
+
import { dirname, join } from 'node:path';
|
|
10
15
|
// ---------------------------------------------------------------------------
|
|
11
16
|
// Normalizers
|
|
12
17
|
// ---------------------------------------------------------------------------
|
|
@@ -84,14 +89,106 @@ class PlatformProvider {
|
|
|
84
89
|
return normalizeResults(results);
|
|
85
90
|
}
|
|
86
91
|
}
|
|
92
|
+
export class SqliteSnapshotStore {
|
|
93
|
+
db;
|
|
94
|
+
constructor(dbPath) {
|
|
95
|
+
mkdirSync(dirname(dbPath), { recursive: true });
|
|
96
|
+
const req = createRequire(import.meta.url);
|
|
97
|
+
const mem0OssPath = req.resolve('mem0ai/oss');
|
|
98
|
+
const reqFromMem0 = createRequire(mem0OssPath);
|
|
99
|
+
const BS3 = reqFromMem0('better-sqlite3');
|
|
100
|
+
this.db = new BS3(dbPath);
|
|
101
|
+
this.db.pragma('journal_mode = WAL');
|
|
102
|
+
this.db.exec(`
|
|
103
|
+
CREATE TABLE IF NOT EXISTS memories (
|
|
104
|
+
id TEXT PRIMARY KEY,
|
|
105
|
+
user_id TEXT NOT NULL,
|
|
106
|
+
memory TEXT NOT NULL,
|
|
107
|
+
created_at TEXT,
|
|
108
|
+
updated_at TEXT
|
|
109
|
+
)
|
|
110
|
+
`);
|
|
111
|
+
}
|
|
112
|
+
loadAll(userId) {
|
|
113
|
+
return this.db
|
|
114
|
+
.prepare('SELECT id, memory, created_at, updated_at FROM memories WHERE user_id = ?')
|
|
115
|
+
.all(userId);
|
|
116
|
+
}
|
|
117
|
+
loadAllUsers() {
|
|
118
|
+
const rows = this.db
|
|
119
|
+
.prepare('SELECT user_id, id, memory FROM memories')
|
|
120
|
+
.all();
|
|
121
|
+
const grouped = new Map();
|
|
122
|
+
for (const row of rows) {
|
|
123
|
+
let list = grouped.get(row.user_id);
|
|
124
|
+
if (!list) {
|
|
125
|
+
list = [];
|
|
126
|
+
grouped.set(row.user_id, list);
|
|
127
|
+
}
|
|
128
|
+
list.push({ id: row.id, memory: row.memory });
|
|
129
|
+
}
|
|
130
|
+
return Array.from(grouped.entries()).map(([userId, items]) => ({ userId, items }));
|
|
131
|
+
}
|
|
132
|
+
replaceAll(userId, items) {
|
|
133
|
+
const del = this.db.prepare('DELETE FROM memories WHERE user_id = ?');
|
|
134
|
+
const ins = this.db.prepare('INSERT OR REPLACE INTO memories (id, user_id, memory, created_at, updated_at) VALUES (?, ?, ?, ?, ?)');
|
|
135
|
+
const tx = this.db.transaction(() => {
|
|
136
|
+
del.run(userId);
|
|
137
|
+
for (const item of items) {
|
|
138
|
+
ins.run(item.id, userId, item.memory, item.created_at ?? null, item.updated_at ?? null);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
tx();
|
|
142
|
+
}
|
|
143
|
+
close() {
|
|
144
|
+
try {
|
|
145
|
+
this.db.close();
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
/* ignore */
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
static tryCreate(dbPath) {
|
|
152
|
+
try {
|
|
153
|
+
return new SqliteSnapshotStore(dbPath);
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Maps a pi model registry `api` field to a mem0-compatible provider name.
|
|
162
|
+
* mem0ai supports: openai, ollama, lmstudio, google/gemini, azure_openai, langchain (embedder)
|
|
163
|
+
* openai, anthropic, groq, ollama, lmstudio, google/gemini, azure_openai, mistral, deepseek, langchain (llm)
|
|
164
|
+
*/
|
|
165
|
+
export function mapApiToMem0Provider(api, fallback) {
|
|
166
|
+
if (!api)
|
|
167
|
+
return fallback;
|
|
168
|
+
if (api.startsWith('openai'))
|
|
169
|
+
return 'openai';
|
|
170
|
+
if (api.startsWith('anthropic'))
|
|
171
|
+
return 'anthropic';
|
|
172
|
+
if (api.startsWith('azure'))
|
|
173
|
+
return 'azure_openai';
|
|
174
|
+
if (api.startsWith('google') || api.startsWith('gemini'))
|
|
175
|
+
return 'gemini';
|
|
176
|
+
return fallback;
|
|
177
|
+
}
|
|
87
178
|
class OSSProvider {
|
|
88
179
|
ossConfig;
|
|
89
180
|
resolveKey;
|
|
181
|
+
resolveProvider;
|
|
182
|
+
snapshotDbPath;
|
|
90
183
|
memory;
|
|
91
184
|
initPromise = null;
|
|
92
|
-
|
|
185
|
+
snapshot = null;
|
|
186
|
+
syncingSnapshot = false;
|
|
187
|
+
constructor(ossConfig, resolveKey, resolveProvider, snapshotDbPath) {
|
|
93
188
|
this.ossConfig = ossConfig;
|
|
94
189
|
this.resolveKey = resolveKey;
|
|
190
|
+
this.resolveProvider = resolveProvider;
|
|
191
|
+
this.snapshotDbPath = snapshotDbPath;
|
|
95
192
|
}
|
|
96
193
|
async ensureMemory() {
|
|
97
194
|
if (this.memory)
|
|
@@ -105,18 +202,41 @@ class OSSProvider {
|
|
|
105
202
|
const config = {};
|
|
106
203
|
const defaultEmbedder = { provider: 'openai', config: { model: 'text-embedding-3-small' } };
|
|
107
204
|
const defaultLlm = { provider: 'openai', config: { model: 'gpt-4.1-nano' } };
|
|
108
|
-
|
|
205
|
+
let embedderProvider = this.ossConfig?.embedder?.provider || defaultEmbedder.provider;
|
|
109
206
|
const embedderCfg = {
|
|
110
207
|
...defaultEmbedder.config,
|
|
111
208
|
...(this.ossConfig?.embedder?.config ?? {}),
|
|
112
209
|
};
|
|
113
|
-
|
|
210
|
+
let llmProvider = this.ossConfig?.llm?.provider || defaultLlm.provider;
|
|
114
211
|
const llmCfg = {
|
|
115
212
|
...defaultLlm.config,
|
|
116
213
|
...(this.ossConfig?.llm?.config ?? {}),
|
|
117
214
|
};
|
|
118
|
-
// Resolve
|
|
119
|
-
if (this.
|
|
215
|
+
// Resolve provider info (apiKey + baseUrl + api) from pi model registry
|
|
216
|
+
if (this.resolveProvider) {
|
|
217
|
+
if (!embedderCfg.apiKey && !embedderCfg.api_key) {
|
|
218
|
+
const info = await this.resolveProvider(embedderProvider);
|
|
219
|
+
if (info) {
|
|
220
|
+
if (info.apiKey)
|
|
221
|
+
embedderCfg.apiKey = info.apiKey;
|
|
222
|
+
if (info.baseUrl)
|
|
223
|
+
embedderCfg.baseURL = info.baseUrl;
|
|
224
|
+
embedderProvider = mapApiToMem0Provider(info.api, embedderProvider);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
if (!llmCfg.apiKey && !llmCfg.api_key) {
|
|
228
|
+
const info = await this.resolveProvider(llmProvider);
|
|
229
|
+
if (info) {
|
|
230
|
+
if (info.apiKey)
|
|
231
|
+
llmCfg.apiKey = info.apiKey;
|
|
232
|
+
if (info.baseUrl)
|
|
233
|
+
llmCfg.baseURL = info.baseUrl;
|
|
234
|
+
llmProvider = mapApiToMem0Provider(info.api, llmProvider);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
else if (this.resolveKey) {
|
|
239
|
+
// Legacy fallback: only resolve API keys
|
|
120
240
|
if (!embedderCfg.apiKey && !embedderCfg.api_key) {
|
|
121
241
|
const key = await this.resolveKey(embedderProvider);
|
|
122
242
|
if (key)
|
|
@@ -134,10 +254,9 @@ class OSSProvider {
|
|
|
134
254
|
config.vectorStore = this.ossConfig.vectorStore;
|
|
135
255
|
}
|
|
136
256
|
else {
|
|
137
|
-
// Default: SQLite in <PI_AGENT_HOME>/memories/mem0.db (alongside pi-memory's files)
|
|
138
257
|
config.vectorStore = {
|
|
139
|
-
provider: '
|
|
140
|
-
config: {
|
|
258
|
+
provider: 'memory',
|
|
259
|
+
config: { collectionName: 'pi_mem0' },
|
|
141
260
|
};
|
|
142
261
|
}
|
|
143
262
|
if (this.ossConfig?.disableHistory) {
|
|
@@ -148,9 +267,77 @@ class OSSProvider {
|
|
|
148
267
|
async _init() {
|
|
149
268
|
const mod = await import('mem0ai/oss');
|
|
150
269
|
const Memory = mod.Memory ?? mod.default;
|
|
270
|
+
// Detect broken better-sqlite3 (Node version mismatch) — disable history if so
|
|
271
|
+
let sqliteOk = true;
|
|
272
|
+
if (!this.ossConfig?.disableHistory) {
|
|
273
|
+
try {
|
|
274
|
+
const req = createRequire(import.meta.url);
|
|
275
|
+
const mem0OssPath = req.resolve('mem0ai/oss');
|
|
276
|
+
const reqFromMem0 = createRequire(mem0OssPath);
|
|
277
|
+
const BS3 = reqFromMem0('better-sqlite3');
|
|
278
|
+
const testDb = new BS3(':memory:');
|
|
279
|
+
testDb.close();
|
|
280
|
+
}
|
|
281
|
+
catch {
|
|
282
|
+
sqliteOk = false;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
151
285
|
const builtConfig = await this._buildConfig();
|
|
152
|
-
|
|
153
|
-
|
|
286
|
+
if (!sqliteOk)
|
|
287
|
+
builtConfig.disableHistory = true;
|
|
288
|
+
let mem;
|
|
289
|
+
try {
|
|
290
|
+
mem = new Memory(builtConfig);
|
|
291
|
+
}
|
|
292
|
+
catch (err) {
|
|
293
|
+
if (sqliteOk && !this.ossConfig?.disableHistory) {
|
|
294
|
+
builtConfig.disableHistory = true;
|
|
295
|
+
mem = new Memory(builtConfig);
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
throw err;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
this.memory = mem;
|
|
302
|
+
// Initialize SQLite snapshot store for persistence
|
|
303
|
+
if (this.snapshotDbPath && sqliteOk) {
|
|
304
|
+
this.snapshot = SqliteSnapshotStore.tryCreate(this.snapshotDbPath);
|
|
305
|
+
}
|
|
306
|
+
// Restore memories from snapshot into the in-memory vector store
|
|
307
|
+
if (this.snapshot) {
|
|
308
|
+
const allUsers = this.snapshot.loadAllUsers();
|
|
309
|
+
let totalRestored = 0;
|
|
310
|
+
for (const { userId: uid, items } of allUsers) {
|
|
311
|
+
for (const item of items) {
|
|
312
|
+
try {
|
|
313
|
+
await mem.add([{ role: 'user', content: item.memory }], { userId: uid, infer: false });
|
|
314
|
+
totalRestored++;
|
|
315
|
+
}
|
|
316
|
+
catch {
|
|
317
|
+
/* skip failed restores */
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
if (totalRestored > 0) {
|
|
322
|
+
console.log(`[mem0] restored ${totalRestored} memories from snapshot`);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
await mem.getAll({ filters: { user_id: '__warmup__' } });
|
|
326
|
+
}
|
|
327
|
+
asyncSnapshotSync(userId) {
|
|
328
|
+
if (!this.snapshot || this.syncingSnapshot)
|
|
329
|
+
return;
|
|
330
|
+
this.syncingSnapshot = true;
|
|
331
|
+
this.memory
|
|
332
|
+
.getAll({ filters: { user_id: userId } })
|
|
333
|
+
.then((results) => {
|
|
334
|
+
const items = normalizeResults(results);
|
|
335
|
+
this.snapshot.replaceAll(userId, items);
|
|
336
|
+
})
|
|
337
|
+
.catch(() => { })
|
|
338
|
+
.finally(() => {
|
|
339
|
+
this.syncingSnapshot = false;
|
|
340
|
+
});
|
|
154
341
|
}
|
|
155
342
|
async add(messages, opts) {
|
|
156
343
|
await this.ensureMemory();
|
|
@@ -158,6 +345,7 @@ class OSSProvider {
|
|
|
158
345
|
if (opts.infer === false)
|
|
159
346
|
addOpts.infer = false;
|
|
160
347
|
const result = await this.memory.add(messages, addOpts);
|
|
348
|
+
this.asyncSnapshotSync(opts.userId);
|
|
161
349
|
return result;
|
|
162
350
|
}
|
|
163
351
|
async search(query, opts) {
|
|
@@ -179,11 +367,13 @@ class OSSProvider {
|
|
|
179
367
|
}
|
|
180
368
|
}
|
|
181
369
|
export async function createMem0Provider(opts) {
|
|
182
|
-
const { config, resolveKey } = opts;
|
|
370
|
+
const { config, resolveKey, resolveProvider, homeDir } = opts;
|
|
183
371
|
const mode = config.mode ?? 'platform';
|
|
184
372
|
if (mode === 'open-source') {
|
|
185
373
|
const useRegistry = config.useRegistryKeys !== false;
|
|
186
|
-
const
|
|
374
|
+
const snapshotDbPath = config.oss?.snapshotDbPath ??
|
|
375
|
+
(homeDir ? join(homeDir, 'memories', 'mem0-snapshot.db') : undefined);
|
|
376
|
+
const provider = new OSSProvider(config.oss, useRegistry ? resolveKey : undefined, useRegistry ? resolveProvider : undefined, snapshotDbPath);
|
|
187
377
|
await provider.ensureMemory();
|
|
188
378
|
return provider;
|
|
189
379
|
}
|
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/types.d.ts
CHANGED
|
@@ -22,6 +22,8 @@ export interface Mem0ExtensionConfig {
|
|
|
22
22
|
provider: string;
|
|
23
23
|
config?: Record<string, unknown>;
|
|
24
24
|
};
|
|
25
|
+
/** Path to SQLite file for memory snapshot persistence. Default: <home>/memories/mem0-snapshot.db */
|
|
26
|
+
snapshotDbPath?: string;
|
|
25
27
|
disableHistory?: boolean;
|
|
26
28
|
};
|
|
27
29
|
/** User identifier for memory scoping. Supports ${USER}. */
|
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;AAElD,MAAM,WAAW,mBAAmB;IAClC,oFAAoF;IACpF,IAAI,CAAC,EAAE,QAAQ,CAAC;IAGhB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,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,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;IAGF,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,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"}
|
|
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;AAElD,MAAM,WAAW,mBAAmB;IAClC,oFAAoF;IACpF,IAAI,CAAC,EAAE,QAAQ,CAAC;IAGhB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,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,qGAAqG;QACrG,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;IAGF,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,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,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amaster.ai/pi-memory-mem0",
|
|
3
|
-
"version": "0.1.2-beta.
|
|
3
|
+
"version": "0.1.2-beta.31",
|
|
4
4
|
"description": "Mem0 passive memory extension for pi — dual-mode: Platform (cloud) or Open-Source (local SQLite).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"mem0ai": "^3.0.6",
|
|
53
|
-
"@amaster.ai/pi-shared": "0.1.2-beta.
|
|
53
|
+
"@amaster.ai/pi-shared": "0.1.2-beta.31"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
56
|
"@earendil-works/pi-coding-agent": ">=0.74.0",
|
package/dist/sync.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Passive turn sync — sends conversation pairs to Mem0 for server-side extraction.
|
|
3
|
-
* Buffers user and assistant messages, syncs as pairs.
|
|
4
|
-
*/
|
|
5
|
-
import type { Mem0Provider } from './provider.js';
|
|
6
|
-
export declare class TurnSync {
|
|
7
|
-
private readonly provider;
|
|
8
|
-
private readonly userId;
|
|
9
|
-
private inflight;
|
|
10
|
-
private lastUserText;
|
|
11
|
-
constructor(provider: Mem0Provider, userId: string);
|
|
12
|
-
/** Buffer a message. When we have a user+assistant pair, sync it. */
|
|
13
|
-
onMessage(role: string, text: string): void;
|
|
14
|
-
private sync;
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=sync.d.ts.map
|
package/dist/sync.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAM;gBAEd,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IAKlD,qEAAqE;IACrE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAY3C,OAAO,CAAC,IAAI;CAiBb"}
|
package/dist/sync.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Passive turn sync — sends conversation pairs to Mem0 for server-side extraction.
|
|
3
|
-
* Buffers user and assistant messages, syncs as pairs.
|
|
4
|
-
*/
|
|
5
|
-
export class TurnSync {
|
|
6
|
-
provider;
|
|
7
|
-
userId;
|
|
8
|
-
inflight = false;
|
|
9
|
-
lastUserText = '';
|
|
10
|
-
constructor(provider, userId) {
|
|
11
|
-
this.provider = provider;
|
|
12
|
-
this.userId = userId;
|
|
13
|
-
}
|
|
14
|
-
/** Buffer a message. When we have a user+assistant pair, sync it. */
|
|
15
|
-
onMessage(role, text) {
|
|
16
|
-
if (role === 'user') {
|
|
17
|
-
this.lastUserText = text;
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
if (role === 'assistant' && text && this.lastUserText) {
|
|
21
|
-
this.sync(this.lastUserText, text);
|
|
22
|
-
this.lastUserText = '';
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
sync(userContent, assistantContent) {
|
|
26
|
-
if (this.inflight)
|
|
27
|
-
return;
|
|
28
|
-
this.inflight = true;
|
|
29
|
-
this.provider
|
|
30
|
-
.add([
|
|
31
|
-
{ role: 'user', content: userContent },
|
|
32
|
-
{ role: 'assistant', content: assistantContent },
|
|
33
|
-
], { userId: this.userId })
|
|
34
|
-
.catch(() => { })
|
|
35
|
-
.finally(() => {
|
|
36
|
-
this.inflight = false;
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=sync.js.map
|
package/dist/sync.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,OAAO,QAAQ;IACF,QAAQ,CAAe;IACvB,MAAM,CAAS;IACxB,QAAQ,GAAG,KAAK,CAAC;IACjB,YAAY,GAAG,EAAE,CAAC;IAE1B,YAAY,QAAsB,EAAE,MAAc;QAChD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,qEAAqE;IACrE,SAAS,CAAC,IAAY,EAAE,IAAY;QAClC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAEO,IAAI,CAAC,WAAmB,EAAE,gBAAwB;QACxD,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,QAAQ;aACV,GAAG,CACF;YACE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE;YACtC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE;SACjD,EACD,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACxB;aACA,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;aACf,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC,CAAC;IACP,CAAC;CACF"}
|