@mneme-ai/core 2.45.0 → 2.47.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 +8 -0
- package/dist/agent_manifest.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -2
- package/dist/index.js.map +1 -1
- package/dist/nemesis/calibration_corpus.d.ts +40 -0
- package/dist/nemesis/calibration_corpus.d.ts.map +1 -0
- package/dist/nemesis/calibration_corpus.js +148 -0
- package/dist/nemesis/calibration_corpus.js.map +1 -0
- package/dist/nemesis/classifier.d.ts +39 -0
- package/dist/nemesis/classifier.d.ts.map +1 -0
- package/dist/nemesis/classifier.js +133 -0
- package/dist/nemesis/classifier.js.map +1 -0
- package/dist/nemesis/classifier_calibrated.d.ts +48 -0
- package/dist/nemesis/classifier_calibrated.d.ts.map +1 -0
- package/dist/nemesis/classifier_calibrated.js +166 -0
- package/dist/nemesis/classifier_calibrated.js.map +1 -0
- package/dist/nemesis/drift_timeline.d.ts +35 -0
- package/dist/nemesis/drift_timeline.d.ts.map +1 -0
- package/dist/nemesis/drift_timeline.js +98 -0
- package/dist/nemesis/drift_timeline.js.map +1 -0
- package/dist/nemesis/env_scan.d.ts +40 -0
- package/dist/nemesis/env_scan.d.ts.map +1 -0
- package/dist/nemesis/env_scan.js +74 -0
- package/dist/nemesis/env_scan.js.map +1 -0
- package/dist/nemesis/eu_ai_act_stamp.d.ts +30 -0
- package/dist/nemesis/eu_ai_act_stamp.d.ts.map +1 -0
- package/dist/nemesis/eu_ai_act_stamp.js +116 -0
- package/dist/nemesis/eu_ai_act_stamp.js.map +1 -0
- package/dist/nemesis/features.d.ts +13 -0
- package/dist/nemesis/features.d.ts.map +1 -0
- package/dist/nemesis/features.js +151 -0
- package/dist/nemesis/features.js.map +1 -0
- package/dist/nemesis/git_hook_installer.d.ts +24 -0
- package/dist/nemesis/git_hook_installer.d.ts.map +1 -0
- package/dist/nemesis/git_hook_installer.js +71 -0
- package/dist/nemesis/git_hook_installer.js.map +1 -0
- package/dist/nemesis/identity_verifier.d.ts +25 -0
- package/dist/nemesis/identity_verifier.d.ts.map +1 -0
- package/dist/nemesis/identity_verifier.js +106 -0
- package/dist/nemesis/identity_verifier.js.map +1 -0
- package/dist/nemesis/index.d.ts +30 -0
- package/dist/nemesis/index.d.ts.map +1 -0
- package/dist/nemesis/index.js +36 -0
- package/dist/nemesis/index.js.map +1 -0
- package/dist/nemesis/key_management.d.ts +30 -0
- package/dist/nemesis/key_management.d.ts.map +1 -0
- package/dist/nemesis/key_management.js +91 -0
- package/dist/nemesis/key_management.js.map +1 -0
- package/dist/nemesis/learning_loop.d.ts +45 -0
- package/dist/nemesis/learning_loop.d.ts.map +1 -0
- package/dist/nemesis/learning_loop.js +116 -0
- package/dist/nemesis/learning_loop.js.map +1 -0
- package/dist/nemesis/replay_attack.d.ts +27 -0
- package/dist/nemesis/replay_attack.d.ts.map +1 -0
- package/dist/nemesis/replay_attack.js +60 -0
- package/dist/nemesis/replay_attack.js.map +1 -0
- package/dist/nemesis/types.d.ts +160 -0
- package/dist/nemesis/types.d.ts.map +1 -0
- package/dist/nemesis/types.js +9 -0
- package/dist/nemesis/types.js.map +1 -0
- package/dist/nemesis/watermark.d.ts +32 -0
- package/dist/nemesis/watermark.d.ts.map +1 -0
- package/dist/nemesis/watermark.js +83 -0
- package/dist/nemesis/watermark.js.map +1 -0
- package/dist/truth_gate/claims.d.ts.map +1 -1
- package/dist/truth_gate/claims.js +10 -0
- package/dist/truth_gate/claims.js.map +1 -1
- package/dist/truth_gate/probes.d.ts.map +1 -1
- package/dist/truth_gate/probes.js +126 -0
- package/dist/truth_gate/probes.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.47.0 — NEMESIS SELF-CALIBRATING LEARNING LOOP.
|
|
3
|
+
*
|
|
4
|
+
* Wild idea no other agent-fingerprinter has: every CONFIRMED identity
|
|
5
|
+
* verdict appends the fixture to a per-repo calibration ledger; the
|
|
6
|
+
* classifier periodically recomputes stats from (seed + ledger) so the
|
|
7
|
+
* detector improves forever from real-world usage.
|
|
8
|
+
*
|
|
9
|
+
* Academic paper: trained once on 33,580 PRs, frozen.
|
|
10
|
+
* NEMESIS: starts at ≥95% on seed corpus + improves every CONFIRMED
|
|
11
|
+
* verdict for the rest of the install's life.
|
|
12
|
+
*
|
|
13
|
+
* Privacy: ledger lives ONLY in `.mneme/nemesis/calibration-ledger.jsonl`
|
|
14
|
+
* (local-first). Opt-in via env var `MNEME_NEMESIS_LEARN=1` (default
|
|
15
|
+
* OFF — user must explicitly enable to avoid silent data accumulation).
|
|
16
|
+
*
|
|
17
|
+
* Defensive: never throws; ledger cap 1000 rows.
|
|
18
|
+
*/
|
|
19
|
+
import type { CorpusEntry, VendorStats } from "./calibration_corpus.js";
|
|
20
|
+
import type { Fixture, VendorId } from "./types.js";
|
|
21
|
+
export interface AppendResult {
|
|
22
|
+
ok: boolean;
|
|
23
|
+
reason?: string;
|
|
24
|
+
appended: boolean;
|
|
25
|
+
/** Reason for skip (user not opted in / verdict not CONFIRMED). */
|
|
26
|
+
skipReason?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Append a CONFIRMED-verdict fixture to the calibration ledger.
|
|
30
|
+
* No-ops when MNEME_NEMESIS_LEARN is not set.
|
|
31
|
+
*/
|
|
32
|
+
export declare function appendCalibrationEntry(repoRoot: string, vendor: VendorId, fixture: Fixture): AppendResult;
|
|
33
|
+
export declare function readCalibrationLedger(repoRoot: string): CorpusEntry[];
|
|
34
|
+
/** Recompute per-vendor stats from (seed corpus + repo ledger). */
|
|
35
|
+
export declare function recomputeStats(repoRoot: string): Map<VendorId, VendorStats>;
|
|
36
|
+
export interface CalibrationStatus {
|
|
37
|
+
learnEnabled: boolean;
|
|
38
|
+
seedCount: number;
|
|
39
|
+
ledgerCount: number;
|
|
40
|
+
totalCount: number;
|
|
41
|
+
perVendor: Partial<Record<VendorId, number>>;
|
|
42
|
+
ledgerPath: string;
|
|
43
|
+
}
|
|
44
|
+
export declare function calibrationStatus(repoRoot: string): CalibrationStatus;
|
|
45
|
+
//# sourceMappingURL=learning_loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"learning_loop.d.ts","sourceRoot":"","sources":["../../src/nemesis/learning_loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAmBpD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,OAAO,GACf,YAAY,CA0Bd;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,CAerE;AAED,mEAAmE;AACnE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAI3E;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAerE"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.47.0 — NEMESIS SELF-CALIBRATING LEARNING LOOP.
|
|
3
|
+
*
|
|
4
|
+
* Wild idea no other agent-fingerprinter has: every CONFIRMED identity
|
|
5
|
+
* verdict appends the fixture to a per-repo calibration ledger; the
|
|
6
|
+
* classifier periodically recomputes stats from (seed + ledger) so the
|
|
7
|
+
* detector improves forever from real-world usage.
|
|
8
|
+
*
|
|
9
|
+
* Academic paper: trained once on 33,580 PRs, frozen.
|
|
10
|
+
* NEMESIS: starts at ≥95% on seed corpus + improves every CONFIRMED
|
|
11
|
+
* verdict for the rest of the install's life.
|
|
12
|
+
*
|
|
13
|
+
* Privacy: ledger lives ONLY in `.mneme/nemesis/calibration-ledger.jsonl`
|
|
14
|
+
* (local-first). Opt-in via env var `MNEME_NEMESIS_LEARN=1` (default
|
|
15
|
+
* OFF — user must explicitly enable to avoid silent data accumulation).
|
|
16
|
+
*
|
|
17
|
+
* Defensive: never throws; ledger cap 1000 rows.
|
|
18
|
+
*/
|
|
19
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, appendFileSync } from "node:fs";
|
|
20
|
+
import { join } from "node:path";
|
|
21
|
+
import { buildSeedCorpus, computeStats } from "./calibration_corpus.js";
|
|
22
|
+
const LEDGER_CAP = 1000;
|
|
23
|
+
function isLearnEnabled() {
|
|
24
|
+
return process.env["MNEME_NEMESIS_LEARN"] === "1" || process.env["MNEME_NEMESIS_LEARN"] === "true";
|
|
25
|
+
}
|
|
26
|
+
function dirOf(repoRoot) {
|
|
27
|
+
const dir = join(repoRoot, ".mneme", "nemesis");
|
|
28
|
+
try {
|
|
29
|
+
if (!existsSync(dir))
|
|
30
|
+
mkdirSync(dir, { recursive: true });
|
|
31
|
+
}
|
|
32
|
+
catch { /* */ }
|
|
33
|
+
return dir;
|
|
34
|
+
}
|
|
35
|
+
function ledgerPath(repoRoot) {
|
|
36
|
+
return join(dirOf(repoRoot), "calibration-ledger.jsonl");
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Append a CONFIRMED-verdict fixture to the calibration ledger.
|
|
40
|
+
* No-ops when MNEME_NEMESIS_LEARN is not set.
|
|
41
|
+
*/
|
|
42
|
+
export function appendCalibrationEntry(repoRoot, vendor, fixture) {
|
|
43
|
+
if (!isLearnEnabled()) {
|
|
44
|
+
return { ok: true, appended: false, skipReason: "MNEME_NEMESIS_LEARN not enabled (opt-in only)" };
|
|
45
|
+
}
|
|
46
|
+
if (!vendor || vendor === "unknown") {
|
|
47
|
+
return { ok: true, appended: false, skipReason: "vendor missing or unknown" };
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
const path = ledgerPath(repoRoot);
|
|
51
|
+
// Roll the ledger if it's at cap.
|
|
52
|
+
if (existsSync(path)) {
|
|
53
|
+
try {
|
|
54
|
+
const body = readFileSync(path, "utf8");
|
|
55
|
+
const lines = body.split("\n").filter(Boolean);
|
|
56
|
+
if (lines.length >= LEDGER_CAP) {
|
|
57
|
+
const trimmed = lines.slice(-(LEDGER_CAP - 1));
|
|
58
|
+
writeFileSync(path, trimmed.join("\n") + "\n");
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch { /* */ }
|
|
62
|
+
}
|
|
63
|
+
const entry = { at: new Date().toISOString(), vendor, fixture };
|
|
64
|
+
appendFileSync(path, JSON.stringify(entry) + "\n");
|
|
65
|
+
return { ok: true, appended: true };
|
|
66
|
+
}
|
|
67
|
+
catch (e) {
|
|
68
|
+
return { ok: false, reason: e.message, appended: false };
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export function readCalibrationLedger(repoRoot) {
|
|
72
|
+
try {
|
|
73
|
+
const path = ledgerPath(repoRoot);
|
|
74
|
+
if (!existsSync(path))
|
|
75
|
+
return [];
|
|
76
|
+
const body = readFileSync(path, "utf8");
|
|
77
|
+
const out = [];
|
|
78
|
+
for (const ln of body.split("\n")) {
|
|
79
|
+
if (!ln.trim())
|
|
80
|
+
continue;
|
|
81
|
+
try {
|
|
82
|
+
const j = JSON.parse(ln);
|
|
83
|
+
if (j && j.vendor && j.fixture)
|
|
84
|
+
out.push({ vendor: j.vendor, fixture: j.fixture });
|
|
85
|
+
}
|
|
86
|
+
catch { /* skip */ }
|
|
87
|
+
}
|
|
88
|
+
return out;
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return [];
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/** Recompute per-vendor stats from (seed corpus + repo ledger). */
|
|
95
|
+
export function recomputeStats(repoRoot) {
|
|
96
|
+
const seed = buildSeedCorpus();
|
|
97
|
+
const learned = readCalibrationLedger(repoRoot);
|
|
98
|
+
return computeStats([...seed, ...learned]);
|
|
99
|
+
}
|
|
100
|
+
export function calibrationStatus(repoRoot) {
|
|
101
|
+
const seed = buildSeedCorpus();
|
|
102
|
+
const learned = readCalibrationLedger(repoRoot);
|
|
103
|
+
const perVendor = {};
|
|
104
|
+
for (const e of [...seed, ...learned]) {
|
|
105
|
+
perVendor[e.vendor] = (perVendor[e.vendor] ?? 0) + 1;
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
learnEnabled: isLearnEnabled(),
|
|
109
|
+
seedCount: seed.length,
|
|
110
|
+
ledgerCount: learned.length,
|
|
111
|
+
totalCount: seed.length + learned.length,
|
|
112
|
+
perVendor,
|
|
113
|
+
ledgerPath: ledgerPath(repoRoot),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=learning_loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"learning_loop.js","sourceRoot":"","sources":["../../src/nemesis/learning_loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.46.0 — NEMESIS ORGAN 5: REPLAY ATTACK DETECTOR.
|
|
3
|
+
*
|
|
4
|
+
* Same vendor claimed; same/similar prompt fired twice; fingerprints
|
|
5
|
+
* diverge significantly → vendor likely swapped models silently
|
|
6
|
+
* ("stealth-upgrade" or "stealth-downgrade").
|
|
7
|
+
*
|
|
8
|
+
* Pure deterministic; takes two Fingerprint records + returns a flag.
|
|
9
|
+
*
|
|
10
|
+
* Heuristic: Euclidean distance over a curated set of high-discriminator
|
|
11
|
+
* features. Threshold > 1.0 = stealth swap. Direction is decided by the
|
|
12
|
+
* sign of conditional_density delta (Claude-like up → "upgrade"; down →
|
|
13
|
+
* "downgrade"). Generic vendors return "stealth-swap".
|
|
14
|
+
*/
|
|
15
|
+
export interface ReplayResult {
|
|
16
|
+
vendor: string;
|
|
17
|
+
alert: boolean;
|
|
18
|
+
/** Euclidean distance across discriminator features. */
|
|
19
|
+
distance: number;
|
|
20
|
+
/** "stealth-upgrade" / "stealth-downgrade" / "stealth-swap". */
|
|
21
|
+
kind: string;
|
|
22
|
+
reasoning: string;
|
|
23
|
+
}
|
|
24
|
+
export declare function detectReplayAttack(vendor: string, fpA: Record<string, number>, fpB: Record<string, number>, opts?: {
|
|
25
|
+
threshold?: number;
|
|
26
|
+
}): ReplayResult;
|
|
27
|
+
//# sourceMappingURL=replay_attack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay_attack.d.ts","sourceRoot":"","sources":["../../src/nemesis/replay_attack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAaH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,YAAY,CA0Bd"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.46.0 — NEMESIS ORGAN 5: REPLAY ATTACK DETECTOR.
|
|
3
|
+
*
|
|
4
|
+
* Same vendor claimed; same/similar prompt fired twice; fingerprints
|
|
5
|
+
* diverge significantly → vendor likely swapped models silently
|
|
6
|
+
* ("stealth-upgrade" or "stealth-downgrade").
|
|
7
|
+
*
|
|
8
|
+
* Pure deterministic; takes two Fingerprint records + returns a flag.
|
|
9
|
+
*
|
|
10
|
+
* Heuristic: Euclidean distance over a curated set of high-discriminator
|
|
11
|
+
* features. Threshold > 1.0 = stealth swap. Direction is decided by the
|
|
12
|
+
* sign of conditional_density delta (Claude-like up → "upgrade"; down →
|
|
13
|
+
* "downgrade"). Generic vendors return "stealth-swap".
|
|
14
|
+
*/
|
|
15
|
+
const DISCRIMINATORS = [
|
|
16
|
+
"conditional_density",
|
|
17
|
+
"multiline_commit_ratio",
|
|
18
|
+
"bullet_point_count",
|
|
19
|
+
"hyperlink_count",
|
|
20
|
+
"distributed_changes_score",
|
|
21
|
+
"pr_desc_length_chars",
|
|
22
|
+
"change_concentration",
|
|
23
|
+
"mean_line_length",
|
|
24
|
+
];
|
|
25
|
+
function safeNumber(fp, k) {
|
|
26
|
+
if (!fp)
|
|
27
|
+
return 0;
|
|
28
|
+
const v = fp[k];
|
|
29
|
+
return Number.isFinite(v) ? v : 0;
|
|
30
|
+
}
|
|
31
|
+
export function detectReplayAttack(vendor, fpA, fpB, opts = {}) {
|
|
32
|
+
const threshold = opts.threshold ?? 0.6;
|
|
33
|
+
let sumSq = 0;
|
|
34
|
+
for (const k of DISCRIMINATORS) {
|
|
35
|
+
const a = safeNumber(fpA, k);
|
|
36
|
+
const b = safeNumber(fpB, k);
|
|
37
|
+
sumSq += (a - b) ** 2;
|
|
38
|
+
}
|
|
39
|
+
const distance = Math.sqrt(sumSq);
|
|
40
|
+
const alert = distance >= threshold;
|
|
41
|
+
let kind = "stable";
|
|
42
|
+
let reasoning = "within expected variance";
|
|
43
|
+
if (alert) {
|
|
44
|
+
const deltaConditional = safeNumber(fpB, "conditional_density") - safeNumber(fpA, "conditional_density");
|
|
45
|
+
if (deltaConditional > 0.20) {
|
|
46
|
+
kind = "stealth-upgrade";
|
|
47
|
+
reasoning = `${vendor} conditional density grew from ${safeNumber(fpA, "conditional_density").toFixed(2)} → ${safeNumber(fpB, "conditional_density").toFixed(2)} (model likely smarter)`;
|
|
48
|
+
}
|
|
49
|
+
else if (deltaConditional < -0.20) {
|
|
50
|
+
kind = "stealth-downgrade";
|
|
51
|
+
reasoning = `${vendor} conditional density dropped from ${safeNumber(fpA, "conditional_density").toFixed(2)} → ${safeNumber(fpB, "conditional_density").toFixed(2)} (model likely smaller)`;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
kind = "stealth-swap";
|
|
55
|
+
reasoning = `${vendor} fingerprint shifted by distance ${distance.toFixed(2)} across ${DISCRIMINATORS.length} features (model likely swapped)`;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return { vendor, alert, distance, kind, reasoning };
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=replay_attack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay_attack.js","sourceRoot":"","sources":["../../src/nemesis/replay_attack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,cAAc,GAAG;IACrB,qBAAqB;IACrB,wBAAwB;IACxB,oBAAoB;IACpB,iBAAiB;IACjB,2BAA2B;IAC3B,sBAAsB;IACtB,sBAAsB;IACtB,kBAAkB;CACnB,CAAC;AAYF,SAAS,UAAU,CAAC,EAAsC,EAAE,CAAS;IACnE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,CAAC;IAClB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAChB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,GAA2B,EAC3B,GAA2B,EAC3B,OAA+B,EAAE;IAEjC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;IACxC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC7B,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,QAAQ,IAAI,SAAS,CAAC;IACpC,IAAI,IAAI,GAAG,QAAQ,CAAC;IACpB,IAAI,SAAS,GAAG,0BAA0B,CAAC;IAC3C,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,EAAE,qBAAqB,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;QACzG,IAAI,gBAAgB,GAAG,IAAI,EAAE,CAAC;YAC5B,IAAI,GAAG,iBAAiB,CAAC;YACzB,SAAS,GAAG,GAAG,MAAM,kCAAkC,UAAU,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC;QAC3L,CAAC;aAAM,IAAI,gBAAgB,GAAG,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,GAAG,mBAAmB,CAAC;YAC3B,SAAS,GAAG,GAAG,MAAM,qCAAqC,UAAU,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC;QAC9L,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,cAAc,CAAC;YACtB,SAAS,GAAG,GAAG,MAAM,oCAAoC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,cAAc,CAAC,MAAM,kCAAkC,CAAC;QACjJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.46.0 — NEMESIS types.
|
|
3
|
+
*
|
|
4
|
+
* Inspired by arxiv 2601.17406 (Jan 2026): "Fingerprinting AI Coding
|
|
5
|
+
* Agents in the Wild" — 97.2% F1 across 33,580 PRs using 41 features.
|
|
6
|
+
* Vendors covered: Codex / Claude Code / Copilot / Cursor / Devin.
|
|
7
|
+
*/
|
|
8
|
+
export type VendorId = "codex" | "claude-code" | "copilot" | "cursor" | "devin" | "unknown";
|
|
9
|
+
export interface Fixture {
|
|
10
|
+
/** Unified-diff text. */
|
|
11
|
+
diff: string;
|
|
12
|
+
/** PR / merge-request description (markdown). */
|
|
13
|
+
prDescription: string;
|
|
14
|
+
/** Each commit message (one element per commit). */
|
|
15
|
+
commitMessages: string[];
|
|
16
|
+
}
|
|
17
|
+
/** The 41 numeric features extracted from a fixture. Pure-numeric: every
|
|
18
|
+
* value is a real number in [0, +inf). Most are ratios in [0, 1]; a few
|
|
19
|
+
* are counts. */
|
|
20
|
+
export interface Fingerprint {
|
|
21
|
+
/** Fraction of commits that contain a newline. */
|
|
22
|
+
multiline_commit_ratio: number;
|
|
23
|
+
/** Mean lines per commit message (across all commits). */
|
|
24
|
+
mean_commit_lines: number;
|
|
25
|
+
/** Max commit message length (chars). */
|
|
26
|
+
max_commit_chars: number;
|
|
27
|
+
/** Total commit count. */
|
|
28
|
+
commit_count: number;
|
|
29
|
+
/** Conditional keyword count divided by added-line count. */
|
|
30
|
+
conditional_density: number;
|
|
31
|
+
/** Total `if` / `else if` keywords in the diff. */
|
|
32
|
+
if_count: number;
|
|
33
|
+
/** `switch` / `case` keyword count. */
|
|
34
|
+
switch_count: number;
|
|
35
|
+
/** `try` / `catch` keyword count. */
|
|
36
|
+
try_count: number;
|
|
37
|
+
/** Length of PR description (chars). */
|
|
38
|
+
pr_desc_length_chars: number;
|
|
39
|
+
/** Length of PR description (words). */
|
|
40
|
+
pr_desc_length_words: number;
|
|
41
|
+
/** Length of PR description (lines). */
|
|
42
|
+
pr_desc_length_lines: number;
|
|
43
|
+
/** Count of markdown bullet markers (-, *, +) at line starts. */
|
|
44
|
+
bullet_point_count: number;
|
|
45
|
+
/** Count of markdown hyperlinks `[text](url)` + bare URLs. */
|
|
46
|
+
hyperlink_count: number;
|
|
47
|
+
/** Count of markdown headings (`#` ... `######`). */
|
|
48
|
+
heading_count: number;
|
|
49
|
+
/** Count of fenced code blocks (```). */
|
|
50
|
+
code_fence_count: number;
|
|
51
|
+
/** Count of inline-code spans (backticks). */
|
|
52
|
+
inline_code_count: number;
|
|
53
|
+
/** 1 - distributed_changes_score; high = changes concentrated in few files. */
|
|
54
|
+
change_concentration: number;
|
|
55
|
+
/** Shannon-entropy-style spread of changes across files (0..1). */
|
|
56
|
+
distributed_changes_score: number;
|
|
57
|
+
/** Number of distinct files touched. */
|
|
58
|
+
files_touched: number;
|
|
59
|
+
added_lines: number;
|
|
60
|
+
removed_lines: number;
|
|
61
|
+
/** Net = added - removed. */
|
|
62
|
+
net_lines: number;
|
|
63
|
+
/** Mean added-line length (chars). */
|
|
64
|
+
mean_line_length: number;
|
|
65
|
+
/** Max added-line length. */
|
|
66
|
+
max_line_length: number;
|
|
67
|
+
/** Fraction of added lines that exceed 100 chars. */
|
|
68
|
+
long_line_ratio: number;
|
|
69
|
+
/** Lines starting with `//` `#` `/*` `*` divided by added lines. */
|
|
70
|
+
comment_ratio: number;
|
|
71
|
+
/** Blank lines / added lines. */
|
|
72
|
+
blank_line_ratio: number;
|
|
73
|
+
test_files_touched: number;
|
|
74
|
+
doc_files_touched: number;
|
|
75
|
+
/** Fraction of files that look like tests. */
|
|
76
|
+
test_file_ratio: number;
|
|
77
|
+
/** Count of `console.log` / `print(` debug calls left in. */
|
|
78
|
+
debug_print_count: number;
|
|
79
|
+
/** Count of `TODO` / `FIXME` markers. */
|
|
80
|
+
todo_marker_count: number;
|
|
81
|
+
/** New `import` / `require` lines. */
|
|
82
|
+
import_count: number;
|
|
83
|
+
/** Relative import count. */
|
|
84
|
+
relative_import_count: number;
|
|
85
|
+
/** Semicolon density in added lines. */
|
|
86
|
+
semicolon_density: number;
|
|
87
|
+
/** Brace density `{` `}`. */
|
|
88
|
+
brace_density: number;
|
|
89
|
+
/** Paren density `(` `)`. */
|
|
90
|
+
paren_density: number;
|
|
91
|
+
/** camelCase identifier count. */
|
|
92
|
+
camel_case_count: number;
|
|
93
|
+
/** snake_case identifier count. */
|
|
94
|
+
snake_case_count: number;
|
|
95
|
+
/** Mean identifier length. */
|
|
96
|
+
mean_identifier_length: number;
|
|
97
|
+
/** Count of bullet markers in COMMIT messages. */
|
|
98
|
+
commit_bullet_count: number;
|
|
99
|
+
}
|
|
100
|
+
export interface AgentVerdict {
|
|
101
|
+
/** Top-ranked vendor; "unknown" when all scores tie at 0. */
|
|
102
|
+
topVendor: VendorId;
|
|
103
|
+
/** Confidence ∈ [0, 1] = topScore / sum(scores). */
|
|
104
|
+
confidence: number;
|
|
105
|
+
/** Per-vendor signature-match score. */
|
|
106
|
+
scores: Partial<Record<VendorId, number>>;
|
|
107
|
+
/** One-line explanation of which features drove the verdict. */
|
|
108
|
+
reasoning: string;
|
|
109
|
+
}
|
|
110
|
+
export type IdentityVerdictKind = "CONFIRMED" | "DISPUTED" | "IMPOSSIBLE" | "INCONCLUSIVE";
|
|
111
|
+
export interface IdentityClaimInput {
|
|
112
|
+
claimedVendor: string;
|
|
113
|
+
fixture: Fixture;
|
|
114
|
+
}
|
|
115
|
+
export interface IdentityVerdict {
|
|
116
|
+
verdict: IdentityVerdictKind;
|
|
117
|
+
claimedVendor: string;
|
|
118
|
+
fingerprintTop: VendorId;
|
|
119
|
+
fingerprintConfidence: number;
|
|
120
|
+
/** One-line summary. */
|
|
121
|
+
reasoning: string;
|
|
122
|
+
/** HMAC over canonical(verdict + claimedVendor + topVendor + confidence). */
|
|
123
|
+
hmac: string;
|
|
124
|
+
}
|
|
125
|
+
export interface Article50StampInput {
|
|
126
|
+
/** Original commit message / content text. */
|
|
127
|
+
message: string;
|
|
128
|
+
/** Vendor that generated the content. */
|
|
129
|
+
vendor: string;
|
|
130
|
+
/** Caller's confidence in attribution (0..1). */
|
|
131
|
+
confidence: number;
|
|
132
|
+
/** Optional content-type override (default text/x-source-code). */
|
|
133
|
+
contentType?: string;
|
|
134
|
+
}
|
|
135
|
+
export interface Article50Stamp {
|
|
136
|
+
/** ISO timestamp. */
|
|
137
|
+
at: string;
|
|
138
|
+
vendor: string;
|
|
139
|
+
confidence: number;
|
|
140
|
+
contentType: string;
|
|
141
|
+
/** HMAC over canonical(at + vendor + confidence + contentType + message). */
|
|
142
|
+
hmac: string;
|
|
143
|
+
/** "EU-AI-ACT-2024" — locked. */
|
|
144
|
+
regime: string;
|
|
145
|
+
/** "50" — Article number. */
|
|
146
|
+
article: string;
|
|
147
|
+
}
|
|
148
|
+
export interface StampResult {
|
|
149
|
+
ok: boolean;
|
|
150
|
+
reason?: string;
|
|
151
|
+
/** message + machine-readable disclosure block appended. */
|
|
152
|
+
stampedMessage: string;
|
|
153
|
+
stamp: Article50Stamp;
|
|
154
|
+
}
|
|
155
|
+
export interface VerifyStampResult {
|
|
156
|
+
valid: boolean;
|
|
157
|
+
reason?: string;
|
|
158
|
+
parsed?: Article50Stamp;
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/nemesis/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.46.0 — NEMESIS types.
|
|
3
|
+
*
|
|
4
|
+
* Inspired by arxiv 2601.17406 (Jan 2026): "Fingerprinting AI Coding
|
|
5
|
+
* Agents in the Wild" — 97.2% F1 across 33,580 PRs using 41 features.
|
|
6
|
+
* Vendors covered: Codex / Claude Code / Copilot / Cursor / Devin.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/nemesis/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.46.0 — NEMESIS ORGAN 3 wild-idea: WHITESPACE-STEGO WATERMARK.
|
|
3
|
+
*
|
|
4
|
+
* Encodes a short vendor tag (e.g. "claude", "cursor") into a string
|
|
5
|
+
* using zero-width Unicode characters. Result is BYTE-different but
|
|
6
|
+
* VISUALLY identical — so an AI-injected code comment can carry a
|
|
7
|
+
* tamper-evident vendor watermark that survives copy-paste through
|
|
8
|
+
* any text editor.
|
|
9
|
+
*
|
|
10
|
+
* Encoding alphabet (3 chars, base-3):
|
|
11
|
+
* U+200B ZERO WIDTH SPACE → digit 0
|
|
12
|
+
* U+200C ZERO WIDTH NON-JOINER → digit 1
|
|
13
|
+
* U+200D ZERO WIDTH JOINER → digit 2
|
|
14
|
+
*
|
|
15
|
+
* Each input byte (0-255) becomes 6 base-3 digits (3^6 = 729 ≥ 256).
|
|
16
|
+
*
|
|
17
|
+
* Use case: append `// AI: <invisible-watermark>` to a code comment;
|
|
18
|
+
* GREP detects the visible prefix; decoder reveals the vendor.
|
|
19
|
+
*
|
|
20
|
+
* Pure deterministic; never throws.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Encode a watermark into a visible prefix string.
|
|
24
|
+
* Returns prefix + zero-width-encoded payload.
|
|
25
|
+
*/
|
|
26
|
+
export declare function encodeWatermark(visiblePrefix: string, payload: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Decode a watermark out of a line. Returns "" when no watermark present
|
|
29
|
+
* OR the encoded bytes don't form valid UTF-8.
|
|
30
|
+
*/
|
|
31
|
+
export declare function decodeWatermark(line: string): string;
|
|
32
|
+
//# sourceMappingURL=watermark.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watermark.d.ts","sourceRoot":"","sources":["../../src/nemesis/watermark.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AA2BH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAM9E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBpD"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.46.0 — NEMESIS ORGAN 3 wild-idea: WHITESPACE-STEGO WATERMARK.
|
|
3
|
+
*
|
|
4
|
+
* Encodes a short vendor tag (e.g. "claude", "cursor") into a string
|
|
5
|
+
* using zero-width Unicode characters. Result is BYTE-different but
|
|
6
|
+
* VISUALLY identical — so an AI-injected code comment can carry a
|
|
7
|
+
* tamper-evident vendor watermark that survives copy-paste through
|
|
8
|
+
* any text editor.
|
|
9
|
+
*
|
|
10
|
+
* Encoding alphabet (3 chars, base-3):
|
|
11
|
+
* U+200B ZERO WIDTH SPACE → digit 0
|
|
12
|
+
* U+200C ZERO WIDTH NON-JOINER → digit 1
|
|
13
|
+
* U+200D ZERO WIDTH JOINER → digit 2
|
|
14
|
+
*
|
|
15
|
+
* Each input byte (0-255) becomes 6 base-3 digits (3^6 = 729 ≥ 256).
|
|
16
|
+
*
|
|
17
|
+
* Use case: append `// AI: <invisible-watermark>` to a code comment;
|
|
18
|
+
* GREP detects the visible prefix; decoder reveals the vendor.
|
|
19
|
+
*
|
|
20
|
+
* Pure deterministic; never throws.
|
|
21
|
+
*/
|
|
22
|
+
const D0 = ""; // ZWSP
|
|
23
|
+
const D1 = ""; // ZWNJ
|
|
24
|
+
const D2 = ""; // ZWJ
|
|
25
|
+
const DIGITS = [D0, D1, D2];
|
|
26
|
+
function byteToBase3(b) {
|
|
27
|
+
let n = b & 0xff;
|
|
28
|
+
let s = "";
|
|
29
|
+
for (let i = 0; i < 6; i++) {
|
|
30
|
+
s = DIGITS[n % 3] + s;
|
|
31
|
+
n = Math.floor(n / 3);
|
|
32
|
+
}
|
|
33
|
+
return s;
|
|
34
|
+
}
|
|
35
|
+
function base3ToByte(s) {
|
|
36
|
+
let n = 0;
|
|
37
|
+
for (const ch of s) {
|
|
38
|
+
const d = ch === D0 ? 0 : ch === D1 ? 1 : ch === D2 ? 2 : -1;
|
|
39
|
+
if (d === -1)
|
|
40
|
+
return -1;
|
|
41
|
+
n = n * 3 + d;
|
|
42
|
+
}
|
|
43
|
+
return n & 0xff;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Encode a watermark into a visible prefix string.
|
|
47
|
+
* Returns prefix + zero-width-encoded payload.
|
|
48
|
+
*/
|
|
49
|
+
export function encodeWatermark(visiblePrefix, payload) {
|
|
50
|
+
if (!payload)
|
|
51
|
+
return visiblePrefix;
|
|
52
|
+
const bytes = Buffer.from(payload, "utf8");
|
|
53
|
+
let out = visiblePrefix;
|
|
54
|
+
for (const b of bytes)
|
|
55
|
+
out += byteToBase3(b);
|
|
56
|
+
return out;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Decode a watermark out of a line. Returns "" when no watermark present
|
|
60
|
+
* OR the encoded bytes don't form valid UTF-8.
|
|
61
|
+
*/
|
|
62
|
+
export function decodeWatermark(line) {
|
|
63
|
+
if (!line)
|
|
64
|
+
return "";
|
|
65
|
+
// Extract only the zero-width chars
|
|
66
|
+
const zw = line.replace(/[^]/g, "");
|
|
67
|
+
if (zw.length === 0 || zw.length % 6 !== 0)
|
|
68
|
+
return "";
|
|
69
|
+
const bytes = [];
|
|
70
|
+
for (let i = 0; i < zw.length; i += 6) {
|
|
71
|
+
const b = base3ToByte(zw.slice(i, i + 6));
|
|
72
|
+
if (b === -1)
|
|
73
|
+
return "";
|
|
74
|
+
bytes.push(b);
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
return Buffer.from(bytes).toString("utf8");
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return "";
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=watermark.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watermark.js","sourceRoot":"","sources":["../../src/nemesis/watermark.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claims.d.ts","sourceRoot":"","sources":["../../src/truth_gate/claims.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"claims.d.ts","sourceRoot":"","sources":["../../src/truth_gate/claims.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,KAAK,CA+N9C,CAAC"}
|
|
@@ -196,6 +196,16 @@ export const CLAIM_CATALOG = [
|
|
|
196
196
|
probeId: "probe.mnemnet.federation_default_off",
|
|
197
197
|
severity: "block",
|
|
198
198
|
},
|
|
199
|
+
// ── v2.46.0 — NEMESIS world-first agent fingerprinter self-verify ───
|
|
200
|
+
{
|
|
201
|
+
id: "claim.nemesis.world_first",
|
|
202
|
+
source: "v2.46.0 release notes",
|
|
203
|
+
text: "NEMESIS is the world's first Anti-Identity-Lie Engine for AI coding agents — fingerprints 5 vendors (Codex/Claude Code/Copilot/Cursor/Devin) with HMAC verdicts + auto-stamps EU AI Act Article 50 disclosure",
|
|
204
|
+
kind: "numeric",
|
|
205
|
+
asserted: { value: 1, op: "=", unit: "boolean" },
|
|
206
|
+
probeId: "probe.nemesis.world_first_agent_fingerprinter",
|
|
207
|
+
severity: "block",
|
|
208
|
+
},
|
|
199
209
|
// ── v2.45.0 — AUTO-INIT zero-command-install self-verify ────────────
|
|
200
210
|
{
|
|
201
211
|
id: "claim.auto_init.zero_command",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../../src/truth_gate/claims.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../../src/truth_gate/claims.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probes.d.ts","sourceRoot":"","sources":["../../src/truth_gate/probes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"probes.d.ts","sourceRoot":"","sources":["../../src/truth_gate/probes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAmwBnE,eAAO,MAAM,UAAU,EAAE,aAAa,CAAC,KAAK,CAAU,CAAC;AAEvD,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAEvD;AAED,wBAAsB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAQlF"}
|