mneme-ai 0.8.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.
Files changed (107) hide show
  1. package/README.md +45 -0
  2. package/bin/mneme.js +2 -0
  3. package/dist/commands/adapt.d.ts +6 -0
  4. package/dist/commands/adapt.d.ts.map +1 -0
  5. package/dist/commands/adapt.js +219 -0
  6. package/dist/commands/adapt.js.map +1 -0
  7. package/dist/commands/ask.d.ts +8 -0
  8. package/dist/commands/ask.d.ts.map +1 -0
  9. package/dist/commands/ask.js +76 -0
  10. package/dist/commands/ask.js.map +1 -0
  11. package/dist/commands/blast.d.ts +8 -0
  12. package/dist/commands/blast.d.ts.map +1 -0
  13. package/dist/commands/blast.js +132 -0
  14. package/dist/commands/blast.js.map +1 -0
  15. package/dist/commands/clones.d.ts +19 -0
  16. package/dist/commands/clones.d.ts.map +1 -0
  17. package/dist/commands/clones.js +155 -0
  18. package/dist/commands/clones.js.map +1 -0
  19. package/dist/commands/conscience.d.ts +15 -0
  20. package/dist/commands/conscience.d.ts.map +1 -0
  21. package/dist/commands/conscience.js +202 -0
  22. package/dist/commands/conscience.js.map +1 -0
  23. package/dist/commands/correlate.d.ts +18 -0
  24. package/dist/commands/correlate.d.ts.map +1 -0
  25. package/dist/commands/correlate.js +173 -0
  26. package/dist/commands/correlate.js.map +1 -0
  27. package/dist/commands/echo.d.ts +16 -0
  28. package/dist/commands/echo.d.ts.map +1 -0
  29. package/dist/commands/echo.js +175 -0
  30. package/dist/commands/echo.js.map +1 -0
  31. package/dist/commands/genius.d.ts +13 -0
  32. package/dist/commands/genius.d.ts.map +1 -0
  33. package/dist/commands/genius.js +213 -0
  34. package/dist/commands/genius.js.map +1 -0
  35. package/dist/commands/heal.d.ts +22 -0
  36. package/dist/commands/heal.d.ts.map +1 -0
  37. package/dist/commands/heal.js +160 -0
  38. package/dist/commands/heal.js.map +1 -0
  39. package/dist/commands/index-cmd.d.ts +9 -0
  40. package/dist/commands/index-cmd.d.ts.map +1 -0
  41. package/dist/commands/index-cmd.js +74 -0
  42. package/dist/commands/index-cmd.js.map +1 -0
  43. package/dist/commands/init.d.ts +6 -0
  44. package/dist/commands/init.d.ts.map +1 -0
  45. package/dist/commands/init.js +34 -0
  46. package/dist/commands/init.js.map +1 -0
  47. package/dist/commands/mcp.d.ts +4 -0
  48. package/dist/commands/mcp.d.ts.map +1 -0
  49. package/dist/commands/mcp.js +10 -0
  50. package/dist/commands/mcp.js.map +1 -0
  51. package/dist/commands/palimpsest.d.ts +22 -0
  52. package/dist/commands/palimpsest.d.ts.map +1 -0
  53. package/dist/commands/palimpsest.js +164 -0
  54. package/dist/commands/palimpsest.js.map +1 -0
  55. package/dist/commands/status.d.ts +4 -0
  56. package/dist/commands/status.d.ts.map +1 -0
  57. package/dist/commands/status.js +49 -0
  58. package/dist/commands/status.js.map +1 -0
  59. package/dist/commands/teach.d.ts +16 -0
  60. package/dist/commands/teach.d.ts.map +1 -0
  61. package/dist/commands/teach.js +237 -0
  62. package/dist/commands/teach.js.map +1 -0
  63. package/dist/commands/teach.test.d.ts +2 -0
  64. package/dist/commands/teach.test.d.ts.map +1 -0
  65. package/dist/commands/teach.test.js +44 -0
  66. package/dist/commands/teach.test.js.map +1 -0
  67. package/dist/commands/why.d.ts +12 -0
  68. package/dist/commands/why.d.ts.map +1 -0
  69. package/dist/commands/why.js +85 -0
  70. package/dist/commands/why.js.map +1 -0
  71. package/dist/commands/wild-features.d.ts +42 -0
  72. package/dist/commands/wild-features.d.ts.map +1 -0
  73. package/dist/commands/wild-features.js +483 -0
  74. package/dist/commands/wild-features.js.map +1 -0
  75. package/dist/commands/wild-stubs.d.ts +6 -0
  76. package/dist/commands/wild-stubs.d.ts.map +1 -0
  77. package/dist/commands/wild-stubs.js +112 -0
  78. package/dist/commands/wild-stubs.js.map +1 -0
  79. package/dist/commands/wisdom.d.ts +13 -0
  80. package/dist/commands/wisdom.d.ts.map +1 -0
  81. package/dist/commands/wisdom.js +94 -0
  82. package/dist/commands/wisdom.js.map +1 -0
  83. package/dist/config.d.ts +26 -0
  84. package/dist/config.d.ts.map +1 -0
  85. package/dist/config.js +28 -0
  86. package/dist/config.js.map +1 -0
  87. package/dist/index.d.ts +2 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +371 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/meditations.d.ts +24 -0
  92. package/dist/meditations.d.ts.map +1 -0
  93. package/dist/meditations.js +120 -0
  94. package/dist/meditations.js.map +1 -0
  95. package/dist/meditations.test.d.ts +2 -0
  96. package/dist/meditations.test.d.ts.map +1 -0
  97. package/dist/meditations.test.js +70 -0
  98. package/dist/meditations.test.js.map +1 -0
  99. package/dist/paths.d.ts +7 -0
  100. package/dist/paths.d.ts.map +1 -0
  101. package/dist/paths.js +14 -0
  102. package/dist/paths.js.map +1 -0
  103. package/dist/ui.d.ts +12 -0
  104. package/dist/ui.d.ts.map +1 -0
  105. package/dist/ui.js +30 -0
  106. package/dist/ui.js.map +1 -0
  107. package/package.json +46 -0
