@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.
- package/dist/codegraph/builder.d.ts +27 -0
- package/dist/codegraph/builder.d.ts.map +1 -0
- package/dist/codegraph/builder.js +309 -0
- package/dist/codegraph/builder.js.map +1 -0
- package/dist/codegraph/codegraph.test.d.ts +2 -0
- package/dist/codegraph/codegraph.test.d.ts.map +1 -0
- package/dist/codegraph/codegraph.test.js +179 -0
- package/dist/codegraph/codegraph.test.js.map +1 -0
- package/dist/codegraph/drift.d.ts +27 -0
- package/dist/codegraph/drift.d.ts.map +1 -0
- package/dist/codegraph/drift.js +126 -0
- package/dist/codegraph/drift.js.map +1 -0
- package/dist/codegraph/index.d.ts +10 -0
- package/dist/codegraph/index.d.ts.map +1 -0
- package/dist/codegraph/index.js +10 -0
- package/dist/codegraph/index.js.map +1 -0
- package/dist/codegraph/merkle.d.ts +40 -0
- package/dist/codegraph/merkle.d.ts.map +1 -0
- package/dist/codegraph/merkle.js +68 -0
- package/dist/codegraph/merkle.js.map +1 -0
- package/dist/codegraph/query.d.ts +14 -0
- package/dist/codegraph/query.d.ts.map +1 -0
- package/dist/codegraph/query.js +56 -0
- package/dist/codegraph/query.js.map +1 -0
- package/dist/codegraph/store.d.ts +37 -0
- package/dist/codegraph/store.d.ts.map +1 -0
- package/dist/codegraph/store.js +133 -0
- package/dist/codegraph/store.js.map +1 -0
- package/dist/codegraph/types.d.ts +140 -0
- package/dist/codegraph/types.d.ts.map +1 -0
- package/dist/codegraph/types.js +39 -0
- package/dist/codegraph/types.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -1
- package/dist/tune/engine.d.ts +40 -0
- package/dist/tune/engine.d.ts.map +1 -0
- package/dist/tune/engine.js +598 -0
- package/dist/tune/engine.js.map +1 -0
- package/dist/tune/index.d.ts +6 -0
- package/dist/tune/index.d.ts.map +1 -0
- package/dist/tune/index.js +6 -0
- package/dist/tune/index.js.map +1 -0
- package/dist/tune/tune.test.d.ts +2 -0
- package/dist/tune/tune.test.d.ts.map +1 -0
- package/dist/tune/tune.test.js +58 -0
- package/dist/tune/tune.test.js.map +1 -0
- package/dist/tune/types.d.ts +92 -0
- package/dist/tune/types.d.ts.map +1 -0
- package/dist/tune/types.js +23 -0
- package/dist/tune/types.js.map +1 -0
- 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 @@
|
|
|
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"}
|