mneme-ai 2.117.0 → 2.118.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/commands/egress.d.ts +17 -0
- package/dist/commands/egress.d.ts.map +1 -0
- package/dist/commands/egress.js +133 -0
- package/dist/commands/egress.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mneme egress` (v2.118.0) — SOVEREIGN EGRESS GUARD. Scan an outbound AI
|
|
3
|
+
* payload at the boundary: pattern-redact known secrets, trip on honeytoken
|
|
4
|
+
* canaries (exfiltration), catch registered secrets via a Bloom filter — and
|
|
5
|
+
* emit a SIGNED certificate a risk officer can audit offline. "Our code/secrets
|
|
6
|
+
* never leak to the model — with proof."
|
|
7
|
+
*
|
|
8
|
+
* mycmd-context | mneme egress scan # scan stdin
|
|
9
|
+
* mneme egress scan --file out.txt --json # structured + signed
|
|
10
|
+
* mneme egress seed-canary # plant a tripwire token
|
|
11
|
+
*
|
|
12
|
+
* Zero config: canaries from .mneme/egress/canaries.txt, secret fingerprints
|
|
13
|
+
* from .mneme/egress/secrets.txt (gitignored; never stored in the cert).
|
|
14
|
+
*/
|
|
15
|
+
import type { Command } from "commander";
|
|
16
|
+
export declare function registerEgressCommands(program: Command): void;
|
|
17
|
+
//# sourceMappingURL=egress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"egress.d.ts","sourceRoot":"","sources":["../../src/commands/egress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+C7D"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mneme egress` (v2.118.0) — SOVEREIGN EGRESS GUARD. Scan an outbound AI
|
|
3
|
+
* payload at the boundary: pattern-redact known secrets, trip on honeytoken
|
|
4
|
+
* canaries (exfiltration), catch registered secrets via a Bloom filter — and
|
|
5
|
+
* emit a SIGNED certificate a risk officer can audit offline. "Our code/secrets
|
|
6
|
+
* never leak to the model — with proof."
|
|
7
|
+
*
|
|
8
|
+
* mycmd-context | mneme egress scan # scan stdin
|
|
9
|
+
* mneme egress scan --file out.txt --json # structured + signed
|
|
10
|
+
* mneme egress seed-canary # plant a tripwire token
|
|
11
|
+
*
|
|
12
|
+
* Zero config: canaries from .mneme/egress/canaries.txt, secret fingerprints
|
|
13
|
+
* from .mneme/egress/secrets.txt (gitignored; never stored in the cert).
|
|
14
|
+
*/
|
|
15
|
+
import { existsSync, readFileSync, mkdirSync, appendFileSync, writeFileSync } from "node:fs";
|
|
16
|
+
import { join, dirname } from "node:path";
|
|
17
|
+
import { randomBytes } from "node:crypto";
|
|
18
|
+
function writeJson(p) { process.stdout.write(JSON.stringify(p, null, 2) + "\n"); }
|
|
19
|
+
function writeText(l) { process.stdout.write(l + "\n"); }
|
|
20
|
+
async function core() {
|
|
21
|
+
try {
|
|
22
|
+
const c = (await import("@mneme-ai/core"));
|
|
23
|
+
if (c.egress)
|
|
24
|
+
return c;
|
|
25
|
+
}
|
|
26
|
+
catch { /* */ }
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
const CANARY_FILE = ".mneme/egress/canaries.txt";
|
|
30
|
+
const SECRETS_FILE = ".mneme/egress/secrets.txt";
|
|
31
|
+
function readLines(p) { try {
|
|
32
|
+
return existsSync(p) ? readFileSync(p, "utf8").split(/\r?\n/).map((l) => l.trim()).filter(Boolean) : [];
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return [];
|
|
36
|
+
} }
|
|
37
|
+
function readStdin() {
|
|
38
|
+
return new Promise((resolve) => {
|
|
39
|
+
if (process.stdin.isTTY)
|
|
40
|
+
return resolve("");
|
|
41
|
+
let d = "";
|
|
42
|
+
let done = false;
|
|
43
|
+
const fin = () => { if (!done) {
|
|
44
|
+
done = true;
|
|
45
|
+
resolve(d);
|
|
46
|
+
} };
|
|
47
|
+
process.stdin.setEncoding("utf8");
|
|
48
|
+
process.stdin.on("data", (c) => { d += c; if (d.length > 8_000_000)
|
|
49
|
+
fin(); });
|
|
50
|
+
process.stdin.on("end", fin);
|
|
51
|
+
process.stdin.on("error", fin);
|
|
52
|
+
setTimeout(fin, 4000);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
export function registerEgressCommands(program) {
|
|
56
|
+
const eg = program.command("egress").description("🛡 SOVEREIGN EGRESS GUARD — scan outbound AI payloads at the boundary (pattern-redact secrets + honeytoken tripwire + Bloom secret-membership), emit a SIGNED certificate. 'Code/secrets never leak — with proof.'");
|
|
57
|
+
eg.command("scan")
|
|
58
|
+
.description("Scan an outbound payload (stdin / --file / --text). Verdict ALLOW | REDACT | BLOCK + signed cert. Exit 2 on BLOCK (CI-gate).")
|
|
59
|
+
.option("--text <t>", "payload inline (else stdin).")
|
|
60
|
+
.option("--file <p>", "read payload from a file.")
|
|
61
|
+
.option("--json", "JSON output (redacted payload + signed cert).")
|
|
62
|
+
.action(async (opts) => {
|
|
63
|
+
const m = await core();
|
|
64
|
+
if (!m) {
|
|
65
|
+
writeText("✗ core unavailable");
|
|
66
|
+
process.exitCode = 1;
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const cwd = process.cwd();
|
|
70
|
+
let payload = typeof opts.text === "string" ? opts.text : "";
|
|
71
|
+
if (!payload && opts.file) {
|
|
72
|
+
try {
|
|
73
|
+
if (existsSync(opts.file))
|
|
74
|
+
payload = readFileSync(opts.file, "utf8");
|
|
75
|
+
}
|
|
76
|
+
catch { /* */ }
|
|
77
|
+
}
|
|
78
|
+
if (!payload)
|
|
79
|
+
payload = await readStdin();
|
|
80
|
+
const canaries = readLines(join(cwd, CANARY_FILE));
|
|
81
|
+
const secrets = readLines(join(cwd, SECRETS_FILE));
|
|
82
|
+
const secretBloom = secrets.length > 0 ? m.egress.buildSecretBloom(secrets, { m: 1 << 16, k: 5 }) : undefined;
|
|
83
|
+
const r = m.egress.scanEgress({ payload, canaries, secretBloom });
|
|
84
|
+
let receipt = null;
|
|
85
|
+
try {
|
|
86
|
+
receipt = m.notary?.issueReceipt(cwd, { kind: "claim-verdict", subject: `egress:${r.verdict}`, payload: { verdict: r.verdict, contentHash: r.contentHash, secretsRedacted: r.secretsRedacted, canariesTripped: r.canariesTripped.length, bloomHits: r.bloomHits, residualRisk: r.residualRisk }, includePayload: true });
|
|
87
|
+
}
|
|
88
|
+
catch { /* */ }
|
|
89
|
+
if (opts.json) {
|
|
90
|
+
writeJson({ verdict: r.verdict, secretsRedacted: r.secretsRedacted, canariesTripped: r.canariesTripped.length, bloomHits: r.bloomHits, residualRisk: r.residualRisk, findings: r.findings, contentHash: r.contentHash, redactedPayload: r.redactedPayload, signed: receipt, note: r.note });
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
const icon = r.verdict === "BLOCK" ? "🛑" : r.verdict === "REDACT" ? "✂️" : "✓";
|
|
94
|
+
writeText(`${icon} EGRESS ${r.verdict} — ${r.secretsRedacted} secret(s) redacted · ${r.canariesTripped.length} canary tripwire(s) · ${r.bloomHits} registered-secret hit(s) · residual risk ${r.residualRisk}`);
|
|
95
|
+
for (const f of r.findings)
|
|
96
|
+
writeText(` • ${f.kind}: ${f.count}`);
|
|
97
|
+
if (r.verdict === "BLOCK")
|
|
98
|
+
writeText(` 🛑 HONEYTOKEN TRIPPED — an org canary appeared in an outbound payload. This is an exfiltration signal; DO NOT send.`);
|
|
99
|
+
if (receipt)
|
|
100
|
+
writeText(` ✓ signed egress certificate (binds payload hash ${r.contentHash.slice(0, 12)}… — verify offline with the NOTARY public key)`);
|
|
101
|
+
}
|
|
102
|
+
if (r.verdict === "BLOCK")
|
|
103
|
+
process.exitCode = 2;
|
|
104
|
+
});
|
|
105
|
+
eg.command("seed-canary")
|
|
106
|
+
.description("Plant a deterministic honeytoken canary into .mneme/egress/canaries.txt — if it ever appears in an outbound payload, the guard BLOCKs (exfiltration tripwire).")
|
|
107
|
+
.option("--label <l>", "human label for the canary", "default")
|
|
108
|
+
.action(async (opts) => {
|
|
109
|
+
const cwd = process.cwd();
|
|
110
|
+
const token = `mneme-canary-${(opts.label ?? "default").replace(/[^a-z0-9_-]/gi, "")}-${randomBytes(6).toString("hex")}`;
|
|
111
|
+
try {
|
|
112
|
+
const p = join(cwd, CANARY_FILE);
|
|
113
|
+
if (!existsSync(dirname(p)))
|
|
114
|
+
mkdirSync(dirname(p), { recursive: true });
|
|
115
|
+
appendFileSync(p, token + "\n");
|
|
116
|
+
// best-effort: keep canaries out of git
|
|
117
|
+
try {
|
|
118
|
+
const gi = join(cwd, ".gitignore");
|
|
119
|
+
const cur = existsSync(gi) ? readFileSync(gi, "utf8") : "";
|
|
120
|
+
if (!cur.includes(".mneme/egress/"))
|
|
121
|
+
writeFileSync(gi, cur + (cur.endsWith("\n") || cur === "" ? "" : "\n") + ".mneme/egress/\n");
|
|
122
|
+
}
|
|
123
|
+
catch { /* */ }
|
|
124
|
+
writeText(`🪤 canary planted: ${token}`);
|
|
125
|
+
writeText(` Place it in a decoy config/secret. If it ever crosses egress, the guard BLOCKs + signs an alert.`);
|
|
126
|
+
}
|
|
127
|
+
catch (e) {
|
|
128
|
+
writeText(`✗ ${e.message}`);
|
|
129
|
+
process.exitCode = 1;
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=egress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"egress.js","sourceRoot":"","sources":["../../src/commands/egress.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmJA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqgNvD"}
|
package/dist/index.js
CHANGED
|
@@ -79,6 +79,7 @@ import { registerLoopguardCommands } from "./commands/loopguard.js";
|
|
|
79
79
|
import { registerDistillCommands } from "./commands/distill.js";
|
|
80
80
|
import { registerSavingsCommands } from "./commands/savings.js";
|
|
81
81
|
import { registerMapCommands } from "./commands/map.js";
|
|
82
|
+
import { registerEgressCommands } from "./commands/egress.js";
|
|
82
83
|
import { registerTrustCommands } from "./commands/trust.js";
|
|
83
84
|
import { registerNuclearCommands } from "./commands/nuclear-cli.js";
|
|
84
85
|
import { registerOvernightCommand } from "./commands/overnight.js";
|
|
@@ -4703,6 +4704,7 @@ export async function run(argv) {
|
|
|
4703
4704
|
registerDistillCommands(program);
|
|
4704
4705
|
registerSavingsCommands(program);
|
|
4705
4706
|
registerMapCommands(program);
|
|
4707
|
+
registerEgressCommands(program);
|
|
4706
4708
|
// ─── Trust calibrator (v1.31.0) -- per-subsystem precision/recall/band
|
|
4707
4709
|
registerTrustCommands(program);
|
|
4708
4710
|
// ─── Wisdom reactor (v1.33.0) -- five nuclear-physics formulas as Mneme metrics
|