mneme-ai 2.118.0 β†’ 2.120.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.
@@ -1 +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"}
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;AA4CzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuD7D"}
@@ -12,9 +12,24 @@
12
12
  * Zero config: canaries from .mneme/egress/canaries.txt, secret fingerprints
13
13
  * from .mneme/egress/secrets.txt (gitignored; never stored in the cert).
14
14
  */
15
- import { existsSync, readFileSync, mkdirSync, appendFileSync, writeFileSync } from "node:fs";
15
+ import { existsSync, readFileSync, mkdirSync, appendFileSync, writeFileSync, openSync, readSync, closeSync } from "node:fs";
16
16
  import { join, dirname } from "node:path";
17
17
  import { randomBytes } from "node:crypto";
18
+ /** Bounded-memory chunked file reader (one buffer at a time). Secrets/canaries
19
+ * are ASCII, so a rare UTF-8 split only affects non-ASCII glyphs in the echoed
20
+ * redacted output, never detection. */
21
+ function* readFileChunks(path, size = 65536) {
22
+ const fd = openSync(path, "r");
23
+ try {
24
+ const buf = Buffer.allocUnsafe(size);
25
+ let n;
26
+ while ((n = readSync(fd, buf, 0, size, null)) > 0)
27
+ yield buf.toString("utf8", 0, n);
28
+ }
29
+ finally {
30
+ closeSync(fd);
31
+ }
32
+ }
18
33
  function writeJson(p) { process.stdout.write(JSON.stringify(p, null, 2) + "\n"); }
19
34
  function writeText(l) { process.stdout.write(l + "\n"); }
