@mneme-ai/core 2.39.0 → 2.41.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 (90) hide show
  1. package/dist/agent_manifest.d.ts +1 -1
  2. package/dist/agent_manifest.d.ts.map +1 -1
  3. package/dist/agent_manifest.js +7 -0
  4. package/dist/agent_manifest.js.map +1 -1
  5. package/dist/argus10/bloom_prefilter.d.ts +40 -0
  6. package/dist/argus10/bloom_prefilter.d.ts.map +1 -0
  7. package/dist/argus10/bloom_prefilter.js +95 -0
  8. package/dist/argus10/bloom_prefilter.js.map +1 -0
  9. package/dist/argus10/engine.d.ts +30 -0
  10. package/dist/argus10/engine.d.ts.map +1 -0
  11. package/dist/argus10/engine.js +139 -0
  12. package/dist/argus10/engine.js.map +1 -0
  13. package/dist/argus10/engine_multimodal.d.ts +34 -0
  14. package/dist/argus10/engine_multimodal.d.ts.map +1 -0
  15. package/dist/argus10/engine_multimodal.js +165 -0
  16. package/dist/argus10/engine_multimodal.js.map +1 -0
  17. package/dist/argus10/eyes_multimodal.d.ts +28 -0
  18. package/dist/argus10/eyes_multimodal.d.ts.map +1 -0
  19. package/dist/argus10/eyes_multimodal.js +162 -0
  20. package/dist/argus10/eyes_multimodal.js.map +1 -0
  21. package/dist/argus10/eyes_surface.d.ts +18 -0
  22. package/dist/argus10/eyes_surface.d.ts.map +1 -0
  23. package/dist/argus10/eyes_surface.js +251 -0
  24. package/dist/argus10/eyes_surface.js.map +1 -0
  25. package/dist/argus10/eyes_truth.d.ts +24 -0
  26. package/dist/argus10/eyes_truth.d.ts.map +1 -0
  27. package/dist/argus10/eyes_truth.js +254 -0
  28. package/dist/argus10/eyes_truth.js.map +1 -0
  29. package/dist/argus10/guardian.d.ts +35 -0
  30. package/dist/argus10/guardian.d.ts.map +1 -0
  31. package/dist/argus10/guardian.js +51 -0
  32. package/dist/argus10/guardian.js.map +1 -0
  33. package/dist/argus10/hydra.d.ts +45 -0
  34. package/dist/argus10/hydra.d.ts.map +1 -0
  35. package/dist/argus10/hydra.js +72 -0
  36. package/dist/argus10/hydra.js.map +1 -0
  37. package/dist/argus10/index.d.ts +25 -0
  38. package/dist/argus10/index.d.ts.map +1 -0
  39. package/dist/argus10/index.js +25 -0
  40. package/dist/argus10/index.js.map +1 -0
  41. package/dist/argus10/phantom_eye.d.ts +70 -0
  42. package/dist/argus10/phantom_eye.d.ts.map +1 -0
  43. package/dist/argus10/phantom_eye.js +105 -0
  44. package/dist/argus10/phantom_eye.js.map +1 -0
  45. package/dist/argus10/types.d.ts +128 -0
  46. package/dist/argus10/types.d.ts.map +1 -0
  47. package/dist/argus10/types.js +39 -0
  48. package/dist/argus10/types.js.map +1 -0
  49. package/dist/argus10/vendor_adapters.d.ts +42 -0
  50. package/dist/argus10/vendor_adapters.d.ts.map +1 -0
  51. package/dist/argus10/vendor_adapters.js +165 -0
  52. package/dist/argus10/vendor_adapters.js.map +1 -0
  53. package/dist/diaspora/http_bridge.d.ts +14 -0
  54. package/dist/diaspora/http_bridge.d.ts.map +1 -1
  55. package/dist/diaspora/http_bridge.js +22 -0
  56. package/dist/diaspora/http_bridge.js.map +1 -1
  57. package/dist/flywheel/controller.js.map +1 -1
  58. package/dist/index.d.ts +3 -0
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +10 -0
  61. package/dist/index.js.map +1 -1
  62. package/dist/pulse.js +1 -1
  63. package/dist/pulse.js.map +1 -1
  64. package/dist/rewind/engine.js.map +1 -1
  65. package/dist/squadron/acgv.d.ts.map +1 -1
  66. package/dist/squadron/acgv.js +106 -3
  67. package/dist/squadron/acgv.js.map +1 -1
  68. package/dist/squadron/acgv_explain.d.ts.map +1 -1
  69. package/dist/squadron/acgv_explain.js +14 -0
  70. package/dist/squadron/acgv_explain.js.map +1 -1
  71. package/dist/squadron/acgv_input_hygiene.d.ts +63 -0
  72. package/dist/squadron/acgv_input_hygiene.d.ts.map +1 -0
  73. package/dist/squadron/acgv_input_hygiene.js +302 -0
  74. package/dist/squadron/acgv_input_hygiene.js.map +1 -0
  75. package/dist/squadron/acgv_number_bridge.d.ts +71 -0
  76. package/dist/squadron/acgv_number_bridge.d.ts.map +1 -0
  77. package/dist/squadron/acgv_number_bridge.js +524 -0
  78. package/dist/squadron/acgv_number_bridge.js.map +1 -0
  79. package/dist/squadron/vaccine_numeric_guard.d.ts +4 -0
  80. package/dist/squadron/vaccine_numeric_guard.d.ts.map +1 -1
  81. package/dist/squadron/vaccine_numeric_guard.js +32 -17
  82. package/dist/squadron/vaccine_numeric_guard.js.map +1 -1
  83. package/dist/truth_gate/claims.d.ts.map +1 -1
  84. package/dist/truth_gate/claims.js +16 -0
  85. package/dist/truth_gate/claims.js.map +1 -1
  86. package/dist/truth_gate/probes.d.ts.map +1 -1
  87. package/dist/truth_gate/probes.js +94 -4
  88. package/dist/truth_gate/probes.js.map +1 -1
  89. package/dist/zzzzz_probe/anti_entropy.d.ts.map +1 -1
  90. package/package.json +1 -1
