@mneme-ai/core 2.24.0 → 2.26.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 (53) hide show
  1. package/dist/codegraph/builder.d.ts +27 -0
  2. package/dist/codegraph/builder.d.ts.map +1 -0
  3. package/dist/codegraph/builder.js +309 -0
  4. package/dist/codegraph/builder.js.map +1 -0
  5. package/dist/codegraph/codegraph.test.d.ts +2 -0
  6. package/dist/codegraph/codegraph.test.d.ts.map +1 -0
  7. package/dist/codegraph/codegraph.test.js +179 -0
  8. package/dist/codegraph/codegraph.test.js.map +1 -0
  9. package/dist/codegraph/drift.d.ts +27 -0
  10. package/dist/codegraph/drift.d.ts.map +1 -0
  11. package/dist/codegraph/drift.js +126 -0
  12. package/dist/codegraph/drift.js.map +1 -0
  13. package/dist/codegraph/index.d.ts +10 -0
  14. package/dist/codegraph/index.d.ts.map +1 -0
  15. package/dist/codegraph/index.js +10 -0
  16. package/dist/codegraph/index.js.map +1 -0
  17. package/dist/codegraph/merkle.d.ts +40 -0
  18. package/dist/codegraph/merkle.d.ts.map +1 -0
  19. package/dist/codegraph/merkle.js +68 -0
  20. package/dist/codegraph/merkle.js.map +1 -0
  21. package/dist/codegraph/query.d.ts +14 -0
  22. package/dist/codegraph/query.d.ts.map +1 -0
  23. package/dist/codegraph/query.js +56 -0
  24. package/dist/codegraph/query.js.map +1 -0
  25. package/dist/codegraph/store.d.ts +37 -0
  26. package/dist/codegraph/store.d.ts.map +1 -0
  27. package/dist/codegraph/store.js +133 -0
  28. package/dist/codegraph/store.js.map +1 -0
  29. package/dist/codegraph/types.d.ts +140 -0
  30. package/dist/codegraph/types.d.ts.map +1 -0
  31. package/dist/codegraph/types.js +39 -0
  32. package/dist/codegraph/types.js.map +1 -0
  33. package/dist/index.d.ts +2 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +17 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/tune/engine.d.ts +40 -0
  38. package/dist/tune/engine.d.ts.map +1 -0
  39. package/dist/tune/engine.js +598 -0
  40. package/dist/tune/engine.js.map +1 -0
  41. package/dist/tune/index.d.ts +6 -0
  42. package/dist/tune/index.d.ts.map +1 -0
  43. package/dist/tune/index.js +6 -0
  44. package/dist/tune/index.js.map +1 -0
  45. package/dist/tune/tune.test.d.ts +2 -0
  46. package/dist/tune/tune.test.d.ts.map +1 -0
  47. package/dist/tune/tune.test.js +58 -0
  48. package/dist/tune/tune.test.js.map +1 -0
  49. package/dist/tune/types.d.ts +92 -0
  50. package/dist/tune/types.d.ts.map +1 -0
  51. package/dist/tune/types.js +23 -0
  52. package/dist/tune/types.js.map +1 -0
  53. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tune/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAC/D,UAAU,EAAE,UAAU,EAAE,uBAAuB,GAChD,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tune.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tune.test.d.ts","sourceRoot":"","sources":["../../src/tune/tune.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,58 @@
