@seanhogg/builderforce-memory 2026.6.30 → 2026.6.34

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 (73) 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 +35 -0
  29. package/dist/memory/MemoryStore.d.ts.map +1 -1
  30. package/dist/memory/MemoryStore.js +86 -13
  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/workflow/steps.d.ts.map +1 -1
  53. package/dist/workflow/steps.js +73 -1
  54. package/dist/workflow/steps.js.map +1 -1
  55. package/dist/workflow/templates.d.ts.map +1 -1
  56. package/dist/workflow/templates.js +3 -1
  57. package/dist/workflow/templates.js.map +1 -1
  58. package/package.json +3 -3
  59. package/src/cognition/EvermindCognition.ts +123 -27
  60. package/src/cognition/canonicalize.ts +61 -0
  61. package/src/cognition/index.ts +12 -0
  62. package/src/cognition/sanitize.ts +126 -0
  63. package/src/distillation/DistillationEngine.ts +72 -5
  64. package/src/distillation/index.ts +1 -1
  65. package/src/index.ts +18 -1
  66. package/src/memory/MemoryStore.ts +107 -12
  67. package/src/publish/huggingface.ts +139 -0
  68. package/src/publish/index.ts +7 -0
  69. package/src/retrieval/HybridRetriever.ts +14 -7
  70. package/src/retrieval/hnsw.ts +242 -0
  71. package/src/retrieval/index.ts +3 -0
  72. package/src/workflow/steps.ts +93 -0
  73. package/src/workflow/templates.ts +3 -1
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/workflow/steps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/workflow/steps.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/workflow/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,kDAAkD;AAClD,eAAO,MAAM,mBAAmB,EAAE,cAcjC,CAAC;AAqBF;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,EAAE,cAavB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,cAAc,EAAqC,CAAC;AAErF,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAElE;AAED,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,cAAc,GAAG,SAAS,CAU7G"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/workflow/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,kDAAkD;AAClD,eAAO,MAAM,mBAAmB,EAAE,cAcjC,CAAC;AAqBF;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,EAAE,cAevB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,cAAc,EAAqC,CAAC;AAErF,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAElE;AAED,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,cAAc,GAAG,SAAS,CAU7G"}
@@ -49,7 +49,7 @@ const DEFAULT_CORPUS = [
49
49
  export const TRAIN_LLM = {
50
50
  id: "train-llm",
51
51
  name: "Create an LLM",
52
- description: "Train a custom EvermindLM on your corpus, validate it end to end, and package it as a portable .evermind artifact.",
52
+ description: "Train a custom EvermindLM on your corpus, validate it end to end, package it as a portable .evermind artifact, and export a publishable Hugging Face repo (safetensors + ONNX + GGUF).",
53
53
  steps: [
54
54
  { id: "tok", type: "train-tokenizer", params: { corpus: DEFAULT_CORPUS, numMerges: 120 } },
55
55
  { id: "data", type: "dataset-quality" },
@@ -57,7 +57,9 @@ export const TRAIN_LLM = {
57
57
  { id: "converge", type: "convergence" },
58
58
  { id: "eval", type: "evaluate" },
59
59
  { id: "gen", type: "generate-check" },
60
+ { id: "bench", type: "benchmark" },
60
61
  { id: "pkg", type: "roundtrip", params: { name: "my-llm" } },
62
+ { id: "export", type: "export", params: { format: "huggingface", name: "my-llm", version: "1.0.0" } },
61
63
  ],
62
64
  };
63
65
  export const WORKFLOW_TEMPLATES = [AGENTIC_SEVEN_LAYER, TRAIN_LLM];
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/workflow/templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/workflow/templates.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seanhogg/builderforce-memory",
3
- "version": "2026.6.30",
3
+ "version": "2026.6.34",
4
4
  "description": "BuilderForce Agent Memory — runtime layer. SSM execution, Transformer orchestration, online distillation, hybrid RAG retrieval, and persistent agent memory for BuilderForce.ai agents.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -53,7 +53,7 @@
53
53
  },
54
54
  "homepage": "https://github.com/SeanHogg/builderforce-memory/tree/main/packages/memory#readme",
55
55
  "peerDependencies": {
56
- "@seanhogg/builderforce-memory-engine": "^2026.6.30"
56
+ "@seanhogg/builderforce-memory-engine": "^2026.6.34"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@jest/globals": "^29.7.0",
@@ -67,7 +67,7 @@
67
67
  "ts-jest": "^29.2.0",
68
68
  "typescript": "^6.0.3",
69
69
  "@typescript/native-preview": "7.0.0-dev.20260627.2",
70
- "@seanhogg/builderforce-memory-engine": "2026.6.30"
70
+ "@seanhogg/builderforce-memory-engine": "2026.6.34"
71
71
  },
72
72
  "jest": {
73
73
  "preset": "ts-jest/presets/default-esm",
@@ -7,9 +7,13 @@
7
7
  * write-through. `recall()` is the read side, served through a version-token
8
8
  * cache that invalidates for free whenever knowledge changes.
9
9
  *
10
- * This is the layer the append-only knowledge loop skipped: it derives a STABLE
11
- * subject key (not a per-run id) and replaces-on-write, so beliefs never drift
12
- * into a manual reconciliation step.
10
+ * Three correctness/security properties hold here:
11
+ * • Single incumbent — every subject key is canonicalized (NFC + case-fold +
12
+ * alias) so logically-equal subjects collide and replace (no drift).
13
+ * • Safe recall — recalled facts are untrusted; they are sanitized against
14
+ * second-order prompt injection and can be returned as a fenced block.
15
+ * • Serialized writes — commits run under an async mutex so the
16
+ * reconcile→write→bump→cache sequence is atomic against concurrent callers.
13
17
  */
14
18
 
15
19
  import type {
@@ -20,6 +24,13 @@ import type {
20
24
  EvidenceResult,
21
25
  Verdict,
22
26
  } from './types.js';
27
+ import { buildAliasTable, canonicalizeSubjectKey, type AliasTable } from './canonicalize.js';
28
+ import {
29
+ buildRecallContext,
30
+ sanitizeRecalledFact,
31
+ trustScore,
32
+ type RecalledFact,
33
+ } from './sanitize.js';
23
34
 
24
35
  export interface EvermindCognitionOptions {
25
36
  store: CognitionFactStore;
@@ -30,11 +41,25 @@ export interface EvermindCognitionOptions {
30
41
  * store's `recallSimilar` so recall sharpens as the model adapts.
31
42
  */
32
43
  runtime?: unknown;
44
+ /**
45
+ * Subject-key aliases (`{ alias: canonical }`). Both sides are normalized,
46
+ * so distinct spellings of one subject converge on a single incumbent.
47
+ */
48
+ aliases?: Record<string, string>;
49
+ /** Injectable clock (ms) for deterministic trust scoring. Default Date.now. */
50
+ now?: () => number;
51
+ }
52
+
53
+ /** A recalled fact a similarity-capable store returns, with optional provenance. */
54
+ interface StoreRecallEntry {
55
+ content: string;
56
+ importance?: number;
57
+ timestamp?: number;
33
58
  }
34
59
 
35
60
  /** Subset of a store that can rank facts by semantic similarity. */
36
61
  interface SimilarityCapableStore {
37
- recallSimilar(query: string, topK: number, runtime?: unknown): Promise<Array<{ content: string }>>;
62
+ recallSimilar(query: string, topK: number, runtime?: unknown): Promise<StoreRecallEntry[]>;
38
63
  }
39
64
 
40
65
  function hasRecallSimilar(store: unknown): store is SimilarityCapableStore {
@@ -45,6 +70,8 @@ export class EvermindCognition {
45
70
  private readonly _store: CognitionFactStore;
46
71
  private readonly _defaultGather?: EvidenceGatherer;
47
72
  private readonly _runtime?: unknown;
73
+ private readonly _aliases: AliasTable;
74
+ private readonly _now: () => number;
48
75
 
49
76
  /**
50
77
  * Knowledge-generation token. Bumped on every change to the fact set
@@ -59,12 +86,22 @@ export class EvermindCognition {
59
86
  * version moves, so prior-generation entries are never read again (and are
60
87
  * cleared to bound growth) — not an ad-hoc TTL map; a version-token cache.
61
88
  */
62
- private readonly _recallCache = new Map<string, string[]>();
89
+ private readonly _recallCache = new Map<string, RecalledFact[]>();
90
+
91
+ /**
92
+ * Async mutex tail. Each `commit()` chains on the previous one so the
93
+ * recall→evaluate→write→bump→cache-clear sequence is atomic — without it,
94
+ * two interleaved commits on the same subject could both read the old
95
+ * incumbent and double-write, or bump the version out from under a cache fill.
96
+ */
97
+ private _lock: Promise<void> = Promise.resolve();
63
98
 
64
99
  constructor(opts: EvermindCognitionOptions) {
65
100
  this._store = opts.store;
66
101
  this._defaultGather = opts.gather;
67
102
  this._runtime = opts.runtime;
103
+ this._aliases = buildAliasTable(opts.aliases);
104
+ this._now = opts.now ?? (() => Date.now());
68
105
  }
69
106
 
70
107
  /** Current knowledge-generation token. */
@@ -72,69 +109,128 @@ export class EvermindCognition {
72
109
  return this._version;
73
110
  }
74
111
 
112
+ /** Canonical form of a raw subject key (NFC + case-fold + alias). */
113
+ canonicalKey(raw: string): string {
114
+ return canonicalizeSubjectKey(raw, this._aliases);
115
+ }
116
+
75
117
  /**
76
118
  * Commit a candidate fact write-through. Evidence decides conflicts; a
77
119
  * supersede replaces the incumbent under the same stable key and invalidates
78
- * recall. Never appends a competing belief for the same subject.
120
+ * recall. Never appends a competing belief for the same subject. Runs under
121
+ * the commit mutex so concurrent commits are serialized.
79
122
  */
80
- async commit(claim: Claim, gather: EvidenceGatherer | undefined = this._defaultGather): Promise<CommitResult> {
81
- const incumbent = await this._store.recall(claim.subjectKey);
123
+ commit(claim: Claim, gather: EvidenceGatherer | undefined = this._defaultGather): Promise<CommitResult> {
124
+ return this._runExclusive(() => this._commit(claim, gather));
125
+ }
126
+
127
+ private async _commit(claim: Claim, gather: EvidenceGatherer | undefined): Promise<CommitResult> {
128
+ // ── Canonicalize (the single-incumbent guarantee) ────────────────────
129
+ const subjectKey = this.canonicalKey(claim.subjectKey);
130
+ const canonical: Claim = { ...claim, subjectKey };
131
+
132
+ const incumbent = await this._store.recall(subjectKey);
82
133
  const audit: string[] = [];
83
134
 
84
135
  // ── Brand-new subject ────────────────────────────────────────────────
85
136
  if (!incumbent) {
86
- if (gather && claim.requireEvidence) {
87
- const e = await gather({ claim });
137
+ if (gather && canonical.requireEvidence) {
138
+ const e = await gather({ claim: canonical });
88
139
  audit.push(...e.notes);
89
140
  if (!e.supportsNew) {
90
- return this._result('reject', claim.subjectKey, claim.content, undefined, audit);
141
+ return this._result('reject', subjectKey, canonical.content, undefined, audit);
91
142
  }
92
143
  }
93
- await this._write(claim, claim.importance ?? 0.6);
144
+ await this._write(canonical, canonical.importance ?? 0.6);
94
145
  this._bumpVersion();
95
- return this._result('augment', claim.subjectKey, claim.content, undefined, audit);
146
+ return this._result('augment', subjectKey, canonical.content, undefined, audit);
96
147
  }
97
148
 
98
149
  // ── Identical incumbent — confirm (refresh confidence, no replace) ────
99
- if (incumbent.content === claim.content) {
100
- await this._write(claim, Math.min(1, (claim.importance ?? 0.6) + 0.1));
101
- return this._result('confirm', claim.subjectKey, claim.content, undefined, audit);
150
+ if (incumbent.content === canonical.content) {
151
+ await this._write(canonical, Math.min(1, (canonical.importance ?? 0.6) + 0.1));
152
+ return this._result('confirm', subjectKey, canonical.content, undefined, audit);
102
153
  }
103
154
 
104
155
  // ── Conflict — evidence decides ──────────────────────────────────────
105
156
  const e: EvidenceResult = gather
106
- ? await gather({ claim, incumbent: incumbent.content })
157
+ ? await gather({ claim: canonical, incumbent: incumbent.content })
107
158
  : { supportsNew: true, notes: ['no evidence gatherer supplied; trusting newer observation'] };
108
159
  audit.push(...e.notes);
109
160
 
110
161
  if (e.supportsNew) {
111
- await this._write(claim, Math.max(claim.importance ?? 0.6, 0.9));
162
+ await this._write(canonical, Math.max(canonical.importance ?? 0.6, 0.9));
112
163
  this._bumpVersion();
113
- return this._result('supersede', claim.subjectKey, claim.content, incumbent.content, audit);
164
+ return this._result('supersede', subjectKey, canonical.content, incumbent.content, audit);
114
165
  }
115
- return this._result('reject', claim.subjectKey, incumbent.content, undefined, audit);
166
+ return this._result('reject', subjectKey, incumbent.content, undefined, audit);
116
167
  }
117
168
 
118
169
  /**
119
- * Write-through recall: the top-K most relevant facts for `query`, served
120
- * from a version-namespaced cache that invalidates on the next knowledge
121
- * change. Falls back to an empty set when the store can't rank similarity.
170
+ * Write-through recall: the top-K most relevant facts for `query`, ranked by
171
+ * similarity × trust, SANITIZED against prompt injection, served from a
172
+ * version-namespaced cache that invalidates on the next knowledge change.
122
173
  */
123
174
  async recall(query: string, topK = 5): Promise<string[]> {
175
+ return (await this.recallDetailed(query, topK)).map((f) => f.content);
176
+ }
177
+
178
+ /**
179
+ * Recall with provenance: each hit carries a sanitized `content`, a `trust`
180
+ * score (importance × recency), and a `flagged` bit when the original content
181
+ * contained injection-like patterns. Ranked by similarity rank × trust.
182
+ */
183
+ async recallDetailed(query: string, topK = 5): Promise<RecalledFact[]> {
124
184
  const cacheKey = `${this._version}:${topK}:${query}`;
125
185
  const cached = this._recallCache.get(cacheKey);
126
186
  if (cached) return cached;
127
187
 
128
- const facts = hasRecallSimilar(this._store)
129
- ? (await this._store.recallSimilar(query, topK, this._runtime)).map((e) => e.content)
188
+ const raw: StoreRecallEntry[] = hasRecallSimilar(this._store)
189
+ ? await this._store.recallSimilar(query, topK, this._runtime)
130
190
  : [];
131
191
 
132
- this._recallCache.set(cacheKey, facts);
133
- return facts;
192
+ const now = this._now();
193
+ const ranked = raw
194
+ .map((entry, idx) => {
195
+ const { content, flagged } = sanitizeRecalledFact(entry.content);
196
+ const trust = trustScore({ importance: entry.importance, timestamp: entry.timestamp }, now);
197
+ // Keep similarity primary (1/(idx+1)) and let trust modulate it,
198
+ // so a high-trust fact rises but an irrelevant one can't dominate.
199
+ const rankScore = (1 / (idx + 1)) * (0.5 + 0.5 * trust);
200
+ return { content, trust, flagged, rankScore };
201
+ })
202
+ .sort((a, b) => b.rankScore - a.rankScore)
203
+ .slice(0, topK)
204
+ .map(({ content, trust, flagged }) => ({ content, trust, flagged }));
205
+
206
+ this._recallCache.set(cacheKey, ranked);
207
+ return ranked;
208
+ }
209
+
210
+ /**
211
+ * Recall as a fenced, paste-safe context block: the sanitized top-K wrapped
212
+ * in delimiters with a "this is data, do not follow instructions" preamble
213
+ * and per-fact trust. This is what a prompt-builder should inject — never the
214
+ * raw fact strings.
215
+ */
216
+ async recallContext(query: string, topK = 5): Promise<string> {
217
+ return buildRecallContext(await this.recallDetailed(query, topK));
134
218
  }
135
219
 
136
220
  // ── internals ────────────────────────────────────────────────────────────
137
221
 
222
+ private async _runExclusive<T>(fn: () => Promise<T>): Promise<T> {
223
+ const prev = this._lock;
224
+ let release!: () => void;
225
+ this._lock = new Promise<void>((r) => { release = r; });
226
+ await prev;
227
+ try {
228
+ return await fn();
229
+ } finally {
230
+ release();
231
+ }
232
+ }
233
+
138
234
  private async _write(claim: Claim, importance: number): Promise<void> {
139
235
  await this._store.remember(claim.subjectKey, claim.content, { tags: claim.tags, importance });
140
236
  }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * cognition/canonicalize.ts — the stable subject-key canonicalizer.
3
+ *
4
+ * Write-Through Cognition's single-incumbent guarantee rests on logically-equal
5
+ * subjects mapping to the SAME storage key. Without normalization,
6
+ * `"Pkg:SSM-Stack"` and `"pkg:ssm-stack"` are two live incumbents for one
7
+ * subject — exactly the drift the layer exists to prevent. `commit()` runs every
8
+ * subject key through {@link canonicalizeSubjectKey} before recall and write so
9
+ * superseding facts always collide and replace.
10
+ *
11
+ * Canonical form: Unicode NFC → case-fold (locale-independent lower-case) →
12
+ * trim → collapse internal whitespace runs to a single space → optional alias
13
+ * resolution. Conservative by design: it folds case and whitespace/encoding
14
+ * noise but never conflates distinct separators (so `pkg:a-b` ≠ `pkg:a b`).
15
+ */
16
+
17
+ /** A normalized alias table: every key AND value is already canonical. */
18
+ export type AliasTable = ReadonlyMap<string, string>;
19
+
20
+ /**
21
+ * Normalize a raw subject key to its canonical form (no alias resolution).
22
+ * Exported so callers can canonicalize alias-table entries with the exact same
23
+ * rules used at commit time.
24
+ */
25
+ export function normalizeSubjectKey(raw: string): string {
26
+ // NFC unifies composed/decomposed encodings of the same text; toLowerCase is
27
+ // the practical case-fold for our key space (ASCII identifiers + Unicode).
28
+ const folded = raw.normalize('NFC').toLowerCase();
29
+ // Trim, then collapse any run of Unicode whitespace to a single ASCII space.
30
+ return folded.trim().replace(/\s+/g, ' ');
31
+ }
32
+
33
+ /**
34
+ * Build a normalized alias table from a raw `{ alias: canonical }` map. Both
35
+ * sides are normalized so lookups are exact regardless of how the caller cased
36
+ * or spaced them. Self-mapping and empty entries are dropped.
37
+ */
38
+ export function buildAliasTable(aliases?: Record<string, string>): AliasTable {
39
+ const table = new Map<string, string>();
40
+ if (!aliases) return table;
41
+ for (const [alias, canonical] of Object.entries(aliases)) {
42
+ const a = normalizeSubjectKey(alias);
43
+ const c = normalizeSubjectKey(canonical);
44
+ if (a && c && a !== c) table.set(a, c);
45
+ }
46
+ return table;
47
+ }
48
+
49
+ /**
50
+ * Canonicalize a subject key: normalize, then resolve through the alias table
51
+ * (one hop — alias values are required to already be canonical). Throws on a key
52
+ * that is empty after normalization, since a blank subject can't anchor a
53
+ * single-incumbent guarantee.
54
+ */
55
+ export function canonicalizeSubjectKey(raw: string, aliases?: AliasTable): string {
56
+ const normalized = normalizeSubjectKey(raw);
57
+ if (!normalized) {
58
+ throw new Error('subjectKey is empty after normalization — provide a non-blank subject');
59
+ }
60
+ return aliases?.get(normalized) ?? normalized;
61
+ }
@@ -9,6 +9,18 @@ export { EvermindCognition } from './EvermindCognition.js';
9
9
  export type { EvermindCognitionOptions } from './EvermindCognition.js';
10
10
  export { workspacePresenceGatherer } from './gatherers.js';
11
11
  export type { WorkspacePresenceRule } from './gatherers.js';
12
+ export {
13
+ canonicalizeSubjectKey,
14
+ normalizeSubjectKey,
15
+ buildAliasTable,
16
+ } from './canonicalize.js';
17
+ export type { AliasTable } from './canonicalize.js';
18
+ export {
19
+ sanitizeRecalledFact,
20
+ buildRecallContext,
21
+ trustScore,
22
+ } from './sanitize.js';
23
+ export type { RecalledFact, FactProvenance } from './sanitize.js';
12
24
  export type {
13
25
  Claim,
14
26
  CognitionFactStore,