@mneme-ai/core 2.35.0 → 2.36.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/ai_handshake.d.ts +17 -0
  2. package/dist/ai_handshake.d.ts.map +1 -1
  3. package/dist/honest_receipt/index.d.ts +12 -0
  4. package/dist/honest_receipt/index.d.ts.map +1 -0
  5. package/dist/honest_receipt/index.js +10 -0
  6. package/dist/honest_receipt/index.js.map +1 -0
  7. package/dist/honest_receipt/receipt.d.ts +42 -0
  8. package/dist/honest_receipt/receipt.d.ts.map +1 -0
  9. package/dist/honest_receipt/receipt.js +120 -0
  10. package/dist/honest_receipt/receipt.js.map +1 -0
  11. package/dist/honest_receipt/snapshot.d.ts +20 -0
  12. package/dist/honest_receipt/snapshot.d.ts.map +1 -0
  13. package/dist/honest_receipt/snapshot.js +193 -0
  14. package/dist/honest_receipt/snapshot.js.map +1 -0
  15. package/dist/honest_receipt/types.d.ts +60 -0
  16. package/dist/honest_receipt/types.d.ts.map +1 -0
  17. package/dist/honest_receipt/types.js +15 -0
  18. package/dist/honest_receipt/types.js.map +1 -0
  19. package/dist/inbox.d.ts +27 -0
  20. package/dist/inbox.d.ts.map +1 -1
  21. package/dist/index.d.ts +1 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +9 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/pulse.d.ts.map +1 -1
  26. package/dist/squadron/acgv.d.ts.map +1 -1
  27. package/dist/squadron/acgv.js +58 -0
  28. package/dist/squadron/acgv.js.map +1 -1
  29. package/dist/squadron/acgv_explain.d.ts.map +1 -1
  30. package/dist/squadron/acgv_explain.js +26 -0
  31. package/dist/squadron/acgv_explain.js.map +1 -1
  32. package/dist/squadron/acgv_version_semantic.d.ts +50 -0
  33. package/dist/squadron/acgv_version_semantic.d.ts.map +1 -0
  34. package/dist/squadron/acgv_version_semantic.js +123 -0
  35. package/dist/squadron/acgv_version_semantic.js.map +1 -0
  36. package/dist/version_check.d.ts.map +1 -1
  37. package/package.json +1 -1
