@seanhogg/builderforce-memory 2026.6.31 → 2026.6.35

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.
Files changed (78) hide show
  1. package/README.md +3 -1
  2. package/dist/cognition/EvermindCognition.d.ts +46 -7
  3. package/dist/cognition/EvermindCognition.d.ts.map +1 -1
  4. package/dist/cognition/EvermindCognition.js +95 -25
  5. package/dist/cognition/EvermindCognition.js.map +1 -1
  6. package/dist/cognition/canonicalize.d.ts +37 -0
  7. package/dist/cognition/canonicalize.d.ts.map +1 -0
  8. package/dist/cognition/canonicalize.js +58 -0
  9. package/dist/cognition/canonicalize.js.map +1 -0
  10. package/dist/cognition/index.d.ts +4 -0
  11. package/dist/cognition/index.d.ts.map +1 -1
  12. package/dist/cognition/index.js +2 -0
  13. package/dist/cognition/index.js.map +1 -1
  14. package/dist/cognition/sanitize.d.ts +58 -0
  15. package/dist/cognition/sanitize.d.ts.map +1 -0
  16. package/dist/cognition/sanitize.js +103 -0
  17. package/dist/cognition/sanitize.js.map +1 -0
  18. package/dist/distillation/DistillationEngine.d.ts +32 -1
  19. package/dist/distillation/DistillationEngine.d.ts.map +1 -1
  20. package/dist/distillation/DistillationEngine.js +53 -5
  21. package/dist/distillation/DistillationEngine.js.map +1 -1
  22. package/dist/distillation/index.d.ts +1 -1
  23. package/dist/distillation/index.d.ts.map +1 -1
  24. package/dist/index.d.ts +5 -3
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +3 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/memory/MemoryStore.d.ts +53 -0
  29. package/dist/memory/MemoryStore.d.ts.map +1 -1
  30. package/dist/memory/MemoryStore.js +175 -22
  31. package/dist/memory/MemoryStore.js.map +1 -1
  32. package/dist/publish/huggingface.d.ts +77 -0
  33. package/dist/publish/huggingface.d.ts.map +1 -0
  34. package/dist/publish/huggingface.js +88 -0
  35. package/dist/publish/huggingface.js.map +1 -0
  36. package/dist/publish/index.d.ts +7 -0
  37. package/dist/publish/index.d.ts.map +1 -0
  38. package/dist/publish/index.js +6 -0
  39. package/dist/publish/index.js.map +1 -0
  40. package/dist/retrieval/HybridRetriever.d.ts +5 -0
  41. package/dist/retrieval/HybridRetriever.d.ts.map +1 -1
  42. package/dist/retrieval/HybridRetriever.js +9 -7
  43. package/dist/retrieval/HybridRetriever.js.map +1 -1
  44. package/dist/retrieval/hnsw.d.ts +71 -0
  45. package/dist/retrieval/hnsw.d.ts.map +1 -0
  46. package/dist/retrieval/hnsw.js +201 -0
  47. package/dist/retrieval/hnsw.js.map +1 -0
  48. package/dist/retrieval/index.d.ts +2 -0
  49. package/dist/retrieval/index.d.ts.map +1 -1
  50. package/dist/retrieval/index.js +1 -0
  51. package/dist/retrieval/index.js.map +1 -1
  52. package/dist/session/session.d.ts +9 -0
  53. package/dist/session/session.d.ts.map +1 -1
  54. package/dist/session/session.js +12 -2
  55. package/dist/session/session.js.map +1 -1
  56. package/dist/workflow/steps.d.ts.map +1 -1
  57. package/dist/workflow/steps.js +73 -1
  58. package/dist/workflow/steps.js.map +1 -1
  59. package/dist/workflow/templates.d.ts.map +1 -1
  60. package/dist/workflow/templates.js +3 -1
  61. package/dist/workflow/templates.js.map +1 -1
  62. package/package.json +7 -7
  63. package/src/cognition/EvermindCognition.ts +123 -27
  64. package/src/cognition/canonicalize.ts +61 -0
  65. package/src/cognition/index.ts +12 -0
  66. package/src/cognition/sanitize.ts +126 -0
  67. package/src/distillation/DistillationEngine.ts +72 -5
  68. package/src/distillation/index.ts +1 -1
  69. package/src/index.ts +18 -1
  70. package/src/memory/MemoryStore.ts +197 -18
  71. package/src/publish/huggingface.ts +139 -0
  72. package/src/publish/index.ts +7 -0
  73. package/src/retrieval/HybridRetriever.ts +14 -7
  74. package/src/retrieval/hnsw.ts +242 -0
  75. package/src/retrieval/index.ts +3 -0
  76. package/src/session/session.ts +23 -1
  77. package/src/workflow/steps.ts +93 -0
  78. package/src/workflow/templates.ts +3 -1
