@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
@@ -0,0 +1,71 @@
1
+ /**
2
+ * hnsw.ts — a pure-TypeScript HNSW approximate-nearest-neighbour index.
3
+ *
4
+ * Recall over the fact store was an O(N) cosine scan per query, so the
5
+ * "lifetime of always-current knowledge" thesis hit a wall around ~10⁴ facts.
6
+ * HNSW (Hierarchical Navigable Small World) gives O(log N) expected query time
7
+ * with high recall, and this implementation is dependency-free so it keeps the
8
+ * engine/runtime zero-dep promise. For small sets an exact scan is both simpler
9
+ * and faster, so callers use {@link denseSearch} which switches to HNSW only
10
+ * above a threshold.
11
+ *
12
+ * Distance is cosine similarity (higher = closer); the graph stores `1 - cos`
13
+ * as the metric so "nearer" is "smaller". Construction is deterministic given a
14
+ * seed, so builds (and tests) reproduce exactly.
15
+ */
16
+ export interface HnswOptions {
17
+ /** Max neighbours per node on layers > 0. Default 16. */
18
+ M?: number;
19
+ /** Candidate-list size during construction. Default 200. */
20
+ efConstruction?: number;
21
+ /** Default candidate-list size during search. Default 50. */
22
+ efSearch?: number;
23
+ /** Deterministic seed for layer assignment. Default 0x5eed. */
24
+ seed?: number;
25
+ }
26
+ export interface SearchHit {
27
+ id: string;
28
+ /** Cosine similarity to the query (higher = closer). */
29
+ score: number;
30
+ }
31
+ export declare class HnswIndex {
32
+ private readonly _M;
33
+ private readonly _Mmax0;
34
+ private readonly _efC;
35
+ private readonly _efS;
36
+ private readonly _mL;
37
+ private readonly _rng;
38
+ private readonly _nodes;
39
+ private readonly _idToIdx;
40
+ private _entry;
41
+ private _maxLayer;
42
+ constructor(opts?: HnswOptions);
43
+ get size(): number;
44
+ has(id: string): boolean;
45
+ private _dist;
46
+ private _randomLayer;
47
+ /** Insert a vector. Ids are unique — re-adding a known id is ignored. */
48
+ add(id: string, vector: Float32Array): void;
49
+ /** Top-k nearest by cosine similarity (descending). */
50
+ search(query: Float32Array, k: number, ef?: number): SearchHit[];
51
+ clear(): void;
52
+ /** Greedy hill-climb to the single closest node to `q` on layer `lc`. */
53
+ private _greedyClosest;
54
+ /**
55
+ * ef-search on a single layer: returns candidates sorted nearest-first.
56
+ * A bounded best-first expansion (the standard HNSW layer search).
57
+ */
58
+ private _searchLayer;
59
+ /** Keep only the `Mmax` closest neighbours of `node` on layer `lc`. */
60
+ private _prune;
61
+ }
62
+ /**
63
+ * Dense KNN with an exact-scan fast path: below `threshold` candidates a linear
64
+ * cosine scan is simpler and faster; at/above it, build an HNSW index and query
65
+ * it. Returned hits are cosine-similarity descending. Pure given its inputs.
66
+ */
67
+ export declare function denseSearch(query: Float32Array, items: Array<{
68
+ id: string;
69
+ vector: Float32Array;
70
+ }>, k: number, threshold?: number, hnsw?: HnswOptions): SearchHit[];
71
+ //# sourceMappingURL=hnsw.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hnsw.d.ts","sourceRoot":"","sources":["../../src/retrieval/hnsw.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,WAAW,WAAW;IACxB,yDAAyD;IACzD,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;CACjB;AAkBD,qBAAa,SAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAe;IAEpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,SAAS,CAAM;gBAEX,IAAI,GAAE,WAAgB;IASlC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,YAAY;IAIpB,yEAAyE;IACzE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IA0C3C,uDAAuD;IACvD,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,SAAY,GAAG,SAAS,EAAE;IAUnE,KAAK,IAAI,IAAI;IASb,yEAAyE;IACzE,OAAO,CAAC,cAAc;IAkBtB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAoCpB,uEAAuE;IACvE,OAAO,CAAC,MAAM;CAKjB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACvB,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CAAC,EAClD,CAAC,EAAE,MAAM,EACT,SAAS,SAAM,EACf,IAAI,CAAC,EAAE,WAAW,GACnB,SAAS,EAAE,CAWb"}
@@ -0,0 +1,201 @@
1
+ /**
2
+ * hnsw.ts — a pure-TypeScript HNSW approximate-nearest-neighbour index.
3
+ *
4
+ * Recall over the fact store was an O(N) cosine scan per query, so the
5
+ * "lifetime of always-current knowledge" thesis hit a wall around ~10⁴ facts.
6
+ * HNSW (Hierarchical Navigable Small World) gives O(log N) expected query time
7
+ * with high recall, and this implementation is dependency-free so it keeps the
8
+ * engine/runtime zero-dep promise. For small sets an exact scan is both simpler
9
+ * and faster, so callers use {@link denseSearch} which switches to HNSW only
10
+ * above a threshold.
11
+ *
12
+ * Distance is cosine similarity (higher = closer); the graph stores `1 - cos`
13
+ * as the metric so "nearer" is "smaller". Construction is deterministic given a
14
+ * seed, so builds (and tests) reproduce exactly.
15
+ */
16
+ import { cosineSimilarity } from '../similarity/index.js';
17
+ /** A small deterministic LCG → float in [0,1). Mirrors the engine's SeededRng. */
18
+ function makeRng(seed) {
19
+ let s = (seed >>> 0) || 1;
20
+ return () => {
21
+ s = (Math.imul(1664525, s) + 1013904223) >>> 0;
22
+ return s / 0x1_0000_0000;
23
+ };
24
+ }
25
+ export class HnswIndex {
26
+ _M;
27
+ _Mmax0;
28
+ _efC;
29
+ _efS;
30
+ _mL;
31
+ _rng;
32
+ _nodes = [];
33
+ _idToIdx = new Map();
34
+ _entry = -1; // index of the entry-point node
35
+ _maxLayer = -1;
36
+ constructor(opts = {}) {
37
+ this._M = Math.max(2, opts.M ?? 16);
38
+ this._Mmax0 = this._M * 2;
39
+ this._efC = Math.max(this._M, opts.efConstruction ?? 200);
40
+ this._efS = Math.max(1, opts.efSearch ?? 50);
41
+ this._mL = 1 / Math.log(this._M);
42
+ this._rng = makeRng(opts.seed ?? 0x5eed);
43
+ }
44
+ get size() {
45
+ return this._nodes.length;
46
+ }
47
+ has(id) {
48
+ return this._idToIdx.has(id);
49
+ }
50
+ _dist(a, b) {
51
+ return 1 - cosineSimilarity(a, b);
52
+ }
53
+ _randomLayer() {
54
+ return Math.floor(-Math.log(Math.max(this._rng(), 1e-12)) * this._mL);
55
+ }
56
+ /** Insert a vector. Ids are unique — re-adding a known id is ignored. */
57
+ add(id, vector) {
58
+ if (this._idToIdx.has(id))
59
+ return;
60
+ const layer = this._randomLayer();
61
+ const node = { id, vector, neighbours: Array.from({ length: layer + 1 }, () => []) };
62
+ const idx = this._nodes.length;
63
+ this._nodes.push(node);
64
+ this._idToIdx.set(id, idx);
65
+ if (this._entry === -1) {
66
+ this._entry = idx;
67
+ this._maxLayer = layer;
68
+ return;
69
+ }
70
+ // Descend from the top to just above the new node's top layer.
71
+ let ep = this._entry;
72
+ for (let lc = this._maxLayer; lc > layer; lc--) {
73
+ ep = this._greedyClosest(vector, ep, lc);
74
+ }
75
+ // From the node's top layer down to 0: find neighbours and link.
76
+ for (let lc = Math.min(layer, this._maxLayer); lc >= 0; lc--) {
77
+ const candidates = this._searchLayer(vector, ep, this._efC, lc);
78
+ const Mmax = lc === 0 ? this._Mmax0 : this._M;
79
+ const selected = candidates.slice(0, this._M).map((c) => c.idx);
80
+ node.neighbours[lc] = selected.slice();
81
+ // Add reverse links, pruning each neighbour back to Mmax.
82
+ for (const nIdx of selected) {
83
+ const nb = this._nodes[nIdx];
84
+ const list = nb.neighbours[lc] ?? (nb.neighbours[lc] = []);
85
+ list.push(idx);
86
+ if (list.length > Mmax)
87
+ this._prune(nb, lc, Mmax);
88
+ }
89
+ ep = candidates[0]?.idx ?? ep;
90
+ }
91
+ if (layer > this._maxLayer) {
92
+ this._maxLayer = layer;
93
+ this._entry = idx;
94
+ }
95
+ }
96
+ /** Top-k nearest by cosine similarity (descending). */
97
+ search(query, k, ef = this._efS) {
98
+ if (this._entry === -1 || k <= 0)
99
+ return [];
100
+ let ep = this._entry;
101
+ for (let lc = this._maxLayer; lc > 0; lc--) {
102
+ ep = this._greedyClosest(query, ep, lc);
103
+ }
104
+ const found = this._searchLayer(query, ep, Math.max(ef, k), 0);
105
+ return found.slice(0, k).map((c) => ({ id: this._nodes[c.idx].id, score: 1 - c.dist }));
106
+ }
107
+ clear() {
108
+ this._nodes.length = 0;
109
+ this._idToIdx.clear();
110
+ this._entry = -1;
111
+ this._maxLayer = -1;
112
+ }
113
+ // ── internals ──────────────────────────────────────────────────────────────
114
+ /** Greedy hill-climb to the single closest node to `q` on layer `lc`. */
115
+ _greedyClosest(q, start, lc) {
116
+ let best = start;
117
+ let bestDist = this._dist(q, this._nodes[best].vector);
118
+ let improved = true;
119
+ while (improved) {
120
+ improved = false;
121
+ for (const nIdx of this._nodes[best].neighbours[lc] ?? []) {
122
+ const d = this._dist(q, this._nodes[nIdx].vector);
123
+ if (d < bestDist) {
124
+ bestDist = d;
125
+ best = nIdx;
126
+ improved = true;
127
+ }
128
+ }
129
+ }
130
+ return best;
131
+ }
132
+ /**
133
+ * ef-search on a single layer: returns candidates sorted nearest-first.
134
+ * A bounded best-first expansion (the standard HNSW layer search).
135
+ */
136
+ _searchLayer(q, entry, ef, lc) {
137
+ const visited = new Set([entry]);
138
+ const entryDist = this._dist(q, this._nodes[entry].vector);
139
+ // `candidates` is a min-heap-ish frontier; `results` keeps the best ef.
140
+ const candidates = [{ idx: entry, dist: entryDist }];
141
+ const results = [{ idx: entry, dist: entryDist }];
142
+ while (candidates.length > 0) {
143
+ // Pop nearest candidate.
144
+ let ci = 0;
145
+ for (let i = 1; i < candidates.length; i++)
146
+ if (candidates[i].dist < candidates[ci].dist)
147
+ ci = i;
148
+ const cur = candidates.splice(ci, 1)[0];
149
+ // Farthest in results.
150
+ const worst = results.reduce((m, r) => (r.dist > m.dist ? r : m), results[0]);
151
+ if (cur.dist > worst.dist && results.length >= ef)
152
+ break;
153
+ for (const nIdx of this._nodes[cur.idx].neighbours[lc] ?? []) {
154
+ if (visited.has(nIdx))
155
+ continue;
156
+ visited.add(nIdx);
157
+ const d = this._dist(q, this._nodes[nIdx].vector);
158
+ const farthest = results.reduce((m, r) => (r.dist > m.dist ? r : m), results[0]);
159
+ if (results.length < ef || d < farthest.dist) {
160
+ candidates.push({ idx: nIdx, dist: d });
161
+ results.push({ idx: nIdx, dist: d });
162
+ if (results.length > ef) {
163
+ // Drop the current farthest.
164
+ let wi = 0;
165
+ for (let i = 1; i < results.length; i++)
166
+ if (results[i].dist > results[wi].dist)
167
+ wi = i;
168
+ results.splice(wi, 1);
169
+ }
170
+ }
171
+ }
172
+ }
173
+ return results.sort((a, b) => a.dist - b.dist);
174
+ }
175
+ /** Keep only the `Mmax` closest neighbours of `node` on layer `lc`. */
176
+ _prune(node, lc, Mmax) {
177
+ const list = node.neighbours[lc];
178
+ list.sort((a, b) => this._dist(node.vector, this._nodes[a].vector) - this._dist(node.vector, this._nodes[b].vector));
179
+ node.neighbours[lc] = list.slice(0, Mmax);
180
+ }
181
+ }
182
+ /**
183
+ * Dense KNN with an exact-scan fast path: below `threshold` candidates a linear
184
+ * cosine scan is simpler and faster; at/above it, build an HNSW index and query
185
+ * it. Returned hits are cosine-similarity descending. Pure given its inputs.
186
+ */
187
+ export function denseSearch(query, items, k, threshold = 256, hnsw) {
188
+ if (items.length === 0 || k <= 0)
189
+ return [];
190
+ if (items.length < threshold) {
191
+ return items
192
+ .map((it) => ({ id: it.id, score: cosineSimilarity(query, it.vector) }))
193
+ .sort((a, b) => b.score - a.score)
194
+ .slice(0, k);
195
+ }
196
+ const index = new HnswIndex(hnsw);
197
+ for (const it of items)
198
+ index.add(it.id, it.vector);
199
+ return index.search(query, k);
200
+ }
201
+ //# sourceMappingURL=hnsw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hnsw.js","sourceRoot":"","sources":["../../src/retrieval/hnsw.ts"],"names":[],"mappings":"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"}
@@ -13,4 +13,6 @@ export { reciprocalRankFusion, maximalMarginalRelevance } from './fusion.js';
13
13
  export type { RankedList, FusedHit, MmrCandidate } from './fusion.js';