@@ -0,0 +1,123 @@
1
+ /**
2
+ * v2.36.0 — ACGV Layer 0d: VERSION-SEMANTIC DETECTOR.
3
+ *
4
+ * Closes audit-card bug #1: `mneme verify "Mneme v2.28.1 introduces X"`
5
+ * → REFUTED 57% when repo has moved on to v2.35.0+. The verifier was
6
+ * "correct" but the semantics were wrong — the claim is HISTORICAL,
7
+ * not a present-tense assertion about the current state. Refuting it
8
+ * by comparing against the current state is a category error.
9
+ *
10
+ * Layer 0d scans for `Mneme vN.M.P` / `version N.M.P` patterns + compares
11
+ * to the currently installed version. Three classes:
12
+ *
13
+ * current — claim version == installed version → pass through normally
14
+ * historical — claim version < installed → HISTORICAL_CLAIM caveat
15
+ * + advisory verdict
16
+ * future — claim version > installed → FUTURE_VERSION_CLAIM caveat
17
+ * + needs-data verdict
18
+ *
19
+ * No regex on version-less claims — pure no-op when no version pattern
20
+ * matches, so this layer is invisible for the 99% case.
21
+ *
22
+ * Wrapped in defensive try/catch — version parsing failures NEVER
23
+ * throw, they downgrade to "unknown" + skip the layer.
24
+ */
25
+ import { readFileSync, existsSync } from "node:fs";
26
+ import { join } from "node:path";
27
+ // Matches "v1.2.3", "version 1.2.3", "Mneme v1.2.3", "Mneme 1.2.3"
28
+ // Word-boundary on left + lookahead on right so we don't match middle of longer hex.
29
+ const VERSION_RX = /(?<![\w.])(?:[Vv]|version\s+|[Mm]neme\s+v?)?\s*(\d{1,3})\.(\d{1,3})\.(\d{1,3})(?![\w.])/g;
30
+ function safeReadInstalledVersion(repoRoot) {
31
+ // Try multiple candidate paths in priority order so we cover both
32
+ // npm-installed + monorepo + global-link scenarios.
33
+ const candidates = [
34
+ join(repoRoot, "node_modules", "mneme-ai", "package.json"),
35
+ join(repoRoot, "package.json"),
36
+ join(repoRoot, "packages", "cli", "package.json"),
37
+ ];
38
+ for (const p of candidates) {
39
+ if (!existsSync(p))
40
+ continue;
41
+ try {
42
+ const obj = JSON.parse(readFileSync(p, "utf8"));
43
+ // Only accept package.json entries that look like Mneme's.
44
+ if (typeof obj.version !== "string")
45
+ continue;
46
+ if (obj.name && !/(^|@)mneme-ai|^@mneme-ai\//.test(obj.name))
47
+ continue;
48
+ return obj.version;
49
+ }
50
+ catch { /* try next */ }
51
+ }
52
+ return null;
53
+ }
54
+ function compareVersions(a, b) {
55
+ if (a.major !== b.major)
56
+ return a.major - b.major;
57
+ if (a.minor !== b.minor)
58
+ return a.minor - b.minor;
59
+ return a.patch - b.patch;
60
+ }
61
+ export function classifyMatch(m, installed) {
62
+ if (!installed)
63
+ return "unknown";
64
+ const parts = installed.split(".").map((s) => parseInt(s, 10));
65
+ if (parts.length !== 3 || parts.some((n) => !Number.isFinite(n)))
66
+ return "unknown";
67
+ const cmp = compareVersions(m, { major: parts[0], minor: parts[1], patch: parts[2] });
68
+ if (cmp === 0)
69
+ return "current";
70
+ return cmp < 0 ? "historical" : "future";
71
+ }
72
+ export function detectVersionSemantic(claim, repoRoot) {
73
+ try {
74
+ const installed = safeReadInstalledVersion(repoRoot);
75
+ const matches = [];
76
+ for (const m of claim.matchAll(VERSION_RX)) {
77
+ const major = parseInt(m[1], 10);
78
+ const minor = parseInt(m[2], 10);
79
+ const patch = parseInt(m[3], 10);
80
+ if (!Number.isFinite(major) || !Number.isFinite(minor) || !Number.isFinite(patch))
81
+ continue;
82
+ matches.push({ matched: m[0].trim(), major, minor, patch, index: m.index ?? 0 });
83
+ }
84
+ if (matches.length === 0) {
85
+ return {
86
+ matched: false, matches: [], installedVersion: installed,
87
+ classification: "unknown",
88
+ reason: "no version pattern detected in claim",
89
+ };
90
+ }
91
+ // Compute classes per match, pick worst (most concerning class).
92
+ const classes = matches.map((m) => classifyMatch(m, installed));
93
+ let dominant = "unknown";
94
+ if (classes.includes("future"))
95
+ dominant = "future";
96
+ else if (classes.includes("historical"))
97
+ dominant = "historical";
98
+ else if (classes.includes("current"))
99
+ dominant = "current";
100
+ return {
101
+ matched: true,
102
+ matches,
103
+ installedVersion: installed,
104
+ classification: dominant,
105
+ reason: dominant === "historical"
106
+ ? `claim cites version(s) PAST → installed ${installed} ahead; refuting against current state would be a category error`
107
+ : dominant === "future"
108
+ ? `claim cites version(s) AHEAD → installed ${installed} is older; cannot verify against state that doesn't exist yet`
109
+ : dominant === "current"
110
+ ? `claim cites current version ${installed}`
111
+ : `unable to determine installed version`,
112
+ };
113
+ }
114
+ catch (e) {
115
+ // Defensive — version parsing must NEVER throw to the caller.
116
+ return {
117
+ matched: false, matches: [], installedVersion: null,
118
+ classification: "unknown",
119
+ reason: `version-semantic detector error (safe fallback): ${e.message}`,
120
+ };
121
+ }
122
+ }
123
+ //# sourceMappingURL=acgv_version_semantic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acgv_version_semantic.js","sourceRoot":"","sources":["../../src/squadron/acgv_version_semantic.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"version_check.d.ts","sourceRoot":"","sources":["../src/version_check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAa7C;AAUD,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,oDAAoD;IACpD,eAAe,EAAE,OAAO,CAAC;IACzB,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,SAAS,EAAE,OAAO,CAAC;IACnB,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAmBD;;;;;;;;;;6BAU6B;AAC7B,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAYpG;AA+DD;kEACkE;AAClE,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAsBtD;AA4BD,8EAA8E;AAC9E,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA6ExG;AAED;mEACmE;AACnE,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAW1G"}
1
+ {"version":3,"file":"version_check.d.ts","sourceRoot":"","sources":["../src/version_check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAa7C;AAUD,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,oDAAoD;IACpD,eAAe,EAAE,OAAO,CAAC;IACzB,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,SAAS,EAAE,OAAO,CAAC;IACnB,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAmBD;;;;;;;;;;6BAU6B;AAC7B,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAYpG;AA+DD;kEACkE;AAClE,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAsBtD;AA4BD,8EAA8E;AAC9E,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAoFxG;AAED;mEACmE;AACnE,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAW1G"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mneme-ai/core",
3
- "version": "2.35.0",
3
+ "version": "2.36.0",
4
4
  "description": "Core indexing, retrieval, and graph engine for Mneme",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",