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.mjs
CHANGED
|
@@ -207,7 +207,7 @@ function getVersion() {
|
|
|
207
207
|
const pkg = JSON.parse(readFileSync6(resolve9(process.cwd(), "package.json"), "utf-8"));
|
|
208
208
|
return pkg.version;
|
|
209
209
|
} catch {
|
|
210
|
-
return "2.1.
|
|
210
|
+
return "2.1.5";
|
|
211
211
|
}
|
|
212
212
|
}
|
|
213
213
|
}
|
|
@@ -4568,7 +4568,15 @@ var Store = class extends EventEmitter {
|
|
|
4568
4568
|
vals.push(this.now());
|
|
4569
4569
|
sets.push("version = version + 1");
|
|
4570
4570
|
vals.push(id);
|
|
4571
|
-
|
|
4571
|
+
const sql = `UPDATE atoms SET ${sets.join(", ")} WHERE id = ?`;
|
|
4572
|
+
try {
|
|
4573
|
+
this.stmt(sql).run(...vals);
|
|
4574
|
+
} catch (err) {
|
|
4575
|
+
if (err.message?.includes("malformed") || err.message?.includes("corrupt")) {
|
|
4576
|
+
throw new Error(`Database appears corrupted. Run "mnemosyne doctor --data-dir ./data" or delete the data directory and run "mnemosyne init" again.`);
|
|
4577
|
+
}
|
|
4578
|
+
throw err;
|
|
4579
|
+
}
|
|
4572
4580
|
const updated = this.getAtom(id);
|
|
4573
4581
|
this.emit("atom.updated", { atom: updated, projectId: atom.project_id, changes });
|
|
4574
4582
|
this.logEvent("atom.updated", updatedBy, "assistant", atom.project_id, id, void 0, { fields: changes });
|
|
@@ -4823,7 +4831,6 @@ var Store = class extends EventEmitter {
|
|
|
4823
4831
|
// ═══════════════════════════════════════════════════════════
|
|
4824
4832
|
search(projectId, q, limit) {
|
|
4825
4833
|
const results = [];
|
|
4826
|
-
const seenAtoms = /* @__PURE__ */ new Set();
|
|
4827
4834
|
const matchExpr = q.trim().split(/\s+/).filter(Boolean).map((t) => `"${t.replace(/"/g, "")}"`).join(" ");
|
|
4828
4835
|
if (!matchExpr) return results;
|
|
4829
4836
|
const projectFilter = projectId ? "AND a.project_id = ?" : "";
|
|
@@ -4838,26 +4845,9 @@ var Store = class extends EventEmitter {
|
|
|
4838
4845
|
`).all(...paramsAtoms);
|
|
4839
4846
|
for (const a of atoms) {
|
|
4840
4847
|
if (results.length >= limit) break;
|
|
4841
|
-
|
|
4848
|
+
if (a.title === "__INDEX__") continue;
|
|
4842
4849
|
results.push({ kind: "atom", ...a, metadata: this.parseMeta(a) });
|
|
4843
4850
|
}
|
|
4844
|
-
const paramsBlocks = projectId ? [matchExpr, projectId, limit] : [matchExpr, limit];
|
|
4845
|
-
const blocks = this.stmt(`
|
|
4846
|
-
SELECT b.*, a.title as atom_title, a.id as atom_id, bm25(search_blocks) as rank
|
|
4847
|
-
FROM search_blocks
|
|
4848
|
-
JOIN blocks b ON b.rowid = search_blocks.rowid
|
|
4849
|
-
JOIN atoms a ON b.atom_id = a.id
|
|
4850
|
-
WHERE search_blocks MATCH ? ${projectFilter}
|
|
4851
|
-
ORDER BY rank
|
|
4852
|
-
LIMIT ?
|
|
4853
|
-
`).all(...paramsBlocks);
|
|
4854
|
-
for (const b of blocks) {
|
|
4855
|
-
if (results.length >= limit) break;
|
|
4856
|
-
if (!seenAtoms.has(b.atom_id)) {
|
|
4857
|
-
seenAtoms.add(b.atom_id);
|
|
4858
|
-
results.push({ kind: "block", ...b, metadata: this.parseMeta(b) });
|
|
4859
|
-
}
|
|
4860
|
-
}
|
|
4861
4851
|
return results;
|
|
4862
4852
|
}
|
|
4863
4853
|
// ─── Semantic Search ──────────────────────────────────────
|
|
@@ -4908,7 +4898,7 @@ var Store = class extends EventEmitter {
|
|
|
4908
4898
|
ORDER BY v.distance
|
|
4909
4899
|
LIMIT ${limit}
|
|
4910
4900
|
`).all(...params);
|
|
4911
|
-
return rows.map((r) => ({ kind: "atom", ...r, metadata: this.parseMeta(r) }));
|
|
4901
|
+
return rows.filter((r) => r.title !== "__INDEX__").map((r) => ({ kind: "atom", ...r, metadata: this.parseMeta(r) }));
|
|
4912
4902
|
} catch (err) {
|
|
4913
4903
|
console.error("[Store] Semantic search failed:", err.message);
|
|
4914
4904
|
return [];
|
|
@@ -5371,7 +5361,7 @@ function getVersion2() {
|
|
|
5371
5361
|
const pkg = JSON.parse(readFileSync6(resolve9(process.cwd(), "package.json"), "utf-8"));
|
|
5372
5362
|
return pkg.version;
|
|
5373
5363
|
} catch {
|
|
5374
|
-
return "2.1.
|
|
5364
|
+
return "2.1.5";
|
|
5375
5365
|
}
|
|
5376
5366
|
}
|
|
5377
5367
|
}
|
|
@@ -5610,7 +5600,7 @@ CREATE TRIGGER IF NOT EXISTS trig_search_atoms_insert AFTER INSERT ON atoms BEGI
|
|
|
5610
5600
|
END;
|
|
5611
5601
|
|
|
5612
5602
|
CREATE TRIGGER IF NOT EXISTS trig_search_atoms_update AFTER UPDATE ON atoms BEGIN
|
|
5613
|
-
|
|
5603
|
+
INSERT OR REPLACE INTO search_atoms(rowid, title, summary) VALUES (new.rowid, new.title, COALESCE(new.summary, ''));
|
|
5614
5604
|
END;
|
|
5615
5605
|
|
|
5616
5606
|
CREATE TRIGGER IF NOT EXISTS trig_search_atoms_delete AFTER DELETE ON atoms BEGIN
|
|
@@ -5662,6 +5652,10 @@ var Mnemosyne = class {
|
|
|
5662
5652
|
this.db.pragma("journal_mode = WAL");
|
|
5663
5653
|
this.db.pragma("foreign_keys = ON");
|
|
5664
5654
|
this.db.pragma("synchronous = NORMAL");
|
|
5655
|
+
try {
|
|
5656
|
+
this.db.pragma("wal_checkpoint(TRUNCATE)");
|
|
5657
|
+
} catch {
|
|
5658
|
+
}
|
|
5665
5659
|
this.vecEnabled = false;
|
|
5666
5660
|
try {
|
|
5667
5661
|
let vecPath;
|
|
@@ -5954,7 +5948,7 @@ function getVersion3() {
|
|
|
5954
5948
|
const pkg = JSON.parse(readFileSync6(resolve9(process.cwd(), "package.json"), "utf-8"));
|
|
5955
5949
|
return pkg.version;
|
|
5956
5950
|
} catch {
|
|
5957
|
-
return "2.1.
|
|
5951
|
+
return "2.1.5";
|
|
5958
5952
|
}
|
|
5959
5953
|
}
|
|
5960
5954
|
}
|
|
@@ -6910,8 +6904,7 @@ async function handleSearch(store, pathname, method, res, searchParams) {
|
|
|
6910
6904
|
} else {
|
|
6911
6905
|
results = store.search(projectId, q, limit);
|
|
6912
6906
|
}
|
|
6913
|
-
|
|
6914
|
-
json(res, 200, { query: q, semantic, count: filtered.length, results: filtered });
|
|
6907
|
+
json(res, 200, { query: q, semantic, count: results.length, results });
|
|
6915
6908
|
return true;
|
|
6916
6909
|
}
|
|
6917
6910
|
return false;
|
|
@@ -7121,7 +7114,7 @@ var PKG_VERSION = (() => {
|
|
|
7121
7114
|
const pkg = JSON.parse(__require("fs").readFileSync(__require("path").resolve(__dirname, "../../package.json"), "utf-8"));
|
|
7122
7115
|
return pkg.version;
|
|
7123
7116
|
} catch {
|
|
7124
|
-
return "2.1.
|
|
7117
|
+
return "2.1.5";
|
|
7125
7118
|
}
|
|
7126
7119
|
})();
|
|
7127
7120
|
function handleHealth(store, pathname, method, res) {
|
|
@@ -7404,6 +7397,10 @@ function getDb() {
|
|
|
7404
7397
|
db.pragma("journal_mode = WAL");
|
|
7405
7398
|
db.pragma("foreign_keys = ON");
|
|
7406
7399
|
db.pragma("synchronous = NORMAL");
|
|
7400
|
+
try {
|
|
7401
|
+
db.pragma("wal_checkpoint(TRUNCATE)");
|
|
7402
|
+
} catch {
|
|
7403
|
+
}
|
|
7407
7404
|
try {
|
|
7408
7405
|
const { getLoadablePath } = __require("sqlite-vec");
|
|
7409
7406
|
db.loadExtension(getLoadablePath());
|
|
@@ -7482,7 +7479,7 @@ var MnemosyneServer = class {
|
|
|
7482
7479
|
const wss = new import_websocket_server.default({ server: this.httpServer });
|
|
7483
7480
|
this.wsHandler = new WebSocketHandler(wss, this.store);
|
|
7484
7481
|
}
|
|
7485
|
-
const version = cfg?.server?.version || "2.1.
|
|
7482
|
+
const version = cfg?.server?.version || "2.1.5";
|
|
7486
7483
|
this.httpServer.listen(port, () => {
|
|
7487
7484
|
console.log(`Mnemosyne v${version} \u2014 port ${port}`);
|
|
7488
7485
|
console.log(`Dashboard: http://${host}:${port}/dashboard`);
|