@@ -8,8 +8,8 @@
8
8
  * Weight save/load is delegated to the SSMRuntime passed to saveWeights/loadWeights.
9
9
  */
10
10
  import { SSMError } from '../errors/SSMError.js';
11
- import { tokenize, jaccardSimilarity, cosineSimilarity } from '../similarity/index.js';
12
- import { hybridRetrieve } from '../retrieval/index.js';
11
+ import { tokenize, jaccardSimilarity } from '../similarity/index.js';
12
+ import { hybridRetrieve, denseSearch, HnswIndex } from '../retrieval/index.js';
13
13
  const FACTS_STORE = 'facts';
14
14
  const WEIGHTS_STORE = 'weights';
15
15
  const DB_VERSION = 1;
@@ -19,21 +19,41 @@ const DB_VERSION = 1;
19
19
  * `timestamp` ties (same-millisecond writes) in newest-first ordering.
20
20
  */
21
21
  let _writeSeq = 0;
22
- /** Max number of cached content→embedding vectors retained in memory. */
22
+ /** Max content→embedding vectors retained (LRU-evicted past this). (EVM-8) */
23
23
  const EMBED_CACHE_MAX = 2000;
24
24
  export class MemoryStore {
25
25
  _dbName;
26
26
  _weightsKey;
27
27
  _idb;
28
28
  _defaultTtl;
29
+ _annThreshold;
30
+ _maxEntries;
31
+ _embedCacheMax;
29
32
  _db = null;
33
+ _sweepTimer = null;
30
34
  /** Content → L2-normalised embedding cache, used by recallSimilar. */
31
35
  _embedCache = new Map();
36
+ /** Runtime whose embeddings populate `_embedCache`; a change invalidates it. */
37
+ _embedRuntime = null;
38
+ // ── Persistent dense index (EVM-1b) ────────────────────────────────────────
39
+ // Fact embeddings keyed by `${key}@${seq}` so an EDIT (seq bump) is a new key
40
+ // and an unchanged fact is never re-embedded. The HNSW index is derived from
41
+ // these vectors and reused across recalls until the fact set changes — so
42
+ // steady-state recall is O(1) query-embed + O(log N) search, not O(N) embed.
43
+ _denseVectors = new Map();
44
+ _denseIndex = null;
45
+ /** Signature of the fact set the current index was built from. */
46
+ _denseSig = '';
47
+ /** Identity of the runtime whose embeddings populated the vectors. */
48
+ _denseRuntime = null;
32
49
  constructor(opts = {}) {
33
50
  this._dbName = opts.dbName ?? 'ssmjs';
34
51
  this._weightsKey = opts.weightsKey ?? 'ssmjs-weights';
35
52
  this._idb = opts.idbFactory;
36
53
  this._defaultTtl = opts.defaultTtlMs;
54
+ this._annThreshold = opts.annThreshold ?? 256;
55
+ this._maxEntries = opts.maxEntries;
56
+ this._embedCacheMax = opts.embedCacheMax ?? EMBED_CACHE_MAX;
37
57
  }
38
58
  // ── Internal DB open ──────────────────────────────────────────────────────
39
59
  _open() {
@@ -84,7 +104,61 @@ export class MemoryStore {
84
104
  importance: opts?.importance,
85
105
  };
86
106
  const tx = db.transaction(FACTS_STORE, 'readwrite');
87
- return requestToPromise(tx.objectStore(FACTS_STORE).put(entry), `Failed to store fact "${key}"`, () => undefined);
107
+ await requestToPromise(tx.objectStore(FACTS_STORE).put(entry), `Failed to store fact "${key}"`, () => undefined);
108
+ // EVM-7: keep the store bounded — evict lowest-value entries past the cap.
109
+ if (this._maxEntries != null)
110
+ await this._enforceCap();
111
+ }
112
+ /**
113
+ * Evicts the lowest-value entries until at most `maxEntries` remain. Eviction
114
+ * priority (removed first): expired → lowest importance → oldest. No-op when
115
+ * no cap is set or the store is under it. (EVM-7)
116
+ */
117
+ async _enforceCap() {
118
+ if (this._maxEntries == null)
119
+ return;
120
+ const db = await this._open();
121
+ const tx = db.transaction(FACTS_STORE, 'readonly');
122
+ const all = await requestToPromise(tx.objectStore(FACTS_STORE).getAll(), 'Failed to scan facts for cap', (r) => r);
123
+ if (all.length <= this._maxEntries)
124
+ return;
125
+ // Ascending sort = worst first: expired (0) before live (1), then lower
126
+ // importance, then older timestamp, then lower write sequence.
127
+ const rank = (e) => [this._isExpired(e) ? 0 : 1, e.importance ?? 0.5, e.timestamp, e.seq ?? 0];
128
+ const sorted = [...all].sort((a, b) => {
129
+ const ra = rank(a), rb = rank(b);
130
+ for (let i = 0; i < ra.length; i++) {
131
+ if (ra[i] !== rb[i])
132
+ return ra[i] - rb[i];
133
+ }
134
+ return 0;
135
+ });
136
+ const victims = sorted.slice(0, all.length - this._maxEntries);
137
+ await Promise.all(victims.map((e) => this.forget(e.key)));
138
+ }
139
+ /**
140
+ * Starts a background timer that periodically hard-deletes expired entries —
141
+ * TTL is otherwise only evaluated lazily on read, so an idle store would keep
142
+ * dead entries forever. Idempotent; pair with {@link stopTtlSweeper}. (EVM-7)
143
+ */
144
+ startTtlSweeper(intervalMs) {
145
+ if (this._sweepTimer)
146
+ return;
147
+ const timer = setInterval(() => { void this.purgeExpired(); }, intervalMs);
148
+ // Don't keep a Node process alive just for the sweeper.
149
+ const maybeUnref = timer;
150
+ /* istanbul ignore else -- unref exists in Node; absent in the browser */
151
+ if (typeof maybeUnref.unref === 'function') {
152
+ maybeUnref.unref();
153
+ }
154
+ this._sweepTimer = timer;
155
+ }
156
+ /** Stops the background TTL sweeper started by {@link startTtlSweeper}. */
157
+ stopTtlSweeper() {
158
+ if (this._sweepTimer) {
159
+ clearInterval(this._sweepTimer);
160
+ this._sweepTimer = null;
161
+ }
88
162
  }
89
163
  /**
90
164
  * Retrieves a fact by key.
@@ -141,19 +215,16 @@ export class MemoryStore {
141
215
  if (runtime != null && typeof runtime.embed === 'function') {
142
216
  const queryVec = await this._embedWithCache(runtime, query);
143
217
  if (queryVec) {
144
- const scored = [];
145
- let embeddedAll = true;
146
- for (const entry of all) {
147
- const entryVec = await this._embedWithCache(runtime, entry.content);
148
- if (!entryVec) {
149
- embeddedAll = false;
150
- break;
151
- }
152
- scored.push({ entry, score: cosineSimilarity(queryVec, entryVec) });
153
- }
154
- if (embeddedAll) {
155
- scored.sort((a, b) => b.score - a.score);
156
- return scored.slice(0, topK).map(s => s.entry);
218
+ // EVM-1b: sync the persistent vector store + index (embeds only the
219
+ // delta), then query it — no per-call re-embed of every fact.
220
+ const synced = await this._syncDense(runtime, all);
221
+ if (synced) {
222
+ const hits = synced.index
223
+ // EVM-1: above the threshold, query the persistent HNSW (O(log N)).
224
+ ? synced.index.search(queryVec, topK)
225
+ // Below it, an exact scan over the (already-embedded) vectors.
226
+ : denseSearch(queryVec, synced.items, topK, this._annThreshold);
227
+ return hits.map(h => synced.byKey.get(h.id)).filter((e) => !!e);
157
228
  }
158
229
  }
159
230
  // Any failure falls through to the Jaccard path below.
@@ -191,7 +262,7 @@ export class MemoryStore {
191
262
  const vector = canEmbed ? (await this._embedWithCache(runtime, entry.content)) ?? undefined : undefined;
192
263
  candidates.push({ id: entry.key, text: entry.content, vector });
193
264
  }
194
- const hits = hybridRetrieve({ text: query, vector: queryVec }, candidates, { topK, ...opts });
265
+ const hits = hybridRetrieve({ text: query, vector: queryVec }, candidates, { topK, annThreshold: this._annThreshold, ...opts });
195
266
  const byKey = new Map(all.map(e => [e.key, e]));
196
267
  return hits.map(h => byKey.get(h.id)).filter((e) => !!e);
197
268
  }
@@ -201,15 +272,30 @@ export class MemoryStore {
201
272
  * unavailable so callers can fall back to lexical similarity.
202
273
  */
203
274
  async _embedWithCache(runtime, text) {
275
+ // Embeddings are model-specific: if the runtime instance changed, the cached
276
+ // vectors are from a different model and must be dropped. (EVM-1b)
277
+ if (runtime !== this._embedRuntime) {
278
+ this._embedCache.clear();
279
+ this._embedRuntime = runtime;
280
+ }
204
281
  const cached = this._embedCache.get(text);
205
- if (cached)
282
+ if (cached) {
283
+ // LRU touch: re-insert so this entry becomes most-recently-used. (EVM-8)
284
+ this._embedCache.delete(text);
285
+ this._embedCache.set(text, cached);
206
286
  return cached;
287
+ }
207
288
  try {
208
289
  const vec = await runtime.embed(text);
209
290
  if (vec instanceof Float32Array && vec.length > 0) {
210
- // Bound cache growth — simplest eviction is a full clear.
211
- if (this._embedCache.size >= EMBED_CACHE_MAX)
212
- this._embedCache.clear();
291
+ // EVM-8: bound cache growth by evicting the LEAST-recently-used entry
292
+ // (Map keeps insertion order; the first key is the LRU), instead of
293
+ // dumping the whole cache on every overflow.
294
+ if (this._embedCache.size >= this._embedCacheMax) {
295
+ const lru = this._embedCache.keys().next().value;
296
+ if (lru !== undefined)
297
+ this._embedCache.delete(lru);
298
+ }
213
299
  this._embedCache.set(text, vec);
214
300
  return vec;
215
301
  }
@@ -219,6 +305,68 @@ export class MemoryStore {
219
305
  }
220
306
  return null;
221
307
  }
308
+ /**
309
+ * Synchronise the persistent dense vector store + HNSW index to `all` (EVM-1b).
310
+ * Embeds ONLY new/changed facts (keyed by `key@seq`), prunes removed ones, and
311
+ * rebuilds the index only when the fact set actually changed — so a read-heavy
312
+ * workload reuses both the embeddings and the index across recalls. Returns
313
+ * `null` (caller falls back to lexical) if any embedding is unavailable, or
314
+ * resets everything when the runtime identity changes (embeddings are
315
+ * model-specific).
316
+ */
317
+ async _syncDense(runtime, all) {
318
+ if (runtime !== this._denseRuntime) {
319
+ this._denseVectors.clear();
320
+ this._denseIndex = null;
321
+ this._denseSig = '';
322
+ this._denseRuntime = runtime;
323
+ }
324
+ const vkeyOf = (e) => `${e.key}@${e.seq ?? 0}`;
325
+ const currentVkeys = new Set();
326
+ let sig = `${all.length}`;
327
+ for (const e of all) {
328
+ const k = vkeyOf(e);
329
+ currentVkeys.add(k);
330
+ sig += '|' + k;
331
+ }
332
+ const byKey = new Map();
333
+ const items = [];
334
+ for (const entry of all) {
335
+ const vk = vkeyOf(entry);
336
+ let vec = this._denseVectors.get(vk);
337
+ if (!vec) {
338
+ const v = await this._embedWithCache(runtime, entry.content);
339
+ if (!v)
340
+ return null; // embedding failed → lexical fallback
341
+ vec = v;
342
+ this._denseVectors.set(vk, vec);
343
+ }
344
+ items.push({ id: entry.key, vector: vec });
345
+ byKey.set(entry.key, entry);
346
+ }
347
+ // Drop vectors for facts that are gone or were edited (stale vkeys).
348
+ if (this._denseVectors.size > currentVkeys.size) {
349
+ for (const k of this._denseVectors.keys()) {
350
+ if (!currentVkeys.has(k))
351
+ this._denseVectors.delete(k);
352
+ }
353
+ }
354
+ // Maintain the ANN index only above the threshold; (re)build it only when
355
+ // the fact set changed (no embedding involved — purely in-memory).
356
+ if (all.length >= this._annThreshold) {
357
+ if (sig !== this._denseSig || this._denseIndex === null) {
358
+ const index = new HnswIndex();
359
+ for (const it of items)
360
+ index.add(it.id, it.vector);
361
+ this._denseIndex = index;
362
+ }
363
+ }
364
+ else {
365
+ this._denseIndex = null;
366
+ }
367
+ this._denseSig = sig;
368
+ return { byKey, items, index: this._denseIndex };
369
+ }
222
370
  /**
223
371
  * Hard-deletes all entries whose TTL has expired.
224
372
  * @returns The number of entries deleted.
@@ -243,6 +391,11 @@ export class MemoryStore {
243
391
  /** Deletes all facts. Does not affect saved weights. */
244
392
  async clear() {
245
393
  const db = await this._open();
394
+ // Drop the persistent dense index/vectors too (EVM-1b) — they describe a
395
+ // fact set that no longer exists.
396
+ this._denseVectors.clear();
397
+ this._denseIndex = null;
398
+ this._denseSig = '';
246
399
  const tx = db.transaction(FACTS_STORE, 'readwrite');
247
400
  return requestToPromise(tx.objectStore(FACTS_STORE).clear(), 'Failed to clear facts', () => undefined);
248
401
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryStore.js","sourceRoot":"","sources":["../../src/memory/MemoryStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MemoryStore.js","sourceRoot":"","sources":["../../src/memory/MemoryStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * publish/huggingface.ts — push an exported Evermind model to the Hugging Face Hub.
3
+ *
4
+ * The runtime stays zero-dependency: the actual Hub I/O is delegated to an
5
+ * injectable {@link HubClient}. In production it is dynamically imported from the
6
+ * optional `@huggingface/hub` package (which handles LFS for the binary weight
7
+ * files correctly); tests inject a fake. There is also a credential-free path —
8
+ * {@link writeExportToDir} — that writes the repo to a local folder you push with
9
+ * `git` / `huggingface-cli upload`.
10
+ *
11
+ * The export itself (turning a trained model into the file set) lives in the
12
+ * engine's `export/` module; this module is only the *transport*.
13
+ */
14
+ import type { ExportResult } from "@seanhogg/builderforce-memory-engine";
15
+ /** Where/how to publish. `repoId` is "owner/name" (e.g. "builderforce/Evermind"). */
16
+ export interface HuggingFaceTarget {
17
+ repoId: string;
18
+ /** A write-scoped HF access token (hf_…). */
19
+ token: string;
20
+ /** Create the repo private. Default false (public). */
21
+ private?: boolean;
22
+ /** Commit title. Default "Publish <repoId>". */
23
+ commitTitle?: string;
24
+ /** Target branch. Default "main". */
25
+ branch?: string;
26
+ }
27
+ export interface PublishOutcome {
28
+ repoId: string;
29
+ url: string;
30
+ files: string[];
31
+ }
32
+ /** The slice of `@huggingface/hub` we use — injectable for testing. */
33
+ export interface HubClient {
34
+ createRepo(args: {
35
+ repo: {
36
+ type: "model";
37
+ name: string;
38
+ };
39
+ accessToken: string;
40
+ private?: boolean;
41
+ }): Promise<unknown>;
42
+ uploadFiles(args: {
43
+ repo: {
44
+ type: "model";
45
+ name: string;
46
+ };
47
+ accessToken: string;
48
+ branch?: string;
49
+ commitTitle?: string;
50
+ files: {
51
+ path: string;
52
+ content: Blob;
53
+ }[];
54
+ }): Promise<unknown>;
55
+ }
56
+ /**
57
+ * Publish an export to the Hub: create the repo (idempotent) then upload every
58
+ * file. Pass `deps.hub` to inject a client; otherwise `@huggingface/hub` is
59
+ * loaded dynamically. Requires a write-scoped token (the credential-gated step).
60
+ */
61
+ export declare function publishToHuggingFace(result: ExportResult, target: HuggingFaceTarget, deps?: {
62
+ hub?: HubClient;
63
+ }): Promise<PublishOutcome>;
64
+ /** A minimal fs surface (Node `fs/promises`) — injectable for testing. */
65
+ export interface FsLike {
66
+ mkdir(path: string, opts: {
67
+ recursive: boolean;
68
+ }): Promise<unknown>;
69
+ writeFile(path: string, data: Uint8Array | string): Promise<void>;
70
+ }
71
+ /**
72
+ * Credential-free publish: write the export to a local directory (a ready-to-push
73
+ * HF repo folder). Returns the relative paths written. Inject `fs` in tests;
74
+ * otherwise Node's `fs/promises` is used.
75
+ */
76
+ export declare function writeExportToDir(result: ExportResult, dir: string, fs?: FsLike): Promise<string[]>;
77
+ //# sourceMappingURL=huggingface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"huggingface.d.ts","sourceRoot":"","sources":["../../src/publish/huggingface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,sCAAsC,CAAC;AAErF,qFAAqF;AACrF,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,uEAAuE;AACvE,MAAM,WAAW,SAAS;IACxB,UAAU,CAAC,IAAI,EAAE;QACf,IAAI,EAAE;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QACtC,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrB,WAAW,CAAC,IAAI,EAAE;QAChB,IAAI,EAAE;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QACtC,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,IAAI,CAAA;SAAE,EAAE,CAAC;KAC1C,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtB;AA0BD;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,iBAAiB,EACzB,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,SAAS,CAAA;CAAO,GAC7B,OAAO,CAAC,cAAc,CAAC,CA2BzB;AAED,0EAA0E;AAC1E,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnE;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAcxG"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * publish/huggingface.ts — push an exported Evermind model to the Hugging Face Hub.
3
+ *
4
+ * The runtime stays zero-dependency: the actual Hub I/O is delegated to an
5
+ * injectable {@link HubClient}. In production it is dynamically imported from the
6
+ * optional `@huggingface/hub` package (which handles LFS for the binary weight
7
+ * files correctly); tests inject a fake. There is also a credential-free path —
8
+ * {@link writeExportToDir} — that writes the repo to a local folder you push with
9
+ * `git` / `huggingface-cli upload`.
10
+ *
11
+ * The export itself (turning a trained model into the file set) lives in the
12
+ * engine's `export/` module; this module is only the *transport*.
13
+ */
14
+ /** Turn an emitted file into a Blob (binary or text) for upload. */
15
+ function toBlob(file) {
16
+ const part = (typeof file.data === "string" ? file.data : file.data);
17
+ return new Blob([part], { type: file.contentType });
18
+ }
19
+ async function loadHub() {
20
+ try {
21
+ // Optional peer dep — only required when actually uploading. A variable
22
+ // specifier keeps it out of the static module graph (no build-time dep).
23
+ const spec = "@huggingface/hub";
24
+ const mod = (await import(spec));
25
+ if (typeof mod.createRepo !== "function" || typeof mod.uploadFiles !== "function") {
26
+ throw new Error("module shape unexpected");
27
+ }
28
+ return mod;
29
+ }
30
+ catch {
31
+ throw new Error("publishToHuggingFace needs the optional '@huggingface/hub' package " +
32
+ "(npm i @huggingface/hub) — or use writeExportToDir() + `huggingface-cli upload`.");
33
+ }
34
+ }
35
+ /**
36
+ * Publish an export to the Hub: create the repo (idempotent) then upload every
37
+ * file. Pass `deps.hub` to inject a client; otherwise `@huggingface/hub` is
38
+ * loaded dynamically. Requires a write-scoped token (the credential-gated step).
39
+ */
40
+ export async function publishToHuggingFace(result, target, deps = {}) {
41
+ if (!target.repoId.includes("/")) {
42
+ throw new Error(`publishToHuggingFace: repoId must be "owner/name" (got "${target.repoId}")`);
43
+ }
44
+ if (!target.token)
45
+ throw new Error("publishToHuggingFace: a write-scoped HF token is required");
46
+ const hub = deps.hub ?? (await loadHub());
47
+ const repo = { type: "model", name: target.repoId };
48
+ try {
49
+ await hub.createRepo({ repo, accessToken: target.token, private: target.private ?? false });
50
+ }
51
+ catch (e) {
52
+ // Re-creating an existing repo is fine; only rethrow unexpected failures.
53
+ const msg = e instanceof Error ? e.message : String(e);
54
+ if (!/exist|409|conflict/i.test(msg))
55
+ throw e;
56
+ }
57
+ const files = result.files.map((f) => ({ path: f.path, content: toBlob(f) }));
58
+ await hub.uploadFiles({
59
+ repo,
60
+ accessToken: target.token,
61
+ branch: target.branch ?? "main",
62
+ commitTitle: target.commitTitle ?? `Publish ${target.repoId}`,
63
+ files,
64
+ });
65
+ return { repoId: target.repoId, url: `https://huggingface.co/${target.repoId}`, files: files.map((f) => f.path) };
66
+ }
67
+ /**
68
+ * Credential-free publish: write the export to a local directory (a ready-to-push
69
+ * HF repo folder). Returns the relative paths written. Inject `fs` in tests;
70
+ * otherwise Node's `fs/promises` is used.
71
+ */
72
+ export async function writeExportToDir(result, dir, fs) {
73
+ const spec = "node:fs/promises";
74
+ const realFs = fs ?? (await import(spec));
75
+ const sep = dir.endsWith("/") || dir.endsWith("\\") ? "" : "/";
76
+ await realFs.mkdir(dir, { recursive: true });
77
+ const written = [];
78
+ for (const f of result.files) {
79
+ const full = `${dir}${sep}${f.path}`;
80
+ const slash = Math.max(full.lastIndexOf("/"), full.lastIndexOf("\\"));
81
+ if (slash > dir.length)
82
+ await realFs.mkdir(full.slice(0, slash), { recursive: true });
83
+ await realFs.writeFile(full, f.data);
84
+ written.push(f.path);
85
+ }
86
+ return written;
87
+ }
88
+ //# sourceMappingURL=huggingface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"huggingface.js","sourceRoot":"","sources":["../../src/publish/huggingface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * publish/ — transport for published Evermind exports (the engine builds the
3
+ * files; this ships them). Hugging Face Hub upload + local-folder writer.
4
+ */
5
+ export { publishToHuggingFace, writeExportToDir } from "./huggingface.js";
6
+ export type { HuggingFaceTarget, PublishOutcome, HubClient, FsLike } from "./huggingface.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/publish/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * publish/ — transport for published Evermind exports (the engine builds the
3
+ * files; this ships them). Hugging Face Hub upload + local-folder writer.
4
+ */
5
+ export { publishToHuggingFace, writeExportToDir } from "./huggingface.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/publish/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -40,6 +40,11 @@ export interface HybridRetrieveOptions {
40
40
  mmrLambda?: number;
41
41
  /** BM25 tuning. */
42
42
  bm25?: Bm25Options;
43
+ /**
44
+ * Candidate count at/above which the dense pass uses an HNSW ANN index
45
+ * instead of an exact cosine scan (O(log N) vs O(N)). Default 256.
46
+ */
47
+ annThreshold?: number;
43
48
  }
