mneme-ai 2.139.0 โ 2.140.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/dist/commands/regret.d.ts +24 -0
- package/dist/commands/regret.d.ts.map +1 -0
- package/dist/commands/regret.js +155 -0
- package/dist/commands/regret.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mneme regret` (v2.140.0) โ the REGRET ORACLE (๐3). A signed, cross-vendor
|
|
3
|
+
* calibration of how often an edit carrying a given signal was ACTUALLY
|
|
4
|
+
* regretted later (reverted / test failed). Backward-looking, not fortune-telling.
|
|
5
|
+
*
|
|
6
|
+
* mneme regret record --features "primitive:network,area:auth,vendor:grok" --regretted
|
|
7
|
+
* git diff | mneme regret record --diff - --vendor grok --regretted # auto-derive signals
|
|
8
|
+
* git diff | mneme regret score --diff - --vendor grok
|
|
9
|
+
* mneme regret vendors
|
|
10
|
+
*
|
|
11
|
+
* `score` exit 2 on band HIGH (CI-gate). Honest: a historical base rate with a
|
|
12
|
+
* Wilson interval + UNKNOWN when support is thin โ never a prediction.
|
|
13
|
+
*/
|
|
14
|
+
import type { Command } from "commander";
|
|
15
|
+
/**
|
|
16
|
+
* Attach the REGRET ORACLE calibration as subcommands of the EXISTING `regret`
|
|
17
|
+
* command (which lists reverted commits โ the raw outcome source). So:
|
|
18
|
+
* mneme regret โ the git revert/hotfix lister (unchanged)
|
|
19
|
+
* mneme regret score โ calibrated regret base rate for an edit's signals
|
|
20
|
+
* mneme regret record โ record an outcome into the calibration ledger
|
|
21
|
+
* mneme regret vendors โ cross-vendor regret comparison
|
|
22
|
+
*/
|
|
23
|
+
export declare function attachRegretOracle(regretCmd: Command): void;
|
|
24
|
+
//# sourceMappingURL=regret.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regret.d.ts","sourceRoot":"","sources":["../../src/commands/regret.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuCzC;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAoD3D"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mneme regret` (v2.140.0) โ the REGRET ORACLE (๐3). A signed, cross-vendor
|
|
3
|
+
* calibration of how often an edit carrying a given signal was ACTUALLY
|
|
4
|
+
* regretted later (reverted / test failed). Backward-looking, not fortune-telling.
|
|
5
|
+
*
|
|
6
|
+
* mneme regret record --features "primitive:network,area:auth,vendor:grok" --regretted
|
|
7
|
+
* git diff | mneme regret record --diff - --vendor grok --regretted # auto-derive signals
|
|
8
|
+
* git diff | mneme regret score --diff - --vendor grok
|
|
9
|
+
* mneme regret vendors
|
|
10
|
+
*
|
|
11
|
+
* `score` exit 2 on band HIGH (CI-gate). Honest: a historical base rate with a
|
|
12
|
+
* Wilson interval + UNKNOWN when support is thin โ never a prediction.
|
|
13
|
+
*/
|
|
14
|
+
import { existsSync, readFileSync, mkdirSync, appendFileSync } from "node:fs";
|
|
15
|
+
import { join, dirname } from "node:path";
|
|
16
|
+
import { regret, pce, notary } from "@mneme-ai/core";
|
|
17
|
+
function out(s) { process.stdout.write(s + "\n"); }
|
|
18
|
+
const LEDGER = ".mneme/regret/outcomes.jsonl";
|
|
19
|
+
function splitList(v) { return typeof v === "string" && v.trim() ? v.split(",").map((s) => s.trim()).filter(Boolean) : []; }
|
|
20
|
+
function readDiff(file) { try {
|
|
21
|
+
if (file && file !== "-" && existsSync(file))
|
|
22
|
+
return readFileSync(file, "utf8");
|
|
23
|
+
if (file === "-")
|
|
24
|
+
return readFileSync(0, "utf8");
|
|
25
|
+
}
|
|
26
|
+
catch { /* */ } return ""; }
|
|
27
|
+
/** Derive observable signals from a diff (via PCE's static analysis) + a vendor. */
|
|
28
|
+
function deriveFeatures(diff, vendor) {
|
|
29
|
+
const f = [];
|
|
30
|
+
try {
|
|
31
|
+
const props = pce.analyzeDiff(diff);
|
|
32
|
+
for (const [k, v] of Object.entries(props.introducedPrimitives))
|
|
33
|
+
if (v)
|
|
34
|
+
f.push(`primitive:${k.toLowerCase()}`);
|
|
35
|
+
if (props.massDeletion)
|
|
36
|
+
f.push("mass-deletion");
|
|
37
|
+
if (props.touchedPaths.some((p) => /delete/.test(p))) { /* noop */ }
|
|
38
|
+
// top-level dir as "area:*"
|
|
39
|
+
for (const p of props.touchedPaths) {
|
|
40
|
+
const top = p.split("/")[0];
|
|
41
|
+
if (top)
|
|
42
|
+
f.push(`area:${top.toLowerCase()}`);
|
|
43
|
+
}
|
|
44
|
+
f.push(props.touchedPaths.length > 5 ? "breadth:wide" : "breadth:narrow");
|
|
45
|
+
}
|
|
46
|
+
catch { /* */ }
|
|
47
|
+
if (vendor)
|
|
48
|
+
f.push(`vendor:${vendor.toLowerCase()}`);
|
|
49
|
+
return Array.from(new Set(f));
|
|
50
|
+
}
|
|
51
|
+
function loadModel(cwd) {
|
|
52
|
+
const p = join(cwd, LEDGER);
|
|
53
|
+
const events = [];
|
|
54
|
+
if (existsSync(p)) {
|
|
55
|
+
for (const line of readFileSync(p, "utf8").split("\n")) {
|
|
56
|
+
if (!line.trim())
|
|
57
|
+
continue;
|
|
58
|
+
try {
|
|
59
|
+
const j = JSON.parse(line);
|
|
60
|
+
if (Array.isArray(j.features))
|
|
61
|
+
events.push({ features: j.features, regretted: j.regretted === true });
|
|
62
|
+
}
|
|
63
|
+
catch { /* */ }
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return regret.buildRegretModel(events);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Attach the REGRET ORACLE calibration as subcommands of the EXISTING `regret`
|
|
70
|
+
* command (which lists reverted commits โ the raw outcome source). So:
|
|
71
|
+
* mneme regret โ the git revert/hotfix lister (unchanged)
|
|
72
|
+
* mneme regret score โ calibrated regret base rate for an edit's signals
|
|
73
|
+
* mneme regret record โ record an outcome into the calibration ledger
|
|
74
|
+
* mneme regret vendors โ cross-vendor regret comparison
|
|
75
|
+
*/
|
|
76
|
+
export function attachRegretOracle(regretCmd) {
|
|
77
|
+
regretCmd
|
|
78
|
+
.command("score")
|
|
79
|
+
.description("๐ REGRET ORACLE โ calibrated regret base rate for an edit's signals (Wilson 95% LOWER bound of the riskiest signal, UNKNOWN when support is thin). Pass --diff - to derive signals via PCE. Exit 2 on HIGH. HONEST: a backward-looking historical base rate, not a prediction.")
|
|
80
|
+
.option("--features <list>", "comma-separated signals (e.g. \"primitive:network,area:auth,vendor:grok\")")
|
|
81
|
+
.option("--diff <file>", "derive signals from a unified diff (PCE static analysis); '-' = stdin")
|
|
82
|
+
.option("--vendor <name>", "tag the vendor (adds vendor:<name>)")
|
|
83
|
+
.option("--min-support <n>", "min samples before a signal counts (default 5)", (v) => parseInt(v, 10))
|
|
84
|
+
.option("--json", "JSON output")
|
|
85
|
+
.action((opts) => {
|
|
86
|
+
const cwd = process.cwd();
|
|
87
|
+
const features = opts.diff !== undefined ? deriveFeatures(readDiff(opts.diff), opts.vendor) : (() => { const f = splitList(opts.features); if (opts.vendor)
|
|
88
|
+
f.push(`vendor:${opts.vendor.toLowerCase()}`); return f; })();
|
|
89
|
+
const model = loadModel(cwd);
|
|
90
|
+
const s = regret.scoreRegret(model, features, opts.minSupport !== undefined ? { minSupport: opts.minSupport } : undefined);
|
|
91
|
+
let receipt = null;
|
|
92
|
+
try {
|
|
93
|
+
receipt = notary.issueReceipt(cwd, { kind: "claim-verdict", subject: `regret:${s.band}`, payload: { band: s.band, lb: s.regretRateLowerBound, support: s.support }, includePayload: true });
|
|
94
|
+
}
|
|
95
|
+
catch { /* */ }
|
|
96
|
+
if (opts.json) {
|
|
97
|
+
out(JSON.stringify({ ...s, signed: receipt }, null, 2));
|
|
98
|
+
process.exitCode = s.band === "HIGH" ? 2 : 0;
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const icon = s.band === "HIGH" ? "๐" : s.band === "ELEVATED" ? "๐ก" : s.band === "LOW" ? "๐ข" : "โ";
|
|
102
|
+
out(`${icon} REGRET ${s.band}${s.band !== "UNKNOWN" ? ` โ โฅ${(s.regretRateLowerBound * 100).toFixed(1)}% of similar edits were regretted (Wilson LB ยท ${(s.observedRate * 100).toFixed(0)}% observed ยท n=${s.support})` : " โ not enough recorded outcomes for these signals"}`);
|
|
103
|
+
for (const d of s.drivers)
|
|
104
|
+
out(` โข ${d.feature}: ${(d.wilsonLow * 100).toFixed(1)}% LB (n=${d.n})`);
|
|
105
|
+
out(` ${s.note}`);
|
|
106
|
+
if (receipt)
|
|
107
|
+
out(` โ signed (verify offline with the NOTARY public key)`);
|
|
108
|
+
process.exitCode = s.band === "HIGH" ? 2 : 0;
|
|
109
|
+
});
|
|
110
|
+
regretCmd
|
|
111
|
+
.command("record")
|
|
112
|
+
.description("๐ REGRET ORACLE โ record one real outcome (signals + --regretted) into the signed calibration ledger.")
|
|
113
|
+
.option("--features <list>", "comma-separated signals")
|
|
114
|
+
.option("--diff <file>", "derive signals from a unified diff; '-' = stdin")
|
|
115
|
+
.option("--vendor <name>", "tag the vendor")
|
|
116
|
+
.option("--regretted", "this outcome WAS regretted (reverted / test failed)")
|
|
117
|
+
.action((opts) => {
|
|
118
|
+
const cwd = process.cwd();
|
|
119
|
+
const features = opts.diff !== undefined ? deriveFeatures(readDiff(opts.diff), opts.vendor) : (() => { const f = splitList(opts.features); if (opts.vendor)
|
|
120
|
+
f.push(`vendor:${opts.vendor.toLowerCase()}`); return f; })();
|
|
121
|
+
if (!features.length) {
|
|
122
|
+
out("โ no signals โ pass --features or --diff");
|
|
123
|
+
process.exitCode = 2;
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
try {
|
|
127
|
+
const p = join(cwd, LEDGER);
|
|
128
|
+
if (!existsSync(dirname(p)))
|
|
129
|
+
mkdirSync(dirname(p), { recursive: true });
|
|
130
|
+
appendFileSync(p, JSON.stringify({ features, regretted: opts.regretted === true, at: Date.now() }) + "\n");
|
|
131
|
+
}
|
|
132
|
+
catch { /* */ }
|
|
133
|
+
out(`โ recorded outcome (${opts.regretted ? "REGRETTED" : "stable"}): ${features.join(", ")}`);
|
|
134
|
+
});
|
|
135
|
+
regretCmd
|
|
136
|
+
.command("vendors")
|
|
137
|
+
.description("๐ REGRET ORACLE โ cross-vendor regret comparison (Wilson LB, riskiest first).")
|
|
138
|
+
.option("--json", "JSON output")
|
|
139
|
+
.action((opts) => {
|
|
140
|
+
const vr = regret.vendorRegret(loadModel(process.cwd()));
|
|
141
|
+
if (opts.json) {
|
|
142
|
+
out(JSON.stringify(vr, null, 2));
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
if (!vr.length) {
|
|
146
|
+
out("๐ Regret Oracle โ no vendor-tagged outcomes recorded yet.");
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
out("๐ Regret Oracle โ cross-vendor regret (riskiest first, Wilson 95% LB):");
|
|
150
|
+
for (const v of vr)
|
|
151
|
+
out(` ${v.feature.replace("vendor:", "").padEnd(10)} ${(v.wilsonLow * 100).toFixed(1)}% LB ยท ${(v.rate * 100).toFixed(0)}% observed ยท n=${v.n}`);
|
|
152
|
+
out(" (historical base rate from your own revert/test outcomes โ not a prediction.)");
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=regret.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regret.js","sourceRoot":"","sources":["../../src/commands/regret.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkKA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0hNvD"}
|
package/dist/index.js
CHANGED
|
@@ -94,6 +94,7 @@ import { registerElleipsisCommands } from "./commands/elleipsis.js";
|
|
|
94
94
|
import { registerSteleCommands } from "./commands/stele.js";
|
|
95
95
|
import { registerAxiaCommands } from "./commands/axia.js";
|
|
96
96
|
import { registerPceCommands } from "./commands/pce.js";
|
|
97
|
+
import { attachRegretOracle } from "./commands/regret.js";
|
|
97
98
|
import { registerTrustCommands } from "./commands/trust.js";
|
|
98
99
|
import { registerNuclearCommands } from "./commands/nuclear-cli.js";
|
|
99
100
|
import { registerOvernightCommand } from "./commands/overnight.js";
|
|
@@ -1752,7 +1753,7 @@ export async function run(argv) {
|
|
|
1752
1753
|
process.exit(await chatCommand({ cwd: process.cwd(), noLlm: opts.llm === false }));
|
|
1753
1754
|
});
|
|
1754
1755
|
// โโโ Sprint 4 killer commands โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
1755
|
-
program
|
|
1756
|
+
const regretCmd = program
|
|
1756
1757
|
.command("regret", { hidden: true })
|
|
1757
1758
|
.description("Surface commits that were shipped and immediately fixed/reverted")
|
|
1758
1759
|
.option("--window-days <n>", "follow-up window", (v) => Number(v), 7)
|
|
@@ -1764,6 +1765,9 @@ export async function run(argv) {
|
|
|
1764
1765
|
json: opts.json,
|
|
1765
1766
|
}));
|
|
1766
1767
|
});
|
|
1768
|
+
// ๐ v2.140.0 โ attach the REGRET ORACLE calibration as subcommands
|
|
1769
|
+
// (`regret score|record|vendors`); bare `regret` stays the git revert lister.
|
|
1770
|
+
attachRegretOracle(regretCmd);
|
|
1767
1771
|
program
|
|
1768
1772
|
.command("bus-factor", { hidden: true })
|
|
1769
1773
|
.description("Identify single-source-of-truth knowledge holders + pairing recommendations")
|