14
14
  export { hybridRetrieve } from './HybridRetriever.js';
15
15
  export type { RetrievalCandidate, HybridQuery, HybridRetrieveOptions, HybridHit, } from './HybridRetriever.js';
16
+ export { HnswIndex, denseSearch } from './hnsw.js';
17
+ export type { HnswOptions, SearchHit } from './hnsw.js';
16
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/retrieval/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC7E,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EACR,kBAAkB,EAClB,WAAW,EACX,qBAAqB,EACrB,SAAS,GACZ,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/retrieval/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC7E,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EACR,kBAAkB,EAClB,WAAW,EACX,qBAAqB,EACrB,SAAS,GACZ,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
@@ -9,4 +9,5 @@ export { chunkText } from './chunk.js';
9
9
  export { bm25Search } from './bm25.js';
10
10
  export { reciprocalRankFusion, maximalMarginalRelevance } from './fusion.js';
11
11
  export { hybridRetrieve } from './HybridRetriever.js';
12
+ export { HnswIndex, denseSearch } from './hnsw.js';
12
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/retrieval/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAG7E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/retrieval/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAG7E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQtD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
@@ -126,11 +126,20 @@ export interface SaveOptions {
126
126
  storage?: StorageTarget;
127
127
  filename?: string;
128
128
  key?: string;
129
+ /**
130
+ * Base checkpoint to diff against (EVM-6b). When provided, save persists only
131
+ * a sparse DELTA vs this base (online adapt() I/O win) instead of the full
132
+ * model. Reload with `load({ deltaBase })`. Must be an f32 checkpoint of the
133
+ * same config (e.g. a prior `await session.export()` / saved buffer).
134
+ */
135
+ deltaBase?: ArrayBuffer;
129
136
  }