20
35
  async function core() {
@@ -58,6 +73,8 @@ export function registerEgressCommands(program) {
58
73
  .description("Scan an outbound payload (stdin / --file / --text). Verdict ALLOW | REDACT | BLOCK + signed cert. Exit 2 on BLOCK (CI-gate).")
59
74
  .option("--text <t>", "payload inline (else stdin).")
60
75
  .option("--file <p>", "read payload from a file.")
76
+ .option("--stream", "stream --file in bounded memory (for very large payloads).")
77
+ .option("--no-entropy", "disable the Shannon-entropy structural layer (layer 4).")
61
78
  .option("--json", "JSON output (redacted payload + signed cert).")
62
79
  .action(async (opts) => {
63
80
  const m = await core();
@@ -67,31 +84,38 @@ export function registerEgressCommands(program) {
67
84
  return;
68
85
  }
69
86
  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
87
  const canaries = readLines(join(cwd, CANARY_FILE));
81
88
  const secrets = readLines(join(cwd, SECRETS_FILE));
82
89
  const secretBloom = secrets.length > 0 ? m.egress.buildSecretBloom(secrets, { m: 1 << 16, k: 5 }) : undefined;
83
- const r = m.egress.scanEgress({ payload, canaries, secretBloom });
90
+ const entropy = opts.entropy === false ? { enabled: false } : undefined; // commander: --no-entropy β‡’ entropy=false
91
+ let r;
92
+ if (opts.stream && opts.file && existsSync(opts.file)) {
93
+ r = m.egress.scanEgressChunked(readFileChunks(opts.file), { canaries, secretBloom, entropy });
94
+ }
95
+ else {
96
+ let payload = typeof opts.text === "string" ? opts.text : "";
97
+ if (!payload && opts.file) {
98
+ try {
99
+ if (existsSync(opts.file))
100
+ payload = readFileSync(opts.file, "utf8");
101
+ }
102
+ catch { /* */ }
103
+ }
104
+ if (!payload)
105
+ payload = await readStdin();
106
+ r = m.egress.scanEgress({ payload, canaries, secretBloom, entropy });
107
+ }
84
108
  let receipt = null;
85
109
  try {
86
110
  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
111
  }
88
112
  catch { /* */ }
89
113
  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 });
114
+ writeJson({ verdict: r.verdict, secretsRedacted: r.secretsRedacted, canariesTripped: r.canariesTripped.length, bloomHits: r.bloomHits, entropySuspects: r.entropySuspects, residualRisk: r.residualRisk, findings: r.findings, contentHash: r.contentHash, redactedPayload: r.redactedPayload, signed: receipt, note: r.note });
91
115
  }
92
116
  else {
93
117
  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}`);
118
+ writeText(`${icon} EGRESS ${r.verdict} β€” ${r.secretsRedacted} secret(s) redacted Β· ${r.canariesTripped.length} canary tripwire(s) Β· ${r.bloomHits} registered-secret hit(s) Β· ${r.entropySuspects} suspected (entropy) Β· residual risk ${r.residualRisk}`);
95
119
  for (const f of r.findings)
96
120
  writeText(` β€’ ${f.kind}: ${f.count}`);
97
121
  if (r.verdict === "BLOCK")
@@ -1 +1 @@
1
- {"version":3,"file":"egress.js","sourceRoot":"","sources":["../../src/commands/egress.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"egress.js","sourceRoot":"","sources":["../../src/commands/egress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * `mneme exec` (v2.120.0) β€” the EXECUTIVE surface. Each subcommand frames a REAL
3
+ * Mneme signal for a CXO/CRO/CISO buyer. Nothing is fabricated: the signals come
4
+ * from git history (key-person risk, talent map, governance/promise-debt), a
5
+ * signed savings ledger (capital/value), and live MCP config (attack surface).
6
+ * Dollar figures appear ONLY when the user supplies their own rate, and are
7
+ * always labelled as "your rate Γ— measured signal".
8
+ *
9
+ * mneme exec keyperson [--replacement-cost N] # bus-factor / flight risk
10
+ * mneme exec talent # collaboration / talent map
11
+ * mneme exec governance [--debt-cost N] # promise-debt / tech-debt liability
12
+ * mneme exec burn [--price-per-1k N] # realized token value (asset)
13
+ * mneme exec roi --team N --per-dev M [--price-per-1k P] [--months H]
14
+ * mneme exec mcp-audit [--budget N] # agent MCP attack surface (CISO)
15
+ */
16
+ import type { Command } from "commander";
17
+ export declare function registerExecCommands(program: Command): void;
18
+ //# sourceMappingURL=exec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/commands/exec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqI3D"}
@@ -0,0 +1,231 @@
1
+ /**
2
+ * `mneme exec` (v2.120.0) β€” the EXECUTIVE surface. Each subcommand frames a REAL
3
+ * Mneme signal for a CXO/CRO/CISO buyer. Nothing is fabricated: the signals come
4
+ * from git history (key-person risk, talent map, governance/promise-debt), a
5
+ * signed savings ledger (capital/value), and live MCP config (attack surface).
6
+ * Dollar figures appear ONLY when the user supplies their own rate, and are
7
+ * always labelled as "your rate Γ— measured signal".
8
+ *
9
+ * mneme exec keyperson [--replacement-cost N] # bus-factor / flight risk
10
+ * mneme exec talent # collaboration / talent map
11
+ * mneme exec governance [--debt-cost N] # promise-debt / tech-debt liability
12
+ * mneme exec burn [--price-per-1k N] # realized token value (asset)
13
+ * mneme exec roi --team N --per-dev M [--price-per-1k P] [--months H]
14
+ * mneme exec mcp-audit [--budget N] # agent MCP attack surface (CISO)
15
+ */
16
+ import { existsSync, readFileSync } from "node:fs";
17
+ import { join } from "node:path";
18
+ import { git, store, people, util, stigmergy, treasury, exec as execCore, skeletonKey, notary } from "@mneme-ai/core";
19
+ import { dbPath } from "../paths.js";
20
+ const TREASURY_LEDGER = ".mneme/treasury/ledger.jsonl";
21
+ function out(s) { process.stdout.write(s + "\n"); }
22
+ function outJson(o) { process.stdout.write(JSON.stringify(o, null, 2) + "\n"); }
23
+ function usd(n) { return "$" + n.toLocaleString("en-US", { maximumFractionDigits: 2 }); }
24
+ function rate(n) { return "$" + n.toLocaleString("en-US", { maximumFractionDigits: 5 }); }
25
+ function sign(cwd, subject, payload) {
26
+ try {
27
+ return notary.issueReceipt(cwd, { kind: "claim-verdict", subject, payload, includePayload: false });
28
+ }
29
+ catch {
30
+ return null;
31
+ }
32
+ }
33
+ async function openStore(cwd) {
34
+ if (!(await git.isGitRepo(cwd)))
35
+ return { error: "Not in a git repo." };
36
+ const meta = await git.getRepoMeta(cwd);
37
+ const s = new store.MnemeStore(dbPath(meta.rootPath));
38
+ if (s.countCommits() === 0) {
39
+ s.close();
40
+ return { error: "Memory is empty. Run `mneme index` first." };
41
+ }
42
+ return { s, root: meta.rootPath };
43
+ }
44
+ export function registerExecCommands(program) {
45
+ const ex = program.command("exec").description("πŸ› EXECUTIVE surface β€” real Mneme signals framed for a CXO/CRO/CISO. $ figures only from YOUR supplied rate, always labelled. Honest by design (DIAKRISIS): present-tense signals from real history/ledgers, never a forecast.");
46
+ // ── 1. KEY-PERSON RISK (bus-factor / flight risk) β€” wraps atrophy ──
47
+ ex.command("keyperson")
48
+ .description("Key-person dependency & flight risk: files with NO live expert (bus-factor=1) + knowledge concentration, from git history. --replacement-cost gives a labelled exposure estimate.")
49
+ .option("--replacement-cost <usd>", "your est. cost to re-derive one at-risk file's knowledge (USD).", (v) => parseFloat(v))
50
+ .option("--json", "JSON output.")
51
+ .action(async (opts) => {
52
+ const cwd = process.cwd();
53
+ const o = await openStore(cwd);
54
+ if ("error" in o) {
55
+ out(`βœ— ${o.error}`);
56
+ process.exitCode = 1;
57
+ return;
58
+ }
59
+ try {
60
+ const r = people.atrophy(o.s);
61
+ const ghosted = r.stats.ghostedFiles ?? 0;
62
+ const atRisk = r.atRiskFiles.filter((f) => f.tier === "at-risk").length;
63
+ const warn = r.atRiskFiles.filter((f) => f.tier === "warn").length;
64
+ const top = [...r.authors].sort((a, b) => b.knowledgeMass - a.knowledgeMass).slice(0, 5);
65
+ const exposure = typeof opts.replacementCost === "number" ? (ghosted + atRisk) * opts.replacementCost : undefined;
66
+ const receipt = sign(cwd, "exec:keyperson", { ghosted, atRisk, warn, fileCount: r.stats.fileCount });
67
+ if (opts.json) {
68
+ outJson({ ghostedFiles: ghosted, atRiskFiles: atRisk, warnFiles: warn, fileCount: r.stats.fileCount, topConcentration: top.map((a) => ({ name: a.name, email: a.email, knowledgeMass: Math.round(a.knowledgeMass), filesKnown: a.filesKnown })), exposureUSD: exposure, basis: "bus-factor + knowledge-concentration from git history (Ebbinghaus forgetting curve); exposure = YOUR replacement-cost Γ— (ghosted + at-risk file count), not a forecast", signed: receipt });
69
+ return;
70
+ }
71
+ out(`πŸ”‘ KEY-PERSON RISK β€” ${ghosted} ghosted file(s) (no live expert), ${atRisk} at-risk, ${warn} warning, of ${r.stats.fileCount} files`);
72
+ out(` Top knowledge concentration (single points of failure):`);
73
+ for (const a of top)
74
+ out(` β€’ ${a.name || a.email} β€” knowledge mass ${Math.round(a.knowledgeMass)} across ${a.filesKnown} files`);
75
+ if (exposure !== undefined)
76
+ out(` πŸ’Έ exposure estimate: ${usd(exposure)} (your ${usd(opts.replacementCost)}/file Γ— ${ghosted + atRisk} ghosted+at-risk β€” labelled, not a forecast)`);
77
+ if (receipt)
78
+ out(` βœ“ signed`);
79
+ }
80
+ finally {
81
+ o.s.close();
82
+ }
83
+ });
84
+ // ── 2. TALENT MAP (collaboration) β€” wraps stigmergy ──
85
+ ex.command("talent")
86
+ .description("Talent map: who actually collaborates with whom, derived from git traces (shared files + synchrony + carry-on). Org-chart truth, not self-report.")
87
+ .option("--top <n>", "show top N pairs.", (v) => parseInt(v, 10), 10)
88
+ .option("--json", "JSON output.")
89
+ .action(async (opts) => {
90
+ const cwd = process.cwd();
91
+ if (!(await git.isGitRepo(cwd))) {
92
+ out("βœ— Not in a git repo.");
93
+ process.exitCode = 1;
94
+ return;
95
+ }
96
+ const r = stigmergy.analyze(cwd);
97
+ const pairs = r.pairs.slice(0, opts.top ?? 10);
98
+ const receipt = sign(cwd, "exec:talent", { commitsAnalysed: r.commitsAnalysed, pairs: pairs.length });
99
+ if (opts.json) {
100
+ outJson({ commitsAnalysed: r.commitsAnalysed, authorCount: r.authorCount, pairs, basis: "collaboration from git traces (shared files + commits ≀24h apart + carry-on contributions); a present signal, not a prediction", signed: receipt });
101
+ return;
102
+ }
103
+ out(`🀝 TALENT MAP β€” ${r.authorCount} authors over ${r.commitsAnalysed} commits, top ${pairs.length} collaborating pairs:`);
104
+ for (const p of pairs)
105
+ out(` β€’ ${p.authorA} ⇄ ${p.authorB} β€” score ${p.stigmergyScore} (shared ${p.sharedFiles}, sync ${p.synchronyHits}, carry-on ${p.carryOnHits})`);
106
+ if (pairs.length === 0)
107
+ out(" (no pairs above the surface threshold yet)");
108
+ if (receipt)
109
+ out(` βœ“ signed`);
110
+ });
111
+ // ── 3. GOVERNANCE / promise-debt (tech-debt liability) β€” wraps promise ──
112
+ ex.command("governance")
113
+ .description("Governance & tech-debt liability: open/stale promises mined from commit + PR text, tracked through git. --debt-cost gives a labelled exposure estimate.")
114
+ .option("--debt-cost <usd>", "your est. carrying cost per open promise (USD).", (v) => parseFloat(v))
115
+ .option("--json", "JSON output.")
116
+ .action(async (opts) => {
117
+ const cwd = process.cwd();
118
+ const o = await openStore(cwd);
119
+ if ("error" in o) {
120
+ out(`βœ— ${o.error}`);
121
+ process.exitCode = 1;
122
+ return;
123
+ }
124
+ try {
125
+ const commits = util.loadAllCommits(o.s);
126
+ const r = people.buildPromiseReport(commits, {});
127
+ const t = r.totals;
128
+ const exposure = typeof opts.debtCost === "number" ? (t.open + t.stale) * opts.debtCost : undefined;
129
+ const receipt = sign(cwd, "exec:governance", { open: t.open, stale: t.stale, kept: t.kept, total: t.total });
130
+ if (opts.json) {
131
+ outJson({ open: t.open, stale: t.stale, kept: t.kept, total: t.total, oldestStaleAgeDays: r.oldestStaleAgeDays, exposureUSD: exposure, basis: "promises regex-mined from commit/PR text, tracked through git history; exposure = YOUR carrying-cost Γ— (open + stale), labelled, not a forecast", signed: receipt });
132
+ return;
133
+ }
134
+ out(`πŸ“œ GOVERNANCE / TECH-DEBT LIABILITY β€” ${t.open} open Β· ${t.stale} stale Β· ${t.kept} kept (of ${t.total} promises mined from git)`);
135
+ if (exposure !== undefined)
136
+ out(` πŸ’Έ exposure estimate: ${usd(exposure)} (your ${usd(opts.debtCost)}/promise Γ— ${t.open + t.stale} open+stale β€” labelled, not a forecast)`);
137
+ if (receipt)
138
+ out(` βœ“ signed`);
139
+ }
140
+ finally {
141
+ o.s.close();
142
+ }
143
+ });
144
+ // ── 4. CAPITAL / VALUE (realized token savings) β€” wraps treasury ──
145
+ ex.command("burn")
146
+ .description("Realized value: input-context tokens Mneme has actually saved (from the signed ledger) β†’ USD at YOUR vendor price. The asset side of the ledger.")
147
+ .option("--price-per-1k <usd>", "your vendor's price per 1k input tokens (USD).", (v) => parseFloat(v))
148
+ .option("--json", "JSON output.")
149
+ .action(async (opts) => {
150
+ const cwd = process.cwd();
151
+ const p = join(cwd, TREASURY_LEDGER);
152
+ const events = existsSync(p) ? treasury.parseLedger(readFileSync(p, "utf8")) : [];
153
+ const agg = treasury.aggregate(events, opts.pricePer1k !== undefined ? { pricePer1kUSD: opts.pricePer1k } : undefined);
154
+ const receipt = sign(cwd, "exec:burn", { tokensSaved: agg.tokensSaved, events: agg.events });
155
+ if (opts.json) {
156
+ outJson({ ...agg, signed: receipt });
157
+ return;
158
+ }
159
+ out(`πŸ’° REALIZED VALUE β€” ${agg.tokensSaved.toLocaleString("en-US")} input tokens saved over ${agg.events} reductions (${agg.savedPct}% of fed context)`);
160
+ if (typeof agg.usdSaved === "number")
161
+ out(` β‰ˆ ${usd(agg.usdSaved)} at your ${rate(opts.pricePer1k)}/1k (labelled β‰ˆchars/4 estimate of INPUT context β€” not a tokenizer count)`);
162
+ else
163
+ out(` (pass --price-per-1k <usd> for a dollar figure at your vendor's price)`);
164
+ if (receipt)
165
+ out(` βœ“ signed`);
166
+ });
167
+ // ── 5. ROI projection (pillar 4) β€” wraps exec.projectRoi over the real ledger ──
168
+ ex.command("roi")
169
+ .description("ROI projection: extrapolate Mneme's MEASURED per-reduction saving rate to YOUR team & usage at YOUR price. Transparent: (measured rate) Γ— (your volume) Γ— (your price).")
170
+ .option("--team <n>", "team size.", (v) => parseInt(v, 10), 0)
171
+ .option("--per-dev <n>", "reduction-eligible events per dev per month.", (v) => parseInt(v, 10), 0)
172
+ .option("--price-per-1k <usd>", "your vendor's price per 1k input tokens (USD).", (v) => parseFloat(v), 0)
173
+ .option("--months <n>", "projection horizon (months).", (v) => parseInt(v, 10), 12)
174
+ .option("--json", "JSON output.")
175
+ .action(async (opts) => {
176
+ const cwd = process.cwd();
177
+ const p = join(cwd, TREASURY_LEDGER);
178
+ const events = existsSync(p) ? treasury.parseLedger(readFileSync(p, "utf8")) : [];
179
+ const agg = treasury.aggregate(events);
180
+ const proj = execCore.projectRoi({
181
+ measuredTokensSaved: agg.tokensSaved, measuredReductions: agg.events,
182
+ teamSize: opts.team ?? 0, reductionsPerDevPerMonth: opts.perDev ?? 0,
183
+ pricePer1kUSD: opts.pricePer1k ?? 0, months: opts.months ?? 12,
184
+ });
185
+ const receipt = sign(cwd, "exec:roi", { projectedUsdSaved: proj.projectedUsdSaved, months: proj.months });
186
+ if (opts.json) {
187
+ outJson({ ...proj, signed: receipt });
188
+ return;
189
+ }
190
+ out(`πŸ“ˆ ROI PROJECTION (${proj.months} months)`);
191
+ out(` measured rate: ${proj.avgTokensPerReduction} tokens saved per reduction (from ${agg.events} realized reductions)`);
192
+ out(` projected: ${proj.projectedReductions.toLocaleString("en-US")} reductions β†’ ${proj.projectedTokensSaved.toLocaleString("en-US")} tokens β†’ ${usd(proj.projectedUsdSaved)} saved`);
193
+ out(` realized so far: ${usd(proj.realizedUsdSaved)}`);
194
+ if (agg.events === 0)
195
+ out(` ⚠ no realized reductions yet β€” run Mneme (distill/loopguard/nkl) to seed the measured rate; projection is 0 until then.`);
196
+ out(` basis: ${proj.basis}`);
197
+ if (receipt)
198
+ out(` βœ“ signed`);
199
+ });
200
+ // ── 6. MCP ATTACK SURFACE (pillar 3, CISO) β€” wraps skeleton_key ──
201
+ ex.command("mcp-audit")
202
+ .description("Agent MCP attack surface (CISO): discover the MCP servers wired into your agents, score per-server risk, compute the transitive bypass budget. The governed-boundary check.")
203
+ .option("--budget <n>", "risk budget cap.", (v) => parseFloat(v), 5.0)
204
+ .option("--json", "JSON output.")
205
+ .action(async (opts) => {
206
+ const cwd = process.cwd();
207
+ try {
208
+ const a = await skeletonKey.auditMcpConfigs({ budgetCap: opts.budget ?? 5.0 });
209
+ const receipt = sign(cwd, "exec:mcp-audit", { totalServers: a.totalServers, riskBudget: a.riskBudget, withinBudget: a.withinBudget });
210
+ if (opts.json) {
211
+ outJson({ totalServers: a.totalServers, riskBudget: a.riskBudget, budgetCap: a.budgetCap, withinBudget: a.withinBudget, findings: a.findings, summary: a.summary, signed: receipt });
212
+ return;
213
+ }
214
+ out(`πŸ›‚ MCP ATTACK SURFACE β€” ${a.totalServers} server(s), risk budget ${a.riskBudget.toFixed(1)} / ${a.budgetCap.toFixed(1)} ${a.withinBudget ? "βœ“ within" : "πŸ›‘ OVER"}`);
215
+ for (const f of a.findings.slice(0, 10))
216
+ out(` β€’ ${f.server} β€” ${f.risk?.riskName ?? "unknown"} (severity ${f.risk?.severity ?? "?"}, ${f.source})`);
217
+ if (a.totalServers === 0)
218
+ out(` (no MCP servers discovered in known agent configs)`);
219
+ out(` ${a.summary}`);
220
+ if (!a.withinBudget)
221
+ process.exitCode = 2;
222
+ if (receipt)
223
+ out(` βœ“ signed`);
224
+ }
225
+ catch (e) {
226
+ out(`βœ— ${e.message}`);
227
+ process.exitCode = 1;
228
+ }
229
+ });
230
+ }
231
+ //# sourceMappingURL=exec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/commands/exec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoJA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsgNvD"}
package/dist/index.js CHANGED
@@ -80,6 +80,7 @@ import { registerDistillCommands } from "./commands/distill.js";
80
80
  import { registerSavingsCommands } from "./commands/savings.js";
81
81
  import { registerMapCommands } from "./commands/map.js";
82
82
  import { registerEgressCommands } from "./commands/egress.js";
83
+ import { registerExecCommands } from "./commands/exec.js";
83
84
  import { registerTrustCommands } from "./commands/trust.js";
84
85
  import { registerNuclearCommands } from "./commands/nuclear-cli.js";
85
86
  import { registerOvernightCommand } from "./commands/overnight.js";
@@ -4705,6 +4706,7 @@ export async function run(argv) {
4705
4706
  registerSavingsCommands(program);
4706
4707
  registerMapCommands(program);
4707
4708
  registerEgressCommands(program);
4709
+ registerExecCommands(program);
4708
4710
  // ─── Trust calibrator (v1.31.0) -- per-subsystem precision/recall/band
4709
4711
  registerTrustCommands(program);
4710
4712
  // ─── Wisdom reactor (v1.33.0) -- five nuclear-physics formulas as Mneme metrics