hippo-memory 0.8.1 → 0.9.0
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 +71 -2
- package/dist/cli.d.ts +5 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +581 -211
- package/dist/cli.js.map +1 -1
- package/dist/consolidate.d.ts.map +1 -1
- package/dist/consolidate.js +12 -5
- package/dist/consolidate.js.map +1 -1
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +149 -100
- package/dist/db.js.map +1 -1
- package/dist/handoff.d.ts +29 -0
- package/dist/handoff.d.ts.map +1 -0
- package/dist/handoff.js +30 -0
- package/dist/handoff.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/search.d.ts +19 -0
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +35 -1
- package/dist/search.js.map +1 -1
- package/dist/store.d.ts +18 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +209 -99
- package/dist/store.js.map +1 -1
- package/dist/working-memory.d.ts +59 -0
- package/dist/working-memory.d.ts.map +1 -0
- package/dist/working-memory.js +149 -0
- package/dist/working-memory.js.map +1 -0
- package/extensions/openclaw-plugin/index.ts +569 -495
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
package/dist/db.js
CHANGED
|
@@ -3,83 +3,83 @@ import * as path from 'path';
|
|
|
3
3
|
import { createRequire } from 'module';
|
|
4
4
|
const require = createRequire(import.meta.url);
|
|
5
5
|
const { DatabaseSync } = require('node:sqlite');
|
|
6
|
-
const CURRENT_SCHEMA_VERSION =
|
|
6
|
+
const CURRENT_SCHEMA_VERSION = 6;
|
|
7
7
|
const MIGRATIONS = [
|
|
8
8
|
{
|
|
9
9
|
version: 1,
|
|
10
10
|
up: (db) => {
|
|
11
|
-
db.exec(`
|
|
12
|
-
CREATE TABLE IF NOT EXISTS memories (
|
|
13
|
-
id TEXT PRIMARY KEY,
|
|
14
|
-
created TEXT NOT NULL,
|
|
15
|
-
last_retrieved TEXT NOT NULL,
|
|
16
|
-
retrieval_count INTEGER NOT NULL,
|
|
17
|
-
strength REAL NOT NULL,
|
|
18
|
-
half_life_days REAL NOT NULL,
|
|
19
|
-
layer TEXT NOT NULL,
|
|
20
|
-
tags_json TEXT NOT NULL,
|
|
21
|
-
emotional_valence TEXT NOT NULL,
|
|
22
|
-
schema_fit REAL NOT NULL,
|
|
23
|
-
source TEXT NOT NULL,
|
|
24
|
-
outcome_score REAL,
|
|
25
|
-
conflicts_with_json TEXT NOT NULL,
|
|
26
|
-
pinned INTEGER NOT NULL,
|
|
27
|
-
confidence TEXT NOT NULL,
|
|
28
|
-
content TEXT NOT NULL,
|
|
29
|
-
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
30
|
-
);
|
|
31
|
-
|
|
32
|
-
CREATE INDEX IF NOT EXISTS idx_memories_layer_created ON memories(layer, created);
|
|
33
|
-
CREATE INDEX IF NOT EXISTS idx_memories_last_retrieved ON memories(last_retrieved);
|
|
34
|
-
|
|
35
|
-
CREATE TABLE IF NOT EXISTS consolidation_runs (
|
|
36
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
37
|
-
timestamp TEXT NOT NULL,
|
|
38
|
-
decayed INTEGER NOT NULL,
|
|
39
|
-
merged INTEGER NOT NULL,
|
|
40
|
-
removed INTEGER NOT NULL
|
|
41
|
-
);
|
|
11
|
+
db.exec(`
|
|
12
|
+
CREATE TABLE IF NOT EXISTS memories (
|
|
13
|
+
id TEXT PRIMARY KEY,
|
|
14
|
+
created TEXT NOT NULL,
|
|
15
|
+
last_retrieved TEXT NOT NULL,
|
|
16
|
+
retrieval_count INTEGER NOT NULL,
|
|
17
|
+
strength REAL NOT NULL,
|
|
18
|
+
half_life_days REAL NOT NULL,
|
|
19
|
+
layer TEXT NOT NULL,
|
|
20
|
+
tags_json TEXT NOT NULL,
|
|
21
|
+
emotional_valence TEXT NOT NULL,
|
|
22
|
+
schema_fit REAL NOT NULL,
|
|
23
|
+
source TEXT NOT NULL,
|
|
24
|
+
outcome_score REAL,
|
|
25
|
+
conflicts_with_json TEXT NOT NULL,
|
|
26
|
+
pinned INTEGER NOT NULL,
|
|
27
|
+
confidence TEXT NOT NULL,
|
|
28
|
+
content TEXT NOT NULL,
|
|
29
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
CREATE INDEX IF NOT EXISTS idx_memories_layer_created ON memories(layer, created);
|
|
33
|
+
CREATE INDEX IF NOT EXISTS idx_memories_last_retrieved ON memories(last_retrieved);
|
|
34
|
+
|
|
35
|
+
CREATE TABLE IF NOT EXISTS consolidation_runs (
|
|
36
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
37
|
+
timestamp TEXT NOT NULL,
|
|
38
|
+
decayed INTEGER NOT NULL,
|
|
39
|
+
merged INTEGER NOT NULL,
|
|
40
|
+
removed INTEGER NOT NULL
|
|
41
|
+
);
|
|
42
42
|
`);
|
|
43
43
|
},
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
version: 2,
|
|
47
47
|
up: (db) => {
|
|
48
|
-
db.exec(`
|
|
49
|
-
CREATE TABLE IF NOT EXISTS task_snapshots (
|
|
50
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
51
|
-
task TEXT NOT NULL,
|
|
52
|
-
summary TEXT NOT NULL,
|
|
53
|
-
next_step TEXT NOT NULL,
|
|
54
|
-
status TEXT NOT NULL,
|
|
55
|
-
source TEXT NOT NULL,
|
|
56
|
-
created_at TEXT NOT NULL,
|
|
57
|
-
updated_at TEXT NOT NULL
|
|
58
|
-
);
|
|
59
|
-
|
|
60
|
-
CREATE INDEX IF NOT EXISTS idx_task_snapshots_status_updated
|
|
61
|
-
ON task_snapshots(status, updated_at DESC, id DESC);
|
|
48
|
+
db.exec(`
|
|
49
|
+
CREATE TABLE IF NOT EXISTS task_snapshots (
|
|
50
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
51
|
+
task TEXT NOT NULL,
|
|
52
|
+
summary TEXT NOT NULL,
|
|
53
|
+
next_step TEXT NOT NULL,
|
|
54
|
+
status TEXT NOT NULL,
|
|
55
|
+
source TEXT NOT NULL,
|
|
56
|
+
created_at TEXT NOT NULL,
|
|
57
|
+
updated_at TEXT NOT NULL
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
CREATE INDEX IF NOT EXISTS idx_task_snapshots_status_updated
|
|
61
|
+
ON task_snapshots(status, updated_at DESC, id DESC);
|
|
62
62
|
`);
|
|
63
63
|
},
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
66
|
version: 3,
|
|
67
67
|
up: (db) => {
|
|
68
|
-
db.exec(`
|
|
69
|
-
CREATE TABLE IF NOT EXISTS memory_conflicts (
|
|
70
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
71
|
-
memory_a_id TEXT NOT NULL,
|
|
72
|
-
memory_b_id TEXT NOT NULL,
|
|
73
|
-
reason TEXT NOT NULL,
|
|
74
|
-
score REAL NOT NULL DEFAULT 0,
|
|
75
|
-
status TEXT NOT NULL,
|
|
76
|
-
detected_at TEXT NOT NULL,
|
|
77
|
-
updated_at TEXT NOT NULL,
|
|
78
|
-
UNIQUE(memory_a_id, memory_b_id)
|
|
79
|
-
);
|
|
80
|
-
|
|
81
|
-
CREATE INDEX IF NOT EXISTS idx_memory_conflicts_status_updated
|
|
82
|
-
ON memory_conflicts(status, updated_at DESC, id DESC);
|
|
68
|
+
db.exec(`
|
|
69
|
+
CREATE TABLE IF NOT EXISTS memory_conflicts (
|
|
70
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
71
|
+
memory_a_id TEXT NOT NULL,
|
|
72
|
+
memory_b_id TEXT NOT NULL,
|
|
73
|
+
reason TEXT NOT NULL,
|
|
74
|
+
score REAL NOT NULL DEFAULT 0,
|
|
75
|
+
status TEXT NOT NULL,
|
|
76
|
+
detected_at TEXT NOT NULL,
|
|
77
|
+
updated_at TEXT NOT NULL,
|
|
78
|
+
UNIQUE(memory_a_id, memory_b_id)
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
CREATE INDEX IF NOT EXISTS idx_memory_conflicts_status_updated
|
|
82
|
+
ON memory_conflicts(status, updated_at DESC, id DESC);
|
|
83
83
|
`);
|
|
84
84
|
},
|
|
85
85
|
},
|
|
@@ -89,28 +89,74 @@ const MIGRATIONS = [
|
|
|
89
89
|
if (!tableHasColumn(db, 'task_snapshots', 'session_id')) {
|
|
90
90
|
db.exec(`ALTER TABLE task_snapshots ADD COLUMN session_id TEXT`);
|
|
91
91
|
}
|
|
92
|
-
db.exec(`
|
|
93
|
-
CREATE TABLE IF NOT EXISTS session_events (
|
|
94
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
95
|
-
session_id TEXT NOT NULL,
|
|
96
|
-
task TEXT,
|
|
97
|
-
event_type TEXT NOT NULL,
|
|
98
|
-
content TEXT NOT NULL,
|
|
99
|
-
source TEXT NOT NULL,
|
|
100
|
-
metadata_json TEXT NOT NULL,
|
|
101
|
-
created_at TEXT NOT NULL
|
|
102
|
-
);
|
|
103
|
-
|
|
104
|
-
CREATE INDEX IF NOT EXISTS idx_session_events_session_created
|
|
105
|
-
ON session_events(session_id, created_at DESC, id DESC);
|
|
106
|
-
|
|
107
|
-
CREATE INDEX IF NOT EXISTS idx_session_events_task_created
|
|
108
|
-
ON session_events(task, created_at DESC, id DESC);
|
|
92
|
+
db.exec(`
|
|
93
|
+
CREATE TABLE IF NOT EXISTS session_events (
|
|
94
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
95
|
+
session_id TEXT NOT NULL,
|
|
96
|
+
task TEXT,
|
|
97
|
+
event_type TEXT NOT NULL,
|
|
98
|
+
content TEXT NOT NULL,
|
|
99
|
+
source TEXT NOT NULL,
|
|
100
|
+
metadata_json TEXT NOT NULL,
|
|
101
|
+
created_at TEXT NOT NULL
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
CREATE INDEX IF NOT EXISTS idx_session_events_session_created
|
|
105
|
+
ON session_events(session_id, created_at DESC, id DESC);
|
|
106
|
+
|
|
107
|
+
CREATE INDEX IF NOT EXISTS idx_session_events_task_created
|
|
108
|
+
ON session_events(task, created_at DESC, id DESC);
|
|
109
|
+
`);
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
version: 5,
|
|
114
|
+
up: (db) => {
|
|
115
|
+
db.exec(`
|
|
116
|
+
CREATE TABLE IF NOT EXISTS session_handoffs (
|
|
117
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
118
|
+
session_id TEXT NOT NULL,
|
|
119
|
+
repo_root TEXT,
|
|
120
|
+
task_id TEXT,
|
|
121
|
+
summary TEXT NOT NULL,
|
|
122
|
+
next_action TEXT,
|
|
123
|
+
artifacts_json TEXT NOT NULL DEFAULT '[]',
|
|
124
|
+
created_at TEXT NOT NULL
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
CREATE INDEX IF NOT EXISTS idx_session_handoffs_session
|
|
128
|
+
ON session_handoffs(session_id, created_at DESC);
|
|
129
|
+
`);
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
version: 6,
|
|
134
|
+
up: (db) => {
|
|
135
|
+
db.exec(`
|
|
136
|
+
CREATE TABLE IF NOT EXISTS working_memory (
|
|
137
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
138
|
+
scope TEXT NOT NULL,
|
|
139
|
+
session_id TEXT,
|
|
140
|
+
task_id TEXT,
|
|
141
|
+
importance REAL NOT NULL DEFAULT 0,
|
|
142
|
+
content TEXT NOT NULL,
|
|
143
|
+
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
144
|
+
created_at TEXT NOT NULL,
|
|
145
|
+
updated_at TEXT NOT NULL
|
|
146
|
+
);
|
|
147
|
+
|
|
148
|
+
CREATE INDEX IF NOT EXISTS idx_working_memory_scope
|
|
149
|
+
ON working_memory(scope, importance DESC, created_at DESC);
|
|
150
|
+
|
|
151
|
+
CREATE INDEX IF NOT EXISTS idx_working_memory_session
|
|
152
|
+
ON working_memory(session_id, created_at DESC);
|
|
109
153
|
`);
|
|
110
154
|
},
|
|
111
155
|
},
|
|
112
156
|
];
|
|
113
157
|
function tableHasColumn(db, tableName, columnName) {
|
|
158
|
+
if (!/^[a-z_]+$/i.test(tableName))
|
|
159
|
+
throw new Error(`Invalid table name: ${tableName}`);
|
|
114
160
|
const rows = db.prepare(`PRAGMA table_info(${tableName})`).all();
|
|
115
161
|
return rows.some((row) => row.name === columnName);
|
|
116
162
|
}
|
|
@@ -125,6 +171,9 @@ export function openHippoDb(hippoRoot) {
|
|
|
125
171
|
const db = new DatabaseSync(getHippoDbPath(hippoRoot));
|
|
126
172
|
try {
|
|
127
173
|
db.exec('PRAGMA journal_mode = WAL');
|
|
174
|
+
db.exec('PRAGMA busy_timeout = 5000');
|
|
175
|
+
db.exec('PRAGMA synchronous = NORMAL');
|
|
176
|
+
db.exec('PRAGMA wal_autocheckpoint = 100');
|
|
128
177
|
db.exec('PRAGMA foreign_keys = ON');
|
|
129
178
|
runMigrations(db);
|
|
130
179
|
return db;
|
|
@@ -161,11 +210,11 @@ function runMigrations(db) {
|
|
|
161
210
|
ensureOptionalFts(db);
|
|
162
211
|
}
|
|
163
212
|
function ensureMetaTable(db) {
|
|
164
|
-
db.exec(`
|
|
165
|
-
CREATE TABLE IF NOT EXISTS meta (
|
|
166
|
-
key TEXT PRIMARY KEY,
|
|
167
|
-
value TEXT NOT NULL
|
|
168
|
-
);
|
|
213
|
+
db.exec(`
|
|
214
|
+
CREATE TABLE IF NOT EXISTS meta (
|
|
215
|
+
key TEXT PRIMARY KEY,
|
|
216
|
+
value TEXT NOT NULL
|
|
217
|
+
);
|
|
169
218
|
`);
|
|
170
219
|
}
|
|
171
220
|
export function getSchemaVersion(db) {
|
|
@@ -204,17 +253,17 @@ function ensureOptionalFts(db) {
|
|
|
204
253
|
db.prepare(`INSERT INTO meta(key, value) VALUES('fts5_available', ?) ON CONFLICT(key) DO UPDATE SET value=excluded.value`).run(available ? '1' : '0');
|
|
205
254
|
}
|
|
206
255
|
function backfillFtsIndex(db) {
|
|
207
|
-
db.exec(`
|
|
208
|
-
INSERT INTO memories_fts(id, content, tags)
|
|
209
|
-
SELECT m.id, m.content, m.tags_json
|
|
210
|
-
FROM memories m
|
|
211
|
-
WHERE NOT EXISTS (
|
|
212
|
-
SELECT 1 FROM memories_fts f WHERE f.id = m.id
|
|
213
|
-
)
|
|
256
|
+
db.exec(`
|
|
257
|
+
INSERT INTO memories_fts(id, content, tags)
|
|
258
|
+
SELECT m.id, m.content, m.tags_json
|
|
259
|
+
FROM memories m
|
|
260
|
+
WHERE NOT EXISTS (
|
|
261
|
+
SELECT 1 FROM memories_fts f WHERE f.id = m.id
|
|
262
|
+
)
|
|
214
263
|
`);
|
|
215
|
-
db.exec(`
|
|
216
|
-
DELETE FROM memories_fts
|
|
217
|
-
WHERE id NOT IN (SELECT id FROM memories)
|
|
264
|
+
db.exec(`
|
|
265
|
+
DELETE FROM memories_fts
|
|
266
|
+
WHERE id NOT IN (SELECT id FROM memories)
|
|
218
267
|
`);
|
|
219
268
|
}
|
|
220
269
|
export function closeHippoDb(db) {
|
|
@@ -231,13 +280,13 @@ export function isFtsAvailable(db) {
|
|
|
231
280
|
return getMeta(db, 'fts5_available', '0') === '1';
|
|
232
281
|
}
|
|
233
282
|
export function pruneConsolidationRuns(db, keep = 50) {
|
|
234
|
-
db.prepare(`
|
|
235
|
-
DELETE FROM consolidation_runs
|
|
236
|
-
WHERE id NOT IN (
|
|
237
|
-
SELECT id FROM consolidation_runs
|
|
238
|
-
ORDER BY timestamp DESC, id DESC
|
|
239
|
-
LIMIT ?
|
|
240
|
-
)
|
|
283
|
+
db.prepare(`
|
|
284
|
+
DELETE FROM consolidation_runs
|
|
285
|
+
WHERE id NOT IN (
|
|
286
|
+
SELECT id FROM consolidation_runs
|
|
287
|
+
ORDER BY timestamp DESC, id DESC
|
|
288
|
+
LIMIT ?
|
|
289
|
+
)
|
|
241
290
|
`).run(keep);
|
|
242
291
|
}
|
|
243
292
|
//# sourceMappingURL=db.js.map
|
package/dist/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session handoff types and helpers.
|
|
3
|
+
*
|
|
4
|
+
* A handoff captures the state of a session so that a successor
|
|
5
|
+
* session (or a different agent) can pick up where the previous
|
|
6
|
+
* one left off.
|
|
7
|
+
*/
|
|
8
|
+
export interface SessionHandoff {
|
|
9
|
+
version: 1;
|
|
10
|
+
sessionId: string;
|
|
11
|
+
repoRoot?: string;
|
|
12
|
+
taskId?: string;
|
|
13
|
+
summary: string;
|
|
14
|
+
nextAction?: string;
|
|
15
|
+
artifacts?: string[];
|
|
16
|
+
updatedAt: string;
|
|
17
|
+
}
|
|
18
|
+
export interface SessionHandoffRow {
|
|
19
|
+
id: number;
|
|
20
|
+
session_id: string;
|
|
21
|
+
repo_root: string | null;
|
|
22
|
+
task_id: string | null;
|
|
23
|
+
summary: string;
|
|
24
|
+
next_action: string | null;
|
|
25
|
+
artifacts_json: string;
|
|
26
|
+
created_at: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function rowToSessionHandoff(row: SessionHandoffRow): SessionHandoff;
|
|
29
|
+
//# sourceMappingURL=handoff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../src/handoff.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,iBAAiB,GAAG,cAAc,CAqB1E"}
|
package/dist/handoff.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session handoff types and helpers.
|
|
3
|
+
*
|
|
4
|
+
* A handoff captures the state of a session so that a successor
|
|
5
|
+
* session (or a different agent) can pick up where the previous
|
|
6
|
+
* one left off.
|
|
7
|
+
*/
|
|
8
|
+
export function rowToSessionHandoff(row) {
|
|
9
|
+
let artifacts = [];
|
|
10
|
+
try {
|
|
11
|
+
const parsed = JSON.parse(row.artifacts_json);
|
|
12
|
+
if (Array.isArray(parsed)) {
|
|
13
|
+
artifacts = parsed.map((item) => String(item));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
artifacts = [];
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
version: 1,
|
|
21
|
+
sessionId: row.session_id,
|
|
22
|
+
repoRoot: row.repo_root ?? undefined,
|
|
23
|
+
taskId: row.task_id ?? undefined,
|
|
24
|
+
summary: row.summary,
|
|
25
|
+
nextAction: row.next_action ?? undefined,
|
|
26
|
+
artifacts,
|
|
27
|
+
updatedAt: row.created_at,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=handoff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../src/handoff.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAwBH,MAAM,UAAU,mBAAmB,CAAC,GAAsB;IACxD,IAAI,SAAS,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,QAAQ,EAAE,GAAG,CAAC,SAAS,IAAI,SAAS;QACpC,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;QAChC,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;QACxC,SAAS;QACT,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
* Hippo public API - re-exports for programmatic use.
|
|
3
3
|
*/
|
|
4
4
|
export { MemoryEntry, Layer, EmotionalValence, ConfidenceLevel, calculateStrength, resolveConfidence, createMemory, applyOutcome, generateId, computeSchemaFit } from './memory.js';
|
|
5
|
-
export { search, hybridSearch, markRetrieved, estimateTokens, textOverlap, SearchResult } from './search.js';
|
|
6
|
-
export { initStore, loadAllEntries, loadSearchEntries, writeEntry, readEntry, deleteEntry, loadIndex, rebuildIndex, saveActiveTaskSnapshot, loadActiveTaskSnapshot, clearActiveTaskSnapshot, appendSessionEvent, listSessionEvents, listMemoryConflicts, replaceDetectedConflicts, resolveConflict, } from './store.js';
|
|
5
|
+
export { search, hybridSearch, markRetrieved, estimateTokens, textOverlap, tokenize, explainMatch, SearchResult, MatchExplanation } from './search.js';
|
|
6
|
+
export { initStore, loadAllEntries, loadSearchEntries, writeEntry, readEntry, deleteEntry, loadIndex, rebuildIndex, saveActiveTaskSnapshot, loadActiveTaskSnapshot, clearActiveTaskSnapshot, appendSessionEvent, listSessionEvents, listMemoryConflicts, replaceDetectedConflicts, resolveConflict, saveSessionHandoff, loadLatestHandoff, loadHandoffById, } from './store.js';
|
|
7
|
+
export { SessionHandoff } from './handoff.js';
|
|
7
8
|
export { consolidate, ConsolidationResult } from './consolidate.js';
|
|
8
9
|
export { isEmbeddingAvailable, getEmbedding, cosineSimilarity, loadEmbeddingIndex, saveEmbeddingIndex, embedMemory, embedAll, } from './embeddings.js';
|
|
9
10
|
export { captureError, extractLessons, deduplicateLesson, runWatched, fetchGitLog, } from './autolearn.js';
|
|
10
11
|
export { getGlobalRoot, initGlobal, promoteToGlobal, searchBoth, searchBothHybrid, syncGlobalToLocal, HybridSearchOptions, transferScore, shareMemory, listPeers, autoShare, } from './shared.js';
|
|
12
|
+
export { wmPush, wmRead, wmClear, wmFlush, WorkingMemoryItem, WM_MAX_ENTRIES, } from './working-memory.js';
|
|
11
13
|
export { importChatGPT, importClaude, importCursor, importGenericFile, importMarkdown, importEntries, ImportResult, ImportOptions, } from './importers.js';
|
|
12
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpL,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpL,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACvJ,OAAO,EACL,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,SAAS,EACT,WAAW,EACX,SAAS,EACT,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGpE,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,QAAQ,GACT,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,aAAa,EACb,UAAU,EACV,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,SAAS,EACT,SAAS,GACV,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,iBAAiB,EACjB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,aAAa,GACd,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Hippo public API - re-exports for programmatic use.
|
|
3
3
|
*/
|
|
4
4
|
export { Layer, calculateStrength, resolveConfidence, createMemory, applyOutcome, generateId, computeSchemaFit } from './memory.js';
|
|
5
|
-
export { search, hybridSearch, markRetrieved, estimateTokens, textOverlap } from './search.js';
|
|
6
|
-
export { initStore, loadAllEntries, loadSearchEntries, writeEntry, readEntry, deleteEntry, loadIndex, rebuildIndex, saveActiveTaskSnapshot, loadActiveTaskSnapshot, clearActiveTaskSnapshot, appendSessionEvent, listSessionEvents, listMemoryConflicts, replaceDetectedConflicts, resolveConflict, } from './store.js';
|
|
5
|
+
export { search, hybridSearch, markRetrieved, estimateTokens, textOverlap, tokenize, explainMatch } from './search.js';
|
|
6
|
+
export { initStore, loadAllEntries, loadSearchEntries, writeEntry, readEntry, deleteEntry, loadIndex, rebuildIndex, saveActiveTaskSnapshot, loadActiveTaskSnapshot, clearActiveTaskSnapshot, appendSessionEvent, listSessionEvents, listMemoryConflicts, replaceDetectedConflicts, resolveConflict, saveSessionHandoff, loadLatestHandoff, loadHandoffById, } from './store.js';
|
|
7
7
|
export { consolidate } from './consolidate.js';
|
|
8
8
|
// Feature 1: Embedding search
|
|
9
9
|
export { isEmbeddingAvailable, getEmbedding, cosineSimilarity, loadEmbeddingIndex, saveEmbeddingIndex, embedMemory, embedAll, } from './embeddings.js';
|
|
@@ -11,6 +11,8 @@ export { isEmbeddingAvailable, getEmbedding, cosineSimilarity, loadEmbeddingInde
|
|
|
11
11
|
export { captureError, extractLessons, deduplicateLesson, runWatched, fetchGitLog, } from './autolearn.js';
|
|
12
12
|
// Feature 3: Cross-agent shared memory
|
|
13
13
|
export { getGlobalRoot, initGlobal, promoteToGlobal, searchBoth, searchBothHybrid, syncGlobalToLocal, transferScore, shareMemory, listPeers, autoShare, } from './shared.js';
|
|
14
|
+
// Feature 5: Working memory
|
|
15
|
+
export { wmPush, wmRead, wmClear, wmFlush, WM_MAX_ENTRIES, } from './working-memory.js';
|
|
14
16
|
// Feature 4: Memory importers
|
|
15
17
|
export { importChatGPT, importClaude, importCursor, importGenericFile, importMarkdown, importEntries, } from './importers.js';
|
|
16
18
|
//# 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;;GAEG;AAEH,OAAO,EAAe,KAAK,EAAqC,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpL,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAe,KAAK,EAAqC,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpL,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAkC,MAAM,aAAa,CAAC;AACvJ,OAAO,EACL,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,SAAS,EACT,WAAW,EACX,SAAS,EACT,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GAChB,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,WAAW,EAAuB,MAAM,kBAAkB,CAAC;AAEpE,8BAA8B;AAC9B,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,QAAQ,GACT,MAAM,iBAAiB,CAAC;AAEzB,oCAAoC;AACpC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,uCAAuC;AACvC,OAAO,EACL,aAAa,EACb,UAAU,EACV,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EAEjB,aAAa,EACb,WAAW,EACX,SAAS,EACT,SAAS,GACV,MAAM,aAAa,CAAC;AAErB,4BAA4B;AAC5B,OAAO,EACL,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EAEP,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,8BAA8B;AAC9B,OAAO,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,aAAa,GAGd,MAAM,gBAAgB,CAAC"}
|
package/dist/search.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Zero external dependencies when embeddings are not available.
|
|
4
4
|
*/
|
|
5
5
|
import { MemoryEntry } from './memory.js';
|
|
6
|
+
export declare function tokenize(text: string): string[];
|
|
6
7
|
/**
|
|
7
8
|
* Rough token estimate: characters / 4 (works well for English text).
|
|
8
9
|
*/
|
|
@@ -45,6 +46,24 @@ export declare function search(query: string, entries: MemoryEntry[], options?:
|
|
|
45
46
|
* Returns the mutated copies (caller must persist to disk).
|
|
46
47
|
*/
|
|
47
48
|
export declare function markRetrieved(entries: MemoryEntry[], now?: Date): MemoryEntry[];
|
|
49
|
+
export interface MatchExplanation {
|
|
50
|
+
/** Human-readable reason string */
|
|
51
|
+
reason: string;
|
|
52
|
+
/** Which query terms matched in the document (BM25 component) */
|
|
53
|
+
matchedTerms: string[];
|
|
54
|
+
/** Whether BM25 contributed to the score */
|
|
55
|
+
hasBm25: boolean;
|
|
56
|
+
/** Whether embedding similarity contributed to the score */
|
|
57
|
+
hasEmbedding: boolean;
|
|
58
|
+
/** Raw cosine similarity (0 when embeddings not used) */
|
|
59
|
+
cosineSimilarity: number;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Explain why a search result matched a query.
|
|
63
|
+
* Computes which query terms overlapped with the document and whether
|
|
64
|
+
* BM25 and/or embedding similarity contributed to the composite score.
|
|
65
|
+
*/
|
|
66
|
+
export declare function explainMatch(query: string, result: SearchResult): MatchExplanation;
|
|
48
67
|
/**
|
|
49
68
|
* Compute text overlap ratio between two strings (Jaccard on token sets).
|
|
50
69
|
*/
|
package/dist/search.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAqB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAqB,MAAM,aAAa,CAAC;AAY7D,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAM/C;AAgED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAiBD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,WAAW,EAAE,EACtB,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CACrB,GACL,OAAO,CAAC,YAAY,EAAE,CAAC,CAuFzB;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CACpB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,WAAW,EAAE,EACtB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAChE,YAAY,EAAE,CA+ChB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,GAAG,GAAE,IAAiB,GAAG,WAAW,EAAE,CAc3F;AAMD,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,4CAA4C;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,4DAA4D;IAC5D,YAAY,EAAE,OAAO,CAAC;IACtB,yDAAyD;IACzD,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAgClF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAaxD"}
|
package/dist/search.js
CHANGED
|
@@ -7,7 +7,7 @@ import { isEmbeddingAvailable, getEmbedding, cosineSimilarity, loadEmbeddingInde
|
|
|
7
7
|
// ---------------------------------------------------------------------------
|
|
8
8
|
// Tokenizer
|
|
9
9
|
// ---------------------------------------------------------------------------
|
|
10
|
-
function tokenize(text) {
|
|
10
|
+
export function tokenize(text) {
|
|
11
11
|
return text
|
|
12
12
|
.toLowerCase()
|
|
13
13
|
.replace(/[^\w\s]/g, ' ')
|
|
@@ -221,6 +221,40 @@ export function markRetrieved(entries, now = new Date()) {
|
|
|
221
221
|
return updated;
|
|
222
222
|
});
|
|
223
223
|
}
|
|
224
|
+
/**
|
|
225
|
+
* Explain why a search result matched a query.
|
|
226
|
+
* Computes which query terms overlapped with the document and whether
|
|
227
|
+
* BM25 and/or embedding similarity contributed to the composite score.
|
|
228
|
+
*/
|
|
229
|
+
export function explainMatch(query, result) {
|
|
230
|
+
const queryTerms = new Set(tokenize(query));
|
|
231
|
+
const docTerms = new Set(tokenize(`${result.entry.content} ${result.entry.tags.join(' ')}`));
|
|
232
|
+
const matchedTerms = [];
|
|
233
|
+
for (const term of queryTerms) {
|
|
234
|
+
if (docTerms.has(term)) {
|
|
235
|
+
matchedTerms.push(term);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
const hasBm25 = result.bm25 > 0;
|
|
239
|
+
const hasEmbedding = result.cosine > 0;
|
|
240
|
+
const parts = [];
|
|
241
|
+
if (hasBm25) {
|
|
242
|
+
parts.push(`BM25: matched terms [${matchedTerms.join(', ')}]`);
|
|
243
|
+
}
|
|
244
|
+
if (hasEmbedding) {
|
|
245
|
+
parts.push(`embedding similarity: ${result.cosine.toFixed(3)}`);
|
|
246
|
+
}
|
|
247
|
+
if (parts.length === 0) {
|
|
248
|
+
parts.push('no direct term or embedding match');
|
|
249
|
+
}
|
|
250
|
+
return {
|
|
251
|
+
reason: parts.join('; '),
|
|
252
|
+
matchedTerms,
|
|
253
|
+
hasBm25,
|
|
254
|
+
hasEmbedding,
|
|
255
|
+
cosineSimilarity: result.cosine,
|
|
256
|
+
};
|
|
257
|
+
}
|
|
224
258
|
/**
|
|
225
259
|
* Compute text overlap ratio between two strings (Jaccard on token sets).
|
|
226
260
|
*/
|
package/dist/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAe,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAEzB,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
|
package/dist/store.d.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { MemoryEntry, Layer } from './memory.js';
|
|
8
8
|
import { getHippoDbPath } from './db.js';
|
|
9
|
+
import { SessionHandoff } from './handoff.js';
|
|
9
10
|
export interface IndexEntry {
|
|
10
11
|
id: string;
|
|
11
12
|
file: string;
|
|
@@ -83,6 +84,11 @@ export declare function readEntry(hippoRoot: string, id: string): MemoryEntry |
|
|
|
83
84
|
* Delete an entry from SQLite and mirrors.
|
|
84
85
|
*/
|
|
85
86
|
export declare function deleteEntry(hippoRoot: string, id: string): boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Batch-write and batch-delete entries in a single transaction.
|
|
89
|
+
* Used by consolidation to avoid N open/close cycles.
|
|
90
|
+
*/
|
|
91
|
+
export declare function batchWriteAndDelete(hippoRoot: string, toWrite: MemoryEntry[], toDeleteIds: string[]): void;
|
|
86
92
|
/**
|
|
87
93
|
* Load all entries from SQLite.
|
|
88
94
|
*/
|
|
@@ -148,5 +154,17 @@ export declare function resolveConflict(hippoRoot: string, conflictId: number, k
|
|
|
148
154
|
conflict: MemoryConflict;
|
|
149
155
|
loserId: string;
|
|
150
156
|
} | null;
|
|
157
|
+
/**
|
|
158
|
+
* Save a session handoff record. Returns the persisted handoff.
|
|
159
|
+
*/
|
|
160
|
+
export declare function saveSessionHandoff(hippoRoot: string, handoff: Omit<SessionHandoff, 'updatedAt'>): SessionHandoff;
|
|
161
|
+
/**
|
|
162
|
+
* Load the most recent handoff, optionally filtered by session ID.
|
|
163
|
+
*/
|
|
164
|
+
export declare function loadLatestHandoff(hippoRoot: string, sessionId?: string): SessionHandoff | null;
|
|
165
|
+
/**
|
|
166
|
+
* Load a specific handoff by its row ID.
|
|
167
|
+
*/
|
|
168
|
+
export declare function loadHandoffById(hippoRoot: string, id: number): SessionHandoff | null;
|
|
151
169
|
export { getHippoDbPath };
|
|
152
170
|
//# sourceMappingURL=store.d.ts.map
|