130
137
  export interface LoadOptions {
131
138
  storage?: StorageTarget;
132
139
  url?: string;
133
140
  key?: string;
141
+ /** Base checkpoint to reconstruct a delta saved with `save({ deltaBase })`. (EVM-6b) */
142
+ deltaBase?: ArrayBuffer;
134
143
  }
135
144
  export type CreateStage = 'gpu' | 'tokenizer' | 'model' | 'weights';
136
145
  export interface CreateProgressEvent {
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session/session.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * Part of the @seanhogg/ssmjs session layer.
8
8
  */
9
- import { initWebGPU, BPETokenizer, HybridMambaModel, MambaTrainer, } from '@seanhogg/builderforce-memory-engine';
9
+ import { initWebGPU, BPETokenizer, HybridMambaModel, MambaTrainer, diffCheckpoints, applyCheckpointDiff, } from '@seanhogg/builderforce-memory-engine';
10
10
  import { SessionError } from './errors.js';
11
11
  // ── Opinionated defaults ───────────────────────────────────────────────────────
12
12
  /** Default tokenizer: Qwen2.5-Coder BPE vocabulary (Apache 2.0). */
@@ -277,7 +277,12 @@ export class MambaSession {
277
277
  const storage = options.storage ?? 'indexedDB';
278
278
  const key = options.key ?? this._name;
279
279
  const filename = options.filename ?? `${this._name}.bin`;
280
- const buffer = await this._model.exportWeights();
280
+ // EVM-6b: when a base is supplied, persist only the sparse delta vs it
281
+ // (f32 both sides) — an online adapt() then writes kilobytes, not the
282
+ // whole model. Otherwise write the full checkpoint as before.
283
+ const buffer = options.deltaBase
284
+ ? diffCheckpoints(options.deltaBase, await this._model.exportWeights({ fp16: false }))
285
+ : await this._model.exportWeights();
281
286
  switch (storage) {
282
287
  case 'indexedDB':
283
288
  await saveToIndexedDB(key, buffer, this._idbFactory);
@@ -321,6 +326,11 @@ export class MambaSession {
321
326
  }
322
327
  if (buffer == null)
323
328
  return false;
329
+ // EVM-6b: a delta saved with `save({ deltaBase })` is reconstructed against
330
+ // the same base before loading.
331
+ if (options.deltaBase) {
332
+ buffer = applyCheckpointDiff(options.deltaBase, buffer);
333
+ }
324
334
  try {
325
335
  await this._model.loadWeights(buffer);
326
336
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session/session.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/workflow/steps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAYH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAsB,MAAM,YAAY,CAAC;AAgChF,UAAU,UAAU;IAClB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAyQpD,CAAC"}
1
+ {"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/workflow/steps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAgBH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAsB,MAAM,YAAY,CAAC;AAyChF,UAAU,UAAU;IAClB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAyVpD,CAAC"}
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * A custom workflow mixes these freely; new step types register the same way.
11
11
  */
12
- import { EvermindLM, EvermindLMTrainer, BPETokenizer, EvermindModelPackage, } from "@seanhogg/builderforce-memory-engine";
12
+ import { EvermindLM, EvermindLMTrainer, BPETokenizer, EvermindModelPackage, exportEvermind, benchmarkText, } from "@seanhogg/builderforce-memory-engine";
13
13
  import { EvermindCognition } from "../cognition/index.js";
14
14
  import { hybridRetrieve, chunkText } from "../retrieval/index.js";
15
15
  import { MemoryStore } from "../memory/MemoryStore.js";
@@ -27,6 +27,14 @@ function pNum(cfg, key, def) {
27
27
  const v = cfg.params?.[key];
28
28
  return typeof v === "number" && Number.isFinite(v) ? v : def;
29
29
  }
30
+ function pBool(cfg, key, def) {
31
+ const v = cfg.params?.[key];
32
+ return typeof v === "boolean" ? v : def;
33
+ }
34
+ /** Byte length of an emitted export file (text or binary). */
35
+ function fileBytes(data) {
36
+ return typeof data === "string" ? new TextEncoder().encode(data).length : data.length;
37
+ }
30
38
  function mkStep(cfg, layer, defaultLabel, run) {
31
39
  return { id: cfg.id, layer, label: cfg.label ?? defaultLabel, run };
32
40
  }
@@ -200,6 +208,40 @@ export const BUILTIN_STEPS = {
200
208
  return `sample: "${out.slice(0, 40)}"`;
201
209
  }),
202
210
  },
211
+ benchmark: {
212
+ info: {
213
+ type: "benchmark",
214
+ layer: "BUILD",
215
+ label: "Benchmark",
216
+ description: "Score the trained model on held-out text — perplexity, bits/token, top-1/top-k accuracy, throughput (params: evalCorpus, topK, maxPerplexity, minTop1)",
217
+ },
218
+ factory: (cfg) => mkStep(cfg, "BUILD", "Benchmark model (held-out)", async (ctx) => {
219
+ const model = ctx.bag.model;
220
+ const tok = ctx.bag.tokenizer;
221
+ if (!model || !tok)
222
+ throw new Error("no trained model — add 'train-model' first");
223
+ // Score on held-out text: the eval corpus must be text the model did not
224
+ // train on, otherwise perplexity is meaningless. Default to a small
225
+ // held-out probe distinct from the training KNOWLEDGE corpus.
226
+ const evalCorpus = pStr(cfg, "evalCorpus", "Agents recall facts and act on them. The planning loop retrieves context before generating.");
227
+ const topK = pNum(cfg, "topK", 5);
228
+ const report = benchmarkText(model, tok, evalCorpus, { topK });
229
+ if (report.tokens === 0) {
230
+ throw new Error("eval corpus produced no scorable tokens — provide longer held-out text");
231
+ }
232
+ ctx.bag.benchmark = report;
233
+ // Optional quality gates — only enforced when a threshold is configured.
234
+ const maxPerplexity = pNum(cfg, "maxPerplexity", 0);
235
+ if (maxPerplexity > 0 && report.perplexity > maxPerplexity) {
236
+ throw new Error(`perplexity ${report.perplexity.toFixed(2)} exceeds max ${maxPerplexity} (model underfit — raise epochs/lr or enlarge the corpus)`);
237
+ }
238
+ const minTop1 = pNum(cfg, "minTop1", 0);
239
+ if (minTop1 > 0 && report.top1Accuracy < minTop1) {
240
+ throw new Error(`top-1 accuracy ${(report.top1Accuracy * 100).toFixed(1)}% below min ${(minTop1 * 100).toFixed(0)}%`);
241
+ }
242
+ return `ppl ${report.perplexity.toFixed(2)}, ${report.bitsPerToken.toFixed(2)} bits/tok, top1 ${(report.top1Accuracy * 100).toFixed(0)}%, top${report.topK} ${(report.topKAccuracy * 100).toFixed(0)}% over ${report.tokens} tok`;
243
+ }),
244
+ },
203
245
  "dataset-quality": {
204
246
  info: { type: "dataset-quality", layer: "BUILD", label: "Dataset quality", description: "Validate the corpus is trainable before spending epochs (params: minSequences, minWords, maxDuplicateRatio)" },
205
247
  factory: (cfg) => mkStep(cfg, "BUILD", "Dataset quality gate", async (ctx) => {
@@ -314,5 +356,35 @@ export const BUILTIN_STEPS = {
314
356
  return `packaged ${blob.byteLength} bytes${tok ? " + tokenizer" : ""}`;
315
357
  }),
316
358
  },
359
+ export: {
360
+ info: {
361
+ type: "export",
362
+ layer: "BUILD",
363
+ label: "Export",
364
+ description: "Export the trained model to a publishable format (params: format=huggingface|onnx|safetensors|gguf, name, version, license, fp16)",
365
+ },
366
+ factory: (cfg) => mkStep(cfg, "BUILD", "Export model (publishable)", async (ctx) => {
367
+ const model = ctx.bag.model;
368
+ if (!model)
369
+ throw new Error("no trained model — add 'train-model' first");
370
+ const tok = ctx.bag.tokenizer;
371
+ const format = pStr(cfg, "format", "huggingface");
372
+ if (format === "huggingface" && !tok) {
373
+ throw new Error("huggingface export needs a tokenizer — add 'train-tokenizer' first");
374
+ }
375
+ const result = exportEvermind(model, format, {
376
+ name: pStr(cfg, "name", "Evermind"),
377
+ version: pStr(cfg, "version", "1.0.0"),
378
+ license: pStr(cfg, "license", "mit"),
379
+ author: pStr(cfg, "author", ""),
380
+ description: pStr(cfg, "description", "workflow-built Evermind model"),
381
+ fp16: pBool(cfg, "fp16", false),
382
+ }, tok);
383
+ const total = result.files.reduce((n, f) => n + fileBytes(f.data), 0);
384
+ // Land the file set as a workflow OUTPUT so a publish step / portal can ship it.
385
+ ctx.artifacts.export = { format, files: result.files, paramCount: result.paramCount };
386
+ return `exported ${format}: ${result.files.length} file(s), ${total} bytes, ${result.paramCount} params`;
387
+ }),
388
+ },
317
389
  };
318
390
  //# sourceMappingURL=steps.js.map