@mneme-ai/core 1.62.0 → 1.64.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.
Files changed (69) hide show
  1. package/dist/cognitive/cognitive.test.d.ts +10 -0
  2. package/dist/cognitive/cognitive.test.d.ts.map +1 -0
  3. package/dist/cognitive/cognitive.test.js +485 -0
  4. package/dist/cognitive/cognitive.test.js.map +1 -0
  5. package/dist/cognitive/consolidation.d.ts +73 -0
  6. package/dist/cognitive/consolidation.d.ts.map +1 -0
  7. package/dist/cognitive/consolidation.js +170 -0
  8. package/dist/cognitive/consolidation.js.map +1 -0
  9. package/dist/cognitive/counterfactual.d.ts +73 -0
  10. package/dist/cognitive/counterfactual.d.ts.map +1 -0
  11. package/dist/cognitive/counterfactual.js +184 -0
  12. package/dist/cognitive/counterfactual.js.map +1 -0
  13. package/dist/cognitive/curiosity.d.ts +37 -0
  14. package/dist/cognitive/curiosity.d.ts.map +1 -0
  15. package/dist/cognitive/curiosity.js +191 -0
  16. package/dist/cognitive/curiosity.js.map +1 -0
  17. package/dist/cognitive/debate.d.ts +48 -0
  18. package/dist/cognitive/debate.d.ts.map +1 -0
  19. package/dist/cognitive/debate.js +223 -0
  20. package/dist/cognitive/debate.js.map +1 -0
  21. package/dist/cognitive/decision_atom.d.ts +119 -0
  22. package/dist/cognitive/decision_atom.d.ts.map +1 -0
  23. package/dist/cognitive/decision_atom.js +187 -0
  24. package/dist/cognitive/decision_atom.js.map +1 -0
  25. package/dist/cognitive/index.d.ts +31 -0
  26. package/dist/cognitive/index.d.ts.map +1 -0
  27. package/dist/cognitive/index.js +24 -0
  28. package/dist/cognitive/index.js.map +1 -0
  29. package/dist/cognitive/theory_of_mind.d.ts +56 -0
  30. package/dist/cognitive/theory_of_mind.d.ts.map +1 -0
  31. package/dist/cognitive/theory_of_mind.js +212 -0
  32. package/dist/cognitive/theory_of_mind.js.map +1 -0
  33. package/dist/cognitive/tree_of_thought.d.ts +55 -0
  34. package/dist/cognitive/tree_of_thought.d.ts.map +1 -0
  35. package/dist/cognitive/tree_of_thought.js +134 -0
  36. package/dist/cognitive/tree_of_thought.js.map +1 -0
  37. package/dist/index.d.ts +5 -0
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +21 -0
  40. package/dist/index.js.map +1 -1
  41. package/dist/innerlife/ai_teacher.d.ts +83 -0
  42. package/dist/innerlife/ai_teacher.d.ts.map +1 -0
  43. package/dist/innerlife/ai_teacher.js +152 -0
  44. package/dist/innerlife/ai_teacher.js.map +1 -0
  45. package/dist/innerlife/innerlife.d.ts +104 -0
  46. package/dist/innerlife/innerlife.d.ts.map +1 -0
  47. package/dist/innerlife/innerlife.js +228 -0
  48. package/dist/innerlife/innerlife.js.map +1 -0
  49. package/dist/innerlife/innerlife.test.d.ts +5 -0
  50. package/dist/innerlife/innerlife.test.d.ts.map +1 -0
  51. package/dist/innerlife/innerlife.test.js +219 -0
  52. package/dist/innerlife/innerlife.test.js.map +1 -0
  53. package/dist/metamorphosis/metamorphosis.d.ts +116 -0
  54. package/dist/metamorphosis/metamorphosis.d.ts.map +1 -0
  55. package/dist/metamorphosis/metamorphosis.js +278 -0
  56. package/dist/metamorphosis/metamorphosis.js.map +1 -0
  57. package/dist/metamorphosis/metamorphosis.test.d.ts +5 -0
  58. package/dist/metamorphosis/metamorphosis.test.d.ts.map +1 -0
  59. package/dist/metamorphosis/metamorphosis.test.js +176 -0
  60. package/dist/metamorphosis/metamorphosis.test.js.map +1 -0
  61. package/dist/tribunal/tribunal.d.ts +111 -0
  62. package/dist/tribunal/tribunal.d.ts.map +1 -0
  63. package/dist/tribunal/tribunal.js +294 -0
  64. package/dist/tribunal/tribunal.js.map +1 -0
  65. package/dist/tribunal/tribunal.test.d.ts +5 -0
  66. package/dist/tribunal/tribunal.test.d.ts.map +1 -0
  67. package/dist/tribunal/tribunal.test.js +184 -0
  68. package/dist/tribunal/tribunal.test.js.map +1 -0
  69. package/package.json +1 -1
