@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.
- package/dist/cosmic/aurelian_v1925.test.d.ts +2 -0
- package/dist/cosmic/aurelian_v1925.test.d.ts.map +1 -0
- package/dist/cosmic/aurelian_v1925.test.js +48 -0
- package/dist/cosmic/aurelian_v1925.test.js.map +1 -0
- package/dist/cosmic/aurelian_v1926.test.d.ts +2 -0
- package/dist/cosmic/aurelian_v1926.test.d.ts.map +1 -0
- package/dist/cosmic/aurelian_v1926.test.js +48 -0
- package/dist/cosmic/aurelian_v1926.test.js.map +1 -0
- package/dist/dreamspace_evolution/dreamspace_evolution.test.d.ts +2 -0
- package/dist/dreamspace_evolution/dreamspace_evolution.test.d.ts.map +1 -0
- package/dist/dreamspace_evolution/dreamspace_evolution.test.js +199 -0
- package/dist/dreamspace_evolution/dreamspace_evolution.test.js.map +1 -0
- package/dist/dreamspace_evolution/index.d.ts +140 -0
- package/dist/dreamspace_evolution/index.d.ts.map +1 -0
- package/dist/dreamspace_evolution/index.js +210 -0
- package/dist/dreamspace_evolution/index.js.map +1 -0
- package/dist/dreamspace_gestation/dreamspace_gestation.test.d.ts +2 -0
- package/dist/dreamspace_gestation/dreamspace_gestation.test.d.ts.map +1 -0
- package/dist/dreamspace_gestation/dreamspace_gestation.test.js +160 -0
- package/dist/dreamspace_gestation/dreamspace_gestation.test.js.map +1 -0
- package/dist/dreamspace_gestation/index.d.ts +136 -0
- package/dist/dreamspace_gestation/index.d.ts.map +1 -0
- package/dist/dreamspace_gestation/index.js +186 -0
- package/dist/dreamspace_gestation/index.js.map +1 -0
- package/dist/endocrine/endocrine.test.d.ts +2 -0
- package/dist/endocrine/endocrine.test.d.ts.map +1 -0
- package/dist/endocrine/endocrine.test.js +198 -0
- package/dist/endocrine/endocrine.test.js.map +1 -0
- package/dist/endocrine/index.d.ts +159 -0
- package/dist/endocrine/index.d.ts.map +1 -0
- package/dist/endocrine/index.js +277 -0
- package/dist/endocrine/index.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/sleep_training/index.d.ts +162 -0
- package/dist/sleep_training/index.d.ts.map +1 -0
- package/dist/sleep_training/index.js +218 -0
- package/dist/sleep_training/index.js.map +1 -0
- package/dist/sleep_training/sleep_training.test.d.ts +2 -0
- package/dist/sleep_training/sleep_training.test.d.ts.map +1 -0
- package/dist/sleep_training/sleep_training.test.js +296 -0
- package/dist/sleep_training/sleep_training.test.js.map +1 -0
- package/dist/whats_new.d.ts.map +1 -1
- package/dist/whats_new.js +16 -0
- package/dist/whats_new.js.map +1 -1
- package/dist/wrapper_genesis/index.d.ts.map +1 -1
- package/dist/wrapper_genesis/index.js +25 -0
- package/dist/wrapper_genesis/index.js.map +1 -1
- 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 @@
|
|
|
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":"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"}
|