44
49
  export interface HybridHit {
45
50
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"HybridRetriever.d.ts","sourceRoot":"","sources":["../../src/retrieval/HybridRetriever.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAGzD,MAAM,WAAW,kBAAkB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,MAAM,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,MAAM,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IAClC,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC1B,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,kBAAkB,EAAE,EAChC,IAAI,GAAE,qBAA0B,GACjC,SAAS,EAAE,CAuDb"}
1
+ {"version":3,"file":"HybridRetriever.d.ts","sourceRoot":"","sources":["../../src/retrieval/HybridRetriever.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAIzD,MAAM,WAAW,kBAAkB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,MAAM,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,MAAM,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IAClC,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC1B,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,kBAAkB,EAAE,EAChC,IAAI,GAAE,qBAA0B,GACjC,SAAS,EAAE,CAyDb"}
@@ -13,9 +13,9 @@
13
13
  * query (text + optional vector). It degrades gracefully: no query vector / no
14
14
  * candidate vectors → BM25-only; no overlap → dense-only.
15
15
  */
16
- import { cosineSimilarity } from '../similarity/index.js';
17
16
  import { bm25Search } from './bm25.js';
18
17
  import { reciprocalRankFusion, maximalMarginalRelevance } from './fusion.js';
18
+ import { denseSearch } from './hnsw.js';
19
19
  /**
20
20
  * Runs the full hybrid pipeline over `candidates` and returns the top-K hits.
21
21
  * Pure given its inputs (embeddings are supplied by the caller) so it is directly
@@ -26,14 +26,16 @@ export function hybridRetrieve(query, candidates, opts = {}) {
26
26
  if (candidates.length === 0)
27
27
  return [];
28
28
  const byId = new Map(candidates.map(c => [c.id, c]));
29
- // ── Dense ranking (cosine) ────────────────────────────────────────────────
29
+ // ── Dense ranking (cosine, ANN-accelerated above the threshold) ────────────
30
30
  let denseIds = [];
31
31
  if (query.vector) {
32
- denseIds = candidates
33
- .filter(c => c.vector && c.vector.length > 0)
34
- .map(c => ({ id: c.id, score: cosineSimilarity(query.vector, c.vector) }))
35
- .sort((a, b) => b.score - a.score)
36
- .map(h => h.id);
32
+ const vectored = candidates
33
+ .filter((c) => !!c.vector && c.vector.length > 0)
34
+ .map(c => ({ id: c.id, vector: c.vector }));
35
+ // Rank the full vectored set (k = all) so fusion sees the complete dense
36
+ // ordering; denseSearch uses an exact scan under the threshold and HNSW
37
+ // above it, so behaviour is identical for small stores.
38
+ denseIds = denseSearch(query.vector, vectored, vectored.length, opts.annThreshold ?? 256).map(h => h.id);
37
39
  }
38
40
  // ── Sparse ranking (BM25) ─────────────────────────────────────────────────
39
41
  const sparseIds = bm25Search(query.text, candidates, opts.bm25).map(h => h.id);
@@ -1 +1 @@
1
- {"version":3,"file":"HybridRetriever.js","sourceRoot":"","sources":["../../src/retrieval/HybridRetriever.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HybridRetriever.js","sourceRoot":"","sources":["../../src/retrieval/HybridRetriever.ts"],"names":[],"mappings":"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"}