@batalabs/virlow-mcp-core 3.11.4
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/LICENSE +21 -0
- package/README.md +15 -0
- package/dist/api.d.ts +118 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +109 -0
- package/dist/api.js.map +1 -0
- package/dist/embedding-cache.d.ts +34 -0
- package/dist/embedding-cache.d.ts.map +1 -0
- package/dist/embedding-cache.js +108 -0
- package/dist/embedding-cache.js.map +1 -0
- package/dist/exposure.d.ts +42 -0
- package/dist/exposure.d.ts.map +1 -0
- package/dist/exposure.js +74 -0
- package/dist/exposure.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/memories-enabled.d.ts +16 -0
- package/dist/memories-enabled.d.ts.map +1 -0
- package/dist/memories-enabled.js +29 -0
- package/dist/memories-enabled.js.map +1 -0
- package/dist/memories.d.ts +86 -0
- package/dist/memories.d.ts.map +1 -0
- package/dist/memories.js +350 -0
- package/dist/memories.js.map +1 -0
- package/dist/memory-note.d.ts +45 -0
- package/dist/memory-note.d.ts.map +1 -0
- package/dist/memory-note.js +144 -0
- package/dist/memory-note.js.map +1 -0
- package/dist/memory-tree.d.ts +28 -0
- package/dist/memory-tree.d.ts.map +1 -0
- package/dist/memory-tree.js +68 -0
- package/dist/memory-tree.js.map +1 -0
- package/dist/notes.d.ts +109 -0
- package/dist/notes.d.ts.map +1 -0
- package/dist/notes.js +234 -0
- package/dist/notes.js.map +1 -0
- package/dist/vault.d.ts +35 -0
- package/dist/vault.d.ts.map +1 -0
- package/dist/vault.js +73 -0
- package/dist/vault.js.map +1 -0
- package/package.json +43 -0
package/dist/vault.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export declare class LockedError extends Error {
|
|
2
|
+
}
|
|
3
|
+
export interface UnlockedSession {
|
|
4
|
+
key: CryptoKey;
|
|
5
|
+
userId: string;
|
|
6
|
+
email: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class Vault {
|
|
9
|
+
private readonly autoLockMs;
|
|
10
|
+
private _session;
|
|
11
|
+
private _timerHandle;
|
|
12
|
+
/** Listeners registered via `onLock =` or `addLockListener()`. Multiple
|
|
13
|
+
* consumers (MemoryStore, NotesService, ...) each need their cache cleared
|
|
14
|
+
* on lock; a single-slot callback would let the second registration
|
|
15
|
+
* silently clobber the first. */
|
|
16
|
+
private lockListeners;
|
|
17
|
+
constructor(autoLockMs?: number);
|
|
18
|
+
/** Alias for `addLockListener` kept for call-site brevity (`vault.onLock = fn`).
|
|
19
|
+
* Assigning multiple times ADDS a listener each time — it does not replace
|
|
20
|
+
* a previous one. */
|
|
21
|
+
set onLock(fn: () => void);
|
|
22
|
+
addLockListener(fn: () => void): void;
|
|
23
|
+
setUnlocked(session: UnlockedSession): void;
|
|
24
|
+
lock(): void;
|
|
25
|
+
isUnlocked(): boolean;
|
|
26
|
+
status(): {
|
|
27
|
+
locked: boolean;
|
|
28
|
+
email?: string;
|
|
29
|
+
};
|
|
30
|
+
touch(): void;
|
|
31
|
+
get session(): UnlockedSession;
|
|
32
|
+
private _scheduleAutoLock;
|
|
33
|
+
private _clearTimer;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=vault.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../src/vault.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAY,SAAQ,KAAK;CAAG;AAEzC,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,SAAS,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,KAAK;IAUJ,OAAO,CAAC,QAAQ,CAAC,UAAU;IATvC,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,YAAY,CAA+B;IAEnD;;;qCAGiC;IACjC,OAAO,CAAC,aAAa,CAAyB;gBAEjB,UAAU,GAAE,MAA2B;IAEpE;;yBAEqB;IACrB,IAAI,MAAM,CAAC,EAAE,EAAE,MAAM,IAAI,EAExB;IAED,eAAe,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAIrC,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAK3C,IAAI,IAAI,IAAI;IAWZ,UAAU,IAAI,OAAO;IAIrB,MAAM,IAAI;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAO7C,KAAK,IAAI,IAAI;IAQb,IAAI,OAAO,IAAI,eAAe,CAO7B;IAED,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,WAAW;CAMpB"}
|
package/dist/vault.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export class LockedError extends Error {
|
|
2
|
+
}
|
|
3
|
+
export class Vault {
|
|
4
|
+
autoLockMs;
|
|
5
|
+
_session = null;
|
|
6
|
+
_timerHandle = null;
|
|
7
|
+
/** Listeners registered via `onLock =` or `addLockListener()`. Multiple
|
|
8
|
+
* consumers (MemoryStore, NotesService, ...) each need their cache cleared
|
|
9
|
+
* on lock; a single-slot callback would let the second registration
|
|
10
|
+
* silently clobber the first. */
|
|
11
|
+
lockListeners = [];
|
|
12
|
+
constructor(autoLockMs = 4 * 60 * 60 * 1000) {
|
|
13
|
+
this.autoLockMs = autoLockMs;
|
|
14
|
+
}
|
|
15
|
+
/** Alias for `addLockListener` kept for call-site brevity (`vault.onLock = fn`).
|
|
16
|
+
* Assigning multiple times ADDS a listener each time — it does not replace
|
|
17
|
+
* a previous one. */
|
|
18
|
+
set onLock(fn) {
|
|
19
|
+
this.addLockListener(fn);
|
|
20
|
+
}
|
|
21
|
+
addLockListener(fn) {
|
|
22
|
+
this.lockListeners.push(fn);
|
|
23
|
+
}
|
|
24
|
+
setUnlocked(session) {
|
|
25
|
+
this._session = session;
|
|
26
|
+
this._scheduleAutoLock();
|
|
27
|
+
}
|
|
28
|
+
lock() {
|
|
29
|
+
if (this._session === null) {
|
|
30
|
+
return; // Already locked, idempotent
|
|
31
|
+
}
|
|
32
|
+
this._clearTimer();
|
|
33
|
+
this._session = null;
|
|
34
|
+
for (const listener of this.lockListeners) {
|
|
35
|
+
listener();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
isUnlocked() {
|
|
39
|
+
return this._session !== null;
|
|
40
|
+
}
|
|
41
|
+
status() {
|
|
42
|
+
if (this._session === null) {
|
|
43
|
+
return { locked: true };
|
|
44
|
+
}
|
|
45
|
+
return { locked: false, email: this._session.email };
|
|
46
|
+
}
|
|
47
|
+
touch() {
|
|
48
|
+
if (this._session === null) {
|
|
49
|
+
return; // Already locked, ignore
|
|
50
|
+
}
|
|
51
|
+
this._clearTimer();
|
|
52
|
+
this._scheduleAutoLock();
|
|
53
|
+
}
|
|
54
|
+
get session() {
|
|
55
|
+
if (this._session === null) {
|
|
56
|
+
throw new LockedError('Vault is locked. Ask the user to run the unlock tool to sign in and unlock their Virlow vault.');
|
|
57
|
+
}
|
|
58
|
+
return this._session;
|
|
59
|
+
}
|
|
60
|
+
_scheduleAutoLock() {
|
|
61
|
+
this._timerHandle = setTimeout(() => {
|
|
62
|
+
this.lock();
|
|
63
|
+
}, this.autoLockMs);
|
|
64
|
+
this._timerHandle.unref?.();
|
|
65
|
+
}
|
|
66
|
+
_clearTimer() {
|
|
67
|
+
if (this._timerHandle !== null) {
|
|
68
|
+
clearTimeout(this._timerHandle);
|
|
69
|
+
this._timerHandle = null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=vault.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault.js","sourceRoot":"","sources":["../src/vault.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAY,SAAQ,KAAK;CAAG;AAQzC,MAAM,OAAO,KAAK;IAUa;IATrB,QAAQ,GAA2B,IAAI,CAAC;IACxC,YAAY,GAA0B,IAAI,CAAC;IAEnD;;;qCAGiC;IACzB,aAAa,GAAsB,EAAE,CAAC;IAE9C,YAA6B,aAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;QAAvC,eAAU,GAAV,UAAU,CAA6B;IAAG,CAAC;IAExE;;yBAEqB;IACrB,IAAI,MAAM,CAAC,EAAc;QACvB,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,eAAe,CAAC,EAAc;QAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,WAAW,CAAC,OAAwB;QAClC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,CAAC,6BAA6B;QACvC,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC1C,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;IAChC,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,CAAC,yBAAyB;QACnC,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI,OAAO;QACT,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,WAAW,CACnB,gGAAgG,CACjG,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACpB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;IAC9B,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC/B,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;CACF"}
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@batalabs/virlow-mcp-core",
|
|
3
|
+
"version": "3.11.4",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "Virlow MCP connector core: encrypted note and memory access, folder exposure, and the memories opt-in. Shared by the local virlow-mcp CLI and the hosted connector.",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"yaml": ">=2.8.3 <3",
|
|
15
|
+
"@batalabs/virlow-crypto": "3.11.4",
|
|
16
|
+
"@batalabs/virlow-memory": "3.11.4"
|
|
17
|
+
},
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"@types/node": "^22.10.0",
|
|
20
|
+
"typescript": "^5.8.0",
|
|
21
|
+
"vitest": "^3.0.0"
|
|
22
|
+
},
|
|
23
|
+
"main": "./dist/index.js",
|
|
24
|
+
"types": "./dist/index.d.ts",
|
|
25
|
+
"files": [
|
|
26
|
+
"LICENSE",
|
|
27
|
+
"README.md",
|
|
28
|
+
"dist"
|
|
29
|
+
],
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"access": "public"
|
|
32
|
+
},
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "git+https://github.com/batalabs/virlow-app.git",
|
|
36
|
+
"directory": "packages/mcp-core"
|
|
37
|
+
},
|
|
38
|
+
"scripts": {
|
|
39
|
+
"test": "vitest run",
|
|
40
|
+
"type-check": "tsc --noEmit",
|
|
41
|
+
"build": "tsc -p tsconfig.build.json"
|
|
42
|
+
}
|
|
43
|
+
}
|