@mneme-ai/core 1.68.0 → 1.69.0

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 (37) hide show
  1. package/dist/hyperscan/bench.d.ts +32 -0
  2. package/dist/hyperscan/bench.d.ts.map +1 -0
  3. package/dist/hyperscan/bench.js +81 -0
  4. package/dist/hyperscan/bench.js.map +1 -0
  5. package/dist/hyperscan/cross_citation.d.ts +51 -0
  6. package/dist/hyperscan/cross_citation.d.ts.map +1 -0
  7. package/dist/hyperscan/cross_citation.js +140 -0
  8. package/dist/hyperscan/cross_citation.js.map +1 -0
  9. package/dist/hyperscan/cross_source_qa.d.ts +49 -0
  10. package/dist/hyperscan/cross_source_qa.d.ts.map +1 -0
  11. package/dist/hyperscan/cross_source_qa.js +219 -0
  12. package/dist/hyperscan/cross_source_qa.js.map +1 -0
  13. package/dist/hyperscan/hyperscan.test.d.ts +5 -0
  14. package/dist/hyperscan/hyperscan.test.d.ts.map +1 -0
  15. package/dist/hyperscan/hyperscan.test.js +191 -0
  16. package/dist/hyperscan/hyperscan.test.js.map +1 -0
  17. package/dist/hyperscan/hyperscan_molecule.d.ts +76 -0
  18. package/dist/hyperscan/hyperscan_molecule.d.ts.map +1 -0
  19. package/dist/hyperscan/hyperscan_molecule.js +144 -0
  20. package/dist/hyperscan/hyperscan_molecule.js.map +1 -0
  21. package/dist/hyperscan/index.d.ts +26 -0
  22. package/dist/hyperscan/index.d.ts.map +1 -0
  23. package/dist/hyperscan/index.js +26 -0
  24. package/dist/hyperscan/index.js.map +1 -0
  25. package/dist/hyperscan/nucleus_dust_htc.d.ts +71 -0
  26. package/dist/hyperscan/nucleus_dust_htc.d.ts.map +1 -0
  27. package/dist/hyperscan/nucleus_dust_htc.js +242 -0
  28. package/dist/hyperscan/nucleus_dust_htc.js.map +1 -0
  29. package/dist/hyperscan/prose_shadow.d.ts +50 -0
  30. package/dist/hyperscan/prose_shadow.d.ts.map +1 -0
  31. package/dist/hyperscan/prose_shadow.js +225 -0
  32. package/dist/hyperscan/prose_shadow.js.map +1 -0
  33. package/dist/index.d.ts +1 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +10 -0
  36. package/dist/index.js.map +1 -1
  37. package/package.json +1 -1
