@batalabs/virlow-mcp-core 3.83.0 → 3.84.1

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/api.d.ts CHANGED
@@ -63,6 +63,9 @@ export interface NoteWrite {
63
63
  archived?: boolean;
64
64
  deleted?: boolean;
65
65
  encryptedAttrs?: string | null;
66
+ /** The version the write is based on; the API answers 409 NOTE_CONFLICT
67
+ * when the note has moved on since. */
68
+ expectedUpdatedAt?: string;
66
69
  }
67
70
  export interface ApiFolder {
68
71
  id: string;
@@ -154,6 +157,9 @@ export declare class VirlowApi {
154
157
  starred?: boolean;
155
158
  archived?: boolean;
156
159
  deleted?: boolean;
160
+ /** Only notes of this type. An API that does not know the type answers
161
+ * 400; `entities` (the entity registry) is listed only when asked for. */
162
+ type?: string;
157
163
  }): Promise<{
158
164
  notes: ApiNote[];
159
165
  pagination: {
package/dist/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/api.js CHANGED
@@ -138,6 +138,8 @@ export class VirlowApi {
138
138
  }
139
139
  listNotes(params) {
140
140
  const query = new URLSearchParams();
141
+ if (params.type !== undefined)
142
+ query.set('type', params.type);
141
143
  if (params.page !== undefined)
142
144
  query.set('page', String(params.page));
143
145
  if (params.limit !== undefined)
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/cjs/api.d.ts CHANGED
@@ -63,6 +63,9 @@ export interface NoteWrite {
63
63
  archived?: boolean;
64
64
  deleted?: boolean;
65
65
  encryptedAttrs?: string | null;
66
+ /** The version the write is based on; the API answers 409 NOTE_CONFLICT
67
+ * when the note has moved on since. */
68
+ expectedUpdatedAt?: string;
66
69
  }
67
70
  export interface ApiFolder {
68
71
  id: string;
@@ -154,6 +157,9 @@ export declare class VirlowApi {
154
157
  starred?: boolean;
155
158
  archived?: boolean;
156
159
  deleted?: boolean;
160
+ /** Only notes of this type. An API that does not know the type answers
161
+ * 400; `entities` (the entity registry) is listed only when asked for. */
162
+ type?: string;
157
163
  }): Promise<{
158
164
  notes: ApiNote[];
159
165
  pagination: {
package/dist/cjs/api.js CHANGED
@@ -142,6 +142,8 @@ class VirlowApi {
142
142
  }
143
143
  listNotes(params) {
144
144
  const query = new URLSearchParams();
145
+ if (params.type !== undefined)
146
+ query.set('type', params.type);
145
147
  if (params.page !== undefined)
146
148
  query.set('page', String(params.page));
147
149
  if (params.limit !== undefined)
@@ -0,0 +1,101 @@
1
+ import { type DescribedEntity, type EntityKind } from './memory-graph.js';
2
+ /**
3
+ * The entity registry: what each entity in the memory graph is, said once.
4
+ *
5
+ * Which entities exist is still derived from the memories (their `about`
6
+ * and `relations`), so the memories stay the single source of truth for
7
+ * what is known. The registry only adds what a memory cannot say about a
8
+ * name: its kind (person, organization, event...), other names it goes by,
9
+ * and a short note. It lives in one encrypted note of type `entities` in
10
+ * the Memories root folder, so it is end-to-end encrypted like everything
11
+ * else and syncs like any note.
12
+ *
13
+ * Its body (the note's decrypted content) is JSON:
14
+ *
15
+ * {
16
+ * "v": 1,
17
+ * "entities": {
18
+ * "<entityKey(name)>": {
19
+ * "name": "Dana Whitfield", // optional display spelling
20
+ * "kind": "person", // optional, one of ENTITY_KINDS
21
+ * "aliases": ["Dana", "DW"], // optional other names
22
+ * "note": "Head of design at Acme", // optional, at most 500 chars
23
+ * "updated": "2026-10-07T12:00:00.000Z" // required, ISO 8601
24
+ * }
25
+ * }
26
+ * }
27
+ *
28
+ * Merge rule, for two copies of the registry (a 409 on save, or two
29
+ * registry notes created at once by two devices): per key, the entry with
30
+ * the later `updated` wins whole; on a tie, the one whose JSON sorts later.
31
+ * Keys present on one side only are kept. Clearing a kind keeps the entry
32
+ * with a newer `updated` and no `kind`, so the clear wins a merge.
33
+ *
34
+ * This module is pure (no network, no crypto) and shared by the connector
35
+ * and the web app; the iOS app follows the same format.
36
+ */
37
+ /** The note type the registry is stored as. */
38
+ export declare const ENTITY_REGISTRY_NOTE_TYPE = "entities";
39
+ /** The note's (encrypted) title. Nothing reads it; it is what a person
40
+ * would see if they ever found the note by other means. */
41
+ export declare const ENTITY_REGISTRY_TITLE = "Entities";
42
+ /** The format version this code writes. */
43
+ export declare const ENTITY_REGISTRY_VERSION = 1;
44
+ export declare const ENTITY_NOTE_MAX = 500;
45
+ export declare const ENTITY_ALIASES_MAX = 20;
46
+ export declare const ENTITY_NAME_MAX = 120;
47
+ export interface EntityEntry {
48
+ name?: string;
49
+ kind?: EntityKind;
50
+ aliases?: string[];
51
+ note?: string;
52
+ /** When this entry last changed, ISO 8601. Decides merges. */
53
+ updated: string;
54
+ }
55
+ export interface EntityRegistry {
56
+ v: number;
57
+ entities: Record<string, EntityEntry>;
58
+ }
59
+ export declare function emptyRegistry(): EntityRegistry;
60
+ /** True when a client of this version may write the registry back. A newer
61
+ * version may carry fields this one would drop, so it is read-only here. */
62
+ export declare function canWriteRegistry(registry: EntityRegistry): boolean;
63
+ /**
64
+ * The registry in a note body. Tolerant: an empty or unreadable body is an
65
+ * empty registry, a bad entry is skipped, keys are re-normalised (so a key
66
+ * written by hand as "Dana" still lands on "dana"). A body from a newer
67
+ * version is read as far as this version understands it, with its `v`
68
+ * kept so canWriteRegistry() refuses to overwrite it.
69
+ */
70
+ export declare function parseRegistry(body: string | null | undefined): EntityRegistry;
71
+ /** The note body: keys sorted, so an unchanged registry serialises to the
72
+ * same bytes and a no-op save can be skipped. */
73
+ export declare function serializeRegistry(registry: EntityRegistry): string;
74
+ /** Two copies of the registry as one, per key by `updated` (see the module
75
+ * comment). Commutative, so every device converges on the same result. */
76
+ export declare function mergeRegistries(a: EntityRegistry, b: EntityRegistry): EntityRegistry;
77
+ /** The key a name is filed under in the registry: an existing entry's own
78
+ * key, or the key of the entry that lists the name as an alias. */
79
+ export declare function registryKeyFor(registry: EntityRegistry, name: string): string;
80
+ export interface EntityPatch {
81
+ /** The entity, by any name it goes by. */
82
+ name: string;
83
+ /** A kind to set; null clears it. Omitted leaves it alone. */
84
+ kind?: EntityKind | null;
85
+ /** Names to add as aliases. */
86
+ aliases?: string[];
87
+ /** Names to stop treating as aliases. */
88
+ removeAliases?: string[];
89
+ /** A note to set; null or "" clears it. */
90
+ note?: string | null;
91
+ /** A display spelling to set. */
92
+ displayName?: string;
93
+ }
94
+ /**
95
+ * The registry with one entity described. Returns the same object when the
96
+ * patch changes nothing, so a caller can skip the save. `now` is the
97
+ * entry's new `updated`.
98
+ */
99
+ export declare function describeInRegistry(registry: EntityRegistry, patch: EntityPatch, now?: string): EntityRegistry;
100
+ /** What the graph reads: kind, aliases, note and display name by key. */
101
+ export declare function describedEntities(registry: EntityRegistry | null | undefined): Map<string, DescribedEntity>;
@@ -0,0 +1,270 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ENTITY_NAME_MAX = exports.ENTITY_ALIASES_MAX = exports.ENTITY_NOTE_MAX = exports.ENTITY_REGISTRY_VERSION = exports.ENTITY_REGISTRY_TITLE = exports.ENTITY_REGISTRY_NOTE_TYPE = void 0;
4
+ exports.emptyRegistry = emptyRegistry;
5
+ exports.canWriteRegistry = canWriteRegistry;
6
+ exports.parseRegistry = parseRegistry;
7
+ exports.serializeRegistry = serializeRegistry;
8
+ exports.mergeRegistries = mergeRegistries;
9
+ exports.registryKeyFor = registryKeyFor;
10
+ exports.describeInRegistry = describeInRegistry;
11
+ exports.describedEntities = describedEntities;
12
+ const memory_graph_js_1 = require("./memory-graph.js");
13
+ /**
14
+ * The entity registry: what each entity in the memory graph is, said once.
15
+ *
16
+ * Which entities exist is still derived from the memories (their `about`
17
+ * and `relations`), so the memories stay the single source of truth for
18
+ * what is known. The registry only adds what a memory cannot say about a
19
+ * name: its kind (person, organization, event...), other names it goes by,
20
+ * and a short note. It lives in one encrypted note of type `entities` in
21
+ * the Memories root folder, so it is end-to-end encrypted like everything
22
+ * else and syncs like any note.
23
+ *
24
+ * Its body (the note's decrypted content) is JSON:
25
+ *
26
+ * {
27
+ * "v": 1,
28
+ * "entities": {
29
+ * "<entityKey(name)>": {
30
+ * "name": "Dana Whitfield", // optional display spelling
31
+ * "kind": "person", // optional, one of ENTITY_KINDS
32
+ * "aliases": ["Dana", "DW"], // optional other names
33
+ * "note": "Head of design at Acme", // optional, at most 500 chars
34
+ * "updated": "2026-10-07T12:00:00.000Z" // required, ISO 8601
35
+ * }
36
+ * }
37
+ * }
38
+ *
39
+ * Merge rule, for two copies of the registry (a 409 on save, or two
40
+ * registry notes created at once by two devices): per key, the entry with
41
+ * the later `updated` wins whole; on a tie, the one whose JSON sorts later.
42
+ * Keys present on one side only are kept. Clearing a kind keeps the entry
43
+ * with a newer `updated` and no `kind`, so the clear wins a merge.
44
+ *
45
+ * This module is pure (no network, no crypto) and shared by the connector
46
+ * and the web app; the iOS app follows the same format.
47
+ */
48
+ /** The note type the registry is stored as. */
49
+ exports.ENTITY_REGISTRY_NOTE_TYPE = 'entities';
50
+ /** The note's (encrypted) title. Nothing reads it; it is what a person
51
+ * would see if they ever found the note by other means. */
52
+ exports.ENTITY_REGISTRY_TITLE = 'Entities';
53
+ /** The format version this code writes. */
54
+ exports.ENTITY_REGISTRY_VERSION = 1;
55
+ exports.ENTITY_NOTE_MAX = 500;
56
+ exports.ENTITY_ALIASES_MAX = 20;
57
+ exports.ENTITY_NAME_MAX = 120;
58
+ function emptyRegistry() {
59
+ return { v: exports.ENTITY_REGISTRY_VERSION, entities: {} };
60
+ }
61
+ /** True when a client of this version may write the registry back. A newer
62
+ * version may carry fields this one would drop, so it is read-only here. */
63
+ function canWriteRegistry(registry) {
64
+ return registry.v <= exports.ENTITY_REGISTRY_VERSION;
65
+ }
66
+ function text(value, max) {
67
+ if (typeof value !== 'string')
68
+ return undefined;
69
+ const t = value.trim();
70
+ return t ? t.slice(0, max) : undefined;
71
+ }
72
+ function cleanAliases(raw, ownKey) {
73
+ if (!Array.isArray(raw))
74
+ return undefined;
75
+ const byKey = new Map();
76
+ for (const a of raw) {
77
+ const name = text(a, exports.ENTITY_NAME_MAX);
78
+ if (!name)
79
+ continue;
80
+ const k = (0, memory_graph_js_1.entityKey)(name);
81
+ if (!k || k === ownKey || byKey.has(k))
82
+ continue;
83
+ byKey.set(k, name);
84
+ }
85
+ const list = [...byKey.values()].slice(0, exports.ENTITY_ALIASES_MAX);
86
+ return list.length ? list : undefined;
87
+ }
88
+ /** One entry, cleaned: unknown kinds dropped, `organisation` read as
89
+ * `organization`, aliases deduplicated. Null without a usable `updated`. */
90
+ function cleanEntry(key, raw) {
91
+ if (raw === null || typeof raw !== 'object' || Array.isArray(raw))
92
+ return null;
93
+ const r = raw;
94
+ const updated = typeof r.updated === 'string' && !Number.isNaN(Date.parse(r.updated)) ? r.updated : null;
95
+ if (!updated)
96
+ return null;
97
+ const entry = { updated };
98
+ const name = text(r.name, exports.ENTITY_NAME_MAX);
99
+ if (name)
100
+ entry.name = name;
101
+ const kind = (0, memory_graph_js_1.normalizeKind)(r.kind);
102
+ if (kind)
103
+ entry.kind = kind;
104
+ const aliases = cleanAliases(r.aliases, key);
105
+ if (aliases)
106
+ entry.aliases = aliases;
107
+ const note = text(r.note, exports.ENTITY_NOTE_MAX);
108
+ if (note)
109
+ entry.note = note;
110
+ return entry;
111
+ }
112
+ /**
113
+ * The registry in a note body. Tolerant: an empty or unreadable body is an
114
+ * empty registry, a bad entry is skipped, keys are re-normalised (so a key
115
+ * written by hand as "Dana" still lands on "dana"). A body from a newer
116
+ * version is read as far as this version understands it, with its `v`
117
+ * kept so canWriteRegistry() refuses to overwrite it.
118
+ */
119
+ function parseRegistry(body) {
120
+ if (!body || !body.trim())
121
+ return emptyRegistry();
122
+ let raw;
123
+ try {
124
+ raw = JSON.parse(body);
125
+ }
126
+ catch {
127
+ return emptyRegistry();
128
+ }
129
+ if (raw === null || typeof raw !== 'object' || Array.isArray(raw))
130
+ return emptyRegistry();
131
+ const r = raw;
132
+ const v = typeof r.v === 'number' && Number.isFinite(r.v) && r.v >= 1 ? Math.floor(r.v) : exports.ENTITY_REGISTRY_VERSION;
133
+ const registry = { v, entities: {} };
134
+ const entities = r.entities;
135
+ if (entities && typeof entities === 'object' && !Array.isArray(entities)) {
136
+ for (const [rawKey, rawEntry] of Object.entries(entities)) {
137
+ const key = (0, memory_graph_js_1.entityKey)(rawKey);
138
+ if (!key)
139
+ continue;
140
+ const entry = cleanEntry(key, rawEntry);
141
+ if (!entry)
142
+ continue;
143
+ const existing = registry.entities[key];
144
+ registry.entities[key] = existing ? newer(existing, entry) : entry;
145
+ }
146
+ }
147
+ return registry;
148
+ }
149
+ /** The note body: keys sorted, so an unchanged registry serialises to the
150
+ * same bytes and a no-op save can be skipped. */
151
+ function serializeRegistry(registry) {
152
+ const entities = {};
153
+ for (const key of Object.keys(registry.entities).sort()) {
154
+ const e = registry.entities[key];
155
+ // Field order fixed for stable bytes.
156
+ const ordered = {};
157
+ if (e.name)
158
+ ordered.name = e.name;
159
+ if (e.kind)
160
+ ordered.kind = e.kind;
161
+ if (e.aliases?.length)
162
+ ordered.aliases = e.aliases;
163
+ if (e.note)
164
+ ordered.note = e.note;
165
+ ordered.updated = e.updated;
166
+ entities[key] = ordered;
167
+ }
168
+ return JSON.stringify({ v: Math.max(registry.v, exports.ENTITY_REGISTRY_VERSION), entities });
169
+ }
170
+ function newer(a, b) {
171
+ const ta = Date.parse(a.updated);
172
+ const tb = Date.parse(b.updated);
173
+ if (ta !== tb)
174
+ return tb > ta ? b : a;
175
+ return JSON.stringify(b) > JSON.stringify(a) ? b : a;
176
+ }
177
+ /** Two copies of the registry as one, per key by `updated` (see the module
178
+ * comment). Commutative, so every device converges on the same result. */
179
+ function mergeRegistries(a, b) {
180
+ const merged = { v: Math.max(a.v, b.v), entities: { ...a.entities } };
181
+ for (const [key, entry] of Object.entries(b.entities)) {
182
+ const existing = merged.entities[key];
183
+ merged.entities[key] = existing ? newer(existing, entry) : entry;
184
+ }
185
+ return merged;
186
+ }
187
+ /** The key a name is filed under in the registry: an existing entry's own
188
+ * key, or the key of the entry that lists the name as an alias. */
189
+ function registryKeyFor(registry, name) {
190
+ const key = (0, memory_graph_js_1.entityKey)(name);
191
+ if (registry.entities[key])
192
+ return key;
193
+ for (const k of Object.keys(registry.entities).sort()) {
194
+ if (registry.entities[k].aliases?.some((a) => (0, memory_graph_js_1.entityKey)(a) === key))
195
+ return k;
196
+ }
197
+ return key;
198
+ }
199
+ /**
200
+ * The registry with one entity described. Returns the same object when the
201
+ * patch changes nothing, so a caller can skip the save. `now` is the
202
+ * entry's new `updated`.
203
+ */
204
+ function describeInRegistry(registry, patch, now = new Date().toISOString()) {
205
+ const key = registryKeyFor(registry, patch.name);
206
+ if (!key)
207
+ return registry;
208
+ const before = registry.entities[key];
209
+ const next = { ...(before ?? { updated: now }), updated: now };
210
+ if (before?.aliases)
211
+ next.aliases = [...before.aliases];
212
+ if (patch.kind === null)
213
+ delete next.kind;
214
+ else if (patch.kind !== undefined) {
215
+ const kind = (0, memory_graph_js_1.normalizeKind)(patch.kind);
216
+ if (kind)
217
+ next.kind = kind;
218
+ }
219
+ if (patch.note === null || patch.note === '')
220
+ delete next.note;
221
+ else if (patch.note !== undefined) {
222
+ const note = text(patch.note, exports.ENTITY_NOTE_MAX);
223
+ if (note)
224
+ next.note = note;
225
+ }
226
+ if (patch.displayName !== undefined) {
227
+ const name = text(patch.displayName, exports.ENTITY_NAME_MAX);
228
+ if (name && (0, memory_graph_js_1.entityKey)(name) === key)
229
+ next.name = name;
230
+ }
231
+ if (patch.aliases || patch.removeAliases) {
232
+ const removed = new Set((patch.removeAliases ?? []).map(memory_graph_js_1.entityKey));
233
+ const list = [...(next.aliases ?? []), ...(patch.aliases ?? [])].filter((a) => !removed.has((0, memory_graph_js_1.entityKey)(a)));
234
+ const aliases = cleanAliases(list, key);
235
+ if (aliases)
236
+ next.aliases = aliases;
237
+ else
238
+ delete next.aliases;
239
+ }
240
+ const same = (a, b) => a !== undefined &&
241
+ a.kind === b.kind &&
242
+ a.note === b.note &&
243
+ a.name === b.name &&
244
+ JSON.stringify(a.aliases ?? []) === JSON.stringify(b.aliases ?? []);
245
+ if (same(before, next))
246
+ return registry;
247
+ // A patch that sets nothing on an entity with no entry is not an entry.
248
+ if (!before && !next.kind && !next.note && !next.aliases && !next.name)
249
+ return registry;
250
+ return { v: registry.v, entities: { ...registry.entities, [key]: next } };
251
+ }
252
+ /** What the graph reads: kind, aliases, note and display name by key. */
253
+ function describedEntities(registry) {
254
+ const map = new Map();
255
+ if (!registry)
256
+ return map;
257
+ for (const [key, e] of Object.entries(registry.entities)) {
258
+ const d = {};
259
+ if (e.name)
260
+ d.name = e.name;
261
+ if (e.kind)
262
+ d.kind = e.kind;
263
+ if (e.aliases)
264
+ d.aliases = e.aliases;
265
+ if (e.note)
266
+ d.note = e.note;
267
+ map.set(key, d);
268
+ }
269
+ return map;
270
+ }
@@ -9,6 +9,8 @@ export { MemoryStore, SYNC_PAGE_LIMIT } from './memories.js';
9
9
  export type { CachedMemory, SimilarMemory, SyncResult } from './memories.js';
10
10
  export { MEMORY_NOTE_TYPE, mergeMeta, parseMemoryNote, serializeMemoryBody, toCodeEnvelope, } from './memory-note.js';
11
11
  export type { MemoryMeta, ParsedMemoryNote } from './memory-note.js';
12
+ export { ENTITY_REGISTRY_NOTE_TYPE, ENTITY_REGISTRY_TITLE, ENTITY_REGISTRY_VERSION, canWriteRegistry, describeInRegistry, describedEntities, emptyRegistry, mergeRegistries, parseRegistry, registryKeyFor, serializeRegistry, } from './entity-registry.js';
13
+ export type { EntityEntry, EntityPatch, EntityRegistry } from './entity-registry.js';
12
14
  export { MEMORIES_ROOT_NAME, ensureNamespace, resolveMemoryTree, } from './memory-tree.js';
13
15
  export type { MemoryTree } from './memory-tree.js';
14
16
  export { computeExposure, filteredNotice } from './exposure.js';
package/dist/cjs/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.htmlToText = exports.extractLinkIds = exports.buildTitleMatcher = exports.withTags = exports.updateProp = exports.tagsFromAttrs = exports.sortedProps = exports.reorderProps = exports.removeProp = exports.newPropId = exports.encodeSchema = exports.encodeAttrs = exports.emptySchema = exports.emptyAttrs = exports.defineProp = exports.decodeSchema = exports.decodeAttrs = exports.TAGS_PROP = exports.ATTRS_MAX_BYTES = exports.memoriesAllowed = exports.MEMORIES_DISABLED_MESSAGE = exports.EmbeddingCache = exports.filteredNotice = exports.computeExposure = exports.resolveMemoryTree = exports.ensureNamespace = exports.MEMORIES_ROOT_NAME = exports.toCodeEnvelope = exports.serializeMemoryBody = exports.parseMemoryNote = exports.mergeMeta = exports.MEMORY_NOTE_TYPE = exports.SYNC_PAGE_LIMIT = exports.MemoryStore = exports.AttachmentsService = exports.SEARCH_SCAN_CAP = exports.NotesService = exports.Vault = exports.LockedError = exports.VirlowApi = exports.ApiError = void 0;
3
+ exports.buildTitleMatcher = exports.withTags = exports.updateProp = exports.tagsFromAttrs = exports.sortedProps = exports.reorderProps = exports.removeProp = exports.newPropId = exports.encodeSchema = exports.encodeAttrs = exports.emptySchema = exports.emptyAttrs = exports.defineProp = exports.decodeSchema = exports.decodeAttrs = exports.TAGS_PROP = exports.ATTRS_MAX_BYTES = exports.memoriesAllowed = exports.MEMORIES_DISABLED_MESSAGE = exports.EmbeddingCache = exports.filteredNotice = exports.computeExposure = exports.resolveMemoryTree = exports.ensureNamespace = exports.MEMORIES_ROOT_NAME = exports.serializeRegistry = exports.registryKeyFor = exports.parseRegistry = exports.mergeRegistries = exports.emptyRegistry = exports.describedEntities = exports.describeInRegistry = exports.canWriteRegistry = exports.ENTITY_REGISTRY_VERSION = exports.ENTITY_REGISTRY_TITLE = exports.ENTITY_REGISTRY_NOTE_TYPE = exports.toCodeEnvelope = exports.serializeMemoryBody = exports.parseMemoryNote = exports.mergeMeta = exports.MEMORY_NOTE_TYPE = exports.SYNC_PAGE_LIMIT = exports.MemoryStore = exports.AttachmentsService = exports.SEARCH_SCAN_CAP = exports.NotesService = exports.Vault = exports.LockedError = exports.VirlowApi = exports.ApiError = void 0;
4
+ exports.htmlToText = exports.extractLinkIds = void 0;
4
5
  var api_js_1 = require("./api.js");
5
6
  Object.defineProperty(exports, "ApiError", { enumerable: true, get: function () { return api_js_1.ApiError; } });
6
7
  Object.defineProperty(exports, "VirlowApi", { enumerable: true, get: function () { return api_js_1.VirlowApi; } });
@@ -21,6 +22,18 @@ Object.defineProperty(exports, "mergeMeta", { enumerable: true, get: function ()
21
22
  Object.defineProperty(exports, "parseMemoryNote", { enumerable: true, get: function () { return memory_note_js_1.parseMemoryNote; } });
22
23
  Object.defineProperty(exports, "serializeMemoryBody", { enumerable: true, get: function () { return memory_note_js_1.serializeMemoryBody; } });
23
24
  Object.defineProperty(exports, "toCodeEnvelope", { enumerable: true, get: function () { return memory_note_js_1.toCodeEnvelope; } });
25
+ var entity_registry_js_1 = require("./entity-registry.js");
26
+ Object.defineProperty(exports, "ENTITY_REGISTRY_NOTE_TYPE", { enumerable: true, get: function () { return entity_registry_js_1.ENTITY_REGISTRY_NOTE_TYPE; } });
27
+ Object.defineProperty(exports, "ENTITY_REGISTRY_TITLE", { enumerable: true, get: function () { return entity_registry_js_1.ENTITY_REGISTRY_TITLE; } });
28
+ Object.defineProperty(exports, "ENTITY_REGISTRY_VERSION", { enumerable: true, get: function () { return entity_registry_js_1.ENTITY_REGISTRY_VERSION; } });
29
+ Object.defineProperty(exports, "canWriteRegistry", { enumerable: true, get: function () { return entity_registry_js_1.canWriteRegistry; } });
30
+ Object.defineProperty(exports, "describeInRegistry", { enumerable: true, get: function () { return entity_registry_js_1.describeInRegistry; } });
31
+ Object.defineProperty(exports, "describedEntities", { enumerable: true, get: function () { return entity_registry_js_1.describedEntities; } });
32
+ Object.defineProperty(exports, "emptyRegistry", { enumerable: true, get: function () { return entity_registry_js_1.emptyRegistry; } });
33
+ Object.defineProperty(exports, "mergeRegistries", { enumerable: true, get: function () { return entity_registry_js_1.mergeRegistries; } });
34
+ Object.defineProperty(exports, "parseRegistry", { enumerable: true, get: function () { return entity_registry_js_1.parseRegistry; } });
35
+ Object.defineProperty(exports, "registryKeyFor", { enumerable: true, get: function () { return entity_registry_js_1.registryKeyFor; } });
36
+ Object.defineProperty(exports, "serializeRegistry", { enumerable: true, get: function () { return entity_registry_js_1.serializeRegistry; } });
24
37
  var memory_tree_js_1 = require("./memory-tree.js");
25
38
  Object.defineProperty(exports, "MEMORIES_ROOT_NAME", { enumerable: true, get: function () { return memory_tree_js_1.MEMORIES_ROOT_NAME; } });
26
39
  Object.defineProperty(exports, "ensureNamespace", { enumerable: true, get: function () { return memory_tree_js_1.ensureNamespace; } });
@@ -2,6 +2,7 @@ import { type Embedder } from '@batalabs/virlow-memory';
2
2
  import { type VirlowApi } from './api.js';
3
3
  import type { EmbeddingCacheLike } from './embedding-cache.js';
4
4
  import { type MemoryMeta } from './memory-note.js';
5
+ import { type EntityPatch, type EntityRegistry } from './entity-registry.js';
5
6
  import { type MemoryGraph } from './memory-graph.js';
6
7
  import type { MemoryRelation } from './memory-note.js';
7
8
  import type { Vault } from './vault.js';
@@ -58,6 +59,12 @@ export declare class MemoryStore {
58
59
  private embeddings;
59
60
  private embeddingsLoaded;
60
61
  private syncInFlight;
62
+ /** The entity registry as last read, and the note(s) holding it, oldest
63
+ * first. `registrySupported` is false when the API refused the note type
64
+ * (an API older than the registry): kinds are then only guessed. */
65
+ private registry;
66
+ private registryRows;
67
+ private registrySupported;
61
68
  private mutationChain;
62
69
  /** Bumped every time clear() runs (i.e. every lock). Operations capture it
63
70
  * at the top and re-check before every cache write, so anything still
@@ -71,6 +78,52 @@ export declare class MemoryStore {
71
78
  * calls never double up on network, decrypt, or embedding work. */
72
79
  sync(): Promise<SyncResult>;
73
80
  private doSync;
81
+ /** Re-reads the entity registry. A failure other than "this API does not
82
+ * know the type" keeps what was read before: kinds are a nicety, and a
83
+ * registry hiccup must never fail a recall. */
84
+ private refreshRegistry;
85
+ private fetchRegistry;
86
+ /** Whether this API stores entity kinds (false: an API older than the
87
+ * registry), and the registry as last read. Requires a prior sync. */
88
+ registryState(): {
89
+ supported: boolean;
90
+ registry: EntityRegistry;
91
+ };
92
+ /**
93
+ * Describe entities in the registry: kind, aliases, note. Read, change,
94
+ * save with expectedUpdatedAt; on a 409 (another device saved first) read
95
+ * again and re-apply, so per-key changes from both survive. With
96
+ * `onlyIfUntyped`, a kind is set only where none is stored: how add_memory
97
+ * records the kinds an AI names without overruling the person's choice.
98
+ *
99
+ * `unsupported` when the API does not accept the registry note type yet;
100
+ * nothing is saved then and kinds stay guesses.
101
+ */
102
+ describeEntities(patches: EntityPatch[], opts?: {
103
+ onlyIfUntyped?: boolean;
104
+ }): Promise<{
105
+ changed: string[];
106
+ unsupported: boolean;
107
+ }>;
108
+ /**
109
+ * Names nothing types yet, most known first, each with a few of the
110
+ * memories that name it and a suggested kind when one signal points one
111
+ * way: what an AI needs to propose kinds, and then call describe_entity.
112
+ */
113
+ untyped(namespace?: string, limit?: number): Promise<{
114
+ total: number;
115
+ entities: {
116
+ name: string;
117
+ facts: number;
118
+ memories: {
119
+ id: string;
120
+ label: string;
121
+ text: string;
122
+ }[];
123
+ suggestion: import("./memory-graph.js").KindSuggestion | null;
124
+ }[];
125
+ supported: boolean;
126
+ }>;
74
127
  add(label: string, text: string, namespace?: string, meta?: MemoryMeta): Promise<{
75
128
  action: 'stored' | 'updated';
76
129
  id: string;
@@ -105,6 +158,11 @@ export declare class MemoryStore {
105
158
  * the facts behind them. Null when no memory names it. */
106
159
  recallEntity(name: string, namespace?: string): Promise<{
107
160
  name: string;
161
+ kind: "project" | "person" | "organization" | "tool" | "place" | "event" | "topic" | "product" | "media" | "pet" | "group" | "goal" | "other";
162
+ /** Whether the kind is stored (set by a person or an AI) or guessed. */
163
+ kindStored: boolean;
164
+ aliases: string[];
165
+ note: string | undefined;
108
166
  current: CachedMemory[];
109
167
  past: CachedMemory[];
110
168
  relations: {
@@ -132,8 +190,10 @@ export declare class MemoryStore {
132
190
  */
133
191
  context(namespace?: string, limit?: number): Promise<{
134
192
  entities: {
193
+ note?: string | undefined;
135
194
  name: string;
136
195
  facts: number;
196
+ kind: "project" | "person" | "organization" | "tool" | "place" | "event" | "topic" | "product" | "media" | "pet" | "group" | "goal" | "other";
137
197
  }[];
138
198
  facts: CachedMemory[];
139
199
  }>;
@@ -147,6 +207,7 @@ export declare class MemoryStore {
147
207
  predicate: string;
148
208
  objects: string[];
149
209
  }[];
210
+ untyped: string[];
150
211
  }>;
151
212
  /** The namespace of a memory this session has seen, without a sync;
152
213
  * undefined for a global memory or one not cached yet. */