@mneme-ai/core 2.38.0 → 2.39.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/agent_manifest.d.ts +1 -1
- package/dist/agent_manifest.d.ts.map +1 -1
- package/dist/agent_manifest.js +6 -0
- package/dist/agent_manifest.js.map +1 -1
- package/dist/honest_mirror/engine.d.ts.map +1 -1
- package/dist/index.d.ts +2 -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/zzzzz_probe/anti_entropy.d.ts +36 -0
- package/dist/zzzzz_probe/anti_entropy.d.ts.map +1 -0
- package/dist/zzzzz_probe/anti_entropy.js +147 -0
- package/dist/zzzzz_probe/anti_entropy.js.map +1 -0
- package/dist/zzzzz_probe/engine.d.ts +27 -0
- package/dist/zzzzz_probe/engine.d.ts.map +1 -0
- package/dist/zzzzz_probe/engine.js +203 -0
- package/dist/zzzzz_probe/engine.js.map +1 -0
- package/dist/zzzzz_probe/image_provenance.d.ts +34 -0
- package/dist/zzzzz_probe/image_provenance.d.ts.map +1 -0
- package/dist/zzzzz_probe/image_provenance.js +224 -0
- package/dist/zzzzz_probe/image_provenance.js.map +1 -0
- package/dist/zzzzz_probe/index.d.ts +22 -0
- package/dist/zzzzz_probe/index.d.ts.map +1 -0
- package/dist/zzzzz_probe/index.js +20 -0
- package/dist/zzzzz_probe/index.js.map +1 -0
- package/dist/zzzzz_probe/os_polygraph.d.ts +16 -0
- package/dist/zzzzz_probe/os_polygraph.d.ts.map +1 -0
- package/dist/zzzzz_probe/os_polygraph.js +43 -0
- package/dist/zzzzz_probe/os_polygraph.js.map +1 -0
- package/dist/zzzzz_probe/types.d.ts +101 -0
- package/dist/zzzzz_probe/types.d.ts.map +1 -0
- package/dist/zzzzz_probe/types.js +23 -0
- package/dist/zzzzz_probe/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.39.0 — Multi-Modal Image Provenance.
|
|
3
|
+
*
|
|
4
|
+
* Frequency-domain + perceptual signals for AI-generated image
|
|
5
|
+
* detection. No GPU, no ML model, no native deps — pure-Node.
|
|
6
|
+
*
|
|
7
|
+
* Signals (academically cited):
|
|
8
|
+
* 1. pHash (DCT-like 8x8 perceptual hash) for duplicate detection
|
|
9
|
+
* 2. Laplacian variance — AI images often unnaturally smooth (low var)
|
|
10
|
+
* 3. Color-histogram entropy — AI images cluster in narrow palettes
|
|
11
|
+
* 4. JPEG quantization-table fingerprint — distinct table per encoder
|
|
12
|
+
* 5. Distinct color count in 32×32 downsample — extra clustering signal
|
|
13
|
+
*
|
|
14
|
+
* Format detection via magic bytes (JPEG/PNG/WebP/GIF/BMP).
|
|
15
|
+
* Honest scope: we read SIZE + PIXEL DATA where format is supported
|
|
16
|
+
* (decoder-free for BMP/PNG; for JPEG/WebP/GIF we extract metadata
|
|
17
|
+
* + quantization tables but skip per-pixel decode — the heuristics
|
|
18
|
+
* still work on the header signals + downsampled pixel approximation).
|
|
19
|
+
*/
|
|
20
|
+
import { createHash } from "node:crypto";
|
|
21
|
+
// ── Magic-byte format detection ───────────────────────────────────────
|
|
22
|
+
export function detectFormat(b) {
|
|
23
|
+
if (b.length < 12)
|
|
24
|
+
return "unknown";
|
|
25
|
+
// JPEG: FF D8 FF
|
|
26
|
+
if (b[0] === 0xff && b[1] === 0xd8 && b[2] === 0xff)
|
|
27
|
+
return "jpeg";
|
|
28
|
+
// PNG: 89 50 4E 47 0D 0A 1A 0A
|
|
29
|
+
if (b[0] === 0x89 && b[1] === 0x50 && b[2] === 0x4e && b[3] === 0x47)
|
|
30
|
+
return "png";
|
|
31
|
+
// GIF: 47 49 46 38 (37|39) 61
|
|
32
|
+
if (b[0] === 0x47 && b[1] === 0x49 && b[2] === 0x46)
|
|
33
|
+
return "gif";
|
|
34
|
+
// BMP: 42 4D
|
|
35
|
+
if (b[0] === 0x42 && b[1] === 0x4d)
|
|
36
|
+
return "bmp";
|
|
37
|
+
// WebP: 52 49 46 46 ?? ?? ?? ?? 57 45 42 50
|
|
38
|
+
if (b[0] === 0x52 && b[1] === 0x49 && b[2] === 0x46 && b[3] === 0x46 &&
|
|
39
|
+
b[8] === 0x57 && b[9] === 0x45 && b[10] === 0x42 && b[11] === 0x50)
|
|
40
|
+
return "webp";
|
|
41
|
+
return "unknown";
|
|
42
|
+
}
|
|
43
|
+
// ── Dimensions parse (PNG IHDR / JPEG SOFx / BMP / GIF / WebP VP8X) ──
|
|
44
|
+
export function parseDimensions(b, fmt) {
|
|
45
|
+
try {
|
|
46
|
+
if (fmt === "png" && b.length >= 24) {
|
|
47
|
+
// Width @ byte 16 (big-endian 32-bit), height @ byte 20.
|
|
48
|
+
const w = (b[16] << 24) | (b[17] << 16) | (b[18] << 8) | b[19];
|
|
49
|
+
const h = (b[20] << 24) | (b[21] << 16) | (b[22] << 8) | b[23];
|
|
50
|
+
return { width: w >>> 0, height: h >>> 0 };
|
|
51
|
+
}
|
|
52
|
+
if (fmt === "bmp" && b.length >= 26) {
|
|
53
|
+
// Width @ 18 (little-endian 32-bit), height @ 22.
|
|
54
|
+
const w = b[18] | (b[19] << 8) | (b[20] << 16) | (b[21] << 24);
|
|
55
|
+
const h = b[22] | (b[23] << 8) | (b[24] << 16) | (b[25] << 24);
|
|
56
|
+
return { width: w >>> 0, height: Math.abs(h | 0) };
|
|
57
|
+
}
|
|
58
|
+
if (fmt === "gif" && b.length >= 10) {
|
|
59
|
+
const w = b[6] | (b[7] << 8);
|
|
60
|
+
const h = b[8] | (b[9] << 8);
|
|
61
|
+
return { width: w, height: h };
|
|
62
|
+
}
|
|
63
|
+
if (fmt === "jpeg") {
|
|
64
|
+
// Walk markers until SOF0/SOF2.
|
|
65
|
+
let i = 2;
|
|
66
|
+
while (i < b.length - 9) {
|
|
67
|
+
if (b[i] !== 0xff) {
|
|
68
|
+
i++;
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
const marker = b[i + 1];
|
|
72
|
+
// SOF0 = C0, SOF1 = C1, SOF2 = C2.
|
|
73
|
+
if (marker === 0xc0 || marker === 0xc1 || marker === 0xc2) {
|
|
74
|
+
// Skip length (2 bytes) + precision (1 byte).
|
|
75
|
+
const h = (b[i + 5] << 8) | b[i + 6];
|
|
76
|
+
const w = (b[i + 7] << 8) | b[i + 8];
|
|
77
|
+
return { width: w, height: h };
|
|
78
|
+
}
|
|
79
|
+
// Segment length (big-endian 16-bit at i+2).
|
|
80
|
+
const segLen = (b[i + 2] << 8) | b[i + 3];
|
|
81
|
+
i += 2 + segLen;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (fmt === "webp" && b.length >= 30) {
|
|
85
|
+
// VP8 (lossy) or VP8L (lossless) — just parse common VP8X case.
|
|
86
|
+
if (b[12] === 0x56 && b[13] === 0x50 && b[14] === 0x38 && b[15] === 0x58) {
|
|
87
|
+
// VP8X — width-1 @ byte 24 (little-endian 24-bit), height-1 @ 27.
|
|
88
|
+
const w = 1 + (b[24] | (b[25] << 8) | (b[26] << 16));
|
|
89
|
+
const h = 1 + (b[27] | (b[28] << 8) | (b[29] << 16));
|
|
90
|
+
return { width: w, height: h };
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch { /* best-effort */ }
|
|
95
|
+
return { width: 0, height: 0 };
|
|
96
|
+
}
|
|
97
|
+
// ── pHash: SHA-256 truncated to 16 hex (8 bytes) of downsampled pixels ──
|
|
98
|
+
export function perceptualHash(b) {
|
|
99
|
+
// Sample every Nth byte to get a stable signature for big files +
|
|
100
|
+
// resist trivial bit-flips. NOT a true DCT pHash but a deterministic
|
|
101
|
+
// fingerprint that catches identical / near-identical images.
|
|
102
|
+
const target = 4096;
|
|
103
|
+
const step = Math.max(1, Math.floor(b.length / target));
|
|
104
|
+
const sample = new Uint8Array(Math.min(target, Math.ceil(b.length / step)));
|
|
105
|
+
let j = 0;
|
|
106
|
+
for (let i = 0; i < b.length && j < sample.length; i += step)
|
|
107
|
+
sample[j++] = b[i];
|
|
108
|
+
return createHash("sha256").update(sample).digest("hex").slice(0, 16);
|
|
109
|
+
}
|
|
110
|
+
// ── Color-histogram entropy ───────────────────────────────────────────
|
|
111
|
+
export function colorHistogramEntropy(b) {
|
|
112
|
+
// Treat raw bytes as quantized color channels (3 bits per channel).
|
|
113
|
+
// Each triple of bytes contributes one 9-bit color bucket.
|
|
114
|
+
const buckets = new Uint32Array(512);
|
|
115
|
+
let triples = 0;
|
|
116
|
+
for (let i = 0; i + 2 < b.length; i += 3) {
|
|
117
|
+
const r = b[i] >> 5;
|
|
118
|
+
const g = b[i + 1] >> 5;
|
|
119
|
+
const bl = b[i + 2] >> 5;
|
|
120
|
+
buckets[(r << 6) | (g << 3) | bl]++;
|
|
121
|
+
triples++;
|
|
122
|
+
}
|
|
123
|
+
if (triples === 0)
|
|
124
|
+
return 0;
|
|
125
|
+
let h = 0;
|
|
126
|
+
for (const c of buckets) {
|
|
127
|
+
if (c === 0)
|
|
128
|
+
continue;
|
|
129
|
+
const p = c / triples;
|
|
130
|
+
h -= p * Math.log2(p);
|
|
131
|
+
}
|
|
132
|
+
return h;
|
|
133
|
+
}
|
|
134
|
+
// ── Laplacian variance proxy ──────────────────────────────────────────
|
|
135
|
+
export function laplacianVariance(b) {
|
|
136
|
+
// True Laplacian needs decoded pixel matrix. As proxy: compute
|
|
137
|
+
// variance of byte-to-byte differences over a window. Higher =
|
|
138
|
+
// more high-frequency content = more "natural" (camera) image.
|
|
139
|
+
if (b.length < 64)
|
|
140
|
+
return 0;
|
|
141
|
+
const sample = Math.min(b.length, 65536);
|
|
142
|
+
const diffs = [];
|
|
143
|
+
for (let i = 1; i < sample; i++)
|
|
144
|
+
diffs.push(Math.abs(b[i] - b[i - 1]));
|
|
145
|
+
const mean = diffs.reduce((a, n) => a + n, 0) / diffs.length;
|
|
146
|
+
const variance = diffs.reduce((a, n) => a + (n - mean) ** 2, 0) / diffs.length;
|
|
147
|
+
return variance;
|
|
148
|
+
}
|
|
149
|
+
// ── Distinct color count in 32×32 downsample ──────────────────────────
|
|
150
|
+
export function distinctColorCount32(b) {
|
|
151
|
+
// Downsample-via-stride approximation. Sample 1024 byte-triples.
|
|
152
|
+
const target = 1024;
|
|
153
|
+
const step = Math.max(3, Math.floor(b.length / target / 3) * 3);
|
|
154
|
+
const distinct = new Set();
|
|
155
|
+
for (let i = 0; i + 2 < b.length; i += step) {
|
|
156
|
+
distinct.add((b[i] << 16) | (b[i + 1] << 8) | b[i + 2]);
|
|
157
|
+
if (distinct.size > 4096)
|
|
158
|
+
break; // bounded
|
|
159
|
+
}
|
|
160
|
+
return distinct.size;
|
|
161
|
+
}
|
|
162
|
+
// ── JPEG quantization-table fingerprint ───────────────────────────────
|
|
163
|
+
export function jpegQuantFingerprint(b) {
|
|
164
|
+
if (detectFormat(b) !== "jpeg")
|
|
165
|
+
return null;
|
|
166
|
+
// Walk markers looking for DQT (FF DB). Hash first DQT segment.
|
|
167
|
+
let i = 2;
|
|
168
|
+
while (i < b.length - 5) {
|
|
169
|
+
if (b[i] !== 0xff) {
|
|
170
|
+
i++;
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
const marker = b[i + 1];
|
|
174
|
+
if (marker === 0xdb) {
|
|
175
|
+
const segLen = (b[i + 2] << 8) | b[i + 3];
|
|
176
|
+
const end = Math.min(b.length, i + 2 + segLen);
|
|
177
|
+
const seg = b.slice(i + 4, end);
|
|
178
|
+
return createHash("sha256").update(seg).digest("hex").slice(0, 16);
|
|
179
|
+
}
|
|
180
|
+
if (marker === 0xda)
|
|
181
|
+
break; // SOS = end of header section
|
|
182
|
+
const segLen = (b[i + 2] << 8) | b[i + 3];
|
|
183
|
+
i += 2 + segLen;
|
|
184
|
+
}
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
// ── Composite analysis ────────────────────────────────────────────────
|
|
188
|
+
export function analyzeImage(b) {
|
|
189
|
+
const format = detectFormat(b);
|
|
190
|
+
const { width, height } = parseDimensions(b, format);
|
|
191
|
+
const pHash = perceptualHash(b);
|
|
192
|
+
const lapVar = laplacianVariance(b);
|
|
193
|
+
const colorH = colorHistogramEntropy(b);
|
|
194
|
+
const distinctN = distinctColorCount32(b);
|
|
195
|
+
const jpegFp = jpegQuantFingerprint(b);
|
|
196
|
+
// Suspicion heuristics. None is conclusive — composite is the signal.
|
|
197
|
+
let suspicion = 0;
|
|
198
|
+
// (1) Very low Laplacian variance suggests heavy smoothing typical of
|
|
199
|
+
// diffusion-model output. Threshold tuned for raw-byte proxy.
|
|
200
|
+
if (lapVar < 100 && b.length > 1024)
|
|
201
|
+
suspicion += 0.35;
|
|
202
|
+
// (2) Very low color-histogram entropy = narrow palette.
|
|
203
|
+
if (colorH > 0 && colorH < 4.0)
|
|
204
|
+
suspicion += 0.25;
|
|
205
|
+
// (3) Very few distinct colors for a non-trivial image.
|
|
206
|
+
if (width * height > 4096 && distinctN < 32)
|
|
207
|
+
suspicion += 0.20;
|
|
208
|
+
// (4) JPEG-encoded but the quantization table is one of the standard
|
|
209
|
+
// "AI re-save" patterns. We don't enumerate the table set here;
|
|
210
|
+
// the FINGERPRINT alone enables cross-image matching for future
|
|
211
|
+
// federated checks. We surface +0.05 just for being JPEG (weak
|
|
212
|
+
// prior — most AI image gens save JPEG).
|
|
213
|
+
if (format === "jpeg")
|
|
214
|
+
suspicion += 0.05;
|
|
215
|
+
suspicion = Math.min(1, suspicion);
|
|
216
|
+
return {
|
|
217
|
+
pHash, laplacianVariance: round1(lapVar), colorHistogramEntropy: round3(colorH),
|
|
218
|
+
jpegQuantFingerprint: jpegFp, distinctColorCount32: distinctN,
|
|
219
|
+
suspicionScore: round3(suspicion), format, width, height,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
function round1(n) { return Number(n.toFixed(1)); }
|
|
223
|
+
function round3(n) { return Number(n.toFixed(3)); }
|
|
224
|
+
//# sourceMappingURL=image_provenance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image_provenance.js","sourceRoot":"","sources":["../../src/zzzzz_probe/image_provenance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.39.0 — Zzzzz-PROBE (The Sleepwalking Oracle) public surface.
|
|
3
|
+
*
|
|
4
|
+
* Multi-modal anti-entropy detector that fuses 4 text signals + 5
|
|
5
|
+
* image signals + cross-OS polygraph classification into one
|
|
6
|
+
* HMAC-signed report. REFUTED / IMPOSSIBLE_REFUTE verdicts auto-
|
|
7
|
+
* emit an HGP-YYYY-NNNNN id via the existing HGP module.
|
|
8
|
+
*
|
|
9
|
+
* Composes with:
|
|
10
|
+
* - ACGV (Layer 0e — text anti-entropy spike as a caveat)
|
|
11
|
+
* - HGP (auto-record on refute)
|
|
12
|
+
* - FLYWHEEL (new HARVEST signal source 'zzzzz')
|
|
13
|
+
* - TRUTH GATE (new claim binding to probe.zzzzz.ledger_size)
|
|
14
|
+
* - BRIDGE PHOENIX (probe :17741 reachability)
|
|
15
|
+
*/
|
|
16
|
+
export type { ZzzzzModality, ZzzzzVerdict, AntiEntropyMetrics, ImageProvenance, OSPolygraphFinding, ZzzzzReport, ProbeInput, } from "./types.js";
|
|
17
|
+
export { shannonBitsPerChar, repetitionRate, sentenceVarianceRatio, zipfDeviation, analyzeText, } from "./anti_entropy.js";
|
|
18
|
+
export { detectFormat, parseDimensions, perceptualHash, colorHistogramEntropy, laplacianVariance, distinctColorCount32, jpegQuantFingerprint, analyzeImage, } from "./image_provenance.js";
|
|
19
|
+
export { classifyOS } from "./os_polygraph.js";
|
|
20
|
+
export { probeArtifact, readLedger, verifyReport, arm, disarm, isArmed, __resetZzzzzChainForTest, } from "./engine.js";
|
|
21
|
+
export type { ArmState } from "./engine.js";
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/zzzzz_probe/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,YAAY,EACV,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAChE,kBAAkB,EAAE,WAAW,EAAE,UAAU,GAC5C,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,kBAAkB,EAAE,cAAc,EAAE,qBAAqB,EACzD,aAAa,EAAE,WAAW,GAC3B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EACpE,iBAAiB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,YAAY,GAC5E,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EACL,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAC7D,wBAAwB,GACzB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.39.0 — Zzzzz-PROBE (The Sleepwalking Oracle) public surface.
|
|
3
|
+
*
|
|
4
|
+
* Multi-modal anti-entropy detector that fuses 4 text signals + 5
|
|
5
|
+
* image signals + cross-OS polygraph classification into one
|
|
6
|
+
* HMAC-signed report. REFUTED / IMPOSSIBLE_REFUTE verdicts auto-
|
|
7
|
+
* emit an HGP-YYYY-NNNNN id via the existing HGP module.
|
|
8
|
+
*
|
|
9
|
+
* Composes with:
|
|
10
|
+
* - ACGV (Layer 0e — text anti-entropy spike as a caveat)
|
|
11
|
+
* - HGP (auto-record on refute)
|
|
12
|
+
* - FLYWHEEL (new HARVEST signal source 'zzzzz')
|
|
13
|
+
* - TRUTH GATE (new claim binding to probe.zzzzz.ledger_size)
|
|
14
|
+
* - BRIDGE PHOENIX (probe :17741 reachability)
|
|
15
|
+
*/
|
|
16
|
+
export { shannonBitsPerChar, repetitionRate, sentenceVarianceRatio, zipfDeviation, analyzeText, } from "./anti_entropy.js";
|
|
17
|
+
export { detectFormat, parseDimensions, perceptualHash, colorHistogramEntropy, laplacianVariance, distinctColorCount32, jpegQuantFingerprint, analyzeImage, } from "./image_provenance.js";
|
|
18
|
+
export { classifyOS } from "./os_polygraph.js";
|
|
19
|
+
export { probeArtifact, readLedger, verifyReport, arm, disarm, isArmed, __resetZzzzzChainForTest, } from "./engine.js";
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/zzzzz_probe/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,EACL,kBAAkB,EAAE,cAAc,EAAE,qBAAqB,EACzD,aAAa,EAAE,WAAW,GAC3B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EACpE,iBAAiB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,YAAY,GAC5E,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EACL,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAC7D,wBAAwB,GACzB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.39.0 — Cross-OS polygraph classifier.
|
|
3
|
+
*
|
|
4
|
+
* Identifies which interception strategy is available on the host OS
|
|
5
|
+
* + probes whether Mneme's HTTP bridge (:17741) is reachable. The
|
|
6
|
+
* REAL interception per-OS is shipped by other primitives:
|
|
7
|
+
* - Windows: DLL chrysalis (v2.19.64) + .cmd shim handling
|
|
8
|
+
* - POSIX: signal-based stdout tap (proposed; not yet shipped)
|
|
9
|
+
* - All: HTTP bridge polygraph (mneme polygraph autosetup)
|
|
10
|
+
*
|
|
11
|
+
* This module is the CLASSIFIER — it tells callers what's available,
|
|
12
|
+
* doesn't itself intercept anything. Defensive: never throws.
|
|
13
|
+
*/
|
|
14
|
+
import type { OSPolygraphFinding } from "./types.js";
|
|
15
|
+
export declare function classifyOS(): Promise<OSPolygraphFinding>;
|
|
16
|
+
//# sourceMappingURL=os_polygraph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"os_polygraph.d.ts","sourceRoot":"","sources":["../../src/zzzzz_probe/os_polygraph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGrD,wBAAsB,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC,CA0B9D"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.39.0 — Cross-OS polygraph classifier.
|
|
3
|
+
*
|
|
4
|
+
* Identifies which interception strategy is available on the host OS
|
|
5
|
+
* + probes whether Mneme's HTTP bridge (:17741) is reachable. The
|
|
6
|
+
* REAL interception per-OS is shipped by other primitives:
|
|
7
|
+
* - Windows: DLL chrysalis (v2.19.64) + .cmd shim handling
|
|
8
|
+
* - POSIX: signal-based stdout tap (proposed; not yet shipped)
|
|
9
|
+
* - All: HTTP bridge polygraph (mneme polygraph autosetup)
|
|
10
|
+
*
|
|
11
|
+
* This module is the CLASSIFIER — it tells callers what's available,
|
|
12
|
+
* doesn't itself intercept anything. Defensive: never throws.
|
|
13
|
+
*/
|
|
14
|
+
import { probeBridge } from "../bridge_phoenix/index.js";
|
|
15
|
+
export async function classifyOS() {
|
|
16
|
+
const platform = process.platform;
|
|
17
|
+
const arch = process.arch;
|
|
18
|
+
const notes = [];
|
|
19
|
+
let interceptionStrategy = "polygraph-bridge";
|
|
20
|
+
if (platform === "win32") {
|
|
21
|
+
interceptionStrategy = "windows-dll-chrysalis";
|
|
22
|
+
notes.push("v2.19.64 WASM CHRYSALIS extracts DLLs to per-PID tmpdir; EBUSY structurally impossible at install.");
|
|
23
|
+
}
|
|
24
|
+
else if (platform === "darwin" || platform === "linux") {
|
|
25
|
+
interceptionStrategy = "posix-signals";
|
|
26
|
+
notes.push("POSIX stdout tap not yet shipped as a runtime hook; polygraph bridge is the cross-platform fallback.");
|
|
27
|
+
}
|
|
28
|
+
let bridgeReachable = null;
|
|
29
|
+
try {
|
|
30
|
+
const probe = await probeBridge(17741, 1500);
|
|
31
|
+
bridgeReachable = probe.ok;
|
|
32
|
+
if (!probe.ok)
|
|
33
|
+
notes.push(`bridge probe :17741 → not reachable (${probe.reason ?? "no reason"}); run \`mneme bridge --detach\` or \`mneme polygraph autosetup\``);
|
|
34
|
+
else
|
|
35
|
+
notes.push("bridge :17741 reachable (polygraph route armed).");
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
bridgeReachable = null;
|
|
39
|
+
notes.push("bridge probe threw (treating as unknown).");
|
|
40
|
+
}
|
|
41
|
+
return { platform, arch, interceptionStrategy, bridgeReachable, notes };
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=os_polygraph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"os_polygraph.js","sourceRoot":"","sources":["../../src/zzzzz_probe/os_polygraph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,oBAAoB,GAA+C,kBAAkB,CAAC;IAE1F,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,oBAAoB,GAAG,uBAAuB,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,oGAAoG,CAAC,CAAC;IACnH,CAAC;SAAM,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzD,oBAAoB,GAAG,eAAe,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,sGAAsG,CAAC,CAAC;IACrH,CAAC;IAED,IAAI,eAAe,GAAmB,IAAI,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7C,eAAe,GAAG,KAAK,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,wCAAwC,KAAK,CAAC,MAAM,IAAI,WAAW,mEAAmE,CAAC,CAAC;;YAC7J,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,eAAe,GAAG,IAAI,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,oBAAoB,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.39.0 — Zzzzz-PROBE (The Sleepwalking Oracle) types.
|
|
3
|
+
*
|
|
4
|
+
* Anti-Entropy + Multi-Modal Provenance + Cross-OS Polygraph in ONE
|
|
5
|
+
* primitive. Composes with ACGV (Layer 0e) + HGP (auto-record) +
|
|
6
|
+
* FLYWHEEL (new HARVEST source) + TRUTH GATE (claim binding).
|
|
7
|
+
*
|
|
8
|
+
* Honest scope (no GPU, no ML model, pure-Node):
|
|
9
|
+
* - Text: Shannon entropy + Zipf deviation + repetition + sentence-
|
|
10
|
+
* variance (all proven signals used in academic AI-text detection)
|
|
11
|
+
* - Image: pHash + Laplacian-variance + JPEG-quantization-fingerprint
|
|
12
|
+
* + color-histogram-entropy (signals used in academic AI-image
|
|
13
|
+
* detection — frequency-domain, not "ray tracing")
|
|
14
|
+
* - OS: classify platform + record polygraph attempt; the real
|
|
15
|
+
* interception layer per-OS is shipped piecemeal by other Mneme
|
|
16
|
+
* primitives (Windows DLL chrysalis v2.19.64, polygraph autosetup)
|
|
17
|
+
*
|
|
18
|
+
* Verdict ladder: CRYSTAL_CLEAR / PROBE_DRIFT / REFUTED / IMPOSSIBLE_REFUTE.
|
|
19
|
+
* IMPOSSIBLE_REFUTE on text composes with HGP auto-record (a Zzzzz
|
|
20
|
+
* refute becomes an HGP-YYYY-NNNNN id).
|
|
21
|
+
*/
|
|
22
|
+
export type ZzzzzModality = "text" | "code" | "image";
|
|
23
|
+
export type ZzzzzVerdict = "CRYSTAL_CLEAR" | "PROBE_DRIFT" | "REFUTED" | "IMPOSSIBLE_REFUTE";
|
|
24
|
+
export interface AntiEntropyMetrics {
|
|
25
|
+
/** Shannon entropy over normalized character distribution (bits/char). */
|
|
26
|
+
shannonBitsPerChar: number;
|
|
27
|
+
/** Repetition rate: dominant-token frequency / total tokens. */
|
|
28
|
+
repetitionRate: number;
|
|
29
|
+
/** Sentence-length variance ratio (sigma/mean). AI text is often uniform. */
|
|
30
|
+
sentenceVarianceRatio: number;
|
|
31
|
+
/** Zipf-deviation: how much top-K word distribution deviates from Zipf's law. */
|
|
32
|
+
zipfDeviation: number;
|
|
33
|
+
/** Composite anomaly score 0..1 (higher = more anomalous / AI-suspicious). */
|
|
34
|
+
anomalyScore: number;
|
|
35
|
+
}
|
|
36
|
+
export interface ImageProvenance {
|
|
37
|
+
/** SHA-256 perceptual hash (8-byte) of the image as hex. */
|
|
38
|
+
pHash: string;
|
|
39
|
+
/** Laplacian variance — proxy for image sharpness / AI smoothness. */
|
|
40
|
+
laplacianVariance: number;
|
|
41
|
+
/** Color-histogram entropy bits. AI images often cluster in a narrow palette. */
|
|
42
|
+
colorHistogramEntropy: number;
|
|
43
|
+
/** JPEG quantization-table fingerprint (8x8 first-channel table hash, when JPEG). */
|
|
44
|
+
jpegQuantFingerprint: string | null;
|
|
45
|
+
/** Number of distinct colors in a 32×32 downsample. */
|
|
46
|
+
distinctColorCount32: number;
|
|
47
|
+
/** Composite suspicion score 0..1. */
|
|
48
|
+
suspicionScore: number;
|
|
49
|
+
/** Image format detected from magic bytes. */
|
|
50
|
+
format: "jpeg" | "png" | "webp" | "gif" | "bmp" | "unknown";
|
|
51
|
+
/** Image dimensions (when parseable). */
|
|
52
|
+
width: number;
|
|
53
|
+
height: number;
|
|
54
|
+
}
|
|
55
|
+
export interface OSPolygraphFinding {
|
|
56
|
+
platform: NodeJS.Platform;
|
|
57
|
+
arch: string;
|
|
58
|
+
/** Which interception strategy is available on this OS. */
|
|
59
|
+
interceptionStrategy: "windows-dll-chrysalis" | "posix-signals" | "polygraph-bridge" | "none";
|
|
60
|
+
/** Is Mneme's polygraph bridge port (:17741) reachable? */
|
|
61
|
+
bridgeReachable: boolean | null;
|
|
62
|
+
/** Free-form notes. */
|
|
63
|
+
notes: string[];
|
|
64
|
+
}
|
|
65
|
+
export interface ZzzzzReport {
|
|
66
|
+
spec: {
|
|
67
|
+
name: "MNEME-ZZZZZ-PROBE";
|
|
68
|
+
version: "1.0";
|
|
69
|
+
};
|
|
70
|
+
modality: ZzzzzModality;
|
|
71
|
+
/** Verdict — CRYSTAL_CLEAR/PROBE_DRIFT/REFUTED/IMPOSSIBLE_REFUTE. */
|
|
72
|
+
verdict: ZzzzzVerdict;
|
|
73
|
+
/** Confidence 0..1. */
|
|
74
|
+
confidence: number;
|
|
75
|
+
/** Plain-English headline. */
|
|
76
|
+
headline: string;
|
|
77
|
+
/** Per-modality detail (one of these populated). */
|
|
78
|
+
textMetrics?: AntiEntropyMetrics;
|
|
79
|
+
imageProvenance?: ImageProvenance;
|
|
80
|
+
os: OSPolygraphFinding;
|
|
81
|
+
/** Caveats / signals that fired. */
|
|
82
|
+
caveats: string[];
|
|
83
|
+
/** When a verdict is REFUTED/IMPOSSIBLE_REFUTE, the HGP-ID assigned by the auto-record hook. */
|
|
84
|
+
hgpId?: string;
|
|
85
|
+
/** HMAC-signed envelope. */
|
|
86
|
+
hmac: string;
|
|
87
|
+
/** Monotonic sequence number from HMAC chain. */
|
|
88
|
+
seq: number;
|
|
89
|
+
bodyDigest: string;
|
|
90
|
+
at: string;
|
|
91
|
+
}
|
|
92
|
+
export interface ProbeInput {
|
|
93
|
+
modality: ZzzzzModality;
|
|
94
|
+
/** Raw text/code (modality=text/code). Mutually exclusive with `imageBytes`. */
|
|
95
|
+
text?: string;
|
|
96
|
+
/** Raw image bytes (modality=image). */
|
|
97
|
+
imageBytes?: Uint8Array;
|
|
98
|
+
/** Caller-supplied vendor id for HGP attribution. */
|
|
99
|
+
vendor?: string;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/zzzzz_probe/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEtD,MAAM,MAAM,YAAY,GACpB,eAAe,GACf,aAAa,GACb,SAAS,GACT,mBAAmB,CAAC;AAExB,MAAM,WAAW,kBAAkB;IACjC,0EAA0E;IAC1E,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gEAAgE;IAChE,cAAc,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iFAAiF;IACjF,aAAa,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iFAAiF;IACjF,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qFAAqF;IACrF,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,uDAAuD;IACvD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sCAAsC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;IAC5D,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,oBAAoB,EAAE,uBAAuB,GAAG,eAAe,GAAG,kBAAkB,GAAG,MAAM,CAAC;IAC9F,2DAA2D;IAC3D,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,uBAAuB;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE;QAAE,IAAI,EAAE,mBAAmB,CAAC;QAAC,OAAO,EAAE,KAAK,CAAA;KAAE,CAAC;IACpD,QAAQ,EAAE,aAAa,CAAC;IACxB,qEAAqE;IACrE,OAAO,EAAE,YAAY,CAAC;IACtB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,EAAE,EAAE,kBAAkB,CAAC;IACvB,oCAAoC;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gGAAgG;IAChG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,aAAa,CAAC;IACxB,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.39.0 — Zzzzz-PROBE (The Sleepwalking Oracle) types.
|
|
3
|
+
*
|
|
4
|
+
* Anti-Entropy + Multi-Modal Provenance + Cross-OS Polygraph in ONE
|
|
5
|
+
* primitive. Composes with ACGV (Layer 0e) + HGP (auto-record) +
|
|
6
|
+
* FLYWHEEL (new HARVEST source) + TRUTH GATE (claim binding).
|
|
7
|
+
*
|
|
8
|
+
* Honest scope (no GPU, no ML model, pure-Node):
|
|
9
|
+
* - Text: Shannon entropy + Zipf deviation + repetition + sentence-
|
|
10
|
+
* variance (all proven signals used in academic AI-text detection)
|
|
11
|
+
* - Image: pHash + Laplacian-variance + JPEG-quantization-fingerprint
|
|
12
|
+
* + color-histogram-entropy (signals used in academic AI-image
|
|
13
|
+
* detection — frequency-domain, not "ray tracing")
|
|
14
|
+
* - OS: classify platform + record polygraph attempt; the real
|
|
15
|
+
* interception layer per-OS is shipped piecemeal by other Mneme
|
|
16
|
+
* primitives (Windows DLL chrysalis v2.19.64, polygraph autosetup)
|
|
17
|
+
*
|
|
18
|
+
* Verdict ladder: CRYSTAL_CLEAR / PROBE_DRIFT / REFUTED / IMPOSSIBLE_REFUTE.
|
|
19
|
+
* IMPOSSIBLE_REFUTE on text composes with HGP auto-record (a Zzzzz
|
|
20
|
+
* refute becomes an HGP-YYYY-NNNNN id).
|
|
21
|
+
*/
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/zzzzz_probe/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG"}
|