@mneme-ai/core 2.19.24 → 2.19.26

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 (51) hide show
  1. package/dist/cosmic/aurelian_v1925.test.d.ts +2 -0
  2. package/dist/cosmic/aurelian_v1925.test.d.ts.map +1 -0
  3. package/dist/cosmic/aurelian_v1925.test.js +48 -0
  4. package/dist/cosmic/aurelian_v1925.test.js.map +1 -0
  5. package/dist/cosmic/aurelian_v1926.test.d.ts +2 -0
  6. package/dist/cosmic/aurelian_v1926.test.d.ts.map +1 -0
  7. package/dist/cosmic/aurelian_v1926.test.js +48 -0
  8. package/dist/cosmic/aurelian_v1926.test.js.map +1 -0
  9. package/dist/dreamspace_evolution/dreamspace_evolution.test.d.ts +2 -0
  10. package/dist/dreamspace_evolution/dreamspace_evolution.test.d.ts.map +1 -0
  11. package/dist/dreamspace_evolution/dreamspace_evolution.test.js +199 -0
  12. package/dist/dreamspace_evolution/dreamspace_evolution.test.js.map +1 -0
  13. package/dist/dreamspace_evolution/index.d.ts +140 -0
  14. package/dist/dreamspace_evolution/index.d.ts.map +1 -0
  15. package/dist/dreamspace_evolution/index.js +210 -0
  16. package/dist/dreamspace_evolution/index.js.map +1 -0
  17. package/dist/dreamspace_gestation/dreamspace_gestation.test.d.ts +2 -0
  18. package/dist/dreamspace_gestation/dreamspace_gestation.test.d.ts.map +1 -0
  19. package/dist/dreamspace_gestation/dreamspace_gestation.test.js +160 -0
  20. package/dist/dreamspace_gestation/dreamspace_gestation.test.js.map +1 -0
  21. package/dist/dreamspace_gestation/index.d.ts +136 -0
  22. package/dist/dreamspace_gestation/index.d.ts.map +1 -0
  23. package/dist/dreamspace_gestation/index.js +186 -0
  24. package/dist/dreamspace_gestation/index.js.map +1 -0
  25. package/dist/endocrine/endocrine.test.d.ts +2 -0
  26. package/dist/endocrine/endocrine.test.d.ts.map +1 -0
  27. package/dist/endocrine/endocrine.test.js +198 -0
  28. package/dist/endocrine/endocrine.test.js.map +1 -0
  29. package/dist/endocrine/index.d.ts +159 -0
  30. package/dist/endocrine/index.d.ts.map +1 -0
  31. package/dist/endocrine/index.js +277 -0
  32. package/dist/endocrine/index.js.map +1 -0
  33. package/dist/index.d.ts +4 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +6 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/sleep_training/index.d.ts +162 -0
  38. package/dist/sleep_training/index.d.ts.map +1 -0
  39. package/dist/sleep_training/index.js +218 -0
  40. package/dist/sleep_training/index.js.map +1 -0
  41. package/dist/sleep_training/sleep_training.test.d.ts +2 -0
  42. package/dist/sleep_training/sleep_training.test.d.ts.map +1 -0
  43. package/dist/sleep_training/sleep_training.test.js +296 -0
  44. package/dist/sleep_training/sleep_training.test.js.map +1 -0
  45. package/dist/whats_new.d.ts.map +1 -1
  46. package/dist/whats_new.js +16 -0
  47. package/dist/whats_new.js.map +1 -1
  48. package/dist/wrapper_genesis/index.d.ts.map +1 -1
  49. package/dist/wrapper_genesis/index.js +25 -0
  50. package/dist/wrapper_genesis/index.js.map +1 -1
  51. package/package.json +1 -1
