@mneme-ai/core 2.19.28 → 2.19.29

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 (39) hide show
  1. package/dist/circadian/circadian.test.d.ts +2 -0
  2. package/dist/circadian/circadian.test.d.ts.map +1 -0
  3. package/dist/circadian/circadian.test.js +163 -0
  4. package/dist/circadian/circadian.test.js.map +1 -0
  5. package/dist/circadian/index.d.ts +124 -0
  6. package/dist/circadian/index.d.ts.map +1 -0
  7. package/dist/circadian/index.js +269 -0
  8. package/dist/circadian/index.js.map +1 -0
  9. package/dist/cosmic/aurelian_v1929.test.d.ts +2 -0
  10. package/dist/cosmic/aurelian_v1929.test.d.ts.map +1 -0
  11. package/dist/cosmic/aurelian_v1929.test.js +61 -0
  12. package/dist/cosmic/aurelian_v1929.test.js.map +1 -0
  13. package/dist/index.d.ts +3 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +4 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/synapse_fusion/index.d.ts +124 -0
  18. package/dist/synapse_fusion/index.d.ts.map +1 -0
  19. package/dist/synapse_fusion/index.js +0 -0
  20. package/dist/synapse_fusion/index.js.map +1 -0
  21. package/dist/synapse_fusion/synapse_fusion.test.d.ts +2 -0
  22. package/dist/synapse_fusion/synapse_fusion.test.d.ts.map +1 -0
  23. package/dist/synapse_fusion/synapse_fusion.test.js +215 -0
  24. package/dist/synapse_fusion/synapse_fusion.test.js.map +1 -0
  25. package/dist/synapse_genesis/index.d.ts +190 -0
  26. package/dist/synapse_genesis/index.d.ts.map +1 -0
  27. package/dist/synapse_genesis/index.js +334 -0
  28. package/dist/synapse_genesis/index.js.map +1 -0
  29. package/dist/synapse_genesis/synapse_genesis.test.d.ts +2 -0
  30. package/dist/synapse_genesis/synapse_genesis.test.d.ts.map +1 -0
  31. package/dist/synapse_genesis/synapse_genesis.test.js +333 -0
  32. package/dist/synapse_genesis/synapse_genesis.test.js.map +1 -0
  33. package/dist/whats_new.d.ts.map +1 -1
  34. package/dist/whats_new.js +8 -0
  35. package/dist/whats_new.js.map +1 -1
  36. package/dist/wrapper_genesis/index.d.ts.map +1 -1
  37. package/dist/wrapper_genesis/index.js +16 -0
  38. package/dist/wrapper_genesis/index.js.map +1 -1
  39. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=circadian.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circadian.test.d.ts","sourceRoot":"","sources":["../../src/circadian/circadian.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,163 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { classifyPhase, verifyPhaseReport, decideGating, formatPhaseLine, formatGatingLine, PHASE_EMOJI, DEFAULT_PHASE_PREFERENCE, CIRCADIAN_TUNABLES, } from "./index.js";
