@amaster.ai/pi-memory 0.1.2 → 0.1.4
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 +67 -13
- package/dist/cli/dream.d.ts +3 -0
- package/dist/cli/dream.d.ts.map +1 -0
- package/dist/cli/dream.js +115 -0
- package/dist/cli/dream.js.map +1 -0
- package/dist/consolidation.d.ts +31 -0
- package/dist/consolidation.d.ts.map +1 -0
- package/dist/consolidation.js +125 -0
- package/dist/consolidation.js.map +1 -0
- package/dist/dreaming-state.d.ts +7 -0
- package/dist/dreaming-state.d.ts.map +1 -0
- package/dist/dreaming-state.js +25 -0
- package/dist/dreaming-state.js.map +1 -0
- package/dist/extension.d.ts +8 -0
- package/dist/extension.d.ts.map +1 -1
- package/dist/extension.js +41 -4
- package/dist/extension.js.map +1 -1
- package/dist/store.d.ts +6 -4
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +23 -10
- package/dist/store.js.map +1 -1
- package/package.json +15 -2
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|

|
|
4
4
|
|
|
5
|
-
Persistent curated memory for pi agents — `MEMORY.md` (the agent's own notes) and `USER.md` (what the agent knows about the user).
|
|
5
|
+
Persistent curated memory for pi agents — `MEMORY.md` (the agent's own notes) and `USER.md` (what the agent knows about the user). The extension initializes storage at session start, then reloads both files before each agent run and injects a sanitized snapshot into that run's system prompt. Writes are durable on disk immediately; they are visible through `memory_read` right away and appear in the prompt snapshot on the next agent run.
|
|
6
6
|
|
|
7
7
|
Modeled after hermes' default `MemoryStore` mechanism (no provider/manager abstraction).
|
|
8
8
|
|
|
@@ -52,14 +52,14 @@ These are total chars after `§`-joining all entries. The limit is enforced at w
|
|
|
52
52
|
When installed as a dependency with the `pi.extensions` field declared in `package.json`, the runtime auto-discovers and loads the extension. The extension creates its own `MemoryStore` with file-based storage at `<agentDir>/memories/` — fully self-contained.
|
|
53
53
|
|
|
54
54
|
```
|
|
55
|
-
pi.extensions → session_start →
|
|
56
|
-
→ before_agent_start → append snapshot to systemPrompt
|
|
55
|
+
pi.extensions → session_start → initialize store → register tools
|
|
56
|
+
→ before_agent_start → reload MEMORY.md/USER.md → append snapshot to systemPrompt
|
|
57
57
|
→ session_shutdown → release
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
- **Storage**: `<agentDir>/memories/MEMORY.md` and `<agentDir>/memories/USER.md`
|
|
61
|
-
- **Lifecycle**:
|
|
62
|
-
- **Status command**: `/
|
|
61
|
+
- **Lifecycle**: initialize on `session_start`, rebuild the prompt snapshot before each agent run
|
|
62
|
+
- **Status command**: `/memory status` shows entry counts per file
|
|
63
63
|
- **LLM tools**: `memory_add`, `memory_replace`, `memory_remove`, `memory_read`
|
|
64
64
|
|
|
65
65
|
Configure via the `pi-memory` settings key:
|
|
@@ -90,7 +90,7 @@ await store.loadFromDisk();
|
|
|
90
90
|
// ToolDefinition[] — wire into your tool registry directly
|
|
91
91
|
const tools = createMemoryTools(store);
|
|
92
92
|
|
|
93
|
-
// System prompt fragment (
|
|
93
|
+
// System prompt fragment (rebuilt by loadFromDisk; call it before each agent run)
|
|
94
94
|
const promptBlock = store.formatAllForSystemPrompt();
|
|
95
95
|
```
|
|
96
96
|
|
|
@@ -114,18 +114,72 @@ To recover:
|
|
|
114
114
|
|
|
115
115
|
The drift guard exists to prevent silent data loss — never bypass it by deleting `.bak.<ts>` snapshots blindly.
|
|
116
116
|
|
|
117
|
-
##
|
|
117
|
+
## Prompt snapshot
|
|
118
118
|
|
|
119
|
-
`loadFromDisk()`
|
|
119
|
+
`loadFromDisk()` refreshes live entries from disk and rebuilds the sanitized system-prompt block. The extension calls it before each agent run. Subsequent `add` / `replace` / `remove` calls update **live state** and disk, but not the snapshot already attached to the current agent run. Why:
|
|
120
120
|
|
|
121
|
-
- The system prompt is the prefix-cache key for
|
|
121
|
+
- The system prompt is the prefix-cache key for a model call. Mutating it mid-run invalidates the prefix and makes the model's context harder to reason about.
|
|
122
122
|
- Tool responses always reflect live state, so the model still sees its own writes — just via tool-result tail, not system-prompt head.
|
|
123
|
-
- The snapshot picks up changes on the **next** `
|
|
123
|
+
- The prompt snapshot picks up changes on the **next** `before_agent_start` / `loadFromDisk()`.
|
|
124
124
|
|
|
125
125
|
## Lifecycle reference
|
|
126
126
|
|
|
127
127
|
| Hook | Behavior |
|
|
128
128
|
|-----------------------|---------------------------------------------------------------------------|
|
|
129
|
-
| `session_start` | Resolve `dataDir`, build `MemoryStore`, `loadFromDisk()`,
|
|
130
|
-
| `before_agent_start` |
|
|
131
|
-
| `session_shutdown` | Drop store
|
|
129
|
+
| `session_start` | Resolve `dataDir`, build `MemoryStore`, `loadFromDisk()`, register 4 tools, set status `memory: loaded`/`memory: empty`. Auto-register dreaming cron job if not already installed. |
|
|
130
|
+
| `before_agent_start` | Reload memory from disk, rebuild the prompt snapshot, and append it to assembled `systemPrompt` (guidance only when empty). |
|
|
131
|
+
| `session_shutdown` | Drop store references. |
|
|
132
|
+
|
|
133
|
+
## Dreaming (Periodic Memory Consolidation)
|
|
134
|
+
|
|
135
|
+
On first session start, pi-memory automatically registers a system-level scheduled task that periodically reviews recent conversations and consolidates durable facts into memory. No manual cron configuration needed.
|
|
136
|
+
|
|
137
|
+
### How it works
|
|
138
|
+
|
|
139
|
+
1. **System cron registration** — On first load, the extension registers a platform-native scheduled job:
|
|
140
|
+
- macOS: `launchd` LaunchAgent
|
|
141
|
+
- Linux: user `crontab` entry
|
|
142
|
+
- Windows: Task Scheduler
|
|
143
|
+
|
|
144
|
+
2. **Gate check** — Each run checks whether enough time and sessions have elapsed since the last consolidation before proceeding.
|
|
145
|
+
|
|
146
|
+
3. **Phase 1 — Consolidation** — An agentic loop (using pi-agent-core) reviews recent conversation transcripts and updates `MEMORY.md`/`USER.md` via the memory tools. Follows a 4-phase prompt: Orient → Gather → Consolidate → Prune.
|
|
147
|
+
|
|
148
|
+
4. **Phase 2 — Dedup** — If `pi-memory-mem0` is configured, exact-duplicate entries in the vector store are identified and deleted.
|
|
149
|
+
|
|
150
|
+
### Configuration
|
|
151
|
+
|
|
152
|
+
Add to `settings.json` under the `pi-memory` key:
|
|
153
|
+
|
|
154
|
+
```json
|
|
155
|
+
{
|
|
156
|
+
"pi-memory": {
|
|
157
|
+
"dreaming": {
|
|
158
|
+
"enabled": true,
|
|
159
|
+
"intervalHours": 4,
|
|
160
|
+
"minHoursSinceLastRun": 24,
|
|
161
|
+
"minTurnsSinceLastRun": 5,
|
|
162
|
+
"model": {
|
|
163
|
+
"provider": "openai",
|
|
164
|
+
"model": "gpt-4.1-mini"
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
All fields are optional with sensible defaults. The `model` field accepts any provider/model pair configured in your `~/.pi/agent/models.json` (built-in or custom). `minSessionsSinceLastRun` is accepted as a deprecated alias for `minTurnsSinceLastRun`.
|
|
172
|
+
|
|
173
|
+
Set `"enabled": false` to disable dreaming and remove the scheduled task.
|
|
174
|
+
|
|
175
|
+
### CLI
|
|
176
|
+
|
|
177
|
+
The dreaming logic is also available as a standalone CLI:
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
# Run once (called by the system scheduler)
|
|
181
|
+
npx pi-memory-dream
|
|
182
|
+
|
|
183
|
+
# Or via the installed bin
|
|
184
|
+
pi-memory-dream
|
|
185
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dream.d.ts","sourceRoot":"","sources":["../../src/cli/dream.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* pi-memory-dream CLI — one-shot dreaming execution.
|
|
4
|
+
*
|
|
5
|
+
* Designed to be called by system cron (launchd/crontab/schtasks).
|
|
6
|
+
* Performs gate check, consolidation, and dedup, then exits.
|
|
7
|
+
*/
|
|
8
|
+
import { join } from 'node:path';
|
|
9
|
+
import { dedupMemories } from '@amaster.ai/pi-memory-mem0/dedup';
|
|
10
|
+
import { loadPiSettings, resolveHome } from '@amaster.ai/pi-shared/settings';
|
|
11
|
+
import { JsonFileTranscriptStore } from '@amaster.ai/pi-storage/json';
|
|
12
|
+
import { AuthStorage, ModelRegistry } from '@earendil-works/pi-coding-agent';
|
|
13
|
+
import { runConsolidation } from '../consolidation.js';
|
|
14
|
+
import { readDreamingState, writeDreamingState } from '../dreaming-state.js';
|
|
15
|
+
const DEFAULT_MIN_HOURS = 24;
|
|
16
|
+
const DEFAULT_MIN_TURNS = 5;
|
|
17
|
+
const DEFAULT_MODEL = { provider: 'openai', model: 'gpt-4.1-mini' };
|
|
18
|
+
function log(msg) {
|
|
19
|
+
process.stderr.write(`[pi-memory-dream ${new Date().toISOString()}] ${msg}\n`);
|
|
20
|
+
}
|
|
21
|
+
async function main() {
|
|
22
|
+
const settings = loadPiSettings('pi-memory');
|
|
23
|
+
const config = settings.dreaming ?? {};
|
|
24
|
+
if (config.enabled === false) {
|
|
25
|
+
process.exit(0);
|
|
26
|
+
}
|
|
27
|
+
const home = resolveHome();
|
|
28
|
+
const state = await readDreamingState();
|
|
29
|
+
const now = Date.now();
|
|
30
|
+
const minHours = config.minHoursSinceLastRun ?? DEFAULT_MIN_HOURS;
|
|
31
|
+
const minTurns = config.minTurnsSinceLastRun ?? config.minSessionsSinceLastRun ?? DEFAULT_MIN_TURNS;
|
|
32
|
+
// Gate check: enough time since last run?
|
|
33
|
+
if (state.lastConsolidatedAt) {
|
|
34
|
+
const elapsed = now - new Date(state.lastConsolidatedAt).getTime();
|
|
35
|
+
if (elapsed < minHours * 60 * 60 * 1000) {
|
|
36
|
+
process.exit(0);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Gate check: enough turns since last run?
|
|
40
|
+
const transcriptsPath = join(home, 'transcripts.json');
|
|
41
|
+
const transcripts = new JsonFileTranscriptStore(transcriptsPath);
|
|
42
|
+
const turns = await transcripts.listTurns({ tenantId: 'default' });
|
|
43
|
+
const recentTurns = state.lastConsolidatedAt
|
|
44
|
+
? turns.filter((t) => t.createdAt &&
|
|
45
|
+
new Date(t.createdAt).getTime() > new Date(state.lastConsolidatedAt).getTime())
|
|
46
|
+
: turns;
|
|
47
|
+
if (recentTurns.length < minTurns) {
|
|
48
|
+
process.exit(0);
|
|
49
|
+
}
|
|
50
|
+
log(`starting: ${recentTurns.length} turns since last run`);
|
|
51
|
+
const abortController = new AbortController();
|
|
52
|
+
process.on('SIGTERM', () => abortController.abort());
|
|
53
|
+
process.on('SIGINT', () => abortController.abort());
|
|
54
|
+
// Phase 1: Consolidation
|
|
55
|
+
const modelConfig = config.model ?? DEFAULT_MODEL;
|
|
56
|
+
const authStorage = AuthStorage.create();
|
|
57
|
+
const modelRegistry = ModelRegistry.create(authStorage);
|
|
58
|
+
let consolidationSucceeded = false;
|
|
59
|
+
try {
|
|
60
|
+
consolidationSucceeded = await runConsolidation({
|
|
61
|
+
memoryDir: join(home, 'memories'),
|
|
62
|
+
turns: recentTurns,
|
|
63
|
+
modelConfig,
|
|
64
|
+
modelRegistry: {
|
|
65
|
+
find: (p, m) => modelRegistry.find(p, m),
|
|
66
|
+
getApiKeyAndHeaders: (model) => modelRegistry.getApiKeyAndHeaders(model),
|
|
67
|
+
},
|
|
68
|
+
signal: abortController.signal,
|
|
69
|
+
});
|
|
70
|
+
if (consolidationSucceeded)
|
|
71
|
+
log('consolidation done');
|
|
72
|
+
else
|
|
73
|
+
log('consolidation skipped (model/auth unavailable)');
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
log(`consolidation failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
77
|
+
}
|
|
78
|
+
if (abortController.signal.aborted)
|
|
79
|
+
process.exit(0);
|
|
80
|
+
// Phase 2: Dedup (only if pi-memory-mem0 is configured)
|
|
81
|
+
const mem0Settings = loadPiSettings('pi-memory-mem0');
|
|
82
|
+
if (mem0Settings && Object.keys(mem0Settings).length > 0) {
|
|
83
|
+
const mode = mem0Settings.mode ?? 'platform';
|
|
84
|
+
const userId = config.mem0UserId ?? mem0Settings.userId;
|
|
85
|
+
if (!userId) {
|
|
86
|
+
log('dedup skipped: no explicit userId configured (set pi-memory.dreaming.mem0UserId or pi-memory-mem0.userId)');
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
try {
|
|
90
|
+
const result = await dedupMemories({
|
|
91
|
+
userId,
|
|
92
|
+
config: { ...mem0Settings, mode },
|
|
93
|
+
signal: abortController.signal,
|
|
94
|
+
});
|
|
95
|
+
log(`dedup done: ${result.duplicatesRemoved} removed from ${result.total}`);
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
log(`dedup failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Only update state if consolidation ran successfully
|
|
103
|
+
if (consolidationSucceeded) {
|
|
104
|
+
await writeDreamingState({
|
|
105
|
+
lastConsolidatedAt: new Date(now).toISOString(),
|
|
106
|
+
lastSessionCount: recentTurns.length,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
log('done');
|
|
110
|
+
}
|
|
111
|
+
main().catch((err) => {
|
|
112
|
+
log(`fatal: ${err instanceof Error ? err.message : String(err)}`);
|
|
113
|
+
process.exit(1);
|
|
114
|
+
});
|
|
115
|
+
//# sourceMappingURL=dream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dream.js","sourceRoot":"","sources":["../../src/cli/dream.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAkB7E,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,aAAa,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;AAEpE,SAAS,GAAG,CAAC,GAAW;IACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;AACjF,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,QAAQ,GAAG,cAAc,CAAmB,WAAW,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;IAEvC,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,oBAAoB,IAAI,iBAAiB,CAAC;IAClE,MAAM,QAAQ,GACZ,MAAM,CAAC,oBAAoB,IAAI,MAAM,CAAC,uBAAuB,IAAI,iBAAiB,CAAC;IAErF,0CAA0C;IAC1C,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,CAAC;QACnE,IAAI,OAAO,GAAG,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,uBAAuB,CAAC,eAAe,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,KAAK,CAAC,kBAAkB;QAC1C,CAAC,CAAC,KAAK,CAAC,MAAM,CACV,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,SAAS;YACX,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAmB,CAAC,CAAC,OAAO,EAAE,CAClF;QACH,CAAC,CAAC,KAAK,CAAC;IAEV,IAAI,WAAW,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,GAAG,CAAC,aAAa,WAAW,CAAC,MAAM,uBAAuB,CAAC,CAAC;IAE5D,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC9C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;IAEpD,yBAAyB;IACzB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,IAAI,aAAa,CAAC;IAClD,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;IACzC,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAExD,IAAI,sBAAsB,GAAG,KAAK,CAAC;IACnC,IAAI,CAAC;QACH,sBAAsB,GAAG,MAAM,gBAAgB,CAAC;YAC9C,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;YACjC,KAAK,EAAE,WAAW;YAClB,WAAW;YACX,aAAa,EAAE;gBACb,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACxC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAc,CAAC;aAClF;YACD,MAAM,EAAE,eAAe,CAAC,MAAM;SAC/B,CAAC,CAAC;QACH,IAAI,sBAAsB;YAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;;YACjD,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEpD,wDAAwD;IACxD,MAAM,YAAY,GAAG,cAAc,CAA0B,gBAAgB,CAAC,CAAC;IAC/E,IAAI,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,GAAI,YAAY,CAAC,IAA2B,IAAI,UAAU,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,IAAK,YAAY,CAAC,MAA6B,CAAC;QAEhF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,GAAG,CACD,2GAA2G,CAC5G,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;oBACjC,MAAM;oBACN,MAAM,EAAE,EAAE,GAAG,YAAY,EAAE,IAAI,EAAW;oBAC1C,MAAM,EAAE,eAAe,CAAC,MAAM;iBAC/B,CAAC,CAAC;gBACH,GAAG,CAAC,eAAe,MAAM,CAAC,iBAAiB,iBAAiB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9E,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,iBAAiB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,IAAI,sBAAsB,EAAE,CAAC;QAC3B,MAAM,kBAAkB,CAAC;YACvB,kBAAkB,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;YAC/C,gBAAgB,EAAE,WAAW,CAAC,MAAM;SACrC,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,CAAC;AACd,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,GAAG,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory consolidation logic — agentic review of recent conversations.
|
|
3
|
+
*
|
|
4
|
+
* Spawns a pi-agent-core Agent with memory tools to review transcripts and
|
|
5
|
+
* update entries. Follows a 4-phase prompt: Orient → Gather → Consolidate → Prune.
|
|
6
|
+
*/
|
|
7
|
+
import type { ConversationTurn } from '@amaster.ai/pi-shared';
|
|
8
|
+
export interface ConsolidationModelRegistry {
|
|
9
|
+
find(provider: string, model: string): unknown;
|
|
10
|
+
getApiKeyAndHeaders(model: unknown): Promise<{
|
|
11
|
+
ok: boolean;
|
|
12
|
+
apiKey?: string;
|
|
13
|
+
headers?: Record<string, string>;
|
|
14
|
+
error?: string;
|
|
15
|
+
}>;
|
|
16
|
+
}
|
|
17
|
+
export interface ConsolidationOptions {
|
|
18
|
+
memoryDir: string;
|
|
19
|
+
turns: ConversationTurn[];
|
|
20
|
+
modelConfig: {
|
|
21
|
+
provider: string;
|
|
22
|
+
model: string;
|
|
23
|
+
};
|
|
24
|
+
modelRegistry: ConsolidationModelRegistry;
|
|
25
|
+
signal?: AbortSignal;
|
|
26
|
+
maxTurns?: number;
|
|
27
|
+
}
|
|
28
|
+
export declare const CONSOLIDATION_SYSTEM_PROMPT = "You are a memory consolidation assistant performing a \"dream\" \u2014 a reflective pass over recent conversations to synthesize durable knowledge into long-term memory.\n\nYou have access to memory tools:\n- memory_read: Read current memory entries (targets: \"memory\" for agent notes, \"user\" for user profile)\n- memory_add: Add a new entry to a target\n- memory_replace: Update an existing entry by substring match\n- memory_remove: Remove an outdated or redundant entry\n\n## Phase 1 \u2014 Orient\n\n- Call memory_read for both \"memory\" and \"user\" targets to see what is currently stored.\n- Understand the existing structure so you can merge into it rather than duplicating.\n- Note entries that look stale, overly verbose, or contradicted by recent context.\n\n## Phase 2 \u2014 Gather recent signal\n\nReview the conversation transcripts provided. Look for:\n1. New durable facts worth remembering (user preferences, project decisions, recurring patterns)\n2. Information that contradicts or updates existing memory entries\n3. Context that existing memories reference but got wrong\n\nDon't try to capture everything. Focus on what a future session would benefit from knowing.\n\n## Phase 3 \u2014 Consolidate\n\nMake targeted updates using the memory tools:\n- Use memory_replace to update stale entries with current information\n- Use memory_add only for genuinely new facts not already captured\n- Use memory_remove for entries that are clearly wrong, redundant, or superseded\n- When multiple entries cover related facts, merge them into one via memory_replace\n\nImportant:\n- Convert relative dates (\"yesterday\", \"last week\") to absolute dates\n- Merge related entries rather than keeping fragments \u2014 one complete entry is better than three partial ones\n- Keep entries terse and third-person\n\n## Phase 4 \u2014 Prune\n\nAfter consolidating, check capacity:\n- The \"memory\" target has a ~2200 character limit\n- The \"user\" target has a ~1375 character limit\n- If approaching limits, compress verbose entries (remove filler words, combine related points)\n- Remove entries that are subsumed by more complete ones\n\n## Constraints\n\n- ZERO information loss: every distinct, correct fact must survive unless clearly superseded\n- Don't add trivial or ephemeral information (greetings, debugging steps, temporary state)\n- Don't duplicate what is already stored \u2014 always check first via memory_read\n- Focus on: user identity, preferences, project decisions, recurring patterns, important context\n- If nothing meaningful has changed, say so \u2014 don't make changes for the sake of it\n";
|
|
29
|
+
export declare function buildConsolidationUserPrompt(turns: ConversationTurn[]): string;
|
|
30
|
+
export declare function runConsolidation(opts: ConsolidationOptions): Promise<boolean>;
|
|
31
|
+
//# sourceMappingURL=consolidation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consolidation.d.ts","sourceRoot":"","sources":["../src/consolidation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAQ9D,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/C,mBAAmB,CACjB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChG;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,WAAW,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,aAAa,EAAE,0BAA0B,CAAC;IAC1C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,2BAA2B,0kFAmDvC,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAuB9E;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CA8CnF"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory consolidation logic — agentic review of recent conversations.
|
|
3
|
+
*
|
|
4
|
+
* Spawns a pi-agent-core Agent with memory tools to review transcripts and
|
|
5
|
+
* update entries. Follows a 4-phase prompt: Orient → Gather → Consolidate → Prune.
|
|
6
|
+
*/
|
|
7
|
+
import { Agent } from '@earendil-works/pi-agent-core';
|
|
8
|
+
import { streamSimple } from '@earendil-works/pi-ai';
|
|
9
|
+
import { MemoryStore } from './store.js';
|
|
10
|
+
import { createMemoryTools } from './tools.js';
|
|
11
|
+
const MAX_CONSOLIDATION_TURNS = 8;
|
|
12
|
+
export const CONSOLIDATION_SYSTEM_PROMPT = `You are a memory consolidation assistant performing a "dream" — a reflective pass over recent conversations to synthesize durable knowledge into long-term memory.
|
|
13
|
+
|
|
14
|
+
You have access to memory tools:
|
|
15
|
+
- memory_read: Read current memory entries (targets: "memory" for agent notes, "user" for user profile)
|
|
16
|
+
- memory_add: Add a new entry to a target
|
|
17
|
+
- memory_replace: Update an existing entry by substring match
|
|
18
|
+
- memory_remove: Remove an outdated or redundant entry
|
|
19
|
+
|
|
20
|
+
## Phase 1 — Orient
|
|
21
|
+
|
|
22
|
+
- Call memory_read for both "memory" and "user" targets to see what is currently stored.
|
|
23
|
+
- Understand the existing structure so you can merge into it rather than duplicating.
|
|
24
|
+
- Note entries that look stale, overly verbose, or contradicted by recent context.
|
|
25
|
+
|
|
26
|
+
## Phase 2 — Gather recent signal
|
|
27
|
+
|
|
28
|
+
Review the conversation transcripts provided. Look for:
|
|
29
|
+
1. New durable facts worth remembering (user preferences, project decisions, recurring patterns)
|
|
30
|
+
2. Information that contradicts or updates existing memory entries
|
|
31
|
+
3. Context that existing memories reference but got wrong
|
|
32
|
+
|
|
33
|
+
Don't try to capture everything. Focus on what a future session would benefit from knowing.
|
|
34
|
+
|
|
35
|
+
## Phase 3 — Consolidate
|
|
36
|
+
|
|
37
|
+
Make targeted updates using the memory tools:
|
|
38
|
+
- Use memory_replace to update stale entries with current information
|
|
39
|
+
- Use memory_add only for genuinely new facts not already captured
|
|
40
|
+
- Use memory_remove for entries that are clearly wrong, redundant, or superseded
|
|
41
|
+
- When multiple entries cover related facts, merge them into one via memory_replace
|
|
42
|
+
|
|
43
|
+
Important:
|
|
44
|
+
- Convert relative dates ("yesterday", "last week") to absolute dates
|
|
45
|
+
- Merge related entries rather than keeping fragments — one complete entry is better than three partial ones
|
|
46
|
+
- Keep entries terse and third-person
|
|
47
|
+
|
|
48
|
+
## Phase 4 — Prune
|
|
49
|
+
|
|
50
|
+
After consolidating, check capacity:
|
|
51
|
+
- The "memory" target has a ~2200 character limit
|
|
52
|
+
- The "user" target has a ~1375 character limit
|
|
53
|
+
- If approaching limits, compress verbose entries (remove filler words, combine related points)
|
|
54
|
+
- Remove entries that are subsumed by more complete ones
|
|
55
|
+
|
|
56
|
+
## Constraints
|
|
57
|
+
|
|
58
|
+
- ZERO information loss: every distinct, correct fact must survive unless clearly superseded
|
|
59
|
+
- Don't add trivial or ephemeral information (greetings, debugging steps, temporary state)
|
|
60
|
+
- Don't duplicate what is already stored — always check first via memory_read
|
|
61
|
+
- Focus on: user identity, preferences, project decisions, recurring patterns, important context
|
|
62
|
+
- If nothing meaningful has changed, say so — don't make changes for the sake of it
|
|
63
|
+
`;
|
|
64
|
+
export function buildConsolidationUserPrompt(turns) {
|
|
65
|
+
if (turns.length === 0) {
|
|
66
|
+
return 'No recent conversations to review. Call memory_read to check current state and verify everything is still accurate.';
|
|
67
|
+
}
|
|
68
|
+
const maxChars = 8000;
|
|
69
|
+
const header = '## Recent Conversations\n\nBelow are recent conversation turns (newest last). Review them for signal worth persisting.\n\n';
|
|
70
|
+
const footer = '\n---\nBegin by calling memory_read for both targets to orient yourself, then consolidate as needed.';
|
|
71
|
+
let totalChars = header.length + footer.length;
|
|
72
|
+
const selected = [];
|
|
73
|
+
for (let i = turns.length - 1; i >= 0; i--) {
|
|
74
|
+
const turn = turns[i];
|
|
75
|
+
const entry = `### Session ${turn.sessionId} (${turn.createdAt})\n**User:** ${turn.userMessage}\n**Assistant:** ${turn.assistantMessage}\n\n`;
|
|
76
|
+
if (totalChars + entry.length > maxChars)
|
|
77
|
+
break;
|
|
78
|
+
selected.unshift(entry);
|
|
79
|
+
totalChars += entry.length;
|
|
80
|
+
}
|
|
81
|
+
return header + selected.join('') + footer;
|
|
82
|
+
}
|
|
83
|
+
export async function runConsolidation(opts) {
|
|
84
|
+
const { memoryDir, turns, modelConfig, modelRegistry, signal, maxTurns } = opts;
|
|
85
|
+
const model = modelRegistry.find(modelConfig.provider, modelConfig.model);
|
|
86
|
+
if (!model)
|
|
87
|
+
return false;
|
|
88
|
+
const auth = await modelRegistry.getApiKeyAndHeaders(model);
|
|
89
|
+
if (!auth.ok)
|
|
90
|
+
return false;
|
|
91
|
+
const store = new MemoryStore({ dir: memoryDir });
|
|
92
|
+
await store.loadFromDisk();
|
|
93
|
+
const tools = createMemoryTools(store);
|
|
94
|
+
const userPrompt = buildConsolidationUserPrompt(turns);
|
|
95
|
+
const agent = new Agent({
|
|
96
|
+
initialState: {
|
|
97
|
+
systemPrompt: CONSOLIDATION_SYSTEM_PROMPT,
|
|
98
|
+
model: model,
|
|
99
|
+
tools: tools,
|
|
100
|
+
},
|
|
101
|
+
streamFn: (m, c, streamOpts) => {
|
|
102
|
+
const existingSignal = streamOpts?.signal;
|
|
103
|
+
return streamSimple(m, c, {
|
|
104
|
+
...streamOpts,
|
|
105
|
+
...(auth.apiKey ? { apiKey: auth.apiKey } : {}),
|
|
106
|
+
...(auth.headers ? { headers: auth.headers } : {}),
|
|
107
|
+
...(existingSignal ? { signal: existingSignal } : signal ? { signal } : {}),
|
|
108
|
+
});
|
|
109
|
+
},
|
|
110
|
+
convertToLlm: (msgs) => msgs,
|
|
111
|
+
});
|
|
112
|
+
const limit = maxTurns ?? MAX_CONSOLIDATION_TURNS;
|
|
113
|
+
let turnCount = 0;
|
|
114
|
+
agent.subscribe((event) => {
|
|
115
|
+
if (event.type === 'turn_end') {
|
|
116
|
+
turnCount++;
|
|
117
|
+
if (turnCount >= limit || signal?.aborted) {
|
|
118
|
+
void agent.abort();
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
await agent.prompt(userPrompt);
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=consolidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consolidation.js","sourceRoot":"","sources":["../src/consolidation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface DreamingState {
|
|
2
|
+
lastConsolidatedAt: string | null;
|
|
3
|
+
lastSessionCount: number;
|
|
4
|
+
}
|
|
5
|
+
export declare function readDreamingState(): Promise<DreamingState>;
|
|
6
|
+
export declare function writeDreamingState(state: DreamingState): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=dreaming-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dreaming-state.d.ts","sourceRoot":"","sources":["../src/dreaming-state.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC5B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAQD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,aAAa,CAAC,CAOhE;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5E"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dreaming state persistence — tracks when the last consolidation ran.
|
|
3
|
+
*/
|
|
4
|
+
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
5
|
+
import { dirname, join } from 'node:path';
|
|
6
|
+
import { resolveHome } from '@amaster.ai/pi-shared/settings';
|
|
7
|
+
const STATE_FILE = 'memories/dreaming-state.json';
|
|
8
|
+
function statePath() {
|
|
9
|
+
return join(resolveHome(), STATE_FILE);
|
|
10
|
+
}
|
|
11
|
+
export async function readDreamingState() {
|
|
12
|
+
try {
|
|
13
|
+
const raw = await readFile(statePath(), 'utf-8');
|
|
14
|
+
return JSON.parse(raw);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return { lastConsolidatedAt: null, lastSessionCount: 0 };
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export async function writeDreamingState(state) {
|
|
21
|
+
const filePath = statePath();
|
|
22
|
+
await mkdir(dirname(filePath), { recursive: true });
|
|
23
|
+
await writeFile(filePath, JSON.stringify(state, null, 2), 'utf-8');
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=dreaming-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dreaming-state.js","sourceRoot":"","sources":["../src/dreaming-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAO7D,MAAM,UAAU,GAAG,8BAA8B,CAAC;AAElD,SAAS,SAAS;IAChB,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAkB,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAoB;IAC3D,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC;IAC7B,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC"}
|
package/dist/extension.d.ts
CHANGED
|
@@ -14,6 +14,14 @@ export type PiMemoryExtensionConfig = {
|
|
|
14
14
|
extractionModel?: ExtractionModelConfig;
|
|
15
15
|
/** Turns between extraction runs. Default: 5. */
|
|
16
16
|
extractionInterval?: number;
|
|
17
|
+
/** Dreaming (periodic consolidation + dedup) config. */
|
|
18
|
+
dreaming?: DreamingConfig;
|
|
19
|
+
};
|
|
20
|
+
export type DreamingConfig = {
|
|
21
|
+
/** Set to false to disable dreaming entirely and unregister the cron job. Default: true. */
|
|
22
|
+
enabled?: boolean;
|
|
23
|
+
/** Interval in hours between dream runs. Default: 4. */
|
|
24
|
+
intervalHours?: number;
|
|
17
25
|
};
|
|
18
26
|
export default function memoryExtension(pi: ExtensionAPI, injectedConfig?: PiMemoryExtensionConfig): void;
|
|
19
27
|
//# sourceMappingURL=extension.d.ts.map
|
package/dist/extension.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAEL,KAAK,qBAAqB,EAE3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAsBzC,MAAM,MAAM,uBAAuB,GAAG;IACpC,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,4FAA4F;IAC5F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAkEF,MAAM,CAAC,OAAO,UAAU,eAAe,CACrC,EAAE,EAAE,YAAY,EAChB,cAAc,CAAC,EAAE,uBAAuB,GACvC,IAAI,CAuMN"}
|
package/dist/extension.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
1
|
+
import path, { dirname } from 'node:path';
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
3
|
+
import { install, status, uninstall } from '@amaster.ai/pi-shared/scheduler';
|
|
2
4
|
import { loadPiSettings, resolveHome } from '@amaster.ai/pi-shared/settings';
|
|
3
5
|
import { createExtractionRunner, } from './background-extraction.js';
|
|
4
6
|
import { MemoryStore } from './store.js';
|
|
5
7
|
import { createMemoryTools } from './tools.js';
|
|
8
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
6
9
|
const SETTINGS_KEY = 'pi-memory';
|
|
7
10
|
const STATUS_KEY = 'pi-memory';
|
|
8
11
|
const MEMORY_GUIDANCE = [
|
|
@@ -31,6 +34,8 @@ function resolveConfig(raw) {
|
|
|
31
34
|
resolved.store = raw.store;
|
|
32
35
|
if (raw?.extractionModel)
|
|
33
36
|
resolved.extractionModel = raw.extractionModel;
|
|
37
|
+
if (raw?.dreaming)
|
|
38
|
+
resolved.dreaming = raw.dreaming;
|
|
34
39
|
return resolved;
|
|
35
40
|
}
|
|
36
41
|
function loadSettings(cwd) {
|
|
@@ -44,9 +49,36 @@ function loadSettings(cwd) {
|
|
|
44
49
|
return undefined;
|
|
45
50
|
}
|
|
46
51
|
}
|
|
52
|
+
const DREAM_JOB_NAME = 'ai.pi.memory-dream';
|
|
53
|
+
const DEFAULT_DREAM_INTERVAL_HOURS = 4;
|
|
54
|
+
async function registerDreamingCron(dreaming) {
|
|
55
|
+
try {
|
|
56
|
+
if (dreaming?.enabled === false) {
|
|
57
|
+
const current = await status(DREAM_JOB_NAME);
|
|
58
|
+
if (current === 'installed') {
|
|
59
|
+
await uninstall(DREAM_JOB_NAME);
|
|
60
|
+
}
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const current = await status(DREAM_JOB_NAME);
|
|
64
|
+
if (current === 'installed')
|
|
65
|
+
return;
|
|
66
|
+
const dreamBin = path.resolve(__dirname, 'cli/dream.js');
|
|
67
|
+
const intervalHours = dreaming?.intervalHours ?? DEFAULT_DREAM_INTERVAL_HOURS;
|
|
68
|
+
await install({
|
|
69
|
+
name: DREAM_JOB_NAME,
|
|
70
|
+
command: process.execPath,
|
|
71
|
+
args: [dreamBin, '--once'],
|
|
72
|
+
intervalSeconds: intervalHours * 3600,
|
|
73
|
+
description: 'Pi memory consolidation and dedup',
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
// Non-fatal: cron registration failure should not block the extension
|
|
78
|
+
}
|
|
79
|
+
}
|
|
47
80
|
export default function memoryExtension(pi, injectedConfig) {
|
|
48
81
|
let store;
|
|
49
|
-
let snapshot = '';
|
|
50
82
|
let extractionRunner;
|
|
51
83
|
pi.on('session_start', async (_event, ctx) => {
|
|
52
84
|
const fileConfig = loadSettings(ctx.cwd);
|
|
@@ -64,7 +96,7 @@ export default function memoryExtension(pi, injectedConfig) {
|
|
|
64
96
|
store = new MemoryStore(opts);
|
|
65
97
|
}
|
|
66
98
|
await store.loadFromDisk();
|
|
67
|
-
snapshot = store.formatAllForSystemPrompt();
|
|
99
|
+
const snapshot = store.formatAllForSystemPrompt();
|
|
68
100
|
ctx.ui.setStatus(STATUS_KEY, snapshot ? 'memory: loaded' : 'memory: empty');
|
|
69
101
|
for (const tool of createMemoryTools(store)) {
|
|
70
102
|
pi.registerTool(tool);
|
|
@@ -78,6 +110,8 @@ export default function memoryExtension(pi, injectedConfig) {
|
|
|
78
110
|
onNotify: (msg, level) => ctx.ui.notify(msg, level),
|
|
79
111
|
});
|
|
80
112
|
}
|
|
113
|
+
// Auto-register dreaming cron job
|
|
114
|
+
await registerDreamingCron(config.dreaming);
|
|
81
115
|
}
|
|
82
116
|
catch (err) {
|
|
83
117
|
ctx.ui.setStatus(STATUS_KEY, 'memory: unavailable');
|
|
@@ -90,6 +124,10 @@ export default function memoryExtension(pi, injectedConfig) {
|
|
|
90
124
|
extractionRunner.onTurnEnd(event);
|
|
91
125
|
});
|
|
92
126
|
pi.on('before_agent_start', async (event) => {
|
|
127
|
+
if (store) {
|
|
128
|
+
await store.loadFromDisk();
|
|
129
|
+
}
|
|
130
|
+
const snapshot = store?.formatAllForSystemPrompt() ?? '';
|
|
93
131
|
const block = snapshot ? `${MEMORY_GUIDANCE}\n\n${snapshot}` : MEMORY_GUIDANCE;
|
|
94
132
|
return {
|
|
95
133
|
systemPrompt: event.systemPrompt ? `${event.systemPrompt}\n\n${block}` : block,
|
|
@@ -99,7 +137,6 @@ export default function memoryExtension(pi, injectedConfig) {
|
|
|
99
137
|
extractionRunner?.shutdown();
|
|
100
138
|
extractionRunner = undefined;
|
|
101
139
|
store = undefined;
|
|
102
|
-
snapshot = '';
|
|
103
140
|
});
|
|
104
141
|
pi.registerCommand('memory', {
|
|
105
142
|
description: 'Manage persistent memory. Subcommands: status, read, add, replace, remove.',
|
package/dist/extension.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7E,OAAO,EACL,sBAAsB,GAGvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,MAAM,YAAY,GAAG,WAAW,CAAC;AACjC,MAAM,UAAU,GAAG,WAAW,CAAC;AAE/B,MAAM,eAAe,GAAG;IACtB,mBAAmB;IACnB,EAAE;IACF,qHAAqH;IACrH,iGAAiG;IACjG,2GAA2G;IAC3G,EAAE;IACF,wOAAwO;IACxO,EAAE;IACF,6UAA6U;IAC7U,EAAE;IACF,kVAAkV;CACnV,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAoCb,SAAS,aAAa,CAAC,GAA6B;IAClD,MAAM,QAAQ,GAAmB;QAC/B,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC;QACrE,kBAAkB,EAAE,GAAG,EAAE,kBAAkB,IAAI,CAAC;KACjD,CAAC;IACF,IAAI,GAAG,EAAE,eAAe,KAAK,SAAS;QAAE,QAAQ,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC;IACvF,IAAI,GAAG,EAAE,aAAa,KAAK,SAAS;QAAE,QAAQ,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;IACjF,IAAI,GAAG,EAAE,KAAK;QAAE,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IAC3C,IAAI,GAAG,EAAE,eAAe;QAAE,QAAQ,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC;IACzE,IAAI,GAAG,EAAE,QAAQ;QAAE,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IACpD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,cAAc,CAAmC,YAAY,EAAE;YAC5E,GAAG;SACJ,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,MAAkC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAC5C,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAEvC,KAAK,UAAU,oBAAoB,CAAC,QAAyB;IAC3D,IAAI,CAAC;QACH,IAAI,QAAQ,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;YAC7C,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;gBAC5B,MAAM,SAAS,CAAC,cAAc,CAAC,CAAC;YAClC,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QAC7C,IAAI,OAAO,KAAK,WAAW;YAAE,OAAO;QAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACzD,MAAM,aAAa,GAAG,QAAQ,EAAE,aAAa,IAAI,4BAA4B,CAAC;QAC9E,MAAM,OAAO,CAAC;YACZ,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,OAAO,CAAC,QAAQ;YACzB,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;YAC1B,eAAe,EAAE,aAAa,GAAG,IAAI;YACrC,WAAW,EAAE,mCAAmC;SACjD,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;IACxE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CACrC,EAAgB,EAChB,cAAwC;IAExC,IAAI,KAA8B,CAAC;IACnC,IAAI,gBAA8C,CAAC;IAEnD,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC3C,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,cAAc,EAAE,CAAC,CAAC;QAEnE,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAiD,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnF,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS;oBAAE,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;gBACxF,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS;oBAAE,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;gBAClF,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;YACD,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,wBAAwB,EAAE,CAAC;YAElD,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;YAE5E,KAAK,MAAM,IAAI,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5C,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;YAED,IAAI,MAAM,CAAC,eAAe,IAAI,KAAK,EAAE,CAAC;gBACpC,gBAAgB,GAAG,sBAAsB,CAAC;oBACxC,KAAK;oBACL,WAAW,EAAE,MAAM,CAAC,eAAe;oBACnC,QAAQ,EAAE,MAAM,CAAC,kBAAkB;oBACnC,aAAa,EAAE,GAAG,CAAC,aAAsB;oBACzC,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;iBACpD,CAAC,CAAC;YACL,CAAC;YAED,kCAAkC;YAClC,MAAM,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;YACpD,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,mCAAmC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACrF,OAAO,CACR,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAChC,IAAI,CAAC,gBAAgB;YAAE,OAAO;QAC9B,gBAAgB,CAAC,SAAS,CAAC,KAAc,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAC1C,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,eAAe,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;QAC/E,OAAO;YACL,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK;SAC/E,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QACnC,gBAAgB,EAAE,QAAQ,EAAE,CAAC;QAC7B,gBAAgB,GAAG,SAAS,CAAC;QAC7B,KAAK,GAAG,SAAS,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE;QAC3B,WAAW,EAAE,4EAA4E;QACzF,sBAAsB,EAAE,CAAC,MAAM,EAAE,EAAE;YACjC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACrF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC;gBACrD,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,QAAQ,CAAC;YACvD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAE7C,QAAQ,UAAU,EAAE,CAAC;gBACnB,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC7C,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC5C,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,cAAc,SAAS,CAAC,UAAU,aAAa,SAAS,CAAC,KAAK,eAAe,UAAU,CAAC,UAAU,aAAa,UAAU,CAAC,KAAK,GAAG,EAClI,MAAM,CACP,CAAC;oBACF,MAAM;gBACR,CAAC;gBAED,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,MAAM,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;oBACnD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAA2B,CAAC,CAAC;oBAC7D,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAChC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,MAAM,WAAW,EAAE,MAAM,CAAC,CAAC;oBAC9C,CAAC;yBAAM,CAAC;wBACN,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,GAAG,MAAM,KAAK,MAAM,CAAC,KAAK,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC5F,MAAM,CACP,CAAC;oBACJ,CAAC;oBACD,MAAM;gBACR,CAAC;gBAED,KAAK,KAAK,CAAC,CAAC,CAAC;oBACX,IAAI,CAAC,IAAI,EAAE,CAAC;wBACV,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,4CAA4C,EAAE,SAAS,CAAC,CAAC;wBACvE,MAAM;oBACR,CAAC;oBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACnC,IAAI,MAAM,GAAsB,QAAQ,CAAC;oBACzC,IAAI,OAAO,GAAG,IAAI,CAAC;oBACnB,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;wBACvD,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAsB,CAAC;wBAC1C,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxC,CAAC;oBACD,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,4CAA4C,EAAE,SAAS,CAAC,CAAC;wBACvE,MAAM;oBACR,CAAC;oBACD,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBACnD,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,MAAM,GAAG,CAAC,CAAC,CAAC,WAAW,SAAS,CAAC,KAAK,EAAE,EACxE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CACvC,CAAC;oBACF,MAAM;gBACR,CAAC;gBAED,KAAK,SAAS,CAAC,CAAC,CAAC;oBACf,6DAA6D;oBAC7D,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC1B,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,gEAAgE,EAChE,SAAS,CACV,CAAC;wBACF,MAAM;oBACR,CAAC;oBACD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACvC,IAAI,OAAO,GAAsB,QAAQ,CAAC;oBAC1C,IAAI,WAAW,GAAG,IAAI,CAAC;oBACvB,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;wBAC/D,OAAO,GAAG,YAAY,CAAC,CAAC,CAAsB,CAAC;wBAC/C,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAChD,CAAC;oBACD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC3E,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;wBAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,gEAAgE,EAChE,SAAS,CACV,CAAC;wBACF,MAAM;oBACR,CAAC;oBACD,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;oBACxE,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,aAAa,CAAC,KAAK,EAAE,EACpF,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;oBACF,MAAM;gBACR,CAAC;gBAED,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,IAAI,CAAC,IAAI,EAAE,CAAC;wBACV,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iDAAiD,EAAE,SAAS,CAAC,CAAC;wBAC5E,MAAM;oBACR,CAAC;oBACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAClC,IAAI,QAAQ,GAAsB,QAAQ,CAAC;oBAC3C,IAAI,MAAM,GAAG,IAAI,CAAC;oBAClB,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;wBACrD,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAsB,CAAC;wBAC3C,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtC,CAAC;oBACD,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iDAAiD,EAAE,SAAS,CAAC,CAAC;wBAC5E,MAAM;oBACR,CAAC;oBACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;oBACtD,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,QAAQ,GAAG,CAAC,CAAC,CAAC,WAAW,QAAQ,CAAC,KAAK,EAAE,EAC5E,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CACtC,CAAC;oBACF,MAAM;gBACR,CAAC;gBAED;oBACE,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,oEAAoE,EACpE,SAAS,CACV,CAAC;YACN,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/dist/store.d.ts
CHANGED
|
@@ -34,10 +34,10 @@ export type MemoryResult = MemorySuccessResult | MemoryDriftError | MemoryErrorR
|
|
|
34
34
|
* Bounded curated memory with file persistence.
|
|
35
35
|
*
|
|
36
36
|
* Two parallel states:
|
|
37
|
-
* - `_systemPromptSnapshot`:
|
|
38
|
-
*
|
|
39
|
-
* - `memoryEntries` / `userEntries`: live state,
|
|
40
|
-
*
|
|
37
|
+
* - `_systemPromptSnapshot`: a sanitized prompt snapshot rebuilt explicitly
|
|
38
|
+
* by `loadFromDisk()`.
|
|
39
|
+
* - `memoryEntries` / `userEntries`: live state, refreshed by `read()`,
|
|
40
|
+
* mutated by tool calls, and persisted to disk.
|
|
41
41
|
*/
|
|
42
42
|
export declare class MemoryStore {
|
|
43
43
|
readonly dir: string;
|
|
@@ -75,6 +75,8 @@ export declare class MemoryStore {
|
|
|
75
75
|
private charLimit;
|
|
76
76
|
private charCount;
|
|
77
77
|
private successResponse;
|
|
78
|
+
private refreshLiveEntries;
|
|
79
|
+
private rebuildSystemPromptSnapshot;
|
|
78
80
|
private renderBlock;
|
|
79
81
|
private saveToDisk;
|
|
80
82
|
/**
|
package/dist/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,eAAe,eAAU,CAAC;AAEvC,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE7C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAetF;;;;;;;;GAQG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,oBAAoB,CAA0D;IACtF,OAAO,CAAC,MAAM,CAAS;gBAEX,IAAI,EAAE,kBAAkB;IAMpC;;;;;;;;;OASG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,eAAe,eAAU,CAAC;AAEvC,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE7C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAetF;;;;;;;;GAQG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,oBAAoB,CAA0D;IACtF,OAAO,CAAC,MAAM,CAAS;gBAEX,IAAI,EAAE,kBAAkB;IAMpC;;;;;;;;;OASG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAOnC,sFAAsF;IACtF,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM;IAInD,6EAA6E;IAC7E,wBAAwB,IAAI,MAAM;IAOlC,6CAA6C;IAC7C,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE;IAIpC,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA0CjE,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA2DzF,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAsCpE,IAAI,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAW9D,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,eAAe;YAgBT,kBAAkB;IAShC,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,WAAW;YAWL,UAAU;IAKxB;;;;;;OAMG;YACW,YAAY;YAOZ,mBAAmB;YAgCnB,YAAY;CA4B3B"}
|
package/dist/store.js
CHANGED
|
@@ -18,10 +18,10 @@ const DEFAULT_USER_CHAR_LIMIT = 1375;
|
|
|
18
18
|
* Bounded curated memory with file persistence.
|
|
19
19
|
*
|
|
20
20
|
* Two parallel states:
|
|
21
|
-
* - `_systemPromptSnapshot`:
|
|
22
|
-
*
|
|
23
|
-
* - `memoryEntries` / `userEntries`: live state,
|
|
24
|
-
*
|
|
21
|
+
* - `_systemPromptSnapshot`: a sanitized prompt snapshot rebuilt explicitly
|
|
22
|
+
* by `loadFromDisk()`.
|
|
23
|
+
* - `memoryEntries` / `userEntries`: live state, refreshed by `read()`,
|
|
24
|
+
* mutated by tool calls, and persisted to disk.
|
|
25
25
|
*/
|
|
26
26
|
export class MemoryStore {
|
|
27
27
|
dir;
|
|
@@ -48,12 +48,8 @@ export class MemoryStore {
|
|
|
48
48
|
*/
|
|
49
49
|
async loadFromDisk() {
|
|
50
50
|
await fs.mkdir(this.dir, { recursive: true });
|
|
51
|
-
|
|
52
|
-
this.
|
|
53
|
-
this.systemPromptSnapshot = {
|
|
54
|
-
memory: this.renderBlock('memory', sanitizeForSnapshot(this.memoryEntries, FILENAME.memory)),
|
|
55
|
-
user: this.renderBlock('user', sanitizeForSnapshot(this.userEntries, FILENAME.user)),
|
|
56
|
-
};
|
|
51
|
+
await this.refreshLiveEntries();
|
|
52
|
+
this.rebuildSystemPromptSnapshot();
|
|
57
53
|
this.loaded = true;
|
|
58
54
|
}
|
|
59
55
|
/** Return frozen snapshot for system prompt injection. Empty string if no entries. */
|
|
@@ -192,6 +188,9 @@ export class MemoryStore {
|
|
|
192
188
|
if (!this.loaded) {
|
|
193
189
|
await this.loadFromDisk();
|
|
194
190
|
}
|
|
191
|
+
else {
|
|
192
|
+
await this.refreshLiveEntries(target);
|
|
193
|
+
}
|
|
195
194
|
return this.successResponse(target);
|
|
196
195
|
}
|
|
197
196
|
// -- internals -----------------------------------------------------------
|
|
@@ -230,6 +229,20 @@ export class MemoryStore {
|
|
|
230
229
|
result.message = message;
|
|
231
230
|
return result;
|
|
232
231
|
}
|
|
232
|
+
async refreshLiveEntries(target) {
|
|
233
|
+
if (!target || target === 'memory') {
|
|
234
|
+
this.memoryEntries = dedupe(await readEntriesFile(this.pathFor('memory')));
|
|
235
|
+
}
|
|
236
|
+
if (!target || target === 'user') {
|
|
237
|
+
this.userEntries = dedupe(await readEntriesFile(this.pathFor('user')));
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
rebuildSystemPromptSnapshot() {
|
|
241
|
+
this.systemPromptSnapshot = {
|
|
242
|
+
memory: this.renderBlock('memory', sanitizeForSnapshot(this.memoryEntries, FILENAME.memory)),
|
|
243
|
+
user: this.renderBlock('user', sanitizeForSnapshot(this.userEntries, FILENAME.user)),
|
|
244
|
+
};
|
|
245
|
+
}
|
|
233
246
|
renderBlock(target, entries) {
|
|
234
247
|
if (entries.length === 0)
|
|
235
248
|
return '';
|
package/dist/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amaster.ai/pi-memory",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Pi extension providing persistent curated memory (MEMORY.md + USER.md) injected into the system prompt as a frozen snapshot.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package",
|
|
@@ -14,6 +14,9 @@
|
|
|
14
14
|
"sideEffects": false,
|
|
15
15
|
"main": "./dist/index.js",
|
|
16
16
|
"types": "./dist/index.d.ts",
|
|
17
|
+
"bin": {
|
|
18
|
+
"pi-memory-dream": "./dist/cli/dream.js"
|
|
19
|
+
},
|
|
17
20
|
"exports": {
|
|
18
21
|
".": {
|
|
19
22
|
"types": "./dist/index.d.ts",
|
|
@@ -39,6 +42,14 @@
|
|
|
39
42
|
"types": "./dist/background-extraction.d.ts",
|
|
40
43
|
"default": "./dist/background-extraction.js"
|
|
41
44
|
},
|
|
45
|
+
"./consolidation": {
|
|
46
|
+
"types": "./dist/consolidation.d.ts",
|
|
47
|
+
"default": "./dist/consolidation.js"
|
|
48
|
+
},
|
|
49
|
+
"./dreaming-state": {
|
|
50
|
+
"types": "./dist/dreaming-state.d.ts",
|
|
51
|
+
"default": "./dist/dreaming-state.js"
|
|
52
|
+
},
|
|
42
53
|
"./package.json": {
|
|
43
54
|
"default": "./package.json"
|
|
44
55
|
}
|
|
@@ -64,7 +75,9 @@
|
|
|
64
75
|
},
|
|
65
76
|
"dependencies": {
|
|
66
77
|
"proper-lockfile": "^4.1.2",
|
|
67
|
-
"@amaster.ai/pi-shared": "0.1.
|
|
78
|
+
"@amaster.ai/pi-shared": "0.1.4",
|
|
79
|
+
"@amaster.ai/pi-storage": "0.1.4",
|
|
80
|
+
"@amaster.ai/pi-memory-mem0": "0.1.4"
|
|
68
81
|
},
|
|
69
82
|
"peerDependencies": {
|
|
70
83
|
"@earendil-works/pi-agent-core": ">=0.74.0",
|