@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.
- package/dist/ai_handshake.d.ts +17 -0
- package/dist/ai_handshake.d.ts.map +1 -1
- package/dist/honest_receipt/index.d.ts +12 -0
- package/dist/honest_receipt/index.d.ts.map +1 -0
- package/dist/honest_receipt/index.js +10 -0
- package/dist/honest_receipt/index.js.map +1 -0
- package/dist/honest_receipt/receipt.d.ts +42 -0
- package/dist/honest_receipt/receipt.d.ts.map +1 -0
- package/dist/honest_receipt/receipt.js +120 -0
- package/dist/honest_receipt/receipt.js.map +1 -0
- package/dist/honest_receipt/snapshot.d.ts +20 -0
- package/dist/honest_receipt/snapshot.d.ts.map +1 -0
- package/dist/honest_receipt/snapshot.js +193 -0
- package/dist/honest_receipt/snapshot.js.map +1 -0
- package/dist/honest_receipt/types.d.ts +60 -0
- package/dist/honest_receipt/types.d.ts.map +1 -0
- package/dist/honest_receipt/types.js +15 -0
- package/dist/honest_receipt/types.js.map +1 -0
- package/dist/inbox.d.ts +27 -0
- package/dist/inbox.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/pulse.d.ts.map +1 -1
- package/dist/squadron/acgv.d.ts.map +1 -1
- package/dist/squadron/acgv.js +58 -0
- package/dist/squadron/acgv.js.map +1 -1
- package/dist/squadron/acgv_explain.d.ts.map +1 -1
- package/dist/squadron/acgv_explain.js +26 -0
- package/dist/squadron/acgv_explain.js.map +1 -1
- package/dist/squadron/acgv_version_semantic.d.ts +50 -0
- package/dist/squadron/acgv_version_semantic.d.ts.map +1 -0
- package/dist/squadron/acgv_version_semantic.js +123 -0
- package/dist/squadron/acgv_version_semantic.js.map +1 -0
- package/dist/version_check.d.ts.map +1 -1
- 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,
|
|
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"}
|