mneme-ai 1.10.0 → 1.17.2

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.
Files changed (46) hide show
  1. package/bin/git-mneme.js +0 -0
  2. package/bin/mneme.js +0 -0
  3. package/dist/commands/audit-log-cmd.d.ts +24 -0
  4. package/dist/commands/audit-log-cmd.d.ts.map +1 -0
  5. package/dist/commands/audit-log-cmd.js +131 -0
  6. package/dist/commands/audit-log-cmd.js.map +1 -0
  7. package/dist/commands/bench.d.ts +23 -0
  8. package/dist/commands/bench.d.ts.map +1 -0
  9. package/dist/commands/bench.js +85 -0
  10. package/dist/commands/bench.js.map +1 -0
  11. package/dist/commands/daemon.d.ts.map +1 -1
  12. package/dist/commands/daemon.js +41 -3
  13. package/dist/commands/daemon.js.map +1 -1
  14. package/dist/commands/ecosystem.d.ts +13 -0
  15. package/dist/commands/ecosystem.d.ts.map +1 -0
  16. package/dist/commands/ecosystem.js +44 -0
  17. package/dist/commands/ecosystem.js.map +1 -0
  18. package/dist/commands/index-cmd.d.ts.map +1 -1
  19. package/dist/commands/index-cmd.js +21 -1
  20. package/dist/commands/index-cmd.js.map +1 -1
  21. package/dist/commands/init.d.ts.map +1 -1
  22. package/dist/commands/init.js +53 -2
  23. package/dist/commands/init.js.map +1 -1
  24. package/dist/commands/key.d.ts +22 -0
  25. package/dist/commands/key.d.ts.map +1 -0
  26. package/dist/commands/key.js +60 -0
  27. package/dist/commands/key.js.map +1 -0
  28. package/dist/commands/security.d.ts +18 -0
  29. package/dist/commands/security.d.ts.map +1 -0
  30. package/dist/commands/security.js +126 -0
  31. package/dist/commands/security.js.map +1 -0
  32. package/dist/commands/security.test.d.ts +5 -0
  33. package/dist/commands/security.test.d.ts.map +1 -0
  34. package/dist/commands/security.test.js +198 -0
  35. package/dist/commands/security.test.js.map +1 -0
  36. package/dist/commands/upgrade.d.ts.map +1 -1
  37. package/dist/commands/upgrade.js +12 -2
  38. package/dist/commands/upgrade.js.map +1 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +110 -0
  41. package/dist/index.js.map +1 -1
  42. package/package.json +5 -5
  43. package/dist/commands/wild-stubs.d.ts +0 -6
  44. package/dist/commands/wild-stubs.d.ts.map +0 -1
  45. package/dist/commands/wild-stubs.js +0 -112
  46. 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;AAsTD,wBAAsB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAUxE"}
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"}
@@ -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
- writeFileSync(p.pid, String(process.pid), "utf8");
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,CAmQ7E"}
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) {