@pcircle/memesh 4.2.10 → 4.3.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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.de.md +14 -13
- package/README.es.md +14 -13
- package/README.fr.md +14 -13
- package/README.ja.md +14 -13
- package/README.ko.md +14 -13
- package/README.md +15 -14
- package/README.pt.md +14 -13
- package/README.th.md +15 -14
- package/README.vi.md +14 -13
- package/README.zh-CN.md +12 -11
- package/README.zh-TW.md +12 -11
- package/dashboard/dist/index.html +8 -8
- package/dist/cli/view.d.ts.map +1 -1
- package/dist/cli/view.js +6 -0
- package/dist/cli/view.js.map +1 -1
- package/dist/core/config.d.ts +14 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +25 -5
- package/dist/core/config.js.map +1 -1
- package/dist/core/doctor.d.ts +3 -0
- package/dist/core/doctor.d.ts.map +1 -1
- package/dist/core/doctor.js +84 -5
- package/dist/core/doctor.js.map +1 -1
- package/dist/core/dreamer.d.ts.map +1 -1
- package/dist/core/dreamer.js +26 -15
- package/dist/core/dreamer.js.map +1 -1
- package/dist/core/embedder.d.ts +6 -1
- package/dist/core/embedder.d.ts.map +1 -1
- package/dist/core/embedder.js +33 -9
- package/dist/core/embedder.js.map +1 -1
- package/dist/core/llm-validator.d.ts.map +1 -1
- package/dist/core/llm-validator.js +6 -0
- package/dist/core/llm-validator.js.map +1 -1
- package/dist/core/memory-tool.d.ts +37 -0
- package/dist/core/memory-tool.d.ts.map +1 -0
- package/dist/core/memory-tool.js +371 -0
- package/dist/core/memory-tool.js.map +1 -0
- package/dist/core/operations.d.ts +11 -5
- package/dist/core/operations.d.ts.map +1 -1
- package/dist/core/operations.js +91 -34
- package/dist/core/operations.js.map +1 -1
- package/dist/core/prompt-safety.d.ts.map +1 -1
- package/dist/core/prompt-safety.js.map +1 -1
- package/dist/core/schema-export.d.ts.map +1 -1
- package/dist/core/schema-export.js +19 -34
- package/dist/core/schema-export.js.map +1 -1
- package/dist/core/types.d.ts +5 -12
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +4 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/verifier.d.ts +3 -0
- package/dist/core/verifier.d.ts.map +1 -1
- package/dist/core/verifier.js +27 -11
- package/dist/core/verifier.js.map +1 -1
- package/dist/db.d.ts +11 -0
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +174 -35
- package/dist/db.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/knowledge-graph.d.ts +1 -2
- package/dist/knowledge-graph.d.ts.map +1 -1
- package/dist/knowledge-graph.js +94 -44
- package/dist/knowledge-graph.js.map +1 -1
- package/dist/skills-manifest.json +14 -15
- package/dist/storage/conflicts.d.ts +1 -4
- package/dist/storage/conflicts.d.ts.map +1 -1
- package/dist/storage/conflicts.js +2 -5
- package/dist/storage/conflicts.js.map +1 -1
- package/dist/storage/fts-index.d.ts +11 -0
- package/dist/storage/fts-index.d.ts.map +1 -1
- package/dist/storage/fts-index.js +58 -2
- package/dist/storage/fts-index.js.map +1 -1
- package/dist/transports/cli/cli.d.ts.map +1 -1
- package/dist/transports/cli/cli.js +96 -50
- package/dist/transports/cli/cli.js.map +1 -1
- package/dist/transports/http/retired-routes.d.ts +2 -0
- package/dist/transports/http/retired-routes.d.ts.map +1 -0
- package/dist/transports/http/retired-routes.js +4 -0
- package/dist/transports/http/retired-routes.js.map +1 -0
- package/dist/transports/http/server.d.ts.map +1 -1
- package/dist/transports/http/server.js +6 -3
- package/dist/transports/http/server.js.map +1 -1
- package/dist/transports/mcp/handlers.d.ts +4 -25
- package/dist/transports/mcp/handlers.d.ts.map +1 -1
- package/dist/transports/mcp/handlers.js +8 -28
- package/dist/transports/mcp/handlers.js.map +1 -1
- package/dist/transports/schemas.d.ts +0 -5
- package/dist/transports/schemas.d.ts.map +1 -1
- package/dist/transports/schemas.js +0 -5
- package/dist/transports/schemas.js.map +1 -1
- package/package.json +35 -6
- package/scripts/hooks/_generated/fts-index.js +58 -2
- package/scripts/hooks/_shared.js +238 -4
- package/scripts/hooks/pre-compact.js +14 -3
- package/scripts/hooks/pre-edit-recall.js +76 -9
- package/skills/memesh/SKILL.md +11 -4
- package/skills/memesh-review/SKILL.md +7 -5
- package/dist/core/consolidator.d.ts +0 -3
- package/dist/core/consolidator.d.ts.map +0 -1
- package/dist/core/consolidator.js +0 -108
- package/dist/core/consolidator.js.map +0 -1
package/dist/db.js
CHANGED
|
@@ -3,9 +3,10 @@ import * as sqliteVec from 'sqlite-vec';
|
|
|
3
3
|
import path from 'path';
|
|
4
4
|
import fs from 'fs';
|
|
5
5
|
import { runAutoDecay } from './core/lifecycle.js';
|
|
6
|
-
import {
|
|
6
|
+
import { resolveEmbeddingDimension } from './core/config.js';
|
|
7
7
|
import { computeSignalScore } from './core/signal-scorer.js';
|
|
8
8
|
import { getDbPath } from './core/paths.js';
|
|
9
|
+
import { insertFtsRow } from './storage/fts-index.js';
|
|
9
10
|
let db = null;
|
|
10
11
|
const SCHEMA_SQL = `
|
|
11
12
|
CREATE TABLE IF NOT EXISTS entities (
|
|
@@ -56,12 +57,31 @@ CREATE INDEX IF NOT EXISTS idx_observations_entity ON observations(entity_id);
|
|
|
56
57
|
CREATE INDEX IF NOT EXISTS idx_relations_from ON relations(from_entity_id);
|
|
57
58
|
CREATE INDEX IF NOT EXISTS idx_relations_to ON relations(to_entity_id);
|
|
58
59
|
CREATE INDEX IF NOT EXISTS idx_entities_type_created ON entities(type, created_at);
|
|
60
|
+
|
|
61
|
+
-- Migration markers and small bits of persistent state (index segmentation
|
|
62
|
+
-- version, embedding dimension, pending-reindex flags, backfill markers).
|
|
63
|
+
--
|
|
64
|
+
-- This used to be created ad hoc by each helper that needed it — four inline
|
|
65
|
+
-- CREATE TABLE IF NOT EXISTS copies in src/db.ts, none of them visible to
|
|
66
|
+
-- scripts/check-schema-drift.mjs, which only extracts SCHEMA_SQL and FTS_SQL.
|
|
67
|
+
-- A column added to one copy would not have been caught. It also meant the
|
|
68
|
+
-- hook-side schema had no metadata table at all, so hooks could not
|
|
69
|
+
-- participate in migrations even in principle.
|
|
70
|
+
CREATE TABLE IF NOT EXISTS memesh_metadata (
|
|
71
|
+
key TEXT PRIMARY KEY,
|
|
72
|
+
value TEXT NOT NULL
|
|
73
|
+
);
|
|
59
74
|
`;
|
|
60
75
|
const FTS_SQL = `
|
|
61
76
|
CREATE VIRTUAL TABLE IF NOT EXISTS entities_fts USING fts5(
|
|
62
77
|
name, observations, content='',
|
|
63
78
|
tokenize='unicode61 remove_diacritics 1'
|
|
64
79
|
);
|
|
80
|
+
|
|
81
|
+
-- Term -> document-count view over the index above. Stores nothing of its own;
|
|
82
|
+
-- it exists so search() can drop query terms that appear in most of the corpus,
|
|
83
|
+
-- which are the ones BM25 already scores near zero. See dropUbiquitousTerms().
|
|
84
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS fts_vocab USING fts5vocab(entities_fts, 'row');
|
|
65
85
|
`;
|
|
66
86
|
export function openDatabase(dbPath) {
|
|
67
87
|
if (db)
|
|
@@ -73,7 +93,21 @@ export function openDatabase(dbPath) {
|
|
|
73
93
|
fs.chmodSync(dir, 0o700);
|
|
74
94
|
}
|
|
75
95
|
catch { }
|
|
76
|
-
|
|
96
|
+
const opening = new Database(resolvedPath);
|
|
97
|
+
try {
|
|
98
|
+
initialiseDatabase(opening, resolvedPath);
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
try {
|
|
102
|
+
opening.close();
|
|
103
|
+
}
|
|
104
|
+
catch { }
|
|
105
|
+
throw err;
|
|
106
|
+
}
|
|
107
|
+
db = opening;
|
|
108
|
+
return db;
|
|
109
|
+
}
|
|
110
|
+
function initialiseDatabase(db, resolvedPath) {
|
|
77
111
|
db.pragma('journal_mode = WAL');
|
|
78
112
|
db.pragma('foreign_keys = ON');
|
|
79
113
|
db.exec(SCHEMA_SQL);
|
|
@@ -125,37 +159,154 @@ export function openDatabase(dbPath) {
|
|
|
125
159
|
ensureDreamProposalsTable(db);
|
|
126
160
|
ensureLlmTelemetryTable(db);
|
|
127
161
|
runAutoTelemetryPrune(db);
|
|
162
|
+
ensureFtsSegmentation(db);
|
|
128
163
|
sqliteVec.load(db);
|
|
129
|
-
const targetDim =
|
|
130
|
-
ensureVecTable(db, targetDim);
|
|
164
|
+
const { dimension: targetDim, confident: dimensionKnown } = resolveEmbeddingDimension();
|
|
165
|
+
ensureVecTable(db, resolvedPath, targetDim, dimensionKnown);
|
|
131
166
|
return db;
|
|
132
167
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
)
|
|
139
|
-
|
|
168
|
+
export const FTS_SEGMENTATION_VERSION = 3;
|
|
169
|
+
const MIGRATION_RETRY_BACKOFF_MS = 24 * 60 * 60 * 1000;
|
|
170
|
+
function isTransientDbError(err) {
|
|
171
|
+
const code = err?.code ?? '';
|
|
172
|
+
const msg = err?.message ?? '';
|
|
173
|
+
return (/SQLITE_BUSY|SQLITE_LOCKED|SQLITE_PROTOCOL/.test(code) ||
|
|
174
|
+
/database is locked|database table is locked|locking protocol/i.test(msg));
|
|
175
|
+
}
|
|
176
|
+
export function runOnceMigration(db, opts) {
|
|
177
|
+
const { key, version, describe, migrate } = opts;
|
|
178
|
+
const attemptKey = `${key}_last_attempt`;
|
|
179
|
+
const readMarker = (k) => db.prepare('SELECT value FROM memesh_metadata WHERE key = ?').get(k)?.value;
|
|
180
|
+
const stored = readMarker(key);
|
|
181
|
+
if (stored && parseInt(stored, 10) >= version)
|
|
182
|
+
return false;
|
|
183
|
+
const lastAttempt = readMarker(attemptKey);
|
|
184
|
+
if (lastAttempt && Date.now() - parseInt(lastAttempt, 10) < MIGRATION_RETRY_BACKOFF_MS) {
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
try {
|
|
188
|
+
db.transaction(() => {
|
|
189
|
+
const current = readMarker(key);
|
|
190
|
+
if (current && parseInt(current, 10) >= version)
|
|
191
|
+
return;
|
|
192
|
+
migrate(db, current ? parseInt(current, 10) : 0);
|
|
193
|
+
db.prepare('INSERT OR REPLACE INTO memesh_metadata (key, value) VALUES (?, ?)').run(key, String(version));
|
|
194
|
+
db.prepare('DELETE FROM memesh_metadata WHERE key = ?').run(attemptKey);
|
|
195
|
+
}).immediate();
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
catch (err) {
|
|
199
|
+
if (isTransientDbError(err)) {
|
|
200
|
+
process.stderr.write(`MeMesh: ${describe} deferred (${err instanceof Error ? err.message : String(err)}). ` +
|
|
201
|
+
`Another process holds the database; it will run on the next start.\n`);
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
try {
|
|
205
|
+
db.prepare('INSERT OR REPLACE INTO memesh_metadata (key, value) VALUES (?, ?)').run(attemptKey, String(Date.now()));
|
|
206
|
+
}
|
|
207
|
+
catch { }
|
|
208
|
+
process.stderr.write(`MeMesh: ${describe} failed (${err instanceof Error ? err.message : String(err)}). ` +
|
|
209
|
+
`Your memories are unaffected — this rebuilds a derived index. ` +
|
|
210
|
+
`It will retry in 24h, or run 'memesh reindex --fts' to retry now.\n`);
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
function ensureFtsSegmentation(db) {
|
|
215
|
+
runOnceMigration(db, {
|
|
216
|
+
key: 'fts_segmentation_version',
|
|
217
|
+
version: FTS_SEGMENTATION_VERSION,
|
|
218
|
+
describe: 'search index rebuild',
|
|
219
|
+
migrate: rebuildFtsIndex,
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
const FTS_REBUILD_PAGE_SIZE = 500;
|
|
223
|
+
function rebuildFtsIndex(db) {
|
|
224
|
+
db.exec("INSERT INTO entities_fts (entities_fts) VALUES('delete-all')");
|
|
225
|
+
const page = db.prepare(`SELECT e.id, e.name, COALESCE(group_concat(o.content, ' '), '') AS obs
|
|
226
|
+
FROM entities e
|
|
227
|
+
LEFT JOIN observations o ON o.entity_id = e.id
|
|
228
|
+
WHERE e.status = 'active' AND e.id > ?
|
|
229
|
+
GROUP BY e.id
|
|
230
|
+
ORDER BY e.id
|
|
231
|
+
LIMIT ?`);
|
|
232
|
+
let afterId = 0;
|
|
233
|
+
for (;;) {
|
|
234
|
+
const rows = page.all(afterId, FTS_REBUILD_PAGE_SIZE);
|
|
235
|
+
if (rows.length === 0)
|
|
236
|
+
break;
|
|
237
|
+
for (const row of rows)
|
|
238
|
+
insertFtsRow(db, row.id, row.name, row.obs);
|
|
239
|
+
afterId = rows[rows.length - 1].id;
|
|
240
|
+
if (rows.length < FTS_REBUILD_PAGE_SIZE)
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
export function reindexFts() {
|
|
245
|
+
const database = getDatabase();
|
|
246
|
+
database.transaction(() => {
|
|
247
|
+
rebuildFtsIndex(database);
|
|
248
|
+
database
|
|
249
|
+
.prepare('INSERT OR REPLACE INTO memesh_metadata (key, value) VALUES (?, ?)')
|
|
250
|
+
.run('fts_segmentation_version', String(FTS_SEGMENTATION_VERSION));
|
|
251
|
+
database.prepare('DELETE FROM memesh_metadata WHERE key = ?').run('fts_segmentation_version_last_attempt');
|
|
252
|
+
}).immediate();
|
|
253
|
+
const { c } = database
|
|
254
|
+
.prepare("SELECT count(*) AS c FROM entities WHERE status = 'active'")
|
|
255
|
+
.get();
|
|
256
|
+
return { entities: c };
|
|
257
|
+
}
|
|
258
|
+
let vectorRebuildConsentFor = null;
|
|
259
|
+
export async function allowVectorIndexRebuild(dbPath, canRefill) {
|
|
260
|
+
if (!(await canRefill()))
|
|
261
|
+
return false;
|
|
262
|
+
vectorRebuildConsentFor = path.resolve(dbPath);
|
|
263
|
+
return true;
|
|
264
|
+
}
|
|
265
|
+
function consumeVectorRebuildConsent(resolvedPath) {
|
|
266
|
+
const granted = vectorRebuildConsentFor;
|
|
267
|
+
vectorRebuildConsentFor = null;
|
|
268
|
+
return granted !== null && granted === path.resolve(resolvedPath);
|
|
269
|
+
}
|
|
270
|
+
function ensureVecTable(db, resolvedPath, targetDim, dimensionKnown = true) {
|
|
271
|
+
const rebuildConsented = consumeVectorRebuildConsent(resolvedPath);
|
|
140
272
|
const storedDim = db.prepare("SELECT value FROM memesh_metadata WHERE key = 'embedding_dimension'").get();
|
|
141
273
|
const currentDim = storedDim ? parseInt(storedDim.value, 10) : 0;
|
|
142
274
|
const vecExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='entities_vec'").get();
|
|
143
275
|
if (vecExists && currentDim === targetDim) {
|
|
144
276
|
return;
|
|
145
277
|
}
|
|
146
|
-
if (vecExists &&
|
|
147
|
-
process.stderr.write(`MeMesh:
|
|
148
|
-
`
|
|
149
|
-
`
|
|
150
|
-
|
|
151
|
-
|
|
278
|
+
if (vecExists && !dimensionKnown) {
|
|
279
|
+
process.stderr.write(`MeMesh: embedding dimension could not be determined (config unreadable), so the ` +
|
|
280
|
+
`existing ${currentDim}-dim vector index was left untouched rather than rebuilt. ` +
|
|
281
|
+
`Fix ~/.memesh/config.json to change embedders.\n`);
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
if (vecExists &&
|
|
285
|
+
currentDim !== 0 &&
|
|
286
|
+
currentDim !== targetDim &&
|
|
287
|
+
!rebuildConsented) {
|
|
288
|
+
process.stderr.write(`MeMesh: this database records ${currentDim}-dim embeddings but the current ` +
|
|
289
|
+
`configuration asks for ${targetDim}. Keeping the existing vector index rather ` +
|
|
290
|
+
`than rebuilding it, because rebuilding deletes every stored vector. ` +
|
|
291
|
+
`If the configuration is wrong, fix it. If you meant to switch embedders, run ` +
|
|
292
|
+
`'memesh reindex --vectors' to rebuild the index at ${targetDim} and regenerate.\n`);
|
|
293
|
+
return;
|
|
152
294
|
}
|
|
153
|
-
db.
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
295
|
+
db.transaction(() => {
|
|
296
|
+
if (vecExists) {
|
|
297
|
+
process.stderr.write(`MeMesh: Embedding dimension changed (${currentDim} → ${targetDim}). Rebuilding vector index.\n` +
|
|
298
|
+
`MeMesh: Old embeddings deleted. Run 'memesh reindex' to regenerate vectors for all entities.\n` +
|
|
299
|
+
`MeMesh: Without reindex, only newly accessed entities will be embedded.\n`);
|
|
300
|
+
db.exec('DROP TABLE entities_vec');
|
|
301
|
+
db.prepare("INSERT OR REPLACE INTO memesh_metadata (key, value) VALUES ('pending_reindex', ?)").run(JSON.stringify({ from: currentDim, to: targetDim, droppedAt: new Date().toISOString() }));
|
|
302
|
+
}
|
|
303
|
+
db.exec(`
|
|
304
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS entities_vec USING vec0(
|
|
305
|
+
embedding float[${targetDim}]
|
|
306
|
+
);
|
|
307
|
+
`);
|
|
308
|
+
db.prepare("INSERT OR REPLACE INTO memesh_metadata (key, value) VALUES ('embedding_dimension', ?)").run(String(targetDim));
|
|
309
|
+
}).immediate();
|
|
159
310
|
}
|
|
160
311
|
export function getPendingReindexInfo() {
|
|
161
312
|
if (!db)
|
|
@@ -217,12 +368,6 @@ const TELEMETRY_PRUNE_INTERVAL_MS = 24 * 60 * 60 * 1000;
|
|
|
217
368
|
const TELEMETRY_PRUNE_DEFAULT_DAYS = 180;
|
|
218
369
|
const TELEMETRY_PRUNE_MARKER = 'last_telemetry_prune_at';
|
|
219
370
|
function runAutoTelemetryPrune(db) {
|
|
220
|
-
db.exec(`
|
|
221
|
-
CREATE TABLE IF NOT EXISTS memesh_metadata (
|
|
222
|
-
key TEXT PRIMARY KEY,
|
|
223
|
-
value TEXT NOT NULL
|
|
224
|
-
)
|
|
225
|
-
`);
|
|
226
371
|
const last = db.prepare('SELECT value FROM memesh_metadata WHERE key = ?').get(TELEMETRY_PRUNE_MARKER);
|
|
227
372
|
if (last) {
|
|
228
373
|
const elapsed = Date.now() - new Date(last.value).getTime();
|
|
@@ -239,12 +384,6 @@ function runAutoTelemetryPrune(db) {
|
|
|
239
384
|
db.prepare('INSERT OR REPLACE INTO memesh_metadata (key, value) VALUES (?, ?)').run(TELEMETRY_PRUNE_MARKER, new Date().toISOString());
|
|
240
385
|
}
|
|
241
386
|
function backfillSignalScores(db) {
|
|
242
|
-
db.exec(`
|
|
243
|
-
CREATE TABLE IF NOT EXISTS memesh_metadata (
|
|
244
|
-
key TEXT PRIMARY KEY,
|
|
245
|
-
value TEXT NOT NULL
|
|
246
|
-
)
|
|
247
|
-
`);
|
|
248
387
|
const MARKER = 'signal_score_backfill_v1';
|
|
249
388
|
const done = db.prepare("SELECT value FROM memesh_metadata WHERE key = ?").get(MARKER);
|
|
250
389
|
if (done)
|
package/dist/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,SAAS,MAAM,YAAY,CAAC;AACxC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,IAAI,EAAE,GAA6B,IAAI,CAAC;AAExC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDlB,CAAC;AAEF,MAAM,OAAO,GAAG;;;;;CAKf,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,MAAe;IAC1C,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAElB,MAAM,YAAY,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC;IAE3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACvC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,IAAI,CAAC;QAAC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAiB,CAAC;IAE3D,EAAE,GAAG,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAejB,IAAI,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAiB,CAAC;IACvD,KAAK,MAAM,MAAM,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC;YAAC,EAAE,CAAC,SAAS,CAAC,GAAG,YAAY,GAAG,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;QAAC,CAAC;QACxD,MAAM,CAAC,CAA+C,CAAC;IACzD,CAAC;IAaD,MAAM,SAAS,GAAG,CAAC,GAAW,EAAQ,EAAE;QACtC,IAAI,CAAC;YACH,EAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,MAAM,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,GAAG,EAAuB,CAAC;IACrF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC9C,SAAS,CAAC,uEAAuE,CAAC,CAAC;QACnF,EAAE,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IAChF,CAAC;IAGD,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,GAAG,EAAuB,CAAC;IACzF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,EAAE,CAAC;QACxD,SAAS,CAAC,gEAAgE,CAAC,CAAC;QAC5E,SAAS,CAAC,4DAA4D,CAAC,CAAC;QACxE,SAAS,CAAC,6DAA6D,CAAC,CAAC;QACzE,SAAS,CAAC,sDAAsD,CAAC,CAAC;QAClE,SAAS,CAAC,uDAAuD,CAAC,CAAC;IACrE,CAAC;IAGD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC;QACrD,SAAS,CAAC,mEAAmE,CAAC,CAAC;QAC/E,EAAE,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;IACtF,CAAC;IAGD,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,GAAG,EAAuB,CAAC;IACxF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,EAAE,CAAC;QACtD,SAAS,CAAC,+DAA+D,CAAC,CAAC;QAC3E,SAAS,CAAC,iEAAiE,CAAC,CAAC;IAC/E,CAAC;IAGD,YAAY,CAAC,EAAE,CAAC,CAAC;IAQjB,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAOzB,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAO9B,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAM5B,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAG1B,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAInB,MAAM,SAAS,GAAG,qBAAqB,EAAE,CAAC;IAC1C,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAE9B,OAAO,EAAE,CAAC;AACZ,CAAC;AAOD,SAAS,cAAc,CAAC,EAAqB,EAAE,SAAiB;IAE9D,EAAE,CAAC,IAAI,CAAC;;;;;GAKP,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAC1B,qEAAqE,CACtE,CAAC,GAAG,EAAmC,CAAC;IAEzC,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAGjE,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAC1B,2EAA2E,CAC5E,CAAC,GAAG,EAAE,CAAC;IAER,IAAI,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IAGD,IAAI,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wCAAwC,UAAU,MAAM,SAAS,+BAA+B;YAChG,gGAAgG;YAChG,2EAA2E,CAC5E,CAAC;QACF,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAGnC,EAAE,CAAC,OAAO,CACR,mFAAmF,CACpF,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;IAClG,CAAC;IAGD,EAAE,CAAC,IAAI,CAAC;;wBAEc,SAAS;;GAE9B,CAAC,CAAC;IAGH,EAAE,CAAC,OAAO,CACR,uFAAuF,CACxF,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CACpB,iEAAiE,CAClE,CAAC,GAAG,EAAmC,CAAC;QACzC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,IAAI,CAAC,EAAE;QAAE,OAAO;IAChB,EAAE,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC,GAAG,EAAE,CAAC;AAChF,CAAC;AAsBD,SAAS,yBAAyB,CAAC,EAAqB;IACtD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;GAgBP,CAAC,CAAC;AACL,CAAC;AAiBD,SAAS,uBAAuB,CAAC,EAAqB;IACpD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;GAkBP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,2BAA2B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,4BAA4B,GAAG,GAAG,CAAC;AACzC,MAAM,sBAAsB,GAAG,yBAAyB,CAAC;AAczD,SAAS,qBAAqB,CAAC,EAAqB;IAGlD,EAAE,CAAC,IAAI,CAAC;;;;;GAKP,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB,iDAAiD,CAClD,CAAC,GAAG,CAAC,sBAAsB,CAAkC,CAAC;IAE/D,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5D,IAAI,OAAO,GAAG,2BAA2B;YAAE,OAAO;IACpD,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,IAAI,CACxB,IAAI,CAAC,GAAG,EAAE,GAAG,4BAA4B,GAAG,QAAQ,CACrD,CAAC,WAAW,EAAE,CAAC;IAChB,IAAI,CAAC;QACH,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO;IACT,CAAC;IAED,EAAE,CAAC,OAAO,CACR,mEAAmE,CACpE,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AAC1D,CAAC;AAcD,SAAS,oBAAoB,CAAC,EAAqB;IAGjD,EAAE,CAAC,IAAI,CAAC;;;;;GAKP,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,0BAA0B,CAAC;IAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB,iDAAiD,CAClD,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACd,IAAI,IAAI;QAAE,OAAO;IAEjB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB,+CAA+C,CAChD,CAAC,GAAG,EAAgF,CAAC;IAEtF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,EAAE,CAAC,OAAO,CACR,mEAAmE,CACpE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC;IACnF,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC;IAE/E,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QAC7B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,QAAiC,CAAC;YACtC,IAAI,CAAC;gBAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,QAAQ,GAAG,EAAE,CAAC;YAAC,CAAC;YACzF,IAAI,OAAO,QAAQ,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;gBAC9C,OAAO,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YACD,MAAM,YAAY,GAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAgC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC7F,MAAM,IAAI,GAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAA4B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC7E,QAAQ,CAAC,YAAY,GAAG,kBAAkB,CAAC;gBACzC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,YAAY;gBACZ,IAAI;aACL,CAAC,CAAC;YACH,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACjD,MAAM,EAAE,CAAC;QACX,CAAC;QACD,EAAE,CAAC,OAAO,CACR,mEAAmE,CACpE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IACH,EAAE,EAAE,CAAC;AACP,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,IAAI,EAAE,EAAE,CAAC;QACP,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,EAAE,GAAG,IAAI,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAChD,OAAO,EAAE,CAAC;AACZ,CAAC;AAQD,MAAM,UAAU,cAAc;IAC5B,OAAO,EAAE,KAAK,IAAI,CAAC;AACrB,CAAC"}
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { openDatabase, closeDatabase, getDatabase } from './db.js';
|
|
2
2
|
export { KnowledgeGraph } from './knowledge-graph.js';
|
|
3
3
|
export type { Entity, Relation, CreateEntityInput, SearchOptions } from './knowledge-graph.js';
|
|
4
|
+
export { handleMemoryCommand, MEMORY_TOOL_DEFINITION, MEMORY_ROOT, } from './core/memory-tool.js';
|
|
5
|
+
export type { MemoryCommand, MemoryToolResult } from './core/memory-tool.js';
|
|
4
6
|
//# 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,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAM/F,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAOtD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,WAAW,GACZ,MAAM,uBAAuB,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import Database from 'better-sqlite3';
|
|
2
2
|
export type { Entity, Relation, CreateEntityInput, SearchOptions } from './core/types.js';
|
|
3
3
|
import type { Entity, Relation, CreateEntityInput, SearchOptions } from './core/types.js';
|
|
4
|
-
import { type TrackAccessOptions } from './storage/conflicts.js';
|
|
5
4
|
export declare class KnowledgeGraph {
|
|
6
5
|
private db;
|
|
7
6
|
constructor(db: Database.Database);
|
|
@@ -23,7 +22,7 @@ export declare class KnowledgeGraph {
|
|
|
23
22
|
}): Entity[];
|
|
24
23
|
getRelations(entityName: string): Relation[];
|
|
25
24
|
search(query?: string, opts?: SearchOptions): Entity[];
|
|
26
|
-
trackAccess(entityIds: number[]
|
|
25
|
+
trackAccess(entityIds: number[]): void;
|
|
27
26
|
findConflicts(entityNames: string[]): string[];
|
|
28
27
|
listRecent(limit?: number, includeArchived?: boolean, namespace?: string): Entity[];
|
|
29
28
|
listByType(type: string, limit?: number, includeArchived?: boolean, namespace?: string): Entity[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-graph.d.ts","sourceRoot":"","sources":["../src/knowledge-graph.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAa,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"knowledge-graph.d.ts","sourceRoot":"","sources":["../src/knowledge-graph.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAa,MAAM,iBAAiB,CAAC;AA0PrG,qBAAa,cAAc;IACb,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAEzC,oBAAoB,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GAChG,IAAI;IAcP,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,SAAS,CAAC,EAAE,MAAM,CAAC;QAUnB,aAAa,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;KACzC,GACA,MAAM;IA6HT,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,IAAI;IAcxD,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GACnB,IAAI;IA0BP,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAsCtC,gBAAgB,CACd,GAAG,EAAE,MAAM,EAAE,EACb,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GACrE,MAAM,EAAE;IAyGX,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE;IAkB5C,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,EAAE;IA4JtD,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAQtC,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAI9C,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IA6BnF,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAejG,OAAO,CAAC,eAAe;IAiCvB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAoBnC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE;IAgC1F,iBAAiB,CACf,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,GACzB;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,qBAAqB,EAAE,MAAM,CAAA;KAAE;IA6CtD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;IA+BhD,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,UAAU;CAcnB"}
|
package/dist/knowledge-graph.js
CHANGED
|
@@ -1,6 +1,58 @@
|
|
|
1
1
|
import { findConflicts, trackAccess } from './storage/conflicts.js';
|
|
2
|
-
import { insertFtsRow, removeFromFts } from './storage/fts-index.js';
|
|
2
|
+
import { insertFtsRow, removeFromFts, tokenizeQuery, renderMatchExpression, registerNfcFunction, SQL_NFC_FUNCTION, } from './storage/fts-index.js';
|
|
3
3
|
import { computeSignalScore } from './core/signal-scorer.js';
|
|
4
|
+
const MAX_QUERY_TERMS = 32;
|
|
5
|
+
function buildMatchExpression(db, query) {
|
|
6
|
+
const terms = tokenizeQuery(query);
|
|
7
|
+
if (terms.length === 0)
|
|
8
|
+
return null;
|
|
9
|
+
return renderMatchExpression(dropUbiquitousTerms(db, terms).slice(0, MAX_QUERY_TERMS));
|
|
10
|
+
}
|
|
11
|
+
function archivedLikeTerms(db, query) {
|
|
12
|
+
const escapeLike = (v) => v.replace(/[\\%_]/g, '\\$&');
|
|
13
|
+
const terms = tokenizeQuery(query);
|
|
14
|
+
const kept = (terms.length > 1 ? dropUbiquitousTerms(db, terms) : terms).slice(0, MAX_QUERY_TERMS);
|
|
15
|
+
if (kept.length === 0)
|
|
16
|
+
return [`%${escapeLike(query)}%`];
|
|
17
|
+
return kept.map((t) => `%${escapeLike(t)}%`);
|
|
18
|
+
}
|
|
19
|
+
const UBIQUITOUS_TERM_FRACTION = 0.5;
|
|
20
|
+
const MIN_ROWS_FOR_DF_GUARD = 25;
|
|
21
|
+
function activeEntityCount(db) {
|
|
22
|
+
return db.prepare("SELECT count(*) AS c FROM entities WHERE status = 'active'").get().c;
|
|
23
|
+
}
|
|
24
|
+
const MAX_DF_LOOKUP_TERMS = 256;
|
|
25
|
+
const LATIN_FOLDABLE = /^[\p{Script=Latin}\p{M}\p{N}]+$/u;
|
|
26
|
+
function fold(term) {
|
|
27
|
+
const lower = term.toLowerCase();
|
|
28
|
+
if (!LATIN_FOLDABLE.test(lower))
|
|
29
|
+
return lower;
|
|
30
|
+
return lower.normalize('NFD').replace(/\p{M}/gu, '');
|
|
31
|
+
}
|
|
32
|
+
function dropUbiquitousTerms(db, terms) {
|
|
33
|
+
if (terms.length < 2)
|
|
34
|
+
return terms;
|
|
35
|
+
try {
|
|
36
|
+
const total = activeEntityCount(db);
|
|
37
|
+
if (total < MIN_ROWS_FOR_DF_GUARD)
|
|
38
|
+
return terms;
|
|
39
|
+
const lowered = terms.slice(0, MAX_DF_LOOKUP_TERMS).map(fold);
|
|
40
|
+
const rows = db
|
|
41
|
+
.prepare(`SELECT term, doc FROM fts_vocab WHERE term IN (${lowered.map(() => '?').join(',')})`)
|
|
42
|
+
.all(...lowered);
|
|
43
|
+
if (rows.length === 0)
|
|
44
|
+
return terms;
|
|
45
|
+
const docFreq = new Map(rows.map((r) => [r.term, r.doc]));
|
|
46
|
+
const ceiling = UBIQUITOUS_TERM_FRACTION * total;
|
|
47
|
+
const kept = terms.filter((t) => (docFreq.get(fold(t)) ?? 0) <= ceiling);
|
|
48
|
+
if (kept.length > 0)
|
|
49
|
+
return kept;
|
|
50
|
+
return [terms.reduce((rarest, t) => (docFreq.get(fold(t)) ?? 0) < (docFreq.get(fold(rarest)) ?? 0) ? t : rarest)];
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return terms;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
4
56
|
export class KnowledgeGraph {
|
|
5
57
|
db;
|
|
6
58
|
constructor(db) {
|
|
@@ -243,47 +295,39 @@ export class KnowledgeGraph {
|
|
|
243
295
|
}
|
|
244
296
|
return this.listRecent(limit, opts?.includeArchived, opts?.namespace);
|
|
245
297
|
}
|
|
246
|
-
const
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
const ftsQuery = tokens.map((token) => `"${token}"`).join(' ');
|
|
298
|
+
const ftsQuery = buildMatchExpression(this.db, query);
|
|
299
|
+
if (ftsQuery === null) {
|
|
300
|
+
return [];
|
|
301
|
+
}
|
|
251
302
|
const statusFilter = opts?.includeArchived ? '' : "AND e.status = 'active'";
|
|
252
303
|
const namespaceFilter = opts?.namespace ? 'AND e.namespace = ?' : '';
|
|
304
|
+
const tagFilter = opts?.tag
|
|
305
|
+
? 'AND EXISTS (SELECT 1 FROM tags t WHERE t.entity_id = e.id AND t.tag = ?)'
|
|
306
|
+
: '';
|
|
307
|
+
const params = [ftsQuery];
|
|
308
|
+
if (opts?.tag)
|
|
309
|
+
params.push(opts.tag);
|
|
310
|
+
if (opts?.namespace)
|
|
311
|
+
params.push(opts.namespace);
|
|
312
|
+
params.push(limit);
|
|
253
313
|
let ftsRows;
|
|
254
314
|
try {
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
}
|
|
272
|
-
else {
|
|
273
|
-
const params = [ftsQuery];
|
|
274
|
-
if (opts?.namespace)
|
|
275
|
-
params.push(opts.namespace);
|
|
276
|
-
params.push(limit);
|
|
277
|
-
ftsRows = this.db
|
|
278
|
-
.prepare(`SELECT e.id, e.name FROM entities_fts f
|
|
279
|
-
JOIN entities e ON e.id = f.rowid
|
|
280
|
-
WHERE entities_fts MATCH ?
|
|
281
|
-
${statusFilter}
|
|
282
|
-
${namespaceFilter}
|
|
283
|
-
ORDER BY e.id DESC
|
|
284
|
-
LIMIT ?`)
|
|
285
|
-
.all(...params);
|
|
286
|
-
}
|
|
315
|
+
ftsRows = this.db
|
|
316
|
+
.prepare(`SELECT e.id FROM entities_fts f
|
|
317
|
+
JOIN entities e ON e.id = f.rowid
|
|
318
|
+
WHERE entities_fts MATCH ?
|
|
319
|
+
${tagFilter}
|
|
320
|
+
${statusFilter}
|
|
321
|
+
${namespaceFilter}
|
|
322
|
+
-- e.id breaks BM25 ties. Ties are common — every row matching only
|
|
323
|
+
-- the same single term scores identically — and LIMIT decides which
|
|
324
|
+
-- of them survive to the multi-factor scorer, so without a
|
|
325
|
+
-- tiebreaker the same query over the same corpus can return
|
|
326
|
+
-- different memories run to run. Newest-first among equals is the
|
|
327
|
+
-- same preference the rest of the scorer expresses.
|
|
328
|
+
ORDER BY f.rank, e.id DESC
|
|
329
|
+
LIMIT ?`)
|
|
330
|
+
.all(...params);
|
|
287
331
|
}
|
|
288
332
|
catch (err) {
|
|
289
333
|
if (err instanceof Error && err.message?.includes('fts5'))
|
|
@@ -300,7 +344,13 @@ export class KnowledgeGraph {
|
|
|
300
344
|
const tagJoin = opts?.tag ? 'JOIN tags t ON t.entity_id = e.id' : '';
|
|
301
345
|
const tagFilter = opts?.tag ? 'AND t.tag = ?' : '';
|
|
302
346
|
const archivedNamespaceFilter = opts?.namespace ? 'AND e.namespace = ?' : '';
|
|
303
|
-
const
|
|
347
|
+
const likeTerms = archivedLikeTerms(this.db, query);
|
|
348
|
+
registerNfcFunction(this.db);
|
|
349
|
+
const termClause = likeTerms
|
|
350
|
+
.map(() => `(${SQL_NFC_FUNCTION}(e.name) LIKE ? ESCAPE '\\' ` +
|
|
351
|
+
`OR ${SQL_NFC_FUNCTION}(o.content) LIKE ? ESCAPE '\\')`)
|
|
352
|
+
.join(' OR ');
|
|
353
|
+
const archivedParams = likeTerms.flatMap((t) => [t, t]);
|
|
304
354
|
if (opts?.tag)
|
|
305
355
|
archivedParams.push(opts.tag);
|
|
306
356
|
if (opts?.namespace)
|
|
@@ -311,7 +361,7 @@ export class KnowledgeGraph {
|
|
|
311
361
|
LEFT JOIN observations o ON o.entity_id = e.id
|
|
312
362
|
${tagJoin}
|
|
313
363
|
WHERE e.status = 'archived'
|
|
314
|
-
AND (
|
|
364
|
+
AND (${termClause})
|
|
315
365
|
${tagFilter}
|
|
316
366
|
${archivedNamespaceFilter}
|
|
317
367
|
ORDER BY e.id DESC
|
|
@@ -325,11 +375,11 @@ export class KnowledgeGraph {
|
|
|
325
375
|
results.push(...archivedEntities);
|
|
326
376
|
}
|
|
327
377
|
const entityIds = results.map((e) => e.id);
|
|
328
|
-
this.trackAccess(entityIds
|
|
378
|
+
this.trackAccess(entityIds);
|
|
329
379
|
return results;
|
|
330
380
|
}
|
|
331
|
-
trackAccess(entityIds
|
|
332
|
-
trackAccess(this.db, entityIds
|
|
381
|
+
trackAccess(entityIds) {
|
|
382
|
+
trackAccess(this.db, entityIds);
|
|
333
383
|
}
|
|
334
384
|
findConflicts(entityNames) {
|
|
335
385
|
return findConflicts(this.db, entityNames);
|
|
@@ -378,7 +428,7 @@ export class KnowledgeGraph {
|
|
|
378
428
|
LIMIT ?`)
|
|
379
429
|
.all(...params);
|
|
380
430
|
const results = this.getEntitiesByIds(rows.map((r) => r.id), { includeArchived, namespace });
|
|
381
|
-
this.trackAccess(results.map((e) => e.id)
|
|
431
|
+
this.trackAccess(results.map((e) => e.id));
|
|
382
432
|
return results;
|
|
383
433
|
}
|
|
384
434
|
clearEntityData(name) {
|