mneme-ai 3.6.0 → 3.7.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.
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mneme agentcert` (v3.7.0) — the Agent Run Certificate.
|
|
3
|
+
* agentcert build [--run <id>] [--task "…"] [--agent "…"] --out cert.json → a signed, self-contained certificate
|
|
4
|
+
* agentcert verify <cert.json> → verify OFFLINE (no Mneme, no vendor)
|
|
5
|
+
* The build embeds the run's evidence (MCP-gateway audit chain + human approvals) and NOTARY-signs
|
|
6
|
+
* the whole thing, so an insurer / auditor / customer verifies the entire governed run from ONE file.
|
|
7
|
+
*/
|
|
8
|
+
import type { Command } from "commander";
|
|
9
|
+
export declare function registerAgentcertCommands(program: Command): void;
|
|
10
|
+
//# sourceMappingURL=agentcert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentcert.d.ts","sourceRoot":"","sources":["../../src/commands/agentcert.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBzC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8ChE"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { agentcert, notary } from "@mneme-ai/core";
|
|
4
|
+
function out(s) { process.stdout.write(s + "\n"); }
|
|
5
|
+
function loadFrames(cwd, run) {
|
|
6
|
+
const p = join(cwd, ".mneme", "mcpgate", "audit.jsonl");
|
|
7
|
+
if (!existsSync(p))
|
|
8
|
+
return [];
|
|
9
|
+
const all = readFileSync(p, "utf8").trim().split("\n").filter(Boolean).map((l) => { try {
|
|
10
|
+
return JSON.parse(l);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return null;
|
|
14
|
+
} }).filter(Boolean);
|
|
15
|
+
return run ? all.filter((f) => f.run === run) : all;
|
|
16
|
+
}
|
|
17
|
+
function loadApprovals(cwd) {
|
|
18
|
+
try {
|
|
19
|
+
const st = JSON.parse(readFileSync(join(cwd, ".mneme", "pager", "state.json"), "utf8"));
|
|
20
|
+
return (st.receipts ?? []).filter((r) => r.decidedBy === "human").map((r) => ({ id: String(r.req?.id ?? ""), decision: (r.decision === "deny" ? "deny" : "allow"), by: "human", on: String(r.channel ?? "pager"), at: Number(r.at) || 0 }));
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return [];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export function registerAgentcertCommands(program) {
|
|
27
|
+
const k = program.command("agentcert").description("🎖 AGENT RUN CERTIFICATE — one portable, offline-verifiable certificate per governed agent run (the audit chain + human approvals, NOTARY-signed). The piece a giant adopts + an insurer underwrites: no vendor can issue it for itself.");
|
|
28
|
+
k.command("build").description("Build + sign a certificate for a run (or the whole audit ledger).")
|
|
29
|
+
.option("--run <id>", "only this run's audit frames (default: all)").option("--task <t>", "the run's task").option("--agent <a>", "agent/vendor name").option("--model <m>", "model id")
|
|
30
|
+
.option("--out <file>", "write the signed certificate").option("--json", "print the signed certificate JSON")
|
|
31
|
+
.action((o) => {
|
|
32
|
+
const cwd = process.cwd();
|
|
33
|
+
const auditFrames = loadFrames(cwd, o.run);
|
|
34
|
+
if (!auditFrames.length) {
|
|
35
|
+
out(`✗ no audit frames${o.run ? ` for run ${o.run}` : ""} — run some gated tool-calls first (mneme mcpgate / gephyra serve / matrix).`);
|
|
36
|
+
process.exitCode = 2;
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const approvals = loadApprovals(cwd);
|
|
40
|
+
const ev = {
|
|
41
|
+
runId: o.run || auditFrames[0].run || "all", agent: o.agent || auditFrames[0].agent || "agent", model: o.model, task: o.task,
|
|
42
|
+
startedAt: auditFrames[0].ts, endedAt: auditFrames[auditFrames.length - 1].ts, auditFrames, approvals,
|
|
43
|
+
};
|
|
44
|
+
const cert = agentcert.buildCertificate(ev);
|
|
45
|
+
// self-contained, portable: embed the evidence + sign the whole thing for offline verify
|
|
46
|
+
const payload = { cert, evidence: ev };
|
|
47
|
+
let signed = payload;
|
|
48
|
+
try {
|
|
49
|
+
signed = notary.issueReceipt(cwd, { kind: "reasoning-trace", subject: `agent-run-cert:${cert.runId}`, payload, includePayload: true, issuedAt: Date.now() });
|
|
50
|
+
}
|
|
51
|
+
catch { /* */ }
|
|
52
|
+
if (o.out)
|
|
53
|
+
writeFileSync(o.out, JSON.stringify(signed, null, 2), "utf8");
|
|
54
|
+
if (o.json) {
|
|
55
|
+
out(JSON.stringify(signed, null, 2));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const s = cert.summary;
|
|
59
|
+
const ico = s.insurability === "insurable" ? "🟢" : s.insurability === "review" ? "🟡" : "🔴";
|
|
60
|
+
out(`🎖 AGENT RUN CERTIFICATE — ${cert.agent}${cert.task ? ` · "${cert.task}"` : ""} · ${ico} ${s.insurability.toUpperCase()}`);
|
|
61
|
+
out(` ${s.calls} gated call(s): ${s.allowed} allowed · ${s.blocked} blocked · ${s.needsApproval} escalated · ${s.humanApprovals + s.humanDenials} human decision(s)`);
|
|
62
|
+
out(` policy-compliant: ${s.policyCompliant ? "yes" : "NO"} · audit chain: ${s.auditChainOk ? "intact" : "BROKEN"} · max risk ${s.riskMax}`);
|
|
63
|
+
out(` evidence sha256 ${cert.evidenceHash.slice(0, 16)}…${o.out ? ` · 🎖 signed → ${o.out}` : ""} (verify offline: mneme agentcert verify)`);
|
|
64
|
+
});
|
|
65
|
+
k.command("verify <file>").description("Verify a certificate OFFLINE — the signature, the embedded audit chain, and that the summary RE-DERIVES from the evidence (the cert cannot lie about its run).")
|
|
66
|
+
.action((file) => {
|
|
67
|
+
if (!existsSync(file)) {
|
|
68
|
+
out("certificate not found");
|
|
69
|
+
process.exitCode = 2;
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
let signed;
|
|
73
|
+
try {
|
|
74
|
+
signed = JSON.parse(readFileSync(file, "utf8"));
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
out("✗ invalid certificate JSON");
|
|
78
|
+
process.exitCode = 2;
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const sig = notary.verifyReceipt(signed);
|
|
82
|
+
out(sig.valid ? "✓ signature VALID (Ed25519, offline — proves who issued it)" : `✗ signature INVALID: ${sig.reason}`);
|
|
83
|
+
const cert = signed.payload?.cert, evidence = signed.payload?.evidence;
|
|
84
|
+
if (!cert || !evidence) {
|
|
85
|
+
out("✗ certificate has no embedded cert/evidence");
|
|
86
|
+
process.exitCode = 2;
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const v = agentcert.verifyCertificate(cert, evidence);
|
|
90
|
+
out(v.valid ? "✓ run VERIFIED — " + v.reasons[0] : "✗ run NOT verified:");
|
|
91
|
+
if (!v.valid)
|
|
92
|
+
for (const r of v.reasons)
|
|
93
|
+
out(" • " + r);
|
|
94
|
+
const s = cert.summary;
|
|
95
|
+
out(` → ${cert.agent}${cert.task ? ` · "${cert.task}"` : ""}: ${s.calls} gated calls · ${s.blocked} blocked · insurability ${s.insurability}`);
|
|
96
|
+
if (!sig.valid || !v.valid)
|
|
97
|
+
process.exitCode = 2;
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=agentcert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentcert.js","sourceRoot":"","sources":["../../src/commands/agentcert.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":"AA+LA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+lNvD"}
|
package/dist/index.js
CHANGED
|
@@ -108,6 +108,7 @@ import { registerKeryxCommands } from "./commands/keryx.js";
|
|
|
108
108
|
import { registerCompileCommands } from "./commands/compile.js";
|
|
109
109
|
import { registerSkillscanCommands } from "./commands/skillscan.js";
|
|
110
110
|
import { registerMcpgateCommands } from "./commands/mcpgate.js";
|
|
111
|
+
import { registerAgentcertCommands } from "./commands/agentcert.js";
|
|
111
112
|
import { registerAdamasCommands } from "./commands/adamas.js";
|
|
112
113
|
import { registerPrismCommands } from "./commands/prism.js";
|
|
113
114
|
import { registerGoldilocksCommands } from "./commands/goldilocks.js";
|
|
@@ -4783,6 +4784,7 @@ export async function run(argv) {
|
|
|
4783
4784
|
registerCompileCommands(program);
|
|
4784
4785
|
registerSkillscanCommands(program);
|
|
4785
4786
|
registerMcpgateCommands(program);
|
|
4787
|
+
registerAgentcertCommands(program);
|
|
4786
4788
|
registerAdamasCommands(program);
|
|
4787
4789
|
registerPrismCommands(program);
|
|
4788
4790
|
registerGoldilocksCommands(program);
|