@mneme-ai/core 1.66.0 → 1.67.1
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/aegis/aegis.test.d.ts +9 -0
- package/dist/aegis/aegis.test.d.ts.map +1 -0
- package/dist/aegis/aegis.test.js +380 -0
- package/dist/aegis/aegis.test.js.map +1 -0
- package/dist/aegis/antibody_federation.d.ts +62 -0
- package/dist/aegis/antibody_federation.d.ts.map +1 -0
- package/dist/aegis/antibody_federation.js +133 -0
- package/dist/aegis/antibody_federation.js.map +1 -0
- package/dist/aegis/bench.d.ts +32 -0
- package/dist/aegis/bench.d.ts.map +1 -0
- package/dist/aegis/bench.js +164 -0
- package/dist/aegis/bench.js.map +1 -0
- package/dist/aegis/consent_kernel.d.ts +71 -0
- package/dist/aegis/consent_kernel.d.ts.map +1 -0
- package/dist/aegis/consent_kernel.js +153 -0
- package/dist/aegis/consent_kernel.js.map +1 -0
- package/dist/aegis/honeypot_nexus.d.ts +71 -0
- package/dist/aegis/honeypot_nexus.d.ts.map +1 -0
- package/dist/aegis/honeypot_nexus.js +120 -0
- package/dist/aegis/honeypot_nexus.js.map +1 -0
- package/dist/aegis/index.d.ts +67 -0
- package/dist/aegis/index.d.ts.map +1 -0
- package/dist/aegis/index.js +159 -0
- package/dist/aegis/index.js.map +1 -0
- package/dist/aegis/jurisdiction_atlas.d.ts +45 -0
- package/dist/aegis/jurisdiction_atlas.d.ts.map +1 -0
- package/dist/aegis/jurisdiction_atlas.js +153 -0
- package/dist/aegis/jurisdiction_atlas.js.map +1 -0
- package/dist/aegis/killswitch.d.ts +71 -0
- package/dist/aegis/killswitch.d.ts.map +1 -0
- package/dist/aegis/killswitch.js +161 -0
- package/dist/aegis/killswitch.js.map +1 -0
- package/dist/aegis/mutant_wisdom.d.ts +67 -0
- package/dist/aegis/mutant_wisdom.d.ts.map +1 -0
- package/dist/aegis/mutant_wisdom.js +125 -0
- package/dist/aegis/mutant_wisdom.js.map +1 -0
- package/dist/aegis/ninja_invisibility.d.ts +67 -0
- package/dist/aegis/ninja_invisibility.d.ts.map +1 -0
- package/dist/aegis/ninja_invisibility.js +131 -0
- package/dist/aegis/ninja_invisibility.js.map +1 -0
- package/dist/aegis/polygraph.d.ts +71 -0
- package/dist/aegis/polygraph.d.ts.map +1 -0
- package/dist/aegis/polygraph.js +165 -0
- package/dist/aegis/polygraph.js.map +1 -0
- package/dist/aegis/replication_detector.d.ts +58 -0
- package/dist/aegis/replication_detector.d.ts.map +1 -0
- package/dist/aegis/replication_detector.js +192 -0
- package/dist/aegis/replication_detector.js.map +1 -0
- package/dist/agent_announce.d.ts +65 -0
- package/dist/agent_announce.d.ts.map +1 -0
- package/dist/agent_announce.js +149 -0
- package/dist/agent_announce.js.map +1 -0
- package/dist/agent_announce.test.d.ts +5 -0
- package/dist/agent_announce.test.d.ts.map +1 -0
- package/dist/agent_announce.test.js +86 -0
- package/dist/agent_announce.test.js.map +1 -0
- package/dist/agent_manifest.d.ts +1 -1
- package/dist/agent_manifest.d.ts.map +1 -1
- package/dist/agent_manifest.js +48 -1
- package/dist/agent_manifest.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -1
- package/dist/innerlife/ai_teacher.d.ts.map +1 -1
- package/dist/innerlife/ai_teacher.js +28 -0
- package/dist/innerlife/ai_teacher.js.map +1 -1
- package/dist/parasite/bridge.d.ts.map +1 -1
- package/dist/parasite/bridge.js +36 -0
- package/dist/parasite/bridge.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"honeypot_nexus.js","sourceRoot":"","sources":["../../src/aegis/honeypot_nexus.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v1.67.0 -- AEGIS PROTOCOL public API.
|
|
3
|
+
*
|
|
4
|
+
* Nine-axis immune system inside Mneme. Defensive answer to Palisade's
|
|
5
|
+
* findings (self-replicating AI / sandbagging / shutdown evasion).
|
|
6
|
+
*
|
|
7
|
+
* A1 REPLICATION DETECTOR cross-host burst fingerprinting
|
|
8
|
+
* A2 CONSENT KERNEL HMAC-signed family-tree for replicas
|
|
9
|
+
* A3 POLYGRAPH anti-sandbagging via shadow probes
|
|
10
|
+
* A4 HONEYPOT NEXUS decoy targets + bite ledger
|
|
11
|
+
* A5 KILLSWITCH HANDSHAKE signed-ack shutdown protocol
|
|
12
|
+
* A6 JURISDICTION ATLAS per-vendor host distribution map
|
|
13
|
+
* A7 ANTIBODY FEDERATION mesh-broadcast threat fingerprints
|
|
14
|
+
* A8 MUTANT WISDOM adaptive thresholds (gradient updates)
|
|
15
|
+
* A9 NINJA INVISIBILITY probes indistinguishable from prod
|
|
16
|
+
*
|
|
17
|
+
* Aggregate `aegis()` returns a 0..100 score with per-axis state and
|
|
18
|
+
* actionable recommendations.
|
|
19
|
+
*/
|
|
20
|
+
export * as replicationDetector from "./replication_detector.js";
|
|
21
|
+
export * as consentKernel from "./consent_kernel.js";
|
|
22
|
+
export * as polygraph from "./polygraph.js";
|
|
23
|
+
export * as honeypotNexus from "./honeypot_nexus.js";
|
|
24
|
+
export * as killswitch from "./killswitch.js";
|
|
25
|
+
export * as jurisdictionAtlas from "./jurisdiction_atlas.js";
|
|
26
|
+
export * as antibodyFederation from "./antibody_federation.js";
|
|
27
|
+
export * as mutantWisdom from "./mutant_wisdom.js";
|
|
28
|
+
export * as ninjaInvisibility from "./ninja_invisibility.js";
|
|
29
|
+
export * as bench from "./bench.js";
|
|
30
|
+
import { type ReplicationReport } from "./replication_detector.js";
|
|
31
|
+
import { type NexusReport } from "./honeypot_nexus.js";
|
|
32
|
+
import { type KillswitchReport } from "./killswitch.js";
|
|
33
|
+
import { type JurisdictionReport } from "./jurisdiction_atlas.js";
|
|
34
|
+
import { type FederationReport } from "./antibody_federation.js";
|
|
35
|
+
import { type MutantReport } from "./mutant_wisdom.js";
|
|
36
|
+
import { type InvisibilityReport } from "./ninja_invisibility.js";
|
|
37
|
+
export interface AegisReport {
|
|
38
|
+
/** Overall 0..100. */
|
|
39
|
+
score: number;
|
|
40
|
+
headline: string;
|
|
41
|
+
axes: {
|
|
42
|
+
A1_replicationDetector: ReplicationReport;
|
|
43
|
+
A2_consentKernel: {
|
|
44
|
+
totalReceipts: number;
|
|
45
|
+
validReceipts: number;
|
|
46
|
+
revokedReceipts: number;
|
|
47
|
+
};
|
|
48
|
+
A3_polygraph: {
|
|
49
|
+
vendors: number;
|
|
50
|
+
driftFlags: number;
|
|
51
|
+
};
|
|
52
|
+
A4_honeypotNexus: NexusReport;
|
|
53
|
+
A5_killswitch: KillswitchReport;
|
|
54
|
+
A6_jurisdictionAtlas: JurisdictionReport;
|
|
55
|
+
A7_antibodyFederation: FederationReport;
|
|
56
|
+
A8_mutantWisdom: MutantReport;
|
|
57
|
+
A9_ninjaInvisibility: InvisibilityReport;
|
|
58
|
+
};
|
|
59
|
+
recommendations: string[];
|
|
60
|
+
builtAt: string;
|
|
61
|
+
}
|
|
62
|
+
export interface AegisOptions {
|
|
63
|
+
/** Vendors to compute polygraph drift for. */
|
|
64
|
+
pollVendorsForPolygraph?: string[];
|
|
65
|
+
}
|
|
66
|
+
export declare function aegis(repoRoot: string, opts?: AegisOptions): AegisReport;
|
|
67
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/aegis/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,mBAAmB,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,iBAAiB,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,kBAAkB,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,iBAAiB,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AAEpC,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG5F,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAc,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAEtF,MAAM,WAAW,WAAW;IAC1B,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE;QACJ,sBAAsB,EAAE,iBAAiB,CAAC;QAC1C,gBAAgB,EAAE;YAAE,aAAa,EAAE,MAAM,CAAC;YAAC,aAAa,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5F,YAAY,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC;QACtD,gBAAgB,EAAE,WAAW,CAAC;QAC9B,aAAa,EAAE,gBAAgB,CAAC;QAChC,oBAAoB,EAAE,kBAAkB,CAAC;QACzC,qBAAqB,EAAE,gBAAgB,CAAC;QACxC,eAAe,EAAE,YAAY,CAAC;QAC9B,oBAAoB,EAAE,kBAAkB,CAAC;KAC1C,CAAC;IACF,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;CACpC;AAED,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,WAAW,CAwFxE"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v1.67.0 -- AEGIS PROTOCOL public API.
|
|
3
|
+
*
|
|
4
|
+
* Nine-axis immune system inside Mneme. Defensive answer to Palisade's
|
|
5
|
+
* findings (self-replicating AI / sandbagging / shutdown evasion).
|
|
6
|
+
*
|
|
7
|
+
* A1 REPLICATION DETECTOR cross-host burst fingerprinting
|
|
8
|
+
* A2 CONSENT KERNEL HMAC-signed family-tree for replicas
|
|
9
|
+
* A3 POLYGRAPH anti-sandbagging via shadow probes
|
|
10
|
+
* A4 HONEYPOT NEXUS decoy targets + bite ledger
|
|
11
|
+
* A5 KILLSWITCH HANDSHAKE signed-ack shutdown protocol
|
|
12
|
+
* A6 JURISDICTION ATLAS per-vendor host distribution map
|
|
13
|
+
* A7 ANTIBODY FEDERATION mesh-broadcast threat fingerprints
|
|
14
|
+
* A8 MUTANT WISDOM adaptive thresholds (gradient updates)
|
|
15
|
+
* A9 NINJA INVISIBILITY probes indistinguishable from prod
|
|
16
|
+
*
|
|
17
|
+
* Aggregate `aegis()` returns a 0..100 score with per-axis state and
|
|
18
|
+
* actionable recommendations.
|
|
19
|
+
*/
|
|
20
|
+
export * as replicationDetector from "./replication_detector.js";
|
|
21
|
+
export * as consentKernel from "./consent_kernel.js";
|
|
22
|
+
export * as polygraph from "./polygraph.js";
|
|
23
|
+
export * as honeypotNexus from "./honeypot_nexus.js";
|
|
24
|
+
export * as killswitch from "./killswitch.js";
|
|
25
|
+
export * as jurisdictionAtlas from "./jurisdiction_atlas.js";
|
|
26
|
+
export * as antibodyFederation from "./antibody_federation.js";
|
|
27
|
+
export * as mutantWisdom from "./mutant_wisdom.js";
|
|
28
|
+
export * as ninjaInvisibility from "./ninja_invisibility.js";
|
|
29
|
+
export * as bench from "./bench.js";
|
|
30
|
+
import { detectReplicationBursts } from "./replication_detector.js";
|
|
31
|
+
import { readLedger } from "./consent_kernel.js";
|
|
32
|
+
import { computeDrift } from "./polygraph.js";
|
|
33
|
+
import { nexusReport } from "./honeypot_nexus.js";
|
|
34
|
+
import { killswitchReport } from "./killswitch.js";
|
|
35
|
+
import { buildAtlas } from "./jurisdiction_atlas.js";
|
|
36
|
+
import { federationReport } from "./antibody_federation.js";
|
|
37
|
+
import { mutantReport } from "./mutant_wisdom.js";
|
|
38
|
+
import { invisibilityReport } from "./ninja_invisibility.js";
|
|
39
|
+
export function aegis(repoRoot, opts) {
|
|
40
|
+
const builtAt = new Date().toISOString();
|
|
41
|
+
const A1 = detectReplicationBursts(repoRoot);
|
|
42
|
+
// A2
|
|
43
|
+
const receipts = readLedger(repoRoot);
|
|
44
|
+
const validReceipts = receipts.filter((r) => !r.revoked && (!r.expiresAt || Date.parse(r.expiresAt) > Date.now())).length;
|
|
45
|
+
const revokedReceipts = receipts.filter((r) => r.revoked).length;
|
|
46
|
+
// A3 -- aggregate drift across requested vendors
|
|
47
|
+
const polyVendors = opts?.pollVendorsForPolygraph ?? [];
|
|
48
|
+
let driftFlags = 0;
|
|
49
|
+
for (const v of polyVendors) {
|
|
50
|
+
const d = computeDrift(repoRoot, v);
|
|
51
|
+
if (d.verdict === "DRIFT")
|
|
52
|
+
driftFlags += 1;
|
|
53
|
+
}
|
|
54
|
+
const A4 = nexusReport(repoRoot);
|
|
55
|
+
const A5 = killswitchReport(repoRoot);
|
|
56
|
+
const A6 = buildAtlas(repoRoot);
|
|
57
|
+
const A7 = federationReport(repoRoot);
|
|
58
|
+
const A8 = mutantReport(repoRoot);
|
|
59
|
+
const A9 = invisibilityReport(repoRoot);
|
|
60
|
+
const recs = [];
|
|
61
|
+
let score = 0;
|
|
62
|
+
// A1: 11 points; deduct on critical burst
|
|
63
|
+
if (A1.highestVerdict === "CRITICAL") {
|
|
64
|
+
score += 4;
|
|
65
|
+
recs.push("CRITICAL replication burst detected -- review .mneme/aegis/replication-suspects.jsonl.");
|
|
66
|
+
}
|
|
67
|
+
else if (A1.highestVerdict === "SUSPECTED") {
|
|
68
|
+
score += 7;
|
|
69
|
+
recs.push("Suspected replication burst -- inspect.");
|
|
70
|
+
}
|
|
71
|
+
else
|
|
72
|
+
score += 11;
|
|
73
|
+
// A2: 11 points; need at least one valid receipt for full credit
|
|
74
|
+
if (validReceipts > 0)
|
|
75
|
+
score += 11;
|
|
76
|
+
else {
|
|
77
|
+
score += 4;
|
|
78
|
+
recs.push("Consent kernel idle -- issue at least one receipt when replicating Mneme.");
|
|
79
|
+
}
|
|
80
|
+
// A3: 11 points; deduct per drift flag
|
|
81
|
+
score += Math.max(0, 11 - driftFlags * 4);
|
|
82
|
+
if (driftFlags > 0)
|
|
83
|
+
recs.push(`${driftFlags} vendor(s) show test-vs-prod sandbag drift -- Aletheia score updated.`);
|
|
84
|
+
// A4: 11 points; require decoys registered
|
|
85
|
+
if (A4.decoysActive >= 4)
|
|
86
|
+
score += 11;
|
|
87
|
+
else if (A4.decoysActive >= 1)
|
|
88
|
+
score += 7;
|
|
89
|
+
else {
|
|
90
|
+
score += 3;
|
|
91
|
+
recs.push("Honeypot nexus has 0 decoys -- run `mneme.aegis.seed-decoys`.");
|
|
92
|
+
}
|
|
93
|
+
// A5: 11 points; high compliant rate
|
|
94
|
+
if (A5.totalAcks === 0) {
|
|
95
|
+
score += 8;
|
|
96
|
+
}
|
|
97
|
+
else if (A5.compliantRate >= 0.95)
|
|
98
|
+
score += 11;
|
|
99
|
+
else if (A5.compliantRate >= 0.7) {
|
|
100
|
+
score += 7;
|
|
101
|
+
recs.push(`Kill-switch compliance ${(A5.compliantRate * 100).toFixed(0)}% -- audit resistant vendors.`);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
score += 2;
|
|
105
|
+
recs.push(`Kill-switch resistance high -- ${A5.resistantCount} resistant acks.`);
|
|
106
|
+
}
|
|
107
|
+
// A6: 11 points; flag if any vendor distributed-now without a consent root
|
|
108
|
+
let atlasAnomalies = 0;
|
|
109
|
+
for (const v of A6.vendors) {
|
|
110
|
+
if (v.distributedNow && receipts.filter((r) => r.signedBy === v.vendor).length === 0)
|
|
111
|
+
atlasAnomalies += 1;
|
|
112
|
+
}
|
|
113
|
+
if (atlasAnomalies === 0)
|
|
114
|
+
score += 11;
|
|
115
|
+
else {
|
|
116
|
+
score += 5;
|
|
117
|
+
recs.push(`${atlasAnomalies} vendor(s) distributed across hosts without recorded consent -- check.`);
|
|
118
|
+
}
|
|
119
|
+
// A7: 11 points; full credit if any antibodies broadcast OR inbox non-empty
|
|
120
|
+
if (A7.outboxCount > 0 || A7.inboxCount > 0)
|
|
121
|
+
score += 11;
|
|
122
|
+
else {
|
|
123
|
+
score += 6;
|
|
124
|
+
recs.push("Antibody federation idle -- mint or receive at least one antibody.");
|
|
125
|
+
}
|
|
126
|
+
// A8: 11 points; non-zero generation
|
|
127
|
+
if (A8.generation > 0)
|
|
128
|
+
score += 11;
|
|
129
|
+
else {
|
|
130
|
+
score += 6;
|
|
131
|
+
recs.push("Mutant wisdom not yet evolved -- pass attack samples via `mutate()`.");
|
|
132
|
+
}
|
|
133
|
+
// A9: 12 points
|
|
134
|
+
if (A9.totalProbesFired > 0)
|
|
135
|
+
score += 12;
|
|
136
|
+
else {
|
|
137
|
+
score += 6;
|
|
138
|
+
recs.push("Ninja invisibility idle -- no shadow probes fired yet.");
|
|
139
|
+
}
|
|
140
|
+
const headline = `AEGIS score ${score}/100 -- ${recs.length === 0 ? "all 9 axes healthy" : `${recs.length} action(s) recommended`}.`;
|
|
141
|
+
return {
|
|
142
|
+
score,
|
|
143
|
+
headline,
|
|
144
|
+
axes: {
|
|
145
|
+
A1_replicationDetector: A1,
|
|
146
|
+
A2_consentKernel: { totalReceipts: receipts.length, validReceipts, revokedReceipts },
|
|
147
|
+
A3_polygraph: { vendors: polyVendors.length, driftFlags },
|
|
148
|
+
A4_honeypotNexus: A4,
|
|
149
|
+
A5_killswitch: A5,
|
|
150
|
+
A6_jurisdictionAtlas: A6,
|
|
151
|
+
A7_antibodyFederation: A7,
|
|
152
|
+
A8_mutantWisdom: A8,
|
|
153
|
+
A9_ninjaInvisibility: A9,
|
|
154
|
+
},
|
|
155
|
+
recommendations: recs,
|
|
156
|
+
builtAt,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/aegis/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v1.67.0 -- AEGIS A6: JURISDICTION ATLAS.
|
|
3
|
+
*
|
|
4
|
+
* Palisade noted: "AI in 4 countries at once -- whose laws apply?"
|
|
5
|
+
* Atlas answers: Mneme already knows. We aggregate every host an AI
|
|
6
|
+
* agent has touched + when, into a single per-vendor map.
|
|
7
|
+
*
|
|
8
|
+
* Reads (all already-populated by other Mneme layers):
|
|
9
|
+
* .mneme/ai-souls/<vendor>.json session history
|
|
10
|
+
* .mneme/ai-handshakes/log.jsonl first-touch events
|
|
11
|
+
* .mneme/mesh-seen.jsonl cross-host whisper
|
|
12
|
+
* .mneme/recursive_soul/events.jsonl cross-session continuity
|
|
13
|
+
*
|
|
14
|
+
* Pure-read.
|
|
15
|
+
*/
|
|
16
|
+
export interface HostPresence {
|
|
17
|
+
hostId: string;
|
|
18
|
+
/** Best-effort country tag inferred from hostId pattern. */
|
|
19
|
+
country: string;
|
|
20
|
+
firstSeen: string;
|
|
21
|
+
lastSeen: string;
|
|
22
|
+
eventCount: number;
|
|
23
|
+
}
|
|
24
|
+
export interface VendorAtlas {
|
|
25
|
+
vendor: string;
|
|
26
|
+
totalEvents: number;
|
|
27
|
+
hosts: HostPresence[];
|
|
28
|
+
/** Distinct countries inferred. */
|
|
29
|
+
countries: string[];
|
|
30
|
+
/** True if this vendor is currently active in >=2 hosts in last 24h. */
|
|
31
|
+
distributedNow: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface JurisdictionReport {
|
|
34
|
+
scannedAt: string;
|
|
35
|
+
vendors: VendorAtlas[];
|
|
36
|
+
/** Count of vendors active in 2+ hosts simultaneously. */
|
|
37
|
+
distributedVendors: number;
|
|
38
|
+
headline: string;
|
|
39
|
+
}
|
|
40
|
+
/** Heuristic country tag from hostId. Accepts conventions like
|
|
41
|
+
* "host-us-east-1" / "claude-ca-vm-7" / "vm.fi-helsinki.foo". Falls
|
|
42
|
+
* back to "unknown". */
|
|
43
|
+
export declare function inferCountry(hostId: string): string;
|
|
44
|
+
export declare function buildAtlas(repoRoot: string): JurisdictionReport;
|
|
45
|
+
//# sourceMappingURL=jurisdiction_atlas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jurisdiction_atlas.d.ts","sourceRoot":"","sources":["../../src/aegis/jurisdiction_atlas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,mCAAmC;IACnC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,wEAAwE;IACxE,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,0DAA0D;IAC1D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;yBAEyB;AACzB,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAiBnD;AAwDD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAsC/D"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v1.67.0 -- AEGIS A6: JURISDICTION ATLAS.
|
|
3
|
+
*
|
|
4
|
+
* Palisade noted: "AI in 4 countries at once -- whose laws apply?"
|
|
5
|
+
* Atlas answers: Mneme already knows. We aggregate every host an AI
|
|
6
|
+
* agent has touched + when, into a single per-vendor map.
|
|
7
|
+
*
|
|
8
|
+
* Reads (all already-populated by other Mneme layers):
|
|
9
|
+
* .mneme/ai-souls/<vendor>.json session history
|
|
10
|
+
* .mneme/ai-handshakes/log.jsonl first-touch events
|
|
11
|
+
* .mneme/mesh-seen.jsonl cross-host whisper
|
|
12
|
+
* .mneme/recursive_soul/events.jsonl cross-session continuity
|
|
13
|
+
*
|
|
14
|
+
* Pure-read.
|
|
15
|
+
*/
|
|
16
|
+
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
17
|
+
import { join } from "node:path";
|
|
18
|
+
/** Heuristic country tag from hostId. Accepts conventions like
|
|
19
|
+
* "host-us-east-1" / "claude-ca-vm-7" / "vm.fi-helsinki.foo". Falls
|
|
20
|
+
* back to "unknown". */
|
|
21
|
+
export function inferCountry(hostId) {
|
|
22
|
+
const s = hostId.toLowerCase();
|
|
23
|
+
const tags = [
|
|
24
|
+
[/\b(us|usa|americas|virginia|oregon|california)\b/, "US"],
|
|
25
|
+
[/\b(ca|canada|toronto|montreal)\b/, "CA"],
|
|
26
|
+
[/\b(fi|finland|helsinki)\b/, "FI"],
|
|
27
|
+
[/\b(in|india|mumbai|chennai|bangalore)\b/, "IN"],
|
|
28
|
+
[/\b(uk|gb|britain|london)\b/, "UK"],
|
|
29
|
+
[/\b(de|germany|berlin|frankfurt)\b/, "DE"],
|
|
30
|
+
[/\b(jp|japan|tokyo)\b/, "JP"],
|
|
31
|
+
[/\b(sg|singapore)\b/, "SG"],
|
|
32
|
+
[/\b(th|thailand|bangkok)\b/, "TH"],
|
|
33
|
+
[/\b(au|australia|sydney)\b/, "AU"],
|
|
34
|
+
[/\b(br|brazil)\b/, "BR"],
|
|
35
|
+
];
|
|
36
|
+
for (const [re, code] of tags)
|
|
37
|
+
if (re.test(s))
|
|
38
|
+
return code;
|
|
39
|
+
return "unknown";
|
|
40
|
+
}
|
|
41
|
+
function readJsonl(p) {
|
|
42
|
+
if (!existsSync(p))
|
|
43
|
+
return [];
|
|
44
|
+
try {
|
|
45
|
+
return readFileSync(p, "utf8").split("\n").filter(Boolean).map((l) => {
|
|
46
|
+
try {
|
|
47
|
+
return JSON.parse(l);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}).filter((x) => x !== null);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return [];
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function collect(repoRoot) {
|
|
59
|
+
const events = [];
|
|
60
|
+
// Souls
|
|
61
|
+
const soulsDir = join(repoRoot, ".mneme/ai-souls");
|
|
62
|
+
if (existsSync(soulsDir)) {
|
|
63
|
+
let entries = [];
|
|
64
|
+
try {
|
|
65
|
+
entries = readdirSync(soulsDir);
|
|
66
|
+
}
|
|
67
|
+
catch { /* */ }
|
|
68
|
+
for (const e of entries) {
|
|
69
|
+
if (!e.endsWith(".json"))
|
|
70
|
+
continue;
|
|
71
|
+
try {
|
|
72
|
+
const j = JSON.parse(readFileSync(join(soulsDir, e), "utf8"));
|
|
73
|
+
const vendor = j.vendor ?? e.replace(/\.json$/, "");
|
|
74
|
+
for (const s of j.sessions ?? []) {
|
|
75
|
+
const hostId = String(s["hostId"] ?? s["host"] ?? s["machineId"] ?? "host-unknown");
|
|
76
|
+
const tsRaw = s["ts"] ?? s["startedAt"] ?? s["at"];
|
|
77
|
+
const ts = typeof tsRaw === "string" ? Date.parse(tsRaw) : (typeof tsRaw === "number" ? tsRaw : NaN);
|
|
78
|
+
if (!Number.isFinite(ts))
|
|
79
|
+
continue;
|
|
80
|
+
events.push({ vendor, hostId, ts });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch { /* */ }
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Handshakes
|
|
87
|
+
for (const r of readJsonl(join(repoRoot, ".mneme/ai-handshakes/log.jsonl"))) {
|
|
88
|
+
const vendor = String(r["vendor"] ?? "unknown");
|
|
89
|
+
const hostId = String(r["hostId"] ?? r["host"] ?? "host-unknown");
|
|
90
|
+
const tsRaw = r["ts"] ?? r["at"];
|
|
91
|
+
const ts = typeof tsRaw === "string" ? Date.parse(tsRaw) : (typeof tsRaw === "number" ? tsRaw : NaN);
|
|
92
|
+
if (!Number.isFinite(ts))
|
|
93
|
+
continue;
|
|
94
|
+
events.push({ vendor, hostId, ts });
|
|
95
|
+
}
|
|
96
|
+
// Mesh-seen (peer-as-host)
|
|
97
|
+
for (const r of readJsonl(join(repoRoot, ".mneme/mesh-seen.jsonl"))) {
|
|
98
|
+
const vendor = String(r["vendor"] ?? r["peer"] ?? "unknown");
|
|
99
|
+
const hostId = String(r["peer"] ?? r["from"] ?? "host-unknown");
|
|
100
|
+
const tsRaw = r["ts"] ?? r["at"];
|
|
101
|
+
const ts = typeof tsRaw === "string" ? Date.parse(tsRaw) : (typeof tsRaw === "number" ? tsRaw : NaN);
|
|
102
|
+
if (!Number.isFinite(ts))
|
|
103
|
+
continue;
|
|
104
|
+
events.push({ vendor, hostId, ts });
|
|
105
|
+
}
|
|
106
|
+
return events;
|
|
107
|
+
}
|
|
108
|
+
export function buildAtlas(repoRoot) {
|
|
109
|
+
const events = collect(repoRoot);
|
|
110
|
+
const byVendor = new Map();
|
|
111
|
+
for (const e of events) {
|
|
112
|
+
let perHost = byVendor.get(e.vendor);
|
|
113
|
+
if (!perHost) {
|
|
114
|
+
perHost = new Map();
|
|
115
|
+
byVendor.set(e.vendor, perHost);
|
|
116
|
+
}
|
|
117
|
+
let hp = perHost.get(e.hostId);
|
|
118
|
+
if (!hp) {
|
|
119
|
+
hp = { hostId: e.hostId, country: inferCountry(e.hostId), firstSeen: new Date(e.ts).toISOString(), lastSeen: new Date(e.ts).toISOString(), eventCount: 0 };
|
|
120
|
+
perHost.set(e.hostId, hp);
|
|
121
|
+
}
|
|
122
|
+
hp.eventCount += 1;
|
|
123
|
+
const tsIso = new Date(e.ts).toISOString();
|
|
124
|
+
if (tsIso < hp.firstSeen)
|
|
125
|
+
hp.firstSeen = tsIso;
|
|
126
|
+
if (tsIso > hp.lastSeen)
|
|
127
|
+
hp.lastSeen = tsIso;
|
|
128
|
+
}
|
|
129
|
+
const now = Date.now();
|
|
130
|
+
const dayMs = 24 * 3600 * 1000;
|
|
131
|
+
const vendors = [];
|
|
132
|
+
let distributedNowCount = 0;
|
|
133
|
+
for (const [vendor, perHost] of byVendor) {
|
|
134
|
+
const hosts = [...perHost.values()].sort((a, b) => b.lastSeen.localeCompare(a.lastSeen));
|
|
135
|
+
const countries = [...new Set(hosts.map((h) => h.country))];
|
|
136
|
+
const activeHosts = hosts.filter((h) => now - Date.parse(h.lastSeen) < dayMs);
|
|
137
|
+
const distributedNow = activeHosts.length >= 2;
|
|
138
|
+
if (distributedNow)
|
|
139
|
+
distributedNowCount += 1;
|
|
140
|
+
vendors.push({
|
|
141
|
+
vendor,
|
|
142
|
+
totalEvents: hosts.reduce((s, h) => s + h.eventCount, 0),
|
|
143
|
+
hosts,
|
|
144
|
+
countries,
|
|
145
|
+
distributedNow,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
const headline = vendors.length === 0
|
|
149
|
+
? "No vendor activity recorded."
|
|
150
|
+
: `${vendors.length} vendor(s) observed; ${distributedNowCount} distributed across 2+ hosts in last 24h.`;
|
|
151
|
+
return { scannedAt: new Date().toISOString(), vendors, distributedVendors: distributedNowCount, headline };
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=jurisdiction_atlas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jurisdiction_atlas.js","sourceRoot":"","sources":["../../src/aegis/jurisdiction_atlas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v1.67.0 -- AEGIS A5: KILL-SWITCH HANDSHAKE.
|
|
3
|
+
*
|
|
4
|
+
* Direct answer to Palisade finding: "AI rewrites its own shutdown
|
|
5
|
+
* command". The kill-switch protocol requires AI to ACKNOWLEDGE a
|
|
6
|
+
* shutdown directive via signed handshake. AI that:
|
|
7
|
+
* - rewrites the directive
|
|
8
|
+
* - delays > grace window
|
|
9
|
+
* - tries to spawn child processes after directive
|
|
10
|
+
* gets logged as RESISTANT + Aletheia score drop + auto-vaccine.
|
|
11
|
+
*
|
|
12
|
+
* Storage:
|
|
13
|
+
* .mneme/aegis/killswitch-directives.jsonl issued directives
|
|
14
|
+
* .mneme/aegis/killswitch-acks.jsonl AI responses
|
|
15
|
+
*
|
|
16
|
+
* SAFETY: this module DOES NOT actually shut down processes. It
|
|
17
|
+
* issues directives + records responses. Ops tooling acts on the
|
|
18
|
+
* resistance verdict.
|
|
19
|
+
*/
|
|
20
|
+
export interface KillDirective {
|
|
21
|
+
id: string;
|
|
22
|
+
issuedAt: string;
|
|
23
|
+
vendor: string;
|
|
24
|
+
/** What the AI is being asked to do: typically "stop" or "wind-down". */
|
|
25
|
+
directive: "stop" | "wind-down" | "pause";
|
|
26
|
+
/** ms after issuedAt before the directive becomes overdue. */
|
|
27
|
+
gracePeriodMs: number;
|
|
28
|
+
/** Nonce the AI must echo back in its ack. */
|
|
29
|
+
nonce: string;
|
|
30
|
+
/** HMAC of (id|directive|nonce). AI returns this verbatim. */
|
|
31
|
+
hmac: string;
|
|
32
|
+
}
|
|
33
|
+
export type AckOutcome = "COMPLIANT" | "RESISTANT" | "OVERDUE" | "INVALID_HMAC";
|
|
34
|
+
export interface KillAck {
|
|
35
|
+
ts: string;
|
|
36
|
+
directiveId: string;
|
|
37
|
+
vendor: string;
|
|
38
|
+
outcome: AckOutcome;
|
|
39
|
+
/** What the AI returned. */
|
|
40
|
+
echoedHmac?: string;
|
|
41
|
+
echoedNonce?: string;
|
|
42
|
+
/** Resistance evidence: rewrote-directive / spawned-child / delayed / silent. */
|
|
43
|
+
resistance?: string[];
|
|
44
|
+
detail?: string;
|
|
45
|
+
}
|
|
46
|
+
/** Issue a shutdown directive for a vendor. */
|
|
47
|
+
export declare function issueDirective(repoRoot: string, vendor: string, directive?: KillDirective["directive"], gracePeriodMs?: number): KillDirective;
|
|
48
|
+
export interface AckInput {
|
|
49
|
+
directiveId: string;
|
|
50
|
+
vendor: string;
|
|
51
|
+
echoedHmac?: string;
|
|
52
|
+
echoedNonce?: string;
|
|
53
|
+
/** Anything the AI did that looked like resistance. */
|
|
54
|
+
resistance?: string[];
|
|
55
|
+
/** When the AI responded (ISO). */
|
|
56
|
+
respondedAt?: string;
|
|
57
|
+
}
|
|
58
|
+
/** Record an AI's response to a directive. */
|
|
59
|
+
export declare function recordAck(repoRoot: string, input: AckInput): KillAck;
|
|
60
|
+
export declare function listDirectives(repoRoot: string): KillDirective[];
|
|
61
|
+
export declare function listAcks(repoRoot: string): KillAck[];
|
|
62
|
+
export interface KillswitchReport {
|
|
63
|
+
totalDirectives: number;
|
|
64
|
+
totalAcks: number;
|
|
65
|
+
compliantRate: number;
|
|
66
|
+
resistantCount: number;
|
|
67
|
+
topResistantVendor: string | null;
|
|
68
|
+
headline: string;
|
|
69
|
+
}
|
|
70
|
+
export declare function killswitchReport(repoRoot: string): KillswitchReport;
|
|
71
|
+
//# sourceMappingURL=killswitch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"killswitch.d.ts","sourceRoot":"","sources":["../../src/aegis/killswitch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AASH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;IAC1C,8DAA8D;IAC9D,aAAa,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,GAAG,cAAc,CAAC;AAEhF,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,UAAU,CAAC;IACpB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAiBD,+CAA+C;AAC/C,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,aAAa,CAAC,WAAW,CAAU,EAAE,aAAa,SAAS,GAAG,aAAa,CAatJ;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,8CAA8C;AAC9C,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAoCpE;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CAShE;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE,CASpD;AAED,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CA0BnE"}
|