1
+ // v2.26.0 — PEAK PERFORMANCE GAUNTLET unit tests.
2
+ import { describe, it, expect } from "vitest";
3
+ import { ALL_FINDINGS, suggestFix, verifyCard, __resetTuneChainForTest } from "./index.js";
4
+ describe("tune — finding catalog", () => {
5
+ it("has exactly 12 findings (N1..N12)", () => {
6
+ expect(ALL_FINDINGS.length).toBe(12);
7
+ const ids = new Set(ALL_FINDINGS.map((f) => f.id));
8
+ for (let i = 1; i <= 12; i++)
9
+ expect(ids.has(`N${i}`)).toBe(true);
10
+ });
11
+ it("each finding has title + spec + remediation + probe + sinceVersion", () => {
12
+ for (const f of ALL_FINDINGS) {
13
+ expect(f.title.length).toBeGreaterThan(0);
14
+ expect(f.spec.length).toBeGreaterThan(0);
15
+ expect(Array.isArray(f.remediation)).toBe(true);
16
+ expect(typeof f.probe).toBe("function");
17
+ expect(f.sinceVersion).toMatch(/^v\d/);
18
+ }
19
+ });
20
+ });
21
+ describe("tune — suggestFix", () => {
22
+ it("returns suggestion for every valid id", () => {
23
+ for (let i = 1; i <= 12; i++) {
24
+ const id = `N${i}`;
25
+ const s = suggestFix(id);
26
+ expect(s, `no suggestion for ${id}`).not.toBeNull();
27
+ expect(s.findingId).toBe(id);
28
+ expect(s.steps.length).toBeGreaterThan(0);
29
+ expect(s.commands.length).toBeGreaterThan(0);
30
+ }
31
+ });
32
+ it("returns null for unknown id", () => {
33
+ expect(suggestFix("N99")).toBeNull();
34
+ });
35
+ });
36
+ describe("tune — verifyCard", () => {
37
+ function blank() {
38
+ return {
39
+ spec: { name: "MNEME-PEAK-GAUNTLET", version: "1.0" },
40
+ target: "tmp",
41
+ startedAt: "2026-05-22T00:00:00.000Z",
42
+ finishedAt: "2026-05-22T00:00:01.000Z",
43
+ totalMs: 1000,
44
+ findings: [],
45
+ overall: 50,
46
+ headline: "test",
47
+ trafficLight: "yellow",
48
+ hmac: "deadbeef".repeat(8),
49
+ seq: 1,
50
+ bodyDigest: "feedface".repeat(8),
51
+ };
52
+ }
53
+ it("rejects a card with wrong bodyDigest", () => {
54
+ __resetTuneChainForTest();
55
+ expect(verifyCard(blank()).ok).toBe(false);
56
+ });
57
+ });
58
+ //# sourceMappingURL=tune.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tune.test.js","sourceRoot":"","sources":["../../src/tune/tune.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * v2.26.0 — PEAK PERFORMANCE GAUNTLET / AUTO-OPTIMIZER types.
3
+ *
4
+ * The Gauntlet runs the 12 deep-findings probes (N1-N12) against the
5
+ * live MCP server + scores each 0-10 stars + produces an HMAC-signed
6
+ * scorecard. AI agents can:
7
+ * mneme.tune.run run the probe + emit signed scorecard
8
+ * mneme.tune.report read latest signed card
9
+ * mneme.tune.suggest_fix given a finding id, return remediation
10
+ *
11
+ * Scorecard is HMAC-chained per-run; ledger lives at
12
+ * .mneme/tune/scorecard.jsonl
13
+ * + each full card at .mneme/tune/<seq>-<utc>.json.
14
+ *
15
+ * Each finding has:
16
+ * id — N1 .. N12
17
+ * title — short summary
18
+ * probe — async function that returns { stars, evidence }
19
+ * remediation — list of human-actionable fixes the operator can run
20
+ * sinceVersion — which version first hardened this finding
21
+ */
22
+ export type FindingId = `N${number}`;
23
+ export interface FindingResult {
24
+ /** 0..10 — 10 = best, 0 = critical fail. */
25
+ stars: number;
26
+ /** One-line summary of what we measured. */
27
+ evidence: string;
28
+ /** Optional structured detail (counts, ids, etc). */
29
+ detail?: Record<string, unknown>;
30
+ /** Per-finding duration. */
31
+ dtMs?: number;
32
+ }
33
+ export interface Finding {
34
+ id: FindingId;
35
+ title: string;
36
+ /** Brief spec citation. */
37
+ spec: string;
38
+ /** Which MCP primitive / module fixes this. */
39
+ sinceVersion: string;
40
+ /** Probe function — see engine.ts for the live implementation. */
41
+ probe: (target: ProbeTarget) => Promise<FindingResult>;
42
+ /** Static remediation hints. */
43
+ remediation: string[];
44
+ }
45
+ export interface ProbeTarget {
46
+ /** Working dir for spawn. */
47
+ cwd: string;
48
+ /** Optional spawn command override. */
49
+ cmd?: {
50
+ exe: string;
51
+ args: string[];
52
+ };
53
+ }
54
+ export interface ScoreCard {
55
+ spec: {
56
+ name: "MNEME-PEAK-GAUNTLET";
57
+ version: string;
58
+ };
59
+ target: string;
60
+ startedAt: string;
61
+ finishedAt: string;
62
+ totalMs: number;
63
+ findings: Array<{
64
+ id: FindingId;
65
+ title: string;
66
+ stars: number;
67
+ evidence: string;
68
+ detail?: Record<string, unknown>;
69
+ dtMs?: number;
70
+ sinceVersion: string;
71
+ }>;
72
+ /** Aggregate score 0..100 = avg stars × 10. */
73
+ overall: number;
74
+ /** Headline. */
75
+ headline: string;
76
+ trafficLight: "green" | "yellow" | "red" | "black";
77
+ /** HMAC chain link. */
78
+ hmac: string;
79
+ /** Sequence number. */
80
+ seq: number;
81
+ /** SHA-256 of canonical body (without hmac/seq). */
82
+ bodyDigest: string;
83
+ }
84
+ export interface SuggestedFix {
85
+ findingId: FindingId;
86
+ steps: string[];
87
+ /** Concrete CLI / MCP commands the operator can copy-paste. */
88
+ commands: string[];
89
+ /** Pointer to the source file that ships the fix. */
90
+ sourcePath?: string;
91
+ }
92
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tune/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,MAAM,SAAS,GAAG,IAAI,MAAM,EAAE,CAAC;AAErC,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,SAAS,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACvD,gCAAgC;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,6BAA6B;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,uCAAuC;IACvC,GAAG,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACvC;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE;QAAE,IAAI,EAAE,qBAAqB,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,SAAS,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;IACnD,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * v2.26.0 — PEAK PERFORMANCE GAUNTLET / AUTO-OPTIMIZER types.
3
+ *
4
+ * The Gauntlet runs the 12 deep-findings probes (N1-N12) against the
5
+ * live MCP server + scores each 0-10 stars + produces an HMAC-signed
6
+ * scorecard. AI agents can:
7
+ * mneme.tune.run run the probe + emit signed scorecard
8
+ * mneme.tune.report read latest signed card
9
+ * mneme.tune.suggest_fix given a finding id, return remediation
10
+ *
11
+ * Scorecard is HMAC-chained per-run; ledger lives at
12
+ * .mneme/tune/scorecard.jsonl
13
+ * + each full card at .mneme/tune/<seq>-<utc>.json.
14
+ *
15
+ * Each finding has:
16
+ * id — N1 .. N12
17
+ * title — short summary
18
+ * probe — async function that returns { stars, evidence }
19
+ * remediation — list of human-actionable fixes the operator can run
20
+ * sinceVersion — which version first hardened this finding
21
+ */
22
+ export {};
23
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tune/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mneme-ai/core",
3
- "version": "2.24.0",
3
+ "version": "2.26.0",
4
4
  "description": "Core indexing, retrieval, and graph engine for Mneme",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",