@@ -0,0 +1,191 @@
1
+ /**
2
+ * v1.69.0 -- HYPERSCAN PROTOCOL test suite.
3
+ */
4
+ import { describe, it, expect, beforeEach, afterEach } from "vitest";
5
+ import { mkdtempSync, rmSync, mkdirSync, writeFileSync } from "node:fs";
6
+ import { tmpdir } from "node:os";
7
+ import { join } from "node:path";
8
+ import { execSync } from "node:child_process";
9
+ import { extractEntities, proseScan } from "./prose_shadow.js";
10
+ import { parseTriples, crossCitationGround } from "./cross_citation.js";
11
+ import { crossSourceAsk } from "./cross_source_qa.js";
12
+ import { generateDust, computeCoverage, clusterDust, readAbstracts } from "./nucleus_dust_htc.js";
13
+ import { buildMolecule, query } from "./hyperscan_molecule.js";
14
+ function setup() { return mkdtempSync(join(tmpdir(), "mneme-hs-")); }
15
+ function cleanup(r) { try {
16
+ rmSync(r, { recursive: true, force: true });
17
+ }
18
+ catch { /* */ } }
19
+ function initGit(r, files, commits) {
20
+ execSync(`git init --quiet -b main`, { cwd: r, stdio: "ignore" });
21
+ execSync(`git config user.email "t@t.t"`, { cwd: r, stdio: "ignore" });
22
+ execSync(`git config user.name "t"`, { cwd: r, stdio: "ignore" });
23
+ execSync(`git config commit.gpgsign false`, { cwd: r, stdio: "ignore" });
24
+ for (const f of files) {
25
+ const dir = join(r, f.path, "..");
26
+ mkdirSync(dir, { recursive: true });
27
+ writeFileSync(join(r, f.path), f.content, "utf8");
28
+ }
29
+ execSync(`git add -A`, { cwd: r, stdio: "ignore" });
30
+ for (const c of commits) {
31
+ writeFileSync(join(r, `m-${c.replace(/\W/g, "_")}.txt`), c, "utf8");
32
+ execSync(`git add -A`, { cwd: r, stdio: "ignore" });
33
+ execSync(`git commit -m "${c}" --no-gpg-sign --quiet`, { cwd: r, stdio: "ignore" });
34
+ }
35
+ }
36
+ // ─── H1 PROSE SHADOW SCAN ────────────────────────────────────────────
37
+ describe("v1.69 Hyperscan H1 · Prose Shadow Scan", () => {
38
+ let r;
39
+ beforeEach(() => { r = setup(); writeFileSync(join(r, "package.json"), JSON.stringify({ name: "test", dependencies: { typescript: "5.0.0", react: "18.0.0" } }), "utf8"); });
40
+ afterEach(() => cleanup(r));
41
+ it("extracts title-cased + package-shaped + acronym entities", () => {
42
+ const ents = extractEntities("WraithMonitor handles tracing via wraith-utils-2099 with ACME-Lib 3.0");
43
+ const surfaces = ents.map((e) => e.surface);
44
+ expect(surfaces).toContain("WraithMonitor");
45
+ expect(surfaces.some((s) => s.startsWith("wraith-utils"))).toBe(true);
46
+ });
47
+ it("catches fake package-shape with digits + no citation", () => {
48
+ const r1 = proseScan(r, "wraith-utils-2099 is integrated for caching across services");
49
+ const wraith = r1.suspects.find((s) => s.entity.toLowerCase().includes("wraith"));
50
+ expect(wraith).toBeDefined();
51
+ expect(wraith.confidence).toBeGreaterThanOrEqual(0.8);
52
+ });
53
+ it("recognizes known-real services (whitelists them)", () => {
54
+ const r1 = proseScan(r, "We use Sentry for error tracking and Datadog for APM");
55
+ expect(r1.recognized.length).toBeGreaterThan(0);
56
+ expect(r1.suspects.find((s) => s.entity.toLowerCase() === "sentry")).toBeUndefined();
57
+ });
58
+ it("flags title-cased unknowns with no citation", () => {
59
+ const r1 = proseScan(r, "FakeyMcFakeFace is our production OAuth library");
60
+ expect(r1.suspects.find((s) => s.entity.includes("FakeyMcFake"))).toBeDefined();
61
+ });
62
+ it("does NOT flag real deps", () => {
63
+ const r1 = proseScan(r, "TypeScript handles our types and React renders the UI");
64
+ // Both are in KNOWN_REAL_NAMES; should be recognized not suspected.
65
+ expect(r1.suspects.length).toBe(0);
66
+ });
67
+ });
68
+ // ─── H2 CROSS-CITATION GROUND ────────────────────────────────────────
69
+ describe("v1.69 Hyperscan H2 · Cross-Citation Ground", () => {
70
+ let r;
71
+ beforeEach(() => { r = setup(); });
72
+ afterEach(() => cleanup(r));
73
+ it("parses triples from prose", () => {
74
+ const tr = parseTriples("auth.ts handles login and billing.ts implements charging");
75
+ expect(tr.length).toBeGreaterThanOrEqual(2);
76
+ expect(tr[0]?.subject).toContain("auth");
77
+ });
78
+ it("flags citation gap when files don't exist", () => {
79
+ const r1 = crossCitationGround(r, "PhantomMonitor handles distributed tracing across services");
80
+ expect(r1.gaps).toBeGreaterThanOrEqual(0);
81
+ expect(r1.groundScore).toBeLessThanOrEqual(1);
82
+ });
83
+ it("grounds when subject + object co-occur in source", () => {
84
+ writeFileSync(join(r, "auth.ts"), "// auth login bcrypt handler\nexport function login() {}\n", "utf8");
85
+ const r1 = crossCitationGround(r, "auth.ts handles login routing for users");
86
+ expect(r1.groundScore).toBeGreaterThan(0);
87
+ });
88
+ });
89
+ // ─── H3 CROSS-SOURCE Q&A FUSION ──────────────────────────────────────
90
+ describe("v1.69 Hyperscan H3 · Cross-Source Q&A Fusion", () => {
91
+ let r;
92
+ beforeEach(() => { r = setup(); });
93
+ afterEach(() => cleanup(r));
94
+ it("fuses retrieval across multiple sources", () => {
95
+ initGit(r, [
96
+ { path: "README.md", content: "# Project\n\nHTC compression cuts token spend by 100x via three-layer pre-compression of git history into LLM-consumable form.\n" },
97
+ { path: "CHANGELOG.md", content: "## [1.0.0]\n- Added HTC compression for git history\n" },
98
+ { path: "package.json", content: JSON.stringify({ name: "p", description: "HTC-powered memory layer." }) },
99
+ { path: "htc.ts", content: "/**\n * HTC: hierarchical token cache for compressing commit history.\n */\nexport const x = 1;\n" },
100
+ ], ["feat: add HTC compression"]);
101
+ const r1 = crossSourceAsk(r, "what is HTC compression and how does it work");
102
+ expect(r1.sourcesPresent.length).toBeGreaterThanOrEqual(2);
103
+ expect(["MEDIUM", "HIGH"]).toContain(r1.trustLabel);
104
+ expect(r1.fusedAnswer).toContain("HTC");
105
+ });
106
+ it("reports LOW trust when nothing matches", () => {
107
+ initGit(r, [{ path: "README.md", content: "Only generic stuff here." }], ["initial"]);
108
+ const r1 = crossSourceAsk(r, "what is fooBarBaz compression");
109
+ expect(r1.trustLabel).toBe("LOW");
110
+ });
111
+ });
112
+ // ─── H4 NUCLEUS DUST HTC ─────────────────────────────────────────────
113
+ describe("v1.69 Hyperscan H4 · Nucleus Dust HTC", () => {
114
+ let r;
115
+ beforeEach(() => { r = setup(); });
116
+ afterEach(() => cleanup(r));
117
+ it("generates abstracts for commits + file docstrings", () => {
118
+ initGit(r, [
119
+ { path: "src/foo.ts", content: "/**\n * Foo module: does the foo thing.\n */\nexport const x = 1;\n" },
120
+ { path: "src/bar.ts", content: "/**\n * Bar module: handles bars.\n */\nexport const y = 2;\n" },
121
+ ], ["feat(foo): add foo", "feat(bar): add bar", "fix: tidy"]);
122
+ const { added } = generateDust(r);
123
+ expect(added).toBeGreaterThanOrEqual(2);
124
+ const abstracts = readAbstracts(r);
125
+ expect(abstracts.length).toBeGreaterThanOrEqual(2);
126
+ });
127
+ it("coverage increases after dust generation", () => {
128
+ initGit(r, [{ path: "src/foo.ts", content: "/** Foo. */\nexport const x = 1;\n" }], ["feat: foo"]);
129
+ const before = computeCoverage(r).coveragePct;
130
+ generateDust(r);
131
+ const after = computeCoverage(r).coveragePct;
132
+ expect(after).toBeGreaterThanOrEqual(before);
133
+ expect(after).toBeGreaterThan(0);
134
+ });
135
+ it("idempotent: re-running adds 0", () => {
136
+ initGit(r, [{ path: "src/foo.ts", content: "/** Foo. */\nexport const x = 1;\n" }], ["feat: foo"]);
137
+ generateDust(r);
138
+ const second = generateDust(r);
139
+ expect(second.added).toBe(0);
140
+ });
141
+ it("clusterDust groups similar abstracts", () => {
142
+ initGit(r, [], ["feat(auth): add login", "feat(auth): add logout", "fix(auth): retry", "feat(billing): stripe"]);
143
+ generateDust(r);
144
+ const clusters = clusterDust(r);
145
+ expect(clusters.length).toBeGreaterThan(0);
146
+ });
147
+ });
148
+ // ─── HYPERSCAN MOLECULE ──────────────────────────────────────────────
149
+ describe("v1.69 Hyperscan · Shape-shifting Molecule", () => {
150
+ it("builds a molecule with 4 forms", () => {
151
+ const m = buildMolecule({
152
+ text: "function login() handles auth via bcrypt at src/auth.ts",
153
+ source: { kind: "commit", ref: "abc123" },
154
+ epoch: "2026-01-01T00:00:00Z",
155
+ });
156
+ expect(m.textForm).toContain("login");
157
+ expect(m.vectorForm.size).toBeGreaterThan(0);
158
+ expect(m.structuralForm.functions).toContain("login");
159
+ expect(m.structuralForm.paths.some((p) => p.endsWith(".ts"))).toBe(true);
160
+ expect(m.temporalForm.epoch).toBe("2026-01-01T00:00:00Z");
161
+ });
162
+ it("query with cosine ranks by vector similarity", () => {
163
+ const mA = buildMolecule({ text: "auth bcrypt login flow", source: { kind: "commit", ref: "a" } });
164
+ const mB = buildMolecule({ text: "billing stripe charge", source: { kind: "commit", ref: "b" } });
165
+ const result = query([mA, mB], "cosine", { text: "auth login" });
166
+ expect(result[0]?.molecule.id).toBe(mA.id);
167
+ });
168
+ it("query with structural ranks by AST shape overlap", () => {
169
+ const mA = buildMolecule({ text: "function login() at src/auth.ts", source: { kind: "commit", ref: "a" } });
170
+ const mB = buildMolecule({ text: "class Billing in billing.js", source: { kind: "commit", ref: "b" } });
171
+ const result = query([mA, mB], "structural", { text: "function login() at src/auth.ts" });
172
+ expect(result[0]?.molecule.id).toBe(mA.id);
173
+ });
174
+ it("query with hybrid fuses 4 algorithm scores", () => {
175
+ const m1 = buildMolecule({ text: "auth login bcrypt secure flow", source: { kind: "commit", ref: "a" } });
176
+ const m2 = buildMolecule({ text: "billing stripe payment processing", source: { kind: "commit", ref: "b" } });
177
+ const result = query([m1, m2], "hybrid", { text: "auth login bcrypt" });
178
+ expect(result[0]?.molecule.id).toBe(m1.id);
179
+ expect(result[0]?.scores.cosine).toBeDefined();
180
+ expect(result[0]?.scores.jaccard).toBeDefined();
181
+ expect(result[0]?.scores.structural).toBeDefined();
182
+ });
183
+ it("query with temporal ranks by epoch closeness", () => {
184
+ const target = "2026-05-12T00:00:00Z";
185
+ const close = buildMolecule({ text: "x", source: { kind: "c", ref: "1" }, epoch: "2026-05-11T00:00:00Z" });
186
+ const far = buildMolecule({ text: "x", source: { kind: "c", ref: "2" }, epoch: "2020-01-01T00:00:00Z" });
187
+ const result = query([close, far], "temporal", { epoch: target });
188
+ expect(result[0]?.molecule.id).toBe(close.id);
189
+ });
190
+ });
191
+ //# sourceMappingURL=hyperscan.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hyperscan.test.js","sourceRoot":"","sources":["../../src/hyperscan/hyperscan.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * v1.69.0 -- HYPERSCAN MOLECULE (shape-shifting data structure).
3
+ *
4
+ * The wild bit: a single MOLECULE holds FOUR orthogonal forms of one
5
+ * piece of knowledge. The caller asks for whichever FORM best
6
+ * matches their query class -- the molecule "shape-shifts" without
7
+ * recomputation.
8
+ *
9
+ * textForm plain-English summary (~30 tokens)
10
+ * vectorForm bag-of-words vector for cosine retrieval
11
+ * structuralForm AST-shape signature (functions / paths / symbols)
12
+ * temporalForm commit-chain neighborhood (predecessor / successor SHAs)
13
+ *
14
+ * "Mix algorithm สุดโต่ง": at query time the caller picks ONE of N
15
+ * retrieval algorithms (Jaccard / cosine / structural-match /
16
+ * temporal-distance / hybrid-weighted) and the molecule emits the
17
+ * matching form. Different forms NEVER recomputed -- pre-built.
18
+ *
19
+ * This is the data structure the user asked for: "โมเลกุลใหม่
20
+ * มารองรับ" + "การสลับร่างแปลงร่าง" + "mix algorithm บ้าๆสุดโต่ง".
21
+ */
22
+ export type MoleculeForm = "text" | "vector" | "structural" | "temporal";
23
+ export interface HyperscanMolecule {
24
+ id: string;
25
+ /** Plain-English summary. */
26
+ textForm: string;
27
+ /** Bag-of-words vector: word -> count. */
28
+ vectorForm: Map<string, number>;
29
+ /** AST-shape signature: {functions, classes, paths, symbols}. */
30
+ structuralForm: {
31
+ functions: string[];
32
+ classes: string[];
33
+ paths: string[];
34
+ symbols: string[];
35
+ };
36
+ /** Temporal links to neighboring molecules. */
37
+ temporalForm: {
38
+ predecessors: string[];
39
+ successors: string[];
40
+ epoch: string;
41
+ };
42
+ /** Source provenance. */
43
+ source: {
44
+ kind: string;
45
+ ref: string;
46
+ };
47
+ }
48
+ export interface BuildMoleculeInput {
49
+ text: string;
50
+ source: {
51
+ kind: string;
52
+ ref: string;
53
+ };
54
+ epoch?: string;
55
+ predecessors?: string[];
56
+ successors?: string[];
57
+ }
58
+ /** Build a molecule from a text excerpt + provenance. */
59
+ export declare function buildMolecule(input: BuildMoleculeInput): HyperscanMolecule;
60
+ export type RetrievalAlgo = "jaccard" | "cosine" | "structural" | "temporal" | "hybrid";
61
+ export interface QueryInput {
62
+ text?: string;
63
+ epoch?: string;
64
+ }
65
+ export interface MoleculeMatch {
66
+ molecule: HyperscanMolecule;
67
+ /** Per-algo scores; populated when caller asked for hybrid. */
68
+ scores: Partial<Record<RetrievalAlgo, number>>;
69
+ /** Final fused score the caller will rank by. */
70
+ finalScore: number;
71
+ }
72
+ /** Query a corpus of molecules using one of N retrieval algorithms.
73
+ * "hybrid" fuses cosine + jaccard + structural + temporal via the
74
+ * ALGO_WEIGHTS mix (the wild algorithm-mix the user requested). */
75
+ export declare function query(molecules: HyperscanMolecule[], algo: RetrievalAlgo, q: QueryInput): MoleculeMatch[];
76
+ //# sourceMappingURL=hyperscan_molecule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hyperscan_molecule.d.ts","sourceRoot":"","sources":["../../src/hyperscan/hyperscan_molecule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,CAAC;AAEzE,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,iEAAiE;IACjE,cAAc,EAAE;QACd,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,+CAA+C;IAC/C,YAAY,EAAE;QACZ,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,yBAAyB;IACzB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACvC;AA6BD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,yDAAyD;AACzD,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,iBAAiB,CAc1E;AAyCD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;AAExF,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,+DAA+D;IAC/D,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/C,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;CACpB;AAUD;;oEAEoE;AACpE,wBAAgB,KAAK,CACnB,SAAS,EAAE,iBAAiB,EAAE,EAC9B,IAAI,EAAE,aAAa,EACnB,CAAC,EAAE,UAAU,GACZ,aAAa,EAAE,CA0BjB"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * v1.69.0 -- HYPERSCAN MOLECULE (shape-shifting data structure).
3
+ *
4
+ * The wild bit: a single MOLECULE holds FOUR orthogonal forms of one
5
+ * piece of knowledge. The caller asks for whichever FORM best
6
+ * matches their query class -- the molecule "shape-shifts" without
7
+ * recomputation.
8
+ *
9
+ * textForm plain-English summary (~30 tokens)
10
+ * vectorForm bag-of-words vector for cosine retrieval
11
+ * structuralForm AST-shape signature (functions / paths / symbols)
12
+ * temporalForm commit-chain neighborhood (predecessor / successor SHAs)
13
+ *
14
+ * "Mix algorithm สุดโต่ง": at query time the caller picks ONE of N
15
+ * retrieval algorithms (Jaccard / cosine / structural-match /
16
+ * temporal-distance / hybrid-weighted) and the molecule emits the
17
+ * matching form. Different forms NEVER recomputed -- pre-built.
18
+ *
19
+ * This is the data structure the user asked for: "โมเลกุลใหม่
20
+ * มารองรับ" + "การสลับร่างแปลงร่าง" + "mix algorithm บ้าๆสุดโต่ง".
21
+ */
22
+ import { createHash } from "node:crypto";
23
+ const STOPWORDS = new Set([
24
+ "the", "and", "for", "with", "this", "that", "from", "into", "when",
25
+ "function", "const", "var", "let", "true", "false", "null", "return", "import", "export",
26
+ ]);
27
+ function bagOfWords(text) {
28
+ const out = new Map();
29
+ for (const t of text.toLowerCase().replace(/[^a-z0-9_\s]/g, " ").split(/\s+/)) {
30
+ if (t.length < 3 || STOPWORDS.has(t))
31
+ continue;
32
+ out.set(t, (out.get(t) ?? 0) + 1);
33
+ }
34
+ return out;
35
+ }
36
+ function extractStructural(text) {
37
+ const functions = [...text.matchAll(/\b(?:function\s+)?(\w{3,})\s*\(/g)].map((m) => m[1]).filter((x) => !!x);
38
+ const classes = [...text.matchAll(/\bclass\s+(\w{2,})/g)].map((m) => m[1]);
39
+ const paths = [...text.matchAll(/[\w./_-]+\.(?:ts|tsx|js|mjs|cjs|jsx|json|md|sql|yml|yaml|py|rs|go)/g)].map((m) => m[0]);
40
+ const symbols = [...text.matchAll(/\b[A-Z][A-Z_]{2,}\b/g)].map((m) => m[0]);
41
+ return {
42
+ functions: [...new Set(functions)].slice(0, 10),
43
+ classes: [...new Set(classes)].slice(0, 10),
44
+ paths: [...new Set(paths)].slice(0, 10),
45
+ symbols: [...new Set(symbols)].slice(0, 10),
46
+ };
47
+ }
48
+ /** Build a molecule from a text excerpt + provenance. */
49
+ export function buildMolecule(input) {
50
+ const id = createHash("sha256").update(`${input.source.kind}|${input.source.ref}|${input.text}`).digest("hex").slice(0, 16);
51
+ return {
52
+ id,
53
+ textForm: input.text.slice(0, 280),
54
+ vectorForm: bagOfWords(input.text),
55
+ structuralForm: extractStructural(input.text),
56
+ temporalForm: {
57
+ predecessors: input.predecessors ?? [],
58
+ successors: input.successors ?? [],
59
+ epoch: input.epoch ?? "",
60
+ },
61
+ source: input.source,
62
+ };
63
+ }
64
+ // ─── Retrieval algorithms (the "mix") ────────────────────────────────
65
+ function cosine(a, b) {
66
+ let dot = 0, na = 0, nb = 0;
67
+ for (const [t, c] of a) {
68
+ na += c * c;
69
+ if (b.has(t))
70
+ dot += c * b.get(t);
71
+ }
72
+ for (const [, c] of b)
73
+ nb += c * c;
74
+ return (na === 0 || nb === 0) ? 0 : dot / Math.sqrt(na * nb);
75
+ }
76
+ function jaccard(a, b) {
77
+ if (a.size === 0 || b.size === 0)
78
+ return 0;
79
+ let inter = 0;
80
+ for (const x of a)
81
+ if (b.has(x))
82
+ inter += 1;
83
+ return inter / (a.size + b.size - inter);
84
+ }
85
+ function structuralMatch(query, mol) {
86
+ let total = 0, matched = 0;
87
+ for (const key of ["functions", "classes", "paths", "symbols"]) {
88
+ const q = new Set(query[key]);
89
+ const m = new Set(mol[key]);
90
+ total += Math.max(q.size, m.size);
91
+ matched += [...q].filter((x) => m.has(x)).length;
92
+ }
93
+ return total === 0 ? 0 : matched / total;
94
+ }
95
+ function temporalDistance(queryEpoch, mol) {
96
+ if (!queryEpoch || !mol.temporalForm.epoch)
97
+ return 0;
98
+ const dt = Math.abs(Date.parse(queryEpoch) - Date.parse(mol.temporalForm.epoch));
99
+ if (!Number.isFinite(dt))
100
+ return 0;
101
+ // Score: closer in time -> higher.
102
+ const days = dt / 86400000;
103
+ return 1 / (1 + days / 30); // half-life ~30 days
104
+ }
105
+ const ALGO_WEIGHTS = {
106
+ cosine: 0.35,
107
+ jaccard: 0.25,
108
+ structural: 0.25,
109
+ temporal: 0.15,
110
+ hybrid: 0, // not used; placeholder
111
+ };
112
+ /** Query a corpus of molecules using one of N retrieval algorithms.
113
+ * "hybrid" fuses cosine + jaccard + structural + temporal via the
114
+ * ALGO_WEIGHTS mix (the wild algorithm-mix the user requested). */
115
+ export function query(molecules, algo, q) {
116
+ const queryVec = q.text ? bagOfWords(q.text) : new Map();
117
+ const queryTokens = new Set(queryVec.keys());
118
+ const queryStructural = q.text ? extractStructural(q.text) : { functions: [], classes: [], paths: [], symbols: [] };
119
+ const matches = molecules.map((mol) => {
120
+ const molTokens = new Set(mol.vectorForm.keys());
121
+ const scores = {};
122
+ if (algo === "cosine" || algo === "hybrid")
123
+ scores.cosine = cosine(queryVec, mol.vectorForm);
124
+ if (algo === "jaccard" || algo === "hybrid")
125
+ scores.jaccard = jaccard(queryTokens, molTokens);
126
+ if (algo === "structural" || algo === "hybrid")
127
+ scores.structural = structuralMatch(queryStructural, mol.structuralForm);
128
+ if (algo === "temporal" || algo === "hybrid")
129
+ scores.temporal = temporalDistance(q.epoch ?? "", mol);
130
+ let finalScore = 0;
131
+ if (algo === "hybrid") {
132
+ for (const a of ["cosine", "jaccard", "structural", "temporal"]) {
133
+ finalScore += (scores[a] ?? 0) * ALGO_WEIGHTS[a];
134
+ }
135
+ }
136
+ else {
137
+ finalScore = scores[algo] ?? 0;
138
+ }
139
+ return { molecule: mol, scores, finalScore };
140
+ });
141
+ matches.sort((a, b) => b.finalScore - a.finalScore);
142
+ return matches;
143
+ }
144
+ //# sourceMappingURL=hyperscan_molecule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hyperscan_molecule.js","sourceRoot":"","sources":["../../src/hyperscan/hyperscan_molecule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * v1.69.0 -- HYPERSCAN PROTOCOL.
3
+ *
4
+ * Four wild moves to close the prose-scan gap + Q&A trust gap +
5
+ * HTC coverage gap. Plus a shape-shifting molecule data structure
6
+ * that supports 5 mixed retrieval algorithms.
7
+ *
8
+ * H1 prose shadow scan entity extraction from prose claims
9
+ * H2 cross-citation every named entity needs codebase evidence
10
+ * H3 cross-source Q&A fuse retrieval across 5 source kinds
11
+ * H4 nucleus dust HTC auto-populate HTC coverage 0% -> ~100%
12
+ * MOLECULE text/vector/structural/temporal forms
13
+ */
14
+ export * as proseShadow from "./prose_shadow.js";
15
+ export * as crossCitation from "./cross_citation.js";
16
+ export * as crossSourceQa from "./cross_source_qa.js";
17
+ export * as nucleusDustHtc from "./nucleus_dust_htc.js";
18
+ export * as hyperscanMolecule from "./hyperscan_molecule.js";
19
+ export * as bench from "./bench.js";
20
+ export { proseScan, extractEntities } from "./prose_shadow.js";
21
+ export { crossCitationGround, parseTriples } from "./cross_citation.js";
22
+ export { crossSourceAsk } from "./cross_source_qa.js";
23
+ export { generateDust, computeCoverage, clusterDust, readAbstracts } from "./nucleus_dust_htc.js";
24
+ export { buildMolecule, query, type HyperscanMolecule, type RetrievalAlgo, type MoleculeMatch } from "./hyperscan_molecule.js";
25
+ export { runHyperscanBench, renderBench } from "./bench.js";
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hyperscan/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,aAAa,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,iBAAiB,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC/H,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * v1.69.0 -- HYPERSCAN PROTOCOL.
3
+ *
4
+ * Four wild moves to close the prose-scan gap + Q&A trust gap +
5
+ * HTC coverage gap. Plus a shape-shifting molecule data structure
6
+ * that supports 5 mixed retrieval algorithms.
7
+ *
8
+ * H1 prose shadow scan entity extraction from prose claims
9
+ * H2 cross-citation every named entity needs codebase evidence
10
+ * H3 cross-source Q&A fuse retrieval across 5 source kinds
11
+ * H4 nucleus dust HTC auto-populate HTC coverage 0% -> ~100%
12
+ * MOLECULE text/vector/structural/temporal forms
13
+ */
14
+ export * as proseShadow from "./prose_shadow.js";
15
+ export * as crossCitation from "./cross_citation.js";
16
+ export * as crossSourceQa from "./cross_source_qa.js";
17
+ export * as nucleusDustHtc from "./nucleus_dust_htc.js";
18
+ export * as hyperscanMolecule from "./hyperscan_molecule.js";
19
+ export * as bench from "./bench.js";
20
+ export { proseScan, extractEntities } from "./prose_shadow.js";
21
+ export { crossCitationGround, parseTriples } from "./cross_citation.js";
22
+ export { crossSourceAsk } from "./cross_source_qa.js";
23
+ export { generateDust, computeCoverage, clusterDust, readAbstracts } from "./nucleus_dust_htc.js";
24
+ export { buildMolecule, query } from "./hyperscan_molecule.js";
25
+ export { runHyperscanBench, renderBench } from "./bench.js";
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hyperscan/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,aAAa,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,iBAAiB,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,KAAK,EAAkE,MAAM,yBAAyB,CAAC;AAC/H,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * v1.69.0 -- HYPERSCAN H4: NUCLEUS DUST HTC.
3
+ *
4
+ * Wild idea: HTC's coverage is 0% on fresh repos because the user
5
+ * must manually run `htc-build populate Layer 1`. We make it automatic.
6
+ *
7
+ * "Nucleus dust" -- every observable artifact gets compressed into a
8
+ * tiny HTC molecule on the fly, NO manual step. The DUST accumulates
9
+ * silently as Mneme runs.
10
+ *
11
+ * - Every commit subject -> Layer 1 abstract (heuristic, no LLM)
12
+ * - Every file's top docstring -> Layer 1 abstract for the file
13
+ * - Auto-cluster by token-similarity into Layer 2
14
+ * - Concatenate Layer 2 into Layer 3 (memoir) on demand
15
+ *
16
+ * Layer 1 abstracts are HEURISTIC (no LLM call) -- "feat(area): summary"
17
+ * commits already carry their condensation. For prose commits we
18
+ * truncate to 30 tokens. This is a "free path" alternative to the
19
+ * LLM-driven layer.
20
+ *
21
+ * Coverage tracking: total abstracts / (total commits + total source
22
+ * files). Targets >= 80% on any healthy repo.
23
+ */
24
+ export interface DustAbstract {
25
+ /** Stable id: hash of source. */
26
+ id: string;
27
+ /** What got compressed: commit hash, file path, etc. */
28
+ source: {
29
+ kind: "commit" | "file-docstring";
30
+ ref: string;
31
+ };
32
+ /** The abstract text (<=30 tokens). */
33
+ abstract: string;
34
+ /** Estimated token count. */
35
+ tokenCount: number;
36
+ /** ISO ts. */
37
+ generatedAt: string;
38
+ }
39
+ export interface DustCluster {
40
+ clusterId: string;
41
+ /** Topic label inferred from member abstracts. */
42
+ label: string;
43
+ /** Members. */
44
+ memberIds: string[];
45
+ /** Token count of the cluster summary. */
46
+ tokenCount: number;
47
+ }
48
+ export interface CoverageStats {
49
+ totalCommits: number;
50
+ totalFiles: number;
51
+ abstractsGenerated: number;
52
+ coveragePct: number;
53
+ updatedAt: string;
54
+ }
55
+ /** Idempotent: generates abstracts for everything not yet covered. */
56
+ export declare function generateDust(repoRoot: string, opts?: {
57
+ maxCommits?: number;
58
+ maxFiles?: number;
59
+ }): {
60
+ added: number;
61
+ abstracts: DustAbstract[];
62
+ };
63
+ export declare function readAbstracts(repoRoot: string): DustAbstract[];
64
+ /** Compute coverage = abstracts / (commits + source files). */
65
+ export declare function computeCoverage(repoRoot: string): CoverageStats;
66
+ /** Auto-cluster abstracts by token overlap. Lightweight; no LLM. */
67
+ export declare function clusterDust(repoRoot: string, opts?: {
68
+ jaccardThreshold?: number;
69
+ maxClusters?: number;
70
+ }): DustCluster[];
71
+ //# sourceMappingURL=nucleus_dust_htc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nucleus_dust_htc.d.ts","sourceRoot":"","sources":["../../src/hyperscan/nucleus_dust_htc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAYH,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,wDAAwD;IACxD,MAAM,EAAE;QAAE,IAAI,EAAE,QAAQ,GAAG,gBAAgB,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,eAAe;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAqED,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,YAAY,EAAE,CAAA;CAAE,CAsC9I;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CAW9D;AAED,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAoB/D;AAED,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,EAAE,CA4CvH"}