mneme-ai 0.35.0 → 0.36.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.
- package/bin/mneme.js +20 -0
- package/dist/commands/cognitive-twin.d.ts +24 -0
- package/dist/commands/cognitive-twin.d.ts.map +1 -0
- package/dist/commands/cognitive-twin.js +134 -0
- package/dist/commands/cognitive-twin.js.map +1 -0
- package/dist/commands/conscience.d.ts +2 -0
- package/dist/commands/conscience.d.ts.map +1 -1
- package/dist/commands/conscience.dual-jury.test.d.ts +2 -0
- package/dist/commands/conscience.dual-jury.test.d.ts.map +1 -0
- package/dist/commands/conscience.dual-jury.test.js +87 -0
- package/dist/commands/conscience.dual-jury.test.js.map +1 -0
- package/dist/commands/conscience.js +85 -0
- package/dist/commands/conscience.js.map +1 -1
- package/dist/commands/genius.d.ts +2 -0
- package/dist/commands/genius.d.ts.map +1 -1
- package/dist/commands/genius.js +4 -1
- package/dist/commands/genius.js.map +1 -1
- package/dist/commands/karma.d.ts +33 -0
- package/dist/commands/karma.d.ts.map +1 -0
- package/dist/commands/karma.js +159 -0
- package/dist/commands/karma.js.map +1 -0
- package/dist/commands/palimpsest.d.ts +3 -0
- package/dist/commands/palimpsest.d.ts.map +1 -1
- package/dist/commands/palimpsest.js +82 -2
- package/dist/commands/palimpsest.js.map +1 -1
- package/dist/commands/repo-mri.d.ts +20 -0
- package/dist/commands/repo-mri.d.ts.map +1 -0
- package/dist/commands/repo-mri.js +156 -0
- package/dist/commands/repo-mri.js.map +1 -0
- package/dist/commands/teach.d.ts +2 -0
- package/dist/commands/teach.d.ts.map +1 -1
- package/dist/commands/teach.js +4 -2
- package/dist/commands/teach.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +65 -2
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/bin/mneme.js
CHANGED
|
@@ -1,2 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
// Suppress the node:sqlite "ExperimentalWarning" only — keep all other warnings.
|
|
3
|
+
// node:sqlite stabilises in Node 24; until then it emits an experimental notice
|
|
4
|
+
// on every load that pollutes our user-facing CLI output. We do this in the
|
|
5
|
+
// shebang script (not in dist code) so the suppression is set up before the
|
|
6
|
+
// SQLite module is first loaded by any downstream import.
|
|
7
|
+
const originalEmit = process.emit;
|
|
8
|
+
process.emit = function (name, data, ...rest) {
|
|
9
|
+
if (
|
|
10
|
+
name === "warning" &&
|
|
11
|
+
typeof data === "object" &&
|
|
12
|
+
data !== null &&
|
|
13
|
+
data.name === "ExperimentalWarning" &&
|
|
14
|
+
typeof data.message === "string" &&
|
|
15
|
+
data.message.includes("SQLite is an experimental feature")
|
|
16
|
+
) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
return originalEmit.call(this, name, data, ...rest);
|
|
20
|
+
};
|
|
21
|
+
|
|
2
22
|
import("../dist/index.js").then((m) => m.run(process.argv));
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mneme cognitive-twin <email>` — author-voice fingerprint + rewriter.
|
|
3
|
+
*
|
|
4
|
+
* No LLM. Stylometric features extracted deterministically from git log.
|
|
5
|
+
* Optional --rewrite "<subject>" mode rewrites a generic commit subject in
|
|
6
|
+
* the author's voice (apply their dominant conv-commit prefix, match their
|
|
7
|
+
* lowercase preference, match their ending-punctuation habit).
|
|
8
|
+
*
|
|
9
|
+
* Strict ethics framing: every speculative output is ✱ shadow-opinion —
|
|
10
|
+
* heuristic, NOT the author's real position. Designed for self-reflection
|
|
11
|
+
* + onboarding ("here's how Alice writes — try matching her voice"), never
|
|
12
|
+
* for performance review.
|
|
13
|
+
*/
|
|
14
|
+
export interface CognitiveTwinOptions {
|
|
15
|
+
cwd: string;
|
|
16
|
+
email: string;
|
|
17
|
+
/** Cap commits used for the profile. */
|
|
18
|
+
maxCommits?: number;
|
|
19
|
+
/** Rewrite a generic commit subject in this author's voice. */
|
|
20
|
+
rewrite?: string;
|
|
21
|
+
json?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare function cognitiveTwinCommand(opts: CognitiveTwinOptions): Promise<number>;
|
|
24
|
+
//# sourceMappingURL=cognitive-twin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cognitive-twin.d.ts","sourceRoot":"","sources":["../../src/commands/cognitive-twin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CA0JtF"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mneme cognitive-twin <email>` — author-voice fingerprint + rewriter.
|
|
3
|
+
*
|
|
4
|
+
* No LLM. Stylometric features extracted deterministically from git log.
|
|
5
|
+
* Optional --rewrite "<subject>" mode rewrites a generic commit subject in
|
|
6
|
+
* the author's voice (apply their dominant conv-commit prefix, match their
|
|
7
|
+
* lowercase preference, match their ending-punctuation habit).
|
|
8
|
+
*
|
|
9
|
+
* Strict ethics framing: every speculative output is ✱ shadow-opinion —
|
|
10
|
+
* heuristic, NOT the author's real position. Designed for self-reflection
|
|
11
|
+
* + onboarding ("here's how Alice writes — try matching her voice"), never
|
|
12
|
+
* for performance review.
|
|
13
|
+
*/
|
|
14
|
+
import kleur from "kleur";
|
|
15
|
+
import { git, twin as twinCore } from "@mneme-ai/core";
|
|
16
|
+
import { ui, header, section, kv, divider, nextSteps } from "../ui.js";
|
|
17
|
+
export async function cognitiveTwinCommand(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
|
+
if (!opts.json)
|
|
23
|
+
ui.banner();
|
|
24
|
+
let voice;
|
|
25
|
+
try {
|
|
26
|
+
voice = await twinCore.profileAuthor({
|
|
27
|
+
cwd: opts.cwd,
|
|
28
|
+
email: opts.email,
|
|
29
|
+
maxCommits: opts.maxCommits,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
ui.error(`Twin profile failed: ${err.message}`);
|
|
34
|
+
return 1;
|
|
35
|
+
}
|
|
36
|
+
if (!voice) {
|
|
37
|
+
ui.error(`No commits found for ${opts.email}.`);
|
|
38
|
+
ui.dim("Tip: emails are case-sensitive in git. Try `git log --all --format='%ae' | sort -u` to find the exact spelling.");
|
|
39
|
+
return 1;
|
|
40
|
+
}
|
|
41
|
+
if (opts.json) {
|
|
42
|
+
const payload = { voice };
|
|
43
|
+
if (opts.rewrite) {
|
|
44
|
+
payload.rewrite = twinCore.rewriteInVoice(voice, opts.rewrite);
|
|
45
|
+
}
|
|
46
|
+
process.stdout.write(JSON.stringify(payload, null, 2) + "\n");
|
|
47
|
+
return 0;
|
|
48
|
+
}
|
|
49
|
+
process.stdout.write(header("🪞", `Cognitive Twin — ${voice.name}`, `stylometric profile (heuristic, no LLM) · ${voice.sampleSize} commits · fingerprint ${voice.fingerprint}`, "match the author's voice when reviewing or writing in their style") + "\n");
|
|
50
|
+
// Length stats
|
|
51
|
+
process.stdout.write("\n" +
|
|
52
|
+
section("Subject length") +
|
|
53
|
+
"\n" +
|
|
54
|
+
kv("avg / p25 / p75", `${voice.subjectLengthAvg} chars · ${voice.subjectLengthP25} - ${voice.subjectLengthP75} (mid-50%)`) +
|
|
55
|
+
"\n");
|
|
56
|
+
// Conv-commit + prefixes
|
|
57
|
+
process.stdout.write("\n" + section("Conventional-commit usage") + "\n" + kv("conv-commit %", `${voice.convCommitPct}%`) + "\n");
|
|
58
|
+
if (voice.topPrefixes.length > 0) {
|
|
59
|
+
process.stdout.write(" " + kleur.gray("top prefixes:") + "\n");
|
|
60
|
+
for (const p of voice.topPrefixes) {
|
|
61
|
+
process.stdout.write(` ${kleur.bold(p.prefix.padEnd(8))} ${kleur.gray(`${p.count}× (${p.pct}%)`)}\n`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Openers
|
|
65
|
+
if (voice.topOpeners.length > 0) {
|
|
66
|
+
process.stdout.write("\n" + section("Opening words (after any prefix)") + "\n");
|
|
67
|
+
process.stdout.write(" " +
|
|
68
|
+
voice.topOpeners
|
|
69
|
+
.map((o) => `${kleur.bold(o.word)} ${kleur.gray(`(${o.count})`)}`)
|
|
70
|
+
.join(" · ") +
|
|
71
|
+
"\n");
|
|
72
|
+
}
|
|
73
|
+
// Phrases
|
|
74
|
+
if (voice.topPhrases.length > 0) {
|
|
75
|
+
process.stdout.write("\n" + section("Recurring phrases") + "\n");
|
|
76
|
+
for (const p of voice.topPhrases.slice(0, 8)) {
|
|
77
|
+
process.stdout.write(` ${kleur.cyan(`"${p.phrase}"`)} ${kleur.gray(`× ${p.count}`)}\n`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Style markers
|
|
81
|
+
process.stdout.write("\n" +
|
|
82
|
+
section("Style markers") +
|
|
83
|
+
"\n" +
|
|
84
|
+
kv("em-dash subjects", `${voice.punctuation.emDashPct}%`) +
|
|
85
|
+
"\n" +
|
|
86
|
+
kv("ends with period", `${voice.punctuation.endsWithPeriodPct}%`) +
|
|
87
|
+
"\n" +
|
|
88
|
+
kv("paren scope (foo:)", `${voice.punctuation.parenScopePct}%`) +
|
|
89
|
+
"\n" +
|
|
90
|
+
kv("lowercase content", `${voice.lowercasePct}%`) +
|
|
91
|
+
"\n" +
|
|
92
|
+
kv("body uses bullets", `${voice.bulletBodyPct}%`) +
|
|
93
|
+
"\n" +
|
|
94
|
+
kv("avg body lines", String(voice.bodyLineAvg)) +
|
|
95
|
+
"\n");
|
|
96
|
+
if (voice.firstSeen && voice.lastSeen) {
|
|
97
|
+
process.stdout.write("\n" +
|
|
98
|
+
section("Active span") +
|
|
99
|
+
"\n" +
|
|
100
|
+
kv("first commit", voice.firstSeen) +
|
|
101
|
+
"\n" +
|
|
102
|
+
kv("last commit", voice.lastSeen) +
|
|
103
|
+
"\n");
|
|
104
|
+
}
|
|
105
|
+
// Rewrite mode
|
|
106
|
+
if (opts.rewrite) {
|
|
107
|
+
const r = twinCore.rewriteInVoice(voice, opts.rewrite);
|
|
108
|
+
process.stdout.write("\n" +
|
|
109
|
+
section("Rewrite in voice") +
|
|
110
|
+
" " +
|
|
111
|
+
kleur.gray(`(✱ shadow-opinion · confidence ${(r.confidence * 100).toFixed(0)}%)`) +
|
|
112
|
+
"\n");
|
|
113
|
+
process.stdout.write(` ${kleur.gray("input: ")} ${kleur.white(opts.rewrite)}\n`);
|
|
114
|
+
process.stdout.write(` ${kleur.gray("rewritten:")} ${kleur.cyan(r.rewritten)}\n`);
|
|
115
|
+
if (r.rules.length > 0) {
|
|
116
|
+
process.stdout.write(` ${kleur.gray("rules: ")} ${kleur.gray(r.rules.join(", "))}\n`);
|
|
117
|
+
}
|
|
118
|
+
process.stdout.write("\n");
|
|
119
|
+
}
|
|
120
|
+
process.stdout.write("\n" + divider("📘 How to read") + "\n");
|
|
121
|
+
process.stdout.write(" " +
|
|
122
|
+
kleur.gray("Stylometric profile, computed from git log only. ✱ shadow-opinion: rewrites are heuristic\n" +
|
|
123
|
+
" templates assembled from the author's habits, NOT their real opinions. Use for onboarding\n" +
|
|
124
|
+
" ('match your team's voice'), continuity ('what would Alice prefer?'), or self-reflection.\n" +
|
|
125
|
+
" Do NOT impersonate. Do NOT use for performance review.") +
|
|
126
|
+
"\n\n");
|
|
127
|
+
process.stdout.write(nextSteps([
|
|
128
|
+
{ cmd: `mneme cognitive-twin ${opts.email} --rewrite "<subject>"`, why: "rewrite a generic commit subject in this voice" },
|
|
129
|
+
{ cmd: `mneme dna ${opts.email}`, why: "the broader DNA dossier (hours, file affinity, vocabulary)" },
|
|
130
|
+
{ cmd: `mneme passport ${opts.email}`, why: "full engineer passport — DNA + influence + atrophy" },
|
|
131
|
+
]) + "\n");
|
|
132
|
+
return 0;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=cognitive-twin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cognitive-twin.js","sourceRoot":"","sources":["../../src/commands/cognitive-twin.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,8 @@ export interface ConscienceCommandOptions {
|
|
|
10
10
|
recencyDays?: number;
|
|
11
11
|
topN?: number;
|
|
12
12
|
json?: boolean;
|
|
13
|
+
/** Switch to dual-jury mode — show prosecution + defense views from real history. */
|
|
14
|
+
dualJury?: boolean;
|
|
13
15
|
}
|
|
14
16
|
export declare function conscienceCommand(opts: ConscienceCommandOptions): Promise<number>;
|
|
15
17
|
//# sourceMappingURL=conscience.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conscience.d.ts","sourceRoot":"","sources":["../../src/commands/conscience.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"conscience.d.ts","sourceRoot":"","sources":["../../src/commands/conscience.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,qFAAqF;IACrF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAYD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAoFvF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conscience.dual-jury.test.d.ts","sourceRoot":"","sources":["../../src/commands/conscience.dual-jury.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dual-jury logic — verify prosecution/defense partitioning + verdict mapping.
|
|
3
|
+
*
|
|
4
|
+
* The full conscience command needs a git repo + index, so this test exercises
|
|
5
|
+
* the pure logic via a tiny adapter that mimics the related-commit shape.
|
|
6
|
+
*/
|
|
7
|
+
import { describe, expect, it } from "vitest";
|
|
8
|
+
function buildDualJury(related) {
|
|
9
|
+
const prosecution = related
|
|
10
|
+
.filter((r) => r.incidentCount > 0)
|
|
11
|
+
.sort((a, b) => b.riskScore - a.riskScore)
|
|
12
|
+
.slice(0, 3);
|
|
13
|
+
const defense = related
|
|
14
|
+
.filter((r) => r.incidentCount === 0)
|
|
15
|
+
.sort((a, b) => b.fileOverlapRatio - a.fileOverlapRatio)
|
|
16
|
+
.slice(0, 3);
|
|
17
|
+
const prosStrength = prosecution.reduce((s, r) => s + r.riskScore, 0);
|
|
18
|
+
const defStrength = defense.reduce((s, r) => s + r.fileOverlapRatio, 0);
|
|
19
|
+
const total = prosStrength + defStrength;
|
|
20
|
+
const verdictScore = total > 0 ? (prosStrength - defStrength) / total : 0;
|
|
21
|
+
let verdict;
|
|
22
|
+
if (verdictScore > 0.4)
|
|
23
|
+
verdict = "block";
|
|
24
|
+
else if (verdictScore > -0.1)
|
|
25
|
+
verdict = "caution";
|
|
26
|
+
else
|
|
27
|
+
verdict = "clear";
|
|
28
|
+
return { prosecution, defense, verdictScore, verdict, totalCommits: related.length };
|
|
29
|
+
}
|
|
30
|
+
const c = (hash, riskScore, overlap, incidents = 0) => ({
|
|
31
|
+
riskScore,
|
|
32
|
+
fileOverlapRatio: overlap,
|
|
33
|
+
incidentCount: incidents,
|
|
34
|
+
incidentIds: incidents > 0 ? [`INC-${hash}`] : [],
|
|
35
|
+
commit: { hash, shortHash: hash.slice(0, 7), subject: `subject for ${hash}`, authorDate: "2025-01-01" },
|
|
36
|
+
});
|
|
37
|
+
describe("conscience dual-jury", () => {
|
|
38
|
+
it("partitions prosecution (incidents) and defense (clean)", () => {
|
|
39
|
+
const related = [
|
|
40
|
+
c("aaa", 0.9, 0.8, 2),
|
|
41
|
+
c("bbb", 0.6, 0.5, 0),
|
|
42
|
+
c("ccc", 0.4, 0.7, 1),
|
|
43
|
+
];
|
|
44
|
+
const j = buildDualJury(related);
|
|
45
|
+
expect(j.prosecution.map((p) => p.commit.hash)).toEqual(["aaa", "ccc"]);
|
|
46
|
+
expect(j.defense.map((d) => d.commit.hash)).toEqual(["bbb"]);
|
|
47
|
+
});
|
|
48
|
+
it("returns verdict=block when prosecution dominates", () => {
|
|
49
|
+
const related = [c("a", 0.95, 0.9, 3), c("b", 0.85, 0.8, 2)];
|
|
50
|
+
const j = buildDualJury(related);
|
|
51
|
+
expect(j.verdict).toBe("block");
|
|
52
|
+
expect(j.verdictScore).toBeGreaterThan(0.4);
|
|
53
|
+
});
|
|
54
|
+
it("returns verdict=clear when defense dominates", () => {
|
|
55
|
+
const related = [c("a", 0.0, 0.9, 0), c("b", 0.0, 0.8, 0), c("c", 0.0, 0.7, 0)];
|
|
56
|
+
const j = buildDualJury(related);
|
|
57
|
+
expect(j.verdict).toBe("clear");
|
|
58
|
+
expect(j.verdictScore).toBeLessThan(-0.1);
|
|
59
|
+
});
|
|
60
|
+
it("returns verdict=caution when balanced (prosecution and defense roughly equal)", () => {
|
|
61
|
+
// Prosecution risk 0.5, defense overlap 0.5 → score = 0 → caution band [-0.1, 0.4]
|
|
62
|
+
const related = [c("a", 0.5, 0.5, 1), c("b", 0.0, 0.5, 0)];
|
|
63
|
+
const j = buildDualJury(related);
|
|
64
|
+
expect(j.verdict).toBe("caution");
|
|
65
|
+
});
|
|
66
|
+
it("returns verdict=caution when no related commits", () => {
|
|
67
|
+
const j = buildDualJury([]);
|
|
68
|
+
expect(j.verdict).toBe("caution");
|
|
69
|
+
expect(j.verdictScore).toBe(0);
|
|
70
|
+
expect(j.prosecution).toHaveLength(0);
|
|
71
|
+
expect(j.defense).toHaveLength(0);
|
|
72
|
+
});
|
|
73
|
+
it("caps prosecution + defense at 3 each", () => {
|
|
74
|
+
const related = [
|
|
75
|
+
c("a", 0.9, 0.5, 1),
|
|
76
|
+
c("b", 0.8, 0.5, 1),
|
|
77
|
+
c("c", 0.7, 0.5, 1),
|
|
78
|
+
c("d", 0.6, 0.5, 1),
|
|
79
|
+
c("e", 0.5, 0.5, 1),
|
|
80
|
+
];
|
|
81
|
+
const j = buildDualJury(related);
|
|
82
|
+
expect(j.prosecution).toHaveLength(3);
|
|
83
|
+
// The strongest 3 by riskScore should be picked
|
|
84
|
+
expect(j.prosecution[0].commit.hash).toBe("a");
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
//# sourceMappingURL=conscience.dual-jury.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conscience.dual-jury.test.js","sourceRoot":"","sources":["../../src/commands/conscience.dual-jury.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,6 +71,17 @@ export async function conscienceCommand(opts) {
|
|
|
71
71
|
}
|
|
72
72
|
related.sort((a, b) => b.riskScore - a.riskScore);
|
|
73
73
|
const top = related.slice(0, opts.topN ?? 8);
|
|
74
|
+
if (opts.dualJury) {
|
|
75
|
+
const jury = buildDualJury(related);
|
|
76
|
+
if (opts.json) {
|
|
77
|
+
process.stdout.write(JSON.stringify({ files, jury }, null, 2) + "\n");
|
|
78
|
+
s.close();
|
|
79
|
+
return 0;
|
|
80
|
+
}
|
|
81
|
+
printDualJury(files, jury);
|
|
82
|
+
s.close();
|
|
83
|
+
return 0;
|
|
84
|
+
}
|
|
74
85
|
if (opts.json) {
|
|
75
86
|
process.stdout.write(JSON.stringify({ files, top }, null, 2) + "\n");
|
|
76
87
|
s.close();
|
|
@@ -80,6 +91,80 @@ export async function conscienceCommand(opts) {
|
|
|
80
91
|
s.close();
|
|
81
92
|
return 0;
|
|
82
93
|
}
|
|
94
|
+
function buildDualJury(related) {
|
|
95
|
+
// Prosecution: commits with the same files that DID cause incidents.
|
|
96
|
+
const prosecution = related
|
|
97
|
+
.filter((r) => r.incidentCount > 0)
|
|
98
|
+
.sort((a, b) => b.riskScore - a.riskScore)
|
|
99
|
+
.slice(0, 3);
|
|
100
|
+
// Defense: commits with the same files that did NOT cause incidents.
|
|
101
|
+
const defense = related
|
|
102
|
+
.filter((r) => r.incidentCount === 0)
|
|
103
|
+
.sort((a, b) => b.fileOverlapRatio - a.fileOverlapRatio)
|
|
104
|
+
.slice(0, 3);
|
|
105
|
+
const prosStrength = prosecution.reduce((s, r) => s + r.riskScore, 0);
|
|
106
|
+
const defStrength = defense.reduce((s, r) => s + r.fileOverlapRatio, 0);
|
|
107
|
+
const total = prosStrength + defStrength;
|
|
108
|
+
const verdictScore = total > 0 ? (prosStrength - defStrength) / total : 0;
|
|
109
|
+
let verdict;
|
|
110
|
+
if (verdictScore > 0.4)
|
|
111
|
+
verdict = "block";
|
|
112
|
+
else if (verdictScore > -0.1)
|
|
113
|
+
verdict = "caution";
|
|
114
|
+
else
|
|
115
|
+
verdict = "clear";
|
|
116
|
+
return {
|
|
117
|
+
prosecution,
|
|
118
|
+
defense,
|
|
119
|
+
verdictScore,
|
|
120
|
+
verdict,
|
|
121
|
+
totalCommits: related.length,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
function printDualJury(files, jury) {
|
|
125
|
+
ui.banner();
|
|
126
|
+
process.stdout.write(`${kleur.bold().cyan("⚖ Conscience — dual jury")} ${kleur.gray(`(${files.length} file${files.length === 1 ? "" : "s"} changing)`)}\n`);
|
|
127
|
+
process.stdout.write(` ${kleur.gray("Two arguments from your repo's REAL history. The verdict is yours.")}\n\n`);
|
|
128
|
+
// Prosecution
|
|
129
|
+
process.stdout.write(` ${kleur.red().bold("✗ Prosecution")} ${kleur.gray("— precedents where similar changes caused incidents")}\n\n`);
|
|
130
|
+
if (jury.prosecution.length === 0) {
|
|
131
|
+
process.stdout.write(` ${kleur.gray("(none — no similar change has caused a tracked incident)")}\n\n`);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
for (const r of jury.prosecution) {
|
|
135
|
+
const c = r.commit;
|
|
136
|
+
process.stdout.write(` ${kleur.red("●")} ${kleur.bold((c.shortHash || c.hash.slice(0, 7)).slice(0, 7))} ${kleur.gray(`[${c.authorDate.slice(0, 10)}]`)}\n` +
|
|
137
|
+
` ${kleur.white(c.subject)}\n` +
|
|
138
|
+
` ${kleur.red(`→ ${r.incidentCount} incident${r.incidentCount === 1 ? "" : "s"} followed: ${r.incidentIds.join(", ")}`)}\n` +
|
|
139
|
+
` ${kleur.gray(`overlap ${(r.fileOverlapRatio * 100).toFixed(0)}% · risk ${r.riskScore.toFixed(2)}`)}\n\n`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Defense
|
|
143
|
+
process.stdout.write(` ${kleur.green().bold("✓ Defense")} ${kleur.gray("— precedents where the same files shipped without incident")}\n\n`);
|
|
144
|
+
if (jury.defense.length === 0) {
|
|
145
|
+
process.stdout.write(` ${kleur.gray("(none — no clean precedent in the recency window)")}\n\n`);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
for (const r of jury.defense) {
|
|
149
|
+
const c = r.commit;
|
|
150
|
+
process.stdout.write(` ${kleur.green("●")} ${kleur.bold((c.shortHash || c.hash.slice(0, 7)).slice(0, 7))} ${kleur.gray(`[${c.authorDate.slice(0, 10)}]`)}\n` +
|
|
151
|
+
` ${kleur.white(c.subject)}\n` +
|
|
152
|
+
` ${kleur.green(`→ shipped clean — no incidents traced back`)}\n` +
|
|
153
|
+
` ${kleur.gray(`overlap ${(r.fileOverlapRatio * 100).toFixed(0)}%`)}\n\n`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// Verdict
|
|
157
|
+
const verdictColor = jury.verdict === "block" ? kleur.red().bold : jury.verdict === "caution" ? kleur.yellow().bold : kleur.green().bold;
|
|
158
|
+
const verdictWord = jury.verdict === "block" ? "BLOCK" : jury.verdict === "caution" ? "CAUTION" : "CLEAR";
|
|
159
|
+
process.stdout.write(` ${kleur.bold().magenta("⚖ Verdict")} ${verdictColor(`[${verdictWord}]`)}\n`);
|
|
160
|
+
process.stdout.write(` ${kleur.gray(`prosecution strength: ${jury.prosecution.length} cases · defense strength: ${jury.defense.length} cases · ` +
|
|
161
|
+
`weighted score: ${jury.verdictScore >= 0 ? "+" : ""}${jury.verdictScore.toFixed(2)}`)}\n\n`);
|
|
162
|
+
// How to read
|
|
163
|
+
process.stdout.write(` ${kleur.gray("─".repeat(64))}\n` +
|
|
164
|
+
` ${kleur.gray("📘 How to read: prosecution and defense are pulled from REAL history — every\n" +
|
|
165
|
+
" precedent shown actually shipped. Verdict is heuristic; you are the final judge.\n" +
|
|
166
|
+
" CLEAR ≠ safe; BLOCK ≠ veto. Use this as the strongest counter-argument check.")}\n`);
|
|
167
|
+
}
|
|
83
168
|
function findCorrelatedIncidents(s, commitHash) {
|
|
84
169
|
const rows = s.db
|
|
85
170
|
.prepare(`SELECT i.id AS id, i.title AS title FROM correlations c
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conscience.js","sourceRoot":"","sources":["../../src/commands/conscience.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAe,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AA0B9B,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAA8B;IACpE,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;IAC7C,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEtD,mDAAmD;IACnD,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,EAAE,CAAC,KAAK,CACN,6FAA6F,CAC9F,CAAC;QACF,CAAC,CAAC,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,CAAC;IACX,CAAC;IAED,sCAAsC;IACtC,sDAAsD;IACtD,sCAAsC;IACtC,iEAAiE;IACjE,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAE9D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IAClD,MAAM,OAAO,GAAoB,EAAE,CAAC;IAEpC,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM;YAAE,SAAS;QAEhD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,OAAO,KAAK,CAAC;YAAE,SAAS;QAE5B,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAC3B,CAAC,EACD,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAC3D,CAAC;QAEF,MAAM,SAAS,GAAG,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;QAE1D,sEAAsE;QACtE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,GAAG,YAAY,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC;QAEtF,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,CAAC;YACT,WAAW,EAAE,OAAO;YACpB,gBAAgB,EAAE,YAAY;YAC9B,YAAY;YACZ,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,aAAa,EAAE,SAAS,CAAC,MAAM;YAC/B,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAE7C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACrE,CAAC,CAAC,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,CAAC;IACX,CAAC;IAED,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,KAAK,EAAE,CAAC;IACV,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,uBAAuB,CAC9B,CAAmB,EACnB,UAAkB;IAElB,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE;SACd,OAAO,CACN;;sDAEgD,CACjD;SACA,GAAG,CAAC,UAAU,CAAyC,CAAC;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAA8B;IAC1D,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IAC3D,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjD,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;QAC/B,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,qDAAqD;QACrD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACvD,IAAI,EAAE,EAAE,CAAC;YACP,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC;YAChB,SAAS;QACX,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC1C,IAAI,EAAE;YAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,CAAS;IAC9B,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,YAAY,CAAC,CAAc,EAAE,CAAc;IAClD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,IAAI,CAAC;QAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,CAAC,EAAE,CAAC;IACrC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,OAAO,CAAC,CAAS;IACxB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,IAAI,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC;IAClC,IAAI,IAAI,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC;IACrC,OAAO,KAAK,CAAC,KAAK,CAAC;AACrB,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,IAAI,IAAI,GAAG;QAAE,OAAO,MAAM,CAAC;IAC/B,IAAI,IAAI,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC;IAC9B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CACtB,KAAe,EACf,GAAoB,EACpB,CAAmB;IAEnB,EAAE,CAAC,MAAM,EAAE,CAAC;IACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAClG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,MAAM,aAAa,CAAC,CAAC;IAC/E,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE3B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,EAAE,CAAC,OAAO,CAAC,oEAAoE,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,0CAA0C,CAAC,MAAM,CAAC,CAAC;IAChG,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QACnB,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,UAAU,GAAG,CAAC,IAAI;YAClF,GAAG,KAAK,CAAC,QAAQ,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI;YAC3F,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;YACjC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,cAAc,CAAC,EAAE;YACnE,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC;gBAClB,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,yBAAyB,CAAC,EAAE;gBAClE,CAAC,CAAC,EAAE,CAAC;YACP,IAAI,CACP,CAAC;QACF,IAAI,CAAC,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;YACxB,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE;qBACb,OAAO,CAAC,oDAAoD,CAAC;qBAC7D,GAAG,CAAC,EAAE,CAAoD,CAAC;gBAC9D,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,SAAS,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,IAAI,CAC/F,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1D,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,CAAC,GAAG,CACP,KAAK,IAAI,8BAA8B,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,oDAAoD,CAClH,CACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,CAAC,IAAI,CACR,8EAA8E,CAC/E,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"conscience.js","sourceRoot":"","sources":["../../src/commands/conscience.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,8 @@ export interface GeniusCommandOptions {
|
|
|
10
10
|
json?: boolean;
|
|
11
11
|
/** Refuse to run if any LLM would be called. */
|
|
12
12
|
noLlm?: boolean;
|
|
13
|
+
/** Auto-pull the Ollama model if it isn't installed (one-time download). */
|
|
14
|
+
autoPull?: boolean;
|
|
13
15
|
}
|
|
14
16
|
export declare function geniusCommand(opts: GeniusCommandOptions): Promise<number>;
|
|
15
17
|
//# sourceMappingURL=genius.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"genius.d.ts","sourceRoot":"","sources":["../../src/commands/genius.ts"],"names":[],"mappings":"AAmCA,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"genius.d.ts","sourceRoot":"","sources":["../../src/commands/genius.ts"],"names":[],"mappings":"AAmCA,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAwCD,wBAAsB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4F/E"}
|
package/dist/commands/genius.js
CHANGED
|
@@ -76,11 +76,14 @@ export async function geniusCommand(opts) {
|
|
|
76
76
|
enricher = await resolveEnricher({
|
|
77
77
|
provider: opts.provider ?? "auto",
|
|
78
78
|
model: opts.model,
|
|
79
|
+
autoPull: opts.autoPull,
|
|
80
|
+
onPullProgress: (line) => ui.step("ollama-pull", line),
|
|
79
81
|
});
|
|
80
82
|
}
|
|
81
83
|
catch (err) {
|
|
82
84
|
ui.error(`No LLM available: ${err.message}`);
|
|
83
|
-
|
|
85
|
+
if (!opts.autoPull)
|
|
86
|
+
ui.dim("Tip: re-run with --auto-pull to download the default model now.");
|
|
84
87
|
return 1;
|
|
85
88
|
}
|
|
86
89
|
ui.step("llm", enricher.name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"genius.js","sourceRoot":"","sources":["../../src/commands/genius.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"genius.js","sourceRoot":"","sources":["../../src/commands/genius.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mneme karma` — TODO/FIXME debt as an accumulating ledger.
|
|
3
|
+
*
|
|
4
|
+
* This is the rare metric every code-quality tool *almost* tracks but never
|
|
5
|
+
* actually surfaces. Static analyzers count TODOs at HEAD ("you have 1,243
|
|
6
|
+
* TODOs"). git blame can find who wrote a single TODO. Neither tracks the
|
|
7
|
+
* *flow*: are we incurring debt faster than we settle it, and who personally
|
|
8
|
+
* owns the oldest unkept promises?
|
|
9
|
+
*
|
|
10
|
+
* Mneme reads every commit's diff for `TODO|FIXME|XXX|HACK` markers, treats
|
|
11
|
+
* each addition as a *debit* and each removal as a *credit*, and compounds
|
|
12
|
+
* the open balance with age. A 6-month-old TODO weighs ~2.3× a 1-week-old
|
|
13
|
+
* one (log10 1+age curve — sub-linear).
|
|
14
|
+
*
|
|
15
|
+
* Honest framing: this is a heuristic. Lines move, get edited, get reflowed.
|
|
16
|
+
* The output renders 📘 How to read with explicit caveats.
|
|
17
|
+
*/
|
|
18
|
+
export interface KarmaCommandOptions {
|
|
19
|
+
cwd: string;
|
|
20
|
+
/** Top-N authors in the leaderboard. */
|
|
21
|
+
topN?: number;
|
|
22
|
+
/** Filter to a specific author email. */
|
|
23
|
+
authorEmail?: string;
|
|
24
|
+
/** Restrict scan to a path prefix. */
|
|
25
|
+
pathPrefix?: string;
|
|
26
|
+
/** Cap commits scanned (most-recent N). */
|
|
27
|
+
maxCommits?: number;
|
|
28
|
+
/** ISO-8601 since-cutoff. */
|
|
29
|
+
since?: string;
|
|
30
|
+
json?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export declare function karmaCommand(opts: KarmaCommandOptions): Promise<number>;
|
|
33
|
+
//# sourceMappingURL=karma.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"karma.d.ts","sourceRoot":"","sources":["../../src/commands/karma.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmJ7E"}
|