crbro-memory 1.5.2 → 1.6.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 +174 -170
- package/dist/engine/brain.d.ts +2 -0
- package/dist/engine/brain.d.ts.map +1 -1
- package/dist/engine/brain.js +4 -0
- package/dist/engine/brain.js.map +1 -1
- package/dist/engine/cortex.d.ts +24 -0
- package/dist/engine/cortex.d.ts.map +1 -1
- package/dist/engine/cortex.js +187 -98
- package/dist/engine/cortex.js.map +1 -1
- package/dist/engine/heat.d.ts.map +1 -1
- package/dist/engine/heat.js +9 -5
- package/dist/engine/heat.js.map +1 -1
- package/dist/engine/maintenance.d.ts +10 -0
- package/dist/engine/maintenance.d.ts.map +1 -1
- package/dist/engine/maintenance.js +57 -0
- package/dist/engine/maintenance.js.map +1 -1
- package/dist/engine/secrets.d.ts +21 -0
- package/dist/engine/secrets.d.ts.map +1 -0
- package/dist/engine/secrets.js +86 -0
- package/dist/engine/secrets.js.map +1 -0
- package/dist/search/index.d.ts.map +1 -1
- package/dist/search/index.js +19 -2
- package/dist/search/index.js.map +1 -1
- package/dist/search/tokenize.d.ts +10 -0
- package/dist/search/tokenize.d.ts.map +1 -1
- package/dist/search/tokenize.js +32 -0
- package/dist/search/tokenize.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +85 -2
- package/dist/server.js.map +1 -1
- package/dist/utils/fs.d.ts +13 -0
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js +24 -0
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/lock.d.ts +11 -0
- package/dist/utils/lock.d.ts.map +1 -0
- package/dist/utils/lock.js +121 -0
- package/dist/utils/lock.js.map +1 -0
- package/package.json +1 -1
package/dist/utils/fs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":";AAAA,oEAAoE;AACpE,6DAA6D;;;;;
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run `fn` while holding the lock for `target`.
|
|
3
|
+
* The lock is always released, including when `fn` throws.
|
|
4
|
+
*/
|
|
5
|
+
export declare function withLock<T>(target: string, fn: () => Promise<T>): Promise<T>;
|
|
6
|
+
/**
|
|
7
|
+
* Remove lock files left behind by a process that died mid-write.
|
|
8
|
+
* Returns how many were swept. Called from maintenance.
|
|
9
|
+
*/
|
|
10
|
+
export declare function sweepStaleLocks(dir: string): Promise<number>;
|
|
11
|
+
//# sourceMappingURL=lock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/utils/lock.ts"],"names":[],"mappings":"AAmFA;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAOlF;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBlE"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ─── CRBRO File Locking ──────────────────────────────────────────
|
|
3
|
+
//
|
|
4
|
+
// Why this exists, measured on the real thing: two processes each storing 40
|
|
5
|
+
// facts into the same neuron asked for 80 and kept 42. Neither reported an
|
|
6
|
+
// error. Every write path reads the whole neuron, changes it in memory and
|
|
7
|
+
// writes it back, so whoever saves last silently erases whatever the other one
|
|
8
|
+
// did in between. With CRBRO registered at user level — which the README
|
|
9
|
+
// recommends — two editors open at once is the normal case, not an edge case.
|
|
10
|
+
//
|
|
11
|
+
// An advisory lock file is enough here. All writers are CRBRO itself, the
|
|
12
|
+
// critical section is a few milliseconds, and the alternative (an OS-level
|
|
13
|
+
// lock) behaves differently on every platform and cannot be made to wait
|
|
14
|
+
// politely on Windows.
|
|
15
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
16
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
17
|
+
};
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.withLock = withLock;
|
|
20
|
+
exports.sweepStaleLocks = sweepStaleLocks;
|
|
21
|
+
const node_fs_1 = require("node:fs");
|
|
22
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
23
|
+
/** How long a lock may be held before we assume its owner died. */
|
|
24
|
+
const STALE_MS = 10_000;
|
|
25
|
+
/** How long to keep trying before giving up. */
|
|
26
|
+
const TIMEOUT_MS = 15_000;
|
|
27
|
+
/** Wait between attempts. Grows a little to avoid a stampede. */
|
|
28
|
+
const RETRY_MIN_MS = 8;
|
|
29
|
+
const RETRY_MAX_MS = 60;
|
|
30
|
+
const sleep = (ms) => new Promise(r => setTimeout(r, ms));
|
|
31
|
+
function lockPath(target) {
|
|
32
|
+
return `${target}.lock`;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Take the lock for a file. Returns a release function.
|
|
36
|
+
*
|
|
37
|
+
* `wx` fails if the file already exists, and that failure is the whole
|
|
38
|
+
* mechanism: exactly one caller can create it.
|
|
39
|
+
*/
|
|
40
|
+
async function acquire(target) {
|
|
41
|
+
const lock = lockPath(target);
|
|
42
|
+
await node_fs_1.promises.mkdir(node_path_1.default.dirname(lock), { recursive: true });
|
|
43
|
+
const deadline = Date.now() + TIMEOUT_MS;
|
|
44
|
+
let wait = RETRY_MIN_MS;
|
|
45
|
+
for (;;) {
|
|
46
|
+
try {
|
|
47
|
+
const fh = await node_fs_1.promises.open(lock, 'wx');
|
|
48
|
+
await fh.writeFile(`${process.pid} ${new Date().toISOString()}`, 'utf-8');
|
|
49
|
+
await fh.close();
|
|
50
|
+
return async () => {
|
|
51
|
+
try {
|
|
52
|
+
await node_fs_1.promises.unlink(lock);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// Already gone: released twice, or cleaned up as stale. Harmless.
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
const code = err?.code;
|
|
61
|
+
if (code !== 'EEXIST')
|
|
62
|
+
throw err;
|
|
63
|
+
// Someone holds it. If they have held it far too long, they are gone.
|
|
64
|
+
try {
|
|
65
|
+
const st = await node_fs_1.promises.stat(lock);
|
|
66
|
+
if (Date.now() - st.mtimeMs > STALE_MS) {
|
|
67
|
+
await node_fs_1.promises.unlink(lock).catch(() => { });
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
continue; // Vanished between the failure and the stat: try again.
|
|
73
|
+
}
|
|
74
|
+
if (Date.now() > deadline) {
|
|
75
|
+
// Never block a write forever. Losing the lock is bad; hanging the
|
|
76
|
+
// assistant is worse, and the stale sweep above makes this rare.
|
|
77
|
+
return async () => { };
|
|
78
|
+
}
|
|
79
|
+
await sleep(wait);
|
|
80
|
+
wait = Math.min(Math.round(wait * 1.4), RETRY_MAX_MS);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Run `fn` while holding the lock for `target`.
|
|
86
|
+
* The lock is always released, including when `fn` throws.
|
|
87
|
+
*/
|
|
88
|
+
async function withLock(target, fn) {
|
|
89
|
+
const release = await acquire(target);
|
|
90
|
+
try {
|
|
91
|
+
return await fn();
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
await release();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Remove lock files left behind by a process that died mid-write.
|
|
99
|
+
* Returns how many were swept. Called from maintenance.
|
|
100
|
+
*/
|
|
101
|
+
async function sweepStaleLocks(dir) {
|
|
102
|
+
let swept = 0;
|
|
103
|
+
try {
|
|
104
|
+
for (const f of await node_fs_1.promises.readdir(dir)) {
|
|
105
|
+
if (!f.endsWith('.lock'))
|
|
106
|
+
continue;
|
|
107
|
+
const p = node_path_1.default.join(dir, f);
|
|
108
|
+
try {
|
|
109
|
+
const st = await node_fs_1.promises.stat(p);
|
|
110
|
+
if (Date.now() - st.mtimeMs > STALE_MS) {
|
|
111
|
+
await node_fs_1.promises.unlink(p);
|
|
112
|
+
swept++;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch { /* gone already */ }
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch { /* no such directory */ }
|
|
119
|
+
return swept;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=lock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/utils/lock.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "crbro-memory",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"mcpName": "io.github.Octonove/crbro-memory",
|
|
5
5
|
"description": "CRBRO — Persistent neural memory for AI. A biological file-based MCP server that gives your AI long-term memory across sessions.",
|
|
6
6
|
"main": "dist/index.js",
|