3
+ const SECRET = "circadian-test-secret-997744";
4
+ describe("v2.19.29 CIRCADIAN · classifyPhase (5-phase ladder)", () => {
5
+ it("06:00-21:00 → AWAKE", () => {
6
+ expect(classifyPhase({ hourOfDay: 10, secret: SECRET }).phase).toBe("AWAKE");
7
+ expect(classifyPhase({ hourOfDay: 14, secret: SECRET }).phase).toBe("AWAKE");
8
+ expect(classifyPhase({ hourOfDay: 20, secret: SECRET }).phase).toBe("AWAKE");
9
+ });
10
+ it("21:00-23:00 → DROWSY", () => {
11
+ expect(classifyPhase({ hourOfDay: 21, secret: SECRET }).phase).toBe("DROWSY");
12
+ expect(classifyPhase({ hourOfDay: 22, secret: SECRET }).phase).toBe("DROWSY");
13
+ });
14
+ it("23:00-02:00 → SLEEP_NREM (wraps midnight)", () => {
15
+ expect(classifyPhase({ hourOfDay: 23, secret: SECRET }).phase).toBe("SLEEP_NREM");
16
+ expect(classifyPhase({ hourOfDay: 0, secret: SECRET }).phase).toBe("SLEEP_NREM");
17
+ expect(classifyPhase({ hourOfDay: 1, secret: SECRET }).phase).toBe("SLEEP_NREM");
18
+ });
19
+ it("02:00-04:00 → SLEEP_REM", () => {
20
+ expect(classifyPhase({ hourOfDay: 2, secret: SECRET }).phase).toBe("SLEEP_REM");
21
+ expect(classifyPhase({ hourOfDay: 3, secret: SECRET }).phase).toBe("SLEEP_REM");
22
+ });
23
+ it("04:00-06:00 → WAKE_TRANSITION", () => {
24
+ expect(classifyPhase({ hourOfDay: 4, secret: SECRET }).phase).toBe("WAKE_TRANSITION");
25
+ expect(classifyPhase({ hourOfDay: 5, secret: SECRET }).phase).toBe("WAKE_TRANSITION");
26
+ });
27
+ it("activity override: recent activity → WAKE_TRANSITION regardless of clock", () => {
28
+ const r = classifyPhase({
29
+ hourOfDay: 3, // would normally be SLEEP_REM
30
+ msSinceLastActivity: 60_000, // 1 minute ago
31
+ secret: SECRET,
32
+ });
33
+ expect(r.phase).toBe("WAKE_TRANSITION");
34
+ expect(r.activityOverride).toBe(true);
35
+ });
36
+ it("activity > 5min ago → no override; clock-based phase wins", () => {
37
+ const r = classifyPhase({
38
+ hourOfDay: 3,
39
+ msSinceLastActivity: 10 * 60_000, // 10 min ago
40
+ secret: SECRET,
41
+ });
42
+ expect(r.phase).toBe("SLEEP_REM");
43
+ expect(r.activityOverride).toBe(false);
44
+ });
45
+ it("DEFENSIVE: NaN hour → AWAKE fallback (never crashes)", () => {
46
+ const r = classifyPhase({ hourOfDay: NaN, secret: SECRET });
47
+ expect(r.phase).toBe("AWAKE");
48
+ expect(r.reason).toContain("malformed");
49
+ });
50
+ it("DEFENSIVE: negative hour → AWAKE fallback", () => {
51
+ expect(classifyPhase({ hourOfDay: -5, secret: SECRET }).phase).toBe("AWAKE");
52
+ });
53
+ it("DEFENSIVE: hour >= 24 → AWAKE fallback", () => {
54
+ expect(classifyPhase({ hourOfDay: 25, secret: SECRET }).phase).toBe("AWAKE");
55
+ });
56
+ it("HMAC sig verifies; rejects tamper", () => {
57
+ const r = classifyPhase({ hourOfDay: 14, secret: SECRET });
58
+ expect(verifyPhaseReport(r, SECRET)).toBe(true);
59
+ expect(verifyPhaseReport({ ...r, phase: "SLEEP_REM" }, SECRET)).toBe(false);
60
+ });
61
+ it("MEASURED 100% determinism: same input → same sig (50 trials)", () => {
62
+ const firstSig = classifyPhase({ hourOfDay: 10, msSinceLastActivity: 100, secret: SECRET }).sig;
63
+ let allEqual = true;
64
+ for (let i = 0; i < 50; i++) {
65
+ if (classifyPhase({ hourOfDay: 10, msSinceLastActivity: 100, secret: SECRET }).sig !== firstSig) {
66
+ allEqual = false;
67
+ break;
68
+ }
69
+ }
70
+ expect(allEqual).toBe(true);
71
+ });
72
+ });
73
+ describe("v2.19.29 CIRCADIAN · decideGating (per-tool phase gates)", () => {
74
+ it("breath is always-on (every phase)", () => {
75
+ for (const phase of ["AWAKE", "DROWSY", "SLEEP_NREM", "SLEEP_REM", "WAKE_TRANSITION"]) {
76
+ expect(decideGating({ toolName: "mneme.breath.decide", currentPhase: phase }).shouldFire).toBe(true);
77
+ }
78
+ });
79
+ it("dreamspace.* only fires in SLEEP_REM", () => {
80
+ expect(decideGating({ toolName: "mneme.dreamspace.gestation_cycle", currentPhase: "SLEEP_REM" }).shouldFire).toBe(true);
81
+ expect(decideGating({ toolName: "mneme.dreamspace.gestation_cycle", currentPhase: "AWAKE" }).shouldFire).toBe(false);
82
+ });
83
+ it("sleep.* only fires during SLEEP_NREM or SLEEP_REM", () => {
84
+ expect(decideGating({ toolName: "mneme.sleep.cycle", currentPhase: "SLEEP_NREM" }).shouldFire).toBe(true);
85
+ expect(decideGating({ toolName: "mneme.sleep.cycle", currentPhase: "AWAKE" }).shouldFire).toBe(false);
86
+ });
87
+ it("synapse.prune exact-match: only SLEEP_NREM", () => {
88
+ expect(decideGating({ toolName: "mneme.synapse.prune", currentPhase: "SLEEP_NREM" }).shouldFire).toBe(true);
89
+ expect(decideGating({ toolName: "mneme.synapse.prune", currentPhase: "AWAKE" }).shouldFire).toBe(false);
90
+ expect(decideGating({ toolName: "mneme.synapse.prune", currentPhase: "SLEEP_REM" }).shouldFire).toBe(false);
91
+ });
92
+ it("unknown tool → fallback to AWAKE-only (safe conservative default)", () => {
93
+ expect(decideGating({ toolName: "mneme.totally_new_org.x", currentPhase: "AWAKE" }).shouldFire).toBe(true);
94
+ expect(decideGating({ toolName: "mneme.totally_new_org.x", currentPhase: "SLEEP_REM" }).shouldFire).toBe(false);
95
+ });
96
+ it("hormonal.* + endocrine.* fire in DROWSY + WAKE_TRANSITION + AWAKE", () => {
97
+ expect(decideGating({ toolName: "mneme.hormonal.update", currentPhase: "DROWSY" }).shouldFire).toBe(true);
98
+ expect(decideGating({ toolName: "mneme.endocrine.produce", currentPhase: "WAKE_TRANSITION" }).shouldFire).toBe(true);
99
+ expect(decideGating({ toolName: "mneme.endocrine.produce", currentPhase: "SLEEP_NREM" }).shouldFire).toBe(false);
100
+ });
101
+ it("DEFENSIVE: empty toolName → no fire (never crashes)", () => {
102
+ expect(decideGating({ toolName: "", currentPhase: "AWAKE" }).shouldFire).toBe(false);
103
+ });
104
+ it("custom preference map overrides defaults", () => {
105
+ const custom = new Map([
106
+ ["mneme.custom.tool", ["SLEEP_REM"]],
107
+ ]);
108
+ expect(decideGating({ toolName: "mneme.custom.tool", currentPhase: "SLEEP_REM", preferenceMap: custom }).shouldFire).toBe(true);
109
+ expect(decideGating({ toolName: "mneme.custom.tool", currentPhase: "AWAKE", preferenceMap: custom }).shouldFire).toBe(false);
110
+ });
111
+ it("matchedRule field tracks which rule fired (audit trail)", () => {
112
+ const exact = decideGating({ toolName: "mneme.synapse.prune", currentPhase: "SLEEP_NREM" });
113
+ expect(exact.matchedRule).toBe("mneme.synapse.prune");
114
+ const wildcard = decideGating({ toolName: "mneme.breath.decide", currentPhase: "AWAKE" });
115
+ expect(wildcard.matchedRule).toBe("mneme.breath.*");
116
+ const fallback = decideGating({ toolName: "mneme.unknown.tool", currentPhase: "AWAKE" });
117
+ expect(fallback.matchedRule).toBeNull();
118
+ });
119
+ });
120
+ describe("v2.19.29 CIRCADIAN · 24/7 invariants + biological correctness", () => {
121
+ it("every hour 0-23 returns a valid phase (no gaps)", () => {
122
+ for (let h = 0; h < 24; h++) {
123
+ const r = classifyPhase({ hourOfDay: h, secret: SECRET });
124
+ expect(["WAKE_TRANSITION", "AWAKE", "DROWSY", "SLEEP_NREM", "SLEEP_REM"]).toContain(r.phase);
125
+ }
126
+ });
127
+ it("PHASE_EMOJI covers all 5 phases", () => {
128
+ for (const phase of ["WAKE_TRANSITION", "AWAKE", "DROWSY", "SLEEP_NREM", "SLEEP_REM"]) {
129
+ expect(PHASE_EMOJI[phase]).toBeTruthy();
130
+ }
131
+ });
132
+ it("CIRCADIAN_TUNABLES exposes boundaries + activity window (frozen)", () => {
133
+ expect(Object.isFrozen(CIRCADIAN_TUNABLES)).toBe(true);
134
+ expect(CIRCADIAN_TUNABLES.DEFAULT_BOUNDARIES.awakeStart).toBe(6);
135
+ expect(CIRCADIAN_TUNABLES.ACTIVITY_TRANSITION_WINDOW_MS).toBeGreaterThan(0);
136
+ });
137
+ it("DEFAULT_PHASE_PREFERENCE has entries for every major organ family", () => {
138
+ const expectedFamilies = ["mneme.breath.*", "mneme.reflex.*", "mneme.sleep.*", "mneme.dreamspace.*", "mneme.hormonal.*"];
139
+ for (const f of expectedFamilies) {
140
+ expect(DEFAULT_PHASE_PREFERENCE.has(f)).toBe(true);
141
+ }
142
+ });
143
+ it("MEASURED 100% gating determinism across 100 trials per tool", () => {
144
+ const tools = ["mneme.breath.decide", "mneme.dreamspace.x", "mneme.unknown.y"];
145
+ const phases = ["AWAKE", "SLEEP_REM"];
146
+ for (const t of tools) {
147
+ for (const p of phases) {
148
+ const first = decideGating({ toolName: t, currentPhase: p }).shouldFire;
149
+ for (let i = 0; i < 100; i++) {
150
+ expect(decideGating({ toolName: t, currentPhase: p }).shouldFire).toBe(first);
151
+ }
152
+ }
153
+ }
154
+ });
155
+ it("formatPhaseLine + formatGatingLine produce one-line digests", () => {
156
+ const r = classifyPhase({ hourOfDay: 14, secret: SECRET });
157
+ expect(formatPhaseLine(r)).toContain("CIRCADIAN");
158
+ expect(formatPhaseLine(r)).toContain(PHASE_EMOJI[r.phase]);
159
+ const d = decideGating({ toolName: "mneme.breath.decide", currentPhase: "AWAKE" });
160
+ expect(formatGatingLine(d)).toContain("GATE");
161
+ });
162
+ });
163
+ //# sourceMappingURL=circadian.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circadian.test.js","sourceRoot":"","sources":["../../src/circadian/circadian.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * v2.19.29 — MNEME CIRCADIAN PHASE CLASSIFIER (Phase B of SYNAPSE GENESIS)
3
+ *
4
+ * "Mneme เป็น organism ที่หลับและตื่นตามคุณ. 06:00 user เปิดเครื่อง →
5
+ * first command 0ms response (cache warm). 00:00 user หลับ →
6
+ * DREAMSPACE.probe + cartographer + synthesize + evolve."
7
+ * — user mandate, 2026-05-17
8
+ *
9
+ * Diagnosis: v2.19.28 AUTONOMIC SCHEDULER ticks all organs on the SAME
10
+ * clock 24/7. That wastes resources (DREAMSPACE probing at 14:00 when
11
+ * user is mid-keystroke) and misses optimal phases (REFLEX cache warming
12
+ * at 05:50 before user opens their laptop).
13
+ *
14
+ * CIRCADIAN classifies the current moment into one of 5 biological
15
+ * phases. Each organ subscribes to its preferred phase(s). SYNAPSE
16
+ * GENESIS uses this to GATE fires — a synapse only fires when its
17
+ * tool is "awake" in the current phase.
18
+ *
19
+ * 5 phases:
20
+ * 🌅 WAKE_TRANSITION 04:00-06:00 (pre-warm caches)
21
+ * 🌞 AWAKE 06:00-21:00 (active organs)
22
+ * 🌆 DROWSY 21:00-23:00 (taper, prep for sleep)
23
+ * 😴 SLEEP_NREM 23:00-02:00 (deep consolidation; PRUNE + decay)
24
+ * 🌙 SLEEP_REM 02:00-04:00 (DREAMSPACE creative cycle)
25
+ *
26
+ * Override: if recent user activity (< 5min ago) at ANY phase →
27
+ * forced to WAKE_TRANSITION (so sudden 03:00 commit still pre-warms).
28
+ *
29
+ * Composes onto:
30
+ * - v2.19.29 SYNAPSE GENESIS (phase gates synapse fires)
31
+ * - v2.19.28 AUTONOMIC SCHEDULER (phase tunes per-organ intervals)
32
+ * - v2.19.25 ENDOCRINE (phase couples to melatonin level)
33
+ *
34
+ * Honest scope:
35
+ * - PURE FUNCTION classifier + gating predicate.
36
+ * - Phase boundaries are CONFIG (caller can override per-user chronotype).
37
+ * - HMAC-signed PhaseReport so cross-device sync trusts the phase.
38
+ * - 24/7 always-safe: malformed hourOfDay (NaN / >23) falls back to AWAKE.
39
+ */
40
+ declare const PROTOCOL_VERSION: 1;
41
+ export type Phase = "WAKE_TRANSITION" | "AWAKE" | "DROWSY" | "SLEEP_NREM" | "SLEEP_REM";
42
+ export declare const PHASE_EMOJI: Record<Phase, string>;
43
+ export interface PhaseBoundaries {
44
+ /** Hour [0,24) that WAKE_TRANSITION starts. Default 4. */
45
+ wakeTransitionStart: number;
46
+ /** Hour [0,24) that AWAKE starts. Default 6. */
47
+ awakeStart: number;
48
+ /** Hour [0,24) that DROWSY starts. Default 21. */
49
+ drowsyStart: number;
50
+ /** Hour [0,24) that SLEEP_NREM starts. Default 23. */
51
+ sleepNremStart: number;
52
+ /** Hour [0,24) that SLEEP_REM starts. Default 2 (wraps). */
53
+ sleepRemStart: number;
54
+ }
55
+ export declare const DEFAULT_BOUNDARIES: Readonly<PhaseBoundaries>;
56
+ export interface PhaseClassifyInput {
57
+ hourOfDay: number;
58
+ /** ms since most recent observed user activity (any kind). */
59
+ msSinceLastActivity?: number;
60
+ boundaries?: PhaseBoundaries;
61
+ secret?: string;
62
+ }
63
+ export interface PhaseReport {
64
+ v: typeof PROTOCOL_VERSION;
65
+ phase: Phase;
66
+ hourOfDay: number;
67
+ msSinceLastActivity: number | null;
68
+ /** True if recent activity overrode the time-of-day phase. */
69
+ activityOverride: boolean;
70
+ reason: string;
71
+ sig: string;
72
+ }
73
+ /**
74
+ * Classify a wall-clock moment into a circadian phase. Defensive at the
75
+ * boundary: malformed hourOfDay (NaN / negative / >=24) falls back to AWAKE.
76
+ *
77
+ * Priority:
78
+ * 1. recent activity within ACTIVITY_TRANSITION_WINDOW → WAKE_TRANSITION
79
+ * 2. otherwise, hour-of-day lookup
80
+ */
81
+ export declare function classifyPhase(input: PhaseClassifyInput): PhaseReport;
82
+ export declare function verifyPhaseReport(r: PhaseReport, secret?: string): boolean;
83
+ /**
84
+ * Each tool family declares its preferred phase(s). Phases the tool does
85
+ * NOT appear in → CIRCADIAN gates the fire (returns shouldFire=false).
86
+ *
87
+ * Wildcards: "*" matches any phase (always-active).
88
+ *
89
+ * Caller (daemon) can override per-deployment; this is the WORLD-CLASS
90
+ * default based on autonomic biology of each organ.
91
+ */
92
+ export declare const DEFAULT_PHASE_PREFERENCE: ReadonlyMap<string, readonly Phase[]>;
93
+ export interface GatingDecision {
94
+ v: typeof PROTOCOL_VERSION;
95
+ toolName: string;
96
+ currentPhase: Phase;
97
+ shouldFire: boolean;
98
+ matchedRule: string | null;
99
+ reason: string;
100
+ }
101
+ /**
102
+ * Pure decision: should this tool fire NOW given the current phase?
103
+ *
104
+ * Match strategy:
105
+ * 1. exact match (e.g., "mneme.synapse.prune")
106
+ * 2. family wildcard (e.g., "mneme.reflex.*")
107
+ * 3. action wildcard within family (e.g., "mneme.dreamspace.probe_*")
108
+ * 4. fallback → AWAKE-only (safe conservative default)
109
+ *
110
+ * Defensive: tools with empty toolName → shouldFire=false (never crashes).
111
+ */
112
+ export declare function decideGating(input: {
113
+ toolName: string;
114
+ currentPhase: Phase;
115
+ preferenceMap?: ReadonlyMap<string, readonly Phase[]>;
116
+ }): GatingDecision;
117
+ export declare function formatPhaseLine(r: PhaseReport): string;
118
+ export declare function formatGatingLine(d: GatingDecision): string;
119
+ export declare const CIRCADIAN_TUNABLES: Readonly<{
120
+ ACTIVITY_TRANSITION_WINDOW_MS: number;
121
+ DEFAULT_BOUNDARIES: Readonly<PhaseBoundaries>;
122
+ }>;
123
+ export {};
124
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/circadian/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAIH,QAAA,MAAM,gBAAgB,EAAG,CAAU,CAAC;AAGpC,MAAM,MAAM,KAAK,GAAG,iBAAiB,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,GAAG,WAAW,CAAC;AAExF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAM7C,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,cAAc,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,eAAe,CAMvD,CAAC;AAEH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,8DAA8D;IAC9D,gBAAgB,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAsBD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,WAAW,CA4DpE;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAG1E;AAID;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAsBzE,CAAC;AAEH,MAAM,WAAW,cAAc;IAC7B,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,KAAK,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,KAAK,CAAC;IACpB,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC;CACvD,GAAG,cAAc,CAyDjB;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAEtD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,CAG1D;AAED,eAAO,MAAM,kBAAkB;;;EAG7B,CAAC"}
@@ -0,0 +1,269 @@
1
+ /**
2
+ * v2.19.29 — MNEME CIRCADIAN PHASE CLASSIFIER (Phase B of SYNAPSE GENESIS)
3
+ *
4
+ * "Mneme เป็น organism ที่หลับและตื่นตามคุณ. 06:00 user เปิดเครื่อง →
5
+ * first command 0ms response (cache warm). 00:00 user หลับ →
6
+ * DREAMSPACE.probe + cartographer + synthesize + evolve."
7
+ * — user mandate, 2026-05-17
8
+ *
9
+ * Diagnosis: v2.19.28 AUTONOMIC SCHEDULER ticks all organs on the SAME
10
+ * clock 24/7. That wastes resources (DREAMSPACE probing at 14:00 when
11
+ * user is mid-keystroke) and misses optimal phases (REFLEX cache warming
12
+ * at 05:50 before user opens their laptop).
13
+ *
14
+ * CIRCADIAN classifies the current moment into one of 5 biological
15
+ * phases. Each organ subscribes to its preferred phase(s). SYNAPSE
16
+ * GENESIS uses this to GATE fires — a synapse only fires when its
17
+ * tool is "awake" in the current phase.
18
+ *
19
+ * 5 phases:
20
+ * 🌅 WAKE_TRANSITION 04:00-06:00 (pre-warm caches)
21
+ * 🌞 AWAKE 06:00-21:00 (active organs)
22
+ * 🌆 DROWSY 21:00-23:00 (taper, prep for sleep)
23
+ * 😴 SLEEP_NREM 23:00-02:00 (deep consolidation; PRUNE + decay)
24
+ * 🌙 SLEEP_REM 02:00-04:00 (DREAMSPACE creative cycle)
25
+ *
26
+ * Override: if recent user activity (< 5min ago) at ANY phase →
27
+ * forced to WAKE_TRANSITION (so sudden 03:00 commit still pre-warms).
28
+ *
29
+ * Composes onto:
30
+ * - v2.19.29 SYNAPSE GENESIS (phase gates synapse fires)
31
+ * - v2.19.28 AUTONOMIC SCHEDULER (phase tunes per-organ intervals)
32
+ * - v2.19.25 ENDOCRINE (phase couples to melatonin level)
33
+ *
34
+ * Honest scope:
35
+ * - PURE FUNCTION classifier + gating predicate.
36
+ * - Phase boundaries are CONFIG (caller can override per-user chronotype).
37
+ * - HMAC-signed PhaseReport so cross-device sync trusts the phase.
38
+ * - 24/7 always-safe: malformed hourOfDay (NaN / >23) falls back to AWAKE.
39
+ */
40
+ import { createHmac, timingSafeEqual } from "node:crypto";
41
+ const PROTOCOL_VERSION = 1;
42
+ const ACTIVITY_TRANSITION_WINDOW_MS = 5 * 60_000;
43
+ export const PHASE_EMOJI = {
44
+ WAKE_TRANSITION: "🌅",
45
+ AWAKE: "🌞",
46
+ DROWSY: "🌆",
47
+ SLEEP_NREM: "😴",
48
+ SLEEP_REM: "🌙",
49
+ };
50
+ export const DEFAULT_BOUNDARIES = Object.freeze({
51
+ wakeTransitionStart: 4,
52
+ awakeStart: 6,
53
+ drowsyStart: 21,
54
+ sleepNremStart: 23,
55
+ sleepRemStart: 2,
56
+ });
57
+ function canon(v) {
58
+ if (v === null || typeof v !== "object")
59
+ return JSON.stringify(v);
60
+ if (Array.isArray(v))
61
+ return "[" + v.map(canon).join(",") + "]";
62
+ const keys = Object.keys(v).sort();
63
+ return "{" + keys.map((k) => JSON.stringify(k) + ":" + canon(v[k])).join(",") + "}";
64
+ }
65
+ function defaultSecret() {
66
+ return process.env["MNEME_CIRCADIAN_SECRET"] || `mneme-circadian-v${PROTOCOL_VERSION}`;
67
+ }
68
+ function hmacHex(body, secret) {
69
+ return createHmac("sha256", secret).update(canon(body)).digest("hex");
70
+ }
71
+ function safeEqHex(a, b) {
72
+ try {
73
+ return timingSafeEqual(Buffer.from(a, "hex"), Buffer.from(b, "hex"));
74
+ }
75
+ catch {
76
+ return false;
77
+ }
78
+ }
79
+ /**
80
+ * Classify a wall-clock moment into a circadian phase. Defensive at the
81
+ * boundary: malformed hourOfDay (NaN / negative / >=24) falls back to AWAKE.
82
+ *
83
+ * Priority:
84
+ * 1. recent activity within ACTIVITY_TRANSITION_WINDOW → WAKE_TRANSITION
85
+ * 2. otherwise, hour-of-day lookup
86
+ */
87
+ export function classifyPhase(input) {
88
+ const sec = input.secret ?? defaultSecret();
89
+ const b = input.boundaries ?? DEFAULT_BOUNDARIES;
90
+ let hour = input.hourOfDay;
91
+ // Defensive: clamp to safe range; NaN/non-finite → AWAKE fallback.
92
+ if (!Number.isFinite(hour) || hour < 0 || hour >= 24) {
93
+ const body = {
94
+ v: PROTOCOL_VERSION,
95
+ phase: "AWAKE",
96
+ hourOfDay: Number.isFinite(hour) ? Math.max(0, Math.min(23, Math.floor(hour))) : 12,
97
+ msSinceLastActivity: input.msSinceLastActivity ?? null,
98
+ activityOverride: false,
99
+ reason: "malformed hourOfDay → AWAKE fallback (defensive default)",
100
+ };
101
+ return { ...body, sig: hmacHex(body, sec) };
102
+ }
103
+ hour = Math.floor(hour);
104
+ // Activity override: any user action in the last 5 minutes nudges us into
105
+ // WAKE_TRANSITION regardless of clock. Caches warm; daemon stays responsive.
106
+ if (typeof input.msSinceLastActivity === "number" && input.msSinceLastActivity >= 0 && input.msSinceLastActivity < ACTIVITY_TRANSITION_WINDOW_MS) {
107
+ const body = {
108
+ v: PROTOCOL_VERSION,
109
+ phase: "WAKE_TRANSITION",
110
+ hourOfDay: hour,
111
+ msSinceLastActivity: input.msSinceLastActivity,
112
+ activityOverride: true,
113
+ reason: `recent user activity ${Math.round(input.msSinceLastActivity / 1000)}s ago → forced WAKE_TRANSITION`,
114
+ };
115
+ return { ...body, sig: hmacHex(body, sec) };
116
+ }
117
+ // Time-of-day classifier. Boundaries can wrap midnight.
118
+ // We test in the order: REM (2-4) → WAKE (4-6) → AWAKE (6-21) → DROWSY (21-23) → NREM (23-2).
119
+ let phase;
120
+ let reason;
121
+ if (hour >= b.sleepRemStart && hour < b.wakeTransitionStart) {
122
+ phase = "SLEEP_REM";
123
+ reason = `hour ${hour} in [${b.sleepRemStart},${b.wakeTransitionStart}) → REM (DREAMSPACE creative cycle)`;
124
+ }
125
+ else if (hour >= b.wakeTransitionStart && hour < b.awakeStart) {
126
+ phase = "WAKE_TRANSITION";
127
+ reason = `hour ${hour} in [${b.wakeTransitionStart},${b.awakeStart}) → WAKE_TRANSITION (cache pre-warm)`;
128
+ }
129
+ else if (hour >= b.awakeStart && hour < b.drowsyStart) {
130
+ phase = "AWAKE";
131
+ reason = `hour ${hour} in [${b.awakeStart},${b.drowsyStart}) → AWAKE (active organs)`;
132
+ }
133
+ else if (hour >= b.drowsyStart && hour < b.sleepNremStart) {
134
+ phase = "DROWSY";
135
+ reason = `hour ${hour} in [${b.drowsyStart},${b.sleepNremStart}) → DROWSY (taper)`;
136
+ }
137
+ else {
138
+ // NREM wraps midnight: hour >= 23 OR hour < 2.
139
+ phase = "SLEEP_NREM";
140
+ reason = `hour ${hour} in [${b.sleepNremStart},${b.sleepRemStart}) wrapping midnight → NREM (deep consolidation + PRUNE)`;
141
+ }
142
+ const body = {
143
+ v: PROTOCOL_VERSION,
144
+ phase,
145
+ hourOfDay: hour,
146
+ msSinceLastActivity: input.msSinceLastActivity ?? null,
147
+ activityOverride: false,
148
+ reason,
149
+ };
150
+ return { ...body, sig: hmacHex(body, sec) };
151
+ }
152
+ export function verifyPhaseReport(r, secret) {
153
+ const { sig, ...body } = r;
154
+ return safeEqHex(hmacHex(body, secret ?? defaultSecret()), sig);
155
+ }
156
+ // ─── per-tool phase preference map ──────────────────────────────────
157
+ /**
158
+ * Each tool family declares its preferred phase(s). Phases the tool does
159
+ * NOT appear in → CIRCADIAN gates the fire (returns shouldFire=false).
160
+ *
161
+ * Wildcards: "*" matches any phase (always-active).
162
+ *
163
+ * Caller (daemon) can override per-deployment; this is the WORLD-CLASS
164
+ * default based on autonomic biology of each organ.
165
+ */
166
+ export const DEFAULT_PHASE_PREFERENCE = new Map([
167
+ // BREATH always alive (autonomic, heart-like)
168
+ ["mneme.breath.*", ["AWAKE", "WAKE_TRANSITION", "DROWSY", "SLEEP_NREM", "SLEEP_REM"]],
169
+ // REFLEX warm during active phases + pre-wake
170
+ ["mneme.reflex.*", ["AWAKE", "WAKE_TRANSITION", "DROWSY"]],
171
+ // Bug prophet + audit only during awake (cognitive load)
172
+ ["mneme.bug_prophet.*", ["AWAKE"]],
173
+ ["mneme.forensics.*", ["AWAKE"]],
174
+ ["mneme.apoptosis.*", ["AWAKE"]],
175
+ // Sleep training + DREAMSPACE consolidation only during sleep
176
+ ["mneme.sleep.*", ["SLEEP_NREM", "SLEEP_REM"]],
177
+ ["mneme.dreamspace.*", ["SLEEP_REM"]],
178
+ ["mneme.hippocampus.*", ["SLEEP_NREM", "SLEEP_REM"]],
179
+ // Hormonal slow signals — best around phase transitions
180
+ ["mneme.hormonal.*", ["DROWSY", "WAKE_TRANSITION", "AWAKE"]],
181
+ ["mneme.endocrine.*", ["DROWSY", "WAKE_TRANSITION", "AWAKE"]],
182
+ // SYNAPSE prune during deep sleep only (cleanup phase)
183
+ ["mneme.synapse.prune", ["SLEEP_NREM"]],
184
+ // PROBE + CARTOGRAPHER ideal during REM (low-cost experimentation)
185
+ ["mneme.dreamspace.probe_*", ["SLEEP_REM"]],
186
+ ["mneme.dreamspace.map_*", ["SLEEP_REM", "WAKE_TRANSITION"]],
187
+ // Default fall-through: AWAKE only (safe conservative default)
188
+ ]);
189
+ /**
190
+ * Pure decision: should this tool fire NOW given the current phase?
191
+ *
192
+ * Match strategy:
193
+ * 1. exact match (e.g., "mneme.synapse.prune")
194
+ * 2. family wildcard (e.g., "mneme.reflex.*")
195
+ * 3. action wildcard within family (e.g., "mneme.dreamspace.probe_*")
196
+ * 4. fallback → AWAKE-only (safe conservative default)
197
+ *
198
+ * Defensive: tools with empty toolName → shouldFire=false (never crashes).
199
+ */
200
+ export function decideGating(input) {
201
+ const map = input.preferenceMap ?? DEFAULT_PHASE_PREFERENCE;
202
+ if (!input.toolName || typeof input.toolName !== "string") {
203
+ return {
204
+ v: PROTOCOL_VERSION,
205
+ toolName: input.toolName ?? "",
206
+ currentPhase: input.currentPhase,
207
+ shouldFire: false,
208
+ matchedRule: null,
209
+ reason: "empty toolName → no fire (defensive)",
210
+ };
211
+ }
212
+ // 1. exact match
213
+ if (map.has(input.toolName)) {
214
+ const phases = map.get(input.toolName);
215
+ const ok = phases.includes(input.currentPhase);
216
+ return {
217
+ v: PROTOCOL_VERSION,
218
+ toolName: input.toolName,
219
+ currentPhase: input.currentPhase,
220
+ shouldFire: ok,
221
+ matchedRule: input.toolName,
222
+ reason: `exact match ${input.toolName}; allowed=${phases.join(",")} ${ok ? "✓" : "✗"}`,
223
+ };
224
+ }
225
+ // 2. wildcard scan (action-suffix wildcard first, then family wildcard)
226
+ const parts = input.toolName.split(".");
227
+ if (parts.length === 3) {
228
+ // try "mneme.<family>.<actionPrefix>_*"
229
+ const familyPrefix = `${parts[0]}.${parts[1]}.`;
230
+ for (const [rule, phases] of map) {
231
+ if (rule.startsWith(familyPrefix) && rule.endsWith("*")) {
232
+ const ruleAction = rule.slice(familyPrefix.length, -1); // strip prefix + trailing *
233
+ if (ruleAction === "" || parts[2].startsWith(ruleAction)) {
234
+ const ok = phases.includes(input.currentPhase);
235
+ return {
236
+ v: PROTOCOL_VERSION,
237
+ toolName: input.toolName,
238
+ currentPhase: input.currentPhase,
239
+ shouldFire: ok,
240
+ matchedRule: rule,
241
+ reason: `wildcard ${rule}; allowed=${phases.join(",")} ${ok ? "✓" : "✗"}`,
242
+ };
243
+ }
244
+ }
245
+ }
246
+ }
247
+ // 4. fallback — AWAKE only
248
+ const fallbackOk = input.currentPhase === "AWAKE";
249
+ return {
250
+ v: PROTOCOL_VERSION,
251
+ toolName: input.toolName,
252
+ currentPhase: input.currentPhase,
253
+ shouldFire: fallbackOk,
254
+ matchedRule: null,
255
+ reason: `no rule matched; fallback AWAKE-only ${fallbackOk ? "✓" : "✗"}`,
256
+ };
257
+ }
258
+ export function formatPhaseLine(r) {
259
+ return `${PHASE_EMOJI[r.phase]} CIRCADIAN · ${r.phase} · hour=${r.hourOfDay}${r.activityOverride ? " (activity override)" : ""}`;
260
+ }
261
+ export function formatGatingLine(d) {
262
+ const tag = d.shouldFire ? "✓" : "✗";
263
+ return `${tag} GATE · ${d.toolName} in ${d.currentPhase} → ${d.shouldFire ? "fire" : "wait"} (${d.matchedRule ?? "fallback"})`;
264
+ }
265
+ export const CIRCADIAN_TUNABLES = Object.freeze({
266
+ ACTIVITY_TRANSITION_WINDOW_MS,
267
+ DEFAULT_BOUNDARIES,
268
+ });
269
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/circadian/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=aurelian_v1929.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aurelian_v1929.test.d.ts","sourceRoot":"","sources":["../../src/cosmic/aurelian_v1929.test.ts"],"names":[],"mappings":""}