@batalabs/virlow-mcp-core 3.11.11 → 3.11.13

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.
@@ -11,7 +11,28 @@
11
11
  * yield an empty cache that gets rebuilt. The cache is an optimisation, never
12
12
  * a source of truth.
13
13
  */
14
- export declare class EmbeddingCache {
14
+ /**
15
+ * What MemoryStore actually needs from a cache.
16
+ *
17
+ * The concrete EmbeddingCache below writes an encrypted file, which is right
18
+ * for the local CLI and wrong for a shared server: a hosted connector holding
19
+ * many accounts must not leave per-user ciphertext on the API's disk outliving
20
+ * the session that produced it. Typing the dependency as this interface is what
21
+ * lets the hosted side supply an in-memory cache with the same lifetime as its
22
+ * unlocked session.
23
+ *
24
+ * `load` and `save` take the master key because a real implementation encrypts;
25
+ * an in-memory one that never leaves the process may ignore it.
26
+ */
27
+ export interface EmbeddingCacheLike {
28
+ load(key: CryptoKey): Promise<void>;
29
+ get(noteId: string, updatedAt: string): Float32Array | undefined;
30
+ set(noteId: string, updatedAt: string, vector: Float32Array): void;
31
+ delete(noteId: string): void;
32
+ clear(): void;
33
+ save(key: CryptoKey): Promise<void>;
34
+ }
35
+ export declare class EmbeddingCache implements EmbeddingCacheLike {
15
36
  private readonly file;
16
37
  private readonly embeddingModel;
17
38
  private readonly dir;
@@ -10,19 +10,6 @@ const node_path_1 = __importDefault(require("node:path"));
10
10
  const virlow_crypto_1 = require("@batalabs/virlow-crypto");
11
11
  /** Bumped if the on-disk record shape ever changes; a mismatch is a cache miss. */
12
12
  const CACHE_VERSION = 1;
13
- /**
14
- * Embedding vectors cached on disk, encrypted under the master key.
15
- *
16
- * Embedding a few hundred memories takes long enough to be felt at the start
17
- * of every session, so the vectors are kept between runs. They are derived
18
- * from plaintext memories, so the file is AES-GCM ciphertext and nothing —
19
- * not the note ids, not the timestamps — is readable without the key.
20
- *
21
- * Every failure mode is a silent miss: a missing file, a file written under a
22
- * different master password, a different embedding model, or corrupt bytes all
23
- * yield an empty cache that gets rebuilt. The cache is an optimisation, never
24
- * a source of truth.
25
- */
26
13
  class EmbeddingCache {
27
14
  file;
28
15
  embeddingModel;
@@ -12,4 +12,16 @@ export type { MemoryTree } from './memory-tree.js';
12
12
  export { computeExposure, filteredNotice } from './exposure.js';
13
13
  export type { Exposure } from './exposure.js';
14
14
  export { EmbeddingCache } from './embedding-cache.js';
15
+ export type { EmbeddingCacheLike } from './embedding-cache.js';
15
16
  export { MEMORIES_DISABLED_MESSAGE, memoriesAllowed } from './memories-enabled.js';
17
+ /**
18
+ * The MCP tool surface is NOT exported here. It lives at the `/tools` subpath,
19
+ * which is ESM-only, because it depends on @modelcontextprotocol/sdk — an
20
+ * ESM-only package. This entry point is dual-published (virlow-api is
21
+ * CommonJS and require()s it), and a CommonJS build of the tools would emit a
22
+ * require() of an ESM-only package: ERR_REQUIRE_ESM at runtime, and a tsc
23
+ * heap exhaustion at build time before it even got that far.
24
+ *
25
+ * CommonJS consumers reach the tools with `await import(...)`, which is legal
26
+ * from CJS and is how virlow-api will host them.
27
+ */
package/dist/cjs/index.js CHANGED
@@ -30,3 +30,14 @@ Object.defineProperty(exports, "EmbeddingCache", { enumerable: true, get: functi
30
30
  var memories_enabled_js_1 = require("./memories-enabled.js");
31
31
  Object.defineProperty(exports, "MEMORIES_DISABLED_MESSAGE", { enumerable: true, get: function () { return memories_enabled_js_1.MEMORIES_DISABLED_MESSAGE; } });
32
32
  Object.defineProperty(exports, "memoriesAllowed", { enumerable: true, get: function () { return memories_enabled_js_1.memoriesAllowed; } });
33
+ /**
34
+ * The MCP tool surface is NOT exported here. It lives at the `/tools` subpath,
35
+ * which is ESM-only, because it depends on @modelcontextprotocol/sdk — an
36
+ * ESM-only package. This entry point is dual-published (virlow-api is
37
+ * CommonJS and require()s it), and a CommonJS build of the tools would emit a
38
+ * require() of an ESM-only package: ERR_REQUIRE_ESM at runtime, and a tsc
39
+ * heap exhaustion at build time before it even got that far.
40
+ *
41
+ * CommonJS consumers reach the tools with `await import(...)`, which is legal
42
+ * from CJS and is how virlow-api will host them.
43
+ */
@@ -1,6 +1,6 @@
1
1
  import { type Embedder } from '@batalabs/virlow-memory';
2
2
  import { type VirlowApi } from './api.js';
3
- import type { EmbeddingCache } from './embedding-cache.js';
3
+ import type { EmbeddingCacheLike } from './embedding-cache.js';
4
4
  import { type MemoryMeta } from './memory-note.js';
5
5
  import type { Vault } from './vault.js';
6
6
  export declare const SYNC_PAGE_LIMIT = 100;
@@ -42,7 +42,7 @@ export declare class MemoryStore {
42
42
  * awaiting the network or a decrypt when the vault locked can never write
43
43
  * decrypted plaintext back into a cache the user just emptied. */
44
44
  private epoch;
45
- constructor(api: VirlowApi, vault: Vault, embedder: Embedder, cacheFactory: (userId: string) => EmbeddingCache);
45
+ constructor(api: VirlowApi, vault: Vault, embedder: Embedder, cacheFactory: (userId: string) => EmbeddingCacheLike);
46
46
  clear(): void;
47
47
  get size(): number;
48
48
  /** Concurrent callers share one in-flight sync so two overlapping tool
@@ -11,7 +11,28 @@
11
11
  * yield an empty cache that gets rebuilt. The cache is an optimisation, never
12
12
  * a source of truth.
13
13
  */
14
- export declare class EmbeddingCache {
14
+ /**
15
+ * What MemoryStore actually needs from a cache.
16
+ *
17
+ * The concrete EmbeddingCache below writes an encrypted file, which is right
18
+ * for the local CLI and wrong for a shared server: a hosted connector holding
19
+ * many accounts must not leave per-user ciphertext on the API's disk outliving
20
+ * the session that produced it. Typing the dependency as this interface is what
21
+ * lets the hosted side supply an in-memory cache with the same lifetime as its
22
+ * unlocked session.
23
+ *
24
+ * `load` and `save` take the master key because a real implementation encrypts;
25
+ * an in-memory one that never leaves the process may ignore it.
26
+ */
27
+ export interface EmbeddingCacheLike {
28
+ load(key: CryptoKey): Promise<void>;
29
+ get(noteId: string, updatedAt: string): Float32Array | undefined;
30
+ set(noteId: string, updatedAt: string, vector: Float32Array): void;
31
+ delete(noteId: string): void;
32
+ clear(): void;
33
+ save(key: CryptoKey): Promise<void>;
34
+ }
35
+ export declare class EmbeddingCache implements EmbeddingCacheLike {
15
36
  private readonly file;
16
37
  private readonly embeddingModel;
17
38
  private readonly dir;
@@ -1 +1 @@
1
- {"version":3,"file":"embedding-cache.d.ts","sourceRoot":"","sources":["../src/embedding-cache.ts"],"names":[],"mappings":"AA0BA;;;;;;;;;;;;GAYG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAkE;IACjF,OAAO,CAAC,KAAK,CAAS;gBAEV,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE;IAQnE,IAAI,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BzC,yEAAyE;IACzE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAKhE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IAKlE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI5B,KAAK,IAAI,IAAI;IAKP,IAAI,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BzC,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
1
+ {"version":3,"file":"embedding-cache.d.ts","sourceRoot":"","sources":["../src/embedding-cache.ts"],"names":[],"mappings":"AA0BA;;;;;;;;;;;;GAYG;AACH;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IACjE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IACnE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAED,qBAAa,cAAe,YAAW,kBAAkB;IACvD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAkE;IACjF,OAAO,CAAC,KAAK,CAAS;gBAEV,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE;IAQnE,IAAI,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BzC,yEAAyE;IACzE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAKhE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IAKlE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI5B,KAAK,IAAI,IAAI;IAKP,IAAI,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BzC,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
@@ -4,19 +4,6 @@ import path from 'node:path';
4
4
  import { bytesToBase64, base64ToBytes, decryptBytesBlob, encryptBytesBlob, } from '@batalabs/virlow-crypto';
5
5
  /** Bumped if the on-disk record shape ever changes; a mismatch is a cache miss. */
6
6
  const CACHE_VERSION = 1;
7
- /**
8
- * Embedding vectors cached on disk, encrypted under the master key.
9
- *
10
- * Embedding a few hundred memories takes long enough to be felt at the start
11
- * of every session, so the vectors are kept between runs. They are derived
12
- * from plaintext memories, so the file is AES-GCM ciphertext and nothing —
13
- * not the note ids, not the timestamps — is readable without the key.
14
- *
15
- * Every failure mode is a silent miss: a missing file, a file written under a
16
- * different master password, a different embedding model, or corrupt bytes all
17
- * yield an empty cache that gets rebuilt. The cache is an optimisation, never
18
- * a source of truth.
19
- */
20
7
  export class EmbeddingCache {
21
8
  file;
22
9
  embeddingModel;
@@ -1 +1 @@
1
- {"version":3,"file":"embedding-cache.js","sourceRoot":"","sources":["../src/embedding-cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embedding-cache.js","sourceRoot":"","sources":["../src/embedding-cache.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -12,5 +12,17 @@ export type { MemoryTree } from './memory-tree.js';
12
12
  export { computeExposure, filteredNotice } from './exposure.js';
13
13
  export type { Exposure } from './exposure.js';
14
14
  export { EmbeddingCache } from './embedding-cache.js';
15
+ export type { EmbeddingCacheLike } from './embedding-cache.js';
15
16
  export { MEMORIES_DISABLED_MESSAGE, memoriesAllowed } from './memories-enabled.js';
17
+ /**
18
+ * The MCP tool surface is NOT exported here. It lives at the `/tools` subpath,
19
+ * which is ESM-only, because it depends on @modelcontextprotocol/sdk — an
20
+ * ESM-only package. This entry point is dual-published (virlow-api is
21
+ * CommonJS and require()s it), and a CommonJS build of the tools would emit a
22
+ * require() of an ESM-only package: ERR_REQUIRE_ESM at runtime, and a tsc
23
+ * heap exhaustion at build time before it even got that far.
24
+ *
25
+ * CommonJS consumers reach the tools with `await import(...)`, which is legal
26
+ * from CJS and is how virlow-api will host them.
27
+ */
16
28
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC/C,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAChD,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC7D,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EACL,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC/C,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAChD,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC7D,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EACL,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEnF;;;;;;;;;;GAUG"}
package/dist/index.js CHANGED
@@ -7,4 +7,15 @@ export { MEMORIES_ROOT_NAME, ensureNamespace, resolveMemoryTree, } from './memor
7
7
  export { computeExposure, filteredNotice } from './exposure.js';
8
8
  export { EmbeddingCache } from './embedding-cache.js';
9
9
  export { MEMORIES_DISABLED_MESSAGE, memoriesAllowed } from './memories-enabled.js';
10
+ /**
11
+ * The MCP tool surface is NOT exported here. It lives at the `/tools` subpath,
12
+ * which is ESM-only, because it depends on @modelcontextprotocol/sdk — an
13
+ * ESM-only package. This entry point is dual-published (virlow-api is
14
+ * CommonJS and require()s it), and a CommonJS build of the tools would emit a
15
+ * require() of an ESM-only package: ERR_REQUIRE_ESM at runtime, and a tsc
16
+ * heap exhaustion at build time before it even got that far.
17
+ *
18
+ * CommonJS consumers reach the tools with `await import(...)`, which is legal
19
+ * from CJS and is how virlow-api will host them.
20
+ */
10
21
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE7D,OAAO,EACL,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE7D,OAAO,EACL,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEnF;;;;;;;;;;GAUG"}
@@ -1,6 +1,6 @@
1
1
  import { type Embedder } from '@batalabs/virlow-memory';
2
2
  import { type VirlowApi } from './api.js';
3
- import type { EmbeddingCache } from './embedding-cache.js';
3
+ import type { EmbeddingCacheLike } from './embedding-cache.js';
4
4
  import { type MemoryMeta } from './memory-note.js';
5
5
  import type { Vault } from './vault.js';
6
6
  export declare const SYNC_PAGE_LIMIT = 100;
@@ -42,7 +42,7 @@ export declare class MemoryStore {
42
42
  * awaiting the network or a decrypt when the vault locked can never write
43
43
  * decrypted plaintext back into a cache the user just emptied. */
44
44
  private epoch;
45
- constructor(api: VirlowApi, vault: Vault, embedder: Embedder, cacheFactory: (userId: string) => EmbeddingCache);
45
+ constructor(api: VirlowApi, vault: Vault, embedder: Embedder, cacheFactory: (userId: string) => EmbeddingCacheLike);
46
46
  clear(): void;
47
47
  get size(): number;
48
48
  /** Concurrent callers share one in-flight sync so two overlapping tool
@@ -1 +1 @@
1
- {"version":3,"file":"memories.d.ts","sourceRoot":"","sources":["../src/memories.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memories.d.ts","sourceRoot":"","sources":["../src/memories.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"memories.js","sourceRoot":"","sources":["../src/memories.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memories.js","sourceRoot":"","sources":["../src/memories.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { VirlowApi } from './api.js';
3
+ import { Vault } from './vault.js';
4
+ import { NotesService } from './notes.js';
5
+ import { MemoryStore } from './memories.js';
6
+ import type { EmbeddingCacheLike } from './embedding-cache.js';
7
+ /**
8
+ * How a client is told to unlock, which is the one part of the tool surface
9
+ * that genuinely differs between deployments.
10
+ *
11
+ * Locally, unlocking opens a browser window on the user's own machine and the
12
+ * master password never leaves it. Hosted, there is no browser to open and the
13
+ * password reaches the server — so the copy a model reads has to differ too,
14
+ * and a single baked-in description would be wrong for one of them.
15
+ */
16
+ export interface UnlockStrategy {
17
+ /**
18
+ * The unlock tool's description. Read by the calling model, so it carries the
19
+ * instruction never to ask for or relay the password itself.
20
+ */
21
+ description: string;
22
+ /** Begin unlocking. Returns the text the tool replies with. */
23
+ begin(services: ServerServices): Promise<string>;
24
+ }
25
+ export interface BuildServerOptions {
26
+ apiUrl: string;
27
+ /** Name and version reported in the MCP handshake. */
28
+ serverInfo: {
29
+ name: string;
30
+ version: string;
31
+ };
32
+ /** See UnlockStrategy — local opens a browser, hosted cannot. */
33
+ unlock: UnlockStrategy;
34
+ /**
35
+ * Where a user's embedding cache lives. Required rather than defaulted: the
36
+ * local CLI writes an encrypted file under the user's home directory, and a
37
+ * shared server must not silently do the same thing for every account it
38
+ * serves. Callers state where it goes — and, via EmbeddingCacheLike, whether
39
+ * it touches a disk at all.
40
+ */
41
+ createEmbeddingCache: (userId: string) => EmbeddingCacheLike;
42
+ /** transformers.js model cache directory (public ONNX weights only). */
43
+ modelCacheDir?: string;
44
+ autoLockMs?: number;
45
+ /**
46
+ * Whether to expose the memory tools at all. When false they are not
47
+ * registered, so `tools/list` does not advertise them and a client cannot
48
+ * call them — rather than advertising tools that always error, which reads
49
+ * as a broken server instead of a deliberate setting.
50
+ *
51
+ * Notes tools are unaffected either way.
52
+ */
53
+ memoriesEnabled?: boolean;
54
+ }
55
+ export interface BuiltServer {
56
+ server: McpServer;
57
+ vault: Vault;
58
+ }
59
+ /**
60
+ * The stateful half of the process: the API client, the unlocked vault, and
61
+ * the caches built on top of them.
62
+ *
63
+ * Separated from the McpServer because the HTTP transport needs a *new*
64
+ * McpServer per request (the SDK binds one server to one transport) while
65
+ * every request must see the *same* vault — otherwise a tool call would land
66
+ * on a freshly-locked vault and the user would be asked to unlock on every
67
+ * message.
68
+ */
69
+ export interface ServerServices {
70
+ api: VirlowApi;
71
+ vault: Vault;
72
+ memoryStore: MemoryStore;
73
+ notesService: NotesService;
74
+ }
75
+ /**
76
+ * Builds the virlow-mcp server: registers all 19 tools against a fresh
77
+ * VirlowApi/Vault/MemoryStore/NotesService, and returns the server plus the
78
+ * vault (exposed mainly so callers/tests can inspect lock state directly).
79
+ * Nothing here talks to the network or the model — that only happens once a
80
+ * tool handler actually runs.
81
+ */
82
+ export declare function createServices(opts: BuildServerOptions): ServerServices;
83
+ /**
84
+ * Register all 19 tools against the given services. Callers that need one
85
+ * server (stdio) can omit `services` and get a fresh set; the HTTP transport
86
+ * passes shared ones so every request talks to the same vault.
87
+ */
88
+ export declare function buildServer(opts: BuildServerOptions & {
89
+ services?: ServerServices;
90
+ }): BuiltServer;
91
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAY,SAAS,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAe,KAAK,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK/D;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,KAAK,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,iEAAiE;IACjE,MAAM,EAAE,cAAc,CAAC;IACvB;;;;;;OAMG;IACH,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,kBAAkB,CAAC;IAC7D,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;CACd;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;CAC5B;AA0DD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,cAAc,CAgCvE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,kBAAkB,GAAG;IAAE,QAAQ,CAAC,EAAE,cAAc,CAAA;CAAE,GACvD,WAAW,CA6bb"}
package/dist/tools.js ADDED
@@ -0,0 +1,399 @@
1
+ /**
2
+ * The MCP tool surface, shared by the local CLI and the hosted connector.
3
+ *
4
+ * This lives here rather than in apps/mcp because the design requires the
5
+ * access gates — folders.mcpEnabled and the memories opt-in — to have one
6
+ * implementation, not two. A second copy in virlow-api would drift, and the
7
+ * thing it would drift on is who can read which notes.
8
+ *
9
+ * Everything deployment-specific is injected (see BuildServerOptions): how a
10
+ * user is asked to unlock, where their embedding cache lives, and what the
11
+ * server calls itself.
12
+ */
13
+ import { z } from 'zod';
14
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
15
+ import { createEmbedder } from '@batalabs/virlow-memory';
16
+ import { ApiError, VirlowApi } from './api.js';
17
+ import { LockedError, Vault } from './vault.js';
18
+ import { NotesService } from './notes.js';
19
+ import { MemoryStore } from './memories.js';
20
+ import { filteredNotice } from './exposure.js';
21
+ import { MEMORIES_DISABLED_MESSAGE, memoriesAllowed } from './memories-enabled.js';
22
+ // ---------- small result helpers ----------
23
+ function textResult(text) {
24
+ return { content: [{ type: 'text', text }] };
25
+ }
26
+ function errorResult(text) {
27
+ return { content: [{ type: 'text', text }], isError: true };
28
+ }
29
+ /** LockedError -> vault's own "ask the user to unlock" message; ApiError ->
30
+ * "API error <status>: <message>"; anything else -> its message verbatim.
31
+ * Every tool handler is wrapped with this so a locked vault or a failed API
32
+ * call never crashes the process — it always comes back as a normal
33
+ * (isError: true) tool result the calling agent can read and act on. */
34
+ function mapError(err) {
35
+ if (err instanceof LockedError)
36
+ return err.message;
37
+ if (err instanceof ApiError)
38
+ return `API error ${err.status}: ${err.message}`;
39
+ if (err instanceof Error)
40
+ return err.message;
41
+ return String(err);
42
+ }
43
+ /** Wraps a tool handler body so any thrown error becomes a mapped, non-throwing
44
+ * CallToolResult instead of an uncaught rejection. */
45
+ function wrap(fn) {
46
+ return async (...args) => {
47
+ try {
48
+ return await fn(...args);
49
+ }
50
+ catch (err) {
51
+ return errorResult(mapError(err));
52
+ }
53
+ };
54
+ }
55
+ function formatSyncStats(stats) {
56
+ return `synced ${stats.added} new, ${stats.updated} changed, removed ${stats.removed}`;
57
+ }
58
+ /** `[source · tags · confidence]`, omitted entirely when a memory carries none. */
59
+ function formatMeta(meta) {
60
+ const parts = [];
61
+ if (meta.source)
62
+ parts.push(meta.source);
63
+ if (meta.tags?.length)
64
+ parts.push(meta.tags.join(', '));
65
+ if (meta.confidence)
66
+ parts.push(`confidence ${meta.confidence}`);
67
+ return parts.length > 0 ? ` [${parts.join(' · ')}]` : '';
68
+ }
69
+ const truncate = (text, max = 120) => text.length > max ? `${text.slice(0, max)}…` : text;
70
+ /**
71
+ * Builds the virlow-mcp server: registers all 19 tools against a fresh
72
+ * VirlowApi/Vault/MemoryStore/NotesService, and returns the server plus the
73
+ * vault (exposed mainly so callers/tests can inspect lock state directly).
74
+ * Nothing here talks to the network or the model — that only happens once a
75
+ * tool handler actually runs.
76
+ */
77
+ export function createServices(opts) {
78
+ const api = new VirlowApi(opts.apiUrl);
79
+ const vault = new Vault(opts.autoLockMs);
80
+ // The real transformers.js embedder is expensive to load (downloads/loads
81
+ // ~30MB of public model weights) and is not needed for most tool calls
82
+ // (unlock/lock/status/notes tools never embed). Loading it eagerly here
83
+ // would slow down every server start; instead this proxy defers the real
84
+ // load until the first .embed() call, and memoizes it so concurrent or
85
+ // repeated calls share one load.
86
+ let embedderPromise = null;
87
+ const getRealEmbedder = () => {
88
+ // On rejection (e.g. a transient network failure partway through the
89
+ // ~30MB download), clear the memo so the *next* call retries instead of
90
+ // replaying the same rejected promise forever — otherwise one flaky
91
+ // download would permanently poison every memory tool until restart.
92
+ embedderPromise ??= createEmbedder({ cacheDir: opts.modelCacheDir }).catch((err) => {
93
+ embedderPromise = null;
94
+ throw err;
95
+ });
96
+ return embedderPromise;
97
+ };
98
+ const lazyEmbedder = {
99
+ embed: (text) => getRealEmbedder().then((embedder) => embedder.embed(text)),
100
+ };
101
+ // The cache file is keyed by user, and the user is only known after unlock,
102
+ // so the store builds it lazily rather than taking an instance.
103
+ const memoryStore = new MemoryStore(api, vault, lazyEmbedder, opts.createEmbeddingCache);
104
+ const notesService = new NotesService(api, vault);
105
+ return { api, vault, memoryStore, notesService };
106
+ }
107
+ /**
108
+ * Register all 19 tools against the given services. Callers that need one
109
+ * server (stdio) can omit `services` and get a fresh set; the HTTP transport
110
+ * passes shared ones so every request talks to the same vault.
111
+ */
112
+ export function buildServer(opts) {
113
+ const { api, vault, memoryStore, notesService } = opts.services ?? createServices(opts);
114
+ const server = new McpServer(opts.serverInfo);
115
+ // ---------- vault lifecycle ----------
116
+ server.registerTool('unlock', { description: opts.unlock.description }, wrap(async () => textResult(await opts.unlock.begin({ api, vault, memoryStore, notesService }))));
117
+ server.registerTool('lock', {
118
+ description: 'Immediately lock the vault, discarding the in-memory decryption key and clearing all cached ' +
119
+ 'memories and notes. Use this when the user is done with a session or asks to lock explicitly. Safe to ' +
120
+ 'call even if already locked.',
121
+ }, wrap(async () => {
122
+ vault.lock();
123
+ return textResult('Locked.');
124
+ }));
125
+ server.registerTool('status', {
126
+ description: "Report whether the vault is currently locked or unlocked, and which account it's unlocked as. " +
127
+ 'Call this after unlock to confirm the user finished the browser form, and before any memory/notes ' +
128
+ 'tool if you are unsure of the current lock state.',
129
+ }, wrap(async () => {
130
+ return textResult(JSON.stringify(vault.status()));
131
+ }));
132
+ // ---------- memories (only when enabled) ----------
133
+ //
134
+ // Two layers, covering different failures. `memoriesEnabled` decides whether
135
+ // the tools are registered at all, so a client sees an honest tool list.
136
+ // `requireMemories` re-checks the account setting on every call, because a
137
+ // client that ignored notifications/tools/list_changed — or one mid-flight
138
+ // when the user flipped the switch — must still be refused.
139
+ const requireMemories = async () => {
140
+ // A locked vault is the more useful error and the store already raises it;
141
+ // do not mask it with a preference check that could not succeed anyway.
142
+ if (!vault.isUnlocked())
143
+ return;
144
+ if (!(await memoriesAllowed(api))) {
145
+ throw new Error(MEMORIES_DISABLED_MESSAGE);
146
+ }
147
+ };
148
+ if (opts.memoriesEnabled !== false) {
149
+ // ---------- memories ----------
150
+ server.registerTool('add_memory', {
151
+ description: 'Store a distilled fact about the user or project so any AI tool can recall it later. The label is a ' +
152
+ 'short title for the memory; the text is the fact itself. Use the namespace argument for ' +
153
+ 'project-specific facts (omit it for facts that apply everywhere). If a very similar memory already ' +
154
+ 'exists it is updated in place rather than duplicated. Memories are ordinary encrypted notes in the ' +
155
+ "user's Memories folder — they can read and edit them, metadata included, in the Virlow app. Requires " +
156
+ 'the vault to be unlocked. First use in this process downloads ~30MB of public embedding-model weights.',
157
+ inputSchema: {
158
+ label: z.string().min(1).max(80),
159
+ text: z.string().min(1).max(4000),
160
+ namespace: z.string().max(100).optional(),
161
+ tags: z.array(z.string().max(50)).max(20).optional(),
162
+ confidence: z.string().max(20).optional(),
163
+ source: z.string().max(50).optional(),
164
+ },
165
+ }, wrap(async (args) => {
166
+ const meta = {};
167
+ if (args.tags !== undefined)
168
+ meta.tags = args.tags;
169
+ if (args.confidence !== undefined)
170
+ meta.confidence = args.confidence;
171
+ if (args.source !== undefined)
172
+ meta.source = args.source;
173
+ await requireMemories();
174
+ const result = await memoryStore.add(args.label, args.text, args.namespace, meta);
175
+ const message = result.action === 'updated'
176
+ ? `updated existing memory ${result.id}`
177
+ : `stored ${result.id}`;
178
+ if (result.similar.length === 0)
179
+ return textResult(message);
180
+ // Below the merge threshold but close enough that the agent should
181
+ // know it may be restating something.
182
+ const lines = result.similar.map((s) => `- [${s.id}] (${s.similarity}) ${s.label} — ${truncate(s.text)}`);
183
+ return textResult(`${message}\n\nsimilar existing memories:\n${lines.join('\n')}`);
184
+ }));
185
+ server.registerTool('search_memory', {
186
+ description: 'Search stored memories by semantic similarity to a query. Call this at the start of a task with the ' +
187
+ "task topic to recall relevant facts before acting. Results are ranked by similarity; use namespace to " +
188
+ 'scope to a project. Requires the vault to be unlocked. First use in this process downloads ~30MB of ' +
189
+ 'public embedding-model weights.',
190
+ inputSchema: {
191
+ query: z.string().min(1).max(500),
192
+ namespace: z.string().max(100).optional(),
193
+ limit: z.number().int().min(1).max(50).optional(),
194
+ },
195
+ }, wrap(async (args) => {
196
+ await requireMemories();
197
+ // sync() and search() are kicked off back-to-back without an
198
+ // intervening await, so search()'s internal sync() call reuses the
199
+ // same in-flight promise (MemoryStore.sync's syncInFlight dedup)
200
+ // instead of triggering a second round trip.
201
+ const statsPromise = memoryStore.sync();
202
+ const resultsPromise = memoryStore.search(args.query, args.namespace, args.limit ?? 10);
203
+ const [stats, results] = await Promise.all([statsPromise, resultsPromise]);
204
+ const lines = results.map((r, i) => `${i + 1}. [${r.id}] (similarity ${r.similarity}) ${r.label} — ${r.text}${r.namespace ? ` (namespace: ${r.namespace})` : ''}${formatMeta(r.meta)}`);
205
+ const body = lines.length > 0 ? lines.join('\n') : '(no matching memories found)';
206
+ return textResult(`${body}\n\n${formatSyncStats(stats)}`);
207
+ }));
208
+ server.registerTool('list_memories', {
209
+ description: 'List cached memories, optionally filtered by namespace. Syncs with the server first so the list ' +
210
+ 'reflects the latest state across devices. Requires the vault to be unlocked.',
211
+ inputSchema: {
212
+ namespace: z.string().max(100).optional(),
213
+ limit: z.number().int().min(1).max(50).optional(),
214
+ },
215
+ }, wrap(async (args) => {
216
+ await requireMemories();
217
+ const stats = await memoryStore.sync();
218
+ const items = memoryStore.list(args.namespace).slice(0, args.limit ?? 50);
219
+ const lines = items.map((m, i) => `${i + 1}. [${m.id}] ${m.label} — ${m.text}${m.namespace ? ` (namespace: ${m.namespace})` : ''}${formatMeta(m.meta)}`);
220
+ const body = lines.length > 0 ? lines.join('\n') : '(no memories found)';
221
+ return textResult(`${body}\n\n${formatSyncStats(stats)}`);
222
+ }));
223
+ server.registerTool('update_memory', {
224
+ description: 'Update an existing memory by id. Any field you omit is left alone, including metadata you do not ' +
225
+ 'name and the date the memory was first created. Requires the vault to be unlocked.',
226
+ inputSchema: {
227
+ id: z.string().min(1),
228
+ label: z.string().min(1).max(80).optional(),
229
+ text: z.string().min(1).max(4000).optional(),
230
+ tags: z.array(z.string().max(50)).max(20).optional(),
231
+ confidence: z.string().max(20).optional(),
232
+ },
233
+ }, wrap(async (args) => {
234
+ if (args.label === undefined &&
235
+ args.text === undefined &&
236
+ args.tags === undefined &&
237
+ args.confidence === undefined) {
238
+ throw new Error('update_memory needs at least one of label, text, tags, or confidence');
239
+ }
240
+ const meta = {};
241
+ if (args.tags !== undefined)
242
+ meta.tags = args.tags;
243
+ if (args.confidence !== undefined)
244
+ meta.confidence = args.confidence;
245
+ const changes = { meta };
246
+ if (args.label !== undefined)
247
+ changes.label = args.label;
248
+ if (args.text !== undefined)
249
+ changes.text = args.text;
250
+ await requireMemories();
251
+ await memoryStore.update(args.id, changes);
252
+ return textResult(`updated memory ${args.id}`);
253
+ }));
254
+ server.registerTool('delete_memory', {
255
+ description: "Move a memory to the Trash by id. It stops being recalled immediately, and the user can restore it " +
256
+ 'from the Virlow app. Requires the vault to be unlocked.',
257
+ inputSchema: {
258
+ id: z.string().min(1),
259
+ },
260
+ }, wrap(async (args) => {
261
+ await requireMemories();
262
+ await memoryStore.delete(args.id);
263
+ return textResult(`trashed memory ${args.id}`);
264
+ }));
265
+ }
266
+ // ---------- notes ----------
267
+ server.registerTool('search_notes', {
268
+ description: 'Full-text search over note titles and content, returning matching notes with a short snippet. ' +
269
+ 'Requires the vault to be unlocked.',
270
+ inputSchema: {
271
+ query: z.string().min(1).max(500),
272
+ limit: z.number().int().min(1).max(50).optional(),
273
+ },
274
+ }, wrap(async (args) => {
275
+ const { results, scanned, truncated } = await notesService.searchNotes(args.query, args.limit ?? 20);
276
+ const lines = results.map((r, i) => `${i + 1}. [${r.id}] ${r.title} — ${r.snippet}`);
277
+ const body = lines.length > 0 ? lines.join('\n') : '(no matching notes found)';
278
+ const scanNote = truncated
279
+ ? `\n\n(scanned ${scanned} notes; more notes exist than were scanned — narrow your query for full coverage)`
280
+ : '';
281
+ return textResult(`${body}${scanNote}`);
282
+ }));
283
+ server.registerTool('list_notes', {
284
+ description: 'List notes with pagination, optionally filtered by folder or starred/archived state. Requires the ' +
285
+ 'vault to be unlocked.',
286
+ inputSchema: {
287
+ folderId: z.string().optional(),
288
+ starred: z.boolean().optional(),
289
+ archived: z.boolean().optional(),
290
+ page: z.number().int().min(1).optional(),
291
+ limit: z.number().int().min(1).max(50).optional(),
292
+ },
293
+ }, wrap(async (args) => {
294
+ const { notes, pagination, withheld, exposure } = await notesService.listNotes(args);
295
+ const lines = notes.map((n, i) => `${i + 1}. [${n.id}]${n.starred ? ' *' : ''} ${n.title}`);
296
+ const body = lines.length > 0 ? lines.join('\n') : '(no notes found)';
297
+ return textResult(`${body}\n\npage ${pagination.page} of ${pagination.pages} (${pagination.total} total)` +
298
+ filteredNotice(withheld, exposure));
299
+ }));
300
+ server.registerTool('list_folders', {
301
+ description: 'List the note folders exposed to MCP. Folders the user has not switched on are ' +
302
+ 'not listed; the response says how many were withheld. Requires the vault to be unlocked.',
303
+ }, wrap(async () => {
304
+ const { folders, withheld } = await notesService.listFolders();
305
+ const lines = folders.map((f, i) => `${i + 1}. [${f.id}] ${f.name}`);
306
+ const body = lines.length > 0 ? lines.join('\n') : '(no folders are exposed to MCP)';
307
+ const notice = withheld > 0
308
+ ? `\n\n(${withheld} folder${withheld === 1 ? '' : 's'} not shown: not exposed to MCP. ` +
309
+ 'Turn on "Expose to MCP" in a folder\'s settings in the Virlow app to include it.)'
310
+ : '';
311
+ return textResult(body + notice);
312
+ }));
313
+ server.registerTool('read_note', {
314
+ description: 'Read the full title and content of a note by id. Requires the vault to be unlocked.',
315
+ inputSchema: {
316
+ id: z.string().min(1),
317
+ },
318
+ }, wrap(async (args) => {
319
+ const note = await notesService.readNote(args.id);
320
+ return textResult(`# ${note.title}\n\n${note.content}`);
321
+ }));
322
+ server.registerTool('create_note', {
323
+ description: 'Create a new note with a title and content, optionally placed in a folder. Requires the vault to be ' +
324
+ 'unlocked.',
325
+ inputSchema: {
326
+ title: z.string().min(1).max(200),
327
+ content: z.string().max(50000).optional(),
328
+ folderId: z.string().optional(),
329
+ type: z.string().max(50).optional(),
330
+ },
331
+ }, wrap(async (args) => {
332
+ const note = await notesService.createNote(args.title, args.content ?? '', args.folderId, args.type);
333
+ return textResult(`created note ${note.id}`);
334
+ }));
335
+ server.registerTool('update_note', {
336
+ description: 'Update the title and/or content of an existing note by id. Only the provided fields are changed. ' +
337
+ 'Requires the vault to be unlocked.',
338
+ inputSchema: {
339
+ id: z.string().min(1),
340
+ title: z.string().min(1).max(200).optional(),
341
+ content: z.string().max(50000).optional(),
342
+ },
343
+ }, wrap(async (args) => {
344
+ await notesService.updateNote(args.id, { title: args.title, content: args.content });
345
+ return textResult(`updated note ${args.id}`);
346
+ }));
347
+ server.registerTool('move_note', {
348
+ description: 'Move a note into a different folder, or to no folder by passing folderId: null. Requires the vault ' +
349
+ 'to be unlocked.',
350
+ inputSchema: {
351
+ id: z.string().min(1),
352
+ folderId: z.string().nullable(),
353
+ },
354
+ }, wrap(async (args) => {
355
+ await notesService.moveNote(args.id, args.folderId);
356
+ return textResult(`moved note ${args.id}`);
357
+ }));
358
+ server.registerTool('set_star', {
359
+ description: 'Star or unstar a note by id. Requires the vault to be unlocked.',
360
+ inputSchema: {
361
+ id: z.string().min(1),
362
+ starred: z.boolean(),
363
+ },
364
+ }, wrap(async (args) => {
365
+ await notesService.setStar(args.id, args.starred);
366
+ return textResult(args.starred ? `starred note ${args.id}` : `unstarred note ${args.id}`);
367
+ }));
368
+ server.registerTool('archive_note', {
369
+ description: 'Archive or unarchive a note by id. Requires the vault to be unlocked.',
370
+ inputSchema: {
371
+ id: z.string().min(1),
372
+ archived: z.boolean(),
373
+ },
374
+ }, wrap(async (args) => {
375
+ await notesService.archiveNote(args.id, args.archived);
376
+ return textResult(args.archived ? `archived note ${args.id}` : `unarchived note ${args.id}`);
377
+ }));
378
+ server.registerTool('trash_note', {
379
+ description: 'Move a note to the trash by id. Requires the vault to be unlocked.',
380
+ inputSchema: {
381
+ id: z.string().min(1),
382
+ },
383
+ }, wrap(async (args) => {
384
+ await notesService.trashNote(args.id);
385
+ return textResult(`trashed note ${args.id}`);
386
+ }));
387
+ server.registerTool('create_folder', {
388
+ description: 'Create a new note folder, optionally nested under a parent folder. Requires the vault to be unlocked.',
389
+ inputSchema: {
390
+ name: z.string().min(1).max(100),
391
+ parentId: z.string().nullable().optional(),
392
+ },
393
+ }, wrap(async (args) => {
394
+ const folder = await notesService.createFolder(args.name, args.parentId);
395
+ return textResult(`created folder ${folder.id}`);
396
+ }));
397
+ return { server, vault };
398
+ }
399
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@batalabs/virlow-mcp-core",
3
- "version": "3.11.11",
3
+ "version": "3.11.13",
4
4
  "type": "module",
5
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
6
  "license": "MIT",
@@ -14,12 +14,20 @@
14
14
  "types": "./dist/cjs/index.d.ts",
15
15
  "default": "./dist/cjs/index.js"
16
16
  }
17
+ },
18
+ "./tools": {
19
+ "import": {
20
+ "types": "./dist/tools.d.ts",
21
+ "default": "./dist/tools.js"
22
+ }
17
23
  }
18
24
  },
19
25
  "dependencies": {
26
+ "@modelcontextprotocol/sdk": "^1.12.0",
20
27
  "yaml": ">=2.8.3 <3",
21
- "@batalabs/virlow-memory": "3.11.11",
22
- "@batalabs/virlow-crypto": "3.11.11"
28
+ "zod": "^3.24.0",
29
+ "@batalabs/virlow-crypto": "3.11.13",
30
+ "@batalabs/virlow-memory": "3.11.13"
23
31
  },
24
32
  "devDependencies": {
25
33
  "@types/node": "^22.10.0",