@@ -0,0 +1,251 @@
1
+ /**
2
+ * v2.40.0 — ARGUS-10 SURFACE LAYER (EYE_1..EYE_5).
3
+ *
4
+ * Lexical / phonetic / shape signals. All pure functions, no I/O,
5
+ * always healthy (OPEN) — they can't be closed by environment.
6
+ */
7
+ // ─── EYE_1 — bigram Dice coefficient ───────────────────────────────────
8
+ //
9
+ // Dice = 2 |A ∩ B| / (|A| + |B|). Operates on character bigrams. Robust
10
+ // to small typos + word-order shuffles; symmetric. We use [\p{L}\p{N}]
11
+ // to allow Thai/CJK/Latin uniformly.
12
+ function bigrams(s) {
13
+ const out = new Set();
14
+ const clean = s.toLowerCase().normalize("NFC");
15
+ const t = clean.replace(/[^\p{L}\p{N}]+/gu, " ").trim();
16
+ if (t.length < 2) {
17
+ if (t.length === 1)
18
+ out.add(t);
19
+ return out;
20
+ }
21
+ for (let i = 0; i < t.length - 1; i++) {
22
+ const bg = t.slice(i, i + 2);
23
+ if (!bg.includes(" ") || bg.trim().length > 0)
24
+ out.add(bg);
25
+ }
26
+ return out;
27
+ }
28
+ export const EYE_1_bigram_dice = {
29
+ id: "EYE_1_bigram_dice",
30
+ layer: "surface",
31
+ weight: 0.18,
32
+ probe: () => "OPEN",
33
+ signal(q, c) {
34
+ const a = bigrams(q);
35
+ const b = bigrams(c.text);
36
+ if (a.size === 0 || b.size === 0)
37
+ return { raw: 0, reason: "empty bigram set" };
38
+ let inter = 0;
39
+ for (const bg of a)
40
+ if (b.has(bg))
41
+ inter++;
42
+ const raw = (2 * inter) / (a.size + b.size);
43
+ return { raw, reason: `dice=2·${inter}/(${a.size}+${b.size})` };
44
+ },
45
+ };
46
+ // ─── EYE_2 — Damerau-Levenshtein with Thai-aware confuse / phonetic /
47
+ // keyboard substitution discounts ──────────────────────────────────────
48
+ //
49
+ // Standard Damerau-Lev: insert / delete / substitute / transpose = 1 each.
50
+ // We modify substitution cost based on three knobs:
51
+ // visualConfuse: pairs like ร↔ล / น↔ม / Latin o↔Cyrillic о (0.3)
52
+ // phoneticClass: pairs in the same Thai initial-consonant class (0.4)
53
+ // keyboardAdj: physically-adjacent keys on Kedmanee+QWERTY (0.5)
54
+ const VISUAL_CONFUSE_PAIRS = new Set([
55
+ // Thai look-alikes
56
+ "รล", "ลร", "นม", "มน", "บผ", "ผบ", "ปบ", "บป", "ฉจ", "จฉ",
57
+ // Cyrillic/Latin lookalikes (D5 ARGUS demonstrates this)
58
+ "ое", "ео", "eо", "оe", // Cyrillic 'о' (U+043E)
59
+ "aа", "аa", // Cyrillic 'а' (U+0430)
60
+ "cс", "сc", // Cyrillic 'с' (U+0441)
61
+ ]);
62
+ const PHONETIC_CLASS_PAIRS = new Set([
63
+ // Thai initial consonant groups (กลุ่มอักษรกลาง/สูง/ต่ำ partial)
64
+ "กข", "ขก", "กค", "คก", "กฆ", "ฆก", "ขฆ", "ฆข", "คฆ", "ฆค",
65
+ "จฉ", "ฉจ", "จช", "ชจ", "ฉช", "ชฉ",
66
+ "ตด", "ดต", "ตถ", "ถต", "ตท", "ทต", "ตธ", "ธต",
67
+ "พภ", "ภพ", "ฟภ", "ภฟ",
68
+ "สศ", "ศส", "สษ", "ษส",
69
+ ]);
70
+ const KEYBOARD_ADJ_PAIRS = new Set([
71
+ // QWERTY rows (subset)
72
+ "qw", "wq", "we", "ew", "er", "re", "rt", "tr", "ty", "yt", "yu", "uy", "ui", "iu", "io", "oi", "op", "po",
73
+ "as", "sa", "sd", "ds", "df", "fd", "fg", "gf", "gh", "hg", "hj", "jh", "jk", "kj", "kl", "lk",
74
+ "zx", "xz", "xc", "cx", "cv", "vc", "vb", "bv", "bn", "nb", "nm", "mn",
75
+ ]);
76
+ function substCost(a, b) {
77
+ if (a === b)
78
+ return 0;
79
+ const pair = a + b;
80
+ if (VISUAL_CONFUSE_PAIRS.has(pair))
81
+ return 0.3;
82
+ if (PHONETIC_CLASS_PAIRS.has(pair))
83
+ return 0.4;
84
+ if (KEYBOARD_ADJ_PAIRS.has(pair.toLowerCase()))
85
+ return 0.5;
86
+ return 1.0;
87
+ }
88
+ function damerauLevThai(a, b) {
89
+ a = a.normalize("NFC");
90
+ b = b.normalize("NFC");
91
+ const m = a.length, n = b.length;
92
+ if (m === 0)
93
+ return n;
94
+ if (n === 0)
95
+ return m;
96
+ // 2-row optimization is tricky for damerau (transposition needs 3 rows);
97
+ // for the lengths we care about (queries ≤ 200 chars), full matrix is fine.
98
+ const d = Array.from({ length: m + 1 }, () => new Array(n + 1).fill(0));
99
+ for (let i = 0; i <= m; i++)
100
+ d[i][0] = i;
101
+ for (let j = 0; j <= n; j++)
102
+ d[0][j] = j;
103
+ for (let i = 1; i <= m; i++) {
104
+ for (let j = 1; j <= n; j++) {
105
+ const cost = substCost(a[i - 1], b[j - 1]);
106
+ d[i][j] = Math.min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost);
107
+ if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {
108
+ d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + 1);
109
+ }
110
+ }
111
+ }
112
+ return d[m][n];
113
+ }
114
+ export const EYE_2_damerau_lev_thai = {
115
+ id: "EYE_2_damerau_lev_thai",
116
+ layer: "surface",
117
+ weight: 0.18,
118
+ probe: () => "OPEN",
119
+ signal(q, c) {
120
+ if (q.length === 0 || c.text.length === 0)
121
+ return { raw: 0, reason: "empty" };
122
+ const dist = damerauLevThai(q.toLowerCase(), c.text.toLowerCase());
123
+ const maxLen = Math.max(q.length, c.text.length);
124
+ const raw = Math.max(0, 1 - dist / maxLen);
125
+ return { raw, reason: `dist=${dist.toFixed(1)}/${maxLen}` };
126
+ },
127
+ };
128
+ // ─── EYE_3 — Thai metaphone ────────────────────────────────────────────
129
+ //
130
+ // Phonetic key approximation. Map Thai consonants by their Thai metaphone
131
+ // class; map Latin via Soundex-style. Equal keys = high score, partial =
132
+ // linear by shared prefix length.
133
+ const THAI_METAPHONE_CLASS = {
134
+ // High-class (1)
135
+ "ข": "K", "ฉ": "C", "ฐ": "T", "ถ": "T", "ผ": "P", "ฝ": "F", "ศ": "S", "ษ": "S", "ส": "S", "ห": "H",
136
+ // Mid-class (2)
137
+ "ก": "K", "จ": "C", "ฎ": "D", "ฏ": "T", "ด": "D", "ต": "T", "บ": "B", "ป": "P", "อ": "A",
138
+ // Low-class (3)
139
+ "ค": "K", "ฆ": "K", "ง": "G", "ช": "C", "ซ": "S", "ญ": "Y", "ฌ": "C", "ฑ": "D", "ฒ": "T", "ณ": "N",
140
+ "ท": "T", "ธ": "T", "น": "N", "พ": "P", "ฟ": "F", "ภ": "P", "ม": "M", "ย": "Y", "ร": "R", "ล": "L",
141
+ "ฬ": "L", "ว": "W", "ฮ": "H",
142
+ };
143
+ function thaiMetaphone(s) {
144
+ // Strip vowels + tone marks (Thai range 0x0E30..0x0E4F). Collapse
145
+ // consecutive duplicates. Map consonants via the class table; Latin
146
+ // letters pass through their Soundex digit.
147
+ const out = [];
148
+ for (const ch of s.normalize("NFC")) {
149
+ const cp = ch.codePointAt(0);
150
+ if (cp >= 0x0E30 && cp <= 0x0E4F)
151
+ continue; // Thai vowels + tone marks
152
+ const tk = THAI_METAPHONE_CLASS[ch];
153
+ if (tk) {
154
+ out.push(tk);
155
+ continue;
156
+ }
157
+ if (/[A-Za-z]/.test(ch)) {
158
+ const lower = ch.toLowerCase();
159
+ const map = {
160
+ "b": "B", "f": "F", "p": "P", "v": "V",
161
+ "c": "K", "g": "K", "j": "C", "k": "K", "q": "K", "s": "S", "x": "K", "z": "S",
162
+ "d": "D", "t": "T",
163
+ "l": "L", "m": "M", "n": "N", "r": "R",
164
+ "h": "H", "w": "W", "y": "Y",
165
+ };
166
+ const m = map[lower];
167
+ if (m)
168
+ out.push(m);
169
+ continue;
170
+ }
171
+ }
172
+ // Collapse consecutive dupes
173
+ return out.filter((v, i) => i === 0 || out[i - 1] !== v).join("");
174
+ }
175
+ export const EYE_3_thai_metaphone = {
176
+ id: "EYE_3_thai_metaphone",
177
+ layer: "surface",
178
+ weight: 0.08,
179
+ probe: () => "OPEN",
180
+ signal(q, c) {
181
+ const kq = thaiMetaphone(q);
182
+ const kc = thaiMetaphone(c.text);
183
+ if (kq.length === 0 || kc.length === 0)
184
+ return { raw: 0, reason: "empty key" };
185
+ if (kq === kc)
186
+ return { raw: 1.0, reason: `match key=${kq}` };
187
+ // Shared longest prefix
188
+ let i = 0;
189
+ while (i < Math.min(kq.length, kc.length) && kq[i] === kc[i])
190
+ i++;
191
+ const raw = i / Math.max(kq.length, kc.length);
192
+ return { raw, reason: `prefix=${i}/${Math.max(kq.length, kc.length)}` };
193
+ },
194
+ };
195
+ // ─── EYE_4 — length ratio (cheap shape check) ──────────────────────────
196
+ export const EYE_4_length_ratio = {
197
+ id: "EYE_4_length_ratio",
198
+ layer: "surface",
199
+ weight: 0.04,
200
+ probe: () => "OPEN",
201
+ signal(q, c) {
202
+ const a = q.length, b = c.text.length;
203
+ if (a === 0 && b === 0)
204
+ return { raw: 0, reason: "both empty" };
205
+ if (a === 0 || b === 0)
206
+ return { raw: 0, reason: "one empty" };
207
+ const raw = Math.min(a, b) / Math.max(a, b);
208
+ return { raw, reason: `min/max=${Math.min(a, b)}/${Math.max(a, b)}` };
209
+ },
210
+ };
211
+ // ─── EYE_5 — sliding window n-gram ─────────────────────────────────────
212
+ //
213
+ // Slide a window of width w ∈ [3..6] over the query; check what fraction
214
+ // of windows appear anywhere in the candidate. Captures partial-match
215
+ // signal lost to Dice (which collapses all bigrams into a set).
216
+ export const EYE_5_sliding_window = {
217
+ id: "EYE_5_sliding_window",
218
+ layer: "surface",
219
+ weight: 0.08,
220
+ probe: () => "OPEN",
221
+ signal(q, c) {
222
+ const qn = q.toLowerCase().normalize("NFC");
223
+ const cn = c.text.toLowerCase().normalize("NFC");
224
+ if (qn.length < 3 || cn.length < 3)
225
+ return { raw: 0, reason: "too short" };
226
+ let hits = 0;
227
+ let attempts = 0;
228
+ for (let w = 3; w <= Math.min(6, qn.length); w++) {
229
+ for (let i = 0; i + w <= qn.length; i++) {
230
+ attempts++;
231
+ const win = qn.slice(i, i + w);
232
+ if (cn.includes(win))
233
+ hits++;
234
+ }
235
+ }
236
+ if (attempts === 0)
237
+ return { raw: 0, reason: "no windows" };
238
+ const raw = hits / attempts;
239
+ return { raw, reason: `${hits}/${attempts} windows` };
240
+ },
241
+ };
242
+ export const SURFACE_EYES = [
243
+ EYE_1_bigram_dice,
244
+ EYE_2_damerau_lev_thai,
245
+ EYE_3_thai_metaphone,
246
+ EYE_4_length_ratio,
247
+ EYE_5_sliding_window,
248
+ ];
249
+ // Re-export the internal helpers for tests
250
+ export { bigrams, damerauLevThai, thaiMetaphone };
251
+ //# sourceMappingURL=eyes_surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eyes_surface.js","sourceRoot":"","sources":["../../src/argus10/eyes_surface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * v2.40.0 — ARGUS-10 TRUTH LAYER (EYE_6..EYE_10).
3
+ *
4
+ * Mneme-unique signals that no plain search engine can copy because they
5
+ * require Mneme's existing primitives:
6
+ *
7
+ * EYE_6 homoglyph_collapse — uses acgv_input_hygiene
8
+ * EYE_7 number_paraphrase — uses acgv_number_bridge
9
+ * EYE_8 embedding_cosine — caller-supplied embedder; closes
10
+ * gracefully when null
11
+ * EYE_9 hmac_provenance — reads .mneme/cli-activity.jsonl
12
+ * chain; +25% boost / −50% penalty
13
+ * EYE_10 honest_mirror_penalty — reads .mneme/honest_mirror/weights;
14
+ * vendor's calibration delta multiplier
15
+ */
16
+ import type { Eye } from "./types.js";
17
+ export declare const EYE_6_homoglyph_collapse: Eye;
18
+ export declare const EYE_7_number_paraphrase: Eye;
19
+ export declare const EYE_8_embedding_cosine: Eye;
20
+ export declare const EYE_9_hmac_provenance: Eye;
21
+ export declare function honestMirrorMultiplier(repoRoot: string, vendor: string | undefined): number;
22
+ export declare const EYE_10_honest_mirror_penalty: Eye;
23
+ export declare const TRUTH_EYES: Eye[];
24
+ //# sourceMappingURL=eyes_truth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eyes_truth.d.ts","sourceRoot":"","sources":["../../src/argus10/eyes_truth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAa,GAAG,EAAqB,MAAM,YAAY,CAAC;AA+BpE,eAAO,MAAM,wBAAwB,EAAE,GAsBtC,CAAC;AAQF,eAAO,MAAM,uBAAuB,EAAE,GAyBrC,CAAC;AAUF,eAAO,MAAM,sBAAsB,EAAE,GA8BpC,CAAC;AA8CF,eAAO,MAAM,qBAAqB,EAAE,GAcnC,CAAC;AAwBF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAa3F;AAED,eAAO,MAAM,4BAA4B,EAAE,GAW1C,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,GAAG,EAM3B,CAAC"}
@@ -0,0 +1,254 @@
1
+ /**
2
+ * v2.40.0 — ARGUS-10 TRUTH LAYER (EYE_6..EYE_10).
3
+ *
4
+ * Mneme-unique signals that no plain search engine can copy because they
5
+ * require Mneme's existing primitives:
6
+ *
7
+ * EYE_6 homoglyph_collapse — uses acgv_input_hygiene
8
+ * EYE_7 number_paraphrase — uses acgv_number_bridge
9
+ * EYE_8 embedding_cosine — caller-supplied embedder; closes
10
+ * gracefully when null
11
+ * EYE_9 hmac_provenance — reads .mneme/cli-activity.jsonl
12
+ * chain; +25% boost / −50% penalty
13
+ * EYE_10 honest_mirror_penalty — reads .mneme/honest_mirror/weights;
14
+ * vendor's calibration delta multiplier
15
+ */
16
+ import { existsSync, readFileSync } from "node:fs";
17
+ import { createHash } from "node:crypto";
18
+ import { join } from "node:path";
19
+ import { safeNormalize } from "../squadron/acgv_input_hygiene.js";
20
+ import { canonicalRewrite, sameQuantity, extractCanonicalNumbers } from "../squadron/acgv_number_bridge.js";
21
+ // ─── EYE_6 — homoglyph collapse ────────────────────────────────────────
22
+ //
23
+ // Pre-normalize both texts through the v2.40 input hygiene module:
24
+ // Cyrillic/Greek/full-width/zero-width are stripped or folded to canonical
25
+ // Latin. Then a quick exact / containment / Dice check on the folded form.
26
+ //
27
+ // D1 of the audit (homoglyph attack) proved Mneme has this logic; EYE_6
28
+ // EXPOSES it as a search signal.
29
+ function cyrillicGreekToLatin(s) {
30
+ // Conservative homoglyph folding for the most common confusable pairs.
31
+ // We do NOT touch CJK or Arabic — those look-alikes need a different
32
+ // confusables table.
33
+ const map = {
34
+ "а": "a", "е": "e", "о": "o", "р": "p", "с": "c", "х": "x", "у": "y",
35
+ "А": "A", "Е": "E", "О": "O", "Р": "P", "С": "C", "Х": "X", "У": "Y",
36
+ "ν": "v", "ο": "o", "ρ": "p", "α": "a", "ε": "e", "τ": "t",
37
+ };
38
+ let out = "";
39
+ for (const ch of s)
40
+ out += map[ch] ?? ch;
41
+ return out;
42
+ }
43
+ function fold(s) {
44
+ return cyrillicGreekToLatin(safeNormalize(s)).toLowerCase();
45
+ }
46
+ export const EYE_6_homoglyph_collapse = {
47
+ id: "EYE_6_homoglyph_collapse",
48
+ layer: "truth",
49
+ weight: 0.10,
50
+ probe: () => "OPEN",
51
+ signal(q, c) {
52
+ const fq = fold(q);
53
+ const fc = fold(c.text);
54
+ if (fq.length === 0 || fc.length === 0)
55
+ return { raw: 0, reason: "empty after fold" };
56
+ if (fq === fc)
57
+ return { raw: 1.0, reason: "exact after homoglyph fold" };
58
+ if (fc.includes(fq) || fq.includes(fc))
59
+ return { raw: 0.8, reason: "containment after fold" };
60
+ // Fall back to bigram-Dice on folded form (catches partial matches).
61
+ const A = new Set();
62
+ const B = new Set();
63
+ for (let i = 0; i < fq.length - 1; i++)
64
+ A.add(fq.slice(i, i + 2));
65
+ for (let i = 0; i < fc.length - 1; i++)
66
+ B.add(fc.slice(i, i + 2));
67
+ if (A.size === 0 || B.size === 0)
68
+ return { raw: 0, reason: "no bigrams" };
69
+ let inter = 0;
70
+ for (const bg of A)
71
+ if (B.has(bg))
72
+ inter++;
73
+ const raw = (2 * inter) / (A.size + B.size);
74
+ return { raw, reason: `folded-dice=${inter}` };
75
+ },
76
+ };
77
+ // ─── EYE_7 — number paraphrase bridge ──────────────────────────────────
78
+ //
79
+ // Uses the v2.40 number bridge to detect "same quantity, different spelling".
80
+ // Strong score when the canonical-number multisets agree; weighted by
81
+ // per-number contribution when they overlap partially.
82
+ export const EYE_7_number_paraphrase = {
83
+ id: "EYE_7_number_paraphrase",
84
+ layer: "truth",
85
+ weight: 0.10,
86
+ probe: () => "OPEN",
87
+ signal(q, c) {
88
+ const nq = extractCanonicalNumbers(q).map((n) => n.value);
89
+ const nc = extractCanonicalNumbers(c.text).map((n) => n.value);
90
+ if (nq.length === 0 && nc.length === 0)
91
+ return { raw: 0, reason: "no numbers" };
92
+ if (nq.length === 0 || nc.length === 0)
93
+ return { raw: 0, reason: "asymmetric numbers" };
94
+ // Quick win: identical multisets
95
+ if (sameQuantity(q, c.text)) {
96
+ // Also compare canonical-rewrite forms for partial credit boost
97
+ const rq = canonicalRewrite(q);
98
+ const rc = canonicalRewrite(c.text);
99
+ if (rq === rc)
100
+ return { raw: 1.0, reason: "canonical rewrite identical" };
101
+ return { raw: 0.9, reason: "same numeric multiset" };
102
+ }
103
+ // Partial overlap
104
+ const setC = new Set(nc);
105
+ let hits = 0;
106
+ for (const v of nq)
107
+ if (setC.has(v))
108
+ hits++;
109
+ const raw = hits / Math.max(nq.length, nc.length);
110
+ return { raw, reason: `overlap=${hits}/${Math.max(nq.length, nc.length)}` };
111
+ },
112
+ };
113
+ // ─── EYE_8 — embedding cosine ──────────────────────────────────────────
114
+ //
115
+ // Caller supplies an embedder; if absent, eye CLOSES and Guardian
116
+ // rebalances. We compute one query embedding + one candidate embedding,
117
+ // cosine similarity, and clamp to [0, 1].
118
+ //
119
+ // Note: signal() is async — engine treats this uniformly.
120
+ export const EYE_8_embedding_cosine = {
121
+ id: "EYE_8_embedding_cosine",
122
+ layer: "truth",
123
+ weight: 0.10,
124
+ probe: () => "OPEN", // engine handles per-call close via try/catch
125
+ async signal(q, c, ctx) {
126
+ if (!ctx.embedder)
127
+ return { raw: 0, reason: "no embedder (closed)" };
128
+ try {
129
+ const vecs = await ctx.embedder.embed([q, c.text]);
130
+ if (!vecs || vecs.length !== 2 || !vecs[0] || !vecs[1]) {
131
+ return { raw: 0, reason: "embedder returned empty" };
132
+ }
133
+ const a = vecs[0], b = vecs[1];
134
+ if (a.length !== b.length || a.length === 0) {
135
+ return { raw: 0, reason: "dim mismatch" };
136
+ }
137
+ let dot = 0, na = 0, nb = 0;
138
+ for (let i = 0; i < a.length; i++) {
139
+ dot += a[i] * b[i];
140
+ na += a[i] * a[i];
141
+ nb += b[i] * b[i];
142
+ }
143
+ if (na === 0 || nb === 0)
144
+ return { raw: 0, reason: "zero vector" };
145
+ const cos = dot / (Math.sqrt(na) * Math.sqrt(nb));
146
+ const raw = Math.max(0, Math.min(1, (cos + 1) / 2));
147
+ return { raw, reason: `cos=${cos.toFixed(3)}` };
148
+ }
149
+ catch (e) {
150
+ return { raw: 0, reason: `embed failed: ${e.message?.slice(0, 60) ?? "err"}` };
151
+ }
152
+ },
153
+ };
154
+ function readActivityChain(repoRoot, candidateText) {
155
+ const path = join(repoRoot, ".mneme", "cli-activity.jsonl");
156
+ if (!existsSync(path))
157
+ return { hasMatch: false, tampered: false };
158
+ try {
159
+ const body = readFileSync(path, "utf8");
160
+ const lines = body.split("\n").filter(Boolean);
161
+ let prevHash = "GENESIS";
162
+ let tampered = false;
163
+ let hasMatch = false;
164
+ for (const line of lines) {
165
+ let row;
166
+ try {
167
+ row = JSON.parse(line);
168
+ }
169
+ catch {
170
+ continue;
171
+ }
172
+ if (row.prev && row.prev !== prevHash)
173
+ tampered = true;
174
+ // Compute the expected hmac: sha256(prev||text)
175
+ const expected = createHash("sha256")
176
+ .update(`${prevHash}|${row.text ?? ""}`)
177
+ .digest("hex").slice(0, 16);
178
+ if (row.hmac && row.hmac !== expected)
179
+ tampered = true;
180
+ prevHash = row.hmac ?? prevHash;
181
+ if (row.text && candidateText.length > 0 && row.text.toLowerCase().includes(candidateText.toLowerCase().slice(0, 60))) {
182
+ hasMatch = true;
183
+ }
184
+ }
185
+ return { hasMatch, tampered };
186
+ }
187
+ catch {
188
+ return { hasMatch: false, tampered: false };
189
+ }
190
+ }
191
+ export const EYE_9_hmac_provenance = {
192
+ id: "EYE_9_hmac_provenance",
193
+ layer: "truth",
194
+ weight: 0.07,
195
+ probe: () => "OPEN", // closes per-call if no .mneme/ found
196
+ signal(_q, c, ctx) {
197
+ if (c.meta?.inHmacChain === true) {
198
+ return { raw: 1.0, reason: "meta.inHmacChain=true (caller asserted)" };
199
+ }
200
+ const chain = readActivityChain(ctx.repoRoot, c.text);
201
+ if (chain.tampered)
202
+ return { raw: 0, reason: "chain tampered (penalty)" };
203
+ if (chain.hasMatch)
204
+ return { raw: 1.0, reason: "candidate found in verified HMAC chain" };
205
+ return { raw: 0.5, reason: "neutral: not in chain, but not tampered either" };
206
+ },
207
+ };
208
+ function readHonestMirrorWeights(repoRoot) {
209
+ const path = join(repoRoot, ".mneme", "honest_mirror_weights.json");
210
+ if (!existsSync(path))
211
+ return {};
212
+ try {
213
+ return JSON.parse(readFileSync(path, "utf8"));
214
+ }
215
+ catch {
216
+ return {};
217
+ }
218
+ }
219
+ export function honestMirrorMultiplier(repoRoot, vendor) {
220
+ if (!vendor)
221
+ return 1.0;
222
+ const w = readHonestMirrorWeights(repoRoot);
223
+ const entry = w[vendor] ?? w[vendor.toLowerCase()];
224
+ if (!entry)
225
+ return 1.0;
226
+ if (typeof entry.weight === "number") {
227
+ return Math.max(0.5, Math.min(1.5, entry.weight));
228
+ }
229
+ if (typeof entry.calibrationDelta === "number") {
230
+ // delta of 0 = well-calibrated = ×1.0; delta of 0.6 (60% over) = ×0.4
231
+ return Math.max(0.4, Math.min(1.0, 1.0 - entry.calibrationDelta));
232
+ }
233
+ return 1.0;
234
+ }
235
+ export const EYE_10_honest_mirror_penalty = {
236
+ id: "EYE_10_honest_mirror_penalty",
237
+ layer: "truth",
238
+ weight: 0.07,
239
+ probe: () => "OPEN",
240
+ signal(_q, c, ctx) {
241
+ const m = honestMirrorMultiplier(ctx.repoRoot, c.meta?.vendor);
242
+ // Translate multiplier into 0..1 signal: 0.4 → 0.0, 1.0 → 0.85, 1.5 → 1.0
243
+ const raw = Math.max(0, Math.min(1, (m - 0.4) / 1.1));
244
+ return { raw, reason: `vendor=${c.meta?.vendor ?? "?"} mult=${m.toFixed(2)}` };
245
+ },
246
+ };
247
+ export const TRUTH_EYES = [
248
+ EYE_6_homoglyph_collapse,
249
+ EYE_7_number_paraphrase,
250
+ EYE_8_embedding_cosine,
251
+ EYE_9_hmac_provenance,
252
+ EYE_10_honest_mirror_penalty,
253
+ ];
254
+ //# sourceMappingURL=eyes_truth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eyes_truth.js","sourceRoot":"","sources":["../../src/argus10/eyes_truth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * v2.40.0 — ARGUS-10 GUARDIAN: graceful degradation.
3
+ *
4
+ * When an eye returns CLOSED (no embedder, no .mneme/, no metadata),
5
+ * its weight drops to zero. The remaining eye weights are softmax-
6
+ * rebalanced so the bundle always sums to 1.
7
+ *
8
+ * This implements the Greek-myth property: "if one of Argus's eyes
9
+ * sleeps, the rest stay open" — no blind spot, no silent fallback to
10
+ * a worse answer.
11
+ */
12
+ import type { Eye, EyeHealth, EyeId } from "./types.js";
13
+ export interface RebalancedEyes {
14
+ /** Eyes whose probe() returned OPEN. */
15
+ liveEyes: Eye[];
16
+ /** IDs of eyes that came back CLOSED. */
17
+ closedIds: EyeId[];
18
+ /** New per-eye weight after softmax-rebalance. Maps liveEye.id → weight. */
19
+ newWeights: Map<EyeId, number>;
20
+ }
21
+ /**
22
+ * Softmax-rebalance live eye weights so they sum to 1, preserving the
23
+ * RELATIVE weight ordering from the original bundle.
24
+ *
25
+ * We use a temperature τ = 1 (i.e. ordinary softmax) over the eye's
26
+ * original weight as the logit. With τ=1 the largest original weights
27
+ * receive proportionally more boost, but no eye gets infinite mass.
28
+ *
29
+ * Edge cases:
30
+ * - 0 live eyes → empty map (engine returns score=0 with all-closed note)
31
+ * - 1 live eye → that eye gets weight 1
32
+ * - duplicate weights → tied softmax mass
33
+ */
34
+ export declare function rebalanceEyeWeights(eyes: Eye[], probeOverride?: Map<EyeId, EyeHealth>): RebalancedEyes;
35
+ //# sourceMappingURL=guardian.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guardian.d.ts","sourceRoot":"","sources":["../../src/argus10/guardian.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,yCAAyC;IACzC,SAAS,EAAE,KAAK,EAAE,CAAC;IACnB,4EAA4E;IAC5E,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CAChC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,cAAc,CAsBtG"}