mneme-ai 1.10.0 → 1.17.3
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/bin/git-mneme.js +0 -0
- package/bin/mneme.js +0 -0
- package/dist/commands/audit-log-cmd.d.ts +24 -0
- package/dist/commands/audit-log-cmd.d.ts.map +1 -0
- package/dist/commands/audit-log-cmd.js +131 -0
- package/dist/commands/audit-log-cmd.js.map +1 -0
- package/dist/commands/bench.d.ts +23 -0
- package/dist/commands/bench.d.ts.map +1 -0
- package/dist/commands/bench.js +85 -0
- package/dist/commands/bench.js.map +1 -0
- package/dist/commands/daemon.d.ts.map +1 -1
- package/dist/commands/daemon.js +41 -3
- package/dist/commands/daemon.js.map +1 -1
- package/dist/commands/ecosystem.d.ts +13 -0
- package/dist/commands/ecosystem.d.ts.map +1 -0
- package/dist/commands/ecosystem.js +44 -0
- package/dist/commands/ecosystem.js.map +1 -0
- package/dist/commands/index-cmd.d.ts.map +1 -1
- package/dist/commands/index-cmd.js +21 -1
- package/dist/commands/index-cmd.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +53 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/key.d.ts +22 -0
- package/dist/commands/key.d.ts.map +1 -0
- package/dist/commands/key.js +60 -0
- package/dist/commands/key.js.map +1 -0
- package/dist/commands/security.d.ts +18 -0
- package/dist/commands/security.d.ts.map +1 -0
- package/dist/commands/security.js +126 -0
- package/dist/commands/security.js.map +1 -0
- package/dist/commands/security.test.d.ts +5 -0
- package/dist/commands/security.test.d.ts.map +1 -0
- package/dist/commands/security.test.js +198 -0
- package/dist/commands/security.test.js.map +1 -0
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +12 -2
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +110 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
- package/dist/commands/wild-stubs.d.ts +0 -6
- package/dist/commands/wild-stubs.d.ts.map +0 -1
- package/dist/commands/wild-stubs.js +0 -112
- package/dist/commands/wild-stubs.js.map +0 -1
package/bin/git-mneme.js
CHANGED
|
File without changes
|
package/bin/mneme.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mneme audit-log` — manage the HMAC-chained tamper-evident audit log.
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* - enable — turn on append-only logging of every mutating action
|
|
6
|
+
* - disable — turn off (existing log preserved)
|
|
7
|
+
* - status — show current state + entry count + last entry
|
|
8
|
+
* - verify — re-walk the chain; report tamper, if any
|
|
9
|
+
* - rotate — archive current log + start fresh chain
|
|
10
|
+
* - show — dump entries (JSON or pretty)
|
|
11
|
+
*
|
|
12
|
+
* Banking / SOC2 / PCI-DSS audit requirement: `mneme audit-log verify`
|
|
13
|
+
* is the compliance checkpoint. CI exit code 0 = chain intact.
|
|
14
|
+
*/
|
|
15
|
+
export type AuditLogAction = "enable" | "disable" | "status" | "verify" | "rotate" | "show";
|
|
16
|
+
export interface AuditLogOptions {
|
|
17
|
+
cwd: string;
|
|
18
|
+
action: AuditLogAction;
|
|
19
|
+
actor?: string;
|
|
20
|
+
limit?: number;
|
|
21
|
+
json?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare function auditLogCommand(opts: AuditLogOptions): Promise<number>;
|
|
24
|
+
//# sourceMappingURL=audit-log-cmd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-log-cmd.d.ts","sourceRoot":"","sources":["../../src/commands/audit-log-cmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE5F,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAyH5E"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mneme audit-log` — manage the HMAC-chained tamper-evident audit log.
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* - enable — turn on append-only logging of every mutating action
|
|
6
|
+
* - disable — turn off (existing log preserved)
|
|
7
|
+
* - status — show current state + entry count + last entry
|
|
8
|
+
* - verify — re-walk the chain; report tamper, if any
|
|
9
|
+
* - rotate — archive current log + start fresh chain
|
|
10
|
+
* - show — dump entries (JSON or pretty)
|
|
11
|
+
*
|
|
12
|
+
* Banking / SOC2 / PCI-DSS audit requirement: `mneme audit-log verify`
|
|
13
|
+
* is the compliance checkpoint. CI exit code 0 = chain intact.
|
|
14
|
+
*/
|
|
15
|
+
import kleur from "kleur";
|
|
16
|
+
import { ui } from "../ui.js";
|
|
17
|
+
import { git, security } from "@mneme-ai/core";
|
|
18
|
+
export async function auditLogCommand(opts) {
|
|
19
|
+
if (!(await git.isGitRepo(opts.cwd))) {
|
|
20
|
+
ui.error("Not in a git repo. Run `mneme init` first.");
|
|
21
|
+
return 1;
|
|
22
|
+
}
|
|
23
|
+
const meta = await git.getRepoMeta(opts.cwd);
|
|
24
|
+
const root = meta.rootPath;
|
|
25
|
+
switch (opts.action) {
|
|
26
|
+
case "enable": {
|
|
27
|
+
security.auditLog.enable(root);
|
|
28
|
+
security.auditLog.appendEntry(root, {
|
|
29
|
+
actor: opts.actor ?? "cli",
|
|
30
|
+
action: "audit-log-enable",
|
|
31
|
+
details: { enabledAt: new Date().toISOString() },
|
|
32
|
+
});
|
|
33
|
+
if (opts.json) {
|
|
34
|
+
process.stdout.write(JSON.stringify({ enabled: true }, null, 2) + "\n");
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
ui.banner();
|
|
38
|
+
process.stdout.write(kleur.bold("\n 🔒 Audit log: ENABLED\n\n") +
|
|
39
|
+
" Every mutating action is now appended to .mneme/audit.log\n" +
|
|
40
|
+
" with an HMAC-SHA-256 chain. Any modification to the log will\n" +
|
|
41
|
+
" be detected by `mneme audit-log verify`.\n\n" +
|
|
42
|
+
" Set " + kleur.cyan("MNEME_AUDIT_SECRET") + " (>= 32 chars) for production.\n\n");
|
|
43
|
+
}
|
|
44
|
+
return 0;
|
|
45
|
+
}
|
|
46
|
+
case "disable": {
|
|
47
|
+
security.auditLog.disable(root);
|
|
48
|
+
if (opts.json)
|
|
49
|
+
process.stdout.write(JSON.stringify({ enabled: false }, null, 2) + "\n");
|
|
50
|
+
else
|
|
51
|
+
ui.success("Audit log disabled. Existing log preserved.");
|
|
52
|
+
return 0;
|
|
53
|
+
}
|
|
54
|
+
case "status": {
|
|
55
|
+
const enabled = security.auditLog.isEnabled(root);
|
|
56
|
+
const entries = security.auditLog.readAll(root);
|
|
57
|
+
const last = entries[entries.length - 1];
|
|
58
|
+
const data = {
|
|
59
|
+
enabled,
|
|
60
|
+
totalEntries: entries.length,
|
|
61
|
+
lastEntry: last ? { ts: last.ts, actor: last.actor, action: last.action, hmac: last.hmac.slice(0, 12) + "…" } : null,
|
|
62
|
+
};
|
|
63
|
+
if (opts.json)
|
|
64
|
+
process.stdout.write(JSON.stringify(data, null, 2) + "\n");
|
|
65
|
+
else {
|
|
66
|
+
ui.banner();
|
|
67
|
+
process.stdout.write(kleur.bold("\n 🔒 Audit log status\n\n") +
|
|
68
|
+
` Enabled: ${enabled ? kleur.green("yes") : kleur.gray("no")}\n` +
|
|
69
|
+
` Entries: ${entries.length}\n` +
|
|
70
|
+
(last ? ` Last: ${last.ts} · ${last.actor} · ${last.action}\n` : "") +
|
|
71
|
+
"\n");
|
|
72
|
+
}
|
|
73
|
+
return 0;
|
|
74
|
+
}
|
|
75
|
+
case "verify": {
|
|
76
|
+
const result = security.auditLog.verify(root);
|
|
77
|
+
if (opts.json) {
|
|
78
|
+
process.stdout.write(JSON.stringify(result, null, 2) + "\n");
|
|
79
|
+
return result.ok ? 0 : 1;
|
|
80
|
+
}
|
|
81
|
+
ui.banner();
|
|
82
|
+
if (result.ok) {
|
|
83
|
+
process.stdout.write(kleur.bold(`\n ${kleur.green("✓")} Audit chain INTACT\n\n`) +
|
|
84
|
+
` ${result.totalEntries} entries verified · HMAC-SHA-256 chain unbroken\n\n`);
|
|
85
|
+
return 0;
|
|
86
|
+
}
|
|
87
|
+
process.stdout.write(kleur.bold(`\n ${kleur.red("✗")} Audit chain BROKEN\n\n`) +
|
|
88
|
+
` Total entries: ${result.totalEntries}\n` +
|
|
89
|
+
` Broken at index: ${result.brokenAtIndex}\n` +
|
|
90
|
+
` Reason: ${result.brokenReason}\n\n` +
|
|
91
|
+
kleur.yellow(" ⚠ Tamper detected. Investigate immediately.\n\n"));
|
|
92
|
+
return 1;
|
|
93
|
+
}
|
|
94
|
+
case "rotate": {
|
|
95
|
+
const r = security.auditLog.rotate(root, opts.actor ?? "cli");
|
|
96
|
+
if (opts.json)
|
|
97
|
+
process.stdout.write(JSON.stringify(r, null, 2) + "\n");
|
|
98
|
+
else if (r.rotated)
|
|
99
|
+
ui.success(`Rotated. Archived to ${r.archivedPath}`);
|
|
100
|
+
else
|
|
101
|
+
ui.success("Fresh log started.");
|
|
102
|
+
return 0;
|
|
103
|
+
}
|
|
104
|
+
case "show": {
|
|
105
|
+
const entries = security.auditLog.readAll(root);
|
|
106
|
+
const limit = opts.limit ?? entries.length;
|
|
107
|
+
const slice = entries.slice(-limit);
|
|
108
|
+
if (opts.json) {
|
|
109
|
+
process.stdout.write(JSON.stringify(slice, null, 2) + "\n");
|
|
110
|
+
return 0;
|
|
111
|
+
}
|
|
112
|
+
if (slice.length === 0) {
|
|
113
|
+
ui.info("No audit entries.");
|
|
114
|
+
return 0;
|
|
115
|
+
}
|
|
116
|
+
ui.banner();
|
|
117
|
+
process.stdout.write(kleur.bold(`\n 🔒 Audit log — last ${slice.length} entr${slice.length === 1 ? "y" : "ies"}\n\n`));
|
|
118
|
+
for (const e of slice) {
|
|
119
|
+
process.stdout.write(` ${kleur.gray(e.ts)} · ${kleur.cyan(e.actor)} · ${kleur.bold(e.action)}` +
|
|
120
|
+
(e.target ? ` → ${e.target}` : "") +
|
|
121
|
+
kleur.gray(` [${e.hmac.slice(0, 8)}]`) +
|
|
122
|
+
"\n");
|
|
123
|
+
}
|
|
124
|
+
process.stdout.write("\n");
|
|
125
|
+
return 0;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
ui.error(`Unknown audit-log action: ${opts.action}`);
|
|
129
|
+
return 1;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=audit-log-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-log-cmd.js","sourceRoot":"","sources":["../../src/commands/audit-log-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mneme bench` — AI-Memory-Bench CLI.
|
|
3
|
+
*
|
|
4
|
+
* Two modes:
|
|
5
|
+
* 1. `--probes-out <file>` → emit JSON of probes for the AI to answer
|
|
6
|
+
* 2. `--score <answers.json>` → score AI's answers, render leaderboard
|
|
7
|
+
*
|
|
8
|
+
* Workflow:
|
|
9
|
+
* $ mneme bench --probes-out probes.json
|
|
10
|
+
* $ <feed probes.json questions to your AI; collect answers as JSON map>
|
|
11
|
+
* $ mneme bench --score answers.json --label "claude-code-with-mneme"
|
|
12
|
+
*/
|
|
13
|
+
import { bench } from "@mneme-ai/core";
|
|
14
|
+
export interface BenchOptions {
|
|
15
|
+
cwd: string;
|
|
16
|
+
probesOut?: string;
|
|
17
|
+
score?: string;
|
|
18
|
+
label?: string;
|
|
19
|
+
category?: bench.ProbeCategory;
|
|
20
|
+
json?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function benchCommand(opts: BenchOptions): Promise<number>;
|
|
23
|
+
//# sourceMappingURL=bench.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bench.d.ts","sourceRoot":"","sources":["../../src/commands/bench.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CA8EtE"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mneme bench` — AI-Memory-Bench CLI.
|
|
3
|
+
*
|
|
4
|
+
* Two modes:
|
|
5
|
+
* 1. `--probes-out <file>` → emit JSON of probes for the AI to answer
|
|
6
|
+
* 2. `--score <answers.json>` → score AI's answers, render leaderboard
|
|
7
|
+
*
|
|
8
|
+
* Workflow:
|
|
9
|
+
* $ mneme bench --probes-out probes.json
|
|
10
|
+
* $ <feed probes.json questions to your AI; collect answers as JSON map>
|
|
11
|
+
* $ mneme bench --score answers.json --label "claude-code-with-mneme"
|
|
12
|
+
*/
|
|
13
|
+
import { readFileSync, writeFileSync, existsSync } from "node:fs";
|
|
14
|
+
import kleur from "kleur";
|
|
15
|
+
import { ui } from "../ui.js";
|
|
16
|
+
import { git, bench } from "@mneme-ai/core";
|
|
17
|
+
export async function benchCommand(opts) {
|
|
18
|
+
if (!(await git.isGitRepo(opts.cwd))) {
|
|
19
|
+
ui.error("Not in a git repo. Run `mneme init` first.");
|
|
20
|
+
return 1;
|
|
21
|
+
}
|
|
22
|
+
const meta = await git.getRepoMeta(opts.cwd);
|
|
23
|
+
const probes = opts.category
|
|
24
|
+
? bench.STANDARD_PROBES.filter((p) => p.category === opts.category)
|
|
25
|
+
: bench.STANDARD_PROBES;
|
|
26
|
+
// ── Mode 1: emit probes for AI to answer ──────────────────────────
|
|
27
|
+
if (opts.probesOut) {
|
|
28
|
+
const out = probes.map((p) => ({
|
|
29
|
+
id: p.id,
|
|
30
|
+
category: p.category,
|
|
31
|
+
question: p.question,
|
|
32
|
+
tags: p.tags,
|
|
33
|
+
}));
|
|
34
|
+
writeFileSync(opts.probesOut, JSON.stringify(out, null, 2), "utf8");
|
|
35
|
+
if (opts.json) {
|
|
36
|
+
process.stdout.write(JSON.stringify({ probesEmitted: out.length, path: opts.probesOut }, null, 2) + "\n");
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
ui.banner();
|
|
40
|
+
process.stdout.write(kleur.bold(`\n 📐 AI-Memory-Bench — ${out.length} probe(s) written to ${opts.probesOut}\n\n`) +
|
|
41
|
+
" Next:\n" +
|
|
42
|
+
" 1. Feed each `question` to your AI client (with or without Mneme attached)\n" +
|
|
43
|
+
" 2. Collect responses into a JSON map: { \"<probe-id>\": \"<answer>\", ... }\n" +
|
|
44
|
+
" 3. Run: " + kleur.cyan("mneme bench --score answers.json --label '<your-config>'") + "\n\n");
|
|
45
|
+
}
|
|
46
|
+
return 0;
|
|
47
|
+
}
|
|
48
|
+
// ── Mode 2: score AI answers ──────────────────────────────────────
|
|
49
|
+
if (opts.score) {
|
|
50
|
+
if (!existsSync(opts.score)) {
|
|
51
|
+
ui.error(`No such answers file: ${opts.score}`);
|
|
52
|
+
return 1;
|
|
53
|
+
}
|
|
54
|
+
let answers;
|
|
55
|
+
try {
|
|
56
|
+
answers = JSON.parse(readFileSync(opts.score, "utf8"));
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
ui.error(`Could not parse answers JSON: ${err.message}`);
|
|
60
|
+
return 1;
|
|
61
|
+
}
|
|
62
|
+
const result = await bench.runBench(probes, answers, meta.rootPath);
|
|
63
|
+
const label = opts.label ?? "unnamed-run";
|
|
64
|
+
if (opts.json) {
|
|
65
|
+
process.stdout.write(JSON.stringify({ label, ...result }, null, 2) + "\n");
|
|
66
|
+
return 0;
|
|
67
|
+
}
|
|
68
|
+
ui.banner();
|
|
69
|
+
process.stdout.write("\n" + bench.renderLeaderboard(result, label) + "\n\n");
|
|
70
|
+
process.stdout.write(kleur.gray(" Tip: pipe " + kleur.cyan("--json") + " into your CI to fail builds when " +
|
|
71
|
+
"Wilson lower bound drops below your threshold.\n\n"));
|
|
72
|
+
return result.hallucinationRate > 0.1 ? 1 : 0;
|
|
73
|
+
}
|
|
74
|
+
// ── No mode → print help ──────────────────────────────────────────
|
|
75
|
+
ui.banner();
|
|
76
|
+
process.stdout.write(kleur.bold("\n 📐 AI-Memory-Bench — the first reproducible benchmark for AI memory layers\n\n") +
|
|
77
|
+
` Probes available: ${kleur.green(`${probes.length}`)} (across ${kleur.cyan(`${new Set(probes.map((p) => p.category)).size}`)} categories)\n\n` +
|
|
78
|
+
" Usage:\n" +
|
|
79
|
+
` ${kleur.cyan("mneme bench --probes-out probes.json")} emit probes for the AI to answer\n` +
|
|
80
|
+
` ${kleur.cyan("mneme bench --score answers.json --label X")} score the AI's answers\n\n` +
|
|
81
|
+
" Why measure: if you can't quantify hallucination, you can't reduce it.\n" +
|
|
82
|
+
" Run with + without Mneme attached, compare the two leaderboards.\n\n");
|
|
83
|
+
return 0;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=bench.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bench.js","sourceRoot":"","sources":["../../src/commands/bench.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/commands/daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAUH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC7C,mEAAmE;IACnE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/commands/daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAUH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC7C,mEAAmE;IACnE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAyVD,wBAAsB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAUxE"}
|
package/dist/commands/daemon.js
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* Cross-platform: PID-file approach works on win32 + darwin + linux.
|
|
18
18
|
* fs.watch is supported on all three. No native deps.
|
|
19
19
|
*/
|
|
20
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync, watch, renameSync } from "node:fs";
|
|
20
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync, watch, renameSync, statSync } from "node:fs";
|
|
21
21
|
import { join } from "node:path";
|
|
22
22
|
import { spawn, spawnSync } from "node:child_process";
|
|
23
23
|
import { setTimeout as wait } from "node:timers/promises";
|
|
@@ -44,6 +44,23 @@ function isAlive(pid) {
|
|
|
44
44
|
return err.code === "EPERM";
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
+
/** v1.11.0 security: verify the PID file is owned by the current user.
|
|
48
|
+
* On Windows, file UID is not meaningful — we trust the per-user repo
|
|
49
|
+
* path (typically under %USERPROFILE%) instead. */
|
|
50
|
+
function isPidFileOwnedByMe(pidPath) {
|
|
51
|
+
try {
|
|
52
|
+
if (process.platform === "win32")
|
|
53
|
+
return true; // POSIX-only check
|
|
54
|
+
const st = statSync(pidPath);
|
|
55
|
+
const me = process.getuid?.();
|
|
56
|
+
if (typeof me !== "number")
|
|
57
|
+
return true; // can't check, fail open
|
|
58
|
+
return st.uid === me;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return true; // missing → not a security issue, fail open for the caller
|
|
62
|
+
}
|
|
63
|
+
}
|
|
47
64
|
function readStatus(repoRoot) {
|
|
48
65
|
const p = paths(repoRoot);
|
|
49
66
|
if (!existsSync(p.status))
|
|
@@ -185,6 +202,18 @@ async function startDaemon(opts) {
|
|
|
185
202
|
const p = paths(meta.rootPath);
|
|
186
203
|
if (!existsSync(p.dir))
|
|
187
204
|
mkdirSync(p.dir, { recursive: true });
|
|
205
|
+
// v1.11.0 security hardening: refuse to read/trust a PID file that's
|
|
206
|
+
// not owned by the current user. Mitigates the "another user / attacker
|
|
207
|
+
// plants a PID file in a shared workspace, hijacks our daemon control"
|
|
208
|
+
// attack on multi-user POSIX boxes.
|
|
209
|
+
if (existsSync(p.pid) && !isPidFileOwnedByMe(p.pid)) {
|
|
210
|
+
if (opts.json) {
|
|
211
|
+
process.stdout.write(JSON.stringify({ started: false, error: "pid-file-owned-by-other-user", path: p.pid }, null, 2) + "\n");
|
|
212
|
+
return 1;
|
|
213
|
+
}
|
|
214
|
+
ui.error(`Refusing to start: ${p.pid} is owned by a different user. Investigate before removing.`);
|
|
215
|
+
return 1;
|
|
216
|
+
}
|
|
188
217
|
// Already running?
|
|
189
218
|
if (existsSync(p.pid)) {
|
|
190
219
|
const existing = parseInt(readFileSync(p.pid, "utf8").trim(), 10);
|
|
@@ -203,8 +232,9 @@ async function startDaemon(opts) {
|
|
|
203
232
|
catch { }
|
|
204
233
|
}
|
|
205
234
|
if (opts.attached) {
|
|
206
|
-
// We ARE the daemon — write PID file and run loop
|
|
207
|
-
|
|
235
|
+
// We ARE the daemon — write PID file and run loop. Restrictive perms
|
|
236
|
+
// (0600) so other users on a shared box can't read/forge.
|
|
237
|
+
writeFileSync(p.pid, String(process.pid), { encoding: "utf8", mode: 0o600 });
|
|
208
238
|
await runDaemonLoop(meta.rootPath);
|
|
209
239
|
return 0;
|
|
210
240
|
}
|
|
@@ -246,6 +276,14 @@ async function stopDaemon(opts) {
|
|
|
246
276
|
ui.warn("No daemon running.");
|
|
247
277
|
return 0;
|
|
248
278
|
}
|
|
279
|
+
// v1.11.0 security hardening: refuse to act on a foreign PID file.
|
|
280
|
+
if (!isPidFileOwnedByMe(p.pid)) {
|
|
281
|
+
if (opts.json)
|
|
282
|
+
process.stdout.write(JSON.stringify({ stopped: false, error: "pid-file-owned-by-other-user", path: p.pid }, null, 2) + "\n");
|
|
283
|
+
else
|
|
284
|
+
ui.error(`Refusing to stop: ${p.pid} is owned by a different user.`);
|
|
285
|
+
return 1;
|
|
286
|
+
}
|
|
249
287
|
const pid = parseInt(readFileSync(p.pid, "utf8").trim(), 10);
|
|
250
288
|
if (!isAlive(pid)) {
|
|
251
289
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/commands/daemon.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/commands/daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mneme ecosystem` — detect which ecosystems are present + show
|
|
3
|
+
* the dynamic tool catalog Mneme would expose for THIS specific repo.
|
|
4
|
+
*
|
|
5
|
+
* The wild card capability: every other MCP server has a static tool
|
|
6
|
+
* surface. Mneme's surface adapts to your codebase.
|
|
7
|
+
*/
|
|
8
|
+
export interface EcosystemOptions {
|
|
9
|
+
cwd: string;
|
|
10
|
+
json?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare function ecosystemCommand(opts: EcosystemOptions): Promise<number>;
|
|
13
|
+
//# sourceMappingURL=ecosystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ecosystem.d.ts","sourceRoot":"","sources":["../../src/commands/ecosystem.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgD9E"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mneme ecosystem` — detect which ecosystems are present + show
|
|
3
|
+
* the dynamic tool catalog Mneme would expose for THIS specific repo.
|
|
4
|
+
*
|
|
5
|
+
* The wild card capability: every other MCP server has a static tool
|
|
6
|
+
* surface. Mneme's surface adapts to your codebase.
|
|
7
|
+
*/
|
|
8
|
+
import kleur from "kleur";
|
|
9
|
+
import { ui } from "../ui.js";
|
|
10
|
+
import { git, dynamic } from "@mneme-ai/core";
|
|
11
|
+
export async function ecosystemCommand(opts) {
|
|
12
|
+
if (!(await git.isGitRepo(opts.cwd))) {
|
|
13
|
+
ui.error("Not in a git repo. Run `mneme init` first.");
|
|
14
|
+
return 1;
|
|
15
|
+
}
|
|
16
|
+
const meta = await git.getRepoMeta(opts.cwd);
|
|
17
|
+
const detection = dynamic.detectEcosystems(meta.rootPath);
|
|
18
|
+
const catalog = dynamic.buildDynamicToolCatalog(detection);
|
|
19
|
+
if (opts.json) {
|
|
20
|
+
process.stdout.write(JSON.stringify({ detection, catalog }, null, 2) + "\n");
|
|
21
|
+
return 0;
|
|
22
|
+
}
|
|
23
|
+
ui.banner();
|
|
24
|
+
process.stdout.write(kleur.bold(`\n 🧬 Dynamic MCP — ecosystem detection\n\n`) +
|
|
25
|
+
` Detected: ${kleur.cyan(`${detection.signals.length}`)} ecosystem(s)\n` +
|
|
26
|
+
` Tools to add: ${kleur.green(`+${detection.toolsToAdd}`)} (on top of base 98+)\n` +
|
|
27
|
+
` Detection time: ${detection.detectedAt}\n\n`);
|
|
28
|
+
if (detection.signals.length === 0) {
|
|
29
|
+
process.stdout.write(kleur.gray(" No ecosystems detected. The base 98+ Mneme tools still apply.\n\n") +
|
|
30
|
+
kleur.gray(" Add a package.json dependency or a recognised import to activate ecosystem-specific tools.\n\n"));
|
|
31
|
+
return 0;
|
|
32
|
+
}
|
|
33
|
+
process.stdout.write(kleur.bold(" ◆ Ecosystem signals\n\n"));
|
|
34
|
+
for (const sig of detection.signals) {
|
|
35
|
+
const conf = `${(sig.confidence * 100).toFixed(0)}%`;
|
|
36
|
+
process.stdout.write(` ${kleur.cyan(`${sig.id.padEnd(10)}`)} ${kleur.gray(`(confidence ${conf})`)}\n` +
|
|
37
|
+
` evidence: ${sig.evidence.join(", ")}\n` +
|
|
38
|
+
` tools: ${sig.tools.join(", ")}\n\n`);
|
|
39
|
+
}
|
|
40
|
+
process.stdout.write(kleur.gray(" These ecosystem-specific tools spawn at MCP cold start — your AI client\n" +
|
|
41
|
+
" sees a tool surface tailored to YOUR codebase.\n\n"));
|
|
42
|
+
return 0;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=ecosystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ecosystem.js","sourceRoot":"","sources":["../../src/commands/ecosystem.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAO9C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAsB;IAC3D,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACrC,EAAE,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QACvD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE7C,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAE3D,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7E,OAAO,CAAC,CAAC;IACX,CAAC;IAED,EAAE,CAAC,MAAM,EAAE,CAAC;IACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC;QACxD,yBAAyB,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,iBAAiB;QACnF,yBAAyB,KAAK,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC,yBAAyB;QACzF,yBAAyB,SAAS,CAAC,UAAU,MAAM,CACtD,CAAC;IAEF,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC;YAC/E,KAAK,CAAC,IAAI,CAAC,kGAAkG,CAAC,CACjH,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAC9D,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,GAAG,CAAC,IAAI;YACjF,mBAAmB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAC9C,mBAAmB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAChD,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,CAAC,IAAI,CACR,6EAA6E;QAC3E,sDAAsD,CACzD,CACF,CAAC;IACF,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-cmd.d.ts","sourceRoot":"","sources":["../../src/commands/index-cmd.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yCAAyC;IACzC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"index-cmd.d.ts","sourceRoot":"","sources":["../../src/commands/index-cmd.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yCAAyC;IACzC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAuR7E"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { git, indexer, store, util } from "@mneme-ai/core";
|
|
1
|
+
import { git, indexer, store, util, security } from "@mneme-ai/core";
|
|
2
2
|
import { resolveEmbedder } from "@mneme-ai/embeddings";
|
|
3
3
|
import { dbPath } from "../paths.js";
|
|
4
4
|
import { readConfig, writeConfig } from "../config.js";
|
|
@@ -12,6 +12,19 @@ export async function indexCommand(opts) {
|
|
|
12
12
|
}
|
|
13
13
|
const meta = await git.getRepoMeta(opts.cwd);
|
|
14
14
|
const cfg = readConfig(meta.rootPath);
|
|
15
|
+
// v1.11.1 — lazy auto-bootstrap for users upgrading from v1.10.0 who
|
|
16
|
+
// never re-ran `mneme init`. Idempotent + best-effort.
|
|
17
|
+
if (process.env["MNEME_NO_AUTO_SECURITY"] !== "1") {
|
|
18
|
+
try {
|
|
19
|
+
const boot = security.autoBootstrap(meta.rootPath);
|
|
20
|
+
if (boot.auditLogAutoEnabled) {
|
|
21
|
+
ui.dim("");
|
|
22
|
+
ui.success(`Security on by default · audit log auto-enabled (HMAC-SHA-256${boot.fipsActive ? " · FIPS-validated" : ""})`);
|
|
23
|
+
ui.dim(" See `mneme security status` · disable with `mneme security off`.");
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch { /* best-effort */ }
|
|
27
|
+
}
|
|
15
28
|
// ── --analyze: don't re-index. Inspect what we already have. ──────────
|
|
16
29
|
if (opts.analyze) {
|
|
17
30
|
const s = new store.MnemeStore(dbPath(meta.rootPath));
|
|
@@ -85,10 +98,16 @@ export async function indexCommand(opts) {
|
|
|
85
98
|
// Bundled-model download progress hook — keeps the user informed during
|
|
86
99
|
// the one-time ~25MB ONNX fetch on first run.
|
|
87
100
|
let lastDl = 0;
|
|
101
|
+
// v1.11.1 — TOFU manifest path is per-repo so different projects can pin
|
|
102
|
+
// different models independently. Auto-on unless user opts out.
|
|
103
|
+
const tofuManifestPath = process.env["MNEME_NO_AUTO_SECURITY"] === "1"
|
|
104
|
+
? undefined
|
|
105
|
+
: `${meta.rootPath}/.mneme/model-checksums.json`;
|
|
88
106
|
const embedder = await resolveEmbedder({
|
|
89
107
|
provider: noLlm ? "hash" : (opts.embedder ?? cfg.embeddings.provider),
|
|
90
108
|
model: noLlm ? undefined : (opts.model ?? cfg.embeddings.model),
|
|
91
109
|
baseUrl: cfg.embeddings.baseUrl,
|
|
110
|
+
tofuManifestPath,
|
|
92
111
|
onBundledProgress: (info) => {
|
|
93
112
|
const now = Date.now();
|
|
94
113
|
if (now - lastDl < 250 && info.status !== "done")
|
|
@@ -134,6 +153,7 @@ export async function indexCommand(opts) {
|
|
|
134
153
|
ui.dim(` → falling back to bundled WASM model (no setup needed).`);
|
|
135
154
|
const { BundledEmbedder } = await import("@mneme-ai/embeddings");
|
|
136
155
|
activeEmbedder = new BundledEmbedder({
|
|
156
|
+
tofuManifestPath,
|
|
137
157
|
onProgress: (info) => {
|
|
138
158
|
const fileLabel = info.file ? ` ${info.file}` : "";
|
|
139
159
|
if (info.status === "progress" && info.loaded != null && info.total != null && info.total > 0) {
|