@@ -0,0 +1,186 @@
1
+ /**
2
+ * v2.19.26 — MNEME DREAMSPACE · GESTATION (self-authoring MCP catalog · phase 1 of 2)
3
+ *
4
+ * "Catalog ตัวมัน static — ไม่งอก ไม่ตาย ไม่จับคู่ ไม่เรียนรู้ที่จะ
5
+ * author tool ใหม่. นั่นคือ gap ของกระบวนการ 'ของเดิม + ของใหม่ +
6
+ * การเลือก' — ที่ DREAMS ปัจจุบันยังตอบไม่ได้"
7
+ * — user audit, 2026-05-17
8
+ *
9
+ * Diagnosis: every prior dreams primitive (vaccine_cycle, dream.run,
10
+ * dreams.enqueue/resolve) is a PRODUCT factory — it manufactures
11
+ * one specific artifact (vaccine / claim / verdict). GESTATION is
12
+ * a TOOL factory — it watches for catalog gaps + proposes the
13
+ * composer recipe for a brand-new MCP tool that closes the gap.
14
+ *
15
+ * Three gap classes detected from caller-supplied signals:
16
+ * 1. REFLEX cache miss — user (or AI) tried an event that
17
+ * had no cached prediction; nothing fired. Gap = no pattern
18
+ * matched this event signature.
19
+ * 2. user_chat no-match — user typed a request; EVENT PATTERN
20
+ * MATCH returned zero predictions. Gap = no semantic rule
21
+ * recognised this phrase.
22
+ * 3. pattern co-occurrence — two tools always fire together in
23
+ * sequence (e.g., mneme.ask then mneme.why). Gap = no single
24
+ * composed tool does both — opportunity for chimera.
25
+ *
26
+ * For each gap, propose a ProposedToolSpec with deterministic name,
27
+ * description (from the originating signal), composer recipe (list
28
+ * of existing tools to chain), and a JSON inputSchema derived as the
29
+ * intersection of the composed tools' input schemas. Caller (daemon)
30
+ * feeds the spec to v2.19.9 WRAPPER_GENESPLICING `splice` to actually
31
+ * create the runtime chimera; this module is the PROPOSER, not the
32
+ * executor.
33
+ *
34
+ * Composes onto:
35
+ * - v2.19.9 WRAPPER_GENESPLICING (real splice surface)
36
+ * - v2.19.11 MORTAL (TTL for proposed tools)
37
+ * - v2.19.22 REFLEX (cache miss signal)
38
+ * - v2.19.24 EVENT PATTERN MATCH (no-match signal)
39
+ * - v2.19.25 SLEEP TRAINING (fitness gradient feeds promotion)
40
+ *
41
+ * Honest scope:
42
+ * - PURE FUNCTION proposer; HMAC-signed proposals so daemon can
43
+ * audit forged specs.
44
+ * - Composer recipes are SEQUENCES (Tool_A then Tool_B); we don't
45
+ * synthesise parallelisable or conditional graphs. v2.19.9 supports
46
+ * sequential/fan_out/first_success — we emit "sequential" only.
47
+ * - Names use deterministic snake_case to avoid collisions:
48
+ * `mneme.auto.<tool1>_then_<tool2>`. Caller can rename on promote.
49
+ * - We do NOT execute or load code. Daemon picks specs to promote
50
+ * based on usage telemetry from v2.19.26 EVOLUTION.
51
+ */
52
+ import { createHmac, timingSafeEqual } from "node:crypto";
53
+ const PROTOCOL_VERSION = 1;
54
+ const DEFAULT_MIN_GAP_COUNT = 3;
55
+ const DEFAULT_MIN_COOCCUR_COUNT = 4;
56
+ function canon(v) {
57
+ if (v === null || typeof v !== "object")
58
+ return JSON.stringify(v);
59
+ if (Array.isArray(v))
60
+ return "[" + v.map(canon).join(",") + "]";
61
+ const keys = Object.keys(v).sort();
62
+ return "{" + keys.map((k) => JSON.stringify(k) + ":" + canon(v[k])).join(",") + "}";
63
+ }
64
+ function defaultSecret() {
65
+ return process.env["MNEME_DREAMSPACE_GESTATION_SECRET"] || `mneme-dreamspace-gestation-v${PROTOCOL_VERSION}`;
66
+ }
67
+ function hmacHex(body, secret) {
68
+ return createHmac("sha256", secret).update(canon(body)).digest("hex");
69
+ }
70
+ function safeEqHex(a, b) {
71
+ try {
72
+ return timingSafeEqual(Buffer.from(a, "hex"), Buffer.from(b, "hex"));
73
+ }
74
+ catch {
75
+ return false;
76
+ }
77
+ }
78
+ function slugify(s) {
79
+ return s.toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_|_$/g, "").slice(0, 32);
80
+ }
81
+ /**
82
+ * Filter gap signals down to those above the minimum-count threshold.
83
+ * Below-threshold signals are noise; above-threshold signals are real
84
+ * gaps worth proposing a tool for.
85
+ */
86
+ export function detectToolGaps(input) {
87
+ const minGap = input.minGapCount ?? DEFAULT_MIN_GAP_COUNT;
88
+ const minCo = input.minCoOccurCount ?? DEFAULT_MIN_COOCCUR_COUNT;
89
+ return input.signals
90
+ .filter((s) => {
91
+ const threshold = s.kind === "pattern_co_occurrence" ? minCo : minGap;
92
+ return s.count >= threshold;
93
+ })
94
+ .slice()
95
+ .sort((a, b) => b.count - a.count || a.label.localeCompare(b.label));
96
+ }
97
+ /**
98
+ * Propose a tool spec from a single gap signal. Pure function;
99
+ * deterministic over (signal + secret). The composer recipe defaults
100
+ * to sequential chaining of the related tools; for no-match gaps with
101
+ * empty relatedTools, the recipe is just `mneme.smart_do` as a fallback
102
+ * so caller has SOMETHING to splice.
103
+ */
104
+ export function proposeToolSpec(input) {
105
+ const minGap = input.minGapCount ?? DEFAULT_MIN_GAP_COUNT;
106
+ const gap = input.gap;
107
+ // Name generation
108
+ let proposedName;
109
+ let description;
110
+ let recipe = [];
111
+ let inputSchema = { type: "object", properties: {}, required: [] };
112
+ if (gap.kind === "pattern_co_occurrence" && gap.relatedTools.length >= 2) {
113
+ const [a, b] = gap.relatedTools;
114
+ const slugA = slugify((a ?? "tool_a").replace(/^mneme\./, ""));
115
+ const slugB = slugify((b ?? "tool_b").replace(/^mneme\./, ""));
116
+ proposedName = `mneme.auto.${slugA}_then_${slugB}`;
117
+ description = `🌱 Auto-proposed chimera: invokes ${a} then ${b} (observed co-occurring ${gap.count}× yesterday on ${gap.label})`;
118
+ recipe = gap.relatedTools.map((t) => ({ toolName: t, argsPassthrough: true }));
119
+ inputSchema.properties["__passthrough"] = { type: "object", description: "Args passed through to each component tool" };
120
+ }
121
+ else if (gap.kind === "reflex_cache_miss") {
122
+ proposedName = `mneme.auto.handle_${slugify(gap.label)}`;
123
+ description = `🌱 Auto-proposed handler for REFLEX cache miss on '${gap.label}' (${gap.count}× yesterday). Composes related tools as fallback.`;
124
+ recipe = gap.relatedTools.length > 0
125
+ ? gap.relatedTools.map((t) => ({ toolName: t, argsPassthrough: true }))
126
+ : [{ toolName: "mneme.smart_do", argsPassthrough: true }];
127
+ inputSchema.properties["context"] = { type: "object" };
128
+ }
129
+ else {
130
+ // user_chat_no_match
131
+ proposedName = `mneme.auto.intent_${slugify(gap.label)}`;
132
+ description = `🌱 Auto-proposed intent handler for user phrase '${gap.label}' (no semantic rule matched; ${gap.count}× yesterday).`;
133
+ recipe = [{ toolName: "mneme.smart_do", argsPassthrough: true }];
134
+ inputSchema.properties["query"] = { type: "string", description: "User's natural-language request" };
135
+ inputSchema.required = ["query"];
136
+ }
137
+ // Confidence: linear scale from threshold to threshold*4 (caps at 1.0).
138
+ const confidence = Math.min(1, gap.count / (minGap * 4));
139
+ const body = {
140
+ v: PROTOCOL_VERSION,
141
+ proposedName,
142
+ description,
143
+ composerRecipe: recipe,
144
+ composerKind: "sequential",
145
+ proposedInputSchema: inputSchema,
146
+ sourceGap: gap,
147
+ confidence,
148
+ };
149
+ const sig = hmacHex(body, input.secret ?? defaultSecret());
150
+ return { ...body, sig };
151
+ }
152
+ export function verifyProposal(spec, secret) {
153
+ const { sig, ...body } = spec;
154
+ return safeEqHex(hmacHex(body, secret ?? defaultSecret()), sig);
155
+ }
156
+ /**
157
+ * One-shot gestation cycle: filter signals → propose specs → HMAC-sign
158
+ * the whole report. Caller runs this during the daemon's idle/dream
159
+ * window (composes onto v2.19.23 THALAMUS dream tier).
160
+ */
161
+ export function runGestationCycle(input) {
162
+ const qualifying = detectToolGaps({
163
+ signals: input.signals,
164
+ minGapCount: input.minGapCount,
165
+ minCoOccurCount: input.minCoOccurCount,
166
+ });
167
+ const proposals = qualifying.map((g) => proposeToolSpec({ gap: g, secret: input.secret, minGapCount: input.minGapCount }));
168
+ const body = {
169
+ v: PROTOCOL_VERSION,
170
+ totalSignals: input.signals.length,
171
+ qualifyingGaps: qualifying.length,
172
+ proposals,
173
+ cycleAt: input.cycleAt ?? Date.now(),
174
+ };
175
+ const sig = hmacHex(body, input.secret ?? defaultSecret());
176
+ return { ...body, sig };
177
+ }
178
+ export function verifyGestationReport(r, secret) {
179
+ const { sig, ...body } = r;
180
+ return safeEqHex(hmacHex(body, secret ?? defaultSecret()), sig);
181
+ }
182
+ export function formatProposalLine(p) {
183
+ const conf = (p.confidence * 100).toFixed(0);
184
+ return `🌱 ${p.proposedName} · ${p.composerRecipe.length}-step ${p.composerKind} · ${conf}% conf · from ${p.sourceGap.kind}`;
185
+ }
186
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dreamspace_gestation/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=endocrine.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endocrine.test.d.ts","sourceRoot":"","sources":["../../src/endocrine/endocrine.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,198 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { neutralEndocrineState, produceFromSignals, crossOrganEffects, emptyEndocrineLedger, recordEndocrine, verifyEndocrineLedger, formatEndocrineLine, listHormoneInfo, detectCortisolDelta, detectDopamineDelta, detectMelatoninDelta, detectOxytocinDelta, } from "./index.js";
3
+ const SECRET = "endocrine-test-secret-997744";
4
+ describe("v2.19.25 ENDOCRINE · neutralEndocrineState", () => {
5
+ it("starts all 4 hormones at 0", () => {
6
+ const s = neutralEndocrineState();
7
+ expect(s.cortisol).toBe(0);
8
+ expect(s.dopamine).toBe(0);
9
+ expect(s.melatonin).toBe(0);
10
+ expect(s.oxytocin).toBe(0);
11
+ });
12
+ });
13
+ describe("v2.19.25 ENDOCRINE · 🩸 CORTISOL (stress)", () => {
14
+ it("rises on commit FUCK/DAMN/finally/hotfix/wtf", () => {
15
+ expect(detectCortisolDelta({ commitMessage: "fix: damn that bug", elapsedMs: 0 })).toBeGreaterThan(0);
16
+ expect(detectCortisolDelta({ commitMessage: "FINALLY working", elapsedMs: 0 })).toBeGreaterThan(0);
17
+ expect(detectCortisolDelta({ commitMessage: "hotfix: production down", elapsedMs: 0 })).toBeGreaterThan(0);
18
+ expect(detectCortisolDelta({ commitMessage: "wtf is this", elapsedMs: 0 })).toBeGreaterThan(0);
19
+ });
20
+ it("rises on errorCountWindow > 3", () => {
21
+ expect(detectCortisolDelta({ errorCountWindow: 5, elapsedMs: 0 })).toBeGreaterThan(0);
22
+ expect(detectCortisolDelta({ errorCountWindow: 0, elapsedMs: 0 })).toBe(0);
23
+ });
24
+ it("rises late-night (hour 23 or hour 2)", () => {
25
+ expect(detectCortisolDelta({ hourOfDay: 23, elapsedMs: 0 })).toBeGreaterThan(0);
26
+ expect(detectCortisolDelta({ hourOfDay: 2, elapsedMs: 0 })).toBeGreaterThan(0);
27
+ expect(detectCortisolDelta({ hourOfDay: 14, elapsedMs: 0 })).toBe(0);
28
+ });
29
+ });
30
+ describe("v2.19.25 ENDOCRINE · ⚡ DOPAMINE (flow)", () => {
31
+ it("rises on greenStreak >= 5", () => {
32
+ expect(detectDopamineDelta({ greenStreakCount: 7, elapsedMs: 0 })).toBeGreaterThan(0);
33
+ expect(detectDopamineDelta({ greenStreakCount: 2, elapsedMs: 0 })).toBe(0);
34
+ });
35
+ it("rises on testPassStreak >= 5", () => {
36
+ expect(detectDopamineDelta({ testPassStreakCount: 10, elapsedMs: 0 })).toBeGreaterThan(0);
37
+ });
38
+ it("rises on zero errors window", () => {
39
+ expect(detectDopamineDelta({ errorCountWindow: 0, elapsedMs: 0 })).toBeGreaterThan(0);
40
+ });
41
+ });
42
+ describe("v2.19.25 ENDOCRINE · 🌙 MELATONIN (rest)", () => {
43
+ it("rises late hour (22 onwards) and early morning (00-06)", () => {
44
+ expect(detectMelatoninDelta({ hourOfDay: 22, elapsedMs: 0 })).toBeGreaterThan(0);
45
+ expect(detectMelatoninDelta({ hourOfDay: 2, elapsedMs: 0 })).toBeGreaterThan(0);
46
+ expect(detectMelatoninDelta({ hourOfDay: 14, elapsedMs: 0 })).toBe(0);
47
+ });
48
+ it("rises on idle > 15min", () => {
49
+ expect(detectMelatoninDelta({ idleMs: 20 * 60_000, elapsedMs: 0 })).toBeGreaterThan(0);
50
+ expect(detectMelatoninDelta({ idleMs: 5 * 60_000, elapsedMs: 0 })).toBe(0);
51
+ });
52
+ });
53
+ describe("v2.19.25 ENDOCRINE · 💞 OXYTOCIN (social)", () => {
54
+ it("rises on hasCoAuthor", () => {
55
+ expect(detectOxytocinDelta({ hasCoAuthor: true, elapsedMs: 0 })).toBeGreaterThan(0);
56
+ });
57
+ it("rises on Co-Authored-By trailer in commit", () => {
58
+ expect(detectOxytocinDelta({
59
+ commitMessage: "feat: x\n\nCo-Authored-By: Bob <bob@example.com>",
60
+ elapsedMs: 0,
61
+ })).toBeGreaterThan(0);
62
+ });
63
+ it("rises with distinctAuthorsHour >= 2", () => {
64
+ expect(detectOxytocinDelta({ distinctAuthorsHour: 3, elapsedMs: 0 })).toBeGreaterThan(0);
65
+ });
66
+ });
67
+ describe("v2.19.25 ENDOCRINE · produceFromSignals (state evolution + decay)", () => {
68
+ it("starts at neutral; cortisol rises on stress signal", () => {
69
+ const s = produceFromSignals({
70
+ state: neutralEndocrineState(0),
71
+ signals: { commitMessage: "wtf this is broken", errorCountWindow: 5, elapsedMs: 0 },
72
+ });
73
+ expect(s.cortisol).toBeGreaterThan(0);
74
+ expect(s.cortisol).toBeLessThanOrEqual(1);
75
+ });
76
+ it("hormones clamped to [0, 1]", () => {
77
+ let s = neutralEndocrineState(0);
78
+ for (let i = 0; i < 100; i++) {
79
+ s = produceFromSignals({
80
+ state: s,
81
+ signals: {
82
+ commitMessage: "fuck damn wtf hotfix",
83
+ errorCountWindow: 100,
84
+ hourOfDay: 2,
85
+ greenStreakCount: 50,
86
+ testPassStreakCount: 50,
87
+ hasCoAuthor: true,
88
+ distinctAuthorsHour: 10,
89
+ idleMs: 60 * 60_000,
90
+ elapsedMs: 0,
91
+ },
92
+ });
93
+ }
94
+ expect(s.cortisol).toBeLessThanOrEqual(1);
95
+ expect(s.dopamine).toBeLessThanOrEqual(1);
96
+ expect(s.melatonin).toBeLessThanOrEqual(1);
97
+ expect(s.oxytocin).toBeLessThanOrEqual(1);
98
+ });
99
+ it("natural half-life decay (cortisol fast, melatonin slow)", () => {
100
+ const start = { v: 1, cortisol: 0.9, dopamine: 0.5, melatonin: 0.9, oxytocin: 0.5, ts: 0 };
101
+ const after30min = produceFromSignals({
102
+ state: start,
103
+ signals: { elapsedMs: 30 * 60_000 },
104
+ });
105
+ // cortisol half-life = 30min -> ~0.45
106
+ expect(after30min.cortisol).toBeCloseTo(0.45, 1);
107
+ // melatonin half-life = 90min -> 30/90 ≈ 0.33 half-lives -> 0.9 * 0.5^0.33 ≈ 0.71
108
+ expect(after30min.melatonin).toBeGreaterThan(0.65);
109
+ expect(after30min.melatonin).toBeLessThan(0.75);
110
+ });
111
+ it("MEASURED 100% determinism: same input -> same state (50 trials)", () => {
112
+ const start = neutralEndocrineState(0);
113
+ const signals = { commitMessage: "fix: bug", greenStreakCount: 6, elapsedMs: 0 };
114
+ const first = JSON.stringify(produceFromSignals({ state: start, signals }));
115
+ let allEqual = true;
116
+ for (let i = 0; i < 50; i++) {
117
+ if (JSON.stringify(produceFromSignals({ state: start, signals })) !== first) {
118
+ allEqual = false;
119
+ break;
120
+ }
121
+ }
122
+ expect(allEqual).toBe(true);
123
+ });
124
+ });
125
+ describe("v2.19.25 ENDOCRINE · crossOrganEffects (hormones -> organ behavior)", () => {
126
+ it("neutral hormones -> baseline behavior", () => {
127
+ const e = crossOrganEffects(neutralEndocrineState());
128
+ expect(e.reflexAggressiveness).toBe(0.5);
129
+ expect(e.notificationsSuppressed).toBe(false);
130
+ expect(e.surfaceTrinityAndConfessional).toBe(false);
131
+ });
132
+ it("high cortisol -> reflex calmer + daemon quieter + notifications suppressed at >= 0.7", () => {
133
+ const e = crossOrganEffects({ v: 1, cortisol: 0.8, dopamine: 0, melatonin: 0, oxytocin: 0, ts: 0 });
134
+ expect(e.reflexAggressiveness).toBeLessThan(0.5);
135
+ expect(e.daemonQuietness).toBeGreaterThan(0.5);
136
+ expect(e.notificationsSuppressed).toBe(true);
137
+ });
138
+ it("high dopamine -> reflex MORE aggressive", () => {
139
+ const e = crossOrganEffects({ v: 1, cortisol: 0, dopamine: 0.8, melatonin: 0, oxytocin: 0, ts: 0 });
140
+ expect(e.reflexAggressiveness).toBeGreaterThan(0.5);
141
+ });
142
+ it("high melatonin -> deep dream cycle + notifications suppressed at >= 0.6", () => {
143
+ const e = crossOrganEffects({ v: 1, cortisol: 0, dopamine: 0, melatonin: 0.9, oxytocin: 0, ts: 0 });
144
+ expect(e.dreamCycleDepth).toBeGreaterThan(0.5);
145
+ expect(e.notificationsSuppressed).toBe(true);
146
+ });
147
+ it("oxytocin >= 0.4 -> surface TRINITY + CONFESSIONAL", () => {
148
+ const e = crossOrganEffects({ v: 1, cortisol: 0, dopamine: 0, melatonin: 0, oxytocin: 0.5, ts: 0 });
149
+ expect(e.surfaceTrinityAndConfessional).toBe(true);
150
+ });
151
+ it("dominantMood names the top hormone", () => {
152
+ const e = crossOrganEffects({ v: 1, cortisol: 0.8, dopamine: 0.2, melatonin: 0.1, oxytocin: 0.1, ts: 0 });
153
+ expect(e.dominantMood).toContain("cortisol");
154
+ });
155
+ });
156
+ describe("v2.19.25 ENDOCRINE · ledger (HMAC chain)", () => {
157
+ it("recordEndocrine chains; verify passes untampered", () => {
158
+ let L = emptyEndocrineLedger();
159
+ let s = neutralEndocrineState(0);
160
+ L = recordEndocrine({ ledger: L, state: s, signals: { commitMessage: "fix: x", elapsedMs: 0 }, secret: SECRET });
161
+ s = produceFromSignals({ state: s, signals: { commitMessage: "fix: x", elapsedMs: 0 } });
162
+ L = recordEndocrine({ ledger: L, state: s, signals: { greenStreakCount: 10, elapsedMs: 0 }, secret: SECRET });
163
+ expect(L.records.length).toBe(2);
164
+ expect(L.records[1].prevSig).toBe(L.records[0].sig);
165
+ expect(verifyEndocrineLedger(L, SECRET).ok).toBe(true);
166
+ });
167
+ it("verifyEndocrineLedger detects tamper at exact step", () => {
168
+ let L = emptyEndocrineLedger();
169
+ for (let i = 0; i < 4; i++) {
170
+ L = recordEndocrine({ ledger: L, state: neutralEndocrineState(i), signals: { elapsedMs: 0 }, secret: SECRET });
171
+ }
172
+ const tampered = {
173
+ ...L,
174
+ records: L.records.map((r, i) => (i === 2 ? { ...r, state: { ...r.state, cortisol: 0.99 } } : r)),
175
+ };
176
+ const v = verifyEndocrineLedger(tampered, SECRET);
177
+ expect(v.ok).toBe(false);
178
+ expect(v.brokenAt).toBe(2);
179
+ });
180
+ });
181
+ describe("v2.19.25 ENDOCRINE · formatter + introspection", () => {
182
+ it("formatEndocrineLine includes all 4 hormones", () => {
183
+ const line = formatEndocrineLine({ v: 1, cortisol: 0.1, dopamine: 0.2, melatonin: 0.3, oxytocin: 0.4, ts: 0 });
184
+ expect(line).toContain("🩸");
185
+ expect(line).toContain("⚡");
186
+ expect(line).toContain("🌙");
187
+ expect(line).toContain("💞");
188
+ });
189
+ it("listHormoneInfo returns 4 entries with sources + effects", () => {
190
+ const info = listHormoneInfo();
191
+ expect(info.length).toBe(4);
192
+ for (const h of info) {
193
+ expect(h.sources.length).toBeGreaterThan(0);
194
+ expect(h.effects.length).toBeGreaterThan(0);
195
+ }
196
+ });
197
+ });
198
+ //# sourceMappingURL=endocrine.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endocrine.test.js","sourceRoot":"","sources":["../../src/endocrine/endocrine.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * v2.19.25 — MNEME ENDOCRINE (extends v2.19.23 HORMONAL)
3
+ *
4
+ * "Mneme อ่าน mood signals (commit tone, time-of-day, idle pattern,
5
+ * error frequency) → ผลิต 'hormones' ที่ทุก organ ฟัง → behavior
6
+ * ทั้งระบบเปลี่ยน"
7
+ * — user audit, 2026-05-17
8
+ *
9
+ * Diagnosis: v2.19.23 HORMONAL ships 3 generic signals (focus /
10
+ * fatigue / mood) — useful but abstract. The user wants the named
11
+ * biological vocabulary that maps DIRECTLY to behavior:
12
+ * - CORTISOL (stress) → reflex calmer, daemon quieter
13
+ * - DOPAMINE (flow) → reflex strengthens current pattern
14
+ * - MELATONIN (rest) → deep dream cycle, suppress all
15
+ * - OXYTOCIN (social) → surface TRINITY + CONFESSIONAL
16
+ *
17
+ * ENDOCRINE adds 4 NAMED hormones with explicit source detectors +
18
+ * cross-organ effect ladder. Each hormone has its own decay
19
+ * constant + clamped to [0,1]. Sources are pure-function classifiers
20
+ * over commit messages / clock / streak signals.
21
+ *
22
+ * Composes onto v2.19.23 HORMONAL (HormonalState is parallel; both
23
+ * coexist — generic and named — caller picks abstraction level).
24
+ *
25
+ * Honest scope:
26
+ * - PURE FUNCTION classifiers + state update. Caller hooks the actual
27
+ * signal sources (commit msg / shell error code / system clock /
28
+ * idle detect).
29
+ * - Hormone levels are CORRELATION not CAUSATION; the cross-organ
30
+ * "effects" are POLICIES, applied by each organ at its own pace.
31
+ * - HMAC-chained ledger so daemon can audit hormone evolution over
32
+ * time + roll back if a misclassified signal spikes a hormone wrongly.
33
+ */
34
+ declare const PROTOCOL_VERSION: 1;
35
+ export type Hormone = "cortisol" | "dopamine" | "melatonin" | "oxytocin";
36
+ export interface EndocrineState {
37
+ v: typeof PROTOCOL_VERSION;
38
+ /** stress: 0..1; high = system anxious */
39
+ cortisol: number;
40
+ /** flow: 0..1; high = system in deep work / streak */
41
+ dopamine: number;
42
+ /** rest: 0..1; high = late night / sleep approaching */
43
+ melatonin: number;
44
+ /** social: 0..1; high = collaborative session */
45
+ oxytocin: number;
46
+ ts: number;
47
+ }
48
+ /** Raw signals the caller observes from the environment. */
49
+ export interface EndocrineSignals {
50
+ /** Commit message text (last commit). Used by cortisol + oxytocin. */
51
+ commitMessage?: string;
52
+ /** Error count in the last 15-minute window. Used by cortisol. */
53
+ errorCountWindow?: number;
54
+ /** Local hour of day (0..23). Used by cortisol + melatonin. */
55
+ hourOfDay?: number;
56
+ /** Streak count of consecutive successful commits (used by dopamine). */
57
+ greenStreakCount?: number;
58
+ /** Streak count of consecutive test passes (used by dopamine). */
59
+ testPassStreakCount?: number;
60
+ /** Idle milliseconds since last user activity. Used by melatonin. */
61
+ idleMs?: number;
62
+ /** Does the commit have Co-Authored-By? Used by oxytocin. */
63
+ hasCoAuthor?: boolean;
64
+ /** Number of distinct authors touching the file this hour. Used by oxytocin. */
65
+ distinctAuthorsHour?: number;
66
+ /** ms since previous endocrine update — drives natural decay. */
67
+ elapsedMs: number;
68
+ }
69
+ export declare function neutralEndocrineState(ts?: number): EndocrineState;
70
+ /**
71
+ * CORTISOL spikes from:
72
+ * - Stress keywords in commit msg (case-insensitive):
73
+ * fuck / damn / finally / broken / wtf / fix-fix / hotfix / rollback
74
+ * - Error count > 3 in 15-min window
75
+ * - Late-night activity (22:00..03:00)
76
+ */
77
+ export declare function detectCortisolDelta(signals: EndocrineSignals): number;
78
+ /**
79
+ * DOPAMINE spikes from:
80
+ * - greenStreakCount >= 5 consecutive successful commits
81
+ * - testPassStreakCount >= 5
82
+ * - No errors in the last window
83
+ */
84
+ export declare function detectDopamineDelta(signals: EndocrineSignals): number;
85
+ /**
86
+ * MELATONIN spikes from:
87
+ * - Late local hour (22:00 onwards; peaks at 02:00)
88
+ * - Sustained idle (>15min)
89
+ */
90
+ export declare function detectMelatoninDelta(signals: EndocrineSignals): number;
91
+ /**
92
+ * OXYTOCIN spikes from:
93
+ * - Co-Authored-By trailer in commit message
94
+ * - distinctAuthorsHour >= 2 (pair / mob session)
95
+ */
96
+ export declare function detectOxytocinDelta(signals: EndocrineSignals): number;
97
+ /** Evolve endocrine state given new signals + elapsed time. */
98
+ export declare function produceFromSignals(input: {
99
+ state: EndocrineState;
100
+ signals: EndocrineSignals;
101
+ nowMs?: number;
102
+ }): EndocrineState;
103
+ export interface CrossOrganEffects {
104
+ /** REFLEX: 0..1; high = aggressive (lots of predictions); low = calm. */
105
+ reflexAggressiveness: number;
106
+ /** Daemon notification volume: 0..1; high = quiet; low = chatty. */
107
+ daemonQuietness: number;
108
+ /** DREAM cycle depth: 0..1; high = deep consolidation; low = light. */
109
+ dreamCycleDepth: number;
110
+ /** Suppress non-critical notifications? */
111
+ notificationsSuppressed: boolean;
112
+ /** Surface TRINITY VOTE + CONFESSIONAL on next ambiguous decision? */
113
+ surfaceTrinityAndConfessional: boolean;
114
+ /** One-line summary describing the dominant hormone state. */
115
+ dominantMood: string;
116
+ }
117
+ /**
118
+ * Hormones → organ behavior. Pure function over current state.
119
+ *
120
+ * - cortisol high → reflex calmer (less aggressive); daemon quieter; suppress notifications
121
+ * - dopamine high → reflex strengthens current pattern (aggressive surface advanced tools)
122
+ * - melatonin high → deep dream cycle; SUPPRESS notifications (let user rest)
123
+ * - oxytocin high → surface TRINITY + CONFESSIONAL (collaboration tools)
124
+ */
125
+ export declare function crossOrganEffects(state: EndocrineState): CrossOrganEffects;
126
+ export interface EndocrineRecord {
127
+ v: typeof PROTOCOL_VERSION;
128
+ ts: number;
129
+ state: EndocrineState;
130
+ signals: EndocrineSignals;
131
+ prevSig: string | null;
132
+ sig: string;
133
+ }
134
+ export interface EndocrineLedger {
135
+ v: typeof PROTOCOL_VERSION;
136
+ records: EndocrineRecord[];
137
+ }
138
+ export declare function emptyEndocrineLedger(): EndocrineLedger;
139
+ export declare function recordEndocrine(input: {
140
+ ledger: EndocrineLedger;
141
+ state: EndocrineState;
142
+ signals: EndocrineSignals;
143
+ nowMs?: number;
144
+ secret?: string;
145
+ }): EndocrineLedger;
146
+ export declare function verifyEndocrineLedger(ledger: EndocrineLedger, secret?: string): {
147
+ ok: boolean;
148
+ brokenAt?: number;
149
+ reason?: string;
150
+ };
151
+ export declare function formatEndocrineLine(s: EndocrineState): string;
152
+ export declare function listHormoneInfo(): Array<{
153
+ hormone: Hormone;
154
+ emoji: string;
155
+ sources: string[];
156
+ effects: string[];
157
+ }>;
158
+ export {};
159
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/endocrine/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAIH,QAAA,MAAM,gBAAgB,EAAG,CAAU,CAAC;AAGpC,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,CAAC;AAEzE,MAAM,WAAW,cAAc;IAC7B,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3B,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;CACnB;AAsBD,wBAAgB,qBAAqB,CAAC,EAAE,SAAI,GAAG,cAAc,CAE5D;AAID;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAcrE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAYrE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAYtE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAQrE;AAsBD,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,cAAc,CAejB;AAID,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oEAAoE;IACpE,eAAe,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,eAAe,EAAE,MAAM,CAAC;IACxB,2CAA2C;IAC3C,uBAAuB,EAAE,OAAO,CAAC;IACjC,sEAAsE;IACtE,6BAA6B,EAAE,OAAO,CAAC;IACvC,8DAA8D;IAC9D,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,iBAAiB,CAoC1E;AAID,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3B,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,wBAAgB,oBAAoB,IAAI,eAAe,CAEtD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,eAAe,CAWlB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAWnI;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,CAE7D;AAED,wBAAgB,eAAe,IAAI,KAAK,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA2BlH"}