mnemosyne-core 2.1.4 → 2.1.6
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/dist/cli/index.js +29 -32
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +29 -32
- package/dist/cli/index.mjs.map +1 -1
- package/dist/index.js +26 -29
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +26 -29
- package/dist/index.mjs.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/index.mjs +1 -1
- package/dist/mcp/index.mjs.map +1 -1
- package/dist/server/api.js +4 -5
- package/dist/server/api.js.map +1 -1
- package/dist/server/api.mjs +4 -5
- package/dist/server/api.mjs.map +1 -1
- package/dist/server/index.js +21 -28
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +21 -28
- package/dist/server/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -201,7 +201,7 @@ function getVersion() {
|
|
|
201
201
|
const pkg = JSON.parse(readFileSync6(resolve9(process.cwd(), "package.json"), "utf-8"));
|
|
202
202
|
return pkg.version;
|
|
203
203
|
} catch {
|
|
204
|
-
return "2.1.
|
|
204
|
+
return "2.1.5";
|
|
205
205
|
}
|
|
206
206
|
}
|
|
207
207
|
}
|
|
@@ -4598,7 +4598,15 @@ var Store = class extends EventEmitter {
|
|
|
4598
4598
|
vals.push(this.now());
|
|
4599
4599
|
sets.push("version = version + 1");
|
|
4600
4600
|
vals.push(id);
|
|
4601
|
-
|
|
4601
|
+
const sql = `UPDATE atoms SET ${sets.join(", ")} WHERE id = ?`;
|
|
4602
|
+
try {
|
|
4603
|
+
this.stmt(sql).run(...vals);
|
|
4604
|
+
} catch (err) {
|
|
4605
|
+
if (err.message?.includes("malformed") || err.message?.includes("corrupt")) {
|
|
4606
|
+
throw new Error(`Database appears corrupted. Run "mnemosyne doctor --data-dir ./data" or delete the data directory and run "mnemosyne init" again.`);
|
|
4607
|
+
}
|
|
4608
|
+
throw err;
|
|
4609
|
+
}
|
|
4602
4610
|
const updated = this.getAtom(id);
|
|
4603
4611
|
this.emit("atom.updated", { atom: updated, projectId: atom.project_id, changes });
|
|
4604
4612
|
this.logEvent("atom.updated", updatedBy, "assistant", atom.project_id, id, void 0, { fields: changes });
|
|
@@ -4853,7 +4861,6 @@ var Store = class extends EventEmitter {
|
|
|
4853
4861
|
// ═══════════════════════════════════════════════════════════
|
|
4854
4862
|
search(projectId, q, limit) {
|
|
4855
4863
|
const results = [];
|
|
4856
|
-
const seenAtoms = /* @__PURE__ */ new Set();
|
|
4857
4864
|
const matchExpr = q.trim().split(/\s+/).filter(Boolean).map((t) => `"${t.replace(/"/g, "")}"`).join(" ");
|
|
4858
4865
|
if (!matchExpr) return results;
|
|
4859
4866
|
const projectFilter = projectId ? "AND a.project_id = ?" : "";
|
|
@@ -4868,26 +4875,9 @@ var Store = class extends EventEmitter {
|
|
|
4868
4875
|
`).all(...paramsAtoms);
|
|
4869
4876
|
for (const a of atoms) {
|
|
4870
4877
|
if (results.length >= limit) break;
|
|
4871
|
-
|
|
4878
|
+
if (a.title === "__INDEX__") continue;
|
|
4872
4879
|
results.push({ kind: "atom", ...a, metadata: this.parseMeta(a) });
|
|
4873
4880
|
}
|
|
4874
|
-
const paramsBlocks = projectId ? [matchExpr, projectId, limit] : [matchExpr, limit];
|
|
4875
|
-
const blocks = this.stmt(`
|
|
4876
|
-
SELECT b.*, a.title as atom_title, a.id as atom_id, bm25(search_blocks) as rank
|
|
4877
|
-
FROM search_blocks
|
|
4878
|
-
JOIN blocks b ON b.rowid = search_blocks.rowid
|
|
4879
|
-
JOIN atoms a ON b.atom_id = a.id
|
|
4880
|
-
WHERE search_blocks MATCH ? ${projectFilter}
|
|
4881
|
-
ORDER BY rank
|
|
4882
|
-
LIMIT ?
|
|
4883
|
-
`).all(...paramsBlocks);
|
|
4884
|
-
for (const b of blocks) {
|
|
4885
|
-
if (results.length >= limit) break;
|
|
4886
|
-
if (!seenAtoms.has(b.atom_id)) {
|
|
4887
|
-
seenAtoms.add(b.atom_id);
|
|
4888
|
-
results.push({ kind: "block", ...b, metadata: this.parseMeta(b) });
|
|
4889
|
-
}
|
|
4890
|
-
}
|
|
4891
4881
|
return results;
|
|
4892
4882
|
}
|
|
4893
4883
|
// ─── Semantic Search ──────────────────────────────────────
|
|
@@ -4938,7 +4928,7 @@ var Store = class extends EventEmitter {
|
|
|
4938
4928
|
ORDER BY v.distance
|
|
4939
4929
|
LIMIT ${limit}
|
|
4940
4930
|
`).all(...params);
|
|
4941
|
-
return rows.map((r) => ({ kind: "atom", ...r, metadata: this.parseMeta(r) }));
|
|
4931
|
+
return rows.filter((r) => r.title !== "__INDEX__").map((r) => ({ kind: "atom", ...r, metadata: this.parseMeta(r) }));
|
|
4942
4932
|
} catch (err) {
|
|
4943
4933
|
console.error("[Store] Semantic search failed:", err.message);
|
|
4944
4934
|
return [];
|
|
@@ -5401,7 +5391,7 @@ function getVersion2() {
|
|
|
5401
5391
|
const pkg = JSON.parse(readFileSync6(resolve9(process.cwd(), "package.json"), "utf-8"));
|
|
5402
5392
|
return pkg.version;
|
|
5403
5393
|
} catch {
|
|
5404
|
-
return "2.1.
|
|
5394
|
+
return "2.1.5";
|
|
5405
5395
|
}
|
|
5406
5396
|
}
|
|
5407
5397
|
}
|
|
@@ -5640,7 +5630,7 @@ CREATE TRIGGER IF NOT EXISTS trig_search_atoms_insert AFTER INSERT ON atoms BEGI
|
|
|
5640
5630
|
END;
|
|
5641
5631
|
|
|
5642
5632
|
CREATE TRIGGER IF NOT EXISTS trig_search_atoms_update AFTER UPDATE ON atoms BEGIN
|
|
5643
|
-
|
|
5633
|
+
INSERT OR REPLACE INTO search_atoms(rowid, title, summary) VALUES (new.rowid, new.title, COALESCE(new.summary, ''));
|
|
5644
5634
|
END;
|
|
5645
5635
|
|
|
5646
5636
|
CREATE TRIGGER IF NOT EXISTS trig_search_atoms_delete AFTER DELETE ON atoms BEGIN
|
|
@@ -5692,6 +5682,10 @@ var Mnemosyne = class {
|
|
|
5692
5682
|
this.db.pragma("journal_mode = WAL");
|
|
5693
5683
|
this.db.pragma("foreign_keys = ON");
|
|
5694
5684
|
this.db.pragma("synchronous = NORMAL");
|
|
5685
|
+
try {
|
|
5686
|
+
this.db.pragma("wal_checkpoint(TRUNCATE)");
|
|
5687
|
+
} catch {
|
|
5688
|
+
}
|
|
5695
5689
|
this.vecEnabled = false;
|
|
5696
5690
|
try {
|
|
5697
5691
|
let vecPath;
|
|
@@ -5984,7 +5978,7 @@ function getVersion3() {
|
|
|
5984
5978
|
const pkg = JSON.parse(readFileSync6(resolve9(process.cwd(), "package.json"), "utf-8"));
|
|
5985
5979
|
return pkg.version;
|
|
5986
5980
|
} catch {
|
|
5987
|
-
return "2.1.
|
|
5981
|
+
return "2.1.5";
|
|
5988
5982
|
}
|
|
5989
5983
|
}
|
|
5990
5984
|
}
|
|
@@ -6940,8 +6934,7 @@ async function handleSearch(store, pathname, method, res, searchParams) {
|
|
|
6940
6934
|
} else {
|
|
6941
6935
|
results = store.search(projectId, q, limit);
|
|
6942
6936
|
}
|
|
6943
|
-
|
|
6944
|
-
json(res, 200, { query: q, semantic, count: filtered.length, results: filtered });
|
|
6937
|
+
json(res, 200, { query: q, semantic, count: results.length, results });
|
|
6945
6938
|
return true;
|
|
6946
6939
|
}
|
|
6947
6940
|
return false;
|
|
@@ -7151,7 +7144,7 @@ var PKG_VERSION = (() => {
|
|
|
7151
7144
|
const pkg = JSON.parse(require("fs").readFileSync(require("path").resolve(__dirname, "../../package.json"), "utf-8"));
|
|
7152
7145
|
return pkg.version;
|
|
7153
7146
|
} catch {
|
|
7154
|
-
return "2.1.
|
|
7147
|
+
return "2.1.5";
|
|
7155
7148
|
}
|
|
7156
7149
|
})();
|
|
7157
7150
|
function handleHealth(store, pathname, method, res) {
|
|
@@ -7434,6 +7427,10 @@ function getDb() {
|
|
|
7434
7427
|
db.pragma("journal_mode = WAL");
|
|
7435
7428
|
db.pragma("foreign_keys = ON");
|
|
7436
7429
|
db.pragma("synchronous = NORMAL");
|
|
7430
|
+
try {
|
|
7431
|
+
db.pragma("wal_checkpoint(TRUNCATE)");
|
|
7432
|
+
} catch {
|
|
7433
|
+
}
|
|
7437
7434
|
try {
|
|
7438
7435
|
const { getLoadablePath } = require("sqlite-vec");
|
|
7439
7436
|
db.loadExtension(getLoadablePath());
|
|
@@ -7512,7 +7509,7 @@ var MnemosyneServer = class {
|
|
|
7512
7509
|
const wss = new import_websocket_server.default({ server: this.httpServer });
|
|
7513
7510
|
this.wsHandler = new WebSocketHandler(wss, this.store);
|
|
7514
7511
|
}
|
|
7515
|
-
const version = cfg?.server?.version || "2.1.
|
|
7512
|
+
const version = cfg?.server?.version || "2.1.5";
|
|
7516
7513
|
this.httpServer.listen(port, () => {
|
|
7517
7514
|
console.log(`Mnemosyne v${version} \u2014 port ${port}`);
|
|
7518
7515
|
console.log(`Dashboard: http://${host}:${port}/dashboard`);
|