@@ -0,0 +1,170 @@
1
+ /**
2
+ * v1.64.0 -- COGNITIVE LAYER 4: MEMORY CONSOLIDATION.
3
+ *
4
+ * Sleep-cycle compression. Every consolidation pass:
5
+ * 1. Merge near-duplicate vaccines (Hamming distance <= 4)
6
+ * 2. Compress similar lessons into single core-wisdom entries
7
+ * 3. Promote frequently-recalled lessons to "core" tier
8
+ * 4. Prune lessons unused for >= 90 days
9
+ *
10
+ * Result: signal/noise ratio improves over time. Mneme sharper, not
11
+ * just bigger.
12
+ *
13
+ * Pure functions; persist only when `apply=true`.
14
+ */
15
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
16
+ import { join } from "node:path";
17
+ const COGNITIVE_DIR = ".mneme/cognitive";
18
+ function hammingDistance(a, b) {
19
+ if (a.length !== b.length)
20
+ return -1;
21
+ let d = 0;
22
+ for (let i = 0; i < a.length; i++) {
23
+ let x = parseInt(a[i], 16) ^ parseInt(b[i], 16);
24
+ while (x) {
25
+ d += x & 1;
26
+ x >>>= 1;
27
+ }
28
+ }
29
+ return d;
30
+ }
31
+ function readVaccines(repoRoot) {
32
+ const p = join(repoRoot, ".mneme/squadron/lie-vaccines.jsonl");
33
+ if (!existsSync(p))
34
+ return [];
35
+ try {
36
+ return readFileSync(p, "utf8").split("\n").filter(Boolean).map((l) => {
37
+ try {
38
+ return JSON.parse(l);
39
+ }
40
+ catch {
41
+ return null;
42
+ }
43
+ }).filter((x) => x !== null);
44
+ }
45
+ catch {
46
+ return [];
47
+ }
48
+ }
49
+ function writeVaccines(repoRoot, vaccines) {
50
+ const dir = join(repoRoot, ".mneme/squadron");
51
+ if (!existsSync(dir))
52
+ mkdirSync(dir, { recursive: true });
53
+ writeFileSync(join(dir, "lie-vaccines.jsonl"), vaccines.map((v) => JSON.stringify(v)).join("\n") + (vaccines.length > 0 ? "\n" : ""), "utf8");
54
+ }
55
+ function readNucleus(repoRoot) {
56
+ const p = join(repoRoot, ".mneme/nucleus.json");
57
+ if (!existsSync(p))
58
+ return null;
59
+ try {
60
+ return JSON.parse(readFileSync(p, "utf8"));
61
+ }
62
+ catch {
63
+ return null;
64
+ }
65
+ }
66
+ function writeNucleus(repoRoot, state) {
67
+ writeFileSync(join(repoRoot, ".mneme/nucleus.json"), JSON.stringify(state, null, 2), "utf8");
68
+ }
69
+ /** Merge vaccines with Hamming distance <= radius. Keeps the one with
70
+ * the higher refuteCount. */
71
+ export function mergeNearDuplicateVaccines(vaccines, radius = 4) {
72
+ const result = [];
73
+ const used = new Set();
74
+ let mergedCount = 0;
75
+ for (let i = 0; i < vaccines.length; i++) {
76
+ if (used.has(i))
77
+ continue;
78
+ let best = vaccines[i];
79
+ for (let j = i + 1; j < vaccines.length; j++) {
80
+ if (used.has(j))
81
+ continue;
82
+ const d = hammingDistance(best.simhash, vaccines[j].simhash);
83
+ if (d >= 0 && d <= radius) {
84
+ // Merge: keep the higher refuteCount + accumulate.
85
+ used.add(j);
86
+ mergedCount += 1;
87
+ if (vaccines[j].refuteCount > best.refuteCount) {
88
+ best = { ...vaccines[j], refuteCount: best.refuteCount + vaccines[j].refuteCount };
89
+ }
90
+ else {
91
+ best = { ...best, refuteCount: best.refuteCount + vaccines[j].refuteCount };
92
+ }
93
+ }
94
+ }
95
+ result.push(best);
96
+ }
97
+ return { merged: result, mergedCount };
98
+ }
99
+ /** Promote lessons frequently recalled; prune lessons never recalled
100
+ * past 90 days. */
101
+ export function consolidateLessons(lessons) {
102
+ const NINETY_DAYS = 90 * 86400 * 1000;
103
+ const RECALL_PROMOTE_THRESHOLD = 5;
104
+ let pruned = 0;
105
+ let promoted = 0;
106
+ const kept = [];
107
+ for (const lesson of lessons) {
108
+ const ageMs = Date.now() - Date.parse(lesson.bornAt);
109
+ const recalls = lesson.recallCount ?? 0;
110
+ if (lesson.kind === "milestone" && recalls === 0 && ageMs > NINETY_DAYS) {
111
+ pruned += 1;
112
+ continue;
113
+ }
114
+ // Promote
115
+ if (recalls >= RECALL_PROMOTE_THRESHOLD && lesson.promotedTo !== "core") {
116
+ kept.push({ ...lesson, promotedTo: "core" });
117
+ promoted += 1;
118
+ }
119
+ else {
120
+ kept.push(lesson);
121
+ }
122
+ }
123
+ return { kept, pruned, promoted };
124
+ }
125
+ /** Run one full consolidation pass. */
126
+ export function runConsolidation(repoRoot, opts) {
127
+ const dryRun = opts?.dryRun ?? false;
128
+ const radius = opts?.radius ?? 4;
129
+ // Vaccines
130
+ const vaccinesBefore = readVaccines(repoRoot);
131
+ const { merged, mergedCount } = mergeNearDuplicateVaccines(vaccinesBefore, radius);
132
+ if (!dryRun && mergedCount > 0)
133
+ writeVaccines(repoRoot, merged);
134
+ // Lessons
135
+ const nucleus = readNucleus(repoRoot);
136
+ let lessonsBefore = 0, lessonsAfter = 0, pruned = 0, promoted = 0;
137
+ if (nucleus) {
138
+ lessonsBefore = (nucleus.lessons ?? []).length;
139
+ const r = consolidateLessons(nucleus.lessons ?? []);
140
+ lessonsAfter = r.kept.length;
141
+ pruned = r.pruned;
142
+ promoted = r.promoted;
143
+ if (!dryRun && (pruned > 0 || promoted > 0)) {
144
+ writeNucleus(repoRoot, { ...nucleus, lessons: r.kept });
145
+ }
146
+ }
147
+ // Audit log
148
+ if (!dryRun) {
149
+ try {
150
+ const dir = join(repoRoot, COGNITIVE_DIR, "consolidation");
151
+ if (!existsSync(dir))
152
+ mkdirSync(dir, { recursive: true });
153
+ writeFileSync(join(dir, `pass-${Date.now()}.json`), JSON.stringify({
154
+ scannedAt: new Date().toISOString(),
155
+ vaccinesBefore: vaccinesBefore.length,
156
+ vaccinesAfter: merged.length,
157
+ merged: mergedCount,
158
+ lessonsBefore, lessonsAfter, pruned, promoted,
159
+ }, null, 2), "utf8");
160
+ }
161
+ catch { /* */ }
162
+ }
163
+ return {
164
+ scannedAt: new Date().toISOString(),
165
+ vaccines: { before: vaccinesBefore.length, after: merged.length, merged: mergedCount },
166
+ lessons: { before: lessonsBefore, after: lessonsAfter, pruned, promoted },
167
+ dryRun,
168
+ };
169
+ }
170
+ //# sourceMappingURL=consolidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consolidation.js","sourceRoot":"","sources":["../../src/cognitive/consolidation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * v1.64.0 -- COGNITIVE LAYER 5: COUNTERFACTUAL ENGINE.
3
+ *
4
+ * Given a decision (commit / file change / strategic choice), simulate
5
+ * the alternative timelines:
6
+ * - "if we had NOT done this"
7
+ * - "if we had done it SOONER"
8
+ * - "if we had done it DIFFERENTLY"
9
+ *
10
+ * Each branch is scored on the same axes as Tree-of-Thought (regression,
11
+ * stakeholder fairness, token cost). The output is a regret/relief
12
+ * delta vs. the actual timeline.
13
+ *
14
+ * actual regression=0.18, fair=0.75
15
+ * not-done regression=0.05, fair=0.40 --> relief +0.10
16
+ * done-sooner regression=0.12, fair=0.80 --> relief +0.05
17
+ * done-different regression=0.30, fair=0.65 --> regret -0.06
18
+ *
19
+ * Mneme learns from these regrets. If "done-sooner" consistently shows
20
+ * relief, Mneme nudges future decisions earlier. If "done-different"
21
+ * shows regret, the original choice is reinforced.
22
+ *
23
+ * Pure read; persists audit only when persistDelta=true.
24
+ */
25
+ export interface CounterfactualBranch {
26
+ /** Branch label. */
27
+ label: "actual" | "not-done" | "done-sooner" | "done-different";
28
+ estimatedRegressionP: number;
29
+ estimatedStakeholderFair: number;
30
+ estimatedTokenCost: number;
31
+ /** Composite score in [0, 1]; higher = better outcome. */
32
+ outcomeScore: number;
33
+ }
34
+ export interface CounterfactualResult {
35
+ decision: string;
36
+ branches: CounterfactualBranch[];
37
+ /** Relief = sum of (counterfactual.outcomeScore - actual.outcomeScore) where positive. */
38
+ totalRelief: number;
39
+ /** Regret = sum of (actual.outcomeScore - counterfactual.outcomeScore) where positive. */
40
+ totalRegret: number;
41
+ /** Most-relieving alternative if it exists. */
42
+ topAlternative: {
43
+ label: string;
44
+ deltaScore: number;
45
+ } | null;
46
+ /** Plain-English summary. */
47
+ summary: string;
48
+ }
49
+ export interface CounterfactualInput {
50
+ /** Decision label. */
51
+ decision: string;
52
+ /** Estimated regression P of the actual timeline. */
53
+ actualRegressionP: number;
54
+ /** Estimated stakeholder fairness of the actual timeline. */
55
+ actualStakeholderFair: number;
56
+ /** Estimated token cost of the actual timeline. */
57
+ actualTokenCost: number;
58
+ }
59
+ export declare function simulate(repoRoot: string, input: CounterfactualInput, opts?: {
60
+ persistDelta?: boolean;
61
+ }): CounterfactualResult;
62
+ /** Aggregate regret/relief deltas over a window -- detects systematic
63
+ * bias toward acting too late, too early, too aggressively. */
64
+ export interface CounterfactualBias {
65
+ totalEntries: number;
66
+ meanRelief: number;
67
+ meanRegret: number;
68
+ topAlternativeFrequency: Record<string, number>;
69
+ /** Dominant systematic bias or "balanced". */
70
+ systematicBias: "act-sooner" | "act-different" | "act-less" | "balanced";
71
+ }
72
+ export declare function detectBias(repoRoot: string): CounterfactualBias;
73
+ //# sourceMappingURL=counterfactual.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"counterfactual.d.ts","sourceRoot":"","sources":["../../src/cognitive/counterfactual.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAOH,MAAM,WAAW,oBAAoB;IACnC,oBAAoB;IACpB,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,gBAAgB,CAAC;IAChE,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wBAAwB,EAAE,MAAM,CAAC;IACjC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0DAA0D;IAC1D,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,0FAA0F;IAC1F,WAAW,EAAE,MAAM,CAAC;IACpB,0FAA0F;IAC1F,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,cAAc,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7D,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;CACjB;AA6BD,MAAM,WAAW,mBAAmB;IAClC,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mDAAmD;IACnD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,oBAAoB,CA0E9H;AAED;gEACgE;AAChE,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,8CAA8C;IAC9C,cAAc,EAAE,YAAY,GAAG,eAAe,GAAG,UAAU,GAAG,UAAU,CAAC;CAC1E;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAiD/D"}
@@ -0,0 +1,184 @@
1
+ /**
2
+ * v1.64.0 -- COGNITIVE LAYER 5: COUNTERFACTUAL ENGINE.
3
+ *
4
+ * Given a decision (commit / file change / strategic choice), simulate
5
+ * the alternative timelines:
6
+ * - "if we had NOT done this"
7
+ * - "if we had done it SOONER"
8
+ * - "if we had done it DIFFERENTLY"
9
+ *
10
+ * Each branch is scored on the same axes as Tree-of-Thought (regression,
11
+ * stakeholder fairness, token cost). The output is a regret/relief
12
+ * delta vs. the actual timeline.
13
+ *
14
+ * actual regression=0.18, fair=0.75
15
+ * not-done regression=0.05, fair=0.40 --> relief +0.10
16
+ * done-sooner regression=0.12, fair=0.80 --> relief +0.05
17
+ * done-different regression=0.30, fair=0.65 --> regret -0.06
18
+ *
19
+ * Mneme learns from these regrets. If "done-sooner" consistently shows
20
+ * relief, Mneme nudges future decisions earlier. If "done-different"
21
+ * shows regret, the original choice is reinforced.
22
+ *
23
+ * Pure read; persists audit only when persistDelta=true.
24
+ */
25
+ import { existsSync, mkdirSync, appendFileSync } from "node:fs";
26
+ import { join } from "node:path";
27
+ const COGNITIVE_DIR = ".mneme/cognitive";
28
+ function score(regression, fair, tokens) {
29
+ const tokenPenalty = 1 + Math.log10(Math.max(100, tokens) / 100);
30
+ return Math.max(0, Math.min(1, ((1 - regression) * fair) / tokenPenalty));
31
+ }
32
+ /** Deterministic perturbation based on decision string + branch label. */
33
+ function perturb(seed, axis, actual) {
34
+ let h = 0;
35
+ for (let i = 0; i < seed.length; i++)
36
+ h = (h * 31 + seed.charCodeAt(i)) >>> 0;
37
+ const r = ((h >>> 0) % 1000) / 1000; // 0..1
38
+ if (axis === "regression") {
39
+ // not-done usually lower regression; done-sooner ~ same; done-different ~ higher
40
+ if (seed.includes("not-done"))
41
+ return Math.max(0.02, actual - 0.1 - r * 0.05);
42
+ if (seed.includes("done-sooner"))
43
+ return Math.max(0.02, actual - 0.04 + (r - 0.5) * 0.08);
44
+ return Math.min(0.95, actual + 0.05 + r * 0.1);
45
+ }
46
+ if (axis === "fair") {
47
+ if (seed.includes("not-done"))
48
+ return Math.max(0.1, actual - 0.25 - r * 0.05);
49
+ if (seed.includes("done-sooner"))
50
+ return Math.min(0.98, actual + 0.04 + (r - 0.5) * 0.06);
51
+ return Math.max(0.1, actual - 0.05 + (r - 0.5) * 0.1);
52
+ }
53
+ // tokens
54
+ if (seed.includes("not-done"))
55
+ return Math.round(actual * 0.1);
56
+ if (seed.includes("done-sooner"))
57
+ return Math.round(actual * 0.85);
58
+ return Math.round(actual * 1.4 + r * 200);
59
+ }
60
+ export function simulate(repoRoot, input, opts) {
61
+ const actualScore = score(input.actualRegressionP, input.actualStakeholderFair, input.actualTokenCost);
62
+ const branches = [
63
+ {
64
+ label: "actual",
65
+ estimatedRegressionP: input.actualRegressionP,
66
+ estimatedStakeholderFair: input.actualStakeholderFair,
67
+ estimatedTokenCost: input.actualTokenCost,
68
+ outcomeScore: actualScore,
69
+ },
70
+ ];
71
+ for (const label of ["not-done", "done-sooner", "done-different"]) {
72
+ const seed = `${input.decision}::${label}`;
73
+ const regression = perturb(seed, "regression", input.actualRegressionP);
74
+ const fair = perturb(seed, "fair", input.actualStakeholderFair);
75
+ const tokens = perturb(seed, "tokens", input.actualTokenCost);
76
+ const outcome = score(regression, fair, tokens);
77
+ branches.push({
78
+ label,
79
+ estimatedRegressionP: regression,
80
+ estimatedStakeholderFair: fair,
81
+ estimatedTokenCost: tokens,
82
+ outcomeScore: outcome,
83
+ });
84
+ }
85
+ let totalRelief = 0;
86
+ let totalRegret = 0;
87
+ let topAlternative = null;
88
+ for (const b of branches) {
89
+ if (b.label === "actual")
90
+ continue;
91
+ const delta = b.outcomeScore - actualScore;
92
+ if (delta > 0) {
93
+ totalRelief += delta;
94
+ if (!topAlternative || delta > topAlternative.deltaScore) {
95
+ topAlternative = { label: b.label, deltaScore: delta };
96
+ }
97
+ }
98
+ else {
99
+ totalRegret += -delta;
100
+ }
101
+ }
102
+ const summary = topAlternative
103
+ ? `Best counterfactual: "${topAlternative.label}" would have scored +${topAlternative.deltaScore.toFixed(3)} over actual. Net relief ${totalRelief.toFixed(3)} vs regret ${totalRegret.toFixed(3)}.`
104
+ : `Actual decision dominates all counterfactuals. Net regret ${totalRegret.toFixed(3)} -- choice was sound.`;
105
+ // Audit log
106
+ if (opts?.persistDelta) {
107
+ try {
108
+ const dir = join(repoRoot, COGNITIVE_DIR, "counterfactual");
109
+ if (!existsSync(dir))
110
+ mkdirSync(dir, { recursive: true });
111
+ appendFileSync(join(dir, "deltas.jsonl"), JSON.stringify({
112
+ ts: new Date().toISOString(),
113
+ decision: input.decision,
114
+ totalRelief,
115
+ totalRegret,
116
+ topAlternative,
117
+ }) + "\n", "utf8");
118
+ }
119
+ catch { /* */ }
120
+ }
121
+ return {
122
+ decision: input.decision,
123
+ branches,
124
+ totalRelief,
125
+ totalRegret,
126
+ topAlternative,
127
+ summary,
128
+ };
129
+ }
130
+ export function detectBias(repoRoot) {
131
+ const p = join(repoRoot, COGNITIVE_DIR, "counterfactual", "deltas.jsonl");
132
+ if (!existsSync(p)) {
133
+ return { totalEntries: 0, meanRelief: 0, meanRegret: 0, topAlternativeFrequency: {}, systematicBias: "balanced" };
134
+ }
135
+ let totalEntries = 0;
136
+ let sumRelief = 0;
137
+ let sumRegret = 0;
138
+ const counts = {};
139
+ try {
140
+ const { readFileSync } = require("node:fs");
141
+ const lines = readFileSync(p, "utf8").split("\n").filter(Boolean);
142
+ for (const l of lines) {
143
+ try {
144
+ const row = JSON.parse(l);
145
+ totalEntries += 1;
146
+ sumRelief += row.totalRelief ?? 0;
147
+ sumRegret += row.totalRegret ?? 0;
148
+ const lbl = row.topAlternative?.label ?? "none";
149
+ counts[lbl] = (counts[lbl] ?? 0) + 1;
150
+ }
151
+ catch { /* */ }
152
+ }
153
+ }
154
+ catch { /* */ }
155
+ const meanRelief = totalEntries === 0 ? 0 : sumRelief / totalEntries;
156
+ const meanRegret = totalEntries === 0 ? 0 : sumRegret / totalEntries;
157
+ let dominant = null;
158
+ let dominantCount = 0;
159
+ for (const [k, v] of Object.entries(counts)) {
160
+ if (k === "none")
161
+ continue;
162
+ if (v > dominantCount) {
163
+ dominant = k;
164
+ dominantCount = v;
165
+ }
166
+ }
167
+ let bias = "balanced";
168
+ if (dominant && dominantCount / totalEntries >= 0.4) {
169
+ if (dominant === "done-sooner")
170
+ bias = "act-sooner";
171
+ else if (dominant === "done-different")
172
+ bias = "act-different";
173
+ else if (dominant === "not-done")
174
+ bias = "act-less";
175
+ }
176
+ return {
177
+ totalEntries,
178
+ meanRelief,
179
+ meanRegret,
180
+ topAlternativeFrequency: counts,
181
+ systematicBias: bias,
182
+ };
183
+ }
184
+ //# sourceMappingURL=counterfactual.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"counterfactual.js","sourceRoot":"","sources":["../../src/cognitive/counterfactual.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * v1.64.0 -- COGNITIVE LAYER 3: CURIOSITY ENGINE.
3
+ *
4
+ * Daemon-idle gap detector. Scan the wisdom stack, find areas where
5
+ * Mneme has DATA but no DEFENSE (commits about X but no vaccines)
6
+ * or VICE VERSA. Generate test claims that probe the gap. Either:
7
+ * - the claim grounds (Mneme adds it to its known-truths)
8
+ * - the claim refutes (Mneme emits a new vaccine)
9
+ *
10
+ * Either way: a gap closes. Mneme gets smarter on its own.
11
+ *
12
+ * NO LLM. Heuristic gap scan over .mneme/squadron + .mneme/forecast +
13
+ * .mneme/whisper.
14
+ */
15
+ export interface CuriosityGap {
16
+ /** Stable id for the gap. */
17
+ id: string;
18
+ /** Plain-English description. */
19
+ description: string;
20
+ /** Where in the wisdom stack the gap was detected. */
21
+ source: "commit-no-vaccine" | "vaccine-no-test" | "forecast-no-trend" | "whisper-no-import" | "stale-area";
22
+ /** Suggested test claim that would probe this gap. */
23
+ suggestedProbe: string;
24
+ /** Priority 0..1. */
25
+ priority: number;
26
+ }
27
+ export interface CuriosityScan {
28
+ gaps: CuriosityGap[];
29
+ scannedAt: string;
30
+ totalGaps: number;
31
+ highPriority: number;
32
+ }
33
+ /** Scan all wisdom layers for gaps. */
34
+ export declare function scanGaps(repoRoot: string): CuriosityScan;
35
+ /** Log a probe that was actually executed in response to a gap. */
36
+ export declare function logProbeExecution(repoRoot: string, gapId: string, outcome: "grounded" | "refuted" | "limbo"): void;
37
+ //# sourceMappingURL=curiosity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curiosity.d.ts","sourceRoot":"","sources":["../../src/cognitive/curiosity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,MAAM,WAAW,YAAY;IAC3B,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,MAAM,EAAE,mBAAmB,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,mBAAmB,GAAG,YAAY,CAAC;IAC3G,sDAAsD;IACtD,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAsHD,uCAAuC;AACvC,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAoBxD;AAED,mEAAmE;AACnE,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAQlH"}