@@ -0,0 +1,94 @@
1
+ import kleur from "kleur";
2
+ import { ui } from "../ui.js";
3
+ import { MEDITATIONS, meditationByIndex, meditationOfTheDay, } from "../meditations.js";
4
+ export async function wisdomCommand(opts) {
5
+ if (opts.all) {
6
+ if (opts.json) {
7
+ process.stdout.write(JSON.stringify(MEDITATIONS, null, 2) + "\n");
8
+ return 0;
9
+ }
10
+ for (let i = 0; i < MEDITATIONS.length; i++) {
11
+ printMeditation(MEDITATIONS[i], i + 1);
12
+ process.stdout.write("\n");
13
+ }
14
+ return 0;
15
+ }
16
+ let chosen;
17
+ if (opts.index !== undefined) {
18
+ const m = meditationByIndex(opts.index);
19
+ if (!m) {
20
+ ui.error(`No meditation #${opts.index}. Range is 1..${MEDITATIONS.length}.`);
21
+ return 1;
22
+ }
23
+ chosen = m;
24
+ }
25
+ else {
26
+ chosen = meditationOfTheDay();
27
+ }
28
+ if (opts.json) {
29
+ process.stdout.write(JSON.stringify(chosen, null, 2) + "\n");
30
+ return 0;
31
+ }
32
+ const idx = MEDITATIONS.findIndex((m) => m.id === chosen.id) + 1;
33
+ printMeditation(chosen, idx);
34
+ process.stdout.write("\n" +
35
+ kleur.gray(` see also: mneme wisdom --all · mneme wisdom -n <1..${MEDITATIONS.length}> · mneme manifesto`) +
36
+ "\n");
37
+ return 0;
38
+ }
39
+ function printMeditation(m, n) {
40
+ const total = MEDITATIONS.length;
41
+ const lines = [];
42
+ lines.push("");
43
+ lines.push(kleur.magenta(" ╭───────────────────────────────────────────╮"));
44
+ lines.push(kleur.magenta(" │ ") +
45
+ kleur.gray(`meditation ${n} of ${total}`).padEnd(50, " ") +
46
+ kleur.magenta("│"));
47
+ lines.push(kleur.magenta(" ╰───────────────────────────────────────────╯"));
48
+ lines.push("");
49
+ lines.push(kleur.bold().cyan(` ${m.title}`));
50
+ lines.push("");
51
+ for (const para of m.body.split("\n")) {
52
+ lines.push(` ${kleur.white(wrap(para, 68, " "))}`);
53
+ }
54
+ lines.push("");
55
+ lines.push(kleur.italic().yellow(` — ${m.aphorism}`));
56
+ process.stdout.write(lines.join("\n") + "\n");
57
+ }
58
+ function wrap(s, width, indent) {
59
+ if (s.length <= width)
60
+ return s;
61
+ const words = s.split(" ");
62
+ const out = [];
63
+ let line = "";
64
+ for (const w of words) {
65
+ if ((line + " " + w).trimStart().length > width) {
66
+ out.push(line.trimStart());
67
+ line = indent + w;
68
+ }
69
+ else {
70
+ line += (line ? " " : "") + w;
71
+ }
72
+ }
73
+ if (line.trim())
74
+ out.push(line.trimStart());
75
+ return out.join("\n ");
76
+ }
77
+ export async function manifestoCommand(opts) {
78
+ if (opts.json) {
79
+ process.stdout.write(JSON.stringify({ meditations: MEDITATIONS }, null, 2) + "\n");
80
+ return 0;
81
+ }
82
+ ui.banner();
83
+ process.stdout.write(kleur.bold().cyan(" Mneme — A Manifesto in Meditations") + "\n");
84
+ process.stdout.write(kleur.gray(" μνήμη was the Greek personification of memory, mother of the muses.\n" +
85
+ " These are the principles that shape the tool that bears her name.\n") + "\n");
86
+ for (let i = 0; i < MEDITATIONS.length; i++) {
87
+ printMeditation(MEDITATIONS[i], i + 1);
88
+ process.stdout.write("\n");
89
+ }
90
+ process.stdout.write(kleur.gray(" ──\n") +
91
+ kleur.italic().gray(" Read more in MEDITATIONS.md, or ask a single one with `mneme wisdom`.\n"));
92
+ return 0;
93
+ }
94
+ //# sourceMappingURL=wisdom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wisdom.js","sourceRoot":"","sources":["../../src/commands/wisdom.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ export interface MnemeConfig {
2
+ schemaVersion: number;
3
+ embeddings: {
4
+ provider: "auto" | "ollama" | "openai" | "hash";
5
+ model?: string;
6
+ baseUrl?: string;
7
+ };
8
+ index: {
9
+ since?: string;
10
+ maxCount?: number;
11
+ };
12
+ incidents?: {
13
+ sentry?: {
14
+ orgSlug: string;
15
+ projectId: string;
16
+ };
17
+ datadog?: {
18
+ site: string;
19
+ };
20
+ };
21
+ webPort?: number;
22
+ }
23
+ export declare const DEFAULT_CONFIG: MnemeConfig;
24
+ export declare function readConfig(repoRoot: string): MnemeConfig;
25
+ export declare function writeConfig(repoRoot: string, cfg: MnemeConfig): void;
26
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;QAChD,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,SAAS,CAAC,EAAE;QACV,MAAM,CAAC,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;QAChD,OAAO,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;KAC5B,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,cAAc,EAAE,WAK5B,CAAC;AAEF,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CASxD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAKpE"}
package/dist/config.js ADDED
@@ -0,0 +1,28 @@
1
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
2
+ import { dirname } from "node:path";
3
+ import { configPath, mnemeDir } from "./paths.js";
4
+ export const DEFAULT_CONFIG = {
5
+ schemaVersion: 1,
6
+ embeddings: { provider: "auto" },
7
+ index: { maxCount: 5000 },
8
+ webPort: 4711,
9
+ };
10
+ export function readConfig(repoRoot) {
11
+ const path = configPath(repoRoot);
12
+ if (!existsSync(path))
13
+ return DEFAULT_CONFIG;
14
+ try {
15
+ const raw = readFileSync(path, "utf8");
16
+ return { ...DEFAULT_CONFIG, ...JSON.parse(raw) };
17
+ }
18
+ catch {
19
+ return DEFAULT_CONFIG;
20
+ }
21
+ }
22
+ export function writeConfig(repoRoot, cfg) {
23
+ const path = configPath(repoRoot);
24
+ mkdirSync(dirname(path), { recursive: true });
25
+ mkdirSync(mnemeDir(repoRoot), { recursive: true });
26
+ writeFileSync(path, JSON.stringify(cfg, null, 2), "utf8");
27
+ }
28
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAoBlD,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,aAAa,EAAE,CAAC;IAChB,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;IAChC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;IACzB,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,cAAc,CAAC;IAC7C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,cAAc,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,GAAgB;IAC5D,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function run(argv: string[]): Promise<void>;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiCA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyZvD"}
package/dist/index.js ADDED
@@ -0,0 +1,371 @@
1
+ import { Command } from "commander";
2
+ import { initCommand } from "./commands/init.js";
3
+ import { indexCommand } from "./commands/index-cmd.js";
4
+ import { askCommand } from "./commands/ask.js";
5
+ import { whyCommand } from "./commands/why.js";
6
+ import { statusCommand } from "./commands/status.js";
7
+ import { correlateCommand } from "./commands/correlate.js";
8
+ import { mcpCommand } from "./commands/mcp.js";
9
+ import { wisdomCommand, manifestoCommand } from "./commands/wisdom.js";
10
+ import { entitiesCommand, clonesCommand } from "./commands/clones.js";
11
+ import { healCommand } from "./commands/heal.js";
12
+ import { echoCommand } from "./commands/echo.js";
13
+ import { palimpsestCommand } from "./commands/palimpsest.js";
14
+ import { runawayCommand, mirrorCommand, rumorCommand, fossilCommand, ledgerCommand, } from "./commands/wild-features.js";
15
+ import { oracleCommand, genomeCommand, dialogueCommand, tributeCommand, } from "./commands/wild-stubs.js";
16
+ import { conscienceCommand } from "./commands/conscience.js";
17
+ import { teachCommand } from "./commands/teach.js";
18
+ import { blastCommand } from "./commands/blast.js";
19
+ import { adaptCommand } from "./commands/adapt.js";
20
+ import { geniusCommand } from "./commands/genius.js";
21
+ import { ui } from "./ui.js";
22
+ export async function run(argv) {
23
+ const program = new Command()
24
+ .name("mneme")
25
+ .description("μνήμη — the memory layer of your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.")
26
+ .version("0.8.3");
27
+ program
28
+ .command("init")
29
+ .description("Initialize Mneme in the current repo")
30
+ .option("--force", "overwrite existing config", false)
31
+ .action(async (opts) => {
32
+ process.exit(await initCommand({ cwd: process.cwd(), force: opts.force }));
33
+ });
34
+ program
35
+ .command("index")
36
+ .description("Index commits, PRs, and embeddings")
37
+ .option("--since <date>", "only index commits since this date (e.g. 2024-01-01)")
38
+ .option("--max <n>", "maximum number of commits", (v) => Number(v))
39
+ .option("--embedder <kind>", "auto | ollama | openai | hash", "auto")
40
+ .option("--model <name>", "embedding model name override")
41
+ .action(async (opts) => {
42
+ process.exit(await indexCommand({
43
+ cwd: process.cwd(),
44
+ since: opts.since,
45
+ maxCount: opts.max,
46
+ embedder: opts.embedder,
47
+ model: opts.model,
48
+ }));
49
+ });
50
+ program
51
+ .command("ask <question...>")
52
+ .description("Ask the memory: \"why does payment.ts use try/catch?\"")
53
+ .option("-k, --top-k <n>", "number of results", (v) => Number(v), 8)
54
+ .option("--json", "machine-readable JSON output", false)
55
+ .action(async (qParts, opts) => {
56
+ process.exit(await askCommand({
57
+ cwd: process.cwd(),
58
+ question: qParts.join(" "),
59
+ topK: opts.topK,
60
+ json: opts.json,
61
+ }));
62
+ });
63
+ program
64
+ .command("why <target>")
65
+ .description("Why does this exist? Pass file:line, file:start-end, or just file")
66
+ .option("-k, --top-k <n>", "related commits to fetch", (v) => Number(v), 5)
67
+ .action(async (target, opts) => {
68
+ process.exit(await whyCommand({ cwd: process.cwd(), target, topK: opts.topK }));
69
+ });
70
+ program
71
+ .command("status")
72
+ .description("Show memory + repo status")
73
+ .action(async () => {
74
+ process.exit(await statusCommand({ cwd: process.cwd() }));
75
+ });
76
+ program
77
+ .command("correlate")
78
+ .description("Correlate incidents with commits (pager / manual JSON)")
79
+ .option("--source <kind>", "incident source: pager | manual")
80
+ .option("--org <slug>", "org slug (with --source pager)")
81
+ .option("--project <slug>", "project slug (with --source pager)")
82
+ .option("--base-url <url>", "base URL for self-hosted observability")
83
+ .option("--file <path>", "JSON file path (with --source manual)")
84
+ .option("--since <iso>", "only incidents/commits since this date")
85
+ .option("--until <iso>", "only incidents/commits until this date")
86
+ .option("--window-days <n>", "correlation window in days", (v) => Number(v), 7)
87
+ .option("--threshold <n>", "minimum confidence (0..1)", (v) => Number(v), 0.3)
88
+ .option("--top <n>", "top-N rows", (v) => Number(v), 20)
89
+ .option("--json", "machine-readable output", false)
90
+ .action(async (opts) => {
91
+ process.exit(await correlateCommand({
92
+ cwd: process.cwd(),
93
+ source: opts.source,
94
+ org: opts.org,
95
+ project: opts.project,
96
+ baseUrl: opts.baseUrl,
97
+ file: opts.file,
98
+ since: opts.since,
99
+ until: opts.until,
100
+ windowDays: opts.windowDays,
101
+ threshold: opts.threshold,
102
+ topN: opts.top,
103
+ json: opts.json,
104
+ }));
105
+ });
106
+ program
107
+ .command("mcp")
108
+ .description("Run as an MCP server (for Claude Code, Cursor, Continue, etc.)")
109
+ .action(async () => {
110
+ process.exit(await mcpCommand({ cwd: process.cwd() }));
111
+ });
112
+ program
113
+ .command("entities")
114
+ .description("Phase 2 — parse and embed every function/class/type in tracked TS/JS files")
115
+ .action(async () => {
116
+ process.exit(await entitiesCommand({ cwd: process.cwd() }));
117
+ });
118
+ program
119
+ .command("clones")
120
+ .description("Phase 2 — find semantic clones (functions doing the same thing)")
121
+ .option("-t, --threshold <n>", "cosine threshold (0..1), default 0.85", (v) => Number(v))
122
+ .option("-N, --top <n>", "show top-N clusters, default 20", (v) => Number(v), 20)
123
+ .option("--json", "machine-readable JSON output", false)
124
+ .action(async (opts) => {
125
+ process.exit(await clonesCommand({
126
+ cwd: process.cwd(),
127
+ threshold: opts.threshold,
128
+ topN: opts.top,
129
+ json: opts.json,
130
+ }));
131
+ });
132
+ program
133
+ .command("heal")
134
+ .description("Synthesize WHY notes for commits with poor messages (turns bad history into searchable memory)")
135
+ .option("--max <n>", "max commits to heal in this run", (v) => Number(v), 100)
136
+ .option("--subject-min-len <n>", "subjects shorter than this are candidates", (v) => Number(v), 20)
137
+ .option("--dry-run", "list candidates without calling the LLM", false)
138
+ .option("--provider <kind>", "auto | ollama | openai", "auto")
139
+ .option("--model <name>", "override model name (e.g. llama3.2:1b, gpt-4o-mini)")
140
+ .option("--force", "re-heal commits that already have a synthesized note", false)
141
+ .action(async (opts) => {
142
+ process.exit(await healCommand({
143
+ cwd: process.cwd(),
144
+ max: opts.max,
145
+ subjectMinLen: opts.subjectMinLen,
146
+ dryRun: opts.dryRun,
147
+ provider: opts.provider,
148
+ model: opts.model,
149
+ force: opts.force,
150
+ }));
151
+ });
152
+ program
153
+ .command("wisdom")
154
+ .description("Print a meditation from the Mneme manifesto (rotates daily)")
155
+ .option("-n, --num <n>", "show a specific meditation by number (1..13)", (v) => Number(v))
156
+ .option("--all", "print every meditation", false)
157
+ .option("--json", "machine-readable JSON output", false)
158
+ .action(async (opts) => {
159
+ process.exit(await wisdomCommand({ index: opts.num, all: opts.all, json: opts.json }));
160
+ });
161
+ program
162
+ .command("manifesto")
163
+ .description("Print the full Mneme manifesto — every meditation, in order")
164
+ .option("--json", "machine-readable JSON output", false)
165
+ .action(async (opts) => {
166
+ process.exit(await manifestoCommand(opts));
167
+ });
168
+ // ─── WILD ideas — see WILD_IDEAS.md ───
169
+ program
170
+ .command("echo")
171
+ .description("WILD #2 — find past incidents that resemble the current one")
172
+ .option("--id <id>", "stored incident id (e.g. \"sentry:12345\")")
173
+ .option("--query <text>", "freeform incident description")
174
+ .option("--top <n>", "top-N most similar", (v) => Number(v), 5)
175
+ .option("--json", "machine-readable output", false)
176
+ .action(async (opts) => {
177
+ process.exit(await echoCommand({
178
+ cwd: process.cwd(),
179
+ id: opts.id,
180
+ query: opts.query,
181
+ topK: opts.top,
182
+ json: opts.json,
183
+ }));
184
+ });
185
+ program
186
+ .command("palimpsest <target>")
187
+ .description("WILD #5 — render the causal chain of a single line of code")
188
+ .option("--max-depth <n>", "how deep to walk the chain", (v) => Number(v), 8)
189
+ .option("--json", "machine-readable output", false)
190
+ .action(async (target, opts) => {
191
+ process.exit(await palimpsestCommand({
192
+ cwd: process.cwd(),
193
+ target,
194
+ maxDepth: opts.maxDepth,
195
+ json: opts.json,
196
+ }));
197
+ });
198
+ program
199
+ .command("runaway")
200
+ .description("WILD #14 — files that have grown silently across many commits")
201
+ .option("--top <n>", "show top-N", (v) => Number(v), 15)
202
+ .option("--json", "machine-readable output", false)
203
+ .action(async (opts) => {
204
+ process.exit(await runawayCommand({ cwd: process.cwd(), topN: opts.top, json: opts.json }));
205
+ });
206
+ program
207
+ .command("mirror")
208
+ .description("WILD #13 — onboarding dossier (5 PRs, 3 people, 2 incidents)")
209
+ .option("--top-prs <n>", "top PRs", (v) => Number(v), 5)
210
+ .option("--top-people <n>", "top contributors", (v) => Number(v), 3)
211
+ .option("--top-incidents <n>", "top incidents", (v) => Number(v), 2)
212
+ .option("--json", "machine-readable output", false)
213
+ .action(async (opts) => {
214
+ process.exit(await mirrorCommand({
215
+ cwd: process.cwd(),
216
+ topPrs: opts.topPrs,
217
+ topPeople: opts.topPeople,
218
+ topIncidents: opts.topIncidents,
219
+ json: opts.json,
220
+ }));
221
+ });
222
+ program
223
+ .command("rumor")
224
+ .description("WILD #12 — tribal phrases mentioned in commits but no doc explains")
225
+ .option("--min-mentions <n>", "phrase must appear in this many commits", (v) => Number(v), 4)
226
+ .option("--json", "machine-readable output", false)
227
+ .action(async (opts) => {
228
+ process.exit(await rumorCommand({
229
+ cwd: process.cwd(),
230
+ minMentions: opts.minMentions,
231
+ json: opts.json,
232
+ }));
233
+ });
234
+ program
235
+ .command("fossil")
236
+ .description("WILD #10 — files deleted from HEAD but still alive in git history")
237
+ .option("--top <n>", "show top-N", (v) => Number(v), 20)
238
+ .option("--json", "machine-readable output", false)
239
+ .action(async (opts) => {
240
+ process.exit(await fossilCommand({ cwd: process.cwd(), topN: opts.top, json: opts.json }));
241
+ });
242
+ program
243
+ .command("ledger")
244
+ .description("WILD #3 — tamper-evident audit log for compliance (SOX/SOC2)")
245
+ .option("--since <iso>", "start date")
246
+ .option("--until <iso>", "end date")
247
+ .option("--format <kind>", "json | csv", "json")
248
+ .option("--out <path>", "write to file instead of stdout")
249
+ .action(async (opts) => {
250
+ process.exit(await ledgerCommand({
251
+ cwd: process.cwd(),
252
+ since: opts.since,
253
+ until: opts.until,
254
+ format: opts.format,
255
+ out: opts.out,
256
+ }));
257
+ });
258
+ // ─── Stubs (planned features — print design when invoked) ───
259
+ program
260
+ .command("oracle")
261
+ .description("WILD #4 — historical risk analysis on a snippet (planned)")
262
+ .action(async () => {
263
+ process.exit(await oracleCommand());
264
+ });
265
+ program
266
+ .command("conscience [files...]")
267
+ .description("WILD #6 — review co-pilot: risk-score a PR against your repo's own history")
268
+ .option("--diff-file <path>", "read a unified diff from this file")
269
+ .option("--stdin", "read a unified diff from stdin", false)
270
+ .option("--recency-days <n>", "consider commits within this window", (v) => Number(v), 365)
271
+ .option("--top <n>", "top-N similar past commits", (v) => Number(v), 8)
272
+ .option("--json", "machine-readable output", false)
273
+ .action(async (files, opts) => {
274
+ process.exit(await conscienceCommand({
275
+ cwd: process.cwd(),
276
+ files,
277
+ diffFile: opts.diffFile,
278
+ stdin: opts.stdin,
279
+ recencyDays: opts.recencyDays,
280
+ topN: opts.top,
281
+ json: opts.json,
282
+ }));
283
+ });
284
+ program
285
+ .command("blast <commit>")
286
+ .description("Predict incidents likely to follow shipping <commit> (blast radius)")
287
+ .option("--window-hours <n>", "post-deploy window for base rate", (v) => Number(v), 48)
288
+ .option("--json", "machine-readable output", false)
289
+ .action(async (commit, opts) => {
290
+ process.exit(await blastCommand({
291
+ cwd: process.cwd(),
292
+ commit,
293
+ windowHours: opts.windowHours,
294
+ json: opts.json,
295
+ }));
296
+ });
297
+ program
298
+ .command("adapt")
299
+ .description("Mutant mode — inspect this repo and recommend the next 1-3 commands")
300
+ .option("--json", "machine-readable output", false)
301
+ .action(async (opts) => {
302
+ process.exit(await adaptCommand({ cwd: process.cwd(), json: opts.json }));
303
+ });
304
+ program
305
+ .command("genius <question...>")
306
+ .description("AI agent — plans and runs multi-step Mneme workflows to answer hard questions")
307
+ .option("--max-steps <n>", "cap on tool steps in the plan", (v) => Number(v), 4)
308
+ .option("--provider <kind>", "auto | ollama | openai", "auto")
309
+ .option("--model <name>", "override LLM model name")
310
+ .option("--trace", "print raw tool outputs while running", false)
311
+ .option("--json", "machine-readable output", false)
312
+ .action(async (qParts, opts) => {
313
+ process.exit(await geniusCommand({
314
+ cwd: process.cwd(),
315
+ question: qParts.join(" "),
316
+ maxSteps: opts.maxSteps,
317
+ provider: opts.provider,
318
+ model: opts.model,
319
+ trace: opts.trace,
320
+ json: opts.json,
321
+ }));
322
+ });
323
+ program
324
+ .command("teach <target>")
325
+ .description("Explain a folder or file in plain language (layer classification + LLM summary)")
326
+ .option("--provider <kind>", "auto | ollama | openai", "auto")
327
+ .option("--model <name>", "override model name")
328
+ .option("--json", "machine-readable output", false)
329
+ .action(async (target, opts) => {
330
+ process.exit(await teachCommand({
331
+ cwd: process.cwd(),
332
+ target,
333
+ provider: opts.provider,
334
+ model: opts.model,
335
+ json: opts.json,
336
+ }));
337
+ });
338
+ program
339
+ .command("genome")
340
+ .description("WILD #9 — codebase fingerprint + ancestry (planned)")
341
+ .action(async () => {
342
+ process.exit(await genomeCommand());
343
+ });
344
+ program
345
+ .command("dialogue")
346
+ .description("WILD #11 — conversational chat over your repo (planned)")
347
+ .action(async () => {
348
+ process.exit(await dialogueCommand());
349
+ });
350
+ program
351
+ .command("tribute")
352
+ .description("WILD #15 — your codebase as a 60-sec movie (planned)")
353
+ .action(async () => {
354
+ process.exit(await tributeCommand());
355
+ });
356
+ program.exitOverride((err) => {
357
+ if (err.code === "commander.help" || err.code === "commander.helpDisplayed")
358
+ process.exit(0);
359
+ if (err.code === "commander.version")
360
+ process.exit(0);
361
+ process.exit(err.exitCode ?? 1);
362
+ });
363
+ try {
364
+ await program.parseAsync(argv);
365
+ }
366
+ catch (err) {
367
+ ui.error(err.message);
368
+ process.exit(1);
369
+ }
370
+ }
371
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Meditations — short, quotable teachings about codebase memory.
3
+ *
4
+ * Each meditation has three parts:
5
+ * - title: one short phrase (the koan)
6
+ * - body: 2-4 sentences of context
7
+ * - aphorism: a single tweetable line (the takeaway)
8
+ *
9
+ * Meditations are addressed by index for `mneme wisdom --n <N>` and selected
10
+ * deterministically by date for `mneme wisdom` (one-per-day rhythm — different
11
+ * teaching each day, same teaching all day).
12
+ */
13
+ export interface Meditation {
14
+ id: string;
15
+ title: string;
16
+ body: string;
17
+ aphorism: string;
18
+ }
19
+ export declare const MEDITATIONS: Meditation[];
20
+ /** Pick a meditation deterministically — same teaching all day, new one tomorrow. */
21
+ export declare function meditationOfTheDay(now?: Date): Meditation;
22
+ export declare function meditationByIndex(n: number): Meditation | undefined;
23
+ export declare function meditationById(id: string): Meditation | undefined;
24
+ //# sourceMappingURL=meditations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meditations.d.ts","sourceRoot":"","sources":["../src/meditations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,WAAW,EAAE,UAAU,EAyGnC,CAAC;AAEF,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,IAAiB,GAAG,UAAU,CAIrE;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAGnE;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEjE"}