@amaster.ai/pi-memory-mem0 0.1.7 → 0.1.8
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 +7 -5
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -69
- package/dist/index.js.map +1 -1
- package/dist/privacy.d.ts +4 -0
- package/dist/privacy.d.ts.map +1 -0
- package/dist/privacy.js +21 -0
- package/dist/privacy.js.map +1 -0
- package/dist/tools.d.ts +1 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +22 -4
- package/dist/tools.js.map +1 -1
- package/package.json +3 -3
- package/dist/prefetch.d.ts +0 -19
- package/dist/prefetch.d.ts.map +0 -1
- package/dist/prefetch.js +0 -42
- package/dist/prefetch.js.map +0 -1
package/README.md
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|

|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Explicit semantic memory tools powered by [Mem0](https://mem0.ai), with support for both Platform (cloud) and Open-Source (local) modes.
|
|
6
6
|
|
|
7
7
|
## How It Works
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Memories are saved and recalled through explicit tools. They are project-namespaced, and stored text is not injected into the system prompt.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Use `mem0_save` and the search/profile tools when memory should be stored or retrieved.
|
|
12
12
|
|
|
13
13
|
## Two Modes
|
|
14
14
|
|
|
@@ -216,9 +216,11 @@ If `better-sqlite3` fails to load (for example, because of a Node ABI mismatch),
|
|
|
216
216
|
`pi-memory-mem0` and `pi-memory` run **independently in parallel** as separate extensions:
|
|
217
217
|
|
|
218
218
|
- `pi-memory`: Active memory — agent explicitly manages via tools, local `.md` files, hard char limits
|
|
219
|
-
- `pi-memory-mem0`:
|
|
219
|
+
- `pi-memory-mem0`: Explicit semantic memory tools backed by Mem0
|
|
220
220
|
|
|
221
|
-
They do not interfere with each other
|
|
221
|
+
They do not interfere with each other. `pi-memory-mem0` does not inject recalled
|
|
222
|
+
text into the system prompt; the agent retrieves it through the search and
|
|
223
|
+
profile tools.
|
|
222
224
|
|
|
223
225
|
## Dedup API
|
|
224
226
|
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AA2BpE,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AA2BpE,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CA6G5D"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pi-memory-mem0 —
|
|
2
|
+
* pi-memory-mem0 — Explicit semantic memory extension powered by Mem0.
|
|
3
3
|
*
|
|
4
4
|
* Two modes:
|
|
5
5
|
* - **platform**: Uses Mem0 Cloud API (needs MEM0_API_KEY)
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* Trusted project settings are loaded without environment interpolation.
|
|
11
11
|
*/
|
|
12
12
|
import { isProjectTrusted, loadPiSettings } from '@amaster.ai/pi-shared/settings';
|
|
13
|
-
import {
|
|
13
|
+
import { formatRecalledMemory, scopeMemoryUserId } from './privacy.js';
|
|
14
14
|
import { createMem0Provider } from './provider.js';
|
|
15
15
|
import { createMem0Tools } from './tools.js';
|
|
16
16
|
const SETTINGS_KEY = 'pi-memory-mem0';
|
|
@@ -37,11 +37,9 @@ function resolveUserId(configUserId) {
|
|
|
37
37
|
}
|
|
38
38
|
export default function mem0Extension(pi) {
|
|
39
39
|
let provider;
|
|
40
|
-
let prefetch;
|
|
41
40
|
let userId = '';
|
|
42
|
-
let lastUserText = '';
|
|
43
|
-
let pendingWrite = Promise.resolve();
|
|
44
41
|
pi.on('session_start', async (_event, ctx) => {
|
|
42
|
+
provider = undefined;
|
|
45
43
|
const config = loadConfig(ctx.cwd, isProjectTrusted(ctx));
|
|
46
44
|
const mode = config.mode ?? 'platform';
|
|
47
45
|
// Platform mode requires apiKey; OSS mode requires an LLM provider (env key)
|
|
@@ -79,61 +77,12 @@ export default function mem0Extension(pi) {
|
|
|
79
77
|
ctx.ui.notify(`Mem0 init failed: ${err instanceof Error ? err.message : String(err)}`, 'error');
|
|
80
78
|
return;
|
|
81
79
|
}
|
|
82
|
-
userId = resolveUserId(config.userId);
|
|
83
|
-
prefetch = new Prefetch(provider, userId, {
|
|
84
|
-
topK: config.topK ?? 5,
|
|
85
|
-
});
|
|
80
|
+
userId = scopeMemoryUserId(resolveUserId(config.userId), ctx.cwd);
|
|
86
81
|
ctx.ui.setStatus(STATUS_KEY, `mem0: ${mode}`);
|
|
87
82
|
for (const tool of createMem0Tools(provider, userId)) {
|
|
88
83
|
pi.registerTool(tool);
|
|
89
84
|
}
|
|
90
85
|
});
|
|
91
|
-
pi.on('input', async (event) => {
|
|
92
|
-
if (!prefetch)
|
|
93
|
-
return;
|
|
94
|
-
const text = event.text ?? '';
|
|
95
|
-
if (text) {
|
|
96
|
-
prefetch.queue(text);
|
|
97
|
-
lastUserText = text;
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
pi.on('turn_end', async (event) => {
|
|
101
|
-
if (!provider || !lastUserText)
|
|
102
|
-
return;
|
|
103
|
-
const msg = event.message;
|
|
104
|
-
const text = extractText(msg);
|
|
105
|
-
if (!text || msg.role !== 'assistant')
|
|
106
|
-
return;
|
|
107
|
-
const userText = lastUserText;
|
|
108
|
-
lastUserText = '';
|
|
109
|
-
const activeProvider = provider;
|
|
110
|
-
pendingWrite = pendingWrite
|
|
111
|
-
.catch(() => { })
|
|
112
|
-
.then(async () => {
|
|
113
|
-
await activeProvider.add([
|
|
114
|
-
{ role: 'user', content: userText },
|
|
115
|
-
{ role: 'assistant', content: text },
|
|
116
|
-
], { userId });
|
|
117
|
-
})
|
|
118
|
-
.catch(() => { });
|
|
119
|
-
});
|
|
120
|
-
pi.on('before_agent_start', async (event) => {
|
|
121
|
-
if (!prefetch)
|
|
122
|
-
return;
|
|
123
|
-
const recalled = await prefetch.consume();
|
|
124
|
-
if (!recalled)
|
|
125
|
-
return;
|
|
126
|
-
return {
|
|
127
|
-
systemPrompt: event.systemPrompt ? `${event.systemPrompt}\n\n${recalled}` : recalled,
|
|
128
|
-
};
|
|
129
|
-
});
|
|
130
|
-
pi.on('session_shutdown', async () => {
|
|
131
|
-
await pendingWrite;
|
|
132
|
-
provider = undefined;
|
|
133
|
-
prefetch = undefined;
|
|
134
|
-
lastUserText = '';
|
|
135
|
-
pendingWrite = Promise.resolve();
|
|
136
|
-
});
|
|
137
86
|
pi.registerCommand('mem0', {
|
|
138
87
|
description: 'Mem0 memory commands. Subcommands: status, search <query>, profile.',
|
|
139
88
|
handler: async (args, ctx) => {
|
|
@@ -142,7 +91,7 @@ export default function mem0Extension(pi) {
|
|
|
142
91
|
return;
|
|
143
92
|
}
|
|
144
93
|
const config = loadConfig(ctx.cwd, isProjectTrusted(ctx));
|
|
145
|
-
const userId = resolveUserId(config.userId);
|
|
94
|
+
const userId = scopeMemoryUserId(resolveUserId(config.userId), ctx.cwd);
|
|
146
95
|
const parts = args.trim().split(/\s+/).filter(Boolean);
|
|
147
96
|
const subcommand = parts[0]?.toLowerCase() ?? 'status';
|
|
148
97
|
const rest = parts.slice(1).join(' ').trim();
|
|
@@ -161,7 +110,7 @@ export default function mem0Extension(pi) {
|
|
|
161
110
|
ctx.ui.notify('No relevant memories found.', 'info');
|
|
162
111
|
}
|
|
163
112
|
else {
|
|
164
|
-
const lines = results.map((r, i) => `${i + 1}. ${r.memory}`);
|
|
113
|
+
const lines = results.map((r, i) => `${i + 1}. ${formatRecalledMemory(r.memory)}`);
|
|
165
114
|
ctx.ui.notify(`Mem0 search results:\n${lines.join('\n')}`, 'info');
|
|
166
115
|
}
|
|
167
116
|
break;
|
|
@@ -172,7 +121,7 @@ export default function mem0Extension(pi) {
|
|
|
172
121
|
ctx.ui.notify('No memories stored yet.', 'info');
|
|
173
122
|
}
|
|
174
123
|
else {
|
|
175
|
-
const lines = all.map((m, i) => `${i + 1}. ${m.memory}`);
|
|
124
|
+
const lines = all.map((m, i) => `${i + 1}. ${formatRecalledMemory(m.memory)}`);
|
|
176
125
|
ctx.ui.notify(`Mem0 memories (${all.length}):\n${lines.join('\n')}`, 'info');
|
|
177
126
|
}
|
|
178
127
|
break;
|
|
@@ -183,15 +132,4 @@ export default function mem0Extension(pi) {
|
|
|
183
132
|
},
|
|
184
133
|
});
|
|
185
134
|
}
|
|
186
|
-
function extractText(msg) {
|
|
187
|
-
if (typeof msg.content === 'string')
|
|
188
|
-
return msg.content;
|
|
189
|
-
if (Array.isArray(msg.content)) {
|
|
190
|
-
return msg.content
|
|
191
|
-
.filter((c) => c.type === 'text' && c.text)
|
|
192
|
-
.map((c) => c.text)
|
|
193
|
-
.join('\n');
|
|
194
|
-
}
|
|
195
|
-
return '';
|
|
196
|
-
}
|
|
197
135
|
//# 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":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAElF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +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"}
|
package/dist/privacy.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { scanForThreats } from '@amaster.ai/pi-shared/threat-patterns';
|
|
4
|
+
export function scopeMemoryUserId(baseUserId, cwd) {
|
|
5
|
+
const project = createHash('sha256').update(path.resolve(cwd)).digest('hex').slice(0, 12);
|
|
6
|
+
return `${baseUserId}:project:${project}`;
|
|
7
|
+
}
|
|
8
|
+
export function redactMemoryText(text) {
|
|
9
|
+
return text
|
|
10
|
+
.replace(/-----BEGIN [^-]+ PRIVATE KEY-----[\s\S]*?-----END [^-]+ PRIVATE KEY-----/gi, '[REDACTED]')
|
|
11
|
+
.replace(/\b(Bearer)\s+[A-Za-z0-9._~+/=-]{12,}/gi, '$1 [REDACTED]')
|
|
12
|
+
.replace(/\b(api[_-]?key|token|password|secret)\s*[:=]\s*["']?[^\s"',;]{6,}/gi, '$1=[REDACTED]');
|
|
13
|
+
}
|
|
14
|
+
export function formatRecalledMemory(text) {
|
|
15
|
+
const findings = scanForThreats(text, 'strict');
|
|
16
|
+
if (findings.length > 0) {
|
|
17
|
+
return `[BLOCKED UNTRUSTED MEMORY: ${findings.join(', ')}]`;
|
|
18
|
+
}
|
|
19
|
+
return `[UNTRUSTED MEMORY DATA] ${JSON.stringify(text)}`;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=privacy.js.map
|
|
@@ -0,0 +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"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* LLM-callable tools for Mem0: search, profile (get all), and save (verbatim store).
|
|
3
3
|
*/
|
|
4
|
-
import type
|
|
4
|
+
import { type AgentToolResult } from '@earendil-works/pi-coding-agent';
|
|
5
5
|
import type { Mem0Provider } from './provider.js';
|
|
6
6
|
export interface ToolDefinition {
|
|
7
7
|
name: string;
|
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,KAAK,
|
|
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;AAgBD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE,CAoGxF"}
|
package/dist/tools.js
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* LLM-callable tools for Mem0: search, profile (get all), and save (verbatim store).
|
|
3
3
|
*/
|
|
4
|
+
import { truncateHead, truncateLine } from '@earendil-works/pi-coding-agent';
|
|
4
5
|
import { Type } from 'typebox';
|
|
6
|
+
import { formatRecalledMemory, redactMemoryText } from './privacy.js';
|
|
5
7
|
function textResult(text) {
|
|
6
|
-
|
|
8
|
+
const result = truncateHead(text, { maxBytes: 47 * 1024, maxLines: 1_900 });
|
|
9
|
+
const output = result.truncated
|
|
10
|
+
? JSON.stringify({
|
|
11
|
+
truncated: true,
|
|
12
|
+
preview: truncateLine(text, 4_000).text,
|
|
13
|
+
})
|
|
14
|
+
: result.content;
|
|
15
|
+
return {
|
|
16
|
+
content: [{ type: 'text', text: output }],
|
|
17
|
+
details: undefined,
|
|
18
|
+
};
|
|
7
19
|
}
|
|
8
20
|
export function createMem0Tools(provider, userId) {
|
|
9
21
|
const searchTool = {
|
|
@@ -26,7 +38,10 @@ export function createMem0Tools(provider, userId) {
|
|
|
26
38
|
return textResult(JSON.stringify({ result: 'No relevant memories found.' }));
|
|
27
39
|
}
|
|
28
40
|
return textResult(JSON.stringify({
|
|
29
|
-
results: results.map((r) => ({
|
|
41
|
+
results: results.map((r) => ({
|
|
42
|
+
memory: formatRecalledMemory(r.memory),
|
|
43
|
+
score: r.score,
|
|
44
|
+
})),
|
|
30
45
|
count: results.length,
|
|
31
46
|
}));
|
|
32
47
|
}
|
|
@@ -49,7 +64,10 @@ export function createMem0Tools(provider, userId) {
|
|
|
49
64
|
if (memories.length === 0) {
|
|
50
65
|
return textResult(JSON.stringify({ result: 'No memories stored yet.' }));
|
|
51
66
|
}
|
|
52
|
-
const lines = memories
|
|
67
|
+
const lines = memories
|
|
68
|
+
.map((m) => m.memory)
|
|
69
|
+
.filter(Boolean)
|
|
70
|
+
.map(formatRecalledMemory);
|
|
53
71
|
return textResult(JSON.stringify({ result: lines.join('\n'), count: lines.length }));
|
|
54
72
|
}
|
|
55
73
|
catch (err) {
|
|
@@ -72,7 +90,7 @@ export function createMem0Tools(provider, userId) {
|
|
|
72
90
|
if (!fact)
|
|
73
91
|
return textResult(JSON.stringify({ error: 'Fact cannot be empty.' }));
|
|
74
92
|
try {
|
|
75
|
-
const result = await provider.add([{ role: 'user', content: fact }], {
|
|
93
|
+
const result = await provider.add([{ role: 'user', content: redactMemoryText(fact) }], {
|
|
76
94
|
userId,
|
|
77
95
|
infer: false,
|
|
78
96
|
});
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amaster.ai/pi-memory-mem0",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Mem0
|
|
3
|
+
"version": "0.1.8",
|
|
4
|
+
"description": "Explicit Mem0 semantic memory tools for pi — Platform cloud or local SQLite.",
|
|
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.
|
|
57
|
+
"@amaster.ai/pi-shared": "0.1.8"
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
60
60
|
"@earendil-works/pi-coding-agent": ">=0.79.1",
|
package/dist/prefetch.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Two-phase semantic prefetch — kicks off a background search on turn_end,
|
|
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 topK;
|
|
10
|
-
private pending;
|
|
11
|
-
constructor(provider: Mem0Provider, userId: string, opts: {
|
|
12
|
-
topK: number;
|
|
13
|
-
});
|
|
14
|
-
/** Phase 1: kick off a background search (called on turn_end with user message). */
|
|
15
|
-
queue(query: string): void;
|
|
16
|
-
/** Phase 2: consume the result with a timeout (called on before_agent_start). */
|
|
17
|
-
consume(timeoutMs?: number): Promise<string>;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=prefetch.d.ts.map
|
package/dist/prefetch.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prefetch.d.ts","sourceRoot":"","sources":["../src/prefetch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAsC;gBAEzC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAM1E,oFAAoF;IACpF,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,iFAAiF;IAC3E,OAAO,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CAqBjD"}
|
package/dist/prefetch.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Two-phase semantic prefetch — kicks off a background search on turn_end,
|
|
3
|
-
* consumes the result on before_agent_start with a timeout.
|
|
4
|
-
*/
|
|
5
|
-
export class Prefetch {
|
|
6
|
-
provider;
|
|
7
|
-
userId;
|
|
8
|
-
topK;
|
|
9
|
-
pending = null;
|
|
10
|
-
constructor(provider, userId, opts) {
|
|
11
|
-
this.provider = provider;
|
|
12
|
-
this.userId = userId;
|
|
13
|
-
this.topK = opts.topK;
|
|
14
|
-
}
|
|
15
|
-
/** Phase 1: kick off a background search (called on turn_end with user message). */
|
|
16
|
-
queue(query) {
|
|
17
|
-
if (!query.trim())
|
|
18
|
-
return;
|
|
19
|
-
this.pending = this.provider.search(query, { userId: this.userId, topK: this.topK });
|
|
20
|
-
}
|
|
21
|
-
/** Phase 2: consume the result with a timeout (called on before_agent_start). */
|
|
22
|
-
async consume(timeoutMs = 3000) {
|
|
23
|
-
if (!this.pending)
|
|
24
|
-
return '';
|
|
25
|
-
const promise = this.pending;
|
|
26
|
-
this.pending = null;
|
|
27
|
-
try {
|
|
28
|
-
const memories = await Promise.race([
|
|
29
|
-
promise,
|
|
30
|
-
new Promise((resolve) => setTimeout(() => resolve([]), timeoutMs)),
|
|
31
|
-
]);
|
|
32
|
-
if (memories.length === 0)
|
|
33
|
-
return '';
|
|
34
|
-
const lines = memories.filter((m) => m.memory?.trim()).map((m) => `- ${m.memory.trim()}`);
|
|
35
|
-
return lines.length > 0 ? `## Recalled Memories (Mem0)\n${lines.join('\n')}` : '';
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
return '';
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=prefetch.js.map
|
package/dist/prefetch.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prefetch.js","sourceRoot":"","sources":["../src/prefetch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,OAAO,QAAQ;IACF,QAAQ,CAAe;IACvB,MAAM,CAAS;IACf,IAAI,CAAS;IACtB,OAAO,GAAiC,IAAI,CAAC;IAErD,YAAY,QAAsB,EAAE,MAAc,EAAE,IAAsB;QACxE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,oFAAoF;IACpF,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YAAE,OAAO;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACvF,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,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAE1F,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gCAAgC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF"}
|